Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Organização de Computadores I DCC006 Prof. Omar Paranaiba Vilela Neto Aula 2 – Desempenho 2 • Medidas, Relatórios e Resumos • Escolhas inteligentes • marketing • Organização Porque um hardware é melhor que outros para diferentes programas? Quais fatores do desempenho são relacionados com o hardware? (i.e., Nós necessitamos de uma nova máquina ou um novo sistema operacional?) Como um conjunto de instruções afeta o desempenho? Desempenho Por que nos preocupamos com o desempenho dos computadores? 3 Qual o avião tem o melhor desempenho? Avião Passageiros Autonomia (mi) velocidade (mph) Boeing 737-100 101 630 598 Boeing 747 470 4150 610 BAC/Sud Concorde 132 4000 1350 Douglas DC-8-50 146 8720 544 Concorde comparado com o 747 747 comparado com o DC-8 4 • Tempo de Resposta (latency) — Demora para uma tarefa rodar — Demora para executar uma tarefa — Espera de uma consulta a base de dados • Throughput (vazão) — Quantos jobs a máquina pode rodar cada vez? — Qual a taxa média de execução? — Quantos trabalhos são concluídos? Se um novo processador é colocado na máquina o que nós melhoramos? Se uma nova máquina é colocada no laboratório o que melhoramos? Desempenho dos computadores: TIME, TIME... 5 • Tempo decorrido – Tempo total para uma tarefa incluindo acesso a disco, memória, I/O, ... – Freqüentemente não é bom para comparações • Tempo de CPU – Não considera I/O ou tempo gasto por outros programas – pode ser dividido em system time, e user time • Nosso foco: Tempo de CPU do Usuário – tempo despendido para executar a linha de código em nosso programa Tempo de Execução 6 • Para vários programas rodando em uma máquina X, DesempenhoX = 1 / Tempo de execuçãoX • "X é n vezes mais rápido que Y" DesempenhoX / DesempenhoY = n • Problema: – máquina A roda um programa em 20 segundos – máquina B roda o mesmo programa em 30 segundos – O quanto A é mais rápido que B Definições de Desempenho 7 Ciclos de Clock • Podemos usar no lugar do tempo de execução em segundos o número de ciclos • Pulso de Clock indica quando iniciar atividades: • tempo de ciclo = tempo entre pulsos = segundos por ciclo – 2 nanoseg. • taxa de clock (freqüência) = ciclos por segundo (1 Hz. = 1 ciclo/seg) clock a 200 Mhz. tem tempo de ciclo time seconds program = cycles program × seconds cycle 1 200 × 106 × 109 = 5 nanoseconds 8 Para melhorar o desempenho nós podemos: Como melhorar o desempenho seconds program = cycles program × seconds cycle melhorar o # de ciclos requerido por um programa ou melhorar o tempo de ciclo de clock ou (taxa de clock) 9 • Poderíamos assumir que # de ciclos = # de instruções Esta afirmação é incorreta, instruções gastam tempos diferentes em máquinas diferentes. Como? lembrem -se que são instruções de máquina e não linhas de código C Quantos ciclos são requeridos em um programa? 10 Multiplicação gasta mais tempo que adição Operações de ponto flutuante são mais longas que inteiros Acesso a memória gasta mais tempo que acesso a registro Ponto importante: Mudanças no tempo de ciclo freqüentemente muda o número de ciclos requeridos por várias instruções (mais tarde) tempo Diferentes números de ciclos para diferentes instruções 11 • Nosso programa roda em 10 segundos em um computador A, que tem um clock de 4 Ghz. Nós estamos ajudando alguém projetar uma nova máquina B, que deverá rodar este programa em 6 segundos. O projetista poderá usar uma nova (ou mais cara) tecnologia para melhorar substancialmente a taxa de clock, mas ele tem a informação de que este aumento afetará o projeto do resto da CPU e por essa razão a máquina B requer 1,2 vezes mais ciclos de clock que a máquina A para um mesmo programa. Qual a taxa de clock a nova máquina deverá ser projetada? Exemplo 12 Exemplo - Resposta 13 • Um dado programa requer – várias instruções (instruções de máquina ) – vários ciclos – vários segundos • Nós temos um vocabulário que relaciona estas grandezas: – tempo de ciclo (segundos por ciclo) – taxa de clock (ciclos por segundo) – CPI (# médio de ciclos por instrução) uma aplicação intensiva em ponto flutuante poderia ter um alto CPI – MIPS (milhões de instruções por segundo) poderia ser bom para um programa usando instruções simples Depois de entender ciclos 14 Desempenho • Desempenho é determinado pelo tempo de execução • Como podemos quantificar o 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 • Erro comum: indicar uma das variáveis como desempenho quando ela realmente não é. 15 • Suponha que você tem duas implementações de um mesmo conjunto de instruções. Máquina A tem um tempo de ciclo de clock de 250 ps. e CPI de 2.0 Máquina B tem um tempo de ciclo de clock de 500 ps. e CPI de 1.2 Qual a máquina mais rápida para este programa e quanto? CPI - Exemplo 16 CPI – Exemplo – Resposta 17 • Um projetista de compilador decidindo entre duas seqüências de código para uma máquina particular. Baseado em implementações de hardware, existem três diferentes classes de instruções (classe A, classe B e classe C, que necessitam de um, dois e três ciclos respectivamente). A primeira seqüência de código tem 5 instruções: 2 de A, 1 de B e 2 de C A segunda seqüência tem 6 instruções: 4 de A, 1 de B e 1 de C. Qual a seqüência mais rápida? Quanto? Qual o CPI de cada seqüência? # de Instruções - Exemplo 18 # de Instruções – Exemplo – Resultado 19 • Dois diferentes compiladores estão sendo testados para uma máquina de 4 GHz. A máquina tem três diferentes classes de instruções: Classe A, Classe B e Classe C, que requer um, dois e três ciclos respectivamente. Os compiladores são usados para produzir um grande bloco de software. O código do primeiro compilador usa 5 bilhões de instruções da classe A, 1 bilhão da classe B e 1 bilhão da classe C. O código do segundo compilador usa 10 bilhões de instruções da classe A, 1 bilhão da classe B e 1 bilhão da classe C. • Qual a seqüência mais rápida de acordo com MIPS? • Qual a seqüência mais rápida de acordo com tempo de execução? MIPS - Exemplo 20 MIPS – Exemplo – Resultado 21 • O desempenho pode ser melhor determinado rodando uma aplicação real – Usando programas tipicamente utilizados – Ou, classe de aplicações típicas i.e., compiladores/editores, aplicações científicas, gráficas, etc. • Pequenos benchmarks – bom para projetistas – fácil padronização – pode ser reutilizado • SPEC (System Performance Evaluation Cooperative) – empresas fornecem um conjunto de programas reais e entradas – pode ser reutilizado – indicador de desempenho válido Benchmarks 22 SPEC ‘89 • Melhorias nos compiladores e desempenho 0 100 200 300 400 500 600 700 800 tomcatvfppppmatrix300eqntottlinasa7doducspiceespressogcc Benchmark Compiler Enhanced compiler S P E C p er fo rm an ce r at io 23 SPEC ‘95 Benchmark Description go Artificial intelligence; plays the game of Go m88ksim Motorola 88k chip simulator; runs test program gcc The Gnu C compiler generating SPARC code compress Compresses and decompresses file in memory li Lisp interpreter ijpeg Graphic compression and decompression perl Manipulates strings and prime numbers in the special-purpose programming language Perl vortex A database program tomcatv A mesh generation program swim Shallowwater model with 513 x 513 grid su2cor quantum physics; Monte Carlo simulation hydro2d Astrophysics; Hydrodynamic Naiver Stokes equations mgrid Multigrid solver in 3-D potential field applu Parabolic/elliptic partial differential equations trub3d Simulates isotropic, homogeneous turbulence in a cube apsi Solves problems regarding temperature, wind velocity, and distribution of pollutant fpppp Quantum chemistry wave5 Plasma physics; electromagnetic particle simulation 24 Tempo de execução após melhoria = Tempo de execução não afetado +(Tempo de execução afetado / melhoria ) • Princípio: Faça o caso comum mais rápido Lei de Amdahl “O maior aumento de desempenho possível introduzindo melhorias numa determinada característica é limitado pela percentagem em que essa característica é utilizada” 25 Exemplo Exemplo: Considere um programa com Texec=100 seg, sendo 20% adições. Qual o ganho se a adição for 4 vezes mais rápida? E se for o resto 2 vezes mais rápida? sTexec 85804 20 =+= 18.1 85 100 ==ganho sTexec 602 8020 =+= 67.160 100 ==ganho 26 • Desempenho é especifico para um programa particular – Tempo total de execução é um resumo consistente do desempenho • Para uma dada arquitetura o desempenho aumenta quando: – Aumento da taxa de clock (sem efeitos adversos no CPI) – Melhorias na organização do processador que diminuam o CPI – Melhorias no compilador que diminuam o CPI e/ou número de instruções • Armadilha: Melhorias de desempenho em um aspecto da máquina afetará o desempenho total Relembrando Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26
Compartilhar