Descargar

Riegos de la segmentación avanzada (página 3)

Enviado por Pablo Turmero


Partes: 1, 2, 3
edu.red 31 RIESGO PROVOCADO POR UN SALTO CONDICIONAL: CICLO 3

edu.red 32 RIESGO PROVOCADO POR UN SALTO CONDICIONAL: CICLO 4

edu.red 33 RIESGO PROVOCADO POR UN SALTO CONDICIONAL: CICLO 5

edu.red 34 RIESGO PROVOCADO POR UN SALTO CONDICIONAL: CICLO 6

edu.red 35 RIESGO PROVOCADO POR UN SALTO CONDICIONAL: CICLO 7

edu.red IMPACTO DE UN SALTO EN LAS DETENCIONES Si el número de instr de salto es un 30%, detener 2 o 3 ciclos en cada uno tiene un impacto significativo en las prestaciones

La solución tiene dos partes: Determinar si el salto debe o no efectuarse tan pronto como sea posible , y Calcular la dirección efectiva de salto antes 36

edu.red Se produce debido a que la dirección objetivo del salto (branch y jmp) y la condición de salto (branch) se calulan en la fase Ex de la arquitectura DLX, y se reemplaza el PC en la fase MEM. Es posible reducir el tamaño de la ventana de retardo. Para ello es necesario calcular la dirección efectiva de salto y evaluar la condición de salto lo antes posible. Esto implica modificar el diseño de la arquitectura del cauce. MIPS: Solución utilizada: Mover el test de Zero a la etapa ID/RF Situar el sumador para calcular el nuevo PC en la etapa ID/RF Se consigue 1 ciclo de reloj de penalización en los saltos en vez de 2 o 3 37 RIESGOS DE CONTROL: REDUCCIÓN DE LA VENTANA DE RETARDO

edu.red ESQUEMA MODIFICADO 38 (Gp:) Memory Access (Gp:) Write Back (Gp:) Instruction Fetch (Gp:) Instr. Decode Reg. Fetch (Gp:) Execute Addr. Calc (Gp:) ALU (Gp:) MUX (Gp:) Instr. Memory (Gp:) Reg File (Gp:) MUX (Gp:) Data Memory (Gp:) MUX (Gp:) Sign Extend (Gp:) 4 (Gp:) Add (Gp:) Zero? (Gp:) PC (Gp:) WB Data (Gp:) Rs1 (Gp:) Rs2 (Gp:) Imm (Gp:) PC (Gp:) Instr (Gp:) PC (Gp:) PC (Gp:) PC (Gp:) AOR (Gp:) SVR (Gp:) ImR (Gp:) AIR 2 (Gp:) AIR 1 (Gp:) CR (Gp:) ARR (Gp:) LMDR (Gp:) RD (Gp:) RD (Gp:) RD (Gp:) Rd (Gp:) Add

edu.red Aunque sabemos que en estos tipos de instrucciones tenemos que cambiar el PC, aún es necesario un delay slot (ventana de retardo de 1 ciclo) ya que: Descodificación de la instrucción Cálculo del PC Básicamente, es una decisión que hay que realizar, lo cual toma su tiempo. Esto sugiere un único delay slot: Es decir la siguiente instrucción después de un salto incondicional se ejecuta siempre. 39 JUMPS AND CALLS (JAL) (SALTOS INCONDICIONALES)

edu.red RIESGOS DE CONTROL: SOLUCIONES Un rediseño de cauce, como el que se ha comentado antes reduce el retardo a un ciclo, pero puede producir nuevos riesgos. Son necesarias técnicas específicas: Hardware: una es el interbloqueo. utilizar una cache predescodificada. predicción dinámica de salto (a esta le dedicaremos un tema entero por lo que no lo veremos aquí). Software: la técnica de saltos retardados. predicción estática de saltos (dirigida por el compilador). 40

edu.red El Hw interbloquea la siguiente instrucción a ejecutar ? hasta que se calcula la dirección efectiva y el sentido del salto. 41 SOLUCIONES HARDWARE A RIESGOS DE CONTROL: INTERBLOQUEO

edu.red Que es lo que realmente hay que hacer en run time? Una vez que se ha detectado que una instr es un jump o JAL, es posible recodificarla en la cache interna. Esto es una forma muy limitada de compilación dinámica

