Esempio MIPS 32 bit - High Performance Computing...

25
Esempio MIPS 32 bit Indirizzo su 32 byte Cache ad accessi diretto Dimensioni della cache 2 n blocchi, di cui n bit usati per l’indice dimensione del blocco di cache 2 m parole ossia 2 m+2 byte In questo caso la dimensione del tag è data da 32 – (n + m + 2) Numero totale bit nella cache: 2 n x (dim. blocco + dim. tag + valid bit) Per convenzione si considera solo la dimensione del blocco.

Transcript of Esempio MIPS 32 bit - High Performance Computing...

Page 1: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Esempio MIPS 32 bit• Indirizzo su 32 byte • Cache ad accessi diretto • Dimensioni della cache 2n blocchi, di cui n bit usati per

l’indice • dimensione del blocco di cache 2m parole ossia 2m+2

byte • In questo caso la dimensione del tag è data da 32 – (n

+ m + 2) • Numero totale bit nella cache:

2n x (dim. blocco + dim. tag + valid bit) • Per convenzione si considera solo la dimensione del

blocco.

Page 2: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

4KB Cache

Page 3: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Esercizio• Si consideri una cache con 64 blocchi di 16 byte ciascuno.

A quale numero di blocco corrisponde l’indirizzo 1200

espresso in byte?

• Blocco identificato da:

(indirizzo blocco) modulo (numero blocchi in cache)

(indirizzo blocco) = (indirizzo dato in byte) / (byte per blocco)

• Quindi l’indirizzo del blocco è 1200/16 = 75

• Blocco contente il dato è 75 modulo 64 = 11

Page 4: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Dimensione del blocco• Dimensioni di linea di cache molto grandi esaltano la

località spaziale e da questo punto di vista diminuiscono le

probabilità di miss

• Tuttavia avere pochi blocchi diminuisce l’efficacia nello

sfruttamento della località temporale

• Inoltre avere dei miss con blocchi grandi porta a un costo di

gestione alto (bisogna spostare molti byte)

• Quindi abbiamo un tradeoff

Page 5: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Tradeoff

Page 6: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Gestione delle miss• La Parte di Controllo deve rilevare le miss e portare in

cache i dati contenuti nella memoria indirizzata

• Hit in lettura (conseguenza di i-fetch e load) • accesso alla memoria con il massimo della velocità

• Miss in lettura (conseguenza di i-fetch e load) • La Parte di Controllo mette in stallo la CPU (cicli di attesa,

con registri interni immutati), finché la lettura del blocco (dalla memoria in cache) viene completata • Instruction cache miss: si ripete il fetch dell’istruzione • Data cache miss: si completa l’accesso al dato

dell’istruzione (load)

Page 7: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Gestione delle miss• Hit in scrittura (solo conseguenza di store)

• write-through: scrive sulla cache e in memoria (con buffer di scrittura)

• write-back: scrive solo sulla cache, e segnala che il blocco è stato modificato (setting del bit di Dirty)

