CPU如何动态更改其时钟频率?


16

我的Intel CPU根据使用情况更改时钟速度,但是它如何决定以什么时钟速度运行?时钟速度是由OS软件使用算法确定的还是基于硬件的?是否取决于中断次数?缓存周转率?CPU本身是否设置自己的时钟?还是由单独的控制器进行设置?还是软件?


1
是哪个CPU?嵌入式系统通常不会那样工作。
莱昂·海勒2013年

也许对SuperUser还有更多好处

某些嵌入式处理器系列(例如PIC24F)具有可编程的时钟速率,可用于节省功耗。可以使用外部振荡器,以便对时间敏感的外设的时钟保持稳定。
卡兹(Kaz)2013年

Answers:


18

不能直接从主板接收CPU的核心时钟。该时钟通常比CPU的内部频率慢很多(通​​常是10倍或更多)。取而代之的是,将来自主板的时钟信号用作CPU内部更高频率的锁相环控制振荡器的参考频率。生成的时钟以参考时钟的某个倍数运行,并且可以通过在CPU中设置某些寄存器来更改该倍数。时钟的实际生成完全由硬件完成。

为了进一步降低功耗,CPU还向电压调节器发送信号,向其提供核心电压以在较低的设定点运行。在较低的频率下,CPU可以在较低的电压下运行而不会发生故障,并且由于功耗与电压的平方成正比,因此即使电压降低很小也可以节省大量功率。

电压和频率缩放由硬件完成,但决定是否以低功耗模式运行则由软件(操作系统)决定。操作系统如何确定运行的最佳模式是一个单独的,麻烦的问题,但很可能归结为系统最近处于空闲状态的时间是多少。大多数情况下,请降低频率。多忙,提高频率。一旦操作系统决定运行频率,只需设置一个寄存器即可。

参考:“ 用于Intel Pentium M处理器的增强型Intel SpeedStep技术


3
诸如Intel的Turbo Boost之类的功能不需要软件干预即可通过增加时钟频率来利用散热空间。显然,硬件还可以跟踪非计算性能瓶颈(例如,通过计算由于内存访问导致的停顿周期),并在计算性能不是主要瓶颈时降低频率。
Paul A. Clayton 2013年

顺便说一下,关于开关频率的节省几乎是线性的,并且由于传导而没有那么多,这将是av ^ 2的关系
JonRB 2014年

3

好吧,在现代操作系统上,有一种叫做“任务调度程序”的东西。它定期(非常快)运行,并从列表中选择要执行的下一个任务。任务可以处于许多状态,例如选择,阻止,睡眠等。

如果所有任务都处于选择模式(正在等待操作系统中的某些内容)并且无法提供服务,或者某些任务正在睡眠等,因此不会大量使用正在执行的处理器,则任务调度程序将调用一个称为“空闲”的特殊任务”。

如果CPU驱动程序检查任务调度程序表并验证空闲任务正在大部分CPU时间上运行,它将仅向CPU的时钟生成PLL电路发送命令以减少其时钟。相反,如果空闲任务花费的CPU时间越来越少(这意味着CPU被大量使用),则CPU驱动程序将提高CPU速度。

它不是很困难,但是有一个下限,不能降低CPU的速度,因为并非所有CPU都是完全静态的(因此它们需要刷新周期)。完全静态的cpus可以低至0(零)MHz,因为如果时钟停止,则不会丢失任何状态。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.