ACPI 中文文档ACPI 中文文档
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
  • 第 11 章

    • 总览
    • 11.1. 热控制
    • 11.2. 冷却偏好
    • 11.3. 风扇设备
    • 11.4. 热对象
    • 11.5. 原生 OS 设备驱动程序热接口
    • 11.6. Thermal Zone 接口要求
    • 11.7. Thermal Zone 示例

11.1. 热控制

ACPI 定义了接口,使 OSPM 能够在其系统冷却策略中采取主动措施。由于 OSPM 控制运行环境,冷却决策可以基于系统的应用负载、用户对性能或节能的偏好以及热启发式方法来制定。同时,也可以在达到临界热级别时,对设备或整个系统执行平稳关闭。以下各节描述 ACPI 热模型以及 OSPM 可用于实施平台热管理策略的 ACPI 命名空间对象。

ACPI 热模型围绕称为热区的概念性平台区域构建,这些区域在物理上包含设备、热传感器和冷却控制。一般而言,整个平台是一个大的热区,但如有必要,平台可以划分为多个 ACPI 热区,以实现最佳热管理。

ACPI 热区是温度传感器、跳变点、热属性信息和热控制接口的逻辑集合。热区接口既可以作用于整个热区,也可以作用于热区内的特定设备(包括处理器)。ACPI 在第 11.4 节中定义了提供热区范围接口的命名空间对象。这些对象的一个子集也可以在设备下定义。与 ACPI 3.0 热模型兼容的 OS 实现会与这些对象交互,同时也支持在设备级执行类似功能的 OS 原生设备驱动程序接口。这允许集成具有嵌入式热传感器和控制的设备(这些设备可能无法通过 AML 访问)通过被纳入 ACPI 热区而参与 ACPI 热模型。当一个热区同时包含热对象和用于热控制的原生 OS 设备驱动程序接口时,OSPM 负责应用适当的热策略。

热区中的某些设备相对于该热区中的其他设备,可能是比较大的热负载产生源。设备还可能具有不同程度的热敏感性。例如,某些设备可容忍的工作温度可能显著高于其他设备。因此,平台可以向 OSPM 提供有关平台设备拓扑以及一个设备的热负载生成对另一个设备所产生影响的信息。为了通过应用冷却控制实现最佳热管理,OSPM 必须理解这些信息。

ACPI 要求所有温度均以十分之一度表示。该分辨率被认为足以使 OSPM 执行稳健的平台热管理。

../_images/Thermal_management-2.png

图 11.1 ACPI 热区

11.1.1. 主动、被动和临界策略

OSPM 使用三种冷却策略来控制硬件的热状态。这些策略是主动、被动和临界。

  • 主动冷却。OSPM 采取直接动作,例如开启一个或多个风扇。应用主动冷却控制通常会消耗功率并产生一定噪声,但能够在不限制系统性能的情况下冷却热区。主动冷却温度跳变点声明 OSPM 用来决定何时启动或停止不同主动冷却设备的温度阈值。

  • 被动冷却。OSPM 通过降低设备的功耗来降低热区温度,例如降低处理器时钟速度(节流)。应用被动冷却控制通常不会产生用户可感知的噪声。被动冷却温度跳变点指定 OSPM 将开始或停止被动冷却的温度阈值。

  • 临界跳变点。这些是阈值温度,在这些温度下 OSPM 对设备或整个系统执行有序但临界的关闭。_HOT 对象声明高温温度,在该温度下如果受支持,OSPM 可以选择将系统转换到 S4 睡眠状态;_CRT 对象声明临界温度,在该温度下 OSPM 必须执行临界关闭。

当热区出现在 ACPI 命名空间中,或者当新设备成为热区成员时,OSPM 会检索其执行冷却策略所依据的温度阈值(跳变点)。当 OSPM 收到温度变化通知时,它会对热区的温度接口求值以检索当前温度值。OSPM 将当前温度值与温度阈值进行比较。如果任何温度大于或等于相应的主动跳变点,则 OSPM 将执行主动冷却。如果任何温度大于或等于相应的被动跳变点,则 OSPM 将执行被动冷却。如果 _TMP 对象返回的值大于或等于 _HOT 对象返回的值,则如果受支持,OSPM 可以选择将系统转换到 S4 睡眠状态。如果 _TMP 对象返回的值大于或等于 _CRT 对象返回的值,则 OSPM 必须关闭系统。嵌入式高温和临界跳变点也可以由热区内的单个设备公开。当越过这些跳变点时,OSPM 必须根据设备对系统运行的重要性来决定是关闭该设备还是整个系统。每当任一热区出现在命名空间中时(例如,在系统初始化期间),OSPM 还必须对该热区的温度接口求值,并且无论是否收到温度变化通知,只要有需要就必须启动冷却策略。这使 OSPM 能够冷却那些在初始化时其热区温度已超过温度阈值的系统。

采用多个阈值进行优化设计的系统,可以通过每隔几度触发一次事件来通知 OSPM 热量增加或减少。这使 OSPM 能够预判热趋势,并结合启发式方法更好地管理系统温度。

为了实现对性能或节能的偏好,OSPM 可以通过对热区的 _SCP(设置冷却策略)对象求值,或者通过针对热区内单个设备的相应 OS 特定接口,请求平台更改主动冷却(性能)与被动冷却(节能/静音)的优先级。

11.1.2. 动态更改冷却温度跳变点

平台或其设备可以更改主动和被动冷却温度跳变点,并通知 OSPM 重新对跳变点接口求值,以建立新的策略阈值设置。以下是这类热通知的主要用途:

  • 当 OSPM 将平台的冷却策略从一种冷却模式更改为另一种时。

  • 当可更换仓位设备被插入或移除时。可更换仓位是可容纳多种具有相同外形尺寸设备的插槽,例如 CD-ROM 驱动器、磁盘驱动器等等。许多移动 PC 已经采用了这一概念。

  • 在发出越过主动或被动跳变点的信号之后,以实现迟滞。

在每种情况下,都必须通过执行 AML 代码语句 Notify(thermal_zone, 0x81) 或通过由设备驱动程序为参与热模型的区域设备调用的 OS 特定接口,通知 OSPM 重新对热区的跳变点求值。

11.1.2.1. OSPM 更改冷却策略

当 OSPM 将平台的冷却策略从一种冷却模式更改为另一种时,会发生以下情况:

  1. OSPM 通过在所有热区中运行“设置冷却策略”(_SCP) 控制方法,并对每个热区中所有参与设备调用 OS 特定的“设置冷却策略”接口,来将新的冷却模式通知平台。

  2. 阈值在硬件中更新,并通知 OSPM 该变更。

  3. OSPM 重新对该区域以及区域内所有设备的主动和被动冷却温度跳变点求值,以获取新的温度阈值。

11.1.2.2. 重置冷却温度以适应仓位设备插入或移除

平台可以根据需要调整热区温度,以适应仓位设备的最高工作温度。例如:

  1. 硬件检测到设备被插入仓位或从仓位移除,更新温度阈值,然后将热策略变更和设备插入事件通知 OSPM。

  2. OSPM 重新枚举设备,并重新对主动和被动冷却温度跳变点求值。

11.1.2.3. 重置冷却温度以实现迟滞

OEM 可以通过动态重置冷却温度阈值,在平台热设计中引入迟滞。例如:

  1. 当温度升高到指定阈值时,OSPM 将开启相关的主动冷却设备或执行被动冷却。

  2. 平台将阈值重置为较低温度(以实现迟滞),并通知 OSPM 该变更。由于这个新的阈值,风扇关闭时的温度将低于开启时的温度(因此实现了负迟滞)。

  3. 当温度达到较低阈值时,OSPM 将关闭相关的主动冷却设备或停止被动冷却。硬件将把 _ACx 重置为其原始值,并通知 OSPM 跳变点再次发生了更改。

11.1.3. 检测温度变化

平台及其设备能够异步地将热区温度中的有意义变化通知兼容 ACPI 的 OS,这是一项非常理想的能力,它使 OSPM 无需实现基于轮询的策略,并且通常会带来响应更快、效果更优的热策略实现。每次通知都会指示 OSPM 评估是否已越过某个跳变点,并使 OSPM 能够预判该热区的温度趋势。

需要认识到,如今用于实现热区功能的许多硬件并不具备生成 ACPI 可见通知(SCI)的能力,或者只能以很粗的粒度这样做(例如,仅当温度越过临界阈值时)。在这些环境中,OSPM 必须周期性轮询热区的温度,以实施有效的策略。

虽然 ACPI 规定了一种使 OSPM 能够轮询热区温度的机制,但本规范强烈不建议平台依赖热区轮询。OEM 应设计系统,以便在热区温度发生有意义的变化时异步通知 OSPM——从而减轻 OSPM 与轮询相关的开销。在某些情况下,嵌入式控制器固件可以克服现有温度传感器能力的限制,以提供所需的异步通知。

