You are on page 1of 35

Aula 14: Instruções e Seus Tipos

Diego Passos

Universidade Federal Fluminense

Fundamentos de Arquiteturas de Computadores

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Diego Passos (UFF) Instruções e Seus Tipos FAC 1 / 35

Conceitos Básicos

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Diego Passos (UFF) Instruções e Seus Tipos FAC 2 / 35

Processador e Instruções

Processador é um dispositivo que opera em ciclos.
Ciclos de execução de instruções.
▶ Pequenas tarefas executadas sobre determinados operandos.

Buscar Instrução Interpretar Instrução Executar Instrução

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Diego Passos (UFF) Instruções e Seus Tipos FAC 3 / 35

. . . . . . A composição/sequência de várias operações mais simples resulta em tarefas mais complexas. instruções são simples. . ▶ Não realizam tarefas complexas. . . . . . . . . . . ▶ e. Exemplos de tarefas simples (para as quais podem existir instruções de máquina): ▶ Operações lógicas/aritméticas simples sobre dois operandos.g. . . . . .Instruções de Máquina Individualmente. . ▶ Movimentação de dados entre a memória e registradores. . . . . . .. Diego Passos (UFF) Instruções e Seus Tipos FAC 4 / 35 . ▶ Alterações nos valores de certos registradores. . não há instrução de máquina para verificar a ortografia de uma palavra em um texto. . . . . . . . . . .

