NVME 1.4简介(第一章)

最近又入IB新坑,断更时间有点长,废话不多说,说正题:

nvme 1.4第一章节为nvme整体框架介绍,第一章节对于初学nvme者尤为重要,万不可因为协议内容枯燥随意跳过!

在这里插入图片描述
开篇介绍了NVMe接口的作用及spec发展由来,如果想要了解1.3-1.4版本差异,可以到官网了解,有效信息不多,关键字“subsystem”,后续也给出了subsystem的解释:
在这里插入图片描述
这里可以理解为一个NVM子系统可以包括多个控制器,多命名空间,和多个端口(双活等场景使用),以NVMe SSD为例,子系统可以简单理解为SSD硬盘。
在这里插入图片描述
该段描述NVMe的两种主要用途,一种是基于PCIE的独立非易失存储子系统(说人话就是NVMe SSD),另一种存储网络使用的传输协议(行业黑话:全闪阵列),本协议主要基于PCIE来进行说明。

在这里插入图片描述
后边两段介绍了该SPEC讲述的范围及哪些是SPEC不包括内容,不翻译了

重点来了
在这里插入图片描述
总结下上述NVMe主要优点介绍:

  1. 支持64K个IO queue,每个IO queue支持64K-1个待处理命令(根据CPU核数创建IO queue数量,IO
    queue访问不用加锁,保证queue之间不会有抢占)。
  2. 不需要在命令提交或完成路径中读取不可缓存/MIMO寄存器;
  3. 命令提交流程最多一次MMIO操作写入;
  4. 每个IO queue有清晰的优先级仲裁机制;
  5. 完成4 KiB读取请求的所有信息都包含在64B命令本身中,以确保高效的小型I/O操作;
  6. 高效和精简的命令集(相对于SCSI/SATA);
  7. 支持MSI/MSI-X,支持中断聚合;
  8. 支持多命名空间;
  9. 高效的支持IO虚拟化架构,例如SR-IOV;
  10. 强大的错误报告和管理能力;
  11. 支持多路径IO和共享命名空间;

SPEC还定义了一组简化的寄存器用来配置一下功能:

  1. 控制器能力配置;
  2. 控制器错误状态;
  3. 管理队列配置;
  4. SQ/CQ数量可变对应的门铃寄存器;

在这里插入图片描述
第一段说明控制器数量和PCI Func数量关联,一个NVMe控制器对应一个PCI Func,能力可以通过Identify Controller获取。
第二段说明命名空间的管理方式:命名空间可以作为格式化最小单元,NVMe通过NSID来管理命名空间,可以通过Namespace Management and Namespace Attachment命令创建和删除命名空间,NSID:FFFFFFFFh可以作为操作所有命名空间的指定NSID。

在这里插入图片描述在这里插入图片描述
这几段都是描述NVMe SQ/CQ使用介绍,最终通过下图展示以上几段想表述内容:
在这里插入图片描述
从上图可以得到信息:
1. 黄色箭头上下两部分,上方host表示为主机侧,下方Controller为SSD。该NVMe 子系统包含一组管理队列,每个主机CPU核对应一组IO 队列;
2. 所有的队列内存均在主机侧;
3. 黄色箭头方向表示数据传输方向,即SQ的生产者为主机侧,消费者为NVMe SSD,CQ生产者则为NVMe SSD,消费者为主机侧;
4. SQ与CQ一一对应。
在这里插入图片描述
该图中主机侧单个CPU核上绑定了多个SQ,且SQ与CQ为多个SQ对应一个CQ,SQ与CQ一一对应或者多个SQ对应一个CQ的使用方法协议均是允许的。

在这里插入图片描述
这里三段介绍内容总结:
1. SQ是主机侧环形buffer,主机软件投递一个或者多个SQE之后,写NVMe SSD尾门铃部寄存器,通知NVMe SSD控制器去处理命令,SSD从SQ中顺序去SQE一个一个处理命令
2. SQ 环境buffer对应的物理内存管理方式有两种,一种是PRP,一种是SGL(后续均有介绍)
3. CQ也是主机测环形buffer,每个CQE对应着一个SQE;多个SQ可以对应同一个CQ,主机可以用一个工作线程处理CQE,CQE处理之后,更新CQ 头指针。CQ有个反转标记(P),每处理一轮CQE之后,P反转一次。

1.4 章节为多路径IO和命名空间章节主要介绍NVMe SSD实际业务场景,这里不做详细介绍;

1.5,1.6,1.7,1.8章节均为帮助我们如何去学习该协议文档内容,很重要,但是太零碎也不展开讲述,第一章介绍至此。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值