Arquitectura de Computadores. Tema 11. Pipelining Avanzado

Documentos relacionados
Arquitectura de Computadores II Clase #16

Procesadores segmentados. El DLX.

Arquitectura de Computadores

PIPELINING: Antes de adentrarnos en el tema, veremos una analogía de un pipeline:

Pipelining o Segmentación de Instrucciones

Pipeline (Segmentación)

Arquitectura de Computadores

Arquitectura de Computadoras. Clase 5 Posibles soluciones a atascos

Arquitectura Segmentada: Conceptos básicosb

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Qué es Pipelining? Es una técnica de implementación en la que se superpone la ejecución de varias instrucciones.

Tema 2. Diseño del repertorio de instrucciones

Plataformas de soporte computacional: arquitecturas avanzadas,

TEMA 2: PARALELISMO INTERNO EN SISTEMAS COMPUTADORES SEGMENTACION

Planificación estática

Ingeniería Informática. Ampliación de Estructura de Computadores. Curso Introducción a la segmentación de Instrucciones.

ARQUITECTURA DE COMPUTADORAS

Procesadores Superescalares: Paralelismo Implícito a Nivel de Instrucción

Capitulo V Administración de memoria

Arquitectura t de Computadores Clase 10: Diseño del microprocesador monociclo pt.2

Ejercicios. 5.2 [5] < 5.3> Este ejercicio es similar al 5.1, pero ahora considere los fallos causados por permanecer en 1 (la señal es siempre 1).

Capítulo 4 Gestión de memoria

Organización Básica de un Computador y Lenguaje de Máquina

Arquitectura de Computadores

Circuitos Digitales II y Laboratorio Fundamentos de Arquitectura de Computadores

Tema 7: Esquema del Funcionamiento de una Computadora. Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

Procesadores Superescalares: Paralelismo Explícito a Nivel de Instrucción

PRACTICA 2 Ejercicio 2

UNIDAD 5: Mejora del rendimiento con la segmentación.

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato

3.8 Construcción de una ALU básica

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.

Estructura de Computadores

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

1. Objetivo y evolución de los procesadores ILP.

Microarquitectura: DISEÑO DE SISTEMAS DIGITALES EL-3310 I SEMESTRE MICROARQUITECTURA: FLUJO DE DATOS Y CONTROL DEL MICROPROCESADOR

COMPUTADORES SEGMENTADOS (DLX)

Tema 4: Diseño de un microprocesador

Pipeline o Segmentación Encausada

PROCESADORES DE EMISIÓN MÚLTIPLE

TEMA 3 PLANIFICACIÓN O REORDENAMIENTO (SCHEDULING) DE INSTRUCCIONES ÍNDICE

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

La memoria principal. Los subsistemas de E/S. Los buses del sistema

Introducción a Computación

3. SEGMENTACIÓN DEL CAUCE

Arquitectura de Computadores. Tema 4 PROCESADORES SEGMENTADOS

Capítulo 4 Procesos con estructuras de repetición

UNIDAD 4: El procesador: Camino de los datos y Control.

- La implementación es responsable de: Los ciclos de reloj por instrucción (CPI). La duración del ciclo de reloj.

Centro de Capacitación en Informática

Tema 5 Diseño del Set de Instrucciones (ISA) Arquitectura de Computadoras

PROCESADORES DE EMISIÓN MÚLTIPLE

Ingeniería Informática. Ampliación de Estructura de Computadores. Curso

Créditos académicos. Ignacio Vélez. Facultad de Ingeniería Industrial. Politécnico Grancolombiano

ISA (Instruction Set Architecture) Arquitectura del conjunto de instrucciones

Arquitecturas RISC. Arquitectura de Computadoras y Técnicas Digitales - Mag. Marcelo Tosini Facultad de Ciencias Exactas - UNCPBA

Sistemas operativos. Tema 7: Gestión n de memoria

Tema 1: PROCESADORES SEGMENTADOS

Arquitectura e Ingeniería de Computadores

Tema 5: Sistemas Monetarios Internacionales

Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos).

Arquitecturas CISC y RISC

