Logo Zephyrnet

Ottimizzazione dell'energia a livello di sistema

Data:

L'energia è una preoccupazione onnipresente ed è impossibile ottimizzare il consumo energetico di un sistema senza considerare il sistema nel suo insieme. Sono stati fatti passi da gigante nell'ottimizzazione dell'implementazione hardware, ma questo non è più sufficiente. L'intero sistema deve essere ottimizzato.

Ciò ha implicazioni di vasta portata, alcune delle quali stanno aprendo la strada verso l’informatica specifica per dominio. Lo spostamento a sinistra gioca un ruolo, ma, cosa ancora più importante, significa che tutte le parti che hanno un ruolo nel consumo energetico totale per un compito definito devono lavorare insieme per raggiungere tale obiettivo.

L’energia sta rapidamente diventando una considerazione di prima classe. "Poiché l'efficienza energetica diventa una preoccupazione fondamentale in tutti i settori informatici, agli architetti viene spesso chiesto di considerare il costo energetico degli algoritmi per la progettazione sia dell'hardware che del software", afferma Guillaume Boillet, direttore senior della gestione del prodotto e del marketing strategico per arteris. “L’attenzione si sta spostando dall’ottimizzazione esclusivamente per l’efficienza computazionale (velocità, throughput, latenza) all’ottimizzazione anche per l’efficienza energetica (joule per operazione). Ciò richiede di considerare fattori come il numero di accessi alla memoria, la parallelizzabilità del calcolo e l’utilizzo di acceleratori hardware specializzati che possono offrire calcoli più efficienti dal punto di vista energetico per determinati compiti”.

Ciò sposta l'attenzione dall'implementazione dell'hardware all'analisi dell'architettura sia dell'hardware che del software. "Durante le fasi successive del flusso di progettazione, le opportunità di ottimizzazione diminuiscono", afferma William Ruby, direttore della gestione del prodotto all'interno del gruppo EDA di Synopsys. “Potresti avere più opportunità di ottimizzazione automatica, ma sei vincolato a un miglioramento percentuale minore. Se si considera la curva dei potenziali risparmi (vedere figura 1), non si tratta di una curva uniforme dall'architettura all'approvazione. C'è un punto di flesso nella sintesi. Prima che il progetto venga mappato in un’implementazione, hai molti più gradi di libertà, ma dopo questo punto di flesso le cose diminuiscono drasticamente”.


Fig.1: Opportunità di risparmio energetico durante le fasi di progettazione. Fonte: sinossi

Il grande ostacolo è che prima del punto di flesso, la potenza diventa dipendente dall’attività e ciò rende l’ottimizzazione automatica molto più difficile. "Durante lo sviluppo RTL, è possibile utilizzare controlli dinamici basati su vettori per scoprire gli sprechi ed eseguire ristrutturazioni logiche, clock gating, operator gating e altre tecniche per ridurli", afferma Qazi Ahmed, principale product manager presso SiemensEDA. “È anche importante capire che l’energia dipende dal caso d’uso e deve essere profilata con i carichi di lavoro effettivi basati sul software per garantire che tutti gli scenari possibili siano coperti. Ciò è particolarmente vero nel contesto del SoC completo, dove l’inviluppo di potenza potrebbe essere completamente diverso da quello che potrebbe mostrare l’analisi basata su vettori sintetici a livello IP”.

“Saranno necessarie una pianificazione, profilazione e ottimizzazione più anticipate”, afferma Tim Kogel, ingegnere principale per la prototipazione virtuale presso Synopsys.

Kogel ha sottolineato vari livelli che devono essere affrontati:

  • A livello di macroarchitettura, per l'analisi dei compromessi di grandi dimensioni e la selezione di elementi di elaborazione dedicati;
  • A livello di microarchitettura, per ottimizzare il set di istruzioni e le unità di esecuzione per l'applicazione target;
  • A livello algoritmico, selezione e ottimizzazione degli algoritmi per l'efficienza computazionale e gli accessi alla memoria, e
  • A livello di software, fornendo feedback agli sviluppatori su come ottimizzare il proprio software in termini di potenza ed energia.

