)
好的下面详细展开ACPI HMATHeterogeneous Memory Attribute Table异构内存属性表 在计算机体系结构和 Linux 内核中的含义与用途。 HMAT 是什么HMATHeterogeneous Memory Attribute Table 是 ACPI 6.2 规范中定义的系统固件表Section 5.2.27用于向操作系统描述系统中不同类型内存的性能特征主要包括访问延迟LatencyCPU/设备 → 各内存 Proximity Domain 的读写延迟带宽Bandwidth各访问路径的读/写带宽内存侧缓存属性Memory Side Cache如是否存在 Die 上/片外缓存及其大小、关联方式、写策略等配合SRATSystem Resource Affinity Table 使用SRAT 告诉 OS 有哪些 CPU / 内存 / 设备在哪个 NUMA Proximity DomainHMAT 补充 从这些 InitiatorCPU/GPU/加速器到这些 Memory Target 的性能参数是什么 为什么需要 HMAT现代服务器常见异构内存拓扑例如本地 DRAM 持久内存Intel Optane PMem / NVDIMMDRAM HBMHigh Bandwidth MemoryDRAM CXL Type-3 内存扩展设备传统 NUMA 仅靠 SLIT 表给出NUMA Distance一个粗略的相对值不足以区分上述不同介质的真实延迟/带宽差异。HMAT 让 OS 和运行时库可以按性能特征做智能内存放置例如Linux 内核据此建立Memory Tier内存分层自动将慢速内存PMem/CXL标记为较低 tier配置NUMA 交错权重Interleave Weight 偏向高性能节点libmemkind/numactl等可按延迟或带宽偏好分配页面️ HMAT 关键结构HMAT 表包含若干子结构ACPI Spec 5.2.27子结构说明Memory Proximity Domain Attributes标记某内存 Proximity Domain 关联的 Initiator哪个 CPU Socket 可发起访问System Locency Latency and Bandwidth Info (SLLBI)矩阵形式记录 Initiator→Target 的读/写延迟(ns)与带宽(MB/s)Memory Side Cache Info描述内存侧缓存如 L4/Die-stacked cache的大小、关联度、写回/写通策略等示例概念摘自内核文档Initiator Proximity Domain: CPU Socket 0 Target Proximity Domain: DRAM Node / CXL Mem Node → Latency: 80ns (DRAM), 100ns (CXL) → Bandwidth: 1200 (DRAM), 200 (CXL) Linux 中的 HMAT 支持内核选项CONFIG_ACPI_HMATyLinux 5.5 正式合入主线解析路径drivers/acpi/hmat/中代码解析 BIOS 提供的 HMAT向 sysfs 暴露性能信息查看方式# 确认 HMAT 表存在 sudo acpidump | grep -i HMAT # 或反汇编查看 sudo acpixtract -a iasl -d HMAT.dat # 查看 NUMA 节点及内存分层内核 6.x cat /sys/devices/system/node/node*/distance ls /sys/kernel/mm/memory_tiering/若 HMAT 缺失或数据不完整Linux 会将所有内存归为同一 tier不做差异化分层 与其他 ACPI 表的关系表作用SRAT定义 Proximity Domain ↔ CPU / Memory / Device 亲和关系SLIT给出 NUMA Node 间的相对距离抽象值 10/21/31…HMAT补充 SRAT 中内存域的具体延迟/带宽/缓存属性更精确CEDTCXL 设备发现配合 HMAT 描述 CXL 内存性能简单说HMAT 就是 BIOS/UEFI 告诉操作系统这块内存快、那块内存慢、差多少 ns 和 MB/s的一张明细表是异构内存PMem、CXL、HBM在现代 Linux 上被正确分层调度的前提。