Arquitectura de Computadores
Notas de estudo
Alberto José Proença
1999/00
Tendo-se concluído a apresentação da arquitectura típica de um computador - e respectivo modelo de programação ao nível da linguagem máquina - impõe-se agora uma introdução à análise dos factores que caracterizam e influenciam o desempenho dum computador, e das métricas normalmente usadas na sua medição. Este estudo das métricas é efectuado sob duas ópticas: a perspectiva do construtor de sistemas de computação que pretende introduzir melhorias no desempenho dos seus sistemas, e a do consumidor de informática que pretende efectuar comparações entre sistemas de diversos fornecedores, incluindo sistemas baseados em processadores distintos.
Embora este assunto seja tratado logo no início do livro seleccionado como consulta bibliográfica básica da disciplina (cap 2), a organização desta disciplina favorece a introdução deste tema apenas após a apresentação da estrutura da arquitectura típica dum computador. Deste modo, pensa-se que haverá maior sensibilização para os problemas relacionados com o desempenho dum computador, pois os conceitos básicos foram entretanto já introduzidos. As figuras referenciadas ao longo deste capítulo são as usadas na íntegra no livro recomendado.
Na selecção das métricas mais adequadas para uma eficiente e séria comparação entre sistemas de diversos fornecedores, sugere-se a consulta na Internet das home-pages das instituições governamentais mais conceituadas: a SPEC (http://www.spec.org) e a TPC (http://www.tpc.org).
As notas que seguem são essencialmente os acetatos apresentados nas aulas.
Podemos socorrermo-nos de metáforas para uma melhos compreensão das dificuldades em definir qual a métrica mais adequada para nos caracterizar o desempenho de um sistema (neste caso, de computação); os exemplos apresentados na aula foram inspirados no caso do avião comercial e do automóvel, com recurso à fig. 2.1.
Quando se pretendo caracterizar as métricas mais adequadas na medição do desempenho dos sistemas de computação, então é possível identificar as seguintes:
Quanto à medição do tempo de execução dum programa - e abstraindo a qualidade do programa/algoritmo e do compilador - podemos dizer que este deverá incluir:
Quanto ao desempenho do sistema - system performance - é possível quantificá-lo de acordo com a seguinte expressão:
CPUtime = user CPUtime + system CPUtime
Na medição do desempenho do processador - user CPUtime - há que:
Equação para cálculo do user CPUtime para um dado programa:
CPUtime = Nº de instruções * Nº médio de ciclos de clock / instrução * período do clock
isto é, :
CPUtime = Nº instr * CPI * período do clock
Factores da arquitectura do CPU/memória que influenciam o seu desempenho:
Prós e contras de métricas populares: geralmente não consideram os 3 factores básicos no cálculo do CPUtime. vejamos alguns exemplos:
MIPS (nativo) = Nº instr / (Tempo execução * 10^6 )
= Nº instr / (Nº instr * CPI * período do clock * 10^6 )
= fclock / (CPI * 106 )
- inconvenientes desta métrica:
- o valor depende do instruction set;
- varia entre programas executados no mesmo computador;
- pode variar inversamente com a o desempenho!
- o conceito de peak MIPS é ainda mais perigoso.
- alternativa:
MIPS (relativo) = (Temporef / Tempomedido) * MIPSref
- mas continua a ser uma métrica incompleta...
MFLOPS (nativo) = Nº op vírg flut / (Tempo execução * 106 )
- comentários a esta métrica:
- apenas mede o desempenho na execução de operaçõs em vírgula flutuante;
- menos dependendente do instruction set;
- a definição de "op vírg flut" não é consistente através das arquitecturas;
- há "op vírg flut" com pesos diferentes => normalized MFLOPS;
- a confusão ainda aumenta com os peak MFLOPS...
Uma boa suite de benchmarks deve possuir:
- um leque varaiado de aplicações reais
- aplicações que tentem simular o ambiente do utilizador
- aplicações que não encoragem optimizações específicas
- reproducibilidade de medição
i.e., uma descrição detalhada do sistema (h/w + s/w) usado na medição
- sumário simples e efectivo dos resultados
média aritmética
média aritmética pesada
média aritmética normalizada
média geométrica