Le Memorie
Prof. Maurizio Naldi
A.A. 2015/16
Memorie
•  Memoria Principale (centrale)
• 
• 
Si accede direttamente dalla CPU
non permanente
•  Memoria Secondaria (di massa)
• 
• 
Si accede tramite il sottosistema di input/output
permanente
Memoria principale e secondaria
Diversi obiettivi:
• (P) Supporto alla CPU: deve fornire alla CPU dati e istruzioni
il più rapidamente possibile
• (S) Archivio: deve consentire di archiviare dati e programmi
garantendone la conservazione e la reperibilità anche dopo
elevati periodi di tempo
Diverse esigenze:
• (P) velocità per il supporto alla CPU
• (S) non volatilità ed elevata capacità
Diverse tecnologie:
• (P) elettronica: veloce, ma costosa e dinamica (volatile)
• (S) stato solido, magnetica e ottica: economica, ma lenta
Criteri di valutazione
• 
• 
• 
• 
• 
Velocità
Volatilità
Capacità
Costo (per bit)
Modalità di accesso
–  diretto (o casuale) (es. RAM)
–  Sequenziale (es. nastri magnetici)
–  Misto (es. dischi)
–  Associativo (es. memorie cache)
Memoria Centrale
Memoria ad accesso “casuale” (RAM)
• Casuale va inteso nel senso che il tempo di
accesso non dipende dalla locazione
• Mantiene al proprio interno i dati e le istruzioni dei
programmi in esecuzione
• Tecnologia elettronica (1 transistor per ogni bit)
–  veloce, volatile e costosa
Due “varianti”
• ROM: elettronica, permanente ma solo lettura
• Flash: elettronica, permanente e riscrivibile
Memorie ROM e Flash
•  ROM (Read Only Memory): memoria
elettronica, permanente (non volatile)
utilizzabile solo in lettura
•  i dati sono memorizzati tramite collegamenti
elettronici definiti nella fase di costruzione.
Di regola non possono essere modificati
successivamente.
•  tempo di accesso: ~ 150 nanosecondi
•  Flash: memoria elettronica, non volatile
e riscrivibile
•  informazioni registrate in transistor in grado di
mantenere la carica elettrica per un tempo
lungo (effetto di campo)
•  tempo di accesso: ~ 75 nanosecondi (NOR)
~ 25 microsecondi (NAND)
Differenze tra ROM e RAM
•  Random Access Memory
– 
– 
– 
– 
termine in genere associato alla memoria centrale
prestazioni location-independent
Volatile: conserva dati e istruzioni solo se alimentata
capacità in MB (MegaByte) o GB (GigaByte)
•  Read-Only Memory
–  contiene parti essenziali del software di sistema quali
–  il BIOS (Basic Input/Output System)
–  il POST (Power On Self Test)
–  particolari varianti tecnologiche sono:
•  PROM, EPROM, EEPROM, FLASH
Interazione fra CPU e
Memoria Centrale
•  L’esecuzione delle istruzioni
causa una sequenza di accessi
alla memoria centrale
•  U n a v o l t a c a r i c a t o l ’ i n t e r o
programma nella memoria
centrale, l’unità di controllo
prende in considerazione la prima
istruzione, la decodifica e ordina
all’unità aritmetico-logica di
eseguirla
•  Il processore memorizza quindi il
risultato della prima istruzione e
prende in esame la successiva
Indirizzi di Memoria
I bit nelle memorie sono raggruppati in celle:
• tutte le celle sono formate dallo stesso numero di bit;
• una cella composta da k bit, è in grado di contenere una
qualunque tra 2k combinazioni diverse di bit.
Ogni cella ha un indirizzo:
• Serve per accedere al contenuto della cella;
• in una memoria con N celle gli indirizzi vanno da 0 a N–1.
La cella è l’unità indirizzabile più piccola.
• In quasi tutti i calcolatori è di 8 bit (un byte).
I byte vengono raggruppati in parole (che oggi sono
di 4/8 byte) che la CPU accede in lettura e scrittura.
Organizzazione della Memoria
Anche gli indirizzi della memoria sono
rappresentati come numeri binari:
• un indirizzo di M bit consente di
indirizzare 2M celle di memoria;
–  ad esempio per 16 celle bastano 4
bit (24 = 16)
• oggi gli indirizzi sono a 32 o 64 bit
–  con 64 bit si possono indirizzare
18446744073709551616 (264)
celle
diciotto miliardi di miliardi!
• internamente l’accesso avviene come in
una matrice (righe e colonne)
Memoria vs. CPU
Memoria vs. CPU
Le CPU sono sempre state più veloci delle memorie
• La miniaturizzazione ha consentito alle CPU di raggiungere
velocità di esecuzione sempre più elevate
–  Più i componenti sono piccoli, più alta può essere la frequenza delle
operazioni
• nelle memorie è aumentata la capacità più che la velocità
–  Alla fine degli anni 80 un Personal Computer aveva 1 Megabyte di
RAM. Oggi un laptop ha almeno 4 Gigabyte (4000 volte di più)
–  i tempi di accesso (CAS latency) però sono calati molto meno:
da circa 100 nanosecondi a circa 10
È possibile inserire memorie molto più veloci nello
stesso chip della CPU, ma le dimensioni sono
piccole ed i costi molto elevati.
Gerarchia di Memoria
Gerarchia di Memoria
Tipicamente costituita da:
1. Registri contenuti nella CPU (al più qualche KiloByte)
2. Cache (qualche MegaByte), es. MacBook Air 4 MB L3 (i7)
3. Memoria principale (alcuni-decine di GigaByte), es. MacBook
Air 4-8 GB
4. Dischi (da centinaia di GigaByte a qualche TeraByte)
5. Nastri magnetici e dischi ottici (da GB a TB)
Quando ci si sposta verso il basso nella gerarchia:
• aumenta il tempo di accesso;
• aumenta la capacità di memorizzazione;
• diminuisce costo per byte.
Memorie disponibili
•  Memorie veloci, integrate nello stesso chip della
CPU, ma costose:
– Chiamiamole MPV (per Memorie Piccole e Veloci).
•  Memorie di grande capacità, relativamente lente,
economiche ed accessibili tramite il bus:
– Capacità circa 100 volte superiori;
– Tempi di accesso circa 10 volte superiori.
– Chiamiamole MGL (per Memorie Grandi e Lente).
Vorremmo il meglio dei due mondi: una memoria
grande e veloce (capacità MGL e prestazioni MPV)
Come fare?
Gerarchia a due livelli
Memoria formata da una MPV e
una MGL:
• MPV contiene una copia di
alcune celle della MGL;
• quando la CPU chiede una
cella di memoria, la richiesta
viene intercettata dalla MPV:
– se il dato si trova nella MPV, viene
passato direttamente alla CPU;
– altrimenti, il dato si ottiene dalla MGL,
e viene anche caricato nella MPV.
Principio di località
Località spaziale: quando si accede all’indirizzo A, è
molto probabile che gli accessi successivi richiedano
celle vicine ad A.
• le istruzioni vengono in genere lette da locazioni consecutive
della memoria;
• gli accessi a vettori o a strutture dati sono “vicini”.
Località temporale: quando si accede all’indirizzo A,
è molto probabile che negli accessi successivi si
richieda di nuovo la cella A.
• cicli di istruzioni accedono ripetutamente alle stesse locazioni
di memoria;
• istruzioni vicine tendono ad utilizzare le stesse variabili.
Come sfruttare la località
Dipende dal tipo di località:
• Località temporale: i dati prelevati dalla MGL
dovrebbero essere conservati nella MPV il più a
lungo possibile;
• Località spaziale: quando si copia un dato dalla
MGL alla MPV, dovremmo copiare anche i dati vicini
(cache line o blocco).
Necessità contrastanti:
• per la località spaziale servirebbero blocchi grandi
• per la località temporale servirebbero blocchi piccoli
(se c’è spazio per tanti blocchi un blocco resta nella
MPV più a lungo)
Come sfruttare la località
• Se gli accessi in memoria rispettano i principi di
località
• Se il sistema MPV/MGL è ben proporzionato
– dimensione dei blocchi e numero dei blocchi nella MPV
• Allora la frequenza di successo (hit ratio) può
superare il 90%
–  il tempo medio di accesso scende a 0.90*1+0.10*10 =
1.9
Il costo della MPV è molto elevato rispetto a quello
della MGL
–  viene utilizzata una gerarchia di MPV
–  cache L1, L2, L3, con dimensioni da pochi KiloByte a
decine di MegaByte
Caratteristiche gerarchia di
memorie
Memoria secondaria
Supporti di memorizzazione
•  Dischi magnetici
–  disco fisso (Hard-disk, capacità da poche decine a migliaia
di GigaByte)
–  dischi rimovibili (capacità come gli HD)
–  Combinazione di parti meccaniche ed elettroniche
•  Dischi ottici
–  CD-ROM (Compact Disk a sola lettura, capacità tipica 650
Mbytes), CD-R (WORM), CD-RW (RAM)
–  DVD (Digital Versatile Disk, capacità min 4.7 Gbyte, (1lato/
1 strato) film full motion a schermo largo, 3 canali audio)
–  Unità a stato solido
–  non è un disco, capacità fino a qualche centinaio di
GigaByte.
–  Fondamentalmente una memoria Flash
–  Tipiche di smartphone, tablet, laptop di fascia alta
Funzionamento di un hard
disk
•  Per effettuare un’operazione di lettura o scrittura è necessario che
la testina si posizioni in corrispondenza del blocco desiderato
•  La velocità di rotazione del disco può arrivare a 15000 giri al minuto!
•  La dimensione del blocco varia da 512 byte a qualche KiloByte
Funzionamento di un hard
disk
•  La meccanica del hard disk è molto sofisticata ma delicata
•  La capacità di scrittura è nell’ordine di qualche MegaByte al
secondo
•  La capacità di lettura è più elevata grazie a meccanismi di precaricamento ed alla presenza di memorie più veloci di appoggio.
Memorie a Stato Solido
(SSD)
•  L’unità a stato solido o drive a stato solido, in sigla SSD (solid-state
drive), utilizza memoria Flash per l'archiviazione di massa dei dati.
•  La principale differenza con i classici dischi è la possibilità di
memorizzare in modo non volatile grandi quantità di dati, senza
utilizzare parti meccaniche
•  Oltre alla memoria in sé, un'unità disco SSD dispone di diversi
componenti di supporto alle operazioni: controller (microprocessore),
memory cache, supercondensatore (o batteria tampone), interfaccia
(generalmente SATA2 (3Gb/s) o SATA3 (6Gb/s))
Hard Disk vs SSD
•  La frammentazione di un disco SSD non influisce sulle sue
prestazioni, poiché il tempo d'accesso a qualunque cella è
identico;
•  Attualmente un SSD ha un limite sul numero massimo di
operazioni di scrittura (ma è un numero MOLTO elevato)
•  Il tasso di rottura di un SSD oscilla tra lo 0.5% e il 3%, mentre
negli hard disk può raggiungere il 10%.
•  Un SSD ha minori consumi e minore produzione di calore
•  Un SSD ha tempi di accesso e archiviazione ridotti: si lavora
nell'ordine dei decimi di millisecondo; il tempo di accesso dei
dischi magnetici è oltre 50 volte maggiore, attestandosi invece
tra i 5 e i 10 millisecondi.
•  Il costo per byte del SSD è sensibilmente più elevato (per ora).
Hard Disk vs SSD
Flash drive USB
•  Accesso seriale ad alta
velocità (max 480 Mbit/s
con USB 2.0)
•  Uso di microprocessori ad
alta velocità e basso
consumo
•  Possibilità di scrittura su
singoli settori