desempeño: concepto

74
1 Desempeño: concepto Desde el punto de vista de la compra de una maquina: Dado un conjunto de máquinas, cual tiene un mejor desempeño? el menor costo? la mejor relación desempeño/costo? Desde el punto de vista del diseño: Dadas varias decisiones de diseño, cual proporciona Mayor incremento de desempeño? Menor costo? Mejor desempeño/costo? Ambos necesitan de Una base para comparación Una métrica de avaluación Objetivo: entender la implicaciones en el desempeño de las decisiones en el diseño.

Upload: vinnie

Post on 13-Jan-2016

46 views

Category:

Documents


1 download

DESCRIPTION

Desempeño: concepto. Desde el punto de vista de la compra de una maquina: Dado un conjunto de máquinas, cual tiene un mejor desempeño? el menor costo? la mejor relación desempeño/costo? Desde el punto de vista del diseño: Dadas varias decisiones de diseño, cual proporciona - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Desempeño: concepto

1

Desempeño: concepto

Desde el punto de vista de la compra de una maquina:Dado un conjunto de máquinas, cual tiene

un mejor desempeño? el menor costo? la mejor relación desempeño/costo?

Desde el punto de vista del diseño:Dadas varias decisiones de diseño, cual proporciona

Mayor incremento de desempeño? Menor costo?Mejor desempeño/costo?

Ambos necesitan deUna base para comparaciónUna métrica de avaluación

Objetivo: entender la implicaciones en el desempeño de las decisiones en el diseño.

Page 2: Desempeño: concepto

2

Contenido Desempeño

Definición Fórmulas para el desempeño en una CPU Midiendo y evaluando el desempeño

Page 3: Desempeño: concepto

3

Métricas para el Desempeño

Compilador

Linguaje de programación

Aplicación

Data pathControl

Transistoresconexiones Pines

ISA

Unidades funcionales

(millones) de instruciones por – MIPS(millones) de (F.P.) operaciones de PF por segundo – MFLOP/s

Ciclos por segundo (clock rate)

Megabytes por segundo

Respuestas por mes

Operaciones relevantes por segundo

Cada métrica tiene su lugar y un propósito, y cada una puede ser medida

Page 4: Desempeño: concepto

4

Cuál tiene el mejor desempeño? Tempo para transportar un pasajero? 400

pasajeros? Tempo para ejecutar un proceso:

tempo de ejecución, tiempo de respuesta, latencia Tareas por día, hora, segundo, …:

throughput, ancho de banda

Plan

Boeing 747

BAD/Sur Concor

Speed

610 mph

1350 mph

DC to Paris

6.5 hours

3 hours

Passengers

470

132

Throughput (pmph)

286,700

178,200

Dos nociones de desempeño

Page 5: Desempeño: concepto

5

Cuál es mejor? Tiempo de el Concor vs. Boeing 747:

Concor 1350 mph / 610 mph = 2.2 veces mas rápido = 6.5 horas / 3 horas

Throughput de el Concor vs. Boeing 747: Boeing = 286,700 pmph / 178,200 pmph

= 1.6 veces mejor Boeing es 1.6 veces (60%) más rápido en

throughput Concor es 2.2 veces (120%) más rápido en

términos de tiempo de vuelo (tiempo de respuesta)

Nos vamos concentrar en el tiempo de respuesta para una única tarea.

Page 6: Desempeño: concepto

6

Ejemplo en el caso de computadores

 Los cambios siguientes diminuyen el tiempo de

respuesta, aumentan el throughput, o ámbos?

1. cambiar un procesador de un computador por otro más rápido;

2. Adición de más procesadores a un sistema multiprocesador, donde cada procesador corre un proceso en paralelo, a la misma velocidad.

Page 7: Desempeño: concepto

7

Solución La caida en el tiempo de respuesta casi

siempre mejora el throughput el primer caso tanto el tiempo de respuesta

como el throughput mejoran En el segundo caso, ningúm proceso

executará mas rapidamente (mejora solo en el throughput)

Si la demanda antes de la modificación fuese mayor que el throughput, el sistema seria obligado a secuenciar los programas.

En este caso la mejora de el througput (por la disposición de más procesadores) tambiém determina una mejoría en el tiempo de respuesta!!!

Resumen:Cambios en el tiempo respuesta en general afectan el throughput y vice-versa

Page 8: Desempeño: concepto

8

Como se mide el desempeño ?

Se utilizará el tiempo de respuesta

Cuando se consideran los sistemas de I/O se trabaja con los conceptos de throughput de el sistema

Page 9: Desempeño: concepto

