ACPI 中文文档ACPI 中文文档
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
  • 第 5 章

    • 总览
    • 5.1. 系统描述表架构概述
    • 5.2. ACPI 系统描述表
      • 5.2.1. 保留位和字段
      • 5.2.2. 兼容性
      • 5.2.3. 地址格式
      • 5.2.4. 通用唯一标识符 (UUID)
      • 5.2.5. 根系统描述指针 (RSDP)
      • 5.2.6. 系统描述表头
      • 5.2.7. 根系统描述表 (RSDT)
      • 5.2.8. 扩展系统描述表 (XSDT)
      • 5.2.9. 固定 ACPI 描述表 (FADT)
      • 5.2.10. 固件 ACPI 控制结构 (FACS)
      • 5.2.11. 定义块
      • 5.2.12. 多个APIC描述表(MADT)
      • 5.2.13. 全局系统中断
      • 5.2.14. 智能电池表 (SBST)
      • 5.2.15. 嵌入式控制器启动资源表 (ECDT)
      • 5.2.16. 系统资源关联表 (SRAT)
      • 5.2.17. 系统局部性信息表 (SLIT)
      • 5.2.18. 更正平台错误轮询表 (CPEP)
      • 5.2.19. 最大系统特性表 (MSCT)
      • 5.2.20. ACPI RAS 功能表 (RASF)
      • 5.2.21. 内存电源状态表 (MPST)
      • 5.2.22. 启动图形资源表 (BGRT)
      • 5.2.23. 固件性能数据表 (FPDT)
      • 5.2.24. 通用定时器描述表 (GTDT)
      • 5.2.25. NVDIMM 固件接口表 (NFIT)
      • 5.2.26. 安全设备 (SDEV) ACPI 表
      • 5.2.27. 异构内存属性表(HMAT)
      • 5.2.28. 平台调试触发器表 (PDTT)
      • 5.2.29. 处理器属性拓扑表 (PPTT)
      • 5.2.30. 平台健康评估表 (PHAT)
    • 5.3. ACPI 命名空间
    • 5.4. 定义块编码
    • 5.5. 控制方法和 ACPI 源语言 (ASL)
      • 5.5.1. ASL 报表
      • 5.5.2. 控制方法执行
        • 5.5.2.1. 论点
        • 5.5.2.2. 方法调用约定
        • 5.5.2.3. 局部变量和本地创建的数据对象
        • 5.5.2.4. 进入运营区域
          • 5.5.2.4.1. 运营地区
          • 5.5.2.4.2. CMOS 协议
          • 5.5.2.4.3. PCI 设备 BAR 目标协议
          • 5.5.2.4.4. 声明IPMI运营区域
          • 5.5.2.4.5. 声明 GeneralPurposeIO 操作区域
          • 5.5.2.4.6. 声明 GenericSerialBus 操作区域
            • 5.5.2.4.6.1. 声明 GenericSerialBus 字段
            • 5.5.2.4.6.2. 声明和使用 GenericSerialBus 数据缓冲区
            • 5.5.2.4.6.3. 使用通用串行总线协议
          • 5.5.2.4.7. 声明PCC运营区域
    • 5.6. ACPI 事件编程模型
      • 5.6.1. ACPI 事件编程模型组件
      • 5.6.2. ACPI 事件类型
      • 5.6.3. 固定事件处理
      • 5.6.4. 通用事件处理
      • 5.6.5. GPIO 信号 ACPI 事件
      • 5.6.6. 设备对象通知
      • 5.6.7. 设备类特定对象
      • 5.6.8. 对象、方法和资源的预定义ACPI名称
      • 5.6.9. 中断信号ACPI事件
      • 5.6.10. 使用设备 _PRW 对象管理唤醒事件
    • 5.7. 预定义对象
    • 5.8. 系统配置对象

5.2.21. 内存电源状态表 (MPST)

下表描述了新ACPI内存电源状态表(MPST)的结构。该表定义了配置的内存电源节点拓扑,如前面第 1 节 中所述。配置包括指定内存电源节点及其相关信息。每个内存电源节点都使用地址范围、支持的内存电源状态来指定。存储器功率状态将包括硬件控制和软件控制的存储器功率状态。给定内存电源节点可以有多个条目以支持非连续地址范围。 MPST表还定义了OSPM和平台运行时固件之间的通信机制,用于触发在平台运行时固件中实现的软件控制的存储器电源状态转换。

