ACPI电源管理

阅读用时 ~1 分钟

ACPI规范定义了一台兼容ACPI的计算机系统可以有七个状态:

  • G0(S0):下常工作状态。
  • G1:睡眠状态,这个状态又分为S1~S4四个睡眠状态
  • G2(S5,也有叫作:Soft Off):有些部件仍然带电,以便被键盘等设备唤醒,唤醒时需要运行启动程序来启动操作系统。

G1中S1~S4睡眠状态:

  • S1:电耗电睡眠模式,处理器的所有寄存器被刷新,CPU停止执行指令。CPU和内存电源一直维持,一些设备如果没被使用就停止供电。这种模式通常指上电待机或POS
  • S2:比S1更深的睡眠状态,不给CPU供电,通常这种模式不被采用
  • S3: BIOS中叫做『Suspend to RAM/STR』,在Windows和Linux一些发行版本中叫做『待机(Standby)』,在Windows Vista和Mac OS X则叫做『睡眠(Sleep)』。在此状态下RAM仍然有电源供应,也是几乎唯一有电源供应的组件。也就是将睡眠前系统的状态保存在内存中,这样唤醒恢复快,但有资料丢失风险。
  • S4: Windows中叫『休眠(Hibernate)』,Mac OS X中叫安全睡眠。其原理和上面的S3类似,只是睡眠前把状态信息存入硬盘等非易失性设备上。

设备状态

设备状态划分相关因素

  • 电源消耗:设备用电量
  • 设备上下文:设备从D0进入其它状态时需要保存多少信息,操作系统负责保存设备的上下文信息
  • 设备驱动:让设备恢复到D0,驱动应该做什么

设备状态

  • D0(Full-On):工作状态,即电源消耗最多,设备被完全应用,设备保留了全部设备上下文。
  • D1~D2:中间电源状态,根据不同的设备有所不同。
  • D3(Off):设备电源关闭,设备上下文信息全部丢失,设备重新加电时操作系统会重新初始化设备。

处理器电源状态

处理器电源状态(C0~C3,后面还有Cn)是指在G0状态下,处理器电源状态的处理器电能消耗和温度管理的状态。在C1~Cn状态下,CPU都处于各种不同的睡眠状态下,CPU都有一个恢复到C0的唤醒时间,恢复时间越短,耗电越高,反之亦然。

  • C0:正常工作状态
  • C1(Halt):拥有最短的唤醒时间,这个延时必须短到操作系统软件使用CPU的时候不会考虑到唤醒时间方面的因素。
  • C2(Stop-Clock):这个状态下处理器维持着所有的软件所见的状态信息,但是需要更长的时间来恢复到C0。这个状态下情况最坏的硬件唤醒时间是由ACPI固件提供,并且操作系统软件可以利用这些信息来决定是采用C1而不是C2状态,C2比C1更省电。
  • C3(Sleep):相比C1和C2更省电了。这个状态下情况最坏的硬件唤醒时间是由ACPI固件提供,并且操作系统软件可以利用这些信息来决定是采用C2而不是C3状态,当处于C3状态时,处理器缓存保留了所有的状态信息,但是忽略所有的侦听。操作系统软件负责保证缓存数据的一致性。

设备和处理器性能状态

设备和处理器性能状态(Px状态)是在C0(对于处理器)和D0(对于设备)下定义的电源消耗和能力的状态。性能状态允许OSPM在性能和能源消耗之间获取平衡。P0是最高性能状态,从P1到Pn是连续的低性能状态,最高限制n为16。

  • P0:使用最大性能并且消耗的电能最多。
  • P1:性能比前者要小,但是消耗电能也相应少一些。
  • Pn:n是的大小是依赖于处理器和设备的,处理器和设备可以定一个任意的不超过16的数字。
  • 这个状态在Intel处理器中称为SpeedStep,

SpeedStep不陌生吧,参见:为什么要检查CPU Speedstep

如何拼接多个图片到一个大图片

我想把几张图片拼成一个大图片,实现方式如下:安装 imagemagick{% highlight bash %}brew install imagemagick{% endhighlight %}拼接图片,例如:将1.png, 2.png, 3.png并成me.png,命令...… 继续阅读

如何阻止iOS系统升级

发布于 November 05, 2017