Arquitetura de Computadores
Prof. Fábio M. Costa
Instituto de Informática – UFG
1o. Semestre / 2005
Fundamentos
Parte 2
Princípios de Projeto de
Computadores
Três áreas de aplicação com
características diferentes
Computação em desktop
custo / desempenho – sistema dedicado
Servidores
custo / desempenho em relação a:
confiabilidade, disponibilidade, throughput,
escalabilidade
Computadores embarcados
custo, consumo de energia (potência)
A tarefa do projetista...
Determinar:
requisitos funcionais
metas de preço, potência e desempenho
Influências importantes
mercado, quantidade de software existente
Otimizar o projeto
de 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 computador
componentes funcionais e sua interconexão
Implementação de hardware
circuitos, 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 processadores
MIPS64 R20K
processo: 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
Tempo de execuçãoX
=> Computador X é n vezes mais
rápido que Y
Métricas: tempo
Inclui:
acessos a disco
acessos à memória
atividades de entrada / saída
tempo de escalonamento
tempo de CPU
tempo de usuário
tempo de sistema: overhead do SO
ex.: Unix time utility:
TUser
90,7µs
TSys
Latency
12,9µs
2:39
%Utiliz.
65%
Métodos para medição de
desempenho
Aplicações reais
Ex.: Word, Photoshop
Aplicações modificadas
scripts para simular interação, remoção de E/S
Kernels
fragmentos de uma aplicação ou programa real, usados
para isolar o desempenho de características individuais
da máquina
Benchmarks de brinquedo
exs.: quicksort, quebra-cabeças
Benchmarks sintéticos
có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ções
TPC (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 amplo
EEMBC (EDN Embedded Microprocessor
Benchmark Consortium) – 5 classes:
automotiva / industrial
eletrônica de consumo
rede
automação de escritório
telecomunicações
Princípios de projeto...
Tornar rápido o caso comum
gastar 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
Tempo de execuçãonovo = Tempo de execuçãoantigo X (1-Fraçãoaperfeiçoada) +
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?
Tempo de execuçãonovo = Tempo de execuçãoantigo X (1-Fraçãoaperfeiçoada) +
Fraçãoaperfeiçoada
Aceleraçãoaperfeiçoada
Princípios de projeto
Melhorar a equação de desempenho da
CPU:
Instruções
Ciclos de clock
X
Dependências
Programa
Segundos
X
Instrução
= Tempo de CPU(seg/progr.)
Ciclo de clock
tempo de ciclo de clock: tecnologia de
hardware e organização
CPI (ciclos por instrução): organização e
arquitetura do conjunto de instruções
Contagem de instruções (por programa):
arquitetura do conjunto de instruções e
tecnologia de compiladores
Ciclos de clock
Relatar o desempenho em termos do número de ciclos gastos ao
invés de tempo:
segundos
ciclos
=
programa
segundos
X
programa
ciclo
“Tics” de clock indicam quando iniciar alguma atividade
time
Tempo de ciclo = tempo entre ticks = segundos por ciclo
Taxa de clock (freqüência) = ciclos por segundo
(1Hz = 1 ciclo/segundo)
Ex.: processador de 2.4GHz tem um tempo de ciclo de:
1
= 0,42 x 10 9s = 0,42ns
2.4 x 10 9
Formas de melhorar a
eficiência
segundos
ciclos
=
programa
segundos
X
programa
ciclo
Reduzir o número de ciclos por programa
otimizações feitas pelo compilador
conjunto de instruções otimizado
Reduzir o tempo de clock (i.e., aumentar a
freqüência)
tecnologia de hardware
organização da máquina
Número de ciclos gastos em
um programa
...
6th
5th
4th
3rd instruction
2nd instruction
1st instruction
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
Diferentes números de ciclos
para diferentes instruções
Multiplicação gasta mais tempo do que
adição
Operações de ponto flutuante gastam mais
tempo que operações de inteiros
Acesso à 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
Dobrar a freqüência de clock dobra o desempenho?
10
10
9
9
8
8
7
7
6
6
SPECfp
SPECint
Pode uma máquina com clock mais lento ter um desempenho melhor?
5
5
4
4
3
3
2
2
1
1
0
0
50
100
150
Clock rate (MHz)
200
250
Pentium
Pentium Pro
50
100
150
Clock rate (MHz)
200
Pentium
Pentium Pro
250
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,0
a 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 C
A 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 segundo
mais 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 programa
o 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ógio
melhorias na arquitetura e na organização do processador para
reduzir a contagem de CPI
melhorias 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 & Patterson
Cap. 1: Fundamentos do
Projeto de Computadores
Patterson & Hennessy
Cap. 2: O Papel da Performance
Download

Arquitetura de Computadores - Instituto de Informática