处理器如何控制时钟速度?


12

我最近遇到了一个电路上有2个振荡器的STM处理器-我假设一个用于高速操作,另一个用于低功耗。

对于诸如台式机处理器之类的可以将时钟速度更改为任何所需频率(在合理范围内)的事物,它在物理上是如何做到的?


1
正如alex的回答所表明的那样,现代台式机CPU频率不是连续可变的。它通常以100或133 MHz的步幅运行。(相关:对于超出最大额定速度的“涡轮”,现代x86 CPU如何决定何时更改频率,或者操作系统是否将对电源管理的完全控制权移交给CPU(Intel Skylake):SKL有一个独立的微控制器具有与486一样多的晶体管,只是为了做出频率决定: 为什么这个延迟环在几次迭代后没有睡眠就开始运行得更快?
Peter Cordes

Answers:


21

这是使用一种称为设备进行锁相环,或PLL。这是基本PLL的框图:

原理图

模拟该电路 –使用CircuitLab创建的原理图

主板上的振荡器不是以CPU时钟频率运行,而是以100 MHz的频率运行。该振荡器仅用作已知的稳定参考频率。在CPU内部,实际时钟频率将由压控振荡器或VCO产生。可以对VCO进行调谐,以在相对较宽的范围内生成频率,但是它本身并不是特别稳定或准确-对于给定的控制电压,该频率会随部件的不同以及电源电压和温度的变化而变化。然后,锁相环用于将VCO输出频率锁定为与参考频率的特定关系。

fPFD=fref/D=fout/Mfout=frefM/D

例如,假设基准频率为100 MHz,基准除以1(D),VCO除以30(M)。这将导致输出频率为100 MHz * 30/1 = 3 GHz。这种关系可以通过简单地改变分频器设置来改变,这可以通过控制寄存器在软件中完成。请注意,动态更改频率可能不只是更改分频器值那么简单,必须以确保CPU不会看到任何“毛刺”或时钟脉冲太短的方式更改频率。可能需要使用2个PLL在它们之间切换,或者暂时停止时钟或切换到另一个时钟源,直到PLL稳定在新的频率为止。

各地都使用PLL从固定的稳定基准产生精确,易于调谐的频率。您的Wi-Fi卡和Wi-Fi路由器使用它们通过生成所谓的本地振荡器频率来选择合适的信道,该频率在无线电内部用于上变频和下变频调制数据。您的FM收音机很可能会使用FM收音机来对接收频率进行软件控制,从而轻松调出不同的电台。PLL还用于生成高频时钟信号,用于驱动以太网,PCI Express,串行ATA,Firewire,USB,DVI,HDMI,DisplayPort和许多其他现代串行协议的串行器和解串器。


7

除了以前的答案...

您的STM micro几乎可以肯定有第二个振荡器作为实时时钟。这使时钟保持运行状态(消耗最少的功率),而芯片的其余部分和电路的其余部分掉电。然后,该设备可以保持其时钟和日历运行,并且通常还可以在计时器上重新启动主处理器-这对于嵌入式设备来说都是有用的东西。


实时时钟通常比主时钟慢得多(典型值为32kHz),因此,实时时钟振荡器和连接的电路可以具有非常低的电流消耗。
mkeith '18

@mkeith当然,低时钟速度很重要,但是主要是因为几乎所有处理器都已关闭。
格雷厄姆

格雷厄姆,最初的问题是关于为什么有两个振荡器。原则上,您可能只用一个振荡器就可以部分关闭,这样可以节省很多功率。之所以有第二个低速振荡器,是因为动态功耗与时钟频率线性相关。因此,32kHz电路的动态功耗将比10MHz电路的动态功耗低300倍左右。在我看来,降低时钟速度是答案的重要组成部分。
mkeith '18

@mkeith这不是“原则上”-这就是它在具有RTC的每个芯片上的工作方式。当然,RTC部分使用低速振荡器来节省速度。但是RTC部分从不使用更快的振荡器时钟-它是同一块硅片上的完全独立的电路。同样,芯片的其余部分从不使用较慢的振荡器时钟。RTC本身可以通过以较低的时钟速率运行来消耗较少的功率,但是,芯片的其余整个部分都已断电100%,并且消耗的电流为零(漏电电流为纳安培,仅此而已)。
格雷厄姆

1
@mkeith当然,我同意(尽管从历史上看,RTC晶体的频率来自钟表的石英机电机芯,而不是电子产品的节电)。我只是想为OP澄清,较慢的时钟不是针对主处理器上的“低功耗”模式,而是针对完全独立的外设。
格雷厄姆

0

很小心 !

在此处输入图片说明

CPU具有二进制可编程的预分频器和带VCO的PLL来驱动计数器,从而使其与前端总线FSB时钟(例如100MHz)相乘。
当使用正确的CPU驱动程序,CPU,OS和BIOS的CPU使用率较低时,将自动选择此动态节能模式。

我的i7(8cpu)从3101 MHz变为800 MHz,并立即执行1100、1300、1500等操作

如果Bios像我一样选择x31,则CPU运行在100MHz x 3100MHz,并且CPU中有一个二进制计数器,可以从x8到x15中选择,以在将CPU芯片电压调节到0.9V的同时降低CPU功率。区域全部保存电力。

我可以将光标与CPU%和内存%一起显示在Win8.1的右上角

在此处输入图片说明

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.