深入理解nvme協議之二:nvme 協議重點數據結構之間的關係

Physical Region Range(PRP entry)

描述一段物理空間的其實地址和長度,最重要的字段包括:

  • 起始地址(page base address)
  • 偏移大小(offset)

具體如下圖所示:
深入理解nvme協議之二:nvme 協議重點數據結構之間的關係

Metadata Region

特點:裏面的數據不能被split 來傳輸
Metadata may be supported for a namespace as either part of the logical block (creating an extended logical block which is a larger logical block that is exposed to the application) or it may be transferred as a separate buffer of data. The metadata shall not be split between the logical block and a separate metadata buffer. For writes, the metadata shall be written atomically with its associated logical block

complete queue

每個mition queue entry完成uiy會產生一個complete queue entry。每個complete queue entry的特地如下:

  • 至少16 bytes

  • 每個complete queue entry的數據結構如下:
    深入理解nvme協議之二:nvme 協議重點數據結構之間的關係

其中主要的字段包括DW0、DW1、DW2、DW3.

DW2字段

DW2字段範圍的字段記錄了返回的這個complete queue 來自哪個submit queue, 以及這個submit queue Header 的位置。如下:

深入理解nvme協議之二:nvme 協議重點數據結構之間的關係

DW3字段

DW3字段記錄了這個complete queue entry 是哪個command產生的,已經這個命令執行完之後的結果狀態。

深入理解nvme協議之二:nvme 協議重點數據結構之間的關係

其中上面Status Field的具體字段又有幾個子字段:
深入理解nvme協議之二:nvme 協議重點數據結構之間的關係

SCT

其中上面的SCT(staus cod ) 段含義如下:

深入理解nvme協議之二:nvme 協議重點數據結構之間的關係

SC

而SC(status code)字段給出了命令執行完成之後status的更具體的字段, 下表列出了幾個例子:
深入理解nvme協議之二:nvme 協議重點數據結構之間的關係

CMB 控制器內存buffer (controller memory buffer)

一些高級的NVME SSD控制器內部有自己的內存,可以把它映射到用戶內存空間。和使用spdk_memory_alloc從系統內存分配的內存相比,這樣能少做一次DMA拷貝。

name space list

name space list是namespace IDS的有序列表。組織如下:

深入理解nvme協議之二:nvme 協議重點數據結構之間的關係

controller list

同name space list 類似, controller list 是按照controller IDS升序排列的 controller ID列表。典型的結構如下:

深入理解nvme協議之二:nvme 協議重點數據結構之間的關係

3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章