arquitetura de computadores - instituto de...
TRANSCRIPT
Arquitetura de Computadores
Prof. Fábio M. CostaInstituto de Informática – UFG1o. Semestre / 2005
FundamentosParte 2
Princípios de Projeto de Computadores
Três áreas de aplicação com características diferentes
Computação em desktopcusto / desempenho – sistema dedicado
Servidorescusto / desempenho em relação a:
confiabilidade, disponibilidade, throughput, escalabilidade
Computadores embarcadoscusto, consumo de energia (potência)
A tarefa do projetista...
Determinar:requisitos funcionaismetas de preço, potência e desempenhoInfluências importantes
mercado, quantidade de software existente
Otimizar o projetode acordo com as métricas adotadas
custo/desempenho (desktop)throughput e disponibilidade (servidor)consumo de energia (sistemas embarcados)etc.
A tarefa do projetista
Combinando:Arquitetura do conjunto de instruções
nível ISA – interface hardware/software
Organização do computadorcomponentes funcionais e sua interconexão
Implementação de hardwarecircuitos, tecnologias de integração, etc.
Evolução do custo de Memórias DRAM
Evolução do custo: Caso do Pentium III
Custo de um circuito integrado
Intel Pentium 4
Custo de um circuito integrado
Wafer 8”564 processadoresMIPS64 R20Kprocesso: 0.18µm
Distribuição do custo em um sistema de computação
Gabinete: 6%folha metálica, plástico: 2%
fonte de alimentação, ventoinhas: 2%
cabos, porcas, parafusos: 1%
caixa de transporte, manuais: 1%
Placa do processador: 37%processador: 22%
DRAM (128MB): 5%
Placa de vídeo: 5%
Placa-mãe (E/S e rede on-board): 5%
:Dispositivos de E/S: 37%teclado e mouse: 3%
monitor: 19%
disco rígido: 9%
unidade de DVD: 6%
SO + pacote office básico: 20%Fonte: H&P, 2003
Custo X preço
Desempenho de Sistemas de Computação
Métricas...
tempo de resposta: sistema dedicado
throughput: sistema compartilhado
Medida mais confiável: tempo gasto na execução de programas reais
Tempo de execuçãoY
= n => Computador X é n vezes mais Tempo de execuçãoX rápido que Y
Métricas: tempo
Inclui:acessos a discoacessos à memóriaatividades de entrada / saídatempo de escalonamentotempo de CPU
tempo de usuáriotempo de sistema: overhead do SOex.: Unix time utility:
TUser TSys Latency %Utiliz.90,7µs 12,9µs 2:39 65%
Métodos para medição de desempenho
Aplicações reaisEx.: Word, Photoshop
Aplicações modificadasscripts para simular interação, remoção de E/S
Kernelsfragmentos de uma aplicação ou programa real, usados para isolar o desempenho de características individuais da máquina
Benchmarks de brinquedoexs.: quicksort, quebra-cabeças
Benchmarks sintéticoscódigo “artificial”, corresponde a um perfil médio de execução
Benchmarks mais conhecidos: desktop
SPEC (Standard Performance Evaluation Corporation)
CPU: SPEC CPU2000, SPEC CPU 2004(?)
Gráficos:SPECviewperf: OpenGL
SPECapc: problemas específicos de modelagem de sólidos e CAD 3D
Processamento de alto desempenho
Java
Servidores (e-mail, arquivos, Web)
www.spec.org
Benchmarks mais conhecidos:servidores
SPEC:SPECrate – throughput de processamento
SPECFS – servidor de arquivos
SPECWeb – servidores Web
Consideram as especificidades da arquitetura de servidores (E/S eficiente, multiprocessamento)
Processamento de transaçõesTPC (Transaction Processing Council)
processamento de consultas em BDs, sistemas de apoio a decisão, transações baseadas na Web
www.tpc.org
Benchmarks mais conhecidos:sistemas embutidos
Dificuldade em se ter um único benchmark de uso amploEEMBC (EDN Embedded Microprocessor Benchmark Consortium) – 5 classes:
automotiva / industrialeletrônica de consumoredeautomação de escritóriotelecomunicações
Princípios de projeto...
Tornar rápido o caso comumgastar mais tempo otimizando as partes do sistema que são usadas com mais freqüência
Lei de Amdahl:melhorias de desempenho de partes de um sistema são diluídas no cálculo da melhoria incremental do sistema completo
Fraçãoaperfeiçoada
Tempo de execuçãonovo = Tempo de execuçãoantigo X (1-Fraçãoaperfeiçoada) + Aceleraçãoaperfeiçoada
A lei de Amdahl: Exemplo
Suponha que um programa gaste 100s para executar em uma certa máquina, com operações de multiplicação respondendo por 80s do total. Por quanto devemos melhorar a velocidade de operações de multiplicação se quisermos que o programa execute 4 vezes mais rápido?
E para executar 5 vezes mais rápido?
Fraçãoaperfeiçoada
Tempo de execuçãonovo = Tempo de execuçãoantigo X (1-Fraçãoaperfeiçoada) + Aceleraçãoaperfeiçoada
Princípios de projeto
Melhorar a equação de desempenho da CPU:
tempo de ciclo de clock: tecnologia de hardware e organizaçãoCPI (ciclos por instrução): organização e arquitetura do conjunto de instruçõesContagem de instruções (por programa): arquitetura do conjunto de instruções e tecnologia de compiladores
Instruções Ciclos de clock Segundos X X = Tempo de CPU(seg/progr.) Programa Instrução Ciclo de clock
Dep
end
ênci
as
Ciclos de clockRelatar o desempenho em termos do número de ciclos gastos ao invés de tempo:
“Tics” de clock indicam quando iniciar alguma atividade
Tempo de ciclo = tempo entre ticks = segundos por cicloTaxa de clock (freqüência) = ciclos por segundo
(1Hz = 1 ciclo/segundo)Ex.: processador de 2.4GHz tem um tempo de ciclo de:
segundos ciclos segundos = Xprograma programa ciclo
time
1 = 0,42 x 10 9s = 0,42ns 2.4 x 10 9
Formas de melhorar a eficiência
Reduzir o número de ciclos por programaotimizações feitas pelo compiladorconjunto de instruções otimizado
Reduzir o tempo de clock (i.e., aumentar a freqüência)
tecnologia de hardwareorganização da máquina
segundos ciclos segundos = Xprograma programa ciclo
Número de ciclos gastos em um programa
Poderia assumir que o número de ciclos é igual ao número de instruções do programa:
Mas:algumas instruções são mais complexas do que outras, gastando mais tempo
instruções diferentes gastam tempos diferentes em máquinas diferentes
1st
inst
ruct
ion
2nd
inst
ruct
ion
3rd
inst
ruct
ion
4th
5th
6th ...
Diferentes números de ciclos para diferentes instruções
Multiplicação gasta mais tempo do que adiçãoOperações de ponto flutuante gastam mais tempo que operações de inteirosAcesso à memória toma mais tempo do que acesso a registradores
Exercício: tempo de clock
“Our favorite program runs in 10 seconds on computer A, which has a 400 Mhz. clock. We are trying to help a computer designer build a new machine B, that will run this program in 6 seconds. The designer can use new (or perhaps more expensive) technology to substantially increase the clock rate, but has informed us that this increase will affect the rest of the CPU design, causing machine B to require 1.2 times as many clock cycles as machine A for the same program. What clock rate should we tell the designer to target?”
Tempo de clock e desempenho
Clock rate (MHz)
SP
EC
int
2
0
4
6
8
3
1
5
7
9
10
200 25015010050
Pentium
Pentium Pro
PentiumClock rate (MHz)
SP
EC
fp
Pentium Pro
2
0
4
6
8
3
1
5
7
9
10
200 25015010050
Dobrar a freqüência de clock dobra o desempenho?
Pode uma máquina com clock mais lento ter um desempenho melhor?
Exercício: CPI
Suponha que temos duas máquinas implementando a mesma arquitetura de conjunto de instruções
Para um certo programa:a máquina A tem um período de clock de 10ns e uma CPI = 2,0a máquina B tem um período de clock de 20ns e uma CPI = 1,2
Qual das duas máquinas é mais rápida para este programa? Qual a diferença entre elas?
Se duas máquinas têm a mesma ISA, qual das seguintes quantidades é sempre idêntica?
freqüência de clock, CPI, tempo de execução, número de instruções por programa, MIPS
Exemplo: Número de instruções por programa
Um projetista de compilador está tentando se decidir entre duas seqüências de código para uma máquina particular.Baseado na implementação de hardware, há três classes distintas de instruções: Classe A, Classe B e Classe C, que requerem respectivamente um, dois e três ciclos de clock.
A primeira seqüência tem 5 instruções: 2 de A, 1 de B e 2 de CA segunda seqüência tem 6 instruções: 4 de A, 1 de B e 1 de C
Qual seqüência será mais rápida? Qual a diferença?Qual é a CPI para cada seqüência?
MIPS
Milhões de instruções por segundomais alto para programas que usam instruções simples
Exemplo: MIPS
Dois compiladores diferentes estão sendo testados para uma máquina de 100MHz com três classes diferentes de instruções: Classe A, Classe B, e Classe C, que requerem 1, 2 e 3 ciclos de relógio respectivamente. Ambos os compiladores são usados para produzir código para um programa em grande escala.
O código do primeiro compilador usa 2 milhões de instruções Classe A, 1 milhão de instruções Classe B, e 2 milhões de instruções Classe C.
O código do segundo compilador usa 4 milhões de instruções Classe A, 1 milhão de instruções Classe B e 1 milhão de instruções classe C.
Qual seqüência será mais rápida de acordo com MIPS?Qual seqüência será mais rápida de acordo com o tempo de exec.?
Resumindo
Desempenho é específico para cada programao tempo de execução total é a medida de desempenho consistente
Para uma dada arquitetura, melhorias de desempenho resultam de:
melhoria na freqüência de relógiomelhorias na arquitetura e na organização do processador para reduzir a contagem de CPImelhorias nos compiladores para reduzir tanto a CPI quanto a contagem de instruções/programa
Armadilha: esperar que melhorias no desempenho de um aspecto da máquina vão afetar seu desempenho global na mesma proporção
Outros princípios de projeto visando desempenho
Explorar o “princípio da localidade”
Explorar as oportunidades de paralelismo
Empregar técnicas de otimização no compilador
Bibliografia
Hennessy & PattersonCap. 1: Fundamentos doProjeto de Computadores
Patterson & HennessyCap. 2: O Papel da Performance