La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Arch. Elab. - S. Orlando 1 Gerarchie di memoria Salvatore Orlando."— Transcript della presentazione:

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

2 Arch. Elab. - S. Orlando 2 Gerarchie di memoria I programmatori hanno lesigenza 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 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

3 Arch. Elab. - S. Orlando 3 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 lillusione di avere a disposizione una memoria grande (come al livello n) e veloce (come al livello 1)

4 Arch. Elab. - S. Orlando 4 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 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 limmagine (text/data) dei programmi in esecuzione => memoria (principale) virtuale

5 Arch. Elab. - S. Orlando 5 Illusione = memoria grande e veloce !? Allinizio i nostri dati e i nostri programmi sono memorizzati nel livello n (mem. più capiente e lenta) I blocchi di memoria man mano riferiti vengono fatti fluire verso –i livelli più alti (memorie più piccole e veloci), più vicini alla CPU Problema: –Cosa succede se un blocco riferito è già presente nel livello 1 (più alto) ? –La CPU può accedervi direttamente, ma abbiamo bisogno di un meccanismo per trovare il blocco allinterno del livello 1 ! Problema: –Cosa succede se i livelli più alti sono pieni ? –Dobbiamo implementare una politica di rimpiazzo dei blocchi !

6 Arch. Elab. - S. Orlando 6 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 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

7 Arch. Elab. - S. Orlando 7 Località Lillusione 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 (relativamente piccola) porzione 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 Indirizzamento 02 n - 1 Probabilità di riferimento

8 Arch. Elab. - S. Orlando 8 Cache E il livello di memoria (SRAM) più vicino alla CPU (oltre ai Registri) Control Datapath Secondary Storage (Disk) Processor Registers Main Memory (DRAM) Second Level Cache (SRAM) On-Chip Cache 1 10,000,000 ( 10 ms) Speed (ns): G Size (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

9 Arch. Elab. - S. Orlando 9 Cache e Trend tecnologici delle memorie CapacitàVelocità (riduz. latenza) Logica digitale:2x in 3 anni2x in 3 anni DRAM:4x in 3 anni2x in 10 anni Dischi:4x in 3 anni2x in 10 anni AnnoSize$ per MBLatenza accesso Kb ns Kb ns Mb ns Mb50110 ns Mb1590 ns Mb1060 ns Mb460 ns Mb155 ns Mb0,2550 ns Mb0,1045 ns 1000:1 5:1

10 Arch. Elab. - S. Orlando 10 Accesso alla memoria = Von Neumann bottleneck 10 DRAM CPU Performance (1/latency) Processor-Memory Performance Gap: (cresce del 50% / year) The power wall CPU 60% per yr 2X in 1.5 yrs DRAM 9% per yr 2X in 10 yrs DRAM Year Processor-DRAM Memory: Performance Gap

11 Arch. Elab. - S. Orlando : DRAM più veloce del microprocessore Apple ][ (1977) Steve Wozniak Steve Jobs CPU: 1000 ns DRAM: 400 ns

12 Arch. Elab. - S. Orlando 12 Gerarchie di Memoria nel 2005: Apple iMac G5 iMac G5 1.6 GHz $ Reg L1 InstL1 DataL2DRAMDisk Size 1K 64K32K512K256M80G Latency (cycles) e7 Managed by compiler Managed by hardware Managed by OS, hardware, application

13 Arch. Elab. - S. Orlando 13 Cache Luso 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 dallhardware

14 Arch. Elab. - S. Orlando 14 Progetto di un sistema di cache CPU cache DRAM Memoria Sequenza di riferimenti alla memoria:,,,,... op: i-fetch, read (load), write (store) Obiettivo del progettista: Ottimizzare lorganizzazione della 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

15 Arch. Elab. - S. Orlando 15 Problemi di progetto di una cache Dimensionamenti –size del blocco e numero di blocchi nella cache Problemi: –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 Un problema da affrontare è costituito dai conflitti nelluso della cache –se il blocco di dati 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? –Dipende se è il blocco in cache è stato modificato –Coerenza tra i livelli di memoria Write through (scrivo sia in cache che in memoria) Write back (scrivo in memoria solo quando il blocco in cache deve essere rimpiazzato)

16 Arch. Elab. - S. Orlando 16 Caso semplice: cache ad accesso diretto Mapping tramite funzione hash (modulo) dellindirizzo ( Address ): – Cache block INDEX =Address mod # cache blocks = resto divisione: Address / #cache blocks # cache blocks = 8 = 2 3 block size = 1 B Considerando rappresentazione binaria di Address: poiché # cache blocks è una potenza di 2 (2 3 ), allora Cache block Index corrisponde ai 3 bit meno significativi di Address No. bit INDEX = log (# cache blocks)

17 Arch. Elab. - S. Orlando 17 Caso semplice: cache ad accesso diretto Funzione hash: – Cache block INDEX =Address % # cache blocks = resto divisione: Address / #cache blocks # cache blocks = 2 i block size = 1 B Considerando rappresentazione binaria di Address: Quoziente = Address / #cache blocks = Address / 2 i = Address >> i n-i bit più significativi di Address Resto = Address % #cache blocks = Address & i bit i bit meno significativi di Address Prova: Address = Quoziente * 2 i + Resto = Quoziente << i + Resto QuozienteResto Address n-i bit i bit INDEX

18 Arch. Elab. - S. Orlando 18 Cache diretta e blocchi più grandi Per block size > 1B: –Address diversi (che differiscono per i bit meno significativi) possono cadere allinterno 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 = log 2 (Block size) –Questi n bit meno significativi dellAddress costituiscono il byte offset del blocco Nuova funzione di Mapping : Block Address = Address / Block size Cache block INDEX = Block Address % # cache blocks

19 Arch. Elab. - S. Orlando 19 Esempio di cache diretta con blocchi di 2 B Cache Blocco = 2 B log 2 2 = 1 b Byte offset del blocco Da non considerare per ottenere il block address

20 Arch. Elab. - S. Orlando 20 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 delladdress –Chiamiamo questi bit Tag 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

21 Arch. Elab. - S. Orlando 21 Cache ad accesso diretto (vecchio MIPS) Byte OFFSET –n = log 2 (Block size) = log 2 (4) = 2 b INDEX –corrisponde a log 2 (# blocchi cache)= log 2 (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 dellAddress, da memorizzare in cache assieme al blocco –TAG = N bit addr. – INDEX – OFFSET = =20 b –permette di risalire allAddress originale del blocco memorizzato Valid –il blocco è presente Write through (Nota: solo bit di Valid)

22 Arch. Elab. - S. Orlando 22 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 = log 2 16 = 4) suddiviso in due parti Block offset (2 b) : seleziona word Byte offset (2 b) : seleziona byte

23 Arch. Elab. - S. Orlando 23 Esempio Cache con 64 blocchi Blocchi di 16B Se lindirizzo è di 27 bit, comè composto? –INDEX deve essere in grado di indirizzare 64 blocchi: SIZE INDEX = log 2 (64)=6 –BLOCK OFFSET (non distinguiamo tra byte e block offset) deve essere in grado di indirizzare 16B: SIZE BLOCK OFFSET = log 2 (16)=4 –TAG corrisponde ai rimanenti bit (alti) dellindirizzo: SIZE TAG = 27- SIZE INDEX - SIZE OFFSET = 17 Qual è il blocco (INDEX) che contiene il byte allindirizzo 1201 ? –Trasformo lindirizzo al Byte nellindirizzo al blocco: 1201/16 = 75 –Loffset allinterno del blocco è: 1201 % 16 = 1 –Lindex viene determinato con loperazione di modulo: 75 % 64 = 11 il blocco è il 12 o (INDEX=11), il byte del blocco è il 2 o (OFFSET=1) TAGINDEX 1764

24 Arch. Elab. - S. Orlando 24 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 –Instruction cache miss Ripeti il fetch dellistruzione –Data cache miss Completa laccesso al dato dellistruzione (load)

25 Arch. Elab. - S. Orlando 25 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 del bit di Dirty) Write Miss (solo come conseguenza di store) –con politica write-back, stallo della CPU (cicli di attesa), lettura del blocco dalla memoria in cache, completamento dellistruzione di store –con politica write-through, non cè bisogno di ricopiare il blocco in cache prima di effettuare la scrittura

26 Arch. Elab. - S. Orlando 26 Esempio di funzionamento Si consideri una cache diretta, e si assuma che lindirizzo 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) VALIDTAGDATA CPU cache Memoria flusso di r/w address miss

