Memorii Flash și EEPROM
Memoriile Flash reprezintă cea mai importantă categorie de memorii nevolatile din prezent. Ele combină avantajele densității mari, reprogramabilității în circuit și costului redus, fiind singurele memorii care îndeplinesc simultan toate criteriile unei memorii ideale.
Celula elementară Flash
Celula de memorare a unui bit constă dintr-un singur tranzistor MOS cu grilă flotantă:
- 0 logic: sarcină negativă ridicată în grila flotantă → tranzistorul rămâne blocat la citire
- 1 logic: sarcină redusă sau absentă → tranzistorul conduce la citire
Principiu: stocarea informației se realizează prin prezența sau absența electronilor în grila flotantă. Odată programată, sarcina se menține minim 10 ani fără alimentare.
Operații fundamentale
Programarea
În stare neprogramată, toate celulele sunt pe 1 logic (grilă flotantă fără sarcină). Pentru a stoca un 0:
- Grila de control se aduce la potențial pozitiv (+V_prog)
- Electronii sunt atrași spre grila flotantă prin injecție de electroni fierbinți (hot-carrier injection) sau tunelare Fowler-Nordheim
- Grila flotantă se încarcă negativ
Pentru a stoca un 1, celula rămâne nemodificată.
Citirea
La grila de control se aplică tensiunea +V_read:
- Dacă grila flotantă conține mulți electroni (0 logic) → tranzistorul nu conduce (blocat)
- Dacă grila flotantă conține puțini electroni (1 logic) → tranzistorul conduce
Comparatorul de la ieșirea fiecărei linii de bit detectează starea de conducție și furnizează valoarea logică.
Ștergerea
Ștergerea = îndepărtarea electronilor din grila flotantă:
- Grila de control se aduce la potențialul masei
- Sursa se aduce la tensiune pozitivă (+V_erase)
- Electronii sunt atrași din grila flotantă spre sursă prin tunelare Fowler-Nordheim
Diferență critică față de EEPROM: memoria Flash se șterge pe sectoare sau blocuri, nu pe octeți individuali. Un octet singular nu poate fi reprogramat decât după ștergerea întregului bloc din care face parte.
Arhitecturi Flash: NOR vs NAND
| Criteriu | Flash NOR | Flash NAND |
|---|---|---|
| Acces | Acces aleator la nivel de byte | Acces secvențial pe pagini |
| Citire | Rapidă (~45–100 ns) | Mai lentă la nivel de byte |
| Scriere | Mai lentă | Rapidă pe pagini |
| Ștergere | Pe sector | Pe bloc (mai mare) |
| Densitate | Mai redusă | Foarte mare |
| Utilizare | Execuția codului (firmware, bootloader) | Stocare date (SSD, USB flash, card SD) |
Arhitectura NOR permite citirea directă a oricărui byte, fiind potrivită pentru stocarea și execuția firmware-ului. Arhitectura NAND oferă densitate mai mare și este optimizată pentru operații secvențiale de citire/scriere, dominând piața de stocare masivă.
Exemplu: Memoria Flash 29F010
| Parametru | Valoare |
|---|---|
| Capacitate | 1 Mbit (128K × 8 biți) |
| Tehnologie | CMOS |
| Timp de acces | 45 ns |
| Curent standby | 25 μA |
| Curent funcționare | 30 mA (citire), 50 mA (programare/ștergere) |
| Organizare | 8 sectoare de 16 kocteti |
| Ștergere | pe sector sau globală (bulk erase) |
| Timp ștergere sector | sub 1 secundă |
| Cicluri ștergere/reprogramare | minim 10^5 |
| Durată menținere | minim 10 ani |
| Identificare inteligentă | Da (A9 = 12 V sau secvență de comenzi software) |
Semnale de control: nCE (chip enable), nOE (output enable), nWE (write enable) — similar cu celelalte memorii din familia 128K × 8.
Comparație Flash vs EEPROM
| Criteriu | Flash | EEPROM |
|---|---|---|
| Granularitate ștergere | Pe sector/bloc | Pe byte individual |
| Viteză ștergere | Microsecunde per sector | Milisecunde per byte |
| Densitate | Mare | Medie |
| Cost per bit | Scăzut | Ridicat |
| Cicluri | 10^4 – 10^5 | ≥ 10^5 (un ordin de mărime mai mult) |
| Complexitate | Necesită gestionarea pe sectoare | Mai simplă (acces pe byte) |
Cicluri de ștergere/scriere limitate
Toate memoriile nevolatile reprogramabile au un număr limitat de cicluri de ștergere/programare:
- Flash: 10^4 – 10^5 cicluri
- EEPROM: ≥ 10^5 cicluri
Această limitare apare datorită degradării progresive a oxidului de izolare al grilei flotante. Pentru SSD-uri moderne, se folosesc algoritmi de wear leveling care distribuie uniform scrierile pe toate blocurile.
Aplicații
- Firmware/Bootloader: memoriile Flash NOR stochează codul de pornire al sistemelor embedded
- Bootstrap: la alimentare, microprocesorul execută un mic program din ROM/Flash care încarcă sistemul de operare în RAM
- Microcontrolere: conțin Flash intern ca memorie de program și EEPROM ca memorie de date nevolatilă
- Stocare masivă: SSD-uri (Flash NAND), carduri SD, USB flash drives
- FPGA: unele FPGA (ex. Xilinx) se configurează la alimentare dintr-o memorie Flash externă
Puncte cheie pentru examen
- Celula Flash: un singur tranzistor MOS cu grilă flotantă — 0 = grilă încărcată, 1 = grilă descărcată
- Flash se șterge pe sectoare/blocuri (nu pe byte ca EEPROM) — un byte nu poate fi rescris fără ștergerea întregului sector
- Două arhitecturi: NOR (acces aleator, firmware) și NAND (acces secvențial, stocare masivă)
- Programare prin tunelare Fowler-Nordheim sau injecție de electroni fierbinți
- Memoria 29F010: 128K × 8, t_ACC = 45 ns, 8 sectoare, minim 10^5 cicluri
- Flash este cea mai ieftină memorie nevolatilă și singura care îndeplinește toate criteriile memoriei ideale
- Ciclurile de ștergere/scriere sunt limitate — SSD-urile folosesc wear leveling
- Tendința actuală: Flash intern în microcontrolere (program) + EEPROM (date nevolatile)