NVME技术简述

NVMe的诞生在NVMe横空出世之前 , 硬盘的世界还是AHCI的天下 。 AHCI是什么?AHCI , 英文全名是SerialATAAdvancedHostControllerInterface , 中文名是"串行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的特点与优势NVMe主要是面向PCIeSSD开发的一套接口标准(注意 , 也不仅仅局限在SSD , 对其他NVM存储依然很有前景 , 本文还是主要针对PCIeSSD) 。 NVMe定义了系统接口和命令集 。 其目的就是性能更好 , 延迟更低 , 功耗更低 。 我们先对比一下AHCI与NVMe特点 , 看图(来自IntelFMS2012) 。
先来看一下NVMe/PCIe与AHCI/SATA的对比数据(来源:Intel) 。 下面是IntelNVMeSSDP3700系列与IntelSATASSDS3700系列的128K顺序读写速度对比 , 可以看到 , NVMeSSD的读写性能有近6倍的提升 。
NVMe的低延迟优势与AHCI相比 , NVMe在两个方面的作出了努力降低存储系统延迟:
如前面所讲 , NVMe主要服务PCIeSSD , 而PCIe通道不需要像SATA一样连接到南桥中转 , 可以直接通往CPU(这里的CPU确切的说应该是RootComplex) , 高铁直达 , 延迟降低了一部分; NVMe的IOPS优势理论上IOPS与队列深度(QueueDepth)和IO延迟有关 , 用数学表达式是:
IOPS=队列深度/IO延迟 。从上述的表达式中 , 我们可以看出IOPS与队列深度有很大的关系 。 但是有一点需要注意:实际应用中 , 随着队列深度的增加 , IO延迟也会相应的变大 。 AHCI中 , 只支持一个队列 , 并且队列深度只有32 。 而NVMe支持64K个队列 , 每个队列的深度可达64K 。 这样一对比 , AHCI真是弱爆了~不怪PCIe郁郁不得志呢~
再来张图 , 数据最有发言权(数据来自IntelIDF2015) 。 NVMe绝对碾压SATA 。
企业级SSD:16~128Queues;消费级SSD:2-8Queues.


    推荐阅读