Organizacion del Computador

LABORATORIO DE ARQUITECTURA DE COMPUTADORES. I. T. I. SISTEMAS / GESTIÓN GUÍA DEL ALUMNO

Organización de Computadoras. Turno Recursantes Clase 8

Computación I Representación Interna Curso 2011

TEMA 5: HOJAS DE CÁLCULO. Edición de hojas de cálculo con OpenOffice Calc

Arquitectura de Computadores

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

MICROPROCESADOR. Multiciclo

Test: Conteste exclusivamente en HOJA DE LECTURA ÓPTICA. No olvide marcar que su tipo de examen es A.

Este programa mueve cada motor de forma independiente, y cuando termina una línea pasa a la siguiente.

Usando los disparadores de la base de datos con el Blended Agent para hacer el proceso específico a la aplicación

HERRAMIENTAS DE ACCESS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

GESTIÓN Y CONTROL DEL DESARROLLO E IMPLANTACIÓN DE APLICACIONES

MATERIAL 2 EXCEL 2007

INTRODUCCIÓN. Definiciones ORDENADOR (RAE 1992): En esta asignatura computador y ordenador tiene el mismo significado

Fundamentos de los Sistemas Operativos (GII) Examen Final 15 de Junio de SEGUNDA PARTE - SOLUCIONES

PROCEDIMIENTO DE ENVÍO DE PLANILLAS A TURISTOUR

Informática Bioingeniería

Sistemas de Operación II

Examen de Arquitectura de Computadores 2 22 de febrero del 2011

Tema 4. Gestión de entrada/salida

1.2 Análisis de los Componentes. Arquitectura de Computadoras Rafael Vazquez Perez

7. Manejo de Archivos en C.

Capítulo 0. Introducción.

Tema 7: Procesadores superescalares

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

Requerimientos principales de un sistema operativo

Estructuras de Datos y Algoritmos. Árboles de Expresión

PRÁCTICAS DE GESTIÓN GANADERA:

Selección de los puntos de montaje

PREGUNTAS FRECUENTES SOBRE LOWESLINK DE LOWE S MÉXICO

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES.

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Arquitectura de Computadores II Clase #5

Conclusiones. Particionado Consciente de los Datos

UNIDAD 1. LOS NÚMEROS ENTEROS.

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Transcripción:

Arquitectura de Computadores Tema 11 Pipelining Avanzado Eduardo Daniel Cohen dcohen@arnet.com.ar http://www.herrera.unt.edu.ar/arqcom 1

En qué se pone difícil Pipelining? Excepciones: hay 5 instrucciones ejecutándose en nuestro caso. Cómo parar el pipeline? cómo recomenzarlo? Qué Instrucción es responsable de la excepción? EtapaExcepciones que pueden ocurrir por: IF Falla de Página; acceso no alineado a Memoria; violación de protecciones de memoria. ID Opcode no definido o ilegal. EX Excepción Aritmética (overflow por ej.) MEM Falla de Página; acceso no alineado a Memoria; violación de protecciones de memoria Load con falla de pag. de datos, Add con falla de pág de instruc? Puedo tener más de una y detectar una posterior primero que otra! Solución 1: vector de instrucción por instruccion, revisar en últ. etapa Solución 2: terminar todo lo incompleto por Sw y ver las excepciones. Por suerte escribimos sólo al final. 2

Qué lo hace más fácil? El diseño del Set de Instrucciones MIPS óptimo para Segmentación Todas las instrucciones tienen la misma longitud. Pocos formatos diferentes. Posición fija de operandos: RF en paralelo con ID. Operandos a Memoria solo aparecen en Loads y Stores. No aparecen etapas de búsquedas de dátos en M antes de Exec. Para el caso del Pentium. Largo variable de instrucción: hasta 16 palabras. Etapa Fetch de largo variable. Pocas instrucciones simples responsables 90% tiempo de ejec. Se traducen en ID: 1 a 4 microinstrucciones. Las microinstrucciones se ejecutan por Segmentación. Las instrucciones complejas se traducen por Microprograma. Pero son minoría. 3

