资讯专栏INFORMATION COLUMN

ACPI Specification 第三章 ACPI概念

roadtogeek / 3870人阅读

摘要:兼容的电池设备需要智能电池子系统接口由操作系统直接通过嵌入式控制器接口控制或接口。这允许任何操作系统提供一个标准的总线枚举器,它可以直接与系统中的嵌入式控制器通信,从而允许系统中的其他驱动程序与系统中的嵌入式控制器通信并使用它们的资源。

目录

第三章 ACPI 概念... 2

3.1系统电源管理... 3

3.2电源状态... 3

3.2.1电源按钮... 4

3.2.2平台电源管理特点... 5

3.2.2.1移动电脑... 5

3.2.2.2台式电脑... 5

3.2.2.3多处理器和服务器pc. 5

3.3设备电源管理... 6

3.3.1设备电源管理模式... 6

3.3.2电源管理标准... 7

3.3.3设备电源状态... 7

3.3.4设备电源状态定义... 7

3.4控制设备电源... 8

3.4.1获取设备电源能力... 8

3.4.2设置设备上下电状态... 8

3.4.3获取设备电源状态... 9

3.4.4唤醒系统... 9

3.4.5示例:Modem设备电源管理... 10

3.4.5.1获取Modem能力... 11

3.4.5.2设置Modem电源状态... 11

3.4.5.3获取Modem电源状态... 12

3.4.5.4唤醒系统... 12

3.5处理器电源管理... 12

3.6设备和处理器性能状态... 13

3.7配置与即插即用... 13

3.7.1设备配置举例:配置调制解调器... 13

3.7.2章NUMA节点... 14

3.8系统事件... 14

3.9电池管理... 14

3.9.1电池通信... 15

3.9.2电池容量... 15

3.9.3电池气量表... 16

3.9.4电池电量不足... 16

3.9.4.1紧急关机... 17

3.9.5电池校准... 18

3.9.6限电... 18

3.10热管理概念... 19

3.10.1主动式和被动式制冷模式... 20

3.10.2性能与节能... 20

3.10.3声学(噪音) 20

3.10.4多个热分区... 20

3.11灵活的平台架构支持... 20

3.11.1 Hardware-reduced ACPI 21

3.11.1.1基于中断的唤醒事件... 21

3.11.2低功耗闲置... 21

3.11.2.1低功耗S0空闲Capable标志位... 21

3.11.3连接资源... 21

3.11.3.1支持的平台上... 22

第三章 ACPI 概念

符合ACPI规范的平台为OSPM提供了对计算机的电源管理和主板设备配置功能的直接和独家控制。在操作系统初始化过程中,OSPM将从APM BIOS、基于smm的固件、遗留应用程序和PNPBIOS等传统实现中接管这些功能。完成这些之后,OSPM负责处理主板设备配置事件,并根据用户偏好、应用程序请求和操作系统强加的服务质量(QOS) /可用性目标控制系统的功率、性能和热状态。ACPI提供了允许OSPM执行这些功能的低级接口。ACPI规范涵盖的功能领域包括:

系统电源管理 ACPI定义了使计算机作为一个整体进入和退出系统休眠状态的机制。它还为任何设备提供了唤醒计算机的通用机制。

设备电源管理 ACPI表描述主板设备,它们的电源状态,设备连接的电源平面,以及将设备置于不同电源状态的控制。这使得操作系统能够根据应用的使用情况将设备设置为低功耗状态。

处理器电源管理 当操作系统处于空闲状态而不是休眠状态时,它将使用ACPI描述的命令将处理器置于低功耗状态。

设备和处理器性能管理 当系统处于活动状态时,OSPM将设备和处理器转换为ACPI定义的不同性能状态,以实现性能和节能目标以及其他环境要求(例如,能见度和声学)之间的理想平衡。

配置/即插即用 ACPI指定用于枚举和配置主板设备的信息。这些信息是分层排列的,因此当发生对接和解对接之类的事件时,操作系统对哪些设备受到该事件的影响有精确的先验知识。

系统事件 ACPI提供了一种通用事件机制,可用于热事件、电源管理事件、对接、设备插入和移除等系统事件。这种机制非常灵活,因为它没有明确定义如何将事件路由到核心逻辑芯片集。

电池管理 电池管理策略从APM BIOS转移到ACPI操作系统。acpi兼容的电池设备需要智能电池子系统接口(由操作系统直接通过嵌入式控制器接口控制)或Control Method battery接口。控制方法电池接口完全由AML控制方法定义,允许OEM选择任何类型的电池和ACPI支持的任何类型的通信接口。电池必须符合其接口的要求,如本文所述或其他适用的标准。操作系统可以选择改变电池的行为,例如,通过调整低电池或电池警告跳闸点。当存在多个电池时,电池子系统不需要从多带带电池的数据中进行任何“复合电池”的合成。在电池子系统不能从独立电池的数据合成“复合电池”的情况下,操作系统必须提供这种合成。

热管理 由于操作系统控制设备和处理器的电源和性能状态,ACPI还解决了系统的热管理问题。它提供了一个简单的、可扩展的模型,允许oem定义热区域、热指标和冷却热区域的方法。

嵌入式控制器 ACPI定义了操作系统总线枚举器和嵌入式控制器之间的标准硬件和软件通信接口。这允许任何操作系统提供一个标准的总线枚举器,它可以直接与系统中的嵌入式控制器通信,从而允许系统中的其他驱动程序与系统中的嵌入式控制器通信并使用它们的资源。这反过来又使OEM能够提供操作系统和应用程序可以使用的平台特性。

