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? – 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 • Soluciones 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 (Tev) y tasa de iniciación (IR) • No todas las instrucciones durarán los mismo EX Sumador c.f. ID MEM Multiplicador Divisor WB DISCA–4 IF 1. Operadores multiciclo (3) • Operadores añadidos al DLX – Sumador/restador de coma flotante.Tev=4 IR=1por ciclo – Multiplicador entero/coma flotante.Tev=7 IR=1 por ciclo – Divisor entero/coma flotante. Tev=24 IR=1 por 24 ciclos • La fase MEM está vacía en operaciones multiciclo • Ejemplo: add R1,R2,R3 addd F0,F2,F4 multd F6,F8,F10 multd F4,F9,F10 Divd F8,F12,F22 IF ID EX ME WB IF ID A1 A2 A3 A4 ME WB IF ID M1 M2 M3 M4 M5 M6 M7 ME WB IF ID M1 M2 M3 M4 M5 M6 M7 ME WB IF ID DIV DIV DIV DIV DIV DIV DIV … 1. Op. Multiciclo: DLX EX MEM A1 A2 A3 A4 IF ID WB M1 M2 M3 M4 M5 M6 M6 DIV (24 ciclos) DISCA–6 • Necesidad de nuevos registros entre etapas • Multiplexor en la entrada de WB • ¿Aparecen nuevos riesgos? 2. Dependencias: definición • El problema: Sin multicilo Æ pocos stall Æ CPI ≈ 1 Con multiciclo Æ muchos stall Æ CPI >> 1 – Posibilidad de solapamiento en las secuencias de instrucciones. – Depende de si las instrucciones son independientes. ILP↑ Æ pocos conflictos Æ pocos stall Æ CPI ↓ DISCA–7 • Debemos conseguir bajar al máximo el CPI • Paralelismo a nivel de instrucción (ILP) 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 – 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 • Dependencias estructurales. 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. – 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 • Inconvenientes 2.2 Dependencias Estructurales EX MEM WB Enteros A1 A2 A3 A4 ID M1 M2 M3 M4 M5 M6 M6 WB Flotantes DIV (24 ciclos) DISCA–11 IF 2.2 Dependencias de Datos – 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 … lp: LD F0, 0(R1) – Ejemplo. ADDD F4,F0,F2 SD 0(R2),F4 … DISCA–12 • Dadas dos instrucciones i y j, j lógicamente después de i, existe una dependencia de datos entre ellas si: 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: DISCA–13 – Antidependencia. La instrucción j escribe sobre un elemento que i lee. – Dependencia de salida. Las dos instrucciones escriben sobre el mismo elemento. 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. 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 ; Dep. Nombre 2.5 Dependencias: Resumen Dependencia De datos Antidependencia De salida De Control Riesgos posibles RAW WAR WAW De Control DISCA–15 • Indican la posibilidad de un riesgo. • ILP ↓ Æ Presencia simultanea de instrucciones dependientes en unidad segmentada Æ riesgos↑ • Riesgos↑ Æciclos paradas ↑ Æ CPI ↑ 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 – 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 • Idea: solapar ejecución bloques básicos. 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. ADDD F10,F0,F8 MULTD F12,F8,F14 DISCA–17 • 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 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 – HW más complicado DISCA–18 • Inconvenientes: 3.1 Algoritmo de Tomasulo – 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 • Objetivos: 3.1 Algoritmo de Tomasulo(2) Unidad de ejecución entera EX MEM ID Load/Store Flotante A1 A2 A3 A4 WB Flotantes Issue M1 M2 M3 M4 M5 M6 M6 DIV (24 ciclos) Unidad de ejecución de coma flotante DISCA–20 IF WB Enteros 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 – Si el operador no disponible Æesperar. – Operando no disponible Æesperar. – Operador libre, operandos disponibles Æejecutar. • ¿Dónde esperan las instrucciones? DISCA–21 • Etapa ISSUE: implementación algoritmo. 3.1 Algoritmo de Tomasulo(3) • ¿Dónde esperan las instrucciones? • 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 – ¿En estapa Issue? • NO • SI, pero… • Falla cuando otra instrucción pide mismo operador – ¿En estructura de datos? • OK DISCA–22 – ¿En operador? 3.1 Algoritmo de Tomasulo(4) Memoria COLA DE INSTRUCCIÓNES Registros FP VALOR TAG-VALOR-DIRECCIÓN VALOR-DIRECCIÓN F1 F2 … ETAPA ISSUE BUS COMÚN VALOR VALOR S/R TAG VALOR VALOR M/D DISCA–23 TAG 3.1 Algoritmo de Tomasulo(5) – 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 • Todos las transferencias se hacen etiquetando los datos a transferir con un nombre (TAG). • Elementos de la ruta de datos: 3.1 Algoritmo de Tomasulo: Ejemplo ejecución – 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 … BUS COMÚN TAG VALOR VALOR M/D MARCA_1_ 234567 DISCA–25 • Las instrucciones se marcan con un TAG. • Se leen los operandos Tomasulo: Ejemplo 2 MULTF F1,F2,F3 f2=12.7 f3=33.12 op_1 MULTIP. DIVF F2,F1,F4 12.7 33.12 op_1 F1 = op_1 op_1 F4=127.12 op_2 F2 = op_2 DIVISOR MULTIP. 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 SUMADOR MULTIP. DIVISOR F1 = op_3 DISCA–26 F2 = op_2 4.Aumento prestaciones • Tiempo de ejecución de un programa: Te = I × CPI × Tclk • Segmentación Æ CPI ≈1 • Si quiero reducir Te DISCA–27 – Reducir el valor de CPI Æ Superescalares – Reducir instrucciones (I) Æ VLIW – Reducir Tclk Æ Supersegmentados 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. – Se extrae el máximo ILP de los programas. – Compatibles a nivel binario con proc. escalares DISCA–28 • Gestión dinámica de instrucciones. 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. Mem1 Mem2 Aritmet_CF1 Aritmet_CF2 Entera/Salto DISCA–30 – Riesgos de datos y de control resueltos por el compilador. – El HW no aplica gestión dinámica. – Ejemplo de formato de instrucción: 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. Mem1 Mem2 LD F0,0(R1) LD F6,-8(R1) • Código convencional: loop: LD F0,0(R1) ADDD F4,F0,F2 SD 0(R1),F4 SUB R1,R1,#8 BNEZ R1,loop Aritmet_CF1 Aritmet_CF2 Entera/Salto LD F10,-16(R1) LD F14,-24(R1) LD F18,-32(R1) LD F22,-40(R1) ADDD F4,F0,F2 LD F26,-48(R1) ADDD F8,F6,F2 ADDD F12,F10,F2 ADDD F16,F14,F2 ADDD F20,F18,F2 ADDD F24,F22,F2 SD 0(R1),F4 SD –8(R1),F8 ADDD F28,F26,F2 SD –16(R1),F12 SD –24(R1),F16 SD –32(R1),F20 SD –40(R1),F24 SUB R1,R1,#56 SD –48(R1),F4 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. • Necesita menos HW que superescalar. • Menor Tclk Æ 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 – t = grado de supersegmentación. Ejemplos máquinas reales Tipo Detección Comentarios Reordenación riesgos adicionales HW Estática 8 etapas Ejemplos MIPS R4000 Pentium 4 Dinámica HW Estática Ejecución en Sun UltraSparcII orden Sun UltraSparcIII Dinámica HW Dinámica Fuera de IBM Power2, orden en PowerPC algunas op. Superescalar Dinámica HW Dinámica y Reordenación Pentium III y 4 especulación MIPS R10K y (Especulación) especulación Athlon, Opteron PowerPC VLIW Estática SW Estática Sin riesgos Trimedia, i860, entre inst. Transmeta Crusoe EPIC Estática SW/HW Estática Compilador Itanium Itanium2 (Excepciones) (Excepciones) marca riesgos DISCA–33 Super segmentado Superescalar (estático) Superescalar (Dinámico) Siguiente Instrucción Estática • 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 Bibliografía