LE MEMORIE Davide D’Amico.

Slides:



Advertisements
Presentazioni simili
Gerarchie di memoria Paolo Meloni Universita’ degli studi di Cagliari.
Advertisements

Gestione della memoria centrale
Circuiti Aritmetico-Logici
Unità D2 Archivi e file.
Hard disk.
File System Cos’è un File System File e Directory
Realizzazione del file system
Memoria virtuale Memoria virtuale – separazione della memoria logica dell’utente dalla memoria fisica. Solo alcune parti di un programma devono trovarsi.
Realizzazione del file system
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Memorie.
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
2 Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione dati memorizzazione dati trasferimento.
File.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
La memoria I sistemi di memoria di un elaboratore possono essere suddivisi in: Memoria interna al processore Memoria principale Memoria secondaria.
Schema di principio del SCA di una MMU Memory Management Unit
La memoria I sistemi di memoria di un elaboratore possono essere suddivisi in: Memoria interna al processore Memoria principale Memoria secondaria.
Gerarchie di Memoria e Cache
La conversione analogico-digitale, campionamento e quantizzazione
Il Linguaggio Macchina
Com’è fatto un elaboratore?
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
Università di Trieste Calcolatori Elettronici a.a Omero TuzziL01, Basi 1 Sommario: 1. Concetto di bit. 2. Indirizzi di memoria. 3. Ordinamento.
Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE.
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
L’Architettura del Sistema di Elaborazione
Cos’è una sequenza? Una sequenza è una successione finita di valori, dove ogni valore ha una durata prefissata e costante (T). I valori della sequenza.
Architettura dell’elaboratore
MEMORIA. Organizzazione fisica della Memoria Decodi ficatore degli indirizzi … Sense/ Write Sense/ Write Sense/ Write Sense/
Modulo 1 - Concetti di base della Tecnologia dell'Informazione
L' ARCHITETTURA DI VON NEUMANN
I vettore interruzioni
Architettura del calcolatore
La gerarchia di memoria Ing. Rosa Senatore Università degli Studi di Salerno Corso di Calcolatori Elettronici Anno 2013/14.
ELETTRONICA DIGITALE (2^ Parte) (8)
Unità centrale di processo
La RAM, insieme al microprocessore, è uno degli elementi più importanti all’interno di un elaboratore. Essa rappresenta un’area in cui il computer è in.
Esercitazioni I/O. Dischi: Esercizio 1 Si consideri un programma che legge blocchi di 2 KB da disco, esegue un’elaborazione su questi, e quindi li riscrive.
Sistemi Elettronici Programmabili: La Memoria Principale 6-1 Sistemi Elettronici Programmabili La memoria principale.
Architettura di una CPU
Teoria dei sistemi Autore: LUCA ORRU'.
Migliorare le prestazioni delle cache
Architettura del calcolatore
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.
SCHEDA INFORMATIVA DI UNITÀ. Introduzione Applicazione della gerarchia di memoria –Memoria cache fra la CPU e la memoria centrale Il processore vedrà.
SCHEDA INFORMATIVA DI UNITÀ. Introduzione Applicazione della gerarchia di memoria –Memoria cache fra la CPU e la memoria centrale Il processore vedrà.
Luglio 2004Generalità Hardware1 Luglio Generalità Hardware2 MACCHINA DI VON NEUMAN (1947) BUS Processore Elaborazione Controllo Memoria Ingresso.
SCHEDA INFORMATIVA DI UNITÀ. Introduzione Esigenze di memoria per un sistema di calcolo –Dati –Istruzioni Obiettivi –Raggiungere i migliori compromessi.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Calcolatori Elettronici Il Processore (2)
Tipo Documento: unità didattica 3 Modulo 7 Compilatore: Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione C.Corpo D.Riepilogo.
La gerarchia di memorie (1) Calcolatori Elettronici Valeria Cardellini Rielaborate da Salvatore Tucci.
Calcolatori Elettronici Valutazione delle Prestazioni Francesco Lo Presti Rielaborate da Salvatore Tucci.
MICROPROCESSORI Un processore è un circuito integrato in grado di effettuare operazioni di calcolo o di elaborazione dell'informazione Il circuito contiene.
Clocking Il segnale di Clock definisce quando i segnali possono essere letti e quando possono essere scritti Fronte di discesa (negativo) Falling edge.
Sistema operativo Il Sistema Operativo gestisce le risorse hw e sw del sistema di elaborazione Facilita l'interazione tra utente e sistema Esistono diversi.
L’esecuzione dei programmi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Struttura Fondamentale degli Elaboratori Elaboratore –È un sistema numerico –È un sistema automatico –È un sistema a programamzione registrabile –Ha una.
Tipo Documento: unità didattica 3 Modulo 7 Compilatore: Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione C.Corpo D.Riepilogo.
Il Processore Il processore è la componente dell’unità centrale che elabora le informazioni contenute nella memoria principale L’elaborazione avviene eseguedo.
Presentazione di sistemi Ambrosio Federica Anna Esposito 3C inf.
I Microprocessori Unità 3 del libro Internet Working Sistemi e reti.
Il modello di Von Neumann
 Ogni processo che deve essere eseguito da un sistema di elaborazione, deve essere caricato e risiedere almeno parzialmente nella memoria centrale 
Tipologie di memoria: Elettroniche Magnetiche Ottiche La qualità di una memoria dipende da vari parametri: Modo di accesso: tecnica utilizzata per accedere.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Transcript della presentazione:

LE MEMORIE Davide D’Amico

PERCHE’ E’ IMPORTANTE LA VELOCITA’ DELLE MEMORIE ? I tempi di accesso alle normali memorie RAM sono nettamente più alti dei tempi di propagazione attraverso le unità CPU, e questo crea il cosiddetto “COLLO DI BOTTIGLIA” in termini di prestazioni.

PRINCIPIO DI LOCALITA’ SPAZIALE E TEMPORALE INTRODUZIONE ASSIOMA DEL PROGETTO HARDWARE : “PICCOLO E VELOCE” APPLICATO ALLE MEMORIE PER DUE RAGIONI DIFFERENTI: RITARDO MAGGIORE NELLA PROPAGAZIONE DEI SEGNALI MEMORIE PICCOLE PIU’ VELOCI DELLE GROSSE PRINCIPIO DI LOCALITA’ SPAZIALE E TEMPORALE LOCALITA’ TEMPORALE : QUANDO UNA CELLA DI MEMORIA VIENE UTILIZZATA, E’ PROBABILE CHE PRESTO VENGA UTILIZZATA DI NUOVO LOCALITA’ SPAZIALE : QUANDO UNA CELLA DI MEMORIA VIENE UTILIZZATA, LE CELLE VICINE HANNO UN’ALTA PROBABILITA’ DI ESSERE A LORO VOLTA UTILIZZATE DI LI’ A POCO PRINCIPIO DI LOCALITA’ ASSIOMA “PICCOLO E VELOCE” GERARCHIA DI MEMORIE +

GERARCHIA DI MEMORIE OBIETTIVO Sfruttando il principio di località, la memoria di un calcolatore viene realizzata come una gerarchia di memorie Ci sono molti livelli di memoria ciascuna di diversa velocità e dimensione Le memorie veloci sono più costose e perciò di solito più piccole Le memorie lente sono più economiche ma anche molto più grandi Al livello più alto, quello più vicino alla CPU, troviamo memorie più piccole e veloci Al livello più basso quelle più lente e meno costose DARE AL PROGRAMMATORE L’ILLUSIONE DI POTER USUFRUIRE DI UNA MEMORIA AL TEMPO STESSO VELOCE (idealmente, quanto la memoria al livello più alto) E GRANDE (quanto quella al livello più basso) OBIETTIVO

TECNOLOGIA DI MEMORIZZAZIONE TEMPO DI ACCESSO TIPICO GERARCHIA DI MEMORIE VI SONO 3 TECNOLOGIE PRINCIPALI PER LA COSTRUZIONE DELLE GERARCHIE DI MEMORIE : LA MEMORIA PRINCIPALE E’ REALIZZATA CON DRAM (memoria dinamica ad accesso casuale) LA MEMORIA CACHE E’ REALIZZATA USANDO SRAM (memoria statica ad accesso casuale) L’ULTIMA TECNOLOGIA, USATA PER IMPLEMENTARE IL LIVELLO PIU’ CAPIENTE E PIU’ LENTO DELLA GERARCHIA, E’ RAPPRESENTATO DAI DISCHI MAGNETICI. IL TEMPO DI ACCESSO ED IL COSTO PER BIT VARIANO NOTEVOLMENTE TRA QUESTE TECNOLOGIE, COME MOSTRATO NELLA TABELLA SEGUENTE, CHE RIPORTA VALORI TIPICI PER IL 1997 ESPRESSI IN DOLLARI TECNOLOGIA DI MEMORIZZAZIONE TEMPO DI ACCESSO TIPICO COSTO PER Mbyte NEL 1997 SRAM 5 – 25 ns $100 - $250 DRAM 60 – 120 ns $5 - $10 DISCHI MAGNETICI 10 – 20 milioni ns $0.10 - $0.20 LA DIFFERENZA DI PREZZO DIPENDE DAL FATTO CHE LE MEMORIE DRAM UTILIZZANO MENO TRANSISTORI PER OGNI BIT DA MEMORIZZARE : CONSENTONO QUINDI DI RAGGIUNGERE CAPACITA’ MAGGIORI A PARITA’ DI AREA DI SILICIO

Gerarchia di Memoria : Esempio VELOCITA’ DIMENSIONE COSTO Maggiore Minore Più piccolo Più grande Più elevato Più basso

Gerarchia di Memoria : Comunicazione tra livelli Anche se una gerarchia di memoria è in genere composta da più livelli, i dati vengono scambiati solo tra 2 livelli adiacenti : LIVELLO SUPERIORE LIVELLO INFERIORE La più piccola unità d’informazione che un livello sottostante può cedere o richiedere al livello superiore viene chiamata BLOCCO o LINEA. LIVELLO SUPERIORE BLOCCHI LIVELLO INFERIORE

GLOSSARIO HIT : Se il dato richiesto dal processore si trova in uno dei blocchi presenti nel livello superiore si dice che la richiesta ha successo ( in inglese HIT ). MISS : Se il dato manca ( in inglese MISS ) , per trovare il blocco bisogna accedere al livello inferiore della gerarchia . HIT RATE : E’ la frequenza dei successi , ossia la frazione di accessi alla memoria che hanno trovato il dato desiderato nel livello superiore. Spesso questo parametro viene utilizzato come indice delle prestazioni della memoria gerarchica. MISS RATE : E’ la frequenza dei fallimenti , ossia la frazione di accessi che non hanno trovato il dato nel livello superiore ( miss rate = 1.0 – hit rate ) .

