【cpufreq子系统】P State和C State

cpufreq子系统是在linux2.6.0之后导入的,cpufreq主要由两个部分组成:调控器(类似interactive变速器)+守护程序

CPU电源状态:C state

CPU性能状态:P state

实际上在linara的官网脚本上统计出来的c-state是指的idle(offline),p-state表示的是active(online)

C state:不包含CPU运行时的C0状态,是空闲状态,处理器将解锁并关闭组件来节省电量,也就是在idle里面的状态

一般用户很少注意到这个状态,通常只会在使用CPU-Z来监控时钟频率和电压时才会留意到它。
移动处理器的C状态比台式机的多。例如,Core 2 Duo处理器(Meron)会支持C0-C4状态,然后桌面型Core 2 Duo处理(Conroe)仅支持C1-C0状态。
C0状态(激活)这是CPU最大工作状态,在此状态下可以接收指令和处理数据 ,所有现代处理器必须支持这一功耗状态。
1.C1状态(挂起)
  • 可以通过执行汇编指令“HLT(挂起)”进入这一状态
  • 唤醒时间超快!(快到只需10纳秒!)
  • 可以节省70%的CPU功耗
  • 所有现代处理器都必须支持这一功耗状态
2.C2状态(停止允许)
  • 处理器时钟频率和I/O缓冲被停止
  • 换言之,处理器执行引擎和I/0缓冲已经没有时钟频率
  • 在C2状态下也可以节约70%的CPU和平台能耗
  • 从C2切换到C0状态需要100纳秒以上
3.C3状态(深度睡眠)
  • 总线频率和PLL均被锁定
  • 在多核心系统下,缓存无效
  • 在单核心系统下,内存被关闭,但缓存仍有效
  • 可以节省70%的CPU功耗,但平台功耗比C2状态下大一些
  • 唤醒时间需要50微妙
4.C4状态(更深度睡眠)
  • 与C3相似,但有两大区别
  • 一是核心电压低于1.0V
  • 二是二级缓存内的数据存储将有所减少
  • 可以节约98%的CPU最大功耗
  • 唤醒时间比较慢,但不超过1秒
5.C5状态
  • 二级缓存的数据被减为零
  • 唤醒时间超过200微妙
6.C6状态
  • 这是Penryn处理器中新增的功耗管理模式
  • 二级缓存减至零后,CPU的核心电压更低
  • 不保存CPU context
  • 功耗未知,应该接近零
  • 唤醒时间未知
CPU电源状态概要

此外,C1E 模式(或称作 Enhanced C1 或 C1 Enhanced Mode)也可以帮助空闲系统节省电能。同样通过降低电压和频率,C1E 尝试比传统 C1 状态(只会停止时钟信号)提供更大的电能节省。事实上,C1E 能够比任何 CPUfreq 调控器更快地降低电压/频率。

并非所有处理器都有这些选项,但是要使用 C 电源状态和 CIE,请确保启用了 BIOS 选项 CPU C State 和 C1E(或者类似的选项),以便于在空闲时实现更大的电能节省。一些系统支持 C3 甚至 C6 尝试休眠状态。

记住,CPU 电源状态程度越深,节省的电能就越多。

CPU/设备性能状态:运转中

CPU/设备性能状态是与 CPU 频率和电压相关的运转状态。CPU/设备性能状态值越大,处理器所使用的频率和电压就越低。CPUfreq 调控器使用 CPU/设备性能状态来修改频率和降低功耗。

您需要在系统上启用 Processor Performance States BIOS 选项(或类似的选项),以便于使用 CPU/设备性能状态和 CPUfreq 调控器。图 1 是 C 和 CPU/设备性能状态的简化图。

图 1. CPU 电源状态和 CPU/设备性能状态(因为找不到作者了,但是这里觉得C0应该不在idle这个状态里面)
【cpufreq子系统】P State和C State_第1张图片



你可能感兴趣的:(linux内核)