下图提供了MPST表的结构化组织概览。

../_images/MPST_ACPI_table_overview.PNG

图 5.5 MPST ACPI 表概览

表 5.70 MPST 表结构 字段字节长度字节偏移描述
标题
- 签名40‘MPST’。内存电源状态表签名
- 长度44整个MPST 的长度(以字节为单位)。长度表示表末尾的 Entry 字段的数量
- 修订181
- 校验和19整个表的总和必须为零
- OEMID61010 OEM ID
- OEM 表 ID81616对于内存电源状态表,表ID是制造商型号ID
- OEM 修订424OEM 内存电源状态修订表 OEM 表 ID
- 创建者ID42828创建该表的实用程序的供应商ID
- 创建者修订43232修改创建表的实用程序
内存PCC
- MPST 平台通信通道标识符13636 MPST平台通信通道的标识符。
- 保留33737保留
内存电源节点
- 内存电源节点数240内存电源节点结构条目数
- 保留24242保留
- 内存电源节点结构[内存电源节点计数]——该字段提供有关系统中存在的内存电源节点的信息。该信息包括内存节点 ID、支持的电源状态和相关延迟。该字段的更多详细信息在内存功率节点中指定。
内存电源状态特征
- 内存电源状态特征计数2—内存电源状态特征结构条目数
- 保留2保留
- 内存电源状态特征结构[m]——该字段提供系统支持的内存电源状态信息。该信息包括功耗、转换延迟、相关标志。

5.2.21.1. MPST PCC 子通道

平台在此字段中提供的 MPST PCC 子通道标识符值应编程到 PCC 通信子空间结构的“类型”字段。MPST 表通过该标识符引用给定平台中的 PCC 子空间,如表 5.70 所示。

5.2.21.1.1. 使用PCC寄存器

OSPM 将写入PCC 寄存器,方法是将寄存器值填入PCC 子通道空间并发出PCC 执行命令。参见下表。所有其他命令值均被保留。

表 5.71 PCC MPST 平台通信通道使用的命令代码 命令描述
0x00-0x020x00-0x02
0x030x03执行MPST命令。
0x04-0xFF0x04-0xFF
表 5.72 MPST 平台通信通道共享内存区域 字段字节长度
------
签名4
命令2
状态2
交流空间
MEMORY_POWER_-COMMAND_REGISTER4
Write:
 1 to this field to GET the memory power state
 2 to this field to set the memory power state
 3 - GET AVERAGE POWER CONSUMED
 4 - GET MEMORY ENERGY CONSUMED

MEMORY_POWER_-STATUS_REGISTER | 4 | 12 | 12位[3:0]:状态(特定于MEMORY_POWER_COMMAND_REGISTER):

-  0000b = Success
-  0001b = Not Valid
-  0010b = Not Supported
-  0011b = Busy
-  0100b = Failed
-  0101b = Aborted
-  0110b = Invalid Data
-  Other values reserved

位 [4]:特定于以下MEMORY_POWER_COMMAND_REGISTER值的后台活动:

3 - GET AVERAGE POWER CONSUMED
4 - GET MEMORY ENERGY CONSUMED
0b = inactive
1b = background memory activity is in progress

位[31:5]:保留 POWER_STATE_ID | 4 | 16 | 16完成GET操作后,OSPM将从该字段读取当前平台状态ID。在SET操作之前,OSPM会使用需要触发的电源状态值填充此字段。电源状态值将基于平台功能。 MEMORY_POWER_NODE_ID | 4 | 20 |该字段标识命令的内存电源节点号。 MEMORY_ENERGY_CONSUMED | 8 | 24 |该字段返回构成上一个字段中指定的MEMORY_POWER_NODE_ID的内存消耗的能量。该字段全为1表示平台没有实现该字段。 EXPECTED_AVERAGE_-POWER_CONSUMED | 8 | 32 | 32该字段返回由MEMORY_POWER_NODE_ID组成的存储器的预期平均功耗。该字段全为1表示平台没有实现该字段。

注意事项

OSPM 应使用计算出的内存功耗与预期平均功耗的比率来确定内存电源管理操作。

5.2.21.2. 内存电源状态

内存电源状态表示平台处于G0工作状态时内存电源节点(映射到内存地址范围)的状态。内存电源节点可能处于活动状态(名为MPS0)或电源管理状态之一MPS1-MPSn。

应该注意的是,活动内存电源状态 (MPS0) 并不排除该状态下的内存电源管理。它仅表明MPS0中的任何活动状态内存电源管理对于OSPM来说都是透明的,更重要的是在限制内存占用和活动方面不需要OSPM的帮助。

MPS1-MPSn状态的特点是从状态退出到MPS0状态时的非零退出延迟。这些状态可能需要显式OSPM启动的进入和退出、显式OSPM启动的进入但自主退出或自主进入和退出。在所有三种情况下,这些状态都需要明确的OSPM操作来隔离和释放相应内存电源节点的内存地址范围。

可以在渐进空闲时进入更积极的内存电源状态(例如,从MPS1到MPS2)的转换,但需要通过MPS0进行转换(即\(MPS1 \rightarrow MPS0 \rightarrow MPS2\))。电源状态转换图如图​​5.6所示。

在OSPM请求存储器电源状态之后,短暂的活动可能会将存储器电源节点返回到MPS0状态。如果平台能够在随后的空闲周期返回到存储器功率状态,则平台必须将先前请求的存储器功率状态视为持久提示。

../_images/Memory_power_state_transitions.PNG

图 5.6 内存电源状态转换

下表列举了节点可以转换到的电源状态值。

表 5.73 电源状态值 值州名称描述
0MPS0该状态值映射到内存节点的活动状态(正常操作)。 OSPM在此状态下可以访问内存。
1MPS1该状态值可以映射到任何内存电源状态,具体取决于平台功能。该平台将使用内存电源状态结构告知MPS1状态的特征。按照惯例,要求低值功率状态比高值功率状态具有更低的节能和更低的延迟。
2,3…nMPS2、MPS3、... MPSn与MPS1 描述相同。

下表提供了命令状态选项的列表:

表 5.74 命令状态 字段位长度位偏移描述
命令完成10如果设置,则平台已完成处理最后一个命令。
SCI 门铃11如果设置,则此PCC子通道已发出SCI门铃信号。在响应此SCI时,OSPM应探测“命令完成”和“平台通知”字段以确定SCI的原因。
错误12如果设置,则执行最后一个命令时会发生错误。
平台通知13表示SCI门铃被平台调用。
保留1212 4预订的。

5.2.21.3. 动作顺序

SetMemoryPowerState :需要执行以下序列来设置内存电源状态。

  1. 将目标POWER NODE ID 值写入PCC 子通道的MEMORY_POWER_NODE_ID 寄存器。 StepNumList-1 将目标值POWER NODE ID 值写入PCC 子通道的MEMORY_POWER_NODE_ID 寄存器。

  2. 将所需的POWER STATE ID 值写入PCC 子通道的POWER STATE ID 寄存器。

  3. 将SET(见表5.72)写入PCC子通道的MEMORY_POWER_STATE寄存器。

  4. 写入PCC EXECUTE(参见PCC平台通信通道使用的命令代码)

  5. OSPM 通过写入门铃寄存器来敲响门铃。

  6. 平台完成请求,将生成SCI,表示命令完成。

  7. OSPM读取PCC子通道的状态寄存器并确认命令已成功完成。

GetMemoryPowerState :需要执行以下序列才能获取当前内存电源状态。

  1. 将目标值POWER NODE ID 值写入PCC 子通道的MEMORY_POWER_NODE_ID 寄存器。 StepNumList-1 将目标值POWER NODE ID 值写入PCC 子通道的MEMORY_POWER_NODE_ID 寄存器。

  2. 将GET(见表5.72)写入PCC子通道的MEMORY_POWER_STATE寄存器。

  3. 写入PCC EXECUTE (参见PCC MPST 平台通信通道使用的命令代码)

  4. OSPM 通过写入门铃寄存器来敲响门铃。

  5. 平台完成请求,将生成SCI,表示命令完成。

  6. OSPM读取PCC子通道的状态寄存器并确认命令已成功完成。

  7. OSPM 从PCC 子通道的POWER_STATE_ID 寄存器读取POWER STATE。

5.2.21.4. 内存电源节点

内存电源节点是逻辑内存区域的表示,需要作为一个单元进出内存电源状态。这一逻辑内存区域由一个或多个系统内存地址范围组成。内存电源节点由内存电源节点ID 唯一标识。

