• Nenhum resultado encontrado

Arquitetura e Organização de Computadores

N/A
N/A
Protected

Academic year: 2021

Share "Arquitetura e Organização de Computadores"

Copied!
52
0
0

Texto

(1)

Universidade Federal do Pampa

Campus-Bagé

Engenharia de Computação

Arquitetura e

Organização de

Computadores

Aula 2 – Revisão de Conceitos e Introdução a

Desempenho

Prof. Julio Saraçol

(2)

REVISANDO CONCEITOS

Aula 2

(3)

UCP (CPU)

Memória

periféricos

barramento do sistema permite a entrada e a saída de dados armazena instruções e dados Processa os dados e controla o sistema “auto-estrada” para dados e instruções

Modelo Básico de Computador

(4)

Programa: definição de alto nível

Um programa é uma sequência finita de comandos (em alguma

linguagem de programação), com o propósito de resolver um

problema específico. Exemplo:

#include <stdio.h>

int mult(int *v, int cont)

{

int total=0;

while( cont > 0 ){

total += *v;

v++;

cont--;

}

return total;

}

(5)

Programa: definição de baixo nível

Um programa é uma sequência finita de instruções (de um dado

processador), com o propósito de resolver um problema

específico. Exemplo:

LDR A #0

LDR X 129

LDR B 128

JZ 16

ADD A 0, X

ADD X #1

SUB B #1

JMP 6

STR A, 130

HLT

(6)

.exe (depende do S.O.)

.pas .c etc

Pascal, C etc

Fluxo de Desenvolvimento de um Programa

TurboPascal, gcc, TurboC, BorlandC etc

algoritmo

Problema

computacional

arquivo-fonte

Linguagemde

programação

Editor de

texto

arquivo

binário

compilador

Conjunto de

Instruções

Processador-alvo

(i7, PPC, MIPS, etc.)

(7)

.exe (depende do S.O.)

.asm etc.

Processador-alvo

(P4, PPC, MIPS,

etc.)

algoritmo

Problema

computacional

arquivo-simbólico

Conjunto de

Instruções

Editor

simbólico

arquivo

montador

Fluxo de Desenvolvimento de um Programa - 2

Nível de abstração baixo

(8)

Uma instrução de máquina é uma

operação básica que um

processador

é capaz de

realizar

Um

conjunto de instruções

de máquina forma um

programa

em

código de máquina

A geração do código de máquina pode ser feita a partir de um

programa em

alto nível

ou de um programa em

baixo nível

:

Alto nível: uma instrução é traduzida em muitas

instruções de máquina

Baixo nível: a tradução é praticamente

um para um

, ou

seja, uma instrução de baixo nível (assembly) para cada

instrução de máquina

Instrução de Máquina

(9)

Formato de Instrução

Cada instrução é representada como um conjunto de bits

Os bits são agrupados em campos, a fim de facilitar o projeto

do bloco de controle

Os campos definem o formato da instrução. Exemplo de

formato:

opcode

modo

endereço

identifica a

instrução

indica o modo

como a memória

é acessada ou se

o operando está

num registrador

endereço do

operando (memória

ou registrador)

(10)

Cada processador (modelo ou família de processador) possui um

conjunto de instruções

próprio. Ex: NEANDER.

instrução

significado

NOP

Nenhuma operação

STA end

Armazena acumulador (store)

LDA end

Carrega acumulador (load)

ADD end

Soma

OR end

“OU” lógico

AND end

“E” lógico

NOT

Inverte (complementa) acumulador

JMP end

Desvio incondicional (jump)

JN end

Desvio condicional (jump on negative)

JZ end

Desvio condicional (jump on zero)

HLT

Término de execução (halt)

Conjunto de Instruções

(11)

Conjunto de Instruções

Tipos de instruções:

Instruções de transferência de dados

load, store, move

Instruções aritméticas e lógicas

add, sub, mul, div, and, or, xor, not

Instruções de teste e de desvio (ou de controle de execução)

jump, jump on negative (JN), jump on zero (JZ), branch on

equal (beq)

(12)

Endereçamento: Número de Operandos

Muitas

instruções

realizam

operações

sobre

operandos

Exemplos: instruções aritméticas e lógicas

Os operandos podem estar em

qualquer posição da memória

ou em qualquer

registrador

(entre os de propósito geral)

Assim, instruções que definem uma operação sobre um

operando

