260 likes | 562 Views
Pipelining. Introducción. Definición. Técnica de implementación. Consiste en ejecutar traslapadas varias instrucciones al mismo tiempo. Ejemplo. Pasos para lavar y secar ropa: Poner una carga de ropa sucia en la lavadora. Al terminar, poner la ropa húmeda en la secadora.
E N D
Pipelining Introducción
Definición • Técnica de implementación. • Consiste en ejecutar traslapadas varias instrucciones al mismo tiempo. Arquitectura de Computadoras
Ejemplo • Pasos para lavar y secar ropa: • Poner una carga de ropa sucia en la lavadora. • Al terminar, poner la ropa húmeda en la secadora. • Al terminar, poner la ropa seca en una mesa y doblarla. • Guardar la ropa doblada. • Al terminar, poner la siguiente carga en la lavadora. Arquitectura de Computadoras
Ejemplo • Hay dos formas de lavar ropa: • Hacer un paso a la vez (versión secuencial). • Hacer varios pasos a la vez (versión con pipeline). • Suponiendo que hay cuatro cargas de ropa y que cada paso tarda media hora (30 minutos). Arquitectura de Computadoras
Versión secuencial Arquitectura de Computadoras
Versión con pipeline Arquitectura de Computadoras
Conclusión • Para 1 carga de ropa: • Versión secuencial: 2 horas. • Versión con pipeline: 2 horas. • Speedup: 2 / 2 = 1.0. • Para 4 cargas de ropa: • Versión secuencial: 8 horas. • Versión con pipeline: 3.5 horas. • Speed-up: 8 / 3.5 = 2.29. Arquitectura de Computadoras
Conclusión • Para 20 cargas de ropa: • Versión secuencial: 40 horas. • Versión con pipeline: 11.5 horas. • Speed-up: 40 / 11.5 = 3.48. • El speed-up está limitado por el número de etapas del pipeline. • El speed-up depende del factor de utilización del pipeline. Arquitectura de Computadoras
Conclusión • Para tener un pipeline se necesitan recursos para cada etapa. Arquitectura de Computadoras
Pipelining en MIPS • Las instrucciones de MIPS tienen 5 etapas: • Obtener (fetch) una instrucción de la memoria. • Leer los registros mientras se decodifica la instrucción. • Ejecutar la operación o calcular una dirección. • Accesar un operando en la memoria de datos. • Escribir el resultado en un registro. Arquitectura de Computadoras
IF ID EX MEM WB Pipelining en MIPS • IF (instruction fetch): obtiene la instrucción de la memoria. • ID (instruction decoding): decodifica la instrucción y lee los operandos. • EX (execute): ejecuta la instrucción, o si es lw/sw calcula la dirección de la memoria. • MEM (memory access): lee/escribe la memoria. Es una no-op para instrucciones tipo-R. • WB (write back): escribe el resultado en el registro. Arquitectura de Computadoras
Ejemplo • El cuadro completo representa la memoria de instrucciones. • El cuadro punteado representa el banco de registros. • EX tiene el símbolo de la ALU. • MEM está en blanco porque add no accesa la memoria de datos. Arquitectura de Computadoras
Pipelining en MIPS • Características de MIPS que ayudan a implementar cada etapa del pipeline en un ciclo: • Las instrucciones tienen la misma longitud. Etapas IF e ID. • Solo 3 formatos de instrucción. Etapa ID. • Las instrucciones lw y sw son las únicas que accesan la memoria. Etapas EX y MEM. • Los operandos están alineados en la memoria. Etapa MEM. Arquitectura de Computadoras
Datapath con pipeline Arquitectura de Computadoras
Datapath con pipeline • Los registros entre etapas sirven para pasar valores e información de control de una etapa a otra. • IF/ID 64 bits para guardar la instrucción y el PC. • ID/EX 128 bits. • EX/MEM 97 bits. • MEM/WB 64 bits. Arquitectura de Computadoras
Comparación • Comparar la implementación MIPS de un ciclo contra la implementación de un pipeline. • Versión de 8 instrucciones: carga palabra (lw), guarda palabra (sw), suma (add), resta (sub), and, or, set-on-less-than (slt) y branch-on-equal (beq). • Versión de un ciclo: todas las instrucciones tardan un ciclo de reloj. Arquitectura de Computadoras
Comparación • Versión con pipeline: • 200 ps por acceso a memoria. • 200 ps por operación de la ALU. • 100 ps por leer o escribir en el banco de registros. Arquitectura de Computadoras
Comparación • En la versión de un ciclo, la duración del ciclo de reloj se acopla a la instrucción mas lenta. • El periodo de reloj es de 800 ps, aunque haya instrucciones que ocupen 500 ps. • Se van a comparar una secuencia de 3 instrucciones lw. Arquitectura de Computadoras
Versión de un ciclo • El tiempo entre la primera y cuarta instrucción es 800 x 3 = 2,400 ps. Arquitectura de Computadoras
Versión pipeline • El tiempo entre la primera y la cuarta instrucción es 600 ps. Arquitectura de Computadoras
Conclusiones • En la versión pipeline, la longitud de cada etapa es la misma y se acopla a la etapa mas lenta. • Cada etapa dura 200 ps. • Speed-up = 2400 / 1400 = 1.71. Arquitectura de Computadoras
Speed-up • Si las etapas del pipeline están perfectamente balanceadas, el tiempo entre instrucciones es: • En teoría, el speedup de un pipeline es aproximadamente igual al número de etapas. • Un pipeline de 5 etapas es 5 veces más rápido que la versión sin pipeline. Arquitectura de Computadoras
Speed-up • En teoría, si el periodo de reloj en la versión de un ciclo es de 800 ps, en la versión pipeline el periodo debería ser de 800 / 5 = 160 ps. • Pero, como las etapas no están balanceadas, el periodo de reloj es de 200 ps. • Además hay que tener en cuenta el overhead de usar un pipeline. • En el ejemplo, el speed-up está limitado a 4. Arquitectura de Computadoras
Speed-up • En el ejemplo, el speed-up es de 1.71. • La razón es que son solo 3 instrucciones. • Si se ejecutan un millón de lw: • El speed-up depende de la utilización del pipeline. Arquitectura de Computadoras
Conclusión • El uso de un pipeline mejora el rendimiento incrementando el throughput sin decrementar el tiempo de ejecución de una instrucción individual. Arquitectura de Computadoras