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. 1000 CPU 100 10 DRAM 2000 1999 1998 1997 1996 1995 1994 1993 1992 1991 1990 1989 1988 1987 1986 1985 1984 1983 1982 1981 1980 1 INTRODUZIONE ASSIOMA DEL PROGETTO HARDWARE : “PICCOLO E VELOCE” APPLICATO ALLE MEMORIE PER DUE RAGIONI DIFFERENTI: 1. RITARDO MAGGIORE NELLA PROPAGAZIONE DEI SEGNALI 2. 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 GERARCHIA “PICCOLO E VELOCE” DI MEMORIE GERARCHIA DI MEMORIE 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 OBIETTIVO 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) 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 Più piccolo Più elevato Minore Più grande 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 LIVELLO INFERIORE BLOCCHI 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 ) 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 SPEEDUP TEMPO DI ESECUZIONE VECCHIO TEMPO DI ESECUZIONE NUOVO (1 FRAZIONE 1 FRAZIONE MIGLIORATA MIGLIORATA) SPEEDUP MIGLIORATO 1 % TEMPO PER LA CACHE (1 - %TEMPO PER LA CACHE) SPEEDUP CON LA CACHE 1 1 3,6 0,9 0,28 (1 - 0,9) 5 USANDO LA CACHE SI OTTIENE QUINDI UNO SPEEDUP 3,6 VOLTE SUPERIORE 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 A INDIRIZZAMENTO DIRETTO CACHE SET ASSOCIATIVE A N VIE CACHE COMPLETAMENTE ASSOCIATIVA 1. DOVE DI PUO’ METTERE UN BLOCCO CHE VIENE PORTATO DAL LIVELLO INFERIORE AL LIVELLO SUPERIORE ? 2. DOVE SI TROVA IL BLOCCO CHE CONTIENE IL DATO RICHIESTO ? 3. QUALE BLOCCO PRESENTE AL LIVELLO SUPERIORE DEVE ESSERE SOSTITUITO DA UNO DEL LIVELLO INFERIORE ? 4. CHE COSA SUCCEDE IN CASO DI SCRITTURA ? PROBLEMA DEL PIAZZAMENTO DI UN BLOCCO PROBLEMA DELLA RICERCA DI UN BLOCCO PROBLEMA DELLA SOSTITUZIONE DI UN BLOCCO PROBLEMA DELLA STRATEGIA DI SCRITTURA 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 M E M O R I A GLI ACCESSI AVVENGONO SEQUENZIALMENTE 2° PROGETTO del SISTEMA di MEMORIA CPU MEMORIA, BUS E CACHE ALLARGATI MUX CACHE BUS MEMORIA AUMENTO DELLA LARGHEZZA DI BANDA L’ACCESSO IN PARALLELO A TUTTE LE PAROLE DI UN BLOCCO Fallimento di accesso alla memoria cache Si possono distinguere tre cause di fallimento di accesso alle memorie cache: 1. 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. 2. 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. 3. 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 MAGGIORE FREQUENZA FALLIMENTI AUMENTO ESAGERATO del MISS TIME 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 Le RAM vengono costruite o con tecnologia bipolare (BJT) oppure con tecnologia MOS. 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. 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 Quando, invece, i dati vengono letti da un dato indirizzo della RAM, i dati presenti in quell’indirizzo non vengono distrutti. 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 RAM BIPOLARE RAM statiche MOS RAM statiche RAM dinamiche SCHEMA LOGICO DELLA CELLA DI UNA SRAM COLONNA RIGA & Ingresso dati R/W & S R Q Uscita dati LETTURA IN UNA SRAM 256 x 4 Buffer di ingresso Selettore del dato di ingresso 1 A0 A1 A2 A3 . Decoder . di . riga Matrice di celle di memoria 32X32 . A4 A5 A6 A7 32 Decoder di uscita delle colonne R/W Buffer di uscita CS DIAGRAMMA TEMPORALE DI UN CICLO DI LETTURA tRC ADDRESS VALID ADDRESS CHIP SELECT tCHZ READ / WRITE tACS HI - Z tOH HI - Z DATA OUT 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 SCRITTURA IN UNA SRAM 256 x 4 Buffer di ingresso Selettore del dato di ingresso 1 A0 A1 A2 A3 . Decoder . di . riga Matrice di celle di memoria 32X32 . A4 A5 A6 A7 32 Decoder di uscita delle colonne R/W Buffer di uscita CS DIAGRAMMA TEMPORALE DI UN CICLO DI SCRITTURA tWC ADDRESS VALID ADDRESS READ / WRITE CHIP SELECT tDS tDH VALID tWC = tempo di durata del ciclo di scrittura tDS = tempo di predisposizione INPUT DATA 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 ALTO RIGA RINFRESCO ON BUFFER DI USCITA + 1 DOUT BASSO ALTO R/W ALTO 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 ALTO RIGA RINFRESCO ON Buffer di uscita 0 DOUT BASSO BASSO 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 ALTO RIGA RINFRESCO ON Buffer di uscita ALTO ALTO + 1 DOUT R/W ALTO 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 ALTO RIGA RINFRESCO ON Buffer di uscita + 1 DOUT ALTO R/W ALTO DIN Buffer di ingresso LINEA DEL BIT RINFRESCO DELLA MEMORIZZAZIONE DI UN 1 -