Salta al contenuto
Note per Studenti SRAM e DRAM

SRAM e DRAM

In questa pagina 4

Le due grandi famiglie di memorie a lettura e scrittura (Memorie a semiconduttore - struttura a matrice, decoder e ROMLe memorie a semiconduttore si classificano in lettura/scrittura (SRAM, DRAM: volatili) e sola lettura (ROM a maschera, PROM, EPROM, EEPROM, Flash: non volatili); l'accesso è casuale o non casuale (FIFO, registri a scorrimento, CAM). La struttura è a matrice di celle: una word line (WL) seleziona una riga attraverso il decoder di riga (N indirizzi → 2^N WL), una bit line (BL) porta il dato alla colonna scelta dal decoder/multiplexer di colonna e dal sense amplifier. La ROM a NOR ha per ogni bit line un p-MOS di carico e n-MOS dove il bit è 0 (con WL alta tirano la BL a massa): compatta e veloce; la ROM a NAND ha serie di n-MOS ed è molto più piccola ma più lenta. Ritardo di una WL: R del polisilicio × C dei gate (Elmore); di una BL: C dei drain con la R dei transistor o del carico.Memorie a semiconduttore - struttura a matrice, decoder e ROM →) hanno caratteristiche opposte:

SRAM (statica) DRAM (dinamica)
dato mantenuto finché la cella è alimentata (retroazione positiva) carica su una capacità: refresh periodico
cella grande (66 transistor) piccola (11–33 transistor)
velocità veloce lenta
uscita differenziale singola (serve un sense amplifier)
uso cache, registri memoria principale

Cella SRAM CMOS a 6 transistor

La cella è un latch statico: due inverter CMOS in anello (M1,M2M_1,M_2 e M3,M4M_3,M_4, nodi QQ e Q‾\overline Q) più due n-MOS di accesso (M5M_5, M6M_6) con i gate alla word line (WL), che collegano QQ e Q‾\overline Q alle bit line BLBL e BL‾\overline{BL} (segnali complementari). Con WL bassa i transistor di accesso sono spenti e il latch mantiene il bit (Latch, registri e parametri temporaliUn circuito sequenziale ha uno stato memorizzato in due modi: retroazione positiva (due inverter in anello, bistabile, i latch statici) o immagazzinamento di carica (circuiti dinamici). Un latch è sensibile al livello del clock (trasparente quando il clock è attivo, memorizza quando non lo è), un registro (flip-flop) è sensibile al fronte e si realizza con due latch sulle fasi opposte (master-slave). Il latch SR a porte NOR/NAND non ammette la combinazione S = R = 1 perché passando da lì alla memoria lo stato finale è imprevedibile. Parametri temporali del registro: ritardo clock-uscita t_c-q, tempo di setup t_su (dato stabile prima del fronte), tempo di hold t_hold (dato stabile dopo il fronte). Periodo minimo: T_min = t_c-q + t_p,logic(max) + t_su; vincolo di hold: t_cd,reg + t_cd,logic > t_hold. La pipeline spezza la logica con registri per aumentare la frequenza (a spese della latenza).Latch, registri e parametri temporali →).

Lettura. Si precaricano BLBL e BL‾\overline{BL} (di capacità CbitC_{bit} elevata) a VDDV_{DD} (o a un valore intermedio), poi si porta WL a VDDV_{DD}. Se Q=0Q=0 e Q‾=1\overline Q=1: il transistor di accesso collegato a QQ e l'n-MOS driver dell'inverter (M1M_1, con gate a Q‾=VDD\overline Q=V_{DD}) formano un cammino da BLBL a massa; BLBL scende lentamente, mentre BL‾\overline{BL} resta a VDDV_{DD} (il nodo Q‾\overline Q è alto). Il sense amplifier differenziale amplifica la piccola differenza (100100–200 mV200\ \mathrm{mV}) fino a 0…VDD0\ldots V_{DD}. Stabilità in lettura: durante la lettura il nodo QQ (a 00) sale per il partitore tra transistor di accesso e driver: perché il bit non si ribalti VQV_Q deve restare sotto la soglia logica VMV_M dell'inverter opposto. Per questo il driver deve essere più forte dell'accesso (cell ratio Zdriver/Zaccess>1Z_{driver}/Z_{access}>1). Esempio (dati del corso, VDD=2,5 VV_{DD}=2{,}5\ \mathrm V): accesso Z=1Z=1 e driver Z=1Z=1: VQ≈0,66 VV_Q\approx0{,}66\ \mathrm V; con driver Z=2Z=2: 0,42 V0{,}42\ \mathrm V; con Z=3Z=3: 0,31 V0{,}31\ \mathrm V (tutti sotto VM≈1,25 VV_M\approx1{,}25\ \mathrm V ma con margini diversi).

Scrittura. Si impongono sulle bit line i valori da scrivere (per scrivere Q=0Q=0 si porta BLBL a 00 e BL‾\overline{BL} a VDDV_{DD}) e si attiva WL. Se QQ valeva 11: il transistor di accesso (che ha BL=0BL=0) tira QQ verso massa in contrasto con il p-MOS di pull-up dell'inverter (M2M_2, acceso perché Q‾=0\overline Q=0). Il nodo scende di quanto serve a superare la soglia logica dei due inverter in retroazione positiva: appena VQ<VMV_Q<V_M la retroazione fa il resto e il latch si ribalta (Q‾\overline Q sale, il p-MOS si spegne). La condizione "Se il nodo QQ scende sotto la soglia logica dei due invertitori in retroazione positiva" è dunque necessaria e sufficiente (non serve portare QQ a 0 V0\ \mathrm V né a VDD/4V_{DD}/4). Rapporto di scrittura: l'accesso deve essere più forte del p-MOS di pull-up (Zaccess/Zpull−upZ_{access}/Z_{pull-up} abbastanza grande). Esempio: accesso Z=2Z=2, pull-up Z=1Z=1: VQ=0,18 VV_Q=0{,}18\ \mathrm V (<VM<V_M: scrittura riuscita); accesso Z=1Z=1, pull-up Z=2Z=2: VQ=0,64 VV_Q=0{,}64\ \mathrm V (ancora <VM<V_M).

La SRAM ha quindi un dimensionamento con vincoli opposti: driver > accesso (lettura) e accesso > pull-up (scrittura): pull-up < accesso < driver.

Cella DRAM a 3 transistor

Un transistor di scrittura (M1M_1, write WL, WWL) carica il nodo XX (capacità di gate di M2M_2 più una capacità di storage CSC_S) dalla bit line di scrittura; XX è il gate del transistor M2M_2, in serie a M3M_3 (read WL, RWL) verso la bit line di lettura: M2M_2 conduce solo se XX memorizza 11. La lettura è non distruttiva (il nodo XX non viene toccato). Quando si scrive un 11 si perde una soglia: VX=VWWL−VTnV_X=V_{WWL}-V_{Tn}. Ci sono due bit line e due WL: celle grandi.

Cella DRAM a 1 transistor

Un solo n-MOS di accesso e una capacità di storage CSC_S (di norma ≈30 fF\approx30\ \mathrm{fF}, realizzata con la capacità poli-diffusione, a trincea o stack, costosa in area). Collegamenti: gate alla WL, drain alla BL, source a CSC_S.

  • Scrittura: si abilita WL e si pone BL al valore da memorizzare (00 o VDDV_{DD}): CSC_S si carica o scarica. Scrivendo un 11 si perde una soglia (con effetto body): VX=VWL−VTnV_X=V_{WL}-V_{Tn}; l'elevazione ("bootstrap") della WL a una tensione maggiore di VDDV_{DD} (VWL≥VDD+VTnV_{WL}\ge V_{DD}+V_{Tn}) permette di caricare CSC_S fino a VDDV_{DD}.
  • Lettura: si precarica la BL (capacità CBL≫CSC_{BL}\gg C_S) a una tensione intermedia VPREV_{PRE} (≈VDD/2\approx V_{DD}/2) e si abilita WL: la carica si ridistribuisce tra CBLC_{BL} e CSC_S (charge sharing) e il potenziale finale è VPRE+ΔVV_{PRE}+\Delta V: CBLVPRE+CSVX,W=(CBL+CS)(VPRE+ΔV) ⇒ ΔV=CSCBL+CS (VX,W−VPRE).C_{BL}V_{PRE}+C_SV_{X,W}=(C_{BL}+C_S)(V_{PRE}+\Delta V)\ \Rightarrow\ \Delta V=\frac{C_S}{C_{BL}+C_S}\,\big(V_{X,W}-V_{PRE}\big). ΔV\Delta V è piccolo (tipicamente ∼250 mV\sim250\ \mathrm{mV}). Esempio: CBL=300 fFC_{BL}=300\ \mathrm{fF}, CS=30 fFC_S=30\ \mathrm{fF}, VPRE=1,25 VV_{PRE}=1{,}25\ \mathrm V: per VX=1,8 VV_X=1{,}8\ \mathrm V (con perdita di soglia) ΔV=+50 mV\Delta V=+50\ \mathrm{mV}; per VX=0V_X=0: ΔV=−114 mV\Delta V=-114\ \mathrm{mV}; con WL elevata, VX=2,5 VV_X=2{,}5\ \mathrm V dà +114 mV+114\ \mathrm{mV} (simmetrico). Se il sense amplifier richiede ΔVmin\Delta V_{min} si ricava la capacità di storage minima: CS=ΔVmin CBLVX,W−VPRE−ΔVminC_S=\dfrac{\Delta V_{min}\,C_{BL}}{V_{X,W}-V_{PRE}-\Delta V_{min}} (Esercizio 3 · memoria DRAM a un transistor 1024 per 256, capacità, ritardo di linea e lettura (tema d'esame giugno 2025)): in una cella a 1T la dimensione minima della capacità di storage è determinata dalla sensibilità del sense amplifier.

Osservazioni:

  • servono un sense amplifier per ciascuna bit line, per la ridistribuzione di carica;
  • le celle DRAM sono a uscita singola (le SRAM differenziale);
  • la lettura è distruttiva: la carica di CSC_S viene alterata, quindi dopo la lettura il sense amplifier riscrive il valore ("restore") e comunque è necessario un refresh periodico di tutte le righe (circa ogni 64 ms64\ \mathrm{ms}) per compensare le perdite;
  • a differenza della cella a 3T, la cella a 1T richiede una capacità addizionale (area) ma è molto piccola.

Errori comuni

  • Dire che nella SRAM il bit si scrive portando QQ esattamente a 0 V0\ \mathrm V: basta scendere sotto la soglia logica degli inverter.
  • Dimenticare i vincoli di rapporto (driver, accesso, pull-up) o invertirli.
  • Dimenticare la perdita di una soglia scrivendo un 11 in DRAM con WL a VDDV_{DD}.
  • Dire che la lettura DRAM 1T è non distruttiva (lo è quella della cella 3T).
  • Usare ΔV=VX,W−VPRE\Delta V=V_{X,W}-V_{PRE} senza il fattore CS/(CBL+CS)C_S/(C_{BL}+C_S).

Versione ripasso

  • Confronto: SRAM 6T, veloce, differenziale, dato finché alimentata; DRAM 1–3T, piccola, lenta, singola, refresh.
  • SRAM 6T: latch di due inverter + 2 n-MOS di accesso (WL), BLBL, BL‾\overline{BL}. Lettura: precarica, WL alta, il lato a 00 abbassa la BL, sense amplifier (100100–200200 mV); VQ<VMV_Q<V_M ⇒\Rightarrow driver più forte dell'accesso (Za=1Z_a=1, Zd=1,2,3Z_d=1,2,3: 0,660{,}66, 0,420{,}42, 0,310{,}31 V). Scrittura: BL a 00 porta QQ sotto VMV_M (non 00 V, non VDD/4V_{DD}/4), poi il latch si ribalta; accesso più forte del pull-up (Z=2Z=2 contro 11: 0,180{,}18 V).
  • DRAM 3T: nodo XX (gate di M2M_2), lettura non distruttiva, VX=VWL−VTnV_X=V_{WL}-V_{Tn}.
  • DRAM 1T: n-MOS + CSC_S; scrittura con perdita di soglia (bootstrap WL >VDD>V_{DD}); lettura per charge sharing: ΔV=CSCBL+CS(VX,W−VPRE)\Delta V=\frac{C_S}{C_{BL}+C_S}(V_{X,W}-V_{PRE}) (300/30300/30 fF: +50+50, −114-114 mV; bootstrap +114+114 mV); CSminC_S^{min} fissata dalla sensibilità del sense amplifier; lettura distruttiva (restore) + refresh (∼64\sim64 ms); un sense amplifier per BL.
  • Errori: QQ a 00 V; rapporti; soglia persa; lettura 1T non distruttiva; ΔV\Delta V senza fattore capacità.

Esercizi su questo argomento

Teoria collegata