SMBus控制器 ACPI定义了操作系统总线驱动程序与SMBus Controller之间的标准软硬件通信接口。这允许任何操作系统提供一个标准的总线驱动程序,它可以直接与系统中的SMBus设备通信。这反过来又使OEM能够提供操作系统和应用程序可以使用的平台特性。

OSPM的任务是优化配置平台,并根据用户的喜好优化管理系统的功率、性能和热状态,同时支持操作系统强加的服务质量(QOS) /可用性目标。为了实现这些目标,ACPI要求,一旦兼容ACPI的平台处于ACPI模式,平台的硬件、固件或其他非操作系统软件不能独立于OSPM操纵平台的配置、电源、性能和热控制接口。OSPM多带带负责协调系统的配置、电源管理、性能管理和热控制策略。独立于OSPM的这些接口的操作将破坏OSPM/ACPI的目的,并可能对系统的配置、电源、性能和热策略目标产生不利影响。这一要求有两个例外。第一种情况是,当存在ACPI兼容的操作系统,而OSPM延迟不足以弥补不利的热条件时,系统可能会受到损坏。在这种情况下,平台可能会采用故障安全热控制机制,降低系统组件的性能,以避免损坏。如果出现这种情况,如果性能下降持续时间很长(换句话说,如果性能下降的持续时间会对OSPM的能力或性能控制策略产生不利影响——操作系统供应商可以在这方面提供指导),则平台必须将性能下降的情况通知OSPM。第二个例外情况是平台包含主动冷却装置,但不包含被动冷却温度跳闸点或控制。在这种情况下,可以在不影响OSPM目标的情况下实现基于硬件的Active冷却机制。任何需要主动和被动冷却的平台都必须允许OSPM通过ACPI定义的主动和被动冷却接口来管理平台的热量。

3.1系统电源管理

在OSPM下,操作系统指导所有系统和设备的电源状态转换。利用用户偏好和应用程序如何使用设备的知识,操作系统将设备置于或退出低功耗状态。不使用的设备可以关闭。类似地,操作系统使用来自应用程序和用户设置的信息将整个系统置于低功耗状态。操作系统使用ACPI控制硬件上电状态的转换。

3.2电源状态

从用户可见的层面来看,系统可以被认为处于以下图表中的一种状态:

这些状态的详细定义见章节2.2。

一般情况下,计算机在工作和睡眠状态之间交替使用。在工作状态下,计算机是用来工作的。用户模式的应用程序线程被分派并运行。单个设备可以处于低功耗(Dx)状态,处理器可以处于低功耗(Cx)状态,如果它们不被使用的话。任何由于不积极使用而被系统关闭的设备都可以以较短的延迟打开。(“短”是什么意思取决于设备。LCD显示屏需要在亚秒的时间内启动,而一般情况下,等待几秒钟打印机启动是可以接受的。)

这样做的最终效果是整个机器在工作状态下正常工作。不同的工作子状态在计算速度、使用的功率、产生的热量和产生的噪音方面有所不同。Working状态中的调优主要是关于速度、功率、热量和噪声之间的权衡。

Fig. 3.1: Global System Power States and Transitions

当计算机处于空闲状态或用户按下电源按钮后,操作系统将使计算机进入休眠(Sx)状态。在睡眠状态下不发生用户可见的计算。休眠子状态的不同在于哪些事件可以将系统唤醒到工作状态,以及需要多长时间。当机器必须快速唤醒所有可能的事件时,它只能进入能部分降低系统功耗的子状态。但是,如果唯一感兴趣的事件是用户按下电源开关,并且允许有几分钟的延迟,那么操作系统可以将所有系统上下文保存到一个NVS文件中,并将硬件转换到S4休眠状态。在这种状态下,机器几乎耗电为零,并在任意一段时间内(如果需要,可以是几年或几十年)保持系统上下文。

其他状态使用较少。支持legacy BIOS电源管理接口的计算机在legacy状态下启动,并在ACPI操作系统加载时过渡到Working状态。没有遗留支持的系统(例如,RISC系统)直接从Mechanical Off状态转换到Working状态。用户通常通过拨动电脑的机械开关或拔掉电脑的插头来将电脑置于“机械关闭”状态。

3.2.1电源按钮

在传统系统中,电源按钮通常会迫使机器进入“软关闭”或“机械关闭”状态,而在笔记本电脑上,则会迫使它进入某种睡眠状态。没有考虑用户的政策(如用户想让机器“加油”在不到1秒与所有上下文是当用户把机器“关闭”),系统提醒功能(如系统被用作一个电话应答机或传真机),或应用程序函数(例如保存用户文件)。

在一个OSPM系统中,有两个开关。一种是将系统转换到机械关闭状态。在一些司法管辖区(例如在一些欧洲国家),出于法律原因需要一种机制来阻止流动。另一个是“主”电源按钮。这是在一些明显的地方(例如,在笔记本电脑键盘旁边)。与传统的开关按钮不同,它所做的只是向系统发送一个请求。系统对该请求所做的操作取决于源自用户首选项、用户功能请求和应用程序数据的策略问题。

3.2.2平台电源管理特点

3.2.2.1移动电脑

移动pc将继续拥有强大的电源管理功能。使用OSPM/ACPI将允许增强的节能技术和更精细的用户策略。

ACPI规范中移动PC电源管理的方面是热管理(见第3.10节)。

