跳到主内容
快讯直播
AI智模界
AI 词典

NVMe:不是接口形状,是闪存的语言

一句话定义

NVMe(Non-Volatile Memory Express,非易失性内存主机控制器接口规范)是一套专为闪存设计的存储协议。它让主机通过 PCIe 总线直接、并行地和固态硬盘对话,靠极深队列实现高并发。

为什么需要一套新协议

老协议 AHCI(Advanced Host Controller Interface)是给机械硬盘设计的,核心假设是:磁盘有磁头,需要物理寻道,所以一次只干一件事最划算。它只有一条命令队列、深度 32,本质上是「单窗口银行柜台」,前面 32 个人排队,柜员一次服务一个。

闪存没有磁头,随机读和顺序读的速度差不多,“找数据”不再是瓶颈,排队和调度成了瓶颈。NVMe 就是把这一个窗口拆成几万个窗口,每个窗口自己排几万人的队(规范上限是数万条队列、每队列数万条命令),多核 CPU 的多个进程可以各自对着自己的队列说话,不用抢同一把锁。

和相邻概念的区别

最容易混淆的是“形状”和“协议”。M.2、U.2、EDSFF、PCIe 插卡都只是物理形态;同一个 M.2 插槽里,可能插的是走 SATA 的老盘,也可能是走 PCIe 的 NVMe 盘。判断一块盘快不快,看它跑什么协议,不看它长什么样。

AHCINVMe
为谁设计机械硬盘,怕寻道闪存,怕排队
队列1 条,深度 32数万条队列,每队列数万深度
总线主要为 SATAPCIe
典型瓶颈队列与寻道带宽、散热、软件栈

往上一层还有 NVMe-oF(NVMe over Fabrics),把这套命令通过 RDMA、TCP 等网络传输,让远端存储看起来像本地盘;具体支持情况以标准组织和厂商的官方页面为准。

对 AI 从业者的意义

训练时 GPU 每秒要“吃”进大量样本,而 dataloader 在 CPU 侧做读取、解码、增强。这一步的访问模式是大量小文件、高并发随机读,主要看 IOPS 和队列深度,而不是厂商宣传的连续读写带宽。用 SATA SSD 或单队列存储跑多进程读取,很容易把队列打满,表现为 GPU 利用率忽高忽低、iowait 偏高,也就是花钱买的卡在空转等数据。

几个实用动作:先看磁盘利用率和平均队列长度,确认是不是存储堵住;小文件多就打包成 tar、WebDataset、LMDB 之类的大块,减少寻址次数;把热数据放到本地 NVMe,而不是网络盘;写 checkpoint 时大文件顺序写,NVMe 的带宽优势才真正发挥出来。分布式场景下再考虑 NVMe-oF,但那时延迟的大头往往在网络。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。