Universidade Federal do Pampa Campus-Bagé Arquitetura e Organização de Computadores Aula 5 Consolidando Conhecimentos de Desempenho e Resumindo Prof. Julio Saraçol juliosaracol@gmail.com Slide1
AULA 5: CONCRETIZANDO AVALIAÇÃO DE DESEMPENHO Slide2
Falácias e Armadilhas Armadilha Esperar que a melhoria de um aspecto de uma máquina aumente o desempenho da máquina de forma proporcional ao tamanho da melhoria. Slide3
Lei de Amdahl Exemplos de princípios de projeto de hardware que podemos extrair desta lei: Melhoria de desempenho possível com determinado aumento é limitada pela quantidade em que o recurso aprimorado é usado! Torne o caso comum (+utilizado) rápido! Observação: Muitas vezes ele é o mais simples e mais fácil de melhorar Slide4
Lei de Amdahl Tempo de execução após melhoria = (Tempo de execução afetado / Quantidade de melhoria) + Tempo de execução não afetado Exemplo A: Suponha que um programa seja executado em 100 segundos em uma máquina, com multiplicação responsável por 80 segundos desse tempo. O quanto precisamos melhorar a velocidade da multiplicação se queremos que o programa seja executado 4 vezes mais rápido? Slide5
Resolvendo o problema Tempo de execução antes da melhoria / 4 Tempo de execução após melhoria = ( 80 segundos / n ) + ( 100 80 segundos) 25 segundos = ( 80 segundos / n ) + 20 segundos 25 segundos 20 segundos =( 80 segundos / n ) 5 segundos = ( 80 segundos / n ) n = 80 segundos / 5 segundos n= 16 Logo, a multiplicação precisaria ser melhorada em 16 vezes para que o programa fosse executado 4 vezes mais rápido! Slide6
Lei de Amdahl Tempo de execução após melhoria = (Tempo de execução afetado / Quantidade de melhoria) + Tempo de execução não afetado Exemplo B: Suponha que um programa seja executado em 100 segundos em uma máquina, com multiplicação responsável por 80 segundos desse tempo. O quanto precisamos melhorar a velocidade da multiplicação se queremos que o programa seja executado 5 vezes mais rápido? Slide7
Resolvendo o problema Tempo de execução antes da melhoria / 5 Tempo de execução após melhoria = ( 80 segundos / n ) + ( 100 80 segundos) 20 segundos = ( 80 segundos / n ) + 20 segundos 20 segundos 20 segundos = ( 80 segundos / n ) 0 = ( 80 segundos / n ) n = 80 segundos / 0 n = Logo, no caso apresentado, NÃO HÁ uma quantidade possível de melhoria apenas da multiplicação que faça com que o programa execute 5 vezes mais rápido! Slide8
Exemplo C Suponha que melhoramos uma máquina fazendo todas as instruções de ponto flutuante serem executadas cinco vezes mais rápido. Se o tempo de execução de algum benchmark antes da melhoria do ponto flutuante é 10 segundos, qual será o aumento de velocidade se metade dos 10 segundos é gasta executando instruções de ponto flutuante? Slide9
Exemplo C Suponha que melhoramos uma máquina fazendo todas as instruções de ponto flutuante serem executadas cinco vezes mais rápido. Se o tempo de execução de algum benchmark antes da melhoria do ponto flutuante é 10 segundos, qual será o aumento de velocidade se metade dos 10 segundos é gasta executando instruções de ponto flutuante? Resposta 1,67 vezes mais rápida! x=(5 s / 5)+(10 s 5 s) x=1 s + 5 s = 6 s Logo, aumento da velocidade = 10 s / 6 s = 1,67 Slide10
Exemplo D Estamos procurando um benchmark para mostrar a nova unidade de ponto flutuante descrita no caso anterior (5 vezes mais rápida) e queremos que o benchmark mostre um aumento geral de velocidade de 5 vezes (tempo 5 vezes menor). O benchmark que estamos considerando é executado durante 100 segundos com o hardware de ponto flutuante antigo. Quanto do tempo de execução as instruções de ponto flutuante teriam que considerar para produzir nosso aumento de velocidade desejado para esse benchmark? Slide11
Exemplo D Estamos procurando um benchmark para mostrar a nova unidade de ponto flutuante descrita no caso anterior (5 vezes mais rápida) e queremos que o benchmark mostre um aumento geral de velocidade de 5 vezes (tempo 5 vezes menor). O benchmark que estamos considerando é executado durante 100 segundos com o hardware de ponto flutuante antigo. Quanto do tempo de execução as instruções de ponto flutuante teriam que considerar para produzir nosso aumento de velocidade desejado para esse benchmark? Resposta: Tempo afetado = 100 segundos = 100% tempo de execução Todas as instruções precisariam ser de ponto flutuante! 100 s / 5 = ( X / 5 ) + (100 s X ) 20 s = ( X + 500 s 5X) / 5 100 s = - 4 X + 500 s 4 X = 500 s 100 s X = 400 s / 4 = 100 s Slide12
Falácias e Armadilhas Falácia Métricas independentes de hardware predizem performance! Exemplo: prever o desempenho por tamanho de código Diferentes arquiteturas (ISA)» Usado incorretamente na década de 80 Mesmo ISA» Projetistas de compiladores as vezes optam por uma determinada sequência menor de instruções em linguagem de máquina, dentre várias possíveis Slide13
Falácias e Armadilhas Armadilha Usar MIPS como medida de performance MIPS Contador Tempo de de instruções execução 10 6 MIPS Frequência CPI 10 6 Qual é o problema? MIPS usa um subconjunto da equação de desempenho tempo de CPU Instruções por programa CPI período Slide14
Falácias e Armadilhas Três problemas do MIPS: Não leva em conta a diferença de complexidade das instruções existentes em ISAs diferentes -> CPI Varia entre programas no mesmo computador; é incorreto definir um único MIPS para todos os programas MIPS pode variar inversamente com o desempenho Já vimos isso antes! Slide15
Outro exemplo de MIPS x Desempenho Medida Computador A Computador B Contagem de instruções 10 bilhões (10^9) 8 bilhões (10^9) Velocidade de clock (freq.) 4 GHz (10^9) 4 GHz (10^9) CPI 1,0 1,1 Considerando que as medições foram feitas para um mesmo programa! a) Qual possui o melhor MIPS? b) Qual é o mais rápido (tempo de CPU)? Slide16
Freq = 4 GHz = 4 * 10^9 CPI = 1.0 Nº de Inst. = 10 * 10^9 Freq = 4 GHz = 4 * 10^9 CPI = 1.1 Nº de Inst. = 8 * 10^9 MIPS Contador Tempo de MIPS de instruções execução 10 Frequência CPI 10 6 6 tempo de CPU = nº de instruções tempo Slide17 de CPU = X CPI X nº de instruções X CPI frequência do clock período do clock
Outro exemplo de MIPS x Desempenho Medida Computador A Computador B Contagem de instruções 10 bilhões 8 bilhões Velocidade de clock (freq.) 4 GHz 4 GHz CPI 1,0 1,1 Tempo de execução A = 2,5 s ; MIPS A = 4000 Tempo de execução B = 2,2 s ; MIPS B = 3636 Ex.: MIPS B = 4G / 1,1 / 1.000.000 a) Qual possui o melhor MIPS? (A) b) Qual é o mais rápido? (B) Slide18
Experiência Telefone para um grande vendedor de computadores e diga que você está com dificuldade de decidir entre dois computadores diferentes; especificamente, que está confuso quanto aos pontos fortes e fracos dos processadores (Por exemplo, na DELL, desktop de entrada Linha Inspiron DT Serie 3000 - com as opções: Processador 3.5 GHz R$ 1.699,00 Processador 3.2 GHz R$ 2.249,00 Que tipo de resposta você provavelmente receberá? Que tipo de resposta você poderia dar a um amigo com a mesma dúvida? Slide19
Experiência Telefone para um grande vendedor de computadores e diga que você está com dificuldade de decidir entre dois computadores diferentes; especificamente, que está confuso quanto aos pontos fortes e fracos dos processadores (Por exemplo, na DELL, desktop de entrada Linha Inspiron DT Serie 3000 - com as opções: Intel Core I3-4150 (Dual) 3.5 GHz R$ 1.699,00 Intel Core I5-4460 (Quad) 3.2 GHz R$ 2.249,00 Que tipo de resposta você provavelmente receberá? Que tipo de resposta você poderia dar a um amigo com a mesma dúvida? Slide20
Lembrete O desempenho é específico a um determinado programa! - O tempo de execução total é um resumo consistente do desempenho Para uma determinada arquitetura, os aumentos de desempenho vêm de: - aumentos na velocidade de clock (sem efeitos de CPI adversos) - melhorias na organização do processador que diminuem o CPI - melhorias no compilador que diminuem o CPI e/ou a contagem de instruções - escolhas de algoritmo/linguagem que afetam a contagem de instruções Slide21