PCIe掃盲 PCIe匯流排事務層入門(一)

2021-09-24 19:57:22 字數 1364 閱讀 1261

在介紹事務層之前,首先簡單地了解一下pcie匯流排的通訊機制。假設某個裝置要對另乙個裝置進行讀取資料的操作,首先這個裝置(稱之為requester)需要向另乙個裝置傳送乙個request,然後另乙個裝置(稱之為completer)通過completion packet返回資料或者錯誤資訊。在pcie spec中,規定了四種型別的請求(request):memory、io、configuration和messages。其中,前三種都是從pci/pci-x匯流排中繼承過來的,第四種messages是pcie新增加的型別。詳細的資訊如下表所示:

從表中我們可以發現,只有memory write和message是posted型別的,其他的都是non-posted型別的。所謂non-posted,就是requester傳送了乙個包含request的包之後,必須要得到乙個包含completion的包的應答,這次傳輸才算結束,否則會進行等待。所謂posted,就是requester的請求並不需要completer通過傳送包含completion的包進行應答,當然也就不需要進行等待了。很顯然,posted型別的操作對匯流排的利用率(效率)要遠高於non-posted型。

那麼為什麼要分為non-posted和posted兩種型別呢?對於memory writes來說,對效率要求較高,因此採用了posted的方式。但是這並不意味著posted型別的操作完全不需要completer進行應答,completer仍然可採用另一種應答機制——ack/nak的機制(在資料鏈路層實現的)。

pcie的tlp包共有一下幾種型別:

tlp傳輸的示意圖如下圖所示:

tlp在整個pcie包結構的位置如以下兩張圖所示:(第一張為傳送端,第二張為接收端)

其中,tlp包的結構圖如下圖所示:

圖中的tlp digest即ecrc(end-to-end crc),是可選項。此外,tlp的長度(包括其中的header、data和ecrc)是以dw(雙字,即四個位元組)為單位的。

PCIe掃盲 PCIe匯流排事務層入門(二)

前面的文章介紹了tlp的幾種型別以及tlp的包結構。這篇文章來詳細地聊一聊non posted transaction 包括ordinary read locked read和io configuration writes 與posted writes 包括memory writes和message...

PCIe匯流排事務層

在介紹事務層之前,首先簡單地了解一下pcie匯流排的通訊機制。假設某個裝置要對另乙個裝置進行讀取資料的操作,首先這個裝置 稱之為requester 需要向另乙個裝置傳送乙個request,然後另乙個裝置 稱之為completer 通過completion packet返回資料或者錯誤資訊。在pcie...

PCIe掃盲 PCIe匯流排體系結構入門

和很多的序列傳輸協議一樣,乙個完整的pcie體系結構包括應用層 事務層 transaction layer 資料鏈路層 data link layer 和物理層 physical layer 其中,應用層並不是pcie spec所規定的內容,完全由使用者根據自己的需求進行設計,另外三層都是pcie ...