El documento describe el concepto de pipelining o segmentación en la ejecución de instrucciones en una CPU. Divide el procesamiento de una instrucción en múltiples etapas secuenciales como búsqueda de instrucción, decodificación, ejecución, acceso a memoria y escritura en registros, de modo que varias instrucciones puedan estar en procesamiento simultáneamente en diferentes etapas, mejorando el rendimiento. Explica cómo implementar un diseño de 5 etapas usando registros entre etapas para almacenar y pas
4. Lavado secuencial O R D E N E J E C U C I Ó N Cada persona demora 1.5 horas en estar lista. Lavado secuencial toma 6 horas para 4 cargas. Esto es equivalente a procesador multiciclo. ¿Cómo acelerar la cosa? A B C D 30 40 20 30 40 20 30 40 20 30 40 20 6 PM 7 8 9 10 11 Medianoche Tiempo
5. Lavado segmentado (pipelined) Cada persona todavía demora 1.5 horas en estar lista. Pero ahora las 4 cargas están listas en sólo 3.5 horas. Aceleración = 1.7 En general, 1 carga de ropa lista cada 40 minutos. Aceleración = 1.5hrs/40min. = 2.25 ¿Cuál sería la aceleración si lavar = secar = doblar? A B C D 6 PM 7 8 9 10 11 Medianoche Tiempo 30 40 40 40 40 20 O R D E N E J E C U C I Ó N
6.
7.
8.
9.
10. Uniciclo, Multiciclo, Pipelining Clk Ciclo 1 Multiciclo: IF DEC EX MEM WB Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6 Ciclo 7 Ciclo 8 Ciclo 9 Ciclo 10 Load IF DEC EX MEM WB IF DEC EX MEM Load Store Segmentación (pipeline): IF DEC EX MEM WB Store Clk Uniciclo: Load Store Ocio IF R-type IF DEC EX MEM WB R-type Ciclo 1 Ciclo 2
11.
12.
13.
14. Sección de datos en Pipeline IF ID EXE MEM WB IF/ID ID/EXE EXE/MEM MEM/WB
15. Visión alternativa, usando recursos MI Reg MD MI Reg MD MI Reg MD MI Reg MD tiempo Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6 Ciclo 7 Instrucciones instr1 instr2 instr3 instr4
16.
17.
18.
19.
20. Conflicto estructural: una sola memoria Tiempo (ciclos de reloj) Soluciones: - detener el pipeline (stall) - replicar la memoria (memoria de datos separada de memoria de instrucciones) Mem Sec. Instr. Load Instr 1 Instr 2 Instr 3 Instr 4 ALU Mem Reg Mem Reg ALU Mem Reg Mem Reg ALU Mem Reg Mem Reg ALU Reg Mem Reg ALU Mem Reg Mem Reg
21. Solución 1: Detención del pipeline (stalling) Tiempo (ciclos reloj) Mem Sec. Instr Load Instr 1 Instr 2 Instr 3 Instr 4 Reg Mem Reg Reg Mem Reg Si 1 de cada 4 instrucciones es un load: CPI = 1.25 100% utilización de puerta de lectura de la memoria CPI no puede ser menor que 1.25 a menos que tengamos memoria de datos e instrucciones separadas ALU Mem ALU Mem Reg Mem Reg ALU Mem Reg Mem Reg ALU ALU Mem Reg Mem Reg
22.
23. Conflictos estructurales: Acceso banco de registros Sec. Instr Load Instr 1 Reg Mem Reg Reg Reg Tiempo (ciclos de reloj) ALU Mem ALU Mem
24. Solución 1: Detener el pipeline (stalling) F L U J O D E P R O G R Tiempo (ciclos de reloj) LW ADD SUB LW LW Soluciona el conflicto, pero introduce una “burbuja”(ciclo ocioso) en el pipeline CPI > 1 Ej. Si el conflicto se produce en una de cada 4 instrucciones, CPI = 1.25 ALU Mem Reg Mem ALU Mem Reg Mem Reg Mem Reg ALU Reg ALU Reg Reg Mem ALU Mem Reg Mem Reg Reg burbuja
25.
26.
27. Etapa 1: IF Leer dirección Instrucción [31-0] Memoria de Instrucciones Leer registro 1 Lect. dato 1 Lect. dato 2 Escribir dato Escribir registro Leer registro 2 Registros ALU Zero result Add 1 M U X 0 0 M U X 1 0 M U X 1 P C Leer dirección Escribir dirección Escribir dato Lect. dato Memoria de Datos 4 Instrucción [25-21] Instrucción [20-16] Instrucción [15-11] 16 32 Instrucción [15-0] Desp. Izq. Add IF/ID ID/EX EX/MEM MEM/WB 1 M U X 0 Ext Signo lw IF
28.
29. Etapa 2 : ID Leer dirección Instrucción [31-0] Memoria de Instrucciones Leer registro 1 Lect. dato 1 Lect. dato 2 Escribir dato Escribir registro Leer registro 2 Registros ALU Zero result Add 1 M U X 0 0 M U X 1 0 M U X 1 P C Leer dirección Escribir dirección Escribir dato Lect. dato Memoria de Datos 4 Instrucción [25-21] Instrucción [20-16] Instrucción [15-11] 16 32 Instrucción [15-0] Desp. Izq. Add IF/ID ID/EX EX/MEM MEM/WB 1 M U X 0 Ext Signo lw ID
30.
31. Etapa 3: EX Leer dirección Instrucción [31-0] Memoria de Instrucciones Leer registro 1 Lect. dato 1 Lect. dato 2 Escribir dato Escribir registro Leer registro 2 Registros ALU Zero result Add 1 M U X 0 0 M U X 1 0 M U X 1 P C Leer dirección Escribir dirección Escribir dato Lect. dato Memoria de Datos 4 Instrucción [25-21] Instrucción [20-16] Instrucción [15-11] 16 32 Instrucción [15-0] Desp. Izq. Add IF/ID ID/EX EX/MEM MEM/WB 1 M U X 0 Ext Signo lw EX
32.
33. Etapa 4: MEM Leer dirección Instrucción [31-0] Memoria de Instrucciones Leer registro 1 Lect. dato 1 Lect. dato 2 Escribir dato Escribir registro Leer registro 2 Registros ALU Zero result Add 1 M U X 0 0 M U X 1 0 M U X 1 P C Leer dirección Escribir dirección Escribir dato Lect. dato Memoria de Datos 4 Instrucción [25-21] Instrucción [20-16] Instrucción [15-11] 16 32 Instrucción [15-0] Desp. Izq. Add IF/ID ID/EX EX/MEM MEM/WB 1 M U X 0 Ext Signo lw MEM
34.
35. Etapa 5: WB Leer dirección Instrucción [31-0] Memoria de Instrucciones Leer registro 1 Lect. dato 1 Lect. dato 2 Escribir dato Escribir registro Leer registro 2 Registros ALU Zero result Add 1 M U X 0 0 M U X 1 0 M U X 1 P C Leer dirección Escribir dirección Escribir dato Lect. dato Memoria de Datos 4 Instrucción [25-21] Instrucción [20-16] Instrucción [15-11] 16 32 Instrucción [15-0] Desp. Izq. Add IF/ID ID/EX EX/MEM MEM/WB 1 M U X 0 Ext Signo lw WB
36. Varias instrucciones en pipeline Leer dirección Instrucción [31-0] Memoria de Instrucciones Leer registro 1 Lect. dato 1 Lect. dato 2 Escribir dato Escribir registro Leer registro 2 Registros ALU Zero result Add 1 M U X 0 0 M U X 1 0 M U X 1 P C Leer dirección Escribir dirección Escribir dato Lect. dato Memoria de Datos 4 Instrucción [25-21] Instrucción [20-16] 16 32 Instrucción [15-0] Desp. Izq. Add IF/ID ID/EX EX/MEM MEM/WB 1 M U X 0 Ext Signo Instrucción [20-16] Instrucción [15-11]
37. Varias instrucciones en pipeline Ciclo 1 lw $1, 4($3) #IF Leer dirección Instrucción [31-0] Memoria de Instrucciones Leer registro 1 Lect. dato 1 Lect. dato 2 Escribir dato Escribir registro Leer registro 2 Registros ALU Zero result Add 1 M U X 0 0 M U X 1 0 M U X 1 P C Leer dirección Escribir dirección Escribir dato Lect. dato Memoria de Datos 4 Instrucción [25-21] Instrucción [20-16] 16 32 Instrucción [15-0] Desp. Izq. Add IF/ID ID/EX EX/MEM MEM/WB 1 M U X 0 Ext Signo Reloj: 1 Instrucción [20-16] Instrucción [15-11]
38. Varias instrucciones en pipeline Ciclo 2 lw $1, 4($3) #ID add $3, $4, $5 #IF Leer dirección Instrucción [31-0] Memoria de Instrucciones Leer registro 1 Lect. dato 1 Lect. dato 2 Escribir dato Escribir registro Leer registro 2 Registros ALU Zero result Add 1 M U X 0 0 M U X 1 P C Leer dirección Escribir dirección Escribir dato Lect. dato Memoria de Datos 4 Instrucción [25-21]RS Instrucción [20-16]RT 16 32 Instrucción [15-0] Desp. Izq. Add IF/ID ID/EX EX/MEM MEM/WB 1 M U X 0 Ext Signo Reloj: 1 2 Instrucción [20-16]RT Instrucción [15-11]RD 0 M U X 1
39. Varias instrucciones en pipeline Ciclo 3 lw $1, 4($3) #EX sw $4, 8($5) #IF add $3, $4, $5 #ID Leer dirección Instrucción [31-0] Memoria de Instrucciones Leer registro 1 Lect. dato 1 Lect. dato 2 Escribir dato Escribir registro Leer registro 2 Registros ALU Zero result Add 1 M U X 0 0 M U X 1 P C Leer dirección Escribir dirección Escribir dato Lect. dato Memoria de Datos 4 Instrucción [25-21]RS Instrucción [20-16]RT 16 32 Instrucción [15-0] Desp. Izq. Add IF/ID ID/EX EX/MEM MEM/WB 1 M U X 0 Ext Signo Reloj: 1 2 3 Instrucción [20-16]RT Instrucción [15-11]RD 0 M U X 1 RT
40. Varias instrucciones en pipeline Ciclo 4 lw $1, 4($3) #MEM sw $4, 8($5) #ID add $3, $4, $5 #EX and $1, $2, $3 #IF Leer dirección Instrucción [31-0] Memoria de Instrucciones Leer registro 1 Lect. dato 1 Lect. dato 2 Escribir dato Escribir registro Leer registro 2 Registros ALU Zero result Add 1 M U X 0 0 M U X 1 P C Leer dirección Escribir dirección Escribir dato Lect. dato Memoria de Datos 4 Instrucción [25-21]RS Instrucción [20-16]RT 16 32 Instrucción [15-0] Desp. Izq. Add IF/ID ID/EX EX/MEM MEM/WB 1 M U X 0 Ext Signo Reloj: 1 2 3 4 Instrucción [20-16]RT Instrucción [15-11]RD 0 M U X 1 RD RT
41. Varias instrucciones en pipeline Ciclo 5 lw $1, 4($3) #WB sw $4, 8($5) #EX add $3, $4, $5 # MEM and $1, $2, $3 #ID beq $2, $3, L1 #IF Leer dirección Instrucción [31-0] Memoria de Instrucciones Leer registro 1 Lect. dato 1 Lect. dato 2 Escribir dato Escribir registro Leer registro 2 Registros ALU Zero result Add 1 M U X 0 0 M U X 1 P C Leer dirección Escribir dirección Escribir dato Lect. dato Memoria de Datos 4 Instrucción [25-21]RS Instrucción [20-16]RT 16 32 Instrucción [15-0] Desp. Izq. Add IF/ID ID/EX EX/MEM MEM/WB 1 M U X 0 Ext Signo Reloj: 1 2 3 4 5 Instrucción [20-16]RT Instrucción [15-11]RD 0 M U X 1 RT RD RT
42.
43.
44.
45.
46.
47. Solución: forwarding (redireccionamiento) Tiempo (ciclos reloj) Pasar dato directamente de la etapa en que se genera a la etapa en que se usa Instrucción “or r9, r1, r9” no necesita forwarding si se define orden lectura-escritura en el banco de registros Sec Instr add r1 ,r2,r3 sub r4, r1 ,r3 and r6, r1 ,r7 or r8, r1 ,r9 xor r10, r1 ,r11 ALU Im Reg Dm Reg ALU Im Reg Dm Reg ALU Im Reg Dm Reg Im ALU Reg Dm Reg ALU Im Dm Reg Reg
48.
49.
50.
51. Conflicto de datos en load-add lw $1 , 4($3) #WB and $2, $1 , $3 #ID beq $2, $3, L1 #IF Leer dirección Instrucción [31-0] Memoria de Instrucciones Leer registro 1 Lect. dato 1 Lect. dato 2 Escribir dato Escribir registro Leer registro 2 Registros ALU Zero result Add 1 M U X 0 0 M U X 1 P C Leer dirección Escribir dirección Escribir dato Lect. dato Memoria de Datos 4 Instrucción [25-21] Instrucción [20-16] 16 32 Instrucción [15-0] Desp. Izq. Add IF/ID ID/EX EX/MEM MEM/WB 1 M U X 0 Ext Signo Reloj: 1 2 3 Conflicto Load debe escribir en $1 y add debe leer $1. Lectura debe ocurrir despues de escritura 0 M X 1 RT Instrucción [20-16]RT Instrucción [15-11]RD