4.2. O projeto de um Conjunto de Instruções

4.2.1. Arquitetura

Um Conjunto de Instruções pode ser classificado como uma das quatro arquiteturas:

  • Arquitetura de Pilha
  • Baseada em Acumulador
  • Registrador-Registrador ou Load/Store
  • Registrador-Memória

Arquitetura de Pilha

A Arquitetura de Pilha[1] é a mais simples possível. Como pode ser observado na Figura 4.1, “ISA baseado em Pilha”, os dados necessários para a execução das operações pela ULA são provenientes de registradores especiais organizados na forma de uma pilha. Note que toda operação é realizada entre o registrador que indica o Topo de Pilha (apontado pelo registrador TOS) e o registrador seguinte. Esse conjunto de instruções é muito simples porque a Unidade de Controle nunca precisa decodificar a instrução para saber quais registradores serão utilizados nas operações lógicas e aritméticas. Sempre será o topo da pilha e o registrador seguinte.

Figura 4.1. ISA baseado em Pilha


Arquitetura baseada em Acumulador

Já na arquitetura baseada em Acumulador (Figura 4.2, “ISA baseado em Acumulador”) uma complexidade é adicionada. Um dos dados vem sempre do registrador Acumulador, mas o outro é mais livre. Na figura esse segundo dado vem da memória, mas poderia vir de um outro registrador designado na instrução. Neste caso, a instrução a ser decodificada pela Unidade de Controle precisará trazer de onde vem o segundo dado a ser utilizado, já que o primeiro é sempre proveniente do Acumulador.

Figura 4.2. ISA baseado em Acumulador


Arquitetura Load/Store

Na sequência, a terceira arquitetura mais complexa é chamada Arquitetura Load/Store ou Arquitetura Registrador-Registrador (Figura 4.3, “ISA Registrador-Registrador”). Nesta arquitetura, todas operações lógicas e aritméticas executadas pela ULA são provenientes de dois registradores a serem determinados pela instrução. A única forma de acessar dados da memória é através de duas instruções especiais: LOAD, para ler da memória e STORE para escrever o conteúdo de um registrador na memória. Assim, toda instrução a ser decodificada pela CPU deverá indicar o endereço de dois registradores que serão utilizados na operação lógica ou aritmética, ou um endereço de memória se a instrução for um LOAD ou um STORE.

Figura 4.3. ISA Registrador-Registrador


Arquitetura Registrador-Memória

Por último, a mais complexa arquitetura é a Registrador-Memória (Figura 4.4, “ISA Registrador-Memória”). Esta arquitetura permite que a ULA execute operações lógicas e aritméticas envolvendo ao mesmo tempo um registrador indicado pela instrução e um conteúdo proveniente da memória. Esse tipo de instrução deve então trazer, em seu conteúdo, o código do registrador a ser utilizado e o endereço de memória do segundo dado.

Figura 4.4. ISA Registrador-Memória


É muito importante aqui observar que arquiteturas mais simples, como a de Pilha por exemplo, fazem com as instruções a serem decodificadas pela Unidade de Controle sejam muito simples. Com instruções simples, a própria Unidade de Controle será simples, pequena e barata de produzir. Por outro lado, instruções simples resultam em operações limitadas. Assim, uma tarefa básica, como somar dois números, em uma Arquitetura de Pilha vai necessitar que pelo menos 4 operações sejam realizadas: colocar na pilha o primeiro dado, colocar na pilha o segundo dado, somar os dois elementos da pilha, salvar o resultado na pilha. Essa mesma operação numa arquitetura Registrador-Memória seria executada numa instrução única, indicando o registrador utilizado para ser o primeiro dado, o endereço de memória do segundo dado e o registrador que vai guardar o resultado.



[1] O funcionamento da estrutura Pilha é aprofundado na disciplina Estrutura de Dados.