Vous êtes sur la page 1sur 38

“Computação não é mais sobre computadores. É sobre viver...

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

A distinção entre organização de computadores e arquitetura de computadores


não é bem delimitada. Pessoas no campo de ciência da computação e engenharia da
computação possuem opiniões diferentes sobre exatamente quais conceitos perten-
cem à organização de computadores e quais pertencem à arquitetura de computado-
res. De fato, nem organização de computadores nem arquitetura de computadores
podem se manter sozinhas. Elas são inter-relacionadas e interdependentes. Podemos
verdadeiramente entender cada uma delas somente após termos compreendido am-
bas. Nossa compreensão de arquitetura e organização de computadores nos conduz,
enfim, a um conhecimento mais profundo de computadores e computação – o cora-
ção e a alma da ciência de computadores.

1.2 OS PRINCIPAIS COMPONENTES DE UM COMPUTADOR


Embora seja difícil distinguir os conceitos pertencentes à organização de computadores
daqueles que pertencem à arquitetura de computadores, é impossível afirmar onde as
questões de hardware terminam e as questões de software iniciam. Cientistas de compu-
tação projetam algoritmos que geralmente são implementados como programas escritos
em alguma linguagem de programação, como Java ou C. Mas o que possibilita a execu-
ção de um algoritmo? Outro algoritmo, com certeza! E um outro algoritmo executa esse
algoritmo e assim é até que você chegue no nível de máquina, que pode ser imaginado
como um algoritmo implementado em um dispositivo eletrônico. Portanto, os compu-
tadores modernos são, na verdade, implementações de algoritmos que executam outros
algoritmos. Esta cadeia de algoritmos aninhados nos conduz ao seguinte princípio:
Princípio de Equivalência de Hardware e Software: Qualquer coisa que
possa ser feita com software pode ser feita com hardware, e qualquer coisa
que possa ser feita com hardware também pode ser feita com software.*
Um computador de propósito especial pode ser projetado para realizar qualquer tare-
fa, tal como processar texto, analisar um orçamento ou jogar amigavelmente o jogo
Tetris. Consequentemente, programas podem ser escritos para realizar as funções de
computadores de propósito especial, tais como sistemas embarcados localizados em
seu carro ou micro-ondas. Existem vezes em que um simples sistema embarcado nos
dá uma performance muito melhor do que um programa complicado de computador,
e existem vezes em que um programa é a abordagem preferida. O Princípio de Equi-
valência de Hardware e Software nos afirma que temos escolha. Nosso conhecimento
de arquitetura e organização de computadores vai nos ajudar a fazer a melhor delas.
Iniciamos nossa discussão sobre hardware de computadores examinando os com-
ponentes necessários para construir um sistema de computação. No nível mais básico,
um computador é um dispositivo que consiste de três partes:
1. Um processador para interpretar e executar programas
2. Uma memória para armazenar dados e instruções
3. Um mecanismo para transferir dados de e para o mundo externo

* 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.

1.3 UM SISTEMA-EXEMPLO: ENTRANDO NO JARGÃO


Este livro vai introduzir vocabulário específico de computadores. Este jargão pode
ser confuso, impreciso e intimidante. Acreditamos que com uma pequena explicação,
podemos clarear a neblina.
Para fins de discussão, apresentamos cópia de um anúncio de computador (ver
Figura 1.1). O anúncio é um típico exemplar daqueles que bombardeiam o leitor
com frases como “DDR SDRAM 256MB,” “placa de som 64-bit PCI” e “cache L1
32KB”. Sem ter uma noção sobre tal terminologia, você estaria em apuros para saber
se o sistema anunciado é uma boa compra ou mesmo se é capaz de atender às suas ne-

PROMOÇÃO: COMPUTADOR ULTRAPASSADO – BARATO! BARATO! BARATO!

• Pentium 4 2.0 GHz


• DDR SDRAM 400MHz 256MB
• cache L1 32KB, cache L2 256KB
• disco fixo 80GB serial ATA (7200 RPM)
• 8 Portas USB, 1 porta serial, 1 porta paralela
• Monitor 19”, .24mm AG, 1280  1024 a 75Hz
• unidade CD-RW 48X
• Placa de vídeo 128MB PCI Express
• data/fax modem 56K PCI
• placa de som 64-bit PCI
• Ethernet 10/100 integrada

FIGURA 1.1 Um anúncio típico de computador.


1.3 Um Sistema-Exemplo: Entrando no Jargão  39

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

TABELA 1.1 Prefixos comuns associados com arquitetura e organização de computadores


Potência Potência
Pref. Símb. Potência de 10 de 2 Pref. Símb. Potência de 10 de 2
Kilo K 1 mil  103 210  1024 Mili m 1 milésimo  103 210
6 20
1 milhão  10 1 milionésimo  10
6 20
Mega M 2 Micro m 2
9
1 bilhão  10 1 bilionésimo  10 230
9 30
Giga G 2 Nano n
Tera T 1 trilhão  1012 240 Pico p 1 trilionésimo  1012 240
Peta P 1 quadrilhão  1015 250 Femto f 1 quadrilionésimo  1015 250
18
1 quintillhão  10 1 quintilionésimo  10 260
18 60
Exa E 2 Atto a
Zetta Z 1 sextilhão  1021 270 Zepto z 1 sextilionésimo  1021 270
Yotta Y 1 setilhão  1024 280 Yocto y 1 setilionésimo  1024 280
40  Capítulo 1: Introdução

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.

Quando um Gigabyte não é bem...


Comprar um novo conjunto de unidades de disco pode ser um processo relativamente dire-
to, uma vez que você determina suas necessidades técnicas (p.ex., taxa de transferência de
disco, tipo de interface, etc.). A partir disso, você deveria estar apto a tomar a sua decisão
baseado em uma simples relação preço/capacidade, tal como custo por gigabyte, e, então
decidir. Bom, não é tão rápido. O primeiro empecilho no caminho de uma análise direta é
que você deve ter certeza de que as unidades que você está comparando expressam suas
capacidades em bytes formatados ou não formatados. Cerca de 16% do espaço em disco é
consumido durante o processo de formatação. (Alguns vendedores fornecem este número
como “capacidade útil”.) Naturalmente, a relação preço-capacidade parece muito melhor
quando bytes não formatados são usados, embora você esteja mais interessado em saber a
quantidade de espaço usável que um disco fornece.
Seu próximo obstáculo é assegurar-se de que a mesma base é usada na comparação de
tamanhos de disco. É cada vez mais comum capacidades de disco serem dadas na base 10
9
em vez de na base 2. Assim, uma unidade de disco de “1GB” possui capacidade para 10
1.000.000.000 bytes, em vez de 2  1.073.741.824 bytes – uma redução de cerca de
30

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.

Quando queremos falar sobre a rapidez de algo, falamos em termos de frações


de segundo – geralmente milésimos, milionésimos, bilionésimos ou trilionésimos.
Prefixos para estas medidas são dados no lado direito da Tabela 1.1. Geralmente po-
tências negativas se referem a potências de 10, e não, a potências de 2. Por esta razão,
os novos padrões de prefixos binários não incluem quaisquer novos nomes para as
potências negativas.
Note que os prefixos fracionários possuem expoentes que são os recíprocos dos
prefixos do lado esquerdo da tabela. Portanto, se alguém diz a você que uma operação
requer um microssegundo para terminar, você deve entender que um milhão destas
operações devem ser realizadas em um segundo. Quando você precisa falar sobre
quantas destas coisas acontecem em um segundo, você deve usar o prefixo mega.
Quando você precisa falar sobre a rapidez de execução de operações, você deve usar
o prefixo micro.
Agora, para explicar o anúncio: o microprocessador é a parte do computador que
realmente executa as instruções do programa; ele é o cérebro do sistema. O micropro-
cessador do anúncio é um Pentium 4, operando a 2,0GHz. Cada sistema de compu-
tação contém um relógio que mantém o sistema sincronizado. O relógio envia pulsos
elétricos simultaneamente a todos os principais componentes, assegurando que dados
e instruções estejam onde devem estar e quando devem estar lá. O número de pul-
sações emitidas a cada segundo pelo relógio é a frequência. Frequências de relógio
são medidas em ciclos por segundo, ou hertz. Se o relógio de um sistema de compu-
tação gera milhões de pulsos por segundo, dizemos que ele opera em intervalos de
megahertz (MHz). Muitos computadores atuais operam em intervalos de gigahertz
(GHz), gerando bilhões de pulsos por segundo. Visto que quase nada é feito por um
computador sem o envolvimento do processador, a taxa de frequência do micropro-
cessador é crucial para a velocidade geral do sistema. O microprocessador do sistema
42  Capítulo 1: Introdução

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

