Escolar Documentos
Profissional Documentos
Cultura Documentos
Colégio Estadual de Pato Branco
Ensino Fundamental, Médio e
Profissionalizante
CURSO TÉCNICO EM INFORMÁTICA
ARQUITETURA DE COMPUTADORES
Prof. Esp. Marcelo G. Kühl
“O temor ao Senhor é o princípio da Sabedoria...!” Pv 9,10
ÍNDICE
1. HISTÓRICO DOS COMPUTADORES ............................................................. 4
1.1 A E VOLUÇÃO DO C OMPUTADO R .......................................................................................................................4
1.1.1 O Início da Era da Computação ................................................................................................................4
1.1.2 Computadores de Primeira Geração (1937 a 1951) ...................................................................................6
1.1.3 Computadores de Segunda Geração (1952 a 1960)....................................................................................7
1.1.4 Computadores de Terceira Geração (1961 a 1972) ....................................................................................8
2. DEFINIÇÕES BÁSICAS................................................................................... 12
3. UNIDADE CENTRAL DE PROCESSAMENTO ............................................ 13
DIFERENÇAS NA ARQUITETURA............................................................................................................................... 14
COPROCESSADOR ARITMÉTICO .............................................................................................................................. 15
3.1 COMO SÃO FABRICADOS OS PROCESSADORES ..................................................................................... 15
5. MEMÓRIAS....................................................................................................... 23
5.1 HIERARQUIA DE MEMÓRIA .................................................................................................................. 23
5.1.1 Registradores........................................................................................................................................... 23
5.1.2 Memória Cache ....................................................................................................................................... 23
51.3 Memórias Auxiliares ................................................................................................................................ 24
5.1.4 Memória Principal .................................................................................................................................. 24
5.1.4.1 Estrutura Da Memória Principal Células E Endereços ...................................................................... 24
Registrador....................................................................................................................................................... 25
5.2 CLASSIFICAÇÃO DAS MEMÓRIAS.......................................................................................................... 26
5.3 TECNOLOGIAS ........................................................................................................................................... 27
5.4 FUNCIONAMENTO ..................................................................................................................................... 27
2
11. LINGUAGEM DE MONTAGEM (ASSEMBLY).......................................... 42
11.1 CONJUNTO DE INSTRUÇÕES EM UM MICROCOMPUTADOR ............................................................... 42
ASSEMBLER......................................................................................................... 42
ASSEMBLER......................................................................................................... 42
12 MECANISMOS DE INTERRUPÇÃO ............................................................ 44
13 ARQUITETURAS PARALELAS .................................................................... 47
13.1 MULTIPROCESSADOR............................................................................................................................... 47
13.1.1 CARACTERÍSTICAS .............................................................................................................................. 47
13.1.2 ARQUITETURA....................................................................................................................................... 48
13.2 MULTICOMPUTADOR ............................................................................................................................... 48
3
1. HISTÓRICO DOS COMPUTADORES
1.1 A Evolução do Computador
A história do computador, ao contrário do que muitos podem imaginar, tem seu início há muito
tempo atrás, desde quando o homem descobriu que somente com os dedos, ou com pedras e
gravetos, não dava mais para fazer cálculos...
Aproximadamente 4.000 a.C. Um aparelho muito simples formado por uma placa de argila onde
se escreviam algarismos que auxiliavam nos cálculos. Esse aparelho era chamado de ÁBACO
palavra de origem Fenícia. Cerca de 200 a.C., o Ábaco era constituído por uma moldura retangular
de madeira com varetas paralelas e pedras deslizantes.
1642 Um francês de 18 anos de nome Blaise Pascal, inventou a primeira máquina de somar:
PASCALINA, a qual executava operações aritméticas quando se giravam os discos interligados,
sendo assim a precursora das calculadoras mecânicas.
1642 Pascalina
1671 Por volta deste ano na Alemanha, Gottfried Leibnitz inventou uma máquina muito parecida
com a Pascalina, que efetuava cálculos de multiplicação e divisão, e qual se tornou à antecessora
direta das calculadoras manuais.
1802 Na França, Joseph Marie Jacquard passou a utilizar Cartões Perfurados para controlar suas
máquinas de tear e automatizálas.
1822 Foi desenvolvido por um cientista inglês chamado Charles Babbage uma máquina
diferencial que permitia cálculos como funções trigonométricas e logaritmas, utilizando os cartões
de Jacquard.
1834 Charles Babbage desenvolveu uma máquina analítica capaz de executar as quatro operações
(somar, dividir, subtrair, multiplicar), armazenar dados em uma memória (de até 1.000 números de
50 dígitos) e imprimir resultados. Porém, sua máquina só pode ser concluída anos após a sua morte,
tornandose a base para a estrutura dos computadores atuais, fazendo com que Charles Babbage
fosse considerado como o "Pai do Computador".
1.1.1 O Início da Era da Computação
No ano de 1890, época do censo dos EUA, Hermann Hollerith percebeu que só conseguiria
terminar de apurar os dados do censo quando já seria o tempo de se efetuar novo censo (1900).
4
Então aperfeiçoou os cartões perfurados (aqueles utilizados por Jacquard) e inventou máquinas para
manipulálos, conseguindo com isso obter os resultados em tempo recorde, isto é, 3 anos depois.
Tabulador de Hollerith – 1890. Tabulava estatísticas com Cartões Perfurados
Em função dos resultados obtidos, Hollerith, em 1896, fundou uma companhia chamada TMC
Tabulation Machine Company, vindo esta a se associar, em 1914 com duas outras pequenas
empresas, formando a Computing Tabulation Recording Company vindo a se tornar, em 1924, a tão
conhecida IBM Internacional Business Machine.
Em 1930, os cientistas começaram a progredir nas invenções de máquinas complexas, sendo que o
Analisador Diferencial de Vannevar Bush anuncia a moderna era do computador. Em 1936, Allan
Turing publica um artigo sobre "Números Computáveis" e Claude Shannon demonstra numa tese a
conexão entre lógica simbólica e circuitos elétricos. Em 1937, George Stibitz constrói em sua mesa
de cozinha um "Somador Binário".
Com a chegada da Segunda Guerra Mundial houve a necessidade de se projetar máquinas capazes
de executar cálculos balísticos com rapidez e precisão para serem utilizadas na indústria bélica.
Com isso surgiu, em 1944, o primeiro computador eletromecânico (construído na Universidade de
Harvard, pela equipe do professor H. Aiken e com a ajuda financeira da IBM, que investiu US$
500.000,00 no projeto), possuía o nome de MARK I, era controlado por programa e usava o sistema
decimal. Tinha cerca de 15 metros de comprimento e 2,5 metros de altura, era envolvido por uma
caixa de vidro e de aço inoxidável brilhante e possuía as seguintes características:
760.000 peças
800 km de fios
420 interruptores para controle
Realizava uma soma em 0,3 s
Realizava uma multiplicação em 0,4 s
e uma divisão em cerca de 10 s
Mark I 1943 Com seus 420 interruptores que eram ajustados manualmente para que os valores fossem introduzidos
5
1.1.2 Computadores de Primeira Geração (1937 a 1951)
1943 Um projeto britânico, sob a liderança do matemático Alan Turing, colocou em operação uma
série de máquinas mais ambiciosas, o COLOSSUS, pois ao invés de relés eletromecânicos, cada
nova máquina usava 2.000 válvulas eletrônicas. O Colossus trabalhava com símbolos perfurados
numa argola de fita de papel, que era inserida na máquina de leitura fotoelétrica, comparando a
mensagem cifrada com os códigos conhecidos até encontrar uma coincidência. Ele processava
25.000 caracteres por segundo.
COLOSSUS – 1943 criado para quebrar códigos alemães ultrasecretos
1945 John von Neumann delineia os elementos críticos de um sistema de computador.
1946 Surgiu o ENIAC Eletronic Numerical Interpreter and Calculator, ou seja, "Computador e
Integrador Numérico Eletrônico", projetado para fins militares, pelo Departamento de Material de
Guerra do Exército dos EUA, na Universidade de Pensilvânia. Era o primeiro computador digital
eletrônico de grande escala e foi projetado por John W. Mauchly e J. Presper Eckert (que era um
gênio em engenharia, pois quando tinha apenas 8 anos construiu um rádio a cristal e colocouo num
lápis).
O ENIAC tinha as seguintes características:
Totalmente eletrônico
17.468 válvulas
500.000 conexões de solda
30 toneladas de peso
180 m² de área construída
5,5 m de altura
25 m de comprimento
2 vezes maior que MARK I
realizava uma soma em 0,0002 s
realizava uma multiplicação em 0,005 s com números de 10 dígitos
6
ENIAC – 1946 primeiro computador digital eletrônico de grande escala
O sucessor do ENIAC foi o EDVAC Eletronic Discrete Variable Computer ou "Computador
Eletrônico de Variáveis Discretas". O EDVAC foi planejado para acelerar o trabalho armazenando
tanto programas quanto dados em sua expansão de memória interna. Os dados, então, eram
armazenados eletronicamente num meio material composto de um tubo cheio de mercúrio,
conhecido como linha de retardo, onde os cristais dentro do tubo geravam pulsos eletrônicos que se
refletiam para frente e para trás, tão lentamente quanto podiam, de fato a reter a informação,
semelhante a um desfiladeiro que retém um eco, que Eckert descobriu por acaso ao trabalhar com
radar. Outra grande característica do EDVAC era poder codificar as informações em forma binária
em vez da forma decimal, reduzindo bastante o número de válvulas.
1947 John Bardeen, William Shockley e Walter Brattain inventam o TRANSISTOR.
1949 Surge o EDSAC Eletronic Delay Storage Automatic Calculator ou "Calculadora
Automática com Armazenamento por Retardo Eletrônico", o qual marcou o último grande passo na
série de avanços decisivos inspirados pela guerra: Começou a "Era do Computador".
1951 Surge o primeiro computador comercial o LEO
1.1.3 Computadores de Segunda Geração (1952 a 1960)
1952 A Bell Laboratories inventou o Transistor que passou a ser um componente básico na
construção de computadores e apresentava as seguintes vantagens:
7
aquecimento mínimo
pequeno consumo de energia
mais confiável e veloz do que as válvulas
Transistor
No mesmo ano, John Mauchly e Presper Eckert abriram sua própria firma na Filadéfia e criaram o
UNIVAC Universal Automatic Computer, ou seja, "Computador Automático Universal", o qual
era destinado ao uso comercial. Era uma máquina eletrônica de programa armazenado que recebia
instruções de uma fita magnética de alta velocidade ao invés dos cartões perfurados. O UNIVAC
foi utilizado para prever os resultados de uma eleição presidencial.
Também em 1952, Grace Hopper transformouse em uma pioneira no processamento de dados, pois
criou o primeiro compilador e ajudou a desenvolver duas linguagens de programação que tornaram
os computadores mais atrativos para comércio.
Em 1953, Jay Forrester, do MIT, construiu uma memória magnética menor e bem mais rápida, a
qual substituía as que usavam válvulas eletrônicas. Já em 1954, a IBM concluiu o primeiro
computador produzido em série, o 650, que era de tamanho médio e enquanto isso, Gordon Teal, da
Texas Instruments, descobre um meio de fabricar transistores de cristais isolados de silício a um
custo baixo.
1955 Concluise o primeiro computador transistorizado, feito pela Bell Laboratories: o TRADIC,
o qual possuía 800 transistores, sendo cada um em seu próprio recipiente.
1.1.4 Computadores de Terceira Geração (1961 a 1972)
De 1958 a 1959, Robert Noyce, Jean Hoerni, Jack Kilby e Kurt Lehovec participam do
desenvolvimento do CI Circuito Integrado. Em 1960, a IBM lança o IBM/360, cuja série marcou
uma nova tendência na construção de computadores com o uso de CI, ou pastilhas, que ficaram
conhecidas como Chips. Esses chips incorporavam, numa única peça de dimensões reduzidas,
várias dezenas de transistores já interligados, formando circuitos eletrônicos complexos.
1961 Steven Hofstein descobriu o transistor de efeito de campo, usado nos circuitos integrados
MOS.
1965 A Digital Equipment introduz o PDP8, o primeiro minicomputador comercial e com preço
competitivo.
8
Os primeiros computadores com circuito integrado foram criados pela Burroughs, em 1968, e
tinham o nome de B2500 e B3500.
1968 primeiro computador com circuito integrado
1971 Ted Hoff, planeja o microprocessador Intel 4004, o qual era um único chip com todas as
partes básicas de um processador central. Esse processador era a CPU de um computador de 4 bits.
Já em1974, Ed Roberts, do MITS (Micro Instrumentation and Telemetry Systems) em Albuquerque
Novo México, constrói um microcomputador chamado ALTAIR 8800 (o nome "Altair" se deve a
uma estrela, pois consideravam o lançamento da máquina um "evento estelar"), cuja máquina foi
construída com base no processador da Intel o 8080, que já era um descendente do processador Intel
8008. O ALTAIR tornouse o maior sucesso, marcando o início de uma indústria multibilionária,
pois Roberts esperava vender uns oitocentos ALTAIR por ano e acabou tendo dificuldades para
satisfazer 4.000 pedidos.
1975 Os estudantes William (Bill) Gates e Paul Allen criam o primeiro software para
microcomputador, o qual era uma adaptação do BASIC (Beginners AllPurpose Symbolic
Instruction Code, ou "Código de Instruções Simbólicas para todos os Propósitos dos Principiantes")
para o ALTAIR. Anos mais tarde, Gates e Allen fundaram a Microsoft, uma das mais bem
sucedidas companhias de software para microcomputadores.
1977 Surge no mercado de produção em série, três microcomputadores: o Apple II, o TRS80 da
Radio Shack e o PET da Commodore. Em 1979, é lançado pela Software Arts o "VisiCalc", o qual
foi o primeiro programa comercial para microcomputadores.
1.1.5 Computadores de Quarta Geração (1972 a 1984)
Na década de 80, foi criado o IC LSI Integratede Circuit Large Scale Integration, ou seja,
"Circuito Integrado em Larga Escala de Integração", onde foram desenvolvidas técnicas para se
aumentar cada vez mais o número de componentes no mesmo circuito integrado. Alguns tipos de IC
LSI incorporavam até 300.000 componentes em uma única pastilha.
um dos chips de 16 bits mais poderosos e versáteis primeiro microprocessador de 32 bits
executa multiplicação com uma única operação em seu projeto durou 18 meses
vez de realizála pela repetição de adições 450.000 componentes
70.000 componentes multiplica 2 números de 32 bits em 1,8
9
multiplica 2 números de 16 bits em 3,3 milionésimos de segundo
milionésimos de segundo
1981 A IBM resolve entrar no mercado de microcomputadores com o IBMPC.
IBMPC 1981
MMX Micro Doméstico 1984
1.1.6 Computadores de Quinta Geração (1984 a 1990)
Os computadores de Quinta Geração têm como característica o uso de IC VLSI Integrated Circuit
Very Large Scale Integration, ou seja, "Circuitos Integrados em uma Escala Muito Maior de
Integração".
Os "chips" vêm diminuindo tanto de tamanho, fazendo com que seja possível a criação de
computadores cada vez menores, como é o caso da microminiaturização do microprocessador F
100, que mede somente 0,6 cm quadrados e é pequeno o suficiente para passar pelo buraco de uma
agulha!
10
Microprocessador F100
11
2. DEFINIÇÕES BÁSICAS
Softwar e: São instruções ou dados de computadores. (programas). Qualquer coisa que pode ser
armazenada eletronicamente é um software.
Software é dividido em duas categorias:
• Softwar es de sistema: Inclui o sistema operacional e todos os utilitários que
capacitam o funcionamento do computador.
• Softwar es aplicativos: inclui programas que fazem o verdadeiro serviço para o
usuário. Ex.: Planilhas
Byte: um grupo ordenado de oito bits, tratados de forma individual, como unidade de
armazenamento e transferência.
Também usamos os termos Kbit, Megabit e Gigabit, para representar conjuntos de 1024 bits.
Como um byte corresponde a 8 bits, um Megabyte corresponde a 8 Megabits e assim por
diante.
1 Bit = 1 ou 0.
1 Byte = Um conjunto de 8 bits.
1 Kbyte = 1024 bytes ou 8192 bits.
1 Megabyte = 1024 Kbytes, 1.048.576 bytes ou 8.388.608 bits.
1 Gigabyte = 1024 Megabytes, 1.048.576 Kbytes, 1.073.741.824 bytes ou 8.589.934.592
bits.
Instr ução: Comando que define integralmente uma operação a ser executada.
Programa: Conjunto de instruções ordenadas logicamente.
12
3. UNIDADE CENTRAL DE PROCESSAMENTO
Unidade Central de Processamento UCP (em inglês, Central Processing Unity CPU) é a
responsável pelo processamento e execução dos programas armazenados na Memória Principal. As
funções da UCP são: executar as instruções e controlar as operações no computador.
A UCP é composta de duas partes:
ULA Unidade Lógica e Aritmética tem por função a efetiva execução das instruções. Só
se comunica com a unidade de controle, serve para realizar os cálculos de tipo aritmético (soma,
subtração, multiplicação, divisão, radiciação, etc.) e tipo lógico (comparações).
UC Unidade de Controle tem por funções a busca, interpretação e controle de execução
das instruções, e o controle dos demais componentes do computador. Analisa cada instrução de um
programa, controla as informações na memória principal, ativa a seção aritmética e lógica, ativa os
canais de entrada ou saída, selecionando os dados a serem transferidos e o dispositivo que será
empregado na transferência.
13
Gerador de Clock:
É responsável pela alimentação do sincronismo do sistema. É o elemento gerador dos
pulsos, cuja duração é chamada de ciclo. O número de vezes que esse pulso é gerado por segundo
nos dá a medida da freqüência do clock.
Decodificador
Realiza a função de identificar a instrução que deve ser realizada, de acordo com o código
da operação que foi decodificado.
RI Registrador de Instruções
É responsável por armazenar a instrução a ser executada pela CPU, via barramento de dados
e RDM.
Contador de instrução (CI Program Counter)
Armazena o endereço da próxima instrução a ser executada. Tão logo este endereço seja lido
pela CPU, um novo endereço (o da instrução seguinte) já é buscado e armazenado no CI.
Registrador de endereço de memória (REM)
Responsável por armazenar o endereço de memória do dado executado na UCP, através do
barramento de endereços.
Registrador de dados da memória (RDM)
Responsável por armazenar o dado retirado da memória, a ser processado na UCP, através
do barramento de dados.
Diferenças na arquitetura
Diferenças na arquitetura interna, ou seja, no projeto do processador e na quantidade de
transistores que o formam, também determinam em quais operações um processador será mais
rápido. Basicamente, um processador desempenha dois tipos de operações diferentes: as operações
envolvendo números inteiros e operações de ponto flutuante (que envolvem números fracionários e
14
operações aritméticas mais complexas). As operações envolvendo números inteiros são feitas pelo
núcleo principal do processador, enquanto as envolvendo números fracionários são feitas pelo co
processador aritmético.
Programas de escritório e Internet, como o Word, Excel, Power Point, Internet Explorer,
Netscape e o próprio Windows, utilizam quase que exclusivamente o processamento de números
inteiros. Por outro lado, programas que manipulam gráficos, como o Auto CAD, Corel Draw!,
Photoshop, 3D Studio, e principalmente jogos que utilizam gráficos tridimensionais, como o Quake
utilizam predominantemente cálculos de ponto flutuante.
Alguns modelos de processadores saemse melhor em inteiros (como os processadores K6,
K62 e K63 da AMD e 6x86 da Cyrix), enquanto outros são melhores em cálculo de ponto
flutuante (como o Pentium II e o Celeron). Ao decidir em qual processador vai investir seu
dinheiro, a aplicação à qual o micro se destina deve ser levada em consideração.
Coprocessador aritmético
Todos os processadores da família x86, usada em micros PC, são basicamente processadores
de números inteiros. Muitos aplicativos, porém, precisam utilizar números fracionários, assim como
funções matemáticas complexas, como Seno, Coseno, Tangente, etc., para realizar suas tarefas. Este
é o caso dos programas de CAD, planilhas, jogos com gráficos tridimensionais e de processamento
de imagens em geral. É possível emular via software estas funções matemáticas complexas, através
da combinação de várias instruções simples, porém com uma baixa performance.
A função do coprocessador aritmético é justamente auxiliar o processador principal no
cálculo destas funções complexas. Como o coprocessador possui instruções específicas para
executar este tipo de cálculo, ele é em média de 30 a 50 vezes mais rápido do que o processador
principal executando o mesmo tipo de cálculo via emulação, sendo um componente essencial
atualmente.
Até o 386, o coprocessador era apenas um acessório que podia ser comprado à parte e
instalado no soquete apropriado da placa mãe, sendo que cada modelo de processador possuía um
modelo equivalente de coprocessador: O problema nesta estratégia é que como poucos usuários
equipavam seus micros com coprocessadores aritméticos, a produção destes chips era baixa, e
conseqüentemente os preços eram altíssimos, chegando ao ponto de em alguns casos o co
processador custar mais caro que o processador principal. Com o aumento do número de aplicativos
que necessitavam do coprocessador, sua incorporação ao processador principal a partir do 486 foi
um passo natural. Com isso resolveuse também o problema do custo de produção dos co
processadores, barateando o conjunto.
3.1 COMO SÃO FABRICADOS OS PROCESSADORES
Até mudarem o mundo como o conhecemos, os chips passaram por um longo processo
evolutivo. Tudo começou com as válvulas, que evoluíram para os transistores, considerados a maior
invenção do século.
15
pequenas quantidades é possível alterar as propriedades elétricas do silício. As primeiras
experiências usavam fósforo e boro, que transformavam o silício em condutor por cargas negativas
ou condutor por cargas positivas, dependendo de qual dos dois materiais fosse usado. Estas
substâncias adicionadas ao silício são chamadas de impurezas, e o silício “contaminado” por elas é
chamado de silício dopado.
O funcionamento de um transistor é bastante simples, quase elementar. É como naquele
velho ditado “as melhores invenções são as mais simples”. As válvulas eram muito mais complexas
que os transistores e mesmo assim foram rapidamente substituídas por eles.
Um transistor é composto basicamente de três filamentos, chamados de base, emissor e
coletor. O emissor é o pólo positivo, o coletor o pólo negativo, enquanto a base é quem controla o
estado do transistor, que como vimos, pode estar ligado ou desligado. A figura abaixo mostra como
estes três componentes são agrupados num transistor moderno:
Quando o transistor está desligado, não existe carga elétrica na base, por isso, não existe
corrente elétrica entre o emissor e o coletor. Quando é aplicada uma certa tensão na base, o circuito
é fechado e é estabelecida a corrente entre o emissor e o receptor.
Outro grande salto veio quando os fabricantes deramse conta que era possível construir
vários transistores sobre o mesmo waffer de silício. Isso permitiu diminuir de forma gritante o custo
e tamanho dos computadores. Havia surgido então o circuito integrado, vários transistores dentro do
mesmo encapsulamento. Não demorou muito para surgirem os primeiros microchips.
Cada transistor funciona como uma espécie de interruptor, que pode estar ligado ou
desligado, como uma torneira que pode estar aberta ou fechada, ou mesmo como uma válvula. A
diferença é que o transistor não tem partes móveis como uma torneira e é muito menor, mais barato,
mais durável e muito mais rápido que uma válvula.
A mudança de estado de um transistor é feita através de uma corrente elétrica. Esta mudança
de estado por sua vez pode comandar a mudança de estado de vários outros transistores ligados ao
primeiro, permitindo processar dados. Num transistor esta mudança de estado pode ser feita bilhões
de vezes por segundo, porém, a cada mudança de estado é gerada uma certa quantidade de calor e é
consumida uma certa quantidade de eletricidade. É por isso que quanto mais rápidos tornamse os
processadores, mais eles se aquecem e mais energia consomem.
Um 386, por exemplo, consumia pouco mais de 1 Watt de energia e podia funcionar sem
nenhum tipo de resfriamento. Um 486DX4 100 consumia cerca de 5 Watts e precisava de um
cooler simples, enquanto Athlon chega a consumir 80 Watts de energia e precisa de no mínimo um
bom cooler para funcionar bem. Em compensação o 386 operava a 30 ou 40 MHz enquanto o
Athlon opera a até 1.5 GHz.
Processador es
O componente básico para qualquer chip é o waffer de silício que é obtido através da fusão
do silício junto com alguns produtos químicos que permitirão sua dopagem posteriormente.
Inicialmente são produzidos cilindros, com de 20 a 30 centímetros de diâmetro, que posteriormente
são cortados em fatias bastante finas.
16
Waffer de silício
Estas “fatias” por sua vez são polidas, obtendo os waffers de silício. A qualidade do waffer
determinará o tipo de chip que poderá ser construído com base nele. Para construir um CI com meia
dúzia de transistores, pode ser usado um waffer de baixa qualidade, que pode ser comprado a preço
de banana de milhares de companhias diferentes. Entretanto, para produzir um processador
moderno, é preciso de um waffer de altíssima qualidade, que são extremamente caros, pois poucas
companhias tem tecnologia para produzilos.
Cada waffer é usado para produzir vários processadores, que no final da produção são
separados e encapsulados individualmente. Não seria possível mostrar todos os processos usados na
fabricação de um processador, mas para dar uma boa idéia de como eles são produzidos, podese
mostrar passo a passo a construção de um único transistor. O mesmo projeto será repetido alguns
milhões de vezes, formando um processador funcional. Tudo começa com o waffer de silício em
seu estado original:
A primeira etapa do processo é oxidar a parte superior do waffer, transformandoa em
dióxido de silício. Isto é obtido expondo o waffer a gases corrosivos e altas temperaturas. A fina
camada de dióxido de silício que se forma é que será usada como base para a construção do
transistor.
Em seguida é aplicada uma camada bastante fina de um material fotossensível sobre a
camada de dióxido de silício.
Usando uma máscara especial, é jogada luz ultravioleta apenas em algumas áreas da
superfície. Esta máscara tem um padrão diferente para cada área do processador, de acordo com o
desenho que se pretende obter. A técnica usada aqui é chamada de litografia óptica.
17
A camada fotossensível é originalmente sólida, mas ao ser atingida pela luz ultravioleta
transformase numa substância gelatinosa, que pode ser facilmente removida.
Depois de remover as partes moles da camada fotossensível, temos algumas áreas do
dióxido de silício expostas, e outras que continuam cobertas pelo que restou da camada:
O waffer é banhado com um produto especial que remove as partes do dióxido de silício que
não estão protegidas pela camada fotossensível. O restante continua intacto. Finalmente, é removida
a parte que restou da camada fotossensível. Note que como temos substâncias diferentes é possível
remover uma camada de cada vez, ora o dióxido de silício, ora a própria camada fotossensível. Com
isto é possível “desenhar” as estruturas necessárias para formar os transistores. Temos aqui pronta a
primeira camada. Cada transistor é formado para várias camadas, dependendo do projeto do
processador. Neste exemplo, temos um transistor simples, de apenas quatro camadas, mas os
processadores atuais utilizam um numero muito maior de camadas, mais de vinte em alguns casos,
dependendo da densidade que o fabricante pretende alcançar.
Começa então a construção da segunda camada do transistor. Inicialmente o waffer passa
novamente pelo processo de oxidação inicial, sendo coberto por uma nova camada (desta vez bem
mais fina) de dióxido de silício. Note que apesar da nova camada de dióxido, o desenho conseguido
anteriormente é mantido.
Em seguida é aplicada sobre a estrutura uma camada de cristal de silício. Sobre esta é
aplicada uma nova camada de material fotossensível.
Novamente, o waffer passa pelo processo de litografia, desta vez utilizando uma máscara
diferente.
18
Novamente, a parte da camada fotossensível que foi exposta à luz é removida, deixando
expostas partes das camadas de cristal de silício e dióxido de silício, que são removidas em seguida.
Chegamos a uma das principais etapas do processo de fabricação, que é a aplicação das
impurezas, que transformarão partes do waffer de silício num material condutor. Estas impurezas
também são chamadas de íons. Note que os íons aderem apenas à camada de silício que foi exposta
no processo anterior e não nas camadas de dióxido de silício ou na camada de cristal de silício.
É adicionada então uma terceira camada, composta de um tipo diferente de cristal de silício
e novamente é aplicada a camada fotossensível sobre tudo.
O waffer passa novamente pelo processo de litografia, usando mais uma vez uma máscara
diferente.
19
As partes, do material fotossensível, expostas à luz são removidas, expondo partes das
camadas inferiores, que são removidas em seguida.
Temos agora pronta a terceira camada do transistor. Veja que a estrutura do transistor já está
quase pronta, faltando apenas os três filamentos condutores.
Uma finíssima camada de metal é aplicada sobre a estrutura anterior. Nos processadores
atuais, que são produzidos através de uma técnica de produção de 0.13 mícron, esta camada
metálica tem o equivalente a apenas 6 átomos de espessura.
O processo de aplicação da camada fotossensível, de litografia e de remoção das camadas é
aplicado mais uma vez, com o objetivo de remover as partes indesejadas da camada de metal.
Finalmente temos o transistor pronto.
20
Cada processador é constituído por vários milhões de transistores. Um Pentium II possui
pouco mais de 9 milhões de transistores. Um Pentium III Coppermine já possui 22 milhões. Um
Athlon Thunderbird possui 35 milhões de transistores, enquanto um Pentium 4 possui incríveis 42
milhões. Graças ao nível de miniaturização que temos atualmente, estas quantidades fabulosas de
transistores ocupam uma área muito pequena. Um Athlon Thunderbird, por exemplo, mede apenas
112 milímetros quadrados. Com isto, um único waffer de silício é suficiente para produzir vários
processadores, que são separados no final do processo de fabricação.
Finalmente, os processadores são encapsulados numa estrutura de silício, que os protege e
facilita o manuseio e instalação. O formato do encapsulamento varia de processador para
processador.
21
4. BARRAMENTOS
O termo barramento (bus) referese aos percursos entres os componentes de um computador.
O Barramento Local (ou Local Bus) é o barramento mais importante do computador, pois
estabelece a comunicação entre o processador (CPU) e as memórias SRAM e DRAM.
Podemos dividilo em 3 grupos:
· barramento de dados;
· barramento de endereços;
· barramento de controle.
4.1 BARRAMENTO DE DADOS
n Transporte de Dados;
n São os mais conhecidos;
n Linhas paralelas de conexão elétrica;
n Número de linhas é igual ao número de bits transportados;
n Quanto maior o número de linhas maior a quantidade de dados (1linha = 1bit);
n Número de linhas afeta a velocidade de transferência de dados.
4.2 BARRAMENTO DE ENDEREÇOS
n O barramento de endereços transporta apenas endereços de memória;
n O seu número de linhas determina o número máximo de endereços de memória;
n Os primeiros PCs tinham um barramento de endereços de 20 bits e a CPU podia endereçar 1
MB de dados;
n Hoje, com barramentos de endereços de 32 bits, é possível endereçar 4 GB de memória.
4.3 BARRAMENTO DE CONTROLE
Responsável pela transferência de sinais como READ e WRITE, de início de operação
aritmética, de interrupção, de sincronização, de reset, entre outros.
22
5. MEMÓRIAS
Local capaz de armazenar:
Programas;
Dados iniciais, intermediários e finais.
Podese fazer uma analogia da memória com um armário para guardar documentos:
O armário seria a memória;
Cada gaveta possuiria uma etiqueta com número de identificação que seria seu
endereço.
Dentro da gaveta estaria guardado um objeto (dado com até 1Byte).
O computador não mantém toda a informação na CPU, ela armazena muitas coisas na
memória e seleciona o que precisa a cada momento.
5.1 HIERARQUIA DE MEMÓRIA
5.1.1 Registradores
Registradores são dispositivos de armazenamento temporário, localizados na CPU,
extremamente rápidos, com capacidade para apenas um dado (uma palavra).
Está localizado no chip.
Função: armazenar temporariamente dados intermediários durante um processamento. Por
exemplo, quando um dado resultado de operação precisa ser armazenado até que o resultado de uma
busca da memória esteja disponível para com ele realizar uma nova operação.
Custo muito elevado.
Registradores são VOLÁTEIS, isto é, dependem de estar energizados para manter
armazenado seu conteúdo.
5.1.2 Memór ia Cache
Memória de acesso rápido, porém mais lento do que o registrador.
Tempo de acesso de aproximadamente 5 ns. A ar quitetura da memór ia cache é
difer ente da Memória Principal.
Custo maior do que a Memória Principal e menor do que o registrador.
Função: Acesso rápido à memória, mas com um custo mais baixo. Memória intermediária
entre o registrador e a Memória Principal.
Fica localizada ou no “chip” ou na placa mãe.
A memória cache opera em função de um princípio estatístico comprovado: em geral, os
programas tendem a referenciar várias vezes pequenos trechos de programas, como loops, sub
rotinas, funções. Desta forma, algoritmos (chamados algoritmos de cache) podem controlar qual
parte do código ficará copiado na cache, a cada momento. Com isso a CPU pode ter acesso a dados
mais rapidamente do que quando a informação se encontra na MP.
Esta transferência (Memória Principal <> Cache) é feita pelo hardware que independe do
software, que ignora se existe ou não memória cache.
Nem o programador nem o sistema operacional têm que se preocupar com a cache.
Wait States – tempo que a CPU fica esperando para se buscar um dado na memória.
Cache Hit – o processador busca um determinado trecho de código e o encontra na cache. O
índice da cache hit ou taxa de acerto do cache é em torno de 90%.
Cache Miss ou Cache Fault – quando o dado não estiver presente na cache será necessário
requisitar o mesmo à MP. Causa atraso no processamento.
Memórias cache também são VOLÁTEIS, isto é, dependem de estar energizadas para
manter gravado seu conteúdo.
23
Microprocessador Cache interno Cache externo*
80386 DX não possui 8, 16, 32, 64 ou 128 KB
80486 SLC/DLC 1 KB 128 ou 256KB
80486 DX/DX2/SX 8 KB 128 ou 256 KB
80486 DX4 8 ou 16 KB 128 ou 256 KB
Pentium 16 KB 256 ou 512 KB
80586 16 KB 128, 256 ou 512 KB
Pentium II 32 KB 128, 256 ou 512 KB
Célula
É a unidade de armazenamento do computador. A memória principal é organizada em
células.
Célula é a menor unidade da memória que pode ser endereçada e tem um tamanho fixo (para
cada máquina).
As memórias são compostas de um determinado número de células ou posições.
Cada célula é composta de um determinado número de bits.
Todas as células de um dado computador têm o mesmo tamanho.
Cada célula é identificada por um endereço único, pela qual é referenciada pelo sistema e
pelos programas.
As células são numeradas seqüencialmente de 0 a (N1), chamado o ender eço da célula.
(endereço de memória).
Unidade de transferência é a quantidade de bits que é transferida da memória em uma
única operação de leitura ou escrita.
24
Palavr a é a unidade de processamento da CPU. Uma palavra deve representar um dado ou
uma instrução, que poderia ser processada, armazenada ou transferida em uma única operação.
Em geral, o termo "célula" é usado para definir a unidade de armazenamento (o tamanho de
células de memória) e o termo "palavra" para definir a unidade de transferência e processamento.
Não confundir: célula não é sinônimo de palavra, embora em algumas máquinas a palavra
seja igual à célula.
A palavra de um computador pode ter 1 byte (p.ex, 8080), 2 bytes (p.ex. 80286), 4 bytes
(p.ex. 486, o Pentium, e muitos mainframes IBM) e mesmo 8 bytes (p.ex. o Alpha da DEC).
Células de memória muitas vezes tem o tamanho de 1 ou 2 bytes de 8 a 16 bits.
A estrutura da memória principal é um problema do projeto de hardware:
5.1.4.2 Tempo De Acesso
Tempo de acesso (ou tempo de acesso para leitura) é o tempo decorrido entre uma
requisição de leitura de uma posição de memória e o instante em que a informação requerida está
disponível para utilização pela CPU. Ou seja, o tempo que a memória consome para colocar o
conteúdo de uma célula no barramento de dados. O tempo de acesso de uma memória depende da
tecnologia da memória. As memórias DRAM (Dynamic RAM as mais comuns hoje) têm tempo
de acesso na faixa de 60 ns.
Tempo de ciclo (ou ciclo de memória) é conceituado como o tempo decorrido entre dois
ciclos sucessivos de acesso à memória. As memórias dinâmicas perdem seu conteúdo em alguns
instantes e dependem de ser periodicamente atualizadas (ciclo de "refresh"). No caso das SRAM
(Static RAM ou memórias estáticas), que não dependem de "refresh", o tempo de ciclo é igual ao
tempo de acesso. As memórias dinâmicas, no entanto, requerem ciclos periódicos de "refresh", o
que faz com que a memória fique indisponível para novas transferências, a intervalos regulares
necessários para os ciclos de "refresh". Assim, as memórias DRAM têm ciclo de memória maior
que o tempo de acesso.
O tempo de acesso de qualquer memória tipo RAM (Random Access Memory ou memória
de acesso aleatório) é independente do endereço a ser acessado (a posição de memória a ser escrita
ou lida), isso é, o tempo de acesso é o mesmo qualquer que seja o endereço acessado.
Tabela comparativa de memórias:
5.2 CLASSIFICAÇÃO DAS MEMÓRIAS
Quanto à leitura e escrita, as memórias podem ser classificadas como:
R/W Read and Write (memória de leitura e escrita), comumente (e impropriamente) chamada de
RAM (Random Access Memory ou memória de acesso aleatório), embora não seja a única RAM.
Esta memória permite operações de escrita e leitura pelo usuário e pelos programas. Seu
tempo de acesso é da ordem de 70ns e independe do endereço acessado. É construída com
tecnologia de semicondutores (bipolar, CCD), pode ser estática (SRAM) ou dinâmica (DRAM) e é
volátil. A MP é construída com memória R/W.
RAM Random Acess Memory ou Memória de Acesso Randômico ou Aleatório, memória volátil
ou de rascunho, pois seu conteúdo se perde quando cessa a energia, e sua maior parte serve para
armazenar informações do usuário.
ROM Read Only Memory ou memória apenas de leitura.
Esta memória permite apenas a leitura e uma vez gravada não pode mais ser alterada.
Também é de acesso aleatório (isto é, é também uma RAM), mas não é volátil. É utilizada
geralmente por fabricantes para gravar programas que não se deseja permitir que o usuário possa
alterar ou apagar acidentalmente (tal como por ex..a BIOS Basic Input Output System e
microprogramas de memórias de controle). Quando se liga uma máquina, é da ROM que vem os
programas que são carregados e processados no "boot" (na inicialização o hardware aponta
automaticamente para o primeiro endereço da ROM). Desta forma, parte do espaço de
endereçamento da MP é ocupado por ROM. A ROM é mais lenta que a R/W e é barata, porém o
processo produtivo depende de ser programada por máscara ("mask programmed") em fábrica e
devido ao alto custo da máscara somente se torna econômica em grandes quantidades.
PROM Programmable Read Only Memory ou memória apenas de leitura, programável.
Esta memória é uma ROM programável (em condições e com máquinas adequadas,
chamadas queimadores de PROM) e geralmente é comprada "virgem" (sem nada gravado), sendo
muito utilizada no processo de testar programas no lugar da ROM, ou sempre que se queira
produzir ROM em quantidades pequenas. Uma vez programada (em fábrica ou não), não pode mais
ser alterada.
EPROM Erasable Programmable Read Only Memory ou memória apenas de leitura, programável
(com queimadores de PROM) e apagável (com máquinas adequadas, à base de raios ultravioleta).
Esta memória é uma PROM apagável. Tem utilização semelhante à da PROM, para testar
programas no lugar da ROM, ou sempre que se queira produzir ROM em quantidades pequenas,
com a vantagem de poder ser apagada e reutilizada.
26
Esta memória é uma EPROM apagável por processo eletrônico, sob controle da CPU, com
equipamento e programas adequados. É mais cara e é geralmente utilizada em dispositivos aos
quais se deseja permitir a alteração, via modem, possibilitando a carga de novas versões de
programas à distância ou então para possibilitar a reprogramação dinâmica de funções específicas
de um determinado programa, geralmente relativas ao hardware (p.ex., a reconfiguração de teclado
ou de modem, programação de um terminal, etc).
5.3 TECNOLOGIAS
FPM (Fast Page Mode): um dos primeiros padrões de memória. Padrão utilizado por módulos
SIMM 30 e algumas SIMM 72, em processadores 80286, 80386 e 80486. Geralmente possui 70 ns
de acesso.
EDO (Extended Data Out): um padrão mais rápido do que o FPM, utilizado por alguns módulos
SIMM 72 e DIMM 168, em processadores Pentium. Geralmente possui 60 ns de acesso.
DRAM (Dynamic RAM): é a memória mais conhecida no computador. Muitas vezes, quando
dizemos que o nosso computador tem 16 ou 32 MB de memória ou de RAM, na verdade estamos
nos referindo à DRAM. A DRAM é uma memória relativamente rápida e que tem o objetivo de
armazenar o maior volume de dados na troca dinâmica CPUMemória.
SRAM (Static RAM): é uma memória bem mais rápida do que a DRAM. Na verdade, ela está
antes da DRAM, no caminho CPUMemória, com o objetivo de absorver rapidamente as
informações fornecidas pela CPU e transferilas para a DRAM. Isso faz com que a CPU fique
"livre" mais rapidamente. Tal memória localizase na placa mãe (cache externo). Os processadores
486, 586 e Pentium possuem uma pequena quantidade de memória cache internamente, dentro do
próprio chip. Isso aumenta mais ainda a velocidade de troca de informações. Abaixo vemos um
quadro que mostra a quantidade de memória SRAM que cada tipo de sistema possui:
5.4 F UNCIONAMENTO
A Memória Principal pode ser acessada através de duas operações:
ACESSO Tipo LER ou ESCREVER
a) Leitura: Ler Da Memória
Significa requisitar à Memória Principal o conteúdo de uma determinada célula (recuperar
uma informação). Esta operação de recuperação da informação armazenada na Memória Principal
consiste na transferência de um conjunto de bits (cópia) da Memória Principal para a CPU e é não
destr utiva, isto é, o conteúdo da célula não é alterado.
SENTIDO: da MP para a CPU
Passos executados pelo hardware:
a.1) a CPU armazena no REM o endereço onde a informação requerida está armazenada;
a.2) a CPU comanda uma leitura;
a.3) o conteúdo da posição identificada pelo endereço contido no REM é transferido para o
RDM e fica disponível para a CPU.
27
Significa escrever uma informação em uma célula da MP (armazenar uma informação). Esta
operação de armazenamento da informação na MP consiste na transferência de um conjunto de bits
da CPU para a MP e é destr utiva (isto significa que qualquer informação que estiver gravada
naquela célula será sobregravada).
SENTIDO: da CPU para a MP
Passos executados pelo hardware:
b.1) a CPU armazena no REM o endereço de memória da informação a ser gravada e no
RDM a própria informação;
b.2) a CPU comanda uma operação de escrita;
b.3) a informação armazenada no RDM é transferida para a posição de memória cujo
endereço está contido no REM.
28
6. Dispositivos de Entr ada e Saída
O usuário se comunica com o núcleo do computador (composto por UCP e memória
principal) através de dispositivos de entrada e saída (dispositivos de E/S ou I/O devices). Os tópicos
a seguir vão analisar como funcionam os dispositivos de entrada e saída e como se faz a
comunicação entre eles e o núcleo do computador.
Os dispositivos de entrada e saída tem como funções básicas:
· a comunicação do usuário com o computador
· a comunicação do computador com o meio ambiente (dispositivos externos a serem
monitorados ou controlados)
· armazenamento (gravação) de dados.
As características que regem a comunicação de cada um dos dispositivos de E/S (entrada e
saída) com o núcleo do computador (composto de UCP e memória principal) são muito diferentes
entre si. Cada dispositivo de E/S se comunica com o núcleo de forma diversa do outro. Entre outras
diferenças, os dispositivos de entrada e saída são muito mais lentos que o computador, característica
essa que impõe restrições à comunicação, de vez que o computador precisaria esperar muito tempo
pela resposta do dispositivo. Outra diferença fundamental diz respeito às características das ligações
dos sinais dos dispositivos.
Os primeiros computadores, especialmente os de pequeno porte, eram muito lentos e os
problemas de diferença de velocidade eram resolvidos sem dificuldade e não representavam
problema importante. Dessa forma, a ligação dos dispositivos de E/S era feita através de circuitos
simples (as interfaces) que apenas resolviam os aspectos de compatibilização de sinais elétricos
entre os dispositivos de E/S e a UCP. Os aspectos relativos a diferenças de velocidade
(especialmente tempo de acesso) eram resolvidos via software.
Entre esses componentes, trafegam informações relativas a dados, endereços e controle.
6.1 TIPOS DE DISPOSITIVOS
Os dispositivos de ENTRADA são: teclado, mouses, scanners, leitoras óticas, leitoras de
cartões magnéticos, câmeras de vídeo, microfones, sensores, transdutores, etc.
As funções desses dispositivos são coletar informações e introduzir as informações na máquina,
converter informações do homem para a máquina e viceversa, e recuperar informações dos
dispositivos de armazenamento.
Os dispositivos de SAÍDA são: impressoras, monitores de vídeo, plotters, atuadores, chaves,
etc. As funções desses dispositivos são exibir ou imprimir os resultados do processamento, ou ainda
controlar dispositivos externos.
A UCP não se comunica diretamente com cada dispositivo de E/S e sim com "interfaces", de
forma a compatibilizar as diferentes características. O processo de comunicação ("protocolo") é
feito através de transferência de informações de controle, endereços e dados propriamente ditos.
Inicialmente, a UCP interroga o dispositivo, enviando o endereço do dispositivo e um sinal dizendo
29
se quer mandar ou receber dados através da interface. O periférico, reconhecendo seu endereço,
responde quando está pronto para receber (ou enviar) os dados. A UCP então transfere (ou recebe)
os dados através da interface, e o dispositivo responde confirmando que recebeu (ou transferiu) os
dados (acknowledge ou ACK) ou que não recebeu os dados, neste caso solicitando retransmissão
(notacknowledge ou NAK).
A compatibilização de velocidades é feita geralmente por programa, usando memórias
temporárias na interface chamadas “buffers” que armazenam as informações conforme vão
chegando a UCP e as libera para o dispositivo à medida que este as pode receber.
30
7. Por tas Lógicas Básicas
7.1 Introdução
7.2 A Porta AND
Figura 1: Símbolo gráfico de uma porta lógica AND de 2 entradas ( A e B ).
Figura 2: Diagrama de pinos de um circuito integrado (CI) disponível comercialmente (TTL –
7408), contendo 4 po 1 rtas AND. Para a família de Cis TTL, a alimentação é + Vcc = 5V .
A B Y
0 0 0
0 1 0
1 0 0
1 1 1
Tabela 1: Tabela verdade de uma porta lógica AND de 2 entradas.
Observações:
(I) Em lógica digital o valor lógico 0 significa FALSO (F) e normalmente é
representado por um nível de tensão 0 V , isto é, um nível baixo de tensão – LOW (L).
(II) O valor lógico 1 significa VERDADEIRO (V) e normalmente é representado por um
nível de tensão + Vcc , isto é, um nível alto de tensão – HIGH (H).
1 Por exemplo, o sistema digital que controla as ações a serem executadas por motores e acionadores de um
conjunto de elevadores, o controlador de um processo industrial, o microprocessador de um computador, etc...
31
F F F
F V F
V F F
V V V
Tabela 2: Representação alternativa da tabela verdade de uma porta lógica AND de 2 entradas.
A B Y
0V 0V 0V
0V +Vcc 0V
+Vcc 0V 0V
+Vcc +Vcc +Vcc
Tabela 3: Representação alternativa da tabela verdade de uma porta lógica AND de 2 entradas
assumindo que o valor de tensão + Vcc represente VERDADEIRO (V) e que o valor de tensão 0 V
represente FALSO (F).
A B Y
L L L
L H L
H L L
H H H
Tabela 4: Representação alternativa da tabela verdade de uma porta lógica AND de 2 entradas.
Supondo que sejam aplicados dois trens de pulsos r etangular es de tensão nas
entr adas A e B de uma porta lógica, o gráfico no tempo do sinal obtido na saída Y denomina
se Diagrama
de Tempo:
Figura 3:
Exemplo do diagrama de tempo que seria observado na tela de um osciloscópio para uma porta
lógica AND de 2 entradas (TTL – 7408 – ver Figura 2). Note que os níveis de tensão ao longo do
tempo obedecem a Tabela 3.
Na prática, o valor es V e F da tabela ver dade de uma por ta lógica repr esentam a
ocor rência de eventos que devem r esultar combinados na saída Y de acor do com uma lei de
formação que atenda um deter minado problema a ser resolvido.
Por exemplo, a Tabela 3 poder ia repr esentar a situação em que queremos controlar o
motor que abr e e fecha a porta de um elevador (controlado pela saída Y de uma por ta AND)
em função de o elevador estar parado no andar em questão (sensor que aplica uma tensão +
32
Vcc à entrada A da porta AND quando esta situação ocor re) e em função de o usuár io do
elevador ter aper tado o botão de aber tura de por ta (sensor que aplica uma tensão + Vcc à
entr ada B da porta AND quando esta situação ocor r e).
7.3 A Porta OR
Figura 4: Símbolo gráfico de uma porta lógica OR de 2 entradas ( A e B ).
Figura 5: Diagrama de pinos de um circuito integrado (CI) disponível comercialmente (TTL –
7432) , contendo 4 portas OR.
A B Y
0 0 0
0 1 1
1 0 1
1 1 1
Tabela 5: Tabela verdade de uma porta lógica OR de 2 entradas.
Figura 6: Exemplo
do diagrama de
tempo que seria observado na tela de um osciloscópio para uma porta lógica OR de 2 entradas
(TTL – 7432 – ver Figura 5).
7.4 A Porta XOR
XOR significa OR exclusivo (“ou exclusivo”). A porta lógica XOR compara dois valores e
se eles forem diferentes a saída será “1”. A operação XOR é representada pelo símbolo Å e sua
fórmula pode ser resumida como Y = A Å B.
Figura 7: Símbolo gráfico de uma porta lógica XOR de 2 entradas ( A e B ).
A B Y
0 0 0
0 1 1
1 0 1
1 1 0
Tabela 6: Tabela verdade de uma porta lógica XOR de 2 entradas.
33
São válidas todas as conclusões resultantes das obser vações (I) e (II) para uma porta
AND no que diz r espeito à tabela verdade de uma por ta XOR.
7.5 A Porta NOT
Figura 8: Símbolo gráfico de uma porta lógica NOT.
A Y
0 1
1 0
Tabela 7: Tabela verdade de uma porta lógica NOT.
Figura 9: Diagrama de pinos de um circuito integrado (CI) disponível comercialmente (TTL –
7404) , contendo 6 portas NOT.
São válidas todas as conclusões resultantes das obser vações (I) e (II) para uma porta
AND no que diz r espeito à tabela verdade de uma por ta NOT.
Figura 10: Exemplo de diagramas de tempo que seriam observados na tela de um osciloscópio para
uma porta lógica NOT (TTL – 7404 – ver Figura 9).
7.6 A Porta NAND
Uma porta NAND é equivalente a uma porta AND seguida de uma porta NOT:
Figura 11: Símbolo gráfico de uma porta lógica NAND de 2 entradas ( A e B ).
A B Y
0 0 1
0 1 1
1 0 1
1 1 0
Tabela 8: Tabela verdade de uma porta lógica NAND de 2 entradas.
7.7 A Porta NOR
Uma porta NOR é equivalente a uma porta OR seguida de uma porta NOT:
Figura 12: Símbolo gráfico de uma porta lógica NOR de 2 entradas ( A e B ).
34
A B Y
0 0 1
0 1 0
1 0 0
1 1 0
Tabela 9: Tabela verdade de uma porta lógica NOR de 2 entradas.
7.8 A Porta XNOR
Uma por ta XNOR é equivalente a uma por ta XOR seguida de uma por ta NOT:
Figura 13: Símbolo gráfico de uma porta lógica XNOR de 2 entradas ( A e B).
A B Y
0 0 1
0 1 0
1 0 0
1 1 1
Tabela 10: Tabela verdade de uma porta lógica XNOR de 2 entradas.
Figura 14: Símbolo gráfico de uma porta lógica AND de (a) 2 entradas , (b) 3 entradas, (c) 4
entradas, (d) 12 entradas.
Figura 15: Símbolo gráfico de uma porta lógica OR de (a) 2 entradas , (b) 3 entradas, (c) 4 entradas,
(d) 12 entradas.
35
7.10 Portas Lógicas Disponíveis Comercialmente
Tabela 11: Portas lógicas da família TTL disponíveis comercialmente em forma de circuito
integrado (CI).
7.11 Interligação de Porta s Lógicas
Figura 16 Exemplo de combinação de uma porta lógica NOR de duas entradas com uma porta
NAND de duas entradas formando uma Função
Lógica de 3 variáveis (A, B e C ).
A B C Y
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Tabela 12: Tabela verdade da Função Lógica de 3 variáveis implementada pela combinação de
portas da Figura 16.
7.12 Equação Booleana de Funções Lógicas
Para facilitar o tratamento analítico das diversas funções lógicas possíveis de serem
implementadas através de portas lógicas utilizase a representação da função lógica através de
Equações Booleanas.
36
37
8. PIPELINE
Até o processador 386, os processadores da família x86 eram capazes de processar apenas
uma instrução de cada vez. Uma instrução simples podia ser executada em apenas um ciclo de
clock, enquanto instruções mais complexas demoravam vários ciclos de clock para serem
concluídas. Seria mais ou menos como montar um carro de maneira artesanal, peça por peça.
Para melhorar o desempenho do 486, a Intel resolveu usar o pipeline, uma técnica
inicialmente usada em processadores RISC, que consiste em dividir o processador em vários
estágios distintos. O 486, possui um pipeline de 5 níveis, ou seja, é dividido em 5 estágios.
Quando é carregada uma nova instrução, ela primeiramente passa pelo primeiro estágio, que
trabalha nela durante apenas um ciclo de clock, passandoa adiante para o segundo estágio. A
instrução continua então sendo processada sucessivamente pelo segundo, terceiro, quarto e quinto
estágios do processador. A vantagem desta técnica, é que o primeiro estágio não precisa ficar
esperando a instrução passar por todos os demais para carregar a próxima, e sim carregar uma nova
instrução assim que se livra da primeira, ou seja, depois do primeiro pulso de clock.
As instruções trafegam dentro do processador na ordem em que são processadas. Mesmo
que a instrução já tenha sido processada ao passar pelo primeiro ou segundo estágio, terá que
continuar seu caminho e passar por todos os demais. Se por acaso a instrução não tenha sido
completada mesmo após passar pelos 5, voltará para o primeiro e será novamente processada, até
que tenha sido concluída.
Desta maneira, conseguimos que o processador seja capaz de processar simultaneamente,
em um único ciclo de clock, várias instruções que normalmente demorariam vários ciclos para
serem processadas. Voltando ao exemplo do carro, seria como se trocássemos a produção artesanal
por uma linha de produção, onde cada departamento cuida de uma parte da montagem, permitindo
montar vários carros simultaneamente. O uso dos 5 estágios de pipeline no 486 não chegava a
multiplicar por cinco a performance do processador, na verdade a performance não chegava nem
mesmo a dobrar, mas o ganho é bem significativo.
Os processadores atuais utilizam um número muito maior de estágios de pipeline. O
Pentium II possui 10, o Athlon Thunderbird possui 12 e o Pentium 4 possui 20. No Pentium 4 por
exemplo, cada estágio processa uma pequena parte da instrução, que só são concluídas pelo último
estágio, a cada ciclo, cada um dos estágios passa a instrução para a frente e recebe uma nova. Cada
instrução demora 20 ciclos para ser processada, mas em compensação são processadas 20
instruções ao mesmo tempo, em fila. Mais estágios permitem que o processador seja capaz de
atingir frequências mais altas, já que cada estágio fará menos trabalho por ciclo, suportando mais
ciclos por segundo, mas, por outro lado, o uso de muitos estágios pode prejudicar o desempenho do
processador nas operações de tomada de decisão, já que cada instrução demorará mais ciclos para
ser concluída.
Existem situações, chamadas de Hazards, que impedem a próxima instrução dentro de uma fila
de instruções de ser executada no ciclo esperado. Os Hazards reduzem a velocidade obtida pelo
pipelining. Existem três classes de hazards:
· Hazards Estruturais: Têm como origem uma implementação de hardware que não comporta
a sobreposição simultânea de todas as combinações possíveis de instruções. Em termos de
nosso carro utilizado para apresentar o conceito de pipelining seria o equivalente a
implementar um pipeline onde só existisse uma tomada para a esteira e uma para o robô.
· Hazards de Dados: Ocorrem quando uma instrução para ser executada depende dos
resultados gerados por alguma instrução anterior que ainda não foi completada.
38
· Hazards de Controle: Ocorrem quando executamos um desvio ou alteração ou alguma outra
instrução que altera o PC.
Uma forma de solucionar os Hazards é inserindo no pipeline uma "bolha" que simplesmente
atrasa o processamento até que o recurso que esteja causando o hazard esteja disponível. Chamamos
este processo de stall.
Sempre que o pipeline faz um stall todas as instruções anteriores ao stall prosseguem
normalmente, enquanto que todas as instruções posteriores são atrasadas, de forma a eliminar a
causa do hazard.
9. ARQUITETURAS CISC X RISC
n CISC Complex Instruction Set Computer exemplo: PC, Macintosh; um conjunto de
instruções maior e mais complexo, implicando num processador mais complexo, com ciclo
de processamento mais lento; ou
n RISC Reduced Instruction Set Computer exemplo: Power PC, Alpha, Sparc; um conjunto
de instruções menor e mais simples, implicando num processador mais simples, com ciclo
de processamento rápido.
No começo da década de 80, a tendência era construir chips com conjuntos de instruções cada
vez mais complexos, os famosos processadores CISC. Alguns fabricantes porém, resolveram seguir
o caminho oposto, criando o padrão RISC (Reduced Instruction Set Computer, ou "computador
com um conjunto reduzido de instruções").
Ao contrário dos complexos CISC, os processadores RISC são capazes de executar apenas
algumas poucas instruções simples. Justamente por isso, os chips baseados nesta arquitetura são
mais simples e muito mais baratos. Outra vantagem dos processadores RISC, é que, por terem um
menor número de circuitos internos, podem trabalhar com clocks mais altos. Um exemplo são os
processadores Alpha, que em 97 já operavam a 600 MHz.
Tanto a Intel quanto a AMD, perceberam que usar alguns conceitos da arquitetura RISC em
seus processadores poderia ajudálas a criar processadores mais rápidos. Porém, ao mesmo tempo,
existia a necessidade de continuar criando processadores compatíveis com os antigos. Não
adiantaria muito lançar um Pentium II ou Athlon extremamente rápidos, se estes não fossem
compatíveis com os programas que utilizamos.
A idéia então passou a ser construir chips híbridos, que fossem capazes de executar as
instruções x86, sendo compatíveis com todos os programas, mas ao mesmo tempo comportandose
internamente como chips RISC, quebrando estas instruções complexas em instruções simples, que
podem ser processadas por seu núcleo RISC. Tanto o Pentium II e III, quanto o Athlon, Duron e
Celeron, utilizam este sistema.
Do lado dos chips supostamente RISC, como por exemplo o G4 usados nos Macs, temos esta
mesma tendência de construir chips cada vez mais complexos, abandonando a idéia dos chips RISC
simples e baratos em favor da complexidade típica dos processadores CISC. Atualmente podese
dizer que não existem mais chips CISC ou RISC, mas sim chips híbridos, que misturam
características das duas arquiteturas, a fim de obter o melhor desempenho possível.
RISC CISC
Instruções simples em apenas um ciclo. Instruções complexas de múltiplos ciclos.
Números limitados de instruções Qualquer instrução referencia a memória.
referenciam a memória.
Presença forte de pipeline Pouco ou nenhum pipeline.
Instruções executadas pelo hardware Instruções interpretadas por microprograma.
Poucas instruções e modos. Muitas Instruções e modos.
Complexidade no compilador. Complexidade no microprograma.
Vários conjuntos de registradores. Único conjunto de registradores.
39
10. CICLOS DE INSTRUÇÃO
n As instruções são executadas seqüencialmente (a não ser pela ocorrência de
um desvio), uma a uma.
n Ciclo de instrução indica a seqüência de execução, isto é, controla o fluxo de
execução das instruções.
10.1. Conjunto de instruções
O conjunto de instruções é um dos pontos centrais na
arquitetura de um processador. Vários aspectos na definição e
implementação da arquitetura são influenciados pelas
características do conjunto de instruções. Por exemplo, as
operações realizadas pela unidade lógica e aritmética, o número e
função dos registradores e a estrutura de interconexão dos
componentes da seção de processamento. Além disso, as
operações básicas que acontecem dentro da seção de
processamento dependem das instruções que devem ser
executadas. O conjunto de instruções afeta o projeto da seção de
controle. A sua estrutura e a sua complexidade são determinadas
diretamente pelas características do conjunto de instruções.
10.1.1 Conjunto de Instruções no Contexto de Software
A Figura a seguir situa o conjunto de instruções do
processador dentro dos diversos níveis de software existentes em um sistema de computação.
Programa em Linguagem
de Alto Nível Comandos de Alto Nível
Compilador
Programa em Linguagem
Assembly
Instruções da Arquitetura
Assembler
Linker/Loader
Programa Executável
Figur a . O conjunto de instruções dentro do contexto de software.
Em geral, os programas são desenvolvidos em uma linguagem de alto nível como
FORTRAN, Pascal ou C. O compilador traduz o programa de alto nível em uma seqüência de
instruções de pr ocessador. O resultado desta tradução é o programa em linguagem de montagem
40
ou linguagem de máquina (assembly languag e). A linguagem de montagem é uma forma de
representar textualmente as instruções oferecidas pela arquitetura. Cada arquitetura possui uma
linguagem de montagem particular. No programa em linguagem de montagem, as instruções são
representadas através de mnemônicos, que associam o nome da instrução à sua função, por
exemplo, ADD ou SUB , isto é soma e subtração, O programa em linguagem de montagem é
convertido para um programa em código objeto pelo montador (assembler). O montador traduz
diretamente uma instrução da forma textual para a forma de código binário. É sob a forma binária
que a instrução é carregada na memória e interpretada pelo processador.
Programas complexos são normalmente estruturados em módulos. Cada módulo é
compilado separadamente e submetido ao montador, gerando diversos módulos em código objeto.
Estes módulos são reunidos pelo ligador (linker), resultando finalmente no programa executável
que é carregado na memória.
O conjunto de instruções de uma arquitetura se distingue através de diversas características.
As principais características de um conjunto de instruções são: tipos de instruções e operandos,
número e localização dos operandos em instruções aritméticas e lógicas, modos de endereçamento
para acesso aos dados na memória, e o formato dos códigos de instrução.
41
11. LINGUAGEM DE MONTAGEM (ASSEMBLY)
Uma linguagem de montagem é uma linguagem em que cada comando produz exatamente
uma instrução de máquina. Em outras palavras, existem uma correspondência um para um entre
instruções de máquina e os comandos do programa em linguagem de montagem.
A razão de ser utilizar linguagem de montagem, ao invés de utilizar linguagem de máquina,
é que é muito mais fácil programar em linguagem de montagem. O uso de nomes e endereços
simbólicos em vez de binários e octais fazem uma diferença enorme. Para a maioria das pessoas é
mais fácil guardar as abreviaturas das operações de adição, subtração, multiplicação ... do que
lembrar do código correspondente em linguagem de máquina. Quando se constrói programas em
linguagem de montagem, utilizase um programa chamado montador que vai fazer a tradução para a
linguagem de máquina.
11.1 CONJUNTO DE INSTRUÇÕES EM UM MICROCOMPUTADOR
11.1.1 Instruções de movimentação de dados, flags da CPU são setados.
Assembler Funcionalidade
MOV AL,15 AL = 15 Copia 15 para AL
MOV BL,[15] BL = [15] Copia RAM[15] para BL
MOV [15],CL [15] = CL Copia CL para RAM[15]
MOV DL,[AL] DL = [AL] Copia RAM[AL] para DL
MOV [CL],AL [CL] = AL Copia AL para RAM[CL]
11.1.2 Instruções lógicas e aritmética
Flags da CPU são setados
Modo de endereçamento Direto
Assembler Funcionalidade
ADD AL,BL AL = AL + BL
SUB BL,CL BL = BL – CL
MUL CL,DL CL = CL * DL
DIV DL,AL DL = DL / AL
MOD AL,BL AL = AL mod BL
INC DL DL = DL + 1
DEC AL AL = AL – 1
AND AL,BL AL = AL AND BL
OR CL,BL CL = CL OR BL
XOR AL,BL AL = AL XOR BL
NOT BL BL = NOT BL
ROL AL Rotate bits left. LSB := MSB
ROR BL Rotate bits right. MSB := LSB
SHL CL Shift bits left. Discard MSB
SHR DL Shift bits right. Discard LSB.
11.1.3 Modo de ender eçamento imediato
Assembler Funcionalidade
ADD AL,12 AL = AL + 12
SUB BL,15 BL = BL – 15
MUL CL,03 CL = CL * 03
DIV DL,02 DL = DL / 02
42
MOD AL,10 AL = AL mod 10
AND AL,0F AL = AL AND 0F
OR CL,F0 CL = CL OR F0
XOR AL,AA AL = AL XOR AA
11.1.4 Instruções de Comparação
Flags da CPU são setados
Assembler Funcionalidade
CMP AL,BL Set 'Z' if AL = BL
Set 'S' if AL less than BL
CMP BL,13 Set 'Z' if BL = 13
Set 'S' if BL less than 13
CMP CL,[20] Set 'Z' if CL = [20]
Set 'S' if CL less than [20]
JA Pula se maior
JAE Pula se maior ou igual
JE Pula se igual
JNE Pula se diferente
JB Pula se menor
JBE Pula se menor ou igual
11.1.5 Instruções de Entrada e Saída
Flags da CPU não são setados
As portas de I/O são utilizadas para comunicação do processador com o mundo exterior.
Portas de entrada, servem para entrada de dados, já as portas de saída estão conectadas.
Assembler Funcionalidade
OUT (01,AL) Envia AL para porta 01
IN (00, AL) Armazena valor lido no registrador AL
OUT (02,AL) Envia AL para porta 02
11.1.2 Outras funções
CLO – fecha todas as janelas de dispositivos
HALT – pára o relógio do processador
NOP – não faz nada por um período de clock
ORG x – inicia a carga do programa na memória a partir do endereço x
END – encerra a execução do programa
DB – carrega dados diretamente na RAM
Assembler Funcionalidade
DB “Hello” Carrega a palavra Hello na memória
DB 22 Carrega o valor 22 na memória
43
12 MECANISMOS DE INTERRUPÇÃO
12.1 Eventos que podem causar alteração ao fluxo nor mal de execução de
pr ogr amas:
· pedidos de atenção de periféricos (externos ao CPU): Interr upção.
· invocação de serviços do SO: exceção;
· detecção de anomalias na execução de instruções (no CPU): exceção;
· detecção de anomalias no funcionamento do hardware: exceção ou interr upção.
12.2 Modos de operação do CPU
· modo usuário; e pelo menos um
· modo pr ivilegiado, ou supervisor, ou kernel, ou ...
o modo normalmente usado para execução de código do SO, incluindo as rotinas de
atendimento a interrupções/excepções
12.4. Inter r upção e Exceção
São eventos de hardware que, a exemplo dos desvios (jumps e branchs), mudam o fluxo
normal de execução das instruções. Uma exceção é um evento inesperado (não sequencial) que vem
de dentro do processador, p.ex. o overflow aritmético, instrução indefinida etc. Uma interrupção
também é um evento que causa uma mudança inesperada no fluxo de controle das instruções, mas
ao contrário das exceções, tem origem fora do processador, por exemplo, num periférico. As
interrupções são utilizadas pelos dispositivos de entr ada e saída para se comunicar com o
processador.
Muitas arquiteturas e muitos autores não distinguem interrupções e exceções. No Mips o
termo exceção referese a qualquer mudança inesperada no fluxo do programa sem distinguir se a
causa é interna ou externa. O termo interrupção referese aos eventos originados externamente. A
arquitetura Intel 80x86 usa o termo interrupção para indicar ambos os eventos de alteração
inesperada no fluxo do programa, ao passo que a arquitetura PowerPC usa exceção para indicar
qualquer evento inesperado, e interrupção para referirse a mudança no fluxo de controle. Aqui
vamos associar o termo interrupção aos eventos de hardware externos à UCP e o termo exceção aos
eventos de hardware internos a UCP.
As interrupções foram criadas inicialmente para tratar eventos inesperados, como overflow
aritmético, e para sinalizar requisições de serviços por parte dos dispositivos de E/S. Os mesmos
mecanismos básicos foram estendidos para tratar de exceções geradas internamente.
A exemplo dos processadores, a maioria das características dos sistemas de entrada e saída,
interrupção e exceção são extremamente dependentes da tecnologia.
A figura a seguir mostra um esquema de organização dos dispositivos E/S utilizando
interrupção.
44
As conexões entre os dispositivos de E/S, processador e a memória são realizadas por meio
dos barramentos. A comunicação entre os dispositivos e o processador é implementada a partir de
um protocolo e de interrupções.
Uma IRQ (Interrup Request) é a forma pela qual componentes de hardware requisitam
tempo computacional da CPU. Uma IRQ é a sinalização de um pedido de interrupção de hardware.
Os computadores modernos compatíveis com o IBM PC possuem 16 designações de IRQ
(015), cada uma delas representando uma peça física (ou virtual) de hardware. Por exemplo, a
IRQ0 é reservada para o temporizador do sistema, enquanto a IRQ1 é reservada para o teclado.
Quanto menor for o número de IRQ, mais crítica é sua função.
No passado existiam apenas 8 designações de IRQ (07). À medida que novos hardwares
emergiam, surgiu também a necessidade de novas IRQs. A solução foi criar mais 8 IRQs,
adicionadas pelo desvio da IRQ2 para a nova IRQ9.
A lista de IRQs é:
IRQ0= temporizador do sistema.
45
IRQ1= teclado.
IRQ2= reservada para ligação ao chip 8259B (IRQ9).
IRQ3= COM 2 E COM4.
IRQ4= COM1 E COM3.
IRQ5= LPT2 ou placa de som.
IRQ6= floppy disk.
IRQ7= LPT1.
IRQ8= Relógio de tempo real
IRQ9= ligada ao chip 8259A (IRQ2).
IRQ10= não definida.
IRQ11= não definida.
IRQ12= mouse PS/2.
IRQ13= COprocessador aritmético.
IRQ14= IDE primária.
IRQ15= IDE secundária.
46
13 ARQUITETURAS PARALELAS
As arquiteturas paralelas são designadas por dois ou mais processadores ou unidades de
processamento trabalhando em conjunto para executar uma única tarefa. Existem dois tipos de
arquiteturas paralelas: '''Multiprocessador''' e '''Multicomputador'''.
13.1 MULTIPROCESSADOR
Multiprocessadores ou Sistemas Fortemente Acoplados: São dois ou mais processadores,
executando instruções diferentes para concluir uma mesma tarefa. Os processadores compartilham
uma mesma memória. No entanto os processadores não são capazes de executar um programa
sozinhos, eles se tornam totalmente dependentes desde que cada processador depende das
respostas(resultados) dos outros processadores em paralelo para concluírem suas tarefas. É
obrigatoriamente usado um único sistema operacional.
Multiprocessamento é a capacidade de um sistema operacional executar simultaneamente dois ou
mais processos. Pressupõe a existência de dois ou mais processadores. Difere da multitarefa, pois
esta simula a simultaneidade, utilizandose de vários recursos, sendo o principal o
compartilhamento de tempo de uso do processador entre vários processos.
Arquitetura Padrão Multiprocessadores
13.1.1 CARACTERÍSTICAS
Um multiprocessador ou sistema multiprocessado é um sistema integrado de computação com
as seguintes características:
· Envolve dois ou mais processadores físicos (sejam processadores separados ou múltiplos
núcleos encapsulados no mesmo chip) ou lógicos (processador(es) com a tecnologia
HyperThreading da Intel) com o mesmo poder computacional e cada um capaz de executar
processos autonomamente. Isto implica que não há nenhuma unidade central de controle;
cada processador contém sua própria unidade de controle. Assim, efetivamente, a lógica de
controle é distribuída pelo sistema.
· Os processadores compartilham um único espaço de endereçamento de memória.
· O sistema de hardware é como um todo gerenciado por um único sistema operacional.
O sistema operacional com suporte a multiprocessamento deve ser capaz de:
· suportar multitarefa;
· manter múltiplas filas de processos, uma para cada processador.
47
13.1.2 ARQUITETURA
Sistemas multiprocessados podem ser basicamente de dois tipos: SMP e NUMA.
· Multiprocessamento simétrico (SMP): os processadores compartilham a mesma memória,
embora possam ter caches separadas. O sistema operacional deve estar preparado para
trabalhar com coerência de caches e, principalmente, evitar condições de corrida na
memória principal.
· Acesso não uniforme à memória (NUMA): a cada processador é associado um banco de
memória. Nesse caso, o sistema operacional trata cada banco separadamente, pois cada
banco tem um custo de acesso diferente, dependendo de qual o processador a que está
associado e onde está sendo executado o processo que tenta acessar a memória.
13.2 MULTICOMPUTADOR
Multicomputadores ou Sistemas Fracamente Acoplados: São dois ou mais computadores
ou unidades de processamento que trabalham paralelamente utilizando trocas de mensagens. Cada
unidade de processamento possui sua própria Unidade de Memória, com isso eles podem utilizar
um sistema operacional independente para cada um deles, e também são capazes de executar um
programa completo sozinhos, porém trabalham juntos, cada um executando uma parte de um
programa para no final agruparem as informações adquiridas e gerar o executável. As unidades de
processamento não possuem nenhum outro tipo de ligação entre si a não ser as trocas de mensagens
que são feitas como exemplo por cabos de rede.
Apesar dos sistemas multiprocessados terem um bom desempenho, eles possuem uma
limitação quando são implementados mais de 64 processadores ao mesmo tempo. Essa limitação se
refere ao acesso à memória compartilhada, e para resolver esse problema, os projetistas
abandonaram a idéia da memória compartilhada e começaram a desenvolver sistemas compostos de
vários computadores interconectados e sem memória comum. A esse tipo de organização de
computadores foi dado o nome de multicomputadores, que são vários computadores completos e
autônomos (estações de trabalho) que trabalham em conjunto e se comunicam através de uma rede
de passagem de mensagens. Quando se trata de um sistema de maior porte, não é viável que cada
processador esteja conectado com todos os outros. Por isso, uma mensagem que sai de um
determinado processador, até alcançar seu destino, poderá passar por processadores intermediários
que servem como roteadores.
48