190 likes | 323 Views
Scheduling dinámico. Scoreboarding. Scheduling. Scheduling. En que orden se ejecutan las instrucciones. Hay dos opciones: Estático, cuando el hardware no tiene control. Dinámico, cuando el hardware puede reordenar. Dos algoritmos clásicos de scheduling dinámico: Algoritmo de scoreboarding.
E N D
Scheduling dinámico Scoreboarding
Scheduling • Scheduling. En que orden se ejecutan las instrucciones. Hay dos opciones: • Estático, cuando el hardware no tiene control. • Dinámico, cuando el hardware puede reordenar. • Dos algoritmos clásicos de scheduling dinámico: • Algoritmo de scoreboarding. • Algoritmo de Tomasulo. Arquitectura de Computadoras
Scoreboarding • Usa un scoreboard (pizarrón). • Pieza de hardware. • Registra el progreso de las instrucciones. • Decide cuando emitir instrucciones adicionales. • Resuelve las dependencias durante la ejecución. • Detiene (stall) el pipeline si es necesario. Arquitectura de Computadoras
Estructura básica • Emisión (issue). • El scoreboard permite que una instrucción sea emitida si: • Su unidad de ejecución está libre. • Su registro destino está libre. • En otro caso el pipeline se detiene hasta que a) y b) sean verdaderas. • Esto resuelve dependencias de salida que podrían producir peligros WAW. Arquitectura de Computadoras
Estructura básica • Leer operandos. • El scoreboard permite que una instrucción lea sus operandos si no están siendo escritos por alguna instrucción en ejecución o recién emitida. • En otro caso, el pipeline se detiene. • Esto resuelve dependencias de datos verdaderas que podrían producir peligros RAW. • Las escrituras a los operandos se completan antes de que la instrucción pueda leerlos. Arquitectura de Computadoras
Estructura básica • Ejecución. • La ejecución puede proceder sin problemas. • Write back. • La instrucción puede escribir su resultado si no hay instrucciones anteriores sin leer sus operandos. • Esto resuelve antidependencias que podrían producir peligros WAR. • La salida de instrucciones anteriores no puede ser reescrita. Arquitectura de Computadoras
Scoreboard • Guarda el status de cada unidad de ejecución. • Ocupada/no ocupada. • Instrucción. • Registro destino. • Registros fuente, incluyendo si están siendo procesados en otra unidad. • Guarda el status de cada registro. • Ocupado/no ocupado. • Guarda el status de cada instrucción. • En que etapa del pipeline está. Arquitectura de Computadoras
Ejemplo • Una máquina con 4 unidades de ejecución: • Entera. Maneja aritmética entera, incluyendo cálculo de direcciones en operaciones carga/guarda. • Multiplicación. Maneja la multiplicación de punto flotante. • División. Maneja la división de punto flotante. • Suma/Resta. Maneja la suma y resta de punto flotante. • Las unidades de multiplicación y división son más lentas que las otras. Arquitectura de Computadoras
Ejemplo • Considerar el siguiente código: • lw r6, 8(t0) ; r6 = Mem[t0+8] • lw r2, 4(t1) ; r2 = Mem[t1+4] • mul r1, r2, r4 ; r1 = r2 * r4 • sub r8, r6, r2 ; r8 = r6 – r2 • div r10, r1, r6 ; r10 = r1 / r6 • add r6, r8, r2 ; r6 = r8 + r2 Arquitectura de Computadoras
Ejemplo • Dependencias: • Verdaderas de datos. Entre instrucciones 1 y 4; 1 y 5; 2 y 3; 2 y 4; 2 y 6; 3 y 5; 4 y 6. • Salida. Entre instrucciones 1 y 6. • Antidependencias. Entre instrucciones 6 y 4; 6 y 5. Arquitectura de Computadoras
Ejemplo • Después de emitir las instrucciones 1 a 5. • Status de las instrucciones: Arquitectura de Computadoras
Ejemplo • Status de las unidades de ejecución: Arquitectura de Computadoras
Ejemplo • r1, r2, r8 y r10 están ocupados. • No se pueden emitir instrucciones que escriban en esos registros por peligros WAW. • La dependencia de salida entre 1 y 6 no es un peligro porque 1 ya salió y 6 no ha sido emitida. • Las instrucciones 3 (mul) y 4 (sub) están esperando a r2. • r2 va a ser escrito por las instrucción 2 (lw). Arquitectura de Computadoras
Ejemplo • Los peligros RAW entre las instrucciones 2 y 3 y entre 2 y 4 están deteniendo las unidades de Multiplicación y de Suma/Resta. • La instrucción 2 puede seguir. No hay peligros WAR. • No se puede escribir en registros cuyos operandos estén listos (Lst = “si”), porque todavía no han sido usados. • Lst = “—” indica que los operandos ya fueron leídos. Arquitectura de Computadoras
Ejemplo • Mas adelante. • Status de las instrucciones: Arquitectura de Computadoras
Ejemplo • Status de las unidades de ejecución: Arquitectura de Computadoras
Ejemplo • r1, r6 y r10 están ocupados. • La instrucción 5 (div) está esperando a la 3 (mul). • La instrucción 6 (add) no puede escribir en r6 hasta que la instrucción 5 (div) lea sus argumentos. Arquitectura de Computadoras
Ejemplo • Todas las instrucciones han terminado, excepto la 5 que no ha escrito su resultado. • Status de las instrucciones: Arquitectura de Computadoras
Ejemplo • Status de las unidades de ejecución: Arquitectura de Computadoras