请注意,表 5.75 中定义的内存电源节点结构只能表示单个地址范围。该地址范围应为 4K 对齐。如果内存电源节点包含多个内存地址范围(即非连续范围),则固件必须为每个内存地址范围构建一个内存电源节点结构,但在所有结构中指定相同的内存电源节点ID。

内存电源节点不是分层的。然而,如果某个节点的内存地址范围包含另一个节点的范围,则一个内存电源节点覆盖的给定内存地址范围可能会被另一个内存电源节点完全覆盖。例如,存储器电源节点MPN0可以覆盖存储器地址范围1G-2G,而存储器电源节点MPN1则覆盖1-4G。这里MPN1内存地址范围也包含MPN0所覆盖的范围。

OSPM预计能够识别与OSPM在给定时间能够进行电源管理的最大内存地址范围相对应的内存电源节点。例如,如果MPN0覆盖1G-2G,MPN1覆盖1-4G,OSPM能够管理1-4G,则应选择MPN1。如果 MPN0 处于非活动内存电源状态,则 OSPM 必须将 MPN0 移至 MPS0(活动状态),然后再将 MPN1 置于所需的内存电源状态。此外,MPN1可以比MPN0支持更多的电源状态。如果MPN1处于这样的状态,即MPS3,即MPN0不支持,软件不得查询MPN0。如果查询,MPN0 将返回“无效”,直到MPN1 返回到MPS0。

  • [实现说明] 一般来说,对应于较大地址空间范围的内存节点对应于较高的内存聚合(例如,DIMM覆盖的内存与内存通道覆盖的内存),因此通常提供更高的节能机会。

5.2.21.4.1. 内存电源节点结构

以下结构指定用于传递存储器电源节点信息的字段。 MPST表中的每个条目都将定义相应的存储器电源节点结构。

该结构传达地址范围、实现的电源状态的数量、有关各个电源状态的信息、构成该存储器电源节点的不同物理组件的数量。

物理组件标识符可以与存储器拓扑表条目交叉引用。

表 5.75 内存电源节点结构定义 字段字节长度字节偏移描述
旗帜10该标志描述了内存节点的类型。详细信息请参见下表 5.76。
保留11供将来使用
内存电源节点 ID22该字段提供内存电源节点编号。这是内存电源状态命令的唯一标识,并在OSPM内存管理器中创建空闲列表/缓存列表,以偏向非电源管理节点与电源管理节点的分配。
长度44内存电源节点结构的长度(以字节为单位)。长度表示表末尾的条目字段的数量。
基地址低48内存范围基地址的低 32 位。
基地址高41212内存范围基地址的高 32 位。
长度低41616内存范围长度的低 32 位。该字段与“Length High”字段一起用于得出该地址范围的结束物理地址。
长度高420内存范围长度的高 32 位。
电源状态数量 (n)424该字段指示该存储器电源节点支持的电源状态的数量,并进而确定存储器电源状态结构中的条目的数量。
物理组件数量42828该字段指示构成该内存电源节点的不同物理组件的数量。该字段还用于标识该表末尾存在的物理组件标识符条目的条目数。
内存电源状态结构 [n]—3232该字段提供给定内存电源节点的系统支持的各种电源状态的信息
物理组件标识符12—构成该内存电源节点的不同物理组件的 2 字节标识符
………………
物理组件标识符 m2—构成该内存电源节点的不同物理组件的 2 字节标识符
表 5.76 标志格式 位姓名描述
---------
0已启用如果清除,OSPM 将忽略此内存电源节点结构。这允许系统固件用静态数量的结构填充MPST,但根据需要启用它们。
1电源管理标志1 - 内存节点受电源管理 0 - 内存节点不受电源管理。对于非电源管理节点,OSPM不得尝试将节点转换为低功耗状态。如果OSPM尝试执行此操作,则系统行为未定义。 NOTE:如果内存节点对应的内存范围包含无法进行电源管理的平台固件保留内存,则平台应将此类内存标记为“非电源管理”至OSPM。这允许OSPM在其功率优化中忽略此类范围。
2热插拔该标志表明内存节点支持热插拔功能。请参阅与内存热插拔的交互。
3-73-7 保留保留供将来使用

5.2.21.5. 内存电源状态结构

表 5.77 内存电源状态结构定义 字段字节长度字节偏移描述
电源状态值10该字段提供电源状态的值。要使用的具体值取决于系统。然而,需要保持惯例,较高的数字表示更深的功耗状态,具有更高的节能和更高的延迟。例如,电源状态值为 2 比电源状态值为 1 具有更高的节能效果和更高的延迟。
电源状态信息索引11该字段提供内存电源状态特征条目的唯一索引,该索引将提供有关功耗、电源状态特征和转换延迟的详细信息。索引机制是为了避免跨多个存储器节点的存储器电源状态特征条目的重复(从而减少不匹配错误的可能性)。

5.2.21.6. 内存电源状态特征结构

下表描述了功耗、退出延迟和内存电源状态的特征。该表由内存电源节点引用。

表 5.78 内存电源状态特征结构 字段字节长度字节偏移
电源状态结构ID10位[5:0] = 该字段描述表结构的格式 电源状态结构ID 值 = 1 位[7:6] = 结构修订
旗帜11该标志描述了与进入指定电源状态相关的警告。详细信息请参见表 5.79。
保留22保留
MPS0 状态下的平均功耗(毫瓦)44该字段提供该内存电源节点在MPS0状态下的平均功耗。该功率以毫瓦为单位测量,表示该内存在给定功率状态下消耗的总功率,以DC瓦为测量单位。请注意,该值仅应用作估计节能的指南,而不应用作实际功耗。内存电源节点还可以映射到单个或一组 RANK/DIMM。实际功耗取决于DIMM类型、配置和内存负载。
相对节电状态为MPS048这是 MPSx 状态下相对于MPS0状态节省的电量百分比,计算公式为 %%MPS0功率 - MPSx 功率)/MPS0功率)*100。当此条目描述MPS0状态本身时,OSPM应忽略此字段。
退出延迟(以纳秒为单位)(MPSx –>MPS0)81212该字段提供从电源状态 (MPSx) 退出到活动状态 (MPS0) 的延迟。该字段的单位是纳秒。当此条目描述MPS0状态本身时,OSPM应忽略此字段。
保留820保留以供将来使用。
表 5.79 内存电源状态特征结构的标志格式 位姓名描述
---------
0内存内容保留如果位[0]被置位,则表示在指定的电源状态下内存内容将被保留 如果位[0]被清零,则表示在指定的电源状态下内存内容将丢失(例如离线等状态)
1自主存储器电源状态输入如果位 [1] 被设置,则该字段指示需要通过调用“设置电源状态”命令由OSPM显式触发给定的内存电源状态进入转换。如果位 [1] 清零,则该字段表示给定的内存电源状态进入转换是在硬件中自动实现的,不需要OSPM触发器。在这种情况下OSPM的作用是从软件角度确保相应的内存区域处于空闲状态,以便于进入该状态。对于MPS0 没有意义 - 将其写入此表
2自主内存电源状态退出如果位[1]被设置,则该字段指示在可以访问存储器之前,需要通过OSPM显式触发给定的存储器电源状态退出。如果OSPM或其他软件代理尝试访问当前处于低功耗状态的内存,则系统行为未定义。如果位[1]清零,则该字段指示在访问与存储器电源节点相对应的存储器地址范围时自动退出给定的存储器电源状态。
3-73-7 保留保留供将来使用

5.2.21.6.1. 消耗功率

MPS0状态下的平均功耗表示MPS0状态下的功率(以毫瓦为单位)。与MPS0的相对节能表示 MPSx 状态下的节能占相对于MPS0状态的节能的百分比。

5.2.21.6.2. 退出延迟

特定电源状态的内存电源特性结构中提供的退出延迟包含该状态的进入延迟。

必须始终为存储器电源状态提供退出延迟,无论存储器电源状态进入和/或退出是自主的还是需要从OSPM显式触发。

5.2.21.7. 自主内存电源管理

并非所有内存电源管理状态都需要OSPM来主动将内存电源节点转入和转出内存电源状态。平台可以实现在进入和退出转换方面完全由硬件处理的存储器功率状态。在这种完全自主状态中,进入该状态的决定是由硬件基于相应存储器区域的利用率做出的,并且响应于针对相应存储器区域的存储器访问而发起退出存储器功率状态的决定。

OSPM软件在处理此类自主内存电源状态时的作用是在可能的情况下腾出此类内存区域的使用,以便让硬件有效地节省电量。不需要任何其他OSPM启动的操作来支持这些自主电源管理区域。然而,OSPM通过MPST命令接口显式启动到自主进入内存电源状态的状态转换并不是错误。平台可以接受命令并立即进入该状态,在这种情况下,它必须返回命令完成状态SUCCESS(00000b)。如果平台不支持显式输入,则必须返回命令完成状态NOTSUPPORTED(00010b)。

