Você está na página 1de 17

📼

Desempenho
Desempenho
• Desempenho é a chave para entender a motivação subjacente para o hardware e sua
organização
• Medir, relatar e resumir o desempenho permite que os usuários façam:
• escolhas inteligentes
• vejam além do hype do marketing
• Por que alguns hardwares são melhores que outro para programas diferentes?
• Quais fatores de desempenho do sistema são relacionados ao hardware?
• Como o conjunto de instruções de uma máquina afetam o desempenho?

O que medimos?
Define o desempenho…

Quão rápido é Concorde em comparação com o Boeing 747?

Quão grande é o Boeing 747 em comparação com Douglas DC-8?


Então quais desses aviões tem o melhor desempenho?

Entendendo Desempenho

Desempenho 1
O algoritmo determina o número de instruções do código fonte e o número de
operações de 1/0 executadas

A linguagem de programação, o compilador e a arquitetura determinam o número


de instruções de máquina executadas por cada instrução do código fonte

O processador e o sistema de memória determinam a rapidez com que as


instruções são executadas

O sistema de I/O (hardware e sistema operacional) determina a rapidez com que as


operações de 1/O são executadas

Métricas de Desempenho
Existem 2 classes distintas de métricas de desempenho:

Métricas de desempenho para processadores - avalia o desempenho de uma


unidade de processamento, normalmente feito medindo a velocidade ou o número
de operações que ela faz em um determinado período de tempo

Métricas de desempenho para aplicativos paralelos - avalia o desempenho de um


aplicativo paralelo, normalmente feito comparando o tempo de execução com
várias unidades de processamento em relação ao tempo de execução com apenas
uma unidade

Estamos mais interessados em métricas que medem o desempenho dos


processadores

Medidas de Desempenho para Processadores

Algumas das métricas mais conhecidas são:

MIPS - Milhões de instruções por segundo

FLOPS - Operações de ponto flutuante por segundo

SPECint - Benchmarks SPEC (Standard Performance Evaluation


Corporation) que avaliam o desempenho do processador em aritmética de inteiros
(primeiro lançamento em 1992)

Desempenho 2
SPECfp - Benchmarks SPEC que avaliam o desempenho do processador em
operações de ponto flutuante (primeiro lançamento em 1989)

Whetstone - Benchmarks sintéticos para avaliar o desempenho do processador em


operações de ponto flutuante (primeiro lançamento em
1972)

Dhrystone - Benchmarks sintéticos para avaliar o desempenho do processador em


aritmética de inteiros (primeiro lançamento em 1984)

Desempenho Computacional:

TEMPO, TEMPO, TEMPO!!!

Tempo de resposta (tempo decorrido, latência)

Quanto tempo leva para o meu job rodar?

Quanto tempo para executar (iniciar e terminar) meu job?

Quanto tempo devo esperar por uma query no banco de dados?

Vazão (Throughput)

Quantos jobs a máquina pode rodar de uma vez?

Qual é a taxa de execução média?

Quanto trabalho está sendo feito?

Se fizer um upgrade na máquina com um novo processador, o que vamos


aumentar?

Se adicionarmos uma nova máquina no laboratório, o que vamos aumentar?

Tempo de Execução
Tempo decorrido

Conta tudo do início até o fim (acesso no disco e memória, 1/0)

É uma medida útil, mas não é muito boa para fins de comparação

Desempenho 3
tempo decorrido = tempo CPU + tempo de espera (1/0, outros programas)

Tempo de CPU

Não conta espera por 1/O ou tempo gasto rodando outros programas

Pode ser dividido em tempo de CPU do usuário e tempo de CPU do sistema


(chamada de SO)

tempo CPU = tempo CPU usuário + tempo CPU sistema

Nosso foco: tempo de CPU do usuário (tempo de execução da CPU


ou, simplesmente, tempo de execução)

Tempo gasto executando as linhas de código que estão no nosso


programa

Definição de Desempenho

Ciclos de Clock

Desempenho 4
Frequentemente usamos ciclos para calcular o tempo de
execução

Quase todos os computadores usam um clock que determina quando os eventos


ocorrem no hardware. Esses intervalos de tempo discretos são chamados de ciclos
de clock (ou ticks, clocks, ciclos).

A duração de um ciclo completo do clock é o período do clock e o número de ciclos


por segundo é a taxa do clock (ou frequência do clock), que é o inverso do período
do clock.

Período de clock (tempo) = duração do ciclo do clock (segundos)

