La Gerarchia delle Memorie. Calcolatori Elettronici II

Documenti analoghi
Miglioramento delle prestazioni

La gerarchia di Memoria

La gerarchia di Memoria

Introduzione alle memorie cache. Sommario

Von Neumann Bottleneck

Esercizio. Si consideri una cache con 64 blocchi di 16 byte ciascuno. A quale numero di blocco corrisponde l indirizzo 1200 espresso in byte?

La gerarchia di Memoria. Calcolatori Elettronici

La gerarchia di Memoria

La memoria cache. Lab di Calcolatori

Introduzione alle memorie cache. Cristina Silvano, 06/01/2013 versione 2 1

Università degli Studi di Cassino

Università degli Studi di Cassino

Università degli Studi di Cassino e del Lazio Meridionale

Gerarchia di memoria 247

Cache: 1 livello della gerarchia di memoria

Introduzione alle gerarchie di memoria

Architettura dei sistemi di elaborazione: La memoria (parte 2)

06/05/2009. Caratteristiche desiderabili Ampia capacità Velocità Economicità

Calcolatori Elettronici

Struttura delle memorie cache

Gli attori principali di un architettura

Le memorie Cache. Sommario

La Gerarchia delle Memorie

Sistema di Memoria. Caratteristiche desiderabili Ampia capacità Velocità Economicità

Struttura delle memorie cache

Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri 1

Struttura delle memorie cache

memoria virtuale protezione

Struttura delle memorie cache

Struttura delle cache a indirizzamento diretto

Esercitazione del 19/05/ Soluzioni

Calcolatori Elettronici

REGISTRI MEMORIA CACHE MEMORIA PRINCIPALE DISCO. Figura 1 Gerarchia di memoria.

La gerarchia di memorie (2)

Cache associativa. Possibili alternative per il trasferimento di un blocco dalla memoria inferiore alla memoria superiore:

Esercitazione del 28/05/ Soluzioni

Memorie Caratteristiche principali

Gerarchia di memoria

La gerarchig. erarchia di memorie e (1) Divario delle prestazioni processore- memoria. La soluzione: gerarchia di memorie.

La gerarchia di Memoria

Architettura degli elaboratori - 2 -

La gerarchia di memorie (1)

La gerarchia di memorie (2)

Gerarchia di memoria

Architettura degli elaboratori - 2 -

La gerarchia di memorie (2)

La struttura gerarchica delle memorie

Gerarchia di memoria

Esercitazione su Gerarchie di Memoria

Lezione di Tutorato Di Architettura degli Elaboratori B 29/04/2005. SOLUZIONI: Cache

8 bit per la parola nel blocco 10 bit per l insieme (gruppo) nella cache 12 bit di etichetta. Esercizio 3 Memoria Cache

Le memorie Cache n-associative

Criteri di caratterizzazione di una memoria

Le memorie Cache. Sommario

Le memorie Cache n-associative

Gerarchia di memoria

Esercizi sulle prestazioni delle memorie cache

Blocchi di più parole

Corso di Calcolatori Elettronici I. Memorie. Prof. Roberto Canonico

Gerarchia di memoria

static dynamic random access memory

La Gerarchia di Memorie Valeria Cardellini

La struttura gerarchica delle memorie

MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI

Le memorie Cache a mappatura diretta

Esercitazione del 25/05/ Soluzioni

Memoria Cache. G. Lettieri. 16 Marzo 2017

La memoria virtuale. Calcolatori Elettronici. Valeria Cardellini Rielaborate da Salvatore Tucci

Calcolatori Elettronici

Le istruzioni del linguaggio gg macchina corrispondono ad operazioni elementari di elaborazione operazioni aritmetiche

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico

Le memorie Cache a mappatura diretta e associative

Esercitazione su Gerarchie di Memoria

Fallimenti nella TLB

PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO (5-6-7 CFU) 16 Gennaio 2014

Gerarchia di Memoria e Memorie Cache. ma rallenta R / nw. Qui : modi di aumentare velocità di R / nw. dati e codice non tutti uguali

Gerarchia di memoria

Gerarchia di Memorie

Architettura dei Calcolatori Elettronici

Calcolatori Elettronici

ISA Input / Output (I/O) Data register Controller

Corso integrato di Sistemi di Elaborazione. Modulo I. Prof. Crescenzio Gallo.

Gerarchie di memoria Politiche di rimpiazzo dei blocchi

Gerarchie di memoria Roberto Bisiani 5/22/2002 1

Gerarchie di memoria e Cache

Architettura degli Elaboratori 19 Memoria Virtuale. Prof. Andrea Sterbini

Architettura dei computer

La Memoria Virtuale Valeria Cardellini

Architettura hardware

Incremento prestazioni

Lezione n.14. La memoria cache

Segmentazione. Gestore della memoria II parte. Segmentazione. Segmentazione: Vantaggi. Segmentazione 07/06/2012. Confronto Paginazione - Segmentazione

Università degli Studi di Cassino e del Lazio Meridionale

Algoritmi di rimpiazzamento. Algoritmo con rimpiazzamento casuale

Memoria Virtuale. Background

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Transcript:

La Gerarchia delle Memorie Calcolatori Elettronici II 1

Connessione memoria processore: schema tipo Processor MAR MDR k-bit address bus n-bit data bus Memory Up to 2 k addressable locations Dimensione massima determinata dai registri di indirizzamento Word length = n bits Control lines ( R / W, MFC, etc.) Linee del bus Prelevo un blocco lungo quanto una word 2

Parametri Caratteristici delle memorie (1) tempo di accesso ta il tempo impiegato per eseguire un ciclo completo di lettura/scrittura di un dato di assegnata granularità (da quando richiedo l operazione a quando viene completata); tempo di ciclo tc Tempo minimo che deve intercorrere tra due operazioni consecutive in memoria capacità di memoria s la dimensione in byte (o parole di assegnato parallelismo) della memoria 3

Parametri Caratteristici delle memorie (2) costo per byte c serve a definire il costo completo C=c*s della memoria banda di trasferimento b l'ampiezza di banda b caratterizza il volume di dati che una memoria è in grado di trasferire verso il generico processore che la utilizza quanto di trasferimento in multipli di byte (o parole macchina di assegnata lunghezza) p esprime la grana (parallelismo) impiegato nel trasferimento dei dati da e per il processore connesso alla memoria. 4

Le Gerarchie di memorie Un sistema di calcolo ideale dovrebbe essere dotato di una memoria caratterizzata da uno spazio di indirizzi grande a piacere tempi di accesso piccoli a piacere costo basso e indipendente dalla tecnologia impiegata. I dispositivi di memoria reali utilizzati nei sistemi di calcolo non godendo di tali proprietà sono caratterizzati da soluzioni legati a specifiche tecnologie ed associati costi classi di memorie caratterizzate principalmente dalla velocità di accesso e dalla capacità. 5

Memoria: Aumento di Prestazioni A causa del ruolo critico che la memoria assume quando si cerca un incremento nel throughput del sistema, essa viene detta: The Von Neumann Bottleneck Un modo per incrementare le prestazioni del sistema è quello di aumentare opportunamente la banda della memoria (bps accessibili). Tale incremento di banda è ottenibile in tre modi : 1. Aumentando la frequenza del clock di memoria; 2. Aumentando la larghezza della word e quindi accedendo a più bit per ciclo; 3. Replicando i moduli di memoria in accesso concorrente (simile alla precedente); Soluzione : Aumentare la frequenza => Memorie più costose e di dimensioni ridotte 6

Gerarchia di Memorie La memoria Cache rappresenta il livello della gerarchia tra la CPU e la Memoria principale Capacità CPU Cache Primaria Cache Secondaria Velocità Costo per bit Memoria Principale Memoria di massa 7

Principio di Località Una delle principali proprietà dei programmi è quella della : Locality of references (90/10 rule) I Programmi tendono a riusare i dati e le istruzioni che hanno usato di recente Una regola empirica largamente verificata asserisce che un programma in media trascorre il 90% del suo tempo di esecuzione in una porzione di codice che rappresenta circa il 10% dell'intero programma (la stessa regola vare per i riferimenti sui dati) Molte istruzioni, quindi, in aree ben localizzate di un programma vengono eseguite ripetutamente in un determinato periodo, e si accede al resto del programma relativamente di rado Basandosi sulle ultime istruzioni eseguite da un programma è possibile predire con ragionevole accuratezza quali istruzioni e quali dati del programma verranno utilizzati nel prossimo futuro 8

Principio di Località Località Temporale: Rappresenta la probabilità (alta) che un'istruzione eseguita di recente venga eseguita di nuovo entro breve tempo. Località Spaziale: Rappresenta la probabilità (alta) che istruzioni vicine ad un'istruzione eseguita di recente siano anch'esse eseguite nel prossimo futuro. La vicinanza è espressa in termini di indirizzi delle istruzioni 9

