Anda di halaman 1dari 14

ARQUITETURA DE COMPUTADORES

ORGANIZAÇÃO ESTRUTURADA DE COMPUTADORES

ÍNDICE:

1. Linguagens, Níveis e Máquinas Virtuais

2. Máquinas de Vários Níveis

3. Evolução das Máquinas de Vários Níveis

4. Exemplos de Processadores

5. Bibliografia

Pag. 1 de 14
ARQUITETURA DE COMPUTADORES

1. LINGUAGENS, NÍVEIS E MÁQUINAS VIRTUAIS

Um computador digital é uma máquina que pode realizar determinada tarefa executando
uma série de instruções que lhe são fornecidas. Chamamos de programa o conjunto de
instruções que descreve a maneira como a tarefa deve ser realizada. Os circuitos eletrônicos
de um computador, em particular o seu processador, podem reconhecer e executar um
conjunto limitado de instruções muito simples, para as quais qualquer programa precisa ser
convertido antes que possa ser executado.
O conjunto de instruções de um determinado processador forma uma linguagem por meio da
qual é possível programa-lo. Tal linguagem é chamada de linguagem de máquina. Ela é definida
durante o projeto do processador, com a performance que se deseja atingir e voltada a reduzir a
complexidade, e o custo, da eletrônica necessária à sua implementação. Como é muito simples, seu
uso torna-se difícil e tedioso para o trabalho de programação.
Esta situação fez com que fosse definida uma maneira estruturada de organizar os
computadores, tratando-os como uma série de abstrações (camadas), sendo cada uma construída
com base na situada imediatamente abaixo (ou seja, camadas sobrepostas). Desse modo, a
complexidade pode ser contornada, e os computadores podem ser projetados de maneira
sistemática e organizada. Chamamos esta metodologia de organização estruturada de
computadores.
Há uma diferença muito grande entre aquilo que é conveniente para nós, usuários e
programadores de computadores, e aquilo que convém aos computadores. As pessoas desejam
uma forma de interação com os computadores através de uma linguagem mais próxima o possível
da que é utilizada no seu dia a dia já, os computadores só podem lidar com um conjunto limitado e
muito simples de instruções, expressa na forma de 0s e 1s (binário) que é a única linguagem que
um processador pode entender. Na verdade, isto é um problema a ser resolvido.
A solução deste problema pode ser obtida com o emprego de duas metodologias diferentes,
ambas envolvendo o projeto de um novo conjunto de instruções, uma nova linguagem, mais
conveniente para os usuários do que as instruções da linguagem de máquina, nativa do
processador. Essas novas instruções formam uma linguagem, que chamaremos de L1. Da mesma
maneira, as instruções de máquina formam uma linguagem que chamaremos de L0. As duas
metodologias possíveis diferem na maneira como os programas escritos em L1 serão executados
pelo processador, que só pode executar programas escritos em L0.

A primeira metodologia é conhecida como tradução (ou compilação) e consiste em “traduzir” o


programa escrito em L1 para L0, através da substituição de cada uma das instruções em L1 por
uma seqüência equivalente de instruções em L0. O processador então executa o novo programa
expresso em linguagem L0, em substituição ao primeiro, escrito em L1.
Pag. 2 de 14
ARQUITETURA DE COMPUTADORES

A outra metodologia é conhecida como interpretação e consiste em “interpretar” o que cada


instrução escrita em L1 representa em termos de uma seqüência de instruções em L0 e executá-la
antes da interpretação da próxima instrução em L1. Essa técnica não requer a geração de um novo
programa em L0.
As técnicas de tradução (compilação) e de interpretação são muito parecidas. Em ambas, as
instruções em L1 são executadas por um conjunto equivalente de instruções em L0. A diferença é
que, na tradução (compilação), o programa escrito em L1 primeiro é convertido para um programa
equivalente em L0, depois o programa em L1 é descartado, e o programa em L0 é carregado na
memória e executado. Durante a execução, é o programa em L0 que está rodando e controlando o
computador.
Na interpretação, uma instrução em L1 é executada imediatamente após ter sido examinada e
reconhecida pelo interpretador. Nesse caso não existe a geração de um novo programa. O próprio
interpretador controla o computador durante a execução do programa em L1. Para o interpretador, o
programa em L1 é tratado como dado de entrada.
Em vez de pensar em termos de tradução ou de interpretação, podemos imaginar a
existência de um computador hipotético, uma máquina virtual, cuja linguagem de máquina seja
L1. Vamos chamar essa máquina virtual de M1 e de M0 a máquina correspondente a L0. Se a
máquina M1 pudesse ser construída, e seu preço não fosse muito alto, não haveria
necessidade da linguagem L0 e, muito menos da máquina M0. Poderíamos escrever
programas em L1 e ter um computador para executá-los diretamente. Mesmo considerando
que uma hipotética máquina real com as características de M1 seja muito complicada e muito
cara para ser implementada por meio de circuitos eletrônicos, as pessoas podem escrever
programas para ela. Tais programas podem ser traduzidos (compilados) ou interpretados para
L0, e assim possíveis de serem executados diretamente pelo computador para máquinas
virtuais como se elas realmente existissem.
Para tornar a tradução ou a interpretação uma tarefa prática, as linguagens L1 e L0 não podem
ser “muito” diferentes. Essa restrição significa que, na maioria dos casos, apesar de L1 ser muito
melhor que L0, ela ainda está muito longe do ideal (lembre-se que: L0 é a linguagem binária nativa
do processador). Isto resulta numa frustração da expectativa existente quando da criação de L1 –
livrar o programador dos problemas de ter que expressar algoritmos em uma linguagem mais
apropriada a máquinas do que a humanos. Portanto, essa situação ainda não é a desejável.
Uma solução seria inventar um outro conjunto de instruções mais próximo das pessoas e mais
distante das máquinas do que o L1. Esse terceiro conjunto forma uma linguagem que chamaremos
de L2, com a sua respectiva máquina virtual M2. De maneira análoga, podemos escrever
programas em L2 como se a máquina M2 realmente existisse. Tais programas seriam traduzidos
(compilados) ou interpretados para L1 e, posteriormente, para L0.
A criação de toda uma série de linguagens, cada uma mais conveniente do que sua
antecessora, pode prosseguir indefinidamente, até a obtenção de uma que sirva aos nossos
Pag. 3 de 14
ARQUITETURA DE COMPUTADORES

propósitos. Cada linguagem usa sua antecessora como base, de modo que um computador que
use essa técnica pode ser visto como um conjunto de camadas, ou níveis, um em cima do outro,
conforme mostra a figura a seguir. A linguagem, ou camada, mais baixa é a mais simples, enquanto
a linguagem, ou camada, mais alta é a mais sofisticada.

Máquina virtual Mn com a Programas em Ln precisam ser interpretados por um interpretador


Nível n Linguagem de máquina Ln que rode em uma máquina de nível mais baixo, ou traduzidos para
uma linguagem de máquina de nível mais baixo

Máquina virtual M3 com a


Nível 3 Linguagem de máquina L3

Máquina virtual M2 com a Programas em L2 precisam ser interpretados por um interpretador


Nível 2 Linguagem de máquina L2 que rode em M1 ou M0, ou traduzidos para L1 ou L0

Máquina virtual M1 com a Programas em L1 precisam ser interpretados por um interpretador


Nível 1 Linguagem de máquina L1 que rode em M0, ou traduzidos para L0

Máquina virtual M0 com a Programas em L0 podem ser executados diretamente por


Nível 0 Linguagem de máquina L0 circuitos eletrônicos

Existe uma relação muito importante entre a linguagem é a máquina virtual. Cada máquina
virtual tem associada a si uma linguagem de máquina, composta de todas as instruções que
essa máquina pode executar. Efetivamente, uma máquina define uma linguagem. De maneira
análoga, uma linguagem define uma máquina, ou seja, a máquina pode executar todos os
programas escritos nessa linguagem.
Um computador com n níveis pode ser visto como n máquinas virtuais distintas, cada uma
delas com uma linguagem de máquina diferente. Os termos “nível” e “máquina virtual” serão usados
como sinônimos a partir de agora. Apenas programas escritos em linguagem L0 poderão ser
executados diretamente por circuitos eletrônicos, sem a intervenção de tradutores (compiladores) ou
de interpretadores. Os programas escritos em L1, L2, ..., Ln precisam ser interpretados por um
interpretador que rode em um nível mais baixo, ou traduzidos (compilados) para uma nova
linguagem, associada a um nível mais baixo.
Uma pessoa cuja tarefa seja escrever programas para a máquina virtual do nível n
teoricamente nem precisa saber da existência dos tradutores (compiladores) e dos interpretadores
eventualmente envolvidos no processo de execução de programas escritos em Ln. A estrutura da
máquina deve assegurar a execução desses programas. Para o programador da máquina virtual do
Pag. 4 de 14
ARQUITETURA DE COMPUTADORES

nível n, não há qualquer interesse no fato de seus programas serem executados passo a passo por
um conjunto de interpretadores, ou se ele são executados diretamente pelos circuitos eletrônicos da
máquina. O mesmo resultado é obtido em ambos os casos: seus programas são executados.

2. MÁQUINAS DE VÁRIOS NÍVEIS

A grande maioria dos computadores modernos é formada de diversos níveis, conforme mostra
a figura abaixo. O nível 0, o mais baixo, é composto pelo hardware da máquina. Seus circuitos
executam programas na linguagem da máquina do nível 1. Existe um outro nível situado abaixo do
nível 0 conhecido como nível dos dispositivos, que não aparece na figura porque pertence ao
domínio da engenharia eletrônica e foge completamente ao nosso escopo. Nesse nível estão os
transistores que são o que há de mais básico para os computadores. Para entender como os
transistores de fato funcionam, devemos recorrer a conceitos da física do estado sólido.

Pag. 5 de 14
ARQUITETURA DE COMPUTADORES

Nível 5 Nível das linguagens orientadas


Para solução de problemas

Tradução (compilador)

Nível 4 Nível da linguagem do montador

Tradução (compilador)

Nível 3 Nível do sistema operacional

Interpretação

Nível 2 Nível da arquitetura do conjunto


de instruções

Interpretação ou execução direta

Nível 1 Nível da microarquitetura

hardware
Nível 0 Nível da lógica digital

O nível 0 é o nível da lógica digital, composto pelas portas lógicas. Apesar de construídas a
partir de componentes analógicos, como os transistores, podem ser modeladas como dispositivos
digitais. Elas são combinadas para formar o principal componente do computador: o processador.
O nível 1 é o nível da microarquitetura, composto por um conjunto de registradores, que
formam uma memória local interna ao processador, e um circuito chamado de ULA (Unidade Lógica
Aritmética) que realiza operações aritméticas simples. Os registradores são conectados à ULA para
formar o caminho de dados. A operação básica do caminho de dados consiste na seleção de um, ou
de dois registradores, para que a ULA opere sobre eles, por exemplo, somando o conteúdo de
ambos e colocando o resultado em um registrador.
Em alguns tipos de máquina, a operação do caminho de dados é controlada por um programa
conhecido como microprograma. Em outros tipos de máquina, o caminho de dados é controlado
pelo hardware. Atualmente o caminho de dados é quase sempre controlado pelo hardware. Em
máquinas cujo caminho de dados é controlado por software, o microprograma é um interpretador
Pag. 6 de 14
ARQUITETURA DE COMPUTADORES

