打印

一个死循环的功耗大概是多大?

[复制链接]
2042|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 人生长苦 于 2014-4-4 21:24 编辑

比如在PC机上用C语言就写一个WHILE(1);
查CPU占用率是50%,双核机.
难道这样就要占用CPU满载功率的50%了?或者其实只有一丁点功耗用于这个程序呢?
或者是功耗和一个程序运行的代码数量相关?
(有钳流表就能很好的测到了,可是我钳流表放在家里,谁有就可以验证)

相关帖子

沙发
nickyamw| | 2014-4-4 10:36 | 只看该作者
我觉得应该是一直在循环,所以CPU的一个核一直在工作

使用特权

评论回复
板凳
lanmp| | 2014-4-4 10:59 | 只看该作者
除非时钟停止,否则CPU的占用率永远是100%。无非是被你占还是被他占的问题。

使用特权

评论回复
地板
人生长苦|  楼主 | 2014-4-4 11:30 | 只看该作者
lanmp 发表于 2014-4-4 10:59
除非时钟停止,否则CPU的占用率永远是100%。无非是被你占还是被他占的问题。 ...

使用率

使用特权

评论回复
5
人生长苦|  楼主 | 2014-4-4 11:30 | 只看该作者
问题是功耗,功耗

使用特权

评论回复
6
menfiss| | 2014-4-4 11:49 | 只看该作者
Idel操作可以降低一点功耗,对比整机功耗不值一提吧。

使用特权

评论回复
7
huangxz| | 2014-4-4 11:49 | 只看该作者
这个问题很值得研究,我也一直很纳闷,为啥开程序多的时候cpu功耗就大呢,难道就nop指令省电吗,

使用特权

评论回复
8
menfiss| | 2014-4-4 12:08 | 只看该作者
huangxz 发表于 2014-4-4 11:49
这个问题很值得研究,我也一直很纳闷,为啥开程序多的时候cpu功耗就大呢,难道就nop指令省电吗,
...

严格的说nop是应该省一点电,因为nop只取指,不操作寄存器,而且指令译码器部分也远比其它指令简单。

使用特权

评论回复
9
lanmp| | 2014-4-4 14:24 | 只看该作者
人生长苦 发表于 2014-4-4 11:30
使用率

这是Windows骗你的,System Idle Process会把剩下的都占满。

使用特权

评论回复
10
lanmp| | 2014-4-4 14:26 | 只看该作者
huangxz 发表于 2014-4-4 11:49
这个问题很值得研究,我也一直很纳闷,为啥开程序多的时候cpu功耗就大呢,难道就nop指令省电吗,
...

以前的CPU没有这个问题。现在多数CPU可以动态调整运行速度,所以功耗会变。

使用特权

评论回复
11
huangxz| | 2014-4-4 18:43 | 只看该作者
lanmp 发表于 2014-4-4 14:26
以前的CPU没有这个问题。现在多数CPU可以动态调整运行速度,所以功耗会变。 ...

难道单片机也会动态调整工作频率?
其实现在感觉最明显的应该是手机了,因为没有看到相关的测试报道,比如三星的手机后台运行的任务多了会不会费电一点啊,当然应该排除外围比如wifi之类的耗电量的干扰.

使用特权

评论回复
12
lanmp| | 2014-4-4 21:06 | 只看该作者
没见过单片机会调整频率。你用单片机测试过NOP和其它指令的功耗?
现在手机的CPU都会自动调整频率的。

使用特权

评论回复
13
tooqng| | 2014-4-4 21:07 | 只看该作者
CPU一上电就应该是一直在运行了,现在都带自动频率和供电控制的,

使用特权

评论回复
14
sule121| | 2014-4-4 22:49 | 只看该作者
我也很纳闷,为什么我一开机温度就达到了六十多度

使用特权

评论回复
15
mcu5i51| | 2014-4-5 09:18 | 只看该作者
死循环的功耗不能确定,CPU功耗和执行的指令有关,每条指令所参加的原件(或模块)是不同的,在PC上回更加明显,因为PC上会有更多的外设(相对CPU来说的外设,实际上很多事集成在CPU中的,比如浮点运算,协处理器,显示处理,内存访问等等一大堆)
单线程的死循环可以占满单个CPU,双核的话就是50%左右,任务调度会强行打断循环,以便系统可以运行,不至于"死机",同样的,任务管理器中看到的是两个或多个CPU负载会较均匀,就是代表着这个死循环在多个CPU上一直在串门,除非你锁定在某一个CPU上;

使用特权

评论回复
16
人生长苦|  楼主 | 2014-4-5 10:05 | 只看该作者
mcu5i51 发表于 2014-4-5 09:18
死循环的功耗不能确定,CPU功耗和执行的指令有关,每条指令所参加的原件(或模块)是不同的,在PC上回更加明显, ...

怎样做可以使其锁定在一个CPU上不串门?

使用特权

评论回复
17
江枫渔火| | 2014-4-5 13:35 | 只看该作者
电路的功耗可能得考虑:维持输出的开销+触动变化的开销

熄火了就不花费了。不熄火就得输出着以维持住状态。光维持住状态没有用,电路是不断变化的,所以需要消耗能量去推动电路变化。

降低门数,降低频率,降低特定功能所需要翻转电路的次数,则降低功耗

CPU在正常运行中,循环所涉及到的电路翻转特别少,功耗自然少。只要CPU频率没变,它做多少活,它都是一样速度的做。它不会替你着急。

使用特权

评论回复
18
yh21ic| | 2014-4-5 16:02 | 只看该作者
看看反汇编出来的是什么,才可以解决你这个问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

217

帖子

1

粉丝