NVMe dataset management就是driver给controller的hints(接下来的访问模式),为此controller可以做些优化。

上图中的potion替换为portion

The Dataset Management command is used by the host to indicate attributes for ranges of logical blocks. This includes attributes like frequency that data is read or written, access size, and other information that may be used to optimize performance and reliability. This command is advisory; a compliant controller may choose to take no action based on information provided.

DSM命令通过其“上下文属性”为上层主机(Host)与底层存储设备(Device)之间提供了一种高效的沟通机制,使得主机能够将自身对数据的使用意图(如访问模式、延迟要求、访问频率)传递给存储设备。

  1. 主机提供“提示” (Hints):主机不仅仅是发出简单的读写命令,而是可以提供关于数据如何被使用的“提示”。
  2. 设备实现智能优化:存储设备的Firmware可以利用这些来自上层的“提示”信息,执行针对性的优化操作。
  3. 具体的优化方向
    • 性能提升:通过对顺序访问的预取和对低延迟数据的优先处理,来提高吞吐和降低延迟。
    • 耐久度与效率提升:通过区分热数据和冷数据进行智能的数据放置(data placement),有效降低写放大(WAF),这对于SSD等闪存设备至关重要,可以延长其使用寿命并保持稳定性能。
      • 热数据(频繁更新的数据)的生命周期很短。通过将热数据集中写入同一个物理块,可以预见块内的所有数据页都会在短时间内相继变为无效。
      • 理想的回收场景:当一个“热数据块”中的所有数据都因主机更新而变成无效数据后,控制器就可以直接擦除整个块,而无需进行任何数据迁移。这是一种零成本或近乎零成本的垃圾回收,极大地提高了效率。

参考资料:

  1. An NVM Express Tutorial
  2. NVMe spec
  3. NVMe DSM技术优化解读
  4. NVMe 内存语义的实现与价值,为SSD提速续命
  5. Optimizing SSD Performance for Edge AI NVMe Dataset Management Insights