9

Qué es el tempo en computador?

Definición mas intuitiva: Tiempo total para completar una tarea, incluyendo

accesos al disco, accesos a la memoria, actividades de I/O, overhead del sistema operacional, …

Puede incluir tiempo de ejecución de otros programas en un ambiente con multiprogramación

“tiempo real”, “tiempo de respuesta” o “tiempo transcurrido”

Hay un exceso de factores. Definición alternativa: es el tiempo en que o procesador

(CPU) trabaja solamente en su programa (una vez que múltiplos procesos pueden estar siendo ejecutados al mismo tempo) “tiempo de ejecución en la CPU” o “tiempo de CPU” Normalmente dividido en tiempo de CPU utilizado por

el sistema (en el sistema operacional) y tiempo de CPU utilizado por el usuario (en el programa de el usuario)

desempeño de la CPU: tiempo de la CPU utilizado por el usuário

Page 10: Desempeño: concepto

10

Desempeño de acuerdo con el tiempo:=> más rápido es mejor

Dadas dos máquinas X e Y si el desempeño de X fuera mejor que el de Y, tenemos:

o: Tiempo ejecución(y) > Tiempo ejecución(x)

1

desempeño(X)tiempo respuesta(X)

Definición de Desempeño

1 1

Tiempo ejecucion(x) Tiempo ejecucion(y)

Page 11: Desempeño: concepto

11

Se estamos interesados en comparar dos sistemas:

La proposición:

“X es n veces más rápido que Y” significa:

desempeño(X) tiempo respuesta(Y)

ndesempeño(Y) tiempo respuesta(X)

Comparando dos sistemas

Page 12: Desempeño: concepto

12

Desempeño relativo Ejemplo: Sea una máquina A ejecutando un

programa en 10 segundos y una máquina B ejecutando el mismo programa en 15 segundos,

cuántas veces A es más rápida que B??

Solución: sabemos que A es n veces más rápida que B si:

Desempeño(A)n

Desempeño(B)

o

Tiempo ejecucion(B)n

Tiempo ejecucion(A)

Page 13: Desempeño: concepto

13

Continuación ejemplo La razón entre los desempeños es: 15/10 =

1,5

Por lo tanto, A es 1,5 veces más rápida que B

En el ejemplo anterior podemos tambiém decir que B es 1.5 vezes más lenta que A, ya que

Desempeño(A)1,5

Desempeño(B)

significa :

Desempeño(A)Desempeño(B)

1,5

Page 14: Desempeño: concepto

14

Contenido Desempeño

Definición Fórmulas para el desempeño en una CPU Midiendo y evaluando el desempeño

Page 15: Desempeño: concepto

15

Unidades de tiempo En la perspectiva de el usuario: tiempo =

segundos Tiempo de CPU: computadores son

construidos utilizando un clock que cambia a una razón constante y determina cuando los eventos sucede en el hardware

Intervalos discretos de tiempo son llamados ciclos de reloj (o informalmente clocks, ticks o ciclos)

Período d el reloj : tiempo de un ciclo de reloj (por ejemplo, 2 nanosegundos o 2 ns)

tasa de reloj o frecuencia (por ejemplo 500 megahertz, o 500 MHz), que es el inverso del período de reloj.

Page 16: Desempeño: concepto

16

Tiempo de ejecución en la CPU de un programa

= Ciclos de reloj de el programa x Tiempo del ciclo de reloj

Ciclos de reloj para el programa= --------------------------------------- frecuencia de el reloj

Ciclos de reloj del programa= Número de instrucciones del programa X promedio de ciclos de reloj por instrucción (“CPI”)

CPI: es una forma de comparar dos máquinas con el mismo conjunto de instrucciones, una vez que el número de instrucciones es el mismo.

Midiendo el tiempo utilizando ciclos de reloj

Page 17: Desempeño: concepto

17

Medidas de Desempeño Es importante diferenciar entre el tiempo total de

ejecución de un programa y el tiempo utilizado por el procesador trabajando en provecho de un programa

El tempo utilizado por el procesador se denomina tiempo de procesador

El tiempo de procesador es el tiempo utilizado en las instrucciones exclusivas de un programa

El tiempo de un procesador no incluye el tiempo utilizado con (I/O), ni el tiempo utilizado con programas diferentes (no caso de sistemas compartidos)

En general el tiempo total utilizado en un programa es mayor que el tiempo de procesador

Page 18: Desempeño: concepto

18

Desempeño El tiempo de procesador puede ser dividido en:

tiempo de usuario: (tempo utilizado en la ejecución de las instrucciones de um programa)

