La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

[ Arquitectura de Computadores ] AUMENTO DE DESEMPEÑO Präsentat ion Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia.

Presentaciones similares


Presentación del tema: "[ 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:

1 [ Arquitectura de Computadores ] AUMENTO DE DESEMPEÑO Präsentat ion Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación IIC 2342 Semestre 2006-2 Domingo Mery D.Mery 1 Arquitectura de Computadores

2 Präsentat ion D.Mery 2 Arquitectura de Computadores [ Índice ]  8.1 Arquitectura RISC  8.2 Predicción de salto y prefetching  8.3 Escalabilidad

3 Präsentat ion D.Mery 3 Arquitectura de Computadores [ Índice ]  8.1 Arquitectura RISC  8.2 Predicción de salto y prefetching  8.3 Escalabilidad

4 Präsentat ion D.Mery 4 Arquitectura de Computadores [ Aumento de desempeño ] RISC CISC: complex instruction set computer se basa en que cada instrucción puede corresponder a varias operaciones de bajo nivel, tales como leer de memoria, operación aritmética, escribir en la memoria, sumar datos… todo en una sola instrucción.

5 Präsentat ion D.Mery 5 Arquitectura de Computadores [ Aumento de desempeño ] RISC Aparición Instruc. máquinaRefer. a memoria Dinámica(ponderadas)(ponderadas) PascalCPascal CPascal C Assign45%38%13% 13%14% 15% Loop5%3%42% 32%33% 26% Call15%12%31% 33%44% 45% If29%43%11% 21%7% 13% GoTo-3%- -- - Other6%1%3% 1%2% 1% Total100% 100% 100% 100% 100% 100% Frecuencia dinámica relativa ponderada de operaciones en high level lenguages (HLL) compilados en arquitectura CISC La realidad de las operaciones…

6 Präsentat ion D.Mery 6 Arquitectura de Computadores [ Aumento de desempeño ] RISC Aparición Instruc. máquinaRefer. a memoria Dinámica(ponderadas)(ponderadas) PascalCPascal CPascal C Assign45%38%13% 13%14% 15% Loop5%3%42% 32%33% 26% Call15%12%31% 33%44% 45% If29%43%11% 21%7% 13% GoTo-3%- -- - Other6%1%3% 1%2% 1% Total100% 100% 100% 100% 100% 100% La realidad de las operaciones… CONCLUSIÓN: Las instrucciones de llamada/retorno de procedimientos son las que consumen más tiempo en los programas típicos escritos en HLL.

7 Präsentat ion D.Mery 7 Arquitectura de Computadores [ Aumento de desempeño ] RISC Porcentaje dinámico de operandos La realidad de las operandos… Pascal CPromedio Constantes enteras 16%23% 20% Variables escalares58%53% 55% Arreglos estructuras26%24% 25% Total100% 100% 100%

8 Präsentat ion D.Mery 8 Arquitectura de Computadores [ Aumento de desempeño ] RISC Porcentaje dinámico de operandos La realidad de las operandos… Pascal CAverage Constantes enteras 16%23% 20% Variables escalares58%53% 55% Arreglos estructuras26%24% 25% Total100% 100% 100% CONCLUSIÓN: Hay un predominio de referencias a operandos escalares.

9 Präsentat ion D.Mery 9 Arquitectura de Computadores [ Aumento de desempeño ] RISC Al 98% de los procedimientos llamados dinámicamente se les pasan menos de 6 argumentos, El 92% de los procedimientos usan menos de seis variables escalares locales. Además es poco común tener una larga secuencia ininterrumpida de llamadas a procedimientos seguida por la correspondiente secuencia de retornos. La realidad de las llamadas a procedimientos…

10 Präsentat ion D.Mery 10 Arquitectura de Computadores [ Aumento de desempeño ] RISC Al 98% de los procedimientos llamados dinámicamente se les pasan menos de 6 argumentos, El 92% de los procedimientos usan menos de seis variables escalares locales. Además es poco común tener una larga secuencia ininterrumpida de llamadas a procedimientos seguida por la correspondiente secuencia de retornos. La realidad de las llamadas a procedimientos… CONCLUSIÓN: Los programas permanecen confinados en una ventana bastante estrecha de profundidad de invocación a procedimientos… las referencias a operandos están muy localizadas.

11 Präsentat ion D.Mery 11 Arquitectura de Computadores [ Aumento de desempeño ] RISC Por lo tanto, intentar realizar una arquitectura de repertorio de instrucciones cercano al de los HLL, no es necesariamente una estrategia de diseño más efectiva. Surgen las arquitecturas RISC: reduced (or regular) instruction set computer Usan un gran número de registros Usan un diseño cuidadoso de los pipelines Usan un repertorio de instrucciones reducido

12 Präsentat ion D.Mery 12 Arquitectura de Computadores [ Aumento de desempeño ] RISC RISC: reduced (or regular) instruction set computer es una forma de diseñar CPU que contiene un conjunto de instrucciones muy simple y que casi todas las instrucciones toman el mismo tiempo de ejecución. Muchos procesadores modernos son RISC (ejemplos: SPARC, MIPS y PowerPC). Sin embargo, los CPU más utilizados como los x86 son CISC. RISC nace después de CISC!!!

13 Präsentat ion D.Mery 13 Arquitectura de Computadores [ Aumento de desempeño ] RISC ¿Cómo resolver el problema del tiempo consumido a las llamadas de procedimiento? ¿Cómo resolver el problema del tiempo tan grande que se consume en direccionar operandos escalares? ¿Cómo aprovechar la característica de las llamadas a procedimiento con poca profundidad?

14 Präsentat ion D.Mery 14 Arquitectura de Computadores [ Aumento de desempeño ] RISC ¿Cómo resolver el problema del tiempo consumido a las llamadas de procedimiento? ¿Cómo resolver el problema del tiempo tan grande que se consume en direccionar operandos escalares? ¿Cómo aprovechar la característica de las llamadas a procedimiento con poca profundidad? La solución está en el uso de muchos registros, y en su organización en ventanas de registros solapadas!

15 Präsentat ion D.Mery 15 Arquitectura de Computadores [ Aumento de desempeño ] RISC Ventanas de registros solapadas

16 Präsentat ion D.Mery 16 Arquitectura de Computadores [ Aumento de desempeño ] RISC Organización de las ventanas solapadas como un buffer circular Ventanas de registros solapadas

17 Präsentat ion D.Mery 17 Arquitectura de Computadores [ Aumento de desempeño ] RISC El uso optimizado de los registros es problema del compilador Ejemplo: ¿cómo organizar los registros? t

18 Präsentat ion D.Mery 18 Arquitectura de Computadores [ Aumento de desempeño ] RISC El uso optimizado de los registros es problema del compilador Ejemplo: ¿cómo organizar los registros? t Cada registro (virtual) es un nodo, cada interferencia es un arco entre nodos. A, B y C deben estar cargados simultáneamente. F A D

19 Präsentat ion D.Mery 19 Arquitectura de Computadores [ Aumento de desempeño ] RISC El uso optimizado de los registros es problema del compilador Ejemplo: ¿cómo organizar los registros? t R1 R2 R3 R4 Grafo de 4 colores El grafo se colorea de tal forma que dos nodos conectados no tengan el mismo color. F

20 Präsentat ion D.Mery 20 Arquitectura de Computadores [ Aumento de desempeño ] RISC ¿Por qué entonces CISC? El CISC ha sido motivado por dos razones: 1.El deseo de simplificar los compiladores, la idea es que las instrucciones de la CPU se asemejen a las instrucciones de los HLL. 2.Aumentar el desempeño de las CPU produciendo programas más pequeños y más rápidos.

21 Präsentat ion D.Mery 21 Arquitectura de Computadores [ Aumento de desempeño ] RISC ¿Por qué entonces CISC? El CISC ha sido motivado por dos razones: 1.El deseo de simplificar los compiladores, la idea es que las instrucciones de la CPU se asemejen a las instrucciones de los HLL. SIN EMBARGO, la tarea de encontrar justo la instrucción en un conjunto muy grande de instrucciones es una tarea compleja, muchas veces los compiladores terminan usando las instrucciones sencillas.

22 Präsentat ion D.Mery 22 Arquitectura de Computadores [ Aumento de desempeño ] RISC SIN EMBARGO, con CISC se disminuye el número de instrucciones no el número de bytes del código máquina, la decodificación de instrucciones más grandes no es necesariamente más rápida que la decodificación de instrucciones pequeñas. Las velocidades entre CISC y RISC son comparables. ¿Por qué entonces CISC? El CISC ha sido motivado por dos razones: 2.Aumentar el desempeño de las CPU produciendo programas más pequeños y más rápidos.

23 Präsentat ion D.Mery 23 Arquitectura de Computadores [ Aumento de desempeño ] RISC Características típicas de RISC: 1.Una instrucción por ciclo 2.Operaciones registro a registro 3.Modos de direccionamiento sencillos 4.Formatos de instrucción sencillos

24 Präsentat ion D.Mery 24 Arquitectura de Computadores [ Aumento de desempeño ] RISC RISC vs. CISC: El desarrollo de RISC representa una ruptura con la filosofía que detrás de esta tendencia. Los que están a favor de RISC han hecho estudios que determinan que RISC tiene mejor desempeño. RISC y CISC son claramente dos tendencias, es difícil determinar cuál de los dos es mejor porque No existe una pareja de máquinas CISC y RISC que sean comparables No existe un conjunto de programas definitivos Es difícil separar las habilidades del hardware de las habilidades del compilador Hoy ambas tendencias usan mezclas de ambas tecnologías!

