Memorie a semiconduttore Lucidi del Corso di Circuiti Integrati Università di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica Laboratorio di Elettronica (EOLAB)
Memorie: classificazione Le memorie si dividono in 3 grandi categorie: RWM (read/write memory): memorie leggibili e scrivibili). Sono comunemente chiamate RAM (che significa però Random Access Memory, memorie ad accesso casuale). Perdono l informazione quando non sono alimentate. Es.: SRAM, DRAM ROM (read-only memory): memorie a sola lettura. Sono scritte una volta per tutte e possono essere solo lette. Mantengono l informazione anche se non alimentate NVRWM (Nonvolatile, read/write memory): memorie di lettura e scrittura non volatili (mantengono il dato anche se si spegne l alimentazione)
Dimensioni di memorie La dimensione globale di una memoria viene generalmente misurata in byte (Giga, Mega, Kilo) ossia in termini di gruppi di 8 bit (1byte=8bit). Al loro interno le memorie sono organizzate in word (parole) ossia gruppi di M bit (con M tipicamente 32 nei sistemi attuali)
Decoder Memorie: architettura Una memoria di N parole da M bit è organizzata, concettualmente in questo modo A[0] A[1] A[K-1] S[0] S[N-1] Word 0 Word 1. Word N-1 M bit Elemento di memoria (singolo bit)
Memorie: architettura Una memoria di N word necessita di K=log 2 N bit di indirizzo per la selezione della parola desiderata I bit di indirizzo devono essere decodificati da un decoder per generare il segnale di selezione che attiva una fra le N word Gli M bit della word selezionata devono poi andare sul bus di uscita (in un operazione di lettura), oppure dal bus provengono gli M bit da scrivere sulla word selezionata
Memorie: architettura Se il numero N di word diventa molto grande rispetto al numero M di bit questa architettura non è evidentemente più ragionevole perché comporterebbe un organizzazione dello spazio irrazionale (un blocco stretto ed altissimo) e soprattutto porterebbe a delle capacità parassite enormi (le piste verticali che attraversano tutte le word per portare in uscita o in ingresso i bit) La soluzione preferibile è quella quadrata: si dividono i bit di indirizzo in 2 gruppi e si usa il primo per selezionare una riga ed il secondo gruppo per selezionare le colonne
Row Decoder Memorie: architettura A[L] A[K-1] Sense Amplifiers A[0] A[L-1] Column Decoder
Memorie: architettura L architettura preferita per memoria di grandi dimensioni è quella ad array Dei K bit di indirizzo i primi L (i meno significativi) selezionano le colonne e gli ultimi K-L (più significativi) selezionano le righe Il decoder di riga seleziona una delle possibili 2 K-L righe in base ai K-L bit più significativi dell indirizzo La riga selezionata contiene 2 L word ed il decoder di colonna si incarica di selezionare e portare in uscita una fra queste word in base agli L bit meno significativi dell indirizzo Prima di portare in uscita il dato questo viene amplificato dai sense-amplifier posti al termine di ogni colonna
Memorie: architettura Per memorie ancora più grandi (più di 256 KB) anche dopo la suddivisione le capacità parassite delle piste molto lunghe che collegano un elemento di memoria nella prima riga al sense amplifier di colonna sarebbero eccessive Le memorie vengono ancora suddivisi in P blocchi (log 2 P bit di indirizzo) ciascuno dei quali è organizzato come un array righe/colonne come il precedente
Memorie: architettura Indirizzo di riga Indirizzo di colonna Indirizzo di blocco Bus
Componenti di una memoria Ognuno dei 3 tipi di memorie considerate (RAM, ROM, NVRWM) ha un architettura come quella vista composta da Il core: l array di elementi di memoria, l implementazione del core cambia a seconda del tipo di memoria considerata La periferia: i circuiti di interfaccia (decoder, senseamplifier, driver dei bus)
ROM: elemento di memoria L elemento di memoria di una cella ROM può essere implementato in vari modi (fusibile, diodo). In tecnologia CMOS l elemento di memoria è costuito dalla presenza o assenza di un transistor Per questo motivo le ROM non possono essere scritte: le parole memorizzate sono definite una volta per tutta in fase di realizzazione fisica del dispositivo (layout) inserendo o non inserendo un MOS in una cella.
ROM: elemento di memoria Pull-up WL[0] WL[1] Riga 1 WL[2] WL[3] BL[0] BL[1] BL[2] BL[3]
ROM: elemento di memoria Quando si seleziona la riga i-esima si porta alto il valore di WL[i] e si mette 0 su WL[j] con j i A questo punto i vari bit della i-esima riga vengono portati in uscita tramite la NOR pseudo-nmos costituita dal PMOS di pull-up (sempre acceso) e dagli NMOS che possono essere presenti o meno nella singola cella di memoria del bit k-esimo. Se in posizione k della riga i c è un MOS questo cortocircuita BL[i] a 0, se il MOS non c è il pull-up porta BL[i] a 1
ROM: elemento di memoria Nel caso della ROM di esempio del lucido 13 le parola memorizzate sono: W[0] = 1011 W[1] = 0110 W[2] = 1010 W[3] = 1111 Nel caso reale, per semplicità, non si modificano le maschere delle diffusioni (mettendo o meno il transistor) ma le metallizzazioni. Si realizzano cioè tutti i MOS ma si collegano (col metal) solo quelli in corrispondenza di bit di memoria pari a 0 e gli altri rimangono flottanti
NVRW: elemento di memoria L organizzazione di una memoria non volatile di lettura e scrittura (comunemente detta E 2 PROM, ossia Electrically Erasable/Programmable Read Only Memory) è molto simile a quella di una ROM La differenza consiste nella possibilità di realizzare la connessione del MOS, o cancellarla, agendo solo su segnali elettrici applicati alla cella stessa e NON in fase di realizzazione fisica
Floating gate transistor Il transistor di una ROM normale viene sostituito da un transistor a gate flottante, ossia un transistor particolare con doppio gate la cui tensione di soglia può essere variata applicando opportuni segnali elettrici al MOS In questo modo si può programmare un 1 nella ROM alzando notevolmente la tensione di soglia del MOS, quindi in pratica eliminandolo. Si può programmare uno 0 abbassando la tensione di soglia del MOS e rendendola confrontabile con quella di un MOS normale
Floating gate transistor Gate flottante Gate di controllo Source Drain n + n + Il MOS a gate flottante ha 2 gate: uno di controllo ed uno flottante, immerso nell ossido e senza contatti elettrici con l esterno
Floating gate transistor Applicando delle elevate tensioni drain-source (oltre i 10V), gli elettroni che vengono enormemente accelerati possono attraversare l ossido e rimanere intrappolati nel gate flottante A questo punto le cariche negative degli elettroni tendono ad attrarre lacune sotto il gate, quindi diventa più difficile creare il canale (la tensione soglia aumenta) Per riportare la tensione di soglia a livelli normali bisogna eliminare gli elettroni intrappolati nel gate flottante per effetto tunnel (applicando tensioni molto alte al source, per avere una tensione gate-source negativa) In questo modo se il gate flottante è carico la tensione di soglia è alta ed il mos non può essere acceso (memorizzato 1), se invece il gate è scarico il mos si può accendere (memorizzato 0)
Programmazione e cancellazione Gate flottante Gate di controllo Cancellazione - Source n + - n + Programmazione Drain
RAM statiche e dinamiche L elemento di memoria di una memoria RAM (o RWM) cambia a seconda del tipo di implementazione SRAM: static RAM, la memorizzazione avviene in modo statico, con un elemento bistabile con opportuno circuito di scrittura (mantiene il dato indefinitamente finché alimentata) DRAM: dynamic RAM, la memorizzazione è dinamica per mezzo di cariche intrappolate su una capacità (richiede refresh perché soggetta al leakage della carica)
SRAM: elemento di memoria WL Q Q BL BL
SRAM: elemento di memoria L elemento di memoria è un bistabile (due inverter connessi ad anello) Quando si vuole leggere il bit memorizzato si porta WL a 1 avendo così su BL il dato Q e su BL il dato Q Quando si vuole scrivere un valore D bisogna mettere BL=D e BL =D e poi portare alto WL per forzare lo stato del bistabile I dimensionamenti dei transistor sono critici per garantire il corretto funzionamento delle fasi di lettura e scrittura
DRAM: elemento di memoria E possibile avere implementazioni di memoria molto più compatte utilizzando un approccio dinamico Il dato è memorizzato su capacità quindi tende ad essere distrutto dalle correnti di leakage. E necessario un refresh Le due principali versioni dell elemento di memoria sono a 3 transistor (cella 3T) e ad 1 transistor (cella 1T)
DRAM: cella 3T WL X B1 B2
DRAM: elemento di memoria L elemento di memoria è una capacità Per leggere il dato si porta WL a 1 ed il dato compare in uscita su BL2 (negato) Per scrivere il dato D si porta BL1=D e poi si alza WL, in tal modo D viene memorizzato sul nodo X (tramite la capacità) In realtà, per rendere l operazione di lettura e scrittura più veloci non si richiede una completa escursione delle tensioni fra 0 e VDD ma si misurano solo della V Per leggere correttamente, ovviamente, sulla linea BL2 deve esserci un opportuno pull-up (uno solo per tutte le celle che si affacciano sulla stessa colonna)
DRAM: cella 1T BL X WL L elemento di memoria è una sola capacità col transistor di accesso. La linea di lettura e scrittura coincidono. La lettura è distruttiva (se accedo al nodo X distruggo la carica immagazzinata per redistribuzione di carica e la devo poi ripristinare)
Memorie: circuiti di periferia Tutte le memorie viste richiedono un certo numero di decoder per selezionare la parola di memoria desiderata Il progetto dei decoder è critico perché il numero di segnali è molto elevato Soprattutto le DRAM con cella 1T ma anche le altre RAM (per problemi di velocità di risposta) richiedono la presenza di un amplificatore (sense-amplifier) che riporti le variazioni di potenziale misurate sulle bitline a valori digitali (VDD e 0)