Sistemi a Microprocessore - Dipartimento di Ingegneria dell

Transcript

Sistemi a Microprocessore - Dipartimento di Ingegneria dell
Corso di Laurea Ingegneria dell’Informazione
Sistemi a Microprocessore
A.A. 2007-2008
Prof. Ing. Ivan Bruno
Sistemi a Microprocessore
La Memoria
1
La Memoria
‡
La memoria in un calcolatore serve per
immagazzinare dati e le istruzioni dei programmi
da eseguire
‡
I principali tipi di memorie che si possono trovare
su un microcontrollore, e su un calcolatore in
genere, sono:
„
„
„
„
ROM (Read Only Memory) : programmata
permanentemente dal costruttore, non modificabile
RAM (Random Access Memory) : memoria volatile di
lettura e scrittura
EEPROM (Electrically EPROM) : memoria non volatile,
scrittura e cancellazione di celle entrambe elettriche
FLASH : memoria non volatile, variante delle EEPROM,
scrittura e cancellazione entrambe elettriche, non di
singole celle, ma di blocchi (updating +veloce)
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
3
Parametri di Valutazione
‡
Dimensione: definita in bit o byte. Talvolta fornita
in modo tale da descrivere l’architettura interna.
Es.: 64K x 4 bit: 65536 celle di 4 bit
‡
Velocità:
„
„
‡
Tempo di accesso: intervallo di tempo intercorso tra la
richiesta della lettura e la disponibilità del dato
Tempo di ciclo: intervallo di tempo minimo che
intercorre tra due operazioni
Altri Parametri: Potenza Dissipata, Costo,
Integrazione
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
4
2
Interfaccia Generica di una
Memoria
Una
Memoria
è
in
generale
accessibile
attraverso un Registro
indirizzo (MAR) ed un
registro Dati (MDR)
Un Segnale R/W indica
se l’operazione è di
lettura o scrittura
‡
‡
In Lettura:
L’indirizzo viene messo in
MAR il dato letto viene
recuperato da MDR.
08/11/2007
Architettura della
memoria
MAR
R/W
MDR
In Scrittura:
L’indirizzo viene messo in
MAR il dato in MDR.
Sistemi a Microprocessore A.A. 2007-2008
5
Principali tecnologie per la RAM
‡
Le memorie RAM sono di due tipi
„
„
Memorie statiche: Static Random Access Memory (SRAM)
Memorie dinamiche: Dynamic Random Access Memory (DRAM)
‡
Memorie statiche
‡
Memorie dinamiche
„
„
„
„
„
‡
Il singolo elemento corrisponde ad un flip-flop
Il singolo elemento corrisponde ad un condensatore ed un transistor
(dopo pochi millisecondi le informazioni vengono perse)
L’informazione è memorizzata sotto forma di carica del condensatore
Richiedono un refresh periodico dell’informazione
Per ottimizzare la realizzazione indirizzi di riga e indirizzi di colonna
vengono passati sullo stesso canale in successione
Le memorie statiche sono (rispetto a quelle dinamiche)
„
„
„
„
Più veloci
Più costose (6 transistor per bit)
Persistenti (non è richiesto il refresh)
Più affidabili.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
6
3
Ciclo Operativo
nelle memorie Statiche
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
7
Ciclo Operativo
nelle memorie Dinamiche
Tempo di Ciclo
RAS
CAS
Indirizzo
RIGA
COLONNA
WRITE
DATO VALIDO
DATO
Tempo di Accesso
Nota: I Segnali RAS,CAS e WRITE sono negati.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
8
4
Struttura di una memoria Statica 16x8
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
9
Una Memoria Statica
1K x 8
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
10
5
DRAM: multiplazione degli indirizzi
‡
‡
‡
‡
Dato l’elevato impaccamento delle DRAM il
numero di pin di I/O è un problema
E` usuale multiplare nel tempo l’indirizzo delle
righe e delle colonne negli stessi fili
Normalmente le memorie non sono indirizzabili al
bit, per cui righe e colonne si riferiscono a byte e
non a bit
Es. una memoria 2M X 8 (21 bit di indirizzo) può
essere organizzata in 4096 righe (12bit di
indirizzo) per 512 colonne (9bit di indirizzo) di 8
bit ciascuno
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
11
Organizzazione di una DRAM 2M X 8
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
12
6
Una Memoria Dinamica 1M x 1
RAS
Latch
Indirizzo
RIGA
Decodificatore di
RIGA
...
Array di celle di memoria
32x32
Se nse /
Write
Indirizzo
Se nse /
Write
Se nse /
Write
CS
R/W
Latch
Indirizzo
RIGA
Decodificatore di COLONNA
CAS
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
13
DRAM: modo di accesso veloce
‡
‡
‡
‡
Spesso i trasferimenti da/per la memoria
avvengono a blocchi (o pagine)
Nello schema appena visto, vengono selezionati
prima 4096 bytes e poi tra questi viene scelto
quello richiesto
E’ possibile migliorare le prestazioni
semplicemente evitando di “riselezionare” la riga
ad ogni accesso se le posizioni sono consecutive
Questo viene chiamato “Fast Page Mode” (FPM) e
l’incremento di prestazioni può essere
significativo
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
14
7
Memoria 4M x 32
Start
Busy
Refresh
Contatore
Refresh
Multiplexer di
Indirizzo
...
Array di celle di memoria
4x8
R/W
Indirizzo
Decodificatore di
COLONNA
08/11/2007
RAS
CAS
Controllo
Refresh
Controllo delle temporizzazione
Row/Column
Refresh
Ack
Refresh
Req
Controllo
Accesso
Sistemi a Microprocessore A.A. 2007-2008
Dati
15
DRAM sincrone (SDRAM)
‡
‡
Le DRAM visto prima sono dette “asincrone”
perchè non esiste una precisa temporizzazione di
accesso, ma la dinamica viene governata dai
segnali RAS e CAS
Il processore deve tenere conto di questa
potenziale “asincronicità”
„
‡
in caso di rinfresco in corso può essere fastidiosa
Aggiungendo dei buffer (latch) di memorizzazione
degli ingressi e delle uscite si può ottenere un
funzionamento sincrono, disaccoppiando lettura e
scrittura del rinfresco e si può ottenere
automaticamente una accesso FPM pilotato dal
clock
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
16
8
Organizzazione base di una SDRAM
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
17
SDRAM: esempio di accesso in FPM
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
18
9
Organizzazione delle memorie
‡
La memoria ideale dovrebbe essere a capacità infinita, tempo di
accesso nullo e costo e consumo nullo.
‡
Nei casi reali l’organizzazione del calcolatore comprende diversi
tipi di memorie con caratteristiche diverse
‡
Alcune memorie sono dedicate, ossia sono progettate per
contenere specifici tipi di dati (es la EPROM o flash di bootstrap)
‡
Altre memorie sono general-purpose e si può accedervi mediante
specifici metodi di indirizzamento per leggere o scrivere dati di
qualsiasi tipo. Il loro impiego dipende dalle loro caratteristiche e
da come il dato viene impiegato durante il funzionamento del
calcolatore
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
19
Organizzazione delle memorie
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
20
10
Organizzazione delle memorie
‡
Organizzazione gerarchica (tipica dei calcolatori generalpurpose)
‡
La CPU vede un solo tipo di memoria, indirizzata
direttamente tramite un identificatore (indirizzo)
‡
L’hardware (MMU) e il sistema operativo gestiscono invece
un insieme di memorie organizzate gerarchicamente che
contengono repliche dei dati in modo che la CPU trovi ad
ogni accesso il dato utile nella memoria più veloce possibile
‡
Gerarchia di memorie: La memoria del calcolatore e’
organizzata gerarchicamente in modo da comprendere
poche memorie a bassa capacità ed alti costi ma molto
veloci e molta memoria più lenta e di capacità maggiore
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
21
Organizzazione delle memorie
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
22
11
Organizzazione delle memorie
‡
Nella gerarchia di memoria i dati sono temporaneamente
trasferiti in memorie sempre più veloci.
‡
L’obiettivo e’ di organizzare le politiche di piazzamento ed
accesso dei dati in modo tale da avere i dati più
frequentemente usati, o in generale più “utili” virtualmente
sempre nelle memorie più veloci.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
23
Organizzazione delle memorie
‡
La memoria interna alla CPU è costituita dai registri ed è
caratterizzata da: alta velocità (comparabile con quella del
processore) e limitate dimensioni (al più qualche migliaio di
byte).
‡
La memoria centrale o principale è caratterizzata
da,dimensioni molto maggiori della memoria interna alla
CPU (fino a qualche Gbyte) ma tempi di accesso più elevati.
È accessibile in modo diretto tramite indirizzi.
‡
Nei sistemi attuali un livello di memorie cache e’ stato
inserito tra CPU e memorie centrali
‡
Memorie secondarie:
„
In un calcolatore esistono diverse memorie secondarie (o
memorie di massa) ad alta capacità bassi costi e non volatili
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
24
12
Organizzazione delle memorie
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
25
Organizzazione delle memorie
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
26
13
Organizzazione delle memorie
‡
Regola base dell'efficienza è rendere di massima
velocità il caso più frequente
‡
Sfruttamento della località spaziale e temporale
„
Principio di località un programma in ogni istante utilizza
una porzione limitata dello spazio di indirizzamento
‡
Località spaziale: accedendo ad un dato è assai
probabile che si debba accedere ad altri dati
localizzati “vicino” nello spazio di indirizzamento
‡
Località temporale: accedendo ad un dato è
assai probabile che si debba riaccedere ad esso in
un tempo “vicino”
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
27
Organizzazione delle memorie
‡
Dati che inizialmente si trovano ad un livello più basso
„
„
(loc. temporale) conviene spostarli in memorie più veloci
(loc. spaziale) conviene spostare anche i dati vicini
‡
I programmi NON vedono la gerarchia ma
referenziano i dati come se fossero sempre in
memoria centrale (a parte per i registri che sono
nominati esplicitamente) perciò bisogna mantenere il più
vicino possibile alla CPU dati utilizzati più recentemente.
‡
La gerarchia delle memorie deve prevedere in successione
memorie sempre più larghe e più lente per mantenere i dati
nei livelli più alti proporzionatamente alla previsione della
frequenza d’uso.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
28
14
Blocchi di locazione di memoria
‡
Gerarchia di memoria: più livelli
‡
Blocco: unità di informazione minima scambiata fra livelli (ex: 32
bytes)
‡
Hit: un accesso alla memoria che trova l'informazione cercata nel
livello superiore (accesso veloce)
‡
Hit Rate: frequenza di accessi trovati nel livello superiore (h)
‡
Miss Rate: (1 - h) caso di insuccesso (non trovo il dato nella
memoria adiacente/livello superiore) devo andare nel livello
inferiore (accesso più lento)
‡
Hit Time: tempo di accesso al livello superiore Th
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
29
Blocchi di locazione di memoria
‡
Miss Penalty: tempo per rimpiazzare un blocco nel livello
superiore più il tempo per fornirlo alla CPU. Il "miss penalty“,
Tmp, può anche essere scomposto nei tempi per reperire il primo
dato di un blocco più il tempo per trasferire gli altri. Comprende
certamente un Th e un “overhead” nel caso di miss (Tmiss)
‡
Tacc = h Th + (1-h)Tmp
‡
Tmp = Th + Tmiss
‡
allora Tacc = Th + (1-h)Tmiss
‡
Il Tmiss comprende il tempo per reperire il blocco nella gerarchia
di livello più basso più (eventualmente trascurabile) il tempo per
rimpiazzare i dati dal livello alto al livello più basso (se il livello più
alto deve essere “svuotato”, cioè se devo salvare i dati che sono
in esso presenti, operazione di write-back)
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
30
15
Gerarchia: esempio
‡
Supponiamo un sistema a due livelli in cui per accedere al primo livello
(memoria centrale) il tempo di accesso sia 0.1 microsec (100 ns) per ogni
dato e per accedere al secondo (ad esempio HD) sia di 0.1 msec.
‡
Quando si accede al secondo livello il dato deve essere copiato nel primo.
‡
Ipotizziamo che le probabilità di trovare il dato al primo livello siano del
95% (h).
Trascuriamo il tempo necessario al processore per capire dove si trova il
dato (trascurabile rispetto al tempo di accesso).
‡
‡
Quanto è il tempo di accesso medio? (In microsec)
‡
Tacc= 0.95 0.1 + 0.05 (0.1 +100)= 0.095+5.5= 5.1 microsec
‡
Basta un 5% di penalizzazione di miss che tutto l’accesso medio è
fortemente rallentato, nel caso specifico di ben 5 volte
‡
Circa 103 differenza di dimensioni (es. 10K – 10M)
Circa 103 differenza di tempo di accesso (es. 10-7s – 10-4s)
‡
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
31
Gerarchia di memorie
‡
Parametri di progettazione gerarchia di memoria:
„
„
Quanti livelli di gerarchia
che dimensione e velocità per ogni livello
‡
ogni tipo di memoria si definisce in base al
1)
Piazzamento del blocco (o funzione di traduzione o mapping): dove può
essere allocato il blocco al livello corrente
2)
Identificazione del blocco: come si può ritrovare il blocco a livello
corrente
3)
Rimpiazzamento del blocco: come si sceglie quale blocco sostituire
4)
Strategia di scrittura
‡
Ad esempio a livello di registri
„
„
L’identificazione è nominale (mov ax,15)
il piazzamento e rimpiazzamento, scrittura e’ definito dal compilatore
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
32
16
Memoria centrale
‡
Memoria centrale è la memoria fisicamente e logicamente collegata
direttamente alla CPU.
‡
Dal punto di vista della gerarchia:
1) Piazzamento del blocco: deciso dall’indirizzo nell’istruzione
2) Identificazione del blocco: indirizzo (sw, compilatore, SO, traduzione
diretta)
3) Rimpiazzamento del blocco: deciso dal codice
4) Strategia di scrittura: deciso dal codice
‡
‡
Il software (applicativo + SO) ha il controllo dello spazio di indirizzamento
Nota la mappa della memoria
La CPU legge e scrive su memoria centrale mandando un indirizzo fisico
della dimensione pari al suo bus di indirizzi (spazio di indirizzamento) per
l’8086 ad esempio 20 bit, creo un indirizzo di 20 bit (indirizzo 1 M).
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
33
Organizzazione di un sistema con
memoria cache
‡
La memoria centrale e la memoria cache sono organizzate in
blocchi di parole o di byte, di ugual dimensione
‡
La memoria cache contiene copie di blocchi della memoria
centrale, oppure blocchi liberi
„
‡
ad ogni blocco di cache è associato un bit - valid - che indica se il
blocco è significativo o libero
Il sistema di gestione della cache è in grado di
„
„
copiare (caricare) blocchi dalla memoria centrale alla memoria cache
oppure di
ricopiare (scaricare) blocchi dalla memoria cache alla memoria
centrale tramite un’apposita unità funzionale
‡
Il processore accede sempre e comunque prima alla memoria
cache
‡
L’uso della memoria cache per incrementare le prestazioni del
sistema di memoria sfrutta il principio di località dei programmi
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
34
17
Funzionamento base
Istruzioni
‡ Il processore deve leggere un’istruzione
‡
Se il blocco che contiene l’istruzione da prelevare si trova in
cache, l’istruzione viene letta e eseguita
‡
Se l’istruzione non si trova in cache:
„
„
„
il processore sospende l’esecuzione
il blocco contenente l’istruzione viene caricato dalla memoria centrale
in un blocco libero della memoria cache
il processore preleva l’istruzione dalla cache e prosegue l’esecuzione
Dati
‡ Il processore deve leggere un dato dalla memoria cache: si
procede come visto per la lettura di istruzioni
„
Il processore deve scrivere un dato in memoria: si procede in modo
simile ma esiste il problema della coerenza tra memoria cache e
memoria centrale (scrittura differita o non differita)
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
35
Memoria cache: definizioni
‡
Hit: un accesso alla memoria che trova l'informazione
cercata nella cache
‡
Miss: quando non si ha un hit e si deve accedere alla
memoria centrale
‡
Hit Rate (tasso di hit): frequenza (h) di accessi trovati in
cache (rapporto tra il numero di hit in cache e il numero
totale di riferimenti)
‡
Miss Rate: (m) caso di insuccesso ovvero non trovo il dato
nella memoria cache (rapporto tra il numero di miss in
cache e il numero totale di riferimenti)
„
Vale la relazione m=(1 - h)
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
36
18
Memoria cache: definizioni
‡
Hit Time: tempo di accesso alla cache Tc
‡
Miss Penalty: tempo per rimpiazzare un blocco nella cache
più il tempo per fornirlo alla CPU. Il "miss penalty“, Tp, può
anche essere scomposto nei tempi per reperire il primo
dato di un blocco più il tempo per trasferire gli altri.
Comprende certamente un Th e un “overhead” nel caso di
miss (Tmiss)
‡
Tacc = h Tc + (1-h)Tp
‡
Tmp = Tc + Tmiss
‡
allora Tacc = Tc + (1-h)Tmiss
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
37
Memoria cache: Posizionamento
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
38
19
Memoria Cache: funzionamento
‡
E’ necessario tenere traccia dei dati in cache
„
„
‡
‡
‡
‡
‡
Un catalogo (directory) consente di ricercare il dato in base all’indirizzo
generato dalla CPU
La struttura del catalogo dipende dall’organizzazione della cache
E’ importante definire la quantità di dati letti dalla memoria e
portati in cache in presenza di un miss
Vale il principio di Località spaziale
Memoria cache e centrale sono viste come insiemi di blocchi di
dimensione fissa dette linee
La linea è un’unità trasferita in blocco per ridurre il tempo medio
di trasferimento dei singoli dati
Il tempo di penalizzazione Tp è:
„
„
Tp = TRam+Tcache
Tcacheè il tempo impiegato per trasferire in cache la linea che contiene
la parola indirizzata
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
39
Memoria Cache: Organizzazione
‡
Nell’organizzazione della cache è
importante l’associazione tra le linee della
memoria centrale e quella della cache
„
‡
Quale posizione in cache verrà occupata da
una linea letta dalla memoria centrale
Tre tipi di organizzazione
„
„
„
Cache a mappatura diretta
Cache completamente associativa
Cache parzialmente associativa o setassociative
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
40
20
Memoria Cache: progettazione
Quanto visto si riassume come segue:
‡
Metodo di indirizzamento
„
‡
Metodo di identificazione
„
‡
come localizzare un blocco di memoria centrale
all’interno della cache
Metodo di scrittura (coerenza)
„
‡
come scegliere il blocco della cache in cui copiare un
blocco di memoria centrale (mapping)
come comportarsi quando si deve scrivere una parola
contenuta in un blocco della memoria cache
Metodo di sostituzione
„
come si sostituiscono blocchi della cache per liberare
spazio
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
41
Cache: a mappatura diretta
Ogni blocco della memoria centrale è
caricabile in un solo blocco della cache
‡ Più blocchi di memoria centrale possono
essere caricati nello stesso blocco di
memoria cache (conflitti)
‡ Mapping: il blocco di indice (indirizzo) j
della memoria centrale è caricabile solo
nel blocco di indice (indirizzo):
resto div intera di j/n° blocchi della cache
‡
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
42
21
Cache: a mappatura diretta
‡
Si assuma:
„
„
„
„
‡
Una cache di capacità L=2l linee
Linee di W=2w parole
Una capacità C = LxW parole
Una memoria centrale di dimensione B = 2b
blocchi, multipla della dimensione della cache
L’indirizzo di una parola è
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
43
Cache: a mappatura diretta
‡
‡
‡
Il contenuto del campo lungo b bit (IB) può
essere visto come numero d’ordine del blocco di
memoria
Il contenuto del campo lungo l bit (IL) come
numero di linea nel blocco
Quello del campo lungo w bit (IW) come numero
di parola entro la linea
„
„
„
IB|0|0 -> indirizzo base del blocco
IB|IL|0 -> indirizzo della linea nel blocco
IB|IL|Iw -> indirizzo della parola nella linea
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
44
22
Cache: a mappatura diretta
‡
Con la
mappatura
diretta tutte le B
linee in posizione
IL dentro un
qualunque blocco
di memoria sono
mappate sulla
stessa linea di
cache
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
45
Cache: a mappatura diretta
‡
La cache è fatta da due
parti (banchi):
„
TAG RAM (banco sx)
‡
‡
„
Rappresenta il catalogo
dei dati contenuto
nell’altro banco
Ogni posizione ha
dimensione pari a quella
del campo IB dell’indirizzo
generato dalla CPU
DATA RAM (banco dx)
‡
‡
08/11/2007
Contiene i dati
Ogni posizione ha la
dimensione di una linea
di cache
Sistemi a Microprocessore A.A. 2007-2008
46
23
Cache: a mappatura diretta
‡
‡
‡
Il campo IL identifica la posizione
della linea in DATA RAM e TAG
RAM
Il valore del TAG RAM è
confrontato con IB
Se uguali, il dato è in cache e
letto direttamente dal DATA RAM
„
‡
La linea di hit è asserita e abilita
l’uscita dal multiplexer della
parola
Se diversi, si ha la linea di hit
disasserita (miss) e inizia il
processo di lettura della memoria
centrale della linea contente la
locazione indirizzata. IB è copiato
nella TAG RAM e la linea letta
rimpiazza quella esistente in
DATA RAM
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
47
Cache: a mappatura diretta
‡
‡
La ricerca in TAG e in DATA RAM avviene in
parallelo
In caso di HIT, il segnale di OE rende disponibile
la parola letta
„
‡
‡
Si ipotizza che al multiplexer sia presente una intera
linea e che si selezioni la parola indirizzata
Di solito DATA RAM è fatta di L x W parole e la
parola si trova esattamente all’indirizzo IL|Iw
Quando un programma esegue ripetutamente un
ciclo che con coinvolge due blocchi di memoria a
ogni passaggio da un blocco all’altro le linee di
cache sono sostituite Æ Calo delle prestazioni
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
48
24
Cache: a mappatura diretta
Esempio:
Memoria centrale da 4Gbyte, cache a
mappatura diretta da 1KByte, blocchi da
32Byte
‡ Accesso a memoria a byte:
‡
„
„
„
blocchi da 32 byte: 5 bit di indirizzo per
identificare il singolo byte
cache di 32 blocchi (1Kbyte/32byte): 5 bit di
indirizzo
per identificare il blocco
22 bit di etichetta = 32 (4Gbyte) - 10
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
49
Cache: a mappatura diretta
Esempio
‡ Indirizzi di memoria a 32 bit
‡ Cache a mappatura diretta:
‡
„
„
‡
blocco costituito da una parola di 4 byte
1024 blocchi (210)
Struttura dell’indirizzo di memoria:
„
„
„
Bit 0 e 1 per individuare il singolo byte nella
parola
Bit 2-11 per individuare il blocco di cache
Bit 12-31 come etichetta
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
50
25
Cache: a mappatura diretta
Esempio:
‡ Memoria centrale 4Gigabyte (32 bit indirizzo)
‡ Accesso a memoria a parole da 32 bit
‡ Blocchi da 4 parole (16 byte): 2 bit per parola nel
blocco, 2 bit per byte nella parola
‡ Memoria cache da 16kparole: 12 bit per
indirizzare un blocco (n° blocchi = 214/22)
‡ Etichetta da 16 bit
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
51
Cache: a mappatura diretta
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
52
26
Cache a mappatura diretta: Esercizio
Si consideri un calcolatore con memoria centrale di 64KB,
indirizzabile a byte (parola=1Byte) e dimensione di blocco di
8Byte. Si assuma di usare una cache a mappatura diretta di
256Byte:
a) dire in quali campi gli indirizzi di memoria sono suddivisi ai fini
della cache e quali sono le dimensioni (in numero di bit) di ogni
campo
‡
R: La memoria ha dimensione 64KB = 216 Byte, quindi un indirizzo è costituito
da 16 bit. I 16 bit saranno suddivisi nei campi Etichetta, Linee, Parola. Poiché
una parola è costituita da 1Byte ed un blocco da 8Byte = 23 B, il campo Parola
sarà di 3 bit. Il numero di linee della cache è calcolato dividendo la sua capacità
per la dimensione di blocco:
256B/8B = 32 = 25 , quindi il campo Linee sarà di 5 bit.
I rimanenti (16 - 5 - 3) = 8 bit saranno dedicati al campo Etichetta.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
53
Cache a mappatura diretta: Esercizio
Si consideri un calcolatore con memoria centrale di 64KByte,
indirizzabile a byte (parola=1Byte) e dimensione di blocco di
8Byte.
Si assuma di usare una cache a mappatura diretta di 256Byte:
‡ b) dire in quale linea verrebbero memorizzati i byte con i seguenti
indirizzi:
„
„
„
„
111Bhex
C334hex
D01Dhex
AAAAhex
R: ricordando che un indirizzo è suddiviso nel seguente modo
08/11/2007
111Bhex Æ 0001 0001 0001 1011 Æ linea 3
C334hex Æ 1100 0011 0011 0100 Æ linea 6
D01Dhex Æ 1101 0000 0001 1101 Æ linea 3
AAAAhex Æ 1010 1010 1010 1010 Æ linea 21
Sistemi a Microprocessore A.A. 2007-2008
54
27
Cache completamente associativa
‡
Una linea di memoria può essere copiata in qualunque
posizione della cache
‡
Il TAG RAM si comporta come una memoria CAM (Content
Addresable Memory)
‡
Ogni linea di memoria in cache ha un indirizzo univoco Ix
memorizzato nella TAG RAM
„
‡
La TAG RAM è costituita da L posizioni di t=(b+l) bit ciascuna
Il campo Ix dell’indirizzo viene confrontato in parallelo con il
contenuto (tutte le linee) della TAG RAM. Se Ix è presente si
ha un hit e il valore è letto dalla cache, altrimenti si va in
memoria centrale
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
55
Cache completamente associativa
‡
Rispetto alla mappatura diretta:
„
In caso di miss occorre individuare quale linea
sostituire tra le L possibili
‡
„
„
„
„
Algoritmi di rimpiazzamento
Si cerca la linea della DATA RAM dopo che è
conclusa la ricerca in TAG RAM.
Tempo di accesso maggiori
Complessità hardware maggiore
Costo maggiore
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
56
28
Cache completamente associativa
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
57
Cache parzialmente associativa
‡
Definizione: Si definisce Grado di Associatività di
una cache il numero di posizioni del catalogo che
devono essere confrontate con il campo IB.
‡
La cache a mappatura diretta ha grado di
associatività pari a 1.
‡
La cache completamente associativa ha un grado
di associatività pari al numero di linee di cache.
‡
Se il grado di associatività è n si parla di memoria
cache a n vie.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
58
29
Cache parzialmente associativa: 2 vie
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
59
Cache parzialmente associativa : 2 vie
‡
‡
‡
‡
‡
La parte bassa dell’indirizzo seleziona la parola
effettivamente indirizzata
Le due linee di hit0 e hit1 abilitano o meno uno
dei due selettori
Ciascuna linea di memoria può essere mappata in
due differenti linee di cache: banco dx o sx.
In caso di miss occorre scegliere in quale via
deve essere copiato la linea di memoria
A parità di condizioni le prestazioni sono
comparabili con la mappatura diretta
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
60
30
Cache parzialmente associativa : 4 vie
‡
‡
‡
‡
A 4 vie: ogni blocco di memoria centrale può
essere caricato in 4 blocchi di cache, quindi la
dimensione di ogni gruppo è di 4 blocchi
Memoria centrale 4Gbyte: 32 bit
Memoria cache 1K parole (1 parola=4byte),
blocchi da 1 parola
Organizzazione dell’indirizzo:
„
„
„
„
„
Bit 0 e 1 per indirizzare i byte
Numero blocchi nella cache = dimensioni della
cache/dimensioni del blocco= 210/1 = 210
Numero di gruppi nella cache= numero di blocchi/
dimensioni del gruppo = 210/22 = 28
Bit 2-10 indice del gruppo nella cache
Bit 31-11 etichetta
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
61
Cache parzialmente associativa : 4 vie
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
62
31
Esercizio Cache 1
Si consideri una cache di 4KB con
associazione a gruppi a 8 vie ( 8-way set
associative) in congiunzione con una
memoria centrale di 1MB.
‡ Supponendo che un blocco sia di
dimensione 64B, si dica come un indirizzo
di memoria è suddiviso in campi e a
quanto ammonta la dimensione di ogni
campo.
‡
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
63
Esercizio Cache 1
Soluz.:
‡ trattandosi di una cache con associazione a gruppi,
l’indirizzo di memoria centrale deve essere suddiviso nei
campi tag, set, e parola.
‡ la memoria centrale è di 1MB, cioè 220 byte; pertanto un
indirizzo di memoria centrale è espresso in 20 bit.
‡ la dimensione del campo parola è individuato univocamente
dall dimensione del blocco, che è di 64B, cioè 26 byte;
pertanto il campo parola è di 6 bit.
‡ una cache di 4KB possiede 212 byte; ogni linea deve
contenere un blocco e quindi impegna 26 byte; quindi la
cache contiene 212 /26 = 26 linee. Poiché un insieme deve
contenere 8 linee, il numero di insiemi della cache è pari a
26/23 =23 . Pertanto il campo set è di 3 bit.
‡ la dimensione del campo tag sarà dunque: 20 -3 -6 = 11
bit
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
64
32
Esercizio Cache 2
Si consideri una cache di 16KB con
associazione a gruppi a 4 vie ( 4-way set
associative) e dimensione di linea di 32B.
‡ Supponendo che il campo tag sia di 12 bit,
si dica quale è la dimensione massima (in
byte) di memoria principale che la cache è
in grado di gestire, assumendo il singolo
byte come unità di indirizzamento della
memoria.
‡
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
65
Esercizio Cache 2
‡
‡
‡
‡
‡
‡
Soluz.: per calcolare la quantità massima di memoria principale
gestibile, bisogna calcolare il numero di bit totali che esprimono
una generica locazione di memoria.
trattandosi di una cache con associazione a gruppi, l’indirizzo di
memoria centrale deve essere suddiviso nei campi tag, set, e
parola.
sappiamo che il campo tag è di 12 bit; quindi occorre calcolare la
dimensione dei campi set e parola.
la dimensione del campo parola è individuato univocamente dalla
dimensione del blocco, che è di 32B, cioè 25 byte; pertanto il
campo parola è di 5 bit.
una cache di 16KB possiede 214 byte; ogni linea deve contenere
un blocco e quindi impegna 25 byte; quindi la cache contiene
214/25 = 29 linee. Poiché un insieme deve contenere 4 linee, il
numero di insiemi della cache è pari a 29/22 =27 . Pertanto il
campo set è di 7 bit.
quindi la dimensione massima di memoria gestibile è: 212+7+5,
cioè 16MB
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
66
33
Cache: Il problema della scrittura
Un’operazione di scrittura può generare un hit o un
miss come un’operazione di lettura
‡ Miss in scrittura
„
Si pone il problema se portare la linea di memoria in
cache o no:
‡
‡
„
Write allocate: richiede la selezione della linea di cache
dove copiare la linea di memoria (Algoritmi di
rimpiazzamento)
Write non-allocate: la scrittura avviene direttamente in
memoria centrale all’indirizzo generato.
Si preferisce il Write non-allocate poiché le operazioni di
scrittura si verificano con frequenza minore (percentuale
più bassa) rispetto a quelle di lettura e i dati possono
essere sparsi (indirizzi non contigui e distanti)
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
67
Cache: Il problema della scrittura
‡
Hit in scrittura
„
„
In cache abbiamo una copia dei dati presenti in
memoria centrale
Æ un’operazione di scrittura renderebbe
inconsistente il contenuto della cache con la
memoria centrale
Due tipi di aggiornamento (scrittura):
‡
‡
08/11/2007
immediato (write through)
a posteriori o differito (write-back o copy-back)
Sistemi a Microprocessore A.A. 2007-2008
68
34
Cache: write through
‡
Tutte le scritture in cache vengono fatte anche in
memoria
„
„
„
„
„
Si mantiene la consistenza
Influenza negativamente le prestazioni
Incrementa il traffico sul bus di sistema
Sconsigliato per sistemi multiprocessore a bus condiviso
Alcune architetture prevedono un buffer di appoggio in
scrittura:
‡
‡
Si scrive prima in cache e poi in modo asincrono in
memoria
Problema legato allo svuotamento
ƒ Efficace per scritture “isolate”
ƒ Va in saturazione se le scritture sono fatte su grossi blocchi di
dati Æ la sua presenza è allora ininfluente
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
69
Cache: write back
‡
L’informazione viene scritta solo in cache. La memoria
viene aggiornata solo quando avviene la sostituzione del
blocco.
‡
Si accede in scrittura in cache
„
„
Il processore non viene rallentato
Non si genera traffico sul bus
‡
Il catalogo deve tenere traccia delle linee modificate dentro
la cache (dirty bit)
‡
La marcatura di una linea (modificata), candida la linea ad
essere rimpiazzata e verrà copiata in memoria
‡
Se una linea non è marcata il controllore di cache esegue il
caricamento della linea dalla memoria centrale.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
70
35
Cache: Lo stato della linea di cache
‡
‡
‡
In seguito ad una scrittura differita occorre tener traccia
della possibile modifica nella linea di cache
Occorre definire un’informazione di stato che può variare in
relazione alla tecnica di gestione utilizzata
E’ sufficiente un bit per segnare la validità
„
„
„
All’avvio del sistema tutte le linee sono invalide
Al caricamento di una linea dalla memoria la corrispondente
linea in linea è segnata valida
In seguito ad una richiesta di trasferimento in memoria sul
canale DMA, le linee di cache non corrispondono ai blocchi in
memoria (perché sono stati cambiati)
‡
‡
Occorre invalidare queste linee
La ricerca in cache di un dato implica la verifica della
validità del dato Æ validità della linea
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
71
Cache: Lo stato della linea di cache
‡
Sistemi multitasking e memoria virtuale
„
„
„
„
Al termine dell’esecuzione di un processo il S.O sceglie
quale processo attivo mettere in esecuzione
In seguito all’intervento del gestore della memoria
centrale, il nuovo processo può sovrapporsi sullo spazio
indirizzi ancora presenti in cache ma relativi al processo
terminato.
Le linee esistenti non sono più valide
Per evitare di invalidare tutta la cache, si può abbinare
al bit di validità l’identificativo del processo
‡
„
La ricerca di un dato in cache prevede il confronto del bit di
validità e la verifica dell’ID del processo con quello
correntemente in esecuzione
Il costo di tale cache è maggiore dovuto alla memoria
aggiuntiva necessaria per gestire l’identificatore del
processo che riferisce alla linea.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
72
36
Cache: Algoritmi di rimpiazzamento
‡
Gli algoritmi di rimpiazzamento sono necessari con cache
con un’associatività superiore a uno.
„
La mappatura diretta ha un rimpiazzamento implicito con il
funzionamento stesso.
‡
Si introduce un controllore che determina quale linea
rimuovere (su base algoritmica)
‡
Tutti gli algoritmi si basano sull’uso di contatori
‡
Il numero di contatori combinato alla loro dimensione
fornisce una misura della complessità della logica usata per
il rimpiazzamento
‡
Si considera una cache associativa a N vie con L linee per
via
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
73
Cache: Algoritmi di rimpiazzamento
‡
La generica posizione è indicata con IL in corrispondenza
della quale si trova le N linee corrispondenti alla N vie
‡
Le vie sono numerate da 0 a N-1
‡
Le linee (allineate lungo le N-1 vie) sono indicate come l0,
l1, …, lN-1
‡
li,j indica linea i sulla via j
‡
Vi,j indica il bit di validità associato a li,j (1 = linea valida). In
totale si hanno LxN bit di validità.
‡
In presenza di più miss sulla stessa linea occorre stabilire
un criterio di selezione
„
Definizione: Si definisce via prioritaria la via più a sinistra (con
indice più basso) tra tutte quelle non valide.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
74
37
Cache: Algoritmi di rimpiazzamento
Algortimi possibili:
‡
LRU (Least Recently Used)
„
„
‡
FIFO (First In First Out)
„
„
‡
Si rimpiazza la linea non utilizzata da più tempo, è molto
probabile che il codice/dati nella linea sono poco frequentati
dall’esecuzione del programma
Complessi e costosi da realizzare
Si assume un modello di esecuzione del programma di tipo
sequenziale
Media complessità
RAND (Random)
„
„
Si rimpiazza in modo casuale
Semplice da realizzare
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
75
Cache: Sostituzione randomica
‡
In caso di miss occorrerebbe generare un numero a caso
compreso tra 0 e N-1.
„
‡
Considerando che i miss avvengono in modo casuale
rispetto a tutte le linee di cache Æ Si usa un contatore C
unico per la cache
„
‡
Il contatore è modulo N-1
La scelta della linea da rimpiazzare (miss) avviene
guardando prima tra le linee non valide
„
‡
La generazione casuale prevede una rete logica complessa
Se le N linee alla posizione l sono tutte valide si seleziona la
linea sulla via il cui numero d’ordine uguaglia il contatore. Il
contatore viene quindi aggiornato.
In caso di hit non succede niente
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
76
38
Cache: Sostituzione randomica
Hit: non succede niente;
‡ Miss: esistono linee non valide?
‡
Sì: j Å indice della via prioritaria
No: j Å C
Sostituzione lj;
C Å (C+1)modN; VljÅ1
Nota:
La sostituzione di una linea comporta l’affermazione del bit di
validità
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
77
Cache: algoritmo LRU
‡
Ad ogni posizione IL di cache si assegna una lista
ordinata di riferimenti
„
„
In testa alla lista è riportata la linea riferita più di
recente
In coda quella riferita meno di recente
‡
La lista richiede N posti e ogni posto corrisponde
ad un contatore modulo N.
‡
In totale si hanno L x N contatori
„
„
Ogni contatore richiede un numero di bit pari a: ⎡log 2 N ⎤
Nel caso di 2 vie serve un solo bit e in totale quindi N
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
78
39
Cache: LRU – Metodo dello stack
‡
‡
‡
‡
‡
‡
Si assuma una cache a 4 vie
Lo stack per ogni posizione IL è di 4 posizioni (vie) e ciascuna è
gestita da un registro a 2 bit
S0 contiene la via riferita di recente e S3 quella meno recente
Lo schema seguente considera solo il caso di hit e non tiene conto
del valid bit.
Il segnale hclk (hit clock) è l’impulso che deriva dall’avvenuto hit.
In j si ha il numero d’ordine della via su cui è avvenuto l’hit
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
79
Cache: LRU – Metodo dello stack
‡
L’aggiornamento dello stack in caso di hit
prevede:
„
„
Il numero di via j passa in S0 e si sposta a destra la
parte che sta alla sinistra del registro che conteneva j.
Es:
‡
‡
08/11/2007
Hit su l0 e stato dello stack pari a 1302
La configurazione diventa 0132
Sistemi a Microprocessore A.A. 2007-2008
80
40
Cache: LRU – Metodo dello stack
‡
L’aggiornamento dello stack in caso di miss con
linee tutte valide prevede:
„
‡
Portare l’uscita di S3 in S0 e far scorrere a destra S0, S1 e
S2
La gestione del valid bit comporta una
complicazione nell’hardware
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
81
Cache: LRU – Metodo dei contatori per linea
‡
‡
‡
‡
Si assume una cache a 4 vie
Ad ogni linea è associato un contatore per gestire l’ordine di
riferimento
Si assume di rimpiazzare la linea non valida con via di ordine
minore
Nella tabella: C0, C1, C2 e C3 sono i contatori
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
82
41
Cache: LRU – Metodo dei contatori per linea
‡
In caso di hit si aggiornano i contatori
„
„
‡
Incrementando i contatori di valore più basso
di quello della linea su cui si ha lo hit
Si azzera il contatore
In caso di miss
„
„
Selezionare la prima riga non valida, o in
mancanza, la linea con il contatore uguale a N1
Aggiornare i contatori come si fosse stato un
hit sulla linea e portare il bit di validità a 1
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
83
Cache: LRU – Metodo dei contatori per linea
‡
‡
‡
Sia Cli (l=0,…,L-1; i=0,…N-1) il generico contatore preso
dalla matrice di contatori C di dimensione L x N
Si indichi con Vlj il generico bit di validità preso dalla
matrice V di pari dimensioni
Si ha:
Hit: j Å numero di via su cui si verifica lo hit
per ogni i tale che Cli < Clj : Cli Å (Cli +1)modN;
Cli Å 0
Miss: esistono linee vuote?
Sì: j Å via prioritaria;
No: j Å i tale che Cli = N-1;
per ogni i tale che Cli < Clj : Cli Å (Cli +1)modN;
Cli Å 0;
Vlj Å 1
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
84
42
Cache: LRU – Metodo dei contatori per linea
L’algoritmo LRU basato sui contatori è
molto costoso
‡ Occorrono molti contatori e una logica di
controllo
‡
„
Problemi di spazio sull’integrato della CPU
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
85
Cache: pseudo LRU
‡
‡
‡
‡
‡
‡
‡
Algortimo introdotto nella CPU Intel 486
Cache associativa a 4 vie
Ogni via 2 KB, 16 Byte per linea per un totale di 128 linee
per via
Politica di scrittura: write-through/write-non allocate (le
operazioni di scrittura aggiornano la cache solo in caso di
hit di scrittura)
Il rimpiazzamento si basa su 3 bit per la linea invece di 8
(come richiesto nel caso dei contatori, pari a 4)
I tre bit B0, B1 e B2 (bit LRU) sono utilizzati per creare un
albero di decisione e aggiornati in caso di hit (lettura e
scrittura) o miss in lettura
Con l0, l1, l2 e l3 si indicano le linee nella generica posizione
IL relative alle 4 vie
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
86
43
Cache: pseudo LRU
‡
In presenza di un hit si aggiornano i bit
B0, B1 e B2 seguendo lo schema seguente:
Per avere un hit nella via 2 il valore dei bit
assume la seguente configurazione:
B0
0
1
1
B1
0 1
B2
0x1
0
l0 l1 l2 l3
08/11/2007
il bit B1 non viene modificato e rimane
settato al valore che aveva prima dello
hit. Ovvero, si aggiustano i solo i bit che
Permettono di determinare la via più recente.
Sistemi a Microprocessore A.A. 2007-2008
87
Cache: pseudo LRU Albero di decisione
Decisione in caso
di Miss
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
88
44
Cache: pseudo LRU
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
89
Cache: LRU vs Pseudo
‡
Nel caso dell’evento 10, l’algoritmo LRU sostituisce l1
mentre lo pseudo LRU l2
‡
Lo pseudo LRU a seguito di un miss che sostituisce in una
delle due vie di sinistra predispone la sostituzione per un
miss successivo sulle vie di destra
‡
Esempio:
„
„
„
‡
tutte le linee valide
4 hit ai gruppi l0, l1, l2, l3 in successione
Æ Stato dei bit 000
Cosa succede se avvengono due miss?
„
„
Partendo da 100
Hit Æ 110
Hit Æ 100
Hit Æ 001
Hit Æ 000
Viene sostituito l0 ed i bit aggiornati a 110
Viene sostituito l2 invece di l1
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
90
45
Cache: tecnica FIFO
‡
‡
La tecnica FIFO tiene conto solo dell’ordine di
ingresso in cache
Occorre disporre un contatore per linea che conti
modulo N
„
Nel caso di una cache a 4 vie a N blocchi per via
occorrono N contatori modulo 4
Counter
C0
0
Line 0
1
Line 0
2
Line 0
3
Line 0
Ci
Line i
Line i
Line i
Line i
N
Vie
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
91
Cache: tecnica FIFO
‡
‡
‡
‡
Quando la cache è vuota i contatori sono resettati (sono a
0)
Al primo miss su la linea i il relativo contatore Ci viene
messo a 1 ed indica che al prossimo miss la via da
utilizzare è la 1. Il blocco desiderato viene caricato nella via
0
Nel caso in questione i contatori sono a 2 bit Æ in totale 2N
bit
L’algoritmo FIFO deve quindi:
„
„
In caso di hit lasciare tutto invariato
In caso di miss:
‡
‡
08/11/2007
Controlli che esistano linee NON VALIDE tra quelle del generico
insieme di linee i in caso affermativo elimina la linea della via
prioritaria (quella più a sx)
Se non esistono linee NON VALIDE sull’insieme di linee
selezionato, si seleziona la via più vecchia indicata dal contatore;
la nuova linea viene caricata e il contatore incrementato di 1
Sistemi a Microprocessore A.A. 2007-2008
92
46
Cache: tecnica FIFO
‡
In virtù di quanto detto, l’algoritmo si può
scrivere come:
„
„
Hit: non succede niente
Miss: esistono linee vuote?
sì: CÅ via prioritaria
sostituzione della riga in colonna C
CÅ(C+1)modN
(bit di validità della linea Å 1)
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
93
Cache: tecnica FIFO
‡
Implementazione hw
Miss i
C
o
u
n
t
e
r
Decoder
0
W0
1
W1
2
W2
3
W3
Write
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
94
47
Cache: Analisi Prestazioni
‡
Il tempo medio di accesso alla memoria in
presenza della cache è dato dalla eq.
„
Tacc = h tc + m tp
‡
‡
‡
‡
h tasso di hit, m tasso di miss (m=1-h)
tc tempo di accesso in cache
tp tempo di penalizzazione (somma del tempo di
latenza della memoria centrale e del tempo
necessario al trasferimento della linea in cache
L’equazione presenta 4 grandezze che
forniscono altrettanti criteri di
ottimizzazione
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
95
Cache: Analisi Prestazioni
‡
Criteri di ottimizzazione:
„
„
„
„
Massimizzare il tasso di hit
Minimizzare il tempo di accesso
all’informazione in cache (minimo tempo di hit)
Minimizzare il ritardo dovuto a un miss
(minimo tempo di penalizzazione)
Minimizzare il tempo necessario per la gestione
della coerenza delle cache per i sistemi
multiprocessori o in sistemi con più livelli di
cache
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
96
48
Cache: Effetto della cache sulle
prestazioni
‡
‡
‡
Si consideri il MIPS come indice di prestazione
Indicato con Tpi il tempo medio per eseguire completamente
un’istruzione (fetch + decodifica/esecuzione) espresso in µs
(microsecondi) si ha
MIPS = 1 / Tpi
Se il prelievo e la decodifica/esecuzione non si
sovrappongono si può considerare
Tpi = Tm + (nex/f)
„
Dove
‡
‡
‡
08/11/2007
Tm è il tempo medio di accesso alla memoria
nex è il numero medio di cicli di clock per decodificare ed eseguire
l’istruzione
f è la frequenza di clock
Sistemi a Microprocessore A.A. 2007-2008
97
Cache: Effetto della cache sulle
prestazioni
‡
Indicato con N il numero di cicli dalla CPU per
leggere in memoria e con Nw gli eventuali cicli
di attesa:
Tm = (N + Nw)/f
‡
Pertanto sostituendo si ha
MIPS = f/(N + Nw+nex)
‡
Il massimo di prestazione si ha per N=1 e Nw=0
„
„
Nel caso di N=1 e nex=1 un ciclo di attesa abbatte del
33% le prestazioni
Con pipeline dove N+ nex=1 un ciclo di attesa dimezza
le prestazioni
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
98
49
Cache: Effetto della cache sulle
prestazioni - Conclusioni
‡
Una cache ben progettata deve avere un tc
che consenta di accedere in un ciclo di
clock in caso di hit e un Tacc molto basso
„
„
Su Tacc influiscono m e tp
Questi parametri risentono della dimensione,
dell’organizzazione e la modalità di gestione
della cache
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
99
Cache – Elementi che influenzano le
prestazioni
‡
Il miss rate m è influenzato principalmente da:
„
„
„
‡
La dimensione della cache
La dimensione della linea
Il grado di associatività
Tuttavia vanno considerati:
„
„
„
„
„
„
„
„
„
L’algoritmo di rimpiazzamento
Il precarimento
La scrittura in memoria centrale (write-through/copy back)
Cache divisa o unificata
Cache su più livelli
Il posizionamento della cache (cache fisica o virtuale)
La multiprogrammazione
Le operazione di I/O
Single o multi core
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
100
50
Cache: La dimensione della cache
‡
A dimensioni maggiori corrisponde una
probabilità maggiore di trovare
l’informazione
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
101
Cache – Elementi che influenzano le
prestazioni: la dimensione della linea
‡
‡
‡
‡
A dimensioni maggiori della linea corrisponde un
aumento della capacità della cache di giovare
della località spaziale
ma diminuisce il numero di linee allocate in cache
con conseguente diminuzione della probabilità di
ritrovare l’informazione in tempi successivi
(diminuisce la località temporale)
All’aumentare della dimensione si ha un ritardo
nella lettura dalla memoria con maggiore
probabilità di copiare dati inutili (istruzioni non
eseguite e dati non utilizzati)
La dimensione di linea è il compromesso tra un
alto h e un basso tp
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
102
51
Cache – Elementi che influenzano le
prestazioni: Associatività
‡
Con l’aumentare del grado di associatività
migliorano le prestazioni
„
‡
‡
‡
Diminuiscono i conflitti tra le linee nella stessa posizione
relativa Æ diminuisce m
Ma aumentano i tempi di ricerca della linea
Più alto è il grado di associatività e più la logica di
gestione si complica
Rispetto alla mappatura diretta h è più alto nelle
cache associative
„
La differenza tende ad annullarsi al crescere della
dimensione della cache
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
103
Cache – Elementi che influenzano le
prestazioni: Associatività
‡
Il problema del trashing nelle cache associative si manifesta
quando un programma in esecuzione copre più di una linea
Li in differenti blocchi di memoria
„
„
„
‡
In presenza di cicli ripetuti o salti tra queste linee si assiste ad
un’attività di continuo caricamento nella stessa posizione di
cache
Poiché costa meno accedere ad una parola direttamente in
memoria che trasferire una linea di cache Æ abbassamento
delle prestazioni
Per cache abbastanza grandi la probabilità che avvenga ciò è
molto bassa
Se comparate con le cache a mappatura diretta,
quest’ultime sono:
„
„
„
Meno costose (non c’è la logica di rimpiazzamento)
Il tempo di accesso è inferiore (manca la logica)
Il rimpiazzamento è guidato dal tipo di orgnizzazione
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
104
52
Cache – Elementi che influenzano le
prestazioni: gli algoritmi di rimpiazzamento
‡
L’algoritmo LRU è quello che offre le prestazioni
migliori
„
‡
Le cache attuali sono a associative con gestione LRU o
semplificata a 2, 4 o 8 vie.
Il prelievo della linea:
„
„
Gli algoritmi prevedono che la linea sia caricata quando
è effettivamente richiesta (demand fecthing)
Si può operare una tecnica di prefetch delle linea se si
tiene conto della località temporale
‡
‡
Un miss su una qualunque linea rende molto probabile un
miss sulla linea successiva.
Si può prelevare sia la linea richiesta che quella successiva
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
105
Cache – Elementi che influenzano le
prestazioni: gli algoritmi di rimpiazzamento
‡
‡
Il prefetch:
Sono possibili 2 realizzazioni
1.
Utilizzo di un controllore e un buffer
‡
‡
2.
„
Trasferire direttamente in cache anche la linea successiva
Vantaggi:
„
Diminuisce il tasso di miss nelle cache di grandi dimensioni
„
„
Il controllore legge la linea richiesta e la successiva
Il buffer contiene la linea successiva in attesa che serva
E’ stato stimata una riduzione del 75-80%
Svantaggi:
„
„
08/11/2007
Complessa logica del controllore
Aumenta la memory pollution (inquinamento della memoria
cache). La memoria contiene dati inutili mai utilizzati.
Sistemi a Microprocessore A.A. 2007-2008
106
53
Cache – Elementi che influenzano le
prestazioni: Cache divisa o unificata
‡
Conviene avere una cache per i dati e una
per le istruzioni?
„
Gli accessi alle istruzioni hanno un alto grado
di località e sono di sola lettura:
‡
‡
‡
08/11/2007
Æ una cache istruzioni ha un h relativamente più
elevato
Æ in presenza di pipeline occorre però raddoppiare la
larghezza di banda del bus per consentire il fetch e la
lettura/scrittura di un dato contemporaneamente
Æ uso inefficiente dovuto alla variazione da
programma a programma della percentuale di
memoria utilizzata dai dati e dalle istruzioni
Sistemi a Microprocessore A.A. 2007-2008
107
Cache – Elementi che influenzano le
prestazioni: Cache divisa o unificata
‡
E’ stato provato sperimentalmente che
una cache unificata si adatta meglio nella
gestione dati e istruzioni
„
Una cache unificata ha prestazioni superiori di
una cache divisa di pari dimensioni
‡
La cache del 486 era unificata
‡
Il pentium ha una cache divisa
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
108
54
Cache – Elementi che influenzano le
prestazioni: aggiornamento memoria centrale
‡
Write back
„
„
‡
Le scritture sono eseguite alla velocità della cache
Scritture multiple nella cache richiede una gestione
logica complessa e conveniente in ambienti
multiprocessore
Write through
„
„
„
Logica più semplice
Garantisce una coerenza dei dati rispetto a quelli
presenti nella memoria di livello inferiore
Valido per ambienti multiprocessore
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
109
Cache – Elementi che influenzano le
prestazioni: Cache multilivello
‡
La cache serve a ridurre il divario di velocità tra
CPU e memoria centrale
La necessità di grosse dimensioni per contenere
informazioni utili si scontra con le esigenze di
velocità
Æ si introducono livelli di cache successivi
‡
Cache a 2 livelli:
‡
‡
„
„
La cache di primo livello è più veloce e tiene il passo
della CPU
Il secondo livello sarà di dimensioni maggiori per
soddisfare la maggior parte delle richieste verso la
memoria centrale
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
110
55
Cache – Elementi che influenzano le
prestazioni: Cache multilivello
‡
La velocità del primo livello influenza la
frequenza del clock della CPU
‡
La velocità del secondo livello si riflette
unicamente sulla penalizzazione nei miss
sul primo livello
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
111
Elementi che influenzano le prestazioni:
Cache multilivello
‡
Per una cache a due livelli il tempo medio di accesso
diventa:
Tacc = h1 x tc1+ m1 x (h2 x tc2 + m2 x tp)
‡
tc2 (tempo di accesso al secondo livello) comprende il tempo
di trasferimento da livello 2 al livello 1
tp è la combinazione del tempo di accesso al livello 2 e
quello necessario per trasferire il blocco dalla memoria
centrale
Il miss rate sul secondo livello è misurato sui miss nel
primo livello ovvero:
‡
‡
„
„
Tasso di fallimenti locali: numero di fallimenti nel secondo
livello diviso il numero totale di accesso allo stesso livello (m2)
Tasso di fallimenti globali: numero dei fallimenti nella cache
diviso il numero totale di accessi generati dalla CPU (m1 x m2)
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
112
56
Elementi che influenzano le prestazioni:
Cache multilivello
‡
In accordo all’organizzazione gerarchica
della memoria la cache di secondo livello è
più grande della cache di primo livello
„
Se la differenza nelle dimensioni del primo
livello e secondo livello è:
‡
‡
„
piccola Æ aumenta il tasso di fallimento
Elevata Æ il tasso di fallimento globale è circa uguale
a quella di una cache mono livello di pari dimensioni
(la somma delle dimensioni dei 2 livelli)
La dimensione del livello 2 deve essere più
vicina a quella della memoria centrale
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
113
Elementi che influenzano le prestazioni:
posizionamento della cache
‡
‡
Se si considerano sistemi con memoria virtuale
occorre posizionare la cache rispetto al MMU
(Memory Management Unit)
Sono possibili due soluzioni:
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
114
57
Elementi che influenzano le prestazioni:
posizionamento della cache
‡
Cache fisica (Soluzione 1):
„
‡
La cache sta a valle del traduttore di indirizzi
virtuali/logici in indirizzi fisici (486 e Pentium)
Cache virtuale (Soluzione 2)
„
„
La cache è posta tra la CPU e l’MMU e si
utilizzano gli indirizzi virtuali/logici
Se il dato appartiene a una linea (nello spazio
degli indirizzi logici) presente in cache si ha un
hit e non si deve tradurre niente perché
l’informazione è in cache (Sun SPARC)
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
115
Elementi che influenzano le prestazioni:
posizionamento della cache
‡
Cache Fisica vs Virtuale
„
Cache fisica:
‡
‡
„
Pro Cache Virtuale
‡
‡
‡
PRO: più semplice, costa meno, è espandibile
CONTRO: negli hit occorre tradurre gli indirizzi da logico a
fisico
PRO: negli hit non si traducono gli indirizzi
CONTRO: il problema dell’address aliasing
Address Aliasing
„
Lo stesso indirizzo virtuale può appartenere a una
molteplicità di spazi di indirizzi, relativi a differenti
processi.
‡
08/11/2007
Il dato fornito dalla cache deve quindi corrispondere al
processo in esecuzione
Sistemi a Microprocessore A.A. 2007-2008
116
58
Elementi che influenzano le prestazioni:
posizionamento della cache
‡
Soluzioni all’Address Aliasing
„
Soluzione 1:
‡
Si invalida la cache (flush) in seguito al cambio di
contesto (context switching o task switching)
ƒ Serve un meccanismo automatico di invalidazione o
lasciata al S.O. (in questo caso la macchina deve
fornire una istruzione di invalidazione)
„
Soluzione 2:
‡
Cache virtuale multicontesto: ad ogni linea di cache è
associato un process tag per identificare il processo
correntemente in esecuzione e quindi la linea ad esso
corrispondente
ƒ Efficiente ma costosa
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
117
La Memoria
Gestione della
Memoria Virtuale
59
La memoria virtuale
‡
‡
‡
‡
Con riferimento alla gerarchia di memoria, la memoria
virtuale riguarda la memoria centrale e la memoria di
massa
Il funzionamento della memoria virtuale si basa sul
principio di località (spaziale e temporale)
E’ stata introdotta per consentire l’esecuzione in modo
trasparente dei programmi di dimensione superiore alla
memoria centrale
La gestione della memoria nei computer attuali è gestita
dall’unità MMU (Memory Management Unit)
„
„
„
Traduce l’indirizzo “logico” ( o “virtuale”) generato dalla CPU in
indirizzo fisico in memoria centrale
Fornisce i meccanismi di protezione degli accessi: controlla ed
evita che gli indirizzi di un processo appartengano ad un altro
processo
Costituisce il supporto Hardware sul quale si appoggia il S.O.
per la gestione complessiva del sistema
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
119
La memoria virtuale:
Sistema Operativo (richiami)
La struttura di un sistema operativo,
tipicamente, è quella a cipolla:
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
120
60
La memoria virtuale:
Sistema Operativo (richiami)
L’hardware è dunque “ricoperto” da una serie di
strati di software.
Ciascun livello:
– usa le funzionalità di quello
sottostante
– fornisce servizi al livello che segue
nella gerarchia
– gestisce delle risorse mediante
politiche invisibili ai livelli superiori
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
121
La memoria virtuale:
Sistema Operativo (richiami)
Il livello più basso è quello del kernel (nucleo).
Questa parte del sistema operativo si occupa di
gestire l’esecuzione dei programmi.
Un programma in esecuzione è
detto processo.
Il kernel distribuisce le
risorse di calcolo tra i
vari processi attivi.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
122
61
La memoria virtuale:
Sistema Operativo (richiami)
Una prima distinzione è dunque tra quei sistemi
che eseguono un processo per volta e quelli in
grado di gestirne diversi “contemporaneamente”.
Questi ultimi sono detti multitasking.
multitasking
I sistemi operativi possono inoltre essere distinti
in base al modo in cui gestiscono i processi:
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
123
La memoria virtuale:
Sistema Operativo (richiami)
• batch: i processi vengono raggruppati in lotti;
• interattivi: l’input viene elaborato subito per poi
richiedere di nuovo l’intervento dell’utente;
• time-sharing: il “tempo” del processore viene suddiviso
in intervalli, e questi sono assegnati ciclicamente ai vari
processi che lo richiedono;
• real-time: i processi devono restituire
comunque un risultato entro un certo
tempo (che abbiano o meno avuto
accesso alle risorse richieste).
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
124
62
La memoria virtuale:
Sistema Operativo (richiami)
Non tutti i processi sono attivi nello stesso
momento; un processo può trovarsi in uno di tre
stati:
• in esecuzione:
esecuzione sta utilizzando il processore;
• in attesa:
attesa sta aspettando il risultato di un
evento esterno, come un’operazione di I/O;
• pronto:
pronto è potenzialmente in
condizione di utilizzare la CPU.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
125
La memoria virtuale:
Sistema Operativo (richiami)
Un processo in esecuzione può cambiare stato per
tre diverse ragioni:
• l’esecuzione termina o viene terminata;
• il processo richiede l’utilizzo di un’altra
risorsa, e viene messo in attesa;
• la CPU viene assegnata ad un
altro processo.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
126
63
La memoria virtuale:
Sistema Operativo (richiami)
E’ il sistema operativo, dunque, a gestire lo stato
dei vari processi. Perché tutto funzioni, è però
necessario che ciascun processo non si accorga di
aver “perso” l’uso del processore; a questo
scopo, l’esecuzione deve venire ripresa
esattamente dal punto in cui si era interrotta.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
127
La memoria virtuale:
Sistema Operativo (richiami)
‡
Nei sistemi time-sharing, nel sospendere/riattivare un
processo è necessario salvare/caricare tutte le
informazioni (Context Switch) in/da un’area di
memoria denominata Task Control Block (TCB):
„ Valori dei registri della CPU
„ Program Counter e altro
‡
Il S.O. assegna un identificatore a ciascun processo e
utilizza alcune liste:
„
„
„
La lista dei processi ready
La lista dei processi bloccati in attesa di essere ripristinati (a
seguito di un evento)
Le liste in questione sono liste di TCB
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
128
64
La memoria virtuale:
Sistema Operativo (richiami)
Dal momento che la memoria di sistema (RAM) è
una risorsa finita, nell’allocarla ai vari processi il
sistema operativo deve risolvere vari problemi:
• trovare spazio per i vari processi;
• “rilocare” il codice caricato in memoria;
• ridurre la frammentazione.
• gestire la protezione
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
129
La memoria virtuale:
Sistema Operativo (richiami)
A
B
A
B
C
In memoria sono
caricati i processi
A e B.
Anche C viene
caricato in
memoria.
C
Il processo B
termina, e libera
la memoria.
A
D
C
08/11/2007
Il processo D non trova spazio, anche se la
memoria libera complessiva sarebbe sufficiente.
Sistemi a Microprocessore A.A. 2007-2008
130
65
La memoria virtuale:
Sistema Operativo (richiami)
Esistono diverse soluzioni alla situazione
appena presentata.
A
A
C
C
D
Si “compatta” la
memoria: il processo C
viene spostato, liberando
così spazio contiguo a
sufficienza per D.
08/11/2007
Da questo nasce un altro
problema: è necessario
aggiornare i riferimenti
ai dati in memoria (di C)
con i nuovi indirizzi.
Sistemi a Microprocessore A.A. 2007-2008
131
La memoria virtuale:
Sistema Operativo (richiami)
Il sistema operativo può riservare un’area
di un disco per lo swapping.
swapping
A
B
D
A
B
C
C
In memoria sono
presenti A, B, e C. D non
trova spazio.
08/11/2007
C viene copiato su
un disco dal gestore
della memoria.
Sistemi a Microprocessore A.A. 2007-2008
C
D
D viene
caricato in
memoria.
132
66
La memoria virtuale:
Sistema Operativo (richiami)
E’ necessario suddividere la memoria in blocchi. Ci sono 3 soluzioni:
• di dimensione fissa(pagine fisiche). I programmi da caricare dovranno
essere divisi in pagine logiche.
•di dimensione variabile (segmenti)
•segmenti con paginazione
Memoria (RAM)
0
1
2
3
4
1
2
3
5
6
9
E
4
6
8
Esempio di pagine fisiche
0
5
7
08/11/2007
Processi
7
8
9
F
G
Sistemi a Microprocessore A.A. 2007-2008
133
La memoria virtuale: Formalizzazione
‡
Al fine di definire formalmente cosa sia la memoria virtuale è
necessario introdurre i seguenti concetti:
„
Sia V={v0, …, vn-1} lo spazio di indirizzamento di un programma P.
Tali indirizzi sono detti indirizzi virtuali o logici
„
Sia M={m0, …, mm-1} lo spazio di memoria fisica
„
Sia f una funzione di mappatura che traduce ad ogni istante di tempo t
un indirizzo virtuale v in un indirizzo di memoria fisica m.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
134
67
La memoria virtuale: Formalizzazione
‡
La funzione identifica il meccanismo di
traduzione/mappatura fra un indirizzo virtuale ed un
indirizzo fisico;
‡
Se l’oggetto di indirizzo v non è in memoria centrale (sarà
comunque nella memoria di massa) allora si ha un fault
„
Il programma P che ha generato v viene sospeso fino
all’avvenuto caricamento in memoria dell’oggetto indicato da v
e la mappa verrà aggiornata
‡
Lo spazio degli indirizzi virtuali è indipendente dalle
dimensioni della memoria e per il programmatore è
virtualmente illimitato
‡
Tuttavia il limite pratico è determinato dalla capacità di
indirizzamento della CPU
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
135
La memoria virtuale: Formalizzazione
‡
La funzione di mappatura può essere realizzata tramite una
tabella in memoria, i cui indirizzi equivalgono agli indirizzi virtuali,
mentre il contenuto identifica gli indirizzi fisici, come
rappresentato nella seguente figura:
‡
L’utilizzo di una tabella è ovviamente totalmente inefficace, in
quanto per ogni indirizzo virtuale è necessario associare una riga
della tabella, e quindi la tabella andrebbe ad occupare uno spazio
in memoria maggiore di quella realmente disponibile.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
136
68
La memoria virtuale: Paginazione
‡
Lo spazio degli indirizzi è diviso in blocchi (detti
pagine logiche) di dimensione fissata e
sottomultipli dello spazio di indirizzamento.
‡
In blocchi di uguale dimensione (pagine fisiche)
è divisa anche la memoria fisica (è quindi
necessario che la pagina sia un sottomultiplo
intero della memoria fisica)
‡
Le pagine che non possono essere salvate in
memoria fisica, a causa della sua limitata
dimensione, sono collocate temporaneamente
nella memoria di massa e da lì recuperate in caso
di bisogno.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
137
La memoria virtuale: Paginazione
‡
Per motivi di efficienza è quindi opportuno che la dimensione delle pagine
sia anche un multiplo intero del cluster (minima unità di memorizzazione)
su disco. Fissati quindi i tre dati a disposizione (spazio di indirizzamento,
dimensione della memoria fisica e dimensione del cluster su disco) è
possibile stabilire anche la dimensione della pagina. In genere le pagine
hanno una dimensione compresa fra 512 byte e 32 Kbyte.
‡
Nella figura seguente è rappresentato lo schema di mappatura delle
pagine virtuali sulle pagine fisiche o sulla memoria di massa
Pagina 1
Pagina 2
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
138
69
La memoria virtuale: Paginazione
‡
Il compilatore traduce il programma in uno spazio
di indirizzi virtuale lineare, illimitato
‡
Il codice viene suddiviso in pagine dal linker o dal
programma di caricamento
‡
Ai fini della traduzione, un indirizzo virtuale viene
interpretato come composto di due campi che
contengono rispettivamente:
„
„
Il numero di pagina logica
Lo scostamento entro la pagina
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
139
La memoria virtuale: Paginazione
‡
Esempio: consideriamo uno spazio virtuale di 4 GByte (32
bit per gli indirizzi), con pagine di 4 KByte, possiamo
pensare l’indirizzo virtuale come suddiviso in due parti: la
parte meno significativa composta da 12 bit (12 bit
permettono di individuare 4096 indirizzi), e la parte più
significativa composta dai rimanenti 20 bit, che permettono
di indirizzare 1048576 distinte pagine di memoria. Per
individuare la locazione 1037 all’interno della pagina
104567, avremo, dopo la conversione in base 2 dei
precedenti valori, la seguente schematizzazione:
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
140
70
La memoria virtuale: Paginazione
‡
Applicando il procedimento inverso, il
seguente indirizzo virtuale:
‡
Identifica:
„
„
la locazione (010110001001)2=(1417)10
della pagina (00000111011011100101)2=(30437)10
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
141
La memoria virtuale: PMT su singolo livello
‡
Il processo di traduzione della locazione di inizio pagina
virtuale in inizio pagina fisica viene effettuato dalla PMT
(Page Map Table)
‡
In corrispondenza di ciascun numero di pagina logica (VPN,
Virtual Page Number) fornisce il numero di pagina fisica
(RPN) ovvero l’indirizzo fisico della prima posizione della
pagina in memoria centrale
‡
La PMT risiede in memoria fisica e l’indirizzo dell’inizio della
PMT è contenuto in un registro del processore detto RP
(Root Pointer) o CR3 nei processori della famiglia Intel.
‡
VPN è usato come indice nella PMT
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
142
71
La memoria virtuale: PMT su singolo livello
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
143
La memoria virtuale: PMT su singolo livello
‡
Ogni elemento di PMT è detto Page Table Element (PTE) e
rappresenta un descrittore di pagina. Esso contiene:
„
„
l’indirizzo fisico della corrispondente pagina fisica
informazioni ausiliarie (PROT):
‡
bit P: indica la presenza o meno della pagina in memoria fisica
ƒ Nell’esempio a pp. 138 per la pagina P1 il bit indicherà che non è in
memoria e i bit del descrittore perdono di significato.
ƒ In seguito alla generazione di un indirizzo interno ad una pagina che
non è in memoria centrale si ha un page fault. Si genera
un’interruzione gestita dal S.O. che provvede al caricamento della
pagina dal disco e all’aggiornamento del bit P.
‡
bit A: indica se la pagina in questione è stata indirizzata o meno.
ƒ Il S.O. legge periodicamente il valore di A e se vale 1lo azzera. In
questo modo il S.O. costruisce una statistica che descrive l’utilizzo della
pagina, e che può essere usata come politica di rimpiazzamento, per
esempio utilizzandola per l’algoritmo LRU.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
144
72
La memoria virtuale: PMT su singolo livello
„
informazioni ausiliarie (PROT):
‡
bit M: indica se la pagina è stata modificata (M=1) o
meno.
ƒ Se il contenuto della pagina nella sua permanenza nella
memoria centrale viene modificato (scrittura) allora occorre
aggiornare la copia sulla memoria di massa. Essa va
aggiornata prima che questa usata per un’altra pagina logica
(di un altro processo).
ƒ Se non viene modificata, allora può essere rimpiazzata da
un’altra pagina logica e non è necessario l’aggiornamento in
memoria di massa
‡
uno o più bit ACC: che indicano i diritti di accesso alla
pagina da parte dei processi in esecuzione sulla macchina
ƒ Sono utilizzati per la protezione e il controllo degli accessi. Ad
esempio per definire se la pagina è:
ƒ non scrivibile da programmi utente (es. la pagina è del
S.O.)
ƒ esclusiva di un processo (es. dll parte dati)
ƒ condivisa da più processi (es. dll parte istruzione)
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
145
La memoria virtuale: PMT su singolo livello
‡
Considerazioni:
„
I limiti di questo approccio sono:
‡
‡
„
Supponendo di avere un indirizzamento a 32 bit e pagine di 4 Kbyte, si
ha un indirizzo fatto da 20 bit per il numero di pagina e 12 per lo
scostamento.
‡
„
l’occupazione di memoria della PMT
La difficoltà a mantenere uno spazio di memoria contiguo in uno spazio
virtuale e paginato.
Siamo costretti a memorizzare nella PMT i 20 bit dell’indirizzo dell’inizio della
pagina fisica più i bit addizionali (supponendo che essi occupino altri 6 bit),
ottenendo quindi un totale di 26 bit per pagina
Al contrario della TAG della cache, che viene normalmente realizzato in
hardware e quindi con una dimensione in bit esattamente pari a quella
desiderata, la PMT risiede in memoria e quindi l’occupazione in bit è un
multiplo intero della dimensione minima di memorizzazione (il byte),
costringendoci quindi ad utilizzare 4 byte (1 per lo stato e 3 per la
pagina fisica) per ogni locazione della PMT.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
146
73
La memoria virtuale: PMT su singolo livello
„
Dal momento che nella PMT ci sono quindi 220=104567
righe da 4 byte otteniamo un’occupazione complessiva
di 4 Mbyte, decisamente troppo elevata rispetto alla
memoria fisica normalmente installata in un calcolatore.
„
D’altra parte dal momento che la PMT risiede in memoria
centrale, e la memoria centrale è paginata, sembra
necessario, oltreché opportuno paginare anche la PMT.
„
La necessità di paginare la PMT porta a considerare la
possibilità di introdurre un livello ulteriore nella PMT,
creando così le premesse per utilizzare una PMT
multilivello che ottimizzi lo spazio occupato su disco.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
147
La memoria virtuale: PMT su 2 livelli
‡
Per ovviare alla enorme occupazione di memoria della PMT
e per garantirne la paginazione, si divide in due livelli la
PMT, secondo lo schema rappresentato in figura:
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
148
74
La memoria virtuale: PMT su 2 livelli
‡
La PMT di primo livello è una pagina di memoria che contiene gli
indirizzi di inizio pagina delle PMT di secondo livello, le quali
contengono a loro volta gli indirizzi di inizio delle pagine fisiche.
‡
L’indirizzo virtuale è diviso in tre parti, in cui, scorrendo dai bit
più significativi a quelli meno significativi, abbiamo l’offset
all’interno della PMT di primo livello, l’offset all’interno
della PMT di secondo livello, e l’offset all’interno della
pagina.
‡
Il processore mantiene all’interno di un proprio registro (RP)
l’indirizzo della PMT di primo livello, a cui somma l’offset del
Livello 1 per ottenere l’indirizzo all’interno della PMT di primo
livello da cui leggere l’indirizzo di inizio pagina di secondo livello.
„
Tale valore è un puntatore in memoria all’inizio della pagina di secondo
livello, al quale viene aggiunto l’offset di secondo livello per
determinare quale riga della PMT di secondo livello contenga l’indirizzo
di inizio di pagina fisica. Per ottenere l’indirizzo fisico non dobbiamo
fare altro che sommare ad esso l’offset all’interno della pagina fisica.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
149
La memoria virtuale: PMT su 2 livelli
‡
Permette la riduzione dell’occupazione di memoria della
PMT:
„
mentre nel caso precedente avevamo che la dimensione della
PMT era invariante rispetto alla memoria effettivamente
utilizzata, adesso le pagine di secondo livello vengono create
dinamicamente solo quando necessario.
„
Si consideri una memoria indirizzata a 32 bit e pagine di 4
KByte. Si assuma che i campi relativi al primo livello e al
secondo siano di 10 bit. In questo modo:
‡
‡
‡
08/11/2007
La tabella di livello 1 è fatta da 1024 linee che riferiscono ad
altrettante tabelle di secondo livello.
Se una pagina di secondo livello corrisponde effettivamente ad una
pagina di memoria, la pagina di secondo livello potrà contenere
1024 righe da 4 byte (l’indirizzo fisico),
La tabella di primo livello allora sarà capace di gestire 1024 pagine
da 4 Kbyte per un totale di 4 Mbyte di memoria.
Sistemi a Microprocessore A.A. 2007-2008
150
75
La memoria virtuale: PMT su 2 livelli
‡
Con i dati utilizzati in precedenza abbiamo che per
individuare l’offset all’interno di una pagina fisica sono
necessari 12 bit, mentre per individuare una delle righe
della PMT sono necessari 10 bit (ricordiamo che le righe per
ogni pagina della PMT sono 1024, per le assunzioni fatte
sulla dimensione di pagina). L’indirizzo virtuale è perciò
scomponibile secondo il seguente schema:
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
151
La memoria virtuale: PMT su 2 livelli
La tabella a 2 livelli consente di far fronte alla richiesta in
modo adattativo: quando un programma richiede
l’allocazione di memoria può essere necessario allocare
tabelle di secondo livello: si alloca una pagina fisica e si
inserisce il relativo descrittore nella tabella di livello 1.
„
Nel caso in cui il programma richieda più di 4 Mbyte viene
creata una seconda riga nella pagina di primo livello ed una
seconda pagina di secondo livello, capace, unitamente alla
prima già presente, di gestire fino ad 8 Mbyte di memoria.
‡
A regime la memoria conterrà sia le pagine di programma,
sia le pagine corrispondenti alle tabelle (Alberi di
Traduzione).
‡
Anche il S.O. risulterà paginabile per quei programmi e
parti che non richiedono spazi di memoria fissi o non
paginabili (es: vettore delle interruzioni)
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
152
76
La memoria virtuale: TLB
‡
Il TLB (Translation Lookaside Buffer) è una cache
realizzata in hardware che associa ad un indirizzo
di pagina virtuale una riga della PMT.
‡
Nel TAG di questa cache è contenuto l’indirizzo di
pagina logica più un bit di validità, mentre nel
campo DATA è contenuta una riga di PMT.
‡
Nel caso di PMT su due livelli sono memorizzate
in cache soltanto le righe delle PMT di secondo
livello, visto che la tabella di primo livello è
considerata solo come tabella di transizione per
la decodifica.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
153
La memoria virtuale: TLB
‡
Lo schema del TLB è rappresentato di seguito:
„
TAG contiene:
‡
‡
„
il numero della pagina logica
il bit di validità (V)
DATO contiene:
‡
‡
Il numero della pagina fisica
I bit di protezione (PROT) e il bit M indicatore di modifica
‡
Gli indicatori devono essere allineati a quelli della PMT
‡
In caso di page fault:
1.
2.
3.
08/11/2007
La pagina viene caricata in memoria
Viene costruito il relativo descrittore in PMT
Si costruisce il relativo elemento in TLB
Sistemi a Microprocessore A.A. 2007-2008
154
77
La memoria virtuale: TLB
‡
Nel caso in cui la pagina di memoria non venga indirizzata da
lungo tempo:
„
„
‡
Il riferimento in TLB può essere utilizzato per un’altra pagina
Un nuovo riferimento alla pagina precedente genera un miss in TLB e
la costruzione del nuovo riferimento utilizzando direttamente i dati in
PMT
Le dimensioni sono inferiori alla cache interna alla CPU:
„
Un elemento in TLB relativo a una pagina viene costruito al primo
indirizzamento della pagina o come nel caso di sopra. Il principio di
località suggerisce che i riferimenti successivi a quello che ha richiesta
la costruzione in TLB saranno con alta probabilità all’interno della
stessa pagina
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
155
La memoria virtuale: Dimensione Pagina
‡
‡
Come dimensionare la pagina?
Considerazioni:
„
Pagine grandi agevolano il trasferimento dati dalla
memoria di massa:
‡
‡
„
„
Riduce il tempo di latenza del disco (posizionamento sul
settore)
Il tempo di trasferimento è quello dominante
La dimensione di una PMT è direttamente proporzionale
al numero di pagine: per grandi pagine occorrono pochi
descrittori Æ PMT piccole Æ TLB piccole
Grandi dimensioni introducono però spreco di memoria e
la frammentazione interna cioè pagine non usate
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
156
78
La memoria virtuale: Dimensione Pagina
‡
Il problema della frammentazione:
„
Esempio:
‡
‡
„
La frammentazione è irrilevante se le dimensioni della memoria
centrale sono alte
‡
‡
Si consideri un processo strutturato in tre segmenti (codice, dati e stack)
Mediamente l’ultima pagina per ciascun segmento risulta per metà vuota Æ
1,5 pagine sprecate per processo.
Nel caso di pagine da 4 KByte, memoria di 64MB e 40 processi attivi (come
quello di sopra) lo spreco totale è dato da 1,5x4x40 = 240 KB che rapportati
a 64MB è pari a 0.4% di spreco
Valori tipici
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
157
La memoria virtuale: Tabella delle
pagine Invertita
‡
Una tabella delle pagine invertita (IPT) è
caratterizzata da:
„
„
„
‡
Ha un numero di elementi pari al numero di pagine
fisiche
Ogni elemento (PTE) contiene il numero di pagina
virtuale (VPN) e non quello fisico (RPN) insieme alle
informazioni di protezione
L’indicizzazione avviene tramite funzione hash
La chiave di ricerca è VPN e la funzione hash
produce un’associazione tra VPN e posizioni in
IPT
„
La funzione genera per ogni chiave k un indice h
compreso tra 0 e R-1, dove R indica il numero totale di
linee della tabella
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
158
79
La memoria virtuale: Tabella delle
pagine Invertita
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
159
La memoria virtuale: Tabella delle
pagine Invertita
‡
Si ha quindi una relazione 1:1 tra PTE e pagine fisiche
„
„
„
Se il campo VPN del PTE in posizione x contiene il valore y,
allora la pagina virtuale y è mappata sulla pagina fisica.
L’hit avviene se il valore di VPN del PTE determinato dalla
funzione hash è uguale al VPN in ingresso usato come chiave
di ricerca. In caso contrario si ha un fault
Poiché il numero di chiavi (indirizzi virtuali) è molto maggiore
della dimensione di IPT, si può avere che differenti indirizzi
virtuali siano indicizzati allo stesso modo (collisione):
ki≠kj Æ h(ki) = h(kj)
‡
La codifica hash garantisce fornisce una complessità di
ricerca O(1) rispetto alle tecniche binarie O(log n)
‡
Esistono diverse definizioni di funzioni hash e non esiste
una funzione hash ideale
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
160
80
La memoria virtuale: Tabella delle
pagine Invertita
‡
Gestione delle collisioni
„
Si introducono delle liste di elementi internamente alla
IPT mediante puntatori
‡
‡
‡
‡
‡
08/11/2007
In corrispondenza di una collisione si cerca una posizione
alternativa dove collocare il nuovo VPN
Individuata la posizione si inserisce il riferimento
(puntatore) del nuovo indice nel campo puntatore della
posizione precedente
Il meccanismo può iterare fino a che non si trova una
posizione libera
La posizione libera viene identificata utilizzando delle
tecniche di scansione lineare ad esempio:
[h(k)+j]modR con j=0,1,…
Se non ci sono posizioni libere si prosegue con il
rimpiazzamento (es. algoritmo LRU)
Sistemi a Microprocessore A.A. 2007-2008
161
La memoria virtuale: Tabella delle
pagine Invertita
‡
In questo caso si ha:
„
„
Hit se IPT[h].VPN=VPN in caso contrario occorre seguire
la catena
Il miss si ha quando si raggiunge il valore NULL Æ non si
è trovato alcun elemento.
NULL
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
162
81
La memoria virtuale: Tabella delle
pagine Invertita
‡
Algoritmo LRU per IPT
„
„
Il S.O. gestisce una lista (lista LRU) per
ricordare l’ordine degli accessi.
In caso di page fault
‡
‡
08/11/2007
S.O riordina la lista in modo da tenere di conto dei
riferimenti tra due page fault (il precedente e quello
corrente)
La lista LRU riferisce a pagine reali
Sistemi a Microprocessore A.A. 2007-2008
163
La memoria virtuale: Tabella delle
pagine Invertita – catene lunghe
‡
Può accadere di dover seguire una lunga catena
per trovare il VPN cercato.
‡
Potenzialmente esiste il rischio che la tabella si
riempia quando su una stessa posizione si mappa
un numero di indirizzi virtuali pari al numero di
elementi in tabella.
‡
Il problema delle catene lunghe comporta
inevitabilmente una degradazione delle
prestazioni, questo nonostante una soluzione con
TLB
„
La navigazione delle catene avviene se il TLB non
fornisce la traduzione.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
164
82
La memoria virtuale: Tabella delle
pagine Invertita – catene lunghe
‡
Una soluzione al problema è l’utilizzo di un Hash
Anchor Table (HAT)
„
La tabella HAT (dimensioni più grandi rispetto all’IPT)
consente di espandere la gamma dei valori hash
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
165
La memoria virtuale: Tabella delle
pagine Invertita – catene lunghe
‡
I passi di traduzione sono:
„
„
„
„
‡
Hashing del PID e VPN per il calcolo dell’indice nella HAT
Si individua l’indice della IPT da cui partire nella ricerca.
Si guarda nella IPT se esiste il processo con il PID richiesto e la
VPN. Se esiste, stop. (HIT)
Se il PID o il VPN non corrispondono al valore in IPT (primo
confronto) si prosegue nella catena di puntatori al successivo
riferimento. Ancora, se esiste, stop (HIT), altrimenti si
prosegue. Se non si trova un “match” valido allora si ha un
MISS.
“The surprising thing is that this can be reasonably
efficient. If you can have a successful search in only a
couple of probes on average, then fewer accesses are
needed than to do a lookup in a page table that is more
than a couple of levels deep.”
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
166
83
Hash Anchor Table
Virtual Address
VPN = 0x2AA70
Offset
PID = 8
Hash
0
1
2
0x120C
0x120D
2
Hash anchor table
08/11/2007
PID
1
12
1
VPN
0x74094
0xFEA00
0x00023
Next
0x0012
--0x120D
..
......
....
14
8
0x2409A
0x2AA70
0x0980
0x00A0
..
.....
match
....
Sistemi a Microprocessore A.A. 2007-2008
167
Hashed Page Table
‡
‡
‡
‡
‡
‡
Nella HPT le liste si costruiscono sulle righe senza usare i
puntatori
La dimensione di riga stabilisce la dimensione massima
delle liste
L’indice di hash è preso come indice di riga e la riga viene
percorsa da sx a dx.
Il miss avviene se nessuno dei PTE contiene il VPN
In caso di hit il PTE fornisce il numero di pagina fisica.
Vantaggi:
„
„
Scansione più efficiente
Organizzazione in uno spazio di memoria contiguo per le PTE
(accesso vettorizzato)
‡
Svantaggi:
‡
L’algoritmo di rimpiazzamento utilizzato è LRU
„
Rigida = soluzione statica
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
168
84
Hashed Page Table
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
169
La memoria virtuale: Segmentazione
‡
La paginazione offre uno spazio di indirizzamento uni-dimensionale
„
‡
Le pagine sono entità dissociate dalle esigenze e dalle strutture del
programma (spazio di indirizzamento continuo)
La segmentazione offre uno spazio di indirizzamento multidimensionale
„
I segmenti hanno dimensione variabile sia nello spazio che nel tempo
‡
Normalmente la dimensione massima di un segmento è perlomeno un ordine di
grandezza superiore alla dimensione di pagina
„
Ogni segmento costituisce uno spazio di indirizzamento a se stante
I segmenti sono entità strettamente legate alle strutture del programma
„
Risponde ad esigenze diverse da e superiori a quelle della paginazione
„
‡
‡
‡
„
„
Separazione tra dati ed istruzioni
Protezione di accesso più puntuale e specifica
Ha maggiore costo di implementazione ma anche maggiore flessibilità
Le dimensioni di segmento possono variare dinamicamente
‡
‡
„
Separazione in segmenti codice, dati e stack
Causa frammentazione esterna
Può essere combinata con la paginazione
Segmenti grandi possono essere paginati
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
170
85
La memoria virtuale: Segmentazione
‡
In un sistema segmentato, un indirizzo logico è composto
da:
„
„
‡
Il selettore di segmento
Lo scostamento all’interno del segmento
La traduzione:
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
171
La memoria virtuale: Segmentazione
‡
Limiti:
„
‡
Nelle operazioni di I/O la dimensione di un segmento è in
genere scorrelata rispetto alla dimensione dei blocchi-dati
trasferiti.
Pregi:
„
Un segmento contiene codice autoreferenziale
(intersegmento), cioè raramente si salta in altri segmenti,
quindi la probabilità che l’esecuzione avvenga sempre nello
stesso segmento è molto elevata.
„
Di norma le applicazioni usano solo 3 segmenti: codice, dati e
stack. L’impacchettamento delle funzioni in un unico segmento
di codice (eseguito da un “buon” linker) riduce le operazioni di
I/O relative al codice al solo caricamento del segmento
„
La protezione è superiore alla paginazione, per il legame
segmento-modulo di programma:
‡
‡
‡
08/11/2007
Limitato context-switch
Anche se le dimensioni sono grandi lo si legge solo una volta
Facilita la condivisione di codice
Sistemi a Microprocessore A.A. 2007-2008
172
86
La memoria virtuale: Segmentazione
‡
Difetti:
„
Frammentazione esterna
‡
‡
08/11/2007
Poiché la dimensione dei segmenti non è costante, a
seguito di allocazioni/deallocazioni si formano zone di
memoria non utilizzate tra segmento e segmento,
che prese singolarmente sono troppo piccole, ma
sommate tra loro possono costituire un valido spazio
per l’allocazione
La deframmentazione o ricompattamento della
memoria è una pratica sconsigliata per la complessità
nella gestione e il tempo sprecato per effettuarla.
Sistemi a Microprocessore A.A. 2007-2008
173
La memoria virtuale: Segmentazione
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
174
87
La memoria virtuale: segmentazione e
paginazione
‡
Alcune architettura utilizzano entrambe:
„
„
La segmentazione per suddividere
convenientemente il programma in base alla
struttura dello spazio virtuale
La paginazione per garantire un’efficiente uso
della memoria
‡
Si elimina la frammentazione esterna ma si ha quella
interna.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
175
La memoria virtuale: segmentazione e
paginazione nel processore Intel 80386
‡
‡
A partire dalla cpu 80386, Intel ha introdotto la
paginazione a valle della segmentazione
Terminologia:
„
Spazio lineare degli indirizzi
‡
„
Indirizzo lineare
‡
„
La memoria fisica è uno spazio di indirizzamento lineare,
ad ogni byte corrisponde un indirizzo. (Con 32 bit si hanno
4GB, dal Pentium Pro in poi si hanno 36 bit con 64GB)
E’ un indirizzo dello spazio lineare che identifica un byte in
modo univoco in memoria fisica
Indirizzo logico
‡
08/11/2007
E’ dato da due componenti secondo la notazione
SR:OFFSET, dove SR è il registro segmento e OFFSET lo
scostamento intra segmento
Sistemi a Microprocessore A.A. 2007-2008
176
88
La memoria virtuale: segmentazione e
paginazione nel processore Intel 80386
‡
Modo reale
‡
Modo protetto
„
„
„
‡
Si indirizza come l’8086
Più task contemporaneamenteÆ uso della protezione offerta
dalla memoria virtuale
Il registro di segmento non viene considerato come base
dell’indirizzo in memoria ma come selettore di segmento
La struttura della memoria virtuale del 386 e successivi è:
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
177
La memoria virtuale: 80386
‡
Paginazione:
„
Le pagine sono mantenute mediante PMT a due livelli
‡
‡
„
La Page Directory (primo livello per il catalogo delle pagine
Le Page Tables per le tabelle di secondo livello
Le tabelle hanno tutte dimensione 4KByte
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
178
89
La memoria virtuale: 80386
‡
Il registro CR3 contiene nei 20 bit più significativi l’indirizzo
dell’inizio pagina della PMT di secondo livello, mentre i bit
meno significativi sono posti a 0.
‡
Ogni riga (detta descrittore di pagina) delle PMT è
composta da 4 byte disposti come segue, dei quali
evidenziamo i bit più significativi, o che sono già stati
trattati in precedenza:
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
179
La memoria virtuale: 80386
‡
‡
‡
‡
‡
‡
‡
bit 0 (P): per la PMT di primo livello indica che la corrispondente PMT di secondo livello
è in memoria, mentre per la PMT di secondo livello indica che la corrispondente pagina
fisica è in memoria
bit 5 (A): Per la PMT di primo livello indica che è stato fatto accesso ad una o più delle
pagine indirizzate dalla corrispondente PMT di secondo livello sono state utilizzate. Per
la PMT di secondo livello indica che si è fatto accesso ad una o più delle locazioni di
memoria della pagina fisica a cui la PMT fa riferimento
bit 3 (PWT): Page-level Write Through, quando asserito implica una politica di scrittura
immediata in memoria per ogni scrittura della cache interna. Se negato, la logica di
gestione della cache effettua scritture differite.
bit 4 (PCD): Page-level Cache Disabled, se asserito rende non trasferibile nella cache
interna il contenuto della pagina. Se disasserito abilita il trasferimento.
bit 6 (D): Per la PMT di primo livello indica che una o più delle 1024 pagine associate
alla corrispondente PMT di secondo livello è stata modificata durante la sua permanenza
in memoria fisica. Per la PMT di secondo livello indica invece che una o più locazioni
della corrispondente pagina fisica è stata modificata durante la sua permanenza in
memoria fisica.
bit 9-11 a disposizione del sistema operativo
bit 12-31 indirizzo di pagina
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
180
90
La memoria virtuale: 80386
‡
Nello schema
seguente è invece
rappresentata la
procedura fisica per
rintracciare un
indirizzo fisico a
partire dal
corrispondente
indirizzo virtuale. Si
noti la presenza dei
moltiplicatori per 4, la
cui funzione è già
stata evidenziata
precedentemente. In
tale schema sono
indicati con esattezza
anche il numero di bit
coinvolti in ogni
operazione e da dove
provengono i bit più e
meno significativi.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
181
La memoria virtuale: Algoritmi di
rimpiazzamento
‡
Una volta che tutte le pagine di memoria fisica sono state occupate, è necessario
spostarne alcune su disco e rendere disponibile la memoria fisica per nuove pagine che
possono essere necessarie ai programmi in esecuzione.
Così come per le politiche di rimpiazzamento all’interno della cache, sono necessari
algoritmi che effettuino questo procedimento tentando di ottimizzare le prestazione
generali del sistema. Così come per le memorie cache gli algoritmi più diffusi sono
riportati di seguito.
Algoritmo RAND
‡
Algoritmo FIFO
‡
‡
„
„
‡
L’algoritmo FIFO rimpiazza la pagina che è da più tempo in memoria fisica. Per poter rendere
effettivo tale algoritmo è necessario tenere traccia dell’ingresso delle pagine in memoria fisica.
Algoritmo LRU
„
‡
L’algoritmo RAND rimpiazza una pagina presa casualmente fra quelle attualmente in memoria e
la salva sulla memoria di massa.
Tale algoritmo rimpiazza la pagina che non è stata utilizzata da più tempo. Anche in questo caso
è necessario tenere traccia dell’utilizzo delle pagine che sono attualmente in memoria.
Algoritmo WSR
„
Tale algoritmo è detto di rimpiazzamento sulla base del Working Set. Il Working Set di un
processo è l’insieme delle pagine che tale processo utilizza in un intervallo di tempo Dt. Il
sistema operativo tiene traccia dell’evoluzione del working set di ogni processo e rimpiazza le
pagine a cui non viene fatto accesso. Tale algoritmo è una sorta di LRU ottimizzato rispetto ai
singoli processi in esecuzione.
08/11/2007
Sistemi a Microprocessore A.A. 2007-2008
182
91