Principio di Località Località Temporale Località Spaziale Portare un elemento (istruzioni o dati) nella cache quando viene richiesto per la prima volta, in modo che rimanga a disposizione nel caso di una nuova richiesta. Invece di portare dalla memoria principale alla cache un elemento alla volta, è conveniente portare un insieme (block) di elementi che risiedono in indirizzi adiacenti 10

Struttura di una Cache Parametri Caratteristici Funzione di mapping Algoritmo di Sostituzione Gestione della Coerenza 11

Parametri Caratteristici Block Size Un Blocco è un insieme di indirizzi contigui di una qualche dimensione. Per la proprietà di località spaziale conviene portare in cache un insieme di elementi facenti riferimento ad indirizzi contigui Hit Time La memoria cache può memorizzare solo un piccolo sottoinsieme di blocchi presenti in memoria principale L HIT time rappresenta il numero di cicli di clock necessari per caricare un elemento che si trova in cache (in genere coincidente con 1 ciclo di clock) 12

Miss Penalty Parametri Caratteristici Quando un elemento non viene trovato in cache si ha un miss La Miss Penalty rappresenta il numero di cicli di clock necessari per caricare l'elemento dalla memoria principale nella cache (o eventualmente direttamente nel processore) Access Time Tempo di accesso alla memoria principale ( o a una cache di livello superiore) Transfer Time Tempo di trasferimento del blocco in cui è presente l'elemento referenziato dalla memoria principale alla memoria cache. 13

Parametri Caratteristici Miss Rate Percentuale di miss (relativo all'architettura del sistema, alla funzione di mapping, agli algoritmi di gestione della coerenza, all'applicazione in esecuzione... ) Cache size Qualche Mbyte Average Access Time = thit(hit_rate) + (1-hit_rate) tmiss t(miss) in genere è circa 10 volte t(hit) 14

Funzione di Mapping Rappresenta un altro parametro identificativo della cache; Specifica la corrispondenza tra i blocchi della memoria principale e quelli della cache. Vengono distinte in questo modo tre categorie di cache: Direct Mapped Fully Associative Set Associative 15

Per gli esempi successivi Per gli esempi si farà riferimento ad una memoria principale di 64K word, organizzata in 4k blocchi di 16 word, ognuna (16 bit ) ed una cache di 128 blocchi di 16 word ciascuno (2Kword = 11 bit) 16

Direct Mapped Cache Ogni blocco può essere inserito in un solo posto nella cache. La funzione di mapping è di solito una funzione modulo; Funzione di Mapping: Blocco J j 128 Address in memoria principale Label Block Word 5 bit 7 bit Il campo Block identifica il blocco all'interno della cache Il campo word indirizza la word nel blocco La presenza o meno del blocco in cache viene verificata comparando il campo Label nell'address con il campo Label nella cache 4 bit 17

memory Block 0 Block 1 tag tag Cache Block 0 Block 1 Block 127 Block 128 Block 129 tag Block 127 Block 255 Block 256 Block 257 Tag Block Word 5 7 4 Main memory address Block 4095 18

Fully Associative Cache Ogni blocco può essere inserito ovunque nella cache Address in memoria principale Label Word 12 bit 4 bit La presenza o meno del blocco in cache viene verificata comparando il campo Label nell'address con il campo Label nella cache Il campo word indirizza la word nel blocco (Block Offset) 19

Main memory Block 0 Block 1 tag tag Cache Block 0 Block 1 Block i tag Block 127 Block 4095 Tag Word 12 4 Main memory address 20

Fully Associative Cache (2) Un blocco nuovo può essere messo ovunque; Devo togliere un blocco dalla cache solo se è piena; inoltre devo prevedere un algoritmo di sostituzione per decidere quale blocco eliminare; La ricerca di un blocco in cache è molto più costosa e lenta (ricerca associativa in parallelo); 21

Set Associative Cache Un blocco può essere posizionato in un ristretto insieme (set) di blocchi nella cache. Address in memoria principale Label Block Word 6 bit 6 bit 4 bit Un blocco viene prima mappato in un set e può essere inserito ovunque nel set La funzione di mapping del set in genere è una funzione in modulo Se ci sono n blocchi in ogni set la cache viene detta : n-way set associative 22

Main memory Block 0 Block 1 Cache Set 0 Set 1 tag tag tag tag Block 0 Block 1 Block 2 Block 3 Block 63 Block 64 Block 65 Set 63 tag tag Block 126 Block 127 Block 127 Block 128 Block 129 Block 4095 Tag Set Word 6 6 4 Main memory address 23

