Predicción de saltos
-
Upload
joelle-harmon -
Category
Documents
-
view
28 -
download
0
description
Transcript of Predicción de saltos
Predicción de saltos
Stall pipeline
Es el esquema mas simple para manejar los saltos. Hacer Freeze o flush del pipeline, detener o borrar cualquier instruccion despues del branch hasta que el destino del branch sea determinado. Ventaja: simple en Hardware y Software.
Predict Not Taken
Una mejor performance, y solo un poco mas compleja. La idea es predecir siempre el salto como NO TOMADO. El hardware continua cargando las intrucciones como si el branch no fuera tomado.
Se debe tener cuidad de no cambiar la maquina de estados (UC – PC) hasta que el salto sea determinado feacientemente
La complejidad se basa en: se debe poder implementar un “vuelta atras” por si el salto se toma.
Predict Not Taken
Predict TakenUn esquema alternativo es
predecir el branch como siempre tomado.
Tan pronto como el branch es decodificado se calcula la dirección de la nueva instrucción y continuando, desde ese nuevo punto.
Delayed BranchEn un salto demorado, el ciclo de ejecución
con un salto de longitud n
Branch instr sequential successor 1 sequential successor 2 . . . . . sequential successor n
Los sucesores secuenciales estan en los branch-delay slots. Estas instrucciones son ejecutadas sin importar si se toma o no el salto.
Delayed Branch
Delayed Branch (compilador)EL trabajo del compilador es
hacer que la sucesión de instrucciones sea valida y útil.Existen 3 esquemas para predecir:
From before branch From target From fall through
Delayed Branch
En Intel asymmetric design in the Pentium:The state follows the +arrows when the branch instruction jumps, and the -arrows when not jumping. The branch instruction is predicted to jump next time if in state 2 or 3, and to not jump when in state 0 or 1.
En Intel IIsymmetric design:This is how the branch prediction should work. The state is incremented when jumping (+arrows) and decremented when not jumping (-arrows).