XV Master in Tecnologia dell’Informazione Rapporto esame VLSI Gestione dinamica del consumo energetico nei sistemi embedded Autore: Daniele Paolo Scarpazza Tutor: Carlo Brandolese Area: ESD Sponsor: Carlo Brandolese S.p.A. Febbraio 2003 Versione: 1.0 Stato: draft Gestione dinamica del consumo energetico nei sistemi embedded Diffusione del documento La diffusione del presente documento è limitata al Centro CEFRIEL e a Carlo Brandolese S.p.A. ed è di proprietà del CEFRIEL e di Carlo Brandolese S.p.A.. Ogni riproduzione da parte di altri soggetti senza esplicita autorizzazione è pertanto vietata a norma delle leggi vigenti. Pagina i c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded Revisioni Data 11 Febbraio 2003 Pagina ii Versione 1.0 Stato draft Commento Prima versione preliminare c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded Indice 1 Introduzione 1 2 Hardware e riduzione del consumo 2 2.0.1 Tecniche hardware di riduzione del consumo . . . . . . . . . . . . . . . . . . . 2 2.0.2 Spegnimento selettivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.0.3 Clock gating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.0.4 Riduzione della frequenza di clock . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.0.5 Clock bursting / stop-clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.0.6 Riduzione delle tensioni di alimentazione . . . . . . . . . . . . . . . . . . . . . . 4 2.0.7 Stati a consumo ridotto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1 Vincoli, difficoltà, costi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.1 Latenze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.2 Tempi di risposta del VRM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.3 Protocolli di snoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3 Rassegna dei processori in produzione 7 3.1 Processori “Mobile” per PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.1.1 Intel Pentium 4-M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.1.2 Intel Pentium III-M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.1.3 AMD Athlon XP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.1.4 Transmeta Crusoe TM5500 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2 Processori per sistemi embedded . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2.1 Intel 80200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2.2 ARM1022E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2.3 Motorola MC68EZ328 DragonBall EZ . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2.4 IBM PowerPC 405LP 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Un esempio di framework DPM 18 4.1 Panoramica architetturale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.2 Concetti fondamentali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.2.1 Operating point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.2.2 Operating state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.2.3 Vincoli e classi di congruenza degli operating point . . . . . . . . . . . . . . . . 20 4.2.4 Policy e Policy manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.3 Implementazione astratta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.3.1 set operating state() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.3.2 assert constraint() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.3.3 remove constraint() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.3.4 set policy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Pagina iii c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded 4.3.5 set task state() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.4 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5 Argomenti di ricerca 24 5.1 Riduzione del consumo energetico dovuto a snoop . . . . . . . . . . . . . . . . . . . . 24 5.2 Battery-driven DPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 6 Appendice: Approfondimenti 26 6.0.1 PLL e latenze indotte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pagina iv 26 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded 1 Introduzione Questo documento offre una panoramica ad alto livello sul tema della gestione dinamica del consumo di potenza (in seguito indicato con DPM, acronimo di Dynamic Power Management) principalmente nell’ambito dei sistemi embedded. Il tema sarà trattato con un approccio orientato prevalentemente aspetti tecnologici, e ai prodotti esistenti; di conseguenza temi quali gli argomenti correnti di ricerca assumeranno un ruolo secondario. Verranno invece considerate tematiche correlate al DPM anche se non strettamente incluse nel campo embedded, quali le funzionalità di gestione dell’alimentazione presenti in processori per PC e workstation. Il documento è organizzato come segue: nel secondo capitolo vengono descritte le fondamentali tecniche, che vengono praticate a basso livello (dalla progettazione dell’hardware alla gestione a run-time dell’hardware stesso), al fine di ridurre il consumo energetico e di offrire al software la possibilità di realizzare il DPM. Il terzo capitolo presenta una carrellata sulle funzionalità a basso consumo rese disponibili prima da alcuni microprocessori per PC portatili, quindi da processori per sistemi embedded. Nel quarto capitolo descriveremo un particolare framework software per l’interfacciamento di hardware e software in contesto DPM. Nell’ultimo capitolo presentiamo un breve campionario rappresentativo dei temi sui quali la ricerca è attiva nel settore. Pagina 1 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded 2 Hardware e riduzione del consumo 2.0.1 Tecniche hardware di riduzione del consumo Come è noto, il consumo energetico di un componente elettronico realizzato in tecnologia CMOS è dovuto principalmente ai tre contributi evidenziati nella formula: P = Pswitching + Pleakage + Pshort−circuit dove: • il primo contributo rappresenta il consumo energetico dovuto alla carica e alla carica delle capacità di uscita di ogni circuito CMOS, e dipende linearmente dalla frequenza di clock f e quadraticamente dalla tensione VDD Pswitching = 1 2 CL VDD f 2 • il secondo contributo rappresenta le perdite dovute dalla corrente di polarizzazione inversa (IL ) e dalla corrente di sotto-soglia (IDS ), e scala linearmente con la tensione, come da formula: Pleakage = (IL + IDS )VDD • il terzo contributo rappresenta l’energia associata alla corrente di corto circuito circolante durante le commutazioni. Consideriamo il semplice invertitore MOS presentato in figura: Durante il passaggio di VI da livello logico alto a basso dobbiamo assumere lo slew rate sia finito, e che la chiusura1 del transistor PMOS e l’apertura di quello NMOS avvengano contemporaneamente e in tempo non infinitesimo. Esisterà quindi un lasso di tempo in cui entrambi i transistor sono in zona saturazione ed esibiscono resistenza finita; essendo 2 3 per entrambi i transistor I ∝ VDS , l’energia dissipata in una commutazione sarà E ∝ VDS e 3 la potenza scalerà linearmente con la frequenza e con il cubo della tensione: P ∝ f VDS . Dunque, per quanto riguarda l’hardware, i parametri critici su cui agire per la riduzione del consumo energetico sono principalmente la frequenza e la tensione a cui i circuiti lavorano. In particolare le strategie messe in atto sono le seguenti: 2.0.2 Spegnimento selettivo Molte architetture permettono di togliere l’alimentazione ai dispositivi esterni, ai dispositivi a bordo (controller LCD, controller IrDA, timer, etc.) e addirittura a porzioni del core. A seconda delle implementazioni, parte di queste decisioni possono essere prese dinamicamente oppure “cablate” staticamente nel microcodice del processore. 1 A fini di chiarezza, precisiamo che chiusura e apertura sono termini qui utilizzati in senso elettrico (un ramo di un circuito è chiuso quando ha resistenza nulla, e aperto quando ha resistenza infinita), non ci riferiamo allo stato di aperto o chiuso del canale MOS. Pagina 2 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded 2.0.3 Clock gating Dato che gran parte del consumo di potenza dei circuiti CMOS è dovuto alla commutazione, mentre il consumo statico è trascurabile, è una buona idea non far giungere il clock a quei componenti che non sono coinvolti nella computazione corrente, evitando cosı̀ commutazioni inutili e dispendiose. Un semplice modo per far ciò è determinare staticamente quali unità sono richieste per lo svolgimento di ciascun passo di ciascuna istruzione, e fare in modo che, durante l’esecuzione, l’unità di instruction decode attivi le sole linee di clock enable indirizzate a tali unità. Ciascuna unità non riceverà il clock direttamente ma solo dopo il transito in una porta AND insieme al relativo segnale di clock enable. In figura abbiamo riportato un esempio molto semplice di architettura di processore a tre bus, privo di pipelining, dotato di un datapath costituito da tre unità (più l’unità di decode), a cui è stato applicato il clock gating; 2.0.4 Riduzione della frequenza di clock Riducendo la frequenza del clock di sistema si abbattono i due dei tre contributi di potenza sopra descritti che dipendono linearmente da tale frequenza. La modifica della frequenza del clock sulla base della quantità di capacità di calcolo richiesta è forse la principale delle strategie di DPM, ed è resa possibile da alcuni accorgimenti costruttivi del PLL che genera il clock (a cui è dedicato il paragrafo 6.0.1, a pagina 26). In particolare il circuito che implementa la divisione di frequenza, presente nell’anello di retroazione, può essere implementato come un contatore digitale riprogrammabile. Inoltre viene consentito al processore di leggere e scrivere il registro contenente il divisore, rendendo quindi il processore abilitato alla modifica della propria frequenza di clock. Si tenga presente che il PLL è un circuito Pagina 3 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded di regolazione ad anello chiuso, che ha tempi di risposta non infinitesimi, e che a seguito di una modifica del divisore può richiedere tempi di 2-4 ordini di grandezza superiori al periodo di clock prima di fornire di nuovo una uscita stabile. 2.0.5 Clock bursting / stop-clock Effetti del tutto simili a quelli descritti al punto precedente si possono raggiungere senza agire sul PLL (e quindi senza doverne subire le latenze) per mezzo del bursting del clock, noto anche come stop-clock. Questo meccanismo consiste nel generare un secondo segnale, denominato “stop clock” e sagomato come un’onda quadra con un duty cycle controllabile; quindi si mettono in AND il clock e il segnale appena generato e ciò che ne risulta (un segnale che presenta dei treni di clock, come in figura) viene usato per pilotare il microprocessore. I processori per sistemi embedded rendono disponibile questa tecnica al programmatore proprio per fini di riduzione del consumo, mentre i processori per PC la sfruttano come strategia di controllo termico. Di conseguenza, normalmente nei processori per sistemi embedded, il numero di valori differenti che si possono scegliere per il duty-cycle è abbastanza elevato (ad esempio 32 nel Motorola DragonBall) mentre in quelli per PC è modesto (ad esempio 8 nel Pentium III e 4); 2.0.6 Riduzione delle tensioni di alimentazione Abbiamo mostrato come il consumo di potenza scali con il cubo della tensione di alimentazione. Questo ha motivato negli ultimi anni uno sforzo intenso verso processi di fabbricazione che permettessero di tensioni operative sempre più basse, dai 5 V di un tempo agli 0.9 V di oggi. Per gli stessi motivi, i processori di nuova generazione che permettono di variare dinamicamente la frequenza di clock, permettono di variare congiuntamente anche la tensione. Si tenga però presente che tensione e clock non sono variabili comandabili indipendentemente, in quanto la frequenza massima a cui un processore può operare è legata dalla tensione fornita, secondo la formula seguente ([22]): f∝ (VDD − VT h )2 VDD dove VT h è la tensione di soglia dei transistor MOS utilizzati. È quindi opportuno che le strategie più aggressive di DPM siano in grado di scegliere la minima tensione possibile che permetta il funzionamento alla frequenza scelta (cfr. [25], [26]). Pagina 4 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded 2.0.7 Stati a consumo ridotto Gli stati a consumo ridotto non sono propriamente una strategia hardware, come quelle esaminate ai punti precedenti, sono piuttosto una interfaccia attraverso la quale alcune delle strategie esaminate possono essere esposte verso il programmatore. L’esempio più semplice è lo stato di “auto halt” e l’istruzione HLT che permette di entrarvi. L’ingresso in stato “auto halt” pone il processore in una condizione di consumo ridotto (i manuali tecnici esaminati, però, non spiegano mai con precisione quali strategie si attivino), che ha fine appena si verifica un interrupt; a tale evento il processore reagisce ritornando immediatamente alla piena operatività. Normalmente è compito del sistema operativo eseguire l’istruzione HLT quando non vi sono processi pronti; inoltre, in tutti i sistemi operativi basati su eventi e messaggi, i processi possiedono un ciclo di gestione dei messaggi, in cui figura una chiamata di sistema del tipo GetMessage(), bloccante. Tale chiamata è il punto ideale dove porre l’istruzione HLT, da eseguire se non vi sono eventi da dispacciare. 2.1 Vincoli, difficoltà, costi Vi sono alcuni vincoli che, in particolari condizioni e circostanze, rendono poco praticabili, difficili da attuare oppure poco efficienti talune delle strategie elencate nel paragrafo precedente. Inoltre, ciascuna di esse comporta sempre un prezzo da pagare in termini di prestazioni, latenze, energia. Queste considerazioni costituiscono l’argomento di questa sezione. 2.1.1 Latenze Tutte le tecniche di risparmio esaminate inducono latenze, maggiori o minori, dovute in alcuni casi ad attese per l’esaurimento di transitori elettrici (come nello spegnimento/riaccensione di moduli, del PLL oppure nella regolazione del moltiplicatore di clock, si veda la sezione 6.0.1), in altri al ripristino del contesto (come allo spegnimento delle cache), nell’accezione più generalizzata che questo termine può avere. In generale le tecniche che riducono maggiormente il consumo sono quelle che causano le latenze superiori: ad esempio gli stati di halt causano lo spegnimento di porzioni ridotte del core e richiedono pochi cicli di clock prima che il processore sia di nuovo pienamente operativo; lo spegnimento del PLL richiede un periodo di stabilizzazione del clock alla sua riaccensione; lo spegnimento dei registri richiede il salvataggio e il recupero di tutto il contesto, lo stesso dicasi per lo spegnimento delle cache, fatte le dovute proporzioni. Una delle tecniche citate per ridurre il consumo energetico è la riduzione della frequenza di clock, che può essere implementata a due passi prefissati (come nella tecnologia SpeedStep di Intel) oppure a passi multipli (come nel PowerPC 405LP). In ogni caso la modifica del clock avviene attraverso la variazione del moltiplicatore e implica tempi di stabilizzazione del PLL. È chiaro che le strategie di risparmio applicabili in un determinato contesto applicativo dipendono dai vincoli temporali che esso impone: un sistema real-time con vincoli stringenti dovrà, in generale, attuare strategie di risparmio energetico caratterizzate da tempi di recupero più brevi (e quindi con efficacia minore) rispetto a sistemi non real-time. 2.1.2 Tempi di risposta del VRM Come abbiamo detto, il consumo in potenza di un circuito CMOS scala con il cubo della tensione, e ciò motiva uno dei trend più forti nei processi di fabbricazione, cioè l’abbattimento delle tensioni di funzionamento dei transistor MOS. D’altra parte, però, le correnti in gioco possono assumere valori considerevoli (ICC max = 57.4÷70A, ICC avg = 63A a fronte di tensioni di 1.5÷1.75V nel Pentium 4 [4]). Abbiamo detto inoltre che i processori possono spegnere o bloccare selettiva- Pagina 5 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded mente proprie porzioni per regolare il consumo energetico. Di conseguenza la corrente da essi assorbita può variare dinamicamente con gradini molto ripidi (slew rate anche di 5A/ns, secondo [21]). Questo significa che i moduli di regolazione della tensione (VRM, voltage regulator modules) che presiedono alla corretta alimentazione dei processori sono sottoposti ad un carico resistivo che varia con elevata rapidità, mentre si pretende da loro che la tensione di alimentazione resti stabilizzata entro intervalli ristretti, con variazioni molto contenute nei valori (tolleranze sulla tensione di ±2.85%, [4]) e nei tempi, che si traducono in brevi tempi di risposta del sistema di controllo ad anello chiuso realizzato dal VRM. È quindi evidente come non sia possibile pensare una strategia di riduzione del consumo senza tenere in debito conto i limiti imposti dalle prestazioni del VRM. 2.1.3 Protocolli di snoop Anche se non vi sono in produzione computer portatili multiprocessore, i processori per personal computer in versione “Mobile” mantengono la compatibilità con i loro simili non-mobile, e quindi sono progettati per essere impiegati anche in architetture multiprocessore. Per di più, la riduzione del consumo energetico diventa di grande interesse per i sistemi server multiprocessore per montaggio su rack, che pur non avendo vincoli sulle risorse energetiche disponibili, sono soggetti a limitazioni sulla dissipazione termica smaltibile. Questi due esempi sono sufficienti a motivare la sensatezza della compresenza di hardware per il multiprocessing e per la riduzione del consumo. Ne consegue la necessità di implementare protocolli di snoop atti ad effettuare la corretta invalidazione/aggiornamento dei blocchi di cache contenenti dati che vengono scritti da altri processori, e l’importanza di progettare strategie di riduzione di consumo che siano con essi compatibili; in particolare se si vuole mantenere le cache del processore coerenti non è possibile spegnere o bloccare il clock alla circuiteria necessaria per implementare lo snooping. Pagina 6 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded 3 Rassegna dei processori in produzione In questo capitolo esaminiamo le funzionalità hardware di risparmio energetico offerte da alcuni processori mobile per personal computer e da alcuni processori per sistemi embedded. Lo sforzo per l’abbattimento dei consumi è forte in entrambi i contesti, ma si fa sempre più determinante soprattutto nel secondo, visto che l’impatto del consumo del processore in un sistema laptop è ormai ampiamente minoritario, come dimostrano i risultati riportati in figura (e provenienti da [13]); 3.1 Processori “Mobile” per PC In questa sezione vengono analizzate le funzionalità di riduzione dei consumi fornite dalle versioni “Mobile” di processori pensati per personal computer. Si tenga presente che tutti questi processori possono esibire caratteristiche low-power, ma devono primariamente mantenere la compatibilità completa con le loro versioni desktop, in particolare la possibilità di essere inseriti in architetture multiprocessore, con la conseguente necessità di tenere attive le porzioni di processore necessarie a mantenere la coerenza delle cache (e cioè servire gli eventi di snoop) anche negli stati low-power. 3.1.1 Intel Pentium 4-M Il processore Pentium 4 M di Intel è un processore realizzato con teconologia di fabbricazione a 0.13 micron, disponibile in numerose versioni, con clock da 1.4 GHz a 2.4 GHz. Contiene una cache di primo livello di 20k (8k per i dati e 12k per le istruzioni), e una cache di secondo livello unificata di 512k. Opera su di un bus di sistema che opera a 400 MHz. Le tensioni di core a cui opera sono pari a: • 1.3 V con alimentazione da rete elettrica (“Maximum Performance Mode”); • 1.2 V con alimentazione da batteria (“Battery Optimized Mode”); • 1.1 V nello stato di “Deep Sleep” (durante inattività di microsecondi); • 1.0 V nello stato di “Deeper Sleep” (durante le inattività fra la pressione di un tasto e l’altro); Pagina 7 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded Nella seconda modalità il clock viene ridotto sempre a 1.2 GHz, indipendentemente dal clock della prima modalità. I consumi a piena attività sono riportati nella tabella seguente: Modo High Performance High Performance High Performance High Performance High Performance High Performance High Performance High Performance High Performance Battery Optimized Mode Clock 2.40 2.20 2.00 1.90 1.80 1.70 1.60 1.50 1.40 1.20 GHz GHz GHz GHz GHz GHz GHz GHz GHz GHz Tensione core 1.3 1.3 1.3 1.3 1.3 1.3 1.3 1.3 1.3 1.2 Corrente core V V V V V V V V V V 36.7 34.5 33.3 32.2 31.0 29.9 28.7 27.5 26.3 22.1 A A A A A A A A A A Potenza 47.71 44.85 43.29 41.86 40.30 38.87 37.31 35.75 34.19 26.52 W W W W W W W W W W La gestione del consumo energetico viene effettuata per mezzo di tre strategie: gli stati a consumo ridotto, la riduzione della frequenza di clock e la riduzione della tensione di alimentazione. Gli stati disponibili sono mostrati nel diagramma che segue: • stato “Normal”: stato in cui il processore esegue le istruzioni; • stato “Auto Halt”: stato a basso consumo in cui il processore si posiziona a seguito dell’esecuzione dell’istruzione HLT. L’asserzione di una qualsiasi linea di interrupt o di reset causa l’immediato ritorno nello stato “Normal”. In stato di “Auto Halt” il processore accetta richieste di snoop; • stato “Stop Grant”: stato a basso consumo in cui il processore si muove a seguito dell’asserzione del segnale STOPCLK#. Durante questo stato, gli eventi di interrupt e di reset non vengono gestiti, ma restano pendenti e vengono serviti al ritorno in stato “Normal”; le richieste di snoop vengono invece accettate. Il segnale STOPCLK# può essere asserito dal chipset a seguito di eventi ACPI oppure a seguito di allarmi termici. In particolare STOPCLK# può essere soggetto a modulazione PWM con duty cycle dipendenti dalla temperatura, per agevolare il raffreddamento. A seguito della disasserzione di STOPCLK#, il processore torna nello stato precedente (“Normal” o “Auto Halt”); • stato “Halt/Grant Snoop”: quando il processore si trova in stato “Normal” oppure “Stop Grant” e sul bus di sistema appare una richiesta di snoop, il processore subisce una tran- Pagina 8 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded sizione in questo stato, vi permane il tempo necessario affinché la richiesta venga servita, quindi ritorna nello stato di provenienza; • stato “Sleep”: stato a consumo ridotto in cui il processore mantiene il suo contesto e il PLL (phase locked loop), ma congela tutti i clock interni. Questo stato può essere raggiunto solo a partire dallo stato “Halt/Grant Snoop” mediante asserzione del segnale SLP#. Durante questo stato il processore non è in grado di servire richieste di snoop e non è in grado di mantenere pendenti richieste di interrupt (che vanno perse); inoltre le linee del bus di sistema devono restare immutate per tutta la durata dello stato di “Sleep”; • stato “Deep Sleep”: si tratta di uno stato a consumo molto ridotto in cui si può transitare a partire dallo stato “Sleep” per mezzo dell’asserzione del segnale DPSLP#. In questo stato, come in “Sleep”, richieste di interrupt o di snoop vanno perse, e il bus di sistema deve essere congelato. In stato “Deep Sleep” il PLL viene spento, ed è possibile fermare anche il clock. Il ritorno da questo stato comporta una attesa di 30 microsecondi prima che il processori si possa considerare in stato “Sleep”, periodo nel quale viene riattivato e stabilizzato il PLL; • stato “Deeper Sleep”: si tratta dello stato a consumo minimo nel quale il processore mantiene il contesto; è funzionalmente equivalmente al “Deep Sleep”, in più il consumo viene ulteriormente abbattuto mediante abbassamento della tensione di alimentazione del core. È compito del chipset pilotare i segnali di controllo del VRM in modo da ottenere l’abbassamento di tensione. Il Pentium 4 supporta la funzionalità di clock bursting a 8 passi discreti di duty cycle (12.5%, 25.0%, 37.5%, 50.0%, 63.5%, 75.0%, 87.5%). Tale tecnica non viene però utilizzata per la riduzione dei consumi, ma solo per la protezione da sovratemperature. 3.1.2 Intel Pentium III-M Il processore Pentium III-M di Intel è disponibile in versioni con frequenze di clock da 650 MHz a 1.40 GHz, operanti su un bus di sistema ad una frequenza di 133 MHz. In particolare gli ultimi modelli, fabbricati in tecnologia da 0.13 micron, hanno clock a 1.13, 1.26 e 1.40 GHz. Esistono inoltre modelli recenti, a tensione ridotta, che esibiscono frequenze di clock inferiori ma anche minori consumi energetici. Il Pentium III-M contiene una cache di primo livello di 32k (16k+16k) e una di secondo livello di 512k. La tabella che segue mostra, per ogni modello e accoppiata frequenza/tensione in cui il processore opera in modo “Maximum Performance”, le frequenze e tensioni corrispondenti nel modo “Battery Optimized”. Processore Mobile P III-M Low Voltage Mobile P III-M Ultra Low Voltage Mobile P III-M Pagina 9 Maximum Performance mode Frequenza Tensione 1.333 1.266 1.200 1.133 1.066 1.000 GHz GHz GHz GHz GHz GHz 1.000 GHz 933 MHz 866 MHz 800 MHz 850 MHz 800 MHz 933 900 866 850 800 MHz MHz MHz MHz MHz 1.40 V 1.15 V 1.10 V Battery Optimized mode Frequenza Tensione 800 800 800 733 733 733 MHz MHz MHz MHz MHz MHz 533 533 533 533 500 500 MHz MHz MHz MHz MHz MHz 400 400 400 400 400 MHz MHz MHz MHz MHz 1.15 V 1.05 V 0.95 V c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded I consumi energetici a piena attività che corrispondono ai modi elencati sopra vanno da 3.4W a 25.5W , come dettagliato di seguito. Frequenza Tensione Corrente 300 MHz 350 MHz 400 MHz 450 MHz 466 MHz 500 MHz 533 MHz 700 MHz 750 MHz 667 MHz 733 MHz 750 MHz 800 MHz 850 MHz 866 MHz 866 MHz 933 MHz 1000 MHz 1066 MHz 1133 MHz 1200 MHz 0.95 0.95 0.95 1.05 1.05 1.05 1.05 1.10 1.10 1.15 1.15 1.15 1.15 1.15 1.15 1.40 1.40 1.40 1.40 1.40 1.40 3.58 3.90 4.20 6.08 6.19 6.38 6.61 7.58 7.58 8.90 9.39 9.47 9.84 10.21 10.32 15.87 16.45 16.83 17.46 18.11 18.27 V V V V V V V V V V V V V V V V V V V V V A A A A A A A A A A A A A A A A A A A A A Potenza 3.401 3.705 3.990 6.384 6.500 6.700 6.941 8.338 8.338 10.245 10.799 10.891 11.316 11.742 11.868 22.218 23.030 23.562 24.444 25.354 25.578 W W W W W W W W W W W W W W W W W W W W W Il Pentium III-M di Intel esibisce funzionalità a basso consumo del tutto sovrapponibili a quelle del suo successore, già esaminato nel paragrafo precedente, fatta eccezione per l’assenza dello stato “Sleep”, come denota il diagramma degli stati in figura. Pagina 10 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded 3.1.3 AMD Athlon XP Il processore Athlon XP di AMD è un processore fabbricato (negli ultimi step) in tecnologia da 0.13µm, con varianti nei clock da 1.4 a 1.8 GHz, cache di primo livello da 64k+64k, di secondo livello da 256k, e bus di sistema da 133MHz con RAM DDR attive sui due fronti. La tabella che segue mostra, per ogni modello, le frequenze e le tensioni operative nominale, e inoltre le correnti e i consumi energetici nominali e massimi. Modello Frequenza di clock 1700+ 1800+ 1900+ 2000+ 2100+ 2200+ 1467 1533 1600 1667 1733 1800 MHz MHz MHz MHz MHz MHz Tensione Nominale Potenza tipica Potenza massima Corrente tipica (working) Corrente massima (working) Corrente tipica (stop/grant) Corrente massima (stop/grant) 1.50V 1.50V 1.50V 1.60V 1.60V 1.65V 44.9W 46.3W 47.7W 54.7W 56.4W 61.7W 49.4W 51.0W 52.5W 60.3W 62.1W 67.9W 29.9A 30.9A 31.8A 34.2A 35.2A 37.4A 32.9A 34.0A 35.0A 37.7A 38.8A 41.2A 2.8A 2.8A 2.8A 3.3A 3.3A 3.6A 4.5A 4.5A 4.5A 5.4A 5.4A 5.9A Di seguito è riportato anche il diagramma degli stati: La semantica degli stati sopra evidenziati è descritta qui di seguito: • stato “C0 Working”: stato in cui il processore esegue le istruzioni; • stato “C1 Halt”: stato a basso consumo in cui il processore si posiziona a seguito dell’esecuzione dell’istruzione HLT. L’asserzione di una qualsiasi linea di interrupt o di reset causa l’immediato ritorno nello stato “C0 Working”. In stato “C1 Halt” il processore accetta richieste di snoop; • stato “C2 Stop Grant”: stato a basso consumo in cui il processore si muove a seguito dell’asserzione del segnale STOPCLK#. Durante questo stato, gli eventi di interrupt e di reset non vengono gestiti, ma restano pendenti e vengono serviti al ritorno in stato “C0 Pagina 11 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded Working”; le richieste di snoop vengono invece accettate. Il segnale STOPCLK# può essere asserito dal chipset a seguito di eventi ACPI oppure a seguito di allarmi termici. In particolare STOPCLK# può essere soggetto a modulazione PWM con duty cycle dipendenti dalla temperatura, per agevolare il raffreddamento. A seguito della disasserzione di STOPCLK#, il processore torna nello stato precedente (“Normal” o “Auto Halt”); • stato “Probe State”: quando il processore si trova in stato “C0 Working” oppure “C2 Stop Grant” e sul bus di sistema appare una richiesta di snoop, il processore subisce una transizione in questo stato, vi permane il tempo necessario affinché la richiesta venga servita, quindi ritorna nello stato di provenienza; • stato “Sleep”: stato a consumo ridotto in cui il processore mantiene il suo contesto e il PLL (phase locked loop), ma congela tutti i clock interni. Questo stato può essere raggiunto solo a partire dallo stato “Halt/Grant Snoop” mediante asserzione del segnale SLP#. Durante questo stato il processore non è in grado di servire richieste di snoop e non è in grado di mantenere pendenti richieste di interrupt (che vanno perse); inoltre le linee del bus di sistema devono restare immutate per tutta la durata dello stato di “Sleep”; 3.1.4 Transmeta Crusoe TM5500 Crusoe TM5500 è un processore con un core VLIW, destinato a laptop di fascia entry-level e progettato per abbattere drasticamente il consumo energetico e la dissipazione termica. A bordo del TM5500 gira un software di bassissimo livello, caricato dalla ROM all’accensione, che implementa una tecnologia di traduzione (denominata Code Morphing), e che lo rende in grado di eseguire codice x86. È disponibile con un clock da 667 a 800 MHz, con cache di primo livello di 64k+64k e di 256k per il secondo livello. A detta del produttore, un Crusoe a 700 MHz è approssimativamente equivalente ad un Pentium III-M a 500 MHz; prove comparative consistenti nella riproduzione di un filmato da DVD sotto sistema operativo Windows 2000 hanno evidenziato una potenza media elettrica assorbita di 1.0 e 7.5 W, e temperature massime di 48.40 C e 105.50 C rispettivamente. Il diagramma degli stati messi a disposizione dal TM5500 è riportato in figura: Pagina 12 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded Per ciascuno degli stati rappresentati in figura e riportati nella tabella che segue (nella terza colonna), indichiamo gli stati possibili dello standard ACPI e le condizioni operative in cui si trovano l’SDRAM e il generatore di clock. ACPI System State G0 G0 G0 G0 G1 G1 G1 G2 G3 / / / / / / / / S0 S0 S0 S0 S1 S3 S4 S5 3.2 / / / / C0 C1 C2 C3 Working Auto Halt Quick Start Deep Sleep Sleeping Suspend-to-RAM Suspend-to-Disk Soft Off Mechanical Off Processor State SDRAM Clock Generator Normal Auto Halt Quick Start Deep Sleep Deep Sleep Off Off Off Off Normal Normal/Self Refresh Self Refresh Self Refresh Self Refresh Self Refresh Off Off Off Running Running Running Clocks Stopped PLL Shut Down PLL Shut Down Off Off Off Processori per sistemi embedded In questa sezione esaminiamo le caratteristiche di processori appositamente progettati per l’impiego in sistemi embedded. 3.2.1 Intel 80200 Il processore 80200 è un processore RISC StrongARM, basato sulla architettura XScale (compatibile ARM V5 per le operazioni intere e ARM V4 per quelle in virgola mobile). È pensato per applicazioni ad alte prestazioni e basso consumo quali telefoni della terza generazione o computer palmari. Pagina 13 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded È possibile controllare il consumo energetico passando in uno degli stati a basso consumo (“Idle”, “Drowsy”, “Sleep”) o modificando dinamicamente il moltiplicatore del clock. 3.2.1.1 Stati a consumo ridotto La commutazione di stato di consumo energetico avviene da software semplicemente modificando il registro PWRMODE di un componente del chipset. Stati disponibili: • stato “Active”: stato in cui il processore esegue le istruzioni, corrispondente al valore 0 del registro PWRMODE; • stato “Idle”: stato a basso consumo in cui si entra scrivendo il valore 1 in PWRMODE. All’ingresso in questo stato viene atteso lo svuotamento della pipeline. In stato “Idle” il PLL è attivo e il contesto viene mantenuto. L’asserzione di una delle linee di interrupt causa il ritorno allo stato “Active” e la prosecuzione dell’esecuzione delle istruzioni, dopo una latenza di circa 10 cicli di clock (CLK, clock di sistema); • stato “Drowsy”: stato a consumo ancor più ridotto in cui si entra scrivendo il valore 2 in PWRMODE. All’ingresso in questo stato viene atteso lo svuotamento della pipeline, quindi viene spento il PLL. Il contesto viene mantenuto. L’asserzione di una delle linee di interrupt causa la riaccensione del PLL e il ritorno allo stato “Active”, quindi la prosecuzione dell’esecuzione delle istruzioni. Il ritorno allo stato “Active” prevede una latenza di circa 2000 cicli di clock (CLK); • stato “Sleep”: stato a consumo nullo, raggiunto ponendo PWRMODE a 3. Prima dell’ingresso in questo stato il contesto deve essere salvato perchè viene ovviamente perso all’abbattimento della tensione di alimentazione. Si esce da questo stato solo mediante asserzione della linea di reset. 3.2.1.2 Riduzione del clock L’Intel 80200 accetta una frequenza di clock di sistema (CLK) variabile da 33 a 66 MHz e contiene un PLL che realizza un moltiplicatore variabile da 3 a 11, realizzando quindi (con CLK 66 MHz) un clock interno (CCLK) da 200 a 733 MHz. La commutazione del moltiplicatore può essere effettuata da software senza necessità di reset del processore, in modo da modulare il clock in base al carico di lavoro. Il cambio di clock richiede l’attesa della stabilizzazione del PLL, che può richiedere un migliaio di cicli di CLK. 3.2.2 ARM1022E 3.2.2.1 Stati a consumo ridotto La commutazione di stato di consumo energetico avviene da software semplicemente modificando il registro PWRMODE di un componente del chipset. Stati disponibili: • stato “Run”: stato in cui il processore esegue le istruzioni; • stato “Standby”: stato a basso consumo in cui il processore resta interamente alimentato ma il clock viene fermato. L’asserzione di una delle linee di interrupt causa il ritorno allo stato “Run”. Il tempo di recupero è dell’ordine dei 10 cicli di clock; • stato “Dormant”: stato a basso consumo in cui il processore viene disalimentato mentre la cache e l’elettronica di power management restano alimentate. Il contesto viene perso, deve Pagina 14 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded quindi essere salvato prima dell’ingresso in questo stato. Il tempo di recupero è dell’ordine di 100 cicli; • stato “Shutdown”: stato a consumo nullo, in cui sia il processore che la cache vengono disalimentati. Il tempo di recupero è dell’ordine di 10000 cicli; 3.2.3 Motorola MC68EZ328 DragonBall EZ Il DragonBall EZ è un microprocessore funzionalmente compatibile con lo storico 68000 e con funzionalità aggiuntive quali controller LCD, porte seriali e parallele. Viene utilizzato nella grande maggioranza dei computer palmari con sistema operativo PalmOS. Al fine di ridurre il consumo energetico è possibile agire sul PLL modificando la frequenza di clock, oppure sul modulo di regolazione del consumo, effettuando il clock-bursting con dutycycle variabile, oppure entrando in uno stato a basso consumo. 3.2.3.1 Stati a basso consumo e clock bursting • “normal mode”: è il modo in cui il microprocessore opera dopo il reset. Al momento del reset, inoltre, il modulo di controllo del consumo energetico è disabilitato e il clock oscilla con continuità. Per abilitare il controllo del consumo energetico è sufficiente abilitare tale modulo ponendo a 1 un bit dell’apposito registro di controllo e regolare il duty-cycle del bursting; il duty cycle è regolabile dallo 0% al 100% in 32 passi, corrispondenti ad incrementi di circa il 3%. In questo modo è possibile dosare finemente il consumo di potenza e la dissipazione termica. All’arrivo di un interrupt il modulo di controllo del consumo viene di nuovo disabilitato e l’interrupt viene servito a clock pieno. E’ compito dell’interrupt service routine riabilitare il bursting se lo ritiene opportuno; Pagina 15 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded • “doze mode”: è una modalità a consumo ridotto a cui si giunge abilitando il bursting e portando a zero il duty-cycle. Il clock del core della CPU è fermo, ma le periferiche, incluso il controller LCD non ne risentono in alcun modo, essendo dotate di clock separati. All’arrivo di un interrupt o di un segnale di reset il bursting viene immediatamente disabilitato e il processore torna a clock pieno; • ”sleep mode”: viene disattivato il PLL (cfr. 6.0.1), interrompendo cosı̀ tutti i clock di sistema, ad eccezione del clock a bassa frequenza (32kHz), che resta attivo al fine di mantenere aggiornato il real-time clock. Eventi di interrupt e di reset causano la riattivazione dei clock, e la piena operatività del sistema dopo un periodo di stabilizzazione di 1ms circa. 3.2.3.2 Regolazione del PLL Il sistema genera una bassa frequenza da 32kHz tramite quarzo che viene usata sia dal real-time clock che dal PLL. L’uscita del PLL viene divisa tramite un prescaler e quindi divisa ulteriormente per originare altre tre frequenze: il clock per la RAM, il clock del bus di sistema e il clock del controller LCD. I clock di sistema ottenibili vanno da circa 10 MHz a oltre 54 MHz. 3.2.4 IBM PowerPC 405LP Il PowerPC 405LP è il microprocessore per applicazioni embedded a bassissimo consumo appena annunciato da IBM. Integra una pipeline a 5 stadi, 16+16Kbyte di cache dati e istruzioni, e l’architettura interna fa uso estensivo del clock gating. Mette a disposizione le seguenti funzionalità di risparmio energetico: • controllo del clock: il software può regolare dinamicamente la frequenza di clock fra un minimo di 152 e un massimo di 380 MHz; • controllo del voltaggio: il software può regolare dinamicamente la tensione di alimentazione del core, da 1.0 a 1.8V; • stati a consumo ridotto: tramite software si può portare il processore in una delle 3 modalità idle a basso consumo energetico; • modo “Cryo” a consumo zero: il contesto del microprocessore viene salvato su memoria non volatile EEPROM pilotata tramite bus IIC, quindi viene tolta alimentazione. L’operazione di ripristimo da spento, comprendente la sequenza di power-on, la stabilizzazione del PLL e il recupero del contesto da EEPROM ha una latenza di 200 ms. Pagina 16 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded Pagina 17 Frequenza di clock Tensione Consumo 380 MHz (max) 152 MHz (min) 1.8 V 1.0 V 500 mW 53 mW c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded 4 Un esempio di framework DPM Nell’ambito PC esiste uno standard ben affermato, denominato ACPI e giunto ormai alla versione 2.0, che regola l’interazione fra componenti hardware e software al fine di regolare il risparmio energetico, in particolare i tempi di inattività delle periferiche oltre i quali esse vengono spente, le funzionalità di sospensione e ibernazione, i differenti profili attivi quando la macchina è alimentata dalla rete elettrica oppure da batteria. In questo capitolo esaminiamo nel dettaglio una architettura software per il DPM che si propone in qualche modo obbiettivi simili ma nell’ambito embedded. In particolare vuole adattarsi alle caratteristiche peculiari (e sfruttarle, ove possibile) del DPM sotto sistemi embedded, che sono le seguenti: • possibilità di scalare frequenza di clock con latenze di pochi microsecondi e tensioni di core con latenze di poche decine di microsecondi, il tutto senza interrompere le elaborazioni; • conseguente possibilità di realizzare una politica DPM aggressiva, ovvero con modifica frequente e a grana fine di clock e tensioni, in dipendenza del carico di lavoro; • mancanza di un BIOS che fornisca un livello di isolamento del sistema operativo dall’hardware, e conseguente ricaduta dei ruoli di power management sul sistema operativo stesso; • predominanza del consumo del processore sul consumo globale del sistema. Il DPM framework qui proposto è stato elaborato da IBM e MontaVista, i quali stanno collaborando nella progettazione di un computer palmare basato sul microprocessore PowerPC 405LP e sul sistema operativo Linux. Le prerogative di questo framework sono la semplicità (il DPM deve essere trasparente per le applicazioni, salvo quelle appositamente realizzate in modo da essere power-aware), la modularità (deve essere facile per i produttori di hardware scrivere le loro policies) e la flessibilità. 4.1 Panoramica architetturale In figura è rappresentata la struttura proposta: l’implementazione a basso livello del DPM si trova nel kernel e contiene le policy, il cui significato verrà chiarito in seguito. Il gestore delle policy può essere realizzato a livello di sistema operativo oppure a livello applicativo. Si noti che il DPM non può essere visto come un driver a sé stante, invece costituisce un insieme di modifiche e aggiunte da apportare in punti critici del kernel. La figura che segue illustra l’architettura descritta. Pagina 18 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded 4.2 Concetti fondamentali Il DPM framework qui proposto poggia su una manciata di concetti fondamentali, che vengono definiti e commentati in questa sezione. Per chiarificare meglio, utilizzeremo esempi che si riferiscono ad una architettura basata sul PowerPC 405LP già descritto. 4.2.1 Operating point In ogni istante il sistema funziona ad un dato operating point, che è determinato da parametri quali le frequenze del VCO, della CPU e del bus, la tensione di core, lo stato delle periferiche, le temporizzazioni della RAM. Nell’architettura citata, un esempio di operating point è il seguente: Frequenza del VCO del PLL Frequenza di clock della CPU Frequenza di clock del bus locale CPU Frequenza del bus esterno Tensione di core Temporizzazione SDRAM 4.2.2 800 MHz 200 MHz 100 MHz 33 MHz 1.0 V CAS 2 Operating state Il sistema operativo può essere pensato come una macchina a stati, che si muove fra stati differenti a seconda degli eventi che intervengono (i task vengono schedulati, giungono richieste di interrupt, un task si mette in attesa, ecc.), come in figura. Pagina 19 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded Ci riferiremo a questi stati come operating state. In una politica DPM aggressiva, si può associare uno specifico operating point a ciascun operating state. L’introduzione degli operating state è giustificata dal fatto che si possono ottenere risparmi energetici molto significativi riducendo clock e tensioni quando il sistema non è occupato. Questo porta ad una naturale distinzione fra gli stati attivi e inattivi, ciascuno con differenti operating point. Gli stati attivi possono essere multipli: uno di essi sarà lo stato di default che verrà assegnato in maniera trasparente alla maggioranza dei task, in più possono esistere altri stati, specializzati, per le applicazioni power-aware. Gli stati dei task sono simili alle priorità di processo, ma non bisogna cedere alla tentazione di pensare che processi con elevata priorità richiedano operating point ad alte prestazioni. Si consideri l’esempio di un player MP3, che viene schedulato con priorità real-time ma richiede solo una piccola frazione della potenza di calcolo messa a disposizione dal processore quando portato alle massime prestazioni. 4.2.3 Vincoli e classi di congruenza degli operating point Gli stati dei dispositivi a bordo del processore e di quelli esterni influenzano in maniera determinante il consumo del sistema e vincolano la scelta degli operating point. Nel caso specifico il PPC 405LP contiene un controller LCD che accede ad un framebuffer situato in SDRAM, questo implica che se l’LCD è attivato, il sistema deve mantenere una frequenza del bus verso la memoria che sia sufficiente a permettere la frequenza scelta di refresh dell’immagine. Per descrivere questo tipo di vincoli nel framework DPM proposto, sono state introdotte le classi di equivalenza degli operating point e i vincoli di dispositivo. I vitelli dei Romani sono belli. Le classi di equivalenza degli operating point raggruppano gli operating point che il progettista considera equivalenti fissato un operating state. Per ogni dispositivo, ci saranno inoltre semplici regole che permettano di invalidare gli operating point non rispondenti ai vincoli e scegliere il migliore fra quelli validi. L’applicazione dei queste regole avviene a livello di kernel; in questo modo non si obbliga il progettista a prevedere un policy manager a run-time. In figura sono rappresentati due operating state, uno denominato “task”, pensato per essere utilizzato quando sono in esecuzione processi, l’altro, denominato “idle”, pensato per i periodi di inattività. Ciascuno di essi è costituito da una classe di congruenza contenente 3 operating point. Pagina 20 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded Una volta applicate le regole associate ai dispositivi (in particolare la regola già citata sul clock del bus con controller LCD attivato), in ciascun operating state vengono invalidati gli operating point, che hanno frequenza di pixel clock insufficienta (nella figura è indicata con PXL). A questo punto il gestore DPM sceglie, fra gli operating point validi, quello a consumo minore (in figura è marcato con un doppio cerco). 4.2.4 Policy e Policy manager Il concetto a più elevato livello di astrazione nell’architettura DPM descritta è la policy. Una policy è una funzione che mappa ciascun operating state verso una classe di congruenza di operating point. Una strategia di power management deve specificare almeno una policy, ma può specificarne numerose, una per ogni profilo o situazione operativa che ritiene possa verificarsi. In figura è rappresentata una policy con tutti gli elementi costituenti: per ciascun operating state è riportata la relativa classe di congruenza degli operating point, di cui quello al momento selezionato è indicato con il colore grigio. 4.3 Implementazione astratta In questa sezione presentiamo le scelte implementative che MontaVista ha adottato per concretizzare i concetti esposti. L’implementazione DPM presente nel kernel del sistema operativo Pagina 21 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded espone 5 chiamate di sistema, rappresentate in figura: assert constraint(), remove constraint(), set operating state(), set policy() e set task state(), delle quali le prime tre sono visibili soltanto nel contesto del kernel, mentre le ultime 2 sono accessibili anche a livello applicativo. Le esaminiamo brevemente nei paragrafi seguenti. 4.3.1 set operating state() Questa chiamata serve per indicare al DPM in quale operating state ci si trova. Ci si aspetta che questa chiamata venga invocata al momento del context switch da un processo all’altro, quando il sistema operativo entra in inattività perchè tutti i processi sono in attesa, e quando viene servita una richiesta di interrupt. A seguito dell’invocazione di questa funzione, il DPM prende atto del cambio di operating state e regola l’hardware in modo da assumere le impostazioni del miglior operating point valido appartenente alla classe di congruenza associata all’operating state corrente. 4.3.2 assert constraint() Questa funzione viene permette di impostare un vincolo di dispositivo come quello esemplificato in 4.2.3, e viene generalmente invocata all’interno dei driver di dispositivo, tipicamente in risposta a chiamate di tipo open(). 4.3.3 remove constraint() Questa funzione viene permette di eliminare un vincolo di dispositivo impostato con la chiamata precedente, e viene generalmente invocata all’interno dei driver di dispositivo, tipicamente a seguito di chiamate quali close(). 4.3.4 set policy() Questa chiamata permette l’impostazione di una policy a livello di sistema. Ci si aspetta che sia il sistema operativo ad invocare questa chiamata una volta per tutte, al momento dell’avvio, ma niente vieta la costruzione di un policy manager, implementato come applicazione in user space, che si occupi di modificare a run-time le policy, in base alle decisioni dell’utente. 4.3.5 set task state() Questa chiamata permette di selezionare a quale operating state debba essere associato ad un dato processo. A seconda delle scelte implementative, si può fare in modo che l’invocazione Pagina 22 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded di questa chiamata possa essere effettuata da un solo processo che realizza il policy manager oppure anche da singoli processi critici power-aware, che possono voler partecipare alla scelta dei propri operating point. 4.4 Conclusioni Il framework DPM qui presentato esibisce doti di portabilità, in quanto si limita a specificare una gerarchia di oggetti denominati che può essere potenzialmente implementata in ogni sistema e non impone il modo di specificare gli operating point, né gli operating state, né le policy. Inoltre l’architettura è sufficientemente modulare da permettere l’implementazione dei vincoli di un dispositivo all’interno del driver del dispositivo stesso. Pagina 23 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded 5 Argomenti di ricerca In questa sezione citiamo alcuni interessanti filoni di ricerca, relativi alle tematiche esposte nei capitoli precedenti, che risultano attivi e promettenti al momento. 5.1 Riduzione del consumo energetico dovuto a snoop Come abbiamo già enunciato, in ambiente di multiprocessing, le richieste di snoop causano consumo di potenza in un processore anche quando questo si trova in stato di inattività. In [19] gli autori osservano che una larga maggioranza delle richieste di snoop non trovano il proprio “argomento” nella cache locale considerata, e propongono l’introduzione di un componente, denominato JETTY, da inserire fra il bus e il back-end della cache di secondo livello del processore, che agisca da filtro, impedendo alle richieste che genererebbero sicuramente miss di arrivare alla cache. Nella figura che segue è rappresentata una architettura SMP tradizionale, in cui tutti gli array di tag della cache di secondo livello consumano energia ad ogni richiesta di snoop. Nella prossima figura è invece rappresentata una architettura in cui è stato introdotto il componente JETTY; in questo caso, una richiesta di snoop viene inoltrata alla cache L2 solo se è possibile che generi un cache hit. Pagina 24 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded Gli autori propongono diverse strategie per la realizzazione del JETTY (per esempio facendo in modo che contenga un sottoinsieme il più ampio possibile delle locazioni che generano miss oppure un soprainsieme il più ristretto possibile di quelle che generano hit), e dichiarano di aver raggiunto, in una configurazione di test SMP con 4 processori, un filtraggio del 77% delle richieste, che risulta nell’abbattimento del 41% del consumo causato da tutte le richieste di snoop. 5.2 Battery-driven DPM In [25] e [26] gli autori osservano che nella gran parte delle strategie di DPM si mira alla minimizzazione della potenza assorbita, mentre nei dispositivi portatili l’obiettivo desiderato è la massimizzazione della durata delle batterie. A prima vista i due obiettivi possono sembrare coincidenti, e lo sarebbero se le batterie esibissero comportamento ideale, cioè avessero una capacità indipendente dalle correnti di scarica. Ma cosı̀ non è: non solo la capacità utilizzabile di una batteria dipende in maniera forte dalle correnti che ne vengono prelevate, come mostrato nel grafico a sinistra della figura, ma le batterie tendono in qualche modo a recuperare parte della capacità utile se lasciate a riposo, come mostrato nel grafico a destra. Muovendo da queste considerazioni gli autori propongono delle strategie di DPM che invece di essere rivolgere la loro attenzione primariamente al carico di lavoro, si focalizzano sulla vita utile delle batterie. Nei paper considerati viene esaminato un caso di studio relativo ad un lettore portatile MP3 di produzione, in grado di funzionare in due modalità, di cui la prima ad alta fedeltà e maggiore consumo e la seconda a minore fedeltà e minor consumo. La strategia che gli autori intendono attuare consiste nello stabilire una tensione di soglia al di sotto della quale il sistema passa automaticamente dalla modalità ad alta fedeltà a quella a minore fedeltà. Gli autori introducono un fattore di qualità pari alla frazione di tempo di riproduzione ad alta fedeltà rispetto al tempo di riproduzione totale, quindi definiscono una metrica P, pari al fattore di qualità moltiplicato per la durata, e scelgono il valore della tensione di soglia che massimizzi P. Resta da verificare che la metrica proposta sia proprio coincidente con le aspettative dell’utente medio e i compromessi che è disposto ad accettare. Pagina 25 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded 6 Appendice: Approfondimenti 6.0.1 PLL e latenze indotte Il PLL (phase locked loop – anello ad aggancio di fase) è uno schema retroazionato molto comune, utilizzato nei moltiplicatori di frequenza a coefficiente variabile integrati nei moderni microprocessori. La struttura a blocchi è riportata nel seguente diagramma: Al primo blocco viene fornito come ingresso un segnale di riferimento (solitamente generato mediante un oscillatore quarzato). Tale blocco produce un’uscita proporzionata alla somma e alla differenza fra le fasi del segnale di riferimento e l’uscita del divisore di frequenza (il cui ruolo è descritto in seguito). Il filtro passa-basso lascia passare solamente la componente differenza, dando origine ad una tensione di errore proporzionale alla differenza tra le fasi dei due segnali. La tensione errore pilota un oscillatore controllato in tensione (VCO) ad ampiezza fissa, che produce un aumento o diminuzione di frequenza nella direzione che causa la diminuzione dell’errore (in valore assoluto). Se la linea di retroazione non presentasse il divisore di frequenza, ad aggancio avvenuto, la frequenza del VCO sarebbe pari alla frequenza del segnale di ingresso, ma in presenza di un divisore di frequenza per N, la frequenza in uscita al VCO sarà pari a N volte la frequenza di ingresso. Esistono poi varie soluzioni sia per effettuare la squadratura del segnale in uscita (per esempio per mezzo di un trigger di Schmitt), sia per realizzare il divisore di frequenza (per esempio per mezzo di un contatore digitale). In molti dei processori esaminati è possibile, nel quadro delle funzionalità di riduzione del consumo, spegnere il PLL. Appare quindi chiaro che, alla sua riaccensione, sia necessario attendere tempi di aggancio e di stabilizzazione che sono di 3-4 ordini di grandezza superiori al ciclo di clock. Ciò rende lo spegnimento del PLL una opzione compatibile con i tempi dei comandi “umani”, ma poco praticabile in sistemi sottoposti a vincoli di real time sufficientemente stretti. Tempi di stabilizzazione dello stesso ordine di grandezza sono necessari per il riaggancio del PLL nel caso di mutamento del coefficiente di moltiplicazione del clock. Pagina 26 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded Elenco degli acronimi ACPI Advanced configuration and power interface DDR Double data rate DPM Dynamic power management CMOS Complementary metal-oxide semiconductor MOS Metal-oxide semiconductor PLL Phase-locked loop PWM Pulse width modulation VCO Voltage-controlled oscillator VRM Voltage regulator module VLIW Very long instruction word Pagina 27 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded Bibliografia [1] Intel Corporation, IA-32 Intel Architecture Software Developer’s Manual - Volume 1: Basic Architecture, order number: 24547-009, disponibile su developer.intel.com. [2] Intel Corporation, IA-32 Intel Architecture Software Developer’s Manual - Volume 2: Instruction Set Reference, order number: 24547-109, disponibile su developer.intel.com. [3] Intel Corporation, IA-32 Intel Architecture Software Developer’s Manual - Volume 3: System Programming Guide, order number: 24547-209, disponibile su developer.intel.com. [4] Intel Corporation, Intel Pentium 4 Processor VR-Down – Design Guidelines, November 2002, order number: 249891-004, disponibile su developer.intel.com. [5] Intel Corporation, Mobile Intel Pentium 4 Processor-M – Product Overview, January 2003, order number: 250352-004, disponibile su developer.intel.com. [6] Intel Corporation, Mobile Intel Pentium 4 Processor-M and Intel 852GM Chipset Platform – Design Guide, January 2003, order number: 25233-801, disponibile su developer.intel.com. [7] Intel Corporation, Intel 852GM Chipset Graphics and Memory Controller Hub (GMCH) – Datasheet, January 2003, order number: 25240-701, disponibile su developer.intel.com. [8] Intel Corporation, Intel 852GM Chipset Graphics and Memory Controller Hub (GMCH) – Datasheet, January 2003, order number: 25240-701, disponibile su developer.intel.com. [9] Intel Corporation, Mobile Intel Pentium III Processor-M – Datasheet, January 2003, order number: 29834-006, disponibile su developer.intel.com. [10] Intel Corporation, Intel Pentium III Processor with 512KB L2 Cache at 1.13GHz to 1.40GHz – Datasheet, June 2002, order number: 249657-004, disponibile su developer.intel.com. [11] Intel Corporation, Intel 80200 Processor based on Intel XScale Microarchitecture – Datasheet, August 20002, order number: 273414-004, disponibile su developer.intel.com. [12] Intel Corporation, Intel XScale Microarchitecture – Programmer’s Reference Manual, February 2001, order number: 273436-001, disponibile su developer.intel.com. [13] Intel Corporation, Intel Low-Power Technologies – Bringing Longer Battery Life - and Higher Productivity - to Mobile Computing, order number: 250366-001, disponibile su developer.intel.com/design/mobile/perfbref/. [14] ARM Limited, ARM9E-S, Technical Reference Manual, Revision 2, order number: DDI 0240A, disponibile su www.arm.com/Documentation/. [15] ARM Limited, ARM9E-S, Technical Reference Manual, Revision 2, order number: DDI 0240A, disponibile su www.arm.com/Documentation/. [16] ARM Limited, ARM1022E, Technical Reference Manual, order number: disponibile su www.arm.com/Documentation/. DDI 0237A, [17] Motorola Incorporated, MC68EZ328 (DragonBall EZ) Integrated Portable System Processor – Product Brief, Revision 2, October 2001, order number: MC68EZ328P/D, disponibile su www.motorola.com/Documentation/ ; Pagina 28 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT Gestione dinamica del consumo energetico nei sistemi embedded [18] Motorola Incorporated, MC68EZ328 (DragonBall EZ) Integrated Portable System Processor – User’s Manual, Revision 1, November 1998, order number: MC68EZ328UM/D, disponibile su www.motorola.com/Documentation/; [19] Moshovos, Memik, Mittal, Baniasadi, Choudhary, JETTY: Reducing Snoop-Induced Power Consumption in Small-Scale, Bus-Based SMP Systems, Technical Report CPDC-TR-200005-007, Center for Parallel and Distributed Computing, Department of Electrical and Computer Engineering, Northwestern University, Evanston IL, USA; [20] IBM and MontaVista Software, Dynamic Power Management Embedded Systems, Version 1.1, November 2002, available www.research.ibm.com/arl/projects/papers/DPM V1.1.pdf; for at [21] Lee, F. C. and Zhou X., Power Management Issues for Future Generation Microprocessors, ISPSD ’99 - The 11th International Symposium on Power Semiconductor Devices and ICs, proceedings, pages 27-33; [22] Ishihara and Yasuura, Voltage Scheduling Problem for Dynamically Variable Voltage Processors, ISPLED ’98, International Symposium on Low-power electronics and design, proceedings, pages: 197 - 202; [23] Simunic, Benini, Acquaviva, Glynn and De Micheli, Dynamic Voltage Scaling and Power Management for Portable Systems, DAC 2001, Las Vegas, Nevada, USA; [24] Simunic, Benini, Glynn and De Micheli, Dynamic Power Management for Portable Systems, MOBICOM 2000, Boston, Massachusetts, USA; [25] Benini, Castelli, Macii and Scarsi, Battery-Driven Dynamic Power Management, IEEE Design and Test of Computers, March/April 2001 (Vol. 18, No. 2), pages: 53-60; [26] Benini, Castelli, Macii, Macii and Scarsi, Battery-Driven Dynamic Power Management of Portable Systems, 13th International Symposium on System Synthesis (ISSS’00), September 2000, Madrid, Spain, pages: Pagina 29 c CEFRIEL 2002 Febbraio 2003 – Ver. 1.0 – XV Master IT