首页版面好友提醒登录
返回桌面电脑版 同主题展开

Re: 公开的秘密:英特尔CPU的体质与电压问题

littleeva小eva 最后修改于2024-04-25 14:34:45
#42949

本来想结束这个帖子了,但最近13、14代牙膏的问题愈演愈烈,而涉及电压的一个关键点,CPU Loadline Calibration(LLC),网上的说法相当暧昧。有些人发了很长的帖子,外网还有人发了很长的用示波器测量的视频,内容确实很多。但不知道是这些人觉得观众缺乏物理知识,还是他们自己的物理知识不过关,内容描述了很多现象,却难以从中提炼出什么指导思想。我尽量用简单的数学和物理模型讲讲这个问题的原理,以期能通过原理推论出一些可以落实的办法。


1、CPU负载模型

CPU可以简化为一个直流负载:一定的电压【U】和一定的电流【I】构成一个【负载状态】。不过CPU负载状态并不是瞬时变化的,没必要用电流这种带导数(dQ / dt)东西去定义,而是可以更简单一点:在一定的时间周期内,有一定的电压【U】和一定(通过CPU)的电荷【Q】。高负载意味着更大的Q,U需要保持一定的范围以维持正常工作(太低宕机,太高物理损坏)。


2、供电模块模型

理想的供电模块当然是【永远和CPU负载匹配】,也就是在某个CPU负载周期内能确保提供U和Q,并且在下一个CPU负载周期能确保提供新的U和Q。然而现实中的元件切换【供电状态】远比CPU切换【负载状态】要慢,理想供电模块不存在。

现在假设CPU从第一个周期的低负载U1、Q1切换到了第二个周期的高负载U2、Q2,这里ΔQ = Q2 - Q1 > 0,而供电模块还没来得及更新,还是处于针对U1、Q1这个负载的状态。先不说U2和U1是什么关系,单是这ΔQ总不能凭空出现。解决办法是在供电模块上设置电容存储电荷,在需要找补电荷的时候,通过电容放电来提供差额。

电荷、电容、电压的关系是Q = C * U(C为电容),如果我们要从电容找补ΔQ的电荷,电压下降ΔU = ΔQ / C。简单来说,靠电容找补的负载是U1 - ΔU、Q2这个组合。

注意这只是靠电容找补一个CPU负载周期,现实中需要持续找补很多个周期:供电模块调整自身状态越慢,靠电容找补的周期越多,电压也会持续下降,最终就是ΣΔU = ΣΔQ / C。

ΣΔU就是最大降压,也就是造成宕机的短板。这个东西:

(1)和CPU负载变化基本呈正比;

(2)和供电模块的电容基本成反比;

(3)和供电模块的调节周期基本成正比,或者说和供电模块的调节频率基本成反比。

若要减小ΣΔU,供电模块上能做的就是【增加电容】和【增大调节频率】。但不论是电容还是调节频率都不可能无限大,总会有一定的上限,因此ΣΔU无可避免。只能说供电模块做得比较【好】的时候可以减小ΣΔU。

从高负载转向低负载的原理类似,只是ΔQ是个减量,这些电荷也不可能凭空消失,而是充到电容里;最终有最大升压ΣΔU。


3、DC Loadline与基准电压

还是看低负载切换到高负载的情况。现在供电模块终于缓过来了,可以按U2、Q2的负载供电,这里就有个问题:U2怎么取?

在供电模块没调节好之前,电压已经下降到了U1 - ΣΔU。如果U1 - ΣΔU都能正常运行,U2就没有必要高于U1 - ΣΔU。拉高U2反而有问题:

(1)徒增功耗;

(2)在负载由高转低的时候,电压最多能上升到U2 + ΣΔU,更高的U2意味着整体电压更高,可能损坏CPU。

比较合理的做法是让U2与U1 - ΣΔU基本相同,而更保守的做法是:干脆让U2比U1 - ΣΔU还低,如果U2都不宕机,那么负载切换过程中也不可能宕机或损坏CPU。

实现从U1降低到U2的办法就是DC Loadline:它定义了一个电阻值(注意只是值,并没有真正的电阻)R_dcll,在负载电流为I_load时,调节目标为U2 = U1 - I_load * R_dcll。

I_load * R_dcll当然没法保证和ΣΔU相同,但它和CPU的负载成正比,这很接近ΣΔU的性质(1),特别是在空载转向满载的时候。

如果供电模块做得太【烂】,ΣΔU相当大,那么R_dcll也不得不增大,但这导致最终的U2更低。如果要保证U2不宕机,就需要拉高U1,或者说拉高轻载时的电压。而这个轻载时的电压就是一种基准电压,具体表现为前面楼里说的VID。


4、CPU Loadline Calibration

这个项目字面意思是负载线【校正】,它校正的是啥呢?DC Loadline。

如果供电模块做得【好】,ΣΔU能控制得比较小,就没有必要使用很大的DC Loadline阻值。

如果CPU最大负载比较小(比如中低端CPU),可能也没有必要使用很大的DC Loadline阻值。

具备LLC功能的主板(好像没有不具备的)会用LLC设置值R_llc代替R_dcll作为供电模块调整电压的参数。



普通用户讲的CPU【体质】,其实并不仅仅是CPU自身的属性,还涉及主板的供电模块及设置。因为在DC Loadline不够保守的情况下,真正造成宕机的短板电压是U1 - ΣΔU,而这个电压值转瞬即逝,软件层面根本获取不到,只能靠示波器测量。太激进的DC LL或LLC会让CPU的【体质】看起来比较糟糕,即似乎需要比较高的U2才能维持重载,但实际上这个U2是冗余的。

普通用户能采用的调试方法是人为制造轻重载快速转换,观察是否宕机:比如运行一个烤机软件,然后快速滑动鼠标,就可以造成CPU负载的快速波动。如果这样也没事儿,那算是比较稳了。

牙膏厂的一些做法,比如非常保守的VID、非常保守的DC Loadline标准值,增加CEP、UVP之类的功能,其【动机】可以理解。毕竟牙膏厂无法控制供电模块的质量,从商业的角度讲也不能对供电模块提出太苛刻的标准(主板成本高,CPU也不好卖)。但我并不认同牙膏厂的做法。这套供电设计大概已经用了20年(是不是更久我不清楚),堪称弱智。整了个CEP机制应对欠压,但效果堪称搞笑,开关CEP愣是成了区分产品线的商业手段。本来打算13代内建DLVR细调电压,没整利索直接砍了,还嘴硬说什么从来没打算加DLVR(真当大家是没见过ES的傻子)。

我发这一系列的帖子不是给牙膏厂拔创,而是希望已经买了牙膏的用户能有个更好的体验,毕竟CPU不是说换就换。

littleeva (小eva) 在 ta 的帖子中提到:

CPU的体质是个经常被电脑爱好者提起的话题,几大主板厂商也推出了所谓测体质的功能。这个帖子就来说说牙膏的体质是怎么测出来的,原理太长很难讲清楚,只说关键结论。

1、VID:体质的依据

所有板厂推出的测体质功能都是基于CPU的VID。所谓VID,直观表现是CPU在各个倍频下的基准电压,比如55倍频下1.35V之类的。对于牙膏而言,又可以细分为P核、E核、环形总线三种VID。需要强调的是,VID并不是以【表格】或【数组】的形式存储在CPU的某个部位,而是以【函数】或者说【程序】的形式存在:选定一个部件(P核、E核、环形总线),输入一个倍频值,输出一个电压值,也就是【VID = V<part>(ratio)】。

……