PCIE學習筆記--TLP Header詳解(三)


目錄篇地址為:http://blog.chinaaet.com/justlxy/p/5100053481

 

Completions

Completions的TLP Header的格式如下圖所示:

blob.png

blob.png

blob.png

這里來解釋一下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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM