Buscar

Ebook Arquitetura de Computadores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 79 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 79 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 79 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
GUILHERME DAL PIZZOL
2ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
SUMÁRIO
CENTRO UNIVERSITÁRIO UNIFTEC
Rua Gustavo Ramos Sehbe n.º 107. 
Caxias do Sul/ RS 
REITOR
Claudino José Meneguzzi Júnior
PRÓ-REITORA ACADÊMICA
Débora Frizzo
PRÓ-REITOR ADMINISTRATIVO
Altair Ruzzarin
DIRETORA DE EDUCAÇÃO A DISTÂNCIA (NEAD)
Lígia Futterleib
Desenvolvido pelo Núcleo de Educação a 
Distância (NEAD)
Designer Instrucional 
Sabrina Maciel
Diagramação, Ilustração e Alteração de Imagem
Igor Zattera
Revisora
Ana Clara Garcia
INTRODUÇÃO 3
PROJETO DE CIRCUITOS DIGITAIS 4
Álgebra Booleana 6
Portas Lógicas e Circuitos Lógicos 10
Derivação de Expressões Booleanas 18
Simplificação de Expressões 20
Circuitos combinacionais 29
Circuitos sequenciais 33
ESTRUTURA INTERNA DE UM COMPUTADOR – MODELO DE VON NEUMANN 42
Blocos funcionais 45
COMPUTADOR HIPOTÉTICO NEANDER 60
ARQUITETURAS DE ALTO DESEMPENHO 69
3ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
INTRODUÇÃO
O estudo da arquitetura e da organização de computa-
dores está presente em todos os cursos superiores de ciência da 
computação, engenharia da computação e afins. Em alguns 
cursos o seu conteúdo é ministrado em até quatro disciplinas 
distintas, dado a grande gama de arquiteturas e diferentes formas 
de organização dos computadores (e também de dispositivos 
computacionais) atuais.
Além disso, estamos diante de uma disciplina fundamental 
para os cursos superiores tecnológicos, como o presente caso. 
Dessa forma, podemos pensar: como você pode tornar-se um 
exímio programador sem conhecer alguns detalhes de onde o 
seu programa será executado? É muito pertinente conhecer os 
detalhes de funcionamento do computador, pois levará você a 
entender quais os limites que seu programa poderá alcançar, 
ou até mesmo como deixá-lo mais eficiente. Assim como, pro-
porcionará importantes critérios que facilitarão o seu estudo de 
sistemas operacionais. 
Para tanto, nosso estudo iniciará por uma visão de alto 
nível do que seria um sistema computacional atual (você verá 
que o modelo que usamos hoje é bastante antigo). Logo, passare-
mos a imergir nos elementos que somados formam um modelo, 
desde as mais simples portas lógicas até os atuais dispositivos 
periféricos e os grandes computadores espalhados mundo afora.
No primeiro capítulo, teremos uma rápida revisão de ál-
gebra booleana, para depois fazermos o estudo da lógica digital 
mediante o uso de portas lógicas. Com o conhecimento obtido 
do estudo das portas lógicas passaremos a estudar circuitos 
combinacionais e sequenciais, que nada mais são que a junção 
de portas lógicas formando elementos de maior complexidade e 
diferentes finalidades. Ao final do capítulo, você deverá ser capaz 
de distinguir circuitos lógicos simples, simplificar expressões 
booleanas e até mesmo projetar um pequeno circuito lógico.
No segundo capítulo, estudaremos o modelo de Von 
Neumann e seus componentes principais: unidade central de 
processamento (CPU), a hierarquia de memória e alguns bar-
ramentos em conjunto com uma rápida abordagem sobre um 
dos principais dispositivos periféricos de entrada e saída, os 
discos rígidos.
No terceiro capítulo, estudaremos o funcionamento de 
um computador hipotético, chamado NEANDER (WEBER, 
XXXX). Através do simulador desse computador, você irá 
compreender de forma simples como um programa é executado 
no seu computador. 
Finalmente, no último capítulo, abordaremos um pouco 
sobre as grandes máquinas disponíveis ao redor do mundo e no 
que elas diferem de nossos computadores do dia a dia.
4ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
PROJETO DE 
CIRCUITOS DIGITAIS
Você sabia que todos os computadores 
utilizam aritmética binária para realizar suas 
operações?
Desde os mais remotos tempos, o homem sempre buscou 
formas de resolver cálculos matemáticos o mais rapidamente 
possível. Como você já deve ter estudado em outras disci-
plinas, evoluímos do ábaco chinês, passamos pelo ENIAC e 
hoje estamos na era da IoT (Internet of Things). Aprendemos 
e vivemos usando o sistema numérico decimal, e é com este 
que estamos acostumados em nosso dia a dia.
Contudo, quando trabalhamos com dispositivos com-
putacionais este sistema não é tão simples de ser utilizado 
diretamente. Precisamos armazenar ou guardar tal informação 
de alguma forma nos nossos dispositivos. Então, para cada 
dígito numérico precisaríamos ter 10 posições possíveis (0-9). 
Mesmo com a atual tecnologia digital disponível essa não seria 
uma tarefa simples, motivo pelo qual, em 1952, o matemático 
húngaro, radicado nos Estados Unidos, John Von Neumann, 
5ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
d. dispositivos de entrada e saída, de forma a permitir a entrada de dados e sua 
respectiva saída.
 Como mencionado anteriormente, o sistema binário faz parte do coração 
do modelo de Von Neumann e está presente, praticamente, em todos os sistemas 
computacionais modernos. Por esse motivo, nosso estudo terá início por uma breve 
abordagem da álgebra booleana, a qual nos permitirá avançar ao estudo das portas 
lógicas e posteriormente à formação dos elementos básicos da estrutura de Von Neu-
mann, a ULA e a UCP.
sugeriu que o sistema binário (0 – 1) fosse 
utilizado em sistemas digitais, devido a 
facilidade de identificação dos níveis de 
eletricidade (0 – ausência e 1 – presença 
de eletricidade).
Além disso, esse mesmo matemático 
propôs os elementos básicos de um sistema 
computacional “moderno”:
a. uma memória para armazenar dados 
e programas (os computadores até 
então não eram capazes de armaze-
nar programas);
b. uma unidade de cálculos, chamada 
de ULA – Unidade Lógico Arit-
mética, responsável por realizar as 
operações solicitadas pelo programa. 
Para tanto, utiliza registradores (ou 
acumuladores) para armazenar os 
dados;
c. uma unidade de controle, chamada 
de UCP – Unidade Central de Pro-
cessamento, cuja função primordial 
é comandar o f luxo entre as ins-
truções do programa e os dados na 
memória;
6ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
Álgebra Booleana
A álgebra dos números reais (do 
nosso dia a dia) utiliza infinitos valores 
para uma determinada variável. A álgebra 
booleana, por sua vez, utiliza apenas dois 
valores: 
• F (Falso) e V (Verdadeiro);
• L (Low) e H (High); 
• 0 e 1 (eletrônica digital).
O estudo da álgebra booleana foi 
iniciado ainda no século XIX e seu nome 
é uma homenagem a George Boole, ma-
temático inglês, introdutor do sistema al-
gébrico. Existe uma grande quantidade de 
teoria matemática desenvolvida na álgebra 
booleana, porém não é desta disciplina e 
não será tratada neste capítulo. O aluno 
que se interessar pode buscar esse conteúdo 
em diversos livros disponíveis gratuita-
mente na internet.
Na álgebra booleana existem três 
operações básicas, sendo que todas as de-
mais podem ser derivadas formalmente 
daquelas:
• Operação “OU” (“OR”), também 
conhecida por soma lógica;
• Operação “E” (“AND”), também 
conhecida por multiplicação lógica, 
e
• Operação “Complementação” 
(“NOT”), também conhecida por 
inversão ou negação.
Assim, como cada variável na álge-
bra booleana sempre irá assumir um dos 
dois possíveis valores (0 ou 1), para cada 
função ou equação algébrica também é 
possível montar uma tabela que decompõe 
a função em termos de suas variáveis (va-
riáveis de entrada). Além disso, demonstra 
os possíveis resultados (variável de saída), 
tendo por base cada uma dessas combina-
ções de variáveis. Dessa forma, tal tabela 
é chamada de “Tabela Verdade”. 
Logo, para a montagem da “Tabela 
Verdade” de operações simples, teremos 
tantas colunas quantas variáveis de en-
trada, além de uma coluna extra com o 
resultado da operação. As linhas, por sua 
vez, serão geradas de acordo com o número 
de diferentes combinações das variáveis 
de entrada. Por exemplo, se a expressão 
envolver duas variáveis de entrada teremos 
quatro linhas na tabela verdade. Com três 
variáveis de entrada teremos oito linhas e 
assimpor diante.
Lembre-se que estamos trabalhando 
com álgebra booleana, assim, o número 
de linhas sempre seguirá a exponenciação 
em base 2:
2 nº linhas = nº linhas na tabela verdade
Operação “OU” - (“OR”)
A operação “Ou” pode ser resumi-
da da seguinte forma: “A operação OU 
resulta 1 (verdadeiro) se pelo menos uma 
das entradas da operação tiver o valor 1 
(verdadeiro)”. Ou ainda, “a operação OU 
resulta 0 (falso) quando todas as suas en-
7ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
tradas tiverem o valor 0 (falso) ”.
O símbolo comumente utiliza-
do para representar a operação “ou” em 
equações/expressões algébricas é “+” ou 
ainda “v”. A operação deve ser realizada 
no mínimo com duas entradas (podem 
ser iguais). 
Sua tabela verdade para duas va-
riáveis, A e B (lê-se A “ou” B), pode ser 
visualizada a seguir:
Ou ainda com três variáveis, A, B 
e C (lê-se A “ou” B “ou” C):
A operação “ou” também é conhe-
cida por “soma lógica”.
Operação “E” - (“AND”)
A operação “E” pode ser resumida 
da seguinte forma: “A operação E resulta 
0 (falso) se pelo menos uma das entradas 
da operação tiver o valor 0 (falso) ”. Ou 
ainda, “a operação E resulta 1 (verdadeiro) 
quando todas suas entradas tiverem o valor 
1 (verdadeiro).
O símbolo comumente utilizado 
para representar a operação “e” em equa-
ções/expressões algébricas é “.” , ou ainda 
“^”. A operação deve ser realizada no míni-
mo com duas entradas (podem ser iguais). 
Assim, sua tabela verdade para duas 
variáveis, A e B (lê-se A “e” B), pode ser 
logo visualizada:
A B A . B
0 0 0
0 1 0
1 0 0
1 1 1
Ou ainda com três variáveis, A, B 
e C (lê-se A “e” B “e” C):
A B C A . B . C
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1
A B A + B
0 0 0
0 1 1
1 0 1
1 1 1
A B C A + B + C
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 1
8ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
A operação “e” também é conhecida 
por “multiplicação lógica”.
Operação “Negação” - (“NOT”)
A operação “Negação”, complemen-
tação (complemento) ou ainda inversão 
(inverso), nada mais é que a troca do valor 
“0” pelo valor “1” e vice-versa. Assim, por 
receber apenas um único operando, cha-
mam-na de operação unária.
Também, diversos símbolos podem 
ser usados para representar tal operação, 
a depender do campo de atuação (progra-
mação, eletrônica digital, lógica, etc.). Os 
mais comuns são: “~”, “ ´ ”, “!” ou “¯”.
Sua tabela verdade pode ser expressa 
de maneira muito simples:
A A’ (~A)
0 1
1 0
Leis e propriedades
Para que possamos desenvolver nos-
so estudo de álgebra booleana temos que 
conhecer algumas leis e propriedades bási-
cas, muitas delas já conhecidas da álgebra 
dos números reais.
Para a operação “ou”:
• A + 0 = A 
• A + 1 = 1 
• A + A = A
• A + A’ = 1
Para a operação “e”:
• A . 0 = 0
• A . 1 = A
• A . A = A
• A . A’ = 0
Para a operação “negação”:
• A’’ = A (dupla negação)
Todas as propriedades anteriores 
são facilmente verificadas por meio das 
tabelas verdade das respectivas opera-
ções. Contudo, é importante que você as 
memorize, pois serão necessárias mais a 
frente, quando tratarmos de simplificação 
de expressões booleanas.
Além dessas propriedades básicas, 
temos ainda a associatividade e a comuta-
tividade. A primeira diz respeito à forma 
de agrupar as variáveis em uma equação 
com mais de uma operação, enquanto a 
segunda nos diz que a ordem dos fatores 
não altera o resultado da equação. Ambas 
podem ser facilmente compreendidas, pois 
também existem na álgebra dos números 
reais. Para auxiliar seguem seus exemplos 
com as operações “ou e “e”:
• A + (B + C) = (A + B) + C (asso-
ciatividade)
• A . (B . C) = (A . B) . C (associa-
9ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
tividade)
• A + B = B + A (comutatividade)
• A . B = B . A (comutatividade)
Outra propriedade existente na ál-
gebra dos números reais decimais e que 
também está presente na álgebra booleana 
é a distributividade da multiplicação (lógi-
ca) com relação à adição (lógica). Ou seja:
A . (B + C) = (A . B) + (A . C)
Para o estudo da álgebra booleana, 
duas outras regras são de suma importân-
cia, são as leis ou teoremas de De Morgan, 
criadas ainda no século XIX. Esses teore-
mas não são utilizados apenas na álgebra 
booleana, mas também em proposições 
de raciocínio lógico, na programação, na 
matemática e na filosofia.
No que tange à algebra booleana, 
tais teoremas dizem o seguinte: a negação 
de um produto lógico (“E”) de variáveis é 
igual à soma lógica (“OU”) das negações 
das variáveis. Por outro lado, a negação 
de uma soma lógica (“OU”) de variáveis é 
igual ao produto lógico (“E”) de negações 
das variáveis. Ou seja, tais teoremas permi-
tem converter operações “E” em operações 
“OU” e vice-versa, utilizando operações 
de negação.
Ou seja, em termos de equações com 
duas variáveis teríamos:
(A . B)’ = A’ + B’
(A + B)’ = A’ . B’
Com três variáveis teríamos:
(A . B . C)’ = A’ + B’ + C’
(A + B + C)’ = A’ . B’ . C’
Avaliando expressões
Avaliar uma expressão booleana 
nada mais é que determinar o valor daque-
la expressão para cada uma das possíveis 
combinações de valores das suas variáveis 
de entrada. Nas seções anteriores já vimos 
como fazer isso! Basta montarmos a tabela 
verdade da equação sob análise. Fizemos o 
mesmo para as operações básicas e faremos 
o mesmo procedimento para as equações/
expressões.
Contudo, antes de montarmos a ta-
bela verdade, precisamos ter em mente a 
precedência das operações. As expressões 
são sempre avaliadas a partir do parêntesis 
mais interno. Além disso, a multiplicação 
lógica tem precedência sobre a adição, ou 
seja, sempre que não há um parêntesis 
determinando a ordem da operação, de-
vemos resolver as multiplicações lógicas 
(“E”), para depois avaliarmos as adições 
lógicas (“OU”).
Com relação à negação, ela deve ser 
resolvida o mais rápido possível. Ela tem 
precedência sobre as demais operações. É 
claro que se a negação for aplicada a uma 
sub-expressão entre parêntesis, essa deverá 
ser resolvida antes da aplicação da negação.
Tendo por base o que já foi exposto, 
a montagem da tabela verdade é feita de 
modo semelhante ao que foi feito anterior-
10ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
mente. O número de linhas na tabela será 
dado pelo número de variáveis de entrada, 
usando a exponenciação de base 2, ou seja, 
2n, onde n é o número de variáveis. 
O número de colunas da tabela ver-
dade dependerá do número de variáveis, 
sub-expressões e complementos existentes 
na função algébrica. À esquerda, criaremos 
uma coluna para cada variável de entrada 
e à direita deixaremos uma coluna para 
o resultado final da função (variável de 
saída). Entre as colunas da entrada e da 
saída, criaremos tantas colunas quantas 
sub-expressões encontrarmos, além de 
eventuais variáveis negadas.
Por exemplo, suponha a equação W 
= X + Y . Z’. A variável “W” nada mais é 
que o resultado da função, ou seja, nossa 
variável de saída. Para ela, deixaremos 
a coluna mais à direita em nossa tabela 
verdade. As demais variáveis, “X”, “Y” 
e “Z” são as nossas variáveis de entrada 
e deixaremos as três primeiras colunas 
reservadas a elas. Como não temos parên-
tesis podemos partir para a avaliação dos 
complementos, multiplicações e adições, 
assim, nessa ordem. Como temos a variável 
Z’ (complemento de Z), deixamos uma 
coluna para esse resultado. Após, temos 
que avaliar a multiplicação Y . Z’ (Y “E” 
Z’). Finalmente, com o resultado da mul-
tiplicação, faremos a soma lógica com X. 
O número de linhas desta tabela 
verdade será igual a oito, pois temos 3 
variáveis de entrada (23 = 8). 
Note que poderíamos ocultar a colu-
na com o rótulo X+ (Y.Z’), pois é equiva-
lente à variável de saída “W”. Nas próximas 
tabelas não mais colocaremos essa coluna.
Portas Lógicas e Circuitos 
Lógicos
Nas seções anteriores, vimos que 
uma expressão booleana pode ser detalha-
da e resolvida através da montagem de sua 
respectiva tabela verdade. Uma expressãobooleana também pode ser representa-
da de forma gráfica, através de símbolos 
que representam as operações básicas e 
linhas (“fios”) que conectam as variáveis 
e resultados às operações. À esquerda dos 
símbolos temos as entradas (fio de entra-
da) e à direita temos a(s) saídas, ou seja, o 
resultado lógico daquela operação. Esses 
símbolos são conhecidos como portas lógi-
cas. Essas mesmas portas lógicas também 
são utilizadas para representar circuitos 
eletrônicos, abstraindo detalhes de sua 
implementação física. Nesses circuitos, 
o valor lógico 1 é representado por uma 
voltagem positiva (geralmente 3,3V ou 
5V) e o valor lógico 0 pela ausência de 
voltagem (0V).
As portas lógicas das três operações 
básicas, “OU”, “E” e “Complemento” po-
X Y Z Z’ Y.Z’ X+(Y.Z’) W
0 0 0 1 0 0 0
0 0 1 0 0 0 0
0 1 0 1 1 1 1
0 1 1 0 0 0 0
1 0 0 1 0 1 1
1 0 1 0 0 1 1
1 1 0 1 1 1 1
1 1 1 0 0 1 1
11ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
dem ser visualizados nas figuras a seguir:
Porta lógica OU de duas entradas
Porta lógica E de duas entradas
Porta lógica Inversor (“Complemento”)
As portas lógicas com mais entradas (variáveis) têm o mesmo símbolo gráfico, 
apenas acrescentamos um novo fio do lado esquerdo da porta lógica, com o respectivo 
nome da entrada adicionada.
De posse do conhecimento destas 
três portas lógicas, podemos iniciar a cons-
trução de expressões de forma gráfica. 
Desse modo, do processo de construir 
tais expressões, surgem os circuitos lógi-
cos, que nada mais são que um conjunto 
de portas lógicas e conexões entre elas, 
de forma a expressar uma determinada 
função booleana.
A construção do circuito lógico 
ocorre da mesma forma que a avaliação 
da expressão booleana, ou seja, precisamos 
ter em mente a precedência das operações. 
As expressões são sempre avaliadas a partir 
do parêntesis mais interno. Além disso, a 
multiplicação lógica tem precedência sobre 
a adição, ou seja, sempre que não há um 
parêntesis determinando a ordem da ope-
ração, devemos resolver as multiplicações 
lógicas (“E”), para depois avaliarmos as 
adições lógicas (“OU”).
O primeiro passo nessa construção 
é verificar a quantidade de variáveis de 
entrada. Para cada uma delas, criamos 
12ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
um rótulo com seu nome à esquerda do 
circuito e traçamos um fio para a direita 
(uma linha simples). Para cada variável 
negada, conectamos à entrada do inversor 
o fio da variável e seguimos com o fio para 
a direita, a partir da saída do inversor. 
Posteriormente, para cada sub-ex-
pressão, na sua respectiva ordem, conec-
tamos as entradas necessárias na porta 
lógica correspondente, mediante a utili-
zação dos fios (linhas) disponíveis e, na 
saída da porta lógica, seguimos com fios 
para a direita.
Para o exemplo da expressão da se-
ção anterior W = X + Y . Z’ teríamos os 
seguintes passos:
1. Desenhamos os rótulos das três va-
riáveis X, Y e Z à esquerda e traça-
mos os seus fios para a direita;
2. Conectamos um inversor na variável 
Z e traçamos a continuidade do fio 
relativo a Z’ para a direita;
3. Como não temos parêntesis, resol-
vemos as operações “E” e depois as 
operações “OU”;
4. Usamos uma porta E para a ex-
pressão Y . Z’, conectando as duas 
entradas da porta E aos fios de Y e 
de Z’. Na saída dessa porta fazemos 
o prolongamento de um fio para a 
direita;
5. Finalmente, conectamos o fio criado 
em 4 a uma das entradas de uma 
porta OU e o fio relativo à variável 
X na outra entrada da porta OU. 
Com isso, temos o resultado final 
na saída dessa porta.
Além das três portas lógicas já men-
cionadas, outras duas são importantes na 
eletrônica digital, devido às questões de 
implementação física das portas em chips. 
A primeira delas é a porta NAND. 
Ela executa a negação da operação “E” 
(“AND”), ou seja, é equivalente à expressão 
(A . B)́ . Seu nome é a junção dos termos 
em inglês das duas operações: NOT + 
AND. Sua tabela verdade pode ser visu-
alizada a seguir:
A B (A . B)’
0 0 1
0 1 1
1 0 1
1 1 0
Graficamente, é semelhante à jun-
ção de uma porta “E” (“AND”) e um in-
versor em sua saída.
Porta NAND de duas entradas
13ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
Para a porta OU temos também sua 
negação. É a porta NOR. Ela executa a 
negação da operação “OU” (“ORG”), ou 
seja, é equivalente à expressão (A + B)́ . Seu 
nome é a junção dos termos em inglês das 
duas operações: NOT + OR. Sua tabela 
verdade pode ser visualizada a seguir:
A B (A + B)’
0 0 1
0 1 0
1 0 0
1 1 0
Em gráfico, é semelhante à junção 
de uma porta “OU” (“OR”) e um inversor 
em sua saída.
Porta NOR de duas entradas
Por fim, temos mais uma porta lógi-
ca de extrema importância na computação: 
a porta XOR, também conhecida pelo 
nome “ou-exclusivo”. 
Em termos de função booleana, com 
duas variáveis, ela equivale à seguinte ex-
pressão:
(A + B) . (A . B)’
O símbolo comumente utilizado 
para representar a operação “XOR” em 
equações/expressões algébricas é “⊕”. A 
operação deve ser realizada no mínimo 
com duas entradas (podem ser iguais). 
Sua tabela verdade para duas vari-
áveis, A e B (lê-se A “XOR” B), pode ser 
visualizada abaixo:
Porta XOR de duas entradas
A porta XOR tem o mesmo com-
portamento da operação de soma biná-
ria na representação de complemento de 
dois, desprezando o “vai-um” ou “carry 
out”. Ou seja, ela pode ser utilizada para 
construir circuitos que realizam soma em 
computadores.
Outra utilização muito comum da 
operação XOR é como geradora de pari-
dade par. A título de curiosidade, a pari-
dade é uma forma básica de tolerância com 
falhas, sendo capaz de detectar alterações 
de conteúdo armazenados ou transmitidos 
de forma binária. Mas, como isso é feito? 
Primeiramente, estabelecemos uma regra: 
qualquer informação a ser armazenada 
deverá ter um número PAR de “1”. Com 
essa regra, olhamos para a informação a 
ser armazenada buscando verificar a quan-
tidade de “1” existente. Se for um núme-
ro ímpar, armazenamos uma informação 
A B A ⊕ B
0 0 0
0 1 1
1 0 1
1 1 0
14ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
extra “1”. Se for um número par, então, 
armazenamos uma informação extra “0”. 
Note que este comportamento da 
paridade é exatamente o que faz a função 
XOR, conforme tabela verdade anterior. 
Pense em “A” e “B” como a informação que 
precisamos armazenar e a coluna de resul-
tado sendo exatamente a paridade, a qual 
irá garantir que os dados estão íntegros. 
A função XOR também é de grande 
utilidade na área da criptografia, por ser 
um cifrador e decifrador rápido e de baixo 
custo. Tal decifrador permite criptografar 
(“embaralhar”) uma informação, tendo por 
base, por exemplo, uma senha, e descrip-
tografar (“desembaralhar”) a informação 
criptografada com a mesma senha. 
Olhe para a tabela verdade e pense 
que “A” é a informação a ser criptografada, 
“B” é a senha e o resultado da operação é 
a informação (“A”) criptografada. Agora, 
olhe ao contrário, ou seja, o resultado da 
operação é a informação que você quer 
descriptografar e “B” é a senha. Note que 
o resultado dessa nova operação XOR é 
exatamente a informação original que es-
tava em “A”. 
É claro que essa tabela verdade tra-
balha com um único bit. Atualmente, as 
senhas utilizadas possuem 64 ou 128 bits 
(ou mais). Entretanto, a operação XOR 
funciona da mesma forma para 1, 64, 128 
ou 1024 bits.
Vamos exercitar o que estudamos até aqui? Então...
Dicas importantes: para os exercícios de álgebra booleana e seguintes, você pode 
utilizar o software MMLogic, disponível para download em (http://www.softronix.
com/logic.html). Você poderá desenhar os circuitos lógicos e testá-los para validar, 
inclusive, as tabelas verdade dos exercícios.
1. Desenvolva a tabela verdade para as seguintes expressões booleanas:
b. A . B . C + (A . B . C)’ 
c. (A + B) (A + C)’ (A’ xor B)’
d. A + (B’ + A . C)’ xor D’
5. Considerando os valores binários abaixo, calcule o valor de X em cada um dos 
casos:
A = 1011 B = 1110 C = 0011 D = 1010
a. a) X =A . (B xor C) 
b. b) X = ( ( A + (B’ xor D)’ ) . (C’ + A) + B ) . 
(A + B)’ 
c. c) X = A xor B + C’ . B + A’
3. Desenhe o diagrama lógico (circuito lógico) correspondente as expressões dos 
exercícios 1 e 2.
4. Construa a expressão lógica correspondente aos seguintes diagramas:
5. Um computador deve adicionar um bit de paridade a caracteres codificados 
em ASCII em 7 bits. Acrescente o bit de paridade para obter: 
a. paridade par, no caractere 1001101 
b. paridade ímpar, no caractere 1101101 
c. paridade ímpar, no caractere 1001101 
d. paridade ímpar, no caractere 1101101 
6. Indique duas utilidades da porta XOR. Cálculo da paridade, soma sem carry.
7. Monte a tabela verdade das seguintes equações booleanas.
a. F = ab + cd + abc
b. F = abc . (bc + ab)’
c. F = ( ab + ( ac + bc ) ’ ) ’
d. F = ( (a + ( bc )’ ) . ( ( ab + c )’ ) )’
18ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
Derivação de Expressões 
Booleanas
Nas seções anteriores aprendemos 
como devemos proceder para avaliar uma 
função booleana e como representá-la de 
forma gráfica. No entanto, devemos lem-
brar que na vida real nem sempre teremos 
uma função booleana pronta para imple-
mentar. Na maioria das vezes é exatamen-
te o contrário! Ou seja, sabemos quantas 
entradas existirão em nosso circuito (ou 
em nossa equação) e sabemos, para cada 
uma das combinações das entradas, qual 
será o valor da saída. 
Esse é o nosso desafio agora! Como 
devemos escrever a expressão booleana 
que representa essa nossa entrada e saída?
Como em uma função booleana ape-
nas podemos ter duas saídas possíveis para 
cada uma das combinações da entrada, 
assim, podemos optar por verificar todas 
as combinações de entradas que geram 
uma saída igual a “1”, ou verificar todas as 
entradas que geram uma saída igual a “0”. 
No primeiro caso, temos o método 
da soma de produtos (SdP), onde somente 
estaremos interessados nas saídas de valor 
“1”. No segundo caso, temos o método do 
produto de somas (PdS), onde somente 
estaremos interessados nas saídas de valor 
“0”.
Soma de Produtos
Já vimos que numa montagem da 
tabela verdade de uma função booleana, 
teremos 2n diferentes combinações (n = 
número de variáveis de entrada), sendo 
as linhas na tabela. Para cada uma dessas 
linhas (combinações) podemos escrever um 
termo produto, no qual todas as variáveis 
estarão representadas. 
A representação desse termo produ-
to deve ser construída da seguinte forma: 
se a variável correspondente na combina-
ção tiver o valor “0” ela deverá ser gerada 
no termo produto de forma negada. Caso 
contrário, se o valor for “1” ela deverá ser 
gerada normalmente. Veja o exemplo a 
seguir, com uma função de três variáveis:
Cada termo produto na tabela acima 
é chamado de mintermo. Para verificar se a 
construção do mintermo está correta, basta 
substituir o valor da variável na expressão 
e resolvê-la. Caso o valor encontrado seja 
1, há grandes chances de estar correto. 
Por exemplo, em A’.B’.C’ teríamos 0’.0’.0’ 
ou 1.1.1 = 1.
Tendo construídos os mintermos, 
basta verificar o valor de saída para cada 
uma das combinações. Aquelas que forem 
igual a 1, terão o seu mintermo levado para 
a expressão booleana final. Caso ocorra 
mais de uma combinação na expressão, 
A B C Termo Produto 
(Mintermo)
0 0 0 A’.B’.C’
0 0 1 A’.B’.C
0 1 0 A’.B.C’
0 1 1 A’.B.C
1 0 0 A.B’.C’
1 0 1 A.B’.C
1 1 0 A.B.C’
1 1 1 A.B.C
19ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
todas elas deverão ser unidas por opera-
ções “OU”.
Suponha então que para a função 
da tabela acima, tivéssemos as seguintes 
saídas:
Os mintermos associados aos valores 
de W = 1 são apenas os 4 acima indica-
dos em verde. Ou seja, são os mintermos 
A’.B.C’, A’.B.C, A.B’.C e A.B.C’.
Basta, agora, unirmos estes min-
termos com operações “OU” e teremos 
nossa função booleana. Os símbolos das 
operações “E” podem ser omitidos para 
facilitar a visualização.
A’BC’ + A’BC + AB’C + ABC’
Produto de Somas
A construção de uma expressão 
através do produto de somas funciona 
de maneira oposta àquilo que vimos na 
construção da soma de produtos. Não te-
mos mais a representação das variáveis 
em termo produto, mas sim em termos 
soma. Sua construção ocorre da seguinte 
forma: se a variável correspondente na 
combinação tiver o valor “1” ela deverá 
ser gerada no termo produto de forma 
negada. Caso contrário, se o valor for “0” 
ela deverá ser gerada normalmente. Veja 
o exemplo abaixo, com uma função de 
três variáveis:
Cada termo soma na tabela acima 
é chamado de maxtermo. Para verificar 
se a construção do maxtermo está cor-
reta, basta substituir o valor da variável 
na expressão e resolvê-la. Caso o valor 
encontrado seja 0, há grandes chances de 
estar correto. Por exemplo, em A’.B’.C’ 
teríamos 1’+1’+1’ ou 0+0+0 = 0.
Tendo construídos os maxtermos, 
basta então verificar o valor de saída para 
cada uma das combinações. Aquelas que 
forem igual a 0, terão o seu maxtermo 
levado para a expressão booleana final. 
Caso ocorra mais de uma combinação na 
expressão, todas elas deverão ser unidas 
por operações “E”.
A B C Termo Produto 
(Mintermo)
W
0 0 0 A’.B’.C’ 0
0 0 1 A’.B’.C 0
0 1 0 A’.B.C’ 1
0 1 1 A’.B.C 1
1 0 0 A.B’.C’ 0
1 0 1 A.B’.C 1
1 1 0 A.B.C’ 1
1 1 1 A.B.C 0
A B C TermoSoma(Maxtermo)
0 0 0 A+B+C
0 0 1 A+B+C’
0 1 0 A+B’+C
0 1 1 A+B’+C’
1 0 0 A’+B+C
1 0 1 A’+B+C’
1 1 0 A’+B’+C
1 1 1 A’+B’+C’
20ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
Então, suponha que para a função 
da tabela anterior, tivéssemos as seguintes 
saídas:
Os maxtermos associados aos valo-
res de W = 0 são apenas os 4 acima indica-
dos em verde. Ou seja, são os mintermos 
A+B+C, A+B+C’, A’+B+C e A’+B’+C’.
Basta agora unirmos estes maxter-
mos com operações “E” e teremos nossa 
função booleana.
(A+B+C).(A+B+C’).(A’+B+C).(A’+B’+C’)
Note que no produto de somas, obri-
gatoriamente, precisamos de parêntesis em 
cada uma das somas! (Por quê?)
Simplificação de Expressões
Você pode ter percebido que as ex-
pressões geradas pelas somas de produto 
ou produto de somas sempre possuem em 
cada um de seus termos todas as variáveis 
da equação. Essas expressões, geralmente, 
não são as ideais para implementação com 
portas lógicas, pois consomem um grande 
número das mesmas. 
Dessa forma, temos sempre que ten-
tar minimizar o número de sub-expressões 
ou o número de variáveis em cada uma das 
sub-expressões. Estudaremos duas aborda-
gens: a fatoração e os mapas de Karnaugh.
Fatoração
A primeira abordagem que podemos 
optar é aplicar as leis e propriedades que 
estudamos nos capítulos anteriores, além 
de algumas outras que trataremos agora. 
Tal técnica é conhecida por fatoração.
Apenas para relembrar, tínhamos:
• Identidades
– A + 0 = A 
– A + 1 = 1 
– A + A = A
– A + A’ = 1
– A . 0 = 0
– A . 1 = A
– A . A = A
– A . A’ = 0
– A’’ = A (dupla negação)
• Comutatividade
– A + B = B + A
– A . B = B . A
A B C Termo Produto (Mintermo) W
0 0 0 A+B+C 0
0 0 1 A+B+C’ 0
0 1 0 A+B’+C 1
0 1 1 A+B’+C’ 1
1 0 0 A’+B+C 0
1 0 1 A’+B+C’ 1
1 1 0 A’+B’+C 1
1 1 1 A’+B’+C’ 0
21ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
• Associatividade
– A + (B + C) = (A + B) + C
– A . (B . C) = (A . B) . C
• Distributividade
– A . (B + C) = (A . B) + (A . C)
• Teoremas de De Morgan
– (A . B . C)’ = A’ + B’ + C’
– (A + B + C)’ = A’ . B’ . C’
No que tange à distributividade, 
ainda temos uma outra propriedade não 
existente na álgebra convencional: é a dis-
tributividade da soma lógica em relação à 
multiplicação lógica:
A + (B . C) = (A + B) . (A + C)
Além dessas temos a absorção:
• A + (A.B) = A
• A . (A+B) = A
Apenas para fins didáticos, vamos 
demonstrar rapidamente como aplicar as 
leis e propriedades anteriores na simpli-
ficação da expressão algébrica correspon-
dente à absorção:
1. A + (A . B)
a. A + (A . B) → Aplicamos a dis-
tributividade (ou termo em co-
mum) para chegarmos no passo 
b abaixo
b. A . (1 + B) → Aplicamos a iden-
tidade da adição lógica (X + 1 
= 1)
c. A . (1) → Aplicamos a identidadeda multiplicação lógica (X . 1 = 1)
d. A
2. A . (A + B)
c. A . (A + B) → Aplicamos a dis-
tributividade (ou termo em co-
mum) para chegarmos no passo 
b abaixo
d. A.A + A.B → Aplicamos a iden-
tidade da multiplicação lógica 
(A. A = A)
e. A + A.B → Chegamos na mes-
ma expressão do item 1 anterior 
(basta aplicar a mesma sequência 
de fatoração)
f. A
Temos mais duas importantes pro-
priedades:
A + A’.B = A + B
(A+B). (A+C) = A + B.C
Vamos fazer a fatoração destas duas 
identidades, apenas para fins didáticos:
1. A + A’.B
a. A + A’.B → Termo em comum
b. (A+A’) . (A+B) → Identidade da 
soma lógica
22ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
c. 1 . (A + B) → Identidade da mul-
tiplicação lógica
d. A + B
2. (A+B) . (A+C)
a. (A+B) . (A+C) → Distributiva
b. A.A + A.C + B.A + B.C → Co-
mutativa
c. A.A + A.C + A.B + B.C → Iden-
tidade da multiplicação
d. A + A.C + A.B + B.C → Termo 
em comum
e. A + A . (C + B) + B.C → Termo 
em comum
f. A . (1 + (C + B)) + B.C → Iden-
tidade da adição
g. A . (1) + B.C → Identidade da 
multiplicação
h. A + B.C
Como último exemplo, vamos fa-
torar a seguinte equação (omitimos os 
símbolos da operação “E”): S = ABC + 
AC’ + AB’
1. ABC + AC’ + AB’
a. A (BC + C’ + B’) → Fator co-
mum
b. A (BC + (C’ + B’) ) → Asso-
ciativa
c. A (BC + (CB)’ ) → De Morgan
d. A (BC + (BC)’ ) → Comutativa
e. A (1) → Identidade da adição 
(X + X’ = 1)
f. A
Pense agora na implementação em 
termos de circuito lógico. Como ficaria? 
Qual seria mais simples?
Mapas de Karnaugh
A segunda forma de simplificar-
mos uma expressão algébrica é baseada em 
uma identificação tabular de mintermos, 
de acordo com uma ordem pré-definida 
em tabelas conhecidas por diagramas ou 
mapas de Karnaugh.
Os mapas de Karnaugh nada mais 
são que tabelas verdade, agrupadas de 
forma a manter uma sequência tal das 
variáveis, a fim de que os respectivos va-
lores sejam modificados em apenas um 
dos algarismos. 
Em uma expressão com apenas duas 
variáveis, a premissa anterior é facilmente 
obtida por meio do mapa a seguir:
23ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
 Mapa de Karnaugh para duas va-
riáveis. Fonte: GUNTZEL 2005.
Note que os valores da variável “A” 
estão dispostos nas linhas da tabela e, entre 
as duas linhas dela apenas um algarismo 
é modificado. Na primeira linha temos 
“A=0” e na segunda linha “A=1”.
O mesmo ocorre com a variável 
“B”, disposta nas colunas, onde apenas 
um algarismo é modificado entre as duas 
colunas. Na primeira coluna temos o valor 
“B=0” e na segunda coluna “B=1”.
Por outro lado, com três variáveis a 
organização do mapa de Karnaugh é um 
pouco distinta, mas a premissa continua 
sendo respeitada:
 Mapa de Karnaugh para três variáveis. 
Fonte: GUNTZEL 2005.
Nas linhas do mapa de Karnaugh, 
com três variáveis, continuamos com os 
valores da variável “A”. Nas colunas, por 
sua vez, precisamos acomodar as variáveis 
“B” e “C”. Dessa forma, precisaremos de 4 
colunas para representar todos os valores 
possíveis. Nesse caso, note que a premissa 
anterior está assegurada: somente ocorre 
uma única mudança de algarismo entre 
dois valores adjacentes (00  01  11  10).
Finalmente, em um mapa de Kar-
naugh para quatro variáveis distintas, pre-
cisaremos também de 4 linhas, de forma 
a acomodar os 4 valores distintos para as 
combinações possíveis de “A” e “B”. Note, 
pela figura a seguir, que nossa premissa de 
alteração de apenas um único algarismo 
continua válida, seja nas linhas, seja nas 
colunas.
 
Mapa de Karnaugh para quatro variáveis. 
Fonte: GUNTZEL 2005.
Já vimos como estruturar as linhas 
e colunas dos diagramas de Karnaugh. 
Mas, como preencher o conteúdo de cada 
uma das células? Como nas linhas e colu-
nas temos os valores possíveis para cada 
uma das variáveis, basta agora olhar para 
a tabela verdade e preencher cada uma das 
células com o respectivo valor da função. 
Nas figuras anteriores já foi infor-
mado previamente qual mintermo deve ser 
informado em cada uma das células, con-
siderando que as linhas da tabela verdade 
24ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
fossem numeradas a partir do número 0. 
Dessa forma, o mintermo m0, refere-se ao 
valor da primeira linha da tabela verdade, 
o mintermo m1 ao valor da segunda linha 
da tabela verdade, e assim por diante, con-
forme a seguinte tabela verdade (apenas 
para três variáveis).
Montando o diagrama da Karnaugh 
para essa tabela verdade teríamos:
Finalizada a montagem do mapa/
diagrama de Karnaugh, podemos passar 
a etapa de simplificação da expressão bo-
oleana. O que precisa ser feito nessa etapa 
é agrupar TODOS os mintermos com 
valor igual a 1, que sejam adjacentes, em 
quadras, pares e mintermos isolados. O 
agrupamento deve ser feito nessa ordem, 
para que a expressão possa ser simplificada 
ao máximo. Não devemos deixar nenhum 
mintermo 1 sem ser considerado. É impor-
tante ressaltar que um mesmo mintermo 1 
pode pertencer a mais de um agrupamento.
A ideia básica por trás destes agru-
pamentos é identificar variáveis que se 
mantenham constantes em mintermos de 
valor 1 adjacentes, já que elas são deter-
minantes no resultado daquele mintermo. 
Ora, se o valor da função manteve-se em 
“1” nos mintermos adjacentes, mesmo com 
uma variável sendo alterada, esta variável 
não precisa estar na sub-expressão (ela não 
interfere no resultado).
No exemplo anterior, podemos iden-
tificar dois pares de mintermos 1 adjacente 
(não podemos considerar as diagonais) e 
um mintermo isolado. Não existem qua-
dras (quatro mintermos 1 adjacente). A 
identificação das quadras pode ser feita 
levando em consideração as bordas. Ou 
seja, você pode juntar as bordas laterais e 
as bordas superior e inferior.
Após a identificação das quadras, 
pares e mintermos 1 isolados, precisa-
mos montar a expressão final, simplifi-
cada pelo diagrama. A ordem aqui não 
tem importância, pela regra da comuta-
tividade. Assim, começaremos pelo min-
termo 1 isolado. Poderíamos verificar a 
qual mintermo ele se refere através das 
tabelas que montamos anteriormente, ou 
seja, chegaríamos à conclusão que ele se 
refere ao m5 que, por sua vez, refere-se à 
expressão A.B’.C. Para evitar a necessidade 
de decorar tais informações, vamos usar a 
seguinte regra: verifique nos rótulos das 
colunas e das linhas envolvidas quais va-
riáveis não tiveram seus valores alterados. 
A B C Termo Produto Mintermo W
0 0 0 A’.B’.C’ m0 0
0 0 1 A’.B’.C m1 0
0 1 0 A’.B.C’ m2 1
0 1 1 A’.B.C m3 1
1 0 0 A.B’.C’ m4 0
1 0 1 A.B’.C m5 1
1 1 0 A.B.C’ m6 1
1 1 1 A.B.C m7 0
25ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
Para essas variáveis monte o produto entre 
elas, complementando aquelas cujo valor 
seja 0 e mantendo as demais na forma ori-
ginal. Desse modo, também chegaríamos 
à mesma expressão, pois o valor de A é “1”, 
o valor de B é “0” e o valor de C também 
é “1”, resultando em A.B’.C.
Seguimos a análise para os dois 
pares encontrados, iniciando pelo par na 
horizontal. Esse par está na linha em que 
o valor de A é “0”, o valor de B é “1” nas 
duas colunas e o valor de C varia de “1” 
para “0”. Pela regra acima, concluímos 
que apenas A e B não tiveram alteração de 
valor e são essas as variáveis determinantes 
para tal parte da expressão. Como o valor 
de A é “0” neste par, teríamos: A’.B.
O próximo par, na vertical, está na 
coluna em que B tem o valor “1” e C tem 
o valor “0”. O valor de A, por sua vez, 
variou de “0” para “1”. Pela mesma regra, 
temos que apenas B e C comporão essa 
parte da expressão. Temos, então, B.C’.
Finalmente, como estamos traba-
lhando com soma de produtos, basta unir-
mos todas as expressões encontradas pela 
operação “OU”.
A.B’.C + A’B + B.C’
Perceba que a expressão simplifi-
cada, gerada pelo mapa de Karnaugh é 
muito mais simples que aquela gerada pela 
simples soma de produtos (A’BC’ + A’BC 
+ AB’C + ABC’).
Como exercício, experimente fatorar 
(usando as leis e propriedades) a expressão 
A’BC’ + A’BC + AB’C + ABC’ e veja se 
você chega a mesma simplificação obtidapelo mapa de Karnaugh.
Para expressões com quatro vari-
áveis, o mecanismo de simplificação é o 
mesmo, porém temos que considerar antes 
das quadras a existência de oitavas, ou 
seja, oito mintermos 1 adjacentes. Sempre 
lembre que a adjacência pode ocorrer nas 
bordas do diagrama de Karnaugh.
Por exemplo, suponha a tabela ver-
dade que segue:
26ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
Transpondo a tabela verdade para 
o diagrama de karnaugh com 4 variáveis 
temos:
O próximo passo é encontrar as oi-
tavas, quadras, pares e termos isolados, de 
forma a não deixar nenhum mintermo 1 
não coberto. Pelo diagrama anterior, temos 
uma oitava, uma quadra e um par. Por fim, 
temos que analisar em cada agrupamento 
quais variáveis não tem seu valor alterado 
para formar as sub-expressões.
No caso, para a oitava temos que 
o valor de A, B e C são modificados ao 
longo da mesma e os valores de D são os 
únicos que se mantêm. No caso, o valor 
de D é “1” e a sub-expressão relativa à 
oitava é “D”.
Temos uma quadra em que o valor 
de A é fixo em “1” e o valor de C fixo em 
“0”. Assim, a respectiva sub-expressão é 
A.C’.
Por fim, temo um par, onde o valor 
de A e B são fixos em “0” e o valor de C 
fixo em “1”. Portanto, temos A .́B .́C.
A expressão final simplificada é ob-
tida pela junção das sub-expressões com a 
operação “OU”: D + AC’ + A´B´C.
A B C D W
0 0 0 0 0
0 0 0 1 1
0 0 1 0 1
0 0 1 1 1
0 1 0 0 0
0 1 0 1 1
0 1 1 0 0
0 1 1 1 1
1 0 0 0 1
1 0 0 1 1
1 0 1 0 0
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 0
1 1 1 1 1
Vamos exercitar o que estudamos até aqui? Então...
1. Simplifique as seguintes expressões usando as leis da álgebra:
a. a) Y = A . B . C + (A . B . C)’
b. b) Y = ((A.A)’.(B.B)’)’
c. c) Y = ((A.B)’.(A.B)’)’
d. d) Y = ABC . (BC+AB)’
e. e) S = (X’+X’.Y).(X+Y’).(X’.Y)’
f. f) Y = A.B.C.D + A.B.C.D’
2. A partir das tabelas verdade, desenvolva e simplifique as expressões usando 
mapas de Karnaugh.
29ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
Circuitos combinacionais
Até o presente momento, todas as 
expressões booleanas que trabalhamos 
geravam circuitos razoavelmente sim-
ples. As saídas (ou saída) desses circuitos 
sempre eram determinadas tão somente 
pelos valores das respectivas variáveis de 
entrada. Tanto é verdade que as tabelas 
verdade continham apenas colunas com 
os valores das variáveis de entrada e uma 
coluna para a variável de saída. Tais cir-
cuitos são ditos combinacionais, visto que 
são resultado direto da combinação das 
variáveis de entrada.
Nesse modelo de circuito não existe 
nenhum tipo de memória ou de armaze-
namento, pois são sempre construídos com 
portas lógicas simples, sem realimentação, 
ou seja, a saída de determinada porta ló-
gica nunca é utilizada como entrada dela 
mesma. 
Dessa maneira, esse tipo de circuito 
combinacional gera os primeiros elementos 
de maior porte em um sistema compu-
tacional, entre os quais podemos citar o 
multiplexador, o decodificador e a unida-
de lógico aritmética. Sendo essa última 
responsável por todos os cálculos em um 
processador. São esses circuitos especiais 
que passaremos a analisar a partir de agora.
Multiplexador
O multiplexador nada mais é que 
um seletor. Ou seja, ele é capaz de selecio-
nar um dos valores da entrada é copiá-lo 
para a saída. Logo, a seleção de qual dos 
valores será copiado na saída é feita atra-
vés de uma entrada adicional, um sinal 
de controle chamado de seletor ou linha 
de seleção.
Um multiplexador, em termos de 
circuito lógico e tabela verdade, possui m 
entradas e uma única saída. Por exemplo, 
8 (m) entradas e uma saída. Esse multi-
plexador é chamado 8-para-1. (8 entradas, 
1 saída). De uma maneira geral, temos:
Observe que sempre temos uma re-
lação direta entre o número de entradas 
e o número de linhas de seleção ou sele-
tores, obedecendo a relação de √m. Ou 
seja, para um multiplexador de 4 entradas 
precisamos de 2 seletores (22 = 4), para 8 
entradas, 3 seletores (23 = 8) e assim por 
diante.
Em termos de programação o mul-
tiplexador é equivalente a estrutura “case” 
ou “switch/case”:
case seleção of
 0: saída := entrada0;
 1: saída := entrada1
 ..
 m: saída := entradam
Multiplexador Num. 
Entradas
Núm. Linhas 
Seleção
2-para-1 2 1
4-para-1 4 2
8-para-1 8 3
16-para-1 16 4
30ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
Para um multiplexador de duas en-
tradas teríamos a tabela verdade adiante. 
Lembre que para duas entradas precisamos 
de um único seletor. Ou seja, serão três 
colunas da tabela verdade representando 
variáveis de entrada (duas entradas e o 
seletor) e uma coluna para a saída.
Perceba, pela tabela verdade, que 
sempre que o seletor (sel) está em “0” a 
saída (s) é exatamente o valor da entrada0 
(a). Sempre que o seletor está em “1” a 
saída (s) é igual ao valor da entrada1 (b).
Construindo a expressão boolea-
na através da soma de produtos (a’.b.sel + 
a.b’.sel’ + a.b.sel’ + a.b.sel) e realizando a 
simplificação chegamos a: a.sel’ + b.sel, 
cujo circuito lógico seria, então:
Circuito lógico multiplexador 2-para-1
Contudo, como o multiplexador 
possui uma função própria bem estabe-
lecida, conforme visto antes, utilizamos 
um símbolo específico para ele.
Representação simbólica multiplexador 
2-para-1
Decodificador
Se o multiplexador funcionava como 
um seletor, podemos dizer que o decodifi-
cador faz o papel inverso. É um elemento 
que possui mais saídas do que entradas. A 
cada instante de tempo, todas saídas terão 
o valor “0”, exceto uma, que terá o valor 
“1”. A saída que terá o valor “1” depende 
do valor das entradas, seguindo uma regra: 
“se o valor codificado nas entradas é “x”, a 
saída de índice “x” será igual a “1”.
A relação entre o número de entra-
das e saídas segue a exponenciação na base 
2. Ou seja, se temos n entradas, teremos 
2n saídas. Por exemplo, um decodificador 
de 2 entradas terá 4 saídas, de 3 entradas 
terá 8 saídas e assim por diante.
Entrada0
(a)
Entrada1
(b)
Seletor
(sel)
Saída|
(s)
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 1
Decodificador Num.
Entradas
Núm. 
Saídas
1-para-2 1 2
2-para-4 2 4
3-para-8 3 8
4-para-16 4 16
31ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
Para um decodificador 2-para-4 
teríamos a tabela verdade posterior. Ao 
contrário de outras tabelas verdade agora 
teremos mais de uma saída. Entretanto, 
a forma de construir a mesma não muda, 
ou seja, entradas são representadas nas 
colunas à esquerda e as saídas nas colunas 
à direita.
Note, pela tabela verdade, que as 
saídas sempre ficam zeradas, exceto uma. 
Quando as entradas correspondem ao va-
lor “0”, saída0 é que está em “1”. Quando 
as entradas correspondem ao valor “1”, 
a saída1 está ativa. Quando as entradas 
correspondem ao valor “2”, a saída 2 está 
ativa, e assim por diante. 
A construção das equações boolea-
nas e, consequentemente, do circuito ló-
gico, funciona da mesma forma. A única 
diferença é que temos 4 equações envol-
vidas: uma para s0, outra para s1, s2 e s3:
• s0 = á .b´
• s1 = a’.b
• s2 = a.b’
• s3 = a.b
O circuito lógico é montado dei-
xando as 4 equações juntas:
Circuito lógico decodificador 2-para-4
Na representação simbólica do de-
codificador não mantemos dois fios na 
entrada (um para cada entrada), mas sim 
um único fio e a representação de que 2 
bits são utilizados, o que é equivalente a 
termos duas entradas de 1 bit (0 ou 1), 
como fizemos até o presente momento.
Unidade Lógica e Aritmética
Conhecidas as principais portas ló-
gicas e alguns dos mais básicos circuitos 
combinacionais, vamos verificar como é 
formada a máquina motriz de um proces-
sador, a unidade lógica e aritmética, ou 
ULA (em inglês, ALU).
A ULA é responsável por todas as 
operações matemáticas (soma, subtração, 
multiplicação, divisão, exponenciação, 
etc..), lógicas (“E”, “OU”, “NOT”, etc.), 
comparações, deslocamentos, entre outras 
em um computador.
A complexidade da ULA acompa-
nha a complexidade do processador. Pro-
cessadores simples possuemULAs com 4 
Entrada0
(a)
Entrada1
(b)
Saída0
(s0)
Saída1
(s1)
Saída2
(s2)
Saída3
(s3)
0 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
1 1 0 0 0 1
32ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
operações. Processadores mais complexos 
podem ter centenas de operações. 
Apenas para ilustrar vamos verificar 
como é formada uma ULA básica com 
4 operações: soma, AND, OR e NOT. 
Essas três últimas operações booleanas 
são facilmente implementadas com suas 
respectivas portas lógicas, conforme visto 
anteriormente.
Logo, a soma, assim como as demais 
operações aritméticas, não é tão facilmente 
implementada, visto que ao contrário das 
operações booleanas que são realizadas iso-
ladamente bit a bit, aquela possui depen-
dência entre os bits. Ou seja, para realizar 
a operação sobre um bit m+1, precisamos 
saber o resultado da operação no bit m.
No caso da soma temos o somador 
binário mais simples, chamado de meio-
-somador, que é capaz de somar dois ope-
randos de 1 bit (A e B) e gerar o resultado 
(S), também de um bit, além de um bit de 
carry-out ou “vai-um” (C). A tabela verda-
de do meio-somador pode ser visualizada 
a seguir. Como comentado anteriormente, 
o resultado S pode ser implementado com 
uma porta XOR e, se você analisar a tabela 
verdade verá que o vai-um é apenas uma 
operação AND. Como exercício, propo-
mos que você monte o circuito lógico para 
o meio-somador.
Entretanto, esse meio somador não 
pode ser utilizado para somar mais de 
um bit, pois prescinde da entrada para o 
“vai-um” gerado pela soma do bit anterior. 
Dessa forma, temos que adicionar mais 
uma entrada na tabela verdade, chamada 
de carry-in, ou “vem-um”.
O circuito lógico desse somador 
completo pode ser logo visualizado:
O circuito do somador completo, 
apresentado antes, é capaz de somar ape-
nas um único bit. Para realizar a soma de 
mais bits, precisamos adicionar diversos 
A B S C
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
A B Cin S Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
33ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
desses somadores em série, conectando a 
saída Cout de um somador que é ligado 
na entrada Cin do próximo somador.
Agora que já temos as operações 
booleanas definidas e o somador completo, 
como podemos fazer para transformar es-
sas quatro operações em uma ULA? Basta 
criarmos um circuito, unindo os quatro 
circuitos anteriores, conectando as saídas 
dos mesmos em um multiplexador. Nesse 
caso teríamos um multiplexador 4-para-1. 
Assim, com uma entrada A e B definida, 
a ULA realiza as 4 operações, mas em sua 
saída apenas uma delas será selecionada 
através do multiplexador, conforme a so-
licitação da operação, sendo executada no 
processador.
Anteriormente, no circuito da ULA, 
todas as entradas, saídas e conexões inter-
nas seriam de n bits, com exceção de Ci 
(1 bit) e sel (2 bits). O símbolo da ULA 
pode ser visualizado por meio da figura 
que segue:
Circuitos sequenciais
Ao contrário dos circuitos combina-
cionais, os quais não possuem realimen-
tação, os circuitos sequenciais são todos 
aqueles que possuem alguma forma de 
realimentação. Esses produzem o efeito de 
“memória” ou a capacidade de armazenar 
alguma informação ao longo do tempo. 
As saídas de um circuito sequencial 
não são apenas função de suas entradas, 
como são os circuitos combinacionais, 
porém variam de acordo com o estado 
atual das próprias saídas. Ou seja, o va-
lor de determinada saída em t+1, onde t 
representa o momento atual, dependendo 
do valor da saída em t.
Os exemplos clássicos dos circuitos 
sequenciais são os registradores, contado-
res, f lip-f lops ou latches (registradores de 
1 bit).
Flip-Flop RS
Os f lip-f lops podem ser conside-
rados a menor memória existente, sendo 
capazes de armazenar 1 bit. Eles são a base 
dos registradores, os quais são as menores 
unidades de memória existente dentro de 
um processador. 
O seu funcionamento é bastante 
simples e a sua construção é feita com pou-
cas portas lógicas. Existem diversos tipos 
de f lip-flops, sendo que as variações entre 
eles ocorrem na forma de seu controle. 
34ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
O mais simples de todos é o f lip-f lop RS, ele possui duas entradas R, de reset, 
ou desligar e S, de set, ou ligar. Quando a entrada R é acionada (valor em “1”) a saída 
é desligada, ou seja, assume o valor “0”. Por sua vez, quando a entrada S é acionada 
em “1”, a saída é ligada, ou seja, assume o valor “0”.
O circuito lógico desse f lip-f lop é geralmente construído com portas lógicas 
NOR ou NAND, muito embora possa ser construído com portas OR, AND e NOT.
Diferentemente dos circuitos combinacionais, onde apenas a entrada é de-
terminante para o valor da saída, nos circuitos sequenciais não teremos uma tabela 
verdade convencional. Então, precisaremos de uma tabela de transição de estados, ou 
simplesmente tabela de transição, visto que tais circuitos possuem “memória” e o valor 
da saída depende, além das entradas, do estado intermediário mantido na memória.
Geralmente, iniciamos (t0) a construção dessa tabela de transição a partir de 
valores para as entradas capazes de determinar ou alterar o valor das saídas, indepen-
dentemente do valor atual da própria saída. No caso do f lip-f lop RS, seriam os casos 
onde S = 1 (ligar) ou R = 1 (desligar). Nos 
momentos posteriores (t1, t2, ..., tn), os 
valores das entradas vão sendo modifica-
dos de forma a verificar o comportamento 
do circuito em cada um dos casos. Para 
o f lip-f lop RS teríamos a seguinte tabela 
com os valores de entrada e de saída ao 
longo do tempo.
Analisando a tabela verdade da fun-
ção NOR, percebemos que sempre que 
uma das entradas for igual a 1 a saída da 
função também será igual a “0”. Por esse 
motivo, ao colocar a entrada R em “1”, a 
saída Q , automaticamente, assume o valor 
“0”. Como a saída Q está conectada na 
mesma porta da entrada S e, considerando 
t R S Q Q’
0 1 0 0 1
1 0 0 0 1
2 0 1 1 0
3 0 0 1 0
4 1 0 0 1
5 1 0 0 1
6 0 0 0 1
7 0 1 1 0
35ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
ainda, que a entrada S também está em 
“0”, temos que a saída Q’ terá o valor “1”. 
Tal valor “1” retroalimenta a porta NOR, 
mantendo o valor de Q inalterado. 
Continuando em t1, alteramos o 
valor de R para 0, e note que nada foi 
alterado, pois já tínhamos a outra entrada 
da porta NOR com o valor em “1” (Q’). 
Ou seja, mantendo as duas entradas R e 
S com o valor “0”, o f lip-f lop memoriza 
o valor de suas saídas. 
Assim, somente teremos uma alte-
ração se colocarmos o valor de “S” em 1 
(t2), pois aí o valor de Q’ passa a ser “0”, e 
esse valor de Q , consequentemente, passa 
a ser “1”. Temos, então, que S com valor “1” 
liga o f lip-f lop ou ainda faz a informação 
“1” ser armazenada. Já ao contrário de 
R, igual a “1”, desligando o f lip-f lop ou 
fazendo a informação “0” ser armazenada.
Por fim, temos que os valores de R 
e S iguais a “1” não podem ser utilizados 
nesse f lip-f lop, pois tornaria os valores de 
Q e Q’ conflitantes. 
Em resumo, teríamos a seguinte 
tabela de transição de estados para este 
f lip-f lop RS.
Assim como nos decodificadores e 
multiplexadores, não usamos o circuito 
lógico do f lip-f lop, mas sim um símbolo.
Flip-Flop RS Controlado
Como visto anteriormente, no f lip-
-f lop RS temos um comportamento não 
desejado quando as entradas R e S tem o 
valor “1”, trazendo um problema de ordem 
prática. Nesse sentido, de que forma fazer 
a transição de valores de R e S sem que em 
determinado momento tivéssemos R e S 
valendo “1” ou sem passar por um estado 
temporário?
Para isso foi criado um flip-flop que 
pudesse ser ativado/desativado apenas em 
determinados momentos. Para tanto, foi 
adicionado mais uma entrada, chama-
da de controle, clock (relógio), ou carga. 
Enquanto essa entrada estiver desativada 
(C = 0) qualquer alteração nos valores de 
R e S não serão percebidas pelo f lip-f lop 
RS convencional. A ideia é sincronizar 
a mudança de estado, sendo permitidaapenas quando C = 1.
O circuito lógico desse novo f lip-
-flop é facilmente obtido através da adição 
de duas portas NAND ao circuito anterior.
R S Qt+1 Ação/Estado
0 0 Qt Mantém o estado 
anterior
0 1 1 Estado Set (“1”)
1 0 0 Estado Reset (“0”)
1 1 ? Estado proibido / Erro
36ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
A tabela de transição de estados com 
esse novo controle passa a ser a seguinte:
Observe que ainda temos o estado 
proibido, pois nada impede que enquanto 
o relógio esteja ativo (C = 1) as variáveis 
R e S sejam iguais a “1”. Outra novidade 
é que temos mais uma situação onde há 
memorização do valor; quando C = 0, ou 
seja, quando as entradas R e S estão desa-
bilitadas pelo relógio. Na tabela anterior 
apresentamos essa situação pelo valor “X” 
nas entradas R e S. O valor “X” é conhe-
cido por “don’t care”, ou seja, não importa 
seu valor. Visto que, embora não tenhamos 
utilizado anteriormente esse valor, também 
pode ser aplicado em tabelas verdade.
Símbolo do flip-flop RS controlado.
Flip-Flop D
A necessidade de evitar o estado 
proibido do f lip-f lop RS fez com que 
os projetistas o evoluíssem para que não 
houvesse mais duas entradas e sim apenas 
uma. Isso foi facilmente construído atra-
vés do uso de um inversor em uma das 
entradas, R ou S. Com isso eliminamos o 
estado proibido, mas também eliminamos 
a possibilidade de R e S terem o valor 
“0”, simultaneamente para manutenção 
do estado anterior.
Contudo, como já temos uma outra 
entrada, não precisaríamos mais manter o 
relógio que habilita ou não as entradas do 
f lip-f lop de R e S em “0”, a fim de termos 
salvo o estado do f lip-f lop.
O resultado prático dessa evolução é 
que temos agora um f lip-f lop que copia o 
valor de sua entrada para sua saída sempre 
que o relógio ficar ativo (C = 1). Esse f lip-
-f lop é conhecido por f lip-f lop D. O “D” 
representa o dado que deverá ser copiado 
da entrada para a saída. O circuito lógico 
do f lip-f lop D, em termos do f lip-f lop 
RS controlado, e seu respectivo símbolo 
podem ser vistos a seguir:
C R S Qt+1 Ação/Estado
0 X X Qt Mantém o estado 
anterior
1 0 1 1 Estado Set (“1”)
1 1 0 0 Estado Reset (“0”)
1 0 0 Qt Mantém o estado 
anterior
1 1 1 ? Estado proibido / 
Erro
37ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
Flip-Flop D
A tabela de transição de estados pas-
sa a ser mais simples, assim, quando C = 
0 as saídas ficam estabilizadas no valor 
anterior (efeito memória). Já, quando C = 
1, as saídas têm o mesmo valor da entrada 
D. Então, note que se D = 1, teríamos a 
mesma situação do f lip-f lop RS com S = 
1 e R = 0 (set, ligar) e, ao contrário, se D 
= 0, teríamos o f lip-f lop RS com S = 0 e 
R = 1 (reset, desligar).
Existem ainda outros tipos de f lip-f lops, como o tipo T (toggle), que a cada 
ativação do sinal de controle altera o valor armazenado (valor “0” → “1” e vice-versa) 
e o tipo JK, que é semelhante ao RS, mas elimina o estado proibido. Nesse último, 
quando as duas entradas J e K são iguais a “1”, ele funciona como o f lip-f lop T, ou 
seja, ele altera o valor armazenado anteriormente. 
Existem outros detalhes de eletrônica digital vinculados aos circuitos sequenciais, 
mas que não são foco dessa disciplina, como o atraso temporal das portas lógicas e 
questões relacionadas aos níveis de ativação dos dispositivos, se sensíveis às bordas de 
subida, descida ou ao nível. Todos esses detalhes podem ser aprofundados em livros 
e sites de circuitos digitais ou de eletrônica digital.
Registradores
Com o f lip-f lop D já temos a base para a construção de elementos capazes de 
armazenar um determinado valor, visto que o mesmo é capaz de armazenar 1 bit de 
informação.
Assim, para armazenarmos mais bits precisamos de uma forma simplista, da 
seguinte forma: conectar diversos f lip-f lops em série, todos interconectados pelo 
mesmo sinal de controle (relógio). Assim, se conectarmos 4 f lip-f lops teremos um 
registrador de 4 bits. Já um registrador de 32 bits pode ser visto como um conjunto 
de 32 f lip-f lops em série, cada um com sua linha de dados distinta (entrada D do 
f lip-f lop D) e todos conectados por um mesmo sinal de controle (entrada C do f li-
p-f lop D), conforme pode ser visto na figura abaixo.
C D Qt+1 Ação/Estado
0 X Qt Mantém o estado 
anterior
1 1 1 Estado Set (“1”)
1 0 0 Estado Reset (“0”)
38ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
Utilizando estes mesmos f lip-f lops 
D e, adicionando alguns circuitos com-
binacionais, também podemos construir 
registradores de deslocamento à esquerda 
e à direita (similares aos operadores << e 
>> em linguagens de programação de alto 
nível), bem como contadores (incremen-
tadores e decrementadores).
Memória
Assim como um registrador de n 
bits pode ser visto como um array (vetor/
conjunto) de n flip-flops, uma memória de 
m posições pode ser vista como um array 
de m registradores. Caso os registradores 
dessa memória sejam, por exemplo, de 32 
bits, dizemos que a memória trabalha com 
palavras de 32 bits. 
É claro que não basta juntarmos 
alguns registradores para termos uma 
memória como conhecemos em nossos 
computadores, precisamos de no mínimo 
alguns circuitos combinacionais capazes 
de:
• na escrita de dados, selecionar qual 
palavra/registrador (endereço) irá 
receber a informação a ser gravada 
na memória;
• na leitura de dados, selecionar a 
partir de qual palavra/registrador 
(endereço) a informação deve ser 
lida;
• enviar a informação (dados) a ser 
escrita ou receber a informação (da-
dos) lida da memória;
• autorizar a escrita da informação ou 
a leitura da informação na memória 
(controle).
Os fios que carregam essas informa-
ções de endereços, de controle (leitura/es-
crita) e as informações propriamente ditas 
(os dados a serem gravados ou lidos) são 
conhecidos por barramentos. De forma 
mais específica, barramento de endereços, 
de controle e de dados, respectivamente.
A estrutura lógica de uma memó-
ria de 4 posições pode ser vista a seguir. 
Novamente, é importante ressaltar que 
a implementação física de uma memória 
não é exatamente da mesma forma que 
esta estrutura lógica, pois temos que con-
siderar atrasos das portas lógicas, tempo 
de carga e leitura dos componentes e a 
39ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
própria tecnologia de implementação. Esses detalhes, obviamente, não são escopo 
dessa disciplina.
Note a utilização do decodificador para a seleção de endereço de gravação dos 
dados e do multiplexador para a seleção do endereço de leitura dos dados. O ende-
reço a ser gravado é enviado para o decodificador, o qual mantém ativa apenas uma 
das portas AND. E, essa porta AND, com uma das entradas ativa, somente terá sua 
saída ativa quando o sinal de controle (“write”), enviado através do barramento de 
controle, também for ativado (em caso de 
dúvida, veja a tabela verdade da operação 
AND). Com a saída da porta AND ativa 
o dado será, enfim, gravado no registrador 
correto. 
O procedimento é semelhante para 
a leitura do dado, através do multiplexa-
dor. O endereço a ser lido é enviado para 
o multiplexador, o qual copiará apenas 
uma de suas entradas para a sua saída (de 
acordo com o endereço). A saída do mul-
tiplexador, por sua vez, está conectada a 
uma porta AND, que somente liberará 
o dado lido quando o sinal de controle 
“leitura” for ativado.
Para sintetizar!!!...
Nesse capítulo abordamos desde as mais simples portas lógicas (OR, AND 
e NOT), passando por portas derivadas (NAND, NOR e XOR) até os componentes 
básicos de processador e memória (Decodificadores, Multiplexadores e Flip-Flops). 
É importante que você lembre que a resolução de uma expressão booleana 
começa pela montagem de uma tabela verdade, a qual irá expressar em suas co-
lunas cada uma das variáveis de entrada e sub-expressões, bem como o resultado 
final da expressão. Dessa maneira, nas linhas das tabelas verdade você terá cada 
uma das possíveis combinações de valores das variáveis de entrada e suas conse-
quentes valorações.Tão importante quanto a resolução da expressão é sua simplificação. É muito 
mais simples de trabalhar quando a expressão está em uma forma simplificada. 
Para tanto, você pode lançar mão das leis da álgebra, como comutatividade, asso-
ciatividade, distributividade e os teoremas de De Morgan. Também é possível fazer 
a simplificação através dos mapas de Karnaugh, onde buscam-se os mintermos 
1 em oitavas, quadras, duplas e isolados. Os mapas de Karnaugh são uma forma 
diferenciada de tabela verdade, onde as entradas e os valores da expressão estão 
dispostos de forma a permitir a simplificação.
Finalmente, vimos como combinar as portas lógicas para formar circuitos 
muito importantes na organização de um computador, bem como eles podem ser 
utilizados para formar unidades funcionais de processadores e circuitos de memória.
Vamos exercitar o que estudamos até aqui? Então...
1. Para os exercícios a seguir (de 1 a 5) utilize o software MMLogic.
2. Criar um circuito que demonstre a utilização de um MUX 4:1.
3. Criar um circuito que demonstre a utilização de um Decodificador 2:4.
4. Criar um circuito que demonstre a utilização de um FF do tipo RS.
5. Criar um circuito que demonstre a utilização de um FF do tipo RS controlado.
6. Criar um circuito que demonstre a utilização de um FF do tipo D.
7. Tendo por base o conhecimento do que é um f lip-f lop, como poderia ser 
representada uma memória de um computador hipotético?
42ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
ESTRUTURA INTERNA 
DE UM COMPUTADOR 
– MODELO DE VON 
NEUMANN
Quais são as partes, que juntas, formam o 
seu computador?
A grande maioria dos computadores atuais utiliza uma 
estrutura interna baseada no modelo de Von Neumann, con-
forme já comentado no início do capítulo anterior.
43ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
Uma das grandes contribuições do 
modelo de Von Neumann, além da dis-
tribuição de seus blocos funcionais, foi o 
armazenamento de programas e dados 
em uma memória única. Fator que abriu 
a possibilidade de um programa ser mo-
dificado ao longo de sua própria execução. 
Uma vez que anteriormente a esse modelo, 
tínhamos um programa estático, geral-
mente “gravado” no próprio hardware que 
acessa os dados em algum tipo de memória 
auxiliar. Portanto, para fazer um programa 
novo, seria necessária a construção de um 
novo computador.
Entretanto, antes de falar em pro-
grama, temos que saber o que significa 
um. O programa nada mais é que uma 
sequência de instruções necessárias para 
atingir o objetivo computacional. O pro-
grama (suas instruções) e os dados sempre 
estarão armazenados na memória.
E uma instrução? O que vem a ser 
uma instrução? A instrução é a operação 
que será realizada pelo processador, na 
forma de:
OPERAÇÃO OPERANDOS
A operação diz qual função será 
desempenhada pelo processador, por 
exemplo: soma, movimentação de dados 
na memória, comparação, etc. Os ope-
randos fornecem a maneira de calcular 
a posição atual dos dados (na memória, 
registrador, etc.) com os quais a operação 
será realizada.
Sabendo o que é um programa e 
uma instrução, então, como o computador 
“sabe” a forma de executar as instruções? 
A execução de um programa pelo proces-
sador ocorre, como regra geral, dentro de 
um ciclo chamado de busca-decodifica-
ção-execução. 
O referente ciclo, em todos os pro-
cessadores modernos, ocorre como em 
uma montadora de automóveis, ou seja, 
em estágios, aqui chamados de pipeline. 
A cada ciclo de relógio do processador, 
um novo estágio do ciclo de busca-deco-
dificação-execução tem início. Apenas a 
título de curiosidade, em um processador 
de 1,2 GHz, temos aproximadamente 1,2 
bilhões de ciclos em um segundo. Ou seja, 
em tese, poderíamos ter 1,2 bilhões de 
instruções novas iniciando sua execução 
por segundo.
Para que o ciclo funcione correta-
mente, o processador possui um registra-
dor especial chamado de “apontador de 
instruções” ou “contador de instruções” 
ou ainda “ contador de programa” (CP ou 
PC em inglês – Program Counter), o qual 
armazena o endereço na memória onde 
está a próxima instrução a ser executada.
Portanto, o estágio de busca verifica 
o contador de programa (PC), acessa a me-
mória e traz a instrução para o registrador 
de instrução (RI) dentro do processador. 
O registrador de instrução simplesmente 
armazena o conteúdo da instrução dentro 
do processador. Após essa busca, o PC já 
é atualizado para conter o endereço da 
próxima instrução a ser buscada.
O estágio de decodificação lê o RI, e 
com base no campo da operação gera sinais 
de controle para o restante do hardware, 
utilizando, para tanto, “decodificadores” 
44ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
(conforme estudamos no capítulo anterior). 
Por exemplo, se o campo da operação indi-
ca que é necessário realizar uma soma, os 
decodificadores irão gerar um sinal para 
ativar a operação de soma na ULA. 
Realizada a decodificação da instru-
ção, a execução pode ser iniciada no pró-
ximo ciclo de relógio. Essa execução nada 
mais é que a aplicação da operação nos 
operandos, finalizando com o armazena-
mento do resultado em algum registrador 
ou na memória (conforme regra específica 
da operação e dos operandos envolvidos). 
A forma como cada instrução é executa-
da, ou seja, onde os operandos estarão e 
onde serão salvos sempre que consultada 
pelo programador no manual do respectivo 
processador. É claro, que um programador 
de linguagem de alto nível não precisa ter 
este conhecimento, contudo, sempre que 
for necessário realizar alguma operação 
de baixo nível (linguagem de máquina 
ou de símbolos) é recomendável conhecer 
tais detalhes. 
Além disso, é nessa etapa que os 
operandos são buscados na memória para 
serem carregados nos registradores, de forma a permitir que a operação seja executada 
com sucesso, tudo conforme as informações da operação e dos operandos (instrução). 
Caso a operação executada seja do tipo “desvio”, “salto” ou “transferência”, o 
contador de programa (PC) é atualizado para que a próxima instrução a ser executada 
seja buscada pelo ciclo de busca. Uma instrução de salto é gerada para o processador, 
por exemplo, sempre que o programador utilizar estruturas do tipo “IF-ELSE” ou 
laços em seus programas.
Com o novo valor de PC carregado, ou com aquele atualizado ao final da busca 
da instrução, um novo ciclo busca-decodificação-execução, podendo ser iniciado.
Como você pode ter percebido, diversas operações são realizadas durante a exe-
cução. Por esse motivo, diferentes processadores dividem este estágio de execução em 
diversos micro estágios, permitindo uma melhor otimização dos recursos. Os demais 
estágios também podem ser subdivididos, de acordo com o projeto do processador. 
É importante ressaltar que quanto menores os estágios, maior pode ser a frequência 
de relógio de processador. A título de curiosidade, a frequência dos Intel Pentium 4 
chegaram a ser superiores a 4 GHz. 
Conhecendo as frequências dos processadores atuais, você chegará à conclusão 
que nem sempre uma frequência mais alta significa que o processador seja mais rápido.
45ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
Blocos funcionais
A execução de um programa através do ciclo de busca-decodificação-execução 
requer a existência de estruturas funcionais que forneçam o devido suporte a cada um 
dos ciclos. Elas podem ser vistas na figura seguinte e nada mais são que as próprias 
estruturas básicas do modelo de Von Neumann, as quais muitas já conhecemos.
Processador – Unidade de Controle
Internamente ao processador, além da ULA e dos registradores, os quais já co-
mentamos rapidamente, temos a unidade de controle (UC), responsável pela geração 
dos sinais de controle para os restantes dos blocos funcionais. Esses sinais garantem 
o gerenciamento do f luxo interno de dados e do instante preciso em que ocorrem as 
transferências entre uma unidade/bloco e outra. Por exemplo, quando falamos da 
memória no capítulo anterior, vimos que existe um sinal de controle, chamado“write” 
que comanda o armazenamento dos dados 
na memória. O referido sinal é gerado pela 
UC no momento correto. Imagine se a UC 
gera esse sinal quando o dado a ser gravado 
ainda não está disponível. Teríamos uma 
potencial perda de informação!
Cada sinal de controle é responsável 
por comandar uma micro-operação, aque-
las que ocorrem em cada um dos estágios 
em que a operação é executada, como por 
exemplo, as cargas dos dados nos regis-
tradores, a seleção de dado para leitura/
gravação na memória e a seleção de uma 
operação na ULA.
Processador – Unidade lógica e aritmética 
– ULA
A ULA, como já vimos anterior-
mente, é responsável por todas as ope-
rações matemáticas, booleanas, compa-
rações, etc. Ela é formada por circuitos 
combinacionais que recebem como entrada 
as operações e geram em sua saída os re-
sultados da operação selecionada, através 
da unidade de controle. Processadores mo-
46ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
dernos possuem diversas ULAs, com di-
ferentes especialidades: ULA de números 
inteiros, ULA de números representados 
em ponto-flutuante, ULA para operações 
multimídia, etc.
Além do resultado da operação, a 
ULA é responsável por gerar alguns có-
digos de condição, os quais são utilizados 
pelas próprias instruções do programa para 
tomada de decisões, especialmente atra-
vés das instruções de desvio (geradas por 
estruturas de controle do tipo IF-ELSE 
ou laço nos programas). 
A quantidade de códigos de con-
dição varia muito de processador para 
processador, mas geralmente todos apre-
sentam os seguintes códigos:
• Overflow: indica se na última ope-
ração ocorreu um estouro de campo. 
Um estouro ocorre quando a capa-
cidade de representação em biná-
rio para determinada informação 
é superada. Por exemplo, suponha 
que uma operação de soma em deci-
mal 8+8 deva ser executada em um 
computador com ULA de 4 bits. 
Com 4 bits, podemos representar 
os números inteiros positivos de 0 
a 15. Ou seja, a soma acima geraria 
um estouro de representação, pois 
esse computador não seria capaz de 
representar tal número adequada-
mente. Dessa forma, é provável o 
resultado da soma, que em decimal, 
seria zero. A ULA em questão gera-
ria o resultado da soma (0) e ligaria 
o sinal (ou condição) de overf low, 
para demonstrar que provavelmente 
um erro ocorreu.
• Sinal: se o resultado da operação é 
negativo ou positivo, de acordo com 
a representação numérica utiliza-
da pelo processador. Geralmente 
os processadores trabalham com a 
representação em complemento de 2.
• Carry: representa o bit de “vai-um” e 
“vem-um” em operações aritméticas.
• Zero: se da operação ocorreu um 
resultado zerado.
As entradas e saídas da ULA ge-
ralmente estão conectadas a registradores 
do processador e um destes tem um nome 
especial: o acumulador. O acumulador tem 
por função essencial armazenar os operan-
dos e/ou o resultado fornecido pela ULA. 
Processadores simples possuem um único 
acumulador para cada ULA, enquanto 
processadores mais modernos possuem 
diversos acumuladores para cada ULA.
Barramentos
Todos os sinais de controle, bem 
como os dados e demais informações 
necessárias ao bom funcionamento dos 
sistemas computacionais transitam fisica-
mente pelos blocos funcionais através do 
barramento do sistema (system bus). Na 
verdade, o barramento do sistema é dividi-
do em barramento de dados, de controle e 
de endereço. Todos eles são caracterizados 
por sua largura, em bits. Por exemplo, um 
barramento de 32, aqui o barramento 4 
bytes pode ser transferido simultaneamen-
te. Quanto mais bits, mais informações 
podem ser transferidas simultaneamente. 
47ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
Contudo, quanto maior a quantidade de 
bits, menor a distância em que o barra-
mento pode operar, como também maior 
é a dificuldade dos projetistas de hardware 
para aumentar a frequência de seu funcio-
namento (em Hz, MHz ou GHz). 
O barramento de dados é utilizado 
para transferência dos mesmos de/para o 
processador, de/para os periféricos (im-
pressora, teclado, monitor, etc.) ou de/para 
a memória. O barramento de controle é 
por onde circulam os sinais de controle 
gerados pela UC. E, finalmente, o bar-
ramento de endereços é por ondem circu-
lam os endereços para acesso à memória e 
para acesso aos periféricos. Observe, como 
exemplo, que um barramento de endereço 
de 32 bits, tem a capacidade de endereçar 
até 4GB da memória (232 = 4.294.967.296 
bits ou 4GB). Esse é um dos motivos pelo 
qual os processadores de 32 bits reconhe-
cem apenas 4GB de memória RAM (sem 
considerar eventuais extensões). 
Memória
A memória, conforme já foi discor-
rido, é o local onde temos armazenado as 
instruções (programas) e os seus respec-
tivos dados. Nenhum programa pode ser 
executado sem que esteja inserido (instru-
ções e dados) na memória do computador. 
Mesmo que você saiba que o programa 
está gravado em alguma outra mídia (disco 
rígido, DVD, pendrive) ele precisará ser 
carregado na memória para que o pro-
cessador possa iniciar a execução de suas 
instruções.
A memória está dividida em pala-
vras, cada uma com um respectivo ende-
reço. A unidade de controle do processa-
dor gera, além dos sinais de controle para 
leitura/gravação na memória (enviados 
através do barramento de controle), os 
endereços que a operação necessita ler ou 
gravar na memória.
Um dos grandes problemas dos 
computadores atuais é a diferença de ve-
locidade de operação do microprocessador 
e do sistema de memória. A frequência 
em que os processadores operam é muito 
mais alta que a frequência em que as me-
mórias operam. Além disso, o crescimento 
da frequência dos processadores é muito 
maior que o crescimento da frequência 
das memórias. 
Uma das possíveis soluções para esse 
problema e a mais utilizada é o emprego de 
uma hierarquia de memória. O emprego 
dessa hierarquia só é possível devido à 
possibilidade de construção de memórias 
muito rápidas (trabalhando na mesma fre-
quência do processador). Essas memórias 
são muito caras e por isso de tamanho 
muito reduzido. Assim, as memórias mais 
rápidas estão próximas do processador, 
contendo os dados e instruções que o 
processador precisa em certo momento. 
As memórias mais lentas (grande capa-
cidade) são utilizadas para guardar dados 
e instruções que não estão sendo usadas 
no momento da operação. Além disso, a 
hierarquia de memória tem sua construção 
fortemente baseada no princípio de loca-
lidade de referência (temporal e espacial), 
isto é, os programas têm a tendência de 
48ORGANIZAÇÃO E ARQUITETURADE COMPUTADORES
executar os mesmos trechos de código (ou trechos próximos uns dos outros) durante 
grande parte do tempo de execução. 
Logo, ao dividirmos o sistema de memória em níveis, esperamos obter um de-
sempenho próximo ao da memória mais rápida e o custo por bit próximo da memória de 
menor custo. Geralmente, é utilizado um sistema de memória de 3 níveis. O primeiro 
nível é representado pelas memórias cache, usualmente integradas ao processador ou 
à placa-mãe, sendo inclusive hierarquizadas em outros dois ou três níveis (cache L1, 
L2 e L3). O segundo nível é representado pela memória RAM (memória principal) 
e por fim, o terceiro nível, é representado pelo disco rígido (memória secundária).
Hierarquia de memória
Grande parte de memória encontrada em um computador pessoal é memória 
RAM (Random Access Memory), a qual perde as informações quando desligada. A 
RAM pode ser dinâmica (DRAM), quando necessita de um refresh periódico para 
não perder a informação, ou estática (SRAM), quando retém a informação enquanto 
estiver ligada. A SRAM é utilizada geralmente em memórias cache, por ser mais 
rápida (e mais cara) e a DRAM é utilizada na memória principal (mais lenta, mas 
mais barata).
A memória principal (ou primária) 
tem evoluído muito nesses últimos anos, 
tentando acompanhar a evolução dos mi-
croprocessadores. As principais tecnologias 
disponíveis hoje em dia são as seguintes:
• Synchronous DRAM (SDRAM):

Continue navegando