高级特性 - 温度阈值功能(FID 04h)分析 (第304页)
在 NVM Express® Base Specification, revision 2.0b 中,Set Features 和 Get Features 命令的部分特性涉及如何配置和查询温度阈值、写缓存控制、队列数量等关键功能。这些功能对于设备的性能优化和稳定性至关重要,尤其是在高负载环境下。
温度阈值功能(FID 04h)分析
在之前的讨论中,我们已经详细了解了与温度相关的阈值功能。现在,我们继续分析一些其他特性的细节:
温度阈值选择(TMPSEL)
Threshold Temperature Select (TMPSEL) 字段用于选择特定的温度传感器或复合温度传感器,进而设定其温度阈值。每个温度传感器都有一个 过温阈值 和 低温阈值,当温度达到或超过这些阈值时,设备会采取相应的防护措施。
TMPSEL 字段的值
- 0h:复合温度(Composite Temperature),表示整个设备的温度。
- 1h - 8h:分别表示8个不同的温度传感器,主机可以选择其中一个传感器的阈值进行设置。
- Fh:选择所有已实现的温度传感器。此选项用于
Set Features命令,在Get Features命令中则保留。
温度阈值(TMPTH)
TMPTH字段用于设置所选温度传感器的阈值值,单位是 开尔文(Kelvins)。- 该阈值定义了温度超过或低于某个值时,系统会采取的行动,如触发警告或调整设备行为。
挥发性写缓存功能(FID 06h)
功能描述
挥发性写缓存(Volatile Write Cache, VWC)是一种缓存,用于提高写入操作的性能。此缓存会在掉电时丢失,因此被称为“挥发性”缓存。如果控制器支持挥发性写缓存,那么主机可以通过 Set Features 命令启用或禁用该缓存。
- VWC 启用(WCE):通过设置
WCE字段,主机可以启用或禁用挥发性写缓存。 WCE = 1:启用挥发性写缓存。WCE = 0:禁用挥发性写缓存。
操作说明
- 如果控制器没有挥发性写缓存,则
Set Features命令会返回Invalid Field in Command状态。 - 如果控制器能够保证数据在掉电时被写入非挥发性介质(例如,通过电池供电或其他冗余机制),则该缓存不再被视为挥发性缓存,因此不受此功能的控制。
队列数量功能(FID 07h)
功能描述
Number of Queues 功能用于设置主机请求的队列数目。该功能只能在初始化阶段调用,且在创建任何 I/O 提交队列或完成队列之前。该功能可以通过 Set Features 命令进行设置。
- 初始化阶段设置队列数:如果已经创建了 I/O 提交队列或完成队列,再调用
Set Features命令将会导致Command Sequence Error错误。 - 队列数量分配:一旦队列数量被分配,重置后不会更改。
队列数量的设置(Set Features)
Set Features命令会通过Command Dword 11来指定队列数量。- 该命令配置的队列数量会影响控制器的 I/O 处理能力,尤其是多队列并发操作时的性能。
获取队列数量(Get Features)
- 当主机使用
Get Features命令查询队列数量时,Command Dword 11字段将被忽略,结果通过Dword 0返回。
总结
- 温度管理:温度阈值的配置对设备的稳定性至关重要,主机可以动态设置和查询温度传感器的阈值,确保设备在过热或过冷时采取保护措施。
- 挥发性写缓存:通过
Set Features命令控制挥发性写缓存的启用和禁用,对于写入性能有很大影响。 - 队列数量管理:在设备初始化时设定队列数量,确保 I/O 操作能够高效执行,特别是在处理大量并发操作时。
通过理解这些特性,用户可以更精确地控制和优化 NVM Express 控制器的行为,从而提高系统的可靠性和性能。