Nelle memorie ad accesso casuale è invece possibile accedere direttamente a qualsiasi dato indipendentemente dalla posizione in cui esso si trova.
All’interno delle memorie ad accesso casuale vi è una ulteriore classificazione che consiste nel distinguere le memorie volatili da quelle non volatili, nelle prime la memorizzazione dei dati è solo temporanea, nelle seconde è permanente.
Negli articoli precedenti abbiamo visto:
- Come funziona una CPU: progetto di circuiti logici #0
- Come funziona una CPU: Flip-Flop SR asincrono #0.1
- Come funziona una CPU: Flip-Flop sincrono #0.1.1
- Come funziona una CPU: Flip-Flop D #0.1.2
- Come funziona una CPU: Flip-Flop Master-Slave #0.1.3
- Come funziona una CPU: Modello di Huffman #0.2
- Come funziona una CPU: progetto di circuiti sequenziali sincroni #0.2.1
- Come funziona una CPU: progetto dei circuiti logici #0.3
- Come funziona una CPU: porte logiche operanti su parole #0.3.1
- Come funziona una CPU: multiplexer #0.3.2
- Come funziona una CPU: decodificatore #0.3.3
- Come funziona una CPU: codificatore (encoder) #0.3.4
- Come funziona una CPU: codificatore prioritario (priority encoder) #0.3.4.1
- Come funziona una CPU: sommatore full-adder #0.3.5
- Come funziona una CPU: sommatore Ripple Carry Adder #0.3.5.1
- Come funziona una CPU: sommatore seriale #0.3.5.2
- Come funziona una CPU: Sommatore con carry-lookahead #0.3.5.3
- Come funziona una CPU: ALU spiegata in modo semplice #0.3.5.4
- Come funziona una CPU: comparatore #0.3.5.5
- Come funziona una CPU: registro a m-bit #0.3.6
- Come funziona una CPU: registro a scalamento (Shift Register) #0.3.6.1
- Come funziona una CPU: contatore semplice #0.3.7
- Come funziona una CPU: contatore asincrono (ripple counter) #0.3.7.1
- Come funziona una CPU: contatore sincrono #0.3.7.2
- Come funziona una CPU: bus spiegato in modo semplice #0.3.8
- Come funziona una CPU: introduzione alla cpu #0.4
- Come funziona una CPU: architettura base di una CPU #0.4.1
- Come funziona una CPU: operazioni fondamentali CPU #0.4.2
- Come funziona una CPU: operazioni sulla ALU #0.4.3
- Come funziona una CPU: accesso in memoria (MAR ed MDR) #0.4.4
- Come funziona una CPU: esecuzione di un’istruzione logica o artitmetica #0.4.5
- Come funziona una CPU: progetto dell’unità di controllo #0.4.6
- Come funziona una CPU: progetto dell’unità di controllo cablata #0.4.6.1
- Come funziona una CPU: progetto dell’unità di controllo microprogrammata #0.4.6.2
- Come funziona una CPU: microprogrammazione verticale ed orizzontale differenze #0.4.6.2.1
- Come funziona una CPU: introduzione alle memorie #0.5
- Come funziona una CPU: strategia generale progettazione memorie #0.5.1
Le caratteristiche generali sono le seguenti:
- Ogni cella può essere indirizzata indipendentemente;
- I tempi di accesso sono uguali e costanti per ogni cella;
Le caratteristiche di queste memorie sono indipendenti dalla loro implementazione fisica.
I segnali di controllo, oltre a far capire alla Memoria che tipo di operazione debba svolgere (informazioni di tipo funzionale), hanno anche una funzione di temporizzazione perché permettono alla Memoria di capire quando certe informazioni (per esempio gli indirizzi) sono disponibili.
Permettono alla Memoria di sapere:
- il tipo di operazione richiesta (lettura o scrittura);
- quando gli indirizzi sono disponibili sull’ABus;
- quando i dati sono disponibili sul DBus (solo per la scrittura);
Deve inoltre esistere un meccanismo con il quale è possibile sapere:
- quando i dati sono disponibili sul DBus (solo per la lettura);
- quando è possibile procedere con un nuovo ciclo di accesso alla Memoria;
Ci sono due soluzioni per quanto riguarda la memoria ad accesso casuale:
- sincrona
- La Memoria e chi la utilizza condividono un segnale di Clock (o informazioni di tempo) e quindi sanno quando possono procedere con ciascuna operazione.
- asincrona
- La Memoria e chi la utilizza non condividono nessun segnale di Clock (o informazioni di tempo) e quindi necessitano di segnali di controllo che dicono quando è possibile procedere con ciascuna operazione.
Vediamo un esempio di segnali di controllo:
- Chip Select (CS):
- da attivare per poter leggere o scrivere, il Chip Select è analogo al segnale di Enable. Se è attivo, la Memoria risponde alle richieste;
- Output Enable (OE):
- da attivare per poter abilitare la scrittura su un Bus condiviso. Permette di pilotare i Buffer Tri-State alle uscite della Memoria;
- Write Enable (WE):
- da attivare per poter effettuare un’operazione di scrittura;
Consideriamo l’esempio:
- Per scrivere:
- CS attivo;
- Indirizzo sulle linee di Address;
- Dato in input sulle linee di Data;
- WE attivo;
- Per leggere:
- CS attivo;
- Indirizzo sulle linee di Address;
- OE attivo;
- Dato in output sulle linee di Data;
Segnali di stato
Se si verifica un guasto transitorio e la Memoria se ne accorge, è abbastanza comune che essa abbia a disposizione un segnale di errore che avvisi l’utente del fatto che la stessa stia fornendo dei dati sbagliati.
Esempi:
- Errore:
- la Memoria ha individuato una parola con un dato errato;
- MFC:
- La Memoria ha completato l’operazione di lettura/scrittura;
Dimensioni
Sono caratterizzate da:
- numero di parole (n);
- numero di bit per parola (m);
Il numero di segnali di ingresso/uscita è conseguentemente:
- log2 n per i segnali di indirizzo;
- m per i segnali di dato;
Architettura
Il registro degli indirizzi è un modulo in cui la Memoria cattura e mantiene stabile il valore sul Bus degli indirizzi, ond’evitare eventuali problemi che sorgerebbero se, a seguito di richiesta di lettura/scrittura di una parola ad un dato indirizzo, tale indirizzo variasse prima del termine dell’operazione. L’indirizzo viene mantenuto all’interno dell’apposito registro fin quando non viene richiesta una nuova operazione da effettuare sulla Memoria. Quando l’indirizzo sul Bus è stabile, un apposito segnale di controllo dice al registro di catturarlo.
Il costo di una RAM dipende anche dalla complessità della circuiteria di accesso.
Questa può essere ridotta tramite un’opportuna organizzazione delle celle di Memoria.
Si hanno due tipologie principali:
- organizzazione a vettore;
- organizzazione a matrice bidimensionale;
La regolarità nell’organizzazione delle celle di Memoria influenza pesantemente anche il costo del layout.
Organizzazione a vettore
La memoria è vista come un vettore di parole: l’indirizzo proveniente dal bus di indirizzi, di parallelismo log2n, viene stabilizzato da un registro degli indirizzi, pilotato tramite segnali di controllo dal circuito di controllo, e viene decodificato da un decoder degli indirizzi in n segnali di enable che selezionano la parola corretta all’interno della matrice di memoria. È semplice da implementare se il numero delle parole è ragionevole, altrimenti il decoder diventerebbe troppo complesso.
Organizzazione a matrice
La memoria è vista come una matrice organizzata in righe e colonne i cui elementi sono delle parole, ognuna delle quali ha un segnale di selezione di riga e uno di colonna, provenienti da due decoder. La parola viene attivata solamente se entrambi i segnali di selezione sono attivi. Due decoder di selezione risultano molto più semplici di un singolo decoder. Si può inoltre dimezzare il numero di segnali di indirizzo grazie a due registri: prima si salva l’indirizzo di riga in un registro, poi si salva l’indirizzo di colonna nell’altro registro, e infine si attivano i decoder.
I segnali di strobe RAS e CAS sono segnali di controllo che specificano se gli indirizzi devono essere caricati sul registro delle righe o delle colonne.
Si possono perciò velocizzare gli accessi sequenziali a blocchi di memoria (bit consecutivi), che sono statisticamente molto frequenti: la possibilità di attivare separatamente i registri di caricamento degli indirizzi permette di mantenere lo stesso indirizzo di riga al variare degli indirizzi di colonna (Page Mode).
a
Iscriviti ai nostri gruppi Telegram
Link utili