Le memorie: classificazione, tecnologia e gerarchia | Sistemi e Reti Anno 3 Modulo 1 Lezione 06 | Prof. Giagnotti
Sistemi e Reti · Anno 3 · Modulo 1 · Lezione 06
✍ Autore: profgiagnotti · Materia: Sistemi e Reti

Le memorie: classificazione, tecnologia e gerarchia

Dalla distinzione primaria/secondaria alla piramide completa: DRAM, SRAM, DDR, ROM, Flash, stack LIFO, località, LRU, Hamming e CRC. Capire come il computer ricorda davvero.

📚 Esercizi sulle memorie →
// OBIETTIVI DI APPRENDIMENTO
✓Comprendere la classificazione funzionale delle memorie in primaria (RAM, ROM, cache) e secondaria (SSD, HDD) per velocità e persistenza
✓Conoscere le unità di misura della capacità (byte, KB, MB, GB) in potenze di 2 e i limiti fisici di indirizzamento
✓Distinguere DRAM, SRAM, SDRAM, DDR, LPDDR e le ROM (PROM, EPROM, EEPROM, Flash) con tecnologie e casi d'uso reali
✓Comprendere struttura interna del chip di memoria, funzionamento dello stack LIFO con SP, PUSH/POP e la piramide gerarchica
✓Conoscere i meccanismi di controllo e correzione errori: parità, codice di Hamming ECC e CRC per trasmissione e storage

1. Classificazione funzionale delle memorie

In ogni sistema di elaborazione la memoria non è un blocco unico — è un ecosistema di tecnologie diverse, ciascuna ottimizzata per velocità, capacità, costo e persistenza specifici. La prima distinzione fondamentale è quella funzionale.

01 · CPU ACCESS

Memoria primaria

Direttamente accessibile dalla CPU tramite bus. Contiene dati e istruzioni in uso. Veloce — latenza in ns. Capacità limitata. Esempi: RAM, ROM, Cache L1/L2/L3.

02 · STORAGE

Memoria secondaria / di massa

Archiviazione permanente, non volatile. Non accessibile direttamente dalla CPU: serve controller I/O. Più capiente e lenta. Esempi: SSD, HDD, chiavette USB.

📌 Definizione da ricordare

Primaria = lavora con la CPU adesso, secondaria = conserva anche a PC spento. La differenza chiave è volatilità e accessibilità diretta dal processore.

💬 Tip del docente

All'interrogazione: "Perché non usiamo solo SRAM velocissima ovunque?" Risposta: costa 100x più della DRAM e occupa molto più silicio (6 transistor vs 1 condensatore). Non è questione di voglia, è fisica ed economia.

2. Unità di misura e limiti fisici

L'unità minima indirizzabile è il byte = 8 bit. Ogni locazione ha un indirizzo univoco. I multipli tradizionali usano potenze di 2, non di 10:

NomeValore binarioSignificato
1 KB2¹⁰ = 1024 byte10 linee indirizzo
1 MB2²⁰ = 1.048.576 byte20 linee
1 GB2³⁰ ≈ 1,07 miliardi byte30 linee
1 TB2⁴⁰ ≈ 1 trilione byte40 linee
🚫 Da non confondere

KB decimale usato dai produttori HDD/SSD: 1 KB = 1000 byte. KB binario (KiB) usato da OS: 1024 byte. Ecco perché un SSD da 1 TB è visto come 931 GB: 10¹² / 2³⁰. Non è bug, è unità diversa.

La capacità indirizzabile dipende da n linee = 2ⁿ locazioni. Con 32 bit: 4 GB max. 64 bit: 16 exabyte teorici. Limiti fisici: costo per bit, consumo, refresh.

🎯 Esempio in classe

Il vostro PC ha 8 GB: 8×2³⁰=8,5 mld byte, indirizzi a 33 bit. La CPU non legge byte singoli: usa burst e cache line da 64 byte per sfruttare località spaziale.

3. RAM: DRAM vs SRAM e le evoluzioni DDR

RAM = Random Access Memory: accesso casuale, tempo costante. Due famiglie:

DRAM · 1T+1C

Dynamic RAM

1 transistor + 1 condensatore per bit. Si scarica → refresh ogni ~64 ms. Economica, densa. Usata per RAM principale.

SRAM · 6T

Static RAM

Flip-flop 6 transistor. Nessun refresh, 1 ns. Costosa. Usata per cache.

