• Nenhum resultado encontrado

Aula05

N/A
N/A
Protected

Academic year: 2021

Share "Aula05"

Copied!
28
0
0

Texto

(1)

ORGANIZAÇÃO E

ARQUITETURA DE

COMPUTADORES I

Aula 05

(2)

INTRODUÇÃO

Para que o hardware de um computador funcione, é

necessário que eles falem a mesma linguagem.

Instruções – palavras da linguagem de um computador;

Conjunto de instruções – vocabulário de um computador.

Todos os computadores são construídos a partir de

tecnologias

baseadas

em

princípios

básicos

semelhantes e precisam oferecer operações básicas, o

que faz com que as linguagens de computador sejam

semelhantes.

(3)

INTRODUÇÃO

Os projetistas de computador possuem um objetivo

comum:

Encontrar uma linguagem que facilite o projeto do hardware

e do compilador enquanto maximiza o desempenho e minimiza o custo.

MIPS

 Conjunto de instruções criado desde a época de 1980;  Veremos como funciona este conjunto de instruções.

(4)

OPERAÇÕES DO HARDWARE DO

COMPUTADOR

Cada instrução aritmética do MIPS realiza apenas uma

operação e sempre precisa ter exatamente três

variáveis.

Exemplos de como é feita a soma de quatro variáveis:

add a, b, c # A soma b + c é colocada em a.

add a, a, d # A soma de b + c + d agora está em a.

add a, a, e # A soma de b + c + d + e agora está em a.

São necessárias três instruções para realizar a soma

(5)

OPERAÇÕES DO HARDWARE DO

COMPUTADOR

Cada instrução possuir apenas três operandos faz com

que a filosofia de manter o hardware simples seja

seguida.

Temos agora o primeiro dos quatro princípios básicos

de projeto do hardware:

Princípio de Projeto I: simplicidade favorece a regularidade.

Subtração de duas variáveis no MIPS:

(6)

OPERAÇÕES DO HARDWARE DO

COMPUTADOR

Uma instrução mais complexa no MIPS precisa se

desmembrar em várias instruções:

f = (g + h) – (i + j);

add t0, g, h add t1, i, j sub f, t0, t1

(7)

OPERANDOS DO HARDWARE DO

COMPUTADOR

Os operandos das instruções aritméticas são

embutidos diretamente no hardware e são chamados

de registradores.

Na arquitetura MIPS um registrador tem o tamanho de

32 bits. Cada grupo de 32 bits recebe o nome de

palavra.

Nos computadores atuais, temos 32 registradores.

Cada um dos três operandos das instruções

aritméticas do MIPS precisa ser escolhido a partir de

um dos 32 registradores de 32 bits.

(8)

OPERANDOS DO HARDWARE DO

COMPUTADOR

Qual o motivo de termos apenas 32 registradores?

Principio de Projeto 2: menor significa mais rápido.

Uma quantidade muito grande de registradores pode

aumentar o tempo do processamento.

Os projetistas de computador precisam equilibrar o

desejo dos programas por mais registradores com o

desejo do projetista de manter o ciclo de clock rápido.

(9)

OPERANDOS DO HARDWARE DO

COMPUTADOR

No MIPS, utilizamos um sinal de cifrão seguido por

dois caracteres para representar um registrador.

Utilizaremos $S0, $S1,..., para registradores que

correspondem às variáveis dos programas e $t0,

$t1,..., para os registradores temporários.

(10)

OPERANDOS DO HARDWARE DO

COMPUTADOR

Exemplo:

Como ficaria o exemplo anterior utilizando os conceitos

aprendidos agora? f = (g + h) – (i + j);

 As variáveis f, g, h, i e j são associadas agora aos

registradores $s0, $s1, $s2, $s3 e $s4.

O programa compilado é muito semelhante ao anterior:

add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1

(11)

OPERANDOS DO HARDWARE DO

COMPUTADOR

Operandos em memória

Estruturas de dados complexas podem conter muito mais

elementos de dados do que a quantidade de registradores em um computador.

 Como o processador só pode manter uma pequena

quantidade de dados nos registradores, as estruturas de dados são mantidas na memória.

Instruções de transferência de dados – comando que

move dados entre a memória e os registradores.

Para acessar uma palavra na memória, a instrução precisa

(12)

OPERANDOS DO HARDWARE DO

COMPUTADOR

Endereço – valor usado para delinear o local de um

elemento de dados específico dentro de uma seqüência da memória.

 O endereço atua como índice de um array, começando de 0.

1

101

10

100

Endereço Dados Processador Memória 3 2 1 0

(13)

OPERANDOS DO HARDWARE DO

COMPUTADOR

Load – instrução de transferência de dados que copia

