Memoria Cache - UniNa STiDuE
Transcript
Memoria Cache - UniNa STiDuE
Università di Trieste Memoria Cache Calcolatori Elettronici a.a. 2006-2007 Cache-1 Università di Trieste Calcolatori Elettronici a.a. 2006-2007 Cache-2 Richiami sulla memoria centrale Università di Trieste BUS del Calcolatore (Indirizzi, Dati e Controllo) Unità Funzionali Porte BUS indirizzi Memoria Centrale dati MFC controllo Read/Write MFC: Memory Function Completed Collegamenti della memoria all’interno del calcolatore Calcolatori Elettronici a.a. 2006-2007 Cache-3 Università di Trieste Suddivisione in parole della memoria centrale byte parola (da 32 bit) Spazio di indirizzamento: [0, 2k) parola (da 16 bit) Memoria organizzata a parole (32 bit) 0 4 8 C 0 4 8 C 1 5 9 D 2 6 A E 3 7 B F 2k − 4 2k − 4 2k − 3 2k − 2 2k − 1 0 7 8 15 16 23 24 32 Capacità: 2k × 32 Calcolatori Elettronici a.a. 2006-2007 Cache-4 Gerarchia di memoria Università di Trieste MEMORIA VIRTUALE ciclo del programma carica le/i istr./dati da eseguire/ elaborare MEMORIA CACHE ciclo del programma MEMORIA CENTRALE carica i blocchi entranti in uso blocco di istr. pagina di istr. carica le pagine entranti in uso blocco di dati pagina di dati blocco di istr. PROCESSORE blocco di dati registri scarica i risultati elaborati scarica i blocchi non più in uso scarica le pagine non più in uso per la discussione sulla memoria cache interessa questa parte Capacità (quantità di bit) Velocità (tempo di accesso)−1 Calcolatori Elettronici a.a. 2006-2007 Cache-5 Università di Trieste Cache • Memoria piccola e veloce – Tipicamente ~256kbytes (1998) – 2 cycle access time • Stesso “die” del processore • “Off-chip” cache possible – Utilizzo di RAM veloce (SRAM) piuttosto che Ram dinamica più lenta – al 2° levello della gerarchia di memoria • “Caches” most recently used memory locations “closer” to the processor – closer = closer in time Calcolatori Elettronici a.a. 2006-2007 Cache-6 Università di Trieste Calcolatori Elettronici a.a. 2006-2007 Cache-7 Università di Trieste Cache • Etimologia – cacher (Francese) = nascondere, celare • Transparente ai programmmi – Vanno semplicemente più piano se il sistema ne è privo • I moderni processori “contano” su di lei – Riduce il “costo” degli accessi alla memoria principale – Enables instruction/cycle throughput – Programmi tipici • ~25% memory accesses Calcolatori Elettronici a.a. 2006-2007 Cache-8 Università di Trieste Cache • Basata sul Principio di Località – I programmi usano e riusano continuamente le stesse locazioni di memoria – Istruzioni • loops, • common subroutines – Dati • look-up tables • “working” data sets Calcolatori Elettronici a.a. 2006-2007 Cache-9 Università di Trieste Cache - Principi di località • Località temporale: se un’istruzione entra in esecuzione al tempo t, con probabilità ≈ 1 la stessa istruzione rientrerà in esecuzione al tempo t + dt (dove dt è piccolo rispetto a t). • Motivazione: siccome le istruzioni che vengono rieseguite di frequente fanno parte, di solito, del corpo di un ciclo, e siccome la presenza di un ciclo è giustificata solo se esso viene reiterato molte volte (altrimenti lo si potrebbe eliminare), se un’istruzione appartenente a un ciclo entra in esecuzione, è molto probabile che, entro il tempo di un’iterazione del ciclo, essa venga rieseguita; e si noti che i cicli brevi sono molto più numerosi di quelli lunghi. Calcolatori Elettronici a.a. 2006-2007 Cache-10 Università di Trieste Cache - Principi di località • Località spaziale: se l’istruzione di indirizzo i entra in esecuzione, con probabilità ≈ 1 anche l’istruzione di indirizzo i + di entrerà in esecuzione (dove di è un intero di piccolo valore). • Motivazione: nella maggior parte dei casi le istruzioni vengono eseguite in sequenza, pertanto l’esecuzione di un’istruzione è, con elevata probabilità, seguita dall’esecuzione dell’istruzione collocata all’indirizzo successivo; i salti sono relativamente rari, e spesso sono polarizzati, cioè i due possibili esiti del salto hanno probabilità significativamente-diverse Calcolatori Elettronici a.a. 2006-2007 Cache-11 Università di Trieste Calcolatori Elettronici a.a. 2006-2007 Cache-12 Università di Trieste Cache - Principi di località • Il principio di località spaziale è INDIPENDENTE dal principio di località temporale! • Se valgono entrambi riassumere nel: i principi, si possono • : • Principio di località spazio-temporale: • se l’istruzione di indirizzo i entra in esecuzione al tempo t, con probabilità ≈ 1 l’istruzione di indirizzo i + di entrerà in esecuzione al tempo t + dt, dove di e dt sono piccoli rispetto a i e t, rispettivamente. Calcolatori Elettronici a.a. 2006-2007 Cache-13 Università di Trieste Cache - Principi di località • IL PRINCIPIO DI LOCALITÀ SPAZIOTEMPORALE È STATISTICAMENTE BEN VERIFICATO NELLA MAGGIOR PARTE DEI PROGRAMMI! • Motivazione: la maggior parte delle istruzioni eseguite dal processore appartiene ai cicli più interni del programma; di norma tali cicli hanno corpo sequenziale, di solito sono brevi e vengono iterati numerose volte. Calcolatori Elettronici a.a. 2006-2007 Cache-14 Università di Trieste unità funzionale di copiatura / ricopiatura (carico /scarico) dei blocchi di memoria IND. DI BLOCCO MEMORIA CENTRALE 512 × 32 parola 0: 000 IND. DI PAROLA 0: 000000 63: 111111 FLAG DI IND. DI BLOCCO BLOCCO MEMORIA CACHE 256 × 32 IND. DI PAROLA parola 1 0: 000000 0: 00 1: 001 blocco parola 0: 000000 63: 111111 2: 010 63: 111111 1 1: 01 1 2: 10 blocco parola 3: 11 63: 111111 3: 011 4: 100 parola 0 0: 000000 43: 101011 blocco libero 5: 101 2, 43: 10, 101011 = 10101011 6: 110 parola 24: 011000 (indirizzo di parola completo) memoria ausiliaria contenente i bit di allocazione dei blocchi 6, 24: 110, 011000 = 110011000 7: 111 (indirizzo di parola completo) Calcolatori Elettronici a.a. 2006-2007 Cache-15 Università di Trieste • La memoria centrale e la memoria cache sono organizzate a blocchi di parole, di uguale dimensione. • La memoria cache contiene solo copie di blocchi della memoria centrale, oppure blocchi correntemente liberi. • Il sistema di cache è in grado di copiare (o caricare) blocchi dalla memoria centrale alla memoria cache, oppure di ricopiare (o scaricare) blocchi dalla memoria cache alla memoria centrale, tramite un’apposita unità funzionale. • Normalmente il processore accede solo alla memoria cache (tranne casi particolari). • La dimensione del sistema è pari alla capacità della sola memoria centrale (perché la mem. cache contiene solo copie di blocchi). Calcolatori Elettronici a.a. 2006-2007 Cache-16 Operazioni della Cache Università di Trieste • La richiesta di lettura della memoria viene prima effettuata nella cache – Se la parola cercata è nella cache, essa è letta dalla cache ( e aggiornata nella cache) ÍCache hit – Se non c’è, la richiesta è passata alla memoria principale ed il dato è letto (scritto) nella stessa. ÍCache miss VA CPU MMU D or I Calcolatori Elettronici a.a. 2006-2007 PA PA Cache D or I Main Mem Cache-17 Efficienza della Cache • Una “Frequenza dei successi” (Hit Rate) del 90% è comune Università di Trieste – Esempio: – – – – Tempo d’accesso alla memoria centrale 100ns Tempo d’accesso alla cache 10ns Valore medio dell’Hit Rate 90% quindi il tempo impiegato per 10 accessi sarà: – 100+9x10=190 ns – Quindi la presenza della cache ha l’effetto di ridurre il tempo (medio) di accesso alla memoria dai 100 ns, in sua assenza, ai 19 ns Calcolatori Elettronici a.a. 2006-2007 Cache-18 Università di Trieste Efficienza della Cache la “frequenza dei fallimenti” (miss rate), è pari a miss rate = (1.0 – hit rate) è la frazione di accessi alla memoria che non hanno trovato il dato desiderato nel livello superiore. Calcolatori Elettronici a.a. 2006-2007 Cache-19 Università di Trieste Organizzazione della Cache In assenza di memoria cache, CPU e memoria primaria sono direttamente collegate. La CPU invia alla memoria indirizzi ad n bit e la memoria contiene 2n celle. Poiché la cache è del tutto trasparente alla CPU, quest’ultima continua ad inviare indirizzi ad n bit alla memoria primaria. Avendo pero’ la cache una dimensione molto più piccola della memoria primaria, tale numero di bit nell’indirizzo risulta eccessivo. La cache non può pertanto essere una RAM in quanto ha indirizzi di ingresso a n bit e un numero di celle molto minore di 2n mentre la RAM presenta un legame fisso tra il numero di bit dell’indirizzo e quello delle celle. Calcolatori Elettronici a.a. 2006-2007 Cache-20 Università di Trieste Organizzazione della Cache La memorizzazione di dati in cache avviene con una logica di tipo associativo, diversa da quella della memoria centrale. Precisamente, mentre in memoria centrale il riferimento ad un dato viene effettuato tramite un numero, il suo indirizzo, che identifica la sua posizione, nella cache il dato viene identificato per associazione con un'altra informazione, che chiameremo etichetta (tag). Questo meccanismo è simile a quello della memoria umana: un numero di telefono viene associato ad una persona. Calcolatori Elettronici a.a. 2006-2007 Cache-21 Università di Trieste Organizzazione della Cache Una memoria cache ideale dovrebbe contenere una serie di etichette, a ciascuna delle quali è associata un'informazione, il controllore della memoria dovrebbe essere in grado di ricevere, mediante un opportuno registro, il valore dell'etichetta e di scorrere il contenuto della memoria alla ricerca di questa etichetta. In caso di ritrovamento dovrebbe restituire l'informazione associata a questa etichetta; in caso contrario dovrebbe restituire una segnalazione. Una memoria cache di questo genere, che viene detta di tipo completamente associativo, non è realizzabile concretamente. Calcolatori Elettronici a.a. 2006-2007 Cache-22 Università di Trieste Organizzazione della Cache In effetti, una ricerca di tipo sequenziale sulle etichette richiederebbe tempi lunghi, in contrasto con l'esigenza di garantire un accesso veloce alle informazioni; una ricerca rapida verrebbe garantita da un meccanismo di ricerca parallela, ma questo implicherebbe una notevole complessità del controllore, e quindi un costo elevato. Calcolatori Elettronici a.a. 2006-2007 Cache-23 Università di Trieste Ogni blocco della cache possiede un'etichetta (tag) che indica quali locazioni sono contenute nel blocco. Quando si vuole leggere un dato, una prima parte dell'indirizzo fisico viene utilizzata per identificare il set in cui dovrebbe trovarsi il dato cercato, un'altra parte serve da etichetta per ricercare, all'interno del set, il blocco a cui appartiene il dato, una terza parte indica lo spiazzamento del dato rispetto al punto di partenza del blocco. Una volta identificato il set, l'etichetta del dato viene confrontata con l'etichetta di tutti i blocchi appartenenti al set. Di fatto, la cache è divisa in due parti: un ``tag array'' contiene le etichette dei blocchi compresi nella cache, un ``data array'' contiene i dati dei blocchi. Calcolatori Elettronici a.a. 2006-2007 Cache-24 Università di Trieste Completamente Associativa Cache completamente Associativa Corrispondenza di qualsiasi linea di memoria centrale a qualsiasi linea di memoria cache Calcolatori Elettronici a.a. 2006-2007 Cache-25 Università di Trieste Completamente Associativa • Tutti i tags sono confrontati allo stesso istante • Le words possono usare ogni linea cache Calcolatori Elettronici a.a. 2006-2007 Cache-26 Completamente Associativa Università di Trieste MEMORIA CENTRALE etichetta IND. DI BLOCCO 0 0 0 000 B0 IND. DI BLOCCO 0 0 1 MEMORIA CACHE B1 C0 B2 0 1 0 00 0 1 1 01 C1 B3 1 0 0 10 C2 B4 C3 B5 Schema di indirizzamento: ogni blocco della memoria centrale è copiabile (o caricabile) in ogni blocco della memoria cache. Conflitti di allocazione: (B0, B1, B2, B3, B4), … 1 0 1 11 1 1 0 B6 1 1 1 B7 Calcolatori Elettronici a.a. 2006-2007 Cache-27 Completamente Associativa Università di Trieste MEMORIA CENTRALE IND. DI BLOCCO 0 0 0 B0 IND. DI BLOCCO 0 0 1 MEMORIA CACHE B1 C0 = B0 B2 0 1 0 00 00 000 01 011 10 110 11 101 0 1 1 01 C1= B3 B3 1 0 0 10 C2= B6 B4 1 0 1 11 C3= B5 B5 1 1 0 B6 memoria associativa contenente le etichette dei blocchi allocati Calcolatori Elettronici a.a. 2006-2007 Schema di identificazione: per identificare un dato blocco nella memoria cache occorre memorizzarne in una memoria associativa l’etichetta dell’indirizzo di memoria centrale. 1 1 1 B7 Cache-28 Università di Trieste Mappaggio diretto In una cache completamente associativa (fully associative) come abbiamo visto un blocco di memoria può essere messo in una qualsiasi posizione della memoria cache; poiché il blocco può essere messo in un posto qualsiasi della cache, al momento della ricerca tutti i blocchi della cache dovranno essere esaminati !!!. Le memorie cache effettivamente disponibili utilizzano invece un metodo di ricerca detto "a mappaggio diretto", o direct mapping. Calcolatori Elettronici a.a. 2006-2007 Cache-29 Università di Trieste Mappaggio diretto Questo meccanismo consiste nell'utilizzare una parte dell'informazione che costituisce l'etichetta al fine di selezionare la zona di memoria cache dove effettuare la ricerca, in modo da limitare la ricerca stessa. Questo meccanismo riduce la flessibilità della cache, in quanto un'informazione non può essere memorizzata in qualunque posizione (come avverrebbe per una cache completamente associativa), ma solo in punti selezionati in base al valore dell’etichetta. La perdita di flessibilità rende però concretamente realizzabile una memoria di questo tipo. Calcolatori Elettronici a.a. 2006-2007 Cache-30 Mappaggio diretto Università di Trieste • Cache a mappaggio diretto – Ogni parola nella cache ha un tag – Assumiamo che • cache - 2k words • machine words - p bits • byte-addressed memory – m = log2 ( p/8 ) bits not used to address words – m = 2 for 32-bit machines Address format p bits p-k-m k tag cache address Calcolatori Elettronici a.a. 2006-2007 m byte address Cache-31 Università di Trieste Mappaggio diretto • La realizzazione della memoria cache a mappaggio diretto avviene nel modo seguente. La memoria cache viene suddivisa in un certo numero di celle, normalmente una potenza di 2, diciamo 2k Ciascuna cella contiene due informazioni: l'etichetta ed il dato corrispondente. La lunghezza del dato, contata in bytes, è a sua volta una potenza di 2, diciamo 2p. L'etichetta utilizzata per identificare il dato è l'indirizzo di memoria privato dei k bit meno significativi (per tener conto della lunghezza del dato in cache). Calcolatori Elettronici a.a. 2006-2007 Cache-32 Università di Trieste Mappaggio diretto • La stringa di bit che costituisce l’indirizzo di memoria viene spezzata in tre parti: i k bit meno significativi non vengono utilizzati per la ricerca, ma solo per l'indirizzamento di un byte entro la cella della cache; gli n bit successivi identificano una delle 2n celle della cache, candidata a contenere il dato; i rimanenti p-m-k bit contengono la parte di etichetta da confrontare con il contenuto del campo etichetta nella cella della cache Calcolatori Elettronici a.a. 2006-2007 Cache-33 Mappaggio diretto Università di Trieste A cache line data tag 2k lines memory p p-k-m Hit? CPU p-k-m k tag cache address Calcolatori Elettronici a.a. 2006-2007 m byte address Cache-34 Università di Trieste Mappaggio diretto Cache a mappaggio diretto Corrispondenza di insiemi di linee di memoria centrale a singole linee di memoria cache. Calcolatori Elettronici a.a. 2006-2007 Cache-35 Mappaggio diretto Università di Trieste etichetta # blocco MEMORIA CENTRALE IND. DI BLOCCO 0 0 0 000 B0 IND. DI BLOCCO MEMORIA CACHE 0 0 1 B1 0 1 0 00 C0 B2 C1 B3 0 1 1 01 1 0 0 10 C2 B4 1 0 1 11 C3 B5 Schema di indirizzamento: ogni blocco della memoria centrale è copiabile (o caricabile) in un unico blocco della memoria cache. Conflitti di allocazione: (B0, B4), … 1 1 0 B6 1 1 1 B7 Calcolatori Elettronici a.a. 2006-2007 Cache-36 Mappaggio diretto Università di Trieste MEMORIA CENTRALE IND. DI BLOCCO 0 0 0 B0 IND. DI BLOCCO MEMORIA CACHE 0 0 1 B1 0 1 0 00 00 0 01 1 10 1 11 0 C0 = B0 B2 C1 = B5 B3 0 1 1 01 1 0 0 10 C2 = B6 B4 1 0 1 11 C3 = B3 B5 1 1 0 B6 memoria associativa contenente le etichette dei blocchi allocati Calcolatori Elettronici a.a. 2006-2007 Schema di identificazione: per identificare un dato blocco nella memoria cache occorre memorizzarne in una memoria associativa l’etichetta dell’indirizzo di memoria centrale 1 1 1 B7 Cache-37 Università di Trieste Write-through o write-back? AGGIORNAMENTO MEMORIA PRINCIPALE Quando la CPU scrive sulla memoria cache si genera una discrepanza fra il valore del dato nella memoria principale e nella cache. • Write-back o Copy-back. Quando viene modificato un dato nella cache la linea corrispondente viene marcata. Quando una linea è scaricata viene ricopiata nella memoria principale solo se marcata. • Write-through o Copy-through • In un programma il rapporto fra le operazioni di lettura e di scrittura è dell'ordine di 10. • Quando viene modificato un dato nella cache, lo stesso viene modificato anche nella memoria principale. Calcolatori Elettronici a.a. 2006-2007 Cache-38 Università di Trieste Set Associative Cache - Set Associative Corrispondenza di insiemi di linee di memoria centrale ad insiemi di linee di memoria cache Calcolatori Elettronici a.a. 2006-2007 Cache-39 Università di Trieste Set Associative 2-way set associative Each line two words two comparators only Calcolatori Elettronici a.a. 2006-2007 Cache-40 Set Associative Università di Trieste etichetta # gruppo MEMORIA CENTRALE 0 0 0 IND. DI BLOCCO 0 0 0 B0 { { GRUPPI IND. DI BLOCCO MEMORIA CACHE 0 0 1 B1 0 1 0 00 C0 B2 C1 B3 G0 G1 0 1 1 01 1 0 0 10 C2 B4 1 0 1 11 C3 B5 1 1 0 B6 # DI GRUPPI =2 DIM. GRUPPO = 2 Calcolatori Elettronici a.a. 2006-2007 Schema di indirizzamento: ogni blocco della memoria centrale è copiabile (o caricabile) in un dato gruppo di blocchi della memoria cache. Conflitti di allocazione: (B0, B2, B4), … 1 1 1 B7 Cache-41 Set Associative Università di Trieste MEMORIA CENTRALE IND. DI BLOCCO 000 B0 { { IND. DI GRUPPO IND. DI BLOCCO 001 MEMORIA CACHE B1 C0 = B0 B2 010 00 0 00 00 01 11 10 10 11 01 1 011 01 C1 = B6 B3 100 10 C2 = B5 B4 101 11 C3 = B3 B5 110 B6 memoria associativa contenente le etichette dei blocchi allocati Calcolatori Elettronici a.a. 2006-2007 111 Schema di identificazione: per identificare un dato blocco nella memoria cache occorre memorizzarne in una memoria associativa l’etichetta dell’indirizzo di memoria centrale. B7 Cache-42 I limiti della memoria Cache Università di Trieste Non è conveniente aumentare le dimensioni della memoria cache oltre una “capacità limite”, sopra cui le prestazioni del sistema di memoria smettono di aumentare o addirittura iniziano a diminuire. guadagno di prestazioni guadagno di prestazioni = velocità sistema con cache velocità sistema senza cache saturazione limite di guadagno 3 zona di decadimento zona di crescita 2 capacità limite 1 10K 100K 1M 10M 100M capacità cache Calcolatori Elettronici a.a. 2006-2007 Cache-43 I limiti della memoria Cache Università di Trieste Motivazioni: Quando le dimensioni della memoria cache superano i limiti di validità dei principi di località dei programmi, nella cache, oltre ai blocchi usati in modo intenso, vengono inevitabilmente a trovarsi: •blocchi spesso liberi (e dunque sprecati) •blocchi invecchiati, che dopo un periodo di uso intenso hanno “ora” frequenza di accesso molto bassa (e che dunque si potrebbero lasciare senza danno in memoria centrale) Calcolatori Elettronici a.a. 2006-2007 Cache-44 Università di Trieste I limiti della memoria Cache Motivazioni: Questo impedisce la crescita indefinita del guadagni di prestazioni, all’aumentare della capacità della cache (fenomeno di saturazione). Inoltre, all’aumentare delle dimensioni della cache il tempo di accesso alla cache aumenta (per motivi tecnologici), e dunque superando la capacità limite della cache le prestazioni del sistema di memoria dotato di cache iniziano a decadere. Calcolatori Elettronici a.a. 2006-2007 Cache-45 Università di Trieste Algoritmi di rimpiazzamento Una volta che la cache è stata riempita di dati e viene generato un miss, è necessario rimpiazzare le linee di cache con altre linee provenienti dalla memoria. Esistono tre principali algoritmi di rimpiazzamento, dei quali sono riportate solo le definizioni, senza gli algoritmi veri e propri che esulano dal contesto del corso. Algoritmo LRU L’algoritmo LRU (Least Recently Used) rimpiazza la linea di cache usata meno di recente, sono quindi necessari dei bit aggiuntivi nel TAG per indicare quale locazione è stata utilizzata meno recentemente Calcolatori Elettronici a.a. 2006-2007 Cache-46 Università di Trieste Algoritmi di rimpiazzamento Algoritmo RAND L’algoritmo RAND rimpiazza una linea in maniera casuale. Questo algoritmo ha prestazioni comparabili con il precedente, in quanto il numero di bit utilizzabile per segnalare la linea utilizzata meno recentemente è molto limitato e quindi si ottiene sempre un gruppo di celle passibili di rimpiazzamento, fra le quali la scelta viene effettuta in modo pseudo casuale- Calcolatori Elettronici a.a. 2006-2007 Cache-47 Università di Trieste Algoritmi di rimpiazzamento Algoritmo FIFO L’algoritmo FIFO (First In First Out), rimpiazza la cella inserita in cache da più tempo. Si noti che l’algoritmo LRU eFIFO non operano in maniera analoga, in quanto LRU rimpiazza le celle utilizzate meno recentemente (indipendentemente da quando esse siano state inserite in cache), mentre il FIFO rimpiazza le celle che sono da più tempo in cache (indipendentemente da quanto esse siano state utilizzate). Calcolatori Elettronici a.a. 2006-2007 Cache-48 Università di Trieste Esempio di cache: 80486 L’80486 possiede una cache on-chip con le seguenti caratteristiche: • dimensione: 8Kbyte • dimensione dei blocchi: 16 byte • meccanismo di aggiornamento: write-through • organizzazione set associative, con 128 classi composte da 4 insiemi ciascuna • eventuale cache secondaria esterna • algoritmo di rimpiazzamento: pseudo-LRU • i risultati sperimentali indicano una hit-ratio del 96% per la generica applicazione DOS, e del 92% per le applicazioni UNIX e OS/2. Calcolatori Elettronici a.a. 2006-2007 Cache-49 Università di Trieste Esempio di cache: 80486 Metodo pseudo-LRU Per implementare una strategia LRU con 4 blocchi per classe sarebbero richiesti 6 bit. Per risparmiare hardware, nel 486 vi sono solo 3 bit, e si implementa una strategia pseudo-LRU. Ad ogni classe (composta da 4 insiemi L0, L1, L2 e L3) sono associati 3 bit B0, B1 e B2. Ogni volta che si fa accesso ad una classe, i 3 bit vengono aggiornati secondo le seguenti regole: • accesso ad L0 o L1: B0 1 • accesso ad L0: B1 1 • accesso ad L1: B1 0 • accesso ad L2 o L3: B0 0 • accesso ad L2: B2 1 • accesso ad L3: B2 0. Calcolatori Elettronici a.a. 2006-2007 Cache-50 Università di Trieste Esempio di cache: 80486 All’atto di caricare un blocco in memoria, la scelta su dove metterlo nella cache viene fatta in base al seguente albero di decisione: • se c’è un insieme nel blocco che non è valido, il nuovo blocco viene inserito al suo posto; altrimenti • si testa B0: se ne deduce se l’ultimo insieme utilizzato è stato L0 o L1, oppure L2 o L3 • si testa B1: - se B0=0 e B1=0 si rimpiazza L0 - se B0=0 e B1=1 si rimpiazza L1 - se B0=1 e B2=0 si rimpiazza L2 - se B0=1 e B2=1 si rimpiazza L3. Calcolatori Elettronici a.a. 2006-2007 Cache-51 Università di Trieste Esempio di cache: 80486 L'80486 prevede un supporto per la gestione delle cache da parte del programmatore: • tra i bit di controllo scrivibili via software vi sono: - CD: abilita (CD=0) e disabilita (CD=1) l'uso della cache - NW: abilita (NW=0) e disabilita (NW=1) il meccanismo di write-through • l'istruzione INVD causa lo scaricamento della cache sulla memoria esterna (cache flush), e segnala ad eventuali cache esterne di fare altrettanto • l'istruzione WBINVD ha la stessa funzione, ma segnala anche ad un'eventuale cache esterna di tipo write-back che prima di fare il flush deve eseguire la scrittura in memoria del proprio contenuto. Calcolatori Elettronici a.a. 2006-2007 Cache-52 Università di Trieste Cache Dati-Cache Istruzioni • Cache unificata – Istruzioni e dati nella stessa cache • Due Cache – (Cache Harvard) * Istruzioni * Dati Consente al processore di prelevare contemporaneamente le istruzioni dalla cache istruzioni e i dati dalla cache dati. ÍIncreases total bandwidth Calcolatori Elettronici a.a. 2006-2007 Cache-53 Università di Trieste Cache Dati-Cache Istruzioni Un altro vantaggio di separare la cache dati dalla cache istruzioni à quello che i programmi, di solito, non modificano le loro stesse istruzioni Calcolatori Elettronici a.a. 2006-2007 Cache-54 Cache a più livelli Università di Trieste In molti sistemi la cache viene implementata con una struttura gerarchica a più livelli. In questi casi è prassi comune implementare il primo livello (L1) con due cache distinte dati e istruzioni mentre gli altri livelli (L2, L3) sono cache unificate. Calcolatori Elettronici a.a. 2006-2007 Processore Cache(L1) Istruzioni Stesso package Cache(L1) Dati Cache di secondo livello (L2) Cache di terzo livello (L3) Memoria Centrale Cache-55 Università di Trieste Cache a più livelli Affinchè una cache a più livelli possa migliorare significatamente il tempo di accesso medio alla memoria di un sistema ogni livello deve avere una capacità notevolmente più grande del livello gerarchico precedente in quanto la località dei riferimenti vista da ogni livello diminuisce scendendo verso il basso della scala gerarchica. Le cache con capacità maggiori tendono ad essere più lente, quindi il vantaggio della velocità derivante dalla separazione dei dati dalle istruzioni non è più così significativo ed unito a quello di un costo minore giustificano le cache (L2, L3) unificate. Calcolatori Elettronici a.a. 2006-2007 Cache-56 Università di Trieste Calcolatori Elettronici a.a. 2006-2007 Cache-57 Università di Trieste Lettura (read) Scrittura (write) METODI DI LETTURA / SCRITTURA (funzionamento completo) Successo cache hit nessun problema Il blocco è nella memoria cache. La parola viene letta dalla copia del blocco risiedente nella memoria cache. Il processore continua subito la propria attività. PROBLEMA DELLA COERENZA: il blocco è nella memoria cache, ma se si scrive la parola solo nella memoria cache la copia del blocco in memoria centrale diventa “obsoleta” (cioè in definitiva non è più valida). sistono due differenti politiche di scrittura della parola: • Scrittura immediata (write through): il processore scrive la parola sia nella memoria centrale sia nella cache, e continua subito l’attività. Scrittura differita (write back o copy back): il processore scrive la parola solo nella cache e continua subito l’attività; il blocco nella cache viene marcato come modificato (tramite un apposito bit) e in seguito (anche non subito) andrà ricopiato (o scaricato) nella memoria centrale, di solito quando verrà rimosso dalla cache per liberare spazio. Fallimento cache miss IL BLOCCO NON È NELLA MEMORIA CACHE: il processore si sospende e il blocco va copiato (o caricato) dalla memoria centrale alla memoria cache. Esistono due differenti politiche di lettura della parola: L BLOCCO NON È NELLA MEMORIA CACHE: poiché l’operazione di scrittura è molto meno frequente della lettura, in generale non è obbligatorio copiare (o caricare) il blocco dalla memoria centrale alla memoria cache. Esistono due differenti politiche di scrittura della parola: Lettura immediata (read through o load through o early restart): il processore legge la parola non appena questa viene copiata (o caricata) nella cache, e riprende subito l’attività. Scrittura immediata (write through): il processore bypassa la cache e scrive la parola solo nella memoria centrale, poi continua subito l’attività. Lettura differita (read back): il processore attende che l’intero blocco sia stato copiato (o caricato) nella memoria cache, poi legge la parola e riprende l’attività. Scrittura differita (write back): il processore copia (o carica) il blocco interessato nella cache; poi si procede come nel caso “cache hit / write back”. Calcolatori Elettronici a.a. 2006-2007 Cache-58 Università di Trieste Level Access Time Registers 1-3 ns Level 1 Cache (onchip) 2-8 ns Level 2 Cache (offchip) Technology Managed By Custom CMOS Compiler 8 KB-128 KB SRAM Hardware 5-12 ns 0.5 MB - 8 MB SRAM Hardware Main Memory 10-60 ns 64 MB - 1 GB DRAM Operating System Hard Disk 3,000,000 10,000,000 ns 20 - 100 GB Magnetic Operating System/User Calcolatori Elettronici a.a. 2006-2007 Typical Size 1 KB Cache-59 Università di Trieste Calcolatori Elettronici a.a. 2006-2007 Sintesi Cache-60 Università di Trieste Calcolatori Elettronici a.a. 2006-2007 Sintesi Cache-61 Università di Trieste Calcolatori Elettronici a.a. 2006-2007 Sintesi Cache-62 Università di Trieste Calcolatori Elettronici a.a. 2006-2007 Cache-63 Università di Trieste Bibliografia ftp://ftp.elet.polimi.it/outgoing/Luca.Breveglieri/Diploma UWA University: prof. J. Morris, Computer Architecture Lessons, CA406 Digital Equipment: Note tecniche, Cache memory. Università di Parma: prof. G. Conte, Lezioni di Calcolatori Elettronici I° Politecnico di Torino, Dip. di Automatica e Informatica: prof. M. Sonza Reorda: Lezioni di Calcolatori Elettronici Politecnico di Milano: prof. C. Brandolese, Lezioni di Calcolatori Elettronici Calcolatori Elettronici a.a. 2006-2007 Cache-64