Buscar

281862-Capitulo_4

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 1
Capítulo 4
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 2
Desempenho
• Meça, informe e resuma
• Faça escolhas inteligentes
• Veja através da propaganda de marketing
• Vital para entender a motivação organizacional 
subjacente
Por que alguns hardwares são melhores do que outros 
para diferentes programas?
Que fatores do desempenho de sistema são 
relacionados ao hardware? (por exemplo, precisamos 
de uma nova máquina ou de um novo sistema 
operacional?)
Como o conjunto de instruções da máquina afeta o 
desempenho?
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 3
Qual destes aviões possui o melhor 
desempenho?
• O quanto mais rápido é o Concorde comparado com o 747?
• O quanto maior é o 747 do que o Douglas DC-8?
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 4
Desempenho do computador: TEMPO, 
TEMPO, TEMPO 
• Tempo de resposta (latência)
- Quanto tempo leva para meu trabalho ser realizado?
- Quanto tempo leva para realizar um trabalho?
- Quanto tempo preciso esperar para a consulta ao banco de 
dados?
• Vazão (throughput)
- Quantos trabalhos a máquina pode realizar ao mesmo tempo?
- Qual é a velocidade de execução média?
- Quanto trabalho está sendo feito?
Se atualizarmos uma máquina com um novo processador, em que 
melhoramos?
Se acrescentarmos uma máquina ao laboratório, em que melhoramos?
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 5
Tempo de execução
• Tempo decorrido
- conta tudo (acessos a disco e a memória, E/S etc.)
- um número útil, mas normalmente não é ideal para fins de 
comparação
• Tempo de CPU
- não conta E/S ou tempo gasto executando outros programas
pode ser dividido em tempo de sistema e tempo de usuário
• Nosso foco: tempo de CPU do usuário
- tempo gasto executando as linhas de código que estão “em” 
nosso programa
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 6
Definição de desempenho do livro
• Para um programa sendo executado na máquina X,
DesempenhoX = 1 / Tempo_execuçãoX
• “X é n vezes mais rápido do que Y”
DesempenhoX / DesempenhoY = n
• Problema:
- a máquina A executa um programa em 20 segundos
- a máquina B executa o mesmo programa em 25 
segundos
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 7
Ciclos de clock
• Em vez de informar o tempo de execução em segundos, 
normalmente usamos ciclos
segundos = ciclos  segundos
programa programa ciclos
• Os ”tiques” de clock indicam quando iniciar as atividades (uma 
abstração):
tempo
• tempo de ciclo = tempo entre os tiques = segundos por ciclo
• velocidade de clock (freqüência) = ciclos por segundo (1Hz. = 1 
ciclo/segundo)
Um clock de 4Ghz possui um tempo de ciclo de 
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 8
Como melhorar o desempenho
segundos = ciclos  segundos
programa programa ciclos
• Portanto, para melhorar o desempenho (tudo mais sendo 
igual), você pode (aumentar ou diminuir?)
________ o número de ciclos necessários para um 
programa, ou
________ o tempo de ciclo de clock ou, dito de outra 
maneira,
________ a velocidade de clock.
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 9
Quantos ciclos são necessários
para um programa?
• Poderíamos considerar que o número de ciclos é igual ao 
número de instruções
1ª. Instrução
2ª. Instrução
3ª. Instrução
4ª. 
5ª. 
6ª. 
Tempo
Essa suposição é incorreta; diferentes instruções levam a 
diferentes períodos em diferentes máquinas.
Por quê? Dica: Lembre-se de que essas são instruções de 
máquina, não linhas de código C.
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 10
Diferentes números de ciclos
para diferentes instruções 
Tempo
• A multiplicação leva mais tempo do que a adição
• As operações de ponto flutuante levam mais tempo do que 
as operações de inteiros
• Acessar a memória leva mais tempo do que acessar os 
registradores
• Importante: mudar o tempo de ciclo normalmente muda o 
número de ciclos necessários para várias instruções (veja 
mais posteriormente)
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 11
Exemplo
• Nosso programa favorito é executado em 10 segundos no
computador A, que possui um clock de 4GHz. Estamos tentando
ajudar um projetista de computador a construir uma nova máquina
B, que execute esse programa em 6 segundos. O projetista
determinou que um aumento substancial na velocidade de clock é
possível, mas esse aumento afetará o restante do projeto da CPU,
fazendo com que o computador B exija 1,2 vez mais ciclos de clock
do que o computador A para esse programa. Que velocidade de
clock devemos pedir para que o projetista almeje?
• Não entre em pânico! Podemos resolver isso facilmente usando 
os princípios básicos
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 12
Agora que entendemos os ciclos
• Um determinado programa exigirá
- um determinado número de instruções (instruções de 
máquina)
- um determinado número de ciclos
- um determinado número de segundos
• Temos um vocabulário que relaciona essas quantidades:
- tempo de ciclo (segundos por ciclo)
- velocidade de clock (ciclos por segundo)
- CPI (ciclos por instrução) — uma aplicação com excessivo 
uso de ponto flutuante pode ter uma CPI mais alta
• MIPS (milhões de instruções por segundo) — isso seria mais alto 
para um programa usando instruções simples
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 13
Desempenho 
• O desempenho é determinado pelo tempo de execução
• Qualquer uma das outras variáveis igualam o 
desempenho?
- número de ciclos para executar o programa?
- número de instruções no programa?
- número de ciclos por segundo?
- número médio de ciclos por instrução?
- número médio de instruções por segundo?
• Armadilha comum: pensar que uma das variáveis é 
indicadora do desempenho, quando na realidade não é.
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 14
Exemplo de CPI
• Suponha que tenhamos duas implementações da mesma 
arquitetura do conjunto de instruções (ISA)
Para um determinado programa,
A máquina A tem um tempo de ciclo de clock de 250 ps e uma 
CPI de 2,0
A máquina B tem um tempo de ciclo de clock de 500 ps e uma 
CPI de 1,2
Que máquina é mais rápida para esse programa e o quanto?
• Se duas máquinas possuem a mesma ISA, qual de nossas 
quantidades (por exemplo, velocidade de clock, CPI, tempo de 
execução, número de instruções, MIPS) será sempre idêntica?
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 15
Exemplo de número de instruções
• Um projetista de compilador está tentando decidir entre 
duas seqüências de código para um determinada 
máquina. Baseado na implementação de hardware, 
existem três classes diferentes de instruções: Classe A, 
Classe B e Classe C, e elas exigem um, dois e três 
ciclos, respectivamente.
A primeira seqüência de código possui 5 instruções: 2 
de A, 1 de B e 2 de C. A segunda seqüência possui 6 
instruções: 4 de A, 1 de B e 1 de C.
Que seqüência será mais rápida? O quanto mais 
rápida? Qual é a CPI para cada seqüência?
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 16
Exemplode MIPS
• Dois compiladores diferentes estão sendo testados para uma 
máquina de 4GHz com três classes diferentes de instruções: 
Classe A, Classe B e Classe C, e elas exigem um, dois e três 
ciclos, respectivamente. Ambos os compiladores são usados 
para produzir código para um grande software.
O código do primeiro compilador usa 5 milhões de instruções da 
Classe A, 1 milhão de instruções da Classe B e 1 milhão de 
instruções da Classe C.
O código do segundo compilador usa 10 milhões de instruções 
da Classe A, 1 milhão de instruções da Classe B e 1 milhão de 
instruções da Classe C.
• Que seqüência será mais rápida de acordo com o MIPS?
• Que seqüência será mais rápida de acordo com o tempo de 
execução?
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 17
Benchmarks
• A melhor forma de determinar desempenho é executando uma 
aplicação real
- Usa programas típicos do workload esperado
- Ou, típico da classe de aplicações esperada — por exemplo, 
compiladores/editores, aplicações científicas, design gráfico etc.
• Benchmarks pequenos
- ótimos para arquitetos e projetistas
- fácil de padronizar
- pode ser forçado
• SPEC (System Performance Evaluation Cooperative)
- as empresas concordaram sobre um conjunto de programas e 
entradas reais
- valioso indicador do desempenho (e da tecnologia do compilador)
- ainda pode ser forçado
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 18
Jogos de benchmark
• ]A Intel reconheceu, envergonhada, na sexta-feira que um bug em um 
programa de software conhecido como um compilador levou a empresa 
a anunciar uma velocidade 10 por cento maior dos seus chips 
microprocessadores em um benchmark da área. Entretanto, os analistas 
do setor disseram que o erro de codificação foi um comentário infeliz 
sobre uma prática comum de “mentir” nos testes de desempenho 
padronizados. O erro foi atribuído à Intel dois dias atrás pela concorrente 
Motorola, em um teste conhecido como SPECint92. A Intel reconheceu 
que havia “otimizado” seu compilador para melhorar suas pontuações de 
teste. A empresa também havia dito que não gostava da prática, mas 
que foi forçada a fazer as otimizações por que seus concorrentes 
estavam fazendo o mesmo. No coração do problema da Intel está a 
prática de “ajustar” os programas de compilador para reconhecerem 
certos problemas de computação no teste e, então, substituir por partes 
especiais do código escritas a mão.
Sábado, 6 de janeiro de 1996 — New York Times
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 19
SPEC ‘89
• “Melhorias” e desempenho de compilador
Taxa de desem
penho SPEC
Compilador
Compilador melhorado
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 20
SPEC CPU2000
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 21
SPEC 2000 
• Dobrar a velocidade de clock dobra o desempenho?
• Uma máquina com uma velocidade de clock mais lenta pode ter um 
desempenho melhor?
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 22
Experiência
• Telefone para um grande vendedor de computadores 
e diga que você está com dificuldade de decidir entre 
dois computadores diferentes, especificamente, que 
está confuso quanto aos pontos fortes e fracos dos 
processadores
(Por exemplo, entre Pentium 4 2Ghz e Celeron M 
1.4Ghz)
• Que tipo de resposta você provavelmente receberá?
• Que tipo de resposta você poderia dar a um amigo 
com a mesma dúvida?
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 23
Lei de Amdahl
Tempo de execução após melhoria =
Tempo de execução não afetado + (Tempo de execução afetado / 
Quantidade de melhoria)
• Exemplo:
“Suponha que um programa seja executado em 100 segundos em 
uma máquina, com multiplicação responsável por 80 segundos 
desse tempo. O quanto precisamos melhorar a velocidade da 
multiplicação se queremos que o programa seja executado 4 
vezes mais rápido?”
Que tal torná-lo 5 vezes mais rápido?
• Princípio: Torne o caso comum rápido
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 24
Exemplo
• Suponha que melhoramos uma máquina fazendo todas as 
instruções de ponto flutuante serem executadas cinco vezes mais 
rápido. Se o tempo de execução de algum benchmark antes da 
melhoria do ponto flutuante é 10 segundos, qual será o aumento 
de velocidade se metade dos 10 segundos é gasta executando 
instruções de ponto flutuante?
• Estamos procurando um benchmark para mostrar a nova unidade 
de ponto flutuante descrita acima e queremos que o benchmark 
geral mostre um aumento de velocidade de 3 vezes. Um 
benchmark que estamos considerando é executado durante 100 
segundos com o hardware de ponto flutuante antigo. Quanto do 
tempo de execução as instruções de ponto flutuante teriam que 
considerar para produzir nosso aumento de velocidade desejado 
nesse benchmark?
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 25
Lembre
• O desempenho é específico a um determinado programa
- O tempo de execução total é um resumo consistente do 
desempenho
• Para uma determinada arquitetura, os aumentos de desempenho 
vêm de:
- aumentos na velocidade de clock (sem efeitos de CPI 
adversos)
- melhorias na organização do processador que diminuem a 
CPI
- melhorias no compilador que diminuem a CPI e/ou a 
contagem de instruções
- escolhas de algoritmo/linguagem que afetam a contagem 
de instruções
• Armadilha: Esperar que a melhoria em um aspecto do 
desempenho de uma máquina afete o seu desempenho total
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 26
Vamos construir um processador
• Estamos quase prontos para entrar no Capítulo 5 e iniciar a 
construção de um processador
• Primeiro, vamos revisar a lógica booleana e construir a ALU de que 
precisaremos (material do Apêndice B)
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 27
Revisão: álgebra booleana e portões
• Problema: Considere uma função lógica com três entradas: A, B e 
C.
- A saída D é verdadeira se pelo menos uma entrada for 
verdadeira
- A saída D é verdadeira se exatamente duas entradas forem 
verdadeiras
- A saída F é verdadeira apenas se todas as três 
entradas forem verdadeiras
• Mostre a tabela de verdade para essas três funções.
• Mostre as equações booleanas para essas três funções.
• Mostre a implementação consistindo de portões inversores, AND 
e OR
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 28
Uma ALU (unidade lógica aritmética)
• Vamos construir uma ALU para dar suporte às instruções andi e ori
– construiremos apenas uma ALU de 1 bit e usaremos 32 deles
Operação
resultado
Implementação possível (soma-dos-produtos):
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 29
Revisão: O multiplexador
• Seleciona uma das entradas para ser a saída, 
com base em uma entrada de controle
Nota: chamamos isso de um máximo de duas 
entradas, mesmo que ele tenha três entradas!
• Vamos construir nossa ALU usando um MUX:
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 30
Diferentes implementações
• Não é fácil decidir a “melhor” maneira de construir algo
- não queremos entradas demais em um único portão
- não queremos ter que atravessar muitos portões
- para nossos objetivos, a facilidade de compreensão é
importante
• Vejamos umaALU de 1 bit para adição:
• Como poderíamos construir uma ALU de 1 bit para add, and e or?
• Como poderíamos construir uma ALU de 32 bits?
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 31
Construindo uma ALU de 32 bits
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 32
E quanto à subtração (a  b)?
• Método do complemento a dois: simplesmente negue b e some.
• Como negamos?
• Uma solução muito inteligente:
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 33
Acrescentando uma função NOR
• Também podemos escolher inverter a. Como 
obtemos um “a NOR b”?
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 34
Adequando a ALU ao MIPS
• Precisamos oferecer suporte à instrução set-on-
less-than (slt)
- lembre-se: slt é uma instrução aritmética
- produz um 1 se rs < rt e produz um 0 em 
caso contrário
- use subtração: (a-b) < 0 implica a < b
• Precisamos aceitar teste de igualdade (beq $t5, 
$t6, $t7)
- use subtração: (a-b) = 0 implica a = b
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 35
Suporte a slt
• Podemos imaginar a idéia?
• Use esta ALU para o bit mais significativo
Todos os outros bits
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 36
Suporte a slt
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 37
Teste de igualdade
• Observe as linhas de controle:
Nota: zero é um 1 quando o resultado é zero!
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 38
Conclusão
• Podemos construir uma ALU para aceitar o conjunto de instruções MIPS
- idéia básica: usar um multiplexador para selecionar a saída que 
desejamos
- podemos realizar subtração eficientemente usando o 
complemento a dois
- podemos duplicar uma ALU de 1 bit para produzir uma ALU de 32 
bits
• Pontos importantes sobre hardware
- todos os portões estão sempre operando
- a velocidade de um portão é influenciada pelo número de entradas do 
portão
- a velocidade de um circuito é influenciada pelo número de portões na 
série (no “caminho crítico” ou no “nível mais profundo da lógica”)
• Nosso foco principal: compreensão; entretanto,
- Mudanças inteligentes na organização podem melhorar o 
desempenho (semelhante a usar melhores algoritmos no software)
- Vimos isso na multiplicação; agora vejamos na adição
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 39
Problema: o somador com carry ripple
é lento
• Uma ALU de 32 bits é tão rápida quanto uma ALU de 1 
bit?
• Existe mais de uma maneira de fazer adição?
- dois extremos: carry ripple e soma-de-produtos
Você consegue ver o ripple? Como você se livraria 
dele?
Inviável! Por quê?
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 40
Somador com carry look-ahead
Um método intermediário entre nossos dois extremos
• Motivação:
- Se não soubéssemos o valor do carry-in, o que 
poderíamos fazer?
- Quando sempre geraríamos um carry?
- Quando propagaríamos o carry?
• Nos livramos do ripple?
• Viável! Por quê?
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 41
Use princípio para construir somadores 
maiores
• Não podemos construir um somador de 16 
bits dessa maneira... (grande demais)
• Poderíamos usar o carry ripple dos 
somadores CLA de 4 bits
• Melhor ainda: Use o princípio CLA 
novamente!
Organização e Projetos de Computadores
©2005 Elsevier Editora Ltda
Hennessy • Patterson 42
Resumo da ALU
• Podemos construir uma ALU para aceitar adição MIPS
• Nosso foco está na compreensão, não do desempenho
• Processadores reais usam técnicas mais sofisticadas para aritmética
• Onde o desempenho não é vital, as linguagens de descrição de hardware permitem que 
os projetistas automatizem completamente a criação do hardware!

Outros materiais