para as instruções do nível 2. Ele busca, decodifica e executa as instruções, uma a uma, usando o
caminho de dados para a realização dessa tarefa. Em máquinas cujo caminho de dados é
controlado pelo hardware, esses mesmos passos são executados sem a existência de um
programa para controlar a interpretação das instruções do nível 2.
O nível 2 é o nível da Arquitetura do Conjunto de Instruções (nível ISA – Instruction Set
Architecture). Ele tem um significado especial: é a interface entre o software e o hardware. As
instruções do nível ISA são aquelas para as quais o compilador deve gerar código.Todos os
fabricantes de processadores publicam um manual para cada um dos modelos que vendem.Esses
manuais descrevem o conjunto das instruções do processador, ou seja, como as instruções são
executadas.
O nível 3 é o nível do Sistema Operacional, geralmente um nível híbrido com instruções da sua
linguagem também pertencendo ao nível ISA (não há razão para que uma instrução não possa
pertencer a mais de um nível da estrutura). As instruções do nível 3 idênticas às do nível 2 são
executadas diretamente pelo microprograma ou pelo hardware. As instruções exclusivas do nível 3
são interpretadas pelo sistema operacional. Além dessas instruções, comuns aos níveis 3 e 2, esse
nível suporta um conjunto próprio de instruções que permitem uma organização diferente da
memória, a capacidade de rodar dois ou mais programas de forma simultânea, além de diversas
outras características.
O nível 4 é o nível da linguagem de montagem, uma forma simbólica de representação das
linguagens dos níveis mais baixos. Fornece um método para escrever programas para os níveis 1, 2
e 3 numa forma mais confortável. Os programas na linguagem de montagem são primeiro
traduzidos (compilados) para a linguagem dos níveis 1, 2 e 3 e então interpretados pela máquina
virtual apropriada ou pela própria máquina real. O programa que realiza essa tradução (compilação)
é chamado de montador.
Uma mudança importante no nível 4 é quanto à maneira de suportar os níveis mais altos. Os
níveis 2 e 3 são sempre interpretados. Os níveis 4, 5 e acima são, em geral, traduzidos
(compilados). Uma outra diferença entre os níveis 1, 2 e 3 e os níveis 4, 5 e acima é quanto a
natureza das linguagens. As linguagens dos níveis 1, 2 e 3 são numéricas, ou seja, os programas
são constituídos de uma longa série de números, muito interessantes para as máquinas mas
desconfortáveis para as pessoas. A partir do nível 4, as linguagens contêm palavras e abreviações
que fazem algum sentido para as pessoas.
O nível 5 é o nível das linguagens de “alto nível”, projetadas para serem usadas por
programadores de aplicações. Existem centenas dessas linguagens (algumas das mais conhecidas
são: BASIC, C, C++, Java, LISP, etc). Os programas escritos nessas linguagens são em geral
traduzidos para os níveis 3 ou 4 por tradutores conhecidos como compiladores. Em alguns casos,
essas linguagens são interpretadas. Por exemplo, os programas escritos em Java também podem
ser interpretados.

Pag. 7 de 14
ARQUITETURA DE COMPUTADORES

A questão fundamental discutida até aqui é o fato dos computadores serem projetados como
uma série de níveis, cada um deles construído em cima de seus precursores. Cada nível representa
uma abstração distinta, com diferentes objetos e operações. Se analisarmos os computadores desta
maneira, estaremos sempre aptos a ignorar, temporariamente, os detalhes irrelevantes reduzindo
uma questão complexa a algo mais fácil de ser entendido.
O conjunto de tipos de dados, operações e características de cada um dos níveis é chamado
de arquitetura do nível. A arquitetura trata dos aspectos visíveis aos usuários de um determinado
nível. São parte da arquitetura as características que um programador do nível deve enxergar como,
por exemplo, a disponibilidade de memória. Os detalhes da implementação, como o tipo de chip
usado para implementar a memória, não são parte da arquitetura.

3. EVOLUÇÃO DAS MÁQUINAS DE VÁRIOS NÍVEIS

3.1. A Invenção da Microprogramação


Os primeiros computadores digitais construídos na década de 1940 tinham somente dois níveis:
o nível ISA, no qual toda a programação era feita, e o nível da lógica digital, onde esses programas
eram executados. Os circuitos do nível da lógica digital eram complicados, difíceis de entender e de
construir, além de pouco confiáveis.
Em 1951, Maurice Wilkes, um pesquisador da Universidade de Cambridge, sugeriu a idéia de
se construir um computador em três níveis, a fim de simplificar o hardware. Essa máquina deveria
ter acoplado um interpretador (o microprograma), cuja função era executar programas escritos em
nível ISA por interpretação. Pelo fato do hardware ter que executar somente microprogramas, que
tinham um conjunto de instruções muito limitado, em vez de programas no nível ISA, que tinham
muita muito mais instruções, o computador construído nessa base precisava de menos circuitos
eletrônicos. Como os circuitos da época eram construídos com válvulas, a diminuição do número
desses componentes aumentava em muito a confiabilidade do hardware.
Algumas dessas máquinas de três níveis foram construídas ao longo dos anos 1950. Na
década de 1960, a quantidade de máquinas produzidas segundo essa filosofia aumentou bastante.
Em 1970, a idéia de ter um nível ISA interpretado por um microprograma, em vez de executado
diretamente por circuitos eletrônicos, tornou-se prática comum.

