控制器寄存器与属性配置 - 第78页
NVME2.0协议解读 1 min read

控制器寄存器与属性配置 - 第78页

Blog Author

深入分析 NVM Express® Base Specification, revision 2.0b

3.1.3.24 PMRSTS – Persistent Memory Region Status

这个属性提供持久内存区域的状态信息。只有当控制器支持持久内存区域功能时,才会启用此属性。如果不支持,则此属性会被清除为 0h

字段解析: - CBAI (Controller Base Address Invalid):如果控制器未能启用持久内存区域的控制器内存空间(例如指定的 64 位基础地址无效),则该字段会被设置为 1。如果该条件不成立,则该字段为 0

  • HSTS (Health Status):当持久内存区域准备好时,该字段指示持久内存区域的健康状态。如果持久内存区域未准备好,则该字段始终为 000b。健康状态值包括:
  • 000b:正常操作(持久内存区域正常工作)。
  • 001b:恢复错误(持久内存区域正常但未恢复正确的数据,可能缺失之前的内容)。
  • 010b:只读(持久内存区域为只读,写操作不会更新内存,但读取操作正确)。
  • 011b:不可靠(持久内存区域不可靠,可能返回无效数据,或者内存写入失败)。
  • 100b - 111b:保留状态。

  • NRDY (Not Ready):如果该位为 1,则表示持久内存区域未准备好处理 PCI Express 读写请求。如果该位为 0,并且 PMRCTL.EN 设置为 1,则表示持久内存区域已准备好接受和处理请求。

  • ERR (Error):如果该字段不为 0,则表示在之前的内存写入操作中发生了错误,可能导致部分写入未能成功。该值在 PCI 功能重置之前不会变为 0


3.1.3.25 PMREBS – Persistent Memory Region Elasticity Buffer Size

这个属性定义了持久内存区域弹性缓冲区的大小。若此属性的值为 0h,则表示主机无法获取有关持久内存区域弹性缓冲区存在或大小的信息。


总结

  • PMRSTS 属性 提供了有关持久内存区域的状态信息,包括健康状态、是否准备好接受请求、错误信息等。它对于确保数据的完整性和内存操作的正确性至关重要。

  • PMREBS 属性 定义了持久内存区域弹性缓冲区的大小,若控制器不支持该缓冲区,则该属性值为 0h

这些属性帮助确保持久内存区域的健康状态和操作的可靠性,同时允许主机在执行读写操作时做出相应的判断和处理。