• Non ci sono risultati.

Prestazioni della cache a indirizzamento diretto

N/A
N/A
Protected

Academic year: 2021

Condividi "Prestazioni della cache a indirizzamento diretto"

Copied!
18
0
0

Testo completo

(1)

Miglioramento delle prestazioni

Migliorare sia larghezza di banda sia latenza: uso di cache multiple Introdurre una cache separata per istruzioni e dati (split cache)

Beneficio:

Le operazioni di lettura/scrittura possono essere svolte in modo indipendente in ogni cache

raddoppia la larghezza di banda della memoria!

Costo:

Processore necessita di due porte di collegamento alla memoria

Memoria cache

Architettura degli elaboratori - 32 -

Prestazioni della cache a indirizzamento diretto

Se due locazioni condividono lo stesso blocco di cache non potranno mai essere in cache contemporaneamente.

Cosa succede se un programma lavora per un certo tempo proprio su quelle due locazioni?

Memoria cache

Architettura degli elaboratori - 33 -

(2)

Prestazioni con cache a indirizzamento diretto: caso ottimo

Una volta caricati i blocchi in cache non si hanno più miss

Massimo vantaggio (nessun accesso a memoria centrale)

Memoria cache

Architettura degli elaboratori - 34 -

Memory

4 Byte Direct Mapped Cache Cache

Index 0 (00) 1 (00) 2 (00) 3 (00)

Valid Tag Data

1 00

1 00

1 00

1 00

Un programma accede ciclicamente

a queste locazioni

I dati sono in cache:

il programma accede ciclicamente a queste locazioni

Prestazioni con cache a indirizzamento diretto: caso pessimo

In chache c’è la riga con tag 00 quando serve quella con tag 01.

Viceversa quando serve quella con tag 00, in cahce c’è quella con tag 01.

Prestazioni perfino peggiori che senza cache!

Memory

4 Byte Direct Mapped Cache Cache

Index 0 (00) 1 (00) 2 (00) 3 (00)

Valid Tag Data

1 00

1 00

1 00

1 00

Un programma accede ciclicamente

a queste locazioni

(3)

Analisi delle prestazioni (modello semplificato)

Tempo di esecuzione = (cicli di esecuzione + cicli di stallo)  periodo del ciclo

Si ha un ciclo di stallo quando la CPU deve attendere il caricamento della cache a causa di un miss

Cicli di stallo = #miss  #cicli per miss =