5.2.21.8. 处理BIOS保留内存

平台固件可能保留供其自己使用的内存区域,但OSPM无法分配这些区域。全部(或部分)内存由平台固件保留的内存节点可能会给OSPM带来问题,因为它不知道平台固件保留的内存是否正在使用。

如果平台固件保留内存影响内存电源节点进入内存电源状态的能力,则平台必须向OSPM指示(通过清除电源管理标志 - 有关详细信息,请参阅表 5.76)该内存电源节点无法进行电源管理。这允许OSPM在其内存功率优化中忽略此类范围。

5.2.21.9. 与NUMA处理器和内存关联表交互

存储器电源状态表描述了每个指定的存储器电源节点的地址范围。 OSPM可以使用MPST表中提供的地址范围信息,并根据平台引导固件创建的SRAT条目得出给定内存电源节点的处理器关联性。 OSPM可以使用内存电源节点与邻近域的关联来实现内存合并,同时考虑NUMA节点拓扑,以进行内存分配/释放以及内存管理代码中不同页列表的操作(特定于实现)。

可以在OSPM中实现内存合并的策略示例是:OSPM可以优先从本地内存电源节点分配内存,然后再分配到远程内存电源节点。后面的部分提供示例NUMA配置并解释各种内存电源节点的策略。

5.2.21.10. 与内存热插拔的交互

可热插拔内存区域使用内存设备对象进行描述(请参阅第 9.13 节)。这些内存设备对象的内存地址范围是使用_CRS方法定义的。

Scope (\_SB) {
  Device (MEM0) {
    Name (_HID, EISAID ("PNP0C80"))
    Name (_CRS, ResourceTemplate () {
      QwordMemory (
        ResourceConsumer,
        ,
        MinFixed,
        MaxFixed,
        Cacheable,
        ReadWrite,
        0xFFFFFFF,
        0x10000000,
        0x30000000,
        0, , ,
      )
    })
  }
}

内存电源状态表(MPST)是为所有内存对象创建的静态结构,与初始化期间的热插拔状态(在线或离线)无关。 OSPM将在引导期间填充MPST表。如果在MPST表中为给定内存电源节点设置了热插拔标志,则OSPM将不会使用该节点,直到通过ACPI通知机制传达内存的物理存在。

内存设备对象(例如MEM0)与MPST表中相应内存电源节点 ID 之间的关联是通过比较使用 _CRS 方法指定的地址范围和MPST表条目中配置的地址范围来确定的。该关联需要由OSPM标识,作为ACPI内存热插拔实施的一部分。当内存设备被热添加时,作为内存热插拔的现有 acpi 驱动程序的一部分,OSPM将扫描设备对象的 _CRS 方法并获取给定内存对象的相关地址范围,OSPM将根据 _CRS 的地址范围确定适当的内存电源节点 ID,并启用它进行电源管理和内存合并。

同样,当内存被热移除时,相应的内存电源节点将被禁用。

5.2.21.11. OS 内存分配注意事项

操作系统(非虚拟化OS或虚拟机管理程序/VMM)可能需要分配不可迁移的内存。建议操作系统(如果可能)从与内存电源节点对应的内存范围分配此内存,表明它们不可进行电源管理。这使得OS能够优化电源管理内存电源节点,以实现最佳节能效果。

操作系统可以假设属于电源可管理的内存电源节点(如标志所示)的内存范围以不影响该范围进入电源管理状态的能力的方式交错。例如,此类存储器不是高速缓存行交错的。

本文档中提到的内存始终指主机物理内存。对于虚拟化环境,这需要虚拟机管理程序负责内存电源管理。虚拟机管理程序还能够通过重新映射来宾物理内存来腾出适当的主机物理内存,从而为内存电源管理创造机会。

操作系统可以假设MPST中包含的内存范围始终指的是内存存储 - 易失性或非易失性,而不是MMIO或MMCFG范围。

5.2.21.12. 平台内存拓扑表 (PMTT)

该表描述了系统的内存拓扑OSPM,其中内存拓扑可以是逻辑的或物理的。该拓扑被提供为存储器设备的层次结构,其中顶层存储器设备(例如,插槽)与平台相关联,一直到与父存储器设备相关联的最后一级物理组件(例如,DIMM)。

