| Introduzione
|
|
Questo articolo rappresenta il primo
di una serie dedicata all'approfondimeno delle tecnologie
che stanno alla base delle memorie elettroniche. La sua
funzione è quella di introdurre in un corpus unico
e facilmente leggibile la classificazione che tipicamente
viene fatta delle diverse tipologie di memorie utilizzate
e una sintetica descrizione delle tecnologie più
interessanti (Static RAM, Dynamic RAM, SDRAM
,DDR , Rambus ma anche Cache e Magnetic
RAM), per lasciar spazio ad approfondite analisi nei
numeri successivi della serie. Questo primo mattone andrà
a rappresentare la pietra angolare di quell'edificio che
è il Knowledge-Base sulle memorie che verrà
col tempo edificato qui su Lithium.it. Buona lettura. |
Il concetto di memoria costituisce
un elemento fondamentale nella computazione, si può infatti
dire che un qualsiasi tipo di algoritmo abbia praticamente sempre
bisogno di un qualche tipo di memoria a supporto della sua esecuzione,
al limite anche solo per memorizzare i passi dell'algoritmo
stesso.
Una generica elaborazione prevede infatti 3 tipi di macro-operazioni
di base: la memorizzazione dei dati, lo spostamento dei dati
e la manipolazione (o trasformazione) degli stessi. Seguiamo
ad esempio il flusso operativo di un semplicissimo programma
in linguaggio macchina che esegue la somma di due numeri contenuti
in memoria centrale:
1. MOVE.L
(a0),d0
2. MOVE.L (a1),d1
3. ADD.L d0,d1
4. MOVE.L d1,(a3)
Per l'occasione abbiamo utilizzato il linguaggio Assembler
della famiglia di processori 680x0 di Motorola. Nella prima
istruzione si indica al processore di utilizzare il registro
A0 come puntatore al primo operando. Il puntatore è una
sorta di indice che permette di individuare la locazione di
memoria esterna che contiene a sua volta il valore da utilizzare
nella successiva elaborazione. Questo numero viene prelevato
dalla memoria esterna e viene posto nel registro D0. La stessa
cosa viene fatta per il secondo numero la cui posizione in memoria
è contenuta in A1 e che viene caricato nel registro D1.
L'istruzione 3 esegue la somma aritmetica tra i due operandi
ora contenuti in D0 e D1 e restituisce il risultato in D1. L'ultima
operazione salva il contenuto di D1 in una locazione di memoria
esterna.
Come avete potuto vedere anche una semplice elaborazione
come questa accede 3 volte alla memoria esterna. Ma questa non
è la sola memoria presente nell'algoritmo di cui sopra;
gli stessi registri a0,a1,a3,d0,d1 sono delle memorie e un'altra
particolare memoria, generalmente presente nei processori, è
quella contenente il micro-codice interno al processore che
descrive i passi necessari all'esecuzione delle singole istruzioni.
In conclusione, un'ampissima parte dei transistor dei
chip che animano i nostri computer sono dedicati ad implementare
qualche forma di memoria. Dipendentemente dalle caratteristiche
dei dati da memorizzare, dalla loro quantità e dalle
modalità e performance richieste per l'accesso, queste
memorie assumono una molteplicità di specificazioni diverse
che andremo ad analizzare in questo articolo.
La cella elementare di memoria
Prima
di analizzare le varie tipologie ricordiamo che l'elemento "atomico"
di tutte le memorie digitali è la "cella di memoria".
La cella di memoria è l'apparato elettronico deputato
all'immagazzinamento della più piccola quantità
di informazione manipolabile, ossia il famoso bit. Un bit può
assumere solo il valore logico 1 o 0 (anche detto vero o falso)
che corrisponde poi nel dispositivo elettronico ad una tensione
superiore ad una certa soglia (es: 4,5V) o inferiore ad un'altra
soglia (es: 0,5V). L'altra corrispondenza tipicamente usata
in elettronica per rappresentare l'informazione logica del bit
è quella di attribuire 0 al transistor che non conduce
(off) e 1 al transitor che conduce (on). Le celle elementari
di memoria vengono poi affiancate per formare registri o locazioni
di memoria ampie a piacere, e a sua volta più registri
o locazioni di memoria vengono accorpati per costituire memorie
più ampie e così via in una struttura gerarchica.
Classificazione delle memorie per funzionalità di
accesso.
Una
prima grande ed immediata classificazione dei tipi di memorie
distingue tra memorie a sola lettura (come la memoria del micro-codice
che citavamo in introduzione) che prendono il nome di ROM
(read only memory) e le memorie accessibili in lettura -
scrittura. Qui deve nascere subito un'osservazione: normalmente
si pensa che una memoria con accesso sia in lettura che in scrittura
si possa tranquillamente chiamare RAM. In realtà RAM
significa Random Access Memory e rappresenta già un livello
di classificazione ulteriore che implicitamente suppone che
la memoria abbia una molteplicità di locazioni liberamente
accessibili (random appunto). In realtà esitono molti
tipi di memorie a lettura-scrittura con organizzazioni e funzioni
di accesso differenti.
Nel proseguo analizzeremo le varie tipologie di memoria
più spesso presenti nei processori e nei chip di vario
tipo oltre ai vari standard affermatisi negli anni per la memoria
centrale dell' elaboratore, mi riferisco a dram, sdram, memorie
ddr e rambus. >>