什么是NVMe协议?

NVMe(Non-Volatile Memory Express),全称叫非易失性内存主机控制器接口规范,它是一种接口规范,也是用于存储设备的接口规范,准确来说是目前最新的存储设备通信协议。

一、关于存储的概念

为了彻底明白什么是NVMe,我们先理清楚几个关于存储的概念。

尺寸外形:也就是设备的形状和大小,通常存储设备的尺寸外形包括:

2.5寸或者3.5寸驱动器(在SFF标准中定义)

M.2 和 PCI Express(PCIe)(在PCI-SIG标准中定义)

接口:也就是设备如何与计算机通信。常见的存储设备接口包括:

SATA接口,通常用于2.5寸和3.5寸硬盘,有时候一些M.2设备也会使用

PCI Express(PCIe)接口,用于M.2和PCIe设备

SAS(串行SCSI)和FC(Fibre Channel)接口,仅用于服务器领域和数据中心

PCIe接口要比SATA接口快的多,SATA3最大带宽是6Gb/s,而基于4X PCIe的M.2接口最大可以达到32Gb/s。

协议:定义了如何在计算机与设备之间传输数据。常见的协议包括:

用于SATA接口的AHCI或者ATA协议

用于PCIe接口的NVMe协议

由此可见,NVMe是运行在某种接口上的通信协议,用于规范计算机与存储设备的数据传输。上述设备尺寸、接口和协议通常是可以组合的。

二、NVMe的发展历史

NVMe1.0标准于2011年3月推出,由NVMe规范组织成员公司(如Intel、戴尔、三星、镁光等共计100多家公司)合作开发。2012年10月推出了1.1的版本。在2014年11月推出1.2版本之后,时隔近3年,2017年5月,NVMe规范组织正式发布了NVMe 1.3版规范标准,2019年8月推出最新的1.4版本,该规范提供了更快、更简单、更容易扩展的技术, 并进一步完善了NVMe技术,NVMe 1.4缓冲区的新特性降低了延迟和SSD设计复杂性。

三、NVMe的性能

SSD设备本身的物理特性令其数据的访问十分迅速,那么性能的瓶颈就是出在计算机与设备连接的接口和协议上面。NVMe协议本质上建立了多个计算机与存储设备的通路,这样搬运数据的速度自然就提高了。在NVMe协议中,多个通路其实就是多个队列。而在SATA中,计算机与存储设备只能有一个队列,即使是多CPU情况下,所有请求只能经过这样一个狭窄的道路。而NVMe协议可以最多有64K个队列,每个CPU或者核心都可以有一个队列,这样并发程度大大提升,性能也自然更高了。

四、安捷丽产品应用

安捷丽已量产的两款主控:AN55-Z01A和AN55-Z01B,分别符合NVMe 1.3和NVMe 1.4协议,性能在同类产品中处于领先水平,表现突出,已在台联电(厦门)独立流片。