cstate支持选C1C3C6C7C8C10 (CStates-二-CPU省电的秘密)

文章编号:8969 更新时间:2024-02-20 分类:互联网资讯 阅读次数:

资讯内容

前一篇关于EIST的文章中,我们提到了CStates,这里我们详细介绍一下它的由来和运行机理。

原理篇

想象一下,我们新建了一个有八个大车间的新工厂,厂房干净漂亮,传送带笔直干净,各个厂房之间有宽阔的道路,到处照明充足,在车间外还有外围仓储库,和总的入厂出厂和后勤支持部门。更妙的是,这里全部机器人操作,只有你坐在总经理办公室里,手握一个可以控制各个地方的遥控器。你的最大敌人是需求极度不明确,随时都有可能变化,为了更大的利益,你会如何安排生产策略呢?聪明的你当然会在需求很大时加大马全力生产,以求最大效益。在需求不足时,可以让有的生产线传送带减慢些,以节省不必要的消耗。需求进一步下滑时,你会停掉某个车间的流水线,同时切断流水线机器人的电源,你还留有后手,在需求回升时随时可以恢复生产。需求还是很糟糕一段时间后,你会干脆关掉这个车间,让机器人都回到仓库中,关掉车间所有的照明等等的电力,这样几乎不会消耗什么东西了,不过要恢复生产就要费一番时间了。在明确是淡季后,你关掉了几个相邻车间,并关闭其共享的道路和后勤部门,清空了附近的仓库,进一步减低消耗。在做这些事时,你需要仔细衡量各个时机,以在省电和不会被忽然来到的需求弄得焦头烂额之间寻求平衡,越节省电力,要恢复全力生产就越麻烦,而你必须做到心中有数。

这里你就是OS(操作系统),工厂是CPU,而车间就是内核(假设八核),仓库是Cache;各个省电的级别可以映射到不同的CStates(第一个调慢流水线是Pstates),你聪明的抉择自然归于OS的电源管理策略了。怎么样,是不是很简单直接呢?

历史

你也许会吃惊于这个低功耗概念是在486DX就部分引入了,远不是什么新鲜事。然而,随着时间的迁移,越来越多更加省电的状态被引入到最新的CPU中。在深度上,最开始只有C1,接着C2、C3、C5、C6、C7等等陆续得到支持。在广度上,开始时Thread级别的(HT情况下,一个Core有两个Thread),后来加入了Core级别的,在多CPU的系统上还引入的CPU整体的CStates(PackageCStates)。在最深的PackageCStates下的CPU,耗电几乎为0了。下面有张简表我们可以看看各个CPU的支持程度:

操作系统最开始只是简单的在Idle(空闲)时调用HLT指令从而进入C1。在Windows95开始支持ACPI后,才开始支持其他的CStates。

实现

1.硬件

IntelCPU是CState可以工作的硬件基础。它通过一系列寄存器保证固件和OS可以得到足够的信息,有足够的手段控制CState的工作模式。下面我们详细介绍下各个不同的CStates。

所有的X86CPU都有个HLT(Halt)指令,调用后,CPU会进入idle模式,什么事也不干,直到收到中断。这里是个绝佳场所可以用来节电,Intel在这里引入了C1状态,关闭了时钟信号(内部bus和APIC除外)。由于时钟信号驱动内核里绝大多数部件,它的停止,让这些设备也停止了运行,从而减少了电能消耗。有趣的是HLT指令自从8086开始就有了,这次的功能扩展几乎不要任何软件改动就能省电。

在Core2Duo(酷睿2)引入了C1E(EnhancedHalt),在关闭时钟的基础上调低了电压,从而更加省电。如果你在固件中打开它,HLT时会自动进入C1E而不是C1。

C2也是在486DX引入,它增加了一个STPCLK(StopClock)引脚,这在某种程度上和C1很像,不同点在于,一个是软件触发的(C1),一个是硬件触发的(C2)。后来加入的关闭时钟发生器的功能让耗电进一步减少。后面C2E也出现了,C3开始内部的BUS和APIC时钟也被关闭,这里不再赘述。

要特别强调的是,C1,C2和C3下,Cache一致性是得到保证的,从而恢复现场速度也很快。

C4/C6/C7下,越来越多内部设备的上下文状态信息(Context)也被封存和冻结,Catch被清空和关闭。如此一来,要恢复现场变得越来越耗时。同时Cache一致性也被破坏,OS需要知道它何时需要清

cstate支持选C1C3C6C7C8C10 标签: 计算机科学CPUUEFI中央处理器

本文地址: https://yihaiquanyi.com/article/9ab85c6e7fb6f7092908.html

上一篇:为什么灵动岛不显示为什么Linux现在才开始...
下一篇:executiveExecution什么是Speculative为什...

发表评论