62
Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Embed Size (px)

Citation preview

Page 1: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Organização e Arquitetura de Computadores

Capítulos 9 e 10Conjunto de Instruções

Page 2: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

O que é um conjunto de instruções?

Coleção completa das instruções que são entendidas por uma CPU

Código de máquina• Binário

Representada por códigos em assembly (linguagem de montagem)

Page 3: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Elementos de uma instrução

Código de operação (Cod.Op ou Opcode)• Especifica a operação a ser efetuada• Ex. ADD

Referência a operando fonte• Operandos para a operação• Dados de entrada

Referência a operando de resultado • Resultado da operação

Referência à próxima instrução• Indica onde a CPU deve buscar a próxima instrução• Normalmente a próxima instrução• Excessões: jumps

Page 4: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Localização dos Operandos

Memória principal (ou virtual ou cache) Registradores da CPU Dispositivos de I/O

Page 5: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Ciclo de instruções

Page 6: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Representação de Instruções

Cada instrução é representada por um único padrão de bits

Para a compreensão humana, uma representação simbólica é usada: mnemônicos• e.x. ADD, SUB, LOAD

Operandos também podem ser representados dessa maneira• ADD A,B

Page 7: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Número de endereços

Instruções podem ser analisadas de acordo com o número de endereços de operandos• Operações aritméticas podem demandar um

maior número de operandos Considere a operação:

Y=(A-B)/(C*D*E)

Quantos endereços utilizar???

Page 8: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

3, 2 ou 1 endereços?

Page 9: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Número de endereços

3 endereços• Operando 1, Operando 2, Resultado• a = b + c;• Pouco utilizadas

Necessita de palavras grandes para armazenar todos os parâmetros da instrução

Page 10: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Número de endereços

2 endereços• Um endereço funciona duplamente

como operando e resultado• a = a + b• Reduz o comprimento da instrução• Necessita de algum trabalho extra

Armazenamento temporário de alguns resultados

Page 11: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Número de endereços

1 endereço• Segundo endereço é implícito• Normalmente é um registrador (ex:

acumulador)• Comum nas máquinas mais simples

Page 12: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Número de endereços

0 (zero) endereços• Todos os endereços são implícitos• Usa uma pilha• e.g. push a• push b• add• pop c

• c = a + b

Page 13: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Vantagens/Desvantagens

Mais endereços• Instruções mais complexas• Mais registradores

Operações entre registradores são mais rápidas

• Menos instruções por programa Menos endereços

• CPU mais simples• Instruções menos complexas• Mais instruções por programa• Busca/execução mais rápidas

Page 14: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Decisões de projeto

Algumas decisões de projeto devem ser levadas em conta

Efeito significativo sobre a implementação da CPU• Complexidade• Custos

Necessidades do programador

Page 15: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Decisões de projeto

Repertório das operações• Quantas operações?• O que elas podem fazer?• Quão complexas são?

Tipos de dados Formato das instruções

• Comprimento do código de operação (quantos bits)

• Número de endereços

Page 16: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Decisões de projeto

Registradores• Número de registradores disponíveis na CPU• Quais operações podem ser feitas em quais

registradores?• Gerais ou específicos

Modos de endereçamento

RISC versus CISC

Page 17: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Trabalho 3

Pesquisa• Arquiteturas RISC x Arquiteturas CISC• Tópicos:

Características dos dois grupos de arquiteturas Vantagens e Desvantagens Exemplos de arquiteturas (número de registradores,

instruções, desempenho)

• Dupla• Páginas: entre 4 e 6 páginas (formato artigo)• Entrega: último dia de aula de OAC (2006)• Consultar no mínimo 4 referências (citá-las no

texto)

Page 18: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Tipos de operando

Endereços (detalhes Cap. 10) Números

• Inteiros• Ponto Flutuante• Decimais (BCD: binary coded decimal)

4 bits para cada dígito decimal

Caracteres• ASCII • EBCDIC

Lógicos• Bits or flags

Cap. 8

8 bits por caracter

Page 19: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Tipos de operação

Quantidade de instruções varia de acordo com a máquina

Mas a classe de instruções é basicamente a mesma:• Transferência de dados• Aritmética• Lógica• Conversão• E/S• Controle• Transferência de controle

