DesempeñO

29
Desempeño Cecilia Hernández

Transcript of DesempeñO

Page 1: DesempeñO

Desempeño

Cecilia Hernández

Page 2: DesempeñO

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

Page 3: DesempeñO

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

Page 4: DesempeñO

Referencia: Intel 2005

Tendencia en tecnología

Page 5: DesempeñO

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)

Page 6: DesempeñO

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

Page 7: DesempeñO

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

Page 8: DesempeñO

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

Page 9: DesempeñO

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

Page 10: DesempeñO

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

Page 11: DesempeñO

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

Page 12: DesempeñO

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

Page 13: DesempeñO

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

Page 14: DesempeñO

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

Page 15: DesempeñO

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

Page 16: DesempeñO

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

Page 17: 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

Page 18: DesempeñO

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

Page 19: DesempeñO

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

Page 20: DesempeñO

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

Page 21: DesempeñO

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.

Page 22: DesempeñO

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

Page 23: DesempeñO

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.

Page 24: DesempeñO

CFP2006 14 diferentes aplicaciones

Disponible en http://www.spec.org/cpu2006/CFP2006/

Page 25: DesempeñO

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

Page 26: DesempeñO

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.

Page 27: DesempeñO

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

Page 28: DesempeñO

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?

Page 29: DesempeñO

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?