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.
MEMORIA PRIMARIA
Direttamente accessibile dalla CPU
▸ Contiene dati e istruzioni in uso
▸ Veloce — latenza in nanosecondi
▸ Capacità limitata
▸ Esempi: RAM, ROM, Cache
MEMORIA SECONDARIA
Archiviazione permanente
▸ Conserva dati senza alimentazione
▸ Lenta — latenza in millisecondi (HDD) o μs (SSD)
▸ Capacità enorme (TB)
▸ Esempi: SSD, HDD, NAS, SAN
Unità di misura — bit, byte, word
Tutta l’informazione digitale — testo, numeri, immagini, suoni — viene rappresentata come sequenze di bit. Il sistema di misura della memoria è rigorosamente basato su potenze di 2.
1
BIT
Unità minima — valore 0 o 1
4
NIBBLE
Mezza cifra esadecimale
8
BYTE
Unità minima indirizzabile
16/32/64
WORD
Dipende dall’architettura CPU
Multipli del byte — potenze di 2
Prefisso
Simbolo
Valore esatto
Approssimazione
Kilobyte
KB
2¹⁰ = 1.024 byte
≈ 1.000 byte
Megabyte
MB
2²⁰ = 1.048.576 byte
≈ 1 milione di byte
Gigabyte
GB
2³⁰ = 1.073.741.824 byte
≈ 1 miliardo di byte
Terabyte
TB
2⁴⁰ ≈ 1,1 × 10¹² byte
≈ 1.000 GB
// implicazioni dei limiti fisici
La dimensione finita della memoria ha conseguenze concrete: la virgola mobile introduce approssimazioni nei calcoli, la codifica in complemento a 2 limita l’intervallo dei numeri negativi, e quando la RAM si esaurisce il sistema operativo attiva la memoria virtuale — simulando più RAM usando spazio su disco a costo di prestazioni ridotte.
Memoria primaria — RAM e ROM
RAM — Random Access Memory
La RAM è la memoria di lavoro della CPU. È volatile (perde il contenuto allo spegnimento) e offre accesso diretto: il tempo di lettura/scrittura è costante indipendentemente dalla posizione della locazione acceduta — un vantaggio fondamentale rispetto ai supporti sequenziali.
DRAM — Dynamic RAM
Usa condensatori per memorizzare i bit. Richiede un ciclo di refresh continuo per mantenere la carica — senza refresh il dato si perde. Economica e ad alta densità.
Usata in: RAM dei PC e smartphone
SRAM — Static RAM
Usa flip-flop D — circuiti bistabili che mantengono il bit senza refresh finché c’è alimentazione. Molto più veloce ma anche molto più costosa e meno densa della DRAM.
Usata in: cache L1, L2, L3
Varianti moderne di DRAM
DDR
Double Data Rate
Trasferisce dati su entrambi i fronti del clock (salita e discesa) — raddoppia la banda rispetto alla SDRAM base. Evoluta in DDR2, DDR3, DDR4, DDR5.
SDRAM
Synchronous DRAM
Sincronizzata con il clock di sistema — elimina i tempi di attesa asincroni della DRAM classica, aumentando l’efficienza del trasferimento.
LPDDR
Low Power DDR
Variante a bassissimo consumo energetico per dispositivi mobili, IoT e sistemi embedded. Presente in smartphone, tablet e laptop ARM.
ROM — Read Only Memory
La ROM è non volatile e permanente: mantiene il contenuto anche senza alimentazione. Contiene il firmware essenziale del sistema — il BIOS nei PC tradizionali, il bootloader nei sistemi embedded. I dati sono scritti una sola volta (in fabbrica o tramite procedure speciali) e non modificabili durante l’uso normale.
Tipo
Scrittura
Cancellazione
Uso tipico
ROM
Solo in fabbrica
Impossibile
Firmware fisso — BIOS storici
PROM
Una sola volta dall’utente
Impossibile
Prototipazione, produzione limitata
EPROM
Riprogrammabile
UV — luce ultravioletta
Sviluppo embedded anni ’80–’90
EEPROM
Riprogrammabile
Elettrica — byte per byte
Configurazioni persistenti MCU
Flash
Riprogrammabile
Elettrica — per blocchi
SSD, chiavette USB, smartphone
Organizzazione interna della memoria
La memoria centrale è organizzata in celle (o locazioni), ognuna con un indirizzo univoco e una dimensione standard di 8 bit. Le celle sono raggruppate in word la cui dimensione varia con l’architettura (16, 32 o 64 bit).
// indirizzamento
Assoluto — specifica la posizione reale nella memoria fisica
Relativo — espresso come base + spiazzamento (offset). Alla base (registro segmento) si somma l’offset per ottenere l’indirizzo fisico. Fondamentale per la rilocazione dinamica.
// struttura di un chip di memoria
Le celle sono organizzate in matrice (righe × colonne). Un decodificatore — circuito con n ingressi e 2ⁿ uscite — seleziona la riga e la colonna giuste, attivando esattamente una cella per ogni combinazione di indirizzi.
n = 8 bit → 2⁸ = 256 locazioni indirizzabili
Lo Stack — memoria LIFO
Lo stack è una regione speciale della memoria centrale con accesso vincolato. Funziona secondo la logica LIFO (Last In, First Out): l’ultimo dato inserito è il primo ad essere estratto. Il registro SP (Stack Pointer) punta sempre alla cima dello stack — l’ultima locazione occupata.
// a cosa serve lo stack
▸ Indirizzo di ritorno dalle subroutine
▸ Salvataggio dei registri CPU
▸ Passaggio dei parametri alle funzioni
Operazione PUSH — esempio dettagliato
Stato iniziale: SP = 0x1000. Vogliamo inserire il valore 0xAB.
// passaggi PUSH 0xAB
SP viene decrementato: 0x1000 → 0x0FFF
Il valore viene scritto: Mem[0x0FFF] = 0xAB
// stato finale
SP = 0x0FFF
Mem[0x0FFF] = 0xAB
// perché si decrementa?
Lo stack cresce verso indirizzi più bassi. L’area sopra la cima (> SP) è già occupata; l’area sotto (< SP) è libera e disponibile per nuovi push.
Operazione POP — esempio dettagliato
Stato iniziale: SP = 0x0FFF, Mem[0x0FFF] = 0xAB. Vogliamo estrarre il dato in cima.
// passaggi POP
La CPU legge la cima: dato ← Mem[0x0FFF] → 0xAB
SP viene incrementato: 0x0FFF → 0x1000
// stato finale
SP = 0x1000
dato ottenuto = 0xAB
// il dato non viene “cancellato”
Dopo la POP, Mem[0x0FFF] contiene ancora 0xAB — ma la locazione è considerata libera perché SP ora punta sopra di essa. Verrà sovrascritta alla prossima PUSH.
// stack e chiamate di funzione
Quando il programma chiama una funzione, la CPU esegue automaticamente PUSH dell’indirizzo di ritorno (valore corrente del PC) nello stack. Al termine della funzione, l’istruzione RET esegue una POP di quell’indirizzo e lo carica nel PC — riprendendo l’esecuzione esattamente dove era stata interrotta.
Memorie di massa
Le memorie di massa conservano dati e programmi in modo permanente, anche senza alimentazione. Si dividono in dispositivi collegati direttamente al sistema e sistemi accessibili in rete.
HDD — Hard Disk Drive
Dischi magnetici rotanti — la testina di lettura/scrittura si sposta fisicamente sulle tracce del disco. Grande capacità a costi contenuti, ma tempi di accesso lenti (millisecondi) per le parti meccaniche.
Capacità: fino a 20+ TB · Velocità: ~100–200 MB/s
SSD — Solid State Drive
Celle di memoria Flash — nessuna parte meccanica mobile. Velocità molto superiori all’HDD, consumi ridotti, resistenza agli urti. Costo per GB più alto ma in costante riduzione.
NVMe PCIe: fino a 7+ GB/s · SATA: ~550 MB/s
Storage in rete — NAS e SAN
NAS
Network Attached Storage
Dispositivo singolo collegato alla rete locale — permette a più utenti di accedere ai dati contemporaneamente. Spesso dotato di RAID per ridondanza. Semplice da configurare e gestire.
Ideale per: uffici, piccoli team, home server, backup centralizzato
SAN
Storage Area Network
Rete dedicata esclusivamente allo storage — più dispositivi interconnessi via fibra ottica. Prestazioni elevate, bassa latenza, gestione centralizzata di backup e distribuzione dati tra server.
Ideale per: banche dati enterprise, cloud privati, datacenter ad alto carico
La gerarchia delle memorie
Le diverse tecnologie di memoria sono organizzate in una gerarchia piramidale: salendo verso la cima aumentano la velocità e il costo, scendendo aumentano la capacità e la latenza. La CPU accede prima ai livelli superiori, poi a quelli inferiori.
REGISTRI CPU
Pochi byte — latenza 0 cicli
Velocità massima Costo massimo
CACHE L1 / L2 / L3
KB–MB — latenza 1–50 cicli — SRAM
Veloce Costosa
RAM (DRAM)
GB — latenza ~100 ns — DRAM
Media velocità Medio costo
SSD / MEMORIA FLASH
TB — latenza μs/ms
Più lento Economico
HDD / NAS / SAN
PB — latenza ms
Velocità minima Costo minimo
// principi di località
La gerarchia funziona grazie a due principi empirici: località temporale — ciò che viene usato ora probabilmente verrà riusato presto — e località spaziale — ciò che sta vicino in memoria a un dato usato verrà probabilmente usato a breve. L’algoritmo LRU (Least Recently Used) sfrutta questi principi per decidere quale dato rimuovere quando il livello superiore è pieno.
Controllo e correzione degli errori
Durante la memorizzazione o la trasmissione dei dati possono insorgere errori causati da interferenze elettromagnetiche, variazioni di tensione o difetti fisici. Esistono tecniche per rilevare e correggere questi errori tramite bit di controllo aggiuntivi.
Codice di Hamming
Aggiunge bit di parità calcolati su sottoinsiemi specifici dei bit del dato. Consente non solo di rilevare ma anche di correggere un errore su singolo bit — il bit errato viene identificato dalla posizione che risulta sbagliata nei controlli di parità.
Usato in: RAM ECC (Error Correcting Code) per server e workstation
CRC — Cyclic Redundancy Check
Calcola una firma digitale del blocco di dati tramite divisione polinomiale. Questa firma viene trasmessa o memorizzata insieme al dato — al momento della lettura si ricalcola la firma e si confronta: una discrepanza segnala un errore.
Usato in: Ethernet, USB, ZIP, filesystem (NTFS, ext4)
Riepilogo
La memoria si divide funzionalmente in primaria (accessibile dalla CPU, veloce, limitata) e secondaria (permanente, capiente, più lenta)
L’unità base è il byte (8 bit) — la più piccola locazione indirizzabile. I multipli sono basati su potenze di 2: 1 KB = 1024 byte
La DRAM usa condensatori e richiede refresh — economica, usata nella RAM principale. La SRAM usa flip-flop, è più veloce — usata nella cache
Le varianti DDR, SDRAM e LPDDR migliorano banda, sincronizzazione e consumo energetico rispettivamente
Le ROM e le sue varianti (PROM, EPROM, EEPROM, Flash) sono non volatili — dal firmware fisso alle memorie Flash degli SSD
Lo stack è una regione LIFO gestita dal registro SP: PUSH decrementa SP e scrive, POP legge e incrementa SP
La gerarchia delle memorie bilancia velocità e costo: registri → cache → RAM → SSD → HDD
LRU e i principi di località temporale/spaziale guidano il trasferimento tra livelli
Il codice di Hamming corregge errori su singolo bit; il CRC rileva errori nei blocchi di dati trasmessi o archiviati
Questo sito Web utilizza i cookie per migliorare la tua esperienza.Supponiamo che tu stia bene con questo, ma puoi rinunciare se lo desideri.
Read More
I cookie sono piccoli file di testo che possono essere utilizzati dai siti Web per rendere più efficiente l'esperienza dell'utente.La legge afferma che possiamo archiviare i cookie sul tuo dispositivo se sono rigorosamente necessari per il funzionamento di questo sito.Per tutti gli altri tipi di cookie, abbiamo bisogno del tuo permesso.Questo sito utilizza diversi tipi di cookie.Alcuni cookie sono collocati da servizi di terze parti che appaiono nelle nostre pagine.
I cookie necessari aiutano a rendere utilizzabile un sito Web consentendo funzioni di base come la navigazione di pagina e l\'accesso alle aree sicure del sito Web.Il sito Web non può funzionare correttamente senza questi cookie.
I cookie di marketing vengono utilizzati per tenere traccia dei visitatori sui siti Web.L\'intenzione è quella di visualizzare annunci pertinenti e coinvolgenti per il singolo utente e quindi più preziosi per gli editori e gli inserzionisti di terze parti.
I cookie di analisi aiutano i proprietari di siti Web a capire come i visitatori interagiscono con i siti Web raccogliendo e segnalando informazioni in modo anonimo.
I cookie di preferenza consentono a un sito Web di ricordare le informazioni che cambiano il modo in cui il sito Web si comporta o sembra, come la tua lingua preferita o la regione in cui ti trovi.
I cookie non classificati sono cookie che stiamo classificando, insieme ai fornitori di singoli cookie.
Cookie Settings
Gestisci Consenso
Per fornire le migliori esperienze, utilizziamo tecnologie come i cookie per memorizzare e/o accedere alle informazioni del dispositivo. Il consenso a queste tecnologie ci permetterà di elaborare dati come il comportamento di navigazione o ID unici su questo sito. Non acconsentire o ritirare il consenso può influire negativamente su alcune caratteristiche e funzioni.
Funzionale
Sempre attivo
L'archiviazione tecnica o l'accesso sono strettamente necessari al fine legittimo di consentire l'uso di un servizio specifico esplicitamente richiesto dall'abbonato o dall'utente, o al solo scopo di effettuare la trasmissione di una comunicazione su una rete di comunicazione elettronica.
Preferenze
L'archiviazione tecnica o l'accesso sono necessari per lo scopo legittimo di memorizzare le preferenze che non sono richieste dall'abbonato o dall'utente.
Statistiche
L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici.L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici anonimi. Senza un mandato di comparizione, una conformità volontaria da parte del vostro Fornitore di Servizi Internet, o ulteriori registrazioni da parte di terzi, le informazioni memorizzate o recuperate per questo scopo da sole non possono di solito essere utilizzate per l'identificazione.
Marketing
L'archiviazione tecnica o l'accesso sono necessari per creare profili di utenti per inviare pubblicità, o per tracciare l'utente su un sito web o su diversi siti web per scopi di marketing simili.