说到NVMe,“快”是人们对它的第一印象。因为NVMe的出现,硬盘的性能得到了极大的提升。那到底什么是NVMe呢?
什么是NVMe?
NVMe是 non-volatile memory express 缩写,翻译过来就是非易失性内存主机控制器接口规范,在它首次投放市场的时候,许多人认为它只是一个新的、速度更快的SSD。但实际上,NVMe是一种基于性能并从头开始创建新存储协议,它可以使我们能够充分利用SSD和存储类内存(SCM)的速度。
NVMe是一种高性能、NUMA(非统一内存访问)优化的、高度可扩展的存储协议,用于连接主机和内存子系统。NVMe是专门为NAND、闪存等非易失性存储设计的,NVMe协议建立在高速PCIe通道上。
NVMe接口协议的功能包括:
支持64K命令队列;
可以使用低CPU周期为每个队列发送64K命令;
延迟约为2.8微秒;
可以直接与系统CPU通信;
NVMe可以实现超过一百万的IOP。
NVMe的演变
在过去的十年中,存储技术发生了翻天覆地的变化。随着固态硬盘开始取代机械硬盘成为主要的存储设备,我们急需一个新的接口标准来利用更快的速度和功能。
传统的SATA接口与AHCI标准其实是为了机械硬盘而设计的,早期的SSD性能不高,即使使用这些传统的接口和协议,也不觉得有什么问题,但是随着SSD的性能逐渐增强,传统的标准已经不再适用,进而成为了限制SSD的一大瓶颈。NVMe是第一个真正满足高速存储介质需求的协议。
2009年下半年,NVM Express工作组(NVMHCI)开始制定NVMe规范,NVM Express工作组包含90多家公司成员,Intel是主要领头人,小组成员包括美光、戴尔、三星、Marvell、NetAPP、EMC、IDT等公司,目的就是为SSD建立新的存储规范标准,让它在老旧的SATA与AHCI中解放出来。
2011年,NVMe 1.0标准正式出炉,该标准是根据闪存存储的特点量身定制的,新的标准解除了旧标准施放在SSD上的各种限制。2012、2014和2017相继推出了1.1、1.2和1.3版本,目前最新的NVMe 1.4标准已于2019年7月发布。
NVMe如何工作?
NVMe通过PCIe接口将I/O命令和响应映射到主机的共享内存。NVMe接口支持多核处理器并行I/O,以促进高吞吐量,缓解CPU的压力。
与SCSI和ATA命令集相比,NVMe提供了更加简化的命令集来处理I/O请求。相对于前两者,NVMe需要的CPU指令数量少一半。
NVMe的本质是上建立了多个计算机与存储设备的通路。NVMe在单个消息队列中支持64000个命令,最多支持65535个I/O队列。相比之下,SAS设备的队列深度通常在一个队列中最多支持256个命令,而SATA驱动器最多支持32个命令。打个比方,如果SATA是一条普通的小道,每次只能通过32辆车的话,那NVMe就是一条拥有65535条车道的高速公路,每条车道能通过65535辆车。
NVMe的优势
NVMe的优势在于它能够利用到并行数据路径,从而在加速方面提供更好的性能。它能够使现有的应用程序以及新的应用程序可以更有效地工作。除此之外,低延时、低功耗以及兼容性高等也是NVMe的众多优势之一。
NVMe的优势包括:
低延时,NVMe协议可以通过PCIe通道跟CPU直接相连,数据不需要像SATA一样需要通过控制器再中转到CPU;
IOPS大增,NVMe则可以把最大队列深度从32提升到64000,SSD的IOPS能力也会得到大幅提升。
功耗更低,NVMe加入了自动功耗状态切换和动态能耗管理功能;
兼容性高,NVMe SSD可以很方便的匹配不同的平台、系统,无需厂家提供相应的驱动就可以正常工作。
NVMe还是物联网(IoT)、人工智能(AI)和机器学习(ML)等创新和发展中的技术和应用程序的关键推动力,这些技术和应用程序都可以受益于NVMe连接的低延迟和高性能贮存。
写在最后
NVM Express Inc.在2016年6月发布了1.0版的NVMe over Fabrics(简称NVMe-OF),NVMe-OF的出现,就是将NVMe应用到前端,作为存储阵列与前端主机连接的通道,取代过去的FC、iSCSI。下篇我们一起来看一下什么是NVMe-OF。