Download - 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.
2
Contenido Desempeño
Definición Fórmulas para el desempeño en una CPU Midiendo y evaluando el desempeño
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
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
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.
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.
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
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
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
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)
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
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)
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
14
Contenido Desempeño
Definición Fórmulas para el desempeño en una CPU Midiendo y evaluando el desempeño
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.
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
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
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
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?
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
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
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”)
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.
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
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
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
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
28
Fórmula de Desempeño
SegundosInstrucciones Ciclostiempo de CPUPrograma Instruccion Ciclo
La fórmula anterior puede ser re-escrita de la siguiente forma:
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
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?
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
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
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
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
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
36
Ejemplo da ley de Amdahl
Ley de Amdahl
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?
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
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
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???
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
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
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
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)
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)
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
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
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
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
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.
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.
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)
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)
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
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)
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
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
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)
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
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
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
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
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
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
65
Arquitectura del Conjunto Arquitectura del Conjunto de Instruccionesde Instrucciones
Adaptado a partir de la presentación del Prof. D. Patterson’s, 2000 UCB
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.
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
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.
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
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
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
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).
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
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)