Sei sulla pagina 1di 57

Universidade Catlica de Braslia

Curso de Bacharel em Sistemas de Informao


Apostila de Arquitetura de Computadores II
Editada por Eduardo Moresi
Braslia Maro 2002
Apostila de Arquitetura de Computadores II 2
Captulo 1 - Noes de Arquitetura de Computadores
1. INTRODUO
O alto nvel de popularidade atingido pelos computadores nos ltimos anos permitiu tambm quebrar uma srie de
barreiras, particularmente no que diz respeito terminologia associada.
Atualmente, expresses como bits, bytes, hard disk, RAM, e outras, deixaram de fazer parte vocabulrio tcnico dos
especialistas para compor aquele de grande parte dos usurios destas mquinas.
Entretanto, os aspectos bsicos de funcionamento de um computador ainda so reservados aos profissionais da rea e
devem assim permanecer indefinidamente.
Neste captulo pretende-se, a nvel de introduo, apresentar alguns aspectos importantes do funcionamento dos
computadores, sendo que as questes mais importantes sero aprofundadas ao longo do curso.
2. PRINCIPAIS COMPONENTES DE UM COMPUTADOR
Numa viso externa de grande parte dos usurios, um computador composto de CPU, teclado, vdeo e mouse, como
ilustrado pela figura 2.1. Esta a viso da maior parte da populao que tenha algum tipo de interao com o computador,
principalmente porque estes so os elementos de um microcomputador que se deve que transportar, desconectando-os e
reconectando-os para fazer o computador voltar a funcionar.
Embora continuar a ter este tipo de viso dos componentes de um computador no vai afetar profundamente a vida e modo
de utilizao destas mquinas pela maior parte da populao, lgico que esta uma viso extremamente superficial at
para alguns usurios.
Figura 2.1 Elementos (aspecto externo) de um computador.
2.1. A Unidade Central de Processamento... a CPU
Um primeiro equvoco aparece nesta diviso, ao chamar-se o gabinete do microcomputador, seja ele em formato torre (o
formato vertical) ou desktop (o horizontal), de CPU. O mais correto cham-lo mesmo de torre ou gabinete. O nome, ou
melhor a sigla CPU, vem do ingls Central Prossessing Unit, para designar o componente ou o conjunto de componentes
do computador responsvel pela execuo das instrues dos programas. O nome CPU sugere, ento, um elemento
essencial no funcionamento do computador, sem uma CPU, os computadores no poderiam funcionar.
Nas mquinas de primeira e segunda gerao, segundo a organizao do captulo anterior, as CPUs eram implementadas
em circuitos de grandes dimenses, utilizando milhares de vlvulas ou transistores. A partir dos anos 70, com o
aparecimento do circuito integrado, as CPUs puderam ser implementadas completamente num chip, denominado a partir de
ento de microprocessador, nome at hoje utilizado e que incorpora, em sua famlia, exemplares como o Pentium e o Power
PC entre outros menos populares, mas nem por isso menos poderosos.
Apesar da existncia de uma grande diversidade em termos de arquiteturas de computador, pode-se enumerar, num ponto
de vista mais genrico os componentes bsicos desta classe de equipamentos. A figura 2.2 apresenta um esquema de um
computador, destacando os elementos que o compem. Apesar da grande evoluo ocorrida na rea de informtica desde o
aparecimento dos primeiros computadores, o esquema apresentado na figura pode ser utilizado tanto para descrever um
sistema computacional atual como os computadores da dcada de 40, projetados por engenheiros como John Von Neuman.
Vamos analisar a evoluo que as CPUs sofreram ao longo dos anos e quais so os parmetros a elas associados que
influenciam no desempenho global de um sistema computacional.
Um parmetro importante o tamanho da palavra processada pela unidade lgica e aritmtica, lembrando que o sistema
de numerao adotado nas arquiteturas de computadores o binrio, o qual tem como unidade bsica de informao o bit,
que pode assumir os valores 0 ou 1.
Quanto maior o tamanho da palavra manipulada pelo microprocessador, maior o seu potencial de clculo e maior a
preciso das operaes realizadas. As primeiras CPUs integradas num nico chip, como por exemplo, o 4004 fabricado pela
Intel em 1971 manipulava palavras (dados e instrues) expressas por 4 dgitos binrios. Os microprocessadores mais
recentes so capazes de manipular palavras entre 32 bits (caso dos 486) e 64 bits (Pentium e Power PC).
Apostila de Arquitetura de Computadores II 3
A velocidade de clculo outro fator de peso para as arquiteturas de computador, uma vez que ela ser determinante para
o tempo de resposta de um sistema computacional com respeito execuo de uma dada aplicao.
Memria
Unidade Central de
Processamento (CPU)
Entrada
Sada
Figura 2.2 Composio bsica de um computador.
A velocidade de clculo est diretamente relacionada com a freqncia do relgio que pilota o circuito da CPU como um
todo. O microprocessador Intel 4004 era movido por um clock de freqncia igual a 108 KHz (isto mesmo... quilohertz),
enquanto hoje fala-se em microprocessadores com clocks de 200, 233, 266 e at 300 MHz.
Ainda relacionada com a ALU, possvel destacar a quantidade de operaes que ela suporta. Os primeiros processadores
suportavam um conjunto relativamente modesto de operaes lgicas e aritmticas. Em particular, no que diz respeito s
operaes aritmticas, os primeiros processadores suportavam apenas operaes de adio e subtrao, sendo que as
demais operaes tinham de ser implementadas atravs de seqncias destas operaes bsicas. Os processadores
suportando um conjunto mais complexo de instrues surgiu de 15 anos para c, graas adoo da tecnologia CISC
(Complex Instruction Set Computer).
Embora no seja um aspecto visvel ou perceptvel internamente, importante destacar que o aumento do potencial de
clculo de um computador s foi incrementado devido evoluo da microeletrnica que tem oferecido tcnicas de
integrao capazes de encapsular uma quantidade cada vez maior de transistores por unidade de rea. S para que se tenha
um parmetro, o Intel 4004 possua 23000 transistores integrados no mesmo chip, enquanto dos chips da linha Pentium
abrigam cerca de 6 milhes de transistores.
2.2. A Memria
Todo computador dotado de uma quantidade (que pode variar de mquina para mquina) de memria a qual se constitui
de um conjunto de circuitos capazes de armazenar (por perodos mais curtos ou mais longos de tempo) as unidades de
dados e os programas a serem executados pela mquina. Nos computadores de uso geral, possvel encontrar diferentes
denominaes para as diferentes categorias de memria que neles so encontradas:
a memria principal, ou memria de trabalho, onde normalmente devem estar armazenados os programas e dados a
serem manipulados pelo processador;
a memria secundria que permitem armazenar uma maior quantidade de dados e instrues por um perodo de
tempo mais longo; os discos rgidos so exemplos mais imediatos de memria secundria de um computador, mas
podem ser citados outros dispositivos menos recentes como as unidades de fita magntica e os cartes perfurados
introduzidos por Hollerith;
a memria cache, conceito introduzido mais recentemente e que se constitui de uma pequena poro de memria
com curto tempo de resposta, normalmente integrada aos processadores e que permite incrementar o desempenho
durante a realizao de um programa.
Os circuitos de memria so normalmente subdivididos em pequenas unidades de armazenamento denominadas palavras.
Cada palavra identificada no circuito por um endereo nico, o qual vai ser referenciado pelo processador no momento de
consultar ou alterar o seu contedo. Historicamente, cada palavra de memria permitia armazenar 8 dgitos binrios (ou
bits), o que introduziu o conceito de byte como sendo uma palavra de 8 bits, unidade at hoje utilizada para medir a
capacidade de armazenamento das memrias e o tamanho dos programas.
As quantidades de memria hoje so definidas em termos de Kbyte (quilobyte) que correspondem a 1024 bytes ou (2
10
bytes) e Mbyte (megabyte), que correspondem a 1024 Kbyte ou (2
20
bytes).
O grande desenvolvimento ocorrido na rea de software, particularmente no que diz respeito ao uso de interfaces grficas e,
mais recentemente, das aplicaes multimdias, tem forado os fabricantes de componentes de computador a produzirem
circuitos de memria cada vez mais poderosos.
No que diz respeito aos computadores pessoais, por exemplo, pode-se verificar a que ponto este aspecto evoluiu, tanto na
memria principal, como na memria secundria:
no que diz respeito memria principal, o Altair 8800, primeiro microcomputador pessoal produzido em 1974,
possua memria RAM de 256 Kbyte, o IBM-PC quando lanado, j era mais "bem dotado", com uma RAM de 640
Kbyte; os PCs da linha 386, lanados em 1991, vinham de fbrica com memria de 2 ou 4 Mbyte; atualmente, um
microcomputador da linha Pentium deve vir com uma configurao mnima de memria de 32 Mb;
como j foi mencionado no captulo anterior, os microcomputadores, ou computadores pessoais pioneiros no
vinham dotados de disco rgido, sendo que o usurio era obrigado a manter suas informaes armazenadas em
Apostila de Arquitetura de Computadores II 4
disquetes de 5", com capacidade para armazenar at 360 Kbyte...em 1985, quando os IBM-XT foram lanados,
estes vinham equipados com discos rgidos de 2 a 5 Mbyte...em 1990, os microcomputadores da linha 386 vinham
equipados com discos rgidos na faixa entre 40 e 100 Mbyte... mais tarde, em 1995, os micros 486 eram adquiridos
com discos de 540 e 850 Mb em mdia... atualmente, um microcomputador Pentium adquirido com um disco de no
mnimo 2 Gbyte.
2.3. Dispositivos de entrada/sada
Conhecidos tambm como I/O (de Input/Output), so os elementos que possibilitam a troca de dados entre o computador e
o seu ambiente (usurio, perifricos, outros equipamentos). Os perifricos mais utilizados nos computadores de uso geral
so o teclado, o mouse, as impressoras, o monitor de vdeo, etc. Os circuitos que possibilitam a troca de dados com o
ambiente externo ao computador so conhecidas sob o nome de portas de E/S, as quais podem implementar a transmisso
das palavras de dados segundo duas diferentes polticas:
a comunicao paralela, onde cada dgito (ou bit) da palavra de dados conduzido por um fio dedicado, o que
significa que os cabos utilizados para a comunicao paralela so dotados de uma grande quantidade de fios (ou
vias); o exemplo mais clssico de dispositivos que utilizam a comunicao paralela so as impressoras;
a comunicao serial, onde os bits de cada palavra so transmitidos um a um, de forma seqencial, atravs de uma
nica via, o que explica o fato dos cabos que implementam este tipo de comunicao serem constitudos por uma
pequena quantidade de fios; os exemplos mais conhecidos de dispositivos que fazem uso desta poltica de
comunicao so o mouse e os modems.
3. INVESTIGANDO OS MICROPROCESSADORES
Como j dissemos, desde o incio dos anos 70, os processadores ou microprocessadores, elementos de base dos
computadores, so produzidos em circuitos integrados. A figura 2.3 apresenta duas opes em termos de aspecto externo de
um microprocessador. De um ponto de vista interno, um microprocessador assume um aspecto mais prximo do que
apresentado na figura 2.4. nesta figura, apresentado o interior do 4004. Olhando para esta figura, j se pode imaginar o
quanto mais complexo pode ser o aspecto interno de um Pentium.

