3.3. 设备电源管理
本节描述与 ACPI 兼容的设备电源管理。将介绍 ACPI 设备电源状态,讨论与 ACPI 兼容的操作系统执行设备电源管理所需的控制和信息,描述设备用于将计算机从睡眠状态唤醒的唤醒操作,并给出一个使用调制解调器进行与 ACPI 兼容的设备管理示例
3.3.1. 设备电源管理模型
ACPI 设备电源管理基于一个由以下部分组成的集成模型:
分布式设备电源状态策略
对于系统中的每个硬件设备,操作系统中都有一个电源策略所有者,负责持续确定该设备的最佳电源状态。最佳设备电源状态是指在任意时刻,在满足系统及其用户对设备使用要求的前提下,使设备功耗最小的状态。策略通常是针对某一类设备定义的,并根据需要结合应用活动、用户场景和其他运行状态。它适用于给定类别的所有设备。
分层设备电源状态控制
一旦为某个设备做出了电源状态决策,就必须由设备驱动程序来执行。该模型将控制功能划分到设备层、总线层和平台层。各层的设备驱动程序使用该层可用的机制执行控制,并由 OSPM 协调。通常,在设备断电过程中,顺序从设备/类别层到总线层再到平台层;而在上电过程中则相反。
例如,设备级驱动程序可通过设备编程接口访问设置和控制寄存器,这些寄存器可调用设备中特定的、有时是专有的电源控制功能。设备驱动程序根据策略所有者确定的目标 ACPI 定义电源状态,适当地使用这些控制。同样,设备类别可能具有标准化的电源功能,并以标准化方式调用,类别驱动程序在进入目标电源状态时可以使用这些功能。
在总线层,电源管理标准发挥作用,提供特定于总线的控制,这些控制适用于连接到该总线的每个设备,而不管设备类别如何。例如,PCI 在设备配置空间中定义了用于设置设备电源状态(D0-D3)的字段。总线级驱动程序利用这些标准执行控制,作为对设备特定驱动程序或设备类别驱动程序所施加控制的补充。总线特定机制还通过使总线基础设施硬件本身进入较低功耗状态(如总线标准中定义)来实现系统中的额外节能。
最后,对于平台级电源状态控制,ACPI 定义了将设备置于给定电源状态的机制(_PRx、_PSx、_ON、_OFF)。操作系统的电源管理软件(OSPM)利用这些机制,对给定设备执行最低层、特定于平台的控制(例如打开和关闭电源轨与时钟、复位硬件等)。
操作系统协调
最后,ACPI 定义了信息和行为要求,使 OSPM 能够将受支持的状态和唤醒能力通知给电源策略所有者,并协调各级设备驱动程序在电源控制中的操作。OSPM 在这一角色中负责确保设备电源管理与系统电源管理相协调,例如进入睡眠状态(S1-S4)或低功耗空闲状态(LPI)。与设备电源状态策略和控制集成后,唤醒策略和控制也由 OSPM 协调。电源策略所有者负责决定设备何时可能需要用于唤醒系统,并确保当平台进入睡眠或 LPI 状态时,只选择设备能够从中唤醒的设备电源状态。唤醒硬件的使能也在设备层、总线层和平台层执行,并由 OSPM 协调。OSPM 还进一步确保,为系统选择的睡眠或 LPI 状态与当前所有已启用唤醒设备的设备状态和唤醒能力兼容。
3.3.2. 电源管理标准
为了管理系统中所有设备的电源,操作系统需要用于向设备发送命令的标准方法。这些标准定义了用于管理特定 I/O 互连上设备电源的操作,以及设备可以进入的电源状态。为每种 I/O 互连定义这些标准,创建了操作系统可以利用的电源管理支持基线级别。独立硬件供应商(IHV)不必额外花时间编写软件来管理其硬件的电源,因为只要遵循标准,就能直接获得操作系统支持。对于操作系统供应商而言,I/O 互连标准使电源管理代码可以集中在每种 I/O 互连的驱动程序中。最后,由 I/O 互连驱动的电源管理允许操作系统跟踪给定 I/O 互连上所有设备的状态。当所有设备都处于某一给定状态时(例如,D3 - 关闭),操作系统可以将整个 I/O 互连接口置于适合该状态的供电模式(例如,D3 - 关闭)。
已为包括以下在内的多种总线编写了 I/O 互连级电源管理规范:
PCI
PCI Express
卡总线
USB
IEEE 1394
3.3.3. 设备电源状态
为了统一术语并在设备之间提供一致的行为,对设备电源状态使用标准定义。通常,这些状态是根据以下标准定义的:
功耗——设备使用多少电力。
设备上下文——设备的多少上下文由硬件保留。
设备驱动程序——设备驱动程序必须执行什么操作才能将设备恢复到完全开启状态。
恢复延迟——将设备恢复到完全开启状态需要多长时间。
更具体地说,每类设备(例如调制解调器、网络适配器、硬盘等)的电源管理规范会更精确地定义该类别的电源状态和电源策略。有关一般设备电源状态(D0-D3)的详细描述,请参见设备电源状态。
3.3.4. 设备电源状态定义
设备电源状态定义与设备无关,但总线上的设备类别必须支持某种一致的电源相关特性集合。例如,当调用总线特定机制将设备电源状态设置为给定级别时,设备可能采取的操作以及操作系统在设备处于该状态时可假定的特定行为类型会因设备类型而异。对于一个完全集成的设备电源管理系统,这些特定于类别的电源特性也必须标准化:
设备电源状态特性
每类设备都有关于目标功耗水平、状态切换延迟和上下文丢失的标准定义。
最小设备电源能力
每类设备都有一组最低标准的电源能力。
设备功能特性
每类设备都有一个标准定义,用于说明每个电源状态下哪些设备功能或特性子集可用(例如,网卡可以接收,但不能发送;声卡除功率放大器关闭外,其余功能均完全可用,等等)。
设备唤醒特性
每类设备都有其唤醒策略的标准定义。
设备类别电源管理规范为每类设备定义了这些电源状态特性。请参见附录 A:设备类别规范。