在ACPI提供的各类表中,DSDT描述符表最为重要。当操作系统收到ACPI中断请求,即SCI中断请求时,将根据DSDT中提供的代码对相应的ACPI寄存器进行操作,从而完成所需的功能。图14-4 DSDT、ACPI寄存器和操作系统之间的关系下文将举例说明图14-4中各模块之间的关系,以及系统软件如何处理ACPI表。在ACPI中,每一个设备使用的标识不相同。当GPEx_STS寄存器的第0位为1时,将进一步检查PBP和PBW位。......
2023-10-20
ACPI规范使用了一系列描述符表管理处理器系统的部分硬件信息,而且包含与这些硬件相关的操作,并使用RSDP指针(Root System Description Pointer)指向这些描述符表。ACPI规范定义了以下描述符表。
●XSDT(Extended System Description Table)。XSDT包含ACPI规范的版本号和一些与OEM相关的信息,并含有其他描述符表的64位物理地址,如FADT(Fixed ACPI De-scription Table)和SSDT(Secondary System Description Table)等。
●RSDT(Root System Description Table)。RSDT包含的信息与XSDT基本一致,只是在RSDT中存放的物理地址为32位。在V1.0之后的ACPI版本中,该描述符表被XSDT取代。但是有些BIOS可能会为操作系统同时提供RSDT和XSDT,并由操作系统选择使用RSDT还是XSDT。
●FADT。FADT包含ACPI寄存器组使用的系统I/O端口地址、FACS(Firmware ACPI Control Structure)和DSDT(Diffe rentiated System Description Table)的基地址等信息。FADT中还存放了一个“Boot Architecture Flags”字段,在这个字段中存放一些有关处理器系统初始化的基本信息,详见[Advanced Configuration and Power Interface Specifica-tion 4.0]的Table 5-11。值得注意的是,FADT的识别标识是“FACP”,在ACPI表中,FACP.dat文件存放处理器系统的FADT表。
●FACS。FACS包含OS与BIOS进行数据交换使用的一些参数,包括处理器系统的硬件签名,以及Firmware在处理器系统被唤醒后使用的、用来通知操作系统Firmware工作已经告一段落的中断向量,即Firmware Waking Vector。在处理器被唤醒之后,Firm-ware将执行一些基本的加载操作,并通过Firmware Waking中断向量,将控制权交还给操作系统,由操作系统完成其他的唤醒操作。在FACS中,还包含一个全局锁(Global Lock),当Firmware和操作系统对某些临界资源进行访问时,需要使用该锁。
●DSDT。该表是ACPI规范最复杂,同时也是最重要的一个表。该表包含处理器系统使用的硬件资源以及对这些硬件资源的管理操作。SSDT可以对DSDT进行补充,在一个处理器系统中可以存在多个SSDT。
●ACPI规范还定义了一些其他表项,如MADT(Multiple APIC Description Table)、SBST(Smart Battery Table)、SRAT(System Resource Affinity Table)和SLIT(System Locality In-formation Table)等一系列表项。其中MADT描述处理器系统的中断资源和多处理器相关的配置信息;SBST与电池的管理相关;而SRAT和SLIT与NUMA系统的资源管理相关。
在ACPI 4.0中,上述这些表的组成结构如图14-3所示。
如上图所示,在RSDP中提供了两个物理地址分别指向RSDT和XSDT。其中在RSDT和在RSDT指向的其他描述符表中,如SSDT和FADT都使用32位物理地址,而在XSDT和在XSDT指向的其他描述符表中都使用64位物理地址。在ACPI 2.0规范之后的版本,均提供对XSDT的支持,即使用64位物理地址。
图14-3 ACPI表的组成结构
ACPI表存放在处理器的主存储器中,当处理器系统初始化时,BIOS将这些表放入特定物理内存,之后系统软件可以访问这些表项。Linux系统提供了一系列操作ACPI表的工具,用户可以使用这些工具读取在系统内存中的ACPI表,并将其分解为DSDT、XSDT等描述符表。其使用方法如源代码14-12所示。
源代码14-12 ACPI表的提取方法(www.chuimin.cn)
$acpidump>tylersburg-hedt.out
$acpixtract-a tylersburg-hedt.out
$iasl-d APCI.dat
$iasl-d DSDT.dat
...
$iasl-d XSDT.dat
首先用户可以使用acpidump命令将ACPI表从内存读出,之后存放到tylersburg-hedt.out文件中;然后使用acpixtract命令将tylersburg-hedt.out文件存放的ACPI表全部分解,并得到一系列后缀为.dat的文件,其中RSDP.dat文件存放RSDT和XSDT表的物理地址;RSDT.dat文件存放对RSDT的描述;而XSDT.dat文件存放对XSDT的描述。
这些.dat文件使用AML语法规范,操作系统中的AML解释器可以分析这些在.dat文件中的数据。但是这些.dat文件并不适合阅读,用户可以使用iasl命令将这些.dat文件转换为相应的.dsl文件。在.dsl文件中存放ASL(ACPI Source Language)源代码,ASL是一种高级语言,便于阅读和编写。在Linux系统中,可以使用以下方法调试ACPI表。通过源代码14-12,可以得到DSDT.dsl文件,之后可以使用源代码14-13所示的方法调试DSDT表。
源代码14-13 DSDT表的调试
经过以上操作,重新编译Linux内核,并用这个内核重新引导Linux系统后,Linux系统将使用源代码14-13指定的DSDT.hex替代BIOS提供的DSDT表。采用这种方法,可以对DSDT表进行调试。
有关PCI Express体系结构导读的文章
在ACPI提供的各类表中,DSDT描述符表最为重要。当操作系统收到ACPI中断请求,即SCI中断请求时,将根据DSDT中提供的代码对相应的ACPI寄存器进行操作,从而完成所需的功能。图14-4 DSDT、ACPI寄存器和操作系统之间的关系下文将举例说明图14-4中各模块之间的关系,以及系统软件如何处理ACPI表。在ACPI中,每一个设备使用的标识不相同。当GPEx_STS寄存器的第0位为1时,将进一步检查PBP和PBW位。......
2023-10-20
ACPI规范是x86处理器使用的Firmware接口标准,操作系统需要获得的处理器底层信息基本上都可以从ACPI表中获得。目前在x86处理器中,新引入的一些与处理器体系结构相关的特性,基本上都只使用ACPI机制进行描述,而不再使用BIOS。因此为了深入理解x86处理器平台,需要了解一些与ACPI相关的基本知识。因为这些“非标”外设的管理由ACPI BIOS完成,x86处理器使用ACPI表描述这些“非标”外设,并将这个ACPI表存放到BIOS中。......
2023-10-20
在一段程序中,存在大量的分支预测指令,因而在某种程度上增加了指令Fetch的难度。但是分支预测单元并不会每次都能正确判断分支指令的执行路径,这为指令Fetch制造了不小的麻烦,在这个背景下许多分支预测策略应运而生。在PowerPC处理器中,条件转移指令“bc”表示Taken;而“bc-”表示Not Taken。BTB的功能相当于存放转移指令的Cache,其状态机转换也与Cache类似。转移指令B执行完毕后,将实际执行结果Rc更新到BHR寄存器中,并同时更新PHT中对应的Entry。......
2023-10-20
如图8-6所示,Detect状态由Detect.Quiet、Detect.Active两个子状态组成。在正常情况下,PCIe链路将从Detect状态迁移到Polling状态。而在Detect状态中,PCIe设备的发送逻辑TX将直接进入到“Electrical Idle”状态,并不会使用Idle序列通知对端设备的接收逻辑RX。当PCIe设备处于Detect.Quiet状态超过12ms之后,或者检测到PCIe链路上的任何一个Lane退出“Electrical Idle”状态时,PCIe设备将进入Detect.Active状态。......
2023-10-20
而PCI总线的突发传送仍然存在缺陷。为此PCI-X总线使用基于数据块的突发传送方式,发送端以ADB为单位,将数据发送给接收端,一次突发读写为一个以上的ADB。采用这种方式,接收端可以事先预知是否有足够的接收缓冲,接收来自发送端的数据,从而可以及时断连当前总线周期,以节约PCI-X总线的带宽。因此在PC领域和嵌入式领域很少有基于PCI-X总线的设备,PCI-X设备仅在一些高端服务器上出现。因此本节不对PCI-X总线做进一步描述。......
2023-10-20
MSI Capability结构共有四种组成方式,分别是32和64位的Message结构,32位和64位带中断Masking的结构。MSI Capability寄存器的结构如图10-1所示。图10-1 MSI Capability结构●Capability ID字段记载MSI Capability结构的ID号,其值为0x05。表10-1 MSI Cabalibities结构的Message Control字段[67] 此时PCI设备配置空间Command寄存器的“Interrupt Disable”位为1。当MSI En able位有效时,该字段存放MSI报文使用的数据。该字段需要与Mask Bits字段联合使用。......
2023-10-20
当TLP的TH位为1时,表示在当前TLP中包含Processing Hint字段,PH字段由PCIe V2.1总线规范引入。Processing Hint字段的产生与智能设备的大量涌现密切相关。有些智能设备,如在显卡中使用的GPU和GP-GPU的处理能力甚至超过多数通用处理器。该TLP Prefix也被称为TPH TLP Prefix,其格式如图6-15所示。TPH Requester Capability结构使用ST Mode Sele ct字段定义了ST字段的三种使用模式。......
2023-10-20
使用N123算法时,需要设置N1缓冲处理这些因为网络延时产生的报文。希望读者认真理解N1缓冲在N123算法中的意义。N123+算法基于N123算法,但是发送Credit报文的方式略有不同。N123算法要求Cur-rent节点每转发N2个报文后,才能给Upstream节点发送一个Credit报文;而N123+算法除了要求同样的规则之外,还要求Current节点在一个时间段RTT中至少发送一个Credit报文,即发送上一个Credit报文之后,即便Current节点没有向Downstream转发了N2报文,在一个时间段RTT中也至少要向Upstream节点发送一次Credit报文。......
2023-10-20
相关推荐