Publicado el 13 de Octubre del 2020
524 visualizaciones desde el 13 de Octubre del 2020
943,0 KB
15 paginas
Creado hace 14a (09/09/2010)
Arquitectura de Computadores II
Clase #9
Facultad de Ingeniería
Universidad de la República
Instituto de Computación
Curso 2010
Veremos…
Rendimiento
Rendimiento (Performance)
Ver a través de la “niebla” del marketing
Tomar opciones inteligentes
Entender el problema/motivación
¿Por qué algunos programas se comportan mejor en
determinado hardware y no en otro?
¿Qué factores del rendimiento de un sistema dependen del
hardware?
• (ejemplo: se necesita una nueva máquina, o un nuevo sistema
operativo?)
¿Cómo afecta el set de instrucciones al rendimiento? ¿Y la
organización?
¿Cuál es mejor?
Plane
DC to
Paris
Speed
Passengers
Throughput
(pmph)
Boeing 747
6.5 hours
610 mph
470
286,700
Concorde
3 hours
1350 mph
132
178,200
Tiempo de ejecución de una tarea
Tiempo de Ejecución, tiempo de respuesta, latencia
Tareas por día, hora, semana, seg, ns …
Throughput
Rendimiento del Computador:
TIEMPO
Tiempo de ejecución o respuesta (latencia)
¿Cuánto tiempo lleva ejecutar un trabajo?
¿Cuánto hay que esperar por el resultado de una consulta a la
base de datos?
Throughput
¿Cuántos trabajos pueden ejecutarse a la vez?
¿Cuál es el tiempo de ejecución total de varias tareas?
¿Cuántos trabajos terminan por unidad de tiempo?
Preguntas típicas
¿Cuánto se mejora si agregamos un procesador al servidor?
¿Qué mejora se obtiene agregando una nueva máquina?
MIPS
MIPS (millones de instrucciones por segundo)
MIPS=Recuento de Instrucciones/(Tiempo_Ejec x 10^6)
Ejemplo
Dos diferentes compiladores se prueban en una máquina de 100 MHz
con tres clases de instrucciones A, B, y C, que requieren uno, dos y
tres ciclos, respectivamente. Ambos compiladores producen código
para un programa que al correrse provoca la ejecución de:
• Compilador 1: 5 millones de instrucciones A, 1 millón de B y 1 millón de C
• Compilador 2: 10 millones de instrucciones A, 1 millón de B y 1 millón de
C
Cual ejecuta más rápido?
Cual es “mejor” de acuerdo a los MIPS?
Tiempo de Ejecución
Tiempo transcurrido
Mide “todo”
• Accesos a memoria y disco, E/S, etc
Una medida útil, pero difícil de usar para comparar sistemas
Tiempo de CPU
No cuenta E/S, o el tiempo que se emplea en ejecutar otros
programas (en sistemas multitarea)
Se puede dividir en tiempo del sistema y tiempo de usuario
Definición de Performance
Performance: unidades de ejecución por unidad de tiempo
Más grande es mejor
Performance(x) = 1/ Execution_time(x)
"X es n veces más rápido que Y" significa
ExTime(Y) Performance(X)
n = --------- =
--------------
ExTime(X) Performance(Y)
Ciclos de Reloj
Tiempo discreto en “ticks” de reloj:
Tiempo de ciclo = tiempo entre ticks = período (seg/ciclo)
time
Frecuencia del reloj (ciclos / seg)
(1 Hz = 1 ciclo/seg )
Un reloj de 200 Mhz tiene un período de:
1
200×10 6ciclo
seg
=
1
2
×10−8 seg/ciclo = 5×10-9 seg = 5 nanosegs/ciclo
Período constante => #ciclos de reloj es una medida
alternativa para el tiempo de ejecución
Tiempo de CPU=#ciclos× período
Tiempo de CPU=
#ciclos
frecuencia
Ecuación de performance de CPU
Tiempo de CPU=#ciclos× período
Tiempo de CPU=#instrucciones×
#ciclos
#instrucciones
× período
Tiempo CPU = Segundos = Instrucciones x Ciclos x Segundos
Tiempo CPU = Segundos = Instrucciones x Ciclos x Segundos
Programa
Programa
Programa Instrucciones Ciclo
Programa Instrucciones Ciclo
Identificamos tres factores que afectan la performance
CPI: # ciclos / # instrucciones
Recuento de instrucciones: # de instrucciones del programa
Frecuencia (o período): # de ciclos por segundo
Un error habitual es considerar que uno o dos de estos
factores son determinantes de la performance
Caso típico: frecuencia de reloj
MIPS = Frecuencia del Reloj / (CPI x 10^6)
Aspectos de la Performance de
la CPU
Recuento Inst
CPI
Ciclo de Reloj
Programa
Compilador
Set de Inst.
Organización
Tecnología
X
X
X
(X)
X
X
X
X
Ciclos por Instrucción
En un set de n (categorías de) instrucciones
n
#ciclos j=∑
#ciclos=∑
j=1
#ciclos
#instrucciones
CPI =
n #ciclos j
#ocurrencias j
j=1
n #ciclos j
#ocurrencias j
=∑
j =1
×#ocurrencias j
×
#ocurrencias j
#instrucciones
“Frecuencia de Instrucciones”
n
CPI =∑
j=1
CPI j× F j , siendo CPI j=
#ciclos j
#ocurrencias j
, F j=
#ocurrencias j
#instrucciones
CPIj debe medirse, ya que la referencia técnica no tiene en cuenta,
por ejemplo, misses de cache o retardos en pipeline.
Ejemplo: Cálculo de CPI (1/2)
Op
ALU
Load
Store
Branch
Freq CPI
50% 1
20% 2
10% 2
20% 2
Mezcla Típica
Fj*CPIj (% Tiempo)
(33%)
(27%)
(13%)
(27%)
.5
.4
.2
.4
1.5
Ejemplo:
Impacto del Branch Stall
Se asume CPI = 1.0 ignorando bifurcaciones (ideal)
En realidad se produce un “stall” de 3 ciclos por
bifurcación
Si 30% bifurcaciones, “stall” 3 ciclos en 30%
Op
Otras
Bifurc.
Freq
Cycles Fj x CPIj (% Tiempo)
70% 1
30% 4
.7
1.2
(37%)
(63%)
CPI real= 1.9
La máquina real es 1/1.9 = 0.52 veces “más rápida” (o
sea el doble de lenta!)
Ley de Amdahl (1/3)
Aceleración (Speedup) debida a mejora E:
ExTime sin E Performance con E
Speedup(E) = ------------- = -------------------
ExTime con E Performance sin E
La aceleración global depende no sólo del factor de aceleración de la mejora, sino
también del tiempo que se aprovecha esa mejora
Ejemplo:
Consideramos un programa que se ejecuta en 100 segs; la multiplicación
es responsable de 80 segs. del total. ¿Cuánto debemos mejorar la
multiplicación para que el programa se ejecute 4 veces más rápido?
Principio: mejorar el caso más común
Ley de Amdahl (2/3)
T old=T no afectadoT afectado old
T new =T no afectadoT afectado new
T afectado old
speedupafectado
T new =T no afectado
T new =1−FracciónafectadaT old
, donde speedupafectado=
T afectado old
T afectado new
Fracciónafectada T old
speedupafectado
speeduptotal=
T old
T new
1
=
1−Fracciónafectada
Fracciónafectada
speedupafectado
Observación: Fracciónafectada es con respecto a Told
Ley de Amdahl (3/3)
speeduptotal=
T old
T new
=
1
1−Fracción afectada
Fracción afectada
speedupafectado
Ejemplo:
Instrucciones de Punto Flotante mejorada para correr a 2X; pero únicamente 10%
del tiempo se consume en instrucciones de Punto Flotante
Speeduptotal =
1
0.9 + 0.1 / 2
= 1.053
Métricas de Performance
Kernels
Extractos “clave” de programas reales
Synthetic benchmarks
Filosofía similar a kernels, intentan promediar frecuencia de
operaciones de un gran conjunto de programas típicos
• Whetstone (numérico), Dhrystone (E/S datos )
Fácil de estandarizar, pero…
• Pueden ser “violados”
Programas reales
Se usan programas que representan una carga de trabajo
típica, para determinada clase de aplicaciones
• Compiladores de C, procesadores de texto, herramientas CAD
Benchmarks
Benchmark Suites
Combinaciones de benchmarks, enfocados en algún aspecto
relevante: SPECCPU2000, SPECint1997, SPECfp1992, SPECWeb,
SPECSFS, TPC-C, etc.
SPEC (System Performance Evaluation Cooperative)
Las compañías se ponen de acuerdo en un conjunto de programas y
entradas reales
Aún pueden ser “violados”…
Buen indicador de performance (y tecnología de compiladores)
SPEC89, 92, 95, 2000, 2006
Los programas varían entre generaciones de SPEC
Más información en http://www.spec.org/
SPEC CPU2000:
benchmarks de enteros
SPEC CPU2000:
benchmarks de punto flotante
La CPU no es todo…
…otros benchmarks SPEC
SPECint y SPECfp miden tareas de computación intensiva,
enfatizando los siguientes elementos de la arquitectura:
CPU
Arquitectura de memoria
Compiladores
NO atacan otros elementos tales como el sistema operativo,
la red, los gráficos o el subsistema de E/S. Existen otros
benchmarks, por ejemplo para:
Graphics and Workstation Performance
High Performance Computing, OpenMP, MPI
Java Client/Server
Mail Servers
Network File System
Web Servers
Reportes de performance
Los reportes deben permitir
reproducir las mediciones de
performance
Resumen de performance (1/3)
Interesa tener UN número que resuma la performance de un
sistema
Media Aritmética basada en el tiempo de ejecución:
S (Ti)/n
Ti es el tiempo de ejecución del i-ésimo de los n programas que
componen la carga de trabajo
Pregunta: cual es la mezcla de programas mas adecuada para
medir la performance? “Pesan” todos lo mismo?
Resumen de performance (2/3)
Media Aritmética ponderada
S (Wi*Ti)
Pero, cómo se eligen los pesos?
SPEC benchmarks: SpecRatio = Tiempo de Ejecución Normalizado
con respecto a una “máquina canónica”, (Y corre n veces más
rápido que X)
En cociente de ratios de dos sistemas NO influye la referencia!
Para promediar razones (como SpecRatio) se usa la Media
Geométrica:
( P
La media geométrica de las razones Tj / Nj es igual a la razón entre las
muestraj)1/n = P
( Tj / Nj )1/n
medias geométricas de los Tj y los Nj
La razón entre las medias geométricas es igual a la media geométrica
de las razones entre muestras una a una
Resumen de performance (3/3)
Sistema A Sistema B Sistema C W(1) W(2)
Programa P1 (segs)
Programa P2 (segs)
Tiempo total (segs)
Media aritmética: W(1)
Media aritmética: W(2)
Media aritmética: W(3)
1
1000
1001
500.5
91.909
1.999
10
100
110
55
18.19
10.09
W(1) pesa igual P1 y P2
W(2) peso inversamente proporcional a Tiempo de Ejecución en B
W(3) peso inversamente proporcional a Tiempo de Ejecución en A
Comentarios de: clase #9 - Rendimiento - Arquitectura de Computadores II (0)
No hay comentarios