Um olhar dentro do computador


Você alguma vez já imaginou como um computador realmente se parece por dentro? O
computador no exemplo descrito nesta seção dá uma boa visão geral dos componentes de
um computador pessoal moderno. Entretanto, abrir um computador e tentar encontrar e
identificar as diversas peças pode ser frustrante, mesmo que você esteja familiarizado com
os componentes e suas funções.

Porta Porta Conectores de


Conectores de Conector
áudio e microfone de rede paralela serial Conectores mouse e
USB
teclado

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

Cortesia de Intel Corporation

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.

a velocidade de acesso a dados usados frequentemente. A cache de nível 2 (L2) é uma


coleção de chips de memória embutidos, rápidos, situados entre o microprocessador
e a memória principal. Note que a cache em nosso sistema possui uma capacidade de
kilobytes (KB), que é muito menor do que a memória principal. No Capítulo 6 você
vai aprender como a cache funciona e que uma grande cache nem sempre é melhor.
Por outro lado, todo mundo concorda que quanto mais capacidade de disco você
tiver, melhor. O sistema anunciado possui um disco rígido de 80GB, o que era bastan-
te na época do anúncio. No entanto, a capacidade de um disco fixo (ou rígido) não é
a única coisa a se considerar. Um disco grande não é muito útil se ele for muito lento
para seu sistema hospedeiro. O computador em nosso anúncio possui um disco rígido
com uma rotação de 7200 rotações por minuto (RPM). Para o leitor bem informado,
isto indica (mas não assegura completamente) que é uma unidade bastante rápida.
Geralmente velocidades de disco são apresentadas em termos de milissegundos re-
queridos (em média) para acessar dados no disco, além da velocidade de rotação do
disco.
A velocidade de rotação é apenas um dos fatores determinantes da performance
geral de um disco. A maneira como ele se conecta ao – ou tem interface com o – resto
do sistema também é importante. O sistema anunciado usa uma interface de disco se-
rial ATA (advanced technology attachment). Esta é uma interface de armazenamen-
to evolucionária que está substituindo a IDE (integrated drive electronics). Outra
interface comum é a EIDE (enhanced integrated drive electronics), uma interface de
hardware alternativa de bom custo-benefício para dispositivos de memória de massa.
1.3 Um Sistema-Exemplo: Entrando no Jargão  45

A EIDE contém circuitos especiais que permitem melhorar a conectividade, a velo-


cidade e a capacidade de memória de um computador. A maioria dos sistemas ATA,
IDE e EIDE compartilham o barramento principal do sistema com o processador e a
memória, de modo que a movimentação de dados de e para o disco também é depen-
dente da velocidade do barramento do sistema.
Considerando que o barramento do sistema é responsável por toda a movimen-
tação interna de dados do computador, portas permitem o movimento de dados de e
para dispositivos externos ao computador. Nosso anúncio fala de três diferentes portas
na linha “8 Portas USB, 1 porta serial, 1 porta paralela”. A maioria dos computadores
de mesa vem com dois tipos de portas de dados: portas seriais e portas paralelas. Por-
tas seriais transferem dados enviando séries de impulsos elétricos através de uma ou
duas linhas de dados. Portas paralelas usam pelo menos oito linhas de dados que são
energizadas simultaneamente para transmitir dados. Nosso sistema anunciado também
vem equipado com conexões seriais especiais, denominadas portas USB (universal
serial bus). USB é um barramento externo popular que suporta Plug-and-Play (a
habilidade de configurar dispositivos automaticamente), bem como hot plugging (a
habilidade de adicionar e remover dispositivos com o computador em funcionamento).
Alguns sistemas aumentam o seu circuito principal com barramentos dedicados
de E/S. O PCI (Peripheral Component Interconnect) é um dos tais barramentos de
E/S que suporta a conexão de diversos dispositivos periféricos. O PCI, desenvolvido
pela Intel Corporation, opera a altas velocidades e também suporta Plug-and-Play.
Existem três dispositivos PCI mencionados no anúncio. O modem PCI permite ao
computador conectar-se à Internet. (Discutimos modems em detalhe no Capítulo 12.)
Um modem data/fax serve como um modem (se o usuário deseja conectar-se à Inter-
net através de um provedor de serviços de Internet) e como uma máquina de fax (para
enviar documentos). O segundo dispositivo PCI é uma placa de som, que contém os
componentes necessários para o funcionamento dos alto-falantes estéreo e do micro-
fone do sistema. O terceiro dispositivo PCI é a placa de vídeo, que é discutida mais
adiante. Você vai aprender mais sobre diferentes tipos de E/S, barramentos de E/S e
memória de disco no Capítulo 7.
Depois de nos informar sobre as portas do sistema, o anúncio nos fornece algu-
mas especificações para o monitor, dizendo “monitor 19", .24mm AG, 1280  1024 a
75Hz”. Monitores têm pouca relação com a velocidade ou a eficiência de um sistema
de computação, mas eles têm uma grande relação com o conforto do usuário. O mo-
nitor do anúncio suporta uma taxa de restauração de 75Hz. Isto significa que a ima-
gem exibida no monitor é repintada 75 vezes por segundo. Se a taxa de restauração é
muito lenta, a tela pode exibir um comportamento irritante de sacolejo ou ondulações.
A fadiga ocular ocasionada por uma exibição em ondas faz as pessoas se cansarem
facilmente; algumas pessoas podem mesmo ter dores de cabeça após períodos pro-
longados de uso. Outra fonte de fadiga ocular é uma resolução pobre. Um monitor de
alta resolução propicia uma visualização melhor e gráficos de melhor qualidade. A
resolução é determinada pelo dot pitch do monitor, que é a distância entre um ponto
(ou pixel) e o ponto mais próximo da mesma cor. Quanto menor o ponto, mais nítida
é a imagem. Neste caso, temos um dot pitch de 0,24 milímetros (mm) suportado por
46 䉬 Capítulo 1: Introdução

um vídeo AG (aperture grill). Grades de abertura dirigem o feixe de elétrons que


pinta a figura no monitor na cobertura de fósforo dentro do vidro do monitor. Os mo-
nitores AG produzem imagens mais nítidas do que a antiga tecnologia de máscara de
sombra (shadow mask).
À luz da discussão anterior, você pode estar imaginando por que a distância entre
pontos do monitor não pode ser arbitrariamente pequena para fornecer figuras com
resolução perfeita. Restaurar 100 pontos, por exemplo, requer mais tempo do que
restaurar 50 pontos. Uma distância entre pontos menor requer mais pontos para cobrir
a tela. Quanto mais pontos a restaurar, mais tempo leva cada ciclo de restauração.
Especialistas recomendam uma taxa de restauração de pelo menos 75Hz.
Nosso sistema anunciado possui um CD-RW 48x, ou disco compacto regravá-
vel. Esta unidade nos permite usar CDs que podem ser gravados e apagados muitas
vezes. A medida de velocidade de unidade de CD 48x nos informa a velocidade
com que esta unidade pode ler e gravar. Um “x” significa 153.000 bytes de dados
por segundo.
A placa de vídeo de nosso sistema é uma placa de vídeo PCI express (PCIe).
PCIe é uma especificação de interface concebida para melhorar a performance do
sistema gráfico pelo aumento da largura total de banda. Muitos sistemas possuem
em vez disso, placas gráficas AGP (accelerated graphics port). Esta é uma interface
gráfica projetada pela Intel especificamente para gráficos 3D. Aumentando o fluxo de
comunicação entre a UCP e o controlador gráfico, a PCI permite que as aplicações
gráficas sejam executadas mais rapidamente do que com AGP.
Computadores são mais úteis se puderem se comunicar com o mundo exte-
rior. Uma forma de se comunicar é usar um provedor de serviços de Internet e um
modem. Outra é através de uma conexão direta com uma rede. Redes permitem a
usuários compartilhar arquivos e dispositivos periféricos. Computadores podem se
conectar a uma rede através de tecnologia com fio ou sem fio. Computadores conec-
tados por fios usam a tecnologia Ethernet, um padrão internacional de tecnologia
para redes com fios. Neste caso, existem duas opções para a conexão. A primeira é
usar um cartão de interface de rede (NIC – network interface card), que se conecta
à placa-mãe através de um conector PCI. As NICs normalmente suportam Ethernet
10/100 (Ethernet com velocidade de 10Mbps e Ethernet rápida com velocidade de
100Mbps). Outra opção para rede com fio é a Ethernet integrada, o que significa
que a própria placa-mãe contém todos os componentes necessários para suportar a
Ethernet 10/100; assim, não é necessário um conector PCI. Redes sem fio possuem
as mesma opções. NICs sem fio são fornecidos por muitos fabricantes e estão dispo-
níveis para computadores de mesa e para laptops. Para instalação em computadores
de mesa, você precisa de uma placa interna que provavelmente terá uma antena
pequena. Laptops normalmente usam um conector de expansão (PCMCIA) para
a placa de rede sem fio, e os fabricantes estão integrando uma antena no gabinete,
atrás da tela. Redes integradas sem fio (tais como as encontradas na tecnologia
móvel Intel Centrino) eliminam a confusão de cabos e placas. O sistema em nosso
anúncio adota Ethernet integrada.
Não nos aprofundaremos em componentes de marcas específicas disponíveis;
ainda assim, depois de terminar este livro, você deverá entender como a maioria
dos sistemas de computação funciona. Esta compreensão é importante para usuá-
1.4 Organizações de Padronização 䉬 47

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.

