Quais são os tipos de instrução?

1 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

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

3 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

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

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

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

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

8 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 reutilização de compiladores Permitir compatibilidade de código executável binário Algumas vezes, pode-se ganhar desempenho alterando o conjunto de instruções Mas normalmente, maiores evoluções estão na forma de implementá-lo Permite o lançamento de processadores mais rápidos, mas compatíveis Consumidor pode atualizar computador Sem alterar software utilizado Diego Passos (UFF) Instruções e Seus Tipos FAC 8 / 35

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

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

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

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

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

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

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

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

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

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

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

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

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

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

23 Instruções de Deslocamento Algumas vezes é útil deslocarmos os bits de um número Para a esquerda ou para a direita Operação conhecida em inglês como shift 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 Há ainda outras utilidades na manipulação de bits em geral Diego Passos (UFF) Instruções e Seus Tipos FAC 23 / 35

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

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

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

27 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 y = 4; } else { y = 6; } while (x < 100) { // Instrucao de branch y = y + 1; x = x + y; } x = x * 4; Diego Passos (UFF) Instruções e Seus Tipos FAC 27 / 35

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

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

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

31 Instruções de Desvio Incondicional (III) Exemplos (no MIPS): Instrução jump: Recebe um único operando: uma constante na própria instrução Valor do PC é alterado para 4 vezes o valor da constante concatenada com os 4 bits mais significativos do PC Instrução jump register: Parecido, mas o operando é um registrador Valor do PC é alterado para valor do registrador especificado 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? Diego Passos (UFF) Instruções e Seus Tipos FAC 31 / 35

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

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

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

35 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, os nomes dos campos querem dizer: rs, rt (formato R): registradores com valores de entrada para a instrução rd, rt (formato I): registrador de resultado shamt: quantidade de bits deslocados imediato: constante numérica endereço: constante numérica função: similar ao opcode, define mais especificamente o operação realizada eg, para operações aritméticas, o opcode define apenas que a instrução é uma operação aritimética Neste caso, o campo função determina se é uma soma, subtração, etc Diego Passos (UFF) Instruções e Seus Tipos FAC 35 / 35

Quais os tipos de instrução?

Com isto no pensamento podemos categorizar os tipos de instruções como se segue:.
Processamento de Dados : Instruções aritméticas e lógicas..
Armazenamento de Dados: Instruções de memória..
Movimento de Dados: Instruções de E/S..
Controlo: Instruções de teste e de derivação..

Quais são os elementos de uma instrução?

Partes de uma instrução. Em arquiteturas tradicionais, uma instrução inclui um código de operação que especifica a operação a ser executada, como adicionar conteúdo da memória para um registrador, tendo zero ou mais operandos especificados, que podem referenciar registradores, posições de memória ou dados literais.

Quais são as etapas do ciclo de instrução?

Agora vamos ver passo a passo como estas duas etapas são realizadas quando o ciclo de instrução é executado:.
Busca da instrução. ... .
Incrementa o Contador de Instrução. ... .
Decodificação do código da operação. ... .
Se a instrução tiver operandos, a UC deverá buscá-los, senão passa diretamente próximo passo..

Quais os tipos de instruções de máquina?

Instruções aritméticas fornecem a capacidade computacional para processamento de dados numéricos. Instruções lógicas (booleanas) operam sobre bits de uma palavra, como bits e não como números. Instruções de memória move dados entre a memória e os registradores.