3.2.2.2台式电脑

电源管理桌面将有两种类型,尽管第一种类型将随着时间的推移迁移到第二种类型。

普通的“绿色电脑”在这里,新的电器功能不是问题。这台机器实际上只用于生产力计算。至少在最初阶段,这样的机器只需要很少的功能就可以应付过去。特别是,它们需要普通的ACPI计时器和控件,但不需要支持复杂的睡眠状态,等等。然而,他们确实需要允许操作系统将尽可能多的设备/资源置于设备待机和设备关闭状态,并且尽可能独立(以最大的计算速度和最小的未使用设备上的功耗浪费)。这类电脑还需要支持通过计时器从休眠状态唤醒,因为这允许管理员在人们去上班之前强制开机。

家庭PC电脑正在进入家庭环境,在那里,它们被用于娱乐中心和执行任务,如接听电话。家用电脑需要普通绿色电脑的所有功能。事实上,它具有笔记本电脑的所有ACPI电源功能,除了对接和盖子事件(并且不需要任何遗留电源管理)。请注意,家庭PC还有一个热管理方面,因为家庭PC用户希望系统尽可能安静地运行,通常是在热受限的环境中。

3.2.2.3多处理器和服务器pc

也许令人惊讶的是,服务器机器通常可以获得最大的绝对功耗节省。为什么?因为他们拥有最大的硬件配置,因为当他们晚上离开的时候,让人按下关机开关是不实际的。

白天模式在白天模式下,服务器是电源管理的,就像企业普通的绿色PC一样,一直处于工作状态,但尽可能将未使用的设备置于低功耗状态。由于服务器可能非常大,并且有许多磁盘轴,因此电源管理可以节省大量资源。OSPM允许仔细地调整何时进行此操作,从而使其可行。

在夜间模式下,服务器看起来像家用电脑。它们尽可能地深度睡眠,并且仍然能够在指定的延迟时间内唤醒并回答通过网络、电话链接等传入的服务请求。例如,打印服务器可能会进入深度睡眠,直到它在凌晨3点收到打印任务,在这一点上,它可能会在30秒内醒来,打印任务,然后回到睡眠状态。如果打印请求通过LAN发送,那么这个场景依赖于智能LAN适配器,该适配器可以唤醒系统以响应接收到的感兴趣的数据包。

3.3设备电源管理

介绍acpi兼容的设备电源管理。介绍了ACPI设备电源状态,控制和信息ACPI-compatible操作系统需要执行设备电源管理进行了讨论,之后操作设备使用从睡眠状态唤醒计算机,并使用调制解调器ACPI-compatible设备管理的一个例子

3.3.1设备电源管理模式

ACPI设备电源管理基于一个集成模型,包括:

分布式设备电源状态策略对于系统上的每个硬件设备,“操作系统”中都有一个“电源策略所有者”(power policy Owner)负责不断确定设备的最佳电源状态。最佳的设备电源状态是指在任何时间点上,使设备消耗的电能最少,且符合系统和用户对设备的使用要求。策略通常为一类设备定义,并根据需要合并应用程序活动、用户场景和其他操作状态。它适用于给定类的所有设备。

分层设备电源状态控制一旦为设备做出电源状态决策,它们必须由设备驱动程序执行。该模型将控制功能划分为设备层、总线层和平台层。每一层的设备驱动程序使用该层可用的机制执行控制,由OSPM协调。一般来说,当设备下电时,顺序从设备/类级到总线级,再到平台级,当设备上电时,顺序反过来。

例如,设备级驱动程序可以通过设备编程接口访问调用设备中特定的、有时是专有的电源控制特性的设置和控制寄存器。设备驱动程序根据策略所有者确定的目标acpi定义的电源状态使用这些控件。类似地,设备类可能具有标准化的电源特性,在进入目标电源状态时,类驱动程序可能使用标准化的方式调用这些特性。

在总线级,电源管理标准开始发挥作用,为连接到总线的每个设备提供总线特定的控制,而不管设备类是什么。例如,PCI在设备配置空间中定义用于设置设备电源状态(D0-D3)的字段。总线级驱动利用这些标准来执行由特定设备或设备类驱动程序应用的控制。总线特定的机制还允许总线基础设施硬件本身进入总线标准中定义的低功耗状态,从而在系统中实现额外的功耗节省。

最后,对于平台级电源状态控制,ACPI定义了将设备置于给定电源状态的机制(_PRx, _PSx, _ON, _OFF)。操作系统的电源管理软件(OSPM)利用这些机制对给定的设备执行最低级别的、特定于平台的控制(例如开关电源轨和时钟、重新设置硬件等)。

操作系统协调最后,ACPI定义了信息和行为需求,使OSPM能够通知Power Policy Owner所支持的状态和唤醒功能,并在控制电源时协调不同级别设备驱动程序的操作。在此角色中,OSPM负责确保设备电源管理与系统电源管理协调,如进入休眠状态(S1S4)或低功耗空闲状态(LPI)。唤醒策略和控制与设备电源状态策略和控制集成在一起,由OSPM进行协调。电源策略所有者(Power Policy Owners)决定何时需要设备唤醒系统,确保当平台进入Sleep或LPI状态时,只选择设备可以唤醒的设备电源状态。唤醒硬件的启用也在设备、总线和平台级别执行,并由OSPM协调。OSPM进一步确保为系统选择的Sleep或LPI状态与当前使能唤醒的所有设备的设备状态和唤醒能力兼容。

3.3.2电源管理标准