请注意,_TZP(热区轮询)对象用于指示热区是否必须由 OSPM 轮询,以及如果需要轮询,建议的轮询频率。更多信息请参见 _TZP(热区轮询)。

11.1.3.1. 温度变化通知

支持异步温度变化通知的整个热区温度传感器硬件使用 SCI 来实现。响应该 SCI 的 AML 代码必须执行一个 Notify(thermal_zone, 0x80) 语句,以通知 OSPM 已发生有意义的温度变化。或者,带有嵌入式温度传感器的设备可以向其关联的设备驱动程序发出信号,而驱动程序可以使用操作系统特定接口向 OSPM 的热策略驱动程序发出信号。设备驱动程序还可以调用设备特定控制方法,以执行 Notify(thermal_zone, 0x80) 语句。当 OSPM 收到此热通知时,它将求值热区的温度接口,以获取当前温度值。然后 OSPM 会将这些值与相应的冷却策略跳变点值(整个热区范围或设备特定)进行比较。如果温度已经越过任何策略阈值,则 OSPM 将主动或被动地对系统进行冷却(或停止冷却),或者完全关闭系统。

热区跳变点的数量和粒度都由 OEM 决定。但是,需要注意的是,由于 OSPM 可以使用启发式知识来帮助冷却系统,因此 OSPM 接收到的事件越多,它对系统热特性的理解就越好。

../_images/Thermal_management-3.png

图 11.2 热事件

例如,上图所示的简单热区包含能够以 5° 摄氏度粒度生成温度变化通知的硬件。所有阈值(_PSV、_AC1、_AC0 和 _CRT)都存在于受监控范围内,并且落在 5 的边界上。该粒度对于此系统是合适的,因为它为 OSPM 提供了足够的机会,以检测何时跨越阈值,并理解热区的基本特性(温度趋势)。

注: ACPI 规范将开尔文定义为绝对温度值的标准单位。所有热区对象在报告绝对温度值时都必须以开尔文报告温度。为清晰起见,本规范本节中的所有图和示例都使用摄氏度。ACPI 允许以 1/10 度的精度声明开尔文(例如,310.5)。

开尔文表示如下:

\[\theta /K = T/(摄氏度) + 273.2\]

11.1.3.2. 轮询

无法生成热变化事件的温度传感器硬件,或者只能针对少数几个阈值生成此类事件的硬件,应通知 OSPM 实现基于轮询的策略。OSPM 这样做是为了确保跨越阈值边界的温度变化始终可被检测到。

轮询可以与硬件通知结合使用。例如,仅支持单个阈值的热区硬件可以配置为将该阈值用作临界温度跳变点。假设硬件监控温度的粒度比 OSPM 更细,则当系统过热时,此环境具有更快响应的优势。

热区通过 _TZP 对象向 OSPM 声明需要被轮询。更多信息请参见 _TZP(热区轮询)。

11.1.4. 主动冷却

主动冷却设备在启用时通常会消耗功率并产生一定量的噪声。这些设备试图通过移除热量来冷却热区,而不是通过限制设备性能来应对不利的热条件。

主动冷却接口结合主动冷却列表或主动冷却关系表(_ART),允许平台使用具有不同冷却能力级别的主动设备,或使用多个冷却设备。主动冷却温度跳变点指定了启用或解除主动冷却的温度(取决于温度变化的方向)。对于整个热区范围的主动冷却控制,_ALx 对象求值为主动冷却该热区的设备列表,或者 _ART 对象求值为描述各种设备的整个主动冷却关系。例如:

  • 如果标准单速风扇是主动冷却设备,则 _AC0 求值为启用主动冷却的温度,并且该风扇列在 _AL0 中。

  • 如果该热区使用两个独立控制的单速风扇来调节温度,则 _AC0 将求值为使用两个风扇时的最大冷却温度,而 _AC1 将求值为使用一个风扇时的标准冷却温度。

  • 如果某个热区具有一个带低速和高速的单个风扇,则 _AC0 将求值为以高速运行风扇所对应的温度,而 _AC1 将求值为以低速运行风扇所对应的温度。_AL0 和 _AL1 都将指向与同一物理风扇关联的不同设备对象,但以不同速度控制该风扇。

  • 如果该热区使用两个独立控制的多速风扇来调节温度,则目标设备的 _AC0 求值为这样一个温度:在该温度下,OSPM 将根据 _ART 对象描述的需要启用风扇设备,直至达到最大能力级别。

