NVMe 控制模塊負責實現用戶請求事務與 NVMe 事務的轉換、 NVMe 命令提交與完成機制、 PRP 尋址機制。 在 NoP 邏輯加速引擎中, 用戶通過配置系統控制模塊的相關寄存器來發送 DMA 或隊列管理請求, NVMe 控制模塊在得到任務信息后生成對應的 NVMe 命令, 并通過指令提交與完成機制實現與 NVMe SSD 的任務交互。NVMe 控制模塊一方面通過硬件實現降低了命令交互的延遲和 PRP 尋址機制的過程延遲, 另一方面通過結構的設計繼承了軟件協議棧的靈活性, 這使得系統即使在不同的應用場景下也能充分發揮性能優勢。 如圖 3.8 所示 NVMe 控制模塊按照功能劃分為命令控制模塊、 隊列管理模塊、 PRP 管理模塊三個部分。
圖1 NVMe控制器架構圖
指令控制模塊負責 NVMe 指令的組裝、分配、注銷。在 NVMe 協議中, 一條 NVMe指令由 16 個雙字構成, 不同指令對應字段的含義也不相同。 因此當系統控制模塊發起請求事務時, 指令控制模塊將對應寄存器中的信息整合成為 NVMe 的提交隊列條目, 并分配唯一的指令 ID, 再將條目寫入提交隊列中, 實現指令的組裝和分配; 當
接收到完成隊列中的正常完成條目時, 指令控制模塊提取其中的指令 ID 進行注銷。隊列管理模塊實現 NVMe 提交隊列和完成隊列的存儲、 門鈴機制、 仲裁機制,以及隊列的創建和刪除管理。 NVMe 隊列是實現 NVMe 指令提交與完成機制的核心組件, 隊列的數量和深度直接影響數據傳輸的性能。 在小數據隨機讀寫的場景下, 性能隨著隊列數量和深度線性增加然后趨于飽和; 在大數據順序讀寫的場景下, 性能則受隊列數量和深度影響很小。 為了適應不同的應用場景, 隊列管理模塊采用存儲和控制分離的結構設計, 實現動態配置隊列, 以更低的時間和資源成本實現性能的最優發揮。
PRP 控制模塊實現 PRP 的管理與生成。 每一條涉及數據傳輸的 NVMe 指令都有對應的 PRP 條目或列表來指示地址, PRP 控制模塊根據指令 ID 創建對應的 PRP 列表頭指針, 在有指令需要讀取 PRP 列表時根據 ID 生成與指令對應的 PRP 條目。 PRP控制模塊使 PRP 的存儲位置更加接近數據傳輸鏈路, 從而降低 PRP 讀取延遲, 提高數據傳輸效率。
接下來對指令控制模塊、 隊列管理模塊、 PRP 控制模塊的結構設計進行分析。
審核編輯 黃宇
-
控制器
+關注
關注
114文章
16955瀏覽量
182773 -
nvme
+關注
關注
0文章
243瀏覽量
23103
發布評論請先 登錄
NVMe協議簡介2
NVMe控制器IP設計系列之接口轉換模塊

NVMe控制器IP設計之接口轉換
NVME控制器之隊列管理模塊
NVMe控制器之完成信息解析模塊
NVME控制器之隊列管理模塊


NVME控制器設計1

ALINX NVME SPCle IP 特性詳解

一文詳解 ALINX NVMe IP 特性

Microchip推出高性能第五代PCIe?固態硬盤控制器系列

評論