Semiconductor Memories
Non sempre le memorie vengono realizzate a semiconduttori. In questa trattazione ci limitiamo a quest'ultime.
Semiconductor memory classification
È importante una classificazione perché è importante dare conto alle sigle a cui viene associato un contenuto funzionale, questo perché non tutte le memorie svolgono la stessa funzione e quindi le soluzioni tecnologiche possono essere diverse. La nomenclatura è importante perché spesso sono ingannevoli. Questa classificazione si basa su una distinzione delle memorie a seconda di una rigidità o meno con cui il dato è memorizzato.
Read-only memory (ROM)
Sulla destra sono di solito menzionate delle memorie dette lettura che sono memorie che vengono costruite e vendute con all'interno un loro contenuto informativo. Queste vengono chiamate Read-Only-Memory (ROM) e su queste è possibile eseguire solo la lettura.
Read-write memory
Posso fare due tipi di operazioni; in questo caso il dispendio di energia per scrivere e leggere è lo stesso, rappresenta una memoria di lavoro. Attraverso le tecnologie dei semiconduttori si è iniziato a lavorare a memorie intermedie ovvero Non-Volatile Memory: su cui posso svolgere sia operazioni di scrittura che lettura ma le due operazioni non sono equivalenti. L'operazione di lettura è molto più veloce di quella di scrittura; questo perché se spengo il sistema il dato rimane. Questi tipi di memorie non hanno vita infinita, perché ogni volta che vado a cambiare l'informazione questa diventa sempre meno stabile.
RAM (Random Access Memory)
Questa sigla corrisponde ad una particolare architettura ovvero a un particolare schema dove i bit sono organizzati in un chip, e ha anche a che fare con le metodologie che uso per andare a leggere o scrivere questi bit. Esiste un tipo di architettura detta RAM che è comune a tutte e tre le memorie, quando è stata inventata la sigla RAM è stata assegnata alle memorie a sola scrittura-lettura in contrapposizione ad alcune memorie ad accesso non casuale.
Il problema delle memorie a non accesso casuale è che la velocità per il dato numero 1 è diverso dalla velocità per il dato centomila. Ad accesso casuale significa che non è importante dove lo metto ma me lo devo ricordare dove lo metto, però il tempo di accesso è lo stesso ovunque metta il dato. Su tutte queste memorie le due figure di merito più importanti sono: il costo del bit e la velocità di recupero (o di lettura o di scrittura) del dato e consumo di potenza.
Memory timing: definitions
Esiste un ciclo di lettura e scrittura che risentono di dinamiche, quindi quando inizio il ciclo di lettura avrò un tempo morto e il dato non sarà leggibile fino a un certo tempo che è prestabilito dalla memoria (read access/write access). Nelle memorie read-write i due tempi sono uguali, mentre nelle memorie non volatili il write access è molto più lungo del read access.
Memory architecture: decoders
Come memorizzo la memoria? Questa è già una struttura di memorizzazione della memoria ad accesso casuale, qui la memoria è organizzata in parole, sono insiemi di bit che vengono trattati insieme (storicamente ogni parola era di 8 bit); ognuna di queste parole è costituita da 8 celle, ogni singola cella è un circuito che memorizza uno 0 o un 1. Questa struttura è comune a tutte le memorie ad accesso casuale.
Come faccio a leggere la parola? Devo indirizzare una sola di queste parole, ovvero tirare su un segnale e abilitare le celle di una sola parola. Decoder sono circuiti che permettono di far esplodere una configurazione binaria in un segnale uno su n. Se ho 8 parole, l'indirizzo che serve per selezionare la parola deve essere compreso da 0 a 7. Se ho n parole che è per esempio 8, ho bisogno di 3 ingressi (bit) e il decoder fa esplodere questi 3 ingressi in 8 segnali diversi (logiche a pass-transistor).
Man mano che si ingrandivano le dimensioni della memoria questa si organizzava in più dimensioni, ovvero costruendo una matrice; per utilizzare questo tipo di memoria devo avere due decoder uno per le colonne e uno per le righe. L'indirizzo è fatto da L bit, K nelle colonne L-K nelle righe, così facendo riesco a memorizzare un numero molto più grande di parole.
Hierarchical memory architecture
Una matrice tridimensionale la posso immaginare come una sovrapposizione delle matrici precedenti divise per blocchi, in cui gli ultimi 3 bit li utilizzo per andare a scegliere il blocco giusto; quando sono all'interno del blocco uso la rimanente parte dell'indirizzo per andare sulla riga giusta e sulla colonna giusta. All'interno del singolo blocco, dove avvengono i transitori, mantengo delle distanze più limitate e attraverso l'indirizzo di blocco tengo tutti gli altri in standby per limitare la potenza dissipata che è riferita solo al blocco che accendo.
Read-only memories (ROM)
Read-only memory cells: diode ROM
Sulla sinistra abbiamo la primissima implementazione della cella che trovo sempre all'incrocio tra la WL e la BL. La cosa più banale da fare è quella di collegare la BL e la WL con un diodo se voglio memorizzare un 1, e tenere scollegate le due L se voglio mettere uno 0. Perché? Se considero la BL come collegata a un carico e a terra, se la BL è collegata alla WL con un diodo e seleziono la WL (porto alta la tensione in quella WL) il diodo si trascina dietro in tensione la BL; non ci deve essere conflitto. Se le lascio scollegate, anche se alzo la tensione alla WL la BL non è collegata quindi rimane a 0. Un'evoluzione sarebbe mettere un diodo in tutte le intersezioni e metterci in serie un componente resistivo che con una certa corrente si brucia (un fusibile) ho la possibilità di trasformare questa memoria in una programmabile una sola volta. Il difetto principale è che tutti gli 1 consumano un’enorme quantità di corrente.
MOS ROM 1 (memoria a OR)
La tecnologia MOS sostituisce un transistor che ha nel G la WL nel D VDD e il S alla BL, in questo modo non c'è più potenza che gira nella WL; anche qui c'è consumo di potenza perché quando la WL si alza, la BL è alta perché il transistor è acceso e passa una corrente tra VDD e la BL, quindi c'è una VGS superiore alla soglia che tiene acceso il transistore. In questo caso ho il S che segue il G (source comune). Posso non mettere il transistor e memorizzare uno 0. La BL deve avere connessioni a un carico e a massa.
MOS ROM 2 (memoria a NOR)
Avere un transistor MOS all'incrocio mi permette di avere due configurazioni, una complementare all’altra. L’1 viene ottenuto quando non metto la connessione e lo 0 viceversa, quindi in questo caso il MOS è collegato con il S a massa e con il D alla BL. In questo caso la BL deve essere collegata a VDD e al carico, così che se seleziono una parola in cui non ho il transistor la BL rimane alta e quindi seleziono un 1, mentre nel caso opposto il transistor porta via corrente dalla BL per arrivare a 0. Questa struttura rappresenta un invertitore e se considero più invertitori in parallelo ottengo un NOR.
MOS OR ROM
In questo caso ho una memoria 4x4, ovvero 4 parole ognuna con 4 bit. È una OR, quindi le BL vanno a massa attraverso...
-
Memorie
-
Elettronica 1 - MOSFET, elettronica digitale, memorie
-
Tecniche di Memoria Virtuale nella gestione delle Memorie nei Sistemi Operativi
-
Architettura delle Memorie (Parte 3 della Raccolta)