深入理解nvme协议之二:nvme 协议重点数据结构之间的关系

Physical Region Range(PRP entry)

描述一段物理空间的其实地址和长度,最重要的字段包括:

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

具体如下图所示:

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的数据结构如下:

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

DW2字段

DW2字段范围的字段记录了返回的这个complete queue 来自哪个submit queue, 以及这个submit queue Header 的位置。如下:

DW3字段

DW3字段记录了这个complete queue entry 是哪个command产生的,已经这个命令执行完之后的结果状态。

其中上面Status Field的具体字段又有几个子字段:

SCT

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

SC

而SC(status code)字段给出了命令执行完成之后status的更具体的字段, 下表列出了几个例子:

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

一些高级的NVME SSD控制器内部有自己的内存,可以把它映射到用户内存空间。和使用spdk_memory_alloc从系统内存分配的内存相比,这样能少做一次DMA拷贝。

name space list

name space list是namespace IDS的有序列表。组织如下:

controller list

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

3

原文地址:https://blog.51cto.com/xiamachao/2368239

时间: 2024-10-12 15:48:03

深入理解nvme协议之二:nvme 协议重点数据结构之间的关系的相关文章

网络协议理论,http协议,数据结构,常用返回码

一.网络协议理论 先是DNS协议 将域名转化成IP地址 这个你要知道 域名只是人记着方便 计算机记的是IP 然后是TCPIP协议 数据在传输过程中可能要经过陆游器 涉及到的是ARP协议 将IP地址转换成以太网地址 进行数据报的传输 (1)iso:国际标准化组织(International Organization for Standardization,ISO)简称ISO,是一个全球性的非政府组织,是国际标准化领域中一个十分重要的组织.(2)OSI是Open System Interconnec

HTTP协议(二)header标头说明

HTTP协议(二):header标头说明 Header 解释 示例 Accept-Ranges 表明服务器是否支持指定范围请求及哪种类型的分段请求 Accept-Ranges: bytes Age 从原始服务器到代理缓存形成的估算时间(以秒计,非负) Age: 12 Allow 对某网络资源的有效的请求行为,不允许则返回405 Allow: GET, HEAD Cache-Control 告诉所有的缓存机制是否可以缓存及哪种类型 Cache-Control: no-cache Content-E

TCP/IP协议简介(二) 之 链路层介绍

链路层介绍 一.简介 上一节已经介绍过,网络层协议的数据单元是 IP 数据报 ,而数据链路层的工作就是把网络层交下来的 IP 数据报 封装为 帧(frame)发送到链路上,以及把接收到的帧中的数据取出并上交给网络层. 为达到这一目的,数据链路必须具备一系列相应的功能,主要有: 将数据封装为帧(frame),帧是数据链路层的传送单位: 控制帧的传输,包括处理传输差错,调节发送速率与接收方相匹配: 在两个网络实体之间提供数据链路通路的建立.维持和释放的管理. 数据帧的结构是这样的: 二.控制帧的传输

网络通信 --> 互联网协议(二)

互联网协议(二) 一.对上一节的总结 我们已经知道,网络通信就是交换数据包.电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信.数据包的结构,基本上是下面这样: 发送这个包,需要知道两个地址: * 对方的MAC地址 * 对方的IP地址 有了这两个地址,数据包才能准确送到接收者手中.但是,前面说过,MAC地址有局限性,如果两台电脑不在同一个子网络,就无法知道对方的MAC地址,必须通过网关(gateway)转发. 上图中,1号电脑要向4号电脑发送一个数据包.它先判断

HTTP协议(二)之HTTP请求

一.HTTP请求的方法 在HTTP/1.1协议中,定义了8种发送HTTP请求的方法,有GET.POST.OPTION.HEAD.PUT.DELETE.TRACE.CONNECT.PACH.根据HTTP协议的解释,不同的方法对资源有不同的操作方式: 1.PUT:增 2.DELETE:删 3.POST:改 4.GET:查 其中最常用的时GET和POST.GET和POST的主要区别在数据的传递上. 1.GET 在URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,比如: http://lo

基于Netty的聊天系统(二)协议定制----登录篇

上一篇文章我们讨论了聊天的基本流程,那么我们现在基于上一篇文章的流程开始定义协议,如果有朋友有更好的建议,可以在下边回复一起学习讨论,我们说登录分为两部分,第一部分为和服务器的连接阶段,第二部分为验证阶段,那么首先我们基于这2个部分来指定协议: 连接阶段: {"id":"xxxx","#":"conn","u":1[email protected]/ios,"v":100} id:客户端

HTTP协议是无状态协议,怎么理解?

 Http是一个无状态协议,同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的全部信息外,该环境不保存与会话有关的不论什么信息. 自己的理解,在asp.net里:每次提交server的页面没有不论什么关系,每次记录在页面的信息下次提交是记不住的,(除了应用本身可能已经存储在全局对象中的全部信息外)在.net里实际就是ViewState,ViewState是asp.net中保存页面信息的基本单位,应用时就是保存在控件隐藏域等中的数据 协议的状

CCNA学习笔记二——VTP协议

VTP协议:VLAN Trunk Protocol 从一个控制点,维护整个网络上VLAN的添加,删除和重命名工作 VTP域:相同的域名,通过Trunk相互连接的一组交换机 VTP模式: 服务器模式(Server):默认 客户机模式(Client) 透明模式(Transparent) VTP通告: 客户机通告请求-获取VLAN信息 交换机重新启动 VTP域名变更后 交换机接收到了配置修订号大的汇总通告 服务器的通告响应-发送VLAN信息 汇总通告-用于通知邻接的Catalyst交换机目前的VTP域

Swift学习第八枪--协议(二)

协议(二) 这篇紧接着前面的协议(一)继续总结. 1.委托(代理)模式 委托是一种设计模式,它允许 类 或 结构体 将一些需要它们负责的功能 交由(委托) 给其他的类型的实例.委托模式的实现很简单: 定义协议来封装那些需要被委托的函数和方法, 使其 遵循者 拥有这些被委托的 函数和方 法 .委托模式可以用来响应特定的动作或接收外部数据源提供的数据,而无需要知道外部数据源的类型信息. 下面的例子是两个基于骰子游戏的协议: protocol DiceGame { var dice: Dice { g