27 Arch. Elab. - S. Orlando 27 Esempio di funzionamento Flusso di accessi r/w: indirizzi di memoria a 24 b VALIDTAGDATA AB0xxxxxxxxxxxxxxxxxxxxxxxx x 1AB090: TAG: 1AB0 IND: 9 OFF: 0 miss

28 Arch. Elab. - S. Orlando 28 Esempio di funzionamento Flusso di accessi r/w: indirizzi di memoria a 24 b VALIDTAGDATA AB0xxxxxxxxxxxxxxxxxxxxxxxx x 1AB090: TAG: 1AB0 IND: 9 OFF: 0 miss x 2AB090: TAG: 2AB0 IND: 9 OFF: 0 conflitto e miss conflitto

29 Arch. Elab. - S. Orlando 29 Esempio di funzionamento Flusso di accessi r/w: indirizzi di memoria a 24 b VALIDTAGDATA AB0YYYYYYYYYYYYYYYYYY x 1AB090: TAG: 1AB0 IND: 9 OFF: 0 miss x 2AB090: TAG: 2AB0 IND: 9 OFF: 0 conflitto e miss

30 Arch. Elab. - S. Orlando 30 Esempio di funzionamento Flusso di accessi r/w: indirizzi di memoria a 24 b VALIDTAGDATA AB0xxxxxxxxxxxxxxxxxxxxxxxx x 1AB090: TAG: 1AB0 IND: 9 OFF: 0 miss x 2AB090: TAG: 2AB0 IND: 9 OFF: 0 conflitto e miss 0x 1AB094: TAG: 1AB0 IND: 9 OFF: 4 conflitto e miss

31 Arch. Elab. - S. Orlando 31 Esempio di funzionamento Flusso di accessi r/w: indirizzi di memoria a 24 b VALIDTAGDATA AB0xxxxxxxxxxxxxxxxxxxxxxxx x 1AB090: TAG: 1AB0 IND: 9 OFF: 0 miss x 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

32 Arch. Elab. - S. Orlando 32 Esempio di funzionamento Flusso di accessi r/w: indirizzi di memoria a 24 b VALIDTAGDATA zzzzzzzzzzzzzzzzzzzzzzzzz AB0xxxxxxxxxxxxxxxxxxxxxxxx x 1AB090: TAG: 1AB0 IND: 9 OFF: 0 miss x 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 : TAG: 1220 IND: 1 OFF: 0 miss

33 Arch. Elab. - S. Orlando 33 Ottimizzazioni Le write possono porre problemi, soprattutto con politica write through –Le write diventano infatti più lunghe –Esempio: di base abbiamo che: CPI = 1 se il 10% delle istruzioni sono store, e ogni accesso alla memoria costa 100 cicli: CPI = × 100 = 11 Soluzione: –Write buffer come memoria tampone 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

34 Arch. Elab. - S. Orlando 34 Ottimizzazioni Write miss –Se il blocco da scrivere tramite una sw è di 4B (ovvero, il blocco viene riscritto completamente), in caso di write miss non è necessario ricopiare il blocco dalla memoria in cache –riscriviamo direttamente il nuovo blocco in memoria senza toccare la cache, con lausilio del Write buffer per nascondere la latenza –questo vale anche sia nel caso di write-back e write-through –NOTA: la dimensione dei blocchi della cache è attualmente maggiore di una word (4 B). In questo caso, con politica write- back, come conseguenza di un write-miss il blocco viene prima ricopiato in cache (lettura), e successivamente modificato parzialmente

35 Arch. Elab. - S. Orlando 35 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 lindirizzo e attivare la DRAM Ci sono varie organizzazioni della memoria per diminuire il costo di trasferimento di blocchi grandi di byte In conclusione –Raddoppiando il block size non viene raddoppiato il miss penalty Allora, perché non si usano comunque blocchi grandi invece che piccoli ? –esiste un tradeoff !!

36 Arch. Elab. - S. Orlando 36 Aumento del block size Frequenza di miss in genere diminuisce allaumentare della dimensione del blocco vantaggio dovuto alla località spaziale !! Se il blocco diventa troppo grande, i vantaggi della località spaziale diminuiscono, e per cache piccole aumenta la frequenza di miss a causa di conflitti (blocchi diversi caratterizzati dallo stesso INDEX) aumenta la competizione nelluso della cache !!

