Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Calcolatori 10 La Memoria
Calcolatori 10 La Memoria
Calcolatori
La memoria
Dario Bruneo
Nota
Le slide seguenti sono da intendersi come materiale didattico aggiuntivo del corso di
Architettura dei Calcolatori.
Non possono in nessun modo essere sostitutive dei libri di testo, devono quindi
essere usate esclusivamente come una guida.
Dimensione
Velocità
Costo
Con una sola tecnologia non è possibile soddisfare tutte e tre i criteri
Principio di località
Approccio gerarchico
Un programma, in un certo istante di tempo, accede soltanto ad una porzione relativamente piccola del
suo spazio di indirizzamento
Località temporale
Quando si fa riferimento ad un elemento, vi è la tendenza di farvi riferimento di nuovo dopo poco tempo
Località spaziale
Quando si fa riferimento ad un elemento, vi è la tendenza a fare riferimento dopo poco tempo ad elementi con indirizzo vicino ad
esso
Il principio di località emerge in modo naturale dalle strutture di controllo semplici e tipiche dei
programmi
DRAM 50 - 70 ns $20-$75
Current
Speed Processor Size Cost ($/bit) technology
Memory DRAM
FIGURE 5.1 The basic structure of a memory hierarchy. By implementing the memory system
as a hierarchy, the user has the illusion of a memory that is as large as the largest level of the hierarchy, but
can be accessed as if it were all built from the fastest memory. Flash memory has replaced disks in many
Calcolatori a.a. 13/14 embedded devices, and may lead Darioto a Bruneo
new level in the storage hierarchy for desktop and server computers;
see Section 6.4. Copyright © 2009 Elsevier, Inc. All rights reserved.
Gerarchia di memoria (cont.)
Organizzazione a livelli
CPU
Increasing distance
i dati vengono scambiati tra livelli adiacenti
Level 1
from the CPU in
access time
Levels in the Level 2
blocco (linea)
memory hierarchy
FIGURE 5.3 This diagram shows the structure of a memory hierarchy: as the distance
Hit rate
from the processor increases, so does the size. This structure, with the appropriate operating
mechanisms, allows the processor to have an access time that is determined primarily by level 1 of the hier-
archy and yet have a memory as large as level n. Maintaining this illusion is the subject of this chapter.
Although the local disk is normally the bottomProcessor
of the hierarchy, some systems use tape or a file server over a
Miss rate
local area network as the next levels of the hierarchy. Copyright © 2009 Elsevier, Inc. All rights reserved.
Tempo di hit
FIGURE 5.2 Every pair of levels in the memory hierarchy can be thought of as having
Calcolatori a.a. 13/14 Dario Bruneo upper and lower level. Within each level, the unit of information that is present or not is called a blo
Memoria cache
Termine storicamente utilizzato per identificare il livello della memoria che si trova tra il processore e la
memoria principale
Oggi, tale termine ha un’accezione più generale e può indicare i sistemi di memoria che sfruttano il
concetto di località
La memoria (istruzioni e dati) vista nel progetto della CPU MIPS può essere considerata come una
memoria cache
X1 X1
Prima della richiesta la cache contiene gli elementi usati
Xn – 2 Xn – 2
di recente
Xn – 1 Xn – 1
Non essendo Xn presente tra gli elementi più recenti
X2 X2
viene generata una cache miss
Xn
gerarchia inferiore e viene aggiunta nella cache a. Before the reference to Xn b. After the reference to Xn
FIGURE 5.4 The cache just before and just after a reference to a word Xn that is not
initially in the cache. This reference causes a miss that forces the cache to fetch Xn from memory and
insert it into the cache. Copyright © 2009 Elsevier, Inc. All rights reserved.
Esistono differenti tecniche in grado di rispondere ai problemi succitati con ottimizzazioni differenti
Corrispondenza univoca tra l’indirizzo in memoria del blocco (nel caso semplice della parola) e la
locazione nella cache.
Regola semplice
(Indirizzo del blocco) modulo (numero blocchi nella cache)
Se il numero di blocchi (n) della cache è una potenza del 2, l’operazione di modulo consiste nel prendere i (log2 n) bit meno
significativi dell’indirizzo della parola
Cache
000
001
010
011
100
101
110
111
!
Es. n = 8
Problema delle collisioni
Bit di validità
cache 011
100
N
N
011
100
N
N
101 N 101 N
110 N 110 Y 10two Memory (10110two)
111 N 111 N
Indirizzo del a. The initial state of the cache after power-on b. After handling a miss of address (10110two)
Hit o Miss
dato nella Blocco della
nell’accesso Index V Tag Data Index V Tag Data
memoria cache
alla cache 000 N 000 Y 10two Memory (10000two)
principale 001 N 001 N
010 Y 11two Memory (11010two) 010 Y 11two Memory (11010two)
10110 110 Miss 011 N 011 N
100 N 100 N
11010 010 Miss 101 N 101 N
110 Y 10two Memory (10110two) 110 Y 10two Memory (10110two)
10110 110 Hit 111 N 111 N
11010 010 Hit c. After handling a miss of address (11010two) d. After handling a miss of address (10000two)
FIGURE 5.6 The cache contents are shown after each reference request that misses, with the index and tag fields
shown in binary for the sequence of addresses on page 461. The cache is initially empty, with all valid bits (V entry in cache)
turned off (N). The processor requests the following addresses: 10110two (miss), 11010two (miss), 10110two (hit), 11010two (hit), 10000two
Calcolatori a.a. 13/14 Dario Bruneo (miss), 00011two (miss), 10000two (hit), 10010two (miss), and 10000two (hit). The figures show the cache contents after each miss in the
Implementazione MIPS
2n x (2m x 32 + (32 - n - m - 2) + 1) =
1021
1022
2n x (2m x 32 + 31 - n - m)
1023
! 20 32
FIGURE 5.7 For this cache, the lower portion of the address is used to select a c
Calcolatori a.a. 13/14 Dario Bruneo entry consisting of a data word and a tag. This cache holds 1024 words or 4 KB. We assume
Blocchi composti da più parole
Esempio:
(Indirizzo del blocco) modulo (numero blocchi nella cache)
si consideri una cache con 64 blocchi di 16 byte ciascuno
a:
! Indirizzo del dato in byte $
# & × Byte per blocco + (Byte per blocco -1)
" Byte per blocco %
!
64K
Il costo di una miss è dato da
0% 256K
16 32 64 128 256
latenza per ottenere la prima parola del blocco
Block size
Durante un accesso in memoria, l’unità di controllo deve riconoscere un eventuale cache miss e risolvere il
problema prelevando i dati dalla memoria principale (o da una cache di livello inferiore)
La gestione delle cache hit si effettua con qualche piccola modifica all’unità di controllo
La gestione delle cache miss, invece, viene effettuata da un’unità di controllo separata
E’ necessario uno stallo della pipeline (tranne nel caso di esecuzione fuori ordine)
Scrivere la parola proveniente dalla memoria nella cache, aggiornare il campo tag ed il bit di validità
write-through
ogni volta che scrivo un dato nella cache lo aggiorno anche nella memoria
poco efficiente
write-back
In una cache write-through possiamo scrivere il dato nella cache e contemporaneamente leggere il campo tag. In una cache write-back
tale operazione porterebbe ad una perdita di dati nel caso di cache miss.
due cicli di clock per scrittura (uno per la lettura del tag ed uno per la scrittura)
write allocate
no write allocate
le modifiche vengono effettuate solo nella memoria senza allocare il blocco nella cache
pipeline a 12 stadi
sia write-through che write-back (settabile dal Sistema
Operativo)
cache dati e istruzioni separate (split cache)
buffer scrittura pari a un elemento
! Address (showing bit positions)
31 14 13 65 210
!
18 8 4 Byte Data
Hit Tag offset
! Index Block offset
18 bits 512 bits
! V Tag Data
!
256
entries
!
18 32 32 32
!
=
Mux
32
Prestazioni
!
Instruction miss rate Data miss rate Effective combined miss rate
! 0.4% 11.4% 3.2%
FIGURE 5.10 Approximate instruction and data miss rates for the Intrinsity FastMATH
! processor for SPEC2000 benchmarks. The combined miss rate is the effective miss rate seen for the
combination of the 16 KB instruction cache and 16 KB data cache. It is obtained by weighting the instruction
and data individual miss rates by the frequency of instruction and data references. Copyright © 2009 Elsevier,
Una cache unica di rights
Inc. All dimensioni
reserved.pari alla somma delle due split cache avrebbe una frequenza di miss inferiore
Tale miglioramento non è sufficiente a compensare il miglioramento che si ottiene dall’aumento della larghezza di banda della cache
tramite l’utilizzo delle split cache.
larghezza di banda
frequenza di clock del bus di memoria normalmente molto inferiore a quella del processore
Esempio:
1 ciclo di clock del bus per inviare alla cache una parola
!
M
Penalità di miss
Cache
1 + 15 + 1 (cicli di clock)
! Bus
M
Byte trasferiti per ciclo di clock
b. Wide
4/17 = 0,235
Memory
a. One-word-wide
Calcolatori a.a. 13/14 Dario Bruneo memory organization
Progettazione del sistema di memoria (cont.)
8/33 = 0,242
Memory M
!
Memory Memory
16/65 = 0,246
Il costo principale di questa soluzione consiste nell’aumento del tempo di accesso alla cache
dovuto al multiplexer ed alla logica di controllo tra il processore e la cache
a. One-word-wide a. One-word-wide
Calcolatori a.a. 13/14 Dario Bruneo memory organization memory organization
Progettazione del sistema di memoria (cont.)
Multiplexor
bus con larghezza di banda pari a 2 parole
Cache
Cache
!
Bus Bus
Penalità di miss
1 + 15 + 1 (cicli di clock)
Memory
Memory
bank 0
Byte trasferiti per ciclo di clock
b. Wider memory organization c. Interleaved
8/17 = 0,47
Memory
Il costo principale di questa soluzione consiste nell’aumento del tempo di accesso alla cache
e nell’aumento della larghezza del bus
Penalità di Bus
miss
Bus Bus Bus Bus Bus
Bus Bus
Il tempo di CPU può essere suddiviso nei cicli di clock che la CPU spende per eseguire un programma e in
quelli che la CPU trascorre in attesa di una risposta dal sistema di memoria
! Tempo di CPU = (Cicli di esecuzione CPU + Cicli di stallo) × Durata ciclo di clock
ipotesi semplificativa: i cicli di stallo della memoria sono dovuti principalmente alle miss della cache
!
Cicli di stallo = Cicli di stallo in lettura + Cicli di stallo in scrittura
!
Lettura
! Letture
Cicli di stallo in lettura = × Frequenza miss in lettura × Penalità miss in lettura
! Programma
Scrittura (write-through)
Scritture
Cicli di stallo in scrittura = × Frequenza miss in scrittura × Penalità miss in scrittura + Numero stalli buffer scrittura
Programma
Progettando opportunamente la dimensione del buffer si può trascurare lo stallo dovuto al buffer
Nell’organizzazione di molte cache write-through le penalità delle miss in lettura e scrittura coincidono
o equivalentemente:
Istruzioni Miss
Cicli di stallo = × × Penalità miss
Programma Istruzione
Di quanto sarebbe più veloce il processore se fosse dotato di una cache ideale (senza miss)?
! CPI stallo 5, 44 3, 44
= = 2, 72 Percentuale tempo esecuzione spesa in stalli = = 63%
CPI idela 2 5, 44
!
Cosa succederebbe se si rendesse il processore più veloce lasciando invariato il sistema di memoria? (CPI = 1, stessa frequenza di
clock)
3, 44
Percentuale tempo esecuzione spesa in stalli = = 77%
4, 44
un aumento del tempo di hit aumenterebbe il tempo di tutti gli accessi in memoria
Al fine di avere una metrica che tenga conto di tutti gli aspetti si definisce:
Esistono schemi differenti che possono ridurre il miss rate al costo di un aumento del tempo di hit
Fully associative
ricerca fatta in parallelo tramite un insieme di comparatori associati ad ogni entry della cache
costoso dal punto di vista hardware (fattibile solo nel caso di cache con pochi blocchi)
Set associative
Block # 0 1 2 3 4 5 6 7 Set # 0 1 2 3
1 1 1
Tag Tag Tag
2 2 2
Search Search Search
FIGURE 5.13 The location of a memory block whose address is 12 in a cache with eight blocks varies for direct-
mapped, set-associative, and fully associative placement. In direct-mapped placement, there is only one cache block where
memory block 12 can be found, and that block is given by (12 modulo 8) = 4. In a two-way set-associative cache, there would be four sets,
and memory block 12 must be in set (12 mod 4) = 0; the memory block could be in either element of the set. In a fully associative placement,
the memory block for block address 12 can appear in any of the eight cache blocks. Copyright © 2009 Elsevier, Inc. All rights reserved.
Calcolatori a.a. 13/14 Dario Bruneo
Piazzamento dei blocchi flessibile (cont.)
! 0
Two-way set associative
1
Set Tag Data Tag Data
2
Stabilita la dimensione della cache al crescere 0
3
dell’associatività
1
4
2
5
diminuisce il numero di set
3
6
aumenta il numero di blocchi nello stesso set
7
!
Four-way set associative
!
Set Tag Data Tag Data Tag Data Tag Data
Una cache direct mapped coincide con una cache set 0
1
associativa one-way
Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data
FIGURE 5.14 An eight-block cache configured as direct mapped, two-way set associative, four-way set ass
Calcolatori a.a. 13/14 and fullyDario
associative.
Bruneo The total size of the cache in blocks is equal to the number of sets times the associativity. Thus, for a
size, increasing the associativity decreases the number of sets while increasing the number of elements per set. With eight blocks, an
Ricerca dei blocchi
!
Tag Index Block offset
!
FIGURE 5.16 The three portions of an address in a set-associative or direct-mapped
cache. The index is used to select the set, then the tag is used to choose the block by comparison with the
Il campo index
blocks in seleziona
the selectedla set.
linea della
The cache
block offset is the address of the desired data within the block. Copyright ©
2009 Elsevier, Inc. All rights reserved.
Si deve confrontare il campo tag di tutti i blocchi appartenenti alla linea selezionata
aumenta il numero dei blocchi contenuti in una sola linea (diminuisce la dimensione del campo index e aumenta quella del campo tag)
Il costo di una cache set associativa consiste nei comparatori aggiuntivi e nel ritardo imposto dalla necessità di confrontare i campi
tag con l’indirizzo e di selezionare l’elemento desiderato tra quelli di linea (aumento tempo di hit).
1 parola/blocco
22 8
Tag
! Index
4-to-1 multiplexor
Hit Data
FIGURE 5.17 The implementation of a four-way set-associative cache requires four comparators and a
Calcolatori a.a. 13/14 Dario Bruneo
multiplexor. The comparators determine which element of the selected set (if any) matches the tag. The output of the comp
Come scegliere il blocco da sostituire
Quando si verifica una miss in una cache set associativa, si deve scegliere dove scrivere il blocco richiesto e
quindi quale blocco deve essere sostituito
il blocco sostituito è quello che è rimasto inutilizzato da più tempo (località temporale)
in una cache set associativa a due vie basterebbe un singolo bit per ogni linea che dica quale dei due blocchi è stato utilizzato per ultimo
Random
1) direct-mapped
2) set-associative a 2 vie
3) fully-associative
Si determino il numero di miss nei tre casi quando vengono richiesti i blocchi con la seguente sequenza di indirizz
0, 8, 0, 6, 8
Risposta:
1) 5
2) 4
3) 3
Benchmark SPEC2000
Il passaggio dalla mappatura diretta alla struttura set associativa a due vie migliora le prestazioni del 15%
! 1 10.3%
2 8.6%
!
4 8.3%
! 8 8.1%
! FIGURE 5.15 The data cache miss rates for an organization like the Intrinsity FastMATH
processor for SPEC2000 benchmarks with associativity varying from one-way to eight-
!
way. These results for 10 SPEC2000 programs are from Hennessy and Patterson [2003]. Copyright © 2009
Elsevier,inInc.
Si deve tenere All rights reserved.
considerazione anche l’aumento del tempo di hit
Per ridurre ulteriormente la differenza tra l’elevata frequenza di clock dei processori e il tempo di accesso relativamente lungo delle
DRAM, molti microprocessori supportano livelli addizionali di cache
Il secondo livello di cache (L2), ed a volte anche il terzo (L3), si trovano di solito sullo stesso chip del processore
Secondo la filosofia di progettazione gerarchica del sistema di memoria le cache L2 e L3 saranno più grandi della cache L1 e meno
veloci
La cache L1 tende a minimizzare la penalità di miss (ad es. mediante l’utilizzo di poche parole per blocco)
La cache L2 tende a minimizzare la frequenza di miss (ad es. mediante un grado elevato di associatività)
Nel caso di processori con esecuzione fuori ordine una miss della cache L1 viene normalmente nascosta ma difficilmente lo stesso
vale per una miss della cache L2
Di quanto sarà più veloce il processore se introduciamo una seconda cache L2 con
Risposta
2,6
0,5% / 2% = 25%
Radix Sort
1000
Instructions / item
800
ordinamento
600
400
Le prestazioni del Radix sort, all’aumentare del numero 200
Quicksort
2000
1
Quicksort
0
4 8 16 32 64 128 256 512 1024 2048 4096
Calcolatori a.a. 13/14 Dario Bruneo
c. Size (K items to sort)
Unità di controllo della cache
Si vuole progettare l’unità di controllo di una cache (semplificata) con le seguenti caratteristiche
direct mapped
indirizzi su 32 bit
Dalle specifiche di progetto si possono stabilire i campi Segnali tra la cache e la memoria principale
di un indirizzo
segnale di lettura o scrittura su un bit
DDR SDRAM
segnale di validità su un bit (segnala se si sta eseguendo
Processor
Cache
un’operazione sulla cache)
1-bit Valid 1-bit Valid
&
32-bit address Cache 32-bit address
indirizzi su 32 bit
32-bit data Controller 128-bit data
dati trasferiti cache/processore e processore/cache su 32 bit
32-bit data 128-bit data
segnale di ready su 1 bit (segnala quando la cache ha terminato 1-bit Ready 1-bit Ready
l’attività)
Compare Tag
dy
ea
R
si trasferiscono i 128 bit alla memoria
y
or
em
M
Allocate
Write-Back
si legge dalla memoria
Allocate Memory Ready
Write Old
Read new block Block to
per completare le operazioni si devono fare passi molto simili a
from Memory Memory
quelli fatti nello stato Compare Tag quindi si può evitare di
generare un altro stato Memory Memory
not not
Ready Ready
FIGURE 5.34 Four states of the simple controller. Copyright © 2009 Elsevier, Inc. All rights reserv
Calcolatori a.a. 13/14 Dario Bruneo
Parallelismo e coerenza della cache
Problema che nasce quando più processori (o core), con cache separate, condividono lo stesso spazio di indirizzamento fisico
Informalmente, si può definire un sistema di memoria coerente se ogni lettura di un dato restituisce il valore scritto più
recentemente
Memory
! Time Cache contents for Cache contents contents for
step Event CPU A for CPU B location X
0 0
! 1 CPU A reads X 0 0
2 CPU B reads X 0 0 0
Cache write-through
! 3 CPU A stores 1 into X 1 0 1
FIGURE 5.35 The cache coherence problem for a single memory location (X), read and
written by two processors (A and B). We initially assume that neither cache contains the variable and
Più formalmente sithat
evidenziano
X has the valuedue0. aspetti del comportamento
We also assume di una write-back
a write-through cache; sistema di memoria
cache adds some additional but
similar complications. After the value of X has been written by A, A’s cache and the memory both contain the
new value, but B’s cache does not, and if B reads the value of X, it will receive 0! Copyright © 2009 Elsevier,
coerenza
Inc. All rights reserved.
consistenza
Se un processore P legge una locazione X della memoria (dopo che P stesso ha scritto nella locazione X senza che altri processori
abbiano scritto in X tra la scrittura e la lettura di P) e il valore ottenuto è quello che era scritto da P
Un processore legge una locazione X dalla memoria dopo che un altro processore ha scritto in quella locazione X e il valore letto
corrisponde al valore scritto dall’altro processore (se la lettura e la scrittura sono sufficientemente distanti nel tempo e non
intervengono altre scritture nella locazione X)
Il modello di consistenza della memoria si occupa di definire esattamente quando un valore scritto può
essere visto e letto correttamente
non si può pensare che il dato scritto in una locazione X da un processore sia immediatamente disponibile per la lettura
una scrittura non può essere considerata completa (consentendo quindi la scrittura successiva) finché tutti i processori non vedono
il suo effetto
Migrazione: un dato può essere trasferito in una cache locale e utilizzato in quella cache in modo trasparente
riduce sia la latenza di accesso ai dati condivisi sia la larghezza di banda richiesta dalla memoria condivisa
Replicazione: quando un dato condiviso viene letto simultaneamente da più processori, le cache fanno una copia del dato nella cache
locale
riduce sia la latenza di accesso sia la competizione nella lettura dei dati condivisi
Le cache sono tutte accessibili mediante un canale broadcast (ad esempio il bus)
I controllori delle cache controllano (snoop) tale canale per capire se i dati in loro possesso sono aggiornati o no
write broadcast: quando un dato viene scritto tutte le copie delle cache vengono aggiornate (utilizzo eccessivo della banda, poco utilizzato)
write invalidate: quando un dato viene modificato in una cache, lo stesso dato, se presente, viene invalidato dalle altre cache
Al normale traffico della memoria sul bus si aggiunge il traffico dovuto al protocollo di coerenza
Contents of
Contents of Contents of memory
Processor activity Bus activity CPU A’s cache CPU B’s cache location X
0
CPU A reads X Cache miss for X 0 0
CPU B reads X Cache miss for X 0 0 0
CPU A writes a 1 to X Invalidation for X 1 0
Esempio: write invalidate
CPU B reads X Cache miss for X 1 1 1
Per invalidare un dato, il processore acquisisce il bus e manda in broadcast l’indirizzo da invalidare
Se due processori tentano di scrivere lo stesso blocco contemporaneamente l’operazione viene serializzata
una scrittura ad un dato condiviso non può essere completata fino a quando non si acquisisce il bus
write-through
write-back
si può utilizzare lo stesso protocollo di snooping (agendo sul dirty bit) per far si che il dato venga scambiato tra le cache, abortendo l’accesso in memoria
Nel caso di scrittura è necessario sapere se il blocco è condiviso o no (al fine di evitare di mandare il messaggio di broadcast)
ogni volta che viene mandata un’invalidazione il bit di shared viene posto a 0
Il controllore risponde alle richieste dal processore e dal bus cambiando lo stato del blocco della cache
Logicamente possiamo pensare che ci sia un controllore associato ad ogni blocco della cache
Protocolli comuni
State of
addressed Type of
Request Source cache block cache action Function and explanation
Read hit processor shared or normal hit Read data in cache.
modified
Read miss processor invalid normal miss Place read miss on bus.
Read miss processor shared replacement Address conflict miss: place read miss on bus.
Read miss processor modified replacement Address conflict miss: write-back block, then place read miss
on bus.
Write hit processor modified normal hit Write data in cache.
Write hit processor shared coherence Place invalidate on bus. These operations are often called
upgrade or ownership misses, since they do not fetch the data
but only change the state.
Write miss processor invalid normal miss Place write miss on bus.
Write miss processor shared replacement Address conflict miss: place write miss on bus.
Write miss processor modified replacement Address conflict miss: write-back block, then place write miss
on bus.
Read miss bus shared no action Allow memory to service read miss.
Read miss bus modified coherence Attempt to share data: place cache block on bus and change
state to shared.
Invalidate bus shared coherence Attempt to write shared block; invalidate the block.
Write miss bus shared coherence Attempt to write block that is shared; invalidate the cache
block.
Write miss bus modified coherence Attempt to write block that is exclusive elsewhere: write-back
the cache block and make its state invalid.
FIGURE 5.9.9 The cache coherence mechanism receives requests from both the processor and the bus and responds to
Calcolatori a.a. 13/14 these based on the type of request, whether it hits or misses in the cache, and the state of the cache block specified in
Dario Bruneo
the request. The fourth column describes the type of cache action as normal hit or miss (the same as a uniprocessor cache would see), replacement
Protocolli Snooping
(cont.)
5.9-14 5.9 Advanced Material: Implementing Cache Controllers
FSM (gli stati sono stati duplicati per una maggiore leggibilità)
Invalidate for
CPU read Shared
Invalid this block Shared
(read only) Invalid
Place read miss on bus (read only)
Read miss
CPU
k
oc
for this block
bl
read
e
CPU write ck
rit
miss
on bu -ba
w
PU
rt
Write-back block;
on rite
ss o
C Place read
abort memory
miss on bus
bu s
ce ab
Place write
miss on bus
ac k;
s
s
access
s
bu
y oc
is mis
s
is
or bl
lid ss
on
ac e re d m
ite
em ck
va mi
s
e
r
a
m ba
at
ad
w Uw
ac re
e-
Pl U
rit
e
ac CP
P
Write miss
rit
C
W
in
Read miss
Pl
Pl
Una directory mantiene lo stato di ogni blocco che viene inserito in una cache
L’implementazione più semplice prevede l’associazione di una entry nella directory per ogni blocco di memoria presente in una
cache
Con meno di 200 processori tale approccio risulta gestibile (mantenendo la dimensione dei blocchi ragionevolmente grande)
La memoria principale può agire come una “cache” della memoria di massa
consentire una condivisione efficiente e sicura della memoria da parte di più programmi
rimuovere l’onere dai programmatori di dover gestire una memoria principale piccola e limitata
anche per quanto riguarda l’esecuzione “contemporanea” di più programmi si ricorre al principio di località
protezione
precedentemente, era compito del programmatore suddividere il programma in porzioni tra loro indipendenti (overlay)
blocco ➜ pagina
Virtual addresses Physical addresses
miss ➜ page fault
Address translation
Funzionamento:
FIGURE 5.19 In virtual memory, blocks of memory (called pages) are mapped
set of addresses (called virtual addresses) to another set (called physical ad
The processor generates virtual addresses while the memory is accessed using physical addresse
virtual memory and the physical memory are broken into pages, so that a virtual page is mapped t
page. Of course, it is also possible for a virtual page to be absent from main memory and not be
Calcolatori a.a. 13/14 DarioaBruneo
physical address; in that case, the page resides on disk. Physical pages can be shared by having
Mappatura dell’indirizzo
page offset
29 28 27 15 14 13 12 11 10 9 8 3210
non è necessario che il numero di pagine indirizzabili
Physical page number Page offset
attraverso l’indirizzo virtuale corrisponda al numero di
pagine indirizzabili attraverso l’indirizzo fisico
Physical address
FIGURE 5.20 Mapping from a virtual to a physical address. The page size is 212 = 4 KB
potrebbe essere sia minore che maggiore
number of physical pages allowed in memory is 218, since the physical page number has 18 bits in it.
! main memory can have at most 1 GB, while the virtual address space is 4 GB. Copyright © 2009 Elsevie
All rights reserved.
Nei sistemi di memoria virtuale, molte scelte progettuali sono influenzate dall’elevato costo di un page
fault (milioni di cicli di clock) dovuto principalmente alla latenza della prima parola
tecniche associative
overhead trascurabile
numero di segmento
offset
Supporto di tecniche più potenti per la protezione e la condivisione di uno spazio di indirizzamento comune
Al fine di ridurre i page fault si utilizzano approcci flessibili per la scelta della posizione delle pagine
schema fully-associative
si costruisce una tabella (page table) che contiene la traduzione degli indirizzi virtuali in indirizzi fisici
ogni elemento contiene il numero della pagina fisica corrispondente (ammesso che essa sia caricata in memoria)
ogni architettura fornisce un registro hardware (page table register) che indica l’indirizzo iniziale della tabella
Esempio
Page table
Physical address
Calcolatori a.a. 13/14 Dario Bruneo
FIGURE 5.21 The page table is indexed with the virtual page number to obtain the corresponding portion
Tabella delle pagine (cont.)
con un indirizzo virtuale di 32 bit, pagine di 4KB ed elementi della tabella delle pagine di 4B, la dimensione è 4MB
se il numero di pagine virtuali cresce oltre il valore del registro limite occorre aggiungere nuovi elementi
la tabella delle pagine avrà dimensione pari al numero delle pagine fisiche della memoria principale
inizialmente si cerca la pagina nella tabella dei segmenti attraverso i bit più significativi
se l’indirizzo del segmento è valido vengono utilizzati i bit alla destra dei bit di segmento per individuare l’elemento della tabella delle pagine puntata
dall’elemento della tabella dei segmenti
al fine di minimizzare il numero degli errori si deve scegliere una pagina che con molta probabilità non si userà nel breve periodo
algoritmo LRU
l’hardware fornisce un bit (bit di utilizzo o riferimento) che viene impostato a 1 ogni volta che si accede ad una pagina
analizzando questi bit il sistema operativo determina quali pagine siano state utilizzate in un certo periodo
la scelta della pagina da sostituire avviene tra quelle con bit pari a 0 (ad es. in maniera casuale)
Ogni accesso alla memoria da parte di un programma richiede almeno il doppio del tempo
Anche in questo caso si ricorre al principio di località degli accessi per migliorare le prestazioni
Molti processori moderni contengono una cache speciale che tiene traccia delle traduzioni (degli indirizzi delle pagine) utilizzate più
di recente
dimensione del blocco: 1-2 elementi della tabella delle pagine (tipicamente 4-8 byte ciascuno)
Dirty: 1 bit
Cache
altri bit per la gestione della pagina virtuale
Cache hit
non necessaria presenza multiplexer
32
Data
Calcolatori a.a. 13/14 Dario Bruneo
FIGURE 5.24 The TLB and cache implement the process of going from a virtual address to a data item in the Intrinsity
Il TLB del processore Intrinisty FastMATH (cont.)
Gestione di una lettura (o scrittura) di tipo write-through nel TLB e nella cache
Virtual address
TLB access
No Yes
Write?
Write protection
Try to write data
No Yes exception
Cache miss stall to cache
Cache hit?
while read block
Deliver data
to the CPU
Cache miss stall No Yes
Cache hit?
while read block
Il modello gerarchico impone che un dato non possa trovarsi nella cache a meno che non sia presente anche nella memoria virtuale
scaricamento delle pagine contenute in cache quando tali pagine sono spostate sul disco
Nel migliore dei casi un indirizzo viene tradotto dal TLB e causa una cache hit
Page
TLB table Cache Possible? If so, under what circumstance?
Hit Hit Miss Possible, although the page table is never really checked if TLB hits.
Miss Hit Hit TLB misses, but entry found in page table; after retry, data is found in cache.
Miss Hit Miss TLB misses, but entry found in page table; after retry, data misses in cache.
Miss Miss Miss TLB misses and is followed by a page fault; after retry, data must miss in cache.
Hit Miss Miss Impossible: cannot have a translation in TLB if page is not present in memory.
Hit Miss Hit Impossible: cannot have a translation in TLB if page is not present in memory.
Miss Miss Hit Impossible: data cannot be allowed in cache if the page is not in memory.
FIGURE 5.26 The possible combinations of events in the TLB, virtual memory system, and
Calcolatori a.a. 13/14 Dario Bruneo
cache. Three of these combinations are impossible, and one is possible (TLB hit, virtual memory hit, cache
Indicizzazione della Cache
Il processore Intrinsity FastMATH indicizza la cache fisicamente con tag fisici (physically addressed cache)
Una alternativa è quella di indicizzare la cache virtualmente con tag virtuali (virtually addressed cache)
problema aliasing
Una via di mezzo consiste nell’indicizzare la cache virtualmente usando però tag fisici
si usa come indice il campo di offset della pagina (che in realtà è un campo fisico perché non viene tradotto)
limitazioni nelle dimensioni della cache e/o nel grado di associatività e relazione stretta con dimensione delle pagine
La condivisione della memoria da parte di più processi rende necessario l’utilizzo di meccanismi di protezione. Strumenti di supporto
hardware sono:
bit di accesso
accesso solo in lettura (da parte degli utenti) ad alcuni elementi di stato del processore (bit modalità, puntatore a tabella delle pagine, TLB)
Quando il sistema operativo effettua un context switch (ad es. dal processo P1 al processo P2) si deve assicurare che il processo P2
non possa accedere ai dati di P1
se non è presente il TLB basta modificare il registro della tabella delle pagine
per evitare un degrado delle prestazioni (in caso di context switch frequenti) si estende lo spazio di indirizzamento virtuale includendo un identificatore
di processo
nel processore Intrinsity FastMATH si usa il campo ASID (Address Space Identifier) di 8 bit (contenuto in un apposito registro aggiornato dal sistema
operativo) che viene concatenato con il campo tag del TLB
viene caricato dalla memoria l’elemento della tabella delle pagine e si esegue una seconda volta l’istruzione
restartable instruction
si devono evitare le scritture negli elementi di stato (memoria o registri) agendo sui segnali di controllo
FIGURE 5.27 MIPS control registers. These are considered to be in coprocessor 0, and hence are
read using m f c 0 and written using m t c 0 . Copyright © 2009 Elsevier, Inc. All rights reserved.
Registri presenti nel coprocessore 0 letti e scritti mediante mfc0 e mtc0
In caso di TLB miss l’hardware del MIPS salva il numero della pagina richiesta nel registro BadVAddr e genera un’eccezione
Il controllo viene trasferito all’indirizzo 0x8000 0000 dove si trova l’handler delle miss del TLB (senza dover controllare il registro
Cause)
Per indicizzare la tabella delle pagine l’hardware del MIPS concatena l’indirizzo dell’inizio della tabella delle pagine e i 18 bit
dell’indirizzo virtuale nel registro Context
L’istruzione tlbwr copia il contenuto del registro EntryLo nell’elemento del TLB puntato dal registro Random
TLBmiss:!
!
mfc0! $k1, Context!
lw! $k1,0($k1)!
! mtc0! $k1,EntryLo!
tlbwr!
eret
!
Una miss del TLB richiede circa una decina di cicli di clock
La procedura di gestione delle miss del TLB non controlla il bit di validità (si rende più veloce il caso più frequente)
Quando viene rilanciata l’istruzione, in caso di bit di validità pari a 0 si genera un’eccezione differente (page fault)
Il controllo viene trasferito all’indirizzo 0x8000 0180 scrivendo la causa nel registro Cause
esaminare l’elemento della tabella delle pagine individuato tramite l’indirizzo virtuale e identificare la posizione su disco della pagina desiderata
scegliere la pagina fisica da sostituire ed eventualmente salvarla (controllo del dirty bit)
avviare la lettura dal disco (passo che richiede milioni di cicli di clock)
Poichè il page fault prevede tempi di gestione molto lunghi, il sistema operativo si predispone per un context switch salva tutto lo
stato del processo attivo, composta da:
il registro EPC
il registro Cause
Restoring state
Re s t o r e mo s t mo v e $a t , $sp # t emp o r a r y v a l u e o f $ s p
GPR , h i , l o lw $ r a , XCT _RA ( $ a t ) # r e s t o r e $ r a f r om s t a c k
... # r es t o r e $ t 0 , . . . . , $a1
lw $ a 0 , XCT _A0 ( $ k 1 ) # r e s t o r e $ a 0 f r om s t a c k
Restore status lw $v0 , XCT _SR ( $ a t ) # l o a d o l d $ s r f r om s t a c k
register li $v1 , MASK2 # ma s k t o d i s a b l e e x c e p t i o n s
and $v0 , $v0 , $v1 # $ v 0 = $ s r & MASK2 , d i s a b l e e x c e p t i o n s
mt c0 $v0 , $s r # se t s t a t us r eg i s t e r
Exception return
Re s t o r e $ s p lw $ s p , XCT _SP ( $ a t ) # r e s t o r e $ s p f r om s t a c k
and r e s t o f lw $ v 0 , XCT _V0 ( $ a t ) # r e s t o r e $ v 0 f r om s t a c k
GPR u s e d a s
t empo r a r y lw $ v 1 , XCT _V1 ( $ a t ) # r e s t o r e $ v 1 f r om s t a c k
r eg i s t e r s lw $ k 1 , XCT _EPC ( $ a t ) # c o p y o l d $ e p c f r om s t a c k
lw $ a t , XCT _AT ( $ a t ) # r e s t o r e $ a t f r om s t a c k
Re s t o r e ERC mt c0 $k1 , $epc # r es t o r e $epc
and r e t u r n eret $ra # r e t u r n t o i n t e r r up t ed i ns t r uc t i on
FIGURE 5.28 MIPS code to save and restore state on an exception. Copyright © 2009 Elsevier, Inc. All rights reserved.
Calcolatori a.a. 13/14 Dario Bruneo
Schema comune per le gerarchie di memoria
Parametri tipici
Compulsory miss
Capacity miss
Conflict miss
10%
! 9%
! 3%
! 2%
Capacity
! 1%
0%
4 8 16 32 64 128 256 512 1024
Cache size (KB)
FIGURE 5.31 The miss rate can be broken into three sources of misses. This graph shows
the total miss rate and its components for a range of cache sizes. This data is for the SPEC2000 integer and
floating-point benchmarks and is from the same source as the data in Figure 5.30. The compulsory miss
Calcolatori a.a. 13/14 Dario Bruneo
component is 0.006% and cannot be seen in this graph. The next component is the capacity miss rate, which
Schema comune per le gerarchie di memoria (cont.)
Ogni modifica che può potenzialmente migliorare la frequenza di miss può anche influenzare in maniera negativa le prestazioni
globali
Possible negative
Design change Effect on miss rate performance effect
Increase cache size Decreases capacity misses May increase access time
Increase associativity Decreases miss rate due to conflict May increase access time
misses
Increase block size Decreases miss rate for a wide range of Increases miss penalty. Very large
block sizes due to spatial locality block could increase miss rate
FIGURE 5.32 Memory hierarchy design challenges. Copyright © 2009 Elsevier, Inc. All rights
reserved.
FIGURE 5.38 Address translation and TLB hardware for the Intel Nehalem and AMD
Opteron X4. The word size sets the maximum size of the virtual address, but a processor need not use all
bits. Both processors provide support for large pages, which are used for things like the operating system
or mapping a frame buffer. The large-page scheme avoids using a large number of entries to map a single
object that is always present. Nehalem supports two hardware-supported threads per core (see Section 7.5
in Chapter 7). Copyright © 2009 Elsevier, Inc. All rights reserved.
Calcolatori a.a. 13/14 Dario Bruneo
AMD Barcelona Vs. Intel Nehalem (cont.)
FIGURE 5.39 First-level, second-level, and third-level caches in the Intel Nehalem and
Calcolatori a.a. 13/14 AMD Opteron X4 2356 (Barcelona).
Dario BruneoCopyright © 2009 Elsevier, Inc. All rights reserved.