Arquitectura de Computadores II Clase #11

Arquitectura de Computadores II Clase #11 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2009 Veremos…  Rendimi

0 downloads 179 Views 823KB Size

Recommend Stories


Arquitectura de Computadores II Clase #3
Arquitectura de Computadores II Clase #3 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Veremos    Regis

Arquitectura de Computadores II Clase #9
Arquitectura de Computadores II Clase #9 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Veremos…  Rendimie

Story Transcript

Arquitectura de Computadores II Clase #11 Facultad de Ingeniería Universidad de la República

Instituto de Computación Curso 2009

Veremos… 

Rendimiento

1

Performance Medir, Reportar, y Sumarizar Tomar opciones inteligentes Ver a través de la “niebla” del marketing Entender el problema/motivación

   

Por qué algunos programas se comportan mejor en determinado hardware y no en otro? Qué factores de la performance del sistema dependen del hardware?

 

• (ejemplo: se necesita una nueva máquina, o un nuevo sistema operativo?)

Como afecta la performance el set de instrucciones? Y la organización?



Cuál tiene mejor performance? 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 (ExTime) 



Tiempo de Ejecución, tiempo de respuesta, latencia

Tareas por día, hora, semana, seg, ns … (Performance) 

Throughput, ancho de banda

2

Performance del Computador: TIEMPO 

Tiempo de respuesta (latencia)  



Cuanto lleva ejecutar un trabajo? Cuanto hay que esperar por el resultado de una consulta a la base de datos?

Throughput 

Cuantos trabajos pueden ejecutarse a la vez?



Cual es el tiempo de ejecución promedio?



Cuantos trabajos terminan por unidad de tiempo? • O cuanto trabajo se está llevando a cabo?



Preguntas típicas 

Cuanto se mejora si le agregamos un procesador al servidor?



Qué mejora se obtiene agregando una nueva máquina?

Tiempo de Ejecución 

Tiempo transcurrido 

Mide “todo”



Una medida útil, pero difícil de usar para comparar sistemas

• Accesos a memoria y disco, E/S, etc



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

Nos interesa: tiempo de usuario de la CPU 

Tiempo empleado en la ejecución de las líneas de código de “nuestro” programa

3

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 n =



ExTime(Y) --------ExTime(X)

=

Performance(X) -------------Performance(Y)

Recordar  

Velocidad del Concorde vs. Boeing 747 Throughput del Boeing 747 vs. Concorde

Ciclos de Reloj 

Una medida alternativa a los segundos para el tiempo de ejecución son los ciclos de reloj segundos ciclos segundos = ! programa programa ciclo



Representamos el tiempo en forma discreta mediante “ticks” :



Tiempo del ciclo = tiempo entre ticks = segundos por ciclo=período Frecuencia del reloj = ciclos por segundo

time



 

(1 Hz = 1 ciclo/seg = 1/seg) 1 Un reloj de 200 Mhz tiene un ciclo de: 200 !106 1

seg

1 = !10 "8 seg 2

-8

= 0,5 !10 seg = 5 !10-9 seg = 5 nanosegs

4

Tiempo de CPU Tiempo CPU = Segundos Programa  

Ciclos

Programa

x Segundos

Instrucciones

Ciclo

La performance es determinada por el tiempo de ejecución Variables que afectan la performance   



= Instrucciones x

# de ciclos por instrucción # de instrucciones del programa # de ciclos por segundo

Un error habitual es considerar que una sola de estas variables es indicativa de la performance 

