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 1. Operaciones multiciclo 2. Dependencias 3. Gestión dinámica de instrucciones 3.1 Algoritmo de Tomasulo 4. Aumento de prestaciones 4.1 Procesadores superescalares 4.2 Procesadores VLIW 4.3 Procesadores supersegmentados 2
1. Operaciones multiciclo PROBLEMA: Instrucciones enteras complejas (mult y div) Instrucciones en coma flotante Necesitan fases de ejecución mucho más largas Cómo segmentar entonces? Soluciones Aumentar periodo de reloj (penaliza otras fases) Más HW para mejorar fase EX (no siempre posible) Permitir fase de EX con varios ciclos MULTICILO DISCA 3
1. Operaciones multiciclo (2) Múltiples operadores Nuevas instrucciones se ejecutan mejor en HW específico Poner operadores específicos para las operaciones. En la fase de ID se decide que operador se encarga de la ejecución. Operadores: convencionales o segmentados. Parámetros: tiempo de evaluación (T ev ) y tasa de iniciación (IR) No todas las instrucciones durarán los mismo EX Sumador c.f. IF ID Multiplicador Divisor MEM WB DISCA 4
1. Operadores multiciclo (3) Operadores añadidos al DLX Sumador/restador de coma flotante.t ev =4 IR=1por ciclo Multiplicador entero/coma flotante.t ev =7 IR=1 por ciclo Divisor entero/coma flotante. T ev =24 IR=1 por 24 ciclos La fase MEM está vacía en operaciones multiciclo Ejemplo: add R1,R2,R3 IF ID EX ME WB addd F0,F2,F4 IF ID A1 A2 A3 A4 ME WB multd F6,F8,F10 IF ID M1 M2 M3 M4 M5 M6 M7 ME WB multd F4,F9,F10 IF ID M1 M2 M3 M4 M5 M6 M7 ME WB Divd F8,F12,F22 IF ID DIV DIV DIV DIV DIV DIV DIV
1. Op. Multiciclo: DLX EX MEM A1 A2 A3 A4 IF ID M1 M2 M3 M4 M5 M6 M6 WB DIV (24 ciclos) Necesidad de nuevos registros entre etapas Multiplexor en la entrada de WB Aparecen nuevos riesgos? DISCA 6
2. Dependencias: definición El problema: Sin multicilo pocos stall CPI 1 Con multiciclo muchos stall CPI >> 1 Debemos conseguir bajar al máximo el CPI Paralelismo a nivel de instrucción (ILP) Posibilidad de solapamiento en las secuencias de instrucciones. Depende de si las instrucciones son independientes. ILP pocos conflictos pocos stall CPI DISCA 7
2. Dependencias: Clasificación Dos instrucciones son independientes si pueden ejecutarse simultáneamente son ningún problema SE PUEDEN REORDENAR Tipos de dependencias: Estructurales. Depende del HW y del tipo de operación. De Datos. Dependen de las operaciones y los datos. De Nombre. Dependen de las operaciones y los datos. De Control. Dependen de las operaciones de salto. DISCA 8
2.1 Dependencias Estructurales Dependencias estructurales. Dos operaciones utilizan el mismo elemento de ejecución (operador). No generan riesgos entre operaciones DLX no multiciclo. Sólo aparecen riesgos con operaciones tipo DIV. En DLX: insertar ciclos de espera (retrasa todas las operaciones). Escritura simultáneas en banco de registros. Ejemplo: MULD y ADDD Se puede evitar utilizando banco de registros con más de un puerto de escritura muy caro En DLX: dos bancos de registros (uno para enteros y otro para coma flotante). DISCA 9
2.1 Dependencias Estructurales Ventajas doble banco de registros: No se producen riesgos estructurales entre operaciones. Se duplica el número total de registros, sin complicar la lógica de decodificación, ni aumentar el tiempo de acceso. Inconvenientes La operaciones enteras MUL y DIV tienen que tener sus operandos en banco de reg. de coma flotante Son necesarias operaciones para transferir datos entre registros. Se limita el número de registros de cada tipo DISCA 10
2.2 Dependencias Estructurales EX MEM WB Enteros A1 A2 A3 A4 IF ID M1 M2 M3 M4 M5 M6 M6 WB Flotantes DIV (24 ciclos) DISCA 11
2.2 Dependencias de Datos Dadas dos instrucciones i y j, j lógicamente después de i, existe una dependencia de datos entre ellas si: i produce un resultado usado por j. Existe una instrucción k entre i y j y existe dependencia de datos i k j. Esta cadena puede ser tan larga como el propio programa Ejemplo. lp: LD F0, 0(R1) ADDD F4,F0,F2 SD 0(R2),F4 DISCA 12
2.3 Dependencias de Nombre Dos instrucciones utilizan el mismo registro o posición de memoria (elemento). No hay flujo de datos entre ellas. Dos instrucciones i y j, j lógicamente después de i, pueden tener: Antidependencia. La instrucción j escribe sobre un elemento que i lee. Dependencia de salida. Las dos instrucciones escriben sobre el mismo elemento. DISCA 13
2.4 Dependencias de Control Es la ordenación de las instrucciones respecto a una instrucción de salto previa. TODA instrucción tiene una dependencia de control con algún salto. ; Dep. Nombre LD F0,0(R1) ADDD F4,F0,F2 SD 0(R1),F4 LD F0,-8(R1) ADDD F4,F0,F2 ;Dep. Control BEQZ R1,exit LD F10,0(R1) ADDD F4,F10,F2 SD 0(R1),F4 exit: DISCA 14
2.5 Dependencias: Resumen Indican la posibilidad de un riesgo. ILP Presencia simultanea de instrucciones dependientes en unidad segmentada riesgos Riesgos ciclos paradas CPI Dependencia De datos Antidependencia De salida De Control Riesgos posibles RAW WAR WAW De Control DISCA 15
2.5 Dependencias: Conclusiones Objetivo: aumentar ILP reducir CPI Bloque básico: secuencia de instrucciones entre dos instrucciones de salto. Hay suficiente ILP en un bloque básico? 15% de saltos 6 ó 7 instrucciones por bloque Instrucciones dentro de un bloque pueden tener dependencias. Loop-level: solapar la ejecución de iteraciones de bucles Idea: solapar ejecución bloques básicos. Gestión estática el compilador reordena el código. Gestión dinámica el HW cambio el orden de ejecución de las instrucciones. DISCA 16
3. Gestión dinámica de instrucciones El HW aumenta el ILP reordenando la ejecución de las instrucciones: Las instrucciones independientes se ejecutan lo más simultáneamente posible. Las instrucciones dependientes se ejecutan en orden. Hasta ahora, si una instrucción se para, también se paran todas las posteriores, aún cuando esas instrucciones sean independientes de las que se encuentran en la unidad. Ejemplo. DIVD F0,F2,F4 ADDD F10,F0,F8 MULTD F12,F8,F14 DISCA 17
3. Gestión dinámica de instrucciones (2) IDEA: el HW detecta cuando una instrucción no tiene dependencias y la ejecuta aunque haya otra parada. Ventajas Compilador más sencillo. Soluciona dependencias desconocidas en compilación. No hay que optimizar código compatibilidad binaria Inconvenientes: HW más complicado DISCA 18
3.1 Algoritmo de Tomasulo Objetivos: Procesar las instrucciones en los operadores a la misma velocidad con la que las suministra la etapa ID CPI 1 Ejecutar simultáneamente instrucciones independientes. Detectar las instrucciones dependientes y gestionarlas correctamente. Permitir que las instrucciones independientes se ejecuten antes que instrucciones dependientes paradas. DISCA 19
3.1 Algoritmo de Tomasulo(2) Unidad de ejecución entera EX MEM WB Enteros IF ID Load/Store Flotante Issue A1 A2 A3 A4 M1 M2 M3 M4 M5 M6 M6 WB Flotantes DIV (24 ciclos) Unidad de ejecución de coma flotante DISCA 20
3.1 Algoritmo de Tomasulo(3) Aplicar algoritmo sólo a multiciclo Unidad load/store coma flotante: Datos de mayor tamaño. Detección de dependencias gestión dinámica posible Fallos de cache no afectan unidad entera y otras instrucciones Etapa ISSUE: implementación algoritmo. Si el operador no disponible esperar. Operando no disponible esperar. Operador libre, operandos disponibles ejecutar. Dónde esperan las instrucciones? DISCA 21
3.1 Algoritmo de Tomasulo(3) Dónde esperan las instrucciones? En estapa Issue? NO En operador? SI, pero Falla cuando otra instrucción pide mismo operador En estructura de datos? OK Ejemplo1: DIVD F0,F2,F4 ADDD F10,F0,F8 MULTD F12,F6,F8 Ejemplo2: DIVD F0,F2,F4 ADDD F10,F0,F8 ADDD F18,F2,F4 MULTD F12,F6,F10 DISCA 22
3.1 Algoritmo de Tomasulo(4) Memoria COLA DE INSTRUCCIÓNES Registros FP TAG-VALOR-DIRECCIÓN VALOR-DIRECCIÓN F1 VALOR F2 ETAPA ISSUE BUS COMÚN TAG VALOR VALOR TAG VALOR VALOR S/R M/D DISCA 23
3.1 Algoritmo de Tomasulo(5) Todos las transferencias se hacen etiquetando los datos a transferir con un nombre (TAG). Elementos de la ruta de datos: Cola de instrucciones antes de la etapa ISSUE. Banco de registros coma flotante Operadores y estaciones de reserva. Cada entrada contiene una instrucción en espera para su ejecución. (Operadores virtuales) Tampones comunicación con memoria. Bus común. Se transfiere siempre dato y TAG asociado. Todos los elementos ven el TAG y deciden si necesitan coger el dato transferido. DISCA 24
3.1 Algoritmo de Tomasulo: Ejemplo ejecución Las instrucciones se marcan con un TAG. Se leen los operandos VALOR o TAG Se espera a tener todos los operandos y el operador. Ejecución. Escritura en BUS del TAG de la instrucción junto con su resultado. Todos los que esperan el resultado cogen el valor NOMBRE VALOR ó TAG F1 MARCA_1_ 234567 F2 TAG VALOR VALOR M/D BUS COMÚN MARCA_1_ 234567 DISCA 25
Tomasulo: Ejemplo 2 MULTF F1,F2,F3 f2=12.7 f3=33.12 op_1 MULTIP. F1 = op_1 DIVF F2,F1,F4 12.7 33.12 op_1 op_1 F4=127.12 op_2 F2 = op_2 MULTIP. DIVISOR F1 = op_1 ADDF F1,F2,F3 op_2 F3=33.12 op_3 12.7 33.12 op_1 op_1 127.12 op_2 F2 = op_2 SUMADOR MULTIP. DIVISOR F1 = op_3 DISCA 26
4.Aumento prestaciones Tiempo de ejecución de un programa: T e = I CPI T clk Segmentación CPI 1 Si quiero reducir T e Reducir el valor de CPI Superescalares Reducir instrucciones (I) VLIW Reducir T clk Supersegmentados DISCA 27
4.1 Superescalares Se lanzan m instrucciones en un ciclo de reloj. Grado del computador: m Implicaciones: Varios accesos simultáneos a memoria (IF,ME) Decodificación de varias instrucciones Ejecución de varias instrucciones Accesos simultáneos al banco de registro. Gestión dinámica de instrucciones. Se extrae el máximo ILP de los programas. Compatibles a nivel binario con proc. escalares DISCA 28
4.1 Superescalares (2) PROBLEMA: HW demasiado caro COMPUTADOR SUPERESCALAR NO UNIFORME Se imponen limitaciones en el tipo de instrucciones que se pueden lanzar a la vez. Ejemplos: Comp. Superescalar de grado 2: 2 instrucciones enteras 1 entera + 1 coma flotante 1 load/store + 1 aritmética 1 salto + 1 no de salto Aparecen riesgos estructurales No siempre es posible lanzar m instrucciones Optimización del código fundamental para obtener las máximas prestaciones Compatibilidad binaria poco eficiente DISCA 29
4.2 Procesadores VLIW VLIW: Very long Instruction Word. Se codifican varias operaciones un una palabra. Se reduce el número de instrucciones a ejecutar El compilador es el encargado de extraer ILP. Las palabras tienen un campo por cada uno de los tipos de operación que pueden se simultaneas. Riesgos de datos y de control resueltos por el compilador. El HW no aplica gestión dinámica. Ejemplo de formato de instrucción: Mem1 Mem2 Aritmet_CF1 Aritmet_CF2 Entera/Salto DISCA 30
4.2 Procesadores VLIW(2) Si el compilador es malo o el código tienen una ILP bajo, el tamaño del código generado es mucho mayor. No hay compatibilidad binaria. Código convencional: loop: LD F0,0(R1) ADDD F4,F0,F2 SD 0(R1),F4 SUB R1,R1,#8 BNEZ R1,loop Mem1 LD F0,0(R1) LD F10,-16(R1) LD F18,-32(R1) LD F26,-48(R1) SD 0(R1),F4 SD 16(R1),F12 SD 32(R1),F20 SD 48(R1),F4 Mem2 LD F6,-8(R1) LD F14,-24(R1) LD F22,-40(R1) SD 8(R1),F8 SD 24(R1),F16 SD 40(R1),F24 Aritmet_CF1 ADDD F4,F0,F2 ADDD F12,F10,F2 ADDD F20,F18,F2 ADDD F28,F26,F2 Aritmet_CF2 ADDD F8,F6,F2 ADDD F16,F14,F2 ADDD F24,F22,F2 Entera/Salto SUB R1,R1,#56 BNEZ R1,loop
4.3 Procesadores supersegmentados Se divide cada etapa en t subetapas. Se disminuye el tiempo de ciclo manteniendo la cota máxima de CPI. t = grado de supersegmentación. Necesita menos HW que superescalar. Menor T clk mayor sobrecarga potencial de los registros intermedios y desfase de reloj (clock skew). Se super-segmentan sólo las etapas consideradas como cuello de botella. Versiones superescales-supersegmentadas. DISCA 32
Ejemplos máquinas reales Tipo Siguiente Instrucción Detección riesgos Reordenación Comentarios adicionales Ejemplos Super segmentado Estática HW Estática 8 etapas MIPS R4000 Pentium 4 Superescalar (estático) Dinámica HW Estática Ejecución en orden Sun UltraSparcII Sun UltraSparcIII Superescalar (Dinámico) Dinámica HW Dinámica Fuera de orden en algunas op. IBM Power2, PowerPC Superescalar (Especulación) Dinámica HW Dinámica y especulación Reordenación y especulación Pentium III y 4 MIPS R10K Athlon, Opteron PowerPC VLIW Estática SW Estática Sin riesgos entre inst. Trimedia, i860, Transmeta Crusoe EPIC Estática (Excepciones) SW/HW Estática (Excepciones) Compilador marca riesgos Itanium Itanium2 DISCA 33
Bibliografía J.L. Hennesy, D.A. Patterson, Computer Architecture: A Quantitave Approach, 3ª edición, Morgan Kauffmann Publishers, 2002. William Stallings, Organización y Arquitectura de Computadores, 5ª Edición, Prentice-Hall 2000 D.A. Patterson, J.L. Hennesy, Estructura y diseño de computadores: interficie circuitería/programación, Ed. Reverté, 2000 M. Johnson, Superescalar Microprocessor Design, Prentice-Hall, 1999 http://www.transmeta.com/ DISCA 34