为了管理系统中所有设备的功率,操作系统需要向设备发送命令的标准方法。这些标准定义了用于管理特定I/O互连上设备的电源的操作,以及设备可以放入的电源状态。为每个I/O互连定义这些标准,创建了操作系统可以利用的电源管理支持的基线级别。独立硬件供应商(IHVs)不必花费额外的时间编写软件来管理其硬件的性能,因为只要遵守标准就可以获得直接的操作系统支持。对于操作系统供应商,I/O互连标准允许电源管理代码集中在驱动程序中的每个I/O互连。最后,I/O互连驱动的电源管理允许操作系统跟踪给定I/O互连上所有设备的状态。当所有设备处于给定状态时(例如D3关闭),操作系统可以将整个I/O互连置于适合该状态的电源模式中(例如D3关闭)。

I/O互连级电源管理规范为许多总线编写,包括:

•一种总线标准

•串行总线

•卡总线

•usb

•ieee 1394

3.3.3设备电源状态

为了统一术语并提供跨设备的一致行为,对设备的电源状态使用标准定义。一般来说,这些状态是根据以下标准定义的:

•功耗-设备使用多少功率。

•设备上下文-多少设备的上下文被硬件保留。

•设备驱动程序——设备驱动程序必须做什么来恢复设备完全打开。

•恢复延迟—设备恢复到完全打开需要多长时间。

更具体地说,每一类设备(例如调制解调器、网络适配器、硬盘等)的电源管理规范更精确地定义了该类的电源状态和电源策略。有关一般设备电源状态(D0-D3)的详细描述,请参阅设备电源状态。

3.3.4设备电源状态定义

设备电源状态定义是与设备无关的,但是总线上的设备类必须支持与电源相关的某些一致的特征集。例如,当调用特定于总线的机制将设备电源状态设置为给定级别时,设备可能采取的操作和操作系统在设备处于该状态时可以假定的特定行为将因设备类型而异。对于一个完全集成的设备电源管理系统,这些特定类别的电源特性也必须标准化:

设备功耗状态特征每一类设备都有目标功耗级别、状态更改延迟和上下文丢失的标准定义。

最小设备功率能力每一类设备都有一个最小的标准功率能力集。

设备功能特性每一类设备都有一个标准定义,定义在每种电源状态下可用的设备功能或特性的子集(例如,网卡可以接收,但不能传输;声卡功能齐全,除了功率放大器关闭等)。

设备唤醒特性每一类设备都有其唤醒策略的标准定义。

设备类电源管理规范为每一类设备定义了这些电源状态特征。参见附录A:设备类规范。

3.4控制设备电源

ACPI接口提供了管理设备电源所需的控制方法和信息。OSPM利用这些接口来执行一些任务,比如确定设备的能力、执行设置设备电源状态或获取设备状态的方法,以及使设备能够唤醒机器。

•其他总线列举主板上的一些设备。例如,通过标准PCI枚举机制报告PCI设备。这些设备的电源管理是通过它们自己的总线规范(在本例中是PCI)来处理的。主板上的其他设备均通过ACPI处理。具体来说,ACPI表列出了无法通过它们自己的总线规范报告的遗留设备、系统中每个总线的根,以及具有它们自己的总线规范没有涵盖的额外电源管理或配置选项的设备。

更多详细信息见第7节

3.4.1获取设备电源能力

当操作系统在系统中枚举设备时,它获取设备支持的电源管理特性的信息。平台引导固件给操作系统的区别定义块描述了ACPI处理的每个设备。包含如下信息:

描述设备在支持的每种电源状态下需要哪些电源资源(电源平面和时钟源)。例如,一个设备在D0状态下可能需要一个高功率总线和一个时钟,而在D2状态下只需要一个低功率总线而不需要时钟。

•设备唤醒机器所需的电源资源的描述(或没有电源资源,表示设备不支持唤醒)。操作系统可以使用这些信息来推断哪些设备和系统电源状态可以支持唤醒。

•可选的控制方法,操作系统可以用来设置设备的电源状态,获取和设置资源。

除了描述ACPI处理的设备,该表还列出了电源面和时钟源本身以及打开和关闭它们的控制方法。详细信息请参见第7节。

3.4.2设置设备上下电状态

OSPM通过“Set Power State”操作将设备设置为四种电源状态之一。

当设备处于较低的功率状态时,它会将自己配置为尽可能少地从总线上取电。操作系统跟踪总线上所有设备的状态,并根据总线上当前设备的要求将总线置于最佳电源状态。例如,如果总线上的所有设备都处于D3状态,操作系统将向总线控制芯片发送一个命令,从总线上移除电源(因此将总线置于D3状态)。如果某一总线支持低功耗供电状态,当所有设备都处于D1或D2状态时,OS将总线置于低功耗供电状态。无论设备处于何种电源状态,操作系统必须能够发出Set power state命令来恢复设备。

•设备不需要有电源就可以做到这一点。操作系统在向设备发送命令之前,必须先将设备上电。

OSPM还使用“设置电源状态”操作启用电源管理特性,如wake(在电源和性能管理中描述)。

对于下电操作(从Dx过渡到更深的Dy), OSPM首先评估目标状态(_PSx)的适当控制方法,然后关闭任何未使用的电源资源。请注意,这可能并不意味着实际上从设备上删除了电源。如果有其他主用设备共用电源,电源将保持打开状态。在通电的情况下(从一些Dx转换回较浅的D0), D0所需的电源资源首先被打开,然后控制方法(_PS0)被评估。

