Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
GUILHERME DAL PIZZOL
2ORGANIZAÇÃO E ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 linhase 
assim por 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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ão 
booleana 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 = 0011D = 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 identidade 
da 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 obtida 
pelo 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 doprocessador. Pro-
cessadores simples possuem ULAs 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 permitida 
apenas 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 valoresdas 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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óriano 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 ARQUITETURA
DE 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 tecnologiasdisponíveis hoje em dia são as seguintes:
• Synchronous DRAM (SDRAM): 
capaz de acessar um byte a cada ci-
clo de clock. Utiliza um pipeline 
interno, para iniciar o acesso a um 
segundo dado antes de o primeiro 
ter sido consumido pelo sistema. 
Possui barramentos de 66, 100 e 
133 MHz.
• Double Data Rate SDRAM (DDR): 
permite fazer dois acessos a cada 
ciclo de clock. Possui o dobro da 
taxa de transferência da memória 
SDRAM comum, visto que a cada 
ciclo consegue acessar dois bytes. 
Atualmente, temos a evolução da 
memória DDR: DDR3 e DDR4. 
Ambas realizam dois acessos por 
ciclo, todavia a primeira permite ler 
8 bytes e a segunda 16 bytes para 
dados a cada ciclo desses. A memó-
ria DDR possuía barramentos com 
49ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
relógio de 100 a 200 MHz, o que 
rendia uma taxa de transferência 
teórica entre 200 a 400 MB/s (mi-
lhões de bytes por segundo). Assim, 
a memória DDR2 trabalhou entre 
200 e 533MHz, atingindo taxas 
de transferência entre 800 e 2132 
MB/s. A DDR3, por sua vez, tra-
balha com frequências entre 400 
e 1066MHz, atingindo taxas de 
transferência entre 6,4 GB/s (bilhões 
de bytes por segundo) e 17 GB/s. 
O cálculo dessas taxas de trans-
ferência é feita da seguinte forma: 
Taxa de transferência X Números 
de acessos (2) X Número de Bytes 
transferidos. Da taxa de transfe-
rência e da frequência de relógio 
temos os nomes “comerciais” das 
referidas memórias. Por exemplo, 
a memória DDR3-800 refere-se a 
uma memória do tipo DDR3, com 
frequência de 400 MHz (o 800 é 
obtido pela multiplicação da frequ-
ência pelo número de acessos, que 
é sempre 2 para todas as DDRs). 
Também pode ser encontrada por 
PC3-6400 (nome dado geralmen-
te ao módulo físico da memória). 
A memória DDR4 trabalha com 
frequências entre 800 e 1200MHz, 
obtendo taxas de transferência entre 
12,8GB/s e 19,2GB/s.
Dois módulos de 8GB – DDR4-2133 (fre-
quência de 1066MHz, taxa de 17GB/s)
Além da memória RAM, temos nos 
computadores atuais alguns componentes 
com memórias do tipo ROM (Read Only 
Memory). Esse tipo de memória, ao con-
trário da RAM, não perde a informação 
armazenada quando não está energizada. 
Existem diversos tipos de memória ROM:
• •PROM (Programmable ROM): é 
uma memória ROM que pode ser 
programada (gravada) apenas uma 
única vez, mediante aplicação de 
pulsos de voltagem;
• EPROM (Erasable Programmable 
ROM): é semelhante a PROM, mas 
seu conteúdo pode ser zerado (e gra-
vado novamente) mediante aplicação 
de luz ultravioleta;
• EEPROM (Electricaly Erasable 
Programmable ROM): semelhante à 
EPROM, contudo não necessita de 
luz ultravioleta para zerar seu con-
teúdo (substituído por eletricidade).
• Flash ROM: é uma variação da 
EEPROM, permitindo uma exce-
lente utilização da área do chip de 
memória e podendo ser regravado 
milhares de vezes antes de perder 
sua utilidade (chips EEPROM tem 
um número pequeno de ciclos de 
regravação – apagar/gravar).
 As utilizações da memória ROM 
50ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
(atualmente Flash ROM, devido à ne-
cessidade de constantes atualizações) no 
computador são basicamente destinadas 
aos firmwares (software que comanda al-
gum hardware específico) dos periféricos 
(disco-rígido, placa de vídeo) e ao próprio 
software que inicia o computador quando 
ligado, o BIOS. E, é claro, as memórias 
Flash também são famosas por serem uti-
lizadas em pendrives e cartões de memória 
portáteis.
Periféricos – Sistema de Entrada e Saída 
(E/S)
O sistema de entrada e saída (E/S ou 
no inglês I/O – Input/Output) é o respon-
sável pelo interfaceamento entre o sistema 
computacional e o mundo externo. Essa 
interface é feita através da transferência 
de dados entre periféricos, processador 
e memória. O sistema de E/S é composto 
de:
• Periféricos: todos os dispositivos 
conectados ao computador. Podem 
ser de entrada, como por exemplo: 
teclado, leitor de código de barra, 
mouse e scanner; de saída, como 
monitor e impressora ou ainda 
mistos: monitor com tela sensível 
ao toque, pendrives, CD-R/RW/
DVD-R/RW e discos rígidos, entre 
outros.
• Interface: coordena a transferência 
de dados entre o processador e os 
periféricos.
• Controlador: “cérebro da interface”, 
realiza o controle da transferência 
dos dados.
• Driver: elemento de software que 
contém as rotinas encarregadas da 
comunicação do processador com 
a interface do periférico. Ainda, é 
aquele software que o próprio sis-
tema operacional instala (ou solicita 
que você instale) quando um novo 
periférico é conectado ao compu-
tador.
• Porta de E/S: endereço no sistema 
de E/S utilizado para acesso ao pe-
riférico.
• Barramento: conjunto de fios que 
transportam dados, endereços ou 
instruções.
Periféricos – Barramentos
Os barramentos, como dito anterior-
mente, são os elementos do hardware que 
permitem a interconexão entre diversos 
componentes. Computadores antigos pos-
suíam apenas barramentos ditos internos, 
pois não existiam periféricos em dema-
sia. Com a popularização dos periféricos, 
barramentos externos ou barramentos de 
expansão foram sendo criados. 
A conexão desses componentes no 
barramento deve seguir um certo padrão 
lógico e físico. Os padrões mais comuns 
nos PCs são o PCI e PCI-Express. Além 
disso, outros barramentos, também impor-
51ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
tantes, são o SATA, SCSI e SAS, utili-
zados para fazer a interligação de dispo-
sitivos de armazenamento. Também não 
podemos deixar de citar o USB, barra-
mento bastante utilizado para conexão de 
periféricos comuns a usuários domésticos 
(pendrives, impressoras, teclado, mouse, 
dispositivos móveis, etc.). O que diferencia 
um barramento do outro é sua interface 
(slots - onde os periféricos são encaixa-
dos), a transferência dos dados, serial (1 
bit por ciclo) ou paralela (mais de um bit 
por ciclo), bem como os padrões elétricos 
e físicos envolvidos.
O barramento PCI (Peripheral 
Component Interconnect) foi introduzi-
do pela Intel na linha Pentium, e ainda 
é utilizado em alguns PCs. Ele foi cons-
truído com a intenção de substituir o ISA 
(Industry Standard Architecture), que é 
um barramento ultrapassado, lançado nas 
primeiras versões de PC-AT, o qual traba-
lha a 8 MHz e possui um canal de 16 bits, 
ou seja, é um barramento paralelo, obten-
do-se uma taxa de transferência máxima 
de 16 MB/s. Por sua vez, o barramento 
PCI, na sua versão original trabalhava a 
33 MHz, com um canal de 32 bits, ob-
tendo uma taxa de transferência máxima 
de 133 MB/s. As versões mais novas do 
barramento podem trabalhar a 66 MHz 
e 133 MHz com canais de 32 ou 64 bits, 
atingindo transferências de até 266, 533 
e mais de 1000 MB/s.
Com a evolução dos periféricos, em 
especial as placas de vídeo, outros bar-
ramentos foram criados, como o AGP 
(Accelerated Graphics Port) e o PCI-
-Express. O primeiro já não é mais am-
plamente utilizado e o segundo pode ser 
visto como uma evolução do próprio PCI, 
sendo ainda bastante utilizado. A grande 
diferença entre o PCI e o PCI-Express é 
que, enquanto o primeiro é um barramento 
paralelo, o segundo é serial. Barramentos 
paralelos não conseguem grandes taxas 
de transferência por problemas de inter-
ferência elétrica ao aumentar a frequência 
de operação. 
Por ser um barramento serial e, com 
o intuito de melhorar seu desempenho, o 
barramento PCI-Express conta com lanes 
(“pistas”) de 1 bit em cada sentido, para 
52ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
transferência de dados (entre cada peri-
férico e o controlador PCI-Express). O 
número de pistas pode variar entre 1, 4, 
8, 16 e até mesmo 32. As taxas de trans-
ferência podem variar de pouco menos 
de 1 GB/s (com um lane) até 15,7 GB/s 
(com 16 lanes).
Um dos barramentos mais utiliza-
dos pelos usuários é o barramento USB 
(Universal Serial Bus). Como o próprio 
nome diz, trata-se de um barramento 
serial, sendo que, internamente, acaba 
sendo conectado ao barramento PCI ou 
PCI-Express. Por ser um barramento de 
padrões abertos,com baixo custo de seus 
conectores e capaz de fornecer carga para 
os mais diversos dispositivos, acabou sen-
do amplamente utilizado pela indústria/
consumidores. 
Quando o padrão USB surgiu com 
sua versão 1.0 (em 1996), acabou sendo 
utilizado para conexão de equipamentos 
“lentos”, como teclado, mouse e impres-
soras, substituindo os diversos padrões 
existentes para conexão destes dispositivos 
(portas seriais, paralelas, PS/2, DIN e 
Mini-DIN). 
O USB teve seu desempenho li-
geiramente melhorado com o advento da 
versão 2.0 em 2001, sendo capaz de atingir 
taxas de transferência teóricas de até 480 
Mbit/s ou 60MB/s (na prática não supe-
ram os 35MB/s). A taxa de transferência 
da versão 1.0 era de apenas 12Mbit/s ou 
1,5MB/s. A versão 3.0, disponibilizada 
em 2010, aumentou a taxa de transferência 
teórica para 4.0GB/s. 
O que talvez possa confundir um 
pouco os usuários é a quantidade de di-
ferentes conectores para periféricos USB: 
tipo A, tipo B, micro-A, micro-B, mini-
-A, mini-B e tipo C. Existem também as 
variantes “superspeed” (super velocidade 
– versão 3.0 – conector azul), dos tipos A, 
B e micro B. Abaixo você pode verificar 
as diferenças entre os conectores.
53ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
Periféricos – Barramentos para Discos 
rígidos
Discos rígidos são meios magné-
ticos de armazenamento de informação. 
As informações são guardadas de forma 
permanente, permitindo a recuperação 
das informações mesmo após seu desliga-
mento. Sua capacidade é muito maior que 
a capacidade de memória RAM. Atual-
mente, cada disco pode guardar mais de 
10 TB (terabytes – 1 terabyte = 1024 GB) 
de informações.
Hoje em dia, são utilizados três ti-
pos distintos de interface de discos (inter-
conexão entre o barramento e o disco): o 
SATA, SCSI e o SAS. 
O padrão SATA (Serial ATA) é a 
evolução do padrão IDE (Integrated Drive 
Electronics). Os discos IDE usavam a es-
pecificação ATA, e por isso, também eram 
conhecidos por esse nome. A transferência 
de dados no padrão IDE/ATA ocorria de 
forma paralela, com taxas de transferência 
máxima entre 100 e 133 MB/s. Como já 
havia ocorrido com outros barramentos, 
tal padrão não permitia novos avanços em 
termos de maiores taxas de transferência, 
tendo evoluído então para a especificação 
serial do padrão ATA: o Serial ATA, ou 
SATA. Desde então, o antigo padrão IDE/
ATA, passou a ser conhecido por PATA 
(Parallel ATA).
Slot IDE em Placa-mãe
Disco rígido com conexão PATA
Cabos PATA
A primeira versão do padrão SATA, 
lançado em 2003, conhecido por SATA-I 
permitia taxas máximas de transferência 
de 150MB/s, sendo superior ao último 
padrão PATA. A versão 2.0 do padrão 
SATA (SATA-II), lançada já em 2004, 
trouxe um grande incremento na taxa de 
transferência, alcançando até 300MB/s. 
Essa versão era compatível com a versão 
1.0, permitindo a interoperabilidade entre 
os discos. É claro que conectando um disco 
SATA-2 em uma controladora SATA-1, 
o mesmo não iria fornecer todo o desem-
penho possível.
54ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
Diferença entre conector SATA (esquerda) e 
PATA (direita)
Com o padrão 2.0 do SATA, os 
discos de estado sólido (SSDs – Solid 
State Disk) começaram a tornar-se po-
pular, dado que até então nenhuma con-
troladora era capaz de suportar a grande 
taxa de leitura/gravação que esse tipo de 
tecnologia de disco era capaz de fornecer. 
Falaremos um pouco mais dessa tecnologia 
na sequência.
Cabo SATA
Em 2009, foi lançada a versão 3.0 
do padrão SATA, alcançando taxas de 
transferência de até 600MB/s (6 Gbit/s). 
As versões posteriores, 3.1 e 3.2, intro-
duziram melhorias para tratamento dos 
discos SSD, permitindo até taxas de 16 
Gbit/s ou 1900 MB/s. O padrão SATA 
também possui uma interface externa, 
semelhante a uma porta USB, chamada 
eSATA (e = external), conforme figura a 
seguir. É uma alternativa para conexão 
de discos externos, sem a necessidade de 
cabos extra de alimentação, com uma ex-
celente taxa de transferência.
Porta eSATA
O padrão SCSI (Small Computer 
System Interface) foi lançado em 1988 e 
era utilizado por computadores Macintosh. 
Hoje em dia, ele é bastante utilizado em 
servidores PCs que fazem muito acesso 
a disco. O SCSI não é só utilizado para 
discos rígidos, ele é um barramento de 
periféricos, podendo ligar além de discos, 
drives de CD-ROM, discos óticos, fitas 
magnéticas, scanners, entre outros. A ver-
são paralela do SCSI, a mais comum até 
a década passada alcançava uma taxa de 
transferência de até 160 MB/s no SCSI-3 
Ultra-3.
Conectores e cabos SCSI paralelos
55ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
Disco SCSI
Como acontecera com os outros pa-
drões, o SCSI também recebeu versões 
seriais, sendo SAS a mais conhecida – 
Serial attached SCSI. Uma das grandes 
vantagens do SAS é ser compatível com 
o padrão SATA-II e mais recentes. Além 
disso, é importante ressaltar que o contrá-
rio não é possível, ou seja, não é possível 
conectar um disco SAS em uma interface 
SATA. A versão 3 do SAS alcança taxas de 
transferência de até 12 GBit/s ou 1,2GB/s.
Diferença entre interface SATA e SAS
No barramento SCSI (e SAS), a co-
municação dos dados sempre ocorre en-
tre um initiator (“iniciador”) e um target 
(“destino”). O initiator envia um comando 
ao target, o qual responde. Desse modo, 
existem mais de 60 comandos definidos 
pelo protocolo SCSI (incluindo os de leitu-
ra e escrita), motivo pelo qual o barramen-
to sempre foi bastante robusto e utilizado, 
primeiramente, em servidores. O padrão 
SATA, hoje em dia, utiliza grande parte 
desses comandos.
Cada dispositivo em um barramento 
SCSI recebe um identificador SCSI único 
ou ID SCSI, sendo que podem existir di-
versas unidades lógicas em um dispositivo, 
como, por exemplo: um gravador de fitas 
com diversos leitores ou um equipamento 
SAN – Storage Area Network. Assim, 
cada unidade lógica é endereçada atra-
vés de um Logical Unit Number (LUN 
– número de unidade lógica). Dispositivos 
simples, como um disco rígido, possuem 
apenas um único LUN. 
Periféricos – Discos Rígidos (HD)
Agora que já conhecemos um pouco 
sobre os barramentos que conectam os 
discos rígidos ao computador, podemos 
falar um pouco sobre os discos rígidos ou 
hard disks (HD). 
Os discos rígidos são formados por 
sequências de círculos concêntricos (de 
mesmo centro), chamados de trilhas. Estas 
trilhas são separadas entre elas por espaços 
sem dados, chamados de gaps. Cada trilha 
é separada em unidades de tamanho fixo, 
chamadas de setores. Cada setor físico 
tem, geralmente, 512 bits de informação. 
As trilhas estão dispostas em discos ou 
pratos, sendo assim, um conjunto de tri-
56ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
lhas concêntricas é chamado de cilindro.
Pratos, cabeças de leitura e cilindros.
Além da informação propriamente 
dita, cada um dos setores também armaze-
na informações de controle em seu início e 
no seu fim. Essas informações de controle 
incluem código ECC (Error correction 
code), responsável por detectar e corrigir 
erros nos dados armazenados. 
A definição das trilhas e dos setores 
nas trilhas é feita pelo fabricante do disco 
rígido através do processo de formatação 
física. Alguns fabricantes fornecem essas 
ferramentas ao usuário final. 
Atente-se para o fato de que o usu-
ário realiza em seu computador o processo 
de formatação lógica, que é distinto da 
formatação física, por preparar o disco 
rígido para ser lido e gravado pelo siste-
ma operacional selecionado (Windows, 
Linux, etc.). Outro processo importante, 
realizado pelos usuários, é o de particio-
namento do disco antes de sua utilização. 
O processo de particionamento cria uni-
dades de armazenamento lógicas, como 
forma de otimizar o armazenamento dos 
dados, limitar o crescimento de dados em 
uma partição específica e também isolar 
eventuais problemas que ocorram com o 
disco rígido. É como se o usuário criasse 
um, dois, três ou n discos em um único 
hardware.
O processo de leitura/gravação no 
discorígido é realizado através da passa-
gem de uma cabeça de leitura/gravação 
sobre o prato (setor/trilha) onde os dados 
estão/serão armazenados. Para quem já 
teve a oportunidade de visualizar ou uti-
lizar um disco de vinil, é um processo se-
melhante. A única diferença é que no vinil 
a cabeça de leitura entra em contato com o 
disco, no HD isso nunca pode acontecer. 
Se houver contato entre a cabeça de leitura 
e o prato magnético do disco rígido, você 
perderá seu disco e, consequentemente, 
seu conteúdo. É por esse motivo que não 
podem existir movimentos fortes no com-
putador enquanto ele está sendo utilizado. 
Nesse processo de leitura/gravação, 
três tempos bastante importantes estão 
envolvidos:
1. Tempo de posicionamento (seek 
time): tempo necessário para posi-
cionar o cabeçote de leitura na trilha 
desejada. São fatores determinantes 
para esse tempo o acionamento e 
aceleração do braço do cabeçote e o 
deslocamento até a trilha desejada. 
Esses são dados fornecidos pelo fa-
bricante no manual do disco rígido. 
Sempre os verifique na comparação 
57ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
entre modelos distintos.
2. Tempo de latência rotacional (la-
tency time): tempo necessário para 
o setor específico ficar embaixo do 
cabeçote. Depende, na maioria das 
vezes, da velocidade de rotação dos 
discos: os valores geralmente en-
contrados são 5400 (5.4K) , 7200 
(7.2K), 10.000 (10K) e 15.000 (15K) 
rpm (rotações por minuto). Quanto 
maior o valor, melhor e, obviamente, 
mais caro será.
3. Tempo de transferência: tempo ne-
cessário para a efetiva leitura/escri-
ta dos dados. Depende também da 
velocidade de rotação dos discos.
Tempos associados a uma leitura/gravação 
em disco.
Outra tecnologia de disco rígido 
surgida há poucos anos e que vem tomando 
conta do mercado, especialmente em face 
às rápidas interconexões lançadas (SATA 
2 e 3), é a dos discos de estado sólido ou 
SSD – Solid State Disk. A grande dife-
rença desses discos é que não são mais 
usados pratos magnéticos para armazenar 
as informações e sim memória do tipo 
Flash, semelhantes àquelas que falamos 
anteriormente. Assim, não existem mais 
problemas de contato entre a cabeçote e 
o prato magnético, bem como o espaço 
destinado aos discos rígidos pode ser di-
minuído, reduzindo até mesmo o consumo 
elétrico e de ar condicionado em grandes 
datacenters.
Entretanto, como nem tudo é perfei-
to, esse tipo de tecnologia também apre-
senta seus problemas. Um deles é o custo 
mais elevado de aquisição, comparado a 
um disco convencional de mesma capaci-
dade. O segundo é a quantidade de ciclos 
de gravação que o dispositivo suporta em 
cada uma das células que formam este tipo 
de memória. 
A memória NAND Flash (evolução 
da memória Flash ROM que falamos ante-
riormente), assim como as demais memó-
rias ROM, não permitem a modificação 
dos dados armazenados, ao contrário da 
memória RAM do computador e os discos 
magnéticos comuns. Para alterar um valor 
nos SSDs (lembre que os mesmos utili-
zam memória NAND Flash), é necessário 
apagar a informação existente e gravar o 
conteúdo desejado. Isso é o chamado ciclo 
de gravação, limitado nesses dispositivos 
a alguns milhares (aproximadamente 50 
a 100 mil) em cada uma de suas célu-
las. Muito embora as tecnologias estejam 
evoluindo para minimizar tal problema, 
juntamente com os sistemas operacionais 
(ao invés de apagar um arquivo o sistema 
operacional informa quais dados não estão 
mais em uso), esse ainda é um problema 
para adoção em massa dessa tecnologia.
Para sintetizar!!!...
Os computadores atuais possuem o mesmo modo de funcionar dos primeiros computadores da década de 60. 
São compostos por processador, memória principal e dispositivos periféricos de entrada e saída, incluída a memória 
secundária (discos rígidos).
O processador é composto pelas unidades funcionais, ou aritmético e lógicas, responsáveis por todos os 
cálculos e pela unidade de controle, também pelo envio de sinais de controle que comandam todos os demais ele-
mentos do computador. Além disso, ainda temos no processador os registradores, encarregado por armazenar a 
informação em processamento dentro do processador. As conexões entre as unidades do processador e dos demais 
elementos são realizadas pelos barramentos (de dados, controle e de endereços). A capacidade de transporte dos 
barramentos e de armazenamento dos processadores em bits determinam se o processador é de 16, 32 ou 64 bits.
Quando falamos em barramentos, temos que lembrar que diversas tecnologias são empregadas em sua cons-
trução e os mesmos podem ser paralelos, como o PCI, PATA e SCSI ou seriais, como USB, PCI-Express, SATA e SAS.
Temos dois tipos de memória: RAM e ROM. A principal característica da primeira é a perda da informação 
armazenada sempre que a energia é retirada. A segunda, por sua vez, não perde a informação, porém não pode 
ser modificada. Nos modelos de ROM que conseguimos alterar a informação, primeiro temos que apagar e depois 
gravar a nova informação. As memórias, com exceção dos registradores internos ao processador, sempre são mais 
lentas que o processador, motivo pelo qual existe uma hierarquia de memória. Memórias mais rápidas e caras são 
postas próximas ao processador (memória cache) enquanto grande quantidade de memória, barata e menos rápida) 
é deixada como principal (memória RAM propriamente dita).
Entre os principais dispositivos de entrada e saída, temos os discos rígidos. Atualmente temos duas principais 
tecnologias: magnética, onde os dados estão dispostos em pratos magnéticos, cuja leitura é realizada através do 
posicionamento de uma cabeça de leitura sobre/sob cada um dos pratos; e de estado sólido, onde os dados são 
armazenados em memória ROM do tipo Flash.
Vamos exercitar o que estudamos até aqui? Então...
1. Pesquise o que é um equipamento SAN. Procure diferenciá-lo de um equipamento 
do tipo NAS (Network Attached Storage).
2. O que é e como é formada uma instrução?
3. O que é um programa?
4. O que é o ciclo de busca-decodificação-execução de instruções?
5. Quais blocos funcionais formam um computador clássico (4 blocos – o processador 
é dividido em dois blocos)?
6. O que são sinais de controle? Quem os gera?
7. O que são barramentos? Quais são os tipos (não tecnologias) de barramento 
encontrados em um computador?
8. O que é a palavra de uma memória?
9. O que são códigos de condição em uma ULA?
10. O que é um acumulador? Qual sua função?
11. O que é o apontador de instruções ou contador 
de programa?
12. O que é o modelo de Von-Neumann? Qual sua 
importância?
13. O que caracteriza a arquitetura de um computador?
60ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
COMPUTADOR 
HIPOTÉTICO NEANDER
Como o computador executa um programa? 
Um computador pode ser visto de um ponto de vista 
organizacional, ou seja, do modo que ele se encontra fisica-
mente organizado (quais são suas interfaces, sinais de controle, 
tipo de memória, etc.) ou do ponto de vista arquitetural ou 
funcional. Quando falamos em arquitetura de um computador 
estamos nos referindo de como o programador enxerga esse 
computador. 
Por exemplo, existem dois principais fabricantes de 
processadores para PCs domésticos: Intel e AMD. Ambos 
compartilham de uma mesma arquitetura (chamada IA-32 para 
processadores de 32 bits e x64 para processadores de 64 bits), 
mas a organização interna das duas famílias de processadores 
é bastante distinta. Dessa maneira, esse é um dos motivos 
para os dois nunca serem iguais quanto ao desempenho. Ou 
seja, os programadores e usuários enxergam o computador 
da mesma forma, independentemente se o processador é um 
ou outro. Nesse sentido, essas visões podem ocorrer em di-
ferentes níveis: desde o hardware, passando pela linguagem 
61ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
de máquina, de símbolos e de alto nível. 
Quanto a visão de linguagem de alto 
nível, você terá oportunidade de verificar 
em outras disciplinas. Já, nessa discipli-
na você teráa oportunidade de conhecer 
um pouco de linguagem de máquina e 
de linguagem de símbolos. Para tanto, 
usaremos um computador hipotético, de 
fins exclusivamente didáticos, chamado 
NEANDER.
No entanto, antes disso, é importan-
te que você conheça como uma pequena 
operação matemática é resolvida por um 
processador, claro, dependendo do tipo 
de arquitetura utilizada.
Em uma arquitetura de quatro ende-
reços, o formato da instrução é o seguinte 
(lembre-se de que cada instrução é forma-
da por OPERAÇÃO OPERANDOS):
OP E1 E2 E3 E4
Suponha, então, a expressão mate-
mática: A = (( B+ C ) * D + E – F ) / (G * 
H). Para resolvê-la usando uma arquitetura 
seriam necessárias as seguintes instruções:
Já, em uma arquitetura de três ende-
reços, o formato da instrução é o seguinte:
OP E1 E2 E3
Endereço Instrução Comentário
e1 ADD B C A e2 Adiciona B e C, 
resultado em A; 
vai para e2
e2 MUL A D A 
e3
Multiplica A por D, 
resultado em A; 
vai para e3
e3 ADD A E A e4 Adiciona A e E, 
resultado em A; 
vai para e4
e4 SUB A F A e5 Subtrai F de A, 
resultado em A; 
vai para e5
e5 DIV A G A e6 Divide A por G, 
resultado em A; 
vai para e6
e6 DIV A H A e7 Divide A por H, 
resultado final em 
A; vai para e7
e7 HALT Fim do programa
62ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
Nesse tipo de arquitetura não temos 
mais como indicar qual a próxima instru-
ção a ser executada, então precisamos de 
um registrador para apontar qual a ins-
trução a ser executada. Este registrador 
especial, que já comentamos no capítulo 
anterior, é chamado de PC ou Program 
Counter – Contador de programa. Como 
não temos mais como indicar qual o pró-
ximo endereço, também precisamos de 
instruções de salto ou jump, que servem 
apenas para alterar o f luxo normal de exe-
cução das instruções (a próxima instrução). 
A mesma expressão anterior pode 
ser resolvida nos seguintes passos.
Ainda, em uma arquitetura de dois 
endereços, o formato da instrução é o se-
guinte:
OP E1 E2
Nessa arquitetura não temos mais 
um operando para armazenar o resultado 
das operações. Dessa forma, o resultado 
da operação é sempre armazenado em um 
dos dois operandos. Aqui, o primeiro ope-
rando também receberá o resultado da 
operação. Também passa a ser necessário 
uma instrução que movimente os dados 
de um registrador (variável de entrada) 
para outro. 
A mesma expressão anterior pode 
ser resolvida nos seguintes passos:
Endereço Instrução Comentário
e1 ADD B C A Adiciona B e C, 
resultado em A; 
incrementa PC
e1 + 1 MUL A D A Multiplica A por D, 
resultado em A; 
incrementa PC
e1 + 2 ADD A E A Adiciona A e E, 
resultado em A; 
incrementa PC
e1 + 3 SUB A F A Subtrai F de A, 
resultado em A; 
incrementa PC
e1 + 4 DIV A G A Divide A por G, 
resultado em A; 
incrementa PC
e1 + 5 DIV A H A Divide A por H, 
resultado final em 
A; incrementa PC
e1 + 6 HALT Fim do programa
63ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
Por fim, temos arquitetura de ape-
nas um único operando (ou endereço). Em 
uma arquitetura de um endereço temos um 
Endereço Instrução Comentário
e1 MOV A B Move o conteúdo de B 
para A
e1 + 1 ADD A C Adiciona A e C, 
resultado em A; 
incrementa PC
e1 + 2 MUL A D Multiplica A por D, 
resultado em A; 
incrementa PC
e1 + 3 ADD A E Adiciona A e E, 
resultado em A; 
incrementa PC
e1 + 4 SUB A F Subtrai F de A, 
resultado em A; 
incrementa PC
e1 + 5 DIV A G Divide A por G, 
resultado em A; 
incrementa PC
e1 + 6 DIV A H Divide A por H, 
resultado final em A; 
incrementa PC
e1 + 7 HALT Fim do programa
registrador adicional, chamado acumulador, utilizado sempre como um dos operandos 
em operações aritméticas e lógicas. Ele também recebe o valor resultante da operação. 
A mesma expressão anterior pode ser resolvida nos seguintes passos:
Como você deve ter notado, em qualquer uma das arquiteturas conseguimos 
resolver a expressão matemática. Em uma arquitetura com menos operandos nas 
instruções precisamos de alguns passos a mais. Contudo, simplificando as instruções, 
os projetistas de hardware podem construir processadores mais simples e eficientes. 
O que interessa a nós, neste momento, é conhecer como são formadas as instruções 
nos processadores que iremos trabalhar. 
Endereço Instrução Comentário
e1 LDA B Carrega o conteúdo de B no acumulador (ACC)
e1 + 1 ADD C Adiciona ACC e C, resultado em ACC; incrementa PC
e1 + 2 MUL D Multiplica ACC por D, resultado em ACC; incrementa 
PC
e1 + 3 ADD E Adiciona ACC e E, resultado em ACC; incrementa PC
e1 + 4 SUB F Subtrai F de ACC, resultado em ACC; incrementa PC
e1 + 5 DIV G Divide ACC por G, resultado em ACC; incrementa PC
e1 + 6 DIV H Divide ACC por H, resultado final em ACC; 
incrementa PC
e1 + 7 STA A Salva o conteúdo de ACC em A; incrementa PC
e1 + 8 HALT Fim do programa
64ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
Computador NEANDER
O NEANDER é um computador 
de 8 bits (1 byte), ou seja, os barramen-
tos de dados e endereços são capazes de 
transportar 8 bits por ciclo de relógio. Com 
um barramento de endereços de 8 bits, o 
NEANDER possui apenas 256 posições 
de memória, cada uma com 8 bits, ou seja, 
a palavra do NEANDER também é de 
8 bits.
Os dados são sempre representados 
através do complemento de dois (B-2). 
Portanto, a representação dos números 
em seu simulador sempre respeitará essa 
forma de representação. Caso você queira 
trabalhar com outra forma de representa-
ção, terá que fazer as adaptações em seu 
programa.
Os seus registradores também são 
de 8 bits e incluem:
• 1 acumulador de 8 bits (AC)
• 1 apontador de programa ou con-
tador de programa (PC) de 8 bits
• 1 registrador de estado com dois 
códigos de condição (saída da ULA)
• Negativo (N)
• Zero (Z)
Ademais, ele possui apenas um 
modo de endereçamento: direto ou abso-
luto. O modo de endereçamento indica 
como os dados serão acessados na memó-
ria. O modo direto ou absoluto significa 
que o operando que segue junto à ope-
ração representa diretamente o endereço 
na memória daquele operando. Apenas 
a título de curiosidade, processadores da 
arquitetura x86 (IA32) e x64 possuem 
cinco modos distintos de endereçamento. 
O conjunto de instruções (que tam-
bém é um atributo de uma arquitetura de 
um computador) é formado das seguintes 
instruções:
Do ponto de vista de operações, essa 
mesma tabela pode ser visualizada da se-
guinte forma:
Código Instrução Comentário
0000 NOP Nada
0001 STA end Armazena acumulador 
(store)
0010 LDA end Carrega acumulador 
(load)
0011 ADD end Soma
0100 OR end Ou lógico
0101 AND end E lógico
0110 NOT Inverte acumulador
1000 JMP end Desvio incondicional 
(jump)
1001 JN end Desvio condicional (jump 
on negative)
1010 JZ end Desvio condicional (jump 
on zero)
1111 HLT Fim
65ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
Seguindo nesse sentido, o que tal-
vez você ainda não tenha visto de alguma 
forma nesse material sejam as instruções 
de desvio ou pulo. Elas são utilizadas para 
modificar o f luxo de execução do pro-
grama. Por exemplo, imagine um laço de 
repetição de tipo “FOR” em uma lingua-
gem de programação de alto nível. O que 
ocorre com o f luxo de instrução ao chegar 
ao final da repetição? Ele não continua na 
próxima instrução abaixo, e sim, retorna 
ao ponto inicial da repetição, não é? Quem 
faz esse retorno é exatamente a instrução 
JMP, vista recentemente.
E no caso de um laço do tipo “WHI-
LE” ou “ENQUANTO”? A repetição 
apenas continua enquanto determinada 
condição for verdadeira. É exatamente 
isso que executam os comandos JZ e JN. 
Eles modificam o f luxo de execução para 
retornar ao ponto de interesse, respecti-
vamente, sempre que a condição for zero 
ou negativa. Nos exercícios você terá a 
oportunidade de testar esses saltos.
Para verificar como um programa 
em Neander deve ser criado, vamos criar 
um programa exemplo que realiza a soma 
de três operandos em memória e armazena 
o resultado em outra posição de memória.
O primeiro passo para resolução do 
problema é separar a memória única do 
NEANDERentre as instruções do pro-
grama e os dados do mesmo. Você deve 
atentar para que as duas áreas não sejam 
sobrepostas. Uma sugestão inicial é divi-
di-las pela metade, ou seja, do endereço 
0 até 127 (7F em hexadecimal - H) tere-
mos nossas instruções e do endereço 128 
(80H) até 255 (FFH) teremos os dados 
do programa.
Assim, o nosso programa começará 
no endereço 0 (0H), já na memória e na 
nossa área de dados teremos três posições 
para os operandos a serem somados, e uma 
posição para o resultado da soma. Como 
sugestão, usaremos os endereços sequen-
ciais após o início da área de dados, ou 
seja, 128 (80H), 129 (81H), 130 (82H) e 
131 (83H), respectivamente.
Como estamos trabalhando com 
uma arquitetura com instruções de apenas 
um único operando, temos que, primei-
ramente, carregar (LDA) um operando 
(128) no acumulador para podermos, 
na sequência, somarmos com o segundo 
operando (129). Como o resultado dessa 
soma inicial será também armazenada no 
acumulador, podemos já somar a terceira 
parcela (130). Com o resultado da soma da 
terceira parcela, poderemos levar o resul-
tado do acumulador (STA) para a posição 
Código Instrução Comentário
0000 NOP Nada
0001 STA end MEMÓRIA(end) ← AC
0010 LDA end AC ← MEMÓRIA (end)
0011 ADD end AC ← MEMÓRIA (end) + 
AC
0100 OR end AC ← MEMÓRIA (end) 
OR AC
0101 AND end AC ← MEMÓRIA (end) 
AND AC
0110 NOT AC ← NOT (AC)
1000 JMP end PC ← end
1001 JN end IF N==1 THEN PC ← end 
1010 JZ end IF Z==1 THEN PC ← end
1111 HLT Fim
66ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
de memória do resultado (131).
Desse modo, o programa seria cons-
truído da seguinte maneira:
O programa, quando escrito na for-
ma da coluna “Instrução” da tabela ante-
rior, é o que chamamos de linguagem de 
símbolos. Ou seja, estamos instruindo o 
processador a executar os comandos re-
presentados pelos símbolos apresentados 
antes. Você não pode deixar de lembrar 
que o mesmo não entende símbolos, apenas 
linguagem binária. Então, esse mesmo 
programa pode ser visto das seguintes for-
mas, tendo por base a tabela dos comandos 
do Neander. 
Em decimal:
32 128
48 129
48 130
16 131
240
Em hexadecimal:
20 80
30 81
30 82
10 83
F0
Em binário:
00100000 10000000
00110000 10000001
00110000 10000010
00010000 10000011
11110000
Finalmente, removendo espaços, o 
que o processador efetivamente irá execu-
tar é o seguinte: 
0010000010000000001100001000000
10011000010000010000100001000001
111110000
 Não importa o quão complexo é 
