1 / 42

Organización Del Computador I Riesgos de la Segmentación

Organización Del Computador I Riesgos de la Segmentación. Verano 2004. sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) . Dependencias de Datos. Existen trabas que impiden que una instrucción se ejecute en el ciclo que tiene asignado.

glynn
Download Presentation

Organización Del Computador I Riesgos de la Segmentación

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OrganizaciónDel Computador IRiesgos de la Segmentación Verano 2004

  2. sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) Dependencias de Datos • Existen trabas que impiden que una instrucción se ejecute en el ciclo que tiene asignado. • Se debe respetar el orden de las lecturas y escrituras para mantener la semántica del programa. • Las instrucciones and, or,add y sw deben leer el registro $2 después que éste haya sido escrito por la instrucción sub. Hay Riesgo RAW Unidad 2

  3. Riesgo RAW 1 2 3 4 5 6 7 8 ciclos Sub $2, $1, $3 Las dependencias que van hacia atrás en el tiempo son RIESGOS M M Reg Reg M And $12, $2, $5 Reg M Reg M M Or $13, $6, $2 Reg Reg M M Add $14, $2, $2 Reg Reg Sw $15, 100($2) M M Reg Reg Unidad 2

  4. sub $2, $1, $3 nop nop nop and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) Solución Estática • El compilador podría ocuparse de no generar esas secuencias de código: por ejemplo insertando instrucciones entre sub y add. • Si no encuentra ninguna instrucción útil, inserta NOP. Unidad 2

  5. Inserción de NOP 1 2 3 4 5 6 7 8 ciclos Sub $2, $1, $3 Las dependencia que queda no es un RIESGO M M Reg Reg M Reg NOP M Reg M M NOP Reg Reg M M NOP Reg Reg M M Reg Reg And $12, $2, $5 Unidad 2

  6. Solución Dinámica: Detener • La solución más sencilla es ESPERAR, o sea, detener las instrucciones en la segmentación. • Detectar el riesgo • Detener la segmentación • Cuando hay riesgo? Cuando una instrucción que está en la etapa Decode intenta leer un registro que alguna(s) instrucción(es) anterior planea escribirlo en WB. • Como se detiene la segmentación? Insertando “burbujas” Unidad 2

  7. Condiciones de Riesgos • Entre la instrucción que está en ID y la que está en EX: • ID/EX.IRRD==IF/ID.IRRS • ID/EX.IRRD==IF/ID.IRRT • ID/EX.IRRT==IF/ID.IRRS • ID/EX.IRRT==IF/ID.IRRT • Entre la instrucción que está en ID y la que está en MEM: • EX/MEM.REG==IF/ID.IRRS • EX/MEM.REG==IF/ID.IRRT • Entre la instrucción que está en ID y la que está en WB: • MEM/WB.REG==IF/ID.IRRS • MEM/WB.REG==IF/ID.IRRT Unidad 2

  8. Riesgo RAW 1 2 3 4 5 6 7 8 ciclos Sub $2, $1, $3 M M Reg Reg M And $12, $2, $5 Reg M Reg M M Or $13, $6, $2 Reg Reg M M Add $14, $2, $2 Reg Reg Sw $15, 100($2) M M Reg Reg Unidad 2

  9. sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) Condiciones de Riesgos ID/EX.IRRD==IF/ID.IRRS EX/MEM.REG==IF/ID.IRRT MEM/WB.REG==IF/ID.IRRS Unidad 2

  10. Detección de Riesgos • Hay instrucciones que NO escriben en los registros: Sw, Beq.==> comprobarlo con la señal RegW • ID/EX.IRRT==IF/ID.IRRS • Hay instrucciones que escriben o en rt o en rd : tipo R o Lw ==> comprobarlo con la señal RegDst • ID/EX.IRRT==IF/ID.IRRT sw $2, 100($1) and $12, $2, $5 lw $2, 100($1) and $12, $5, $2 Unidad 2

  11. Detección de Riesgos • Riesgo EX: • ID/EX.WBRegW==1 y ((ID/EX.EXRegDst==1 y ID/EX.IRRD==IF/ID.IRRS ) o (ID/EX.EXRegDst==0 y ID/EX.IRRT==IF/ID.IRRS ) o (ID/EX.EXRegDst==1 y ID/EX.IRRD==IF/ID.IRRT ) o (ID/EX.EXRegDst==0 y ID/EX.IRRT==IF/ID.IRRT )) • Riesgo MEM: • EX/MEM.WBRegW==1 y ((EX/MEM.REG==IF/ID.IRRS ) o (EX/MEM.REG==IF/ID.IRRT )) • Riesgo WB: • MEM/WB.WBRegW==1 y ((MEM/WB.REG==IF/ID.IRRS ) o (MEM/WB.REG==IF/ID.IRRT ))

  12. op rs rt rd shamnt func op rs rt desp shamt funct op $1 op $2 $8 $5 $8 1200 Detección de Riesgos • Que ocurre con este código? • ID/EX.WBRegW==1 y ((ID/EX.EXRegDst==1 y ID/EX.IRRD==IF/ID.IRRT ) add $8, $1, $2 lw $8, 1200($5) Unidad 2

  13. Detección de Riesgos • Sucede que la instrucción add, que es previa, escribirá sobre el registro identificado por el campo rd, cuyo valor coincide con el del campo rt de la siguiente instrucción que usualmente sirve para identificar a los registros fuente SÓLO si no se trata de una instrucción de load. • Pregunta: modificamos también el riesgo MEM y WB? • ID/EX.WBRegW==1 y ((ID/EX.EXRegDst==1 y ID/EX.IRRD==IF/ID.IRRT ) ID/EX.WBRegW==1 y (ID/EX.EXRegDst==1 y ID/EX.IRRD==IF/ID.IRRT y IF/ID.Irop<>35) Unidad 2

  14. Detenciones 1 2 3 4 5 6 7 8 ciclos Sub $2, $1, $3 M M Reg Reg Burbujas And $12, $2, $5 ==NOP M Reg And $12, $2, $5==NOP M Reg And $12, $2, $5==NOP M Reg And $12, $2, $5 M M Reg Reg Unidad 2

  15. Detenciones • Detener la instrucción que está en ID • No cambiar el PC • No cambiar IF/ID • Insertar NOP’s : tantos como ciclos tenga que durar la detención • 3 si el riesgo es EX • 2 si el riesgo es MEM • 1 si el riesgo es WB • Como se insertan NOP’s? • Generando ceros en las señales de control (EX-MEM-WB) • Pregunta: modificamos también el riesgo MEM y WB? • ID/EX.WBRegW==1 y ((ID/EX.EXRegDst==1 y ID/EX.IRRD==IF/ID.IRRT ) Unidad 2

  16. Control de Riesgos y Detenciones MEM/WB.WB.RegW EX/MEM.WB.RegW Unidad de Detección de Riesgos ID/EX.EX.RegDst ID/EX.WB.RegW 0 IF/ID.Write Contrrol PCWrite RegW Instrucción ID/EX.IRRT ID/EX.IRRD EX/MEM.REG MEM/WB.REG

  17. Cuantos ciclos necesitamos para ejecutar la secuencia? sub $2, $1, $3 and $4, $2, $5 or $8, $2, $6 add $9, $4, $2 slt $1, $6, $7 ID/EX.IRRD==IF/ID.IRRS • Cual es el CPI medio? • Indicar qué instrucciones se están ejecutando durante el ciclo 9. EX/MEM.REG==IF/ID.IRRS MEM/WB.REG==IF/ID.IRRS MEM/WB.REG==IF/ID.IRRS Unidad 2

  18. Cortocircuitos: R-R 1 2 3 4 5 6 7 8 ciclos Sub $2, $1, $3 El resultado está disponible a partir del ciclo 4. M M Reg Reg M And $12, $2, $5 Reg M Reg M M Or $13, $6, $2 Reg Reg M M Add $14, $2, $2 Reg Reg Sw $15, 100($2) M M Reg Reg Unidad 2

  19. Cortocircuitos: Riesgo Ex M M Reg Reg And $12, $2, $5 Sub $2, $1, $3 Ciclo 3 M M Reg Reg And $12, $2, $5 Sub $2, $1, $3 Ciclo 4 Unidad 2

  20. Cortocircuitos: Riesgo MEM Add $14, $2, $2 Or $13, $6, $2 And $12, $2, $5 Sub $2, $1, $3 M M Reg Reg • El valor a la entrada de la ALU debe provenir del registro de segmentación M/WB.S Ciclo 5 Unidad 2

  21. Cortocircuitos: Riesgo WB Add $14, $2, $2 Or $13, $6, $2 And $12, $2, $5 Sub $2, $1, $3 Reg M M Reg • Como la UF es la misma: el Banco de Registros tiene la capacidad de suministrar el dato que se va a escribir por el BusA o el BusB. Unidad 2

  22. Implementación Reg • La entrada a la ALU puede provenir de: • registro de segmentación ID/EX • registro de segmentación EX/MEM • registro de segmentación MEM/WB Unidad 2

  23. Control de Anticipación:R-R Reemplazamos la lógica de detección de riesgo por la lógica de anticipación de resultados. • Riesgo EX: • (EX/M.WBRegW==1 y EX/M.REG==ID/EX.IRRS ) ALUselA=01 • (EX/M.WBRegW==1 y EX/M.REG==ID/EX.IRRT ) ALUselB=01 • Riesgo MEM: • (MEM/WB.WBRegW==1 y MEM/WB.REG==ID/EX.IRRS ) ALUselA=10 • (MEM/WB.WBRegW==1 y MEM/WB.REG==ID/EX.IRRT ) ALUselB=10 Unidad 2

  24. Lógica de Control R-R ID/EX EX/MEM MEM/WB EX/MEM.WBRegW Reg ALUselB ALUselA ID/EX.IRrs EX/MEM.REG Unidad de Anticipación ID/EX.IRrt MEM/WB.REG MEM/WB.WBRegW Unidad 2

  25. Cuantos ciclos necesitamos para ejecutar la secuencia con anticipación? sub $2, $1, $3 and $4, $2, $5 or $8, $2, $6 add $9, $4, $2 slt $1, $6, $7 Riesgo EX • Cual es el CPI medio? Comparar con detenciones. Riesgo MEM Riesgo MEM Unidad 2

  26. Consideremos add $2, $3, $1 sub $2, $3, $1 add $5, $2, $1 Riesgo MEM • Son dos riesgos simultáneos: uno EX y otro MEM • Cuando la instrucción add llega a la etapa de ejecución, la lógica de anticipación comprueba que se cumplen las dos condiciones a la vez: • (EX/M.WBRegW==1 y EX/M.REG==ID/EX.IRRS ) • (MEM/WB.WBRegW==1 y MEM/WB.REG==ID/EX.IRRS ) Riesgo EX Unidad 2

  27. Control de Anticipación: R-R • Se debe dar prioridad a la instrucción más reciente • Riesgo EX: • (EX/M.WBRegW==1 y EX/M.REG==ID/EX.IRRS ) ALUselA=01; X=1 • (EX/M.WBRegW==1 y EX/M.REG==ID/EX.IRRT ) ALUselB=01; X=1 • Riesgo MEM: • (MEM/WB.WBRegW==1) y (MEM/WB.REG==ID/EX.IRRS ) si (X==0) ALUselA=10 • (MEM/WB.WBRegW==1) y ( MEM/WB.REG==ID/EX.IRRT ) si (X==0) ALUselB=10 Unidad 2

  28. sub $2, $1, $3 and $4, $2, $5 or $8, $2, $6 add $9, $4, $2 slt $1, $6, $7 Lógica de Anticipación en la etapa Decode IF ID EX MEM WB IF ID EX MEM WB • Dibujar los cambios necesarios en el Camino de Datos • Dar las ecuaciones de la lógica de anticipación • Ventajas? IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB Unidad 2

  29. Cortocircuitos: Lw-R 1 2 3 4 5 6 7 8 ciclos Lw $2, $100($1) El resultado está disponible a partir del ciclo 5. M M Reg Reg And$12, $2, $5 M Reg M Reg M M Or $13, $6, $2 Reg Reg Add $14, $2, $2 M M Reg Reg Sw $15, 100($2) M M Reg Reg Unidad 2

  30. Lógica de Anticipación para cargas IF ID EX MEM WB lw $2, 100($1) and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) IF ID EX MEM WB • En el cuarto ciclo el dato aún no ha sido leído==> hay que detener la segmentación. • Se necesita la unidad de detención de forma conjunta con la unidad de anticipación. IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB Unidad 2

  31. Control de Riesgos Ex para Detención • La dependencia entre un load y una siguiente lectura del operando NO puede ser resuelta===>>>hay que detener • Riesgo EX: • SI (ID/EX.WBRegW==1 )y (ID/EX.EXRegDst==0 ) y (( ID/EX.IRRT==IF/ID.IRRS ) o (ID/EX.IRRT==IF/ID.IRRT ) ) entonces DETENER la segmentación Unidad 2

  32. Detenciones y Anticipación para la carga M M M Reg Reg Reg 1 2 3 4 5 6 7 8 ciclos lw $2, 100($1) M M Reg Reg Burbujas and $12, $2, $5 ==NOP M Reg and $12, $2, $5 M Reg or $13, $6, $2 M Reg Sw $15, 100($2) M Reg Unidad 2

  33. Cortocircuitos: Riesgo MEM y WB Sw $15, 100($2) Or $13, $6, $2 And$12, $2, $5 Lw $2, $100($1) M M Reg Reg • El riesgo WB queda eliminado porque el Banco de Registros permite leer el dato que se está por escribir en el mismo ciclo Unidad 2

  34. Solución Estática: Carga Retardada • Problema: el resultado de la instrucción de carga no está disponible en el pipeline cuando la siguiente instrucción lo requiere. • Se define como load use delay (retardo de uso de la instrucción de carga) a la diferencia de tiempo (número de ciclos) entre la disponibilidad del dato y su requerimiento de uso por una instrucción posterior • El valor del retardo depende del tipo de memoria accedida y de la estructura del pipeline. • Asumiendo que la memoria tiene una latencia de un único ciclo, la estructura del pipeline MIPS impone un ciclo de retardo. Unidad 2

  35. Solución Estática: Carga Retardada • La solución puede provenir del hardware o bien del compilador. • La solución estática consiste en insertar una instrucción independiente de la carga en el slot de retardo (delay slot) • En los tempranos R2000 y R3000, el hardware ASUMÍA que el compilador llenaba el delay slot o bien con una instrucción independiente, o bien con una NOP. Unidad 2

  36. Solución Estática: Carga Retardada • Ejemplo: A=B+C D=E-F • Lw RB, B • Lw RC, C • Lw RE, E • Add RA, RB, RC • Lw RF, F • Sw RA, A • Sub RD, RE,RF • Sw RD, D • Lw RB, B • Lw RC, C • Add RA, RB, RC • Sw RA, A • Lw RE, E • Lw RF, F • Sub RD, RE,RF • Sw RD, D Unidad 2

  37. Cortocircuitos: Lw-Sw 1 2 3 4 5 6 7 8 ciclos Lw $2, $100($1) M M Reg Reg Sw $2, $100($5) M Reg M Reg El resultado está disponible a partir del ciclo 5. El store lo necesita en el mismo ciclo 5, pero como entrada a la memoria. Unidad 2

  38. Cortocircuitos: M-M X/MEM.MEM.M-M MEM/WB EX/MEM M-M Unidad 2

  39. Control de Anticipación: M-M • La lógica de anticipación está puesta en X • Riesgo MEM: ((EX/M.WBRegW==1 y EX/M.WBRegDst==0) /*identifica lw*/ y (EX/M.REG==ID/EX.IRRT ) /*identifica dependencia*/ y (ID/EX.WB.WE==1)) /*identifica sw*/ M-M=1 else 0 Unidad 2

  40. Resumen • Lógica de Anticipación (EX) • Anticipa el resultado de una operación que está en M. • Ejemplo: R-R • Anticipa el resultado de una operación que está en WB. • Ejemplo: R-R; Lw-R • Anticipa el resultado de una operación de carga que está en WB a una instrucción de almacenamiento que está en M. • Ejemplo: Lw-Sw • Lógica de Detención (DECODE) • Detiene el pipe cuando el riesgo es lw-R Unidad 2

  41. Resumen • Por construcción del pipeline: • No existen riesgos entre instrucciones de acceso a memoria • Ejemplo: Lw-Lw; Sw-Sw • No existen otros riesgos de datos salvo los debidos a dependencias de flujo. • Hay un ciclo de retardo debido a dependencias de datos en las instrucciones de carga • Ejemplo: Lw-R • Esto obliga a detener el pipe y entonces el CPI de la instrucción detenida AUMENTA. • Los riegos se comprueban en la etapa de decodificación. Si no existen, la instrucción se INICIA. Si existen, se DETIENE. • Cuando una instrucción pasa de ID a X, se dice que ha sido iniciada. (ISSUE). Unidad 2

  42. Problema • El 20% de las instrucciones son Lw. • El 50 % de las veces, la siguiente instrucción usa el resultado del Lw. • Cuantas veces es más rápida la máquina ideal sin detenciones (CPI=1) respecto a ésta? • CPI inst.que sigue al load=1*0,5+2*0,5=1,5 • CPImedio=0,8*1+0,2*1,5=0,8+0,3=1,1 Unidad 2

More Related