1.4 ORGANIZAÇÕES DE PADRONIZAÇÃO


Suponha que você gostaria de ter um destes novos e elegantes monitores AG com
distância entre pontos de .24mm. Você imagina que pode ir às compras e encontrar
o melhor preço. Você dá alguns telefonemas, navega na Web e anda pela cidade até
que encontra uma loja que dá o máximo pelo seu dinheiro. Com sua experiência,
você sabe que pode comprar seu monitor em qualquer lugar e que ele provavelmen-
te vai funcionar bem no seu sistema. Você pode fazer esta suposição porque fabri-
cantes de equipamentos de computação concordaram em atender às especificações
de conectividade e operacionais estabelecidas por diversas organizações governa-
mentais e empresariais.
Algumas destas organizações de estabelecimento de padrões são associações co-
merciais ad hoc ou consórcios criados por líderes industriais. Os fabricantes sabem
que o estabelecimento de normas comuns para um determinado tipo de equipamento
faz com que eles possam vender seus produtos para um público maior do que se eles
tiverem especificações próprias – talvez incompatíveis.
Algumas organizações de padronização possuem patentes formais e são reconhe-
cidas internacionalmente como a autoridade definitiva em certas áreas de eletrônica e
computadores. À medida que continuar seus estudos em arquitetura e organização de
computadores, você vai encontrar especificações formuladas por estes grupos; logo,
você deve saber alguma coisa sobre eles.
O Institute of Electrical and Electronic Engineers (IEEE) é uma organização
dedicada ao avanço das profissões de eletrônica e engenharia de computação. O IEEE
fomenta ativamente os interesses da comunidade mundial de engenharia por meio
da publicação de uma variedade de literatura técnica. O IEEE também estabelece
padrões para vários componentes de computadores, protocolos de sinalização e re-
48 䉬 Capítulo 1: Introdução

presentação de dados, apenas para relacionar algumas áreas de seu envolvimento. O


IEEE possui um procedimento democrático, embora demorado, estabelecido para a
criação de novos padrões. Seus documentos finais são bem respeitados e geralmente
duram muitos anos antes de requerer revisão.
A International Telecommunications Union (ITU) é baseada em Genebra, na
Suiça. A ITU era anteriormente conhecida como Comitê Consultivo Internacional de
Telegrafia e Telefonia (Comité Consultatif International Télégraphique et Téléphoni-
que). Como seu nome indica, o ITU se preocupa com a interoperabilidade dos sis-
temas de comunicação, incluindo telefone, telégrafo e sistemas de comunicação de
dados. O braço de telecomunicações do ITU, ou ITU-T, estabeleceu diversos padrões
que você vai encontrar na literatura. Você vai ver estes padrões prefixados por ITU-T
ou pelas antigas iniciais do grupo, CCITT.
Muitos países, incluindo a Comunidade Europeia, comissionaram organizações
abrangentes para representar seus interesses dentro dos diversos grupos internacio-
nais. O grupo que representa os Estados Unidos é o American National Standards
Institute (ANSI). A Grã-Bretanha possui sua British Standards Institution (BSI)
e é integrante do CEN (Comité Européen de Normalisation), o comitê europeu de
padronização.
A International Organization for Standardization (ISO) é a entidade que
coordena mundialmente o desenvolvimento de padrões, incluindo as atividades da
ANSI com a BSI, entre outras. ISO não é uma sigla, mas provém da letra grega isos,
que significa “igual.” A ISO consiste de mais de 2800 comitês técnicos, cada um
encarregado de alguma questão de padronização global. Seus interesses variam do
comportamento de filme fotográfico à largura de linhas de parafusos, incluindo o
mundo complexo de engenharia de computação. A proliferação do comércio mundial
tem sido facilitada pela ISO. Atualmente, a ISO toca praticamente cada um dos as-
pectos da nossas vidas.
Ao longo deste livro, mencionamos nomes de padrões oficiais onde era apropriado.
Informações definitivas sobre muitos destes padrões podem ser encontradas com mí-
nimos detalhes nas páginas Web da organização responsável pelo estabelecimento do
padrão mencionado. Como um bônus extra, muitos padrões contêm referências “norma-
tivas” e informativas que fornecem mais informação sobre áreas relacionadas ao padrão.

1.5 DESENVOLVIMENTO HISTÓRICO


Durante seus mais de 50 anos de vida, computadores se tornaram o exemplo perfeito
da conveniência moderna. Esforços de memória fazem relembrar os dias de esteno-
grafia, papel carbono e mimeógrafos. Às vezes parece que estas máquinas mágicas de
computação foram desenvolvidas instantaneamente na forma como as conhecemos
hoje. Mas o caminho do desenvolvimento dos computadores é pavimentado com des-
cobertas acidentais, pressão comercial e ideias extravagantes. Ocasionalmente, com-
putadores podem mesmo ter melhorado por meio de sólidas práticas de engenharia!
Apesar de todas as guinadas, voltas e becos tecnológicos sem saída, os computadores
têm evoluído num ritmo que desafia a compreensão. Somente quando tivermos visto
de onde viemos poderemos apreciar totalmente onde estamos hoje.
1.5 Desenvolvimento Histórico  49

Nas seções que seguem, dividimos a evolução de computadores em gerações,


cada geração sendo definida pela tecnologia usada para construir a máquina. Forne-
cemos datas aproximadas para cada geração somente como referência. Existe pouca
concordância entre os especialistas sobre as datas exatas de início e fim de cada época
tecnológica.
Cada invenção reflete a época em que foi feita, de modo que se pode imaginar
se isso teria sido chamado de computador se tivesse sido inventado no final dos anos
1990. Quanta computação atualmente vemos saindo das caixas misteriosas pousa-
das sobre ou abaixo de nossas escrivaninhas? Até recentemente, computadores nos
serviam somente realizando manipulações matemáticas alucinantes. Não mais limi-
tados a cientistas de jaleco branco, os computadores atuais nos ajudam a escrever
documentos, a manter contato através do globo com pessoas queridas e a fazer nossas
comprinhas. Computadores empresariais modernos gastam somente uma minúscula
parcela de seu tempo fazendo cálculos contábeis. Seu principal objetivo é dar aos
usuários generosas informações estratégicas para obter vantagens competitivas. Será
que a palavra computador se tornou inadequada? Um anacronismo? Como, então,
poderíamos chamá-los por outro nome que não computadores?
Não conseguimos apresentar a história completa de computadores em poucas
páginas. Livros inteiros têm sido escritos sobre este assunto e mesmo eles fazem seus
leitores desejar mais detalhes. Se seu interesse foi aguçado, recomendamos a leitura
de alguns dos livros citados na lista de referências no final deste capítulo.

1.5.1 Geração zero: Máquinas de cálculo mecânicas (1642–1945)


