PCIe的事務層連接了PCIe設備核心與PCIe鏈路,這里主要基于PCIe事務層進行分析。事務層采用TLP傳輸事務,完整的TLP由TLPPrefix、TLP頭、Payload和TLP Digest組成。TLP頭是TLP中最關鍵的部分,一般由三個或四個雙字的長度,其格式定義如表1所示。
表1 PCIeTLP報文頭格式
常用的PCIeTLP事務類型如表2所示。其中Non-Posted類型的事務請求需要 使用完成報文(CompletionPacket,Cpl)或帶數據的完成報文(CompletionPacketwith Data,CplD)類型的響應包返回請求狀態或數據,Posted類型的事務請求不需要使用 完成報文。 PCIe總線協議定義了基于地址的路由、基于ID的路由和隱式路由三種TLP路由 方式。其中,存儲器讀寫和I/O讀寫TLP采用基于地址的路由,該類型的報文可由 RC 或EP發出,根據TLP中的Address字段進行路由選徑。配置讀寫報文、Cpl和 CplD 完成報文使用基于ID的路由,配置讀寫報文只能由RC發出,而完成報文可由 任何設備發出,這些報文根據TransactionID進行路由選徑,TransactionID則由PCIe 總線號、設備號、功能號和Tag字段構成。消息報文使用隱式路由,一般由RC發出 EP 響應,該類型報文的路由直接由下游端口到上游端口,或為RC向EP發出的廣播。
表2 PCIeTLP事務類型