Pubblicità

Come indirizzare le RAM Dinamiche (DRAM)

Nei computer cosiddetti “vintage” le RAM rappresentavano un costo non indifferente, dovuto al fatto che la tecnologia di costruzione di tali chip era ancora piuttosto arretrata (anche se già molto avanzata) rispetto all’odierna. Le RAM dinamiche venivano prodotte con capacità piuttosto ridotte che oggi sembrano ridicole ma che al tempo rappresentavano una grande conquista. Il loro costo rispetto alle RAM statiche era decisamente inferiore e ciò era dovuto alla tecnologia costruttiva e all’implementazione che faceva risparmiare silicio. Mentre la RAM statiche mantengono i valori immessi in memoria (fino a che viene mantenuta la tensione di alimentazione ovviamente) senza bisogno di aggiornamenti dal momento che funzionano sul principio del flip-flop quelle dinamiche usano invece la carica dei condensatori per memorizzare i dati. Il problema principale di questi condensatori è la loro bassissima capacità a causa delle minuscole dimensioni che possono assumere all’interno di un chip miniaturizzato e quindi la loro bassa tenuta in termini di tempo della tensione immagazzibata. A causa di ciò è necessario un circuito aggiuntivo all’interno del chip, chiamato circuito di refresh, che mantiene l’imagazzinamento costante all’interno dei micro condensatori.

Le memorie dinamiche, inoltre, usano l’indirizzamento a matrice, suddividendo le celle di memoria in righe e colonne. Con questo accorgimento è possibile in pratica dimezzare le linee fisiche di indirizzamento necessarie anche se il loro indirizzamento diventa un po’ più complesso.

Matrice DRAM
Matrice DRAM

In questo articolo viene spiegato come si fa l’indirizzamento di una memoria dinamica. Se vi interessa c’è un precedente articolo che tratta di un tester per tali tipi di memorie.

Oltre ai normali segnali di Lettura/Scrittura (RW o WE) esistono altri due segnali: RAS e CAS. Il primo (Row Address Strobe) indica alla memoria che si sta fornendo un indirizzo di una riga della matrice, il secondo (Column Address Strobe) indica invece che si sta fornendo un indirizzo di una colonna di suddetta matrice.

MK4116
MK4116

Il bus degli indirizzi infatti è condiviso sia per le righe che per le colonne e, prendendo ad esempio una meoria DRAM classica come la MK4116, è costituito da 7 linee di indirizzo che realizzano un indirizzo completo da 14 bit (16384 posizioni) suddiviso in 7 bit per le righe e 7 bit per le colonne.

Quindi avremo i bit A0..A6 che sono comuni nella matrice.

Le linee di controllo (RAS, CAS, WE o WRITE) funzionano in maniera “negata” ovvero sono attivi quando sono a 0 logico. Normalmente vanno quindi mantenuti ad 1. Si prende quindi la RAM, si fornisce l’indirizzo di riga (ovvero solitamente i primi 7 bit dell’indirizzo reale da raggiungere) si presentano sulle linee A0..A6 e successivamente si porterà la linea RAS a 0, indicando alla memoria di memorizzare tale indirizzo di riga. A questo punto se si deve solo leggere il contenuto della cella basterà fornire l’indirizzo di colonna (i successivi 7 bit dell’indirizzo reale) e portare a 0 la linea CAS. A questo punto il dato memorizzato presente sulla cella indirizzata sarà presentato sul PIN DATA OUT e potrà venir letto. Se invece si desidera scrivere un dato si porterà a 0 la linea WE subito dopo l’impulso di RAS e si immetterà il dato (mantenuto stabile) sulla linea DATA IN, poi si procederà con l’indirizzo di colonna e successivo impulso di CAS.

Immaginiamo di dover iondirizzare la cella 11560, ovvero in binario 0010 1101 0010 1000

Prendiamo i primi 7 bit (010 1000) ed avremo l’indirizzo di colonna
A0 = 0
A1 = 0
A2 = 0
A3= 1
A4 = 0
A5 = 1
A6 = 0

i successivi 7 bit ci daranno invece l’indirizzo di riga

A0 = 0
A1 = 1
A2 = 0
A3= 1
A4 = 1
A5 = 0
A6 = 1

Perchè gli indirizzi alti (HIGH) per la prima sequenza di riga (RAS) ? Perchè in questo modo è possibile sfruttare il page read/write mode delle DRAM, in pratica si fornisce solo l’indirizzo di riga (pagina) e successivamente, senza dover rispecificare lo stesso indirizzo, è possibile indirizzare la colonna con il solo ciclo CAS. Concettualmente si velocizza di molto la lettura/scrittura ed è altrettanto logico che le colonne contigue appartengano alla parte bassa dell’indirizzo, così come le memorizzerebbe in fila un processore (pensate ad esempio alle istruzioni di esecuzione, il flusso va dall’indirizzo più basso a salire). Quindi basta un ciclo RAS e successivi solo di CAS per indirizzare un’intera paginata contigua di memoria.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.