Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
O
B
A
R
R
A
M
E
N
T
O
D
E
D
A
D
O
S
RAM - 0
16 x 4
RAM - 1
16 x 4
CS CS
R/W
I/O
3
I/O
2
I/O
1
I/O
0
AB
2
AB
0
AB
1
AB
3
DB
0
DB
2
DB
3
DB
1
R/W
I/O
3
I/O
2
I/O
1
I/O
0
A3 A2 A1 A0 A3 A2 A1 A0
R/W
B
A
R
R
A
M
E
N
T
O
D
E
E
N
D
E
R
E
O
B
A
R
R
A
M
E
N
T
O
D
E
D
A
D
O
S
AB
4
Apostila de Arquitetura de Computadores II 36
3.10. MULTIPLEXADORES E DEMULTIPLEXADORES
3.10.1. MULTIPLEXADOR - MUX
O circuito multiplex utilizado para enviarmos as informaes contidas em vrios canais(fios), a um s canal
(fio). Esquematizando o multiplex, temos :
A entrada de seleo tem como finalidade escolher qual das informaes de entrada, ou qual dos canais de
informaes deve ser ligado sada. Um circuito elementar que efetua uma multiplexao uma chave seletora de 1 plo e
n posies, esquematizada na figura abaixo.
ROM - 3
2K x 8
A
0
- A
10
O
0
- O
7
CS
ROM - 2
2K x 8
A
0
- A
10
O
0
- O
7
CS
ROM - 1
2K x 8
A
0
- A
10
O
0
- O
7
CS
ROM - 0
2K x 8
A
0
- A
10
O
0
- O
7
CS
A
12
A
11
A
10
..A
0
Decodificador
2 para 4
O
3
O
2
O
1
O
0
A
1
A
0
D
7
..D
0
Apostila de Arquitetura de Computadores II 37
PROJETO DO CIRCUITO DE UM MULTIPLEX
Para projetarmos um multiplex, devemos relacionar, principalmente, a possibilidade de que as entradas de
seleo iro assumir com a informao de entrada que deve ser conectada sada. Para isso, montamos uma tabela da
verdade onde sero colocadas todas as possibilidades de seleo e as respectivas informaes que devem aparecer na sada.
Para mostrarmos passo a passo a elaborao de multiplex, vamos iniciar, efetuando o projeto de um multiplex de 4 canais
ou entradas de informaes. Para que possamos conectar aleatoriamente 4 entradas sada, necessitamos de 2 variveis de
seleo. Com isso, podemos montar a tabela da verdade:
Montando a tabela, relacionamos os valores assumidos pela sada para cada possibilidade das variveis de
seleo, obtendo, a partir disso, o respectivo produto cannico.
Variveis de Seleo: Situao na sada:
Caso 0 0 (P
0
= A . B )
Caso 0 1 (P1= A . B )
Caso 1 0 (P2= A . B )
Caso 1 1 (P
3
= A . B )
S= I
0
S= I1
S= I2
S= I
3
Em funo destas expresses, esquematizamos o circuito. A figura 8.6 mostra o circuito do multiplex de 4 canais
proposto.
Apostila de Arquitetura de Computadores II 38
Para entendermos o funcionamento do circuito, vamos analisar um dos casos possveis, por exemplo, o caso em
que as variveis de seleo estiverem na condio A=1 e B=0. Quando ocorrer este caso, o gerador de produtos cannicos
apresentar P
2
=1, com isso, a porta E ligada sada P
2,
estar com um dos terminais em nvel lgico 1, logo, na sua sada,
teremos o valor que I
2
assumir, ou seja, se I
2
for igual a 0, a sada desta ser 0; se I
2
for igual a 1, a sada ser 1. Sabendo-se
que neste caso todas as outras entradas da porta OU estaro em 0, conclumos que, quando as variveis de seleo
estiverem na condio 10 (AB), S ser igual a I2. Para analisarmos os outros casos, basta procedermos de forma anloga. O
circuito foi esquematizado dessa maneira para maior compreenso, normalmente, representado como mostra a figura
abaixo.
Representando o multiplex obtido em bloco, temos:
Apostila de Arquitetura de Computadores II 39
Vamos agora, como exemplo, elaborar o circuito de um multiplex de 16 canais segundo o mesmo processo. Para
comutarmos 16 entradas necessitamos de 4 variveis de seleo. O nmero de informaes que as entradas de seleo
podem comutar 2
n
, onde n o nmero de entradas de seleo. Assim sendo, montamos a tabela da verdade:
O circuito que executa esta funo visto na figura abaixo.
Apostila de Arquitetura de Computadores II 40
Representando apenas em bloco, temos:
O funcionamento deste circuito anlogo ao de 2 variveis. Podemos notar que cada informao de entrada
possui apenas uma combinao das variveis de seleo que a conecta sada, portanto, se quisermos conectar sada uma
determinada informao, precisamos injetar nas entradas de seleo sua respectiva combinao. A essa combinao damos
o nome de endereo, conceito facilmente compreensvel, pois, ao injetarmos as variveis de seleo, estamos endereando
atravs de um cdigo binrio, a informao que deve ser conectada sada.
Apostila de Arquitetura de Computadores II 41
Ampliao da Capacidade de um Sistema Multiplex
Podemos, a partir de circuitos multiplex de baixa capacidade, formar outros para um maior nmero de
informaes de entrada. Para entendermos o processo, vamos montar um multiplex de 4 canais de informao, a partir de
outros de apenas 2 canais de informao. A figura abaixo mostra, em blocos, o multiplex obtido.
Ao entrarmos com o endereo 00 ( A . B ) , encontramos na sada a informao I0. Como podemos notar, no
circuito, quando B for igual a 0, as sadas intermedirias S
0
e S
1
estaro com as informaes, I
0
e I
2
respectivamente.
Quando A for 0, teremos na sada S somente o valor de sada intermediria S
0
, que neste caso estar com o valor I
0
, logo, ao
injetarmos neste circuito o endereo 00, teremos na sada a informao I
0
. Podemos analisar de modo anlogo os outros
endereos:
Endereo 01(A . B): a sada assumir o valor de I1.
Endereo 10 (A .B): a sada assumir o valor de I2.
Endereo 11(A . B): a sada assumir o valor de I3.
Dentro da srie de circuitos integrados comerciais, tambm encontramos circuitos multiplex de 8 canais de
informaes (3 variveis de seleo). Com a utilizao destes blocos, seguindo este processo, podemos formar circuitos
multiplex com muito maior capacidade.
Para ilustrar, vamos elaborar a seguir, um exemplo de confeco de circuito multiplex com capacidade superior a
8 canais. Vamos efetuar a confeco de um multiplex de 16 canais, utilizando blocos de 8 canais de informao.
Para isso, devemos conectar os blocos da maneira vista na figura abaixo:
Apostila de Arquitetura de Computadores II 42
Nos blocos multiplex 1 e 2, as variveis B, C e D iro selecionar os 2 canais de entrada, que possuem endereos
iguais (BCD), nas sadas S
0
e S
1
. O multiplex 3, por possuir as entradas de seleo curto-circuitadas, apresentar somente
os endereos 000 (A=0) ou 111 (A=1), logo, este bloco efetuar a seleo final atravs de varivel A, complementar ao
endereo. Podemos observar que no multiplex 3, as sadas S0 e S1 devero ser ligadas nas entradas cujos endereos so 000 e
111, pois devido ao tipo de ligao das variveis de seleo, as outras entradas jamais sero endereadas. Aps esta
anlise, conclumos que o conjunto executa a funo de um sistema multiplex de 16 canais de informao.
Endereamento Sequencial em um Sistema Multiplex
Podemos utilizar um multiplex que apresente, sequencialmente na sada, os dados correspondentes aos canais de
informao. Para isso, basta conectarmos s entradas de seleo um circuito contador que gere a sequncia de contagem
desejada. Para ilustrar este procedimento, a figura abaixo mostra um multiplex de 8 canais com seleo sequencial feita por
um contador de 0 a 7 (8 estados).
Uma das utilidades deste sistema a converso de uma informao paralela em uma informao srie, pois se o
contador gerar a sequncia binria, teremos sequencialmente na sada, as informaes I0 , I1 , I2 at In-1. Essa configurao,
porm, no faz com que o multiplex funcione obrigatoriamente como sendo um conversor paralelo-srie, pois dado o
endereo de um canal de entrada, a sada ir variar de acordo com a variao deste, logo, se surgir na entrada um trem de
pulsos, este ser recolhido na sada.
Utilizao do Multiplex na Construo de Circuitos Combinacionais
Apostila de Arquitetura de Computadores II 43
O circuito multiplex pode ser utilizado tambm para a montagem de circuitos combinacionais quaisquer. Para
isso, basta montar a tabela da verdade do circuito.
As sadas que o circuito deve apresentar em cada uma das possibilidades devem ser injetadas nos canais de
informao. Assim, quando ocorrer uma das possibilidades, as variveis de seleo iro enderear a respectiva informao,
que ter o seu valor definido de acordo com a tabela da verdade.
Para exemplificar, vamos esquematizar o circuito que executa a tabela 8.4, utilizando blocos multiplex.
Vamos, agora, estabelecer os valores dos canais de informao de cada um dos multiplex, que iro apresentar as
sadas S1 e S2:
Partindo da tabela, vamos escrever os valores que as informaes de entrada devem assumir:
MUX 1: I0=I3=I5=I6=0 I1=I2=I4=I7=1
MUX 2: I0=I1=I2=I4= 0 I3=I5=I6=I7= 1
Vamos, ento, injetar esses valores nos respectivos canais de informao. O esquema do circuito, nesta situao,
visto na figura 8.19.
Apostila de Arquitetura de Computadores II 44
Este circuito ir apresentar as sadas S
1
e S
2
de acordo com as variveis de seleo de entrada, seguindo a tabela
da verdade. Para verificarmos o funcionamento do circuito, vamos analisar um dos casos, pois os outros sero anlogos.
Analisaremos, por exemplo, o caso das entradas ABC iguais a 011, respectivamente.
Ambos os multiplex iro enderear o canal de informao I3, logo, nas sadas S1 e S2, teremos respectivamente 0 e
1, que esto colocados respectivamente nas entradas.
Este exemplo mostra que podemos esquematizar um circuito combinacional atravs da utilizao de blocos
multiplex. A vantagem do emprego do multiplex est na facilidade de esquematizao de circuitos, principalmente quando
temos um nmero elevado de variveis. Por exemplo, quando tivermos 8 variveis, teremos 256 possibilidades, o que
implicar numa grande dificuldade de simplificao do circuito. Utilizando este processo, basta injetarmos os valores 1 e 0
nos canais de informao, de acordo com as variveis de seleo, conforme a tabela da verdade.
3.10.2 - DEMULTIPLEX
Imagine um nmero de fontes onde so geradas palavras e um nmero de receptores. Vamos supor ainda, que
queremos poder transmitir uma palavra de qualquer fonte para qualquer receptor. Para se conseguir isto, seria construindo
um barramento, bus, separado de cada fonte at cada receptor (com o nmero desejado de linhas igual ao nmero de bits
por palavra). Isto tericamente, mas na prtica no compensa, pois voc teria que ter vrios barramentos. Ento se usa a
multiplexao, o que nos permite a utilizao de um barramento para vrias fontes, mas tambm precisaremos de um
demultiplexador, pois necessrio que uma estrutura lgica que receba uma palavra do barramento e a dirija ao receptor
selecionado.
Um demultiplexador um circuito que permite encaminhar seletivamente a informao aplicada numa
nica entrada para uma de vrias sadas.
Um demultiplexador de 1 para 2N tem uma entrada, 2N sadas e N entradas de seleo. Realiza a
funo inversa de um multiplexador, conforme se evidencia na figura.
Imaginemos vrias linhas de entrada e uma nica linha de sada, e entre eles uma chave que varia a entrada
ocasionando vrias respostas. Cada entrada tem seu nvel lgico ou sinal prprio. A chave controlvel, sendo assim o
controle determina qual ser a linha de entrada escolhida. Se pode implementar um multiplexador com portas lgicas,
tendo em vista que atravs da chave se habilita ou no uma porta.
Apostila de Arquitetura de Computadores II 45
Captulo 4 MICROARQUITETURA E MICROPROGRAMAO
4.1. INTRODUO
Uma caracterstica extremamente fascinante nos microprocessadores a sua capacidade de interpretar e
executar instrues de programa.
Na arquitetura de qualquer sistema computacional, o microprocessador o elemento que define a
potencialidade da mquina, a partir de sua velocidade de processamento, o tamanho da palavra manipulada, a quantidade
de memria interna (registros) e seu conjunto de instrues.
A maior parte destes fatores est intimamente ligada forma como os diferentes componentes do
microprocessador esto associados e como estes so controlados internamente. A esta organizao dado o nome de
microarquitetura.
Cada microprocessador possui sua microarquitetura especfica e, como conseqncia disto, sua prpria
linguagem de mquina.
O objetivo deste captulo introduzir o conceito de microarquitetura e de microprogramao como
fatores determinantes dos aspectos de execuo de um microprocessador.
Dada a grande diversidade de configuraes em termos de microarquitetura e a grande complexidade
dos fatores associados a ela, ser feito uso de um exemplo didtico, mas bastante representativo de alguns casos reais.
4.2. OS MICROPROCESSADORES E OS SINAIS EXTERNOS
Os microprocessadores so geralmente circuitos integrados dispostos em pastilhas onde o nmero de
pinos varia de 40 a 132. Como ilustrado na figura 4.1, os sinais associados a estes pinos permitiro ao microprocessador a
troca de informao com o seu ambiente, ou seja, memria e circuitos de E/S.
Uma anlise detalhada dos sinais disponveis nos pinos de um microprocessador permite conhecer os
seus diferentes modos de funcionamento (lgico e eltrico) e as suas possibilidades em termos de interfaces.
Os sinais externos dos computadores so organizados em trs grupos: os sinais de endereo, os sinais de
dados e os sinais de controle. A cada um destes grupos associada uma linha de comunicao (ou um barramento),
respectivamente, o barramento de endereos, o barramento de dados e o barramento de controle. Estes barramentos
permitiro conectar os pinos do microprocessador aos pinos de mesma funo dos circuitos de memria ou de E/S.
Um exemplo de funcionamento o carregamento de uma instruo. O microprocessador inicialmente
carrega o endereo da instruo no barramento de endereos; em seguida, ele ativa um sinal no barramento de controle para
especificar memria uma operao de leitura; em resposta, a memria vai colocar, no barramento de dados, a palavra
representando a instruo requisitada e previne o microprocessador (com um sinal no barramento de controle); ao perceber
o sinal de validao, o microprocessador l a palavra no barramento de dados e a armazena num de seus registros internos.
Em alguns casos, ser necessria a leitura de outras palavras no barramento de dados para que a instruo possa ser
executada. Nestes, casos, o processo descrito acima se repetir pelo nmero de vezes correspondente ao nmero de palavras
a serem lidas.
Apostila de Arquitetura de Computadores II 46
O valor do sinal eltrico num pino de um microprocessador (ou linha do barramento) indica se o sinal
est ativo ou no. Alguns sinais so ativos no nvel alto (ou seja, em 5 v), enquanto outros so ativos em nvel baixo (ou
seja, 0 v).
Dois parmetros podem ser associados performance de um microprocessador: o nmero de linhas do
barramento de endereos e o nmero de linhas do barramento de dados.
Um microprocessador dotado de m linhas de endereo pode enderear at 2
m
palavras de memria. Os
valores correntes de m so 16, 20, 24 ou 32. Da mesma forma, um microprocessador que dispe de n linhas de dados pode
ler ou escrever uma palavra de n bits numa nica operao. Os valores correntes de n so 8, 16 ou 32.
Um microprocessador que tenha um barramento de dados de 8 bits vai necessitar de quatro operaes
de leitura para acessar uma palavra de 32 bits.
Um microprocessador de 32 bits vai obter a mesma informao numa nica operao e ele ser,
naturalmente mais rpido. Alm das linhas de dados e de endereos, um microprocessador dispe de linhas de controle.
Estas permitem garantir a sincronizao, a regulao e o controle das trocas de dados no barramento entre o
microprocessador e o seu ambiente. Outros sinais so ainda encontrados disponveis, como a alimentao (5 V), o relgio e
o terra.
Embora cada microprocessador ter definido seus sinais especficos, possvel, de uma maneira mais
geral, classific-los em seis categorias: controle do barramento, interrupes, controle de acesso ao barramento, estados
funcionais, etc.
4.3. COMPONENTES DE UM MICROPROCESSADOR
Nesta seo, apresentaremos as principais caractersticas dos componentes da arquitetura de um
microprocessador, em particular, os registros, os barramentos, a ALU, os multiplexadores e decodificadores, o deslocador,
os relgios, e a memria principal.
4.3.1. Registros
Um registro um dispositivo capaz de memorizar uma informao. Na arquitetura de um
microprocessador, os registros, geralmente numerosos, so utilizados para assegurar o armazenamento temporrio de
informaes importantes para o processamento de uma dada instruo.
Endereos
Controle
Dados
Alimentao
Interrupes
Estados Funcionais Relgio
Figura 4.1 - Configurao externa de um microprocessador.
Conceitualmente, registro e memria so semelhantes... so a localizao, a capacidade de armazenamento e os
tempos de acesso s informaes que os diferenciam. Os registros se localizam no interior de um microprocessador,
enquanto a memria externa a este. Um registro memoriza um nmero limitado de bits, geralmente uma palavra de
memria.
Quanto mais complexos e mais potentes os microprocessadores, mais registros eles contm. No caso de
pequenos computadores e pouco potentes, a memria principal utilizada para armazenar valores intermedirios em funo
do nmero reduzido de registros.
Os registros de um microprocessador constituem uma memria local, privada ou uma memria bloco
de notas para o microprocessador. A memria central considerada uma memria global compartilhada.
4.3.2. Barramentos
Um barramento constitudo de um conjunto de fios sobre os quais vo transitar sinais em paralelo. Os
barramentos internos de um microprocessador so bem mais simples que os barramentos constituindo a arquitetura de um
computador, pois eles conectam, em 99% dos casos unicamente dois componentes em modo ponto a ponto, o que significa
que no existe a necessidade de se definir linhas de endereo e o nmero de linhas de comando bastante reduzido. A
transmisso de informao nos barramentos internos feita em paralelo para aumentar a eficcia do processamento.
Um barramento pode ser unidirecional (a informao transita num nico sentido) ou bidirecional (a
informao vai transitar nos dois sentidos, de maneira alternativa, claro!). Geralmente, os componentes conectados aos
Apostila de Arquitetura de Computadores II 47
barramentos podem se conectar e se desconectar eletricamente. Estas conexes-deconexes so feitas num tempo muito
curto (da ordem de nanosegundos). Um barramento que apresente estas propriedades chamado um barramento de trs
estados, ou seja, cada uma de suas linhas pode assumir os valores lgicos 0, 1 e flutuante. Os barramentos a trs estados
podem ser utilizados quando se necessita conectar diversos componentes que poderiam trocar dados atravs do barramento.
Em geral, os registros so conectados via barramentos conectando suas entradas e suas sadas. Um
exemplo disto mostrado na figura 4.2.
I7 I6 I5 I4 I3 I2 I0 I1
O7 O6 O5 O4 O3 O2 O0 O1
CLK
OE
Barramento de Sada
Barramento de Entrada
Figura 4.2 - Um registro de 8 bits conectado a dois barramentos (entrada e sada).
O registro composto de 8 flip-flops do tipo D. Suas sadas so conectadas atravs de circuitos a trs
estados. O registro dispe de dois sinais de comando: o sinal de relgio CK permite realizar o carregamento do registro; o
sinal OE permite ativar os sinais de sada, colocando o contedo do registrador disposio no barramento de sada.
Normalmente, os sinais CK e OE esto em repouso (inativos). Com CK inativo, o contedo do registro
no afetado pelas informaes circulando no barramento de entrada.
Quando CK ativado, o registro vai armazenar a informao presente no barramento de entrada, que
vai compor ento o contedo do registrador. Com OE em repouso, o registro considerado desconectado eletricamente do
barramento de sada. Quando OE ativado, o contedo do registro ser colocado no barramento de sada.
Desta maneira, se as sadas de um registro R1 estiverem conectadas s entradas de um registro R2,
possvel copiar o contedo de R1 em R2. O sinal OE de R1 ativado e mantido assim at a ativao do sinal CK de R2.
Este tipo de operao muito frequente em programao.
4.3.3. Unidade Lgica e Aritmtica (ALU)
Os computadores utilizam diversos componentes especficos para efetuar os clculos ou o tratamento de
informao. O circuito de clculo mais simples o somador, que adiciona dois nmeros de n bits. A ALU o circuito que
efetua diversas operaes aritmticas e lgicas entre dois operandos.
O tipo de tratamento a efetuar deve ser informado atravs de sinais de seleo de operao. A figura 4.3
mostra a composio de uma ALU, capaz de realizar quatro diferentes operaes com dois nmeros binrios A e B: A e B,
A ou B, Complemento de B (
B
) e A+B, a escolha das operaes sendo feitas segundo o valor dos dgitos F0 e F1.
4.3.4. Multiplexadores e Decodificadores
O multiplexador apresenta 2
n
entradas e uma nica sada. Um grupo de linhas de seleo permite
selecionar uma das 2
n
entradas (uma simples linha ou um barramento) para ser dirigida sada.
Apostila de Arquitetura de Computadores II 48
CARRY
n+1
CARRY
n
S0
S1
B
A
decodificador
somador
unidade
lgica
Figura 4.3 - ALU de quatro operaes sobre 1 bit.
Nos esquemas de microprocessadores, os multiplexadores so simbolizados por MUX. A figura 4.4 apresenta um
multiplexador de 2 entradas e 1 sada e um decodificador de 4 entradas por 16 sadas. Um circuito complementar, o
demultiplexador realiza a funo inversa do multiplexador, ou seja, sua funo corresponde a dirigir a nica entrada a uma
das 2
n
sadas, em funo dos valores binrios das linhas de seleo.
MULTIPLEXADOR 2 x 1 DECODIFICADOR 4 x 16
entradas
sadas sadas
entradas A B
controle
Figura 43.4 - Multiplexador 2 x 1 e Decodificador 4 x 16.
O decodificador compreende n entradas e 2
n
sadas, ordenadas de 0 a 2
n-1
. Se o valor presente sobre as
entradas k, apenas a sada de ordem k ser ativa. O decodificador analisa a informao nas suas entradas e fornece na
sada, de maneira exclusiva, a indicao ou significado desta informao dentre vrias possibilidades.
4.3.5. Relgio
A maior parte dos circuitos compondo a arquitetura de um computador so circuitos lgicos sncronos,
controlados por um relgio. O relgio um circuito capaz de transmitir regularmente, segundo uma periodicidade
determinada, pulsos eltricos, que permitem definir ciclos de mquina.
O intervalo de tempo entre dois pulsos chamado perodo do relgio ou tempo de ciclo. As freqncias
de relgio esto geralmente entre 1 e 300 MHz, o que equivale a perodos de relgio entre 10 s e 0,3 s. Cada ciclo de
mquina determina uma atividade de base no computador, como por exemplo, a busca de uma instruo, a execuo de
uma instruo, etc...
Numa CPU, uma atividade de base variada e na maior parte das vezes complexa; algumas vezes,
necessrio que um ciclo de relgio seja decomposto em vrios sub-ciclos de maneira a organizar e sincronizar as aes do
ciclo principal.
A figura 4.5 mostra um circuito de relgio que fornece quatro sinais na sada. O primeiro sinal (CK0)
corresponde sada principal, ou seja, o relgio de referncia; os demais sinais (CK1, CK2 e CK3) so derivados do
primeiro, cada um deles sofrendo um atraso diferente. A largura de pulso do sinal de referncia igual a 1/4 do ciclo de
Apostila de Arquitetura de Computadores II 49
relgio. Cada um dos sinais sofre um atraso, respectivamente de uma, duas e trs vezes a largura de pulso do sinal. Desta
forma, possvel obter um circuito que divide um ciclo de relgio em quatro ciclos de mesma largura, defasados de uma
largura de pulso.
atraso 1
atraso 2
atraso 3
CLK CLK 0
CLK 1
CLK 2
CLK 3
1 ciclo
Figura 4.5 - Circuito de relgio e seu cronograma.
Assim, para obter a realizao de quatro eventos em quatro diferentes subciclos preciso apenas efetuar uma
operao and com uma das sadas de relgio e o evento a ativar. O primeiro evento seria associado ao relgio principal
(CK1), o segundo evento a CK2, e assim por diante.
4.4. CONCEITO DE MICROARQUITETURA
Uma vez revisto o funcionamento dos diferentes componentes de um microprocessador, importante
estudar como estes podem ser combinados de modo a obter um circuito capaz de interpretar e executar um dado conjunto de
instrues de programa.
A arquitetura interna do microprocessador vai estabelecer o primeiro nvel de linguagem que ser
implementada pelos circuitos constituintes.
4.4.1. Um exemplo de micromquina
A figura 4.6 apresenta um exemplo de arquitetura interna de um microprocessador e a maneira como a
informao ser conduzida. Nas sees a seguir ser feita a descrio dos seus diferentes elementos e os sinais utilizados
para conduz-los.
Apostila de Arquitetura de Computadores II 50
PC
AC
SP
IR
TIR
+1
0
-1
AMASK
SMASK
A
B
C
D
E
F
MAR
MBR
ALU
buffer A buffer B
AMUX
DESLOC
N
Z
F0
F1
A0
L0 L1
M0
M1 M2 M3
Sada Dados
Entrada Dados
Sada Endereos
Dados
Endereos
Barramento A
Barramento B
Barramento C
S0
S1
Figura 4.6 - Exemplo de microarquitetura.
Na micromquina da apresentada, o caminho dos dados composto de 16 registros gerais de 16 bits (A,
B, C, PC, SP, AC, etc.), uma ALU e diversos barramentos (A, B e C). Cada registro pode transimitir seus dados aos
barramentos A ou B e pode receber as informaes sobre o barramento C.
Os barramentos A e B vo alimentar a ALU com operandos de 16 bits para realizar uma das quatro
operaes: A+B, A e B, A e complemento de A (
A
). A seleo da operao a realizar ser indicada pelos bits F0 e F1.
Dois outros bits, N e Z, indicam, respectivamente, se o resultado da operao negativo ou zero (estes sinais so ativados
aps uma operao da ALU).
A sada da ALU conectada entrada de um registrador de deslocamento, DESLOC, que efetua sobre o
operando ou uma simples transferncia, ou um deslocamento para a direita ou para esquerda, os bits utilizados para indicar
a maneira de transmitir o dado sendo S0 e S1.
Os barramentos A e B no so conectados diretamente s entradas da ALU, servindo-se para isto de
buffers A e B (manter estabilidade dos dados na entrada).
A troca de dados com a memria principal do microprocessador feita graas a dois outros registros
MAR e MBR. MAR pode ser carregado com um dado do barramento B, o carregamento deste registro sendo comandado
pelo sinal M0.
Um dado na sada do registro de deslocamento pode ou ser carregado num dos 16 registros gerais, ou
ser enviado memria principal via registro MBR, o sinal utilizado para comandar o carregamento do registro sendo M1.
M2 e M3 permitem comandar, respectivamente as operaes de escrita e leitura em memria. Um dado
lido na memria pode ser carregado diretamente como entrada da ALU, segundo a seleo efetuada pelo multiplexador
AMUX, A0 sendo o sinal utilizado para o controle.
O controle do caminho dos dados do microprocessador vai necessitar ento de 61 sinais:
16 para comandar a descarga dos registros sobre o barramento A
Apostila de Arquitetura de Computadores II 51
16 para comandar a descarga dos registros sobre o barramento B
16 para comandar a carga dos registros a partir do barramento C
2 sinais de carregamento dos buffers A e B (L0 e L1)
2 sinais para definir a operao a executar (F0 e F1)
2 sinais para o comando do registrador de deslocamento (S0 e S1)
4 sinais para comandar os registros MAR e MBR (M0, M1, M2 e M3)
2 sinais para indicar a operao de leitura ou escrita com a memria principal
1 sinal para controlar o multiplexador
A micromquina disporia ento de um registro de comando de 61 bits que permitira controlar, atravs
dos valores dos bits, as operaes a serem efetuadas pelo microprocessador.
Pode-se ainda reduzir o nmero de bits necessrios para definir uma instruo, com um pequeno
aumento no hardware interno da mquina.
Com o uso de decodificadores para enderear os 16 registros em cada um dos barramentos (A, B e C) o
nmero de bits necessrios para este fim cai de 48 para 12, o que reduz o nmero total de bits de 61 para 25. L0 e L1
podem, de fato utilizar sinais j fornecidos pelo relgio, uma vez que estes sero ativados em ciclos bem precisos da
execuo_logo, so menos dois sinais (23).
O nmero de bits, por outro lado, aumentado se considerarmos que vamos necessitar de um sinal
especial para autorizar ou no o carregamento de um registro sobre C com o resultado de uma operao (sabendo que
algumas vezes a operao vai ser executada simplesmente para ativar os sinais N e Z)... 24 sinais sero necessrios. M2 e
M3 podem ser comandados por RD e WR... assim, uma microinstruo do microprocessador poder ser composta de 22
bits.
4.4.2. Formato das microinstrues
A figura 4.7 apresenta o formato das microinstrues da micromquina definida na figura 4.6. Como
pode ser visto, ela composta de diversas partes, chamadas campo, onde cada campo vai ter um significado especial para a
operao da micromquina. Podemos observar ali 13 campos, dos quais onze so definidos a seguir:
AMUX (1 bit) - controle do multiplexador
ALU (2 bits) - seleo da operao da ALU
DESLOC (2 bits) - controle do sentido de deslocamento de reg. desl.
MBR (1 bit) - controle de carregamento de MBR
RD (1 bit) - leitura na memria
WR (1 bit) - escrita em memria
VALC (1 bit) - autorizao de carregamento dos registros
C (4 bits) - endereamento dos registros para o barramento C
B (4 bits) - endereamento dos registros para o barramento B
A (4 bits) - endereamento dos registros para o barramento A
Os campos COND e END sero definidos mais adiante.
4.4.3. Ciclo de execuo de uma instruo
A execuo de uma microinstruo pelos diversos componentes da micromquina deve obedecer a um
ciclo bem definido. O ciclo de execuo de uma instruo pela ALU composto das seguintes etapas:
carregamento dos operandos nos buffers A e B
fornecimento de tempo suficiente para a ALU e o registro de deslocamento para realizar suas funes
carregamento do resultado da operao num registro geral ou no registro MBR.
A
M
U
X
C
O
N
D
A
L
U
D
E
S
L
O
C
M
B
R
M
A
R
R
D
W
R
V
A
L
C
A B C END
1 1 1 1 1 1 2 2 2 4 4 4 8
Figura 4.7 - Formato de uma microinstruo da micromquina exemplo.
Apostila de Arquitetura de Computadores II 52
evidente que estas etapas devem ser realizadas de maneira sequencial e no simultaneamente, o que impe uma
certa ordenao no tempo. Isto significa que preciso dispor de um circuito de reolgio que gere diferentes sinais (4
subciclos, por exemplo) que vo definir as diferentes fases da execuo de uma microinstruo.
As aes que seriam executadas nos quatro sub-ciclos seriam as seguintes:
O Carregamento da microinstruo num registro particular, chamado registro de microinstruo (RMI);
O Transferncia do contedo dos registros selecionados sobre os barramentos A e B, e aps carregamento dos
dados correspondentes nos buffers A e B;
O Execuo da operao pela ALU;
O Terminada a operao, o dado de sada (resultado da operao) vai ser carregado, ou num registro geral ou no
registro MBR.
A figura 4.8 apresenta um esquema completo da micromquina, sobre o qual podemos distinguir dois
subconjuntos de circuitos: esquerda o caminho dos dados que foi analisado anteriormente; direita, uma unidade de
comando que ser analisada a seguir. A memria de controle a parte mais importante desta unidade pois ela que vai
conter as microinstrues da micromquina. Na maioria das mquinas, esta memria uma ROM.
A
M
U
X
C
O
N
D
A
L
U
D
E
S
L
O
C
M
A
R
M
B
R
R
D
W
R
V
A
L
C
C B A END
MEMRIA DE CONTROLE 256 x 32
MPC
MMUX
contador
incremental
RELGIO
CLK3
CLK2
CLK1
CLK0
M
I
C
R
O
S
E
Q
Decodificador A
Decodificador B
Decodificador C
MAR
MBR
ALU
buffer A buffer B
AMUX
DESLOC
Registros
Gerais
barramentoA
barramentoB
1
4
4
4
16
16
16
N
WR
2
2
Z
RD
2
endereos
dados
Figura 4.8 - Micromquina completa.
No exemplo considerado, as microinstrues so codificadas em palavras de 32 bits. A memria de
comando selecionada, vai ter a capacidade de armazenar at 256 palavras de 32 bits (256 x 32 bits).
A memria de comando dispe de um registro de endereos (MPC) e de um registro de dados (MRI). O primeiro
registro permite enderear a microinstruo a ser executada e o segundo armazen-la.
A memria de comando atua no primeiro subciclo da execuo de uma instruo, fazendo a carga da
microinstruo apontada por MPC no registro RMI. No subciclo 2 o contedo de RMI estvel, sendo que as informaes
contidas nos campos da microinstruo vo agir no caminho de dados, particularmente os campos A e B que vo determinar
quais as informaes devero ser carregadas nos barramentos A e B (sendo que os decodificadores vo realizar a
decodificao , suas sadas agindo sobre as entradas OE dos registros selecionados).
Ainda no subciclo 2, o relgio permite carregar as informaes sobre os barramentos A e B nos buffers,
respectivamente A e B. Assim, para os subciclos seguintes, os dados de entrada da ALU estaro estveis nestes buffers.
Durante esta operao, o registro MPC incrementado de um por um circuito especial o contador
incremental, o que permite preparar o carregamento da prxima microinstruo no RMI, aumentando assim a velocidade de
execuo do microprograma.
No subciclo 3, a ALU e o registro de deslocamento vo executar as operaes sobre os dados, segundo
os os valores dos campos ALU e DESLOC. Alm disso, o campo AMUX que comanda o multiplexador AMUX vai permitir
indicar se o dado a ser carregado na entrada esquerda da ALU deve ser o contedo do buffer A ou o contedo do registro
MBR.
Apostila de Arquitetura de Computadores II 53
Por outro lado, o buffer B estar sempre conectado entrada direita da ALU. O tempo de clculo da
ALU pode variar segundo a operao a efetuar. No nosso caso, a operao mais longa a de adio. De maneira paralela
aos tratamentos efetuados pela ALU e pelo registro de deslocamento, o registro MAR pode ser carregado com o valor
contido no buffer B se o campo MAR indicar assim. Durante o subciclo 4 (o ltimo), o dado que se encontra sobre o
barramento C vai ser carregado num dos 16 registros gerais ou no registro MBR, segundo as indicaes dos campos VALC
e MBR da microinstruo.
O registro MAR ser tambm carregado no subciclo 4 se o campo MAR indicar. Os sinais de comando
RD e WR so difundidos para a memria principal e para o registro MBR, durante todo o tempo em que eles estejam
estveis no registro RMI.
4.4.4. Sequenciamento das microinstrues
Acabamos de analizar a execuo de uma nica microinstruo. Vejamos agora como um conjunto de
microinstrues executado. Na maioria dos casos, as microinstrues so executadas de modo sequencial, ou seja, a
microinstruo encontra-se no endereo que sucede o da que est sendo processada. Em certos casos, portanto, necessrio
romper o sequenciamento normal das microinstrues, pela introduo de ordens de quebra deste sequenciamento. Isto
feito graas aos dois campos adicionais da microinstruo (que no haviam sido definidos at ento) que so os campos
END e COND.
O campo END (8 bits) permite (em caso de quebra do sequenciamento normal de execuo) indicar o
endereo da eventual microinstruo a executar. O campo COND vai permitir indicar qual ser a prxima instruo a
executar: ou a instruo em MPC + 1 ou a instruo em END. Desta forma, cada microinstruo vai conter a possibilidade
de um salto condicional (ou no).
Em nossa micromquina, a escolha da microinstruo a executar definido por um circuito especial (o
microsequenciador) durante o subciclo 4 uma vez que os bits N e Z esto estveis na sada da ALU. A sada deste
microsequenciador conectada entrada de um multiplexador MMUX, que vai carregar o registro MPC seja com MCP +
1, seja com END, segundo o que estiver definido pelo campo COND:
COND = 0 sem quebra de sequenciamento --- MPC = MPC + 1
COND = 1 quebra de sequenciamento se N = 1
COND = 2 quebra de sequenciamento se Z = 1
COND = 3 quebra de sequenciamento incondicional
O microsequenciador implementa a seguinte equao booleana, levando em conta as sadas da ALU, N e Z e o
campo COND, que aqui representado pelos bits L (da esquerda) e R (da direita):
MMUX =
L
R N + L
R
Z + L R = RN + LZ + LR
Assim MMUX ser igual a 1 nas seguintes condies:
LR = 01
2
e N = 1 LR = 10
2
e Z = 1 LR = 11
2
4.4.5. Exemplos de microinstruo
Alguns exemplos de microinstruo comuns na nossa microarquitetura so apresentadas na figura 4.9.
D
E
S
L
O
C
A
M
U
X
C
O
N
D
A
L
U
M
B
R
M
A
R
R
D
W
R
V
A
L
C
C A B
E
N
D
OPERAO
0 mar = pc; rd; 00 0 0 0 1 1 0 0 0 2 0 0
0 alu=c; if z then go to 22; 22 1 0 0 0 0 0 0 0 2 2 0
0 ac = inv(mbr) 00 0 1 1 0 0 0 0 0 3 0 1
1 sp = sp -1; rd; 00 7 2 2 0 1 0 0 0 0 0 0
1 pc = pc + 1; 00 0 6 0 0 0 0 0 0 0 0 0
Figura 4.9 - Exemplos de microinstrues.
Apostila de Arquitetura de Computadores II 54
4.5. LINGUAGEM DE MQUINA E MICROCDIGO
4.5.1. Caractersticas bsicas do microprocessador
O programador do microprocessador considerado v o componente como uma mquina composta de 8
Kb de memria e de trs registros especficos: o contador de programa (PC), o acumulador (AC) e o apontador de pilha
(SP).
4.5.2. Modos de endereamento de dados
As referncias aos dados podero ser feitos segundo trs diferentes maneiras:
o modo direto, onde as instrues sero compostas de um endereo absoluto de 12 bits, correspondente
posio do dado na memria; o modo de endereamento mais indicado para fazer acesso a variveis
globais do programa;
o modo indireto, onde o endereo obtido por clculo, sendo o resultado do clculo armazenado no registro
AC; uma aplicao tpica deste modo o acesso a componentes de vetores ou tabelas em programas que
utilizem tais estruturas;
o modo local, que permite localizar uma informao na rea de pilha do programa, com relao ao endereo
apontado pelo registro SP; com este modo de endereamento, possvel realizar acesso a dados presentes na
pilha, particularmente, parmetros de rotinas.
4.5.3. Conjunto de Instrues da Microarquitetura
A linguagem de mquina da microarquitetura considerada composta de 23 instrues. A tabela a
seguir apresenta cada uma das instrues da linguagem, juntamente com uma breve descrio de sua operao.
Cdigo Descrio
LODD end Carrega em AC o dado posicionado na posio indicada por end
STOD end Armazena o contedo do acumulador no endereo indicado por end
ADDD end Adiciona o dado posicionado em end ao contedo do acumulador
SUBD end Subtrai o dado posicionado em end do contedo do acumulador
JPOS end Salto condicional para end se contedo do acumulador positivo
JZER end Salto condicional para end se contedo do acumulador zero
JUMP end Salto incondicional para end
LOCO dado Carrega acumulador com valor indicado por dado
LODL x Carrega o acumulador com dado posicionado a x posies do SP
STOL x Armazena o contedo do acumulador na pilha a SP + x
ADDL x Adiciona o contedo do acumulador com dado armazenado em SP + x
SUBL x Subtrai o dado armazenado em SP + x do contedo do acumulador
JNEG end Salto condicional para end se contedo do AC negativo
JNZE end Salto condicional para end se contedo do AC diferente de zero
CALL end Chamada de subrotina localizada em end
PSHI Transfere para a pilha o contedo de memria apontado pelo AC
POPI Transfere o contedo da pilha para a posio apontada por AC
PUSH Transfere para a pilha o contedo do registro AC
POP Transfere o contedo da pilha para o registro AC
RETN Retorno de subrotina
SWAP Troca os contedos do AC e da pilha
INSP y Incrementa o SP de y unidades
DESP y Decrementa o SP de y unidades
Na descrio dos cdigos das instrues na tabela, os operandos apresentados correspondem ao
seguinte:
end so endereos expressos em 12 bits;
dado so valores expressos em 12 bits;
x so deslocamentos expressos em 12 bits;
y so deslocamentos expressos em 8 bits.
Apostila de Arquitetura de Computadores II 55
Para um melhor entendimento do significado das instrues da linguagem, so apresentados, na prxima tabela,
os cdigos em binrio e as operaes realizadas sobre os registros da microarquitetura.
Cdigo Binrio Operao
LODD end
0000 xxxx xxxx xxxx ac = m[x]
STOD end
0001 xxxx xxxx xxxx m[x] = ac
ADDD end
0010 xxxx xxxx xxxx ac = ac + m[x]
SUBD end
0011 xxxx xxxx xxxx ac = ac - m[x]
JPOS end
0100 xxxx xxxx xxxx if ac > 0 then pc = x
JZER end
0101 xxxx xxxx xxxx if ac = 0 then pc = x
JUMP end
0110 xxxx xxxx xxxx pc = x
LOCO dado
0111 xxxx xxxx xxxx ac = x , 0 x 4095
LODL x
1000 xxxx xxxx xxxx ac = m[sp+x]
STOL x
1001 xxxx xxxx xxxx m[sp+x] = ac
ADDL x
1010 xxxx xxxx xxxx ac = ac + m[sp+x]
SUBL x
1011 xxxx xxxx xxxx ac = ac - m[sp+x]
Cdigo Binrio Operao
JNEG end
1100 xxxx xxxx xxxx if ac < 0 then pc = x
JNZE end
1101 xxxx xxxx xxxx
if ac 0 then pc = x
CALL end
1110 xxxx xxxx xxxx sp = sp - 1; m[sp] = pc; pc = x
PSHI
1111 0000 0000 0000 sp = sp - 1; m[sp] = m[ac]
POPI
1111 0010 0000 0000 m[ac] = m[sp]; sp = sp + 1;
PUSH
1111 0100 0000 0000 sp = sp - 1; m[sp] = ac
POP
1111 0110 0000 0000 ac = m[sp]; sp = sp + 1;
RETN
1111 1000 0000 0000 pc = m[sp]; sp = sp + 1
SWAP
1111 1010 0000 0000 tmp = ac; ac = sp; sp = tmp
INSP y
1111 1100 yyyy yyyy sp = sp + y , 0 x 255
DESP y
1111 1110 yyyy yyyy sp = sp - y , 0 x 255
4.5.4. O Microprograma
Um aspecto interessante a ser destacado aqui o que define a linguagem de mquina da microarquitetura
considerada. Um fator determinante para a especificao da linguagem de mquina sem dvida a prpria
microarquitetura, pois esta vai limitar as operaes que podero ser realizadas em funo de seus componentes.
Por outro lado, o que dar mquina o poder de interpretar e executar as instrues de mquina definidas na
linguagem o microprograma que estar armazenado na memria de controle. O microprograma atua como um
interpretador que controla todos os componentes da microarquitetura no sentido de realizar todos os passos da execuo de
um programa em linguagem de mquina. As operaes bsicas realizadas pelo interpretador so:
a busca do cdigo da instruo a executar;
a decodificao da instruo;
a execuo propriamente dita da instruo.
Como j foi discutido, esta seqncia de passos executada num ciclo eterno, o que permite dar ao
microprocessador a capacidade de executar seus programas em binrio, instruo por instruo como estabelece o fluxo de
controle de cada programa.
Nas sees a seguir, ser explicada, atravs de exemplos, como so implementados, no interpretador, cada um
dos passos citados acima.
4.5.5. O ciclo de busca de uma instruo
O ciclo de busca de uma instruo envolve um pequeno conjunto de registros da microarquitetura,
particularmente, o PC, o MAR e o IR. Os passos bsicos deste ciclo so:
O Carregamento do contedo do registro PC no registro MAR;
O Incremento do registro PC;
O Cpia do contedo da posio de memria apontada por MAR (cdigo da instruo a executar) no registro IR;
Traduzindo estes passos para a sintaxe da linguagem de microprogramao, pode-se escrever o
seguinte:
0: mar := pc; rd; / carregamento do MAR
1: pc := pc + 1; rd; / incremento do PC
2: ir := mbr; if n then goto 28; / cdigo no IR
Apostila de Arquitetura de Computadores II 56
4.5.6. A decodificao das instrues
Considerando que o cdigo das instrues a executar (armazenado em IR) binrio e que cada instruo
composta de uma parte mais significativa da palavra que indica o tipo de operao a ser executada, a decodificao das
instrues feita atravs da realizao de operaes de deslocamento (para a esquerda) da palavra que representa este
cdigo. Dependendo do resultado do deslocamento, pode-se ento encaminhar (atravs de comandos go to) o
microprograma para a seo de microinstrues que implementa a instruo identificada.
Na realidade, a decodificao das instrues realizada atravs de um conjunto seqencial de testes (if-then-else)
onde a condio testada a pertinncia do cdigo a um dado intervalo de valores (o que especifica o tipo de operao a
realizar). Em caso positivo, o controle transferido para uma regio do microprograma onde o microcdigo relativo quele
grupo de instrues est implementado; caso contrrio, o controle transferido para uma outra regio de teste do
microprograma (para verificar a pertinncia da instruo a um outro grupo de instrues).
No exemplo a seguir, vemos um trecho de microprograma capaz de interpretar duas diferentes instrues: a
instruo de carregamento de um dado constante (LOCO dado) e uma instruo de rotao do contedo do acumulador para
a esquerda (ROL). O cdigo de mquina da instruo LOCO dado 0111 xxxx xxxx xxxx, onde os 12 bits a x
identificam o valor do dado a ser carregado no acumulador. Em hexadecimal, considerando que o dado a carregar A30, o
cdigo de mquina desta instruo fica 7A30. A instruo ROL no foi definida anteriormente. Por isso, podemos definir
seu cdigo como sendo E008.
O microcdigo mostrado a seguir ilustra a situao de decodificao onde apenas uma das duas instrues pode
estar presente no programa em linguagem de mquina. Na linha 4, realizada uma operao de AND lgico entre o
contedo do registro IR (o cdigo da instruo) e o registro AMASK. Este registro da micromquina contm uma constante
cujo valor 0000 1111 1111 1111 (ou 0FFF em hexadecimal) cuja funo retirar, do cdigo da instruo a executar, os
12 bits menos significativos. Continuando com a anlise da linha 4, o objetivo da operao verificar se o cdigo sob
anlise da operao de rotao ou da operao nula (0000 em hexadecimal). Nesta linha, est explcito que, se o
resultado do AND lgico for zero, ento o controle do programa deve ser transferido para a linha 0. Neste caso, est se
considerando que o cdigo pertence instruo nula e no deve, ento ser feito nada, retornando para ir buscar a prxima
instruo. Caso contrrio, o controle do microprograma transferido para a linha seguinte que deve implementar a
instruo de rotao.
4 : a := band(ir, amask); if z then goto 0; / rotao esq.
4.5.7. A implementao das instrues
Vamos aproveitar o exemplo da instruo de rotao para ilustrar como as instrues de mquina so
implementadas em microcdigo. A seqncia de microinstrues a seguir ser comentada no sentido de explicar esta
implementao. Esta instruo de rotao esquerda permite indicar, atravs do valor contido no registro A, de quantos
bits ser realizado o deslocamento.
5 : ac := lshift(ac); if n then goto 7;
6 : goto 8;
7 : ac := ac + 1;
8 : a := a + -1; if z then goto 0;
9 : goto 5;
Na linha 5, realizada efetivamente o deslocamento para a esquerda do contedo do acumulador, expressa pela
funo lshift(ac). No entanto, para que a rotao se caracterize (e no um deslocamento), preciso garantir que o bit
mais significativo da palavra seja transferido para o bit menos significativo aps a rotao, como mostra a figura 4.10.
1 0 1 1 0 0 1 0 1 0 1 1 0 0 1 0
rotao esquerda
antes da rotao aps a rotao
Figura 4.10 - Ilustrao da operao de rotao esquerda.
Este o papel das instrues que seguem a partir da linha 5. Na prpria instruo 5, o resultado da rotao
verificado atravs do sinal N. Caso N seja 1, o que significa que o bit mais significativo da palavra 1, o controle do
microprograma transferido para a linha 7, onde o contedo do registro AC adicionado a 1. Caso contrrio, o controle
passa para a linha 6, que, por sua vez, provoca um salto para a linha 8. A partir da linha 8, feito o controle do nmero de
vezes que ser feito o deslocamento. O controle feito, decrementando-se o contedo do registro A e comparando o
resultado do decremento com zero. Se o resultado for zero, no dever haver mais rotao e a operao considerada
encerrada (if z then goto 0); se o resultado do decremento no for zero, o controle do microprograma transferido
mais uma vez para a linha 5 para que seja efetuada uma nova rotao de um bit para a esquerda (goto 5).
Apostila de Arquitetura de Computadores II 57
4.5.8. O microprograma completo
O microprograma capaz de interpretar e executar todas as instrues descritas na seo 4.3 apresentado a
seguir. Os comentrios, separados por uma barra inclinada, auxiliam na compreenso do mesmo.
0: mar := pc; rd; / loop principal
1: pc := pc + 1; rd; / incremento do PC
2: ir := mbr; if n then goto 28; / salva e decodifica MBR
3: tir :=lshift(ir + ir); if n then goto 19;
4: tir :=lshift(tir); if n then goto 11; / 000x ou 001x?
5: alu := tir; if n then goto 9; / 0000 ou 0001?
6: mar := ir; rd; / 0000 = LODD
7: rd;
8: ac := mbr; goto 0;
9: mar := ir; mbr := ac; wr; / 0001 = STOD
10: wr; goto 0;
11: alu := tir; if n then goto 15; / 0010 ou 0011?
12: mar:= ir; rd; / 0010 =ADDD
13: rd;
14: ac := mbr + ac; goto 0;
15: mar:= ir; rd; / 0011 = SUBD
16: ac := ac + 1; rd; / Obs: x-y = x+1 + not(y)
17: a := inv(mbr);
18: ac := ac + a; goto 0;
19: tir :=lshift(tir); if n then goto 25; / 010x ou 011x?
20: alu :=tir; if n then goto 23; / 0100 ou 0101?
21: alu :=ac; if n then goto 0; / 0100 = JPOS
22: pc := band (ir, amask); goto 0; / realiza o salto
23: alu := ac; if z then goto 22; / 0101 = JZER
24: goto 0; / sem salto
25: alu:= tir; if n then goto 27; / 0110 ou 0111?
26: pc := band(ir, amask); goto 0; / 0110 = JUMP
27: ac :=band(ir, amask); goto 0; / 0111 = LOCO
28: tir :=lshift(ir + ir); if n then goto 40; / 10xx ou 11xx?
29: tir :=lshift(tir); if n then goto 35; / 100x ou 101x?
30: alu := tir; if n then goto 33; / 1000 ou 1001?
31: a :=ir + sp; / 1000 = LODL
32: mar :=a; rd; goto 7;
33: a:=ir + sp; / 1001 = STOL
34: mar := a; mbr:= ac;wr; goto 10;
35: alu := tir; if n then goto 38; / 010 ou 1011?
36: a :=ir + sp; / 1010 = ADDL
37: mar := a;rd; goto 13;
38: a :=ir + sp; / 1011 = SUBL
39: mar :=a;rd; goto 16;
40: tir :=lshift(tir); if n then goto 46; / 110x ou 111x?
41: alu :=tir; if n then goto 44; / 1100 ou 1101?
42: alu := ac; if n then goto 22; / 1100 = JNEG
43: goto 0;
44: alu := ac; if z then goto 0; / 1101 = JNZE
45: pc := band(ir, amask); goto 0;
46: tir :=lshift(tir); if n then goto 50;
47: sp := sp + -1 ; / 1110 = CALL
48: mar := sp; mbr:= pc;wr;
49: pc := band(ir, amask);wr; goto 0;
50: tir := lshift(tir);if n then goto 65; / 1111, busca endereo
51: tir := lshift(tir); if n then goto 59;
52: alu := tir; if n then goto 56;
53: mar :=ac;rd; / 1111000 = PSHI
54: sp :=sp + -1 ;rd;
55: mar := sp;wr;goto 10;
56: mar := sp; sp:= 1 + sp;rd; / 1111001 = POPI
57: rd;
58: mar :=ac;wr;goto 10;
59: alu :=tir; if n then goto 62;
60: sp :=sp + -1 ; / 1111010 = PUSH
61: mar := sp;mbr := ac; wr;goto 10;
62: mar := sp;sp := 1 + sp;rd; / 1111011 = POP
63: rd;
64: ac:= mbr; goto 0;
65: tir := lshift(tir); if n then goto 73;
66: alu := tir; if n then goto 70;
67: mar := sp;sp := 1 + sp;rd; / 1111100 = RETN
68: rd;
69: pc := mbr; goto 0;
70: a := ac;
71: ac := sp;
72: sp := a; goto 0;
73: alu := tir; if n then goto 76;
74: a := band(ir, smask); / 1111110 = INSP
75: sp := sp + a; goto 0;
76: a:= band(ir, smask); / 1111111 = DESP
77: a:= inv(a);
78: a:= a + 1; goto 75;