DE COMPUTADORES
ANDREW S. TANENBAUM
Vrije Universiteit
Amsterdam, The Netherlands
Tradutores
Hlio Marques Sobrinho
Mestre em Cincia da Computao
DCC - UFMG
Analista de Sistemas
RMix Informtica
Luiz Fernando Costa
Mestre em Cincia da Computao
DCC - UFMG
Analista de Sistemas
DCC - UFMG
Revisora Tcnica
Flvia de Castro Mendes Marques
Bacharel em Cincia da Computao
DCC - UFMG
Analista de Sistemas
RM Sistemas
Terceira edio
EDITORA
** 9
- (
O Autor e a Editora se esforaram ao mximo na preparao deste livro. Esses
esforos incluram o desenvolvimento, a pesquisa e o teste das teorias e programas
para determinar sua eficincia. O Autor e a Editora no oferecem garantias de
nenhum tipo, expressa ou implcita, com relao a esses programas ou documentao
contida neste livro. O Autor e a Editora no sero responsveis por quaisquer danos
incidentais ou conseqentes, relacionados com o fornecimento, desempenho ou uso
desses programas, ou deles decorrentes.
Transiation copyright (c) 1990 by Prentice-Hall, Inc.
Structured Computer Organization
Copyright (c) 1990
AlI Rights Reserved.
Published by arrangement with the original
publisher, Prentice-Hall. Inc.
Direitos exclusivos para a lngua portuguesa
Copyright (c) 1992
Copyright da reimpresso (c) 2000 by
LTC Livros Tcnicos e Cientficos Editora S.A.
Travessa do Ouvidor, 11
Rio de Janeiro, Ri - CEP 20040-040
Tel.: 21-221-9621
Fax: 21-221-3202
Reservados todos os direitos. proibida a duplicao ou reproduo deste volume,
no todo ou em parte, sob quaisquer formas ou por quaisquer meios (eletrnico,
mecnico, gravao, fotocpia ou outros), sem permisso expressa da Editora.
Pa
/
ra Suzanne, Barbara, Marvin, Bram, Twister, e em memria de Sweetie iT
PREFCIO
A primeira e segunda edies deste livro foram baseadas na idia de que um
computador pode ser considerado como uma hierarquia de nveis, cada um
desempenhando alguma funo definida. Este conceito fundamental to vlido hoje
quanto na poca da primeira edio, di modo que ele foi conservado como base da
terceira edio. Assim como na segunda edio, osnveis de lgica digital,
microprogramao, mquina convencional, mquina do sistema operacional e linguagem
de montagem so discutidos em detalhe.
Embora a estrutura bsica tenha sido mantida, esta terceira edio contm diversas
mudanas, : pequenas quanto grandes, que a tornam atualizada na veloz mudana na
indstria de computao. Uma mudana geral a substituio do texto baseado em
microprocessadores de 8 bits de processamento em lote de mainfrarnes por um texto
novo baseado em computadores pessoais usados em estaes de trabalho. Os quatro
exemplos utilizados na segunda edio foram substitudos por dois exemplos atuais:
a famlia de computadores Intel 8088/80286/80386 e a famlia Motorola
68000/68020/68030 (com nfase no 80386 e no 68030).
Outro importante desenvolvimento nos ltimos anos o aparecimento da mquina RISC.
Este tpico tratado com profundidade, incluindo uma viso detalhada de duas das
mais populares luinaS RISC no mercado, a SPARC e a MIPS. As mquinas RISC so
tambm comparadas as CISC, para prover equilbrio e mostrar ao leitor os fortes e
fracos de cada uma.
Multiprocessadores e computadores paralelos se tornaram largamente utilizados desde
a segunda edio, e assim eles tambm so discutidos aqui. O tratamento cobre as
mquinas MIMD, uindo hipercubos, Transputers, sistemas baseados em barramentos e
redes de chaveamento tiestgio, assim como as mquinas SIMD, tais como a Mquina
Connection e os supercomputadores Cray. Mquinas de fluxo de dados so tambm
analisadas.
Segue-se uma passada pelas maiores mudanas em cada captulo desde a segunda
edio.
tradanaFig. 1.9.
A srie Intel de pastilhas constitui o corao de todos os computadores MS-DOS,
portanto,
,stante importante estud-los detalhadamente. Atravs deste livro utilizaremos
repetidamente
o exemplo esta famflia de CPUs, com nfase no 8088, 80286 e 80386, os modelos mais
impor-
es.
7 A Famlia Motorola
Logo aps a Intel ter lanado o 8080, a Motorola, um fabricante de semicondutores
rival, ou o 6800. O 6800 era uma mquina de 8 bits comparvel ao 8080. Foi bem
recebido e lamente utilizado como controlador embutido em equipamentos industriais
no incio dos anos Foi seguido pelo 6809, que era compatvel com o 6800, mas
possua detalhes extras que itavam a artimtica de 16 bits.
Ento, em 1979, a Motorola fez algo que poucas firmas tinham feito antes ou fizeram
desde o: ela lanou uma pastilha completamente nova que no era compatvel com o
6800 nem o 6809. A idia era que esta pastilha, o 68000, venceria a competio (com
o 8086) e ria os engenheiros que desejassem um projeto limpo, em vez de um
sobrecarregado pela patibilidade com mquinas obsoletas.
O 68000 foi, na verdade, uma mudana radical em relao ao passado. Embora busque s
da memria, 16 bits de cada vez (em outras palavras, o barramento de dados possui
16 de largura), todos os registradores que o programador v so de 32 bits de
largura, e a uma pode somar e subtrair (mas no multiplicar ou dividir) nmeros de
32 bits em apenas instruo. Assim, o 68000 um hbrido entre arquiteturas de 16 e
32 bits.
Como tal, constitui um bom teste de tornassol. Se voc estiver tentando descobrir
se algum ia pessoa de hardware ou de software, pergunte-lhe se o 68000 uma
mquina de 16 ou 2 bits. Um engenheiro de hardware dir 16, devido ao barrament de
dados de 16 bits.
20 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Um programador dir 32, pois os registradores possuem todos 32 bits de largura.
Tudo depende
da perspectiva da pessoa.
O 68000 foi escolhido pelos projetistas do Macintosh, Atari, Amiga e outros
computadores populares, devido sua ruptura limpa com o passado e seu comprimento
de palavra de 32 bits. De maneira geral, a pastilha fez muito sucesso, e deu incio
a uma famlia de pastilhas, do mesmo modo que a srie Intel. S que, ao contrrio
das pastilhas da Intel, os membros da famlia 680X0, como so freqentemente
chamados, so muito similares do ponto de vista do programador, com apenas umas
poucas novas instrues introduzidas em cada nova verso. So membros de uma
famlia no sentido de que, quando uma nova instruo acrescentada, todo o
software existente continua sendo executado.
A segunda pastilha da famlia foi o 68008, que era idntico ao 68000, exceto pelo
uso de
um barramento de dados de 8 bits para produtos simples. Ao contrrio da verso
Intel de 8
bits do 8086 (o 8088), o 68008 nunca foi amplamente utilizado.
No demorou muito at aparecerem interessados em implementar sistemas operacionais
sofisti cados como o UNIX no 68000. Muitos destes sistemas tm memria virtual,
tcnica esta que permite aos programas enderear mais memria do que o computador
realmente tem. A memria virtual (que mais tarde estudaremos detalhadamente)
funciona trocando automaticamente partes do programa da memria para o disco, na
medida do necessrio. O 68000 quase podia suportar memria virtual, mas no
completamente. Havia alguns detalhes que faltaram na pastilha.
A Motorola resolveu este problema lanando a pastilha 68010, que possua as
caractersticas necessrias. Logo depois, ela lanou outra pastilha, o 68012, que
era o mesmo que o 68010, exceto que possua mais pinos de endereamento, de forma
que poderia enderear 2 gigabytes de memria, ao invs de apenas 16 megabytes.
Estas duas pastilhas foram efetivamente eliminadas um ano mais tarde, quando a
Motorola lanou o 68020, uma verdadeira pastilha de 32 bits, com um barramento de
32 bits e instrues de multiplicao e diviso de 32 bits. O 68020 foi um grande
sucesso, e era o corao das principais estaes de trabalho cientfficas e de
engenharia, tais como aquelas fabricadas pela Sun Microsystems, Apollo e Hewlett-
Packard. O sucessor do 68020 foi o 68030, que continha no apenas um 68020
completo, mas tambm uma unidade completa de gerenciamento de memria na mesma
pastilha.
O 68040, como o 80486, contm uma CPU, um co-processador de ponto-flutuante, uma
unidade de gerenciamento de memria e cache na mesma pastilha. Sendo
aproximadamente iguais em complexidade, no surpreendente que os dois contenham
quase o mesmo nmero de transistores: 1,2 milho para o 68040 e 1,16 milho para o
80486. O 68040 executa o mesmo software que o 68030, de forma que nossa discusso
da arquitetura 68030 neste livro tambm vale para o 68040. O 68040 se compara mais
ou menos ao 80486 de muitas maneiras, tal como o 68030 se compara grosseiramente ao
80386 de muitas maneiras. Em dvida, estas pastilhas continuaro a competir durante
os prximos anos. Um sumrio da famlia de pastilhas Motorola mostrado na Fig.
1.10.
Largura do
Largura dos barramento Espao de
Nome Ano registradores de dados endereamento Comentrios
68000
1979
32
16
16M
Primeiro membro da famlia
68008
1982
32
8
4M
Pastilhas mais simples com barramento de 8 bits
68010
1983
32
16
16M
Suporta memria virtual
68012
1983
32
16
2G
Versodo68 endereamento grande
68020
1984
32
32
4G
CPU de 32 bits verdadeira
68030
1987
32
32
4G
Unidade de gerenciamento de memria na pastilha da CPU
68040
1989
32
32
4G
Verso mais rpida do 68030
Fig. 1.10 A famlia Motorola de CPUs.
INTRODUO 21
VISO GERAL DESTE LIVRO
Este livro trata de computadores multinvel (o que engloba quase todos os
computadores )dernos) e de como eles esto organizados. Examinaremos cinco nveis
com considervel detalhe a saber, o nvel de lgica digital, o nvel de
microprogramao, o nvel de mquina convencional, vel de sistema operacional e o
nvel de linguagem de montagem. Alguns dos aspectos bsicos erem examinados so:
1. O projeto geral do nvel (e por que ele foi projetado daquela maneira).
2. Os tipos de instrues disponveis.
3. Os tipos de dados utilizados.
4. Os mecanismos disponveis para alterar o fluxo de controle.
5. A organizao e endereamento da memria.
6. A relao entre o conjunto de instrues e a organizao da memria.
7. O mtodo pelo qual o nvel implementado.
estudo destes tpicos, e de outros similares, denomina-se organizao de
computadores ou
luitetura de computadores, como j mencionamos.
Ns estamos principalmente interessados nos conceitos, mais do que em detalhes ou
em
itemtica formal. Por isso, alguns dos exemplos dados sero bastante simplificados,
para enfatizar
idias principais, e no os detalhes.
Para prover alguma luz de como as idias neste livro podem ser, e so, aplicadas na
prtica, lizaremos as famflias Intel e Motorola como exemplos contnuos ao longo do
livro. Estas duas nflias foram escolhidas por diversas razes. Primeiro, ambas so
amplamente usadas e provavel nte o leitor tem acesso a pelo menos uma delas.
Segundo, cada uma delas possui sua prpria uitetura, o que prov uma base de
comparao e encoraja uma atitude de "quais so as ernativas?" Os livros que tratam
de uma nica mquina freqentemente deixam o leitor com ia sensao de "foi
revelado um verdadeiro projeto de mquina", o que um absurdo, em ta dos muitos
compromissos e decises arbitrrias que os projetistas so forados a assumir.
corajamos voc a estudar estes e todos os outros computadores com olho crtico e
tentar tender por que as coisas so do jeito que so, e tambm como elas poderiam
ter sido, em de simplesmente aceit-las como so dadas.
Deve ficar claro, desde o incio, que este no um livro sobre como programar as
pastilhas Intel ou da Motorola. Estas mquinas sero utilizadas com objetivos
ilustrativos onde apropriado, 5 no temos a pretenso de sermos completos. Os
leitores que desejarem um introduo completa um deles devem consultar as
publicaes dos fabricantes.
O captulo 2 uma introduo aos componentes bsicos de um computador -
processadores, mrias e equipamentos de entrada/sada. Pretende-se dar uma viso
geral da arquitetura do
:ema.
Os captulos 3, 4, 5, 6 e 7 tratam, cada um, de um nvel especfico dentre os
mostrados Fig. 1.2. Nosso tratamento de baixo para cima (bottom-up), pois as
mquinas tm sido dicionalmente projetadas desta maneira. O projeto do nvel k ,
em grande parte, determinado as propriedades do nvel k-1; assim difcil entender
qualquer nvel, a menos que j se tenha a boa compreenso do nvel inferior que
motivou este projeto. Tambm, pedagogicamente isato partir dos nveis inferiores
mais simples para os nveis superiores mais complexos, em do contrrio.
O captulo 3 trata do nvel de lgica digital, o verdadeiro hardware da mquina.
Discute-se ue so portas e como elas so combinadas em circuitos teis. Apresenta-
se tambm a lgebra )leana, uma ferramenta de anlise de circuitos digitais. So
explicados os barramentos de oputadores, descreve-se, em nvel de pastilha, o
funcionamento interno de um tpico clone
PC.
O captulo 4 apresenta os conceitos de microprogramao e arquitetura do nvel de
micropro mao, alm de sua relao com a mquina convencional que ela suporta. A
maior parte captulo consiste em um exemplo simples de mquina discutido em
detalhe. O captulo contm ibm discusses sobre o nvel de microprogramao de
algumas mquinas reais.
O captulo 5 discute o nvel de mquina convencional, aquele que a maioria dos
vendedores
22 ORGANIZAO ESTRUTURADA DE COMPUTADORES
de computadores chama de linguagem de mquina. Primeiramente, examinaremos este
nvel de
forma genrica e depois olharemos nossas mquinas-exemplo detalhadamente.
O captulo 6 cobre algumas das instrues, organizao de memria e mecanismos de
controle presentes no nvel de sistema operacional.
O captulo 7 introduz o nvel de linguagem de montagem. Como o nvel de linguagem
de montagem, ao contrrio dos nveis abaixo dele, geralmente implementado por
traduo, em vez de interpretao, a nfase aqui est mais no processo de traduo
do que nos detalhes de quaisquer linguagens de montagem especficas. Tpicos
relacionados como macros (que , por si s, um tipo particular de tcnica de
traduo) e linking (ligao, que realmente a ltima fase do processo de
traduo) so tambm vistos.
O captulo 8 apresenta diversos tpicos avanados. Em particular, as familias Intel
e Motorola so mquinas von Neumann bastante tradicionais. Uma fatia considervel
da pesquisa atual est direcionada para alternativas arquitetura von Neumann, e
este captulo foi includo para dar uma viso deste assunto e para encorajar o
leitor a investig-lo mais. Dois tpicos so tratados detalhadamente: mquinas RISC
e arquiteturas paralelas.
O captulo 9 contm uma lista de sugestes de leitura, dispostas por assunto, e uma
lista alfabtica da literatura relacionada. E o captulo mais importante do livro.
Utilize-o.
Os apndices contm introdues breves aritmtica de preciso finita, incluindo
nmeros
binrios e nmeros de ponto-flutuante.
PROBLEMAS
1. Explique cada um dos seguintes termos com suas prprias palavras:
a. Tradutor
b. Interpretador
e. Mquina virtual.
2. Qual a diferena entre intrepretao e traduo?
3. E concebvel que um compilador gere sada para o nvel 1, em vez de para o nvel
2? Discuta os prs e contras desta proposta.
4. Voc consegue imaginar algum computador multinvel em que o nvel de
dispositivos e o nvel de lgica digital no sejam os mais inferiores? Explique.
5.. Considere um computador com interpretadores idnticos nos nveis 1, 2 e 3. Um
interpretador gasta n instrues para busca, exame e execuo de uma instruo. Uma
instruo de nvel
1 leva k segundos de execuo. Quanto tempo uma instruo dos nveis 2, 3 e 4
levar?
6. Considere um computador multinvel em que todos os nveis diferem. Cada nvel
possui
instrues m vezes mais poderosas do que aquelas do nvel logo abaixo, ou seja, uma
instruo
do nvel r pode fazer o trabalho de m instrues do nvel r - 1. Se um programa de
nvel
1 requer k segundos de execuo, quanto tempo programas equivalentes levariam nos
nveis
2, 3 e 4, assumindo que n instrues de nvel r so necessrias para interpretar
uma nica
instruo r + 1?
7. Algumas instrues do nvel de sistema operacional so idntcas s instrues
de linguagem de mquina convencional. Estas instrues so executadas diretamente
pelo microprograma, em vez de pelo sistema operacional. Em vista de sua resposta ao
problema anterior, por que voc acha que este um exemplo disto!
8. Em que sentido hardware e software so equivalentes? E no-equivalentes?
9. Uma das conseqncias da idia de von Neumann de armazenar o programa na memria
que os programas podem ser modificados, tais como os dados. Poderia dar um
exemplo
onde esta facilidade poderia ser utilizada? (Sugesto: Pense em aritmtica de
matrizes.)
10. A relao de desempenho do 360 Modelo 75 50 vezes a do 360 Modelo 30.
Todavia, o tempo de ciclo apenas cinco vezes mais rpido. A que se deve esta
discrepncia?
11. Dois projetos bsicos de sistema esto mostrados nas Figs. 1.5 e 1.6. Descreva
como a entrada! sada poderia ocorrer em cada sistema. Qual dos dois sistemas
possui potencialmente melhor
desempenho global?
2
ORGANIZAO DE SISTEMAS DE
COMPUTAD ORES
Um computador digital consiste em um sistema interconectado de processadores,
memrias
lispositivos de entrada/sada. Este captulo uma introduo a esses trs
componentes e suas
erconexes, como base para um exame detalhado dos nveis especficos nos cinco
captulos
1uintes. Processadores, memrias e entrada/sada so conceitos-chave e estaro
presentes em
ia nvel, de modo que comearemos nosso estudo de arquitetura de computadores
analisando
1 de cada vez.
E PROCESSADORES
A organizao de um computador simples orientado a barramento mostrado na Fig.
2.1. unidade central de processamento (central processing unit - CPU) o "crebro"
do computador. a funo executar programas armazenados na memria principal,
buscando suas instrues, aminando-as, e ento executando uma aps a outra. A CPU
composta por vrias partes tintas. A unidade de controle responsvel pela busca
de instrues da memria principal ieterminao de seus tipos. A unidade lgica e
aritmtica faz operaes tais como adies booleano, necessrias execuo das
instrues. A CPU contm ainda uma memria pequena,
alta velocidade, usada para armazenar resultados temporrios e certas informaes
de controle.
Unidade Central de Processamento (CPU)
D de
ertrada e sada
2.1 A organizao de um computador simples com uma CPU e dois dispositivos de E/S.
24 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Esta memria formada por um determinado nmero de regisfradores, cada um com uma
dada funo. O registrador mais importante o contador de programa (program
counter - PC), que aponta para a prxma instruo a ser executada. O nome
"contador de programa" um tanto enganador, porque ele no tem nada a ver com a
contagem de alguma coisa, mas o termo universalmente usado. O registrador de
instruo (mstruction register - IR) tambm importante. Ele contm a instruo
que est sendo executada. A maioria dos computadores tem outros registra dores,
alguns deles disponveis aos programadores de nveis 2 e 3, para armazenamento de
resultados intermedirios.
2.1.1 Execuo de Instrues
A CPU executa a instruo em uma srie de pequenos passos:
1. Busca a prxima instruo da memria para o registrador de instruo.
2. Atualiza o contador de programa para que ele aponte para a instruo seguinte.
3. Determina o tipo da instruo.
4. Se a instruo usa dados da memria, determina onde eles esto.
5. Busca os dados, se houver algum, para registradores internos da CPU.
6. Executa a instruo.
7. Armazena os resultados em locais apropriados.
8. Volta ao passo 1 para iniciar a execuo da prxima instruo.
Esta seqncia de passos freqentemente referida como o ciclo "busca-decoditica-
executa".
Ela o centro da operao de todos os computadores.
Esta descrio de como uma CPU funciona parece muito com um programa escrito em
portugus. A Fig. 2.2 mostra este programa informal reescrito como um procedimento
Pascal. O fato de ser possvel escrever um programa que pode imitar a funo de uma
CPU mostra que um programa no precisa ser executado pelo hardware de uma CPU,
constitudo por um emaranhado de circuitos eletrnicos. Em vez disso, um programa
pode ser executado tendo-se um outro programa que busca, analisa e executa suas
instrues. Um programa (como o da Fig. 2.2) que busca, analisa e executa as
instrues de outro programa chamado de interpretador, como mencionado no
captulo 1.
Esta equivalncia entre processadores em hardware e interpretadores tem implicaes
impor tantes para a organizao de computadores. Aps ter sido especificada a
linguagem de mquina L para um novo computador, o grupo projetista pode decidir se
eles querem construir um proces sador para executar programas em L diretamente ou
se eles querem escrever um interpretador. Se escolherem escrever um interpretador,
tambm, precisam prover uma mquina para execut-lo. Como um interpretador quebra a
instruo de sua mquina-alvo em pequenos passos, a mquina na qual o interpretador
executado pode freqentemente ser muito mais simples que o processador para a
mquina-alvo. Devido a razes econmicas, entre outtas, os programas no nvel de
mquina convencional da maioria dos computadores modernos so executados por um
interpretador em execuo em uma mquina de nvel 1 completamente diferente e muito
mais primitiva, que chama mos nvel de microprogramao.
A coleo de todas as instrues disponveis ao programador em um nvel chamada
conjunto
de instrues daquele nvel. O nmero de instrues de um conjunto de instrues
varia de
mquina para mquina e de nvel para nvel. Para o nvel de mquina convencional,
por exemplo,
o tamanho do conjunto de instrues est tipicamente na faixa de 20 a 300. Um
conjunto de
instrues numeroso no necessariamente melhor que um pequeno. De fato, o oposto
tende
a ser verdade. Um conjunto de instrues numeroso muitas vezes significa que as
instrues
ORGANIZAO DE SISTEMAS DE COMPUTADORES 25
) so muito gerais. Os compiladores para linguagens de alto nvel, como Ada, Modula
2 e ;cal, geralmente atuam melhor em mquinas com conjuntos de instrues pequenos
e bem olhidos do que em mquinas com conjuntos de instrues grandes e
desajeitados. Mquinas com Ijunto de instrues muito pequeno, chamadas mquinas
RISC, sero discutidas no captulo 8. tas mquinas no usam microprogramao e so
extremamente rpidas.
Certifique-se de compreender que o conjunto de instrues e a organizao do nvel
de croprogramao so, de fato, o conjunto de instrues e a organizao do
hardware (CPU). conjunto de instrues e a organizao do nvel de mquina
convencional so, em contraste, terminados pelo microprograma, e no pelo hardware.
1.2 Organizaao da CPU
A organizao interna de parte de uma CPU von Neumann clssica mostrada na Fig.
em mais detalhe. Esta parte chamada de fluxo de dados e consiste em registradores
(tipicamente 16) e da ALU (unidade lgica e aritmtica). Os registradores alimentam
os dois registradores entrada da ALU, chamados de A e B na figura. Esses
registradores mantm as entradas ALU enquanto ela est executando a operao.
type palavra =
endereo =
mcm = array (0.. 4095)of palavra;
procedure interpretador (memria: mcm; ac: palavra; Endereoinicial: endereo)
(Este procedimento interpreta programas para uma mquina simples com 1 instruo
por palavra. A memria consiste em uma seqncia de palavras numeradas 0, 1,
4095. A mquina tem um registrador chamado ac, usado para clculos aritmticos.
A instruo ADD, por exemplo, soma uma palavra ao ac. O interpretador mantm
a execuo at que o bit de execuo desligado por uma instruo HALT. O estado
do processo em execuo nesta mquina consiste na memria, o contador de programa.
o bit de execuo e o ac. O estado inicial passado via parmetros.)
var ContadordePrograma, Localiza odoDado: endereo;
Registradordeinstruo; dado: palavra;
DadoRequerido: boolean;
Tipodainstruo: integer;
BitdeExecuo: 0.1;
begin
ContadordePro grama: = EndereQlnicial;
BitdeExecuo: = 1;
while BitdeExecuo = 1 do
begin
(Buscar a prxima instruo para o registrador de instruo}
Registradordeinstruo: Memria tContadordeProgramal;
(Avanar o contador de programa para apontar para a prxima instruo}
ContadordePrograma: = ContadordePrograma + 1;
{Decodificar a instruo e registrar seu tipo}
Determina Tipodeinstruo (Registradordeinstruo, Tipodainstruo);
(Localizar os dados usados pela instruo)
A chaDado (Tipodainstruo, Registradordelnstruo, Localiza odo Dado,
DadoRequerido);
(Buscar o dado na memria, se necessrio}
If DadoRequerido then dado:=memria ILocalizaodoDadol;
(Avanar o processo executando a instruo)
execute (Tipodeinstruo, dado, memria, ac, ContadordePrograma, Bitdelnstruo)
end
end;
2.2 Um interpretador para um computador simples.
26 ORGANIZAO ESTRUTURADA DE COMPUTADORES
de entrada da ALU
- Registrador de sada da ALU
Fig. 2.3 O fluxo de dados para uma mquina von Neumann tpica.
A prpria ALU executa adio, subtrao e outras operaes simples com suas
entradas,
produzindo um resultado no seu registrador de sada. Este resultado pode ser
armazenado de
volta em um registrador e, de l, de volta memria, se desejado. O exemplo
ilustra a adio.
As instrues podem ser divididas em trs categorias: registrador-memria,
registrador-re gistrador e memria-memria. Instrues registrador-memria permitem
que palavras sejam busca- das da memria para registradores, onde podem ser usadas
como entradas para a ALU em instrues seguintes, por exemplo. Uma instruo tpica
registrador-registrador busca dois operan dos dos registradores, os traz para os
registradores de entrada da ALU, executa alguma operao com eles e armazena o
resultado de volta em um registrador. A operao do fluxo de dados o corao da
maioria dos computadores. Extrapolando, ela define o que a mquina pode fazt
Voltaremos a este importante tpico no captulo 4.
2.1.3 Execuo Paralela de Instrues
Desde os primrdios da computao, os projetistas tentam construir mquinas mais
rpidas. At certo ponto, as mquinas podem ser aceleradas simplesmente aumentando
a velocidade do hardware. Entretanto, vrios limites fsicos comeam a despontar no
horizonte. Para comear, as leis da fsica dizem que nada pode viajar mais rpido
que a luz, cuja velocidade aproxima damente 30 cm/ns no vcuo, e 20 cm/ns em fio
de cobre. Isto significa que, para construir um computador com tempo de instruo
de 1 nanossegundo, a distncia total que os sinais eltricos podem viajar dentro da
CPU, para a memria, e de volta CPU no pode ser maior que 20 centmetros. Logo,
computadores muito rpidos precisam ser muito pequenos.
Infelizmente, computadores rpidos produzem mais calor que os lentos e a montagem
do
computador em um volume pequeno torna difcil a dissipao desse calor. Os
supercomputadores
ORGANIZAO DE SISTEMAS DE COMPUTADORES 27
muitas vezes, submersos em fron lquido, um refrigerante, para retirar o calor o
mais
ido possvel. Considerando tudo isso, produzir computadores cada vez mais rpidos
est-se
ando cada vez mais difcil, e tambm cada vez mais caro.
Entretanto, existe outra abordagem. Em vez de uma nica CPU de alta velocidade,
possvel struir uma mquina com muitas ALUs mais lentas (e mais baratas) ou mesmo
CPUs completas a se obter o mesmo poder computacional a um custo menor. Muita
pesquisa tem sido dedicada nstruo de tais mquinas paralelas. Nesta seo faremos
uma breve introduo a algumas tcnicas utilizadas.
As mquinas paralelas podem ser divididas em trs categorias (Flynn, 1972),
baseando-se nmero de fluxos de instrues e de dados que elas tm:
1. SISD: Single Instruction, Single Data
fluxo nico de instrues e de dados.
2. SIMD: Single Instruction, Multiple Data
fluxo nico de instrues e mltiplo de dados.
3. MIMD: Mu/tiple Instruction, Multiple Data
fluxo mltiplo de instrues e de dados.
nquina tradicional de von Neumann SISD. Ela tem apenas um fluxo de instrues
(i. mprograma), executado por uma nica CPU, e uma memria contendo seus dados. A
primeira :ruo buscada da memria e ento executada. A seguir, a segunda
instruo buscada ecutada.
Entretanto, mesmo com este modelo seqencial, pode ser obtida uma limitada
quantidade )aralelismo buscando-se e iniciando-se a prxima instruo antes que a
corrente esteja terminada. DC 6600 e alguns de seus sucessores, por exemplo, tm
mltiplas unidades funcionais (ALU5 ecializadas), cada qual podendo executar uma
nica operao em alta velocidade, como ilustrado Fig. 2.4. Neste exemplo temos
seis unidades funcionais, duas delas para cada uma das operaes iuns de adio e
multiplicao, uma para subtrao e outra para diviso.
A idia por trs deste projeto que a unidade de controle busca uma instruo e a
entrega
a uma das unidades funcionais para execuo. Enquanto isto, a unidade de controle
busca
rxima instruo e a entrega para uma outra unidade funcional. Este processo
continua at
poder mais, seja porque todas as unidades funcionais do tipo requerido esto
ocupadas,
porque o operando necessrio est ainda sendo processado.
Esta estratgia geral obviamente se baseia no fato de que o tempo p executar uma
operao
iuito maior que o tempo para busc-la, assim ela usada nas operaes de ponto-
flutuante,
so complexas e lentas, em vez das operaes com inteiros, que so simples e
rpidas.
Uma variante desta idia dividir a execuo de cada instruo em partes, como na
linha montagem de um carro. Na Fig. 2.5(a) vemos uma CPU composta por cinco
unidades de cessamento, P1 a P5. Durante o primeiro intervalo de tempo, a primeira
instruo buscada rilemria por P1, como mostra a Fig. 2.5(b). Durante o segundo
intervalo de tempo, a primeira ruo passa por P2 para anlise, enquanto P1 busca a
prxima instruo. Em cada intervalo seqente, uma nova instruo buscada por P1
e as outras instrues so passadas para )utras unidades ao longo do caminho.
A organizao da Fig. 2.5(a) chamada de mquina pipeline. Se cada passo
(intervalo de ipo) de n ns, cada instruo demorar 5n ns para ser executada.
Entretanto, uma instruo pleta executada por P5 a cada n ns, para um ganho de
cinco vezes na velocidade. Note embora seja empregado algum paralelismo interno,
uma mquina pipeline ainda uma mquina D, pois h apenas um programa e um
conjunto de dados.
Mquinas SIMD, ao contrrio, operam em mltiplos conjuntos de dados em paralelo.
Uma icao tpica para uma mquina SIMD a previso do tempo. Imagine o clculo da
temperatura dia diria a partir de 24 mdias horrias para muitos locais. Para cada
local, exatamente tesmo clculo precisa ser feito, porm com dados diferentes.
Uma arquitetura apropriada para esta tarefa uma mquina vetorial, mostrada na
Fig. 2.6(a).
luxo de dados aqui similar ao da Fig. 2.3, exceto que em vez de se ter uma nica
varivel
28 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Fig. 2.4 Uma CPU com seis unidades funcionais que podem trabalhar em paralelo.
P1 P2 P3 P4 P5
Unidade Analisador Unidade de rUnidade de Unidade de
de busca de de clculo busca de execuo de
instruo instruo de endereo dados instrues
(a)
P1:
P2:
P3:
P4:
P5:
123456789
Tempo __..
(b)
Fig. 2.5 (a) Uma mquina pipeline de cinco estgios. (b) O estado de cada unidade
de processamento em
funo do tempo.
ORGANIZAO DE SISTEMAS DE COMPUTADORES 29
Vetores de entrada
A B A+B
4 5 9
6 3 9
3 1 4
2 3_ 5
7 + 4 - 11
8 1 9
3 8 11
8 8 16
Vetor
de sada
(a) (b)
2.6 (a) Uma ALU vetorial. (b) Um exemplo de soma de vetores.
cada entrada da ALU, temos um vetor com n entradas. Similarmente, a ALU na
realidade ALU vetorial, capaz de realizar uma operao, tal como uma adio
vetorial [ ig. 2.6(b)], em dois vetores de entrada e produzindo um vetor de sada
como resultado. ns supercomputadores tm arquitetura similar a esta.
Uma abordagem alternativa ao SIMD o array processor, cujo projeto pioneiro da
Univer le de Illinois, o computador ILLIAC iv, ilustrado na Fig. 2.7 (Hord,
1982). Esta arquitetura
Unidade de controle
Difuso de instrues
RRRRRRRR
RRRRRRRR
REERRERE RRRRRRRR
Grade 8 x 8 de processadores/memrias
Processador E E E E E E E E
RERRERE
Memria REERERER
REREERER
Z.7 Um array processor do tipo do ILLIAC IV.
30 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Barraniento Barramento
(a) (b)
Fig. 2.8 (a) Um sistema multiprocessador bsico. (b) Um sistema multiprocessador
com memrias locais.
consiste em uma grade quadrada de processadores e memria. Uma nica unidade de
contro difunde as instrues, que so executadas paralelamente por todos os
processadores, cada qu usando seu prprio dado de sua prpria memria (carregada
durante a fase de inicializao O array processor especialmente apropriado para
clculos matriciais.
A terceira categoria de Flynn a MIMD, na qual CPUs diferentes executam programa
diferentes, s vezes compartilhando alguma memria comum. Por exemplo, no sistema
de reserv de passagens areas, reservas simultneas mltiplas no prosseguem em
paralelo, instruo po instruo, e assim temos fluxo mltiplo de instruo e fluxo
mltiplo de dados. A Fig. 2.8(a mostra um sistema multiprocessador, uma mquina
MIMD usando memria compartilhada. Cad processador tem acesso memria
compartilhada atravs do barramento.
No necessria muita imaginao para perceber que um grande nmero de
processadore rpidos tentando constantemente acessar a memria atravs do mesmo
barramento ir resulta. em conflitos. Projetistas de sistemas multiprocessadores
trouxeram vrios esquemas para reduzii esta conteno e aumentar o desempenho. Um
projeto, mostrado na Fig. 2.8(b), d a cad_ processador sua prpria memria local,
no acessvel aos outros. Esta memria pode ser usada para o cdigo do programa e
aqueles dados que no precisam ser compartilhados. O acessc a esta memria privada
no usa o barramento principal, reduzindo significativamente o trfegc no
barramento.
Outros sistemas multiprocessadores usam no apenas um barramento, mas vrios para
reduzit a carga. Outros usam ainda uma tcnica chamada cache, que consiste em
manter as palavras de memria freqentemente referidas dentro de cada processador.
O processo cache ser discutido em detalhe no captulo 4. Uma viso geral das
arquiteturas multiprocessadoras mostrada em Gajski e Pier, 19a5.
2.2 MEMRIA
A memria a parte do computador onde programas e dados so armazenados. Algum
cientistas da computao (especialmente os britnicos) usam o termo armazenamento,
em vea de memria. Sem uma memria de onde os processadores podem ler e escrever
informaes no haveria nenhum computador digital de programa armazenado.
2.2.1 Bits
A unidade bsica de memria o dgito binrio, chamado bit. Um bit pode conter urr
O ou um 1. Ele a unidade mais simples possvel. (Um dispositivo capaz de
armazenar somentt zeros dificilmente poderia constituir a base de um sistema de
memria. So necessrios pelc menos dois valores.)
As pessoas freqentemente dizem que os computadores utilizam aritmtica binria
porqut
ORGANIZAO DE SISTEMAS DE COMPUTADORES 31
"eficiente". O que elas querem dizer (entretanto, elas raramente o percebem)
que a rmao digital pode ser armazenada atravs da distino entre valores
diferentes de alguma tdeza fsica contnua, tal como tenso ou corrente. Quanto
mais valores devem ser distinguidos, ror a separao entre valores adjacentes e
menor a confiabilidade da memria. O sistema umerao binrio requer apenas que
dois valores sejam distintos. Conseqentemente, ele ntodo mais confivel para a
codificao da informao digital. Se voc no estiver familiarizado nmeros
binrios, veja o apndice A.
Alguns computadores, como os grandes mainframes IBM, so divulgados como tendo
tanto ntica decimal quanto binria. Este truque obtido utilizando quatro bits
para armazenar dgito decimal. Quatro bits provem 16 combinaes, sendo 10 para os
dgitos de O a 9 is no utilizadas. O nmero 1944 mostrado abaixo codificado em
decimal e em binrio , utilizando 16 bits em cada exemplo:
decimal: 0001 1001 0100 0100 binrio: 0000011110011000
esseis bits no formato decimal podem armazenar os nmeros de O a 9999, dando apenas
)0 combinaes, enquanto um nmero binrio puro de 16 bits pode armazenar 65536
combi es diferentes. Por esta razo, as pessoas dizem que a forma binria mais
eficiente.
Considere, entretanto, o que aconteceria se algum jovem e brilhante eletricista
inventasse dispositivo eletrnico altamente confivel que pudesse armazenar
diretamente os dgitos de 9, dividindo a regio de O a 10 volts em 10 partes.
Quatro destes dispositivos poderiam azenar qualquer nmero decimal de O a 9999.
Estes quatro dispositivos proveriam 10000 binaes. Eles poderiam ser usados para
armazenar nmeros binrios usando apenas O e neste caso quatro deles poderiam
armazenar apenas 16 combinaes. Com tais dispositivos, tema decimal obviamente
mais eficiente.
2 Endereos de Memria
As memrias so compostas de um determinado nmero de clulas (ou posies), cada
uma endo armazenar uma parte da informao. Cada clula tem um nmero, chamado de
seu 'reo, pelo qual os programas podem referenci-la. Se a memria tem n clulas,
elas tero
ereo Endereo 1 clula Endereo
III 1 01 ] cl 1
11111 1 ii 1 1 l
I 2 1 21 1
I I 1 3! 1 1 3! 1
I 41 1 1 41 1
111111 II 5J 1111111 III 511 II II II II
lll l6bits
1 71 1
III l2buts
1111 1
1 II 1
III II
- 8 bits
2.9 Trs formas de organizar uma memria de 96 bits.
32 ORGANIZAO ESTRUTURADA DE COMPUTADORES
endereos de O a n-1. Todas as clulas em uma memria possuem o mesmo nmero de
bit' Se uma clula consiste em k bits, ela pode conter uma em 2 diferentes
combinaes de bit A Fig. 2.9 mostra trs organizaes diferentes para uma memria
de 96 bits. Note que clula adjacentes tm endereos consecutivos (por definio).
Os computadores que usam o sistema de numerao binrio (incluindo a a notao
octa e a hexadecimal para nmeros binrios) tambm expressam os endereos de
memria com nmeros binrios. Se um endereo possui m bits, o nmero mximo de
clulas diretamente endere veis 2". Por exemplo, o endereo usado para
referenciar a memria da Fig. 2.9(a) necessitari de no mnimo 4 bits para expressar
um nmero de O a 11. Um endereo de trs bits, entretanto seria suficiente para as
Figs. 2.9(b) e (c). O nmero de bits no endereo est relacionado ac nmero mximo
de clulas endereveis, e independente do nmero de bits por clula. Um memria
com 212 clulas de 8 bits cada e uma memria de 212 clulas de 60 bits cada
necessitariam de um endereo de 12 bits.
O nmero de bits por clula para alguns computadores vendidos comercialmente dado
a seguir:
Burroughs B1700: 1 bit por clula
IBM PC: 8 bits por clula
DEC PDP-8: 12 bits por clula
IBM 1130: 16 bits por clula
DEC PDP-15: 18 bits por clula
XDS 940: 24 bits por clula
Electrologica X8: 27 bits por clula
XDS Sigma 9: 32 bits por clula
Honeywell 6180: 36 bits por clula
CDC 3600: 48 bits por clula
CDC Cyber: 60 bits por clula
O significado da clula que ela a menor unidade enderevel. Em anos recentes,
a maioria dos fabricantes de computador padronizaram a clula de 8 bits, que
chamada byte. Bytes so agrupados em palavras. Um computador com uma palavra de 16
bits tem 2 bytes/palavra, enquanto que um computador com palavra de 32 bits tem 4
bytes/palavra. O significado de uma palavra que a maioria das instrues operam
em palavras inteiras, por exemplo somando duas palavras. Ento uma mquina de 16
bits ter registradores de 16 bits e instrues que manipulam palavras de 16 bits,
enquanto que uma mquina de 32 bits ter registradores de 32 bits e instrues para
mover, somar, subtrair e outras que manipulam palavras de 32 bits.
2.2.3 Ordem de Bytes
Os bytes em uma palavra podem ser numerados da esquerda para a direita ou da
direita para a esquerda. A princpio, parece que esta escolha no importante,
mas, como veremos brevemente, tem maiores implicaes. A Fig. 2.10(a) mostra parte
de uma memria de um compu tador de 32 bits cujos bytes so numerados da esquerda
para a direita, como na famlia Motorola. A Fig. 2.10(b) mostra a representao
anloga para um computador de 32 bits usando numerao da direita para a esquerda,
como na famlia Intel. O primeiro sistema, onde a numerao comea no lado de alta
ordem ("big"), chamado de computador "big endian", em contraste com o "little
endian" da Fig. 2.10(b). Estes termos so devidos a Jonathan Swift, cujo livro
Aventuras de Guiliver satirizou polticos que fizeram guerra por causa da disputa
sobre se os ovos deviam ser quebrados do lado largo (big end) ou do lado estreito
(little end). O termo foi usado pela primeira vez em arquitetura de computadores em
um encantador artigo de Cohen (1981).
E importante entender que em ambos os sistemas um inteiro de 32 bits com o valor
numrico de, digamos, 6 representado pelos bits 110 nos trs bits mais direita
(baixa ordem) da palavra e zeros nos 29 bits da esquerda. No esquema "big endian",
esses bits esto no byte 3 (ou 7, ou 11, etc.), enquanto que no esquema "little
endian" eles esto no byte O (Ou 4, ou 8, etc.). Em ambos os casos, a palavra
contendo este inteiro tem endereo 0. Se os computadores armaze nassem apenas
inteiros, no haveria nenhum problema. Entretanto, muitas aplicaes requerem
1
Endereo
0
4
8
12
O
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
3
2
1
0
7
6
5
4
11
10
9
8
15
14
13
12
Endereo
o
4
8
12
Byte Byte
palavra de 32 bits-.- - palavra de 32 bits-*
(a) (b)
2.10 (a) Memria big endian. (b) Memria little endian.
ta mistura de inteiros, cadeias de caracteres e outros tipos de dados. Considere,
por exemplo, simples registro pessoal consistindo em uma cadeia de caracteres (nome
do empregado) e is inteiros (idade e nmero do departamento). A cadeia de
caracteres terminada com um mais bytes contendo O para encher uma palavra. A
representao "big endian" mostrada Fig. 2.11(a) e a representao "little
endian" mostrada na Fig. 2.11(b), para Jim Smith, anos, departamento 260 (1 x 256
+ 4 = 260).
Ambas as representaes so boas e internamente consistentes. Os problemas comeam
quan uma das mquinas tenta enviar o registro para a outra atravs de uma rede.
Vamos assumir
o "big endian" envia o registro para o "little endian", um byte por vez, comeando
no :e O e terminando no byte 19. (Seremos otimistas e assumiremos que os bits dos
bytes no o invertidos pela transmisso, j que temos problemas suficientes do
jeito que est.) Ento )yte O do "big endian" vai para o byte O da memria do
"little endian", e assim por diante, no mostrado na Fig. 2.11(c).
Quando o "little endian" tenta imprimir o nome, isso funciona, mas a idade aparece
como
x 224 e o departamento est to confuso quanto. Esta situao ocorre porque a
transmisso
erteu a ordem dos caracteres em uma palavra, como devia, mas tambm inverteu os
bytes
inteiro, o que no podia. Uma soluo bvia fazer o software inverter os bytes
dentro
uma palavra aps a cpia ter sido feita. Isto leva Fig. 2.11(d), que acerta os
dois inteiros
s converte a cadeia de caracteres para "MIJTIMS", com o "H" perdido no meio de
nada.
a inverso da cadeia de caracteres ocorre porque, quando est lendo a cadeia, o
computador
)rlmeiro o byte O (um espao), ento o byte 1(M), e assim por diante.
No existe soluo simples. Uma forma que funciona, mas ineficiente, incluir um
cabealho cada registro dizendo que tipo de dados se segue (cadeia de caracteres,
inteiro ou outro) ual o seu tamanho. Isto permite ao receptor realizar apenas as
converses necessrias. De
Transferncia da
big endian para a
Little endian little endian
MI JO MI J
TI MS4 TI MS
000 H8 000 H
O O O 21 12 21 O 0 O
o o i 4 16 4 1 O O
(b) (c)
2.11 (a) Um registro pessoal para uma mquina big endian. (2) O mesmo registro para
uma mquina endian. (e) O resultado da transferncia do registro da big endian para
a little endian. (d) O resultado ransposio de bytes de (c).
Transferncia e transposio
J 1 M O
SM 1 T4
H 0008
O O O 21 12
O O 1 4 16
(d)
ORGANIZAO DE SISTEMAS DE COMPUTADORES 33
Big endian Little endian
Big endian
J 1 M
SM 1 T
H0O O
O O O 21
0014
(a)
34 ORGANIZAO ESTRUTURADA DE COMPUTADORES
qualquer jeito, deve ficar claro que a falta de um padro para a ordem dos hytes
um gran&
problema na troca de dados entre mquinas diferentes.
2.2.4 Cdigos de Correo de Erros
As memrias dos computadores podem cometer erros ocasionalmente devido a picos de
tenso na rede eltrica, entre outras causas. Para evitar tais erros, a maioria das
memrias usa cdigos de deteco e correo de erros. Quando estes cdigos so
utilizados, so adicionados bits extras a cada palavra da memria, de uma forma
especial. Quando uma palavra lida da memria, os bits extras so verificados para
saber se ocorreu algum erro.
Para entender como os erros podem ser tratados, necessrio analisar o que
realmente um erro. Suponha que uma palavra de memria tenha m bits de dados aos
quais adicionaremos r bits e redundncia ou verificao. Seja o tamanho total igual
a o (i. , o = m + r). Uma unidade de o bits contendo m bits de dados e r de
verificao freqentemente chamada de palavra de cdigo de o bits.
Dadas duas palavras de cdigo quaisquer, digamos, 10001001 e 10110001, possvel
determinar quantos bits correspondentes diferem. Neste caso, diferem em 3 bits.
Para determinar quantos bits diferem, simplesmente calcule o OU EXCLUSIVO hooleano
das duas palavras-cdigo e conte o nmero de bits em 1 do resultado. O nmero de
posies nas quais duas palavras de cdigo diferem chamado de distncia Hamming
(Hamming, 1950). Seu significado que se duas palavras-cdigo esto a uma
distncia Hamming d, sero necessrios d erros simples para converter uma na outra.
Por exemplo, as palavras cdigo 11110001 e 00110000 esto a uma distncia Hamming 3
porque so necessrios 3 erros simples para converter uma na outra.
Com uma palavra de memria de m bits, todos os 2" padres de bits so vlidos, mas
devido ao modo que os bits de validao so calculados, somente 2" das 2" palavras-
cdigo so vlidas. Se a leitura da memria retorna uma palavra-cdigo invlida, o
computador sabe que ocorreu um erro na memria. Dado o algoritmo para calcular os
bits de verificao, possvel construir uma lista completa das palavras-cdigo
vlidas, e, a partir desta lista, encontrar duas palavras-cdigo cuja distncia
Fiamming seja mnima. Esta a distncia Hamming do cdigo completo.
As propriedades de deteco e correo de erro de um cdigo dependem de sua
distncia Hamming. Para detectar d erros simples, voc precisa de um cdigo de
distncia d + 1, porque com tal cdigo no possvel converter uma palavra-cdigo
vlida em outra com d erros simples. Similarmente, para corrigir d erros simples
voc precisa de um cdigo de distncia 2d + 1, porque assim as palavras-cdigo
esto to distantes que mesmo com d mudanas a palavra original est ainda mais
prxima que qualquer outra, e assim pode ser unicamente determinada.
Como exemplo simples de um cdigo de deteco de erro, considere um cdigo no qual
um nico bit de paridade adicionado aos dados. O bit de paridade escolhido para
que o nmero de bits em 1 na palavra-cdigo seja par (Ou mpar). Tal cdigo tem
distncia 2, e qualquer erro em um bit produz uma palavra-cdigo com paridade
errada. Isto pode ser usado para detectar erros de um bit. Sempre que uma palavra
com paridade errada lida da memria, sinalizada uma condio de erro e tomada
uma ao especial. O programa no pode continuar, mas, pelo menos, nenhum resultado
incorreto calculado.
Como exemplo simples de um cdigo de correo de erro, considere um cdigo com
apenas
quatro palavras-cdigo vlidas:
0000000000, 0000011111, 1111100000 e 1111111111
Este cdigo tem distncia 5, o que significa que ele pode corrigir erros duplos. Se
chega a palavra 0000000111, o receptor sabe que a palavra original deve ser
0000011111 (se no houve mais que dois erros). Se, entretanto, um erro triplo
converte 0000000000 em 0000000111, o erro no ser corrigido corretamente.
Imagine que desejamos projetar um cdigo com m bits de dados e r bits de
verificao que ir permitir a correo de todos os erros simples de um bit. Cada
uma das 2" palavras vlidas de memria possui n palavras-cdigo invlidas a uma
distncia 1 dela. Estas so produzidas invertendo sistematicamente cada um dos n
bits da palavra-cdigo de n bits. Ento cada uma
ORGANIZAO DE SISTEMAS DE COMPUTADORES 35
Tamanho da Bus de Tamanho
palavra verificao total Percentual de overhead
2.12 O nmero de bits de verificao necessrios para o cdigo de correo de erros
simples.
2'" palavras de memria vlidas requer n + 1 padres dedicados a ela. Como o nme
total de padres de bits 2 devemos ter (n + 1)2'" 2". Usando n = m + r, temos + r
+ 1) 2 Dado m, isto fornece o limite inferior do nmero de bits de verificao
essrios para corrigir erros em um bit. A Fig. 2.12 mostra o nmero de bits de
verificao essrios para vrios tamanhos de palavras de memria.
Este limite inferior terico pode, na realidade, ser obtido usando um mtodo devido
a Richard
mming (1950). Antes de dar o algoritmo de Hamming, analisemos uma representao
grfica
pIes que ilustra a idia de um cdigo de correo de erro para palavras de memria
de 4
O diagrama de Venn da Fig. 2.13(a) contm trs crculos, A, B e C, que juntos
formam regies. Como exemplo, codifiquemos a palavra de memria de 4 bits 1100 nas
regies ABC, AC, e BC, um bit por regio (em ordem alfabtica). Esta codificao
mostrada Fig. 2.13(a).
A seguir adicionamos um bit de paridade a cada uma das trs regies vazias para
produzir idade par, como ilustrado na Fig. 2.13(b). Por definio, a soma dos bits
nos trs crculos, B e c, agora um nmero par. No crculo A, temos os quatro
nmeros 0, 0, 1 e 1, que iam 2, um nmero par. No crculo B, os nmeros so 1, 1, O
e 0, que tambm somam 2, nmero par. Finalmente, no crculo C, temos a mesma coisa.
Neste exemplo todos os crculos iguais, mas somas de O e 4 podem ser obtidas em
outros exemplos. Esta figura corresponde na palavra-cdigo de 4 bits de dados e 3
de paridade.
Suponha agora que o bit na regio AC mude de O para 1, como mostrado na Fig.
2.13(c). omputador pode agora ver que os crculos A e C tm paridade errada
(mpar). A nica Jana de um bit que os corrige restaurar AC de volta para 0,
corrigindo o erro. Desta na, o computador pode corrigir automaticamente erros
simples em um bit.
Vejamos agora como o algoritmo de Hamming pode ser usado para construir cdigos de
eo de erro para qualquer tamanho de palavra de memria. Em um cdigo Hamming, ts
de paridade so adicionados a uma palavra de m bits, formando uma nova palavra de
r bits. Os bits so numerados comeando de 1, e no 0, sendo o bit 1 o mais
esquerda
A A
Erro
(
K1(1)(i )
o
O Bits de
paridade
B
(b) (c
2.13 (a) Codificao de 1100. (b) Adio de paridade par. (e) Erro em AC.
36 ORGANIZAO ESTRUTURADA DE COMPUTADORES
(de mais alta ordem). Todos os bits cujo nmero uma potncia de 2 so bits de
paridade; os outros so de dados. Por exemplo, com uma palavra de 16 bits, so
adicionados 5 bits de paridade. Os bits 1, 2, 4, 8 e 16 so de paridade, e os
outros so de dados. Ao todo, a palavra de memria tem 21 bits (16 de dados e 5 de
paridade). Usaremos (arbitrariamente) paridade par neste exemplo.
Cada bit de paridade verifica posies especficas de bit; o bit de paridade
estabelecido
de forma que o nmero total de is nas posies verificadas seja par. As posies
verificadas
pelos bits de paridade so:
Bit 1 verifica os bits 1,3,5,7, 9, 11, 13, 15, 17, 19 e 21.
Bit 2 verifica os bits 2, 3, 6, 7, 10, 11, 14, 15, 18 e 19.
Bit 4 verifica os bits 4, 5, 6, 7, 12, 13, 14, 15, 20 e 21.
Bit 8 verifica os bits 8, 9, 10, 11, 12, 13, 14 e 15.
Bit 16 verifica os bits 16, 17, 18, 19, 20 e 21.
De forma geral, o bit b verificado pelos bits b b ..., b, tal que b + b + .. + b
= b. Por exemplo, o bit 5 verificado pelos bits 1 e 4 porque 1 + 4 = 5. O bit 6
verificado pelos bits 2 e 4 porque 2 + 4 = 6, e assim por diante.
A Fig. 2.14 mostra a construo de um cdigo de Hamming para a palavra de memria
de 16 bits 1111000010101110. A palavra cdigo de 21 bits 001011100000101101110.
Para ver como a correo de erro funciona, considere o que aconteceria se o bit 5
fosse invertido por um rudo n fonte de alimentao. A nova palavra-cdigo seria
001001100000101101110 em vez de OOlOlli00000lOllOlllO. Os 5 bits de paridade so
verificados, com os seguintes resultados:
Bit de paridade 1 incorreto (1, 3, 5, 7, 9, 11, 13, 15, 17, 19 e 21 contm cinco
is).
Bit de paridade 2 correto (2, 3, 6, 7, 10, 11, 14, 15, 18 e 19 contm seis is).
Bit de paridade 4 incorreto (4, 5, 6, 7, 12, 13, 14, 15, 20 e 21 contm cinco is).
Bit de paridade 8 correto (8, 9, 10, 11, 12, 13, 14 e 15 contm dois is).
Bit de paridade 16 correto (16, 17, 18, 19, 20 e 21 contm quatro is).
O nmero total de bits em 1 nos bits 1, 3, 5, 7, 9, li, 13, 15, 17, 19 e 21 deveria
ser par
porque est sendo utilizada paridade par. O bit incorreto deve ser um dos bits
verificados pelo
bit de paridade 1 - isto , bit 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 ou 21. O bit de
paridade 4
est errado, o que significa que um dos bits 4, 5, 6, 7, 12, 13, 14, 15, 20 ou 21
est errado.
O erro precisa estar em um dos bits comuns a ambas as listas, isto , 5, 7, 13, 15
ou 21. Entretanto,
o bit 2 est correto, eliminando os bits 7 e 15. Similarmente, o bit 8 est
correto, eliminando
Palavradememria 1111000010101110
1 2 3 4 5 6 7 8 9 1011 12131415161718192021
de paridade
Fig. 2.14 Construo do cdigo de Hamming para a palavra da memria
1111000010101110 com a adio
de 5 bits para verificao aos 16 bits de dados.
ORGANIZAO DE SISTEMAS DE COMPUTADORES 37
3. Finalmente o bit 16 est correto, eliminando o bit 21. O nico bit restante o
bit
o bit com erro. Como ele foi lido como 1, ele deve ser 0. Desta forma os erros
podem
rigidos.
rn mtodo simples para encontrar o bit incorreto primeiro calcular todos os bits
de paridade.
os estiverem corretos, no houve erro (ou houve mais de um). Ento somam-se todos
de paridade incorretos, considerando 1 para o bit 1, 2 para o bit 2, 4 para o bit
4,
ri por diante. A soma resultante a posio do bit incorreto. Por exemplo, se os
bits
idade 1 e 4 esto incorretos, mas os bits 2, 8 e 16 esto corretos, o bit 5 (1 + 4)
est
Memria Secundria
mo toda palavra na memria principal precisa ser diretamente acessvel em um
intervalo po muito curto, ela relativamente cara. Conseqentemente, a maioria dos
computadores tambm memrias secundrias mais lentas, baratas e muito grandes. As
memria secun so utilizadas para armazenar grande conjunto de dados, que a memria
principal no su 'Iagnticas
istoricamente, a fita magntica foi o primeiro tipo de memria secundria. Uma
unidade
de computador anloga a um gravador de rolo convencional: uma fita de 2400 ps
iprimento enrolada em um rolo alimentador, passa por uma cabea de gravao e
chega rolo receptor. Variando a corrente na cabea de gravao, o computador pode
gravar aes na fita em forma de pequenos pontos magnetizados.
Fig. 2.15 mostra como a informao organizada em uma fita magntica. Em um
computador ytes de 8 bits, cada frame contm 1 byte, alm de um bit extra,
redundante, chamado de paridade, para aumentar a confiabilidade. Uma densidade
tpica de gravao de
-ames (bytes) por polegada (representada por 1600 bpi), o que significa que a
distncia )S frames menor que 1/1000 da polegada. Outras densidades comuns so
800 e 6250 ps a unidade de fita terminar a gravao de um registro fsico (uma
seqncia de frames), xaum espao na fita, enquanto reduz a velocidade. Se o
programa escreve pequenos )5 fsicos na fita, a maior parte da fita ser gasta por
esses espaos, denominados gaps. fao da fita pode ser mantida alta gravando-se
registros fsicos bem maiores que o gap.
fitas magnticas so dispositivos de acesso seqencia!. Se a fita est posicionada
no incio,
r o registro fsico n necessrio ler antes os registros fsicos de 1 a n - 1, um
de cada
a informao desejada se encontra prxima ao fim da fita, o programa ter que ler
i fita inteira, o que poder levar vrios minutos. Forar a CPU, que pode executar
milhes rues por segundo, a esperar 200 segundos enquanto a fita avana, um
desperdcio.
so mais adequadas quando os dados precisam ser acessados seqencialmente.
Gap entre
registros
Frame 1 Registro fsico
Frame 2
Direo do movimento da fita
15 A informao gravada na fita magntica como uma seqncia de matrizes
retangulares de bits.
38 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Discos Magnticos
Um disco um pedao de metal, com dimetro entre 5 e 10 polegadas, ao qual uma
cobertura
magnetizvel foi aplicada no processo de fabricao, geralmente de ambos os lados.
A informac
gravada em um certo nmero de crculos concntricos chamados trilhas (veja a Fig.
2.16).
Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por
superfcie. Cada unidade
de disco possui uma cabea mvel que pode aproximar-se ou afastar-se do centro do
disco.
A cabea suficientemente pequena para ler ou gravar informaes exatamente em uma
trilha.
A unidade de disco possui freqentemente vrios discos empilhados verticalmente,
com uma
separao de cerca de uma polegada. Em tal configurao, o brao ter uma cabea
prxima
a cada superfcie, e todas se movem juntas. A posio radial das cabeas (distncia
do eixo
chamada cilindro. Uma unidade de disco com n pratos (e 2n faces) ter 2n cabeas,
e portantc
2n trilhas por cilindro.
As trilhas so divididas em setores, e h normalmente entre 10 e 100 setores por
trilha
Um setor consiste em um certo nmero de bytes, tipicamente 512.
Para especificar uma transferncia, o programa deve fornecer as seguintes
informaes: c cilindro e a cabea (ou face), que juntos definem uma nica trilha,
o nmero do setor onde comea a informao, o nmero de palavras a serem
transferidas, o endereo na memria principa de onde a informao vem ou para onde
ela vai, e se a informao para ser lida do discc ou se para ser escrita nele.
As transferncias de informao no disco sempre comeam no incio de um setor, nunc
Ixo
Eixo de rotao
(a)
de leituragravao (1 por face)
4
Direo do movimento do brao
(b)
Fig. 2.16 (a) Um disco com um prato. (b) Um disco com quatro pratos.
ORGANIZAO DE SISTEMAS DE COMPUTADORES 39
rio. Se uma transferncia de mltiplos setores ultrapassa o limite de uma trilha
dentro
a cilindro (por exemplo, da face 0 para a face 1 na mesma posio do brao), nenhum
perdido porque a mudana de uma cabea para outra feita eletronicamente.
Entretanto, ransferncia atravessa o limite de um cilindro, o tempo de uma rotao
pode ser perdido osicionamento das cabeas no prximo cilindro e na espera pelo
setor 0.
e a cabea est sobre um cilindro errado, ela precisa primeiramente ser movida.
Este movi- chamado seek (procura). Um seek gasta tipicamente 3 ms entre trilhas
adjacentes, e
a 100 ms para ir do cilindro mais interno para o mais externo. Uma vez que a cabea
,osicionada corretamente, o controlador precisa esperar at que o setor inicial
passe sob ea, antes de iniciar a transferncia, O tempo gasto esperando pelo setor
correto varia se o programa tiver sorte, at o tempo de uma rotao completa, se o
setor tiver acabado ssar. Este tempo gasto chamado latncia rotacional. A maioria
dos discos gira a 3600 dando uma latncia mxima de 16,67 ms. O tempo total de
acesso igual ao tempo de aaais a latncia rotacional, mais o tempo de
transferncia. A informao transferida a axa de uma trilha por perodo de
rotao.
)uase todos os computadores utilizam discos com vrios pratos, como descrito
anteriormente armazenamento de dados. Eles so freqentemente denominados discos
rgidos. O tipo comum o disco winchester, que uma unidade selada (para evitar a
contaminao com i). As cabeas em uma unidade winchester tm forma aerodinmica e
flutuam em um colcho gerado pela rotao dos pratos. Suas capacidades variam de
cerca de 20 megabytes em utadores pessoais a cerca de 10 gigabytes em grandes
mainframes.
s Flexveis
om o advento dos computadores pessoais, foi necessria uma forma de distribuir
software. Lio foi encontrada no disquete ou disco flexvel (ou ainda floppy
disk), um meio pequeno ovvel, assim chamado porque os primeiros eram fisicamente
flexveis, O disquete foi real- inventado pela IBM para gravar informaes de
manuteno nos mainframes para a equipe rvio, mas foi rapidamente empregado pelos
fabricantes de computadores pessoais como eio conveniente para distribuir software.
tiferentemente dos discos winchester, onde as cabeas flutuam a poucos mcrons da
superfcie, eas das unidades de disquetes realmente tocam os disquetes. Como
resultado, tanto o quanto as cabeas desgastam comparativamente mais rpido. Para
reduzir o desgaste, os itadores pessoais recolhem as cabeas e param a rotao
enquanto a unidade no est ou escrevendo. Conseqentemente, quando o prximo
comando de leitura ou escrita h um atraso de cerca de meio segundo enquanto o
motor acelera.
[ em dia, dois tamanhos so bastante usados: 5 1/4 e 3 1/2 polegadas. Cada um
destes ia verso de baixa e alta densidade. Os disquetes de 3 1/2 polegadas vm em
jaquetas para proteo, assim eles no so realmente "flexveis". Como os discos de
3 1/2 polegadas
enam mais dados e so mais bem protegidos, eles iro eventualmente substituir os de
5
s parmetros mais importantes dos quatro tipos so mostrados na Fig. 2.17.
Tamanho (polegadas)
5,25
5,25
3,5
3,5
Capacidade (bytes)
360K
1 ,2M
720K
1 ,44M
Trilhas
40
80
80
80
Sectores/trilha
9
15
9
18
Cabeas
2
2
2
2
Rotaes/minuto
300
360
300
300
Taxa de transferncia (kbps)
250
500
250
500
Tipo Flexivel Flexivel Rgido Rgido
17 Comparao entre os quatro tipos comuns de disquete.
40 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Discos ticos
Nos ltimos anos, discos ticos (em oposio aos magnticos) tornaram-se
disponveis. Eles possuem densidades de gravao muito maiores que os discos
magnticos convencionais. Os discos ticos foram inicialmente desenvolvidos para
gravar programas de televiso, mas eles podem ser submetidos a uma utilizao mais
esttica como dispositivos de armazenamento de computa dores. A televiso tem uma
banda passante de 6 MHz, logo um disco de 1 hora tem a capacidade terica de cerca
de 10 gigabits. Na prtica, os sistemas conseguem metade disto. (Banda passante
um termo de engenharia eltrica e se refere capacidade de transferncia de
informao de um fio ou outro canal. Uma banda passante de 1 Hertz (Hz)
tipicamente, mas nem sempre, boa para a transmisso de um bit por segundo.)
Devido sua enorme capacidade potencial, os discos ticos tm sido objeto de
grande pesquisa e esto sofrendo uma evoluo incrivelmente rpida. A primeira
gerao foi inventada pelo conglo merado eletrnico holands Philips, e mais tarde
desenvolvido em colaborao com a Sony. Esses discos se baseiam na mesma tecnologia
dos compact discs usados em udio, e so chamados CD ROMs (Compact Disk Read Only
Memory).
Um CD ROM preparado utilizando um laser de alta potncia para queimar furos de 1
mcron (10-6 metro) em um disco matriz. Desta matriz feito um molde. Este molde
usado para estampar cpias em discos plsticos, do mesmo jeito que os discos
fonogrficos so feitos. Uma fina camada de alumnio ento depositada na
superfcie, seguida por uma camada plstica transparente para proteo. Os CD ROMs
so lidos por dispositivos similares aos toca-discos CD, possuindo um detector que
mede a energia refletida quando um laser de baixa potncia incide na superfcie. Os
furos, chamados pits, e as reas no queimadas entre os pits, chamadas lands, tm
diferente refletividade, tornando possvel a distino entre pits e lands.
Esta tecnologia tem algumas conseqncias importantes. Inicialmente, como os CD
ROMs so estampados ao invs de gravados como os disquetes convencionais, um
maquinrio totalmente automatizado pode produzi-los em massa a um custo muito
baixo. Alm disso, como o processo de estampar discos plsticos cobertos de
alumnio no muito preciso, a informao digital normal mente contm muitos
erros.
O problema dos erros atacado de duas formas. Primeiro, a cabea de leitura da
unidade contm um espelho de preciso acionado por um servomecanismo que usado
para rastrear a superfcie, compensando as imperfeies de fabricao. Segundo, os
dados so gravados em um mtodo complexo chamado cdigo de correo de erro Reed-
Solomon entrelaado (crossinter leaved). Este mtodo de codificao usa mais bits
que um cdigo Hamming, mas pode corrigir erros mltiplos.
Alm disso, em vez de usar pits representando Os e lands representando is (ou vice-
versa), cada transio pit-land ou land-pit representa bits em 1. O intervalo entre
duas transies di2 quantos Os esto presentes entre os bits em 1. Os dados so
gravados em grupos de 24 bytes, sendo que cada byte expandido de 8 para 14 bits,
usando o cdigo de Reed-Solomon. Trs bits especiais so adicionados entre cada
grupo e um byte de sincronismo adicionado para formar um quadro. Um grupo de 98
quadros forma um bloco contendo 2K bytes de dados do usurio, que a unidade
bsica enderevel. Embora este esquema seja complicado e gaste uma rea
considervel no disco, ele prov uma confiabilidade extremamente alta usando um
meio de baixo custo.
Informaes em um CD ROM so escritas como uma espiral nica contnua,
diferentemente dos discos magnticos com suas trilhas e cilindros discretos. Este
formato ilustrado na Fig. 2.18. Cada CD ROM contm 270.000 blocos de dados, para
uma capacidade total de 553 megabytes. Os dados so lidos a uma velocidade linear
constante de 75 polegadas por segundo (sendo a velocidade de rotao reduzida
medida que a cabea se move para fora), o que d uma taxa de transferncia de
153,60 kbytes/s.
Os CD ROMs so potencialmente teis na distribuio de grandes bases de dados,
especial mente aquelas que misturam textos e imagens. Uma biblioteca completa de
leis, medicina ou literatura de 250 livros grossos cabe facilmente em um CD ROM,
assim como uma enciclopdia totalmente ilustrada. Um curso por computador formado
por milhares de slides coloridos, cada qual acompanhado por 10 segundos de
narrao, outro candidato para CD ROM. Um mapa virio para um estado inteiro
poderia ser a base de um sistema de navegao automobilstico.
1
ORGANIZAO DE SLSTEMAS DE COMPUTADORES 41
2.18 Formato de um CD ROM.
um sintetizador de voz guiando o motorista para o destino. As possibilidades so
limitadas ias pela nossa imaginao.
Apesar desse enorme potencial, os CD ROMs no so escrevveis, o que limita sua
utilidade o dispositivos de armazenamento de computadores. A inteno de se ter um
meio escrevvel luziu prxima etapa: os discos ticos WORM (Write Once Read
Many). Este dispositivo iite que os usurios escrevam informaes nos discos
ticos. Entretanto, uma vez que um oi queimado na superfcie, ele no pode ser
apagado. Tais discos so bons para arquivar )5, relatrios de auditoria contbil, e
outras informaes que so (semi)permanentes. Eles so muito apropriados para
guardar arquivos temporrios de rascunho. Mas, dada a grande cidade desses discos,
o estilo descartvel de apenas acrescentar arquivos temporrios at o disco esteja
cheio, e ento jog-lo fora, aceitvel.
E claro que a existncia de discos que s podem ser escritos uma vez provoca um
impacto Drma em que os programas so escritos. A incapacidade de modificar arquivos
sugere um diferente de sistema de arquivos, no qual um arquivo , na realidade, uma
seqncia de ,es imutveis, onde nenhuma pde ser modificada, e cada uma substitui
a anterior. Este elo um pouco diferente do modelo comum de regravao usado em
discos magnticos.
A terceira fase de evoluo dos discos ticos o meio tico apagvel. Estes usam
tecnologia neto-tica. O disco plstico coberto com ligas de metais to exticos,
tais como trbio lolnio, que so poucas as pessoas que ouviram falar deles. Esses
metais possuem a interessante riedade de, a baixa temperatura, serem insensveis
aos campos magnticos, mas, a alta tempe a, sua estrutura molecular se alinha com
qualquer campo magntico presente.
Para usar esta propriedade para gravar informaes, a cabea da unidade contm um
laser magneto. O laser dispara uma rajada de luz ultracurta no metal, aumentando
sua temperatura ntaneamente, mas no esburacando a superfcie. Ao mesmo tempo, o
magneto est criando ampo em uma das duas direes. Quando o pulso de laser
termina, o metal foi magnetizado ima das direes possveis, representando O ou 1.
Esta informao pode ser lida da mesma eira que no CD ROM, usando um laser muito
mais fraco. O disco pode tambm ser apagado nescrito da mesma maneira que na
primeira vez.
Discos ticos escrevveis no iro substituir os discos winchester convencionais
por algum o - provavelmente alguns anos, se por acaso isso ocorrer - por duas
razes. Primeiro, empo de seek uma ordem de grandeza maior que o dos discos
winchester. Depois, sua de transferncia tambm uma ordem de grandeza mais baixa.
O desempenho dos discos iticos simplesmente muito melhor. Enquanto os discos
ticos iro, sem dvida, melhorar o tempo, os discos magnticos iro,
provavelmente, melhorar to rpido quanto, mantendo-se
42 ORGANIZAO ESTRUTURADA DE COMPUTADORES
na frente. Mesmo assim, para aplicaes onde um grande nmero de memria removvel
crticc
os discos ticos tm um futuro brilhante.
2.3 ENTRADA/SADA
Antes de um computador trabalhar na soluo de um problema, devemos fornecer-lhe
programa e os dados. Aps encontrar a soluo, o computador precisa comunic-la aos
sere humanos que propuseram o problema em primeiro lugar. O processo de fornecer
informae ou obt-las dos computadores chamado entrada/sada, ou simplesmente
EIS.
Nem toda entrada vem de pessoas e nem toda sada destinada a pessoas. Um
telescpi solar operado por computador pode obter seus dados de entrada diretamente
dos instrumento que observam o sol. Um computador que controla uma indstria
qumica automatizada pod dirigir sua sada s mquinas distribudas pela planta,
que regulam a produo.
Duas organizaes de E/S so comumente usadas nos computadores modernos. Grande:
mainframes usam o projeto mostrado na Fig. 2.19. Neste projeto, um sistema de
computa consiste em uma CPU (ou possivelmente mltiplas CPUs), uma memria, e um
ou mais processa dores de EIS, chamados de canais de dados. Todos os dispositivos
de E/S so conectados ao canais.
Quando a CPU quer realizar EIS, ela carrega um programa especial em um dos canais
e diz ao canal para execut-lo. O canal manipula toda a EIS para e da memria
principal, deixandc
a CPU livre para fazer outras coisas. Quando o canal termina, ele envia CPU um
sinal especia
chamado interrupo, o que faz a CPU parar o que ela estava fazendo e dar ateno
ao cana]
A vantagem dessa organizao que ela permite que a CPU descarregue todo o
trabalho de
EIS para o canal. Desta forma, processamento e E/S podem ser feitos ao mesmo tempo.
Como os mainframes tipicamente geram uma tremenda carga de EIS, eles so usualmente
equipados com pelo menos trs barramentos. O barramento de memria permite aos
canais ler e escrever palavras na memria. O barramento de E/S permite CPU enviar
comandos aos canais e permite que os canais interrompam a CPU. Finalmente, h um
terceiro harramento que permite que a CPU acesse a memria sem usar os outros
barramentos.
Computadores pessoais usam uma estrutura mais simples, como a ilustrada na Fig.
2.20.
A maioria dessas mquinas tem uma caixa com uma placa de circuito impresso grande.
no fundo,
da memria
de E S
Fig. 2.19 Estrutura de EIS em um grande mainframe.
Placa controladora de EIS -
ORGANIZAO DE SISTEMAS DE COMPUTADORES
2.20 Estrutura fsica de um computador pessoal.
Lada de motherboard(placa-me). A motherboard contm a pastilha de CPU, alguma
memria
-ias pastilhas de suporte. Ela tambm contm um barramento ao longo de sua extenso
luetes nos quais conectores de borda de placas de memria adicional e de EIS podem
ser
idos. A estrutura de minicomputadores similar, exceto que a CPU tambm
localizada ma placa de expanso (plug-in), sendo que a motherboard se torna apenas
um receptculo vo para outras placas, e neste caso chamada backplane.
A estrutura lgica de um computador pessoal mostrada na Fig. 2.21. A maioria tem
um mento nico usado para interligar a CPU, memria e dispositivos de EIS. Cada
dispositivo S consiste em duas partes: uma contendo a maior parte dos componentes
eletrnicos, chamada olador, e a outra contendo o prprio dispositivo de EIS, tal
como uma unidade de disco. ntrolador geralmente se situa numa placa de expanso,
exceto para aqueles controladores )pCionais (tais como o teclado), os quais
normalmente esto localizados na motherboard. ora o vdeo (monitor) no seja um
opcional, o controlador de vdeo normalmente se localiza ma placa de expanso, para
permitir ao usurio escolher entre colorido, monocromtico, ta resoluo, baixa
resoluo, e assim por diante. O controlador se conecta ao dispositivo m cabo
ligado a um conector na parte de trs da caixa.
A funo de um controlador controlar seu dispositivo de EIS e gerenciar os
acessos ao mento para ele. Quando um programa quer dados de um disco, ele manda um
omando o controlador de disco, que ento envia seeks e outros comandos para o
dispositivo. Quando
Placa controladora de E/S
43
Placa de memria
Conector de borda
Caixa
Monitor
.21 Estrutura lgica de um computador pessoal.
44 ORGANIZAO ESTRUTURADA DE COMPUTADORES
a trilha e o setor desejados foram localizados, a unidade comea a soltar os dados
como um seqncia serial de bits para o controlador. E tarefa do controlador
quebrar a seqncia d bits em palavras e escrever cada palavra montada na memria.
Um controlador que l ou escrevi um bloco de dados na memria sem a interveno da
CPU dito fazer acesso direto memria mais conhecido pela sigla DMA (Direct
Memory Access).
O barramento no apenas usado pelos controladores de EIS, mas tambm pela CPU par
buscar instrues e dados. Que acontece se a CPU e um controlador querem usar o
barrament ao mesmo tempo? A resposta que uma pastilha chamada rbitro de
barramento decide quen o prximo a usar. Geralmente dada a preferncia aos
dispositivos de E/S sobre a CPU porque os discos e outros dispositivos com partes
mveis no podem ser parados, e for-lo! a esperar causaria perda de dados. Quando
no h E/S em execuo, a CPU pode usar todo! os ciclos de barramento para
referenciar a memria. Entretanto, quando algum dispositivo d E/S est operando,
tal dispositivo ir requerer o barramento e ser atendido quando necessrio Este
processo chamado roubo de ciclos e reduz a velocidade do computador. Os
mainframe! tm mltiplos barramentos, como vimos, e assim no sofrem este problema.
Existem hoje muitos tipos de dispositivos de E/S. Alguns dos mais comuns so
analisado
a seguir.
2.3.1 Terminais
Os terminais de computador consistem em trs elementos: o teclado, o monitor e
algum circuito eletrnico para control-los. Existem diversos tipos de teclados.
Nos mais baratos, cada tecla simplesmente uma chave que fecha um contato eltrico
quando pressionada. Os mais caros tm um m sob cada tecla que passa atravs de
uma bobina quando pressionada, induzindo assim uma corrente que pode ser detectada.
Vrios outros mtodos, tanto mecnicos quanto eletromecnicos, so tambm
utilizados em alguns teclados.
O monitor uma caixa contendo basicamente um CRT (Tubo de Raios Catdicos) e suas
fontes de alimentao. O CRT contm um canho que pode disparar um feixe de
eltrons contra uma tela fosforescente na frente do tubo, como mostrado na Fig.
2.22(a). (Monitores coloridos possuem trs canhes, para vermelho, verde e azul.)
Durante a varredura horizontal, o feixe percorre a teli m cerca de 50 ps, traando
uma linha quase horizontal na tela. Ento ele executa um retrao hc para voltar
para o lado esquerdo e comear nova varredura. Um dispositivo como este, u produz
uma imagem linha a linha, chamado dispositivo raster. Se o retrao horizontal no
instantneo, ele dito boustrophedonic (a maneira como um boi percorre um campo
com arado: esquerda para a direita, depois direita para a esquerda; arados tambm
no tm retrao instantneo).
A varredura horizontal controlada por uma tenso linearmente crescente aplicada
s placas
de deflexo horizontal dispostas dos lados esquerdo e direito do canho eletrnico.
O movimento
Varredura horizontal
Grade
Tela
Ponto na
tela
Vcuo
Placas de dei lexo vertical
Retrao Retrao
vertical horizontal
(a) (b)
Fig. 2.22 (a) Seo de um CRT. (b) Padro de varredura de um CRT.
ORGANIZAO DE SISTEMAS DE COMPUTADORES 45
ical controlado por uma tenso tambm linearmente crescente, porm lentamente
aplicada lacas de deflexo vertical acima e abaixo do canho. Aps algo entre 400 e
1000 varreduras, enses nas placas de deflexo horizontal e vertical so
rapidamente revertidas simultaneamente a voltar o feixe para o canto esquerdo
superior. Toda a imagem de uma tela normalmente cnta entre 30 e 60 vezes por
segundo. Os movimentos do feixe so mostrados na Fig. 2.22(b). Para produzir um
padro de pontos na tela, existe uma grade dentro do CRT. Quando a tenso positiva
aplicada grade, os eltrons so acelerados, fazendo com que o feixe ja a tela e
a faa brilhar por um curto perodo de tempo. Quando uma tenso negativa sada, os
eltrons so repelidos, de modo que eles no passam atravs da grade e a tela
brilha. Assim, a tenso aplicada grade faz com que o padro de bits
correspondente aparea tela. Este mecanismo permite que um sinal eltrico seja
convertido numa exibio visual.
Trs tipos de terminais so comumente utilizados: terminais alfanumricos mapeados
em
Tlna(character-map), terminais bit-mape terminais RS-232-C. Todos eles podem usar
qualquer
de teclado, mas diferem na forma como o computador se comunica com eles e como a
la tratada. Nas sees seguintes, descreveremos brevemente cada um deles.
ininais Alfanumricos Mapeados em Memria
A maioria dos computadores pessoais usa o esquema mostrado na Fig. 2.23 para
mostrar Lda no monitor. (O teclado tratado como um dispositivo completamente
isolado.) Na placa troladora de vdeo existe uma poro de memria, chamada de
memria de vdeo, assim ,o um circuito para acessar o barramento e gerar sinais de
vdeo.
Para mostrar os caracteres, a CPU os copia para a memria de vdeo em bytes
alternados. ociado a cada caractere, existe um byte de atributo que descreve como o
caractere deve mostrado. Os atributos podem incluir cor, intensidade, piscante ou
no, e assim por diante. te modo, uma tela de 25 por 80 caracteres requer 4000
bytes de memria de vdeo, 2000 s os caracteres e 2000 para os atributos. Algumas
placas possuem mais memria, podendo azenar mltiplas telas.
A tarefa da placa de vdeo repetidamente buscar os caracteres da memria de vdeo
e r o sinal necessrio para acionar o monitor. Uma linha completa de caracteres
buscada uma s vez para que as linhas de varredura possam ser calculadas. Este
sinal um sinal lgico de alta freqncia que controla a varredura do feixe de
eltrons que desenha os caracteres tela. Como a placa produz um sinal de vdeo, o
monitor deve ficar a poucos metros do Lputador.
minais Bit-map
Uma variao desta idia ter a tela considerada no como uma matriz de 25 x 80
caracteres, sim uma matriz de pontos, chamados pixeis. Cada pixel pode estar ligado
ou desligado, presenta um bit de informao. Nos computadores pessoais, a tela pode
conter to pouco nto 200 x 320 pixels, sendo comum entontrar 480 x 640. Nas
estaes de trabalho, a tela )icamente de 1024 x 1024 pixeis. Terminais que usam
mapeamento de bits em vez de mapea Fig. 2.23. Sada de um ter minal em um
computador pessoal.
46 ORGANIZAO ESTRUTURADA DE COMPUTADORES
mento de caracteres so chamados terminais bit-map. Vrias placas de vdeo podem
operar tanto
como terminais character-map quanto bit- sob o controle de software.
A mesma idia geral usada como na Fig. 2.23, exceto que a memria de vdeo
vista como uma grande matriz de bits. O software pode estabelecer qualquer padro
desejado, e que mostrado instantaneamente. Para desenhar caracteres, o software
pode decidir alocar, por exem plo, um retngulo de 9 x 14 para cada caractere e
preench-lo com os bits necessrios para formar o caractere. Esta abordagem permite
ao software criar fonts mltiplos e combin-los vontade. Tudo o que o hardware
faz mostrar a matriz de bits. A cor pode ser manipulada utilizando mltiplas
matrizes, algumas vezes chamadas de bit planes. Com n bit planes, uma entre 2 cores
pode ser selecionada para cada pixel.
Terminais bit-map so geralmente utilizados para suportar a exibio de vrias
janelas. Uma janela uma rea na tela usada por um programa. Com mltiplas janelas
possvel executar vrios programas ao mesmo tempo, cada um mostrando seus
resultados independentemente dos outros.
Apesar de os terminais bit-map serem bastante flexveis, eles tm duas grandes
desvantagens. Primeiro, eles requerem uma quantidade considervel de memria de
vdeo. Uma tela de 1024 x 1024 requer um milho de bits, ou 128 K bytes para
monitor monocromtico, e metade de um megabyte para um monitor colorido com 4 bits
por pixel (comparado com 4 K para terminais character-map, tanto monocromtico
quanto colorido).
A segunda desvantagem o desempenho. Para mostrar qualquer coisa, necessria uma
tremenda quantidade de cpia. Mover um caractere com caixa 9 x 14 para a tela
requer a transferncia de pelo menos 28 bytes, assim como todo o trabalho para
inserir o caractere no lugar certo no mapa de bits. Pior ainda, rolar a tela
geralmente significa copiar a memria inteira. Conseqentemente, terminais bit-map
precisam de CPUs muito rpidas para manipular os bits. Alternativamente, eles podem
ser equipados com um hardware especial para gerenciar os pixels rapidamente.
Terminais RS-232-C
Dzias de companhias fabricam computadores e centenas de companhias fabricam
terminais. Para permitir que (quase) qualquer terminal possa ser usado com (quase)
qualquer computador, um padro de interface entre computador e terminal, chamado
RS-232-C, foi desenvolvido. Qual quer terminal que suporte a interface RS-232-C
pode ser conectado a qualquer computador que tambm suporte esta interface.
Os terminais RS-232-C tm um conector padronizado de 25 pinos. O padro RS-232-C
define
o tamanho e a forma do conector, os nveis de tenso e o significado de cada um dos
sinais nos pinos.
Quando um computador e um terminal esto longe um do outro, freqente o caso em
que a nica forma prtica de conect-los atravs do sistema telefnico.
Infelizmente, o sistema telefnico no capaz de transmitir os sinais requeridos
pelo padro RS-232-C. Ento, um dispo sitivo, chamado modem (modulador-
demodulador), precisa ser inserido entre o computador e o telefone, e tambm entre
o terminal e o telefone, para realizar a converso de sinais. Estudaremos os modems
na prxima seo.
A Fig. 2.24 mostra a disposio do computador, modems e terminal quando a linha
telefnica utilizada. Quando o terminal est perto o bastante do computador para
que possam ser ligados diretamente por fio, os modems no so utilizados. Porm os
mesmos conectores e cabos do padro RS-232-C so utilizados, apesar dos pinos
relacionados ao controle de modems no serem necessrios.
Para se comunicarem, o computador e o terminal contm, cada um, uma pastilha
chamada UART (Universal Asynchronous Receiver Transmitter), assim como uma lgica
para acessar o barramento. Para mostrar os caracteres, o computador busca o
caractere de sua memria principal e o coloca na UART. Esta, por sua vez, o desloca
atravs do cabo RS-232-C, bit a bit. Na verdade, a UART um conversor paralelo
para serial, uma vez que o caractere inteiro (1 byte) lhe entregue de uma vez, e
sua sada de um bit por vez, numa taxa especfica. As taxas mais comuns so de
110, 300, 1200, 2400, 9600 e 19200 bits/s.
No terminal, outra UART recebe os bits e reconstri o caractere inteiro, que ento
mostrado
OR(;ANIZAO DE SISTEMAS DE COMPITADORES 47
Serial i/O card
Alguns sinais
Terra de proteo (1)
Transmite (2)
Recebe (3)
RTS (4)
' CTS (5)
DSR (6)
Terra comum (7)
Deteco de portadora (8)
DTR (20)
2.24 Conexo de um terminal RS-232-C a um computador. Os nmeros entre parnteses,
na lista de is, so os nmeros dos pinos.
ela. A entrada vinda do teclado do terminal passa atravs do conversor paralelo
para serial
:erminal e depois reconstruda pela UART no computador.
O padro RS-232-C define 25 sinais, mas na prtica somente alguns so utilizados (e
a maioria s omitida quando o terminal est ligado diretamente ao computador, sem
modems). Os liS 2 e 3 so para transmisso e reao de dados, respectivamente. Cada
um dedicado a t seqncia unidirecional de hits, em sentidos opostos. Quando o
terminal ou o computador ;ado, ele ativa (coloca em 1) o sinal DTR (Dato Terminal
Ready) para informar o modem ue ele est ligado. Similarmente, o modem ativa o DSR
(Data Set Ready) para indicar presena. Quando o terminal ou o computador deseja
enviar dados, ele ativa o RTS (Request Send) para pedir a permisso. Se o modem
pode atender esta requisio, ele ativa o CTS 'ar To Send) como resposta. Outros
pinos so usados para vrias funes de status, testes mporizaes.
.2 Modems
Com o crescimento do uso de computadores no passado, comum que um computador ise
comunicar-se com outro. Por exemplo, muitas pessoas possuem computadores pessoais
casa que elas utilizam para se comunicar com seus computadores no trabalho, com
sistemas :rios, ou sistemas de boletins eletrnicos. Todas essas aplicaes usam o
telefone como de comunicao.
Entretanto, a linha telefnica comum no apropriada para transmitir sinais de
computadores, geralmente representam um 1 como aproximadamente 5 volts e um O como
O volt, como trado na Fig. 2.25(a). Sinais de dois nveis sofrem considervel
distoro quando transmitidos vs de um canal de voz da linha telefnica, levando
assim a erros de transmisso. Um sinal nda senoidal pura a uma freqncia de 1000 a
2000 Hz, chamado portadora, pode ser transmitido relativamente pouca distoro, e
este fato explorado como a base da maioria dos sistemas lecomunicao.
Como os pulsos de uma onda senoidal so completamente previsveis, uma onda
senoidal 1 no transmite nenhuma informao. Entretanto, atravs da variao da
amplitude, freqncia se, uma seqncia de is e Os pode ser transmitida, como
mostrado na Fig. 2.25. Este processo
linhas
il
1 - 22 bits - -4- 32 bUs -
Ib)
18 Um exemplo de esquema de cache. (a) Memria com blocos de 4 bytes. (b) Cache
associativo
24 linhas.
168 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Quando o computador inicializado, todos os b Vlido so colocados em 0, para que
nenhuma entrada do cache vlida. Suponha que a primeira instruo referencie a de
32 bits do endereo 0. O microprograma vai verificar todas as entradas do cache,
pro por uma vlida que contenha o bloco nmero 0. No achando, ele vai ento fazer
uma re ao barramento para buscar a palavra O da memria e fazer uma entrada vlida
para nmero O, contendo o contedo da palavra O. Se esta palavra for necessria
novam prxima vez ela ser pega do cache, eliminando a necessidade de uma operao
de barrar
A medida que o tempo passa, mais e mais entradas de cache sero marcadas como Se o
programa usar menos que 1024 palavras de programa e dados, no final todo o pi e
seus dados aparecero no cache, e ele ser executado a alta velocidade, sem fazer
referncia memria atravs do barramento. Se mais do que 1024 palavras so nect
em algum ponto o cache estar cheio e uma entrada velha ter que ser descartada pan
lugar para uma nova. Na prtica, a deciso de qual deve ser jogada fora precisa ser
feit rapidamente (nanossegundos). O VAX e muitas outras mquinas selecionam um slot
ai mente. Outros algoritmos possveis so discutidos no captulo 6, sob o ttulo de
memria onde o mesmo problema ocorre.
O aspecto do cache associativo que o distingue dos outros tipos de caches que c
contm um nmero de bloco e sua entrada. Quando aparece um endereo de memria, o m
grama deve calcular o nmero do bloco relevante (fcil) e ento procurar aquele nr
bloco no cache (difcil). Para evitar uma pesquisa linear, o cache associativo tem
um h especial que pode comparar todas as entradas com o nmero de bloco dado
simultane em vez de um loop do microprograma. Este hardware torna o cache
associativo caro.
Para reduzir o custo, um tipo diferente de cache foi inventado, o cache com map
direto. Este tipo de cache evita a pesquisa colocando cada bloco num slot cujo
nmei ser facilmente calculado a partir do nmero do bloco. Por exemplo, o nmero
do si ser o resto da diviso do nmero do bloco pelo nmero de slots. Com blocos de
4 byl , 1 palavra) e 1024 slots, por exemplo, o nmero do slot para a palavra no
endert (A14) mdulo 1024. No exemplo da Fig. 4.29, vemos que as palavras em 0,
4096, 8192 por diante so mapeadas no slot 0; as palavras em 4, 4100, 8196 e assim
por diante so m no slot 1; e assim sucessivamente.
Enquanto que o cache com mapeamento direto elimina o problema de pesquisa,
um novo problema - como dizer qual das muitas palavras que mapeiam num dado
atualmente ocupando aquele siot. De fato, criamos 1024 classes de equivalncia,
basea
Siot Vlido Tag Valor Endereos que usam esse
o
2
3
4
5
1023
Bits
1
2
12130
1
1
170
1
3
2142
0
o
0
(a)
12
10
2
Tag Siof 00
0, 4096, 8192, 12288,
4, 4100, 8196, 12292,
8, 4104, 8200, 12296,
12, 4108, 8204, 12300,
16. 4112, 8208, 12304,
20, 4116, 8212, 12308,
1 4092, 8188, 12284,
(b)
Fig. 4.29 (a) Um cache de mapeamento direto com 1024 slots de 4 bytes cada. (b)
Clculo do s
a partir de um endereo de 24 bits.
O NVEL DE MICROPROGRAMAO 169
S de bloco mdulo o tamanho do cache. Neste exemplo, o siot O poderia conter
qualquer is palavras 0, 4096, 8192 etc. A maneira de dizer qual est atualmente no
siot colocar lo endereo no cache, no campo Tag. Este campo contm aquela parte
do endereo que de ser calculada pelo nmero do siot.
ra tornar este ponto mais claro, considere uma instruo no endereo 8192 que move
ra em 4100 para 12296. O nmero do bloco correspondente a 8192 calculado
dividindo-o nosso tamanho de bloco exemplo) para obter 2048. Depois, o nmero do
slot calculado Lo 2048 mdulo 1024, que o mesmo que usar os 10 bits de baixa
ordem de 2048. O ) do siot 0. Os 12 bits de cima contm um 2, assim ele o Tag.
A Fig. 4.29(a) mostra
depois que todos os trs endereos foram processados.
Fig. 4.29(b) mostra como o endereo dividido. Os dois bits de baixa ordem so
sempre
i vez que o cache funciona com blocos inteiros, e estes so mltiplos do tamanho do
4 bytes neste exemplo). Depois vem o nmero do sior (10 bits) e finalmente o Tag
(12
imediato construir o hardware que extrai diretamente o nmero do siot e Tag de
qualquer o de memria.
fato de que blocos mltiplos mapeiam no mesmo slot de cache pode causar problemas.
a que nossa instruo de movimentao mova 4100 para 12292, em vez de 12296. Esses
idereos mapeiam no slot 1. Dependendo dos detalhes do microprograma, aquele que
ulado por ltimo terminaria no cache, com o outro expurgado. Em si mesmo, isso no
sastre, mas degrada o desempenho do cache se acontecer que muitas palavras que
estiverem isadas mapeiem no mesmo sior. O objetivo, afinal de contas, melhorar o
desempenho.
maneira de sair desta dificuldade expandir o cache de mapeamento direto para ter
o que uma entrada por siot. O PDP-11/70, por exemplo, tem duas entradas por slot.
che de mapeamento direto com mltiplas entradas por slot chamado de cache
associativo ijunto e ilustrado na Fig. 4.30.
nto o cache associativo quanto o de mapeamento direto so, de fato, casos especiais
do ssociativo por conjunto. Se reduzirmos o nmero de slots para 1, todas as
entradas estaro mo siot, e devemos distingui-las inteiramente por seus Tags, uma
vez que todas mapeiam mo endereo. Esse caso apenas um cache associativo. Se n =
1, voltamos ao cache )eamento direto puro, com uma entrada por slot.
caches associativos e de mapeamento direto tm diferentes vantagens e desvantagens.
ie de mapeamento direto mais simples, mais barato para construir e tem um tempo
so mais rpido, uma vez que o slot apropriado pode ser encontrado simplesmente
indexando
utilizando uma parte do endereo como ndice. De outro lado, o cache associativo
tem Lxa de acerto maior para qualquer dado nmero de slots, pois nunca h
conflitos. No contecer que k palavras importantes no possam ser colocadas no
cache simultaneamente, elas tm a m sorte de mapear no mesmo slot do cache. Quando
qualquer computador t sendo projetado, uma simulao extensiva do cache sempre
feita para ver quanto mpenho se obtm, e a que preo.
m de determinar o nmero de slots, os projetistas devem tambm escolher um tamanho
Entrada O Entrada 1 Entrada n - 1
-v
Vlido Tag Valor
Siot
O
2
3
4
5
TTT TT TT T
O Um cache associativo por conjunto com n entradas por siot.
170 ORGANIZAO ESTRUTURADA DE COMPUTADORES
de bloco. Ns temos usado uma palavra de 32 bits em nossos exemplos (para simplic
mas 2, 4, 8 ou mais palavras so tambm possveis, e freqentemente usadas. Uma va
de usar um tamanho de bloco maior que existe menos overhead na busca de um b oito
palavras do que na busca de oito blocos de uma palavra, especialmente se o barr
permite transferncia de blocos. Uma desvantagem que nem todas as palavras podem
ser i rias, de modo que algumas das buscas podem ser desperdiadas.
Outra importante considerao do projeto de cache como manipular escritas. Duas
est so comumente usadas. Na primeira, chamada write through, quando uma palavra
es cache, ela imediatamente escrita de volta memria. Esta abordagem garante
que as e do cache so sempre o mesmo que as entradas correspondentes na memria.
O outro sistema de escrita, chamado copy back, no atualiza a memria quando
alterado. Em vez disso, a memria somente atualizada quando a entrada expur
cache para permitir que outra entrada tome conta do siot. Quando copy back usado,
necessrio em cada entrada do cache, dizendo se a entrada foi modificada desde
que foi ca
para o cache.
Como todos os outros aspectos do projeto de cache, existem compromissos aqui. Write
obviamente causa mais trfego de barramento que copy back. De outro lado, se a CPU
uma transferncia de EIS da memria para disco, e a memria no est correta (po
palavras modificadas recentemente ainda no foram copiadas de volta memria a p
cache), dados incorretos sero escritos no disco. Este problema pode ser
contornado, mas aci complexidade ao sistema.
Se a razo de leituras para escritas for muito alta, pode ser mais simples usar
write e apenas aceitar o trfego de barramento. Entretanto, se houver muitas
escritas, pode ser usar copy back e fazer com que o microprograma explicitamente
expurgue o cache inteil de comear uma operao de E/S.
Outra considerao de projeto a respeito de escritas o que fazer se uma escritl
uma falha no cache. Uma estratgia buscar a palavra para o cache, e ento
atualiz-la, escre de volta se write through estiver sendo utilizado. Uma
estratgia diferente escrever na n diretamente, mas no buscar uma palavra para o
cache, exceto nas leituras. Esta consi chamada poltica de alocao de escrita.
Os dois mtodos descritos aqui so utilizados.
A medida que a tecnologia de circuitos integrados evolui, est-se tornando possvel
caches muito rpidos diretamente na pastilha da CPU. Estes caches so pequenos, d
falta de rea real na pastilha, de modo que desejvel ter caches de dois nveis,
um na
da CPU e um segundo na placa da CPU. Se uma palavra no puder ser encontrada n
da pastilha, uma requisio feita ao cache ao nvel da placa. Se isso tambm
falhar, a n
principal usada.
Tendo considerado todas as coisas, o uso de caches uma tcnica importante para ri
o desempenho do sistema. Quase todos os computadores de mdia e larga escala usam
forma de cache. Informaes adicionais sobre caches podem ser encontradas em Hill,
198
bylski eta!., 1988; Short e Levy, 1988; e Smith, 1986, 1987.
4.6. EXEMPLOS DO NVEL DE MICROPROGRAMAO
Nesta seo, vamos olhar o nvel de microprogramao de nossos dois exemplos co as
famiias Intel e Motorola. Isso ser, por necessidade, curto, porque mquinas reais
so ali complicadas. Em ambos os casos, examinaremos um dos membros da famflia mais
sLnpl evitar detalhes desnecessrios.
4.6.1 A Microarquitetura do Intel 8088
A microarquitetura de toda CPU Intel similar, porque todas elas evoluram da p
o 8086 (McKevitt e Bayliss, 1979). O 8088 virtualmente a mesma mquina que o 8086
que contm uma interface de barramento de 8 bits em vez de uma interface de 16 1
vias de dados, a ALU e os registradores de rascunho so idnticos. Similarmente, o
80286
no sofreu alteraes em termos das vias de dados principais, porque, como seus
antec
O NVEL DE MICROPROGRAMAO 171
mbm internamente uma mquina de 16 bits. Entretanto, o 80286 consiste em quatro
des funcionais independentes, como mostra a Fig. 3.40. O 80386 tem vias de dados de
e oito unidades funcionais, e de alguma forma diferente dos outros.
remos nos concentrar no 8088 como o membro mais simples da famiia, mas os outros os
so similares no esprito, mesmo diferindo em alguns dos detalhes. O 8088 usa uma
ra de microcdigo e lgica aleatria (circuitos de hardware especializados) para
prover boa nalidade e, ao mesmo tempo, minimizar o tamanho do microcdigo. As
microinstrues rticais no formato, com campos multibits que especificam funes
gerais, em vez de bits ios que controlam portas individuais nas vias de dados.
corao do 8088 so as vias de dados principais, ilustradas de forma simplificada
na Fig.
As vias de dados tm duas pores, a parte inferior, na metade de baixo da figura,
e
e superior, na metade superior. As duas partes funcionam independentemente, em
paralelo.
parte inferior comparvel s vias de dados da maioria dos outros computadores,
incluindo
exemplos. Ela contm uma ALU multifuno, que pega duas entradas, calcula alguma )
simples com elas e produz uma sada. As entradas vm de trs registradores de 16
bits, ., TMPB e TMPC, que so carregados antes do ciclo da ALU. A sada vai para o
barramento U, de onde ela pode ser roteada de volta a qualquer um dos trs
registradores de entrada, tro lugar nas vias de dados. A ALU pode realizar tanto
operaes de 8 bits quanto de s. Os cdigos de condio resultantes de uma operao
da ALU podem ser armazenados W por controle do microprograma.
parte inferior das vias de dados tambm contm uma memria de rascunho de oito
palavras, AX, BX, CX, DX, SI, DI, BP e SP. Um registrador pode ser copiado da
memria de iho para o barramento da ALU, e da para um dos registradores
temporrios, onde ele ser utilizado como uma entrada da ALU. A sada da ALU pode
ser roteada diretamente memria de rascunho, sem passar atravs de um registrador
TMP.
bloco marcado "cruzamento" entre a memria de rascunho e o barramento da ALU
capacidade de trocar bytes enquanto realiza cpias em qualquer direo. Esta
caracterstica cessria para acessar os registradores de 8 bits da memria de
rascunho. Por exemplo, ;omar AL e BH, AX pode ser copiado para TMPA. Depois, BX
pode ser copiado para 3, trocando os bytes no processo, de modo que BH ocupe o byte
de baixa ordem de TMPB o byte de alta ordem. Uma adio de 8 bits soma ento AX e
BH, cujo resultado pode to roteado de volta a AL ou BH, dependendo da instruo.
parte superior das vias de dados trata de clculo de endereos. Lembre-se de que,
no um endereo de memria fsico formado pela adio de um endereo de 16 bits
com strador de segmento apropriado para formar um endereo fsico de 20 bits, que
sai para ramento de endereos. A parte superior contm sua prpria memria de
rascunho para radores, para armazenar os quatro registradores de segmento, o
contador de programa dois registradores. Ela tambm guarda a fila de busca
antecipada (prefetch queue, descrita
parte superior contm um somador que usado para combinar distncias (offsets) de
e registradores de segmento. Ela ligada por fios de tal modo que os 4 bits de
baixa
i do offset vo diretamente para o barramento de endereos, sem passar pelo
somador,
nto os bits 4 a 15 do offset so somados aos bits O a 11 do registrador de segmento
para
r os 16 bits superiores do harramento de endereo. Uma pequena ROM provida para
intes comuns, por exemplo, para somar 1 ao contador de programa depois que um byte
scado da memria.
8088 tem pipeline. Quatro unidades esto presentes, para buscar instrues com
antece t, decodificar instrues, fazer os clculos de endereo e executar as
instrues. Os trs )5 so relativamente convencionais, mas a unidade de prefetch
algo no-usual. Ela funciona etamente independente do resto do processador. Sempre
que o barramento est inativo, Jade de prefetch pede uma requisio memria para
ler o prximo byte da seqncia trues. Os bytes udos so armazenados em uma fila,
na memria de rascunho superior.
um novo byte de instruo necessrio, ele pego da fila.
tamanho da fila um parmetro de projeto interessante. Se for muito pequeno, a CPU
qentemente parar, esperando por um byte da memria. Entretanto, ser muito grande
:m no bom. A unidade de prefetch no sabe o que os bytes que ela busca
significam;
172 ORGANIZAO ESTRUTURADA DE COMPUTADORES
o
o.
o,
o
o,
o)
o
a)
c
o
o,
a)
(1)
Fig. 4.31 Um diagrama altamente simplificado das vias de dados do 8088.
ela apenas busca o prximo, desde que haja espao na fila. Em particular, depois de
um mesmo um incondicional, ela continua a buscar bytes que no sero utilizados. Se
a muito grande, a unidade de prefetch vai desperdiar substancial passagem pelo
barramento bt bytes depois de instrues de desvio, O 8086 tinha uma fila de 6
bytes, mas isso foi rt para 4 bytes no 8088. Alm da largura do barramento, esta
a nica diferena entre e o 8086.
O NVEL DE MICROPROGRAMAO 173
lm das vias de dados, o 8088 contm uma seo de controle que annazena o
microprograma ola as vias de dados (veja a Fig. 4.32). Quando uma nova instruo do
nvel de mquina icional iniciada, seu byte de opcode tirado da fila de
instrues e carregado no IR ction Register, ou registrador de instrues).
unidade de hardware denominada decodificador de grupo na Fig. 4.32 extrai
informao e a espalha pela mquina Os registradores M e N pegam campos que so
usados no dos endereos dos operandos fonte e destino. O registrador X guarda a
informao de
, que utilizada para dizer ALU que funo realizar. O decodificador de grupo
tambm
o bit de byte/palavra do opcode. Este bit controla se as operaes da ALU devem ser
ura de 8 ou 16 bits, e se as transferncias de e para a memria de rascunhos so de
bits.
microinstrues tm largura de 21 bits. Um total de 504 delas necessrio, e elas
nazenadas em uma ROM de 504 x 21 na seo de controle. Quando uma instruo de ia
buscada, uma PLA converte o opcode nc endereo inicial do microcdigo que trata
instruo. Diferente de nossos exemplos, nos quais as instrues so inspecionadas
bit nenhuma decodificao por software est presente. Ela completamente realizada
por ire, para economizar tempo.
microcdigo dividido em burst ( .ncias) de at 16 microinstrues, cada burst
manipu uma ou mais instrues de mquina ou provendo um procedimento de servios
gerais, io clculo de endereos. Dois tipos de microdesvios esto presentes: os
curtos, para desviar do burst corrente (endereo de 4 bits), e os longos, para
desviar para qualquer lugar do microprograma. Chamadas de microprocedimentos tambm
existem e so similares os longos, exceto que eles depositam seu endereo de
retorno no registrador SR (Subroutine ou retorno de sub-rotina). Microprocedimentos
no podem ser aninhados. Ao todo. 1 de 504 palavras contm cerca de 90 bursts, com
uma mdia de 5 ou 6 palavras cada.
estratgia geral para interpretar muitas das instrues aritmticas e lgicas
como se Primeiro, um microprocedimento chamado para realizar o clculo do
endereo. Este usa os registradores M e N, que j contm os campos de registradores
fonte e destino,
Registradores de
Da fila retorno de sub-rotina
de
instrues
Para o
controle
da ALU
Byte/palavra
Diagrama altamente simplificado da seo de controle do 8088.
174 ORGANIZAO ESTRUTURADA DE COMPUTADORES
quando apropriado. Quando o microprocedimento de calculo de endereo retorna, os or
esto disponveis em posies fixas, e o registrador X contm o cdigo da ALU para
esta i de mquina (colocado l pelo hardware). O procedimento principal agora
executa um vias de dados, com os operandos e o cdigo de funo da ALU vindos dos
registrado no precisa nem mesmo saber que operao ele est realizando. Desta
maneira, ADI AND, OR e muitas outras instrues podem compartilhar o mesmo
microcdigo. apesar d rem diferentes operaes. Naturalmente, PUSH, CALL e JMP so
completamente dii e cada um requer seu prprio microcdigo.
Uma microinstruo tpica do 8088 mostrada na Fig. 4.33(a). Ela tem duas par so
executadas em paralelo. A parte da esquerda, consistindo em dois campos de 5 hits,
que toda microinstruo realize uma transferncia de registrador para registrador.
Os 32 dores que podem ser utilizados como fonte e destino so os registradores de 8
e 16 duas memrias de rascunho e os registradores temporrios.
A parte da direita uma microinstruo de 11 bits codificada verticalmente, cor
nos campos de tipo, cdigo da ALU, registrador e cdigo de condio. Seis tipos de
microii esto presentes, como listado na Fig. 4.33(b). Eles so distinguidos pelo
campo TIPO as microinstrues tm 10 bits para mover o contedo de um registrador
fonte para um re destino, mas o formato dos 11 bits inferiores varia ligeiramente
de tipo para tipo.
O cdigo da ALU pode ordenar que uma funo especfica seja realizada, ou ir
ALU para usar o cdigo do registrador X. O campo de 3 bits de registrador fornece o
o
e o bit final diz se os cdigos de condio devem ou no ser estabelecidos. Cada
microii
executada em um nico ciclo de relgio, de modo que no possvel mover um
memria de rascunho para um registrador TMP, e ento usar aquele registrador como
um 01
da ALU no mesmo ciclo.
Desvios longos e chamados de microprocedimentos criam um problema, na medida eles
requerem mais bits para designar o destino do que est disponvel na microinstri
soluo usar uma ROM de traduo, que mapeia endereos de 5 bits em endereos co
do microprograma. Desvios longos e chamadas usam endereos de 5 bits para indicar
que eles querem. E claro que esta estratgia significa que apenas 32 endereos
podem ser o de um desvio ou chamada, mas isso suficiente.
4.6.2 A Microarquitetura do Motorola 68000
Como um segundo exemplo de microarquitetura de uma mquina real, vamos dar um
olhada no Motorola 68000 (Stritter e Tredennick, 1978). O 68000 uma pastilha
ligeii maior que o 8088, contendo espao ptencial para 68000 transistores (da o
seu nome), apenas cerca de 40000 sejam utilizados, sendo o resto do espao ocupado
por fios e por ai
Mencionamos a considerao de se o 68000 uma mquina de 16 ou 32 bits antt
questo aparece novamente na microarquitetura. As vias de dados principais so
mostr
Fig. 4.34.
Como pode ser visto, as "vias de dados" so, de fato, trs vias de dados de lar 16
bits separadas, cada uma das quais podendo operar independentemente das outra
paralelo. A parte da esquerda manipula os 16 bits superiores do clculo de
endereo.
do meio toma conta dos 16 bits inferiores do clculo de endereo. A parte da
direita operaes nos dados.
Operao da ALU
Bus 5 5 3 4 3 1 Operao de memria
Desvio curto
FONTE DEST ALu REO 1 Desvio longo
V Chamada de
/ microprocedimento
TIPO CC Administrao
(a) (b)
Fig. 4.33 (a) Formato da microinstruo da ALU do 8088. (b) Tipos de
microinstruo.
O NVEL DE MICROPROGRAMAO 157
Linhas de controle
ALUL SHL AMUX MAR RD MSLH
e da
instruo ALUH 1 SHH 1 NZ 1 AND 1 MBR WR MSLL
ADD
-1-
s
AND
+
+
MOVE
+
+
+
COMPL
+
+
+
-1-
LSHIFT
-
+
+
-+-
RSHIFT
+
+
+
GETMBR
+
+
+
+
TEST
-
+
BEGRD
+
+
+
BEGWR
+
+
-1-
+
CONRD
+
CONWR
+
+
NJUMP
-
+
ZJUMP
+
.
UJUMP
+
f
-
1.19 Os sinais de controle para cada opcode de microinstruo. Um mais significa
que o sinal est um espao significa que ele est desativado.
io, como ele carregado na memria de controle, e a verso em linguagem de
montagem, parece no texto.
3m geral, este microprograma mais simples que o primeiro, porque cada linha
executa IS uma operao. Como conseqncia, muitas das linhas do microprograma
original foram das em duas, trs ou mesmo quatro linhas neste. Outro aspecto do
projeto vertical que nta o nmero de microinstrues a falta de instrues de
trs endereos. Veja, por exemplo, has 22 e 27 do primeiro microprograma.
) microprograma original utiliza 79 palavras de 32 bits, para um total de 2528 bits
de armazena o de controle. O segundo utiliza 160 palavras de 12 bits, para um total
de 1920 bits. Essa na representa uma economia de 24% na memria de controle. Para
um computador de iinica pastilha, ela tambm representa uma economia de 24% da rea
da pastilha necessria a memria de controle, o que o torna mais fcil e mais
barato para fabricar. A desvantagem aa memria de controle menor a necessidade de
executar mais microinstrues para cada )inStruO. Geralmente, isso torna a
mquina mais lenta. Conseqentemente, mquinas rpi caras tendem a ser horizontais,
e mquinas lentas e baratas tendem a ser verticais.
existncia de microinstrues altamente codificadas, como em Mic-2, levanta algumas
questes filosficas sobre o que microprogramao. O conjunto de microinstrues
da 1.17 poderia quase passar por um conjunto de instrues de uma linguagem de
mquina 'ncional de um mmi- ou microcomputador muito simples. O PDP-8, por exemplo,
um omputador com uma palavra de 12 bits cujas instrues no so muito mais
poderosas stas. Considerando que o "significado" das instrues est muito embutido
no hardware cuito ou PLA que implementa o decodificador OP), poder-se-ia argumentar
que o Mic-2 ealidade, uma mquina no microprogramada que, por acaso, tem um
programa interpretador executado nela para outra mquina. Se o microprograma para a
mquina vertical estivesse enado na memria principal (como no IBM 370/145, por
exemplo), ento a distino entre
158 ORGANIZAO ESTRUTURADA DE COMPUTADORES
0: mar : = pc rd 28: rir = lshifr (rir :
1: rd; if n then goto 40:
: C + 1; 29: rir : /shifr (rir):
2: ir : mbr; ifn then goto 35:
rir : Ishifr(ir): 30: alu : rir.
if n then goto 28; if n then goto 33:
3: tir : lsh
if n then goto 19: 31: a : = ir {LODL}
4: rir : lshifr(rir); a : a + sp:
if n then goto 11: 32: mar : = a: rd:
5: alu : rir; rd;
if n then goto 09: ac : = mbr:
6: mar : = ir; rd; {LODD} goto 0.
7. rd 33: a : ir; STOL}
8. UC . = mnbr. a : = a + sp:
goto 0; 34: mar : a: mhr : a : wr
9: mar := ir; mbr : aC: wr; {STOD wr;
10: wr; goto 0:
goto 0:
35: alu : rir;
II. alu . rir. if n then goto 38;
if n then goto 15:
12: mar : ir: rd: {ADDD 36: a : ir: {ADDL}
13: rd: a : a + sp:
14: a : = mhr; 37: mar : = a: rd;
uC:= a + a; rd;
goto 0: a : ,nbr;
15: mar : ir: rd; {suBD} a : aC + a.
16: rd; goto 0:
99: ac : aC + 1; 38: a : ir: SUBL}
17:a:=mbr: a:=a+sp;
a : = i,iv (a ): 39: mar : = a ; rd;
18: ac : aC + a: rd;
goto 0; goto 99:
19: rir : lshifr (rir): 40: tir : l.shifr (rir);
if n then goto 25: if n then goto 46;
20: alu : rir: 41: alu : rir:
if n then goto 23: i n then goto 44:
21: alu : aC; {JPOS} 42: alu := aC; {JNEG}
if n then goto 0: if n then goto 22:
22: PC : = ir; 43: goto 0;
band (pC , amask):
goto 0; 44: alu : = aC: JNZE}
if: then goto 0:
23: alu : aC: {JZER} 45: C := ir:
if z then goto 22: : hand (pC . amask):
24: goto 0: goto 0:
25: alu : = rir; 46: rir : = Ishift (tir
if n then goto 27; if n then goto 50:
26: C : ir; {JUMP} 47: sp : sp + ( H: {CALL
pC:band 48: mar: sp:mbr:=pC:wr:
goto 0:
49: C : ir;
27: UC : ir: LoCO} C : hand lpC , amask):
aC : band(aC, amask): goto 0;
goto 0;
Fig. 4.20 O microprograma para Mic-2.
O NVEL DE MICROPROGRAMAO 159
50: rir : Ishift(tir ); 64: ac : ,nbr
if n then goto 65; goto 0;
51: rir : lshift (rir);
65: rir : L
if n then goto 59;
if n then goto 73;
52: ala : rir;
66: ala : rir;
if n then goto 56,
if n then goto 70;
53: mar : = ae; rd; {PSHI}
67: mar:=sp;rd;{RETN}
rd, 68: rd;
54: vp : ip + ( 1;
55: a:=mhr;
69: pc:=mbr;
mar : = .vp mhr : = a ; ar;
goto 0;
goto 0; 70: a : = ac; {SWAP}
56: mar:=sp;rdHPOPI} ac:=sp.
57: rd;
goto 0;
sp : sp + 1;
73: ala : rir;
58. a . mbr if n then goto 76;
mar : = ac ; mbr : = a ; ar;
wr; 74: a : = ir; {INSP}
goto 0; a : hand(a smask);
59: alu : rir; 75: .sp : sp + a,
if n then goto 62; goto 0;
60: sp := sp + (-1):{PUSH} 76: a : ir; {DESP
61: mar:=sp:mbr:=ac;wr; a:=hand(a ..srnask;
ar; 77: a : inv(a);
goto 0; 78: a := a + 1;
sp : sp + a;
62: mar := sp; rd; {POP} goto 0;
63: rd;
sp + 1;
.20 (cont.)
mquina microprogramada altamente vertical e uma hardwired (atravs de
interligaes s) fica ainda mais difcil. Para um tratamento mais completo de
codificao e paralelismo icrocdigo. veia Dasgupta (1979).
Nanoprogramao
)s projetos discutidos at agora tm tido duas memrias: a memria principal (usada
para enar o programa de nvel 2) e a memria de controle (usada para guardar o
microprograma). terceira memria, a rianomemria, torna possvel interessantes CO
entre micropro Io horizontal e vertical. Nanoprogramao adequada quando muitas
microinstrues m vrias vezes, O microprograma da Fig. 4.16 no possui essa
propriedade. A microinstruo corre mais comumente aquela que contm apenas rd, e
isso ocorre somente cinco vezes.
Fig. 4.21 ilustra o conceito de nanoprogramao. Na parte (a), mostrado um
micropro 1 de n microinstrues, cada uma com w hits de largura. Um total de nw
hits de memria ntrole necessrio para armazenar o microprograma. Suponha que um
estudo cuidadoso icroprograma revelou que apenas m microinstrues diferentes das
2" possibilidades so ente usadas, com m " o. Uma nanomemria especial com m
palavras de w hits poderia ada para armazenar cada uma das microinstrues. Cada
microinstruo do programa original ia ento ser substituda pelo endereo da
palavra da nanomemria que contm aquela mi ;truo. Como s existem m palavras na
nanomemria, a memria de controle precisaria na largura de apenas log. rn
(arredondado para cima para um inteiro) hits. como mostrado . 4.21(b).
) microprograma executado como se segue. A primeira palavra huscada da memria
160 ORGANIZAO ESTRUTURADA DE COMPUTADORES
-e---- w bus 109
1 1
4 wbits
m Nanoprograma
(a) (b)
Fig. 4.21 (a) Um microprograma convencional. (b) O nanoprograma correspondente se
apenas m mi
trues diferentes ocorrem no microprograma.
de controle. Ela ento usada para selecionar uma palavra da nanomemna, que bt
e colocada no registrador de microinstruo. Os bits desse registrador so ento
usado controlar as portas lgicas durante um ciclo. No final do ciclo, a prxima
palavra bt da memria de controle, e o processo se repete.
Como um exemplo, suponha que o microprograma original tivesse 4096 x 100 bits que
existissem apenas 128 microinstrues diferentes. Uma nanomemria de 128 x 100 bit
suficiente para armazenar todas as microinstrues necessrias. A memria de
controle ento com 4096 x 7 bits, com cada palavra apontando para uma
nanoinstruo. A eco:
de memria, neste exemplo, dada por:
economia = 4096 x 100 - 4096 x 7 - 128 x 100 = 368.128 bits
O preo que se paga pela economia de memria de controle a execuo mais ler
mquina com dois nveis de memria de controle funcionaria mais lentamente que a or
pois o ciclo de busca agora requer duas referncias a memria, uma para a memria
de co e outra para a nanomemria. Estas duas buscas no podem ser sobrepostas.
Nanoprogramao mais efetiva quando as mesmas microinstrues so altamente utili
Se duas microinstrues que so quase a mesma pudessem ser contadas como sendo real
a mesma, o microprograma conteria uma quantidade menor de microinstrues distintas
uma com uma freqncia de uso mais alta. Uma variante desta idia bsica permite
exatai isso. Palavras na nanomemna podem ser parametrizadas. Por exemplo, duas
microinsti podem diferir apenas no campo que diz qual registrador deve ser
conectado a algum barran Colocando o nmero do registrador na memria de controle,
em vez de na nanomemri , colocando zeros no campo de registrador das
nanoinstrues), as duas microinstrues pod ambas apontar para a mesma
nanopalavra. Quando a palavra buscada e colocada no regis de microinstruo, o
campo de registrador pego da memria de controle, em vez de da nai mria. A
montagem do registrador de microinstruo parcialmente a partir da memria de co e
parcialmente a partir da nanomemria obviamente requer hardware especial, mas este
tem de especialmente complexo. claro que o uso desta tcnica aumenta a largura da
me de controle, que pode ser maior do que o ganho obtido por ter uma nanomemria
menor.
4.5.3 Melhorando o Desempenho
Embora o objetivo da nanoprogramao seja reduzir o tamanho da memria de coi mesmo
ao preo de uma execuo mais lenta, muito tempo e esforo foram gastos na d
inversa: tentando acelerar a execuo, mesmo ao preo de mais memria de controle.
dois objetivos de projeto, aparentemente incompatveis, visam a interesses
comerciais dife
O NVEL DE MICROPROGRAMAO 161
)duo de mquinas baratas e produo de mquinas rpidas. Nesta seo, enfocaremos
as das maneiras como a microarquitetura direta de nossos exemplos pode ser
modificada azer as mquinas trabalharem mais rapidamente.
i agora, tacitamente assumimos que todos os quatro subciclos tinham a mesma
durao. esmo tempo que esta abordagem simplifica, ela raramente resulta num
desempenho timo, variavelmente um dos quatro gasta mais tempo que os outros trs.
Ter todos os subciclos durao do pior caso torna a mquina mais lenta. A maneira
de sanar esse problema nitir que cada subciclo tenha uma durao independente dos
outros. Desta forma, a durao Ia ciclo pode ser a quantidade de tempo necessria
para realizar o trabalho, e no mais.
mbora seja este um passo na direo correta, ele ainda muito conservador, pois a
durao la subciclo ainda determinada pelo pior caso daquele subciclo. Considere,
por exemplo, rido 3 de nossos exemplos. Se a operao da ALU uma adio, a ALU
provavelmente a de mais tempo (devido aos atrasos dc propagao de vai-1) do que se
a operao fosse nente selecionar A. Se o tempo dedicado ao subciclo 3 uma
constante determinada quando
luina projetada, ele tem que ser o tempo de adio, e no o tempo de seleo de
A.
estratgia alternativa deixar que o tempo do subciclo seja determinado pela
operao [ a ser realizada, de modo que ele seja to curto quanto possvel.
Jma vez que decidimos permitir que cada subciclo dependa da operao, precisamos
encontrar naneira de implementar esta estratgia. Tornar o relgio mais lento ou
aceler-lo tecnica difcil, de modo que, em vez disso, um relgio mestre com um
perodo mais curto que L do subciclo usado. Cada subciclo dura ento um
determinado nmero de pulsos. templo, se o tempo da ALU puder variar entre 75 e 150
ns, um relgio mestre com perodo ns pode ser usado, com o subciclo consumido entre
trs e seis perodos.
)utra questo : Como a mquina sabe qual a durao do subciclo? Duas tcnicas
podem ilizadas para respond-la. Na primeira, a prpria microinstruo contm um ou
mais campos ornecem explicitamente a temporizao. A outra deduzir a temporizao
baseando-se ampos de operao (usando uma PLA), da mesma maneira que todos os
outros sinais ntrole foram gerados na mquina vertical. A primeira abordagem custa
bits da memria trole, e a segunda custa lgica de decodificao e tempo.
)utra maneira de obter melhor desempenho da mquina aumentar a flexibilidade dos
desvios condicionais. Como um exemplo, considere uma macroinstruo SKIP LESS, que
ara AC com uma palavra de memria e salta a prxima macroinstruo se AC for
numerica menor. Fazer a comparao requer a subtrao da palavra de memria de (uma
cpia
C, que pode resultar num overjlow, como ilustrado na Fig. 4.22.
)evido potencialidade de overflow, no podemos dizer qual operando era menor
simples-
olhando para o bit de sinal do resultado. No quarto exemplo da Fig. 4.22, AC
menor memria, mas AC - memria positivo. A condio correta a ser testada N
EXCLUSIVE /, onde V indica a presena ou ausncia de overflow. (O hardware ativa o
bit V sempre vem-1 para o bit de sinal difere do vai-1 do bit do sinal.)
elizmente, a maioria das ALUs gera no apenas N e Z, mas tambm V e C (carry) .
Entretanto, nas quatro desvios condicionais esto disponveis para o
microprogramador, um para cada NZVC, a macroinstruo SKIP LESS iria requerer
muitas microinstrues. Para prover flexibilidade, muitas mquinas no possuem a
capacidade de testar individualmente bits Uus da ALU. Em vez disso, um nico bit da
microinstruo realiza um OR de NZVC )s 4 bits de baixa ordem do campo ADDR, e o
desvio feito. Alguns exemplos so dados . 4.23. Se os 4 bits de baixa ordem so
todos iguais a 0, isso se torna um desvio condicional
AC 000100 000100 077777 100001 000010
Mem 000050 170000 177775 000010 100001
000030 010100 100002 077771 100007
N=0 N=0 N=1 N N=1
v=0 v=0 v=1 v=1 v=1
.22 Alguns exemplos de subtrao de 16 bits em complemento de dois, com octal. Os
bits N e V ada resultado tambm so mostrados.
162 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Campo Desviar para
ADDR NZVC endereo
10000000
1001
10001001
10001000
1001
10001001
10001011
1001
10001011
10001011
1000
10001011
10001011
0000
10001011
10001111
0000
10001111
10001111
1100
10001111
10000000
1100
10001100
Fig. 4.23 Alguns exemplos de desvios de mltipla escolha baseados em NZVC.
de 16 possibilidades. Se forem todos iguais a 1, o desvio do tipo incondicional
para um en
especfico terminando em 1111.
Com esta facilidade, a instruo SKIP LESS fica muito mais fcil de ser
interpretada. E mos um campo ADDR terminando em 0101, por exemplo, 10000101
(binrio), e exec o desvio. As microinstrues em 10001101 e 10000111 lidam com
desvios que tm succ aquelas em 10000101 e 10001111 lidam com desvios que falham.
Nenhuma decodificao ad necessria. Poderamos tambm ter utilizado um endereo
base terminando em 0000 de 0101, mas estes so de enorme valor, pois so os nicos
disponveis para desvios condii de 16 possibilidades. Portanto, eles no devem ser
escolhidos despreocupadamente.
Deve estar claro que, com esse tipo de controle de seqncia de microinstruo, a
local das microinstrues na memria de controle torna-se uma verdadeira dor de
cabea. A pr microinstruo executada depois de um desvio condicional de 16
possibilidades deve cont prpria, um desvio incondicional, pois a palavra que a
segue (exceto para a ltima) em uso como um possvel destino do desvio. Para onde
cada microinstruo deve desviar? mente, no para um endereo da forma xxxx0000,
pois eles so muito valiosos, mas to outros endereos, exceto aqueles da forma
xxxxllll, tambm podero ser necessrios mai ou mais tarde. A deciso deve ser
feita cuidadosamente, para evitar esgotar algum tipo de enc Uma vez consumidos
todos os endereos pares, por exemplo, no ser mais possvel tt bit C, de modo que
a escolha de endereos deve ser feita com muito cuidado.
4.5.4 Pipelining
Outra maneira de acelerar a mquina construir o hardware a partir de vrias un
funcionais e coloc-las como numa linha de montagem. Na Fig. 2.5, vimos como um p
de cinco unidades funciona. Na Fig. 4.24, vemos que, se a instruo 1 buscada no
c ela ser executada no ciclo 5. Similarmente, se a instruo 4 buscada no ciclo
(isto , de tempo) 8, decodificada no ciclo 9, e assim por diante, ela ser
executada no ciclo 1 condies timas, da para frente uma instruo executada a
cada ciclo, dando uma taxa de execuo de uma instruo por ciclo, em vez de uma
instruo a cada cinco ciclos.
Infelizmente, estudos mostraram que cerca de 30% de todas as instrues so des'
estes causam dano ao pipeline. Desvios podem ser classificados em trs categorias:
incondic condicionais e loop. Um desvio incondicional diz ao computador para parar
de buscar inst consecutivamente, e ir para algum endereo especfico. Um desvio
condicional testa alguma o e desvia se a condio satisfeita. Um exemplo tpico
uma instruo que testa registrador e desvia se o registrador contm zero. Se o
registrador no contm zero, o no feito e o controle continua na seqncia
corrente.
Instrues de loop tipicamente decrementam um contador de iterao, e ento desvi
volta ao incio do loop se ele diferente de zero (isto , ainda existem mais
iteraes a
O NVEL DE MICROPROGRAMAO 163
Ciclo
1 2 3 4 5 6 7 8 9 10 11
a de instruo
1
2
B
4
5
6
7
8
9
)dificao de ruo
1
2
B
4
5
6
7
8
ulo de endereo
1
2
B
4
5
6
7
de operando
1
2
B
4
5
6
uo
1
2
B
4
5
.24 Um pipeline de cinco estgios. Os nmeros so usados para rotular as
instrues. A instruo da B um desvio condicional.
). Instrues de ioop so um caso especial importante de desvios condicionais, pois
conhecido ri que elas quase sempre tm sucesso.
onsidere o que acontece com o pipeline da Fig. 4.24 quando uma instruo de desvio
cional, marcada B, encontrada. A prxima instruo a ser executada pode ser a que
ue ao desvio, mas pode tambm estar no endereo para o qual deve ser desviado o
controle, ado de destino do desvio. Como a unidade que busca a instruo no sabe
qual at que vio seja executado, ela pra, e no pode ir adiante at que o desvio
tenha sido executado. eqentemente, o pipeline esvazia. Somente depois do ciclo 7
ter sido completado que e qual a instruo que vem a seguir.
) desvio efetivamente causou a perda de quatro ciclos, chamados de penalidade do
desvio.
uma entre cada trs instrues sendo um desvio, fica claro que a perda de
desempenho stancial.
3rande quantidade de pesquisa tem tratado do problema de recuperar algum desse
desem D (DeRosa e Levy, 1987; McFarling e Hennessy, 1986; Hwu et ai., 1989; e
Lilja, 1988). isa mais simples a fazer assumir que o desvio no ser realizado, e
apenas continuar ndo o pipeline, como se o desvio fosse uma simples instruo
aritmtica. Se acontecer desvio realmente no foi realizado, no perdemos nada. Se
for, teremos que apagar as ies atualmente no pipeline, algo chamado squashing, e
comear de novo.
quashing causa problemas prprios. Em algumas mquinas, como um subproduto do
clculo tdereo, um registrador pode ser modificado. Se a instruo sendo apagada
modificou um ais registradores, estes devem ser restaurados, o que significa que
deve haver um mecanismo ardar seus valores originais.
instrutivo fazer um modelo simples da perda de desempenho.
Seja P, a probabilidade de que uma instruo seja um desvio.
Seja P, a probabilidade de que o desvio seja realizado.
Seja b a penalidade do desvio.
i mdio de execuo (em ciclos) pode ser calculado como a soma ponderada dos dois
instrues comuns e instrues de desvio.
tempo mdio de instruo = (1 - P.)(1) + P + b) + (1 - P)(1)J
rna lgebra revela que o tempo mdio de instruo 1 + bPJP A eficincia da
execuo o 1/(1 + bP Com b = 4, P = 0,3 e P = 0,65 (um valor tpico medido), a
mquina lha a menos de 60% de sua velocidade potencial.
) que se pode fazer para melhorar o desempenho? Para comear, se pudssemos
predizer te maneira cada desvio seria realizado, poderamos buscar a instruo
adequada e eliminar alidade. Em nossa frmula para a eficincia, podemos ento
substituir P por P, a probabi e de adivinhar errado.
164 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Dois tipos de previso so possveis: esttica (tempo de compilao) e dinmica de
execuo). Com previso esttica, o compilador faz uma suposio a respeito de cada
in de desvio que ele gera. Com instrues de ioop, por exemplo, adivinhar que ela
ir de volta ao incio o correto na maioria das vezes. Durante o teste de uma
condio impi como uma chamada de sistema retornando um cdigo de erro, a no
realizao do d o que tem mais chance. Em muitos casos, instrues diferentes so
usadas para esse e somente olhando para o opcode temos uma pista substancial.
Um esquema mais elaborado que os projetistas da mquina providenciem dois para
cada tipo de desvio, e que o compilador use o primeiro se ele achar que o des
realizado, e o segundo, caso contrrio. Alternativamente, para programas que so
muito uti o programa pode primeiro ser executado em um simulador, e o comportamento
de cada ser realmente guardado. Ento, o programa binrio pode ser alterado,
substituindo cada com o opcode apropriado (provavelmente ser
realizado/provavelmente no ser realizadc
O outro mtodo de previso o dinmico. Durante a execuo, o microprograma uma
tabela dos endereos contendo desvios e mantm informaes a respeito do comport de
cada um. Este mtodo tende a tornar a mquina mais lenta por causa da manuten
registro, de modo que alguma ajuda de hardware pode ser necessria. Medies
mostran a obteno de 90% de acerto desta maneira no difcil.
A previso de desvios no o nico meio de ataque. Outro tentar determinar
maneira ser o desvio antecipadamente no pipeline. Alguns testes, como desvios se
igu muito mais fceis de fazer do que desvios se menor que. O primeiro pode ser
feito ci comparador, enquanto o ltimo requer um ciclo completo pelas vias de dados
para faz subtrao. Com esta tcnica, sempre que um desvio for encontrado, o
microprograma uma rpida verificao num estgio inicial do pipeline para ver se
ele pode resolver o imediatamente. Se puder, ele sabe onde continuar buscando.
Compiladores podem fazer muito para ajudar. Por exemplo, quando o programador um
loop fazendo i variar de 1 a 10, o compilador pode testar i para ver se i igua em
vez de ver se ele menor que 11, de modo que o microprograma pode realizar uma
com em vez de uma subtrao.
Para tratar aqueles desvios que no podem ser resolvidos antecipadamente, o com
pode tentar encontrar alguma coisa til para o computador fazer enquanto estiver
esp que o desvio seja executado. Considere a Fig. 4.25(a), um comando aritmtico
seguido i teste. Um compilador com otimizao muito inteligente poderia produzir
cdigo como 1 4.25(b), que no vlido em Pascal, mas mostra a ordem dos eventos.
Ele primeiro gera para realizar o teste, depois realiza a operao aritmtica.
Depois que o desvio entrou nop muitas instrues comuns se seguem. Estas devem ser
feitas de qualquer jeito, de moi no h necessidade de fazer uma previso e no h
necessidade de fazer squashing. Pai esta tcnica efetivamente, os
microprogramadores e os escritores de compiladores devem tr juntos durante o
projeto.
Se tudo o mais falhar, sempre h a possibilidade de seguir dois caminhos em paralel
requer dois pipelines no hardware e no elimina o problema de squashing. Ainda nos
computadores, onde a considerao o desempenho e no o preo, este mtodo a
vezes utilizado. E claro que, se qualquer caminho encontrar outro desvio pela
frente ani o primeiro seja resolvido, a vida fica ainda mais complicada. Ter
algumas dzias de pi por a para tratar do pior caso provavelmente no uma boa
idia.
Depois de toda essa teoria sobre o que se poderia fazer, vamos voltar nossa m
exemplo por um momento. Ela no tem unidades de hardware distintas para buscar,
deco
a:=b+c; Ilb<c
Ifb<c a:=b+c;
then comando; then comando;
(a) (b)
Fig. 4.25 (a) Um trecho em Pascal. (b) Como o compilador poderia trat-lo.