Gli acceleratori hardware sono diventati indispensabili per i carichi di lavoro di intelligenza artificiale moderni, dalla formazione di reti neurali massicce all'esecuzione di inferenza in tempo reale sui dispositivi di bordo. Questi chip specializzati raggiungono miglioramenti di ordini di grandezza nelle prestazioni e nell'efficienza energetica sulle CPUs generali-purpose, adattando i loro percorsi di dati e la logica di controllo ai modelli matematici comuni in AI, soprattutto la moltiplicazione di matrice, le convoluzioni e le operazioni vettoriali.

I registri sono gli elementi di memoria più piccoli e veloci all'interno di un processore o di un acceleratore. Siedono direttamente all'interno delle unità di elaborazione, fornendo l'accesso immediato ai dati che vengono attivamente manipolati. Senza una gerarchia dei registri progettata in modo efficiente, anche il più sofisticato acceleratore sarebbe stroncato dalla latenza della memoria, in grado di alimentare le sue unità di calcolo al tasso richiesto.

Comprensione dei registri nei sistemi digitali

Prima di immergersi in usi specifici dell'AI, è utile stabilire quali registri sono e come differiscono da altre tecnologie di memoria. Un registro è un elemento di archiviazione binario, tipicamente implementato con infradito o latches, che può contenere uno o più bit di dati. I registri sono raggruppati in file di registro - i registri che possono essere letti o scritti in parallelo.

Ciò che imposta i registri a parte le cache o la memoria principale è la loro velocità di accesso. Poiché i registri sono fisicamente integrati nello stesso chip delle unità logiche aritmetiche (ALU) e sono solitamente costruiti con logica CMOS statica completamente personalizzata, possono essere letti in un unico ciclo di clock – spesso in un nanosecondo. Questa velocità viene a un costo: i registri richiedono una significativa area die e consumano energia statica.

I registri servono diverse funzioni principali in qualsiasi processore o acceleratore:

  • Riservazione dell'operazione:[ Tengono i valori sorgente che si nutrono in unità aritmetiche durante un'istruzione.
  • Risultato buffering:[] Essi catturano temporaneamente l'output di un calcolo prima che sia riscritto alla memoria o inoltrato ad un'altra unità.
  • Stato di controllo:[] Memorizzano bit di configurazione, impostazioni di modalità e segnali di controllo delle tubazioni che determinano il comportamento del percorso dati.
  • Stato architettonico:[] In un nucleo generale, i registri programmatori-visibili definiscono lo stato della macchina (ad esempio, contatore programma, puntatore stack).

Nel contesto degli acceleratori di AI, l'ultimo punto è spesso meno rilevante perché gli acceleratori non sono solitamente direttamente programmabili da uno sviluppatore di applicazioni, ma il file di registro è fortemente personalizzato per i modelli specifici di calcolo di rete neurale.

Il ruolo dei registri in AI Hardware Accelerators

Gli acceleratori di AI, sia che siano unità di elaborazione grafica (GPU), unità di elaborazione di tensori (TPU), array di gate programmabili sul campo (FPGA), o circuiti integrati specifici per applicazioni personalizzate (ASIC) – hanno un requisito comune: devono elaborare volumi enormi di dati con latenza minima.

Pipelining finemente gonfio

Gli acceleratori di intelligenza artificiale moderni implementano architetture profondamente conduttive, dove un singolo calcolo (come un moltiplicatore) è rotto in più fasi: fetch operands, moltiplicare, accumulare e scrivere indietro. I registri sono posizionati tra ogni fase per tenere i risultati intermedi. Questa tecnica, chiamata pipelining, permette all'acceleratore di avviare una nuova operazione ogni ciclo, anche se ogni singola operazione prende diversi cicli per completare i flussi di cellule.

Alimentazione dati ad alta larghezza

Gli strati di rete neurali operano su tensori: array multidimensionali di numeri. Ad esempio, uno strato convoluzionale può leggere un filtro 3×3 e una patch di una mappa delle caratteristiche di input, quindi calcolare una somma di prodotti. Il numero di operazioni per byte di dati recuperati è relativamente basso, il che significa che l'acceleratore deve fornire dati ad una larghezza di banda estremamente elevata per mantenere i suoi moltiplicatori occupati.

Configurazione e controllo flessibili

Gli acceleratori devono supportare molte architetture di rete neurali diverse: dimensioni di strati variabili, tipi di dati, funzioni di attivazione e strategie di tiling. Piuttosto che il cablaggio duro di questi parametri, i progettisti li memorizzano nei registri di controllo. Un registro di configurazione potrebbe specificare le dimensioni di un kernel di convoluzione, lo strido, la modalità di imbottitura, o il numero di iterations in un loop.

File di registro per acceleratori AI

La progettazione di un file di registro per un acceleratore AI comporta una serie di trade-off: a differenza di un file di registro della CPU, che deve supportare un insieme fisso di registri generali visibili all’ISA, un file di registro dell’acceleratore può essere adattato al modello di flusso di dati del carico di lavoro di destinazione.

File di registro vettoriale

Molti acceleratori adottano un vettore o un paradigma SIMD (Istruzione del segnale, Dati multipli) dove un'unica istruzione opera su più elementi di dati in parallelo. Questi progetti utilizzano file di registro vettoriali - grandi, multi-bancarie che tengono interi vettori (ad esempio, 128, 256, o 512 elementi) - Ogni banca può essere letta in modo indipendente, permettendo all'acceleratore di catturare più elementi vettoriali contemporaneamente.