Caso típico: frecuencia de reloj (# de ciclos por segundo)

Ciclos por Instrucción (Throughput) “Ciclos por Instrucción”

! # Segs Inst Ciclo Tiempo CPU = Recuento Inst ! CPI ! 1 Frecuencia

Tiempo CPU = # Inst

Prog

CPI = (Tiempo CPU ! Frecuencia)

! # Ciclos

Recuento Inst

= Ciclos

Recuento Inst

n

Tiempo CPU = Ciclo de Reloj ! " CPI j ! I j j =1

“Frecuencia de Instrucciones” n

CPI = " CPI j ! Fj j =1

siendo Fj =

Ij Recuento de Instrucciones

CPI debe medirse, ya que la referencia técnica no tiene en cuenta ineficiencias del cache, por ejemplo

5

Una Alternativa: MIPS   

MIPS (millones de instrucciones por segundo) MIPS=Recuento de Instrucciones/(Tiempo_Ejec x 10^6) MIPS=Frecuencia del Reloj/(CPI x 10^6) 



Obs: este número crece en programas con instrucciones sencillas

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 muy grande • El primer compilador usa 5 millones de insts. A, 1 millón de B y 1 millón de C • El segundo compilador usa 10 millones de insts. A instructions, 1 millón de B y 1 millón de C

 

Cual es “mejor” de acuerdo a los MIPS? Cual ejecuta más rápido?

Aspectos de la Performance de la CPU Recuento Inst

CPI

Programa Compilador

X X

(X)

Set de Inst.

X

X

Organización Tecnología  

X

Ciclo de Reloj

X X

Tener en cuenta esta matriz para mejorar la performance Invertir recursos donde se gasta el tiempo! (Ley de Amdahl)

6

Ejemplo: Cálculo de CPI

(1/2)

Máquina Base (Reg / Reg) Op ALU Load Store Branch

Freq 50% 20% 10% 20%

CPI 1 2 2 2

Freq*CPI(i) .5 .4 .2 .4 1.5

(% Time) (33%) (27%) (13%) (27%)

Mezcla Típica

Ejemplo: Cálculo de CPI CPI de la máquina

(2/2)

Mezcla de Instrucciones

5 x 30 + 1 x 20 + 2 x 20 + 2 x 10 + 2 x 20

100

= 2.7 c ic lo s /ins tru c c ió n

D o nd e s e g as ta e l tie m p o ?

7

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 



Op Otras Bifurc.



=> CPI real= 1.9

 



Si 30% bifurcaciones, “stall” 3 ciclos en 30% Freq 70% 30%

Cycles CPI(i) 1 .7 4 1.2

(% Tiempo) (37%) (63%)

O sea que 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/2)

Aceleración (Speedup) debida a mejora E: ExTime sin E Performance con E Speedup(E) = ------------= ------------------ExTime con E Performance sin E 

Tiempo Ejec con mejora = Tiempo de Ejec. NO afectado + (Tiempo de Ejec. afectado / Fracción mejorada) 

Ejemplo: 



Consideramos un programa que se ejecuta en 100 segs; la multiplicación es responsable de 80 segs. del total. Cuanto 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 (regla 20/80)

8

Ley de Amdahl

(2/2)

ExTimenew = ExTimeold x (1 - Fractionenhanced) + Fractionenhanced Speedupenhanced

Speedupoverall =



ExTimeold ExTimenew

1 =

(1 - Fractionenhanced) + Fractionenhanced Speedupenhanced

Ejemplo: 

Instrucciones de Punto Flotante mejorada para correr a 2X; pero únicamente 10% de las instrucciones son PF

ExTimenew = ExTimeold x (0.9 + .1/2) = 0.95 x ExTimeold 1 Speedupoverall = = 1.053 0.95

Ley de Amdahl: ejemplo

Se emplea el 30% del tiempo ejecutando código que no se puede paralelizar

Queremos ejecutar un programa en N CPUs

CPUs

(1/2)

Calcularemos aceleración para N = 2, 3, 4, 5, ∞ 2

3

4

5



Aceleración

9

Ley de Amdahl: ejemplo

(2/2)

S(∞)

2

S=

3

# CPUs

1 (30 % + (70% / N) ) / 100 % 2

3

4

5



1.54

1.85

2.1

2.3

3.3

CPUs Aceleración

Métricas de Performance Applicación Lenguaje de Programación

(1/2)

Respuestas por mes Operaciones por segundo

Compilador ISA

(millones) de Instrucciones por segundo: MIPS (millones) de operaciones (PF) por segundo: MFLOP/s

Datapath Control Function Units Transistores Pistas Pins

Megabytes por segundo Ciclos por segundo (clock rate)

10

Métricas de Performance 

(2/2)

Programas reales 

Se usan programas que representan una carga de trabajo típica, clases de aplicaciones típicas • Compiladores de C, procesadores de texto, herramientas CAD



Kernels 

Extractos “clave” de programas reales



Permiten estudiar aspectos aislados de la arquitectura

• Livermore Loops, Linpack 

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 )

  

Interesantes para arquitectos y diseñadores Fácil de estandarizar Pero… • Pueden ser “violados”

Benchmarks 

Benchmark Suites 



 

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 



Combinaciones de benchmarks sintéticos, focalizados en algún aspecto relevante: SPECCPU2000, SPECint1997, SPECfp1992, SPECWeb, SPECSFS, TPC-C, etc

SPEC (System Performance Evaluation Cooperative) 



(1/2)

10 programas resultan en un número único (“SPECmarks”)

SPEC92 

SPECInt92 (6 programas enteros) y SPECfp92 (14 programas de punto flotante), Flags del Compilador ilimitadas

