上電:
主機裝置上電,BIOS透過掃描下游裝置的BAR,為其註冊響應的空間,當需要對這些空間進行操作的時候,就會轉換成TLP包的形式進行訪問,當然直接和PCIE裝置互動的還是RC;
其中BAR的低位(具體情況具體分析)作為定址其的地址;
簡單DMA讀步驟(PCIE裝置發起讀):
1.下游裝置發起請求;
2.CPU把資料寫到指定位置,併傳送TLP通知RC讓PCIE裝置讀取;
3.透過路由PCIE接到這部分通知,發起MRD給RC,RC收取MRD把指定位置的資料打包成CPLD;
4.PCIE裝置收到路由後的CPLD;
TLP包
TLP包的組幀格式複雜,主要參考:hapter 5 TLP Element //TLP 元素
但簡而簡之,TLP包是可劃分為諸多型別的,其中又分為兩大類:報告和非報告:2.2.2 事務層(Transaction Layer)
報告和非報告標誌了操作需不需要返回完成包這個事件;
路由:
Programmed I/O Transaction
TLP包是怎麼從傳送到接收的,需要參考路由部分內容;Chapter 4 Address Space & Transaction Routing//地址空間與事務路由
也可以參考:http://www.ssdfans.com/?p=8216
不同的TLP包有不同的路由方式,其中:
DMA Transaction