NVMe协议1.3c(一) 概述

刚开始接触NVMe,对此理解不深,如有错误敬请指出

1.1概述

NVM ExpressTM(NVMeTM)接口允许主机软件与非易失性存储器子系统通信。 此接口针对企业和客户端固态驱动器进行了优化,通常作为寄存器级接口连接到PCI Express接口。

注意:在开发期间,此规范称为Enterprise NVMHCI。 但是,在完成之前,该名称已修改为NVM Express基本规范。 此接口适用于客户端和企业系统。

有关从修订版1.2.1到修订版1.3的更改的概述,请参阅http://nvmexpress.org/changes以获取描述新功能的文档,包括控制器遵守修订版1.3的强制性要求。

1.2范围

该规范定义了用于与非易失性存储器子系统通信的寄存器接口。 它还定义了一个与NVM子系统一起使用的标准命令集。

1.3范围之外

寄存器接口和命令集是与任何使用NVM的模型分开指定的,这里仅指定与NVM子系统的通信接口。 因此,该规范没有规定非易失性存储器系统是用作固态驱动器,主存储器,高速缓冲存储器,备份存储器,冗余存储器等。具体的使用模型在范围之外,是可选的, 并且没有许可。
此接口在任何非易失性存储器管理之上指定,如损耗均衡。 擦除和其他针对NVM技术的操作进行了抽象。
此规范不包含有关缓存算法或技术的任何信息。
即使符合规范要求,本说明书中提及的其他已发布规范的实现或使用也不在本规范的范围内(例如,PCI,PCI Express和PCI-X)。

1.4操作理论

NVM Express可扩展主机控制器接口旨在满足使用基于PCI Express的固态驱动器的企业和客户端系统的需求。 该接口提供优化的命令提交和完成路径。 它支持并行操作,支持多达65,535个IO队列,每个IO队列具有高达64K的未完成命令。 此外,还增加了对端到端数据保护(兼容SCSI保护信息,通常称为T10 DIF和SNIA DIX标准),增强的错误报告和虚拟化等许多企业功能的支持。 该接口具有以下关键属性:

  •在命令提交或完成路径中不需要向uncacheable /MMIO寄存器读取;
  •在命令提交路径中最多需要写入一个MMIO寄存器;
  •支持多达65,535个IO队列,每个I O队列最多支持64K个未完成的命令;
  •具有明确定义的仲裁机制的每个IO队列的优先级;
  •完成4KB读取请求的所有信息都包含在64B命令本身中,确保了有效的小IO操作;
  •高效简化的命令集;
  •支持MSI/MSI-X和中断聚合;
  •支持多个名称空间;
  •对SR-IOV等IO虚拟化架构的高效支持;
  •强大的错误报告和管理功能; 
  •支持多路径IO和命名空间共享。

该规范定义了一组简化的寄存器,其功能包括:

  •指示控制器功能;
  •控制器故障状态(命令状态通过CQ直接处理);
  •管理队列配置(通过Admin命令处理I / O队列配置);
  • Doorbell registers可扩展数量的提交和完成队列。

NVM Express控制器与单个PCI功能相关联。适用于整个控制器的功能和设置在控制器Capabilities (CAP)寄存器和识别控制器数据结构中指示。

命名空间是一系列的非易失性存储器,可以格式化为逻辑块。 NVM Express控制器可以支持使用相同的命名空间ID引用的多个命名空间。可以使用命名空间管理和命名空间附加命令创建和删除命名空间。 Identify Namespace数据结构指示具体的命名空间的功能和设置。功能和设置对所有名称空间通用,由名称空间ID为FFFFFFFFh的Identify Namespace数据结构报告。

NVM Express基于配对的提交和完成队列机制。命令由主机软件放入提交队列。完成由控制器放入相关的完成队列中。多个提交队列可以使用相同的完成队列。提交和完成队列在内存中分配。

一个管理员提交关联一个已存在的完成队列以用于控制器管理和控制(例如,IO提交和完成队列的创建和删除,中止命令等)。 只有属于Admin命令集的命令才可以提交给Admin Submission Queue。

IO命令集与IO队列对一起使用。 该规范定义了一个名为NVM命令集的IO命令集。 主机选择一个用于所有IO队列对的IO命令集。

主机软件创建队列,最高可达控制器支持的最大值。 通常,创建的命令队列数基于系统配置和预期工作负载。 例如,在基于四核处理器的系统上,每个核心可能有一个队列对以避免锁定并确保在适当的处理器核心缓存中创建数据结构。 图1提供了队列对机制的图形表示,显示了提交队列和完成队列之间的1:1映射。 图2显示了一个示例,其中多个IO提交队列在Core B上使用相同的IO完成队列。图1和图2显示Admin Adminmission Queue和Admin Completion Queue之间始终存在1:1映射。

提交队列(SQ)是具有固定大小的循环缓冲区,主机软件使用该缓冲区提交命令以供控制器执行。当有一到n个新命令要执行时,主机软件会更新相应的SQ Tail doorbell寄存器。当有新的doorbell寄存器值写入时,控制器中会覆盖先前的SQ Tail值。控制器按顺序从提交队列中提取SQ条目,然后,它可以按任何顺序执行这些命令。

每个Submission Queue条目都是一个命令。命令大小为64字节。用于数据传输的内存中的物理内存位置使用Physical Region Page (PRP)条目或Scatter Gather Lists 指定。每个命令可以包括两个PRP条目或一个Scatter Gather List(SGL)段。如果需要两个以上的PRP条目来描述数据缓冲区,则提供指向描述PRP条目列表的PRP列表的指针。如果需要多个SGL段来描述数据缓冲区,则SGL段提供指向下一个SGL段的指针。

完成队列(CQ)是一个循环缓冲区,具有固定大小,用于发布已完成命令的状态。完成的命令由关联的SQ标识符和由主机软件分配的命令标识符的组合唯一地标识。多个提交队列可以与单个完成队列相关联。这表示即使这些命令源自多个提交队列也可以使用此功能通过一个完成队列处理所有完成的命令。 CQ头指针在处理完成指示最后一个完成队列条目之后由主机软件更新。完成队列条目中定义了相位标记(P)位,以表示在未咨询寄存器的情况下加入了新条目。这使主机软件能够确定新条目是否作为上一轮或当前完成通知的一部分发布。控制器完成命令后反转相位标记位。

多路径I / O和命名空间共享

原文地址:https://www.cnblogs.com/luxiaodai/p/9714256.html

时间: 2024-11-02 14:11:31

NVMe协议1.3c(一) 概述的相关文章

SSL/TLS协议运行机制的概述

转自:SSL/TLS协议运行机制的概述 作者: 阮一峰 日期: 2014年2月 5日 互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,带来了三大风险. (1) 窃听风险(eavesdropping):第三方可以获知通信内容. (2) 篡改风险(tampering):第三方可以

深入理解SPDK之四:nvme 协议重点解读

熟悉nvme 协议是深入理解spdk 代码的基础. 重要寄存器 下面寄存器都是位于pcie memory space, bar[0/1] 空间. Offset 24h: AQA – Admin Queue Attributes The Admin Submission Queue's priority is determined by the arbitration mechanism selected, refer to section 4.11. The Admin Submission Q

SSL/TLS协议运行机制的概述(转载加个人理解)

一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,潜在三大风险. 1.窃听风险(eavesdropping):第三方可获知通信内容.2.篡改风险(tampering):第三方可以修改通信内容. 3.冒充风险(pretending):第三方可以冒充他人身份参与通信. SSL/TLS协议是为了解决这三大风险而设计的,目的是希望达到: 1.所有信息都是加密传播,第三方无法窃听. 2.具有校验机制,一旦被篡改,通信双方会立刻发现. 3.配备身份证书,防止身份被冒充. 二.

[转]SSL/TLS协议运行机制的概述

作者: 阮一峰 日期: 2014年2月 5日 互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,带来了三大风险. (1) 窃听风险(eavesdropping):第三方可以获知通信内容. (2) 篡改风险(tampering):第三方可以修改通信内容. (3) 冒充风险(pre

【转】SSL/TLS协议运行机制的概述

互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,带来了三大风险. (1) 窃听风险(eavesdropping):第三方可以获知通信内容. (2) 篡改风险(tampering):第三方可以修改通信内容. (3) 冒充风险(pretending):第三方可以冒充他人身份参与通

TCP/IP 协议:链路层概述

我们以一个常见的查看IP指令为出发点(ifconfig -a): ? 1.链路层是什么 链路层是指硬件层协议.也即网络所使用的硬件,比如:以太网(后文主要讨论对象),令牌环网,FDDI已经RS-232串行线路. 在上面的命令(ifconfig -a)结果中,硬件地址(MAC)为08:00:27:00:9c:59 (48bit),链路层主要的作用就是连接不同的两个硬件. ? 2.链路层的作用 1.为IP模块发送和接收IP数据报 2.为ARP模块发送和接收ARP应答 3.为RARP发送RARP请求和

SSL/TLS协议运行机制的概述(转)

互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,带来了三大风险. (1) 窃听风险(eavesdropping):第三方可以获知通信内容. (2) 篡改风险(tampering):第三方可以修改通信内容. (3) 冒充风险(pretending):第三方可以冒充他人身份参与通

SSL/TLS协议运行机制的概述(转)

互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,带来了三大风险. (1) 窃听风险(eavesdropping):第三方可以获知通信内容. (2) 篡改风险(tampering):第三方可以修改通信内容. (3) 冒充风险(pretending):第三方可以冒充他人身份参与通

HTTP协议(一) 概述

HTTP定义 HTTP????The Hypertext Transfer Protocol is an application protocol for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web. 超文本传输协议(HTTP)是一种详细规定了浏览器和万维网服务器之间互相通信的规则. H