precisam conter também o endereço do operando

No caso de mais de um operando, cada operando pode ter um

endereço diferente

No caso de instruções de desvio, a instrução deve indicar para

qual posição ou endereço de programa

se quer desviar

(13)

Endereçamento: Número de Operandos

O número de campos de endereço no formato de instrução

depende da organização interna do processador

e do seu

número de registradores

Tipos de organização:

Organização com acumulador

Organização com múltiplos registradores

Organização de pilha

(14)

Endereçamento: Número de Operandos

Para analisar o impacto do número de campos de endereço de

memória e do número de operandos na memória, consideremos

que se deseje programar a seguinte equação:

X=(A+B)*(C+D)

onde X, A, B, C e D são endereços de memória.

Consideremos também que tenhamos as seguintes instruções

disponíveis: ADD, SUB, MUL, MOVE (ou LOAD e STORE) e

HALT (fim de programa)

(15)

Formato de Instrução com 4 Endereços

identifica a instrução

localização dos dois

operandos-fonte

endereço da próxima

instrução

opcode

end1

end2

end3

end4

localização do

operando-destino

endereço

instrução

execução

i1

ADD A, B,

Y

, i2

Mem[

Y

]

Mem[A] + Mem[B], vai para i2

i2

ADD C, D,

Z

, i3

Mem[

Z

]

Mem[C] + Mem[D], vai para i3

i3

MUL

Y

,

Z

, X, i4

Mem[X]

Mem[

Y

] + Mem[

Z

], vai para i4

i4

HALT

Fim do programa

Vantagem: não há necessidade de instruções de desvio do fluxo de execução

(jump, branch)

Desvantagem: os programas são sequenciais, i.e., na maior parte das vezes, a

próxima instrução está no próximo endereço de memória

(16)

Formato de Instrução com 3 Endereços

identifica a instrução

localização dos dois

operandos-fonte

opcode

end1

end2

end3

localização do

operando-destino

endereço

instrução

execução

i1

ADD A, B,

Y

Mem[

Y

]

Mem[A] + Mem[B]

i2

ADD C, D,

W

Mem[

W

]

Mem[C] + Mem[D]

i3

MUL

Y

,

W

, X

Mem[X]

Mem[

Y

] * Mem[

W

]

i4

HALT

Fim do programa

Usa um registrador apontador de programa (PC), o qual é incrementado para

apontar para a próxima instrução a ser executada (exceto nos desvios)

No conjunto de instruções deve haver instruções de desvio do fluxo de execução

(jump, branch)

(17)

Formato de Instrução com 2 Endereços

identifica a instrução localização de um

operando-fonte

opcode

end1

end2

endereço

instrução

execução

i1

ADD B, A

Mem[A]

Mem[A] + Mem[B]

i2

ADD D, C

Mem[C]

Mem[C] + Mem[D]

i3

MUL C, A

Mem[A]

Mem[A] * Mem[C]

i4

MOVE A, X

Mem[X]

Mem[A]

i5

HALT

Fim do programa

A e C são sobrescritos!

localização do outro

operando-fonte que

também é destino

(18)

Formato de Instrução com 1 Endereço

identifica a instrução localização de um

operando-fonte

opcode

end1

Há um registrador chamado acumulador (abreviado por AC),

que contém o segundo operando

O acumulador também é o destino do resultado

As instruções de movimentação de dados são LOAD e STORE,

as quais são definidas em relação ao acumulador (AC)

(19)

Formato de Instrução com 1 endereço

Usa uma posição de memória (Y) para armazenamento temporário!

endereço

instrução

execução

i1

LOAD A

AC

Mem[A]

i2

ADD B

AC

AC + Mem[B]

i3

STORE Y

Mem[Y]

AC

i4

LOAD C

AC

Mem[C]

i5

ADD D

AC

AC + Mem[D]

i6

MUL Y

AC

AC * Mem[Y]

i7

STORE X

Mem[X]

AC

i8

HALT

Fim do programa

(20)

Formato de Instrução com 0 endereço

identifica a instrução

opcode

Não existe referência sobre a localização dos operandos

(memória ou registrador)

A localização dos operandos se dá de maneira implícita, quando

a arquitetura foi definida

Uma possibilidade é colocar os operandos em uma área

específica da memória e fazer uso de um mecanismo específico

para a localização

(21)

Formato de Instrução com 0 Endereço