3.2. A Invenção do Sistema Operacional


Nos primórdios, a maioria dos computadores era operada pelo próprio programador. Próximo a
cada máquina havia uma lista de assinaturas. O programador que desejasse usar a máquina para
rodar um de seus programas precisava assinar a lista, bloqueando um dos horários disponíveis. Na
hora marcada, o programador devia dirigir-se à sala da máquina com o conjunto de cartões
perfurados de 80 colunas (um veículo primitivo para entrada de dados) em uma das mãos. Ao
Pag. 8 de 14
ARQUITETURA DE COMPUTADORES

chegar ao ambiente da máquina, ele solicitava gentilmente que o usuário anterior liberasse a
máquina e assumia o controle da mesma.
Se o objetivo fosse executar um programa em FORTRAN, era necessário cumprir os seguintes
passos:

1. Dirigir-se ao arquivo físico onde eram guardados os programas da biblioteca da máquina e


localizar o deck de cartões identificado como compilador FORTRAN, coloca-lo na leitora de
cartões e pressionar o botão de início de operação da leitora.
2. Colocar o programa FORTRAN a ser executado na leitora de cartões e apertar o botão de
continuação da operação. O programa era lido.
3. Quando o computador parava, era necessário colocar o programa FORTRAN mais uma vez
na leitora, pois a maioria dos compiladores da época era de dois passos, e cada passo
precisava ler o programa uma vez. (Alguns compiladores precisavam de apenas um passo,
mas a maioria precisava de dois ou mais.)
4. Finalmente, a compilação estava quase completa. Nesse momento, se o compilador
encontrasse algum erro no programa, o programador deveria corrigi-lo e repetir todo o
procedimento. Se não houvesse erro, o compilador perfurava um conjunto de cartões com o
programa traduzido para a linguagem de máquina.
5. O programador colocava o programa em linguagem de máquina na leitora de cartões, junto
com os cartões das sub-rotinas da biblioteca necessárias à sua execução, e comandava a
leitura desses cartões.
6. Começava então a execução do programa. Em geral o programa não funcionava bem,
parando inesperadamente a execução entes do seu término. Nesse caso o programador
devia examinar um conjunto de luzes do painel de controle, procurando identificar o erro.
Com sorte, o erro era identificado, corrigido e todo o processo recomeçava, desde a
compilação até nova execução. Se o erro não fosse identificado, o programador devia
comandar uma descarga do conteúdo da memória (core dump) e leva-la para estudo.

Esse procedimento, com pequenas modificações dependendo do caso, era o


procedimento normal adotado em todos os centros de processamento de dados por anos e
anos a fio. Ele forçava os programadores a aprender como operar a máquina e como proceder
em caso de problemas, que na época eram muito comuns. Valer observar que a máquina
ficava ociosa enquanto as pessoas carregavam cartões de um lado para outro, ou enquanto
tentavam descobrir o porquê do não funcionamento de seus programas.
Por volta de 1960, para reduzir o tempo gasto na execução de programas, automatizando os
trabalhos de operação da máquina, um programa, chamado sistema operacional, era mantido na
memória do computador durante todo o tempo em que ele estivesse sendo utilizado. O programador
devia preparar alguns cartões de controle com base nos quais seu programa era lido e executado
Pag. 9 de 14
ARQUITETURA DE COMPUTADORES

automaticamente pela máquina, sob controle do sistema operacional. A figura abaixo mostra um
conjunto de cartões contendo um programa em FORTRAN a ser executado, no computador IBM
709, sob a supervisão de um dos primeiros sistemas operacionais, o FMS (FORTRAN Monitor
System).

* JOB, 1234, JOHN


* XEQ
* FORTRAN

Programa
FORTRAN

* DATA

Cartões de
dados

