La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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.

Presentaciones similares


Presentación del tema: "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."— Transcripción de la presentación:

1 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 de Ciencia de la Computación

2 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

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

4 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

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

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

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

8 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

9 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

10 Ejemplo con un solo estado: Lógica combinacional RegReg 300 ns20 ns Clock T = 320 ns V = 3.125 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

11 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

12 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

13 R.Mitnik 13Arquitectura de Computadores Pipelining Tiempo OP1 OP2 OP3 ABC ABC ABC 0120240360480640 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

14 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

15 Präsentat ion T = 420 ns, V = 14.29 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

16 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.

17 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.

18 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:

19 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

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

21 R.Mitnik Arquitectura de Computadores21 Pipelining Capítulo 6 : Ejecución Paralela - Pipelining Ejemplo 1 de ejecución: LOAD A,01h #I1 123456789 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

22 R.Mitnik Arquitectura de Computadores22 Pipelining Capítulo 6 : Ejecución Paralela Ejemplo 2 de ejecución: Es necesario utilizar 4 NOP 123456789 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

23 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 #I6 123456789 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

24 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 #I4 123456789 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

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

26 R.Mitnik Arquitectura de Computadores26 Pipelining Capítulo 6 : Ejecución Paralela LOAD A,01h #I1 123456789 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

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

28 R.Mitnik Arquitectura de Computadores28 LOAD A,01h #I1 123456789 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

29 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

30 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

31 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.

32 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? 123456789 FDEM WFDEM W FDEMWFDEMWFDEMW CMP A,2 BNE else thenMOV B,1 BR next elseMOV B,2 nextMOV C,1 : ?

33 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? 123456789 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

34 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? 123456789 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

35 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 105 102JUMP 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

36 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. 123456789 FDEM WFDEM W FDEMWFDEMWFDEMW CMP A,2 BNE else thenMOV B,1 BR next elseMOV B,2 nextMOV C,1 : ? Cual de las 2

37 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.

38 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

39 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…

40 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.

41 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.

42 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é?

43 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<1000000;i++) {... }

44 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.

45 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.

46 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ó?)

47 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?

48 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.

49 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?

50 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ó

51 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


Descargar ppt "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."

Presentaciones similares


Anuncios Google