表 5.80 平台内存拓扑表 字段字节长度字节偏移描述
标题
- 签名40‘PMTT’。平台内存拓扑表的签名。
- 长度44整个PMTT 的长度(以字节为单位)。
- 修订18本规范中定义的平台内存拓扑表、通用内存设备和内存设备结构(表 5.82、表 5.83、表 5.84 和表 5.85)的修订号。当前值:2 兼容性注意:ACPI 规范 6.4 中已弃用修订版 1。
- 校验和19整个表的总和必须为零。
- OEMID61010 OEM ID
- OEM 表 ID81616对于PMTT,表ID是制造商型号ID
- OEM 修订424OEM 所提供OEM 表ID 的PMTT 修订版。
- 创建者ID42828创建该表的实用程序的供应商ID。
- 创建者修订43232创建表的实用程序的修订。
存储设备数量43636紧随其后的顶级内存设备结构的数量。该字段中的零表示后面没有内存设备结构。
内存聚合器设备结构 [n]—40该平台的内存设备结构列表。参见下表 5.81。
表 5.81 通用存储设备 字段字节长度字节偏移描述
------------
标题
- 类型10该字段描述内存设备的类型: 0 - 插槽 1 - 内存控制器 2 - DIMM 3 - 0xFE - Reserved , 0xFF - 供应商特定类型
- 保留11保留,必须为零。
- 长度22此结构的长度(以字节为单位)。该长度包括类型特定数据,但不包括与该设备关联的存储设备。
- 标志24位 [0]:0 - 表示这不是顶级设备。 1 - 表示这是顶级聚合器设备。该设备必须计入PMTT表中顶级聚合器设备的数量,并且必须通过PMTT进行表面处理。位[1]:0表示拓扑的逻辑元素。 1 表示拓扑的物理元素。位 [2] 和 [3]: 01 - 表示该器件聚合的组件实现易失性和非易失性存储器 10 - 表示该器件聚合的所有组件实现非易失性存储器 11 - 保留 位 [15:4] 保留,必须为零
保留26保留,必须为零。
存储设备数量48与该设备关联的内存设备的数量。该字段中的零表示类型特定数据后面没有内存设备结构。
类型特定数据—1212输入具体数据。该数据的解释特定于存储设备的类型。参见表 5.82、表 5.83、表 5.84 和表 5.85。
存储设备结构[n]——与该设备关联的内存设备结构的可选列表。
表 5.82 套接字类型数据 字段字节长度字节偏移描述
------------
通用存储设备接头1212 0参见表 5.81。类型 = 0 - 套接字。长度=16。
套接字标识符21212系统中唯一标识套接字。
保留21414保留,必须为零。
存储设备结构[n]—1616与此套接字关联的内存设备结构的可选列表。
表 5.83 内存控制器类型数据 字段字节长度字节偏移描述
------------

通用存储设备接头 | 12 | 12 0 |参见表 5.81。类型 = 1 - 内存控制器。长度=16。 内存控制器标识符| 2 | 12 | 12唯一标识其父内存设备类型中的内存控制器。 保留 | 2 | 14 | 14保留,必须为零。 存储设备结构[n] | — | 16 | 16与该内存控制器关联的内存设备结构的可选列表。

表 5.84 DIMM 类型特定数据 字段字节长度字节偏移描述
通用存储设备接头1212 0参见表 5.81。类型 = 2 - DIMM。长度=16。
SMBIOS 手柄41212指对应SMBIOS记录的类型 17 表句柄。平台通过设置值 0xFFFFFFFF 来指示该字段无效。如果平台提供有效句柄,则高 2 个字节必须为 0(因为SMBIOS句柄只有 2 个字节)。 NOTE:使用此句柄是为了使管理软件能够对照表中描述的拓扑交叉引用SMBIOS 中描述的物理DIMM。预计OSPM不会使用该字段。
表 5.85 供应商特定类型数据 字段字节长度字节偏移描述
------------
通用存储设备接头1212 0参见表 5.81。类型 = 0xFF - 供应商特定。
类型UUID1616 1212供应商特定类型的唯一标识符。
供应商特定数据—2828供应商特定类型数据。
存储设备结构[n]——与该设备关联的内存设备结构的可选列表。
Prev
5.2.20. ACPI RAS 功能表 (RASF)
Next
5.2.22. 启动图形资源表 (BGRT)