* END

O cartão *JOB era lido pelo sistema operacional para atualizar a conta do usuário (o
asterisco era usado para identificação de cartões de controle, para impedir que esses cartões
fossem confundidos com cartões de dados e com cartões de código). Seguida, o sistema
operacional lia o cartão *FORTRAN, que era a instrução para carregar o compilador FORTRAN
para a memória, vindo da fita magnética. O compilador então lia e compilava o programa em
FORTRAN. Ao terminar o processo de compilação, o controle retornava ao sistema
operacional, que então lia o cartão *DATA. Este cartão continha a instrução para que o
programa traduzido fosse executado, usando como dados os valores dos cartões de dados que
seguiam o cartão *DATA.
Apesar de ter sido projetado para automatizar o trabalho do operador, daí o seu nome, o
sistema operacional foi também o primeiro passo para o desenvolvimento de uma nova
máquina, seguindo o conceito de máquina virtual.
Nos anos seguintes, os sistemas operacionais tornaram-se muito mais sofisticados. No
início, novas facilidades, novas características e novas funções eram incorporadas ao nível
Pag. 10 de 14
ARQUITETURA DE COMPUTADORES

ISA, até que o nível do sistema operacional assumisse as características de um novo nível.
Algumas das instruções desse novo nível eram iguais às do nível ISA, mas outras, em
particular as instruções para tratamento de entradas/saídas, eram completamente diferentes.
As novas instruções eram conhecidas como macros do sistema operacional ou como
chamadas ao supervisor. Atualmente, a expressão usada é chamada de sistema.
Os sistemas operacionais também se desenvolveram em outras direções. Os primeiros
liam decks de cartões e imprimiam os resultados em impressoras de linha. Essa organização
era conhecida como sistema batch. Em geral havia uma espera de algumas horas entre o
momento de submissão de um programa e o momento em que os resultados ficavam
disponíveis.

No início dos anos 1960, pesquisadores MIT, em conjunto com pesquisadores de outras
instituições, desenvolveram um sistema operacional que permitia a comunicação simultânea de
diversos programadores diretamente com o computador. Nesses sistemas havia terminais
remotos ligados ao computador central por meio de linhas telefônicas. O processador era então
compartilhado por vários usuários. Um programador podia digitar seu programa e obter os
resultados quase imediatamente, em seu escritório ou em qualquer lugar onde houvesse um
terminal instalado. Esses sistemas são chamados de sistemas de tempo compartilhado.
Nosso interesse nos sistemas operacionais será restrito as partes que interpretam as
instruções e as características presentes no nível 3 e ausentes do nível ISA, e não nos
aspectos de compartilhamento do tempo.

3.3 “Vida e Morte da Microprogramação


O conceito de microprograma tornou-se muito comum nos anos de 1970, os projetistas de
processadores observaram que poderiam acrescentar novas instruções ao conjunto de
instruções do processador simplesmente expandindo o microprograma. Em outras palavras,
ele poderiam adicionar “hardwares” (novas instruções de máquinas) por meio de programação.
Essa constatação levou a uma verdadeira explosão nos conjuntos de instruções de máquinas,
com os projetistas disputando na produção de conjuntos de instruções melhores e maiores. A
maioria dessas novas instruções não era essencial, na medida em que seu efeito poderia muito
bem ser alcançado por instruções já existentes.
Os microprogramas cresceram muito e, em conseqüência desse crescimento, tornaram-se
muito lentos. Com base nisso, alguns pesquisadores começaram a estudar os efeitos de
projetar máquinas sem usar microprogramação. Esses estudos revelaram que, eliminando os
microprogramas, reduzindo o conjunto de instruções e fazendo com que as instruções
remanescentes fossem executadas diretamente (ou seja, o caminho de dados fosse controlado
pelo hardware), as máquinas poderiam ter um ganho significativo no tempo de execução de

Pag. 11 de 14
ARQUITETURA DE COMPUTADORES

instruções. Em certos aspectos, o projeto dos computadores dava uma volta de 360°, voltando
à situação anterior à invenção da microprogramação.
O ponto central dessa discussão é mostrar que a fronteira entre o hardware e o software é
arbitrária, e está sempre mudando. Aquilo que hoje está implementado em software poderá em
breve estar implementado em hardware, e vice-versa.

