Descargar

Introducción al CPU (página 3)

Enviado por Pablo Turmero


Partes: 1, 2, 3, 4
edu.red MEJORAR LAS PRESTACIONES Dos opciones Reducir el número de ciclos de reloj Reducir el periodo del reloj

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

edu.red 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

edu.red 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

edu.red ECUACIÓN DE PRESTACIONES 34 Tiempo de ejecución CPU

edu.red INFLUENCIA DE FACTORES EN LAS PRESTACIONES 35

edu.red 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

edu.red 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

edu.red CÁLCULO DEL CPI CPIi= ciclos por instrucción del tipo i Ci= número de instrucciones del tipo i 38

edu.red 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

edu.red 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

edu.red 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

edu.red 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

edu.red 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

edu.red 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

edu.red MIPS COMO MEDIDA DE PRESTACIONES MIPS: Millions Instructions Per Second MIPS especifica la tasa de ejecución de instrucciones

De aquí se obtiene: 45

edu.red 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

edu.red 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

edu.red 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

edu.red 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

edu.red 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

edu.red 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

edu.red 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

edu.red 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

edu.red 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

edu.red SPEC2000 “CINT 2000” CINT2000 (Integer Components of SPEC CPU 2000) 55

edu.red SPEC2000 “CFP 2000” CFP 2000 (Floating point Components of SPEC CPU 2000) 56

edu.red SPEC PARA PENTIUM III Y PENTIUM IV 57

edu.red SPEC 2GH G5, 3.06GHz XEON, 3GHz PENTIUM 4: SPEED 58

edu.red SPEC 2GH G5, 3.06GHz XEON, 3GHz PENTIUM 4: THROUGHPUT 59

edu.red 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

Partes: 1, 2, 3, 4
 Página anterior Volver al principio del trabajoPágina siguiente