到底什么因素决定了计算设备的能耗?

2018-07-12 12:33:04 +08:00
 agagega

CPU 占用?外部 IO ?还是显示屏,或者类似 Wi-Fi 一样的东西?那当一个设备省电的时候,它是在哪一方面做了优化呢?写一个应用程序的时候可以主动让自己减轻对能耗的影响吗?

1193 次点击
所在节点    问与答
6 条回复
won
2018-07-12 13:04:23 +08:00
不同设备的能耗配比肯定不一样啊,如果你指的是计算用途的设备的话,肯定 U 耗能占比最大了,根本没有显示设备嘛
ryd994
2018-07-12 13:10:35 +08:00
怎么快怎么写
CPU 没事做的时候最省电
thedrwu
2018-07-12 13:58:16 +08:00
能耗是功率还是功?提问需要专业一点
silencefent
2018-07-12 14:08:53 +08:00
时钟频率
zhujinliang
2018-07-12 15:30:05 +08:00
台式机 CPU 和 GPU 消耗大部分电能,然后硬盘这种有机械运动的可能排第二,声卡网卡鼠标键盘几乎不耗电。显示器一般 20 ~ 30W,主要是背光,屏越大越耗电。
电池供电设备比如手机、ipad,屏幕是耗电大户,CPU 弹性很大,闲时可能耗电不及个 walkman,忙时可能比屏幕耗电都大;如果有 2G、3G、4G 模块,通信时瞬间耗电巨大。

数字电路主要因素:制程,晶体管数,频率。
目前绝大多少数字电路是 CMOS 技术,一个晶体管可以想象成一个电容,用导通和截止表示 1 和 0,导通需要往里面充入电荷,截止需要将电荷释放掉,充放电过程伴随能量损耗。制程( xx 纳米)越小,电容量可以做的越小,即需要重放的电荷量越小;频率越高,单位时间内晶体管充放电次数就越多,同时频率高了会带来不稳定,需要提升电压,然后 Q=CU...意味着耗电量增加;运算复杂度高,要么需要很高频率,要么需要大量晶体管做专用的硬件运算或并行运算,从数量上增加了耗电量,不过一般还是比提高频率要节能。

低功耗除了提升制程外,几乎统一指导思想:随用随开,用完就关。

现在的 CPU 几乎都支持休眠,把主频暂时降到 0,然后外部信号触发时在若干时钟周期内恢复工作,休眠时只需极低的功耗。软件在完成阶段性工作后,设置 CPU 唤醒条件(比如延时 10ms 或用户按下按键或网卡接收到数据包等等,视 CPU 支持的能力)及休眠等级(不同的等级意味着关闭的组件不同,一般越深度的休眠功耗越低但唤醒时间越长),然后发出休眠指令让 CPU 休眠。这是最常用的降低功耗的办法。

其它不同的设备节能办法不一样,要看具体的工作原理,比如硬盘一般会在一段时间无读写后停转,有读写操作时再启动。有线网卡有个 EEE(绿色以太网)功能,WiFI 也有低功耗优化,基本原理大概是闲置时协商个下次唤醒时间然后关闭收发器件。显示器会在你闭眼的时候关闭背光(逗你玩的)

PC 软件能为节能做贡献的也无非:优化算法,使用高级指令集或硬件编解码,减少 CPU 占用;尽量减少读写硬盘、网络,尽量将随机读写变为批量读写;做好软件功能,少搞花里胡哨需要显卡运算的界面效果
agagega
2018-07-13 02:39:13 +08:00
@zhujinliang 多谢非常专业的回答!

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

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

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

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

© 2021 V2EX