previsione di diramazione o di salto
|
Le macchine con pipeline acquisiscono (fetch) l'istruzione successiva prima di aver completato l'esecuzione di quella corrente. Se quella corrente prevede una derivazione (salto), allora è possibile che l'istruzione successiva sia stata recuperata dall'area di memoria sbagliata. La branch prediction è una tecnica che cerca d'indovinare quale sarà l'indirizzo appropriato per la prossima istruzione, sapendo unicamente l'indirizzo di quella corrente. A questo scopo si utilizza una memoria associativa chiamata BTB (Branch Target Buffer).La maggior parte dei processori recuperano ed eseguono le istruzioni una dopo l'altra. Talvolta, però, queste non vengono eseguite nello stesso ordine con cui sono registrate in memoria. Quando il flusso sequenziale viene interrotto per eseguire una porzione di codice diversa si verifica il cosiddetto "branch" o salto la cui presenza può introdurre ritardi nell'esecuzione e ridurre le prestazioni. Se il processore conosce in anticipo il verificarsi di un salto e l'indirizzo a cui saltare, può recuperare in prestazioni. Questo è difficile da realizzare perchè la decisione di salto viene presa nel momento in cui si arriva a quel particolare punto del programma. Tuttavia tenendo una storia di quanto è avvenuto nel passato si può predire il futuro e la funzione di branch prediction interna a processori come il Pentium serve a questo scopo. Una branch prediction ben progettata può azzeccare le previsioni di salto 9 volte su 10 e in tal modo determinare un miglioramento di prestazioni del 25%.
|
|