Desempeño Cecilia Hernández
Desempeño en un sistema computacional <ul><li>Factores? </li></ul><ul><ul><li>Tecnología </li></ul></ul><ul><ul><ul><li>Ve...
Tecnología <ul><li>Evoluciona rápidamente </li></ul><ul><li>Ley de Moore  </li></ul><ul><ul><li>Número de transistores por...
<ul><li>Referencia: Intel 2005 </li></ul>Tendencia en tecnología
Brecha entre CPU y memoria 10 100 1000 1 89  91  93  95  97  99  01 x x x x x x o o o o o 386 Pentium Pentium Pro Pentium ...
Buenas métricas de desempeño <ul><li>Tiempo de ejecución (o tiempo de respuesta) </li></ul><ul><ul><li>Tiempo requerido pa...
Malas métricas de desempeño <ul><li>Velocidad de reloj </li></ul><ul><ul><li>Ej. Pentium 4 versus Pentium-M </li></ul></ul...
Tiempo de ejecución de la CPU <ul><li>Tiempo que la CPU demora en ejecutar un programa </li></ul><ul><ul><li>No incluye ti...
Definición tiempo de ejecución <ul><li>Tpo de ejecución = #ciclos_reloj * tpo_ciclo_reloj </li></ul><ul><ul><li>Tpo_ciclo_...
CPI: Ciclos por instrucción <ul><li>Definición: número promedio de ciclos de reloj por instrucción: representa tiempo prom...
Cálculo de CPI <ul><li>Si conocemos el número de ciclos para la ejecución de cada tipo o clase de instrucción y sabemos co...
Como medir el CPI promedio <ul><li>Tpo ejecución CPU = #instruciones*CPI*tpo_ciclo_reloj </li></ul><ul><li>Contar instrucc...
Ejemplo 5 1 2 2 2 multiplicación ALU load store branch
Ejemplo <ul><li>¿Cómo se gasta el tiempo en la ejecución del programa? </li></ul><ul><ul><li>Asumir ejecución de 100 instr...
Otro ejemplo 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 ...
Aceleración (speedup) <ul><li>Razón entre el desempeño de dos sistemas </li></ul><ul><li>Desempeño = 1/(tiempo de ejecució...
Ley de Amdahl <ul><li>Predice mejora en desempeño global producto de una optimización local </li></ul><ul><ul><li>Limitado...
Ejemplo M: reducción de tiempo de ejecución de load y store a la mitad 27% 0.4 2 20% Branch 13% 0.2 2 10% Store 27% 0.4 2 ...
Ejemplo: Ley de Amdahl en acción Programa ocupa el 70% del tiempo ejecutando código fácilmente paralelizable, y un 30% en ...
Otras métricas de desempeño populares <ul><li>MIPS (millones de instrucciones por segundo) </li></ul><ul><li>En forma aisl...
Benchmarks <ul><li>A  benchmark  is &quot;a standard of measurement or evaluation&quot; (Webster’s II Dictionary). A compu...
Benchmarks <ul><li>Benchmark: conjunto de programas reales representativo del trabajo que el sistema computacional realiza...
CINT2006 (spec.org) A modified version of Xalan-C++, which transforms XML documents to other document types. XML Processin...
CFP2006 <ul><li>14 diferentes aplicaciones </li></ul><ul><li>Disponible en  http://www.spec.org/cpu2006/CFP2006/ </li></ul>
Resumen: Métricas de desempeño
Evaluación de desempeño <ul><li>MIPS, MFLOPS </li></ul><ul><li>Benchmarks </li></ul><ul><li>Carga real (suite SPEC, otros ...
Ejercicio Distribución de instrucciones en programa X sobre arquitectura Y Cuál es el CPI de Y ejecutando X? 1 0.5 A 2 0.2...
Continuación ejercicio Para la arquitectura anterior, en cuánto se aceleraría el programa si una mejora en la implementaci...
Continuación ejercicio Durante la implementación de la mejora, se descubre que ésta sólo es posible si se aumenta el perío...
Upcoming SlideShare
Loading in...5
×

DesempeñO

5,660

Published on

Published in: Technology, Education
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total Views
5,660
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
188
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "DesempeñO"

  1. 1. Desempeño Cecilia Hernández
  2. 2. Desempeño en un sistema computacional <ul><li>Factores? </li></ul><ul><ul><li>Tecnología </li></ul></ul><ul><ul><ul><li>Velocidad a nivel de circuitos, reloj del sistema, buses, etc </li></ul></ul></ul><ul><ul><ul><li>Proceso, cuántos transistores en un chip </li></ul></ul></ul><ul><ul><li>Organización </li></ul></ul><ul><ul><ul><li>Tipo de procesador (RISC, CISC) </li></ul></ul></ul><ul><ul><ul><li>Microarquitectura del procesador </li></ul></ul></ul><ul><ul><ul><ul><li>Ejemplo: Ejecución paralela de instrucciones en la CPU </li></ul></ul></ul></ul><ul><ul><ul><li>Jerarquía de Memoria </li></ul></ul></ul><ul><ul><ul><ul><li>Ejemplo: Memorias Cache, Memoria Principal </li></ul></ul></ul></ul><ul><ul><ul><li>Tipos de dispositivos E/S </li></ul></ul></ul><ul><ul><ul><ul><li>Ejemplo: Discos, tarjetas de red, etc </li></ul></ul></ul></ul><ul><ul><li>Número de procesadores en el sistema </li></ul></ul><ul><ul><li>Software </li></ul></ul><ul><ul><ul><li>Sistemas operativos, compiladores, drivers, bases de datos </li></ul></ul></ul>
  3. 3. Tecnología <ul><li>Evoluciona rápidamente </li></ul><ul><li>Ley de Moore </li></ul><ul><ul><li>Número de transistores por pulgada cuadrada se duplica cada 18 meses </li></ul></ul><ul><li>Velocidad del reloj aumenta ~30% cada año </li></ul><ul><li>Capacidad de memoria aumenta ~60% al año </li></ul><ul><li>Capacidad de almacenamiento en disco aumenta ~60% al año </li></ul><ul><li>Sin embargo cada vez se hace más grande la brecha entre la velocidad de reloj y la velocidad de acceso a memoria </li></ul>
  4. 4. <ul><li>Referencia: Intel 2005 </li></ul>Tendencia en tecnología
  5. 5. Brecha entre CPU y memoria 10 100 1000 1 89 91 93 95 97 99 01 x x x x x x o o o o o 386 Pentium Pentium Pro Pentium III Pentium IV velocidad de CPU (100x en 10 años) brecha de memoria velocidad de memoria RAM (10x en 8 años)
  6. 6. Buenas métricas de desempeño <ul><li>Tiempo de ejecución (o tiempo de respuesta) </li></ul><ul><ul><li>Tiempo requerido para ejecutar un programa o un conjunto de programas (suite) de principio a fin </li></ul></ul><ul><ul><ul><li>Benchmarks (suite de programas destinados a integrar programas con operaciones numéricas o científicos, interfaces gráficas, multimedia, aplicaciones de escritorio,etc) </li></ul></ul></ul><ul><ul><ul><li>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) </li></ul></ul></ul><ul><ul><li>Elapsed Time : tiempo de respuesta que experimenta el usuario, incluye tiempo de sistema y tiempo que espera proceso en colas </li></ul></ul><ul><li>Productividad (throughput) </li></ul><ul><ul><li>Cantidad de trabajo por unidad de tiempo </li></ul></ul><ul><ul><li>Mide utilización de recursos </li></ul></ul><ul><ul><ul><li>Se usa cuando múltiples usuarios ejecutan una aplicación, bases de datos, servidores webs, etc </li></ul></ul></ul>
  7. 7. Malas métricas de desempeño <ul><li>Velocidad de reloj </li></ul><ul><ul><li>Ej. Pentium 4 versus Pentium-M </li></ul></ul><ul><li>Índices de medición de desempeño máximo </li></ul><ul><ul><li>Millones de instrucciones por segundo (MIPS) </li></ul></ul><ul><ul><li>Millones de instrucciones de punto flotante por segundo (MFLOPS) </li></ul></ul><ul><ul><li>Rara vez se alcanzan en programas reales </li></ul></ul><ul><li>Programas sintéticos de evaluación </li></ul><ul><ul><li>Pequeños programas con una combinación de instrucciones “representativa” </li></ul></ul><ul><ul><li>Fácil optimizar CPU o compilador para la métrica </li></ul></ul><ul><ul><ul><li>Optimización no se traslada a programas reales </li></ul></ul></ul>
  8. 8. Tiempo de ejecución de la CPU <ul><li>Tiempo que la CPU demora en ejecutar un programa </li></ul><ul><ul><li>No incluye tiempo de espera introducido por SO o E/S </li></ul></ul><ul><ul><li>Incluye tiempo en ejecutar instrucciones, incluyendo espera por acceso a memoria </li></ul></ul><ul><li>Desempeño se define inversamente al tiempo de ejecución </li></ul><ul><ul><li>Desempeño A= 1/(Tpo ejecución A) </li></ul></ul><ul><li>Un procesador A tiene mayor desempeño que un procesador B si </li></ul><ul><ul><li>Tpo ejecucion A < Tpo ejecución B </li></ul></ul><ul><li>Desempeños relativos </li></ul><ul><ul><li>Desempeño A/ Desempeño B = Tpo ejecución B/ Tpo Ejecución A </li></ul></ul>
  9. 9. Definición tiempo de ejecución <ul><li>Tpo de ejecución = #ciclos_reloj * tpo_ciclo_reloj </li></ul><ul><ul><li>Tpo_ciclo_reloj del procesador depende del procesador </li></ul></ul><ul><ul><li># ciclos de reloj depende del programa </li></ul></ul><ul><ul><li>Por lo tanto, tiempo de ejecución depende del programa </li></ul></ul><ul><li>Normalmente tpo de ciclo de un procesador está dado en GHz, </li></ul><ul><ul><li>1 GHz, medida de frecuencia </li></ul></ul><ul><ul><ul><li>Frecuencia = 1/tpo ciclo reloj </li></ul></ul></ul><ul><ul><ul><li>Tpo ciclo reloj = 1/10exp9 = 1ns </li></ul></ul></ul><ul><li>Luego, una definición alternativa de tiempo de ejecución es en base a la frecuencia </li></ul><ul><ul><li>Tpo de ejecución = #ciclos_reloj / frecuencia_reloj </li></ul></ul>
  10. 10. CPI: Ciclos por instrucción <ul><li>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) </li></ul><ul><li>CPI = #ciclos_reloj / #instrucciones </li></ul><ul><ul><li>#ciclos_reloj = CPI * #instrucciones </li></ul></ul><ul><ul><li>#ciclos_reloj = CPI * #instrucciones … amplificar por tpo_ciclo </li></ul></ul><ul><ul><li>Tpo ejecución CPU = #instruciones*CPI*tpo_ciclo_reloj </li></ul></ul><ul><li>Arquitectos de computadores tratan de disminuir CPI o maximizar inverso (IPC, número de instrucciones por ciclo) </li></ul><ul><li>CPI aisladamente no es métrica de desempeño </li></ul><ul><ul><li>Es dependiente del programa o compilador </li></ul></ul><ul><ul><li>Bueno como método de comparación midiendo diferencias en arquitectura con los mismos programas y compiladores </li></ul></ul><ul><li>CPI condensa información de ISA, implementación y programa medido </li></ul><ul><li>CPI es útil para comparar el desempeño de dos máquinas con la misma ISA ejecutando el mismo programa </li></ul>
  11. 11. Cálculo de CPI <ul><li>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) </li></ul><ul><li>f i = frecuencia relativa de ejecución de tipo i </li></ul><ul><li>CPI i = CPI de instrucción de tipo i </li></ul><ul><li>¿Cómo obtener esta información? </li></ul><ul><ul><li>Simuladores </li></ul></ul><ul><ul><li>Profilers </li></ul></ul><ul><ul><li>Contadores hardware </li></ul></ul><ul><ul><ul><li>Incluídos en procesadores modernos, aunque funcionalidad es limitada </li></ul></ul></ul>
  12. 12. Como medir el CPI promedio <ul><li>Tpo ejecución CPU = #instruciones*CPI*tpo_ciclo_reloj </li></ul><ul><li>Contar instrucciones ejecutadas en cada clase </li></ul><ul><li>Por ejemplo, de sus programas escritos en lenguaje ensamblador </li></ul><ul><ul><li>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 </li></ul></ul><ul><li>En un programa escrito en alto nivel </li></ul><ul><ul><li>Usar un profiler (en Linux gprof) </li></ul></ul><ul><ul><ul><li>Compilar con opción –pg (g++ -o ejemplo ejemplo.c –pg) </li></ul></ul></ul><ul><ul><ul><ul><li>Ejecutar aplicación, se genera gmon.out </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Ejecutar gprof con gmon.out como entrada y genera </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Gprof ejemplo gmon.out > profile_ejemplo </li></ul></ul></ul></ul></ul><ul><ul><ul><li>Descubrir las porciones de código mas usadas e instrumentarlas </li></ul></ul></ul>
  13. 13. Ejemplo 5 1 2 2 2 multiplicación ALU load store branch
  14. 14. Ejemplo <ul><li>¿Cómo se gasta el tiempo en la ejecución del programa? </li></ul><ul><ul><li>Asumir ejecución de 100 instrucciones </li></ul></ul>
  15. 15. Otro ejemplo 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? CPI = 0.5+0.2+0.1+0.4 CPI = 1.2 27% 0.4 2 20% Branch 13% 0.2 2 10% Store 27% 0.4 2 20% Load 33% 0.5 1 50% ALU %Tiempo CPI i * f Ciclos Frecuencia Operación 33% 0.4 2 20% Branch 8% 0.1 1 10% Store 17% 0.2 1 20% Load 42% 0.5 1 50% ALU %Tiempo CPI i * f Ciclos Frecuencia Operación
  16. 16. Aceleración (speedup) <ul><li>Razón entre el desempeño de dos sistemas </li></ul><ul><li>Desempeño = 1/(tiempo de ejecución) </li></ul><ul><li>Aceleración al agregar una mejora M: </li></ul><ul><li>Si programa, ISA, reloj no cambian </li></ul><ul><li>Ej. En ejemplo anterior, optimización de load/store </li></ul>Mejora de 25% en el desempeño
  17. 17. Ley de Amdahl <ul><li>Predice mejora en desempeño global producto de una optimización local </li></ul><ul><ul><li>Limitado por impacto de sección optimizada en tiempo de ejecución global </li></ul></ul><ul><ul><li>F: fracción del tiempo de CPU (antes de la mejora) atribuido a sección a mejorar </li></ul></ul><ul><ul><li>S: Aceleración conseguida para la sección mejorada </li></ul></ul><ul><ul><li>A mayor aceleración, menor impacto porcentual en tiempo de ejecución </li></ul></ul>
  18. 18. Ejemplo M: reducción de tiempo de ejecución de load y store a la mitad 27% 0.4 2 20% Branch 13% 0.2 2 10% Store 27% 0.4 2 20% Load 33% 0.5 1 50% ALU %Tiempo CPI * f Ciclos Frecuencia Operación
  19. 19. Ejemplo: Ley de Amdahl en acción Programa ocupa el 70% del tiempo ejecutando código fácilmente paralelizable, y un 30% en código completamente secuencial (no paralelizable). ¿Cúal es la aceleración al ejecutar este programa en 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? 3.3 2.3 2.1 1.85 1.54 S inf. 5 4 3 2 N
  20. 20. Otras métricas de desempeño populares <ul><li>MIPS (millones de instrucciones por segundo) </li></ul><ul><li>En forma aislada, MIPS no es mejor que CPI para comparar desempeño </li></ul><ul><ul><li>Depende del compilador y los programas </li></ul></ul><ul><ul><li>No considera diferencias en ISA </li></ul></ul><ul><ul><li>Puede llevar a comparaciones erróneas </li></ul></ul><ul><li>MFLOPS: millones de operaciones de punto flotante por segundo </li></ul><ul><ul><li>Similar a MIPS, pero utilizado para aplicaciones científicas </li></ul></ul><ul><ul><li>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 </li></ul></ul>
  21. 21. Benchmarks <ul><li>A benchmark is &quot;a standard of measurement or evaluation&quot; (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. </li></ul><ul><li>SPEC : www.spec.org </li></ul><ul><li>The 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. </li></ul>
  22. 22. Benchmarks <ul><li>Benchmark: conjunto de programas reales representativo del trabajo que el sistema computacional realizará en la práctica </li></ul><ul><li>Benchmarks industriales </li></ul><ul><ul><li>SPEC CPU2006 Liberado recientemente. Agosto 2006 </li></ul></ul><ul><ul><ul><li>Al igual que SPEC CPU2000 includes suites para medir desempeño con enteros CINT2006 y punto flotante CFP2006 </li></ul></ul></ul><ul><ul><ul><li>Mide CPU, Arquitectura de memoria y compiladores </li></ul></ul></ul><ul><ul><li>Linpack, NASA kernel: benchmarks científicos </li></ul></ul><ul><ul><ul><li>Mayor énfasis a trabajo con matrices y punto flotante </li></ul></ul></ul><ul><ul><li>TPC-A, TPC-B, TPC-C, TPC-D: procesamiento transaccional </li></ul></ul><ul><ul><ul><li>Para servidores de bases de datos </li></ul></ul></ul><ul><ul><li>Otras más especializadas </li></ul></ul><ul><ul><ul><li>Olden (procesamiento de listas), SPECweb (servidores Web), SPEC JVM (Java), etc. </li></ul></ul></ul><ul><ul><li>Benchmarks para computación de escritorios (PC) y computación móvil (laptops, PDAs) no estandarizadas </li></ul></ul><ul><ul><ul><li>Diferentes compañías utilizan su propio benchmark </li></ul></ul></ul>
  23. 23. CINT2006 (spec.org) A modified version of Xalan-C++, which transforms XML documents to other document types. XML Processing C++ 483.xalancbmk Pathfinding library for 2D maps, including the well known A* algorithm. Path-finding Algorithms C++ 473.astar Uses the OMNet++ discrete event simulator to model a large Ethernet campus network. Discrete Event Simulation C++ 471.omnetpp A reference implementation of H.264/AVC, encodes a videostream using 2 parameter sets. The H.264/AVC standard is expected to replace MPEG2 Video Compression C 464.h264ref Simulates a quantum computer, running Shor's polynomial-time factorization algorithm. Physics / Quantum Computing C 462.libquantum A highly-ranked chess program that also plays several chess variants. Artificial Intelligence: chess C 458.sjeng Protein sequence analysis using profile hidden Markov models (profile HMMs) Search Gene Sequence C 456.hmmer Plays the game of Go, a simply described but deeply complex game. Artificial Intelligence: Go C 445.gobmk Vehicle scheduling. Uses a network simplex algorithm (which is also used in commercial products) to schedule public transport. Combinatorial Optimization C 429.mcf Based on gcc Version 3.2, generates code for Opteron. C Compiler C 403.gcc Julian Seward's bzip2 version 1.0.3, modified to do most work in memory, rather than doing I/O. Compression C 401.bzip2 Derived from Perl V5.8.7. The workload includes SpamAssassin, MHonArc (an email indexer), and specdiff (SPEC's tool that checks benchmark outputs). Programming Language C 400.perlbench Brief Description Application Area Benchmark
  24. 24. CFP2006 <ul><li>14 diferentes aplicaciones </li></ul><ul><li>Disponible en http://www.spec.org/cpu2006/CFP2006/ </li></ul>
  25. 25. Resumen: Métricas de desempeño
  26. 26. Evaluación de desempeño <ul><li>MIPS, MFLOPS </li></ul><ul><li>Benchmarks </li></ul><ul><li>Carga real (suite SPEC, otros benchmarks Windows) </li></ul><ul><li>Recordar </li></ul><ul><ul><li>Única métrica consistente es tiempo de ejecución </li></ul></ul><ul><ul><li>Desempeño aumenta al aumentar la frecuencia del reloj, disminuir el CPI, y optimizar los programas. </li></ul></ul>
  27. 27. Ejercicio Distribución de instrucciones en programa X sobre arquitectura Y Cuál es el CPI de Y ejecutando X? 1 0.5 A 2 0.2 C 3 0.3 B CPI instrucción Frecuencia Tipo de instrucción
  28. 28. 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?
  29. 29. 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?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×