在介紹事務(wù)層之前,首先簡單地了解一下PCIe總線的通信機(jī)制。假設(shè)某個設(shè)備要對另一個設(shè)備進(jìn)行讀取數(shù)據(jù)的操作,首先這個設(shè)備(稱之為Requester)需要向另一個設(shè)備發(fā)送一個Request,然后另一個設(shè)備(稱之為Completer)通過Completion Packet返回數(shù)據(jù)或者錯誤信息。在PCIe Spec中,規(guī)定了四種類型的請求(Request):Memory、IO、Configuration和Messages。其中,前三種都是從PCI/PCI-X總線中繼承過來的,第四種Messages是PCIe新增加的類型。
詳細(xì)的信息如下表所示:
從表中我們可以發(fā)現(xiàn),只有Memory Write和Message是Posted類型的,其他的都是Non-Posted類型的。所謂Non-posted,就是Requester發(fā)送了一個包含Request的包之后,必須要得到一個包含Completion的包的應(yīng)答,這次傳輸才算結(jié)束,否則會進(jìn)行等待。所謂Posted,就是Requester的請求并不需要Completer通過發(fā)送包含Completion的包進(jìn)行應(yīng)答,當(dāng)然也就不需要進(jìn)行等待了。很顯然,Posted類型的操作對總線的利用率(效率)要遠(yuǎn)高于Non-Posted型。
那么為什么要分為Non-Posted和Posted兩種類型呢?對于Memory Writes來說,對效率要求較高,因此采用了Posted的方式。但是這并不意味著Posted類型的操作不需要Completer進(jìn)行應(yīng)答,只是此時Completer采用了另一種應(yīng)答機(jī)制——Ack/Nak的機(jī)制。
PCIe的TLP包共有一下幾種類型:
TLP傳輸?shù)氖疽鈭D如下圖所示:
TLP在整個PCIe包結(jié)構(gòu)的位置如以下兩張圖所示:(第一張為發(fā)送端,第二張為接收端)
其中,TLP包的結(jié)構(gòu)圖如下圖所示:
圖中的TLP Digest即ECRC(End-to-End CRC),是可選項。此外,TLP的長度(包括其中的Header、Data和ECRC)是以DW(雙字,即四個字節(jié))為單位的。
-
總線
+關(guān)注
關(guān)注
10文章
2947瀏覽量
89338 -
PCIe
+關(guān)注
關(guān)注
16文章
1322瀏覽量
84667
原文標(biāo)題:【博文連載】PCIe掃盲——PCIe總線事務(wù)層入門(一)
文章出處:【微信號:ChinaAET,微信公眾號:電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
基于FPGA的PCIE總線擴(kuò)展卡的設(shè)計


如何利用PCIe DMA總線實現(xiàn)一個基于FPGA的PCIe 8位數(shù)據(jù)采集卡?
采用Flow Control機(jī)制的PCIe總線

Flow Control機(jī)制可以顯著地提高總線的傳輸效率

PCIe掃盲—PCIe錯誤檢測機(jī)制的詳細(xì)資料概述
PCIe總線的熱插拔機(jī)制
PCIe 9110IM PCIe總線轉(zhuǎn)CAN設(shè)備手冊

PCIe熱插拔機(jī)制介紹

評論