CPU层次的电源管理

2019-07-13 22:05发布

        在CPU这个层次,减少对电源的消耗,我们可以有很多方案供选择,比如说,使用idle state(C-state), 改变CPU 的频率(P states), 还有扼制CPU 的工作时间(调节占空比)(T-states).下面对每一个方案作出简单的介绍。 如果想知道详细的规范,还是得去看http://www.acpi.info/spec.htm     1. C-States(工作时的状态) 对于我们常见的intel cpu, 它有很多种省电模式,江湖叫作C-states. C state 在很长一段时间,只有笔记本才支持, Nehalem之后, 服务器才支持,一般来讲,服务器都是7x24 小时工作的,不需要睡眠的,C state 主要策略是 关闭不需要的部件(应该是CPU内部的部件,不是指关掉硬盘,内存)。      当处理器工作于C0 这个状态时,CPU 正常执行指令,除C0 以外的Cx 状态,CPU 都处于idle 状态。这里的x 的值越大,CPU 睡得越(深)沉, 即关掉的部件越多,当然,醒过来(返回到C0状态)所需要的时间就越长。 下表列出了大部分常见的C-states. C-State 模式 定义 C0 工作模式,CPU 全速运行 C1 第一个idle 状态,通过软件方式关掉内部时钟,维持总线接口单元和APIC  C2 通过硬件方式,关掉内部时钟,维护所以软件可见的状态 C3 关掉所有的内部时钟,CPU 不再维护cache 一致性。


2 . P-States (处理器performance 状态) 当CPU 在C0 的状态,还可以划分为多个performance states(P-states). 可以这样说,除了C0 以外的C state 都是描述的 idle state. 但所有的p states 都是在描述CPU 工作时(operational) 的状态。 P x ,  x 的值越大,CPU 就以更低的工作频率 还有电压运行,不同的CPU 支持的x的值不一样。但是,P0 一定是最高performance 的state.
与P state 有关的几个method. 2.1   _PSS (Performance Supported States)    这个object 告诉ospm 系统可以支持的p state 的个数,以一个package 列表  的形式返回来,这个package 里面包含了CPU 主要频率, 典型的power 消耗, performance state 变迁过程中需要动到的寄存器,这个表以从大到小的方式排列,因此,第0个 表描述了最大performance 的state.第n 个package 描述了最低performance 的state.

参数: None
返回值: 一个不定长的package,这个package 包含了一个子package 的列表,如下所述: Package { Pstate [0] // Package - Performance state 0 ... Pstate [n] // Package - Performnace state n }

每一个子package 包含的成员是这样的: Package { CoreFrequence // Integer (DWORD) Power // Integer (DWORD) Latency // Integer (DWORD) BusMasterLatency // Integer (DWORD) Control // Integer (DWORD) Status // Integer (DWORD) }
下面,逐个解释每个成员:  Core Frequency:   表明CPU的工作频率。 Power:   表征最大的电源消耗(以milliwatt 为单位) Latency: 表征从其他状态跃迁到这个状态所需要的时间 Control: 表征将要写进 Performance Control Register(PERF_CTRL)的值。 Status:    从PERF_STATUS 读出值然后和上面的control 比较,用来确定,是否写值成功。

3. T-states(处理器throttling 状态) T states 过调整单位时间内CPU Clock On /Clock On + Clock Off)的时间(也即Clock On工作占整个CPU工作时间的占空比)的方式 ,影响系统的功耗和温度。