You are on page 1of 14

¿Qué es Pipelining?

Es una técnica de implementación en la que se superpone la


ejecución de varias instrucciones.

Aprovecha el paralelismo entre instrucciones en una corriente


secuencial de instrucciones.

Se busca balancear la demora de cada etapa.

El caso ideal sería que el tiempo por instrucción sea =

Tiempo por instrucción en la máquina sin pipe


Número de etapas del pipe

23/08/06

¿Qué es Pipelining?

23/08/06

1
El set de instrucciones

Las operaciones de datos usan registros de 32 ó 64 bits.

Únicas operaciones sobre memoria: load y store.

Pocos formatos de instrucciones.

Las instrucciones se implementan a lo sumo en 5 ciclos:

FI - DI - EX - MEM - WB
Otras instrucciones
Instrucciones de memoria
Instrucciones de branch

23/08/06

El RISC implementado como pipe

Se inicia una instrucción en cada ciclo.

Cada ciclo se convierte en una etapa del pipe.

Cada instrucción toma 5 ciclos.

23/08/06

2
El RISC implementado como pipe
ciclos
1 2 3 4 5 6 7 8 9

Instrucción i IF ID EX MEM WB

Instrucción i+1 IF ID EX MEM WB

Instrucción i+2 IF ID EX MEM WB

Instrucción i+3 IF ID EX MEM WB

Instrucción i+4 IF ID EX MEM WB

23/08/06

Data paths desplazados en el tiempo

23/08/06

3
El pipe clásico de 5 etapas

Las unidades principales se usan en ciclos distintos.

Memorias para instrucciones y datos separadas.

Archivo de registros de dos etapas.

Actualización del PC en cada ciclo.

23/08/06

Pipeline con registros entre etapas


EX/MEM

MEM/WB

IF/ID ID/EX

23/08/06

4
Desempeño en el pipe
Se incrementa el throughput de instrucciones.

Cada instrucción individual se ejecuta en el mismo tiempo.

El programa corre más rápido.

Individualmente ninguna instrucción corre más rápido.

Se introducen demoras por:


Por el uso de registros entre etapas.

Clock skew, diferencia de tiempo en percibir la señal de reloj

23/08/06

Problemas del pipe: los hazards


Los riesgos son situaciones que impiden a una instrucción
ejecutar en el ciclo designado. Reducen el desempeño.

Hazards estructurales. Conflictos de hard en el solapamiento


de instrucciones.

Hazards de datos. Una instrucción depende de los


resultados de otra cuando están en el pipe

Hazards de control. Los branches dentro de un pipe.

Los riesgos a veces fuerzan stall (atasco) del pipe.

23/08/06

5
Desempeño del pipe con stalls
Speedup por pipelining =
Tiempo promedio por instrucción sin pipe
Tiempo promedio por instrucción con pipe
Ganancia en el pipe:
Considerando el CPI.

Considerando el tiempo de ciclo.

Bajo ciertas restricciones el Speedup es igual a la


profundidad del pipe

23/08/06

Hazards estructurales
La ejecución solapada requiere:
Que las unidades estén pipelined, o

La duplicación de recursos.

Si las instrucciones no se acomodan para usar los


recursos entonces hay un conflicto estructural.

Este hazard requiere un stall de la instrucción hasta


que la unidad esté libre. (burbuja)

23/08/06

6
Conflicto por cada referencia a memoria

23/08/06

Hazard estructural superado con una burbuja

ciclos
1 2 3 4 5 6 7 8 9

Instrucción load IF ID EX MEM WB

Instrucción 1 IF ID EX MEM WB

Instrucción 2 IF ID EX MEM WB

Instrucción 3 stall IF ID EX MEM WB

Instrucción 4 IF ID EX MEM

23/08/06

7
Hazards de datos
Ocurren cuando el orden de acceso a los datos se ve alterado
por el solapamiento de las instrucciones en el pipe.

Ejemplo.

Se pueden reducir los stalls usando forwarding.

23/08/06

Hazards de datos

23/08/06

8
Adelantamiento simple

23/08/06

Adelantamiento simple
El resultado de la ALU que está en EX/MEM y MEM/WB
siempre se retorna a las entradas de la ALU.

Se adelanta desde instrucciones que empezaron uno o dos


ciclos antes.

Al detectar que una instrucción de ALU previa ha calculado el


valor de uno de los operandos, se elige como entrada el valor
que retorna.

La idea se puede generalizar a cualquier unidad. Ej mem->alu.

23/08/06

9
Adelantamiento a memoria

23/08/06

Interlock

23/08/06

10
Interlock
ciclos
1 2 3 4 5 6 7 8 9

ld r1,0(r2) IF ID EX MEM WB
dsub r4,r1,r5 IF ID EX MEM WB
and r6,r1,r7 IF ID EX MEM WB
or r8,r1,r9 IF ID EX MEM WB

1 2 3 4 5 6 7 8 9

ld r1,0(r2) IF ID EX MEM WB
dsub r4,r1,r5 IF ID stall EX MEM WB
and r6,r1,r7 IF stall ID EX MEM WB
or r8,r1,r9 stall IF ID EX MEM WB

23/08/06

Hazards por branches


Los saltos introducen la consideración de alternativas en la
secuencia de ejecución. Saltos tomados y no tomados.

Evaluación de la condición y cálculo del destino del salto.

Reducción de penalidades, 4 alternativas:


Alternativa simple: repetir el fetch. Freeze el pipe.

Otro enfoque: “salto no tomado”. Y “salto tomado”

Otro más: “slot de demora”

23/08/06

11
Penalidades por hazards de BRANCH
No comienza ninguna instrucción No finaliza ninguna instrucción
ciclos
1 2 3 4 5 6 7 8 9

Instrucción de salto IF ID EX MEM WB

sucesor del branch IF IF ID EX MEM WB

sucesor del branch + 1 IF ID EX MEM WB

sucesor del branch + 2 IF ID EX MEM WB

23/08/06

Reduciendo las penalidades por branch


Predecir el salto como no tomado:
Seguir con la secuencia de instrucciones.

Funciona cuando el salto no es tomado.

Sino, hay que transformar la op recuperada en un nop. Fetch nuevo destino

Considerar la política salto tomado.

Salto demorado:
Características del slot del salto demorado.

El compilador busca llenar el slot con una instrucción válida y útil.

23/08/06

12
Predicho como no tomado
1 2 3 4 5 6 7 8 9

inst salto no tomado IF ID EX MEM WB


inst i + 1 IF ID EX MEM WB
inst i + 2 IF ID EX MEM WB
Inst i + 3 IF ID EX MEM WB
Inst i + 4 IF ID EX MEM WB

1 2 3 4 5 6 7 8 9

inst salto tomado IF ID EX MEM WB


inst i + 1 IF Idle Idle Idle idle
destino del salto IF ID EX MEM WB
destino del salto + 1 IF ID EX MEM WB
destino del salto + 2 IF ID EX MEM WB

23/08/06

Salto demorado
1 2 3 4 5 6 7 8 9
inst salto no tomado IF ID EX MEM WB
Inst de salto demorado (i + 1) IF ID EX MEM WB
inst i + 2 IF ID EX MEM WB
Inst i + 3 IF ID EX MEM WB
Inst i + 4 IF ID EX MEM WB

1 2 3 4 5 6 7 8 9
inst salto tomado IF ID EX MEM WB
inst de salto demorado (i + 1) IF ID EX MEM WB
destino del salto IF ID EX MEM WB
destino del salto + 1 IF ID EX MEM WB
destino del salto + 2 IF ID EX MEM WB

23/08/06

13
Planificación del slot de demora

23/08/06

Performance de los saltos

Profundidad del pipe


Speedup pipe=
1+ ciclos de stall por saltos

Ciclos de stall por saltos = frecuencia de saltos X penalidad por saltos

Profundidad del pipe


Speedup pipe= 1+frecuencia de saltos X penalidad por saltos

23/08/06

14

You might also like