4、如何造就完美效率
4.1、话说效率
效率(efficiency)是指有用功率对驱动功率的比值,同时也引申出了多种含义。效率也分为很多种,比如机械效率(mechanical efficiency)、热效率(thermal efficiency )等。效率与做功的快慢没有直接关系。
对计算机领域而言,效率就是我们就最少的时间周期实现最大化的功能,比如说我们现在的处理器主频是2G的,那每条指令需要的时间为1/2G秒,如果我们在要实现拷贝功能的函数,两条指令就能完成肯定比三条指令的效率高。以上是针对2G处理器的,现在有2.5G的处理器,同样是两条指令完成的拷贝,那么很明显2.5G的效率要高了,实现同样的功能时间明显就少了吧,这就是所谓的高频率。
4.2、处理器的频率
如我们常见的嵌入式处理器,ARM9(S3C2410、S3C2440),ARM11(S3C6410),Cortex-A8,Cortex-A9都不是只有一个固件的频率,如ARM1176的主频传闻可达1G,但我们际应用的是667MHz左右,S3C2440主频可达400+MHz,但在代码中却没看到这样的设置(详见下小节),其实目的很简单,就是在保证性能的同时,尽可能提高运行效率。
但实际应用中,采用高主频、特别有超频性质的获取更高频率,会导致功耗的直线上升,现在明白了各位“机”友们手机为什么会那么热了吧,特别是山寨机友们体会很明显吧。发热倒是小事,大不了冬天暖手,夏天晚上喝夜啤酒的时候把手机拿出来烤烤烧烤吧,但最大的问题这可是直接影响使用寿命的,想想咱花了白花花的银子买来的,两天就给坏了肯定不好受吧,所以这里得取一个平衡点(可以通过变频技术实现,以后再发一文弥补这里的空缺),在不影响系统效率的情况下,适当地降低频率可减少功耗,提高电池的使用寿命。
4.3、返璞归真
说了那么多的废话,现在又到看代码的时候了,接上一篇的地方说时钟频率的设置,代码如下:
/* FCLK:HCLK:PCLK = 1:2:4 */
/* default FCLK is 120 MHz ! */
ldr r0, =CLKDIVN
mov r1, #3
str r1, [r0]
mrc p15, 0, r1, c1, c0, 0
orr r1, r1, #0xc0000000
mcr p15, 0, r1, c1, c0, 0