高级特性与优化 - 第311页
在 NVM Express® Base Specification, revision 2.0b 中,关于 Host Memory Buffer (HMB) 和 Timestamp 功能的细节如下:
Host Memory Buffer (HMB) 完成队列条目
完成队列条目 Dword 0(Figure 337)
- Enable Host Memory (EHM):
- EHM = 1:表示主机内存缓冲区已启用,控制器可以使用该缓冲区。
- EHM = 0:表示主机内存缓冲区已禁用,控制器不能使用该缓冲区。
Host Memory Buffer 属性数据结构
在 Host Memory Buffer 启用时,相关的内存和描述符信息以数据结构的形式传输。具体字段如下:
Host Memory Buffer 属性数据结构(Figure 338)
- Host Memory Buffer Size (HSIZE):
-
表示主机内存缓冲区的大小,单位为内存页大小单位(通常为4KB或其他)。
-
Host Memory Descriptor List Address Lower (HMDLAL) 和 Host Memory Descriptor List Address Upper (HMDLAU):
-
这些字段提供 Host Memory Descriptor List 的物理地址,分为低32位(HMDLAL)和高32位(HMDLAU),并要求地址必须是16字节对齐。
-
Host Memory Descriptor List Entry Count (HMDLEC):
-
指定 Host Memory Descriptor List 中有效条目的数量,条目数由主机定义,具体条目描述主机内存缓冲区的地址和大小。
-
Reserved:
- 保留字段,供未来扩展使用。
Timestamp(时间戳)功能(Feature Identifier 0Eh)
时间戳特性(Timestamp Feature)
- 时间戳设置与获取:
- 通过 Set Features 命令设置时间戳值,控制器会记录当前时间并根据经过的时间进行更新。
-
如果通过 Get Features 命令请求当前值,控制器会返回当前时间戳值。
-
时间戳恢复:
- 如果控制器支持时间戳保存功能(例如,具有保存时间戳的能力),则在系统重启后,时间戳值将恢复为重启前保存的值。
-
如果时间戳无法恢复(例如,重启时清除时间戳),时间戳值将重置为 0。
-
时间戳的准确性:
- 时间戳的准确性可能会受到供应商特定因素的影响,特别是控制器是否在某些非工作状态下继续计时。
- 如果控制器在非工作状态下停止计时,则 Synch 位会被设置为
1,表示时间戳值没有持续更新。
时间戳命令数据结构(Figure 339 和 Figure 340)
- Set Features命令:
-
使用 Set Features 命令设置时间戳值,传输的数据结构包括时间戳的具体值。
-
Get Features命令:
- Get Features 命令返回当前时间戳值及其同步状态,数据结构中会包含与时间戳相关的信息,如 Synch bit(同步标志)和 Timestamp Origin(时间戳起点)。
重要注意事项:
- 时间戳与安全性:
-
时间戳不应被用于安全应用。它更多用于一般的应用场景中,例如计时、监控等。
-
时间戳与控制器重置:
-
如果控制器在进行控制器级别重置后能够保持时间戳值,则 Timestamp Origin 字段也会被保留。若重置导致时间戳值丢失,则时间戳会被清除为
0h。 -
命令和同步:
- 控制器应确保在 Set Features 命令完成后,更新时间戳值,以便在 Get Features 命令中返回准确的值。
总结:
- Host Memory Buffer (HMB) 的实现涉及对内存描述符的精确管理,每个内存地址和大小对都需要按照控制器支持的内存页面大小进行对齐。
- Timestamp 功能 提供了一个系统级的时钟同步机制,可以在控制器中设置、更新和获取时间戳。通过该功能,主机可以管理和调整时间戳,确保系统在重启和运行过程中能持续保持时间追踪。
这些功能是NVM Express规范中为提高存储设备性能和管理能力而设计的重要机制。