ACPI SPEC定义了ACPI-compatible OS与BIOS之间的接口,ACPI Tables就是BIOS提供给OS的硬件配置数据,包括系统硬件的电源管理和配置管理。app
BIOS在POST过程当中,将RSDP存在0xE0000--0xFFFFF的内存空间中,而后Move RSDT/XSDT, FADT, DSDT到ACPI Recleam Area, Move FACS到ACPI NVS Area,最后填好表的Entry连接和Checksum。ide
控制权交给OS以后,由OS来开启ACPI Mode,首先在内存中搜寻ACPI Table,而后写ACPI_Enable到SMI_CMD,SCI_EN也会被HW置起来。post
ACPI Tables根据存储的位置,能够分为:spa
1). RSDP位于F段,用于OSPM搜索ACPI Table,RSDP能够定位其余全部ACPI Table指针
2). FACS位于ACPI NVS内存,用于系统进行S3保存的恢复指针,内存为NV Storeorm
3). 剩下全部ACPI Table都位于ACPI Reclaim内存,进入OS后,内存能够释放blog
ACPI Table根据版本又分为1.0B,2.0,3.0,4.0。接口
2.0之后,支持了64-bit的地址空间,所以几个重要的Table会不大同样,好比:RSDP,RSDT,FADT,FACS。简单的列举一下不一样版本的ACPI Table:ip
1) ACPI 1.0B:RSDP1,RSDT,FADT1,FACS1,DSDT,MADT,SSDT,HPET,MCFG等内存
2) ACPI 3.0 :RSDP3,RSDT,XSDT,FADT3,FACS3,DSDT,MADT,HPET,MCFG,SSDT等
以系统支持ACPI3.0为例子,说明系统中ACPI table之间的关系如图:
其中绿色表明在内存F段,蓝色是ACPI Reclaim内存,红色是NV store内存
RSDP:Root System Description Pointer
OSPM得到RSDP的方式:
a>. 在Legacy系统下,在Memory Space 0xE0000---0xFFFFF中 Search RSDP的signature: “RSD PTR ”。
b>. 在UEFI系统下, 在EFI System Table里的EFI Configuration Table中Search RSDP的GUID。
1. RSDT(Root System Description Table) Signature: ‘RSDT’
为了兼容ACPI1.0而存在,XSDT取代了RSDT的功能。 若是XSDT存在,ACPI-compatible OS 必须使用XSDT。
2. XSDT(Extended System Description Table) Signature: ‘XSDT’
一组64bit的物理指针,指明其余system description tables的Address。
3. FADT(Fixed ACPI Description Table) Signature: ‘FACP’
FADT包含了OS直接管理ACPI Hardware Register Blocks所必须的Fixed Hardware ACPI information,好比PM1a_EVT_BLK, PM1b_EVT_BLK, PM1a_CNT_BLK, PM1b_CNT_BLK, PM2_CNT_BLK, PM_TMR_BLK, GPE0_BLK, and GPE1_BLK这些的base address。
经过FADT能够找到FACS和DSDT。
4. FACS(Firmware ACPI Control Structure) Signature: ‘FACS’
The FACS contains the system’s hardware signature at last boot, the firmware waking vector, and the Global Lock。
hardware signature:由BIOS搜集,当系统从S4唤醒的时候,OSPM经过比较当前的和已保存的hardware signature是否一致来肯定系统可否恢复
firmware waking vector:在休眠以前,OSPM来填写这一项,在POST时,BIOS来肯定这一项是否不为空,若不为空则经过jump到这个Address来把控制权交给OSPM。
5. DSDT(Differentiated System Description Table) Signature: ‘DSDT’
DSDT包含了Differentiated Definition Block, 它们包含了整个系统的实现和配置信息。OS在系统启动的过程当中将DSDT的information插入到ACPI Namespace, 并且从不会被移除。
6. SSDT(Secondary System Description Table) Signature: ‘SSDT’
SSDT是DSDT的继续。能够有多个SSDT存在。OSPM在Load DSDT 建立出ACPI Namespace以后,会去逐个Load SSDT。注意:附加的tables 只能add data, 而不能override data。
7. MADT(Multiple APIC Description Table) Signature: ‘APIC’
描述OS支持APIC/SAPIC所必须的information,好比IO-APIC address/Local-APIC address等等。
8. SBST(Smart Battery Table) Signature: ‘SBST’
若是系统支持符合Smart Battery Specification V1.0 1.1的电池,则SBST就会存在。主要用来指明:
Warning Energy Level:Warning时的Energy Level
Low Energy Level: OSPM即将进入Sleep状态时的Energy Level
Critical Energy Level: OSPM将要执行紧急关机时的Energy Level
9. MCFG(PCI-Memory Mapped Configuration table and sub-table) Signature: 'MCFG'
PCI Express memory mapped configuration space base address Description Table