Qué se hace con Interrupciones y Traps? Interrupciones Externas: Esperar que se vacíe el Pipeline, Cargar PC con la dirección de la Interrupción. Fallos (durante una/s instrucción, reparable) Problema: podría darse la excepción en una instrucción que siga a un Salto Retardado. Puede ser necesario guardar varios PCs. Llevar información del valor de PC con cada instrucción en el Pipe. Detectar e incorporar la causa a la información de la instrucción en el Pipe. Vaciar todas las instrucciones posteriores (izquierda) hasta que la excepción llegue al final del Pipe. Que la instrucción con fallo no provoque cambio de estado en etapas posteriores. 4

Manejo de Excepciones IAU Instruction Address Update npc Regs B alu S D mem I mem lw $2,20($5) A cte op rw PC detectar bad instruction address detectar bad instruction detectar overflow detectar bad data address m Regs Permitir que la excepción se realice 5

Solución: Congelar arriba y burbujear abajo Regs B IAU npc I mem op rw rs rt A im n op rw congelar PC burbuja No comenzar nuevas instrucciones. Que la inst nueva ni las de arriba hagan nada. Vaciar y realizar excep. alu S n op rw D mem m Regs n op rw 6

Y..., se pone más difícil cuando hay: Instrucciones y Modos de Direcciones Complejos (CISC). Modos de direccionamiento: Autoincremento pre provoca cambios en los registros durante la etapa de ejecución. Ya no se escribe solo al final, aparecen riesgos de escritura - Write After Read (WAR): una posterior escribe antes que la anterior lea, lee mal. - Write After Write (WAW): write ocurre en orden equivocado dejando datos equivocados en los registros. - (Los riesgos de datos ya analizados se llaman RAW, Read After Write una posterior lee antes que la actual escriba) Instrucciones de Movimiento de Bloque de Memoria a Memoria. Fallas múltiples de páginas. Está suficientemente difícil? 7

Pero en MIPS también hay más dificultades... Punto Flotante: tiempo de ejecución largo Además se diseña la unidad de punto flotante para que haya solapamiento y funcione en paralelo. FP Instruction Latency Initiation Rate (MIPS R4000) Add, Subtract 4 3 Multiply 8 4 Divide 36 35 Square root 112 111 Negate 2 1 Absolute value 2 1 FP compare 3 2 División y Raíz Cuadrada duran 10 a 30 veces más que Add Aparecen riesgos WAR y WAW ya que la duración del pipeline no es la misma para todas las instrucciones (lw y sw se ejecutan más rápido y pueden terminar antes siendo posteriores, por ej.) 8

Riesgos de la Segmentación en General I-Fet ch DCD MemOpFetch OpFetch Exec Store Riesgo Estructural IFetch DCD I-Fet ch DCD OpFetch Jump Riesgo de Control IFetch DCD IF DCD EX Mem WB IF DCD EX Mem WB IF DCD EX Mem WB RAW (read after write) Riesgo de Datos WAW Riesgo de Datos (write after write) IF DCD OpF Ex Mem IF DCD OF Ex WB WAR Riesgo Datos (write after read) 9

Algoritmo para Detección de Riesgos Supongamos que la instrucción i esté por comenzar y que una instrucción precedente j ya esté en el pipeline (i sucede a j). Rregs ( i ) = Registros leídos por la instrucción i Wregs ( i ) = Registros escritos por la instrucción i Un riesgo RAW ocurrirá en el reg. ρ si ρ : ρ Rregs( i ) Wregs( j ) Mantener anotaciones de las escrituras pendientes y comparar con los registros operandos de la instrucción actual. SCOREBOARD. Cuando inicie una instrucción, reservar su registro destino. Cuando se complete una instrucción, elimine su reserva. - Demorar toda instrucción hasta que no haya riesgo. Un riesgo WAW ocurrirá en el reg. ρ si ρ, ρ Wregs( i ) Wregs( j ) Un riesgo WAR ocurrirá en el reg. ρ si ρ, ρ Wregs( i ) Rregs( j ) 10

Eliminación de Riesgos de Datos mediante Diseño Supongamos que las instrucciones se inicien en orden secuencial. Eliminación WAW: si la escritura en un recurso se realiza en la misma etapa para todas las instrucciones, y todas las etapas duran lo mismo, entonces no pueden haber riesgos WAW.. Prueba: Las escrituras están en el mismo orden que las instrucciones. I R/D E W I R/D E W I R/D E W Eliminación WAR: si en todas las instrucciones las lecturas de un recurso ocurren en una etapa anterior que las escrituras en ese mismo recurso, entonces no pueden haber riesgos WAR. Prueba: Una instrucción sucesora debe iniciarse posteriormente, con mayor razón escribirá solo después que se hayan realizado las lecturas de la instrucción actual. 11

Primera generación de Pipelines RISC Todas las instrucciones siguen el mismo orden del pipeline ( ordenamiento estático ). Las escrituras de registro se realizan en la última etapa: Se evitan riesgos WAW. Todos las lecturas se hacen al iniciar. Se evitan riesgos WAR. Memoria de Instrucciones y de Datos Independientes. Elimina riesgos de memoria (estructurales). Los riesgos de control se resuelven con saltos retardados (1T) Los riesgos RAW se resuelven por anticipacion, excepto en resultados de load que son retardados (1T). Gran uso de pipelining con muy poco costo y bastante simplicidad. 12

Resumen de Bases de Pipelining I Factor de Aceleración Pipe en relación a Ciclo Unico. L Latencia, A Aceleración, T(p) Periodo de Pipe, b paradas promedio A= t(cu) / t(pipe) t(cu) = L(cu) t(pipe) = [T(p) x (1+b)] T(p) = L(p) / n A = [n / (1+b)] * [L(cu) / L(p)] OJO: T(p) no es L(cu) / n. T(p) es la duraciòn de la etapa cuello de botella más retardo latch intermedia. 13

Resumen de Bases de Pipelining II Los riesgos limitan la performance de los procesadores: Estructurales: necesitan más recursos de Hw. De Datos: necesitan anticipacion y reordenamiento por Sw De Control: evaluación de condición y actualización de PC anticipada, salto retardado y reordenamiento por Sw. Incrementar la longitud del pipe incrementa el impacto de los riesgos. Los compiladores son clave en reducir el costo de los riesgos. Huecos de retardo de Loads. Huecos de retardo de Branchs. Excepciones, Instrucciones Complejas, FP hacen difícil pipeline 14

MIPS R3000 Operaciones Multiciclo op Rd Ra Rb Ej: Multiplicación, División, Fallo de Cache mul Rd Ra Rb A B Parar todas las etapas anteriores a la operación multiciclo. Vaciar (burbujear) las etapas siguientes Rd R Usar la palabra de control de la etapa local Para realizar paso a paso la operación multiciclo. Rd T to reg file 15

Aspectos en el diseño avanzado de Pipelines. Pipeline común. Super escalar - Emite múltiples instrucciones escalares por ciclo IF D Ex M W IF D Ex M W IF D Ex M W IF D Ex M W IF D Ex M W IF D Ex M W IF D Ex M W Limitación Tasa de emisión Resolución de Riesgos y suficiente paralelismo IF D Ex M W VLIW ( EPIC Computador de inst. con paralelismo explícito) - Cada instrucción especifica múltiples operaciones escalares - Compilador determina el paralelismo IF D Ex M W Ex M W Ex M W Ex M W Suficiente paralelismo Procesadores Vectoriales - Cada instrucción especifica una serie de operaciones idénticas IF D Ex M W Ex M W Ex M W Ex M W Aplicabilidad 16

Emisión de Instrucciones Particionada (superescalar simple) Emisión independiente para operaciones Enteras y Flotantes en pipes separados I-Cache Registros Enteros Emisión de Instrucc. Registros P. Flotante Operand / Result Busses ALU Enteros Load / Store Unit Suma PF Mult. PF D-Cache Tiempo Total para emisión única = Tiempo Instr. Enteras + Tiempo Instrucciones PF. Aceleración Máx(sin riesgos): Tiempo Total MAX(Tiempo Ent, Tiempo FP) 17