4. EXEMPLOS DE PROCESSADORES

4.1. Intel Pentium II


Em 1968, foi fundada a Intel Corporation. Nesta época, as calculadoras eram muito
grandes (do tamanho das impressoras a laser atuais, pesando cerca de 20 kg), e construídas
com tecnologia eletromecânica. Em 1969, uma empresa japonesa, a Busicom, contratou a Intel
para produzir 12 chips customizados para o projeto de uma nova calculadora eletrônica. O
engenheiro da Intel encarregado do projeto observou que poderia projetar um processador de
propósito geral de 4 bits, num único chip, para executar as mesmas funções dos 12 chips. Em
1970 surgiu o Intel 4004, o primeiro processador em um único chip, com 2.300 transistores.
Nem a Intel, nem a Busicom, tinham a mais vaga idéia do potencial daquilo que haviam
criado. Quando percebeu que o 4004 poderia ser aproveitado em outros projetos, a Intel
ofereceu 60.000 dólares à Busicom pelos direitos do projeto, valor correspondente ao que a
Busicom havia pago à Intel para desenvolver o projeto. A oferta foi aceita, e a partir daí a Intel
começou a trabalhar numa versão de 8 bits, o 8008, lançado em 1974, que instantaneamente
tornou-se um sucesso de vendas.
Em 1978 apareceu o 8086, um processador de 16 bits, projetado para ser parecido com o
8080, mas eles não eram totalmente compatíveis. O 8088 sucedeu o 8086; tinha a mesma
arquitetura e rodava os mesmos programas mas tinha um barramento de 8 bits em vez de um
de 16 bits, o que o tornava mais lento, que o 8086, mas mais barato. Quando a IBM escolheu o
8088 para ser o processador do seu primeiro PC, este tornou-se o padrão da indústria da
computação.
Os processadores 8088 e 8086 não podiam endereçar mais do que 1 megabyte de
memória. Nos anos 1980, esta questão tornou-se um problema muito sério, e a Intel projetou o
80286, um processador maior e totalmente compatível com o 8086. O conjunto de instruções
básicas do 80286 era o mesmo que o de seus antecessores, porém a organização da memória
do 80286 era muito diferente, e considerada pior que a dos outros dois.
Em 1985 foi lançado o 80386, o primeiro processador de 32 bits. Em 1989 foi lançado o
80486, que tinha a unidade de ponto flutuante e a memória cachê de 8 K incorporadas ao chip,
e com suporte ao multiprocessamento, permitindo sistemas com diversos processadores.

Pag. 12 de 14
ARQUITETURA DE COMPUTADORES

Nessa época a Intel descobriu (perdendo o registro das suas marcas na Justiça) que
números, como 80486, não podem se tornar marcas registradas. Assim a geração seguinte
ganhou um nome: Pentium (da palavra grega que quer dizer cinco). Ao contrário do 80486, que
tinha um único pipeline interno, o Pentium tinha dois, o que o tornou duas vezes mais rápido.
O nome Pentium ficou tão conhecido, que o marketing da Intel decidiu mantê-lo, dando ao
novo processador o nome de Pentium Pro. Em vez de ter dois, ou mais pipelines, o Pentium
Pro tinha uma organização interna que permitia executar até cinco instruções ao mesmo
tempo.
O próximo processador da Intel foi o Pentium II, que combinou os pontos fortes do Pentium
Pro com o tratamento adequado das aplicações multimídia. Em 1998, a Intel lançou a linha
Celeron, um Pentium II de preço e performance mais baixos, e uma versão especial do
Pentium II para o mercado high-end, o Xeon.
Todos os processadores da Intel são compatíveis com as gerações anteriores. Assim, um
Pentium II pode rodar um programa desenvolvido para o 8086 sem necessidade de qualquer
modificação. A compatibilidade tem sido uma premissa nos projetos da Intel, permitindo que os
usuários de seus produtos mantenham sua base instalada de software, sem precisar de
investimentos nessa área toda vez que fazem um upgrade nos produtos da linha da Intel.

