YJ.AL

Notes on tech, learning, and life.

Ryzen 7 9800X3D Per-Core CO Tuning

写在前面

这篇文章有两个目的。

第一,它是一篇关于 Ryzen 7 9800X3D 分核负压的技术分享。第二,它也是一份给自己留档的操作记录:即使原始参考资料以后不可访问,也能根据本文复刻完整流程。

本文记录的方法不是逐核摸极限 CO,也不是传统意义上的全核统一负压。它的核心思路是:

先把 8 个核心出厂默认并不一致的 VF 曲线,在金核默认状态附近并齐;再在并齐后的基础上,对 8 个核心同步下移。

因此,本文中的 CO 数值需要分成两类理解:

并齐值不是每个核心的极限负压值,目标值也不能直接照抄到其它 CPU 上。本文重在记录流程、观测口径和回退方法。

样例环境

以下为本次记录采用的样例环境和设置。自己的机器应以实际 BIOS、主板和传感器读数为准。

项目 样例设置
CPU Ryzen 7 9800X3D
SMT 关闭
PBO Limits Motherboard
Scalar 8x
Boost Clock Override +200MHz
CO 调整工具 Ryzen SMU 工具 / Ryzen Master 类界面
监控工具 HWiNFO64
负载工具 AIDA64 System Stability Test
AIDA64 负载项 仅勾选 Stress system memory
AIDA64 Memory allocation 5%
AIDA64 CPU mask Automatic

另有两个前置注意点:

原理简述

Curve Optimizer 不是直接设置固定电压,而是对 CPU 内部的电压-频率曲线进行偏移。设置负 CO 后,处理器会在相同频率下请求更低电压,或在相近电压下尝试维持更高频率。

问题在于,同一颗 CPU 内部不同核心的默认 VF 曲线并不一致。金核、银核和普通核心的出厂曲线存在差异。传统全核负压直接给所有核心套同一个负值,默认所有核心都有相同下探空间,这在实际中并不成立。

很多 CO 不稳定也不是在满载时暴露,而是在轻负载、待机、睡眠唤醒、浏览器切换、后台任务触发等低电压状态下出现。因此,这个方法不直接追求每个核心的最低 CO,而是先处理核心之间的默认曲线差异。

操作总览

完整流程如下:

  1. 记录核心性能顺序。
  2. 设置 PBO 前置参数。
  3. 构造低温全核负载。
  4. 以金核默认状态建立电压锚点。
  5. 按核心顺序逐个并齐 VF 曲线。
  6. 在并齐值基础上整体下移到目标电压。
  7. 做稳定性验证。
  8. 根据稳定性结果整组回退或继续下探。

1. 记录核心性能顺序

先确认 8 个核心的性能顺序,也就是系统调度优先级。这个顺序用于决定后续逐核并齐的操作顺序。

本次样例记录的核心顺序为:

Core 样例排序
Core 0 #1
Core 1 #6
Core 2 #2
Core 3 #4
Core 4 金核
Core 5 #3
Core 6 #5
Core 7 #7

因此本次样例的操作顺序大致是:

Core 4 -> Core 0 -> Core 2 -> Core 5 -> Core 3 -> Core 6 -> Core 1 -> Core 7

实际操作时不要照抄这个顺序,要以自己 CPU 的核心排序为准。

2. 设置 PBO 前置参数

本次样例使用的 PBO 前置参数为:

PBO Limits: Motherboard
Scalar: 8x
Boost Clock Override: +200MHz

这组设置用于让 9800X3D 在 PBO 状态下进入目标调校区间。不同主板 BIOS 的路径和命名可能不同,但核心参数应保持口径一致。

建议先保存一份 BIOS 默认配置或当前稳定配置,便于后续回退。

3. 构造低温全核负载

曲线并齐阶段需要的是一个低温、稳定、全核心参与的观测环境,而不是高热量压力测试。

负载构造使用 AIDA64 System Stability Test:

AIDA64 偏好设置中:

Memory allocation: 5%
CPU mask: Automatic

开始测试后,AIDA64 的 CPU Usage 图会拉到 100%。这说明它可以触发全核负载;但因为没有勾选 CPU/FPU/cache 项,温度不会像传统 CPU 烤机那样快速升高。

这一步的目的不是验证稳定性,而是排除温度墙、功耗墙、高热降频对电压观察的干扰。

4. 建立金核默认电压锚点

先让金核保持默认 CO,也就是 0

本次样例中,先将其它 7 个核心设置为较大的负 CO,其中多处为 -40。这里的关键不是必须使用 -40,而是让其它核心曲线先明显下移,使金核默认状态成为全核负载下的参考点。

