La memoria

Transcript

La memoria
Capitolo 5
Le infrastrutture HardWare
La memoria centrale
La memoria
La memoria
¾
¾
¾
Supporto alla CPU: deve fornire alla CPU dati e
istruzioni il più rapidamente possibile
Archivio: deve consentire di archiviare dati e
programmi garantendone la conservazione e la
reperibilità anche dopo elevati periodi di tempo
Diverse esigenze:
• velocità per il supporto alla CPU
• non volatilità ed elevate dimensioni per l’archivio
¾
Diverse tecnologie
• elettronica: veloce, ma costosa e volatile
• magnetica e ottica: non volatile ed economica, ma molto
lenta
Criteri di caratterizzazione di una memoria
¾
¾
¾
¾
¾
Velocità
Volatilità
Capacità
Costo (per bit)
Modalità di accesso
•
•
•
•
diretta (o casuale)
sequenziale
mista
associativa
La memoria centrale
La memoria centrale (RAM)
¾ Mantiene
al proprio interno i dati e
le istruzioni dei programmi in esecuzione
¾ Memoria ad accesso “casuale”
¾ Tecnologia elettronica
• veloce ma volatile e costosa
¾ Due
“eccezioni”
• ROM: elettronica ma permanente e di sola lettura
• Flash: elettronica ma non volatile e riscrivibile
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 come accesso all’informazione;
• 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 32/64 bit), su cui la CPU esegue le operazioni.
Organizzazione della memoria
¾
Anche gli indirizzi della memoria sono
rappresentati come numeri binari:
• un indirizzo di M bit consente di indirizzare 2M celle;
• per 6 o 8 celle bastano 3 bit, per 12 celle ne servono 4;
• il numero di bit nell’indirizzo determina il numero
massimo di celle indirizzabili nella memoria ed è
indipendente dal numero di bit per cella (una memoria con
212 celle richiede sempre 12 bit di indirizzo, quale che sia
la dimensione di una cella).
¾
Una memoria può essere organizzata in diversi
modi:
• con 96 bit possiamo avere 6 celle di 16 bit (6*16=96), o 8
celle di 12 bit (8*12=96) o 12 celle di 8 bit (12*8=96).
Organizzazione della memoria
0
0
0
1
1
1
2
2
2
3
3
3
4
4
4
5
5
5
6
6
7
7
8 parole da 12 bit
8
6 parole da 16 bit
9
10
12 parole da 8 bit 11
Memoria e collegamenti con bus
¾
¾
Viene selezionata la
parola di indirizzo 0110due
il contenuto è 01101100;
l’operazione è di lettura
(load) o di scrittura
(store) a seconda dei
comandi presenti sul bus
di controllo
0110
Bus indirizzi
DECODIFICATORE
¾
linee di
selezione parola
linea 0
0
linea 1
0
linea 2
0
linea 3
0
linea 4
0
linea 5
0
linea 6
1
linea 7
0
linea 8
0
linea 9
0
linea 10
0
linea 11
0
linea 12
0
linea 13
0
linea 14
0
linea 15
0
16 celle di memoria
di 8 bit ciascuna
0
1
1
0
1
1
0
0
0
1
1
0
1
1
0
0
parola
selezionata
leggi/scrivi
Bus di
controllo
Bus dati
Dato
(letto o da scrivere)
Memoria vs. CPU
¾
Le CPU sono sempre state più veloci delle memorie
• l’aumento di integrazione ha consentito di realizzare CPU
pipeline e super scalari, molto efficienti e veloci;
• nelle memorie è aumentata la capacità più che la velocità.
¾
L’accesso alla memoria passa attraverso il bus
• la frequenza di funzionamento del bus è molto più bassa
di quella della CPU;
• il bus può essere impegnato ad effettuare trasferimenti
controllati da dispositivi di I/O “autonomi” (e.g. DMA).
¾
¾
È difficile riordinare le istruzioni in modo da poter
sfruttare i tempi di attesa della memoria.
È possibile fare memorie molto veloci se stanno nel
chip della CPU, ma sono piccole e costose.
Le memorie gerarchiche
¾
Memorie di gran capacità, relativamente lente,
economiche ed accessibili tramite il bus:
• MGL ovvero Memoria Grossa e Lenta;
• dimensioni pari a circa 10 unità;
• tempo di accesso (TA) di circa 10 unità.
¾
Memorie veloci, integrate nello stesso chip della
CPU, ma costose:
• MPV ovvero Memoria Piccola e Veloce;
• dimensioni pari a circa 1 unità;
• tempo di accesso pari a circa 1 unità.
¾
Obiettivo: realizzare una memoria grossa e veloce
• dimensioni pari a circa quelle della memoria grossa;
• prestazioni pari a circa quelle della memoria veloce.
Una gerarchia di memoria
¾
Memoria formata da una MPV e una MGL:
• la MPV contiene una copia di alcune celle della MGL;
• quando la CPU chiede una particolare cella di memoria la
richiesta va ad entrambe le memorie:
• se il dato si trova nella MPV, viene passato direttamente alla CPU;
• se il dato si trova nella MGL, viene anche caricato nella MPV.
¾
Ipotesi: distribuzione uniforme delle richieste
• la frequenza con cui si trova il dato cercato nella MPV (hit
ratio) sarà in media il 10% (1/10), in questi casi il tempo di
accesso (hit time) sarà pari a 1 unità;
• la frequenza con cui è necessario accedere alla MGL (miss
ratio) sarà in media il 90% (9/10), in questi casi il tempo di
accesso (miss penalty) sarà pari a 10 unità;
• il tempo medio di accesso sarà 0.1*1+0.9*10=9.1 unità!
Gerarchia di memoria
Sistema di
memoria
CPU
Memoria piccola
e veloce
Livello 1
Trasferimento
di dati
Livello 2
Memoria grande
e lenta
Il principio di località
¾
Località spaziale:
quando si accede all’indirizzo A, è molto probabile
che gli accessi successivi richiedano celle vicine ad A.
• le istruzioni del codice vengono in genere lette da locazioni
consecutive della memoria;
• gli accessi ad array o a strutture dati sono “vicini”.
¾
Località temporale:
quando si accede all’indirizzo A, è molto probabile
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 si sfrutta la località
¾
Diversi approcci a seconda del tipo di località:
• località temporale:
temporale i dati prelevati dalla MGL vengono
conservati nella MPV il più a lungo possibile;
• località spaziale:
spaziale quando si copia un dato dalla MGL alla
MPV, si copiano anche i dati vicini (cache line o blocco).
¾
La frequenza di successo (hit ratio – h) cresce fino
a superare il 99%:
• in effetti h dipende da due caratteristiche contrastanti:
• la dimensione dei blocchi
un blocco grande sfrutta meglio la località spaziale;
• quanti sono i blocchi in memoria
se c’è spazio per tanti blocchi un dato resta in memoria più a lungo
e può sfruttare più a lungo la località temporale;
• c’è anche il problema del costo della memoria più veloce
detta cache (francese: nascosto)!
L’effetto della località
Effetto del principio di località sull’esempio di prima:
• tempo di accesso alla cache pari a 1 unità (TAC = 1);
1
• tempo di accesso alla memoria (detto anche miss penalty,
ovvero penalità di fallimento) pari a 10 unità (TAM = 10);
10
• frequenza di successo (hit ratio, h = 0.99);
0.99
• frequenza di fallimento (miss ratio, m = 1 – h = 0.01);
0.01
• tempo di accesso medio pari a:
TA = h * TAC + m * TAM
TA = 0.99 * 1 + 0.01 * 10 = 1.09
Una gerarchia di memoria
Ottenuta per “generalizzazione” dell’applicazione
del principio di località e tipicamente costituita da
1.
2.
3.
4.
5.
registri contenuti nella CPU (qualche KB)
cache (da circa 32KB a circa 1024KB)
memoria principale (da circa 64MB a qualche GB)
dischi fissi (da qualche GB a qualche TB)
nastri magnetici e dischi ottici (da qualche GB a qualche
TB per ogni supporto)
Man mano che ci si sposta verso il basso nella
gerarchia aumenta il valore dei parametri
fondamentali:
•
•
•
aumenta il tempo di accesso;
aumenta la capacità di memorizzazione;
ma diminuisce il costo per bit.
RAM
Supporti esterni
tecnologia
magnetica
(HD esterni)
tecnologia
ottica
(CD, DVD)
tecnologia
elettronica
(flash disk)
Disco fisso (hard disk)
tecnologia magnetica
Involucro esterno del calcolatore (case)
Cache II liv
Scheda madre (motherboard)
Cache I liv
Circuito Integrato (chip)
Registri
CPU
Una gerarchia di memoria
Caratteristiche dei diversi livelli
Livello
Capacità
Tempo di accesso
Transfer rate
(GB/s)
Registri
~ 1 KB
~ 0.2 ns
(1 ciclo di clock)
–
Cache I livello
~ 32 KB
~ 0.4 ns
(2/4 cicli di clock)
–
Cache II livello
~ 1/2 MB
~ 1/2 ns
(5/10 cicli di clock)
~ 100
Cache III livello
~ 2/8 MB
~ 5 ns
~ 50
Memoria
centrale
~ 2/8 GB
~ 50 ns (1ª parola richiesta)
~ 10 ns (parole successive)
~ 5/10
Dischi interni
> 300 GB
~ 10 ms
0.15/0.6
Dischi esterni
> 300 GB
~ 10 ms
~ 0.05
La memoria centrale
elettronica (veloce ma volatile)
¾ Gerarchia di memoria:
ai livelli più alti corrispondono le tecnologie
più veloci ma anche più costose
¾ Tecnologia
• cache interna (Static RAM – SRAM)
• cache esterna (SRAM)
• memoria RAM
(Dynamic RAM – DRAM e sue varianti)
• area di swap su memoria di massa
Memoria cache: SRAM
¾
¾
Interna (L1) Æ stessa frequenza della CPU
Esterna (L2 e/o L3)
• Tre diverse posizioni/configurazioni
• Saldata sulla motherboard
• Card Edge Low Profile (CELP) socket
• COAST (Cache On A STick) module
• Diverse tipologie
• Asynchronous SRAM (più economica),
TA compreso tra 12 e 20ns, OK per bus tra 50 e 66 MHz, timing = 32-2-2
• Synchronous Burst SRAM (Synch SRAM)
Bus fino a 66 MHz Æ timing = 2-1-1-1
Bus oltre i 66 MHz Æ timing = 3-2-2-2
• Synchronous Pipelined Burst SRAM (PB SRAM)
TA compreso tra 4.5 e 8ns, OK per bus fino a 133 MHz, timing = 3-11-1
Memoria centrale – DRAM
¾
Fast Page Mode DRAM (FPM DRAM)
• TA=70-60ns Æ timing = 5-3-3-3.
• Per la lettura si attiva la riga, la colonna, si validano i dati, si
trasferiscono i dati, poi si disattiva la colonna
• I miglioramenti di velocità nascono dal progresso della tecnologia di
integrazione.
¾
Extended Data Out DRAM (EDO DRAM)
• TA = 70-50ns Æ timing = 5-2-2-2
• Non richiede la disattivazione della colonna e del buffer di uscita; 60ns
è il minimo per bus a 66MHz
¾
Burst EDO DRAM (BEDO DRAM)
• Evoluzione di EDO DRAM Æ timing = 5-1-1-1
(pipeline + 2-bit burst counter)
• Mai davvero supportata.
Memoria centrale – DRAM
¾
Synchronous DRAM (SDRAM)
• Sfrutta la sequenzialità delle richieste: una volta trovato il primo dato
gli altri vengono recuperati velocemente.
• Fornisce dati fino a 10ns (100MHz) con timing 6-1-1-1
¾
PC133 SDRAM
• Evoluzione della SDRAM per bus a 133MHz
• Trasferimento dati fino a 1.6GBps
¾
Double Data Rate DRAM (DDR DRAM)
• Sfrutta entrambi i fronti del clock per trasferire dati: raddoppia la
frequenza efficace non quella effettiva.
¾
Direct Rambus DRAM (DRDRAM)
• Risultato della collaborazione tra Intel e Rambus
• Nuova architettura: 600-800MHz (1000MHz nel 2001)
con bus di sistema a 133MHz.
• 1 canale arriva fino a 1.6GBps (4 canali 6.4 GBps)
Packaging
¾
Fino all’inizio degli anni ‘90 la memoria veniva
prodotta, acquistata e installata su chip singoli
• densità variabili da 1 Kbit a 1 Mbit;
• i PC avevano zoccoli vuoti dove inserire altri chip.
¾
Oggi si monta un gruppo di chip, tipicamente 8 o
16, su un piccola scheda stampata che si vende
come unità minima installabile nei PC
• SIMM (Single Inline Memory Module) se la fila di connettori
si trova da un solo lato della scheda;
• DIMM (Dual Inline Memory Module) se i connettori si
trovano su ambedue i lati della scheda
¾
Sia SIMM che DIMM sono a volte dotate di un codice
di rilevazione o di correzione dell’errore.
Memoria centrale – Chip
¾
Single Inline Memory Module (SIMM)
• 30/72 pin sullo stesso lato della scheda;
• trasferimento dati a 8/32 bit per volta;
• utilizzabili “a coppie”.
¾
Dual In-line Memory Module (DIMM)
• 168 pin su due lati;
• 64 bit alla volta;
• utilizzabili anche singolarmente
¾
RIMM
• Moduli di RDRAM;
• interfaccia DIMM 100MHz.