Montando o circuito do registrador de instrução (IR)

Bom dia, boa tarde ou boa noite. Estou de volta!

Acabei de montar e estudar o circuito do registrador de instrução (Instruction Register - IR) do nosso computador de 8 bits. A cada etapa, a coisa vai ficando mais interessante!

Este é o registrador responsável, juntamente ao Program Counter (PC), por realizar o ciclo de busca por instrução do nosso computador. O ciclo de busca acontece para que uma instrução de máquina seja recuperada da memória e repassada aos circuitos de tratamento (MAR, RAM, IR e CONTROL).

O funcionamento do ciclo de busca acontece da seguinte maneira:
  1. O PC envia 4 bits (LSB) para o BUS (aqui tem início o ciclo de busca);
  2. O MAR (Memory Address Register - registrador de endereço de memória - trataremos dele mais para a frente) recebe esses 4 bits do BUS, busca pelo endereço de memória de 8 bits armazenado na posição representada por esses 4 bits recebidos do BUS e repassa esses 8 bits (1 byte) para a memória RAM (note  que o MAR não envia os 8 bits para o BUS - ele os envia diretamente à RAM);
  3. A RAM busca pelo conteúdo representado pelos 8 bits recebidos do MAR e, ao final da busca, repassa outros 8 bits para o BUS. Esse byte presente agora no BUS já são o OPCODE (4 MSB) e o OPERANDO (4 LSB);
  4. O IR recebe os 8 bits presentes no BUS e repassados pela RAM, separa os 2 nibbles (relembrando: 1 nibble = 4 bits) e identifica qual é a instrução representada pelos 4 MSB (ou nibble mais significativo) do byte que recebeu do BUS. O nibble menos significativo (4 LSB) recebido volta para o BUS e o nibble mais significativo (4 MSB) vai para o circuito de controle (CONTROL) que identifica e decodifica qual é a instrução à ser executada no próximo ciclo, que é o ciclo de instrução (aqui termina o ciclo de busca).
Lendo pela primeira vez esse ciclo parece um pouco complexo (eu demorei um pouco para entendê-lo :) mas, com calma, dá para entender como é o funcionamento. Óbvio que isso ficará mais claro quando estivermos com os outros circuitos funcionando (circuitos de controle, de operações lógico-aritméticas e o circuito de saída). Por isso, continue seguindo as postagens do blog. ;)

 Para ilustrar o que o IR faz, vejamos uma instrução básica, em Assembly:

LDA 0Eh

Essa instrução diz para o computador buscar o conteúdo do endereço 0Eh (para os esquecidos: o "h" quer dizer que o número está na base hexadecimal :) e armazená-lo no registrador acumulador (ACC).

Digamos que temos a instrução armazenada como 0001. Logo, o OPCODE da instrução LDA é 0001 (em binário). Então, o restante da instrução só pode ser o OPCODE, correto?

0Eh em binário, é 1110.

Portanto, o byte que representa nossa instrução será 00011110 (colori os bits dessa forma de propósito - repare nas fotos do circuito do IR que os LEDs representando os 4 MSB são verdes e dos 4 LSB são vermelhos :). Esse seria o valor recebido pelo IR através do BUS no passo 4 acima! Como vimos, a partir daí, o nibble mais significativo vai para o circuito de controle (CONTROL) para que ele inicie o ciclo de instrução e, o nibble menos significativo volta para o barramento.

O circuito do registrador de instrução é quase idêntico aos circuitos dos registradores acumulador e do auxiliar. Por isso, não vou me alongar explicando novamente a implementação e o funcionamento deles. Caso você tenha esquecido de algum detalhe, você pode reler este post. ;)

A única diferença do registrador IR para os demais (ACC e B) é que ele é capaz de receber 8 bits do BUS mas, só retorna 4 LSB ou o nibble menos significativo (lembre-se que os 4 MSB vão direto para o circuito de controle).

Fico por aqui. Mas, antes, deixo algumas fotos da montagem.

Não se esqueçam de comentar. Vamos compartilhar experiências!

Até a próxima!

Circuito do registrador de instrução (repare nos LEDs verdes e vermelhos :)

Detalhe do IR conectado do simulador de barramento. Veja que ele só envia os 4 LSB para o BUS.

Visão geral do nosso computador de 8 bits.

Comentários

Postagens mais visitadas