Ex: 250ps (picossegundos) = 0.25 ns (nanossegundos) = 250


× 10-12 s

Velocidade de clock (frequência) = ciclos por segundo

(1 Hz = 1 ciclo/segundo, 1 MHz = 106 ciclos/seg)

Ex: Um clock com 200 Mhz tem:

Tempo de ciclo = 1/(200 x 106) × 10° = 5 nanossegundos (ns)

Quantos Ciclos são necessários para um programa?


Poderia assumir que # de ciclos = # de instruções

Desempenho 5
Essa suposição é incorreta! Porque:

Instruções diferentes levam quantidade de tempo (ciclos)


diferentes

Por que...?

Multiplicação leva mais tempo que a adição

Operações de ponto flutuante demoram mais que de inteiros

Acesso de memória leva mais tempo que acesso nos


registradores

Ponto importante: trocar o tempo de ciclo geralmente troca o número de ciclos


necessários por várias instruções porque isso significa que o projeto do hardware
foi alterado

Desempenho 6
Exemplo
Nosso programa favorito roda em 10 segundos no computador A, que tem um clock
de 400 Mhz.

Estamos ajudando um projetista de computador a construir um novo computador B,


que vai rodar este programa em 6 segundos.
O projetista pode usar novas tecnologias para aumentar a frequência de clock, mas
ele nos informou que esse aumento afetará o resto do projeto da CPU, fazendo
com que o computador B precise 1,2 vezes mais ciclos de clock que o computador
A para o mesmo programa.

Qual velocidade deveríamos sugerir ao projetista?

Desempenho 7
Desempenho 8
Terminologia

Desempenho 9
Um dado programa precisa algum número de instruções algum número de ciclos

algum número de instruções

algum número de ciclos

algum número de segundos

Termos referentes à esses valores

o tempo de ciclo (segundos por ciclo)

velocidade de clock (frequência, ciclos por segundo) (média) CPI (ciclos de


clock por instrução)

aplicações com ponto flutuante possui maior média de CPI

MIPS (milhões de instruções por segundo)

É maior para programas usando instruções simples

Medida de Desempenho
Desempenho é determinado pelo tempo de execução

Alguma dessas outras medidas medem desempenho?

# de ciclos para executar um programa?

# de instruções no programa?

# de ciclos por segundo?

média # de ciclos por instrução?

média # de instruções por segundo?

Armadilha: achar que uma variável é indicativo de desempenho quando de fato ela
não é

Equação de Desempenho II

Desempenho 10
Derivado da Equação de Desempenho |

Exemplo I de CPI
Suponha que temos duas implementações do mesmo
ISA. Para um determinado programa:

o computador A tem um tempo de ciclo de clock de 10 ns e


um CPI de 2,0

o computador B tem um tempo de ciclo de clock de 20 ns e


um CPI de 1,2

Qual computador é mais rápido para esse programa e o quanto mais rápido?

Se os dois computadores tem o mesmo ISA, quais de nossas métricas


permanecerão (frequência, CPI, tempo de execução, MIPS) idênticas?

Desempenho 11
Desempenho 12
Exemplo II de CPI

Um projetista de compilador está tentando decidir entre duas sequências de código


para uma máquina em particular.

Baseado na implementação do hardware, há 3 classes diferentes de instruções:


Classe A, Classe B e Classe C, requerendo 1, 2 e 3 ciclos (respectivamente).

A primeira sequência de código tem 5 instruções:


2 de A, 1 de B e 2 de C.
A segunda sequência tem 6 instruções:
4 de A, 1 de Be 1 de C.

Qual sequência vai ser mais rápida? Quanto mais rápida? Qual é a
CPI de cada sequência?

Desempenho 13
Desempenho 14
Exemplo MIPS
Dois compiladores diferentes estão sendo testados para um computador de 500
MHz com 3 classes de instruções diferentes:
Class A, Classe B e Classe C, que requerem 1, 2 e 3 ciclos (respectivamente).
Ambos compiladores estão usados para produzir código para um grande pedaço
de software.

Compilador 1 gera código com 5 bilhões de instruções da Classe


A, 1 bilhão da Classe B e 1 bilhão da Classe C.

Compilador 2 gera código com 10 bilhões de instruções da Classe


A, 1 bilhão da Classe B e 1 bilhão da Classe C.

Qual sequência será mais rápida de acordo com o MIPS?

Qual sequência será mais rápida de acordo com o tempo de execução?

Desempenho 15
Desempenho 16
Desempenho 17

Você também pode gostar