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

Preview:

Citation preview

Organização e Arquitetura de Computadores

Capítulos 9 e 10Conjunto 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)

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

Localização dos Operandos

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

Ciclo 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

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???

3, 2 ou 1 endereços?

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

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

Número de endereços

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

acumulador)• Comum nas máquinas mais simples

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

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

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

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

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

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)

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

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

Transferência de dados

Especificar• Fonte• Destino• Quantidade de dados

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

Exemplos

Aritmética

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

Exemplo

Lógica

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

Conversão

E.x. Binário para decimal

Input/Output

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

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

separada (DMA)

Controle

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

Transferência de controle

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

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

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

Chamadas de procedimento

Desenvolvimento em módulos• Procedimentos

Vantagens:• Modularidade• Economia de código

Retorno de procedimentos

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

parâmetros) Registro de ativação

Modos de Endereçamento

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

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

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

Endereçamento Direto

Endereço ACod.Op

Instrução

Memória

Operando

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

Endereço Indireto

Endereço ACod.Op

Instrução

Memória

Operando

Ponteiro para operando

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

Endereçamento a registrador

Endereço do Registrador RCod.Op

InstruçãoBanco deRegistradores

Operando

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)

Endereçamento Indireto a Registrador

Registrador de Endereços RCod.Op

Instrução

Memória

OperandoPonteiro para operando

Banco de Registradores

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

Endereçamento a Deslocamento

Registrador RCod.Op

Instrução

Memória

OperandoPonteiro para Operando

Banco de Registradores

Endereço A

+

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

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

Endereçamento Indexado

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

• EA = A + R• R++

Endereçamento à pilha

Operando está implicitamente no topo de uma pilha

Comparativo

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

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

Novos conjuntos de intruções

MMX SSE e SSE2 3DNOW!

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

Linguagem de Montagem

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

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]

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

Exemplos

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

maioria dos RISC: big-endian

Atividade Prática: Neander

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)

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)

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

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

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)