分类:
2012-11-05 08:21:28
当前来讲,对于同质化的软件,其差异性在于性能,功能,用户体验等,在不久的将来,功耗可能成为重要特性之一。想象一下,在超级本普及之后,一个软件能支撑十个小时,而另外一个只能七个小时,那么用户尤其是没有外接电源的情况下必然更倾向于前者。
闲话短续,那么什么样的软件是节能的软件呢?通常可以从下面两个工作状态来看:
Idle workloads:
1. 处理器和平台能够长时间处于idle状态,避免软件的高频执行,比如统计等;
2. 应当尽可能的将任务联合,协调和分批处理;避免频繁的执行程序,最小化后台服务;
3. 软件不能够影响平台硬件组件进入到深一层的power state(往往是因为太多的中断所造成)。
4. 当系统idle的时候,使硬盘降速(spin down)。避免周期性的硬盘访问注册。
Active workload:
1. 提高计算的有效性和CPU的使用效率,目的是让系统进入到更长时间的idle状态;
2. 减少处理器的C-state切换的次数,频繁的C-state切换会导致能量的损耗;
3. 对于多核架构,最大化多核程序执行的并发性,这样可以是package 层次的资源和platform层次的资源得到更有效的管理;
4. 减少程序的执行频率,对于有特定cpu使用率的任务来说,让它运行更长的时间,更低的频率,更节能。
5. 程序中如果提高了timer分辨率对功耗有很大的影响,尽量使用大的timer的时间间隔,如果必须使用小的timer间隔,当任务完成之后,将其重置为大的值。
实际功耗分析中,package state, core state, c-state等都将是重要的考虑参数。从上面这些点中可以看到,所谓功耗优化,本质上无非是从平台的角度考虑性能优化。功耗的问题,不仅仅是CPU性能问题,而降低CPU的利用率则是第一步。
对于平台的功耗优化来说,还要考虑如何提高程序的并发性,如何减少外设(硬盘等)的电源的损耗,而这都是与软件的运行特性相关的。
摘自