详解:什么是NVMe?

存储
NVMe是 non-volatile memory express 缩写,翻译过来就是非易失性内存主机控制器接口规范,在它首次投放市场的时候,许多人认为它只是一个新的、速度更快的SSD。但实际上,NVMe是一种基于性能并从头开始创建新存储协议,它可以使我们能够充分利用SSD和存储类内存(SCM)的速度。

说到NVMe,“快”是人们对它的第一印象。因为NVMe的出现,硬盘的性能得到了极大的提升。那到底什么是NVMe呢?

[[392647]]

什么是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。

责任编辑:未丽燕 来源: SDNLAB
相关推荐

2021-04-19 14:28:28

NVMe存储协议

2018-04-10 08:33:18

NVMe闪存存储

2019-07-01 15:01:44

NVMe接口存储

2021-07-06 17:13:08

NVMe存储协议数据中心

2009-09-14 16:17:03

什么是LINQ To

2019-07-30 12:28:51

云计算虚拟化服务器

2018-09-26 16:04:04

NVMe主机控制器

2011-08-04 10:18:45

数据驱动编程

2021-05-26 10:42:13

NVMe电源管理数据存储

2019-05-28 15:46:50

SSD固态硬盘SATA M.2

2009-08-19 16:40:35

C#回调

2009-02-02 09:04:52

MVC框架Java

2022-06-20 05:25:54

裂脑Oracle RAC数据库

2022-08-10 06:16:49

网络交换机网络

2018-12-26 13:22:05

NVMeNVMe-oF数据

2018-01-05 11:51:06

硬盘M.2接口SSD

2022-07-27 15:56:58

固态硬盘网络存储

2019-12-24 11:00:51

NVMeSSDSATA

2021-03-20 22:46:22

IaaSSaaSPaaS

2021-02-04 11:59:10

硬盘SSD数据
点赞
收藏

51CTO技术栈公众号