dados da memória para um registrador tradicional.

Utiliza os seguintes dados:

Nome da operação (lw)

registrador a ser carregado uma constante

registrador usado para acessar a memória

 A soma da parte constante da instrução com o conteúdo do

(14)

OPERANDOS DO HARDWARE DO

COMPUTADOR

Exemplo:

A é uma seqüência de 100 words.

O compilador associou as variáveis g e h aos registradores $s1 e

$s2.

O endereço inicial da seqüência, ou endereço base, está em $s3.  Como ficaria a seguinte instrução?

g = h + A[8]

 Primeiro precisamos transferir A[8] para um registrador:

lw $t0, 8($s3)

 Depois pode ser feita a soma utilizando o valor em $t0, pois ele já esta

em um registrador:

add $s1, $s2, $t0

(15)

OPERANDOS DO HARDWARE DO

COMPUTADOR

Interface hardware/software

O compilador também pode alocar estruturas de dados em

locais na memória.

 Para alocar estruturas de dados, ele coloca o endereço inicial

apropriado nas instruções de transferência de dados.

 Como cada byte possui 8 bits, o endereço de uma palavra

combina os endereços dos 4 bytes dentro dela.

Logo, os endereços sequenciais das palavras diferem em

(16)

OPERANDOS DO HARDWARE DO

COMPUTADOR

1

101

10

100

Endereço Dados Processador Memória 3 2 1 0

12

8

4

0

(17)

OPERANDOS DO HARDWARE DO

COMPUTADOR

Exemplo

Suponha que a variável h esteja associada ao registrador

$s2, e o endereço base do array A esteja em $s3. Qual é o código do MIPS para a instrução a seguir?

A[12] = h + A[8];

Dois operandos estão na memória, por isso precisaremos de

mais instruções MIPS:

lw $t0, 32($s3) # Registrador temporário $t0 recebe A[8] add $t0, $s2, $t0 # Registrador temporário recebe h + A[8]

(18)

OPERANDOS DO HARDWARE DO

COMPUTADOR

 Muitos programas possuem mais variáveis do que o número

de registradores disponíveis.

 O compilador mantém então as variáveis mais utilizadas nos

registradores e coloca as restantes na memória.

 Dados são mais úteis quando estão em registradores.

 Acesso a eles é mais rápido;

 Uma instrução pode ler dois registradores, atuar sobre eles e

escrever o resultado.

Como evitar então, o uso da instrução load?

 Utilizando a instrução addi (add imediato);

 Essa instrução é utilizada quando o operando é uma constante;  Exemplo:

Para somar 4 ao registrador $s3, simplesmente podemos escrever:

(19)

REPRESENTANDO INSTRUÇÕES NO

COMPUTADOR

Toda informação mantida no computador é composta

por dígitos binários (bits).

Instruções também são mantidas como uma série de

bits. Cada parte da instrução é considerada um número

individual e a junção desses números forma a instrução.

É preciso então haver uma convenção para mapear

nomes de registradores em números:

 Os registradores $s0 a $s7 são mapeados nos registradores

de 16 a 23;

 Os registradores $t0 a $t7 são mapeados nos registradores de

(20)

REPRESENTANDO INSTRUÇÕES NO

COMPUTADOR

Exemplo:

Como ficaria a versão da linguagem real do MIPS para a seguinte

instrução?

add $t0, $s1, $s2

A representação decimal é:

- O primeiro e último campos combinados dizem ao computador que

essa instrução realiza uma soma;

- O segundo e o terceiro campos indicam o número dos registradores

que são os operandos da operação;

- O quarto campo contém o número do registrador que deverá receber a

soma;

- O quinto campo não é utilizado nessa instrução e por isso é definido

como 0.

A representação em binário é:

0

17

18

8

0

32

00000

(21)

REPRESENTANDO INSTRUÇÕES NO

COMPUTADOR

 A versão numérica das instruções é chamada de Linguagem

de máquina.

 Note que uma instrução MIPS ocupa exatamente 32 bits – o

mesmo tamanho de uma palavra de dados.

Campos do MIPS

Os campos do MIPS recebem nomes:

op

rs

rt

rd

shamt

funct

(22)

REPRESENTANDO INSTRUÇÕES NO

COMPUTADOR

 Significado de cada nome:

 op: operação básica da instrução, tradicionalmente chamado de

opcode;

 rs: o registrador do primeiro operando de origem;  rt: o registrador do segundo operando de origem;

 rd: o registrador do operando de destino. Recebe o resultado da

operação;

 shamt: “Shift amount” (quantidade de delocamento) (veremos mais

adiante como usá-lo);

 funct: função. Esse campo seleciona a variante específica da

(23)

REPRESENTANDO INSTRUÇÕES NO

