Arquitectura de Computadores Clase 22 Pipelining IIC 2342 Semestre 2008-2 Rubén Mitnik Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento.

Slides:



Advertisements
Presentaciones similares
Procesadores Superescalares
Advertisements

El modelo de Von Neumann
Compiladores e intérpretes
UNIVERSIDAD DEL VALLE DE MEXICO CAMPUS CHAPULTEPEC
Estructuras segmentadas
III - Gestión de memoria
ORGANIZACIÓN COMPUTACIONAL
Arquitectura de Computadores I
Arquitectura de Computadores I PIPELINING. Pipelining Un pipeline es una serie de etapas, en donde en cada etapa se realiza una porción de una tarea.
Fermín Sánchez Carracedo Universitat Politècnica de Catalunya
PROCESADORES SUPERESCALARES
Arquitectura de Computadores
Pipelines: Riesgos.
El procesador: la ruta de datos y el control (II Parte)
EL Sistemas Digitales Ing. José Alberto Díaz García Escuela de Ingeniería Electrónica Arquitectura Segmentada Pipeline (Segmentación)
EMISION MULTIPLE DE INSTRUCCIONES
Arquitectura de Conjunto de Instrucciones (ISA)
Composición Interna de un Procesador
Este obra se publica bajo unalicencia de Creative Commons Reconocimiento- NoComercial-CompartirIgual 3.0 España.licencia de Creative Commons Reconocimiento-
CLASE 11.
TRADUCTOR DE UN PROGRAMA
PLANIFICACIÓN DINÁMICA DE INSTRUCCIONES
2.2 Registro de Banderas Conjunto de bits que nos dan información sobre el estado del procesador y sobre el resultado de la última operación efectuada.
Unidad 2: Organización del CPU
Programación en los procecesadores Intel® Multi Core.
P(C) = m * nMAXIMO GRADO DE PARALELISMO WSBS ha sido llamado el procesamiento en serie de bits, ya que se procesa un bit por vez (n = m = 1). Es el procesamiento.
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
Segmentación No Lineal
Administración de Memoria Memoria Virtual
Pipelining Predicción dinámica de brincos. Universidad de SonoraArquitectura de Computadoras2 Introducción En base a la historia de la instrucción, predecir.
Unidad 2: Segmentación Dependencias de Control Docente: ing. José Díaz Chow.
Gustavo Andrés Uribe Gómez
El diseño de la computadora es simple. La elegancia del diseño consiste en que estas operaciones simples pueden servir para resolver problemas complejos.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 18 La mayor parte del contenido de estas láminas, ha sido extraído del libro Computer Organization and.
Memoria Cachés. Universidad de SonoraArquitectura de Computadoras2 Introducción Caché es el nivel de memoria situada entre el procesador y la memoria.
Scheduling dinámico Algoritmo de Tomasulo.
Organización de Computadoras
Funcionamiento de la CPU
MICROCONTROLADORES NOCIONES BÁSICAS COMPUTO II. ¿QUÉ ES UN MICROCONTROLADOR? MICROCONTROLADOR = MICROPROCESADOR + MEMORIA + PERIFERICOS.
Diseño de la Unidad de Control Multiciclo: Microprogramación
LOS MICROPROCESADORES
Arquitectura de Von Neumann
Lenguajes de programación. Lenguaje máquina El ordenador sólo sabe hacer un número limitado de tareas (muy pocas) definidas electrónicamente en su procesador.
Departamento de Ingeniería de Sistemas Universidad de Antioquia
“Organización y Arquitectura de Computadores” William Stallings
Organización del Computador I Verano Aritmética (3 de 3) Basado en el capítulo 4 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
Cap. 6: Pipelining. Encauzamiento de procesadores
Sánchez Manjarrez Silvana Ing. Daniel Domínguez C. México, D.F. a 13 de septiembre del 2006 Arquitectura de Computadoras Arquitecturas CISC Y RISC Campus.
Capítulo 4 CPU y la memoria.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 20 La mayor parte del contenido de estas láminas, ha sido extraído del libro Computer Organization and.
Prof. Flor Narciso Departamento de Computación
LENGUAJE DE MANIPULACIÓN DE DATOS. Lenguaje de Manipulación de Datos (Data Manipulation Language, DML) es un lenguaje proporcionado por el sistema de.
INTRODUCCIÓN El rendimiento, costo de compra y costo de operación forman la base para la toma de decisiones, sobre que PC es mejor que otra y así adquirir.
Rendimiento de la CPU y sus factores
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 14 La mayor parte del contenido de estas láminas, ha sido extraído del libro Computer Organization and.
Organización de la Computadora
ARQUITECTURA DE COMPUTADORES
3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO
Curso: Fundamentos de Computación
Arquitectura de Computadores
[ Arquitectura de Computadores ] ORGANIZACIÓN FUNCIONAL Präsentat ion Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia.
Arquitectura de Computadores Clases Interrupciones de software y hardware IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica.
Arquitectura de Computadores IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia.
Arquitectura de Computadores Clase 18 Memoria Caché: Fundamentos IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela.
Arquitectura de Computadores IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia.
Arquitectura de Computadores Clase 6 Ciclo y Conjunto de Instrucciones IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela.
Arquitectura de Computadoras (Taller) Semestre II de 2008.
Arquitectura de Computadores
[ Arquitectura de Computadores ] AUMENTO DE DESEMPEÑO Präsentat ion Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia.
Transcripción de la presentación:

Arquitectura de Computadores Clase 22 Pipelining IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación

Objetivos Capítulo 6 : Ejecución Paralela Objetivos R.Mitnik 2Arquitectura de Computadores Entender los fundamentos del uso de un pipeline en una CPU moderna, entendiendo sus ventajas, limitaciones. Entender distintas técnica para el uso eficiente de un pipeline

R.Mitnik Índice 6. Ejecución Paralela Capítulo 6 : Ejecución Paralela 3Arquitectura de Computadores

R.Mitnik Índice 6.1. Pipelining 6.2. Ejecución especulativa y Predicción de salto 6.3. Introducción a Instruction-level parallelism (ILP) 6.4. Out-of-Order execution y Arquitecturas Superescalares 6.5. Introducción al SIMD y VLIW 6.6. Multiple Cores Capítulo 6 : Ejecución Paralela 4Arquitectura de Computadores

Lavado de un auto Secuencial R.Mitnik 5Arquitectura de Computadores Capítulo 6 : Ejecución Paralela Pipelining

Lavado de un auto Paralelo R.Mitnik 6Arquitectura de Computadores Capítulo 6 : Ejecución Paralela Pipelining

Pipeline R.Mitnik 7Arquitectura de Computadores Capítulo 6 : Ejecución Paralela Pipelining

Secuencial Paralelo (3 personas) Pipeline (3 estados) Duración de lavado Velocidad de un auto (T) procesamiento (V) 15 min 4 autos/hora 5 min 12 autos/hora 15 min 12 autos/hora R.Mitnik 8Arquitectura de Computadores Pipelining Capítulo 6 : Ejecución Paralela

SecuencialParalelo Pipeline Idea de la estrategia pipeline: Divide un proceso en estados independientes. Mueve los objetos a través de los estados en forma secuencial. Múltiples objetos son procesados al mismo tiempo. R.Mitnik Arquitectura de Computadores9 Pipelining Capítulo 6 : Ejecución Paralela

Ejemplo con un solo estado: Lógica combinacional RegReg 300 ns20 ns Clock T = 320 ns V = MOPS* MOPS* = Millones de operaciones por segundo Pipelining Descripción: El cómputo requiere 300 nanosegundos Adicionalmente, otros 20 ns para escribir los resultados El reloj debe tener al menos un ciclo de 320 ns R.Mitnik Arquitectura de Computadores10 Capítulo 6 : Ejecución Paralela

RegReg Clock Comb. logic A RegReg Comb. logic B RegReg Comb. logic C 100 ns20 ns100 ns20 ns100 ns20 ns T = 360 ns V = 8.33 MOPS Ejemplo con tres estados: Descripción del sistema: Se divide en tres bloques de lógica combinacional de 100 ns c/u. Se puede iniciar una nueva opearación apenas se haya completado el estado A. Esto quiere decir que cada 120 ns se puede iniciar una nueva operación. La latencia se incrementa (en total se necesitan 360 ns desde el inicio hasta el final). R.Mitnik Arquitectura de Computadores11 Pipelining Capítulo 6 : Ejecución Paralela

Tiempo OP1 OP2 OP3 Tiempo ABC ABC ABC OP1 OP2 OP3 Sin pipeline Con pipeline R.Mitnik Arquitectura de Computadores12 Capítulo 6 : Ejecución Paralela Pipelining

R.Mitnik 13Arquitectura de Computadores Pipelining Tiempo OP1 OP2 OP3 ABC ABC ABC Clock RegReg Comb. logic A RegReg Comb. logic B RegReg Comb. logic C 100 ns20 ns100 ns20 ns100 ns20 ns 239 RegReg Clock Comb. logic A RegReg Comb. logic B RegReg Comb. logic C 100 ns20 ns100 ns20 ns100 ns20 ns 241 RegReg RegReg RegReg 100 ns20 ns100 ns20 ns100 ns20 ns Comb. logic A Comb. logic B Comb. logic C Clock 300 RegReg Clock Comb. logic A RegReg Comb. logic B RegReg Comb. logic C 100 ns20 ns100 ns20 ns100 ns20 ns 359 Capítulo 6 : Ejecución Paralela - Pipelining

RegReg Clock RegReg Log B RegReg Log C 50 ns 20 ns150 ns20 ns100 ns20 ns T = 510 ns V = 5.88 MOPS Log A Tiempo OP1 OP2 OP3 ABCABCABC R.Mitnik 14Arquitectura de Computadores Pipelining Capítulo 6 : Ejecución Paralela - Pipelining Ejemplo con tres estados El desempeño está limitado por el estado más lento. Los otros estados permanecen ociosos mucho tiempo. Es necesario balancear las tareas

Präsentat ion T = 420 ns, V = MOPS Clock RegReg Comb. logic 50 ns20 ns RegReg Comb. logic 50 ns20 ns RegReg Comb. logic 50 ns20 ns RegReg Comb. logic 50 ns20 ns RegReg Comb. logic 50 ns20 ns RegReg Comb. logic 50 ns20 ns R.Mitnik 15Arquitectura de Computadores Pipelining Capítulo 6 : Ejecución Paralela Ejemplo con seis estados El uso de más estados conlleva a mayores retrasos por los registros, sin embargo aumenta la velocidad. Porcentaje de ciclo de reloj utilizado en la carga de registros. 1 estado 6.25%T=320nsV= 3.12MOPS 3 estados 16.67%T=360nsV= 8.33MOPS 6 estados28.57%T=420nsV=14.29MOPS

Cada operación depende del resultado de la operación anterior. Dependencia de los datos: R.Mitnik Arquitectura de Computadores16 Pipelining Capítulo 6 : Ejecución Paralela Clock Lógica Combinacional RegReg Tiempo OP1 OP2 OP3 Cada operación depende del resultado de la operación anterior.

Es necesario tener cuidado con los resultados de la operación i, ya que aún no están disponibles al inicio de la operación i+1. R.Mitnik Arquitectura de Computadores17 Pipelining Capítulo 6 : Ejecución Paralela Dependencia de los datos: RegReg Clock Comb. logic A RegReg Comb. logic B RegReg Comb. logic C Tiempo OP1 OP2 OP3 ABC ABC ABC OP4 ABC Es necesario tener cuidado con los resultados de la operación i, ya que aún no están disponibles al inicio de la operación i+1.

R.Mitnik Arquitectura de Computadores18 Pipelining Capítulo 6 : Ejecución Paralela El resultado de una operación depende del resultado anterior. Secuencia muy común en los programas. Se debe asegurar que el pipeline maneje esta secuencia de manera correcta. 1.LOAD A,50 2.ADD A,B 3.STORE (B), 100 Dependencia de los datos en una CPU:

Etapas del procesamiento de una instrucción en la CPU: 1. Fetch  Captar instrucción 2. Decode  Interpretar instrucción 3. Operand Fetch  Captar datos 4. Execution  Procesar la instrucción 5. Write Back  Escribir resultados R.Mitnik Arquitectura de Computadores19 Pipelining Capítulo 6 : Ejecución Paralela

R.Mitnik Arquitectura de Computadores20 Pipelining Capítulo 6 : Ejecución Paralela FetchDecodeExecuteMemoryWrite Back (Registers) Ejemplo de estados de un Pipeline

R.Mitnik Arquitectura de Computadores21 Pipelining Capítulo 6 : Ejecución Paralela - Pipelining Ejemplo 1 de ejecución: LOAD A,01h #I FDEM W LOAD C,02h #I2 FDEM W LOAD D,03h #I3 FDEMW LOAD B,04h #I4 FDEMW HALT #I5 FDEMW Ciclo 5 W I1 M I2 E I3 D I4 F I5

