高级特性与优化 - 第312页
NVME2.0协议解读 1 min read

高级特性与优化 - 第312页

Blog Author

NVM Express® Base Specification, revision 2.0b 中,关于 TimestampKeep Alive Timer 功能的细节分析如下:

Timestamp(时间戳)功能

Set Features — 数据结构(Figure 339)

  • Timestamp:
  • 该字段记录自 1970年1月1日 UTC午夜 起经过的毫秒数。这是一个全球统一时间(UTC)格式的时间戳。
  • 主机通过 Set Features 命令设置该时间戳值。

Get Features — 数据结构(Figure 340)

  • Timestamp:
  • 如果 Timestamp Origin 字段清除为 000b,则时间戳从 Controller Level Reset 开始计算,即从控制器复位时开始计时,值为自该复位后的毫秒数。
  • 如果 Timestamp Origin 字段设置为 001b,则时间戳值是主机通过 Set Features 命令设置的时间戳值加上自设置时间戳以来经过的时间(以毫秒为单位)。
  • 若时间戳值超过了 2^48,则会返回 Timestamp 值模 2^48,防止溢出。

  • Synch:

  • Synch = 0:表示控制器自时间戳初始化以来持续计算毫秒数。
  • Synch = 1:表示控制器可能在某些特定的非工作状态(例如,低功耗模式)中停止计时,因此这些时间间隔不被控制器计入。

  • Timestamp Origin:

  • 000b:表示时间戳字段自 Controller Level Reset 后初始化为 0。
  • 001b:表示时间戳字段由主机通过 Set Features 命令初始化。

Keep Alive Timer(保持活动定时器)功能

Keep Alive Timer 控制

  • Keep Alive Timer 是用于监控控制器和主机是否处于活动状态的机制。该功能确保主机和控制器在长时间无操作的情况下不会进入非活动状态,保证通信的持续性。

Get Features — 数据结构(Figure 341)

  • 当主机发出 Get Features 命令请求保持活动定时器的状态时,返回的完成队列条目将包含相关的属性信息。具体字段在 Figure 341 中定义。

  • Keep Alive Timer 用于定期检测控制器和主机之间的活动状态。当主机发出命令并等待响应时,定时器会重置;如果在规定时间内没有命令交换,定时器超时后,系统可以判断设备处于非活动状态。

总结与应用

  • 时间戳(Timestamp)功能 提供了一种确保系统时间一致性的机制,特别是在控制器复位和重启时。它允许主机同步控制器时间,同时考虑到在非操作状态下计时可能会暂停的特殊情况。通过该功能,主机可以确保时间计算的准确性,避免系统时钟的漂移。

  • Keep Alive Timer 是一种常见的机制,确保系统在无活动时仍保持活跃状态。通过定时器,主机和控制器之间可以及时检测和恢复通讯,防止因长时间无操作而导致连接丢失。

这些功能对于保障数据一致性、连接稳定性以及系统运行中的时间同步至关重要,尤其是在高性能存储设备和大规模分布式系统中,能够大大提升系统的可靠性与效率。