BIOS ACPI基础(总览)

ACPI概览

  • 什么是 ACPI
  • ACPI 术语
  • 状态
    • 全局状态(Global System States)
    • 设备电源状态(Device Power State)
    • 处理器电源状态(Processor Power State)
    • 设备和处理器性能状态( Device and Processor Performance States)

什么是 ACPI

作为标准中最广为认可的部分,电源管理经历了较多的改进。
早先,Advanced Power Management 模型(APM)将电源管理几乎完全分配给 BIOS 控制,这大大的限制了操作系统在控制电能消耗方面的功能。
当前,ACPI的电源管理特性以前只适用从便携式计算机(例 如膝上型计算机)到桌面型电脑、工作站和服务器。例如,系统可能会进入极低功率消耗状态。这些就是可利用在多数桌面型电脑上的“睡眠”和“休眠”设置。睡眠和休眠状态可以通过移动鼠标,按键盘按键,从另外一台电脑接收一条信息(如果连接到了一个局域网)或者重大系统错误来唤醒系统。
现在,如果 ACPI 在 BIOS 和其他系统硬件中被实现,它就可以由操作系统所调用(触发)。
ACPI 可以实现的功能包括:

  • 系统电源管理(System power management)
  • 设备电源管理(Device power management)
  • 处理器电源管理(Processor power management)
  • 设 备 和 处 理 器 性 能 管 理 ( Device and processor performance management)
  • 配置/即插即用(Configuration/Plug and Play)
  • 系统事件(System Event)
  • 电池管理(Battery management)
  • 温度管理(Thermal management)
  • 嵌入式控制器(Embedded Controller)
  • SMBus 控制器(SMBus Controller)
    Windows 98 是支持 ACPI 的第一个微软的操作系统。
    FreeBSD v5.0 是支持 ACPI 的第一个 UNIX 操作系统
    Linux、NetBSD和 OpenBSD 都至少有一些支持 ACPI。

