Wie steuern Prozessoren ihre Taktfrequenz?

Ich bin kürzlich auf einen STM-Prozessor mit 2 Oszillatoren auf der Schaltung gestoßen - ich nehme an, einer für den Hochgeschwindigkeitsbetrieb und der andere für geringen Stromverbrauch.

Für so etwas wie einen Desktop-Prozessor, bei dem die Taktrate auf jede gewünschte Frequenz geändert werden kann (im Rahmen des Zumutbaren) - wie macht er das physikalisch ?

Wie die Antwort von Alex zeigt, ist die CPU-Frequenz moderner Desktops nicht kontinuierlich variabel. Er geht typischerweise in Schritten von 100 oder 133 MHz. (Verwandt: Wie entscheidet eine moderne x86-CPU, wann die Frequenz geändert werden soll, für "Turbo" über der maximalen Nenngeschwindigkeit, oder ob das Betriebssystem die volle Kontrolle über die Energieverwaltung an die CPU (Intel Skylake) abgibt: SKL hat einen On-Die Mikrocontroller mit so vielen Transistoren wie ein 486er, nur um Frequenzentscheidungen zu treffen: Warum beginnt diese Verzögerungsschleife nach mehreren Iterationen ohne Schlaf schneller zu laufen?

Antworten (3)

Dies geschieht mit einem Gerät namens Phasenregelkreis oder PLL. Hier ist ein Blockdiagramm einer einfachen PLL:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

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 eigentliche Taktfrequenz von einem spannungsgesteuerten Oszillator oder VCO erzeugt. Der VCO kann abgestimmt werden, um Frequenzen über einen relativ weiten Bereich zu erzeugen, aber er selbst ist nicht besonders stabil oder genau – für eine gegebene Steuerspannung variiert die Frequenz von Teil zu Teil und mit Versorgungsspannung und Temperatur. Eine Phasenregelschleife dient dann dazu, die VCO-Ausgangsfrequenz in einer bestimmten Beziehung mit der Referenzfrequenz einzurasten.

Die Ausgänge sowohl des Referenzoszillators als auch des VCO werden durch programmierbare Teiler geteilt (mit einem Faktor von D für den Referenz- und M für den VCO-Ausgang) und dann mit einem Phasen- und Frequenzdetektor (PFD) verglichen. Die Ausgabe des PFD wird gefiltert und verwendet, um den VCO zu treiben. Dies bildet eine Regelschleife, die als Phasenregelkreis bekannt ist, da sie dazu dient, die Phase des geteilten VCO so zu treiben, dass sie gleich der Phase der geteilten Referenz ist. Am Eingang des PFD wird die Frequenz sein f P F D = f r e f / D = f Ö u t / M . Das Ergebnis ist eine Ausgangsfrequenz mit einem bestimmten mathematischen Verhältnis zur Referenzfrequenz, f Ö u t = f r e f M / D . Wie dieser Gleichung zu entnehmen ist, bewirkt der Frequenzteiler am Ausgang des VCO eine Multiplikation der Referenzfrequenz mit ihrem Teilerfaktor. Auf diese Weise kann eine PLL effektiv viel höhere Frequenzen als die Referenzfrequenz erzeugen.

Angenommen, die Referenzfrequenz beträgt beispielsweise 100 MHz, die Referenz wird durch 1 geteilt (D) und der VCO wird durch 30 geteilt (M). Daraus ergäbe sich eine Ausgangsfrequenz von 100 MHz * 30/1 = 3 GHz. Diese Beziehung kann geändert werden, indem einfach die Teilereinstellungen geändert werden, was in der Software über Steuerregister erfolgen kann. Beachten Sie, dass das Ändern der Frequenz im laufenden Betrieb möglicherweise nicht so einfach ist wie das Ändern der Teilerwerte. Die Frequenz muss so geändert werden, dass sichergestellt ist, dass die CPU keine "Störungen" oder zu kurzen Taktimpulse erkennt. Es kann erforderlich sein, 2 PLLs zu verwenden und zwischen ihnen umzuschalten oder den Takt vorübergehend anzuhalten oder auf eine andere Taktquelle umzuschalten, bis sich der PLL auf der neuen Frequenz stabilisiert.

PLLs werden überall verwendet, um aus festen, stabilen Referenzen präzise, ​​leicht abstimmbare Frequenzen zu erzeugen. Ihre Wi-Fi-Karte und Ihr Wi-Fi-Router verwenden sie, um den geeigneten Kanal auszuwählen, indem sie die sogenannte lokale Oszillatorfrequenz erzeugen, ein Signal, das intern im Radio verwendet wird, um die modulierten Daten hoch- und herunterzuwandeln. Ihr UKW-Radio verwendet höchstwahrscheinlich einen, um die Softwaresteuerung über die Empfangsfrequenz zu aktivieren und so den einfachen Abruf verschiedener Sender zu ermöglichen. PLLs werden auch verwendet, um die hochfrequenten Taktsignale zu erzeugen, die verwendet werden, um die Serialisierer und Deserialisierer für Ethernet, PCI Express, Serial ATA, Firewire, USB, DVI, HDMI, DisplayPort und viele andere moderne serielle Protokolle anzutreiben.

Zusätzlich zu den vorherigen Antworten ...

Ihr STM-Mikro hat mit ziemlicher Sicherheit den zweiten Oszillator für die Echtzeituhr. Dadurch läuft die Uhr weiter (verbraucht nur minimal Strom), während der Rest des Chips und der Rest der Schaltung ausgeschaltet sind. Das Gerät kann dann seine Uhr und seinen Kalender am Laufen halten, und normalerweise kann es auch den Hauptprozessor mit einem Timer neu starten - alles nützliche Dinge für eingebettete Geräte.

Die Echtzeituhr ist normalerweise viel langsamer als die Hauptuhr (32 kHz ist typisch), und aus diesem Grund können der Echtzeituhroszillator und die angeschlossenen Schaltungen einen sehr geringen Stromverbrauch haben.
@mkeith Eine niedrige Taktrate ist sicher wichtig, aber hauptsächlich liegt es daran, dass fast der gesamte Prozessor ausgeschaltet ist.
Graham, die ursprüngliche Frage ist, warum es zwei Oszillatoren gibt. Im Prinzip könnte man mit nur einem Oszillator teilweise abschalten und würde auf diese Weise viel Strom sparen. Der Grund dafür, dass es einen zweiten Oszillator mit niedrigerer Geschwindigkeit gibt, liegt darin, dass der dynamische Stromverbrauch linear mit der Taktfrequenz korreliert. Der dynamische Stromverbrauch einer 32-kHz-Schaltung ist also etwa 300-mal geringer als der dynamische Stromverbrauch einer 10-MHz-Schaltung. Die reduzierte Taktrate ist meiner Meinung nach ein wichtiger Teil der Antwort.
@mkeith Es ist nicht "im Prinzip" - genau so funktioniert es auf jedem Chip mit einer RTC. Natürlich verwendet der RTC-Teil einen langsameren Oszillator, um Geschwindigkeit zu sparen. Aber der RTC-Teil verwendet nie den schnelleren Oszillatortakt - es ist eine völlig separate Schaltung auf demselben Stück Silizium; und ebenso verwendet der Rest des Chips niemals den langsameren Oszillatortakt. Die RTC selbst verbraucht weniger Strom, da sie mit einer langsameren Taktrate läuft, sicher, aber der gesamte Rest des Chips ist zu 100% ausgeschaltet und nimmt keinen Strom auf (nun, Nanoampere Leckstrom, aber das ist alles).
Ich bestreite nichts, was Sie sagen. Aber eine der Fragen des OP ist, warum gibt es zwei Oszillatoren? Es ist vielleicht nicht der Hauptpunkt der Frage, aber es ist eine Nebenfrage. Zu sagen, dass einer von ihnen für das RTC ist, ist wahr. Aber warum braucht die RTC einen zweiten Uhrenquarz? Warum konnte die RTC nicht einfach denselben Kristall verwenden? Die Antwort ist, dass die RTC mit einer niedrigeren Geschwindigkeit läuft als der Kristall des Hauptprozessors. Und das, weil das Laufen mit niedrigerer Geschwindigkeit Energie spart. Tut mir leid, wenn ich meinen Standpunkt nicht gut erkläre.
@mkeith Sicher, und ich stimme zu (obwohl die Frequenz von RTC-Kristallen historisch von elektromechanischen Quarzwerken in Uhren stammt, nicht von Energieeinsparungen in der Elektronik). Ich wollte dem OP nur klarstellen, dass der langsamere Takt nicht für einen "Low-Power" -Modus auf dem Hauptprozessor bestimmt ist, sondern für ein völlig separates Peripheriegerät.

sehr vorsichtig !

Geben Sie hier die Bildbeschreibung ein

CPUs verfügen über binär programmierbare Preskalare und eine PLL mit VCO, um den Zähler so anzusteuern, dass er den FSB-Takt des Front-Side-Bus (z. B. 100 MHz) multipliziert.
Dieser dynamische Energiesparmodus wird automatisch ausgewählt, wenn die CPU-Auslastung mit den richtigen CPU-Treibern, CPU, Betriebssystem und BIOS gering ist.

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

Wenn das Bios wie in meinem Fall x31 wählt, läuft die CPU mit 100 MHz x 3100 MHz und mit einem Binärzähler in der CPU wählen Sie von x8 bis x15, um die CPU-Leistung zu reduzieren, während gleichzeitig die CPU-Chipspannung auf 0,9 V geregelt wird Region alle, um Strom zu sparen.

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

Geben Sie hier die Bildbeschreibung ein