[讨论] ARM处理器如何动态改变运行频率(本贴重奖当日最佳回答)

blacksword   2011-4-8 08:50 楼主
大家都知道X86的笔记本有动态调节主频的技术, 那么在ARM上要如何实现呢?

当日最佳回答, 奖200枚芯币

[ 本帖最后由 blacksword 于 2011-4-8 08:51 编辑 ]
独自上路,径直潜行

回复评论 (11)

电压的平方V2与功耗P成正比,所以稍稍降低一点电压,功耗便能大大减少
点赞  2011-4-9 23:07
引用: 原帖由 ldan1 于 2011-4-9 23:07 发表
电压的平方V2与功耗P成正比,所以稍稍降低一点电压,功耗便能大大减少


对于低频电路是这样的,但高频电路,频率越高,门切换的漏电流越大。因仅不就简单的平方关系。 
独自上路,径直潜行
点赞  2011-4-9 23:49
还有谁来挑战下?
加油!在电子行业默默贡献自己的力量!:)
点赞  2011-4-10 09:03
系统跑起来后,整一个进程监测  cpu  的负荷(比如 spy 干的事情),一段时间低于一个预值,就把频率降低之;高于预值则又恢复。不过这得保证别对 ddr 造成影响导致系统挂掉了。
没有试过,可能是可行的。

[ 本帖最后由 fanghuoqiang 于 2011-4-10 15:15 编辑 ]
点赞  2011-4-10 15:13
在Linux系统中,支持部分arm可以在运行中调节CPU的频率来节省电量,我看了下代码,根据平台不同可能设置的方法也不同,但是就我熟悉的来看,应该是设置寄存器就可以了。CPU的频率会在文件系统中的/sys/目录下面的文件中有所体现,当内核调用改变频率的函数的时候,同时也会知会/sys/下的相关文件。如果需要的动态调节的话,可以自己编写一个驱动,对用户空间提供一个接口,然后在用户空间编写一个守护进程来判断是否需要调节频率,然后控制驱动对应的节点就可以了。简单的看了下,只了解些Linux系统,说的不对的话,请指教,呵呵。

[ 本帖最后由 lntuabc 于 2011-4-10 15:31 编辑 ]
点赞  2011-4-10 15:22
idle任务中做统计,超过一定时间t1,关闭某些模块..... 超过tn,如果没有任务在运行,降频 切换从PLLCLK切换回XTALCLK。
点赞  2011-4-12 20:11
真是一个软件问题还是个硬件问题?
从软件上说,只要在idle的时候改变设置cpu clk的寄存器就可以降低频率;
从硬件上说这个问题就是个非常大的问题了,而且是使用者无法改变的。具体要看arm体系的那些超长的spec
点赞  2011-4-14 14:41
最近出差中,累毙了

上面还是有说的不错的。 分加上了。

但 降低频率本身只能节省下漏电功耗,要是想进一步节电该怎么办呢?
独自上路,径直潜行
点赞  2011-4-14 16:47
普通ARM是没有彻底关闭某模块一说的。不过不使能某模块还是会节省一些能量。另外不用的端口要置高电平或高阻,也能节约一部分能量。

现在的ARM大多都是CMOS电路,降低频率自然可以节约很大部分能量,不用的模块关闭时钟输送,也等效于关闭了这个模块。

还有降低频率应该从分频来考虑,降低内核工作频率,尽量不要影响到TIMER,PWM类模块的频率,不然系统会乱。
点赞  2011-4-15 07:46
有没有人对动态电压有所研究的,请说说
独自上路,径直潜行
点赞  2011-4-20 10:02
动态电压?何解??
点赞  2011-4-21 21:19
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复