深入理解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

上一篇:jQuery 向另一个页面传参,同时跳转到该页面


下一篇:一文理解完美二叉树, 完全二叉树和完满二叉树