ÍNDICE:
4. Exemplos de Processadores
5. Bibliografia
Pag. 1 de 14
ARQUITETURA DE COMPUTADORES
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.
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.
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.
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
Tradução (compilador)
Tradução (compilador)
Interpretação
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.
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:
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).
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.
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
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.
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
Pag. 14 de 14