“Ciò richiederà strumenti consapevoli in termini di potenza ed energia per la prototipazione virtuale e lo sviluppo di software per generare i dati, da cui l’implementazione di hardware e software può essere ottimizzata”, ha osservato.

Mappatura del software
Decidere cosa dovrebbe essere presente nel software è un compito iniziale. "Voglio avere un core DSP per scaricare la CPU?" chiede Ruby di Synopsys. “In che modo ciò influisce sul mio consumo energetico? Voglio implementare un acceleratore hardware o voglio eseguire tutte queste funzioni nel software? Il costo energetico del software in esecuzione sulla CPU non è pari a zero”.

Poiché i sistemi diventano sempre più definiti dal loro software, è qui che deve iniziare la considerazione dell’energia. "Il software è un elemento chiave quando si tratta di risparmiare energia e migliorare le prestazioni", afferma Vincent Risson, Senior Principal CPU Architect di Braccio. “Le applicazioni ad alta intensità di calcolo spesso traggono notevoli vantaggi dall'ottimizzazione delle applicazioni. Questo può essere sia statico in termini di librerie altamente ottimizzate, sia di framework dinamici che consentono di indirizzare il calcolo al motore di elaborazione più ottimale. Ad esempio, i dispositivi mobili si sono standardizzati su un'architettura di sistema CPU che fornisce ai processori applicativi prestazioni di elaborazione diverse pur rispettando un ISA e una configurazione comuni. Ciò consente la migrazione dinamica delle applicazioni ai processori ottimali in termini di efficienza. I meccanismi forniti per l’introspezione e la versatilità, forniti dalla combinazione di software e hardware eterogenei, offriranno opportunità per una migliore efficienza in futuro”.

Spesso esiste più di una classe di processori che il software può eseguire. "Possiamo scegliere, in base ai tipi di carichi di lavoro che stiamo vedendo, dove eseguire una determinata applicazione", afferma Jeff Wilcox, collega e CTO del gruppo di ingegneria di progettazione per le architetture SoC client di Intel. “Se supera le esigenze di un nucleo più piccolo, è possibile attivare nuclei più grandi. Sono disponibili telemetria e caratterizzazione del carico di lavoro per cercare di capire dove dovrebbero essere eseguite le cose per essere più efficienti dal punto di vista energetico. Molti dei carichi di lavoro che stiamo vedendo ora sono diversi. Anche se si tratta di agenti simmetrici che lavorano sullo stesso carico di lavoro, hanno dipendenze tra loro. Sempre più carichi di lavoro richiedono agenti asimmetrici, dove abbiamo GPU, NPU, IPU disponibili e dove questi tipi di carichi di lavoro cooperano con la CPU. Questa è una cosa molto più difficile da ottimizzare. Siamo arrivati ​​al punto in cui abbiamo gli strumenti per essere in grado di comprendere le sfide in termini di prestazioni e potenza, ma stiamo ancora costruendo gli strumenti per capire davvero come digerirlo e ottimizzarlo completamente.

La difficoltà qui è che l'architettura del carico di lavoro può dipendere dall'architettura dell'hardware. "Ci sono molti sviluppi nel campo dell'intelligenza artificiale e non è importante solo la dimensione del modello", afferma Renxin Xia, vicepresidente dell'hardware presso Untether AI. “È altrettanto importante come vengono costruiti i modelli e se sono costruiti in modo efficiente dal punto di vista energetico. È più difficile rispondere perché dipende dall'architettura. I costi energetici di un algoritmo in esecuzione su una GPU potrebbero essere molto diversi dal costo energetico di quell’algoritmo in esecuzione su una memoria nell’architettura di calcolo”.