ACPI 术语

  • 高级配置电源管理接口(Advanced Configuration and Power Interface (ACPI))
    按照在本文中的定义, ACPI 是一种描述硬件接口的方法,要足够抽象以允许灵活创新的硬件实现,并且足够具体以允许 shrink-wrap OS code 使用这个硬件接口
  • ACPI 硬件(ACPI Hardware)
    它是一种电脑硬件,具有支持 OSPM 所必备的特性,而且还具有特定的接口,这些接口的特性是由 ACPI 规范所指定的描述表(Description Tables)所描述的。
  • ACPI 命名空间(ACPI Namespace)
    一个树状层次机构,在受操作系统控制的内存里面,这段内存里面包含命名对象(named objects)等。这些对象(objects)可以是数据对象,控制方法对象,总线/设备包对象等。操作系统通过从驻留在 ACPI BIOS 中的 ACPI Tables 载入载出(loading and/or unloading)定义块(definition blocks),来动态改变命名空间(namespace)的内容。在 ACPI Namespace 中的所有信息都来自Differentiated System Description Table (DSDT),DSDT里面包含了 Differentiated Definition Block 还有一个或者多个其他的定义块(definition blocks)。
  • ACPI 机器语言(ACPI Machine Language (AML))
    是一种由 ACPI 兼容的 OS 支持的虚拟机的伪代码(Pseudo-code),里面写有 ACPI 控制方法和控制对象。
  • 高级可编程中断控制器(Advanced Programmable Interrupt Controller (APIC))
    一个中断控制器架构,通常多见于 Intel32 位架构(IntelArchitecture-based 32-bit)的 PC 系统。APIC 架构支持多处理器中断管理(中断均匀的分布在所有处理器),多 I/O 子系统支持,与 8259A 兼容,并且支持处理器内部中断(Inter-Processor Interrupt, IPI)。这个架构由直属于处理器的本地 APICs(Local APICs)和在(南桥)芯片中的 I/O APIC 组成。
  • ACPI 源语言(ACPI Source Language (ASL))
    一种和 AML 等同的编程语言。ASL 编译以后就是 AML镜像(AML images)。
  • 控制方法(Control Method)
    控制方法定义 OS 如何执行一个简单的硬件任务。例如,OS调用控制方法(Control Method)去读取一个高温区的温度。控制方法是用一种叫做 AML 的编码语言写的,AML 可以被兼容 ACPI 的 OS 所解释并执行。ACPI 兼容的系统必须在 ACPI table 中提供一组最小的控制方法。OS 提供一组well-defined 的控制方法,以使 ACPI table 开发者能够在他们的控制方法中引用。OEM 厂商可以通过,要么在BIOS中包括测试配置和根据需要响应的控制方法,要么为芯片组的不同修订版包含一组不同的控制方法,来使一个 BIOS 能够同时支持芯片组的不同修订版。
  • 中央处理器或者处理器(Central Processing Unit(CPU) or Processor)
  • 定义块(Definition Block)
    Definition Blockl 以数据和控制方法(编码成 AML)的形式包含关于硬件实现和配置详细信息。OEM 厂商可以在ACPI Tables 中提供一个或者多个 Definition Blocks。有一个 definition block 是必须被提供:那就是 Differentiated Definition Block,它描述了基本的系统。在装载Differentiated Definition Block 之后,紧接着 OS 会把Differentiated Definition Block 的内容插入到 ACPINamespace。OS 可以动态的从 the active ACPINamespace 插入和删除的其他 definition blocks,可以包含指向 Differentiated Definition Block 的引用。
  • 设备(Device)
  • 设备上下文(Device Context)
    设备中包含的变化的数据;通常是易失性(volatile)数据。当进入或者离开特定的状态(states)的时候,设备应该忘记这些信息,在这种情况下 OS 软件负责保存并恢复这些信息。设备上下文(Device Context)指的是包含在设备周边的小数量的信息。同样可以看看 System Context。
  • 区 分 系 统 描 述 表 ( Differentiated System Description Table (DSDT))
    OEM 厂商必须为 ACPI 兼容的 OS 提供一个 DSDT。这个DSDT 包含 Differentiated Definition Block,它能提供关于基本系统的实现和配置信息。OS 总是在 ACPI Namespace 中插入 DSDT 信息,当系统启动的时候,而且绝不会删除它。
  • 可扩展固件接口(Extensible Firmware Interface (EFI))
    它是一个在 OS 和固件平台之间的接口。这个接口的形式是一种包含有平台相关信息的数据表,and boot and run-time service calls that are available to the OS and loader。这些一起为启动 OS 提供一个标准的环境。
  • 嵌入式控制器(Embedded Controller)
  • 嵌 入 式 控 制 器 接 口 ( Embedded Controller Interface)
  • 固 件 ACPI 控 制 结 构 ( Firmware ACPI Control Structure (FACS))
    在读写内存中的一种结构,BIOS用它来实现固件和 OS之间的信息交换(handshaking )。通过 FADT(Fixed ACPI Description Table)FACS 被转到兼容 ACPI的 OS 中。FACS包含上次启动时的系统硬件签名,firmware waking vector,和 Global Lock。
  • 固定 ACPI 描述表(Fixed ACPI Description Table(FADT))
    一个包含 ACPI 硬件寄存器块(Hardware Register Block)的实现和配置详细信息的表,OS 需要用这些配置信息来直接管理 ACPI 硬件寄存器块和 DSDT 的物理地址,DSDT 则包含其他平台的实现和配置详细信息。 OEM 厂商必须在RSDT/XSDT 中提供 FADF 给兼容 ACPI 的 OS。当系统启动的时候,OS 则总是把已经定义好了的 namespace 信息(它存在于 DSDT 的 Differentiated Definition Block 中)插入到 ACPI Namespace,并且 OS 绝不会删除它。
  • 固定特征(Fixed Features)
    ACPI 接口提供的一组特征。ACPI 规范限制硬件编程模型(hardware programming model)在哪产生还有如何产生的。所有的 Fixed Features,如果被使用了,会按照本片规范中的描述进行实现,以使 OSPM 能够直接访问 Fixed Features 寄存器(fixed feature registers)。
  • 固定特征事件(Fixed Feature Events)
    一组事件,当 Fixed Feature 寄存器中的一对状态和事件位(event bits)被在同一时间设定时,这组事件会在 ACPI接口处发生。当一个 Fixed Feature 时间发生时,系统控制中断(SCI,system control interrupt)is raised。对于 ACPI Fixed Feature Events 来说 OSPM(or an ACPI-aware driver)扮演事件的处理者。
  • 固定特征寄存器(Fixed Feature Registers)
    一组在 fixed feature register space 中的硬件寄存器,fixed feature register space在系统I/O地址空间的特殊的地址里。ACPI 为 fixed features 定义了寄存器块(register blocks)(每个寄存器块从FADT那里得到一个单独的指针)
  • 一 般 目 的 事 件 寄 存 器 ( General-Purpose EventRegisters)
    通用事件寄存器包含通用特性的事件编程模型。所有通用事件都会生成scsi。
  • 一般特征(Generic Feature)
  • 全局系统状态(Global System States)
    Global System States适用于整个系统,而且对于用户是可见的。各种不同的 Global System States 在 ACPI 规范中是从 G0 标记到 G3 的。
  • 省略位(Ignored Bits)
    在 ACPI 硬件寄存器中的一些没有被使用的位(bits),在ACPI 规范中会指定这些位是“ignored”的。在读的时候,软件会忽略 ACPI 硬件寄存器中的 Ignored Bits 位(而不去读取它),写的时候,会保护 Ignored Bits(不去写这写位)。
  • Intel 个人电脑架构(Intel Architecture-Personal Computer (IA-PC))
    一种对于计算机的一般描述术语,这种计算机的处理器架构符合 Intel 处理器家族基于 Intel 架构指令集(Intel Architecture instruction set)的定义,并且有工业标准(industry-standard)PC 的结构。
  • I/O APIC( Input/Output Advanced Programmable Interrupt Controller)
    一个输入输出高级可编程中断控制器,用来从设备传递中断给处理器里面的本地 APIC(local APIC)。
  • I/O SAPIC
    输入/输出流线型高级可编程中断控制器用来从设备传递中断给处理器里面的本地 APIC(local APIC)。 应用于安腾处理器(Itanium)。 和 APIC 的不同可以看看 * Intel® Itanium® Processor Family Interrupt Architecture Guide, * PDF 文档的最后一章会讲到不同点。
  • 老式的(Legacy)
    这是一种电脑状态,在这个电脑状态下电源管理策略是由平台硬件/固件决定的。在如今的系统中,传统电源管理特性被用来支持安装有传统OS的电脑中的电源管理,这种传统 OS并不支持 OS 直接管理电源架构(OS-directed power management architecture)。
  • 老式的硬件(Legacy Hardware)
    没有 ACPI 或者 OSPM 电源管理支持的电脑系统。
  • 老式的操作系统(Legacy OS)
    一种操作系统,它不知道,也不指导系统的电源管理功能。这个类别包括支持APM 1x的操作系统。 这种 OS 不知道同时也不能直接管理系统电源。包含在这类中的是支持 APM 1.x 的操作系统。
  • 本地 APIC(Local APIC)
    接收来自 I/O APIC 的中断。
  • 本地 SAPIC(Local SAPIC)
    接收来自 I/O SAPIC 的中断。关于 SAPIC,请看“I/O SAPIC”。
  • 复 合 APIC 描 述 表 ( Multiple APIC Description Table (MADT))
    它被用在支持 APIC 和 SAPIC 的系统上,以描述 APIC 的实现。在MADT之后是一个APIC/SAPIC结构的列表,它声明了机器的APIC/SAPIC特性。
  • 对象(Object)
    ACPI Namespace 的节点就是 objects,这些 objects 被OS 用 system definition tables 中的信息插入 tree。这些objects可以是数据对象(data objects),包对象(package objects),控制方法对象(control method objects)等。包对象 refer to 其他对象(objects)。对象同样拥有类型(type),大小(size),和相对名称(relative name)。
  • 对象名(Object name)
    ACPI Namespace 的一部分。有一组规则 for naming objects。
  • 操 作 系 统 直 接 电 源 管 理 ( Operating System-directed Power Management (OSPM))
    电源(和系统)管理的一个模型,在其中 OS 扮演重要的角色,使用全局信息为手边的任务优化系统行为(system behavior)。
  • 包(Package)
    一组 objects。
  • 电源开关(Power Button)
    用户按的按钮或者其他有触点的开关(switch contact)设备,通过它可以把系统从睡眠或者 soft off 状态切换到工作状态,还可以给 OS 发送信号使 OS 从睡眠或者 soft off 状态恢复到工作状态。
  • 电源管理(Power Management)
    一种最小化系统电源消耗的软硬件机制,管理系统热量限制,延长系统电池使用时间(battery life)。电源管理在系统速度,噪音,电池使用时间,处理器速度,还有电源消耗之间取得平衡。一些system functions,比如appliance (for example, answering machine, furnace control) operations,需要电源管理。
  • 电源资源(Power Resources)
    设备需要的资源(比如 power planes 和 clock sources),设备需要在给定的电源状态下对这些资源进行操作。
  • 电源来源(Power Sources)
  • 寄存器分组(Register Grouping)
    由两个寄存器块组成(它有两个指向两个不同寄存器块的指针)。在寄存器分组(register grouping)内部的固定位可以被在两个寄存器块(register blocks)之间拆分。这就允许了在寄存器分组内部的位可以被在两个芯片(chips)之间拆分。
  • 保留位(Reserved Bits)
    在 ACPI 硬件寄存器中有一些没有被使用的位,在 ACPI 规范中被称为保留位。为了未来能够扩展,硬件寄存器保留位总是被归零,并且写入的数据不会造成其他的影响。OSPM的实现必须往所有使能和状态寄存器的保留位写“0”,同样还要往控制寄存器(control registers)的 preserve bits写“0”
  • 根 系 统 描 述 指 针 ( Root System Description Pointer (RSDP))
    兼容 ACPI 的系统必须在系统低地址空间(system’s low address space)提供一个 RSDP。这种结构的唯一目的就是提供 RSDT 和 XSDT 的物理地址。
  • 根系统描述表(Root System Description Table(RSDT))
    signature 为 RSDT的 table,它跟随在一组指向其他系统描述表(system description tables)的物理指针之后。OS通过跟随 RSDP 结构中的指针来定位 RSDT。

