Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando...

79
Arch. Elab. - S. Orlando 1 Gerarchie di memoria Salvatore Orlando

Transcript of Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando...

Page 1: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 1

Gerarchie di memoria

Salvatore Orlando

Page 2: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 2

Gerarchie di memoria

• I programmatori hanno l’esigenza di avere memorie sempre più veloci e capienti, per poter memorizzare programmi e dati

• Purtroppo la tecnologia permette solo di costruire– memorie grandi e lente, ma poco costose

– memorie piccole e veloci, ma molto costose

• Conflitto tra– esigenze programmatori

– vincoli tecnologici

Page 3: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 3

Gerarchie di memoria

• Soluzione: gerarchie di memoria

– piazziamo memorie veloci vicino alla CPU• per non rallentare la dinamica di accesso alla memoria

– fetch delle istruzioni e load/store dei dati

– man mano che ci allontaniamo dalla CPU• memorie sempre più lente e capienti

– soluzione compatibile con i costi …..

– meccanismo dinamico per spostare i dati tra i livelli della gerarchia

Page 4: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 4

Gerarchie di memoria

• Al livello 1 poniamo la memoria più veloce (piccola e costosa)

• Al livello n poniamo la memoria più lenta (grande ed economica)

• Scopo gerarchia e delle politiche di gestione delle memorie

– dare l’illusione di avere a disposizione una memoria

• grande (come al livello n) e veloce (come al livello 1)

Page 5: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 5

Costi e capacità delle memorie

• Dati 2008

– SRAM

• latenze di accesso di 0,5-2,5 ns

• costo da $2000 a $5.000 per GB

• tecnologia usata per i livelli più vicini all CPU (cache)

– DRAM

• latenze di accessi di 50-70 ns

• costo da $20 a $75 per GB

• tecnologia usata per la cosiddetta memoria principale

– Dischi

• latenze di accesso di 5-20 milioni di ns (5-20 ms)

• costo da $0,2 a $2 per GB

• memoria stabile usata per memorizzare file

• memoria usata anche per contenere l’immagine (text/data) dei

programmi in esecuzione => memoria (principale) virtuale

Page 6: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 6

Illusione = memoria grande e veloce !?

• All’inizio i nostri dati e i nostri programmi sono

memorizzati nel livello n (mem. più capiente e lenta)

• I blocchi (linee) di memoria man mano riferiti

vengono fatti fluire verso i livelli più alti (memorie

più piccole e veloci), più vicini alla CPU

• Se il blocco richiesto è presente nel livello più alto

– Hit: l’accesso soddisfatto dal livello più alto

– Hit rate (%): 100 * n. hit / n. accessi

• Se il blocco richiesto è assente nel livello più alto

– Miss: il blocco è copiato dal livello più basso

– Time taken: miss penalty

– Miss rate (%): 100 * n. miss / n. accessi =

= 100 – hit ratio

– Poi l’accesso è garantito dal livello più alto

Page 7: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 7

Illusione = memoria grande e veloce !?

• Problema 1:

– Cosa succede se un blocco riferito è già

presente nel livello 1 (più alto) ?

– La CPU può accedervi direttamente (hit), ma

abbiamo bisogno di un meccanismo per

individuare e indirizzare il blocco all’interno del

livello più alto !

• Problema 2:

– Cosa succede se il livello più alto è pieno ?

– Dobbiamo implementare una politica di

rimpiazzo dei blocchi !

Page 8: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 8

Terminologia

• Anche se i trasferimenti tra i livelli avvengono sempre in blocchi, questi

hanno dimensione diversa, e (per ragioni storiche) nomi diversi

– abbiamo blocchi più piccoli ai livelli più alti (più vicini alla CPU)

– es. di nomi: blocco/linea di cache e pagina

• Hit (Successo)

– quando il blocco cercato a livello i è stato individuato

• Miss (Fallimento)

– quando il blocco cercato non è presente al livello i

• Hit rate (%)

– frequenza di Hit rispetto ai tentativi fatti per accedere blocchi al livello i

• Miss rate (%)

– frequenza di Miss rispetto ai tentativi fatti per accedere blocchi al livello i

• Hit Time

– latenza di accesso di un blocco al livello i in caso di Hit

• Miss Penalty

– tempo per copiare il blocco dal livello inferiore

Page 9: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 9

Località

• L’illusione offerto dalla gerarchia di memoria è possibile in base al:

Principio di località• Se un elemento (es. word di memoria) è riferito dal programma

– esso tenderà ad essere riferito ancora, e presto Località temporale

– gli elementi ad esse vicini tenderanno ad essere riferiti presto Località

spaziale

• In altri termini, in un dato intervallo di tempo, i programmi accedono una

porzione (relativamente piccola) dello spazio di indirizzamento totale

• La località permette il funzionamento ottimale delle gerarchie di memoria

– aumenta la probabilità di riusare i blocchi, precedentemente spostati ai

livelli superiori, riducendo il miss rate

Spazio di Indirizzamento0 2n - 1

Probabilitàdi riferimento

Page 10: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 10

Cache

• E’ il livello di memoria (SRAM) più vicino alla CPU (oltre ai Registri)

• Oggi i livelli L1, L2 e L3 sono on-chip

Control

Datapath

Secondary

Storage

(Disk)

Processor

Reg

isters

Main

Memory

(DRAM)

Second

Level

Cache

(SRAM)

On

-Ch

ip

Ca

che

1 10,000,000

(10 ms)

Speed (ns): 10 100

100 GSize (bytes): K M

Tertiary

Storage

(Tape)

10,000,000,000

(10 sec)

T

Registri: livello di memoria più vicino alla CPU

Movimenti tra Cache Registri gestiti a sw

dal compilatore / programmatore assembler

Page 11: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 11

Cache e Trend tecnologici delle memorie

Capacità Velocità (riduz. latenza)

