NVMe是一种主机控制器接口和存储协议,用于通过计算机的高速外围组件互连高速(PCIe)加速企业和客户端系统与固态硬盘(SSD)之间的数据传输总线。
NVMe(非易失性存储器快速)是一种主机控制器接口和存储协议,用于通过计算机的高速外围组件互连高速(PCIe)加速企业和客户端系统与固态硬盘(SSD)之间的数据传输总线。
NVMe 规范定义了基于 PCIe 的 SSD 的寄存器接口,命令集和功能集合,其目标是在各种 NVM 子系统中实现高性能和互操作性。NVMe 规范没有规定最终使用模型,例如固态存储,主存储器,高速缓冲存储器或备份存储器。
NVMe 提供了小型计算机系统接口(SCSI)标准和高级技术附件(ATA)标准的替代方案,用于在主机系统和外围目标存储设备之间连接和传输数据。与串行 ATA(SATA)SSD 一起使用的 ATA 命令和用于串行连接 SCSI(SAS)SSD 的 SCSI 命令集是在硬盘驱动器(HDD)和磁带作为主要存储介质的时候开发的。NVMe 设计用于更快的媒体。
与基于 SAS 和 SATA 的 SSD 相比,基于 NVMe 的 PCIe SSD 的主要优点是减少了主机软件堆栈的延迟,提高了每秒输入/输出操作(IOPS),并可能降低功耗,具体取决于外形尺寸和正在使用的 PCIe 通道数。
NVMe 可以支持使用不同类型的非易失性存储器的 SSD,包括 NAND 闪存和 Intel 和 Micron Technology 开发的 3D XPoint 技术。支持的外形包括附加 PCIe 卡,M.2 SSD 和 U.2 2.5 英寸 SSD。NVMe 参考驱动程序适用于各种操作系统,包括 Windows 和 Linux。
NVMe 的工作原理
NVMe 通过 PCIe 接口将 I / O 命令和响应映射到主机中的共享内存。NVMe 接口支持与多核处理器的并行 I / O,以实现高吞吐量并缓解中央处理单元(CPU)瓶颈。
与 SCSI 和 ATA 命令集相比,NVMe 提供了更简化的命令集来处理 I / O 请求。对于 SAS 设备,NVMe 所需的 CPU 指令数量少于 SCSI 命令集的一半,而 ATA 命令集则使用 SATA 驱动器。
NVMe 在单个消息队列中支持 64,000 个命令,最多支持 65,535 个 I / O 队列。相比之下,SAS 设备通常最多支持 256 个命令,SATA 驱动器在一个队列中最多支持 32 个命令。
但是,基于 NVMe 的 PCIe SSD 目前比同等容量的基于 SAS 和 SATA 的 SSD 更昂贵,而高端企业 NVMe SSD 可能比 SAS 或 SAS SSD 消耗更多功率。SCSI 贸易协会声称,更成熟的 SAS 固态硬盘比 NVMe PCIe 固态硬盘具有更多优势,例如更高的可扩展性,热插拔性和经过时间考验的故障转移功能。NVMe PCIe SSD 还可以提供许多应用程序不需要的性能级别。
NVM Express 的历史
非易失性存储器主机控制器接口(NVMHCI)工作组于 2009 年开始开发 NVMe 规范,并于 2011 年 3 月 1 日发布了 1.0 版本.1.0 规范包括排队接口,NVM 命令集,管理命令集和安全性特征。
NVMHCI 工作组(通常称为 NVM Express 工作组)于 2012 年 10 月 11 日发布了 NVMe 规范的更新.NVMe 1.1 增加了对具有多个 PCIe 端口的 SSD 的支持,以支持多路径 I / O 和命名空间共享。其他新功能包括空闲时间内的自动电源状态转换,以减少能量需求和保留,允许两个或多个主机协调对共享命名空间的访问,以提高容错能力。
NVM Express 工作组于 2013 年 5 月举办了第一次即插即用活动,使公司能够测试其产品是否符合 NVMe 规范,并检查与其他 NVMe 产品的互操作性。
NVMe 1.2 规范于 2014 年 11 月 3 日出现,其增强功能包括支持实时固件更新,改进的电源管理以及端到端数据保护选项。
2015 年 11 月 17 日,NVM Express 组织批准了 1.0 版本的 NVM Express 管理界面(NVMe-MI),以提供一种架构和命令集来管理带外的非易失性存储器子系统。NVMe-MI 使管理控制器能够执行诸如 SSD 设备和功能发现,健康和温度监控以及无中断固件更新等任务。如果没有 NVMe-MI,IT 经理通常依靠专有的供应商特定管理接口来管理 PCIe SSD。
NVMe 1.3 功能增强功能
NVM Express 于 2017 年 6 月发布了 NVMe 1.3。重点介绍了 sanitize,一种称为指令的新框架和虚拟化增强功能。
根据 NVM Express 参考表,在清理操作中,NVMe 子系统中的所有用户数据都被修改,以便“无法从任何缓存,非易失性介质或控制器内存缓冲区”进行恢复。当 SSD 被淘汰或重新用于新用例时,建议使用清理操作。清理模式包括 NAND 媒体上的低级块擦除,加密擦除以更改媒体加密密钥和覆盖。
Directives 框架定义了主机和 NVMe 子系统之间的数据交换机制。这样可以实现每 I / O 命令标记,并使 IT 管理员能够配置可报告的属性和设置。
Directives 的首次使用是一项称为 Streams 的功能,用于优化数据放置以提高 NAND SSD 的耐用性和性能。传统上,在将新数据写入 SSD 之前,必须首先擦除大块数据。
Streams 功能使主机能够使用“流标识符”来指示属于一组关联数据的特定存储逻辑块。这使得能够用存储在其他位置的相关数据标记读取或写入。
虚拟化增强功能定义了 NVMe 闪存如何在存在物理和虚拟控制器的共享存储环境中使用,包括主存储控制器和辅助存储控制器。NVM Express 表示,其目标是使开发团队能够将特定的 SSD 专用于特定的虚拟机。
下一个 NVMe 版本预计在 2018 年或 2019 年。路线图项目包括改进的 NVMe SSD I / O 确定性,持久控制内存缓冲支持和 SAN 多路径。预计的 NVMe over Fabrics 路线图项目包括身份验证,增强发现和传输控制协议传输支持。