4

为什么电脑忽然被锁频到800/400/1K MHz?怎么解决?

 3 years ago
source link: https://zhuanlan.zhihu.com/p/360167873
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

为什么电脑忽然被锁频到800/400/1K MHz?怎么解决?

中央处理器 (CPU)话题下的优秀答主

一天有两个网友私信问我为什么他们的笔记本电脑被锁频了,一位是ROG,一位是sureface。两人情况还稍有不同,一个锁频到800MHz,一个锁频到400MHz。本来私信不回的,奈何两位网友刚买了我刚推出的视频培训:

立刻变成了顾客,那就是上帝了。好吧,上帝的要求还是尽量要满足的。其实尽管两者表现不同,但背后的原因确实一样的,为什么这么说呢?

如果在知乎或者Google搜索锁频,会发现很多很多网友在求助相关问题。而被锁的频率还有所不同,大部分是800MHz,小部分是400MHz,还有1GHz的。从这些个标志性的频率,我们立刻可以得到线索,那就是他们电脑CPU的TCC电路被激活了。而激活TCC的是CPU的PROCHOT#引脚被拉高电平了。那么什么是PROCHOT引脚?什么是TCC?为什么TCC开动频率还有所不同?怎么解决呢?

PROCHOT#引脚

TCC全称是Thermal Control Circuit,也就是温度控制电路。TCC启动后,CPU里面的内核和集成显卡都会被立刻降频,并调低相应部分的电压。TCC启动有不同的原因,一个原因就是CPU的一个特殊的引脚PROCHOT#被置高。

PROCHOT#引脚顾名思义,就是processor太HOT了。它引入已经有一定时间了,最初是个纯输出的引脚,但后来引入了另外两种模式:

1. 输出:传统模式,也是最早出现的模式。那时CPU控压控频电路在CPU外部,CPU里面的温度太高的时候,就需要通知外面的电路采取行动,所以这时PROCHOT是个输出引脚。

2. 输入或双向(Input or BD(Bi-Directional)):随着CPU控压控频电路被移到CPU中(也就是PCU),CPU太热了自己会处理,理论上不需要输出了。但主板上还有很多其他器件,显卡和内存也会过热,它们过热怎么解决呢?因为CPU是一切计算调度的源头,如果CPU慢了,整个系统就会慢下来,也会渐渐凉下来。怎么让CPU慢下来呢?聪明的工程师想到了PROCHOT#,这时PROCHOT就变成了输入引脚,外面太热了,通过PROCHOT#告诉CPU慢一点。有时候需要协调CPU内部和外部,就需要设置这个引脚既是输入也是输出,这就是双向了,这个功能就叫做BD PROCHOT

BD PROCHOT在现代的大部分电脑上都是打开的,它有效的保护了电脑的安全。在散热不好的笔记本上玩一会游戏忽然就变得很卡,一看是CPU运行在800Mhz上。

退出游戏,一会CPU恢复正常。这就是这个机制默默的守护着系统的安全。

但有时候这个系统也会失效,有时候电脑会一直锁频在较低频率,某些笔电用电池的时候也会一直被锁频,知道插上电源。这时候发生了什么呢?要深刻的理解它,我们需要看看这个引脚在电路中是怎么连接的。

PROCHOT#的连接

我用Visio画了一个PROCHOT#引脚的典型连接示意图:

Intel CPU的PROCHOT#可以有很多Agent,一个典型的驱动是EC。什么是EC,可以参考这篇文章:

EC一般不停的采集电脑中各个热源附件的温度,有温度超过它预设的某个阈值,它就通过PROCHOT#让CPU锁到低频。VR是电压控制模块:

这里的VR是指外部VR,不是CPU内部的FIVR。VR因为处理供电,也会产生大量热量,为了防止出现问题,VR也可以连接PROCHOT#。其他的Agent还有可能是温度传感器,但大部分笔电的温度传感器都是先连接到EC上,直接连接PROCHOT的不多。

什么情况下会被误锁,怎么解决?

温度太高被锁定,然后温度降下来重新满血复活是这套系统的设计目标。如果你的电脑一玩游戏就锁频,不玩就复活那是正常的,解决办法只有换个电脑了。但有些电脑本来好好的,忽然从此就只能工作在低频了,这种往往是某个传感器坏了,EC每次读到超常温度,以为温度很高,就通过PROCHOT让CPU锁频了;或者某个风扇坏了;还有小部分原因是VR报告了错误温度。这种问题发生,一劳永逸的办法就是送修了,有没有省钱的方法呢?如果确定温度传感器坏了,可以在BIOS里面关闭BD PROCHOT,它一般在CPU的菜单里面:

如果是笔记本等简化BIOS,而找不到这个选项,可以下载一个ThrottleStop软件来关掉它:

下载地址在这里:ThrottleStop[1]

把BD PROCHOT前面的勾去掉就行了。它的缺点是每次都要运行,不像BIOS一样一劳永逸。

为什么被锁的频率还不一样?

现在最后一个问题就是为什么被锁的频率还有好几种?我们来看Intel的标准解释[2]

秘密就在这个最低的PState里面。PState的原理可以参考这篇文章:

一句话来说,PState由一组相对于基频(现在都是100MHz)的不同比例的ratio来组成。最低的ratio一般是8,有的CPU或者低功耗SKU CPU的ratio是4,高频CPU有的是10。那么我们来算一算:

100Mhz × 8 = 800Mhz

100Mhz × 4 = 400Mhz

100Mhz × 10 = 1000Mhz

大家现在明白为啥被锁频率不同,原因是一样了吧。

BD PROCHOT存在是有其价值的,在不确定的时候贸然关闭相当于忽略了危险信号,这是我不推荐的。 如那种显卡过热和机箱风扇损坏的损坏的情况,忽略错误可能引发显卡或者主板损坏。

有些笔电厂商出于各种原因,不走寻常路,不合理利用正常的电源管理策略来处理电池供电的情况。十分粗暴的在电池供电的时候,EC强拉PROCHOT#,让性能极大下降,来保证不会出现玩游戏供电不足,忽然掉电的情况。还有些厂商玩了一些奇怪的花样。

欢迎大家关注本专栏和用微信扫描下方二维码加入微信公众号"UEFIBlog",在那里有最新的文章。

用微信扫描二维码加入UEFIBlog公众号


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK