I moderni sistemi di CPU superscalare raggiungono un elevato rendimento eseguendo più istruzioni per ciclo di clock, ma questo guadagno di prestazioni viene ad un costo significativo nel consumo energetico. Poiché l'efficienza energetica diventa una preoccupazione primaria in tutto, dai dispositivi mobili ai data center iperscala, l'implementazione della programmazione di potenza è emersa come una strategia di progettazione critica.

Fondazioni di Architettura Superscalar e Consumo di Potere

Per comprendere la programmazione di potenza-consiglio, si deve prima apprezzare le fonti di dissipazione di potenza in un processore superscalare. Un tipico obsoleto superscalare pipeline comprende fetch, decode, rinomina, emissione, esecuzione e fasi di commit. Ogni fase utilizza l'alimentazione dinamica (proporzionale a attività di commutazione, tensione quadrata, e la frequenza media) e l'alimentazione statica (corrente di recupero di corrente).

La programmazione di Power-aware mira direttamente al trade-off tra l'estrazione del parallelismo di livello di istruzione (ILP) e la gestione del bilancio di potenza. Senza tale pianificazione, un processore può raggiungere limiti di potenza di progettazione termica (TDP), causando il superamento delle prestazioni che effettivamente degradano. L'obiettivo è quello di regolare dinamicamente le decisioni di programmazione, come il tasso di rilascio di istruzione, la selezione delle unità di esecuzione e la profondità di speculazione, per rimanere all'interno di potenza di avanzamento.

Tecniche di base per la Scheduling Power-Aware

Scala dinamica di tensione e frequenza (DVFS)

DVFS è la tecnica di gestione del potere più ampiamente adottata. Riducendo la tensione di funzionamento e la frequenza, il processore può ottenere risparmi di potenza quasi cubo (dalla potenza dinamica ≈ C × V2 × f). In un contesto di programmazione, DVFS è spesso combinato con la previsione del carico di lavoro. Il programmatore monitora le fasi di miscela di istruzione e utilizzo del gasdotto, quindi invia le richieste ad un controllore di frequenza di frequenza di frequenza di frequenza di tensione-frequenza.

Gating orologio e alimentazione

Il tempo di avanzamento di un tempo di tempo di funzionamento non utilizzato, eliminando l'energia dinamica in quei blocchi. Gli scheduler di potenza possono migliorare il gating dell'orologio, lasciando intenzionalmente le unità inattivo quando il loro uso fornire guadagni ILP marginali.

Istruzione Controllo di larghezza e di rilascio

In un processore superscalare, la fase di emissione seleziona fino a istruzioni N per ciclo dalle stazioni di prenotazione. Il trasloco limita questa larghezza, ad esempio, emettendo solo 2 istruzioni anche se l'hardware supporta 4. Questo riduce il numero di unità di esecuzione contemporaneamente attive, abbassando sia la potenza dinamica che quella statica. Il programmatore può regolare la larghezza del problema in base dinamica a un contatore di potenza o sensore termico.

Istruzioni per il riordino e il disordine

I tradizionali programmatori fuori ordine privilegiano le istruzioni che sbloccano le catene dipendenti, massimizzano l'ILP. Una variante di power-aware aggiunge un secondo criterio: il costo energetico dell'utilizzo di alcune unità di esecuzione. Ad esempio, un'unità di divisione può consumare 5× l'energia di un'unità di aggiunta. Il programmatore può ritardare un'istruzione di divisione indipendente se una istruzione più semplice è pronta e il budget di potenza è stretto.

Controllo della speculazione

I processori di bilancio superscalari si affidano fortemente alla previsione di ramo e all'esecuzione speculativa per riempire la pipeline. Speculando il percorso sbagliato spreca l'alimentazione di fetching, decodifica e eseguendo istruzioni errate. La programmazione di Power-aware può regolare dinamicamente l'aggressività del prospettore di ramo o limitare la profondità di speculazione (ad esempio, limitare quanti rami non risolti sono in volo).

Supporto architettonico per la realizzazione di un’architettura di potenza

L'implementazione della programmazione di potenza-consiglio richiede modifiche a più fasi di pipeline. Il programmatore deve avere accesso a stime di potenza in tempo reale, letture di sensori termici e modelli di energia. I chip moderni incorporano sensori di corrente, regolatori di tensione con telemetria e diodi di temperatura. Questi dati sono alimentati in un monitor di potenza per ciclo che fornisce un bilancio energetico per la prossima finestra di pianificazione.

Modellazione di potenza in hardware

La potenza dinamica dipende dall'attività di commutazione di ogni unità funzionale, che è dipendente dal carico di lavoro. Molte proposte di ricerca utilizzano contatori di attività che accumulano transizioni sulle linee di autobus, registrano porte di file e ingressi dell'unità di esecuzione. Questi contatori sono aggiornati ogni ciclo e moltiplicati da coefficienti di potenza specifici per unità. La stima di potenza risultante è confrontata con un budget in esecuzione.

Implementare il programmatore

In un design convenzionale fuori ordine, il programmatore sceglie da un pool di istruzioni pronte in base all'età, all'altezza della dipendenza o alla priorità. Per la consapevolezza del potere, ogni istruzione può portare a un "tasto energetico" derivato dal tipo di operazione decodificata. La logica del problema poi implementa un algoritmo di selezione multi-constrained: deve rispettare il limite di larghezza del problema, il budget di potenza e potenzialmente cluster termici.