3.4.3获取设备电源状态

OSPM通过Get Power Status操作来确定当前的电源配置(状态和特性),以及设备支持的任何电池的状态。设备可以发出SCI信号,通知操作系统电源状态的变化。例如,一个设备可以触发一个中断来通知操作系统电池已经达到低功率水平。

设备使用ACPI事件模型向OSPM发送电源状态变化(例如电池状态变化)的信号。平台通过中断(SCI或GPIO)向操作系统发送事件信号。中断状态位被设置为向操作系统指示事件。操作系统运行与该事件关联的控制方法。这种控制方法向操作系统发出设备发生变化的信号。

ACPI支持两种类型的电池:只报告基本电池状态信息的电池和支持智能电池系统实施者论坛“智能电池规格”的电池。对于只上报电池基本状态信息(如总容量、剩余容量等)的电池,操作系统通过电池描述表中的控制方式读取。要读取智能电池的状态信息,操作系统可以使用标准的智能电池驱动程序,通过适当的总线枚举器直接与智能电池接口。

3.4.4唤醒系统

唤醒操作使设备从休眠或低功耗空闲状态唤醒系统。这个操作不能依赖于CPU,因为CPU不会执行指令。

操作系统确保设备和核心逻辑之间的任何桥梁处于最低功耗状态,在这种状态下它们仍然可以转发尾流信号。当启用了唤醒功能的设备决定唤醒系统时,它在总线上发送定义的信号。总线桥必须使用该总线的适当信号将此信号转发到上游桥。因此,信号最终到达核心芯片集(例如,ACPI芯片集),该芯片集反过来唤醒系统。

在将系统置于睡眠电源状态之前,操作系统根据应用程序请求确定需要哪些设备唤醒系统,然后以设备和总线特定的方式对这些设备启用唤醒。

操作系统通过设置设备的SCI Enable位或揭示其唤醒中断来启用设备上的唤醒特性。该控件的位置在描述表中的设备条目中列出。只有启用了唤醒功能的设备才能唤醒系统。操作系统跟踪尾流设备支持的电源状态,并保持系统处于一个尾流仍能唤醒系统的电源状态(基于描述表中报告的能力)。

当系统处于休眠或低功耗空闲状态时,唤醒设备决定唤醒系统,它向核心逻辑发出信号。设置唤醒系统的设备对应的状态位,核心逻辑恢复系统。在操作系统再次运行后,它通过运行一个控制方法(用于唤醒事件)或处理设备的ISR(用于唤醒中断)来确定负责唤醒事件的设备。

•除了使用ACPI机制使特定设备唤醒系统外,ACPI平台还必须能够记录并向OSPM报告唤醒源。当系统从某些状态(如S4状态)唤醒时,它可能以非acpi模式启动。此时,重新进入ACPI模式时,可能会清除SCI状态位。但是,平台仍然必须尝试记录尾流源,以便以后由OSPM检索。

•尽管上述描述解释了设备如何唤醒系统,但请注意,在S0系统状态下,设备也可以进入低功耗状态,并且该设备可能在S0状态下产生尾流信号,如下例所示。

3.4.5示例:Modem设备电源管理

为了说明这些电源管理方法在ACPI中是如何工作的,考虑一个集成的调制解调器。(为了方便讨论,这个示例被大大简化了。)调制解调器的电源状态定义如下(来自《调制解调器设备类电源管理规范》):

D0电话接口上的调制解调器控制器扬声器上可以挂起或摘起可以等待应答

D1低功耗模式下的Modem控制器(背景由设备保留)电话线供电或低功耗模式下的电话接口扬声器关闭必须挂起

D2与D3相同

D3调制解调器控制器关闭(上下文丢失)电话接口由电话线供电或关闭扬声器关闭挂机

modem的电源策略定义如下:

D3 D0 COM口打开

D0、D1、D3 COM口关闭

D0 D1调制解调器进入应答模式

D1 D0 modem处于应答模式时,应用程序请求拨号或电话振铃

调制解调器的唤醒策略非常简单:当话机振铃并启用唤醒功能时,唤醒系统。

基于此策略,调制解调器及其所连接的COM口可以在硬件上实现,如图3-2所示。这只是一个说明ACPI特性的示例。本示例不打算描述原始设备制造商应该如何构建硬件。

 Fig. 3.2: Example Modem and COM Port Hardware

注意:虽然上面没有显示,但每个分立的部分都有一些隔离逻辑,因此当从其上移除电源时,该部分是隔离的。隔离逻辑控制在ACPI区分描述块中作为电源资源实现,这样当电源平面顺序关闭时,设备就会被隔离。

3.4.5.1获取Modem能力

当操作系统通过读取区别定义块中的调制解调器条目来枚举调制解调器时,它决定了调制解调器的能力。在这种情况下,调制解调器的条目将报告:

设备支持D0、D1、D3:

•d0需要PWR1和PWR2作为电源,D1需要PWR1作为电源(D3隐含不需要电源)

•要唤醒系统,调制解调器不需要电源资源(意味着它可以从D0, D1, d3唤醒系统)

设置电源状态和资源的控制方法

3.4.5.2设置Modem电源状态

当操作系统运行时(G0状态),它会根据modem的电源策略将modem切换到不同的电源状态。

