事務定義爲請求者和完成者之間完成一次信息傳送需要完成的一系列或多個數據包傳送的過程。
PCIE 事務可以分爲4大類:存儲器事務、IO事務、配置事務、消息事務。這些事務可以分成非報告事務(non-posted transaction)和報告事務(posted transaction)。
非報告事務:存儲器讀、存儲器讀鎖定、IO讀、IO寫、配置讀、配置寫。
報告事務:存儲器寫、消息。
對於非報告事務,請求者發送一個 TLP 請求數據包給完成者。稍後,完成者返回一個 TLP 完成數據包給請求者。非報告事務被作爲分離事務處理。完成 TLP 的作用是向請求者確認完成者已經收到請求 TLP。非報告讀事務會將數據包含在完成 TLP 中,非報告寫事務會將數據包含在寫請求 TLP 中。
對於報告事務,請求者發送一個 TLP 請求數據包給完成者,但完成者不返回 TLP 完成數據包給請求者。爲了在完成事務中獲得最佳性能,以請求者不知道完成者是否成功接收請求爲代價來優化報告事務。報告事務在請求 TLP 中可以不包含也可以包含數據。
TLP 數據包類型 |
縮寫名 |
存儲器讀請求 |
Mrd |
存儲器讀請求--鎖定訪問 |
MRdLk |
存儲器寫請求 |
MWr |
IO讀 |
IORd |
IO寫 |
IOWr |
配置讀(類型0或類型1) |
CfgRd0、CfgRd1 |
配置寫(類型0或類型1) |
CfgWr0、CfgWr1 |
沒有數據的消息請求 |
Msg |
帶數據的消息請求 |
MsgD |
沒有數據的完成 |
Cpl |
帶數據的完成 |
CplD |
沒有數據的完成--與鎖定的存儲器讀請求有關 |
CplLk |
帶數據的完成--與鎖定的存儲器讀請求有關 |
CplDLk |
非報告讀事務
請求者發送一個非報告讀請求 TLP 給它打算讀取其數據的完成者。當完成者接收該請求數據包並解碼其內容時,它從目標地址收集請求中指定量的數據。完成者創建一個或多個帶數據的完成 TLP (CplD),並將其會送給請求者。完成者可以在每個 CplD 數據包返回最多 4KB的數據。
鎖定請求的非報告讀事務
請求者發送一個鎖定的存儲器讀請求 TLP (MRdLk)。請求者只能是根聯合體,它代表 CPU 發送一個鎖定請求。不允許端點發起鎖定請求。
在請求者發送解除鎖定消息給完成者之前,從請求者到完成者的路徑繼續保持鎖定。解除鎖定指對消息通過的路徑及交換器的入端口/出端口解除鎖定。
非報告寫事務
報告存儲器寫事務
報告消息事務
對消息請求的支持可以去除 PCIe 系統對邊帶信號的需求。可以用於 PCI 風格的傳統中斷信號、電源管理協議、錯誤信令、解除 PCIe 結構中鎖定的路徑、插槽電源支持、熱插拔協議以及廠商定義的各種目的。