?
續(xù)上,隊列管理模塊采用隊列的存儲與控制分離的設(shè)計結(jié)構(gòu),如圖1所示為隊列管理模塊的結(jié)構(gòu)框圖。
?
圖1 隊列管理結(jié)構(gòu)
由于提交隊列管理單元使用表單管理隊列信息,所以使隊列具有了可動態(tài)配置的屬性,通過修改表單的信息便可以修改隊列數(shù)量和深度。在實際應(yīng)用中,當(dāng)出現(xiàn)大量隨機數(shù)據(jù)讀寫請求時,可以通過修改表單增加隊列數(shù)量和深度,增強隨機讀寫性能;在順序讀寫數(shù)據(jù)時,可以清除表單減少隊列數(shù)量和深度,降低資源占用和功耗。
對于完成隊列,設(shè)置一個完成隊列管理單元、一個完成條目解析單元和一塊異常完成條目緩存。完成管理單元中同樣包含了完成隊列表單,與提交隊列表單不同的是完成隊列表單中只包含了門鈴地址、隊列深度和門鈴頭、尾指針,并且只設(shè)置了一個admin完成隊列和一個I/O完成隊列。
這樣的結(jié)構(gòu)設(shè)計基于兩個方面的考量:首先,當(dāng)完成條目狀態(tài)為正常完成時,只需將完成條目中的指令I(lǐng)D釋放到ID池,將對應(yīng)提交隊列ID的門鈴頭指針更新到提交隊列條目,當(dāng)完成條目狀態(tài)為異常時,將其寫入異常完成條目緩存等待處理,這些過程由完成條目解析單元在短時間內(nèi)并行處理,不會出現(xiàn)完成隊列寫請求的阻塞,因此不需要設(shè)置多個I/O完成隊列和完成條目的存儲空間。其次,由于ID池的存在,所有的NVMe指令都具有一個唯一的ID,完成條目中的提交隊列ID不再作為指令的標(biāo)識,因此僅使用一個I/O完成隊列對應(yīng)多個I/O提交隊列是可行的,并且異常的I/O完成條目和異常的admin完成條目存放在同一個緩存中也不會影響ID的辨識作用。
在有新的提交條目寫入提交隊列和新的完成隊列寫請求時,提交隊列管理單元和完成隊列管理單元向?qū)?yīng)的隊列發(fā)起門鈴寫請求,這些請求經(jīng)過Round Robin仲裁器的仲裁后被發(fā)送給SSD。實際上,隨著仲裁輸入數(shù)量的增加,仲裁的效率和時序也會變差[[i]]。假設(shè)采用完成隊列和提交隊列一一對應(yīng)的結(jié)構(gòu),仲裁的輸入數(shù)量將是提交隊列數(shù)量的2倍,要保證仲裁效率和良好的時序,只能降低提交隊列數(shù)量,導(dǎo)致性能下降。而完成隊列管理單元所實現(xiàn)的結(jié)構(gòu)只占用兩個仲裁請求輸入,基于此可以增加更多的I/O提交隊列,充分發(fā)揮SSD性能。
B站已給出相關(guān)性能的視頻,如想進一步了解,請搜索B站用戶:專注與守望
鏈接:https://space.bilibili.com/585132944/dynamic?spm_id_from=333.1365.list.card_title.click
?
審核編輯 黃宇
-
nvme
+關(guān)注
關(guān)注
0文章
283瀏覽量
23564
發(fā)布評論請先 登錄
NVMe高速傳輸之擺脫XDMA設(shè)計37:隊列管理功能驗證與分析1
NVMe IP高速傳輸卻不依賴XDMA設(shè)計之九:隊列管理模塊(上)

NVMe高速傳輸之擺脫XDMA設(shè)計十:隊列管理模塊設(shè)計(下)
NVMe高速傳輸之擺脫XDMA設(shè)計九:隊列管理模塊設(shè)計(上)
NVMe IP高速傳輸卻不依賴XDMA設(shè)計之八:系統(tǒng)初始化

NVMe IP高速傳輸卻不依賴XDMA設(shè)計之五:DMA 控制單元設(shè)計

NVMe IP高速傳輸卻不依賴XDMA設(shè)計之五:DMA 控制單元設(shè)計
NVMe IP高速傳輸卻不依賴XDMA設(shè)計之四:系統(tǒng)控制模塊

NVMe IP高速傳輸卻不依賴XDMA設(shè)計之三:系統(tǒng)架構(gòu)

NVMe IP高速傳輸卻不依賴便利的XDMA設(shè)計之三:系統(tǒng)架構(gòu)
NVMe IP高速傳輸卻不依賴XDMA設(shè)計之二:PCIe讀寫邏輯

評論