高级特性 - 深入分析 Set Features 命令中的特性标识符 (Feature Identifiers) (第301页)
NVME2.0协议解读 2 min read

高级特性 - 深入分析 Set Features 命令中的特性标识符 (Feature Identifiers) (第301页)

Blog Author

深入分析 Set Features 命令中的特性标识符 (Feature Identifiers)

Set Features 命令中,特性标识符 (Feature Identifier, FID) 用于指定需要配置或查询的设备特性。每个特性有一个唯一的 FID,用于标识其对应的功能或配置。

特性标识符的基本概念

  • 当前设置在电源周期和重置后的持续性
  • 某些特性可能支持在设备重启和电源切换后保持当前设置。这意味着这些设置在控制器重新启动后会被保存,而无需重新配置。
  • 例如,Arbitration 特性(FID 01h)不支持跨重启持续性,因此每次控制器启动后可能需要重新配置。

  • 是否使用内存缓冲区进行属性设置

  • 一些特性需要通过内存缓冲区来配置或获取其属性。这些特性在执行时会使用一个内存缓冲区,来传递相关数据。
  • 例如,Asynchronous Event Configuration(FID 0Ah)使用内存缓冲区来设置相关配置。

特性标识符解析

  1. FID 01h - Arbitration
  2. 持续性:不支持跨重启保持设置。
  3. 内存缓冲区:不使用内存缓冲区。
  4. 描述:该特性用于配置控制器的仲裁机制。

  5. FID 02h - Power Management

  6. 持续性:不支持跨重启保持设置。
  7. 内存缓冲区:不使用内存缓冲区。
  8. 描述:该特性配置与电源管理相关的功能。

  9. FID 03h - Temperature Threshold

  10. 持续性:跨电源周期保持设置。
  11. 内存缓冲区:不使用内存缓冲区。
  12. 描述:设置温度阈值,用于控制器的温度监控。

  13. FID 0Ch - Autonomous Power State Transition (APST)

  14. 持续性:不支持跨重启持续性。
  15. 内存缓冲区:使用内存缓冲区来配置。
  16. 描述:配置自动电源状态转换的行为。

  17. FID 0Eh - Host Memory Buffer

  18. 持续性:不支持跨重启持续性。
  19. 内存缓冲区:使用内存缓冲区配置。
  20. 描述:配置主机内存缓冲区的相关设置。

  21. FID 17h - Host Behavior Support

  22. 持续性:跨电源周期保持设置。
  23. 内存缓冲区:不使用内存缓冲区。
  24. 描述:支持主机行为配置。

  25. FID 7Dh - Enhanced Controller Metadata

  26. 持续性:不支持跨重启持续性。
  27. 内存缓冲区:使用内存缓冲区配置。
  28. 描述:配置增强型控制器元数据。

  29. FID 80h - Software Progress Marker

  30. 持续性:跨电源周期保持设置。
  31. 内存缓冲区:不使用内存缓冲区。
  32. 描述:标记软件进度,用于跟踪操作进度。

  33. FID 83h - Reservation Notification Mask

  34. 持续性:跨电源周期保持设置。
  35. 内存缓冲区:不使用内存缓冲区。
  36. 描述:配置与预留通知相关的掩码。

特性更新与命令行为

  • 无法更改的特性
  • 如果一个特性无法被更改,且试图执行 Set Features 命令更改该特性值时,如果当前的值与请求的值不同,控制器将中止该命令,并返回 Feature Not Changeable 状态码。
  • 如果请求的值与当前值相同,控制器可以成功完成该命令,或中止该命令并返回 Feature Not Changeable 状态码。

  • 特性持久性

  • Current Setting Persists Across Power Cycle and Reset 列指示特性是否支持在电源周期和重置后保持设置。例如,Keep Alive Timer(FID 10h)支持跨重启保持设置。

  • 内存缓冲区支持

  • 某些特性(如 Asynchronous Event Configuration)使用内存缓冲区来传递和配置特性数据。这意味着命令的执行过程中可能需要一个内存区域来处理这些特性。

总结

Set Features 命令在 NVMe 控制器中发挥着至关重要的作用,允许主机配置控制器的多种功能特性。通过该命令,主机可以灵活地调整控制器行为,确保设备按照特定要求进行工作。需要注意的是,某些特性不可更改,且特性的持久性和内存缓冲区的使用为特性的配置提供了灵活性和持久性管理。在处理这些特性时,主机需要根据控制器支持的功能来合理选择和配置各项特性。