Upload
jesus-picazo
View
217
Download
0
Embed Size (px)
Citation preview
Pipeline
Gustavo Andrés Uribe Gómez
Pipeline
Pipeline
Pipeline Speedup
Sk=T1/Tk= nk / [k+(n-1)]
n: Número de instrucciones entre dos saltosk: Número de etapas del pipelineTk:Tiempo en realizar las n instrucciónes con un pipeline de k etapas.T1:Tiempo en realizar las n instrucciónes.
Pipeline Speedup
Pipeline Speedup
Manejo de los Saltos
• Flujos Múltiples (Multiple Streams)• Precargado del destino del salto (Prefetch branch target) • Loop buffer • Predicción de saltos• Saltos retrasados (Delayed branch)
Flujos Múltiples
• Los saltos condicionales provocan demoras porque la maquina no sabe cual de dos instrucciones será la siguiente.
• Las máquinas con flujos múltiples manejan paralelamente las dos posibles opciones hasta que se resuelva cual es la que debió seleccionarse.
• Problemas:o Redundancia de los registros y de la memoria.o En caso de encontrarse un salto antes de resolver el
anterior necesita crear más flujos paralelos.
Pre-cargado del Destino del Salto
• Se carga (fetch) la instrucción destino del salto y la instrucción siguiente al salto.
• Problemas:o La mejora de este tipo de máquina es muy mínima.
Loop Buffer
• Estas máquinas cargan en una memoria de alta velocidad las n instrucciones más frecuentemente usadas en secuencia.
• Estas máquinas presentan una ventaja considerable para las instrucciones del tipo if-else y ciclos cortos.
• El funcionamiento de esta memoria es similar al de la caché de instrucciones pero de menor tamaño.
Predicción de Saltos
Existen varias técnicas:• Predicción nunca se realiza (Predict never taken )• Predicción siempre se realiza (Predict always taken)• Predicción por opcode • Cambio tomar/no tomar salto (Taken/not taken switch)• Tabla de historia de saltos (Branch history table)
Predicción de SaltosCambio tomar/no tomar salto
Práctica Pipeline
1. Mediante varios programas mostrar las perdidas de rendimiento causadas por:
• Saltos incondicionales• Saltos condicionales• Instrucciones dependientes
2. Por medio de un programa intentar descubrir el tipo de algoritmo que usa la máquina para manejar los saltos.
Gracias