GLOSSARIO HIT TIME : E’ il tempo di successo, cioè il tempo di accesso al livello superiore della gerarchia di memoria. Comprende anche il tempo necessario a stabilire se il tentativo di accesso si risolve in un successo o in un fallimento. MISS PENALTY : E’ la penalità di fallimento, cioè il tempo necessario per sostituire un blocco nel livello superiore con un altro blocco preso dal livello inferiore e per passare alla CPU le informazioni contenute in questo nuovo blocco. MISS TIME : E’ il tempo di fallimento, ed è dato da: miss time = hit time + miss penalty TM : E’ il tempo medio di accesso alla memoria, ed è dato da: TM = ( hit rate * hit time ) + ( miss rate * miss time ) = = ( hit rate * hit time ) + [ miss rate * ( hit time + miss penalty )] = = [ hit time * (hit rate + miss rate)] + (miss rate * miss penalty) Dato che ovviamente è : hit rate + miss rate = 1 , si ottiene che TM = hit time + ( miss rate * miss penalty )

CACHE E’ un buffer piccolo e veloce posto tra CPU e memoria centrale Rende più scorrevole il collo di bottiglia tra processore ( più veloce ) e memoria ( più lenta ) Affinché la cache sia sufficientemente veloce , la sua dimensione dovrà essere molto ridotta rispetto alla memoria centrale Infatti per una memoria VELOCITA’ (tempo di accesso) e DIMENSIONI sono parametri in conflitto

ESEMPIO DI UTILIZZO DELLA MEMORIA CACHE Si faccia l’ipotesi che una cache sia 5 volte più veloce della memoria principale e che possa venir usata per il 90% del tempo.Qual’è il guadagno in velocità dovuto all’uso della cache? RISPOSTA Applichiamo la LEGGE DI AMDAHL USANDO LA CACHE SI OTTIENE QUINDI UNO SPEEDUP 3,6 VOLTE SUPERIORE

A TALE SCOPO SONO STATE DEFINITE ESSENZIALMENTE 3 SOLUZIONI : TIPI DI CACHE IN FASE DI ESECUZIONE, LA CPU PUO’ A PRIORI TENTARE DI ACCEDERE A UNA QUALUNQUE PAROLA NELLO SPAZIO TOTALE DI INDIRIZZAMENTO, SPAZIO CHE PUO’ ESSERE VISTO COME CORRISPONDENTE ALL’INTERA MEMORIA RAM OCCORRE QUINDI DEFINIRE UNA CORRISPONDENZA TRA INDIRIZZO IN MEMORIA DELLA PAROLA E LOCAZIONE NELLA CACHE A TALE SCOPO SONO STATE DEFINITE ESSENZIALMENTE 3 SOLUZIONI : CACHE SET ASSOCIATIVE A N VIE CACHE COMPLETAMENTE ASSOCIATIVA CACHE A INDIRIZZAMENTO DIRETTO

PROGETTO DI UNA GERARCHIA DI MEMORIA : 4 DOMANDE A CUI BISOGNA RISPONDERE DOVE DI PUO’ METTERE UN BLOCCO CHE VIENE PORTATO DAL LIVELLO INFERIORE AL LIVELLO SUPERIORE ? PROBLEMA DEL PIAZZAMENTO DI UN BLOCCO DOVE SI TROVA IL BLOCCO CHE CONTIENE IL DATO RICHIESTO ? PROBLEMA DELLA RICERCA DI UN BLOCCO QUALE BLOCCO PRESENTE AL LIVELLO SUPERIORE DEVE ESSERE SOSTITUITO DA UNO DEL LIVELLO INFERIORE ? PROBLEMA DELLA SOSTITUZIONE DI UN BLOCCO CHE COSA SUCCEDE IN CASO DI SCRITTURA ? PROBLEMA DELLA STRATEGIA DI SCRITTURA

