• Non ci sono risultati.

Valutazione delle prestazioni di algoritmi di way adapting per memorie cache DNUCA di secondo livello

N/A
N/A
Protected

Academic year: 2021

Condividi "Valutazione delle prestazioni di algoritmi di way adapting per memorie cache DNUCA di secondo livello"

Copied!
21
0
0

Testo completo

(1)

VALUTAZIONE DELLE

PRESTAZIONI DI ALGORITMI

DI WAY ADAPTING PER

MEMORIE CACHE DNUCA DI

SECONDO LIVELLO

Simulazione della suite Spec2006 per valutare

l’impatto sulle prestazioni utilizzando algoritmi di

Way Adapt

Sunto

Dopo aver effettuato un porting delle varie applicazioni di Spec2006 per l’architettura DEC Alpha, ne è stato effettuato un subsetting per individuare le applicazioni che riassumessero al meglio il comportamento di tali applicazioni in termini di utilizzo della cache. Tale subset è stato simulato utilizzando diverse versioni di algoritmi di Way Adapt per una cache L2 D-Nuca ed è stato valutato il loro impatto sulle prestazioni generali. Facoltà di Ingegneria Informatica

Candidato:

Dario Arena

Relatore:

(2)

SOMMARIO

1 - Introduzione ... 3

2 - Descrizione del sistema simulato ... 5

2.2 – Descrizione dei tipi di cache simulati ... 5

2.2.1 - Dettagli architetturali e cache di primo livello ... 5

2.2.2 - Cache di secondo livello ... 5

2.2.2.1 - Plain_UCA ... Errore. Il segnalibro non è definito. 2.2.2.2 - D-nuca_16x8 ... 5 2.2.2.3 - Wa_AvgThr ... 6 2.2.2.4 - Wa_NoThr ... 6 2.2.2.5 - Wa_NoThr_NoOsc ... 7 3 - Ambiente di Simulazione ... 9 3.1 - SimAlpha e Spec2006 ... 9 3.2 - Metodologia ... 9

3.3 - Insiemi Di Benchmark Significativi ... 11

3.3.1 - SpecInt 2006 ... 11

3.3.2 - SpecFP 2006 ... 11

4 - Risultati ... 12

4.1 - Analisi delle Prestazioni ... 12

4.2 - Il problema dell’associatività media ... 13

4.2.1 - Risultati dell’algoritmo Wa_NoThr_NoOsc modificato ... 14

5 - Conclusioni ... 19

Riferimenti: ... 20

INDICE DELLE FIGURE... 20

(3)

1 - INTRODUZIONE

Le attuali capacità di integrazione dei componenti elettronici consentono ai processori odierni e futuri di ospitare all’interno dello stesso chip banchi di cache di secondo livello sempre più ampi. Ciò consente di limitare il problema della lentezza degli accessi alla memoria centrale.

I principali fattori che limitano la grandezza dei banchi di cache sono attualmente i collegamenti metallici, che comportano ritardi nel trasferimento dei dati, e il loro consumo di energia dovuto alla potenza di leakage.

Le attuali tecnologie, infatti, non consentono ai collegamenti metallici la stessa scalabilità dei transistor e la loro latenza costituisce ormai il componente principale del tempo di accesso alla cache.

I grandi banchi di SRAM, usati normalmente per implementare le cache di ultimo livello nei chip, sono inoltre responsabili di larga parte della potenza di leakage dissipata dal chip.

Le cache NUCA (Non Uniform Cache Architecture) tentano di ovviare al problema della latenza dei collegamenti partizionando un banco di cache in più sottobanchi piccoli e velocemente accessibili, interconnessi in una struttura solitamente a matrice rettangolare (n righe e m colonne o vie) e organizzati in una struttura del tipo NoC (Network On Chip).

(4)

Le cache Dynamic NUCA (D-NUCA) sfruttano ulteriormente questa organizzazione dei blocchi della cache prevedendo un meccanismo di migrazione che, ogni volta che si ha un cache-hit e si accede ad un certo dato, fa sì che quest’ultimo venga spostato in un banco più vicino al controller. A regime, come conseguenza di tale meccanismo di promozione/rimpiazzamento, nelle D-NUCA i cache hit si concentrano nei banchi vicini al controller e vi sono applicazioni (o singole fasi di esecuzione all’interno di un’applicazione) in cui vari banchi fisici, tra quelli più lontani dal processore, non contribuiscono in maniera significativa alle prestazioni.

In altre parole gli accessi a tali banchi saranno molto limitati rispetto ai banchi vicini al processore, oppure è addirittura possibile che non vi sia effettuato alcun accesso. Essi rimangono comunque attivi e continueranno a dissipare energia a causa delle correnti di leakage.

Tale problema viene almeno in parte arginato nelle Way Adapting D-NUCA in cui, tramite un power gating a livello di via, si tenta di ridurre l’energia totale dissipata adattando il numero di vie attive alle reali esigenze dell’applicazione attualmente in esecuzione.