Memorie Scratchpad vs. File di registro

Un’alternativa comune a un file di registro gestito dall’hardware è una memoria di gratta e vincite gestite dal software (SPM). In alcuni acceleratori, soprattutto quelli che puntano a bassa potenza, il programmatore muove esplicitamente i dati tra la memoria principale e un grattacielo SPUsto locale. I registri sono poi utilizzati solo per i risultati temporanei. Tuttavia, la linea tra un grande file di registro e un piccolo gratta estraibile.

Registra il Rinominazione e il Supporto Hazard

Nei motori di esecuzione fuori ordine (comune in GPU di fascia alta e alcuni acceleratori di AI), il rinominamento del registro è usato per eliminare le false dipendenze. Il file di registro fisico contiene più registri rispetto al set di registro architettonico, permettendo all'hardware di mappare i registri logici a diversi registri fisici per evitare bancarelle.

Considerazioni di progettazione: velocità, area e potenza

Il design dei file di registro è limitato dai tre assi VLSI classici: velocità, area e potenza. Per gli acceleratori AI, gli obiettivi sono estremi. Un file di registro deve essere abbastanza veloce da alimentare un array di moltiplicatori che può utilizzare decine di migliaia di moltiplicatori, tutti in esecuzione a frequenze gigahertz. Un tipico bit di registro a 32 bit implementato in un processo moderno di 7 nm potrebbe consumare circa 0.5 μm2 e disegnare un paio di micro-

Per mitigare questo, gli architetti utilizzano diverse tecniche:

  • Riduzione del porto e del brezza:[] Invece di costruire un unico file di registro monolitico con molti porti di lettura/scrittura, i progettisti si sono divisi in più banche, ognuna con meno porti. Il programmatore assicura che gli accessi simultanei cadano in diverse banche, evitando conflitti bancari.
  • File di registro gerarchici:[ Alcuni disegni usano un piccolo file di registro ultra-veloce (come una cache di registro) per valori frequentemente riutilizzati, supportato da un file di registro più grande e più lento.
  • Gating di potenza:[] Le banche di registro non utilizzate sono spente per salvare la potenza di perdita, che è particolarmente importante negli acceleratori di bordo o di cellulare.
  • Integrazione dei dati:[ Nei progetti di prestazioni estreme, i registri sono uniti direttamente nelle celle di accumulatore di moltiplicatore (MAC). La cella MAC include un registro delle tubazioni e un registro di feedback per l'accumulo di somme parziali.

Registrati in Architettura di Acceleratore Specifico

GPUs (NVIDIA, AMD)

Le GPU sono acceleratori molto paralleli che si affidano a file di registro massicci per supportare migliaia di file contemporaneamente. Ogni multiprocessore di streaming (SM) in una GPU NVIDIA contiene un file di registro con decine di migliaia di registri a 32 bit. Questi registri sono partizionati tra i file di registro (o warps) in un sistema di interruttori a contesto che permette di commutazione filettatura a zero-cost: quando un file di curvatura di accesso a memoria può

Unità di elaborazione del tensore (Google TPU)

I file SRAM (o più grandi) SRAM hanno chiamato il “bump buffer” memorizza i pesi del filtro, e un modulo “configurazione dati sistolica” legge dal gratta e alimenta le righe dei dati nell’array sistolico.

Estensioni del vettore RISC-V (ad esempio, intelligenza SiFive, Esperanto)

L'estensione vettoriale RISC-V (V) fornisce una lunghezza vettoriale flessibile e definita (VLEN). Le implementazioni variano in come mappano i registri del vettore architettonico alle voci dei file di registro fisici. Alcuni usano un unico, monolitico file di registro del vettore di bit VLEN per registro; altri lo dividono in più corsie. I registri in un acceleratore vettoriale sono cruciali per la memorizzazione di vettori durante le operazioni di catena e per tenere registri delle maschere usate.

Acceleratori basati su FPGA

Ogni blocco FPGA (LUT) è accompagnato da un flip-flop (register). In un acceleratore AI implementato su un FPGA, il file di registro è sintetizzato da questi flip-flop. Poiché il tessuto è riprogrammabile, la connettività del registro può essere personalizzata all'esatta progettazione dell'acceleratore. Tuttavia, l'efficienza dell'area dei registri di ASPGA è generalmente più bassa.

Tendenze future: Prossimità e lavorazione in memoria

In questo caso, i modelli di AI crescono in dimensioni e complessità, il costo di trasferire i dati dalla memoria all’acceleratore è diventato il collo di bottiglia dominante. Una direzione promettente è il calcolo quasi-memorio, dove lo storage simile al registro è posizionato fisicamente vicino alle banche di memoria, spesso emergendo come parte di 3D-stacked memoria (ad esempio, HBM).

Un’altra tendenza è l’uso di memoria a mappa register[[]] in acceleratori strettamente accoppiati. In questo schema, il processore CPU o host può leggere e scrivere il file di registro dell’acceleratore come se fosse una regione mappata dalla memoria, permettendo una comunicazione veloce senza interrompere la testa.

Conclusioni

I registri sono un blocco di costruzione fondamentale degli acceleratori hardware AI. Forniscono la memorizzazione di dati veloce e a bassa latenza che consente le tubazioni profonde, i feed di dati ad alta banda, e il controllo flessibile necessario per raggiungere le prestazioni richieste dalle reti neurali moderne.

Per i lettori che cercano una comprensione tecnica più profonda, le seguenti risorse esterne forniscono un contesto aggiuntivo: