Arquitetura de Conjunto de Instruções MIPS

instrução MIPS LW e SW IF Simples no MIPS

Oi pessoal! Hoje dou início a uma nova série de artigos. Falarei especificamente sobre a Arquitetura do Conjunto de Instruções MIPS.

Introdução - O MIPS

Não podemos confundir Arquitetura do Conjunto de Instruções MIPS com MIPS, Milhões de Instruções por Segundo. O MIPS que tratamos aqui é uma Arquitetura de Conjunto de Instruções (Instruction Set Architecture - ISA), desenvolvida pela empresa MIPS Computer Systems, que hoje é chamada de MIPS Technologies. MIPS significa Microprocessor Without Interlocked Pipeline Stages (Microprocessador Sem Estágios Intertravados de Pipeline).

A empresa foi fundada em 1984 por um grupo de pesquisadores da Universidade de Stanford e o foco era os microprocessadores com Arquitetura RISC (falarei sobre esse assunto na série de Artigos sobre Microprocessadores). John Leroy Hennessy fez parte da fundação da empresa, assim como da História da evolução dos Microprocessadores, o que pode ser comprovado com a leitura de seus livros e artigos científicos. Vários equipamentos utilizaram microprocessadores MIPS como, por exemplo, o Nintendo 64, Sony PlayStation, Roteadores Cisco, etc.

Conjunto de Instruções

Antes de falarmos especificamente sobre o MIPS, vamos discutir um pouco sobre Conjunto de Instruções. Como bem sabemos, todo Sistema Computacional é composto, muito basicamente, por Entrada, Saída, Processamento e Armazenamento. Cada um desses subsistemas pode ser organizado de formas diferentes (organização) no sistema, e cada elemento que faz parte desses subsistemas pode ser projetado também de formas diferentes (arquitetura).

O Conjunto de Instruções é um dos elementos desse grande sistema, e é de extrema importância para a construção de um sistema computacional. Um Processador não é exatamente um dispositivo único, ele é um conjunto de sistemas, cada um responsável por executar determinadas ações. O que temos, na verdade, é uma CPU - Unidade Central de Processamento - composta pela Unidade de Controle, Unidade Lógica Aritmética, entre muitas outras UNIDADES FUNCIONAIS necessárias para realizar o processamento de qualquer tipo de dados que precisamos.

Aí é que está o "X" da questão! Por exemplo, se um microprocessador não é capaz de executar uma soma em ponto flutuante, então este computador não poderá processar determinados tipos de dados, programas, etc. O computador ficará limitado, o que nos dias atuais não é nada interessante. Portanto, quando se PROJETA um novo microprocessador, primeiro é necessário definir que tipo de instruções, dados e programas ele será capaz de executar.

Além disso, precisa-se manter a compatibilidade com microprocessadores anteriores. O novo microprocessador deve ser capaz de continuar executando os seus softwares. Não é uma ideia interessante lançar um microprocessador com muitas inovações se os usuários não puderem mais usar os softwares que estão acostumados. É claro que, um dia, logo mais à frente, a tecnologia vai mudar e, de certa forma, nos veremos na obrigação de evoluir. Os transistores, a tecnologia atual de fabricação de computadores, está em seu limite, e muitos pesquisadores estão buscando novas matérias primas para construção de processadores cada vez mais rápidos. Quando uma nova tecnologia surgir, nos encontraremos exatamente nesse ponto de evolução.

Os nossos computadores, notebooks e celulares atuais são dispositivos de uso geral. Isso significa que eles precisam ter capacidade de processamento para diversos tipos de dados diferentes, que variam desde um texto simples até um vídeo em três dimensões. É diferente de um controle remoto de TV ou um Microondas, que são projetados para um fim específico. Dessa forma, as instruções que o microprocessador é capaz de executar formam o conjunto de instruções. Algumas instruções que o microprocessador de uso geral pode executar são: 

  • operações aritméticas;
  • operações lógicas;
  • operações relacionais;
  • operações de ponto flutuante;
  • transferência de dados;
  • desvios condicionais;
  • desvios incondicionais;
  • controle;
  • entre outras.

Arquitetura do Conjunto de Instruções

A Arquitetura do Conjunto de Instruções define os tipos de instruções que serão executadas por um processador, assim como o formato de cada instrução, quantidade de bits, a forma como essas instruções acessarão registradores e memórias (modos de endereçamento), a forma como conversarão com outras unidades funcionais, etc.

Tamanho da Instrução

É o tamanho, em bits, de uma instrução. Conjuntos de instruções dos processadores X86 costumam não ter um tamanho fixo de Bits. Nessas arquiteturas, uma operação aritmética pode ter um tamanho diferente de uma operação de transferência, o que não é muito interessante. Hennessey e Patterson demonstraram com a Arquitetura MIPS que instruções de tamanho fixo de bits são melhores de se manipular, particularmente no processamento paralelo das instruções (Pipeline). Assim, em um projeto de arquitetura de conjunto de instruções, o tamanho da instrução, em bits, pode ser FIXO ou VARIÁVEL. A arquitetura MIPS atual tem tamanho fixo de 64 bits e é chamada de MIPS 64 Bits.