Concentrarsi sul software
Il consenso generale è che nulla di tutto ciò è possibile senza una maggiore cooperazione hardware-software. "Per ottenere questi miglioramenti funzionali è necessario lo sviluppo congiunto di hardware e software", afferma Sailesh Kottapalli, membro senior dell'unità data center di Intel. “Il solo tentativo di farlo in modo trasparente tramite l’hardware sta raggiungendo i suoi limiti. Guarda cosa sta succedendo nell'intelligenza artificiale. Se l'hardware fosse l'unico elemento, non vedremmo la massiccia progressione che stiamo vedendo. Molti di questi sono miglioramenti algoritmici. Con gli algoritmi software, se si riduce la lunghezza del percorso, è possibile ottenere lo stesso risultato con un minor numero di istruzioni e una riduzione del lavoro del software. A volte, quando si ottiene chiarezza su questo, possiamo capire che per quegli algoritmi esiste un nuovo set di istruzioni ottimale, una nuova microarchitettura, e quindi è possibile ottimizzarlo ulteriormente nell’hardware”.

Richiede un grande cambiamento nei flussi di sviluppo del software. "In passato, le architetture e i flussi software erano ottimizzati per la produttività, ovvero processori generici programmati con linguaggi di alto livello, utilizzando gli strumenti software più veloci ed economici", afferma Kogel di Synopsys. “L’orientamento generale era quello di fornire la massima flessibilità e produttività possibile e di ottimizzare solo quanto assolutamente necessario. Questo deve essere risolto in modo da fornire solo la flessibilità necessaria e altrimenti utilizzare implementazioni dedicate”.

Per molte funzioni software, l'accesso alla memoria è il maggior consumatore di energia. "Una funzione software può essere implementata in diversi modi e ciò si traduce in diversi flussi di istruzioni con diversi profili di potenza ed energia", afferma Ruby di Synopsys. “È necessario ponderare o assegnare costi più elevati alle istruzioni di accesso alla memoria. Devi stare attento a come modelli le cose. Anche se si tratta solo della CPU, è necessario modellare i costi dell’energia nel contesto del sistema.”

In futuro, anche l’accuratezza dei risultati potrebbe essere un fattore che può aiutare nell’ottimizzazione. "È possibile ottenere sostanziali risparmi energetici ottimizzando il software per utilizzare meglio le risorse hardware disponibili", afferma Boillet di Arteris. “Ciò include ottimizzazioni del compilatore, refactoring del codice per ridurre la complessità computazionale e algoritmi appositamente progettati per essere efficienti dal punto di vista energetico. Quest’ultimo può essere ottenuto con il calcolo approssimato per applicazioni che possono tollerare un certo livello di imprecisione, come l’elaborazione multimediale, l’apprendimento automatico e l’analisi dei dati dei sensori”.

Analisi
Tutto inizia con l'analisi. "Possiamo creare un modello virtuale del sistema", afferma Ruby. “Poi possiamo definire i casi d’uso, che in questo contesto sono in realtà una sequenza di modalità operative del progetto. Questo non è ancora un software. Hai il sistema descritto come una raccolta di modelli, sia modelli di prestazioni, sia modelli di potenza. E ti fornirà un profilo energetico basato su questi modelli e sul caso d'uso che hai definito. La prossima alternativa è un tipo simile di descrizione del sistema virtuale. Ora, esegui un carico di lavoro software effettivo rispetto a questo. Se vai ancora più in profondità, se vuoi più visibilità, dettagli più fini, puoi prendere la descrizione RTL del disegno, forse non è ancora definitiva, forse è ancora presto, ma finché è per lo più dimenante, puoi metterla su un emulatore ed eseguire il lavoro vero e proprio. Una volta fatto ciò, l'emulatore genererà un database di attività. Esistono funzionalità di analisi energetica orientate all'emulazione che possono acquisire una grande quantità di dati, centinaia di milioni di cicli di clock di dati del carico di lavoro e generare un profilo energetico. C’è una gamma di cose che si possono fare.”

In alcuni casi, potrebbe non essere un periodo di tempo sufficientemente lungo. "La maggior parte delle nostre analisi termiche si basa su analisi a circuito chiuso, basate su dati di silicio, non su simulazioni pre-silicio a causa delle lunghezze di traccia richieste e della quantità di tempo richiesta per l'analisi", afferma Kottapalli di Intel. “Non è possibile simulare per così tanto tempo, per stabilire un profilo termico realistico. Utilizziamo i dati del profilo del silicio, utilizzando diversi tipi di carichi di lavoro e tracce, quindi effettuiamo analisi sulle soluzioni che dobbiamo costruire."

