NVMe

NVMe 概况

NVMe (Non-Volatile Memory Express) 是一种通信接口和驱动程序,为基于 PCIe 的 SSD 定义了命令集和功能集,目标是提高性能和效率,同时让广泛的企业级系统和客户端系统实现互操作。NVMe 专为 SSD 设计。它利用高速 PCIe 插槽在存储接口和系统 CPU 之间进行通信,而无论存储器外形尺寸如何。相比采用 AHCI(高级主控接口,SATA SSD 的特性之一)等旧驱动程序的旧存储型号,利用 NVMe 驱动程序执行的输入/输出任务开始速度更快、传输的数据更多、结束速度更快。由于 NVMe 专为 SSD 设计,NVMe 正在成为数据中心服务器和客户端设备(笔记本电脑、台式机,甚至是下一代游戏主机)的新行业标准。

NVMe 技术支持各种外形尺寸,例如 PCIe 卡插槽、M.2 和 U.2。一些 SSD 使用的是采用 AHCI 而非 NVMe 的 SATA、PCIe 插槽和 M.2,而 U.2 是仅用于 NVMe 协议的外形尺寸。

简介

NVMe 是为满足企业和客户系统需求,利用基于 PCIe 的固态存储,而精心设计的一个优化的,高效的,可伸缩主机控制器接口。NVMe 是为非易失性内存(NVM)技术从头开始全新构建的,目的在于超越硬盘驱动器技术的黑暗时代。从今天的 NAND 闪存技术到未来高性能、持久的内存技术,用这些非易失存储构建存储设备,NVMe 的设计为这些非易失存储(NVM)构建的存储设备提供高效访问。

有几个 NVMe 设法解决的性能指标,包括带宽,IOPs,时延。例如,串行 ATA 最大可能的 IOPs 是 200000【20 万】,而 NVMe 设备已经被证明可以超过 1000000【100 万】IOPs。通过支持 PCIe 和网络(例如 RDMA,FC)NVMe 能够支持比 SATA 或 SAS 高很多的带宽(例如 PCIe Gen3 x4 达到 4GB/s)。下一代内存技术可能使读访问时延低于一个微秒,要求新的协议包括软件栈在内能够低于 10 微秒的端到端时延。

对存储来说,从软件栈到硬件设备和系统,NVMe 是一个全新的架构。

img

历史和路标

img

NVMe 协议优势

NVMe 作为一种存储协议,被从头开始设计用于非易失性内存(NVM),包括当前的 NAND flash 技术和下一代 NVM 技术。因此,它没有像为硬盘驱动器设计的存储协议那样做相同的限制。

NVMe 协议支持多个深度队列,这是对传统 SAS 和 SATA 协议的改进。典型的 SAS 设备在一个队列中最多支持 256 条命令,而 SATA 设备最多支持 32 条命令。这些对于硬盘驱动器技术来说已经足够了,但是不能充分利用当前和下一代 NVM 技术。

与此相反,NVMe 支持每个队列 64K 命令,最多支持 64K 队列。这些队列的设计使得 I/O 命令和对这些命令的响应操作在相同的处理器内核上,并且可以利用多核处理器的并行处理能力。每个应用程序或线程都可以有自己独立的队列,因此不需要 I/O 锁定。NVMe 还支持 MSI-X 和中断控制,这可以防止 CPU 级别的瓶颈,并在系统扩展时支持大规模的可伸缩性。

img

此外,NVMe 有一个精简而简单的命令集,它使用不到 SAS 或 SATA 一半的 CPU 指令来处理 I/O 请求,在主机软件堆栈中提供更高的每 CPU 指令周期 IOPS 和更低的 I/O 延迟。NVMe 还支持企业特性(如预订)和客户端特性(如电源管理),将改进的效率扩展到 I/O 之外。

img

接口形式和功耗

NVMe 专注于存储协议,可以处理各种形式的接口。这些包括:

  • M.2 形式
  • U.2 2.5-inch 驱动器形式(以前称为 SFF-8639)
  • Add-in PCIe 卡(AIC)

NVMe 功率范围从全功率企业设备到低功率移动设备。NVMe 还利用处理器电源状态的优势。

操作系统支持

在一下环境中已经支持 NVMe。

img

存储安全

NVMe 通过支持隧道协议解决当前的数据隐私问题,该协议提供可信计算组(TCG)和其他相关社区生成的安全特性。

计划为 NVMe 设备和系统提供的功能包括简单的访问控制、静态数据保护、密码擦除、清除级擦除和其他功能。

有关 NVMe 存储安全性的其他信息,请参阅可信计算组和 NVM Express 联合白皮书:TCG storage, Opal 和 NVMe,网址为http://www.nvmexpress.org/white-papers/

总结

NVMe 正在迅速获得消费者和供应商的认可。一些行业分析师预测,NVMe 将在未来几年成为主流的存储接口。由于其高性能和低延迟特性,以及几乎所有平台的可用性,NVMe 是一个行业进程的改变者。

与以往任何存储协议不同,存储设备和存储子系统第一次有了与主机操作的根本不同的方式。精简的指令、较低的延迟软件堆栈、队列的并行性和较大的队列深度,以及非易失性内存的设计,提供了以前从未听说过的 I/O 和吞吐率,以及有史以来最低的存储延迟。