解读NVMe高性能低延迟的原因

在上一篇《NVMe的目标:释放闪存潜能》对NVMe的规范发展以及标准化给PCIe闪存市场带来的一些好处做了介绍,这篇文章则进一步讨论下NVMe和PCIe搭配打造的PCIe闪存卡在性能上具有优势的主要因素。

在上一篇《NVMe的目标:释放闪存潜能》对NVMe的规范发展以及标准化给PCIe闪存市场带来的一些好处做了介绍,这篇文章则进一步讨论下NVMe和PCIe搭配打造的PCIe闪存卡在性能上具有优势的主要因素。

最新的SATA接口带宽理论值为6Gbps(750MB/s),最新的SAS接口带宽为12Gbps,而PCIe每个通路支持1GB/s(PCIe Gen3 x1),并且拥有更好的可扩展性和更低的延迟(即将发布的PBlaze4 PCIe闪存卡可以做到4.0/2.5GB的读/写性能)。这样一个简单的对比说明若要闪存的性能优势充分发挥,PCIe接口是必须的。而NVMe则是将PCIe与闪存以及PCIe闪存卡与主机能够更好的协作。

解读NVMe高性能低延迟的原因

上图简单展示了几种硬盘/闪存卡的延迟以及指令的路径,简单的说,PCIe从硬件接口的层面缩短了闪存与CPU之间的距离,响应延迟得到了缩短,而NVMe则通过优化从软件层面缩短了指令从CPU到SSD的路径。PCIe、闪存与NVMe 三者的结合像是将接口、存储介质以及接口的协议标准都重新定义了一次,形成了新的存储设备标准。

解读NVMe高性能低延迟的原因

上图是一张AHCI与NVMe对比的图,信息来自www.sata-io.org的一篇名为《A Comparison of NVMe and AHCI》的文档,当下这幅图被广泛用于各种介绍NVMe优势的演讲中。

这里对上图所列的主要对比项及结果做以说明。首先是最大的队列深度。AHCI最大队列深度为32,而NVMe可以支持64k个队列,同时每个队列深度最大为64k。一个磁盘的IOPS只能做到数百(即便是15000转高速磁盘也是这个量级),而一张PCIe闪存卡可以轻松达到数十万IOPS的性能,可以看出,NVMe做了足够长远的考虑,在队列数和深度上已经超越了AHCI数个数量级。支持更大的队列深度和更多的队列数意味着存储设备的性能不会在接口上遇到瓶颈。

第二是无缓存命中时所需要消耗的时钟周期(每2000个时钟周期为1个单位),由于NVMe并没有读取不可缓存寄存器的操作,所以这里会比AHCI减少一部分缓存寄存器的环节,不同的情况可以节省4到7次寄存器操作;第三是MXI-X和中断管理,这项功能只存在于NVMe中,他能够确保多个CPU核心来处理IO中断;第四项是并行&多线程。NVMe对充分对多核优化,减少了各个CPU核之间的锁同步操作;第五是4K指令的效率。AHCI命令参数需要两个连续的主机DRAM读取操作,NVMe的命令参数则存在单个64B中。

从上述的介绍中,可以看到NVMe联盟眼光考虑的非常长远,NVMe被打造成了未来十年都不会落后的非易失性存储接口标准,他摒弃了很多以往存储接口转为磁盘做的设计,并针对固态存储的特点作了很多优化。值得一提的是NVMe并非只为闪存设计,也将适用于后续的各种非易失存储介质。不仅是针对AHCI这样的接口标准,NVMe有非常多的优势,对于其他的接口标准,也有一定的优势。上图来自IDF2013的一个演讲文档,上图对比了某企业级SSD以及NVMe SSD的效率和功耗。

解读NVMe高性能低延迟的原因

这个对比尝试说明两个问题,首先是NVMe原型提供更低的单I/O时钟,而同时提供更高的负载性能;其次更低的单I/O时钟间接反映了效率和低功耗(CPU和系统能更快的进入休眠状态)。需要指出的是这个对比在disk端中企业级PCIe SSD应该是闪存,而NVMe SSD则使用了内存,但是用于说明NVMe具有更少的主机CPU占用还是很合适的。

NVMe作为一个为非易失性存储介质而生的接口规范,在性能、端到端数据保护、命令的执行效率等方面都做了长远的考量。加上包括Intel、Memblaze、Redhat、DELL、等众多数据中心不同环节上的厂商支持,可以说整个产业环境都是对NVMe发展非常有利的。为了将PCIe闪存产品做的更加容易维护,SFF-8639接口出现,并被越来越多的服务器厂商支持。在下篇文章中,将对SFF-8639以及其热插拔的特点进行一个详细的介绍。

来源:业界供稿

0赞

好文章,需要你的鼓励

2015

06/11

18:50

分享

点赞

邮件订阅
白皮书