Figura 2.3 Formatos padro dos microprocessadores.
Figura 2.4 Aspecto interno de um microprocessador.
Apostila de Arquitetura de Computadores II 5
registro de
sada da ALU
A B
A + B
ALU
B
A
A + B
registros de
entrada da ALU
seo de
registros da
CPU
Unidade
de
Controle
Figura 2.5 Caminho de dados de um microprocessador.
Entretanto, como forma de explicar, ainda num nvel genrico, o funcionamento de um microprocessador, vamos considerar
como viso interna o diagrama apresentado na figura 2.5, o qual ser descrito a seguir.
3.1 As principais sees de um microprocessador
Na maior parte dos estudos dos microprocessadores, encontra-se uma diviso clssica de sua estrutura interna considerando
trs grandes unidades:
Unidade Lgica e Aritmtica ou ALU (para Aritmethic and Logic Unit), que assume todas as tarefas relacionadas
s operaes lgicas (ou, e, negao, etc...) e aritmticas (adies, subtraes, etc.) a serem realizadas no contexto
de uma tarefa realizada atravs dos computadores; as primeiras ALUs eram de concepo bastante simples,
realizando um conjunto relativamente modesto de operao, com operandos de pequena dimenso (no que diz
respeito ao tamanho da palavra)... com o passar do tempo, eles elementos foram tornando-se sofisticados para
suportar operaes mais complexas a maiores tamanhos de palavras de dados para permitir o grande potencial de
clculo oferecido pelos atuais microprocessadores;
Seo de Registros, que, como o nome indica, abriga o conjunto de registros dos microprocessadores, essenciais
para a realizao das instrues dos programas do computador; de forma mais superficial, pode-se subdividir o
conjunto de registros de um microprocessador em dois grupos: os registros de uso geral, utilizados para
armazenamento de operandos ou resultados de operaes executadas pelo microprocessador, os registros de controle,
utilizados como suporte execuo dos programas do computador;
Unidade de Controle a responsvel de tarefas nobres como a interpretao das instrues de mquina a serem
executadas pelo computador, a sincronizao destas instrues, o atendimento a eventos de hardware, etc. Esta
unidade assume toda a tarefa de controle das aes a serem realizadas pelo computador, comandando todos os
demais componentes de sua arquitetura, garantindo a correta execuo dos programas e a utilizao dos dados
corretos nas operaes que as manipulam. a unidade de controle quem gerencia todos os eventos associados
operao do computador, particularmente as chamadas interrupes, to utilizadas nos sistemas h muito tempo.
3.2. Os microprocessadores e a execuo de programas
Na seo anterior, vimos que a CPU considerada o "crebro" do computador. Ela encarregada da execuo dos
programas armazenados na memria central, atravs do carregamento das instrues, sua decodificao e execuo
seqencial. Ela composta de uma unidade de controle, responsvel do carregamento e decodificao das instrues e de
uma unidade lgica e aritmtica (ALU) que efetua operaes tais como a adio, a funo booleana "E" (AND), etc... A
CPU contm tambm uma memria de alta velocidade que permite o armazenamento de valores intermedirios ou
informaes de comando. Esta memria composta de registros, na qual cada registro tem uma funo prpria.
3.2.1. Papel dos registros na execuo das instrues
O registro mais importante da memria o contador de programa ou PC de (Program Counter), cuja funo armazenar
o endereo da instruo que deve ser executada num dado instante. O PC funciona como uma espcie de apontador, que
indica, a todo instante, em que posio de memria encontra-se a prxima instruo a executar. Por esta razo, este registro
identificado pela sigla IP (de Instruction Pointer).
Outro registro de importncia o registro de instrues ou IR (Instruction Register) que armazena o cdigo binrio da
instruo em execuo.
Apostila de Arquitetura de Computadores II 6
Os processadores contm ainda outros registros que permitem aos programadores o armazenamento de resultados
intermedirios.
3.2.2. A execuo de uma instruo
De forma simplificada, pode-se descrever os passos que envolvem a execuo de um programa, como realizada
internamente pela CPU:
O carregamento da instruo a executar para o registro de instruo;
O modificao do valor do contador de programa para que ele aponte a palavra de memria seguinte;
O decodificao da instruo armazenada no registro de instruo;
O localizao, em memria, dos eventuais valores utilizados pela instruo;
O carregamento dos dados, se necessrio, nos registros internos da CPU;
O execuo da instruo;
O armazenamento dos resultados em seus destinos respectivos;
O retorno ao passo O para execuo da instruo seguinte.
A esta seqncia de etapas, chamamos ciclo de carregamento-decodificao-execuo, que o ciclo de base no
funcionamento de todo processador. O fato de se poder escrever um programa que simule o comportamento de uma CPU
para execuo de instrues deixa clara a possibilidade de que um programa no seja executado unicamente pelo hardware,
mas tambm pelo software, num nvel superior da estrutura de um computador.
A estes programas, damos o nome de interpretadores e esta possibilidade vai ter grande importncia no momento de se
definir a arquitetura de um computador. Por exemplo, a definio de uma determinada linguagem associada a um
determinado nvel do computador vai estar intimamente ligada ao conhecimento de que ela seja executada pelo hardware
ou por um interpretador (software).
Apostila de Arquitetura de Computadores II 7
Captulo 2 - Conceituao Bsica
1. UMA CLASSIFICAO DAS ARQUITETURAS DE COMPUTADORES
1.1. Linguagem de Mquina e Tipos de Instruo
A realizao das tarefas a serem automatizadas por qualquer computador formalizada atravs de um programa, o qual, no
final da escala de produo, transforma-se num conjunto de bits que define as instrues de mquina que o
microprocessador deve executar.
As instrues executadas pela CPU podem ser organizadas em trs principais categorias:
as instrues registro-memria permitem o tratamento de dados armazenados em memria para transferi-los aos
registros da CPU. Estes dados podero, em seguida, ser tratados por outras instrues como dados de entrada da
ALU;
as instrues registro-registro se caracterizam pela transferncia de dados contidos nos registros da CPU aos
registros de entrada da ALU, a realizao de uma operao sobre estes dados e a transferncia do resultado para um
registro da CPU;
as instrues memria-memria obtm os operandos diretamente na memria e os armazenam nos registros de
entrada da ALU. Aps ter efetuado uma operao sobre os dados, o resultado ser armazenado em memria.
A linguagem de mquina constitui um conjunto de instrues capazes de ser executada por um dado microprocessador. O
conjunto de instrues varia muito de um microprocessador para outro, mas comum, no caso de famlias de
microprocessadores como (os microprocessadores da Intel, por exemplo) que um microprocessador suporte o conjunto de
instrues de seus predecessores. A linguagem de mquina de um microprocessador pode ter de 20 a 300 instrues. Um
grande nmero de instrues no necessariamente o melhor, sendo em muitos casos o contrrio.
1.2. Fluxo de Dados
Na organizao interna da CPU da figura 2.5 pode-se distinguir um fluxo de dados, formado pelos registros e a ALU. Os
valores armazenados nestes registros podem ser transferidos aos registros de entrada da ALU (por exemplo, os registros
identificados por A e B) durante a realizao de um tratamento de dados por parte desta.
A ALU responsvel das operaes de adio, subtrao e outras operaes sobre os dados de entrada. Os dados
correspondentes aos resultados destas operaes so armazenados no registro de sada da ALU e podem, em seguida, ser
transferidos para um outro registro da CPU antes de serem armazenados em memria.
O caminho dos dados um aspecto importante do funcionamento de uma CPU, pois ele vai definir o que uma mquina vai
poder efetuar em termos de operaes.
1.3. A Classificao de Flynn
Desde o incio dos trabalhos na rea da informtica, os fabricantes de computadores tentam construir mquinas mais
poderosas e, principalmente, mais velozes. Um caminho para atingir este objetivo a fabricao de componentes de maior
desempenho em termos de velocidade. No entanto, o que se tem visto que este caminho conduz, na maioria dos casos, a
uma srie de obstculos e limitaes.
No entanto, outras formas de se obter um melhor desempenho na execuo de programas podem ser resultado da prpria
poltica de concepo da arquitetura da mquina.
Segundo, Michael Flynn, um pesquisador e professor da Universidade de Stanford que, as arquiteturas de computador
podem ser assim classificadas:
SISD - Simples fluxo de Instrues, Simples fluxo de Dados
SIMD - Simples fluxo de Instrues, Mltiplos fluxos de Dados
MISD - Mltiplos fluxo de Instrues, Simples fluxos de Dados
MIMD - Mltiplos fluxos de Instrues, Mltiplos fluxos de Dados
1.3.1. As Mquinas SISD
A maioria das mquinas disponveis atualmente enquadram-se nesta classificao. As instrues so executadas de modo
sequencial, embora algum grau de paralelismo pode ser obtido neste caso, como por exemplo, atravs da tcnica de
pipelining. Uma mquina SISD pode ser caracterizada por mais de uma unidade funcional, sendo que estas sero
controladas por uma nica unidade de controle. O diagrama geral de funcionamento de uma mquina SISD apresentado
na figura 2.6.
1.3.2. As Mquinas SIMD
O caso mais tpico de mquinas enquadrando-se nesta classificao aquele das mquinas vetoriais. Estas mquinas, cujo
esquema de funcionamento geral ilustrado na figura 2.7, so caracterizadas por um conjunto de elementos de
processamento, supervisionados por uma mesma unidade de controle.
Apostila de Arquitetura de Computadores II 8
UC UP MM
FD FI
FI
Figura 2.6 Mquinas SISD.
UC
UP
FD
FI
FI
1
1
UP
FD
2
2
UP
FD
N
N
MM
1
MM
2
MM
N
FI
FI
FI
Figura 2.7 Mquinas SIMD.
UP
FI
1
UP2
UP
N
MM
1
MM
2
MM
N
FI
FI
UC
1
UC
2
UC
N
FD
FD
FI
FI
FI
1
2
N
FI
FI
FI
1
2
N
1 2 N
Figura 2.8 Mquinas MISD.
UP
FI
1
UP2
UP
N
FI
FI
UC
1
UC
2
UC
N
FI
FI
FI
1
2
N
FI
FI
FI
1
2
N
1
2
N
FD
1
FD
2
FD
N
MM
1
MM
2
MM
N
Figura 2.9 Mquinas MIMD.
Todas as unidades de processamento (UPs) recebem, por broadcast, o mesmo conjunto de instrues, sendo que as
operaes a serem realizadas no contexto de cada instruo envolvem um conjunto diferente de dados (para cada UP).
1.3.3. As Mquinas MISD
Estas so caracterizadas pela disponibilidade de n unidades de processamento, cada uma recebendo instrues distintas que
operam sobre um mesmo conjunto de dados. Os resultados (sada) de uma unidade de processamento podem ser a entrada
de uma outra unidade, compondo assim o que se denomina uma macropipe.
Na maioria das apresentaes da classificao de Flynn, esta categoria quase sempre omitida por ser considerada de
difcil implementao prtica, sendo que no se conhece nenhuma mquina que tenha adotado esta estrutura.
1.3.4. As Mquinas MIMD
Esta categoria de mquinas tem como principal ilustrao as mquinas a multiprocessadores, que so caracterizadas pela
existncia de mltiplas unidades de processamento, as quais executam diferentes programas, no caso (mltiplos fluxos de
instrues) sobre conjuntos distintos de dados.
Uma subclassificao destas mquinas relacionada com a intensidade das interaes entre as unidades de processamento
compondo estas mquinas. Os sistemas fortemente acoplados so aqueles onde as interaes entre as unidades de
processamento so de alta intensidade (frequncia). Em outro caso, as mquinas so ditas fracamente acopladas.
2. ALGUNS CONCEITOS RELACIONADOS AOS COMPUTADORES
Para finalizar, vamos apresentar uma descrio sucinta dos principais conceitos relacionados s arquiteturas de
computadores e ao funcionamento dos microproces-sadores. A lista de conceitos no exaustiva e muitos destes conceitos
sero aprofundados ao longo do curso, mas importante que se tenha uma apresentao inicial para o caso destes serem
citados nos captulos que seguem.
Apostila de Arquitetura de Computadores II 9
2.1. Arquitetura de Computadores
2.1.1. CPU
Sigla americana para Unidade Central de Processamento, ou microprocessador, que corresponde ao chip capaz de realizar
as instrues num computador. Exemplos mais recentes de CPU so o Pentium e Power PC.
2.1.2. Memria
Nome genrico dado a todo dispositivo de armazenamento dos computadores. Engloba as memrias RAM (Random Access
Memory), ROM (Read Only Memory). Outros dispositivos, como o disco rgido e os j obsoletos perifricos de carto
perfurado e fitas de papel podem tambm ser designados como memria (secundria).
2.1.3. Memria Cache
Classe de memria associada aos microprocessadores, utilizada para armazenar temporariamente parte dos dados e das
instrues manipuladas nos programas num dado instante. A disponibilidade de uma grande quantidade de memria cache
num computador propicia um ganho de desempenho na execuo dos programas.
2.1.4. Memria Virtual
Mecanismo implementado a nvel de sistemas operacionais que permite que sistemas computacionais contendo pouca
quantidade de memria de trabalho (RAM) possam executar programas mais exigentes em termos de memria. Neste
mecanismo, o sistema operacional aloca uma poro do disco rgido para fins de armazenamento do programa a ser
executado e seus dados. Esta poro constitui a memria virtual e a execuo do programa realizada pelo computador
graas troca de dados e instrues entre o disco e a memria RAM, numa operao denominada swap. A maior parte dos
sistemas operacionais atuais utiliza este recurso. No entanto, importante destacar que o uso de memria virtual, apesar de
permitir executar programas de grande porte, no permite a execuo dos programas com tanta eficincia quanto num
computador com configurao suficiente em termos de RAM.
2.1.5. Entradas/Sadas
Nome genrico dado a todo dispositivo relacionado comunicao entre o computador ou o microprocessador e os demais
elementos de seu ambiente. As operaes de comunicao entre computador e impressora ou microprocessador e as portas
seriais e paralelas so exemplos de operaes de E/S.
2.2. Microprocessadores
2.2.1. ALU
Ou Unidade Lgica e Aritmtica, a parte de um microprocessador responsvel pela realizao das operaes lgicas e
aritmticas embutidas nas instrues de um programa.
2.2.2. Unidade de Controle
Conjunto de componentes internos de um microprocessador que realizam as funes de controle do funcionamento de um
microprocessador. O mecanismo de execuo das instrues de um programa, o tratamento de interrupes, a sincronizao
de componentes, so exemplos de operaes atribudas a este elemento.
2.2.3. Registros
Elementos internos de um microprocessador que constituem uma memria interna deste componente. Os registros podem
ser acessveis pelo programa de usurio para fins de armazenamento temporrio de dados durante seu processamento, ou
ento pela Unidade de Controle que manipula estes registros para fins de controle da execuo de um programa.
2.2.4. Contador de Programa
Registro especfico dos microprocessadores que opera como um "apontador" para as instrues que esto armazenadas na
memria do computador. Os valores armazenados no PC (Program Counter) ou IP (Instruction Pointer) so endereos (ou
pores de endereos) que correspondem posio da prxima instruo a ser executada.
2.2.5. Registro de Instruo
Registro componente da Unidade de Controle dos microprocessadores responsvel do armazenamento do cdigo da
instruo que ser executada num dado instante. O valor do cdigo manipulado para fins de decodificao.
2.2.6. Stack
rea da memria do computador alocada para fins de armazenamento temporrio de dados. Exemplos de dados que
utilizam o stack so parmetros de subrotinas e endereos de retorno para a finalizao de subrotinas. O stack tambm
conhecido pela denominao de pilha, traduo para o Portugus do termo americano.
2.2.7. Stack Pointer
Registro especfico que funciona como apontador para a rea de stack. O SP pode ser acessado diretamente pelos
programas de aplicao do computador ou alterado automticamente em conseqncia da execuo de instrues de
manipulao (por exemplo, uma instruo de chamada ou de retorno de subrotina).
Apostila de Arquitetura de Computadores II 10
2.2.8. Barramento de dados
Corresponde s vias de comunicao entre a CPU e os demais elementos compondo a arquitetura de um computador. Como
o nome indica, este barramento utilizado para permitir a troca de dados bidirecional entre o microprocessador e os demais
elementos da arquitetura do computador como memria e dispositivos de E/S. O barramento de dados de um
microprocessador acessvel atravs de pinos presentes em seu chip. Os pinos compondo o barramento de dados de um
microprocessador podem ser identificados atravs de consulta ao manual do fabricante.
2.2.9. Barramento de endereos
O barramento de endereos de um microprocessador o conjunto de pinos presentes em sua interface atravs dos quais este
elemento informa aos demais componentes da arquitetura do computador os endereos nos quais uma operao de
comunicao ser realizada. Por exemplo, durante um ciclo de leitura em memria, um dos passos a colocao, neste
barramento, do endereo de memria onde est armazenado o dado a ser lido. Da mesma forma que no caso do barramento
de dados, os pinos deste barramento podem ser identificados atravs de consulta ao manual do fabricante.
2.2.10. Capacidade de endereamento
Est relacionada com a mxima quantidade de memria que um computador pode suportar. A capacidade de
endereamento uma propriedade do microprocessador que depende do tamanho (em nmero de bits) do barramento de
endereos. Quanto maior o tamanho do barramento de endereos, maior ser a capacidade de endereamento do
microprocessador.
2.2.11. Interrupo
Mecanismo implementado em praticamente todos os microprocessadores para o tratamento de eventos relacionados
operao de um computador. O mecanismo implica na possibilidade de interromper a execuo de uma seqncia de
instrues de programa para executar uma rotina de tratamento, a partir da ativao por hardware (modificao do estado
de um sinal digital num pino do microprocessador) ou por software (instruo especfica de chamada). A digitao de uma
tecla, a realizao de operaes de entrada sada, o tratamento de erros de sistema, so exemplos de eventos tratados
atravs do mecanismo de interrupo.
2.2.12. Pipelining
Mecanismo implementado em alguns microprocessadores mais recentes onde a execuo de instrues de um programa so
antecipadas de modo a se obter um melhor desempenho do sistema.
Apostila de Arquitetura de Computadores II 11
Captulo 3 - Nvel da Lgica Digital
3.1.CONCEITOS DE LGICA DIGITAL
3.1.1.CIRCUITOS LGICOS E GATES
Todos as complexas operaes de um computador digital acabam sendo combinaes de simples operaes aritmticas e
lgicas bsicas: somar bits, complementar bits (para fazer subtraes), comparar bits, mover bits. Estas operaes so
fisicamente realizadas por circuitos eletrnicos, chamados circuitos lgicos (ou gates - "portas" lgicas).
Computadores digitais (binrios) so construdos com circuitos eletrnicos digitais - as portas lgicas (circuitos lgicos).
Os sistemas lgicos so estudados pela lgebra de chaveamentos, um ramo da lgebra moderna ou lgebra de Boole,
conceituada pelo matemtico ingls George Boole (1815 - 1864). Boole construiu sua lgica a partir de smbolos,
representando as expresses por letras e ligando-as atravs de conectivos - smbolos algbricos.
A lgebra de Boole trabalha com apenas duas grandezas: falso ou verdadeiro. As duas grandezas so representadas por 0
(falso) e 1 (verdadeiro). Nota: nos circuitos lgicos do computador, os sinais binrios so representados por nveis de
tenso.
3.1.2. OPERADORES LGICOS
Os conectivos ou OPERADORES LGICOS ou FUNES LGICAS so:
- E (ou AND) - uma sentena verdadeira SE - e somente se - todos os termos forem verdadeiros;
- OU (ou OR) - uma sentena resulta verdadeira se QUALQUER UM dos termos for verdadeiro;
- NO (ou NOT) - este operador INVERTE um termo.
Os operadores lgicos so representados por:
____
NOT --> (uma barra horizontal sobre o termo a ser invertido ou negado).
E ------> . (um ponto, como se fosse uma multiplicao)
OU ----> + (o sinal de soma)
3.1.3. TABELA VERDADE
So tabelas que representam todas as possveis combinaes das variveis de entrada de uma funo, e os seus respectivos
valores de sada.
A seguir, apresentamos as funes bsicas, e suas representaes em tabelas-verdade.
AND - FUNO E
OR - FUNO OU
Apostila de Arquitetura de Computadores II 12
Nota: A menos da estranha expresso 1 + 1 = 1, as demais expresses "parecem" a aritmtica comum a que estamos
acostumados, onde E substitui "vezes" e OU substitui "mais".
FUNO NOT
Obs.: a inverso em binrio funciona como se fizssemos 1 - A = X. Ou seja, 1 - 0 = 1 e 1 - 1 = 0.
3.1.4. APLICAO DA LGEBRA DE BOOLE AOS COMPUTADORES DIGITAIS
Boole desenvolveu sua lgebra a partir desses conceitos bsicos e utilizando apenas os algarismos 0 e 1. Os primeiros
computadores fabricados, como o ENIAC, trabalhavam em DECIMAL. No entanto, a utilizao de circuitos eletrnicos que
operassem com 10 diferentes nveis de tenso (para possibilitar detectar as 10 diferentes grandezas representadas no
sistema decimal) acarretavam uma grande complexidade ao projeto e construo dos computadores, tendo por conseqncia
um custo muito elevado. Surgiu ento a idia de aplicar a lgebra de Boole, simplificando extremamente o projeto e
construo dos computadores.
Mas como os conceitos da lgebra de chaveamentos (um ramo da lgebra do Boole) so aplicados ao projeto dos
computadores digitais?
A chave de tudo um circuito eletrnico chamado CHAVE AUTOMTICA. Como funciona uma chave automtica?
Vamos imaginar um circuito chaveador com as seguintes entradas:
- uma fonte de alimentao (fornece energia para o circuito)
- um fio de controle (comanda a operao do circuito)
- um fio de sada (conduz o resultado)

No desenho, a chave permanece aberta enquanto o sinal C no fio de controle for 0 (ou Falso). Enquanto no houver um
sinal (sinal 1 ou Verdadeiro) no fio de controle, que mude a posio da chave, o sinal no fio de sada S ser 0 (ou Falso).
Quando for aplicado um sinal (sinal 1 ou Verdadeiro) ao fio de controle, a chave muda de posio, tendo como resultado
que o sinal na sada ser ento 1 (ou Verdadeiro). A posio da chave se manter enquanto no ocorrer um novo sinal na
entrada.
A chave automtica foi inicialmente implementada com rels eletromecnicos e depois com vlvulas eletrnicas. A partir
da metade da dcada de 50, passaram a ser utilizados dispositivos em estado slido - os TRANSISTORES, inventados em
Stanford em 1947. Os modernos Circuitos Integrados - CI's e os microprocessadores so implementados com milhes de
transistores "impressos" em minsculas pastilhas.

Apostila de Arquitetura de Computadores II 13
Vamos agora analisar o que ocorreria se ns ligssemos em SRIE duas chaves automticas como as acima, e ligssemos
uma lmpada ao circuito. O circuito resultante poderia ser representado assim:
A lmpada acenderia SE - e somente se - as DUAS chaves estivessem na posio LIGADO (ou verdadeiro), o que seria
conseguido com as duas entradas A e B em estado 1 (Verdadeiro). Substituindo CORRENTE (ou chave ligada) por 1 e
AUSNCIA DE CORRENTE (ou chave desligada) por 0, como ficaria nossa tabela verdade para LMPADA LIGADA = 1
e LMPADA DESLIGADA = 0?

A B F
0
0
0
1
</DIV>
D para reconhecer a nossa j familiar FUNO E?
O circuito acima que implementa a funo E chamado de PORTA E (AND GATE).
Vamos agora analisar o que ocorreria se ns ligssemos em PARALELO duas chaves automticas como as acima, e
ligssemos uma lmpada ao circuito. O circuito resultante poderia ser representado assim:
A lmpada acenderia SE QUALQUER UMA DAS-CHAVES estivesse na posio LIGADO (ou verdadeiro), o que seria
conseguido com uma das duas entradas A ou B em estado 1 (Verdadeiro). Substituindo CORRENTE (ou chave ligada) por
1 e AUSNCIA DE CORRENTE (ou chave desligada) por 0, como ficaria nossa tabela verdade para LMPADA LIGADA
= 1 e LMPADA DESLIGADA = 0?
A B L
0 0 0
0 1 1
1 0 1
Apostila de Arquitetura de Computadores II 14
1 1 1
</DIV>
E agora, d para reconhecer a nossa j familiar FUNO OU?
O circuito acima, que implementa a funo OU, chamado de PORTA OU (OR GATE).
3.1.5.PORTA LGICA OU GATE
So dispositivos ou circuitos lgicos que operam um ou mais sinais lgicos de entrada para produzir uma (e somente uma)
sada, a qual dependente da funo implementada no circuito.
Um computador constitudo de uma infinidade de circuitos lgicos, que executam as seguintes funes bsicas:
a) realizam operaes matemticas
b) controlam o fluxo dos sinais
c) armazenam dados
Existem dois tipos de circuitos lgicos:
a. COMBINACIONAL - a sada funo dos valores de entrada correntes; esses circuitos no tem
capacidade de armazenamento [casos a) e b) acima].
b. SEQUENCIAL - a sada funo dos valores de entrada correntes e dos valores de entrada no instante
anterior; usada para a construo de circuitos de memria (chamados "flip-flops" - caso c acima);
esses circuitos no sero estudados neste curso, mas apresentamos uma breve introduo no final do
captulo.
3.2. CIRCUITOS LGICOS
3.2.1.PORTAS BSICAS
PORTA NOT (NO)
A porta NOT inverte o sinal de entrada (executa a NEGAO do sinal de entrada), ou seja, se o sinal de entrada for 0 ela
produz uma sada 1, se a entrada for 1 ela produz uma sada 0.
PORTA AND (E)
A porta AND combina dois ou mais sinais de entrada de forma equivalente a um circuito em srie, para produzir um nico
sinal de sada, ou seja, ela produz uma sada 1, se todos os sinais de entrada forem ; caso qualquer um dos sinais de entrada
for 0, a porta AND produzir um sinal de sada igual a zero.
Apostila de Arquitetura de Computadores II 15
PORTA OR (OU)
A porta OR combina dois ou mais sinais de entrada de forma equivalente a um circuito em paralelo, para produzir um nico
sinal de sada, ou seja, ela produz uma sada 1, se qualquer um dos sinais de entrada for igual a 1; a porta OR produzir um
sinal de sada igual a zero apenas se todos os sinais de entrada forem 0.
PORTA NAND (NO E)
A porta NAND equivale a uma porta AND seguida por uma porta NOT, isto , ela produz uma sada que o inverso da
sada produzida pela porta AND.
PORTA NOR (NO OU)
A porta NOR equivale a uma porta OR seguida por uma porta NOT, isto , ela produz uma sada que o inverso da sada
produzida pela porta OR.
PORTA XOR (OU EXCLUSIVO)
A porta XOR compara os bits; ela produz sada 0 quando todos os bits de entrada so iguais e sada 1 quando pelo menos
um dos bits de entrada diferente dos demais.
Apostila de Arquitetura de Computadores II 16
Exemplo de circuitos utilizando portas lgicas:
A) Uma campainha que toca (sada) se o motorista der a partida no motor do carro (entrada) sem estar com o cinto de
segurana afivelado (entrada). Se a ignio for ACIONADA (1) e o cinto estiver DESAFIVELADO (1), a campainha
ACIONADA (1). Caso contrrio, a campainha no toca. Tabela Verdade:
Ignio Cinto Campainha
0 0 0
0 1 0
1 0 0
1 1 1
</DIV>
Basta incluir uma porta AND.
B) Detector de incndio com vrios sensores (entradas) e uma campainha para alarme (sada). Se QUALQUER UM dos
sensores for acionado (significando que um dos sensores detectou sinal de incndio), a campainha ACIONADA. Tabela
verdade:
Sensor 1 Sensor 2 Campainha
0 0 0
0 1 1
1 0 1
1 1 1
</DIV>
Basta incluir uma porta OR.
3.3. LGEBRA DE BOOLE
As operaes bsicas da lgebra de Boole so:
3.3.1.AVALIAO DE UMA EXPRESSO BOOLEANA
Uma expresso booleana uma expresso formada por sinais de entrada (chamados variveis de entrada) ligados por
conectivos lgicos, produzindo como resultado um nico sinal de sada.
Na avaliao de uma expresso Booleana, dever ser seguida uma ordem de precedncia conforme a seguir definido:
1 - avalie NOT
2 - avalie AND
3 - avalie OR
Obs.: respeitando-se sempre os parnteses!
Ex.: Avalie a expresso:
Apostila de Arquitetura de Computadores II 17
3.3.2. EQUIVALNCIA DE FUNES LGICAS
Duas funes Booleanas so equivalentes se - e somente se - para a mesma entrada, produzirem iguais valores de sada .
PORTANTO, DUAS FUNES LGICAS EQUIVALENTES TM A MESMA TABELA VERDADE.
Ex.: Verifique se as funes lgicas a seguir representam funes equivalentes:
3.3.3.PROPRIEDADES DA LGEBRA DE BOOLE
Exerccio: Simplifique a seguinte expresso:
3.3.4.PROPRIEDADES DA FUNO EXCLUSIVE OR (XOR)
Apostila de Arquitetura de Computadores II 18
3.4.REPRESENTAO DE CIRCUITOS COM AS FUNES NAND E NOR
Usando as propriedades apresentadas, todo e qualquer circuito pode ser representado usando exclusivamente as funo
NAND ou as funo NOR.
Para que serviria tal artimanha, alm da dor de cabea aos estudantes? H neste caso uma razo maior que a comodidade
ou a aparente dificuldade: a razo econmica. Por diversas razes construtivas, fica mais barato construir TODOS os
circuitos de um computador usando APENAS UM NICO TIPO DE CIRCUITO. Aceitando essa afirmao, vamos
enfrentar a tarefa de represntar os nossos circuitos j conhecidos usando apenas funes NAND ou os NOR.
a) CIRCUITO INVERSOR
b) CIRCUITO AND
c) CIRCUITO OR
Apostila de Arquitetura de Computadores II 19
Exerccio:
Escreva a expresso do circuito abaixo e simplifique.
Soluo:
Este circuito implementa a funo XOR, usando apenas portas NAND!
3.5.FORMAS CANNICAS
3.5.1.REPRESENTAO DE UM CIRCUITO ATRAVS DE UMA TABELA VERDADE
Os circuitos de um computador realizam funes de grande complexidade, cuja representao geralmente no bvia. O
processo para realizao de uma funo atravs de um circuito comea na descrio verbal do circuito (descrio do
comportamento de suas possveis sadas, em funo das diversas combinaes possveis de seus sinais de entrada), a partir
do que possvel montar sua tabela verdade.
Exemplos:
1) Considere um circuito eltrico composto de uma fonte de energia comercial (a alimentao da empresa de distribuio
de energia, p.ex., a CEB) e um interruptor (nossas entradas ) e uma lmpada (nossa sada). A lmpada acender se - e
somente se - a) houver energia disponvel (se no estiver "faltando luz") e b) o interruptor estiver ligado. Elabore a tabela
Apostila de Arquitetura de Computadores II 20
verdade que representa esse circuito lgico.
2) Considere um sistema composto de duas caixas d'gua (uma superior e uma cisterna). A cisterna alimentada pela
entrada de gua da "rua", via empresa distribuidora (ex.: CAESB). A caixa superior serve para distribuir a gua, por
gravidade, em todo o prdio: bicas, chuveiros, descargas sanitrias, circuitos anti-incndio, etc, com a gua sendo
impulsionada por uma bomba hidrulica atravs de uma tubulao que liga a cisterna caixa superior. Considerando que a
bomba queimar se for acionada sem haver gua no circuito hidrulico, projete um circuito lgico para acionar a bomba
sempre que a caixa superior estiver vazia, desde que tenha gua na cisterna.
3) Considere um circuito eltrico composto de uma fonte de energia comercial (a alimentao da empresa de distribuio
de energia, p.ex., a CEB), uma alimentao auxiliar (um gerador e um no-break, com bateria de acumulao) e um
interruptor (nossas entradas ) e um sistema de computadores (nossa sada). O computador poder operar se: a) houver
energia disponvel (se no estiver "faltando luz") em um dos circuitos de alimentao e b) o interruptor estiver ligado.
Elabore a tabela verdade que representa esse circuito lgico.
3.5.2.FORMAS CANNICAS
A partir da tabela verdade produzida conforme item anterior, possvel chegar expresso que representa o
comportamento do circuito, e em seguida construir o circuito, usando as portas lgicas j estudadas. O processo de
elaborao da expresso usa as chamadas formas cannicas, que consistem em regras para representar as condies de
entrada que:
a) produziro sada 1 (e portanto as demais condies produziro sada 0) ou alternativamente,
b) produziro sada 0 (e portanto as demais condies produziro sada 1).
So portanto duas as formas cannicas: uma representa as condies que produzem sada 1 (SOMA DOS MINITERMOS) ,
a outra representa as condies que produziro sada 0 (PRODUTO DOS MAXITERMOS). Essas formas so alternativas,
isto , a expresso poder ser encontrada aplicando-se alternativamente UMA ou OUTRA das formas.
MINITERMO - so termos somente com AND (termos PRODUTO)
MAXITERMO - so termos somente com OR (termos SOMA).
3.5.3. SOMA DOS MINITERMOS
produzida construindo:
- um termo (uma sub-expresso) para cada linha da tabela verdade (que representa uma combinao de valores de
entrada) em que a sada 1,
- cada um desses termos formado pelo PRODUTO (FUNO AND) das variveis de entrada, sendo que:
------ quando a varivel for 1, mantenha;
------ quando a varivel for 0, complemente-a (funo NOT).
- a funo booleana ser obtida unindo-se os termos PRODUTO (ou minitermos) por uma porta OR (ou seja, "forando-
se" a sada 1 caso qualquer minitermo resulte no valor 1).
Dessa forma, ligando os termos-produto (tambm chamados minitermos) pela porta OR, caso QUALQUER UM dos
minitermos seja 1 (portanto, caso qualquer uma das condies de valores de entrada que produz sada 1se verifique), a
sada pela porta OR ser tambm 1. Ou seja, basta que se verifique qualquer uma das alternativas de valores de entrada
expressos em um dos minitermos, e a sada ser tambm 1, forada pelo OR. Caso nenhuma dessas alternativas se
verifique, produz-se a sada 0.
Exemplo:
D CLK Q
0 0
1 1
D
Q
Q
SET
CLR
Apostila de Arquitetura de Computadores II 21
3.5.4. PRODUTO DOS MAXITERMOS
produzida construindo:
- um termo (uma sub-expresso) para cada linha da tabela verdade (que representa uma combinao de valores de
entrada) em que a sada 0,
- cada um desses termos formado pela SOMA (FUNO OR) das variveis de entrada, sendo que:
------ quando a varivel for 0, mantenha;
------ quando a varivel for 1, complemente-a (funo NOT).
- a funo booleana ser obtida unindo-se os termos SOMA (ou maxitermos) por uma porta AND (ou seja, "forando-
se" a sada 0 caso qualquer minitermo resulte no valor 0).
Dessa forma, ligando os termos-soma (tambm chamados maxitermos) pela porta AND, caso QUALQUER UM dos
minitermos seja 0 (portanto, caso qualquer uma das condies de valores de entrada que produz sada 0 se verifique), a
sada pela porta AND ser tambm 0. Ou seja, basta que se verifique qualquer uma das alternativas de valores de entrada 0
expressos em um dos maxitermos, e a sada ser tambm 0, forada pelo AND. Caso nenhuma dessas alternativas se
verifique, produz-se a sada 1.
Exemplo:
O MESMO COMPORTAMENTO (A MESMA TABELA VERDADE) PODE SER IGUALMENTE
REPRESENTADA POR QUALQUER DAS FORMAS CANNICAS.
Exemplo:
Apostila de Arquitetura de Computadores II 22
Se ambas as formas cannicas produzem expresses equivalentes, como escolher qual a representao a utilizar? Escolha a
que resultar em menor nmero de termos, produzindo uma expresso mais simples. Por esse mtodo, pode-se encontrar a
expresso que represente qualquer tabela verdade.
Aps se encontrar uma expresso que represente o comportamento esperado, possvel que no seja uma expresso
simples que possa ser construda com poucas portas lgicas. Antes de projetar o circuito, til SIMPLIFICAR a expresso,
de forma a possibilitar construir um circuito mais simples e portanto mais barato.
Portanto, o fluxo de nosso procedimento ser:
DESCRIO VERBAL ---> TABELA VERDADE ---> FORMA CANNICA --->
--->FUNO SIMPLIFICADA ---> CIRCUITO
3. 6. MAPA DE KARNAUGH
O Mapa de Karnaugh uma ferramenta de auxlio minimizao de funes booleanas. O prprio nome mapa vem do fato
dele ser um mapeamento biunvoco a partir de uma tabela-verdade. Vejamos como feito este mapeamento.
3.6.1. <BIG><BIG>Mapa de Karnaugh para 1 Varivel</BIG></BIG>
Considere a tabela-verdade, j vista, de uma funo NOT,
A f(A) = A
0 1
1 0
Para se fazer um Mapa de Karnaugh a partir desta tabela-verdade, realiza-se a construo ilustrada na figura abaixo,
ou seja (veja que a varivel A, em verde, est indicando que a funo em questo s possui uma varivel independente):
1. Acrescenta-se mais uma coluna tabela-verdade original. Esta coluna tem por funo enumerar as
linhas, a partir de zero (0).
2. Constroi-se tantos quadrculos quantas forem as linhas da tabela-verdade, enumerando-os com o
nmero da linha correspondente no canto superior esquerdo de cada quadrculo (nmeros em preto).
3. Coloca-se os valores das variveis do lado de fora de cada quadrculo (nmeros em azul).
4. Coloca-se os valores da funo no centro de cada quadrculo, respeitando-se o nmero da linha
correspondente (nmeros em vermelho).
3.6.2. <BIG><BIG>Mapa de Karnaugh para 2 Variveis</BIG></BIG>
Veja para funo de duas varveis (por exemplo, a funo AND),
Apostila de Arquitetura de Computadores II 23
3.6.3. <BIG><BIG>Mapa de Karnaugh para 3 Variveis</BIG></BIG>
Para funes de trs variveis independentes,
3.6.4. <BIG><BIG>Mapa de Karnaugh para 4 Variveis</BIG></BIG>
Para funes de quatro variveis independentes,
Note que, a partir do Mapa de Karnaugh para funes trs ou mais variveis independentes, h uma anotao das filas
(linhas ou colunas) de quadrculos onde a varivel independente no muda de valor. Tambm observe que, de uma fila de
quadrculos para outra fila, s h uma mudana de valor nas variveis. Observe que a ordem de numerao das linhas e
colunas, representativas de combinaes de variveis, obedece o Cdigo de Gray (Gray Code), s vezes chamado de Cdigo
Refletido.
Apostila de Arquitetura de Computadores II 24
<BIG><BIG>Exemplos de Uso</BIG></BIG>
Ex.1 - Considere a seguinte funo lgica de duas variveis, F(A,B),
Do lado da equao booleana, e pelo Teorema 11, visto anteriormente, a reduo evidente. Do lado do Mapa de
Karnaugh, os dois quadrculos contguos, contendo o valor lgico 1 cada, indicam que:
1A varivel A no muda de valor lgico nos dois quadrculos contendo o valor lgico 1 da funo F (1 acima da tabela):
mantenha a varivel A.
2A varivel B muda de valor lgico nos dois quadrculos contendo o valor lgico 1 da funo F (0 e 1 esquerda da
tabela): elimine a varivel B.
Ex.2 - Considere, agora, a funo de trs variveis, F(A,B,C),
Por no ser trivial a concluso obtida com o mapa de Karnaugh, a segue a prova,
Como pode ser visto, o mapa de Karnaugh uma ferramenta eficiente para simplificar funes booelanas.
Uma simplificao algbrica alternativa da funo acima fica como exerccio. Note que no mapa de Karnaugh acima, os
quatro quadrculos contguos (linha 0 - coluna 11; linha 0 - coluna 10; linha 1 - coluna 11; linha 1 - coluna 10),
contendo o valor lgico 1 cada, indicam que a varivel A no muda de valor lgico nos quatro quadrculos contendo o valor
lgico 1 da funo F. Esta a razo de manter-se a varivel A (primeiro termo da simplificao). A varivel A muda de
valor lgico nos dois quadrculos contendo o valor lgico 1 da funo F: elimine a varivel A, mantendo B e C
complementadas (segundo termo da simplificao).
Ex.3 - Considere, agora, a funo lgica do exemplo 2. Faremos sua minimizao atravs do conceito de maxtermos. Para
isso, complete as lacunas com o dgito 0,
Apostila de Arquitetura de Computadores II 25
Note que, agora, estamos destacando os 0's adjacentes, e no os 1's adjacentes, como no exemplo 2. Para melhor
compreenso do que isso significa, construa a tabela verdade da funo F e tambm de sua negao, F',
A B C F F' Mintermos Maxtermos
0 0 0 1 0 m
0
=A'B'C' M
0
=A+B+C
0 0 1 0 1 m
1
=A'B'C M
0
=A+B+C'
0 1 0 0 1 m
3
=A'BC' M
0
=A+B'+C
0 1 1 0 1 m
4
=A'BC M
0
=A+B'+C'
1 0 0 1 0 m5=AB'C' M0=A'+B+C
1 0 1 1 0 m6=AB'C M0=A'+B+C'
1 1 0 1 0 m
7
=ABC' M
0
=A'+B'+C
1 1 1 1 0 m
8
=ABC M
0
=A'+B'+C'
Donde voc pode concluir que os mintermos (ou maxtermos) que aparecem em F no aparecem em F', e vice-versa,
Significa que minimizar a funo F, via mintermos, equivalente a minimizar sua negao, F', via maxtermos. Se voc
minimizar F', via mapa de Karnaugh atravs de mintermos, e, ento, calcular F (negando F'), voc tambm resolveu o
problema do exemplo 2. O mapa de Karnaugh para F' ,
3.7.CONSTRUO DE CIRCUITOS REAIS DE COMPUTADORES
3.7.1.CIRCUITOS ARITMTICOS
Vamos lembrar a aritmtica de ponto fixo, para a soma de dois bits.
0 + 0 = 0
0 + 1 = 1
Apostila de Arquitetura de Computadores II 26
1 + 0 = 1
1 + 1 = 0 e vai um
Se houver vai um na soma anterior, teremos:
vem 1 + 1 + 1 = 1 e vai um
Lembram-se do algoritmo da soma? Para somar dois nmeros (em qualquer base, binrios ou no), soma-se os algarismos
dos nmeros, coluna a coluna, transportando o "vai um" para a prxima coluna, quando for o caso.
Como fazemos para somar dois nmeros de n algarismos?
Na prtica, representamos os dois nmeros a serem somados, um sobre o outro, e somamos coluna a coluna; quando o valor
da soma de dois algarismos supera a base, somamos um prxima coluna (isto , fazemos resultado + base, sendo base
igual a 10 para qualquer base). O "VAI UM" de uma coluna (uma ordem) o "VEM UM" da prxima coluna. Fcil? No?
Se a explicao complicou, basta vermos um exemplo prtico para concluir o quanto simples:
NA BASE 10 NA BASE 2 NA FORMA GERAL, somando A + B
110 11010 Ci4.Ci3.Ci2..Ci1. "vem 1" (carry in)
085 01101 ......A3..A2...A1...A0 parcela
+16 01101 ......B3..B2....B1...B0 parcela
101 11010 ......R3...R2...R1...R0 soma
011 01101 ....Co3.Co2..Co1.Co0 "vai 1" (carry out)
Bom, difcil no pode ser, j que vimos fazemos somas desse jeito desde o curso primrio...
E para fazer uma subtrao? Lembrando tambm o estudado anteriormente,
UMA SUBTRAO UMA SOMA EM COMPLEMENTO! Ou seja,
A - B = A + ( - B)
No computador, fazemos a subtrao atravs de uma soma em complemento.
E a multiplicao? A multiplicao obtida de duas formas: por somas sucessivas (por exemplo, A + A = 2A) e pela
movimentao de bits. Lembremo-nos que quando quando queremos multiplicar um nmero decimal por 10, basta
acrescentar um zero direita do nmero. Como nesse caso a base 10, isso equivale a MULTIPLICAR PELA BASE.
Generalizando, para multiplicar um nmero pela base, basta acrescentar um zero direita do nmero, ou seja, movemos
todos os algarismo de um nmero para a esquerda de uma posio (uma ordem de grandeza), preenchendo a ltima ordem
direita (que ficaria vaga) com um zero. Isso, portanto, equivale a multiplicar esse nmero pela base.
Por exemplo, na base 10, tomando 50 e fazendo 500 (movendo 50 para a esquerda uma posio e colocando um zero para
preencher a posio mais direita) equivale a multiplicar 50 por 10 (a base)!
Idem na base 2: 100 x 10 = 1000
Ateno: devemos ler esse nmero como: um zero zero vezes um zero = um zero zero zero. Para ficar ainda mais claro,
vamos lembrar que, passando para decimal, 100(2) 4(10), 10(2) 2(10) e portanto teramos em decimal: 4 x 2 = 8). Lembrem-se:
10 s dez em decimal! Agora, sempre que estivermos usando uma base diferente de 10, vamos sempre ler 10 como um-
zero! E como base decimal no usada em computadores digitais, DEZ, a partir de agora, fica banido de nosso vocabulrio!
As mesmas propriedades, aplicadas no sentido contrrio, valem para a diviso! Desta forma, podemos ver que
O COMPUTADOR PODE REALIZAR TODAS AS OPERAES ARITMTICAS
USANDO APENAS SOMAS!
Com esta introduo, podemos agora estudar alguns exemplos dos circuitos aritmticos usados em computadores.
3.7.2 CIRCUITO MEIO-SOMADOR (HALF ADDER)
O circuito meio-somador SOMA DOIS BITS (sem levar em conta bit de carry).
Entrada - os dois bits a serem somados - A e B
Apostila de Arquitetura de Computadores II 27
Sada - a soma dos bits e o bit de carry out ("vai um") - S e Co
Como descrevemos anteriormente, uma funo lgica produz uma e apenas uma sada. Portanto, sendo duas as sadas,
sero necessrias duas funes diferentes, ou um circuito composto, podendo haver interseo de portas lgicas.
c. Construir a tabela
d. Forma cannica
e. Simplificao (no h o que simplificar)
d. Circuito
3.7.3. CIRCUITO SOMADOR COMPLETO (FULL ADDER)
O circuito somador completo SOMA DOIS BITS (considerando na soma o bit de carry in que veio da soma anterior).
Entrada - os dois bits a serem somados e o bit de carry in - A, B e Ci
Sada - a soma dos bits e o bit de carry out ("vai um") - S e Co
a. Construir a tabela
b. Forma cannica
c. Simplificao
Entrada
Sadas
Seleo
Demultiplexador
Apostila de Arquitetura de Computadores II 28
d. Circuito
e. Representao esquemtica
3.8. CIRCUITOS ARITMTICOS - CONSTRUO DE UMA MINI-UAL
MINI UAL (um circuito capaz de fazer somas e subtraes de dois nmeros)
Vamos construir uma mini-UAL para nmeros de 4 bits; o mesmo esquema pode ser usado para UAL's de 8 bits, 16 bits,
etc.
Apostila de Arquitetura de Computadores II 29
SOMADOR
A entrada do somador receber 8 bits, sendo quatro bits de cada nmero (A e B) a ser somado, variando de 0000 a 1111(2)
ou, se representarmos na base 10, de 00 a 15 (10).
A sada ter tambm 4 bits para o resultado da operao matemtica (soma). Porm, existe a possibilidade de que a soma
ultrapasse a capacidade do nosso somador (neste caso, 4 bits). Para isso, precisamos incluir um 5 bit, um bit de overflow.
Como so 2 variveis, cada uma com 4 bits, teramos 2
4
= 16 combinaes para cada varivel = 16 x 16 = 256 (tambm
podemos fazer 2 variveis por 8 bits = 2
8
= 256) combinaes possveis, dando sada a 5 bits. Bem, isso resultaria em uma
tabela verdade BEM GRANDINHA que daria "UM POUCO" de trabalho para solucionar ... Quem quiser se aventurar,
asseguro que daria um bom exerccio ... fsico.
Bom, sorte nossa que isso pode ser evitado. Basta nos lembrarmos de como o algoritmo da soma.
Assim, usando o circuito somador completo que construimos anteriormente, podemos ligar vrios somadores completos em
cascata (sem "cascatas") e assim conseguir um somador de n bits. Bastaria ligar cada par de bits da entrada (A0 e B0, A1 e
B1, etc) s entradas de cada somador, e ligar os somadores cada um ao seguinte ... pelos bits de carry! O carry out de um
somador ento o carry in do prximo!
Esquematicamente, o circuito ficaria como segue:
Obs.: Como o somador de entrada no deve receber nenhum bit de carry in, preciso forar que o Ci desse
somador seja zero.
Repare que todos os circuitos so alimentados ao mesmo tempo, mas seu funcionamento deve ser seqencial, porque o Ci
que entrada de um circuito um resultado do processamento no circuito anterior ( o Co do anterior).
3.8.1.TRATAMENTO DA SUBTRAO
Levando em conta um bit extra para sinalizar a operao, podemos ter uma soma ou uma subtrao. Para construir a
subtrao, vamos tambm usar uma propriedade j conhecida:
UMA SUBTRAO UMA SOMA EM COMPLEMENTO! Ou seja,
A - B = A + ( - B)
O algoritmo de complemento em binrio tambm conhecido, e bastante simples de implementar:
Conforme anteriormente convencionamos,
para POSITIVO (OU SOMA), S = 0
para NEGATIVO (OU SUBTRAO), S = 1.
Portanto, para diferenciar de soma ou subtrao, fazemos:
se S = 0 ---> B (MANTM O VALOR DO BIT)
se S = 1 ---> B (COMPLEMENTA O BIT)
Ento, fazendo a tabela verdade para mostrar esse comportamento, teremos:
Apostila de Arquitetura de Computadores II 30
que uma funo XOR. Portanto, para resolver a subtrao, basta incluir portas XOR tendo como entradas B0 ...
Bn e S.
3.8.2.TRATAMENTO PARA COMPLEMENTO A 2
At agora, estamos fazendo a operao em complemento a 1 (C1). Se quisermos fazer em complemento a dois
(C2), basta somar um ao complemento a um (e no somar nada quando no for feito o complemento). Ou seja:
se for uma soma (portanto o sinal zero), nada precisa ser feito;
se for subtrao (portanto o sinal um), e portanto uma soma em complemento, basta somar 1 ao complemento a
1.
Isso pode ser conseguido SOMANDO O SINAL na entrada (Ci), pois caso o sinal seja 0 (soma) nada ser feito e caso o
sinal seja 1 (significando uma subtrao, portanto B deve ser complementado) ento ser somado 1 na entrada.
3.8.3.TRATAMENTO DE OVERFLOW
Caso na ltima coluna da soma resulte valor maior que a base-1, haver overflow. Como nossa representao s
vai at o quarto bit, necessrio sinalizar a ocorrncia do overflow para sinalizar resultados errados.
O algoritmo estudado (ver Representao em Ponto Fixo) diz:
SE houver VAI UM para o penltimo bit (C3=1) E TAMBM para o ltimo bit (C4=1) OU
SE no houver VAI UM para o penltimo bit (C3=0) NEM PARA o ltimo bit (C4=0)
NO H OVERFLOW
SE houver VAI UM para o penltimo bit (C3=1) E NO para o ltimo bit (C4=0) OU
SE no houver VAI UM para o penltimo bit (C3=0) E SIM para o ltimo bit (C4=1)
H OVERFLOW
Construindo a tabela verdade, temos:
Analisando esta tabela verdade, podemos verificar que uma funo XOR entre C3 e C4.
Aplicando os circuitos de tratamento de subtrao em complemento a dois e de sinalizao de overflow ao
circuito somador, a seguir mostrado o circuito da mini-UAL.
Apostila de Arquitetura de Computadores II 31
3.9. FLIP-FLOP, REGISTRADORES E CONTADORES
3.9.1. INTRODUO
Vimos anteriormente o funcionamento de uma lgica combinacional, ou ainda, uma lgica para a qual a sada
pr-determinada de forma unvoca pelas entradas. Estes circuitos apresentam um grave problema, que a ausncia de
memria sobre os estados anteriores. Todo o desenvolvimento computacional e de comunicaes digitais est suportado
pela concepo de memria. Este computador onde voce est acessando este texto depende da existncia de contadores,
osciladores, somadores e toda uma lgica que depende, fundamentalmente, da existncia de conhecimento sobre os estados
anteriores do sistema em funo do tempo, ou seja, memria.
Existem distintos tipos de memria, porm, a lgica de todas elas est associada a circuitos oscilantes, chamados
de flip-flop, que podem alternar sua sada (estados flip ou flop, p.e.) em funo dos parmetros de entrada e do tempo
decorrido.
O conceito de tempo est associado a pulsos de um relgio (clock), que vai alternar estados entre 0 e 1, com uma
frequncia pr-determinada, e ser utilizado na propagao temporal da informao. O objetivo fundamental deste grupo de
experimentos a compreenso de como podemos armazenar informao em uma estrutura eletrnica, e como retransmitir
esta informao em tempos (pulsos de clock) posteriores.
3.9.2 - FLIP-FLOP
Uma memria de um bit o elemento fundamental para desenvolver qualquer outra memria. Estas memrias de um bit
podem "guardar" estados "1" (Q=1) ou estados "0" (Q=0). Uma estrutura bsica de uma memria, ainda no associada a
qualquer pulso externo de clock, pode ser obtida a partir de dois NANDs associados, conforme visto a seguir.
Como pode ser observado no esquema ao lado, existem duas sadas Q e
Q negado que realimentam a entrada. Esta realimentao associada aos NANDs faz
com que, independente dos valores de entrada, as nicas sadas possveis para esta
montagem so opostas entre s, ou seja, os valors de Q e Q negado sero iguais a 0
e 1 ou 1 e 0, respectivamente.
Obtenha a tabela verdade do circuito ao lado
Se buscamos uma memria, desejamos que seja possvel escrever o valor na memria, no nos serve de nada uma
memria na qual no possamos controlar seu contedo! Uma das formas de controlar o contedo de uma memria
associar s entradas uma lgica inversora, utilizando ANDs. A utilizao dos ANDs permite que a memria fique estvel
em vrias situaes, i.e., mantendo seu valor, independente do que acontea na entrada. Somente quando o pulso de clock
(Ck) for positivo, que o sinal poder ser modificado dentro do flip-flop. Este flip-flop chamado de SR (set e reset),
explique por que dos nomes, a partir da discusso sobre sua tabela verdade.
Voc deve perceber, em sua anlise, que o flip-flop SR ainda apresenta situaes onde as entradas e os resultados
na sada so indefinidos. Uma das formas de corrigir este problema desenvolver outro tipo de flip-flop, chamado de JK,
onde as sadas realimentam as entradas.
3.9.2.1. Flip-Flop SR
O flip-flop SR sncrono segue a tabela-verdade abaixo:.
S R Ck Q
1 1 ^ Q
0
0 1 ^ 1
1 0 ^ 0
0 0 ^ Invlido
x x No Muda
Apostila de Arquitetura de Computadores II 32
3.9.2.2. Flip-Flop JK
O Flip-flop JK sncrono tem as seguintes caractersticas:
- entradas de controle no apresentam condio invlida;
- J = K = 1 resultam numa inverso do estado do Flip-Flop ^;
- seu funcionamento obedece a tabela-verdade abaixo
J K CLK Q
0 0 ^ Q
0
0 1 ^ 0
1 0 ^ 1
1 1 ^
___
Q0
3.9.2.3. Flip-Flop Tipo D
O D vem da palavra dados, o tipo de flip-flop mais utilizado. Possui uma arquitetura simples com uma entrada
D e um CLOCK. Este flip-flop resultado de dois latches D ligados de forma sequencial, onde suas entradas enable so
complementares. No flip-flop tipo D, o que interessa a transio negativa, e sempre que esta ocorre a sada atualizada.
Exerccio: dado o FF abaixo, operando no modo comutado, assuma Q = 0 inicialmente e determine a forma de onda Q.
3.9.4 - CONTADORES
Contadores so um dos dispositivos mais comuns, sejam em equipamentos eletrnicos autnomos, operando
como controladores de frequncia, geradores de rampa para conversores tipo ADC (analog to digital converter), qualquer
sistema de controle de transmisso de dados por rede, etc. Os contadores so baseados no uso de algumas propriedades de
memria dos flip-flops.
Como exemplo, vamos analisar a tabela verdade de um flip-flop JK. interessante observar que, quando estamos
utilizando um dispositivo que depende do tempo para operar, necessria uma definio de, em que tempo, ser analisada
a lgica de entrada do sistema. Imagine que um dos sinais de entrada de um flip-flop qualquer um sinal que apresenta
variaes temporais abruptas. Temos que definir onde se dar a anlise do tempo na lgica, i.e. onde os valores de entrada
sero analisados. Para tanto, em geral estes componentes dinmicos so sensveis variao da tenso, operando na borda
de subida ou de descida (mais frequente).
Isto significa que, todas as modificaes no valor do sinal sero desconsideradas, a menos que aconteam em um
intervalo de tempo curto, no qual (espera-se) que os dados no sofram modificaes, a fim de que a lgica possa ser
aplicada.
D
Q
Q
SET
CLR
1KHz
Apostila de Arquitetura de Computadores II 33
Um contador operando com flip-flops mostrado na figura abaixo.
Tabela-Verdade
flip-flop tipo JK
T J K Q
0 X X No muda
1 0 0 Q0
1 1 0 1
1 0 1 0
1 1 1
___
Q
0
O grfico a seguir exemplifica como o sistema ir operar, lembrando da tabela verdade e de que este flip-flop
sensvel borda de descida.
Discuta como se dar a contagem em funo do tempo para este contador de 3 bits, i.e., identifique quais sero os
valores obtidos, em funo dos valores de Q
0
a Q
02
.
Latch formado por NANDS
Esta a unidade bsica mais fundamental na montagem de um flip-flop.
Qual ser a tabela verdade para este circuito?
Antes de conectar os fios, que valores so possveis e impossveis nesta combinao? Existem valores
indeterminados?
A B Q
_
Q
0 0
0 1
1 0
1 1
Apostila de Arquitetura de Computadores II 34
3.9.5. MEMRIAS
A Arquitetura de uma RAM esttica apresenta as seguintes caractersticas:
- conjunto de registradores, cada um armazenando uma palavra de dados (dependendo do nmero de FFs que o compe)
e possuindo um nico endereo por registrador
- a capacidade medida por 1K x 4, 16K x 8, 32K x 16, 128M x 8
- Capacidade de RAM em um computador pode ser expandida pela combinao de chips (blocos).
A organizao interna de uma RAM 64x4 a seguinte:
Uma memria pode ser expandida de duas formas: expanso do tamanho da palavra e da capacidade de uma Memria.
Dificilmente, a capacidade e tamanho de palavra desejados podem ser obtidos utilizando um nico chip. Diversos chips so
combinados para fornecer a capacidade e tamanho de palavra desejados. A expanso do tamanho da palavra conseguida
com os chips ligados as mesmas linhas de endereo e controle e ligados as linhas de dados diferentes. A expanso da
capacidade realizada com a decodificao de endereos utilizando a entrada CS.
Na expanso do tamanho da palavra, desejvel um tamanho de palavra maior do que o disponvel. Os chips
necessrios para compor a palavra desejada so ligados as linhas de endereo e controle de forma que todos esto
selecionados ao mesmo tempo. As linhas de entrada/sada da RAM so ligadas as linhas de dados do processador, de forma
que cada chip seja responsvel por armazenar parte da palavra.
Decodificador 6 -
para - 64
A
5
A
4
A
3
A
2
A
1
A
0
Registrador 0
Registrador 1
Registrador 2
Registrador 61
Registrador 62
Registrador 63
0
1
2
61
62
63
Entrada de Dados
I
3
I
2
I
1
I
0
Buffers de
Entrada E
Buffers de
Sada E
O
3
O
2
O
1
O
0
Sada de Dados
R/W
0 - Escrita
1 - Leitura
CS - Seleo de Chip
1 - Habilita o chip para
leitura ou escrita
Entradas de
Endereo
Apostila de Arquitetura de Computadores II 35
Na expanso da capacidade de memria, o total de palavras armazenadas em cada chip disponvel no suficiente. A
combinao feita de forma que as linhas de entrada/sada dos chips sejam ligadas ao barramento de dados. Somente um
chip selecionado em um determinado instante de tempo. As linhas de endereo menos significativas so ligadas a todos os
chips. As linhas de endereo mais significativas so utilizadas para selecionar qual chip estar ativo (CS).
Outra possibilidade para a expanso da capacidade de memria a apresentada a seguir:
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
1
DB
4
DB
2
DB
3
DB
6
DB
7
DB
0
DB
5
R/W
CS
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
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;

Potrebbero piacerti anche