知识卡片

AHCI到NVMe的协议演进动机

专业/工作 · 550.d

内容

AHCI协议诞生时是专门为机械硬盘的高延迟特性做优化的,它只支持单个命令队列、一次最多接收32条命令,这个限制对需要等待磁头寻道旋转的机械硬盘完全够用。但固态硬盘没有机械寻址过程,可以同时从许多不同位置并行读取数据,这时AHCI的单队列反而成了瓶颈——不是固态硬盘不够快,而是接口协议本身限制了并行度。NVMe直接针对这个矛盾设计:走PCIe总线、支持最多6.4万个队列、每队列6.4万条命令,让硬件的并行能力能被协议真正暴露出来。发散:这是一个”接口协议要为介质特性重新设计”的典型案例——协议从来不是中立的,AHCI的队列模型隐含了”介质是串行访问的”这个假设,一旦假设不成立,协议本身就成了新的瓶颈。

参考来源

《Linux开源存储全栈详解从Ceph到容器存储》第2章《存储硬件与协议》