状态

全局状态(Global System States)

ACPI规范定义了一台兼容ACPI的计算机系统可以有以下七
个状态(所谓的全局状态):
BIOS ACPI基础(总览)_第1张图片

  • G0(S0)正常工作状态
    计算机的正常工作状态-操作系统和应用程序都在运行。CPU(s)执行指令。 在这个状态下(即没有进入 G1 睡眠),CPU 和像硬盘、DVD 驱动器等等这些的设备可以一再的进入和从低能源状态回来,叫做 C0-Cn 和 D0-D3。(例如膝上型计算机,当使用电池运行的时候通常关掉所有当前未使用的设备;
    一些桌面型计算机也这么做来减少噪声。)
  • G1 睡眠
    细分为从 S1 到 S4 这四种状态。系统从这几种状态被唤醒到 G0 运行(唤醒等待时间)所需的时间
    最短的是 S1,较短的是 S2 和 S3,不太短的是 S4。
    • S1:最耗电的睡眠模式。处理器的所有寄存器被刷新,并且 CPU 停止执行指令。CPU 和内存的电源一直维持着,一些设备如果没有被使用那么就会被停止供电。这种模式通常指上电待机或者简单叫做 POS,特别在 BIOS 设置界面上。一些新式的计算机不再支持 S1;老式的电脑对 S1 支持可能要比 S3 好。
    • S2:一个比 S1 更深的睡眠状态不过已经不给CPU 供电了;然而,通常这种模式并不被采用。
    • S3 :在 BIOS 中叫做"挂到内存" (Suspend to RAM/STR) 在 Windows XP 以后的 Windows版本和一些 Linux 发行版中叫做"待机(Standby)", 在 Windows Vista 和 Mac OS X 则叫做"睡眠(Sleep)",虽然 ACPI 规范仅仅提到术语"S3"和"睡眠(Sleep)"。在这个状态下,主存储器(RAM)仍然有电源供给,尽管它也是几乎唯一的有电源供给的原件。因为操作系统、所有应用程序和被打开的文档等等的状态都是保存在主存储器中,用户可以把工作恢复到正好上次他们保持的状态- 计算机从S3状态回来时主存储器的内容和它进入S3 状态时候的内容是相同象的。(规范中提到了S3 和 S2 是相当类似的,只有更多的组件在 S3 状态下会被关掉电源。) 相比较 S4 来说 S3 有两个好处;计算机恢复的过程比重启要快,第二,如果任何正在运行的应用程序(被打开的文档等等)有私有信息在里面,这些信息是不会被写到硬盘上的。然而,在系统不能被唤醒比如遇到了电源故障的时候, 高速缓冲存储器可能会被 flushed来防止数据毁坏。
    • S4: 在 Windows 中叫休眠, 在 Mac OS X 中叫作安全睡眠,也称为挂到硬盘,虽然 ACPI 规范中只提到了一个术语S4(main article:Hibernate(OS feature))。在这个状态下,所有主存储器的内容被储存在非挥发性存储器,例如硬盘,保护操作系统当前的状态,包括所有应用程序,打开的文档等.这意味着从 S4恢复后,用户可以恢复到原本的工作状态,采用的方法和 S3 是一样的。S4和 S3 之间的差异是,除了把主存储器中的内容移进移出所消耗的时间以外,在 S3 状态下的时候如果一旦停电了,所有主存储器上的数据就会丢失, 包括所有的没有保存的文档,而在 S4 状态下则没有影响.S4 和其他的 S 状态有很大不同,事实上更类似 G2Soft Off 状态和 G3 Mechanical Off 状态,而不是 S1-S3.在 S4 状态下的系统同样可进入G3(Mechanical Off)状态,并且保留 S4 时候的状态信息.所以它可以恢复到以前的运行状态在关掉电源之后.
  • G2(S5)Soft Off–G2,S5,和 Soft Off 都是相同的叫法。G2 和 G3Mechanical Off 几乎是相同的,但有些部件仍然带电,使计算机仍然可以被键盘、时钟、modem(电话唤醒)、LAN(网络唤醒)还有 USB 设备所唤醒。[1]在启动系统从 G2 恢复到 G0 正常工作模式的过程中,无论是 G3 Mechanical Off还是 G2都得运行启动程序来启动操作系统。
  • 此外,当操作系统在不支持 ACPI 的情况下运行,这种状态被定义为Legacy。在这个状态下,硬件和电源不是通过ACPI来管理的,实际上已经禁用了 ACPI。
    (参考资料:ACPI 规范 3.0b 版, 查看 chapter 7.3.4)

