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 (link). 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: 

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.

Continue lendo sobre a série no link.