37 Arch. Elab. - S. Orlando 37 Aumento del block size Nota che aumentando la dimensione del blocco, la riduzione più marcata, soprattutto per gcc, si ha per lInstruction Miss Rate –la località spaziale è maggiore per la lettura/fetch delle istruzioni Per blocchi di una sola parola –write miss non conteggiati

38 Arch. Elab. - S. Orlando 38 Prestazioni Modello semplificato: CPU time = (execution cycles + stall cycles) cycle time stall cycles = IC miss ratio miss penalty Il miss ratio (ed anche gli stall cycles) possono essere distinti in –instruction miss ratio (lettura 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

39 Arch. Elab. - S. Orlando 39 Esempio (1) Conoscendo miss penalty, instruction miss ratio, data miss ratio, CPI ideale (senza considerare leffetto della cache) è possibile calcolare di quanto rallentiamo rispetto al caso ideale (memoria ideale) In altri termini, è possibile riuscire a conoscere il CPI reale: –CPI actual = CPI ideale + cycle/istr dovuti agli stalli Programma gcc : –instr. miss ratio = 2% –data miss ratio = 4% –numero lw/sw = 36% IC –CPI ideal = 2 –miss penalty = 40 cicli

40 Arch. Elab. - S. Orlando 40 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 Numero di cicli totali: –CPI ideal IC + Cicli di stallo totali = 2 IC IC = 3.38 IC CPI actual = Numero di cicli totali / IC = (3.38 IC) / IC = 3.38 Per calcolare lo speedup basta confrontare i CPI, poiché IC e Frequenza del clock sono uguali: –Speedup = CPI actual / CPI ideal = 3.38 / 2 = 1.69

41 Arch. Elab. - S. Orlando 41 Considerazioni Cosa succede se velocizzo la CPU e lascio immutato il sottosistema di memoria? –il tempo per risolvere i miss è lo stesso –se ragioniamo in percentuale rispetto al CPI ideale, questo tempo aumenta !! Posso velocizzare la CPU in 2 modi: –cambio lorganizzazione interna –aumento la frequenza di clock Se cambio lorganizzazione interna, diminuisco il CPI ideal –purtroppo miss rate e miss penalty rimangono invariati, per cui rimangono invariati i cicli di stallo totali dovuti ai miss Se aumento la frequenza –il CPI ideal rimane invariato, ma aumentano i cicli di stallo totali dovuti ai miss aumenta CPI actual –infatti, il tempo per risolvere i miss è lo stesso, ma il numero di cicli risulta maggiore perché i cicli sono più corti !!

42 Arch. Elab. - S. Orlando 42 Diminuiamo i miss con lassociatività Diretta –ogni blocco di memoria associato con un solo possibile blocco della cache –accesso sulla base dallindirizzo Completamente associativa –ogni blocco di memoria associato con un qualsiasi blocco della cache –accesso non dipende dallindirizzo (bisogna cercare in ogni blocco) Associativa su insiemi –compromesso

43 Arch. Elab. - S. Orlando 43 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 mapping Block Address = Address / Block size Cache block INDEX = Block Address % # set LINDEX viene usato per determinare linsieme. Dobbiamo controllare tutti i TAG associati ai vari blocchi del set per individuare il blocco

44 Arch. Elab. - S. Orlando 44 Cache associativa a 2 vie (blocchi di 2 B) Cache via 0 via 1 Blocco = 2 B log 2 2 = 1 b Byte offset del blocco Da non considerare per ottenere il block address

45 Arch. Elab. - S. Orlando 45 Scelta del blocco da sostituire In caso di miss, possiamo trovarci nella condizione di 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 nellinsieme cè un blocco libero, non cè problema –se tutti i blocchi sono occupati, dobbiamo scegliere il blocco da sostituire sono possibili diverse politiche per il rimpiazzamento –LRU (Least Recently Used) - necessari bit aggiuntivi per considerare quale blocco è stato usato recentemente –Casuale

46 Arch. Elab. - S. Orlando 46 Unimplementazione (4-way set-associative) Nota –i comparatori –il multiplexer Vantaggio –minore miss rate Svantaggio –aumenta tempo di hit

47 Arch. Elab. - S. Orlando 47 Esempio di cache diretta vs. associativa Compariamo cache con 4 blocchi –Direct mapped, 2-way set associative, fully associative –Sequenza di block address: 0, 8, 0, 6, 8 Direct mapped: Block address Cache index Hit/missCache content after access missMem[0] 80missMem[8] 00missMem[0] 62missMem[0]Mem[6] 80missMem[8]Mem[6]

48 Arch. Elab. - S. Orlando 48 2-way set associative: Block address Cache index Hit/missCache content after access Set 0Set 1 00missMem[0] 80missMem[0]Mem[8] 00hitMem[0]Mem[8] 60missMem[0]Mem[6] 80missMem[8]Mem[6] Fully associative: Block address Hit/missCache content after access 0missMem[0] 8missMem[0]Mem[8] 0hitMem[0]Mem[8] 6missMem[0]Mem[8]Mem[6] 8hitMem[0]Mem[8]Mem[6] Esempio di cache diretta vs. associativa

49 Arch. Elab. - S. Orlando 49 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

50 Arch. Elab. - S. Orlando 50 Memoria Principale e Caches 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, anchesso 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 –1 bus cycle: invio delladdress –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

51 Arch. Elab. - S. Orlando 51 Aumentare la DRAM Bandwidth 4-word wide memory Miss penalty = = 17 bus cycles Bandwidth = 16 bytes / 17 cycles = 0.94 B/cycle 4-bank interleaved memory (sempre con 1-word memories) Miss penalty = ×1 = 20 bus cycles Bandwidth = 16 bytes / 20 cycles = 0.8 B/cycle

52 Arch. Elab. - S. Orlando 52 Organizzazioni DRAM avanzate I bits di una DRAM moderna sono organizzati come un array rettangolare/bidimensionale –la DRAM accede unintera riga –Burst mode: le word successive di una riga prodotte 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

53 Arch. Elab. - S. Orlando 53 Cache a più livelli CPU con –cache di 1^ livello (L1), di solito sullo stesso chip del processore –cache di 2^ livello (L2), esterno/interno al chip del processore, implementato con SRAM –cache L2 serve a ridurre il miss penalty per la cache L1 solo se il dato è presente in cache L2 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) CPI L1 = CPI + 5% 100 = = 6 –Aggiungendo una 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 CPI L1+L2 = CPI + 3% % 110 = = 3.5 –Speedup = CPI L1 / CPI L1+L2 = 6 / 3.5 = 1.7

54 Arch. Elab. - S. Orlando 54 Cache a 2 livelli Cache L1: piccola e con blocchi piccoli, di solito con maggior grado di associatività, il cui scopo è –ottimizzare lhit 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 (rispetto ai miss che devono accedere la DRAM) –la maggior parte dei miss sono risolti dalla cache L2

55 Arch. Elab. - S. Orlando 55 CPU avanzate e cache Le CPU out-of-order possono eseguire altre istruzioni durante i cache miss, sovrapponendo calcolo utile allattesa 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 lesecuzione Leffetto delle miss sulle prestazioni dipendono da molti fattori –E più difficile analizzare le prestazioni –Non possiamo applicare formule analitiche, necessaria la simulazione

56 Arch. Elab. - S. Orlando 56 Leffetto del software sulle hit-rate della cache Il miss rate dipende dai pattern di accesso alla memoria dovuto allalgoritmo Ottimizzazioni del compilatore per migliorare i pattern di accesso alla memoria

57 Arch. Elab. - S. Orlando 57 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

58 Arch. Elab. - S. Orlando 58 Vantaggi della memoria virtuale Illusione di avere più memoria fisica di quella disponibile –solo le parti attive dei programmi sono presenti in memoria –è possibile tenere in memoria ed eseguire più programmi, con codici e dati di dimensioni maggiori della memoria fisica 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 Protezione –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

59 Arch. Elab. - S. Orlando 59 Paginazione vs Segmentazione 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 dellindirizzo virtuale in segment number + segment offset Numero di pagine virtuali possono essere maggiori di quelle fisiche Dimensione dellOffset dipende dal page size: log 2 (Page size)

60 Arch. Elab. - S. Orlando 60 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à)

61 Arch. Elab. - S. Orlando 61 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 lintervento del SO –algoritmi di mapping e rimpiazzamento più sofisticati Solo politica write-back (perché scrivere sul disco è costoso)

62 Arch. Elab. - S. Orlando 62 Memoria paginata Al loading del processo, viene creato su disco limmagine 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

63 Arch. Elab. - S. Orlando 63 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)

64 Arch. Elab. - S. Orlando 64 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 2 20 entry. Se ogni entry fosse di 4 B, la dimensione totale sarebbe: 2 22 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 sullosservazione che i programmi (piccoli) usano solo una piccola parte della page table a loro assegnata (es. meno di 2 20 pagine), e che cè anche una certa località nelluso delle page table –es.: page table paginate, page table a due livelli, ecc.…

65 Arch. Elab. - S. Orlando 65 TLB: traduzione veloce degli indirizzi La traduzione degli indirizzi fatta a software, accedendo ogni volta alla page table in memoria, è improponibile –troppo costoso La traduzione degli indirizzi viene solitamente fatta in hardware, da un componente denominato MMU (Memory Management Unit), tramite luso di una piccola memoria veloce, denominata: –TLB : translation-lookaside buffer 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

66 Arch. Elab. - S. Orlando 66 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, lentry della TLB viene invalidata La TLB, come la cache, può essere implementata con vari livelli di associatività

67 Arch. Elab. - S. Orlando 67 TLB e cache (FastMATH MIPS) TLB completamente associativa Pagine da 4 KB Cache diretta, acceduta con lindirizzo fisico Dimensione del blocco della cache: 2 6 = 64 B I dati della cache (blocchi) sono memorizzati separatamente da Valid/Tag

68 Arch. Elab. - S. Orlando 68 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 (solo bit di Valid, e Read Miss) Nota le eccezioni –TLB miss –write protection (usato come trucco per aggiornare i bit di dirty sulla page table)

69 Arch. Elab. - S. Orlando 69 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 allesecuzione del programma –Miss per Conflitti 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

70 Arch. Elab. - S. Orlando 70 Supporto al Sistema Operativo (SO): Eccezioni e interruzioni Il progetto del controllo del processore si complica a causa della necessità di considerare, durante lesecuzione delle istruzioni, il verificarsi di eventi inattesi, quali interruzioni ed eccezioni Eccezione –evento sincrono, generato allinterno del processore, e provocato da problemi nellesecuzione di unistruzione es.: overflow, istruzione non valida Control Datapath Processore Memoria I/O Interruzione evento asincrono, che giunge dallesterno del processore segnale che giunge da ununità di I/O, utilizzato per comunicare alla CPU il verificarsi di certi eventi es.: la terminazione di unoperazione di I/O la cui esecuzione era stata richiesta in precedenza dalla CPU

71 Arch. Elab. - S. Orlando 71 Gestione di eccezioni e interruzioni Il controllo di ogni processore deve essere predisposto per gestire il verificarsi di eventi inattesi Tutti i processori, quando si verifica un evento di eccezione/interruzione, la gestiscono secondo lo schema seguente: –interruzione dellesecuzione del programma corrente –salvataggio di parte dello stato di esecuzione corrente (almeno PC) –salto ad una routine del codice che costituisce il Sistema Operativo (SO) il SO è stato caricato in memoria al momento del boot del sistema il salvataggio dello stato del programma interrotto serve al SO per poter riprenderne eventualmente lesecuzione, successivamente e se necessario Nota che le routine del SO possono essere invocate esplicitamente dai programmi (es.: invocazione routine di I/O) –nel MIPS abbiamo listruzione syscall –esecuzione della syscall interpretata dal controllo come una particolare eccezione interna

72 Arch. Elab. - S. Orlando 72 Gestione di eccezioni e interruzioni Problema: lhandler (il gestore) del SO deve essere in grado di capire quale evento si è verificato. Soluzioni alternative: 1il controllo della CPU, prima di saltare allhandler predisposto dal SO (ad un indirizzo fisso), deve salvare in un registro interno un identificatore numerico del tipo di eccezione/interruzione verificatosi. Lhandler accederà al registro interno per determinare la causa delleccezione/interruzione 2interruzioni vettorizzate: esistono handler diversi per eccezioni/interruzioni differenti. Il controllo della CPU deve scegliere lhandler corretto, saltando allindirizzo corretto. A questo scopo, viene predisposto un vettore di indirizzi, uno per ogni tipo di eccezioni/interruzioni, da indirizzare tramite il codice numerico delleccezione/interruzione Nel MIPS viene adottata la 1 a soluzione, usando un registro, denominato Cause, per memorizzare il motivo delleccezione/interruzione Il PC corrente viene invece salvato nel registro EPC (Exception PC)

