Come può una CPU cambiare dinamicamente la sua frequenza di clock?


16

La mia CPU Intel cambia la velocità di clock in base all'utilizzo, ma come decide a quale velocità di clock eseguire? La velocità di clock è determinata dal software del sistema operativo tramite un algoritmo o è basata su hardware? Dipende dal numero di interrupt? Il turnover della cache? La CPU stessa imposta il proprio clock? O è impostato da un controller separato? O software?


1
Di che CPU si tratta? I sistemi integrati di solito non funzionano così.
Leon Heller,

Forse qualcosa di più per SuperUser ?

Alcune famiglie di processori embedded, come ad esempio PIC24F, hanno frequenze di clock programmabili, che possono essere utilizzate per risparmiare energia. È possibile utilizzare un oscillatore esterno in modo che l'orologio per le periferiche sensibili al tempo rimanga stabile.
Kaz

Risposte:


18

Il core clock della CPU non viene ricevuto direttamente dalla scheda madre. Quel clock di solito è molto più lento (spesso di un fattore 10 o più) rispetto alla frequenza interna della CPU. Al contrario, il segnale di clock dalla scheda madre viene utilizzato come frequenza di riferimento per un oscillatore controllato in loop a fase a frequenza più elevata all'interno della CPU. Il clock generato viene eseguito su alcuni multipli del clock di riferimento e tale multiplo può essere modificato impostando determinati registri nella CPU. La generazione effettiva dell'orologio avviene esclusivamente nell'hardware.

Per ridurre ulteriormente la potenza, la CPU segnala anche al regolatore di tensione che fornisce la sua tensione di base di funzionare a un set point inferiore. A frequenze più basse la CPU può funzionare a una tensione inferiore senza malfunzionamenti e poiché il consumo di energia è proporzionale al quadrato della tensione, anche una piccola riduzione della tensione può risparmiare una grande quantità di energia.

Il ridimensionamento di tensione e frequenza viene eseguito dall'hardware, ma la decisione di eseguire in modalità a basso consumo viene presa dal software (sistema operativo). Il modo in cui il sistema operativo determina la modalità ottimale per l'esecuzione è un problema separato, più complicato, ma probabilmente si riduce principalmente alla percentuale di tempo in cui il sistema è rimasto inattivo di recente. Principalmente inattivo, abbassa la frequenza. Principalmente occupato, aumenta la frequenza. Una volta che il sistema operativo decide la frequenza di esecuzione, è solo questione di impostare un registro.

Riferimento: " Tecnologia Intel SpeedStep avanzata per il processore Intel Pentium M "


3
Funzionalità come Turbo Boost di Intel non richiedono l'intervento del software per sfruttare il margine di sicurezza termico aumentando la frequenza di clock. Ovviamente, l'hardware potrebbe anche tenere traccia dei colli di bottiglia delle prestazioni non di calcolo (ad esempio, contando i cicli di stallo dovuti agli accessi alla memoria) e ridurre la frequenza quando le prestazioni di calcolo non sono il collo di bottiglia primario.
Paul A. Clayton,

A proposito, i risparmi rispetto al cambio di frequenza sono quasi lineari e non tanto dovuti alla conduzione, che sarebbe av ^ 2 relazioni
JonRB

3

Bene, sui moderni sistemi operativi esiste qualcosa chiamato "task scheduler". Funziona periodicamente (molto velocemente) e seleziona (da un elenco) quale attività successiva eseguire. Le attività possono essere in molti stati, come selezionare, bloccare, dormire ecc.

Se tutte le attività sono in modalità di selezione (in attesa di qualcosa dal sistema operativo) e non possono essere servite, o alcune sono in sospensione ecc., Quindi non c'è un uso pesante del processore in corso, l'utilità di pianificazione invocherà un'attività speciale chiamata "inattiva ".

Se il driver della CPU controlla la tabella dell'utilità di pianificazione e verifica che l'attività inattiva sia in esecuzione per la maggior parte del tempo della CPU, invierà semplicemente un comando al circuito PLL di generazione dell'orologio della CPU per ridurne l'orologio. Al contrario, se l'attività inattiva richiede sempre meno tempo CPU (il che significa che la CPU viene utilizzata pesantemente) il driver della CPU aumenterà la velocità della CPU.

Non è molto difficile, ma esiste un limite inferiore in cui la CPU non può essere ridotta al minimo perché non tutte le CPU sono completamente statiche (quindi hanno bisogno di cicli di aggiornamento). Il cpus completamente statico può arrivare fino a 0 (zero) MHz perché non c'è stato da perdere se l'orologio è fermo.

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.