Arquitectura de Computadores
|
|
|
- Esperanza Toro Ortiz de Zárate
- hace 9 años
- Vistas:
Transcripción
1 Arquitectura de Computadores TEMA 4 ILP, Panificación dinámica, Predicción de saltos, Especulación Curso
2 Contenidos Introducción: ILP Técnicas SW: Compilador Planificación dinámica. Algoritmo de Tomasulo. Tratamiento de dependencias de control: Predicción de saltos Tratamiento i de saltos Técnicas de predicción: Estáticas y dinámicas Especulación R1 Bibliografía o Cap 2 [HePa07] o o Capítulos 4, 7 y 8 de [SiFK97] Simulador DLXview AC Tema 4 F. Tirado / R. Hermida ( ) 2
3 Diapositiva 2 R1 He actualizado la referencia de HePa Román; 26/09/2007
4 Introducción OBJETIVO: Ejecutar el mayor numero de instrucciones por ciclo Obtener el máximo numero de instrucciones independientes CPI = CPI ideal + Penaliz. Media por Instr. (paradas pipe ) Que técnicas conocemos? Conflictos de recursos - Riesgos estructurales Replicación/segmentación Dependencias de datos Cortocircuitos Dependencias de control ( Un salto cada 4-7 instrucciones) Saltos retardados Mecanismos para explotar ILP Basados en HW en tiempo de ejecución ( dinámicos). Ej Pentium, AMD, IBM Toda la información disponible en ejecución Código independiente de la implementación Basados en SW en tiempo de compilación (estáticos). Ej Itanium Dependencias de memoria muy difíciles de determinar AC Tema 4 F. Tirado / R. Hermida ( ) 3
5 Introducción Paralelismo a nivel de instrucción ILP Es la técnica consistente en explotar paralelismo entre instrucciones próximas en la secuencia El bloque básico es muy pequeño Un bloque básico (BB) es una secuencia de código sin saltos. Un solo punto de entrada y salida Solo de 4 a 7 instrucciones Fuertes dependencias entre ellas El camino es explotar ILP entre varios BB El caso más simple: paralelismo a nivel de bucle for ( i =1; i<=1000; i++) x (i) = x (i) + s ; Todas las iteraciones son independientes (saltos) AC Tema 4 F. Tirado / R. Hermida ( ) 4
6 Técnicas para explotar ILP Introducción Dinámicas Estáticas Técnica Planificación Dinámica Predicción dinámica de saltos Lanzamiento múltiple Varias instrucciones por ciclo Especulación Dynamic memory disambiguation Desenrollado de bucles Reduce Paradas por riesgos de datos Paradas por riesgos de control CPI Ideal Riesgos de datos y control Paradas por riesgos de datos en memoria Paradas por riesgos de control Planificación ió por el compilador Paradas por riesgos s de datos Software pipelining R3 Predicción estática y Especulación por el Compilador CPI Ideal y Paradas por riesgos de datos CPI Ideal, paradas por riesgos de datos y control AC Tema 4 F. Tirado / R. Hermida ( ) 5
7 Diapositiva 5 R3 Quito "trace scheduling" ya que no se estudia Román; 26/09/2007
8 Dependencias Determinar las dependencias d es crítico para obtener el máximo paralelismo Cuáles hay?, A qué recursos afectan? Las dependencias d son propias de los programas o La presencia de una dependencia indica la posibilidad de aparición de un riesgo, pero la aparición de éste y la posible parada depende de las características del pipe o La dependencias Indican la posibilidad de un riesgo Determinan el orden de cálculo de los resultados Imponen un límite al paralelismo que es posible obtener AC Tema 4 F. Tirado / R. Hermida ( ) 6
9 Dependencias Tipos de Dependencias R4 Dependencias de datos Dependencia verdadera (LDE) Dependencias de nombre - Antidependencia (EDL) - Dependencia de salida (EDE) Dependencias de control Dependencia verdadera (LDE) o La instrucción i depende de j i produce un resultado que usa j j depende de k y k depende de i LD ADDD F0,0(R1) F4,F0,F2 AC Tema 4 F. Tirado / R. Hermida ( ) 7
10 Diapositiva 7 R4 Desde siempre, aquí hay una inconsistencia con el Tema 2. Allí se llama depedencia de datos a las LDE, EDL y EDE, mientras que aquí se llama dependencias de datos sólo a las LDE. Sugiero unificar la nomenclatura, tal como queda en la transparencia Román; 26/09/2007
11 Dependencias Dependencias de nombre ( Reutilización de los registros ) o Dos instrucciones i y j donde i precede a j presentan dependencias de nombre en las siguientes situaciones: o Antidependencia WAR (EDL) La L instrucción ió j escribe ( Reg o memoria) antes de que i lea. ADDD F4,F0,F2 LD F0,-8(R1) o Dependencia de salida WAW (EDE) Las instrucciones i y j escriben el mismo reg. o memoria ADDD F4,F0,F2 SUBD F4,F3,F2F3 F2 ILP y Dependencias de datos o Los mecanismos de ejecución deben preservar el orden del programa. Mismo resultado que en ejecución secuencial o Explotar todo el paralelismo posible sin afectar al resultado de la ejecución o Para las dependencias de nombre eliminar la dependencia usando otros nombres AC Tema 4 F. Tirado / R. Hermida ( ) 8
12 Dependencias Dependencias de control o Cada instrucción depende de un conjunto de saltos y en general esta dependencia debe preservarse para preservar el orden del programa If P1 ( ); if P2 ( ) S1; S2; S1 depende de P1 ; S2 depende de P2 Las dependencias d de control pueden violarse. Se pueden ejecutar instrucciones no debidas si esto no afecta al resultado correcto del programa LO IMPORTANTE: el comportamiento de las excepciones y el flujo de datos deben preservase AC Tema 4 F. Tirado / R. Hermida ( ) 9
13 Dependencias Dependencias de control y Excepciones o Comportamiento de excepciones se debe preservar. Cualquier cambio en el orden de ejecución no debe cambiar como las excepciones son atendidas en la ejecución. DADDU R2,R3,R4 BEQZ R2,L1 LW R1,0(R2) L1: o LW no se puede mover antes de BEQZ ( posible fallo de pagina ) Dependencias de control y flujo de datos o Se debe mantener el flujo de datos entre instrucciones productoras y consumidoras de datos. DADDU R1,R2,R3 BEQZ R4,L1 DSUBU R1,R5,R6R5 R6 L1: OR R7,R1,R8 o OR usa el valor de DADDU o DSUBU dependiendo del comportamiento del salto. El flujo de datos se debe preservar. AC Tema 4 F. Tirado / R. Hermida ( ) 10
14 Dependencias El compilador se concentra en dependencias del programa, no en riesgos de un pipe determinado Dependencias de datos Fáciles de determinar para registros Difíciles para direcciones de memoria Son el mismo dato 100( R4 ) y 20( R6 )? En dos iteraciones diferentes 20(R6) y 20(R6) son el mismo dato? Debe conocer dependencias entre load y stores para permitir su reordenación Más registros para evitar dependencias de nombre Dependencias de control En general: Una instrucción dependiente de un salto no puede moverse antes del salto Una instrucción no dependiente de un salto no puede moverse después del salto Efecto de las dependencias de control sobre el orden de las excepciones y el flujo de datos SOLUCIÓN : HW + SW (PROCESADOR + COMPILADOR) AC Tema 4 F. Tirado / R. Hermida ( ) 11
15 Técnicas SW para explotar ILP Un programa: Bucle simple Código maquina DLX Loop LD F0,0(R1) ADDD F4,F0,F2F0 F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop for ( i =1; i <= 1000; i++) x (i) = x (i) + s ; R5 Instrucción que produce resultado Instrucción que usa el resultado FP ALU FP ALU 3 Datos de la etapa F ALU S ORE F de ejecución FP ALU STORE FP 2 LOAD FP FP ALU 1 LOAD FP STORE FP 0 Entera Entera 0 Latencia de uso AC Tema 4 F. Tirado / R. Hermida ( ) 12
16 Diapositiva 12 R5 Utilizo el término "latencia de uso" por coherencia con los términos usados en el Tema 2 y en los problemas Román; 26/09/2007
17 Un programa: Bucle simple Técnicas SW para explotar ILP for ( i =1; i <= 1000; i++) x (i) = x (i) + s ; Ejecución ó en el procesador Loop LD F0,0(R1) Ciclo 1 Espera 2 ADDD F4,F0,F2 3 Espera 4 Espera 5 SD 0(R1),F4 6 SUBI R1,R1,#8 7 Espera 8 BNEZ R1,Loop 9 Espera 10 Una instrucción cada 2 ciclos AC Tema 4 F. Tirado / R. Hermida ( ) 13
18 Técnicas SW para explotar ILP Planificación de instrucciones Loop LD F0,0(R1) Ciclo1 Reordenamiento para ocultar latencias SUBI R1,R1,#8 2 ADDD F4,F0,F2 3 6 ciclos 1 instrucción por ciclo Espera 4 BNEZ R1,Loop 5 2 ciclos de overhead por el salto SD #8(R1),F4 6 Desenrollado 4 veces para más paralelismo (elimina saltos) Loop LD F0,0(R1) ADDD F4,F0,F2 Expone más paralelismo y elimina saltos SD 0(R1),F4 LD F6,-8(R1) ADDD F8,F6,F2 Se elimina 3 saltos y 3 decrementos SD -8(R1),F8 LD F10,-16(R1) ADDD F12,F10,F2 Permanecen dependencias y paradas SD -16(R1), F12 LD F14,-24(R1) ADDD F16,F14,F2 SD -24(R1),F16 MÁS REGITROS = Renombrado por el Compilador SUBI R1,R1,#32 (Imprescindible??) BNEZ R1,Loop AC Tema 4 F. Tirado / R. Hermida ( ) 14
19 Técnicas SW para explotar ILP Desenrollado + Planificación ió Loop LD F0,0(R1) LD F6,-8(R1) LD F10,-16(R1) LD F14,-24(R1) ADDD F4,F0,F2 ADDD F8,F6,F2, ADDD F12,F10,F2 ADDD F16,F14,F2 SD 0(R1),F4 SD -8(R1),F8 R20 SD -16(R1),F12 SUBI R1,R1,#32 BNEZ R1,Loop SD 8(R1),F16; 8-32 = ciclos por iteración Más registros (Imprescindible!!) Mover SD después de SUBI, valor de R1 El compilador planifica para minimizar los riesgos y eliminar i las paradas del pipe AC Tema 4 F. Tirado / R. Hermida ( ) 15
20 Diapositiva 15 R20 Corregido error en nº registro Román; 21/11/2007
21 Software pipelining i Idea: Técnicas SW para explotar ILP Si las diferentes iteraciones de un bucle son independientes, tomemos instrucciones de diferentes iteraciones para aumentar el ILP Reorganiza los bucles de manera que cada instrucción ió pertenece a una iteración diferente Iteración 1 Iteración 2 Iteración 3 Iteración 4 Iteración 5 Iteración SW Pipelened AC Tema 4 F. Tirado / R. Hermida ( ) 16
22 Software pipelining Antes: Unrolled 3 veces 1 LD F0,0(R1) 2 ADDD F4,F0,F2F0 F2 3 SD 0(R1),F4 4 LD F6,-8(R1) 5 ADDD F8,F6,F2F6 F2 6 SD -8(R1),F8 7 LD F10,-16(R1) 8 ADDD F12,F10,F2 9 SD -16(R1),F12 10 SUBI R1,R1,#24 11 BNEZ R1,LOOP Loop unrolling simbólico Maximiza la distancia resultado-uso Menor tamaño del código Llenado y vaciado del pipe solo una vez Técnicas SW para explotar ILP Después: Software Pipelined 1 SD 0(R1),F4 ; Stores M[i] 2 ADDD F4,F0,F2 F0 F2 ; Adds to M[i-1] 3 LD F0,-16(R1); Loads M[i-2] 4 SUBI R1,R1,#8 5 BNEZ R1,LOOP ove erlapped ops SW Pipeline Time Loop Unrolled Time AC Tema 4 F. Tirado / R. Hermida ( ) 17
23 Técnicas SW para explotar ILP Ejecución SW pipelined (suposición ió R1=1000) 1000) F0 M(1000) LD F0, 0(R1) F4 F0 + F2 ; M(1000)+F2 Cabecera ADDD F4,F0,F2F0 F2 F0 M(992) LD F0,-8(R1) M(1000) F4 ; M(1000)+F2 SD 0(R1),F4 ; Stores M[i] F4 F0 + F2 ; M(992)+F2 Iteración 1 ADDD F4,F0,F2 F0 F2 ; Adds to M[i-1] F0 M(984) LD F0,-16(R1); Loads M[i-2] R M(992) F4 ; M(992)+F2 F4 F0 + F2 ; M(984)+F2 SD 0(R1),F4 Iteración 2 F0 M(976) ADDD F4,F0,F2 R1 984 LD F0,-16(R1) F0 M(0) ; Ahora R1=16 Iteración n R M(8) F4 ; M(8)+F2 SD 0(R1),F4 F4 F0 + F2 ; M(0)+F2 Cola ADDD F4,F0,F2, M(0) F4 ; M(0)+F2 SD -8(R1),F4 AC Tema 4 F. Tirado / R. Hermida ( ) 18
24 Comparación Técnicas SW para explotar ILP Loop Unrolling Bloque grande para planificar Reduce el numero de saltos Incrementa el tamaño del código Tiene que incluir iteraciones extra Presión sobre el uso de registros Software Pipelining No hay dependencias en el cuerpo del bucle No reduce el numero de saltos Necesita inicio y finalización especial AC Tema 4 F. Tirado / R. Hermida ( ) 19
25 Tratamiento de dependencias de datos en ejecución Planificación dinámica : Procesador. Modifica la secuencia de instrucciones resolviendo las dependencias en tiempo de ejecución. Disponibilidad de más unidades funcionales. Código valido para diferentes implementaciones Problema : Lanzamiento de instrucciones en orden. DIVD F0,F2,F4 S1 S2 depende de S1 ADDD F10,F0,F8 S2 SUBD F12,F8,F14 S3 S3 es independiente de la demás La etapa ID bloquea la ejecución en S2 hasta que se resuelve la dependencia ( F0 disponible) y SUBD no puede ejecutarse. Solución : Dividir la etapa ID en dos etapas diferenciadas. Issue: Decodifica y chequea riesgos estructurales. Lectura de operandos : Chequea disponibilidad de operandos. Debe implementarse para permitir el flujo de instrucciones. Ejecución fuera de orden Finalización fuera de orden? AC Tema 4 F. Tirado / R. Hermida ( ) 20
26 Planificación Dinámica : Tomasulo (IBM 360/91, año 1967) Elimina dinámicamente los riesgos EDE y EDL mediante el renombrado de registros Motivación: Arquitectura 360, 4 registros FP( Pocos registros, muchas dependencias ) Arquitectura RM UF segmentadas Add(3), Mul(2), Load (6), Stores (3) R6 Solo consideraremos las operaciones de PF en la explicación ió Casi todos los procesadores actuales usan mecanismo basados en este algoritmo Alpha 21264, HP 8000, MIPS 10000, Pentium III-4-Core, PowerPC 604, AC Tema 4 F. Tirado / R. Hermida ( ) 21
27 Diapositiva 21 R6 He eliminado el párrafo dedicado a diferencias con Scoreboard Román; 26/09/2007
28 Planificación Dinámica : Tomasulo Dir Valor Busy De Memoria Cola de Ope FP Registros FP Qi Vi Load1 Load2 Load3 Load4 Load5 Load6 Load Buffers Load5 Qi Dir Vi Busy Store Buffers TAGs TAGs Add1 Add2 Add3 Mult1 Mult2 Op Qj Valorj Qk Valork Busy SumadorFP Estaciones De Reserva MultiplicadorFP A Memoria Common Data Bus (CDB) Excepciones imprecisas Issue en orden - Ejecución fuera de orden Finalización fuera de orden AC Tema 4 F. Tirado / R. Hermida ( ) 22
29 Planificación Dinámica : Tomasulo Tres estados para una instrucción en el algoritmo 1 Issue Toma la instrucción de la cola de instrucciones. Envía la instrucción a la ER correspondiente si hay entradas disponibles. Envía los operandos si están disponibles o UF que los generara. En load/store si hay buffer libre. (Copiar Tag+Valor de registros fuente sobre campos Tag+Valor de ER) Marca registro destino (tag) con ID de la ER que ejecutará la instrucción 2 Ejecución Monitoriza CDB para disponibilidad de operandos. Cuando lista manda ejecutar. 3 Escritura de resultados Vía CDB en registros y estaciones de reserva (ER) y marca ER como libre. Bus normal: dato + destino, va a CDB: dato + fuente, viene de No chequea riesgo EDE ni EDL (renombrado dinámico) Componentes de las ER Op: Operación a realizar Vj, Vk: Valores de los operandos fuente Store buffers tienen un campo V para el resultado que debe ser almacenado. Qj, Qk: ER produciendo los operandos fuente Notar: Qj,Qk=0 => ready Store buffers tienen Qi para ER produciendo el resultado Busy: Indica ER ocupada Estado de registro resultado Indica di la FU que producira el resultado para el Registro. En blanco ninguna intrucción esta pendiente de escribir en el registro. AC Tema 4 F. Tirado / R. Hermida ( ) 23
30 Planificación Dinámica : Tomasulo Ejemplo: Ejecución de la secuencia: (S1): COD1 F2, ---, --- (S2): COD2 F4, ---, --- (S3): ADDD F0, F2, F4 Suposiciones: S1 y S2 ya lanzadas a ejecución, S3 se va a lanzar Estado inicial de registros: TAG VALOR F0???? F2 Y?? F4 Z?? AC Tema 4 F. Tirado / R. Hermida ( ) 24
31 Planificación Dinámica : Tomasulo Ejemplo: Ejecución de la secuencia: (S1): COD1 F2, ---, --- (S2): COD2 F4, ---, --- (S3): ADDD F0, F2, F4 Paso 1: Lanzamiento de ADD a la ER X (X es una ER libre de la UF de Suma/Resta de Punto Flotante) Estación de reserva Busy OP TAGj Valorj TAGk Valork X yes + Y?? Z?? Estado de registros TAG VALOR F0 X?? F2 Y?? F4 Z?? AC Tema 4 F. Tirado / R. Hermida ( ) 25
32 Planificación Dinámica : Tomasulo Ejemplo: Ejecución de la secuencia: (S1): COD1 F2, ---, --- (S2): COD2 F4, ---, --- (S3): ADDD F0, F2, F4 Paso 2: Esperar a que se generen los operandos a) Escritura del resultado de S1 sobr el CDB: Estación de reserva Busy OP TAGj Valorj TAGk Valork X yes Z?? Estado de registros TAG VALOR F0 X?? F F4 Z?? b) Escritura del resultado de S2 sobre el CDB: Estado de registros Estación de reserva Busy OP TAGj Valorj TAGk Valork X yes TAG VALOR F0 X?? F F AC Tema 4 F. Tirado / R. Hermida ( ) 26
33 Planificación Dinámica : Tomasulo Ejemplo: : Ejecución de la secuencia: (S1): COD1 F2, ---, --- (S2): COD2 F4, ---, --- (S3): ADDDF0, F2, F4 Paso 3: Ejecutar operación y escribir resultado sobre el CDB UF (X,25.77) CDB Estado de registros TAG VALOR F F F A todas las ER, Store Buffers y Registros que tengan la marca X AC Tema 4 F. Tirado / R. Hermida ( ) 27
34 Planificación Dinámica:TOMASULO Ejemplo LD 2 ciclos, ADDD y SUBD 2 ciclos, MULT 10 ciclos, DIVD 40 ciclos Instuc J K Issue Ejecución escritura LD F6 34+ R2 LD F2 45+ R3 MULT F0 F2 F4 SUBD F8 F6 F2 DIVD F10 F0 F6 ADDD F6 F8 F2 Load1 Load2 Load3 Ocupada Dirección Estado de ER Operación Qj y Qk ER produciendo operandos Vj y Vk valores de los operandos Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 Add2 Add3 Mul1 Mul2 Estado de REG Qué FU escribirá en el Reg FU F0 F2 F4 F6 F8 F10 F12 AC Tema 4 F. Tirado / R. Hermida ( ) 28
35 Planificación Dinámica:TOMASULO Ciclo 1 Instuc J K Issue Ejecución escritura LD F6 34+ R2 1 LD F2 45+ R3 MULT F0 F2 F4 SUBD F8 F6 F2 DIVD F10 F0 F6 ADDD F6 F8 F2 Ocupada Dirección Load1 SI 34+R2 Load2 NO Load3 NO Estado de ER Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 NO Add2 NO Add3 NO Mul1 NO Mul2 NO Estado de REG F0 F2 F4 F6 F8 F10 F12 FU Load1 AC Tema 4 F. Tirado / R. Hermida ( ) 29
36 Planificación Dinámica:TOMASULO Ciclo 2 Instuc J K Issue Ejecución escritura LD F6 34+ R2 1 LD F2 45+ R3 2 MULT F0 F2 F4 SUBD F8 F6 F2 DIVD F10 F0 F6 ADDD F6 F8 F2 Ocupada Dirección Load1 SI 34+R2 Load2 SI 45+R3 Load3 NO No hay bloqueo Estado de ER Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 NO Add2 NO Add3 NO Mul1 NO Mul2 NO Estado de REG F0 F2 F4 F6 F8 F10 F12 FU Load2 Load1 AC Tema 4 F. Tirado / R. Hermida ( ) 30
37 Planificación Dinámica:TOMASULO Ciclo 3 Instuc J K Issue Ejecución escritura LD F6 34+ R LD F2 45+ R3 2 MULT F0 F2 F4 3 SUBD F8 F6 F2 DIVD F10 F0 F6 ADDD F6 F8 F2 Ocupada Dirección Load1 SI 34+R2 Load2 SI 45+R3 Load3 NO Estado de ER Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 NO Add2 NO Add3 NO Mul1 SI Mult R(F4) Load2 Mul2 NO Estado de REG F0 F2 F4 F6 F8 F10 F12 FU Mult1 Load2 Load1 AC Tema 4 F. Tirado / R. Hermida ( ) 31
38 Planificación Dinámica:TOMASULO Ciclo 4 Instuc J K Issue Ejecución escritura LD F6 34+ R LD F2 45+ R MULT F0 F2 F4 3 SUBD F8 F6 F2 4 DIVD F10 F0 F6 ADDD F6 F8 F2 Ocupada Dirección Load1 NO Load2 SI 45+R3 Load3 NO Estado de ER Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 SI Subd M(34+R2) Load2 Add2 NO Add3 NO Mul1 SI Mult R(F4) Load2 Mul2 NO Estado de REG F0 F2 F4 F6 F8 F10 F12 FU Mult1 Load2 M(34+R2) Add1 AC Tema 4 F. Tirado / R. Hermida ( ) 32
39 Planificación Dinámica:TOMASULO Ciclo 6 Instuc J K Issue Ejecución escritura LD F6 34+ R LD F2 45+ R MULT F0 F2 F4 3 SUBD F8 F6 F2 4 DIVD F10 F0 F6 5 ADDD F6 F8 F2 6 Ocupada Dirección Load1 NO Load2 NO Load3 NO Ningún bloqueo Estado de ER Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk 2 Add1 SI Subd M(34+R2) M(45+R3) Add2 SI Addd M(45+R3) Add1 Add3 NO 10 Mul1 SI Mult M(45+R3) R(F4) Mul2 SI Divd M(34+R2) Mult1 Estado de REG F0 F2 F4 F6 F8 F10 F12 FU Mul1 M(45+R3) Add2 Add1 Mul2 F6 reasignado AC Tema 4 F. Tirado / R. Hermida ( ) 33
40 Planificación Dinámica:TOMASULO Ciclo 8 Instuc J K Issue Ejecución escritura LD F6 34+ R LD F2 45+ R MULT F0 F2 F4 3 SUBD F8 F6 F DIVD F10 F0 F6 5 ADDD F6 F8 F2 6 Ocupada Dirección Load1 NO Load2 NO Load3 NO Estado de ER Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 NO 2 Add2 SI Addd M()-M() M(45+R3) Add3 NO 7 Mul1 SI Mult M(45+R3) R(F4) Mul2 SI Divd M(34+R2) Mult1 Estado de REG F0 F2 F4 F6 F8 F10 F12 FU Mul1 M(45+R3) Add2 M()-M() Mul2 AC Tema 4 F. Tirado / R. Hermida ( ) 34
41 Planificación Dinámica:TOMASULO Ciclo 13 Instuc J K Issue Ejecución escritura LD F6 34+ R LD F2 45+ R MULT F0 F2 F4 3 SUBD F8 F6 F DIVD F10 F0 F6 5 ADDD F6 F8 F Ocupada Dirección Load1 NO Load2 NO Load3 NO Estado de ER Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 NO Add2 NO Add3 NO 3 Mul1 SI Mult M(45+R3) R(F4) Mul2 SI Divd M(34+R2) Mult1 Estado de REG F0 F2 F4 F6 F8 F10 F12 FU Mul1 M(45+R3) F8+M() M()-M() Mul2 AC Tema 4 F. Tirado / R. Hermida ( ) 35
42 Planificación Dinámica:TOMASULO Ciclo 16 Instuc J K Issue Ejecución escritura LD F6 34+ R LD F2 45+ R MULT F0 F2 F SUBD F8 F6 F DIVD F10 F0 F6 5 ADDD F6 F8 F Ocupada Dirección Load1 NO Load2 NO Load3 NO Estado de ER Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 NO Add2 NO Add3 NO Mul1 NO 40 Mul2 SI Divd M*F4 M(34+R2) Estado de REG F0 F2 F4 F6 F8 F10 F12 FU M*F4 M(45+R3) F8+M() M()-M() Mul2 AC Tema 4 F. Tirado / R. Hermida ( ) 36
43 Planificación Dinámica:TOMASULO Ciclo 57 Fi li ió d d E i Finalización en desorden Excepciones Instuc J K Issue Ejecución. escritura LD F6 34+ R LD F2 45+ R MULT F0 F2 F SUBD F8 F6 F DIVD F10 F0 F ADDD F6 F8 F Ocupada Dirección Load1 NO Load2 NO Load3 NO Estado de ER Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 NO Add2 NO Add3 NO Mul1 NO Mul2 SI Divd M*F4 M(34+R2) Estado de REG F0 F2 F4 F6 F8 F10 F12 FU M*F4 M(45+R3) F8+M() M()-M() Mul2 AC Tema 4 F. Tirado / R. Hermida ( ) 37
44 Planificación Dinámica:TOMASULO Renombrado dinámico en un unrolling Loop LD F0,0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop Operación: vector F0 * escalar F2 Suposiciones: MULT 4 ciclos En 1ª iter. Load 8 ciclos ( fallo ), en 2ª 1 ciclo (acierto) Mostraremos dos iteraciones AC Tema 4 F. Tirado / R. Hermida ( ) 38
45 Planificación Dinámica:TOMASULO Bucle Instuc J K Issue Ejecución escritura LD F0 0 R1 MULT F4 F0 F2 SD F4 0 R1 LD F0 0 R1 MULT F4 F0 F2 SD F4 0 R1 Ocupada Dirección Load1 NO load2 NO load3 NO Qi store1 NO store2 NO store3 NO Estado de ER Loop LD F0,0(R1) 0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 Add2 Add3 Mul1 Mul2 Estado de REG FU F0 F2 F4 F6 F8 F10 F12 AC Tema 4 F. Tirado / R. Hermida ( ) 39
46 Planificación Dinámica:TOMASULO Ciclo 1 Instuc J K Issue ejecución escritura LD F0 0 R1 1 MULT F4 F0 F2 SD F4 0 R1 LD F0 0 R1 MULT F4 F0 F2 SD F4 0 R1 Ocupada Dirección Load1 SI 80 load2 NO load3 NO Qi store1 NO store2 NO store3 NO Estado de ER Loop LD F0,0(R1) 0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 Add2 Add3 Mul1 Mul2 Estado de REG R1=80 FU Load1 Ojo latencia del primer load F0 F2 F4 F6 F8 F10 F12 AC Tema 4 F. Tirado / R. Hermida ( ) 40
47 Planificación Dinámica:TOMASULO Ciclo 2 Instuc J K Issue Ejecución escritura LD F0 0 R1 1 MULT F4 F0 F2 2 SD F4 0 R1 LD F0 0 R1 MULT F4 F0 F2 SD F4 0 R1 Ocupada Dirección Load1 SI 80 load2 NO load3 NO Qi store1 NO store2 NO store3 NO Estado de ER Loop LD F0,0(R1) 0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 Add2 Add3 Mul1 SI MULT R(F2) Load1 Mul2 Estado de REG R1=80 FU Load1 Mul1 Ojo latencia del 1 load F0 F2 F4 F6 F8 F10 F12 AC Tema 4 F. Tirado / R. Hermida ( ) 41
48 Planificación Dinámica:TOMASULO Ciclo 3 Instuc J K Issue Ejecución escritura LD F0 0 R1 1 MULT F4 F0 F2 2 SD F4 0 R1 3 LD F0 0 R1 MULT F4 F0 F2 SD F4 0 R1 Ocupada Dirección Load1 SI 80 load2 NO load3 NO Qi store1 SI 80 Mult1 store2 NO store3 NO Estado de ER Loop LD F0,0(R1) 0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 Add2 Add3 Mul1 SI MULT R(F2) Load1 Mul2 Estado de REG R1=80 FU Load1 Mul1 Ojo latencia del 1er load F0 F2 F4 F6 F8 F10 F12 AC Tema 4 F. Tirado / R. Hermida ( ) 42
49 Planificación Dinámica:TOMASULO Ciclo 6 Cierre del bucle Instuc J K Issue Ejecución escritura LD F0 0 R1 1 MULT F4 F0 F2 2 SD F4 0 R1 3 LD F0 0 R1 6 MULT F4 F0 F2 SD F4 0 R1 Ocupada Dirección Load1 SI 80 load2 SI 72 load3 NO Qi store1 SI 80 Mult1 store2 NO store3 NO Estado de ER Loop LD F0,0(R1) 0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 Add2 Add3 Mul1 SI MULT R(F2) Load1 Mul2 Estado de REG R1=72 FU Load2 Mul1 Ojo latencia del 1 load Renombrado F0 F2 F4 F6 F8 F10 F12 AC Tema 4 F. Tirado / R. Hermida ( ) 43
50 Planificación Dinámica:TOMASULO Ciclo 7 Instuc J K Issue Ejecución escritura LD F0 0 R1 1 MULT F4 F0 F2 2 SD F4 0 R1 3 LD F0 0 R1 6 MULT F4 F0 F2 7 SD F4 0 R1 Ocupada Dirección Load1 SI 80 load2 SI 72 load3 NO Qi store1 SI 80 Mult1 store2 NO store3 NO Estado de ER Loop LD F0,0(R1) 0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 Add2 Add3 Mul1 SI MULT R(F2) Load1 Mul2 SI MULT R(F2) Load2 Estado de REG R1=72 FU Load2 Mul2 Ojo latencia del 1 load F0 F2 F4 F6 F8 F10 F12 Renombrado AC Tema 4 F. Tirado / R. Hermida ( ) 44
51 Planificación Dinámica:TOMASULO Ciclo 10 Instuc J K Issue Ejecución escritura LD F0 0 R MULT F4 F0 F2 2 SD F4 0 R1 3 LD F0 0 R MULT F4 F0 F2 7 SD F4 0 R1 8 Ocupada Dirección Load1 NO load2 SI 72 load3 NO Qi store1 SI 80 Mult1 store2 SI 72 Mult2 store3 NO Estado de ER Loop LD F0,0(R1) 0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 Add2 Add3 4 Mul1 SI MULT M(80) R(F2) Mul2 SI MULT R(F2) Load2 Estado de REG R1=64 FU Load2 Mul2 Ojo latencia del 1 load F0 F2 F4 F6 F8 F10 F12 AC Tema 4 F. Tirado / R. Hermida ( ) 45
52 Planificación Dinámica:TOMASULO Ciclo 11 Instuc J K Issue Ejecución escritura LD F0 0 R MULT F4 F0 F2 2 SD F4 0 R1 3 LD F0 0 R MULT F4 F0 F2 7 SD F4 0 R1 8 Ocupada Dirección Load1 NO load2 NO load3 SI 64 Qi store1 SI 80 Mult1 store2 SI 72 Mult2 store3 NO Estado de ER Loop LD F0,0(R1) 0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 Add2 Add3 3 Mul1 SI MULT M(80) R(F2) 4 Mul2 SI MULT M(72) R(F2) Estado de REG R1=64 FU Mul2 F0 F2 F4 F6 F8 F10 F12 AC Tema 4 F. Tirado / R. Hermida ( ) 46
53 Planificación Dinámica:TOMASULO Ciclo 15 Instuc J K Issue Ejecución escritura LD F0 0 R MULT F4 F0 F SD F4 0 R1 3 LD F0 0 R MULT F4 F0 F SD F4 0 R1 8 Ocupada Dirección Load1 NO load2 NO load3 SI 64 Qi store1 SI 80 M()*F2 store2 SI 72 Mult2 store3 NO Estado de ER Loop LD F0,0(R1) 0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 Add2 Add3 Mul1 Mul2 SI MULT M(72) R(F2) Estado de REG R1=64 6 FU Mul2 F0 F2 F4 F6 F8 F10 F12 AC Tema 4 F. Tirado / R. Hermida ( ) 47
54 Planificación Dinámica:TOMASULO Ciclo 16 Instuc J K Issue Ejecución escritura LD F0 0 R MULT F4 F0 F SD F4 0 R LD F0 0 R MULT F4 F0 F SD F4 0 R1 8 Ocupada Dirección Load1 NO load2 NO load3 SI 64 Qi store1 NO store2 SI 72 M()*F2 store3 NO Estado de ER Loop LD F0,0(R1) 0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 Add2 Add3 Mul1 Mul2 Estado de REG R1=64 FU F0 F2 F4 F6 F8 F10 F12 AC Tema 4 F. Tirado / R. Hermida ( ) 48
55 Planificación Dinámica:TOMASULO Ciclo 17 Instuc J K Issue Ejecución escritura LD F0 0 R MULT F4 F0 F SD F4 0 R LD F0 0 R MULT F4 F0 F SD F4 0 R Ocupada Dirección Load1 NO load2 NO load3 SI 64 Qi store1 NO store2 NO store3 NO Estado de ER Loop LD F0,0(R1) 0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K Vj Vk Qj Qk Add1 Add2 Add3 Mul1 Mul2 Estado de REG R1=64 FU F0 F2 F4 F6 F8 F10 F12 AC Tema 4 F. Tirado / R. Hermida ( ) 49
56 Planificación Dinámica:TOMASULO (detalle de las fases) Nomenclatura: m n l : o Instrucción aritmética: D OP (S1, S2) Instrucción aritmética que realiza la operación OP sobre el contenido de los registros S1 y S2, y deposita el resultado en el registro D o Instrucción Load: D Mem[Dirección] Carga en el registro D el contenido de la posición de memoria Dirección o Instrucción Store: Mem[Dirección] S Almacena el contenido del registro S en la posición de memoria Dirección R19 o Estación de reserva x: o Registro x: Reg(x)( Qi, Vi ) ER(x)(Busy, OP, Qj, Vj, Qk, Vk) o Load Buffer x: LB(x)(Busy, Dir) o Store Buffer x: SB(x)( Busy, Dir, Qi, Vi ) AC Tema 4 F. Tirado / R. Hermida ( ) 50
57 Diapositiva 50 R19 Nota 1: se intenta obviar el cálculo de la dirección efectiva que se contempla en H&P 4ª edición por las siguientes razones: 1. Los ejemplos que tenemos en las transparencias previas lo ignoran. 2. Las soluciones que explicamos a los problemas propuestos tb lo ignoran (no se contempla ningún ciclo de reloj para ello). 3. Añade complejidad innecesaria para comprender el concepto. 4. Los ejemplos de las transparencias que usa Patterson en Berkely tampoco lo usan. 5. El simulador DLXView tampoco funciona según lo descrito en el libro. Nota 2: En la fase Issue se mejora la explicación de H&P, al sustituir un condicional (if ) por unos movimientos de datos y tags que son los realmente implicados en la operación. Román; 01/10/2007
58 Planificación Dinámica:TOMASULO (detalle de las fases) Fase Issue Tipo de instrucción Esperar hasta que Hacer Aritmética: D OP (S1, S2) La estación de reserva ER(x) está libre y es capaz de ejecutar OP ER(x).Busy Yes ER(x).OP OP ER(x).Q j Reg(S1).Q i ER(x).V j Reg(S1).V i ER(x).Q k Reg(S2).Q i ER(x).V k Reg(S2).V i Reg(D).Q i x Load: El Load Buffer LB(x) está LB(x).Busy Yes D Mem[Dirección] libre LB(x).Dir Dirección Reg(D).Q i x Store: Mem[Dirección] S El Store Buffer SB(x) está libre SB(x).Busy Yes SB(x).Dir Dirección SB(x).Q i Reg(S).Q i SB(x).V i Reg(S).V i AC Tema 4 F. Tirado / R. Hermida ( ) 51
59 Planificación Dinámica:TOMASULO (detalle de las fases) Fase Ejecución Tipo de instrucción Esperar hasta que Hacer Aritmética: (ER(x).Q j = 0) Y (ER(x).Q k = 0) Ejecutar cálculo lo OP sobre la UF D OP (S1, S2) usando operandos V j y V k Generar RESULTADO Load: D Mem[Dirección] Store: Mem[Dirección] S (La dirección efectiva está disponible) Y (LB(x).Dir no tiene dependencias d respecto de Stores lanzados antes) (Uso de cola de Load / Store: explicación posterior) (La dirección efectiva está disponible) Y (SB(x).Dir no tiene depenedencias con Load ni Sores previos) Y (SB(x).Q i ) = 0) RESULTADO Mem[LB(x).Dir] Mem[SB(x).Dir] SB(x).V i SB(x).Busy No AC Tema 4 F. Tirado / R. Hermida ( ) 52
60 Planificación Dinámica:TOMASULO (detalle de las fases) Fase Write Tipo de instrucción Aritmética: D OP (S1, S2) Esperar hasta que (Ejecución completa en ER(x)) Y (CDB disponible) Hacer Escribir sobre CDB: (x, RESUL) z (Si Reg(z).Q i ) = x ) (Reg(z).Q i = 0) Y (Reg(z).V i = RESUL) z (Si ER(z).Q j) = x ) (ER(z).Q j = 0) Y (ER(z).V j = RESUL) z (Si ER(z).Q k ) = x ) (ER(z).Q k = 0) Y (ER(z).V k = RESUL) z (Si SB(z).Q i ) = x ) (SB(z).Q i = 0) Y (SB(z).V i = RESUL) Load: (Acceso a D memoria Mem[Dirección] completo en LB(x)) Y (CDB disponible) ER(x).Busy = No Escribir sobre CDB: (x, RESUL) z (Si Reg(z).Q i ) = x ) (Reg(z).Q i = 0) Y (Reg(z).V i = RESUL) z (Si ER(z).Q j ) = x ) (ER(z).Q ( j = 0) Y (ER(z).V ( j = RESUL) z (Si ER(z).Q k ) = x ) (ER(z).Q k = 0) Y (ER(z).V k = RESUL) z (Si SB(z).Q i ) = x ) (SB(z).Q i = 0) Y (SB(z).V i = RESUL) Store: Mem[Dirección] S Nada LB(x).Busy Busy = No Nada AC Tema 4 F. Tirado / R. Hermida ( ) 53
61 Planificación Dinámica:TOMASULO Resumen de ventajas e inconvenientes i Elimina el cuello de botella de los registros Evita EDL y EDE Permite el unrolling en HW No esta limitado a bloques básicos si existe predicción de saltos Complejidad Muchos cargas de registros asociativas por ciclo CDB limita el rendimiento Excepciones imprecisas AC Tema 4 F. Tirado / R. Hermida ( ) 54
62 Reduciendo la penalización de los saltos Tipos de saltos: Estadísticas En promedio Instrucciones de salto 1 de cada 5 instrucc. Saltos condicionales 2 de cada 3 saltos Saltos incondicionales 1 de cada 3 saltos Saltos tomados 5 de cada 6 saltos Saltos condicionales tomados 3 de cada 4 saltos condic. Saltos incondicionales tomados Todos Conclusión (en promedio) 1 de cada 6 instrucciones es un salto tomado 1 de cada 8 instrucciones es un salto condicional 1 de cada 10 instrucciones es un salto condicional y tomado Programas enteros una de cada 4-5 instrucciones. Flotantes 1 de cada instrucciones AC Tema 4 F. Tirado / R. Hermida ( ) 55
63 Reduciendo la penalización de los saltos Tipos de saltos: Estadísticas Frcuencia diámica de saltos Frcuencia de saltos tomados lloops fft greep gcpp spice3 TeX gdi ff gaw k compress gccl espresso % gdi ff TeX greep gcpp spice3 gccl gaw k espresso compress % lloops fft Conclusión Frecuencia de los saltos depende del tipo de programa El comportamiento depende del tipo de programa AC Tema 4 F. Tirado / R. Hermida ( ) 56
64 Reduciendo la penalización de los saltos Predicción ió Idea Básica Cuando se detecta una instrucción de salto condicional sin resolver Se supone o predice el camino del salto: tomado o no tomado (Taken - Untaken) Si el salto se predice como tomado se predice la dirección destino del salto La ejecución continúa de forma especulativa a lo largo del camino supuesto Cuando se resuelve la condición Si la predicción ió fue correcta La ejecución se confirma y continúa normalmente Si la predicción fue incorrecta (fallo de predicción o misprediction ) Se descartan todas las instrucciones i ejecutadas especulativamente t Se reanuda la ejecución a lo largo del camino correcto Problemas a resolver en instrucciones de salto 1) Predecir el camino que tomará el salto TAKEN (Tomado) UNTAKEN (No Tomado) 2) Predecir la dirección de la instrucción destino del salto con un retardo mínimo (para saltos tomados) AC Tema 4 F. Tirado / R. Hermida ( ) 57
65 Tratamiento de Saltos: Predicción Consideraciones generales 1) Predecir el camino que tomará el salto TAKEN (Tomado) PREDICCIÓN CORRECTA TAKEN (Tomado) PREDICCIÓN INCORRECTA Programa I 1 I 2 BR Target I 4 Target: I target I target+1 I 1 t 1 t 2 t 3 t 4 t 5 t 6 t 7 I 2 F D E M W F D E M W BR F D E I F TA I 4 I t I t+1 Retardo (1 ciclo) F D E M W F D E M W Programa I 1 I 2 BR Target I 4 Target: I target target I target+1 I 1 t 1 t 2 t 3 t 4 t 5 t 6 t 7 F D E M W I 2 F D E M W BR F D E F D TA I 4 I 5 F I t F D E M W I t+1 F D E M W t 1 Retardo (2 ciclos) Ojo retardo mínimo AC Tema 4 F. Tirado / R. Hermida ( ) 58
66 Tratamiento de Saltos: Predicción Consideraciones generales 2) Predecir la dirección de la instrucción destino del salto con un retardo mínimo (para saltos tomados) Programa I 1 Target: I target I 2 BR Target I 4 I target+1 t 1 t 2 F D I 1 E M W t 3 t 4 t 5 t 6 t 7 I 2 F D E M W BR F D E I t I t+1 I t+2 F D E TA M W F D E M W Retardo (0 ciclo) Detectar lo más pronto posible el salto: En buffer de instrucciones, al buscarla en la cache. Más importante para pipes de más etapas (frecuencia) AC Tema 4 F. Tirado / R. Hermida ( ) 59
67 Tratamiento de Saltos: Predicción Acceso a la instrucción destino del salto I Branch Target Address Cache (BTAC) Cache que almacena la dirección destino de los últimos saltos tomados Cuando se accede a una instrucción de salto Se accede simultáneamente a la BTAC utilizando la dirección de la instrucción de salto Si la instrucción está en la BTAC y el salto se predice como tomado la dirección destino del salto se lee de la BTAC Actualización de la BTAC L a BTAC se actualiza cuando se ejecuta la instrucción de salto y se conoce: Si el salto fue tomado o no La dirección destino del salto Dirección de la Instrucción Tag Dirección destino del salto +1 Taken / Not Taken Sí el salto fue tomado Si no estaba en la BTAC Si ya estaba en la BTAC Sí el salto no fue tomado Si estaba en la BTAC MUX Dirección de la siguiente instrucción Se introduce en la BTAC Se actualiza su dirección destino en la BTAC Se elimina de la BTAC BTAC AC Tema 4 F. Tirado / R. Hermida ( ) 60
68 Tratamiento de Saltos: Predicción Acceso a la instrucción destino del salto II Alternativas de diseño de la BTAC Cache de Acceso Directo Cache Totalmente Asociativa Cache Asociativa por conjuntos Ventaja: Menor coste Desventaja: Aliasing (destrucción de información si dos saltos compiten por la misma entrada) Ventaja: menos Aliasing Desventaja: Mayor coste HW Solución intermedia EJEMPLOS: Pentium (256), Pentium II (512), Pentium 4 (4K), AMD 64 (2K) Variación Branch Target Instruction Cache Almacenar la instrucción más ventajas si tempo de acceso a las instrucciones es alto Ejemplos: AMD K6,K7, NexGen Nx586 AC Tema 4 F. Tirado / R. Hermida ( ) 61
69 Tratamiento de Saltos: Predicción Clasificación ió de técnicas de predicción ió de saltos Predicción de saltos Estática Dinámica Fija Basada en Desplaz. Basada en Opcode Dirigida por Compilador Historia Local Historia Global Híbridos AC Tema 4 F. Tirado / R. Hermida ( ) 62
70 Tratamiento de Saltos: Predicción Predicción estática Predicción Fija ALWAYS TAKEN Predecir todos los saltos como tomados Mayor número de aciertos de predicción (3 de cada 4 saltos cond. son tomados) Mayor coste hardware (necesita almacenar la dirección destino del salto) ALWAYS NOT TAKEN Predecir todos los saltos como no tomados Menor número de aciertos de predicción (sólo 1 de cada 4 saltos cond. es no tomado) Menor coste hardware Predicción basada en la DIRECCIÓN del salto Saltos hacia atrás : TOMADOS La mayoría de saltos hacia atrás corresponden a bucles Saltos hacia delante: NO TOMADOS La mayoría de saltos hacia delante corresponden a IF-THEN-ELSE E E Mal comportamiento en programas con pocos bucles y muchos IF-THEN-ELSE AC Tema 4 F. Tirado / R. Hermida ( ) 63
71 Tratamiento de Saltos: Predicción Predicción estática Predicción basada en el OPCODE de la instrucción de salto R7 Fundamento: La probabilidad de que un salto sea tomado depende del tipo de salto El salto es tomado para ciertos códigos de operación y no tomado para otros Predicción dirigida por el COMPILADOR Basada en el tipo de CONSTRUCCIÓN Basada en PROFILING Especificado por el PROGRAMADOR El compilador predice si el salto será tomado o no dependiendo del tipo de construcción de control El compilador predice en función del comportamiento de esa instrucción en ejecuciones previas del programa El programador indica al compilador si el salto debe ser tomado o no (mediante directivas específicas) de construcc ón de control prev as del programa (med ante d rect vas espec f cas) Se añade un Bit de Predicción al opcode de la instrucción El compilador activa o desactiva este bit para indicar su predicción AC Tema 4 F. Tirado / R. Hermida ( ) 64
72 Diapositiva 64 R7 He eliminado la transparencia anterior. Paco: supongo que querías eliminarla porque también hablaba de predicción basada en OpCode Román; 26/09/2007
73 Tratamiento de Saltos: Predicción Predictores Dinámicos Idea básica La predicción se realiza observando el comportamiento de las instrucciones de salto en las últimas ejecuciones ( Historia ) Necesario almacenar la historia de las ultimas ejecución del salto Predictores de 1 bit de historia Predictores de 2 bits de historia (bimodal) Predictores de 3 bits de historia EJEMPLOS EJEMPLOS PA 8500 (1999) EJEMPLOS Gmicro 100 (1991) MC68060 (1993) UltraSparc (1995) Alpha (1992) R8000 (1994) Pentium (1994) Alpha 21064A (1994) PowerPC 604 (1995) PowerPC 620 (1996) PA 8000 (1996) Alpha (1995) R10000 (1996) Evolución Predictores correlacionados Predictores híbridos AC Tema 4 F. Tirado / R. Hermida ( ) 65
74 Tratamiento de Saltos: Predicción Predictores Dinámicos Predictor de un BIT Utilizan un bit de predicción por cada instrucción de salto El bit de predicción refleja el comportamiento de la última ejecución de la instrucción de salto Indica si en la anterior ejecución el salto fue tomado o no Predicción El salto se predice como Taken si en la última ejecución fue tomado El salto se predice como Not Taken si en la última ejecución no fue tomado FUNCIONAMIENTO Máquina de dos estados: Not taken (0) RH1 Taken (1) Taken Not taken NT T (1) (0) Registro de historia Contador saturado de 1 bit T Predicción Valor del registro de historia i LIMITACIÓN Sólo se registra el comportamiento de la última ejecución del salto Dos malas predicciones en los cambios Más Bits Predicción: Taken NT Inicio Predicción: Not taken Cambios de estado: T: el salto ha sido tomado NT: el salto no ha sido tomado AC Tema 4 F. Tirado / R. Hermida ( ) 66
75 Diapositiva 66 RH1 Corregidos los bits RH; 17/11/2008
76 Tratamiento de Saltos: Predicción Predictores Dinámicos Predictor de dos bits (BIMODAL) Utilizan dos bits de predicción por cada instrucción de salto Estos bits reflejan el comportamiento de las últimas ejecuciones de ese salto NT Predicción Un salto que se toma repetidamente se predice como Taken Un salto que no se toma repetidamente se predice como Not taken Si un salto toma una dirección inusual una sola vez, el predictor mantiene la predicción usual Funcionamiento i Máquina de cuatro estados: Strongly not taken (00) Weakly not taken (01) Weakly taken (10) Strongly taken (11) Inicio Strongly not taken (0 0) T NT Weakly not taken (0 1) Registro de historia Contador saturado de 2 bits Predicción bit más significativo del registro de historia T NT Weakly taken (1 0) T NT Strongly taken (1 1) T Cambios de estado: T: el salto ha sido tomado NT: el salto no ha sido tomado Predicción: Not taken Predicción: Not taken Predicción: Taken Predicción: Taken AC Tema 4 F. Tirado / R. Hermida ( ) 67
77 Predictores Dinámicos Tratamiento de Saltos: Predicción Implementación m de los bits de predicción 1) Branch Target Buffer (BTB) Añade los bits de predicción a las entradas de la BTAC. La BTAC con bits de predicción se denomina BTB 2) Tabla de historia de saltos (BHT) Utiliza una tabla especial, distinta de la BTAC para almacenar los bits de predicción EJEMPLOS MC Pentium R8000 PM1 Pentium II Pentium x 2 bit 256 x 2 bit 1K x 1 bit 1K x 2 bit 512x2 bit 4kx2bits EJEMPLOS Gmicro 100 PowerPC 604 R10000 PowerPC 620 PA 8000 Alpha 21164A AMD x 1 bit 512 x 2 bit 512 x 2 bit 2K x 2 bit 256 x 3 bit 2K x 2 bit 16Kx2bits AC Tema 4 F. Tirado / R. Hermida ( ) 68
78 Tratamiento de Saltos: Predicción Predictores Dinámicos: Implementación 1) Branch Target Buffer (BTB): bits acoplados La BTB almacena La dirección destino de los últimos saltos tomados Los bits de predicción de ese salto Actualización de la BTB Los campos de la BTB se actualizan después de ejecutar el salto y se conoce: Si el salto fue tomado o no Actualizar bits de predicción La dirección destino del salto Actualizar BTA Dirección de la instrucción de salto Tag Dirección destino del salto BTA Bits de predicción MUX Lógica de Predicción Predicción Implícita (sin bits de predicción) Taken / Not Taken Aplicable con un sólo bit de predicción Sí la instrucción de salto está en la BTB El salto se predice como tomado Sí la instrucción de salto no está en la BTB El salto se predice como no tomado BTB +1 MUX Dirección de la siguiente instrucción DESVENTAJA: Sólo se pueden predecir aquellas instrucciones de salto que están en la BTB AC Tema 4 F. Tirado / R. Hermida ( ) 69
79 Tratamiento de Saltos: Predicción Predictores Dinámicos: Implementación 2) Tabla de historia de saltos (BHT): bits desacoplados Existen dos tablas distintas: La BTAC, que almacena la dirección destino de los últimos saltos tomados La BHT, que almacena los bits de predicción de todos las instrucciones de salto condicional Ventaja Puede predecir instruc.que no están en la BTAC (más entradas en BHT que en BTAC) Desventaja Aumenta el hardware necesario 2 tablas asociativas Acceso a la BHT Usando los bits menos significativos de la dirección Sin TAGs Menor coste (opción + habitual) Compartición de entradas Se degrada el rendimiento Asociativa por conjuntos Mayor coste Tablas pequeñas Para un mismo coste hardware Peor comportamiento Dirección de la instrucción de salto Tag BTAC Dirección destino del salto BTA Tag Bits de predicción X MU Lógica de Predicción +1 BTA MUX Taken / Not Taken Dirección de la siguiente instrucción AC Tema 4 F. Tirado / R. Hermida ( ) 70 BHT
80 Predictores Dinámicos Comportamiento Tratamiento de Saltos: Predicción 18% 18% 18% 16% 14% 12% 10% 8% 9% 9% 9% 9% 12% 11% 10%10% 6% 4% 5% 5% 5% 5% 5% 5% 2% 0% 1% 1% 0% 0% 0% 0% nasa7 matrix300 tomcatv doducd spice fpppp gcc espresso eqntott li 4096 entrdas. 2bits por entrdada Entrdas ilimitadas. 2bits por entrada Muchos fallos en algunos programas (enteros) Por que? AC Tema 4 F. Tirado / R. Hermida ( ) 71
81 Predictores Dinámicos Tratamiento de Saltos: Predicción Otras formas de gestionar la historia 1. Muchas instrucciones de salto ejecutan patrones repetitivos Idea : Los saltos están relacionados. El comportamiento de los últimos saltos afecta a la predicción actual. Almacenar el comportamiento de los últimos n saltos y usarlo en la selección de la predicción. For (i=1; i<=4; i++) { } Patrón: {1110} 1 = Taken 0 = Not Taken Si conocemos el comportamiento del salto en las 3 últimas ejecuciones podemos predecir como se comportará en la siguiente ejecución Predicción basada en historia LOCAL Historia Predicción 0 (NT) 1 (T) 1 (T) 1 (T) AC Tema 4 F. Tirado / R. Hermida ( ) 72
82 Predictores Dinámicos Tratamiento de Saltos: Predicción 2. Muchas instrucciones de salto dependen del comportamiento de otros saltos recientes ( historia global) Ejemplo: b1: if (d = 0) then d = 1 b2: if f( (d =1) then BNEZ R1, L1 ; salto b1 (Salto si d 0) R8 ADDI R1, R0, #1 ; Como d=0, hacer d=1 L1: SUBI R3, R1, #1 ; R3=d(R1)-1 BNEZ R3, L2 ; salto b2 (Salto si d 1)... L2: R3=0 d=1 R3 0 d 1 Si conocemos el comportamiento de la última ejecución de b1 podemos predecir el comportamiento de b2 en la siguiente ejecución Predicción basada en historia GLOBAL AC Tema 4 F. Tirado / R. Hermida ( ) 73
83 Diapositiva 73 R8 Rehago comentarios Román; 26/09/2007
84 Predictores Dinámicos Ejemplo ( continua ) Relación entre los dos saltos Tratamiento de Saltos: Predicción BNEZ R1, L1 ; salto b1 (Salto si d 0) ADDI R1, R0, #1 ; Como d=0, hacer d=1 L1: SUBI R3, R1, #1 ; R3=d(R1)-1 1 Caso 1: d=0,1,2, L2: BNEZ R3, L2 ; salto b2 (Salto si d 1)... Valor de d d 0? b1 d antes de b2 d 1? b2 0 no NT 1 no NT 1 si T 1 no NT 2 si T 2 si T Si b1 no se toma, entonces b2 tampoco: correlación entre saltos AC Tema 4 F. Tirado / R. Hermida ( ) 74
85 Predictores Dinámicos Ejemplo ( continua ) Tratamiento de Saltos: Predicción Comportamiento t del predictor de un bit. ( estado inicial i i not taken NT) BNEZ R1, L1 ; salto b1 (Salto si d 0) ADDI R1, R0, #1 ; Como d=0, hacer d=1 L1: SUBI R3, R1, #1 ; R3=d(R1)-1 Caso 2: d=2,0,2,0, d=2020 L2: BNEZ R3, L2 ; salto b2 (Salto si d 1)... Valor de d Predicción de b1 b1 Nueva predicción de b1 Predicción de b2 b2 Nueva predicción de b2 2 NT T T NT T T 0 T NT NT T NT NT 2 NT T T NT T T 0 T NT NT T NT NT Muchos fallos de predicción AC Tema 4 F. Tirado / R. Hermida ( ) 75
86 Predictores Dinámicos Solución Tratamiento de Saltos: Predicción Predictor de dos niveles (1,1): 1): Para cada salto existen 2 1 predictores de 1 bit. El comportamiento último salto (1) determina el predictor que se usa. Predictor de dos niveles (m,n) Para cada salto existen 2 m predictores de n bits. El comportamiento de los últimos m saltos determinan el predictor que se usa Significado de los bit de predicción en un predictor (1,1) Bits de predicción Predicción si el ultimo salto no tomado NT/NT NT NT Dos predictores NT/T NT T de un bit T/NT T NT T/T T T Predicción si el ultimo salto tomado Ejemplo: Tamaño de un predictor (2,2) de 4k entradas 4x2x4K = 32Kb AC Tema 4 F. Tirado / R. Hermida ( ) 76
87 Predictores Dinámicos Ejemplo ( continua ) Tratamiento de Saltos: Predicción Comportamiento del predictor de dos niveles (1,1). ( estado inicial not taken NT) BNEZ R1, L1 ; salto b1 (Salto si d 0) ADDI R1, R0, #1 ; Como d=0, hacer d=1 L1: SUBI R3, R1, #1 ; R3=d(R1)-1 BNEZ R3, L2 ; salto b2 (Salto si d 1)... L2: Sólo se predice mal la 1ª iteración (d=2) Caso 2: d=2,0,2,0, d=2020 d =? Predicción ió b1 Nueva Predicción ió b2 Nueva de b1 predicción de b2 predicción de b1 de b2 2 NT/NT T T/NT NT/NT T NT/T 0 T/NT NT T/NT NT/T NT NT/T 2 T/NT T T/NT NT/T T NT/T 0 T /NT NT T/NT NT/T NT NT/T (Subrayado en rojo: Bit de predicción seleccionado en cada caso, en función del comportamiento del salto anterior) AC Tema 4 F. Tirado / R. Hermida ( ) 77
88 Tratamiento de Saltos: Predicción Predictores Dinámicos i Dirección(4 bits) Implementación para Predictor de dos niveles (2,2) R9 con 16 entradas predictores de 2-bits por salto (predictor local) Predicción bits de historia Global de saltos (2 Saltos anteriores) (Ejemplo: 01 = not taken Y taken ) AC Tema 4 F. Tirado / R. Hermida ( ) 78
89 Diapositiva 78 R9 Añado "de 2 niveles" De acuerdo? Nos hemos referido a "2 niveles" muchas veces en problemas y exámenes Román; 26/09/2007
90 Tratamiento de Saltos: Predicción Predictores Dinámicos Comportamiento 0,2 0,18 0,16 0,14 Frequ uency of Mispre edictions 0,12 0,1 0,08 0,06 0,05 0,06 0, ,11 0,06 0,05 0,04 0,04 0,02 0 0,01 0,01 0 nasa7 matrix300 ti tomcatvt doducdd d spice fpppp gcc espresso eqntott tt li 4,096 entries: 2-bits per entry Unlimited entries: 2-bits/entry 1,024 entries (2,2) AC Tema 4 F. Tirado / R. Hermida ( ) 79
91 Tratamiento de Saltos: Predicción Predictores híbridos Idea básica Cada uno de los predictores estudiados tiene sus ventajas y sus inconvenientes Combinando el uso de distintos predictores y aplicando uno o otro según convenga, se pueden obtener predicciones mucho más correctas Predictor híbrido Mezcla varios predictores y añade un mecanismo de selección del predictor Mecanismo de selección Elige, en cada caso, el predictor que haya dado mejores resultados hasta el momento Implementación del mecanismo de selección Instrucción captada Dirección Tabla de Selección Para combinar dos predictores, P1 y P2, se utiliza una tabla de contadores saturados de dos bits indexada por la dirección de la instrucción de salto Pre edictor 1 MUX Pre edictor 2 Predicción (Taken/Not taken) P1 Fallo Fallo Acierto Acierto P2 Fallo Acierto Fallo Acierto Actualiz. del contador Cont no varía Cont = Cont +1 Cont = Cont -1 Cont no varía Si P2 acierta más que P1 Cont aumenta Si P1 acierta más que P2 Cont disminuyei Bit más signif. del contador 0 1 Predictor seleccionado P1 P2 AC Tema 4 F. Tirado / R. Hermida ( ) 80
92 Ejemplo: Alpha Predictor competitivo (Tournament Predictor) Predictor Local: Predicción de un salto en función del comportamiento previo de ese mismo salto o Considera las 10 últimas ejecuciones del salto Predictor global: Predicción de un salto en función del comportamiento mi de los últimos 12 saltos s ejecutados Juez: Decide cuál de las dos predicciones se aplica o Selecciona el predictor que esté manifestando el mejor comportamiento t Actualización: al resolver cada salto o o Se actualizan los predictores en función de su acierto o fallo Si los dos predictores hicieron i una predicción ió distinta, t se actualiza el juez para que favorezca al que acertó Gran importancia para la ejecución especulativa en (hasta 80 instrucciones en la ventana) Tasas de predicción correcta (benchmarks): % AC Tema 4 F. Tirado / R. Hermida ( ) 81
93 Tournament predictor del Alpha Comportamiento de las 10 últimas ejecuciones de 1024 saltos (IEEE Micro, Marzo 1999) Tabla de Historia Local (1024x10) MSB Predicción Local (1024x3) MSB Predicción Global (4096x2) 12 PC 0 1 Juez (4096x2) 12 MSB T/NT Historia Global (12 bits) Juez: Acierto global y fallo local = incrementa Fallo global y acierto local = decrementa AC Tema 4 F. Tirado / R. Hermida ( ) 82
94 Ejemplos de funcionamiento (1) Programa con dos saltos que tiene el comportamiento descrito Si (a=0) TNTN... (se toma alternativamente) Si (b=0) NNNN... (nunca se toma) Si(a=0) se ha tomado: TH Local Pred Local PC de Si (b=0) PC de Si (a=0) AC Tema 4 F. Tirado / R. Hermida ( ) 83
95 Ejemplos de funcionamiento (2) Programa con dos saltos que tiene el comportamiento descrito Si (a=0) TNTN... (se toma alternativamente) Si (b=0) NNNN... (nunca se toma) Si(a=0) no se ha tomado: TH Local Pred Local PC de Si (b=0) PC de Si (a=0) AC Tema 4 F. Tirado / R. Hermida ( ) 84
96 Ejemplos de funcionamiento (3) Programa con tres saltos que tiene el comportamiento descrito Si (a=0) T 4095 Pred Global 11 Si (b=0) T Si (a=b) Predecir T 0 Comportamiento últimos 12 saltos 11x xxx xxx xxx Historia Global (12 bits) AC Tema 4 F. Tirado / R. Hermida ( ) 85
97 Tratamiento de Saltos: Predicción Predictores: Comportamiento tomcatv doduc 99% 99% 100% 84% 95% 97% fpppp li 86% 82% 88% 77% 98% 98% Profile-based Bimodal Híbrido espresso 86% 82% 96% gcc 70% 88% 94% 0% 20% 40% 60% 80% 100% Precisión de la predicción Profile_based- Predictor estático AC Tema 4 F. Tirado / R. Hermida ( ) 86
98 Tratamiento de Saltos: Predicción Predictores: Comportamiento La ventaja del predictor hibrido es su capacidad de seleccionar el predictor correcto para un determinado salto Muy importante para programas enteros Un predictor hibrido selecciona el global casi 40% de las veces paraspec integer y menos del 15% de las veces para SPEC FP 10% 9% ión de predicci % de fallos 8% 7% 6% 5% 4% 3% 2% 1% Local Dos niveles Híbrido 0% Tamaño del Predictor (Kbits) AC Tema 4 F. Tirado / R. Hermida ( ) 87
99 Tratamiento de R10 Saltos: Predicción Pentium 4 : tasa de fallos de predicción ( por 1000 instrucciones, no por salto) 6% de tasa de fallos SPECint (19% instrucciones INT son saltos, 186 de 1000 ) 2% de tasa de fallos SPECfp ( 5% instrucciones FP son saltos, 48 de 1000) FT Branc h mispredictio ons per 1000 Instructions gzip SPECint vpr 176.gcc 181.mcf 186.crafty 168.wupwise AC Tema 4 F. Tirado / R. Hermida ( ) swim SPECfp mgrid 173.applu 177.mesa
100 Diapositiva 88 R10 FT1 He añadido "de predicción" Román; 26/09/2007 No entiendo estos datos. tienen relación con la gráfica? se pueden escribir las frases de otra forma? Como 48 de cada mil son saltos y 1 de cada mil en media falla la tasa de fallos es 2% Francisco Tirado; 10/10/2007
101 Predicción ió de los retornos Tratamiento de Saltos: Predicción La precisión de los predictores con los retornos es muy baja: La dirección de retorno es diferente en función de la llamada Solución : Pila de direcciones de retorno( 8 a 16 entradas ) EJEMPLOS UltraSparc I, II 4 entradas Pemtium Pro 16 entradas R entrada AC Tema 4 F. Tirado / R. Hermida ( ) 89
102 Tratamiento de Saltos: Predicción Detección de la instrucción de salto Retardos en la detección del salto Para poder aplicar el mecanismo de predicción es necesario saber que se trata de una instrucción de salto Problema: el tipo de instrucción no se conoce hasta que no finaliza la etapa de DECODIFICACIÓN Varios ciclos de retardo en cada salto F D Tipo de instrucción Si es salto Aplicar predicción Detección en paralelo con la Decodificación Utiliza un decodificador de saltos dedicado capaz de detectar las instrucciones de salto antes del final de la etapa decodificación F D Detección de saltos Alternativas al esquema básico Detección después de la etapa de Fetch Detecta las instrucciones de salto en el buffer de instrucciones, antes de que sean decodificadas F D F D Detección de saltos Detección Durante la etapa de Fetch Detecta las instrucciones de salto al tiempo que se leen de la cache de instrucciones EJEMPLOS EJEMPLOS EJEMPLOS Alpha Alpha Power1 PowerPC 603 PowerPC 604 Alpha 21064A PowerPC601 Power2 PowerPC 620 Detección de saltos R8000 PA8000 AC Tema 4 F. Tirado / R. Hermida ( ) 90
103 Tratamiento de Saltos: Predicción Recuperación de fallos de predicción ió (misprediction) i Tareas básicas 1) Descartar los resultados de las instrucciones ejecutadas especulativamente 2) Reanudar la ejecución por el camino correcto con un retardo mínimo 1) Descarte de los resultados Los resultados de estas instrucciones especulativas se almacenan en registros temporales (registros de renombramiento o Buffer de reordenamiento) Estas instrucciones no modifican los contenidos de los registros de la arquitectura ni de la memoria Si la ejecución fue correcta Se actualizan los registros de la arquitectura y/o la memoria Si la ejecución fue incorrecta Se descartan los resultados de los registros temporales AC Tema 4 F. Tirado / R. Hermida ( ) 91
104 Tratamiento de Saltos: Predicción Recuperación de fallos de predicción (misprediction) 2) Reanudación de la ejecución por el camino correcto El procesador debe guardar, al menos, la dirección de comienzo del camino alternativo Si la predicción fue Not taken El procesador debe calcular y almacenar la dirección destino del salto Si la predicción fue Taken El procesador debe almacenar la dirección de la instrucción siguiente al salto Ejemplos: PowerPC Reducción de los retardos en la recuperación de fallos El procesador puede guardar, no solo la dirección del camino alternativo, sino prebuscar y almacenar algunas instrucciones de este camino Si la predicción fue Taken El procesador almacena la dirección del camino secuencial El procesador prebusca y almacena las primeras instrucciones secuenciales Si la predicción fue Not taken El procesador calcula y almacena la dirección destino del salto El procesador prebusca y almacena las primeras instrucciones del destino del salto Ejemplos: 2 buffer Power1, Power2, Pemtium, UltraSparc( 16 ), R10000 (256 bits) 3 buffer Nx586 ( 2 pendientes ) AC Tema 4 F. Tirado / R. Hermida ( ) 92
105 Tratamiento de Saltos: Otras alternativas Ejecución condicional de instrucciones Idea básica Eliminar, parcialmente, los saltos condicionales mediante instrucciones de ejecución condicional Una instrucción de ejecución condicional está formada por: Una condición Una operación Ejecución condicional Si la condición es cierta La instrucción se ejecuta Si la condición es falsa La instrucción se comporta como NOP Ejemplo L BNEZ MOV R1, L R2, R3 CMOVZ R2, R3, R1 Ventaja: Buena solución para implementar alternativas simples de control Desventaja: Consumen tiempo en todos los casos. Más lentas que las incondicionales Ejemplos: Alpha, Hp-Pa, MIPS, Sparc AC Tema 4 F. Tirado / R. Hermida ( ) 93
106 Tratamiento de Saltos: Otras alternativas Ejecución con predicados Idea básica Transformar todos las instrucciones en condicionales Una instrucción de ejecución condicional está formada por: Una parte de condición, denominada predicado o guarda Una parte de operación Ejecución predicada: Si la condición es cierta La instrucción se ejecuta Si la condición es falsa La instrucción se comporta como NOP Ejemplo If ( a< 10) c = c+1 else if ( b>20) d = d+1 else e = e+1 p2 T add c,c,1 p4 Blt a,10,l1 Add d,d,1 F Bgt b,20, L2 T F p1 Add e,e,1 p3 pred_lt p1(u),p2(u),a,10 add c,c,1 (p2) pred_gt p3(u), p4(u),b,20 (p1) add d,d,1 (p4) add e,e,1 (p3) AC Tema 4 F. Tirado / R. Hermida ( ) 94
107 Predicción de saltos Resumen Predictor bimodal bueno para Loop (programas FP ) Predictores res de dos niveles buenos para IF then else Predicción de la dirección destino importante Ejecución condicional y predicada reduce el numero de saltos AC Tema 4 F. Tirado / R. Hermida ( ) 95
108 Especulación La predicción ión de saltos s introduce ESPECULACION o Dos tipos de instrucciones en el procesador Las independientes Las que dependen de una predición de salto. Su finalización depende del acierto o fallo en la predicción. Como podemos implementar esta distinción con un modelo de ejecución con finalización Fuera de orden? Modificando el Algoritmo de Tomasulo para forzar finalización en orden ALGORITMO DE TOMASULO CON ESPECULACION AC Tema 4 F. Tirado / R. Hermida ( ) 96
109 Especulación Algoritmo de TOMASULO De Memoria Load1 Load2 Load3 Load4 Load5 Load6 Load Buffers Cola de Ope FP Registros FP Store Buffers Add1 Add2 Add3 Mult1 Mult2 SumadorFP Estaciones De Reserva MultiplicadorFP A Memoria Common Data Bus (CDB) AC Tema 4 F. Tirado / R. Hermida ( ) 97
110 Especulación Algoritmo de TOMASULO con especulación Buffer de Reordenamiento De Memoria Cola de Ope FP Registros Load1 Load2 Load3 Load4 Load5 Load6 Load Buffers A Memoria Reg Dato Add1 Add2 Add3 Mult1 Mult2 SumadorFP Estaciones De Reserva MultiplicadorFP Common Data Bus (CDB) AC Tema 4 F. Tirado / R. Hermida ( ) 98
111 Especulación R13 El Buffer de Reordenamiento (ROB) o Almacena resultados de instrucciones cuya ejecución ha finalizado, pero están a la espera de actualizar registros s o memoria m (finalización en orden) son dependientes de un salto (ejecución especulativa) o Permite el paso de operandos entre instrucciones especuladas con dependencia LDE. Los operandos de una instrucción ió pueden llegar hasta la ER desde: o Registros (la instrucción que genera el operando ha finalizado completamente) o ROB (la instrucción que genera el operando se ha ejecutado, pero no ha actualizado el banco de registros) o CBD (la instrucción ió que genera el operando todavía no ha realizado la fase de escritura) AC Tema 4 F. Tirado / R. Hermida ( ) 99
112 Diapositiva 99 R13 Transparencia insertada Román; 28/09/2007
113 Especulación R14 Estructura tu del ROB: cada entrada contiene n 4 campos o Tipo de instrucción Salto (sin reg destino), Store (destino en memoria), Aritmética/Load (con destino en registro) o Destino Número de registro (Aritmética/Load) Dirección de memoria (Store) o Valor Resultado de la ejecución de la instrucción. ió Guarda el valor hasta que se actualiza registro destino o memoria. o Listo La instrucción ha completado la fase de ejecución y el resultado está disponible en el campo Valor AC Tema 4 F. Tirado / R. Hermida ( ) 100
114 Diapositiva 100 R14 Transparencia insertada Román; 28/09/2007
115 Especulación: fases Algoritmo de TOMASULO con especulación Los 4 estados del algoritmo de Tomasulo especulativo Issue: Toma la instrucción de la cola Es necesario: ER con entrada libre y Buffer de Reordenamiento (ROB) con R12 entrada libre. Toma operandos de registros o de resultados almacenados en ROB por instrucciones previas. Marca R. Destino con nº de ROB asignado RH2 Marca ER asignada con nº de ROB asignado Ejecución: Opera sobre los operandos Espera hasta que los operandos estén disponibles. Chequea CDB. Escribe resultados: Finaliza ejecución Escribe a través de CDB en todas las ER de Fus y entradas del ROB que estén a la espera del resultado. Libera ER. No escribe en registros, ni memoria. Envía por CDB resultado + nº de ROB al que se dirige Commit: Actualiza registros desde el ROB Cuando la Instrucción esta en la cabecera del ROB y resultado presente: Actualiza Registro (o escribe en memoria) y elimina la instrucción del ROB. R15 Tratamiento de saltos y Excepciones AC Tema 4 F. Tirado / R. Hermida ( ) 101 RH3
116 Diapositiva 101 R12 R15 RH2 RH3 He reescrito descripción de estados Román; 26/09/2007 Tratamiento de saltos y excepciones Orden de LD/ST Merecen unas transp aparte Román; 28/09/2007 Nuevo RH; 23/11/2008 Nuevo RH; 23/11/2008
117 R16 Especulación: Ejemplo Se lanza: LD F0,10(R2) De Memoria Dest 1 10+R2 Load Buffers Cola de Ope FP Buffer de Reordenamiento Dest Valor Tipo Listo F0 LD F0,10(R2) N 1 A Memoria Reg Dato Nº de ROB Registros Dest Dest Valor SumadorFP Estaciones De Reserva MultiplicadorFP Nº de ROB que producirá el valor Common Data Bus (CDB) AC Tema 4 F. Tirado / R. Hermida ( ) 102
118 Diapositiva 102 R16 He insertado transparencias de la 98 a la 108. Repasar por favor, dado que las he rehecho a partir del ejemplo de Patterson: 1. He metido transp adicionales para ve la fase commit de dos instrucciones 2. He metido el campo de "Nº ROB" de los registros 3. He indicado explícitamente la instrucción que se lanza, ejecuta o finaliza. Román; 01/10/2007
119 Especulación: Ejemplo Se lanza: ADDD F10,F4,F0 De Memoria Dest 1 10+R2 Load Buffers Cola de Ope FP Buffer de Reordenamiento Dest Valor Tipo Listo F10 ADDD F10,F4,F0 N 2 F0 LD F0,10(R2) N 1 A Memoria Reg Dato 2 1 Nº de ROB Registros Dest 2 ADDD R(F4), ROB1 Dest SumadorFP Estaciones De Reserva MultiplicadorFP Common Data Bus (CDB) AC Tema 4 F. Tirado / R. Hermida ( ) 103
120 Especulación: Ejemplo Se lanza: DIVD F2,F10,F6 De Memoria Dest 1 10+R2 Load Buffers Cola de Ope FP Buffer de Reordenamiento Dest Valor Tipo Listo F2 DIVD F2,F10,F6 N 3 F10 ADDD F10,F4,F0 N 2 F0 LD F0,10(R2) N 1 A Memoria Reg Dato Nº de ROB Registros Dest 2 ADDD R(F4), ROB1 Dest 3 DIVD ROB2,R(F6) SumadorFP Estaciones De Reserva MultiplicadorFP Common Data Bus (CDB) AC Tema 4 F. Tirado / R. Hermida ( ) 104
121 Especulación: Ejemplo Se lanza: BNE F2, --- LD F4, 0(R3) ADDD F0,F4,F6 De Memoria Dest 1 10+R2 5 0+R3 Load Buffers Cola de Ope FP Buffer de Reordenamiento Dest Valor Tipo Listo F0 F4 --- F2 F10 ADDD F0,F4,F6 N LD F4,0(R3) N BNE F2,--- N DIVD F2,F10,F6 N ADDD F10,F4,F0 N LD F0,10(R2) N F0 1 A Memoria Reg Dato 3 2 Nº de ROB Registros Dest 2 ADDD R(F4), ROB1 6 ADDD ROB5, R(F6) Dest 3 DIVD ROB2,R(F6) SumadorFP Estaciones De Reserva MultiplicadorFP Common Data Bus (CDB) AC Tema 4 F. Tirado / R. Hermida ( ) 105
122 Especulación: Ejemplo Se lanza: ST 0(R3), F4 De Memoria Dest 1 10+R2 5 0+R3 (sup R3=10) Load Buffers Cola de Ope FP Buffer de Reordenamiento Dest Valor Tipo Listo 10 ROB5 F0 F4 --- F2 F10 ST 0(R3),F4 N ADDD F0,F4,F6 N LD F4,0(R3) N BNE F2,--- N DIVD F2,F10,F6 N ADDD F10,F4,F0 N LD F0,10(R2) N F0 1 A Memoria Reg Dato Nº de ROB Registros Dest 2 ADDD R(F4), ROB1 6 ADDD ROB5, R(F6) Dest 3 DIVD ROB2,R(F6) SumadorFP Estaciones De Reserva MultiplicadorFP Common Data Bus (CDB) AC Tema 4 F. Tirado / R. Hermida ( ) 106
123 Especulación: Ejemplo Se ejecuta: LD F4,0(R3) De Memoria Dest 1 10+R2 Load Buffers Cola de Ope FP Buffer de Reordenamiento Dest Valor Tipo Listo 10 M[10] ST 0(R3),F4 Y F0 ADDD F0,F4,F6 N F4 M[10] LD F4,0(R3) Y --- BNE F2,--- N F2 DIVD F2,F10,F6 N F10 ADDD F10,F4,F0 N LD F0,10(R2) N F0 1 A Memoria Reg Dato Nº de ROB Registros Dest 2 ADDD R(F4), ROB1 6 ADDD M[10], R(F6) Dest 3 DIVD ROB2,R(F6) Resultado a ROB5 y todo ROB o ER con marca ROB5 SumadorFP Estaciones De Reserva MultiplicadorFP Common Data Bus (CDB) AC Tema 4 F. Tirado / R. Hermida ( ) 107
124 Especulación: Ejemplo Se ejecuta: ADDD F0,F4,F6 De Memoria Dest 1 10+R2 Load Buffers Cola de Ope FP Buffer de Reordenamiento Dest Valor Tipo Listo 10 M[10] ST 0(R3),F4 Y F0 F4+F6 ADDD F0,F4,F6 Y F4 M[10] LD F4,0(R3) Y --- BNE F2,--- N F2 DIVD F2,F10,F6 N F10 ADDD F10,F4,F0 N LD F0,10(R2) N F0 1 A Memoria Reg Dato Nº de ROB Registros Dest 2 ADDD R(F4), ROB1 Dest 3 DIVD ROB2,R(F6) Resultado a ROB6 y todo ROB o ER con marca ROB6 SumadorFP Estaciones De Reserva MultiplicadorFP Common Data Bus (CDB) AC Tema 4 F. Tirado / R. Hermida ( ) 108
125 Especulación: Ejemplo Se ejecuta: LD F0,10(R2) De Memoria Dest sup R2=10 Load Buffers Cola de Ope FP Buffer de Reordenamiento Dest Valor Tipo Listo 10 M[10] ST 0(R3),F4 Y F0 F4+F6 ADDD F0,F4,F6 Y F4 M[10] LD F4,0(R3) Y --- BNE F2,--- N F2 DIVD F2,F10,F6 N F10 ADDD F10,F4,F0 N LD F0,10(R2) Y F0 M[20] 1 A Memoria Reg Dato Nº de ROB Registros Dest 2 ADDD R(F4),M[20] Dest 3 DIVD ROB2,R(F6) SumadorFP Estaciones De Reserva MultiplicadorFP Common Data Bus (CDB) AC Tema 4 F. Tirado / R. Hermida ( ) 109
126 Especulación: Ejemplo Se ejecuta: ADDD F10,F4,F0 De Memoria Dest Load Buffers Cola de Ope FP Buffer de Reordenamiento Dest Valor Tipo Listo 10 M[10] ST 0(R3),F4 Y F0 F4+F6 ADDD F0,F4,F6 Y F4 M[10] LD F4,0(R3) Y --- BNE F2,--- N F2 DIVD F2,F10,F6 N F10 * ADDD F10,F4,F0 Y LD F0,10(R2) Y F0 M[20] 1 A Memoria Reg Dato Nº de ROB Registros Dest Dest 3 DIVD *,R(F6) SumadorFP Estaciones De Reserva MultiplicadorFP Common Data Bus (CDB) * = R(F4)+M[20] AC Tema 4 F. Tirado / R. Hermida ( ) 110
127 Especulación: Ejemplo Finaliza (Commit): LD F0,10(R2) De Memoria Dest Load Buffers Cola de Ope FP Buffer de Reordenamiento Dest Valor Tipo Listo 10 M[10] ST 0(R3),F4 Y F0 F4+F6 ADDD F0,F4,F6 Y F4 M[10] LD F4,0(R3) Y --- BNE F2,--- N F2 DIVD F2,F10,F6 N F10 * ADDD F10,F4,F0 Y A Memoria Reg Dato Nº de ROB Registros M[20] Dest Dest 3 DIVD *,R(F6) SumadorFP Estaciones De Reserva MultiplicadorFP Common Data Bus (CDB) * = R(F4)+M[20] AC Tema 4 F. Tirado / R. Hermida ( ) 111
128 Especulación: Ejemplo Finaliza (Commit): ADDD F10,F4,F0 De Memoria Dest Load Buffers Cola de Ope FP Buffer de Reordenamiento Dest Valor Tipo Listo 10 M[10] ST 0(R3),F4 Y F0 F4+F6 ADDD F0,F4,F6 Y F4 M[10] LD F4,0(R3) Y --- BNE F2,--- N F2 DIVD F2,F10,F6 N A Memoria Reg Dato Nº de ROB Registros * M[20] Dest Dest 3 DIVD *,R(F6) SumadorFP Estaciones De Reserva MultiplicadorFP Common Data Bus (CDB) * = R(F4)+M[20] AC Tema 4 F. Tirado / R. Hermida ( ) 112
129 R17 Especulación: Riesgos a través de memoria Riesgos s EDE y EDL: no pueden aparecer dado d que la actualización de memoria se hace en orden. o Esperar hasta que la instrucción ST se halle en la cabecera de ROB => Todos los LD y ST anteriores se han completado. Riesgos LDE: Podrían producirse si un LD accede a la posición de memoria A, habiendo en el ROB un ST previo que almacena el resultado en A. Se evitan mediante el siguiente mecanismo: o Un LD no ejecuta el acceso a memoria si hay un ST previo en el ROB con la misma dirección de memoria. o Tampoco se ejecuta el LD si está pendiente el cálculo de la dirección efectiva de algún ST del ROB AC Tema 4 F. Tirado / R. Hermida ( ) 113
130 Diapositiva 113 R17 Esta y la siguiente son nuevas. Por favor, revisar. Román; 01/10/2007
131 Especulación: Saltos e interrupciones El ROB permite recuperarse de saltos s mal predichos e implementar un modelo de excepciones precisas Si una instrucción de salto bien predicha llega a cabecera de ROB => o Eliminarla de ROB Si una instrucción de salto mal predicha llega a cabecera de ROB => o Borrar contenido del ROB o Borrar marcas (campo Nº de ROB) de todos los registros. o Buscar instrucción correcta. Si una instrucción genera una interrupción => o Registrar la petición en el ROB o Si la instrucción llega a la cabecera del ROB (no especulada), entonces reconocer la interrupción. o Cualquier instrucción anterior habrá finalizado. Por tanto ninguna instrucción anterior puede provocar una excepción. AC Tema 4 F. Tirado / R. Hermida ( ) 114
132 Especulación: más ejemplos Algoritmo de TOMASULO con especulación Un ejemplo LD LD MULTD SUBD DIVD ADDD F6,34(R2) F2,45(R3) F0,F2,F4 F8,F6,F2F6 F2 F10,F0,F6 F6,F8,F2 Estaciones de Reserva Estado Opera Vj Vk Qj Qk Nº ROB Destino ADD1 Libre ADD2 Libre ADD3 Libre MUL1 Libre MULT M(45+(R3)) F4 #3 MUL2 Ocup. DIV M(34+(R2)) #3 #5 Buffer de Reordenamiento Estado Instrucción Estado Destino Valor 1 libre LD F6,34(R2 Commit F6 M(34+(R2)) 2 libre LD F2,45(R3) Commit F2 M(45+R3)) 3 Ocupada MULTD F0,F2,F4F2 F4 Escri. Res F0 #2x(F4) 4 Ocupada SUB F8,F6,F2 Escri. Res. F8 #1 - #2 5 Ocupada DIVD F10,F0,F6 Ejecuta F10 6 Ocupada ADDD F6,F8,F2F8 F2 Escri. Res. F6 #4 + #2 Estado de los registros FP F0 F2 F4 F6 F8 F10 F12 Buffer Nº Ocupado si no no si si si no AC Tema 4 F. Tirado / R. Hermida ( ) 115
133 R18 Especulación: más ejemplos Algoritmo de TOMASULO con especulación Un ejemplo Estado Opera Vj Vk Qj Qk Nº ROB Destino MUL1 Libre MULT M(0+(R1)) ( F2 #2 MUL2 Libre MULT M(0+(R1)) F2 #7 LOOP Estado Instrucción Estado Destino Valor LD F0,0(R1) 0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 3 Ocupada SD 0(R1),F4 Escri. Res 0+R1 #2 BNEZ R1,LOOP 4 Ocupada SUBI R1,R1,#8 Escri. Res. R1 R1-8 ES PECULADA AS 1 libre LD F0,0(R1) Commit F0 M(0+(R1)) 2 libre MULTD F4,F0,F2 Commit F4 F0 x F2 5 Ocupada BNEZ R1, loop Escri. Res 6 Ocupada LD F0,0(R1) Escri. Res. F0 M(#4) 7 Ocupada MULTD F4,F0,F2 Escri. Res F4 #6xF2 8 Ocupada SD 0(R1),F4 Escri. Res 0+R1 #7 9 Ocupada SUBI R1,R1,#8 Escri. Res R1 #4 - #8 10 Ocupadad BNEZ R1,Loop L Escri. Res. F0 F2 F4 F6 F8 F10 F12 Estado de los registros FP Buffer Nº 6 7 Ocupado si no si no no no no AC Tema 4 F. Tirado / R. Hermida ( ) 116
134 Diapositiva 116 R18 Se podría hacer unas tablas con el "Detalle de las fases" como el que hice para Tomasulo, pero es bastante más complicado. Vale la pena? Román; 01/10/2007
Arquitectura de Computadores. TEMA 2 ILP, Panificación dinámica, Predicción de saltos, Especulación
Arquitectura de Computadores TEMA 2 ILP, Panificación dinámica, Predicción de saltos, Especulación Curso 2015-2016 Contenidos Introducción: ILP Técnicas SW: Compilador Planificación dinámica. Algoritmo
Arquitectura e Ingeniería de Computadores. Examen Parcial. 7/02/2012
Apellidos Nombre Grupo: Arquitectura e Ingeniería de Computadores. Examen Parcial. 7/02/2012 Instrucciones.- Cada pregunta consta de cinco afirmaciones, y cada una de las afirmaciones puede ser cierta
Paralelismo al nivel de instrucciones
Paralelismo al nivel de instrucciones Arquitectura de Computadoras M. C. Felipe Santiago Espinosa Mayo de 2017 Qué es la segmentación o pipelining? O Técnica para la generación de paralelismo en microprocesadores.
Arquitectura de Computadores Problemas (hoja 4). Curso
Arquitectura de Computadores Problemas (hoja 4). Curso 2006-07 1. Sea un computador superescalar similar a la versión Tomasulo del DLX capaz de lanzar a ejecución dos instrucciones independientes por ciclo
Tema 7: Procesadores superescalares
Tema 7: Procesadores superescalares Arquitectura de Computadores y Sistemas Operativos I 4º Curso Plan 96 Escuela Técnica Superior Ingenieros Telecomunicaciones DISCA Tema 7: Procesadores superescalares
3. SEGMENTACIÓN DEL CAUCE
3. SEGMENTACIÓN DEL CAUCE 1 SEGMENTACIÓN DEL CAUCE 1. Conceptos básicos 2. Etapas del MIPS64 3. Riesgos 4. Operaciones muticiclo 2 SEGMENTACIÓN DEL CAUCE 1. Conceptos básicos 3 Conceptos básicos Ciclo
Tema 1: PROCESADORES SEGMENTADOS
Tema 1: PROCESADORES SEGMENTADOS 1.1. Procesadores RISC frente a procesadores CISC. 1.2. Clasificación de las arquitecturas paralelas. 1.3. Evaluación y mejora del rendimiento de un computador. 1.4. Características
2. SEGMENTACIÓN ENCAUZADA AVANZADA Y PARALELISMO DE INSTRUCCIONES: EJERCICIOS Y CUESTIONES
2. SEGMENTACIÓN ENCAUZADA AVANZADA Y PARALELISMO DE INSTRUCCIONES: EJERCICIOS Y CUESTIONES 2.1. Completa tus conocimientos del MIPS64 (una versión de MIPS). Debes aprender qué registros tiene, tipos de
2. SEGMENTACIÓN ENCAUZADA AVANZADA Y PARALELISMO DE INSTRUCCIONES: EJERCICIOS Y CUESTIONES
2. SEGMENTACIÓN ENCAUZADA AVANZADA Y PARALELISMO DE INSTRUCCIONES: EJERCICIOS Y CUESTIONES 2.1. Completa tus conocimientos del MIPS64 (una versión de MIPS). Debes aprender qué registros tiene, tipos de
6. PROCESADORES SUPERESCALARES Y VLIW
6. PROCESADORES SUPERESCALARES Y VLIW 1 PROCESADORES SUPERESCALARES Y VLIW 1. Introducción 2. El modelo VLIW 3. El cauce superescalar 4. Superescalar con algoritmo de Tomasulo 2 PROCESADORES SUPERESCALARES
ADDI R4,R0,#2 ADDI R1,R0,#40 LOOP: LW R2,0(R1) SUBI R3,R2,#1 MUL R2,R3,R2 DIV R2,R3,R4 SW 0(R1),R2 SUBI R1,R1,#4 BNEZ R1, LOOP ADDI R4,R0,#0
P2. (3 puntos) El siguiente código en ensamblador recorre un vector v, que comienza en la posición 0, calculando para cada v[i] el número de combinaciones que pueden darse con v[i] elementos tomados de
Introducción a los procesadores ILP (Instruction-Level Parallel)
Introducción a los procesadores ILP (Instruction-Level Parallel) Herramientas básicas para conseguir paralelismo entre instrucciones: Encauzamiento (pipelining) Se usa en todo procesador ILP Utilizar varias
Ejercicios de Paralelismo a Nivel de Instrucción
Ejercicios de Paralelismo a Nivel de Instrucción J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Arquitectura de Computadores Grupo
Arquitectura de Computadores II Clase #5
Arquitectura de Computadores II Clase #5 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Algunas ideas para mejorar el rendimiento Obvio: incrementar la frecuencia
Arquitectura de Computadores Problemas (hoja 2). Curso
Arquitectura de Computadores Problemas (hoja 2). Curso 2006-07 1. El siguiente fragmento de código se ejecuta en un DLX con segmentación: SUB R1,R2,R3 ADD R4,R5,R6 SUB R5,R4,R8 ADD R7,R2,R3 ADD R9,R7,R3
Explotación del paralelismo a nivel de instrucción
Explotación del paralelismo a nivel de instrucción Arquitectura de Computadores J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato
Estrategias de predicción dinámicas.
Estrategias de predicción dinámicas. Las técnicas que vamos a ver ahora para predicción de saltos se basan en información conocida sólo en tiempo de ejecución. Dos estructuras son necesarias para realizar
TEMA 3. PLANIFICACIÓN (SCHEDULING) DE INSTRUCCIONES Arquitectura de Sistemas Paralelos 1. pág 2. direcc MEM
TEMA 3 PLANIFICACIÓN O REORDENAMIENTO (SCHEDULING) DE INSTRUCCIONES ÍNDICE 3.. CONCEPTOS FUNDAMENTALES 3., 3.4 PLANIFICACIÓN ESTÁTICA. DESENROLLADO DE BUCLES. 3.3. PLANIFICACIÓN DINÁMICA (Algoritmo Tomasulo).
Procesadores segmentados. El DLX.
Procesadores segmentados. El DLX. Curso 2011-2012 Características de las Arquitecturas Tipos de Arquitectura Organización de la Memoria Direccionamiento de Memoria Operaciones en el Repertorio de Instrucciones
Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Exámenes Ingeniería Computadores II Tutor: Antonio Rivero Cuesta Exámenes TEMA 1 Centro Asociado Palma de Mallorca Tutor: Antonio Rivero Cuesta Un procesador sin segmentación
CAPÍTULO 2 PROCESADORES SUPERESCALARES
CAPÍTULO 2 PROCESADORES SUPERESCALARES LECTURA DE INSTRUCCIONES (etapa if) Falta de alineamiento Rotura de secuencialidad Tratamiento de los saltos Estrategias de predicción dinámica Pila de dirección
Arquitectura de Computadores II Clase #16
Arquitectura de Computadores II Clase #16 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Organización general Superescalar Varios pipelines. 2 operaciones enteras,
Aspectos avanzados de arquitectura de computadoras Pipeline. Facultad de Ingeniería - Universidad de la República Curso 2017
Aspectos avanzados de arquitectura de computadoras Pipeline Facultad de Ingeniería - Universidad de la República Curso 2017 Objetivo Mejorar el rendimiento Incrementar frecuencia de reloj? Ancho de los
Tema 5. Segmentación: conceptos básicos
Tema 5. Segmentación: conceptos básicos Organización de Computadores LUIS ENRIQUE MORENO LORENTE RAÚL PÉRULA MARTÍNEZ ALBERTO BRUNETE GONZALEZ DOMINGO MIGUEL GUINEA GARCIA ALEGRE CESAR AUGUSTO ARISMENDI
Tutorías con Grupos Reducidos (TGR) Sesión 2: Paralelismo a Nivel de Instrucción
Tutorías con Grupos Reducidos (TGR) Sesión 2: Paralelismo a Nivel de Instrucción ESTRUCTURA DE COMPUTADORES Grupo de Arquitectura de Computadores (GAC) Dyer Rolán García (GAC) Paralelismo a nivel de instrucción
Procesadores superescalares. Introducción
Procesadores superescalares Introducción Introducción El término superescalar (superscalar) fue acuñado a fines de los 80s. Todas las CPUs modernas son superescalares. Es un desarrollo de la arquitectura
2EMHWLYRV 5HIHUHQFLDV
7HPD6HJPHQWDFLyQ,,,QWURGXFFLyQ DORV6XSHUHVFDODUHV 2EMHWLYRV 5HIHUHQFLDV $SURYHFKDPLHQWRGHXQDDUTXLWHFWXUDVHJPHQWDGD 3ODQLILFDFLyQGLQiPLFD 3UHGLFFLyQGLQiPLFDGHVDOWRV 5HQRPEUDGRGHUHJLVWURV 3UHGLFDFLyQ 3URFHVDGRUHV6XSHUHVFDODUHV
HISTORIA DEL PIPELINE. Juan Antonio Romano Largo. Arquitectura de Computadores.
HISTORIA DEL PIPELINE CRONOLOGÍA Introducción ppo. S. XX IBM 704 1955 IBM 7030 (proyecto Stretch) 1956-1961 CDC 6600 1964 VAX 8800 1987 RISC vs CISC (MIPS vs VAX 8700) 1989 R4000 (Supersegmentado) 1991
Arquitectura de Computadoras Trabajo Práctico N 8 Pipeline de Instrucciones 1 Primer Cuatrimestre de 2016
Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Ejercicios Arquitectura de Computadoras Trabajo Práctico N 8 Pipeline de Instrucciones 1 Primer Cuatrimestre de 2016 1. La
Arquitectura de Computadores. Tema 11. Pipelining Avanzado
Arquitectura de Computadores Tema 11 Pipelining Avanzado Eduardo Daniel Cohen [email protected] http://www.herrera.unt.edu.ar/arqcom 1 En qué se pone difícil Pipelining? Excepciones: hay 5 instrucciones
Paralelismo en monoprocesadores. Procesadores VLIW
Paralelismo en morocesadores Procesadores VLIW Profesor: Mag. Marcelo Tosini Cátedra: Arquitectura de Computadoras y técnicas Digitales Carrera: Ingeniería de Sistemas Ciclo: 4º año Arquitectura VLIW básica
ARQUITECTURA DE COMPUTADORES Problemas TEMA 4: Microprocesadores avanzados
Departament d Informàtica Sistemes i Computadors ARQUITECTURA DE COMPUTADORES Problemas TEMA 4: Microprocesadores avanzados SUGERENCIAS PARA LA RESOLUCIÓN DE LOS PROBLEMAS La ruta datos propuesta en todos
TEMA 3 PLANIFICACIÓN O REORDENAMIENTO (SCHEDULING) DE INSTRUCCIONES ÍNDICE
TEMA 3 PLANIFICACIÓN O REORDENAMIENTO (SCHEDULING) DE INSTRUCCIONES ÍNDICE 3.1. CONCEPTOS FUNDAMENTALES 3.2, 3.4 PLANIFICACIÓN ESTÁTICA. DESENROLLADO DE BUCLES. 3.3. PLANIFICACIÓN DINÁMICA (Algoritmo Tomasulo).
Arquitectura de Computadoras. Clase 4 Segmentación de Instrucciones
Arquitectura de Computadoras Clase 4 Segmentación de Instrucciones Segmentación de cauce: Conceptos básicos La segmentación de cauce (pipelining) es una forma particularmente efectiva de organizar el hardware
OBJETIVOS ALGUNAS CONSIDERACIONES SOBRE WINDLX
Arquitectura de Sistemas Paralelos 3 er curso de Ingeniería Técnica en Informática de Sistemas Práctica: Procesador segmentado DLX. Técnicas de optimización Curso 2005/2006 OBJETIVOS En esta práctica se
Arquitectura de Computadoras Trabajo Práctico N 7 Pipeline de Instrucciones Primer Cuatrimestre de 2010
Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Ejercicios Arquitectura de Computadoras Trabajo Práctico N 7 Pipeline de Instrucciones Primer Cuatrimestre de 2010 1. La
Introducción PROCESADOR SUPERESCALAR. Paralelismo. Grado m: en cada ciclo se buscan/decodifican m instrucciones. supes
Introducción PROCESADOR SUPERESCALAR Paralelismo bus d/le eje mem es t ciclo seg =t ciclo supes Grado m: en cada ciclo se buscan/decodifican m instrucciones Introducción CICLOS POR INSTRUCCION tciclo identico
Arquitectura. TEMA 5 Lanzamiento múltiple, Límites de ILP, Multithreading. Curso
Arquitectura de Computadores TEMA 5 Lanzamiento múltiple, Límites de ILP, Multithreading Curso 2010-2011 Contenidos o Introducción: CPI < 1 o o o o o o o Lanzamiento múltiple de instrucciones: Superescalar,
1. Objetivo y evolución de los procesadores ILP.
Arquitectura de Computadores Tema 3: Procesadores ILP Índice. Objetivo y evolución de los procesadores ILP. 2. Segmentación (Pipeline).. Concepto y medida de rendimiento. i 2. Pipeline de instrucciones..
1.2. Implementación de Procesadores Superescalares
1.2. Implementación de Procesadores Superescalares Técnicas dinámicas: Complejidad alta desde el p. de v. de estructura o arquitectura Aquí las instrucciones son las normales o clásicas : compatibilidad
ARQUITECTURA DE COMPUTADORES
Escuela Universitaria de Informática Ingeniería de Computadores ARQUITECTURA DE COMPUTADORES PRÁCTICA Nº 3 DESENROLLADO DE BUCLES INTRODUCCIÓN Este documento contiene el enunciado de la práctica de desenrollado
Arquitectura de Computadores II Clase #4
Clase #4 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Contenido Unidad de control Control cableado Control microprogramado MIC-1 La Unidad de Control La instrucción
Definición de prestaciones
Definición de prestaciones En términos de velocidad. Diferentes puntos de vista: Tiempo de ejecución. Productividad (throughput) Medidas utilizadas En función de la duración del ciclo de reloj y del número
5. PREDICCIÓN DINÁMICA DE SALTOS
5. PREDICCIÓN DINÁMICA DE SALTOS 1 PREDICCIÓN DINÁMICA DE SALTOS 1. Introducción 2. Buffer de Predicción de Saltos (BPB) 3. Buffer de Destinos de Saltos (BTB) 4. Predictores Globales 5. Predictores Adaptativos
Unidad 4 - Procesamiento paralelo. Arquitectura de computadoras. D o c e n t e : E r n e s t o L e a l. E q u i p o : J e s s i c a F i e r r o
Unidad 4 - Procesamiento paralelo. D o c e n t e : E r n e s t o L e a l E q u i p o : J e s s i c a F i e r r o L u i s N a v e j a s Arquitectura de computadoras Introducción Cuestionario Conclusiones
COMPUTADORES SEGMENTADOS (DLX)
DEPARTAMENTO DE AUTOMÁTICA ARQUITECTURA Y TECNOLOGÍA DE COMPUTADORES Laboratorio de Arquitectura e Ingeniería de Computadores PRÁCTICA I COMPUTADORES SEGMENTADOS (DLX) OBJETIVO El objetivo de la práctica
TEMA 2: PARALELISMO INTERNO EN SISTEMAS COMPUTADORES SEGMENTACION
SEGMENTACION SEGMENTACION SEGMENTACION I I I I I 1 2 3 4 5 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB SEGMENTACION INTRODUCIR NUEVA INSTRUCCIÓN CADA CICLO 1 CICLO,
ARQUITECTURA DE COMPUTADORAS
2-12-2012 INSTITUTO TECNOLÓGICO DE CHIHUAHUA II ARQUITECTURA DE COMPUTADORAS Cuestionario Unidad 4 Claudia Cristina Enríquez Zamarrón 10 55 05 10 Laura Michell Montes Blanco 10 55 05 02 INTRODUCCIÓN: En
Arquitectura de Computadores II Clase #16
Arquitectura de Computadores II Clase #16 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Organización general Superescalar Varios pipelines. 2 operaciones enteras,
ARQUITECTURA SPARC: FORMATO DE INSTRUCCIÓN
ARQUITECTURA SPARC: FORMATO DE INSTRUCCIÓN De Diego Varona, Rubén Romay López, Oscar Manuel Vega Martínez, Jorge INTRODUCCIÓN La representación de la instrucción en la computadora se denomina formato.
Ingeniería Informática. Ampliación de Estructura de Computadores. Curso 2010-2011. 6.1 Introducción a la segmentación de Instrucciones.
SEGMENTACIÓN 6.1 Introducción a la segmentación de Instrucciones. La segmentación o pipeline es una técnica de realización de procesadores por la cual se solapa la ejecución de las instrucciones. Hoy en
Tema 4. Condiciones para el paralelismo: Dependencias
Tema 4. Condiciones para el paralelismo: Dependencias Organización de Computadores LUIS ENRIQUE MORENO LORENTE RAÚL PÉRULA MARTÍNEZ ALBERTO BRUNETE GONZALEZ DOMINGO MIGUEL GUINEA GARCIA ALEGRE CESAR AUGUSTO
Trabajo Práctico Número 6
Página 1 de 6 Trabajo Práctico Número 6 Arquitectura de Computadoras 24/05/2014 Instrucciones Los problemas de ejercitación propuestos en el presente trabajo práctico pueden ser resueltos en forma individual
Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria
1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo
Arquitectura de Computadores I. Sistema de memoria 3 (Solución): Segmentación + Bancos
Universidad del País Vasco Facultad de Informática Departamento de Arquitectura y Tecnología de Computadores Arquitectura de Computadores I Sistema de memoria 3 (Solución): Segmentación + Bancos En un
Tratamiento de Excepciones en MIPS
Tratamiento de en MIPS Elías Todorovich Arquitectura I - Curso 2013 Riesgos de Control Las direcciones del PC no son secuenciales (PC = PC + 4) en los siguientes casos: Saltos condicionales (beq, bne)
Procesadores de palabra de instrucción muy larga (VLIW) v.2012
Procesadores de palabra de instrucción muy larga (VLIW) v.2012 William Stallings, Organización y Arquitectura de Computadores, 5ta. ed., Capítulo 13: Paralelismo a nivel de instrucciones y procesadores
Introducción a la arquitectura de computadores
Introducción a la arquitectura de computadores Departamento de Arquitectura de Computadores Arquitectura de computadores Se refiere a los atributos visibles por el programador que trabaja en lenguaje máquina
Tecnologías, Organización y Microarquitectura
Septiembre 2012 Tecnología de Integración Nanotecnología Tecnología de Integración Imágenes obtenidas con TEM (Transmission Electron Microscope) de una cepa del virus de la influenza, y de un transistor
Arquitectura del CPU. Organización del Computador 1 Verano 2016
Arquitectura del CPU Organización del Computador 1 Verano 2016 Agenda De dónde venimos? Introducción: esquema de una computadora Representación de la información Circuitos Combinatorios Circuitos Secuenciales
Cuestionario Unidad 4: Procesamiento paralelo 2012
SEP SNEST DGEST INSTITUTO TECNOLÓGICO DE CHIHUAHUA II INGENIERÍA EN SISTEMAS COMPUTACIONALES ARQUITECTURA DE COMPUTADORAS Ing. Ernesto Leal Procesamiento paralelo ELABORADO POR: Miguel Angel Chávez Reza
Práctica 1 - Rendimiento *
Práctica 1 - Rendimiento * Organización del Computador 1 Verano 2014 Subconjunto mínimo de ejercicios recomendado: 1 a 11 Ejercicio 1 Considere tres procesadores distintos P 1, P 2 y P 3 que ejecutan el
CAPÍTULO 2 PROCESADORES SUPERESCALARES
CAPÍTULO 2 PROCESADORES SUPERESCALARES INTRODUCCIÓN Características de los procesadores superescalares Paralelismo Diversificación Dinamismo Arquitectura de un procesador superescalar genérico Características
PIPELINING: Antes de adentrarnos en el tema, veremos una analogía de un pipeline:
PIPELINING: Antes de adentrarnos en el tema, veremos una analogía de un pipeline: Observemos que la técnica de Pipelining no mejora el tiempo de cada tarea, sino el tiempo de toda la carga de trabajo.
Arquitectura de Computadoras
Arquitectura de Computadoras Clase 7 Memoria Sistema de Memoria Los programadores desean acceder a cantidades ilimitadas de memoria rápida!! Solución práctica: Jerarquía de memoria organizada en niveles
ENTRADA-SALIDA. 2. Dispositivos de Carácter: Envía o recibe un flujo de caracteres No es direccionable, no tiene operación de búsqueda
Tipos de Dispositivos ENTRADA-SALIDA 1. Dispositivos de Bloque: Almacena información en bloques de tamaño fijo (512b hasta 32Kb) Se puede leer o escribir un bloque en forma independiente 2. Dispositivos
Qué es Pipelining? Es una técnica de implementación en la que se superpone la ejecución de varias instrucciones.
Qué es Pipelining? Es una técnica de implementación en la que se superpone la ejecución de varias instrucciones. Aprovecha el paralelismo entre instrucciones en una corriente secuencial de instrucciones.
ARQUITECTURA VON NEUMANN
ARQUITECTURA VO EUMA Computador bus de datos bus de direcciones bus de control Usuario y aplicaciones Lenguajes de alto nivel Sistema operativo Unidad Central de Proceso Memoria principal Unidad de Entrada
Arquitectura del MIPS: Introducción
Arquitectura del MIPS: Introducción Montse Bóo Cepeda Este trabajo está publicado bajo licencia Creative Commons Attribution- NonCommercial-ShareAlike 2.5 Spain. Estructura del curso 1. Evolución y caracterización
CICLOS DEL PROCESADOR
UNIDAD DE CONTROL CICLOS DEL PROCESADOR Qué es un ciclo de búsqueda? Para qué sirve estudiar los ciclos de instrucción de una CPU? Para comprender el funcionamiento de la ejecución de instrucciones del
Autor: Longinos Recuero Bustos
Actividad 1.1 Autor: Longinos Recuero Bustos Suponiendo que se aplica una mejora a una máquina de tal forma que el rendimiento es 20 veces superior al que tenía y considerando que la mejora únicamente
PROCESADORES SUPER-ESCALARES
PROCESADORES SUPER-ESCALARES ARQUITECTURA DEL PROCESADOR II 1. De los procesadores escalares a los procesadores super-escalares En la materia ya hemos visto el pipeline de 5 etapas. 1 La idea básica entonces
Arquitectura de Computadores II Clase #3
Arquitectura de Computadores II Clase #3 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Veremos Registros Repertorio de instrucciones Modos de direccionamiento El
Circuitos Digitales II y Laboratorio Electrónica Digital II y Laboratorio
Circuitos Digitales II y Laboratorio Electrónica Digital II y Laboratorio Fundamentos de Arquitectura de Computadores Modelo de von Neumann Profesor: Felipe Cabarcas Correo:[email protected] Oficina:
Organización lógica Identificación de bloque
Cómo se encuentra un bloque si está en el nivel superior? La dirección se descompone en varios campos: Etiqueta (tag): se utiliza para comparar la dirección requerida por la CPU con aquellos bloques que
TEMA 3. ILP BASADO EN PLANIFICACIÓN DINÁMICA Sistemas Paralelos y Distribuidos 3º GIC. pág 1
TEMA 3 (Segunda Parte) PARALELISMO A NIVEL DE INSTRUCCIONES (ILP) BASADO EN TÉCNICAS DINÁMICAS ÍNDICE 3.1. Técnicas de Planificación dinámica: Algoritmo del marcador, Implementación del Algoritmo de Tomasulo,
Ingeniería Informática. Ampliación de Estructura de Computadores. Curso 2010-11
6.3.3 Riesgo de Control. Los riesgos por control en DLX son menos frecuentes que los riesgos por dependencia de datos, pero al no haber una solución tan buena como el adelantamiento de datos, se convierten
Sistema Cache. Técnicas Digitales III Ing. Gustavo Nudelman Universidad Tecnológica Nacional - Facultad Regional Buenos Aires
Sistema Cache Técnicas Digitales III Ing. Gustavo Nudelman 2012 RAM dinámica Almacena un bit como una capacidad espuria en un transistor La necesidad de conservar la carga y la lectura destructiva obliga
Arquitectura de Computadoras
4-1 Arquitectura de Computadoras Tema 4: Arquitectura del Set de Instrucciones Eduardo Daniel Cohen [email protected] http://www.herrera.unt.edu.ar/arqcom 4-2 Arquitectura del Set de Instrucciones Indice
Arquitectura de Computadoras. Clase 9 Procesamiento paralelo
Arquitectura de Computadoras Clase 9 Procesamiento paralelo Introducción al procesamiento paralelo Sea cual sea el nivel de prestaciones, la demanda de máquinas de mayor rendimiento seguirá existiendo.
Arquitectura de Computadores
Arquitectura de Computadores 1. Introducción 2. La CPU 3. Lenguaje Máquina 4. La Memoria 5. Sistemas de Entrada/Salida 6. Segmentación (Pipeline) 7. Memoria Caché 8. Arquitecturas RISC Arquitectura de
Arquitectura e Ingeniería de Computadores
Arquitectura e Ingeniería de Computadores Tema 2 Procesadores Segmentados Curso 2-22 Contenidos Introducción: Recordatorio MPIS-DLX Excepciones y control Segmentación Riesgos: Estructurales, de datos y
Ejercicios del tema 4. El procesador
jercicios del tema 4. l procesador jercicio 1. Considere un procesador de 32 bits con una frecuencia de reloj de 500 MHz con la estructura del mostrado en el jercicio 3. La memoria se direcciona por bytes
Sección de procesamiento: El camino de datos
Sección de procesamiento: El camino de datos Montse Bóo Cepeda Este trabajo está publicado bajo licencia Creative Commons Attribution- NonCommercial-ShareAlike 2.5 Spain. Estructura del curso 1. Evolución
Dpto. Arquitectura y Tecnología de Computadores SPD. Práctica 5. pág 1
SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 5. PROCESADORES SUPERESCALARES: PLANIFICACIÓN DINÁMICA. OBJETIVOS. En esta práctica se trata de estudiar, por un lado, el aumento de prestaciones que
Procesadores Vectoriales
Procesadores Vectoriales Curso 2011-2012 Por qué procesamiento vectorial? La segmentación tiene límites: Si se aumenta mucho el número de etapas, baja el ciclo de reloj, pero aumentan las dependencias.
Paralelismo en monoprocesadores. Procesadores Superescalares
Paralelismo en monoprocesadores Procesadores Superescalares Profesor: Mag. Marcelo Tosini Cátedra: Arquitectura de Computadoras y técnicas Digitales Carrera: Ingeniería de Sistemas Ciclo: 4º año 1 Procesadores
Optimizaciones avanzadas de memoria caché
de memoria caché Arquitectura de Computadores J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Grupo ARCOS Departamento de Informática
Multiplicación de matrices con DLX
Multiplicación de matrices con DLX Universidad de Salamanca Depto. Informática y Automática Arquitectura e Ingeniería de computadores Trabajo presentado por: Sergio Garrido Chamorro Santiago González Pérez
ARQUITECTURA VON NEUMANN
ARQUITECTURA VON NEUMANN Computador bus de datos bus de direcciones bus de control Usuario y aplicaciones Lenguajes de alto nivel Sistema operativo Unidad Central de Proceso Memoria principal Unidad de
Unidad Nº II Capacidad de la unidad central. de procesamiento. Instituto Universitario Politécnico. Santiago Mariño
Instituto Universitario Politécnico Santiago Mariño Unidad Nº II Capacidad de la unidad central de procesamiento Organización de instrucción de máquina Cada instrucción requiere la información que necesita
