Transcription of CAPÍTULO 2 DESEMPENHO
1 CAP TULO 2 DESEMPENHO DESEMPENHO /Performance Tempo de Execu o Ciclos de Clock Escala de integra o e DESEMPENHO CPI (Ciclos de Clock por Instru o) N mero de Instru es MIPS (Milh es de Instru es por Segundo) Benchmarks Lei de Moore Lei de Amdahl Exerc cios e Exemplos Resolvidos Gargalo de Von Newmann Influ ncia dos Dispositivos de I/O, mem ria e Barramentos Como melhorar a arquitetura Exerc cios DESEMPENHO /Performance A medida de DESEMPENHO importante para: Reportar e sumarizar performance Marketing Compara o de arquiteturas Quest es: Por que alguns hardwares s o melhores que outros para diferentes programas? Quais fatores de DESEMPENHO s o ligados ao hardware? ( , preciso de uma nova m quina ou de um novo sistema operacional?) Como o conjunto de instru es pode afetar o DESEMPENHO da m quina? O que significa dizer que o computador A N vezes mais r pido que o computador B? A vis o de um usu rio normal e a vis o de um administrador da (p.)
2 Ex.) seriam a mesma? DESEMPENHO /Performance Qual desses avi es tem o melhor DESEMPENHO ? Qual o melhor avi o? Quanto o Concorde mais r pido 747? Quanto o 747 maior que Douglas DC-8? Quest o-chave: Como comparar o DESEMPENHO de arquiteturas diferentes? Que par metros devem ser utilizados? Como isolar o efeito de cada par metro ou m trica usada? DESEMPENHO do Computador Tempo de Resposta (lat ncia) Quanto tempo leva minha tarefa para rodar? Quanto tempo leva a execu o da minha tarefa? Quanto tempo devo esperar para uma consulta a uma base de dados? Vaz o (Throughput) Quantas tarefas a m quina pode rodar por vez? Qual a taxa de execu o? Quanto trabalho feito? Um upgrade em uma m quina com um novo processador melhora o qu ? Uma nova m quina na rede do laborat rio melhora o qu ? Tempo de Execu o Tempo gasto Leva em conta tudo (acesso a disco e mem ria, I/O , etc.) Um n mero til, mas s vezes n o t o bom para prop sitos de compara o Tempo de CPU (CPU time) N o conta tempo de I/O nem tempo gasto em outros programas Pode ser dividido em tempo do sistema e tempo do usu rio NOSSO FOCO: Tempo de CPU do usu rio Tempo gasto apenas na execu o das instru es que est o dentro do programa (c digo compilado) Defini o de DESEMPENHO Para algum programa rodando na m quina X: =1 X N vezes mais r pida que Y" = OU = Problema: M quina A roda um programa em 20s M quina B roda o mesmo programa em 25s Como comparar os desempenhos ?
3 Ciclos de Clock Para avaliarmos um tempo de execu o levando em conta diferentes instru es e assim podermos caracterizar um workload, usamos o ciclo de clock por instru o: = == Ciclos de clock indicam quando as tarefas iniciam e terminam. O processador um circuito s ncrono. =1 Como Melhorar o DESEMPENHO ? = Duas formas de se reduzir o tempo de execu o seria reduzir: O N mero de clocks requeridos pelo programa, ou Tempo do ciclo de clock (ou seja, aumentar a taxa de clock!) Podemos assumir que n mero de ciclos = n mero de instru es? Como Melhorar o DESEMPENHO ? O n mero de ciclos n o , necessariamente, igual ao n mero de instru es. Lembre-se que estas s o instru es de m quina, n o linhas de c digo em C. Variabilidade do CPI Multiplica o gasta mais tempo que adi o Opera es de ponto flutuante s o mais lentas que as de inteiros Acesso mem ria gasta mais tempo que acesso a registradores Mudan as no tempo de ciclo podem alterar o n mero de ciclos exigidos para executar cada uma das instru es Exemplo Um programa roda em 10s no computador A, o qual tem um clock de 400 MHz.
4 N s estamos tentando ajudar um projetista de computadores a construir uma nova m quina B, que ir rodar o mesmo programa em 6s. O projetista pode usar uma nova tecnologia (gastar muito mais) para aumentar substancialmente a taxa de clock. Por m, ele nos informa que isso ir afetar todo o projeto do restante da CPU, de forma que m quina B ir exigir vezes ciclos a mais de clock que a m quina A para execu o do programa. Qual taxa de clock deveria ser buscada pelo projetista? Solu o: = = 1 Para o computador A: 10= 1400 106 =10 400 106 Para o computador B: 6= 1 6= 1,2 1 =1,26 =1,26 10 400 106=800 106 = Agora sabemos o que ciclos representam Um certo programa ir exigir: Um certo no.
5 De instru es (instru es de m quina) Um certo no. de ciclos Um certo no. de segundos N s temos um vocabul rio para relatar essas quantidades: Tempo de ciclo (segundos / ciclo) Taxa de clock (ciclos / segundo) CPI (Ciclos Por Instru o) . Uma aplica o com uso intensivo de opera es de ponto flutuante vai ter CPI alto MIPS (Milh es de Instru es Por Segundo). Poderia ser bem elevado para programas usando mais instru es simples do que mais complexas MIPS MIPS pode ser calculado atrav s da frequ ncia em MHz e da CPI m dia: = ( ) = Historicamente: PDP-11, VAX, Intel 8086 CPI>1 Maquinas RISC Load/Store MIPS, SPARC, PowerPC, miniMIPS CPI=1 CPUs modernas, Pentium, Athlon CPI<1 DESEMPENHO DESEMPENHO est intimamente ligado ao tempo de execu o Quais outras vari veis tamb m medem DESEMPENHO ? No. de ciclos para executar um programa? No. de instru es um programa?
6 No. de ciclos por segundo? No. m dio de ciclos por instru o (CPI)? No. m dio de instru es por segundo? Erro comum: pensar que APENAS UMA destas vari veis indicativa de DESEMPENHO quando ela sozinha realmente N O . Escala e DESEMPENHO Em Novembro de 1971, a Intel lan ou o primeiro microprocessador em um nico chip do mundo, o Intel 4004. Ele tinha transistores, rodava com um clock de 740 KHz e executava instru es por segundo, enquanto dissipava 0,5 W. Os chips microprocessadores atuais empregam bilh es de transistores, incluem m ltiplos n cleos de processamento, rodam com clocks da ordem de Giga Hertz, e exibem um DESEMPENHO superior a 4 milh es de vezes ao do 4004 original. Computa o m vel, ub qua, sensores. Como comparar arquiteturas t o diferentes? D uma olhada em Escala da Tecnologia (CPUDB) Frequ ncia de Clock (CPUDB) Spec Int 2006 (CPUDB) CPUDB CPUDB Exemplo AMD Turion CPUDB Exemplo AMD Turion CPUDB Exemplo AMD Turion CPUDB Exemplo AMD Turion Exemplo de CPI Suponha que existam 2 implementa es poss veis para um mesmo Conjunto de Instru es (Instruction Set Architecture ou ISA).
7 Para um certo programa: Maq. A tem um tempo de ciclo de clock de 10 ns e um CPI de Maq. B tem um tempo de ciclo de clock 20 ns e um CPI de m quina roda mais r pido o programa, e o quanto mais r pida? 2 m quinas tiverem o mesmo ISA, qual das vari veis (clock rate, CPI, tempo de execu o, instru es, MIPS) ser sempre id ntica? Solu o 1) tA = Ix2x10 = 20I tB= Ix1,2x20 = 24I tB/tA = 24/20 = 1,2 A maquina A 1,2 vezes mais r pida que a maquina B ou A m quina A 20% mais r pida que a maquina B 2) Somente o n mero de instru es Exemplo do N mero de instru es Um projetista de compilador deve decidir entre 2 sequ ncias de c digo para uma m quina X. Baseado na implementa o do HW, existem 3 classes de instru es: Classe A, Classe B e Classe C, que requerem 1, 2 ou 3 ciclos, respectivamente. A 1a. sequ ncia de c digo tem 5 instru es: 2 de A, 1 de B e 2 de C A 2a. sequ ncia tem 6 instru es: 4 de A, 1 de B e 1 de C sequ ncia mais r pida?
8 Em quanto? o CPI para cada sequ ncia? Exemplo MIPS Dois diferentes compiladores est o sendo testados para uma m quina com 100 MHz, com 3 diferentes classes de instru es: Classe A, Classe B e Classe C, as quais requerem 1, 2 e 3 ciclos respectivamente. Ambos compiladores s o usados para produzir um c digo para um software grande porte. O C digo do 1o. compilador usa 5 Milh es de instru es Classe A, 2 Milh es de Classes B e 2 Milh es de Classes C. O C digo do 2o. compilador usa 10 Milh es de instru es Classe A, 1 Milh o de Classes B e 1 Milh o de Classes C. a mais r pida de acordo com o tempo de execu o? a sequ ncia mais r pida de acordo com o MIPS? Solu o: CPI de cada classe: A B C 1 2 3 Frequ ncia = 100 MHz t1 = (5x1 + 2x2 + 2x3)/100 = 15/100 = 0,15 s t2 = (10x1 + 1x2 + 1x3)/100 = 15/100 = 0,15 s 1) igual 2) MIPS1 = (5+2+2)/0,15 = 60 MIPS2 = (10+1+1)/0,15 = 80 Exerc cio Suponha uma implementa o de um processador sem hardware para ponto flutuante que roda com uma frequ ncia de 4 GHz.
9 O compilador deve implementar cada opera o de ponto flutuante usando somente o conjunto de instru es de inteiros b sico do processador. Na compila o de um programa que usaria nica e exclusivamente 40 milh es de opera es com precis o de ponto flutuante, a compila o gera um programa com o seguinte mix de instru es: Se o tempo para executar o programa compilado para esse processador for de 1,38 segundos, quantas instru es de inteiros s o necess rias, na m dia, para traduzir uma instru o de ponto flutuante? Justifique sua resposta. Exerc cio Considere o c digo abaixo: li $a0,500 # x=500 li $a1,1000 # y=1000 li $a2,11 # n=11 add $v0,$a0,$a1 # soma $a0 e $a1 move $t1,$v0 # resultado em $t1 ser multiplicado por n li $t0,0 # $t0=0 li $v0,0 # $v0=0 loop: beq $a2,$t0,exit # $se $t0==$a2 vai para exit add $v0,$v0,$t1 # soma $t1 n vezes addi $t0,$t0,1 # $t0=$t0+1 j loop # jump incondicional para loop exit: move $a0,$v0 # coloca resultado em $a0 para ser impresso li $v0,1 # imprime resultado syscall # syscall c digo 1 li $v0,10 # fim syscall # syscall c digo 10 Exerc cio Verifique qual o CPI m dio desse programa, considerando a tabela abaixo: Benchmarks DESEMPENHO melhor estimado usando-se uma aplica o real Usar programas com workloads t picos Ou, usar classes de aplica es esperadas t picas, compiladores, editores, aplica es cient ficas, gr ficas, etc.
10 Pequenos benchmarks Interessantes para arquitetos e designers, simples para padronizar e seu uso livre por todos. Ex.: Sieve de Eratosthenes, bom para comparar o tempo de execu o de v rios compiladores no mesmo computador. SPEC (System Performance Evaluation Cooperative) ..founded in 1988 by a small number of workstation vendors who realized that the marketplace was in desperate need of realistic, standardized performance tests ( ) 1 gera o SPEC CPU89 Fabricantes entraram num acordo para definir um conjunto de programas e entradas reais para avalia o Usado livremente por todos Indicador valioso de DESEMPENHO (e tecnologia de compila o) Benchmarks SPEC CPU2006 (Standard Performance Evaluation Corporation) URL: http://www. 5 gera o de pacotes SPEC Aplica es com uso intensivo do processador 17 programas FP (C, C++, Fortran) e 12 INT (C, C++) Outros SPECs [ ]: SPECjvm98: Java SPECweb99: servidores WWW SPEC mail2001: servidor de correio eletr nico SPEC 89 Melhorias no compilador vs DESEMPENHO SPEC 95 SPEC 95 Dobrar a taxa de clock implica em dobrar o DESEMPENHO ?