Antes dos anos 1500, um típico homem de negócios europeu usava um ábaco para
calcular e registrava as cifras resultantes em numerais romanos. Após o sistema de
numeração decimal ter finalmente substituído os números romanos, diversas pessoas
inventaram dispositivos para tornar os cálculos decimais ainda mais rápidos e mais
precisos. Wilhelm Schickard (1592–1635) foi reconhecido como o inventor da primei-
ra calculadora mecânica, o Relógio Calculadora (data exata desconhecida). Este dis-
positivo podia adicionar e subtrair números contendo até seis dígitos. Em 1642, Blaise
Pascal (1623–1662) desenvolveu uma calculadora mecânica, denominada Pascaline,
para ajudar seu pai no seu trabalho com impostos. A Pascaline podia fazer adição
com transporte (vai-um) e subtração. Ela foi provavelmente o primeiro dispositivo
mecânico de soma realmente usado para objetivos práticos. De fato, a Pascaline foi tão
bem-concebida que o seu projeto básico ainda estava sendo usado no início do século
XX, como evidenciado pelo Lightning Portable Adder, em 1908, e pelo Addometer,
em 1920. Gottfried Wilhelm von Leibniz (1646–1716), um notável matemático, inven-
tou uma calculadora conhecida como Stepped Reckoner, que podia adicionar, subtrair,
multiplicar e dividir. Nenhum destes dispositivos podia ser programado ou tinha me-
mória. Eles precisavam de intervenção manual em cada passo de seus cálculos.
Embora máquinas como a Pascaline fossem usadas até o século XX, novos pro-
jetos de calculadoras começaram a emergir no século XIX. Um dos mais ambiciosos
dentre estes novos projetos era a Máquina Diferencial (Difference Engine) de Charles
Babbage (1791–1871). Algumas pessoas se referem a Babbage como “o pai da com-
50  Capítulo 1: Introdução

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

1.5.2 A primeira geração: Computadores com válvulas (1945–1953)


Embora Babbage seja frequentemente chamado de “pai da computação”, suas máqui-
nas eram mecânicas, e não, elétricas ou eletrônicas. Na década de 1930, Konrad Zuse
(1910–1995) partiu do ponto em que Babbage havia parado e adicionou tecnologia
elétrica e outras melhorias ao projeto de Babbage. O computador de Zuse, o Z1, usa-
va relés eletromecânicos em vez das engrenagens movidas a manivela de Babbage. O
Z1 era programável e possuía uma memória, uma unidade aritmética e uma unidade
de controle. Visto que verbas e recursos eram escassos na Alemanha durante a guerra,
Zuse usava filmes de cinema descartados em vez de cartões perfurados para a entra-
da. Embora esta máquina tenha sido projetada para usar válvulas, Zuse, que estava
construindo ele mesmo a sua máquina, não podia arcar com os custos das válvulas.
Assim, o Z1 corretamente pertence à primeira geração, embora não tivesse válvulas.
Zuse construiu o Z1 na sala da casa de seus pais, em Berlim, enquanto a Alema-
nha estava em guerra com a maior parte da Europa. Felizmente ele não conseguiu
convencer os nazistas a comprar a sua máquina. Eles não perceberam a vantagem
tática que tal dispositivo poderia dar a eles. Bombas aliadas destruíram todos os três
primeiros sistemas de Zuse, O Z1, o Z2 e o Z3. As impressionantes máquinas de Zuse
não puderam ser refinadas até o final da guerra e foram mais um “beco de evolução”
na história dos computadores.
Computadores digitais, como os conhecemos hoje, são o fruto do trabalho reali-
zado por diversas pessoas nas décadas de 1930 e 1940. A calculadora mecânica básica
de Pascal foi projetada e modificada simultaneamente por muitas pessoas; o mesmo
pode ser dito do moderno computador eletrônico. Não obstante os continuados debates
sobre quem foi o primeiro a fazer, três pessoas claramente emergem como inventoras
dos modernos computadores: John Atanasoff, John Mauchly e J. Presper Eckert.
John Atanasoff (1904–1995) recebeu o mérito da construção do primeiro com-
putador totalmente eletrônico. O Atanasoff Berry Computer (ABC) era uma máquina
binária construída com válvulas. Visto que este sistema foi construído especificamen-
te para resolver sistemas de equações lineares, não podemos considerá-lo um com-
putador de uso geral. Existem, no entanto, algumas características que o ABC possui
em comum com o computador de uso geral ENIAC (Electronic Numerical Integrator
and Computer), que foi inventado poucos anos depois. Estas características comuns
causaram considerável controvérsia a respeito de a quem deveria ser dado o crédito (e
os direitos de patente) pela invenção do computador eletrônico digital. (O leitor inte-
ressado pode encontrar mais detalhes em um processo bastante volumoso envolvendo
Atanasoff e o ABC em Mollenhoff [1988].)
John Mauchly (1907–1980) e J. Presper Eckert (1929–1995) foram os dois prin-
cipais inventores do ENIAC, apresentado ao público em 1946. O ENIAC é reconhe-
cido como sendo o primeiro computador digital de uso geral totalmente eletrônico.
Esta máquina usava 17.468 válvulas, ocupava 1800 metros quadrados de chão, pesava
30 toneladas e consumia 174 kilowatts de energia. O ENIAC tinha uma capacidade
de memória de cerca de 1000 bits de informação (cerca de 20 números de 10 dígitos
decimais) e usava cartões perfurados para armazenar dados.
A visão de John Mauchly de uma máquina de calcular eletrônica nasceu de seu
interesse ao longo da vida de fazer previsão do tempo matematicamente. Enquanto
professor de física do Ursinus College, próximo a Filadélfia, Mauchly empregou dú-
52  Capítulo 1: Introdução

U.S. Army, 1946


1.5 Desenvolvimento Histórico  53

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 que é uma válvula?


O mundo conectado que conhecemos hoje nasceu da invenção de
Prato um dispositivo eletrônico simples denominado tubo de vácuo (va-
(Anodo) cuum tube) pelos americanos e – mais precisamente – válvula (val-
Grade de
controle ve) pelos britânicos. Tubos de vácuo devem ser chamados de válvu-
Catodo las porque eles controlam o fluxo de elétrons em sistemas eletrônicos
Envelope de forma muito semelhante à que válvulas controlam o fluxo de água
em sistemas encanados. De fato, alguns tipos de tubos de elétrons
da metade do século XX não contêm vácuo, sendo eles preenchidos
com gases condutivos, tal como vapor de mercúrio, que podem for-
necer o comportamento elétrico desejado.
(continua)
54  Capítulo 1: Introdução

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.

Carga negativa no Carga negativa no


catodo e grade de catodo; positiva na grade
controle; positiva no de controle e no anodo:
anodo: elétrons elétrons viajam do
permanecem perto catodo para o anodo.
do catodo.
 
   

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.

1.5.3 A segunda geração: Computadores transistorizados (1954–1965)


A tecnologia de válvulas da primeira geração não era muito confiável. De fato, alguns
críticos do ENIAC acreditavam que o sistema nunca iria funcionar porque as válvulas
queimariam mais rápido do que poderiam ser substituídas. Embora a confiabilidade
do sistema não fosse tão ruim quanto os pessimistas previam, os sistemas a válvulas
frequentemente passavam mais tempo sem funcionar do que funcionando.
56  Capítulo 1: Introdução

Em 1948, três pesquisadores do Bell Laboratories – John Bardeen, Walter Brat-


tain e William Shockley – inventaram o transistor. Esta nova tecnologia não apenas
revolucionou dispositivos como televisões e rádios, mas também impulsionou a in-
dústria de computadores para uma nova geração. Visto que transistores consomem
menos energia do que válvulas, são menores e trabalham com mais confiabilidade, os
circuitos de computadores consequentemente se tornaram menores e mais confiáveis.
Apesar do uso de transistores, os computadores desta geração ainda eram grandes e
bastante caros. Em geral, somente universidades, governos e grandes empresas pode-
riam justificar tais custos. Todavia, muitos fabricantes de computadores emergiram
nesta geração; IBM, Digital Equipment Corporation (DEC) e Univac (agora Unisys)
dominaram a indústria. A IBM comercializou o 7094 para aplicações científicas e o
1401 para aplicações comerciais. A DEC estava ocupada fabricando o PDP-1. Uma
empresa fundada (mas logo vendida) por Mauchly e Eckert construiu os sistemas
Univac. O mais bem-sucedido sistema Unisys desta geração pertencia à série 1100.
Outra empresa, a Control Data Corporation (CDC), sob a supervisão de Seymour
Cray, construiu o CDC 6600, o primeiro supercomputador do mundo. O CDC 6600,
de 10 milhões de dólares, podia executar 10 milhões de instruções por segundo, usava
palavras de 60 bits e tinha uma assombrosa memória principal de 128 k palavras.

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

Similarmente, se adicionarmos um pouco de boro (boron), arsênio (arsenic) ou gálio


(gallium) ao silício, teremos elétrons extras nas valências de cristais de silício. Isto nos forne-
ce um material do tipo N. Uma pequena quantidade de corrente irá fluir através do material
do tipo N se providenciarmos um lugar para os elétrons fracamente ligados do material do
tipo N. Em outras palavras, se aplicarmos um potencial positivo a um material do tipo N,
os elétrons irão fluir do polo negativo para o polo positivo. Se os pólos forem invertidos,
isto é, se aplicarmos um potencial negativo ao material do tipo N e um potencial positivo
ao material do tipo P, nenhuma corrente irá fluir. Isto significa que podemos fazer um diodo
de estado sólido a partir de uma simples junção de materiais dos tipos N e P. O triodo de
estado sólido, o transistor, consiste de três camadas de material semicondutor. Ou uma fatia
de material do tipo P é colocada entre duas outras do tipo N, ou uma fatia de material do
tipo N é colocada entre duas de material do tipo P. A primeira é chamada de transistor NPN
e a segunda de transistor PNP. A camada interna do transistor é chamada de base; as outras
duas camadas são chamadas de coletor e de emissor.
A figura abaixo mostra como a corrente flui através de transistores NPN e PNP. A base
de um transistor funciona da mesma forma que a grade de controle em um tubo triodo:
pequenas alterações na corrente da base de um transistor resultam em um grande fluxo de
elétrons do emissor para o coletor.
Um transistor de componentes discretos é
Fonte de elétrons
mostrado em um encapsulamento “TO-50” na fi-
Uns poucos gura inicial deste quadro. Existem somente três
Uns poucos
elétrons
elétrons
retirados fios (condutores) que conectam a base, o emissor
adicionados
e o coletor do transistor ao resto do circuito.
Transistores não são apenas pequenas válvulas;
Grande saída
eles também operam mais frios e são muito mais
de corrente confiáveis. Filamentos de tubos de vácuo, como
– + filamentos de lâmpadas, funcionam mais quentes
e em algum momento queimam. Computadores
que usam componentes transistorizados são naturalmente menores e funcionam em tempe-
raturas menores do que suas válvulas predecessoras. A miniaturização final, entretanto, não
é realizada pela substituição de triodos individuais por transistores discretos, mas sim colo-
cando circuitos inteiros em um pedaço de silício.
Circuitos integrados, ou chips, contêm centenas
Emissor Contatos
de milhares de transistores microscópicos. Muitas téc-
nicas diferentes são usadas para fabricar circuitos inte-
N N
grados. Um dos métodos mais simples envolve a cria-
P Base P
N ção de um circuito usando software de projeto assistido
N Coletor
por computador que pode imprimir grandes mapas de
cada uma das várias camadas de silício que formam o chip. Cada mapa é usado como um nega-
tivo fotográfico onde alterações induzidas por luz em uma substância fotorresistente na super-
fície do chip produz os delicados padrões do circuito quando o chip de silício é imerso em uma
solução química que limpa as áreas expostas do silício. Esta técnica é chamada de fotomicroli-
tografia (photomicrolithography). Após completar a gravação, uma camada de material do
tipo N ou de material do tipo P é depositada na superfície rugosa do chip. Esta camada é então
(continua)
58 䉬 Capítulo 1: Introdução

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.

1.5.4 A terceira geração: Computadores com circuitos integrados


(1965–1980)
A verdadeira explosão no uso de computadores veio com a geração de circuitos inte-
grados. Jack Kilby inventou o circuito integrado (CI), ou microchip, feito com ger-
mânio. Seis meses depois, Robert Noyce (que também havia trabalhado em projeto
de circuitos integrados) criou um dispositivo similar usando silício em vez de germâ-
nio. Este é o chip de silício sobre o qual foi construída a indústria de computadores.
Os CIs pioneiros permitiam que dezenas de transistores existissem em um único chip
de silício que era menor do que um transistor simples em “componente discreto”. Os
computadores se tornaram mais rápidos, menores e mais baratos, trazendo imensos
ganhos ao poder de processamento. A família de computadores IBM System/360 es-
tava entre os primeiros sistemas disponíveis comercialmente que foram construídos
inteiramente com componentes de estado sólido. A linha 360 de produtos também
foi a primeira da IBM a oferecer compatibilidade entre todas as máquinas da família,
significando que todas usavam a mesma linguagem simbólica. Usuários de máquinas
pequenas podiam migrar para sistemas maiores sem reescrever todo o seu software.
Este foi um novo e revolucionário conceito na época.
A geração CI também viu a introdução de tempo compartilhado e multiprogra-
mação (a habilidade de mais de uma pessoa usar o computador ao mesmo tempo). A
multiprogramação, por sua vez, necessitou a introdução de novos sistemas operacio-
nais para esses computadores. Minicomputadores de tempo compartilhado tais como
o PDP-8 e o PDP-11 da DEC, tornaram a computação mais acessível a pequenas
empresas e universidades. A tecnologia de CI também permitiu o desenvolvimento
de supercomputadores mais poderosos. Seymour Cray usou o que havia aprendido
durante a construção do CDC 6600 e iniciou a sua própria empresa, a Cray Resear-
ch Corporation. Esta empresa produziu vários supercomputadores, iniciando com o
Cray-1, de 8 milhões de dólares, em 1976. O Cray-1, em forte contraste com o CDC
6600, podia executar mais de 160 milhões de instruções por segundo e suportava 8
megabytes de memória. Ver a Figura 1.2 para uma comparação de tamanhos de vál-
vulas, transistores e circuitos integrados.

1.5.5 A quarta geração: Computadores VLSI (1980–????)


Na terceira geração de evolução eletrônica, vários transistores foram integrados em
um chip. À medida que as técnicas de fabricação e as tecnologias de chip avança-
ram, um número crescente de transistores foram empacotados em um chip. Agora
1.5 Desenvolvimento Histórico  59

Cortesia de Linda Null


FIGURA 1.2 Comparação de Componentes de Computadores
Sentido horário, iniciando no topo:
1) Válvula
2) Transistor
3) Chip contendo 3200 portas NAND de duas entradas
4) Encapsulamento de circuito integrado (o pequeno quadrado prateado no canto
inferior esquerdo é um circuito integrado)

existem diversos níveis de integração: SSI (small scale integration – integração em


pequena escala), na qual existem de 10 a 100 componentes por chip; MSI (medium
scale integration – integração em média escala), na qual existem de 100 a 1.000
componentes por chip; LSI (large scale integration – integração em larga escala),
na qual existem de 1.000 a 10.000 componentes por chip; e, finalmente, VLSI (very
large scale integration – integração em muito larga escala), na qual existem mais
de 10.000 componentes por chip. Este último nível, VLSI, marca o início da quarta
geração de computadores.
Para dar alguma perspectiva a estes números, considere o ENIAC como um pro-
jeto em um chip. Em 1997, para comemorar o quinquagésimo aniversário de sua
primeira demonstração em público, um grupo de estudantes da Universidade da Pen-
silvânia construiu um único chip equivalente ao ENIAC. A fera de 1.800 pés quadra-
dos e 30 toneladas, que devorava 174 kilowatts de potência, no minuto em que ela era
ligada, foi reproduzida em um chip do tamanho de uma unha de um polegar. Este chip
60  Capítulo 1: Introdução

continha aproximadamente 174.569 transistores – uma ordem de magnitude a menos


do que o número de componentes normalmente colocados na mesma quantidade de
silício no final de década de 1990.
A VLSI permitiu à Intel, em 1971, criar o primeiro microprocessador do mundo,
o 4004, que era plenamente funcional, com um sistema de 4 bits que funcionava a
108KHz. A Intel também introduziu o chip de memória de acesso randômico (RAM),
que podia armazenar quatro kilobits de memória em um único chip. Isto permitiu aos
computadores de quarta geração se tornarem menores e mais rápidos do que seus
antecessores de estado sólido.
A tecnologia VLSI e seus incríveis circuitos diminutos disseminou o desenvol-
vimento de microcomputadores. Estes sistemas eram suficientemente pequenos e
baratos para tornar os computadores disponíveis e acessíveis ao público em geral. O
microcomputador pioneiro foi o Altair 8800, apresentado em 1975 pela empresa Mi-
croprocessor Instrumentation and Telemetry (MITS). O Altair 8800 foi seguido pelo
Apple I e Apple II e pelos PET e Vic 20 da Commodore. Finalmente, em 1981 a IBM
introduziu seu PC (personal computer – computador pessoal).
O Computador Pessoal foi a terceira tentativa da IBM de introduzir um sistema
de computação “inicial”. Seus computadores de mesa Datamaster, bem como sua
Série 5100, fracassaram miseravelmente no mercado. Apesar destas falhas iniciais,
John Opel, da IBM, convenceu sua gerência a tentar novamente. Ele sugeriu formar
uma “unidade de negócios independente”, quase autônoma, em Boca Raton, Flórida,
distante da sede da IBM em Armonk, Nova York. Opel escolheu Don Estridge, um
engenheiro capaz e cheio de energia, para liderar o desenvolvimento do novo sistema,
de codinome Acorn. Face às falhas anteriores da IBM na área de pequenos computa-
dores, a gerência corporativa colocou rédeas curtas nas finanças e prazos do Acorn.
Opel pôde iniciar o seu projeto somente após prometer terminá-lo em um ano, o que
parecia ser uma façanha impossível.
Estridge sabia que a única maneira possível de entregar o PC dentro do prazo
terrivelmente otimista de um ano seria romper as regras da IBM e usar tantas partes
“terceirizadas” quanto possível. Assim, desde o princípio, o IBM PC foi concebido
com uma arquitetura “aberta”. Embora algumas pessoas na IBM tenham lamentado
a decisão de manter a arquitetura do PC como não proprietária tanto quanto pos-
sível, foi esta abertura que permitiu à IBM estabelecer os padrões para a indústria.
Enquanto os competidores da IBM estavam ocupados processando companhias por
copiar seus projetos de sistemas, os clones de PCs proliferaram. Em breve o preço
dos microcomputadores “compatíveis com IBM” se tornaram ao alcance de quase
todas as empresas pequenas. Também graças aos fabricantes de clones, em seguida
um grande número desses sistemas verdadeiramente de “uso pessoal” começou a
ser usado nas casas das pessoas.
A IBM mais tarde perdeu o seu domínio do mercado de microcomputadores,
mas o gênio havia saído da garrafa. Para o bem ou para o mal, a arquitetura da IBM
continua sendo de fato o padrão para a microcomputação, que cada ano anuncia
sistemas maiores e mais rápidos. Hoje em dia, o computador de mesa médio pos-
sui um poder de computação muitas vezes maior que o dos mainframes da década
de 1960.
Desde a década de 1960, os computadores mainframes têm apresentado surpre-
endentes melhorias na relação preço-performance graças à tecnologia VLSI. Embora
1.5 Desenvolvimento Histórico 䉬 61

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.

1.5.6 Lei de Moore


E assim, onde isto terminará? Quão pequenos podemos tornar os transistores? Quão
densamente podemos empacotar chips? Ninguém pode dizer ao certo. A cada ano
cientistas continuam a frustrar as tentativas de prognóstico para definir os limites da
integração. De fato, mais de um cético ergueu as sobrancelhas quando, em 1965, o
fundador da Intel, Gordon Moore, afirmou que “a densidade de transistores em um
circuito integrado irá dobrar a cada ano”. A versão atual da predição é geralmente co-
locada como “a densidade dos chips de silício dobra a cada 18 meses”. Esta asserção
se tornou conhecida como Lei de Moore. Moore pretendia que o seu postulado va-
lesse por somente 10 anos. Entretanto, avanços nos processos de manufatura de chips
permitiram que esta asserção valesse por quase 40 anos (e muitos acreditam que irá
valer até a década de 2010).
Porém, usando a tecnologia atual, a Lei de Moore não pode ser aplicada para
sempre. Existem limitações físicas e financeiras que deverão entrar em jogo. Na atual
taxa de miniaturização, poderia levar cerca de 500 anos para colocar todo o sistema
solar em um chip! Claramente, os limites ficam em algum lugar entre este e aquele.
Os custos podem ser a restrição final. A Lei de Rock, proposta por um antigo capi-
talista da Intel, Arthur Rock, é um corolário para a Lei de Moore: “O custo de capital
de equipamentos para construir semicondutores irá dobrar a cada quatro anos”. A Lei
de Rock provém das observações de um financista que disse que viu o preço de uma
nova fábrica de chips passar de cerca de 12.000 dólares, em 1968, para 12 milhões no
final dos anos 1990. Em 2005, o custo de construir uma nova fábrica de chips estava
próximo de 3 bilhões de dólares. Nesta taxa, pelo ano 2035 não apenas o tamanho
62  Capítulo 1: Introduçã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.

1.6 A HIERARQUIA DE NÍVEIS DO COMPUTADOR


Se uma máquina deve ser capaz de resolver uma grande variedade de problemas, ela
deve poder executar programas escritos em diferentes linguagens, desde FORTRAN
e C até Lisp e Prolog. Como veremos no Capítulo 3, os únicos componentes físicos
com os quais temos que trabalhar são fios e portas. Existe um formidável espaço
aberto – o intervalo semântico – entre esses componentes físicos e uma linguagem de
alto nível como C. Para que um sistema seja prático, o intervalo semântico deve
ser invisível para a maioria dos usuários do sistema.
A experiência em programação nos ensina que quando um problema é grande,
devemos particioná-lo e usar a abordagem “dividir para conquistar”. Em progra-
mação, dividimos um problema em módulos e depois projetamos cada módulo em
separado. Cada módulo realiza uma tarefa específica, e os módulos precisam saber
somente como se ligar com outros módulos para fazer uso deles.
A organização de um sistema de computação pode ser abordada de maneira si-
milar. Por meio do princípio de abstração, podemos imaginar a máquina como sendo
construída em uma hierarquia de níveis, em que cada nível tem um função específica
e existe como uma máquina hipotética distinta. Denominamos o computador hipoté-
tico em cada nível de máquina virtual. A máquina virtual de cada nível executa seu
próprio conjunto de instruções, solicitando às máquinas dos níveis mais baixos que
realizem as tarefas quando necessário. Estudando organização de computadores, você
verá as bases lógicas do particionamento em hierarquia e como estas camadas são im-
plementadas e fazem interface entre si. A Figura 1.3 mostra as camadas comumente
aceitas para representar as máquinas virtuais abstratas.
O nível 6, o Nível de Usuário, é composto de aplicações e é o nível com o qual
todos estão mais familiarizados. Neste nível executamos programas como proces-
sadores de textos, pacotes gráficos ou jogos. Os níveis inferiores são praticamente
invisíveis no nível de usuário.
1.6 A Hierarquia de Níveis do Computador 䉬 63

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

FIGURA 1.3 Os níveis abstratos dos modernos sistemas de computação.

O nível 5, o Nível de Linguagem de Alto Nível, consiste em linguagens como


C, C⫹⫹, FORTRAN, Lisp, Pascal e Prolog. Essas linguagens devem ser traduzidas
(usando um compilador ou um interpretador) para uma linguagem que a máquina
possa entender. Linguagens compiladas são traduzidas para linguagem simbólica e
então são montadas em código objeto. (Elas são traduzidas para o próximo nível
abaixo.) O usuário neste nível vê muito pouco dos níveis inferiores. Mesmo que um
programador precise conhecer os tipos de dados e as instruções disponíveis para estes
tipos, ele ou ela não precisa saber como estes tipos são realmente implementados.
O nível 4, o Nível de Linguagem Simbólica, compreende algum tipo de lingua-
gem simbólica. Como anteriormente mencionado, linguagens compiladas de alto ní-
vel são primeiro traduzidas para linguagem simbólica a qual, então, é diretamente
traduzida para linguagem de máquina. Esta é uma tradução um-a-um, significando
que uma instrução em linguagem simbólica é traduzida exatamente para uma instru-
ção em linguagem de máquina. Ao termos níveis separados, reduzimos o intervalo
semântico entre uma linguagem de alto nível, como C⫹⫹, e a linguagem da máquina
real (que consiste de 0s e 1s).
O nível 3, o Nível de Software de Sistema, trata das instruções de operação do
sistema. Este nível é responsável por multiprogramação, proteção de memória, sin-
64  Capítulo 1: Introdução

