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


如何利用PCIe DMA總線實(shí)現(xiàn)一個(gè)基于FPGA的PCIe 8位數(shù)據(jù)采集卡?
can總線的可靠通信是依靠什么機(jī)制來(lái)實(shí)現(xiàn)的?
采用Flow Control機(jī)制的PCIe總線

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

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

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

評(píng)論