设备电源状态(Device Power State)

设备状态对于用户来说往往是不可见的,比如当一个设备已经没有电源供应的时候,可能整个系统还是在工作状态,光驱应该是一个很好的例子吧。 设备状态是与设备相关的状态,他们的定义和以下四个因素有关:

  • 电源消耗(Power consumption),设备用电量的多少。
  • 设备状态/环境(Device context),设备(从 D0 进入其他状态的时候)保留了多少原来的状态/环境。操作系统负责保存丢失的设备状态/环境。
  • 设备驱动(Device driver),让设备恢复到 D0,驱动程序应该做什么(或者做多少)。设备状态有一下几个:
    1. D0 Fully-On 是(正常)工作状态,电源消耗量最多,设备是完全被相应的,并且设备保留了全部的设备状态/环境。
    1. D1 和 D2 是中间电源状态,它的定义根据设备的不同而有所不同。
    1. D3 Off 是设备电源关闭所以对总线来说是没有相应的。设备状态/环境全部丢失,操作系统会重新初始化设备当重新给它加电的时候。这个状态下的设备恢复到D0 相比之下需要最长的时间。
设备状态总结
设备状态 电源消耗 保留设备状态信息 驱动程序恢复
D1 D0>D1>D2>D3 >D2
D2 D0>D1>D2>D3 >D1
D3 - Off 0 没有保留 完全初始化并且装载