11

Benchmarks 

SPEC95   









12 Integer 14 Floating Point

SPEC2006 



nuevo set de programas: SPECint95 (8 programas enteros) y SPECfp95 (10 programas de punto flotante) “benchmarks útiles por 3 años” Flags uniformes para todos los programas: SPECint_base95, SPECfp_base95

SPEC2000 



(2/2)

12 Integer 17 Floating Point

Los programas varían entre generaciones de SPEC Más información en http://www.spec.org/ 

Leer http://www.spec.org/cpu2006/Docs/readme1st.html

SPEC CPU2000: benchmarks de enteros

12

SPEC CPU2000: benchmarks de punto flotante

Resultados: SPECint 2000

13

Resultados: SPECfp 2000

Un ejemplo de optimización para que los números “den bien”: SPEC89 800





Un programa: 99% del tiempo en una única línea de código Ajustes (“mejoras”) al compilador en benchmarks “clave” introduce mejoras enormes (nasa7, matrix300)

700

600 tio ra 500 e c n a m r 400 fo r e p C E P 300 S 200

100

0

gcc

espresso

spice

doduc

nasa7

li

eqntott

matrix300

fpppp

tomcatv

Benchmark Compiler Enhanced compiler

14

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 que tienen en cuenta:        

Graphics and Workstation Performance High Performance Computing, OpenMP, MPI Java Client/Server Mail Servers Network File System Power and Performance Web Servers Virtualization (planificado)

Reportes de performance 





Los reportes deben permitir reproducir las mediciones de performance a otros investigadores Se deben publicar banderas del compilador para las métricas de base y optimizada (peak) Obs: ninguno de los benchmarks del SPEC CPU2006 tienen múltiples threads

15

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:  



Media Armónica de “velocidades” (rates) basada en el tiempo de ejecución:  

 

Σ(Ti)/n Ti es el tiempo de ejecución del i-simo los n programas que componen la carga de trabajo

n/Σ(1/Ri) Ri es una función de 1/Ti (por ejemplo MIPS)

Pregunta: cual es la mezcla de programas mas adecuada para medir la performance? “Pesan” todos lo mismo? Como respuesta surgen las medias ponderadas…

Resumen de performance

(2/3)



Media Aritmética ponderada basada en el tiempo de ejecución:



Media Armónica ponderada de “velocidades” (rates) basada en el tiempo de ejecución:



Cómo se eligen los pesos?



SPEC benchmarks: Tiempo de Ejecución Normalizado con respecto a una “máquina canónica”, útil para representar escalas de performance (ej., X veces más rápido que VAX)



Media Geométrica del tiempo de ejecución normalizado:







 



Σ(W i*Ti)

n/Σ(Wi/Ri)

En la comparación de dos sistemas NO influye la referencia! ( Π Tj / Nj ) 1/n = Π ( Tj / Nj )1/n Tiempos de ejecución normalizados consistentes, independientes de la referencia (no se cumple si usamos la media aritmética para el tiempos de ejecución normalizado) Se cumple: la razón de las medias geométricas es igual a la media geométrica de la razón de performance

16

Resumen de performance Sistema A 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

Sistema B Sistema C W(1) W(2) W(3) 10 20 0,5 0,909 0,999 100 20 0,5 0,091 0,001 110 40 55 20 18,19 20 10,09 20



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



Comparar resultados de diferentes medias:

 

Programa P1 Programa P2 Media aritmética Media geométrica Tiempo total

(3/3)

Normalizado a A Normalizado a B Normalizado a C A B C A B C A B C 1 10 20 0,1 1 2 0,05 0,5 1 0,1 0,02 10 1 0,2 50 5 1 5,05 10 5,05 1 1,1 25,025 2,75 1 1 0,63 1 1 0,63 1,5811 1,58 1 0,11 0,04 9,1 1 0,36 25,025 2,75

1 1 1 1 1

Evaluación de Performance  

Para bien o para mal, los benchmarks son tomados en cuenta..... Los buenos productos tienen:  







El diseño se debe orientar a mejorar la performance de las cargas de trabajo (programas) reales, y no solamente los programas que ayudan a vender! Tiempo total de ejecución es un resumen consistente de la performance Para una arquitectura dada la mejora de la performance viene de:   



Buenos resultados en los benchmarks Buena forma de sumarizar la performance

Incremento de la frecuencia de reloj (sin afectar los CPI!) Mejora en la organización del procesador para baja los CPI Mejora en los compiladores para bajar CPI y/o recuento deinstrucciones

Cuidado con mejorar un solo aspecto!

17

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.