本文将mark下NVMe HMB(Host Memory Buffer)的相关notes。

Background

现代固态硬盘(SSD)内部通常配备了一定容量的DRAM作为缓存,它的主要作用是存放FTL(Flash Translation Layer)映射表和其他临时数据,以加速SSD的数据处理效率。

FTL映射表记录了逻辑地址到物理地址之间的转换关系,因为NAND闪存的特性决定了其不能像传统硬盘那样进行直接的线性读写,必须通过FTL层来管理块擦除、页编程等操作。由于NAND闪存的每个块或页都有一个唯一的物理地址,当操作系统请求对某个逻辑地址进行读写时,SSD需要查询FTL表以找到对应的物理位置。如果FTL表能存储在快速访问的DRAM中,那么SSD就可以更快地完成地址转换,从而提高整体I/O性能。

在传统的SSD中,DRAM起着至关重要的作用,包括存储元数据、缓冲写入数据、合并短写入为长写入以及在SSD内部为了垃圾回收而移动数据等。由于NAND闪存与传统硬盘的工作机制有显著差异,DRAM有助于弥补两者间的交互问题,并优化整体性能。

DRAM-less SSD是一种不内置独立DRAM芯片的固态硬盘,它依赖于主机服务器的部分DRAM内存来执行原本由SSD内部DRAM承担的任务。这种设计的主要优点在于降低成本和降低功耗,尤其是在大规模数据中心用户中受到欢迎。

What

DRAM-less SSD通过利用主机内存中的Host Memory Buffer (HMB)替代内部DRAM,这使得主机能够更紧密地控制SSD的操作时机和行为。

Spec

NVME协议中对HMB有2个关键参数:

  • HMB建议值(HMPRE):设定实际分配给HMB使用的主机内存容量,为设备提供最优性能的内存分配量
  • HMB最小值(HMMIN):确保设备正常工作的HMB的最低内存分配量,低于这个值可能影响性能

参考资料 :

  1. 探究NVMe SSD HMB应用场景与影响
  2. Exploring Performance Paradigm of HMB NVMe SSD’s
  3. NVMe spec