Sei sulla pagina 1di 81

Università degli Studi di Messina

Dipartimento di Ingegneria Elettronica, Chimica e Ingegneria Industriale



!
Corso di Laurea

Ingegneria Elettronica e Informatica

Anno Accademico 2013/2014

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.

Eventuali errori o segnalazioni possono essere inviati all’indirizzo dbruneo@unime.it


Alcune figure sono tratte da:


Patterson, Hennessy “Struttura e progetto dei Calcolatori” 3a edizione Zanichelli

Calcolatori a.a. 13/14 Dario Bruneo


Progettare la memoria di un calcolatore

Vi sono tre aspetti principali nella progettazione della memoria di un calcolatore


Dimensione

Velocità

Costo

Con una sola tecnologia non è possibile soddisfare tutte e tre i criteri

Principio di località

Utilizzo di differenti tecnologie


Approccio gerarchico

Calcolatori a.a. 13/14 Dario Bruneo


Principio di località

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

cicli (località temporale)


Calcolatori a.a. 13/14 Dario Bruneo


Tecnologie

Utilizzo di differenti tecnologie


differenze in termini di dimensioni/velocità/costo

Tecnologia Tempo di accesso tipico $ per GB (2008)

SRAM 0,5 - 2,5 ns $2000-$5000

DRAM 50 - 70 ns $20-$75

Dischi magnetici 5.000.000 - 20.000.000 ns $0,2-$2

Memorie flash 5.000 - 20.000 ns $4-$10

Calcolatori a.a. 13/14 Dario Bruneo


Gerarchia di memoria

Il principio di località viene sfruttato strutturando la memoria di un calcolatore in maniera gerarchica


la memoria più veloce viene posta più vicina al processore


Current
Speed Processor Size Cost ($/bit) technology

Fastest Memory Smallest Highest SRAM

Memory DRAM

Slowest Memory Biggest Lowest Magnetic disk

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

unità minima di informazione scambiabile


Level n

! Size of the memory at each level

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

Penalità di miss Data is transferred

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à

Il termine Cache deriva da Caché, che in francese vuol dire nascosto


la memoria cache ed il suo funzionamento sono, infatti, generalmente trasparenti al programmatore


La memoria (istruzioni e dati) vista nel progetto della CPU MIPS può essere considerata come una
memoria cache

Calcolatori a.a. 13/14 Dario Bruneo


Memoria cache (cont.)

Principio di funzionamento di una semplice


memoria cache

Blocchi composti da una sola parola


Cosa succede quando un elemento (Xn) viene richiesto



X4 X4

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

La parola contenente Xn viene prelevata dal livello di X3 X3

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.

Calcolatori a.a. 13/14 Dario Bruneo


Memoria cache (cont.)

Sorgono le seguenti problematiche


come si fa a sapere se un dato è presente nella cache?


ammesso che esso sia contenuto nella cache come si fa a trovarlo?


quanto costano le operazioni di ricerca?


Esistono differenti tecniche in grado di rispondere ai problemi succitati con ottimizzazioni differenti

direct mapped cache


fully associative cache


set associative cache

Calcolatori a.a. 13/14 Dario Bruneo


Direct mapped cache

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

utilizzo di tag contenenti la parte superiore dell’indirizzo


Bit di validità

00001 00101 01001 01101 10001 10101 11001 11101


Calcolatori a.a. 13/14 Dario Bruneo Memory
Esempio

Si consideri la seguente Index V Tag Data Index V Tag Data


000 N 000 N
sequenza di richieste ad una 001 N 001 N
010 N 010 N

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)

Index V Tag Data Index V Tag Data


10000 000 Miss
000 Y 10two Memory (10000two) 000 Y 10two Memory (10000two)
001 N 001 N
00011 011 Miss Memory (11010two)
010 Y 11two 010 Y 10two Memory (10010two)
011 Y 00two Memory (00011two) 011 Y 00two Memory (00011two)
10000 000 Hit 100 N 100 N
101 N 101 N
10010 010 Miss 110 Y 10two Memory (10110two) 110 Y 10two Memory (10110two)
111 N 111 N
10000 000 Hit e. After handling a miss of address (00011two) f. After handling a miss of address (10010two)

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

essendo l’indirizzamento di tipo byte-addressing


Address (showing bit positions)
orientato alla parola i due bit meno significativi non
n = 10, m = 0 31 30 13 12 11 2 10
vengono utilizzati per il calcolo dell’indirizzo del blocco Byte
offset
della cache

Hit 20 10
Tag
In generale se si considera che ognuno dei (2n) blocchi di Index Data

cache possa contenere 2m parole



Index Valid Tag Data
0
la dimensione del campo tag è 32 - (n + m + 2) bit

1
La dimensione totale effettiva (in bit) della cache è
2

2n x (dimensione blocco + dimensione tag + bit_validità) =


2n x (2m x 32 + (32 - n - m - 2) + 1) =
1021
1022
2n x (2m x 32 + 31 - n - m)

1023
! 20 32

Per convenzione nel calcolo della dimensione della cache


=
si considerano solamente la dimensione dei dati
Dimensione = 4KB

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 quale blocco corrisponde l’indirizzo 1200 (espresso in byte)


Indirizzo del dato in byte


L’indirizzo del blocco è dato da:

Byte per blocco
!
! Indirizzo del dato in byte $
Le parole appartenenti al blocco individuato hanno indirizzi che vanno da:
# & × Byte per blocco
" Byte per blocco %
!

a:

! Indirizzo del dato in byte $
# & × Byte per blocco + (Byte per blocco -1)
" Byte per blocco %
!

Nel caso in esame il blocco corrispondente all’indirizzo 1200 è:


!1200 $
#" &% mod 64 = 75mod 64 = 11
16

Calcolatori a.a. 13/14 Dario Bruneo


Blocchi composti da più parole (cont.)

Blocchi di dimensioni maggiori sfruttano


maggiormente la località spaziale e diminuiscono
la frequenza di miss.
10%
4K

Blocchi troppo grandi però riducono il numero di


blocchi presenti nella cache

Miss
5%
rate
Inoltre, con l’aumentare delle dimensioni dei blocchi
cresce anche il costo di una miss
16K

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

tempo di trasferimento dell’intero blocco


FIGURE 5.8 Miss rate versus block size. Note that the miss rate actually goes up if the block size is
too large relative to the cache size. Each line represents a cache of different size. (This figure is independent
Possibili contromisure
of associativity, discussed soon.) Unfortunately, SPEC2000 traces would take too long if block size were
included, so this data is based on SPEC92. Copyright © 2009 Elsevier, Inc. All rights reserved.

early restart (soprattutto per la Instruction Memory)


requested word first

Calcolatori a.a. 13/14 Dario Bruneo


Gestione delle cache miss

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)

In caso di cache hit l’esecuzione procede normalmente


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)

Esempio: cache istruzioni


Inviare l’indirizzo dell’istruzione (PC - 4) alla memoria


Comandare la memoria con un’operazione di lettura


Scrivere la parola proveniente dalla memoria nella cache, aggiornare il campo tag ed il bit di validità

Far ripartire l’esecuzione dell’istruzione dalla fase di fetch

Calcolatori a.a. 13/14 Dario Bruneo


Gestione della scrittura

Come mantenere la coerenza tra la cache e la memoria?


write-through

ogni volta che scrivo un dato nella cache lo aggiorno anche nella memoria

poco efficiente

utilizzo di un buffer di scrittura (frequenza di scrittura non elevata)


write-back

le modifiche vengono riportate solo nel blocco della cache


la memoria viene aggiornata solo quando il blocco viene rimpiazzato


utilizzo di dirty bit


implementazione più complessa


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)

oppure, utilizzo di un buffer

Calcolatori a.a. 13/14 Dario Bruneo


Cache miss in scrittura

Politiche di gestione delle cache miss in scrittura


possono essere cambiate in base alla pagina di memoria desiderata


write allocate

il blocco viene allocato dalla memoria e la parte appropriata viene sovrascritta


normalmente utilizzato con la tecnica write-back


no write allocate

le modifiche vengono effettuate solo nella memoria senza allocare il blocco nella cache

utile nella fase di inizializzazione di una serie di dati


normalmente utilizzato con la tecnica write-through

Calcolatori a.a. 13/14 Dario Bruneo


La cache del processore Intrinsity FastMATH

microprocessore embedded con architettura MIPS


ciascuna cache è di 16KB (16 parole/blocco)

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

Calcolatori a.a. 13/14 Dario Bruneo


FIGURE 5.9 The 16 KB caches in the Intrinsity FastMATH each contain 256 blocks with 16 words per block. The tag field
La cache del processore Intrinsity FastMATH (cont.)

Prestazioni

Benchmark SPEC2000 INT


!
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

Si passerebbe da 3,24 % a 3,18%


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.

Non si può utilizzare solo il miss rate come indice di prestazioni

Calcolatori a.a. 13/14 Dario Bruneo


Progettazione del sistema di memoria

Le cache miss devono essere risolte dalla memoria principale (DRAM)


latenza prima parola


larghezza di banda

Il processore è connesso alla memoria tramite un bus


frequenza di clock del bus di memoria normalmente molto inferiore a quella del processore

Esempio:

1 ciclo di clock del bus per inviare l’indirizzo alla memoria


15 cicli di clock del bus per ogni accesso alla DRAM


1 ciclo di clock del bus per inviare alla cache una parola

Calcolatori a.a. 13/14 Dario Bruneo


Progettazione del sistema di memoria (cont.)

Si consideri un sistema di memoria con larghezza pari a una parola



Processor P

!
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.)

Si aumenti la larghezza di banda della cache



Processor Processor P

2 parole per blocco



Multiplexor M
Penalità di miss
Cache Cache
Cache
1 + 2x(15 + 1) (cicli di clock)

Byte trasferiti per ciclo di clock


Bus Bus

8/33 = 0,242

Memory M
!

Aumentando ancora la dimensione del blocco (ad es. a 4 b. Widec


b. Wider memory organization
parole) si aumenta il numero di byte per ciclo

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.)

Si aumenti anche la larghezza di banda della


memoria

Processor Processor

2 parole per blocco


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

Calcolatori a.a. 13/14 Dario Bruneo


Progettazione del sistema di memoria (cont.)

Utilizzo di memoria DRAM interlacciata


(interleaved)

Processor Processor Processor
Processor Processor Processor Processor
Processor
2 parole per blocco

l’indirizzo viene mandato in parallelo ai 2Multiplexor


banchi
Multiplexor Multiplexor
Cache Cache Cache Cache Cache
! Cache Cache Cache

Penalità di Bus
miss
Bus Bus Bus Bus Bus
Bus Bus

1 + 15 + 2x1 (cicli di clock)



Memory Memory Memory Memory Memory
Memory
Memory Memory Memory
Byte trasferiti per ciclo di clock
bank 0 bank 01 bank 12 bank 23 bank 3bank 0

8/18 = 0,44 b. Wider memory organization


