Memory refresh
# Memory refresh

Il memory refresh è il processo periodico che consiste nel leggere e riscrivere i dati in ogni singola cella di una memoria di tipo dinamico, DRAM.

Nelle DRAM ogni dato presente in memoria (bit) è rappresentato dall'assenza o dalla presenza di una carica elettrica all'interno di un piccolo condensatore. Con il passare del tempo la carica all'interno si attenua. Per questo motivo vengono utilizzati i cicli di refresh per mantenere i dati all'interno della memoria, che altrimenti andrebbero persi.

Quando la memoria sta eseguendo un ciclo di refresh non è disponibile ad operazioni di lettura o scrittura per un periodo di tempo. Nelle memorie moderne questo limite è stato superato perché il tempo necessario ad un'operazione di refresh è talmente breve da non riuscire a rallentare le operazioni sulla memoria.

## Come Funziona il memory refresh sulle DRAM

Quando la memoria è in funzione, ogni cella deve essere costantemente ripristinata con un memory refresh.

Il memory refresh deve essere eseguito in una finestra di tempo delineata dal produttore della memoria, questo valore è solitamente nel campo dei millisecondi. Il refreshing della memoria non si sovrappone ai cicli di lettura o scrittura ma usa dei cicli specifici chiamati cicli di refresh che sono generati da contatori separati che possono essere presenti nella circuiteria della memoria o in quella di controllo.

Il processo di lettura nelle DRAM viene definito distruttivo perché alla lettura di una cella l'intera riga viene distrutta. Per evitare che questo accada, c'è una riga che ospita i dati da ripristinare successivamente.

Il ciclo di refresh è simile a quello di lettura ma viene svolto più velocemente perché:

* Per il refresh si ha bisogno solo dell'indirizzo della riga e non della colonna.
* Il dato letto non deve essere caricato sui data bus per essere mandato alla CPU