DRAM – Dinamica1 Transistor + CondensatoreRichiede refresh periodicoEconomica – alta densità – RAMSRAM – Statica6 Transistor – Flip-FlopNessun refresh – 1 ns cache L1Costosa – Cache CPU

SDRAM, DDR, LPDDR

TecnologiaInnovazioneDove
SDRAMSincrona con clockBase DDR
DDRDouble Data Rate – fronte salita+discesaDDR-DDR5 raddoppia banda
DDR4/5Bank Group, prefetch 16n, tensioni bassePC, server – DDR5 6400 MT/s
LPDDRLow Power, canali 16-bitSmartphone, ultrabook LPDDR5X
💬 Tip del docente

Non guardare solo GB ma MT/s, latenza CL, dual channel. DDR4 3200 CL16 dual è molto più veloce di 2666 single. In lab lo misuriamo.

4. ROM, PROM, EPROM, EEPROM e Flash

ROM non volatile, mantiene dati senza alimentazione. Evoluzione:

MASK

ROM pura

Scritta in fabbrica, non modificabile.

OTP

PROM

Programmable once – fusibili.

UV

EPROM

Cancellabile UV, finestrina 20 min.

ELECTRICAL

EEPROM

Cancellabile elettricamente byte per byte – base BIOS.

MODERN

Flash NAND/NOR

Evoluzione EEPROM a blocchi. SSD, chiavette, UEFI. NOR codice, NAND storage.

📌 Definizione da ricordare

EEPROM = byte singolo, Flash = blocchi KB per velocità e durata. Ecco perché SSD ha controller FTL complesso.

⚠️ Errore comune

ROM non è obsoleta: ogni PC ha UEFI in Flash NOR, ogni SSD firmware in Flash, ogni microcontrollore ha Flash interna. Oggi è riscrivibile.

5. Struttura interna del chip di memoria

Chip DRAM: matrice + decodifica:

ARCHITETTURA CHIP · LOGICA
Matrice 2D: Righe x Colonne (es. 8192x1024) Decodificatore riga: seleziona WL Decodificatore colonna: seleziona BL Sense amplifier: amplifica carica Row buffer: pagina aperta per burst Bus dati 8/16/32 bit Indirizzo: [BANK | RIGA | COLONNA] 14 bit: 7 riga +7 col = 16K celle per bank
MATRICE CELLERighe=WL Col=BLDecodifica RigaROW DECODER MAR→rigaDecodifica ColonnaCOL + Sense AmpI/O Buffer & ControlRow Buffer – pagina 1KBBurst 64B – Cache LineMDR – dato
🎯 Esempio in classe

Aprire riga costa ~15 ns, leggere 8 colonne stessa riga +4 ns. Programmi sequenziali più veloci: row buffer hit. Fisica, non magia.

6. Lo stack: regione LIFO gestita da SP

Stack zona RAM LIFO, cresce verso indirizzi decrescenti (x86, ARM). Registro SP.

PUSH

SP=SP-dim; MEM[SP]=dato

Decrementa poi scrive.

POP

dato=MEM[SP]; SP=SP+dim

Legge poi incrementa.

ASSEMBLY · STACK CALL
; f(a=5,b=7) PUSH R5 PUSH #7 ; b PUSH #5 ; a CALL f ; PUSH PC ritorno ; dentro f: PUSH BP MOV BP,SP ; [BP-2]=a [BP-4]=b POP BP RET ; POP PC ; Stack 0x1000->0x0000 ; 0x0FFC R5 ; 0x0FF8 7 ; SP->0x0FF4 5
💬 Tip del docente

Disegnate stack con frecce in giù. Verifica: SP 0x1000 dopo 3 PUSH 4 byte? 0x1000-12=0x0FF4. Chi scrive 0x100C sbaglia verso.

🚫 Da non confondere

Heap cresce su, malloc/free, frammentato. Stack giù, automatico LIFO, velocissimo. Stack overflow = ricorsione infinita senza ritorno.

STACK 0x1000→0x0000... libera ...R5 – 0x0FF8b=7 – 0x0FF4a=5 – 0x0FF0 ← SPSequenza PUSHSP=0x1000 inizialePUSH R5 → SP=0x0FFCPUSH 7 → SP=0x0FF8PUSH 5 → SP=0x0FF4 ← TOPPOP inverte: legge poi SP+=4

7. Gerarchia delle memorie e principi di località

Non esiste memoria perfetta: veloce+grande+economica+persistente. Soluzione: piramide che sfrutta località.

REGISTRI 0.3 ns 32x64 bitCache L1 1 ns 32KB SRAMCache L2/L3 5-15 ns 256KB-16MBRAM DDR4/5 60 ns 8-64 GB DRAMSSD 50us / HDD 5ms 512GB-4TB Flash/Magnetico
📌 Definizione da ricordare

Località temporale: uso ora → riuso presto (loop). Spaziale: uso X → uso presto X+1 (array). Cache e LRU vivono di questo.

Cache piena? LRU – Least Recently Used: butta chi non usi da più tempo. Usato L1/L2 e paginazione OS.

💬 Tip del docente

Ricorda LRU: chi non si fa sentire esce. Verifica: gerarchia funziona perché codice reale ha località >90% → 95% hit → Tavg ~ cache, non RAM.

8. Controllo e correzione degli errori

Bit flip per raggi cosmici, disturbi, celle difettose. Due approcci:

CORREZIONE

Hamming ECC

Parità su sottoinsiemi. 4 dati→3 parità→7 bit. Sindrome = posizione errore. SEC, con extra DED. RAM ECC server.

RILEVAZIONE

CRC

Firma polinomiale. dato/G(x)=resto. Resto ≠0 → errore. >99.9% rilevazione, no correzione. Ethernet, USB, NTFS, ext4.

ECC · HAMMING (7,4)
Dati 1 0 1 1 -> pos 1 2 3 4 5 6 7 = p1 p2 d1 p3 d2 d3 d4 p1 parity 1,3,5,7: 0 p2 2,3,6,7: 0 p3 4,5,6,7: 0 Codeword 0 0 1 0 0 1 1 Errore bit3 -> sindrome 011=3 -> flip corr.
HAMMING – CorreggeDato+parità → sindrome=posRAM ECC – Server – AffidabilitàCRC – Riveladato / G(x)=resto → firmaEthernet / FS / ZIP
⚠️ Errore comune

Parità 1 bit rileva, Hamming corregge 1, CRC rivela burst. Domanda: bit per correggere 1 errore in 8 bit? 2⁴=16 ≥ 8+4+1=13 → 4 parità → 12 totali. Non 1.

9. Verifica operativa

🔬 Esercizio dal PDF ufficiale

Apri gli esercizi e prova:

  1. Bus 16 bit indirizzi, 8 bit dati: locazioni? Capacità KB?
  2. Perché DRAM refresh? Costo refresh 64 ms.
  3. SP=0x2000, PUSH AX 2B, PUSH BX 2B. Dove SP? Disegna.
  4. Hit L1 95% 1ns, miss 5%+RAM 60ns: Tavg?
  5. Hamming (7,4) dato 1010: codifica, errore bit5, correggi.
  6. Flash NOR vs NAND: quando?
✅ Soluzione ragionata breve

1) 2¹⁶=65536×1B=64KB. 3) 0x2000→0x1FFC→0x1FF8 SP=0x1FF8. 4) Tavg=0.95×1+0.05×61=4ns ~cache. 6) NOR codice eseguibile BIOS/micro, NAND storage SSD. Dettagli nel PDF.

✓Primaria veloce/volatile vs secondaria capiente/non volatile, diretta vs controller.
✓byte=8 bit, KB=1024, MB=2²⁰, GB=2³⁰. n linee=2ⁿ locazioni.
✓DRAM 1T+1C+refresh RAM, SRAM 6T cache, DDR double-rate, LPDDR low-power.
✓ROM→PROM→EPROM→EEPROM→Flash, NOR codice, NAND dati.
✓Chip: matrice, decoder, sense amp, row buffer, burst 64B.
✓Stack LIFO SP decrescente PUSH SP-=dim MEM[SP]=val, POP val=MEM[SP] SP+=dim.
✓Gerarchia registri→L1→L2→RAM→SSD/HDD. Località temporale/spaziale. LRU.
✓Hamming ECC corregge, CRC rileva burst.

📚 Prossimo passo - Lezione 07: Organizzazione e funzionamento del bus

Ora che sai dove vivono dati e istruzioni, vediamo come viaggiano: bus dati, indirizzi, controllo, arbitraggio, sincrono/asincrono e il collo di bottiglia di Von Neumann. Porta schema gerarchia.