处理器电源状态(Processor Power State)

处理器电源状态(C0 到 C3 状态,后面还有 Cn)是指在 G0状态下(只对 G0 状态有效,在其他状态下不予讨论)的处理器电能消耗和温度管理的状态。
只有 C0 状态下 CPU 才会执行指令,C1 到 Cn 状态下 CPU都处于各种不同程度的睡眠状态(Sleeping States),在这睡眠状态下,CPU 都有一个恢复到 C0 的唤醒时间(latency),它是和 CPU 的电能消耗有关的,通常,用电能量越小意味着得花更长的时间恢复到 C0 状态,也就是唤醒时间越长。
当在 C0 状态下时,ACPI允许通过定义节流阀(throttling)过程,和通过进去多性能状态(multiple performancestates,P-states)来改变处理器的性能。
各个状态的定义如下所示:

  • C0是正常工作状态,当处理器处于这种状态下的时候,它能正常处理指令。
  • C1(通常称为 Halt) 拥有最短的唤醒时间,这个延时必须短到操作系统软件使用 CPU 的时候不会考虑到唤醒时间方面的因素。一些处理器,比如说奔腾 4(Pentium 4),支持 C1E(Enhanced C1 state)这样的低电能消耗技术。这个状态是不被软件所见的。
  • C2 (通常称为 Stop-Clock),这个状态下处理器维持着所有的软件所见的状态信息,但是需要更长的时间来恢复到 C0。这个状态下情况最坏的硬件唤醒时间是由ACPI 固件提供,并且操作系统软件可以利用这些信息来决定是采用 C1 而不是 C2 状态,C2 比 C1 更省电。
  • C3 (通常称为 Sleep),相比 C1 和 C2 更省电了。这个状态下情况最坏的硬件唤醒时间是由 ACPI 固件提供,并且操作系统软件可以利用这些信息来决定是采用 C2而不是 C3 状态,当处于 C3 状态时,处理器缓存保留了所有的状态信息,但是忽略所有的侦听。操作系统软件负责保证缓存数据的一致性。

设备和处理器性能状态( Device and Processor Performance States)

设备和处理器性能状态(Px 状态)是在 C0(对于处理器)和 D0(对于设备)下定义的电源消耗和能力的状态。性能状态允许 OSPM 在性能和能源消耗之间取得平衡。P0 是坐高性能状态,从 P1 到 Pn 是连续的低性能状态,最高限制 n为 16。

  • P0 状态,使用最大性能并且消耗的电能最多。
  • P1 状态,性能比前者要小,但是消耗电能也相应少一些。
  • Pn 状态,n 是的大小是依赖于处理器和设备的,处理器和设备可以定一个任意的不超过 16 的数字。这个状态在 Intel 处理器中称为 SpeedStep,在 AMD 处理器中称为 PowerNow!或 Cool’n’Quiet,在 VIA 处理器中称为 PowerSaver。

你可能感兴趣的:(BIOS,acpi)