PCIe掃盲 TLP Header詳解(三)

2021-09-24 21:51:45 字數 1510 閱讀 5672

completions

completions的tlp header的格式如下圖所示:

這裡來解釋一下completion status codes

·        000b (sc) successful completion:表示請求(request)被正確的處理;

·        001b (ur) unsupported request:表示請求是非法的或者不能被completer所識別的。在pcie v1.1以及之後的版本將這作為advisory non-fatal error;

·        010b (crs) configuration request retry status:completer暫時不能響應的配置請求,需要requester稍後再次嘗試;

·        100b (ca) completer abort:completer可以響應該請求,但是卻發生了其他的錯誤,該錯誤是uncorrectable error。

關於cpld,需要注意的是:

·        前面的文章中多次提到,乙個讀請求可能會對應多個cpld(因為4kb的位址邊界問題,以及rcb的限制),但是返回的總的資料量應當與請求的資料量保持一致,否則可能會出現completion timeout的錯誤;

·        乙個completion只能對應於乙個request;

·        io和configuration讀請求由於一直都是1dw,因此其一直都只對應乙個completion;

·        當completion中的狀態碼(status codes)為sc(successful)之外的狀態,則一次傳輸(事務,transaction)被終止;

·        在處理乙個請求多個cpld時,應當注意read completion boundary(rcb),rcb的值可以是64bytes或者128bytes;

·        bridge和endpoint應設計為rcb的大小是可以通過軟體修改或控制的;

·        在處理乙個請求多個cpld時,應注意先傳送的時低位址的資料,後傳送高位址資料。

requester接受到completion的處理規則:

·        如果requester接收到的completion與自己之前傳送的request不一致,則會報錯;

·        當completion中的狀態碼不是sc或者crs的話,則會報錯,並且相關的buff都會被清空;

·        當任何非配置請求的completion中的狀態碼為crs時,都會被認為是非法的,並被認為是malformed tlp;

PCIe掃盲 TLP Header詳解(一)

事務層包 tlp 的一般格式如下圖所示 前面的文章介紹過,tlp header為3dw或者4dw,data payload為1 1024dw,最後的tlp digest ecrc 是可選的,為1dw。tlp header在整個tlp的位置如下圖所示,需要注意的是,tlp header的格式和內容都會...

PCIe掃盲 PCIe錯誤源詳解(一)

這篇文章來詳細地分析一下各種錯誤源的產生原理,由於內容較多,因此分為兩篇文章。第一篇介紹一下ecrc校檢錯誤和data poisoning等 第二篇文章介紹事務 transaction 錯誤 鏈路流量控制 link flow control 相關的錯誤 異常的tlp malformed tlp 以及...

PCIe掃盲 PCIe匯流排體系結構入門

和很多的序列傳輸協議一樣,乙個完整的pcie體系結構包括應用層 事務層 transaction layer 資料鏈路層 data link layer 和物理層 physical layer 其中,應用層並不是pcie spec所規定的內容,完全由使用者根據自己的需求進行設計,另外三層都是pcie ...