各位,我有一个问题:为什么 cpu 执行空闲任务时的消耗和密集型的任务消耗不一样

2019-05-24 21:14:18 +08:00
 BigDogWang

cpu 在空闲的时候会执行操作系统里的空闲任务,那么既然空闲的时候 cpu 也在跑,运行密集型任务的时候 cpu 也在跑,为什么二者的功耗不一样呢?是因为频率变了吗?

1748 次点击
所在节点    问与答
9 条回复
goreliu
2019-05-24 21:27:27 +08:00
不只和频率有关。cpu 工作量越大,就越耗电,一个明显现象就是温度会升高,这热都是电转化来的。微观层面的话,cpu 有空指令,空闲的时候是执行空指令,很少消耗资源,而执行其他指令是需要消耗更多资源的,比如访问缓存、寄存器、内存、硬盘等等都需要电力驱动。
billlee
2019-05-24 21:41:11 +08:00
空闲任务指示操作系统的一个逻辑表示,实际上 CPU 根本就没在执行指令。
leloext
2019-05-24 21:48:33 +08:00
https://www.zhihu.com/question/266776516 供参考,前几天在 u2b 上面看到过这么讲解的。
sujin190
2019-05-24 21:50:20 +08:00
更细微的,就算 cpu 一直在运行,不同指令的功耗也不可能一样吧
bearqq
2019-05-24 21:53:50 +08:00
其实是施加的电压不一样,闲置的时候频率降低,可以用更低的电压跑,从而省电
SuperMild
2019-05-24 21:53:59 +08:00
简单来说,通电并不消耗能量,做功才消耗能量。
msg7086
2019-05-24 22:00:36 +08:00
执行指令最少需要译码器,然后根据指令不同还要调用 ALU FPU 甚至是 AVX 计算单元,不同的单元耗电不同。
比如只是执行算术运算的话,就是 ALU 负责,耗电很小。
而 AVX 单元耗电很大,发热很高,甚至会达到撞功耗墙需要降频的程度。
如果 CPU 空闲的话,操作系统会让核心休眠,降低运行频率,频率降低就等于每秒执行的运算减少,功耗自然小了,没用到的计算单元也会关闭。
Lax
2019-05-25 10:10:53 +08:00
空闲任务只是个逻辑的说法,并不额外消耗系统资源。变频是另一个话题了,一般在桌面版 CPU 上比较常用。
服务器变频容易造成莫名其妙的性能问题,如果为了省电可以选择关机而不是降频率
BigDogWang
2019-05-31 10:24:19 +08:00
感谢各位大佬~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/567427

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX