14
Pipeline Gustavo Andrés Uribe Gómez

Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n: Número de instrucciones entre dos saltos k: Número

Embed Size (px)

Citation preview

Page 1: Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n: Número de instrucciones entre dos saltos k: Número

Pipeline

Gustavo Andrés Uribe Gómez

Page 2: Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n: Número de instrucciones entre dos saltos k: Número

Pipeline

 

Page 3: Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n: Número de instrucciones entre dos saltos k: Número

Pipeline

 

Page 4: Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n: Número de instrucciones entre dos saltos k: Número

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.

Page 5: Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n: Número de instrucciones entre dos saltos k: Número

Pipeline Speedup

Page 6: Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n: Número de instrucciones entre dos saltos k: Número

Pipeline Speedup

Page 7: Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n: Número de instrucciones entre dos saltos k: Número

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)

Page 8: Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n: Número de instrucciones entre dos saltos k: Número

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.

Page 9: Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n: Número de instrucciones entre dos saltos k: Número

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.

Page 10: Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n: Número de instrucciones entre dos saltos k: Número

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.

Page 11: Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n: Número de instrucciones entre dos saltos k: Número

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)

Page 12: Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n: Número de instrucciones entre dos saltos k: Número

Predicción de SaltosCambio tomar/no tomar salto  

Page 13: Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n: Número de instrucciones entre dos saltos k: Número

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.

Page 14: Pipeline Gustavo Andrés Uribe Gómez. Pipeline Pipeline Speedup S k =T 1 /T k = nk / [k+(n-1)] n: Número de instrucciones entre dos saltos k: Número

Gracias