cronização de processos e várias outras funções importantes. Muitas vezes as instru-


ções traduzidas da linguagem simbólica para a linguagem de máquina são passadas
por meio deste nível sem modificação.
O nível 2, a Arquitetura do Conjunto de Instruções (ISA), ou Nível de Máquina,
consiste da linguagem de máquina reconhecida pela arquitetura particular do sistema
de computação. Programas escritos na verdadeira linguagem de máquina do compu-
tador em um computador implementado em hardware (ver abaixo) podem ser execu-
tados diretamente pelos circuitos eletrônicos sem quaisquer interpretadores, traduto-
res ou compiladores. Vamos estudar em profundidade as arquiteturas de conjuntos de
instruções nos Capítulos 4 e 5.
O nível 1, o Nível de Controle, é onde a unidade de controle se assegura de que
as instruções sejam decodificadas e executadas adequadamente e de que os dados se-
jam movidos para onde e quando eles devem ser. A unidade de controle interpreta as
instruções de máquina passadas para ela, uma de cada vez, fazendo com que as ações
requeridas sejam executadas.
Unidades de controle podem ser projetadas de duas maneiras: elas podem ser
implementadas em hardware (hardwired) ou microprogramadas. Em unidades
de controle implementadas em hardware, os sinais de controle emanam de blocos de
componentes de lógica digital. Estes sinais dirigem todo o tráfego de dados e instru-
ções para as partes apropriadas do sistema. Unidades de controle implementadas em
hardware são geralmente muito rápidas porque são, na realidade, componentes físi-
cos. Entretanto, uma vez implementadas elas são muito difíceis de ser modificadas,
pela mesma razão.
A outra opção para o controle é implementar as instruções usando um microprogra-
ma. Um microprograma é um programa escrito em uma linguagem de baixo nível que é
implementada diretamente pelo hardware. As instruções de máquina produzidas no ní-
vel 2 são alimentadas neste microprograma que, então, interpreta as instruções pela ati-
vação do hardware capaz de executar a instrução original. Uma instrução em linguagem
de máquina é, muitas vezes, traduzida para várias instruções em microcódigo. Esta não
é a correlação um-a-um que existe entre linguagem simbólica e linguagem de máquina.
Microprogramas são populares porque podem ser modificados de forma relativamente
fácil. A desvantagem da microprogramação é, naturalmente, que uma camada adicional
de tradução geralmente resulta em uma execução de instrução mais lenta.
O nível 0, o Nível de Lógica Digital, é onde encontramos os componentes físicos
do sistema de computação: as portas e os fios. Estes são os blocos básicos de constru-
ção, as implementações da lógica matemática, que são comuns a todos os sistemas de
computação. O Capítulo 3 apresenta o Nível de Lógica Digital em detalhes.

1.7 O MODELO DE VON NEUMANN


Nas primeiras máquinas de computação eletrônicas, programar era sinônimo de co-
nectar fios a pinos. Não existia a arquitetura em camadas, de modo que programar um
computador era muito mais uma façanha de engenharia elétrica do que um exercício
de projeto de algoritmos. Antes que seu trabalho com o ENIAC estivesse pronto,
John W. Mauchly e J. Presper Eckert conceberam uma maneira mais fácil de alterar
o comportamento de sua máquina de calcular. Eles consideraram que dispositivos de
1.7 O Modelo de Von Neumann  65

memória, na forma de linhas de retardo de mercúrio, poderiam fornecer uma maneira


de armazenar instruções de programas. Isto acabaria com o incômodo de refazer as
conexões do sistema cada vez que houvesse um problema novo para resolver ou um
antigo para corrigir. Mauchly e Eckert documentaram a sua ideia propondo-a como a
base de seu próximo computador, o EDVAC. Infelizmente, como estavam envolvidos
no projeto ultrassecreto do ENIAC durante a II Guerra Mundial, Mauchly e Eckert
não puderam publicar imediatamente a sua descoberta.
Entretanto estas restrições não se aplicavam a diversas pessoas que trabalhavam
na periferia do projeto ENIAC. Uma destas pessoas era um famoso matemático hún-
garo de nome John von Neumann. Após a leitura da proposta de Mauchly e Eckert
para o EDVAC, von Neumann publicou e divulgou a ideia. Ele foi tão efetivo na di-
vulgação deste conceito que a história deu créditos a ele por esta invenção. Todos os
computadores com programas armazenados se tornaram conhecidos como sistemas
de von Neumann, os quais usam a arquitetura de von Neumann. Embora sejamos
compelidos pela tradição a dizer que computadores com programas armazenados
usam a arquitetura de von Neumann, podemos não estar reconhecendo seus verdadei-
ros autores: John W. Mauchly e J. Presper Eckert.
A versão atual da arquitetura de máquina com programa armazenado satisfaz
pelo menos as seguintes características:
• Consiste em três sistemas de hardware: uma unidade central de processamen-
to (UCP) com uma unidade de controle, uma unidade de aritmética e lógica
(UAL), registradores (pequenas memórias) e um contador de programa; um
sistema de memória principal, que armazena programas que controlam a exe-
cução do computador; e um sistema de E/S.
• Tem capacidade de executar processamento sequencial de instruções.
• Contém um único caminho, físico ou lógico, entre o sistema de memória prin-
cipal e a unidade de controle da UCP, forçando a alternância entre ciclos de ins-
trução e execução. Este caminho simples é, muitas vezes, denominado gargalo
de von Neumann.
A Figura 1.4 mostra como estes recursos trabalham juntos nos modernos sistemas
de computação. Observe que o sistema mostrado na figura faz passar toda a sua E/S
através da unidade de aritmética e lógica (na realidade, através do acumulador, que é
parte da UAL). Esta arquitetura executa programas no que é conhecido como ciclo de
execução de von Neumann (também chamado de ciclo de busca-decodificação-exe-
cução), que descreve como a máquina trabalha. Uma iteração do ciclo é feita assim:
1. A unidade de controle busca a próxima instrução do programa na memória
usando o contador de programa para determinar onde a instrução está locali-
zada.
2. A instrução é decodificada para uma linguagem que a UAL possa entender.
3. Qualquer operando de dados requerido para executar a instrução é carregado
da memória e colocados em registradores dentro da UCP.
4. A UAL executa a instrução e coloca os resultados em registradores ou na
memória.
66  Capítulo 1: Introdução

Unidade central de processamento

Contador
de programa

Registradores Memória
principal

Unidade
Unidade de de controle
aritmética e lógica

Sistema de
Entrada/Saída

FIGURA 1.4 A arquitetura de von Neumann.

As ideias presentes na arquitetura de von Neumann foram estendidas de modo


que programas e dados armazenados em meios de armazenamento de acesso mais
lento, tais como discos rígidos, possam ser copiados para meios de memória volátil
de acesso mais rápido, tais como a RAM, antes da execução. Esta arquitetura também
foi adaptada para aquilo que atualmente é chamado de modelo com barramentos
de sistema, que é mostrado na Figura 1.5. O barramento de dados move dados da
memória principal para os registradores da UCP (e vice-versa). O barramento de en-
dereços armazena o endereço dos dados que o barramento de dados está acessando
no momento. O barramento de controle carrega os sinais de controle necessários que
especificam como a transferência de informações deve ser feita.
Outras melhorias na arquitetura de von Neumann incluem usar registradores de
indexação para endereçamento, adicionar dados de ponto-flutuante, usar interrupções
e E/S assíncrona, adicionar memória virtual e adicionar registradores gerais. Você vai
aprender bastante sobre estas melhorias nos capítulos seguintes.

1.8 MODELOS DIFERENTES DO MODELO DE VON NEUMANN


Até recentemente, quase todos os computadores de propósito geral seguiam o projeto
de von Neumann. O modelo de von Neumann executa instruções sequencialmente
e é, portanto, extremamente adequado para processamento sequencial. Entretanto o
gargalo de von Neumann continua a frustrar engenheiros que buscam maneiras de
construir sistemas mais rápidos que sejam de baixo custo e compatíveis com a grande
1.8 Modelos Diferentes do Modelo de Von Neumann  67

UCP Entrada
(UAL, Registradores Memória e
e Controle) Saída

Barramento de dados

Barramento de endereço

Barramento de controle

FIGURA 1.5 A arquitetura modificada de von Neumann, adicionando um barra-


mento de sistema.