Page 20: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Transferência de dados

Especificar• Fonte• Destino• Quantidade de dados

Em alguns casos diferentes instruções para diferentes movimentos• e.x. IBM 370

Page 21: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Exemplos

Page 22: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Aritmética

Adição, subtração, multiplicação e divisão • Inteiros com sinais• Floating point

Exemplo

Page 23: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Lógica

Operações aplicadas a bits AND, OR, NOT Exemplo

Page 24: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Conversão

E.x. Binário para decimal

Page 25: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Input/Output

Instruções específicas Pode ser executadas instruções de

movimentação de dados Pode ser executado por uma controladora

separada (DMA)

Page 26: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Controle

Instruções privilegiadas CPU deve estar em um estado específico Para uso do sistema operacional

Page 27: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Transferência de controle

3 motivos• Decisão• Repetição• Modularidade

Tipos de intruções:• Desvio/Saltos (jumps)• Chamadas de procedimento

Page 28: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Instruções de Desvio/Salto

Comumente instruções são executadas em seqüência

Pode haver a necessidade de desviar (pular) uma instrução (ou algumas)

Intruções:• Desvio feito se alguma condição é satisfeita

(desvio condicional)• Desvio incondicional

Page 29: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Chamadas de procedimento

Desenvolvimento em módulos• Procedimentos

Vantagens:• Modularidade• Economia de código

Page 30: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções
Page 31: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Retorno de procedimentos

3 possibilidades• Registrador• Área de memória• Pilha (também usada para passagem de

parâmetros) Registro de ativação

Page 32: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Modos de Endereçamento

Imediato Direto Indireto Registrador Indireto a Registrador Indexado (Displacement) Pilha (Stack)

Page 33: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Endereçamento Imediato (cap 10)

Operando é parte da instrução Operando = campo do endereço e.x. ADD 5

• Soma 5 ao conteúdo do acumulador• 5 é o operando

Nenhuma referência à memória para buscar dados

Rápido

Page 34: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Endereçamento Direto

Campo de endereços contém o endereço do operando

Endereço efetivo (EA) = campo de endereço efetivo(A) e.x. ADD A

• Adiciona o conteúdo de uma célula A ao acumulador

• Olha na memória o no endereço A para um operando

Referencia uma memória única para acessar os dados

Não apresenta cálculos adicionais para trabalhar com o endereço efetivo

Espaço de endereçamento limitado

Page 35: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Endereçamento Direto

Endereço ACod.Op

Instrução

Memória

Operando

Page 36: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Endereço Indireto

Células de memória apontadas por um campo do endereço que contém o endereço (ponteiro) do operando

EA = (A)• Olhe em A, encontre o endereço(A) e procure

lá pelo operando e.x. ADD (A)

• Soma o conteúdo da célula apontada ao conteúdo de A ao acumulador

Page 37: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Endereço Indireto

Endereço ACod.Op

Instrução

Memória

Operando

Ponteiro para operando

Page 38: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Endereçamento a registrador

Operando émantido num registrador definido no campo de endereço

EA = R Número limitado de registradores Campo de endereços necessário é pequeno

• Instruções menores (tamanho menor)• Busca da instrução mais rápida

Nenhum acessoà memória Execução muito rápida Espaço de endereçamento limitado

Page 39: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Endereçamento a registrador

Endereço do Registrador RCod.Op

InstruçãoBanco deRegistradores

Operando

Page 40: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Endereçamento Indireto a Registrador

Endereçamento indireto EA = (R) O operando está na memória apontado

pelo conteúdo de um registrador R Maior espaço de endereçamento (2n) Um acesso a menos na memória do que o

modo de endereçamento indireto (puro)

Page 41: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Endereçamento Indireto a Registrador

Registrador de Endereços RCod.Op

Instrução

Memória

OperandoPonteiro para operando

Banco de Registradores

Page 42: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Endereçamento a Deslocamento

EA = A + (R) Campo de endereços armazena dois

valores• A = valor base• R = registrador que armazena o deslocamento• ou vice versa

Page 43: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Endereçamento a Deslocamento

Registrador RCod.Op

Instrução

Memória