Uso de una cache de instr “Pre-descodificadas” Llamado “branch folding” en el CRISP processor de los Bell-Labs. Nota: el JAL introduce un riesgo estructural sobre las escrituras 42 (Gp:) and r3,r1,r5 addi r2,r3,#4 sub r4,r2,r1 jal doit subi r1,r1,#1 (Gp:) A: (Gp:) doit (Gp:) addi r2,r3,#4 (Gp:) A+8 (Gp:) N (Gp:) sub r4,r2,r1 (Gp:) L (Gp:) — (Gp:) — (Gp:) — (Gp:) and r3,r1,r5 (Gp:) A+4 (Gp:) N (Gp:) subi r1,r1,#1 (Gp:) A+20 (Gp:) N (Gp:) Internal Cache state:

COMO CONSEGUIR UN JUMP CON “RETARDO CERO”

edu.red 43 SOLUCIONES SOFTWARE RIESGOS DE CONTROL:ESQUEMA MODIFICADO (CACHE PREDESCODIFICADA) (Gp:) Memory Access (Gp:) Write Back (Gp:) Instruction Fetch (Gp:) Instr. Decode Reg. Fetch (Gp:) Execute Addr. Calc (Gp:) ALU (Gp:) Reg File (Gp:) MUX (Gp:) MUX (Gp:) Data Memory (Gp:) MUX (Gp:) Sign Extend (Gp:) Branch? (Gp:) RD (Gp:) RD (Gp:) RD (Gp:) WB Data (Gp:) RS2 (Gp:) Imm (Gp:) MUX (Gp:) ID/EX (Gp:) MEM/WB (Gp:) EX/MEM (Gp:) IF/ID (Gp:) Adder (Gp:) RS1 (Gp:) Return PC (Addr + 4) (Gp:) Imm (Gp:) Opcode (Gp:) Decoded Cache (Gp:) Address

Incrementa el ciclo de reloj en no menos de un retardo por el MUX Si embargo introduce un riesgo estructural sobre las escrituras debido al JAL

edu.red Se elimina el delay slot (bueno) El branch ha sido solapado con la instrucción sub (bueno). Incrementa el tamaño de la cache de instrucciones (no tan bueno) Requiere otro puerto de lectura en el banco de registros (MALO) Dobla potencialmente el periodo de reloj (REALMENTE MALO) 44 (Gp:) and r3,r1,r5 addi r2,r3,#4 sub r4,r2,r1 bne r4,loop subi r1,r1,#1 (Gp:) Internal Cache state: (Gp:) A: (Gp:) sub r4,r2,r1 (Gp:) addi r2,r3,#4 (Gp:) sub r4,r2,r1 (Gp:) — (Gp:) and r3,r1,r5 (Gp:) subi r1,r1,#1 (Gp:) N (Gp:) BnR4 (Gp:) — (Gp:) N (Gp:) N (Gp:) A+16 (Gp:) A+8 (Gp:) — (Gp:) A+4 (Gp:) A+20 (Gp:) N/A (Gp:) loop (Gp:) — (Gp:) N/A (Gp:) N/A (Gp:) Next (Gp:) Branch (Gp:) A+16:

POR QUÉ NO USARLO CON LOS SALTOS CONDICIONALES?

edu.red 45 Puede doblar el periodo de reloj – debe acceder a la cache y a los reg ESQUEMA MODIFICADO (Gp:) Memory Access (Gp:) Write Back (Gp:) Instruction Fetch (Gp:) “Instr. Decode Reg. Fetch” (Gp:) Execute Addr. Calc (Gp:) ALU (Gp:) MUX (Gp:) MUX (Gp:) Data Memory (Gp:) MUX (Gp:) Sign Extend (Gp:) Branch? (Gp:) RD (Gp:) RD (Gp:) RD (Gp:) WB Data (Gp:) RS2 (Gp:) Imm (Gp:) MUX (Gp:) ID/EX (Gp:) MEM/WB (Gp:) EX/MEM (Gp:) IF/ID (Gp:) RS1 (Gp:) Return PC (Addr + 4) (Gp:) Decoded Cache (Gp:) Address (Gp:) Next PC (Gp:) Branch PC (Gp:) Reg File (Gp:)

edu.red TEMPORIZACIÓN 46 El tiempo de acceso al banco de registros debe ser cercano al periodo de reloj original (Gp:) Instruction Cache Access

(Gp:) Branch Register Lookup

(Gp:) Mux

Clock: Ready to latch new PC Comienzo de If

edu.red Esto causa que la siguiente instrucción se busque inmediatamente en los destinos de los saltos (predict taken) Si el salto finalmente no es realizado, entonces se elimina la instrucción de destino y se continua por la dirección A+16 47 (Gp:) and r3,r1,r5 addi r2,r3,#4 sub r4,r2,r1 bne r4,loop subi r1,r1,#1 (Gp:) Internal Cache state: (Gp:) A: (Gp:) sub r4,r2,r1 (Gp:) addi r2,r3,#4 (Gp:) sub r4,r2,r1 (Gp:) bne r4 (Gp:) and r3,r1,r5 (Gp:) subi r1,r1,#1 (Gp:) N (Gp:) N (Gp:) N (Gp:) N (Gp:) N (Gp:) A+12 (Gp:) A+8 (Gp:) loop (Gp:) A+4 (Gp:) A+20 (Gp:) Next (Gp:) A+16:

SIN EMBARGO, PODEMOS USAR LA PRIMERA TÉCNICA PARA REFLEJAR PREDICCIONES Y ELIMINAR DELAY SLOTS

edu.red SOLUCIONES SOFTWARE RIESGOS DE CONTROL:TÉCNICA DE SALTOS RETARDADOS Idea básica: El compilador rellena el delay slot con instrucciones que no tengan dependencias con la de salto, y que estén situadas antes del jump o branch (según orden de programa). Si no hay suficientes instrucciones para mover al delay slot este se rellena con instrucciones no-op. Estas instrucciones se ejecutarán siempre. Se usó por vez primera en las primeras generaciones de proc RISC escalares: IBM 801, Berkeley RISC I y el MIPS de Stanford. Observación: La probabilidad de encontrar una instrucción que mover a la ventana de retardo es 0.6. La probabilidad de encontrar 2 instrucción es 0.2. La probabilidad de encontrar 3 instrucción es 0.1 . 48

edu.red Bucle sin usar salto retardado Existen instrucciones independientes que no afectan a la de salto. 49 SALTO RETARDADO: EJEMPLO ld f2, -8(r1) ld f4, 0(r1) multd f8, f0, f2 sd 0(r2), f8 addi r2, r2, 8 addi r1, r1, 8 slt r4, r4, r3 bnez r4, loop yyy1 (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb

Escritura: f2 Escritura: f4 Escritura: f8 F8 Mem (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

M (Gp:) x (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb

(Gp:) x

IF Ex – (Gp:) x

ID IF ID M (Gp:) x

IF Ex Wb (Gp:) x

ID Escritura: r2 (Gp:) x

(Gp:) x

(Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb

loop:

edu.red Bucle usando la técnica de salto retardado La ventana de retardo se ha completado con instrucciones independientes que no afectan a la de de salto 50 SALTO RETARDADO: EJEMPLO loop: ld f2, -8(r1) ld f4, 0(r1) multd f8, f0, f2 addi r1, r1, 8 slt r4, r4, r3 bnez r4, loop sd 0(r2), f8 addi r2, r2, 8 yyy1 (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb

Escritura: f2 Escritura: f4 Escritura: f8 (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

M (Gp:) x (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb

Ex (Gp:) M (Gp:) x (Gp:) IF (Gp:) Ex (Gp:) Wb (Gp:) x (Gp:) ID

IF ID (Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb

(Gp:) IF (Gp:) ID (Gp:) Ex (Gp:) M (Gp:) Wb

Wb

edu.red Todos los saltos como tomados. Los saltos “hacia atrás” predecirlos como tomados y los saltos “hacia adelante” predecirlos como no tomados. Hacer una predicción sobre la dirección del salto: La predicción es realizada por el compilador y se incluye en el formato de la instrucción branch. Las instrucciones se comienzan a buscar en la dirección objetiva del salto predicha por este bit. Si la predicción es errónea, las instrucciones que se han comenzado a ejecutar según ese path se eliminan del cauce y se busca en la dirección correcta. La predicción es estática por lo que no puede ser alterada, salvo en la compilación. 51 SOLUCIONES SOFTWARE RIESGOS DE CONTROL:PREDICCIÓN ESTÁTICA DEL SALTO

edu.red IDEAS PARA REDUCIR LAS DETENCIONES 52

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente