LEZIONE #05 del 12-Mag-2008 (2 ore) - Dipartimento di Ingegneria ...

LEZIONE #05 del 12-Mag-2008 (2 ore) - Dipartimento di Ingegneria ... LEZIONE #05 del 12-Mag-2008 (2 ore) - Dipartimento di Ingegneria ...

07.06.2013 Views

gshare [McFarling93] • m bit dell’indirizzo BIA sono messi in XOR con il BHSR • Schema molto semplice: 1 BHSR e 1 piccolo PHT • Usato nell’Alpha 21264 BHSR Roberto Giorgi, Universita’ di Siena, C208L05, Slide 11 BIA Di solito sono i bit meno significativi del BIA Inoltre, di solito k == m k m max{k, m} PHT … 2 max{k, m} x j entries Prestazioni di gshare, gselect, GAg Predictor Accuracy (%) 98 96 94 92 90 88 86 84 Grafico da [McFarling93] Roberto Giorgi, Universita’ di Siena, C208L05, Slide 12 prediction 32 64 256 1K 4K 16K 64K Predictor Size(bytes) “global” si riferisce al predittore GAg di Yeh e Patt I benchmark usati sono gli stessi 9 di SPEC-89 usati nei lavori [Yeh92] e [Yeh93] gshare gselect global

Predittori “competitivi” (“Tournament”) • Certi predittori funzionano bene con determinati branch • La prima proposta di usare due predittori competitivi e’ presentata da McFarling [McFarling93] (bimodal+gshare) • Selezionare dinamicamente una predizione fra piu’ predittori • Usare la storia per selezionare un predittore BHT BIA • Esempio: Alpha 21264 Roberto Giorgi, Universita’ di Siena, C208L05, Slide 13 Path History Predictor 1 Predictor 2 M U prediction U X Predictor selection logic • Dimensione totale del predittore pari a 29k bits • A BP = 97.4%(SPEC89 average) 99.9% (SPECfp95 average), 99% (SPECint95 average) Predittore dell’indirizzo di ritorno • Alcuni salti variano l’indirizzo target nello stesso programma • Tali salti sono tipicamente “indirect jumps” • In particolare, fra questi ci sono i salti di ritorno da procedura • Nel caso di SPEC-89 i salti da ritorno da procedura sono l’85% • Predizione delle istruzioni di ritorno da procedura • L’esito e’ facile da predirre: always taken! • Il target non e’ facile da predirre: la stessa procedura puo’ essere invocata da diversi punti di un programma • Il BTB per predirre il target puo’ condurre a misprediction • E’ stato proposto un piccolo stack per mantenere gli indirizzi di ritorno [Kaeli91] • Al momento della chiamata si fa push dell’indirizzo di ritorno in tale stack • Al momento del ritorno basta fare una pop da tale stack • Funziona come una cache dei piu’ recenti indirizzi di ritorno • Se tale stack e’ sufficientemente grande predice tutti i ritorni Roberto Giorgi, Universita’ di Siena, C208L05, Slide 14

Pre<strong>di</strong>ttori “competitivi” (“Tournament”)<br />

• Certi pre<strong>di</strong>ttori funzionano bene con determinati branch<br />

• La prima proposta <strong>di</strong> usare due pre<strong>di</strong>ttori competitivi e’ presentata<br />

da McFarling [McFarling93] (bimodal+gshare)<br />

• Selezionare <strong>di</strong>namicamente una pre<strong>di</strong>zione fra piu’ pre<strong>di</strong>ttori<br />

• Usare la storia per selezionare un pre<strong>di</strong>tt<strong>ore</strong><br />

BHT<br />

BIA<br />

• Esempio: Alpha 2<strong>12</strong>64<br />

Roberto Giorgi, Universita’ <strong>di</strong> Siena, C208L05, Slide 13<br />

Path History<br />

Pre<strong>di</strong>ctor 1<br />

Pre<strong>di</strong>ctor 2<br />

M<br />

U pre<strong>di</strong>ction<br />

U<br />

X<br />

Pre<strong>di</strong>ctor<br />

selection<br />

logic<br />

• Dimensione totale <strong>del</strong> pre<strong>di</strong>tt<strong>ore</strong> pari a 29k bits<br />

• A BP = 97.4%(SPEC89 average)<br />

99.9% (SPECfp95 average), 99% (SPECint95 average)<br />

Pre<strong>di</strong>tt<strong>ore</strong> <strong>del</strong>l’in<strong>di</strong>rizzo <strong>di</strong> ritorno<br />

• Alcuni salti variano l’in<strong>di</strong>rizzo target nello stesso programma<br />

• Tali salti sono tipicamente “in<strong>di</strong>rect jumps”<br />

• In particolare, fra questi ci sono i salti <strong>di</strong> ritorno da procedura<br />

• Nel caso <strong>di</strong> SPEC-89 i salti da ritorno da procedura sono l’85%<br />

• Pre<strong>di</strong>zione <strong>del</strong>le istruzioni <strong>di</strong> ritorno da procedura<br />

• L’esito e’ facile da pre<strong>di</strong>rre: always taken!<br />

• Il target non e’ facile da pre<strong>di</strong>rre: la stessa procedura puo’ essere<br />

invocata da <strong>di</strong>versi punti <strong>di</strong> un programma<br />

• Il BTB per pre<strong>di</strong>rre il target puo’ condurre a mispre<strong>di</strong>ction<br />

• E’ stato proposto un piccolo stack per mantenere gli in<strong>di</strong>rizzi<br />

<strong>di</strong> ritorno [Kaeli91]<br />

• Al momento <strong>del</strong>la chiamata si fa push <strong>del</strong>l’in<strong>di</strong>rizzo <strong>di</strong> ritorno in tale stack<br />

• Al momento <strong>del</strong> ritorno basta fare una pop da tale stack<br />

• Funziona come una cache dei piu’ recenti in<strong>di</strong>rizzi <strong>di</strong> ritorno<br />

• Se tale stack e’ sufficientemente grande pre<strong>di</strong>ce tutti i ritorni<br />

Roberto Giorgi, Universita’ <strong>di</strong> Siena, C208L05, Slide 14

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!