25 Präsentat ion D.Mery 25 Arquitectura de Computadores [ Índice ]  8.1 Arquitectura RISC  8.2 Predicción de salto y prefetching  8.3 Escalabilidad

26 Präsentat ion D.Mery 26 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto Fetch (captación) Decodi- ficador Ejecu- ción Memo- ria Escri- tura Pipeline típico

27 Präsentat ion D.Mery 27 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto 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

28 Präsentat ion D.Mery 28 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto 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

29 Präsentat ion D.Mery 29 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto 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!

30 Präsentat ion D.Mery 30 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto 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 : ?

31 Präsentat ion D.Mery 31 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto 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

32 Präsentat ion D.Mery 32 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto 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

33 Präsentat ion D.Mery 33 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto AddressNormalDelayedOptimized 100LOAD X,ALOAD X,ALOAD X,A 101ADD 1,AADD 1,AJUMP 105 102JUMP 105JUMP 105ADD 1,A 103ADD A,BNOOPADD A,B 104SUB C,BADD A,BSUB C,B 105STORE A,ZSUB C,BSTORE A,Z 106STORE A,Z

34 Präsentat ion D.Mery 34 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto 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 adónde saltar sino 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 NOP elseMOV B,2 nextMOV C,1 : ? Cuál de las dos

35 Präsentat ion D.Mery 35 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto Las primeras versiones de las CPUs se detenían ante un salto condicional hasta no saber adó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.

36 Präsentat ion D.Mery 36 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto 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

37 Präsentat ion D.Mery 37 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto 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.

38 Präsentat ion D.Mery 38 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto 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é?

39 Präsentat ion D.Mery 39 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto 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ó?)

40 Präsentat ion D.Mery 40 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto ESTRATEGIA 1 DE PREDICCIÓN DINÁMICA: 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?

41 Präsentat ion D.Mery 41 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto ESTRATEGIA 2 DE PREDICCIÓN DINÁMICA: 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.

42 Präsentat ion D.Mery 42 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto ESTRATEGIA 3 DE PREDICCIÓN DINÁMICA: Muchas veces la dirección de salto es calculada en la instrucción por lo tanto en esta estrategia se guarda no sólo se escribe cómo fue la última ramificación, se guarda también la dirección del salto.

43 Präsentat ion D.Mery 43 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto PREDICCIÓN ESTÁTICA: Las predicciones dinámicas se definen sobre la marcha de la ejecución del programa. Esto requiere de hardware especializado y costoso. Las predicciones estáticas se definen a nivel de compilación Ejemplo: ¿cómo podría ayudar el compilador con este código? for (i=0;i<1000000;i++) {...}

44 Präsentat ion D.Mery 44 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto PREDICCIÓN ESTÁTICA 1: Algunas CPU poseen instrucciones especiales de ramificación (además de las normales) que contienen un bit en el que el compilador puede especificar que cree que la rama se tomará (o no se tomará)

45 Präsentat ion D.Mery 45 Arquitectura de Computadores [ Aumento de desempeño ] Predicción de salto PREDICCIÓN ESTÁTICA 2: 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. En esta modalidad también se usan las instrucciones de ramificación especial.

46 Präsentat ion D.Mery 46 Arquitectura de Computadores [ Índice ]  8.1 Arquitectura RISC  8.2 Predicción de salto y prefetching  8.3 Escalabilidad

47 Präsentat ion D.Mery 47 Arquitectura de Computadores [ Aumento de desempeño ] Escalabilidad Parámetros importantes: – Rendimiento (throughput): Número de operaciones por unidad de tiempo. – Tiempo de respuesta (response time): Tiempo desde que inicia un cómputo hasta que termina. – Fiabilidad (reliability): Fiabilidad del sistema con respecto a la fiabilidad de los componentes.

48 Präsentat ion D.Mery 48 Arquitectura de Computadores [ Aumento de desempeño ] Escalabilidad Un sistema computacional es escalable si su capacidad de procesamiento puede crecer añadiendo nodos adicionales: – Aumenta el rendimiento con un número creciente de nodos (idealmente de forma lineal). – El tiempo de respuesta decrece (o se mantiene cte. o crece lentamente) con un número creciente de nodos. – La fiabilidad el sistema aumenta con número creciente de CPUs (idealmente de forma logarítmica).


Descargar ppt "[ Arquitectura de Computadores ] AUMENTO DE DESEMPEÑO Präsentat ion Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia."

Presentaciones similares


Anuncios Google