AMD Turbo Core 2.0 e AMD System Monitor
La tecnologia TurboCore evolve dalla sua prima implementazione nel Thuban. In tale architettura l’incremento di clock era effettuato solo in ben specifiche condizioni, ossia quando il 50% dei core era in idle, e solo con una logica di tipo on/off, indipendentemente dal margine di TDP.
Questo perché la prima implementazione del TurboCore era molto conservativa, in quanto non verificava in tempo reale il consumo effettivo. Quindi le condizioni di intervento e il margine di incremento di clock dovevano essere tenuti molto conservativi per evitare di sforare il TDP anche nel caso peggiore.
Tutto questo cambia con il TurboCore, versione 2.0. Innanzitutto è stata introdotta una unità detta APM (Advanced Power Management), che misura digitalmente 95 segnali per ogni core, più altri sparsi per tutto il chip, per stimare, con una precisione superiore al 98% (ossia con meno del 2% di margine di errore) la potenza dissipata in un intervallo di un centesimo di secondo, o 10 ms.
Confrontando questa situazione con quella del Thuban, dove l’intervento di overclock era effettuato in modalità cosiddetta a catena aperta, ossia dove non si misura a posteriori l’effetto dell’incremento di clock sul TDP e quindi si deve essere molto conservativi, la modalità di intervento del TurboCore 2.0 può essere classificata come a catena chiusa (con feed-back), poiché si misura il TDP effettivo e si è in grado di attuare una regolazione.
L’APM misura una stima del TDP non tenendo conto della temperatura e in modalità completamente digitale: in sostanza misura la percentuale di attività delle varie unità, ricavando il consumo totale, conoscendo quello massimo di ogni unità.
Messo a confronto con il metodo di misura della controparte Intel, analogico e fortemente dipendente dalla temperatura, abbiamo un andamento del clock molto riproducibile per Llano, anche se potenzialmente non ottimale in quanto il TDP massimo potrebbe non essere raggiunto, a causa dei margini di sicurezza, comunque presenti, per l’intervento dell’overclock.
Un’altra novità del TurboCore è la modalità di incremento del clock. Mentre nel Thuban era del tipo on/off, in Llano è usato un algoritmo di dithering, che consiste nel calcolare la percentuale di tempo, di un intervallo prefissato, in cui la CPU deve stare nello stato a clock più alto, in modo che la potenza media durante l’intervallo sia più alta possibile, rimanendo al di sotto del TDP. Questo implica anche che la frequenza "efficace" della CPU sia un valore intermedio tra quella di default e quella di Turbo. Ossia che la CPU si comporti come se avesse quella frequenza intermedia. Facciamo un esempio con le frequenze del Thuban top di gamma. La frequenza base è di 3.3GHz e la frequenza di turbo è 3.7GHz. Supponiamo che il TDP massimo sia 100W come per Llano. Supponiamo, infine, di avere un carico di lavoro che a 3.3GHz fa assorbire alla CPU 90W, ma a 3.7GHz 102W. Se noi implementassimo l'innalzamento del clock come nel Thuban, anche avendo l'APM, noi non potremmo aumentare il clock, perchè sappiamo che potremmo sforare il TDP. Quest'algoritmo calcola la percentuale di tempo ottimale a cui la CPU deve stare nello stato di clock alto. Supponiamo che il calcolo dica che con il 90% di tempo nello stato di turbo, il TDP sia di 99W. Giusto sotto il limite. Abbiamo che la frequenza effettiva della CPU è 3.3*0.1+3.7*0.9=3.66GHz. Questo è un grande vantaggio rispetto all'architettura Thuban e anche alle architetture Intel: in tal caso, infatti, il numero di stati di turbo è limitato e si va a passi di 100 o 133MHz. Con il meccanismo AMD, invece, si può virtualmente avere tutta la gamma di frequenze efficaci comprese tra quella base, in cui è garantito il non superamento del TDP, e quella di clock massimo.
Questo consente di sfruttare al massimo le capacità dissipative del sistema e consente di selezionare una frequenza di Turbo più elevata: infatti nel Thuban si era limitati dal fatto che la CPU poteva cambiare velocità di clock con una certa velocità senza poter modulare, con un algoritmo di dithering, il tempo di permanenza nello stato a clock alto.
Come per il Thuban, il P-state a clock più alto è uno stato hardware invisibile al sistema operativo, che rileva sempre che la CPU sia allo stato di velocità massimo, ma alla frequenza di default.
Questo causa problemi nella rivelazione della frequenza effettiva della CPU ed infatti sono stati introdotti dei registri interni (della famiglia dei cosiddetti MSR, Model Specific Registers, leggibili con l’istruzione CPUID), che consentono di calcolare una frequenza media effettiva del core, poiché essi contano automaticamente il numero di colpi di clock visti dalla CPU in un dato intervallo.
In Llano solo la CPU può incrementare il proprio clock, anche se AMD si è riservata la possibilità di poter incrementare anche il clock della GPU in modelli futuri (e sembrerebbe che già il successore di Llano, Trinity, basato su architettura Bulldozer dal lato CPU, possa implementarlo).
Nelle figure possiamo vedere il comportamento del TurboCore in alcuni scenari tipici. La GPU può solo vedere il suo clock ridotto o essere spenta del tutto, ma in ogni caso ha la precedenza: il P-state della GPU dipende solo dal carico richiesto ad essa ed è la CPU che vede l’intervento del Turbo limitato dal TDP totale del chip, GPU compresa.
Fino ad ora abbiamo visto che la temperatura del chip non è entrata effettivamente nell’equazione del turbo. Ma c’è un meccanismo di protezione che abbassa il clock delle CPU al di sotto del valore di default, qualora la temperatura superi dei valori critici.
A parte il malfunzionamento del sistema di dissipazione, l’unico modo per cui questo possa succedere è in scenari di calcolo intensivo, in cui sia CPU che GPU sono impegnati al massimo. Questi possono essere programmi di stress test appositamente sviluppati o anche programmi OpenCL che impegnano al massimo la CPU e la GPU.
AMD System Monitor
AMD ha sviluppato un software di monitoraggio particolarmente indirizzato alle nuove APU Bobcat e Llano, che funziona anche con le vecchie piattaforme, rilevando e monitorando i componenti AMD (CPU, GPU, APU e IGP) presenti nel sistema.
L’applicazione ha due livelli di dettaglio, selezionabili indipendentemente per la parte relativa agli elementi elaborativi (CPU, GPU, IGP e APU) e per la parte relativa alla memoria, tramite il pulsante contrassegnato dalla scritta Details.
Al livello di dettaglio inferiore, nella sezione relativa alla CPU, l’applicazione mostra l’utilizzo in percentuale dei diversi core. Se è presente una APU è anche mostrata la suddivisione delle risorse tra core e GPU.
Nella sezione GPU è visualizzata la percentuale di utilizzazione di tutte le GPU AMD istallate (incluse le schede discrete, IGP e la parte grafica delle APU, di fabbricazione AMD).
Nella sezione memoria è visualizzata la distribuzione della memoria tra i vari tipi presenti nel sistema (riservata in hardware, in uso, modificata, in stand by) e la memoria libera, espressa come percentuale della memoria totale.
Al livello di dettaglio superiore, nella sezione relativa alla CPU, sono mostrate informazioni aggiuntive dettagliate per ogni core, comprese le frequenze operative approssimate.
Nella sezione GPU sono visualizzate, oltre alle informazioni di base, le frequenze di GPU e memoria video e la velocità corrente della ventola GPU (se presente).
Nella sezione memoria sono visualizzati, oltre alle informazioni di base, ulteriori dettagli del sistema, tra cui la frequenza della memoria RAM principale.