R.Mitnik Arquitectura de Computadores22 Pipelining Capítulo 6 : Ejecución Paralela Ejemplo 2 de ejecución: Es necesario utilizar 4 NOP FDEMWFDEMW FDEMWFDEMW FDEMWFDEMW FDEMWFDEMW FDEMWFDEMW FDEMWFDEMW 10 W R[ %eax ] f 3 W R[ %A ]  3 DF ADD A, D Ciclo 6 11 FDEMWFDEMW Ciclo 7 LOAD D,010h #I1 LOAD A,03h #I2 NOP #I3 NOP #I4 NOP #I5 NOP #I6 ADD A,D #I7 HALT #I8 FDEMFDEM

R.Mitnik Arquitectura de Computadores23 Pipelining Capítulo 6 : Ejecución Paralela - Pipelining Ejemplo 3 de ejecución: Con sólo 2 NOP LOAD D,010h #I1 LOAD A,03h #I2 NOP #I3 NOP #I4 ADD A,D #I5 HALT #I FDEMWFDEMW FDEMWFDEMW FDEMWFDEMW FDEMWFDEMW FDEMWFDEMW FDEMWFDEMW 10 W R[ %eax ]  3 E ADD A,D W R[ %eax ]  3 W R[ %A ]  3 Ciclo 6 Ciclo 7

R.Mitnik Arquitectura de Computadores24 Aumento de desempeño Capítulo 6 : Ejecución Paralela Ejemplo 3 de ejecución: Sin NOP LOAD D,010h #I1 LOAD A,03h #I2 ADD A,D #I3 HALT #I FDEMWFDEMW FDEMWFDEMW FDEMWFDEMW FDEMWFDEMW FDEMWFDEMW FDEMWFDEMW 10 W R[ %eax ]  3 D valA  R[ %edx ]=10 valB  R[ %eax ]=0 W R[ %eax ]  3 W R[ %A ]  3 D valA  R[ %edx ]=10 valB  R[ %eax ]=0 E valA  R[ %D ]=10 valB  R[ %A ]=0 Ciclo 6 Error Ciclo 5

R.Mitnik Arquitectura de Computadores25 Pipelining Capítulo 6 : Ejecución Paralela ¿ Qué pasa si hay: branching incondicional?

R.Mitnik Arquitectura de Computadores26 Pipelining Capítulo 6 : Ejecución Paralela LOAD A,01h #I FDEM W BRA label #I2 FDEM W LOAD D,03h #I3 FDEMW LOAD B,04h #I4 FDEMW ADD D,B #I5 FDEMW LOAD A,03h label SUB B,A label + 1 STO B label + 2

R.Mitnik Arquitectura de Computadores27 Pipelining Capítulo 6 : Ejecución Paralela ¿ Qué pasa si hay: branching incondicional? branching condicional?

R.Mitnik Arquitectura de Computadores28 LOAD A,01h #I FDEM W BEQ label #I2 FDEM W LOAD D,03h #I3 FDEMW LOAD B,04h #I4 FDEMW ADD D,B #I5 FDEMW LOAD A,03h label SUB B,A label + 1 STO B label + 2 Pipelining Capítulo 6 : Ejecución Paralela

R.Mitnik Índice 6.1. Pipelining 6.2. Ejecución especulativa y Predicción de salto 6.3. Introducción a Instruction-level parallelism (ILP) 6.4. Out-of-Order execution y Arquitecturas Superescalares 6.5. Introducción al SIMD y VLIW 6.6. Multiple Cores Capítulo 6 : Ejecución Paralela 29Arquitectura de Computadores

R.Mitnik Arquitectura de Computadores30 Ejecución Especulativa Capítulo 6 : Ejecución Paralela if (j==2) m = 1; else m = 2; CMP A,2;compara j con 2 BNE else;salta a else si no es igual thenMOV B,1;carga 1 en B BR next;salta a next elseMOV B,2;carga 2 en B next... Programa original Programa en Assembler

R.Mitnik Arquitectura de Computadores31 Ejecución Especulativa Capítulo 6 : Ejecución Paralela if (j==2) m = 1; else m = 2; n = 1; CMP A,2;compara j con 2 BNE else;salta a else si no es igual thenMOV B,1;carga 1 en B BR next;salta a next elseMOV B,2;carga 2 en B nextMOV C,1;carga 1 en C Programa original Programa en Assembler En este ejemplo (con ramificaciones) se introducen al pipeline instrucciones que no se van a ejecutar.

