1. Os seis registradores do processador do CES

A tabela apresentada a seguir descreve os seis registradores empregados:

Tipo de
registrador
Sigla Tamanho Uso Entrada Saída Sinal de controle
Registradores
Invisíveis
RD16 bits Dado lido da memória Vias de dados do barramento Entrada direita de MD---
RE14 bits Endereço da memória Saída do ME Via de endereços do barramento---
RI2 bits Código da instrução Dois bits mais significativos das vias de dados do barramento Unidade de controleUltC
Registradores
Visíveis
RP14 bits Apontador de programa Quatorze bits menos significativos da saída do somador Entrada esquerda de MEEscP
RT16 bits Registrador de trabalho Saída do somador Entrada do CD e entrada do BTEscT
RC1 bit Registrador de condição Saída de vai um do somador Unidade de ControleEscC

No final de cada ciclo de relógio os valores presentes nas entradas do RD e do RE são sempre armazenados nesses registradores. Por essa razão esses dois registradores não precisam receber sinais de controles. Os sinais de controle de RI, RP, RT e RC servem para controlar o armazenamento nesses registradores dos valores presentes nas respectivas entradas. Quando um desses sinais está ativo, o valor presente na entrada do registrador correspondente é armazenado nesse registrador no final do ciclo do relógio.

O sinal de controle EscP fica sempre ativo no primeiro ciclo da execução das instruçoes para permitir que o RP receba o endereço da próxima instrução a ser executada no final desse ciclo e o sinal de controle UltC fica sempre ativo no último ciclo da execução das instruções para permitir que o RI receba o código da próxima instrução a ser executada no final deste ciclo. O sinal de controle EscT fica ativo no último ciclo da execução das instruções L e S para permitir que o RT receba o valor produzido pelo SM no final deste ciclo e o sinal de controle EscC fica ativo no último ciclo da execução da instrução S para permitir que o RC receba o "vai um" produzido pelo SM no final deste ciclo.

Cada um dos seis registradores pode ser implementado empregando um "flip-flop" do tipo "D" para cada um dos seus bits. Desta forma, serão necessários 16 + 14 + 2 + 14 + 16 + 1 = 63 "flip-flops" para implementar os seis registradores. A figura 2 mostra uma implementação de "flips-flops" do tipo "D" empregando portas de transmissão "CMOS".


Figura 2. "Flip-Flop" do tipo "D" que emprega portas de transmissão "CMOS"

Como pode ser visto, cada "flip-flop" pode ser implementado empregando 16 transistores. Portanto, serão necessários 63 x 16 = 1008 transistores para implementar os 63 "flip-flops" que formam os seis registradores usados nesse processador.

Além destes transistores, será necessário empregar também alguns "buffers" para gerar os sinais de "clk" e "clk\" para os "flip-flops". Isto acontece por duas razões: Cada "flip-flop" impõe um carregamento expressivo nas suas entradas de "clk" e "clk\" e no caso dos registradores que precisam receber sinais de controle, os sinais de "clk" e "clk\" precisam ser inibidos quando o valor armazenado no registrador tiver de ser mantido inalterado.

De um modo geral, é razoável empregar um par de "buffers" inversores para gerar os sinais de "clk" e "clk\" para cerca de seis "flip-flops". Desta forma, os trinta "flip-flops" que formam RD e RE poderiam receber os sinais de "clk" e "clk\" provenientes de cinco pares de "buffers" inversores e no caso dos outros quatro registradores, que recebem sinais de controle, será necessário substituir o primeiro "buffer" inversor de cada par por uma porta do tipo "NAND" de duas entradas para permitir que o sinal de controle iniba os sinais de "clk"e "clk\" dos "flip-flops" que formam esses registradores.

Desta forma, será necessário empregar uma porta "NAND" de duas entradas e um "buffer" inversor para gerar os sinais de "clk" e "clk\" para os dois "flip-flops" que formam o RI, 3 portas "NAND" de duas entradas e 3 "buffers" inversores para gerar os sinais de "clk" e "clk\" para os 14 "flip-flops" que formam o RP, 3 portas "NAND" de duas entradase 3 "buffers" inversores para gerar os sinais "clk" e "clk\" para os 16 "flip-flops" que formam o RT e mais uma porta "NAND" de duas entradas e um "buffer" inversor para gerar os sinais de "clk" e "clk\" para o único "flip-flop" do RC.

Portanto, será necessário empregar um total de 18 "buffers" inversores e 8 portas "NAND" de duas entradas para gerar os sinais de "clk" e "clk\" para os 63 "flip-flops" que formam os cinco registradores. Como cada "buffer" inversor pode ser implementado usando dois transistores e cada porta "NAND" de duas entradas pode ser implementada usando quatro transistores, a geração dos sinais de "clk" e "clk\" para os 63 "flip-flops" que formam os cinco registradores pode ser realizada empregando 18 x 2 + 8 x 4 = 68 transistores. Desta forma será necessário usar um total de 1008 + 68 = 1076 transistores para implementar os seis registradores desse processador.