RAM di calcolo - Computational RAM

La RAM computazionale ( C-RAM ) è una memoria ad accesso casuale con elementi di elaborazione integrati sullo stesso chip. Ciò consente di utilizzare la C-RAM come computer SIMD . Può anche essere utilizzato per utilizzare in modo più efficiente la larghezza di banda della memoria all'interno di un chip di memoria.

Panoramica

Le implementazioni più influenti della RAM computazionale sono venute dal Berkeley IRAM Project . Vector IRAM (V-IRAM) combina DRAM con un processore vettoriale integrato sullo stesso chip.

La DRAM con architettura riconfigurabile (RADram) è una DRAM con elementi logici FPGA di calcolo riconfigurabili integrati sullo stesso chip. Le simulazioni SimpleScalar mostrano che RADram (in un sistema con un processore convenzionale) può fornire ordini di grandezza migliori prestazioni su alcuni problemi rispetto alla DRAM tradizionale (in un sistema con lo stesso processore).

Alcuni problemi computazionali imbarazzanti paralleli sono già limitati dal collo di bottiglia di von Neumann tra la CPU e la DRAM. Alcuni ricercatori si aspettano che, per lo stesso costo totale, una macchina costruita con RAM computazionale eseguirà ordini di grandezza più velocemente di un computer tradizionale per scopi generici su questo tipo di problemi.

A partire dal 2011, il "processo DRAM" (pochi strati, ottimizzato per alta capacità) e il "processo CPU" (ottimizzato per l'alta frequenza, in genere il doppio degli strati BEOL della DRAM, poiché ogni strato aggiuntivo riduce la resa e aumenta i costi di produzione, tali chip sono relativamente costosi per millimetro quadrato rispetto alla DRAM) è abbastanza distinto che ci sono tre approcci alla RAM computazionale:

  • iniziando con un processo ottimizzato per la CPU e un dispositivo che utilizza molta SRAM incorporata, aggiungere un ulteriore passaggio di processo (rendendolo ancora più costoso per millimetro quadrato) per consentire la sostituzione della SRAM incorporata con DRAM incorporata ( eDRAM ), offrendo un risparmio di area ≈3x su le aree SRAM (e quindi riducendo il costo netto per chip).
  • iniziando con un sistema con un chip CPU separato e un chip DRAM, aggiungere piccole quantità di capacità computazionale "coprocessore" alla DRAM, lavorando entro i limiti del processo DRAM e aggiungendo solo piccole quantità di area alla DRAM, da fare cose che altrimenti sarebbero rallentate dallo stretto collo di bottiglia tra CPU e DRAM: riempire a zero aree di memoria selezionate, copiare grandi blocchi di dati da una posizione a un'altra, trovare dove (se dovunque) si verifica un dato byte in qualche blocco di dati , ecc. Il sistema risultante—il chip CPU invariato e i chip "smart DRAM"—è veloce almeno quanto il sistema originale e potenzialmente leggermente più economico. Il costo della piccola quantità di area extra dovrebbe essere più che ripagato in risparmi in costosi tempi di test, poiché ora c'è una capacità di calcolo sufficiente su una "DRAM intelligente" per un wafer pieno di DRAM per eseguire la maggior parte dei test internamente in parallelo , piuttosto che l'approccio tradizionale di testare completamente un chip DRAM alla volta con una costosa apparecchiatura di test automatica esterna .
  • iniziando con un processo ottimizzato per la DRAM, modifica il processo per renderlo leggermente più simile al "processo CPU" e costruisci una CPU generica (a frequenza relativamente bassa, ma a bassa potenza e larghezza di banda molto elevata) entro i limiti di quella processi.

Alcune CPU progettate per essere costruite su una tecnologia di processo DRAM (piuttosto che su una tecnologia di processo "CPU" o "logica" specificamente ottimizzata per le CPU) includono The Berkeley IRAM Project , TOMI Technology e AT&T DSP1 .

Poiché un bus di memoria per la memoria off-chip ha molte volte la capacità di un bus di memoria on-chip, un sistema con DRAM e chip CPU separati può avere un consumo energetico molte volte superiore a un sistema IRAM con le stesse prestazioni del computer .

Poiché si prevede che la DRAM computazionale si surriscalda rispetto alla DRAM tradizionale e l'aumento delle temperature del chip determina una perdita di carica più rapida dalle celle di memoria DRAM, si prevede che la DRAM computazionale richieda un aggiornamento DRAM più frequente .

Processore in/near-memory

Un processore in/near-memory (PINM) si riferisce a un processore del computer (CPU) strettamente accoppiato alla memoria , generalmente sullo stesso chip di silicio .

L'obiettivo principale dell'unione dei componenti di elaborazione e memoria in questo modo è ridurre la latenza della memoria e aumentare la larghezza di banda . In alternativa, la riduzione della distanza che i dati devono essere spostati riduce i requisiti di alimentazione di un sistema. Gran parte della complessità (e quindi del consumo energetico ) negli attuali processori deriva dalle strategie per evitare gli stalli della memoria.

Esempi

Negli anni '80, una minuscola CPU che eseguiva FORTH è stata fabbricata in un chip DRAM per migliorare PUSH e POP. FORTH è un linguaggio di programmazione orientato allo stack e questo ne ha migliorato l'efficienza.

Il transputer aveva anche una grande memoria su chip dato che è stato realizzato nei primi anni '80, rendendolo essenzialmente un processore in memoria.

I progetti PIM degni di nota includono il progetto Berkeley IRAM (IRAM) presso l' Università della California, il progetto Berkeley e lo sforzo PIM dell'Università di Notre Dame .

Tassonomia PIM basata su DRAM

I progetti near-memory e in-memory basati su DRAM possono essere classificati in quattro gruppi:

  • Gli approcci a livello DIMM posizionano le unità di elaborazione vicino ai chip di memoria. Questi approcci richiedono modifiche minime o nulle nel layout dei dati (ad es. Chameleon e RecNMP ).
  • Gli approcci a livello di livello logico incorporano unità di elaborazione nello strato logico delle memorie stack 3D e possono beneficiare dell'elevata larghezza di banda delle memorie stack 3D (ad es. TOP_PIM )
  • Gli approcci a livello di banca posizionano le unità di elaborazione all'interno dei livelli di memoria, vicino a ciascun banco. UPMEM e il PIM di Samsung sono esempi di questi approcci
  • Gli approcci a livello di sottoarray elaborano i dati all'interno di ogni sottoarray. Gli approcci a livello di Subarray forniscono il più alto parallelismo di accesso ma spesso eseguono solo operazioni semplici, come operazioni bit per bit su un'intera riga di memoria (ad esempio DRISA ) o l'elaborazione sequenziale della riga di memoria utilizzando un'ALU a mondo singolo (ad esempio Fulcrum )

Guarda anche

Riferimenti

Bibliografia