NVMe系列专题之一:NVMe技术概述

1. NVMe的诞生

在NVMe横空出世之前,硬盘的世界还是AHCI的天下。那么问题来了,AHCI又是什么? AHCI,英文全名是Serial ATA Advanced Host Controller Interface,中文名是"串行ATA高级主控接口"或者"高级主机控制器接口",是Intel联合多家公司研发的系统接口标准。

在信息爆炸时代之前,SATA在AHCI的领导下可谓是风生水起,青史留名。但是,SATA/AHCI其实是为机械硬盘HHD而生的,其致命的缺陷就是传输速度有瓶颈,最大不超过600MB/s。 后来,AHCI也意识到了自身的危机,并高薪挖来了另一位得力干将PCIe。PCIe呢,光芒万丈,AHCI根本就驾驭不了,PCIe对AHCI也是心生抱怨,AHCI不能为PCIe提供施展才华的平台。在与AHCI搭档了很短的时间之后,PCIe就萌生退意。

正当PCIe对这个世界开始失望的时候,PCIe遇到了NVMe。郁郁不得志之后,PCIe终于等到了自己的伯乐。PCIe/NVMe这对搭档在结合之后,展现了前所未有的能量,正在用他们的实力征服这个世界。

上面的一段"废话"叙述了AHCI,NVME,SATA,PCIe相互之间的关系,画了张图,方便大家理解:

NVMe最初的名字叫NVMHCI,是在2007年的Intel开发者论坛(IDF)上被提出来的,并在同年Intel牵头成立NVMe开发工作组。在这个工作组中有13个主导公司(如下图)和近百个成员。

2. NVMe的特点与优势

NVMe主要是面向PCIe SSD开发的一套接口标准(注意,也不仅仅局限在SSD,对其他NVM存储依然很有前景,本文还是主要针对PCIe SSD)。NVMe定义了系统接口和命令集。其目的就是性能更好,延迟更低,功耗更低。我们先对比一下AHCI与NVMe特点,看图(来自Intel FMS 2012)。

NVMe的速度优势

对用户来说,SSD的数据传输速度体验是第一感官。

先来看一下NVMe/PCIe与AHCI/SATA的对比数据(来源:Intel)。下面是Intel NVMe SSD P3700系列与Intel SATA SSD S3700系列的128K顺序读写速度对比,可以看到,NVMe SSD的读写性能有近6倍的提升。

我们再来看另外一组NVMe/PCIe与AHCI/PCIe的速度对比。数据同样来自Intel。从下图中可以看出,NVMe SSD相对AHCI/PCIe SSD在读写性能上有2~3倍的提升。

经过两组数据的对比,可以证明NVMe/PCIe是目前最强的组合。

NVMe的低延迟优势

与AHCI相比,NVMe在两个方面的作出了努力降低存储系统延迟:

  • 如前面所讲,NVMe主要服务PCIe SSD,而PCIe通道不需要像SATA一样连接到南桥中转,可以直接通往CPU(这里的CPU确切的说应该是Root Complex),高铁直达,延迟降低了一部分;

  • NVMe如总理一样坚持"简政放权”,不给群众添麻烦。所以NVMe执行命令过程被彻底简化,直接执行,不用再读取寄存器。但在之前的AHCI中,执行命令时则要读取4次寄存器,这个过程会造成2.5μs的延迟。

NVMe的IOPS优势

理论上IOPS与队列深度(Queue Depth)和IO延迟有关,用数学表达式是:

IOPS=队列深度/IO延迟。

从上述的表达式中,我们可以看出IOPS与队列深度有很大的关系。但是有一点需要注意:实际应用中,随着队列深度的增加,IO延迟也会相应的变大。AHCI中,只支持一个队列,并且队列深度只有32。而NVMe支持64K个队列,每个队列的深度可达64K。这样一对比,AHCI真是弱爆了~不怪PCIe郁郁不得志呢~

再来张图,数据最有发言权(数据来自Intel IDF 2015)。NVMe绝对碾压SATA。

其实,如果要完全释放NVMe SSD的IOPS性能,设计人员要先做好评估呢,因为当队列深度达到一定程度后,NVMe SSD的IOPS才会达到最佳。如下图(来自Tom'Hardware),六块NVMe SSD均在队列深度128以上才达到最佳的性能。

NVMe白皮书中对企业级SSD和消费级SSD设计时需要的队列深度的建议是:

  • 企业级SSD: 16~128 Queues;

  • 消费级SSD: 2-8 Queues.

NVMe的低功耗优势

NVMe中加入了自动电源状态转换和动态电源管理机制。NVMe Spec支持1-32电源状态(PS, Power State)。在Host开启自动电源状态转换功能时,可以根据自己喜好设置Idle多长时间后自动转换其他电源状态。比如,我们定义了6个PS,并且定义在Idle(PS0) 10ms之后进入PS1, Idle 50ms 进入PS2,Idle 100ms 进入PS3…这些都是自定义的。如果Host未开启自动电源状态转换功能,也可以通过下发Set feature命令进行电源状态的转换。

不过,自动电源状态切换功能一般只用在消费级SSD上,对笔记本电脑的续航问题有很大的帮助。在企业级SSD中数据的安全性还是第一位的,不大会考虑功耗的问题。

本文主要是对NVMe技术作一个概况性的介绍,后续文章会讲述NVMe的相关细节,敬请期待,非常感谢!

NVMe(Non-Volatile Memory Express)SSD和AHCI(Advanced Host Controller Interface)SSD是两种不同的接口标准,用于连接和管理固态硬盘(SSD)。它们之间的主要区别如下: 1. 接口类型:AHCI SSD使用SATASerial ATA接口,而NVMe SSD使用PCIe(Peripheral Component Interconnect Express)接口。PCIe接口速度更快,并且提供更高的带宽和更低的延迟,使得NVMe SSD能够实现更高的性能。 2. 性能:由于使用不同的接口标准,NVMe SSD通常比AHCI SSD具有更高的性能。NVMe SSD利用PCIe接口的高速通信能力,可以实现更高的数据传输速率和更低的访问延迟。这使得NVMe SSD适用于需要高性能存储的应用场景,如大规模数据处理、虚拟化环境和高性能计算。 3. 并行性:NVMe SSD具有更好的并行性能。AHCI SSD在传输数据时会受到AHCI控制器的限制,只能处理一个命令队列。而NVMe SSD支持多个命令队列和并行I/O操作,可以同时处理多个读写请求,提高了系统的并发性能。 4. 兼容性:AHCI接口是SATA的标准接口,因此AHCI SSD具有更广泛的兼容性,可以与大多数主板和操作系统兼容。而NVMe SSD的兼容性相对较新,需要支持NVMe接口的主板和操作系统才能正常工作。 综上所述,NVMe SSD和AHCI SSD之间的主要区别在于接口类型、性能、并行性和兼容性。NVMe SSD具有更高的性能和更好的并行处理能力,适用于需要高性能存储的场景。而AHCI SSD具有更广泛的兼容性,适用于对性能要求不高或使用较旧硬件的场景。选择使用哪种类型的SSD取决于具体的需求和设备兼容性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古猫先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值