Instruction Sets

Download Report

Transcript Instruction Sets

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)

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 • Cap. 8 Decimais (BCD: binary coded decimal)  4 bits para cada dígito decimal Caracteres • ASCII • EBCDIC Lógicos • Bits or flags 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

Cod.Op

Instrução Endereço A 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

Cod.Op

Instrução Endereço A Memória Ponteiro para operando 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

Cod.Op

Instrução Endereço do Registrador R Banco de Registradores 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 (2 n ) Um acesso a menos na memória do que o modo de endereçamento indireto (puro)

Endereçamento Indireto a Registrador

Instrução Cod.Op

Registrador de Endereços R Memória Banco de Registradores Ponteiro para operando Operando

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

Cod.Op

Instrução Registrador R Endereço A Memória Banco de Registradores Ponteiro para Operando + Operando

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 1010 será armazenada da seguinte forma: - Little endian: 1600: 0010 0110 1599: 1001 1010 - Big endian 1600: 1001 1010 1599: 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 0011 0100 0101 0110 1000 LDA end ADD end OR end AND end NOT JMP end carrega acumulador - (load) soma “ou” lógico “e” lógico inverte (complementa) acumulador desvio incondicional - (jump) 1001 1010 1111 JN end JZ end HLT desvio condicional - (jump on negative) desvio condicional - (jump on zero) 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

2 3 4 5 6 Endereço 0 1 Instr.

LDA 128 ADD 129 STA 130 HLT Significado AC recebe 1.o valor Soma 2.o valor ao acumulador Armazena o valor na posição 130 Finaliza o programa 128 129 130 12 4 A B R

Exercícios

1.

2.

3.

 Desenvolva um programa que some dois números e teste se o resultado é negativo 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 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)