然后开启 AIDA64 单烤内存,让 CPU Usage 保持 100%,同时通过 HWiNFO 观察:

本次样例中,金核默认状态下记录的电压锚点为:

V_anchor = 1.225V

这里必须固定电压观察口径。不要一会儿看 Core VID,一会儿看主板 Vcore,一会儿看 SVI/VDD 类读数。实际操作时,应在自己的记录中单独写明采用哪一个 HWiNFO 传感器项。

5. 逐核心并齐 VF 曲线

建立 1.225V 锚点后,按照核心性能顺序逐个处理其它核心。

每轮操作的逻辑是:

  1. 保持 AIDA64 单烤内存运行。
  2. 保持 CPU Usage 100%。
  3. 选择一个目标核心。
  4. 调整该核心 CO。
  5. 等待读数稳定。
  6. 观察 HWiNFO 中固定电压项。
  7. 当电压接近 V_anchor 时,记录该核心 CO。
  8. 继续处理下一个核心。

这一阶段得到的是“并齐值”。它表示该核心在目标全核频率下,已经大致并到金核默认电压附近。

本次样例中,1.225V 锚点下得到的并齐值如下:

Core 样例 1.225V 并齐值
Core 0 -2
Core 1 -9
Core 2 -6
Core 3 -8
Core 4 0
Core 5 -7
Core 6 -9
Core 7 -13

这组数值不是极限 CO,也不是通用参数。它只是本次样例中,把 8 个核心并齐到约 1.225V 锚点时的结果。

6. 整体下移到目标电压

完成并齐后,再将 8 个核心同步下移。

本次样例中,从 1.225V 目标切换到 1.2V 目标时,做法是将 8 个核心的并齐值统一再降低 6

Core 1.225V 并齐值 1.2V 目标值
Core 0 -2 -8
Core 1 -9 -15
Core 2 -6 -12
Core 3 -8 -14
Core 4 0 -6
Core 5 -7 -13
Core 6 -9 -15
Core 7 -13 -19

可以看到,第二列并不是重新逐核摸出来的极限,而是在并齐值基础上整组同步下移得到。

这就是本文方法与传统全核负压的主要区别:

7. 写入我的实际参数

这里放我的实际分核 CO 截图:

9800X3D

图中的数值为本机按上述方法得到的日用参数,不代表每个核心的极限 CO。

8. 稳定性验证

AIDA64 单烤内存只用于构造低温全核观测环境,不等于稳定性测试通过。

稳定性测试不要只测一种,种类越多越好,覆盖的温度和频率范围越广越好。

建议至少覆盖:

需要注意:跑 VT3 时降频并不一定代表设置错误。高压力负载下触发功耗、温度或保护策略是正常现象。需要关注的是是否报错、黑屏、重启、WHEA、应用崩溃。

CO 不稳定常见于轻负载,所以不要只看 R23 或单一烤机结果。

9. 后续微调规则

后续调整规则如下:

后续出现任何不稳定:8 个数值每次同时 +2
如果稳定且想继续降温:8 个数值每次同时 -2

这里的 +2 是减少负压幅度,-2 是增加负压幅度。

例如本次样例的 1.2V 目标值为:

[-8, -15, -12, -14, -6, -13, -15, -19]

如果出现不稳定,下一轮可整组回退为:

[-6, -13, -10, -12, -4, -11, -13, -17]

如果长时间稳定,并且希望继续降低温度,则可整组下探为:

[-10, -17, -14, -16, -8, -15, -17, -21]

但每次调整后都需要重新验证稳定性。

总结

这套方法的重点不是榨干每个核心的极限 CO,而是先处理 8 个核心之间默认 VF 曲线不一致的问题。

完整逻辑是:

确认核心顺序
-> 设置 PBO 前置参数
-> 构造低温全核负载
-> 记录金核默认电压锚点
-> 逐核心并齐到锚点
-> 整组同步下移到目标电压
-> 多负载验证稳定性
-> 根据结果整组 +2 或 -2 微调

它相对于传统全核负压,多了“曲线并齐”这个步骤。也正是这个步骤,使后续同步负压更接近在同一起点上整体下移,而不是把默认曲线差异很大的核心直接一刀切压低。

最终参数必须以自己的 CPU、主板、散热、BIOS、内存和日常负载为准。样例数值只用于解释流程,不应作为通用答案照抄。

参考

Ryzen 7 9800X3D, Curve Optimizer, Per-Core CO, PBO

⬅ Previous post
Flash Debian on Snapdragon 410 WiFi Stick

Next post ➡
2026 618 PC Build