Temos visto
computadores se moverem para fora de grandes salas com ar condicio-
nado para nossos gabinetes, depois para nossas escrivaninhas e agora
para os nossos colos e nossos bolsos. Mas isto não é o final... Como uma
força da natureza, a era digital não pode ser negada nem interrompida...
A supervia da informação pode ser bastante exagerada hoje, mas ela é
uma indicação sobre o amanhã. Ela irá existir além das previsões mais
desvairadas das pessoas... Não estamos aguardando nenhuma invenção.
Ela está aqui. É agora. Ela é quase genética em sua natureza, no sentido
de que cada geração se tornará mais digital que sua antecessora.”
—Nicholas Negroponte, professor de mídia tecnológica no MIT
CAPÍTULO
Introdução 1
1.1 VISÃO GERAL
O Dr. Negroponte está entre aqueles que veem a revolução dos computadores como
uma força da natureza. Esta força tem o potencial de transportar a humanidade para
seu destino digital, nos permitindo resolver problemas que têm nos desconcertado
por séculos, bem como todos os problemas que emergem à medida que resolvemos
os problemas originais. Computadores nos liberaram do tédio das tarefas rotineiras,
liberaram nosso potencial criativo coletivo de modo que podemos, com certeza, cons-
truir computadores maiores e melhores.
À medida que observamos as profundas mudanças científicas e sociais que os
computadores nos trouxeram, é fácil sentir-se esmagado pela complexidade disso
tudo. Esta complexidade, no entanto, emana de conceitos que são fundamentalmente
muito simples. Estas ideias simples são aquelas que nos trouxeram para onde estamos
hoje e são os fundamentos dos computadores do futuro. Em que extensão elas vão
sobreviver no futuro é questão de adivinhação. Mas hoje elas são o fundamento de
toda a ciência da computação como nós a conhecemos.
Cientistas da computação são geralmente mais preocupados com a escrita de
algoritmos complexos de programas do que com o projeto de hardware de computa-
dores. Naturalmente, se queremos que nossos algoritmos sejam úteis, em algum mo-
mento um computador terá que executá-los. Alguns algoritmos são tão complicados
que demorariam demais para ser executados nos computadores atuais. Estes tipos
de algoritmos são considerados computacionalmente inexequíveis. Certamente, na
taxa atual de inovação, algumas coisas que são inexequíveis hoje podem ser factíveis
amanhã, mas parece que não importa quão grandes ou rápidos os computadores se
tornem, alguém vai pensar num problema que irá exceder os limites razoáveis da
máquina.
Para entender por que um algoritmo é inexequível, ou para entender por que a im-
plementação de um algoritmo exequível é executada tão lentamente, você deve estar
apto a olhar para o programa sob o ponto de vista do computador. Você deve entender
o que faz um sistema de computação pulsar antes que possa pensar em otimizar os
programas que ele executa. Tentar otimizar um sistema de computação sem primeiro
36 Capítulo 1: Introdução
entender isto é como tentar regular o seu carro despejando um elixir no tanque de
gasolina: você terá sorte se ele funcionar bem quando você terminar.
A otimização de programas e a afinação de sistemas é talvez a motivação mais
importante para aprender como computadores funcionam. Existem, entretanto, mui-
tas outras razões. Por exemplo, se você quiser escrever compiladores, você deve en-
tender o ambiente de hardware dentro do qual o compilador irá funcionar. Os me-
lhores computadores aproveitam características de hardware particulares (tais como
pipelining) para alcançar maior velocidade e eficiência.
Se você alguma vez precisar modelar grandes, complexos sistemas do mundo real,
precisará saber como a aritmética de ponto-flutuante deveria funcionar e como ela real-
mente funciona na prática. Se você deseja projetar equipamentos periféricos ou o soft-
ware que comanda equipamentos periféricos, você tem que conhecer cada detalhe de
como um determinado computador lida com sua entrada/saída (E/S). Se o seu trabalho
envolve sistemas embarcados, você precisa saber que estes sistemas são geralmente
restritos quanto a recursos. Sua compreensão de tempo, espaço, custo e seus compro-
metimentos, assim como arquiteturas de E/S, serão essenciais para a sua carreira.
Todos os profissionais de computação devem estar familiarizados com os concei-
tos de testes de desempenho (benchmarks) e estar aptos a interpretar e apresentar os
resultados de sistemas de testes de desempenho. Pessoas que fazem pesquisa envol-
vendo sistemas de hardware, redes ou algoritmos consideram as técnicas de testes de
desempenho cruciais para o seu trabalho no dia-a-dia. Gerentes técnicos encarregados
de comprar hardware também usam testes de desempenho para ajudá-los a comprar o
melhor sistema por um certo preço, tendo em mente os nodos como os testes de desem-
penho podem ser manipulados para fornecer resultados favoráveis a certos sistemas.
Os exemplos anteriores ilustram a ideia de que existe um relacionamento fun-
damental entre o hardware de computadores e muitos aspectos de programação e
componentes de software em sistemas de computação. Portanto, não obstante a sua
área de especialização, como cientistas de computação é imperativo que entendamos
como o hardware interage com o software. Devemos nos tornar familiarizados com
como os vários circuitos e componentes se ajustam para criar sistemas de computação
que funcionem. Fazemos isto por meio do estudo da organização de computadores.
A organização de computadores trata de questões como sinais de controle (como o
computador é controlado), métodos de sinalização e tipos de memória; compreende
todos os aspectos físicos dos sistemas de computação e nos ajuda a responder à per-
gunta: Como um computador funciona?
O estudo da arquitetura de computadores, por outro lado, enfoca a estrutura e
o comportamento do sistema de computação e se refere aos aspectos lógicos da im-
plementação do sistema como visto pelo programador. A arquitetura de computadores
inclui muitos elementos, tais como conjuntos de instruções e formatos, códigos de ope-
rações, tipos de dados, quantidade e tipos de registradores, modos de endereçamento,
métodos de acesso à memória principal e diversos mecanismos de E/S. A arquitetura
de um sistema afeta diretamente a execução lógica de programas. Estudar arquitetura
de computadores nos ajuda a responder à pergunta: Como eu projeto um computador?
A arquitetura de computadores para uma dada máquina é a combinação de seus
componentes de hardware com a sua arquitetura de conjunto de instruções (ISA – Ins-
truction Set Architecture). A ISA é a interface combinada entre todo o software executa-
do na máquina e o hardware que o executa. A ISA permite que você fale com a máquina.
1.2 Os Principais Componentes de um Computador 37
* O que este princípio não trata é a velocidade com a qual tarefas equivalentes são realizadas. Implementações em
hardware são sempre mais rápidas.
38 Capítulo 1: Introdução
Vamos discutir estes três componentes em detalhe nos capítulos seguintes, à medida
que eles se relacionam com o hardware de computadores.
Assim que você entender computadores em termos de suas partes componentes,
você vai estar capacitado a entender o que um sistema está fazendo durante todo o
tempo e como você pode alterar este comportamento se isto for desejável. Você pode
mesmo pensar que tem algumas coisas em comum com ele. Esta ideia não é tão ab-
surda quanto parece ser. Imagine como um estudante sentado em sua cadeira repre-
senta os três componentes de um computador: o cérebro do estudante é o processador,
as anotações que estão sendo feitas representam a memória e a caneta usada para
tomar notas é o mecanismo de E/S. Mas tenha sempre em mente que suas habilidades
ultrapassam muito aquelas de qualquer computador hoje existente ou que venha a ser
construído em um futuro próximo.
cessidades. À medida que avançarmos neste livro, você vai aprender os conceitos que
estão por trás destes termos. Entretanto, antes de explicarmos o anúncio, precisamos
discutir algo mais básico ainda: a terminologia de medidas que você vai encontrar ao
longo de seu estudo sobre computadores.
Parece que cada campo tem a sua própria maneira de medir coisas. O campo de
computação não é exceção. Para que pessoas da computação possam dizer a outras
quão grande algo é ou quão rápido é, elas devem usar as mesmas unidades de me-
didas. Os prefixos comuns usados com computadores são dados na Tabela 1.1. Nos
anos 1960, alguém decidiu que como as potências de 2 eram similares às potências
de 10, os mesmos nomes de prefixos poderiam ser usados para ambas. Por exemplo,
10 3
2 é próximo a 10 , e, assim, “kilo” é usado para referir-se a ambos. O resultado foi
uma grande confusão: o tal prefixo refere-se a uma potência de 10 ou a uma potência
de 2? Um kilo significa 103 de algo ou 210 de algo? Embora não exista uma resposta
definitiva para esta pergunta, são aceitos “padrões de uso”. Prefixos de potências de
10 são comumente usados para energia, voltagem elétrica, frequência (tal como a
velocidade de um relógio de computador) e múltiplos de bits (tal como velocidade
de dados em número de bits por segundo). Se o seu modem antiquado transmite a
28,8 kb/s, então ele transmite 28.800 bits por segundo (ou 28,8 103). Note o uso
da letra minúscula “k” para representar 103 e da letra minúscula “b” para se referir a
bits. Uma letra maiúscula “K” é usada para se referir ao prefixo de potência de 2, ou
1024. Se um arquivo tem o tamanho de 2K, então ele possui 2 210 ou 2048 bytes.
Note que a letra maiúscula “B” se refere a byte. Se um disco contém 1MB, então ele
contém 220 bytes (ou um megabyte) de informação.
Não saber se prefixos específicos se referem a potências de 2 ou a potências de 10
pode causar confusão. Por esta razão, a International Electrotechnical Commission,
com o auxílio do National Institute of Standards and Technology, aprovou nomes e
símbolos padronizados para prefixos binários a fim de diferenciá-los dos prefixos
decimais. Cada prefixo é derivado dos símbolos dados na Tabela 1.1, adicionando-se
um “i”. Por exemplo, 210 foi renomeado como “kibi” (de kilobinary) e é representado
pelo símbolo Ki, 220 é mebi, ou Mi, seguido por gibi (Gi), tebi (Ti), pebi (Pi), exbi (Ei)
e assim por diante. Portanto, o termo mebibyte, que significa 220 bytes, substitui o que
tradicionalmente chamamos de megabyte.
Tem havido uma adoção limitada destes novos prefixos. Isto é uma pena, porque,
como usuário de computador, é importante entender o verdadeiro significado destes
prefixos. Um kilobyte (1KB) de memória é normalmente 1024 bytes de memória
em vez de 1000 bytes de memória. Entretanto, uma unidade de disco de 1 GB pode
na realidade ter 1 bilhão de bytes em vez de 230 (o que significa que você está tendo
menos memória do que você pensa). Todos os discos flexíveis de 3,5” são descritos
como armazenamento de 1,44 MB de dados, quando, de fato, eles armazenam 1440
KB (ou 1440 210 1474560 bytes). Você deve sempre ler as letras pequenas do
fabricante para se assegurar sobre o que exatamente 1K, 1KB ou 1G representam.
Veja o quadro “Quando um Gigabyte não é bem...” para um bom exemplo de como
isto é importante.
7%. Isto pode fazer uma enorme diferença ao comprar sistemas empresariais de memória
de muitos gigabytes.
Como um exemplo concreto, suponha que você está considerando comprar um conjun-
to de discos de dois fabricantes líderes do mercado. O fabricante x anuncia um conjunto de
12 discos de 250GB por um preço de $20.000. O fabricante y está oferecendo um conjunto
de 12 discos de 212,5GB por $21.000. Todas as outras coisas sendo iguais, a taxa de custo
surpreendentemente favorece o fabricante x:
fabricante x: 20.000 ÷ (12 250GB) 艑6,67 por GB
fabricante y: 21.000 ÷ (12 212,5GB) 艑8,24 por GB
(continua)
1.3 Um Sistema-Exemplo: Entrando no Jargão 41
Sendo um pouco desconfiado, você pode dar alguns telefonemas e descobrir que o
fabricante x está fornecendo as capacidades em gigabytes sem formatação na base 10 e
que o fabricante y está usando gigabytes na base 2 formatada. Estes fatos trazem para o
problema uma luz inteiramente diferente, os discos do fabricante x não são realmente de
250GB no modo que normalmente pensamos em gigabytes. Em vez disso, eles são de cerca
de 232,8 base 2 gigabytes. Após a formatação, o número se reduz ainda mais, para cerca de
197,9GB. Assim, as taxas reais de custo são, de fato:
fabricante x: 20.000 ÷ (12 197,9GB) 艑8,42 por GB
fabricante y: 21.000 ÷ (12 212,5GB) 艑8,24 por GB
Certamente alguns vendedores são bastante honestos ao fornecer as capacidades de
seus equipamentos. Infelizmente, outros revelam os fatos somente quando diretamente
questionados. Seu trabalho como um profissional treinado é formular as perguntas certas.
anunciado opera a 2 bilhões de ciclos por segundo, de modo que o vendedor diz que
ele funciona a 2,0GHz.
Entretanto, o fato de este processador operar a 2,0GHz não necessariamente
significa que ele pode executar 2 bilhões de operações por segundo, ou, equivalen-
temente, que cada instrução requer 0,5 nanossegundos para ser executada. Mais
adiante, neste livro, você vai ver que cada instrução de computador requer um
número fixo de ciclos para ser executada. Algumas instruções requerem um ciclo
de relógio; entretanto, a maioria das instruções requer mais do que um. O número
de instruções por segundo que um microprocessador pode realmente executar é
proporcional à velocidade de seu relógio. O número de ciclos de relógio necessá-
rios para executar uma determinada instrução é uma função de sua arquitetura e
de sua organização.
A próxima coisa que vamos ver no anúncio é “DDR SDRAM 400MHz 256MB”.
O 400MHz refere-se à velocidade do barramento do sistema, que é um grupo de fios
usado para mover os dados e as instruções para vários lugares dentro do computador.
Como o microprocessador, a velocidade do barramento também é medida em MHz.
Muitos computadores possuem um barramento local especial para dados que suporta
velocidades de transferência muito rápidas (tais como as exigidas pelo vídeo). Este
barramento local é um caminho de dados muito rápido que conecta a memória dire-
tamente ao processador. A velocidade do barramento determina o limite superior da
capacidade de transporte de informações do sistema.
O sistema em nosso anúncio também alardeia uma capacidade de memória de
256 megabytes (MB), ou cerca de 256 milhões de caracteres. A capacidade da me-
mória não apenas determina o tamanho dos programas que você pode executar, mas
também quantos programas você pode executar ao mesmo tempo sem degradar o
sistema. O fornecedor de sua aplicação ou sistema operacional irá normalmente re-
comendar quanta memória você vai precisar para executar seus produtos. (Algumas
vezes, estas recomendações pode ser absurdamente conservadoras, de modo que você
deve ser cuidadoso sobre em quem acreditar!)
Além do tamanho da memória, nosso sistema anunciado indica o tipo de memó-
ria, SDRAM, abreviatura para memória dinâmica síncrona de acesso randômi-
co (synchronous dynamic random access memory). SDRAM é muito mais rápida
que a memória convencional (não síncrona) porque ela pode sincronizar a si mesma
com o barramento do microprocessador. O sistema em nosso anúncio possui DDR
SDRAM, ou SDRAM com dupla taxa de dados (double data rate) (para mais infor-
mação sobre diferentes tipos de memória, ver o Capítulo 6).
A próxima linha do anúncio, “cache L1 32KB, cache L2 256KB” também des-
creve um tipo de memória. No Capítulo 6, você vai aprender que independentemente
da velocidade do barramento, sempre demorará “algum tempo” para levar dados da
memória para o processador. Para fornecer um acesso ainda mais rápido aos dados,
muitos sistemas contém uma memória especial denominada cache. O sistema em
nosso anúncio possui duas espécies de cache. A cache nível 1 (L1) é uma memória ca-
che pequena e rápida que está dentro do chip do microprocessador e ajuda a aumentar
1.3 Um Sistema-Exemplo: Entrando no Jargão 43
Conectores
PCI
Conector Soquete do
AGP processador
(UCP)
Hub controlador
de memória
Bancos de
memória
Hub controlador
RAM
de E/S
Bateria
Conector de
Conector IDE Conector Conector de alimentação
secundário IDE principal disquete
Se você remover a cobertura de seu computador, você sem dúvida verá uma grande caixa
de metal com um ventilador junto a ela. Esta é a fonte de alimentação. Você também verá
diversas unidades, incluindo uma unidade de disco e, talvez, uma unidade de disco flexível e
unidades de CD-ROM ou DVD. Existem diversos circuitos integrados – pequenas caixas pre-
tas com pernas. Você também vai notar os caminhos elétricos, ou barramentos, do sistema.
Existem placas de circuito impresso que se conectam em soquetes da placa-mãe, a grande
placa no fundo de um PC padrão, ou no lado de um PC configurado como torre ou minitorre.
A placa-mãe é a placa de circuito impresso que conecta todos os componentes do compu-
tador, incluindo a UCP, as memórias RAM e ROM, bem como diversos outros componentes
essenciais. Os componentes da placa-mãe tendem a ser mais difíceis de identificar. Acima,
você vê uma placa-mãe Intel D850 com identificação dos componentes mais importantes.
As portas de E/S no topo da placa-mãe permitem ao computador se comunicar com
o mundo externo. O hub controlador de E/S permite que todos os dispositivos conectados
funcionem sem conflito. Os conectores para componentes periféricos (PCI – Peripheral
Component Interconnect) se destinam a placas de expansão correspondentes aos diversos
(continua)
44 Capítulo 1: Introdução
dispositivos PCI. O conector AGP é para ligar a placa gráfica AGP. Existem dois bancos de
memória RAM e um hub controlador de memória. Não existe nenhum processador ligado
nesta placa-mãe, mas podemos ver o soquete onde a UCP deve ser colocada.
Todos os computadores possuem uma bateria interna, como visto no canto inferior
esquerdo. Esta placa-mãe possui dois conectores IDE e um para o controlador de disco fle-
xível. A fonte de alimentação se liga ao cabo de energia.
Um aviso de precaução ao examinar o computador por dentro: existem muitas consi-
derações de segurança envolvidas com a remoção da cobertura, tanto para você quanto
para seu computador. Existem muitas coisas que você pode fazer para minimizar os
riscos. Primeiro e mais importante, certifique-se de que o computador esteja desligado.
Muitas vezes, é preferível deixá-lo ligado, pois isto oferece um caminho para a eletri-
cidade estática. Antes de abrir o seu computador e de tocar qualquer coisa ali dentro,
certifique-se de que você tem bom aterramento, de modo que a eletricidade estática
não danifique quaisquer componentes. Muitos cantos da cobertura e das placas de cir-
cuitos podem ser pontiagudos, portanto tome cuidado ao manipular as diversas peças.
Tentar apertar placas desalinhadas nos soquetes pode danificar tanto a placa quanto a
placa-mãe; assim, seja cuidadoso quando você decidir adicionar uma nova placa ou re-
mover e reinstalar uma já existente.
rios leigos, bem como para programadores experientes. Como um usuário, você
precisa estar ciente das vantagens e das limitações de seu sistema de computação
para que possa tomar decisões conscientes sobre aplicações e assim usar seu siste-
ma mais efetivamente. Como um programador, você precisa entender exatamente
como seu sistema de hardware funciona, de modo que possa escrever programas
eficazes e eficientes. Por exemplo, algo tão simples como o algoritmo que seu
hardware usa para mapear a memória principal na cache ou o método usado para
intercalação de memória pode ter um tremendo impacto em sua decisão de aces-
sar elementos de um array por ordem de linha ou por ordem de coluna. Ao longo
deste livro estudamos grandes e pequenos computadores. Grandes computadores
incluem mainframes, servidores empresariais e supercomputadores. Computadores
pequenos incluem sistemas pessoais, estações de trabalho e dispositivos portáteis.
Vamos mostrar que independentemente de eles realizarem pequenas tarefas ou exe-
cutarem tarefas científicas sofisticadas, os componentes destes sistemas são bas-
tante similares. Também vamos abordar algumas arquiteturas que estão fora do que
atualmente é o fluxo principal da computação. Esperamos que o conhecimento que
você vai obter neste livro sirva definitivamente como um trampolim para continuar
seus estudos nos vastos e entusiasmantes campos da arquitetura e organização de
computadores.
putação”. De acordo com a opinião geral, ele foi um gênio excêntrico que nos legou,
entre outras coisas, a chave mestra e o “pegador de boi,” um dispositivo para empur-
rar bois e outros obstáculos móveis para fora do caminho das locomotivas.
Babbage construiu sua Máquina Diferencial em 1822. A Máquina Diferencial
recebeu este nome porque usava uma técnica de cálculo chamada de método das di-
ferenças. A máquina foi projetada para mecanizar o cálculo de funções polinomiais e
era, na verdade, uma calculadora, e não, um computador. Babbage também projetou
uma máquina de propósito geral em 1833, denominada Máquina Analítica. Embora
Babbage tenha falecido antes de tê-la construído, a Máquina Analítica foi projetada
para ser mais versátil do que sua antecessora, a Máquina Diferencial. A Máquina
Analítica teria sido capaz de realizar qualquer operação matemática. Ela incluía mui-
tos dos componentes associados aos computadores modernos: uma unidade aritméti-
ca para realizar cálculos (Babbage se referia a ela como o moinho), uma memória (o
depósito) e dispositivos de entrada e saída. Babbage também incluiu uma operação
de desvio condicional onde a próxima instrução a ser executada era determinada pelo
resultado da operação anterior. Ada, Condessa de Lovelace e filha do poeta Lord
Byron, sugeriu que Babbage escrevesse um plano de como a máquina deveria calcu-
lar os números. Isto é reconhecido como sendo o primeiro programa de computador,
e Ada é considerada como sendo a primeira programadora de computadores. Também
existem rumores de que ele teria sugerido o uso do sistema binário de numeração, em
vez do sistema decimal, para armazenar dados.
Um problema perene que desafia os projetistas de máquinas tem sido a maneira
de introduzir dados no computador. Babbage projetou a Máquina Analítica para usar
um tipo de cartão perfurado para entrada e programação. Usar cartões para controlar
o comportamento de uma máquina não se originou com Babbage, mas sim com um
de seus amigos, Joseph-Marie Jacquard (1752–1834). Em 1801, Jacquard inventou
um tear de tecelagem programável que poderia produzir padrões complexos em rou-
pas. Jacquard deu a Babbage uma tapeçaria que havia sido tecida neste tear usando
mais de 10.000 cartões perfurados. Para Babbage, pareceu natural que, se um tear
podia ser controlado por cartões, então sua Máquina Analítica também poderia ser.
Ada expressou seu encanto com esta ideia, escrevendo que “A Máquina Analítica
tece padrões algébricos da mesma forma que o tear de Jacquard tece flores e folhas”.
O cartão perfurado provou ser o meio mais resistente de fornecer entrada para um
sistema de computação. A entrada de dados via teclado teve de esperar até que fossem
feitas mudanças fundamentais na forma como as máquinas de calcular eram construí-
das. Na segunda metade do século XIX a maioria das máquinas usava mecanismos
com engrenagens, difíceis de integrar com os primitivos teclados porque eles eram
mecanismos com alavancas. Mas mecanismos com alavancas poderiam facilmente
perfurar cartões, e mecanismos com engrenagens poderiam lê-los facilmente. Por-
tanto, vários dispositivos foram inventados para codificar e, depois, “tabular” dados
perfurados em cartões. A mais importante das máquinas de tabulação do final do sé-
culo XIX foi a inventada por Herman Hollerith (1860–1929). A máquina de Hollerith
foi usada para codificar e compilar os dados do censo de 1890. Este censo foi com-
pletado em tempo recorde, impulsionando as finanças de Hollerith e a reputação de
sua invenção. Hollerith, mais tarde, fundou uma empresa que se tornaria a IBM. Seu
cartão perfurado de 80 colunas, o cartão Hollerith, foi uma marca de processamento
automatizado de dados por mais de 50 anos.
1.5 Desenvolvimento Histórico 51
zias de máquinas de somar operadas por estudantes para mastigar montanhas de dados
que ele acreditava poderem revelar as relações matemáticas existentes por trás dos
padrões de tempo. Ele percebeu que, se tivesse um poder computacional um pouco
maior, atingiria o objetivo que parecia estar logo a seu alcance. Em conformidade com
os esforços de guerra dos aliados e com motivos mais profundos para aprender sobre
computação eletrônica, Mauchly fez-se voluntário para um curso rápido em engenha-
ria elétrica na Escola de Engenharia Moore, da Universidade da Pensilvânia. Depois
de completar este programa, Mauchly tornou-se professor na Escola Moore, onde en-
sinou um jovem e brilhante aluno, J. Presper Eckert. Mauchly e Eckert encontraram
um interesse mútuo na construção de um dispositivo eletrônico de cálculo. A fim de
assegurar as verbas necessárias para construir sua máquina, eles escreveram uma pro-
posta formal a ser revisada pela escola. Eles retrataram a sua máquina de forma tão
conservadora quanto possível, a enquadrando como uma “calculadora automática”.
Embora provavelmente soubessem que computadores poderiam funcionar mais efi-
cientemente usando o sistema binário de numeração, Mauchly e Eckert projetaram seu
sistema para usar números na base 10, mantendo a aparência de uma enorme máquina
de somar eletrônica. A universidade rejeitou a proposta de Mauchly e Eckert. Feliz-
mente, o Exército dos Estados Unidos estava mais interessado.
Durante a Segunda Guerra Mundial, o exército tinha uma insaciável necessidade
de calcular trajetórias dos novos equipamentos balísticos. Milhares de “computado-
res” humanos foram empregados diuturnamente para trabalhar na aritmética requeri-
da por estas tabelas balísticas. Compreendendo que um dispositivo eletrônico poderia
encurtar o cálculo de tabelas balísticas de dias para minutos, o exército liberou fundos
para o ENIAC. E o ENIAC realmente reduziu o tempo de cálculo de uma tabela, de
20 horas para 30 segundos. Infelizmente, a máquina não ficou pronta antes do final da
guerra. Mas o ENIAC mostrou que computadores com válvulas eram rápidos e viá-
veis. Durante a próxima década, sistemas a válvula continuaram a melhorar e foram
comercialmente bem-sucedidos.
O fenômeno elétrico que faz os tubos funcionarem foi descoberto por Thomas A. Edi-
son em 1883 enquanto ele tentava encontrar maneiras de fazer com que os filamentos
de suas lâmpadas não queimassem (ou oxidassem) poucos minutos após ser aplicada a
corrente elétrica. Edison ponderou corretamente que uma maneira de evitar a oxidação do
filamento seria colocar o filamento no vácuo. Edison não entendeu imediatamente que o ar
não apenas ajuda a combustão, mas também é um bom isolante. Quando ele energizava os
eletrodos segurando um novo filamento de tungstênio, o filamento logo se tornava quente e
queimava como os outros haviam queimado antes dele. Desta vez, entretanto, Edison notou
que a eletricidade continuava a fluir do terminal negativo aquecido para o terminal positivo
frio dentro da lâmpada. Em 1911, Owen Willans Richardson analisou este comportamento.
Ele concluiu que quando um filamento carregado negativamente era aquecido, os elétrons
“ferviam” como moléculas de água podem ferver para criar vapor. Ele apropriadamente de-
nominou este fenômeno de emissão termoiônica (thermionic emission).
A emissão termoiônica, como Edison a documentou, foi considerada por muitos como
uma curiosidade elétrica. Mas, em 1905 um antigo assistente britânico de Edison, John
A. Fleming, viu a descoberta de Edison como algo além de uma novidade. Ele sabia que a
emissão termoiônica suportava o fluxo de elétrons em apenas uma direção: do catodo com
carga negativa para o anodo com carga positiva, também chamado de prato. Ele compre-
endeu que este comportamento poderia retificar corrente alternada, isto é, poderia mudar
a corrente alternada para a corrente contínua que era essencial para a operação adequada
do equipamento de telégrafo. Fleming usou suas ideias para inventar uma válvula eletrônica,
mais tarde chamada de tubo diodo (diode tube) ou retificador.
Retificador
O diodo era bem adequado para mudar de corrente alternada para corrente contínua,
mas o maior poder do tubo de elétrons ainda estava por ser descoberto. Em 1907, um
americano chamado Lee DeForest adicionou um terceiro elemento, chamado de grade de
controle. A grade de controle, ao transportar uma carga negativa, pode reduzir ou evitar o
fluxo de elétrons do catodo para o anodo de um diodo.
Quando DeForest patenteou seu dispositivo, ele o denominou audion tube. Mais tarde,
ele tornou-se conhecido como triodo. O desenho a seguir mostra o símbolo esquemático
para o triodo.
(continua)
1.5 Desenvolvimento Histórico 55
Filamento Grade Um triodo pode atuar tanto como uma chave quanto como um
amplificador. Pequenas alterações na carga da grade de controle
podem causar alterações muito maiores no fluxo de elétrons entre
Anodo o catodo e o anodo. Portanto, um sinal fraco aplicado na grade
(placa) resulta em um sinal muito mais forte na placa de saída. Uma carga
Catodo negativa suficientemente forte aplicada na placa interrompe a saída
dos elétrons do catodo.
Grades de controle adicionais são algumas vezes adicionadas
ao triodo para permitir um controle mais preciso do fluxo de elétrons. Tubos com duas gra-
des (quatro elementos) são chamados tetrodos; tubos com três grades são denominados
pentodos. Triodos e pentodos são os tubos mais comumente usados em comunicações e
aplicações de computadores. Frequentemente, dois ou três triodos ou pentodos podem ser
combinados em um invólucro de modo que possam compartilhar um único aquecedor, redu-
zindo assim o consumo de energia de um determinado dispositivo. Estes últimos dispositi-
vos eram chamados de tubos “miniatura” porque muitos mediam cerca de 2 polegadas (5
cm) de altura e meia polegada (1,5 cm) de diâmetro. Diodos, triodos e pentodos de tama-
nho normal equivalentes eram somente um pouco menores
do que o bulbo de uma lâmpada doméstica.
Válvulas não eram muito adequadas para construir com-
putadores. Mesmo um sistema de computação a válvulas
mais simples exigia milhares de tubos. Enormes quantidades
Diodo Triodo
de energia elétrica eram necessárias para aquecer os cato-
dos desses dispositivos. Para evitar derretimento, este calor
tinha que ser removido do sistema o mais rapidamente pos-
sível. O consumo de energia e a dissipação de calor podiam
ser reduzidos fazendo os aquecedores de catodos funciona-
rem a baixa voltagem, mas isto reduzia a já lenta velocidade
Tetrodo Pentodo
de chaveamento do tubo. Apesar de suas limitações e do
grande consumo de energia, sistemas de computação a válvulas, tanto analógicos quanto
digitais, serviam a seus objetivos por muitos anos e formaram a base arquitetônica de
todos os modernos sistemas de computação.
Embora décadas tenham decorrido desde que o último computador a válvula foi fabri-
cado, válvulas ainda são usadas em amplificadores de áudio. Estes amplificadores “high-end”
são os favoritos dos músicos, que acreditam que esses tubos fornecem um som ressonante e
agradável inatingível pelos dispositivos de estado sólido.
O que é um transistor?
O transistor, abreviatura de transfer resistor (resistor de transfe-
rência), é uma versão em estado sólido de um triodo. Não existe
uma tal versão em estado sólido para o tetrodo ou para o pentodo.
Elétrons se comportam melhor em um meio sólido do que no vazio
aberto de um tubo de vácuo, de modo que não existe necessidade de
grades de controle extras. Tanto o germânio (germanium) quanto o
silício (silicon) podem ser o “sólido” básico usado nestes dispositivos
de estado sólido. Em sua forma pura, nenhum destes elementos é um
bom condutor de eletricidade, mas quando eles são combinados com
pequenas quantidades de elementos que são seus vizinhos na Tabela
Periódica de Elementos, eles conduzem eletricidade de uma maneira
efetiva e facilmente controlável.
O alumínio (aluminum) e o gálio (gallium) po-
dem ser encontrados à esquerda do silício e do
germânio. Uma vez que se situam à esquerda do
silício e do germânio, eles possuem um elétron a
Emissor menos na sua camada externa de elétrons, ou va-
Base lência. Assim, se você adicionar uma pequena
Coletor quantidade de alumínio ao silício, o silício adquire
um pequeno desequilíbrio em sua camada externa
de elétrons e, portanto, atrai elétrons de qualquer polo que tenha um potencial negativo
(um excesso de elétrons). Quando modificados (ou dopados) desta maneira, o silício e o
germânio se tornam materiais do tipo P.
(continua)
1.5 Desenvolvimento Histórico 57
tratada com uma substância fotorresistente, exposta à luz e gravada como a camada antes dela.
Este processo continua até que todas as camadas tenham sido gravadas. Os picos e vales de
material N e de material P resultantes formam componentes eletrônicos microscópicos, incluin-
do transistores, que se comportam como outras versões maiores feitas com componentes dis-
cretos, exceto pelo fato de que funcionam muito mais rápido e consumem uma pequena fração
da potência.
o IBM System/360 tenha sido um sistema inteiramente de estado sólido, ele ainda era
resfriado a água, um monstro devorador de energia. Ele podia executar apenas 50.000
instruções por segundo e suportava somente 16 megabytes de memória (mas geral-
mente tinha kilobytes de memória física instalada). Estes sistemas eram tão caros que
somente grandes empresas e universidades podiam possuí-los ou alugá-los. Os main-
frames atuais – agora chamados de “servidores empresariais” – ainda são cotados em
milhões de dólares, mas suas capacidades de processamento cresceram milhares de
vezes, passando a marca de um bilhão de instruções por segundo no final da década
de 1990. Estes sistemas, muitas vezes usados como servidores Web, suportam rotinei-
ramente centenas de milhares de transações por minuto!
O poder computacional trazido pela VLSI aos supercomputadores desafia a com-
preensão. O primeiro supercomputador, o CDC 6600, podia executar 10 milhões de
instruções por segundo e tinha 128 kilobytes de memória principal. Em contraste,
supercomputadores atuais contém milhares de processadores, podem endereçar tera-
bytes de memória e logo poderão executar um quatrilhão de instruções por segundo.
Qual tecnologia irá marcar o início da quinta geração? Alguns dizem que a quinta
geração será marcada pela aceitação da computação paralela e pelo uso de redes e es-
tações de trabalho de único usuário. Muitas pessoas acreditam que já entramos nesta
geração. Algumas pessoas caracterizam a quinta geração como sendo a geração de
redes neurais, DNA ou sistemas de computação ótica. É possível que não estejamos
aptos a definir a quinta geração até que tenhamos avançado para a sexta ou sétima
geração e tudo o que estas eras trarão.
de um elemento de memória será menor do que um átomo, mas também será preciso
toda a riqueza do mundo para construir um único chip! Assim, mesmo que se con-
tinue a fazer chips menores e mais rápidos, a questão final será se poderemos arcar
com os custos de construí-los.
Certamente, se a Lei de Moore continuar valendo, a Lei de Rock deverá cair.
É evidente que para estas duas coisas acontecerem os computadores devem mudar
para uma tecnologia radicalmente diferente. As pesquisas sobre novos paradigmas de
computação têm prosseguido com determinação na última metade da década. Protó-
tipos de laboratório construídos com base em computação orgânica, supercondução,
física molecular e computação quântica têm sido demonstrados. Computadores quân-
ticos, que utilizam as estranhas mecânicas quânticas para resolver problemas com-
putacionais, são particularmente excitantes. Sistemas quânticos não apenas fariam
computações exponencialmente mais rápido do que qualquer método anteriormente
usado, mas também poderiam revolucionar a maneira como definimos problemas
computacionais. Problemas que hoje são considerados absurdamente impraticáveis
podem estar ao alcance da próxima geração de estudantes. Estes estudantes poderão,
na verdade, debochar de nossos sistemas “primitivos” da mesma maneira que somos
tentados a debochar do ENIAC.
Nív
el 6
Usu
ário veis
Nív xe cutá
el 5 as e
gra
m tc.
Ling
uag Pro A N, e
em RTR
Nív
el 4 de a , FO
lto-n ava
Ling ível C++ J o
uag ler ec ódig
Nív em mb ca d
el 3 ass
emb asse te
Sof igo iblio
twa ler Cód l, b
re d iona es
Nív o si rac uçõ
el 2 stem a ope ei nstr
Máq a
Sistem nto d dwa
re
uina
oc onju m har
Nív
el 1 tu ra d do e
Con uite enta
trole Arq mp lem
Nív ou i
el 0 digo etc.
Lóg rocó tos,
ica Mic en
digi
tal arram
s, b
uito
Circ
Contador
de programa
Registradores Memória
principal
Unidade
Unidade de de controle
aritmética e lógica
Sistema de
Entrada/Saída
UCP Entrada
(UAL, Registradores Memória e
e Controle) Saída
Barramento de dados
Barramento de endereço
Barramento de controle
RESUMO DO CAPÍTULO
Neste capítulo apresentamos uma breve visão geral de organização de computadores
e de arquitetura de computadores e mostramos suas diferenças. Também introduzi-
mos alguma terminologia no contexto de um anúncio fictício de um computador.
Muito desta terminologia será expandido em capítulos posteriores.
Historicamente, computadores eram simplesmente máquinas de calcular. À me-
dida que os computadores se tornaram mais sofisticados, eles se tornaram máquinas
de uso geral, trazendo a necessidade de considerar cada sistema como uma hierarquia
de níveis em vez de uma máquina gigantesca. Cada nível desta hierarquia atende a
um propósito específico, e todos os níveis ajudam a minimizar o intervalo semântico
entre uma linguagem de programação de alto nível ou uma aplicação e as portas e
circuitos que formam o hardware físico. Talvez o mais importante desenvolvimento
isolado na computação que nos afeta como programadores tenha sido a introdução
do conceito de programa armazenado da máquina de von Neumann. Embora existam
outros modelos arquitetônicos, a arquitetura de von Neumann predomina nos atuais
computadores de uso geral.
LEITURA COMPLEMENTAR
Incentivamos você a ampliar nossa breve apresentação da história de computadores.
Pensamos que você vai achar este assunto intrigante porque é tanto a respeito de
pessoas quanto de máquinas. Você pode ler a respeito do “pai esquecido do computa-
dor”, John Atanasoff, em Mollenhoff (1988). Este livro documenta o relacionamento
curioso entre Atanasoff e John Mauchly e reconta a batalha jurídica de dois gigantes,
Honeywell e Sperry Rand. Este processo, no final, deu a Atanasoff seu legítimo re-
conhecimento.
Para um livro mais leve sobre história de computadores, tente Rochester e Gantz
(1983). A história ilustrada de computadores de Augarten (1985) é gostosa de ler e
Referências 69
REFERÊNCIAS
Augarten, Stan. Bit by Bit: An Illustrated History of Computers. London: Unwin Paperbacks,
1985.
Blaauw, G., & Brooks, F. Computer Architecture: Concepts and Evolution. Reading, MA:
Addison-Wesley, 1997.
Ceruzzi, Paul E. A History of Modern Computing. Cambridge, MA: MIT Press, 1998.
Chopsky, James, & Leonsis, Ted. Blue Magic: The People, Power and Politics Behind the
IBM Personal Computer. New York: Facts on File Publications, 1988.
Cortada, J. W. Historical Dictionary of Data Processing, Volume 1: Biographies; Volume 2:
Organization; Volume 3: Technology. Westport, CT: Greenwood Press, 1987.
70 Capítulo 1: Introdução
Maguire, Yael, Boyden III, Edward S., & Gershenfeld, Neil. “Toward a Table-Top Quantum
Computer.” IBM Systems Journal 39: 3/4, June 2000, pp. 823–839.
Maxfield, Clive, & Brown, A. Bebop BYTES Back (An Unconventional Guide to Computers).
Madison, AL: Doone Publications, 1997.
McCartney, Scott. ENIAC: The Triumphs and Tragedies of the World’s First Computer. New
York: Walker and Company, 1999.
Mollenhoff, Clark R. Atanasoff: The Forgotten Father of the Computer. Ames, IA: Iowa State
University Press, 1988.
Polachek, Harry. “Before the ENIAC.” IEEE Annals of the History of Computing 19: 2, June
1997, pp. 25–30.
Rochester, J. B., & Gantz, J. The Naked Computer: A Layperson’s Almanac of Computer
Lore, Wizardry, Personalities, Memorabilia, World Records, Mindblowers, and
Tomfoolery. New York: William A. Morrow, 1983.
Schaller, R. “Lei de Moore: Past, Present, and Future.” IEEE Spectrum, June 1997, pp. 52–59.
Tanenbaum, A. Structured Computer Organization, 4th ed. Upper Saddle River, NJ: Prentice
Hall, 1999.
Toole, Betty A. Ada, the Enchantress of Numbers: Prophet of the Computer Age. Mill Valley,
CA: Strawberry Press, 1998.
Waldrop, M. Mitchell. “Quantum Computing.” MIT Technology Review 103: 3, May/June
2000, pp. 60–66.
EXERCÍCIOS
1. Em que hardware e software se distinguem? Em que se assemelham?
2. a) Quantos milissegundos (ms) existem em 1 segundo?
b) Quantos microssegundos (µs) existem em 1 segundo?
c) Quantos nanossegundos (ns) existem em 1 milissegundo?
d) Quantos microssegundos existem em 1 milissegundo?
e) Quantos nanossegundos existem em 1 microssegundo?
f) Quantos kilobytes (KB) existem em 1 gigabyte (GB)?
g) Quantos kilobytes existem em 1 megabyte (MB)?
h) Quantos megabytes existem em 1 gigabyte (GB)?
i) Quantos bytes existem em 20 megabytes?
j) Quantos kilobytes existem em 2 gigabytes?
3. Em que ordem de magnitude algo que é executado em nanossegundos é mais rápido do que
algo que é executado em milissegundos?
4. Finja que você está pronto para comprar um novo computador para uso pessoal. Primeiro,
olhe os anúncios de várias lojas e de jornais e relacione os termos que você não entendeu
muito bem. Olhe estes termos e dê uma breve explicação. Decida quais fatores são im-
portantes para a sua decisão de comprar um computador e faça uma lista deles. Depois
de você selecionar o sistema que deseja comprar, identifique quais termos se referem a
hardware e quais se referem a software.
5. Escolha sua linguagem de computação favorita e escreva um pequeno programa. Depois
de compilar o programa, veja se você pode determinar a relação entre instruções em có-
digo fonte e as instruções em linguagem de máquina geradas pelo compilador. Se você
adicionar uma linha de código fonte, como isto altera o programa em linguagem de má-
quina? Tente adicionar diferentes instruções ao código fonte, como uma soma e depois
uma multiplicação. Como se altera o arquitetura em código de máquina com as diferentes
instruções? Comente o resultado.
72 Capítulo 1: Introdução
6. Responda ao comentário mencionado na Seção 1.5: se fosse inventado hoje, que nome
você acha que poderia ser dado ao computador? Dê pelo menos uma boa razão para a sua
resposta.
7. Suponha que um transistor em um circuito integrado tenha o tamanho de 2 microns. De
acordo com a Lei de Moore, qual seria o tamanho deste transistor em 2 anos? De que modo
a Lei de Moore é relevante para programadores?
8. Quais circunstâncias ajudaram o IBM PC a se tornar tão bem-sucedido?
9. Relacione cinco aplicações de computadores pessoais. Existe um limite para aplicações
de computadores? Você pode imaginar aplicações radicalmente diferentes e instigantes em
um futuro próximo? Se sim, quais?
10. Na arquitetura de von Neumann um programa e seus dados são armazenados na memória.
Portanto é possível que um programa, ao pensar que uma posição de memória guarda
um dado quando na verdade guarda uma instrução de programa, acidentalmente (ou de
propósito) modifique a si mesmo. Que implicações esta possibilidade tem para você como
programador?
11. Leia um jornal local popular e pesquise ofertas de emprego. (Você também pode pesquisar
em sites de emprego populares.) Quais empregos requerem conhecimento específico de
hardware? Existe alguma correlação entre o conhecimento de hardware requerido e a em-
presa ou sua localização?
12. Relacione e descreva alguns usos comuns e alguns usos não tão comuns de computadores
em negócios e em outros setores da sociedade.
13. A noção tecnológica da Lei de Moore é que o número de transistores por chip dobra a cada
18 meses aproximadamente. Nos anos 1990, a Lei de Moore começou a ser descrita como
dobrando a potência do microprocessador a cada 18 meses. Dada esta nova variação da Lei
de Moore, responda o seguinte:
a) Depois de terminar com sucesso as suas disciplinas de arquitetura e organização de
computadores, você tem uma ideia brilhante para um novo projeto de chip que poderia
tornar um processador seis vezes mais rápido do que os mais rápidos atualmente exis-
tentes no mercado. Infelizmente, levará quatro anos e meio para conseguir a verba, criar
o protótipo e construir um produto acabado. Se a Lei de Moore se aplica, você deveria
gastar seu dinheiro desenvolvendo e produzindo um chip ou investindo em algum outro
empreendimento de risco?
b) Suponha que você tem um problema que atualmente gasta 100.000 horas de tempo de
computação usando na sua solução a tecnologia atual. Qual das seguintes alternativas
poderia dar a solução antes: (1) Substituir o algoritmo usado na solução atual por um
que seja executado duas vezes mais rápido e executá-lo na mesma tecnologia atual ou
(2) Esperar 3 anos, assumindo que a Lei de Moore dobre o desempenho de um com-
putador a cada 18 meses, e encontrar a solução usando o algoritmo atual com a nova
tecnologia?
14. Quais são as limitações da Lei de Moore? Por que esta lei não pode continuar válida para
sempre? Explique.
15. Quais são algumas das implicações técnicas da Lei de Moore? Que efeito ela terá em seu
futuro?