luoht 发表于 2016-4-9 00:35

科普2:SATA、PCIe、AHCI、NVMe

本帖最后由 luoht 于 2016-4-16 00:57 编辑

IT 界总喜欢发明新名词。而且同一个东西,可能有几个不同的名字。同一个名字,又可能指不同的东西。存贮设备,近年有许多新发展,因此新名词也层出不穷,造成不少混乱。这里班门弄斧整理一下,如有错误,欢迎指正。由于篇幅的关系,太旧的标准就不讨论了,如 IDE、PATA 等。这里主要讨论 SATA、PCIe、AHCI 和 NVMe。(关于 NGFF/M.2,那是物理尺寸标准,请参考 http://www.ibmnb.com/thread-1669981-1-1.html)。

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)

在 IT 界,有一样很重要的东西叫“向下兼容”。SATA 在发展的过程中,也要考虑“向下兼容”因素。譬如,主板上 SATA-3 的接口,可以连接 SATA-2 的硬盘。向下兼容是为了保护用户已有的投资。但在另一方面,也造成很多掣肘,以致发展缓慢。

出于向下兼容的考虑,SATA 可以工作在两种模式:传统模式和 AHCI 模式。传统模式是为了兼容以前的 IDE/PATA。AHCI 模式则比较新,支持 SATA 独有的功能,如热插拔、原生命令队列(NCQ)等。现在基本上所有 SATA 设备都是 AHCI 模式了。(Advanced Host Controller Interface)

大家还记得 Windows 7 时代的 AHCI 问题吧?许多机器的 BIOS 中可以选择传统模式或 AHCI 模式。当时出于兼容性考虑,缺省是传统模式。许多人安装 Windows 7 (最初版)的时候,就是在传统模式下安装的,不需要特殊驱动。如果安装之后,进 BIOS 改成 AHCI 模式,Windows 7 就会蓝屏了,因为没有 AHCI 驱动。如果想在 AHCI 模式下安装,Windows 会找不到硬盘,因为没有驱动。这时候要加第三方驱动。后来 Windows 7 SP1 才在安装盘中加入原生 ACHI 驱动程序。历史总是不断重演,现在 NVMe 也面对同样的问题(下面会讨论)。


--- 华丽分割线 ---

PCIe - Peripheral Component Interconnect Express


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

从上面 SATA 的不同版本可以看到,提速是一个主要任务(当然也有其他的改进)。但进入 SSD 时代后,SATA 的改版速度(由于要考虑向下兼容),已经跟不上传输速度的要求了。这时候,业界就考虑采用 PCIe 来连接存贮设备。但在驱动程序层面,仍然采用 AHCI。这是因为 AHCI 已经非常成熟,广泛被各种操作系统(如 Windows、Linux)所采用。

以下是 PCIe 各版本的对比。注意在同一个版本中,也有不同的速率,取决于产品使用多少条通道(Lane)。



--- 再来一条分割线 ---

NVMe - Non-Volatile Memory Express



前面说过,AHCI 是为了发挥 SATA 的潜能而设计的,当时算是“高大上”了。但当时仍然是机械硬盘统治市场,因此 AHCI 的设计是基于机械硬盘的特性(旋转式磁性盘片)。虽然 AHCI 也可以用于 SSD,但却不能发挥极致。因为 SSD 更像内存,而不像“盘片”。譬如说,机械硬盘,如果磁头错过了一个扇区,那就得等盘片转一圈回来才能访问。SSD 就不存在这个问题。因此,业界重新设计一个新的 NVMe 协议,希望发挥 SSD 的潜能。下面是 AHCI 和 NVMe 的对比:


注意,NVMe 和 AHCI 一样,是逻辑(或者说软件、驱动程序)上的标准。而 SATA 和 PCIe 则更注重于物理层面(电流、电压、触脚等)。NVMe 比较新,Windows 7 没有原生驱动,因此安装的时候需要加第三方驱动。这个和当年 Windows 7 / AHCI 类似。


--- 物理接口 ---

说完了总线和协议,下面说说物理接口。无论采用什么总线和协议,主板总得连接到存贮设备上。这里所说的物理接口,指是是物理尺寸和形状,电气特征不作讨论。接口又分主机端和设备端。由于种类繁多,这里挑几个常见的。

1. SATA 设备端。下图是大家所熟悉的 SATA 硬盘接口(设备端)。大部分 2.5" SSD 也是用这种接口。采用这种接口的,只能使用 SATA 总线。不能使用 PCIe 总线。


