In che modo i processori controllano la loro velocità di clock?


12

Di recente mi sono imbattuto in un processore STM con 2 oscillatori sul circuito - suppongo uno per il funzionamento ad alta velocità e l'altro per la bassa potenza.

Per qualcosa come un processore desktop in cui la velocità di clock può essere modificata in qualsiasi frequenza desiderata (entro limiti ragionevoli) - come fa fisicamente ?


1
Come indica la risposta di alex, la moderna frequenza della CPU desktop non è continuamente variabile. In genere va in step di 100 o 133 MHz. (Relativo: come fa una moderna CPU x86 a decidere quando cambiare frequenza, per "turbo" al di sopra della velocità nominale massima o se il sistema operativo passa il pieno controllo della gestione dell'alimentazione alla CPU (Intel Skylake): SKL ha un on-die microcontrollore con tanti transistor come un 486, solo per prendere decisioni in frequenza: perché questo delay-loop inizia a funzionare più velocemente dopo diverse iterazioni senza dormire?
Peter Cordes,

Risposte:


21

Questo viene fatto usando un dispositivo chiamato loop a fase bloccata , o PLL. Ecco uno schema a blocchi di un PLL di base:

schematico

simula questo circuito - Schema creato usando CircuitLab

L'oscillatore sulla scheda madre non funziona alla frequenza di clock della CPU, ma funziona a una frequenza dell'ordine di 100 MHz. Questo oscillatore serve solo come frequenza di riferimento nota e stabile. All'interno della CPU, la frequenza di clock effettiva verrà generata da un oscillatore controllato in tensione o VCO. Il VCO può essere sintonizzato per generare frequenze su un intervallo relativamente ampio, ma da solo non è particolarmente stabile o preciso: per una data tensione di controllo, la frequenza varierà da una parte all'altra e con la tensione e la temperatura di alimentazione. Un loop a fase bloccata serve quindi a bloccare la frequenza di uscita VCO in una relazione specifica con la frequenza di riferimento.

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

Ad esempio, supponiamo che la frequenza di riferimento sia 100 MHz, il riferimento è diviso per 1 (D) e il VCO è diviso per 30 (M). Ciò comporterebbe una frequenza di uscita di 100 MHz * 30/1 = 3 GHz. Questa relazione può essere modificata semplicemente modificando le impostazioni del divisore, che può essere eseguita nel software tramite i registri di controllo. Notare che cambiare la frequenza al volo potrebbe non essere semplice come cambiare i valori del divisore, ma la frequenza deve essere modificata in modo tale da garantire che la CPU non veda "anomalie" o impulsi di clock troppo corti. Potrebbe essere necessario utilizzare 2 PLL e passare da uno all'altro, oppure arrestare temporaneamente l'orologio o passare a un'altra sorgente di clock fino a quando il PLL non si stabilizza alla nuova frequenza.

I PLL vengono utilizzati ovunque per generare frequenze precise e facilmente sintonizzabili da riferimenti fissi e stabili. La tua scheda Wi-Fi e il router Wi-Fi li usano per selezionare il canale appropriato generando quella che viene chiamata frequenza dell'oscillatore locale, un segnale usato interno alla radio per convertire e convertire i dati modulati. Molto probabilmente la tua radio FM ne usa una per abilitare il controllo del software sulla frequenza di ricezione, consentendo un facile richiamo di diverse stazioni. I PLL vengono inoltre utilizzati per generare i segnali di clock ad alta frequenza utilizzati per pilotare i serializzatori e i deserializzatori per Ethernet, PCI express, ATA seriale, Firewire, USB, DVI, HDMI, DisplayPort e molti altri protocolli seriali moderni.


7

Oltre alle risposte precedenti ...

Il tuo micro STM ha quasi sicuramente il secondo oscillatore per l'orologio in tempo reale. Ciò consente all'orologio di continuare a funzionare (consumando una potenza minima) mentre il resto del chip e il resto del circuito sono spenti. Il dispositivo può quindi mantenere il suo orologio e il suo calendario in esecuzione e in genere può anche riavviare il processore principale anche con un timer, tutte cose utili per i dispositivi integrati.


L'orologio in tempo reale di solito è molto più lento dell'orologio principale (è tipico di 32 kHz) e per questo motivo, l'oscillatore di orologio in tempo reale e la circolarità collegata possono avere un consumo di corrente molto basso.
mkeith,

@mkeith La bassa velocità di clock è importante, certo, ma principalmente perché quasi tutto il processore è spento.
Graham,

Graham, la domanda originale è sul perché ci sono due oscillatori. In linea di principio, potresti avere un arresto parziale con un solo oscillatore e risparmierai molta energia in quel modo. Il motivo per cui esiste un secondo oscillatore a velocità inferiore è perché il consumo dinamico di energia è linearmente correlato alla frequenza di clock. Quindi il consumo dinamico di energia di un circuito a 32kHz sarà circa 300 volte inferiore rispetto al consumo dinamico di potenza di un circuito a 10 MHz. La ridotta velocità di clock è una parte importante della risposta, secondo me.
mkeith,

@mkeith Non è "in linea di principio" - è esattamente come funziona su ogni chip con un RTC. Ovviamente la parte RTC utilizza un oscillatore a velocità inferiore per risparmiare velocità. Ma la parte RTC non usa mai l'orologio oscillatore più veloce - è un circuito completamente separato sullo stesso pezzo di silicio; e allo stesso modo il resto del chip non usa mai il clock dell'oscillatore più lento. Lo stesso RTC consuma meno energia funzionando a una frequenza di clock più lenta, certo, ma l' intero resto del chip è spento al 100% e sta prendendo zero corrente (beh, nanoamps di corrente di dispersione, ma questo è tutto).
Graham,

1
@mkeith Certo, e sono d'accordo (sebbene la frequenza dei cristalli RTC provenga storicamente dai movimenti elettromeccanici al quarzo di orologi, non dal risparmio energetico in elettronica). Volevo solo chiarire per l'OP che l'orologio più lento non è per una modalità "a bassa potenza" sul processore principale, ma per una periferica completamente separata.
Graham,

0

molto attentamente !

inserisci qui la descrizione dell'immagine

Le CPU hanno prescalari binari programmabili e un PLL con VCO per pilotare il contatore in modo che moltiplichi il bus del lato frontale, l'orologio FSB (diciamo 100MHz).
Questa modalità di risparmio energetico dinamico viene selezionata automaticamente quando l'utilizzo della CPU è basso con i driver, la CPU, il sistema operativo e il BIOS corretti.

Il mio i7 (8cpu) va da 3101 MHz a 800 MHz e passa istantaneamente a 1100, 1300,1500 ... ecc

Se il BIOS sceglie x31 come nel mio caso, la CPU funziona a 100MHz x 3100MHz e con un contatore binario nella CPU scegliere da x8 a x15 per ridurre la potenza della CPU mentre regola la tensione del chip della CPU a 0,9 V regione tutto per conservare il potere.

Posso visualizzare con il cursore nell'angolo in alto a destra su Win 8.1 insieme a CPU% e memoria%

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.