73 Arch. Elab. - S. Orlando 73 Gestione eccezioni nel MIPS Il Controllo (ma anche il Datapath corrispondente) deve essere progettato per –individuare levento inatteso –interrompere listruzione corrente –salvare il PC corrente (nel registro interno EPC = Exception PC) –salvare la causa dellinterruzione nel registro Cause consideriamo solo le eccezioni di overflow e istruzione non valida 0 = istruzione non valida 1=overflow –saltare ad una routine del SO (exception/interrupt handler) ad un indirizzo fisso: 0xC

74 Arch. Elab. - S. Orlando 74 Gestione eccezioni nel MIPS Il MIPS non salva nessun altro registro oltre PC –è compito dellhandler salvare altre porzioni dello stato corrente del programma (es. tutti i registri generali), se necessario approccio RISC => semplice –esistono CPU dove il salvataggio esteso dello stato viene sempre effettuato prima di saltare allinterrupt handler salvataggio garantito dal microcodice => complesso approccio CISC

75 Arch. Elab. - S. Orlando 75 Rilevamento eccezione Overflow –rilevato sulla base del segnale che arriva al controllo dallALU Istruzione non valida –rilevato sulla base del campo op dellistruzione Dobbiamo aggiungere 2 nuovi stati al nostro automa –a partire dallo stato Instruction Decode, dobbiamo poter transire nel nuovo stato Invalid Instruction solo se giunge un Op non valido –a partire dallo stato R-type Completion, dobbiamo poter anche transire nello stato Overflow solo se giunge un segnale di overflow dal Datapath (ALU) al 3 o ciclo questa transizione di stato si potrebbe anticipare allo stato Execution ? –Problema: next state da calcolare in base ad un segnale calcolato dal Datapath durante lo stesso ciclo di clock => avremmo bisogno di un ciclo di clock più lungo

76 Arch. Elab. - S. Orlando 76 Rilevamento eccezione I nuovi stati che gestiscono le eccezioni dovranno occuparsi –di salvare in EPC il PC corrente (ovvero PC - 4) –di salvare 0/1 in Cause –di memorizzare 0xC in PC Il prossimo stato sarà il Fetch (lettura della prima istruzione dellhandler)

77 Arch. Elab. - S. Orlando 77 Architettura degli Elaboratori Nuovo controllo MULTICICLO Invalid Instruction Overflow

78 Arch. Elab. - S. Orlando 78 Nuovo Datapath MULTICICLO Nuovo ingresso per PC (ind. Interrupt handler): 0xC EPC viene caricato con il risultato dellALU, che calcola PC- 4 Cause viene caricato con 0, oppure con 1.

79 Arch. Elab. - S. Orlando 79 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 uneccezione/interruzione –il processore salta alla routine di gestione del SO –effettua anche un passaggio di modalità di esecuzione user mode kernel (supervisor) mode

80 Arch. Elab. - S. Orlando 80 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 lexecution 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 (lutente non può crearsi da solo una sua syscall e invocarla)

81 Arch. Elab. - S. Orlando 81 SO e gestione della memoria solo TLB miss –la pagina è presente in memoria –leccezione può essere risolta tramite la page table –listruzione che ha provocato leccezione deve essere rieseguita

82 Arch. Elab. - S. Orlando 82 SO e gestione della memoria TLB miss che si trasforma in page fault –la pagina non è presente in memoria, cioè lingresso corrispondente della PT è INVALID –la pagina deve essere portata in memoria dal disco operazione di I/O dellordine 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 lesecuzione

83 Arch. Elab. - S. Orlando 83 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

84 Arch. Elab. - S. Orlando 84 Casi di studio Gerachie di memoria: Intel Pentium Pro e IBM PowerPC 604


Scaricare ppt "Arch. Elab. - S. Orlando 1 Gerarchie di memoria Salvatore Orlando."

Presentazioni simili


Annunci Google