E’ stato dimostrato [[4]] che questa tecnica consente una riduzione dell’energia consumata di più del 30%, con una perdita di prestazioni, in termini di IPC (Instructions Per Cycle), inferiore al 3%.

Il problema di tale meccanismo è che, essendo basato su alcuni parametri numerici, al variare di tali parametri può variare significativamente anche l’efficacia di tale tecnica. Ottimizzando off-line tali parametri per una certa applicazione si può ottenere una diminuzione dell’energia consumata anche del 55% durante la sua esecuzione ma altre applicazioni potrebbero sperimentare un notevole calo delle prestazioni a parità di parametri. Tale dipendenza dei parametri ottimali dall’applicazione in esecuzione risulta inadeguata per sistemi General Purpose, in cui diversi carichi di lavoro verranno eseguiti in un ordine non prevedibile. In questo caso un’ottimizzazione off-line dei parametri risulterebbe molto onerosa in termini di risorse e inefficace.

In questo articolo verranno comparate le prestazioni di cache che utilizzano questo tipo di algoritmo di way-adapt con cache che prevedono una nuova versione dell’algoritmo che non si basa su parametri numerici decisi staticamente e consente di ridurre l’EDP (Energy Delay Product) del 44% in scenari monoprocessore e del 30% in scenari multiprocessore.

(5)

2 - DESCRIZIONE DEL SISTEMA SIMULATO

2.2 – DESCRIZIONE DEI TIPI DI CACHE SIMULATI

2.2.1 - DETTAGLI ARCHITETTURALI E CACHE DI PRIMO LIVELLO

Il modello di CPU simulato è un DEC Alpha 21264. Ad esso viene affiancata una cache di primo livello (L1) avente le seguenti caratteristiche:

Banco Dimensione Totale (KB) Associatività Dimensione Blocco (B) Hit latency (cicli)

I-Cache 64 2-way 64 1

D-Cache 64 2-way 64 3

Tabella 1 Specifiche della cache L1 impiegata nele simulazioni

Inoltre viene impostata una latenza in caso di accesso alla memoria centrale pari a 300 cicli (chip D-RAM) che costituirà il tempo di accesso minimo ad un dato in caso di miss.

2.2.2 - CACHE DI SECONDO LIVELLO

Le cache di secondo livello (L2) simulate hanno tutte una dimensione pari a 8MB e hanno la seguente configurazione:

Dimensione Linea 64 B

N. di banchi 128

N. di sottobanchi 1 N. di line del banco 16 N. di colonne del banco 8 Capacità del banco 64 KB Associatività del banco direct mapped Bank latency (cicli) 3 Hop latency (cicli) 1 Larghezza del bus (bits) 2x128

Tabella 2 Specifiche architetturali della cache L2

2.2.2.1 - D-NUCA_16X8

Questa configurazione descrive una cache D-NUCA tipica in cui viene attivato il solo algoritmo di migrazione dei dati. Tutte le vie rimangono dunque sempre attive. Tale configurazione, risulta generalmente più performante rispetto alla sua controparte statica (S-NUCA) in quanto, come già accennato in precedenza, i dati più frequentemente utilizzati dal processore vengono a trovarsi più vicino ad esso e dunque il loro tempo di accesso prevedrà una latenza minore.

(6)

2.2.2.2 - WA_AVGTHR

Questa configurazione rappresenta una cache D-NUCA in cui viene attivata la versione dell’algoritmo Way Adapting basata su soglie numeriche impostate staticamente. Tali soglie sono state scelte empiricamente in maniera da ottenere le migliori prestazioni medie secondo [[4]]. La base di tale Algoritmo è una semplice stima dell’attuale profilo di utilizzo delle vie della cache (un parametro che nel seguito verrà identificato con D) calcolata come rapporto tra il numero di hit rilevati nella via più lontana rispetto a quelli rilevati nella via più vicina. L’algoritmo, brevemente riassunto in pseudocodice, è esposto in Figura 2.

Figura 2 Algoritmo di Way Adapting con soglie numeriche

Le soglie numeriche a cui si fa riferimento sono T1 e T2, decise staticamente in base a criteri empirici dovuti a varie prove effettuate con la suite Spec2000. Esse rappresentano rispettivamente il limite inferiore e superiore entro cui si ritiene che la cache sia utilizzata in maniera ottimale, mantenendo attive solo le linee effettivamente necessarie. Al di fuori di tali soglie si assume che il numero di vie attive supera le attuali necessità (D<T1) e si può tentare di risparmiare energia disattivando la via attiva più lontana, oppure che la cache sia “troppo piccola” (D>T2) e si tenta di rimediare riattivando una via adiacente all’ultima attualmente attiva.

2.2.2.3 - WA_NOTHR