• Miss in scrittura (solo 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 in memoria

Page 8: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Esempio FastMATH Intrinsity

• Split cache • 256 blocchi • 16 word per blocco • write-through e write-

back • I miss rate: 0.4 % • D miss rate: 11.4 % • Total miss rate: 3.2 %

Page 9: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Prestazioni delle cache• Tempo di CPU: somma di

• (Cicli di esecuzione CPU) x (periodo di clock) • (Cicli di stallo causati dalla memoria) x (periodo di

clock) • Costo di hit trascurabile • Cicli di stallo in memoria causati da cache miss

(semplificazione); somma di: • cicli di stallo in lettura • cicli di stallo in scrittura

Page 10: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Prestazioni delle cache• Cicli di stallo in lettura:

(# letture/programma) x (frequenza miss in lettura) x

(penalità miss in lettura) • Cicli di stallo in scrittura (write-through):

(# scritture/programma) x (frequenza miss in scrittura) x (penalità miss in scrittura) +

# stalli buffer di scrittura • Gli stalli del buffer in scrittura avvengono quando è pieno, ma

se è abbastanza profondo, hanno un costo trascurabile. • Nel write-back dobbiamo includere anche il costo di scrivere il

blocco di cache nella memoria principale

Page 11: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Prestazioni delle cache• Nelle cache write-through spesso si ha:

(penalità miss in lettura) = (penalità miss in scrittura) • Pari al tempo necessario per prelevare un blocco dalla

memoria principale • Cicli di stallo in scrittura:

(# accessi memoria/programma) x (frequenza miss) x (penalità miss)

= (istruzioni/programma) x (miss/istruzioni) x (penalità miss)

Page 12: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Esercizio• Cache istruzioni con 2% di frequenza di miss • Cache dati con 4% di frequenza di miss • Processore con 2 CPI in assenza di stalli di memoria • Penalità di miss di 100 cicli di clock • Istruzioni LOAD e STORE pari al 36% delle istruzioni I dei

programmi

• Quando sarebbe più veloce il processore se dotato di una cache perfetta ideale che non provochi mai miss?

• Cicli di miss per istruzioni = I x 2% x 100 • Cicli di miss per dati = I x 36% x 4% x 100

Page 13: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Esercizio• Cicli di miss per istruzioni = 2.00 x I • Cicli di miss per dati = 1.44 x I

• CPImiss = 3.44 x I • CPInormale = 2 x I • CPIstallo = 5.44 x I

TCPUstallo/TCPUideale = CPIstallo / CPInormale =

5.44 / 2 = 2.72

Page 14: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Cache Full Associative• Le cache ad accesso diretto sono piuttosto semplici da realizzare

• Tuttavia hanno un problema: se ho spesso bisogno di locazioni di memoria che si mappano sullo stesso blocco, ho cache miss in continuazione

• All’estremo opposto ho una cache completamente associativa • Posso mappare qualsiasi blocco in qualsiasi blocco di cache

• Il problema per le cache full associave è che devo cercare ovunque il dato (il tag è tutto l’indirizzo del blocco)

• Per effettuare la ricerca in maniera efficiente, devo farla su tutti i blocchi in parallelo

• Per questo motivo ho bisogno di n comparatori (uno per ogni blocco di cache che operino in parallelo)

• Il costo hardware è così alto che si può fare solo per piccole cache

Page 15: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Cache Set Associative• Le cache set associative sono un via di mezzo tra

l’accesso diretto e la completamente associativa • In pratica ogni blocco può essere mappato su n > 1

blocchi diversi (vie) • Quindi combiniamo due idee

1. associamo ciascun blocco a una linea (una degli n blocchi su cui possiamo mappare il blocco)

2. All’interno della linea effettuiamo una ricerca parallela come se avessimo una cache completamente associativa

Page 16: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Mappatura del blocco• In una cache ad accesso diretto il blocco viene mappato

nel blocco dato da: tag blocco = (indirizzo blocco) modulo (numero di blocchi)

• In una cache set associative la linea che contiene il blocco viene individuata da:

tag linea = (indirizzo blocco) modulo (numero di linee) • Per trovare il blocco all’interno della linea dobbiamo

confrontare il tag con tutti i tag dei blocchi della linea

Page 17: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Esempio

• Mappatura diretta: tag blocco = 12 modulo 8 = 4, il blocco 12 è in posizione 4 • Mappatura associativa a 2 vie: tag linea = 12 modulo 4 = 0, il blocco 12 è in

posizione 0 o 1 • Mappatura completamente associativa: il blocco 12 è in posizione 0, 1, 2, …, 11

Page 18: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Configurazioni per cache a 8 blocchi

Page 19: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Confronto: cache ad accesso diretto• Cache a 4 blocchi • Determinare il numero di miss per gli indirizzi: 0, 8, 0, 6, 8

• 5 miss per 5 accessi

Page 20: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Confronto: cache associativa a 2 vie

• 4 miss per 5 accessi

• Cache a 4 blocchi • Determinare il numero di miss per gli indirizzi: 0, 8, 0, 6, 8

• Rimpiazzamento del blocco usato meno di recente:

Page 21: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Confronto: cache full associative

• 3 miss per 5 accessi

• Cache a 4 blocchi • Determinare il numero di miss per gli indirizzi: 0, 8, 0, 6, 8

Page 22: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

• Aumentando l’associatività: • Vantaggi: minor frequenza di miss • Svantaggi: complessità

• La scelta dipende da questo tradeoff

Vantaggi dell’associatività

Page 23: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Esempio cache a 4 vie

Page 24: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Sostituzione blocchi• Nelle cache ad accesso diretto quando ho una cache

miss sicuramente so chi sostituire (l’unico blocco in cui posso mapparmi)

• Nelle cache associative ho più scelte. Se la linea è piena chi sostituisco?

• Politiche di rimpiazzamento (eviction policies) • First In First Out (FIFO) • Least Recently Used (LRU)

Page 25: Esempio MIPS 32 bit - High Performance Computing Labpomino.isti.cnr.it/~khast/wp-content/uploads/2016/05/TLC... · 2016-05-11 · Esempio MIPS 32 bit ... • Quando sarebbe più veloce

Impatto delle gerarchie di memoria