NVMe 与 AHCI

Posted zengkefu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NVMe 与 AHCI相关的知识,希望对你有一定的参考价值。

http://elf8848.iteye.com/blog/1731274

AHCI: NCQ技术,600MB/S,一个队列,每个队列32个指令

NVME:65000个队列,每个队列65000指令,3.2GB/S

NVMe是什么?

  2011年时,Non-Volatile Memory Express 非易失性存储器标准即NVMe规范正式出炉,这是专门针对NVND闪存和下一代存储设备所提出的规范。它基于闪存的特点而研发,其目的是尽可能缩小存储系统和内存带宽之间的差距。企业级SSD上已经很多产品采用NVMe规范,不过消费级产品普及要慢一些,目前最新标准是NVMe 1.2。

 

NVMe的优势?

(1)更低的延时:

  造成硬盘存储时延迟的三大因素,存储介质本身、控制器以及软件接口标准。由上图可以发现,比起AHCI,NVMe可以大幅度降低控制器和软件接口部分的延迟,原因有以下两个:

  NVMe面向的是PCIe SSD,原生PCIe主控与CPU直接相连,而不是传统方式,通过南桥控制器中转,再连接CPU(当然,如果设备是接入到南桥提供的PCIe接口上,那么这部分的延迟也不会降低多少);

  NVMe精简了调用方式,执行命令时不需要读取寄存器;而AHCI每条命令则需要读取4次寄存器,一共会消耗8000次CPU循环,从而造成2.5μs的延迟。

(2)更高的传输性能

  NVMe的另一个重点则是提高SSD的IOPS(每秒读写次数)性能。如果我们有详细了解过SSD的主控参数,应该知道会有队列深度这个参数。理论上,IOPS=队列深度/ IO延迟,故IOPS的性能,与队列深度有较大的关系(但IOPS并不与队列深度成正比,因为实际应用中,随着队列深度的增大,IO延迟也会提高)。市面上性能不错的SATA接口SSD,在队列深度上都可以达到32,然而这也是AHCI所能做到的极限。但目前高端的企业级PCIe SSD,其队列深度可能要达到128,甚至是256才能够发挥出最高的IOPS性能。而NVMe标准下,最大的队列深度可达64000。此外,NVMe的队列数量也从AHCI的1,提高了64000。

(3)更低的功耗控制


更低的能耗管理

   NVMe加入了自动功耗状态切换和动态能耗管理功能,如图例所示,设备从能耗状态0闲置50ms后可以迅速切换到能耗状态1,在500ms闲置后又会进入能耗更低的状态2。虽然切换能耗状态会产生短暂延迟,但闲置时这两种状态下的功耗可以控制在非常低的水平,因此在能耗管理上,相比起主流的SATA接口SSD拥有较大优势,这一点对增加笔记本电脑等移动设备的续航尤其有帮助。另外,因为原生PCIe可以与CPU直连,数据传输时没有了中间转接过程所产生的功耗,也会在一定程度上降低能耗。

以上是关于NVMe 与 AHCI的主要内容,如果未能解决你的问题,请参考以下文章

nvme是啥意思

NVMe到底是啥?用它的SSD有啥优势?

带有顺序请求选项的 NVME 读/写命令

RK356x U-Boot研究所(命令篇)3.7 pci与nvme命令的用法

1500读写的nvme有必要装吗?

nvme和ngff的区别是啥?