Un altro approccio è quello di utilizzare una "finestra di istruzioni Power-Aware" dove la dimensione del buffer di riordine è dinamicamente ridotta sotto stress ad alta potenza. Una finestra più piccola limita il numero di istruzioni in volo, riducendo la pressione dei file di registro e la sovraccarica di speculazione.

Imparare e Predictive Power Management

I modelli di apprendimento automatico (ML), in particolare l'apprendimento di rinforzo (RL), hanno dimostrato la promessa nell'apprendimento delle politiche di programmazione ottimali. Ad esempio, un agente RL può osservare lo stato (potenza attuale, temperatura, IPC, tasso di errazione del ramo) e selezionare le azioni (larghezza del problema, livello DVFS, profondità di speculazione).

Tuttavia, implementare ML all'interno di un processore richiede modelli leggeri. Gli alberi di decisione o piccole reti neurali con pesi binari possono essere sintetizzati in hardware con bassa latenza. La formazione può essere effettuata offline su carichi di lavoro tipici, e i parametri del modello caricati in memoria on-chip. In alternativa, l'apprendimento online può adattarsi a modelli nuovi, anche se aumenta la complessità.

Esempi di studi e di industria

I processori commerciali incorporano sempre più la programmazione di potenza-consapevole. I core di Intel Skylake e quelli più recenti utilizzano una "unità di controllo potenza" (PCU) che monitora i sensori e regola la frequenza e la tensione per nucleo o per cluster. La PCU influenza anche il programma di istruzioni tramite i segnali di throttling quando l'alimentazione supera i limiti.

Nel campo della ricerca, IBM POWER7 ha introdotto un programmatore "watt-aware" che potrebbe spostare le istruzioni tra unità di punto galleggiante e vettoriali basate su bilanci di potenza. Più recentemente, l'architettura "Halide" di Gruber et al. (2021) propone un programmatore che utilizza un modello predittivo leggero per decidere tra emettere un'istruzione di carico (che può causare errori di cache e alta potenza dall'attività del controller di memoria) contro un registro-registro.

"Un'indagine di Power-Aware Scheduling in Multiprocessor Systems" di Zhuravlev et al. (2012). Per una profonda immersione nella modellazione di potenza, fare riferimento a "Il monitoraggio di potenza in processori ad alta intensità: Metodologia e dati esciirici

Sfide nella Scheduling Power-Aware

Precisione dei modelli di potenza e termica

Tuttavia, la potenza dinamica è notoriamente difficile da misurare ciclo-per-ciclo. Molte proposte utilizzano la potenza media su una finestra, che può non impedire le punte termiche transitorie. Gli effetti termici aggiungono una costante di tempo lento; un breve esplosione di potenza potrebbe non causare surriscaldamento, ma un alto potere sostenuto sarà. Il programmatore deve considerare sia istantaneamente che il processo cumulativo di energia.

Prestazioni Overhead vs. Energy Savings

Ogni azione di risparmio energetico – ridotta larghezza di uscita, DVFS, speculazione throttling – porta una penalità di prestazione. L'arte della programmazione di power-aware è quello di ridurre al minimo la perdita di prestazioni, massimizzando il risparmio energetico. Il punto ottimale dipende dal carico di lavoro e dalla preferenza degli utenti (ad esempio, la performance-per-watt vs. prestazioni assolute).

Integrazione con i Power Manager di livello superiore

I sistemi moderni hanno più livelli di gestione del potere: il programmatore del sistema, il firmware del sistema (ACPI), e il programmatore dell'hardware. Questi strati devono collaborare. Ad esempio, il sistema operativo può richiedere un certo stato di potenza (P-stato) tramite ACPI, ma il programmatore dell'hardware può ulteriormente la larghezza del problema fine-tune all'interno di tale stato.

Le direzioni future

Come la tecnologia del silicio scala a nodi più piccoli, la perdita statica diventa una frazione più grande di potenza totale. Questo rende la ritenzione di stato di potenza e di potenza efficiente ancora più importante. I futuri programmatori possono impiegare "un calcolo di soglia" dove la tensione è abbassata a vicino alla tensione di soglia, che richiede una pianificazione accurata per evitare le violazioni dei tempi.

Un altro modo promettente è l'uso di calcolo approssimativo. Alcuni carichi di lavoro tollerano l'imprecisione (ad esempio, elaborazione delle immagini, inferenza di apprendimento automatico). Un programmatore potrebbe deliberatamente saltare alcune istruzioni o ridurre la precisione (ad esempio, utilizzare aritmetica a bassa precisione) quando il potere è limitato, fornendo degradazione delle prestazioni graziosa invece di sbavare.

Infine, l'integrazione della programmazione di power-aware con i controller di memoria e network-on-chip (NoC) diventerà critica in molti processori core.Il programmatore potrebbe astenersi dall'emissione di un'istruzione di memoria quando il budget di potenza DRAM à ̈ esaurito, o puÃ2 guidare il traffico a percorsi NoC meno congestionati per ridurre il potere dinamico nell'interconnessione.

Conclusioni

La programmazione di power-aware non è un componente aggiuntivo opzionale, ma una necessità per i moderni sistemi di CPU superscalar che devono bilanciare le prestazioni con l'efficienza energetica. Con l'adattamento dinamico del problema di istruzione, speculazione, frequenza di tensione e allocazione delle risorse, i processori possono operare all'interno di budget a forte potenza, offrendo ancora un elevato rendimento.