CPI < 1: Emisión de múltiples Instrucciones/Ciclo Ej. Superscalar (SS): 2 instrucciones, 1 FP & 1 cualquier otra. Fetch 64 bits/ciclo de reloj; Entera a la izquierda, FP a la derecha. Puede emitirse la segunda sólo si la primera se emite. Tipo Etapas de Segmentación Int. instruction IF ID EX MEM WB FP instruction IF ID EX MEM WB Int. instruction IF ID EX MEM WB FP instruction IF ID EX MEM WB Int. instruction IF ID EX MEM WB FP instruction IF ID EX MEM WB La demora de 1 ciclo para LOAD se expande a 3 instrucciones en SS. La instrucción en paralelo no la puede usar, ni las dos del próximo T. 18

Apoyo del Compilador: Desenrollado de Lazos Ejemplo: Supongamos ADDD produce un retardo de 2 ciclos, LD 1 ciclo. El siguiente lazo suma un escalar (PF) en F2 a un Vector (PF) apuntado por R1, se comienza por la última componente. R0 se inicializa para apuntar a la última componente del vector. Loop: LD F0, 0(R1) ADDD F4, F0, F2 SD 0(R1), F4 SUBI R1, R1, #8 BGEZ R1, Loop Cuánto demora? 19

Apoyo del Compilador: Desenrollado de Lazos Sin Reordenar, se insertan burbujas para resolver dependencias: Loop: LD F0, 0(R1) Parada ADDD F4, F0, F2 Parada Parada SD 0(R1), F4 SUBI R1, R1, #8 BGEZ R1, Loop Parada Total: 9T por iteración. Y reordenando? 20

Apoyo del Compilador: Desenrollado de Lazos Reordenando: Loop: LD F0, 0(R1) SUBI R1, R1, #8 ADDD F4, F0, F2 Parada BGEZ R1, Loop SD 8(R1), F4 Se reduce la duración de 9T a 6T por iteración. 21

Apoyo del Compilador: Desenrollado de Lazos Desenrollando 4 veces se reducen instrucciones de control del lazo: Loop: LD F0, 0(R1) ADDD F4, F0, F2 SD 0(R1), F4 ; elimina SUBI y BNZ LD F0, -8(R1) ADDD F4, F0, F2 SD -8(R1), F4 ; elimina SUBI y BNZ LD F0, -16(R1) ADDD F4, F0, F2 SD -16(R1), F4 ; elimina SUBI y BNZ LD F0, -24(R1) ADDD F4, F0, F2 SD -24(R1), F4 SUBI R1, R1, #32 BGEZ Loop Sin reordenar ya se gana respecto al ejemplo inicial no reordenado. Cuánto? 22

Pero reordenando hay gran mejora! 1 Loop: LD F0,0(R1) 2 LD F6,-8(R1) 3 LD F10,-16(R1) 4 LD F14,-24(R1) 5 ADDD F4,F0,F2 6 ADDD F8,F6,F2 7 ADDD F12,F10,F2 8 ADDD F16,F14,F2 9 SD 0(R1),F4 10 SD -8(R1),F8 11 SD -16(R1),F12 12 SUBI R1,R1,#32 13 BGEZ R1,LOOP 14 SD 8(R1),F16 ; 8-32 = -24 14 ciclos de reloj, o 3.5 por iteración (14/4) 23

Y para Superescalar permite usar paralelismo Instrucción Entera Instrucción PF Ciclo de Reloj Loop: LD F0,0(R1) 1 LD F6,-8(R1) 2 LD F10,-16(R1) ADDD F4,F0,F2 3 LD F14,-24(R1) ADDD F8,F6,F2 4 LD F18,-32(R1) ADDD F12,F10,F2 5 SD 0(R1),F4 ADDD F16,F14,F2 6 SD -8(R1),F8 ADDD F20,F18,F2 7 SD -16(R1),F12 8 SD -24(R1),F16 9 SUBI R1,R1,#40 10 BGEZ R1,LOOP 11 SD 8(R1),F20 12 Desenrollada 5 veces para evitar paradas (+1 por SS) 12 ciclos, es decir 2.4 ciclos por iteración 24

