Você está na página 1de 8

3) UMA ARQUITETURA COMPUTACIONAL

O controlador e a arquitetura descritos anteriormente trabalham com apenas quatro


operações (instruções) e dois operandos que devem ser armazenados previamente nos
registradores R e R. Para trabalhar com múltiplas instruções e operandos escolhidos entre
vários, aquele subsistema precisa ser modificado, devendo ser incluída uma memória para
armazenar instruções e operandos. Desse modo, a instrução a ser executada deve ser armazenada
num Registrador de Instruções (RI). Depois disso, cada operando é submetido às mesmas
microoperações: transferência da sua posição de memória para o RCI, complementação e
incremento se necessário, passar pelo Somador e armazenar o resultado no RAC.
Exemplo de uma arquitetura que trabalha com múltiplas instruções e vários operandos (a
memória usada é de 64 palavras de 8 bits cada e é acessada por endereços de 6 bits  26 = 64):

1
A arquitetura trabalha com 4 instruções. Os códigos de 2 bits representativos das instruções são:
Código Instrução
00 Parar
01 Somar a RAC
10 Subtrair de RAC
11 Transferir conteúdo de RAC para memória

Exemplo de um possível conteúdo da memória:

2
Nos locais de 0 a 6 está gravado um PROGRAMA DE INSTRUÇÕES, instruções que
foram colocadas em locais sucessivos da memória. Em outra parte da memória estão
armazenados os operandos. Os locais de 0 a 5 da memória contêm instruções (os 2 bits mais à
esquerda da palavra representam o “código da operação”) que exigem um endereço de memória
do operando (os outros 6 bits da palavra). O local 6 mantém uma instrução sem operando (assim,
é irrelevante o endereço armazenado). (observar que os registradores R e R foram substituídos pela parte da
memória que armazena os operandos; também, com memória de 8 bits pode-se representar números de +127 a –128 em
complemento de dois; ainda, a linha ZA de limpar foi excluída, pois RAC pode ser limpo usando as instruções dadas – como?)

Esta nova arquitetura contém ainda registradores especiais: um Registrador Contador de


Programa (PC), um Registrador de Instruções (RI) e um Registrador de Endereços de Memória
(REM). Este subsistema estendido pode ser visto como um sistema computacional bastante
simples, pois é composto de uma ULA (que realiza operações aritméticas, somando e
incrementando, e lógicas, complementando valores), de uma UC (que controla outras partes:
ULA, registradores e memória), de memória e de barramento(s).

Obs:
a) os 2 bits da instrução NÃO são transferidos para o controlador e sim colocados disponíveis
para ele - conexão indicada pela linha tracejada (situação similar ocorre com relação à memória e
o conteúdo de REM);
b) registrador PC apenas é incrementado;
c) quanto às linhas de saída da UC: uma microoperação é executada com a colocação da
correspondente linha de controle em nível de habilitação.

Operação do Sistema Computacional


Considerando que a memória já está carregada com instruções e operandos (como
mostrado anteriormente) e que os registradores PC e RAC estão limpos (“zerados”), a sequência
de microoperações necessárias para ler a primeira instrução (que é a de SUBTRAÇÃO), executá-
la e preparar para ler a próxima instrução é:

3
Ciclo de Busca:
Descrição Simbólica Linha de Controle
Ciclo de Relógio da Operação Habilitada

1 – Transferir conteúdo de PC (000 000) para REM; PC  REM TPC

2 – Transferir instrução endereçada por REM para RI pela (a) habi- M  RI E, R/W, TB
litação da memória para conectá-la ao bus, (b) colocação de
R/W em 1 para ler memória e (c) escrita da palavra do bus
em RI; incrementar PC para indicar a próxima instrução; PC + 1  PC IPC

Ciclo de Execução (para Subtração):


Descrição Simbólica Linha de Controle
Ciclo de Relógio da Operação Habilitada

3 – Transferir parte do conteúdo de RI (os 6 bits à direita  end) RI (end)  REM TRI
para REM (o endereço é 59);

4 – Transferir palavra da memória para RCI; M  RCI E, R/W, W

5 – Complementar RCI; RCI RCI C

6 – Incrementar RCI; RCI + 1 RCI I

7 – Registrar saída do somador em RAC Somador  RAC R, WA

O processo de Ler uma Instrução, Escrevê-la em RI e Preparar para Ler a Próxima


Instrução é chamado de CICLO DE BUSCA (“FETCH CYCLE”). Embora as microoperações de
Busca de Instrução sejam gerenciadas pelo Controlador, a ação do Controlador durante esta fase é
independente dos 2 bits mais à esquerda de RI. Após a escrita da instrução em RI, o
processamento seguirá um curso que depende da instrução designada pelos dois BITS DE
OPERAÇÃO da instrução. O ciclo de microoperações pelas quais o sistema responde a cada
instrução é chamado de CICLO DE EXECUÇÃO (a segunda tabela acima apresenta o Ciclo de
Execução para a instrução Subtração – sugestão: fazer o ciclo de execução para as outras 3
instruções).

Após executar a primeira instrução (tendo completado toda a sequência específica), o


controlador retorna ao início de outra sequência transferindo o conteúdo de PC (que já foi
incrementado) para REM; ou seja, a próxima instrução a ser executada é a do local 000 001.
Assim, o controlador entra num processo de buscar e executar instruções do programa na

4
memória: a Operação de Busca é sempre a mesma; cada Operação de Execução depende da
instrução.

A arquitetura apresentada tem uma memória na qual são armazenadas instruções; por isso,
esta máquina é chamada de COMPUTADOR DE PROGRAMA ARMAZENADO. Assim, a
máquina está plenamente instruída para a execução das operações desejadas.
As instruções são armazenadas em locais sucessivos da memória; dessa forma fica
subentendido que, após a execução de uma instrução, a próxima instrução está no local de
memória seguinte (não é necessário especificar o local de memória da próxima instrução).
A memória armazena, além de instruções, operandos e resultados do processamento. Cada
instrução exige no máximo a especificação de um operando envolvido na operação. Novamente,
fica subentendido que o outro operando está em RAC. Ainda, se a instrução não dá nenhuma
indicação de onde o resultado da operação deve ser armazenado, fica subentendido que o
resultado deve ser deixado em RAC.
Todos estes “entendimentos” proporcionam uma considerável economia no comprimento
das palavras de memória, pois uma instrução necessita especificar apenas a operação e o
endereço de um operando. Sem estes “entendimentos” uma instrução teria que especificar a
operação, os locais do primeiro e do segundo operandos, o local onde o resultado seria
armazenado e onde estaria a próxima instrução, o que exigiria uma instrução com um número
bem maior de bits:
Instr(2 bits) OPN1(6 bits), OPN2(6 bits), RES(6 bits), Prox_Instr(6 bits) = 26 bits

Obs: Quando uma instrução tem múltiplos endereços (p.ex., múltiplos operandos), esta instrução
ocupa múltiplas palavras na memória. A primeira palavra especifica se a instrução tem mais do
que uma palavra. Se isso acontece, a etapa de execução da instrução é atrasada até que todas as
palavras tenham sido acessadas.

5
Projeto do Controlador
Exemplo de um controlador para o sistema computacional dado, usando Registrador de
Deslocamento.

O Elemento de Partida e todos os FFs são comandados por uma forma de onda de
sincronização (um relógio) comum. A saída de cada FF comanda uma microoperação ou um
conjunto de microoperações. O fechamento manual da chave dá partida à sequência do
registrador de deslocamento.

As duas primeiras etapas na sequência buscam a instrução e a carregam em RI (esta fase é


a mesma para todas as instruções). Após a fase de busca, começa a fase de execução, que
depende do código da operação de 2 bits, bits estes que são aplicados ao decodificador com 4
linhas de saída (o código 10, que é subtração, habilita a fila superior de FFs; o código 01 (adição) é similar a subtração sem
complementar e incrementar; o código 11 é de escrita na memória e por isso há a inversão para a linha R/W).

6
Observar que as finalizações das operações Subtrair, Somar e Transferir levam
imediatamente de volta ao começo do Ciclo de Busca através da porta OR. Assim, uma nova
instrução é buscada e começa uma nova execução. No caso da instrução Parar (código 00), não
há retorno ao Ciclo de Busca: a operação é finalizada após colocar a saída da porta AND
correspondente em nível 1 – esta saída pode ser usada para indicar que o sistema concluiu seu
trabalho, requerendo outra intervenção manual.

O Ciclo de Execução do exemplo usa muitos FFs. Uma alternativa para este ciclo com
menos FFs, mas com mais lógica, é a seguinte – observar que ainda está sendo usado um
registrador de deslocamento:

Interrompendo o Processamento
O processo cíclico de buscar-executar, realizado por um controlador, pode ser
interrompido para que o controlador gere uma sequência de sinais que gerencie a execução de
operações especiais. Dessa forma, o controlador responde a um pedido de serviço especial, a
chamada Interrupção (por exemplo, uma interrupção gerada por um dispositivo externo que
apresenta resultados parciais do processamento).

7
Exemplo de um controlador que responde a uma Interrupção:

O FF (inicialmente, Q = 0 e Q = 1) é usado para armazenar a informação de um bit, para


mostrar quando uma fonte faz um pedido de interrupção. Esse tipo de FF é chamado de “FLAG”.
A chamada de uma interrupção coloca o “flag” em 1 (Q = 1 e Q = 0). Se o controlador já iniciou
a busca e/ou execução de uma instrução, esta é finalizada e só após isso o controlador atende à
interrupção. Na finalização do atendimento à interrupção, o controlador gera um sinal que limpa
(zera) o FF (Q = 0 e Q = 1), fazendo com que o controlador volte a sua operação normal.

Você também pode gostar