R.Mitnik Arquitectura de Computadores32 Ejecución Especulativa Capítulo 6 : Ejecución Paralela La solución radica en introducir al pipeline sólo las instrucciones válidas… ¿pero es esto posible? ¿Qué pasa con los saltos incondicionales? Pareciera que con el salto incondicional no habría problema, la CPU debiera seguir leyendo instrucciones a partir de la dirección objetivo (el lugar a donde se saltará), pero ¿cómo saber esta dirección a tiempo? FDEM WFDEM W FDEMWFDEMWFDEMW CMP A,2 BNE else thenMOV B,1 BR next elseMOV B,2 nextMOV C,1 : ?

R.Mitnik Arquitectura de Computadores33 Ejecución Especulativa Capítulo 6 : Ejecución Paralela La solución radica en introducir al pipeline sólo las instrucciones válidas… ¿pero es esto posible? ¿Qué pasa con los saltos incondicionales? Pareciera que con el salto incondicional no habría problema, la CPU debiera seguir leyendo instrucciones a partir de la dirección objetivo (el lugar a donde se saltará), pero ¿cómo saber esta dirección a tiempo? FDEM WFDEM W FDEMWFDEMWFDEMW CMP A,2 BNE else thenMOV B,1 BR next elseMOV B,2 nextMOV C,1 : ? Esto no es posible Porque ya se “coló” MOV B,2

R.Mitnik Arquitectura de Computadores34 Ejecución Especulativa Capítulo 6 : Ejecución Paralela La solución radica en introducir al pipeline sólo las instrucciones válidas… ¿pero es esto posible? ¿Qué pasa con los saltos incondicionales? Pareciera que con el salto incondicional no habría problema, la CPU debiera seguir leyendo instrucciones a partir de la dirección objetivo (el lugar a donde se saltará), pero ¿cómo saber esta dirección a tiempo? FDEM WFDEM W FDEMWFDEMWFDEMW CMP A,2 BNE else thenMOV B,1 BR next NOP elseMOV B,2 nextMOV C,1 : Esto sí es posible pero hace el programa + lento y + grande

R.Mitnik Arquitectura de Computadores35 Ejecución Especulativa Capítulo 6 : Ejecución Paralela AddressNormal DelayedOptimized 100LOAD X,ALOAD X,ALOAD X,A 101ADD 1,AADD 1,AJUMP JUMP 105JUMP 106ADD 1,A 103ADD A,BNOOPADD A,B 104SUB C,BADD A,BSUB C,B 105STORE A,ZSUB C,BSTORE A,Z 106STORE A,Z

R.Mitnik Arquitectura de Computadores36 Ejecución Especulativa Capítulo 6 : Ejecución Paralela La solución radica en introducir al pipeline sólo las instrucciones válidas… ¿pero es esto posible? ¿Qué pasa con los saltos condicionales? La situación es peor, porque no se sabe a donde saltar sino hasta después de ejecutar la instrucción y saber si la condición se cumple o no FDEM WFDEM W FDEMWFDEMWFDEMW CMP A,2 BNE else thenMOV B,1 BR next elseMOV B,2 nextMOV C,1 : ? Cual de las 2

R.Mitnik Arquitectura de Computadores37 Predicción de salto Capítulo 6 : Ejecución Paralela Predicción de Salto Las primeras versiones de las CPUs se detenían ante un salto condicional hasta no saber a dónde saltar, esto a veces toma tres o cuatro ciclos. Esto arruina el desempeño de la CPU ya que más del 20% de las instrucciones son ramificaciones. La solución es la “predicción del salto”, con esta solución se predice si se va a tomar el salto o no.

R.Mitnik Arquitectura de Computadores38 Predicción de salto Capítulo 6 : Ejecución Paralela Idea de la predicción: Predecir la dirección de la ramificación Ejecutarla como si fuera correcta Aceptar o descartar los resultados después de saber la dirección de la bifurcación correcta

R.Mitnik Arquitectura de Computadores39 Predicción de salto Capítulo 6 : Ejecución Paralela Si se predice correctamente una rama, no hay nada especial que hacer (la ejecución simplemente continúa en la dirección objetivo). PERO el problema surge cuando se predice erróneamente una rama. Averiguar a dónde hay que ir e ir ahí no es difícil…