Questa configurazione prevede l’utilizzo della nuova versione dell’algoritmo di Way Adapting non basata su soglie fisse impostate staticamente. Come precedentemente accennato infatti, tale meccanismo non si adatta ai sistemi General Purpose vista la natura imprevedibile del carico di lavoro presente in un dato momento. In tale versione dell’algoritmo continua ad essere calcolato periodicamente il profilo di utilizzo ma insieme a quest’ultimo viene calcolata anche un’ulteriore metrica, ad esempio il miss rate della cache.

Ogni volta che viene eseguito l’algoritmo i valori del profilo di utilizzo (Il parametro D del paragrafo precedente) e del miss rate vengono confrontati con quelli calcolati durante l’esecuzione precedente dell’algoritmo stesso. La variazione di tali parametri nel tempo viene usata per dedurre in tempo reale informazioni sulle effettive necessità del carico di lavoro attuale e, in base a tali considerazioni, viene inviato un comando di riconfigurazione alle vie della cache. L’algoritmo in pseudocodice è riportato in figura 3.

Ad ogni esecuzione vengono confrontati il profilo di utilizzo e il miss rate “attuali” (DN e MRN) con quelli calcolati al passo precedente (DN-1 e MRN-1). Se viene rilevata una crescita sia di D che di MR si assume che le necessità dell’applicazione attualmente in esecuzione stiano crescendo, dunque l’algoritmo attiva una linea supplementare.

Se viene invece rilevata una riduzione di entrambi i parametri si deduce che le necessità dell’applicazione stiano attualmente diminuendo e l’algoritmo tenta di risparmiare energia disattivando la linea più lontana.

Every K L2 cache hits do: {

D = last_way_hits_counter / first_way_hits_counter; if (D < T1) then

“shut down the farthest powered-on way”; else if (D > T2) then

“turn on the closest powered-off way”; else “keep current configuration”;

last_way_hits_counter= first_way_hits_counter=0; }

(7)

Figura 3 Algoritmo di Way Adapting senza soglie numeriche

Negli altri casi la configurazione della cache viene mantenuta invariata in quanto:

 Se D decresce e MR cresce è molto probabile che si stiano inserendo dati nuovi in una linea attivata da poco tempo e il processore non vi ha ancora fatto accesso. Dunque attivare una nuova via risulterebbe sicuramente inutile mentre spegnerne una comporterebbe la perdita di tali dati.

 Se D cresce e MR decresce stanno aumentando gli accessi alle ultime vie attive per recuperare dati che risultano essere utili (non si stanno rilevando miss). Spegnere una via comporterebbe la perdita di tali dati mentre l’accensione di una via ulteriore risulterebbe quasi sicuramente inutile.

2.2.2.4 - WA_NOTHR_NOOSC

L’algoritmo precedente ha il difetto di essere facilmente soggetto ad oscillazioni nel numero di vie attive durante l’esecuzione di un programma. Questo succede perché l’attivazione di una nuova via potrebbe incrementare localmente la metrica delle prestazioni a tal punto da causare un comando di disattivazione durante l’esecuzione successiva dell’algoritmo stesso. In base al tipo di carico di lavoro in esecuzione ciò potrebbe dunque far rimanere “intrappolato” l’algoritmo per lungo tempo fra due punti di ottimo locali assumendo quindi un comportamento oscillatorio nell’accensione/spegnimento di una certa via. In tali situazioni le performance ne risentono molto per quelle applicazioni per cui non viene raggiunto in media un numero di vie attivo sufficiente. Per ridurre tale comportamento oscillatorio è stata sviluppata una nuova versione dell’algoritmo (riportata in pseudocodice in figura 4) la cui peculiarità risiede nel fatto che i valori di D e di MR vengano confrontati con quelli rilevati nelle due esecuzioni precedenti dell’algoritmo anziché considerare solo l’ultima.

L’algoritmo è sostanzialmente identico all’algoritmo Wa_NoThr ma il comando di spegnimento di una linea viene dato solo se la decrescita di entrambe le metriche avviene per due passi consecutivi.

Con tale accorgimento si evita che l’algoritmo spenga una linea al passo immediatamente successivo a quello in cui l’ha attivata.

Inoltre esistono casi in cui, in fasi dell’esecuzione di un programma in cui vi è uno scarso riutilizzo dei dati in cache, ad esempio quando non si stanno eseguendo cicli o chiamate ricorsive, molte delle linee non subiscono alcuna migrazione e la maggior parte degli hit si concentrano nelle ultime linee attivate in cui vengono inseriti i nuovi dati recuperati dalla memoria. In questi casi non si avrebbe alcun beneficio da un aumento del numero di linee attive visto che lo spazio della cache non viene utilizzato in maniera efficiente e la maggior parte dei dati in cache vengono usati al più una volta e verranno poi sovrascritti dai dati nuovi.