o programa a ser executado em qualquer 
processador, ele sempre será uma sequência 
de 0 e 1. Talvez sejam alguns bilhões de 
0 e 1, mas a essência é sempre a mesma.
Endereço Instrução Comentário
00 LDA 128 Acumulador recebe 
posição 128
01 ADD 129 Conteúdo do AC + 
Pos. 129
02 ADD 130 Conteúdo do AC + 
Pos. 130
03 STA 131 Conteúdo do AC vai 
para pos. 131
04 HLT FIM
Para sintetizar!!!...
O Neander é um computador de 8 bits criado exclusivamente 
para fins didáticos, apesar de ser viável sua construção física. O seu 
processador possui capacidade de execução de 11 instruções. Cada 
instrução é composta da operação a ser executada e no máximo 1 
operando (arquitetura de 1 endereço). 
O fluxo de execução das instruções no Neander é semelhante a 
qualquer outro computador. As instruções e os dados estão na memó-
ria RAM. O processador busca a instrução a ser executada na memória 
(conforme conteúdo do registrador PC), faz a decodificação e a execução 
da mesma na unidade funcional.
Vamos exercitar o que estudamos até aqui? Então...
1. Limpe o acumulador. Desenvolva muitos programas diferentes que façam a 
mesma coisa:
a. Use atribuição direta
b. Use subtração
c. Use AND
d. Use OR
e. Use incrementos sucessivos
2. Some duas variáveis de 8 bits em complemento de dois. O primeiro número 
a somar estará na posição de memória 128 e o segundo na posição 129. O 
resultado deverá ser colocado na posição de memória 130.
3. Subtraia duas variáveis de 8 bits em complemento de dois, da mesma forma que 
no exercício anterior (operandos em 128 e 129, resultado em 130).
4. Compare três valores positivos de 8 bits representados em 
complemento de dois e armazenadas em posições 
consecutivas na memória (posições 128, 129 e 
130). O maior valor deverá ser escrito na próxima 
posição de memória. (131). Para auxiliar, crie antes 
um algoritmo para resolução do problema.
69ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
ARQUITETURAS DE 
ALTO DESEMPENHO
Seu computador executa aproximadamente 
20 bilhões de operações por segundo. Os 
computadores mais rápidos do mundo 
alcançam as marcas de quatrilhões de 
operações por segundo!
Os computadores de antigamente, entre as décadas de 
60 a 80, eram dotados de processadores que não aproveitavam, 
de maneira eficiente, a quantidade de hardware disponível 
durante a execução das instruções. Posteriormente, com a 
divisão da execução das instruções em estágios, onde a finali-
zação de um estágio por uma instrução permite que uma nova 
instrução utilize aquele estágio, tornou-se possível executar 
com uma certa sobreposição várias determinações no mesmo 
ciclo do processador. Tal técnica foi chamada de pipeline e 
talvez tenha sido o maior passo na evolução arquitetural dos 
processadores. Essa mesma técnica continua sendo utilizada 
nos processadores comerciais mais conhecidos.
Com o avanço no desenvolvimento do software, esses 
hardwares “convencionais” que eram utilizados nesses pro-
70ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
cessadores já não atendiam mais a real 
necessidade de desempenho das novas e 
modernas aplicações. Alterações no har-
dware eram necessárias e após alguns es-
tudos e avaliações, o pipeline foi reestru-
turado e ampliado para o que atualmente é 
conhecido como arquitetura superescalar. 
Portanto, essas arquiteturas possuem a 
capacidade de executar instruções com 
paralelismo simultâneo, além daquele com 
sobreposição parcial.
Os processadores superescalares são 
representados pela maioria dos proces-
sadores disponíveis no mercado, sendo 
que uma parte deles foram inicialmente 
(década de 80 e 90) chamados de RISC 
(Reduced Instruction Set Computer). Para 
diferenciar dos processadores RISC, os 
processadores de PC convencionais (Intel 
e AMD x86) foram chamados de CISC 
(Complex Instruction Set Computer). A 
grande diferença das máquinas RISC era 
a existência de um número reduzido de 
instruções (de tamanho uniforme) e uma 
maior velocidade de execução das instru-
ções, devido à utilização de mecanismos 
de exploração de paralelismo ao nível de 
instrução. Assim, esses microprocessado-
res compensavam as restrições impostas 
ao conjunto de instruções por meio de sua 
grande capacidade de processamento e 
velocidade de operação. Como máquinas 
RISC, podemos citar: PowerPC, Alpha, 
UltraSparc, entre outros. Todos esses pro-
cessadores não equipavam computadores 
pessoais e sim grandes computadores de 
centros de pesquisa, indústria e serviços. 
Já as máquinas CISC utilizavam um 
grande número de instruções de tama-
nho variável, implicando em uma maior 
facilidade de programação, porém neces-
sitando maior quantidade de hardware 
para a decodificação dessas instruções. O 
exemplo clássico desse tipo de arquitetura 
é a família de processadores x86 da Intel. 
Atualmente, a diferença entre RISC e 
CISC não pode ser estabelecida com cla-
reza, uma vez que os processadores RISC 
contam com quase o mesmo número de 
instruções das máquinas CISC, e essas 
incorporam vários mecanismos de extração 
de paralelismo que só eram encontrados 
em máquinas RISC. Além disso, as má-
quinas CISC geralmente têm um núcleo 
de execução RISC.
Para atingir o máximo desempenho, 
esses processadores exploram o paralelismo 
no nível de instrução (ILP – Instruction 
Level Parallelism), utilizando, para tal, 
a execução fora-de-ordem, hierarquia de 
memória, previsão de desvios, entre outras 
técnicas. Todas essas técnicas tornaram 
esses processadores mais complexos, com 
mais transistorese dissipando cada vez 
mais energia e calor.
Os desenvolvedores de hardware 
têm, de maneira geral, três opções para 
tentar melhorar o desempenho de tais 
processadores: aumentar a frequência de 
funcionamento do mesmo, tentar explorar 
mais ILP através de novas técnicas e usar 
caches cada vez mais rápidas, maiores e 
próximas ao processador. Técnicas para 
aumentar a frequência de clock do pro-
cessador envolvem, desde o uso de novas 
técnicas de fabricação, até o aumento no 
número de estágios do pipeline. Ambas as 
técnicas esbarram em alguns problemas, 
como os limites físicos dos processos de 
fabricação e as quebras do f luxo de instru-
71ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
ções nos pipelines (desvios, misses, etc). 
A extração de mais ILP envolve técnicas 
que tentam aumentar o número de instru-
ções executadas por ciclo, esbarrando no 
limite de tamanho dos blocos básicos de 
um programa, ou seja, 4 a 5 instruções. O 
emprego de caches maiores e mais próxi-
mas aos processadores é outra técnica que 
visa melhorar o desempenho desses pro-
cessadores, tentando diminuir a histórica 
diferença de velocidade de processador e 
memória principal.
O problema dessas técnicas é que 
ambas implicam em maiores áreas de 
silício, maior número de transistores e 
uma maior dissipação de energia. Além 
disso, elas não atingem 100% de efici-
ência, por exemplo, dobrando o clock de 
um processador não se atinge o dobro de 
desempenho. 
É conhecido que os softwares atuais 
fazem uso de múltiplas threads ou múlti-
plos processos que podem ser executados 
em paralelo. Esse nível de paralelismo é 
conhecido como paralelismo no nível de 
thread (TLP – Thread Level Parallelism). 
A exploração do TLP é uma das formas 
de diminuir a distância entre desempenho 
x custo de um processador/arquitetura. 
Existem algumas arquiteturas ca-
pazes de realizar essa tarefa: as máquinas 
multiprocessadas e as máquinas que execu-
tam mais de uma tarefa, simultaneamen-
te (SMT – Simultaneous MultiThread, 
CMP – Chip MultiProcessor) ou não (MT 
– MultiThread).
Máquinas multiprocessadas já são 
utilizadas há muito tempo para extrair 
maior desempenho das aplicações, vis-
to que possuem diversos processadores 
(geralmente superescalares) interligados 
através de uma “placa-mãe”. Cada uma das 
tarefas pode ser executada em um dos pro-
cessadores simultaneamente. Essas tarefas 
podem ser threads da mesma aplicação, 
de diferentes aplicações ou uma tarefa de 
sistema operacional. Uma vantagem desse 
tipo de máquina é o conhecimento das 
técnicas de programação que extraem alto 
desempenho pelos programadores. Sua 
principal desvantagem é o alto custo do 
hardware.
Historicamente, a ideia de execução 
de mais de uma tarefa surgiu dos sistemas 
operacionais multiprogramados (multita-
refas), onde, virtualmente, diversas tarefas 
executam algo simultaneamente. Para o 
usuário final, o processador está realmente 
executando mais de uma tarefa ao mesmo 
tempo. Nesse caso, o paralelismo é virtual 
e é obtido pelo sistema operacional pela 
intercalação das tarefas no tempo, ou seja, 
cada tarefa tem um tempo no qual real-
mente utiliza o processador. Essa quanti-
dade de tempo é conhecida por time-slice 
(fatia de tempo) e é gerenciada pelo sistema 
operacional, o qual deve garantir que: a 
fatia de tempo seja pequena o suficiente 
para que o usuário não note nenhum tipo 
de degradação no sistema e, por outro lado, 
seja grande o suficiente para que o pro-
grama utilize o processador, realizando 
trabalho útil.
Com o avanço da microeletrônica, 
foi possível integrar em hardware muito 
dos recursos utilizados nesses sistemas 
operacionais multiprogramados. A partir 
disso, surge uma arquitetura intermediária 
entre multiprocessadores e processadores 
72ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
“simples”, chamada de arquitetura mul-
titarefas. O hardware das mesmas possui 
muitos recursos duplicados, necessários 
para manter o contexto das diversas ta-
refas, e outros compartilhados, tais como 
caches e unidades funcionais.
O pipeline desses processadores 
multitarefas pode, geralmente, conter 
em um certo estágio instruções de apenas 
uma thread. Dessa maneira, as instruções 
de cada tarefa avançam pelo pipeline de 
forma “sincronizada”. Na figura a seguir 
esse comportamento pode ser facilmente 
identificado. O front-end do pipeline pode 
despachar quatro instruções por ciclo, para 
quaisquer das quatro unidades funcionais 
(ULAs). Contudo, essas quatro instru-
ções devem ser de uma mesma thread (ou 
programa). Logo, cada tarefa ativa está 
confinada a uma “fatia de tempo”, nesse 
caso, um ciclo de clock. Assim, o front-end 
contém múltiplas tarefas em execução e a 
lógica de despacho alterna entre as mesmas 
a cada ciclo ao enviar as instruções para 
execução.
Arquitetura Multi Tarefa
Com o advento da tecnologia foi 
possível implementar uma arquitetura 
multitarefa capaz de busca, despachar e 
executar instruções de múltiplas tarefas 
em um mesmo ciclo. Essa arquitetura foi 
chamada de multitarefas simultâneas e a 
implementação comercial mais conhecida 
desse tipo de arquitetura foi chamada de 
Intel Hyper-Threading.
Resumidamente, como mostra a 
seguinte figura, a grande diferença entre 
uma arquitetura SMT e uma multitarefa 
(imagem anterior) é a possibilidade de no 
mesmo ciclo de clock serem executadas 
instruções de diferentes f luxos. Já a dife-
rença entre ambas e uma superescalar é a 
possibilidade de existir “realmente” mais 
de uma tarefa executando no processador. 
A cada ciclo, o processador SMT seleciona 
instruções de todas as tarefas ativas para 
execução (no caso, duas tarefas). Outras ta-
refas podem estar em memória, esperando 
pelo escalonador do sistema operacional 
torná-las ativa. Ele explora o ILP ao sele-
cionar instruções de qualquer tarefa que, 
potencialmente, pode despachar instru-
ções. Assim, após, o processador arranja os 
recursos de execução dinamicamente entre 
as instruções, fazendo com que haja uma 
maior utilização do hardware disponível. 
Se uma tarefa possui muito ILP dispo-
nível, o mesmo será utilizado; se diversas 
tarefas têm pouco ILP, elas executarão 
em paralelo, compensando o baixo ILP. 
Nesse caso, dizemos que o TLP está sendo 
explorado.
73ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
Arquitetura superescalar (esquerda) vs. 
Multitarefas Simultânea (direita)
O processador que possui a caracte-
rística Hyper Threading duplica algumas 
de suas estruturas internas (mas não todas), 
a fim de conseguir executar instruções de 
mais de um programa. Em alguns casos, 
podendo obter ganhos de desempenho de 
até 20 a 30% com relação a um processador 
sem a tecnologia. Para o sistema operacio-
nal é como se existissem dois processadores 
lógicos. 
Do ponto de vista arquitetural ou de 
software, programas podem ser alocados 
para cada um dos processadores lógicos, 
como se fossem destinados a processadores 
físicos. Já do ponto de vista de microarqui-
tetura, instruções de diferentes processa-
dores lógicos executarão, simultaneamente, 
em unidades compartilhadas.
Ainda, é importante ressaltar que 
em alguns casos pode haver até mesmo 
queda de desempenho, pois nem sempre 
o sistema operacional consegue encontrar 
programas em execução suficientes para 
aproveitar a disponibilidade dos recursos 
do Hyper Threading.
Com o avanço dos processos de fa-
bricação dos processadores, obtendo mais 
espaço internamente aos chips, os proje-
tistas conseguiram colocar dentro de um 
único chip mais de um núcleo de proces-
samento. Surgiram então os CMP (Chip 
Multi Processor). O exemplo clássico dessa 
arquitetura é a Core da Intel. Essa técnica, 
como a anterior, tem por objetivo extrair 
não só o ILP, mas também o paralelismo 
entre tarefas (TLP).
Como não há mais o que avançar 
em termos de um processador único, o que 
essencialmente é realizado, é a inserção de 
diversos processadores em um único chip, 
aumentando o desempenho da máquina 
por permitir que, efetivamente, mais deum programa seja executado ao mesmo 
tempo. E ainda, cada um desses núcle-
os pode contar com a tecnologia Hyper 
Threading, dando a sensação ao usuário 
de possuir o dobro de processadores em 
sua máquina.
74ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
Aglomerados de computadores
Uma outra forma de obter maior 
desempenho dos sistemas computacionais, 
já bastante comum em grandes corpora-
ções, universidades e centros de pesquisa 
é a união de máquinas por meio de uma 
rede de comunicação de dados. A esse 
grupo de máquinas chamamos de cluster.
O termo cluster pode ser interpre-
tado de três maneiras diferentes:
1. Cluster de Alto Desempe-
nho: múltiplas máquinas processando em 
paralelo como se fossem uma só. 
2. Cluster de Balanceamento de 
Carga: uma máquina (com ou sem backup) 
que distribui a carga entre um conjunto 
de servidores.
3. Cluster de Alta Disponibili-
dade: duas ou mais máquinas que adicio-
nam confiabilidade a um ou mais serviços.
Os dois últimos não serão aborda-
dos nessa disciplina. Os primeiros fazem 
parte do que chamamos, de acordo com 
a taxonomia de Flynn (1972), de MIMD: 
Multiple Instruction Stream, Multiple 
Data stream. As máquinas convencionais 
(PC) são conhecidas por SISD (Single 
Instruction Single Data Stream). 
A forma mais simples de cluster 
de alto desempenho pode ser obtida, por 
exemplo, em um laboratório de informática 
de uma universidade. Ali (ou em qual-
quer outro laboratório) você encontrará 
um grupo de máquinas, interconectados 
por uma rede de dados. Essa é a base do 
cluster. Para diferenciar de um laborató-
rio qualquer, o usuário do cluster precisa 
enxergar tal grupo de máquinas como se 
fosse uma só.
A fim de realizar essa tarefa, exis-
tem diversas soluções no mercado, pagas 
e gratuitas. A Microsoft, por exemplo, 
disponibiliza essa opção no pacote Micro-
soft HPC Server (https://technet.micro-
soft.com/pt-br/library/cc514029(v=ws.11).
aspx). 
Com o sistema operacional Linux, 
você pode utilizar, por exemplo, o MO-
SIX (ou Linux PMI) para transformar os 
computadores em uma solução distribuída 
de alto desempenho (embora muitos cha-
mem o cluster MOSIX de balanceamento 
de carga). O software verifica o estado de 
cada uma das máquinas (através da rede) e 
passa a migrar os programas em execução 
para as máquinas que tenham maior poder 
de processamento e memória disponíveis, 
de acordo com as configurações desejadas. 
O usuário de um sistema desses não tem o 
conhecimento de qual máquina está exe-
cutando os seus programas. Ele apenas vê 
o resultado em sua tela.
Outra forma de utilização de clus-
ters de alto desempenho, comum em cen-
tros de pesquisa, também parte da mesma 
premissa anterior, um grupo de máquinas 
ligadas em rede em que o usuário as perce-
bam como uma única máquina. Todavia, 
neste caso, o software que é executado 
nessa máquina é construído especifica-
mente para ela. 
Também, são utilizadas linguagens 
75ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
especiais como MPI (Message Passing 
Interface) ou OpenMP que permitem que 
o seu programador “quebre” a solução do 
problema em partes menores, e que cada 
uma dessas partes sejam executadas em 
um computador físico distinto. Ainda, é 
preciso uma nova forma de pensar para 
programar com essas linguagens, pois o 
programa estará distribuído em diferentes 
máquinas físicas, as quais precisam ser 
coordenadas e trocar informações para 
resolver o problema.
Existe um ranking na internet cha-
mado TOP 500, que reúne as 500 máqui-
nas mais poderosas (públicas) do mundo. 
A lista atual (de novembro de 2016 - ht-
tps://www.top500.org/lists/2016/11/) é 
dominada por Estados Unidos e China, 
com 171 máquinas. Eles são seguidos pela 
Alemanha (32), Japão (27), França (20) e 
Inglaterra (17). 
Os dois computadores mais rápi-
dos são chineses e possuem 10.649.600 e 
3.120.000 núcleos (cores ou processado-
res), respectivamente. Ambos consomem 
mais de 15 MW. O mais rápido deles é 
capaz de realizar 93 quatrilhões de opera-
ções de ponto f lutuante por segundo, ou 
seja, 93 petaflops. Apenas por comparação, 
um PC equipado com três Intel Core i7 
980 XE (12 núcleos) não consegue atingir 
20 gigaf lops, ou 0,02 teraf lops.
O Brasil está representado com ape-
nas três máquinas: duas no laboratório 
nacional de computação científica (RJ) 
e um no SENAI CIMATEC (BA). A 
mais rápida deles consegue a marca de 
“apenas” 456 teraf lops (ou seja, 456 tri-
lhões de operações de ponto f lutuante por 
segundo) e possui 12.672 GB de memória 
RAM (a mais rápida do mundo possui 
1.310.720 GB).
É claro que, apesar da grande parte 
destas máquinas utilizarem processadores 
comuns, disponíveis a qualquer indivíduo 
no mercado, elas fazem uso de redes espe-
ciais para troca de dados. Nessas máqui-
nas a interconexão entre os nós (cada um 
76ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
dos computadores que as formam) estão 
constantemente trocando informações, 
o que torna a rede um verdadeiro garga-
lo. Uma das redes de interconexão mais 
utilizadas é a Infiniband (http://www.
infinibandta.org). Ela apresenta alta taxa 
de transferência de dados com baixa la-
tência (rapidamente). As três máquinas 
utilizam infiniband como tecnologia de 
interconexão.
Outro ponto em comum, pratica-
mente em todas essas máquinas e que está 
se tornando habitual em computadores 
domésticos é a utilização de GPUs (Gra-
phical Processing Units), são as CPUs 
(processadores) das placas de vídeo, em 
especial do fabricante Nvidia. 
Esses GPUs são muito eficientes na 
manipulação de gráficos e no processa-
mento de imagens, fazendo com que sua 
estrutura, altamente paralela, seja muito 
mais eficiente que os processadores de uso 
geral (Intel, AMD, etc.) para o processa-
mento da grande massa de dados executa-
dos de forma paralela (como é o caso nesses 
supercomputadores). Para explorar toda 
essa funcionalidade dos GPUs é necessário 
que o programa seja construído com essa 
finalidade. Por fim, existem algumas lin-
guagens de programação que fazem isso, 
como por exemplo, o CUDA e OpenCL.
Para sintetizar!!!...
Os processadores atuais exploram dois níveis de paralelismo 
(execução de várias instruções ao mesmo tempo): paralelismo no nível 
de instrução (ILP) e paralelismo no nível de threads (TLP). O primeiro 
é o paralelismo existente dentro de um mesmo programa ou fluxo de 
execução, já o segundo, é aquele existente entre os diversos programas 
em execução num computador.
O ILP é explorado pelo que chamamos de arquiteturas superesca-
lares, enquanto o TLP é explorado por processadores com tecnologias 
SMT, como Hyper Threading, e o CMP, como o Intel Core. 
Contudo, mesmo com todos esses avanços, muitas aplicações 
somente podem ser “resolvidas” com o uso massivo de força computa-
cional. É nesse ponto que encontramos os clusters de alto desempenho, 
as quais são as máquinas mais poderosas do mundo. Também, são essa 
máquinas que atuam no ramo da física, da indústria petroleira, bélica 
e na previsão do tempo, entre outras. Funcionam por meio da junção 
de diversas máquinas (processadores + memória) através de uma rede 
de altíssima velocidade. 
Além de contar com toda a tecnologia dos processadores atu-
ais, as referidas máquinas geralmente são montadas com a utilização 
de GPUs, que são processadores gráficos especializados em executar 
tarefas em paralelo.
Vamos exercitar o que estudamos até aqui? Então...
1. Qual era a diferença entre processadores RISC e CISC? Por que, hoje, não é 
mais possível fazer essa diferenciação?
2. Qual a diferença entre um processador com a tecnologia CMP (Intel Core) e 
SMT (Intel HyperThreading)?
3. Por que alguns administradores de sistema preferem desligar a opção SMT 
dos processadores?
4. Cite quais tipos de cluster existem e diferencie-os.
5. Pesquise e correlacione as tecnologias de cluster e as funcionalidades de cloud 
computing (computação na nuvem).
6. O que você precisaria para transformar o laboratório de sua faculdade em um 
cluster de altodesempenho?
79ORGANIZAÇÃO E ARQUITETURA
DE COMPUTADORES
REFERÊNCIAS
GONÇALVES, R. A. L.; NAVAUX, P. O. A. A Utili-
zação de Buffer de Remessa Unificado em Arquiteturas Supe-
rescalares com Fluxos Balanceados de Instruções. In: CONFE-
RÊNCIA LATINO AMERICANA DE INFORMÁTICA, 
CLEI Panel, 24., 1998, Quito, Equador. Anais… [S.l.:s.n.], 1998. 
GÜNTZEL, J. L., NASCIMENTO, F. A. Introdução aos 
Sistemas Digitais. Disponível para download em http://minerva.
ufpel.edu.br/~guntzel/isd/isd.html. (Acesso em 15/05/2005)
MONTEIRO, Mário. Introdução à Organização de Com-
putadores. 4ª e 5ª ed. Rio de Janeiro: LTC. 2007.
PIZZOL, G. D. Previsão de Desvios em Arquiteturas 
Multitarefas Simultâneas. Dissertação de Mestrado. PPGC-
-UFRGS. 2005.
STALLINGS, William. Arquitetura e Organização de 
Computadores.8ª ed. São Paulo: Pearson Prentice Hall. 2010. 
VASCONCELOS, Laércio. Hardware na Prática. 3ª ed. 
Rio de Janeiro. 2009.
WEBER, Raul F. Fundamentos de Arquitetura de Com-
putadores. Editora Sagra Luzzatto, 2004
	INTRODUÇÃO
	PROJETO DE CIRCUITOS DIGITAIS
	Álgebra Booleana
	Portas Lógicas e Circuitos Lógicos
	Derivação de Expressões Booleanas
	Simplificação de Expressões
	Circuitos combinacionais
	Circuitos sequenciais
	ESTRUTURA INTERNA DE UM COMPUTADOR – MODELO DE VON NEUMANN
	Blocos funcionais
	COMPUTADOR HIPOTÉTICO NEANDER
	ARQUITETURAS DE ALTO DESEMPENHO

Mais conteúdos dessa disciplina