R.Mitnik Arquitectura de Computadores40 Predicción de salto Capítulo 6 : Ejecución Paralela Si se predice correctamente una rama, no hay nada especial que hacer (la ejecución simplemente continúa en la dirección objetivo). PERO el problema surge cuando se predice erróneamente una rama. Averiguar a dónde hay que ir e ir ahí no es difícil…  la parte difícil es anular instrucciones que ya se ejecutaron y no debieron haberse ejecutado.

R.Mitnik Arquitectura de Computadores41 Predicción de salto Capítulo 6 : Ejecución Paralela Si se predice correctamente una rama, no hay nada especial que hacer (la ejecución simplemente continúa en la dirección objetivo). PERO el problema surge cuando se predice erróneamente una rama. Averiguar a dónde hay que ir e ir ahí no es difícil…  la parte difícil es anular instrucciones que ya se ejecutaron y no debieron haberse ejecutado. Solución: uso de “registro borrador” intermedio.

R.Mitnik Arquitectura de Computadores42 Predicción de salto Capítulo 6 : Ejecución Paralela Una estrategia simple para predecir el salto: “Se tomarán todas las ramificaciones condicionales hacia atrás y no se tomará ninguna ramificación condicional hacia delante” ¿Es buena esta estrategia? ¿por qué?

R.Mitnik Arquitectura de Computadores43 Predicción de salto Capítulo 6 : Ejecución Paralela Predicción estática Las predicciones estáticas se definen en tiempo de compilación Ejemplo: ¿cómo podría ayudar el compilador con este código? for (i=0;i< ;i++) {... }

R.Mitnik Arquitectura de Computadores44 Predicción estática Capítulo 6 : Ejecución Paralela – predicción de salto Predicción determinada por el compilador El compilador determina cual es el salto más probable Predicción determinada por simulación Una vez compilado el programa se ejecuta de forma simulada y se estudia el comportamiento de las ramificaciones De esta forma en la versión final del programa se incorporan las predicciones de ramificación realizadas a partir de este estudio.

R.Mitnik Arquitectura de Computadores45 Predicción estática Capítulo 6 : Ejecución Paralela – predicción de salto ¿Cómo se indica esta predicción? Predicción dentro de la instrucción Algunas CPU poseen instrucciones especiales de ramificación (además de las normales) que contienen un bit en el que el compilador puede especificar qué rama cree que se tomará. Predicción por reordenamiento de código Según la máquina para la cual se esté compilando, el compilador ordena el código de manera que la suposición default de la máquina siempre corresponda al salto más probable.

R.Mitnik Arquitectura de Computadores46 Predicción de salto Capítulo 6 : Ejecución Paralela Predicción dinámica Se usa una tabla histórica (hardware) de consulta en la que se escribe cómo fue la última vez que se ejecutó la instrucción de ramificación condicional (¿se tomó la ramificación o no se tomó?)

R.Mitnik Arquitectura de Computadores47 Predicción dinámica Capítulo 6 : Ejecución Paralela – predicción de salto Estrategia 1: La ramificación tomará la misma trayectoria que adoptó la vez anterior. En este caso sólo es necesario almacenar un bit por instrucción de ramificación condicional presente en el programa. ¿Problemas?

R.Mitnik Arquitectura de Computadores48 Predicción dinámica Capítulo 6 : Ejecución Paralela – predicción de salto Estrategia 2: Se da una segunda oportunidad, es decir la predicción sólo se cambia después de dos predicciones incorrectas consecutivas. En este caso es necesario almacenar dos bits por instrucción de ramificación condicional presente en el programa.

R.Mitnik Arquitectura de Computadores49 Predicción dinámica Capítulo 6 : Ejecución Paralela – predicción de salto Estrategia 3: Qué sucede si la dirección de salto es calculada durante la instrucción?

R.Mitnik Arquitectura de Computadores50 Predicción dinámica Capítulo 6 : Ejecución Paralela – predicción de salto Estrategia 3: Qué sucede si la dirección de salto es calculada durante la instrucción? Se guarda: el resultado de la ramificación (se saltó o no) la dirección a la cual se saltó

Resumen R.Mitnik Resumen Capítulo 6 : Ejecución Paralela 51Arquitectura de Computadores Funcionamiento de un pipeline y registros intermedios Overhead agregado y aumento de desempeño Dependencia de datos Inserción de instrucciones erroneas Predicción de salto estática y dinámica Ejecución especulativa y registros borradores