07.06.2013 Views

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 ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Branch Pre<strong>di</strong>ction nel P6 [Shen02]<br />

• Risoluzione <strong>del</strong> branch (taken/not taken)<br />

• E’ effettuata nella JEU (Jump Execution Unit)<br />

• Il BTB pre<strong>di</strong>ce il target non appena la IFU (Instruction Fetch Unit) lo<br />

preleva<br />

• Tutti gli in<strong>di</strong>rizzi sono verificati dal BAC (Branch Address Calculator) o<br />

dalla JEU<br />

• Branch Target Buffer (BTB)<br />

• Opera nei primi sta<strong>di</strong> <strong>del</strong>la pipeline<br />

• Parte dall’in<strong>di</strong>rizzo <strong>del</strong>l’IP (Instruction Pointer) e produce una<br />

pre<strong>di</strong>zione <strong>del</strong>l’esito e <strong>del</strong> target<br />

• L’in<strong>di</strong>rizzo target predetto viene inviato alla IFU per il prelievo<br />

• Aggiornamento <strong>del</strong> BTB<br />

• Il BTB viene aggiornato non appena la JEU risolve il branch<br />

• Questo puo’ essere troppo tar<strong>di</strong> se il branch successivo arriva<br />

nelle istruzioni imme<strong>di</strong>atamente successive<br />

-Il BTB viene pertanto speculaticamente aggiornato al momento <strong>del</strong>la pre<strong>di</strong>zione<br />

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

P6 - Algoritmo <strong>di</strong> Branch Pre<strong>di</strong>ction<br />

• Basato sullo schema 2-level adaptive [Yeh92]<br />

• Primo livello – storia degli esiti dei branch<br />

• Secondo livello – comportamento <strong>del</strong> branch per un dato pattern <strong>di</strong> storia<br />

• Differenze rispetto a [Yeh92]<br />

- C’e’ una copia speculativa <strong>del</strong> BHT che consente <strong>di</strong> effettuare le pre<strong>di</strong>zioni prima che si<br />

abbia la risoluzione (e l’aggiornamento)<br />

• Per ogni branch…<br />

• Il BTB mantiene k bit <strong>di</strong> storia “reale” (detta BHR ==BHT)<br />

- Taken/Not-taken per gli ultimi N salti<br />

• Il BHT in<strong>di</strong>cizza una tabella <strong>di</strong> 2k elementi <strong>di</strong> stato (Pattern Table – PT ==PHT)<br />

- La FSM relativa e’ il solito contat<strong>ore</strong> a saturazione<br />

• La BTB usa 4-bit <strong>di</strong> pattern table “semilocale” per set<br />

• Ogni elemento ha 4 bit <strong>di</strong> storia<br />

• Quattro branch in un set usano la stessa pattern table<br />

• Aggiornamento speculativo <strong>del</strong> BHR<br />

• Una copia speculativa <strong>del</strong> BHR viene aggiornata con l’attuale pre<strong>di</strong>zione<br />

- Tale copia viene utilizzata nel caso arrivi un branch prima che il precedente sia risolto<br />

• La BHR reale viene aggiornato con l’esito effettivo dopo la risoluzione <strong>del</strong> branch<br />

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

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

Saved successfully!

Ooh no, something went wrong!