AMD 5th Gen EPYC (Socket SP5) BIOS 调优指南 v2.2:44 个字段、25 张 workload 表。真实结论是"默认即最优"——仅约 30 格偏离默认,集中在 SMT、L3-as-NUMA、NPS、TDP/PPT=OPN Max、APBDIS=1 五个旋钮上;其余是一份未标注冲突的功耗仲裁说明书。
SP5 平台把大量原属固件内部策略的控制权暴露成了 BIOS 用户可见字段:功耗上限(TDP / PPT)、确定性模式(Determinism)、Infinity Fabric P-state(APBDIS / DfPstate)、xGMI 链路速率与宽度、NUMA 划分(NPS × L3-as-NUMA)、以及 7 个独立的 L1/L2 预取器。这些字段两两耦合,且默认值同时由 AMD 推荐值与 OEM 覆盖值双重决定。文档自己给出的问题陈述是:"Default BIOS options generally produce the best overall performance for generic workloads, but these defaults may not be optimal for a specific workload."
痛点的第二层来自架构本身:CPU 的功耗预算是封闭的。core 与 uncore(DF / xGMI / 内存控制器)抢同一个 package power limit,所以"降低 xGMI 速率"这种看似只影响互联的动作,会通过腾出预算的方式提升 core boost 频率。用户无法从任何单个字段的说明里看出这个耦合——§3.4.1 只说"can also save uncore power (CPU power not consumed by the cores) to either: Increase core frequency. Reduce overall power consumption."
第三层是层级覆盖:§2.6 明确 BIOS → UEFI → OS/hypervisor → application 四层,每层都可能改写前一层。于是 BIOS 里设对了不等于生效,这正是 Chapter 5 存在的理由(numad、numa_balancing、cpupower idle-set 都能把 BIOS 决策推翻)。
指南采用三层递进结构,而非平铺的字段字典:
Default 或具体值。方法学上最值得注意的一点:Chapter 4 不是性能数据驱动的推导,而是一张"偏离默认值清单"。preamble 承认了这一点——"these BIOS settings are not 'one size fits all' because your specific workload(s) are not identical to synthetic benchmarks."
核心技术壁垒:本指南真正无法复现的部分不是任何一条推荐值,而是per-part 的功耗–频率曲线。OPN Max、"maximum algorithm-allowable frequency"、"This headroom varies from part to part" 三处引用共同指向一组未公开的 silicon binning 表。Determinism=Power 模式的全部价值就是"tap into the additional performance above the target performance of a OPN",而这个 headroom 的大小、以及 TDP/PPT 从 400 W 抬到 500 W 到底换来多少 MHz,文档一个数字都没有给。任何第三方要复刻 Chapter 4 的推荐,必须在自己的机器上重新测出这条曲线;指南提供的是参数空间的拓扑,不是参数的取值依据。
指南没有一条性能数字。可验证的"结果"只有 Chapter 4 的偏离清单本身,其信息量分布极不均匀(详见 §5):
Default;真正承重的偏离约 30 格。源文档 35 页里只有 1 张图(封面美术图,非技术图),所有拓扑与耦合关系都以散文形式散落在 Chapter 2/3 两处。下面三张图是把这些散文重建为结构。
这张图是理解整份指南的钥匙:所有 uncore 侧的"降级"动作(降 xGMI 速率、强制窄链路、降内存频率)在文档里都被同一句话解释——省下的功耗可以回流给 core boost。反过来,所有 latency-oriented 的配方(APBDIS=1 + DfPstate=0、DF C-States=Disabled、Force Link Width)都是主动放弃这份回流以消除状态切换抖动。红色节点是壁垒所在:预算的绝对值由未公开的 binning 决定。
这是全文档最容易配错的地方,也是 Chapter 2 唯一明确写出正交性的地方:"The NPS setting always determines the memory interleaving regardless of whether LLC as NUMA is Enabled or Disabled." 两个轴——节点计数(影响调度器/cpubind)与交织粒度(影响带宽/延迟)——由不同字段控制且只有一条单向覆盖边。工程含义:想给不做 L3-aware 调度的 hypervisor 更细的调度域,应开 L3-as-NUMA 而不是调 NPS,因为后者会连带改变交织粒度。
Chapter 5 的四步排查法正对应这条链的后半段:先 numactl -H 确认拓扑,再查 daemon(numad),再查策略(numa_balancing),最后处理 BIOS 里根本没有的字段(CC6 / OS 侧 C2)。
无形式化作者证明 — 仅广告数字。 本文档不含任何方程、性能投影模型或基准数据(L1 完整性映射确认:"Equations: none in source")。全部量化断言为三处无支撑数字(3x non-posted requests、512 virtual CPUs、xGMI 16→8→x4)。
以下是把散文约束重建为可检验形式后的结果——记号与不变量取自文档原文,但方程本身是重建物,不是作者给出的。
| 符号 | 含义 | 来源 / 单位 |
|---|---|---|
| $P_{\text{TDP}}$ | 可配置 Thermal Design Power | Table 3-7,W,range 100–500 |
| $P_{\text{PPL}}$ | Package Power Limit(字段名 PPT) | Table 3-7,W,range 100–500 |
| $P_{\text{core}}$ | 所有核心消耗的功耗 | §3.2.3 隐含 |
| $P_{\text{unc}}$ | uncore 功耗 = DF + xGMI + memory controller | §3.4.1 "CPU power not consumed by the cores" |
| $f_{\max}$ | BoostFmax,用户指定的 boost 频率上限 | MHz,decimal |
| $f_{\text{alg}}$ | "maximum algorithm-allowable frequency" | §3.1.3,未公开 |
| $C$ | 每 socket 物理核数 | §4.4.3 footnote |
| $T$ | 每核硬件线程数(SMT 开=2,关=1) | Table 2-1 |
| $N$ | 每 socket NUMA 节点数(NPS 值) | ∈ {1,2,4} |
| $L_{\text{node}}$ | 每 NUMA 节点逻辑处理器数 | Windows 约束对象 |
| $S$ | xGMI 链路速率 | ∈ {20, 25, 32} Gbps |
| $W$ | xGMI 链路宽度 | ∈ {x4, x8, x16} |
| $p$ | Infinity Fabric DfPstate 索引 | 0–4,0 = 最高性能 |
(E1) 封闭功耗预算:$P_{\text{core}} + P_{\text{unc}} \le P_{\text{PPL}}$
物理意义:这是整份指南所有 uncore 降级建议的唯一依据。$P_{\text{unc}}$ 的每一瓦节省都是 $P_{\text{core}}$ 的可用增量,因此"降 xGMI 速率提升核心频率"不是玄学而是预算重分配。
(E2) 实际 boost 频率:$f = \min(f_{\max},\; f_{\text{alg}}(P_{\text{PPL}} - P_{\text{unc}},\, T_{\text{junction}},\, \text{bin}))$
物理意义:§3.1.3 原话"The BoostFmax setting limits the maximum boost frequency but does not set a fixed frequency. The SoC will not exceed the maximum algorithm-allowable frequency if BoostFmax is set too high." 即 BoostFmax 只是一个 clamp,把它设高不会突破 $f_{\text{alg}}$;$f_{\text{alg}}$ 依赖 bin,这就是壁垒。
(E3) Determinism 语义:Performance 模式取 $f = \min_{\text{parts}} f_{\text{alg}}$(跨数据中心一致);Power 模式取 $f = f_{\text{alg}}(\text{this part})$(逐片最大化,跨机器方差)。
物理意义:Performance 是把性能钉在最差 bin 上换取可预测性;Power 是放弃可预测性换取每片硅的全部 headroom。这解释了为什么 §3.2.3 说 Power 模式下要把 $P_{\text{TDP}} = P_{\text{PPL}} = \text{OPN Max}$。
(E4) Windows CPU group 约束:$L_{\text{node}} = \dfrac{T \cdot C}{N} \le 64$
物理意义:Windows 的 kgroup 上限 64 个逻辑核。这是全文档唯一可以完全形式化并独立验算的约束,见 §4.3 check 6。
(E5) uncore 互联功耗单调性:$P_{\text{xGMI}} \propto S \cdot W$,且 latency jitter $\propto$ P-state 切换频度
物理意义:DLWM(Dynamic Link Width Management)把宽度从 x16 降到 x8/x4 省功耗,代价是"Latency may increase in some scenarios involving low-bandwidth, latency-sensitive traffic as the processor transitions from a low-power xGMI state to full-power xGMI state." Force 宽度即把切换频度归零。
(E6) C-state 层级:Global C-State Control = Disabled $\Rightarrow$ core state $\in \{C0, C1\}$,因为 "the C1 state cannot be disabled"。
物理意义:这个字段不是"关掉所有 C-state",而是把可达状态集截断到 C0/C1,同时连带关掉 IO-based C-state 与 DF C-states——这是文档强烈不建议动它的原因。
| # | 检查 | 结果 |
|---|---|---|
| 1 | 量纲一致性:TDP 与 PPT 是否同量纲同区间? | ✅ 两者皆 W、皆 100–500。但约束缺失:$P_{\text{PPL}} \ge P_{\text{TDP}}$ 这一物理必然关系文档从未声明,用户可合法设出 PPT=100 / TDP=500 的无意义组合。Table 3-7 的 PPT 行还带一个重复项目符号("• • Values 100–500"),像是未完成的编辑。 |
| 2 | 边界情形:$P_{\text{TDP}} = P_{\text{PPL}} = \text{OPN Max}$ 与 Determinism=Power 组合 | ✅ 自洽。§3.2.3 明确这是 Power 模式取最大性能的方法,且 Chapter 4 的 CPI/JAVA/POWER-EFF/RDBMS/AI-ML/HPC/EDA 七个配方确实全部落在这个组合上。 |
| 3 | 退化情形:APBDIS=1 但 DfPstate 取非 0 值 | ⚠️ 未定义。§3.4.3 只把 APBDIS=1 与 $p=0$ 配对说明("forces the AMD Infinity Fabric and memory controllers into full-power mode"),而 Table 3-14 允许 $p \in [0,4]$。$p=4$ + APBDIS=1 会把 fabric 钉死在最低性能 P-state,是一个合法但灾难性的配置,文档无任何警告。更糟:DFPSTATE 字段只存在于 Chapter 3,Chapter 2 的默认值摘要完全没有它,而 §3.4.3 的核心建议依赖它。 |
| 4 | 计数守恒:NPS1/NPS2/NPS4 的通道数是否守恒? | ❌ 不守恒。§3.3.2 称 NPS1 交织"across all 24 memory channels",NPS2 每域"six memory channels",NPS4 每象限"three memory channels"。守恒要求 $6 \times 2 = 3 \times 4 = 12$,而非 24——"24" 是双路数字混入了单路描述。同段又追加"Every pair of memory channels is interleaved",与"three channels per quadrant"直接冲突(3 不能被 2 整除)。 |
| 5 | 单调性 / 内部一致性:EDA 配方是否与 (E5) 一致? | ⚠️ 部分不一致。Table 4-24 给 EDA 设 XGMI FORCE LINK WIDTH CONTROL = Force、APBDIS = 1、DF C-STATES = Disabled——前两项与"消除抖动"一致,但 XGMI FORCE LINK WIDTH 本身留在 Default,于是"强制某个宽度"却没说强制到哪个宽度。按 (E5),Force 的收益完全取决于这个未指定的值。 |
| 6 | 可独立验算的约束:(E4) 能否复现 §4.4.3 的 Windows kgroup 规则? | ❌ 规则写错了。代入 $T=2$:$C \le 32 \Rightarrow L=2C \le 64$,NPS1 成立 ✅;$32 < C \le 64 \Rightarrow L = C \le 64$,NPS2 成立 ✅;$C > 64 \Rightarrow L = C/2 \le 64$ 对 $C \le 128$ 成立,NPS4 应对应 $C > 64$。但 footnote 写的是 "IF (64 > Cores/Socket) then set NPS4"——不等号方向反了,如实执行会让高核数部件落不到任何规则上,而低核数部件同时命中三条。§3.3.2 的散文版本是对的("more than 64 cores because Windows limits the size of a CPU group to a maximum of 64 logical cores"),两处矛盾。 |
六项检查里 2 项失败、2 项存疑、2 项通过。这个比例本身就是对这份文档质量的量化评价:可形式化的部分基本都错了,正确的部分是那些无法形式化的定性建议。
源文档零基准、零图表、零性能曲线。因此本节把 Chapter 4 的 25 张表当作唯一的数据集,做一次偏离普查——这是从这份文档能榨出的最接近"实验结果"的东西。
方法:遍历 25 张表全部单元格,剔除"值等于默认值"的名义偏离(例如 POWER PROFILE SELECTION = High Performance 其实就是默认的 mode 0;MEMORY TARGET SPEED = Auto 就是默认;SMT CONTROL = Enabled 与默认 Auto 同义),只保留真正改变行为的格子。
| 旋钮 | 偏离的 workload | 方向 | 依据(Chapter 3) |
|---|---|---|---|
SMT CONTROL | NIC THROUGHPUT, NIC LATENCY, HPC, EDA | Disabled | §3.1.1 "neutral to negative performance impacts on some workloads, especially HPC";另加 license 按线程计数的商业理由 |
L3 CACHE AS NUMA DOMAIN | POWER EFFICIENCY, MEMORY THROUGHPUT, BIG DATA ANALYTICS, LINUX KVM | Enabled | §3.3.1 "Some hypervisors and operating systems do not perform L3-aware scheduling" |
NUMA NODES PER SOCKET | JAVA THROUGHPUT=4, JAVA LATENCY=2, POWER EFFICIENCY=4, HPC=4, EDA=2, RDBMS=NPS4(Windows) | 细化 | §3.3.2 局部延迟 vs 每核带宽的权衡;NPS4 "recommended for HPC and other highly-parallel workloads" |
TDP/PPT CONTROL + 值 | CPI, JAVA TP, JAVA LAT, POWER EFF, MEMORY TP, RDBMS, AI/ML, HPC, EDA | Manual + OPN Max | §3.2.3 Power determinism 下取满 headroom |
DETERMINISM CONTROL/ENABLE | STORAGE IO=Power, NIC TP=Perf, NIC LAT=Perf, KVM=Perf, RDBMS=Power, AI/ML=Power, TELCO×2=Perf, EDA=Power | Manual + 显式 | §3.2.2 一致性 vs 单机峰值 |
APBDIS | POWER EFFICIENCY=1, STORAGE IO=1, RDBMS=1, EDA=1;NIC TP/LAT="Disabled" | 固定 fabric P-state | §3.4.3 "significantly reduces latency jitters" |
DF C-STATES | EDA(仅此一个) | Disabled | §3.4.4 低延迟/突发 I/O 场景"will increase both performance and power consumption" |
POWER PROFILE SELECTION | POWER EFFICIENCY=Efficiency(1), RDBMS=Maximum IO(2) | 非 0 模式 | §3.2.1 只有标题,无正文 |
| xGMI 手动控制 | EDA(Manual + Manual + Force) | 消除 DLWM 抖动 | §3.4.2 |
| I/O 侧 | TELCO CORE: ARI+10-bit Enabled;HPC: IOMMU Enabled + iommu=pt;EDA: 条件性 IOMMU | Enabled | §3.5.2 / §3.5.3 / §3.5.4 |
读法:承重偏离约 30 格,落在 10 个旋钮上;其余 34 个字段在全部 19 个 workload 列里恒为 Default——包括全部 7 个预取器(唯一例外是 RDBMS 的脚注"*Disable when workload is memory constrained")。换言之,指南实际主张的是:预取器、内存频率、内存交织、APIC 模式、TSME 这些别碰,只在 SMT / NUMA 划分 / 功耗上限 / fabric P-state 四个维度上按 workload 分化。
| Workload 族 | 列数 | 承重偏离数(约) | 特征 |
|---|---|---|---|
| §4.1 General-purpose | 4 | ~9 | 只有 POWER EFFICIENCY 列真正独特(Efficiency mode + L3-as-NUMA + APBDIS=1) |
| §4.2 Memory & I/O | 4 | ~9 | NIC 两列关 SMT 是全表最强信号 |
| §4.3 Virtualization | 3 | ~3 | 信息量最低:三列几乎全 Default,KVM 仅多 Determinism=Performance + L3-as-NUMA |
| §4.4 DB / Analytics / AI | 4 | ~8 | AI/ML 列与 RDBMS 列除 Power Profile 外完全同构 |
| §4.5 HPC / Telco / EDA | 4 | ~11 | 信息量最高:EDA 是唯一动 xGMI 与 DF C-States 的配方 |
这张表暴露了一个对读者最关键的事实:如果你的工作负载是 AI/ML 或虚拟化,这份指南几乎没有为你提供任何超出默认值的指导。AI/ML 列拿到的全部内容是 Determinism=Power + TDP/PPT=OPN Max(即"把功耗放开"),加上一格填错的 ACPI SRAT L3 CACHE AS NUMA DOMAIN = NPS1(该字段只接受 Enabled/Disabled)。
全文档唯一带真实数字的输出是 Chapter 5 的 numactl -H 采样,但它自身不自洽:
node 0 size: 32225 MB node 1 size: 64448 MB
node 2 size: 96407 MB node 3 size: 32164 MB
node distances: 0:10 12 12 12 / 1:12 10 12 12 / 2:12 12 10 12 / 3:12 12 12 10
它被介绍为"single socket AMD EPYC OPN with 12CCDs per Socket where NPS=4 and L3 as NUMA=Disabled"。距离矩阵(本地 10、远端一律 12、无跨 socket 项)与单路 NPS4 一致 ✅;但四个节点容量比约 1:2:3:1,与 NPS4 的对称象限交织直接矛盾 ❌。合理推断是这台机器的 DIMM 插法不对称(这正是 §1.1 要求先读 Memory Population Recommendations Guidelines 的原因),但文档把它当作正常样例展示,没有一句提示。同页的 CC6 例子又把 0-191 这个索引区间同时用于"单路 96 核开 SMT"和"双路 96 核 192 个 core"两种不同机器。
| # | 步骤 | 文档依据 | 得到什么 |
|---|---|---|---|
| 1 | 确立前提:默认值对通用负载已是最优,调优的对象是"特定负载" | Ch1:"Default BIOS options generally produce the best overall performance for generic workloads, but these defaults may not be optimal for a specific workload." | 把全文定位为偏离手册而非配置手册;也预先解释了为何 Chapter 4 绝大多数格子是 Default |
| 2 | 枚举参数空间:44 个字段分 5 个子系统,给出类型、默认值、可选值 | Ch2 Tables 2-1…2-5 | 读者获得完整旋钮清单;同时声明默认值仅为"recommendations for OEMs",把最终权威让给 OEM |
| 3 | 为每个旋钮给出因果机制(而非数值收益) | Ch3 §3.1.1–§3.5.7 | 建立"改这个 → 发生什么"的定性映射,例如降 xGMI 速率 → 省 uncore 功耗 → core 频率上升 |
| 4 | 揭示旋钮间耦合,形成约束网络 | Ch3 各处 + 依赖关系(TDP↔TDP Control、APBDIS↔DfPstate、NPS↔L3-as-NUMA、x2APIC↔IOMMU) | 把 44 维独立选择压缩为若干条件分支;这是全文档最有价值的部分 |
| 5 | 把机制映射到 19 个具名 workload 的具体取值 | Ch4 25 张表 | 从定性机制落到可执行配方;preamble 同时承认"not one size fits all",为偏差预留免责 |
| 6 | 承认 BIOS 不是最终仲裁者,给出 OS 层排查路径 | §2.6 四层覆盖模型 + Ch5 四步法(拓扑 → daemon → 策略 → BIOS 无此项的字段) | 闭环:即使 Chapter 4 照抄,仍需在 OS 层验证 numactl 输出、关 numad/numa_balancing、必要时用 cpupower 处理 BIOS 未暴露的 CC6 |
| 7 | 声明代际删除项,标记不可迁移的旧配置 | §3.6:EfficiencyModeEn / Root Complex LCLK Frequency / Preferred I/O / Preferred I/O Bus | 告知从 3rd Gen 迁移的用户哪些脚本会失效 |
论证链的断点在第 5 步:从"定性机制"到"具体取值"缺少任何测量作为桥。文档承认使用了基准("Some cases list the benchmarks used to better describe the workloads"),但基准名与结果都没有出现在正文里。
[实现未公开] — BIOS 侧的实现是 AGESA / OEM 固件,闭源;OPN Max、f_alg 的 binning 表不公开。文档本身也把最终权威推给 OEM:"End users must confirm their OEM BIOS setting availability and options."
可对照的唯一可执行部分是 OS 侧,全部来自 Chapter 5:
numactl -H — 验证 NPS × L3-as-NUMA 的实际生效结果,检查节点数、CPU id 连续性、node distances 矩阵。knowledge/L1/spec/amd-epyc-9005-bios-tuning-guide.md:1120-1144
echo 0 > /proc/sys/kernel/numa_balancing — 关闭 Linux automatic NUMA balancing,防止它推翻 physcpubind / membind。knowledge/L1/spec/amd-epyc-9005-bios-tuning-guide.md:1173
cpupower idle-set -d 2 — 关闭 Core C6(OS 侧名为 C2),处理 BIOS 未暴露该字段的平台。knowledge/L1/spec/amd-epyc-9005-bios-tuning-guide.md:1188
cpupower -c 0-191 idle-set -d 2 — 按 CPU 索引选择性关闭。knowledge/L1/spec/amd-epyc-9005-bios-tuning-guide.md:1195
iommu=pt(内核命令行)— IOMMU 在 BIOS 保持 Enabled 而在 OS 侧走 passthrough;HPC 配方强制要求。knowledge/L1/spec/amd-epyc-9005-bios-tuning-guide.md:1084
numad — 需要检查是否启用的 daemon;启用时会迁移进程/内存,覆盖启动时的绑定。knowledge/L1/spec/amd-epyc-9005-bios-tuning-guide.md:1156
壁垒是 per-part 功耗–频率曲线的不可见性。文档把功耗调优表述为三个用户可设参数(TDP、PPT、Determinism),但真正决定收益的是三个不可见量:该颗硅的 bin 质量、maximum algorithm-allowable frequency、以及 uncore 各子系统在给定负载下的实际功耗占比。§3.2.3 用一句话承认了这一点——"This headroom varies from part to part"——然后不再展开。
后果是可操作的:Determinism=Performance 与 Determinism=Power 之间的差值,在数据中心里等于"最差 bin 与本机 bin 的差",这个值只能靠在自己的机群上跑分布测量得到,无法从任何 AMD 文档推算。这也解释了为什么 Chapter 4 里 Determinism 的推荐是分裂的:需要跨机一致性的(NIC、Telco、KVM)选 Performance,需要单机峰值的(RDBMS、AI/ML、EDA、Storage IO)选 Power——指南只能给出决策规则,给不出收益数值。任何试图复现这份指南的第三方,必须自己重建这条曲线;这是唯一一处"读文档不够,必须有硬件"的地方。
PPL CONTROL / PPL,与其他四张表不同名,照表核对时极易漏掉。iommu=pt)"。原因是同节的硬约束:"Enabling IOMMU is required when using x2APIC."——而 LOCAL APIC MODE 默认就是 Auto (0x02 x2APIC)。在 BIOS 里关 IOMMU 会与默认的 x2APIC 模式冲突。| 变化类型 | 子系统 | 细节 | 影响 |
|---|---|---|---|
| 删 | Power | EfficiencyModeEn | 3rd Gen 的一键能效模式消失;对应能力被 Power Profile Selection mode 1(Efficiency Mode)吸收,但文档从未把两者联系起来 |
| 删 | I/O | Root Complex LCLK Frequency | 无法再手动抬 root complex 时钟;归因于"architecture improvements",无替代 |
| 删 | I/O | Preferred I/O / Preferred I/O Bus | 失去按 bus 指定 I/O 优先级的能力。最接近的替代是 Power Profile Selection mode 2(Maximum IO Performance),但粒度从 per-bus 退化为 per-socket,且文档不承认这是替代 |
| 增 | Power | Power Profile Selection 六档(0 High Perf / 1 Efficiency / 2 Max IO / 3 Balanced Memory / 4 Balanced Core / 5 Balanced Core+Memory) | 把多个旋钮打包成命名 profile,是本代最重要的新抽象;但 §3.2.1 只有标题没有正文,六档各自改了哪些底层参数完全未公开 |
| 增 | Infinity Fabric | DfPstate (0–4) + DfPstate Range Support(MaxDfPstate ≤ MinDfPstate) | 提供固定 fabric P-state 的能力,是 APBDIS=1 配方的必要搭档 |
| 增 | NUMA/Memory | Periodic Directory Rinse (PDR) Tuning(Auto/Blended vs Periodic) | 暴露了目录探测策略;但孤立字段——只在 Table 2-3 出现一次,无 Chapter 3 详解,25 张 workload 表全部缺席,术语"Floss"从未定义 |
| 增 | Virtualization | x2AVIC、SEV-SNP Support | x2AVIC 把 vAPIC 硬件虚拟化扩到 512 vCPU(AVIC 限 255);SEV-SNP 增加内存完整性保护,抵御 replay / re-mapping |
| 增 | Core | L1 Burst Prefetch Mode | 第 7 个预取器旋钮;Chapter 3 无任何描述性文字,只列 Enable/Disable |
| 改 | Security | SEV Control 默认 Disable → Enable(v2.0) | 默认开启机密计算基础能力;注意副作用:关掉再开需要 power cycle,不是 reboot |
| 改 | Virtualization | AVIC / x2AVIC 默认 Disabled → Enabled(v2.1) | 与 §3.5.7 "may not improve system performance" 的自承相冲突 |
| 改 | Power | Determinism Control 在部分 profile 中从 Enable → Manual(v2.2) | v2.2 的唯一改动,说明前几版的 Chapter 4 给了一个该字段不接受的值 |
| 增强 | Memory | Memory Target Speed 区间 3200–6400 MT/s | 上限抬到 DDR5-6400 |
| 增强 | Infinity Fabric | xGMI Link Max Speed 20/25/32 Gbps | 跨 socket 带宽上限提升;32 Gbps 即 Auto |
| 增强 | I/O | PCIe Gen 5 + 10-bit extended tag,non-posted request 数 3x | 达到 Gen5 满带宽的前提;代价是不支持 10-bit tag 的适配器可能开不了机 |
| 增强 | Power | TDP / PPT 可配置区间 100–500 W | 500 W 上限反映本代封装功耗天花板 |
| 增强 | NUMA | NPS0/1/2/4 四档,NPS4 每象限 3 通道 | 单路 12 通道的四象限划分 |
注:增/增强两类中,除 §3.6 明确列出的四个删除项与修订历史记录的三次默认值变更外,其余"相对 3rd Gen 的新增"是由本文档字段集与 §3.6 反推所得,文档本身未提供代际对照表。
44 个字段,按子系统分组。Auto 一律表示由平台/OPN 决定。
| 字段 | 类型 | 默认 | 可选值 | 关键语义 |
|---|---|---|---|---|
| SMT Control | enum | Auto | Enabled/Auto, Disabled | Auto=2 线程/核;HPC/EDA/NIC 建议 Disabled;部分 license 按线程计数 |
| L1 Stream HW Prefetcher | enum | Auto | Enable/Disable | 按 L1 访问历史升/降序取后续连续行 |
| L1 Stride Prefetcher | enum | Auto | Enable/Disable | 按单条指令的定距访问历史取行 |
| L1 Region Prefetcher | enum | Auto | Enable/Disable | 按局部区域内的伴随访问模式取行 |
| L1 Burst Prefetch Mode | enum | Auto | Enable/Disable | 无描述 |
| L2 Stream HW Prefetcher | enum | Auto | Enable/Disable | L2 层的连续行预取 |
| L2 Up/Down Prefetcher | enum | Auto | Enable/Disable | 按 L2 历史决定取前一行还是后一行 |
| Core Performance Boost | enum | Auto | Enable/Auto, Disable | 依活跃核数、功耗、热余量机会性超基频 |
| BoostFmaxEn | enum | Auto | Auto, Manual | Manual 时启用 BoostFmax |
| BoostFmax | int MHz | Auto | 十进制 MHz | 只是 clamp,不设定频率,且不能突破算法允许上限 |
| Global C-State Control | enum | Auto | Enabled/Auto, Disabled | Disabled 时核心仅剩 C0/C1,并连带关闭 IO-based 与 DF C-states;强烈不建议关 |
| 字段 | 类型 | 默认 | 可选值 | 关键语义 |
|---|---|---|---|---|
| Power Profile Selection | enum 0–5 | Auto(0) | 0 High Perf / 1 Efficiency / 2 Max IO / 3 Balanced Mem / 4 Balanced Core / 5 Balanced Core+Mem | 详解章节为空 |
| Determinism Control | enum | Auto | Auto, Manual | Manual 才能显式选 Power/Performance |
| Determinism Enable | enum | Auto | 0 Power / 1 Performance | Auto 的实际取向由 OEM 平台与 OPN 决定;文档三处对"默认是哪个"自相矛盾 |
| TDP Control | enum | Auto | Auto, Manual | Manual 才暴露 TDP 字段 |
| TDP | int W | OPN Max | 100–500 | 需 TDP Control=Manual |
| PPT Control | enum | Auto | Auto, Manual | Manual 才暴露 PPT 字段 |
| PPT (PPL) | int W | OPN Max | 100–500 | 与 TDP 同区间,无 PPT≥TDP 约束声明 |
| CPPC | enum | Auto | Enabled/Auto, Disabled | ACPI 5.0 特性,允许 OS 控制 turbo 施加时机与幅度;Windows Server 2016 起支持。Chapter 3 全篇拼作 "CPCC" |
| 字段 | 类型 | 默认 | 可选值 | 关键语义 |
|---|---|---|---|---|
| ACPI SRAT L3 Cache as NUMA Domain | enum | Disabled | Disabled/Auto, Enabled | Enabled 时每个 LLC 报为一个 NUMA 域,覆盖 NPS 的节点数但不改交织 |
| NUMA Nodes per Socket (NPS) | enum | 1 | NPS0/1/2/4 | 永远决定交织粒度。NPS1=全通道单域;NPS2=半 socket 6 通道;NPS4=象限 3 通道。NPS0 仅双路,不推荐 |
| Memory Target Speed | enum/int MT/s | Auto | 3200–6400 MT/s | 降频省内存控制器功耗,把预算让给 SoC 其余部分 |
| Memory Interleaving | enum | Auto | Auto/Enable, Disable | 只影响 NUMA 域内部交织;NPS 仍被遵守;强烈不建议关 |
| Periodic Directory Rinse (PDR) Tuning | enum | Auto | Auto/Blended, Periodic | Blended=需求驱动,Periodic=速率驱动。无详解、无 workload 指导 |
| 字段 | 类型 | 默认 | 可选值 | 关键语义 |
|---|---|---|---|---|
| xGMI Link Max Speed | enum Gbps | Auto | 20 / 25 / 32(=Auto) | 降速→跨 socket 带宽↓、延迟↑、uncore 功耗↓ |
| xGMI Link Width Control | enum | Auto | Auto, Manual | Manual 才显示 Max/Force Link Width 控件 |
| xGMI Force Link Width Control | enum | Auto | Unforce, Force | Force 消除 DLWM 切换抖动 |
| xGMI Force Link Width | enum idx | Auto | Ch2: 0=x4,1=x8,2=x16 · Ch3: 0=x4,1=x8(无 2) | 索引语义两章冲突 |
| xGMI Max Link Width Control | enum | Auto | Auto, Manual | Manual 才显示 Max Link Width |
| xGMI Max Link Width | enum idx | Auto | Ch2: 0=x4,1=x8,2=x16 · Ch3: 0=max x8/min x8, 1=max x16/min x8 | 索引语义两章冲突且含义不同类 |
| APBDIS | enum 0/1 | Auto | 0=动态 fabric P-state, 1=固定 | 1 + DfPstate=0 → fabric 与内存控制器锁全功率,显著降抖动 |
| DfPstate | int idx | Auto(0) | 0–4,0 最高性能 | 仅存在于 Chapter 3;被 APBDIS 覆盖 |
| DfPstate Range Support | enum | Auto | Auto, Enable, Disable | Enable 时须满足 MaxDfPstate ≤ MinDfPstate,否则"will not work" |
| DF C-States | enum | Auto | Enabled/Auto, Disabled | 关闭可消除 fabric 唤醒抖动,代价是功耗上升 |
| 字段 | 类型 | 默认 | 可选值 | 关键语义 |
|---|---|---|---|---|
| Local APIC Mode | enum | Auto (0x02 x2APIC) | xAPIC(0x01) / x2APIC(0x02) / Auto / Compatibility | x2APIC 中断投递更快,>255 核必需;即使 <256 逻辑核也推荐 |
| PCIe ARI Support (SR-IOV) | enum | Auto | Enabled/Auto, Disabled | SR-IOV 前提;function number 从 3 bit 扩到 8 bit,device number 隐含为 0 |
| PCIe Ten Bit Tag Support | enum | Auto | Enabled/Auto, Disabled | Gen5 满带宽前提,non-posted request 3x;不兼容适配器可能阻碍启动 |
| IOMMU | enum | Auto | Enabled/Auto, Disabled | 每设备独立 IRQ + DMA 保护;x2APIC 要求 IOMMU 开启;性能问题走 OS 侧 iommu=pt |
| AVIC | enum | Enabled | Enabled, Disabled | vAPIC backing page 映射进内存,guest 直接发起 IPI 并按 doorbell 通知目标核 |
| x2AVIC | enum | Enabled | Enabled, Disabled | AVIC 扩展至 512 vCPU;需要 custom AMD Linux kernel |
| TSME | enum | Auto(=Disabled) | Auto/Disabled, Enabled | 全 DIMM 硬件加密、对 OS 透明、略增内存延迟 |
| SEV Control | enum | Enabled | Enabled, Disabled | 多租户 VM 相互及对 hypervisor 的隔离;关后再开需 power cycle |
| SEV-ES | enum | Disabled | Enabled, Disabled | 把保护扩展到 VM 停止运行时的 CPU 寄存器内容 |
| SEV-SNP Support | enum | Disabled | Enabled, Disabled | 增加内存完整性保护,防 data replay 与 memory re-mapping |
这份文档暴露的旋钮集合,对上层软件提出了几条可直接落地的要求:
新可写的部署形态
APBDIS=1 + DfPstate=0 + DF C-States=Disabled + xGMI Force Link Width 四件套构成一个"关掉所有电源状态机"的模式。这使得软实时类工作负载(Telco 用户面、低延迟交易、EDA 交互式流程)可以把尾延迟从"取决于 fabric 唤醒时机"变成可预算量。代价是功耗与 core boost 一起下降。必须重写/适配的软件
numactl -H 的 size 字段。numad / numa_balancing 互斥。文档明确 numad 会"interfere with and override the initial launch commands of a deployment like physcpubind, membind"。任何依赖静态绑定的服务(DPDK、SPDK、推理 server 的 NUMA-local KV cache)都需要在启动脚本里显式 echo 0 > /proc/sys/kernel/numa_balancing 并确认 numad 未启用,否则 BIOS 侧的 NPS 规划会在运行时被悄悄推翻。给可观测性的要求
Power Profile Selection 六档的底层参数未公开,且 Determinism=Auto 的实际取向由 OEM 与 OPN 决定,机群管理软件不能从 BIOS 设置推断实际频率行为,必须直接采样运行时频率与功耗。跨机性能方差在 Determinism=Power 下是设计预期而非故障——告警阈值需要按 profile 区分,否则会把正常的 bin 差异报成异常。