?
PRP控制模塊負責實現(xiàn)指令相關(guān)的PRP列表的生成、存儲與管理。NVMe的提交命令中,存在PRP1和PRP2兩個字段,PPR2作為地址指針還是PRP列表指針是根據(jù)命令請求數(shù)據(jù)傳輸長度和PRP1的偏移量來確定的。當PRP2作為PRP列表指針時,PRP2指向PRP列表的首地址。在傳統(tǒng)的NVMe系統(tǒng)中,PRP列表存放的位置一般與數(shù)據(jù)存放位置接近,因此在處理指令過程中,讀取PRP經(jīng)歷的延時與讀取數(shù)據(jù)的延時相近,為了降低讀取PRP的延時,使用PRP控制模塊將PRP的存儲位置轉(zhuǎn)移到NoP邏輯加速引擎內(nèi)部。PRP控制模塊的結(jié)構(gòu)和連接關(guān)系如圖1所示。
圖1 PRP控制模塊結(jié)構(gòu)和連接關(guān)系圖
當用戶想要進行大塊數(shù)據(jù)傳輸時,需要使用PRP提供數(shù)據(jù)的分布地址,為了降低PRP尋址的延時和復(fù)雜度,使用PRP控制模塊替代原本的PRP機制。需要傳輸大塊零散分布數(shù)據(jù)時,可以減小DMA請求長度,不使用PRP鏈表,將PRP鏈表條目字節(jié)轉(zhuǎn)換為DMA請求地址。需要傳輸大塊連續(xù)數(shù)據(jù)時,只需要PRP鏈表將由PRP控制模塊根據(jù)請求地址自動生成。指令控制模塊接收到相關(guān)指令時,根據(jù)PRP1和傳輸長度判斷PRP2類型,如果PRP2類型為PRP鏈表指針,則以指令I(lǐng)D為地址,將PRP1的4KB偏移寫入PRP MEM,PRP2則包含指令I(lǐng)D并指向PRP控制模塊。當PCIe加速模塊收到指向PRP控制模塊的讀數(shù)據(jù)請求時,判斷為讀PRP請求,PRP控制模塊根據(jù)讀地址取出對應(yīng)的存儲條目返回,然后將該數(shù)據(jù)進行偏移4KB地址計算后重新寫入PRP MEM。PRP MEM的大小與指令I(lǐng)D池的深度一致,每個指令I(lǐng)D指向一個64比特的PRP MEM存儲條目。
?審核編輯 黃宇
-
PCIe
+關(guān)注
關(guān)注
16文章
1404瀏覽量
86959 -
nvme
+關(guān)注
關(guān)注
0文章
283瀏覽量
23564
發(fā)布評論請先 登錄
NVMe高速傳輸之擺脫XDMA設(shè)計30: NVMe 設(shè)備模型設(shè)計
NVMe高速傳輸之擺脫XDMA設(shè)計20: PCIe應(yīng)答模塊設(shè)計

NVMe高速傳輸之擺脫XDMA設(shè)計20: PCIe應(yīng)答模塊設(shè)計
NVMe高速傳輸之擺脫XDMA設(shè)計17:PCIe加速模塊設(shè)計

NVMe高速傳輸之擺脫XDMA設(shè)計16:TLP讀處理優(yōu)化

NVMe高速傳輸之擺脫XDMA設(shè)計17:PCIe加速模塊設(shè)計
NVMe高速傳輸之擺脫XDMA設(shè)計16:TLP優(yōu)化
NVMe高速傳輸之擺脫XDMA設(shè)計14: PCIe應(yīng)答模塊設(shè)計

NVMe高速傳輸之擺脫XDMA設(shè)計14: PCIe應(yīng)答模塊設(shè)計
NVMe IP高速傳輸卻不依賴XDMA設(shè)計之九:隊列管理模塊(上)

NVMe高速傳輸之擺脫XDMA設(shè)計之12:PCIe請求模塊設(shè)計(上)
NVMe高速傳輸之擺脫XDMA設(shè)計18:UVM驗證平臺
NVMe高速傳輸之擺脫XDMA設(shè)計九:隊列管理模塊設(shè)計(上)
NVMe IP高速傳輸卻不依賴XDMA設(shè)計之八:系統(tǒng)初始化

評論