amd吧 关注:810,855贴子:18,713,314

干货!9800X3D调整PBO负压

只看楼主收藏回复

AMD ryzen 系列处理器PBO设置Curve Optimizer的理论和实践
一、 概述
PBO全称Precision Boost Overdrive,其中Curve Optimizer(曲线优化器)通过调整核心的电压曲线来实现更低电压、更低发热和更高能量利用率从而释放核心潜能。
二、 CPU核心的基本构成和运行原理
CPU核心本质是硅片生产出来的晶体管集合。数以亿计的晶体管的开关在运行时按照指令进行开关来完成运算。晶体管是一种半导体,只有在栅极施加足够的电压时才会导通完成一次开启,这个电压称为阈值电压Vth。晶体管的载流子迁移率影响开关速度,这和CPU核心的运行频率有关,通常加大栅极电压能加速载流子的迁移速度,进而能让CPU核心的运行在更高的频率。同时,高温会严重影响晶体管迁移率,为了维持稳定又要进一步加大核心电压(栅极电压)。
不同的CPU核心因为工艺的微小差异,通常存在体质差异,简单理解为体质好的核心阈值电压更低、迁移率更高,只需要为这些核心施加更小的电压就能在更高的频率运行。
三、 AMD的ryzen系列CPU的电源管理
从ryzen的zen3开始,AMD使用自研的SVI3(串行电压调节)协议进行电源管理。这是一种串行总线通信协议,CPU核心通常作为master和电压调节模块VRM作为Slave连接在总线上。当核心需要调整电压时,会向VRM发送一个请求电压VID指令,VRM根据VID动态调整输出给核心的电压。通常情况下,核心会先根据一个预设的VF曲线找到一个VID0,然后如果主板BIOS中用户自主设置了额外偏移offset,二者则会叠加,施加偏移之后的VID才会发送给VRM,后者根据收到的VID来调整核心电压。通常情况下,核心电压会略微高于VID,即:
但是,现代CPU通常是多核设计,核心电压则是核心之间共有的,核心之间又存在体质差异,厂家为了所有核心的稳定,在CPU出厂时会根据各个核心的体质先施加一个体质偏移Offset0,再叠加主板BIOS中用户设置的额外偏移Offset1,再对齐所有核心的最大请求电压VIDmax发送给VRM请求核心电压。
为了验证上述观点,我们使用Ryzen SDT工具软件来实时调整各个核心的偏移offset1,使用HWiNFO软件来观察各核心的请求电压VID和核心电压VDDCR_VDD,使用AIDA64运行内存压力测试使全核心维持在同一频率。下述实验,只在BIOS中PBO设置中调整为MotherBoard、Fmax+200、Scaler 6X。
首先在稳定的前提下,给所有核心施加负偏移(负压)50,来拉低所有核心的基准曲线,然后启动内存压力测试,全核心维持同一频率后观察HWiNFO的各个核心的请求电压和核心电压。如图所示:
图表1
可以观察到各个核心的请求电压并不一致,最大请求电压为VID6为1.103V,此时核心电压VDDCR_VDD为1.106V。我们再将核心0的偏移置为0,观察数据变化,如图所示:
图表2
核心0的请求电压上升到1.336V,核心电压为1.332V。再恢复核心0的负压50,将核心1的偏移设置为0,观察数据,如图所示:

图表3
核心1的请求电压为1.266V,核心电压为1.264V。依次重复上述操作,观察各个核心的请求电压,一次实验得到如下数据:
核心 0 1 2 3 4 5 6 7
请求电压 1.330 1.266 1.336 1.322 1.336 1.286 1.336 1.336
核心电压 1.332 1.264 1.334 1.328 1.346 1.283 1.334 1.332
图表4
尽管该实验并不严谨,调整各个核心后芯片的温度存在微小差异,但足以验证上述观点,即各个核心同一时间的请求电压并不一致,电压调节模块VRM会根据最大的请求电压来提供核心电压。上述数据中若干核心请求电压均为1.336V可能和电压墙有关系,但不影响数据的有效性。
四、 优化核心电压
根据上述实验,我们可以得出结论,当多核负载时,核心电压会对齐所有核心中的最大请求电压。如果不进行额外偏移设置,核心的请求电压与核心的体质有关,核心体质越强,请求的电压越低,核心体质越弱,请求的电压越高。所以当运行多核负载时,所有核心的电压和频率是向体质最差的核心对齐的,这无疑是降低了CPU的下限。而厂家出厂预设的电压曲线是十分保守的,我们可以如上面的实验所做的一般额外施加偏移来调整各个核心的电压曲线。这里必须指出,下面的思路参照了B站UP复读坤的思路,通过调整其余核心的电压曲线向体质最强的金核对齐来提高CPU的性能下限。具体操作为:
1. 确定各个核心之间的体质顺序,最简单的办法为查看HWiNFO中Core Clocks中每个核心的Perf#编号,如下图所示:

图表5
另一个办法是在不设置任何额外偏移的情况下进行压力测试,观察各个核心的请求电压:

图表6
两种办法都能看出作者这颗CPU体质最好的核心是核心1,然后是核心5。进行调整时只需要将其余核心的电压向核心1对齐即可。
2. 进行电压对齐。操作为先把所有核心的偏移设置为-50,然后将体质最好的核心设置为0,开启压力测试,使所有核心满负载,记录此时的最大请求电压和核心电压。作者这里即核心1的VID。然后将核心0的偏移设置为0,此时最大请求电压和核心电压会向核心0对齐,通过逐步调整核心0的负压来使核心0的请求电压和核心1的请求电压对齐。

图表7
图7中,作者已经调整了核心0和核心2的偏移值来使它们的请求电压向核心1保持一致,只需要重复上述步骤完成所有核心的调整即可。作者调整完成后的各个核心数据如图所示:

图表8
3. 将所有核心的偏移整体下移,作者推荐先下调10,然后再以步长5逐步下调,每调整一次均进行一次压力测试。这里作者使用的是AIDA64的单烤FPU和单烤CPU交替进行,每五分钟轮换一次,完成三轮即视为稳定。下图是整体下调10个单位的偏移。

图表9
回到最前面提到的晶体管性质,体质越好的核心阈值电压Vth越低,反之越高。核心电压一旦往下越过了阈值电压,核心会立即崩溃。在前面的步骤中,我们已经将各个核心的电压对齐,即视为所有核心的电压在同一条曲线上,此时我们对曲线进行整体下移,体质最差的核心会第一个触碰到自己的阈值电压而崩溃,即稳定性测试失败。这里最可能的表现为冻屏死机。一旦崩溃,重启回退偏移值,有精力的朋友可以降低步长进行微调。作者是在整体下调13个偏移之后体质最差的核心就会崩溃,此时各个核心的负压偏移值如图所示:

图表10
几乎可以判定,是核心6触底碰到了自己的阈值电压,此时我们不能再整体下调偏移值。
4. 下一步是进行分核调整。通过上面的步骤,我们已经得到了一个绝对稳定的分核负压数据,只要核心6的偏移值不再下调,我们在进行全核负载或者说有核心6参与的负载时,我们的系统是绝对稳定的。因为哪怕我们继续下调了其余核心的偏移值,最后核心电压都会对齐到核心6的请求电压,这个电压对于其余核心来说都是安全的。
但如果是没有核心6的负载呢?例如单核烤机,系统会根据体质差异优先调度体质好的核心,而此时我们体质最好的核心依然维持在一个较高的请求电压,性能是得不到充分释放的,进一步下调该核心的偏移量则可以让其完全释放性能。但又必须保持稳定,以免触底阈值电压。
为了节约时间,作者的作法是将8个核心根据体质相近和差异分为了2、2、4三组,分别是(1,5),(2,3),(0,4,6,7),使用软件CoreCycler进行单核负载压力测试。建议将体质最差的最后一组(0,4,6,7)统一对齐核心6的负压或者核心0的负压,前者可能不稳定但可能性能稍好,后者能保证绝对稳定。在后面的测试中排除掉体质最差的最后一组,因为该组已经调整到保证稳定的前提下最大的性能释放。然后我们将(1,5)和(2,3)同时逐步下调偏移值,每调整一次使用CoreCycler进行一次稳定性测试,在设置中排除掉体质最差的一组(0,4,6,7),每个核心的测试时间调整为1分钟,测试八轮。如下图所示:

图表11
一直调整直到无法通过测试,体质稍差的第二组(2,3)理论上会先崩溃出错。出错后回退偏移值,该偏移值即为(2,3)的临界稳定值,将两者的偏移值对齐,保证稳定。最后在软件中设置排除掉核心(2,3),单独对核心(1,5)进行调整和测试,直到找到(1,5)的临界稳定值,将核心5的偏移值向核心1对齐保证稳定。
作者调整完成后,得到的所有核心偏移值为:

至此,记录所有核心的偏移值,进入BIOS设置即可。


IP属地:广西1楼2025-06-14 16:43回复
    这个教程我用过,效果很烂。每个核心体质不同,你对齐个毛,我好体质的核心明明还有下探空间为啥要让你体质差的对齐


    IP属地:江苏来自iPhone客户端2楼2025-06-14 17:19
    收起回复
      2026-08-16 07:08:29
      广告
      不感兴趣
      开通SVIP免广告
      太长 看不完 。。


      IP属地:广东来自Android客户端4楼2025-06-14 17:36
      收起回复
        是不是B站复读坤的类似方法


        IP属地:四川来自Android客户端5楼2025-06-14 17:42
        收起回复
          买AMD好麻烦,要看这么多教程


          IP属地:江苏来自iPhone客户端6楼2025-06-14 17:46
          收起回复
            看到撸主码了这么多字数的含金量上,不点个赞都不是人了~


            IP属地:湖南8楼2025-06-14 18:52
            收起回复
              补几条公式,从文档复制过来的时候系统自动漏掉了。VID是各个核心的请求电压,VID0是一条全局电压曲线对应的请求电压,Offset0是出厂预设的偏移,offset1是BIOS中用户设置的偏移。核心电压Vcore约等于各个核心请求电压中最大的那个。


              IP属地:广西9楼2025-06-14 18:57
              回复
                看着都累


                IP属地:四川来自Android客户端10楼2025-06-14 19:34
                收起回复
                  2026-08-16 07:02:29
                  广告
                  不感兴趣
                  开通SVIP免广告
                  有点长,没看完,但是得点赞👍


                  IP属地:北京来自Android客户端11楼2025-06-14 19:42
                  回复
                    然后设置几个小时,突然有天bios崩了恢复默认,一怒之下直接auto,发现并没有什么差距


                    IP属地:四川来自Android客户端12楼2025-06-14 20:11
                    收起回复
                      坤坤真传


                      IP属地:山东来自Android客户端13楼2025-06-14 20:17
                      回复
                        这套方法还没hydra测的严格,更别说hydra的结果本身都不稳定了


                        IP属地:江苏来自iPhone客户端14楼2025-06-14 20:39
                        收起回复
                          哥们出品的质量总是很高啊,分核co研究完了,下一步该来玩更高阶的curve shaper了,我现在学skatterbencher的方法扒了分ccd各种场景下的完整vf曲线,结果发现两个ccd的曲线形状差异不小,而cs只能整个一起cpu调整,注定只能把ccd0做到最优化,单ccd的话就简单多了


                          IP属地:广东来自iPhone客户端15楼2025-06-14 22:12
                          收起回复
                            看不懂,思密达


                            IP属地:广东来自Android客户端16楼2025-06-14 22:16
                            收起回复
                              2026-08-16 06:56:29
                              广告
                              不感兴趣
                              开通SVIP免广告
                              细佬 那个sdt软件分享个网盘 外网我下载不了 感谢!


                              IP属地:广东来自Android客户端17楼2025-06-14 22:38
                              收起回复