400 likes | 576 Views
Arquitetura e Organização de Computadores 1 José Hiroki Saito Igor Marçal Botamede Spadoni – PESCD. Desempenho de cpu. Eficiência de um sistema inteiro Avaliar e compreender o desempenho trata: Medir Informar Resumir Fatores determinantes. Desempenho de cpu – Introdução .
E N D
Arquitetura e Organização de Computadores 1 José Hiroki Saito Igor Marçal Botamede Spadoni – PESCD Desempenho de cpu
Eficiência de um sistema inteiro • Avaliar e compreender o desempenho trata: • Medir • Informar • Resumir • Fatores determinantes Desempenho de cpu – Introdução
É complexo avaliar o desempenho desse tipo de sistema • Complexidade e escala dos softwares modernos • Ampla gama de técnicas de melhoria de desempenho • Impossível sentar com um manual do conjunto de instruções e determinar a velocidade de execução de um sistema Desempenho de cpu – Introdução
Desempenho é um fator importante para os projetistas • O que determina o desempenho de um computador? Desempenho de cpu – introdução
Analogia com aviões de passageiro • Desempenho determinado pela velocidade: • Quão rápido é o Concorde comparado com o 747? • 1 passageiro de um ponto a outro • 450 passageiro de um ponto a outro Definindo desempenho Avião Passageiros Autonomia (mi) Velocidade (mph) Boeing 777 375 4630 610 Boeing 747 470 4150 610 BAC/Sud Concorde 132 4000 1350 Douglas DC-8-50 146 8720 544
Tempo de Resposta (latência) • Quanto tempo leva para executar uma tarefa? • Throughput • Quantas tarefas a máquina pode executar de uma vez? • O que é a taxa média de execução? • Qual o impacto, se substituir o processador por uma versão mais rápida? • Qual o impacto, se adicionarmos uma nova máquina no laboratório? Desempenho – Termos
Tempo de Resposta ou Tempo de Execução • Tempo entre inicio e término de uma tarefa • Diminuir o tempo de resposta quase sempre melhora a vazão • Dizer que uma máquina A é n vezes mais rápida que uma máquina B significa que: Vazão e tempo de resposta
Desempenho é definido como o inverso do tempo de execução Desempenho Relativo Desempenho
Definição de Desempenho • Problema: • máquina A executa um programa em 10 segundos • máquina B executa o mesmo programa em 15 segundos Calcular n
Tempo de Execução • Tempo decorrido • Tempo de CPU gasto no SO realizando as tarefas a pedido do programa • Tempo de CPU • Não conta E/S ou tempo dispendido rodando outros programas • significa o tempo que a CPU consome computando • Nosso foco: tempo de CPU do usuário • tempo gasto executando linhas de código que estão “dentro” do nosso programa
Caracterizado por limitações de tempo real • Dois tipos de limitações • Tempo real rígido • Define um limite fixo para responder ou processar um evento (ex: freio antitravamento) • Tempo real flexível • Uma resposta média ou uma resposta dentro de um tempo limitado a uma grande fração dos eventos (ex: manipular quadros de vídeos em um sistema de reprodução) Desempenho – Detalhando
Métricas utilizadas • Ciclos de clock • Tempo de ciclo • Instruções por programa • Média dos ciclos de clock por instrução ou Desempenho – fatores
Porém nas equações anteriores não fazemos referência ao número de instruções necessárias para o programa, logo o número de ciclos de clock pode ser estendido como: Ciclos de clock por instrução pode ser chamado como CPI Desempenho – Fatores
Ciclos de Clock • Ao invés de reportar o tempo de execução em segundos, geralmente usa-se ciclos • Um “tick” de clock indica quando se inicia uma atividade • Tempo de ciclo = tempo entre ticks = segundos por ciclo • Taxa de clock (frequência) = ciclos por segundo (1 Hz. = 1 ciclo/s)
1st instruction 2nd instruction 3rd instruction ... 4th 5th 6th Quantos ciclos são requeridos por um programa? • Assumir que # de ciclos = # de instruções • Essa consideração é apenas uma aproximação, pois diferentes instruções levam diferentes tempos para serem executadas. time
Multiplicação leva mais tempo que soma • Operações de ponto flutuante levam mais tempo que operações de inteiros • Acessar memória leva mais tempo que acessar registradores • Importante: alterando o tempo de ciclo muitas vezes altera o número de ciclos requerido para várias instruções Diferentes números de ciclos para diferentes instruções tempo
Computador A executa um programa em 10 segundos e tem um clock de 4 GHz Computador B execute esse programa em 6 segundos e B exija 1,2 vez mais ciclos de clock do que o computador A Qual a velocidade de clock de B? Desempenho – exemplo
Agora que entendemos os ciclos • Um dado programa irá requerer • Certo número de instruções (instruções de máquina) • Certo número de ciclos • Certo tempo em segundos
A única medida completa e confiável do desempenho é o tempo combinando os fatores
MIPS Milhões de instruções por segundo Número de instruções de código de máquina que o processador pode executar em um segundo Porém não é possível usá-lo como medida de desempenho MIPS
Desempenho • O desempenho é determinado pelo tempo de execução • As variáveis abaixo não determinam o desempenho: • N° de ciclos para executar um programa; • N° de instruções num programa; • N° de ciclos por segundo; • N° médio de ciclos por instrução; e • N° médio de instruções por segundo.
Exemplo de CPI • Considerar que temos duas implementações da mesma arquitetura do conjunto de instruções (ISA). Para certo programa:Máquina A tem um tempo de ciclo de clock de 250 ps e um CPI de 2.0 Machine B tem um tempo de ciclo de clock de 500 ps e um CPI de 1.2 • Qual máquina é mais rápida para esse programa, e por quanto?
Exemplo do Nº de instruções • Um projetista de compilador está tentando decidir entre duas sequências de código para uma máquina particular. Baseado numa implementação de hardware, existem 3 classes diferentes de instruções: Classe A, Classe B, e Classe C, que requerem um, dois e três ciclos (respectivamente). A primeira sequência tem 5 instruções: 2 de A, 1 de B, e 2 de CA segunda sequência tem 6 instruções: 4 de A, 1 de B, e 1 de C.Qual sequência será mais rápida? Quanto?Qual o CPI para cada sequência?
Benchmarks • Determinação melhor do desempenho executando aplicações reais • Usa programas típicos de carga de trabalho (workload) desejada • Ou, típicos de classes de aplicações desejadas ex., compiladores/editores, aplicações científicas, gráficos, etc. • Pequenos benchmarks • Bom para arquitetos e projetistas • Fácil para padronização • Podem ser abusados (usados erroneamente) • SPEC (System Performance Evaluation Cooperative) • As companhias adotam um conjunto de programas reais • Podem ser abusados
SPEC ‘89 • Gráfico de “melhoramento” do compilador e desempenho
SPEC ‘95 Dobrando a taxa de clock dobra o desempenho? Uma máquina com uma taxa de clock lenta pode ter um melhor desempenho?
As decisões de projeto devem favorecer os casos mais freqüentes: tornar rápido o caso mais comum A lei de Amdahl define o speed up (S), que consiste do ganho em desempenho que pode ser obtido ao melhorar determinada característica do computador Armadilhas – Melhorias
Speed Up (S) Armadilhas – speedup
O speed up a partir de alguma melhoria depende de dois fatores • A fração do tempo de computação na máquina original que pode tirar vantagem da melhoria (Fmelhoria): se 20s do tempo de execução de um programa, que leva 60s para ser executado, podem ser melhorados, a fração é 20/60; • O ganho obtido com a execução da melhoria (Smelhoria): se a melhoria leva 2s para ser executada e a original leva 5s, o ganho é 5/2. Armadilhas – speedup
O tempo de execução usando a máquina original com a melhoria (tenovo) será igual ao tempo gasto usando a parte da máquina sem melhoria mais o tempo gasto usando a melhoria Armadilhas – speedup
O speed up total (Stotal) é a razão entre os tempos de execução Armadilha – speedup
Suponha uma melhoria que executa 10 vezes mais rápido do que o original, mas é utilizada somente 40% do tempo A lei de Amdahl serve como um indicativo de quanto uma melhoria irá aumentar o desempenho total e como distribuir recursos para melhorar a relação custo/desempenho. O objetivo é investir recursos proporcionalmente aonde o tempo é gasto Armadilha – exemplo de speedup
conclusões • Desempenho é específico a um programa particular • O tempo de execução total é um resultado do desempenho • Para que uma dada arquitetura melhore deve-se: • Aumentar a taxa de clock (sem afetar o CPI) • Melhorar a organização do processador para diminuir o CPI • Melhorar o compilador para diminuir o CPI e/ou número de instruções
Cuidado: não esperar que a melhoria do desempenho num aspecto de uma máquina melhore sempre o seu desempenho total! Conclusão