C A C H E
Transcript
C A C H E
Gerarchia di Memoria e Memorie Cache Memoria virtuale: comodità + sicurezza ma rallenta R / nW Qui : modi di aumentare velocità di R / nW Osservazione: dati e codice non tutti uguali alcuni si usano poco altri tanto Idea: mem CPU <=> Registri <=> piccola mem <=> grande veloce lenta costosa basso costo Se possibile : cache in modo trasparente all' utente dal francese "casher" 1 Cache <==> CC CPU <====> cache + RAM 1o Registri livello A liv 2 e superiori si programma ignorando la cache Anche CPU ignora l'esistenza della cache L'unico al corrente è il cache controller C C Idea di funzionamento: CPU chiede dato/istruzione (operazione di lettura) mandando indirizzo sul BUS CC intercetta controlla se dato / istr. è in cache SI lo manda a CPU NO lo preleva da RAM lo manda a CPU e decide se copiarlo in cache Caso SI risposta ( molto ) piú veloce di RAM NO risposta un po' piú lenta 2 Linee guida per Cache Controller studi statistici su programmi ===> 2 caratteristiche proprietà di località • località nello spazio se ora uso cella • presto forse userò cella vicina località nel tempo se ora uso cella presto forse la userò di nuovo Località nel tempo ===> se CPU chiede cella non in cache , la aggiungo si parte con cache vuota e ...... PROBLEMA : cache piena ...... Località nello spazio ===> se CPU chiede cella non in cache , aggiungo lei e le vicine linee di cache Linee di cache • RAM divisa in linee come pagine ma piú piccole • Linea = 2, 4, 8 parole (celle) • se CPU chiede parola, si copia in cache intera linea 3 Cache piena: politiche di rimpiazzamento tante soluzioni miglior compromesso tra semplicità e accuratezza: tecnica L R U Least Recently Used per far posto a nuova linea, si butta via linea che da piú tempo non si usa valida sperimentalmente ed intuitivamente PERO` dipende anche da realizzazione della cache ----------------------------------------------------------------------------- REALIZZAZIONE FISICA della Cache Vogliamo recuperare dati in cache velocemente 1a Idea : memoria associativa ( ricerca in parallelo ) 4 Cache completamente associativa Esempio (non su dispense) RAM da 16 M celle / parole ===> ind. fisici 24 bit linee da 4 parole allineate .... RAM parola 0 parola 1 parola 2 parola 3 parola 4 parola 5 parola 6 parola 7 linea 0 da parola 0 a parola 3 linea 1 da parola 4 a parola 7 24 ind. fisico: 22 bit : num linea bit 2 bit : offset in linea Struttura cache: TAG INFO VAL / DATA num linea libero / occup copia della linea di RAM ultimo accesso di RAM USO: Ind. fisico ---- > num linea ---> ricerca parallela su TAG 5 Cache a corrispondenza diretta Cache completamente associativa bella Poco usata ma costosa si usano tecniche che approssimano Organizzazione a corrispondenza diretta (direct mapping) approccio diametralmente opposto: si parte da dispositivo semplice ed economico poi si studia modo di utilizzarlo al meglio ..... Si usa RAM normale ma veloce (statica) con ricerca solita per indirizzi ...... 6 Esempio di prima ( questo è su dispense ) RAM da 16 M celle / parole ===> ind. fisici 24 bit linee da 4 parole allineate .... Cache con 1 K linee : indice: copia libero / num linea TAG linea occup: di cache 12 bit RAM 1 bit 0 1 ................ 2 10 - 1 ↑ ind. fisico: 12 bit 10 bit 2 bit num. linea di num. linea offset RAM mod 1 K di cache num. linea di RAM Corrispondenza diretta: linee cache possibile linea di RAM 0 0 1024 2^ 11 2 ^ 12..... 1 1 1025 j linee k t.c. (k mod 2^10 ) = j 2^11 + 1 2^12 + 1 7 Vista in altro modo: Linee RAM linee CACHE 0 0 1 1 2 2 .................... .................... 2^10 - 1 l 2^10 - 1 2^10 0 2^10 + 1 1 2^10 + 2 2 .................... .................... 2^11 - 1 2^10 - 1 .................... .................... .................... .................... 2^17 0 2^17 + 1 1 2^17 + 2 2 .................... .................... 2^18 - 1 2^10 - 1 • linea di RAM • linea n di RAM <==> una sola posizione in cache <===> celle 4n 4n+1 4n+2 4n+3 8 linea di RAM cosí <==> una sola posizione in cache ricerca veloce 1 solo accesso a costi ridotti MA rimpiazzamento anche con cache semi-vuota nessuna tecnica di rimpiazzamento (es LRU) ----------------------------------------------------------------------------- Cache associativa ad insiemi cache completamente associativa troppo costosa cache a corrispondenza diretta troppo "rigida" non usa bene prop. di localita` Compromesso: organizzazione set-associative E` QUELLO CHE SI USA Idea: tante cache a corrisp. diretta in parallelo ↑ 2, 4, 8, si dice: livello di associatività Piú è alto e piú si avvicina a cache associativa ..... 9 Cache associativa ad insiemi - associatività 2 Esempio di prima ( questo è su dispense ) RAM da 16 M celle / parole ===> ind. fisici 24 bit linee da 4 parole allineate .... Cache : 1 K linee MA divise in 2 cache a corr. diretta da 512 linee ind. fisico: 13 bit 9 bit 2 bit num. lin. RAM num. linea offset mod 1/2 K di cache num. linea di RAM Come prima MA 13 + 9 bit invece di 12 + 10 • ogni linea di RAM ha 2 possibili posizioni ....... • ricerca in parallelo sulle due cache • se non si trova: due posizioni libere si inserisce in una una sola libera si usa nessuna libera si libera una ..... LRU VARIANTE: 1 cache per dati altra per codice 10 Consistenza Visto : write-through write-back uso cache per operazioni di lettura ma c'è anche scrittura 2 approcci: WRITE - THROUGH • CPU chiede di scrivere in RAM • CC scrive in RAM Lento e in cache se presente ma semplice e "coerente" WRITE - BACK • CPU chiede di scrivere in RAM • CC scrive solo in cache ( crea nuova linea se non c'è ) Veloce ma inconsistenza tra RAM e cache bisogna aggiornare RAM "alla fine" Write-through ok se si scrive poco in effetti : 1 write ogni 2 - 4 read ..... Write back sfrutta meglio località nel tempo scrivo più volte su stessa cella in RAM solo risultato finale però : bit per dire che linea è stata cambiata 11 sempre problema scrittura Problema : Non è solo la CPU a scrivere in RAM ... Se dispositivo DMA scrive in RAM ====> possibile inconsistenza tra RAM e cache ..... Soluzione: CC spia BUS : riconosce scrittura DMA riconosce indirizzo controlla se presente in cache SI : invalida copia cache oppure aggiorna copia in cache NOTA: se divido cache in 2 : dati e codice problema scrittura solo per cache dati .... Infine: registri mappati in memoria es I/O indirizzi "non cachable" 12 Gerarchie di memoria e caching " Velocità " Latenza Throughput finora: abbiamo parlato di " velocità " meglio chiarire .............. Tempo di latenza: tempo tra inizio operazione di accesso invio indirizzo + segnali contr. e termine operazione di accesso Misura di latenza (in teoria) cronometrando una operazione di accesso Throughput: num. di bit ( o byte ) letti o scritti per unità di tempo Misura di throughput : eseguire un gran numero di accessi dividere poi quantità totale di dati per il tempo totale richiesto 13 Fino ad ora : "velocità" <----> latenza di una operazione non throughput Si vuole anche aumentare throughput Per capire differenza: sciacquone del WC Grande serbatoio === tubo 1 ==> vaschetta del WC == tubo 2 ===> WC in genere: scarico veloce riempimento vaschetta lento il throughput del WC ( num. di "scarichi" / ∆ T ) dipende da tutti e due ......... Portata di un tubo <---> sezione tubo velocita` del liquido Tornando ai computers ..... 14 Gerarchia di memorie e Throughput C CPU + A <====> C Registri R <===> H A M E Cache veloce bus tra CPU e Cache "stretto e veloce" es: bus dei dati : una parola frequenza : 130 MHz RAM lenta bus tra Cache e RAM "largo e lento" es: bus dei dati : una linea frequenza : 33 MHz Obiettivo: vogliamo Q1 ≈ Q2 Q1 = quantita` di byte CPU -- Cache al secondo Q2 = quantita` di byte RAM -- Cache al secondo Esempio piu' dettagliato su dispense, con frequenze piu' basse (20 - 100 MHz) 15 Gerarchia di memorie e livelli di caching Cache di 1o livello piccola ( es 64 KB ) integrata su cip CPU velocita` ≈≈ velocita` della CPU spesso divisa in due : cache dati -- cache codice Cache di 2o livello collegata con bus veloce,.... piu' grande ( es 1 MB ) ..... piu' lenta ... Cache di 3o livello ...................... RAM ..... rispetto al disco e` una cache ..... memoria virtuale con swap su disco MMU preleva pagine mancanti attivando trasferimento DMA .... ................... eccetera Cache dei Browser : su disco i files prelevati da web piu' di recente .... il meccanismo di cashing e` tutto software ..... 16