È più facile quando i tempi sono più brevi. "Le decisioni architettoniche fondamentali devono essere considerate tenendo presente una sorta di visione del potere", afferma Ruby. “È necessario un modello di livello superiore e più astratto di tutte le parti del sistema, compresi tutti i core di elaborazione e il sottosistema di memoria, perché il modo in cui è organizzato è davvero, davvero importante. Quanta memoria è realmente necessaria? Queste sono decisioni architettoniche fondamentali. È necessario disporre di alcuni dati di alimentazione associati a questi componenti. Quanta energia consuma la CPU con questo particolare carico di lavoro o quel particolare carico di lavoro? Che dire del core DSP, dell'hardware, della memoria, della rete sul chip: quanto consuma ciascuno di essi durante ogni operazione? Questi sono tenuti a prendere decisioni architettoniche fondamentali”.

Sono necessari molti nuovi strumenti legati all’energia. "Sebbene esistano strumenti EDA per gestire transitori ad alta velocità e densità di potenza elevata, ci sono molte altre sfide", afferma Wilcox di Intel. “Alcune delle altre sfide riguardano dinamiche costanti di tempo più lunghe o come gestire le cose all'interno del SoC. Non ho visto molto nello spazio EDA che sia d'aiuto in questo. Stiamo realizzando strumenti più sviluppati internamente per cercare di sviluppare tali capacità."

Sebbene siano stati sviluppati strumenti per il lato hardware di questi compromessi architetturali, oggi esistono pochi strumenti che possano aiutare dal lato software. "Abbiamo bisogno che i nostri ingegneri software producano il codice corretto il più rapidamente possibile", afferma Ruby. “Ciò che credo sia veramente necessario è una sorta di tecnologia complementare per lo sviluppatore di software. Proprio come disponiamo di strumenti di analisi della potenza RTL per l'hardware, i sistemi di sviluppo software necessitano di una sorta di profilatore di potenza che dica loro quanta potenza ed energia sta consumando questo codice. Dato che viviamo nell'era dell'intelligenza artificiale, sarebbe bello che la tecnologia dell'intelligenza artificiale analizzasse il codice. Ottieni una stima del consumo energetico e alcune tecnologie di intelligenza artificiale potrebbero dire che se ristrutturi il tuo codice, in questo modo puoi risparmiare molta energia.

Conclusione
Il mondo dell’hardware sta colpendo muri legati alla potenza e all’energia. I limiti termici e le preoccupazioni stanno crescendo all’interno di quella comunità. Senza tenerne conto, la funzionalità dell'hardware non può crescere. Ma queste non hanno raggiunto il livello di preoccupazioni a livello di sistema. Fino a quando tutte le parti che contribuiscono al consumo di energia non si siederanno nella stessa stanza e non progetteranno il sistema affinché sia ​​efficiente dal punto di vista energetico, non vedremo vere soluzioni al problema.

C'è anche un secondo aspetto in questo. Anche tutte le persone che producono gli strumenti utilizzati da quelle persone devono entrare nella stessa stanza e sviluppare flussi che consentano a tutti di avere successo. Sebbene ci siano stati alcuni progressi tra l’EDA e il mondo dei sistemi per risolvere alcune delle sfide termiche, ci sono meno progressi a livello architetturale e quasi nessun progresso tra il mondo dell’hardware e quello del software. I prototipi virtuali concentrati sulla funzionalità non sono sufficienti. Devono essere estesi alla potenza e all'energia del sistema, e ciò non può essere fatto senza il coinvolgimento degli sviluppatori del compilatore. C'è un'opportunità nell'ambito dell'informatica specifica per un dominio, perché queste persone stanno prendendo una nuova direzione nell'hardware a causa di questi problemi, e potrebbe essere abbastanza importante per loro fare progressi nei campi adiacenti. Ma tutto sembra restare a lungo nel futuro.

Lettura correlata
Il prezzo crescente dell'energia in chip
Una maggiore quantità di dati richiede un’elaborazione più rapida, il che porta a tutta una serie di problemi, non tutti ovvi o addirittura risolvibili.

spot_img

L'ultima intelligenza

spot_img