Every K L2 cache hits do: {

DN = last_way_hits_counter / first_way_hits_counter; MRN = miss_counter / access_counter

if (DN > DN-1 && MRN > MRN-1 ) then

“turn on the closest powered-off way”; else if (DN < DN-1 && MRN < MRN-1) then

“shut down the farthest powered-on way”; else “keep current configuration”;

last_way_hits_counter= first_way_hits_counter=0; miss_counter= access_counter=0;

DN-1= DN; MRN-1= MRN; }

(8)

Figura 4 Algoritmo di Way Adapting senza soglie numeriche e senza oscillazioni

Un modo semplice ed efficace di ridurre questo comportamento patologico, tipico del meccanismo di migrazione, è quello di eseguire l’algoritmo di Way Adapting solamente se viene rilevato che il numero di hit nell’ultima via è inferiore a quello degli hit nella via più vicina (a). Se non si verifica tale condizione l’algoritmo non viene eseguito e la configurazione della cache non viene modificata, visto che molto probabilmente l’applicazione non trarrà alcun vantaggio da una eventuale attivazione di una ulteriore linea.

Every K L2 cache hits do: {

If (last_way_hits_counter < first_way_hits_counter)(a) then {

DN = last_way_hits_counter / first_way_hits_counter; MRN = miss_counter / access_counter

if (DN > DN-1 && MRN > MRN-1 ) then

“turn on the closest powered-off way”; else if (DN < DN-1 && MRN < MRN-1 &&

&& DN-1 < DN-2 && MRN-1 < MRN-2) then

“shut down the farthest powered-on way”; else “keep current configuration”;

last_way_hits_counter= first_way_hits_counter=0; miss_counter= access_counter=0; DN-1= DN; MRN-1= MRN; DN-2= DN-1; MRN-2= MRN-1; } }

(9)

3 - AMBIENTE DI SIMULAZIONE

3.1 - SIMALPHA E SPEC2006

La simulazione delle prestazioni delle varie versioni delle cache D-NUCA è stata eseguita utilizzando il simulatore SimAlpha, nella versione sviluppata internamente presso il dipartimento di Ingegneria dell’Informazione dell’Università di Pisa. Tale versione consente, tramite alcune modifiche ad un file di configurazione, di scegliere varie tipologie di cache di secondo livello da utilizzare nella simulazione e, nel caso fosse necessario, anche di effettuare simulazioni con più applicazioni eseguite contemporaneamente in maniera concorrente.

Le applicazioni eseguite per valutare le prestazioni delle cache sono un subset significativo di quelle presenti nella suite di benchmark Spec2006, che ha sostituito Spec2000 nella definizione degli standard prestazionali.

3.2 - METODOLOGIA

Ispirandosi alle tecniche di subsetting della suite Spec2006 descritte in [[1]] e [[2]] che consistono nell’individuare, tramite tecniche di clustering, sottoinsiemi rappresentativi di applicazioni che catturano le proprietà dell’intera suite, sono stati individuati due sottoinsiemi principali di benchmarks. I subset sono stati determinati facendo riferimento sia a [[1]] che a [[2]]. Tale approccio è stato necessario a causa delle difficoltà incontrate nel compilare ed eseguire i test della suite Spec2006 per l’architettura DEC Alpha usata dal simulatore.

Si è fatto ampio ricorso alla cross-compilation, o a software disponibile in rete presso varie università, ma non è stato possibile aggirare diversi problemi incontrati, visto soprattutto il fatto che, per l’architettura Alpha, della suite Spec2006 non è previsto alcun supporto ufficiale.

Il primo problema è stato incontrato proprio nel compilare le varie applicazioni della suite.

Per alcune di esse sono stati reperiti direttamente i binari disponibili in [[5]]. Tali binari sono in formato COFF/ECOFF e tramite lo strumento sim-fast del simulatore SimpleScalar è stato effettivamente verificato il loro funzionamento. Per compilare le restanti applicazioni è stato costruito un cross-compilatore basato su gcc, che utilizzasse sia glibc, tramite lo strumento CrossTool-NG [[8]], sia altre implementazioni della libc seguendo altre metodologie ([[5]], [[9]] e [[10]]).

Il primo approccio ha prodotto binari in formato ELF che usano syscall Linux. SimpleScalar/Alpha supporta solo binari in formato COFF/ECOFF e implementa solo le syscall OSF/Ultrix. Per ovviare a tale inconveniente è stata utilizzata una versione di SimpleScalar leggermente modificata [[11]] in maniera da accettare in ingresso binari in formato ELF e implementare le syscall Linux. Molti dei binari compilati ed eseguiti in tale maniera funzionano seppur con qualche problema riguardante l’I/O formattato. È stato dunque necessario inserire nel sorgente delle applicazioni i dati presenti nei file di input inizializzando direttamente le variabili interessate con essi.

Per le applicazioni per cui questo approccio ha prodotto binari non funzionanti è stato provato il secondo con cui è stato possibile eseguirne alcune.

Ci sono state comunque applicazioni per cui è risultata impossibile l’esecuzione con SimpleScalar, pur seguendo entrambi gli approcci.

