¿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 entre instrucciones sea =
Tiempo entre instrucciones en la máquina sin pipe
Número de etapas del pipe
2/9/15 Guillermo Aguirre 1
¿Qué es Pipelining?
2/9/15 Guillermo Aguirre 2
Etapas en las instrucciones MIPS
IF: Recuperación de instrucción desde memoria.
ID: Lectura de registros mientras se decodifica la
instrucción. Debido al formato regular.
EX: Ejecución de la operación o cálculo de la dirección.
MEM: Acceso a operandos en memoria de datos.
WB: Escritura del resultado en los registros
2/9/15 Guillermo Aguirre 3
Uni-ciclo vs segmentación.
Calcular el tiempo entre instrucciones
Tiempo total de cada instrucción se calcula a partir de la demora de cada componente
Se considera que los multiplexores, la unidad de control, el acceso al PC y la
extensión de signo no tienen demora.
2/9/15 Guillermo Aguirre 4
Uni-ciclo vs segmentación
2/9/15 Guillermo Aguirre 5
Aceleración de la segmentación
Para una aceleración máxima se requieren condiciones ideales.
Las etapas deben estar balanceadas.
La máxima aceleración es cercana al número de etapas.
No se refleja con pocas instrucciones.
Considerando condiciones ideales, se cumple que:
Tiempo entre instrucciones sin pipe
Tiempo entre instrucciones =
con pipe Número de etapas del pipe
Se mejora el rendimiento (throughput) de instrucciones y
no se reduce la ejecución individual de instrucciones.
2/9/15 Guillermo Aguirre 6
Conjunto de instrucciones para pipeline
• Igual longitud.
– Facilita la recuperación.
• Pocos formatos.
– Se leen registros y se decodifica en etapa 2
• Operandos en memoria solo en load y store.
– Las direcciones se calculan en la etapa 3
• Operandos alineados en memoria.
– Cada transferencia requiere un acceso.
2/9/15 Guillermo Aguirre 7
Problemas del pipe: los riesgos(hazards)
Riesgos estructurales. Una instrucción no puede ejecutar en el
ciclo previsto porque el hardware no soporta la combinación de
instrucciones dispuestas para ejecutar.
Riesgos de datos. Cuando una instrucción planificada no puede
ejecutar en el ciclo previsto porque los datos que necesita aun no
están disponibles.
Riesgos de control. Cuando la instrucción planificada no puede
ejecutar en el ciclo previsto porque la instrucción recuperada no
es la que se necesita.
2/9/15 Guillermo Aguirre 8
Riesgos estructurales
2/9/15 Guillermo Aguirre 9
Los riesgos de datos
add $s0, $t0, $t1
sub $t2, $s0, $t3
2/9/15 Guillermo Aguirre 10
Adelantamiento
2/9/15 Guillermo Aguirre 11
Riesgo load-use
2/9/15 Guillermo Aguirre 12
Reordenamiento de código
a = b + e;
c = b + f;
lw $t1, 0($t0) lw $t1, 0($t0)
lw $t2, 4($t0) lw $t2, 4($t0)
add $t3, $t1, $t2 lw $t4, 8($t0)
sw $t3, 12($t0) add $t3, $t1, $t2
lw $t4, 8($t0) sw $t3, 12($t0)
add $t5, $t1, $t4 add $t5, $t1, $t4
sw $t5, 16($t0) sw $t5, 16($t0)
2/9/15 Guillermo Aguirre 13
Riesgos de control (solución 1)
2/9/15 Guillermo Aguirre 14
Riesgos de control-Salto no tomado
Predición
correcta
Predición
incorrecta
2/9/15 Guillermo Aguirre 15
Predicción de saltos
• Estática
– En base al comportamiento típico del salto.
– Ejemplo: branch en loops y sentencias if
• Predecir los saltos hacia atrás como tomados.
• Predecir los saltos hacia adelante como no tomados
• Dinámica
– Se registra el comportamiento de cada branch
– La tendencia se mantendrá en el futuro
2/9/15 Guillermo Aguirre 16
Salto Demorado - MIPS
• Siempre se ejecuta la instrucción en secuencia
• El salto se hace después de la demora.
• En la demora van instrucciones neutrales.
• La demora es un ciclo.
2/9/15 Guillermo Aguirre 17
Nociones de segmentación: Resumen
• Con la segmentación se incrementa el rendimiento
de las instrucciones lo cual mejora el desempeño.
– Explota el paralelismo a nivel de instrucción.
– Cada instrucción tiene la misma latencia.
• Aparecen los riesgos
– Estructurales, de datos y de control
• El diseño del conjunto de instrucciones afecta la
complejidad de la implementación de la
segmentación
2/9/15 Guillermo Aguirre 18
Ejecución segmentada
2/9/15 Guillermo Aguirre 19
<<<
64 bits
97 bits
128 bits
64 bits <<<
2/9/15 Guillermo Aguirre
2/9/15 Guillermo Aguirre
2/9/15 Guillermo Aguirre
2/9/15 Guillermo Aguirre
2/9/15 Guillermo Aguirre
2/9/15 Guillermo Aguirre
2/9/15 Guillermo Aguirre
2/9/15 Guillermo Aguirre
2/9/15 Guillermo Aguirre 28
2/9/15 Guillermo Aguirre
Bits de control de la ALU
2/9/15 Guillermo Aguirre
Señales de control
2/9/15 Guillermo Aguirre
Señales de control de las tres etapas finales
2/9/15 Guillermo Aguirre
2/9/15 Guillermo Aguirre