在介紹事務(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文章
2878瀏覽量
88051 -
PCIe
+關(guān)注
關(guān)注
15文章
1234瀏覽量
82578
原文標(biāo)題:【博文連載】PCIe掃盲——PCIe總線事務(wù)層入門(一)
文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論