tempo do sistema: tiempo utilizado por el sistema operacional trabajando en benefício de el programa

En la práctica esta diferencia es difícil de cuantificar.

El UNIX diferencia esos dos tiempos: Al ejecutar el comando time: 90.7u 12.9s 2:39 65%

Lo que significa: El tiempo de usuario es de 90,7 segundos El tiempo de el sistema es de 12.9s El tiempo total es 2 minutos y 39 segundos(159s) El percentaje de el tiempo de procesador es:

(90,7 + 12.9)/159 = 0,65

Page 19: Desempeño: concepto

19

Ejemplo

Tenemos un programa que se ejecuta en 10s en el computador A, que tiene 400MHz de clock. Queremos ayudar a un diseñador de computadores a construir un computador B, que debe ejecutar el mismo programa en 6s.

El puede aumentar bastante la tasa del clock, pero esto afectar el resto de el diseño de la CPU, haciendo que la máquina B necesite de 1.2 veces más clocks de el que la máquina A para ejecutar el programa. Quál debe ser la velocidad de clock de la máquina B?

Page 20: Desempeño: concepto

20

Solución Vamos calcular el número de ciclos de clock

necesarios para ejecutar el programa en la máquina A

A

A

Ciclos de Clock de el ProcesadorTiempo Procesador

A frecuencia de el clock

A6

Ciclos de Clock de el Procesador10 segundos

400x10 ciclos/segundo

6Ciclos de Clock de el Procesador 4000 x 10 ciclosA

Page 21: Desempeño: concepto

21

Solución

Tiempo utilizado por el procesador B:

A

B

1,2 x Ciclos de Clock de el ProcesadorTiempo Procesador

B frecuencia de el clock

61,2 x 4000 x 10 ciclos

6 segundosfrecuencia de el clock

B

6BFrecuencia de el clock 800 x 10 ciclos/segundos 800 MHz

Page 22: Desempeño: concepto

22

Interfaz Hardware/Software

El tiempo de ejecución también depende de el número de instrucciones de el programa

Esto sucede, considerando que el compilador genera instrucciones a ser ejecutadas y que la máquina debe ejecutarlas una a una

Ciclos de clocks de el programa= Número de instrucciones de el programa x promedio de ciclos de clock por instrucción (“CPI”)

Page 23: Desempeño: concepto

23

Ejemplo 2

Suponga que tenemos dos implementaciones para el mismo conjunto de instrucciones. La máquina A tiene un ciclo de reloj de 1ns y un CPI de 2.0 para un programa, en tanto que la máquina B tiene un ciclo de reloj de 2ns y una CPI de 1.2 para el mismo programa. Cuál máquina es más rápida, y por cuanto.

Page 24: Desempeño: concepto

24

Solución Sabemos que ambas máquinas ejecutan el

mismo número de instrucciones (estonces ejecutando el mismo programa y posen el mismo conjunto de instrucciones)

Vamos llamar I a el número de instrucciones ejecutadas por cada máquina

El número de ciclos de reloj puede ser obtenido de la siguiente forma:

1,2ICiclos

2,0ICiclos

B

A

Page 25: Desempeño: concepto

25

Continuación Ahora podemos calcular el tiempo de el

procesador para la Máquina A:

De manera similar para la máquina B:

A A A

A

Tiempo Ciclos Clock I 2,0 1ns

Tiempo 2 x I ns

B B B

B

Tiempo Ciclos Clock I 1,2 2ns

Tiempo 2,4 I ns

Page 26: Desempeño: concepto

26

Continuación Se puede concluir que la máquina A es más

rápida. El factor es calculado de la siguiente forma:

Se puede concluir que la máquina A es 1,2 veces más rápida que la máquina B, se estuvieran ejecutando e mismo programa

Desempeño de el procesador A Tiempo de ejecucion B

Desempeño de el procesador B Tiempo de ejecucion A

2,4 I ns1,2

2 I ns

Page 27: Desempeño: concepto

27

Tiempo de el procesador usando CPI

Se puede escribir la ecuación básica de desempeño en terminos de la cantidad de instrucciones de un programa, del CPI y de el ciclo de reloj

Estas fórmulas son muy útiles para calcular el desempeño (performance) de un procesador

La última fórmula relaciona los tres factores principales que afectan el desempeño

Tiempo de Número de Instrucciones CPIprocesador frecuencia de clock

Page 28: Desempeño: concepto

28

Fórmula de Desempeño

SegundosInstrucciones Ciclostiempo de CPUPrograma Instruccion Ciclo

La fórmula anterior puede ser re-escrita de la siguiente forma:

Page 29: Desempeño: concepto

29

Cálculo de el Desempeño (Resumen)

Tiempo de CPU para un programa

= # de Ciclos de clock para el programa x tiempo de un ciclo de clock

Substituyendo por ciclos de clock:

Tiempo de CPU para un programa = Número de instrucciones x CPI x Tiempo de el ciclo de clock

SegundosInstrucciones Ciclostiempo de CPUPrograma Instruccion Ciclo

Page 30: Desempeño: concepto

30

Tiempo de ciclo de clock: en la especificación de el computador (frecuencia de clock en las propagandas)

Número de instrucciones: Usar un simulador para contar las instrucciones Utilización de un programa depurador/profiler Contador en hardware – registrador especial

(Pentium II) CPI:

Afectado por las aplicaciones (diferentes mix de instrucciones), y implementación de la máquina (por ejemplo, sistema de memoria).

Cálculo: Tiempo de CPU N. de instrucciones x t. de el ciclo de clock

Contador en hardware – registrador especial (PII)

Cómo calcular lo 3 componentes de la eq?

Page 31: Desempeño: concepto

31

Otra forma de calcular el CPI Primero se calcula el CPI para cada una de

las n instrucciones específicas (add, sub, and, etc.)

Se calcula la frecuencia de cada instrucción individual no conjunto de programas.

Multiplique estos valores para cada instrucción y sume estos resultados, para obtener el CPI final.

n

ii i i

i 1

ICPI CPI F donde F

N. de Instrucciones

= frecuencia de instrucciones

Page 32: Desempeño: concepto

32

Si la operación de desvio fuera dos veces más rápida? Y si dos instrucciones lógicas/aritméticas pudieran ser

ejecutadas al mismo tiempo?

requerimos saber los limites de la mejoras de la arquitectura

Op Freci CPIi Prod (% Tiempo)

ALU 50% 1 .5 (23%)

Lectura 20% 5 1.0 (45%)

Escritura 10% 3 .3 (14%)

Salto 20% 2 .4 (18%)

2.2Mix de Instrucciones (Consumo de tiempo)

Ejemplo de un procesador RISC

Page 33: Desempeño: concepto

33

Suponga que un programa utiliza 100 s. para ser ejecutado en una máquina, siendo las operaciones de multiplicación responsables por 80s. Cuál debe ser a aceleración de estas instrucciones para que el programa ejecute 5 veces más rápido?

Mejorías en elementos de la arquitectura

T. de ejecucion afectado por la mejoraT. de Ejecucion nuevo

factor de mejora

T. de ejecucion no mejorado

segundos 20 n

segundos 80segundos 20

nn

segundos 80segundos 0

Page 34: Desempeño: concepto

34

Problemas de Desempeño En sistemas de computación podemos tener

varios procesadores trabajando simultaneamente

Esto es denominado, en general como paralelismo

Un sistema puede poser dos elementos, con modalidades de operación caracterizadas por diferentes velocidades

En este caso, el desempeño global e determinado por la componente de más baja velocidad

Esto es conocido como la ley de Amdahl

Page 35: Desempeño: concepto

35

Ley de Amdahl

Los efectos de esta ley puden ser entendidos por un ejemplo bien simple

Considerese una correra de relevos cuya equipo está compuesto por una tortuga y un conejo

Page 36: Desempeño: concepto

36

Ejemplo da ley de Amdahl

Ley de Amdahl

Page 37: Desempeño: concepto

37

Ley de Amdahl L tortuga cubre el recorrido inicial de 100

metros en T minutos

Con la intención de mejorar el desempeño de el equipo, el conejo entra en la segunda parte de la carrera

Consideremos el conejo tan rápido que el segundo trecho es recorrido en un tiempo despreciable, o sea, equivalente a zero

La tortuga gasto T/2 minutos para recorrer su trecho

La pergunta es: cuál es el progreso de el equipo con la entrada de el conejo ultra-rápido?

Page 38: Desempeño: concepto

38

Ley de Amdahl Como se pode ver, el tiempo total de la

correra paso a ser: Tiempo total = T/2 + 0 = T/2 minutos

No obstante la inmensa velocidad de el conejo, el tiempo total de el equipo fue solamente dos veces menor

Si reducimos la participación de la lenta tortuga para solamente 1/4 del recorrido, el tiempo total pasa a ser de 1/4* T

queda evidente, que la fracción de participación de la tortuga (o sea, de la parte más lenta) determina el desempeño global de el sistema

Page 39: Desempeño: concepto

39

El incremento de velocidad (Speedup) debido a una mejora E, es

Suponga que la mejora E acelere una fracción F de una tarea por un factor S y que lo restante de la tarea no sea afectado, entonces

Tiempo de Ejecuccion sin E Performance con E

Speedup(E)Tiempo de Ejecuccion con E Performance sin E

F

T. de Ejecucion(con E) ((1 F) ) T. de ejecucion(sen E)S

1 1Speedup(con E)

F 1 FS(1- F)S

Ley de Amdahl

Page 40: Desempeño: concepto

40

Como puede ser aplicada la Ley de Amdahl???

Vamos suponer que un programa es ejecutado en un computador que tiene un solo procesador

En este caso el programa gasta T minutos para ejecutarse

Ahora vamos suponer que el mismo programa es ejecutado en un sistema que tiene 10 procesadores

Cuanto será o grado de la mejora en el tiempo de ejecución de el programa???

Page 41: Desempeño: concepto

41

Speedup por el aumento de procesadores

Debemos tener en cuenta que solo una fracción F de el programa podrá ser ejecutado en paralelo

Esta fracción puede ser dada en % de el programa total (por ejemplo 80% de el programa, o 0,80 de el programa)

O sea, solo en esta fracción F los 10 procesadores podrán trabajar simultáneamente

En la otra fracción del programa (1 - F) o el 0,20 de el programa, solo un procesador podrá trabajar (el programa deberá ser ejecutado secuencialmente)

Los otros procesadores quedarán parados

Page 42: Desempeño: concepto

42

Ejemplo

Resumiendo: En este ejemplo, el tiempo de ejecución de la fracción F = 0.80 (o sea 80%) podrá ser disminuido para 1/10 de el tiempo anterior

20% de el programa (el 0,20) solo puede ser ejecutado por un solo procesador o sea: El tiempo de ejecución de el resto de el

programa (1- F) = 0.20 (o sea 20%) no será afectado

Aplicado la fórmula tenemos:57,3

28,0

1

1080.0

20,0

1

)1(

1

SF

Fspeedup

Page 43: Desempeño: concepto

43

Ejemplo (continuación) Esto muestra que 10 procesadores serán

capaces de ejecutar el programa 3.5 veces más rápido que un solo procesador

Si consideramos 100 el número de procesadores en paralelo, tenemos:

En este caso, el factor aumentará solo a 4,80!!!

80,4208,0

1

1008.0

20,0

1

)1(

1

SF

Fspeedup

Page 44: Desempeño: concepto

44

Conclusión sobre el problema

Queda claro que el desempeño de un sistema con múltiples procesadores (multiprocesador) está limitado por la fracción del programa que debe ser ejecutada de modo secuencial (sin usar paralelismo)

Page 45: Desempeño: concepto

45

Una mejora en un aspecto es limitada por el tiempo que consume ese aspecto

Colorario de la Lei:

• Haga que el caso más común sea ejecutado de la manera más rápida posíble.

• Pequeñas mejorias en el caso común pueden ser más efectivas de que grandes mejoras en los casos raros

Lei de Amdahl (enseñanzas para el diseñador de Sistemas de

Computación)

Page 46: Desempeño: concepto

46

Resumen: Fórmula de Tiempo de CPU

Número de Instrucción

es

Ciclos por instrucción

(CPI)

velocidad del Clock

Programa X X

Compilador X X

Conjunto de Instrucciones

X X

Organización X X

Tecnología X

Segundos Instruccioes Ciclos Segundos

tiempo de CPUPrograma Programa Instrucion Ciclo

Page 47: Desempeño: concepto

47

Contenido

Desempeño Definición Fórmulas para el desempeño en una CPU Midiendo y evaluando el desempeño

Programas benchmarks Resumiendo el desempeño Informando el desempeño

Page 48: Desempeño: concepto

48

Cuáles programas utilizar para hacer una comparación de

desempeño? Idealmente se debe ejecutar programas

típicos, con entradas típicas antes de comprar o antes de construir una máquina Llamado “workload”; Por exemplo: Ingeniero utiliza un compilador, planilla Un escritor utiliza procesador de textos,

programas de diseño, programas de compresión En algunas situaciones, esto es difícil porque:

No tenemos acceso a la máquina para hacer la medida de desempeño (“benchmark”) antes de la compra

No está bien definido el tipo de programa y/o el tipo de entrada a que va ser utilizada en el futuro

Page 49: Desempeño: concepto

49

Escogiendo Programas para la evaluación

Workload basado en objetivos reales

Benchmarks com apli-cacioes completas

Benchmarks depequeños núcleos

Micro-benchmarks

Pros

•representativo

•portable•Ampliamente usado

•Mejorías realmente útiles

•Fácil de ejecutar, aún en el inicio de diseño

•Descubrir cuellos de botella en potencia/ capacidad “pico”

Contras•No es portable•Difícil de medir, de descubrir la causa

•Menos representativo

•Fácil de manipular

•Pico no muestra el desempeño de las aplicaciones

Page 50: Desempeño: concepto

50

Benchmarks Obviamente, velocidad aparente del procesador

depende del código usado para probarlo Necesidad de estándares de la industria para que

procesadores diferentes puedan ser comparados de forma justa => programas benchmark

Existen compañías que crean estos benchmarks: código “típico” usado para avaluar sistemas

Trucos en el benchmarking: Configuraciones diferentes de sistemas Compilador y bibliotecas optimizadas (talvez

manualmente) para los benchmarks Especificación de pruebas direccionadas para una máquina Uso de benchmarks muy pequeños.

Necesitan ser cambiados cada 2 o 3 años una vez que diseñador se puede guiar para obtener buenos resultados en estos benchmarks estandard.

Page 51: Desempeño: concepto

51

Exemplo de benchmarks con workloads patronizados: SPEC

Conjunto de benchmarks para CPUs: Standard Performance Evaluation Cooperative (SPEC)

SPEC95: benchmark com 18 aplicaciones de naturaleza técnica, con las respectivas entradas 8 aplicaciones basadas en números enteros:

go, m88ksim, gcc, compress, li, ijpeg, perl, vortex 10 aplicaciones basadas en punto flotante:

tomcatv, swim, su2cor, hydro2d, mgrid, applu, turb3d, apsi, fppp, wave5

Medidas individualizadas para enteros (CINT95) y puntos flotantes (CFP95), relativas a una máquina base

Benchmarks distribuidos como código fuente Diseñadores de compiladores y de hardware

hacen optimizaciones con base en los benchmarks, por lo deben ser cambiados cada 3 años aproximadamente.

Page 52: Desempeño: concepto

52

02468

101214161820

go

88ks

im gcc

com

pre

ss li

ijp

eg

per

l

vort

ex

SP

EC

int

PA- 8000

21164

PPro

Intel Pentium Pro

Compaq/DEC Alpha HP PA

Desempeño SPECint95base (Out. 1997)

Page 53: Desempeño: concepto

53

0

10

20

30

40

50

60to

mca

tv

swim

su2c

or

hyd

ro2d

mg

rid

app

lu

turb

3d

apsi

fpp

pp

wav

e5

SP

EC

fp

PA-8000

21164

PPro

Intel Pentium Pro

Compaq/DEC Alpha HP PA

Desempeño SPECfp95base (Out. 1997)

Page 54: Desempeño: concepto

54

Primeras lecciones del SPEC

0

100

200

300

400

500

600

700

800

tomcatvfppppmatrix300eqntottlinasa7doducspiceespressogcc

BenchmarkCompiler

Enhanced compiler

SP

EC

perform

ance

ratio

Fig. 2.3

Page 55: Desempeño: concepto

55

SPEC2000 (CINT)Benchmark Language Categoría

164.gzip C Compresión175.vpr C Posicionamiento/rutas FPGA176.gcc C Compilador C181.mcf C Optimización Combinatoria186.crafty C Ajedrez197.parser C Procesamiento de textos252.eon C++ Visualización253.perlbmk C PERL254.gap C Teoría de Grupos, Interpretador255.vortex C Banco de Datos OO256.bzip2 C Comprensión300.twolf C Simulador de

rutas/posicionamiento

(http://www.spec.org/cpu2000)

Page 56: Desempeño: concepto

56

SPEC2000 (CFP)Benchmark Leng.Categoróa

168.wupwise F77 Cromodinámica Cuántica171.swim F77 Modelado de águas 172.mgrid F77 Solver Multi-grid173.applu F77 EDP Parabólicas/Elípticas177.mesa C Biblioteca gráfica 3-D178.galgel F90 Dinámica de fluidos computacional179.art C Reco. de imágenes/Redes neuronales183.equake C Propagación de ondas sísmicas187.facerec F90 Procesamiento de imágeness188.ammp C Química computacional189.lucas F90 Teoría de números191.fma3d F90 Simulación de choques a través del

método de elementos finitos200.sixtrack F77 Diseño de aceleradores nucleares301.apsi F77 Distribución de poluentes

Page 57: Desempeño: concepto

57

Ejemplo de benchmark para PCs

PCs: Benchmark WinStone 99, de Ziff Davis Benchmark en nivel de sistema, basado en

aplicaciones, que mide el desempeño global de un PC cuando ejecutaba los aplicativos Windows más vendidos en la época.

Trabaja a través de una serie de scripts, y utiliza el tiempo que el PC lleva para completar éstas actividades para cuantificar el desempeño

Las pruebas del Winstone no emulan lo que estos programas hacen, ellos ejecutan los aplicativos reales.

www1.zdnet.com/zdbop/winstone/winstone.html

Page 58: Desempeño: concepto

58

Note: 2 Máquinas Compaq usando K6-2 y K6-3:Frecuencia del clock del K6-2 es 1.125 veces más rápida, pero el valor Winstone 99 del K6-3 es 1.25 veces más rápido!

Company Processor Price Clock W99emachines Cyrix MII 653$ 250 14.5 CompUSA Intel Celeron 764$ 400 18.0 Compaq AMD K6-2 902$ 350 15.4 HP Intel Celeron 1,070$ 366 17.6 Compaq AMD K6-2 1,453$ 450 17.9 Compaq AMD K6-3 1,479$ 400 22.3 HP Intel Pentium II 1,483$ 400 18.9 NEC Intel Pentium III 1,680$ 400 22.0

Resultados Winstone 99 (W99)

Page 59: Desempeño: concepto

59

Uso del parámetro MIPS como métrica de Desempeño

MIPS significa: “millones de instrucciones por segundo”

6

número de instruccionesMIPS

tiempo de ejecucion 10

Page 60: Desempeño: concepto

60

Problema de la métrica MIPS MIPS solo especifica la razón de ejecución de

instrucciones

MIPS no tienen en cuenta el hecho que determinada instrucción ses más compleja que otra

Esto es, una instrucción IA puede demorar más tiempo en ser ejecutada que una instrucción IB porque IA es más compleja que IB

Por lo tanto, no se puede comparar dos máquinas M1 e M2 con diferentes conjuntos de instrucciones.

Conjuntos de instrucciones diferentes implican diferentes cantidades de instrucciones a ser ejecutadas en la máquinas M1 y M2

Page 61: Desempeño: concepto

61

Concepto de MFLOPS MFLOPS significa: “millones de operaciones

de punto flotante por segundo”

6

Número de operaciones en

punto flotante de un programaMFLOPS

tiempo de ejecucion 10

Page 62: Desempeño: concepto

62

Consideraciones sobre punto flotante

Una operación en ponto flotante es una operación de adición, sustracción, multiplicación o división aplicada sobre números expresados en precisión simple o doble.

Esta representación de datos es muy usada en cálculos científicos

La representación en punto flotante es especificada en los lenguajes de programación como un tipo

El tipo es especificado usando palabras reservadas del lenguajes como float, real, double o double precision

Page 63: Desempeño: concepto

63

Consideraciones sobre MFLOPS MFLOPS depende del programa, pues programas

diferentes requieren la ejecución de cantidades diferentes de operaciones de punto flotante

MFLOPS fue creado para medir operaciones de punto flotante y no debe ser aplicado fuera de este campo

MFLOPS es basado en operaciones y no en instrucciones de un programa

Por esto tiene un aceptación mucho mas fuerte que MIPS para comparar dos máquinas M1 y M2

Esto sucede porque el mismo programa ejecutado en M1 y M2 podrá ejecutar un número diferente de instrucciones, pero siempre ejecutará (teóricamente) la misma cantidad de operaciones en punto flotante

Page 64: Desempeño: concepto

64

Problemas con MFLOS MFLOPS no es una medida segura pues el

conjunto de operaciones de punto flotante no tiene una consistencia segura entre máquinas diferentes

En realidad, el número real de operaciones en punto flotante puede variar en M1 y M2

Por ejemplo: el CRAY-2 no tiene instrucción de división, entre tanto que el Motorola 68882 tiene división, raíz cuadrada, seno y coseno

Por lo tanto, en el CRAY-2 son necesarias varias operaciones en punto flotante para la realización de una única división, en cuanto que en el Motorola 68882 es necesaria una sola operación

Page 65: Desempeño: concepto

65

Arquitectura del Conjunto Arquitectura del Conjunto de Instruccionesde Instrucciones

Adaptado a partir de la presentación del Prof. D. Patterson’s, 2000 UCB

Page 66: Desempeño: concepto

66

Conjunto de Instrucciones

Sirve para comandar el hardware del computador, es necesario que manejemos su estructura:

Las palabras del lenguaje de máquina son llamadas instrucciones;

El vocabulario forma el conjunto de instrucciones, que determina la interfaz hardware/software.

Veremos el conjunto de instrucciones orientado a los programadores (lenguaje assembly) y a las máquina (lenguaje de máquina)

Se mostrará también las relaciones entre un lenguaje de alto nivel (como C) y el assembly.

Page 67: Desempeño: concepto

67

Conjunto de Instrucciones

Los lenguajes de máquina son bastante parecidos entre si. Aprendiendo bien uno queda fácil aprender otro.

Esto ocurre porque: Todos son basados en los mismos principios

(arquitectura de Von Neumann); Existe un conjunto de operaciones básicas que

todas las máquinas deben suministrar; Los diseñadores tiene el mismo objetivo:

encontrar un lenguaje que torne fácil la construcción del hardware y de los compiladores, maximizando el desempeño y minimizando los costos SIMPLICIDAD

Page 68: Desempeño: concepto

68

Implementación de Programas Un Programa de Computador es, básicamente, una

secuencia de comandos o instrucciones representando un algoritmo que debe ser ejecutado por la máquina.

Normalmente los programadores usan Lenguajes de Programación de Alto Nível (LAN), como Pascal e C, C++, JAVA, etc.

Estos lenguajes corresponden a un nivel de abstracción elevado.

Los lenguajes de los procesadores como el WNEANDER o el MIPS corresponden a un nivel de abstracción bajo, y son denominados “Linguajes de Bajo Nível (LBN)”

Por esta razón es necesario un proceso de traducción.

Page 69: Desempeño: concepto

69

El problema de Traducir un programa

Los lenguajes LBNs son definidos por una serie de Mnemónicos, que son, básicamente, símbolos alfabéticos que representan un código binario

Por ejemplo, en le caso del WNEANDER la instrucción de adicción es representada por ADD

Sabemos que esta instrucción va sumar al acumulador el valor almacenado en una dirección especificada en el segundo byte da instrucción.

Esto muestra que la instrucción ADD sigue un formato: el primer byte es el código correspondiente al

Mnemónico de la instrucción El segundo byte corresponde a la dirección del

segundo operando de la instrucción. El primer operando ya se encuentra en el acumulador

Page 70: Desempeño: concepto

70

Linguaje de Montaje del Linguaje de Máquina

Entretanto, para que un programa sea entendido por la máquina, es necesario que sus instrucciones estén codificadas en la forma binaria, en la forma de 0s y 1s.

En el WNEANDER esto queda claro, pues para usar la instrucción ADD debemos primero digitar su código de operación (OP-CODE)

Esto es: ADD corresponde a 30H o sea 001100002

El conjunto de instrucciones de una arquitectura (en la forma de Mnemónicos) corresponde al Lenguajes de Montaje de la arquitectura (Lenguaje ASSEMBLY)

El conjunto de instrucciones de una arquitectura (en la forma binaria) corresponde al Lenguaje de Máquina

Page 71: Desempeño: concepto

71

El problema de traducir un programa

Diferentes Niveles de Abstracción

procesador

Lenguaje de máquina

Lenguaje de bajo nivel (asembler)

Lenguaje de alto nivel (C++)

Lenguaje natural

Page 72: Desempeño: concepto

72

Traductores queda claro que tanto los programas

implementados en LANs como en LBN requieren ser traducidos a lenguaje de máquina del procesador

El proceso de traducción de un lenguaje de alto nivel (LAN) a lenguaje de máquina es realizado por compiladores o interpretadores

El proceso de traducción de un lenguaje de montaje para lenguaje de máquina es realizado por traductores, denominados Montadores (o Assemblers).

Page 73: Desempeño: concepto

73

Compiladores e Interpretadores Compiladores son traductores que después de

varias fases (análisis léxico, análisis sintáctico, análisis semántico, generación de código intermediario, optimización de código y generación de código de montaje) generan un programa ejecutable.

En la verdad, este programa ejecutable deberá ser cargado en la memoria para ser ejecutado. Quine realiza esta tarea es un programa del sistema operacional (programa cargador o loader)

Los Interpretadores no generan código ejecutable.

Los interpretadores traducen cada instrucción del programa (en LAN o Assembly) y la ejecutan

Page 74: Desempeño: concepto

74

Maneras como se realiza una traducción

Tenemos tres tipos de traductores: Montadores, Compiladores e Interpretadores

montador ejecuciónCódigo

fuente

(leng. Montaje)

Código

Objeto

compilador ejecuciónCódigo

fuente

(LAN)

Código

Objeto

Interpretador ejecuciónCódigo

fuente

(LAN o Assembly)