当应用程序打开COM口时,操作系统将调制解调器置于D0状态,从而开启调制解调器。如果应用程序将调制解调器设置为应答模式,则操作系统将调制解调器设置为D1状态等待呼叫。为了实现这种下电转换,OSPM首先运行调制解调器入口中提供的控制方法(_PS1),将设备置于D1状态。在本例中,此控制方法断言MDM_D1信号,该信号告诉调制解调器控制器进入低功耗模式。然后,OSPM检查调制解调器设备不再需要哪些电源资源。在这种情况下,不再需要PWR2。然后检查确保系统中没有其他设备需要使用PWR2电源资源。当不再需要PWR2电源平面时,OSPM使用与该电源资源相关联的“_OFF”控制方式关闭PWR2电源平面。该控制方法向核心芯片组发送适当的命令,以停止断言PWR2_EN线。

当设备处于较低的电源状态时,OSPM并不总是关闭电源资源。例如,假设PWR1电源平面也为活动行打印机(LPT)端口供电。假设用户终止了modem应用程序,导致COM端口关闭,从而导致modem关闭(状态D3)。与往常一样,OSPM通过modem的控制方式将设备切换到D3电源状态,开始状态转换过程。控制方法导致MDM_D3行断言。注意,这些寄存器可能不在设备本身中。例如,控制方法可以读取控制MDM_D3的寄存器。现在,调制解调器控制器关闭了它的所有主要功能,因此它几乎不需要从PWR1线供电,如果有的话。OSPM继续检查哪些电源资源不再需要。由于LPT端口仍处于活动状态,PWR1被占用。OSPM不关闭PWR1资源。因为COM端口是关闭的,同样的事件序列发生,使它处于D3状态,但电源资源没有关闭,由于LPT依赖。

3.4.5.3获取Modem电源状态

集成调制解调器没有电池;设备的电源状态信息仅为modem的电源状态。为了确定调制解调器当前的功率状态(D0-D3), OSPM运行一个控制方法(_PSC),该方法在调制解调器的区分定义块的条目中提供。这种控制方法从必要的寄存器中读取数据以确定调制解调器的电源状态。

3.4.5.4唤醒系统

如调制解调器功能所示,该调制解调器可以从任何设备电源状态唤醒机器。在将系统置于Sleep或LPI状态之前,操作系统会在应用程序请求能够唤醒系统的任何设备上启用唤醒。然后,它选择深度睡眠或LPI状态,该状态仍然可以提供必要的电源资源,以允许所有启用的唤醒设备唤醒系统。接下来,操作系统将这些设备置于适当的电源状态。在本例中,操作系统将调制解调器置于D3状态,因为它支持从该状态唤醒。最后,操作系统将系统置于休眠或LPI状态。

通过调制解调器唤醒系统开始时,调制解调器的电话接口在检测到电话线上的铃声时断言其铃声指示(RI)线。这一行被路由到核心逻辑以生成唤醒事件。芯片组然后唤醒系统,硬件最终将控制传递给操作系统(唤醒机制取决于睡眠状态或LPI)。操作系统运行后,会将设备置于D0状态,并开始处理modem的中断,以处理该事件。

3.5处理器电源管理

为了进一步节省“Working”状态下的功耗,当操作系统空闲时,会将CPU设置为低功耗状态(C1、C2、C3)。在这些低功耗状态下,CPU不运行任何指令,并在中断(如操作系统调度程序的计时器中断)发生时唤醒。

操作系统通过读取ACPI Power Management Timer来确定在空闲循环中花费了多少时间。这个计时器以已知的固定频率运行,允许操作系统精确地确定空闲时间。根据这个空闲时间估计,当CPU进入空闲循环时,操作系统将把CPU放入不同质量的低功耗状态(功耗和延迟不同)。

CPU状态在处理器配置和控制中有详细定义

3.6设备和处理器性能状态

介绍设备和处理器性能状态的概念。设备和处理器性能状态(Px状态)是活动/执行状态中的功耗和能力状态,C0表示处理器,D0表示设备。性能状态允许OSPM在性能和节能之间进行权衡。当设备和处理器性能状态调用不同的设备和处理器效率级别时,相对于性能和能源消耗的线性扩展,设备和处理器性能状态的影响最大。由于性能状态转换发生在活动/执行设备状态中,因此必须小心确保性能状态转换不会对系统产生不利影响。

设备性能状态的例子包括:

•硬盘驱动器提供的最大吞吐量级别对应的功耗级别。

•支持多个亮度级别的LCD面板,对应于不同的功耗级别。

•一个图形组件,在2D和3D绘图模式之间缩放性能,对应的功耗水平。

•一个音频子系统,提供多个级别的最大音量,对应于最大功耗级别。

•Direct-RDRAMTM控制器,通过调整最大带宽节流,提供多个级别的内存吞吐量性能,对应于多个级别的功耗。

处理器性能状态在处理器配置和控制中描述

3.7配置与即插即用

除了电源管理之外,ACPI接口还提供控制和信息,使OSPM能够配置主板设备所需的资源以及它们的动态插入和移除。ACPI定义块,包括区别系统描述表(DSDT)和辅助系统描述表(SSDTs),以称为ACPI命名空间的分层格式描述主板设备。操作系统通过读取ACPI命名空间来查找具有硬件id的设备来枚举主板设备。

ACPI枚举的每个设备包括ACPI命名空间中ACPI定义的对象,这些对象报告设备可能占用的硬件资源,一个对象报告设备当前使用的资源,以及用于配置这些资源的对象。这些信息将被OSPM (Plug and Play OS)用来配置设备。