algoritmos escritos em linguagens de alto nível podem ser traduzidos para sequências destas instruções. . . . . processadores diferentes podem ter conjuntos de instruções diferentes. . ▶ i. . . ▶ Processadores diferentes podem disponibilizar instruções diferentes. ▶ Em outras palavras. Nome dado ao grupo de todas as instruções disponíveis em um processador. .. . . . . . . Instruction Set Architecture). Diego Passos (UFF) Instruções e Seus Tipos FAC 5 / 35 . . . . deve haver um grupo mínimo de instruções que combinadas possam resultar em qualquer tarefa computacional. . . . . .e. . . . . . . . .Conjunto de Instruções Também chamado de ISA (do inglês. . . . . . . . . . ▶ Em outras palavras. O conjunto de instruções de um processador deve permitir a implementação de qualquer tarefa computável. .

. . . . . . . . . . . . . . Extenso Respeitando este conjunto mínimo necessário de instruções. processadores podem implementar conjuntos de instruções maiores ou menores. . . . . . . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 6 / 35 . . . . . . . . . . há processadores reais com conjuntos de instruções grandes e pequenos. ▶ Discutiremos isso em mais detalhes na última aula do curso. .Conjunto de Instruções: Reduzido vs. . . . ▶ Há méritos e desvantagens em ambas as abordagens. . . De toda forma. . . .

Diego Passos (UFF) Instruções e Seus Tipos FAC 7 / 35 . .Conjunto de Instruções: Família Processadores diferentes podem implementar conjuntos de instruções diferentes. . mas de maneira mais eficiente. . . ▶ De fato. . . . . Processador mais novo pode implementar o mesmo conjunto de instruções. . . é comum que um novo processador herde o conjunto de instruções de um modelo mais antigo. . . . . . . . . . . . . . . ▶ Mas isso nem sempre ocorre. . . . . . . . . ▶ Microarquitetura: como estas operações são implementadas. . . . . . Distinção importante: ▶ Conjunto de instruções: que operações estão disponíveis. . . .

. Permite o lançamento de processadores mais rápidos. ▶ Consumidor pode atualizar computador. mas compatíveis. . ▶ Permitir reutilização de compiladores. . . ▶ Sem alterar software utilizado. . Algumas vezes. . . . . . . . .Conjunto de Instruções: Família (II) Há vários motivos “repetir” um conjunto de instruções: ▶ Não “reinventar a roda”: reutilizar fórmula bem sucedida. ▶ Permitir compatibilidade de código executável binário. . . . . . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 8 / 35 . . . . . . ▶ Mas normalmente. maiores evoluções estão na forma de implementá-lo. . . . . . . . . . . pode-se ganhar desempenho alterando o conjunto de instruções. . . . . .

. AMD (entre outros) de 64 bits. Playstation 1 e 2. ⋆ Também presente em tablets. . . ▶ x64 86: processadores Intel. . . . . . . . ⋆ Apenas em 2013. Playstation 3).Conjunto de Instruções: Família (III) Exemplos de conjuntos de instruções bem sucedidos: ▶ i368 (ou x86): processadores Intel. Wii U. AMD (entre outros) de 32 bits. . . . aparelhos de TV. . . . . . . . . ▶ MIPS: extensivamente usada em dispositivos embarcados (roteadores) e consoles (Nintendo 64. . ⋆ Domina os smartphones (95%). ▶ PowerPC: usado em carros. . . . . . . . . 10 bilhões de processadores produzidos. . . . . XBox 360. . . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 9 / 35 . PSP). ⋆ Começa a se popularizar no mercado de servidores. ▶ ARM: conjunto de instruções mais popular do mundo. . . consoles (Wii. . . .

. . em 1997. . ▶ Objetivo: permitir melhor desempenho de certos tipos de aplicação. . . . . . . Exemplo: ▶ Instruções MMX adicionadas ao Pentium. . Mas instruções que já existiam são mantidas. . . . . . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 10 / 35 . . . . . . . . . ▶ Além das instruções tradicionais do i386. . . ▶ Compatibilidade é garantida. . . ▶ Acrescentam instruções. .Conjunto de Instruções: Família (IV) Note que algumas vezes processadores de uma mesma família estendem o conjunto de instruções. . . . . . . . . . .

. .O Conjunto de Instruções do MIPS A arquitetura MIPS é relativamente simples. . . esta arquitetura é comumente adotada em cursos de Arquiteturas de Computadores. . Diego Passos (UFF) Instruções e Seus Tipos FAC 11 / 35 . . . . ▶ E livros didáticos da área. . . . . . . como a x86. . . . No restante deste curso. . Por este motivo. . utilizaremos a arquitetura MIPS e seu conjunto de instruções como estudo de caso. . ▶ Exemplificaremos conceitos com ela. . . . . . . . . . ▶ Ao menos em comparação com outras. . . . . . . . . . . .

Em algumas arquiteturas. o tamanho de uma instrução é fixo. . . . MIPS. . . ▶ e. . ▶ Geralmente. . . . . . . ▶ i.Representação de uma Instrução Assim como qualquer outro dado em memória.g. .g. outras mais longas. . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 12 / 35 . família x86. . . . há instruções de tamanhos variáveis. .e. . . .. ▶ e. . . . do tamanho da palavra do processador. . . . . . .. . . instruções são armazenadas como conjuntos de bits.. Em outras. . algumas instruções são curtas. . . . . .

. . . . . ▶ Operandos: representação numérica dos operandos sobre os quais operação será realizada. . . . . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 13 / 35 . . . . . Exemplos de campos típicos: ▶ Opcode: código da operação. . . . . número que especifica operação a ser executada. . . . . . . . . . . . . ▶ Resultado: representação numérica de onde guardar o resultado da operação. ▶ Cada um com uma semântica específica. . .Representação de uma Instrução (II) O conjunto de bits de uma instrução pode ser dividido em vários subconjuntos. . . . . ▶ Ou campos. . . . ⋆ Ou de onde obtê-los.

. 18 no Reg. . . . . . 17 no Reg. . . Diego Passos (UFF) Instruções e Seus Tipos FAC 14 / 35 . . . . . . . . . . . . . . 8 . . .Representação de uma Instrução (III) Exemplo de instrução de soma no MIPS (32 bits): 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 Opcode: Operando 1: Operando 2: Resultado: Campo não Função: 000000(2) = 0(10) 10001(2)=17(10) 10010(2)=18(10) 01000(2)=8(10) Utilizado 100000(2)=32(10) Nesta Significado: Significado: Significado: Significado: Instrução Significado: Operação Lógica Primeiro Segundo Armazenar (deve sempre Operação de ou Operando está Operando está Resultado ser 0) Soma Aritmética no Reg. . . . . . . . . . . . . . . . .

. . . . . . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 15 / 35 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipos de Instrução de Máquina . . . .

. ▶ Objetivo. . ▶ Instruções de desvio condicional. . . . ▶ Instruções para operação atômica. . . . ▶ Instruções de transferência de dados. . . . . .Instruções e Seus Propósitos Geralmente. . podemos dividir as instruções de um conjunto de instruções de acordo com o propósito. ▶ Tipo de dado manipulado. . . . . . . ▶ Instruções de desvio incondicional. . Categorias comuns: ▶ Instruções aritméticas. . ▶ Instruções de ponto flutuante. . . ▶ Instruções lógicas. . . . ▶ Instruções de deslocamento. . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 16 / 35 . . . . . . ▶ Tipo de operação realizada. . . . . .

. . . há um grupo separado para operações sobre ponto flutuante. . Diego Passos (UFF) Instruções e Seus Tipos FAC 17 / 35 . . . . ▶ Na nossa classificação. . . recebem dois operandos e têm um resultado numérico. . . . . . . . . .Instruções Aritméticas Instruções que realizam contas sobre valores inteiros. . . . . operandos são necessariamente registradores ou constantes especificadas na própria instrução. . . . . . . . Em geral. . . . . . . . . . . Na arquitetura MIPS. .

. mas um dos operandos é uma constante armazenada na própria instrução. . . . ou não. mas faz subtração. . . . . . . . . . . . . . . ▶ Instrução sub: ⋆ Equivalente à add. ⋆ Resultado é guardado também em um registrador. . . . . . . . . . . . . . ⋆ Registradores podem ser todos diferentes. . . . ▶ Instrução addi.Instruções Aritméticas (II) Exemplos (do MIPS): ▶ Instrução add: ⋆ Soma os valores de dois registradores. . ⋆ Parecida com a add. . . . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 18 / 35 .

. . Em outras palavras. elas não operam diretamente sobre dados na MP. . . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 19 / 35 . . . . . ▶ A maior parte dos dados estará em MP. Solução: ▶ Trazer dados da MP para os registradores.. . . . . .Instruções de Transferência de Dados Em geral. . . ▶ E levar dados dos registradores para a MP. . . instruções de processamento (e. . lógicas) operam sobre: ▶ Constantes. Mas registradores são pequenos. ▶ Valores guardados em registradores. . ▶ Não podemos armazenar todos os dados do programa neles. . . . . . . . . aritméticas. . . . . . . . presentes na própria instrução.g. . . . .

. . . . . . . ⋆ Armazena valor de um registrador de origem em um endereço da MP. . . . . . . .Instruções de Transferência de Dados (II) Logo. . Exemplos (do MIPS): ▶ Instrução load word: ⋆ Traz uma palavra da memória principal para um registrador. . . ⋆ Um dos registradores é o destino. Há também variações para outros tamanhos de dados. . . . . byte. . . . . ▶ Instrução store word: ⋆ Inverso da load word. . ⋆ Recebe como “operandos” dois registradores e uma constante. . . . . . . ⋆ O endereço da palavra a ser trazida é dado pela soma do outro registrador com a constante. Há também instruções para carregar um valor constante (na própria instrução) para um registrador. ⋆ Endereço é dado pela soma de um registrador com uma constante. . . . . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 20 / 35 . . precisamos de instruções que sejam capazes de fazer estas transferências. . ▶ Meia palavra.

uma palavra completa. . . . . ..Instruções Lógicas Similares às instruções aritméticas. ▶ e. . . ⋆ Geralmente. . . . Mas executam operações de lógica. . . uma operação lógica OU entre 1010 e 0110 resulta em 1110. . . ▶ Operações são feitas para cada par de bits correspondentes dos operandos. . . . . . Operações lógicas são executadas bit a bit. .g. Diego Passos (UFF) Instruções e Seus Tipos FAC 21 / 35 . . . . . ▶ Bit 1 representa o verdadeiro. ▶ Operandos são números com vários bits. . . . . com 4 bits. . ▶ Bit 0 representa o falso lógico. . . . . . . . . . . .

. . . . . . . . . . . ⋆ Operandos são dois registradores. . . . . ▶ Instrução nor : ⋆ Idem. . . . . ▶ Instrução xor : ⋆ Similar às anteriores. mas efetua a operação lógica OU. . Diego Passos (UFF) Instruções e Seus Tipos FAC 22 / 35 . . . . . . . . . .Instruções Lógicas (II) Exemplos (do MIPS): ▶ Instrução and: ⋆ Realiza a operação lógica E bit a bit. . . . . ▶ Instrução or : ⋆ Similar à and. mas a operação é de OU Exclusivo. mas para a operação de Não-OU. . . . . . . ⋆ Resultado também é colocado em um registrador. .

. . . . . . . . . Há ainda outras utilidades na manipulação de bits em geral. . . . . . . . . . Exemplo de utilidade aritmética: ▶ Deslocar bits uma casa para a esquerda multiplica por dois. . ▶ Deslocar bits uma casa para a direita divide por dois. . . . . . . . . . ▶ Para a esquerda ou para a direita. . . ▶ Operação conhecida em inglês como shift. Diego Passos (UFF) Instruções e Seus Tipos FAC 23 / 35 . . . . . . . .Instruções de Deslocamento Algumas vezes é útil “deslocarmos” os bits de um número. . . .

Diego Passos (UFF) Instruções e Seus Tipos FAC 24 / 35 . . ▶ No shift para a direita. . . . . . 1101 >>1 = 1110. . . 0101 >>1 = 0010. bits à esquerda são completados com zero. . Shifts aritméticos são úteis para fazer divisões por 2 em números negativos em complemento a 2. 0101 <<1 = 1010. . . . . . . . ▶ e. . . Há ainda o shift à direita aritmético. .g. com 4 bits. bits à direita são completados com 0. . ..Instruções de Deslocamento (II) O tipo mais comum de shift é o lógico. com 4 bits. . . ▶ Bits adicionados à esquerda são iguais ao bit mais significativo do operando. . . . 0101 >>1 = 0010. . . ▶ No shift para a esquerda. . . . . . . . . .g. . . ▶ e.. .

Diego Passos (UFF) Instruções e Seus Tipos FAC 25 / 35 . . o valor a sofrer o deslocamento é sempre lido de um registrador. . . . . . . . à direita.Instruções de Deslocamento (III) Na arquitetura MIPS. . . . . E resultado é guardado em outro registrador (potencialmente diferente). . . . . . . . . . . aritiméticos à direita. . . . Em todas as instruções. . . ▶ Shifts à esquerda. há 6 tipos de instruções de shift disponíveis. . . . . . . . . . ▶ Quantidade de bits deslocados dado por constante (na própria instrução) ou por valor em registrador. . . . .

. caso uma determinada condição seja verdadeira. . . . . . . . . .Instruções de Desvio Condicional Também comumente chamadas de instruções de branch. . . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 26 / 35 . . ▶ Mas às vezes precisamos saltar para outra parte do código. . ▶ Ou auxiliam nesta tarefa. . ▶ Exemplos? . . . . ▶ Armazena endereço da próxima instrução a ser executada. . . . . . . . . . . . Lembrando: ▶ PC é um registrador especial. . . . . . . . Alteram o valor do registrador PC. . ▶ Geralmente. instruções são executadas em sequência.

. . . . . . . else { x = x + y. y = 6. . } y = y + 1. . . . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 27 / 35 . . } } x = x * 4. . . . . . . . .Instruções de Desvio Condicional (II) Instruções de branch são necessárias para dar suporte à condicionais e repetições em linguagens de alto nível. . . . . . . . . . . . . . . . . Alguns exemplos (em C): if (x == 3) { // Instrucao de branch while (x < 100) { // Instrucao de branch y = 4. . .

. ⋆ Usado com branch on equal para comparações do tipo menor que. . . . . ⋆ Se forem iguais. mas PC é mudado se valores foram diferentes. . . ⋆ Se o primeiro operando é menor que o segundo. . . Diego Passos (UFF) Instruções e Seus Tipos FAC 28 / 35 . . . e mais 4. . . . .Instruções de Desvio Condicional (III) Há diversas pequenas variações das instruções de branch em cada arquitetura. . . . ▶ Instrução set on less than: ⋆ Recebe dois registradores como operandos e mais um para o resultado. . . Alguns exemplos do MIPS: ▶ Instrução branch on equal: ⋆ Operandos são dois registradores e uma constante numérica. . . . . ▶ Instrução branch on not equal: ⋆ Idem. . . resultado é 1. . ⋆ Compara os valores dos registradores. . . . . . soma ao PC à constante multiplicada por 4. . . . . . . . .

. . . . . . Parecidas com as instruções de branch. . . . . . . Utilidades? . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 29 / 35 . . . . . . . . ▶ Valor do PC é mudado sempre. . mas não há condição a ser testada. . . . . . . . . . . . . . ▶ Programa sempre “salta” para outra instrução. .Instruções de Desvio Incondicional Também chamadas de instruções de jump. . . ou salto. .

instruções de jump ocorrem em vários casos. . . y = 6. . . printf("Houve algum erro!\n"). . . Exemplos (em C): if (x == 3) { while (1) { y = 4. // Jump } // Espera nova conexao. . . . . . y = y + x. . . Por exemplo: ▶ Estruturas como goto. . . . . goto erro. ▶ Loops infinitos.. . . Diego Passos (UFF) Instruções e Seus Tipos FAC 30 / 35 . . ▶ Chamadas de função. . erro: //. . . . . . // Jump x = sqrt(5). . . . . . .Instruções de Desvio Incondicional (II) Em linguagens de alto nível. . .. }// Jump . . . . // Trata requisicao. . .

. . . ▶ Instrução jump and link: ⋆ Idêntica à jump. . . . . . . . mas adicionalmente guarda o valor atual do PC no registrador 31. . . . Qual é a utilidade da instrução jump and link? . . . . ⋆ Valor do PC é alterado para valor do registrador especificado. . . . . . . . .Instruções de Desvio Incondicional (III) Exemplos (no MIPS): ▶ Instrução jump: ⋆ Recebe um único operando: uma constante na própria instrução. . . . . . . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 31 / 35 . mas o operando é um registrador. . . . . ▶ Instrução jump register : ⋆ Parecido. . . . ⋆ Valor do PC é alterado para 4 vezes o valor da constante concatenada com os 4 bits mais significativos do PC.

. . . . . . . . . . . . . Diego Passos (UFF) Instruções e Seus Tipos FAC 32 / 35 . . . . . . . . . . Formatos de Instruções . . . . . . . . . . . . . . . . . .

. De alguma forma. Outra diferença: número de bits de cada parâmetro. ▶ E o que cada grupo representa.Instruções e Seus Formatos Instruções diferentes precisam de operandos diferentes. . As diferenças estão tanto no número. . . ▶ Instrução add recebe três registradores vs. . . . . . . mais genericamente. . . ▶ Sabe como separar os bits da instrução nos grupos adequados. . .. . . . quanto no tipo. . . parâmetros diferentes. uma constante pode usar 16 ou 26 bits no MIPS.g. ▶ e. . . . ▶ Ou. .g. . . .. processador “conhece” o formato de cada instrução. . dois (e uma constante) na addi. . . . . ▶ e. . . . . . três na instrução add. . . Diego Passos (UFF) Instruções e Seus Tipos FAC 33 / 35 . . instrução jump recebe apenas um parâmetro vs. .

que recebem apenas um imediato (constante) como parâmetro. . . . . . . . . . . Em qualquer um dos três tipos. ▶ Formato I: instruções que recebem dois registradores e um imediato (constante) como parâmetros. os 6 bits mais significativos representam o OpCode.Formatos de Instrução no MIPS No MIPS. . . . . ▶ Ou ao menos seu tipo. ▶ O que varia. . . Diego Passos (UFF) Instruções e Seus Tipos FAC 34 / 35 . . . . . . portanto. . são os 26 bits menos significativos. . Todas as instruções têm um comprimento de 32 bits. . . . ▶ Formato J: para instruções do tipo jump. as instruções podem ser divididas de acordo com seu formato. . . . . . . . Há três formatos. . . . . . ▶ Código numérico que define a operação. . . no total: ▶ Formato R: instruções que recebem três registradores como parâmetros.

▶ endereço: constante numérica. . . define mais especificamente o operação realizada. . etc. . ⋆ Neste caso. . ▶ imediato: constante numérica. o campo função determina se é uma soma. . . . ⋆ e. . . . . . . . ▶ rd.Formato de Instrução no MIPS (II) Tipo Formato (bits) R opcode (6) rs (5) rt (5) rd (5) shamt (5) função (6) I opcode (6) rs (5) rt (5) imediato (16) J opcode (6) endereço (26) Em todos os formatos. . . . . ▶ função: similar ao opcode. .g. . para operações aritméticas. . . . .. . subtração. . . . . os nomes dos campos querem dizer: ▶ rs. . . . ▶ shamt: quantidade de bits deslocados. . . rt (formato R): registradores com valores de entrada para a instrução. Diego Passos (UFF) Instruções e Seus Tipos FAC 35 / 35 . . . rt (formato I): registrador de resultado. . . o opcode define apenas que a instrução é uma operação aritimética. .