可信计算学习笔记 - ACPI
可信计算规范 可信平台主板功能接口【GB/T 29827-2013】
说明:
ACPI(Advanced Configuration and Power Interface,高级配置和电源接口)是在系统启动阶段由BIOS/UEFI收集系统各方面信息并创建的,它大致以树形的组织形式(如下图所示)存在系统物理内存中。
整个ACPI表以RSDP(Root System Descriptor Pointer Table,根系统描述符指针表)为入口点,存放了R(X)DST的地址。RSDT(根系统说明表)是32位地址,XSDT是64位地址,其功能一样。
每个非叶子节点都会包含指向其他子表的指针,各个表都会有一个表头,在该表头中包含了相应的Signature,用于标识该表,有点类似与该表的ID,除此之外,在表头中还会包含Checksum、Revision、OEM ID等信息。所以查找ACPI表的关键就是在内存中定位到RSDP表。
对于基于Legacy BIOS的系统而言,RSDP表所在的物理地址并不固定,要么位于EBDA(Extended BIOS Data Area)(位于物理地址0x40E)的前1KB范围内;要么位于0x000E0000 到0x000FFFFF的物理地址范围内。
Linux kernel在启动的时候,会去这两个物理地址范围,通过遍历物理地址空间的方法寻找RSDP表,即通过寻找RSDP表的Signature(RSD PTR)来定位RSDP的位置,并通过该表的length和checksum来确保找到的表是正确的。
注意XDST第一个Entry一定是FADT (Fixed ACPI Description Table,固定ACPI描述表) ,主要放了一些硬件信息和DSDT的地址,其Signature是“FACP”。
ACPI是BIOS到操作系统的一系列接口,ACPI接口中包含了很多预定义的表格,这些表格的定义存储在BIOS芯片中,由BIOS生成到内存中提交给操作系统,各种不同的操作系统都可以提取BIOS提交的原始ACPI表格文件,其中最重要的就是DSDT和SSDT表格。
DSDT,Differentiated System Description Table,差分系统描述表,包含大部分硬件信息的主体表格。
SSDT,Secondary System Description Table,辅助系统描述表,包含少部分硬件补充信息的表格。
RSDP Structure:BIOS刚开机的时候就会加载它到内存1M以内的地方,里面含有一个RSD PTR指针,这个指针指向了RSDP Table
RSDP:包含了其他ACPI表的位置信息,操作系统通过Signature从RSDP表中获取其他所有表的位置。为了兼容ACPI1.0标准而保留。
XSDT:Extended System Description Table,ACPI3.0中取代RSDP,指向了FADT表。
FADT:Fixed ACPI Description Table,包含了一些ACPI固定表的位置,比如DSDT表的位置。其Signature是“FACP”。
RSDT:Root System Description Table,根系统描述表,其中第一个表是XSDT。
FACS:位于ACPI NVS内存空间,保存了S3休眠状态下的恢复指针。
DSDT:ACPI标准中规定了一些硬件和规格,而DSDT就是为了记录每台电脑独特于ACPI的规范部分。换句话说,因为ACPI只规定了最基础的部分,所以DSDT就是整个电脑的配置信息。
SSDT:DSDT的补充部分。加载了DSDT以后会按顺序加载SSDT。SSDT的内容并不能覆盖DSDT,只能作为补充。
APIC:高级可编程中断控制器。可以控制I/O中断和处理器内部中断。包含了处理器APIC和南桥中的I/O APIC。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)