quantidade de software comercialmente disponível. Engenheiros que não estejam li-


mitados pela necessidade de manter compatibilidade com sistemas von Neumann es-
tão livres para usar modelos de computação diferentes. Vários diferentes subcampos
caem na categoria de não von Neumann, incluindo redes neurais (usando ideias de
modelos do cérebro como paradigma de computação), algoritmos genéticos (explo-
rando ideias da biologia e da evolução de DNA), computação quântica, computação
de fluxo de dados e computadores paralelos. Todos estes possuem algo em comum –
a computação é distribuída entre diferentes unidades de processamento que atuam em
paralelo. Eles diferem em quão fracamente ou fortemente os vários componentes são
conectados. Destes, a computação paralela é atualmente a mais popular.
Hoje o processamento paralelo resolve alguns de nossos maiores problemas de
modo parecido a como os colonizadores do Velho Oeste resolveram seus maiores
problemas usando juntas de bois. Se eles usassem um boi para mover uma árvore,
e o boi não fosse suficientemente grande ou suficientemente forte, eles certamente
não tentariam criar um boi maior – eles usavam dois bois. Se um computador não é
suficientemente rápido ou não é suficientemente poderoso, em vez de desenvolver um
computador mais rápido e mais poderoso por que não usar simplesmente vários com-
putadores? Isto é precisamente o que a computação paralela faz. Os primeiros siste-
mas de processamento paralelo foram construídos no final dos anos 1960 e tinham
somente dois processadores. Os anos 1970 viram a introdução de supercomputadores
com até 32 processadores, e os anos 1980 trouxeram os primeiros sistemas com mais
de 1.000 processadores. Finalmente, em 1999, a IBM anunciou a construção de um
supercomputador, chamado Blue Gene. Este computador maciçamente paralelo con-
tém mais de um milhão de processadores, cada qual com sua própria memória. Sua
primeira tarefa é analisar o comportamento de moléculas de proteína.
Entretanto, mesmo a computação paralela possui seus limites. À medida que o
número de processadores aumenta, também aumenta a sobrecarga de gerenciar a dis-
tribuição de tarefas entre estes processadores. Alguns sistemas de processamento pa-
ralelo requerem processadores extra somente para gerenciar os demais processadores
e os recursos a eles atribuídos. Sem importar quantos processadores sejam colocados
68  Capítulo 1: Introdução

em um sistema ou como muitos recursos são atribuídos a eles, de algum modo, em


algum lugar, um gargalo está prestes a se desenvolver. O melhor que podemos fazer
para remediar isto é assegurar que as partes mais lentas do sistema sejam aquelas que
são menos usadas. Esta é a ideia por trás da Lei de Amdahl. Esta lei afirma que o
acréscimo de desempenho possível com uma dada melhoria é limitado pela quanti-
dade do uso daquele recurso melhorado. A premissa subjacente é que cada algoritmo
possui uma parte sequencial que, no final, limita o aumento de velocidade que pode
ser obtido pela implementação de multiprocessadores.
Se as máquinas paralelas não de von Neumann fornecem estes imensos acrésci-
mos de velocidade de processamento, por que todo mundo não as usa? A resposta está
em sua programabilidade. A maioria das nossas linguagens são linguagens de von
Neumann, criadas para a arquitetura de von Neumann. Temos poucas linguagens de
programação para plataformas diferentes da de von Neumann, e poucas pessoas que
realmente sabem programar neste ambiente de forma eficiente. Exemplos de lingua-
gens para tais plataformas incluem FP, J, NGL, ZPL, FL e Mercury.



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

contém centenas de figuras, difíceis de encontrar, de computadores e dispositivos de


computação antigos. Para uma discussão completa sobre o desenvolvimento histó-
rico de computadores, você pode dar uma olhada nos três volumes do dicionário de
Cortada (1987). Um relato particularmente considerável da história da computação é
apresentado em Ceruzzi (1998). Se você está interessado em um excelente conjunto
de estudos de caso sobre computadores históricos, veja Blaauw e Brooks (1997).
Você também vai se sentir bastante recompensado pela leitura do livro de Mc-
Cartney (1999) sobre o ENIAC, da crônica de Chopsky e Leonsis (1988) sobre o
desenvolvimento do IBM PC e da biografia de Ada, Condessa de Lovelace, de Toole
(1998). O artigo de Polachek (1997) mostra um cenário realista da complexidade de
calcular tabelas de trajetórias balísticas. Depois de ler este artigo, você vai entender
por que as forças armadas pagaram de bom grado por tudo o que prometia tornar o
processo mais rápido e mais preciso. O livro de Maxfield e Brown (1997) contém
uma visão fascinante das origens e da história da computação, bem como explicações
minuciosas de como um computador funciona.
Para mais informações sobre a Lei de Moore, recomendamos a leitura de Schaller
(1997). Para descrições detalhadas dos computadores antigos e dos perfis e reminis-
cências dos pioneiros da indústria, você pode consultar o IEEE Annals of the History
of Computing, que é publicado trimestralmente. O Computer Museum History Center
pode ser encontrado online em www.computerhistory.org. Ele contém várias expo-
sições, pesquisas, oportunidades e coleções. Muitas cidades agora possuem museus
de computação e permitem que os visitantes usem alguns dos computadores antigos.
Uma grande quantidade de informações pode ser encontrada nos sites das orga-
nizações que estabelecem padrões (bem como em outros sites não mencionados neste
capítulo). A IEEE pode ser encontrada em www.ieee.org; a ANSI em www.ansi.org;
a ISO em www.iso.ch; a BSI em www.bsi-global.com; e a ITU-T em www.itu.int. O
site da ISO oferece uma grande quantidade de informações e materiais de referência
sobre padrões.
A página sobre arquitetura de computadores em www.cs.wisc.edu/~arch/www/
contém um índice abrangente sobre informações relacionadas à arquitetura de com-
putadores. Muitos grupos de notícias USENET são dedicados a estes tópicos, incluin-
do comp.arch e comp.arch.storage.
A edição inteira de May/June 2000 da revista MIT’s Technology Review é dedicada
a arquiteturas que podem ser a base dos computadores do futuro. A leitura desta edição
será um tempo bem empregado. De fato, podemos dizer o mesmo de cada uma delas.

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.

REVISÃO DE TERMOS E CONCEITOS ESSENCIAIS


1. Qual é a diferença entre organização de computadores e arquitetura de computadores?
2. O que é uma ISA?
3. Qual é a importância do Princípio da Equivalência de Hardware e Software?
4. Indique três componentes básicos de um computador.
5. A qual potência de 10 o prefixo giga se refere? Qual é a potência de 2 equivalente (aproxi-
mada)?
6. A qual potência de 10 o prefixo micro se refere? Qual é a potência de 2 equivalente (apro-
ximada)?
7. Qual unidade é geralmente usada para medir a velocidade de um relógio de computador?
8. Relacione dois tipos de memória de computador.
9. Qual é a missão da IEEE?
10. Qual é o nome completo da organização que usa as iniciais ISO? ISO é uma sigla?
11. ANSI é a sigla usada por qual organização?
12. Qual é o nome da organização suíça que se dedica a assuntos concernentes a telefonia,
telecomunicações e comunicação de dados?
13. Quem é conhecido como o pai da computação e por quê?
14. Qual é a importância do cartão perfurado?
15. Relacione dois fatores motivadores do desenvolvimento de computadores.
16. Qual é o motivo de um transistor ter representado uma grande melhoria sobre o tubo de
vácuo (válvula)?
17. O que faz um circuito integrado se diferenciar de um transistor?
Exercícios  71

18. Explique as diferenças entre SSI, MSI, LSI e VLSI.


19. Qual tecnologia disseminou o desenvolvimento de microcomputadores? Por quê?
20. Qual é o significado de uma “arquitetura aberta”?
21. Enuncie a Lei de Moore.
22. Como a Lei de Rock se relaciona à Lei de Moore?
23. Relacione e explique os sete níveis comumente aceitos de uma hierarquia em níveis do
computador. Como esta organização nos ajuda a entender os sistemas de computação?
24. O que torna a arquitetura de von Neumann diferente de suas predecessoras?
25. Relacione as características presentes na arquitetura de von Neumann.
26. Como funciona o ciclo busca-decodificação-execução?
27. O que significa computação paralela?
28. Qual é a premissa por trás da Lei de Amdahl?

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?

Vous aimerez peut-être aussi