Desempenho Desempenho do processador 1 Desempenho Desempenho do processador Tempo de execução de um programa: Texecução = Nciclos Trelógio = Ninstruções CPI Trelógio = Ninstruções CPI / frelógio Ninstruções – número de instruções do programa CPI – número de ciclos por instrução frelógio – frequência do sinal de relógio 2 Desempenho Compilador Sintetizando: Texecução Conjunto de instruções Ninstruções CPI frelógio Organização do sistema Hardware Conjunto de instruções Organização do sistema 3 Desempenho Conclusão O desempenho do processador depende de vários factores: Hardware (circuitos, tecnologia de fabrico) Organização (datapaths, unidade de controlo, etc.) Conjunto de instruções Compilador (e programador, claro está ) A frequência do relógio apenas está ligada aos dois primeiros factores... 4 Desempenho Algumas medidas de desempenho populares MIPS Million of Instructions Per Second MIPS Ninstruções Tempode execução 10 6 frelógio CPI 106 Depende apenas de CPI e da frequência de relógio... MFLOPS million floating-point operations per second MFLOPS Noperações sobre nº s reais Tempode execução 106 Muitos programas efectuam essencialmente operações sobre inteiros, pelo que esta medida não é adequada nesses casos 5 Lei de Amdahl Lei de Amdahl Visa quantificar o ganho no desempenho de um sistema que resulta após a introdução (ou actualização) de um novo componente na arquitectura. Define-se o ganho (ou speedup) com sendo Ganho Told Tnew Told – tempo de execução antes da introdução do novo componente Tnew – tempo de execução após a introdução do novo componente 6 Lei de Amdahl O ganho global do sistema depende essencialmente de dois factores: Gc – ganho do componente Ganho trazido pelo novo componente para as situações em que é utilizado rc – rácio de utilização do componente fracção do tempo de execução em que se tira partido do novo componente 7 Lei de Amdahl Colocando em equação, tem-se: Tnew Told 1 rc Told rc Gc Sabendo que o ganho é igual a Told / Tnew obtém-se: Ganho global rc 1 rc Gc 1 8 Lei de Amdahl Exemplo Está-se a ponderar sobre qual dos seguintes upgrades se irá efectuar num processador: Hipótese 1 Acelerar o cálculo das multiplicações por um factor de 20. Sabe-se o cálculo de multiplicações consome 10% do tempo de execução. Hipótese 2 Melhorar todas as operações sobre números reais por um factor de aceleração de 5. As operações que envolvem números reais correspondem a 40% do tempo de execução. 9 Lei de Amdahl Exemplo (cont.) Hipótese 1: Hipótese 2: rc = 0.1 rc = 0.4 Gc = 20 Gc = 5 Ganho 1 1 0. 1 0 .9 20 1.105 Ganho 2 1 0. 6 0 .4 5 1.47 Conclusão: a segunda hipótese é a mais vantajosa. 10 Lei de Amdahl Conclusão O esforço para aumentar o desempenho de um sistema devem ser orientados para melhorar as situações mais frequentes Uma grande melhoria num componente que é pouco utilizado tem pouco peso no desempenho global do sistema A lei de Amdahl pode ajudar a quantificar de forma objectiva as opções que podem ser tomadas 11 Aritmética Representação de números 12 Representação de inteiros Números inteiros com sinal A representação mais comum é a representação em complemento para 2 Boas propriedades para adição e subtracção Como já viram em AC I... No entanto existem outras formas de representar: Magnitude Complemento para 1 Excesso m 13 Representação de inteiros Magnitude 1 bit de sinal seguido do valor absoluto do número Exemplos (em 8 bits) 0 0000 0000 -0 1000 0000 1 0000 0001 -1 1000 0001 41 0010 1001 -41 1010 1001 78 0100 1110 -78 1100 1110 OBS: A notação não tem boas propriedades para a adição: se fizer N + (-N) o resultado não dá 0... O ‘0’ pode ter duas representações diferentes... 14 Representação de inteiros Complemento para 1 O simétrico é a negação bit a bit Exemplos (em 8 bits) 0 0000 0000 -0 1111 1111 1 0000 0001 -1 1111 1110 41 0010 1001 -41 1101 0110 78 0100 1110 -78 1011 0001 OBS: Boas propriedades para adição, mas o ‘0’ pode ter duas representações diferentes... 15 Representação de inteiros Excesso m Representa-se o valor do número acrescido de m O menor número vale –m e é representado por 0’s Exemplo: excesso 128 (8 bits) 0 1000 0000 -0 1000 0000 1 1000 0001 -1 0111 1111 41 1010 1001 -41 0101 0111 78 1100 1110 -78 0011 0010 OBS: Quando m=2n-1 fica semelhante ao complemento para 2, mas com o bit de sinal trocado 16 Representação de inteiros Apesar de muito utilizada, a notação em complemento para 2 também tem um defeito: Existe mais um número negativo do que o número de positivos No caso da notação excesso-m, esse desequilíbrio pode ainda ser maior No entanto, não existe nenhuma notação “ideal”: o zero ter um única representação existirem tantos números negativos como positivos ter boas propriedades para adição/subtracção 17 Representação de números reais Norma IEEE 754 (versão mais recente: Ago/2008) Até meados dos anos 80, a representação de números reais não estava normalizada... Cada fabricante usava a sua representação Para ultrapassar problemas de compatibilidade, surgiu em 1985 a primeira versão da norma IEEE 754 A norma define: Os formatos de representação dos números reais Como devem ser feitos os arredondamentos Como devem ser feitas as operações Tratamento de excepções (ex: divisão por zero, underflow, overflow) … 18 Representação de números reais Formato de um número real (virgula flutuante) Precisão simples – 32 bits – float 1 bit que define o sinal (0 – positivo; 1 – negativo) 8 bits para o expoente (representado em excesso 127) 23 bits para a mantissa, representada em magnitude 1 Bit de sinal 8 bits 23 bits Expoente Mantissa 32 bits Valor do número: (-1)sinal 1.mantissa 2expoente 19 Representação de números reais Exemplo: Qual será o valor do número real C160 0000(hex)? 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 expoente mantissa sinal Sinal = 1 número negativo Expoente = 1000 0010 = 130 o expoente vale 3 (não esquecer que está em excesso 127) Mantissa = 0.1100 0000 … = 2-1 + 2-2 = 0.5 + 0.25 = 0.75 O valor do número será então: –1.75 23 = –14.0 20 Representação de números reais Significados especiais Expoente Mantissa Valor Obs. –127 == 0 0 128 == 0 infinito Depende do sinal 128 != 0 NaN (not a number) Valores não reais –127 != 0 0.mantissa 2-126 Forma desnormalizada Exemplos: 0000 0000(hex) = 0.0 7F80 0000(hex) = + FFFF FFFF(hex) = NaN 0040 0000(hex) = 0.5 * 2-126 21 Representação de números reais Precisão dupla – double Obtêm-se os valores de forma idêntica, mas os números são representados em 64 bits com 11 bits para o expoente (em excesso 1023) e 52 bits para a mantissa Gamas de representação (na forma normal) Precisão simples 1.2 10-38 a 3.4 1038 Precisão dupla 2.2 10-308 a 1.8 10308 22 Aritmética Multiplicação binária 23 Multiplicação binária Multiplicação (sem sinal) 1101 multiplicando (A) × 1010 multiplicador (B) 0000 1101 0000 1101 10000010 produto (P) Quando se multiplicam dois números de n bits (sem sinal), o resultado terá, no máximo, 2n bits. 1101 (13) × 1010 (10) = 10000010 (130) 24 Multiplicação binária Multiplicação (sem sinal) A3 A2 A1 A0 B3 B2 B1 B0 B0A3 B0A2 B0A1 B0A0 B1A3 B1A2 B1A1 B1A0 B2A3 B2A2 B2A1 B2A0 B3A3 B3A2 B3A1 B3A0 P6 P5 P4 P3 × P7 P2 ANDs entre os bits de A e os bits de B P1 P0 25 Multiplicação binária Utilizando vários adicionadores... A3 A2 A1 A0 × B3 B2 B1 B0 0 B0A3 B0A2 B0A1 B0A0 + B1A3 B1A2 B1A1 B1A0 cout1 S13 S12 S11 S10 + B2A3 B2A2 B2A1 B2A0 cout2 S23 S22 S21 S20 + B3A3 B3A2 B3A1 B3A0 cout3 S33 S32 S31 S30 P7 P6 P5 P4 P3 Somadores P2 P1 P0 26 Multiplicação binária A3 A2 A1 A0 B0 Pode-se seguir esta estrutura A3 A2 A1 A0 B1 X A3 A2 A1 A0 Cout B2 Cout B3 ADD Y S X A3 A2 A1 A0 0 ADD Y S X Cout ADD Y S P7 P6 P5 P4 P3 P2 P1 P0 27 Multiplicação binária Utilização de vários adicionadores Se os números a multiplicar são compostos por n bits então são necessários n – 1 adicionadores de n bits cada um Eventuais problemas: Excesso de material por exemplo, para multiplicar dois números de 32 bits seriam necessários 31 somadores de 32 bits Demasiado consumo de tempo durante um ciclo Num processador, ter um multiplicador deste género pode aumentar de forma significativa a duração de cada ciclo, devido aos tempos de propagação dos somadores 28 Multiplicação binária Alternativa: usar um único somador e registos O adicionador efectua todas as adições necessárias em n ciclos É necessário: Um registo para acumular as somas – RP Um registo de deslocamento para a esquerda e outro para a direita – RA e RB RP e RA são registos de 2n bits para RB, um registo de n bits é suficiente 29 Multiplicação binária Algoritmo básico (para inteiros sem sinal) Inicialização: RP ← 0, RA ← A, RB ← B Ciclo (n iterações) se ( RB0 == 1 ) // bit menos significativo em RB RP ← RP + RA RA ← RA << 1, RB ← RB >> 1 No final, o resultado da multiplicação está em RP 30 Multiplicação binária Hardware para o algoritmo básico B A Shift right Shift left RB RA RB0 ADD Load RP 31 Multiplicação binária Exemplo – multiplicar 1010 por 1001 (i.e. 109) Inicialização: RP: 0000 0000 RA: 0000 1010 RB: 1001 Ciclo 3 (RB0 = 0) RP: 0000 1010 RA: 0101 0000 RB: 0001 Ciclo 1 (RB0 = 1) RP: 0000 1010 RA: 0001 0100 RB: 0100 Ciclo 4 (RB0 = 1) RP: 0101 1010 RA: 1010 0000 RB: 0000 Ciclo 2 (RB0 = 0) RP: 0000 1010 RA: 0010 1000 RB: 0010 O resultado será então: RP: 01011010 = 21+23+24+26 = 2+8+16+64 = 90 32