[ZLG-ARM] Linux 2.6 内核中的最新电源管理技术综述-1

[复制链接]
1664|2
 楼主| 胡刚 发表于 2009-4-6 16:50 | 显示全部楼层 |阅读模式
前言&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本系列**将结合近年来不断在各种硬件(包括&nbsp;CPU、芯片组、PCI&nbsp;Express&nbsp;等各种最新总线标准以及外设)上新增的节能技术。<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从&nbsp;Linux&reg;&nbsp;2.6内核及整个&nbsp;software&nbsp;stack&nbsp;(包括&nbsp;kernel、middleware&nbsp;以及各种用户态&nbsp;utility)如何添加对这些创新的节能技术的支持这一角度,为读者介绍&nbsp;Linux&nbsp;操作系统近几年来在电源管理方面所取得的长足进步以及未来的发展方向。&nbsp;<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;作为本系列**的开篇之作,首先要向大家介绍的是&nbsp;cpufreq,它是&nbsp;Linux&nbsp;2.6内核为了更好的支持近年来在各款主流CPU&nbsp;处理器中出现的变频技术而新增的一个内核子系统。&nbsp;<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cpufreq&nbsp;的由来&nbsp;<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;随着&nbsp;energy&nbsp;efficient&nbsp;computing&nbsp;和&nbsp;performance&nbsp;per&nbsp;watt&nbsp;等概念的推广以及高级配置与电源接口ACPI(Advanced&nbsp;Configuration&nbsp;and&nbsp;Power&nbsp;Interface)标准的发展,目前市场上的主流&nbsp;CPU&nbsp;都提供了对变频(frequency&nbsp;scaling)技术的支持。例如Intel&reg;处理器所支持的&nbsp;Enhanced&nbsp;SpeedStep&reg;&nbsp;技术和&nbsp;AMD&reg;&nbsp;处理器所支持的&nbsp;PowerNow!&nbsp;&reg;&nbsp;技术,另外像最新的PowerPC&reg;、ARM&reg;、SPARC&reg;&nbsp;和&nbsp;SuperH&reg;&nbsp;等处理器中也提供了类似的支持。参考资料中列出了当前&nbsp;Linux&nbsp;2.6内核所支持的具备变频技术的处理器。需要注意的是,这里要讨论的变频技术与大家以前所熟知的超频是两个不同的概念。超频是指通过提高核心电压等手段让处理器工作在非标准频率下的行为,这往往会造成&nbsp;CPU&nbsp;使用寿命缩短以及系统稳定性下降等严重后果。<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;而变频技术是指CPU硬件本身支持在不同的频率下运行,系统在运行过程中可以根据随时可能发生变化的系统负载情况动态在这些不同的运行频率之间进行切换,从而达到对性能和功耗做到二者兼顾的目的。&nbsp;<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;虽然多个处理器生产厂家都提供了对变频技术的支持,但是其硬件实现和使用方法必然存在着细微甚至巨大的差别。这就使得每个处理器生产厂家都需要按照其特殊的硬件实现和使用方法向内核中添加代码,从而让自己产品中的变频技术在&nbsp;Linux&nbsp;中得到支持和使用。然而,这种内核开发模式所导致的后果是各个厂家的实现代码散落在&nbsp;Linux&nbsp;内核代码树的各个角落里,各种不同的实现之间没有任何代码是共享的,这给内核的维护以及将来添加对新的产品的支持都带来了巨大的开销,并直接导致了&nbsp;cpufreq&nbsp;内核子系统的诞生。实际上,正如前文所说,发明变频技术的目的是为了能够让系统在运行过程中随时根据系统负载的变化动态调整&nbsp;CPU&nbsp;的运行频率。这件事情可以分为两个部分,一部分是“做什么”的问题,另一部分是“怎么做”的问题。“做什么”是指如何根据系统负载的动态变化挑选出&nbsp;CPU&nbsp;合适的运行频率,而“怎么做”就是要按照选定的运行频率在选定的时间对&nbsp;CPU&nbsp;进行设置,使之真正工作在这一频率上。这也就是我们在软件设计中经常会遇到的机制&nbsp;mechanism&nbsp;与策略&nbsp;policy&nbsp;的问题,而设计良好的软件会在架构上保证二者是被清晰的隔离开的并通过规范定义的接口进行通信。&nbsp;<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cpufreq&nbsp;的设计和使用&nbsp;<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为了解决前文所提到的问题,一个新的内核子系统——&nbsp;cpufreq&nbsp;应运而生了。Cpufreq&nbsp;为在Linux&nbsp;内核中更好的支持不同&nbsp;CPU&nbsp;的变频技术提供了一个统一的设计框架,其软件结构如图&nbsp;1&nbsp;所示。&nbsp;<br /><br /><br /><br />&nbsp;图&nbsp;1.&nbsp;Cpufreq&nbsp;的软件结构<br /><br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cpufreq&nbsp;模块(cpufreq&nbsp;module)对如何在底层控制各种不同CPU&nbsp;所支持的变频技术以及如何在上层根据系统负载动态选择合适的运行频率进行了封装和抽象,并在二者之间定义了清晰的接口,从而在设计上完成了前文所提到的对&nbsp;mechanism&nbsp;与policy&nbsp;的分离。&nbsp;&nbsp;<br /><br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在&nbsp;cpufreq&nbsp;模块的底层,各个CPU&nbsp;生产厂商只需根据其变频技术的硬件实现和使用方法提供与其&nbsp;CPU&nbsp;相关的变频驱动程序(CPU-specific&nbsp;drivers),例如&nbsp;Intel&nbsp;需要提供支持Enhanced&nbsp;SpeedStep&nbsp;技术的&nbsp;CPU&nbsp;驱动程序,而&nbsp;AMD&nbsp;则需要提供支持&nbsp;PowerNow!&nbsp;技术的&nbsp;CPU&nbsp;驱动程序。&nbsp;&nbsp;<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在&nbsp;cpufreq&nbsp;模块的上层,governor&nbsp;作为选择合适的目标运行频率的决策者,根据一定的标准在适当的时刻选择出&nbsp;CPU&nbsp;适合的运行频率,并通过&nbsp;cpufreq&nbsp;模块定义的接口操作底层与&nbsp;CPU&nbsp;相关的变频驱动程序,将&nbsp;CPU&nbsp;设置运行在选定的运行频率上。<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;目前最新的&nbsp;Linux&nbsp;内核中提供了&nbsp;performance&nbsp;、powersave&nbsp;、userspace、conservative&nbsp;和&nbsp;ondemand&nbsp;五种&nbsp;governors&nbsp;供用户选择使用,它们在选择&nbsp;CPU&nbsp;合适的运行频率时使用的是各自不同的标准并分别适用于不同的应用场景。用户在同一时间只能选择其中一个&nbsp;governor&nbsp;使用,但是可以在系统运行过程中根据应用需求的变化而切换使用另一个&nbsp;governor&nbsp;。&nbsp;&nbsp;<br /><br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这种设计带来的好处是使得&nbsp;governor&nbsp;和&nbsp;CPU&nbsp;相关的变频驱动程序的开发可以相互独立进行,并在最大限度上实现代码重用,内核开发人员在编写和试验新的&nbsp;governor&nbsp;时不会再陷入到某款特定&nbsp;CPU&nbsp;的变频技术的硬件实现细节中去,而&nbsp;CPU&nbsp;生产厂商在向&nbsp;Linux&nbsp;内核中添加支持其特定的&nbsp;CPU&nbsp;变频技术的代码时只需提供一个相对来说简单了很多的驱动程序,而不必考虑在各种不同的应用场景中如何选择合适的运行频率这些复杂的问题。<br />
msleep 发表于 2009-4-8 10:02 | 显示全部楼层

Linux

  
msleep 发表于 2009-4-8 10:03 | 显示全部楼层

linux2.6已经做了节能管理

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

95

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部