szgt 挺难s
关注数: 2 粉丝数: 34 发帖数: 875 关注贴吧数: 13
在进行分核负压时快速屏蔽核心的测试方法 之前写过一个对9800X3D的分核负压的帖子,在最后苦于没有找到一个快速屏蔽核心的办法,用了一个叫做CoreCycler的软件来对进行分核测试,但不得不承认该软件门槛偏高,设置复杂,对一些新手的友好度非常低。最近在用aida64的时候,偶然发现了aida64实际上内置了屏蔽核心的功能 ,使用该功能能快速进行高效的分核压力测试。 推荐使用烤FPU和烤CPU加双烤二者交替进行十分钟,稳定不崩溃即视为稳定。如图所示,先打开压力测试,点击右下角的preferences,然后看到General下面的CPU mask,选择Manual手动,这里通过一个16进制数来进行核心屏蔽,默认是0xFFFFFFFFF,对应32个线程,如果你是用9953和9950X,就 需要用到这8个F,但如果你是983或者9700x,只需要用到4个F,直接改成0xFFFF对应8个核心就行,六核心的U就保留3个F进行操作。 要进行调整,记住要从右边的低位开始调整,右边的第一个F对应核心1和2,左边的第一个F对应最后两个核心。如果懂十六进制的话,应该都明白是怎么回事,0xFFFF转换成二进制就是0b1111111111111111,16位对应16个线程,要把哪个线程屏蔽就把对应的1改成0即可,但记住要完整的屏蔽一个核心要两对应的两个线程都屏蔽,即连续的两位都置0。但直接输入二进制数会出错,要转换成十六进制。 简单提供一个需要用到的二进制和十六进制对应关系: 0xF——0b1111 0xE——0b1110 0xD——0b1101 0xC——0b1100 0xB——0b1011 0xA——0b1010 0x9——0b1001 0x8——0b1000 0x7——0b0111 0x6——0b0110 0x5——0b0101 0x4——0b0100 0x3——0b0011 0x2——0b0010 0x1——0b0001 0x0——0b0000
干货!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设置即可。
1 下一页