110 likes | 200 Views
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.
E N D
Stall pipeline • Es el esquemamas simple paramanejar los saltos. HacerFreeze o flush del pipeline, detener o borrarcualquierinstrucciondespues del branch hastaque el destino del branch sea determinado. Ventaja: simple en Hardware y Software.
Predict Not Taken • Unamejor performance, y solo un pocomascompleja. La idea espredecirsiempre el saltocomo NO TOMADO. El hardware continua cargandolasintruccionescomosi el branch no fueratomado. • Se debetenercuidad de no cambiar la maquina de estados (UC – PC) hastaque el salto sea determinadofeacientemente • La complejidad se basa en: se debepoderimplementar un “vueltaatras” porsi el salto se toma.
PredictTaken • Un esquemaalternativoespredecir el branch comosiempretomado. • Tan pronto como el branch esdecodificado se calcula la dirección de la nuevainstrucción y continuando, desdeesenuevopunto.
DelayedBranch • En un saltodemorado, el ciclo de ejecución con un salto de longitud n Branch instrsequential successor 1sequential successor 2. . . . .sequential successor n Los sucesoressecuencialesestan en losbranch-delay slots. Estasinstrucciones son ejecutadas sin importarsi se toma o no el salto.
DelayedBranch (compilador) • EL trabajo del compiladoreshacerque la sucesión de instrucciones sea valida y útil.Existen 3 esquemasparapredecir: From before branch From target From fall through
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 II symmetric design: This is how the branch prediction should work. The state is incremented when jumping (+arrows) and decremented when not jumping (-arrows).