Escritura: r2 (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb
(Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb
(Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb
Lectura: r2 Detención del cauce: Burbuja de 2 ciclos
BURBUJAS, DETENCIONES (STALLINGS) 12 Es posible detener el cauce manteniendo una instrucción en la misma etapa sub r2, r1, r3 and r12, r2, r5 or r13, r6, r2 and r14, r2, r2 sw r15, 100 (r2) IF ID Ex M Wb (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb
Escritura: r2 (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb
(Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb
(Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb
Lectura: r2 Detención del cauce: Burbuja de 2 ciclos
Como la etapa no puede finalizarse se mantiene la misma instrucción hasta que se completa ID ID
RIESGOS RAW: SOLUCIÓN HW FORWARDING (ANTICIPACIÓN) 13 Utilizar los resultados cuando están disponibles, antes de que se escriban en el banco de registros Anticipación al banco de registros para permitir leer/escribir en el mismo registro Anticipación a la ALU, para adelantar una operación en la ALU que de otro modo tendría que esperar a que el dato se escribiera en el banco de registros y luego leerlo. Anticipación ALU-ALU: desde la salida de la ALU a alguno de los registros de entrada de la ALU. Anticipación MEM-ALU: desde la etapa MEM se anticipa el dato leído de la cache de datos a la entrada de la ALU.
ANTICIPACIÓN: EJEMPLO Anticipación de datos 14 sub r2, r1, r3 and r12, r2, r5 or r13, r6, r2 and r14, r2, r2 sw r15, 100 (r2) (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb
Escritura: r2 (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb
(Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb
(Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb
Lectura: r2 Anticipación ALU-ALU: Evita la burbuja de 2 ciclos (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb
Anticipación MEM-ALU
HW PARA FORWARDING (ANTICIPACIÓN) 15 ForwardA ForwardB
HW PARA FORWARDING (ANTICIPACIÓN) Riesgo en EX If (EX/MEM.RegWrite and (EX/MEM.Rd = ID/EX.Rs)) then ForwardA=01 If (EX/MEM.RegWrite and (EX/MEM.Rd = ID/EX.Rt)) then ForwardB=01 Riesgo en MEM if (MEM/WB.RegWrite and !(EX/MEM.RegWrite and (EX/MEM.RegisterRd ? 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) then ForwardA=10 if (MEM/WB.RegWrite and !(EX/MEM.RegWrite and (EX/MEM.RegisterRd ? 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) then ForwardB=10 16
EJEMPLO 1: FORWARDING POR HW 17 Forwarding: Ex -> Scr1 y WB -> Scr2
EJEMPLO 2: FORWARDING POR HW 18 Forwarding: WB -> Scr2
NO SIEMPRE ES POSIBLE EL FORWARDING 19 Una instr trata de leer un registro después de un load que va a escribir en ese mismo registro. Es necesaria una unidad de detección de riesgos que detenga la instr posterior al load.
FORWARDING + UNIDAD DE DETECCIÓN DE RIESGOS 20
PLANIFICACIÓN DEL CÓDIGO PARA EVITAR RIESGOS POR LOAD Tratemos de generar un código más rápido para la operación a=b+c; d=e-f; suponiendo que a,b,c,d,e y f están en la memoria. 21
RIESGOS ESTRUCTURALES Se producen por intentar utilizar simultáneamente un cierto recurso dos instrucciones en ejecución Banco de registros: Acceso al banco de registros en 2 etapas: Lectura durante la etapa 2 (ID) Escritura durante la etapa 5 (Wb) Solución: dos puertos de lectura y uno de escritura Memoria: Se puede acceder a la memoria en dos etapas: Búsqueda de instrucción durante la etapa 1 (IF) Lectura/Escritura de datos durante la etapa 4 (Mem) Solución: dos caches separadas para instrucciones y datos Cada unidad funcional puede ser usada una sola vez por instrucción Cada unidad funcional debe ser usada en la misma etapa por todas las instrucciones. 22
RIESGOS ESTRUCTURALES Se producen por un conflicto en el uso de los recursos En el cauce planteado, si una instr reg-reg pudiese escribir el resultado de salida de la ALU en la etapa MEM y se produce una secuencia load seguida de una instr reg-reg entonces tendríamos dos accesos simultáneos al banco de registros 23 (Gp:) ld r2, 100 (r2)
mult r3, r4, r5 (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) Wb (Gp:) M/Wb (Gp:) Escritura: r2 (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) Wb (Gp:) M/Wb (Gp:) Escritura: r3 (Gp:) Banco de registros
RIESGOS ESTRUCTURALES Soluciones hardware:
Arbitraje con interbloqueo: se añade hW que arbitre el conflicto e interbloquee a una de las instrucciones. Aparecen burbujas (en este caso de un ciclo).
Replicación de recursos hW: En nuestro ejemplo, si el banco de registros tuviese dos puertos de escritura el problema se resolvería (salvo que escriban exactamente en el mismo registro, pero este caso puede eliminarse en la compilación) 24
RIESGOS ESTRUCTURALES En el cauce que se ha diseñado no existen problemas de riesgo estructural. Esto se debe a que el banco de registros se escribe en la primera mitad de los ciclos WB y la lectura se realiza en la segunda mitad de los ciclos ID. 25 Las escrituras en el banco de registros se realizan en la primera mitad del ciclo Las lecturas en el banco de registros se realizan en la segunda mitad del ciclo => el banco es escrito antes que leído => devuelve el dato correcto (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb (Gp:) Escritura: r2 (Gp:) sub r2, r1, r3 xxx xxx and r12, r2, r11 (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb
RIESGOS DE CONTROL Se originan en las instrucciones de salto condicional (branch) o incondicional (jmp). Si suponemos que la instr 1 es un jmp, y la dirección de salto se calcula en la fase EX y se reemplaza el PC en la fase MEM, en el cauce han entrado una instr 2 (fase EX), una instr 3 (fase ID) y una instr 4 (fase IF). Salto incondicional: las instrucciones deben ser canceladas y deberá buscarse la instr situada en la dirección de salto. Salto condicional: sólo es necesario vaciar si el salto se efectúa. A estas instrucciones que siguen a la instr 1 se les denomina delay slot o ventana de retardo. Que en este caso es de tres ciclos. 26
RIESGOS DE CONTROL: EJEMPLO 27 Delay slot o ventana de retardo Burbuja de 2 o 3 ciclos según sea el diseño: 2? si se escribe el PC al comienzo de la fase M y se empieza la búsqueda de la instr en el mismo ciclo. 3? si se escribe el PC al final de la fase M y se empieza la búsqueda en el ciclo siguiente (Gp:) bnez r2, 100 (r3)
mult r3, r4, r5 (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) Wb (Gp:) M (Gp:) Lectura: PC (Gp:) Escritura: PC (Gp:) PC: Etapa IF (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) Wb (Gp:) M
RIESGOS DE CONTROL: VACIADO DEL CAUCE 28 Delay slot o ventana de retardo Si el cauce no se había detenido, y se estaba ejecutando yyy1 e yyy2 de forma especulativa, en caso de que el salto se efectúe es necesario vaciar el cauce. (Gp:) bnez r2, 100 (r3) yyy1 yyy2 mult r3, r4, r5 (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) Wb (Gp:) M (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) Wb (Gp:) M (Gp:) IF (Gp:) ID (Gp:) – (Gp:) – (Gp:) – (Gp:) IF (Gp:) – (Gp:) – (Gp:) –
29 RIESGO PROVOCADO POR UN SALTO CONDICIONAL: CICLO 1
30 RIESGO PROVOCADO POR UN SALTO CONDICIONAL: CICLO 2
Página anterior | Volver al principio del trabajo | Página siguiente |