4.2. SUN UltraSPARC II


Em 1981 um aluno de mestrado em Stanford, chamado Andy Bechtoisheim, decidiu
construir uma estação de trabalho que rodasse Unix, partindo de componentes disponíveis na
prateleira. O projeto de Bechtoisheim atraiu a atenção de Vinod Khosla, um indiano de 27 anos
que tinha o desejo de aposentar-se como milionário aos trinta anos. Khosla convenceu
Bechtoisheim a formarem uma empresa para construir e vender as estações de trabalho Sun e
convidou Scott McNealy, também aluno de mestrado dem Stanford, para coordenar a
fabricação das máquinas e Bill Joy, o arquiteto chefe do Unix de Berkeley, para escrever o
software. Os quatro fundaram a Sun Microsystems em 1982.
O primeiro produto da empresa foi a estação Sun 1, equipada com o processador Motorola
68020 e a ele seguiram-se as estações Sun 2 e Sun 3, que também usavam chips da Motorola.
Comparadas aos outros computadores pessoais da época, essas máquinas eram muito mais
poderosas (daí a designação de estações de trabalho) e foram projetadas desde o início para
trabalhar em rede. Cada estação de trabalho Sun vinha equipada com um placa Ethernet, e
com o software TCP/IP, para permitir conexão com a rede ARPANET, antecessora da Internet.
Por volta de 1987, a Sun decidiu projetar seu próprio processador, baseado num projeto de
arquitetura chamado RISC II, desenvolvido na Universidade da Califórnia, em Berkeley. Esse
processador, chamado SPARC (Scalable Processor Architecture), foi a base da estação Sun 4
e, em pouco tempo, todos os produtos Sun passaram a usar os processadores SPARC. A Sun
decidiu não fabricar o chip SPARC, mas licenciou o projeto para diversos fabricantes de chips.
Pag. 13 de 14
ARQUITETURA DE COMPUTADORES

Como resultado dessa estratégia, entraram no mercado tipos diferentes de chips com a
arquitetura SPARC, produzidos com base em diversas tecnologias e com velocidades de clock
variadas. Apesar de diferirem, todos apresentavam compatibilidade binária e rodavam os
mesmos programas sem qualquer modificação.
O primeiro processador SPARC começou com 32 bits; a Intel começou com processadores
de 8 e de 16 bits (8088, 8086, 80286) e tornou-se uma arquitetura de 32 bits a partir do 80386.
Este primeiro processador tinha um clock de 36 MHz, três formatos principais de instruções, 55
instruções e uma unidade de ponto flutuante com 14 instruções.
Em 1995 foi lançada a versão 9 da arquitetura SPARC, uma arquitetura de 64 buts. A
primeira estação de trabalho Sun a implementar a arquitetura V9 foi a UltraSPARC I. apesar de
ser uma máquina de 64 bits, ela era compatível no nível binário com as máquinas SPARC de
32 bits.
A UltraSPARC foi projetada para quebrar um paradigma. Enquanto as outras máquinas de
igual porte eram projetadas para manipulação de dados alfanuméricos e para rodar programas
como processadores de texto e planilhas eletrônicas, a UltraSPARC foi projetada para tratar
imagens, áudio, vídeo e aplicações multimídia em geral, e possuía um conjunto de instruções,
conhecidas como VIS (Visual Instruction Set), para apoiar o processamento de aplicações
multimídia, a exemplo das instruções MMX da Intel.
Os sucessores do UltraSPARC I foram o UltraSPARC II e o UltraSPARC III. Esses modelos
diferem primeiramente na velocidade do clock, mas algumas novas características também
foram incorporadas a cada um deles.

5. BIBLIOGRAFIA

STALLINGS, William, Arquitetura e Organização de Computadores, São Paulo: Editora


Prentice Hall do Brasil, 2002

MONTEIRO, Mario, Introdução à Organização de Computadores, Rio de Janeiro: LTC


Livros Técnicos e Científicos Editora, 2002

TANENBAUM, Andrew S., Organização Estruturada de Computadores, Rio de Janeiro:


Editora Prentice Hall do Brasil, 2001

Pag. 14 de 14

Anda mungkin juga menyukai