2. M.2 接口。(以前叫 NGFF,现在统一叫 M.2 了,大家改改习惯吧)。采用这种接口的 SSD,可以使用 SATA 或者 PCIe 总线(取决于主板和SSD)。如果采用 PCIe 总线,又分 AHCI 和 NVMe 两种协议。因此总共有三种。下面是代表性产品:

a) 三星 850 EVO M.2 接口,SATA 总线,AHCI 协议


b) 三星 SM951 M.2 接口,PCIe 总线,AHCI 协议


c) 三星 SM951 M.2 接口,PCIe 总线,NVMe 协议


3. SATA Express 接口。SATA Express 使用的是 PCIe 总线,向下兼容 SATA 总线。设备端物理接口如下图。给眼神不好的同学提个醒:设备端的触脚是连在一起的,而不是 SATA 那样分成两部分。目前 T460/T560/X260/P50s 可以支持 SATA Express 的设备(东芝品牌的 SSD)。


http://attach.51nb.com/forum/201604/13/230554df60qj0aqlwni0qt.jpg

--- 总结 ---

下图总结了目前不同标准/协议之间的组合。


由于上图可见,AHCI 和 NVMe 是驱动程序层面的。顾名思义,NVMe 只适用于 SSD(SSD和主板也要支持 NVMe 才行)。AHCI 则适用于机械硬盘和SSD。

在主板芯片层面,有 AHCI 控制器和 PCIe 控制器。有趣的是 AHCI 驱动程序“居然”可以使用 PCIe 控制器(中间那条橙色的线)。这个其实是个过渡方案,目的是在利用 PCIe 高带宽的同时,保持对上层软件的兼容性。目前在笔记本上,用这个方案的产品并不多。楼主也不觉得会成为主流。

绿色那个框是主板上的物理接口。参见以上“物理接口”一节。注意即使是同样的物理接口,也可以选择不同的总线和协议(如果主机和设备支持的话)。因此不要以为买了 M.2 的盘就一定是高大上,买了 2.5" 的盘就一定是屌丝。

左下角的 SATA 设备就不用多说了。大家都很熟悉。

右下角的 PCIe SSD 设备则可以有两种不同的控制器(最下面的两个框):AHCI 和 NVMe。因此,同样是 PCIe 的 SSD,也可以有不同的传输效能。

说了这么多,相信大家已经晕了。下面按传输效率做个排序,希望对大家有帮助。

1. PCIe NVMe。
这个是最高大上的。在笔记本市场,根据效能,可以再细分为两个等级:
1A 是 M.2 尺寸的 NVMe(如三星 950 PRO)。可以有四条 PCIe 通道,速度最快。但由于电路板面积限制,容量和发热都是个问题。
1B 是 2.5" 尺寸的 NVMe(如东芝 XG3),采用 SATA Express 接口,可以有两条 PCIe 通道,传输速率较低。由于 2.5" 体积较大,容量和发热比 M.2 要好。在 T460/T560/X260/P50s 上可用。

2. PCIe AHCI。
效能比 1 稍低,是由于 AHCI 协议的滞后性决定的。笔记本上只有 M.2 外形,没有 2.5" 外形。(如三星 SM951 AHCI 版)。

3. SATA AHCI。
效能最低,但兼容性最好,根据外形可分为两类。这两类的传输效能是一样的,无分高低。如果要便宜、容量,则选 2.5"。如果要轻薄,则选 M.2。
3A 是 2.5" 外形的设备,如目前广泛使用的机械硬盘,固态硬盘等。
3B 是 M.2 外形的设备,如三星 850 EVO 的 M.2 盘。

Tottenham 发表于 2016-4-9 00:44

还缺一个pcie接口的没介绍 比如750

HOPE 发表于 2016-4-9 00:45

很好的技术总结帖,建议技术分。

endward 发表于 2016-4-9 01:43

马克收藏技术贴

冰冻的山泉 发表于 2016-4-9 02:04

........性能最高的AIC就这样被忽略了.......

xman981 发表于 2016-4-9 02:27

马克收藏,感谢分享

ganboing 发表于 2016-4-9 04:17

luoht 发表于 2016-4-9 00:35
IT 界总喜欢发明新名词。而且同一个东西,可能有几个不同的名字。同一个名字,又可能指不同的东西。存贮设 ...

其实win10有原生NVMe驱动的

