随着微电子技术的快速发展,嵌入式系统的应用日趋广泛,小到我们日常接触的共享单车、手机、平板电脑、洗衣机、电冰箱等,大到汽车、航空航天等领域,都需要嵌入式系统的控制。嵌入式涵盖的细分技术领域非常多,在众多技术领域中,低功耗是一个极其重要的细分技术领域。绝大多数嵌入式相关厂商当下也非常注重对功耗的控制,并把其作为一种长期构建的能力。在低功耗技术领域中,我们还可以将该领域继续细分为芯片低功耗设计、软件低功耗设计、应用低功耗优化等领域,这些也是嵌入式领域技术人员日常工作的主要内容。
对功耗的控制和优化的追求是无止境的,这种无止境的追求来源于芯片技术和社会等多方面的向前发展。当前低功耗系统设计面临的主要挑战如下。
1)芯片集成度越来越高,支持的功能日趋完善和丰富,由此带来的不断增高的运行频率和高功耗与高发热等方面的因素对设备整体性能造成越来越严峻的影响。
2)当前人们的日常活动对移动设备的依赖程度越来越高,例如打车、支付、导航、听音乐、点外卖、拍照等几乎每个活动都离不开手机的支持,但是手机电池的电量是有限的,不可能支撑我们无节制的使用,尤其是出门在外,这就要求我们必须对系统和应用的耗电行为进行控制和优化,从而尽可能地延长手机使用时间。
3)目前中国在芯片生产的部分领域的技术水平与世界先进水平相比还存在差距。大家都知道,要想实现同等的功能,芯片生产的工艺越先进,功耗越低。那么如何在这种情况下,把功耗优化到与先进工艺同等水平呢?这也是芯片设计或者软件设计领域的低功耗从业人员面临的一个现实问题。
4)设备厂商生产产品时,需要考虑到各种复杂的使用场景:可能工作在50℃的高温环境,也可能工作在-50℃的极寒地区。面对这样的苛刻条件,如何对系统运行的平台做好控制来适应极端运行环境也是一个不得不解决的问题。
本书主要以低功耗软件设计为切入点,对Linux内核相关机制进行剖析和分解,然后采用类似思想在其他系统中搭建类似的机制来做功耗控制,希望能给对功耗控制与优化等内容感兴趣的从业人员提供一些帮助。