高速固态硬盘接口NVMe
2015-08-11
NVMe(NVM Express)
NVMe接口极大地增强了闪存存储器的性能,为此,固态硬盘必须安装类似Marvell88NV1140这样完全兼容NVMe命令的新一代控制器。
固态硬盘接口速度对比
相对于三星850 Pro之类很好的AHCI固态硬盘,英特尔的NVMe原型能够实现更高的传输速率 1 和每秒执行更多次的输入、输出操作 2 。
直接连接CPU的存储装置
NVMe的设计可以充分发挥固态硬盘的性能:数据流直接通过PCI-E在存储器芯片与CPU之间传输,并且可以通过多个PCI-E通道并行传输数据流。相反AHCI则是为缓慢的磁盘进行的优化:适配器将确保通过SATA线传输的数据能与缓慢的磁盘保持同步,而这只能成为固态硬盘的瓶颈。
比较NVMe和AHCI
与AHCI不同,NVMe为多核CPU和通过PCI-E并行传输数据进行了优化:每个核心的队列中保存和读取的命令分开,这可以缩短反应时间,提高数据传输速度。
NVMe固态硬盘:英特尔公司的DC P3700已经可以在服务器上使用,可实现2.8GB/s和1.9GB/s的读取和写入速度。
SATA线缆和AHCI接口是影响固态硬盘性能的主要瓶颈,新的NVM Express(NVMe)接口将让大家真切体验到闪存的速度究竟有多快。
固态硬盘是目前速度极快的一种数据存储设备。众所周知,如果想加快Windows操作系统的速度,那么只需购买一个固态硬盘并将其作为系统驱动器即可,这对系统速度的提升可以说是立竿见影的。但是,并不为众人所知的是,固态硬盘中的闪存性能实际上并没有得到充分的发挥,如果不是通过速度缓慢的SATA电缆连接系统,固态硬盘的速度可以更快。SATA接口的速度被限制在600MB/s,此外,SATA涉及到另一个高级主机控制器接口(Advanced Host Controller Interface,简称AHCI),这是一个诞生于2004年的技术标准,落后于当前相关的电脑技术有十多年。当年英特尔制定这一技术标准主要服务于通过磁性在金属盘上存取数据的机械硬盘,与使用闪存存储数据的固态硬盘完全毫无关系。
使用AHCI标准,硬盘驱动器控制器不能直接发送数据给CPU,数据必须经由主机总线适配器(AHCI HBA)中的芯片组进行迂回。在这里主机总线适配器主要起着让速度极快的CPU和速度缓慢的磁盘之间能够保持数据同步的作用,而实际上固态硬盘并不需要它。对于固态硬盘来说,最佳的方案是直接与CPU通信,并且尽可能地采用并行传输让数据传输速度达到其极限。由于AHCI的缘故,固态硬盘在近年来一直给人一种发展迟缓的感觉:2011年最好的固态硬盘中三星840 Pro的传输速率达到520MB/s,相对于比当前同系列产品的最新型号850的速度只慢了20MB/s。可以预料,接下来该系列新一代产品860 Pro推出时,其传输速率并不会有太大的改变。这种僵局只有在使用一个新的接口时才有可能被打破。能够打破这一僵局的接口将在2015年亮相:NVM Express(NVMe)是专为闪存存储设备设计的接口,它的设计完全不会对固态硬盘的速度造成影响。
GB/s级的传输速率
用于服务器的NVMe控制器目前已经投入使用,并且Marvell在2015年年初已经推出了一款型号为88NV1140的控制器,这款面向个人用户的控制器更小巧、更节能、更高速,并为移动设备进行了优化。而另一款Marvell的控制器88SS1093,则是用于台式电脑的产品,它能够支持固态硬盘以3GB/s的速率读取数据。但是,要实现这一速度,固态硬盘不可以继续使用SATA接口,而必须切换到PCI-E接口。一直以来,PCI-E主要用于显示卡,但实际上固态硬盘也可以从中获益:一个PCI-E连接可以直接与CPU通信,并且它包含几个通道。因此,通过PCI-E连接固态硬盘可以在一个通道上传输数据到CPU。并通过另一个通道接收来自CPU的数据,也就是说,固态硬盘可以同时发送和接收数据。
目前,已经有几个可以用于台式电脑的PCI-E项目,例如RevoDrive 350可以通过8个通道传输数据,然而由于Revodrive仍然通过AHCI来传输数据,所以虽然通过4个控制器组成磁盘阵列,但是它的传输速率只能够达到1.5GB/s,与NVMe相比这明显不是一个最佳的方案。
为多核系统优化
读取和写入操作的执行通常是由许多独立的步骤组成的,每一个步骤通常可以读取或改写4K字节的数据块。操作系统的输入、输出调度器和硬盘驱动器上的控制器负责与CPU协同完成这些操作,对于AHCI来说,如果有必要,它可以通过指令队列来执行输入、输出的操作,最多可以使用32个指令队列。一般来说,这种级别的工作强度可以让一个CPU内核保持忙碌的操作状态。然而,AHCI无法将工作分配到多个CPU内核,因为这需要能够同步多个核心的队列并匹配已经完成的操作,操作方式完全不同。而且,AHCI仅为调度程序提供一个中断用于启动和结束数据的传送。
多核CPU、多PCI-E通道和固态硬盘控制器同时控制多个存储器芯片,这就是目前新一代电脑的现状。为确保这一组合完美地执行操作,NVMe增加了队列的数目和每个队列的命令数量到65536。此外,NVMe还引入了两种不同类型的队列:提交队列中的是固态硬盘控制器必须执行的命令,完成队列中的则是已完成的任务。队列对被分配给每一个核心,确保多核CPU可以满负荷运行。此外,NVMe还允许将多个队列对分配给每一个核心,每一个队列对具有不同的优先级。同时,调度程序被允许发送中断信号到每一个核心,这些措施不仅优化了数据的传输,也减少了在读取和写入操作启动时的延迟。
Marvell公司目前正等待面向个人用户的固态硬盘能够采用其NVMe控制器。华硕等部分主板厂商已经在UEFI安装了NVMe驱动程序,但更值得期待的是英特尔为主板准备的下一代芯片Skylake。这款芯片预计将在2015年秋季推出,该芯片中英特尔增加了PCI-E通道的数量,以确保有足够的带宽可以满足固态硬盘和显示卡的需求。此外,在PCI-E 3.0的支持下,每通道速度可以高达1GB/s。迄今为止,英特尔公司的处理器只支持PCI-E 2.0,每通道速度为500Mb/s。此外,2015年夏季,英特尔还计划推出支持NVMe和PCI-E 3.0的750系列固态硬盘,这将会是新一代高端电脑使用的超高速固态硬盘。