注意:当准备引导系统时,平台引导固件只需要配置引导设备。这包括ACPI系统描述表中描述的引导设备,以及通过其他标准控制的设备。

3.7.1设备配置举例:配置调制解调器

回到上面的调制解调器设备示例,当操作系统在DSDT中找到调制解调器时,将为它加载驱动程序。这个表将有控制方法,给操作系统以下信息:

•设备可以使用IRQ 3, I/O 3F8-3FF或IRQ 4, I/O 2E8-2EF

•设备目前使用irq3, I/O 3F8-3FF

操作系统通过即插即用算法配置调制解调器的硬件资源。它选择一个不与任何其他设备冲突的受支持配置。然后,OSPM通过差异化定义块中的调制解调器部分提供的控制方法来配置设备。这种控制方法将写入任何I/O端口或配置设备到给定资源所需的内存地址。

3.7.2章NUMA节点

采用非统一内存访问(Non Uniform Memory Access, NUMA)体系结构的系统包含硬件资源集合,包括处理器、内存和I/O总线,这些硬件资源组成了通常所说的“NUMA节点”。处理器访问本地NUMA节点内的内存或I/O资源通常要比处理器访问本地NUMA节点外的内存或I/O资源快。ACPI定义了一些接口,这些接口允许平台在引导时静态地和在运行时从系统中添加或删除资源时动态地将NUMA节点拓扑信息传递给OSPM。

3.8系统事件

ACPI包括一个通用事件模型,用于即插即用、热和电源管理事件。有两个寄存器组成事件模型:一个事件状态寄存器和一个事件启用寄存器。

当事件发生时,核心逻辑在状态寄存器中设置一个位来指示事件。如果在使能寄存器中设置了相应的位,核心逻辑将断言SCI来通知操作系统。当操作系统接收到这个中断时,它将运行与事件状态寄存器中设置的任意位相对应的控制方法。这些控制方法使用AML命令告诉操作系统发生了什么事件。

例如,假设一台机器的所有即插即用、热和电源管理事件都连接到核心逻辑的同一个引脚上。事件状态和事件启用寄存器各只有一个位:对应于事件引脚的位。

当系统对接时,核心逻辑设置状态位并发出SCI信号。操作系统看到设置的状态位,运行该位的控制方法。控制方法检查硬件并确定事件是停靠事件(例如)。然后,它向操作系统发出停靠事件已经发生的信号,并可以明确告诉操作系统新设备将出现在设备层次结构的哪个位置。

由于事件模型寄存器是一般化的,它们可以描述许多不同的平台实现。上面的单引脚模型只是一个例子。另一种设计可能是将Plug and Play、Thermal和Power Management事件连接到三个不同的引脚,这样就会有三个状态位(和三个启用位)。然而,另一种设计可能将每个多带带的事件连接到它自己的引脚和状态位。这种设计,与单引脚设计相反,允许非常复杂的硬件,但非常简单的控制方法。连接事件的无数变化是可能的。但是,请注意,必须注意确保如果事件共享一个信号,则可以在相应的事件处理控制方法中确定生成该信号的事件,从而允许发送适当的设备通知。

3.9电池管理

电池管理策略从APM BIOS转移到acpi兼容的操作系统。电池必须符合其相关接口的要求,如本文或其他适用标准所述。操作系统可以选择改变电池的行为,例如,通过调整低电池或电池警告跳闸点。当存在多个电池时,电池子系统不需要从多带带电池的数据中进行任何“复合电池”的合成。在电池子系统不能从独立电池的数据合成“复合电池”的情况下,操作系统必须提供这种合成。

acpi兼容的电池设备需要智能电池子系统接口或控制方法电池接口。

•智能电池由操作系统直接通过嵌入式控制器(EC)控制。更多信息请参见10.1和12.9节。

•控制方法电池完全通过AML代码控制方法访问,允许OEM选择任何类型的电池和ACPI支持的任何类型的通信接口。有关更多信息,请参阅第10.2节。

本节介绍所有电池类型的通用概念。

3.9.1电池通信

Smart Battery和Control Method Battery接口都为操作系统提供了查询平台电池系统信息的机制。这些信息可能包括充满电容量、当前电池容量、放电速率和电池状况的其他测量方法。所有电池系统类型必须向操作系统提供通知,当有一个变化,如插入或移除电池,或当电池开始或停止放电。智能电池和一些控制方法电池也可以根据容量的变化发出通知。智能电池提供额外的信息,如估计的运行时间,电池能够提供多少电能的信息,以及在预定的消耗速率下的运行时间。

3.9.2电池容量

每个电池必须报告其设计容量,最新充满电的容量,和目前的剩余容量。剩余容量在使用期间会减少,而且它还会根据环境而变化。因此,操作系统必须使用最新充满电的容量来计算电池的百分比。此外,电池系统必须报告警告和低电池水平,用户必须得到通知,系统过渡到睡眠状态。这五个值的关系如图3.3所示。

一个系统可以使用速率和容量[mA/mAh]或功率和能量[mW/mWh]作为电池信息计算和报告的单位。系统中不允许混合[mA]和[mW]。

    Fig. 3.3: Reporting Battery Capacity

3.9.3电池电量计

在最基本的级别,操作系统计算剩余电池百分比[%]使用以下公式:

                                                Fig. 3.4: Formula for Remaining Battery Percentage

Control Method Battery还报告了当前漏电流率[mA或mW],用于计算剩余电池寿命。在最基本的水平上,剩余电池寿命的计算公式如下:

Fig. 3.5: Formula for the Present Drain Rate

