Introdução ao microprocessador básico

microprocessador SAP-1 microprocessador básico
Este post faz parte da série Um microprocessador tão simples quanto possível. Leia também os outros posts da série:

Inspirado pelos últimos artigos que escrevi sobre o microcontrolador 8051, em que apresento alguns conceitos gerais sobre arquitetura, resolvi escrever este artigo com objetivo de demonstrar como um microprocessador básico funciona. Para isso, vou recorrer a um material de referência que utilizei a tempos atrás, quando estava iniciando o curso de engenharia de computação, e que naquela época modificou de forma significativa a minha visão sobre a operação de um processador básico.

Apresentação

Em relação ao processador, será apresentado o SAP-1, proposto por Alberto Paul Malvino em seu livro sobre Microprocessadores e Microcontroladores. O acrônimo SAP, em inglês, significa Simples as Possible, isto é, Simples quanto Possível. O livro que li era bem antigo, de 1985, e não sei se novas edições foram publicadas ou se o SAP-1 foi apresentado em outros títulos do autor. Assim sendo, o projeto que será apresentado neste artigo utilizará o simulador de circuitos lógicos Logisim.

Arquitetura do SAP-1

O SAP-1 possui arquitetura bem simples, contudo seu projeto de hardware representa a essência de um processador. De modo geral, o modo mais simples  do SAP possui a unidade de controle de forma hardwired, isto é, totalmente implementada por uma matriz de controle de portas lógicas. Isso possibilita a análise do sistema por meio de suas funções booleanas.

Especificamente, o SAP-1 é um circuito lógico que implementa uma máquina de estados. Assim, é possível verificar todas as operações realizadas pelo hardware de modo sequencial! Isso é muito interessante, pois apresenta a operação de uma CPU em um nível inferior ao de execução de instrução por instrução. A arquitetura do SAP-1, mostrada na Figura 1, é composta pelos seguintes registradores:

  • Contador de Programa;
  • Registrador Acumulador A;
  • Registrador B;
  • Registrador de Endereços de Memória REM;
  • Registrador de Instruções;
  • Registrador de saída.
Arquitetura do SAP-1
Figura 1: Arquitetura do SAP-1 [1].

Além disso, estão presentes nessa arquitetura um bloco somador/subtrator, memória RAM e o módulo controlador/sequencializador. A operação específica de cada elemento será apresentada no próximo artigo. Neste momento, é importante verificar que todos esses elementos estão conectados a um barramento, denominado barramento W. Outro ponto importante que vale ser mencionado é que todos esses elementos possuem sinais de controle.

Conjunto de Instruções

O conjunto de instruções do SAP-1 é simples, contudo suas instruções são compatíveis com processadores 8080/8085. As operações que podem ser realizadas são mostradas abaixo:

  • LDA: Carrega os dados da RAM no acumulador;
  • ADD: Soma um dado da RAM com o acumulador;
  • SUB: Subtrai um dado da RAM com o acumulador;
  • OUT: Carrega os dados do acumulador no registrador de saída;
  • HLT: Para o processamento.

Os mnemônicos destacados acima servem apenas de auxilio para o programador. Na verdade, esses mnemônicos representam as operações realizadas, portanto são codificados como valores binários e armazenados em memória para que o processador possa executá-los. De modo geral, cada instrução do SAP-1 tem 1 byte e é representada da seguinte forma:

Instrução: XXXX YYYYY

O nibble inferior (YYYY) representa um campo de endereço, denominado operando. Já o nibble superior (XXXX) determina o código da operação. O código de cada operação é mostrado abaixo:

  • LDA: 0000;
  • ADD: 0001;
  • SUB: 0010;
  • OUT: 1110;
  • HLT:  1111.

Por exemplo, considere o programa abaixo:

EndereçoProgramaConteúdo da MemóriaCategoria
0HLDA 9H0000 1001Instruções
1HADD AH0001 1010
2HADD BH0001 1011
3HSUB CH0010 1100
4HOUT1110 0000
5HHLT1111 0000
6HXXXXXX XXXXDados
7HXXXXXX XXXX
8HXXXXXX XXXX
9H10H 0001 0000 
AH14H0001 0100
BH18H0001 1000
CH20H0010 0000

 É importante notar como as instruções são representadas na memória. A execução desse programa ficaria assim:

  1. A primeira instrução é buscada na memória;
  2. A instrução decodificada é LDA, portanto deve ser carregado no acumulador o conteúdo do endereço 9H, isto é, o valor 10H (16 em decimal);
  3. A próxima instrução buscada na memória;
  4. A instrução decodificada é ADD, portanto o valor do acumulador (10H) será somado com o valor do endereço AH, isto é, o valor 14H (20 em decimal). O resultado da operação é armazenado no acumulador. Portanto, seu valor atual é 24H (36 em decimal);
  5. A próxima instrução buscada na memória;
  6. A instrução decodificada é ADD, portanto o valor do acumulador (24H) será somado com o valor do endereço BH, isto é, o valor 18H (24 em decimal). O resultado da operação é armazenado no acumulador. Portanto, seu valor atual é 3CH (60 em decimal);
  7. A próxima instrução buscada na memória;
  8. A instrução decodificada é SUB, portanto o valor presente no endereço CH (20H - 32 em decimal) será subtraído do acumulador. O resultado da operação é armazenado no acumulador. Portanto, seu valor atual é 1CH (28 em decimal);
  9. A próxima instrução buscada na memória;
  10. A instrução decodificada é OUT, portanto o valor do acumulador é transferido para o registrador de saída;
  11. A próxima instrução buscada na memória;
  12. O processamento é encerrado devido a instrução HLT.

Referências

  • [1] MALVINO, A.P. Microcomputadores e Microprocessadores. McGRAW-HILL do Brasil, 1985.
  • Crédito da imagem destacada.

Outros artigos da série

Operação do microprocessador SAP-1 >>
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 » Introdução ao microprocessador básico
Comentários:
3 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Souza
Souza
03/11/2016 13:18

Ótimo. Tem um bom tempo que "brinco" com o Logisim e até peguei um .circ do SAP-1 e dei uma boa destrinchada nele.
Como é gratificante ver como tudo funciona.
É um puro hobby para mim. É minha diversão aprender essas coisas e quando fazemos por prazer, é muito bom.

Jonathan Gonzaga
Jonathan Gonzaga
24/10/2016 11:28

Vou começar engenharia de computação ano que vem, estou muito ancioso para estudar conteúdos assim, especialmente arquiteturas, quero poder entendê-las melhor. Excelente post, vou acompanhar a série, abraços.

Fernando Deluno Garcia
Fernando Deluno Garcia
Reply to  Jonathan Gonzaga
25/10/2016 08:53

Olá, Jonathan. O curso de Eng. de Computação é excelente. Você vai gostar, e essas questões sobre arquitetura de organização de computadores são muito importantes!

Obrigado pelo retorno.

Talvez você goste:

Séries



Outros da Série

Menu

WEBINAR
 
NVIDIA JETSON – A Inteligência Artificial na palma de sua mão

Data: 08/07 às 14:00h Apoio: Arrow | NVIDIA
 
INSCREVA-SE AGORA »



 
close-link

WEBINAR
 
Redes Mesh para Monitoramento
e Controle de Sensores

Data: 15/07 às 14:00h Apoio: Artimar| Microchip| Tecsus
 
INSCREVA-SE AGORA »



 
close-link