Memorie esterne e cache - wait state e speed-up
In questa pagina 3
Questa nota completa Memorie - gerarchia, SRAM, DRAM, ROM e FLASHNei µC e DSP si usa solo memoria a stato solido ad accesso immediato, interna (on chip) o esterna. Parametri: dimensione, velocità (tempo di accesso, latenza, banda), consumo, integrazione. La memoria è gerarchica (registri → cache → SRAM interna → esterna) grazie alla localitàtendenza dei programmi a riusare gli stessi dati e a usare dati vicini in memoria spaziale e temporale. Tipi: SRAM (veloce, 4-6 transistori per cella, volatile, nessun refresh), DRAM (carica in un MOS, serve il refresh, più densa e a minor consumo), ROM/OTP/EPROM/EEPROM e FLASH (gate flottante: scrittura per elettroni caldi, cancellazione per effetto tunnel, solo per blocchi, $>10^5$ cicli). Una "RAM" è qualunque memoria con tempo di accesso indipendente dalla posizione.Memorie - gerarchia, SRAM, DRAM, ROM e FLASH →: come si collega una memoria più lenta del processore e come si ricostruisce, con una cachememoria piccola e veloce che contiene copia delle informazioni usate più spesso, l'impressione di una memoria veloce.
Memorie esterne e cicli di attesa
Nei µC e DSP il controllo della memoria esterna è affidato a un circuito di solito interno al chip (nessun controller aggiuntivo). Alcuni si limitano a generare i segnali essenziali (selezione, strobesegnale che indica quando indirizzo o dato sul bus sono validi) per i bus esterni, altri sono flessibili e gestiscono wait-states e memorie "da PC" (DRAMRAM dinamica: ogni bit è una carica che va rinfrescata a pagine).
Se il processore richiede cicli di clock per accedere alla memoria (spesso ) la memoria deve avere un tempo di accessotempo tra la richiesta e la disponibilità del dato tale che Se questo non accade si possono inserire cicli di attesa, ossia wait-statescicli di clock aggiunti all'accesso in cui il processore aspetta la memoria, con la condizione Ma questo penalizza il processore (un solo wait-state con vuol dire il 100% di tempo in più per ogni accesso). La condizione può essere soddisfatta anche con aumentando : conviene confrontare le due scelte.
Esempio. Si collega una memoria con ns a un µC con ns (). Poiché , serve : . Gli accessi diventano lenti del . In alternativa si porta ns (): il rallentamento è , cioè solo il 32%.
Esempi da esame. (a) Una memoria da 2048 locazioni a 32 bit contiene byte; con ns e MHz ( ns): , (); la massima frequenza per accedere in un solo ciclo è MHz. (b) 8192 locazioni a 32 bit sono byte; con ns e clock 300 MHz ( ns): ; frequenza massima in un ciclo MHz; con istruzioni (IW) da 16 bit la memoria ospita istruzioni.
Memoria cache
Per ottenere l'effetto di una memoria veloce senza pagarne il costo si usa una cache: un segmento del sistema di memoria, molto veloce, in cui si registrano (con strategie opportune) le informazioni più richieste dal processore, prelevandole dalla memoria lenta. Ha senso quando si fa in modo che il maggior numero possibile di accessi (per esempio ) avvenga in una piccola frazione veloce. Un sistema cache migliora le prestazioni solo se la memoria non può essere letta in un ciclo di clock: è raro nei µC (clock bassi) ma sempre più comune nei DSP/DSC più potenti. Nei DSP l'uso della cache riguarda di solito solo la memoria istruzioni (così non si pone il problema della scrittura): nei casi semplici è un buffer di brevi sequenze di istruzioni (repeat bufferpiccola cache che conserva una breve sequenza di istruzioni ripetuta in un ciclo).
Il parametro principale è l'hit ratiofrazione degli accessi del processore che trovano il dato nella cache . Con tempo di accesso alla memoria principale e alla cache, il tempo di accesso apparente è e lo speed-up ratio è Il massimo è per : . Esempio con ns e ns (rapporto 5):
| 0,5 | 0,9 | 0,95 | 0,99 | |
|---|---|---|---|---|
| 1,67 | 3,57 | 4,17 | 4,81 |
Per si ha : un hitaccesso che trova nella cache il dato cercato ratio vicino a 1 è decisivo. Il miglioramento reale dipende anche dalla quota di tempo in cui il processore non accede alla memoria. Il tempo medio di ciclo è Per , ns, ns, : ns contro ns senza cache.
Organizzazioni
Si assume di avere una memoria istruzionila memoria che contiene il programma divisibile in blocchigruppi di linee in cui è divisa la memoria, ciascuno di linee da parole. L'indirizzo ha bit: TAG ( bit, il blocco), linea ( bit), word ( bit).
- A mappatura diretta: la cache ha una sezione DATA con linee e una sezione TAGparte dell'indirizzo memorizzata nella cache che identifica il blocco cui appartiene la linea con il blocco di appartenenza di ciascuna. La linea indirizzata dalla CPU si cerca nella cache (indice = campo linea) e si confronta il suo TAG con quello dell'indirizzo: se uguali, hit; se diversi, miss e la linea cercata sostituisce quella presente (che viene ricopiata nella memoria principale o cancellata). È la più semplice e meno costosa: due banchi di memoria veloce e un comparatore. Esempio: indirizzo a 16 bit con (linee da 4 parole), (64 linee), : la sezione DATA contiene parole e la sezione TAG bit.
- Associativa: qualunque linea può occupare qualunque posizione; il TAG è l'intero indirizzo della linea ( bit); la ricerca confronta in parallelo tutti i TAG. Dopo un missaccesso che non trova il dato nella cache serve una strategia di sostituzione: RANDOM, FIFOFirst In First Out: si sostituisce la linea entrata per prima (si sostituisce la prima linea entrata), LRULeast Recently Used: si sostituisce la linea usata meno di recente (la meno recentemente usata). Complessità e costo crescenti; le cache totalmente associative sono molto costose.
- Parzialmente associativa: più cache a mappatura direttaorganizzazione in cui ogni linea di memoria può stare in una sola posizione della cache in parallelo (a 2 vie: due linee con lo stesso indice possono coesistere); il confronto dei TAG riguarda solo 2 istanze.
Il dimensionamento di una cache (dimensione, dimensione della linea, strategia di sostituzione) è complesso e il suo impatto sulle prestazioni è difficile da prevedere sulla carta: spesso si ricorre a simulazioni.
Errori comuni
- Dimenticare che il tempo di accesso della memoria va confrontato con , non con quando .
- Contare i wait-state come costo trascurabile: il rallentamento è .
- Usare lo speed-uprapporto tra il tempo di accesso senza cache e quello con la cache massimo ignorando .
- Credere che la cache serva sempre: se la memoria è già leggibile in un ciclo non porta vantaggi.
Versione ripasso
- Accesso in cicli: ; altrimenti wait-state: (costo se ); alternativa: aumentare (30 ns su 25 ns: 100% contro 32% con ns).
- Numeri d'esame: 2048×32 bit = 8192 byte; ns e 33 MHz: 1 wait-state, clock max 20 MHz; ns a 300 MHz: 1 wait-state, 166,7 MHz.
- Cache: hit ratio ; (, rapporto 5: 4,17); .
- Organizzazioni: diretta (TAG/linea/word, 1 comparatore), associativa (RANDOM, FIFO, LRU, costosa), parzialmente associativa (a vie); nei DSP solo per istruzioni.
- Errori: contro con ; wait-state trascurabili; massimo senza (Memorie - gerarchia, SRAM, DRAM, ROM e FLASHNei µC e DSP si usa solo memoria a stato solido ad accesso immediato, interna (on chip) o esterna. Parametri: dimensione, velocità (tempo di accesso, latenza, banda), consumo, integrazione. La memoria è gerarchica (registri → cache → SRAM interna → esterna) grazie alla localitàtendenza dei programmi a riusare gli stessi dati e a usare dati vicini in memoria spaziale e temporale. Tipi: SRAM (veloce, 4-6 transistori per cella, volatile, nessun refresh), DRAM (carica in un MOS, serve il refresh, più densa e a minor consumo), ROM/OTP/EPROM/EEPROM e FLASH (gate flottante: scrittura per elettroni caldi, cancellazione per effetto tunnel, solo per blocchi, $>10^5$ cicli). Una "RAM" è qualunque memoria con tempo di accesso indipendente dalla posizione.Memorie - gerarchia, SRAM, DRAM, ROM e FLASH →).