HDD和早期SSD绝大多数都是使用SATA接口,跑的是AHCI(Advanced Host Controller Interface),它是由Intel联合多家公司研发的系统接口标准。AHCI支持NCQ(Native Command Queuing)功能和热插拔技术。NCQ最大深度为32,即主机可以发最多32条命令给HDD或者SSD执行,跟之前硬盘只能一条命令一条命令执行相比,硬盘性能大幅提升。
这在HDD时代,或者SSD早期,AHCI协议和SATA接口足够满足系统性能需求,因为整个系统性能瓶颈在硬盘端(低速,高延时),而不是在协议和接口端。然而,随着SSD技术的飞速发展,SSD盘的性能飙升,底层闪存带宽越来越宽,介质访问延时越来越低,系统性能瓶颈已经由下转移到上面的接口和协议处了。AHCI和SATA已经不能满足高性能和低延时SSD的需求,因此SSD迫切需要自己更快、更高效的协议和接口。
时势造英雄,在这样的背景下,NVMe横空出世。2009年下半年,在带头大哥Intel领导下,美光、戴尔、三星、Marvell等巨头,一起制定了专门为SSD服务的NVMe协议,旨在让SSD从老旧的SATA和AHCI中解放出来。
何为NVMe?Non-Volatile Memory Express,非易失性存储器标准,是跑在PCIe接口上的协议标准。NVMe的设计之初就有充分利用到PCIe SSD的低延时以及并行性,还有当代处理器、平台与应用的并行性。SSD的并行性可以充分被主机的硬件与软件充分利用,相比于现在的AHCI标准,NVMe标准可以带来多方面的性能提升。NVMe为SSD而生,但不局限于以闪存为媒介的SSD,它同样可以应用在高性能和低延时的3D XPoint这类新型的介质上。
首款支持NVMe标准的产品是三星XS1715,于2013年7月发布。随后陆续有企业级的NVMe标准SSD推出。2015年Intel 750发布,标志NVMe标准的产品开始进入消费级市场。如今市面上已经出现很多NVMe SSD产品,包括企业级和消费级,如果说前几年NVMe SSD是阳春白雪,现如今已是下里巴人,NVMe SSD已慢慢进入寻常百姓家(笔者的小本上就是用的PCIe+NVMe的SSD)。
需要指出的是,在移动设备上,NVMe也有一席之地。苹果自IPhone 6s开始,其存储设备上跑的就是NVMe协议标准。未来移动存储的方向,笔者认为不是UFS,当然更不不会是eMMC,而是NVMe。拭目以待吧。
那么,NVMe究竟有什么好?跟AHCI相比,它有哪些优势?
NVMe和AHCI相比,它的优势主要体现在以下几点:
l 低时延(Latency)
造成硬盘存储时延的三大因素:存储介质本身、控制器以及软件接口标准。
存储介质层面,闪存(Flash)比传统机械硬盘速度快的太多;
控制器方面,从SATA SSD发展成PCIe SSD,原生PCIe主控与CPU直接相连,而不是传统方式,通过南桥控制器中转,再连接CPU,因此基于PCIe的SSD时延更低;
软件接口方面,NVMe缩短了CPU到SSD的指令路径,比如NVMe减少了对寄存器的访问次数;MSI-X和中断管理的应用;并行&多线程优化,NVMe减少了各个CPU核之间的锁同步操作…
所以基于PCIe+NVMe的SSD,具有非常低的延时。
图1-1 时延对比
l 高性能(Throughput & IOPS)
理论上,IOPS=队列深度/ IO延迟,故IOPS的性能,与队列深度有较大的关系(但IOPS并不与队列深度成正比,因为实际应用中,随着队列深度的增大,IO延迟也会提高)。市面上性能不错的SATA接口SSD,在队列深度上都可以达到32,然而这也是AHCI所能做到的极限。但目前高端的企业级PCIe SSD,其队列深度可能要达到128,甚至是256才能够发挥出最高的IOPS性能。而NVMe标准下,最大的队列深度可达64K。此外,NVMe的队列数量也从AHCI的1,提高到了64K。
PCIe接口本身在性能上碾压SATA,再加上NVMe具有比AHCI更深、更宽的命令队列,NVMe SSD在性能上秒杀SATA SSD是水到渠成的事情。图是NVMe SSD,SAS SSD和SATA SSD性能对比图:
图1-2 NVMe,SAS和SATA SSD性能对比图
l 低功耗
NVMe加入了自动功耗状态切换和动态能耗管理功能,本书的电源管理篇会作介绍。
SATA和NVMe还有其他的区别。
全部0条评论
快来发表一下你的评论吧 !