Apostila de Arquitetura de Computadores

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 26

Arquitetura e

Organização de
Computadores

UCSAL 2020-02

Prof. Marco Câmara


Índice

1 ENGENHARIA DE SOFTWARE & ARQUITETURA DE COMPUTADORES ............................ 4


2 DIGITAL X ANALÓGICO ................................................................................................................... 5
3 REPRESENTAÇÃO DE INFORMAÇÕES DIGITAIS ...................................................................... 6
3.1 ALGARISMOS ROMANOS ............................................................................................................................... 7
3.2 UNIDADES DE MEDIDA BASEADAS NO CORPO HUMANO ......................................................................... 7
4 SISTEMA NUMÉRICO INDO-ARÁBICO ......................................................................................... 8
5 SISTEMAS DE NUMERAÇÃO ........................................................................................................... 8
5.1 BASE 2 (BINÁRIA) ......................................................................................................................................... 9
5.2 UNIDADES DE ARMAZENAMENTO BINÁRIAS ............................................................................................ 9
5.3 BASES 8 (OCTAL) E 16 (HEXADECIMAL) ................................................................................................. 9
5.4 CONVERSÃO ENTRE BASES ........................................................................................................................ 10
5.5 REPRESENTAÇÃO NUMÉRICA ................................................................................................................... 10
5.6 TABELA ASCII ............................................................................................................................................. 10
6 COMPUTADOR – UMA MÁQUINA DE INFORMAÇÕES .......................................................... 12
7 CIRCUITOS ELÉTRICOS ................................................................................................................. 12
8 FUNÇÕES LÓGICAS BINÁRIAS EM CIRCUITOS ELÉTRICOS ................................................ 13
8.1 LÓGICA E (AND) ........................................................................................................................................ 13
8.2 LÓGICA OU (OR) ........................................................................................................................................ 13
8.3 LÓGICA NÃO (NOT) .................................................................................................................................. 14
9 PORTAS LÓGICAS BÁSICAS ......................................................................................................... 14
9.1 PORTA AND ................................................................................................................................................ 15
9.2 PORTA OR .................................................................................................................................................... 15
9.3 PORTA NOT ................................................................................................................................................. 15
9.4 PORTA XOR ................................................................................................................................................. 16
10 UM EXEMPLO DE CIRCUITO ARITMÉTICO ............................................................................. 17
11 TABELA-VERDADE E A SÍNTESE DE CIRCUITOS LÓGICOS ................................................ 18
12 SIMPLIFICAÇÃO DE CIRCUITOS LÓGICOS ............................................................................... 20
13 PRÁTICA DE IMPLEMENTAÇÃO DE CIRCUITO LÓGICO ...................................................... 21
14 LÓGICA COMBINACIONAL X LÓGICA SEQUENCIAL .............................................................. 21
15 ESTRUTURA DE UM COMPUTADOR ......................................................................................... 21
15.1 ENIAC: O PRIMEIRO COMPUTADOR DE USO GERAL .............................................................................. 21
15.2 O IAS, A MÁQUINA DE VON NEUMANN ................................................................................................... 22
15.3 ESTRUTURA DE ALTO NÍVEL .................................................................................................................... 23
15.4 ESTRUTURA DA CPU .................................................................................................................................. 23
15.5 ESTRUTURA DA UNIDADE DE CONTROLE ............................................................................................... 23
16 OPERANDO O IAS ........................................................................................................................... 23
16.1 OS REGISTRADORES DO IAS ...................................................................................................................... 23
16.2 CICLO DE INSTRUÇÃO NO IAS ................................................................................................................... 23
16.3 O ASSEMBLY DO IAS ................................................................................................................................... 25
17 DESEMPENHO EM COMPUTADORES ....................................................................................... 27

Apostila e Roteiro de Aulas Página 2 de 27


Prof. Marco Câmara www.logicengenharia.com.br/mcamara Cel 71 9 9197 8976
Índice

18 CONEXÕES ENTRE OS ELEMENTOS BÁSICOS / BARRAMENTOS ..................................... 27


19 ARMAZENAMENTO DE INSTRUÇÕES E DADOS – HIERARQUIA DE MEMÓRIA ........... 27
20 DISPOSITIVOS DE ENTRADA E SAÍDA ..................................................................................... 27
21 ALÉM DO MODELO DA MÁQUINA VON NEWMANN: MÁQUINAS PARALELAS,
MÁQUINAS DE FLUXO DE DADOS, REDES NEURAIS ETC. ........................................................... 27
22 CONTROLADORAS DE DISCO, CO-PROCESSADORES, GPUS, INTERFACES DE REDE . 27
23 INTRODUÇÃO AO ARDUÍNO: “COMPUTAÇÃO FÍSICA”, PROTOTIPAGEM, RECURSOS
27
24 COMPONENTES TÍPICOS DE UM PROJETO COM ARDUÍNO ............................................... 27
25 PROGRAMANDO O ARDUÍNO ..................................................................................................... 27
26 IDE, SKETCH, SEÇÕES BÁSICA DO CÓDIGO, “HELLO WORLD PISCANTE” .................... 27
27 DESENVOLVENDO UM PROJETO COM O ARDUÍNO: ALGUNS EXEMPLOS ..................... 27

Apostila e Roteiro de Aulas Página 3 de 27


Prof. Marco Câmara www.logicengenharia.com.br/mcamara Cel 71 9 9197 8976
1 Engenharia de Software & Arquitetura de Computadores
Por que estudar Arquitetura e Organização de Computadores em um curso de
Engenharia de Software?
Software rodam em hardware, e as características específicas do hardware podem
influenciar diversos aspectos do software, como funcionalidade, performance,
facilidade de uso, confiabilidade, capilaridade, interações com o ambiente,
dispositivos e usuários, custo, viabilidade e complexidade.
Funcionalidade: é possível rodar o Waze em um notebook convencional? Por que
não? Falta hardware (receptor GPS).
Capilaridade: vale a pena desenvolver uma aplicação de rede social que só
funcione bem em celulares de primeira linha como o Galaxy S10, o Pixel 4, o P30
Pro ou o iPhone 11Pro)? Não, não atingiria o público desejado – precisamos
desenvolver hardware de baixo custo.
Interações com o Ambiente: dá para pedir para esquentar a água para o banho e
ligar o ar-condicionado do quarto antes de chegar em casa, pelo celular? Sim,
podemos, mas precisaremos ter hardware específico em casa para transformar
cliques no aplicativo na ativação de dispositivos elétricos em casa.
Interações com Dispositivos: é possível desbloquear a tela de entrada do Windows
do seu computador de casa tocando com o polegar na tela do seu celular? Sim, mas
é necessário não só um leitor seguro e eficaz de digitais no celular, como também
uma rede de comunicação rápida, segura, e de pequena distância para autenticar o
usuário no seu computador.
Interações com o Usuário: dá para utilizar um celular como controle remoto de
uma console de vídeo-game? Claro, mas é necessário que o celular possua um
acelerômetro, e um chip controlador que permitam transformar, com precisão, a
posição do celular em coordenadas de entrada para o jogo.
Custo: é possível implementar a “internet das coisas” em “coisas baratas”? Claro,
mas precisamos simplificar, reduzir o tamanho e o consumo de dispositivos
computacionais com capacidade de comunicação para que eletrodomésticos de
baixo custo possam se comunicar com a internet.
Viabilidade: seria possível alertar o serviço médico de urgência quando um idoso
sofrer uma queda usando o seu smart watch? É possível sim, mas precisamos
implementar os recursos e sensores de um celular em um dispositivo muito menor,
com bateria pequena e que tenha uma conexão muito confiável à internet.
Complexidade: sabia que provavelmente é mais barato colocar um computador
para controlar um semáforo, do que desenvolver um circuito eletrônico equivalente?
Sim, normalmente é, pois os avanços no desenvolvimento de componentes
padronizados para computadores reduziram muito a complexidade e o custo na
montagem de computadores, tornando os mesmos onipresentes em aplicações
diversas.
Apostila e Roteiro de Aulas Página 4 de 27
Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
2 Digital x Analógico
Na história humana, o “trabalho” na maior parte do tempo empregava a força dos
músculos. Aos poucos, o homem começou a desenvolver ferramentas, e a aproveitar
elementos naturais para ajudá-lo (o curso da água, o vento e o fogo, por exemplo).
Também foi usada a força animal.
As máquinas sempre existiram, mas elas começaram a substituir este tipo de
trabalho humano de forma mais extensiva a partir da Revolução Industrial.
A substituição do trabalho intelectual, por outro lado, sempre foi muito rara, sendo
normalmente “terceirizada” para outros humanos. No último século, as máquinas
começaram a fazer parte do trabalho intelectual humano. Alguns inclusive acreditam
que um dia elas farão TODO o trabalho humano.
Os computadores são aplicados majoritariamente no trabalho intelectual, e também
para aprimorar as máquinas que executam trabalhos físicos. Para isso eles precisam
capturar, armazenar, processar e fornecer uma matéria prima – ou produto – bem
específico: a informação.
A informação normalmente não tem existência física; ela pode, no máximo, ser
“representada” fisicamente. Livros, fotografias, DVDs e pendrives não são
informações, e sim “mídias” que contêm as mesmas.
Informações podem ser de dois tipos: analógicas ou digitais.
As informações digitais possuem valores discretos, ou seja, entre dois valores
possíveis de uma informação digital, existem finitos valores intermediários. Por
exemplo, ao se pesar em uma moderna balança de uma farmácia com 3 dígitos, se
duas pessoas diferentes tiverem pesos de 75,1 e 75,2Kg, respectivamente, não
existirá nenhuma pessoa com peso intermediário (75,12Kg, por exemplo) que
consiga provar isso usando aquela balança digital.
Por outro lado, se a farmácia tivesse uma balança analógica daquelas antigas,
existiriam infinitas variações possíveis de peso entre as duas pessoas do exemplo
anterior – muito embora provavelmente seria muito complicado identificar a
diferença de peso em alguns casos...
O nosso mundo está cheio de informações analógicas. Basicamente, a maior parte
das grandezas, como massa, velocidade e temperatura, por exemplo, é analógica.
Apenas as contagens, e algumas informações específicas como data, gênero e estado
civil, por exemplo, são digitais.
Existem diferenças marcantes na dificuldade que temos ao lidar com informações
digitais ou analógicas. Tente, por exemplo, repassar, à distância, para uma amiga,
qual a cor da camisa que você deseja que ela compre para você em um shopping. A
cor de uma peça de roupa é uma informação analógica, com infinitas variações, e se
você for detalhista, será simplesmente impossível garantir que a cor será transmitida
com exatidão. Indicar o valor que deve ser sacado em um caixa eletrônico, por outro
lado, não deixa margem a dúvidas. O valor a ser sacado é uma grandeza digital, e
independente do fato de você ser, ou não, detalhista, sempre existirá uma forma
Apostila e Roteiro de Aulas Página 5 de 27
Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
precisa, e a prova de erros, para transmitir esta informação. Esta mesma dificuldade
vale tanto para a transmissão de informações (que será tratada especificamente na
disciplina de Redes de Computadores), como para armazenar, interpretar e fazer
operações envolvendo estas informações.
A complexidade de representação, armazenamento e processamento de informações
analógicas levou à padronização das informações digitais nas tecnologias mais
modernas. Hoje usar uma informação analógica é, muitas vezes, considerado como
algo “ultrapassado”. É importante, no entanto, fazer justiça para pelo menos uma
vantagem das informações analógicas – o ser humano tem muita facilidade para
interpretá-las rapidamente. Este é o motivo pelo qual os painéis de instrumentos das
aeronaves mais sofisticadas, por exemplo, apresentarem “ponteiros” analógicos,
mesmo que simulados, ao invés de valores digitais. O mesmo vale para a maior parte
dos velocímetros dos automóveis, por exemplo.
Os dispositivos computacionais, embora possam lidar com informações analógicas,
normalmente precisam convertê-las para o formato digital ao recebê-las, e algumas
vezes precisam convertê-las de volta para o formato analógico ao fornecê-las para o
mundo externo e seus usuários.

3 Representação de Informações Digitais


Desde o início da caminhada do ser humano no nosso planeta, sempre foi necessário
lidar com informações digitais. Vamos usar como exemplo a contagem:
- Quantas cabeças de gado um criador possuía?
- Quantas “luas” durará uma viagem?
- Quantos guerreiros a tribo adversária possui?
Sem uma forma de representar estas informações, o homem primitivo apenas
associava a contagem a uma avaliação qualitativa. Assim, um criador possuía
“muitas” ovelhas; a viagem durava “poucas luas”; ou a tribo adversária possuía
“muitos guerreiros”.
Demorou muito, mas quando o homem começou a se organizar em grupos e depois
em civilizações mais complexas, começaram a surgir métodos de representação cada
vez mais elaborados para estas contagens. Associar a contagem a um número
específicos de dedos da mão, por exemplo, funcionava bem para quantidades
pequenas (até hoje funciona para uma criança pequena quando perguntamos a sua
idade). No entanto, para quantidades maiores, cada vez mais comuns nos
agrupamentos humanos mais avançados, foi necessário criar um esquema de
representação mais evoluído.
Temos alguns exemplos que funcionaram temporariamente – alguns até hoje – mas
que tendem a ser substituídos devido à ineficiência como estes:

Apostila e Roteiro de Aulas Página 6 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
3.1 Algarismos Romanos

Até hoje utilizados para algumas funções específicas, os algarismos romanos,


base de um dos maiores impérios que o mundo conheceu, associavam algumas
letras do alfabeto a quantidades específicas. Para identificar quantidades
diferentes, utilizava-se a justaposição de outras letras à esquerda (para
diminuir), ou à direita (para aumentar).
Embora tenha funcionado, você já tentou fazer operações simples, como uma
soma, usando algarismos romanos? Neste vídeo disponível no Youtube um
professor demonstra o processo (https://www.youtube.com/watch?v=OXLVL_TiMAk#t=03m24s).

3.2 Unidades de Medida baseadas no corpo humano

Você deve conhecer, ou ao menos ter ouvido falar, de unidades de medida


baseadas em partes do corpo humano. Talvez já tenha até tentado medir
distâncias usando estas unidades. Veja algumas:
O cúbito, usado pelos egípcios, era a distância entre o cotovelo e a ponta do
dedo médio do faraó.
A jarda, usada no esporte americano até hoje, é a distância entre o nariz e a
ponta do polegar com braço esticado – e que equivale mais ou menos a um
passo, ou a 36 polegadas.
A polegada (inch), usada para tubulações da construção civil, por exemplo,
era o comprimento . Equivale a 1/12 de um “pé” (foot), ou mais precisamente,
2,54cm.
O pé (foot), usado na aviação, por exemplo, equivale a 30,48cm.
A complexidade se estende, no caso dos últimos exemplos, para as medidas
maiores. Uma milha, usada para medir distâncias e velocidades nas estradas
americanas, equivale a 1.609,34m.
Embora sejam utilizadas até hoje, imagine a dificuldade para operações com
múltiplos e submúltiplos. Quantos pés tem uma milha, por exemplo?
Não só por isso, como também por uma questão de padronização mundial,
estas unidades vêm sendo, aos poucos, substituídas pelas equivalentes no
sistema métrico universal.
Para nossa sorte, no entanto, não herdamos o sistema de numeração da civilização
romana. O sistema em uso hoje em todo o mundo é o Sistema Numérico Indo-
Arábico. Este sistema baseia-se em dez dígitos (por analogia aos 10 dedos das mãos)
com símbolos aparentemente desenvolvidos a partir de letras utilizadas nas regiões
ocidentais no mundo árabe. O matemático italiano Leonardo Fibonacci o introduziu
na Europa no século XII, de onde acabou por se tornar o padrão hoje mundialmente
adotado.

Apostila e Roteiro de Aulas Página 7 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
4 Sistema Numérico Indo-Arábico
O sistema indo-arábico utiliza o conceito de Notação Posicional, que o torna muito
mais simples do que os sistemas anteriores. A notação posicional determina que a
quantidade representada por cada dígito está relacionada não só ao símbolo
utilizado, como também à sua posição dentro do número. A soma das quantidades
representadas por cada um dos algarismos determina a quantidade representada pelo
número.

Valor do número = ∑ Valores de Posição


p
Valor de Posição = Va x Base
Va = Valor do algarismo
p = Posição

O mesmo conceito é aplicado atualmente nos outros sistemas de numeração,


inclusive naquele largamente utilizado hoje nos nossos dispositivos computacionais,
o sistema binário.

5 Sistemas de Numeração
Desde crianças, aprendemos a representar as quantidades através do sistema indo-
arábico com 10 símbolos. Por isso associamos rapidamente as combinações dos
algarismos dentro dos números às respectivas quantidades representadas. Ao ver o
preço de um produto em uma loja, por exemplo, basta ver o número para concluir
se está caro, barato, se a compra é viável etc.
No entanto, o uso de outros sistemas de numeração, também baseados na notação
posicional, pode ser particularmente interessante, especialmente quando falamos de
computadores. Nestes sistemas, o que muda é a base do sistema, ou seja, a
quantidade de símbolos utilizados. Assim como no caso da adoção de informações
digitais ao invés de analógicas, novamente o argumento é a simplicidade.
O sistema decimal exige a identificação de 10 diferentes símbolos, que precisam ser
representados, dentro de um computador, de formas diferentes. Quanto maior a
quantidade de símbolos diferentes a serem identificados, obviamente maior é
possibilidade de falhas, já que símbolos diferentes podem ser confundidos. Além
disto, se você tiver oportunidade de se aprofundar nos métodos utilizados pelos
computadores para realizar contagens, operações matemáticas e comparações,
perceberá que uma quantidade menor de símbolos fatalmente aumenta a
simplicidade operacional.

Apostila e Roteiro de Aulas Página 8 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
5.1 Base 2 (Binária)

De todas as bases possíveis, a menor é a binária (dois símbolos, 0 e 1), logo,


esta é a mais simples de todas. Por este motivo esta foi a base adotada nos
dispositivos computacionais. Nos computadores convencionais, a
representação dos dígitos binários é feita através de sinais elétricos. Graças à
existência de apenas dois valores válidos, se reduz muito a probabilidade de
erros relacionados à troca de dígitos em um sistema computacional
corretamente implementado. Em um componente baseado na tecnologia
CMOS, de 0 a 1/3 da tensão de alimentação, consideramos o símbolo 0; e de
2/3 até a tensão de alimentação, consideramos o símbolo 1.
Com apenas dois símbolos, a contagem é bem simples, embora números
grandes acabem exigindo muitos dígitos. Para um ser humano, parece
complicado manipular grandes quantidades de dígitos. Este é o motivo
principal da utilização das bases 8 e 16 para representação de informações
internas do computador.

5.2 Unidades de Armazenamento Binárias

Cada dígito binário é conhecido como bit (Binary digIT, uma sigla estranha,
o que é comum na cultura americana). Conjuntos de bits ou múltiplos, têm
nomes específicos. Como se trata de uma base binária, os múltiplos são
sempre potências de 2:
4 bits (22) = 1 nibble 8 bits (23) = 1 Byte.
O Byte (utiliza-se inicial maiúscula, inclusive nas siglas, para diferenciar de
bit), por sua vez, também tem seus múltiplos com base em potências de 2:
1024 Bytes (210 Bytes) = 1 KiloByte 1024 GB (240 Bytes) = 1 TeraByte
1024 KB (220 Bytes) = 1 MegaByte 1024 TB (250 Bytes) = 1 PetaByte
1024 MB (230 Bytes) = 1 GigaByte 1024 PB (260 Bytes) = 1 ExaByte
Apenas a título de curiosidade, um tabuleiro de xadrez, com suas 64 casas
preenchidas ou não com um grão de feijão, permitiria endereçar 2 PetaBytes.

5.3 Bases 8 (Octal) e 16 (Hexadecimal)

Eventualmente, em algumas situações, dispositivos computacionais utilizam


também outras bases, como a octal (8 símbolos) e a hexadecimal (16
símbolos). Em ambos os casos, temos uma potência de 2 (8=23 e 16=24), já
que o objetivo é a representação simplificada de conjuntos de algarismos
binários para análise humana.
A base 8 permite representar, portanto, 3 dígitos binários com apenas um
dígito octal. Já a base 16, mais comumente utilizada, permite representar 4
dígitos. Utilizam-se os mesmos símbolos já conhecidos da base 10 para ambos
os sistemas. No caso da base hexadecimal, como são necessários 16 símbolos,
Apostila e Roteiro de Aulas Página 9 de 27
Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
acrescentam-se as letras de A a F para representar as quantidades de 10 a 15,
respectivamente. É comum utilizar-se um sufixo “h” para identificar que se
trata de um número hexadecimal, muito embora a notação matemática para
bases diferentes de 10 é a colocação do número entre parênteses, com um a
base identificada ao lado direito. Sendo assim, a quantidade trinta pode ser
representada em hexadecimal por 1Dh, ou (1D)16.

5.4 Conversão entre Bases

É importante destacar que, independente da base utilizada, uma representação


numérica serve apenas para identificar uma informação. Sendo assim, uma
quantidade, por exemplo, pode ser representada de diferentes formas, por
diferentes números nas bases 2, 8 e 16.
Em todas as bases, utiliza-se a Notação Posicional para definir os valores
representados, e também é através da mesma que é possível converter números
entre diferentes bases de numeração.
Existem também técnicas mais simples para conversão de números entre
bases. Mesmo elas, no entanto, também baseiam-se no conceito de notação
posicional. Com a prática, você não terá dificuldades para converter números
entre bases diferentes, o que será necessário em algumas atividades que você
certamente desenvolverá durante os seus estudos e trabalho.

5.5 Representação Numérica

Também é importante lembrar que é possível representar números inteiros,


fracionários e negativos em todas as bases de numeração. A única diferença
diz respeito às dízimas – números que são dízimas em uma base podem não
ser dízimas em outra, e vice-versa.

5.6 Tabela ASCII

Os números também podem, e são utilizados para representar outros símbolos


como letras, caracteres especiais etc. Utilizam-se tabelas padronizadas que
associam números específicos a cada um destes símbolos. A mais conhecida
destas tabelas é a tabela ASCII. Você pode precisar consultar esta tabela para
algumas operações no seu computador.

Apostila e Roteiro de Aulas Página 10 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
Apostila e Roteiro de Aulas Página 11 de 27
Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
6 Computador – uma máquina de informações
Para capturar, armazenar, processar e fornecer informações, tanto como matéria-
prima quanto como produto final, a “máquina” (dispositivo computacional) precisa
trabalhar com representações destas informações, que, como vimos, estão
codificadas em formato digital e binário.
Nas primeiras tentativas de colocar uma máquina para trabalhar com informações,
o homem utilizou dispositivos mecânicos. Na época, as aplicações para a
eletricidade eram desconhecidas, e apenas as engrenagens e componentes
mecânicos estavam disponíveis. Obviamente, a complexidade envolvida na
construção destas máquinas era demasiadamente elevada, o que tornava estas
máquinas raras, e na maior parte das vezes, pouco funcionais.
A verdadeira revolução que permitiria o surgimento dos computadores atuais foi a
utilização de dispositivos eletroeletrônicos. Através de circuitos elétricos muito
mais simples do que as intricadas engrenagens dos primeiros “computadores”,
foram criadas os primeiros blocos funcionais que até hoje compõem os
computadores modernos. A evolução tecnológica em primeiro lugar tratou de
simplificar e melhorar a implementação destes blocos, e depois deu foco na
miniaturização dos mesmos. Um microprocessador moderno, coração de qualquer
dispositivo computacional, é formado por milhões de blocos básicos interligados em
uma estrutura funcional eficiente e confiável. Conhecer e entender estas estruturas
é um dos principais objetivos de nossa disciplina.

7 Circuitos elétricos
Antes de vermos a implementação dos blocos básicos de um dispositivo
computacional, precisamos entender o princípio de operação de qualquer circuito
elétrico.
Em um circuito elétrico, uma fonte de tensão provoca a circulação física de elétrons
(ou lacunas no sentido matemático) através de condutores. No caminho entre os dois
polos desta fonte, os elétrons podem passar por componentes que transformarão a
energia da diferença de potencial da fonte em outro tipo de energia (térmica,
luminosa, eletromagnética etc).
A aplicação de uma diferença de potencial de tensão (V) pela fonte provoca a
circulação de uma corrente elétrica (i) que depende da resistência elétrica (R) que
os condutores e componentes oferecerão, ao longo do circuito, à passagem da
corrente (i = V / R).
A depender da tensão da fonte, e da sua potência, podem ser fornecidas diferentes
intensidades de energia térmica (pelo aquecimento de um condutor específico), de
luz (pela excitação de materiais luminescentes, por exemplo), de campos
magnéticos (em um eletroímã, ou relé, por exemplo), de trabalhos mecânicos (pelo
acionamento de motores), entre outros. Nos exemplos que estudaremos e veremos
em laboratório, utilizaremos uma fonte de alimentação externa que alimentará

Apostila e Roteiro de Aulas Página 12 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
diversos dispositivos de entrada e saída, além dos próprios componentes do
dispositivo computacional.
É trabalho do projetista do circuito calcular as intensidades aplicáveis de tensão e
corrente no circuito para garantir uma operação satisfatória e segura, além de
conectar corretamente os componentes do circuito. Nos exemplos práticos que
veremos em laboratório, os “cálculos” serão feitos pelo professor, mas as conexões
precisarão ser realizadas cuidadosamente para garantir o sucesso dos experimentos
e evitar danos aos componentes.
É necessário que exista um “circuito fechado”, ou seja, um caminho sem
interrupções entre os dois polos da fonte de tensão, para que ele funcione. A
interrupção do circuito pode ser feita através de interruptores físicos, elétricos, ou
semicondutores, que também são componentes típicos em um dispositivo
computacional, e serão utilizados em nossos experimentos.

8 Funções Lógicas Binárias em circuitos elétricos


Através da implementação de arranjos elementares de interruptores (que serão
utilizados como “entradas”), e de LEDs luminosos (que serão utilizados como
“saídas”), é perfeitamente possível sintetizar algumas funções lógicas básicas. Estas
funções são similares às funções dos blocos básicos de um dispositivo
computacional, muito embora sejam implementadas de forma mais confiável e
eficiente nestes últimos.
Antes de mais nada, precisamos associar os algarismos binários às suas
representações. Nos circuitos elétricos que citaremos, o algarismo 0 (Zero) é
tipicamente associado:
- Entrada: circuito aberto (interrompido)
- Saída: LED Apagado
No caso do algarismo 1 (Um), a associação é:
- Entrada: circuito fechado
- Saída: LED Aceso

8.1 Lógica E (AND)

A lógica AND estabelece uma saída verdadeira apenas quando TODAS as


entradas forem verdadeiras. A existência de apenas uma entrada falsa torna a
saída falsa. É possível implementar a lógica E com duas ou mais entradas, a
depender do circuito que está sendo implementado.

8.2 Lógica OU (OR)

A lógica OU estabelece uma saída falsa apenas quando TODAS as entradas


forem falsas. A existência de uma única entrada verdadeira tona a saída
verdadeira. Assim como no caso do E, também é possível implementar a
Apostila e Roteiro de Aulas Página 13 de 27
Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
lógica OU com duas ou mais entradas, a depender do circuito que está sendo
implementado.

8.3 Lógica NÃO (NOT)

A lógica NÃO estabelece uma saída com valor oposto à entrada, ou seja, se a
entrada for verdadeira, a saída será falsa, e vice-versa. A lógica NÃO só
admite uma única entrada para uma saída.

Uma vez conhecidos estes três blocos básicos, a pergunta típica é: seria possível
construir um computador utilizando apenas estes exemplos de circuitos?
Em termos funcionais, com apenas estes 3 blocos, teoricamente é possível construir
um computador. O problema é que um computador exige a interligação entre
milhares destes blocos. Sendo assim, a saída de um bloco deve poder funcionar
como entrada do próximo bloco, e assim sucessivamente. Como um LED aceso
normalmente não é suficiente para acionar um interruptor, precisamos melhorar os
circuitos apresentados (na verdade até existe como fazer isto, mas não seria prático,
e exigiria outros componentes que ainda não estudamos).
Na época do desenvolvimento dos primeiros dispositivos computacionais, os
interruptores de entrada foram substituídos por relês eletromecânicos, o que resolvia
o problema da interconexão. No entanto, relés eletromecânicos ocupam muito
espaço, consomem muita energia, são lentos e apresentam falhas depois de algum
tempo de uso.
A primeira evolução, que gerou a chamada 1ª Geração dos Computadores, foi a
substituição dos relés mecânicos por válvulas a vácuo. A válvula é um componente
eletrônico muito utilizado no passado (ainda existe uma dentro do seu micro-ondas,
chamada de “Magnetron”). Entre as principais aplicações da válvula está a de “relé
eletrônico”, porém mais confiável e rápida. No entanto, a válvula ainda ocupava um
espaço significativo, e consumia muita energia. Mesmo assim, os primeiros
computadores conhecidos eram baseados em válvulas a vácuo.
Na 2ª Geração, as válvulas foram substituídas com vantagens pelos transistores, o
que reduziu o seu tamanho e consumo de energia. Na 3ª geração, vieram os
chamados “circuitos integrados”, avós dos chips atuais. Nos experimentos no
laboratório, utilizaremos as versões modernas destes primeiros chips.

9 Portas Lógicas Básicas


Os blocos elementares de um dispositivo computacional são as chamadas “Portas
Lógicas”. Estes blocos têm apenas uma saída, e funções lógicas e representações
gráficas específicas.

Apostila e Roteiro de Aulas Página 14 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
9.1 Porta AND

Implementa a função lógica E. A porta AND pode ter duas ou mais entradas.
A B S
0 0 0
0 1 0
1 0 0
1 1 1

9.2 Porta OR

Implementa a função OU. A porta OR pode ter duas ou mais entradas.


A B S
0 0 0
0 1 1
1 0 1
1 1 1

9.3 Porta NOT

Implementa a função NÃO. A porta NOT tem apenas uma entrada. Pode vir
acoplada à saída das portas lógicas anteriores, que passam a se chamar de
NAND e NOR.
A S
0 1
1 0

Apostila e Roteiro de Aulas Página 15 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
9.4 Porta XOR

Tem apenas uma saída. Apresenta uma saída verdadeira toda vez que o
número de entradas verdadeiras for par (0 ou 2). Existem, no entanto, duas
outras formas de avaliar a saída:
- Será verdadeira quando as entradas forem diferentes;
- A saída é o dígito menos significativo da soma das entradas.
A porta XOR possui sempre duas entradas. Quanto à saída da mesma é
conectada uma porta NOT, ela se transforma em uma porta XNOR.
A B S
0 0 0
0 1 1
1 0 1
1 1 0

Nos experimentos de laboratório utilizaremos circuitos integrados que contém


conjuntos destas portas:
CI 74HC00 Portas Lógicas NAND
CI 74HC02 Portas Lógicas NOR
CI 74HC04 Portas Lógicas NOT
CI 74HC08 Portas Lógicas AND
CI 74HC32 Portas Lógicas OR
CI 74HC86 Portas Lógicas XOR
Pesquise na Internet, e guarde contigo as características destes componentes para se
preparar para o laboratório.

Apostila e Roteiro de Aulas Página 16 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
10 Um exemplo de circuito Aritmético
Tal como vimos anteriormente, os blocos elementares são concatenados para formar
os componentes de um computador típico. Para começar a entender como isso pode
ser feito, vamos analisar uma operação aritmética básica, a soma.
No exemplo abaixo, temos a soma de dois números binários de oito bits:
1 1 1 1
1 0 0 1 0 1 1 1
0 1 0 1 0 1 0 1 +
------------------
1 1 1 0 1 1 0 0

Podemos observar que, em 4 dígitos, foi necessário somar 3 números binários, se


considerarmos o “Vai-Um” vindo do dígito anterior. O único dígito onde isto jamais
acontece é o menos significativo, já que ele não tem dígito anterior.
Sendo assim, para somar dois números binários com “n” dígitos, são necessários
dois tipos de circuito: um somador com duas entradas, e “n-1” somadores com três
entradas. O somador com duas entradas é conhecido como “meio somador”, e o
outro, como “somador completo”.

Meio Somador Somador Completo

Ambos os circuitos oferecem duas saídas: a soma, e o “vai-um” para o próximo


dígito. Considerando que o meio somador utiliza duas portas lógicas, e o somador
completo cinco portas, para somar os dois Bytes do exemplo anterior, seriam
necessárias quantas portas lógicas? E em um computador de 32 bits? Este é um boa
explicação para a quantidade gigantesca de portas lógicas que são necessárias para
construir um computador moderno.
Os circuitos aritméticos como os somadores, e outros circuitos especializados em
outras operações matemáticas e lógicas são agrupados, em um computador
moderno, na chamada ULA – Unidade Lógica e Aritmética.
Apostila e Roteiro de Aulas Página 17 de 27
Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
11 Tabela-Verdade e a Síntese de Circuitos Lógicos
Ainda usando o exemplo anterior, vemos que é fácil de perceber que o circuito Meio
Somador pode ser “adivinhado” pela simples observação de sua tabela-verdade. No
entanto, o circuito do Somador Completo não é tão simples.
Deve existir alguma forma de obter o circuito lógico correspondente a uma
determinada tabela-verdade, ou seja, deve ser possível “sintetizar” um circuito que
realize a operação que desejamos. Esta habilidade será útil não só para projetar
circuitos lógicos que atendam a determinada condição – o que provavelmente não
fará parte de sua atividade profissional futura - mas também para determinar como
implementar um “estrutura de decisão” em um determinado software que você está
desenvolvendo, de forma a que ele realize – de forma simples - exatamente aquilo
que você deseja com base nas informações recebidas. Isso parece interessante, não?
Vamos ver como se faz.
Na nossa 2ª Lista de exercícios, tivemos um exemplo básico de síntese de circuitos
lógicos. Na 3ª questão da lista, tínhamos uma tabela verdade onde todas as saídas
eram falsas, e apenas uma era verdadeira. Na execução do exercício, associamos
este comportamento à porta AND, e com isso conseguimos resolver o problema. Já
na 4ª questão, a tabela verdade tinha apenas uma saída falsa, e todas as outras
verdadeiras. Naquele caso, associamos o comportamento à porta OR.
No entanto, nem sempre uma tabela verdade possui apenas uma situação verdadeira,
que nos permite associar o comportamento a uma porta AND; ou apenas uma
situação falsa, o que nos permitiria usar uma porta OR. Muitas vezes as saídas
assumem valores diversos, com mais de uma saída para cada uma das possibilidades
apresentadas na tabela. Vejamos um exemplo:
O desenho ao lado representa o chamado “Display
de 7 segmentos”, muito utilizado para representar
números em displays em geral, de relógios digitais
a painéis de chamada para sistemas de atendimento.
Neste tipo de display, temos 7 LEDs, identificados
com as letras de “a” a “g”, que acendem de acordo
com o número binário que é entregue ao a
decodificador.
No exemplo ao lado, temos as representações dos f b
números 0, 1 e 2 usando os sete segmentos. Se g
escolhermos o segmento “a”, veremos que o
mesmo acende para os seguintes valores: 0, 2, 3, 5, e c
6, 7, 8 e 9. O mesmo segmento fica apagado para
os valores 1 e 4. Como sintetizar o circuito lógico d
que ativaria este segmento?

Apostila e Roteiro de Aulas Página 18 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
b3 b2 b1 b0 a Na tabela verdade do segmento “a”, temos oito saídas
verdadeiras, e duas falsas. Existem também seis “saídas
0 0 0 0 1 irrelevantes”, que se referem às combinações de entradas
0 0 0 1 0 que jamais aconteceriam para “Binários Codificados em
Decimal (BCD). Nestes casos, tanto faz o valor da saída (0
0 0 1 0 1 ou 1). Sendo assim, consideramos apenas as 10 primeiras
0 0 1 1 1 combinações.
0 1 0 0 0 Existem duas possíveis soluções. Na primeira, montaríamos
um circuito AND para cada uma das oito combinações em
0 1 0 1 1 que o segmento se acende; na outra, um circuito OR para
0 1 1 0 1 cada uma das duas combinações em que o segmento se
apaga. Pelo grau de complexidade, precisamos escolher a
0 1 1 1 1
segunda opção, onde teríamos apenas duas portas OR.
1 0 0 0 1 Considerando então duas portas OR, teríamos duas
1 0 0 1 1 situações em que as portas OR teriam, cada uma delas, o
valor 0 como saída.
1 0 1 0 x
Lembrando da Lista de Exercícios, seria fácil montar o
1 0 1 1 x circuito lógico para garantir a saída falsa em cada uma das
1 1 0 0 x situações usando uma porta OR com quatro entradas. O
problema, no entanto, é que precisamos de apenas uma
1 1 0 1 x
saída para controlar o segmento. Como proceder?
1 1 1 0 x
Uma porta AND interligando as duas saídas das portas
1 1 1 1 xresolve o problema, já que ele manterá o segmento aceso
apenas quando as duas saídas foram verdadeiras, e como
elas são verdadeiras em todos os casos, exceto naqueles em que o segmento deve
ficar apagado, o arranjo funciona perfeitamente.

Apostila e Roteiro de Aulas Página 19 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
b3 b2 b1 b0 e Analisando agora o segmento “e”, vemos que ele acende
para os números 0, 2, 6 e 8, e permanece apagado para os
0 0 0 0 1 valores 1, 3, 4, 5, 7 e 9. Neste caso, também pela
0 0 0 1 0 simplicidade, precisamos escolher a solução com portas
AND.
0 0 1 0 1
De forma oposta, devemos interligar as quatro portas AND
0 0 1 1 0 por uma porta OR de quatro entradas para controlar o
0 1 0 0 0 segmento.

0 1 0 1 0 12 Simplificação de Circuitos Lógicos


0 1 1 0 1
Além de considerar as chamadas “saídas irrelevantes”,
0 1 1 1 0 outra prática comum é reaproveitar partes de expressões
1 0 0 0 1 lógicas já existentes em uma saída para outra saída. Neste
caso, como temos sete diferentes saídas, isso fica
1 0 0 1 0 relativamente fácil.
1 0 1 0 x A prática mais adequada, no entanto, é a utilização de
1 0 1 1 x técnicas de simplificação das expressões lógicas. Existem
diferentes métodos para realizar isto.
1 1 0 0 x
Um deles é a simplificação direta da expressão usando a
1 1 0 1 x chamada “Álgebra de Boole”. Nesta técnica, a expressão
1 1 1 0 x lógica é escrita considerando a lógica AND como
“multiplicação”, e a lógica “OR” como soma.
1 1 1 1 x
A expressão da tabela ao lado seria:
__ __ __ __ __ __ __ __ __ __ __ __
b3.b2.b1.b0 + b3.b2.b1.b0 + b3.b2.b1.b0 + b3.b2.b1.b0
Esta expressão pode ser simplificada algebricamente visando obter uma expressão
mais simples, no entanto ela não se aproveita das saídas irrelevantes.

Apostila e Roteiro de Aulas Página 20 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
Outro método mais interessante é o
método de Karnaugh, que utiliza
uma simplificação “gráfica” da
expressão. Com base na matriz
abaixo, onde cada célula
corresponde a uma determinada
combinação das variáveis de
entrada, preenchemos cada uma
com o valor da saída
correspondente. Depois agrupamos
os conjuntos de bits 1 de forma a que
todos os bits 1 façam parte de algum
grupo. Quanto maior o grupo, mais
simples é a expressão; grupos com
oito casas são representados por
apenas uma entrada; quatro casas, um AND de duas variáveis, e duas casas, um
AND de três variáveis. No caso da expressão do segmento “e”, obtemos o diagrama
ao lado, que resulta na expressão final:
__ __ __
E=C.D+B.D

A simplificação de expressões e circuitos lógicos, no entanto, foge do escopo de


nossa disciplina. O conceito foi apresentado apenas para ilustrar a existência de
técnicas específicas para isso.

13 Prática de Implementação de Circuito Lógico

14 Lógica Combinacional x Lógica Sequencial

15 Estrutura de um Computador
15.1 ENIAC: o primeiro computador de uso geral

O Electronic Numerical Integrator and Computer é normalmente um dos


primeiros computadores citados quando estamos estudando a história dos
computadores. Ele possuía algumas características marcantes, como por
exemplo, o fato de ser baseado na base 10, e não 2, como os computadores
atuais.
No entanto, uma das suas principais características inovadoras era o fato dele
ser considerado a primeira máquina capaz de ser “programada”, ou seja, ele

Apostila e Roteiro de Aulas Página 21 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
podia ser utilizado para diversas diferentes aplicações, desde que fosse
preparado previamente para aquilo.
No entanto, esta programação era feita de forma “manual”, através do
posicionamento de chaves e conexões elétricas via cabos. Programar o ENIAC
era uma atividade bem mais complexa do que a programação de um
computador atual.

15.2 O IAS, a máquina de Von Neumann

Desenvolvido logo depois da criação do ENIAC, o IAS (Institute of Advanced


Study) trazia grandes avanços. Além da arquitetura inovadora de Von
Neumann, que é utilizada até hoje na maior parte dos computadores atuais, o
IAS foi a primeira máquina “de programa armazenado”, ou seja, pela primeira
vez os programas eram armazenados na memória principal do computador,
assim como os dados por ele manipulados.
Sua estrutura, até hoje utilizada, envolvia os seguintes elementos:

Com 1.000 posições de memória com palavras de 40 bits, o IAS, até hoje
conhecido como “a máquina de Von Neumann” armazenava, em cada palavra
de memória, um número ou carácter codificado, ou então duas instruções de
20 bits, sendo que os primeiro 8 bits contiam o “OpCode”, e os 12 bits finais
os operadores daquele instrução específica.

Apostila e Roteiro de Aulas Página 22 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
15.3 Estrutura de Alto Nível

Um computador, tal como o conhecemos desde o surgimento da máquina de


Von Neumann, pode ser dividido em 3 blocos principais: a CPU, a Memória
Principal e os dispositivos de Entrada/Saída. Estes blocos são interligados por
meio dos barramentos de comunicação.

15.4 Estrutura da CPU

A CPU, por sua vez, pode também ser dividida em 3 blocos principais: a
Unidade Lógica e Aritmética, a Unidade de Controle e os Registradores. Desta
vez, os blocos são interligados pelos barramentos internos da CPU.

15.5 Estrutura da Unidade de Controle

A “CPU DA CPU”, ou a Unidade de Controle, é por sua vez dividida também


em 3 blocos: a Memória de Controle, a Lógica de Sequência (um circuito
sequencial) e os Registradores e Decodificadores (circuitos combinacionais).

16 Operando o IAS
Como a esmagadora maioria dos computadores atuais utiliza uma estrutura similar
à Máquina de Von Neumann, cabe utilizá-la como exemplo para entender a
operação básica de um computador de uso geral.

16.1 Os registradores do IAS

MBR – Memory Buffer Register


MAR – Memory Address Register
IR – Instruction Register
IBR – Instruction Buffer Register
PC – Program Counter
AC – Acumulator
MQ – Multiplier Quotient

16.2 Ciclo de Instrução no IAS

O IAS, assim como qualquer outro computador, executa programas instrução


por instrução, como uma máquina sequencial. Para cada instrução, o
computador precisa buscar, carregar e finalmente executar a instrução. Este
processo, chamado de “ciclo de instrução” está dividido em dois ciclos: a
busca e a execução. Usando os registradores apresentados anteriormente, este
é um fluxograma parcial do ciclo de instrução do IAS:

Apostila e Roteiro de Aulas Página 23 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
Figura 2.4 Stallings

Na figura, para simplificar a análise, marquei com fundo azul as quatro


instruções exemplo que estariam sendo supostamente executadas, e separei
com traços azuis escuros as partes do fluxograma que relativos à execução de
cada uma delas.
Podemos ver que o fluxograma encontra-se dividido em duas partes: a parte
superior, que representa a “busca” e a parte inferior, que representa a
“execução”, neste último caso contendo quatro possíveis instruções
diferentes.

Apostila e Roteiro de Aulas Página 24 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
16.3 O Assembly do IAS

Mas quais são as instruções possíveis? A tabela a seguir apresenta as 21


instruções da linguagem Assembly do IAS. São basicamente cinco tipos de
instrução:
a) Transferência de dados entre registradores e posições de memória;
b) Desvios incondicionais, que mudam a sequência padrão de execução das
instruções, permitindo a repetição de trechos do programa, por exemplo;
c) Desvios condicionais, que mudam a sequência padrão de execução das
instruções com base no valor do Acumulador (um dos registradores da
CPU do IAS);
d) Aritméticas, que são constituídas de operações matemáticas básicas em
binário;
e) Modificação de endereço, que permite a manipulação de endereços com
base em resultados obtidos pela ULA.

Apostila e Roteiro de Aulas Página 25 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976
Com base nesta tabela de instruções, você seria capaz de dizer quais as
instruções necessárias para executar cada uma das instruções apresentadas na
figura?

Apostila e Roteiro de Aulas Página 26 de 27


Prof. Marco Câmara [email protected]
Home Page: www.logicengenharia.com.br/mcamara Celular (Vivo e WhatsApp) 71 9 9197 8976

Você também pode gostar