Le memorie di un calcolatore rappresentano uno degli elementi fondamentali all’interno di un sistema informatico. Svolgono un ruolo cruciale nella conservazione temporanea o permanente dei dati, consentendo al calcolatore di eseguire operazioni, immagazzinare informazioni e recuperare dati quando necessario. In questo capitolo, esploreremo le diverse tipologie di memoria presenti in un calcolatore e il loro ruolo nel funzionamento complessivo del sistema.
Memoria centrale
Le memorie si dividono in due tipologie: memoria centrale e memoria di massa
La memoria centrale è una forma di memoria che fornisce uno spazio di archiviazione temporanea o non per dati e istruzioni in uso. È cruciale durante l’esecuzione di programmi, poiché consente alla CPU di accedere rapidamente ai dati necessari per l’elaborazione. Le principali unità di memorizzazione della memoria centrale sono:
- Memoria RAM (Random Access Memory): Utilizzata per l’archiviazione temporanea dei dati durante l’esecuzione dei programmi. La RAM è di tipo volatile, il che significa che perde i dati quando il sistema viene spento. Tuttavia, è estremamente veloce nell’accesso ai dati, consentendo una rapida esecuzione delle istruzioni.
- Memoria ROM (Read-Only Memory): Contiene informazioni di base del sistema e istruzioni permanenti. A differenza della RAM, la ROM è di tipo non volatile, mantenendo i dati anche quando il sistema viene spento. Le informazioni in una memoria ROM sono solitamente scritte durante la fase di produzione e non possono essere modificate durante l’uso normale.
- Memoria Cache: Situata tra la RAM e la CPU, la cache è utilizzata per memorizzare temporaneamente i dati e le istruzioni frequentemente utilizzati. La cache contribuisce ad aumentare la velocità di accesso alla memoria durante le operazioni di lettura/scrittura.
Bit
Nel contesto delle memorie di un calcolatore, il bit rappresenta l’unità di base di memorizzazione dei dati. La parola “bit” è una contrazione di “binary digit” (cifra binaria), ed è la più piccola quantità di dati che può assumere uno dei due valori: 0 o 1.
Questo sistema binario è alla base di tutte le operazioni di memorizzazione e elaborazione dei dati nei computer moderni. Ogni bit può esprimere uno di questi due stati, e la combinazione di più bit consente di rappresentare una varietà di dati e informazioni.
I bit sono utilizzati nelle memorizzazioni di differenti tipi di dato e sono utilizzati in più contesti:
- Memoria Digitale: Tutte le informazioni nei calcolatori, compresi testi, immagini, suoni e istruzioni di programma, sono alla fine rappresentate come sequenze di bit. Ad esempio, un carattere in un linguaggio di programmazione può essere rappresentato da un certo numero di bit.
- Codifica dei Colori: Nelle immagini digitali, i colori sono spesso rappresentati usando combinazioni di bit. Ad esempio, in un sistema RGB (Rosso, Verde, Blu), la quantità di luce per ogni colore può essere rappresentata da un numero binario.
- Istruzioni di Programma: Le istruzioni eseguite dalla CPU sono anch’esse rappresentate in forma binaria. Ogni istruzione specifica un’operazione e può contenere informazioni su dati o indirizzi di memoria.
Codifica delle informazioni
I bit vengono utilizzati come unità fondamentale per la codifica delle informazioni. La combinazione di bit permette di rappresentare informazioni complesse. Ad esempio, in un indirizzo di memoria, ogni bit può rappresentare una posizione di memoria, consentendo di indirizzare una vasta gamma di locazioni.
Il bit è l’unità fondamentale di informazione, con due possibili stati: 0 o 1. Con un singolo bit è possibile rappresentare due informazioni:
Con due bit è possibile codificare quattro informazioni:
e così via. In generale il numero di informazioni che è possibile codificare è pari a due elevato al numero di bit che si hanno a disposizione.
Byte
Un byte è composto da 8 bit. Questo significa che un byte può rappresentare 28 = 256 combinazioni possibili di informazioni. Ad esempio, un byte può rappresentare 256 valori numerici distinti, caratteri ASCII o livelli di colore. Di seguito è presente la tabella con i multipli e i sottomultipli del Byte
Utilizzo di bit
I bit sono utilizzati in diversi contesti. Permettono di comprendere il numero di indirizzi che possiede la memoria RAM. In un sistema di indirizzamento di memoria, un indirizzo a N bit può rappresentare 2N posizioni di memoria uniche. Quindi, più bit sono disponibili per l’indirizzamento, maggiore sarà la capacità di rappresentare posizioni di memoria.
Il numero di bit per pixel in un’immagine determina il numero di colori che possono essere rappresentati. Ad esempio, 8 bit per pixel possono rappresentare 28 = 256 colori diversi, mentre per il testo un sistema ASCII a 7 bit può rappresentare 27=128 caratteri diversi.
Infine in un sistema di archiviazione, come un disco rigido o un SSD, il numero di bit determina la capacità massima di archiviazione del dispositivo. Ad esempio, un disco rigido da 1 terabyte contiene circa 240 bit di informazione.
Memoria RAM
La memoria RAM è il banco di lavoro del computer ed è direttamente accessibile dalla CPU.
La RAM contiene tutti i programmi attualmente in esecuzione che prendono il nome di processi. Come abbiamo descritto precedentemente, la CPU dialoga direttamente con la RAM e attua le varie fasi del ciclo macchina (Fetch, Decode, Execute).
La memoria RAM (Random Access Memory) è un componente essenziale nei sistemi informatici e fornisce uno spazio di archiviazione temporanea per dati e istruzioni in uso. La sua struttura complessa consente un accesso rapido ai dati, contribuendo in modo significativo alle prestazioni globali di un sistema.
Struttura della RAM
La RAM è costituita da una serie di celle, ognuna delle quali può contenere un bit, ovvero un valore binario (0 o 1). Le celle sono organizzate in una matrice, in cui ogni riga e ogni colonna corrisponde a un indirizzo di memoria.
Più nel dettaglio l’array è bidimensionale (matrice), con colonne rappresentanti i bit di ciascuna cellula e righe corrispondenti agli indirizzi di memoria. L’organizzazione in array semplifica l’accesso sequenziale ai dati e offre una struttura ordinata per la gestione delle informazioni.
L’accesso ai dati nella memoria RAM avviene attraverso l’indirizzamento. Ogni cella di memoria ha un indirizzo numerico univoco che consente alla CPU di specificare la posizione esatta da cui leggere o scrivere dati. L’indirizzo è espresso in binario e può variare in lunghezza a seconda della quantità di memoria installata nel sistema.
Supponiamo di avere una memoria RAM con 8 byte di capacità. Ogni byte ha un indirizzo univoco, numerato da 0 a 7. Quindi, la memoria avrà le seguenti posizioni e indirizzi:
Ad ogni indirizzo è contenuta una parola ovvero un insieme di bit che costituiscono il contenuto informativo corrispondente. Una parola di memoria è un gruppo di bit di una determinata dimensione che sono gestiti come unità dal set di istruzioni o dall’hardware di un processore. La dimensione della parola di memoria dipende dall’architettura del computer e influisce su diversi aspetti, come la capacità di rappresentare numeri interi, la risoluzione degli indirizzi di memoria e la velocità di trasferimento dei dati.
Ad esempio, i processori Intel x86 usano parole di 16, 32 o 64 bit, mentre i processori ARM usano parole di 32 o 64 bit.
Tipi di RAM
SRAM (Static RAM): è una RAM statica, in cui ogni cella è formata da un circuito elettronico chiamato flip-flop, che mantiene il suo stato finché è alimentato. La SRAM è molto veloce, ma richiede molti componenti e occupa molto spazio, quindi ha una capacità limitata e un costo elevato. La SRAM è usata principalmente come cache, ovvero una memoria ausiliaria che memorizza temporaneamente i dati più usati dalla CPU, riducendo i tempi di accesso alla RAM principale.
DRAM (Dynamic RAM): è una RAM dinamica, in cui ogni cella è formata da un condensatore e da un transistor, che memorizzano il bit tramite una carica elettrica. La DRAM è più semplice e compatta della SRAM, quindi ha una capacità maggiore e un costo inferiore. Tuttavia, la DRAM è più lenta, in quanto i condensatori tendono a perdere la carica e devono essere periodicamente rinfrescati, ovvero ricaricati con il bit corretto. La DRAM è usata come memoria principale nei computer.
SDRAM (Synchronous DRAM): è una DRAM sincrona, in cui le operazioni di lettura e scrittura sono sincronizzate con il clock del sistema, ovvero il segnale elettrico che regola la frequenza di funzionamento della CPU e degli altri componenti. La SDRAM è più veloce della DRAM tradizionale, in quanto può trasferire più dati per ogni ciclo di clock. La SDRAM è stata il tipo di RAM più usato nei computer fino agli anni 2000.
DDR (Double Data Rate) SDRAM: è una SDRAM a doppia velocità di trasferimento, in cui i dati sono trasferiti sia sul fronte di salita che su quello di discesa del clock, raddoppiando la banda passante, ovvero la quantità di dati trasferibili per unità di tempo. La DDR SDRAM ha subito diverse evoluzioni, che hanno aumentato la frequenza di funzionamento e la capacità di memoria. Le principali generazioni di DDR SDRAM sono: DDR, DDR2, DDR3, DDR4 e DDR5. La DDR SDRAM è il tipo di RAM più usato nei computer attuali.
Memoria ROM
La Memoria ROM, acronimo di Read-Only Memory, è un tipo di memoria di archiviazione non volatile, il che significa che conserva le informazioni anche quando l’alimentazione del sistema viene spenta. A differenza della RAM, la ROM è progettata per la sola lettura, il che significa che il suo contenuto è immutabile o può essere modificato solo con difficoltà. Le caratteristiche principali sono:
- Non Volatile: La ROM mantiene le informazioni anche senza alimentazione elettrica.
- Sola Lettura: Di solito, il suo contenuto non può essere modificato durante l’uso normale.
- Memoria di Avvio: Spesso utilizzata per memorizzare il firmware e le istruzioni di avvio essenziali.
Le principali funzioni della memoria ROM sono:
- Firmware del BIOS: Contiene il firmware di base necessario per avviare il sistema operativo e le operazioni di basso livello.
- Bootloader: La memoria ROM può contenere il bootloader, il programma che avvia il sistema operativo durante l’avvio del dispositivo.
- Istruzioni Permanentemente Memorizzate: Oltre al firmware, la ROM può contenere dati costanti come tabelle di lookup e istruzioni di controllo hardware.
Memoria Cache
La memoria cache è un tipo di memoria ad accesso rapido situata tra la RAM (Memoria ad Accesso Casuale) e la CPU (Unità di Elaborazione Centrale). La sua funzione principale è quella di fornire un deposito temporaneo per i dati e le istruzioni più frequentemente utilizzati dalla CPU.
La cache funziona secondo il principio della località, che afferma che i programmi tendono ad accedere ripetutamente a porzioni ristrette di memoria. Quando la CPU richiede dati, la cache viene controllata prima della RAM. Se i dati richiesti sono presenti in cache (hit), vengono forniti rapidamente alla CPU. In caso contrario (miss), i dati devono essere recuperati dalla RAM e memorizzati nella cache per utilizzi futuri.
Gerarchia delle memorie
La “gerarchia delle memorie” si riferisce alla struttura organizzativa delle diverse tipologie di memoria in un sistema informatico, posizionando le memorie in un ordine gerarchico basato sulla velocità di accesso, sulla capacità e sui costi. Questa organizzazione è progettata per ottimizzare l’accesso ai dati, considerando che diverse memorie hanno caratteristiche diverse. La gerarchia delle memorie comprende tipicamente le seguenti categorie:
- Registri della CPU
- Memoria Cache
- Memoria RAM
- Memoria di archiviazione secondaria
Memorie di massa
Oltre alle memorie temporanee, i calcolatori utilizzano memorie di archiviazione di massa per conservare dati a lungo termine. Alcune delle principali tipologie sono:
- Hard Disk Drive (HDD): Un dispositivo di archiviazione magnetico che fornisce uno spazio di archiviazione di grandi dimensioni. Gli HDD sono comunemente utilizzati per conservare il sistema operativo, i programmi e i dati dell’utente.
- Solid State Drive (SSD): Utilizza tecnologie a stato solido per immagazzinare dati. Rispetto agli HDD, gli SSD offrono tempi di accesso più veloci e sono più resistenti ai danni fisici in quanto privi di parti mobili.
- Unità Flash: Comunemente utilizzate per la memorizzazione portatile, le unità flash sono memorie a stato solido con connettività USB. Sono utilizzate per trasferire e archiviare dati tra dispositivi.