Wie steuern Prozessoren ihre Taktrate?


12

Vor kurzem bin ich auf einen STM-Prozessor mit zwei Oszillatoren gestoßen - einen für Hochgeschwindigkeitsbetrieb und einen für geringen Stromverbrauch.

Für so etwas wie einen Desktop-Prozessor, bei dem die Taktrate (innerhalb eines bestimmten Rahmens) auf eine beliebige Frequenz eingestellt werden kann - wie funktioniert das physikalisch ?


1
Wie die Antwort von Alex zeigt, ist die Frequenz der modernen Desktop-CPU nicht kontinuierlich variabel. Es geht in der Regel in Schritten von 100 oder 133 MHz. (Siehe auch: Wie entscheidet eine moderne x86-CPU , wann die Frequenzen geändert werden sollen, ob der "Turbo" über der maximalen Nenngeschwindigkeit liegt oder ob das Betriebssystem die volle Kontrolle über die Energieverwaltung an die CPU übergibt (Intel Skylake): SKL verfügt über einen integrierten Chip Mikrocontroller mit so vielen Transistoren wie ein 486, nur um Frequenzentscheidungen zu treffen: Warum läuft diese Verzögerungsschleife nach mehreren Iterationen ohne Schlaf schneller?
Peter Cordes

Antworten:


21

Dies geschieht mit einem Gerät, das als Phasenregelkreis oder PLL bezeichnet wird. Hier ist ein Blockdiagramm einer grundlegenden PLL:

schematisch

simulieren Sie diese Schaltung - Schaltplan erstellt mit CircuitLab

Der Oszillator auf dem Motherboard läuft nicht mit der CPU-Taktfrequenz, sondern mit einer Frequenz in der Größenordnung von 100 MHz. Dieser Oszillator dient nur als bekannte, stabile Referenzfrequenz. Innerhalb der CPU wird die tatsächliche Taktfrequenz von einem spannungsgesteuerten Oszillator oder VCO erzeugt. Der VCO kann so eingestellt werden, dass er Frequenzen in einem relativ weiten Bereich erzeugt. Er selbst ist jedoch nicht besonders stabil oder genau. Bei einer bestimmten Steuerspannung variiert die Frequenz von Teil zu Teil sowie je nach Versorgungsspannung und Temperatur. Ein Phasenregelkreis dient dann dazu, die VCO-Ausgangsfrequenz in eine bestimmte Beziehung zur Referenzfrequenz zu bringen.

fPFD=fref/D=fÖut/MfÖut=frefM/D

Angenommen, die Referenzfrequenz beträgt 100 MHz, die Referenz wird durch 1 (D) und der VCO durch 30 (M) geteilt. Dies würde zu einer Ausgangsfrequenz von 100 MHz * 30/1 = 3 GHz führen. Diese Beziehung kann durch einfaches Ändern der Teilereinstellungen geändert werden, was in der Software über Steuerregister erfolgen kann. Beachten Sie, dass das schnelle Ändern der Frequenz möglicherweise nicht nur das Ändern der Teilerwerte ist. Die Frequenz muss so geändert werden, dass sichergestellt ist, dass die CPU keine zu kurzen Fehler oder Taktimpulse erkennt. Es kann erforderlich sein, 2 PLLs zu verwenden und zwischen diesen umzuschalten oder die Uhr vorübergehend anzuhalten oder auf eine andere Taktquelle umzuschalten, bis sich die PLL auf der neuen Frequenz stabilisiert.

PLLs werden überall verwendet, um präzise, ​​leicht einstellbare Frequenzen aus festen, stabilen Referenzen zu erzeugen. Ihre Wi-Fi-Karte und Ihr Wi-Fi-Router verwenden sie zur Auswahl des geeigneten Kanals, indem sie die sogenannte lokale Oszillatorfrequenz erzeugen, ein Signal, das intern im Radio zum Auf- und Abwandeln der modulierten Daten verwendet wird. Ihr UKW-Radio verwendet wahrscheinlich eines, um die Software-Steuerung der Empfangsfrequenz zu ermöglichen und den einfachen Abruf verschiedener Sender zu ermöglichen. PLLs werden auch verwendet, um die Hochfrequenztaktsignale zu erzeugen, die zum Ansteuern der Serialisierer und Deserialisierer für Ethernet, PCI Express, Serial ATA, Firewire, USB, DVI, HDMI, DisplayPort und viele andere moderne serielle Protokolle verwendet werden.


7

Neben früheren Antworten ...

Ihr STM-Mikro verfügt mit ziemlicher Sicherheit über den zweiten Oszillator für die Echtzeituhr. Auf diese Weise läuft die Uhr weiter (sie verbraucht nur minimale Energie), während der Rest des Chips und der Rest der Schaltung abgeschaltet werden. Das Gerät kann dann seine Uhr und seinen Kalender am Laufen halten und in der Regel auch den Hauptprozessor über einen Timer neu starten - alles nützliche Dinge für eingebettete Geräte.


Die Echtzeituhr ist in der Regel viel langsamer als die Hauptuhr (32 kHz sind typisch), weshalb der Echtzeituhroszillator und die angeschlossene Schaltung einen sehr geringen Stromverbrauch haben können.
Mkeith

@mkeith Niedrige Taktrate ist wichtig, aber hauptsächlich, weil fast der gesamte Prozessor ausgeschaltet ist.
Graham

Graham, die ursprüngliche Frage ist, warum es zwei Oszillatoren gibt. Im Prinzip könnten Sie mit nur einem Oszillator teilweise herunterfahren und auf diese Weise viel Strom sparen. Der Grund, warum es einen zweiten Oszillator mit niedrigerer Geschwindigkeit gibt, liegt darin, dass der dynamische Energieverbrauch linear mit der Taktfrequenz korreliert. Der dynamische Stromverbrauch einer 32-kHz-Schaltung ist also um das 300-fache geringer als der dynamische Stromverbrauch einer 10-MHz-Schaltung. Die reduzierte Taktrate ist meiner Meinung nach ein wichtiger Teil der Antwort.
Mkeith

@mkeith Es ist nicht "im Prinzip" - genau so funktioniert es auf jedem Chip mit einer RTC. Natürlich verwendet der RTC-Teil einen Oszillator mit niedrigerer Geschwindigkeit, um Geschwindigkeit zu sparen. Der RTC-Teil verwendet jedoch niemals den schnelleren Oszillatortakt - er ist ein völlig separater Schaltkreis auf demselben Stück Silizium. und ebenso verwendet der Rest des Chips niemals den langsameren Oszillatortakt. Die RTC selbst verbraucht zwar weniger Strom , weil sie mit einer langsameren Taktrate läuft, aber der gesamte Rest des Chips ist zu 100% ausgeschaltet und nimmt keinen Strom auf (naja, Nanoampere Leckstrom, aber das ist alles).
Graham

1
@mkeith Sicher, und ich stimme dem zu (obwohl die Frequenz von RTC-Kristallen historisch von elektromechanischen Quarzbewegungen in Uhren und nicht von Stromsparmaßnahmen in der Elektronik herrührt). Ich wollte nur für das OP klarstellen, dass der langsamere Takt nicht für einen "Low-Power" -Modus auf dem Hauptprozessor ist - es ist für ein völlig separates Peripheriegerät.
Graham

0

sehr vorsichtig !

Bildbeschreibung hier eingeben

CPUs haben binäre programmierbare Prescalars und eine PLL mit VCO, um den Zähler so anzusteuern, dass er den FSB-Takt des Front-Side-Busses (z. B. 100 MHz) multipliziert.
Dieser dynamische Energiesparmodus wird automatisch ausgewählt, wenn die CPU-Auslastung mit den richtigen CPU-Treibern, der richtigen CPU, dem richtigen Betriebssystem und dem richtigen BIOS niedrig ist.

Mein i7 (8cpu) geht von 3101 MHz auf 800 MHz und springt sofort auf 1100, 1300, 1500 ... usw

Wenn das BIOS wie in meinem Fall x31 wählt, läuft die CPU mit 100MHz x 3100MHz und mit einem Binärzähler in der CPU wählen Sie zwischen x8 und x15, um die CPU-Leistung zu reduzieren und gleichzeitig die Spannung des CPU-Chips in 0,9 V zu regulieren Region alle, um Energie zu sparen.

Ich kann mit meinem Cursor in der oberen rechten Ecke auf Win8.1 zusammen mit CPU% und Speicher% anzeigen

Bildbeschreibung hier eingeben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.