b. Wider memory organization c.b.Interleaved
c. Interleaved Wider memory
memory organization
organization
memory organization c. Interleaved

Memory Memory Memory

Ottengo buone prestazioni senza dover aumentare la larghezza del bus

Calcolatori a.a. 13/14 Dario Bruneo


Misurare le prestazioni di una cache

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

Calcolatori a.a. 13/14 Dario Bruneo


Misurare le prestazioni di una cache (cont.)

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

! Accessi alla memoria


Cicli di stallo = × Frequenza miss × Penalità miss
Programma
!

o equivalentemente:

Istruzioni Miss
Cicli di stallo = × × Penalità miss
Programma Istruzione

Calcolatori a.a. 13/14 Dario Bruneo


Esempio

Dato il seguente sistema


miss rate (cache istruzioni) = 2%


miss rate (cache dati) = 4%


CPI = 2 (senza stalli)


penalità di miss = 100 cicli


percentuale di load/store sul totale delle istruzioni = 36%


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

Calcolatori a.a. 13/14 Dario Bruneo


Average Memory Access Time

Il tempo di hit può aumentare a seconda delle scelte progettuali


Ad es. una cache più grande comporterà un tempo di hit maggiore


Influenza del tempo di hit sulle performance


un aumento del tempo di hit aumenterebbe il tempo di tutti gli accessi in memoria

aumento numero stadi pipeline (o aumento periodo di clock)


Al fine di avere una metrica che tenga conto di tutti gli aspetti si definisce:

AMAT: Average Memory Access Time

AMAT = Tempo di hit + Frequenza di miss x Penalità di miss

Calcolatori a.a. 13/14 Dario Bruneo


Piazzamento dei blocchi flessibile

Lo schema di piazzamento utilizzato finora (direct mapped cache) è molto semplice


ogni blocco può avere solo una posizione nella cache


Esistono schemi differenti che possono ridurre il miss rate al costo di un aumento del tempo di hit

Fully associative

i blocchi possono essere messi in qualsiasi posizione


necessaria una ricerca


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

Via di mezzo tra gli approcci precedenti


un blocco può essere messo solo in un insieme di posizioni


n-way set associative (ogni blocco può essere in n posizioni)


(indirizzo del blocco) modulo (numero dei set della cache)

Calcolatori a.a. 13/14 Dario Bruneo


Piazzamento dei blocchi flessibile (cont.)

Posizionamento del blocco di indirizzo 12 in una cache a otto blocchi

Direct mapped Set associative Fully associative

Block # 0 1 2 3 4 5 6 7 Set # 0 1 2 3

Data Data Data

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.)

La dimensione complessiva della cache in termini di


blocchi è uguale al numero di set per il grado di One-way set associative
associatività
(direct mapped)
Block Tag Data

! 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

Eight-way set associative (fully associative)

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

Come si trova un blocco all’interno di una cache set associativa?


!
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

Il contenuto dei campi tag viene confrontato in parallelo


Mantenendo costante la dimensione della cache, al crescere del grado di associatività:


aumenta il numero dei blocchi contenuti in una sola linea (diminuisce la dimensione del campo index e aumenta quella del campo tag)

aumenta il numero di confronti che devono essere effettuati simultaneamente

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).

Calcolatori a.a. 13/14 Dario Bruneo


Cache set-associative

cache set-associative a 4 vie



Address
4KB
31 30 12 11 10 9 8 3210

1 parola/blocco
22 8
Tag
! Index

Index V Tag Data V Tag Data V Tag Data V Tag Data


Sono necessari
0
1
2
4 comparatori

253
un multiplexer a 4 vie
254
255
il multiplexer è pilotato da un 22 32
segnale fornito in uscita da un
decoder

= = = =
si potrebbero utilizzare
componenti tri-state con segnale
di abilitazione dell’uscita

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

Least Recently Used (LRU)

il blocco sostituito è quello che è rimasto inutilizzato da più tempo (località temporale)

bisogna tenere traccia della frequenza di impiego


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

all’aumentare del grado di associatività l’implementazione dello schema LRU si complica


Random

il blocco da sostituire viene scelto in maniera casuale


utilizzo di supporti hardware

Calcolatori a.a. 13/14 Dario Bruneo


Esempio

Si considerino tre cache di piccole dimensioni (4 blocchi di una parola)


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

Calcolatori a.a. 13/14 Dario Bruneo


Prestazioni di una cache set-associative

Riduzione della frequenza di miss


Processore Intrinsity FASTMATH


Benchmark SPEC2000

Il passaggio dalla mappatura diretta alla struttura set associativa a due vie migliora le prestazioni del 15%

Aumenti del grado di associatività producono miglioramenti meno evidenti


! Associativity Data miss rate

! 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

Calcolatori a.a. 13/14 Dario Bruneo


Cache multilivello

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

Le scelte progettuali possono variare a seconda del livello in esame


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

Calcolatori a.a. 13/14 Dario Bruneo


Cache multilivello (cont.)

Si supponga di disporre di un sistema con


clock del processore a 4 GHz


CPI di base (senza miss) pari a 1.0


tempo di accesso in memoria 100ns


miss rate della cache L1 pari al 2%


Di quanto sarà più veloce il processore se introduciamo una seconda cache L2 con

tempo di accesso pari a 5ns


dimensione tale da ottenere una frequenza di miss 0,5%


Risposta

2,6

Qualè la frequenza di miss locale della cache L2?


0,5% / 2% = 25%

Calcolatori a.a. 13/14 Dario Bruneo


