原文鏈接:https://forum.51nb.com/thread-1670848-1-1.html
IT 界總喜歡發明新名詞。而且同一個東西,可能有幾個不同的名字。同一個名字,又可能指不同的東西。存貯設備,近年有許多新發展,因此新名詞也層出不窮,造成不少混亂。這里班門弄斧整理一下,如有錯誤,歡迎指正。由於篇幅的關系,太舊的標准就不討論了,如 IDE、PATA 等。這里主要討論 SATA、PCIe、AHCI 和 NVMe。(關於 NGFF/M.2,那是物理尺寸標准,請參考 http://forum.51nb.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)。
--- 總結 ---
下圖總結了目前不同標准/協議之間的組合。
由於上圖可見,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 盤。