Antidependencias Cada ejecución del lazo emplea las mismas variables. Pero se puede desenrollar y si cada ejecución es independiente y se presta para realizarla en paralelo Y si uso la misma variable aparecen riesgos waw (que escriba la variable del segundo desenrollado antes que del primero. Entonces la misma variable no significa dependencia ya que se resuelve cambiando el nombre en cada desenrrollado. Este caso se denomina antidependencia. Y por eso los procesadores modernos tienen muchos registros. 25

Desenrrollado de Lazos en VLIW Ejemplo: 5 unidades independientes en paralelo Memory Memory FP FP Int. op/ Clock reference 1 reference 2 operation 1 op. 2 branch LD F0,0(R1) LD F6,-8(R1) 1 LD F10,-16(R1) LD F14,-24(R1) 2 LD F18,-32(R1) LD F22,-40(R1) ADDD F4,F0,F2 ADDD F8,F6,F2 3 LD F26,-48(R1) ADDD F12,F10,F2 ADDD F16,F14,F2 4 ADDD F20,F18,F2 ADDD F24,F22,F2 5 SD 0(R1),F4 SD -8(R1),F8 ADDD F28,F26,F2 6 SD -16(R1),F12 SD -24(R1),F16 SUBI R1,R1,#56 7 SD 24(R1),F20 SD 16(R1),F24 BGEZ R1,LOOP 8 SD 8(R1),F28 9 Desenrrollado 7 veces se optimiza el uso de Paralelismo. 7 resultados en 9 T, o 1.3 T por iteración Se requieren más registros en VLIW (EPIC => 128int + 128FP) 26

Software Pipelining Observación: si las iteraciones en el lazo son independientes, se puede tomar distintas instrucciones de distintos lazos y ejecutarlas en paralelo. Segmentación de Software: se reorganizan los lazos de tal forma que cada iteración esté compuesta por instrucciones de distintas iteraciones del lazo original. Iteration 0 Iteration 1 Iteration 2 Iteration 3 Iteration 4 Softwarepipelined iteration The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again. 27

Ejemplo de Segmentación en Sw Antes: Desenrollando 3 veces. 1 LD F0,0(R1) 2 ADDD F4,F0,F2 3 SD 0(R1),F4 4 LD F6,-8(R1) 5 ADDD F8,F6,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 BGEZ R1,LOOP Ahora: con segmentación de Sw 1 SD 0(R1),F4 ; Stores M[i] 2 ADDD F4,F0,F2 ; Adds to M[i-4 3 LD F0,-16(R1); Loads M[i-2] 4 SUBI R1,R1,#8 5 BNEZ R1,LOOP Cuidado: inicializar y terminar adecuadamente los lazos. Sw Pipelining Desenrollo Simbólico del Lazo Menor Espacio para el código. Llenar y vaciar el Pipe una vez Desenrrollado vs. una vez por iteración en el desenrrollado Para llenar hueco en BNEZ con SUBI se puede comenzar R1-24 y cambiar subind de las 3 inst del lazo, BGEZ resultará correcta. 28

Múltiples Pipes/ Superescalar más difícil D$ A R T B IR0 IR1 Aspectos: Register File B R T A D$ Puertos del Banco de Registros Puertos de DM Ancho de IM Detectar Dependencias de Datos Anticipaciones Riesgos RAW? Riesgos WAR? Riesgos WAW? Múltiples load/store ops? Saltos? 29

Predicción de Saltos y Ejecución Especulativa Predicción de Saltos. En pipes más largos las penalidades son altas. La solución de Salto retardado no es la mejor Muy retardado. Código dependiente de la máquina. Predecir el salto y continuar, commit solo cuando estamos seguros, sino unroll. Implementación: 1. Predicción Estática. En un lazo se salta en general (hacia atrás), predecir tomado. Caso contrario... Predecir no tomado. Se tienen códigos distintos para cada instrucción de salto. 2. Predicción Dinámica. No depende de la máquina. Recordar qué pasó la última vez... Repetir esa experiencia. Se emplea una tabla con los últimos bits de las direcciones de salto y allí se guarda qué pasó la última vez. 30

Predicción Dinámica de Saltos Para un Lazo: Se predice mal al salir del salto y también cuando luego de un tiempo se vuelve a entrar. Un salto de 10 iteraciones tiene 80% de predicción correcta. Mejora: Cambio decisión si equivoco las últimas dos veces: Tomado No Tomado Tomar - 0 Tomar - 1 Tomado Tomado Tomado No Tomado No Tomado No Tomar - 3 No Tomar - 2 No Tomado 31

Fallas en la Predicción Razones: Error al indexar la tabla de predicción: agrandar la tabla. Predicción incorrecta en ese salto. Frecuencia de Fallas En tablas de 4096 entradas... 1% a 18% de error en benchmarks. No está mal. Mejora para evitar Paradas. En la tabla se escribe el destino del salto. Se evita calcular... Y la penalidad por fallo disminuye. 32

Ejecución Especulativa Instrucciones que se ejecutan si se cumple cierta condición. La evaluación de la condición podría detener el pipeline. Para no detenerse, se procede con la ejecución de las instrucciones sin conocer el resultado de la condición. Todo funciona bien si no se permite que estas instrucciones cambien el estado del CPU. Se proveen copias de registros. Si la condición es válida, se realiza el commit los registros se renombran o copian a los reales. Caso contrario... Se perdió tiempo que igual se hubiera perdido. Pero... Sí aparecen costos adicionales: fallos de cache en la ejecución. No permitir a las ejecuciones especulativas provocar fallos, sus resultados en registros quedan marcados con un bit de veneno. Sólo cuando se está seguro que no es especulativa se permite el fallo. 33

Mejoras Adicionales 1. Emisión Fuera de Orden o Dinámica. Si la emisión de una instrucción está detenida por un riesgo, emitir siguientes que no tengan riesgo (parecida a lo que hacen los compiladores pero se hace dinámicamente ). Diagr de precedencia. A la instrucción detenida se la deja en una cola de espera. Dim Cola! Ejecución Fuera de Orden. Copias de registros para Antidependencias Las etapas trabajan independientemente con su propia MEF para control. 2. Completar (Commit) en Orden. Permite Excepciones Precisas. Se trabaja con un buffer de reordenamiento en la etapa COMMIT. En este buffer están instrucciones en espera de que se completen sus anteriores. Pero hay registros cuyos valores ya se conoce. No son definitivos hasta que no haya el COMMIT de la instrucción que los modifica. Hay otras instrucciones que los necesitan. Se las emite y se provee copias de esos registros (hay muchos registros adicionales para copias). Al finalizar se los renombra si todo está bien. Si algo sale mal, no se tocaron los registros y todo se anula. 34

Ventajas No depende del Compilador. Se llama ILP (Instruction Level Paralelism). Tomasulo IBM 360 1967. 35

Arquitectura del Pentium II ROB: ReOrder Buffer 36

Pentium II Fetch / Decode Unit 7 Etapas de Segmentación: IFU0 a ROB. IFU0 trae 32 bytes del cache a un buffer interno cada vez que se vacía. IFU1 Encuentra la longitud de una instrucción (varía). IFU2 la alinea al comienzo de ID0 ID0 decodifica y las convierte en un grupo de MicroInstruc. ID1 cola de espera y detección de saltos. La predicción estática es por si no está en la tabla de predicción dinámica de 4 bits. RAT se encarga de renombrar registros de un grupo de 40 disponibles. ROB Contiene instrucciones pendientes a ejecutar fuera de orden y completar en orden. 37

Pentium II Unidad de Despacho y Ejecución Se encarga de emisión y ejecución de las instrucciones Puede emitir hasta 5 inst/ciclo Maneja un scoreboard para resolver los conflictos antes de emitir. La estación de reserva guarda hasta 20 operaciones listas para ejecutarse hasta que se liberan sus unidades de ejecución. La Unidad de Retiro se fija en ROB cuales Inst. están completas, las retira en orden, redenomina los registros y envía sus valores a quienes estén esperando por ellos. Resuelve cuales instrucciones especulativas no se ejecutan (rollback). 38

Ejecución Dinámica en Pentium IV y Pentium III Parámetro PIV PIII Max. instructions emitidas / clock 7 5 Profundidad Pipe (duplica frec) 20 16 Conversión a microoperaciones Trace Cache PLA Instrucciones en ROB 126 40 Num de Registros para Renombrar 128 40 Tabla Predicción de Saltos 4K 0,5K Mejoras en Mem próximo tema. 39

Pentium IV Desventajas Pipeline muy profundo alta penalidad por riesgos. Instrucciones complejas que no se traducen a 1-4 micro operaciones. Dependencias largas de datos entre micro operaciones que pueden llevar a riesgos costosos (entre dos inst hay muchas microp.) Los riesgos largos son costosos en términos de consumo más que de tiempo, pues sobran recursos. Localidad de las Instrucciones baja veremos Cache. 40

ITANIUM - Soporte de Hw para más paralelismo EPIC Explicit Paralell Instruction Computer (IA-64, Itanium, Itanium 2) EPIC VLIW Inst de 128 bits, contienen 3 operaciones y el compilador puede armar paquetes de varias Inst. que pueden emitirse en paralelo. Evitar errores en predicción, creando instrucciones condicionales: if (x) then A = B op C else NOP Si es falso, entonces no se guarda el resultado. Se les llama instrucciones predicadas o condicionales. Si el salto if then else es un problema, elimine el salto!. Cada rama del salto se puede ejecutar en paralelo ( Energía!). Se complementa con desenrollado de lazo para encontrar más paralelismo. 64 registros de 1 bit en un campo de 8 bits para condicionar la ejecución. Un campo template único en la VLIW indica qué unidades funcionales se requieren en cada instrucción y cuándo termina la serie de instrucciones paralelas que preparó el compilador. 41

ITANIUM LOAD anticipado y Check. Un LOAD puede encontrar falla en cache y demorar la ejecución. Se anticipa el LOAD unas cuantas instrucciones para atrás. Cuando se usa su resultado en una instrucción, se la precede por un CHECK para ver si se completó, sino se espera. Si el LOAD está en una rama condicional no se lo anticipa fuera de la rama, y al contrario, si da falla en cache: se espera hasta la evaluación de la condición. Desventajas de las Ejecuciones Condicionales Las condiciones complejas se evalúan tarde y consumen recursos por que se especula durante muchas etapas Sin embargo hoy sobran recursos pues no hay en general tanto paralelismo en el programa. Pero Energía! 42

Itanium 2 Capaz de emitir hasta 6 instrucciones por cada T. Capaz de ejecutar (instantánea) hasta 11 ops por cada T. Unidades Operativas: 6 Enteras 4 de Memoria. 3 para Saltos. 2 Punto Flotante. Frec de reloj 1,5 GHz Cantidad Transistores: 221 millones. 130 Watts. 43

En síntesis ILP: La segmentación es un tipo de paralelismo transparente al programador (excepto por los riesgos). Pipelines más rápidos requieren más etapas. Los riesgos y las etapas largas para algunos casos (FP), hacen inviable un pipe único. ILP (Paralelismo a nivel de Instrucción): manejado por el Hw en forma totalmente transparente. es totalmente transparente la implementación en pipe del primer MIPS? Más rendimiento en ILP. pipelines más profundos y paralelismo. predicción de salto y ejecución especulativa. Ejecución fuera de orden. Renombramiento de registros. Ayuda del compilador mejora pero no define ILP. 44

En síntesis: VLIW VLIW: arquitectura en que varias operaciones paralelas se colocan en una instrucción muy ancha. El compilador se encarga de encontrar el paralelismo, no el Hw. Idea: Hw más simple, Sw más complejo. Técnicas: Sw Pipelining. Desenrrollado de lazos. Ejecución de más de una alternativa en un salto o case Ejemplo: Itanium. Contra: Potencia. 45