Conoscere la gerarchia di memoria
1200

Radix Sort
1000

Confronto tra prestazioni di due differenti algoritmi di

Instructions / item
800

ordinamento
600

400
Le prestazioni del Radix sort, all’aumentare del numero 200
Quicksort

di elementi, hanno un degrado delle prestazioni non 0


4 8 16 32 64 128 256 512 1024 2048 4096
imputabile al numero di istruzioni da eseguire
a. Size (K items to sort)

2000

Problema legato alle cache miss


Radix Sort
1600

Clock cycles / item


1200
!
800

Come gestire le differenze della gerarchia di memoria 400 Quicksort

che si hanno nelle differenti implementazioni hardware 0


4 8 16 32 64 128 256 512 1024 2048 4096
della stessa architettura?
b. Size (K items to sort)

utilizzo di algoritmi parametrici


Radix Sort
4

Cache misses / item


autotuning
3

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

write-back con modalità write-allocate


dimensione del blocco di 4 parole (16B)


dimensione della cache di 16KB (1024 blocchi)


indirizzi su 32 bit

presenza di bit di validità e del dirty bit per ogni blocco

Calcolatori a.a. 13/14 Dario Bruneo


Unità di controllo della cache (cont.)

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

Byte offset: 2 bit


segnale di validità su un bit (segnala se si sta eseguendo
un’operazione sulla memoria)

Block offset: 2 bit

indirizzi su 32 bit

Cache index: 10 bit

dati trasferiti cache/processore e processore/cache su 128 bit

Tag: 18 bit

segnale di ready su 1 bit (segnala quando la memoria ha
! terminato l’attività)

Segnali tra il processore e la cache (cache bloccante)


segnale di lettura o scrittura su un bit



1-bit Read/Write 1-bit Read/Write

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à)

Calcolatori a.a. 13/14 Dario Bruneo


Unità di controllo della cache (cont.)

FSM dell’unità di controllo (4 stati)



Cache Hit
Idle Compare Tag
Mark Cache Ready
Idle
If Valid && Hit ,
Set Valid, SetTag,
Valid CPU request if Write Set Dirty
stato iniziale

Compare Tag

si confrontano i tag e si determina la miss o l’hit


Cache
Cache
Miss Miss
i bit accessori vengono gestiti come un’unica struttura

and and
Old Block Old Block
Write-Back
is Dirty
is Clean

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

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

Calcolatori a.a. 13/14 Dario Bruneo


Coerenza

Un sistema di memoria è coerente quando:


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)

Le scritture nella stessa locazione di memoria sono serializzate

Calcolatori a.a. 13/14 Dario Bruneo


Consistenza

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

il dato potrebbe non aver lasciato ancora il processore


una scrittura non può essere considerata completa (consentendo quindi la scrittura successiva) finché tutti i processori non vedono
il suo effetto

si deve mantenere l’ordine delle scritture

Calcolatori a.a. 13/14 Dario Bruneo


Schemi per garantire la coerenza della cache

Al fine di gestire la coerenza, le cache devono consentire i seguenti meccanismi


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

Protocolli di coerenza (due approcci)


Snooping: approccio distribuito, overhead contenuto, non scalabile


Directory-based: approccio centralizzato, overhead elevato, buona scalabilità

Calcolatori a.a. 13/14 Dario Bruneo


Protocolli Snooping

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

Utilizzo solo con pochi processori


Dimensione dei blocchi ➜ falsa condivisione

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

FIGURE 5.36 An example of an invalidation protocol working on a snooping bus for a


single cache block (X) with write-back caches. We assume that neither cache initially holds X and
Calcolatori a.a. 13/14 Dario Bruneo
that the value of X in memory is 0. The CPU and memory contents show the value after the processor and
Protocolli Snooping
(cont.)

Per invalidare un dato, il processore acquisisce il bus e manda in broadcast l’indirizzo da invalidare

Tutti i processori ascoltano continuamente il bus


Se due processori tentano di scrivere lo stesso blocco contemporaneamente l’operazione viene serializzata

ad esempio serializzando l’accesso al bus


una scrittura ad un dato condiviso non può essere completata fino a quando non si acquisisce il bus

Come trovare la copia aggiornata di un blocco?


write-through

la copia si trova in memoria (consumo di banda eccessivo)


write-back

la copia è in una cache di qualche processore


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

potrebbe non essere efficiente qualora le cache si trovassero su chip differenti

Calcolatori a.a. 13/14 Dario Bruneo


Protocolli Snooping
(cont.)

D’ora in avanti considereremo un approccio write-back


Nel caso di scrittura è necessario sapere se il blocco è condiviso o no (al fine di evitare di mandare il messaggio di broadcast)

utilizzo di un bit shared


ogni volta che viene mandata un’invalidazione il bit di shared viene posto a 0

nel caso di una miss del dato il bit viene posto a 1


Il protocollo di snooping è implementato usando un controllore (FSM) per ogni cache


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

In realtà il controllore è uno solo ma agisce in maniera interlacciata


Protocolli comuni

MESI: Modified, Exclusive, Shared, Invalid


MOESI: Modified, Owned, Exclusive, Shared, Invalid

Calcolatori a.a. 13/14 Dario Bruneo


Protocolli Snooping
(cont.)
5.9 Advanced Material: Implementing Cache Controllers 5.9-13
Progetteremo un semplice protocollo (MSI) dove ogni blocco è associato con tre stati: Modified, Shared, Invalid

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à)

CPU read hit


Write miss for this block

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

for this block


e

Read miss
Pl

Pl