智能电池也报告当前的消耗率,但由于它们可以直接报告估计的运行时间,这个功能应该被使用,因为它可以更准确地说明具体到电池的变化。

3.9.4电池电量不足

系统具有原始设备制造商设计的初始容量,用于警告、低容量和临界电池水平或标志。警告值和低值表示系统采取某些行动所需的能量或电池容量。临界电池水平或标志用于指示系统中的电池完全耗尽。如下图所示,OSPM可以根据oem设计的水平确定独立的警告值和电池低容量值,但不能将这些值设置得低于oem设计的值。

Fig. 3.6: Low Battery and Warning

系统中的每个控制方法电池报告原始设备制造商设计的初始警告容量和原始设备制造商设计的初始低容量,以及当电池达到或低于其临界能量水平时报告的标志。与控制方法电池不同,智能电池不一定针对特定的机器类型,因此oem设计的警告、低水平和临界水平分别在智能电池表(SBST)中描述的智能电池表中报告。

下表描述了OEM应该如何设置这些值并由操作系统解释。

Table 3.1: Low Battery Levels

Level

Description

Warning

当电池中的总可用能量(mWh)或容量(mAh)低于此水平时,操作系统将通过UI通知用户。在遇到“低”电平之前,这个值应该允许几分钟的运行时间,以便用户有时间完成任何重要的工作,更换电池,或找到电源插座将系统插入。

Low

这个值是对系统转换到任何支持睡眠状态所需的能量或电池容量的估计。当系统检测到总可用电池容量小于该值时,系统将切换到用户定义的系统状态(S1-S4)。在大多数情况下,这应该是S4,这样即使电池最终完全耗尽,系统状态也不会丢失。操作系统的设计应该考虑到多电池系统的用户在尝试更换或充电时可能会移除一个或多个电池。这可能导致剩余容量降至“低”水平以下,没有足够的电池容量让操作系统安全过渡到睡眠状态。因此,如果电池同时放电,则可能需要在两个电池都达到这一水平时启动该动作。

Critical

“临界电池状态”表示所有可用电池都已放电,似乎不能再为系统供电。当发生这种情况时,操作系统必须尝试执行如下所述的紧急关机。

对于智能电池系统,这通常会发生在所有电池达到0容量时,但OEM可能会选择在智能电池表中设置更大的值,以提供额外的安全裕度。

对于带有多个电池的控制方法电池系统,每个电池都报告标记。如果系统中的任何电池处于临界低状态,并且仍在为系统提供电力(换句话说,电池正在放电),则认为系统处于临界能量状态。_BST控制方法要求仅当所有电池

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/119627.html

相关文章

  • 数据库不定时重启排错

    摘要:问题表现数据库不定时重启怀疑,占用服务器内存过多,导致操作系统掉了占用内存最大程序,以保证服务器的稳定运行。,写入瞬时写入过多,导致不正常,从而被系统重启。从而能够排除数据库的可能性。 问题表现: 数据库不定时重启 怀疑: 1,mysql 占用服务器内存过多, 导致操作系统kill掉了占用内存最大mysql程序,以保证服务器的稳定运行。 2,mysql 写入瞬时写入过多...

    shenhualong 评论0 收藏0
  • 数据库不定时重启排错

    摘要:问题表现数据库不定时重启怀疑,占用服务器内存过多,导致操作系统掉了占用内存最大程序,以保证服务器的稳定运行。,写入瞬时写入过多,导致不正常,从而被系统重启。从而能够排除数据库的可能性。 问题表现: 数据库不定时重启 怀疑: 1,mysql 占用服务器内存过多, 导致操作系统kill掉了占用内存最大mysql程序,以保证服务器的稳定运行。 2,mysql 写入瞬时写入过多...

    邹强 评论0 收藏0
  • Android系统开发之唤醒与功耗

    摘要:一级代理的依据是我集成的代码开启了谷歌的一个服务,这个服务肯定造成了电量大量消耗。然而功耗并没有降低。谷歌的一个检测网络联通情况的服务,能和他们比吗,能导致待机功耗翻倍吗本文原作者长鸣鸟,转载不带名的严重鄙视。 本文原作者 长鸣鸟 ,转载不带名的严重鄙视。鄙人目前所在的项目为外包项目,而且属于二级代理。客户要求整机降低功耗,一级代理就喷说是我们提交的代码造成的功耗过大,甚至指名道姓说是...

    Richard_Gao 评论0 收藏0
  • Microsoft WPBT漏洞可让黑客在Windows设备上安装rootkit

    摘要:研究人员表示研究团队发现了微软功能的一个弱点,该弱点可能允许攻击者在设备启动时以内核权限运行恶意代码。缓解措施包括使用政策在告知微软这个漏洞后,微软建议使用防卫应用程序控制策略,允许控制哪些二进制文件可以在设备上运行。 .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;o...

    xialong 评论0 收藏0
  • Debian,从安装到喜欢

    摘要:前言经历了,从安装到放弃之后,我对那些所谓开箱即用的桌面彻底失去了信心。只安装基本系统。不需要的一些软件包,安装结束后,可酌情删减。使用安装时,会遇到包装不上的问题。现在的,已经不是年前穷得连一款像样的中文字体都没有的处境了。 前言 经历了「Fedora,从安装到放弃」之后,我对那些所谓「开箱即用」的 Linux 桌面彻底失去了信心。它们的确是开箱即用的,只不过对于我而言,它们开箱后很...

    everfly 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<