COMPUTADOR

 Quando uma instrução precisa de campos maiores do que os

mostrados, usamos um formato diferente.

 O primeiro formato visto é chamado de tipo-R (de

registrador) ou formato R.

Um segundo tipo de formato é o tipo I (de imediato) ou

formato I. Seus campos são:

6 bits 5 bits 5 bits 16 bits

op

rs

rt

constante

ou

endereço

(24)

REPRESENTANDO INSTRUÇÕES NO

COMPUTADOR

Os formatos são diferenciados pelos valores no

primeiro campo:

Instrução Format

o op rs rt rd Shamt Funct endereço

add R 0 reg reg reg 0 3410 n.a.

sub R 0 reg reg reg 0 3210 n.a.

add

immediate I 810 reg reg n.a. n.a. n.a. constante

lw I 3510 reg reg n.a. n.a. n.a. endereço

Sw I 4310 reg reg n.a. n.a. n.a. endereço

“reg” significa um número de registador, “endereço” significa um endereço de 16 bits e “n.a.” indica que o campo não aparece no formato. Nas instruções add e sub, o hardware usa o campo funct para decidir se a operação é de soma ou subtração.

(25)

REPRESENTANDO INSTRUÇÕES NO

COMPUTADOR

Exemplo

 Veremos agora um exemplo completo daquilo que o

programador escreve até o que o computador executa.

A instrução: A[300] = h + A[300], é compilada para:

lw $t0, 1200($t1) # Reg. Temporário recebe A[300]

add $t0, $s2, $t0 # Reg. Temporário recebe h + A[300]

sw $t0, 1200($t1) # Armazena h + A[300] de volta para A[300]

 Qual o código em linguagem de máquina para essas

instruções?

op rs rt rd endereço / shamt funct

35 9 8 1200

0 18 8 8 0 32

(26)

OPERAÇÕES LÓGICAS

Podemos utilizar na linguagem MIPS as operações

lógicas que já conhecemos:

 Campo shamt

 Este campo indica a quantidade de deslocamento que deve ser

feito em uma instrução do tipo sll ou srl.

Operações Lógicas Operadores C Instruções MIPS

Shift à esquerda << sll

Shift à direita >> srl

AND bit a bit & and, andi

OR bit a bit | or, ori

(27)

INSTRUÇÕES PARA TOMADA DE

DECISÕES

A tomada de decisão normalmente é representada

nas linguagens de programação usando a instrução if,

às vezes combinadas com instruções go to.

O MIPS possui duas instruções para tomada de

decisões. A primeira é:

beq registrador1, registrador2, L1

Significa ir até a instrução rotulada por L1 se o valor no

registrador1 for igual ao valor no registrador2

A segunda instrução é:

bne registrador1, registrador2, L1

Significa ir até a instrução rotulada por L1 se o valor no

(28)

INSTRUÇÕES PARA TOMADA DE

DECISÕES

Exemplo

 Qual é o código MIPS compilado para a instrução if em C?

if (i == j) f = g + h; else f = g – h;

 A primeira expressão compara a igualdade, por isso

poderíamos querer usar beq, mas o código será mais eficiente se testarmos a condição oposta ao desvio no lugar do código que realiza a parte subsequente do if:

bne $s3, $s4, Else add $s0, $s1, $s2 j Exit

Else: sub $s0, $s1, $s2 Exit:

 A instrução j diz que o processador sempre deverá seguir o

Referências

Documentos relacionados

Estes resultados apontam para melhor capacidade de estabelecimento inicial do siratro, apresentando maior velocidade de emergência e percentual de cobertura do solo até os 60

• Árvores são ideais para armazenar hierarquias, além de serem mais rápidas e eficientes do que as estruturas de dados lineares... • É formada por um “conjunto de

– Os elementos devem estar ordenados – Realizar a busca pelo meio do vetor.

Apesar de o mercado acionário brasileiro ter se tornado mais importante para a economia brasileira, sobretudo entre o período de 2002 para 2005 (Tabela 3), sua repre- sentatividade

Para análise da susceptibilidade à erosão dos solos que compunham as paredes da voçoroca, foram realizados ensaios de Pinhole (Furo de Agulha), Desagregação e Dispersão

Este presente artigo é o resultado de um estudo de caso que buscou apresentar o surgimento da atividade turística dentro da favela de Paraisópolis, uma

Changes in the gut microbiota appears to be a key element in the pathogenesis of hepatic and gastrointestinal disorders, including non-alcoholic fatty liver disease, alcoholic

 Numéricos das das Propriedades Propriedades do do Ar Ar Úmido, Úmido, Cartas Cartas Psicrométricas, Psicrométricas, Processos Processos Psicrométricos, Psicrométricos,