Logica digitale: 2x in 3 anni 2x in 3 anni

DRAM: 4x in 3 anni 2x in 10 anni

Dischi: 4x in 3 anni 2x in 10 anni

Anno Size $ per MB Latenza

accesso

1980 64 Kb 1.500 250 ns

1983 256 Kb 500 185 ns

1985 1 Mb 200 135 ns

1989 4 Mb 50 110 ns

1992 16 Mb 15 90 ns

1996 64 Mb 10 60 ns

1998 128 Mb 4 60 ns

2000 256 Mb 1 55 ns

2002 512 Mb 0,25 50 ns

2004 1024 Mb 0,10 45 ns

1000:1

5:1

Page 12: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 12

Accesso alla memoria = Von Neumann bottleneck

DRAM

CPU

Performance

(1/latency)

Processor-Memory

Performance Gap:(cresce del 50% / year)

The power

wallCPU

60% per yr

2X in 1.5 yrs

DRAM

9% per yr

2X in 10 yrsDRAM

Year

Processor-DRAM Memory: Performance Gap

Page 13: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 13

1977: DRAM più veloce del microprocessore

Apple ][ (1977)

Steve WozniakSteve

Jobs

CPU: 1000 nsDRAM: 400 ns

Page 14: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 14

Gerarchie di Memoria nel 2005: Apple iMac G5

iMac G5

1.6 GHz

$1299.00

Reg L1 Inst L1 Data L2 DRAM Disk

Size 1K 64K 32K 512K 256M 80G

Latency(cycles)

1 3 3 11 160 1e7

Managed

by compilerManaged

by hardware

Managed by OS,

hardware,

application

Page 15: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 15

Cache

• L’uso di cache grandi e multivello è necessario per

– tentare di risolvere il von Neumann bottleneck, il problema

costituito dalle memorie DRAM

• sempre più capienti

• ma sempre meno veloci, rispetto agli incrementi di prestazione delle

CPU (microprocessori)

• Gestione movimenti di dati tra livello cache e livelli sottostanti (Main

memory)

– realizzata dall’hardware

Page 16: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 16

Progetto di un sistema di cache

CPU

cache

DRAM

Memoria

Sequenza di riferimenti alla memoria: <op,addr>, <op,addr>,<op,addr>,<op,addr>, . . .

op: i-fetch, read (load), write (store)

Obiettivo del progettista:

Ottimizzare l’organizzazione delle gerarchie di

memoria in modo da minimizzare il tempo

medio di accesso alla memoria per carichi tipici

(per sequenze di accesso tipiche)

Ovvero, aumentare il cache hit rate

Programmi di

benchmark

Page 17: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 17

Problemi di progetto di una cache

• Dimensionamenti – size del blocco e numero di blocchi nella cache

• Indirizzamento e mapping:– Come faccio a sapere se un blocco è presente in cache, e come

faccio a individuarlo ?

– Se un blocco non è presente e devo recuperarlo dalla memoria a livello inferiore, dove lo scrivo in cache?

➔ Funzione di mapping tra

Indirizzo Memoria → Identificatore blocco

dipende dall’organizzazione della cache:

diretta o associativa

Page 18: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 18

Caso semplice: cache ad accesso diretto

• Mapping tramite funzione hash (modulo) dell’indirizzo (Address):

– Cache block INDEX = Address mod # cache blocks =

resto divisione: Address / #cache blocks

# cache blocks = 8 = 23

block size = 1 B

Considerando rappresentazione binariadi Address:

# cache blocks è potenza di 2 (23)

Cache block Index corrisponde ai

3 bit meno significativi di Address

No. bit INDEX =log (# cache blocks)

Page 19: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 19

Caso semplice: cache ad accesso diretto

• Funzione hash:

– Cache block INDEX = Address % # cache blocks =resto divisione: Address / #cache blocks

# cache blocks = 2i

block size = 1 B

Considerando rappresentazione binaria di Address:

Quoziente = Address / #cache blocks = Address / 2i = Address >> i

n-i bit più significativi di Address

Resto = Address % #cache blocks = Address & 111..111

i bit i bit meno significativi di Address

Prova:

Address = Quoziente * 2i + Resto = Quoziente << i + Resto

Quoziente Resto

Address

n-i bit i bit

INDEX

Page 20: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 20

Cache diretta e blocchi più grandi

• Per block size > 1B:

– Address diversi (che differiscono per i bit meno significativi) possono

cadere all’interno dello stesso Cache block

• Le dimensioni dei blocchi sono solitamente potenze di 2

– Block size = 4, 8, 16, o 32 B

• Block Address : indirizzamento al blocco (invece che al Byte)

– Block Address = Address / Block size

– In binario, se Block Size è una potenza di 2, Address >> n, dove

n = log2(Block size)

– Questi n bit meno significativi dell’Address costituiscono il byte offset del

blocco

• Nuova funzione di Mapping :

Block Address = Address / Block size

Cache block INDEX = Block Address % # cache blocks

Page 21: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 21

Esempio di cache diretta con blocchi di 2 B

Cache000

001

010

011

100

101

110

111

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

Blocco = 2 B

log2 2 = 1 b

Byte offset del blocco

Da non considerare per ottenere il block address

Page 22: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 22

Tag e Valid Bit

• Come facciamo a conoscere quale particolare blocco di memoria è

memorizzato in un certa locazione della cache?

– Memorizziamo il block address assieme al blocco dei dati

– In realtà, ci bastano solo i bit high-order dell’address

• Risparmiamo bit

– Chiamiamo questi bit Tag

– In realtà Tag = Quoziente = block address / block size

• Come faccio a sapere se una certa locazione della cache non contiene

dati, cioè è logicamente vuota?

– Valid bit:

• 1 = present

• 0 = not present

• Inizialmente uguale a 0

Page 23: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 23

Cache ad accesso diretto (vecchio MIPS)

• Byte OFFSET

– n = log2(Block size) = log2(4) = 2 b

• INDEX

– corrisponde alog2(# blocchi cache)=log2(1024) = 10 b

– 10 bit meno significativi del Block Address

– Block Address ottenuto da Address rimuovendo gli n=2 bit del byte offset

• TAG

– parte alta dell’Address, da memorizzare in cache assieme al blocco

– TAG = N bit addr. – INDEX –OFFSET = 32-10-2=20 b

– permette di risalire all’Addressoriginale del blocco memorizzato

• Valid

– il blocco è presente Write through

(Nota: solo bit di Valid)

Page 24: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 24

Blocco più grande di una word

• Approccio

vantaggioso per

ridurre il Miss rate

se abbiamo

– località spaziale

• Infatti, se si verifica

un Miss

– si carica un

blocco grosso

– se sono

probabili

accessi

spazialmente

vicini, questi

cadono nello

stesso blocco

Hit

Offset (n = log216 = 4) suddiviso in due parti

Block offset (2 b) : seleziona word

Byte offset (2 b) : seleziona byte

Page 25: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 25

Esempio

• Cache con 64 blocchi

• Blocchi di 16B

• Se l’indirizzo è di 27 bit, com’è composto?

– INDEX deve essere in grado di indirizzare 64 blocchi: SIZEINDEX =

log2(64)=6

– BLOCK OFFSET (non distinguiamo tra byte e block offset) deve essere in

grado di indirizzare 16B: SIZEBLOCK OFFSET = log2(16)=4

– TAG corrisponde ai rimanenti bit (alti) dell’indirizzo:

SIZETAG = 27- SIZEINDEX - SIZEOFFSET = 17

• Qual è il blocco (INDEX) che contiene il byte all’indirizzo 1201 ?

– Trasformo l’indirizzo al Byte nell’indirizzo al blocco: 1201/16 = 75

– L’offset all’interno del blocco è: 1201 % 16 = 1

– L’index viene determinato con l’operazione di modulo: 75 % 64 = 11

il blocco è il 12o (INDEX=11), il byte del blocco è il 2o (OFFSET=1)

– TAG: 75 / 64 = 1

TAG INDEX

17 6 4

Page 26: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 26

Problemi di progetto di una cache

• Conflitti nell’uso della cache– Se il blocco da portare in cache deve essere sovrascritto (sulla

base della funzione di mapping) su un altro blocco di dati già presente in cache, cosa ne faccio del vecchio blocco?

– Se il vecchio blocco è stato solo acceduto in lettura (Read), possiamo semplicemente rimpiazzarlo

– Se il vecchio blocco è stato modificato (Read/Write), dipende dalle politiche di coerenza tra i livelli di memoria

• Write through (scrivo sia in cache che in memoria)

• Write back (scrivo solo in cache, e ritardo la scrittura in memoria)

– Con politica Write through il blocco in conflitto può essere rimpiazzato senza problemi

– Con politica Write back prima di rimpiazzare il blocco in conflitto, questo deve essere scritto in memoria

Page 27: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 27

Hits vs. Miss

• Read Hit (come conseguenza di i-fetch e load)

– accesso alla memoria con il massimo della velocità

• Read Miss (come conseguenza di i-fetch e load)

– il controllo deve mettere in stallo la CPU (cicli di attesa,

con registri interni immutati), finché la lettura del blocco

(dalla memoria in cache) viene completata

– Successivamente al completamento della lettura del

blocco:

• Instruction cache miss

– Ripeti il fetch dell’istruzione

• Data cache miss

– Completa l’accesso al dato dell’istruzione (load)

Page 28: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 28

Hits vs. Miss

• Write Hit (solo come conseguenza di store)

– write through: scrive sulla cache e in memoria

– write back: scrive solo sulla cache, e segnala che il

blocco è stato modificato (setting di un bit di Dirty

associato al blocco)

• Write Miss (solo come conseguenza di store)

– con politica write-back, stallo della CPU (cicli di attesa),

lettura del blocco dalla memoria in cache (write

allocate), completamento dell’istruzione di store in

cache

– con politica write-through, solitamente non si ricopia il

blocco in cache prima di effettuare la scrittura (no write

allocate) che avviene direttamente in memoria

Page 29: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 29

Ottimizzazione Write-Through

• Le write pongono problemi con politica write-through

– Le write diventano più lunghe, anche in presenza di Write Hit

– Esempio:

• di base abbiamo che: CPI = 1

• se il 10% delle istruzioni fossero store, e ogni accesso alla memoria

costasse 100 cicli:

CPI = 1 + 0.1 × 100 = 11

• Soluzione:

– Write buffer come memoria tampone «veloce» tra cache e

memoria, per nascondere la latenza di accesso alla memoria

– i blocchi sono scritti temporaneamente nel write buffer, in attesa

della scrittura asincrona in memoria

– il processore può proseguire senza attendere, a meno che il write

buffer sia pieno

Page 30: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 30

Esempio di funzionamento

• Si consideri una cache diretta, e si assuma che l’indirizzo sia di 24 bit. La

dimensione del blocco è di 16 B, mentre la cache ha 16 ingressi.

– OFFSET: log 16 = 4 b

– INDEX: log 16 = 4 b

– TAG: 24 – INDEX – OFFSET = 16 b

• Si supponga che i 16 ingressi della cache

siano tutti non validi (VALID=0)

VALID TAG DATA

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

CPU

cache

Memoria

flusso di r/w address

miss

Page 31: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 31

Esempio di funzionamento

• Flusso di accessi r/w: indirizzi di memoria a 24 b

VALID TAG DATA

0

0

0

0

0

0

0

0

0

1 1AB0 Mem[1AB090]

0

0

0

0

0

0

0x 1AB090: TAG: 1AB0 IND: 9 OFF: 0

➔ miss

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Page 32: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 32

Esempio di funzionamento

• Flusso di accessi r/w: indirizzi di memoria a 24 b

VALID TAG DATA

0

0

0

0

0

0

0

0

0

1 1AB0 Mem[1AB090]

0

0

0

0

0

0

0x 1AB090: TAG: 1AB0 IND: 9 OFF: 0

➔ miss

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

0x 2AB090: TAG: 2AB0 IND: 9 OFF: 0

➔ conflitto e miss (rimpiazzo)

conflitto

Page 33: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 33

Esempio di funzionamento

• Flusso di accessi r/w: indirizzi di memoria a 24 b

VALID TAG DATA

0

0

0

0

0

0

0

0

0

1 2AB0 Mem[2AB090]

0

0

0

0

0

0

0x 1AB090: TAG: 1AB0 IND: 9 OFF: 0

➔ miss

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

0x 2AB090: TAG: 2AB0 IND: 9 OFF: 0

➔ conflitto e miss

Page 34: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 34

Esempio di funzionamento

• Flusso di accessi r/w: indirizzi di memoria a 24 b

VALID TAG DATA

0

0

0

0

0

0

0

0

0

1 1AB0 Mem[1AB090]

0

0

0

0

0

0

0x 1AB090: TAG: 1AB0 IND: 9 OFF: 0

➔ miss

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

0x 2AB090: TAG: 2AB0 IND: 9 OFF: 0

➔ conflitto e miss

0x 1AB094: TAG: 1AB0 IND: 9 OFF: 4

➔ conflitto e miss

Page 35: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 35

Esempio di funzionamento

• Flusso di accessi r/w: indirizzi di memoria a 24 b

VALID TAG DATA

0

0

0

0

0

0

0

0

0

1 1AB0 Mem[1AB090]

0

0

0

0

0

0

0x 1AB090: TAG: 1AB0 IND: 9 OFF: 0

➔ miss

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

0x 2AB090: TAG: 2AB0 IND: 9 OFF: 0

➔ conflitto e miss

0x 1AB094: TAG: 1AB0 IND: 9 OFF: 4

➔ conflitto e miss

0x 1AB090: TAG: 1AB0 IND: 9 OFF: 0

➔ hit

Page 36: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 36

Esempio di funzionamento

• Flusso di accessi r/w: indirizzi di memoria a 24 b

VALID TAG DATA

0

1 1220 Mem[122010]

0

0

0

0

0

0

0

1 1AB0 Mem[1AB090]

0

0

0

0

0

0

0x 1AB090: TAG: 1AB0 IND: 9 OFF: 0

➔ miss

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

0x 2AB090: TAG: 2AB0 IND: 9 OFF: 0

➔ conflitto e miss

0x 1AB094: TAG: 1AB0 IND: 9 OFF: 4

➔ conflitto e miss

0x 1AB090: TAG: 1AB0 IND: 9 OFF: 0

➔ hit

0x 122010: TAG: 1220 IND: 1 OFF: 0

➔ miss

Page 37: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 37

Costo dei miss

• Aumentare la dimensione dei blocchi

– può diminuire il miss rate, in presenza di località spaziale

– aumenta il miss penalty

• Quanto costa il miss ?

– dipende (parzialmente) dalla dimensione del blocco:

• Costo miss = Costante + Costo proporzionale al block size

• La Costante modella i cicli spesi per inviare l’indirizzo e attivare la

DRAM

• Ci sono varie organizzazioni della memoria per diminuire il costo di

trasferimento di grandi blocchi di byte

• In conclusione

– Raddoppiando il block size non si raddoppia il miss penalty

• Allora, perché non si usano comunque blocchi grandi invece che

piccoli ?

– esiste un tradeoff !!! Portare in memoria un blocco grande, senza

usarlo completamente è uno spreco per l’utilizzo della cache

(conflitti con altri blocchi utilizzati)

Page 38: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 38

Aumento del block size

• Frequenza di miss in genere diminuisce all’aumentare della dimensione del

blocco vantaggio dovuto alla località spaziale !!

• Se il blocco diventa troppo grande rispetto al size della cache, i vantaggi della

località spaziale diminuiscono. Per cache piccole aumenta la frequenza di

miss a causa di conflitti (blocchi diversi caratterizzati dallo stesso INDEX)

aumenta la competizione nell’uso della cache !!

Page 39: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 39

Aumento del block size

• Nota che aumentando la dimensione del blocco, la riduzione più marcata, soprattutto per gcc, si ha per l’Instruction Miss Rate

– la località spaziale è maggiore per la lettura/fetch delle istruzioni

• Per blocchi di una sola parola

– write miss non conteggiati

Program

Block size in

words

Instruction

miss rate

Data miss

rate

Effective combined

miss rate

gcc 1 6.1% 2.1% 5.4%

4 2.0% 1.7% 1.9%

spice 1 1.2% 1.3% 1.2%

4 0.3% 0.6% 0.4%

Page 40: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 40

Prestazioni

• Modello semplificato:

CPU time = (execution cycles + stall cycles) cycle time

stall cycles = IC miss ratio miss penalty

• Il miss ratio/rate (ed anche gli stall cycles) possono essere distinti in

– instruction miss ratio (fetch istruzioni)

– write miss ratio (store)

– read miss ratio (load)

• Per il miss penalty possiamo semplificare, considerando un penalty unico per scritture/letture

• Per migliorare le prestazioni, dobbiamo

– diminuire il miss ratio e/o il miss penalty

• Cosa succede se aumentiamo il block size?diminuisce (per cache abbastanza grandi) il miss rate, ma aumenta (di poco)

il miss penalty

considerati assieme: data miss ratio

Page 41: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 41

Esempio (1)

• Conoscendo

miss penalty, instruction miss ratio, data miss ratio,

CPI ideale (senza considerare l’effetto della cache)

è possibile calcolare di quanto rallentiamo rispetto al caso ideale

(memoria ideale)

• In altri termini, è possibile riuscire a conoscere il CPI reale:

– CPIreale = CPIideale + cicli di stallo medi per istr.

dove i cicli di stallo sono dovuti ai miss (e alla penalty associata)

• Programma gcc:

– instr. miss ratio = 2%

– data miss ratio = 4%

– numero lw/sw = 36% IC

– CPIideal = 2

– miss penalty = 40 cicli

Page 42: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 42

Esempio (2)

• Cicli di stallo dovuti alle instruction miss

– (instr. miss ratio IC) miss penalty = (0.02 IC) 40 = 0.8 IC

• Cicli di stallo dovuti ai data miss

– (data miss ratio num. lw/sw) miss penalty =

(0.04 (0.36 IC)) 40 = 0.58 IC

• Cicli di stallo totali dovuti ai miss = 1.38 IC

• Cicli di stallo medi per istr. dovuti ai miss = 1.38 IC / IC = 1.38

• Numero di cicli totali:

– CPIideal IC + Cicli di stallo totali = 2 IC + 1.38 IC = 3.38 IC

• CPIreale = Numero di cicli totali / IC = (3.38 IC) / IC = 3.38

• CPIreale = CPI ideale + cicli di stallo medi per istr. = 2 + 1.38 = 3.38

• Per calcolare lo speedup basta confrontare i CPI, poiché IC e

Frequenza del clock sono uguali:

– Speedup = CPIreale / CPIideale = 3.38 / 2 = 1.69

Page 43: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 43

Considerazioni

• Se velocizzassi la CPU e lasciassi immutato il sottosistema di memoria?

– il tempo assoluto di penalty per risolvere il miss sarebbe lo stesso

• Posso velocizzare la CPU in 2 modi:

– cambio l’organizzazione interna

– aumento la frequenza di clock

• Se cambiassi l’organizzazione interna, diminuirebbe il CPIideale

– purtroppo miss rate e miss penalty rimarrebbero invariati, per cui

rimarrebbero invariati i cicli di stallo totali dovuti ai miss

• Se aumentassi la frequenza

– il CPIideale rimarrebbe invariato, ma aumenterebbero i cicli di stallo totali

dovuti ai miss aumenterebbe il CPIreale

– infatti, il penalty per risolvere i miss rimarrebbe lo stesso, ma il numero di

cicli risulterebbe maggiore perché i cicli sono più corti !!

Page 44: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 44

Diminuiamo i miss con l’associatività

• Diretta

– ogni blocco di memoria

associato con un solo

possibile blocco della

cache

– accesso sulla base

dall’indirizzo

• Completamente associativa

– ogni blocco di memoria

associato con un

qualsiasi blocco della

cache

– accesso non dipende

dall’indirizzo (bisogna

cercare in ogni blocco)

• Associativa su insiemi

– compromesso

Page 45: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 45

Set associative

• Per insiemi di 2/4/8/16 ... blocchi cache set-associative a 2/4/8/16 vie ...

• Cache diretta Cache set-associative a 1 via

• Nuova funzione di mappingBlock Address = Address / Block sizeCache block INDEX = Block Address % # set

• L’INDEX viene usato per determinare l’insieme (set)

• Dobbiamo controllare tutti i TAG associati ai vari blocchi del set per individuare il blocco

Funzione indipendentedal numero di elementi(blocchi) contenuti in

ogni set

Page 46: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 46

Cache associativa a 2 vie (blocchi di 2 B)

Cache

00

01

10

11

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

via 0

via 1Blocco = 2 B

log2 2 = 1 b

Byte offset del blocco

Da non considerare per ottenere il block address

# set = 4

Page 47: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 47

Scelta del blocco da sostituire

• In caso di miss, possiamo dover sostituire un blocco

• Cache diretta

– se il blocco corrispondente ad un certo INDEX è occupato (bit V=1), allora

dobbiamo rimpiazzare il blocco

– se il vecchio blocco è stato modificato e abbiamo usato politica di write-

back, dobbiamo aggiornare la memoria

• Cache associativa

– INDEX individua un insieme di blocchi

– se nell’insieme c’è un blocco libero, lo usiamo per risolvere il miss

– se tutti i blocchi sono occupati, dobbiamo scegliere il blocco da sostituire

per risolvere il miss

• sono possibili diverse politiche per il rimpiazzamento

– LRU (Least Recently Used) - necessari bit aggiuntivi per considerare quale

blocco è stato usato recentemente

– Casuale

Page 48: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 48

Un’implementazione (4-way set-associative)

• Nota

– i 4 comparatori

– il multiplexer

• Vantaggio

– minore miss

rate

• Svantaggio

– aumenta tempo

di hit

0000: miss

0001, 0010, 0100, oppure 1000: hit

Page 49: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 49

Esempio di cache diretta vs. associativa

• Compariamo diverse cache, tutte composte da 4 blocchi

1. Direct mapped

2. 2-way set associative,

3. Fully associative

• Sequenza di block address: 0, 8, 0, 6, 8

• Cache Set Index = block_address % #Sets

Direct mapped (4 set, ciascuno con un solo elemento):

Block

address

Cache

index

Hit/miss Cache content after access

0 1 2 3

0 0 miss Mem[0]

8 0 miss Mem[8]

0 0 miss Mem[0]

6 2 miss Mem[0] Mem[6]

8 0 miss Mem[8] Mem[6]

Page 50: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 50

Sequenza di block address: 0, 8, 0, 6, 8

2-way set associative (2 set, ciascuno 2 elementi):Block

address

Cache

index

Hit/miss Cache content after access

Set 0 Set 1

0 0 miss Mem[0]

8 0 miss Mem[0] Mem[8]

0 0 hit Mem[0] Mem[8]

6 0 miss Mem[0] Mem[6]

8 0 miss Mem[8] Mem[6]

Fully associative (1 set, di 8 elementi):Block

address

Hit/miss Cache content after access

0 miss Mem[0]

8 miss Mem[0] Mem[8]

0 hit Mem[0] Mem[8]

6 miss Mem[0] Mem[8] Mem[6]

8 hit Mem[0] Mem[8] Mem[6]

Esempio di cache diretta vs. associativa

Page 51: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 51

Associatività e miss rate

• Le curve a lato si

riferiscono a

– blocchi di 32 B

– benchmark

Spec92 interi

• Benefici maggiori

per cache piccole

– perché si partiva

da un miss rate

molto alto nel

caso diretto

(one-way)

Page 52: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 52

Memoria Principale e Miss penalty

• Si usa la DRAM per realizzare la main memory– Fixed width (es.: dato letto/scritto = 1 word)

– DRAM connessa alla cache da un bus clock-ato, anch’esso fixed-width (numero fisso di fili)

• Il clock del bus è tipicamente più lento di quello della CPU

• Esempio di una read di un blocco di cache da 1-word (bus width = 1 word) – 1 bus cycle: invio dell’address

– 15 bus cycles: DRAM access

– 1 bus cycle: data transfer

• Lettura di un blocco da 4-word:1-word-wide DRAM– Miss penalty = 1 + 4×15 + 4×1 = 65 bus cycles

– Bandwidth = 16 bytes / 65 cycles = 0.25 B/cycle

Page 53: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 53

Aumentare la DRAM Bandwidth e

diminuire la latenza

◼ 4-word wide memory◼ Miss penalty = 1 + 15 + 1 = 17 bus cycles

◼ Bandwidth = 16 bytes / 17 cycles = 0.94 B/cycle

◼ 4-bank interleaved memory (sempre con 1-word memories)◼ Miss penalty = 1 + 15 + 4×1 = 20 bus cycles

◼ Bandwidth = 16 bytes / 20 cycles = 0.8 B/cycle

Page 54: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 54

Organizzazioni DRAM avanzate (per diminuire la

latenza per blocchi grandi)

• I bits di una DRAM moderna sono organizzati come un array

rettangolare/bidimensionale row-major

– la DRAM accede un’intera riga (blocco)

– Burst mode: word successive che compongono la riga acceduta

sono prodotte in output con latenza ridotta, es., una word per cycle

• Double data rate (DDR) DRAM

– Capaci di trasferire sia quando il segnale di clock sale e sia

quando scende

• Quad data rate (QDR) DRAM

– Gli input e output della DDR sono separati, raddoppiando

ancora la capacità rispetto alla DDR

Page 55: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 55

Cache a più livelli

• CPU con

– cache di 1^ livello (L1), di solito sullo stesso chip del processore

– cache di 2^ livello (L2), interna/esterna al chip del processore, implementata con SRAM

– cache L2 serve a ridurre il miss penalty per la cache L1

• solo se il dato è presente in cache L2

CPU

Cache L1

Memoria Principale

CPU

Cache L1

Memoria Principale

Cache L2

Page 56: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 56

Cache a più livelli (esempio)

• CPI=1 su un processore a 500 MHz con cache unica (L1), con miss rate del 5%, e un tempo di accesso alla DRAM (miss penalty) di 200 ns (100 cicli)

– CPIL1 = CPI + 5% 100 = 1 + 5 = 6

• Cache L2 con tempo di accesso di 20 ns (10 cicli), il miss rate della cache L1 rispetto alla DRAM viene ridotto al 2%

– il miss penalty in questo caso aumenta (200 ns + 20 ns, ovvero 110 cicli)

– il restante 3% viene risolto dalla cache L2

• il miss penalty in questo caso è solo di 20 ns

– CPIL1+L2 = CPI + 3% 10 + 2% 110 = 1 + 0.3 + 2.2 = 3.5

• Speedup = CPIL1 / CPIL1+L2 = 6 / 3.5 = 1.7

CPU

Cache L1

Memoria Principale

CPU

Cache L1

Memoria Principale

Cache L2

2% miss

5% miss

3% miss

In totale, il miss rate della L1 rimane del 5%

Page 57: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 57

Cache a 2 livelli

• Cache L1: piccola e con blocchi piccoli, di solito con maggior grado di

associatività, il cui scopo è

– ottimizzare l’hit time per diminuire il periodo del ciclo di clock

• Cache L2: grande e con blocchi più grandi, con minor grado di

associatività, il cui scopo è

– ridurre il miss rate verso la DRAM (Memoria Principale)

– la maggior parte dei miss sono risolti dalla cache L2

Page 58: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 58

CPU avanzate e cache

• Le CPU out-of-order possono eseguire altre istruzioni durante i cache

miss, sovrapponendo calcolo utile all’attesa della memoria (penalty)

– le write/read pendenti sono allocate a speciali load/store unit

– le istruzioni dipendenti attendono nelle cosiddette “reservation

stations”

– le istruzioni indipendenti continuano l’esecuzione

• L’effetto delle miss sulle prestazioni dipendono da molti fattori

– E’ più difficile analizzare le prestazioni

– Non possiamo applicare formule analitiche, necessaria la

simulazione

Page 59: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 59

L’effetto del software sulle hit-rate della cache

• Il miss rate dipende dai

pattern di accesso alla

memoria dovuto

all’algoritmo

• Ottimizzazioni del

compilatore per migliorare i

pattern di accesso alla

memoria

Page 60: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 60

Memoria Virtuale

• Uso della memoria principale come una cache della memoria secondaria

(disco)

• I programmi sono compilati rispetto ad uno spazio di indirizzamento virtuale,

diverso da quello fisico

• Il processore, in cooperazione con il SO, effettua la traduzione

– indirizzo virtuale → indirizzo fisico

Page 61: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 61

Vantaggi della memoria virtuale

• Illusione di avere più memoria fisica di quella disponibile

– solo le parti attive dei programmi e dei dati, indirizzati rispetto ad uno

spazio virtuale, sono presenti in memoria fisica

– è possibile che più programmi, con codici e dati di dimensioni maggiori

della memoria fisica, possano essere in esecuzione

• Traduzione dinamica degli indirizzi

– i programmi, compilati rispetto a uno spazio virtuale, sono caricati in

memoria fisica on demand

– tutti i riferimenti alla memoria sono virtuali (fetch istruzioni, load/store), e

sono tradotti dinamicamente nei corrispondenti indirizzi fisici

• Il meccanismo di traduzione garantisce la protezione

– c’è la garanzia che gli spazi di indirizzamento virtuali di programmi diversi

siano effettivamente mappati su indirizzi fisici distinti

Page 62: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 62

Memoria virtuale paginata

• Oltre la paginazione, storicamente la memoria virtuale è stata anche implementata tramite segmentazione

– blocco di dimensione variabile

– Registri Relocation e Limit

– enfasi su protezione e condivisione

• Svantaggio: esplicita suddivisione dell’indirizzo virtuale in segment number + segment offset

Numero di pagine virtuali possono essere maggiori di quelle fisiche

Dimensione dell’Offset dipende dal page size:

log2(Page size)

Page 63: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 63

Page table, traduzione indirizzi, e associatività

• Page Table (PT) mantiene la corrispondenza tra pagine virtuale e fisica

• La PT di un programma in esecuzione (processo) sta in memoria:

– la PT è memorizzata ad un certo indirizzo fisico, determinato dal page table register

• Ogni pagina virtuale può corrispondere a qualsiasi pagina fisica (completa associatività)

- Trovare la pagina fisicacorrispodente è come individuare la via in una cache completamente associativa

Page 64: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 64

Pagine: sono i blocchi della memoria virtuale

• Page fault miss: la pagina non è in memoria, e deve essere letta dal disco

• Miss penalty grande (msec, milioni di cicli di clock)

– è utile che i blocchi (pagine) siano grandi (es.: 4KB)

– le letture da disco hanno un costo iniziale alto, dovuto a movimenti meccanici dei dispositivi

• Ridurre i page fault è quindi molto importante

– mapping dei blocchi (pagine) completamente associativo

– politica LRU, per evitare di eliminare dalla memoria pagine da riusare subito dopo, a causa della località degli accessi

• Miss (page fault) gestiti a software tramite l’intervento del SO

– algoritmi di mapping e rimpiazzamento più sofisticati

• Solo politica write-back (perché scrivere sul disco è costoso)

Page 65: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 65

Memoria paginata

• Al loading del processo, viene creato su disco l’immagine delle varie pagine del programma e dei dati

• Page table (o struttura corrispondente) usata anche per registrare gli indirizzi su disco delle pagine

– indirizzi su disco utilizzati dal SO per gestire il page fault, e il rimpiazzo delle pagine

Page 66: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 66

Approfondimenti

• Spesso, oltre al valid bit, sono aggiunti altri bit associati alla pagine– dirty bit

• serve a sapere se una pagina è stata modificata.

• Grazie a questo bit è possibile sapere se la pagina deve essere ricopiata sul livello di memoria inferiore (disco).

• Il bit è necessario in quanto usiamo una politica write-back

– reference bit

• serve a sapere se, in un certo lasso di tempo, una certa pagina è stata riferita.

• bit azzerato periodicamente, settato ogni volta che una pagina è riferita.

• Il reference bit è usato per implementare una politica di rimpiazzo delle pagine di tipo LRU (Least Recently Used)

Page 67: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 67

Approfondimenti

• La page table, per indirizzi virtuali grandi, diventa enorme

– supponiamo ad esempio di avere un ind. virtuale di 32 b, e pagine

di 4 KB. Allora il numero di pagina virtuale è di 20 b. La page table

ha quindi 220 entry. Se ogni entry fosse di 4 B, la dimensione totale

sarebbe:

222 B = 4 MB

– se ci fossero molti programmi in esecuzione, una gran quantità di

memoria sarebbe necessaria per memorizzare soltanto le varie

page table

• Esistono diversi metodi per ridurre la memoria usata per

memorizzare la PT

– i metodi fanno affidamento sull’osservazione che i programmi

(piccoli) usano solo una piccola parte della page table a loro

assegnata (es. meno di 220 pagine), e che c’è anche una certa

località nell’uso delle page table

– es.: page table paginate, page table a due livelli, ecc.…

Page 68: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 68

TLB: traduzione veloce degli indirizzi

• La TLB è in pratica una cache della page table, e quindi

conterrà solo alcune entry della page table (le ultime

riferite)

– a causa della località, i riferimenti ripetuti alla stessa

pagina sono molto frequenti

– il primo riferimento alla pagina (page hit) avrà bisogno

di leggere la page table. Le informazioni per la

traduzione verranno memorizzate nella TLB

– i riferimenti successivi alla stessa pagina potranno

essere risolti velocemente in hardware, usando solo la

TLB

Page 69: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 69

TLB

• Esempio di TLB completamente associativa

– in questo caso il TAG della TLB è proprio il numero di pagina virtuale da tradurre

– per ritrovare il numero di pagina fisica, bisogna confrontare il numero di pagina virtuale con tutti i TAG della TLB

• La TLB contiene solo entry che risultano anche Valid nella page table

– Se una pagina viena eliminata dalla memoria fisica, l’entry della TLB viene invalidata

• La TLB, come la cache, può essere implementata con vari livelli di associatività

Page 70: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 70

TLB e cache (FastMATH MIPS)

• TLB completamente

associativa

• Pagine da 4 KB

• Cache diretta,

acceduta con

l’indirizzo fisico

• Dimensione del

blocco della cache:

26 = 64 B

• I dati della cache

(blocchi) sono

memorizzati

separatamente da

Valid/Tag

Page 71: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 71

TLB e cache (FastMATH MIPS)

• Gestione letture/scritture

– TLB hit e miss

– cache hit e miss

• Nota i cicli di stallo in caso di cache miss

• Nota la cache con politica write-through

• Nota le eccezioni

– TLB miss

– write protection(usato come trucco per aggiornare i bit di dirty sulla page table)

Page 72: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 72

Modello di classificazione dei miss

• Nelle varie gerarchie di memoria, i miss si possono verificare per cause

diverse

– modello delle tre C per classificare i miss

• Ci riferiremo al livello cache, anche se il modello si applica anche agli altri

livelli della gerarchia

• Tipi di miss

– Miss Certi (Compulsory)

• miss di partenza a freddo, che si verifica quando il blocco deve essere portato

nella cache per la prima volta

– Miss per Capacità

• la cache non è in grado di contenere tutti i blocchi necessari all’esecuzione del

programma. Si verifica quando un blocco vien espulso e subito dopo

riammesso nella cache.

– Miss per Conflitti/Collisioni

• due blocchi sono in conflitto per una certa posizione

• può verificarsi anche se la cache NON è piena

• questo tipo di miss non si verifica se abbiamo una cache completamente

associativa

Page 73: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 73

Modello di classificazione dei miss

• SPEC CPU2000 integer/floating-point benchmarks

• Compulsory non sono visibili (solo lo 0.006%)

• Il miss rate di capacità: dipende dal cache size, ed è presente anche in cache

completamente associative

• Miss classificati come conflitti se non si verificano nella cache completamante

associativa

Page 74: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 74

Sistema Operativo (SO) e gestione della memoria

• Per quanto riguarda la memoria virtuale, il SO viene invocato per

gestire due tipi di eccezioni

– TLB miss (anche se la TLB miss può essere gestita in hardware)

– page fault

• In risposta ad un’eccezione/interruzione

– il processore salta alla routine di gestione del SO

– effettua anche un passaggio di modalità di esecuzione

user mode → kernel (supervisor) mode

Page 75: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 75

SO e gestione della memoria

• Alcune operazioni possono essere solo effettuate dal SO che esegue

in kernel mode PROTEZIONE ESECUZIONE PROGRAMMI.

• Un programma in user mode:

– Non può modificare il PT register

– Non può modificare le entry della TLB

– Non può settare direttamente il bit che fissa l’execution mode

– Esistono istruzioni speciali, eseguibili SOLO in kernel mode, per

effettuare le operazioni di cui sopra

• Nota che un processo che sta eseguendo in user mode può passare volontariamente in kernel mode SOLO invocando una syscall

– le routine corrispondenti alle varie syscall (chiamate di sistema)

sono prefissate, e fanno parte del SO (l’utente non può crearsi da

solo una sua syscall e invocarla)

Page 76: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 76

SO e gestione della memoria

• solo TLB miss

– la pagina è presente in memoria

– l’eccezione può essere risolta tramite la page table

– l’istruzione che ha provocato l’eccezione deve essere

rieseguita

Page 77: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 77

SO e gestione della memoria

• TLB miss che si trasforma in page fault

– la pagina non è presente in memoria, cioè l’ingresso

corrispondente della PT è INVALID

– la pagina deve essere portata in memoria dal disco

• operazione di I/O dell’ordine di ms

• è impensabile che la CPU rimanga in stallo, attendendo che il page

fault venga risolto

– context switch

• salvataggio dello stato (contesto) del programma (processo) in

esecuzione

– fanno ad esempio parte dello stato i registri generali, e quelli speciali

come il registro della page table

– processo che ha provocato il fault diventa bloccato

• ripristino dello stato di un altro processo pronto per essere eseguito

• restart del nuovo processo

– completamento page fault

• processo bloccato diventa pronto, ed eventualmente riprende

l’esecuzione

Page 78: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 78

SO e gestione della memoria

• Page fault e rimpiazzamento di una pagina

– se la memoria fisica è (completamente o quasi) piena, bisogna

risolvere il fault rimpiazzando una pagina

• es. usando una politica LRU

– la pagina deve anche essere scritta in memoria secondaria se dirty

(write-back)

– poiché in questo caso modifichiamo una entry della page table, se

questa entry è cached nella TLB, bisogna anche ripulire la TLB

• Protezione

– il meccanismo della memoria virtuale impedisce a ciascun

processo di accedere porzioni di memoria fisica allocata a processi

diversi

– TLB e PT non possono essere modificate da un processo in

esecuzione in modalità utente

• possono essere modificate solo se il processore è in stato kernel

• ovvero solo dal SO

Page 79: Nessun titolo diapositivaarchitet/lezioni/mod2/Mod2_05_gerachie-mem.pdf · Arch. Elab. - S. Orlando 5 Costi e capacità delle memorie • Dati 2008 – SRAM • latenze di accesso

Arch. Elab. - S. Orlando 79

Casi di studio

• Gerachie di memoria: Intel Pentium Pro e IBM PowerPC 604

Characteristic Intel Pentium Pro PowerPC 604

Virtual address 32 bits 52 bits

Physical address 32 bits 32 bits

Page size 4 KB, 4 MB 4 KB, selectable, and 256 MB

TLB organization A TLB for instructions and a TLB for data A TLB for instructions and a TLB for data

Both four-way set associative Both two-way set associative

Pseudo-LRU replacement LRU replacement

Instruction TLB: 32 entries Instruction TLB: 128 entries

Data TLB: 64 entries Data TLB: 128 entries

TLB misses handled in hardware TLB misses handled in hardware

Characteristic Intel Pentium Pro PowerPC 604

Cache organization Split instruction and data caches Split instruction and data caches

Cache size 8 KB each for instructions/data 16 KB each for instructions/data

Cache associativity Four-way set associative Four-way set associative

Replacement Approximated LRU replacement LRU replacement

Block size 32 bytes 32 bytes

Write policy Write-back Write-back or write-through