NVMe SSD中的主机内存缓冲区是什么,它如何工作?

NVMe 1.2 规范引入了一个新功能,称为 主机内存缓冲区 或HMB(不要与HBM图形内存混淆),有望显着提高PCIe NVMe SSD的性能。 在本文中,我们解释了它的含义,工作原理以及如何管理以提高具有此功能的SSD的性能。

大多数现代SSD都包含 内置DRAM内存 芯片,通常带有 1GB 内存每1TB的存储空间 。 这 内存 通常专用于跟踪NAND存储器中存储的每个逻辑信息块(每个写入周期中发生变化的信息)的物理位置,并在每次执行读取操作时进行查询。

NVMe SSD中的主机内存缓冲区

我们已经讨论过的标准DRAM与NAND之比为RAM提供了足够的RAM。 SSD 控制器使用非常敏捷的快速查找表,而不是使用速度慢得多的更复杂的数据结构。 这大大减少了工作量 SSD控制器 必须执行输入和输出操作,这是保持一致性能的关键。

NVME SSD EX900 Pro

非DRAM SSD可能更便宜甚至更小,但是由于它们只能将数据索引表存储在内部闪存中,因此其性能会受到严重影响。 在最坏的情况下,由于每个读取操作将需要一个操作来知道物理数据在哪里,而另一个操作需要读取数据本身,因此读取延迟可能会加倍。

什么是主机内存缓冲区?

正如我们在一开始所说的那样,NVMe 1.2规范引入了这项称为主机内存缓冲区或HMB的新功能。 此功能利用PCI-Express接口的DMA功能来允许SSD使用系统中的DRAM存储器的一部分 中央处理器 而不是要求SSD带有自己的DRAM。

换句话说,SSD使用系统RAM的一小部分来执行这些操作,并且由于其并非旨在“替代” SSD的内部DRAM,而是为了对其进行补充,因此实际上不会从系统中删除大量RAM。 ,只有几十个数量级(小于100 MB),足以满足您的需求。

主机内存缓冲区SSD

的确如此 通过PCIe访问DRAM 它比访问设备本身中的DRAM芯片要慢得多,但是即使这样,从SSD闪存中读取信息时,性能也得到了显着提高。

HMB如何影响性能?

正如我们之前所解释的,提高性能的最佳选择是SSD拥有自己的DRAM,因为访问速度会更快。 第二种选择是通过主机内存缓冲区,它通过PCIe到系统RAM,最糟糕的选择是什么都不做,必须使用高速缓存SSD自己的闪存。

通过测量SSD的随机读取性能,同时增加工作量(同时主动访问的数据量),可以清楚地看到HMB缓存的效果。

主机内存缓冲区Topshiba RC100

可以清楚地看到,在工作负载达到24 GB之前,SSD的性能保持非常非常稳定,并且仅从该数字开始下降。 但是,在禁用HMB的情况下,性能逐渐下降,并且越来越多。