PCIe總線事務層

在介紹事務層之前,首先簡單地瞭解一下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(雙字,即四個字節)爲單位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章