CACHE A INDIRIZZAMENTO DIRETTO OGNI LOCAZIONE DI MEMORIA CORRISPONDE ESATTAMENTE A UNA LOCAZIONE DELLA CACHE LA CORRISPONDENZA TRA INDIRIZZO DI MEMORIA E LOCAZIONE NELLA CACHE E’ DATA DA: ( Ind. blocco )cache = ( Ind. Blocco )mem modulo ( #blocchi nella cache ) ESSENDO IL NUMERO DI ELEMENTI NELLA CACHE UNA POTENZA DI 2, INVECE DI CALCOLARE IL MODULO PER INDIRIZZARE LA CACHE, BASTA CONSIDERARE IL log 2 # blocchi nella CACHE ) ( bit meno significativi dell’ ( Ind. Blocco )mem

ESEMPIO DI FUNZIONAMENTO PER UNA CACHE A INDIRIZZAMENTO DIRETTO MEMORIA CENTRALE di 32 locazioni Gli ( Ind. Blocco )mem vengono codificati con 5 bit XXXXX MEMORIA CACHE di 8 locazioni Gli ( Ind. blocco )cache vengono codificati con i log2(8)=3 bit meno significativi dell’ ( Ind. Blocco )mem che quindi vengono utilizzati come indice della cache KKK L’ ( Ind. Blocco )mem rimane così suddiviso in campi : XXXXX XXKKK

ESEMPIO TUTTI GLI INDIRIZZI CHE TERMINANO CON LA CONFIGURAZIONE 001 , CIOE’ 00001 , 01001 , 10001 , 11001 , CORRISPONDONO ALL’ELEMENTO 001 DELLA CACHE; ALLO STESSO MODO SI FA PER GLI INDIRIZZI CHE TERMINANO CON 101

) ( log bit meno significativi dell’ CACHE SET ASSOCIATIVE A N VIE E’ COSTITUITA DA NUMEROSI INSIEMI (SET) OGNUNO DEI QUALI COMPRENDE N BLOCCHI OGNI BLOCCO DELLA MEMORIA CORRISPONDE AD UN UNICO INSIEME DELLA CACHE E QUINDI PUO’ ESSERE TRASFERITO IN UNO QUALSIASI DEGLI N ELEMENTI DELL’INSIEME . L’INSIEME CHE CONTIENE IL BLOCCO VIENE INDIVIDUATO DA: ( Insieme )cache = ( Ind. Blocco )mem modulo ( #insiemi nella cache ) ESSENDO IL NUMERO DI ELEMENTI NELLA CACHE UNA POTENZA DI 2, INVECE DI CALCOLARE IL MODULO PER INDIRIZZARE LA CACHE, BASTA CONSIDERARE IL log 2 # insiemi nella CACHE ) ( bit meno significativi dell’ ( Ind. Blocco )mem

ESEMPIO DI FUNZIONAMENTO PER UNA CACHE SET ASSOCIATIVA A 2 VIE MEMORIA CENTRALE di 32 locazioni Gli ( Ind. Blocco )mem vengono codificati con 5 bit XXXXX MEMORIA CACHE di 8 locazioni Gli ( Insiemi )cache vengono codificati con i log2(4)=2 bit meno significativi dell’ ( Ind. Blocco )mem che quindi vengono utilizzati come indice della cache KK L’ ( Ind. Blocco )mem rimane così suddiviso in campi : XXXXX XXXKK

ESEMPIO 0 1 2 3 INSIEME “00” DELLA CACHE 00000 00100 01000 11000 0 1 2 3 INSIEME “00” DELLA CACHE 00000 00100 01000 11000 TUTTI GLI INDIRIZZI CHE TERMINANO CON 00 , CIOE’ 00000 , 00100 , 01000 , 11000 , CORRISPONDONO ALL’INSIEME 00 DELLA CACHE , E COSI’ VIA PER GLI ALTRI INDIRIZZI.

CACHE COMPLETAMENTE ASSOCIATIVA UN BLOCCO DI MEMORIA PUO’ ESSERE MESSO IN UNA QUALSIASI POSIZIONE DELLA MEMORIA CACHE UNA CACHE DI M ELEMENTI COMPLETAMENTE ASSOCIATIVA E’ UNA CACHE SET ASSOCIATIVA A M VIE : C’E’ UN SOLO INSIEME DI M BLOCCHI E UN ELEMENTO PUO’ TROVARSI IN UNO QUALSIASI DEI BLOCCHI DELL’INSIEME MEMORIA CACHE 001 111 00100 01001

PROBLEMA DEL PIAZZAMENTO DI UN BLOCCO SUPPONIAMO DI VOLER OPERARE UN PIAZZAMENTO DEL BLOCCO DI INDIRIZZO 12, RISPETTIVAMENTE, IN CACHE DA 8 BLOCCHI A INDIRIZZAMENTO DIRETTO, SET ASSOCIATIVA A 2 VIE E COMPLETAMENTE ASSOCIATIVA INDIRIZZAMENTO DIRETTO SET – ASSOCIATIVA A 2 VIE COMPLETAMENTE ASSOCIATIVA 0 1 2 3 4 5 6 7 Num. 0 1 2 3 Num. 0 1 2 3 4 5 6 7 Dati Dati 12 Indirizzo 12 Indirizzo 12 Indirizzo (Ind. blocco)cache= ( 12 modulo 8 ) = 4 FORMULA ( Insieme)cache= ( 12 modulo 4 ) = 0 FORMULA

PROBLEMA DELLA RICERCA DI UN BLOCCO La corrispondenza tra CELLE di MEMORIA e LOCAZIONI nella CACHE non è biunivoca Infatti più celle di memoria concorrono per occupare la stessa locazione in memoria cache , perché hanno lo stesso campo indice E’ necessario disporre di un metodo per capire quando un blocco della cache non contiene informazioni valide. Ad esempio quando il processore parte, la cache è vuota e le informazioni nelle etichette non hanno alcun significato. Per distinguere queste celle, bisogna registrare nella CACHE anche i restanti bit ( i più significativi ) dell’(Ind. Blocco)mem. Tali bit costituiscono il campo etichetta , indicato con t ( TAG ) A questo scopo si può introdurre per ogni elemento della cache un bit di validità.

ESEMPIO DI FUNZIONAMENTO PER UNA CACHE A INDIRIZZAMENTO DIRETTO MEMORIA CENTRALE di 32 locazioni Gli ( Ind. Blocco )mem vengono codificati con 5 bit XXXXX MEMORIA CACHE di 8 locazioni Gli ( Ind. blocco )cache vengono codificati con i log2(8)=3 bit meno significativi dell’ ( Ind. Blocco )mem KKK L’ ( Ind. Blocco )mem rimane così suddiviso in campi : XXXXX TTKKK

ESEMPIO di FUNZIONAMENTO 1° CASO di MISS : STATO INIZIALE DELLA CACHE DOPO L’ACCENSIONE DEL PC 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111 RICHIESTA 10110 dalla CPU Indice V TAG DATI 000 001 010 011 100 101 110 111 xx N xx N xx N xx N xx N xx N MISS xx N xx N MEMORIA CENTRALE MEMORIA CACHE

ESEMPIO di FUNZIONAMENTO 1° CASO di MISS : DOPO LA GESTIONE DEL FALLIMENTO DI ACCESSO ALL’INDIRIZZO RICHIESTO 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111 RICHIESTA 10110 dalla CPU Indice V TAG DATI 000 001 010 011 100 101 110 111 xx N xx N xx N xx N xx N xx N S 10 MEMORIA (10110) N xx xx N MEMORIA CENTRALE MEMORIA CACHE

ESEMPIO di FUNZIONAMENTO 2° CASO di MISS : CACHE PIENA 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111 RICHIESTA 10101 dalla CPU MEMORIA (00000) Indice V TAG DATI MEMORIA (01001) 000 001 010 011 100 101 110 111 00 S MEMORIA (10010) 01 S MEMORIA (11011) 10 S MEMORIA (11100) 11 S MEMORIA (01101) 11 S MISS MEMORIA (10110) 01 S MEMORIA (10111) 10 S 10 S MEMORIA CENTRALE MEMORIA CACHE

ESEMPIO di FUNZIONAMENTO 2° CASO di MISS : DOPO LA GESTIONE DEL FALLIMENTO DI ACCESSO ALL’INDIRIZZO RICHIESTO 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111 RICHIESTA 10101 dalla CPU MEMORIA (00000) Indice V TAG DATI MEMORIA (01001) 000 001 010 011 100 101 110 111 00 S MEMORIA (10010) 01 S MEMORIA (11011) 10 S MEMORIA (11100) 11 S MEMORIA (01101) 11 S MEMORIA (10110) S 10 MEMORIA (10101) 01 S MEMORIA (10111) 10 S 10 S MEMORIA CENTRALE MEMORIA CACHE

ESEMPIO di FUNZIONAMENTO CASO di HIT RICHIESTA 11011 dalla CPU 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111 MEMORIA (00000) Indice V TAG DATI MEMORIA (01001) 000 001 010 011 100 101 110 111 HIT 00 S MEMORIA (10010) 01 S MEMORIA (11011) 10 S MEMORIA (11100) S 11 MEMORIA (11011) 11 S MEMORIA (01101) 11 S MEMORIA (10110) 01 S MEMORIA (10111) 10 S 10 S MEMORIA CENTRALE MEMORIA CACHE

Indirizzo in MEMORIA (con l’indicazione della posizione del bit ) CACHE a INDIRIZ. DIRETTO da 4 Kbyte e blocco corrispondente a una sola parola di 32 bit Indirizzo in MEMORIA (con l’indicazione della posizione del bit ) 31 30 29 28 .…. 6 15 14 13 12 11 10 9 …. 4 3 2 1 0 HIT DATO t k Etichetta 20 10 Spiazzamento del byte 2 Indice Indice V Tag Dati 1 2 … S S … 1021 1022 1023 20 32 =

Miglioramento del grado di efficienza della Cache La Memoria Cache descritta prima non sfrutta il principio di località spaziale degli accessi in quanto ogni parola corrisponde ad un blocco Per trarre vantaggio dalla località spaziale è necessario che la dimensione del blocco della cache sia maggiore della dimensione della parola di memoria, in modo che il blocco contenga più di una sola parola. E’ necessario quindi un campo aggiuntivo dell’ indirizzo che rappresenti lo spiazzamento (offset ) della parola nel blocco Un indirizzo di memoria risulta ora diviso in 3 campi : ETICHETTA INDICE SPIAZZAMENTO

Miglioramento del grado di efficienza della Cache L’etichetta, da confrontare con il contenuto del campo etichetta della cache, viene utilizzata per controllare tutti i blocchi nell’insieme selezionato dall’indice (cache set associativa), il blocco selezionato dall’ indice (cache a indirizzamento diretto) oppure tutti i blocchi (cache completamente associativa). L’indice serve a identificare l’insieme (cache set associativa) oppure il blocco (cache a indirizzamento diretto). In una cache completamente associativa, il campo indice non serve poiché c’è un solo insieme. Lo spiazzamento ( offset ) nel blocco indica l’indirizzo della parola o del byte desiderati all’interno del blocco.

Indirizzo in MEMORIA (con l’indicazione della posizione del bit ) CACHE a INDIRIZ. DIRETTO da 64 Kbyte e blocco corrispondente a 4 parole di 32 bit Indirizzo in MEMORIA (con l’indicazione della posizione del bit ) 31 30 29 28 ……. ………17 16 15 14 ….. 5 4 3 2 1 0 HIT DATO t k l Spiazzamento del byte 2 Etichetta 16 12 2 Indice Spiazzamento 16 bit 128 bit Indice V Tag Dati 1 2 … S 4 K blocchi … 4093 4094 4095 32 32 32 32 32 = MUX

Problema della ricerca di un blocco in una cache set – associativa a n vie Ogni blocco della cache comprende ancora un’etichetta che permette di individuare l’indirizzo del blocco. Il valore dell’indice serve a selezionare l’insieme che contiene l’indirizzo desiderato; per ogni blocco dell’insieme che potrebbe contenere l’informazione cercata viene controllata l’etichetta per verificare se corrisponde all’indirizzo richiesto dalla CPU. Le etichette di tutti i blocchi compresi in questo insieme debbono essere controllate, e per ottimizzare le prestazioni, vengono esaminate in parallelo. In una cache completamente associativa c’è un unico insieme e tutti i blocchi debbono essere esaminati in parallelo: di conseguenza, non c’è indice e l’intero indirizzo, a parte lo spiazzamento nel blocco, viene confrontato con l’etichetta di ogni blocco: occorrono tanti comparatori quanti sono i blocchi. In una cache set – associativa a n vie, sono necessari n comparatori, oltre a un multiplexer da n a 1 per scegliere tra gli n possibili blocchi dell’insieme selezionato. I comparatori individuano quale elemento dell’insieme corrisponde all’etichetta e forniscono quindi gli ingressi di selezione del multiplexer, in modo da avviare all’uscita uno solo degli n blocchi dell’insieme selezionato.

Problema della ricerca di un blocco in una cache set – associativa a n vie Oltre al costo, correlato ai comparatori aggiunti, occorre tenere conto dei ritardi imposti dalla necessità di confrontare e selezionare l’elemento desiderato tra quelli dell’insieme. D’altra parte, è chiaro che la soluzione completamente associativa permette uno sfruttamento migliore dello spazio disponibile in cache, dato che, ad esempio, in fase di scrittura, è possibile trasferire un blocco dalla RAM a un qualsiasi blocco della cache. In ogni gerarchia di memoria, la scelta tra lo schema a indirizzamento diretto, quello set – associativo e quello completamente associativo dipende dal confronto tra il costo di un fallimento e quello di realizzazione dell’associatività, sia dal punto di vista del tempo sia da quello della circuiteria aggiuntiva.

CACHE SET ASSOCIATIVA a 4 vie da 4Kbyte e blocco corrispondente a 4 parole da 32 bit 31 30 29 28 .…. 15 14 13 12 1110 9 87654 3 2 1 0 t k Spiazzamento del byte Etichetta 22 8 Indice Indice V Tag Dati V Tag Dati V Tag Dati V Tag Dati 1 2 … S S S S … 253 254 255 32 = MUX HIT DATO

PROBLEMA DELLA SOSTITUZIONE DI UN BLOCCO Quando si verifica un fallimento nell’accesso alla cache, nel caso di cache a indirizzamento diretto c’è un solo candidato alla sostituzione, quindi il problema si risolve immediatamente. Nella cache set associativa e in quella completamente associativa abbiamo bisogno di una politica di sostituzione, perché ogni blocco compreso nell’insieme è un possibile candidato Le principali strategie utilizzate per la scelta del blocco da sostituire sono 3 : Sostituzione casuale Sostituzione del blocco usato meno di recente (LRU) Sostituzione del tipo “First In First Out” La sostituzione casuale ha il vantaggio di essere semplice da realizzare ma si rischia di sostituire un blocco che è stato scritto da poco e cui si tenterà ben presto di accedere nuovamente. La politica LRU diventa sempre più costosa al crescere dei numeri di blocchi di cui bisogna tenere traccia.

PROBLEMA DELLA STRATEGIA DI SCRITTURA Il problema nasce dalla necessità che quando si deve scrivere il risultato di una operazione, si vuole certamente che: l’istruzione di scrittura sia eseguita velocemente ( e quindi accedendo alla cache ) l’informazione contenuta, in qualsiasi istante, nella cache sia consistente con quella contenuta nella RAM Le possibili strategie per la gestione delle scritture sono: WRITE - THROUGH WRITE - BACK

1a STRATEGIA DI SCRITTURA : WRITE - THROUGH In questa strategia, quando si esegue un’istruzione di scrittura l’informazione viene scritta simultaneamente nel blocco della cache e nel blocco della memoria principale. La coerenza è quindi sempre rispettata, a prezzo però di un maggior tempo richiesto da ogni operazione di scrittura I vantaggi di questa strategia sono che: I fallimenti in lettura sono meno costosi, infatti non richiedono mai la scrittura nel livello inferiore E’ più facile realizzare uno schema write - through che uno write – back, anche se, per essere efficace in un sistema veloce, una cache write – through deve essere dotata anche di un buffer di scrittura ( write buffer ) in modo da non dover “attendere” il livello inferiore di memoria. PROCESSORE CACHE LIVELLO INFERIORE DI MEMORIA WRITE BUFFER

1a STRATEGIA DI SCRITTURA : WRITE - THROUGH Il buffer di scrittura, realizzato mediante una semplice memoria FIFO di 4 posizioni, è posto tra la cache e il livello inferiore di memoria : Il processore scrive il dato nella cache e nel buffer di scrittura, e da questo l’informazione viene trasferita (alla velocità propria della RAM) nel livello inferiore di memoria. Il controllore del sottosistema di memoria scrive il contenuto del buffer di scrittura in memoria La velocità della RAM condiziona quindi i trasferimenti dal buffer ma non quelli dalla CPU. Si possono accodare fino a 4 scritture: stalli in scrittura ( write stall ) possono avvenire anche in presenza di buffer di scrittura, quando il buffer raggiunge la saturazione. Anche una operazione di scrittura può generare un “fallimento“ (write miss), si tenta cioè di scrivere in una parola che non è presente in cache. Le possibili soluzioni nel caso di fallimenti in scrittura sono: ALLOCA e SCRIVI (write allocate o fetch on write): il blocco viene caricato nella cache e successivamente si effettua la scrittura secondo una delle due modalità write through o write back. SCRIVI SENZA ALLOCARE (no write allocate o write around): il blocco viene modificato direttamente nel livello inferiore di memoria e non viene caricato nella cache

2a STRATEGIA DI SCRITTURA : WRITE - BACK In questa soluzione invece, al momento dell’esecuzione dell’istruzione l’informazione viene scritta solo nel blocco della cache. Il blocco modificato viene scritto nel livello inferiore della gerarchia solo quando se ne decide la sostituzione. Al termine dell’istruzione di scrittura nella cache, quindi, la memoria RAM conterrà un valore diverso da quello presente nella cache; in questo caso si dice che la memoria e la cache sono inconsistenti ( cioè non sono coerenti ).

2a STRATEGIA DI SCRITTURA : WRITE - BACK I vantaggi di questa strategia sono che: le singole parole possono essere scritte dalla CPU alla frequenza a cui la cache, e non la memoria centrale, è in grado di accettarle. scritture multiple all’interno dello stesso blocco di cache richiedono poi una sola scrittura al livello inferiore della gerarchia. quando i blocchi vengono scritti, il sistema può trarre vantaggio dall’utilizzo di un’interfaccia ( bus ) più larga con il livello inferiore, visto che si trasferisce un blocco intero. Un interfaccia più larga consente anche di migliorare la gestione dei fallimenti in lettura.

PROGETTO del SISTEMA di MEMORIA per SUPPORTARE la CACHE Gli accessi alla cache che falliscono devono essere soddisfatti dalla memoria principale. Il prezzo da pagare per un fallimento è il MISS PENALTY, cioè un tempo di accesso pari a quello della tecnologia più lenta. E’ possibile ridurre la PENALITA’ di FALLIMENTO aumentando la banda passante tra memoria e cache. BANDA PASSANTE = Numero di byte trasferiti (tra cache e memoria) per ogni ciclo di clock. Aumentare la banda passante significa aumentare la velocità dei trasferimenti tra cache e memoria

1° PROGETTO del SISTEMA di MEMORIA CPU MEMORIA LARGA una PAROLA CACHE BUS GLI ACCESSI AVVENGONO SEQUENZIALMENTE M E O R I A

2° PROGETTO del SISTEMA di MEMORIA CPU MEMORIA, BUS E CACHE ALLARGATI MUX AUMENTO DELLA LARGHEZZA DI BANDA CACHE BUS L’ACCESSO IN PARALLELO A TUTTE LE PAROLE DI UN BLOCCO MEMORIA

Fallimento di accesso alla memoria cache Si possono distinguere tre cause di fallimento di accesso alle memorie cache: Obbligatorietà (Compulsory) : durante il primo accesso un blocco non è presente nella cache e deve esservi trasferito. Si tratta dei cosiddetti “fallimenti di partenza a freddo” o “fallimenti di primo accesso”, chiaramente indipendenti dalla dimensione della cache. Capacità (Capacity) : se la cache non può contenere tutti i blocchi necessari all’esecuzione di un programma, alcuni blocchi devono essere scartati e ricaricati successivamente. Fallimenti di questo tipo diminuiscono al crescere della dimensione della cache. Conflitto (Conflict) : se la cache è di tipo set – associativo o a corrispondenza diretta ci sono fallimenti causati dai blocchi che bisogna scartare e recuperare più tardi in conseguenza del fatto che più blocchi devono essere caricati nello stesso insieme : nascono così fallimenti per collisione, che diminuiscono con l’aumentare dell’associatività.

Riduzione della penalità di miss mediante cache a più livelli Tutti gli elaboratori moderni fanno uso di cache; in molti casi, le cache sono addirittura implementate sullo stesso die del microprocessore usato come CPU. Per colmare ulteriormente il divario tra le alte frequenze di clock dei processori odierni ed il tempo relativamente lungo necessario ad accedere alle DRAM, i microprocessori ad alte prestazioni supportano un livello aggiuntivo di cache. Tale cache di secondo livello, che si trova spesso al di fuori del chip in un insieme separato di SRAM, è consultata ogniqualvolta avviene un miss nella cache principale. Se la cache di secondo livello contiene il dato richiesto, la penalità di miss sarà solamente relativa al tempo di accesso a tale cache, decisamente inferiore al tempo di accesso alla memoria principale. Se il dato non è presente né nella cache principale né in quella secondaria, si renderà necessario un accesso alla memoria principale, determinando una penalità di miss maggiore.

Frequenza dei fallimenti e dimensione dei blocchi La frequenza dei fallimenti in una memoria cache dipende fortemente dalla dimensione dei blocchi. In generale la frequenza dei fallimenti diminuisce con l’aumentare della dimensione del blocco, perché un incremento della dimensione del blocco consente una località spaziale superiore. Però se il blocco è troppo grande rispetto alla dimensione della cache , la frequenza dei fallimenti aumenta con l’aumentare della dimensione del blocco, perché i blocchi diventano pochi , perciò aumenta la competizione per occuparli. Inoltre aumentare la dimensione del blocco , significa incrementare i tempi di trasferimento del blocco stesso. Perciò aumenta anche il MISS PENALTY. Ciò può compromettere l’efficienza delle prestazioni della cache.

Frequenza fallimenti ESEMPI di CACHE DIRECT MAPPING 1 kb 8 kb 16 kb 64 kb 256 kb

PRESTAZIONI della CACHE e DIMENSIONE dei BLOCCHI AUMENTO della DIMENSIONE dei BLOCCHI MIGLIOR SFRUTTAMENTO PRINCIPIO LOCALITA’ MIGLIORI PRESTAZIONI

PRESTAZIONI della CACHE e DIMENSIONE dei BLOCCHI AUMENTO ECCESSIVO della DIMENSIONE dei BLOCCHI AUMENTO ESAGERATO del MISS TIME MAGGIORE FREQUENZA FALLIMENTI PRESTAZIONI PEGGIORI

MEMORIE DI LETTURA / SCRITTURA AD ACCESSO CASUALE : RAM In una RAM ( read / write random access memory ) i dati possono essere scritti e letti in un qualunque indirizzo selezionato secondo una sequenza qualsiasi Quando i dati vengono scritti in un dato indirizzo della RAM, i dati precedentemente memorizzati in quell’indirizzo vengono distrutti e sostituiti con i nuovi Le RAM vengono costruite o con tecnologia bipolare (BJT) oppure con tecnologia MOS. Quando, invece, i dati vengono letti da un dato indirizzo della RAM, i dati presenti in quell’indirizzo non vengono distrutti. Le RAM bipolari sono tutte RAM statiche: ciò significa che gli elementi di memoria utilizzati nel dispositivo sono i latch, e pertanto i dati possono essere mantenuti per un periodo di tempo indefinito purché l’alimentazione rimanga applicata al dispositivo. Alcune RAM MOS sono di tipo statico mentre altre sono di tipo dinamico. In una memoria dinamica i dati sono caricati all’interno di particolari condensatori che, per mantenere i dati, richiedono una fase periodica di ricarica (rinfresco, o refresh).

CLASSIFICAZIONE MEMORIE RAM BIPOLARE MOS RAM statiche RAM dinamiche statiche

SCHEMA LOGICO DELLA CELLA DI UNA SRAM COLONNA RIGA S R Q Uscita dati & & Ingresso dati R/W

Selettore del dato di ingresso Decoder di uscita delle colonne LETTURA IN UNA SRAM 256 x 4 Buffer di ingresso Selettore del dato di ingresso 1 Decoder di riga Matrice di celle di memoria 32X32 A0 A1 A3 A2 A4 A5 A6 A7 . 32 Decoder di uscita delle colonne R / W Buffer di uscita CS

DIAGRAMMA TEMPORALE DI UN CICLO DI LETTURA tACS tCHZ tOH tRC HI - Z ADDRESS CHIP SELECT READ / WRITE DATA OUT ADDRESS VALID HI - Z tRC = tempo di durata del ciclo di lettura tACS = tempo di accesso dall’ingresso di selezione tOH = tempo in cui il dato in uscita si mantiene nonostante il cambiamento di indirizzo tCHZ = tempo impiegato dal dispositivo a portare l’uscita in alta impedenza

Selettore del dato di ingresso Decoder di uscita delle colonne SCRITTURA IN UNA SRAM 256 x 4 Buffer di ingresso Selettore del dato di ingresso 1 Decoder di riga Matrice di celle di memoria 32X32 A0 A1 A3 A2 A4 A5 A6 A7 . 32 Decoder di uscita delle colonne R / W Buffer di uscita CS

DIAGRAMMA TEMPORALE DI UN CICLO DI SCRITTURA tDS tWC tDH ADDRESS CHIP SELECT READ / WRITE INPUT DATA ADDRESS VALID VALID tWC = tempo di durata del ciclo di scrittura tDS = tempo di predisposizione tDH = tempo per il quale il dato si mantiene oltre il fronte di scrittura

SCHEMA LOGICO DELLA CELLA DI UNA DRAM Le celle di una memoria dinamica immagazzinano un bit in un piccolo condensatore invece che in un latch. Il vantaggio fornito da tale soluzione costruttiva è che questo tipo di cella ha una struttura molto semplice, il che permette di costruire su un unico chip matrici di memoria molto grandi, con un costo per bit inferiore a quello delle memorie statiche. Lo svantaggio fondamentale consiste, invece, nel fatto che il condensatore di memoria non può mantenere la propria carica indefinitamente : ciò significa che il bit memorizzato viene perso, a meno che la carica del condensatore stesso non venga periodicamente reintegrata (rinfrescata). Tale processo di refresh richiede ulteriori circuiti di memoria e rende quindi più complesso il funzionamento della RAM dinamica. COLONNA (linea del bit) RIGA

Descrizione del funzionamento della cella di una memoria dinamica COLONNA BUFFER DI RINFRESCO BASSO RINFRESCO RIGA ON ALTO ALTO BUFFER DI USCITA + 1 - DOUT R/W BASSO DIN BUFFER DI INGRESSO LINEA DEL BIT SCRITTURA DI UN 1 NELLA CELLA DI MEMORIA

Descrizione del funzionamento della cella di una memoria dinamica COLONNA Buffer di rinfresco BASSO RINFRESCO RIGA ON ALTO BASSO Buffer di uscita DOUT R/W BASSO DIN Buffer di ingresso LINEA DEL BIT SCRITTURA DI UNO 0 NELLA CELLA DI MEMORIA

Descrizione del funzionamento della cella di una memoria dinamica COLONNA Buffer di rinfresco BASSO RINFRESCO RIGA ON ALTO Buffer di uscita ALTO + 1 - DOUT ALTO ALTO R/W DIN Buffer di ingresso LINEA DEL BIT LETTURA DI UN 1 DALLA CELLA DI MEMORIA

Descrizione del funzionamento della cella di una memoria dinamica COLONNA Buffer di rinfresco ALTO RINFRESCO RIGA ON ALTO Buffer di uscita ALTO + 1 - DOUT ALTO R/W DIN Buffer di ingresso LINEA DEL BIT RINFRESCO DELLA MEMORIZZAZIONE DI UN 1