Ricerca di un Blocco in una Cache La cache include un campo Label (Tag) per ogni blocco per ricavare l'indirizzo del blockframe Ai fini della ricerca di un blocco in una cache tutte le label che possono contenere informazioni su di esso vengono confrontate (comparate) in parallelo. (Anche il dato viene letto parallelamente al confronto in modo da averlo immediatamente pronto se si ha un hit) Fully associative Direct Mapped Set Associative 0 1 15 0 1 15 0 1 15 Data Tag Ricerca 24

Considerazioni Bisogna tenere in conto lo spazio (<=> costo) occupato dalle Label (una per ogni blocco) (direct mapped -> set associative -> full associative) Spesso c'è bisogno di etichettare i blocchi in cache che sono stati modificati Viene utilizzato in genere anche un bit per la modifica (dirty bit) per indicare se il blocco in cache è stato modificato in un ciclo di scrittura; Serve solo nei sistemi che non fanno uso del metodo write throught 25

Considerazioni (2) Una cache potrebbe contenere informazioni non piu' valide C'è bisogno di un meccanismo per invalidare i blocchi nella cache: il modo più comune per farlo è quello di aggiungere un bit alla label (valid bit) Il bit viene posto a 0 all'accensione e ogni volta che nella memoria principale vengono caricati programmi e dati nuovi da disco (DMA). I dati non passano per la cache per motivi sia di costo che di prestazioni Viene posto a 1 la prima volta che il blocco viene caricato dalla memoria principale Ogni volta che un blocco in memoria principale viene aggiornato con codice e dati che non sono passati per la cache, viene effettuato un controllo per determinare se l'elemento è presente nella cache. Se lo è il suo bit di validità viene azzerato garantendo che non ci siano dati obsoleti in cache 26

Considerazioni (3) Quando deve essere inserito un blocco in un set già pieno : Una cache direct mapped possiede un solo blocco disponibile per ogni blocco in memoria principale: Un nuovo blocco che deve essere copiato nella cache in blocco già pieno provoca sempre una copia del vecchio blocco in memoria principale Una cache fully associative ha a disposizione tutta la cache per il caching dei blocchi: Un nuovo blocco che deve essere copiato nella cache fa uscire un altro già residente solo se l'intera cache è già piena Una cache set-associativa ha per ogni blocco in memoria principale uno spazio pari al suo grado di associatività: Un nuovo blocco che deve essere copiato nella cache fa uscire un altro già residente solo se il set ad esso associato è già pieno. 27

Algoritmi di Sostituzione Quando si ha un cache miss su un blocco: Se la cache ha blocchi disponibili per inserire un nuovo blocco, si procede al caricamento dalla memoria nel set relativo al blocco In una Direct Mapped Cache se il blocco è occupato, si procede alla sostituzione del blocco (se il dirty bit == 0, non si effettua la copia in memoria principale) Per le cache Set e Fully associative, si cerca nel set un blocco col dirty bit ancora a 0 (non modificato) e se viene trovato si procede alla sostituzione. Nel caso tutti i blocchi nel set siano stati modificati, si deve procedere alla ricerca del migliore blocco da sostituire. Gli approcci piu' utilizzati sono 2 : Random e Least recently Used (LRU) replacement 28

Algoritmi di Sostituzione Random LRU Viene usato per distribuire uniformemente l'allocazione dei blocchi. Il blocco candidato viene scelto in modo pseudocasuale. Utilizzare un algoritmo pseudocausale e quindi riproducibile risulta particolarmente indicato per facilitare le operazioni di debugging Riduce la probabilità di sostituire blocchi che verranno acceduti nel prossimo futuro. Il blocco sostituito è quello che non si usa da piu' tempo 29

LRU Il controllore ha bisogno di mantenere traccia degli accessi ai blocchi mentre l'elaborazione prosegue; Viene utilizzato un contatore a 2 bit per ogni blocco: CASO A - Quando c'e' un hit : Il contatore del blocco dell'hit viene azzerato, I contatori con valori inferiori a quello dell'hit vengono incrementati, Gli altri rimangono invariati, CASO B - Se c è un miss e c'è un blocco libero: Viene inserito il nuovo blocco con contatore=0 Tutti gli altri contatori vengono incrementati di 1 30

LRU CASO C - Se c è un miss e tutti i blocchi nel set sono occupati: Si sposta un blocco con il valore più alto di conteggio, Si inserisce il nuovo blocco con il contatore a 0, Tutti gli altri contatori vengono incrementati di 1, 31

LRU - CASO A 0 1 Libero Occupato 1 0 0 1 1 0 1 0 HIT 1 1 HIT 1 1 32

