在介紹事務層之前,首先簡單地了解一下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(雙字,即四個字節)為單位的。
-
總線
+關注
關注
10文章
2878瀏覽量
88052 -
PCIe
+關注
關注
15文章
1234瀏覽量
82586
原文標題:【博文連載】PCIe掃盲——PCIe總線事務層入門(一)
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論