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

转载于:https://blog.51cto.com/xiamachao/2368239

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值