MEMORIE
Uno dei principali vantaggi dei sistemi digitali rispetto a
quelli analogici è la possibilità di memorizzare facilmente
grandi quantità di informazioni digitali o di dati per periodi
brevi o lunghi. Questo li rende molto versatili e facilmente
adattabili a varie situazioni.
Un computer digitale deve per poter funzionare essere in
grado di immagazzinare numerose informazioni, relative a numeri
da utilizzare per eseguire dei calcoli oppure dei dati da
utilizzare per effettuare un tipo di operazione piuttosto che
un'altra; la possibilità di memorizzare dei dati temporanei che
sono il risultato di una certa operazione e che possono servire a
breve distanza di tempo per poter effettuare una successiva
operazione.
Nel caso dei computer occorre anche conservare anche le
istruzioni che il computer dovrà in tempi sequenziali eseguire.
La parte del computer che provvede a questa operazione di
conservazione dei dati è la "MEMORIA".
Affronteremo lo studio, ma soprattutto la conoscenza, dei
tipi più comuni di dispositivi e sistemi che vengono utilizzati
per la realizzazione di una memoria.
Il flip-flop è il più immediato dispositivo di memoria
elettronica. Più dispositivi FF collegati in modo da formare un
registro possono venire usati come elementi per la memorizzazione
di
informazioni
e
il
successivo
trasferimento
ad
altri
dispositivi.
I dispositivi che si ottengono sono elementi ad alta
velocità che prendono il nome di "REGISTRI" e che vengono
utilizzati molto all'interno di un computer digitale.
L'avanzata tecnologica ha consentito di realizzare un gran
numero di FF in un piccolo spazio consentendo così la
realizzazione di memorie sempre più capaci e sempre meno costose.
I dati digitali possono anche venire memorizzate anche come
cariche su condensatori e vi è un tipo importante di memorie
elettroniche che utilizza questo principio per ottenere grandi
densità di memorizzazione con un basso consumo di potenza.
Un altro metodo di memorizzazione è quello che utilizza dei
dispositivi magnetici (nuclei magnetici, nastri dischi, memorie a
bolla).
Le memorie elettroniche vengono utilizzate all'interno del
computer perchè sono in continuo scambio con l'unità centrale di
elaborazione durante l'esecuzione di un programma; il programma
ed i dati vengono di solito memorizzati nella memoria interna.
Occorre
anche
tenere
presente
che
queste
memorie
elettroniche, anche se in grado di immagazzinare un notevole
quantitativo di dati, sono relativamente costose per poterli
utilizzare come dispositivi di memoria di massa, cioè di memoria
esterna al computer in grado di poter conservare milioni di dati
senza necessitare di una potenza elettrica.
Di norma la memoria di massa può anche essere relativamente
lenta e quindi può essere usata per memorizza programmi e dati
1
non
utilizzati
normalmente
dal
computer;
vengono
invece
trasferite nella memoria interna solo quando il computer lo
richiede.
Vi sono alcune caratteristiche e definizioni che possono
risultare utili:
Una parola contenuta in una memoria è detta "word" e se
questa viene definita "byte" sarà di 8 bit.
Si definisce capacità di una memoria la quantità di "bit"
che questa può immagazzinare; questa normalmente è una potenza di
2 anche se nell'uso comune si arrotonda al numero intero. Ad
esempio dire che una memoria ha una capacità di "2 K" non vuol
dire che può immagazzinare duemila bit ma invece "2048" bit.
La memoria può essere organizzata a parola anche se la
capacità si riferisce sempre al numero di celle elementari.
Potremo avere quindi una memoria da "4 K" cioè 4096 bit
organizzata ad esempio
1024 x 4
512 x 8
Un altro elemento è l’indirizzo cioè il numero che
identifica la locazione di una parola nella memoria. Ogni parola
memorizzata in un dispositivo o sistema di memoria ha un
indirizzo unico. Gli indirizzi vengono espressi come numeri
binari, anche se spesso vengono indicati espressioni in numeri
"ottali" "esadecimali" "decimali".
Ovviamente la memoria deve potersi scrivere e leggere, per
cui avremo delle operazione di scrittura e di lettura.
L'operazione di scrittura si riferisce al caso in cui una
parola proveniente dal mondo esterno viene posta in una locazione
di memoria. E' evidente che ogni operazione di scrittura in una
data locazione cancellerà la precedente parola contenuta in
quella locazione.
L'operazione di lettura consente di rivelare il contenuto
di una locazione di memoria e quindi di poterla trasferire in un
altro dispositivo. L'operazione di lettura non cancella il
contenuto della cella di memoria.
Un elemento importante che caratterizza una memoria è il
tempo di accesso, che fornisce una misura della velocità
operativa di un dispositivo di memoria. In pratica è il tempo
necessario per effettuare una operazione di lettura. Questo tempo
va calcolato dall'istante in cui la memoria riceve un nuovo
indirizzo e l'istante in cui il dato contenuto nella casella di
memoria indirizzata risulta disponibile all'uscita della memoria.
Un altro elemento caratteristico di una memoria è il suo
legame con l'alimentazione. Vi sono pertanto memorie volatili e
non volatili. Per poter funzionare il dispositivo richiede
l'applicazione di una potenza elettrica.
Se la memoria è del tipo volatile al momento in cui viene a
mancare la potenza elettrica tutti i dati memorizzati vengono
perduti. Nel caso di memoria non volatile la mancanza di
alimentazione non è motivo di perdita dei dati memorizzati.
Per quanto riguarda le modalità di accesso al contenuto di
una memoria possiamo avere "memorie ad accesso casuale " e
2
"memorie ad accesso sequenziale". Le prime dette comunemente
"RAM" sono caratterizzate dal fatto che la locazione della parola
non ha effetto sul tempo richiesto per la lettura o la scrittura
in tale locazione. In pratica il tempo di accesso è lo stesso per
tutti gli indirizzi della memoria.
Nel tipo di memoria sequenziale il tempo di accesso non è
costante, ma varia a seconda della locazione indirizzata.
Una
particolare parola memorizzata viene localizzata procedendo in
sequenza attraverso tutte le parole che la precedono finchè non
viene raggiunto l'indirizzo relativo alla parola desiderata.
Vi sono delle memorie che possono essere lette e scritte
mentre ve ne sono altre che possono essere solo lette. Queste
ultime dette "ROM" (read only memory) rappresentano una notevole
classe di memorie a semiconduttori. Questo tipo di memoria viene
normalmente scritta in fabbrica.
Altro
elemento
che
caratterizza
una
memoria
è
la
possibilità di conservare il dato per un tempo indefinito anche
se non alimentate; avremo perciò
"memoria statica"
"memoria dinamica"
Nella memoria statica i dati scritti in essa restano
permanentemente
memorizzati
finchè
il
dispositivo
viene
alimentato.
Nel caso dinamico i dati anche con l'alimentazione inserita
i dati non rimangono memorizzati in modo permanente, per
conservare
i
dati
occorre
riscriverli
periodicamente,
quest'operazione viene detta di "refresh".
A parte le differenze viste che caratterizzano le varie
memorie vi sono dei principi operativi di base che sono comuni a
tutti i tipi di memorie.
Consideriamo un blocco corrispondente ad una memoria e
consideriamo questi elementi che consentono l'utilizzazione del
dispositivo.
Avremo dei fili che servono a selezionare l'indirizzo di
memoria per una operazione di lettura o di scrittura (normalmente
indicati come Ao,A1,A2,......An).
Avremo un filo che consente la selezione di una
operazione di lettura o di scrittura ( normalmente indicato come
R/W).
Avremo dei fili che servono a fornire i dati in ingresso o
in uscita (normalmente lo stesso filo viene utilizzato per il
dato in ingresso e in uscita), vengono indicati come I/O.
Avremo un filo che consente di abilitare la memoria in modo
che possa rispondere agli ingressi di indirizzo ed al comando di
lettura/scrittura (normalmente indicato come CS) chip select.
3
Ingressi dati
Comando
Lettura/scrittura
Ingressi
indirizzo
Memoria
16x4
Abilitazione
memoria
Uscite dati
Per quel che riguarda la tecnologia di produzione delle
memorie a semiconduttore vi sono due tipologie possibili
-memorie bipolari (realizzate con transistor bipolari)
-memorie Mos (realizzate con Mosfet)
Le
varie
tecnologie
di
realizzazione
delle
memorie
determinano prestazioni e caratteristiche diverse, per un
confronto si utilizza il seguente criterio:
a) DENSITA' (capacità di bit memorizzabili)
b) VELOCITA' (tempo di accesso)
c) POTENZA ( watt necessari per ogni bit memorizzato)
d) Costo per bit
e) IMMUNITA' al rumore
Le memorie bipolari impiegano resistori, diodi, transistori
bipolari per la loro realizzazione. La notevole complessità della
circuiteria bipolare limita notevolmente la capacità di questo
tipo di memoria.
Sono caratterizzate da un'alta velocità, una limitata
capacità, un notevole consumo di potenza ed una relativamente
bassa immunità al rumore oltre che un notevole costo. Le
memorie
Mos utilizzano la tecnologia Mos a canale N che consente una
notevole capacità ad un costo notevolmente basso ed a bassi
consumi di potenza.
I dispositivi di memoria CMOS sono caratterizzati da un
basso consumo di potenza fra tutte le tecnologie. Hanno anche una
notevole immunità al rumore. Grazie ai continui progressi della
tecnologia
che
ha
consentito
di
eliminare
molti
degli
inconvenienti e quindi tende a coprire il mercato delle memorie.
4
MEMORIE A SOLA LETTURA
Questo tipo di memoria a transistor viene utilizzato per
contenere dei dati che non vengono variati. Normalmente i dati
vengono scritti durante il processo di fabbricazione, in qualche
caso i dati possono venire inseriti in modo elettrico.
Questo
processo di inserimento dei dati viene chiamato programmazione o
bruciatura della ROM. Alcune ROM non possono essere modificate
una volta che sono state scritte altre invece possono venire
cancellate e riprogrammate tutte le volte che si desidera.
Il principale impiego di una ROM è la memorizzazione di
programmi per microcomputer. Poichè tutte le ROM sono di fatto
delle memorie non volatili questi programmi non vanno perduti
quando il computer viene spento.
Lo schema di una ROM è illustrata in figura
In esso vediamo i fili corrispondenti agli ingressi di
controllo, a quelli di indirizzo e le uscite dei dati. Le uscite
sono normalmente del tipo TRISTATE per consentire la connessione
di più chip al medesimo bus di dati per espansioni di memorie.
Normalmente sono memorie con parole di 4 o 8 bit.
L'ingresso di controllo "CS" è quello che consente la
selezione del chip che in pratica consente la connessione della
memoria mediante il sistema di TRISTATE. Parecchi produttori
utilizzano altri modi per indicare la stessa funzione; ad esempio
CE (chip enable) oppure OE (output enable).
5
Per leggere la parola sono necessarie due cose: applicare il
numero binario corrispondente all'indirizzo della parola che si
desidera leggere e poi attivare gli ingressi di controllo.
L'architettura interna di una ROM è notevolmente complessa
ma d'altronde non è necessario conoscerne a fondo i dettagli.
In essa si distinguono quattro parti fondamentali
-il decodificatore di riga
-il decodificatore di colonna
-la matrice dei registri
- i buffer di uscita
I
decodificatori
di
indirizzo
che
essendo
la
ROM
organizzata a matrice risulterà costituito da una parte che serve
ad
indirizzare
le
righe
ed
una
parte
che
consente
l'indirizzamento delle colonne. A ciascuno di questi due
componenti l'indirizzo corrisponderà un decodificatore (quindi di
riga e di colonna).
I registri che costituiranno la cella di memoria la cui
dimensione
corrisponderà
alla
lunghezza
della
parola,
si
troveranno
in
corrispondenza
all'incrocio
dell'indirizzo
decodificato di riga e di colonna. I buffer di uscita che vengono
attivati dagli ingressi di controllo consentono di collegare i
dati contenuti nei registri interni con i fili di uscita.
Per un suo funzionamento la ROM, ha bisogno di tre
elementi:
a) l'indirizzo
b) la selezione
c)l'abilitazione
successivamente a questi tre elementi si potrà disporre dei
dati in uscita; vi sarà quindi na temporizzazione di questi
elementi.
E' ovvio che ci sarà un ritardo di propagazione fra
l'istante in cui viene applicato l'indirizzo e l'istante in cui i
dati possono essere presenti in uscita, allorchè si attiva il
ciclo di lettura.
Questo ritardo di tempo costituisce quello che è il "tempo
di accesso"; l'andamento grafico dei tempi citati può essere del
tipo indicato in figura
6
Dal momento in cui cominciano ad essere applicati i segnali
corrispondenti all'indirizzo passerà un certo tempo perchè tutti
i fili relativi contengono il livello nuovo; quando tutti i fili
hanno raggiunto questa posizione avremo la condizione di
"indirizzo valido", da questo momento la circuiteria interna
inizia la decodifica fino al raggiungimento della registro
corrispondente alla casella desiderata e quindi inviare i dati al
buffer di uscita. A questo punto possiamo inviare il comando di
controllo che seleziona la memoria (ad esempio il CS) o OE che
determina il passaggio dei fili di uscita dalla condizione di HiZ (alta impedenza del tipo TRISTATE) a quella di dato valido.
Questo tempo che viene chiamato "TEMPO DI ACCESSO" è attualmente,
a seconda del tipo e della tecnologia della memoria, dell'ordine
delle decine di nanosecondi.
Nel campo delle memorie a sola lettura, quindi ROM si
devono anche considerare altri tipi di memoria che pur non
essendo scritte in fabbrica sono cancellabili con notevole
difficoltà. Si tratta delle "PROM" che può scrivere l'utente ma
non può più cancellare, si tratta delle "EPROM" che può scrivere
l'utente con una certa difficoltà e può cancellare sempre
l'utente con difficoltà, si tratta delle "EEPROM" che può
scrivere e cancellare l'utente sempre con qualche difficoltà.
Cominciamo con le ROM che vengono programmate in fabbrica
su richiesta specifica dell'utente. Per la scrittura si utilizza
il metodo delle maschere esattamente come se si trattasse della
realizzazione
del
circuito
integrato.
Questo
tipo
di
realizzazione
a
maschere
è
un
procedimento
produttivo
notevolmente costoso e quindi si giustifica solo se si tratta di
produrre una quantità considerevole di memorie ROM con lo stesso
contenuto.
Tuttavia si trovano in commercio delle ROM già prodotte ma
solo per tipi di applicazioni generiche che rivestono una grande
applicazione sul mercato (es. Dispositivi generatori di caratteri
per visualizzatori). L'utente che richiede la realizzazione di
7
una ROM deve essere certo che l'applicazione che richiede quella
data memoria non necessiti di alcun cambiamento altrimenti
occorrerà ricostruire una nuova ROM con tutte le spese relative
ad una nuova realizzazione.
Vi sono varie tipologie di memorie ROM con varie capacità e
con alcune possibilità di circuiteria di controllo.
Avremo ad esempio la memoria 74187 che è una ROM 256x4 con
un tempo di accesso di soli 40 nsec, questa dispone anche di
uscite a collettore aperto, lo schema è indicato in figura
In alternativa a queste memorie vi sono quelle a Mos dove
il transistor bipolare è sostituito da un transistor MOSFET. La
TMS47256 è una versione NMOS con una capacità di 32Kx8, lo schema
è indicato in figura
la memoria dispone di uscite del tipo TRISTATE per consentire
l'interfacciamento con un bus di dati. Uno degli ingressi di
controllo consente anche di passare dallo stato di funzionamento
normale a quello di "attesa" detto "STANDBY" in cui si ha un
consumo di potenza notevolmente ridotto. Vi è anche la versione
CMOS con un consumo di potenza in attesa notevolmente inferiore (
da 82 mW della versione NMOS a soli 2,8 mW della versione CMOS).
8
Per superare questo inconveniente ed anche nei casi di
messa a punto di una determinata apparecchiatura o nel caso di
una
piccola
produzione
che
non
riesca
ad
ammortizzare
l'investimento relativo alla produzione di una ROM programmata,
può essere utile ricorrere ad una "PROM"
Questo
tipo
di
memoria
viene
realizzato
con
delle
connessioni fusibili che possono essere programmate dall'utente e
non dal costruttore in fase di produzione. una volta programmata
la PROM diviene a tutti gli effetti come una ROM che nel senso
che non può più essere programmata.
La struttura di una PROM è molto simile a quella di una ROM
con una connessione della base da poter interrompere al fine di
programmare un "1" o uno "0". Queste connessioni di base vengono
realizzate con dei filamenti sottili che sono tutti intatti nella
memoria realizzata dal costruttore. L'utente non deve fare altro
che "bruciare" quei filamenti in modo selettivo.
Una volta interrotta la connessione è ovvio che non può più
venire ripristinata. Normalmente questa scrittura non viene
effettuata in modo manuale a causa del notevole tempo necessario;
si utilizzano degli strumenti programmatori che consentono di
scrivere una prom in poco tempo.
Un esempio di PROM la 74186 una 64x8 con tempo di accesso
di soli 50 nsec, altro esempio TMS27P64 una NMOS da 8Kx8 con
tempo di accesso di 250 nsec.
Passiamo ad un altro tipo di memoria, che una volta
programmata risulta del tipo non volatile; si tratta delle
memorie "EPROM", infatti dopo la programmazione può conservare i
dati per un tempo indefinito anche se viene tolta l'alimentazione
per un tempo anch'esso indefinito. La memoria può essere
programmata dall'utente utilizzando delle apparecchiature non
particolarmente costose.
Per la scrittura verranno utilizzate
delle tensioni di livello superiore a quello di alimentazione
normale (es. 25 Volt) inviate ad un ingresso apposito per
un tempo indicato dal costruttore. C'è da precisare che il
processo di programmazione non può essere effettuato sul circuito
di impiego della memoria da va effettuato fuori dal circuito,
appunto utilizzando l'apparecchiatura prima citata. L'operazione
di scrittura, anche utilizzando queste apparecchiature citate,
richiede alcuni minuti, mentre una eventuale programmazione
manuale richiederebbe alcune ore.
Una volta che la EPROM è stata programmata, può essere
cancellata soltanto esponendo la memoria, che è dotata di una
finestrella di quarzo nella parte superiore, ad una luce
ultravioletta per un dato tempo. La memoria viene cancellata
completamente, cioè non è possibile cancellare in modo selettivo
una sola cella di memoria. Le EPROM sono disponibili in una ampia
varietà di capacità, si va dai 16 K al Megabit con varie velocità
di accesso. Consideriamo una EPROM classica la 2716 che è una
2Kx8 costruita dalla Intel, lo schema logico è quello di figura
9
come si vede vi sono 11 fili necessari per l'indirizzo, otto fili
di uscita per i dati; vi sono anche due fili di alimentazione che
nell'uso normale vengono collegate all'alimentazione 5 Volt, nel
caso di programmazione uno di questi fili va collegata ad una
alimentazione molto più alta dell'ordine di 25 Volt.
I due fili di ingresso hanno due funzioni, una è quella che
permette di selezionare il chip di memoria, l'altro consente di
porre in STANDBY la memoria portando il consumo ad un valore di
132 mW anzichè 525 mW corrispondenti all'uso normale.
A differenza della cancellazione la scrittura invece è
selettiva cioè noi possiamo scrivere soltanto una locazione, la
sequenza da seguire è la seguente (consideriamo il circuito di
figura 11.53 tocci:
in esso vediamo un contatore o degli interruttori in grado di
fornire un numero binario corrispondente all'indirizzo della
casella di memoria che si desidera scrivere, una serie di otto
interruttori in grado di fornire la parola che si vuole scrivere
10
all'indirizzo selezionato ed un circuito monostabile in grado di
fornire un impulso la cui larghezza corrisponda a quanto indicato
dal costruttore come impulso di programmazione.
I passi richiesti sono
a) applicare l'indirizzo agli ingressi desiderati
b) applicare la parola che si vuole scrivere
c) porre ad un livello logico "1" il filo di controllo "OE"
d) avviare il monostabile tramite il pulsante che invierà
l'impulso all'entrata "CE".
Un ulteriore progresso nel campo delle memorie "non
volatili" è rappresentato dalle "EEPROM". Queste memorie vanno
programmate con le stesse modalità delle EPROM ma sono
cancellabili elettricamente. Questo consente due vantaggi
a) è possibile cancellare la memoria senza uno spostamento del
chip dal circuito
b) è possibile cancellare e riprogrammare una singola cella di
memoria, sempre senza rimuovere il chip dal circuito.
Queste memorie, come detto, richiedono per la loro
programmazione delle tensioni particolari, quindi se vogliamo
programmarli senza una loro rimozione dal circuito occorre
predisporre una circuiteria appropriata.
MEMORIE LETTURA/SCRITTURA
In questo settore consideriamo delle memorie che si possono
scrivere e leggere con la stessa rapidità consentendo quindi una
facile gestione da parte di un calcolatore; ad esempio porre in
esse dei dati temporanei, parti di programma ed altri usi di tipo
temporaneo.
Normalmente in queste memorie il tempo di lettura quasi
coincide con quello di scrittura ed entrambi sono molto brevi
(dell'ordine della decina di nanosecondi).
Vengono
genericamente
chiamate
"RAM"
(random
access
memory). Vengono impiegate nei computer per la memorizzazione
temporanea di programmi e di dati. Il contenuto delle varie
locazioni di memoria viene modificato continuamente dal computer
durante l'esecuzione di un programma. Le RAM sono delle memorie
dette volatili, quindi lo spegnimento dell'apparecchiatura ne
cancella il contenuto a meno che non si preveda una alimentazione
a batteria che continui ad alimentare la memoria al cessare di
quella generale. Per tale tipo di impiego occorre disporre di
memorie che prevedano il funzionamento in "standby" e che inoltre
in questa condizione consumino poca potenza.
Gli aspetti che caratterizzano le RAM sono del tutto simili
a quelli delle ROM.
Le capacità delle RAM sono molto varie, vanno da pochi
Kilobit ad centinaia di megabit.
Un esempio di circuito logico di RAM è illustrato in
figura, dove sono evidenziati due situazioni; vediamo infatti un
primo che risulta del tutto simile ad una ROM, il secondo caso
11
presenta invece una memoria che presenta i fili relativi ai dati
con l'indicazione I/O.
In questo secondo esempio abbiamo cioè un dispositivo che
presenta lo stesso filo per far entrare ed uscire i dati in
memoria.
Per quel che riguarda le RAM c'è da evidenziare due
tipologie caratteristiche, la distinzione fra "RAM STATICA" e
"RAM DINAMICA".
La ram statica può memorizzare i dati finchè il chip viene
alimentato, ciascuna cella di memoria si deve intendere come un
flip-flop che conserva indefinitivamente il suo stato a meno che
non venga tolta l'alimentazione.
Le ram dinamiche memorizzano i dati come cariche elettriche
in un condensatore; di conseguenza il dato tende a scomparire a
causa della scarica lenta ma inevitabile del condensatore; quindi
è necessario ripristinare il dato periodicamente (in pratica
occorre ricaricare il condensatore).
Il mercato produce memorie ram del tipo statico sia con
tecnologia bipolare che MOS (NMOS e CMOS). La tecnologia bipolare
presenta il vantaggio della velocità, anche se gli ultimi
progressi nel campo dei Mos ha consentito una elevazione notevole
della velocità dei tipi CMOS.
Un aspetto importante delle RAM è la temporizzazione che la
riguarda; infatti i chip di memoria si interfacciano alla CPU e
devono essere molto veloci per consentire alla CPU di poter
leggere e scrivere ogni volta che lo richiede l'esecuzione del
programma;
è
importante
quindi
conoscerne
le
prestazioni
temporali.
Le varie memorie non hanno le stesse caratteristiche di
temporizzazione, ma sono abbastanza simili.
Analizziamo le varie forma d'onda relative ad un ciclo di
lettura,riportate nella parte a) della figura
12
vediamo le forme d'onda relative agli indirizzi al comando R/W,
al comando CS ed a quello relativo ai dati.
La sequenza dei dati inizia
con l'invio dell'indirizzo
relativo alla casella di memoria da leggere, in questo istante il
comando CS è inattivo e quindi la memoria non risponde a questo
indirizzo.
Il filo corrispondente a R/W è alto e quindi in comando
"READ",
Le uscite dati si troveranno nello stato "ALTA IMPEDENZA"
finchè CS è nello stato alto.
Trascorso un certo intervallo di tempo sufficiente perchè
si abbia la stabilizzazione dei dati relativi agli indirizzi, la
linea CS viene attivata portando il livello ad un valore logico
"BASSO". Trascorso un certo tempo il dato valido compare in
uscita.
13
Il passaggio del livello di CS ad un valore alto riporta
dopo un certo tempo i livelli ad un valore "ALTA IMPEDENZA" dei
fili dei dati.
Analizziamo le varie forma d'onda relative ad un ciclo
di scrittura,riportate nella figura precedente b).
Vediamo le forme d'onda relative agli indirizzi al comando
R/W, al comando CS ed a quello relativo ai dati.
La sequenza dei dati inizia
con l'invio dell'indirizzo
relativo alla casella di memoria da scrivere, in questo istante
il comando CS è inattivo e quindi la memoria non risponde a
questo indirizzo.
Il filo corrispondente a R/W è alto e quindi in comando
"READ",
Le uscite dati si troveranno nello stato "ALTA IMPEDENZA"
finchè CS è nello stato alto.
Trascorso un certo intervallo di tempo sufficiente perchè
si abbia la stabilizzazione dei dati relativi agli indirizzi, la
linea CS viene attivata portando il livello ad un valore logico
"BASSO", contemporaneamente viene portato ad un livello basso
anche il comando R/W, attivando quindi il comando di scrittura
(WRITE). Trascorso un certo tempo il dato valido compare in
uscita.
Il passaggio del livello di CS e di R/W ad un valore alto
riporta dopo un certo tempo i livelli ad un valore "ALTA
IMPEDENZA" dei fili dei dati.
Passiamo ad analizzare l'altro tipo di memoria volatile,
forse anche più volatile delle RAM statiche, le "RAM DINAMICHE";
queste vengono fabbricate con la tecnologia cmos e sono preferite
per le alte capacità di memoria e per i bassi consumi di potenza.
Queste, a differenza di quelle statiche che memorizzano il
dato in una cella formata essenzialmente da un flip-flop,
utilizzano per la conservazione del dato delle piccole il cui
valore e dell'ordine di qualche picofarad.
Queste capacità tendono inevitabilmente a scaricarsi dopo
un certo tempo, per cui queste memorie richiedono una ricarica
periodica delle celle di memoria, il cosiddetto "REFRESH". Questo
rinfresco deve avvenire all'incirca ogni 2 millisecondi, un tempo
superiore mette a rischio l'esattezza del dato.
Questa operazione di rinfresco è uno svantaggio relativo a
questo tipo di memoria rispetto a quelle statiche. Questo
richiede una circuiteria addizionale per effettuare questa
operazione, naturalmente è una operazione da effettuare durante
gli intervalli di tempo in cui non viene usata la memoria sia per
la lettura che per la scrittura.
Nelle
ultime
realizzazioni,
per
memorie
di
piccola
capacità, la circuiteria di rinfresco viene integrata all'interno
della stessa memoria. Per memorie di capacità grandi che vengono
utilizzate per la realizzazione di computer si utilizzano dei
chip realizzati esclusivamente per questa operazione che sono dei
controllori di memoria dinamica, che disponendo di tutta la
logica necessaria, liberano il progettista da tutti questi
problemi connessi con questa operazione di rinfresco.
14
Per sistemi piccoli dove non si giustifica la complessità
di queste operazioni è preferibile l'uso di una memoria statica,
ma per sistemi complessi e non la necessità di grandi capacità di
memoria è inevitabile l'uso di memorie dinamiche che in ogni
tempo rappresentano il massimo della capacità relativa ad una
memoria realizzabile in quel dato tempo.
Le memorie dinamiche, come detto, hanno una struttura molto
semplice e quindi consentono una densità molto più alta, che può
essere anche quattro volte quella di una statica; questo porta
quindi ad una quantità di dati memorizzabili molto più alta e
quindi di conseguenza un costo notevolmente più basso.
Anche la minore potenza richiesta è un ulteriore vantaggio
realizzativo e di costo per la possibilità di realizzare degli
alimentatori più piccoli.
Molte delle ram dinamiche sono organizzate come celle ad un
solo bit; risulta quindi pratica una organizzazione della memoria
a matrice, quindi avremo metà degli indirizzi come righe e
l'altra metà come colonne. Avremo un decodificatore relativo alle
righe ed uno relativo alle colonne. vi sarà un solo filo attivo
all'uscita del decodificatore di riga ed uno in quello di
colonna, la cella all'incrocio di questi due fili sarà quella
attivata.
Per ottenere delle parole di più bit occorrerà collegare
più memorie nel modo espansione come vedremo più avanti.
Quanto detto è evidenziato in figura
Una
figura
cella
simbolica
di
memoria
15
dinamica
è
indicata
in
l'esempio è prima di dettagli circuitali, quì si possono
solo evidenziare le modalità più importanti del funzionamento,
relativo alla lettura ed alla scrittura di una memoria dinamica.
Utilizzando gli interruttori è possibile gestire la carica
del condensatore e quindi la scrittura della cella e la lettura
utilizzando l'amplificatore che limita la quantità di carica
persa dal condensatore durante la lettura.
Il circuito della figura precedente evidenzia anche il
fatto che al momento della lettura del dato il condensatore viene
collegato all'uscita dell'amplificatore e quindi si ottiene la
rigenerazione della tensione ai capi del condensatore; avremo
infatti, se il dato contenuto nel condensatore risulta superiore
alla tensione di riferimento presente al morsetto negativo
dell'amplificatore, che l'uscita dello stesso amplificatore si
porta ad una tensione elevata che corrisponde al livello "1",
quest'uscita si trova collegata anche al condensatore e quindi si
avrà una ricarica del condensatore al valore di tensione piena
anche se il condensatore si era scaricato parzialmente, purchè il
livello raggiunto non risulta inferiore a quello di riferimento.
Se il valore di tensione ai capi del condensatore risulta
basso, in particolare inferiore al valore della tensione di
riferimento, la tensione presente all'uscita dell'amplificatore
risulterà bassa, praticamente zero volt, questa tensione, come
nel caso precedente, si presenta ai capi della capacità
portandolo ad una tensione nulla.
In pratica la lettura ha determinato una operazione di
rinfresco.
Con l'aumento della capacità di memoria aumenta anche il
numero dei piedini necessari al chip integrato per potere
indirizzare tutte le caselle di memoria; ad esempio una memoria
con capacità di 64K necessita di 16 fili di indirizzo mentre una
memoria di 512 K ne richiederebbe di fili di indirizzo ben 19, un
numero notevole. Al fine di ridurre il numero di piedini del chip
i produttori hanno adottato la soluzione del "multiplexing
dell'indirizzo", grazie a questo sistema ogni filo di indirizzo
può servire per due fili, ad esempio uno di riga ed uno di
colonna.
Il circuito, oltre agli altri fili di controllo, contiene
due fili detti RAS (row address strobe) e CAS ( column address
strobe) che con il loro livello attivo avviano il segnale
presente sui 7 fili di indirizzo verso il registro in grado di
immagazzinare l'informazione relativa all'indirizzo da inviare ad
16
decodificatore di riga , mentre l'altro farà la stessa cosa ma
per il decodificatore di colonna
Un tipico computer con una memoria dinamica del tipo
indirizzabile con sistema multiplexer è quello indicato in figura
in questo schema vediamo che occorre interfacciare fra i
fili degli indirizzi che provengono dal computer con un
dispositivo in grado di presentare in uscita prima metà degli
indirizzi e successivamente l'altra metà; questo dispositivo ha
bisogno di un comando che nello schema in oggetto è indicato come
segnale "MUX".
Analizziamo ora la temporizzazione di lettura e scrittura
nel caso di una memoria dinamica con indirizzamento multiplexer.
Ciclo di lettura
a) viene inviato il comando di "MUX" che abilita il
registro di riga.
b) viene quindi inviato il segnale RAS per memorizzare la
prima metà degli indirizzi corrispondenti alla riga.
c) quindi viene inviato il segnale CAS per memorizzare gli
indirizzi corrispondenti alla colonna.
17
d) a questo punto avremo sui fili di uscita i dati
immagazzinati nella cella indirizzata.
e)
i comandi "MUX", "RAS" , "CAS" vengono riportati ai
loro valori iniziali.
Ciclo di scrittura
a) viene inviato il comando di "MUX" che abilita il
registro di riga.
b) viene quindi inviato il segnale RAS per memorizzare la
prima metà degli indirizzi corrispondenti alla riga.
c) quindi viene inviato il segnale CAS per memorizzare gli
indirizzi corrispondenti alla colonna.
d) vengono inviati i dati che devono essere scritti.
e) dopo un breve intervallo viene commutato il segnale R/W
per commutarlo a scrittura.
f) a questo punto viene tolto il dato.
g)
i comandi "MUX", "RAS" , "CAS" vengono riportati ai
loro valori iniziali.
Per le operazioni di rinfresco, che non devono in nessun
modo interferire con le operazioni di lettura e scrittura vengono
prodotti dei chip dedicati per ridurre le complessità circuitali.
In genere queste operazioni vengono effettuati per riga in
maniera che l'operazione di rinfresco viene effettuata in metà
tempo. Nel caso di una memoria da 16 K ad esempio l'operazione di
rinfresco potrebbe essere completata in soli 50msec.
Spesso, nelle applicazioni, le dimensioni sia della
capacità che della parola necessaria non sono ottenibile con un
solo chip di memoria, bensì devono essere combinati più chip per
raggiungere la dimensione desiderata.
Caso dell'espansione della dimensione della parola.
Si supponga di aver bisogno di una memoria da 16 x 8 bit,
ed invece si dispone di memorie da 16 x 4 con I/O comuni.
Il circuito che consente di ottenere quanto desiderato è
indicato in figura
18
Il circuito si spiega da solo.
un altro esempio è il caso di memorie del tipo n K x 1 da
utilizzare per ottenere una parola n K x m. un esempio è indicato
in figura
dove si utilizzano delle memorie da 1 K x 1 per ottenere una
memoria da 1 K x 8.
Altro caso è la possibilità di disporre delle memorie con
parola uguale a quella desiderata e con capacità inferiore.
Un esempio è indicato in figura
19
in questo caso abbiamo una memoria da 16 x 4 ed utilizzandone due
possiamo ottenere una memoria da 32 x 4; per effettuare la
selezione dei due chip si utilizza un solo filo che con la sua
condizione di "0" o "1" consente di selezionare i due chip.
Un altro esempio è quello di figura
in questo caso i chip da selezionare sono quattro perchè si vuole
ottenere una memoria da 8 K x 8 utilizzando delle memorie da 2 K
x 8. In questo caso non basta un solo filo ma occorre utilizzare
un decodificatore come si può dedurre con chiarezza dal circuito.
Tutte le memorie elettroniche a semiconduttore fino a
questo momento esaminate sono del tipo ad accesso casuale, cioè è
indifferente la locazione di memoria che si desidera raggiungere,
senza la necessità di esaminare il contenuto di altre celle di
20
memoria. Questa modalità di funzionamento consente di avere una
notevole velocità di accesso e quindi si prestano bene ad essere
utilizzate dal computer come memoria di programma o di dati, in
altre parole come memoria interna di un computer.
In alternativa a queste memorie ad accesso casuale vi sono
quelle ad accesso sequenziale, anche di tipo elettronico, che
utilizzano dei registri a scorrimento. Queste memorie anche se di
tipo sequenziale sono caratterizzate da una notevole velocità,
per cui anche se non possono venire utilizzate come memorie
interne
possono
venire
utilizzate
come
zone
dove
vanno
immagazzinati dei dati che vanno utilizzati in modo ripetitivo.
Per esempio dei dati da presentare in un display che vanno
evidenziati per un certo tempo, almeno fino al momento in cui
occorre sostituiti con degli altri.
In genere il registro a scorrimento viene realizzato
utilizzando dei FF il cui numero può essere qualunque, e quindi
in teoria può essere qualunque anche la dimensione di un registro
a scorrimento. Il circuito presenta una entrata di dati, un clock
che consente lo scorrimento dei dati, un filo di uscita
corrispondente
all'ultimo
bit
e
tanti
altri
fili
che
corrispondono alle uscite di ciascun flip-flop (naturalmente se
questo numero non è eccessivo), un filo che consente di
selezionare fra lettura ciclica del registro e registrazione dei
dati per il caricamento del registro stesso.
Una combinazione di più registri consente di ottenere una
parola a più bit.
Sempre nel campo delle memorie sequenziali abbiamo le
memorie "FIFO" che come impostazione sono del tutto simili a
quelle a registri a scorrimento, cioè con la prima parola che
entra è la prima parola che esce (First in, First out).
Pur tuttavia esistono delle differenze fra i due tipi di
memorie; ad esempio in una FIFO il dato non viene fatto
riciclare, cioè una volta uscito è perso. Altro elemento è che in
una FIFO l'operazione di far scorrere i dati nella memoria è
completamente indipendente dallo scorrimento dei dati fuori della
memoria; in poche parole i dati scorrono con velocità diverse,
questa modalità di funzionamento le rende molto utili per il
trasferimento di dati fra sistemi che lavorano a velocità
differenti. Per effettuare questa modalità vi sono due ingressi
di clock, uno per l'entrata dei dati ed uno per l'uscita.
Un diagramma a blocchi è quello di figura
21
Un tipico esempio di applicazione è il trasferimento di
dati fra un computer ed una stampante che notoriamente lavorano a
velocità molto diverse. La memoria FIFO in questo caso può
funzionare da buffer (memoria tampone) convertitore di velocità
tra i due elementi. La stessa operazione può venire effettuata in
modo inverso, cioè fra un sistema lento ed uno veloce, una
tastiera ed un computer.
Sempre
nel
campo
delle
memorie
sequenziali
occorre
ricordare anche l'esistenza delle memorie a BOLLE MAGNETICHE, che
sono delle memorie a stato solido (cioè privi di organi meccanici
in movimento) che memorizzano i dati binari in forma di piccoli
domini cilindrici (appunto delle bolle) in una pellicola di
materiale magnetico. La presenza di una bolla viene letta con un
"1" mentre l'assenza come uno "0". Dei campi magnetici
determinano lo scorrimento di queste bolle all'interno del
materiale magnetico. Questi dati sono obbligati a passare dinanzi
ad un punto di rilevamento dal quale possono passare all'esterno.
La velocità di trasferimento dei dati è relativamente
notevole, circa 50 Kbit/sec. Sono chiaramente delle memorie non
volatili, al cessare dell'alimentazione le bolle si fermano per
riprendere
lo
scorrimento
allorchè
viene
ripristinata
l'alimentazione. Vengono lette e scritte con la stessa facilità e
rispetto ad altre forme di memorie sequenziali, come i nastri e i
dischi, hanno il vantaggio di non avere parti mobili e quindi
maggiore affidabilità e silenziosità. Altro elemento di pregio è
la bassissima potenza dissipata. Come memoria elettronica , al
momento della loro immissione sul mercato, disponevano di una
capacità enorme rispetto a tutte le altre memorie elettroniche.
Questo tipo di memoria non ha avuto molto successo poichè
non può essere utilizzato come memoria interna ma sempre come
memoria di massa, ma con un costo molto più elevato di altre
memorie di massa.
Prima di chiudere questo argomento relativo alle memorie
ricordiamo, come memorie di massa, i sistemi a disco magnetico
del tipo rigido o flessibile.
Questo tipo di supporto consente una notevole capacità di
memoria con velocità operative relativamente buone.
I sistemi a disco rigido (HARD DISK) sono formati da una
serie di dischi rigidi del tipo fonografico posti in pila fra di
loro in un certo numero e separati da uno spazio fra i singoli
dischi. I dati vengono memorizzati su uno strato magnetico
disposto sopra questi dischi rigidi.
Una configurazione tipica è indicata in figura
22
I dati vengono registrati e letti in modo seriale in bande
concentriche, dette tracce, su entrambe le facce di ciascun disco
mediante testine mobili di lettura/scrittura. Queste testine si
muovono in modo radiale verso l'interno o l'esterno nello spazio
fra i dischi. Il tempo di acceso è legato alla velocità di
rotazione del disco, dal diametro e dalla velocità di spostamento
della testina. Le testine non toccano la superficie del disco per
evitarne la rapida usura, mentre invece la testina fluttua sul
disco volando su un cuscino d'aria che aderisce al disco.
I tempi di accesso sono dell'ordine della decina di
millisecondi, che è praticamente il tempo necessario alla testina
per raggiungere la posizione della traccia da leggere o scrivere,
una volta raggiunta i dati vengono trasferiti ad una velocità
notevole, legata alla velocità di rotazione che può essere di
circa 6000 giri al minuto.
La distanza che separa la testina dalla superficie del
disco è di qualche milionesimo di pollice, cioè una dimensione
simile alle particelle presenti nell'aria, queste potrebbero
alterare la lettura e la scrittura dei dati, è necessario allora
che l'unità a disco venga protetta dall'aria ambientale mediante
una chiusura ermetica del complesso contenente i vari dischi e le
relative testine.
Attualmente riveste una importanza notevole nel campo della
memorizzazione di dati su supporti magnetici il cosiddetto disco
flessibile (floppy disk).
23