?
PRP控制模塊負(fù)責(zé)實(shí)現(xiàn)指令相關(guān)的PRP列表的生成、存儲(chǔ)與管理。NVMe的提交命令中,存在PRP1和PRP2兩個(gè)字段,PPR2作為地址指針還是PRP列表指針是根據(jù)命令請(qǐng)求數(shù)據(jù)傳輸長(zhǎng)度和PRP1的偏移量來(lái)確定的。當(dāng)PRP2作為PRP列表指針時(shí),PRP2指向PRP列表的首地址。在傳統(tǒng)的NVMe系統(tǒng)中,PRP列表存放的位置一般與數(shù)據(jù)存放位置接近,因此在處理指令過(guò)程中,讀取PRP經(jīng)歷的延時(shí)與讀取數(shù)據(jù)的延時(shí)相近,為了降低讀取PRP的延時(shí),使用PRP控制模塊將PRP的存儲(chǔ)位置轉(zhuǎn)移到NoP邏輯加速引擎內(nèi)部。PRP控制模塊的結(jié)構(gòu)和連接關(guān)系如圖1所示。


圖1 PRP控制模塊結(jié)構(gòu)和連接關(guān)系圖
當(dāng)用戶想要進(jìn)行大塊數(shù)據(jù)傳輸時(shí),需要使用PRP提供數(shù)據(jù)的分布地址,為了降低PRP尋址的延時(shí)和復(fù)雜度,使用PRP控制模塊替代原本的PRP機(jī)制。需要傳輸大塊零散分布數(shù)據(jù)時(shí),可以減小DMA請(qǐng)求長(zhǎng)度,不使用PRP鏈表,將PRP鏈表?xiàng)l目字節(jié)轉(zhuǎn)換為DMA請(qǐng)求地址。需要傳輸大塊連續(xù)數(shù)據(jù)時(shí),只需要PRP鏈表將由PRP控制模塊根據(jù)請(qǐng)求地址自動(dòng)生成。指令控制模塊接收到相關(guān)指令時(shí),根據(jù)PRP1和傳輸長(zhǎng)度判斷PRP2類型,如果PRP2類型為PRP鏈表指針,則以指令I(lǐng)D為地址,將PRP1的4KB偏移寫(xiě)入PRP MEM,PRP2則包含指令I(lǐng)D并指向PRP控制模塊。當(dāng)PCIe加速模塊收到指向PRP控制模塊的讀數(shù)據(jù)請(qǐng)求時(shí),判斷為讀PRP請(qǐng)求,PRP控制模塊根據(jù)讀地址取出對(duì)應(yīng)的存儲(chǔ)條目返回,然后將該數(shù)據(jù)進(jìn)行偏移4KB地址計(jì)算后重新寫(xiě)入PRP MEM。PRP MEM的大小與指令I(lǐng)D池的深度一致,每個(gè)指令I(lǐng)D指向一個(gè)64比特的PRP MEM存儲(chǔ)條目。
?審核編輯 黃宇
-
PCIe
+關(guān)注
關(guān)注
16文章
1461瀏覽量
88428 -
nvme
+關(guān)注
關(guān)注
0文章
299瀏覽量
23842
發(fā)布評(píng)論請(qǐng)先 登錄
NVMe高速傳輸之擺脫XDMA設(shè)計(jì)44:工程設(shè)計(jì)考量?
NVMe高速傳輸之擺脫XDMA設(shè)計(jì)43:如何上板驗(yàn)證?
NVMe高速傳輸之擺脫XDMA設(shè)計(jì)30: NVMe 設(shè)備模型設(shè)計(jì)
NVMe高速傳輸之擺脫XDMA設(shè)計(jì)20: PCIe應(yīng)答模塊設(shè)計(jì)
NVMe高速傳輸之擺脫XDMA設(shè)計(jì)20: PCIe應(yīng)答模塊設(shè)計(jì)
NVMe高速傳輸之擺脫XDMA設(shè)計(jì)17:PCIe加速模塊設(shè)計(jì)
NVMe高速傳輸之擺脫XDMA設(shè)計(jì)16:TLP讀處理優(yōu)化
NVMe高速傳輸之擺脫XDMA設(shè)計(jì)17:PCIe加速模塊設(shè)計(jì)
NVMe高速傳輸之擺脫XDMA設(shè)計(jì)16:TLP優(yōu)化
NVMe高速傳輸之擺脫XDMA設(shè)計(jì)14: PCIe應(yīng)答模塊設(shè)計(jì)
NVMe高速傳輸之擺脫XDMA設(shè)計(jì)14: PCIe應(yīng)答模塊設(shè)計(jì)
NVMe IP高速傳輸卻不依賴XDMA設(shè)計(jì)之九:隊(duì)列管理模塊(上)
NVMe高速傳輸之擺脫XDMA設(shè)計(jì)九:隊(duì)列管理模塊設(shè)計(jì)(上)
NVMe IP高速傳輸卻不依賴XDMA設(shè)計(jì)之八:系統(tǒng)初始化
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)之11:PRP控制模塊設(shè)計(jì)
評(píng)論