for this block Cache state transitions based


Cache state transitions
Exclusive Exclusive on requests from the bus
based on requests from CPU
(read/write) (read/write)

CPU write miss


Write-back cache block
Place write miss on bus

CPU write hit


CPU read hit

FIGURE 5.9.10 A write-invalidate,


Richieste dal processore cache-coherence protocol for a write-back cache, showing
Richieste dal bus the states and state transitions
for each block in the cache. The cache states are shown in circles, with any access permitted by the processor without a state transition shown
Calcolatori a.a. 13/14 Dario Bruneo
in parentheses under the name of the state. The stimulus causing a state change is shown on the transition arcs in regular type, and any bus actions
Protocolli directory-based

Una directory mantiene lo stato di ogni blocco che viene inserito in una cache

Le informazioni di stato includono:


quali cache possiedono la copia del dato


se tale copia è stata modificata (da una write) o no


L’implementazione più semplice prevede l’associazione di una entry nella directory per ogni blocco di memoria presente in una
cache

Occupazione di memoria: Numero di blocchi x Numero di processori


Con meno di 200 processori tale approccio risulta gestibile (mantenendo la dimensione dei blocchi ragionevolmente grande)

Per un numero maggiore di processori si utilizzano approcci distribuiti


La directory viene distribuita tra le memorie di ogni processore

Calcolatori a.a. 13/14 Dario Bruneo


Memoria virtuale

La memoria principale può agire come una “cache” della memoria di massa

Due motivazioni principali


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à

spazio di indirizzamento privato: indirizzi virtuali Vs. indirizzi fisici


protezione

isolamento sistema operativo


precedentemente, era compito del programmatore suddividere il programma in porzioni tra loro indipendenti (overlay)

Calcolatori a.a. 13/14 Dario Bruneo


Memoria virtuale (cont.)

Sebbene i concetti siano del tutto equivalenti a quelli


visti per le cache, nell’ambito della memoria virtuale si
utilizza una terminologia differente

blocco ➜ pagina
Virtual addresses Physical addresses
miss ➜ page fault
Address translation

Funzionamento:

il processore genera un indirizzo virtuale


l’indirizzo viene tradotto da una combinazione di componenti


hardware e software in un indirizzo fisico

sia la memoria virtuale che quella fisica sono suddivise in pagine



Disk addresses
possibilità di condivisione di dati e codice

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

gli indirizzi virtuali vengono mappati in indirizzi fisici


prima ancora che gli indirizzi vengano effettivamente
utilizzati (rilocazione)

Virtual address

il programma può essere caricato in qualsiasi locazione 31 30 29 28 27 15 14 13 12 11 10 9 8 3210

della memoria principale


Virtual page number Page offset

non è necessario che le pagine siano contigue


l’indirizzo virtuale viene suddiviso in due parti



Translation

virtual page number


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.

Calcolatori a.a. 13/14 Dario Bruneo


Scelte progettuali

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

pagine sufficientemente grandi (da 4KB a 64KB)


i microprocessori embedded hanno una tendenza inversa


posizionamento delle pagine flessibile


tecniche associative

gestione page fault tramite software


algoritmi di piazzamento più intelligenti


overhead trascurabile

tecniche di scrittura appropriate


utilizzo dell’approccio write-back (l’approccio write-through sarebbe troppo costoso)


utilizzo del dirty bit (concetto di dirty page)

Calcolatori a.a. 13/14 Dario Bruneo


Segmentazione

Blocchi di dimensione variabile


Indirizzi non lineari


numero di segmento

offset

Utilizzo di registri di segmento


Supporto di tecniche più potenti per la protezione e la condivisione di uno spazio di indirizzamento comune

Gestione non invisibile al programmatore

Calcolatori a.a. 13/14 Dario Bruneo


Tabella delle pagine

Al fine di ridurre i page fault si utilizzano approcci flessibili per la scelta della posizione delle pagine

schema fully-associative

Come evitare una ricerca sequenziale?


si costruisce una tabella (page table) che contiene la traduzione degli indirizzi virtuali in indirizzi fisici

la page table risiede in memoria centrale


la page table è indicizzata tramite il numero della pagina virtuale


ogni elemento contiene il numero della pagina fisica corrispondente (ammesso che essa sia caricata in memoria)

ogni programma possiede la sua page table


ogni architettura fornisce un registro hardware (page table register) che indica l’indirizzo iniziale della tabella

per adesso assumeremo che la page table sia contigua in memoria


tale registro assieme al PC ed ai registri general purpose costituisce lo “stato” di un programma

Calcolatori a.a. 13/14 Dario Bruneo


Tabella delle pagine (cont.)

creazione dell’indirizzo fisico


Page table register


bit di validità per segnalare i
Virtual address
page fault

31 30 29 28 27 15 14 13 12 11 10 9 8 3 2 1 0

Virtual page number Page offset


la tabella delle pagine contiene
20 12
la traduzione di ogni possibile
Valid Physical page number
pagina virtuale

non è necessario un campo tag


Esempio

Page table

spazio di indirizzamento virtuale


= 4GB

spazio di indirizzamento fisico 18


= 1GB

If 0 then page is not
present in memory
numero elementi della tabella
delle pagine = 220 29 28 27 15 14 13 12 11 10 9 8 3 2 1 0

Physical page number Page offset

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.)

La dimensione della tabella delle pagine può diventare eccessiva


con un indirizzo virtuale di 32 bit, pagine di 4KB ed elementi della tabella delle pagine di 4B, la dimensione è 4MB

come gestire la presenza di centinaia di programmi in esecuzione?


come gestire indirizzi virtuali a 64 bit?


1.Utilizzo di un registro limite



il registro determina la reale dimensione della tabella

se il numero di pagine virtuali cresce oltre il valore del registro limite occorre aggiungere nuovi elementi

lo spazio di indirizzamento si può espandere in una sola direzione


2.Utilizzo di un doppio registro limite e di due tabelle delle pagine



permette la crescita dello spazio di indirizzamento in due direzioni (stack e heap)

l’utilizzo di due tabelle divide lo spazio di indirizzamento in due


lo spazio da usare viene stabilito in base al bit più significativo dell’indirizzo


tecnica di segmentazione usata dal MIPS


invisibile ai programmatori ma non al sistema operativo

Calcolatori a.a. 13/14 Dario Bruneo


Tabella delle pagine (cont.)

3.Tabella delle pagine invertite



utilizzo di una funzione hash da applicare all’indirizzo virtuale

la tabella delle pagine avrà dimensione pari al numero delle pagine fisiche della memoria principale

processo di ricerca più complesso


4.Tabella delle pagine multilivello



il primo livello (tabella dei segmenti) memorizza grandi blocchi (ad es. da 64 a 256 pagine) chiamati segmenti (anche se invisibili all’utente)

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

permette di utilizzare lo spazio di indirizzi in maniera sparsa


5.Paginazione della tabella delle pagine



la tabella delle pagine deve risiedere nello spazio di indirizzamento virtuale

si devono gestire eventuali loop di page fault

Calcolatori a.a. 13/14 Dario Bruneo


Page fault

In caso di page fault il controllo deve essere trasferito al


sistema operativo (viene generata un’eccezione) che
deve
Virtual page
number
Page table
scoprire dove si trova la pagina richiesta nel livello inferiore Physical page or Physical memory
della gerarchia (solitamente il disco)
Valid disk address

decidere dove copiare la pagina



1
1
A tal fine è necessario tenere traccia della posizione su 1
1
disco di ogni pagina dello spazio di indirizzi virtuale

0
1
1
Il sistema operativo riserva sul disco tutto lo spazio 0
necessario ad un processo (Swap space) al momento 1 Disk storage
1
della sua creazione e inizializza la struttura dati
0
1

potrebbe essere la stessa page table (vedi esempio a fianco)


oppure una struttura ad hoc, corrispondente alla page table dal


punto di vista logico, ma separata dal punto di vista fisico al fine
di memorizzare l’indirizzo sul disco anche delle pagine caricate
in memoria FIGURE 5.22 The page table maps each page in virtual memory to either a page in m
memory or a page stored on disk, which is the next level in the hierarchy. The virtual p
number is used to index the page table. If the valid bit is on, the page table supplies the physical page num
(i.e., the starting address of the page in memory) corresponding to the virtual page. If the valid bit is off,
page currently resides only on disk, at a specifi ed disk address. In many systems, the table of physical p
Calcolatori a.a. 13/14 Dario Bruneo addresses and disk page addresses, while logically one table, is stored in two separate data structures. D
tables are justified in part because we must keep the disk addresses of all the pages, even if they are curren
Page fault (cont.)

Come scegliere la pagina da sostituire?


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

uno schema LRU corretto è troppo costoso


algoritmo LRU approssimato


l’hardware fornisce un bit (bit di utilizzo o riferimento) che viene impostato a 1 ogni volta che si accede ad una pagina

il sistema operativo periodicamente azzera tutti i bit di utilizzo


solo quelli effettivamente utilizzati verrano ripristinati a 1


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)

Calcolatori a.a. 13/14 Dario Bruneo


Translation lookaside buffer

La tabella delle pagine deve risiedere nella memoria principale


Ogni accesso alla memoria da parte di un programma richiede almeno il doppio del tempo

un primo accesso alla memoria per consultare la tabella delle pagine


un secondo accesso alla memoria per ottenere il dato richiesto


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

Translation lookaside buffer (TLB)

Calcolatori a.a. 13/14 Dario Bruneo


Translation lookaside buffer (cont.)

Dato che il TLB è una cache deve contenere il campo Tag


Poiché in caso di hit del TLB non si accederà alla tabella


TLB
delle pagine, tutti i bit di stato devono essere copiati Virtual page Physical page
number Valid Dirty Ref Tag address
anche nel TLB

1 0 1
1 1 1 Physical memory
1 1 1
Quando viene richiesta una pagina
1 0 1
0 0 0
1 0 1

si cerca il numero della pagina nel TLB


Page table
Physical page
in caso di hit si costruisce l’indirizzo fisico e si pone il bit di Valid Dirty Ref or disk address
riferimento a 1 (in caso di scrittura si pone a 1 anche Dirty)

1 0 1
1 0 0 Disk storage
in caso di miss occorre verificare se si tratti solo di una miss 1 0 0
1 0 1
del TLB o di un vero page fault
0 0 0
1 0 1
nel primo caso si carica la traduzione nel TLB dalla tabella delle 1 0 1
0 0 0
pagine e si ripete l’accesso (si può gestire sia via hardware che 1 1 1
via software)
1 1 1
0 0 0
1 1 1
si deve anche gestire la sostituzione di uno degli elementi già
presenti nel TLB (tecnica write-back)
FIGURE 5.23 The TLB acts as a cache of the page table for the entries that map to physical pages only. The TL
a subset of the virtual-to-physical page mappings that are in the page table. The TLB mappings are shown in color. Because the TLB
nel secondo caso (molto meno frequente) si genera un itpage
must have a tag field. If there is no matching entry in the TLB for a page, the page table must be examined. The page table eith
a physical page number for the page (which can then be used to build a TLB entry) or indicates that the page resides on disk, in w
fault (gestione via software) page fault occurs. Since the page table has an entry for every virtual page, no tag field is needed; in other words, unlike a TLB, a pa
not a cache. Copyright © 2009 Elsevier, Inc. All rights reserved.

