常见的 SSD 主要分为 SATA和 PCIe 接口,其接口协议对应着 AHCI、NVMe 协议。相比于最原始的 ATA 协议,AHCI 有 2 个特点,第 1 个支持热插拔,第 2 个支持 NCQ(Native Command Queueing)技术,NCQ 最大深度为 32,则使用 fio 进行性能测试时,其 iodepth不得超过 32;
在 HDD 和 SSD 早期,AHCI 控制器接口协议和 SATA 硬盘传输接口足够满足系统的性能需求,性能的瓶颈在硬盘端,随着闪存技术的飞速发展,系统的性能瓶颈由下层(硬盘)转移至上层(接口和协议),SSD 急需要更高效的接口和协议。在此背景下,NVMe横空出世。
NVMe 全称为 Non-Volatile Memory Express,是非易失性存储器标准,运行在PCIe 接口之上的协议标准。
协议的层级关系为:NVMe <---事务层 <--- 数据链路层 <--- 物理层,NVMe作为命令层和应用层协议位于最上层,下面 3 层均为 PCIe。
NVMe协议实际是一个应用层的协议,PCIe规范定义了传输层(事务层)、数据链路层和物理层。
NVMe协议通常情况下是跑在PCIe协议栈上的。
pcie是接口,nvme是协议。
笔记本上pcie接口都是M.2的物理形态,但是M.2固态硬盘不一定都用nvme协议,可能是传统sata硬盘所用的ahci协议。
现在已经有走PCIe通道的M.2接口了,就需要确认有没有NVMe协议相关驱动即可,可以进BIOS看一下,有没有NVMe相关的字眼,比如我的电脑,进到BIOS里面后,会看到如下:
链接:https://www.zhihu.com/question/263723989/answer/1203340571
下面将从 SATA和 PCIe 接口对比、 AHCI 和 NVMe速率对比、SSD 外形尺寸 3 方面对比 NVMe 和 AHCI的不同之处。
- AHCI 和 PCIe 接口对比
项 | AHCI(SATA/SAS) | NVMe(PCIe) |
---|---|---|
背景 | 为HDD而设计 | 为SSD而设计 |
最大队列数量 | 1 | 64k |
最大队列深度 | 32 | 64k |
延迟 | 6ms | 2.8ms |
通信 | 与SATA控制器通信 | 直接与CPU通信 |
- SATA 和 PCIe 速率对比
当前我们使用 Intel Purley 平台服务器,即 I/O 接口的速度分别 SATA 3.0 和 PCIe 3.0。预计2021 年中旬 Intel 量产Ice lake Xeon处理器,带来的变化之一是 I/O 由 PCIe 3.0 切换至 PCIe 4.0,服务器平台也将由 Purley 切换至 Whitley。
项 | SATA 1.0 | SATA 2.0 | SATA 3.0 |
---|---|---|---|
速率 | 150 MB/s | 300 MB/s | 600 MB/s |
类型 | 理论单向速率(GT/s) | 传输方式 | 实际单向速率(Gbps) | 单向带宽receive or transmit |
---|---|---|---|---|
PCIe 1.0 | 2.5 | 8 bit/10 bit | 2 | 250 MB/s |
PCIe 2.0 | 5 | 8 bit/10 bit | 4 | 500 MB/s |
PCIe 3.0 | 8 | 128 bit/ 130 bit | 7.87 | 985 MB/s(约等于 1GB/s) |
PCIe 4.0 | 16 | 128 bit/ 130 bit | 15.75 | 2016 MB/s(约等于 2GB/s) |
- SSD的外形尺寸
NVMe SSD外形接口形态有:PCIe card slot, M.2, and U.2,其中 U.2专为NVMe设计,有2.5英寸/3.5英寸标准尺寸固态硬盘驱动器。
- 举个例子,S4510 1.92TB 和 P4610 1.6TB 参数对比
项 | S4510 1.92TB | P4610 1.6TB |
---|---|---|
光刻类型 | 64-Layer TLC 3D NAND | <-- |
接口类型 | SATA 3.0 6Gb/s |