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

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

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

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

Elaine Cecília Gatto
Bacharel em Engenharia de Computação. Mestre em Ciência da Computação. Doutoranda em Ciência da Computação. Co-fundarora e Líder das #GarotasCPBr. Pesquisadora Convidada no Grupo de Pesquisa: "Artes em Tecnologias Emergentes" do Programa de Pós Graduação em Design na UNESP Campus Bauru. Cantora, Docente no Magistério Superior, Geek, Nerd, Otaku e Gamer. Apaixonada por Michael Jackson, Macross, Rocky Balboa, Séries, Filmes, Cervejas e Vinhos. Mais informações sobre mim você encontra em: http://lattes.cnpq.br/8559022477811603.

12
Deixe um comentário

avatar
 
4 Comment threads
8 Thread replies
3 Followers
 
Most reacted comment
Hottest comment thread
7 Comment authors
Thiago VillaElaine Cecília GattoElaine Cecília GattoLAURIANO ELMIRO DUARTERafael Dias Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Thiago Villa
Visitante
Thiago Villa

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

LAURIANO ELMIRO DUARTE
Membro
LAURIANO ELMIRO DUARTE

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
Visitante
Elaine Cecília Gatto

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
Visitante
Rafael Dias

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
Visitante
Elaine Cecília Gatto

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
Visitante
Jonathan Gonzaga

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

Elaine Cecília Gatto
Visitante
Elaine Cecília Gatto

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
Visitante
Rafael Dias
Elaine Cecília Gatto
Visitante
Elaine Cecília Gatto

Rafael!!! Muitíssimo Obrigada =)

Jonathan Gonzaga
Visitante
Jonathan Gonzaga

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