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 ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Eager Execution [Uht95]<br />
• In un gruppo <strong>di</strong> 4 istruzioni e’ possibile che tutte e 4<br />
siano branch<br />
• Si deve far ricorso ad un BTB a 4 porte<br />
(similmente al pre<strong>di</strong>tt<strong>ore</strong> multiplo <strong>di</strong> Yeh)<br />
• Eager Execution<br />
• Si eseguono sia il ramo taken che quello not-taken senza pre<strong>di</strong>zioni<br />
- Il fetch avviene da entrambi i rami taken e not-taken<br />
- Nel lavoro <strong>di</strong> Uht il fetch viene limitato a 6 ramificazioni<br />
- Vengono via via buttati i rami sbagliatai nel momento in cui i branch sono risolti<br />
- Naturalmente viene buttato parecchio lavoro… ma e’ veloce!<br />
• Disjoint Eager Execution<br />
- In questo caso si considera la brench pre<strong>di</strong>ction mentre si fa il fetch<br />
- Si prelevano solo istruzioni dai rami predetti, fino a 6 ramificazioni<br />
- Se il ramo e’ sbagliato, semplicemente si fa ripartire la pipeline<br />
Roberto Giorgi, Universita’ <strong>di</strong> Siena, C208L05, Slide 17<br />
Trace Cache<br />
• Cattura sequenze <strong>di</strong> basic-blocks (tracce <strong>di</strong>naniche) in una cache che<br />
sostituisce la cache istruzioni<br />
• Tale cache e’ in<strong>di</strong>cizzata dal target <strong>di</strong> un salto<br />
• Gli elementi <strong>di</strong> tale cache sono asssemblati <strong>di</strong>namicamente mentre il programma esegue le<br />
sue istruzioni<br />
• Se c’e’ hit nella trace cache<br />
• Le istruzioni vengono prelevate dalla trace cache<br />
• La sequenza prelevata tipicamente contiene piu’ basic-block<br />
(ovvero una sequenza <strong>di</strong> piu’ taken branch)<br />
• Si elimina la necessita’ <strong>di</strong> fare il fetch <strong>di</strong> piu’ target<br />
• Inoltre la cache non deve essere con piu’ porte<br />
Quando il co<strong>di</strong>ce viene eseguito<br />
la prima volta: si registra la<br />
sequenza nella trace cache<br />
Roberto Giorgi, Universita’ <strong>di</strong> Siena, C208L05, Slide 18<br />
B1<br />
B2 B3<br />
B4<br />
B1 B3 B4<br />
va nella trace cache<br />
B1<br />
B3<br />
B4<br />
La volta successiva si<br />
legge la sequenza dalla<br />
trace cache: non c’e’<br />
bisogno <strong>di</strong> pre<strong>di</strong>rla !