有关说明这些要点的 ASL 编码示例,请参见 热区接口要求 和 热区示例。

11.1.5. 被动冷却

被动冷却控制能够在不产生噪声且不消耗额外功率(实际上还能节省功率)的情况下冷却热区,但其方式是降低该热区内设备的性能。

11.1.5.1. 处理器时钟节流

处理器被动冷却阈值(_PSV)结合处理器列表(_PSL)允许平台指示一个温度,在该温度下,被动控制(例如时钟节流)将应用于位于给定热区中的处理器。与其他冷却策略不同,在对处理器进行被动冷却期间,OSPM 可以主动监视温度以冷却平台。

在正确实现 CPU 节流的 ACPI 兼容平台上,在可冷却环境中运行可冷却工作负载时,温度变化将类似于下图:

../_images/Thermal_management-4.png

图 11.3 温度和 CPU 性能随时间的变化

OSPM 应使用以下方程来评估为降低热区温度所需的最佳 CPU 性能变化:

方程 #1

\[\Delta P [%] = \TC1 * ( T{n} - T_{n-1} ) + \TC2 * (T{n} - T_{t} )\]

其中:

Tn = 当前温度

Tt = 目标温度(_PSV)

两个系数 _TC1 和 _TC2 以及采样周期 _TSP 都是硬件相关常量,OEM 必须将其提供给 OSPM(更多信息请参见 第 11.4 节)。_TSP 对象包含一个时间间隔,OSPM 使用该时间间隔轮询硬件以对温度进行采样。每当 _TSP 返回的时间值到期时,OSPM 将求值 _TMP 以采样当前温度(在上述方程中表示为 Tn)。随后,OSPM 将使用采样的温度和被动冷却温度跳变点(_PSV)(即目标温度 Tt)来求值 \(\Delta P\) 方程。\(\Delta P\) 的粒度由系统的 CPU 占空宽度决定。

注: 方程 #1 包含一个隐含公式。

方程 #2 :

\(P_{n} = P_{n-1} + HW[- ?P]\)

其中:

\(最小值 % <= P_{n} <= 100 %\)

对于该方程,只要 Pn-1 + ?P 落在最小值到 100% 范围之外,则 Pn 将被截断到最小值到 100%。最小值% 是 _MTL 限值,如果未定义 _MTL,则为 0%。对于无法在最小值和 100% 之间取到 Pn 的所有可能值的硬件,将使用硬件特定映射函数 HW。

此外,方程 #2 中的硬件映射函数应解释如下。

对于绝对温度:

  1. 如果方程 #1 右侧为负,则 \(HW[\Delta P]\) 向上舍入到下一个可用的更高频率设置。

  2. 如果方程 #1 右侧为正,则 \(HW[\Delta P]\) 向下舍入到下一个可用的更低频率设置。

对于相对温度:

  1. 如果方程 #1 右侧为正,则 \(HW[\Delta P]\) 向上舍入到下一个可用的更高频率设置。

  2. 如果方程 #1 右侧为负,则 \(HW[\Delta P]\) 向下舍入到下一个可用的更低频率设置。

    • 计算得到的 Pn 在下一采样周期中成为 Pn-1。

    • 有关 CPU 节流的更多信息,请参见 处理器电源状态 C0。对该热反馈方程的详细解释超出了本规范的范围。

11.1.6. 临界关机

当整个热区范围的温度传感器值达到 _CRT 指示的阈值时,OSPM 必须立即关闭系统。系统必须在温度达到高于 _CRT 的某个由硬件确定的级别之后,或在经过预定时间之后,切断电源。在切断电源之前,平台设计人员应留出一些时间,以便 OSPM 运行其临界关机操作。对于在温度达到 _CRT 后立即开始的最小关机操作窗口,没有任何要求。原因如下:

  • 在某些系统中,温度可能快速上升,而在其他系统中则可能缓慢上升,这取决于机箱设计和环境因素。

  • 在服务器上,关机可能需要几分钟,而在手持设备上则只需几秒钟。

由于这种不明确的差异,以及临界过热情况实际上极为罕见,ACPI 不规定安全关机的目标时间窗口。为目标平台构建其认为合适的安全缓冲区完全由 OEM 自行决定。

Prev
总览
Next
11.2. 冷却偏好