Parte 3 Memoria - Istituto di Scienze e Tecnologie dell`Informazione
Transcript
Parte 3 Memoria - Istituto di Scienze e Tecnologie dell`Informazione
Informatica Applicata – Progettazione dei sistemi di elaborazione 3DUWH 0HPRULD Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 © Alessandro Bogliolo 1 Informatica Applicata – Progettazione dei sistemi di elaborazione © Alessandro Bogliolo &RQFHWWLGLEDVHULFKLDPL 'LVSRVLWLYL • • • • • • DRAM SRAM Capacità(DRAM) = 8xCapacità(SRAM) Prestazioni(SRAM) = 16xPrestazioni(DRAM) Costo(SRAM) = 16xCosto(DRAM) Le prestazioni delle DRAM crescono del 7% all’anno, mentre le prestazioni dei microprocessori crescono del 55% all’anno. Il divario cresce esponenzialmente (Fig. 5.2). 3ULQFLSLRGLORFDOLWj • • Località spaziale Località temporale • • • • • • • • • Principio di località (spaziale e temporale) Organizzazione gerarchica: cache e memoria virtuale (Fig. 5.1-5.3) Cache hit Cache miss Hit rate = No. cache hits / No. memory accesses Miss rate = No. cache misses / No. memory accesses Hit rate + Miss rate = 1 Block: insieme di locazioni di memoria trasferite tra memoria e cache Miss penalty: tempo necessario a rimediare ad un cache miss, cioè tempo necessario a portare in cache un nuovo blocco *HUDUFKLDGLPHPRULDFDFKHHPHPRULDYLUWXDOH 3UHVWD]LRQL • • • Prestazioni del sistema di memoria $FFHVVWLPH &DFKHDFFHVVWLPH+LWUDWH0LVVSHQDOW\0LVVUDWH Effetto delle prestazioni della memoria sulle prestazioni del sistema: • CPU time (CPUT) e CPU clock cycles (CPUC) vengono generalmente utilizzati come parametri per valutare le prestazioni di un microprocessore. Pertanto vengono valutati assumendo che la memoria non sia un fattore limitante, e cioè che il tempo di accesso alla memoria principale sia di 1 clock cycle. &387 ,&&3,7FON &38&7FON &38& ,&&3, • L’impatto delle prestazioni della memoria sulle prestazioni del sistema può essere valutato confrontando il tempo di esecuzione con il CPUT calcolato in condizioni di memoria ideale. La differenza è attribuibile agli stalli dovuti ai tempi di risposta della memoria. Si noti che anche nell’ipotesi di memoria con tempo di accesso di 1 ciclo di clock possono esserci stalli provocati dagli eventuali conflitti di risorse di memoria, ma questi sono inclusi nel CPUT, in quanto dipendono dal’architettura e dal codice piuttosto che dalla prestazione della memoria stessa. ([HFXWRQWLPH &38706&7FON &38&06&7FON dove MSC sta ad indicare il numero di cicli di stallo dovuti alla memoria (Memory Stall Cycles) In molti casi, le cache di primo livello hanno tempi di accesso inferiori al ciclo di clock, comportandosi quindi come le memorie ideali utilizzate per valutare il CPI. I cicli di stallo dovuti alla memoria sono quindi legati al miss rate: 06& 1RPLVVHV0LVVSHQDOW\ dove 1RPLVVHV 0HPDFFFRXQW0LVVUDWH 06& 0HPDFFFRXQW0LVVUDWH0LVVSHQDOW\ Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 2 Informatica Applicata – Progettazione dei sistemi di elaborazione © Alessandro Bogliolo 0HPRULDSULQFLSDOH &DVHVWXG\ >GDFRPSOHWDUH@ $XPHQWRGHOODODUJKH]]DGHOODPHPRULD ,QWHUOHDYHGPHPRU\EDQNV ,QGHSHQGHQWPHPRU\EDQNV $FFRUJLPHQWLLQWHUQLDLFKLSGLPHPRULD'5$0 5$0%86 3ROLWLFKHGLJHVWLRQHGHOODFDFKH &DFKH Le scelte per la gestione della cache si riassumono nelle risposte alle seguenti 4 domande: 1 Come disporre i blocchi in cache? Le tre alternative sono: (Fig. 5.4) • direct mapped (la posizione è univocamente individuata dal suo indirizzo) • set associative (la cache è divisa in insiemi di blocchi, l’indirizzo di un blocco individua univocamente l’insieme in cui andrà mappato, ma la posizione all’interno dell’insieme è scelta liberamente) • fully associative (la posizione del blocco in cache è scelta liberamente) Il grado di associatività viene generalmente misurato in termini di dimensioni dei set. La dimensione dei set prende anche il nome di QXPHURGLYLH, poichè in un cache set-associative è come se ogni index indirizzasse tante cache in parallelo quanti sono i blocchi di ogni set. 2 Come ritrovare i blocchi in cache? (Fig. 5.5) Ogni indirizzo di memoria è suddiviso in tre parti: WDJLQGH[RIIVHW. Tag e index costituiscono il %ORFN DGGUHVV. L’offset indica la posizione interna al blocco, e quindi non concorre alla determinazione della posizione del blocco in cache. L’index indirizza la cache. In caso di mappatura diretta, l’index individua la posizione del blocco in cache, in caso di set-associatività, l’index individua il set, in caso di totale associatività l’index è assente. Il tag serve a distinguere i blocchi che potrebbero essere mappati nella stessa posizione in cache. Pertanto il tag deve essere memorizzato in cache assieme al blocco corrispondente, per poter essere confrontato con il tag dell’indirizzo effettivamente cercato. 3 Come scegliere i blocchi da rimpiazzare? Le principali politiche di rimpiazzamento sono 3: UDQGRP, OHDVWUHFHQWO\XVHG (LRU) e ILUVWLQILUVWRXW (FIFO). La piùsemplice da implementare è quella casuale, mentre la più coerente con il princpio di località temporale è la LRU, benchè di più difficile implementazione. A supporto del LRU le cache mettono a disposizione un flag (XVHG) che indica se un blocco è stato utilizzato. 4 Come gestire le scritture? Le scrittura sono più complesse delle letture per due ragioni: l’esigenza di mantenere coerenza con la memoria principale, l’esigenza di non scrivere nel posto sbagliato. La prima esigenza ha due soluzioni: • write through (ogni volta che si scrive in cache si aggiorna anche la corrispondente locazione nella memoria di livello inferiore) • write back (le scritture avvengono solo in cache e solo al momento di rimpiazzare il blocco su cui si è scritto lo si copia nella memoria di livello inferiore prima di sovrascriverlo) Il write through garantisce maggior coerenza, soprattutto nel caso di sistemi multiprocessore con memoria condivisa. Il write back generalmente ottimizza il traffico tra memoria e cache (avvalendosi di un flag (GLUW\) per effettuare il write back solo quando il contenuto di un blocco di cache è stato effettivamente modificato), ma aumenta il miss penalty. Il secondo problema influenza l’hit time. Le letture in cache sono molto rapide poichè il tag viene verificato durante l’accesso alla memoria: se il tag non coincide con quello desiderato il dato letto non viene trasferito al microprocessore, altrimenti sì. In caso di scrittura, la verifica del tag deve precedere l’accesso alla cache, altrimenti si rischierebbe di sporcare il blocco sbagliato. 5HGXFLQJPLVVSHQDOW\ • Multilevel cache • Local miss rate Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 3 Informatica Applicata – Progettazione dei sistemi di elaborazione • • • • © Alessandro Bogliolo • Global miss rate Critical word first Early restart Give priority to read misses Victim cache (Fig. 5.13) 5HGXFLQJPLVVUDWH I cache-miss sono provocati da circostanze: Cold-start (l’inizializzazione della cache), Capacity (la ridotta dimensione della cache), Conflict (i conflitti nei piazzamenti dei blocchi in cache). Le tecniche per ridurre il miss rate devono essere valutate con riferimento ai 3 tipi di eventi. • Larger block size: sfrutta la località spaziale, ma aumenta il miss penalty e il rischio di conflitti • Larger cache: aumenta il costo e il tempo di accesso • Higher associativity: aumenta la complessità di gestione, il tempo di accesso e il consumo di potenza • Way prediction • block prediction bit • Pseudo-associative cache • usa la prima via come una cache a mappatura diretta, e la seconda via come una cache di secondo livello in cui cercare il blocco solo se non presente nella prima via • Compiler optimization 8VLQJSDUDOOHOLVP • • • Non-blocking caches • Hit under miss Hardware prefetching Particolarmente appropriato per cache delle istruzioni • In cache • In un buffer Compiler (software) controlled prefetching 5HGXFLQJKLWWLPH • • • • Small and simple caches Avoid index translation (Virtual caches VS Physical caches) Le cache fisiche (poste prima della MMU) hanno tempi di accesso più rapidi, ma rendono più complessa la gestione delle protezioni e degli alias (indirizzi fisici a cui corrispondono più indirizzi logici) Pipelined cache access Trace cache Usa tracce di esecuzione al posto dei blocchi (soluzione adottata dall’architettura NetBurst del Pentium 4) 0LFUREHQFKPDUNLQFUHPHQWDOLSHUODFDUDWWHUL]]D]LRQHGHOODFDFKH >GDFRPSOHWDUH@ • Struttura generale Inizializzazione della cache Loop esterno Accesso agli elementi del vettore • Valutazione delle dimensioni della cache Accesso in sequenza agli elementi di un vettore di dimensione s: CPUT(vector_s) • Valutazione della politica di rimpiazzamento Accesso in sequenza agli elementi di un vettore che eccede di poco le dimensioni della cache Accesso ripetuto nello stesso ordine: CPUT(vector_up_up) Accesso ripetuto invertendo l’ordine: CPUT(vector_up_down) • Valutazione della dimensione dei blocchi Accesso in sequenza agli elementi della prima colonna di una matrice Nxc, con N fisso e c variabile incrementalmente: CPUT(column_Nxc) Accesso in sequenza agli elementi della prima riga di una matrice rxN, con N fisso e r variabile incrementalmente: CPUT(row_rxN) Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 4 Informatica Applicata – Progettazione dei sistemi di elaborazione © Alessandro Bogliolo 0HPRULDYLUWXDOH *HQHUDOLWj • • • Esigenze: • consentire l’esecuzione di programmi che richiedono più memoria di quella fisicamente disponibile • gestire in modo trasparente lo spazio di indirizzamento di processi contemporaneamente in esecuzione in sistemi multiprogrammati Analogie tra memoria virtuale e cache. Sia la cache che la memoria virtuale si basano sul principio di località. La cache sta alla memoria fisica come la memoria fisica a quella virtuale (o a quella secondaria che la implementa). Si veda Figura 5.32 per un confronto quantitativo tra cache e memoria virtuale. A livello di terminologia, quelli che in cache sono chiamati blocchi, in memoria virtuale sono chiamati VHJPHQWL o SDJLQH, quelli che in cache sono chiamati cache miss, in memoria virtuale sono chiamati SDJHIDXOWDGGUHVVIDXOW. Differenza tra memoria virtuale e cache. (Fig. 5.34) • La memoria virtuale ha miss rate molto inferiori e miss penalty molto maggiori. Questo determina scelte di politiche di gestione molto diverse. I cache miss sono eventi piuttosto frequenti da gestire nell’arco di poche decine di cicli di clock. I page fault sono eventi molto rari la cui gestione richiede milioni di cicli di clock per colpa dei tempi di accesso alla memoria secondaria. Questo consente di gestire via software le politiche di rimpiazzamento e mapping, optando per soluzioni fullyassociative. • La dimensione della memoria virtuale è determinata dallo spazio di indirizzamento del microprocessore, mentre il caching è indipendente dallo spazio di indirizzamento. 3DJLQHHVHJPHQWLLOSUREOHPDGHOODIUDPPHQWD]LRQH • • • • Memoria paginata • Frammentazione interna Memoria segmentata • Frammentazione esterna Soluzioni ibride: segmenti paginati Soluzioni ibride: pagine di dimensione variabile 3ROLWLFKHGLJHVWLRQHGHOODPHPRULDYLUWXDOH In analogia alla cache, le scelte per la gestione della memoria virtuale si riassumono nelle risposte alle seguenti 4 domande: 1. Come disporre le pagine o i segmenti in memoria fisica? Per le ragioni esposte nella sezione precedente, la politica di piazzamento è fully-associative, in quanto lascia al software di sistema totale libertà di scelta nel posizionamento delle pagine. 2. Come indirizzare la memoria fisica? (Fig. 5.35) La traduzione degli indirizzi virtuali in indirizzi fisici è basata sull’uso di tabelle della pagine, come discusso nel paragrafo seguente. 3. Come scegliere le pagine o i segmenti da rimpiazzare? La politica generalmente adottata è il LRU, che si avvale del supporto hardware di flag di utilizzo associati alle pagine in memoria e resettati dal software di sistema. 4. Come gestire le scritture? Il costo elevato degli accessi al disco (sia in termini di tempo che di potenza) rendono assolutamente preferibile il write back al write through. $GGUHVVWUDQVODWLRQ • • • • Page/segment table Hierarchical/paged page table Hashing / Inverted page table TLB 3URWH]LRQL ,OVLVWHPDGLPHPRULDHVHPSL 6FKHPDJHQHUDOH Fig. 5.37 Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 5 Informatica Applicata – Progettazione dei sistemi di elaborazione © Alessandro Bogliolo (VHPSLR(PRWLRQ(QJLQHGHOOD3OD\6WDWLRQ >GDFRPSOHWDUH@ Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 6 Informatica Applicata – Progettazione dei sistemi di elaborazione © Alessandro Bogliolo Fig. 5.1 Fig. 5.2 Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 7 Informatica Applicata – Progettazione dei sistemi di elaborazione © Alessandro Bogliolo Fig. 5.4 Fig. 5.5 Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 8 Informatica Applicata – Progettazione dei sistemi di elaborazione © Alessandro Bogliolo Fig. 5.13 Fig. 5.35 Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 9 Informatica Applicata – Progettazione dei sistemi di elaborazione © Alessandro Bogliolo Fig. 5.37 Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 10