Lezione 9 Lezione 9 Materiale di riferimento Sommario • • • • 1. D. A. Patterson, J. L. Hennessy, “Computer Organization and Design”, Morgan Kaufmann, cap. 7 pagg. 540-578. 2. A. Clements, "The principles of computer hardware", Oxford, 2000, cap. 9, pagg. 461-486. 3. G. Bucci, "Architetture degli elaboratori elettronici", McGraw-Hill, 2001, cap. 3, pp. 77–100. 4. P. Lapsley, J. Bier, A. Shoham, E.A. Lee, "DSP Processor Fundamentals - Architectures and Features", IEEE Press, New York, 1997, cap. 5. Organizzazione della memoria Memorie esterne Tipi di memoria Organizzazioni avanzate: memorie cache Simone Buso - Microcontrollori e DSP - Lezione 9 1 Sistemi di memoria I microprocessori per uso generico (PC) utilizzano sempre due diversi sistemi di memoria: 1.memoria ad accesso immediato; 2.memoria di tipo secondario o di massa. I mC e i DSP sfruttano esclusivamente memoria ad accesso immediato, sia interna, i.e. realizzata all’interno dello stesso chip che contiene il processore (on-chip), sia esterna (off-chip), opportunamente connessa alla prima. 3 Simone Buso - Microcontrollori e DSP - Lezione 9 Sistemi di memoria Sistemi di memoria La memoria ad accesso immediato è realizzata esclusivamente attraverso opportuni circuiti a semiconduttore (tipicamente in tecnologia CMOS), ed è disponibile in forme diverse (ad es. SRAM, DRAM, EPROM, EEPROM, …), tutte variamente usate nei mC e nei DSP. La memoria ad accesso immediato può essere di tipo volatile o non volatile. La memoria di tipo volatile è di solito memoria di lettura/scrittura, mentre la memoria non volatile è di solito di sola lettura (anche se può essere ri-programmata). I parametri chiave che qualificano un sistema di memoria sono i seguenti: 1. dimensione: in bit o in byte indica il numero di celle (unità elementari di informazione) che compongono la memoria e talora anche la sua organizzazione (ad es: 64k x 4 bit); 2. velocità: viene descritta in modo equivalente sia in termini di tempo di accesso, che di latenza che di banda passante. Simone Buso - Microcontrollori e DSP - Lezione 9 2 Sistemi di memoria In ogni sistema a microprocessore si possono sempre individuare alcuni elementi costitutivi fondamentali, che sono: 1. unità aritmetico logica (ALU) 2. unità di controllo 3. memoria 4. periferiche di input-output (I/O) L’organizzazione del sottosistema di memoria in un mC o DSP, differisce da quella propria di un processore generico. Non è infatti mai presente memoria di massa. Simone Buso - Microcontrollori e DSP - Lezione 9 Simone Buso - Microcontrollori e DSP - Lezione 9 5 Simone Buso - Microcontrollori e DSP - Lezione 9 4 6 1 Sistemi di memoria Sistemi di memoria 2.a tempo di accesso: è il tempo (in ns di solito) che intercorre tra la richiesta del dato e il momento in cui esso è reso disponibile (ciclo di read). Si compone di due parti: tempo di decodifica o localizzazione del dato e tempo di trasferimento del dato. 2.b latenza: è il tempo che intercorre tra l’inizio del ciclo di write e l’arrivo del dato in memoria. I tempi di read e write sono normalmente uguali. 2.c banda passante: è un’indicazione della velocità alla quale i dati possono essere trasferiti dal processore alla memoria e viceversa. Si misura in bytes al secondo. 3. consumo di potenza: indica la potenza elettrica media richiesta da un sistema di memoria. In alcuni casi i costruttori forniscono anche potenza assorbita in stand-by (a riposo). Questi dati sono fondamentali per il dimensionamento dell’ alimentazione di un sistema di memoria esterno al chip. Simone Buso - Microcontrollori e DSP - Lezione 9 7 Sistemi di memoria Le caratteristiche di un sistema di memoria ideale sono le seguenti: 1. alta velocità; 2. piccola occupazione di area di silicio; 3. basso consumo; 4. robustezza (rispetto a disturbi, variazioni di temperatura, …); 5. basso costo. Queste caratteristiche sono in larga misura incompatibili tra loro, il che costringe a scelte di compromesso. 9 Simone Buso - Microcontrollori e DSP - Lezione 9 Sistemi di memoria Sistemi di memoria Tutti i sistemi di memoria sono organizzati in modo gerarchico. Il concetto di gerarchia di memoria funziona bene in quanto le informazioni che un processore scambia con la memoria hanno sempre caratteristiche di: 1. località spaziale: i dati che sono spazialmente prossimi all’interno della memoria tendono ad essere usati a breve distanza gli uni dagli altri; 2. località temporale: quando un dato viene usato dal processore di solito viene anche ri-usato a breve distanza. Un sistema di memoria può quindi avere eccellenti prestazioni combinando piccole quantità di memoria molto veloce (quindi molto costosa, a elevato consumo,…) e quantità via via più grandi di memoria più lenta (e quindi meno costosa, a minore consumo, …). La memoria più pregiata in un processore è rappresentata dai registri. La memoria interna, che è di solito di tipo SRAM (RAM statica), è molto più estesa (può arrivare a molti kbyte) ma considerevolmente più lenta (in termini relativi). Simone Buso - Microcontrollori e DSP - Lezione 9 8 Sistemi di memoria 4. integrazione: dipende dalla tecnologia usata nella realizzazione della memoria, con particolare riferimento alla definizione del processo fotolitografico usato per la creazione delle maschere di processo. La densità di memoria (numero di bit per unità di volume) è direttamente legata al livello di integrazione. Le prime unità di memoria prodotte (anni ‘60) avevano una capacità di appena 16 bit. Attualmente esistono memorie su singolo chip con capacità di dell’ordine di 1 Gbit. Simone Buso - Microcontrollori e DSP - Lezione 9 Simone Buso - Microcontrollori e DSP - Lezione 9 11 Simone Buso - Microcontrollori e DSP - Lezione 9 10 12 2 Organizzazione della memoria Organizzazione della memoria La memoria on chip può essere organizzata in modi diversi, al fine di massimizzare le prestazioni del processore. Nelle organizzazioni di tipo Harvard, la memoria è suddivisa in banchi separati che fanno uso di bus indipendenti per il trasferimento dei dati o delle istruzioni. Talvolta questa suddivisione in banchi viene iterata in modo da permettere l’accesso simultaneo ad una istruzione e a più di un dato. Si parla di organizzazioni Harvard modificate. Simone Buso - Microcontrollori e DSP - Lezione 9 In alcuni casi i banchi di memoria sono 3, uno per le istruzioni (P) e due per i dati (X, Y). In questo modo, in un singolo ciclo del processore è possibile leggere una istruzione e fino a due operandi. Queste organizzazioni avanzate non sono normalmente estendibili alla memoria offchip in quanto non tutti i bus vengono resi disponibili all’esterno. Al massimo, ne sono resi disponibili due (dati e istruzioni). I vantaggi di una organizzazioni a banchi multipli vanno quindi parzialmente persi. 13 Organizzazione della memoria 16 bit Bus indirizzi X Bus indirizzi Y Bus indirizzi P MUX Bus indirizzi esterno 16 bit Bus dati X Bus dati Y Bus dati P Bus dati esterno Logica di controllo bus esterno In alcuni casi, invece di ricorrere a banchi di memoria multipli, si ricorre a memorie di tipo dual port. Queste permettono due accessi simultanei (duplicano tutta l’elettronica di decodifica e di accesso alle celle) pur mantenendo una organizzazione a singolo banco (tipo Von Neumann). Esistono anche memorie di tipo multiple port dove il numero di accessi simultanei può arrivare fino a 4. Il limite principale di queste memorie è rappresentato dal costo molto alto. write/read X/Y memoria programmi memoria dati input 15 Organizzazione della memoria CPU Bus dati 1 Bus indirizzi 1 Bus dati 2 Bus indirizzi 2 Bus dati 3 Bus indirizzi 3 Memoria A (dual port) Memoria B Simone Buso - Microcontrollori e DSP - Lezione 9 14 Organizzazione della memoria Schema di espansione della memoria interna su due bus esterni a 16 bit. Simone Buso - Microcontrollori e DSP - Lezione 9 Simone Buso - Microcontrollori e DSP - Lezione 9 Simone Buso - Microcontrollori e DSP - Lezione 9 16 Organizzazione della memoria Organizzazione di tipo composto: una memoria dual port (banco A) e una memoria standard (banco B), permettono l’accesso simultaneo a una istruzione e due dati. Tipica nei DSP Motorola della serie 561xx. 17 In altri casi, la possibilità di accessi multipli è garantita dalla integrazione on-chip di banchi di memoria molto veloci, capaci di permettere più accessi in sequenza nello stesso ciclo di clock. Memoria di questa qualità può essere ottenuta solo ricavandola all’interno del processore stesso. Si tratta di una soluzione efficace, ma estremamente costosa. Come le soluzioni multi-port anche queste soluzioni, dette multi-access, non sono praticabili a livello di memoria esterna. Simone Buso - Microcontrollori e DSP - Lezione 9 18 3 Organizzazione della memoria Organizzazione della memoria Nei mC e DSP il controllo della memoria esterna è reso possibile da un opportuno circuito, di solito interno al chip (non sono richiesti controller aggiuntivi). Le caratteristiche dei controllori integrati nel chip sono però molto variabili. Alcuni consentono solo di generare i segnali essenziali (selezione, strobe, … ) per i bus esterni, altri sono molto più flessibili consentendo la gestione di wait-states e memorie esterne del tipo “da PC” (es: DRAM a pagine). I cicli di attesa o wait-states sono necessari ogni volta che la memoria esterna risulta più lenta del processore. Se il processore richiede N cicli di clock per accedere alla memoria (spesso N = 1), la memoria deve presentare un tempo di accesso TA tale che: Simone Buso - Microcontrollori e DSP - Lezione 9 TA<N⋅Tclk Se questo non si verifica, è comunque possibile rallentare il processore con un certo numero Nw di cicli di attesa. 19 Simone Buso - Microcontrollori e DSP - Lezione 9 Organizzazione della memoria Organizzazione della memoria Questo comporta però una penalizzazione nello sfruttamento del processore, quindi è da considerarsi molto attentamente. La condizione Ad esempio, supponendo di dover espandere la memoria interna di un mC con una memoria il cui tempo di accesso sia di 30 ns, a fronte di un periodo di clock di 25 ns (si assuma N=1) si ha che la condizione: TA<(N+Nw)⋅Tclk TA<(N+Nw)⋅Tclk può infatti essere soddisfatta anche con Nw=0, per esempio ricorrendo ad un aumento di Tclk. Anche un solo wait-state può essere infatti una penalizzazione relativa troppo pesante (e.g. del 100% nel caso N=1). Simone Buso - Microcontrollori e DSP - Lezione 9 può essere soddisfatta con Nw = 1. Questo però rende il processore più lento del 100% negli accessi alla memoria. Invece, riducendo la frequenza di clock in modo che sia Tclk = 33 ns, la penalizzazione è solo del 32%. 21 Simone Buso - Microcontrollori e DSP - Lezione 9 Tipi di memoria Tipi di memoria Nei mC e nei DSP la memoria volatile di lettura/scrittura viene sempre realizzata come SRAM (Static Random Access Memory). Il termine RAM designa però ogni tipo di memoria in cui il tempo di accesso risulti indipendente dalla posizione spaziale della locazione (o cella) cui si accede. Quindi anche le memorie di sola lettura (ROM) sono delle RAM, contrariamente a quanto generalmente si pensi. L’uso del termine RAM come sinonimo di memoria di lettura/scrittura è quindi errato. L’uso di memoria SRAM come memoria interna per i mC e i DSP è giustificato dalle seguenti proprietà: 1) elevata velocità (tempo di accesso tipico dell’ordine di 1 ns); 2) semplicità di gestione (non richiedono refresh, diversamente dalle DRAM); L’uso è invece limitato da due fattori: 1) consumo non trascurabile (alcuni mW per kbyte); 2) complessità realizzativa (6 o 4 transistori per cella) ⇒ minore densità, costo più alto. Simone Buso - Microcontrollori e DSP - Lezione 9 20 23 Simone Buso - Microcontrollori e DSP - Lezione 9 22 24 4 Tipi di memoria Tipi di memoria VDD La memoria SRAM veniva in passato usata anche nel caso di espansioni di memoria esterne. Attualmente si nota la tendenza a utilizzare invece DRAM (Dynamic RAM), essenzialmente per contenere i costi. La necessità di refresh dei dati tipico delle DRAM, costringe però, di norma, all’uso di controllori esterni. Anche le prestazioni ne risentono, in quanto il semplice uso di wait-states non è sufficiente a garantire l’interfacciamento al processore. E’ necessario gestire wait-states dinamici. Simone Buso - Microcontrollori e DSP - Lezione 9 D D W 25 Simone Buso - Microcontrollori e DSP - Lezione 9 Tipi di memoria Tipi di memoria B Address bus C Chip Select 1 bus flottante 0 E F D dati validi tempo di accesso Data bus tempo di hold Diagramma temporale di lettura per una SRAM Simone Buso - Microcontrollori e DSP - Lezione 9 27 Simone Buso - Microcontrollori e DSP - Lezione 9 Tipi di memoria Tipi di memoria Le RAM dinamiche hanno un costo molto inferiore a quelle statiche e una densità almeno 4 volte superiore. Richiedono però una significativa circuiteria di controllo per gestire i cicli di refresh, che viene realizzata di norma insieme alla memoria stessa. Hanno tempi di accesso maggiori di quelli delle RAM statiche (dell’ordine delle decine di ns). Infine, presentano un consumo di potenza ben minore di quello delle SRAM, dell’ordine di 0.1 mW/kbyte. Simone Buso - Microcontrollori e DSP - Lezione 9 28 Struttura generale di una memoria DRAM. bit lines latch address RAS word line sense ampli latch CAS bit line word lines indirizzo valido row dec 1 0 tempo di ciclo 26 Le RAM statiche altro non sono che schiere di registri a latch (ciascun latch fatto con 4 o 6 transitori). Le memorie RAM dinamiche sfruttano invece l’immagazzinamento di carica elettrica per la registrazione dei bit di informazione. La carica viene immagazzinata sotto l’ossido di gate di una struttura MOS, modificando la conducibilità elettrica del canale sottostante. Purtroppo la carica intrappolata tende a ricombinarsi (leakage), da cui la necessità di refresh, con periodicità intorno al ms. col dec A 1 0 Cella di memoria SRAM: la scrittura avviene portando la write line W a livello alto e attivando la linea dati desiderata. L’ingombro della cella è elevato (10µm x 10µm). output buffer Din Dout R/W CE 29 Simone Buso - Microcontrollori e DSP - Lezione 9 30 5 Tipi di memoria 1 0 1 0 Address bus indirizzo valido riga 1 0 1 0 1 bus flottante 0 Address DRAM colonna A 1 0 RAS C CAS E B D Tipi di memoria dati validi Read/Write Data bus Diagramma temporale di lettura per una DRAM Simone Buso - Microcontrollori e DSP - Lezione 9 31 Tipi di memoria Simone Buso - Microcontrollori e DSP - Lezione 9 Memorie PROM 33 Simone Buso - Microcontrollori e DSP - Lezione 9 Memorie PROM bit line word line fusibile 34 Memorie EPROM Le memorie EPROM sono memorie di sola lettura elettricamente ri-programmabili. La cella tipica di una memoria EPROM ha questa struttura: Cella di memoria PROM La programmazione avviene, in modo irreversibile, interrompendo il fusibile. VGG VSS Al momento della lettura il transistore rimarrà spento: il circuito di lettura interpreta questo stato come un valore logico 0. Simone Buso - Microcontrollori e DSP - Lezione 9 32 Nelle memorie PROM l’informazione è associata allo stato di un transistore (ON o OFF, normalmente corrispondenti a 1 e 0). Questo a sua volta dipende da un microfusibile, che collega un terminale del transistore (ad es. il Drain) ad un potenziale fisso. La memoria è inizialmente piena di 1. La sua programmazione consiste nell’interrompere per fusione alcuni dei micro-fusibili (1 → 0). Le memorie PROM sono estremamente veloci (tempi di accesso dell’ordine di 1 ns). Esistono diversi tipi di memoria ROM: 1) PROM (OTP): memoria di sola lettura che può essere scritta una sola volta; 2) EPROM: memoria di sola lettura che può essere cancellata con un dispositivo apposito a luce UV. 3) EEPROM: memoria di sola lettura che può essere scritta e cancellata elettricamente. 4) Flash EPROM: memoria di sola lettura che può essere scritta e cancellata elettricamente. Strutturalmente diversa dalla precedente. Simone Buso - Microcontrollori e DSP - Lezione 9 Nei mC e DSP è spesso integrata una piccola quantità di memoria di sola lettura (ROM). Questa può anche diventare la sola memoria presente on-chip, quando si abbia a che fare con prodotti di grandissima serie dove, ad esempio, il programma, ritenuto definitivo, viene memorizzato in modo non modificabile durante la realizzazione del chip. Comunque, anche in fase di sviluppo di una applicazione, si ha spesso a che fare con memoria di tipo ROM, anche se, di norma, di tipo ri-programmabile e talvolta esterna. gate n+ gate flottante ossido p n+ VDD Substrato p35 Simone Buso - Microcontrollori e DSP - Lezione 9 36 6 Memorie EPROM Memorie EPROM La memoria EPROM può essere vista come una memoria di tipo dinamico nella quale il periodo di refresh è estremamente lungo (alcuni anni). Questo effetto si ottiene immagazzinando carica elettrica in un conduttore molto ben isolato, quindi esposto a correnti di leakage molto basse: il gate flottante. La carica giunge sul gate flottante attraverso l’ossido sottile che lo separa dal canale quando gate e drain sono polarizzati a tensione elevata (20 V). Il meccanismo fisico viene detto hot electron injection. L’iniezione di elettroni caldi è dovuta a ionizzazione da impatto in prossimità del drain. La componente verticale del campo elettrico trascina all’interno del floating gate parte della carica negativa generata. La cancellazione di una EPROM avviene esponendo il chip ad una sorgente di radiazione UV, che provoca la ricombinazione attraverso l’ossido della carica intrappolata. Il chip è incapsulato in un involucro dotato di finestra trasparente, appunto a questo scopo. Simone Buso - Microcontrollori e DSP - Lezione 9 37 Simone Buso - Microcontrollori e DSP - Lezione 9 Memorie EPROM Memorie EPROM La presenza della carica negativa intrappolata nel gate flottante provoca un innalzamento della tensione di soglia del dispositivo. Al momento della lettura, questo rimarrà spento. Il circuito di lettura associa a questo stato il valore logico 0. ID 1 bit line transistore di selezione word line 0 Ith Vread VG Simone Buso - Microcontrollori e DSP - Lezione 9 39 Cella di memoria EPROM La programmazione avviene innalzando la soglia del MOS con gate flottante in modo che, al momento della lettura questo resti spento. La carica intrappolata nel gate flottante viene rimossa esponendo il chip a radiazione UV. Simone Buso - Microcontrollori e DSP - Lezione 9 Memorie EEPROM Memorie EEPROM Si tratta di una memoria molto simile alla EPROM, che può però essere cancellata solo elettricamente. La sua cella tipica risulta così strutturata: L’estensione del gate flottante sopra al drain, con riduzione al minimo dello spessore dell’ossido (< 10 nm), permette agli elettroni di raggiungerlo, in fase di programmazione, per effetto tunnel (Fowler-Nordheim). Dando una tensione negativa al gate gli elettroni intrappolati possono ritornare al drain, sempre per effetto tunnel. La cancellazione della memoria è quindi puramente elettrica. Le EEPROM possono essere ri-scritte per un numero grande, ma finito di volte (> 100000). VGG VSS gate n+ gate flottante ossido p n n+ VDD Substrato pSimone Buso - Microcontrollori e DSP - Lezione 9 38 41 Simone Buso - Microcontrollori e DSP - Lezione 9 40 42 7 Memorie EEPROM word line Cella di memoria EEPROM Il circuito equivalente per una cella di memoria EEPROM è identico a quello della memoria EPROM. La carica viene però estratta dal gate flottante per tunneling con tensione di gate < 0. Simone Buso - Microcontrollori e DSP - Lezione 9 43 Anche le memorie FLASH sono cancellabili in modo puramente elettrico, per effetto tunnel (ossido sottile come le EEPROM) verso il source. Diversamente dalle EEPROM, il meccanismo fisico di scrittura delle FLASH è l’iniezione di elettroni caldi (come le EPROM, di cui riprendono la struttura di cella, con un minore spessore dell’ossido sotto il floating gate). Possono essere riscritte anch’esse per un numero finito di volte, che però è molto grande (> 100000). Simone Buso - Microcontrollori e DSP - Lezione 9 Memorie FLASH Memorie FLASH La cella tipica di una memoria FLASH è molto simile a quella di una EEPROM. La cancellazione avviene polarizzando negativamente il gate e positivamente il source. gate flottante gate ossido VGG VSS n+ n p n+ E’ molto comune incontrare mC e DSP con memoria FLASH incorporata. La gestione della memoria, che è piuttosto complessa, è in questo caso a cura di un apposito controller incorporato nel mC (o DSP) stesso. Il problema principale delle FLASH è legato al fatto che i tempi di lettura e scrittura sono variabili in funzione di parametri come temperatura, età, tolleranze di processo. Quindi la gestione dei tempi di attesa deve essere dinamica (di solito tramite polling di un apposito registro di stato). VDD Substrato pSimone Buso - Microcontrollori e DSP - Lezione 9 45 Simone Buso - Microcontrollori e DSP - Lezione 9 Memorie FLASH 46 Memorie FLASH Decoder di riga Inoltre, la cancellazione può avvenire solo per blocchi (richiede la polarizzazione ad una tensione positiva del source) di alcuni kbyte. Conviene quindi che i dati siano registrati nella memoria evitando di utilizzare sempre lo stesso blocco, per aumentare la vita utile (ogni cancellazione implica uno stress per la memoria). I tempi di cancellazione e scrittura possono essere abbastanza lunghi, dell’ordine di alcune decine di secondi per un chip da 256 kbyte. Simone Buso - Microcontrollori e DSP - Lezione 9 44 Source switch bit line transistore di selezione Memorie FLASH Blocco di memoria FLASH Il circuito equivalente di una cella non prevede il transistore di selezione. Decoder di colonna Ogni blocco ha i terminali di source connessi ad un deviatore che permette l’applicazione della tensione di cancellazione. 47 Simone Buso - Microcontrollori e DSP - Lezione 9 48 8 Organizzazioni avanzate: cache Memorie EPROM, EEPROM, FLASH EPROM Dimensioni (cella) Programmazione Cancellazione Tempo di cancellazione Cancellazione minima Tempo di scrittura Tempo di accesso EEPROM 1 3.0 1.2 CHEI FNT CHEI Luce UV FNT FNT 20 min. 5 ms 1 s byte blocco 5 ms < 100 µs 10 ns 100 ns chip < 100 µs 100 ns Le prestazioni di un sistema di memoria possono essere aumentate in modo molto significativo e a costi relativamente contenuti sfruttando il concetto di memoria virtuale. L’idea è far apparire la memoria molto più veloce di quanto essa sia, facendo in modo che il maggior numero possibile di accessi (>95%) avvenga in una sua piccola frazione, realizzata con una tecnologia ad alta velocità. Ciò ha senso solo per sistemi di memoria di dimensioni considerevoli e relativamente lenti, tipici di dispositivi di alta gamma (DSP). FLASH Tabella comparativa per i diversi tipi di memoria ri-programmabile Simone Buso - Microcontrollori e DSP - Lezione 9 49 Simone Buso - Microcontrollori e DSP - Lezione 9 50 Organizzazioni avanzate: cache Organizzazioni avanzate: cache I sistemi cache consentono un miglioramento di prestazioni in tutti e soli i casi in cui la memoria non può essere letta in un solo ciclo di clock del processore. Questo non è comune nei mC, che hanno frequenze di clock piuttosto basse. Lo sta invece diventando nei DSP più potenti, che cominciano ad operare a frequenze di clock di centinaia di MHz. Questi fanno spesso uso anche di memoria DRAM, il che li rende molto simili ai processori per uso generico (che usano cache). Il livello di complessità delle cache usate nei DSP è comunque inferiore (per ragioni di costo) a quello dei processori per uso generico (PC). Comunque l’uso della cache riguarda solo la memoria istruzioni, mai la memoria dati. Ciò risolve il problema della gestione delle scritture in memoria, che complica notevolmente i sistemi cache per uso generico. Nei casi più semplici, la cache di un DSP è un semplice buffer che immagazzina brevi sequenze di istruzioni (repeat buffer). Simone Buso - Microcontrollori e DSP - Lezione 9 51 Simone Buso - Microcontrollori e DSP - Lezione 9 Memoria cache Memoria cache Per memoria cache si intende un segmento del sistema di memoria, caratterizzato da elevata velocità, nel quale, attraverso strategie opportune, si fa in modo di registrare le informazioni più frequentemente richieste dal processore, prelevandole dalla memoria più lenta. Il parametro principale in un sistema a cache è il suo hit-ratio (h), che rappresenta la frazione di accessi alla memoria, sul totale che il processore esegue, che riescono a trovare i dati richiesti nella cache stessa. Simone Buso - Microcontrollori e DSP - Lezione 9 52 La tipica organizzazione di un sistema cache prevede lo sdoppiamento dei bus dati e indirizzi e un opportuno circuito di controllo. bus dati CPU bus indirizzi controller cache 53 hit Simone Buso - Microcontrollori e DSP - Lezione 9 memoria principale memoria cache 54 9 Memoria cache Memoria cache E’ possibile stimare il vantaggio offerto dalla cache nella riduzione del tempo di accesso apparente alla memoria considerando alcuni parametri: tacc: tempo di accesso alla memoria principale; tc: tempo di accesso alla memoria cache; h: hit ratio. La quantità che definisce l’efficienza del sistema cache è lo speed-up ratio S: S = E’ interessante valutare l’andamento di S in funzione di h: S 5 4 3 2 1 0 0.5 1 h tacc h·tc + (1-h)·tacc Simone Buso - Microcontrollori e DSP - Lezione 9 55 Il valore massimo di S si ottiene per h=1, ed è pari al rapporto tra tacc e tc (qui assunto uguale a 5). Valori tipici di h sono dell’ordine di 0.95. Simone Buso - Microcontrollori e DSP - Lezione 9 Memoria cache Memoria cache In realtà, il miglioramento nelle prestazioni di un mC o DSP con cache dipende anche dalla quota di tempo q spesa dal processore in attività che non coinvolgono la memoria e dal numero di cicli di clock richiesti per l’accesso alla memoria. Una valutazione più accurata dell’incremento di velocità consentito dalla cache può quindi essere la seguente: Sono possibili almeno 3 diverse organizzazioni delle memorie cache: 1. a mappatura diretta; 2. associativa; 3. parzialmente associativa. Il costo di queste soluzioni è crescente, e dipende dalla complessità dell’algoritmo che gestisce il caricamento dei dati nella cache e gli eventi di “miss”, ossia il mancato ritrovamento dei dati cercati nella cache. La complessità è minima per le cache a mappatura diretta. Tciclo_avg = q·Tclk + (1-q)·(h·tc + (1-h)·tacc) dove si valuta la durata media di un ciclo macchina, Tciclo_avg, in relazione a Tclk. Simone Buso - Microcontrollori e DSP - Lezione 9 57 Cache a mappatura diretta TAG B Linea Word L W cache linea k Si assume di disporre di una memoria principale divisibile in 2B blocchi, ciascuno costituito da 2L linee di 2W parole. La cache è suddivisa in due sezioni: la sezione DATA e la sezione TAG. Nella prima vengono copiate 2L linee di memoria, nella seconda l’indirizzo del blocco di appartenenza di ciascuna linea (detto appunto TAG). La linea indirizzata dalla CPU viene cercata nella cache. Simultaneamente viene anche cercato il suo TAG. Viene quindi operato il confronto tra i due TAG. indirizzo linea k linea k memoria principale linea k blocco 2B Simone Buso - Microcontrollori e DSP - Lezione 9 58 Cache a mappatura diretta blocco j-1 blocco j Simone Buso - Microcontrollori e DSP - Lezione 9 56 59 Simone Buso - Microcontrollori e DSP - Lezione 9 60 10 Cache a mappatura diretta Cache a mappatura diretta Se il blocco indirizzato dalla CPU ha lo stesso TAG della linea trovata nella cache si ha un hit, altrimenti un miss. In caso di miss la linea cercata dalla CPU viene copiata nella cache al posto di quella inutile, che viene ricopiata nella memoria principale o semplicemente cancellata. Questa è l’organizzazione più semplice (meno costosa) per una memoria cache. E’ inerentemente parallela e composta da due banchi di memoria veloce e da un comparatore digitale per il confronto dei TAG. Simone Buso - Microcontrollori e DSP - Lezione 9 Linea TAG Word TAG COMP indirizzo DATA hit oe sel bus dati 61 Simone Buso - Microcontrollori e DSP - Lezione 9 Cache associative Cache associative Nelle cache associative, qualunque linea di memoria può occupare qualunque posizione nella cache. Il TAG in questo caso è l’intero indirizzo della linea cercata (composto da B+L bit). La ricerca di una linea avviene confrontando simultaneamente (in parallelo) tutti i TAG con quello cercato (array di porte XOR). Solo se il confronto è positivo e quindi solo una volta concluso, la linea cercata può essere inviata al bus dati (organizzazione seriale). La gestione dei miss richiede una strategia non ovvia di sostituzione delle linee. Si possono usare soluzioni diverse, ossia: 1. si rimpiazza una linea a caso (RANDOM) 2. si rimpiazza la prima linea entrata (FIFO) 3. si rimpiazza la linea meno recentemente usata (LRU); La complessità (ed il costo) di questi algoritmi è in ordine crescente. In generale, le cache totalmente associative sono molto costose da realizzare. Simone Buso - Microcontrollori e DSP - Lezione 9 63 Cache parzialmente associative 64 Memoria cache Le cache parzialmente associative sono costituite da più cache a mappatura diretta operate in parallelo. Nel caso più semplice si usano due cache in parallelo e si parla di cache associativa a 2 vie. E’ quindi possibile avere due linee k simultaneamente presenti nella cache. Il confronto dei TAG avviene quindi ancora in parallelo, ma coinvolge solo due istanze di TAG (risultando più semplice rispetto alle cache associative). Simone Buso - Microcontrollori e DSP - Lezione 9 Simone Buso - Microcontrollori e DSP - Lezione 9 62 Il dimensionamento di un sistema cache è molto complesso. E’ necessario stabilire numerosi parametri, tra i quali: la dimensione della cache, la dimensione della linea e, nel caso di cache associative (anche parzialmente), la strategia di gestione dei miss. L’impatto sulle prestazioni finali del processore è comunque difficile da prevedere sulla carta: spesso il dimensionamento si basa su simulazioni del sistema. 65 Simone Buso - Microcontrollori e DSP - Lezione 9 66 11