Formato da Instrução

Normalmente uma instrução tem um campo reservado para o código de operação, chamado de OPCODE, campos reservados para os operandos da operação, entre outros campos, como, por exemplo, o endereço de um ponteiro. Novamente reforço que isso é definido pelos projetistas da arquitetura. O OPCODE indica qual é a operação que deverá ser executada, exemplo:

ADD      $s1, $s2, $3.

ADD é o mnemônico que identifica o código da operação, neste exemplo, uma adição com dois operandos, que são os registradores de uso geral $s2, $s3. O resultado da soma será armazenado no registrador $s1.

Compilação

Da mesma forma que a Linguagem Java precisa da máquina virtual Java para interpretar e compilar os programas desenvolvidos, uma ISA também precisa de um compilador. Todas as instruções Assembly são traduzidas para a linguagem binária (0 e 1), por isso é necessário um Compilador Assembly nos processadores. De fato, tudo o que é executado em nosso computador é traduzido para Assembly e depois para linguagem binária, de forma que possa ser processado pelo grande sistema digital que é o processador. Todo esse processo de compilação de instruções, em MIPS, será estudado nos artigos desta série. Conforme formos avançando nas instruções, todo o processo de tradução será demonstrado.

Conclusão

Agora que já fizemos uma pequena introdução sobre os conceitos básicos de instruções, podemos avançar nos próximos artigos, detalhando a arquitetura MIPS 32 bits. Espero vocês pessoal. Dúvidas, deixem nos comentários que eu as verei e responderei com muito carinho. Até a próxima.

Outros artigos da série

Primeira Instrução MIPS >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Hardware » Sistemas Digitais » Arquitetura de Conjunto de Instruções MIPS
Comentários:
Notificações
Notificar
guest
12 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Thiago Villa
Thiago Villa
26/03/2019 21:17

Começando a digerir essa coisa linda toda em março de 2019 🙂 Animado para ver onde isso vai dar...

LAURIANO ELMIRO DUARTE
20/05/2018 10:52

show show . vou continuar nesse mini curso .. vou ler tudo .. tem algum grupo de discursão na internet sobre essa arquitetura elaine ?
obrigado .

Elaine Cecília Gatto
Elaine Cecília Gatto
Reply to  LAURIANO ELMIRO DUARTE
01/06/2018 12:54

Oi Lauriano!! Td bem? Espero que sim. Primeiro, mil perdões por ter demorado pra te responder, minhas sinceras desculpas. Segundo, não conheço nenhum grupo de discussão sobre MIPS, mas posso dar uma garimpada pra te ajudar. Mas se precisar de algo pode entrar em contato comigo pelos meus contatos no meu perfil ok. Estou muito feliz que você tenha gostado!
[ ]s

Rafael Dias
Rafael Dias
02/10/2016 12:23

Se não me engano há um simulador de MIPS, desenvolvido pelo próprio Patterson.

Lembro que o usei na cadeira de arquitetura de computadores que tive no mestrado.

Elaine Cecília Gatto
Elaine Cecília Gatto
Reply to  Rafael Dias
04/10/2016 11:44

Sim!!! No livro do Patterson tem um pequeno manual de como usar o simulador. Pretendo falar sobre ele com detalhes aqui, pq pouca gente sabe como programar nele.

Jonathan Gonzaga
Jonathan Gonzaga
30/09/2016 12:10

O PIC32 utiliza essa arquitetura MIPS32 não é? Pretende fazer alguma série detalhando outras arquiteturas como ARM e X86?

Elaine Cecília Gatto
Elaine Cecília Gatto
Reply to  Jonathan Gonzaga
01/10/2016 20:23

Oi Jonathan!!! Acho que tem alguém escrevendo sobre ARM, não me recordo
agora quem, mas vi alguns artigos circulando aqui no site sobre o
assunto. Para a arquitetura X86 pretendo sim escrever uma série mais pra
frente. Sobre o PIC32 preciso confirmar, mas pode ser que o conjunto de
instruções do PIC32 tenha sido projetado com base no MIPS. Muito
Obrigada =)

Rafael Dias
Rafael Dias
Reply to  Elaine Cecília Gatto
02/10/2016 11:59
Elaine Cecília Gatto
Elaine Cecília Gatto
Reply to  Rafael Dias
02/10/2016 12:16

Rafael!!! Muitíssimo Obrigada =)

Jonathan Gonzaga
Jonathan Gonzaga
Reply to  Rafael Dias
02/10/2016 17:26

Valeu amigo. Perguntei pq me lembro de ter ouvido vagamente o Fabio Pereira falando isso numa palestra.

Talvez você goste:

Séries



Outros da Série

Menu

WEBINAR
 
RISC-V:
Novidades de 2020

 

Data: 26/08 às 19:30h - Apoio: Mouser Elecctronics
 
INSCREVA-SE AGORA »



 
close-link