0 1 LRU - CASO B Libero Occupato 1 0 MISS 0 1 1 0 1 0 1 1 HIT 1 1 MISS 1 1 33

LRU - CASO C 1 0 0 1 Libero Occupato 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 1 HIT 1 1 1 0 1 1 MISS 1 1 1 1 MISS 34

Considerazioni Risultati sperimentali mostrano che l'algoritmo Random ha prestazioni pressocchè identiche all' LRU quando la cache supera i 64 Kbyte; L'Hardware per implementare l'algoritmo Random è molto più semplice di quello per LRU; Esistono altri algoritmi di sostituzione (come il FIFO) ma in genere hanno performance peggiori dell'algoritmo Random e sono più difficili da implementare... 35

Gestione della Coerenza Le operazioni di lettura sono predominanti sulle operazioni di scrittura (tutte le operazioni su istruzioni sono solo operazioni di lettura) Nel caso di una operazione di lettura, la lettura del dato puo' essere fatta parallelamente al confronto delle label. Se c'e' un Miss non ci sono problemi perchè la cache non è stata comunque sporcata Nel caso di una operazione di scrittura, non è possibile cominciare l'operazione finchè non si ha un'hit. Visto che l'operazione di accesso all'area dati della cache, non puo' avvenire in parallelo con il confronto delle label, in genere, un'operazione di scrittura impiega più tempo di una di lettura. 36

Operazioni di Write Ci sono due politiche di base per le operazioni di write : Write Through (o store through) L'informazione viene scritta in intrambi i blocchi (cache e memoria principale) Write Back (o copy back) L'informazione viene scritta solo nel blocco della cache. Questi viene scritto nella memoria principale solo quando il blocco deve essere scambiato. Fa uso del dirty bit. 37

Vantaggi e Svantaggi Sia Write back che write through hanno i loro pro e contro Write Through PRO: La memoria principale è sempre allineata con la cache (importante per sistemi multiprocessore); PRO: più facilmente implementabile; CONTRO: scritture alla velocità della memoria più lenta; CONTRO: 1 scrittura per ogni modifica del blocco=> occupa più banda (e quindi viene utilizzata per lo piu' tra cache L1 e cache L2); Write Back PRO: scritture alla velocità della memoria cache; PRO: scritture multiple sullo stesso blocco richiedono 1 sola scrittura nella memoria piu' lenta (meno occupazione di banda); CONTRO: memorie non allineate; 38

Vantaggi e Svantaggi (2) Write Through Quando una CPU attende il completamento di una scrittura si dice in write stall. Un'ottimizzazione comune per ridurre lo stallo è quello di utilizzare dei write buffers che permettono al processore di continuare l'esecuzione del programma mentre la memoria viene aggiornata 39

Write Miss Nel caso in cui si abbia un write miss si hanno due opzioni: Write Allocate : Il blocco viene caricato in memoria cache e si effettua l'operazione di write (che genererà un hit) sulla cache; In genere utilizzata assieme a Write-Back (le future modifiche si faranno sul blocco nella cache); No Write Allocate : Il blocco viene modificato direttamente nella memoria principale e non viene inserito nella cache; In genere utilizzata assieme a Write-Through (le scritture avvengono comunque anche nella memoria principale ed è inutile inserire il blocco nella cache); 40

Miglioramento delle Prestazioni Interleaving (indirizzi successivi sono memorizzati in moduli diversi; quando devo caricare un blocco posso caricarlo in un colpo solo da tutti i moduli) Riduzione Hit-Time Rendere le scritture più veloci Riduzione Miss-Penalty Rendere i write miss più veloci Rendere i read miss più veloci (Early restart Out of order fetch) 2 livelli di cache t_ave=h1*t_c1+(1-h1)*h2*t_c2+(1-h1)*(1-h2)m t_ci : tempo accesso cache Li ; M : tempo di accesso Memoria hi : hit rate cache i 41

Miglioramento delle Prestazioni Aumento velocità delle hits; Buffer di scrittura (in un operazione di write trough la CPU non ha la necessità di ASPETTARE che la scrittura sia completata si prevede un buffer di scrittura in cui la CPU ripone il blocco che deve essere scritto in memoria e poi prosegue la sua esecuzione senza attendere il completamento della operazione). Prefetch con istruzioni macchina specifiche (evita lo stallo della CPU dovuto ad un miss in lettura nell attesa di caricare un nuovo blocco in cache); Cache senza blocco (gestiscono 2 o più miss in contemporanea, da una parte si caricano i nuovi blocchi dall altro si serve la CPU per altre istruzioni senza bloccarla); 42