在不同的时间点,人们关注的东西是不一样的。
如果你在1985年问英特尔的销售人员你们这个CPU它省不省电,对方大概率会觉得你是个神经病。那个时代的CPU技术可以说是简单粗暴,整个业界都将更快的运行速度做为第一目标,为追求速度而浪费的那一点点电力更不值得一提。
站在2020年的CPU销售柜台前,虽然运行速度依旧是人们关注的主要方向,但已经不是全部,毕竟发展了这么多年,大家的速度都没慢到哪里去,即使是低档产品,也足够普通用户使用了。与此同时,随着移动端应用的增加,无论是个人用户还是企业级用户,都开始琢磨同一个问题:我手里的这颗CPU足够省电吗?
速度和省电就像是矛与盾,二者相互依存却又此消彼长。为了最大程度的平衡运行速度和运行能耗的天平,单单依靠CPU硬件已经远远不够,还必须得到操作系统和BIOS的配合,经过不断的尝试和改进,高级配置和电源接口(Advanced Configuration and Power Interface),简称ACPI,在1997,由Intel, Microsofe, Toshiba联合制定并推出。在此基础上不断改进迭代版本规格,截至到2011年12月,已经是第五版ACPI了。
ACPI的本质是为OS提供了可以用来进行系统电源管理的硬件抽象和接口(Method)。为了方便调控,围绕电源管理,上到整个System,下到CPU的每一个Core和每一个Devcie,ACPI根据定义了不同层级的State,在不同的工作点,OS通过ACPI提供的接口设定系统各个部件到合适的State,从而达到性能和节能的统一。需要提前说明的是,ACPI并不是这期内容的主角,大家有兴趣可以自行翻阅ACPI Spec,但是我们需要ACPI定义的这些State做为背景知识方便后面的叙述。
ACPI定义的State共有六种:Global States(全局状态),Sleeping States(睡眠状态),C State(CPU状态),Performance State(能效状态),Throttling States和Device States。它们之间的关系可以用下面这张图来诠释:
先看绿色圆圈内和G-Stat