OperandoPonteiro para Operando

Banco de Registradores

Endereço A

+

Page 44: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Endereçamento Relativo

Uma versão de endereçamento a deslocamento

R = contador de instruções (PC) EA = A + (PC) i.e. pega o operando da célula A da

posição corrente apontada pelo PC Vantagens: princípio da localidade e

uso do cache

Page 45: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Endereçamento base-registrador

A armazena o deslocamento R armazena um ponteiro para o endereço

base R pode ser explícito ou implícito e.x. registradores de segmento do 80x86

Page 46: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Endereçamento Indexado

A = base R = deslocamento EA = A + R Bom para fazer acessos a arrays

• EA = A + R• R++

Page 47: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Endereçamento à pilha

Operando está implicitamente no topo de uma pilha

Page 48: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Comparativo

Page 49: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Tamanho da instrução (cap. 10)

Afetado por e afeta:• Tamanho da memória• Organização da memória• Estrutura do barramento• Complexidade da CPU• Velocidade da CPU

Compromisso entre um repertório variado de instruções e a economia de espaço• Memórias são baratas

Page 50: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Alocação de bits

Número de modos de endereçamento Número de operandos Registradores versus memória Número de conjuntos de registradores Faixa de endereçamento Granularidade do endereçamento

Page 51: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Novos conjuntos de intruções

MMX SSE e SSE2 3DNOW!

Características• Multimídia• Operações sobre múltiplos dados (vetorial)• Registradores maiores (SSE)

Page 52: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Linguagem de Montagem

CPU: linguagem de máquina Simplificar a escrita de programas

Page 53: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções
Page 54: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Ordenação de Bytes

Little endian:• escreve dados com a seguinte ordenação:

[lo-bytes] [hi-bytes] Big endian:

• escreve dados com a seguinte ordenação:[hi-bytes] [lo-bytes]

Page 55: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Exemplo

Endereço de memória: byte Palavra: 16 bits (2 bytes)Uma palavra:

0010 0110 1001 1010será armazenada da seguinte forma:

- Little endian:1600: 0010 01101599: 1001 1010- Big endian1600: 1001 10101599: 0010 0110

Page 56: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Exemplos

Pentium (80x86), VAX: little-endian IBM 370, Motorola 680x0 (Mac), e a

maioria dos RISC: big-endian

Page 57: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Atividade Prática: Neander

Page 58: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Arquitetura

Largura de dados e endereços de 8 bits Dados representados em complemento de

dois 1 acumulador de 8 bits (AC) 1 apontador de programa de 8 bits (PC) 1 registrador de estado com 2 códigos de condição: negativo (N) e zero (Z)

Page 59: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Instruções

Código Instrução Comentário 0000 NOP nenhuma operação 0001 STA end armazena acumulador - (store) 0010 LDA end carrega acumulador - (load) 0011 ADD end soma 0100 OR end “ou” lógico 0101 AND end “e” lógico 0110 NOT inverte (complementa) acumulador 1000 JMP end desvio incondicional - (jump) 1001 JN end desvio condicional - (jump on negative) 1010 JZ end desvio condicional - (jump on zero) 1111 HLT término de execução - (halt)

Page 60: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Programando...

Soma de dois valores As variáveis e o resultado estão dispostos

segundo o mapa de memória abaixo:• posição: 128: variável A• posição: 129: variável B• posição: 130: resultado R

Page 61: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Resolução – R=A+B

Endereço Instr. Significado0 LDA AC recebe 1.o valor1 1282 ADD Soma 2.o valor ao acumulador3 1294 STA Armazena o valor na posição

1305 1306 HLT Finaliza o programa

128 12 A129 4 B130 R

Page 62: Organização e Arquitetura de Computadores Capítulos 9 e 10 Conjunto de Instruções

Exercícios

1. Desenvolva um programa que some dois números e teste se o resultado é negativo

2. Desenvolva um programa que some dois números (nas posições 128 e 129), armazene o resultado em (130) e armazene o valor 1 em (131) se não houver overflow, 255 caso contrário

3. Desenvolva um programa para ordenar 3 números armazenados inicialmente nas posições 128, 129 e 130

Entregar:• Fluxograma de execução• Código (.mem)