Per eseguire le applicazioni con il simulatore SimAlpha sono state dunque generate le eio-trace delle applicazioni funzionanti tramite lo strumento sim-eio, dato che anche SimAlpha per eseguire direttamente i binari richiede che questi siano in formato COFF/ECOFF e non ELF.

È stato inoltre necessario apportare alcune modifiche minori a SimAlpha, per tener conto del fatto che il numero di istruzioni tipico da simulare, per le applicazioni della suite Spec2006, è molto più grande rispetto a quello massimo per cui SimAlpha è stato originariamente pensato.

(10)

Figura 5 Procedura seguita per l'esecuzione delle simulazioni

Anche durante l’ultima fase, cioè la simulazione vera e propria delle applicazioni con le varie configurazioni delle cache, sono stati incontrati alcuni problemi nell’esecuzione di molte di esse, probabilmente dovuti ad un riordino delle istruzioni interno a SimAlpha, che hanno condotto alla scelta finale dei subset indicati nel seguito.

Per ridurre i tempi di simulazione, ove è stato possibile, si è fatto ricorso alla tecnica dei SimPoints [[3]], eseguendo solo le fasi più rappresentative di una certa applicazione, come definito in [[3]].

(11)

3.3 - INSIEMI DI BENCHMARK SIGNIFICATIVI

3.3.1 - SPECINT 2006

Per l’aritmetica intera, è stato individuato un subset comprendente le seguenti applicazioni:

 400.perlbench

 429.mcf

 403.gcc

 456.hmmer

che funzionano senza problemi.

Per completare il subset sarebbero necessarie anche 483.xalancbmk e 462.libquantum, ma esse non funzionano.

Dall’analisi dei MKI (Miss per KiloInstructions) nelle cache L1 ed L2, si è deciso di sostituire 483.xalancbmk con il test 458.sjeng, che presenta un comportamento molto simile in L2 [[3]].

Per le stesse considerazioni 462.libquantum è stato sostituito con 445.gobmk.

3.3.2 - SPECFP 2006

Per l’aritmetica in virgola mobile le applicazioni pienamente funzionanti disponibili sono:

 410.bwaves

 470.lbm

 433.milc

Per completare il subset 436.cactusADM è stata sostituita con 434.zeusmp (per analoghe considerazioni riguardanti l’MKI in L1 ed L2 [[3]]) e 453.povray è stata sostituita con 435.gromacs anche se tra queste due applicazioni, la similarità in termini di MKI in L1 tra le due applicazioni è meno marcata rispetto a tutti gli altri casi.

Viene dunque riportato in tabella 3, l’insieme delle applicazioni di Spec2006 scelte per la simulazione, suddivise in base al tipo di aritmetica che utilizzano (Intera o Floating Point).

Subset Spec2006

SpecINT 6 SpecFP 5

400.perlbench, 429.mcf, 403.gcc, 456.hmmer, 458.sjeng, 445.gobmk

410.bwaves, 470.lbm, 433.milc, 434.zeusmp, 435.gromacs

(12)

4 - RISULTATI

4.1 - ANALISI DELLE PRESTA ZIONI

Una volta eseguite le simulazioni sono stati raccolti i dati prestazionali ottenuti (Instruction Per Cycle e Associatività media) che sono riportati nei seguenti grafici (figura 6 e 7).

Figura 6 Associatività media rilevata per le applicazioni selezionate

Figura 7 IPC rilevato per le applicazioni selezionate

Risulta evidente, soprattutto esaminando i valori medi, come in termini di IPC i vari algoritmi siano pressappoco equivalenti. La disattivazione delle vie ritenute non necessarie dai tre algoritmi non influisce in maniera significativa sulle prestazioni rispetto ad una cache D-NUCA in cui non viene eseguito alcun algoritmo di way adapting,

0 1 2 3 4 5 6 7 8

Avg Associativity

Wa_AvgThr Wa_NoThr Wa_NoThr_NoOsc 0,0 0,2 0,4 0,6 0,8 1,0 1,2 1,4 1,6 1,8

IPC

D_nuca_16x8 Wa_NoThr Wa_NoThr_NoOsc Wa_AvgThr

(13)

mediamente solo 3,4 vie, a fronte delle 4,8 vie attive mantenute attive in media dall’algoritmo Wa_AvgThr e delle 5,5 vie mantenute attive dall’algoritmo Wa_NoThr_NoOsc.

4.2 - IL PROBLEMA DELL’ASSOCIATIVITÀ MEDIA

Dall’analisi dei risultati effettuata al paragrafo precedente si nota come l’algoritmo Wa_NoThr, anche se facilmente soggetto ad assumere un comportamento oscillatorio, con conseguenti effetti negativi sull’IPC dell’ordine del 6% rispetto ad una cache d-nuca in cui non viene attivato alcun algoritmo di way-adapt, riesca ad ottenere un’associatività media inferiore rispetto a Wa_NoThr_NoOsc.

