Você está na página 1de 247

Infraestrutura de Hardware

Juliana Regueira Basto Diniz


Abner Corra Barros

Volume 1

Recife, 2009
Universidade Federal Rural de Pernambuco

Reitor: Prof. Valmar Corra de Andrade


Vice-Reitor: Prof. Reginaldo Barros
Pr-Reitor de Administrao: Prof. Francisco Fernando Ramos Carvalho
Pr-Reitor de Extenso: Prof. Paulo Donizeti Siepierski
Pr-Reitor de Pesquisa e Ps-Graduao: Prof. Fernando Jos Freire
Pr-Reitor de Planejamento: Prof. Rinaldo Luiz Caraciolo Ferreira
Pr-Reitora de Ensino de Graduao: Prof. Maria Jos de Sena
Coordenao Geral de Ensino a Distncia: Prof Marizete Silva Santos

Produo Grfica e Editorial


Capa e Editorao: Allyson Vila Nova, Rafael Lira, Italo Amorim, Arlinda Torres e Heitor Barbosa
Reviso Ortogrfica: Marcelo Melo
Ilustraes: Allyson Vila Nova, Diego Almeida e Moiss de Souza
Coordenao de Produo: Marizete Silva Santos
Sumrio

Conhecendo o Volume 1..................................................................................4

Apresentao....................................................................................................5

Captulo 1 Modelo de um Sistema Computacional.....................................7

Captulo 2 Conhecendo Melhor as Operaes Aritmticas.....................22

Captulo 3 Lgica Digital.............................................................................75

Consideraes Finais.....................................................................................94

Conhea os Autores.......................................................................................96
Conhecendo o Volume 1

Neste primeiro volume, voc ir encontrar os contedos referentes ao Mdulo 1 da


disciplina Infraestrutura de Hardware. Para facilitar seus estudos, veja os contedos
encontrados neste primeiro volume.

Mdulo 1 - Introduo aos Sistemas Computacionais

Carga horria: 15 h

Objetivo Principal do Mdulo 1:

Apresentar um sistema computacional, separando todos os seus subsistemas


internos que sero estudados nos prximos mdulos. Alm disso, apresenta
um breve histrico da evoluo dos computadores e os conceitos associados
aritmtica computacional e operao dos circuitos lgicos digitais.

Contedo Programtico do Mdulo 1

Modelo de um sistema de computao.

Evoluo dos Computadores

Operaes Aritmticas

Circuitos Lgicos
Apresentao

Caro(a) Cursista,

Estamos, neste momento, iniciando uma viagem para conhecer a Organizao


e a Arquitetura interna dos computadores, ou seja, conheceremos os principais
componentes eletrnicos que formam um computador, os circuitos integrados, e como
estes componentes se relacionam entre si. Todos os assuntos abordados neste livro
estaro, de certa forma, relacionados estrutura e ao funcionamento de computadores,
sobretudo do ponto de vista de Hardware. Por meio desta disciplina, apresentaremos a
natureza e as caractersticas dos sistemas de computao modernos.

Nosso estudo ser uma tarefa interessante e desafiadora, principalmente porque


contamos hoje no apenas com uma grande variedade de computadores, mas com uma
grande variedade de equipamentos eletrnicos que executam algum tipo de computao.
Essa variedade de produtos difere em custo, tamanho, desempenho e tipo de aplicao
a ser utilizado. Alm disso, observamos uma rpida evoluo na tecnologia, que se
estende desde circuitos integrados at a combinao desses componentes.

Mesmo diante de uma rpida evoluo, certos conceitos aplicam-se a qualquer


projeto de computadores. O objetivo desta disciplina oferecer uma discusso sobre
esses conceitos, relacionando-os com as questes de projetos modernos.

Bons estudos!

Juliana Regueira Basto Diniz


Abner Correa Barros

Professores Autores
Infraestrutura de Hardware

Captulo 1

O que vamos estudar?

Neste captulo, vamos estudar os seguintes temas:

Funes do Computador

Componentes do Computador

Evoluo histrica dos Computadores

Metas

Aps o estudo deste captulo, esperamos que voc consiga:

Compreender que funes bsicas so desempenhadas pelos


computadores;

Identificar que componentes e subsistemas so necessrios na


organizao interna dos computadores para que os mesmos
possam desempenhar as suas funes bsicas;

Conhecer a evoluo histrica da informtica, desde o primeiro


computador eletrnico at as mquinas mais modernas da
atualidade.

6
Infraestrutura de Hardware

Captulo 1 Modelo de um
Sistema Computacional

Vamos conversar sobre o assunto?

Estamos, neste momento, iniciando o estudo de uma das reas


mais importantes da computao, a infraestrutura de hardware. Sem
a evoluo do hardware e dos seus componentes eletrnicos, toda a
disseminao da informtica, como vemos hoje, no seria possvel.
Talvez at este momento voc nunca tenha parado para pensar o
quanto somos dependentes desta tecnologia. Voc consegue imaginar
a sua vida, nos dias atuais, sem o uso dos computadores? Imagine
como seria este nosso curso sem o uso dos computadores. Seria, no
mximo, um curso por correspondncia acompanhado por algum tipo
de programa televisivo, como acontecia com os cursos a distncia no
passado, ou seja, no seria possvel a sua interao com professores
nem colegas.

Todos somos testemunhas do quo rpido a informtica evoluiu


e passou a fazer parte da nossa vida nestes ltimos anos. Em
praticamente todos os recursos da vida moderna existe algum sistema
computadorizado. Toda esta evoluo, entretanto, no seria possvel
sem os avanos formidveis ocorridos na arquitetura de hardware dos
computadores em geral.

Mas, por falar em evoluo das arquiteturas, voc sabe o que


vem a ser e como constituda a arquitetura de hardware de um
computador?

A arquitetura de computadores a rea da cincia que se preocupa


em estudar os atributos dos Sistemas Computacionais que so visveis
aos profissionais que iro programar estes equipamentos, ou seja, a
estrutura e o comportamento funcional da mquina. Esses atributos,
conforme veremos mais a frente, tm impacto direto sobre a lgica de
construo e execuo dos programas.

Em paralelo arquitetura de computadores, estudaremos tambm


a organizao dos sistemas computacionais. A organizao dos
computadores refere-se ao estudo dos aspectos no visveis ao

7
Infraestrutura de Hardware

programador, ou seja, assuntos referentes organizao dos fluxos


de dados, projeto de controle lgico e a implementao fsica, que
iro atendem s especificaes da arquitetura.

Em termos prticos, so considerados aspectos da arquitetura dos


computadores o conjunto de instrues de uma mquina, o nmero de
bits do processador, os mecanismos associados aos perifricos e as
tcnicas de endereamento da memria. So aspectos da organizao
de computadores os Sinais de controle, a interface computador/
perifrico, a tecnologia de memria utilizada, dentre outros.

Figura 1 Como um computador trabalha?

Em sntese, muitos fabricantes oferecem uma famlia de modelos de


computadores, todos com a mesma arquitetura, mas com diferenas
na organizao, com preos e caractersticas de desempenho
distintas. Tomemos como exemplo o Sistema 370 da IBM, uma
arquitetura introduzida em 1970, com grande nmero de modelos.
Um cliente modesto poderia comprar um modelo inferior e, caso sua
demanda aumentasse, poderia migrar para um modelo superior.
Como todos os computadores desta famlia adotavam uma mesma
arquitetura de hardware, uma eventual troca de um computador por
um outro maior no o obrigaria a abandonar as aplicaes que j
tivessem sido desenvolvidas para o seu primeiro computador. Ao longo
dos anos, a IBM continuou introduzindo modelos novos, mantendo a
mesma arquitetura, preservando assim o investimento em software
dos clientes.

Um outro exemplo, mais prximo da realidade de cada um de


ns, so os nossos computadores pessoais, os famosos PCs. Voc

8
Infraestrutura de Hardware

j percebeu que com o passar dos anos foi mantida uma certa
compatibilidade entre as diversas geraes deste tipo de computador?
Esta compatibilidade se deve ao fato de todos adotarem a arquitetura
Intel X86. por esta razo que mesmo aquele seu programa antigo,
de dez ou quinze anos atrs, ainda poder ser executado sem muitos
transtornos nos computadores atuais. Como voc pode perceber,
manter uma mesma arquitetura entre diversas geraes de uma
famlia de computadores permite manter a compatibilidade de cdigo.

A organizao interna de um computador, por outro lado, muda


de uma mquina para outra dentro da mesma famlia. ela que em
grande parte define as caractersticas de tamanho, desempenho,
robustez e preo dos computadores. Ou seja, enquanto uma
arquitetura pode sobreviver por anos, a organizao muda com a
evoluo da tecnologia.

1.1 Funes do Computador

Se, por um lado, um computador pode ser considerado um sistema


complexo, com milhes de componentes eletrnicos, por outro lado,
tambm podemos consider-lo um sistema hierrquico, constitudo
por vrios sub-sistemas interrelacionados. Em cada um desses
nveis da hierarquia, devemos considerar a Funo e a Estrutura. A
funo diz respeito operao de cada componente como parte da
estrutura. A estrutura refere-se ao modo como os componentes esto
interrelacionados.

Dentre as funes bsicas realizadas pelo computador podemos


citar:

Processamento de dados: Um computador deve ser capaz de


processar dados. Dados estes com uma grande variedade de
tipos e amplos requisitos de processamento.

Armazenamento de dados: essencial que um computador


seja capaz de armazenar dados. Esse armazenamento pode
ser temporrio ou por perodos longos, para subsequente
recuperao e modificao.

Movimentao de dados: Um computador deve ser capaz


de transferir dados tanto internamente, quanto com o mundo
externo. Dados podem ser enviados ou recebido de dispositivos
diretamente conectados ao computador. Esse processo

9
Infraestrutura de Hardware

conhecido como entrada e sada (E/S) e o dispositivo que


esta recebendo ou enviando estes dados conhecido como
perifrico.Quantos perifricos de computador voc conhece?
Que tal o disco rgido, o pendrive e o leitor de DVD? Quando
essa transferncia se d entre o computador e um dispositivo
externo, que esteja a uma distncia maior, este processo
conhecido como comunicao de dados.

Controle: Deve existir um controle das trs funes abordadas.


Em ltima instncia, o controle exercido pelo indivduo que
fornece instrues ao computador. Num sistema de computao,
uma unidade de controle gerencia os recursos do computador
e rege o desempenho de suas partes funcionais em resposta a
essas instrues.

Dessa forma, o computador pode funcionar como um dispositivo


de transferncia de dados de um perifrico para outro. Tambm
pode funcionar como um dispositivo de armazenamento de dados,
sendo os dados transferidos do ambiente externo para a memria
(leitura) e vice-versa (escrita). Podem ainda processar estes dados,
sendo capazes de transferir o resultado deste processamento para o
ambiente externo.

1.2 Componentes do Computador

Agora que voc j conhece quais so as principais funes de


um computador, j est apto a compreender quais so os principais
componentes que permitem a viabilizao de tais funcionalidades.

So eles:

Central de Processamento, tambm conhecido como


processador ou CPU (do ingls Central Processing Unit), tem
a responsabilidade de controlar as operaes do computador e
realizar as funes de processamento de dados.

Subsistema de Memria, compreende todos os meios de


armazenamento para os programas e para os dados dos
programas existentes no computador.

Subsistema de Entrada e Sada (E/S), tem a funo de


transferir dados entre o computador e o ambiente externo.

Subsistema de Interconexo, composto pelos Mecanismos

10
Infraestrutura de Hardware

que estabelecem a comunicao entre a CPU, memria


principal e dispositivos de E/S.

Tais componentes so observados na Figura 2. Neste livro,


estudaremos cada um dos subsistemas internos ao computador,
iniciando pela parte responsvel pelo processamento de dados, ou
seja, a CPU.

Figura 2 Componentes internos

Central de Processamento - CPU

A CPU pode ser considerado o crebro do computador, sendo


responsvel pela execuo de todas as tarefas e pelo processamento
de dados. Todas as operaes aritmticas e lgicas existentes em um
programa de computador so executadas por ela. Uma CPU pode
ser composta por um ou vrios processadores, os quais podem estar
juntos em um mesmo componente, formando o que ficou conhecido
como processador multi-core, uma expresso inglesa que significa
literalmente multi-ncleo, neste caso cada processador considerado
um ncleo de processamento, ou separados, cada processador
em um componente distinto. Em ambos os casos dizemos que o
sistema multiprocessado. Como veremos mais a frente, nos dois
casos o objetivo aumentar a capacidade de processamento do
computador permitindo que vrias operaes possam ser executadas
simultaneamente pelos diversos cores da CPU. A Figura 3 a seguir nos
traz uma foto do processador Athlon X2, que possui internamente dois

11
Infraestrutura de Hardware

processadores de 32 bits, sendo portanto da categoria dual-core.

Figura 3 Processador Athlon X2

Os processadores possuem vrios componentes internos,


conforme observado na Figura 4. Podemos subdividir a CPU nos
seguintes componentes internos:

Unidade de controle: A unidade de Controle, como o prprio


nome sugere, controla cada operao da CPU e, portanto, do
computador. Ela responsvel por decodificar as instrues
presentes no programa em execuo emitindo sinais de controle
para as demais partes do computador.

Unidade lgica e aritmtica (ULA): A ULA responsvel


por executar as funes de processamento de dados do
computador, realizando as operaes aritmticas e lgicas
presentes no programa.

Registradores: Os registradores fornecem espao de


armazenamento interno para a CPU, servindo como uma
memria de acesso ultra-rpido.

Interconexo da CPU: As interconexes da CPU so os


elementos que possibilitam a comunicao entre a unidade de
controle, a ULA e os registradores.

12
Infraestrutura de Hardware

Figura 4 Componentes internos a CPU

Agora que voc j foi apresentado(a) aos subsistemas do


computador, que tal conhecermos um pouco mais sobre a evoluo
dos computadores? Para os computadores chegarem at os dias
atuais em termos de organizao e arquitetura de hardware muita coisa
foi modificada. Nesse sentido, na prxima seo, a nossa proposta
ampliar as discusses sobre a evoluo dos computadores. Vamos
l?

1.3 Evoluo dos Computadores

As mquinas, sobretudo os computadores, foram criados para


auxiliar o trabalho humano. Muitas das suas tarefas se baseiam
na construo de algoritmos que visam simular aes do crebro
humano. Podemos fazer uma rpida comparao para constatar que
os seres humanos so capazes de se adaptar a novas situaes e
a aprenderem com os seus erros. J as mquinas so capazes de
executar tarefas repetidamente, com rapidez, sem sofrer de monotonia
e com perfeio. As mquinas tambm tm capacidade de armazenar

13
Infraestrutura de Hardware

grandes volumes de dados e informaes.

O primeiro computador eletrnico da histria surgiu em 1946,


fabricado pela Universidade da Pensilvnia e chamava-se ENIAC
(Eletronic Numeric Integrator and Computer). Ele pesava 50 toneladas,
media 5,50 metros de altura e 25 metros de comprimento. Isso
equivale a ocupar uma rea de um ginsio de esportes. A primeira
vez que o ENIAC foi ligado, ele consumiu tanta energia que as luzes
de Filadlfia piscaram. Seu funcionamento se assemelhava a das
calculadoras atuais, sendo operado manualmente, com circuitos
lgicos constitudos por milhares de vlvulas. O ENIAC foi criado
para fins militares, na poca da Segunda Guerra Mundial e pode ser
observado na Figura 5.

Hiperlink

Caso voc deseje


visualizar a
fotografia original
do ENIAC acesse
o site: http://
www.arl.army.
mil/www/default. Figura 5 Fotografia do ENIAC
cfm?Action
=20&Page307

Aps o ENIAC, seguindo a primeira gerao dos computadores,


surgiu o UNIVAC I. Esse computador teve 15 unidades vendidas e
um tamanho aproximado de 20m2. Seus circuitos eletrnicos tambm
eram baseados em vlvulas e o seu armazenamento de dados era
realizado atravs de papel perfurado. Em geral, os computadores da
primeira gerao esquentavam muito e ocupavam grandes espaos
fsicos. Tambm apresentavam grande consumo de energia e
quebravam com muita frequncia.

A partir de 1958, surgiu a segunda gerao de computadores.


Sua principal inovao em relao aos computadores da primeira
gerao foi a utilizao de transistores em substituio s vlvulas.
Um transistor um dispositivo que controla a passagem da corrente
eltrica atravs de materiais semicondutores inteiramente slidos.

14
Infraestrutura de Hardware

Os transistores so aproximadamente 100 vezes menores que as


vlvulas, o que tem como consequncia direta, a reduo do tamanho
dos computadores. Os computadores da segunda gerao, alm
de menores tambm eram mais rpidos que a gerao anterior e
possuam capacidade para executar milhares de operaes por
segundo, consumindo menos energia que a gerao anterior.

A terceira gerao dos computadores data de 1958 e teve como


principal inovao a utilizao de circuitos integrados. Os transistores
e demais componentes eletrnicos foram miniaturizados, reduzindo
bastante o consumo de energia. Com o passar dos anos, a escala
de integrao foi aumentando e cada vez mais tornava-se possvel a
utilizao de mais componentes em um mesmo chip ou pastilha. Os
mainframes foram os principais computadores desta gerao. Como
exemplo, podemos citar a famlia de produtos IBM 360, conforme
apresentado na Figura 6.

Figura 6

A partir de 1975, iniciou a quarta gerao de computadores, sendo


marcada pelo surgimento do microprocessador. O microprocessador
foi o principal marco desta gerao e o ponto chave na larga
proliferao da informtica. Ele ocasionou uma baixa espetacular
nos preos e uma escala de integrao ainda mais acentuada, onde
milhes de circuitos integrados puderam ser colocados em um nico
chip. A Figura 7 apresenta um computador desta gerao.

Figura 7

15
Infraestrutura de Hardware

Alguns autores consideram o surgimento da quinta gerao


de computadores, iniciando a partir de 1981 com o advento dos
microcomputadores. A partir desta gerao, os computadores
puderam ser utilizados por usurios comuns, no se limitando ao uso
corporativo. A Figura 8 apresenta uma imagem de um PC IBM, muito
utilizado na dcada de 80.

Figura 8 IBM PC

Seguindo a evoluo na quinta gerao, surgiram as mquinas com


processamento paralelo e a arquitetura RISC (Reduced Instruction
Set Architecture). Mas o que significa processamento paralelo?
Para compreender esse conceito, deveremos introduzir dois outros:
multiprogramao e multiprocessamento.

Multiprogramao uma tentativa de manter o processador


sempre ocupado com a execuo de um ou mais programas por
vez. Com a multiprogramao, diversos programas so carregados
para a memria e o processador comuta rapidamente de um para
o outro. Essa tcnica permite que o processador no passe por
perodos de ociosidade, espera de resposta oriunda de programas
em execuo, permitindo otimizaes e melhorias de desempenho de
processamento. O multiprocessamento, por sua vez, caracteriza-se
pelo uso de vrios processadores que atuam em paralelo, cada um
executando as suas tarefas

Para garantir melhor desempenho, ainda possvel que


os processadores atuais utilizem multiprocessamento com
multiprogramao, que a juno dos conceitos, onde mais
de um processador utilizado e cada um deles implementa a
multiprogramao, permitindo efetivamente que programas sejam
executados paralelamente. Os computadores pessoais evoluram com
processadores que implementam a multiprogramao e comportam o
multiprocessamento.

16
Infraestrutura de Hardware

Seguindo a evoluo na quinta gerao, surgiram as mquinas com


processamento paralelo, as mquinas de arquitetura RISC (Reduced
Ateno
Instruction Set Architecture), superescalares e superpipelines.

A quinta gerao tambm marcada pela miniaturizao dos Os detalhes de


tais arquiteturas
computadores e pela computao ubqua, ou seja, computao a sero
apresentados no
toda hora e em todo o lugar, utilizando uma grande diversidade de segundo volume
dispositivos. A disseminao da computao ubqua foi impulsionada deste material
didtico.
pela evoluo das redes de comunicao, permitindo larguras
de banda superiores, comunicao sem fio e acesso atravs de
dispositivos de menores dimenses, como celulares, tablet PC
e Personal Digital Assistant (PDA). O conceito de Computao
Ubqua foi introduzido por Mark Weiser e colegas (Weiser M.; Gold
e Brown, 1999) que afirmavam que o usurio poderia ter acesso ao
seu ambiente computacional a partir de qualquer lugar, em qualquer
momento, de vrias formas, atravs de diferentes dispositivos e Saiba Mais
tecnologias de comunicao. Com a computao ubqua, a relao
entre usurios e dispositivos computacionais muda em relao aos Mark D. Weiser
nasceu em 1952
computadores pessoais, o que era de um para um, passa a ser de um em Chicago.
Estudou Cincia
para muitos (um usurio para vrios dispositivos). da Computao e
Comunicao na
Weiser e colegas (Weiser M.; Gold e Brown, 1999) argumentam Universidade de
Michigan, tendo
que computadores de pequenas dimenses estaro embutidos em recebido seu
objetos do cotidiano do usurio, tais como livros, roupas e objetos Ph.D. em 1979.
Weiser foi
pessoais em geral. A figura 9 apresenta uma srie de dispositivos cientista chefe da
Xerox PARC e
computacionais que esto presentes na quinta gerao. considerado o pai
da computao
ubqua. Para
saber mais sobre
a sua trajetria
de vida consulte
http://www-sul.
stanford.edu/
weiser/

Figura 9 Dispositivos Computacionais

Existem diversas aplicaes atualmente que compem o universo


da computao ubqua. Desde solues para o cenrio residencial,
comercial, hospitalar, dente outros. Um exemplo interessante de
uma soluo proposta para computao ubqua dentro do cenrio
hospitalar o Ubiquitous Health Service (UHS), que representado
na Figura 10. O UHS constitui uma rede de servios de sade, da qual
fazem parte um conjunto de hospitais geograficamente distribudos e
mdicos associados que podem ter acesso aos servios desta rede

17
Infraestrutura de Hardware

de qualquer lugar, usando um conjunto de diferentes dispositivos


e redes de acesso. Esta rede favorece o relacionamento entre os
mdicos associados, sendo, portanto, o mdico o usurio alvo do
cenrio. Os mdicos, por sua vez, so colaboradores de alguns dos
hospitais credenciados e podem acessar os servios disponibilizados
pelos hospitais, podendo faz-lo tambm de sua residncia, local de
lazer, em trnsito ou do seu consultrio.

Alm de servios especficos de cada hospital credenciado,


tambm possvel ao mdico realizar acesso ao Pronturio Eletrnico
de Pacientes, a qualquer hora e de qualquer lugar, usando algum
dispositivo disponvel. Os hospitais, por sua vez, podem oferecer
servios especficos, como por exemplo, servio de reserva de salas,
marcao de consultas no ambulatrio, localizao de mdicos,
etc. Para estes servios sero necessrias algumas validaes de
segurana e algoritmos de autenticao que so gerenciados pelo
prprio hospital que disponibiliza os servios. O cenrio possibilita
ao mdico iniciar uma sesso de acesso ao Pronturio Eletrnico de
Pacientes usando um dispositivo e transferi-la para outro dispositivo
durante a sua execuo.

Figura 10 Ambiente UHS

18
Infraestrutura de Hardware

O cenrio UHS apenas um exemplo de como a computao


ubqua pode ser inserida nas nossas atividades rotineiras. Hoje somos
completamente dependentes de computadores, internet, telefones
celulares. A tendncia que esses dispositivos tenham cada vez mais
recursos de processamento e que possam estar presentes em nossas
atividades do dia a dia.

Conhea Mais

Voc poder pesquisar mais sobre arquitetura e organizao de


computadores em alguns websites. Seguem alguns sites para voc
explorar essa temtica:

Computer Architecture Page: http://www.cs.wisc.edu/arch/www/

MIT Computer Architecture Group: http://groups.csail.mit.edu/cag/

Clube do Hardware: http://www.clubedohardware.com.br/

CPU Info Center: http://bwrc.eecs.berkeley.edu/CIC/

Se possvel, leia tambm:

Arquitetura e Organizao de Computadores do


autor William Stallings e Organizao Estruturada de
Computadores do autor Andrew S. Tanenbaum.

Atividades e Orientaes de Estudo

Dedique, pelo menos, 2 horas de estudo para o Captulo 1. Voc


deve organizar uma metodologia de estudo que envolva a leitura dos
conceitos que sero apresentados neste volume e pesquisas sobre o
tema, usando a Internet e livros de referncia.

Os fruns temticos desta disciplina podem ser utilizados para


troca de informaes sobre o contedo no ambiente virtual, pois a
interao com colegas, tutores e o professor da disciplina ir ajud-lo
a refletir sobre aspectos fundamentais tratados aqui. Os chats tambm
sero muito importantes para a interao em tempo real com o seu
tutor virtual, seu professor e seus colegas.

19
Infraestrutura de Hardware

Tambm importante que voc leia atentamente o guia de estudo


da disciplina, pois nele voc encontrar a diviso de contedo
semanal, ajudando-o a dividir e administrar o seu tempo de estudo
semanal. Procure responder as atividades propostas como atividades
somativas para este captulo, dentro dos prazos estabelecidos pelo
seu professor, pois voc no ser avaliado apenas pelas atividades
presenciais, mas tambm pelas virtuais. Muitos alunos no acessam
o ambiente e isso poder comprometer a nota final. No deixe que
isso acontea com voc!

Vamos Revisar?

Neste captulo, voc estudou as funes do computador e os


seus componentes principais. Foram apresentados os subsistemas
internos ao computador: Central de Processamento ou subsistema de
processamento, Subsistema de Memria, Subsistema de Entrada e
Sada (E/S) e Subsistema de Interconexo.

Aprendemos que a CPU possui o papel de controlar as


operaes do computador e processar dados. O Subsistema de
Memria armazena dados e o Subsistema de Entrada e Sada (E/S)
transfere dados entre o computador e o ambiente externo. Por fim,
o Subsistema de Interconexo, responsabiliza-se pela comunicao
entre a CPU, memria principal e dispositivos de E/S. Nos demais
volumes deste material didtico estudaremos com detalhes cada um
desses subsistemas.

Em seguida, voc pde observar a evoluo histrica dos


computadores, partindo do primeiro computador eletrnico at
a miniaturizao dos computadores e da computao ubqua.
Aprendemos que esse conceito baseia-se na computao a toda hora
e em todo o lugar, utilizando uma grande diversidade de dispositivos.

Nos prximos captulos desse volume iremos aprender um pouco


mais sobre a CPU ou subsistema de processamento iniciando com
um estudo sobre operaes aritmticas e lgicas.

20
Infraestrutura de Hardware

Captulo 2

O que vamos estudar?

Neste captulo, vamos estudar os seguintes temas:

Sistemas de numerao

Bases numricas e converses entre bases

Operaes aritmticas em diferentes sistemas de numerao

Metas

Aps o estudo deste captulo, esperamos que voc consiga:

Conhecer os principais sistemas de numerao;

Realizar operaes de converses entre bases distintas;

Aprender as operaes aritmticas bsicas em sistemas de


numerao binrio, octal e hexadecimal.

21
Infraestrutura de Hardware

Captulo 2 Conhecendo Melhor


as Operaes Aritmticas

Vamos conversar sobre o assunto?

2.1 Sistemas de Numerao

Desde muito cedo em sua histria, a humanidade se deparou


com a necessidade de contar, enumerar e ordenar as coisas, os
animais e at mesmo os outros seres humanos que o cercavam. E
no apenas contar, enumerar e ordenar, mas tambm registrar estas
informaes de forma clara e precisa. O sucesso tanto no comrcio
quanto nas atividades produtivas exigia que se pudesse tomar nota
das quantidades e valores envolvidos em suas transaes.

No incio, enquanto os volumes eram pequenos, podia-se adotar um


registro simples e direto destas informaes, normalmente utilizando
coisas do cotidiano para representar as quantidades envolvidas. Veja
alguns exemplos destes registros na Figura 1 a seguir.

Naquela poca, era comum ver pastores de ovelhas carregando


consigo uma pequena bolsa de couro com tantas pedrinhas quantas
fossem as ovelhas aos seus cuidados. No existia ainda a associao
de um smbolo fontico ou grfico para as quantidades representadas,
mas apenas uma associao de um para um entre as ovelhas e as
pedras.

Figura 1 Exemplos de registros de contagens feitos pelas antigas civilizaes

22
Infraestrutura de Hardware

Este recurso, por mais simples que possa parecer, permitia a estes
homens controlar seus rebanhos, descobrindo, ao fim de um dia, se
alguma ovelha havia se desgarrado, ou ainda se uma operao de
troca de ovelhas por outras mercadorias seria ou no vantajosa para
ele.

Com o passar do tempo, entretanto, o avano natural nos volumes


dos negcios e, por conseguinte das quantidades de animais e objetos
envolvidos, obrigou que se elaborasse um sistema mais eficiente para
registrar e contabilizar estas transaes. J no era mais possvel
associar convenientemente uma pedra em uma sacola ou um n em
uma corda para cada um dos elementos envolvidos nas transaes. Saiba Mais

Os egpcios foram os primeiros que se tem notcia a adotar um Conhea um


pouco mais
sistema grfico estruturado de tal forma a permitir o registro simples e sobre a histria
claro de grandes quantidades de elementos atravs de um pequeno dos nmeros
visitando estes
nmero de smbolos. sites:

http://br.geocities.
com/superbetorpf/
evolnum.htm

http://pessoal.
sercomtel.com.
br/matematica/
fundam/numeros/
numeros.htm

Figura 2- Smbolos adotados no sistema de numerao egpcio

Em sua representao, conforme podemos ver na Figura 2, os


egpcios utilizavam dez smbolos distinto para representar valores
entre 1 e 9 e, a partir da, mais seis smbolos para representar valores
da forma 10n, com n1.

No sistema egpcio, de igual modo ao que fazemos hoje em dia, o


valor total representado era calculado a partir do somatrio dos valores
atribudos aos smbolos utilizados. E isto, por si s j simplificava
em muito a forma de registrar e manipular com as informaes
numricas.

23
Infraestrutura de Hardware

Foi no norte da ndia, por volta do sculo V da era crist, que


provavelmente surgiu o sistema de representao que utilizamos
atualmente.

Por ter sido largamente empregado pelos rabes, os quais o


introduziram na Europa, este ficou conhecido como sistema de
numerao Hindo-Arbico. A Figura 3 a seguir nos traz um exemplo
dos smbolos grficos utilizados no sistema Hindo-Arbico e a sua
evoluo at os nossos dias.

Figura 3 Evoluo da grafia dos smbolos do sistema Hindo-Arbico at os nossos dias

Diferente dos demais sistemas numricos existentes poca, o


sistema Hindo-Arbico j lanava mo de um recurso matemtico
conhecido hoje como base numrica, exatamente nos mesmos
moldes que adotamos hoje em dia.

No sistema Hindo-Arbico, todo e qualquer valor numrico


podia ser representado utilizando apenas 10 smbolos elementares,
utilizando um outro recurso matemtico que depois ficou conhecido
como notao posicional.

Voc sabe o que uma base numrica? E a notao posicional,


voc sabe j ouviu falar dela? Sabe como ela funciona? Pois bem,
isto o que vamos descobrir na continuao deste captulo.

2.2 Base Numrica

Denominamos como base numrica ao conjunto de smbolos


utilizados para representar valores numricos.

24
Infraestrutura de Hardware

De um modo geral podemos dizer que as bases numricas mais


importantes so:

Base decimal, com dez smbolos {0, 1, 2, 3, 4, 5, 6, 7, 8, 9},

Base binria, com dois smbolos {0, 1},

Base octal, com oito smbolos {0, 1, 2, 3, 4, 5, 6, 7},

Base hexadecimal, com dezesseis smbolos {0, 1, 2, 3, 4, 5, 6,


7, 8, 9, A, B, C, D, E, F}.

Destas, a mais importante, sem dvida nenhuma, a base decimal.


Sua importncia tamanha que desde pequenos aprendemos a
associar os seus elementos com os dedos de nossas prprias mos.
Experimente perguntar a uma criana na pr escola qual a sua idade,
e de pronto ela lhe estender as mozinhas mostrando nos dedos
quantos aninhos j tem.

Figura 4 Associao dos nmeros com os dedos da mo

Mas, o que define uma base numrica? Ser que ns mesmos


podemos definir a nossa prpria base numrica? Que regras devemos
seguir para definir uma base numrica?

Para que um conjunto de smbolos possa ser considerado uma


base numrica, ele deve ser formado de modo a atender algumas
regras bsicas de construo:

Cada elemento do conjunto deve estar associado a um valor


numrico, numa relao de um para um. Ou seja, cada smbolo
deve estar associado a um nico valor numrico e vice-versa.

O conjunto deve possuir no mnimo dois smbolos, um para


representar o zero e outro para representar o um.

No devem existir lacunas na representao, ou seja, se um


conjunto possuir representaes para os valores n e n+2, ento
este mesmo conjunto tambm deve possuir uma representao
para o valor n+1.

25
Infraestrutura de Hardware

Respeitadas estas regras, podem-se construir bases numricas


com tantos smbolos quantos se faam necessrias. Mas, pensemos
Ateno um pouco, porque se dar ao trabalho de definir outras bases
numricas se a base decimal, aparentemente, j resolve todos os
Voc pode estar
se perguntando nossos problemas?
por que nos
referimos A verdade que as bases numricas so definidas para simplificar
aos nmeros
presentes o dia a dia de quem s utiliza. Mesmo sem perceber, constantemente
nas bases estamos lanando mo de outras bases numricas. Por exemplo,
numricas como
smbolos e no imagine as horas do dia, voc j percebeu que normalmente ns
como nmeros
simplesmente. contamos as horas utilizando uma base com apenas 12 elementos?
Como voc deve Pois , mesmo sabendo que o dia tem 24 horas, parece-nos bem
ter percebido,
a base hexa melhor pensar em termos de duas sries de 12 horas, uma comeando
decimal utiliza
tanto nmeros a meia noite e indo at o meio dia, e outra comeando ao meio dia e
como letras indo at a meia noite.
para representar
os valores
numricos, Como voc ir perceber um pouco mais frente, foi o
desta forma,
para no causar
desenvolvimento do estudo das bases numricas que permitiu o
confuso aos desenvolvimento dos computadores digitais como ns os conhecemos
nos referirmos s
letras A,B,C,D,E hoje em dia.
e F como sendo
nmeros, nos Agora, pense um pouco, que outras bases numricas voc pode
referiremos
aos nmeros e identificar em suas atividades cotidianas? Que tal uma base com 60
letras utilizados,
indistintamente,
elementos, s para comear?
como sendo
apenas smbolos. Mas, como ser que funciona uma base numrica? Ser que
existe alguma relao entre as diversas bases numricas existentes?
Isto e muito mais o que vamos descobrir a partir de agora com a
continuao do nosso estudo.

2.3 Bases Numricas e a Notao Posicional

Para entender como funciona uma base numrica e a notao


posicional, vamos tomar como exemplo a base decimal. Uma vez que
temos dez smbolos nesta base, podemos facilmente utiliz-los para
representar conjuntos com at nove elementos. Observe a Figura 5 a
seguir.

26
Infraestrutura de Hardware

Figura 5 Associao entre os elementos da base decimal e valores de contagem

Observe, entretanto, que um problema surge quando precisamos


registrar valores para os quais no temos um smbolo associado na
base, como, por exemplo, o que vemos na Figura 6 a seguir.

Figura 6 Como registraremos esta quantia com a base decimal?

Como faremos para registrar os doze elementos desta figura


utilizando estritamente os smbolos contidos na base decimal?

Ah, voc pode estar pensando - Esta fcil, basta utilizar os


smbolos 1 e 2, exatamente nesta sequncia e pronto, teremos a
representao da quantidade de elementos constante nesta figura.

27
Infraestrutura de Hardware

Se voc pensou assim, claro que a sua resposta est correta.

Entretanto, pense um pouco mais.

Se olharmos para a base decimal, veremos que os smbolos que


estamos utilizando representam literalmente uma unidade seguido
de duas unidades. Isto em nada se parece com as doze unidades
que estamos querendo representar. De onde ento tiramos a idia
que se utilizarmos estes dois smbolos em conjunto, exatamente da
forma como fizemos, estaremos criando uma representao para a
quantidade de elementos constantes naquela figura?

A resposta ao mesmo tempo simples e complexa. Mesmo sem


Ateno perceber, para expressar valores que no se encontram representados
diretamente na base, lanamos mo de um recurso matemtico
Notao inventado pelos indianos denominado Notao Posicional.
Posicional nada
mais que
um recurso de o uso da notao posicional que nos permite dizer que o 1 do
representao nmero 12 vale uma dezena e no uma unidade, o qual somado s
que nos permite
alterar o valor duas unidades representadas pelo 2 nos d como resultado os doze
atribudo aos
smbolos de uma elementos que estvamos querendo representar.
determinada
base numrica, A ideia por trs da notao posicional extremamente simples e
de forma a poder
utiliz-los para pode ser facilmente ilustrada pela observao do que ocorre quando
representar
valores que
contamos as horas em um relgio com ponteiros.
no existam na
referida base. Observe que um dia tem vinte e quatro horas e um relgio com
ponteiros possui apenas doze marcaes, indo do 1 ao 12. Desta
forma, aps contarmos as 12 primeiras horas do dia, acabamos
retornando ao nosso ponto de partida, em um processo conhecido
como estouro da base. Nesta situao, se continuarmos contando,
simplesmente perderemos a referncia de que horas realmente
Saiba Mais
estamos registrando.
A expresso
Estouro da
Base indica que
estamos tentado
representar um Curiosidade...
valor maior que
o maior valor
representvel Voc conhece algum relgio com ponteiros com alguma
diretamente pela indicao para 13 horas?
base numrica
adotada.
No caso do relgio, isto se resolve associando informao
indicada nos ponteiros com uma informao adicional que indica
se esta a primeira ou a segunda volta que este executa no dia.
Normalmente, quando os ponteiros retornam ao ponto de partida ns,

28
Infraestrutura de Hardware

ou adicionamos 12 ao valor indicado, como podemos ver na Figura 7


a seguir, ou simplesmente adicionamos uma informao de que so
tantas horas da manh, da tarde ou da noite.

Figura 7 Que horas so neste relgio? 10 horas e dez minutos ou 22 horas e 10 minutos?

Ainda que extremamente simples, esta observao adicional


indicando quantas voltas o ponteiro do relgio j efetuou o elemento
chave para a compreenso do como funciona uma base numrica e o
mecanismo da notao posicional.

Vamos agora tentar estender esta ideia para a base decimal.

2.4 Base Decimal

Considere a Figura 8 a seguir.

Nela temos uma representao da base decimal imitando as horas


de um relgio.

Figura 8 Representao esquemtica da base decimal

Tentemos agora utilizar este nosso disco para contar de zero at


cem.

Comecemos no zero e, a cada nmero que contarmos avancemos


o nosso ponteiro de uma posio. Perceba que podemos contar de
zero a nove sem problemas, mas ao chegarmos ao dez, semelhana
do que ocorre com os ponteiros de um relgio ao indicar o meio dia

29
Infraestrutura de Hardware

ou a meia noite, ocorre um estouro da base, e retornamos ao nosso


ponto inicial, perdendo assim a nossa referncia de contagem. Se
continuarmos contando, no haver nenhuma forma de indicarmos
claramente a que nmero estamos nos referindo simplesmente pelo
que estamos apontando em nosso disco.

Desta forma, a fim de evitar esta confuso, incluiremos um segundo


disco numerado, semelhante ao primeiro, no qual contaremos quantas
voltas o primeiro disco j efetuou.

Uma vez que este disco adicional contar quantas vezes o primeiro
disco contou at dez, chamar-lhe-emos de disco das dezenas. Ao
primeiro disco chamaremos de disco das unidades. Por conveno, o
disco das unidades ficar a direita do disco das dezenas.

O nosso novo esquema ficar conforme indicado na Figura 9 a


seguir.

Figura 9 Novo esquema de representao para contagem de dezenas e unidades,


indicando a contagem de dez elementos

Podemos assim continuar nossa contagem, de tal forma que a


Fique cada volta completa do disco das unidades, avanaremos o disco das
por Dentro
dezenas de uma posio. Ou seja, sempre que ocorre um estouro da
O termo vai base no disco das unidades, dizemos que ocorre um vai um para o
um indica que disco das dezenas.
precisamos somar
um na contagem
do segundo disco. Este esquema funciona muito bem at chegarmos contagem
noventa e nove. Neste ponto percebemos que o disco de dezenas
tambm est preste a completar uma volta completa, de tal forma que
corremos o risco novamente de perder nossa referncia.

Por sorte, podemos adotar o mesmo artifcio j utilizado


anteriormente com o disco das unidades, e incluir um novo disco para
contar quantas voltas o disco das dezenas completou. A este novo
disco chamaremos de disco das centenas. Nosso esquema ficar

30
Infraestrutura de Hardware

como representado na Figura 10 a seguir.

Figura 10 Esquema com discos para as centenas, dezenas e unidades, indicando a


contagem de cem elementos

Perceba que este artifcio de incluir um novo disco para


contar quantas voltas o disco anterior completou pode continuar
indefinidamente, de forma que podemos incluir tantos discos quantos
sejam necessrios, medida que formos precisando.

A contagem total representado pelos nossos discos poder ser


facilmente verificada somando as indicaes de cada um dos ponteiros
multiplicadas pelos nmeros de voltas que cada disco representa.

Uma vez compreendida esta estratgia, podemos deixar de lado o


esquema com discos, substituindo cada um destes diretamente pelo
seu valor, conforme estamos acostumados a fazer, com um algarismo
para as unidades, um para as dezenas, um para as centenas e assim
por diante. A Figura 11 a seguir nos d um exemplo do que estamos
dizendo.

Este processo todo que acabamos de descrever a base da


notao posicional. Ou seja, ele que nos permite utilizar uma
base numrica para representar todo e qualquer nmero inteiro que
possamos imaginar.

Como pudemos ver, com exceo do primeiro dgito, o que conta


as unidades, todos os demais contam quantas vezes o seu antecessor
j contou at o limite da base adotada, ou seja, quantas vezes ocorreu
um estouro da base no dgito que o antecede. No caso especfico da
base decimal, isto indica quantas vezes o dgito a sua direita contou
at dez.

Desta forma, como podemos ver pela Figura 11, o valor total da
contagem obtido somando-se o valor registrado em cada um dos
dgitos, multiplicado pela contagem que a sua posio representa.
Muito fcil no mesmo?

31
Infraestrutura de Hardware

Figura 11 Exemplo de relao entre os valores indicados nos disco e o valor que
representam

Nos livros em geral, voc encontrar este procedimento


normalmente expresso na forma de um somatrio ponderado de
termos, no caso, dos dgitos utilizados, a semelhana do que vemos
na Figura 12 a seguir.

Figura 12 Expresso matemtica equivalente notao posicional

Esta expresso indica que o valor representado por uma sequncia


numrica dado pelo somatrio dos smbolos que a compem, aqui
indicados por di, ponderados pela posio que ocupam na sequncia
dada, aqui indicado pelo ndice i direita do d. Em resumo, nesta
expresso, a base numrica adotada, d o valor atribudo ao
smbolo e i a posio que o smbolo ocupa na sequncia.

Um detalhe importante a ser observado, e que pode no ficar claro


pela expresso, que os smbolos devem sempre ser ponderados
da direita para a esquerda. Ou seja, o primeiro dgito, ou o dgito
mais a esquerda, ser ponderado pela base elevada a zero, o que
significa que o seu valor ser multiplicado por 1. O segundo dgito
ser ponderado pela base elevada a um, o que significa para a base
decimal que este ser multiplicado por dez, e assim por diante.

32
Infraestrutura de Hardware

Curiosidade...

Voc sabia que no inicio da sua utilizao os nmeros em notao


posicional eram escritos da esquerda para a direita, ao contrrio do
que escrevemos hoje? Os Hindus, inventores da notao posicional,
escreviam os nmeros da mesma forma como ns escrevemos as
letras em um texto, da esquerda para a direita. Por que ser que
hoje ns escrevemos os nmeros ao contrrio? Descubra mais
nestes links:

http://pessoal.sercomtel.com.br/matematica/fundam/numeros/numeros.htm
http://professorjairojr.blogspot.com/

Para fixar o que aprendemos, tentemos analisar como a notao


posicional foi utilizada na formao dos nmeros a seguir:

a)

b)

c)

d)

Voc consegue perceber que o que temos aqui nada mais que a
aplicao direta da expresso matemtica apresentada na Figura 12?
muito importante que isto fique bem claro para voc. Caso esteja
sentindo alguma dificuldade, pesa ajuda ao seu monitor.

Esta anlise, por simples que parea, essencial para que


compreendamos o funcionamento da notao posicional e ser de
suma importncia para entendermos tambm como funcionam as
outras bases numricas.

Agora que j sabemos como expressar os nmeros inteiros


utilizando a notao posicional, podemos buscar entender como
podemos utilizar esta mesma notao posicional para representar
tambm os nmeros fracionrios.

2.5 Nmeros Fracionrios

Observe os exemplos a seguir:

a)

33
Infraestrutura de Hardware

b)

c)

d)

e)

Voc conseguiu notar algo de familiar com o que acabamos de


estudar?

Ao analisarmos estes exemplos, a primeira coisa que percebemos


a incluso da vrgula como elemento separador entre a parte inteira
e a parte fracionria dos nmeros.

Outro ponto muito importante que os dgitos colocados direita


Ateno da virgula, que representam a parte fracionria do nmero, so
ponderados pela base com o expoente negativo, o que significa
Um nmero
elevado a que em vez se estarem sendo multiplicados esto sendo divididos por
um expoente
negativo igual
ela.
ao inverso do
prprio nmero Observe novamente os exemplos d e e. Veja que da mesma
elevado ao
expoente positivo. forma como ocorre com os nmeros inteiros, o valor expresso por um
nmero fracionrio na notao posicional tambm obtido como o
somatrio de todos os termos que o compem.

Em resumo, para representar um nmero fracionrio na notao


posicional, basta incluir a vrgula para separar a parte inteira da parte
fracionria, ponderando os dgitos que ficam esquerda desta pela
base elevada a um expoente positivo e os que ficam direita com a
base elevada ao expoente negativo.

Para finalizar, podemos agora reescrever a expresso apresentada


na Figura 12, de forma que esta contemple tambm os nmeros
fracionrios. A Figura 13 a seguir mostra como ficar nossa nova
expresso.

Figura 13 Expresso Matemtica para a Notao Posicional incluindo os nmeros


fracionrios

Esta nova expresso difere da anterior pela incluso do k o qual


indica quantos dgitos existem direita da vrgula, ou seja, quantos

34
Infraestrutura de Hardware

dgitos foram reservados para a representao da parte fracionria do


nmero.

Que tal agora exercitarmos um pouco tudo o que aprendemos


fazendo uma analise aprofundada dos nmeros a seguir. Utilize a
expresso apresentada na Figura 13. Repita o que foi feito nos trs
exerccios seguintes.

a) 12,41

n = 4 (Quantidade de dgitos do nmero)

k = 2 (Quantidade de dgitos da parte decimal do nmero)

Valor Representado =

b) 73,5309

n=6

k=4

Valor Representado =

c) 1025

n=4

k=0

Valor Representado =

d) 832,0

n=

k=

Valor Representado =

e) 0,322

n=

k=

Valor Representado =

f) 10,005

n=

k=

35
Infraestrutura de Hardware

Agora que j sabemos tudo o que precisamos sobre o que uma


base numrica e como funciona a notao posicional, podemos nos
aventurar a trabalhar com as outras bases numricas anteriormente
citadas.

A primeira base que estudaremos ser a base binria.

2.6 Base Binria

Como vimos no incio deste captulo, a base binria formada por


Ateno um conjunto com apenas dois smbolos: o zero e o um, {0, 1}. Mesmo
assim, acredite, lanando mo da notao posicional podemos
Como veremos
mais a frente,
representar com a base binria praticamente todos os nmeros que
nem todos voc possa imaginar.
os nmeros
fracionrios
podem ser
Por ser a base numrica adotada nas Unidades Lgicas e
representados na Aritmticas (ULA) de todos os processadores, esta base numrica
base binria.
extremamente importante.

Compreender como representar e operar com nmeros na base


binria essencial a compreenso de como um computador funciona.
Por isto, vamos tentar ser bem minuciosos em nosso estudo.

Devido a sua importncia, alguns termos foram definidos para


melhor retratar alguns elementos presentes nos nmeros expressos
na base binria, so eles:

Bit Nome dado aos dgitos de um nmero expresso na base


binria. Desta forma, comum utilizar-se expresses como 8
bits, 16 bits e 32 bits para se referir a quantidade de dgitos de
um nmero expresso na base binria.

MSB Sigla inglesa derivada da expresso Most Significant Bit


que significa literalmente Bit Mais Significativo. Este o nome
dado ao bit com maior peso associado, ou seja, ao bit localizado
mais a esquerda do nmero.

LSB Sigla inglesa derivada da expresso Least Significant


Bit que significa literalmente Bit Menos Significativo. Este o
nome dado ao bit com menor peso associado, ou seja, ao bit
localizado mais a direita do nmero.

Palavra Nome dado ao conjunto de bits utilizados para


representar um nmero. Esta expresso normalmente
utilizada para indicar a quantidade de bits que um processador

36
Infraestrutura de Hardware

utiliza internamente para representar suas informaes, em


expresses do tipo: Os processadores Core Duo utilizam
palavras de 32 bits. Ateno

A Figura 14 a seguir demonstra como estes elementos esto A Unidade Lgica


e aritmtica
presentes na representao dos nmeros representados na base uma das partes
binria. mais importantes
da Unidade
Central de
Processamento
dos
computadores.
Ela responsvel
por todas as
operaes lgicas
e aritmticas dos
Figura 14 Elementos presentes nos nmeros expressos na base binria programas que
so executados.

Agora que j conhecemos alguns detalhes dos nmeros expressos


na base binria, podemos comear o nosso estudo de como esta
base realmente funciona. Para comear, vamos fazer uma anlise
semelhante a que fizemos com a base decimal.

Primeiramente, tomemos um disco com a representao da base


binria.

Figura 15 Disco com a representao da base binria

Agora, utilizando este nosso disco binrio, vamos tentar contar at


dez.

Acompanhe a contagem na Figura 16 a seguir.

Comeamos contando: zero, um, mas quando vamos tentar contar


o dois percebemos que j estamos chegando ao zero novamente, ou
seja, se continuarmos contando estouraremos a base e perderemos a
nossa referncia.

Figura 16 Configurao do disco binrio ao contarmos do zero ao dois

37
Infraestrutura de Hardware

O que fazer ento? Vamos adotar a mesma estratgia que j


utilizamos na base decimal. Vamos incluir um segundo disco para
contar quantas voltas o primeiro disco j deu. Veja como ficar nossa
configurao na Figura 17 a seguir.

Figura 17 Posio dos discos binrios indicando que j contamos at dois

Como no temos um nome especial para dar aos discos, como


tnhamos na base decimal, vamos apenas identific-los pelo valor
que cada um representa. Como o segundo disco conta quantas vezes
o primeiro disco deu uma volta completa, o que ocorre a cada duas
contagens, vamos identific-lo pelo 21.

Podemos, ento, continuar a nossa contagem do ponto aonde


paramos: Dois, trs, mas quando chegamos ao quatro, vemos que o
primeiro disco completa mais uma volta, o que fora o segundo disco
a avanar mais um passo, levando-o a completar uma volta tambm,
voltando ao zero novamente, como podemos ver pela Figura 18 a
seguir.

Figura 18 Configurao dos discos binrios ao contarmos dois, tres e quatro

Como sabemos, podemos simplesmente incluir mais um disco


e continuar nossa contagem, conforme fizemos a pouco quando
chegamos contagem do dois. Nossa nova configurao ficar

38
Infraestrutura de Hardware

conforme podemos ver na Figura 19 a seguir.

Figura 19 Posio dos discos binrios indicando que j contamos at quatro

Com mais um disco binrio, podemos continuar contando.


Acompanhe a nossa contagem na Figura 20 a seguir.

Devemos lembrar que sempre que o primeiro disco completa uma


volta o ponteiro do segundo disco avana uma posio. E sempre
que o segundo disco completa uma volta, o ponteiro do terceiro disco
tambm avana uma posio.

Continuando a nossa contagem de onde paramos, temos: quatro,


cinco, seis, sete, e quando chegamos a oito o ponteiro do terceiro
disco, o que registra 22, avana uma posio e tambm completa uma
volta, retornando ao zero.

39
Infraestrutura de Hardware

Figura 20 Configuraes dos discos binrios aos contarmos de cinco at oito

Como nosso objetivo contar at dez, vamos incluir mais um disco


e continuar a nossa contagem.

Figura 21 Configurao dos discos binrios ao contarmos oito

Agora sim, com quatro discos binrios podemos concluir nossa


contagem indo do oito at o dez, conforme podemos ver na Figura 22
a seguir.

40
Infraestrutura de Hardware

Figura 22 Configurao dos discos binrios na contagem de oito a dez

Da mesma forma que fizemos com a base decimal, uma vez que j
entendemos como funciona a base binria, podemos agora deixar de
lado os discos binrios e passar a trabalhar diretamente com smbolos
apontados em cada um dos discos. Desta forma, a nossa contagem
de zero a dez em binrio ficar da seguinte forma:

0 = 00002 4 = 01002 8 = 10002

1 = 00012 5 = 01012 9 = 10012

2 = 00102 6 = 01102 10 = 10102

3 = 00112 7 = 01112

Figura 23 Representao da contagem de zero a dez em binrio

Observe que podemos aplicar a notao posicional a cada uma


destas representaes, conforme vimos na Figura 12, exatamente
como fizemos com a base decimal, apenas substituindo a base 10
pela base 2 ( = 2). A Figura 24 a seguir demonstra como ficaria a
aplicao da notao posicional a cada um dos valores encontrados:

41
Infraestrutura de Hardware

010 = 00002 = 0 23 + 0 22 + 0 21 + 0 20 = 0

110 = 00012 = 0 23 + 0 22 + 0 21 + 1 20 = 1

210 = 00102 = 0 23 + 0 22 + 1 21 + 0 20 = 2

310 = 00112 = 0 23 + 0 22 + 1 21 + 1 20 = 2 + 1

410 = 01002 = 0 23 + 1 22 + 0 21 + 0 20 = 4

510 = 01012 = 0 23 + 1 22 + 0 21 + 1 20 = 4 + 1

610 = 01102 = 0 23 + 1 22 + 1 21 + 0 20 = 4 + 2

710 = 01112 = 0 23 + 1 22 + 1 21 + 1 20 = 4 + 2 + 1

810 = 10002 = 1 23 + 0 22 + 0 21 + 0 20 = 8

910 = 10012 = 1 23 + 0 22 + 0 21 + 1 20 = 8 + 1

1010 = 10102 = 1 23 + 0 22 + 1 21 + 0 20 = 8 + 2

Figura 24 Aplicao da Notao Posicional para verificar os valores gerados


na contagem de zero a dez em binrio

Observe que uma vez que a base binria possui apenas dois
valores, o zero e o um, nosso somatrio se reduziu a computar apenas
as posies aonde encontramos o um, uma vez que zero vezes
qualquer outro nmero igual a zero. Se pensarmos bem isto simplifica
muito as coisas, uma vez que no nosso somatrio aparecero apenas
termos na forma 2n, tais como 20, 21, 22, 23 e assim por diante.

De fato, o processo de converso de um nmero qualquer da base


decimal para a base binria consiste em encontrar esta sequncia
de termos da forma 2n que quando somados resultem no valor que
estamos querendo converter.

Observe os resultados obtidos nos exemplos apresentados na


Figura 24. Para cada nmero expresso na base decimal, encontramos
uma sequncia equivalente de nmeros da forma 2n. Baseados nesta
observao, vamos agora aprender duas tcnicas de converso de
nmeros da base decimal para a base binria. Nas duas abordagens
nosso objetivo o mesmo, ou seja, encontrar este conjunto de termos
da forma 2n que quando somados resulte no valor que estamos
querendo converter.

42
Infraestrutura de Hardware

2.7 Tcnica de Converso por Divises


Sucessivas

Esta tcnica parte do princpio que podemos expressar qualquer


nmero em funo do resultado obtido da sua diviso inteira por outro
nmero qualquer mais o resto encontrado. Neste caso, estaremos
sempre dividindo pelo dois, uma vez que queremos expressar o
nmero como um somatrio de termos da forma 2n, ou seja, na base
binria. Veja os exemplos a seguir:

Veja que com esta tcnica no precisamos de muito esforo para


converter os nmeros 3, 5 e 9 da base decimal para a base binria.
Bastou uma nica diviso para encontrarmos o que queramos. Muito
simples no mesmo?

Mas nem sempre to simples assim. Veja o exemplo a seguir:

Observe que o resultado obtido no pode ser expresso diretamente


em funo da base 2, uma vez que o 3 nem da base e nem
potencia desta.

Quando isto acontece, precisamos reaplicar o processo no termo


que no pode ser expresso, neste caso no 3, de forma a poder
express-lo diretamente em funo da base desejada.

43
Infraestrutura de Hardware

Por sorte, como ns acabamos de decompor o 3 em funo da


base 2, no exemplo a, , podemos simplesmente substituir o 3 do nosso
resultado por 2+1. Desta forma, o nosso exemplo ficaria:

Agora, para concluir nosso processo, precisamos apenas eliminar


todas as multiplicaes presentes no resultado, uma vez que, na
notao posicional os nmeros devem ser expressos exclusivamente
como um somatrio de termos. Faremos isto aplicando a propriedade
distributiva da multiplicao em todas as multiplicaes presentes.
Vejamos a seguir como proceder:

Observe que na expresso final ns inclumos um zero como


primeiro dgito. Isto foi feito porque precisamos preencher todos os
dgitos em nossa representao, exatamente como fazemos na base
decimal. Este procedimento, como podemos constatar, no altera o
resultado obtido.

Desta forma, ao fim deste processo conclumos que o 6 pode


ser expresso na base binria atravs da sequncia 1102, ou seja
122 + 121 + 020.

Um pouco mais trabalhoso, no mesmo?

Ainda bem que existe uma forma bem mais prtica e rpida de
efetuarmos esta converso, sem ter que fazer todos estas contas, de
tal modo a obter o mesmo resultado com muito menos esforo.

Com este novo mtodo, precisaremos apenas ir dividindo


sucessivamente o nmero a ser convertido por dois, anotando sempre
o resto obtido na diviso, at que o quociente obtido seja igual a 1.
Terminado o processo, para encontrar a representao do nmero na
base binria precisamos apenas escrever do ltimo quociente obtido,
seguido dos restos encontrados nas etapas de converso na ordem
inversa em que foram obtidos. Veja nos exemplos a seguir como esta
tcnica rpida e prtica:

44
Infraestrutura de Hardware

Aplique agora esta tcnica para verificar como ficariam os nmeros


a seguir quando expressos na base binria. Depois, aproveite para
verificar se os valores encontrados em binrio esto corretos aplicando
a notao posicional a cada um deles, faa como demonstramos na
Figura 24.

a) 25 =

b) 83 =

c) 142 =

d) 65 =

e) 17 =

f) 39 =

Bem prtico, no mesmo?

Para finalizar, vamos ver uma segunda tcnica de converso que


podemos utilizar para converter nmeros pequenos, menores que
128, que podemos utilizar tanto para converter da base decimal para
a base binria como da base binria para a base decimal. A esta
tcnica chamaremos de converso direta.

45
Infraestrutura de Hardware

2.8 Tcnica de Converso Direta

A ideia por trs da converso direta decorar os pesos a serem


atribudos a cada um dos oito primeiros dgitos dos nmeros expressos
na base binria. Por difcil que possa parecer, esta tarefa at bem
simples, uma vez que comeando do bit menos significativo, o LSB,
o qual ponderado com 20, a cada dgito que andarmos esquerda
simplesmente multiplicamos o valor do ultimo dgito por dois. A Figura
25 a seguir nos traz os valores a serem utilizados.

Figura 25 Pesos a serem atribudos aos primeiros 8 dgitos de um nmero


escrito na base decimal

Desta forma, para convertermos um nmero de binrio para


decimal, basta observar pela figura em quanto devemos ponderar
cada dgito do nmero dado, somado os valores obtidos, exatamente
como faramos com um nmero expresso na base decimal.

Com um pouco de prtica, ao longo do tempo, mesmo sem


perceber acabamos decorando os pesos a serem atribudos a cada
um dos dgitos, de tal forma que ao ver um nmero, instintivamente,
ponderaremos o primeiro dgito por um, o segundo por dois, o terceiro
por quatro e assim por diante.

Desta forma, a tarefa de converter um nmero da base binria para


a base decimal ser quase to simples como trabalhar diretamente
com nmeros da base decimal.

Que tal fazermos um teste? Utilizando os valores indicados na


Figura 25, tente converter os nmeros a seguir da base binria para a
base decimal. Veja na letra a um exemplo de como proceder.

a) 101010102 = 2 + 8 + 32 + 128 = 170

b) 010101012

c) 100100112

d) 111100112

46
Infraestrutura de Hardware

e) 110001112

Muito fcil, no mesmo?

Vejamos agora como podemos utilizar esta mesma tcnica para


converter um nmero da base decimal para a base binria.

Partindo do princpio que todo e qualquer valor deve ser expresso na


forma de um somatrio de termos, ou seja, na forma de um somatrio
dos valores apresentados na Figura 25, podemos simplesmente fazer a
operao inversa, e passarmos a efetuar subtraes sucessivas entre
o nmero a ser convertido e os valores apresentados, assinalando os
termos que estamos utilizando.

Os nicos cuidados que devemos tomar sempre comear nossas


subtraes pelo maior nmero que for possvel subtrair, de forma a
obter o menor resto possvel, e ir assinalando os nmeros que forem
sendo utilizados.

Ao fim do processo, quando obtivermos o resto zero em nossas


subtraes, basta simplesmente formar a nossa representao em
binrio substituindo os nmeros que foram utilizados por 1 e os que
no foram utilizados por 0.

Tomemos como exemplo o nmero 26, vamos tentar convert-lo


para a base binria utilizando a tcnica da converso direta.

Figura 26 Exemplo de converso para a base binria utilizando a converso direta

Agora tente voc mesmo, converta os nmeros a seguir para a


base binria utilizando a converso direta.

a) 35

b) 24

47
Infraestrutura de Hardware

c) 72

d) 47

Muito fcil, no mesmo?

Para finalizar esta primeira parte do nosso estudo, vamos ver como
podemos converter os nmeros fracionrios da base decimal para a
base binria.

2.9 Nmeros Fracionrios na Base Binria

A representao dos nmeros fracionrios na base binria se d


exatamente da mesma forma como aprendemos na base decimal.

Para comear, vamos relembrar como ponderamos os dgitos


utilizados para representar a parte fracionria de um numero na base
decimal. Por exemplo, qual a diferena dos pesos atribudos aos
dgitos de 10,0 e 0,1? Observe a Figura 27 a seguir.

Figura 27 Exemplo de pesos atribudos aos dgitos de um nmero fracionrio

Veja que, no primeiro caso, o 1 antes da vrgula foi ponderado com


101, ou seja, por dez mesmo. J no segundo caso, o 1 aps a vrgula

foi ponderado com 10-1, ou seja, por . Nos dois casos, o nmero

1 estava uma posio distante da posio das unidades, que a


primeira posio a esquerda da vrgula. Ambos foram ponderados
de acordo com a sua posio, s que no primeiro nmero, como o 1
estava esquerda da vrgula, este foi ponderado positivamente e o
que estava a direita negativamente.

Desta forma, dizemos que os dgitos reservados representao


da parte fracionria, os quais so colocados direita da vrgula,
so ponderados negativamente, enquanto que os reservados
parte inteira, os que ficam esquerda da vrgula so ponderados
positivamente.

48
Infraestrutura de Hardware

Esta tambm a estratgia adotada para a representao dos


nmeros fracionrios na base binria. Da mesma forma que na base
decimal, dividem-se os dgitos por uma vrgula, ficando os da esquerda
reservados para a representao da parte inteira e os da direita para
a parte fracionria.

Vejamos alguns exemplos:

Para efetuarmos a converso de um nmero fracionrio da base


decimal para a base binria, podemos ou utilizar o processo de
converso direta, conforme acabamos de ver, apenas incluindo os
valores a serem atribudos aos dgitos direita da vrgula, ou podemos
utilizar um algoritmo muito semelhante ao adotado para converso
por divises sucessivas, s que em vez de divises efetuaremos
multiplicaes sucessivas.

2.10 Algoritmo de Converso por


Multiplicaes Sucessivas

O processo de converso de um nmero fracionrio da base


decimal para a base binria pode ser efetuado de maneira simples e
direta a partir do seguinte algoritmo.

Dado um nmero a ser convertido, separe a parte inteira da parte


fracionria. Primeiramente converta a parte inteira atravs de uma das
tcnicas j apresentadas. Feito isto, podemos passar a converso da
parte fracionria da seguinte forma:

1. Verifique se a parte fracionria do nmero a ser convertido


igual a zero. Em caso afirmativo, o processo de converso
se encerra e a sequncia de dgitos obtida a representao
desejada.

2. Caso a parte fracionria seja diferente de zero, multiplique esta

49
Infraestrutura de Hardware

por dois. Anote e subtraia o primeiro dgito da parte inteira do


resultado obtido. Este dgito dever ser colocado direita dos
dgitos j obtidos durante o processo de converso da parte
inteira.

3. Retorne ao primeiro passo do algoritmo.

O exemplo a seguir demonstra como devemos aplicar este


algoritmo.

Figura 28 Demonstrao do algoritmo de converso de Nmeros Fracionrios da Base


Decimal para a Base Binria

Tente agora converter os seguintes nmeros fracionrios para a


base binria:

a) 0,125

b) 7,750

c) 0,1875

2.11 Operaes Aritmticas na Base Binria

Agora que j conhecemos a base binria e como podemos


utiliz-la para representar valores numricos inteiros e fracionrios,
podemos passar a estudar como efetuar as duas principais operaes
aritmticas nesta base.

50
Infraestrutura de Hardware

Lembre-se, como comentamos a princpio, nosso principal objetivo


ao estudarmos a base binria buscar entender como as Unidades
Lgicas e Aritmticas dos processadores funcionam, e como estas
conseguem operar com os nmeros representados na base binria.

Operao de Adio

De um modo geral podemos dizer que no existem grandes


diferenas entre as operaes de adio que ns efetuamos utilizando
a base decimal, e as operaes de adio que as Unidades Lgicas
e Aritmticas dos processadores efetuam utilizando a base binria.
Na verdade, a nica coisa que muda o valor no qual ocorre o nosso
conhecido vai um.

Nas Figuras 28, 29, 30 e 31 a seguir, temos alguns exemplos de


operaes de adio efetuadas tanto na base decimal quanto na base
binria.

Vamos primeiro analisar o que ocorre em uma operao de adio


na base decimal. Acompanhe nosso raciocnio na Figura 29 a seguir.

Figura 29 Exemplos de ocorrncia de vai um na base decimal

Como sabemos, a soma de dois nmeros quaisquer sempre


efetuada a partir de somas parciais efetuadas par a par sobre cada um
dos seus algarismos. Somamos primeiro as unidades, em seguida as
dezenas, as centenas e assim por diante. E, sempre que o resultado
de uma destas somas parciais for maior que nove, o que caracteriza
um estouro da base, efetuamos um vai um, correspondente ao
dgito das dezenas do resultado obtido, ficando apenas o dgito
correspondente a parte das unidades para ser registrado na posio
onde ocorreu a adio.

Eu tenho certeza que voc j est cansado(a) de saber disto, no


mesmo?

Pois bem, para nossa felicidade a operao de adio na base


binria at bem mais simples do que isto. Lembre-se que a base
binria possui apenas dois smbolos, o zero e o um, e isto por si s
j simplifica muito as coisas. Uma operao de adio entre dois

51
Infraestrutura de Hardware

algarismos da base binria s pode assumir uma das seguintes


configuraes: 0 + 0, 0 + 1, 1 + 0 e 1 + 1. No podia ser mais fcil,
no mesmo?

Vamos comear com algo bem simples, acompanhe a operao


do exemplo da Figura 30 a seguir.

Figura 30 Exemplo de ocorrncia de vai um na base binria

Observe os passos 1 e 2 de nossa operao. Como voc deve


ter, notado sempre que um resultado parcial for maior que 1, o que
indica um estouro da base binria, a exemplo do que ocorre com
a base decimal quando um resultado parcial maior que nove,
precisamos fazer um vai um para o dgito seguinte. Como em ambos
os casos os resultados parciais so iguais a dois, e como dois em
binrio representado como 102, efetuaremos um vai um e fica zero.
Exatamente como fizemos no exemplo a da Figura 29 quando o
resultado de uma soma parcial foi igual a onze.

Observemos agora o nosso prximo exemplo:

Figura 31 Mais um exemplo de ocorrncia de vai um na base binria

Aqui, alm do vai um e fica zero ocorrido na operao anterior,

52
Infraestrutura de Hardware

temos tambm um vai um e fica um, resultante da operao 1+1+1


ocorrido no passo dois. Como todos sabemos, 1+1+1 igual a 3
e como 3 em binrio igual a 11, semelhana do que vimos no
exemplo b da Figura 29, precisamos fazer um vai um e fica um a fim
de propagar o estouro da base observado no resultado obtido.

Muito simples, no mesmo? Nosso nico cuidado deve ser


observar corretamente quando efetuar o vai um, que em binrio
ocorre sempre que o resultado for maior que 1. O restante da
operao ocorre exatamente como estvamos acostumados operando
com a base decimal.

Agora, para terminar, observemos na Figura 32 a seguir o que


pode ocorrer quando somamos mais de dois nmeros de uma vez s
em binrio.

Figura 32 Exemplo de vai um e zero e fica um em binrio

Neste exemplo, temos uma situao bem peculiar, que dificilmente


observaramos na base decimal. No segundo passo da nossa
operao, quando somamos 1 + 1 + 1 + 1 temos um vai um e zero e
fica zero, ou seja, temos a propagao de um vai um para a mais de
uma casa esquerda da posio que estamos operando. Isto ocorre
porque, em decimal, 1 + 1 + 1 + 1 igual a 4 e 4 em binrio 100,

53
Infraestrutura de Hardware

desta forma, como sempre ficamos apenas com o primeiro dgito


passando os restantes para as casas seguintes, temos que fazer
Fique um vai um e zero e fica zero.
por Dentro
Muito estranho, no mesmo? Mas voc no tem com o que se
comum nos
referirmos s
assustar, a regra sempre a mesma, primeiramente some os dgitos
posies que da operao parcial, exatamente como se estivesse operando na base
os dgitos de
um nmero decimal, em seguida converta o resultado obtido para binrio, por
ocupam como
casas. Como, por
fim preserve apenas o dgito menos significativo do resultado obtido,
exemplo, a casa propagando os demais dgitos em uma operao do tipo vai n.
das unidades
ou a casa das
centenas.
Operao de Subtrao

Por questes de economia, a fim de reduzir o tamanho e a


complexidade do hardware empregado, as Unidades lgicas e
Aritmticas dos processadores convertem as operaes de subtrao
em operaes de adio entre o primeiro operando (minuendo) e o
inverso do segundo operando (subtraendo).

Como era de se esperar, e como podemos ver pela expresso a


seguir, apesar de reduzir enormemente o hardware necessrio nas
Unidades Lgicas e Aritmticas, isto em nada altera o resultado
obtido.

Desta forma, uma vez que j sabemos como se processa uma


operao de adio na base binria, a nica coisa que precisamos
aprender para efetuar uma operao de subtrao na base binria
aprender como podemos representar o inverso de um nmero nesta
base.

Antes disto, entretanto, precisamos definir claramente o que


o inverso de um nmero. Isto ser muito importante para que
compreendamos o que iremos fazer para representar os nmeros
negativos na base binria.

Em qualquer sistema numrico, o inverso de um nmero aquele


que somado ao primeiro, tem zero como resultado.

Na base decimal, por conveno, representamos um nmero


negativo da mesma forma que representamos um nmero positivo,
com a nica diferena que o nmero negativo ser precedido pelo

54
Infraestrutura de Hardware

sinal -. Este padro de representao que simplesmente associa um


sinal de - para formar a representao de um nmero negativo,
conhecido como representao de Magnitude e Sinal. Saiba Mais

Na base binria alm da representao de Magnitude e Sinal temos O termo


Magnitude e
tambm uma outra, conhecida como representao de Complemento Sinal indica
a Dois. que temos uma
representao
baseada na
Como j dissemos, dentro da Unidade Lgica e Aritmtica de um magnitude
processador todos os nmeros so representados utilizando apenas do nmero
representado,
as base binria. Nem mesmo os sinais de + e - existem. De um ou seja, o
seu mdulo,
modo geral, tanto na representao de Magnitude e Sinal quanto na associada a um
representao de Complemento a Dois, adota-se reservar o dgito sinal algbrico
que indica
mais significativo ou MSB (Most Signficant Bit), para sinalizar se um se este um
nmero positivo
nmero positivo ou negativo. Normalmente utiliza-se o 0 para ou negativo.
indicar que o nmero positivo e o 1 para indicar que o nmero Normalmente
no se exige o
negativo. uso do sinal +
para indicar que
um nmero
No sistema de Magnitude e Sinal, a semelhana do que ocorre
positivo.
na base decimal, simplesmente ajustamos o MSB para indicar se o
nmero positivo ou negativo, deixando o restante da representao
inalterada. A Figura 33 a seguir demonstra como ficaria a representao
de alguns nmeros positivos e negativos neste sistema.
Saiba Mais

Apesar de
tambm possuir
uma indicao
do sinal
algbrico, ou
Figura 33 Representao no sistema Magnitude e Sinal seja, de sinalizar
claramente se um
nmero positivo
Observe que este sistema apresenta duas incoerncias: ou negativo, a
representao
em complemento
Em primeiro lugar, permite duas representaes distintas para o a dois, como
zero, uma positiva e outra negativa. iremos ver um
pouco mais a
frente, adota
E, em segundo lugar, se tentarmos operar a soma de um nmero estratgias
diferentes
com o seu inverso, nos moldes do que aprendemos at agora para
para registrar
a base binria, no obteremos zero como resultado. Ou seja, a a magnitude
ou o tamanho
representao de Magnitude e Sinal muito til e interessante para de nmeros
negativos e
ns seres humanos, mas para os computadores um verdadeiro
positivos.
desastre. Por este motivo, os sistemas computacionais normalmente
adotam a representao de Complemento a Dois como representao
padro para os nmeros dentro das Unidades Lgicas e Aritmticas.

55
Infraestrutura de Hardware

Notao de Complemento a Dois

A Notao de Complemento a Dois no apenas corrige o problema


da indicao de zero negativo e positivo como tambm permite
expressar convenientemente o inverso de um nmero, de tal forma
que a adio deste com o seu inverso, em binrio, resulte em zero
binrio.

Considere um nmero N2 qualquer expresso na base binria. Se


existe uma representao para em (-N2 ) em binrio, esta representao
deve ser tal que:

Figura 34 Definio do inverso de um nmero em binario

Ou seja, se (-N2) existir, este certamente pode ser obtido pela


operao subtrao do prprio N2 da representao do zero em
binrio (02).

Sendo assim, s para comear tentemos encontrar uma


representao para o inverso do nmero 1 em binrio, ou seja, uma
representao para (-1), de tal forma que quando somarmos esta
representao ao prprio 1 em binrio obtenhamos o zero binrio
como resultado.

Antes de qualquer coisa, precisamos primeiramente definir


quantos dgitos a nossa representao ter. Isto importante porque,
conforme dissemos a princpio, o MSB de um nmero em binrio deve
ser reservado para indicar se este positivo ou negativo. Desta forma,
apenas por conveno, vamos adotar uma representao baseada
em uma palavra de 8 bits. Feito isto, acompanhemos agora os demais
passos apresentados na Figura 35 a seguir.

Observe que comeamos definindo uma representao para o


zero e outra para o um. Observe tambm que o MSB de ambos os
nmeros zero, o que indica que ambos so nmeros positivos.

No passo 1, exatamente como faramos na base decimal,


comeamos nossa operao subtraindo os primeiros algarismos
da representao do um e do zero, que, por coincidncia so
respectivamente 1 e 0.

Como 1 maior que 0, precisamos pedir algo emprestado para

56
Infraestrutura de Hardware

que possamos continuar a nossa operao. Esta operao de pedir


emprestado, em binrio tambm conhecida como vem um.
Entretanto, como podemos ver, o segundo dgito da representao
tambm zero, ou seja, no pode emprestar nada ao primeiro. O
terceiro, o quarto, o quinto, o sexto,o stimo e at o oitavo dgitos
so todos iguais a zero. Ou seja, aparentemente nossa operao
no pode continuar. Lembre-se, se estivssemos operando na base
decimal, ns simplesmente inverteramos a operao e o sinal do
seu resultado. Aqui em vez disto, como podemos ver no passo dois,
faremos um vem um externo que, como veremos, no apenas
inverter o sinal do nosso nmero como tambm nos permitir
concluir convenientemente nossa operao de subtrao.

Um detalhe importante aqui, como podemos ver pelo passo 3,


que, diferente do que ocorre na base decimal aonde um vem um
significa somar dez ao dgito anterior, na base binria o vem um
significa somar dois ao dgito anterior. Desta forma, ao se propagar, o
nosso vem um vai fazendo com que todos os dgitos menos o LSB
da representao do zero fiquem igual a 1, conforme podemos ver
pelo passo quatro da nossa operao. Como o LSB no vai emprestar
para ningum, este fica com valor igual a dois ou 10 na base binria,
conforme podemos ver no passo 5 da nossa operao.

Figura 35 Estratgia para encontrar uma representao para -1 na base binria

Agora sim, feita a propagao do vem um externo, podemos


completar nossa operao subtrao, tendo como resultado 111111112,

57
Infraestrutura de Hardware

que a nossa representao para (-1) na notao de complemento


a dois.

Como voc pode perceber, ainda que um pouco trabalho, o


processo todo at bem simples.

Vamos agora verificar se o valor que encontramos para representar


o (-1), atende a prerrogativa estabelecida, ou seja, se a sua adio
com a representao do 1 utilizada para obt-la resulta em zero.

Para tanto, vamos somar a representao encontrada com a


representao para o nmero 1 anteriormente utilizada.

Figura 36 Verificando se a representao de -1 encontrada est correta

Como podemos ver, com exceo do vai um para o nono dgito,


todos os demais resultaram igual a zero, o que uma representao
vlida para o zero no formato de nmero binrio adotado.

O vai um do nono dgito ser considerado apenas como o inverso


do vem um externo ocorrido na operao de obteno do (-1), sendo
desta forma apenas uma indicao da inverso do sinal do resultado.

Observe que este processo no apenas atendeu prerrogativa


estabelecida, como indica corretamente o sinal do nmero
representado. Observe que o MSB da representao para o (-1)
igual a 1, indicando que este um nmero negativo. Ao passo que o
MSB da representao para o (1) igual a zero, indicando que este
um nmero positivo.

Muito interessante, no mesmo?

Vamos agora ver um processo bem mais simples e prtico de obter


este mesmo resultado.

Na verdade, a representao em Complemento a Dois recebe


este nome devido ao algoritmo que iremos apresentar agora.

58
Infraestrutura de Hardware

Dado um nmero qualquer, inverta o valor de todos os seus dgitos,


ou seja, aonde tiver 1 coloque 0 e aonde tiver 0 coloque 1. Este
processo recebe o nome de complemento a um, ou simplesmente
complemento.

Adicione 1 ao resultado obtido e, como num passe de mgica


obtenha o inverso do nmero que estava procurando.

Na Figura 37 a seguir, temos uma demonstrao deste algoritmo


aplicado para obter o inverso de 1.

Figura 37 Aplicao do algoritmo de converso de nmeros para complemento a dois

Muito interessante, no mesmo?

Este algoritmo pode ser aplicado a qualquer nmero expresso


na base binria. Mesmo um nmero negativo pode ser invertido e
transformado em um nmero positivo por este processo. No exemplo
a seguir temos este processo aplicado para encontrar o inverso da
representao de (-1) em complemento a dois.

Figura 38 Aplicao do algoritmo e converso para complemento a dois aplicado a um


nmero negativo

Para finalizar nosso estudo das operaes aritmticas na base


binria, que tal verificar o que aprendemos fazendo alguns exerccios?

59
Infraestrutura de Hardware

A seguir tem alguns exemplos j resolvidos. Tente faz-los por si


mesmo, e no final compare os resultados obtidos. Em todos eles ns
iremos adotar o padro binrio de 8 bits em complemento a dois. Para
os nmeros negativos, primeiramente vamos represent-los como
nmeros positivos e em seguida convert-los para nmeros negativos
no padro de complemento a dois.

a) 7 5 = 00000111 (00000101) = 00000111 + 11111011 =


00000010 (2)

b) 13 45 = 000011012 (001011012) = 000011012 + 110100112 =


111000002 (-32)

c) -21 43 = -(000101012)-(001010112) = 111010112 + 110101012


= 1110000002 (-64)

d) -35 + 102 = -(001000112) + 11001102 = 110111012 + 011001102 =


010000112 (67)

2.12 Poder de Representao da Base Binria

Nesta ltima parte do nosso estudo, vamos dar uma paradinha


e considerar o poder de representao desta base numrica to
importante. Para tanto, comecemos tentando respondendo algumas
perguntas, que at certo ponto podem parecer meio confusas, mas
que ao respondermos nos dar uma viso mais clara deste ponto to
importante.

1. Quantos nmeros podemos representar na base binria,


adotando uma representao sem sinal, com uma palavra
de N bits? E ainda, quais seriam o maior e o menor nmero
representveis para uma palavra deste tamanho?

2. E, se adotssemos uma representao com sinal, digamos em


complemento a dois, o que mudaria em nossos valores? Nesta
condio, quantos nmeros poderamos representar e qual
seria o maior e o menor deles?

3. Quantos bits, ou dgitos, seriam necessrios para representar


um nmero R qualquer, dado originalmente na base decimal,
se adotssemos uma representao utilizando a base binria
em uma notao com e sem sinal?

Para responder estas perguntas, pensemos um pouco... Vamos


comear com a base numrica que estamos mais acostumados.

60
Infraestrutura de Hardware

Vamos primeiramente analisar a base decimal e depois vamos aplicar


as nossas concluses base binria.

Quantos nmeros podemos representar na base decimal se


adotarmos um formato N dgitos? Acompanhe nosso raciocnio pela
Figura 39 a seguir.

Figura 39 Quantidade de nmeros representveis na base decimal com N dgitos

Observe que cada dgito que inclumos em nossa representao nos


permite multiplicar por dez a quantidade de nmeros representveis.
Com 1 dgito, se representarmos apenas nmeros positivos podemos
representar at 10 nmeros, entre 0 e 9. Com 2 dgitos podemos
representar at 100 nmeros, entre 0 e 99. Com 3 dgitos at 1000
nmeros, 0 e 999 e assim por diante.

Vamos agora aplicar a mesma anlise para a base binria.


Acompanhe na Figura 40 a seguir:

Figura 40 Quantidade de nmeros representveis na base binria com N dgitos

Voc percebeu que com a base binria ocorre algo semelhante ao


que tnhamos observado na base decimal?

A cada novo dgito que inclumos multiplicamos o total de nmeros


representveis por 2, ou seja, da mesma forma que na base decimal,
a cada novo dgito que inclumos multiplicamos o total de nmeros
representveis pela quantidade de smbolos da base adotada.

61
Infraestrutura de Hardware

Observe ainda que, tanto na base decimal quanto na base binria,


como estamos representado apenas nmeros sem sinal, ou seja,
apenas nmeros positivos, o menor nmero representvel foi sempre
o zero e o maior foi sempre igual a N-1, onde = base numrica
adotada e N a quantidade de dgitos utilizados.

Verifique por voc mesmo... Quantos nmeros voc pode formar


na base decimal com 5 dgitos? E na base binria, quantos nmeros
voc poderia formar com os mesmos 5 dgitos?

Por fim, vamos agora observar o que acontece quando utilizamos


a base binria para representar nmeros com sinal, ou seja, nmeros
positivos e negativos.

Como voc deve estar lembrado, tanto no padro de Magnitude e


Sinal quanto no padro de Complemento a Dois, o bit mais significativo,
o MSB, deve ser reservado para representao do sinal do nmero.
Ou seja, dos N bits que temos apenas N-1 so efetivamente utilizados
para representar a magnitude ou o valor do nmero.

Observe as Figuras 41 e 42 a seguir.

Figura 41 Quantidade de nmeros representveis com N dgitos no padro de Magnitude


e Sinal
62
Infraestrutura de Hardware

Figura 42 Quantidade de nmeros representveis com N dgitos no padro de


Complemento a Dois

Voc conseguiu perceber que tanto no padro de Magnitude


e Sinal como de Complemento a Dois o total de nmeros gerados
continua sempre igual a N?

Observe com bastante ateno, este no um detalhe fcil de ser


percebido. Veja por exemplo no padro de Complemento a Dois, na
ltima parte da Figura 42. Se somarmos a quantidade de nmeros
positivos, a quantidade de nmeros negativos e o zero teremos:

Agora tente fazer o mesmo para o padro de Magnitude e Sinal e


veja se voc consegue confirmar este mesmo resultado.

Para finalizar a nossa anlise, temos na tabela da Figura 43 a


seguir um comparativo entre as representaes de nmeros com
sinal e sem sinal para uma palavra de 4 bits.

63
Infraestrutura de Hardware

Representao com Sinal Representao sem Sinal

Notao de
Notao de
Complemento a Binrio sem Sinal
Magnitude e Sinal
Dois

0111 7 0111 7 1111 15

Nmeros Positivos

Nmeros Positivos
0110 6 0110 6 1110 14

0101 5 0101 5 1101 13


2(N-1)-1

2(N-1)-1
0100 4 0100 4 1100 12

0011 3 0011 3 1011 11

Nmeros Positivos
0010 2 0010 2 1010 10
0001 1 0001 1 1001 9

2(N)-1
Zero 0000 0 Zero 0000 0 1000 8
1111 -1 - Zero 1000 -0 0111 7
1110 -2 1001 -1 0110 6
Nmeros Negativos

Nmero Negativos

1101 -3 1010 -2 0101 5


1100 -4 1011 -3 0100 4
2(N-1)

2(N-1)-1

1011 -5 1100 -4 0011 3


1010 -6 1101 -5 0010 2
1001 -7 1110 -6 0001 1
1000 -8 1111 -7 Zero 0000 0

Figura 43 Comparativo entre o poder de representao para nmeros representados em


Complemento a Dois, Magnitude e Sinal e Binrio sem Sinal, para uma palavra binria com
4 bits

Para concluir nosso estudo da base binria, que tal aprendermos


mais um mtodo para encontrar o inverso de um nmero no padro de
Complemento a Dois? Este mtodo que iremos aprender agora tem
a vantagem de ser extremamente simples para ns, seres humanos,
ainda que extremamente complexo para a Unidade Lgica e Aritmtica
executar, motivo pelo qual no muito utilizado na prtica.

Para converter um nmero em seu inverso, simplesmente execute


os seguintes passos:

1. Dado um nmero qualquer, expresso no padro de Complemento


a Dois, comece a percorrer todos os seus bits da direita para a
esquerda, parando no primeiro bit igual a 1 que encontrar.

2. Inverta o valor de todos os bits que estiverem a esquerda deste


primeiro bit encontrado.

64
Infraestrutura de Hardware

3. O resultado obtido ser o inverso do nmero dado no padro


de Complemento a Dois. Ou seja, se o nmero dado for positivo
o resultado ser a sua representao negativa, e se este for
negativo o resultado ser a sua representao positiva.

Os exemplos das Figuras 44 e 45 a seguir nos demonstram como


podemos aplicar este mtodo tanto para nmeros positivos como
negativos.

Figura 44 Exemplos de converso de nmeros positivos para negativos no padro de


Complemento a Dois pelo mtodo simplificado

Figura 45 Exemplos de converso de nmeros negativos para positivos no padro de


Complemento a Dois pelo mtodo simplificado

65
Infraestrutura de Hardware

Para concluir nosso estudo da base binria, nos falta ainda


responder nossa terceira e ltima questo: Quantos dgitos, ou bits,
precisamos para representar um nmero R qualquer?

A resposta desta questo est intimamente ligada ao que acabamos


de estudar, no tocante ao poder de representao da base binria.

Como acabamos de aprender, se adotarmos uma palavra com N


bits poderemos representar nmeros entre 0 e 2N-1 no padro binrio
sem sinal e entre -2N-1 e 2N-1-1 no padro de Complemento a Dois.

Desta forma, para definir quantos bits, ou qual o N que precisamos


adotar para representar um numero R qualquer na base binria
precisamos simplesmente resolver a seguinte equao.

, ou seja:

Acompanhe os exemplos a seguir:

1. Quantos bits, no mnimo, seriam necessrios para representar


o nmero 237 na base binria sem sinal?

Como teremos que utilizar uma palavra com 8 bits

2. Quantos bits, no mnimo, seriam necessrios para representar


o nmero 87 na base binria sem sinal?

Como teremos que utilizar no mnimo 7 bits

3. Quantos bits, no mnimo, seriam necessrios para representar


o nmero 87 na base binria no padro de Complemento a
Dois?

Lembrete

Lembre-se que, no padro de Complemento a dois e de Magnitude e Sinal


alm dos bits normalmente utilizados, ns precisamos incluir um bit a mais
para representar o sinal do nmero. Desta forma, como j havamos calculado
que seriam necessrios 7 bits para represent-lo sem sinal, precisaremos,
ento, de 8 bits para represent-lo no padro de Complemento a Dois.

4. Quantos bits, no mnimo, seriam necessrios para representar


o nmero -35 na base binria no padro de Complemento a
Dois?

Como , e como temos que incluir um bit a mais para

66
Infraestrutura de Hardware

representar o sinal do nmero, teramos que utilizar no mnimo


7 bits.

Com isto conclumos nosso estudo da base binria. Acompanhe


agora os exerccios propostos no seu Caderno de Exerccios para
fixar o que voc aprendeu.

2.13 Bases Octal e Hexadecimal

Conforme dissemos no incio do nosso estudo, as bases numricas


so definidas a fim de simplificar o dia a dia de quem as utiliza.

A base binria, por exemplo, extremamente prtica para ser


empregada na Unidade Lgica a Aritmtica dos computadores, pois
permite implementar circuitos simples e eficazes.

Por outro lado, esta mesma base binria extremamente confusa


para ns, seres humanos. Nossa mente est melhor adaptada a
trabalhar com a informao em um grau maior de abstrao.

Desta forma, a fim de simplificar o trabalho com valores


originalmente expressos na base binria, foram definidas duas outras
bases numricas, as bases octal e hexadecimal.

Estas bases oferecem a vantagem de permitir o mapeamento, ou


converso, direta dos valores expressos na base binria. Desta forma,
a converso entre a base binria e as bases octal e hexadecimal, e
vice versa, ocorre de maneira simples e natural.

Conforme vimos, a base octal possui apenas oito smbolos,


{0, 1, 2, 3, 4, 5, 6, 7}. E, como vimos no nosso estudo da base binria,
para representar valores entre zero e sete precisamos exatamente de
3 bits, ou dgitos, binrios. Ou seja, para fazermos a converso entre
a base binria e a base octal basta que agrupemos os bits utilizados
em palavras de 3 bits, susbtitundo-os pelo seu valor equivalente pela
notao posicional. A converso da base octal para a base binria
se d exatamente pelo caminho inverso, ou seja, simplesmente
substitumos cada smbolo da base octal pelo seu equivalente na
base binria. O nico cuidado que precisamos ter nesta converso
que cada smbolo da base octal equivale a 3 bits da base binria e
vice-versa.

Observe os exemplos de converso apresentados na Figura 46 a


seguir:

67
Infraestrutura de Hardware

Figura 46 Exemplos de converses entre a base binria e a base octal e vice-versa

Muito simples, no mesmo?

Com a base hexadecimal no diferente. Como esta base possui


Ateno exatamente 16 smbolos, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D. E, F},
podemos associar cada um dos seus smbolos a 4 bits, ou um nibble,
O termo Nibble
significa da base binria.
literalmente meio
byte, ou seja 4
bits.
A converso entre a base binria e a base hexadecimal se d
exatamente da mesma forma que acabamos de ver com a base octal.
Veja alguns exemplos na Figura 46 a seguir:

Figura 47 Exemplos de converses entre a base binria e a base hexadecimal a vice-


versa

Atualmente, a base octal se encontra praticamente em desuso,


havendo quase uma hegemonia da base hexadecimal. Mesmo assim,
devido ao seu valor histrico, muito importante que aprendamos
a operar com nmeros tanto na base octal quanto na base
hexadecimal.

A fim de evitar ambiguidades, todas as linguagens de programao


utilizam algum tipo de indicao para identificar a base numrica
adotada em determinado nmero. Normalmente utiliza-se um prefixo
ou um sufixo no lugar do subscrito que temos adotado em nosso texto.
Os padres mais utilizados so:

Base Hexadecimal: utiliza-se o prefixo 0x antes do nmero.


Por exemplo: 0xA3, 0x37, 0xAA35, e assim por diante.

Base Octal: utilizam-se apenas a letra O como prefixo. Por


exemplo: O35, O71, O11, e assim por diante.

Base Binria: A maioria das linguagens existentes atualmente


no d suporte direto a dados expressos na base binria. Desta
forma, o artifcio mais comum, quando necessrio, lanar mo

68
Infraestrutura de Hardware

do mapeamento existente entre esta base e as bases octal a


hexadecimal.

Converso das bases Octal e Hexadecimal para


Decimal

A converso de nmeros escritos tanto da base octal quanto


da base hexadecimal para a base decimal se d exatamente da
mesma forma como fizemos na base binria, ou seja, pela aplicao
da notao posicional. Para tanto, utilizamos o somatrio visto na
Figura 12, apenas lembrando que devemos substituir o pelo valor
correspondente a base adotada. Devemos lembrar tambm que as
letras utilizadas como smbolos da base hexadecimal possuem valor
numrico, ou seja, devemos lembrar que na base hexadecimal o
smbolo A equivale a 10, o B equivale a 11, o C equivale a 12, o D
equivale a 13, o E equivale a 14 e o F equivale a 15.

Vejamos os exemplos a seguir:

a) 0x36 = 3x161 + 6x160 -= 54

b) 0xAA = 10x161 + 10x160 160+10 = 170

c) 0x378 = 3x162 + 7x161 + 8x100 = 888

d) O35 = 3x81 + 5x80 = 64

e) O77 = 7x81 + 7x80 = 31

f) O121 = 1x82 2x81 + 1x80 = 81

Converso da base Decimal para as bases Octal e


Hexadecimal

As converses da base decimal para as bases octal e hexadecimal


podem ser efetuadas de duas maneiras. A primeira atravs de uma
variao do algoritmo apresentado para a converso da base decimal
para a binria, que denominamos de tcnica por divises sucessivas.
A segunda convertendo o nmero primeiramente para binrio e
depois fazendo a converso direta para a base desejada, octal ou
hexadecimal.

Como todos j sabemos converter da base decimal para a base


binria, vamos demonstrar apenas como converter utilizando a
variao do algoritmo de divises sucessivas. Vamos comear pela
base octal. Observe os exemplos da Figura 48 a seguir.
69
Infraestrutura de Hardware

Figura 48 Exemplos de converso da base decimal para a base octal

Agora vamos ver como fica a converso para a base hexadecimal.


Observe a Figura 49 a seguir.

Figura 49 Exemplos de converso da base decimal para a base hexadecimal

Muito simples, no mesmo?

Agora que j sabemos como converter e representar nmeros


nas bases octal e hexadecimal, nos falta apenas ver como ficam as
operaes de adio e subtrao nestas bases.

70
Infraestrutura de Hardware

A primeira coisa que devemos ter em mente ao pensar na execuo


das operaes aritmticas nas bases octal e hexadecimal que estas
bases nada mais so do que uma outra forma de ver a base binria.
Ou seja, que estas bases na verdade apenas apresentam os valores
obtidos na base binria de uma forma mais agradvel para o ser
humano.

A operao de adio permanece exatamente como fazemos na


base decimal, com a nica diferena com o valor no qual ocorre o vai
um, que em octal ocorre quando o resultado parcial for maior que 7 e
em hexadecimal quando o resultado parcial for maior que 15.

Para a operao de subtrao, por sua vez, devemos levar em


conta todas as consideraes feitas para a base binria, ou seja,
que na Unidade Lgica e Aritmtica dos computadores todas as
operaes de subtrao so substitudas por operaes de adio
entre o primeiro operando e o inverso do segundo operando.

Pelos motivos j expostos, mesmo nas bases octal e hexadecimal


adotamos o formato de Complemento a Dois para representar o
inverso de um nmero.

Assim sendo, a estratgia mais interessante para as operaes de


subtrao nas bases octal e hexadecimal, quando os operandos j
no estiverem expressos no formato de Complemento a Dois, dever
ser:

Primeiramente converter os operandos para a base binria;

Transformar o subtrator para o seu inverso, em Complemento a Dois, por uma


das tcnicas apresentadas;

Efetuar a operao diretamente na base binria;

Converter os resultados obtidos para a base desejada.

Observe os exemplos da Figura 50 a seguir. No exemplo a


temos uma operao entre operandos expressos na base octal. No
exemplo b, temos uma operao com operandos expressos na base
hexadecimal.

Preste ateno ao exemplo b. Perceba que ao operarmos com a


base hexadecimal temos que tomar cuidado no apenas com o valor
no qual ocorre o vai um, mas tambm nas converses entre os
resultados parciais encontrados e os smbolos a serem utilizados.

71
Infraestrutura de Hardware

Figura 50 Exemplos de operaes nas bases octal a hexadecimal

Com isto, encerramos nosso estudo sobre bases numricas.

Esperamos que tenham gostado. Este um conhecimento


extremamente til para todos aqueles que pretendem entender um
pouco mais como um computador realmente funciona.

Para os que se desejarem se aprofundar um pouco mais neste


assunto, recomendamos a leitura dos seguintes trabalhos cientficos:
What every computer scientist should know about floating-point
arithmetic.pdf disponvel em <http://dlc.sun.com/pdf/800-7895/800-7895.
pdf> e Where did all my decimals go.pdf disponvel em <http://jetlib.
com/mirrors/test/uvu.freshsources.com/page1/page2/page5/files/decimals.
pdf>,alm de acompanharem o contedo disponvel na bibliografia
recomendada.

72
Infraestrutura de Hardware

Vamos Revisar?

Neste captulo aprendemos sobre as Bases Numricas e sobre o


Notao Posicional e a sua importncia para o desenvolvimento dos
computadores digitais.

Aprendemos tambm que as duas bases numricas mais


importantes so:

A Base Decimal, formada por dez smbolos {0,1,2,3,4,5,6,7,8,9},


utilizada por ns, seres humanos.

A Base Binria, formada apenas pelos smbolos 0 e 1, utilizada


pela Unidade Lgica e Aritmtica dos Computadores.

Alm destas bases, conhecemos tambm as bases Octal e


Hexadecimal, que foram criadas com o intuito de facilitar a visualizao
e a operao de valores expressos na base binria.

Tambm pudemos aprender diversas tcnicas e mtodos que


podem ser empregados na converso de valores expressos em
diferentes bases numricas. Com isto pudemos constatar que todos
os valores inteiros podem ser expresso em qualquer das bases
numricas estudadas, e que, por outro lado, nem todo valor decimal
pode ser livremente convertido, uma vez que alguns destes tornam-
se dzimas peridicas quando passados de uma base para outra.

Um outro ponto muito importante que aprendermos foi que as


operaes aritmticas so integralmente preservadas em todas as
bases estudadas.

73
Infraestrutura de Hardware

Captulo 3

O que vamos estudar?

Neste captulo, vamos estudar os seguintes temas:

Portas lgicas e funes lgicas

lgebra booleana

Circuitos digitais

Metas

Aps o estudo deste captulo, esperamos que voc consiga:

Conhecer as principais portas lgicas utilizadas na construo


dos circuitos digitais bsicos.

Construir circuitos digitais combinatrios utilizando tabela


verdade e vice versa.

74
Infraestrutura de Hardware

Captulo 3 Lgica Digital

Vamos conversar sobre o assunto?

Voc j parou para pensar como so projetados e construdos os


componentes bsicos que do inteligncia a um computador? Como
so projetados os circuitos integrados digitais?

Esta uma cincia fascinante e em franca expanso, e que est


na base de todo o desenvolvimento tecnolgico que vivenciamos em
nosso dia a dia. Desde um simples relgio de pulso at ao computador
mais avanado, tudo o que nos rodeia est repleto de lgica digital.

A expresso Lgica Digital traz consigo duas definies


carregadas de significado:

Lgica: O temo Lgica comumente definido como sendo a


cincia das leis do pensamento, ou ainda, a disciplina que se
dedica ao estudo das regras que permitem tornar o pensamento
vlido.

Digital: O termo digital se refere a representao da informao


atravs de dois estados ou smbolos lgicos bsicos, o falso
e o verdadeiro, o zero e o um. Quando dizemos que um
determinado sistema digital, em outras palavras estamos
dizendo que seu funcionamento baseado nestes dois estados
ou smbolos lgicos bsicos: o zero e o um.

Desta forma, podemos entender a lgica digital como sendo a


tecnologia que nos permite modelar a informao e o raciocnio lgico
atravs de zeros e uns.
Saiba Mais
A lgica digital que iremos trabalhar baseada em uma rea
especial da matemtica conhecida como lgebra de Boole, ou George Boole
lgebra Booleana. foi um Cientista
Alemo do sculo
19 considerado
A lgebra booleana muito parecida com a lgebra que aprendemos o pai da lgica
na escola, a qual est baseada em operadores e/ou funes com a matemtica.

nica diferena que na lgebra booleana, independente da funo que


voc esteja utilizando, tanto os valores de entrada como o resultado
obtido sero sempre zeros e uns.

75
Infraestrutura de Hardware

Na lgica digital, a informao processada atravs de equaes


ou funes booleanas, as quais so implementadas atravs de
circuitos especiais conhecidos como portas lgicas.

Uma porta lgica nada mais que um circuito eletrnico que


implementa a funcionalidade definida por uma funo booleana.
Desta forma, cada porta lgica recebe o nome da funo lgica que
implementa.

Interessante, no mesmo? Pois se prepare, a nossa aventura


est s comeando. Vamos comear estudando as principais portas
lgicas e suas funcionalidades, em seguida, vamos aprender como
utilizar estas portas lgicas para construir nossos prprios circuitos
lgicos mais complexos.

3.1 Portas Lgicas e Funes Lgicas


Bsicas

Quando o famoso matemtico ingls George Boole, publicou


as bases de sua teoria em 1854, em um trabalho intitulado An
Investigation of the Laws of Thought on Which to Found the
Mathematical Theories of Logic and Probabilities, os computadores
digitais ainda nem pensavam em existir. Entretanto, foi o trabalho
deste matemtico brilhante que serviu de alicerce de tudo o que hoje
conhecemos como lgica digital.

Em seu trabalho, Boole definiu 3 funes lgicas essenciais, a


partir das quais derivaram-se todas as outras. So elas:
Lembrete
A funo And, que define que uma resposta s ser verdadeira
Lembre-se que,
por conveno, se, e somente se, todas as suas entradas forem verdadeiras.
em lgica digital
a informao A funo Or, que define que uma resposta s ser verdadeira
verdadeira est
associada ao se ao menos uma das sua entradas for verdadeira
nvel 1 e a falsa ao
nvel 0. A funo Not, que possui apenas uma entrada e uma sada, e
que define que a resposta s ser verdadeira se e somente se
a sua entrada for falsa.

A partir destas trs funes lgicas, foram definidas mais


trs funes lgicas bsicas as quais tambm so utilizadas
como elementos bsicos para a criao de circuitos lgicos mais
complexos:

A funo lgica XOR, que possui duas entradas e uma sada e

76
Infraestrutura de Hardware

que em portugus poderia ser traduzida como ou exclusivo, a


qual define que uma resposta s ser verdadeira se, e somente
se, uma das entradas for verdadeira e a outra falsa.

A funo lgica Nand, formada a partir da associao da funo


lgica And seguida da funo lgica Not, que define que uma
resposta s ser verdadeira se e somente se todas as suas
entradas forem falsas

A funo lgica Nor, formada a partir da associao da funo


lgica Or seguida da funo lgica Not, que define que uma
resposta s ser verdadeira se ao menos uma das suas
entradas for falsa.

A fim de permitir a representao da funcionalidade esperada de


um circuito baseado em lgica digital, cada funo/porta lgica possui
um smbolo esquemtico, ou diagrama, e um smbolo matemtico,
tambm conhecido como equao booleana, associado.

Apesar de utilizar operadores semelhantes aos utilizados nas


equaes aritmticas, as operaes descritas pelas equaes
booleanas so em essncia operaes lgicas. Por este motivo,
devemos tomar muito cuidado para no nos confundir no momento de
avaliar uma equao booleana.

Alm do smbolo esquemtico e do smbolo matemtico, cada porta


lgica possui tambm uma tabela que descreve a sua funcionalidade,
conhecida como Tabela Verdade. A Tabela Verdade uma tabela na
qual esto listadas todas as possveis configuraes para os sinais
de entrada e a sada produzida para cada uma destas configuraes
pela porta lgica associada.

A Figura 1 a seguir nos traz os smbolos matemtico e grfico e os


nomes associados s seis principais funes lgicas que acabamos
de apresentar.

77
Infraestrutura de Hardware

Figura 1 Portas Lgicas bsicas e seus smbolos graficos e matemticos

Agora que j fomos apresentados s principais portas lgicas,


seus smbolos grficos e equaes booleanas, que tal estudarmos
um pouco mais detalhadamente cada uma destas portas e entender
como elas funcionam a partir da anlise das suas Tabelas Verdades.

3.2 Portas Lgicas

Porta Lgica And

Nas Figuras 2 e 3 a seguir, temos o smbolo grfico, a equao


booleana e a tabela verdade associada a porta lgica And.

Figura 2 Smbolo grfico e equao booleana associados porta lgica And

78
Infraestrutura de Hardware

Entradas Sada

A B X

0 0 0

0 1 0

1 0 0

1 1 1

Figura 3 Tabela Verdade associada a porta lgica And

Observe a tabela verdade, veja que esta reflete o que dissemos


a princpio, que a porta gica And fornece uma resposta verdadeira,
ou 1, se e somente se, todas as suas entradas forem verdadeiras.
Muito Simples no mesmo?

Lembre-se que ns podemos tanto utilizar a equao booleana,


o diagrama esquemtico ou a prpria funo lgica para definir que
estamos querendo utilizar esta funo lgica em nosso sistema,
conforme podemos ver pela Figura 4 a seguir.

Figura 4 Trs formas equivalentes de representar a funo lgica AND

Porta Lgica Or

Nas Figuras 5 e 6, a seguir, temos o smbolo grfico, a equao


booleana e a tabela verdade associadas a porta lgica Or.

Figura 5 Smbolo grfico associado porta lgica Or

79
Infraestrutura de Hardware

Entradas Sada

A B X

0 0 0

0 1 1

1 0 1

1 1 1

Figura 6 Tabela Verdade associada a porta lgica Or

Observe agora a tabela verdade da funo Or. Veja que, conforme


dissemos a princpio, que a porta lgica Or fornece uma resposta
verdadeira, ou 1, se ao menos uma das suas entradas forem
verdadeiras.

Novamente, lembre-se que ns podemos tanto utilizar a equao


booleana, o diagrama esquemtico ou a prpria funo lgica para
definir que estamos querendo utilizar esta funo lgica em nosso
sistema, conforme podemos ver pela Figura 7 a seguir.

Figura 7 Trs formas equivalentes de representar a funo lgica OR

Porta Lgica Not

Nas Figuras 8 e 9, a seguir, temos o smbolo grfico, a equao


booleana e a tabela verdade associada a porta lgica Not. Observe
a bolinha utilizada a sada da porta lgica para indicar a inverso
ou negao do sinal de entrada. Esta bolinha sempre utilizada
quando queremos indicar que vai ocorrer uma inverso no sinal,
transformando um em zero e vice-versa.

Figura 8 Smbolo grfico associado porta lgica Not, com destaque para o smbolo
utilizado para indicar a inverso ou negao do sinal de entrada.

80
Infraestrutura de Hardware

Entrada Sada

A X

0 1

1 0

Figura 9 Tabela Verdade associada a porta lgica Not

Esta , sem dvida, a funo lgica mais simples de todas. Se


entra um sai zero e se entra zero sai um. Fcil demais, voc no
acha?

Diferentemente das outras funes lgicas, a funo Not possui 4


formas de ser representada. Acompanhe na Figura 10 a seguir.

Figura 10 Quatro formas equivalentes de representar a funo lgica Not

Lembrete

Conforme dissemos a princpio, as trs outras portas lgicas que


apresentaremos agora foram formadas a partir de associaes das
trs primeiras portas lgicas apresentadas. Desta forma, importante
lembrar que as suas funcionalidades so expresso da sobreposio das
funcionalidades das outras portas lgicas utilizadas.

Porta Lgica Nand

Nas Figuras 11 e 12, a seguir, temos o smbolo grfico, a equao


booleana e a tabela verdade associada a porta lgica Nand.

Figura 11 Smbolo grfico e equao booleana associados porta lgica Nand

81
Infraestrutura de Hardware

Entradas Sada

A B X

0 0 1

0 1 1

1 0 1

1 1 0

Figura 12 Tabela Verdade associada a porta lgica Nand

importante que percebamos que a porta Nand foi construda


a partir de uma porta And associada a uma porta Not, conforme
podemos ver na Figura 13 a seguir.

Figura 13 Modelo esquemtico de construo da Porta Nand e da sua Tabela Verdade

Observe que a tabela verdade associada a uma porta lgica indica


apenas as suas entradas e sadas visveis, ou seja, seguindo o
exemplo da porta Nand, resultados intermedirios obtidos por portas
lgicas utilizadas internamente no so listados, conforme ocorreu
com o sinal X.

Lembre-se que ns podemos tanto utilizar a equao booleana,


o diagrama esquemtico ou a prpria funo lgica para definir que
estamos querendo utilizar esta funo lgica em nosso sistema,
conforme podemos ver pela Figura 14 a seguir.

Figura 14 Trs formas equivalentes de representar a funo lgica NAND

82
Infraestrutura de Hardware

Porta Lgica Nor

Nas Figuras 15 e 16, a seguir, temos o smbolo grfico, a equao


booleana e a tabela verdade associada a porta lgica Or.

Figura 15 Smbolo grfico e equao booleana associados porta lgica Nor

Entradas Sada

A B X

0 0 1

0 1 0

1 0 0

1 1 0

Figura 16 Tabela Verdade associada a porta lgica Nor

Novamente, conforme fizemos com a porta Nand, vamos agora


apresentar o esquema interno da porta Nor.

Figura 17 Modelo esquemtico de construo da Porta Nor e da sua Tabela Verdade

Por fim, temos as trs formas pelas quais podemos representar


uma porta lgica Nor.

83
Infraestrutura de Hardware

Figura 18 Trs formas equivalentes de representar a funo lgica Nor

Porta Lgica Xor

Nas Figuras 19 e 20, a seguir, temos o smbolo grfico, a equao


booleana e a tabela verdade associada a porta lgica Xor.

Figura 19 Smbolo grfico e equao booleana associados porta lgica Xor

Entradas Sada

A B X

0 0 0

0 1 1

1 0 1

1 1 0

Figura 20 Tabela Verdade associada a porta lgica Xor

Devido sua funcionalidade, a porta Xor possui um esquema


interno um pouco mais complexo que os das portas Nand e Nor.
Observe a Figura 21 a seguir.

Como voc pode perceber, a construo de uma porta Xor exige


2 portas Not, 2 portas And e uma porta Or. A tabela verdade destaca
do seu lado esquerdo todos os possveis valores de entrada e na
sua ltima coluna, direta, todos os valores de sada. Nas colunas
marcadas como etapas intermedirias temos as possveis entradas e
sadas das portas utilizadas internamente na construo da porta Xor.
Observe que, segundo a tabela verdade tanto da Figura 12 quanto da
Figura 13, a porta Xor s fornece um a sua sada se, e somente se,
uma das entradas for um e a outra zero.

84
Infraestrutura de Hardware

Figura 21 Modelo esquemtico de construo da Porta Xor e da sua Tabela Verdade

Por fim, temos as trs formas pelas quais podemos representar


uma porta lgica Xor.

Figura 22 Trs formas equivalentes de representar a funo lgica Xor

Agora que j conhecemos as portas lgicas bsicas, suas


funcionalidades, seus diagramas esquemticos e suas equaes
booleanas, podemos nos aventurar e ir um pouco mais longe,
podemos comear a pensar em projetar nossos prprios circuitos
lgicos digitais.

3.3 Circuitos Digitais

Assim como as portas lgicas, os circuitos digitais so circuitos


eletrnicos projetados com o intuito de efetuar uma funo, ou
equao, booleana especfica. Desta forma, os circuitos digitais
tambm possuem um diagrama esquemtico, uma equao booleana

85
Infraestrutura de Hardware

e uma tabela verdade associada.

Como qualquer projeto de engenharia, o projeto de um circuito


digital exige que se adote uma metodologia pr-definida de forma a
poder garantir o melhor resultado dispendendo o mnimo de recursos
e esforos possveis.

Desta forma, a fim de atingir estes objetivos, em cada um dos


nossos projetos, seguiremos o passo a passo listado a seguir:

1. Analisar atentamente as funcionalidades esperadas do circuito a ser


implementado, buscando identificar e eliminar possveis redundncias que, se
removidas, possam simplificar o circuito a ser implementado.

2. Identificar e listar de maneira agrupada todos os sinais de entrada e sada do


circuito

3. Definir a tabela verdade equivalente a funcionalidade esperada.

4. A partir da tabela verdade, deduzir a equao booleana geral do circuito.

5. Implementar um circuito digital que atenda a equao booleana encontrada,


substituindo as expresses presentes na equao booleana por suas portas
lgicas equivalentes.

Vamos comear com um pequeno exemplo. Vamos projetar um


circuito com uma entrada binria com 3 bit e uma sada com 1 bit.
De tal forma que este seja capaz de identificar se o valor aplicado
a entrada par, ou seja, que sinalize esta ocorrncia colocando 1 a
sada quando o valor aplicado entrada for par e 0 quando for mpar.

Aplicando a metodologia proposta temos:

1. Analisando a funcionalidade esperada do circuito, podemos


constatar que no existem redundncias e inconsistncias ou
incoerncias.

2. Como determinado em sua especificao, nosso circuito ter 3


bits de entrada que denominaremos de B0, B1 e B2 e um bit de
sada que denominaremos simplesmente de Y.

3. Na Figura 24 temos a tabela verdade do nosso circuito. Observe


que nossa tabela exatamente igual as das portas lgicas
que estudamos. Temos um grupo de colunas representado os
sinais de entrada e uma coluna representando o sinal de sada.
Nesta tabela verdade, apenas para facilitar o acompanhamento
das funcionalidades esperadas, foi includa uma coluna a mais,
a coluna N, com o valor decimal representado pelos 3 bits de

86
Infraestrutura de Hardware

entrada(B2,B1 e B0). Verifique que, conforme definido nas


funcionalidades do circuito, a coluna Y 1 sempre que o valor
indicado na coluna N par. Como estamos querendo identificar
quando o valor da entrada par, nosso sinal Y vlido, ou seja,
1, justamente quando o valor aplicado entrada for 0, 2, 4
ou 6.

Figura 23 Diagrama esquemtico e tabela verdade do circuito digital que sinaliza quando o
valor aplicado s entradas par

Continuando, precisamos agora deduzir a equao booleana


correspondente a funcionalidade esperada. Observe a Figura 24 a
seguir.

Figura 24 Levantamento das Equaes booleanas parciais, por linhas, do circuito dado

Veja que primeiramente construmos as equaes booleanas


parciais, uma para cada linha da tabela verdade onde Y =1. Nosso
objetivo ao descrever estas equaes booleanas parciais identificar
as condies de entrada que tornam a nossa sada vlida.

87
Infraestrutura de Hardware

Observe ainda que, como cada equao booleana parcial


baseada apenas nos sinais de entrada e nos funes booleanas
bsicas, precisamos adotar algum artifcio para sinalizar quando
o sinal da entrada vlido em um ou zero, uma vez que queremos
indicar claramente a condio encontrada na tabela verdade que nos
gerou uma sada vlida.

Desta forma, a fim de fazer esta distino, sempre que um sinal


vlido em um, ou seja, sempre que este deve ter seu valor igual a
um para gerar uma sada vlida, simplesmente anotamos o nome do
prprio sinal na equao booleana, caso contrrio, ou seja, quando
este deve ter o valor igual a zero para gerar uma sada vlida,
anotamos o sinal com uma barra sobre o seu nome.

Observe a primeira linha da nossa tabela verdade. Veja que temos


Y=1 quando B2=0, B1=0 e B0=0. Ou seja, que Y igual a um quando
a entrada B2 e a entrada B1 e a entrada B0 forem zero. Observe que
as conjunes e que utilizamos podem ser substitudas por funes
booleanas and, a qual nos d uma resposta verdadeira, igual a 1,
quando todas as suas entradas forem verdadeiras. Desta forma,
a nossa equao booleana parcial fica conforme podemos ver na
primeira linha da nossa tabela verdade.

As demais linhas vlidas da tabela verdade seguem o mesmo


raciocnio.

Terminado o levantamento das equaes parciais, precisamos


definir a equao booleana geral do nosso circuito. Para tanto, basta
observarmos que o nosso circuito deve fazer Y=1se ocorrer qualquer
uma das quatro condies que foram identificadas. Em outras
palavras, Y ser igual a um se ocorrer a primeira ou a segunda ou a
terceira ou a quarta condio identificada. Como as expresses ou
aqui utilizadas equivalem a funo booleana Or, podemos construir
nossa equao booleana geral simplesmente contectando todas
as nossa equaes parciais j encontradas atravs destas funes
booleanas Or. Observe a Figura 25 a seguir.

Por fim, nos falta apenas construir um circuito que implemente a


equao que acabamos de levantar.

88
Infraestrutura de Hardware

Figura 25 Construo da Equao Booleana Geral do Circuito

Figura 26 Converso da Equao Booleana Geral em portas lgicas equivalentes

Como podemos ver pela Figura 26, analisando a equao geral


do circuito, fica fcil perceber que podemos converter cada parte da
nossa equao geral em portas lgicas bsicas. Primeiramente, cada
equao parcial deve ser convertida em uma porta And com tantas
entradas quantas forem as entradas do circuito, em seguida, deve-se
interligar as sadas de cada uma destas portas And atravs de uma
porta Or com tantas entradas quantas forem as equaes parciais do
circuito. A Figura 27, a seguir, nos traz o esquema eltrico final do
circuito digital proposto.

Um pouco trabalhoso mais muito interessante no mesmo? Saiba


que por simples que possa parecer esta ainda uma das tcnicas
mais utilizadas para o desenvolvimento de circuitos digitais simples.

Existem tcnicas mais avanadas de projeto, que permitem a partir


do resultado obtido com a tcnica aqui apresentada otimizar tanto a

89
Infraestrutura de Hardware

equao booleana quanto o circuito eltrico final obtido, mas estas


tcnicas fogem ao escopo de nossa disciplina.

Figura 27 Circuito digital que implementa a funo de identificar se um valor binrio


aplicado s entradas B2, B1 e B0 par

Que tal exercitar um pouco mais implementando um outro circuito?


Desta vez vamos projetar um circuito que identifique quando o valor
aplicado entrada divisvel por 3.

Para no tomar muito tempo, vamos apenas apresentar as fases


do projeto, cabe a voc chegar s concluses j apresentadas.

Figura 28 Tabela Verdade, equaes parciais e equao geral do circuito que identifica
quando a entrada divisvel por 3

90
Infraestrutura de Hardware

Figura 29 Circuito digital que identifica quando a entrada divisvel por 3

Muito fcil, no mesmo?

Estes circuitos que acabamos de implementar so conhecidos


como circuitos combinacionais, uma vez que sua resposta depende
exclusivamente de uma combinao adequada de valores de entrada
e nada mais.

Por outro lado, existe tambm outra classe de circuitos conhecidos


como circuitos sequenciais.

Os circuitos sequenciais so aqueles que alteram a sua resposta


aos valores de entrada a depender do momento em que estes valores
ocorrem.

Como sua resposta depende no apenas dos valores de entrada,


mas tambm do momento em que estes ocorrem, estes circuitos
possuem alguns sinais extras que servem para sincronizar sua
operao com os outros circuitos que o cercam. Dentre estes sinais
temos o sinal de Reset, que serve para inicializar a lgica interna do
circuito, e o sinal de clock, ou sinal de relgio,que permite ao circuito
contar o tempo decorrido entre a ocorrncia de padres de sinais de
entrada de tal forma a permitir a sua correta identificao.

Podemos ver os circuitos sequenciais como uma evoluo dos


circuitos combinacionais, uma vez que estes devem no apenas
responder corretamente a determinados padres de sinais de entrada,

91
Infraestrutura de Hardware

mas tambm avaliar corretamente o momento em que estes sinais


ocorrem.

Os sistemas computacionais, sejam eles complexos como um


computador de grande porte, ou simples, como um chip de celular,
todos eles podem ser descritos como circuitos sequenciais.

Mais tarde quando estudarmos os diversos circuitos presentes na


arquitetura de um computador voltaremos a nos referir aos circuitos
sequenciais e sua aplicaes.

Por enquanto, ficaremos por aqui.

No deixe de verificar os exerccios resolvidos e tentar resolver os


exerccios propostos no seu caderno de exerccios.

Aprenda Praticando

Agora que voc j aprendeu a teoria e j viu como resolver os


exerccios com os exemplos apresentados, chegou a hora de praticar
resolvendo os exerccios da seo 3 do caderno de exerccios.

Lembre-se, de suma importncia que voc tente resolver sozinho


todos os exerccios apresentados. Se tiver alguma dvida, volte e
refaa os exemplos apresentados neste captulo. Se ainda assim voc
no conseguir resolver algum exerccio, pea ajuda ao tutor.

Atividades e Orientaes de Estudo

Dedique, pelo menos, 5 horas de estudo para o Captulo 3. Voc


precisa praticar bastante esse contedo apresentado no ltimo
captulo, pois requer bastante treino. Organize uma metodologia de
estudo que inicie com a leitura dos conceitos e seja seguida pela
resoluo de exerccios.

Voc poder esclarecer suas dvidas com o professor e os tutores


utilizando os chats e os fruns tira-dvidas no ambiente virtual de seu
curso.

No esquea de ler atentamente o guia de estudo da disciplina,

92
Infraestrutura de Hardware

pois nele voc encontrar a diviso de contedo semanal, ajudando-o


a dividir e administrar o seu tempo de estudo semanal. Lembre-se
que as atividades somativas propostas pelo professor no ambiente
virtual so importantes para o aprendizado e para a composio da
sua nota. Observe os prazos estabelecidos pelo seu professor para
essas atividades virtuais.

Vamos Revisar?

Neste captulo ns aprendemos um pouco sobre Lgica Digital.


Descobrimos que a Lgica Digital est baseada na lgebra de Boole,
a qual possui trs Funes Lgicas Essenciais, as funes And, Or e
Not e que a partir destas foram definidas mais trs Funes Lgicas
Bsicas, as funes Nand, Nor, e Xor. Descobrimos tambm que as
portas lgicas so circuitos eletrnicos que implementam as funes
lgicas, e que cada porta lgica possui um smbolo esquemtico, uma
equao booleana e uma Tabela Verdade associada.

Neste captulo ns aprendemos ainda tambm uma metodologia


de projeto que nos permite construir Circuitos Lgicos Combinacionais
utilizando apenas as seis portas lgicas bsicas. Segundo a
metodologia apresentada nosso projeto se divide em trs etapas
bsicas: construir uma Tabela Verdade que expresse a funcionalidade
esperada do circuito, deduzir as equaes booleanas parciais e a
equao booleana geral do circuito e por fim transformar a equao
booleana geral encontrada em um circuito lgico combinacional
substituindo os operadores lgicos utilizados por portas lgicas
equivalentes.

93
Infraestrutura de Hardware

Consideraes Finais

Ol, Cursista!

Esperamos que voc tenha aproveitado este primeiro mdulo


da disciplina Infraestrutura de Hardware. No prximo mdulo,
continuaremos estudando o subsistema de processamento e daremos
incio ao estudo das estruturas de interconexo, popularmente
conhecidos por barramentos.

Aguardamos sua participao no prximo mdulo.

At l e bons estudos!

Juliana Regueira Basto Diniz


Abner Correa Barros

Professores Autores

94
Infraestrutura de Hardware

Referncias

STALLINGS, William. Arquitetura e Organizao de


Computadores. 5. ed.

PATTERSON, D. A. e Hennessy, John L. Organizao e


Projeto de Computadores. LTC, 2000.

TANENBAUM, Andrew S. Organizao Estruturada de


Computadores. 4. ed. Traduo Helio Sobrinho. Rio de Janeiro:
Prentice-Hall, 2001.

95
Infraestrutura de Hardware

Conhea os Autores

Juliana Regueira Basto Diniz

Possui graduao em engenharia eletrnica pela Universidade


Federal de Pernambuco, mestrado e doutorado em Cincia
da Computao pela Universidade Federal de Pernambuco.
Atualmente professora da Universidade Federal Rural de
Pernambuco (UFRPE), desenvolvendo trabalhos no grupo
de Educao a Distncia desta universidade. Seus temas de
interesse em pesquisa so: Sistemas Distribudos, Computao
Ubqua e Ensino a Distncia.

Abner Corra Barros

mestre em Cincia da Computao com foco em Engenharia


de Hardware pelo Centro de Informtica da Universidade Federal
de Pernambuco. Possui graduao em Cincia da Computao
pela mesma universidade. Atualmente professor da disciplina
de Organizao e Arquitetura de Computadores da Faculdade
Maurcio de Nassau e Engenheiro de Hardware da Fundao
de Apoio ao Desenvolvimento da UFPE (FADE), atuando
em um projeto de convnio entre o Centro de Informtica da
UFPE e a Petrobrs. Suas reas de interesse e pesquisa so:
Hardware Reconfigurvel, Arquitetura de Cores Aritmticos e
Computao de Alto Desempenho em Field-Programmable
Gate Array (FPGA).

96
Infraestrutura de Hardware

Juliana Regueira Basto Diniz


Abner Corra Barros

Volume 2

Recife, 2009
Universidade Federal Rural de Pernambuco

Reitor: Prof. Valmar Corra de Andrade


Vice-Reitor: Prof. Reginaldo Barros
Pr-Reitor de Administrao: Prof. Francisco Fernando Ramos Carvalho
Pr-Reitor de Extenso: Prof. Paulo Donizeti Siepierski
Pr-Reitor de Pesquisa e Ps-Graduao: Prof. Fernando Jos Freire
Pr-Reitor de Planejamento: Prof. Rinaldo Luiz Caraciolo Ferreira
Pr-Reitora de Ensino de Graduao: Prof. Maria Jos de Sena
Coordenao Geral de Ensino a Distncia: Prof Marizete Silva Santos

Produo Grfica e Editorial


Capa e Editorao: Allyson Vila Nova, Rafael Lira, Italo Amorim, Glucia Micaele
Reviso Ortogrfica: Marcelo Melo
Ilustraes: Abner Barros, Allyson Vila Nova, Diego Almeida e Moiss de Souza
Coordenao de Produo: Marizete Silva Santos
Sumrio

Apresentao....................................................................................................4

Conhecendo o Volume 2..................................................................................5

Captulo 1 Evoluo das Arquiteturas.........................................................7

Captulo 2 Unidade de Controle e Caminho de Dados.............................15

Captulo 3 Ciclo de Execuo e Interrupes...........................................69

Captulo 4 Estruturas de Interconexo......................................................82

Consideraes Finais...................................................................................102

Conhea os Autores.....................................................................................104
Apresentao

Caro(a) Cursista,

Estamos, neste momento, iniciando o segundo volume do livro da disciplina de


Infraestrutura de Hardware. Neste volume, iremos discutir um pouco sobre a evoluo
das arquiteturas dos processadores, bem como aspectos referentes ao processamento
de dados e de controle. Tambm discutiremos sobre o ciclo de execuo com e sem o
uso de interrupes.

Por fim, apresentaremos os barramentos ou as estruturas de interconexo que


servem para interligar todos os dispositivos perifricos s partes bsicas do computador,
tais como memria e CPU. Estudaremos os princpios bsicos de funcionamento,
os mtodos de arbitragem, as hierarquias e alguns principais padres comerciais de
barramentos.

Bons estudos!

Juliana Regueira Basto Diniz


Abner Barros

Professores Autores
Conhecendo o Volume 2

Neste segundo volume, voc ir encontrar os contedos referentes ao mdulo 02 da


disciplina Infraestrutura de Hardware. Para facilitar seus estudos, veja os contedos
encontrados neste volume.

Mdulo 2 Subsistema de Processamento Central

Carga horria: 15h

Objetivo Principal do Mdulo 2:

Apresentar a evoluo das arquiteturas dos processadores, bem como aspectos


referentes ao processamento de dados e de controle. Em seguida, iremos discutir
sobre o ciclo de execuo com e sem o uso de interrupes e apresentar os
barramentos ou as estruturas de interconexo que servem para interligar todos
os dispositivos perifricos s partes bsicas do computador, tais como memria e
CPU.

Contedo Programtico do Mdulo 02:

Evoluo das Arquiteturas.

Processador: Controle e Dados.

Interrupes

Estruturas de Interconexo: Barramentos


Infraestrutura de Hardware

Captulo 1

O que vamos estudar?

Neste captulo, vamos estudar o seguinte tema:

Evoluo das arquiteturas dos processadores

Metas

Aps o estudo deste captulo, esperamos que voc consiga:

Compreender as diferenas entre arquiteturas RISC e CISC;

Compreender a evoluo das arquiteturas sob o ponto de vista


tecnolgico;

Entender conceitos fundamentais associados s arquiteturas


dos processadores.

6
Infraestrutura de Hardware

Captulo 1 Evoluo das


Arquiteturas

Vamos conversar sobre o assunto?

Voc sabe o que multiprogramao? Mesmo que voc nunca


tenha ouvido falar em multiprogramao, voc certamente perceberia
se o seu sistema operacional no empregasse essa tcnica, pois
voc nunca poderia abrir vrias janelas de aplicativos numa mesma
sesso. Multiprogramao uma tentativa de manter o processador
sempre ocupado com a execuo de um ou mais programas por vez.
Com a multiprogramao, diversos programas so carregados para
a memria e o processador comuta rapidamente de um para o outro.
Essa tcnica permite que o processador no passe por perodos
de ociosidade, espera de respostas oriundas de programas em
execuo, permitindo otimizaes e melhorias de desempenho de
processamento. O multiprocessamento, por sua vez, caracteriza-se
pelo uso de vrios processadores que atuam em paralelo, cada um
executando as suas tarefas

Para garantir melhor desempenho, ainda possvel que


os processadores atuais utilizem multiprocessamento com
multiprogramao, que a juno dos conceitos, onde mais
de um processador utilizado e cada um deles implementa a
multiprogramao, permitindo efetivamente que programas sejam
executados paralelarmente. Os computadores pessoais evoluram com
processadores que implementam a multiprogramao e comportam o
multiprocessamento.

Neste captulo, vamos conversar sobre a evoluo das arquiteturas


de processadores e para tal, falaremos de alguns conceitos
que favorecem melhoria de desempenho aos processadores. A
multiprogramao, como citamos, um exemplo disso.

1.1 RISC versus CISC

As primeiras mquinas eram extremamente simples com poucas


instrues, at que surgiu a microprogramao, favorecendo o uso de

7
Infraestrutura de Hardware

um conjunto complexo de instrues, conhecidas como instrues de


mquina.

Da surgiram as primeiras mquinas que seguiam a arquitetura


CISC (Complex Instruction Set Computer), que traduzindo para o
portugus seria Computador com Conjunto Complexo de Instrues.

Mas voc sabe o que significa microprogramao? um recurso


que permite que um conjunto de cdigos de instrues sejam
gravados no processador, possibilitando-o a receber as instrues
dos programas e execut-las utilizando as instrues gravadas na
sua microprogramao.

No incio da dcada de 80, havia uma tendncia em construir


processadores com conjuntos de instrues cada vez mais complexos,
entretanto nem todos os fabricantes seguiram essa tendncia,
tomando o caminho inverso no sentido de produo de processadores
de alta performance. A filosofia RISC (Reduced Instruction Set
Computer) vai de encontro maneira de pensar sobre arquiteturas
de computadores. Segundo seus defensores, os processadores CISC
estavam ficando complicados. Assim, surgiu a arquitetura RISC, que
traduzindo para o portugus, significa Computador com Conjunto
Reduzido de Instrues.

A arquitetura RISC surgiu com o objetivo de otimizar a performance


dos computadores e foi construda com base em alguns princpios
fundamentais que permitiram otimizaes de desempenho. So elas:
execuo de uma instruo por ciclo, conjunto reduzido de instrues,
grande nmero de registradores, instrues com formato fixo, poucos
modos de endereamentos e implementao similar a uma linha de
montagem (pipeline).

Mas o que vem a ser um Pipeline? Um pipeline composto por


uma srie de estgios (operando possivelmente em paralelo) onde
uma parte do trabalho feito em cada estgio, com funcionamento
similar a uma linha de montagem. Sendo assim, o trabalho no est
concludo at que tenha passado por todos os estgios.

A Figura 1 apresenta uma operao simples e rotineira como lavar


roupas para exemplificar o funcionamento de um pipeline. Existem 4
estgios na lavagem de roupas representados por 4 diferentes cones
na figura.

O primeiro estgio refere-se lavagem propriamente dita. O

8
Infraestrutura de Hardware

segundo estgio a centrifugao, enquanto que o terceiro a


secagem. O ltimo estgio refere-se s aes de engomar e guardar
a roupa.

Na parte superior da figura, observa-se 4 tarefas (A, B, C e D).


Cada tarefa envolve a operao de lavar roupas e acontecem de forma
sequencial, sem a execuo no pipeline. A parte inferior da figura se
observa a execuo das mesmas tarefas, se utilizando um pipeline.

Na escala temporal (eixo horizontal superior), observa-se que as


mesmas tarefas quando executadas em um pipeline, terminam muito
antes do que elas terminariam caso no fosse utilizado o pipeline. Isso
acontece porque enquanto uma tarefa est na fase da lavagem, a
outra est na fase da centrifugao, outra na fase da secagem e assim
sucessivamente. A cada instante, cada estgio do pipeline executa
uma determinada tarefa dando a ideia de paralelismo das aes e
garantindo que o tempo de execuo seja reduzido, permitindo ganhos
em termos de desempenho.

Figura 1 Exemplo de um Pipeline para Lavar Roupas

Agora que voc j tem ideia do que um pipeline sobre o contexto


simplificado de uma atividade rotineira, como lavar roupas, vamos
traz-lo para o contexto computacional. Suponha que o pipeline
possua 5 estgios: busca instruo, execuo, decodifica instruo,

9
Infraestrutura de Hardware

acesso a dados externos e escrita de resultados. O fluxo de dados


nesse pipeline est representado na Figura 2.

Figura 2 Estgios do Pipeline

Um programa contendo 10 instrues, por exemplo, ser executado


por esta CPU e entrar nesse pipeline. Vamos numerar as instrues
do programa de 1 a 10 e considerar que apenas as instrues de
nmero 3 e 7 fazem referncia memria. As demais instrues
passam apenas pelos 2 primeiros estgios do pipeline. Vamos
considerar que a primeira linha da tabela 1 refere-se ao nmero de
ciclos. Um ciclo um perodo de tempo que uma instruo leva em
um determinado estgio do pipeline.

Observando a Tabela 1, podemos dizer que no ciclo 1, a Instruo


1 buscada. No ciclo 2, a Instruo 2 buscada e a Instruo 1
executada. No ciclo 3, a Instruo 3 (representada pela letra L)
buscada, a Instruo 2 executada e a Instruo 1 finalizou. No
ciclo 4, a Instruo 3 (L) executada, mas no pode ser completada
em um ciclo, pois faz referncia memria. No ciclo 5, a Instruo
4 executada, embora o LOAD iniciado no ciclo anterior no tenha
terminado. Isso pode acontecer, desde que a instruo 4 no tente
utilizar o registrador no processo de ser carregado.

de responsabilidade do compilador garantir que a instruo


depois de um LOAD no utilize o item que est sendo buscado na
memria. Se o compilador no puder encontrar nenhuma instruo
para colocar depois do LOAD, ele sempre pode inserir uma instruo

10
Infraestrutura de Hardware

NO-OP e desperdiar um ciclo. Vale a pena ressaltar que LOAD/


STORE so as nicas instrues que podem ser atrasadas.

Tabela 1 Execuo de um Programa com 10 instrues

Os processadores RISC, ao contrrio dos CISC (possuem muitos


modos de endereamento), apresentam apenas o endereamento por
registrador. A consequncia imediata que as instrues no fazem
acessos memria, sendo, portanto, executadas em um nico ciclo.
Assim, apenas duas instrues, LOAD e STORE, acessam a memria.
Tais instrues, em geral, no podem ser completadas em um ciclo
conforme observamos com a insero de recursos como pipeline.

Outro aspecto que diferencia os processadores CISC dos RISC


o nmero de registradores. Os registradores so memrias internas
CPU e por esse motivo possuem acesso mais rpido. Aumentando-
se o nmero de registradores disponveis no processador, aumenta-
se o desempenho, j que mais dados estaro disponibilizados em
memrias internas CPU.

A arquitetura RISC foi amplamente difundida em estaes de


trabalho SPARC lanadas pela SUN Microsystems no final da dcada
de 80. A arquitetura CISC foi empregada nos primeiros chips x86. Com
o passar do tempo e com a evoluo dos processadores a distino
entre CISC e RISC foi se tornando menos notvel. Os processadores
da Intel a partir do Pentium Pro passaram a executar um conjunto
de instrues simples, tal como a filosofia RISC e novas instrues
foram surgindo tornando esse conjunto de instruo no to reduzido,
aproximando alguns processadores RISC da filosofia CISC.

Essa tendncia de aumento na complexidade tambm levou os


processadores Power PC, que foram concebidos na arquitetura RISC,
a agregar um nmero maior de instrues, aproximando-se, portanto,
da arquitetura CISC.

11
Infraestrutura de Hardware

Atividades e Orientaes de Estudo

Dedique, pelo menos, 1 hora de estudo para este primeiro captulo.


Voc deve organizar uma metodologia de estudo que envolva a leitura
dos conceitos que sero ditos apresentados neste volume e pesquisas
sobre o tema, usando a Internet e livros de referncia.

Utilize os fruns temticos e os chats desta disciplina para troca


de informaes sobre o contedo no ambiente virtual, pois a interao
com colegas, tutores e o professor da disciplina ir ajud-lo a refletir
sobre aspectos fundamentais tratados aqui.

Tambm importante que voc leia atentamente o guia de estudo


da disciplina, pois nele voc encontrar a diviso de contedo
semanal, ajudando-o a dividir e administrar o seu tempo de estudo
semanal. Procure responder as atividades propostas como atividades
somativas para este captulo, dentro dos prazos estabelecidos pelo
seu professor, pois voc no ser avaliado apenas pelas atividades
presenciais, mas tambm pelas virtuais.

Vamos Revisar?

Observamos neste captulo a evoluo das arquiteturas de


computadores. Voc pde notar que inicialmente os processadores
eram bastante simples com poucas instrues e modos de
endereamento. O acesso memria principal era bastante demorado,
o que levava os programas a gastarem mais tempo para a sua
execuo. A arquitetura RISC minimizou este problema diminuindo
o nmero de acessos memria principal atravs do uso de apenas
duas instrues que fazem acesso memria (LOAD e STORE) e
do aumento na quantidade de registradores. Na arquitetura RISC,
o programa compilado diretamente pelo hardware, o que tambm
possibilita uma melhoria de desempenho.

Com o passar dos anos, recursos que outrora foram introduzidos


pelo padro RISC passaram a ser introduzidos nas mquinas CISC
e vice-versa, de modo que ambas as tecnologias passaram a se
aproximar adotando estratgias de sucesso da sua antiga rival.

12
Infraestrutura de Hardware

Aprendemos os fatores que diferenciam as duas arquiteturas e


falamos de recursos empregados pelas arquiteturas modernas como
multiprogramao e pipeline.

No prximo captulo deste volume, voc estudar a unidade de


controle e o caminho de dados, ambos internos CPU. No captulo
3, estudaremos o ciclo de execuo e as interrupes e no captulo 4
estudaremos a interconexo da CPU com os demais subsistemas do
computador atravs da anlise dos sistemas de barramentos.

13
Infraestrutura de Hardware

Captulo 2

O que vamos estudar?

Neste captulo, vamos estudar os seguintes temas:

A arquitetura interna de um processador

Principais componentes e funcionalidades do processador

Caminho de Dados

Estrutura da linguagem de mquina

Hardware interno do processador MIPS.

Metas

Aps o estudo deste captulo, esperamos que voc consiga:

Compreender como um processador funciona, e como ele


capaz de decodificar e executar as instrues de um
programa.

Entender tambm como se d a converso de um programa de


uma linguagem de alto-nvel para a linguagem de montagem e
desta para a linguagem de mquina do processador.

Descrever como o processador MIPS executa algumas de suas


principais instrues utilizando os componentes de hardware
presentes na sua arquitetura interna.

14
Infraestrutura de Hardware

Captulo 2 Unidade de
Controle e Caminho de Dados

Vamos conversar sobre o assunto?

No incio da dcada de 70 do sculo passado, um filme de fico


cientfica fez histria ao prever que em 2001 existiriam computadores
capazes de pensar, agir e interagir com o ser humano por vontade
prpria. O filme a que me refiro no Brasil teve o ttulo de 2001: Uma Dica
de Filme
Odisseia no Espao, e o computador em questo tinha o nome de
HAL 9000. Saiba mais
sobre este
Pois bem, passados aproximadamente 40 anos do lanamento filme em http://
pt.wikipedia.org/
do referido filme, e mais de 70 anos aps a construo do primeiro wiki/2001_-_Uma_
odissia_no_
computador digital, mesmo com todo os avanos que estamos Espao
vivenciando, com os computadores cada vez mais presentes no dia a
dia de cada um de ns, os computadores ainda no so capazes de
agir e pensar por si mesmo e nem mesmo de se comunicar diretamente
com qualquer um de ns. Ainda dependemos das linguagens de
programao para instru-los sobre qualquer coisa que queremos que
eles faam. E mais que isto, em essncia, em todos estes anos muito
pouca coisa mudou na forma como os computadores pensam, em
como as informaes so representadas e em como os computadores
processam estas informaes. Mesmo assim, para a grande maioria
das pessoas, e por que no dizer para muitos de ns, o funcionamento
de um computador ainda permanece como um dos grandes mistrios
da vida moderna.

Estamos agora comeando mais um captulo desta nossa viagem


pelo interior dos computadores. Neste Captulo vamos fazer um
passeio pelo que poderamos chamar de crebro dos computadores,
pelo interior do seu processador. Vamos buscar entender como um
processador decodifica e executa as instrues contidas em um
programa e como funciona a famosa linguagem de mquina, a
lngua dos computadores. Voc ver que no existe nenhum mistrio
por trs de tudo isto, que tudo no passa de uma grande obra de
engenharia de algumas mentes brilhantes do nosso sculo.

Voc j est preparado?

15
Infraestrutura de Hardware

Ento, se acomode bem na cadeira, e nos acompanhe em mais


esta viagem.

2.1 O processador, este ilustre desconhecido

Quando pensamos em tudo quanto um computador capaz de


fazer, em sua capacidade de processar imagens, sons, textos, jogos,
planilhas eletrnicas, navegar na internet e coisas assim, ou ainda na
sua capacidade quase inesgotvel de efetuar clculos de engenharia
e modelar sistemas complexos atravs da conhecida realidade virtual,
as vezes perdemos de vista que tudo isto no passa de programas
sendo executados pelo processador deste computador.

Por este motivo, o processador muitas vezes considerado o


crebro do computador, pois ele quem decodifica e executa as
instrues presentes nos programas.

De nada adianta termos um computador com uma grande


quantidade de memria, ou com muito espao de disco, ou ainda com
uma placa me de ltima gerao se no tivermos um processador
de qualidade para processar e controlar tudo isto.

Mas como podemos identificar um processador de boa qualidade?


O que diferencia um processador do outro?

Para que possamos responder esta pergunta, precisamos


primeiramente relembrar os principais componentes da arquitetura
interna de um processador. A Figura 1, a seguir, nos traz um modelo
da estrutura interna dos processadores em geral.

Figura 1 Estrutura interna de um processador

16
Infraestrutura de Hardware

Vejamos para que serve cada uma das partes indicadas na figura.

Unidade de Controle: responsvel por buscar e decodificar


cada instruo a ser executada. esta unidade que determina
quando e como as demais unidades funcionais do processador
sero ativadas. a unidade de controle que, a partir da
decodificao da instruo a ser executada, programa a
operao a ser efetuada pela Unidade Lgica e Aritmtica e
acessa os registradores onde esto armazenados os operandos
a serem utilizados.

Unidade Lgica e Aritmtica: A Unidade Lgica e Aritmtica,


como o prprio nome sugere, a unidade responsvel por
executar todas as operaes lgicas e aritmticas existentes
no programa em execuo.

Banco de Registradores: O Banco de Registradores serve


como uma memria auxiliar de acesso rpido onde devem
ficar armazenadas entre outras coisas as variveis locais e os
ponteiros do programa em execuo.

Observe que no a Unidade de Controle quem executa as


operaes, ela responsvel apenas por buscar e decodificar as
instrues e, a partir da, gerar os sinais de controle que ativaro as
demais partes dor processador. Ou seja, o processamento de dados
propriamente dito feito exclusivamente pela Unidade Lgica e
Aritmtica (ULA) a qual processa os dados normalmente armazenados
nos registradores.

Esta associao entre o banco de registradores e a Unidade


Lgica e Aritmtica, por onde passam todos os dados para serem
processados, to importante para o desempenho de um processador
que recebe o nome de Caminho de Dados. E, o tempo necessrio
para que os dados sejam acessados nos registradores, aplicados
ULA, processados por esta e retornados para o banco de registradores
recebe o nome de Ciclo do Caminho de Dados.

17
Infraestrutura de Hardware

Figura 2 Caminho de Dados (Data Path)

Figura 3 Viso mais detalhada dos elementos que compem o caminho de dados

Observe que o tempo do ciclo do caminho de dados uma


excelente medida para avaliar a eficincia do processador do ponto
de vista da sua capacidade de processar informaes. Mas como
podemos avaliar a eficincia do processador quando inserido em uma
determinada placa me ou em conjunto com um determinado chip de
memria? Para este fim foi definido o Ciclo de Buscar Decodificar e
Executar.

18
Infraestrutura de Hardware

O Ciclo de Buscar Decodificar e Executar mede, portanto, o tempo


total necessrio para buscar uma instruo na memria principal,
decodific-la e execut-la atravs do ciclo do caminho de dados.

Existem diversas tcnicas desenvolvidas especificamente com o


objetivo de reduzir o tempo do ciclo de Buscar Decodificar e Executar,
as quais esto presentes na maioria dos processadores atuais e so
estas tcnicas que em grande parte determinam a eficincia e o preo
dos processadores. Quanto mais apurada a tcnica empregada,
quando mais eficiente o hardware utilizado, tanto mais caro e eficiente
ser o processador.

Um outro ponto que exerce grande impacto no uso e desempenho


de um processador o seu conjunto de instrues.

Em nosso contexto, o conjunto de instrues de um processador


pode ser visto com um dicionrio contendo todos os comandos
existentes na sua linguagem de mquina os quais esto diretamente
associados s operaes que este processador consegue executar.

Mas por falar em linguagem de mquina, voc sabe dizer o que


vem a ser isto e qual a sua importncia para o nosso estudo?

isto o que vamos descobrir na prxima seo.

2.2 Comunicando com um computador: A


Linguagem de Mquina

Todo processo de comunicao, de troca de informaes, seja


entre dois seres humanos, entre um ser humano e uma mquina, ou
ainda entre duas mquinas, sempre baseado na troca de smbolos e
regido por regras sintticas e semnticas que determinam o significado
que cada smbolo assume no contexto em que utilizado.

Algum dia voc j precisou se comunicar com algum que


no falava a sua lngua? Como foi a sua experincia? Foi fcil ou
difcil? De qualquer forma voc deve ter percebido que para que
haja comunicao necessrio que todas as partes envolvidas
conheam os smbolos, neste caso as palavras, e as regras sintticas
e semnticas que regem o seu significado, ou seja, que alm de
conhecer as palavras, saiba-se tambm como utiliz-las corretamente
a fim de poder formar frases que exprimam realmente o que se deseja
comunicar.

19
Infraestrutura de Hardware

No mundo virtual no diferente. Para que possamos nos


comunicar com um computador a fim de instru-lo a respeito das
tarefas a serem executadas, ou seja, para que possamos program-
lo, devemos conhecer algum tipo de linguagem de programao, seu
vocabulrio e suas regras sintticas e semnticas.

No inicio da histria dos computadores no existia o que ns


conhecemos como linguagem de programao de alto nvel, ou
seja, aquele tipo de linguagem que nos permite descrever as tarefas
a serem executadas atravs de expresses prprias da nossa
linguagem coloquial. Desta forma, os programadores eram obrigados
a conhecer e utilizar exclusivamente a linguagem de mquina. Isto
equivale a dizer que os programas eram inteiramente escritos como
sequncias de zeros e uns. Sim, isto mesmo, voc no leu errado,
os programas eram inteiramente escritos como sequncias de zeros
e uns, isto porque, conforme j dissemos, os computadores so
mquinas inteiramente baseadas em lgica digital, ou seja, toda e
qualquer informao no interior de um computador deve ser expressa
apenas como sequncias de zeros e uns.

Com a evoluo natural dos computadores e, por conseguinte


dos programas de computador, logo percebeu-se que no era vivel
continuar a programar diretamente em linguagem de mquina. Assim
surgiu a primeira linguagem de programao. Que na verdade no era
bem uma linguagem de programao, nos moldes como conhecemos
hoje, utilizando expresses da linguagem natural dos seres humanos.
Era antes uma traduo direta das instrues existentes na linguagem
de mquina para palavras de comando que podiam ser mais facilmente
compreendidos e manipulados pelos seres humanos. Esta forma

20
Infraestrutura de Hardware

de linguagem ficou conhecida como linguagem de montagem, ou


simplesmente linguagem assembly, e os comandos desta linguagem
ficaram conhecidos como mnemnicos, por serem abreviaes e/ou
siglas que representavam as operaes que se queria executar. A
Figura 4 a seguir nos permite ter uma pequena amostra da diferena
entre programar em linguagem de montagem e diretamente em
linguagem de mquina.

Figura 4 Exemplo de trecho de programa em linguagem de montagem e o seu equivalente


em linguagem de mquina

Observe que nada havia mudado no processador em si, este


continuava compreendendo exclusivamente a linguagem de mquina.
Apenas havia sido desenvolvida uma forma de tornar a atividade de
programar os computadores um pouco mais natural e eficiente. Com
esta nova abordagem, os programas eram primeiramente escritos em
linguagem de montagem e em seguida passavam por um processo de
traduo automtica, normalmente efetuado por um outro programa
de computador, denominado processo de montagem, da o nome da
linguagem ser linguagem de montagem. Neste processo todas as
instrues mnemnicas utilizadas eram convertidas em comandos da
linguagem de mquina, ou seja, em sequncias de zeros e uns, para
que se tornassem inteligveis ao computador.

Com o passar do tempo, percebeu-se que seria possvel construir


programas melhores e em menor tempo se, em vez de se programar
diretamente em linguagem de montagem, fosse possvel programar
em uma linguagem com comandos e tipos de dados mais expressivos,
que estivessem mais perto do raciocnio humano, ou seja, com um
maior grau de abstrao. Surgia assim a primeira linguagem de
programao de alto nvel. Com ela, um programa podia ser escrito

21
Infraestrutura de Hardware

utilizando expresses idiomticas e estruturas textuais mais prximas


as que ns utilizaramos para descrever um algoritmo qualquer, o
que tornava o processo de criao de um programa algo bem mais
cmodo e natural. Esta facilidade entretanto tinha um custo, pois o
processo de converso de um programa escrito nesta linguagem para
a linguagem de mquina tinha agora que ser feito em duas etapas.
Primeiro o programa era traduzido da linguagem de alto nvel para a
linguagem de montagem, e deste para a linguagem de mquina. Este
processo de traduo da linguagem de alto nvel para a linguagem
de montagem ficou conhecido como compilao e o programa que
executa esta tarefa ficou conhecido como Compilador. A Figura 5 a
seguir nos traz um exemplo do processo de converso de um trecho
de cdigo escrito em linguagem de alto nvel para linguagem de
mquina, passando pela linguagem de montagem.

Figura 5 Processo de converso de um programa escrito em linguagem de alto nvel


para linguagem de mquina

Com o passar dos anos foram surgindo muitas linguagens e


compiladores novos, entretanto, o processo converso entre um
programa escrito em alguma linguagem de alto nvel e a linguagem de
mquina continua praticamente o mesmo. A Figura 6, a seguir, nos traz
o fluxo completo de Compilao e execuo de um programa escrito
em uma linguagem de alto nvel para a linguagem de mquina.

22
Infraestrutura de Hardware

Figura 6 Fluxo completo de Compilao de um programa qualquer

Isto tudo muito interessante, no mesmo?

Bem, agora que j temos uma viso de como se d de fato


a nossa comunicao com os computadores, ou seja, de como
nossos programas passam da linguagem na qual foram escritos
para a linguagem de mquina, que tal nos aprofundarmos um pouco
mais e estudarmos como o processador decodifica e executa estas
instrues? Que tal conhecer por dentro um dos processadores mais
estudados e comercializados em todos os tempos?

Na prxima seo, vamos conhecer o processador MIPS, sua


arquitetura interna, algumas instrues da sua linguagem de mquina
e ver em detalhes como este processador decodifica e executa as
instrues da sua linguagem de mquina.

Arquitetura bsica de um processador

Existem atualmente diversos tipos de processadores, indo desde


os processadores mais simples, dedicados a executar pequenas
funes em aparelhos eletro/eletrnicos, at aos processadores mais
complexos, projetados para aplicaes em que se precise de um alto
poder de processamento, como em supercomputadores por exemplo.
Todos estes processadores podem ser agrupados na forma de classes
ou famlias conforme podemos ver na Tabela 1 a seguir:

23
Infraestrutura de Hardware

Tabela 1 - Tipos de Processadores

Famlia Aplicao

Processadores de Computadores pessoais


propsito geral (Desktop, Notebooks, etc)

Sistemas Embarcados (TVs, DVDs, GPS, Celular,


Microcontroladores
Micro-ondas, Relgios, Console de Jogos, etc)

Processamento de Alto desempenho,


Processadores Vetoriais
super computadores

Processadores
Computadores de mdio e grande porte
Super-Escalar

Placas grficas, processamento


Processadores Grficos
de realidade virtual

Processadores Digitais Equipamentos mdicos, processamento de sinal de


de Sinal (DSP) satlite, telecomunicaes, etc.

Entretanto, de um modo geral, podemos dizer que todos os


processadores compartilham de uma mesma arquitetura bsica, ainda
que diferindo no modo como esta arquitetura implementada.

Ou seja, ainda que cada uma destas famlias de processadores


possua caractersticas bem especficas, o que as torna especialmente
aplicveis a um ou outro tipo de aplicao, ainda assim podemos
traar um paralelo entre as suas unidades internas, de tal forma que
possamos trat-las apenas como processadores e nada mais.

Como vimos na Figura 1, todos os processadores possuem


internamente no mnimo uma unidade de controle, um banco de
registradores e uma unidade lgica e aritmtica. Este seria um
modelo mnimo razovel se o processador no precisasse acessar
a memria principal e os dispositivos de entrada e sada durante o
processamento normal das informaes. A Figura 7, a seguir, nos
traz o que poderamos considerar um modelo mais completo de um
processador.

24
Infraestrutura de Hardware

Figura 7 - Arquitetura interna de um processador incluindo o barramento do sistema

Existe ainda uma outra viso da arquitetura interna do processador


que muito til quando se deseja ter uma viso mais funcional do
mesmo. A Figura 8 nos traz esta viso. Nela em vez de destacar-se
as unidades funcionais, destacam-se as funes associadas a alguns
registradores de controle do processador.

Figura 8 Viso interna do processador destacando os registradores de controle

Os registradores de controle apresentados na Figura 8 normalmente

25
Infraestrutura de Hardware

no esto acessveis ao programador, sendo o seu contedo


controlado pela unidade de controle do processador. Entretanto, ainda
assim muito importante conhecer as suas funcionalidades para se
ter uma viso de como o processador funciona.

O registrador PC, do ingls Program Counter, que em


portugus significa Contador de Programa, armazena sempre
o endereo de memria da prxima instruo a ser executada.
Seu contedo atualizado sempre que uma nova instruo
trazida da memria para ser executada.

O registrador IR, do ingls Instruction Register, que em


portugus significa Registrador de Instruo, armazena a
instruo que foi trazida da memria para ser executada.

O registrador MAR, do ingls Memory Address Register, que


em portugus significa Registrador de Endereo de Memria.
Este registrador armazena o endereo de memria a ser
acessado quando algum operando da operao em execuo
se encontra armazenado na memria.

O registrador MBR, do ingls Memory Buffer Register, que em


portugus significa Registrador do Buffer de Memria. Este
registrador utilizado como buffer de dados entre o processador
e a memria principal. Sempre que um operando lido da
memria este primeiramente armazenado neste registrador
antes que possa ser utilizado internamente pelo processador.
E, sempre que o processador precisa gravar algum dado na
memria principal, este primeiramente armazenado neste
registrador, permanecendo nele at que o processo de gravao
na memria seja concludo.

O registrador I/O AR, do ingls Input/Output Address Register,


que em portugus significa Registrador de Endereo de
Entrada e Saida. Este registrador armazena o endereo
do dispositivo de entrada e sada a ser acessado quando o
processador vai executar alguma operao de escrita ou leitura
nos dispositivos de entrada e sada.

O registrador I/O BR, do ingls Input/Output Buffer Register,


que em portugus significa Registrador do Buffer de Entrada
e Sada. Este registrador utilizado como buffer de dados entre
o processador e os dispositivos de entrada e sada. Sempre que
um dado lido de algum dispositivo de entrada e sada, este

26
Infraestrutura de Hardware

primeiramente armazenado neste registrador antes que possa


ser utilizado internamente pelo processador. E, sempre que o
processador precisa gravar algum dado em algum dispositivo
de entrada e sada, este primeiramente armazenado neste
registrador, permanecendo nele at que o processo de gravao
seja concludo.

Bem, agora que j conhecemos as principais famlias de


processadores existentes no mercado, e que pudemos ter uma
viso geral dos elementos presentes na arquitetura interna de todos
os processadores, podemos dar uma olhadinha em como esta
arquitetura interna funciona, ou seja, como o fluxo de execuo de
uma instruo qualquer no interior de um processador.

Do ponto de vista de execuo das instrues contidas em um


programa, podemos dizer que todos os processadores seguem o fluxo
apresentado na Figura 9 a seguir.

Figura 9 Fluxo de execuo de uma instruo de computador

Este fluxo pode ser dividido em:

Ciclo de Busca:

O registrador Contador de Programa (PC) carregado com


o endereo da instruo a ser executada.

O endereo da instruo inserido no barramento de


endereos do sistema juntamente com a ativao dos sinais
de controle que indicam que uma operao de leitura de
memria. Em resposta a memria fornece OP-CODE da
instruo (palavra binria que representa a instruo a ser

27
Infraestrutura de Hardware

executada).

O OP-CODE da instruo carregado no Registrador de


Instrues para ser decodificado pela Unidade de Controle
do Processador.

A Unidade de Controle decodifica a instruo e desencadeia


a sequncia de operaes necessrias ativao dos
mdulos que sero utilizados na execuo da referida
instruo.

Ciclo de Execuo - o ciclo de execuo depender do tipo de


instruo a ser executada, a qual pode ser:

Instruo de transferncia de dados envolvendo a memria


principal (Leitura ou escrita na memria):

Neste caso a primeira coisa a ser feita calcular as


posies de memria a serem acessadas, que podem
estar direta ou indiretamente indicados no corpo da
instruo. Em ambos os casos a unidade de controle
que calcula e/ou define o endereo da posio de
memria a ser acessado.

O endereo calculado ento armazenado no


registrador MAR, e deste inserido no barramento de
endereos do sistema juntamente com os sinais de
controle que indicam que uma operao de leitura
ou escrita de memria.

Sendo uma operao de leitura, em resposta aos


sinais de controle inseridos no barramento do
sistema, a memria fornece no barramento de dados
do sistema o contedo da posio de memria
acessada. Ao perceber que o dado est disponvel no
barramento, a unidade de controle providencia que
o mesmo seja armazenado no registrador MBR para
que fique disponvel para ser processado.

Sendo uma operao de escrita, a unidade de


controle providencia que o dado a ser escrito seja
primeiramente armazena no registrador MBR, o qual
fica ento disponvel no barramento de dados do
sistema para ser gravado pela memria principal.

28
Infraestrutura de Hardware

Instruo de transferncia de dados envolvendo dispositivos


de entrada e sada (Instruo de Escrita ou Leitura em
algum dispositivo de Entrada e Sada, tambm conhecida
como operao de I/O)

Da mesma forma que na operao de transferncia


de dados envolvendo a memria principal, neste caso
a primeira coisa a ser feita calcular o endereo do
dispositivo a ser acessado, o qual pode estar direta
ou indiretamente indicado no corpo da instruo. Em
ambos os casos a unidade de controle calcula e/ou
define o endereo do dispositivo a ser acessado.

O endereo calculado ento armazenado no


registrador I/O AR, e deste inserido no barramento
de endereos do sistema juntamente com os sinais de
controle que indicam que uma operao de leitura
ou escrita de I/O.

Sendo uma operao de leitura, em resposta aos


sinais de controle inseridos no barramento do
sistema, o dispositivo acessado devolve o dado
requerido diretamente no barramento de dados do
sistema. A unidade de controle ao perceber que o
dado est disponvel se encarrega de armazen-lo
no registrador I/O BR ficando ento o dado disponvel
para ser processado.

Sendo uma operao de escrita, a unidade de controle


se encarrega de armazenar o dado a ser escrito no
registrador I/O BR aps o que este fica disponvel
no barramento de dados do sistema para que fique
acessvel ao dispositivo endereado.

Instrues Lgicas e Aritmticas:

A unidade de controle programa a Unidade Lgica e


Aritmtica com a operao a ser efetuada.

A unidade de controle identifica o tipo e a localizao


dos operandos.

Se estes estiverem armazenados na memria, a


unidade de controle calcula o endereo das posies
de memria a serem acessados, colocando um a um

29
Infraestrutura de Hardware

os endereos no registrador MAR a partir do que estes


so conectados ao barramento de endereo do sistema
juntamente com os sinais de controle que indicam que
uma operao de leitura de memria. Em resposta
aos sinais de controle inseridos no barramento do
sistema, a memria insere no barramento de dados
do sistema, um a um, todos os dados armazenados
nas posies indicadas os quais so carregados no
registrador MBR e s ento podem ser lidos pelo
processador para carga nos registradores de trabalho
da Unidade Lgica e Aritmtica.

Se estiverem armazenados nos registradores, a


unidade de controle gera os sinais de controle
necessrios para acess-los, conectando-os
diretamente entrada da Unidade Lgica e
Aritmtica.

A Unidade Lgica e Aritmtica efetua a operao


programada, deixando o resultado disponvel sada
do seu registrador de trabalho.

A unidade de controle identifica o tipo e a localizao


dos operandos que recebero os resultados da
operao. Observe que a quantidade de operandos
envolvidos depende da operao em curso.

Se estes forem ser armazenados na memria


principal, primeiramente a unidade de controle calcula
e/ou define os endereos das posies de memria
a serem acessadas, colocando um a um os dados a
serem escritos no registrador MBR e o endereo da
posio de memria onde os mesmos devero ser
escritos no registrador MAR, ficando desta forma
os mesmos disponveis no barramento de dados e
endereo do sistema juntamente com os sinais de
controle que indicam que uma operao de escrita
de memria. Em resposta a memria armazena o
contedo fornecido nas posies de memria que
forem indicadas.

Se estes forem ser armazenados em registradores,


a unidade de controle gera os sinais de controle

30
Infraestrutura de Hardware

necessrios para acess-los, conectando-os


diretamente sada da Unidade Lgica e Aritmtica,
juntamente com os sinais que indicam que uma
operao de escrita em registradores.

Instrues de Desvio

Caso seja uma instruo de chamada de desvio


com retorno programado, ou seja, uma chamada de
sub-rotina, a unidade de controle primeiramente
armazena o contedo do registrador Contador de
Programa (PC) em algum lugar para ser utilizado
posteriormente como endereo de retorno, calcula o
endereo para onde o programa dever ser desviado
e carrega o registrador Contador de Programa (PC)
com o novo endereo.

Caso seja uma instruo de chamada de desvio sem


retorno, a unidade de controle simplesmente calcula o
endereo para onde o programa dever ser desviado
e carrega o registrador Contador de Programa (PC)
com o novo endereo.

Caso seja uma instruo de retorno programado, ou


seja, um retorno de uma sub-rotina, a unidade de
controle carrega o registrador Contador de Programa
(PC) com o endereo anteriormente armazenado.

Como podemos observar, ainda que muito superficialmente


nestas pequenas descries, o processo de buscar, decodificar e
executar uma instruo no uma tarefa simples sendo em parte o
grande diferencial entre um processador de alto desempenho e um
processador mais simples.

Bem, agora que conhecemos um pouco como e como funciona


a arquitetura interna de um processador em geral, podemos continuar
com o nosso estudo sobre o MIPS.

O processador MIPS

Fruto de um projeto de pesquisa arrojado de um grupo de


pesquisadores liderados pelos cientistas David Patterson e Carlo
Squin, o processador MIPS dominou por muitos anos o mercado de
equipamentos eletrnicos em geral. Para se ter uma ideia, s em 1997

31
Infraestrutura de Hardware

as vendas deste processador superaram a casa dos 19 milhes de


unidades. Em 2007, com mais de 250 milhes de clientes ao redor do
mundo, os processadores MIPS dominavam absolutos o mercado de
equipamento de entretenimento digital. Atualmente, os processadores
MIPS ainda detm uma boa fatia do mercado de equipamentos
eletrnicos, estando presentes em equipamentos como:

Wireless Access Point

Mquina Fotogrfica Digital

Console de Jogos Eletrnicos

Nintendo 64

Sony Playstation e Sony Playstation II

Sony PSP

Computadores de grande porte

Arquitetura Interna do MIPS

Diferentemente dos demais processadores existentes poca do


seu lanamento, o processador MIPS foi projetado de forma a ter uma
arquitetura simples e regular, com um pequeno nmero de instrues
que pudessem ser decodificadas e executadas em apenas um ciclo
de relgio.

Isto causou uma certa estranheza e descrdito por parte dos demais
fabricantes de processadores, os quais construam processadores
extremamente complexos, que ao contrrio do MIPS possuam
centenas de instrues, algumas das quais tidas como extremamente
flexveis e poderosas e que levavam entre dezenas e centenas de
ciclos de relgio para serem decodificadas e executadas.

De um modo geral, o objetivo destes fabricantes era prover a


linguagem de mquina dos seus processadores com instrues cada
vez mais prximas das utilizadas nas linguagens de alto-nvel, a fim de
poder reduzir o tamanho dos programas e assim tornar sua execuo
cada vez mais rpida e eficiente.

Entretanto, devido s limitaes de tecnologia existentes poca,


os chips ainda eram relativamente pequenos se comparados com
os produzidos hoje em dia, possuindo apenas algumas centenas
de milhares de transistores, muitas destas instrues no podiam

32
Infraestrutura de Hardware

ser implementadas diretamente em hardware, tendo assim que ser


implementadas atravs de um artifcio que ficou conhecido como
microcdigo.

Um microcdigo nada mais era que uma referncia a um pequeno


trecho de cdigo que ficava armazenado em uma memria especial
dentro do prprio processador. Como as instrues deste trecho de
cdigo ficavam armazenadas dentro do prprio processador, elas
podiam ser acessadas muito mais rapidamente que o restante das
instrues que ficavam armazenadas na memria principal. Esta
diferena na velocidade de acesso permitia que um programa que
utilizasse instrues baseadas em microcdigo executasse muito
mais rapidamente que um programa que no as utilizasse.

Ou seja, sempre que um fabricante de processador percebia que


uma determinada operao mais complexa estava sendo utilizada
com grande frequncia pelos programadores em geral, a qual
normalmente era implementada atravs de uma sub-rotina, utilizando
vrias instrues bsicas da linguagem de mquina do processador,
estes criavam um novo microcdigo com este conjunto de instrues e
definiam uma nova instruo na linguagem de mquina do processador
para lhe fazer referncia.

Desta forma, devido a sua praticidade e pelos resultados


alcanados, o uso dos microcdigos tinha se tornado a melhor soluo
para aumentar o desempenho e a complexidade dos processadores.

Os processadores MIPS vinham portanto quebrar estes


paradigmas, eliminando por completo o uso dos microcdigos e
reduzindo drasticamente o nmero de instrues da linguagem de
mquina do processador, dando assim incio a uma nova gerao
de processadores que ficou conhecida como processadores RISC,
acrnimo da lngua inglesa que traduzido ao p da letra significa
Processador com Conjunto Reduzido de Instrues, conforme
abordamos no captulo 1 deste volume. Os demais processadores,
os que seguiam a abordagem padro, em contrapartida, ficaram
conhecidos como processadores CISC, tambm um acrnimo da
lngua inglesa que traduzido significa Processador com Conjunto de
Instrues Complexo.

O outro diferencial da arquitetura do MIPS, como j citamos, era a


presena de um grande nmero de registradores de propsito geral,
os quais poderiam ser utilizados como espao de memria de acesso

33
Infraestrutura de Hardware

ultrarrpido era um outro ponto. Vale lembrar que um registrador nada


mais que um espao de memria com o tamanho exato da palavra
do processador construdo dentro do prprio processador e ao qual
este tem acesso quase que instantneo, diferentemente da memria
principal a qual construda fora do processador e portanto tem um
acesso bem mais lento.

E, para completar o cenrio, um outro ponto que diferia o


processador MIPS dos demais era a exigncia de que os operandos
para as operaes lgicas e aritmticas estivessem armazenados
exclusivamente em registradores ou diretamente no corpo da instruo.
Com isto os projetistas do MIPS objetivavam reduzir ao mximo o
acesso memria principal e assim permitir que seus programas
pudessem ser executados ainda mais rapidamente. Ou seja, o grande
nmero de registradores tinha um objetivo claro e direto: otimizar uso
da unidade lgica e aritmtica do processador.

Os demais processadores, por outro lado, permitiam que os


operandos estivessem armazenados tanto nos registradores quanto
na memria principal, o que era claramente um dos motivos do seu
baixo desempenho.

Apenas a ttulo de comparao, as Figuras 10 e 11 a seguir


nos trazem o ciclo completo de buscar, decodificar e executar das
instrues lgicas e aritmticas sendo executadas num processador
clssico e no MIPS. Observe que no MIPS como os operandos j
esto armazenados nos registradores, o acesso a memria principal
pode ser reduzido drasticamente, bem como o processo de acesso
aos operandos fica bem simplificado.

Figura 10 Execuo de uma instruo lgica ou aritmtica nos processadores em geral

34
Infraestrutura de Hardware

Figura 11 Execuo de uma instruo lgica ou aritmtica no MIPS

Como voc deve ter percebido, tanto o MIPS quanto os demais


processadores executam basicamente as mesmas aes durante o
processo de buscar, decodificar e executar uma instruo. Ou seja, o
que muda como estas aes so implementadas pela arquitetura
interna do processador.

Bem, olhando agora para a arquitetura do MIPS em comparao


com uma arquitetura clssica da poca, pode at fazer algum
sentido imaginar que este pudesse ter at um bom desempenho,
mas para os fabricantes de processadores de poca, isto no fazia
nenhum sentido. Como diziam eles, um processador com to poucas
instrues e ainda por cima com instrues to simples, que no faz
uso de microcdigos e que s permite operaes lgicas e aritmticas
com operandos j armazenados em registradores poderia ter um bom
desempenho? Um programa escrito para este processador deve ficar
enorme... Como ento este processador pode ter um desempenho
superior aos demais?

A resposta a esta pergunta ao mesmo tempo simples e


complexa.

O grande desempenho do MIPS adivinha de algumas decises de


projeto muito bem arquitetadas, que resultaram em um conjunto de
instrues simples e regular, o que permitiu implementar um esquema
de pipeline extremamente eficiente, de tal forma que toda e qualquer
instruo podia ser decodificada e executada em um nico ciclo de
clock (conforme estudamos no captulo 1), e um grande nmero de
registradores de propsito gerais totalmente conectados Unidade

35
Infraestrutura de Hardware

Lgica e Aritmtica, de tal modo que qualquer destes registradores


pudesse ser utilizado tanto como operando como destino das
operaes lgicas e aritmticas.

Isto se comparado estratgia dos processadores CISC, que


levavam dezenas e at centenas de ciclos de clock para executar uma
nica instruo e que permitiam que os operandos das operaes
lgicas e aritmticas estivessem armazenados diretamente na
memria principal, fazia com que, mesmo seus programas sendo
duas ou at trs vezes maiores que os demais, executassem muito
mais rapidamente que seus equivalentes em um processador CISC.

Muito interessante, no mesmo? Mas que tal agora darmos


uma olhada mais de perto nas instrues da linguagem de mquina
do MIPS para em seguida vermos como estas instrues eram
decodificadas e executas em hardware?

Linguagem de Mquina do MIPS

Conforme dissemos, devido aos princpios de simplicidade e


regularidade, todas as instrues do MIPS podem ser divididas em
apenas trs tipos bsicos, descritos a seguir:

Instrues Tipo R: Instrues em que todos os operandos se


encontram armazenados em registradores.

Instrues Tipo I: Instrues onde um dos operandos fornecido


na forma de um valor imediato dentro da prpria instruo e os
Saiba Mais demais encontram-se armazenados em registradores.

JUMP uma Instrues Tipo J: Este formato de Instruo utilizado


palavra inglesa exclusivamente para representar instrues de desvio,
que pode ser
traduzida como conhecidas como instrues Jump.
salto ou pulo.
As figuras a seguir (12, 13 e 14) demonstram como esto divididos
os 32 bits da palavra do processador para cada uma destas classes
de instrues. Mais tarde veremos como esta organizao permitiu
uma decodificao rpida e direta destas instrues.

36
Infraestrutura de Hardware

Figura 12 Formato interno das instrues tipo R

Figura 13 Formato interno das instrues tipo I

Figura 14 Formato interno das instrues tipo J

Para que possamos entender como os princpios de simplicidade e


regularidade esto presentes no formato interno de cada uma destas
classes de instrues, vamos primeiramente analisar o significado de
cada um dos campos assinalados.

Voc observou que todas as classes de instrues possuem um


campo op com 6 bits. neste campo que definida a classe e o

37
Infraestrutura de Hardware

tipo de instruo representado. Se, por um lado o pequeno nmero


bits deste campo limita em 64 o nmero mximo de classes ou tipos
de instrues disponveis nos processadores MIPS, por outro lado a
sua decodificao pode ser feita quase que instantaneamente com o
auxlio de uma tabela ou atravs de um circuito lgico combinacional
extremamente simples.

Como voc deve ter notado, o contedo dos outros campos


representam os operandos e outras informaes necessrias
execuo da operao representada. Veja inclusive que os nomes
e funes dos campos so praticamente os mesmos em todas as
classes de instrues.

Continuando nossa anlise, vamos fazer uma anlise mais


detalhada no formato das instrues tipo R.

Instrues Tipo R

Como dissemos, as instrues tipo R so aquelas em que todos


os operandos se encontram armazenados em registradores. Como
existem diversas instrues deste tipo nos processadores MIPS,
existe um segundo campo nestas instrues, o campo func, o qual
determina qual destas instrues deve ser executada. Ou seja, quando
a unidade de controle recebe uma instruo para ser decodificada e,
pelo valor armazenado no campo op verifica que uma instruo do
tipo R, este utiliza o valor armazenado no campo func para determinar
qual a instruo dever ser executada.

Determinada a instruo a ser executada, a unidade de controle


utiliza os campos rs, rt e rd para acessar o contedo dos dois
operandos, e para enderear o registrador de destino onde ser
armazenado o resultado obtido.

Observe que os campos rs, rt e rd possuem 5 bits cada, o que


suficiente para armazenar o endereo de todos os 32 registradores
presentes no MIPS.

Vejamos agora o que muda nas instrues tipo I.

Instrues Tipo I

A decodificao das instrues tipo I bem parecida com o que


acabamos de ver. Aps verificar pelo contedo do campo op que trata-

38
Infraestrutura de Hardware

se de um instruo tipo I, uma vez que esta no possui o campo func,


a unidade de controle pode passar a acessar os operandos, dos quais
um se encontra no registrador apontado pelo contedo do campo rs e
o outro no campo imediato. O resultado obtido, quando necessrio,
armazenado no registrador apontado pelo campo rt.

Instrues Tipo J

Por fim, a decodificao das instrues tipo J so ainda mais


simples que as duas primeiras apresentadas. Uma vez verificado
que trata-se de uma instruo desta classe, a unidade de controle
simplesmente obtm o operando do campo endereo o qual aplicado
a ULA para calcular o endereo para o qual a execuo do programa
ser desviada.

Muito simples, no mesmo?

Observe que, tantos para as operaes tipo I quanto para as


do tipo J, o processo de decodificao das instrues se resumiu
verificao do contedo do campo op. E, mesmo no caso das
instrues tipo R, as quais possuem o campo func para determinar
qual a instruo dentro da classe ser executada, ambos os campos
podem ser decodificados simultaneamente, o que simplifica e agiliza
o processo de decodificao.

Bem, agora que j sabemos, em linhas gerais, como as trs


classes de instrues do MIPS esto internamente organizadas e
como so decodificadas, vamos conhecer algumas destas instrues
da linguagem de mquina do MIPS.

Instrues do MIPS

Do ponto de vista de funcionalidade, as instrues da linguagem


de montagem do MIPS podem ser divididas em:

Instrues Lgicas e Aritmticas

Instrues de transferncia de dados

Instrues de tomada de deciso

Instrues de desvio

Infelizmente, devido o pouco tempo que dispomos, veremos


apenas algumas instrues de cada uma das classes apresentadas.

39
Infraestrutura de Hardware

Veremos apenas o suficiente para que possamos entender na prtica


o funcionamento interno do processador. Aos que quiserem se
aprofundar no assunto, recomendamos a leitura do livro Organizao
e Projeto de Computadores constante em nossa bibliografia.

Vamos comear pelas operaes lgicas e aritmticas.

Instrues Lgicas e Aritmticas

Como dissemos a princpio, to importante quanto conhecer as


instrues de uma determinada linguagem saber como utiliz-las
corretamente. Em nosso caso isto significa conhecer os mnemnicos,
sua funcionalidade e a sua sintaxe, ou seja, a maneira correta de
escrever um comando utilizando uma determinada instruo.

Para nossa felicidade, todas as instrues Lgicas e Aritmticas


possuem uma mesma sintaxe. Todas devem ser escritas da seguinte
maneira:

Instruo RegistradorDeDestino, PrimeiroOperando, SegundoOperando

Vamos analisar o formato destas instrues:

A primeira coisa que temos que ter em mente que, conforme


dissemos, o processador MIPS s permite que operaes
lgicas e aritmticas sejam operadas sobre operandos j
armazenados em registradores ou entre um valor armazenado
em um registrador em um valor que j esteja presente no corpo
da instruo, chamado de valor imediato. Temos que lembrar
tambm que o resultado de toda e qualquer operao lgicas
ou aritmtica do MIPS deve ser automaticamente armazenado
em um registrador, veja o detalhe na sada da ULA na Figura 3.
Por este motivo, a sintaxe das instrues lgicas e aritmticas
exige a referncia a trs operandos na seguinte ordem:

O registrador de destino, ou seja, aquele registrador que


receber o resultado da operao,

O primeiro operando, que obrigatoriamente ser um


registrador,

O segundo operando, que tanto poder ser um registrador


ou um valor numrico qualquer. Observe que se o segundo
operando for um registrador teremos uma instruo tipo R

40
Infraestrutura de Hardware

e se este for um valor numrico teremos uma instruo tipo


I.

A Tabela a seguir nos traz algum exemplos de instrues Lgicas


e Aritmticas. Nestes exemplos, os parmetros rd, rs e rt indicam os
campos de bits da instruo em linguagem de mquina. No uso da
instruo, em linguagem de montagem os mesmos sero substitudos
por registradores do banco de registradores do MIPS, conforme
podemos ver na coluna Exemplo.

Tabela 2 Exemplos de Instrues Lgicas e Aritmticas

Instruo Formato Tipo Operao Exemplo


Execuo

Add Add rd, rs, rt R R[rd] = R[rs] Add R3, R4, R5


+ R[rt] R3=R4 + R5

Addi Add rt, rs, #im I R[rt] = R[rs] + Addi R3, R3, 23
#im R3=R3 + 23

Sub Sub rd, rs, rt R R[rd] = R[rs] - Sub R7, R2, R9


R[rt] R7=R2 - R9

And And rd, rs, rt R R[rd] = R[rs] Add R9, R6, R3


& R[rt] R9=R6 & R3

Andi Andi rt, rs, #im I R[rd] = R[rs] Andi R3, R4, 25
& #im R3=R4 & 25

Or Or rd, rs, rt R R[rd] = R[rs] | Or R2, R5, R7


R[rt] R2=R5 | R7

Ori Ori rt, rs, #im I R[rd] = R[rs] | Ori R4, R2, 33
#im R4=R2 | 33

Muito simples, no mesmo?

Vamos conhecer agora as instrues de transferncia de dados.

Instrues de Transferncia de Dados

Esta classe de instrues destinada exclusivamente


transferncia dos dados da memria principal para o banco de
registradores e do banco de registradores para a memria principal.

No MIPS todo o acesso aos dados armazenados na memria


principal feito de maneira indireta, ou seja, o endereo de memria
a ser acessado deve ser calculado somando-se o contedo de um
registrador com um valor presente no campo imediato da instruo.

41
Infraestrutura de Hardware

Esta estratgia se fez necessria para manter todas as instrues


com 32 bits. Se fosse definida uma instruo que permitisse o acesso
direto aos dados, com o endereo de acesso presente no corpo da
instruo, fatalmente esta instruo iria ter mais de 32 bits e sairia
fora do padro estabelecido.

A seguir temos alguns exemplos desta classe de instrues.

Tabela 3 Exemplos de Instrues de Transferncia da Dados

Instruo Formato Tipo Operao Exemplo Execuo

Lw Lw rt, I R[rt] = M[R[rs]+Im] Lw R3, 3(R5)


#im(rs) R3=M[R5+3]

Sw Sw rt, I M[R[rs]+Im]=R[rt] Sw R3, 3(R5)


#im(rs) M[R5+3]=R3

Vamos analisar primeiramente a instruo Lw.

A instruo Lw carrega o registrador indicado no campo rt com


o contedo da posio de memria indicada pelo contedo do
registrador indicado no campo rs somado ao valor do campo #im.
Parece um pouco confuso, no mesmo? Mas vejamos os exemplos
a seguir, e eu creio que tudo ficar mais claro.

Na Figura 15 a seguir podemos ver um exemplo do que ocorre


durante a execuo da operao Sw. Como podemos ver, neste
exemplo o campo rt foi substitudo pelo registrador R3, o campo rs
pelo registrador R5 e o campo #im tem o valor 8. Ao somarmos o
contedo do registrador R5 com o valor do campo imediato obtemos
10+8=18, que o endereo de memria onde ser gravado o contedo
do registrador R3.

Figura 15 - Exemplo de operao Sw

Na Figura 16 a seguir temos um outro exemplo de execuo da

42
Infraestrutura de Hardware

operao Sw. Desta vez o campo rt foi substitudo pelo registrador


R7, o campo rs pelo registrador R2 e o campo #im pelo valor 2. Ao
somarmos o contedo do registrador R3 com 2 obtemos: 25+3 = 28,
que o endereo de memria onde o contedo do registrador R7 ser
armazenado.

Figura 16 - Exemplo de operao Sw

Muito simples, no mesmo?

Para concluir, vejamos agora alguns exemplos de uso e execuo


da operao Lw.

A Figura 17, a seguir, nos traz um exemplo de utilizao da instruo


Lw onde rt foi substitudo por R1, rs por R8 e #im por 3. Observe
que a operao Lw funciona de maneira inversa operao Sw, em
vez de salvar o contedo do registrador na memria ela carrega o
registrador com o contedo armazenado na posio de memria que
for acessada. Nesta caso, como R8 tem o valor 35 e o campo #im tem
o valor 3 estarmos acessando o endereo 38, o qual tem o valor 97
armazenado. Com a execuo da operao uma cpia deste valor
ento carregado no registrador R1. O exemplo da Figura 18 anlogo
a esse, tente entender por voc mesmo.

Agora, para terminar, s uma perguntinha. Do ponto de vista


de formato interno, o que voc acha, a que classe de instrues
pertencem as instrues Lw e Sw? A classe R, I ou J?

Figura 17 - Exemplo de execuo da operao Lw

43
Infraestrutura de Hardware

Figura 18 - Exemplo de execuo da operao Lw

Instrues de tomada de deciso

O MIPS possui dois tipos de instrues de tomada de deciso, as


que so conhecidas como instrues de desvio condicional, que so
aquelas que podem desviar a execuo do programa para um trecho
do cdigo ou outro a partir da avaliao de alguma inferncia lgica,
e as instrues que carregam ou no um registrador com um valor
pr-determinado tambm a partir da avaliao de alguma inferncia
lgica. A tabela Tabela 4, a seguir, nos traz alguns exemplos desta
classe de instrues.

Tabela 4 Exemplos de instrues de tomada de deciso

Instruo Formato Tipo Operao Exemplo Execuo

Beq Beq rs, rt, I Se rs == rt, desvia Beq R3, R5, 25 Se


#im para a instruo R3 == R5 desvia para
em #im a instruo 25

Benq Bneq rs, I Se rs != rt, desvia Bneq R3, R5, 29 Se


rt, #im para a instruo R3 != R5 desvia para a
em #im instruo 29

Slt Slt rd, rs, R Se rs < rt, carrega Slt R3,R4,R5 Se


rt rd com 1, caso o contedo de R4 for
contrario carrega menor que o contedo
rd com 0 de R5, carrega R3
com 1, caso contrrio
carrega R3 com 0

Slti Slti rt, rs, I Se rs < rt, carrega Slt R3,R4,34 Se o


#im rd com 1, caso contedo de R4 for
contrario carrega menor que 34, carrega
rd com 0 R3 com 1, caso
contrrio carrega R3
com 0

Normalmente estas instrues so utilizadas para controlar o


fluxo de execuo de um programa, exatamente como ocorre nas

44
Infraestrutura de Hardware

linguagens de alto nvel com as instrues if, while e for. Veja na


Figura 19 a seguir um exemplo de como ficaria a traduo de um
trecho de cdigo utilizando uma instruo if, escrito na linguagem C,
quando traduzido para a linguagem de montagem do MIPS.

Figura 19 - Exemplo de trecho de cdigo utilizando a instruo if convertido para a


linguagem de montagem do MIPS

Eu sei que o trecho de cdigo em linguagem de montagem pode


no ter ficado to claro para alguns, mas o ponto mais importante a
destacar a utilizao da instruo Bneq. Observe que a depender
Saiba Mais
do seu resultado o programa tomar um fluxo ou outro, ou seja, se o
contedo de R3 for igual ao contedo de R4 o programa continuar Uma Label um
nome que se
o seu fluxo normal, caso contrrio o programa ser desviado para o insere no inicio
trecho indicado com a Label Else. de uma linha de
cdigo de um
programa escrito
A Figura 20 a seguir nos traz mais um exemplo. Neste exemplo em linguagem
podemos observar o uso das instrues Beq e Slt juntas para descrever de mquina
para poder
a funcionalidade de uma instruo if um pouco mais elaborada. referenci-la mais
tarde. Durante
Observe que primeiro foi utilizada a instruo Slt para verificar se o o processo de
contedo de R3 era menor que o contedo de R4, sendo o resultado montagem todas
as Labels so
desta comparao armazenado em R1. Em seguida utilizou-se a substitudas pelos
endereos de
instruo Beq para verificar o resultado da comparao anterior e, a memria onde o
depender do resultado obtido, desviar ou no o fluxo de execuo do referido trecho
de cdigo ficou
programa. armazenado.

Muito engenhoso, no mesmo? Ainda bem que os compiladores


se encarregam de fazer estas converses entre as linguagens de alto
nvel e a linguagem de montagem para ns.

Figura 20 - Exemplo de trecho de cdigo utilizando a instruo Slt

45
Infraestrutura de Hardware

Instrues de desvio

Em todos os tipos de processadores existem pelo menos dois


tipos de instrues de desvio, as instrues de desvio condicional, as
quais ns j fomos apresentados quando estudamos as instrues de
tomada de deciso, e as instrues de desvio incondicional, as quais
iremos estudar agora.

No Mips existem trs tipos de instrues de desvio incondicional,


conforme podemos ver na Tabela 5 a seguir.

Tabela 5 Instrues de desvio incondicional

Instruo Formato Tipo Operao Exemplo Execuo

Jr J rs I PC = rs J R31 PC = R31

J J J PC = endereo * 4 J 25 PC = 100
endereo

Jal Jal J R31=PC+4, PC = Jal 25 R31=PC,


endereo endereo *4 PC=100

A primeira instruo a instruo Jr, que significa Jumper para


registrador. Esta instruo permite desviar a execuo do programa
do endereo que est programado no PC para um outro endereo
qualquer que j esteja armazenado em algum outro registrador. Por
simples que possa parecer, esta instruo muito til e normalmente
utilizada para prover o retorno de sub-rotinas.

A instruo seguinte a instruo J, que significa simplesmente


Jumper. Esta instruo permite desviar a execuo do programa
do endereo que est programado no PC para um outro que esteja
indicado no campo #im.

Aqui precisamos fazer um parntese em nosso estudo para uma


observao muito importante. Como voc deve ter observado pelo
formato das instrues do tipo J, conforme apresentado na Figura 14,
a fim de manter o padro adotado em todas as instrues do MIPS de
reservar 6 bits para o campo op, o campo endereo possui apenas
26 bits, o que no seria suficiente para preencher o registrador PC, o
qual possui 32 bits. Desta forma no seria possvel acessar todas as
posies de memria do processador com as instrues da classe J.

A soluo a este impasse se deu de uma maneira simples mas no

46
Infraestrutura de Hardware

menos engenhosa que as demais solues de engenharia adotadas


no MIPS.

Como todos sabemos a palavra do processador MIPS possui 32


bits, ou seja 4 bytes, e a memria principal vem com um barramento
de endereos que permite que esta seja acessada byte a byte.
Observe as Figuras 21, 22 e 23 a seguir. Verifique que se quisermos
referenciar as posies de memria palavra por palavra em vez de
byte a byte poderamos reduzir 2 bits em nossa referncia, uma vez
que os dois bits menos significativo seriam sempre iguais a zero.

Figura 21 - Diferena entre o endereamento por bytes e o endereamento por palavras

Figura 22 - Endereo real de cada palavra de 32 bits quando armazenada na memria

Figura 23 - Endereo em binrio para as palavra de 32 bits quando armazenadas na


memria

Desta forma, a fim de aumentar o alcance das instrues J e


Jal, ficou definido que o campo endereo no conteria o endereo
da instruo para onde o programa seria desviado, mas sim uma
referncia palavra de 32 bits onde a instruo estivesse armazenada.
Com isto era como se o campo endereo tivesse dois bits a mais,
passando de 26 para 28 bits. Observe a Figura 24 a seguir, nela temos
47
Infraestrutura de Hardware

um exemplo prtico de como se d a converso entre a referncia, a


palavra de memria e o seu endereo real.

Figura 24 - Converso entre a referncia a palavra de memria a ser acessada e o endereo


de memria onde ela se encontra, em binrio

Ainda que muito criativa, esta estratgia resolve s em parte


o nosso problema, uma vez que ainda ficariam faltando quatro bits
para completar os trinta e dois necessrios para carregar o PC numa
operao de desvio. Observe que se no preenchermos os trinta e
dois bits do PC na hora em que formos executar um desvio podemos
cair em situaes inusitadas como a que pode ser vista na Figura 25 a
seguir. Nela temos uma possvel configurao do uso da memria de
um computador onde quatro programas esto em execuo. Observe
que cada programa ocupa uma rea restrita da memria a qual no
conhecida no momento da compilao do programa. Veja que se no
for possvel indicar claramente o endereo da posio de memria no
momento de executar um desvio, um programa pode acabar sendo
desviado para dentro da rea de memria do outro.

Figura 25 - Falha na execuo do desvio devido a falta dos 4 bits mais significativos durante
a carga do PC

A soluo para situaes como esta foi tambm extremamente


simples e funcional, e consiste em manter inalterados os 4 bits mais
significativos do PC durante as operaes de desvio e sobreescrever
os demais com o endereo da palavra de memoria que se deseja

48
Infraestrutura de Hardware

acessar. Com isto todos os desvios foram transformados em desvios


relativos, ou seja, os desvios so sempre efetuados tomando em
conta o endereo atual do programa em execuo. Veja como ficaria
a execuo de uma instruo de desvio com o artifcio do desvio
relativo ao valor do PC na Figura 26 a seguir. Observe que calcula-
se o endereo de memria da palavra a ser acessada, o que como
sabemos resulta em uma referncia de 28 bits, e simplesmente
sobrepe-se estes 28 bits aos 28 bits menos significativos do PC,
deixando os 4 bits mais significativos inalterados.

Figura 26 - Exemplo de execuo da instruo J com o artifcio de calcular o desvio relativo


ao valor do PC

Esta estratgia seguida tanto pelas instrues de desvio


condicional como pelas de desvio incondicional, com exceo da
instruo Jr que como j foi explicado no necessita de tais artifcios.

Por fim, chegamos ltima instruo de desvio incondicional, a


instruo Jal, cujo mnemnico um acrnimo da expresso inglesa
Jump and Link. Esta instruo foi especialmente projetada para
executar desvios com retorno programado, ou seja, para ser utilizada
na chamadas a sub-rotinas. A sua execuo em tudo semelhante a
instruo J que acabamos de estudar, a nica diferena que antes de
se executar a carga do PC com o endereo de desvio o seu contedo
copiado para o registrador R31 para ser utilizado posteriormente
como endereo de retorno da sub-rotina. Veja um exemplo na Figura
27 a seguir.

Figura 27 - Exemplo de chamada de sub-rotina com a instruo Jal e retorno com a


instruo Jr

49
Infraestrutura de Hardware

Muito interessante, no mesmo?

Bem, agora para terminar nosso estudo sobre a arquitetura


interna do MIPS que tal vermos como algumas destas instrues
so implementadas em linguagem de mquina e como elas so
executadas diretamente em hardware?

A Tabela 6, a seguir, nos traz algumas instrues da linguagem


de montagem do MIPS com os seus respectivos formato interno,
descrio simblica da sua operao e os valores para o campo op e
para o campo func, quando aplicvel.

Tabela 6 Exemplo de algumas instrues e os seus respectivos valores para os


campos op e func

Instruo Formato Operao Op./Func.

Add R R[rd]=R[rs]+R[rt] 0/20

Addi I R[rt]=R[rs]+Im 8

And R R[rd]=R[rs] & R[rt] 0/24

Andi I R[rt]=R[rs] & Im C

Beq I Desvia p/ a instruo indicada se 4


R[rs]==R[rt]

Bneq I Desvia p/ instruo indicada se 5


R[rs]!=R[rt]

J J Desvia para a instruo indicada 2

Jal J Desvia para a instruo indicada e salva 3


retorno em R31

Lw I R[rt]=M[R[rs]+Im] 23

Sw I M[R[rs]+Im]=R[rt] 2b

Sub R R[rd]=R[rs]-R[rt] 0/22

Vamos comear por um exemplo bem simples. Vamos comear


com a instrues Add. Observe a Figura 28 a seguir. Verifique que
para converter uma instruo da linguagem de montagem para a

50
Infraestrutura de Hardware

linguagem de mquina primeiramente precisamos identificar a classe


da instruo para poder fazer o preenchimento correto dos campos
op e func e verificar o seu formato interno, conforme vimos nas
Figuras 12, 13 e 14. Neste caso, tomando como referncia os valores
da Tabela 6 encontramos que op=0x00 e func = 0x20. Em seguida,
baseado no formato da instruo, podemos fazer o preenchimento
dos demais campos. O campo shant no utilizado por nenhuma das
instrues que estudamos, devendo ser preenchido sempre com 0.
Observe que primeiramente preenchemos os campos com os valores
em hexadecimal para em seguida convert-los para binrio e s ento
formarmos a palavra binria de 32 bits que representa a instruo na
linguagem de mquina.

Figura 28 - Exemplo de converso da instruo Add para a linguagem de mquina do MIPS

Muito simples, no mesmo?

Vamos agora pegar mais dois exemplos, s que desta vez de


instrues da classe I. Vamos pegar as instrues Addi e Beq. A Figura
29 nos mostra como ficaria a converso destas duas instrues para
a linguagem de maquina do MIPS. Muito simples, no mesmo?

51
Infraestrutura de Hardware

Figura 29 - Exemplo de converso das intrues Addi e Beq para a linguagem de mquina
do MIPS

Bem, eu creio que estes exemplos so suficientes para que


possamos ver que o processo de converso de uma instruo
da linguagem de montagem para a linguagem de mquina
extremamente simples e direto.

Agora, para finalizar, vem a melhor parte, vamos dar uma olhadinha
em como o processador decodifica e executa estas instrues
diretamente em hardware.

Decodificao e execuo das instrues

Antes que uma instruo possa ser executada ela precisa

52
Infraestrutura de Hardware

primeiramente ser decodificada pela unidade de controle do


processador.

O processo de decodificao das instrues da linguagem de


mquina do MIPS extremamente simples e pode ser feito da
seguinte forma:

Separe os 6 bits mais significativos da palavra binria para


identificar o valor do campo op.

Baseado no valor do campo op, identifique a classe da instruo,


se esta da classe R, I ou J.

Sendo da classe R, separe os 6 bits menos significativo para


identificar o valor do campo func.

A partir dos valores dos campos op e func e, baseado na


tabela que associa estes valores s instrues do processador,
identifique por fim a instruo a ser executada.

Identificada a instruo e o seu formato interno, carregue os


seus operandos e programe a Unidade Lgica e Aritmtica com
a operao a ser efetuada.

Vejamos um exemplo na Figura 30, a seguir. Todas as demais


instrues so decodificadas exatamente da mesma forma. O que
voc achou? Muito fcil, no mesmo?

Figura 30 - Exemplo de decodificao da instruo Add

53
Infraestrutura de Hardware

Bem, agora que j sabemos como as instrues so codificadas


da linguagem de montagem para a linguagem de mquina e como,
uma vez codificadas, estas podem ser decodificadas para que sejam
executadas. Estamos prontos para ver como estas instrues so
executadas em hardware.

Para que possamos entender como se d a execuo das


instrues da linguagem de mquina no hardware interno do MIPS,
precisamos primeiramente conhecer como este hardware est
constitudo. Isto feito analisando o seu diagrama eltrico. Para tanto
vamos comear conhecendo os smbolos utilizados na representao
deste diagrama.

O primeiro componente que vamos conhecer o Mux.

MUX

O nome Mux uma abreviao da palavra Multiplexador. Um


Multiplexador um componente eletrnico que funciona como uma
chave seletora, que permite selecionar entre duas entradas qual ser
conectada sada.

Observe o diagrama de um Multiplexador na Figura 31, a seguir.


Temos uma entrada seletora, indicada com a palavra Select. Duas
entradas, a entrada 0 e a entrada 1, e uma sada indicada com a letra
Y. Quando Select igual a 1, a entrada 1 conectada a sada Y.
Quando Select igual a 0, a entrada 0 conectada a sada Y. Quando
dizemos que uma entrada conectada a sada queremos dizer que a
sada Y assumir o mesmo nvel lgico que estiver aplicado a entrada
selecionada por todo tempo em que esta estiver selecionada. Se
durante este tempo a entrada selecionada mudar o seu nvel lgico,
digamos de 0 para 1, a sada Y acompanhar esta mudana.

Figura 31 - Diagrama eltrico do Mux

54
Infraestrutura de Hardware

Em seguida temos o Somador.

Somador

O somador, como o prprio nome define, efetua uma operao de


adio entre os valores aplicados s suas entradas. Esta operao
segue o que estudamos para nmeros da base Binria utilizando a
representao de complemento a dois. A Figura 32, a seguir, nos traz
o diagrama eltrico do somador. Nele temos apenas as entradas A
e B e a sada indicada como A+B. Tanto as entradas como a sada
esto preparadas para trabalhar com uma palavra binria do tamanho
da palavra do processador, no caso do MIPS 32 bits.

Figura 32 - Diagrama eltrico do somador

Nosso prximo componente a Unidade Lgica e Aritmtica


(ULA).

Unidade Lgica e Aritmtica

A Unidade Lgica e Aritmtica responsvel por efetuar todas as


operaes lgicas e aritmticas existentes em qualquer programa. A
Figura 33, a seguir, nos traz o diagrama eltrico deste componente.

Como podemos observar, a ULA possui uma entrada para indicar


a operao a ser realizada, indicada com o nome Operao, e mais
duas entradas para os operandos, sinalizadas como entradas A e
B. A ULA possui ainda duas sadas. Uma para fornecer o resultado
da operao efetuada e outra para indicar quando o resultado da
operao zero. Tanto as entradas A e B como a sada Resultado
esto preparadas para trabalhar com palavras binrias do tamanho da
palavra do processador, no caso 32 bits. J a entrada Operao, ir

55
Infraestrutura de Hardware

possuir tantos bits quanto forem necessrios para representar todas


as operaes que esta consegue executar. Para as verses mais
simples do processador MIPS, esta entrada pode possuir apenas 3
bits codificados conforme podemos ver na Tabela 7 a seguir.

Figura 33 - Diagrama eltrico da Unidade Lgica e Aritmtica (ULA)

Tabela 7 Codificao das funes da ULA nos trs bits da entrada Operao

Cdigo Funo

000 AND

001 OR

010 Soma

110 Subtrao

111 Compara se A<B

Nosso prximo componente interno do processador o banco de


registradores.

Banco de Registradores

Conforme havamos citado, um registrador nada mais que


um espao de memria de acesso ultra-rpido, dentro do prprio
processador, capaz de armazenar uma palavra do processador, no
caso do MIPS uma palavra com 32 bits.

A fim de ordenar o acesso aos diversos registradores existentes


no processador estes ficam agrupados na forma de um Banco de
Registradores com 32 registradores, conforme podemos ver na Figura
34 a seguir.

56
Infraestrutura de Hardware

Como podemos observar, o banco de registradores possui cinco


entradas e duas sadas assim denominadas:

Dado: Porta de entrada para uma palavra de 32 bits a ser escrita


no registrador apontado pela porta End. Reg. Dest. durante a
ativao do sinal Escrever.

End. Reg. rs: Porta de entrada com 5 bits, utilizada para carregar
o endereo do registrador associado ao registrador rs.

End. Reg. rt: Porta de entrada com 5 bits, utilizada para carregar
o endereo do registrador associado ao registrador rt.

End. Reg. Dest. : Porta de entrada com 5 bits, utilizada para


carregar o endereo do registrador que ser escrito.

Escrever: Porta de entrada de um bit, associada ao sinal que


ativa o processo de escrita no registrador destino.

rs: Porta de sada de 32 bits com o contedo do registrador


associado ao registrador rs

rt: Porta de sada de 32 bits com o contedo do registrador


associado ao registrador rt

Observe que as portas End. Reg. rs, End. Reg. rs e End. Reg. Dest
possuem exatamente 5 bits cada, o que suficiente para enderear
qualquer um dos 32 registradores do Banco de Registradores.

Figura 34 Banco de Registradores

Unidade de Controle

Conforme j dissemos, a Unidade de Controle responsvel por

57
Infraestrutura de Hardware

buscar e decodificar as instrues e, a partir da decodificao destas,


controlar todos os demais componentes internos do processador. A
Figura 35, a seguir, nos traz o smbolo utilizado para representar a
Unidade de Controle no diagrama interno do processador.

Como era de se esperar, esta unidade recebe como entrada os


bits dos campos op e func da instruo em linguagem de mquina
e, a partir do contedo destes campos, gera os seguintes sinais de
saida:

RegDest: Sinal que seleciona a partir de um Mux, que conjunto


de bits da instruo em linguagem de mquina ser utilizado
para enderear o registrador de destino. Assumindo nvel lgico
0 para as instrues tipo R e nvel lgico 1 para as instrues
tipo I, selecionando respectivamente os bits 11-15, registrador
rd, ou 16-20, registrador rt, como endereo do registrador de
destino.

RegWrite: Sinal que ativa a escrita no banco de registradores

AluSrc: Sinal que controla mux que seleciona qual ser o


segundo operando da Unidade Lgica e Aritmtica. O primeiro
operando, como veremos um pouco mais a frente, ser sempre
o contedo do registrador rs. Este sinal assume nvel lgico 0
para as instrues tipo R, indicando que o segundo operando
ser o contedo do registrador rt, e o nvel lgico 1 para
instrues tipo I, indicando que o segundo operando ser o
contedo imediato j presente na instruo.

MemRead: Sinal que ativa a leitura da memria de dados.

MemToReg: Sinal que controla o mux que seleciona o contedo


a ser escrito no banco de registradores. Este sinal assume nvel
lgico 1 quando est sendo executada a instruo lw, indicando
que o dado lido da memria ser escrito em algum registrador,
assumindo nvel lgico 0 para todas as demais instrues,
deixando resultado presente sada da ULA disponvel para
ser escrito no banco de registradores.

Operao: Palavra com 3 bits que indica a operao a ser


efetuada pela ULA.

Branch: Sinal que indica que est em curso uma instruo


de desvio condicional. Mais a frente veremos melhor o seu
funcionamento.

58
Infraestrutura de Hardware

MemWrite: Sinal que ativa a escrita na memria de dados. Este


sinal ativo durante a execuo de instrues de transferncia
de dados do banco de registradores para a memria de dados,
como em instrues instruo sw (store word) por exemplo.

Figura 35 - Diagrama eltrico da Unidade de Controle

Por fim, chegamos aos dois ltimos elementos da arquitetura


interna do MIPS, a Memria de Dados e a Memria de Instrues.
Na verdade, normalmente, existe apenas uma memria principal a
qual armazena tanto os dados quanto as instrues a qual fica fora
do processador. Entretanto, apenas como um recurso didtico, para
facilitar a compreenso do funcionamento interno do processador, no
apenas separamos em Memria de Dados e Memria de Instrues
como as inclumos fazendo parte da arquitetura do processador.

Memria de Dados

A Memria de Dados representa o espao de memria onde esto


armazenados os dados do programa, tanto variveis como constantes.
A Figura 36, a seguir, nos traz o smbolo utilizado para representar a
Memria de Dados na arquitetura interna do MIPS.

Observe que esta contm quatro portas de entradas e uma de


sada assim denominadas:

Endereos: Com 32 bits, corresponde a porta por onde


fornecido o endereo da posio de memria a ser acessada,
tanto em operaes de leitura como de escrita.

Dados: A memria de dados possui duas portas identificadas


como portas de dados. Uma de entrada e uma de sada, ambas
com 32 bits. A porta de escrita corresponde porta por onde
fornecido o dado a ser escrito na memria em operaes

59
Infraestrutura de Hardware

de escrita. A porta de leitura corresponde porta por onde os


dados presentes na memria podem ser lidos em operaes de
leitura.

Escrever: Com 1 bit, corresponde ao sinal que habilita a escrita


na memria.

Ler: Com 1 bit, corresponde ao sinal que habilita a leitura da


memria.

Figura 36 - Diagrama eltrico da memria de dados

Memria de Instrues

A Memria de Instrues representa o espao de memria onde


esto armazenadas as instrues do programa a ser executado. A
Figura 37, a seguir, nos traz o smbolo utilizado para representar a
Memria de Instrues na arquitetura interna do MIPS.

Observe que esta contm apenas uma porta de entrada e uma


porta de sada assim denominadas:

Endereos: Com 32 bits, corresponde a porta por onde


fornecido o endereo da posio de memria a ser acessada.

Instrues: Com 32 bits, corresponde a porta por onde lida a


palavra binria que representa a instruo presente na posio
de memria acessada.

60
Infraestrutura de Hardware

Figura 37 - Diagrama eltrico da memria de instrues

Agora que j conhecemos os smbolos dos principais componentes


que formam a arquitetura interna do MIPS, podemos dar uma olhada
no seu diagrama completo.

Diagrama Interno do MIPS

Na figura Figura 38, a seguir, temos o diagrama interno do


processador. Apesar de este ser um diagrama simplificado,
suficiente para que possamos tem uma ideia do funcionamento do
seu hardware.

Figura 38 Diagrama interno simplificado do processador MIPS

Para facilitar a compreenso do seu funcionamento, vamos analisar


a execuo de algumas instrues diretamente neste hardware,
verificando os valores atribudos a cada um dos sinais internos do
processador para cada uma destas instrues, e suas consequncias

61
Infraestrutura de Hardware

no sistema como um todo.

Vamos comear analisando uma instruo aritmtica do tipo


R. Vamos analisar a instruo Add R3, R4, R4 a qual j teve o seu
formato interno e a sua representao na linguagem de mquina do
MIPS apresentado na Figura 28. Acompanhe pela Figura 39, a seguir,
a execuo desta instruo.

1. O contedo do PC aplicado memria de instrues a fim de


ler a instruo a ser executada.

2. A memria de instrues fornece a instruo armazenada no


endereo indicado. O contedo da instruo dividido em
palavras binrias menores as quais so simultaneamente
aplicadas unidade de controle para decodificao da instruo
e ao banco de registradores para ler os possveis operandos.
Ao mesmo tempo o contedo do PC que foi aplicado memria
de instrues somado a 4 para j preparar para a carga da
prxima instruo.

3. Ao mesmo tempo que o banco de registradores fornece o


contedo dos registradores endereados, a unidade de controle
decodifica a instruo, identificando que uma instruo Add,
e programa todos multiplexadores e a ULA para a execuo
correta da instruo. Observe na figura como os multiplexadores
ficaram configurados. Veja que por se tratar de uma instruo
tipo R o sinal AluSrc foi configurado com nvel lgico 0, o
que permitiu que o contedo dos registradores rs e rt fossem
conectados ULA para serem operados.

4. A ULA executa a instruo programada pela unidade de


controle.

5. O resultado obtido escrito no registrador de destino.

Observe que, por no se tratar de uma instruo de desvio, o sinal


Branch foi configurado com nvel lgico 0, o que, independente do
resultado obtido no sinal Zero, fora o sinal ExecBranch para 0. Como
consequncia o Mux 1 fica configurado para carregar o PC com o
resultado de PC + 4.

Bem, temos que admitir, os engenheiros que projetaram o MIPS


fizeram mesmo um bom trabalho, no mesmo?

62
Infraestrutura de Hardware

Figura 39 - Execuo da instruo Add no Hardware do MIPS

Vamos agora ver outra instruo, desta vez uma instruo tipo I.
S para no ficar muito diferente do que acabamos de ver, vamos
analisar a instruo Addi R3, R4, 0x22. Acompanhe pela Figura 40, a
seguir, a execuo desta instruo no hardware do MIPS.

Como voc pode observar, a execuo das duas instrues so


praticamente idnticas, com uma nica diferena, a programao do
sinal AluSrc que passa de 0 para 1. Com isto o Mux 4 passa a conectar
entrada da ULA o contedo do campo imediato da instruo, bits 0
15, para serem utilizados como segundo operando.

Figura 40 - Execuo da instruo Addi no Hardware do MIPS

63
Infraestrutura de Hardware

Muito interessante, no mesmo?

Vamos agora pegar uma instruo que pode parecer um pouco


mais complicada mas que, como voc poder constatar, tambm
extremamente simples. Vamos analisar a instruo Lw R8, 3(R5).
Acompanhe pela Figura 41, a seguir, o passo a passa da execuo
desta instruo no hardware do MIPS.

1. O contedo do PC aplicado memria de instrues a fim de


ler a instruo a ser executada.

2. A memria de instrues fornece a instruo armazenada no


endereo indicado. O contedo da instruo dividido em
palavras binrias menores as quais so simultaneamente
aplicadas unidade de controle para decodificao da instruo
e ao banco de registradores para ler os possveis operandos.
Ao mesmo tempo o contedo do PC que foi aplicado memria
de instrues somado a 4 para j preparar para a carga da
prxima instruo.

3. Ao mesmo tempo que o banco de registradores fornece o


contedo dos registradores endereados, a unidade de controle
decodifica a instruo, identificando que uma instruo Lw,
e programa todos multiplexadores e a ULA para a execuo
correta da instruo. Observe na figura como os multiplexadores
ficaram configurados. Veja que por se tratar de uma instruo
tipo I o sinal AluSrc foi configurado com nvel lgico 1, o que
ajusta para que sejam operados o registrador rs e o campo
imediato da instruo para serem operandos pela ULA. Um
ponto interessante e sutil a ser observado que a ULA deve
ser configurada para uma operao de soma (010), uma vez
que para calcular o endereo de memria a ser acessado
necessrio somar o contedo do registrador rs com o valor do
campo imediato.

4. A ULA executa a instruo programada pela unidade de


controle. S que, diferente do que aconteceu nas instrues
Add e Addi, o resultado da operao da ULA em vez de ser
enviado para ser armazenado em algum registrador, aplicado
porta de endereos da Memria de Dados.

5. Por fim, o dado que foi lido da memria enviado para ser
escrito no registrador indicado no campo rt atravs do MUX 2.

64
Infraestrutura de Hardware

Figura 41 - Execuo da instruo Lw no Hardware do Mips

Para concluir, vamos dar uma olhada em como ficaria a execuo


de uma instruo de desvio condicional. Vamos ver a execuo da
instruo Beq R9, R2, 0xA3. Acompanhe pela Figura 42, a seguir,
como fica a execuo desta intruo.

1. O contedo do PC aplicado memria de instrues a fim de


ler a instruo a ser executada.

2. A memria de instrues fornece a instruo armazenada no


endereo indicado. O contedo da instruo dividido em
palavras binrias menores as quais so simultaneamente
aplicadas unidade de controle para decodificao da instruo
e ao banco de registradores para ler os possveis operandos.
Ao mesmo tempo o contedo do PC que foi aplicado memria
de instrues somado a 4 para j preparar para a carga da
prxima instruo.

3. Ao mesmo tempo que o banco de registradores fornece o


contedo dos registradores endereados, a unidade de controle
decodifica a instruo, identificando que uma instruo Beq,
e programa todos multiplexadores e a ULA para a execuo
correta da instruo. Observe na figura como os multiplexadores
ficaram configurados. Veja que apesar de se tratar de uma
instruo tipo I o sinal AluSrc foi configurado com nvel lgico
0, o que define que os registradores rs e rt sero operandos
pela ULA. Lembre-se, a execuo desta instruo exige que

65
Infraestrutura de Hardware

sejam comparados os contedos dos registradores rs e rt para


definir se ocorrer ou no o desvio programado. Observe pela
Tabela 7 que a ULA no possui a operao de comparao. A
soluo encontrada foi utilizar a operao de subtrao para
fazer a comparao do contedo dos dois registradores.

4. A ULA executa a instruo programada pela unidade de


controle, no caso uma subtrao. Caso os dois registradores
tenham um mesmo contedo, a operao resultar em zero,
o que sinalizado pela ULA levando o nvel lgico do sinal
Zero, sua sada, para 1. Caso contrario, caso o contedo dos
registradores sejam diferentes entre si, o sinal Zero ficar com
nvel lgico 0.

5. Por fim, caso o sinal Zero seja 1, o sinal ExecBranch tambm


ter seu nvel lgico alterado para 1, uma vez que este obtido
a partir da funo lgica and entre os sinais Zero e Branch.
Isto configurar o MUX 1 para carregar o PC com o resultado
da soma de PC+4 mais o contedo do campo imediato, o que
configurar um desvio no programa. Caso contrario, caso o
sinal Zero seja 0, sinal ExecBranch tambm ter o seu nvel
lgico igual a 0, o que configurar o MUX 1 para carregar o PC
com PC+4 como de costume.

Figura 42 - Execuo da instruo Lw no Hardware do Mips

Bem, com isto terminamos nosso estudo pela hardware do MIPS.

66
Infraestrutura de Hardware

Existem muitos outros pontos a serem explorados com relao ao


hardware deste processador, os quais esto disponvel na literatura
indicada em nossa bibliografia.

Vamos Revisar?

Neste captulo, ns conhecemos as principais classes de


processadores e o que eles tem em comum com respeito a sua
arquitetura interna.

Conhecemos tambm o Caminho de Dados e vimos a sua


importncia para o desempenho do processador.

Aprendemos o fluxo de execuo de uma instruo no processador,


com as vrias fases em que se dividem os seus ciclos de busca e de
execuo.

Neste captulo, aprendemos tambm sobre a linguagem de


maquina e sobre a linguagem de montagem do MIPS. Vimos como as
instrues da linguagem de mquina so decodificadas pela unidade
de controle deste processador e como esta unidade de controle utiliza
as informaes contidas nestas instrues para controlar o hardware
deste processador durante a execuo destas instrues.

Atividades e Orientaes de Estudo

Como voc deve ter percebido, o estudo da arquitetura interna de


um processador no algo muito simples.

Desta forma, recomendamos que voc continue dedicando algum


tempo para resolver os exerccios do seu caderno de exerccios.
E, lembre-se voc sempre pode contar com a ajuda dos tutores da
disciplina.

67
Infraestrutura de Hardware

Captulo 3

O que vamos estudar?

Neste captulo, vamos estudar os seguintes temas:

As interrupes;

O ciclo de instruo com o uso de interrupes;

Metas

Aps o estudo deste captulo, esperamos que voc consiga:

Aprender os princpios bsicos das interrupes;

Compreender porque o uso de interrupes possibilita o


aumento do desempenho dos sistemas computacionais;

Entender os impactos causados pelas interrupes no ciclo de


instruo.

68
Infraestrutura de Hardware

Captulo 3 Ciclo de Execuo


e Interrupes

Vamos conversar sobre o assunto?

3.1 Introduo

Durante a execuo dos programas, muitos computadores precisam


otimizar o desempenho dando oportunidade aos programas de tratar
eventos inesperados como falhas em dispositivos, tratar referncia
a um endereo de memria fora do espao de endereamento do
programa, dentre outras ocorrncias.

Imagine ainda que se o processador puder tratar outras aes


enquanto espera uma resposta de um perifrico, interrompendo
assim o seu fluxo sequencial de trabalho, o seu desempenho poderia
ser melhorado. seguindo essa ideia que surgem os mecanismos de
tratamentos de interrupes.

Mas o que vem a ser uma interrupo dentro do contexto


computacional? Podemos dizer que uma interrupo, como o prprio
nome j sugere, uma parada na execuo sequencial de um
programa do usurio para tratar um evento assncrono que pode ser
causado por diversos fatores.

Imagine, por exemplo, uma situao onde um programa que


executa no processador requisita leitura de dados de um arquivo que
est em disco. Normalmente, as CPUs trabalham em velocidades muito
superiores aos dispositivos perifricos. Mesmo com toda a evoluo
tecnolgica, h uma tendncia que esses dispositivos continuem mais
lentos que a prpria CPU, pois esta ltima o crebro do computador,
devendo, portanto atender a vrios dispositivos perifricos.

Durante a leitura do disco, o programa em execuo na CPU ficar


em estado de espera, aguardando o trmino na leitura dos dados. Caso
esse tempo de espera seja aproveitado com a execuo de outras
atividades que no dependessem do resultado da leitura do arquivo,
haveria um ganho em termos de desempenho de processamento.
Se voc entendeu essa situao, voc entendeu o propsito do uso
das interrupes como alternativa para melhorar o desempenho dos

69
Infraestrutura de Hardware

processadores na execuo dos programas.

Para exemplificar, podemos pensar em um cenrio onde um


programa executa numa CPU que no utiliza interrupes. Esse
programa possui uma operao de leitura em disco e durante a
execuo do comando de leitura do perifrico, o controle da operao
desviado para a controladora de disco. Se voc no sabe o que
a controladora do disco, no se preocupe, pois veremos em volumes
subsequentes.

O programa do nosso exemplo segue a sua execuo e ao encontrar


um comando de leitura de disco, desvia a operao de leitura para a
controladora. Durante a operao de leitura h um tempo ocioso da
CPU, pois ela continua parada, aguardando o retorno da operao
de leitura por parte da controladora. Quando a controladora concluiu
a operao de leitura, o fluxo do programa retorna novamente
CPU que seguir com a execuo dos demais comandos. Observe
a Figura 1 abaixo representando o esquema de execuo do referido
programa.

Figura 1 Programa executando sem interrupo.

Durante a operao de leitura haver um intervalo de tempo (T)


no qual a CPU no poder executar aes deste programa, devido
o aguardo do retorno da operao de leitura. Isso no desejvel,
pois o desempenho da CPU fica bastante degradado. Sendo assim,
uma maneira de otimizar esse desempenho introduzir o uso de
interrupes.

Ao ser executado, o programa da Figura 1 seguir a seguinte


sequncia de execuo:

70
Infraestrutura de Hardware

1, 3, T, 4, 2

Onde T = Tempo de leitura do disco

Se pensarmos que para execuo dos blocos de comandos 1, 3,


4, 2 sejam decorridos 1 milissegundo para a execuo de cada um,
o tempo total para a execuo do programa seria 4 milissegundo + T,
onde T um tempo ocioso para a CPU.

Suponha agora esse mesmo programa sendo executado numa


CPU que trabalha com interrupes. Neste caso ao encontrar um
comando de leitura, a CPU desvia o controle para a controladora,
mas enquanto aguarda pelo retorno da operao, ela poder executar
outras instrues daquele mesmo programa quando estas no
dependem diretamente da sada da operao de leitura. O mesmo
esquema de execuo apresentado anteriormente comporta-se
conforme a Figura 2, no caso de uso de interrupes.

Figura 2 Programa executando com interrupo.

Note agora que a operao de leitura acontece em paralelo ao


primeiro conjunto de comandos do bloco 2. Quando a operao de
leitura termina, a controladora ir colocar um sinal no barramento,
avisando que a operao acabou. Saiba Mais

Neste ponto, a CPU salva o contexto de execuo do programa


Tratador de
(para saber onde o programa parou) e vai verificar o retorno da interrupes
o programa
operao de leitura (Tratador de Interrupes). Aps o tratamento da do sistema
interrupo, o fluxo de execuo continua na instruo imediatamente operacional
que indentifica
aps aquela do momento da interrupo, executando assim, o bloco qual o tipo de
interrupo que
de instrues representado por 2b. aconteceu.

71
Infraestrutura de Hardware

Ao ser executado, o programa da Figura 2 seguir a seguinte


sequncia de execuo:

1, 3, T, 4, 2b

2a

Onde T = Tempo de leitura do disco = tempo levado pra execuo


da metade do bloco 2, representado aqui por 2a

Dessa forma, observamos que o tempo T utilizado para a


execuo de uma outra tarefa, no sendo portanto, um tempo ocioso
j que a CPU no fica desperdiando tempo, esperando um retorno
do dispositivo.

Note que quando o dispositivo externo estiver pronto para ser


utilizado, a controladora enviar um sinal de requisio de interrupo
CPU. Em resposta a esse sinal, a CPU suspende a execuo do
programa atual, desviando o controle para uma rotina que controla a
operao do disco, apenas retomando a execuo do original, aps
os dados terem sido obtidos do disco.

Diante desse exemplo que acabamos de apresentar, voc percebe


qual o benefcio que as interrupes podem introduzir nos ambientes
computacionais?

Bem, embora o uso de interrupes aumente o desempenho dos


sistemas computacionais, para que o processador passe a utiliz-las,
alguns controles de fluxos precisam ser includos, conforme
observamos no exemplo acima. Por exemplo, aps tratar a operao
de leitura, o processador precisa saber a partir de qual instruo do
programa, ele precisar continuar.

Sendo assim, um ciclo de interrupo precisar ser includo no ciclo


de instruo original, levando este ciclo ao esquema apresentado na
Figura 3.

72
Infraestrutura de Hardware

Figura 3 Ciclo de execuo com Interrupes

A Figura 3 nos mostra que o processador busca a prxima instruo,


a executa e em seguida, verifica se ocorreram interrupes. Caso
no haja interrupo pendente, o processador prossegue buscando a
instruo seguinte do programa corrente.

Nos casos onde h interrupo pendente, o processador realiza as


seguintes tarefas:

Suspende a execuo do programa corrente e salva o endereo


da prxima instruo a ser executada; Saiba Mais

Configura o registrador PC para iniciar a rotina de interrupo;


O PC (Program
Counter), um
O processador procede, buscando a primeira instruo no registrador
programa tratador de interrupo. cujo objeivo
armazenar
o endereo
Voc pode estar pensando que a introduo de interrupes da prxima
aumenta a sobrecarga de processamento, j que instrues extras instruo.

devem ser executadas para determinar a natureza da interrupo


para ento decidir a medida a ser adotada. Se voc pensou assim,
voc est certo. Por outro lado, do ponto de vista da CPU, h um
grande intervalo de tempo na espera de uma operao de entrada e
sada, levando o processador a obter mais eficincia com o uso de
interrupes.

73
Infraestrutura de Hardware

3.2 Mltiplas Interrupes

Observe que at o momento estamos trabalhando na ocorrncia


de uma nica interrupo. Voc j parou para pensar no que acontece
quando uma nova interrupo levantada durante o tratamento de
outra?

Para ficar mais fcil de entender, imagine um programa que


recebe dados por uma placa de rede e envia para escrita em disco.
A controladora do disco gera uma interrupo toda vez que completa
uma operao de escrita. A controladora da placa de rede, por sua
vez, gera uma interrupo toda vez que recebe um pacote de dados.

Para resolver esses problemas, podem ser utilizadas duas


solues: A soluo mais simples sugere que durante o tratamento
de uma interrupo ocorra a desabilitao de demais interrupes.
Dessa forma, enquanto as interrupes estiverem desabilitadas, o
processador ignora qualquer sinal de requisio de interrupo. As
interrupes ocorridas durante este intervalo ficaro pendentes e sero
verificadas pela CPU apenas aps a habilitao das interrupes.
Quando o tratador de interrupes termina de manipular a primeira
interrupo, as interrupes so novamente habilitadas, possibilitando
ao processador verificar a ocorrncia de novas interrupes.

Essa soluo lhe parece simples? Ela de fato simples, mas


no leva em considerao prioridades dos dispositivos. Como
sabemos, alguns dispositivos perifricos so mais rpidos que outros.
Facilmente observamos que uma impressora um dispositivo lento
quando comparada a uma placa de rede ou teclado. Essa soluo
tratar todos os dispositivos e as interrupes geradas pelos mesmos
com igual prioridade e essa a sua desvantagem, j que no resolve
o problema de diferentes taxas de transmisso de dispositivos.

Outra soluo atribuir e considerar prioridades de interrupes.


Dessa forma, se uma interrupo est sendo tratada e uma outra ocorre
durante a sua manipulao, caso a prioridade da segunda supere a da
primeira, a primeira interrupo ser suspensa temporariamente para
tratar a interrupo de maior prioridade. Terminado o processamento
da segunda interrupo, o processador retorna ao tratamento da
anterior. Caso contrrio, se a segunda tiver prioridade menor que a
primeira, ela ficar aguardando a concluso da mesma.

74
Infraestrutura de Hardware

Aprenda Praticando

Agora que voc j leu a teoria e os exemplos apresentados, vamos


tentar entender os exerccios resolvidos a seguir. interessante que
antes de observar a soluo voc tente sozinho resolver, para em
seguida comparar a sua soluo com a proposta pelo livro.

Exerccio 1

Desconsiderando o uso de interrupes, esquematize atravs


de um cenrio a execuo de um programa que possui 2
operaes envolvendo E/S.

Exerccio 2

Considere o programa sendo executado em uma mquina


com interrupes. Compare os dois programa, identificando os
trechos de execuo que causam perda de desempenho.

Exerccio 3

Considere uma verso com interrupes que demoram a ser


disparadas (situao tpica de dispositivos lentos). Que situao
nova deve ser considerada no cenrio?

Exerccio 4

De acordo com estes cenrios, o que podemos esperar, em


geral, com a introduo de interrupes.

Inicialmente voc deve desconsiderar o uso de interrupes, e


esquematizar atravs de um cenrio a execuo de um programa
que possui 2 operaes envolvendo entrada e sada. Lembre-se
que operaes de entrada e sada podem ser leitura ou escrita de
dados, por exemplo. Voc pode utilizar o mesmo raciocnio explicado
na seo 3.1 para o programa que continha uma nica operao de
leitura em disco. Lembra?

Bom, ento de posse de caneta e papel, vamos desenhar o


esquema de execuo de nosso programa, resolvendo, portanto o
Exerccio 1. Representaremos os blocos de comandos do programa
do usurio por 1, 2, e 3 e os blocos de comandos do programa de

75
Infraestrutura de Hardware

entrada e sada pelos trechos 4 e 5. Veja o esquema na Figura 4.

Figura 4 Programa com 2 operaes de E/S

O programa do nosso exemplo segue a sua execuo e ao


encontrar um comando de E/S, desvia a operao de leitura para a
controladora. Durante a operao de leitura h um tempo ocioso da
CPU, pois ela continua parada, aguardando o retorno da operao
de E/S por parte da controladora. Quando a controladora concluiu a
operao de E/S, o fluxo do programa retorna novamente CPU que
seguir com a execuo dos demais comandos.

Assim como no programa representando na seo anterior,


durante a operao de E/S haver um intervalo de tempo (T) no qual
a CPU no poder executar aes deste programa, devido o aguardo
do retorno da operao de E/S. Sendo assim, conclumos que a
execuo do programa seguir a seguinte sequncia de execuo:

1, 4, T, 5, 2, 4, T, 5, 3

Onde T = Tempo de leitura do disco

Para dar continuidade ao nosso exerccio, vamos ento considerar


agora que este mesmo programa esteja sendo executado em uma
CPU que faa uso de interrupes. Esse o questionamento do

76
Infraestrutura de Hardware

Exerccio 2.

Ao encontrar um comando de entrada e sada, a CPU desvia o


controle para a controladora, mas enquanto aguarda pelo retorno
da operao, ela poder executar outras instrues daquele mesmo
programa.

Note agora que a operao de entrada e sada acontece em


paralelo ao primeiro conjunto de comandos do bloco 2. Quando a
operao de leitura termina, a controladora ir colocar um sinal no
barramento, avisando que a operao acabou.

Neste ponto, a CPU salva o contexto de execuo do programa


(para saber onde o programa parou) e vai verificar o retorno da
operao de entrada e sada (Tratador de Interrupes). Aps o
tratamento da interrupo, o fluxo de execuo continua na instruo
imediatamente aps aquela do momento da interrupo, executando
assim, o bloco de instrues representado por 2b.

Em seguida, o programa encontra a segunda operao de entrada


e sada, e novamente a CPU desvia o controle para a controladora,
e enquanto aguarda pelo retorno da operao, ela executa outras
instrues daquele mesmo programa. Vamos observar o esquema de
execuo na Figura 5.

Figura 5 Programa em Execuo com 2 operaes de E/S

77
Infraestrutura de Hardware

O programa da Figura 5 seguir a seguinte sequncia de


execuo:

1, 4, T, 5, 2b, 4, T, 5, 3b

2a 3a

Onde T = Tempo de leitura do disco = tempo levado pra execuo da


metade do bloco 2 e do bloco 3, representados aqui por 2a e 2b.

Vamos agora comparar o programa executando nas duas situaes


(Exerccio 1 e Exerccio 2). Vamos identificar quais os trechos de
execuo que causam perda de desempenho.

Observamos que o tempo T utilizado para a execuo de outra


tarefa, no sendo portanto, um tempo ocioso j que a CPU no fica
desperdiando tempo esperando um retorno do dispositivo. Quando
o dispositivo externo estiver pronto para ser utilizado, a controladora
enviar um sinal de requisio de interrupo CPU. Em resposta a
esse sinal, a CPU suspende a execuo do programa atual, desviando
o controle para uma rotina que controla a operao do disco, apenas
retomando a execuo do original, aps os dados terem sido enviados
ao disco.

Dessa forma, a situao ilustrada no Exerccio 2 apresenta um


tempo total de execuo menor, demonstrando que o desempenho
da execuo do mesmo programa no Exerccio 2 foi melhor que no
Exerccio 1, j que no houve tempo ocioso.

Agora vamos considerar uma verso com interrupes que


demoram a ser disparadas (situao tpica de dispositivos lentos, por
exemplo impressoras). Que situao nova deve ser considerada no
cenrio? Esta a pergunta do Exerccio 3.

Voc sabe que alguns perifricos so mais lentos que outros, no


? Uma impressora ou um scanner, por exemplo, so dispositivos
lentos. Neste caso, para o nosso cenrio, vamos considerar que o
tempo levado para um dispositivo lento executar a operao de E/S
igual ao tempo levado para executar um bloco de comandos completo
(representado por 2 e 3) da Figura 6.

78
Infraestrutura de Hardware

Figura 6 Programa em Execuo com 2 operaes de E/S

Dessa forma, a sequncia de execuo seguir o fluxo exposto


abaixo, respondendo, portanto, o Exerccio 3:

1, 4, T, 5,4, T, 5

2 3

Onde T = Tempo de leitura do disco = tempo levado pra execuo


do bloco 2 e do bloco 3.

Por fim, de acordo com estes cenrios, o que podemos esperar,


em geral, com a introduo de interrupes? Essa pergunta est
no Exerccio 4 e voc sem dvida j est habilitado a responder.
Veja que a introduo de interrupes agrega mais complexidade
execuo dos programas, entretanto, os ganhos de desempenho so
notveis, pois todo tempo de espera em operaes de entrada e sada
so utilizados para a execuo de outras tarefas.

Atividades e Orientaes de Estudo

Dedique, pelo menos, 2 horas de estudo para o Captulo 3.

79
Infraestrutura de Hardware

Organize uma metodologia de estudo que inicie com a leitura dos


conceitos e acompanhamento dos exerccios resolvidos.

Voc poder esclarecer suas dvidas com o professor e os tutores


utilizando os chats e os fruns tira-dvidas no ambiente virtual de seu
curso.

No esquea de ler atentamente o guia de estudo da disciplina,


pois nele voc encontrar a diviso de contedo semanal, ajudando-o
a dividir e administrar o seu tempo de estudo.

Observe os prazos estabelecidos pelo seu professor para essas


atividades virtuais. Lembre-se que as atividades somativas propostas
pelo professor no ambiente virtual so importantes para o aprendizado
e para a composio da sua nota.

Vamos Revisar?

Neste captulo, voc estudou as interrupes e o seu impacto na


execuo dos programas.

Aprendemos que as interrupes acrescentam complexidade


execuo embora permitam que os tempos de espera por retorno
das operaes de entrada e sada (executadas por perifricos) sejam
aproveitadas para a execuo de outras tarefas, possibilitando, assim,
uma melhoria de desempenho.

Estudamos as tcnicas existentes para o tratamento de mltiplas


interrupes e quais os impactos sofridos pelo ciclo de busca e
execuo com a insero de interrupes.

No prximo e ltimo captulo deste volume, voc estudar os


barramentos ou estruturas de interconexes.

80
Infraestrutura de Hardware

Captulo 4

O que vamos estudar?

Neste captulo, vamos estudar os seguintes temas:

Princpios bsicos de funcionamento das estruturas de


interconexo;

Principais padres comerciais de barramentos;

Evoluo histrica dos padres comerciais de barramentos;

Metas

Aps o estudo deste captulo, esperamos que voc consiga:

Aprender os princpios bsicos de funcionamento dos


barramentos;

Compreender a evoluo dos padres de barramento sob o


ponto de vista tecnolgico;

Conhecer um pouco dos padres comerciais de barramentos


dos ltimos 20 anos at a atualidade.

81
Infraestrutura de Hardware

Captulo 4 Estruturas de
Interconexo

Vamos conversar sobre o assunto?

Como conversamos anteriormente, o computador uma rede


constituda de mdulos bsicos: dispositivos de E/S (entrada e
sada), memria e CPU. Tais mdulos precisam se conectar, para que
possam trocar dados e sinais de controle, com o objetivo de executar
programas. Ento, como seria possvel conect-los?

Podem ser utilizados para isso, um conjunto de caminhos


conectando os diversos mdulos. Os mdulos podem transferir entre
si diversos tipos de informaes. Vejamos alguns exemplos:

Memria CPU

A memria transfere dados para a CPU, por exemplo, no


momento da edio de um documento;

E/S CPU

Um dispositivo de E/S transfere dados para a CPU quando,


por exemplo, um documento est sendo editado, via teclado
ou mouse;

CPU Memria

A CPU transfere dados para memria como resultado da


edio do documento (resultado do processamento);

82
Infraestrutura de Hardware

CPU E/S

A CPU transfere dados para um dispositivo de E/S, quando,


por exemplo, um documento est sendo visualizado no
monitor;

Memria E/S

O ato de salvar um documento no disco rgido um exemplo


de transferncia de dados da memria para E/S.

E/S Memria

A abertura de um documento representa uma retirada do


arquivo do disco rgido para coloc-lo na memria. O disco
rgido representa o dispositivo de E/S.

Sendo assim, uma estrutura ou barramento de interconexo pode


ser definido como um caminho conectando dois ou mais dispositivos.
Esse caminho um meio de transmisso compartilhado, onde diversos
dispositivos esto conectados e um sinal transmitido por qualquer
um deles recebido por todos os outros conectados ao barramento.
Para que a transmisso de dados ocorra com sucesso apenas um
dispositivo, por vez, poder transmitir. Podemos observar uma
imagem genrica desse meio compartilhado de transmisso de dados
na Figura 1. Nesta ilustrao, representamos todos os dispositivos
perifricos por E/S. Representamos as estruturas de memrias na
caixa denominada Memria, enquanto que a caixa denominada CPU
representa a unidade de processamento de dados.

Figura 1 Barramento

4.1 Fundamentos Bsicos

Um barramento consiste em vrios caminhos ou linhas de


comunicao. Cada linha transmite sinais que representam um
nico dgito binrio (0 ou 1). Em geral, as linhas do barramento so
agrupadas de acordo com o tipo de informao que elas transportam.
Ao longo do tempo, uma sequncia de dgitos pode ser transmitida por
meio de uma linha. As diversas linhas podem ser usadas em conjunto

83
Infraestrutura de Hardware

para transmitir vrios dgitos binrios simultaneamente (em paralelo).


Por exemplo, uma unidade de dados de 8 bits, pode ser transmitida
por 8 linhas do barramento.

As linhas do barramento podem ser classificadas em trs grupos


funcionais: dados, endereo e controle. A distribuio dessas linhas
pode ser observada na Figura 2.

Figura 2 Linhas do Barramento

As linhas de dados fornecem o meio de transmisso de dados


entre os mdulos do sistema. O conjunto dessas linhas formam
o barramento de dados, que podem conter 8, 16, 32 ou 64 linhas.
O nmero de linhas conhecido como largura do barramento. Na
sua opinio, a largura do barramento interfere de alguma forma no
desempenho do sistema?

Suponha uma situao onde o barramento de dados possui


largura de 8 bits. Imagine agora que o computador em questo utiliza
instrues com 16 bits. Quantas vezes o processador tem que acessar
o mdulo de memria em cada ciclo de instruo?

Neste caso, o processador teria que realizar dois acessos ao


mdulo de memria, pois o barramento de dados s suporta transmitir
8 bits por vez. Como a instruo tem 16 bits, os dados so colocados no

84
Infraestrutura de Hardware

barramento agrupados de 8 em 8. Isso significa dizer que quanto mais


linhas o barramento de dados possui, ou seja, quanto mais largo ele
for, mais bits podero ser transmitidos simultaneamente, levando-nos
a concluir que a largura do barramento tem um impacto direto no
desempenho do sistema.

As linhas de endereo so utilizadas para designar fonte e


destino dos dados transferidos pelo barramento de dados. Quando
um processador deseja ler uma palavra da memria, ele coloca o
endereo da palavra desejada nas linhas de endereo do barramento.
Como as linhas de dados e de endereos so usadas por todos os
componentes, deve existir uma maneira de controlar sua utilizao.
Esta uma das funes das linhas de controle do barramento. Elas
referem-se ao acesso e o uso das linhas de dados e endereos. Os
sinais de controle so utilizados para transmitir comandos, explicitando
quais aes sero executadas. So considerados sinais que trafegam
no barramento de controle, os seguintes exemplos:

1 Escrita na Memria (CPU para memria): Faz com que os dados


existentes nas linhas de dados do barramento sejam gravados
na posio de memria especificada nas linhas de endereo.

2 Leitura de Memria (memria para CPU): Faz com que o


valor armazenado no endereo da memria especificado nas
linhas de endereo seja colocado nas linhas de dados do
barramento.

3 Escrita de E/S (CPU para E/S): Faz com que os dados no


barramento de dados sejam enviados para uma porta de sada
(dispositivo de E/S).

4 Leitura de E/S (E/S para CPU): Faz com que os dados em um


dispositivo de E/S sejam colocados no barramento de dados.

Como o barramento um meio de acesso compartilhado, quando


um mdulo do sistema deseja enviar dados para outro, ele dever
inicialmente obter o controle do barramento atravs das linhas de
controle, j que apenas um componente pode utilizar o meio em um
determinado instante. Aps a obteno do controle de acesso, o
mdulo poder transferir os dados por meio do barramento.

Da mesma forma, quando um mdulo deseja requisitar dados


de outro mdulo, ele tambm dever inicialmente obter o controle
do barramento, para ento iniciar a transferncia da requisio

85
Infraestrutura de Hardware

para o outro mdulo, por meio das linhas de endereo e de controle


apropriadas. Em seguida, o mdulo requisitante dever esperar que o
outro mdulo envie os dados requisitados.

Toda essa operao de controle de acesso ao barramento faz


parte do protocolo do barramento. O nome que se d a maneira pela
qual os componentes obtm acesso ao barramento Arbitragem.
A arbitragem ir designar um dispositivo para ser o mestre na
comunicao. O dispositivo mestre aquele que pode iniciar uma
transferncia de dados com outros dispositivos, que atuam como
escravos nessa atividade especfica. Mas o que voc acha que
acontece se dois ou mais dispositivos quiserem se tornar mestres ao
mesmo tempo?

Para resolver esse tipo de impasse, existem dois tipos de tcnicas


de arbitragem de barramento. So elas: centralizada e distribuda.

Na arbitragem centralizada, existe um nico dispositivo de


hardware, denominado rbitro que comanda a transferncia de dados.
Ele responsvel por alocar tempo de utilizao do barramento a
cada mdulo do sistema. J na arbitragem distribuda, no existe
um controlador central, ou seja, quando um dispositivo quer usar um
barramento, ele ativa sua linha de requisio. A linha de requisio do
barramento faz parte do conjunto de linhas de controle.

Para a arbitragem distribuda, quando nenhum dispositivo quer


utilizar o barramento, a linha de arbitragem ativada propagada
atravs de todos os dispositivos. Para obter o acesso ao barramento,
um dispositivo primeiro verifica se o mesmo est disponvel e se a
linha de arbitragem que est recebendo IN est ativada. Se a linha
de arbitragem IN estiver desativada, ele no poder tornar-se mestre
do barramento. Se IN estiver ativada, o dispositivo requisita o
barramento, desativa OUT, levando todos os dispositivos seguintes na
cadeia a desativarem IN e OUT. Esse esquema pode ser observado
na Figura 3.

86
Infraestrutura de Hardware

Figura 3 Arbitragem Distribuda

Baseando-se na arbitragem centralizada, podem ser utilizadas


2 tcnicas: Arbitragem Centralizada com 1 nvel e Arbitragem
Centralizada com 2 nveis. Na primeira delas (Figura 4), todos os
dispositivos so ligados em srie, assim a permisso dada pelo rbitro
pode ou no se propagar atravs da cadeia. Cada dispositivo deve
solicitar acesso ao barramento, porm o dispositivo mais prximo
do rbitro tem maior prioridade. Uma vez que o dispositivo recebe
a permisso para acesso ao barramento, ele bloqueia o acesso dos
demais.

Figura 4 Arbitragem Centralizada com 1 nvel

A arbitragem centralizada com 2 nveis (Figura 5) possui uma


pequena variao em relao tcnica anterior, pois existem
diferentes nveis de requisio e cada dispositivo se liga a um dos
nveis. Os dispositivos com tempos mais crticos se ligam aos nveis
de maior prioridade. Se mltiplos nveis de prioridade so requeridos
ao mesmo tempo, o rbitro solta a permisso apenas para os de

87
Infraestrutura de Hardware

prioridade mais alta.

Figura 5 Arbitragem Centralizada com 2 nveis

Hierarquia de Barramentos

O uso de barramentos traz consigo diversas vantagens que


vo desde o baixo custo na comunicao entre componentes at
a facilidade de se adicionar novos dispositivos ao computador.
Entretanto, existem desvantagens no uso dos barramentos, no
sentido de criao de gargalos na comunicao, pois a vazo mxima
no envio de dados aos dispositivos de E/S fica limitada.

Alm disso, medida que aumentamos o nmero de dispositivos


conectados ao barramento, a probabilidade de um dispositivo
encontrar o barramento livre para iniciar a transmisso diminui. Dessa
forma, quanto mais dispositivos conectados ao barramento, maiores
as chances de engarrafamentos e atrasos na transmisso.

Atualmente experimentamos uma tendncia de crescimento do


nmero de dispositivos de E/S disponveis no mercado. Se pararmos
para observar o nosso computador, constataremos que temos em
mdia 10 perifricos conectados (monitor, teclado, mouse, impressora,
pen drive, cd-room, disco dgido, caixas de som, microfone, webcam).
Essa realidade era diferente h 10 anos atrs.

E ento, ser que existe alguma forma de contornar esse


problema? Alternativas devem ser criadas para minimizar os gargalos
obtidos devido ao grande nmero de mdulos que compartilham o
barramento. Por exemplo, podem ser utilizados barramentos de maior
largura, ou seja, mais linhas no barramento de dados, possibilitando a
transferncia de mais bits por vez.

Essa primeira proposta de aumentar a largura do barramento


seria uma soluo limitada, pois logo chegaramos a uma situao de

88
Infraestrutura de Hardware

gargalo. No sabemos quantos perifricos teremos nos prximos 5


anos!

Sendo assim, outra alternativa baseia-se no uso de mltiplos


barramentos dispostos de maneira hierrquica. A Figura 6 apresenta
uma hierarquia de barramentos.

Figura 6 Hierarquia de Barramento

Na figura 6, observamos 4 nveis da hierarquia do barramento. O


barramento que interliga a memria e o processador se d atravs
de uma ponte na memria cache (vamos estudar esse tipo de
memria em volume posteriores) e denominado barramento local
(do ingls, local bus). O barramento do sistema (do ingls, system
bus) conecta a memria principal ao barramento de alta velocidade.
Neste ltimo barramento esto conectados os dispositivos perifricos
que trabalham em velocidades maiores enquanto que no barramento
de expanso esto conectados os perifricos mais lentos, tais como
modems e interfaces seriais.

Temporizao de Barramentos

Os barramentos coordenam a ocorrncia de eventos de diferentes


formas. Esse detalhe de projeto de barramentos refere-se
Temporizao. A Temporizao do barramento indica o modo pelo
qual os eventos nesse barramento so coordenados. Os barramentos
podem ser classificados como Sncrono ou Assncrono, no que se
refere sincronizao.

Um barramento sncrono aquele que exige que todo o trfego de

89
Infraestrutura de Hardware

dados e controle seja sincronizado sob uma mesma base de tempo


chamada relgio (do ingls, clock). O barramento sncrono inclui uma
linha de relgio, e atravs dela, um relgio transmite uma sequncia
alternada de 1s e 0s de igual durao. Uma transmisso de um 1 e de
um 0 (denominada ciclo de relgio ou ciclo de barramento) definida
em um intervalo de tempo.

Todos os eventos no barramento devem comear no inicio de um


ciclo de relgio e todos os dispositivos conectados ao barramento
sncrono podem ler a linha de relgio. As atividades que ocorrem no
barramento gastam um nmero inteiro destes ciclos. O comportamento
temporal deste tipo de barramento ilustrado na Figura 7.

Figura 7 Barramento Sncrono

Analisaremos as linhas da Figura 7, de cima para baixo.


Consideraremos a primeira linha como a mais superior e assim
sucessivamente. A primeira linha da Figura 7, indica o comportamento
do relgio. A segunda linha indica o incio da transferncia de
dados que so apresentados na quinta linha (linha de dados). O
processador emite um sinal de leitura (terceira linha) e coloca um
endereo nas linhas de endereo. As informaes contidas na quarta
linha referem-se ao endereo onde o dado ser lido e por fim, a linha
de reconhecimento indica que um sinal de controle para confirmar
o recebimento foi enviado ao barramento. O processador tambm
emite um sinal de incio para marcar a presena do endereo e de
informao de controle no barramento. Esse sinal est representado
na segunda linha superior da Figura 7.

Diferentemente do barramento sncrono, para um barramento


assncrono no existe um relgio mestre. Os ciclos podem ter

90
Infraestrutura de Hardware

qualquer durao requerida. A ocorrncia de um evento no barramento


depende de um evento ocorrido anteriormente. O funcionamento
desse barramento pode ser observado na Figura 8. Observa-se que o
processador coloca os sinais de endereo e de leitura no barramento.
Aps uma pausa para estabilizao desses sinais, ele emite um sinal
representado na primeira linha (de cima para baixo) indicando que os
sinais apresentados nas linhas de endereo e controle so vlidos.
Esse sinal emitido pelo dispositivo mestre. O dispositivo escravo na
comunicao responde enviando um sinal na linha SSYN (segunda
linha), indicando o envio da resposta e dos dados propriamente ditos,
contido nas linhas de dados do barramento (ltima linha da Figura 8).

Figura 8 Barramento Assncrono

Em geral, os barramentos assncronos possuem um desempenho


superior, pois no perdem tempo com a sincronizao, para permitir o
incio da transferncia de dados.

Tanto os dispositivos lentos quanto os rpidos, que utilizam


tecnologia mais nova ou mais antiga podem compartilhar o uso
do barramento assncrono, pois no precisam operar segundo a
velocidade fixa do relgio. Entretanto os barramentos sncronos so
mais facilmente implementados e testados.

4.2 Barramentos Comerciais

Agora que voc j conhece os princpios bsicos de operao e


funcionamento dos barramentos, voc ir conhecer alguns padres
de barramentos comerciais que foram e que ainda so utilizados nos
computadores atuais.

No incio dos anos 80, novas categorias de perifricos foram

91
Infraestrutura de Hardware

surgindo, com o desenvolvimento do primeiro computador pessoal


(PC-IBM). Sendo assim, foi definido o padro de barramento ISA
(Industry Standard Architecture) desenvolvido no incio dos anos 80
pela IBM nos laboratrios em Boca Raton, Florida. O ISA surgiu no
computador IBM PC (1981), na verso de 8 bits e posteriormente,
chegou ao IBM PC-AT (1984), passando a usar 16 bits de dados por
vez. A ilustrao de uma placa ISA apresentada na Figura 9.

Figura 9 Estrutura Geral da Placa ISA: 8 bits

No barramento ISA, com 8 bits de dados, a frequncia de operao


de 8 MHz, sendo portanto, um barramento sncrono. A sua velocidade
atinge cerca de 8 Mbps e foi bastante utilizado em placas de som e
fax-modem.

No barramento ISA, com 16 bits de dados (utilizados em


processadores 286), a frequncia de operao do barramento tambm
era 8 MHz e a velocidade atingia o dobro do ISA 8 bits, chegando a 16
Mbps. A ilustrao de uma placa ISA apresentada na Figura 10.

Figura 10 Estrutura Geral da Placa ISA: 16 bits

Em 1987, a IBM introduziu o padro MCA (Micro Channel


Architecture) propondo um novo barramento de dados para substituir o

92
Infraestrutura de Hardware

ISA. Esse barramento sncrono e utiliza comunicao com palavras


binrias de 32 bits (disponvel para os processadores 386) e a sua
frequncia de operao de 10 MHz. A sua velocidade de operao
32 Mbps e foi bastante utilizada em placas de vdeo e HDs.

A COMPAQ e outros fabricantes de hardware no concordaram


com o padro MCA da IBM, gerando um novo padro, em 1988,
denominado EISA (Extended Industry Standard Architecture), como
resposta ao modo como a IBM pretendia fazer o licenciamento do
barramento MCA. Foi inicialmente desenvolvido pela COMPAQ com a
inteno de retirar a IBM da conduo do futuro dos PCs.

Uma das grandes preocupaes dos fabricantes durante o


desenvolvimento do EISA, foi manter a compatibilidade com o ISA. O
resultado foi um slot com duas linhas de contatos, capaz de acomodar
tanto placas EISA quanto placas ISA de 8 ou 16 bits, conforme
observado na Figura 11.

Figura 11 Estrutura Geral da Placa EISA: 32 bits

Esse barramento sncrono tambm utiliza comunicao com


palavras binrias de 32 bits (compatvel para os processadores 386)
com frequncia de operao de 8 MHz. A velocidade de operao
16 Mbps e era utilizado em placas de vdeo e HDs com eficincia
comparvel do padro MCA.

Quatro anos depois (1992) surgiu um barramento especfico


para uso em aplicaes de vdeo, com o objetivo de melhorar o
desempenho de vdeo nos computadores pessoais. Esse padro
foi denominado VESA (Vdeo Electronics Standards Association) e
utilizava 32 bits no barramento de dados, sendo, portanto, compatvel
com os processadores 486, disponveis na poca. A frequncia

93
Infraestrutura de Hardware

de operao de 25/33 MHz, alcanando velocidade de 25/33


Mbps e sendo utilizado em dispositivos como placas de vdeo e
controladoras de disco. Apesar de ser um barramento relativamente
rpido, o VESA apresentou alguns problemas, que levaram dentre
outras consequncias ao surgimento do barramento PCI (Peripheral
Component Interconnet). Este barramento manteve a mesma
frequncia de operao, mas incorporou suporte nativo a plug-and-
play rompendo com o padro ISA, o que simplificou muito a pinagem
do barramento.

O PCI foi desenvolvido pela Intel sendo tambm classificado como


sncrono, possuindo arbitragem centralizada, com dois nveis para
utilizar as prioridades dos dispositivos conectados ao barramento. A
Figura 12 apresenta a imagem de uma placa PCI.

Figura 12 Estrutura Geral da Placa PCI

O PCI opera nativamente a 33 MHz, o que resulta em uma taxa


de transmisso terica de 133 Mbps. Entretanto, assim como em
outros barramentos, a frequncia do PCI est vinculada frequncia
de operao da placa-me. Conforme a frequncia das placas foi
subindo, passaram a ser utilizados divisores cada vez maiores, de
forma a manter o PCI operando sua frequncia original. Em uma
placa-me operando a 133 MHz, a frequncia dividida por 4 e, em
uma de 200 MHz, dividida por 6.

Com a evoluo dos processadores, o barramento PCI foi se


tornando cada vez mais lento com relao ao processador e outros
componentes, de forma que, com o passar do tempo, os perifricos
mais rpidos migraram para outros barramentos, como o AGP
(Accelerated Graphics Port) e o PCI-Express.

O AGP foi desenvolvido com o propsito especfico para o uso das

94
Infraestrutura de Hardware

placas 3D de alto desempenho. O AGP demorou a se popularizar,


pois em meados dos anos 90, as placas 3D ainda eram bastante
primitivas, de forma que ainda no existia uma demanda to grande
por um barramento mais rpido. O padro AGP inicial no chegou a
ser muito usado, surgindo ento o padro AGP 2X, que introduziu o
uso de duas transferncias por ciclo, permitindo assim a duplicao
da taxa de transferncia. Os padres posteriores foram o AGP 4X e o
8X, que realizam, respectivamente, 4 e 8 transferncias por ciclo.

Quando comparamos o AGP com o PCI, podemos dizer que o


primeiro padro de barramento reservado unicamente placa
de vdeo, enquanto a taxa de transmisso do barramento PCI
compartilhada por todas as placas PCI instaladas. Uma semelhana
entre eles que a frequncia de ambos os padres est atrelada
frequncia de operao da placa-me.

O PCI Express, por sua vez, um barramento serial, que pouco


tem em comum com os barramentos anteriores, pois um barramento
ponto a ponto, onde cada perifrico possui um canal exclusivo de
comunicao. A maioria dos barramentos estudados anteriormente
utiliza a comunicao paralela. Na comunicao paralela possvel
se transmitir vrios bits por vez, enquanto que na comunicao serial
transmitido apenas um bit por vez.

Sendo assim, em sua opinio, qual dos dois tipos de comunicao


apresenta melhor desempenho?

A princpio, a comunicao paralela aparenta-se mais rpida do que


a serial, pois transmitir um maior nmero de bits por vez. Entretanto,
a comunicao paralela sofre alguns problemas impactando o
alcance de clocks maiores nas transmisses, devido a problemas de
interferncia magntica e de atraso de propagao.

O atraso de propagao se d devido ao fato dos dados transmitidos


em paralelo no chegarem ao mesmo tempo ao dispositivo de destino.
Isso ocorre porque os fios que interligam a placa-me ao dispositivo
atravs do barramento no tm exatamente o mesmo tamanho,
fazendo com que os dados transmitidos por fios mais curtos cheguem
antes dos demais, ocasionando uma espera no dispositivo, podendo
vir a comprometer o desempenho. Por esse motivo, o projeto do PCI
Express foi implementado em um barramento serial, que permite
operar com clocks maiores sem sofrer essas interferncias e atrasos
de propagao.

95
Infraestrutura de Hardware

Com a evoluo tecnolgica, a diversidade de perifricos foi alm


de dispositivos como mouse, teclado e impressora. Atualmente temos
vrios outros perifricos e o nmero de interfaces conectadas ao
barramento de expanso deve ser bem maior para adequar a essa
necessidade. A necessidade de se ter um hardware pequeno para no
retroceder aos antigos mainframes tambm um fator importante.
Os computadores no podem ter um nmero grande de placas
conectadas ao barramento de expanso, pois os tornariam mquinas
que ocupavam grandes espaos fsicos.

Dessa forma, em 1995, para resolver estes problemas, surgiu o


padro USB (Universal Serial Bus). Em 1997/1998, todas as placas
mes passaram a contemplar, pelo menos, duas portas USB. As
primeiras verses estabelecidas datam de 1994, entretanto as
verses que entraram para uso comercial em larga escala foram a 1.1
(setembro de 1998) e a 2.0 (abril de 2000).

O padro USB permite fcil e rpida a conexo de diversos tipos


de aparelhos, tais como, cmeras digitais, HDs externos, pendrives,
mouses, teclados, MP3-players, impressoras, scanners, leitor de
cartes, dentre outros, utilizando o mesmo de conector para conectar
todos os dispositivos ao computador.

Alm disso, com o advento do USB, deixou de ser necessrio


abrir o computador e configurar jumpers e/ou IRQs para conectar
dispositivos. Os dispositivos USB so Plug and Play, ou seja,
so projetados para serem conectados ao computador e utilizados
imediatamente. Inclusive, comum se encontrar portas USB em
vrios outros aparelhos, como TVs, aparelhos de som, dentre outros.

Para o USB, o computador atua como um hospedeiro podendo


conectar at 127 dispositivos, diretamente ou atravs de Hubs
USB. Se voc no sabe o que um Hub USB no se preocupe que
falaremos dele mais adiante.

Os cabos individuais USB podem ter at 5 metros, porm ao serem


utilizados conjuntamente com os hubs, os dispositivos conectados via
USB podem ficar at 30 metros de distncia do hospedeiro, ou seja,
utilizando, no mximo, seis cabos de 5 metros cada um.

Os cabos USB contam com quatro fios internos, sendo dois deles
responsveis pela alimentao eltrica. Os outros dois referem-se a
um par tranado responsvel pela transmisso de dados, conforme
podemos observar na Figura 13.

96
Infraestrutura de Hardware

Figura13 Cabos USB

A alimentao dos dispositivos USB depende do tipo do dispositivo.


Para dispositivos como mouse e teclado, a alimentao pode ser
retirada diretamente do computador, sendo, portanto fornecida pelos
cabos de alimentao eltrica do USB. Para dispositivos com maior
consumo de energia, como impressoras e scanners, uma parte da
energia fornecida pelo barramento e a outra parte proveniente de
uma fonte externa.

Como os computadores possuem em geral, no mximo 5 portas


USBs, a forma de permitir que muitos dispositivos sejam conectados
ao host atravs de um dispositivo que multiplique o nmero de portas
disponveis. Esse dispositivo exatamente o hub USB que falamos
anteriormente. Voc poder identific-lo na Figura 14.

Figura 14 Hub USB

Os dispositivos USB so Hot-Swap (conectveis a quente), ou


seja, podem ser conectados e desconectados a qualquer momento.
Eles tambm podem ser colocados no modo sleep (hibernar) pelo
computador hospedeiro para no retirarem energia do barramento

97
Infraestrutura de Hardware

quando no esto sendo utilizados, evitando assim o desperdcio.

Um exemplo de um computador hospedeiro conectando vrios


dispositivos USBs diretamente e via hub ilustrado na Figura 15.

Figura15 Host com Dispositivos Conectados via USB

Para realizar a comunicao entre os dispositivos conectados via


USB e o computador hospedeiro utilizado um protocolo.

Esse protocolo estabelece que para que seja iniciada a comunicao


ocorrer o processo de enumerao. Esse processo baseia-se no

98
Infraestrutura de Hardware

fato que o computador precisa emitir um sinal para encontrar os


dispositivos conectados e estabelecer um endereo para cada um
deles. O computador hospedeiro (tambm denominado host) recebe a
informao de que tipo de conexo o dispositivo conectado utiliza. Ao
se conectar ao barramento USB, o dispositivo informa atravs desse
protocolo qual o tipo de comunicao que ser utilizada com o host.
Existem quatro possibilidades:

Por Volume: Tambm conhecido como Bulk, o tipo de


transmisso utilizada por dispositivos que lidam com grandes
volumes de dados, como impressoras e scanners. Esse mtodo
utiliza recursos de deteco de erro, possibilitando preservar as
informaes;

Por Interrupo: Conhecido por Interrupt, utilizado para


dispositivos que transferem poucos dados, como mouses,
teclados e joysticks

Iscrono: Do ingls, Isochronous utilizado em transmisses


contnuas, em dispositivos como caixas de som, por exemplo.
No utiliza recursos de deteco de erros, para evitar atrasos
na comunicao.

Por Controle: Utilizado para transmisso de parmetros de


controle e configurao do dispositivo.

Quando o dispositivo enumerado pelo host, ele informa o tipo de


comunicao que ir utilizar. Dessa forma, o host manter um registro
da total da largura de banda que todos os dispositivosiscronos e de
interrupo exigem. Eles podem consumir at 90% da largura de banda
disponvel. Passando deste limite, o host negar acesso a qualquer
outro dispositivo iscrono ou de interrupo. As transferncias de
grandes volumes e decontrole utilizam a largura de banda restante.

Atualmente, o USB encontra-se na verso 2.0, mas o padro 3.0 Saiba Mais
j foi especificado, embora ainda no tenhamos disponibilidade de
dispositivos no mercado. Voc sabia que
no final de 2008
foi especificado o
Aps apresentarmos essa breve evoluo dos padres comerciais padro USB 3.0?
e as caractersticas principais de cada um, passaremos para o Para consultar as
inovaes desse
estudo de mais um subsistema que ser apresentado no Volume 3: o padro consulte:
http://www.
subsistema de memria. infowester.com/
usb.php.
Mas antes de passarmos ao prximo volume, importante voc
verificar os exerccios propostos na seo a seguir e tentar resolver

99
Infraestrutura de Hardware

pelo menos aquelas que foram propostas pelo seu professor, no


ambiente virtual.

Aprenda Praticando

Agora que voc j leu a teoria e os exemplos apresentados,


sugerimos que voc tente desenvolver algumas questes sobre
barramentos. Nesta seo apresentada uma lista de exerccios
que voc poder tentar resolver. Caso tenha alguma dvida, entre em
contato com o seu professor ou tutor para solucion-la. importante
que voc passe para o mdulo seguinte com todas as suas dvidas
esclarecidas.

Lista de Exerccios

1) Explique o que voc entende por barramento de um


computador

2) Com relao aos barramentos, que tipos de sinais podero


trafegar nos mesmos e que linhas do barramento transportam
cada um desses elementos?

3) Quais os tipos de sinais de controle que podemos encontrar


nos barramentos e o que significam cada um deles?

4) Quais as vantagens e desvantagens da utilizao dos


barramentos nos sistemas computacionais?

5) Qual a diferena entre barramentos sncronos e barramentos


assncronos?

6) Para evitar que dois ou mais dispositivos tornem-se mestres


ao mesmo tempo, existe a arbitragem de barramento. Existem
duas formas de se fazer isso. Que formas so essas e como
cada uma delas funciona?

7) Quais os principais tipos de barramentos estudados?

8) Quais as principais caractersticas dos barramentos ISA e


EISA? Existe alguma compatibilidade entre eles?

9) Explique porque surgiu o barramento VL-VESA. Quantos cartes


ele suporta e como devero ser feitas as suas expanses?

100
Infraestrutura de Hardware

10) Quais as principais caractersticas do barramento PCI?

11) Explique porque surgiu o barramento USB. Quais problemas


ele deveria solucionar?

12) Explique para que serve um hub USB. Quantos dispositivos


podem ser ligados via barramento USB direta ou
indiretamente?

13) O que significa um equipamento ser hot-swapped?

14) Como feita a transferncia de dados em um barramento


USB?

15) Cite e explique os trs tipos de transferncia de dados em


barramentos USB.

16) Explique qual a motivao para a utilizao de uma hierarquia


de barramentos.

Atividades e Orientaes de estudo

Dedique, pelo menos, 4 horas de estudo para o Captulo 4. Voc


deve organizar uma metodologia de estudo que envolva a leitura dos
conceitos que sero ditos apresentados neste volume e pesquisas
sobre o tema, usando a Internet e livros de referncia.

Os fruns temticos desta disciplina podem ser utilizados para


troca de informaes sobre o contedo no ambiente virtual, pois a
interao com colegas, tutores e o professor da disciplina ir ajud-lo
a refletir sobre aspectos fundamentais tratados aqui. Os chats tambm
sero muito importantes para a interao em tempo real com o seu
tutor virtual, seu professor e seus colegas.

Tambm importante que voc leia atentamente o guia de estudo


da disciplina, pois nele voc encontrar a diviso de contedo
semanal, ajudando-o a dividir e administrar o seu tempo de estudo
semanal. Procure responder as atividades propostas como atividades
somativas para este captulo, dentro dos prazos estabelecidos pelo
seu professor, pois voc no ser avaliado apenas pelas atividades
presenciais, mas tambm pelas virtuais. Muitos alunos no acessam
o ambiente e isso poder comprometer a nota final. No deixe que
isso acontea com voc!

101
Infraestrutura de Hardware

Consideraes Finais

Ol, Cursista!

Esperamos que voc tenha gostado d o segundo mdulo da


disciplina Infraestrutura de Hardware. No prximo mdulo, passaremos
a estudar o subsistema de memria, onde estudaremos diversos tipos
de memrias e seus princpios fundamentais.

Aguardamos sua participao no prximo mdulo.

At l e bons estudos!

Juliana Regueira Basto Diniz


Abner Corra Barros

Professores Autores

102
Infraestrutura de Hardware

Referncias

STALLINGS, William. Arquitetura e Organizao de


Computadores. 5. ed.

PATTERSON, D. A. e Hennessy, John L. Organizao e


Projeto de Computadores. LTC, 2000.

TANENBAUM, Andrew S. Organizao Estruturada de


Computadores. 4. ed. Traduo Helio Sobrinho. Rio de Janeiro:
Prentice-Hall, 2001.

103
Infraestrutura de Hardware

Conhea os Autores

Juliana Regueira Basto Diniz possui graduao em engenharia


eletrnica pela Universidade Federal de Pernambuco, mestrado e
doutorado em Cincia da Computao pela Universidade Federal de
Pernambuco. Atualmente professora da Universidade Federal Rural
de Pernambuco (UFRPE), desenvolvendo trabalhos no grupo de
Educao a Distncia desta universidade. Seus temas de interesse
em pesquisa so: Sistemas Distribudos, Computao Ubqua e
Ensino a Distncia.

Abner Corra Barros mestre em Cincia da Computao com


foco em Engenharia de Hardware pelo Centro de Informtica da
Universidade Federal de Pernambuco. Possui graduao em Cincia
da Computao pela mesma universidade. Atualmente professor
da disciplina de Organizao e Arquitetura de Computadores da
Faculdade Maurcio de Nassau e Engenheiro de Hardware da
Fundao de Apoio ao Desenvolvimento da UFPE (FADE), atuando
em um projeto de convnio entre o Centro de Informtica da UFPE
e a Petrobrs. Suas reas de interesse e pesquisa so: Hardware
Reconfigurvel, Arquitetura de Cores Aritmticas e Computao de
Alto Desempenho em Field-Programmable Gate Array (FPGA).

104
Infraestrutura de Hardware

Juliana Regueira Basto Diniz


Abner Corra Barros

Volume 3

Recife, 2009
Universidade Federal Rural de Pernambuco

Reitor: Prof. Valmar Corra de Andrade


Vice-Reitor: Prof. Reginaldo Barros
Pr-Reitor de Administrao: Prof. Francisco Fernando Ramos Carvalho
Pr-Reitor de Extenso: Prof. Paulo Donizeti Siepierski
Pr-Reitor de Pesquisa e Ps-Graduao: Prof. Fernando Jos Freire
Pr-Reitor de Planejamento: Prof. Rinaldo Luiz Caraciolo Ferreira
Pr-Reitora de Ensino de Graduao: Prof. Maria Jos de Sena
Coordenao Geral de Ensino a Distncia: Prof Marizete Silva Santos

Produo Grfica e Editorial


Capa e Editorao: Allyson Vila Nova, Rafael Lira, Italo Amorim e Arlinda Torres
Reviso Ortogrfica: Marcelo Melo
Ilustraes: Abner Barros e Allyson Vila Nova
Coordenao de Produo: Marizete Silva Santos
Sumrio

Apresentao....................................................................................................4

Captulo 1 Hierarquia de Memria................................................................6

Hierarquia de Memria...................................................................................7

RAID Nvel 0.............................................................................................22

RAID Nvel 1.............................................................................................22

Disco tico...............................................................................................23

Fita Magntica..........................................................................................27

Pen-Driver................................................................................................27

Captulo 2 Memria Cache..........................................................................31

Acesso a Dados na Memria Cache............................................................32

Mapeamento de Memria.............................................................................35

Conhea os Autores.......................................................................................47
Apresentao

Caro(a) Cursista,

Estamos, neste momento, iniciando o terceiro volume do livro da disciplina de


Infraestrutura de Hardware. Neste volume iremos discutir o subsistema de memria
que constituem os computadores modernos. As memrias so subdivididas de acordo
com uma hierarquia e podem ser classificadas de acordo com uma srie de critrios.
Estudaremos as memrias semicondutoras, as memrias de superfcie tica (CDs e
DVDs) e de superfcie magntica (Discos rgidos).

Tambm abordaremos a troca de dados entre as memrias principal e a memria


cache, bem como as polticas de substituio e de escrita de dados na memria principal
e na cache.

Bons estudos!

Juliana Regueira Basto Diniz


Abner Barros

Professores Autores
Infraestrutura de Hardware

Captulo 1

O que vamos estudar?

Neste captulo, vamos estudar os seguintes temas:

Diversos tipos de memria que compem o subsistema de


memria dos computadores

Hierarquia de memria

Troca de dados entre as estruturas de memria dos


computadores

5
Infraestrutura de Hadware

Captulo 1 Hierarquia de
Memria

Vamos conversar sobre o assunto?

Considere as seguintes afirmaes, feitas em pocas distintas, por


alguns dos papas da computao:

Em termos ideais, desejaramos dispor de uma capacidade


de memria infinitamente grande e que pudesse disponibilizar
imediatamente o contedo de qualquer de suas palavras...

A.W.Burks, H.H.Goldstine e J. Von Neumann

Desde o lanamento do primeiro computador, os


programadores vm exigindo capacidades ilimitadas de memria,
de acesso quase instantneo

Andrew S. Tanenbaum

...Somos forados a reconhecer a possibilidade de construir


um sistema de memria estruturado hierarquicamente, no qual
cada um dos componentes da hierarquia tenha mais capacidade
de armazenamento e um tempo de acesso maior do que aqueles
que o precedem.

A.W.Burks, H.H.Goldstine e J. Von Neumann

Como voc deve ter percebido, a organizao do sistema de


memria (tamanho da memria x velocidade de acesso) um dos
problemas cruciais em sistemas computacionais.

De um lado precisamos de um sistema de memria com um grande


espao de armazenamento, que possa ser acessado a altssima
velocidade. Lembre-se que tanto os programas quanto os dados
ficaro armazenados neste sistema de memria, e que da velocidade
de acesso a estes dados depende, em ltima instancia, o desempenho
do computador como um todo.

Por outro, ainda no existe uma tecnologia de armazenamento


de dados que nos permita construir tais sistemas de memrias a um
custo acessvel. Memrias rpidas so caras. Desta forma, como o

6
Infraestrutura de Hardware

prprio Von Neumann percebeu, ainda nos primrdios da histria dos


computadores, a nica alternativa vivel a construo de sistemas
de memria baseados em hierarquia, utilizando todas as diversas
tecnologias disponveis, de tal forma a extrair o melhor de cada uma
delas.

Este portanto ser o foco do nosso estudo. Conhecer as tecnologias


de armazenamento de dados atualmente disponveis, e ver como
estas tecnologias so aproveitadas na construo da hierarquia de
memria.

Hierarquia de Memria

Quando pensamos em uma hierarquia qualquer, logo nos vem a


mente uma estrutura que dispe os seus elementos a partir de algum
parmetro que os distingue em grau de importncia dos demais.
Na hierarquia de memria no diferente, nela a velocidade de
velocidade de aceso que determina o grau de importncia de um
elemento e portanto o seu grau proximidade do processador. A Figura
1 a seguir nos traz os diversos elementos presentes na hierarquia de
memria dos computadores atuais.

Figura 1 - Elementos da Hierarquia de Memria

Como podemos observar, os elementos presentes na hierarquia


de memria podem ainda ser descritos como pertencentes a dois
grupos distintos: a Memria Primria e a Memria Secundria. Esta
classificao est diretamente ligada forma como cada um destes
elementos se conecta ao sistema e, desta forma, como o processador

7
Infraestrutura de Hadware

tem acesso aos dados neles armazenados.

Fazem parte da Memria Primria os elementos aos quais


o processador tem acesso direto e imediato, ou seja, aqueles
elementos que esto conectados diretamente ao barramento de
memria do processador. na memria primria que normalmente
ficam armazenados os dados e trechos de cdigo dos programas em
execuo.

Como podemos ver pela Figura 1, fazem parte da memria primria


o conjunto de registradores do processador, a memria cache e a
memria principal, comumente chamada de memria RAM.

Por outro lado, fazem parte da memria secundria os elementos


aos quais o processador tem acesso indireto, ou seja, aqueles que
no esto conectados ao barramento de memria do processador
mas sim algum dos barramentos de entrada e sada do sistema.

Para que os dados armazenados nestes dispositivos se tornem


acessveis na hierarquia de memria, necessria a utilizao de
device drivers, softwares especficos que intermediam as transaes
de leitura e/ou escrita na memria entre o programa em execuo
e o dispositivo aonde esto armazenados os dados. So estes
device drivers que permitem ao processador acessar aos dados
armazenados nestes dispositivos da mesma forma como acessaria
os dados armazenados na Memria Primria. Ou seja, do ponto de
vista do processador, como se existisse apenas um nico e grande
espao de memria, compreendendo os elementos presente tanto na
memria primria quanto secundria, ao qual ele pode acessar de
maneira simples e direta.

Observe que, como falamos a princpio, o objetivo desta hierarquia


construir um sistema de memria com as principais caractersticas
de cada um dos seus elementos, de tal forma que possa ser visto pelo
processador com um espao de armazenamento to grande quanto
o disponvel nos elementos presentes na sua memria secundria e
com um acesso to rpido quando o possvel nos elementos presentes
na sua memria primria.

Em linhas gerais podemos considerar que, ao longo do tempo da


execuo de um programa os seus dados trafegam entre os diversos
nveis desta hierarquia, vindo desde o local aonde ficam armazenados
quando no esto em uso, normalmente em algum ponto da memria
secundria, passando pela memria principal e desta para a memria

8
Infraestrutura de Hardware

cache e para o banco de registradores, onde por fim se tornam


acessveis ao processador.

No prximo captulo estudaremos com detalhes como se d este


processo e quais as tcnicas adotadas a fim de garantir o melhor
desempenho do sistema de memria como um todo.

Por enquanto, que tal estudarmos com um pouco mais de


detalhes alguns dos elementos presentes na hierarquia de memria
que acabamos de conhecer? Para tanto, vamos comear estudando
algumas caractersticas fundamentais dos elementos que compem
o sistemas de memria dos computadores atuais. A Figura 2 a seguir
nos traz um pequeno resumo destas caractersticas.

Figura 2 - Caractersticas fundamentais dos elementos do sistema de memria

Localizao: Esta caracterstica est diretamente relacionada


com a localizao fsica do elemento de memria no sistema
computacional, ou seja, se este interno ao processador como
no caso dos registradores, externo ao processador mas com
conexo direta ao barramento de memria deste, sendo desta
forma considerado como pertencente a memria interna do
computador, ou ainda um elemento de armazenamento externo
conectado ao sistema atravs de um dos barramentos de
entrada e sada.

Capacidade: Normalmente expressa em bytes, mas podendo


ser expressa tambm diretamente em bits ou em palavras de
16, 32 ou 64 bits, esta caracterstica revela a capacidade de
armazenamento de informaes de um determinado elemento

9
Infraestrutura de Hadware

de memria. No por acaso que esta talvez a caracterstica


que mais interesse aos usurios comuns de computadores.
Observe entretanto que possuir um computador com uma
grande capacidade de memria no , obrigatoriamente,
sinnimo de possuir um computador de grande desempenho.

Unidade de transferncia: Esta caracterstica esta associada


a como a informao transferida de/para o elemento de
memria. Como j estudamos anteriormente, apesar de a
unidade bsica de informao nos computadores ser o bit, a
unidade bsica de manipulao da informao, ou seja, a
unidade enderevel, determinada a partir do tamanho da
palavra do processador adotado. Por outro lado, por motivos
de desempenho, conforme veremos mais a frente no prximo
captulo, os dados so normalmente transferidos em blocos
contendo vrias palavras formando assim uma unidade de
transferncia de dados.

Mtodo de acesso: Esta caracterstica determina como se


dar o acesso aos elementos de memria, ou s suas unidades
endereveis. Existem a princpio quatro forma de acesso aos
dados, so elas:

Acesso sequencial: no acesso sequencial uma


determinada posio N de memria s pode ser acessada
aps ter-se acessado a posio N-1. Sistemas que adotam
este tipo de acesso armazenam juntamente com o dado
um registro de informao que contem o seu endereo de
acesso. Desta forma, para se acessar uma determinada
posio de memria deve-se ir acessando uma a uma
todas as posies que a antecedem, lendo sempre o seu
identificador, at alcanar-se o bloco desejado. Exemplo de
dispositivo de armazenamento de acesso sequencial: Fita
Magntica.

Acesso direto: o acesso direto pode ser considerado


uma evoluo do acesso sequencial. Nele os dados so
organizados em blocos maiores, ou clusters, os quais
possuem uma localizao fsica conhecida no meio de
armazenamento. Dentro do bloco os dados so acessados
sequencialmente conforme acabamos de descrever.
Exemplo de dispositivo de armazenamento de acesso
direto: Disco Magntico.

10
Infraestrutura de Hardware

Acesso aleatrio: no acesso aleatrio cada elemento


de armazenamento possui um endereo nico pr-
determinado a partir da posio que este ocupa da
estrutura do dispositivo que o implementa e podendo desta
forma ser acessado diretamente, em qualquer sequencia,
independente da posio de memria anteriormente
acessada. Exemplo de dispositivo de armazenamento de
acesso aleatrio: Memria principal, tambm conhecida Saiba Mais
como memria RAM (Random Access Memory)1.
Pesquise
1

Associativo: no acesso associativo pode ser visto como na Internet o


significado da
uma juno do acesso direto com o acesso aleatrio. Nos expresso:
sistemas que adotam o acesso associativo cada posio de Random Access
Memory
memria possui alem do espao para o armazenamento da
informao propriamente dita, um espao para o endereo
associado aquela informao. Desta forma, os espaos
de armazenamento no tem mais um endereo fixo como
acontece no acesso aleatrio, podendo ser utilizados de
uma maneira muito mais eficiente. O acesso aos dados
feito comparando-se o endereo da informao que
se deseja acessar com os endereos associados aos
elementos armazenados. Esta comparao pode ser feita
simultaneamente com todos os elementos de memria,
o que permite um acesso rpido e eficiente dos dados
armazenados. Exemplo de dispositivo de armazenamento
de acesso associativo: Memria cache. Mais a frente, no
prximo captulo, estudaremos em detalhes a memria
cache e o como o endereamento associativo importante
para o funcionamento deste tipo de memria.

Desempenho: Juntamente com a sua capacidade de


armazenamento, o desempenho a caracterstica mais
importante de uma memria. O desempenho de uma memria
pode ser medido a partir de trs medidas bsicas descritas a
seguir:

Tempo de acesso: tempo necessrio para se concluir um


acesso de escrita ou leitura a uma posio de memria.

Tempo de ciclo de memria: o tempo necessrio para


se fazer dois acessos seguidos memria.

Taxa de transferncia: a taxa ou velocidade com que

11
Infraestrutura de Hadware

os dados podem ser transferidos de ou para a memria. A


taxa de transferncia diretamente afetada pelo tempo de
acesso, pela tempo de ciclo de memria e pela unidade de
transferncia de dados na seguinte relao:

Figura 3 - Taxa de transferncia

Tecnologia: A tecnologia de construo de um elemento de


memria tem impacto direto sobre todas as sua caractersticas.
Normalmente uma tecnologia que apresenta excelentes
resultados em determinado parmetros no apresenta to bons
resultados em outros parmetro. Por exemplo: os elementos de
armazenamento baseados na tecnologia Magntica costumam
ter um excelente custo de implementao, apresentado assim
um baixo custo por bit, entretanto o seu tempo de acesso
costuma ser da ordem de milhares de vezes mais lento que os
das memrias baseadas na tecnologia de semi-condutores. As
principais tecnologias atualmente empregadas na construo
de elementos de memria so:

Semicondutor: Atualmente existe um grande nmero de


dispositivos de armazenamento construdos a partir da
tecnologias baseadas em semicondutores, entretanto as
principais, do ponto de vista da construo da hierarquia de
memria dos computadores so os dispositivos construdos
a partir das seguintes tecnologias:

Capacitiva: Esta tecnologia tem dominado o mercado de


fabricao das memrias tipo DRAM (Dynamic Random Access
Memory), ou seja, das memrias de armazenamento dinmico
e acesso randmico, desde o seu lanamento no inco da
dcada da 70 do sculo passado. Nela a unidade bsica de
informao, o bit, armazenado em capacitores construdos
diretamente na pastilha de silcio dos componentes de memria.
A grande vantagem desta tecnologia a sua alta densidade
de armazenamento por rea de silcio, o que reduz em muito
o preo por bit armazenado. Seu tempo de acesso e taxa de

12
Infraestrutura de Hardware

transferncia, ainda que superior a grande maioria das outras


tecnologias, no tem conseguido acompanhar a velocidade
dos processadores atuais, sendo menor que os apresentados
nas memrias construdas a partir de Flip-Flops, motivo pelo
qual esta tecnologia ocupa o ponto mediano da hierarquia de
memria.

Flip-Flop: Esta tecnologia a que apresenta as melhores


taxas de acesso e de transferncia dentre todas as tecnologias
atualmente disponveis, entretanto devido a sua baixa densidade
de armazenamento, cada bit de memria ocupa muita rea na
pastilha de silcio, o seu custo por bit armazenado tambm o
mais caro entre todas as tecnologias atualmente empregadas.
Desta forma, esta tecnologia normalmente empregada apenas
na construo dos dispositivos que ocupam o topo da hierarquia
de memria, ou seja, dos registradores e da memria cache.

Magntica: Esta tecnologia tem sido desde o seu


lanamento a principal tecnologia para a construo de
elementos de armazenamento persistente da informao
(Programas e Dados). Nela a informao armazenada
mudando-se a orientao do campo magntico de
partculas de material Ferri-magntico depositados nas
mdias magnticas. A grande vantagem desta tecnologia
o seu baixo custo de construo e sua alta densidade
de armazenamento, o que resulta em um baixssimo custo
por bit armazenado. Os principais dispositivos construdos
com esta tecnologia so os discos rgidos, os discos
flexveis e as fitas magnticas. A principal desvantagem
desta tecnologia so o seu alto tempo de acesso e de ciclo
de leitura e escrita, o que resulta em uma baixa taxa de
transferncia.

tica: A tecnologia de armazenamento em mdias ticas


surgiu como uma alternativa ao armazenamento de dados
permanentes em mdias magnticas, principalmente
em substituio s mdias removveis. Suas principais
caractersticas so sua alta densidade de armazenamento
e sua capacidade de manter os dados praticamente
inalterados por tempo infinitamente longos se comparados
as demais tecnologias, desde que armazenados de
maneira adequada. Na tecnologia tica a unidade bsica

13
Infraestrutura de Hadware

de informao armazenada a partir da mudana do ndice


de refrao da luz da mdia no pondo aonde a informao
gravada. Atualmente os principais dispositivos construdos
com esta tecnologia so os CDs, DVDs e Blue-Rays.

Caractersticas Fsicas: As caractersticas fsicas da


tecnologia empregada na construo dos elementos de
armazenamento determinam a persistncia e a volatilidade da
informao armazenada. Desta forma, as memrias podem ser
classificadas em:

Volteis ou no-volteis: Dizemos que uma memria


voltil quando esta depende de algum estmulo externo,
denominado de ciclo de refresh, para manter os dados nela
armazenados. So portanto no-voltil todas os demais
tipos de memria que no dependem de tais estmulos
para manter os dados armazenados. Atualmente apenas as
memrias DRAM, as quais so construdas com tecnologia
capacitiva so consideradas memria volteis.

Apagveis ou no apagveis: Esta caracterstica quase


que dispensa qualquer comentrio, desta forma, apenas
ressaltaremos que atualmente apenas alguns tipos de
mdias ticas e alguns tipos de memrias baseadas em
semi-condutores podem ser consideradas como memrias
no apagveis, uma vez que os dados nelas gravados no
podem ser alterados de tal forma que possamos utiliz-las
para outro fim. Todas os demais tipos de memria podem
ser consideradas como memrias apagveis.

Organizao: A organizao da memria a caracterstica que


reflete como os bits de memria esto dispostos, ou seja, qual
o tamanho da palavra de dados com o qual a memria pode ser
acessada. Observe a Figura 4 a seguir, nela podemos ver trs
formas distintas de organizao de uma memria com 96 bits
de armazenamento.

14
Infraestrutura de Hardware

Figura 4 - Trs formas distintas de organizar uma memria com 96 bits de armazenamento

Muito bem, agora que j conhecemos as principais caractersticas


dos elementos que compem um sistema de memria, estamos
prontos para estudar os principais tipos de elementos de memria
utilizados na construo da hierarquia de memria.

Vamos comear nosso estudo pelos elementos que compem a


memria primria da nossa hierarquia de memria:

Memria Primaria

Conforme dissemos no incio deste captulo, fazem parte da


Memria Primria os elementos aos quais o processador tem acesso
direto e imediato, ou seja, aqueles elementos que esto conectados
diretamente ao barramento de memria do processador. Por este
motivo a memria primria tambm recebe o nome de memria
interna. Tomando como referncia a hierarquia disposta na Figura 1,
vamos estudar primeiramente os registradores, em seguida a memria
cache e por ltimo a memria principal.

Registradores

Como podemos observar pela Figura 1, os registradores so os


elementos mais prximos do processador, ocupando assim o topo da
nossa hierarquia de memria. Os registradores nada mais so que
palavras de memria construdas com tecnologia de semicondutores,
Flip-Flops, diretamente na pastilha de silcio do processador, sendo
desta forma os elementos de memria de acesso mais rpido em
toda a hierarquia de memria. A maioria dos registradores presentes
em um processador so dispostos na forma de um banco de memria
de acesso aleatrio, organizado em palavras do tamanho exato da
palavra do processador, as quais so acessveis uma a uma em
unidades de transferncia tambm do tamanho exato da palavra do

15
Infraestrutura de Hadware

processador. Os registradores so considerados memrias apagveis


e no volteis

Memria Cache

A memria cache um espao de memria, organizado na forma


de bancos de memria, normalmente construda em dois ou trs
nveis, um diretamente na pastilha do processador, chamada de
cache L1, e os demais, denominados de cache L2 e L3, construdos
como componentes a parte do processador. Conforme dissemos
anteriormente, da mesma forma que os registradores, a memria
cache construda com tecnologia de semicondutor, Flip-Flop, com
acesso associativo, e organizado em palavras com tantos bits quantos
necessrios para armazenar uma ou mais palavras do processador
e uma referencia ao endereo de memria associado aos dados
armazenados. Dada a sua importncia para o desempenho da
hierarquia de memria como um todo, a memria cache ser estudada
em maiores detalhes no prximo captulo.

Memria Principal

A memria principal, como o prprio nome sugere o elemento


central da hierarquia de memria. na memria principal que
normalmente ficam armazenados os trechos de cdigo e os dados
dos programas em execuo.

Em linhas gerais, podemos dizer que a memria principal e o


banco de registradores so os nicos espaos de memria que o
processador realmente identifica como tal. Tanto a memria cache
quanto os elementos de armazenamento presentes na memria
secundria existem a fim de melhor as caractersticas de velocidade
de acesso e de espao de armazenamento da memria principal. O
que se busca com a hierarquia de memria que o processador veja
a memria principal com a velocidade de acesso da memria cache e
o espao de armazenamento da memria secundria.

Atualmente a memria principal formada primeiramente a partir


da utilizao de chips de memria DRAM, formando bancos de
memria que podem variar de centenas de Mega-Bytes Dezenas de
Giga-Bytes de memria. Conforme j foi dito, as memrias DRAM so
memrias construdas com tecnologia de semicondutor, capacitiva,
volteis e apagveis, de acesso aleatrio, organizadas e acessadas
normalmente em palavras do tamanho da palavra do processador

16
Infraestrutura de Hardware

utilizado.

Entretanto, existem tambm um outro tipo de memria que faze


parte da memria principal, na qual fica armazenado o Sistema Bsico
de Entrada e Sada da placa me, tambm conhecido como BIOS
(Basic Input Output System). O BIOS gravado em uma memria
construda com tecnologia de semicondutor, no apagvel, somente
de leitura denominada de memria ROM (Read Only Memory). Assim
como a memria DRAM a memria ROM uma memria de acesso
aleatrio, organizada e acessada em palavras do tamanho da palavra
do processador, na qual fica gravado permanentemente o programa
responsvel pela verificao inicial da integridade dos componentes
bsicos da placa me e pela carga inicial do sistema operacional.

Memria Secundria

A memria secundria formada pelos elementos de memria


que no esto diretamente conectados ao barramento de memria
do processador, sendo desta forma acessados de maneira indireta
a partir do barramento de entrada e sada. De um modo geral
podemos dizer que a memria secundria formada por elemento
de armazenamento de massa, tais como disco rgido e fita magntica,
e pelos elementos de armazenamento removveis, tais como discos
flexveis, discos ticos e pen-drivers. Por no estarem diretamente
conectados ao barramento de memria do processador, estes tambm
so conhecidos como memria externa.

Ainda seguindo a ordem apresentada na Figura 1, estudaremos


primeiramente os Discos Magnticos, em seguida os Discos ticos,
as Fitas Magnticas e por fim os pen-drivers.
Saiba Mais

Disco Magntico 2
Conhea
um pouco da
Conforme j dissemos, os discos magnticos recebem esta histria, com
designao por armazenarem a informao a partir da mudana da fotos, dos
primeiros discos
orientao magntica de minsculos partculas Ferri-magnticas Magnticos.
depositadas sobre uma mdia suporte. Visite o site http://
www-03.ibm.
com/ibm/history/
Desde o seu lanamento, feito pela IBM em meados da dcada de exhibits/storage/
50 do sculo passado, os discos Magnticos evoluram2 muito, tendo storage_350.html
o seu tamanho sido reduzido a fraes do tamanho original ao mesmo
realmente
tempo em que sua capacidade de armazenamento e velocidade de muito
acesso foram aumentadas de centenas milhares de vezes a dos interessante!

primeiros dispositivos. Os primeiros discos apresentados mediam

17
Infraestrutura de Hadware

60x68x29 polegadas, aproximadamente 152x172x74 cm, e tinham


uma capacidade de armazenamento de 50 MB de informao.

Ao longo do tempo foram surgindo diversas variantes para este tipo


de dispositivo, sendo os mais importantes o discos flexvel, tambm
chamado de disquete, e o disco rgido, nosso conhecido HD. Dada a
sua importncia, tanto no contexto histrico quanto no contexto atual,
aqui estudaremos apenas os discos rgidos.

A Figura 5 a seguir nos traz um esquema simplificado da estrutura


interna de um disco rgido. Como podemos perceber, seus principais
componentes internos so a mdia magntica, o motor de trao da
mdia, tambm conhecido como spinde motor, a cabea de leitura
e escrita e o dispositivo de posicionamento da cabea, tambm
conhecido como voice coil.

Figura 5 Estrutura interna de um disco rigido

A fim de aumentar a capacidade de armazenamento do disco,


os dois lados da mdia magntica so utilizadas como discos
independentes, cada qual sendo acessada por sua prpria cabea de
leitura e escrita. comum tambm utilizar-se um conjunto com vrias
mdias em conjunto, presas ao eixo de um nico motor de trao, as
quais so acessadas por um conjunto de cabeas de leitura e escrita
controladas por um nico dispositivo de posicionamento. A Figura 6 a
seguir pode nos dar uma ideia de como este conjunto fica disposto no
interior do disco rgido.

18
Infraestrutura de Hardware

Figura 6 - Disposio das mdias Magnticas e das cabeas de gravao e leitura de um


disco rgido

O princpio de funcionamento de um disco rgido de certa forma


at bem simples. Conforme dissemos a princpio, os bits de dados
so gravados na mdia alterando-se o sentido do fluxo magntico do
material Ferri-magntico que est depositado sobre esta, da mesma
forma como se grava uma informao de udio em uma fita magntica.
A fim de permitir o acesso ordenado dos dados gravados, estes ficam
organizados em blocos denominados de setores do disco, os quais
so gravados em regies distintas da mdia denominadas de trilhas.
A Figura 7 a seguir nos traz um diagrama simplificado de como fica
a disposio das trilhas e setores do disco. Observe que cada trilha
nada mais que a regio disposta sob a cabea de leitura e escrita
durante o processo de rotao que a mdia sofre ao ser tracionada
pelo eixo do motor. Observe ainda que cada trilha, por sua vez,
dividida em pequenas regies ou setores, aonde so gravados os
dados.

Desta forma, o processo de acesso aos dados gravados no disco


exige primeiramente que a cabea de leitura e escrita seja posicionada
sobre a trilha onde se encontra o setor com os dados. Isto feito
variando-se a corrente eltrica aplicada ao voice-coil. Em seguida,
simplesmente aguarda-se que o setor com os dados passe sob a
cabea de leitura e escrita, a qual converte o fluxo magntico presente
na mdia em corrente eltrica que enviado placa controladora do
disco para por fim ser convertido novamente em informao lgica. O
processo de escrita anlogo a este, com exceo que em vez de ler
a informao, a cabea de leitura e escrita ir gravar a informao no
setor desejado.

19
Infraestrutura de Hadware

Figura 7 - Organizao dos dados na mdia

Apenas para concluir, na Figura 8 a seguir, temos uma viso mais


detalhada da organizao dos dados nos setores do disco. Observe
que antes dos dados propriamente ditos cada setor do disco tem uma
regio com um prembulo, ou seja, uma regio com um padro de
gravao previamente estabelecido que permite identificar o ponto
aonde comea o setor e qual a sua identificao. E, aps a regio
aonde os dados esto gravados temos uma regio com um cdigo de
verificao de erro tambm conhecido como ECC. O ECC utilizado
tanto para a verificao da integridade dos dados gravados quanto
para uma possvel recuperao dos mesmos. Ainda como medida
de segurana, a fim de melhor demarcar a regio ocupada por cada
setor, sempre entre dois setores existe uma regio que deixada sem
gravao conhecida como gap de interseo.

Figura 8 - Organizao dos dados nos setores do disco

Conforme citamos na introduo desta seo, com o passar do

20
Infraestrutura de Hardware

tempo a evoluo dos discos rgidos no se deu apenas com vista a


reduo de suas dimenses fsicas e no aumento da sua capacidade
de armazenamento. Houveram tambm avanos significativos na taxa
de transferncia dos dados e na reduo das taxas de erro de leitura
e escrita dos dados.

Sendo o disco rgido basicamente um elemento de memria,


como de se esperar, de suma importncia que os dados nele
armazenados possam ser recuperados de maneira rpida e livre de
falhas.

Observe que a princpio a taxa de transferncia dos dados entre a


mdia e o sistema funo direta da velocidade de rotao desta e da
rea fsica ocupada pela unidade bsica de informao gravada. Ou
seja, quanto menor a rea ocupada por um bit de informao e quanto
mais rpido a mdia passar na frente da cabea de leitura e gravao,
maior a taxa de transferncia dos dados.

Atualmente a rea ocupada por um bit de informao est na


ordem do micrometro e a rotao da mdia na ordem das 10.000
rotaes por minuto.

Por outro lado, quanto menor a rea ocupada por um bit de


informao na mdia e quanto maior a velocidade de rotao da mdia
maior o risco de ocorrer falhas de gravao e escrita.

Desta forma, historicamente o mercado de discos rgidos teve


sempre que buscar um ponto de equilbrio entre a taxa de transferncia
e a segurana dos dados. Discos rpidos e seguros eram caros,
discos baratos ou no eram rpidos ou no eram seguros.

Pensando nisto, no fim da dcada de 80 do sculo passado, um


dos inventores dos processadores RISC, David Patterson, props
uma nova arquitetura para os discos rgidos que permitiria aumentar
a velocidade de transferncia dos dados ao mesmo tempo em que
aumentaria a segurana dos dados gravados, tudo isto a custa de
inserir uma certa taxa de redundncia nos dados gravados de tal
forma que estes pudessem ser acessados em paralelo, e no mais
sequencialmente como de costume, e que na ocorrncia de uma falha
os dados pudessem ser recuperados mais facilmentes. Esta nova
arquitetura recebeu o nome de RAID (Redundant Array of Independent
Drives).

A proposta de Patterson na verdade apresentava no apenas

21
Infraestrutura de Hadware

uma, mas sete possibilidades diferentes de organizar um conjunto


de discos rgidos a fim de explorar diferentes nveis de segurana e
taxas de transferncia dos dados. Veremos aqui apenas duas destas
propostas que ficaram conhecidas como RAID 0 e RAID 1.

RAID Nvel 0

A proposta da RAID 0 visa basicamente aumentar velocidade de


acesso aos dados, ou seja, a taxa de transferncia, sem entretanto
apresentar nenhuma alterao no nvel de segurana dos mesmos.

Conforme podemos ver pela Figura 9 a seguir, nesta proposta,


os discos so internamente divididos em reas, chamadas de strip.
Observe que no exemplo apresentado na figura ns temos quatro
discos rgidos os quais foram divididos em 16 strips. Veja que, se
fosse possvel dividir um arquivo em diversos arquivos menores, que
estivessem distribudos pelas strips dos quatro discos, poderamos
acessar 4 partes do arquivo simultaneamente, uma de cada disco,
aumentando assim em quatro vezes a nossa velocidade de leitura e/
ou leitura.

Figura 9 - Organizao dos dados na RAID 0

RAID Nvel 1

A proposta da RAID 1 muito semelhante a anterior, e visa


aumentar velocidade de acesso ao mesmo tempo em que busca
aumentar o nvel de segurana dos mesmos.

Conforme podemos ver pela Figura 10 a seguir, nesta proposta, os


discos tambm so internamente divididos em reas, s que alem dos
quatro discos iniciais temos mais quatro discos divididos exatamente
como os quatro primeiros. O objetivo aqui que este segundo conjunto
de discos sirva como armazenamento de segurana para os dados
gravados nos primeiros discos. Desta forma, sempre que um dado

22
Infraestrutura de Hardware

gravado ou alterado no primeiro conjunto de discos o mesmo tambm


gravado ou alterado no segundo conjunto, de tal forma que caso seja
identificado alguma falha nos dados gravados tanto no primeiro como
no segundo conjunto de discos, a copia existente no outro conjunto
de discos possa ser utilizada para recuperar a falha identificada.

Figura 10 - Organizao dos dados na RAID 1

Como voc deve ter percebido, a utilizao de uma arquitetura


RAID exige a utilizao de um controlados especial, um hardware
dedicado, responsvel por prover tanto a leitura e/ou leitura simultnea
das strips nos discos, como por prover as verificaes e correes de
segurana necessrias nos arquivos gravados.

Disco tico

Os discos ticos recebem este nome por utilizarem a refrao da


luz como meio de gravao e leitura dos dados na mdia, ou seja,
apenas como um recurso didtico podemos pensar que se a luz reflete
na mdia temos um bit zero e se a luz no reflete temos um bit um.
A Figura 11 a seguir pode nos dar uma ideia melhor do que estamos
falando.

Figura 11 - Gravao dos dados na mdia tica

23
Infraestrutura de Hadware

Diferentemente dos discos magnticos, onde os dados so


gravados em trilhas concntricas, nos discos ticos os dados so
gravados sequencialmente em uma trilha espiral nica que se projeta
no centro para a borda do disco. Devido a isto, a fim de evitar que a
velocidade de leitura e/ou escrita do disco varie ao longo da trilha, a
velocidade de rotao do disco varia, de forma a manter a taxa de
gravao e/ou leitura aproximadamente constante.

O processo de leitura de uma mdia tica se d pela atravs de


uma cabea tica de leitura e escrita, conforme podemos ver pela
Figura 12 a seguir. Nesta figura temos um esquema simplificado,
em corte dos elementos que formam esta cabea tica de leitura e
escrita. Observe que temos uma fonte de luz lazer a qual aplicada
diretamente sobre a mdia e uma clula foto sensvel que detecta se
a luz projetada reflete ou no na mdia. Na verdade, para que a luz
possa refletir na mdia esta possui uma camada de material reflexivo
colocada aps a camada aonde os dados esto gravados, no lado
oposto aonde incide o lazer. Dependendo assim do dado gravado,
se um bit zero ou um bit um, a luz aplicada pelo lazer pode ou no
transpassar a regio aonde o dado est gravado, refletindo assim na
camada reflexiva, e retornando em seguida para ser conduzida pelo
espelho prismtico clula foto sensvel.

Figura 12 - Estrutura de uma cabea tica de leitura e escrita

Do ponto de vista do mtodo de gravao, existem atualmente


no mercado trs tipos de mdias ticas, as mdias apenas para
leitura, tambm conhecidas como mdias ROM, as mdias gravveis,

24
Infraestrutura de Hardware

conhecidas como mdias R, e as mdias regravveis, conhecidas


como mdias RW.

As mdias ROM tem o seu contedo gravado por processo de


prensagem no seu substrato durante a sua fabricao. A estrutura de
uma mdia ROM com dupla face e dupla camada de gravao pode
ser visto na Figura 13 a seguir. Como voc pode observar, esta mdia
formada por vrias camadas de policarbonato, o qual moldado
internamente com a informao a ser gravada, por este motivo diz-se
que os dados gravados em uma mdia tica deste tipo no podem ser
afetados por arranhes ou riscos acidentais em sua superfcie, uma
vez que esto gravados no interior do disco e no em sua superfcie.

Figura 13 - Estrutura de uma mdia ROM

Tanto as mdias R como as RW possuem uma estrutura interna


conforme podemos ver na Figura 14 a seguir. Nestes tipos de mdias
tanto o processo de leitura quanto o de gravao tico feito a partir
da aplicao de luz lazer. Como podemos ver pela figura, estas mdias
possuem 4 camadas. A primeira, que serve de suporte s demais,
um substrato de policarbonato. A segunda camada a camada foto
sensvel. A terceira camada a camada reflexiva, e por ltimo temos
mais uma fina camada de policarbonado que serve de proteo
camada reflexiva.

Nas mdias tipo R a camada foto sensvel recebe uma aplicao


de corante foto sensvel, normalmente cianina ou ftalocianina. Desta
forma, ao receber uma aplicao da luz lazer de alta intensidade, o
que ocorre durante o processo de gravao, o corante modifica a sua
cor, tornando-se opaco, permitindo assim a gravao da informao
na mdia. Durante o processo de leitura aplica-se uma luz lazer de
baixa intensidade, a qual no suficiente para sensibilizar o corante
presente na camada fotosensve.

25
Infraestrutura de Hadware

Nas mdias RW a utiliza-se uma mistura de prata, ndio, antimnio


e telrio no lugar do corante como camada foto sensvel. Esta liga
tem a propriedade de mudar o seu estado de cristalino para amorfo
quando exposto a luz lazer intensa, o que ocorre durante o processo
de gravao, e de retornar ao estado cristalino se exposto a luz lazer
moderada, o que ocorre durante o processo de apagamento do disco.
O restante do processo de leitura e escrita semelhante aos demais
tipos de mdias ticas.

Figura 14 - Estrutura das mdias tipo R e RW

Por fim, vale um comentrio a respeito das diferenas existentes


entre os CDs, DVDs e Blue Rays.

A princpio, todos funcionam da mesma forma, conforme j foi


descrito. A grande diferena est no comprimento de onda do lazer
utilizado e no tamanho da regio fsica utilizada para gravar um bit de
informao. A Figura 15 a seguir demonstra estas diferenas.

Figura 15 - Diferenas entre CDs, DVDs e Blue Rays

26
Infraestrutura de Hardware

Fita Magntica

As fitas Magnticas so a mais antiga forma de armazenamento


de dados ainda em uso. Este meio de armazenamento foi inventado
no incio da dcada de 50 do sculo passado.

Assim com os discos magnticos as fitas magnticas utilizam a


mudana da orientao magntica de algum tipo de material ferri-
magntico como meio de gravar a informao na mdia suporte.

Apesar de toda evoluo dos outros meios de armazenamento, as


fitas Magnticas ainda apresentam inmeras vantagens, tais como:
grande capacidade de armazenamento, baixo custo por unidade
armazenada, longa expectativa de vida e a confiabilidade na reteno
dos dados ao longo de sua vida til. Por este motivo ainda so um
dos meios mais utilizados como meio de armazenamento removvel
para grandes volumes de informao e onde se necessita garantir
Saiba Mais
maior segurana aos dados armazenados.
Conhea um
3

Pen-Driver pouco da histria


dos pen-drivers
no link http://
Conhecido pelos nomes de Pen-Driver, USB Flash Driver, Flash pt.wikipedia.org/
wiki/USB_flash_
Driver, Thumb-driver entre outros nomes, este dispositivo faz parte drive
da nova gerao dos meios de armazenamento, construdos com o
uso de memria no voltil baseada em semicondutor3. A Figura 16 a
seguir nos traz o formato de um pen-driver tpico, ainda que hoje em
dia no incomum ver pen-drivers com as mais variadas formas.

Desde o seu lanamento no ano de 2000 pela IBM, os pen-drivers


evoluram substancialmente, passando de 8MB para atuais 128 GB
de memria.

Devido a sua flexibilidade de uso, alta capacidade de


armazenamento e reduo de custo pelo qual tem passado, os pen-
drivers so a mdia removvel preferida pela maioria dos usurios de
computadores pessoais.

27
Infraestrutura de Hadware

Saiba Mais Figura 16 - Pen-Driver tipico

4
Voc sabe o que
Conforme podemos ver pela Figura 17 a seguir, a estrutura interna
uma memria
FLASH? de um pen-driver bastante simples, composta basicamente de um
Conhea um
controlador UBS e de um ou dois chips de memria FLASH4.
pouco mais
sobre este tipo
de memria
visitando a
pgina

http://
pt.wikipedia.org/
wiki/
Mem%C3%
B3ria_flash

Figura 17 - Estrutura interna de um pen-driver

Vamos Revisar?

Neste captulo voc conheceu a hierarquia de memria e


seus principais componentes. Viu que o sistema de memria dos
computadores atuais formado conjuntamente pela memria primria
e pela memria secundria. E que a memria primria formada
pelos elementos de memria que esto conectados diretamente ao
barramento de memria do processador, ao passo que a memria
secundria formada pelos elementos de memria que esto
conectados ao processador indiretamente atravs do barramento de
entrada e sada.

Neste captulo voc tambm pde perceber que o objetivo da


hierarquia de memria apresentar ao processador um sistema de
memria com uma velocidade de acesso prxima da memria cache
e com um espao de armazenamento to grande quanto o disponvel

28
Infraestrutura de Hardware

nos elementos da memria secundria.

Voc aprendeu tambm que a memria primria formada pelo


conjunto de registradores, pela memria cache e pela memria
principal. E que a memria secundria, atualmente formada pelo
disco rgido, pela unidades ticas (CD, DVD e Blue-Ray), pela fita
magntica e pelos pen-drivers.

Por fim, voc conheceu os detalhes de construo e a tecnologia


empregada em cada um dos elementos de memria apresentados,
indo desde as memria baseadas em semicondutores, passando pela
memria de armazenamento em mdia magntica e concluindo com a
memria de armazenamento tico.

29
Infraestrutura de Hadware

Captulo 2

O que vamos estudar?

Neste captulo, vamos estudar os seguintes temas:

Diversos tipos de memria que compem o subsistema de


memria dos computadores

Hierarquia de memria

Troca de dados entre as estruturas de memria dos


computadores

Mapeamento de dados entre as memrias principal e cache

30
Infraestrutura de Hardware

Captulo 2 Memria Cache

Vamos conversar sobre o assunto?

Antes de comear a estudar a disciplina infraestrutura de hardware,


voc j tinha ouvido falar em memria cache? Possivelmente sim,
mas o que talvez voc no saiba o porqu de seu uso e as suas
principais funcionalidades. Isso o que veremos nesse captulo.

Vamos estudar a memria cache e como os dados so trocados


entre as memrias cache e principal. Para iniciarmos a nossa
conversa, podemos dizer que a cache uma memria menor e
mais rpida que a memria principal, estando localizada entre os
registradores e a memria principal de acordo com a hierarquia de
memria que estudamos no Captulo 1. Por estar entre a CPU e a
memria principal, normalmente, os dados so trocados da CPU com
a cache e desta com a memria principal. Devido ao seu tamanho ser
menor que a memria principal, a cache s contm cpia de pores
da memria principal. Podemos observar a localizao da cache no
esquema apresentado na Figura 1.

Figura 1- Cache X Principal

Voc deve estar se perguntando qual o objetivo de se criar uma


memria menor que a principal, j que ela no poderia comportar todos
os dados da principal. A principal motivao para a criao da cache
foi acelerar a velocidade de transferncia das informaes entre CPU

31
Infraestrutura de Hadware

e a memria principal, aumentando o desempenho dos sistemas.

Pelo fato de ser menor, a memria cache armazena de instrues


e dados de acordo com algum algoritmo de substituio. Por
exemplo, pode-se utilizar um algoritmo que mantenha na cache
apenas as informaes mais frequentemente acessados do programa
em execuo. Esses algoritmos de substituio de dados sero
abordados nesse captulo em sees posteriores. O importante agora
que voc entenda a filosofia da cache e o seu princpio bsico de
funcionamento.

Acesso a Dados na Memria Cache

Como a cache fica localizada entre a CPU e a memria principal,


todo e qualquer informao acessada ser incialmente procurada
na cache. Somente no caso da informao no estar armazenada
na cache que a busca se dar na memria principal. Essa tcnica
naturalmente aumenta o desempenho dos sistemas computacionais,
uma vez que a cache menor que a principal. Sendo assim, procurar
dados em um espao menor tende a ser mais rpido que procurar
dados num espao maior.

Quando um dado no pde ser encontrado na cache, significa


que aquela informao no est l, estando, portanto, apenas na
principal ou no disco. Como esses dois ltimos tipos de memria
esto mais abaixo da cache na pirmide de hierarquia, significa que
so mais lentas, embora maiores. Sendo assim, o fato da busca por
informaes se d inicialmente na cache reduz o nmero de acessos
a principal a aos discos aumentando o desempenho dos sistemas
computacionais.

Vamos observar na Figura 2, um fluxograma indicando como ocorre


a leitura de dados na memria. No primeiro momento a CPU solicita

32
Infraestrutura de Hardware

a leitura de um determinado endereo em memria. Como falamos


anteriormente, esse dado ou palavra ser buscada inicialmente na
cache. Por isso, o fluxograma apresenta o losango da estrutura de
deciso onde feita a pergunta se aquela palavra procurada est na
cache. Caso positivo (( o losango aponta a sada Sim), o contedo
do endereo ser buscado e entregue CPU. Caso negativo ( o
losango aponta a sada No) a informao a ser buscada deve ser
acessada na memria principal. Porm, para trazer esses dados, a
informao deve passar da MP para a cache e desta para a CPU.
Assim, um espao (aqui chamaremos de slot) ser alocado na cache
para comportar a informao, e em seguida, o dado ser carregado
na cache para posteriormente seguir para a CPU.

Figura 2 - Operao de Leitura na Cache

A memria principal apresenta a uma organizao dividida em


blocos. Um bloco composto por um conjunto de palavras. Cada
palavra possui um endereo para que a mesma possa ser alcanada
e este endereo armazena um contedo, que pode ser dado ou
instruo. J para a memria cache, a organizao se d em
linhas, tambm denominadas slots e cada slot (linha) armazena um
conjunto de palavras. Voc deve estar pensando que coincidncia
o fato de que tanto uma linha da cache quanto um bloco da memria
principal armazenarem um conjunto de palavras. Entretanto, no
coincidncia, e sim uma obrigatoriedade para que o subsistema de
memria funcione eficientemente que o nmero de palavras de um

33
Infraestrutura de Hadware

bloco da memria principal seja igual ao nmero de palavras de uma


linha da cache. Voc pode observar na Figura 3 a diviso da memria
principal e da memria cache.

Figura 3- Estrutura da MP e da Cache

Ao observar a Figura 3, notamos que a memria principal possui


2n palavras endereveis. Cada palavra tem um endereo de n bits.
Existe um nmero fixo de blocos com K palavras. A memria cache,
por sua vez, apresenta C slots ou linhas, e cada um com possui K
palavras. Note que o nmero de palavras de uma linha da cache
igual ao nmero de palavras de um bloco da memria principal. Para
que esse esquema funcione com eficincia, o nmero de linhas da
cache deve ser bem menor que o de blocos da memria principal, j
que a memria principal deve ser bem maior que a cache. Lembre-
se que a a memria cache s pode ter parte dos dados da memria
principal.

Sendo assim, se nem todos os dados da memria principal esto


na cache e se inicialmente os dados so procurados na cache (vide
Figura 2), como o processador poder identificar se o dado procurado
est na cache?

importante salientar que o processador armazena em seus


registradores, o endereo de uma palavra da memria principal e no
da memria cache. Entretanto, o dado s procurado na memria
principal aps no ser encontrado na cache. Mas se o dado est na
cache, como acess-lo de forma rpida, uma vez que s se conhece
o seu endereo da memria principal?

34
Infraestrutura de Hardware

A soluo para esse problema o que chamamos de mapeamento


de memria. Voc j ouviu falar disso? Essa tcnica existe para
possibilitar a descoberta da localizao de um bloco da memria
principal entre as linhas da cache. Isso necessrio j que o nmero
de linhas da cache bem menor que o nmero de blocos da MP.
Dessa forma, no existe uma linha da cache dedicada para cada
bloco da MP. Caso isso acontecesse, o nmero de linhas da cache
deveria ser igual ao nmero de blocos da MP e isso iria de encontro
ao princpio bsico que vimos no captulo 1 , que pela hierarquia de
memria, a cache fica acima da MP na pirmide de hierarquia, sendo
mais rpida e menor que a MP.

Agora que voc j sabe o porqu da necessidade do mapeamento,


vamos estudar trs maneiras diferentes para se mapear de dados
entre a MP e a cache. So eles: mapeamento direto, mapeamento
associativo e mapeamento associativo por conjunto.

Mapeamento de Memria

A primeira tcnica que vamos estudar a mais simples e


denominada Mapeamento Direto. Atravs dele, cada bloco da memria
principal mapeado em uma linha especfica da cache.

O nosso problema inicial localizar uma determinada palavra na


cache, conhecendo apenas o seu endereo na MP. Lembre-se que
a troca de dados entre os registradores e a memria cache feito
palavra a palavra, enquanto que a troca de dados entre a MP e a cache
feito por bloco (conjunto de palavras). Sabendo qual o endereo
da MP que contm a palavra procurada, possvel saber qual bloco
da MP a contm. Conhecendo-se o bloco na MP, pode-se utilizar as
tcnicas de mapeamento direto para se calcular qual a linha da cache
armazena aquele bloco e consequentemente, a palavra procurada.

Para se calcular qual a linha especfica da cache que um


determinado bloco da MP se encontra, o subsistema de memria
utiliza uma equao matemtica, quando o mapeamento direto:

35
Infraestrutura de Hadware

i=j modulo m onde

i=linha da cache onde o bloco est armazenado

j=nmero do bloco da memria principal

m=nmero total de linhas na cache

Apenas para relembrar, a operao aritmtica mdulo retorna o


resto da diviso inteira de j por m. Perceba que j o nmero do bloco
da memria principal que se deseja encontrar. Como ele est numa
determinada linha na cache, precisa-se encontrar que linha essa, no
nosso caso, representado pela equao por i . A varivel m refere-se
ao total de linhas da cache.

Para ficar mais fcil de compreender, vamos observar o exemplo


apresentado na Figura 4. Deseja-se descobrir onde est localizado
na cache o bloco da MP de nmero 12. Sabe-se que a memria cache
utiliza o mapeamento direto e que possui 8 linhas ao total.

Figura 4- Mapeamento Direto

Aplicando-se a equao i = 12 modulo 8 , encontramos 4 como


resultado, significando que o bloco 12, caso esteja na cache, dever
estar ocupando a linha 4, j que o mapeamento direto obriga que um
determinado bloco da MP ocupe uma linha especfica na cache. Vamos
pensar agora que desejamos descobrir onde o bloco de nmero 20
da MP encontra-se na cache. Aplicamos novamente a equao i =
20 modulo 8 e novamente encontramos 4 como resultado. Assim, o

36
Infraestrutura de Hardware

bloco 20 da MP tambm ocupar a linha 4 caso ele esteja na cache.

Nesse momento, voc deve estar se perguntando, como os 2


blocos podem ocupar a mesma linha na cache. Eles podem sim, desde
que em momentos diferentes. Nunca podero estar os dois blocos
ao mesmo tempo, j que a quantidade de palavras de um bloco
equivalente a quantidade de palavras comportadas por uma linha da
cache. Ns consideramos o mapeamento como direto, porque sempre
que o bloco 12 estiver na cache nessa organizao de memria, o
mesmo estar na linha 4. O mesmo dizemos do bloco 20 e tambm
do 28... Isso comprova a nossa afirmao inicial, que cada bloco da
memria principal mapeado em uma linha especfica da cache.

Neste momento, voc deve estar com um novo questionamento:


como o subsistema de memria saber se num momento, o
bloco 12, bloco 20 ou 28 que est na linha 4 da cache?

Para isso, o esquema de mapeamento direto faz uso de uma outra


informao, que denominada TAG e est contida no registrador de
endereo (MAR).

A TAG para o mapeamento direto calculada pela seguinte


equao:

TAG = j div m onde

TAG = linha da cache onde o bloco est armazenado

j=nmero do bloco da memria principal

m=nmero total de linhas na cache

Voc consegue perceber qual a diferena de uma equao para


a outra? A primeira utiliza a operao mdulo que representa o resto
da diviso inteira. A segunda utiliza a operao div que representa o
quociente da diviso. Assim, a TAG ser obtida atravs da obteno
do quociente entre o nmero do bloco da MP e o nmero total de
linhas da cache.

Pensando no exemplo da Figura 4, para o bloco de nmero 12


seria calculada a TAG =1, enquanto para o bloco de nmero 20
seria calculada a TAG =2. A TAG=3 equivaleria ao bloco de nmero
28. Quando se escreve esses nmeros em binrio se obtm a
representao na coluna na TAG da linha 4. Essa TAG o que define
que no momento especfico quem est na linha 4 da cache o bloco
12 e no o bloco 20.

37
Infraestrutura de Hadware

Dessa forma, poderemos definir TAG como um campo para indicar


que bloco em particular da memria principal est sendo armazenado
naquela linha da cache. Ele sempre ser necessrio, pois uma linha
da cache no pode ser dedicado a um nico bloco, j que o nmero
de linhas da cache bem inferior ao de blocos da MP.

Vamos agora resolver um exerccio que consolidar esses conceitos


que estudamos sobre mapeamento direto. Vamos considerar uma
cache que trabalha com mapeamento direto e possui tamanho total
de 64 Kbytes. A memria principal, por sua vez tem capacidade total
16Mbytes e os seus endereos possuem 24 bits. O tamanho do bloco
da memria principal 4bytes. Descubra ento qual o formato do
endereo da memria principal.

Para resolver esse exerccio o que voc precisa saber da teoria?


Em primeiro lugar, voc deve lembrar que o MAR um registrador
(memria interna CPU) que armazena endereos de palavras da
memria principal. Em segundo lugar, voc precisa lembrar que o
mapeamento direto transfere um dado bloco da memria principal
para uma linha especfica da cache. Tambm importante lembrar
que o tamanho do bloco da MP o mesmo da linha da cache, ou seja,
em outras palavras, o nmero de bytes que cabem no bloco da MP
o mesmo comportado por uma linha da cache.

Acrescentaremos ainda uma informao adicional com relao


a diviso de campos do MAR para o mapeamento direto: O MAR
precisar conter um conjunto de bits para representar a linha da
cache ocupada pela palavra procurada; um outro conjunto de bits
para representar a TAG (citado previamente utilizado para identificar
qual o bloco que ocupa aquela linha, naquele momento); e por fim,
um ltimo conjunto de bits para representar a prpria palavra, dentro
da linha, uma vez que uma linha da cache comporta um conjunto
de palavras. Em sntese, o MAR, para o mapeamento direto, est
subdividido em trs agrupamentos de bits, como podemos observar
na Figura 5.

Figura 5 - MAR para o mapeamento Direto

38
Infraestrutura de Hardware

Voltando ao nosso exemplo original, j estamos cientes da base


terica para resolver o exerccio. Dessa forma, precisamos descobrir
a quantidade de bits de cada um desses grupos (tag, linha e palavra)
e a quantidade total dos bits do MAR. Essa ltima informao, foi nos
passada no exemplo: observe a frase A memria principal, por sua
vez tem capacidade total 16Mbytes e os seus endereos possuem
24 bits. Isso significa que o MAR possui 24 bits agrupados em
trs campos. Precisamos ento descobrir a quantidade de linhas
disponveis na memria cache. Como faremos isso? J sabemos o
tamanho total da cache e tambm sabemos quantos bits cada linha
comporta (lembre-se que uma linha tem a mesma capacidade de
um bloco da MP). Dividindo-se o tamanho total da cache (64 kbytes)
pela quantidade de bytes de 1 linha (4 bytes) chegamos a 64Kbytes/4
bytes = 16 K linhas.

Note que so 64 Kbytes e no 64 bytes. Por isso, voc no poder


eliminar o K, pois ele representa a ordem de grandeza 1000.
Entretanto, devemos utilizar a notao em binrio o que significa que
1K = 1024 = 210.

Ao colocarmos 16K em potncia de 2, obtemos 16 K = 24 . 210 =


214 . Isso significa que temos 214 linhas possveis na cache. Um bloco
da MP pode ocupar alguma dessas linhas e para represent-las sero
necessrios 14 bits. Em outras palavras, voc dever observar o
expoente da potncia de 2 da quantidade de linhas. No nosso caso, j
descobrimos que o campo slot/linha dever ter 14 bits.

Vamos agora tentar descobrir quantas TAGs existem e


consequentemente, quantos bits so necessrios para represent-las.
A TAG ir indicar qual bloco est naquela linha num dado momento.
Para isso, deveremos dividir o nmero de blocos da MP pelo nmero
de linhas da cache. Essa ltima informao, acabamos de descobrir
(214). O nmero de blocos, ainda no temos, pois nos foi dado o
tamanho da MP e a capacidade de um bloco. Ora, mas essas duas
informaes, j so suficientes para a descoberta do nmero de
blocos. Basta dividirmos a capacidade toral da MP pela capacidade
de 1 bloco, ento teremos a quantidade de blocos.

Assim teremos 16Mbytes/4bytes = 4M. Entretanto, 1M equivale a


1K x 1K, ou seja 210 x 210 = 220. Assim, para esse caso, teremos
4M = 4 x 220 blocos.

Mas a nossa busca pelo nmero de bloco objetivou descobrimos

39
Infraestrutura de Hadware

o nmero de TAGs. Para descobrir o nmero de TAGs vamos dividir


o nmero de blocos pelo nmero de linhas. Assim temos o seguinte
clculo:

nmero de TAGs = 4 x 220 blocos/214 linhas

nmero de TAGs = 22 x 220 blocos/214 linhas

nmero de TAGs = 222 blocos/214 linhas

nmero de TAGs = 22 x 220 blocos/214 linhas

nmero de TAGs = 28 TAGs

Um bloco da MP dever ter uma TAG para identifica-lo na cache


e para representar essa TAG sero necessrios 8 bits. Em outras
palavras, voc dever observar o expoente da potncia de 2 da
quantidade de TAGs. No nosso caso, j descobrimos que o campo
TAG dever ter 6 bits.

Com isso poderemos descobrir o nmero de bits para representar


a palavra, calculando o que falta para completar os 24 bits do MAR.
Temos 14 para representar a linha e 8 para TAG, totalizando 22 bits.
Como o MAR possui 24 bits, conclumos que os 2 bits restantes
representam a palavra. O formato do MAR para a cache do exemplo,
utilizando mapeamento direto ilustrado na Figura 6.

Figura 6 - Formato do MAR

De acordo com o exemplo estudado, verificamos que quando uma


palavra precisa ser procurada na memria, o subsistema de memria
faz a leitura do endereo no barramento de endereos (conforme
estudado no volume 2). Esse endereo est armazenado no MAR,
registrador de endereo da CPU. Para interpretar a informao do
MAR e fazer inicialmente a busca pela palavra na memria cache,
caso o MAR contenha a informao :000000010000000000111011,
o subsistema de memria interpretar esse endereo da seguinte
maneira:

40
Infraestrutura de Hardware

- Os 8 primeiros bits (00000001) indicam a TAG de


nmero 0

-Os 14 bits seguintes (00000000001110) indicam a linha


de nmero 14

-Os 2 ltimos bits (11) indicam a palavra de nmero 3.

Assim a informao a ser buscada a palavra 3 da linha


14, e identificado pela TAG 0.

Essa interpretao se d devido ao tipo do mapeamento. Caso


seja utilizado um outro tipo de mapeamento, a interpretao do MAR
ser diferente. O mapeamento direto foi o primeiro tipo estudado,
mas estudaremos a seguir mais dois tipos de mapementos.

Para conclumos o estudo deste primeiro tipo de mapeamento,


vamos observar quais os pontos positivos e os pontos negativos.
O mapeamento direto apresenta um custo em termos de hardware
menor (circuitos mais simples e menos custoso), uma tcnica rpida,
ganhando assim em velocidade na hora da busca por informaes na
cache, uma vez que os dados so procurados diretamente em uma
linha especfica, sem precisar varrer a cache completa.

Em se tratando dos pontos negativos, poder se ter um mau


aproveitamento do tamanho da cache, a depender dos endereos
buscados. Para ficar mais claro de perceber isso, imagine naquele
nosso exemplo anterior, se o bloco 12 fosse alocado para cache
inicialmente. Ele iria para a linha 4, como vimos. Se imediatamente
depois fosse acessado o bloco 20 e o mesmo no tivesse na cache,
ele seria buscado na principal e trazido para a cache. O bloco 20
tambm seria alocado na linha 4, mesmo que a cache estivesse com
outras linhas vazias. Isso comprova o mau aproveitamento da mesma.
Alm disso, o subsistema de memria reserva um espao na cache
para o controle de informaes. Observe na Figura 7, uma sntese
dos pontos positivos e negativos do mapeamento direto.

Figura 7- Mapeamento Direto

41
Infraestrutura de Hadware

A segunda tcnica de mapeamento de memria que vamos estudar


denominada Mapeamento Associativo. Atravs dele, cada bloco da
memria principal pode ser mapeado em qualquer linha da cache.

O nosso problema inicial localizar uma determinada palavra na


cache, conhecendo apenas o seu endereo na MP. Lembre-se que
a troca de dados entre os registradores e a memria cache feito
palavra a palavra, enquanto que a troca de dados entre a MP e a cache
feito por bloco (conjunto de palavras). Sabendo qual o endereo
da MP que contm a palavra procurada, possvel saber qual bloco
da MP a contm. Conhecendo-se o bloco na MP, pode-se utilizar as
tcnicas de mapeamento direto para se calcular qual a linha da cache
armazena aquele bloco e consequentemente, a palavra procurada.

Para o mapeamento associativo, a lgica de controle da cache


interpreta um endereo de memria simplesmente como um tag
e uma palavra, conforme possvel observar na Figura 8. Como a
linha a ser ocupada por um determinado bloco aleatria, no h
necessidade de um conjunto de bits no registrador de endereo (MAR)
para represent-la.

Figura 8 - Mapeamento Associativo

Voc deve estar se perguntando como o subsistema de memria


descobre que um determinado bloco est numa linha. Normalmente,
a TAG o identificador que indica qual bloco est naquela linha. No
mapeamento associativo isso tambm verdade porm a TAG ir
conter o nmero do bloco escrito na base binria. Observe na Figura 9,
o mesmo exemplo da Figura 4 quando o mapeamento o associativo.
O bloco 12 teria como TAG, a sequncia 01100.

42
Infraestrutura de Hardware

Figura 9- Mapeamento Associativo

Na Figura 9, optamos por alocar o bloco 12 da MP na linha 2 da


cache. Essa escolha foi aleatria. Poderamos ter escolhido, por
exemplo, a linha 7, 5 ou 0, j que o mapeamento associativo.

Vamos agora resolver um exerccio que consolidar esses


conceitos que estudamos sobre mapeamento associativo. Como
ficaria a diviso de bits do registrador de endereo (MAR) para uma
cache associativa com 64 linhas (slots). Considere que o MAR possui
24 bits e que cada bloco da MP possui 64 palavras.

Aqui novamente recorreremos a teoria para resolver. Novamente,


voc deve lembrar que o MAR um registrador (memria interna
CPU) que armazena endereos de palavras da memria principal. Em
segundo lugar, voc precisa lembrar que o mapeamento associativo
transfere um dado bloco da memria principal para qualquer linha da
cache. Tambm importante lembrar que o tamanho do bloco da MP
o mesmo da linha da cache, ou seja, em outras palavras, o nmero
de bytes que cabem no bloco da MP o mesmo comportado por uma
linha da cache. Por fim, lembre-se que a diviso de bits do MAR para
o mapeamento associativo ser em dois agrupamentos de bits. A TAG
e a palavra.

Com relao aos dados do exemplo, o nmero de linhas da


cache ser irrelevante, j que esse dado no aparece no MAR. J
sabemos que o nmero total de bits do MAR 24. Como cada bloco
da MP e consequentemente cada linha da cache possui 64 palavras,
precisaremos de 6 bits para representar a palavra. Como chegamos
nos 6 bits? Vamos escrever 64 palavras/bloco em potncia de 2.

43
Infraestrutura de Hadware

64 = 26 palavras em cada bloco ou em cada linha

Dessa forma, precisamos de 6 bits para representar as palavras


de uma linha, restando 18 bits do MAR para armazenar informaes
de TAG, conforme observamos na Figura10.

Figura 10 - Exemplo do MAR no Mapeamento Associativo

Vamos agora interpretar a mesma informao do MAR que fizemos


no mapeamento associativo, caso o MAR contenha a informao
:000000010000000000111011, o subsistema de memria interpretar
esse endereo da seguinte maneira:

- Os 18 primeiros bits (000000010000000000)


indicam a TAG de nmero1024

- Os 6 bits seguintes (111011) indicam a palavra


de nmero 59

Assim a informao a ser buscada a palavra


59 do bloco 1024.

Vamos agora observar quais os pontos positivos e os pontos


negativos deste tipo de mapeamento. O mapeamento associativo
apresenta um custo adicional no momento em que se vai procurar
uma informao na cache pois precisar comparar a TAG de cada
linha com o nmero do bloco para tentar localiz-lo, j que o bloco
procurado pode estar em qualquer linha. Isso poderia ser citado como
um ponto negativo. Por outro lado, o que era um ponto negativo no
mapeamento direto passa a ser um ponto positivo no associativo, pois
a memria cache tende a ser melhor aproveitada. Como o bloco da
MP pode ser alocado em qualquer linha da cache, o subsistema de
memria ir procurar uma linha livre na cache para alocar um bloco
da MP, no momento em que este for trazido para a cache.

J quando a cache estiver lotada, uma linha precisar ser


escolhida para alocar um novo bloco. Essa escolha feita de acordo
com algum algoritmo de substituio de linhas na cache que veremos

44
Infraestrutura de Hardware

mais a diante. A depender do algoritmo escolhido, essa substituio


poder trazer benefcios ou no ao desempenho. Observe na Figura
11, uma sntese dos pontos positivos e negativos do mapeamento
associativo.

45
Infraestrutura de Hadware

Referncias

STALLINGS, William. Arquitetura e Organizao de


Computadores. 5. ed

PATTERSON, D. A. e Hennessy, John L. Organizao e


Projeto de Computadores. LTC, 2000.

TANENBAUM, Andrew S. Organizao Estruturada de


Computadores. 4. ed. Traduo Helio Sobrinho. Rio de Janeiro:
Prentice-Hall, 2001.

46
Infraestrutura de Hardware

Conhea os Autores

Juliana Regueira Basto Diniz possui graduao em engenharia


eletrnica pela Universidade Federal de Pernambuco, mestrado e
doutorado em Cincia da Computao pela Universidade Federal de
Pernambuco. Atualmente professora da Universidade Federal Rural
de Pernambuco (UFRPE), desenvolvendo trabalhos no grupo de
Educao a Distncia desta universidade. Seus temas de interesse
em pesquisa so: Sistemas Distribudos, Computao Ubqua e
Ensino a Distncia.

Abner Corra Barros mestre em Cincia da Computao com


foco em Engenharia de Hardware pelo Centro de Informtica da
Universidade Federal de Pernambuco. Possui graduao em Cincia
da Computao pela mesma universidade. Atualmente professor
da disciplina de Organizao e Arquitetura de Computadores da
Faculdade Maurcio de Nassau e Engenheiro de Hardware da
Fundao de Apoio ao Desenvolvimento da UFPE (FADE), atuando
em um projeto de convnio entre o Centro de Informtica da UFPE
e a Petrobrs. Suas reas de interesse e pesquisa so: Hardware
Reconfigurvel, Arquitetura de Cores Aritmticos e Computao de
Alto Desempenho em Field-Programmable Gate Array (FPGA).

47

Você também pode gostar