Calcolatori a.a. 13/14 Dario Bruneo


Translation lookaside buffer (cont.)

Valori tipici di un TLB


dimensione del TLB: 16-512 elementi


dimensione del blocco: 1-2 elementi della tabella delle pagine (tipicamente 4-8 byte ciascuno)

tempo di hit: da 0,5 a 1 ciclo di clock


penalità di miss: 10-100 cicli di clock


frequenza di miss: 0,01% - 1%


Varie soluzioni progettuali


Piccoli TLB completamente associativi (frequenza di miss bassa)


Grandi TLB con grado di associatività basso

Calcolatori a.a. 13/14 Dario Bruneo


Il TLB del processore Intrinisty FastMATH
Virtual address
31 30 29 14 13 12 11 10 9 3 2 1 0
pagine di 4KB
Virtual page number Page offset
20 12

TLB con 16 elementi


Valid Dirty Tag Physical page number
=
TLB
=
completamente associativo
TLB hit =
=
=
=
sia dati che istruzioni
20

Physical page number Page offset


ogni elemento del TLB è 64 bit
Physical address
Block Byte
Physical address tag Cache index
offset offset
18 8 4 2
Tag: 20 bit

Physical page number: 20 bit



8
12 Data
Validity: 1 bit

Valid Tag

Dirty: 1 bit

Cache
altri bit per la gestione della pagina virtuale

uso di due strutture separate (campo tag e campo data)



=

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

TLB miss No Yes


TLB hit?
exception
Physical address

No Yes
Write?

Try to read data


from cache
No Yes
Write access
bit on?

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

Write data into cache,


update the dirty bit, and
put the data and the
address into the write buffer

Calcolatori a.a. 13/14 Dario Bruneo


FIGURE 5.25 Processing a read or a write-through in the Intrinsity FastMATH TLB and cache. If the TLB generates a hit, the
Integrazione di TLB, Memoria Virtuale e Cache

Il modello gerarchico impone che un dato non possa trovarsi nella cache a meno che non sia presente anche nella memoria virtuale

Gestione effettuata dal sistema operativo tramite:


scaricamento delle pagine contenute in cache quando tali pagine sono spostate sul disco

aggiornamento della tabella delle pagine e del TLB


Nel migliore dei casi un indirizzo viene tradotto dal TLB e causa una cache hit

Altri possibili (e non possibili) casi

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)

ogni accesso alla cache deve essere preceduto da un accesso al TLB


flush della cache in caso di context switch


Una alternativa è quella di indicizzare la cache virtualmente con tag virtuali (virtually addressed cache)

il TLB è fuori dal cammino critico


problema aliasing

Una via di mezzo consiste nell’indicizzare la cache virtualmente usando però tag fisici

combino gli effetti positivi delle due tecniche precedenti


l’accesso alla cache ed al TLB viene fatto in parallelo


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

Calcolatori a.a. 13/14 Dario Bruneo


Interfaccia Hardware/Software

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

modalità operative (kernel e utente)


accesso solo in lettura (da parte degli utenti) ad alcuni elementi di stato del processore (bit modalità, puntatore a tabella delle pagine, TLB)

meccanismi di cambio modalità (syscall, eret)


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

se il TLB è presente deve essere invalidato (flush)


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

simili problemi potrebbero nascere per la cache

Calcolatori a.a. 13/14 Dario Bruneo


TLB miss e page fault nel MIPS

Il MIPS gestisce le TLB miss via software utilizzando le eccezioni


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

Register CP0 register number Description


EPC 14 Where to restart after exception
Cause 13 Cause of exception
BadVAddr 8 Address that caused exception
Index 0 Location in TLB to be read or written
Random 1 Pseudorandom location in TLB
EntryLo 2 Physical page address and flags
EntryHi 10 Virtual page address
Context 4 Page table address and page number

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

Calcolatori a.a. 13/14 Dario Bruneo


TLB miss e page fault nel MIPS (cont.)

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

Accesso casuale implementato mediante un contatore a conteggio continuo


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

Calcolatori a.a. 13/14 Dario Bruneo


TLB miss e page fault nel MIPS (cont.)

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

La gestione del page fault prevede di


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:

tutti i registri (tranne quelli in virgola mobile)


il registro che contiene l’indirizzo della tabella delle pagine


il registro EPC

il registro Cause

Calcolatori a.a. 13/14 Dario Bruneo


TLB miss e page fault nel MIPS (cont.)
Save state
S a v e GPR add i $ k 1 , $ s p , - XCPS I Z E # save spa c e on s t a c k f o r s t a t e
Esempio di routine per la sw $ s p , XCT _SP ( $ k 1 ) # save $ s p on s t a c k
sw $ v 0 , XCT _V0 ( $ k 1 ) # save $ v 0 on s t a c k
gestione dei page fault ...
sw $ r a , XCT _RA ( $ k 1 )
#
#
save
save
$v1 , $a i , $s i , $ t i , . . . on s t a c k
$ r a on s t a c k
Save hi, lo mf h i $v0 # copy Hi
mfl o $v1 # copy Lo
sw $ v 0 , XCT _H I ( $ k 1 ) # save H i v a l ue on s t a c k
sw $ v 1 , XCT _ LO ( $ k 1 ) # save Lo v a l ue on s t a c k
Save exception mf c0 $a0 , $c r # copy cause r eg i s t e r
registers sw $ a 0 , XCT _CR ( $ k 1 ) # save $ c r v a l u e on s t a c k
... # save $v1 , . . . .
mf c0 $a3 , $s r # copy s t a t us r eg i s t e r
sw $ a 3 , XCT _SR ( $ k 1 ) # save $s r on s t a c k
Set sp mo v e $sp , $k1 # s p = s p - XCPS I Z E

