加载中…
个人资料
古猫先生-存储随笔
古猫先生-存储随笔
  • 博客等级:
  • 博客积分:0
  • 博客访问:34,780
  • 关注人气:10
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

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

(2017-06-20 09:57:45)
标签:

ssd

分类: 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系列专题之一:NVMe技术概述

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

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


2. NVMe的特点与优势

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

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


NVMe的速度优势

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

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

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

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

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


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


NVMe的低延迟优势

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

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

     

     

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

  • 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系列专题之一:NVMe技术概述


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

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


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

  • 企业级SSD: 16~128 Queues;

  • 消费级SSD: 2-8 Queues.

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


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命令进行电源状态的转换。

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

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


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


0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有