Arquitetura e Organização de Computadores 1 José Hiroki Saito Igor Marçal Botamede Spadoni – PESCD DESEMPENHO DE CPU DESEMPENHO DE CPU – INTRODUÇÃO Eficiência de um sistema inteiro Avaliar e compreender o desempenho trata: Medir Informar Resumir Fatores determinantes 2 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 3 DESEMPENHO DE CPU – INTRODUÇÃO Desempenho é um fator importante para os projetistas O que determina o desempenho de um computador? 4 DEFININDO DESEMPENHO Analogia com aviões de passageiro Avião Passageiros Boeing 777 Boeing 747 BAC/Sud Concorde Douglas DC-8-50 375 470 132 146 Autonomia (mi) Velocidade (mph) 4630 4150 4000 8720 610 610 1350 544 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 5 DESEMPENHO – TERMOS 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? 6 VAZÃO E TEMPO DE RESPOSTA 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: tem po de xecução e B n tem po de xecução e A 7 DESEMPENHO Desempenho é definido como o inverso do tempo de execução 1 desem penhoA tem po de xecução e A Desempenho Relativo 1 tempo de e xecução B desempenho B desempenho A n 1 tempo de e xecução A desempenho B desempenho A 8 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 desem penho tem po de xecução e A B n desem penho tem po de xecução e B A 15 n 10 n 1,5 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 DESEMPENHO – DETALHANDO 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) 11 DESEMPENHO – FATORES Métricas utilizadas Ciclos de clock Tempo de ciclo Instruções por programa Média dos ciclos de clock por instrução tempo de xecução e ciclos declock x empo t do ci clo ou ciclos de clock tempo de e xecução velocidade de clock 12 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 declock Instruções para x média dos ciclos o programa por instrução Ciclos de clock por instrução pode ser chamado como CPI tempo de xecução e CPIx Nº de Inst x tempo do ci clo 13 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) QUANTOS CICLOS SÃO REQUERIDOS POR UM PROGRAMA? ... 6th 5th 4th 3rd instruction 2nd instruction Assumir que # de ciclos = # de instruções 1st instruction time Essa consideração é apenas uma aproximação, pois diferentes instruções levam diferentes tempos para serem executadas. DIFERENTES NÚMEROS DE CICLOS PARA DIFERENTES INSTRUÇÕES tempo 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 DESEMPENHO – EXEMPLO 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? 17 DESEMPENHO – EXEMPLO ciclos declockA tem po de xecução e A velocidadede clockA ciclos declockA 10 s 4 x109 ciclos declockA 40x109 ciclos 1,2 xciclos declockA tem po de xecução e B velocidadede clockB 6 s x velocidadede clockB 1,2 x 40x109 velocidadede clockB 8GHz 18 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 COMBINANDO OS FATORES A única medida completa e confiável do desempenho é o tempo Instruções Ciclos de clock Segundos Tem po X X P r ogram a Instruções Ciclos de clock Segundos Tem po P r ogram a Componentes de desempenho Unidades de medida Tempo de execução da CPU de um programa Segundos para o programa Contagem de instruções Instruções executadas para o programa CPI Número médio de ciclos de clock por instrução Tempo do ciclo de clock Segundos por ciclo de clock 20 MIPS 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 Nº de Instruções MIPS Tem po de Execução X106 21 DESEMPENHO DE UM PROGRAMA Componente de hardware ou software Afeta o quê? Como? Algoritmo Contagem de instruções, possivelmente o CPI Determina o Nº de instruções do programa fonte executadas. Pode favorecer instruções mais lentas ou rápidas. Linguagem de Programação Contagem de instruções e CPI Instruções da linguagem traduzidas em instrução do processador. Pode usar chamadas indiretas (CPI mais altos). Compilador Contagem de instruções e CPI Afeta a contagem de instruções e a média de CPI já que determina a tradução da linguagem de programação para instrução Conjunto de instruções Contagem de instruções, velocidade de clock Afeta as instruções necessárias para função, o custo em ciclos de cada instrução e a velocidade geral do 22 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? ciclos de clockA Ix2 ,0 ciclos de clockB Ix1,2 Tem poA ciclos de clockA x tem po dociclo declockA Ix2,0 x 250ps 500xIps Tem poB ciclos de clockB x tem po dociclo declockB Ix1,2 x500ps 600xIps tem po de xecução e 600xIps B n 1,2 tem po de xecução e 500xIps A 25 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 C A 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 Pequenos benchmarks 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. 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 800 700 600 SPEC performance ratio 500 400 300 200 100 0 gcc espresso spice doduc nasa7 li eqntott matrix300 fpppp tomcatv Benchmark Compiler Enhanced compiler SPEC ‘95 Benchmark go m88ksim gcc compress li ijpeg perl vortex tomcatv swim su2cor hydro2d mgrid applu trub3d apsi fpppp wave5 Description Artificial intelligence; plays the game of Go Motorola 88k chip simulator; runs test program The Gnu C compiler generating SPARC code Compresses and decompresses file in memory Lisp interpreter Graphic compression and decompression Manipulates strings and prime numbers in the special-purpose programming language Perl A database program A mesh generation program Shallow water model with 513 x 513 grid quantum physics; Monte Carlo simulation Astrophysics; Hydrodynamic Naiver Stokes equations Multigrid solver in 3-D potential field Parabolic/elliptic partial differential equations Simulates isotropic, homogeneous turbulence in a cube Solves problems regarding temperature, wind velocity, and distribution of pollutant Quantum chemistry Plasma physics; electromagnetic particle simulation SPEC ‘95 10 10 9 9 8 8 7 7 6 6 SPECfp SPECint Dobrando a taxa de clock dobra o desempenho? Uma máquina com uma taxa de clock lenta pode ter um melhor desempenho? 5 5 4 4 3 3 2 2 1 1 0 0 50 100 150 Clock rate (MHz) 200 250 Pentium Pentium Pro 50 100 150 Clock rate (MHz) 200 Pentium Pentium Pro 250 ARMADILHAS – MELHORIAS 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 31 ARMADILHAS – SPEED UP Speed Up (S) desempenho de toda a operação usando a melhoria S desempenho de toda a operação sem usar a melhoria tempo de execução de toda a operação sem usar a melhoria S tempo de execução de toda a operação usando a melhoria 32 ARMADILHAS – SPEED UP 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. 33 ARMADILHAS – SPEED UP 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 Fmelhoria tenovo teantigo 1 Fmelhoria S melhoria 34 ARMADILHA – SPEED UP O speed up total (Stotal) é a razão entre os tempos de execução Stotal teantigo tenovo 1 Fmelhoria 1 Fmelhoria S melhoria 35 ARMADILHA – EXEMPLO DE SPEED UP Suponha uma melhoria que executa 10 vezes mais rápido do que o original, mas é utilizada somente 40% do tempo Fmelhoria 0.4 Smelhoria 10 1 1 Stotal 1.56 0.4 0.64 0.6 10 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 36 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 CONCLUSÃO Cuidado: não esperar que a melhoria do desempenho num aspecto de uma máquina melhore sempre o seu desempenho total! 38 FIM 39 EXERCÍCIOS 40