Introdução à Arquitectura SAP com foco em SAP-1

De acordo com Malvino [1] (p. 255) o computador SAP (Simples-Quanto-Possível = Simple-As-Possible) foi projetado com o objetivo de apresentar de forma lúdica a estrutura operacional de um computador eletrônico moderno, de maneira que fique mais simples abstrair a concepção usada nos computadores eletrônicos mais modernos. Por mais estranho que possa parecer, muitos professores que atuam sobre a temática da disciplina relacionada a arquitetura e organização de computadores não fazem uso deste recurso ocasionando verdadeiro martírio para os alunos.

O uso do computador SAP pode facilitar o entendimento dos detalhes relacionados a organização de computadores e sua aplicação em linguagem de baixo nível.

Este artigo descreve brevemente a arquitetura SAP-1 e mostra duas aplicações exemplificando e utilizando-se sua linguagem de baixo nível.

A Arquitectura

A proposta da arquitetura do computador SAP é mostrada em três diferentes gerações, sendo a geração SAP-1 o primeiro estágio com vistas aos computadores eletrônicos modernos, foco da apresentação desta introdução. Assim sendo, não são apresentados elementos das gerações SAP-2 e SAP-3.

Objetiva-se com este artigo instigar professores da disciplina a fazerem da ferramenta SAP. Encontram-se no sítio Youtube diversas aulas disponibilizadas sobre o tema que podem ser utilizadas como elementos inspiradores e de embasamento para a apresentação de uma arquitetura real.

A Figura 1 apresenta a estrutura da arquitetura proposta para o SAP-1.

SAP: Arquitetura SAP-1, segundo Malvino
Figura 1: Arquitetura SAP-1, segundo Malvino [1] (p. 257)

A arquitetura do modelo SAP-1 caracteriza-se por ser um computador organizado em barramentos, tendo como estrutura central de comunicação o barramento W de 8 bits, responsável pelo nível de compartilhamento de todos os dispositivos a ele conectado.

O dispositivo Contador de Programa faz parte da unidade de controle, possui como finalidade operacional a capacidade de efetuar a contagem de 0000 até 1111. Este dispositivo tem por finalidade enviar à memória o endereço da próxima instrução de programa a ser executada. A cada novo processamento executado o contador de programa é inicializado com valor 0000. Segundo [1] (p. 256):

Quando começa o processamento ou execução no computador, o contador de programa envia o endereço 0000 à memória. O contador de programa é então incrementado para se obter 0001. Depois da primeira instrução ser buscada e executada, o contador de programa envia o endereço 0001 à memória. Novamente o contador de programa é incrementado. Depois de a segunda instrução ser buscada e executada, o contador de programa envia o endereço 0010 à memória. Desta maneira, o contador de programa está acompanhando o desenvolvimento da próxima instrução a ser buscada e executada.

O dispositivo Entrada e REM inclui o registrador de dados e o registrador de endereços. Este dispositivo é responsável pela efetivação das ações de entrada de dados e execução das instruções de um programa. Este dispositivo também é usado para armazenar o valor passado pelo contador de programa. Os registradores deste dispositivo enviam 4 bits de endereço e 8 bits de dados à RAM pelo REM (Registrador de Endereço de Memória).

O dispositivo RAM tem por finalidade armazenar os dados e as instruções enviadas pelo programa que serão usados no computador. Este dispositivo se caracteriza por ser uma memória estática com a capacidade de armazenar 16 linhas de 8 bits cada uma. Segundo [1] (p. 256):

Durante um processamento do computador, a RAM recebe endereços de 4 bits do REM e é executada uma operação de leitura. Desta maneira, a instrução ou palavra de dados armazenada na RAM é colocada no barramento W para uso em alguma outra parte do computador.

O dispositivo Registrador de Instruções é parte da unidade de controle, tendo por finalidade receber um byte referente a uma instrução lida a partir da memória RAM. O byte recebido é dividido em dois nibbles, o nibble superior referente à própria instrução e passado ao Controlador/Sequencializador (descrito a seguir) e o nibble inferior referente a uma saída lida no barramento W quando necessário. Segundo [1] (p. 256) o registrador de instruções efetua uma operação de leitura da memória.

O dispositivo Controlador/Sequencializador é parte da unidade de controle, tendo por finalidade controlar todo o computador. Este dispositivo recebe o nibble referente à instrução a ser executada, a qual, se encontra no Registrador de Instrução, decodifica e envia uma palavra de 12 bits para o computador [2] (p. 155). Segundo Campos  [2] (p. 155) a “palavra de controle é responsável por habilitar ou desabilitar cada funcionalidade de cada módulo presente no computador a fim de que ele execute uma determinada tarefa”.

O dispositivo Acumulador A caracteriza-se por ser um registrador de memória temporária que tem por finalidade armazenar operandos e resultados de processamento realizados pelo computador ([1], p. 258 & [3], p. 155). Este registrador recebe um dado transferido pelo barramento W, podendo disponibilizar este dado tanto para o dispositivo Somador/Subtrador como de volta para o barramento W.