Quest’ultimo algoritmo ottiene come risultato un IPC medio più elevato, del tutto comparabile con una d-nuca senza way adapting. A causa della sua natura asimmetrica, però, laddove alcune vie attivate potrebbero in teoria essere spente, in molti casi le mantiene attive, ottenendo di conseguenza un’associatività media in genere più alta.

Infatti, come discusso al paragrafo 2.2.2.5, il comando di spegnimento di una via viene dato solo se entrambe le metriche discusse (D e MR) decrescono per due passi consecutivi, mentre per un comando di accensione è sufficiente che le metriche siano crescenti per un solo passo (come Wa_NoThr). Tale comportamento può essere notato esaminando la storia delle effettive riconfigurazioni prodotte dai vari algoritmi.

Dall’esempio riportato si può notare (Figura 8) come l’algoritmo Wa_NoThr_NoOsc riesca ad eliminare, quasi completamente, le oscillazioni nelle fasi in cui sia necessario attivare nuovi banchi di cache ma mantiene attive linee non necessarie nelle fasi in cui Wa_No_Thr invece riesce a mantenere disattivate.

Figura 8 Storia delle riconfigurazioni rilevate in un simpoint dell'applicazione gobmk

Sono state dunque effettuate altre prove apportando due modifiche proposte all’algoritmo stesso che consistono nel:

 “Simmetrizzare” l’algoritmo imponendo che anche l’attivazione di una certa linea venga effettuata solo nei casi in cui venga rilevata una crescita delle metriche D ed MR per due esecuzioni consecutive.

 Eliminare la condizione (a) eseguendo l’algoritmo anche se il numero di hit nelle vie lontane supera il numero di hit rilevati nelle vie vicine (ovvero se D>1).

 Entrambe le modifiche precedenti contemporaneamente.

0 1 2 3 4 5 6 7 8 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 116 121 126 131 136 141 146 151 156

Reconfiguration Hystory gobmk.nngs.tst

(14)

4.2.1 - RISULTATI DELL’ALGORITMO WA_NOTHR_NOOSC MODIFICATO

Con le modifiche discusse al paragrafo precedente sono state eseguite alcune fasi dei benchmark appartenenti alla suite, che risultino significative per evidenziare le differenze nel comportamento tra le varie versioni dell’algoritmo.

Si può notare come nel caso del test zeusmp (Figura 10) durante la fase in cui risulta necessario attivare nuove linee di cache, tutte le versioni dell’algoritmo hanno un comportamento pressappoco identico. Nella fase in cui la cache viene utilizzata in minor misura tuttavia si può notare che le versioni simmetriche dell’algoritmo riescono a spegnere le linee poco utilizzate, risultando leggermente più performanti delle versioni asimmetriche in termini di IPC. L’eliminazione della condizione (a) iniziale influisce inoltre in maniera positiva sulle prestazioni causando un innalzamento dell’IPC ed un abbassamento dell’associatività media

Figura 9 Reconfiguration hystory per il test zeusmp

Per quanto riguarda il test mcf invece si ottengono comportamenti diversi solo simmetrizzando l’algoritmo (Figura 12). L’eliminazione dell’if (a) iniziale, nella fase considerata, non causa differenze sostanziali nel comportamento. 0 1 2 3 4 5 6 7 8 1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97 101 105 109 113 117 121 125 129 133 137 141 145 149

Zeusmp Reconfiguration History

Asymmetric whith initial if Symmetric whith initial if Asymmetric whithout initial if Symmetric whithout initial if

(15)

Figura 10 Risultati del reconfiguration test per zeusmp

Figura 11 Reconfiguration hystory per il test mcf

0 2 4 6 8

Asymmetric whith initial if Symmetric whith initial if Asymmetric whithout initial if Symmetric whithout initial if

Zeusmp Average Associativity

0,65 0,66 0,67 0,68

Asymmetric whith initial if Symmetric whith initial if Asymmetric whithout initial if Symmetric whithout initial if

Zeusmp IPC

0 1 2 3 4 5 6 7 8 1 10 19 28 37 46 55 64 73 82 91 100 109 118 127 136 145 154 163 172 181 190 199 208 217 226 235 244 253 262 271 280 289 298 307 316 325

Mcf Reconfiguration History

Asymmetric whith initial if Symmetric whith initial if Asymmetric whithout initial if Symmetric whithout initial if

(16)

Figura 12 Risultati del reconfiguration test per mcf

Per il test gcc tuttavia non sono state riscontrate differenze nel comportamento a parte un leggero miglioramento in termini di associatività media nel caso in cui venga sia simmetrizzato l’algoritmo, sia venga omessa la condizione iniziale (Figura 12).

Come ultima prova è stata eseguita la medesima fase di zeusmp utilizzando sia l’algoritmo Wa_AvgThr che Wa_NoThr per confrontare i risultati con le quattro versioni di Wa_NoThr_NoOsc proposte (Figura 14).

0 2 4 6 8