(# istruzioni  miss rate)  miss penalty miss penalty = #cicli per ogni miss

Due modi per migliorare le prestazioni:

ridurre miss rate ridurre il miss penalty

Memoria cache

Architettura degli elaboratori - 36 -

Ridurre il miss rate

Un modo per ridurre il miss rate consiste nel consentire a qualunque combinazione di blocchi di stare contemporaneamente in cache Meglio adattandosi così alle esigenze dei programmi.

Memoria cache

Architettura degli elaboratori - 37 -

(4)

Cache completamente associative

Un blocco può essere memorizzato

in qualunque posizione della cache.

Non esiste una relazione fissa tra indirizzo di memoria del dato e posizione in cache

Memoria cache

Architettura degli elaboratori - 38 -

Cache Memoria

000001 010011 100101 110111 00000

00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111

Cache (completamente) associativa:

indirizzamento

In generale, se l’indirizzo è di N bit e il blocco è di 2Mbyte M bit per spiazzamento byte nel blocco

N-M bit di tag

Indipendentemente dalla dimensione della cache!

Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data

N-M bit

2M byte

Fully associative cache memory (qui: 8 blocchi da 2Mbyte ciascuno)

(5)

Cache (completamente) associativa:

indirizzamento

Esempio:

Memoria da 64KByte 16 bit di indirizzo cache

Cache contenente k blocchi da 24= 16 byte ciascuno Struttura dell’indirizzo:

I 4 bit meno significativi individuano il byte all’interno del blocco da 16 byte memorizzato nella cache

12 bit più significativi: etichetta

Memoria cache

Architettura degli elaboratori - 40 -

Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data

12bit 16byte

Dato un indirizzo qualunque, i suoi 12 bit più significativi devono essere confrontati con tutti i tag dei blocchi in cache

indice del byte in RAM

Cache (completamente) associativa

Esempio dati:

memoria RAM totale = 16 MegaByte= 224 bytes parole da 32 bit = 4 bytes = 22bytes

blocchi di : 512 parole = 29 parole = 211 bytes

mem cache (esclusi bit di tag) = qualsiasi numero di blocchi

Memoria cache

Architettura degli elaboratori - 41 -

indice parola in RAM

byte offset indice parola

nel blocco TAG del blocco

in Cache

1 0 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 0 1 1 0 1 indice blocco in RAM

(6)

Cache (completamente) associativa

Cercare un dato nella cache richiede il confronto di tutte le etichette presenti in cache con l’etichetta dell’indirizzo di memoria richiesto

Per consentire prestazioni decenti la ricerca avviene in parallelo (HW replicato: costoso!)

Etichetta viene trovata: cache hit. (procedo come prima) Etichetta non viene trovata: cache miss.

Quindi stallo: accedo alla RAM,

e memorizzo il blocco acceduto nella cache. Dove?

Con le cache associative, possiamo/dobbiamo scegliere!

Se la cache non è ancora piena:

scelgo un blocco vuoto qualsiasi di cache e ci copio il blocco della RAM (insieme con il suo tag)

Se la cache è piena, è necessario sostituire un dato. Quale?

Scelta casuale, oppure

Scelta del dato meno utilizzato di recente (LRU)

Memoria cache

Architettura degli elaboratori - 42 -

Cache set-associative

Per avere i vantaggi delle cache associative, riducendone i costi.

Dividere i blocchi nella cache in linee, (o insiemi, o set) ciascuna linea = n blocchi

Ogni blocco di RAM può andare in un’unica linea di cache Scelta con lo stesso meccanismo dell’indirizzamento diretto Ogni linea comprende n blocchi

Un blocco dato può occupare qualsiasi posizione nella linea (stesso meccanismo delle cache associative)

Def: una cache set-associativa in cui un blocco può andare in n posizioni si chama

«set-associativa a n vie».

(«n-way set associative»)

set tag data tag data 0

1 2 3

Es: two-way set associative

(7)

Cache set-associative

Ogni blocco della memoria corrisponde –come nella cache ad indirizzamento diretto– ad uno set della cache

(set = insieme = «linea» della cache)

il blocco può essere messo in uno qualsiasi degli n elementi di questo insieme

Combina la modalità a indirizzamento:

diretto per scegliere il set

completamente associativa scegliere il blocco all’interno del set.

Memoria cache

Architettura degli elaboratori - 44 -

Indirizzamento nelle cache set-associative

Un indirizzo di memoria di N bit è suddiviso in 4 campi:

1. B bit meno significativi per individuare il byte all’interno della parola di 2Bbyte

(detto offset del byte)

2. W bit per individuare la parola all’interno del blocco di 2Wparole 3. M bit per individuare il set (insieme, linea) di cache

4. N-(M+W+B) come etichetta Come nell’indirizzamento diretto

Memoria cache

Architettura degli elaboratori - 45 -

(8)

indice del byte in RAM

Cache 4-way set associative (con set da 4 blocchi)

Esempio di caratteristiche:

memoria RAM totale = 16 MegaByte= 224 bytes parole da 32 bit = 4 bytes = 22bytes

blocchi di : 512 parole = 29 parole = 211 bytes

tot mem cache (senza tag) = 64Kb = 216 bytes= 23 x 22x 211 bytes

Memoria cache

Architettura degli elaboratori - 46 -

indice parola in RAM

byte offset indice parola

nel blocco TAG da memoriz.

in Cache

1 0 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 0 1 1 0 1 indice blocco in RAM

indir. del Set in Cache

num blocchi in ogni set

dim dei blocchi quindi:

numero di set

Cache set-associativa

Cache a due vie: insiemi (linee) di 2 blocchi

Equivale ad avere due cache a indirizzamento diretto che operano in parallelo

La parte di indirizzo che individua l’insieme seleziona i due blocchi della cache

Le due etichette vengono confrontate in parallelo con quella dell’indirizzo cercato

Il dato viene selezionato in base al risultato dei due confronti

(9)

Cache Set Associativa a due vie

Memoria cache

Architettura degli elaboratori - 48 -

Data Blocco 0 Tag

Valid

:

: :

Blocco 0

: :

:

=? =?

Word (K bit)

Tag Line

(insieme)

Data Tag Valid

Hit

Blocco 2K 2K

2K 2K

2K

K

Parola

Cache set associativa a 4 vie Altro esempio.

Indirizzo di memoria: 32 bit

Memoria cache 1KByte indirizzabile per byte, 1 parola da 4 Byte per blocco

Cioè ogni linea contiene un insieme di 4 blocchi, ciascuno da 4 byte (totale 16 byte)

Le linee sono 1024/16 = 64 (=26) Organizzazione dell’indirizzo:

Bit 0 e 1 per indirizzare i byte nella parola da 4 byte Bit 2-7 indirizzo dell’insieme nella cache

Bit 8-31 etichetta

Memoria cache

Architettura degli elaboratori - 49 -

(10)

Cache set associativa a 4 vie

Memoria cache

Architettura degli elaboratori - 50 -

31.. 8 1 0

Indirizzo

Dato Etichetta V

63 Indice

Dati Hit

=

24 6

Dato Etichetta

V V Etichetta Dato V Etichetta Dato

= = =

22 32

7..2

Selezione

Prestazioni

1 KB 2 KB 4 KB 8 KB

16 KB 32 KB 64 KB 128 KB

0%

3%

6%

9%

12%

15%

Eight-way Four-way

Two-way One-way

Miss rate

Associativity

(11)

Confronto tra diverse organizzazioni di cache

Cache set-associativa a N vie vs. Cache a indirizzamento diretto:

N comparatori vs. 1 per verificare che il tag sia quello giusto Un ritardo dovuto al MUX aggiuntivo per i dati

Dati sono disponibili solo DOPO il segnale di Hit/Miss

In una cache a indirizzamento diretto, il blocco di cache richiesto è disponibile PRIMA del segnale di Hit/Miss:

Possibile ipotizzare un successo e quindi proseguire.

Si recupera successivamente se si trattava in realtà di un fallimento.

Memoria cache

Architettura degli elaboratori - 52 -

Conclusioni: 4 domande su gerarchia di memoria

Q1: Dove si colloca un blocco nel livello di memoria superiore?

(Posizionamento del blocco)

Q2: Come si identifica un blocco che si trova nel livello superiore?

(Identificazione del blocco)

Q3: Quale blocco deve essere sostituito nel caso di un fallimento?

(Sostituzione del blocco)

Q4: Cosa succede durante una scrittura?

(Strategia di scrittura)

Memoria cache

Architettura degli elaboratori - 53 -

(12)

Posizionamento del blocco

Indirizzamento diretto:

Posizione univoca:

[ indirizzo di memoria ] modulo [ numero dei blocchi in cache ] Completamente associativa:

Posizione qualunque all’interno della cache Set associativa

Insieme determinato univocamente come [indirizzo di memoria/numero dei blocchi]

modulo

[numero degli insiemi]

Posizione qualunque all’interno dell’insieme scelto

Memoria cache

Architettura degli elaboratori - 54 -

Identificazione del blocco

Indirizzamento diretto:

Indice memoria inferiore determina posizione nella cache Si confronta etichetta trovata con quella cercata etichetta e si verifica che bit «valido» = 1

Completamente associativo:

Confronta etichetta in ogni blocco.

Set-associativo Identifica insieme

Confronta etichette dell’insieme e verifica bit valido

(13)

Sostituzione del blocco (quale blocco sostituire)

Cache a indirizzamento diretto:

Nessuna scelta: è definito dall’indirizzo nelle Cache set associative o completamente associative:

Casuale, oppure

LRU (Least Recently Used)

Associatività 2-way 4-way 8-way

Dimensione LRU Casuale LRU Casuale LRU Casuale

16 KB 5.2% 5.7% 4.7% 5.3% 4.4% 5.0%

64 KB 1.9% 2.0% 1.5% 1.7% 1.4% 1.5%

256 KB 1.15% 1.17% 1.13% 1.13% 1.12% 1.12%

Memoria cache

Architettura degli elaboratori - 56 -

Cache miss:

esempio di risultato empirico di misurato su un benchmark:

Strategie di scrittura di un blocco

Write through—L’informazione viene scritta sia nel blocco del livello superiore sia nel blocco di livello inferiore della memoria

Write back—L’informazione viene scritta solo nel blocco di livello superiore. Il livello inferiore viene aggiornato solo quando avviene la sostituzione del blocco di livello superiore.

Memoria cache

Architettura degli elaboratori - 57 -

(14)

Strategie di scrittura

Write back

Per ogni blocco di cache è necessario mantenere l’informazione sulla scrittura:

Ad ogni blocco è associato un bit MODIFICA che indica se il blocco in cache è stato modificato o meno e va quindi copiato in memoria in caso di sostituzione

Memoria cache

Architettura degli elaboratori - 58 -

Write through vs Write back

Write through

La parola in cache e la parola in memoria vengono aggiornate entrambe subito

Semplice da implementare Efficienza non ottimale quando

la stessa parola viene aggiornata più volte di fila Write back (o anche: copy back)

Laparola in cache è aggiornata subito, e marcata come tale mediante un “dirty bit”

La parola di memoria centrale viene aggiornata in seguito (tipicamente quando occorre liberare il blocco di cache, oppure per un «flush»)

Più complessa da implementare

Efficienza non ottimale quando si ricopia un intero blocco contenente sia parole modificate che parole non modificate.

(15)

Confronto tra strategie di scrittura

Write Back: non si hanno aggiornamenti ripetuti delle stesse celle di memoria

L’aggiornamento avviene una volta sola

Write Through viene realizzato con buffer di scrittura per non aumentare troppo i tempi di scrittura dovuti alle inferiori prestazioni della memoria di livello inferiore

Memoria cache

Architettura degli elaboratori - 60 -

Buffer di scrittura per Write Through

Necessario un buffer di scrittura tra Cache e Memoria Processore: scrive i dati in cache e nel buffer di scrittura Controllore di memoria: scrive i contenuti del buffer in memoria

Memoria cache

Architettura degli elaboratori - 61 -

Processor Cache

Write Buffer

DRAM

(16)

Miss in lettura

Se si ha un miss in lettura il blocco corrispondente viene caricato in memoria

Read back

La lettura avviene dopo che il blocco è stato caricato interamente in cache

Load through (o early restart)

La parola viene mandata al processore non appena è in cache.

Dopo di che il processore può proseguire l’esecuzione e la lettura del resto del blocco prosegue in parallelo

Memoria cache

Architettura degli elaboratori - 62 -

Tempo di accesso alla memoria

Tempo medio di accesso alla memoria =

Tasso di successo x tempo di accesso a cache + Tasso di fallimento x Penalità di fallimento

Tasso di fallimento = 1 – Tasso di successo Penalità di fallimento:

Tempo di accesso al livello inferiore: f(latenza livello inferiore)

Tempo di trasferimento di un blocco dal livello inferiore: f(larghezza di banda tra i due livelli)

(17)

Riduzione della penalità di fallimento:

cache multilivello

Aggiunta di un secondo livello di cache:

Spesso la cache primaria è posizionata sullo stesso chip del processore (dimensioni ridotte)

Si possono utilizzare SRAM per aggiungere una cache prima della memoria centrale (DRAM)

Penalità di fallimento si riduce se il dato è disponibile nel secondo livello di cache (tempi di accesso inferiori)

Memoria cache

Architettura degli elaboratori - 64 -

Organizzazione cache a due livelli

Memoria cache

Architettura degli elaboratori - 65 -

CPU chip

Cache istruzioni L1 Cache dati L1

Cache L2

Memoria centrale

BUS

(18)

Prestazioni con due livelli di cache

Tempo medio di accesso alla memoria =

Tasso di successo L1 x tempo di accesso a cache L1 +

(1- tasso di successo L1) x tasso di successo L2 x tempo di accesso a cache L2 +

(1- tasso di successo L1) x (1- tasso di successo L2) x penalità di fallimento L2

Memoria cache

Architettura degli elaboratori - 66 -

Riferimenti

Documenti correlati

– Write-non-allocate: la linea non viene portata in cache (viene solo aggiornata la memoria centrale). Ha senso in considerazione del

Nel grafico di figura 5-16 si comprende meglio quanto appena esposto essendo rappresentati in funzione della progressiva del percorso, la potenza erogata dal solo motore

• Dati nella cache L1 (~ 2 cicli per l’accesso) – Necessarie q=0.5 (cioe’ 2 flop per dato trasferito) per. avere il 50%

These factors lead to an increasingly common approach as well as common policies in the area of EU defence policy and have a strong impact on the norms and ideas of decision-takers

Un blocco dato può occupare qualsiasi posizione nella linea Scelto con lo stesso meccanismo delle cache associative Una cache set-associativa. in cui un blocco può andare in n

// Create a broadcast variable based on the content of dictionaryRDD // Pay attention that a broadcast variable can be instantiated only // by passing as parameter a local

3. il microprogramma di una unità cache completamente associativa controlla che il blocco di memoria principale riferito sia attualmente allocato nel blocco di cache il

in which the number of leaves in the recursion tree is polynomially larger than the divide/merge cost, such an algorithm will usually then use within a constant factor of the