Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n:...

Post on 23-Jan-2016

217 views 0 download

Transcript of Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n:...

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