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