Ejemplo: Un programa corre en 10 segundos en el ordenador X a 2 GHz ¿Cual es el número de ciclos de reloj? Queremos que el ordenador Y corra el mismo programa en 6 segundos, pero Y necesita un 10% más de ciclos ¿Cual debe ser la frecuencia de reloj de Y? 31
Solución:
CPU cycles on computer X = 10 sec × 2 × 109 cycles/s = 20 × 109 cycles CPU cycles on computer Y = 1.1 × 20 × 109 = 22 × 109 cycles Clock rate for computer Y = 22 × 109 cycles / 6 sec = 3.67 GHz
32 MEJORAR LAS PRESTACIONES
CICLOS POR INSTRUCCIÓN (CPI) Las instrucciones necesitan un número diferente de ciclos para ejecutarse. Multiplicación > suma Floating point > integer Accesos a memoria > accesos a registros CPI: media del número de ciclos de reloj por instrucción. Ejemplo: 33 CPI= 14/7 = 2
ECUACIÓN DE PRESTACIONES 34 Tiempo de ejecución CPU
INFLUENCIA DE FACTORES EN LAS PRESTACIONES 35
EJEMPLO Supongamos que tenemos dos implementaciones de la misma ISA Para un programa dado La máquina A tiene un rejoj con período 250 ps y CPI de 2.0 La máquina B tiene un rejoj con período 500 ps y CPI de 1.2 ¿Qué máquina es más rápida y por cuanto?
36
SOLUCIÓN
En número de instrucciones es el mismo = I CPU execution time (A) = I × 2.0 × 250 ps = 500 × I ps CPU execution time (B) = I × 1.2 × 500 ps = 600 × I ps La máquina A es más rápida que la B por un factor = 600 * I / 500 * I = 1.2 37
CÁLCULO DEL CPI CPIi= ciclos por instrucción del tipo i Ci= número de instrucciones del tipo i 38
EJEMPLO Un diseñador de código decide entre dos secuencias de código para una máquina. Hay tres tipos de instrucciones Clase A: requiere 1 ciclo/instr Clase B: requiere 2 ciclo/instr Clase C: requiere 3 ciclo/instr El primer código tiene 5 instrucciones: 2 de A, 1 de B, y 2 de C El segundo código tiene 5 instrucciones: 4 de A, 1 de B, y 1 de C Calcular los ciclos de CPU para cada código. ¿Cual es más rápido? ¿Cual es la CPI de cada programa? 39
SOLUCIÓN CPU cycles (1er programa) = (2×1) + (1×2) + (2×3) = 2+2+6 = 10 cycles CPU cycles (2º programa) = (4×1) + (1×2) + (1×3) = 4+2+3 = 9 cycles El segundo programa es más rápido, aún ejecutando una instrucción más.
CPI (1er programa) = 10/5 = 2 CPI (2º programa) = 9/6 = 1.5 40
EJEMPLO Dada una ISA para un procesador RISC, ¿cual es la CPI? ¿Cual es el porcentaje de tiempo usado por cada clase de instrucción?
41
EJEMPLO Dada una ISA para un procesador RISC, ¿cual es el CPI? ¿Cual es el porcentaje de tiempo usado por cada clase de instrucción?
CPI = 0.5 + 1.0 + 0.3 + 0.4 = 2.2 42
EJEMPLO: CÁLCULO DEL IMPACTO DE LOS SALTOS Supongamos inicialmente que todas las instrucciones tardan en ejecutarse 1 ciclo, CPI = 1.0 (ignorando los saltos). Supongamos que en cada salto se origina una penalización adicional de 3 ciclos. Si el 30% de las instrucciones del programa fuesen saltos como afectaría al CPI.
43
EJEMPLO: CÁLCULO DEL IMPACTO DE LOS SALTOS Supongamos inicialmente que todas las instrucciones tardan en ejecutarse 1ciclo, CPI=1.0 (ignorando los saltos). Supongamos que en cada salto se origina una penalización adicional de 3 ciclos. Si el 30% de las instrucciones del programa fuesen saltos como afectaría al CPI.
El nuevo CPI sería: CPI=1.9 Es decir se ha reducido casi a la mitad las prestaciones reales de la CPU. 44
MIPS COMO MEDIDA DE PRESTACIONES MIPS: Millions Instructions Per Second MIPS especifica la tasa de ejecución de instrucciones
De aquí se obtiene: 45
DESVENTAJAS DEL MIPS No tiene en cuenta las características de las instrucciones.
Varía entre programas del mismo ordenador.
Puede variar inversamente al rendimiento (ver ejemplo siguiente). 46
EJEMPLO MIPS Dos computadores ejecutan el mismo programa en una máquina a 4 GHz con tres tipos de instrucciones Clase A: requiere 1 ciclo/instr Clase B: requiere 2 ciclo/instr Clase C: requiere 3 ciclo/instr El número de instrucciones producido por la máquina 1: 5 billones Clase A 1 billones Clase B 1 billones Clase C El número de instrucciones producido por la máquina 2: 10 billones Clase A 1 billones Clase B 1 billones Clase C ¿Qué compilador produce mejor tiempo de ejecución? ¿Y mejor MIPS? 47
SOLUCIÓN Ciclos de CPU CPU cycles (compiler 1) = (5×1 + 1×2 + 1×3)×109 = 10×109 cycles CPU cycles (compiler 2) = (10×1 + 1×2 + 1×3)×109 = 15×109 cycles
Tiempo de ejecución Execution time (compiler 1) = 10×109 cycles / 4×109 Hz = 2.5 sec Execution time (compiler 2) = 15×109 cycles / 4×109 Hz = 3.75 sec
El compilador 1 genera un programa más rápido (menor tiempo de ejecución) 48
SOLUCIÓN MIPS rate MIPS = Instruction Count / (Execution Time × 106) MIPS (compiler 1) = (5+1+1) × 109 / (2.5 × 106) = 2800 MIPS (compiler 2) = (10+1+1) × 109 / (3.75 × 106) = 3200
El compilador 2 tiene mejor MIPS! 49
MEDIDAS DE PRESTACIONES: MFLOPS Millones de instrucciones de coma flotante por segundo.
Sólo puede aplicarse a las instrucciones FP. Las operaciones de FP no son consistentes entre máquinas. Ejemplo: Pentium tiene “sqrt,sin,cos” y CRAY C90 no La medida cambia mucho dependiendo de la instrucciones FP utilizadas ya que las hay muy lentas. 50
ACELERACIÓN: “Speed up” Es la relación entre los tiempos de ejecución de un cierto programa en dos máquinas diferentes. Aceleración asintótica: es la relación entre los tiempos de ejecución en un sistema monoprocesador y uno con infinitos procesadores.
Aceleración, ejemplo para un caso con dos procesadores frente al monoprocesador 51
ACELERACIÓN EN UN PROCESADOR SEGMENTADO Supongamos que un cierto programa tiene N instrucciones y supongamos que se realizan k etapas en la ejecución de cada instrucción en el procesador. El tiempo de ejecución en un procesador no segmentado es:
El tiempo de ejecución en un procesador segmentado en k etapas es:
La aceleración es por lo tanto:
Expresión que tiende a k cuando N tiende a infinito. 52
EVALUACIÓN MEDIANTE PROGRAMAS Cuatro niveles: Programas reales: compiladores de C, Tex, CAD y Spice Kernels: extractos pequeños de programas (Livermoore loops, Linpack) Benchmarks de juego: código con resultado conocido (criba de Erastótenes) Benchmarks sintéticos: están especialmente diseñados para medir el rendimiento de un componente individual de un ordenador, normalmente llevando el componente escogido a su máxima capacidad. 53
BENCHMARK SUITES: SPEC SPEC: System Performance Evaluation Cooperative SPEC89 Ejecuta 10 programas, devuelve un único valor. SPEC92 6 programas con números enteros 14 programas con números en fp Sin límites en las opciones de compilación SPEC95 10 programas con números enteros 10 programas con números en fp Dos opciones de compilación La mejor posible para cada programa La misma para todos 54
SPEC2000 “CINT 2000” CINT2000 (Integer Components of SPEC CPU 2000) 55
SPEC2000 “CFP 2000” CFP 2000 (Floating point Components of SPEC CPU 2000) 56
SPEC PARA PENTIUM III Y PENTIUM IV 57
SPEC 2GH G5, 3.06GHz XEON, 3GHz PENTIUM 4: SPEED 58
SPEC 2GH G5, 3.06GHz XEON, 3GHz PENTIUM 4: THROUGHPUT 59
PROBLEMAS DE LOS PROGRAMAS DE PRUEBA Problemas: Los benchmarks reducidos (toys) y los sintéticos no cargan la memoria principal del sistema de forma realista (todo el programa cabe en la memoria cache). Una vez que el benchmark se estandariza inmediatamente aparecen mejoras específicas para el mismo elevando los resultados de rendimientos. Si los benchmarks fuesen nuestros programas nos veríamos beneficiados ya que los interesados harían que nuestra aplicación fuese más rápida, pero no es este el caso. Los benchmarks reales son difíciles de realizar, situación que se agudiza en los casos de: Máquinas no construidas, simuladores más lentos. Benchmarks no portables. Compiladores no disponibles. 60
Página anterior | Volver al principio del trabajo | Página siguiente |