Exempo: uma pilha

os operandos são sempre retirados do topo da pilha

o resultado é colocado no topo da pilha

PUSH (coloca no topo da pilha)

POP (retira do topo da pilha)

(22)

Formato de Instrução com 0 Endereço

endereço

instrução

execução

i1

PUSH A

topo

Mem[A]

i2

PUSH B

topo

Mem[B]

i3

ADD

topo

(Mem[A] + Mem[B])

(A e B são retirados do topo da pilha)

i4

POP X

Mem[X]

topo

i5

PUSH C

topo

Mem[C]

i6

PUSH D

topo

Mem[D]

i7

ADD

topo

(Mem[C] + Mem[D])

(C e D são retirados do topo da pilha)

i7

PUSH X

topo

Mem[X]

i8

MUL

topo

((Mem[C] + Mem[D]) * (Mem[A] + Mem[B]))

i9

POP X

Mem[X]

topo

i10

HALT

Fim do programa

(23)

Modos de Endereçamento

Imediato

(24)

Modos de Endereçamento

Direto

(25)

Modos de Endereçamento

Indireto

(26)

Modos de Endereçamento

Registrador

(27)

Modos de Endereçamento

Registrador Indireto

(28)

Modos de Endereçamento

Base + Deslocamento

(29)

Modelos Arquiteturais

Arquitetura de Von Neumann

Arquitetura de Harvard

(30)

Arquitetura de Von Neumann

Arquitetura com programa

armazenado em memória

Antes, programas eram

inseridos com chaves

Base para a maioria dos

computadores até a atualidade

Usa dados e instruções em

memória

(31)

Arquitetura de Von Neumann

Proposto pela equipe de projeto do EDVAC (usado no projeto

Manhatan)

A idéia da arquitetura foi de J. Presper Eckert e John

Mauchly, mas John von Neumann se voluntariou para

escrever o relatório, em 1945

John von Neumann era um matemático brilhante, mas com

ética questionável

No relatório final, ele excluiu o nome dos verdadeiros autores

da idéia e, desde então, este modelo arquitetural é chamado

de “Von Neumann”

(32)

Gargalo de Von Neumann

µProc

60%/yr.

DRAM

7%/yr.

1

10

100

1000

1980

1981

1983

1984

1985

1986

1987

1988

1989

1990

1991

1992

1993

1994

1995

1996

1997

1998

1999

2000

DRAM CPU

1982

Processor-Memory

Performance Gap:

(grows 50% / year)

P

e

rf

o

rm

a

n

c

e

(33)

Gargalo de Von Neumann

(34)

Gargalo de Von Neumann

Como podemos minimizar este problema?

Mais registradores (para evitar acesso à memória)

Reduzir (ou eliminar) o número de instruções que podem

buscar operadores na memória

Explorar reuso de dados e instruções com o uso de caches

Usar hierarquia de memória com vários níveis

Ainda assim existem gargalos intransponíveis (veremos

melhor quando estudarmos o MIPS)

Novo modelo arquitetural: Arquitetura Harvard

(35)

Arquitetura de Harvard

Duas memórias, uma para dados

e outra para instruções

É possível ler uma instrução

e ler ou escrever

um dado ao mesmo

tempo!

Duplica a taxa de transferência

memória <=> processador,

Aumenta a eficiência da cache

Problemas?

(36)

Modelo Híbrido

É mais usado atualmente

Memória RAM é comum

para dados e instruções

(Von Neumann)

Memórias caches

separadas para dados e

instruções (Harvard)

Processadores atuais

seguem este modelo

Pentium

(37)

Modelo Híbrido

Core i7

(38)

INTRODUÇÃO SOBRE

DESEMPENHO

(39)

Desempenho (Performance)

• Meça, informe e resuma

• Faça escolhas inteligentes

• Veja através da propaganda de marketing

• Vital para entender a motivação organizacional

subjacente (

Organização do hardware

)

(40)

Desempenho (Performance)

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?

(41)

Algumas considerações

• Medidas de performance: difícil

– Impossível de julgar apenas pela análise do conjunto de

instruções

• Diferentes métricas -> diferentes resultados

– É importante entender os critérios, para poder fazer

escolhas inteligentes

• Comparação entre máquinas:

– Importante para:

• Compradores

• Projetistas

(42)

Considerações sobre a medição

• Importância para projetistas/engenheiros:

– Saber se uma máquina é mais rápida que a outra.

• Saber o “porquê” disto acontecer (hardware, set de

instruções, etc.).

• Fatores que influenciam na performance:

– Quão bem o programa usa as instruções de

máquina.

– Quão bem o hardware implementa as instruções.

– Quão bem os sistemas de I/O funcionam.

(43)

Qual destes aviões possui o melhor desempenho?

• O quanto mais rápido é o Concorde comparado com o 747?

• O quanto maior é o 747 em relação ao Douglas DC-8?

(44)

Exercitando as métricas

• Critérios: velocidade, capacidade,

etc.

– Velocidade: Concorde é o melhor

– Capacidade: Boeing 777 é o melhor

– Alcance: o DC-8-50 é o melhor

(45)

Mas nem tudo é tão simples

• Vazão (capacidade x velocidade) de passageiros

– Até 132 passageiros, o Concorde é o melhor

• Concorde leva 132 passageiros a 1350 mph

132 x 1350 = 178.200.

• Boeing 747 teria 132 passageiros a 610 mph

132 x 610 = 80.520.

– Entretanto, para 470 passageiros (capacidade do

Boeing 747), este seria melhor (já que o Concorde

não atende)

• 470 x 610 = 286.700.

Portanto,

dependendo do problema, um determinado

SISTEMA pode ser ou não o melhor segundo uma

determinada MÉTRICA

(46)

• Tempo de resposta (latência) –

tempo entre início-término

da tarefa

- 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) ***

Trabalho pode ser um programa!!

- Quantos trabalhos a máquina pode realizar ao mesmo

tempo?

- Qual é a velocidade de execução média?

- Quanto trabalho está sendo feito?

(47)

Desempenho do computador: TEMPO, TEMPO, TEMPO

O que melhoramos ...

Se atualizarmos uma máquina com um novo processador,

qual métrica melhoraremos?

Se acrescentarmos uma máquina ao laboratório, qual delas

melhoraremos?

OBS.: IMPORTÂNCIA DE UMA MÉTRICA DEPENDE DO

PROBLEMA

(48)

Tempo de execução

• Tempo decorrido

(tempo de relógio ou tempo de

resposta)

– 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 execução da CPU

(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

(traduzidas em

instruções de baixo nível)

que estão “em” nosso programa

(49)

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ápida do que Y”

DesempenhoX / DesempenhoY = n

• Problema:

- a máquina A executa um programa em 10 segundos

- a máquina B executa o mesmo programa em 15

segundos

(50)

Observações sobre nomenclaturas

• Comparação:

– “mais rápido que”.

• Variação:

– Melhorar desempenho/performance.

– Melhorar tempo de execução.

• Ao invés de:

– Aumentar desempenho/performance.

– Diminuir tempo de execução.

(51)

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” (tics) de clock indicam quando iniciar as atividades

(uma abstração):

tempo

• tempo de ciclo = tempo entre os tiques = segundos por ciclo

• velocidade de clock (frequência) = ciclos por segundo (1Hz = 1 ciclo/segundo)

(52)

Perguntas para Refletir

• O desempenho do computador C é 4

vezes PIOR do que o desempenho do

computador B, que executa uma

determinada aplicação em 28

segundos. Quanto tempo o computador

C levará para executar essa aplicação?

Referências

Documentos relacionados

Foi só quando a Levi’s, há dois anos, fez uma pesquisa sobre o corpo e as preferências de 10 mil mulheres em todos os cantos do mundo, que foi possível modelar o jeans da marca de

Como a produção de testosterona diminui regularmente, em homens de 75 anos os níveis médios de testosterona são somente 65% daqueles dos adultos jovens, sendo que pelo menos 25%

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Para visualizar os nível máximo e nível mínimo atingido pelo indicador, pressione a tecla SET e em seguida utilize a tecla incremento ou a tecla decremento para navegar no

O profissional selecionado para atuar na REDE E-TEC BRASIL será remunerado na forma de concessão de bolsas conforme o Manual de Gestão da Rede e-Tec disponível em

Nesse sentido, faz-se necessária pesquisa acadêmica que produzam e olhem as para práticas educativas que ocorrem na escola pública, qualificada como direito, gratuita,

O Núcleo de Gestão Ambiental Avançada (NUGA) foi concebido para desenvolver estudos e práticas inovadoras de gestão ambiental, a fim de atender às crescentes demandas