存储的那些词儿

海量数据的迸发和传统存储技术所面临的性能瓶颈,促进了新型存储技术和系统架构的高速发展。

存储的那些词儿

本文简单介绍下在存储领域出现频率最高的几个词语:SATA、PCIe、AHCI和NVMe(Non-Volatile Memory Express,非易失性存储器标准)。

SATA和PCIe

SATA和PCIe大家应该比较熟悉,这两个都是总线标准。
SATA由IDE/ATA标准发展而来,主要用途是把存储设备连接到主板。SATA的发展主要经历了以下版本:
SATA revision 1.0 (1.5 Gbit/s, 150 MB/s)
SATA revision 2.0 (3 Gbit/s, 300 MB/s)
SATA revision 3.0 (6 Gbit/s, 600 MB/s)
SATA revision 3.1
SATA revision 3.2 (16 Gbit/s, 1969 MB/s)
SATA在发展过程中,考虑了向下兼容的问题,比如主板上SATA-3的接口,可以连接SATA-2的硬盘。但同时,向下兼容也造成了其发展缓慢。
出于向下兼容的考虑,SATA可以工作在两种模式:传统模式和AHCI模式。传统模式是为了兼容以前的 IDE/ATA。AHCI模式则比较新,支持SATA独有的功能,如热插拔、原生命令队列(NCQ)等。

PCIe是另一种总线标准,由AGP、PCI、PCI-x发展而来,而这些总线的发展,主要的动力是显卡的发展。AGP就是Accelerated Graphics Port(加速图像端口)的缩写。由于显卡需要很大的带宽和速度,PCI总线标准就不断升级来满足要求。当然,除了显卡外,PCI总线还用于其他的扩展卡,如网卡(包括有线网卡、无线网卡、3G/4G卡等)。

AHCI和NVMe

AHCI和NVMe是逻辑(或者说软件、驱动程序)上的标准。
从上面 SATA的不同版本可以看到,提速是一个主要任务(当然也有其他的改进)。但进入SSD时代后,SATA的改版速度(由于要考虑向下兼容),已经跟不上传输速度的要求了。这时候,业界就考虑采用PCIe来连接存贮设备。但在驱动程序层面,仍然采用AHCI。这是因为AHCI已经非常成熟,广泛被各种操作系统(如Windows、Linux)所采用。
AHCI是为了发挥SATA的潜能而设计的,当时算是“高大上”了。但当时仍然是机械硬盘统治市场,因此AHCI的设计是基于机械硬盘的特性(旋转式磁性盘片)。虽然AHCI也可以用于SSD,但却不能发挥极致。因为SSD更像内存,而不像“盘片”。譬如说,机械硬盘,如果磁头错过了一个扇区,那就得等盘片转一圈回来才能访问。SSD就不存在这个问题。因此,业界重新设计一个新的NVMe协议,希望发挥 SSD的潜能。下面是AHCI和NVMe的对比:

物理接口

说完了总线和协议,下面说说物理接口。无论采用什么总线和协议,主板总得连接到存储设备上。这里所说的物理接口,指是是物理尺寸和形状,电气特征不作讨论。接口分为主机端和设备端,种类繁多,这里挑几个常见的。
1.SATA接口。采用这种接口的,只能使用SATA总线,不能使用PCIe总线。大部分2.5”SSD就是这种接口。
2.M.2接口。采用这种接口的SSD,可以使用SATA或者PCIe总线(取决于主板和SSD)。如果采用PCIe总线,又分为AHCI和NVMe两种协议。
3.SATA Express接口。SATA Express使用的是PCIe总线,向下兼容SATA总线。

总结

不同存储总线标准/协议之间的组合如下图所示。

可以看出,AHCI和NVMe是驱动程序层面的。NVMe只适用于SSD(SSD和主板也要支持NVMe才行)。AHCI则适用于机械硬盘和SSD。
在主板芯片层面,有AHCI控制器和PCIe控制器。有趣的是AHCI驱动程序“居然”可以使用PCIe控制器(中间那条橙色的线)。这个其实是个过渡方案,目的是在利用PCIe高带宽的同时,保持对上层软件的兼容性。
绿色那个框是主板上的物理接口。注意即使是同样的物理接口,也可以选择不同的总线和协议(如果主机和设备支持的话)。
右下角的PCIe SSD设备则可以有两种不同的控制器(最下面的两个框):AHCI和NVMe。因此,同样是PCIe的SSD,也可以有不同的传输效能。
说了这么多,相信大家已经晕了。下面按传输效率做个排序。
1.PCIe NVMe
这个是最高大上的。在笔记本市场,根据效能,可以再细分为两个等级:
(1)M.2尺寸的NVMe(如三星 950 PRO)。可以有四条PCIe通道,速度最快。但由于电路板面积限制,容量和发热都是个问题。
(2)2.5″尺寸的NVMe(如东芝XG3),采用SATA Express接口,可以有两条PCIe通道,传输速率较低。此外,由于2.5″体积较大,容量和发热比 M.2 要好。
2.PCIe AHCI
效能比1稍低,是由于AHCI协议的滞后性决定的。笔记本上只有M.2外形,没有2.5″外形。
3.SATA AHCI
效能最低,但兼容性最好,根据外形可分为两类。这两类的传输效能是一样的,无分高低。
(1)M.2外形的设备,如三星850EVO的M.2盘。
(2)2.5″外形的设备,如目前广泛使用的机械硬盘,固态硬盘等。

接下来将详细分析NVMe的设计及其带来的性能提升。