DesempeñO
-
Upload
stefano-salvatori -
Category
Technology
-
view
5.646 -
download
3
Transcript of DesempeñO
Desempeño
Cecilia Hernández
Desempeño en un sistema computacional
Factores? Tecnología
Velocidad a nivel de circuitos, reloj del sistema, buses, etc Proceso, cuántos transistores en un chip
Organización Tipo de procesador (RISC, CISC) Microarquitectura del procesador
Ejemplo: Ejecución paralela de instrucciones en la CPU Jerarquía de Memoria
Ejemplo: Memorias Cache, Memoria Principal Tipos de dispositivos E/S
Ejemplo: Discos, tarjetas de red, etc Número de procesadores en el sistema Software
Sistemas operativos, compiladores, drivers, bases de datos
Tecnología
Evoluciona rápidamente Ley de Moore
Número de transistores por pulgada cuadrada se duplica cada 18 meses
Velocidad del reloj aumenta ~30% cada año Capacidad de memoria aumenta ~60% al año Capacidad de almacenamiento en disco aumenta
~60% al año Sin embargo cada vez se hace más grande la
brecha entre la velocidad de reloj y la velocidad de acceso a memoria
Referencia: Intel 2005
Tendencia en tecnología
Brecha entre CPU y memoria
10
100
1000
189 91 93 95 97 99 01
x x
xx x
xo
o
oo
o
386
Pentium
Pentium ProPentium III
Pentium IV
velocidad de CPU (100x en 10 años)
brecha de memoria
velocidad de memoria RAM (10x en 8 años)
Buenas métricas de desempeño Tiempo de ejecución (o tiempo de respuesta)
Tiempo requerido para ejecutar un programa o un conjunto de programas (suite) de principio a fin Benchmarks (suite de programas destinados a integrar programas
con operaciones numéricas o científicos, interfaces gráficas, multimedia, aplicaciones de escritorio,etc)
Tiempo de ejecución de proceso compuesta por user CPU time (tiempo de CPU ejecutando instrucciones de proceso) y system CPU time (tiempo usado por sistema para realizar tareas en favor de proceso de usuario)
Elapsed Time : tiempo de respuesta que experimenta el usuario, incluye tiempo de sistema y tiempo que espera proceso en colas
Productividad (throughput) Cantidad de trabajo por unidad de tiempo Mide utilización de recursos
Se usa cuando múltiples usuarios ejecutan una aplicación, bases de datos, servidores webs, etc
Malas métricas de desempeño
Velocidad de reloj Ej. Pentium 4 versus Pentium-M
Índices de medición de desempeño máximo Millones de instrucciones por segundo (MIPS) Millones de instrucciones de punto flotante por
segundo (MFLOPS) Rara vez se alcanzan en programas reales
Programas sintéticos de evaluación Pequeños programas con una combinación de
instrucciones “representativa” Fácil optimizar CPU o compilador para la métrica
Optimización no se traslada a programas reales
Tiempo de ejecución de la CPU
Tiempo que la CPU demora en ejecutar un programa No incluye tiempo de espera introducido por SO o E/S Incluye tiempo en ejecutar instrucciones, incluyendo espera
por acceso a memoria Desempeño se define inversamente al tiempo de
ejecución Desempeño A= 1/(Tpo ejecución A)
Un procesador A tiene mayor desempeño que un procesador B si Tpo ejecucion A < Tpo ejecución B
Desempeños relativos Desempeño A/ Desempeño B = Tpo ejecución B/ Tpo Ejecución A
Definición tiempo de ejecución
Tpo de ejecución = #ciclos_reloj * tpo_ciclo_reloj Tpo_ciclo_reloj del procesador depende del procesador # ciclos de reloj depende del programa Por lo tanto, tiempo de ejecución depende del programa
Normalmente tpo de ciclo de un procesador está dado en GHz, 1 GHz, medida de frecuencia
Frecuencia = 1/tpo ciclo reloj Tpo ciclo reloj = 1/10exp9 = 1ns
Luego, una definición alternativa de tiempo de ejecución es en base a la frecuencia Tpo de ejecución = #ciclos_reloj / frecuencia_reloj
CPI: Ciclos por instrucción
Definición: número promedio de ciclos de reloj por instrucción: representa tiempo promedio de ejecución de una instrucción (en ciclos de reloj)
CPI = #ciclos_reloj / #instrucciones #ciclos_reloj = CPI * #instrucciones #ciclos_reloj = CPI * #instrucciones … amplificar por tpo_ciclo
Tpo ejecución CPU = #instruciones*CPI*tpo_ciclo_reloj
Arquitectos de computadores tratan de disminuir CPI o maximizar inverso (IPC, número de instrucciones por ciclo)
CPI aisladamente no es métrica de desempeño Es dependiente del programa o compilador Bueno como método de comparación midiendo diferencias en arquitectura con los
mismos programas y compiladores
CPI condensa información de ISA, implementación y programa medidoCPI es útil para comparar el desempeño de dos máquinas con la misma ISA ejecutando el mismo programa
Cálculo de CPI
Si conocemos el número de ciclos para la ejecución de cada tipo o clase de instrucción y sabemos composición del programa (mezcla de instrucciones)
fi = frecuencia relativa de ejecución de tipo i
CPIi = CPI de instrucción de tipo i
¿Cómo obtener esta información? Simuladores Profilers Contadores hardware
Incluídos en procesadores modernos, aunque funcionalidad es limitada
i
CPI = i iCPI f
Como medir el CPI promedio
Tpo ejecución CPU = #instruciones*CPI*tpo_ciclo_reloj Contar instrucciones ejecutadas en cada clase Por ejemplo, de sus programas escritos en lenguaje
ensamblador En tiempo de ejecución contar las instrucciones de máquina para
cada clase en el simulador SPIM y luego calcular #instrucciones totales y frecuencia por clase
En un programa escrito en alto nivel Usar un profiler (en Linux gprof)
Compilar con opción –pg (g++ -o ejemplo ejemplo.c –pg) Ejecutar aplicación, se genera gmon.out Ejecutar gprof con gmon.out como entrada y genera
Gprof ejemplo gmon.out > profile_ejemplo Descubrir las porciones de código mas usadas e instrumentarlas
Ejemplo
5 0.30 1 0.20 2 0.20 2 0.10 2 0.20
2.7 /
CPI
CPI ciclos instruccion
5
1
2 2 2
multiplicación ALU load store branch
Ejemplo
¿Cómo se gasta el tiempo en la ejecución del programa? Asumir ejecución de 100 instrucciones
ciclos_programa 5 30 1 20 2 20 2 10 2 20 270 ciclos
5 30%ciclos_mult 100 56%
2701 20
%ciclos_otroALU 100 7%270
2 20%ciclos_load 100 15%
2702 10
%ciclos_store 100 7%2702 20
%ciclos_branch 100 15%270
Otro ejemplo
Operación Frecuencia Ciclos CPIi * f %Tiempo
ALU 50% 1 0.5 33%
Load 20% 2 0.4 27%
Store 10% 2 0.2 13%
Branch 20% 2 0.4 27%
CPI = 0.5+0.4+0.2+0.4
CPI = 1.5
Mejora en el sistema de memoria reduce tiempo de ejecución de load y store a la mitad¿Cuál es el nuevo CPI?
Operación Frecuencia Ciclos CPIi * f %Tiempo
ALU 50% 1 0.5 42%
Load 20% 1 0.2 17%
Store 10% 1 0.1 8%
Branch 20% 2 0.4 33%
CPI = 0.5+0.2+0.1+0.4
CPI = 1.2
Aceleración (speedup)
Razón entre el desempeño de dos sistemasDesempeño = 1/(tiempo de ejecución)
Aceleración al agregar una mejora M:
Si programa, ISA, reloj no cambian
Ej. En ejemplo anterior, optimización de load/store
c/M s/MM
s/M c/M
s/M s/M s/MM
c/M c/M c/M
Desempeño T_CPUS = =
Desempeño T_CPU
#instrucciones ×CPI ×T_relojS =
#instrucciones ×CPI ×T_reloj
/
/
s MM
c M
CPIS
CPI
1.51.25
1.2S Mejora de 25% en el desempeño
Ley de Amdahl Predice mejora en desempeño global producto de una optimización local
Limitado por impacto de sección optimizada en tiempo de ejecución global
F: fracción del tiempo de CPU (antes de la mejora) atribuido a sección a mejorar
S: Aceleración conseguida para la sección mejorada
A mayor aceleración, menor impacto
porcentual en tiempo de ejecución
/
/
_
_s M
Mc M
T CPUS
T CPU
// /
/ /
//
__ (1 ) _
_ _
_ (1 ) _
1
(1 )
s Mc M s M
s M s MM
c Ms M
M
F T CPUT CPU F T CPU
ST CPU T CPU
SFT CPU F T CPUS
SF
FS
Ejemplo
Operación Frecuencia Ciclos CPI * f %Tiempo
ALU 50% 1 0.5 33%
Load 20% 2 0.4 27%
Store 10% 2 0.2 13%
Branch 20% 2 0.4 27%
M: reducción de tiempo de ejecución de load y store a la mitad
0.27 0.13 0.40
2
1 10.4 0.8(1 0.4)2
1.25
M
M
F
S
S
S
Ejemplo: Ley de Amdahl en acción
10.7
(1 0.7)S
N
Programa ocupa el 70% del tiempo ejecutandocódigo fácilmente paralelizable, y un 30%en código completamente secuencial (no paralelizable).
¿Cúal es la aceleración al ejecutar este programaen un computador paralelo con 2, 3, 4 y 5 CPUs?
¿Cuál es la máxima aceleración posible de alcanzar a través de paralelismo?
N 2 3 4 5 inf.
S 1.54 1.85 2.1 2.3 3.3
Otras métricas de desempeño populares
MIPS (millones de instrucciones por segundo)
En forma aislada, MIPS no es mejor que CPI para comparar desempeño Depende del compilador y los programas No considera diferencias en ISA Puede llevar a comparaciones erróneas
MFLOPS: millones de operaciones de punto flotante por segundo Similar a MIPS, pero utilizado para aplicaciones científicas Similares limitaciones: por ejemplo, no considera desempeño del sistema de
memoria ni paralelismo disponible en la aplicación, ambos de gran importancia en aplicaciones científicas
6
6
6
#
_ 10
#
# _ 10
_
10
instruccionesMIPS
T ejecucion
instruccionesMIPS
instrucciones CPI T reloj
f relojMIPS
CPI
Benchmarks
A benchmark is "a standard of measurement or evaluation" (Webster’s II Dictionary). A computer benchmark is typically a computer program that performs a strictly defined set of operations - a workload - and returns some form of result - a metric - describing how the tested computer performed. Computer benchmark metrics usually measure speed: how fast was the workload completed; or throughput: how many workload units per unit time were completed. Running the same computer benchmark on multiple computers allows a comparison to be made.
SPEC : www.spec.orgThe Standard Performance Evaluation Corporation (SPEC) is a non-profit
corporation formed to establish, maintain and endorse a standardized set of relevant benchmarks that can be applied to the newest generation of high-performance computers. SPEC develops suites of benchmarks and also reviews and publishes submitted results from their member organizations and other benchmark licensees.
Benchmarks
Benchmark: conjunto de programas reales representativo del trabajo que el sistema computacional realizará en la práctica
Benchmarks industriales SPEC CPU2006 Liberado recientemente. Agosto 2006
Al igual que SPEC CPU2000 includes suites para medir desempeño con enteros CINT2006 y punto flotante CFP2006
Mide CPU, Arquitectura de memoria y compiladores Linpack, NASA kernel: benchmarks científicos
Mayor énfasis a trabajo con matrices y punto flotante TPC-A, TPC-B, TPC-C, TPC-D: procesamiento transaccional
Para servidores de bases de datos Otras más especializadas
Olden (procesamiento de listas), SPECweb (servidores Web), SPEC JVM (Java), etc.
Benchmarks para computación de escritorios (PC) y computación móvil (laptops, PDAs) no estandarizadas Diferentes compañías utilizan su propio benchmark
CINT2006 (spec.org)Benchmark
Application Area
Brief Description
400.perlbench
C Programming Language
Derived from Perl V5.8.7. The workload includes SpamAssassin, MHonArc (an email indexer), and specdiff (SPEC's tool that checks benchmark outputs).
401.bzip2 C Compression Julian Seward's bzip2 version 1.0.3, modified to do most work in memory, rather than doing I/O.
403.gcc C C Compiler Based on gcc Version 3.2, generates code for Opteron.
429.mcf C Combinatorial Optimization
Vehicle scheduling. Uses a network simplex algorithm (which is also used in commercial products) to schedule public transport.
445.gobmk C Artificial Intelligence: Go
Plays the game of Go, a simply described but deeply complex game.
456.hmmer C Search Gene Sequence
Protein sequence analysis using profile hidden Markov models (profile HMMs)
458.sjeng C Artificial Intelligence: chess
A highly-ranked chess program that also plays several chess variants.
462.libquantum
C Physics / Quantum Computing
Simulates a quantum computer, running Shor's polynomial-time factorization algorithm.
464.h264ref C Video Compression
A reference implementation of H.264/AVC, encodes a videostream using 2 parameter sets. The H.264/AVC standard is expected to replace MPEG2
471.omnetpp
C++ Discrete Event Simulation
Uses the OMNet++ discrete event simulator to model a large Ethernet campus network.
473.astar C++ Path-finding Algorithms
Pathfinding library for 2D maps, including the well known A* algorithm.
483.xalancbmk
C++ XML Processing
A modified version of Xalan-C++, which transforms XML documents to other document types.
CFP2006 14 diferentes aplicaciones
Disponible en http://www.spec.org/cpu2006/CFP2006/
Resumen:Métricas de desempeño
6
66
10
#
1010
#
#
#
time
CK
time
CK
prog
CK
progtime
iii
progprog
CPU
instrPFMFLOPS
CPI
f
CPU
instrMIPS
f
instrCPI
f
CPUCiclosCPU
fCPIinstr
CPUCiclosCPI
Evaluación de desempeño
MIPS, MFLOPS Benchmarks Carga real (suite SPEC, otros benchmarks Windows)
Recordar Única métrica consistente es tiempo de ejecución Desempeño aumenta al aumentar la frecuencia del reloj,
disminuir el CPI, y optimizar los programas.
Ejercicio
Distribución de instrucciones en programa X sobre arquitectura Y
Cuál es el CPI de Y ejecutando X?
Tipo de instrucción Frecuencia CPI instrucción
A 0.5 1
B 0.3 3
C 0.2 2
Continuación ejercicio
Para la arquitectura anterior, en cuánto se aceleraría el programa si una mejora en la implementación reduce el CPI de la instrucción B a 1 ciclo?
Cuál es el nuevo CPI?
Continuación ejercicio
Durante la implementación de la mejora, se descubre que ésta sólo es posible si se aumenta el período del reloj en un 20%. Cuál es la aceleración real?