本帖最后由 Hashimoto 于 2016-7-7 20:42 编辑
现在所用的SATA接口与AHCI标准其实是为高延时的机械硬盘而设计的,目前主流SSD依然继续使用它们,早期SSD性能不高时可能还不觉得有什么问题,但是随着SSD的性能逐渐增强,这些标准已经成为限制SSD的一大瓶颈,专为机械硬盘而设计的AHCI标准并不太适合低延时的SSD。 当然,业界早就意识到这一问题,2009年下半年,关于NVMe的技术工作正式启动,NVMe规范由包含90多家公司在内的工作小组所定制,Intel是主要领头人,目的就是为SSD建立新的存储规范标准,让它在老旧的SATA与AHCI中解放出来。 2011年,Non-Volatile Memory Express非易失性存储器标准正式出炉,简称NVMe标准,该标准是根据闪存存储的特点量身定制的,新的标准解除了旧标准施放在SSD上的各种限制。2012年标准升级到NVMe 1.1,最新的NVMe 1.2标准是在2014所推出的。 首款支持NVMe标准的产品是三星XS1715,与2013年7月所发布,随后陆续有企业级的NVMe标准SSD推出,直到今年Intel 750发布,NVMe标准的产品才开始进入消费级市场。
说到NVMe标准对比AHCI标准的优势,其中之一就是低延时,看上图比较直观,NVMe标准是面向PCI-E SSD的,使用原生PCI-E通道与CPU直连可以免去SATA与SAS接口的外置控制器(PCH)与CPU通信所带来的延时。
在软件层方面,NVMe标准的延时只有AHCI的一半不到,NVMe精简了调用方式,执行命令时不需要读取寄存器;而AHCI每条命令则需要读取4次寄存器,一共会消耗8000次CPU循环,从而造成大概2.5微秒的延迟。 另外NVMe也大大的提升了SSD的IOPS,在制定AHCI规范时并行性的想法并没有完全融合到规范内,利用NCQ功能可以对传输能力进行优化,但是接口并不允许SSD真正最大限度地发挥其应有的并行性。 现在SSD测试通常最多只会测试到队列深度为32的IOPS,其实终究原因这是AHCI的上限,其实许多闪存主控可以提供更好的队列深度。而NVMe则可以把最大队列深度从32提升到64000,SSD的最大IOPS也会得到大幅提升。 此外NVMe标准还有驱动适用性广和功耗低的优势,这里就不对NVMe作太多的介绍了,日后如果有空就写一篇专门介绍NVMe标准的文章。
看来以后还是NVMe的天地啊,AHCI已经过时了,不过NVMe普及仍需很长的一段时间,毕竟对于目前的应用来说传统的AHCI已经能满足日常需求。 对此你有什么看法呢?
|