本人最近为了实现较高的单核性能(AMD R5 3600X的单核性能非常高(别那么贵的情况下),所以我没选Intel的处理器)+想初步玩一玩深度学习(所以必须是N卡)
组装了一台电脑,配置如下:
组件 | 品牌与型号 | 价格(元人民币) |
---|---|---|
CPU+主板 | AMD R5 3600X;MSI B450M Mortar Max | 1848.58 |
散热器 | 利民AS120单风扇 | 109.61 |
内存 | ADATA XPG DDR4 3000MHz 8G 2条 | 535.85 |
显卡 | Gigabyte Nvidia GeForce GTX 1660 Super Gaming OC 6G | 1687.25 |
固态硬盘 | Plextor M9PeG 256G | 321.57 |
无线网卡 | DIEWU TX083(Intel AX200)带散热片 | 128.36 |
机械硬盘 | WD10EZEX 1T 3.5寸 64MB缓存 7200RPM | 267.26 |
主机 | 先马塞恩3(赠5个风扇)(其中40元为邮费) | 237.7 |
电源 | 振华HX500W | 340.28 |
合计 | 5476.46 |
但是遇到了一个问题:
在主板的设置中,需要对CPU风扇设置一个转速自动调整的规则,以实现静音和散热的平衡:
这该如何设置呢?
一、风扇转速的调节,是怎么个规则
微星的主板允许用户设置的规则,是如何根据CPU的温度传感器示数(以下简称CPU传感温度)来调节CPU散热风扇的转速。一共有连续的四档CPU传感温度和风扇转速的调节规则绘如下图:
经反复测试,规则的设定具有以下限制或特点:
- 规则是根据传感温度(记为)调节CPU风扇转速(风扇转速的负荷率记为)
- 转速与温度的对应关系,画成函数图像,是一条折线,由4条线段和1条射线组成。记从左向右数第条线段的斜率为()
- 用户可以调节的只有图上那4个“×”的位置(即温度-转速数对),记为,
- 最低温那个“×”与原点相连,最高温那个“×”的右侧的线是水平的。
- 每个叉之间温度方面至少要相差1度
- 任何一段线均不能是竖直的,即任意
- 整条线必须是单调不减的,即任意。为了充分利用这四个叉,下文将要求折线中任意一条线段的斜率都大于0(即)
二、直觉下设置的规则
既然默认的是这样,那就大概微调一下就好了。由于CPU报警的温度是70度,因此我就把最高档的温度调整为70度,其他的就没怎么调。
三、直觉下的规则真的是最优的吗
为了发扬科学精神,摆脱常识的束缚,我决定仔细想一想这个事。最后的结果告诉我,不是!
1 何为最优
为了散热好,直接把任何温度下的风扇转速拉满,就完事了。但是这就会带来过大的噪音。谁家散热风扇打开个Word也是满负荷的?吵死了。
为了静音,不要装风扇好不好?不好,那样的话CPU的性能和寿命就会受到很大影响。
所以,设置这个调节规则,目标是:
在CPU发热一定的情况下,最优规则能够使风扇的转速很低,且CPU的温度也很低。
2 问题模型化
模型的基本想法是:CPU温度的变化来自于自身发热和风扇的散热。把它翻译成微分方程是:
其中表示CPU的温度,是CPU发热量,是风扇转速的负荷率,界于0-100%,是CPU风扇的散热系数(此处合理假定风扇转速与散热量呈正比关系)。
另外,温度与风扇转速还满足调节规则:
将上式代入,得到一元常微分方程
3 模型的特点
a 当CPU发热量“不太大”时,方程存在唯一且稳定的解
i 存在与唯一性
当时,方程存在唯一且稳定的解。
由于连续,且满足利普希茨条件(取风扇规则曲线中最大的斜率再乘以),因此方程存在唯一解,记为。
ii 稳定性及稳定的状态
当初始温度在第4个叉以上(即)时,为定值100%。若,则此时已达到稳定状态;若,则,解得,则温度将随时间一路下降至第4个叉以下。
当初始温度在第4个叉以下(即)且时,对于稳定解的任意小的一个邻域外,总有,且与异号,从而在有限时间内,将进入该邻域。且由于在邻域中,温度-转速存在连续的负反馈机制,因而当温度进入该邻域后,不会再跳出该邻域。因此,对于任意小的,存在,当时,成立,因此。
当初始温度在第4个叉以下(即)且时,,且当在任意一个的左邻域外时,有,因此在有限时间内,温度将进入该邻域。当温度进入该邻域时,温度不会超过(是上确界,因为不会稳定于任何低于的温度),因此收敛于()。
综上所述,
- 当CPU发热刚好等于风扇散热的能力时
1.1 当初始温度时,最终温度将稳定在
1.2 当初始温度时,温度将不再改变,稳定在 - 当CPU发热小于风扇散热的能力时(多数情况),不论初始温度处于何值,最终都将趋于稳定,其中风扇转速稳定于,温度稳定于,满足
b CPU温度稳定时,风扇转速不随规则而改变
当CPU温度稳定时,,从而有,即。
四、模型告诉了我什么
嗯,模型告诉我们,CPU发热一定的情况下,风扇的噪音与你设置的规则几乎无关!
所以,根据模型来看,将第1个叉拉到(室温+1,100%转速),其他叉放到100%转速,应当为最优的解,即规则曲线应尽可能地“上凸”。由于风扇转速(即噪音)只取决于风扇的散热性能(固定)和CPU的发热量,因此只要调速规则能够达到100%的转速,那么CPU最终的噪音都是一样的,无论规则如何设置。而且,这样还能使CPU保持在最低的温度。
但是,实际中还有以下问题:
- CPU的温度测量存在误差
也就是说,如果真的直接将第1个叉拉到(室温+1,100%)的话,由于CPU温度传感器存在测量上的误差,那风扇其实绝大多数时候就一直在以100%的速度运行。反而噪音更大。如果将四个叉的位置摆放得开一些,能够容纳下测量误差的话,即可实现最优的配置(让CPU的温度尽可能地降低)。
五、到底应该如何设置风扇转速规则
1 举例说明
以下述情况举例说明如何设置风扇规则:
- CPU温度传感器的测量误差为2度
- 想让CPU风扇实现至少10个档位(不含空档)
- 室温为28度
风扇规则应满足:
CPU实际温度 | 风扇转速 |
---|---|
28 | 0% |
32 | 10% |
36 | 20% |
40 | 30% |
44 | 40% |
48 | 50% |
52 | 60% |
56 | 70% |
60 | 80% |
64 | 90% |
68 | 100% |
即
第一列为室温+2n个测量误差,第二列为由0%起至100%的各个档位。
所以设置的时候就非常好设置了:
- 第1个叉:(室温,0%)
- 第2个叉:(上表最后一项温度值68℃,100%)
- 第3、4个叉:100%
2 参数的设置
上述举例中,涉及到3个参数:
- CPU温度传感器的测量误差
- 想让风扇有多少个档位
- 室温
a CPU温度传感器的测量误差
这个如果能找到厂家直接问到的话,最好。找不到的话,那就只好自己测了。测量的方法是:先将CPU风扇功率调至恒定值,然后给出恒定负荷的CPU计算量(通常是用烤机软件),查看温度在多少的范围内变动。范围上限减范围下限再除以2,即为CPU温度传感器的误差。需要注意的是,这需要让CPU稳定在不同温度下进行测试,以获取平均值。如果各个温度下温度传感器的测量误差不同且存在一定规律性,则需要根据这个规律,让上表中CPU实际温度一列的递增值随所在行的温度而改变。比如经测量发现,40度以下时,误差是2度,40度以上时,是1度,其他条件不变,则应当将档位设置成:
CPU实际温度 | 风扇转速 | 下一行递增 |
---|---|---|
28 | 0% | 4 |
32 | 10% | 同上 |
36 | 20% | 同上 |
40 | 30% | 同上 |
44 | 40% | 同上 |
48 | 50% | 2 |
50 | 60% | 同上 |
52 | 70% | 同上 |
54 | 80% | 同上 |
56 | 90% | 同上 |
58 | 100% | 0 |
b 想让风扇有多少个档位
由于要尽可能降低的不是转速,而是噪音,所以应当测一下自己可感知的最小噪音变动,从而反算出应当如何设置风扇转速的档位。如上表,其中可感知的噪音定为10%。如果发现自己对于噪音的感知精度随风扇转速的负荷率变化,则应当按照此规律设定风扇转速的档位。
至于如何测量,可以到BIOS里自己去试,一档一档地试。由于大多数CPU风扇都是PWM调节模式的,因此对于精确度的把握应当是十分准确的,不像DC调节的风扇那样不准确。
c 室温
其实,这个温度更贴切的讲法,应该是风扇的启动温度。由于一般人用的散热最终目标是接近室温(有一些用液氮的另说。。。),因此当CPU低于室温时,开启风扇反而会使其加热,因此不太建议将此温度设定得过低,如18度(除非你家室温能达到18度。。。);建议设置为家中室温波动的上限,如28度~30度。
六、现实远比你想象的复杂
1 模型的精细化
其实,风扇转速和降温效果之间,不只是正比的关系,还要考虑到外界温度,即很可能模型应该改成
这样,模型的收敛性会更好一些,稳定性不变,稳态会略有变化,但是最终如何设定风扇转速曲线的结论没有变。
2 AMD处理器的PBO
经过我实际测试,将第2个叉放在(48℃,100%)与放在(70℃,100%)相比,由于我开启了AMD的PBO(Precision Boost Overclocking,即精准超频)功能,当AMD处理器感觉到散热条件好时,会给CPU加电压,从而使得其发热(即模型中的)加大,所以会导致前述结论的错误,而应是风扇转速曲线越上凸,噪音反而越大。