Asymmetric whith initial if Symmetric whith initial if Asymmetric whithout initial if Symmetric whithout initial if

Mcf Average Associativity

0,18 0,19 0,20 0,21

Asymmetric whith initial if Symmetric whith initial if Asymmetric whithout initial if Symmetric whithout initial if

Mcf IPC

0 1 2 3 4 5 6 7 8 1 7 13 19 25 31 37 43 49 55 61 67 73 79 85 91 97 103 109 115 121 127 133 139 145 151 157 163 169 175 181 187 193 199 205 211 217 223 229 235

Gcc Reconfiguration History

Asymmetric whith initial if Symmetric whith initial if Asymmetric whithout initial if Symmetric whithout initial if

(17)

Figura 14 Risultati del reconfiguration test per gcc

Da tale prova emerge il fatto che in termini di compromessi tra associatività media e IPC il miglior algoritmo rimane Wa_NoThr sebbene siano evidenti le oscillazioni subite nel tempo nella configurazione della cache, superiori rispetto a Wa_NoThr_NoOsc.

Figura 15 Reconfiguration hystory di tutti gli algoritmi per il test zeusmp

0 2 4 6 8

Asymmetric whith initial if Symmetric whith initial if Asymmetric whithout initial if Symmetric whithout initial if

Gcc Average Associativity

0,95 1,00 1,05 1,10 1,15

Asymmetric whith initial if Symmetric whith initial if Asymmetric whithout initial if Symmetric whithout initial if

Gcc IPC

0 1 2 3 4 5 6 7 8 1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97 101 105 109 113 117 121 125 129 133 137 141 145 149

Zeusmp all algorithms reconfiguration history

Asymmetric whith initial if Symmetric whith initial if Asymmetric whithout initial if

(18)

Figura 16 Risultati del reconfiguration test di tutti gli algoritmi per il test zeusmp

L’algoritmo Wa_AvgThr non riesce invece, in questa fase, ad ottenere una buona stima delle reali necessità dell’applicazione in quanto attiva tutti i banchi disponibili e li mantiene attivi per tutta l’esecuzione, esibendo quindi le prestazioni peggiori rispetto agli altri.

0 2 4 6 8

Asymmetric whith initial if Symmetric whith initial if Asymmetric whithout initial if Symmetric whithout initial if Wa_Avg_Thr Wa_NoThr

Average Associativity

0,669 0,671 0,673 0,675 0,677 Asymmetric whith initial if

Symmetric whith initial if Asymmetric whithout… Symmetric whithout initial if

Wa_Avg_Thr Wa_NoThr

(19)

5 - CONCLUSIONI

Dalle prove effettuate si nota, in ultima analisi, che per gli algoritmi Wa_AvgThr e Wa_NoThr i risultati sono praticamente in linea con quelli ottenuti utilizzando la suite Spec2000 [[4]] mentre si può dedurre che l’algoritmo Wa_NoThr_NoOsc non funziona in maniera ottimale vista la differenza in termini di Average Associativity molto marcata rispetto agli altri algoritmi.

Infatti, mentre in Spec2000 si ottiene un’associatività media di poco superiore a quella di Wa_NoThr e un IPC comparabile con quello ottenuto utilizzando Wa_AvgThr, utilizzando Spec2006 si ottengono risultati analoghi per quanto riguarda l’IPC ma non per quanto riguarda l’associatività media.

Questa anomalia è dovuta alla natura stessa dell’algoritmo che, nelle situazioni in cui le necessità dell’applicazione decrescono, reagisce in maniera meno repentina rispetto a Wa_NoThr e di conseguenza ha la tendenza ad attivare e mantenere attive linee di cache che in realtà potrebbero essere disattivate senza compromettere le prestazioni.

Tale algoritmo comunque presenta prestazioni soddisfacenti nella maggior parte dei casi ma richiede ulteriori miglioramenti per ovviare ai problemi che risulta avere e poter essere effettivamente utilizzato.

In [[4]] vengono testate le prestazioni generali di tale algoritmo eseguendolo, oltre che ogni K hit, anche in maniera forzata, ad intervalli di tempo regolari, utilizzando un timer. Analizzando i risultati si può notare un forte incremento dell’efficienza in termini di associatività media a fronte di un leggero calo dell’IPC, che diventa non trascurabile solo quando il periodo T del timer diventa troppo piccolo (10M cicli macchina o meno). Tale prova non è stata effettuata con la suite Spec2006 ma è plausibile attendersi risultati analoghi.

Infine le modifiche proposte per incrementare l’efficienza dell’algoritmo riguardano l’utilizzo per le decisioni di una storia più lunga delle metriche utilizzate, cioè confrontare i valori di, ad esempio, D ed MR con quelli recuperati in tre o più esecuzioni successive dell’algoritmo stesso.

(20)

RIFERIMENTI:

[1] Aashish Phansalkar, Ajay Joshi, and Lizy K. John. 2007. Subsetting the SPEC CPU2006 benchmark suite. SIGARCH Comput. Archit. News 35, 1 (March 2007), 69-76.

[2] Aashish Phansalkar, Ajay Joshi, and Lizy K. John. 2007. Analysis of redundancy and application balance in the SPEC CPU2006 benchmark suite. In Proceedings of the 34th annual international symposium on Computer architecture (ISCA '07). ACM, New York, NY, USA, 412-423.

[3] Nair A. A., John L. K. "Simulation points for SPEC CPU 2006," Computer Design, 2008. ICCD 2008. IEEE International Conference on, vol., no., pp.397, 403, 12-15 Oct. 2008.

[4] A. Bardine, M. Comparetti, P. Foglia, C. A. Prete “Workload independent energy reduction strategies for D-NUCA Caches”

[5] Prof. Randy Paush “SPEC CPU2006 Compilation for SimpleScalar/Alpha-OSF” - http://www.ece.rochester.edu/~parihar/spec2k6.html

[6] Gem5 online guide, “SPEC CPU2006 benchmarks” - http://www.m5sim.org/SPEC_CPU2006_benchmarks [7] SimpleScalar LLC - http://www.simplescalar.com

[8] CrossTool-NG home page - http://crosstool-ng.org

[9] Using and Porting the GNU Compiler Collection (GCC), Install - http://www.ensta-paristech.fr/~diam/dev/online/gcc_doc_html/gcc_3.html

[10] Building GCC as a Cross-compiler for Simplescalar/Alpha -

http://hpc.serc.iisc.ernet.in/~sree/resources/building-cross-gcc-for-simplescalar.html

[11] Hashem Hashemi Najaf-abadi Website, “Simplescalar Ported to Alpha/Linux” - http://hhnajafabadi.s3-website-us-east-1.amazonaws.com/mase-alphalinux.htm

INDICE DELLE FIGURE

Figura 1 Schema dell'architettura fisica della cache L2 di riferimento utilizzata ... 3

Figura 2 Algoritmo di Way Adapting con soglie numeriche ... 6

Figura 3 Algoritmo di Way Adapting senza soglie numeriche ... 7

Figura 4 Algoritmo di Way Adapting senza soglie numeriche e senza oscillazioni ... 8

Figura 5 Procedura seguita per l'esecuzione delle simulazioni ... 10

Figura 6 Associatività media rilevata per le applicazioni selezionate ... 12

Figura 7 IPC rilevato per le applicazioni selezionate ... 12

Figura 8 Storia delle riconfigurazioni rilevate in un simpoint dell'applicazione gobmk ... 13

Figura 9 Reconfiguration hystory per il test zeusmp ... 14

Figura 10 Risultati del reconfiguration test per zeusmp ... 15

Figura 11 Reconfiguration hystory per il test mcf ... 15

Figura 12 Risultati del reconfiguration test per mcf ... 16

Figura 13 Reconfiguration hystory per il test gcc ... 16

Figura 14 Risultati del reconfiguration test per gcc ... 17

Figura 15 Reconfiguration hystory di tutti gli algoritmi per il test zeusmp ... 17

(21)

INDICE DELLE TABELLE

Tabella 1 Specifiche della cache L1 impiegata nele simulazioni ... 5 Tabella 2 Specifiche architetturali della cache L2 ... 5 Tabella 3 Riassunto subsetting delle applicazioni... 11

Figura

Figura 1 Schema dell'architettura fisica della cache L2 di riferimento utilizzata
Tabella 2 Specifiche architetturali della cache L2
Figura 2 Algoritmo di Way Adapting con soglie numeriche
Figura 3 Algoritmo di Way Adapting senza soglie numeriche  Negli altri casi la configurazione della cache viene mantenuta invariata in quanto:
+7

Riferimenti

Documenti correlati

Tale settore, infatti, consuma circa un terzo dell’energia utilizzata nel mondo; dato il peso del residenziale sulla domanda complessiva di energia (in Italia i

Mentre nel caso di un modello analitico o di un modello simulativo si possono fare delle assunzioni di tipo teorico sul carico (spesso si stabiliscono alcuni tipi di carico

clock time del programma, ESCLUDENDO il tempo necessario a leggere l'input e a scrivere l'output. theoretical

• Dati nella cache L1 (~ 2 cicli per l’accesso) – Necessarie q=0.5 (cioe’ 2 flop per dato trasferito) per. avere il 50%

 Benchmark per Sever: orientate al throughput, particolarmente intensi per l’I/O e per il Sistema

Un blocco dato può occupare qualsiasi posizione nella linea (stesso meccanismo delle cache associative). Def: una cache set-associativa in cui un blocco può andare in n posizioni

These factors lead to an increasingly common approach as well as common policies in the area of EU defence policy and have a strong impact on the norms and ideas of decision-takers

La capacità ed efficacia del Sistema nell’orientare i comportamenti del vertice politico- amministrativo e della dirigenza dell’azienda nella fase di definizione