xmchx239 发表于 2016-4-9 05:36

看完這兩篇文章,對新的M.2接口、PCI-E總線、NVMe協議的關係基本上弄清楚了
感謝朋友分享
受益匪淺啊

xmchx239 发表于 2016-4-9 05:56

另外,想問一下樓主
如果是台式機,使用M.2接口或者AIC的走PCI-E總線支持NVMe的SSD
會不會對顯卡使用造成影響?

ganboing 发表于 2016-4-9 06:36

xmchx239 发表于 2016-4-9 05:56
另外,想問一下樓主
如果是台式機,使用M.2接口或者AIC的走PCI-E總線支持NVMe的SSD
會不會對顯卡使用造成 ...

看你的主板是以及你要的这种AIC外形的SSD的具体型号。如果你买的是x8 lane的SSD,而主板只有一个x16给显卡,而剩下的只有x1的宽度,那就不可能都插上。还有的主板有两个x16,但是第二个x16虽然有x16的宽度,但只接了x4的线,这时插上x8的SSD也只能按x4来跑。

xmchx239 发表于 2016-4-9 06:40

ganboing 发表于 2016-4-9 06:36
看你的主板是以及你要的这种AIC外形的SSD的具体型号。如果你买的是x8 lane的SSD,而主板只有一个x16给显 ...

謝謝。如果很完美的插x16的顯卡和x8的AIC的SSD(NVMe)
SSD拷貝時,會不會搶總線帶寬,影響顯卡的發揮?

ganboing 发表于 2016-4-9 07:06

xmchx239 发表于 2016-4-9 06:40
謝謝。如果很完美的插x16的顯卡和x8的AIC的SSD(NVMe)
SSD拷貝時,會不會搶總線帶寬,影響顯卡的發揮?

应该不会,显卡应该是直接接到CPU,然后SSD是接到PCH。不过不同芯片组也不同,我也没有具体研究过。

nbxuli 发表于 2016-4-9 07:12

看了对这些名词了解不少,涨姿势

猪在龙年 发表于 2016-4-9 07:34

清早就看到这样的技术贴,楼主辛苦了!

donggua110 发表于 2016-4-9 07:34

科普好帖

freedown 发表于 2016-4-9 07:48

学习了。

cobra_lee 发表于 2016-4-9 08:08

认真看了一下。接口,总线,协议。原来如此。谢谢

3.14 发表于 2016-4-9 08:13

写的很好,正在装系统蓝屏中。。。。

chaseli 发表于 2016-4-9 08:33

清楚明白

xmchx239 发表于 2016-4-9 09:17

ganboing 发表于 2016-4-9 07:06
应该不会,显卡应该是直接接到CPU,然后SSD是接到PCH。不过不同芯片组也不同,我也没有具体研究过。

謝謝朋友耐心回復

不知道 发表于 2016-4-9 09:26

物理尺寸还有mSATA

lawbreaker 发表于 2016-4-9 09:46

学习了。楼主辛苦!

zwl12502 发表于 2016-4-9 10:01

MARK

masterniuj 发表于 2016-4-9 10:04

有一点楼主忘记提了,就是M.2居然有不同长度的设备,2230, 2242, 2260和2280.
相当的操蛋。

zhh-cn 发表于 2016-4-9 10:34

学习了。

lenovox220t 发表于 2016-4-9 10:55

NVME SM951 256G飘过。。。

叶落随风 发表于 2016-4-9 12:22

感谢分享 学习啦

琦安L 发表于 2016-4-9 12:32

感谢分享,学会了!

黑鹰99 发表于 2016-4-9 12:38

luoht 发表于 2016-4-9 00:35
IT 界总喜欢发明新名词。而且同一个东西,可能有几个不同的名字。同一个名字,又可能指不同的东西。存贮设 ...

长知识,好文章^g^

superbillgates 发表于 2016-4-9 13:11

luoht 发表于 2016-4-9 00:35
IT 界总喜欢发明新名词。而且同一个东西,可能有几个不同的名字。同一个名字,又可能指不同的东西。存贮设 ...

记得早年间PCIe的SSD只能存储数据,而不能启动系统~~~
不知道现在能不能做系统盘了呢?没太用过这两年的新机,貌似目前还没见到过BIOS启动项中有PCIe磁盘的选项~~~:D
页: [1] 2 3 4
查看完整版本: 科普2:SATA、PCIe、AHCI、NVMe