O dispositivo Somador/Subtrador é o componente responsável pela efetivação do processamento das operações de soma e de subtração, sendo esta parte da Unidade Lógica e Aritmética do computador SAP-1. A subtração é efetuada a partir do uso do método do complemento de 2, onde para efetivar a subtração efetua uma soma do valor do acumulador com o complemento do segundo operando ([2], p. 155). Para este dispositivo realizar sua tarefa ele pega o operando (valor) do Registrador B e realiza a operação indicada (soma ou subtração) junto ao operando do Acumulador A e grava o resultado da operação executada no Acumulador A.

O dispositivo Registrador B caracteriza-se por ser um registrador de memória temporária auxiliar que coleta do barramento W determinado valor e o transfere para o dispositivo Somador/Subtrador que é parte da Unidade Lógica e Aritmética do computador SAP-1.

O dispositivo Registrador de Saída também denominado porta de saída ([1], p. 259) ou registrador de saída ([2], p. 155) é o componente responsável por coletar o resultado da operação de processamento que esteja armazenado no Acumulador A e transferi-lo para o mundo exterior e apresentá-lo junto ao dispositivo Indicador Visual Binário. Malvino [1] (p 259) acrescenta que:

Em microcomputadores as portas de saída são conectadas aos circuitos de interface que comandam dispositivos periféricos como as impressoras, os tubos de raios catódicos, as teleimpressoras etc.

O dispositivo Indicador Visual Binário é no computador SAP-1 um painel luminoso com oito LEDs (Diodo Emissor de Luz = Light-Emitting Diode) que representam na forma binária o valor que fora transferido do Acumulador A para o Registrador de Saída.

Programação em SAP-1

A arquitetura SAP-1 considera como linguagem de baixo nível um assembly com cinco mnemônicos como mostra a Tabela 1.

Soma dados da RAM com o acumulador

Tabela 1 – Conjunto de instruções SAP-1.
MnemônicoOperaçãoOp-code
LDACarrega dados da RAM no acumulador0000
ADDSoma dados da RAM com o acumulador0001
SUBSubtrai dados da RAM do acumulador0010
OUTCarrega dados da RAM no acumulador de saída1110
HLTInterrompe o processamento1111

A partir das instruções definidas na Tabela 1 o programa da Tabela 2 calcula e mostra o resultado da operação aritmética: 7 + 2 – 1.

Note que o programa carrega o acumulador do SAP-1 com o valor 07H do endereço DH a partir da execução da instrução LDA DH. Em seguida efetua a adição do valor 02H do endereço EH junto ao valor armazenado no acumulador com a execução da instrução ADD EH, neste momento o acumulador possui o valor 09h. Na sequência, o programa efetua a subtração do valor 01H do endereço FH do valor armazenado no acumulador com a instrução SUB FH. A instrução OUT tem por finalidade mostrar o resultado 08h no formato binário 00001000 em seu indicador visual binário e a instrução HLT finaliza o programa.

Tabela 2 – Aplicação 7 + 2 – 1.
EndereçoInstrução
0HLDA DH
1HADD EH
2HSUB FH
3HOUT
4HHLT
5H 
6H 
7H 
8H 
9H 
AH 
BH 
CH 
DH07H
EH02H
FH01H

O programa da Tabela 3 realiza operação aritmética: 75 + 20 – 18.

Veja que programa carrega o acumulador do SAP 1 com o valor 4BH do endereço DH a partir da execução da instrução LDA DH. Em seguida efetua a adição do valor 14H do endereço EH junto ao valor armazenado no acumulador com a execução da instrução ADD EH, neste momento o acumulador possui o valor 5Fh. Na sequência, o programa efetua a subtração do valor 12H do endereço FH do valor armazenado no acumulador com a instrução SUB FH. A instrução OUT apresenta o resultado 4Dh no formato 01001101 em seu indicador visual binário e a instrução HLT finaliza o programa.

Tabela 3 – Aplicação 75 + 20 – 18.
EndereçoInstrução
0HLDA DH
1HADD EH
2HSUB FH
3HOUT
4HHLT
5H 
6H 
7H 
8H 
9H 
AH 
BH 
CH 
DH4BH
EH14H
FH12H

A partir do código assembly escrito, é possível converter um programa em código de máquina (Op-code) de acordo com as instruções indicadas na Tabela 1.

Os programas apresentados possuem o mesmo conjunto de instruções caracterizando o uso do mesmo algoritmo (A+B–C). No entanto cada um possui um conjunto de valores diferenciados.

Observe que nos códigos apresentados estão sendo separados os dados do programa em relação as suas instruções em áreas distintas de memória. Note que os dados estão definidos entre os endereços DH e FH. As instruções do programa estão definidas a partir do endereço 0H até no máximo ao endereço CH.

Programa 7 + 2 – 1 Programa 75 + 20 – 18
EndereçoInstrução EndereçoInstrução
00000000 1101 00000000 1101
00010001 1110 00010001 1110
00100010 1111 00100010 1111
00111110 00111110
01001111 01001111
0101  0101 
0110  0110 
0111  0111 
1000  1000 
1001  1001 
1010  1010 
1011  1011 
1100  1100 
11010000 0111 11010100 1011
11100000 0010 11100001 0100
11110000 0001 11110001 0010

Bibliografia

  1. MALVINO. A. P. Microcomputadores e Microprocessadores. São Paulo: Editora McGraw-Hill, 1985.
  2. CAMPOS, F. M. P. Arquitetura e Organização de Computadores. Batatais: Ação Educacional Claretiana, 2011.

Publicado na edição 49 (PDF) da Revista PROGRAMAR.