硬盘的总线协议与接口(SATA、NVMe、PCIe)

概述

总是分不清 PCIe、SATA、mSATA、SAS、NVMe、M.2、AHCI?下面这些名词,经常会被混在一起讨论:

  • PCIe
  • SATA
  • mSATA
  • SAS
  • NVMe
  • M.2
  • SATA Express
  • AHCI

  问题不在于定义难记,而在于这些词本来就不在同一层 。 其中有的是总线 ,有的是协议 ,有的是接口。现实交流中又经常跨层使用,所以很容易混淆。

  先给出整篇文章的核心结论:

NVMe / AHCI / SCSI 主要是协议,M.2 / mSATA / SATA Express 主要是接口;PCIe / SATA / SAS 在严格分层时主要属于总线,但在日常语境里也常直接指接口、插槽或整套标准。

1、先把分类说清楚

  本文只按三类讨论:总线、协议、接口

其中,"接口"这一类同时包含连接器和物理外形。继续往下细分当然可以,但不利于建立第一层认知。

名词 建议归类 一句话理解
PCIe 总线(也常被当作接口名) 通用高速总线;日常也常说"PCIe 插槽"
SATA 总线(也常被当作接口名) 存储设备常用串行总线;日常也常说"SATA 接口"
SAS 总线(也常被当作接口名) 企业级存储常用串行总线;日常也常说"SAS 接口"
NVMe 协议 面向 SSD 的高性能协议
AHCI 协议 定义主机如何管理 SATA 控制器和 SATA 设备
SCSI 协议 SAS 中常见的协议
M.2 接口 一种板卡式接口
mSATA 接口 小尺寸 SATA 接口
SATA Express 接口 过渡时期的主机侧接口

  这里需要补一个工程语境中的事实: PCIeSATASAS 这三个词都可能跨层使用。

  • 严格分层时,它们更适合先看成总线
  • 日常说"PCIe 接口 / 插槽""SATA 接口""SAS 接口"也完全正常

2、为什么这些概念容易混?

  因为现实里的产品名,本来就是把这三类东西混在一起命名的。比如:

  • M.2 NVMe SSD
  • PCIe 4.0 NVMe SSD
  • 2.5 英寸 SATA SSD
  • mSATA SSD
  • SAS SSD

3、先看总线:PCIe、SATA、SAS

3.1 PCIe

  PCIe(Peripheral Component Interconnect Express)是通用高速总线 。 它不是存储专用总线,显卡、网卡、SSD 都可以使用 PCIe

  在存储语境里,PCIe 的价值主要体现在:

  • 带宽高
  • 可扩展性强
  • 很适合现代高性能 SSD

  因此,高性能本地 SSD 大多直接使用 PCIe 作为承载总线。 另外,在日常语境里,"PCIe 接口""PCIe 插槽"也是常见说法。

3.2 SATA

  SATA(Serial ATA)是面向存储设备的串行总线 。 在实际使用中,SATA 也经常直接指 SATA 接口或 SATA 设备。

  在消费级 PC 场景里,SATA 常见于:

  • 主板上的 SATA
  • 2.5 英寸 SATA SSD
  • 一根 SATA 数据线

  在今天的消费级存储里,SATA 仍然是主流传统连接方案之一。

3.3 SAS

  SAS(Serial Attached SCSI)是企业级存储常用的串行总线 。 在服务器语境里,SAS 也经常直接指 SAS 接口、SAS 盘或 SAS 背板。

  和 SATA 相比,SAS 更强调:

  • 企业级可靠性
  • 扩展能力
  • 服务器适配性

  一个很实用的工程结论是:

很多 SAS 控制器/背板可以接 SATA 盘,但普通 SATA 控制器通常不能接 SAS 盘。

4、再看协议:AHCI、NVMe、SCSI

4.1 AHCI

  AHCI(Advanced Host Controller Interface)不是总线,而是协议

  • SATA 归到总线
  • AHCI 是协议

  它定义的是:主机如何以标准方式管理 SATA 控制器和 SATA 设备

  因此,SATAAHCI 经常一起出现,但层级不同:前者是总线,后者是协议。

4.2 NVMe

  NVMe(Non-Volatile Memory Express)是面向非易失性存储、尤其是 SSD 的协议

  它解决的问题很明确:让主机以更低开销、更低时延、更高并发的方式访问 SSD 。 因此,NVMe 更强调:

  • 更低时延
  • 更低软件开销
  • 更高并发

  在本地高性能 SSD 场景里,主流组合是:

PCIe 负责传输,NVMe 负责协议。

4.3 SCSI

  SCSI 是一套历史悠久的存储协议。 在今天的很多实际讨论里,SCSI 也常直接指对应的命令协议。

SAS 是总线,SCSI 是它背后常见的协议。

5、最后看接口:M.2、mSATA、SATA Express

5.1 M.2

  M.2(以前也叫 NGFF)是接口。 它不是协议,也不是总线。

  M.2 主要定义两件事:

  • 接口外形
  • 连接器形式

5.2 mSATA

  mSATA小尺寸的 SATA 接口 。 它看上去和一些 Mini PCIe 板卡很像,但电气上并不等于 PCIe

  关键点如下:

  • 它是接口
  • 它使用的是 SATA
  • 它不是 NVMe
  • 它也不是 PCIe SSD

  后来,M.2 逐渐把 mSATA 取代了,因为 M.2 更灵活。

5.3 SATA Express

  SATA Express 需要区分主机侧接口设备侧连接 。本文讨论的,主要是主板上的 SATA Express 主机侧接口。它出现的背景是:

  • 当时 SATA 的速度已经快不够用了
  • SSD 性能又在持续上涨
  • 行业想从 SATA 平滑过渡到更快的方案

  它的历史意义在于:

行业曾经试图在保留 SATA 兼容性的同时,向 PCIe SSD 时代过渡。

  这里要特别澄清两点:

  • SATA Express 不是一条新的总线
  • 如果讨论的是主机侧 SATA Express 接口 ,它同时提供 SATAPCIe 两类连接能力

  后续成为主流的方案是:

  • 消费级高速 SSD:M.2
  • 更偏服务器的高速盘:U.2U.3

  从结果看,SATA Express 是一个短命但重要的过渡方案。

6、总结

  压缩成最核心的几句话:

  • PCIeSATASAS,严格分层时更偏总线 ,但日常也常直接指接口或插槽
  • NVMeAHCISCSI,主要看成协议
  • M.2mSATASATA Express,主要看成接口

  这些词并不在回答同一个问题:

  • 有的在回答"数据走哪条路"
  • 有的在回答"主机和设备怎么说话"
  • 有的在回答"它怎么接"

  把这三件事拆开之后,绝大多数混乱都会消失。