Enable nested exceptions


and i $ v 0 , $ a 3 , MASK1 # $ v 0 = $ s r & MASK1 , e n a b l e e x c e p t i o n s
mt c0 $v0 , $s r # $ s r = v a l u e t h a t e n a b l e s e x c e p t i on s

Call C exception handler


Se t $gp mo v e $ g p , GP I N I T # s e t $g p t o po i n t t o h e a p a r e a
mo v e $a0 , $sp # a r g1 = po i n t e r t o e x c ep t i on s t a c k
Ca l l C code jal x cp t _de l i v e r # c a l l C c od e t o h a nd l e e x c e p t i on

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

! Typical values Typical values Typical values for Typical values


Feature for L1 caches for L2 caches paged memory for a TLB
Total size in blocks 250–2000 15,000–50,000 16,000–250,000 40–1024
!
Total size in kilobytes 16–64 500–4000 1,000,000–1,000,000,000 0.25–16
Block size in bytes 16–64 64–128 4000–64,000 4–32
!Miss penalty in clocks 10–25 100–1000 10,000,000–100,000,000 10–1000
Miss rates (global for L2) 2%–5% 0.1%–2% 0.00001%–0.0001% 0.01%–2%
!
FIGURE 5.29 The key quantitative design parameters that characterize the major elements of memory hierarchy in a
computer. These are typical values for these levels as of 2008. Although the range of values is wide, this is partially because many of the values
thatDa
haveun
shifted
puntooverdi time
vistaare related; for
qualitativo leexample, as caches become
scelte progettuali larger per
sono simili to overcome largerdella
tutti i livelli missgerarchia

penalties, block sizes also grow. Copyright ©
2009 Elsevier, Inc. All rights reserved.

1. Dove può essere posizionato un blocco?


2. Come si trova un blocco?


3. Quale blocco deve essere sostituito in caso di miss?


4. Cosa succede in caso di scrittura?

Calcolatori a.a. 13/14 Dario Bruneo


Schema comune per le gerarchie di memoria (cont.)

Modello delle tre C


Compulsory miss

Capacity miss

Conflict miss
10%

! 9%

! 8% One-way Compulsory miss pari allo 0,006% non visibili


! 7%
Two-way
! 6%
Miss rate Four-way
! 5%
per type
! 4%

! 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

Combinazione di effetti positivi e negativi

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.

Calcolatori a.a. 13/14 Dario Bruneo


AMD Barcelona Vs. Intel Nehalem

Characteristic Intel Nehalem AMD Opteron X4 (Barcelona)


Virtual address 48 bits 48 bits
Physical address 44 bits 48 bits
Page size 4 KB, 2/4 MB 4 KB, 2/4 MB
TLB organization 1 TLB for instructions and 1 TLB for 1 L1 TLB for instructions and 1 L1 TLB for
data per core data per core
Both L1 TLBs are four-way set Both L1 TLBs fully associative, LRU
associative, LRU replacement replacement
The L2 TLB is four-way set 1 L2 TLB for instructions and 1 L2 TLB for
associative, LRU replacement data per core
L1 I-TLB has 128 entries for small Both L2 TLBs are four-way set associative,
pages, 7 per thread for large pages round-robin
L1 D-TLB has 64 entries for small Both L1 TLBs have 48 entries
pages, 32 for large pages Both L2 TLBs have 512 entries
The L2 TLB has 512 entries TLB misses handled in hardware
TLB misses handled in hardware

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.)

Characteristic Intel Nehalem AMD Opteron X4 (Barcelona)


L1 cache organization Split instruction and data caches Split instruction and data caches
L1 cache size 32 KB each for instructions/data per 64 KB each for instructions/data
core per core
L1 cache associativity 4-way (I), 8-way (D) set associative 2-way set associative
L1 replacement Approximated LRU replacement LRU replacement
L1 block size 64 bytes 64 bytes
L1 write policy Write-back, Write-allocate Write-back, Write-allocate
L1 hit time (load-use) Not Available 3 clock cycles
L2 cache organization Unified (instruction and data) per core Unified (instruction and data) per core
L2 cache size 256 KB (0.25 MB) 512 KB (0.5 MB)
L2 cache associativity 8-way set associative 16-way set associative
L2 replacement Approximated LRU replacement Approximated LRU replacement
L2 block size 64 bytes 64 bytes
L2 write policy Write-back, Write-allocate Write-back, Write-allocate
L2 hit time Not Available 9 clock cycles
L3 cache organization Unified (instruction and data) Unified (instruction and data)
L3 cache size 8192 KB (8 MB), shared 2048 KB (2 MB), shared
L3 cache associativity 16-way set associative 32-way set associative
L3 replacement Not Available Evict block shared by fewest cores
L3 block size 64 bytes 64 bytes
L3 write policy Write-back, Write-allocate Write-back, Write-allocate
L3 hit time Not Available 38 (?)clock cycles

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.

Potrebbero piacerti anche