【PConline 杂谈】微星在前段时间放出消息,用户通过更新旗下X99、Z97、H97系列主板BIOS到最新版本,即可获得对NVMe的支持。官方表示,相比目前主流的AHCI,通过新的NVMe标准接入的SSD,可以获得大幅度的性能提升。但是对于大多数用户来说,NVMe接口标准可能并不熟悉,即使有所耳闻,可能也觉得只是在高端专业领域应用得多,与一般民用无缘。但随着SSD性能的提升,SATA接口和AHCI已经逐渐成为存储的瓶颈所在,PCIe和NVMe的组合取代前者只是时间问题。下面笔者就为大家简单解析一下NVMe的特性,以及相较于AHCI究竟有哪些优势。
AHCI就要过时了?新接口标准NVMe浅析
在开始介绍NVMe技术之前,我们不妨回过头来看一下2011年时的SSD产品。当时市面上绝大部分的SSD产品都跟2.5英寸机械硬盘一样,有着同样的外形规格,使用同样的SATA接口,以及同样的接口标准(AHCI)。虽然当时SSD的性能和可靠度也在逐步提高,但仍然难以达到SATA 6Gbps的极限,限制SSD性能发挥的,更多与SSD内部的闪存、主控和固件有关。然而,新技术研发总是具有令人惊叹的前瞻性——2011年3月,NVMe 1.0标准正式发布。
事实上,NVMHCI(非易失性存储主控制器接口)最早在2007年的Intel 开发者论坛上已被提出,并在同年由Intel 领衔成立了NVMHCI工作组。该工作组的成员还包括了美光、戴尔、三星、Marvell、NetAPP、EMC、IDT等公司,而他们的目标,就是要将未来存储产品的性能,从SATA和AHCI之中解放出来。下面我们就来谈一下NVMe的优势所在。
低延迟
因为AHCI标准本身就是为高延迟的机械硬盘而设,虽然SSD发展至今,主流产品依然沿用了机械硬盘时代的那一套,但已经开始不能满足性能的高速发展,特别是在延迟方面。而面向PCIe SSD产品的NVMe标准,降低存储时出现的高延迟,就是其要解决的问题之一。
NVMe PCIe SSD可有效降低延迟
造成硬盘存储时延迟的三大因素,存储介质本身、控制器,以及软件接口标准。由上图可以发现,比起AHCI,NVMe可以大幅度降低控制器和软件接口部分的延迟,原因有以下两个:
NVMe面向的是PCIe SSD,原生PCIe主控与CPU直接相连,而不是传统方式,通过南桥控制器中转,再连接CPU(当然,如果设备是接入到南桥提供的PCIe接口上,那么这部分的延迟也不会降低多少);
NVMe精简了调用方式,执行命令时不需要读取寄存器;而AHCI每条命令则需要读取4次寄存器,一共会消耗8000次CPU循环,从而造成2.5μs的延迟。
但我们从图中也可以看出,即使NVMe有效降低了控制器与软件接口之间的延迟,存储介质本身仍然是造成延迟的最主要原因。撇开延迟有点突破天际的机械硬盘不说,现在SSD使用的NAND闪存本身也会造成约50μs的延迟(不同NAND的延迟差别也比较大,仅以图中例子说明)。要解决存储介质造成的较高延迟,还需要依赖于未来可能应用的诸如PCM、RRAM、MRAM等新式存储器。
IOPS性能提升
队列深度的大幅提升
另外,NVMe的另一个重点则是提高SSD的IOPS(每秒读写次数)性能。如果我们有详细了解过SSD的主控参数,应该知道会有队列深度这个参数。理论上,IOPS=队列深度/ IO延迟,故IOPS的性能,与队列深度有较大的关系(但IOPS并不与队列深度成正比,因为实际应用中,随着队列深度的增大,IO延迟也会提高)。市面上性能不错的SATA接口SSD,在队列深度上都可以达到32,然而这也是AHCI所能做到的极限。但目前高端的企业级PCIe SSD,其队列深度可能要达到128,甚至是256才能够发挥出最高的IOPS性能。而NVMe标准下,最大的队列深度可达64000。此外,NVMe的队列数量也从AHCI的1,提高了64000。
(图表数据来自Tom's Hardware)队列深度基本要达到128以上,才能发挥最高性能
驱动适用性广
主流操作系统已经逐渐开始支持NVMe
NVMe标准的也解决了不同PCIe SSD之间的驱动适用性问题。此前的PCIe SSD,均需要安装驱动程序后才能正常使用,而不同的厂商又各自为政,每个厂商产品都有自己的驱动,SSD也不能作为引导使用。但支持NVMe标准之后,PCIe SSD就可适用于多个不同平台,也不需要厂商独立提供驱动支持。目前Windows、Linux、Solaris、Unix、VMware、UEFI等都加入了对NVMe SSD的支持。(当然,这个优势并不是相对AHCI而言,而是相对于其他需要采用独立驱动的PCIe SSD)
低功耗
最后,在功耗方面,因为原生PCIe可以直接与CPU相连,没有了中间转接过程所产生的功耗;另外在能耗管理上,加入了自动功耗状态切换和动态能耗管理功能,相比起主流的SATA接口SSD也拥有较大的功耗优势。
微星以 Intel P3700 SSD为例,演示AHCI与NVMe性能差别
本文最初提到了微星率先在旗下9系主板中加入了NVMe的支持,但是否意味着支持NVMe的PCIe SSD就会很快在民用平台普及开来呢?笔者个人认为这个答案是否定的,微星加入对NVMe支持具有更多的象征性意义。
首先,也是最重要的一点,目前普通民用级PC完全用不到这么高的性能,即使真让我们使用了,当前的应用体验也不会让我们有那种当初从机械硬盘跨入固态硬盘时代的“快感”。
Intel DC P3700 800GB SSD售价2414美元
支持NVMe的SSD的售价在未来的一段时间内,仍然达不到普通民用可以接受的水平。企业级的Intel P3600 800GB 官方指导价为1569美元,P3700 800GB更是高达2414美元。三星的SM951 M.2 SSD勉强也算是民用级支持NVMe的SSD,但是面向OEM领域,主要用于高端超极本之中,虽然万能的X宝也有卖,不过256GB版本的价格也达到了1799元。
下代CPU直接提供的PCIe 3.0通道数仍为16条
平台方面,目前主流消费级CPU,提供的PCIe 3.0通道数为16条,下一代的Skylake-S同样维持在这个数目。把NVMe SSD接入到与CPU直连的接口中,会抢占显卡的PCIe通道(如果你有安装显卡的话),从而一定程度上降低显卡性能;但如果接入的是南桥提供的接口,延迟和传输带宽也可能会受到影响,也不能完全发挥出NVMe SSD的性能优势。
因此,综上所述,在两年内,NVMe依然很难在主流领域普及开来。但是在SATA 6Gbps和AHCI已经逐渐成为存储设备发展瓶颈的今天,各种走PCIe通道的SSD,以及NVMe标准将会是接下来存储产品的发展趋势。Intel 9系主板就已经加入了可走PCIe通道的M.2接口,100系主板还会有对同是走PCIe通道的SATA Express的原生支持。值得一提的是,100系的中高端芯片组还将支持到PCIe 3.0,通道数量也会有较大提高(9系为8条,100系中Z170为20条,H170为16条),带宽和扩展能力都能达到极大的提升,这无疑也是Intel 为PCIe SSD的普及而铺路。
下代芯片组的扩展能力将会大大提升,PCIe SSD也将走入主流