Você está na página 1de 472

ORGANIZAO ESTRUTURADA

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.

O captulo 1 agora contm uma viso histrica de arquitetura de computadores,


mostrando como amos no ponto em que estamos e quais foram os marcos ao longo do
caminho.

No captulo 2, o texto sobre dispositivos de entrada/sada foi completamente


refeito, enfatizando os dispositivos modernos, tais como terminais bit-map, mice*
e impressoras laser.

O captulo 3 (o nvel de lgica digital) sofreu uma reviso substancial, e agora


trata de barramentos de computadores e pastilhas
modernas de EIS. Tanto o barramento do IBM PC tanto o VME so descritos em detalhe.
As famlias Intel e Motorola so introduzidas aqui. somente, o funcionamento
interno de um clone tpico do IBM PC descrito a nvel de pastilha, diagrama de
circuito dado e longamente discutido. O assunto apresentado gradativamente, de
modo que um leitor sem conhecimento prvio de eletrnica ser capaz de terminar o
captulo tendo
uma boa idia de como um PC tpico funciona internamente.

O captulo 4 (o nvel de microprogramao) contm um exemplo detalhado do que


microprogramao e de como ela funciona. Este exemplo se tornou bastante popular
entre os leitores
i deixado intacto. Entretanto, foi includo um texto a respeito da melhora de
desempenho,
ouse, 2 mice, 3 rnice, (N. do T.)
tratando de pipeline e memria cache. Finalmente, um material raramente visto sobre
as rnicroar quiteturas das pastilhas Intel 8088 e Motorola 68000 apresentado e
discutido.

O captulo 5 (o nvel convencional de mquina) trata do que muitas pessoas chamam


de
"linguagem de mquina". Uma vez que as pastilhas Intel e Motorola so usadas como
os principais
exemplos nesta edio, elas so descritas aqui em detalhe considervel,
especialmente o 80386
e o 68030.

O captulo 6 (o nvel de mquina do sistema operacional) foi reorganizado para


deixar a ordem do texto mais didtica. Os sistemas operacionais utilizados como
exemplo so o UNIX e o OS/2. O UNIX largamente conhecido, mas o OS/2 contm uma
quantidade surpreendente de caractersticas no presentes no UNIX, valendo a pena
examin-las.

O captulo 7 (o nvel de linguagem de montagem) foi atualizado atravs do uso de


exemplos das mquinas que estivemos estudando, mas no sofreu muitas mudanas no
contedo.
Em contraste, o captulo 8 (arquiteturas avanadas de computadores) foi
completamente reescrito. Este captulo totalmente novo trata de idias promissoras
em arquitetura de computadores, focalizando dois tpicos. O primeiro so as
mquinas RISC. Tanto a teoria quanto a prtica destes importantes novos
computadores so cobertas. Como primeiro exemplo discutida a pastilha SPARC,
projetada pela Sun Microsystems. Esta pastilha, amplamente utilizada, baseada nas
pastilhas RISC 1 e RISC II de Berkeley, que foram extensivamente descritas e
discutidas em jornais tcnicos e na imprensa. Depois da SPARC discutimos as
pastilhas MIPS R2000/R3000. Elas so comparadas e contrastadas com a SPARC em
vrios aspectos, de modo a fornecer ao leitor discernimento para avaliar as vrias
decises de projeto que existem.

O segundo maior tpico deste novo captulo se refere a computadores paralelos e


multipro cessadores. Assim como as mquinas RISC, estes computadores esto
comeando a ser amplamente utilizados e tm um futuro brilhante. Qualquer pessoa
interessada em arquitetura de computadores deve conhec-los. Vrios tipos
diferentes so discutidos, incluindo tanto SIMD quanto MIMD. Ambos so ilustrados
com uma srie de exemplos prticos, que incluem hipercubos, Transputers, sistemas
baseados em barramento como o Firefly da DEC, o Ultracomputer, a Mquina Connection
e os supercomputadores Cray.
A bibliografia e os apndices foram revisados e atualizados. Em particular, o
padro de
ponto flutuante do IEEE discutido no apndice B.
Finalmente, muitos problemas foram revisados desde a segunda edio. Com isto, um
novo
manual de soluo de problemas est disponvel pela Prentice-Hall, Inc.
O Prof. Paul Amer, da Universidade de Delaware, escreveu um conjunto de ferramentas
(montadores, disassemblers, simuladores etc.) de acordo com os exemplos de
microprogramao
do captulo 4. Pessoas interessadas devem contact-lo pelo email em
ameradewey.udel.edu.
Vrias pessoas leram os manuscritos e deram sugestes teis. Devo especialmente a
Jennifer Steiner pelo grande nmero de valiosos comentrios e por encontrar erros
que outros no detectaram. Stephen Hartley, Alistair Holden, Joseph Hughes, Bob
Hummel, Susan Flynn Hummel, Kevin Kitagawa, John McCabe, Ron McCarty, John Mashey,
Ann Milier, M. Taghi Mostafavi, Mark Niedelman, Thomas Stevens, Bruce Suter, David
Todd, Charles Williams e Charles Zahn tambm fizeram numerosos comentrios de
grande auxlio, pelos quais sou grato. Meus alunos, especialmente Jeroen Belien,
Michel Oey, Eigon Willems e Niels Willems, tambm ajudaram a depurar o texto.
Finalmente, gostaria de agradecer novamente a Suzanne pela sua pacincia por minhas
longas horas em frente ao meu PC/AT. Do meu ponto de vista, o PC/AT um grande
avano sobre o meu antigo PC/XT, mas do dela isto no faz muita diferena. Gostaria
tambm de agradecer a Barbara e Marvin por executarem a primitiva sleep (dormir)
cerca de uma hora antes do horrio combinado, dando-me a oportunidade de "brincar
com o computador" toda noite. Finalmente, gastaria de expressar minha esperana de
que Bram seja mais parecido com Sweetie ir do que com Fluffy.
ANDREW S. TANENBAUM
(parei aqui)
CONTEDO
INTRODUO, 01
1.1 LINGUAGENS. NVEIS E MQUINAS VIRTUAIS, 03
1.2 MQUINAS MULTINVEL CONTEMPORNEAS, 03
1.3 EVOLUO DAS MQUINAS MULTINVEL, 06
1.4 HARDWARE, SOFTWARE E MQUINAS MULTINVEL, 08
1.5 MARCOS DO DESENVOLVIMENTO DA ARQUITETURA DE COMPUTADORES, 10
1.5.1 A Gerao Zero - Computadores Mecnicos (1642-1945), 10
1.5.2 A Primeira Gerao - Vlvulas (1945-1955), 12
1.5.3 A Segunda Gerao Transistores (1955-1965), 14
1.5.4 A Terceira Gerao Circuitos Integrados (1965-1980), 15
1.5.5 A Quarta Gerao Computadores Pessoais e VLSI (1980-199?), 17
1.5.6 A Famflia Intel, 18
1.5.7 A Famlia Motorola, 19
1.6 VISO GERAL DESTE LIVRO, 21
ORGANIZAO DE SISTEMAS DE COMPUTADORES, 23
2.1 PROCESSADORES, 23
2.1.1 Execuo de Instrues, 24
2.1.2 Organizao da CPU, 25
2.1.3 Execuo Paralela de Instrues, 26
2.2 MEMRIA, 30
2.2.1 Bits, 30
2.2.2 Endereos de Memria, 31
2.2.3 Ordem de Bytes, 32
2.2.4 Cdigos de Correo de Erros, 34
2.2.5 Memria Secundria, 37
2.3 ENTRADA/SADA, 42
2.3.1 Terminais, 44
2.3.2 Modems, 47
2.3.3 O Mouse, 50
2.3.4 Impressoras, 51
2.3.5 Cdigos de Caracteres, 54
2.4 RESUMO, 55
3 O NVEL DE LGICA DIGITAL, 59
3.1 PORTAS LGICAS E LGEBRA BOOLEANA, 59
3.1.1 Portas Lgicas, 59
3.1.2 Algebra Booleana, 61
3.1.3 Implementao de Funes Booleanas, 62
3.1.4 Equivalncia de Circuitos, 64
3.2 CIRCUITOS BSICOS DE LGICA DIGITAL, 66
3.2.1 Circuitos Integrados, 67
3.2.2 Circuitos Combinatrios, 70
3.2.3 Circuitos Aritmticos, 75
3.2.4 Relgio (Clocks), 77
3.3 MEMRIA, 79
3.3.1 Latches, 79
3.3.2 Flip-Flops e Registradores, 81
3.3.3 Organizao de Memria, 82
3.3.4 Propriedades da Memria, 86
3.4 MICROPROCESSADORES E BARRAMENTOS, 88
3.4.1 Pastilhas Microprocessadoras, 88
3.4.2 Barramentos de Computadores, 90
3.4.3 Barramentos Sncronos, 92
3.4.4 Barramentos Assncronos, 94
3.4.5 Arbitragem de Barramentos, 95
3.4.6 Tratamento de Interrupes, 98
3.5 EXEMPLOS DE PASTILHAS MICROPROCESSADORAS, 99
3.5.1 As Pastilhas Microprocessadoras Intel 8088/80286/80386, 99
3.5.2 As Pastilhas Microprocessadoras Motorola 68000/68020/68030, 105
3.5.3 Comparao entre o 80386 e o 68030, 107
3.6 EXEMPLOS DE BARRAMENTOS, 108
3.6.1 O Barramento do IBM PC, 108
3.6.2 O Barramento do IBM PC1AT, 112
3.6.3 O Barramento VME, 113
3.7 INTERFACEAMENTO, 118
3.7.1 Pastilhas de Eis, 118
3.7.2 Decodificao de Endereo, 120
3.8 RESUMO, 123
4 O NVEL DE MICROPROGRAMAO, 128
4.1 REVISO DO NVEL DE LGICA DIGITAL, 129
4.1.1 Registradores, 129
4.1.2 Barramentos, 129
4.1.3 Multiplexadores e Decodificadores, 131
4.1.4 ALUs e Deslocadores, 132
4.1.5 Relgios (Clocks), 132
4.1.6 Memria Principal, 133
4.1.7 Encapsulamento de Componentes, 134
4.2 UM EXEMPLO DE MICROARQUITETURA, 135
4.2.1 As Vias de Dados, 135
4.2.2 Microinstrues, 137
4.2.3 Temporizao de Microinstrues, 139
4.2.4 Seqenciamento de Microinstrues, 141
4.3 UM EXEMPLO DE MACROARQUITETURA, 141
4.3.1 Pilhas, 142
4.3.2 O Conjunto de Macroinstrues, 144
4.4 UM EXEMPLO DE MICROPROGRAMA, 147
4.4.1 A Microlinguagem de Montagem, 148
4.4.2 Um Exemplo de Microprograma, 149
4.4.3 Comentrios sobre o Microprograma, 152
4.4.4 Perspectiva, 153
4.5 PROJETO DO NVEL DE MICROPROGRAMAO, 153
4.5.1 Microprogramao Horizontal versus Vertical, 153
4.5.2 Nanoprogramao, 159
4.5.3 Melhorando o Desempenho, 160
4.5.4 Pipelining, 162
4.5.5 Memria Cache, 166
4.6 EXEMPLOS DO NVEL DE MICROPROGRAMAO, 170
4.6.1 A Microarquitetura do Intel 8088, 170
4.6.2 A Microarquitetura do Motorola 68000, 174
4.7 RESUMO, 178
O NVEL CONVENCIONAL DE MQUINA, 182
5.1 EXEMPLOS DO NVEL CONVENCIONAL DE MQUINA, 182
5.1.1 A Famiia Intel 8088/80286/80386, 182
5.1.2 A Famflia Motorola 68000/68020/68030, 194
5.1.3 Comparando o 80386 ao 68030, 199
5.2 FORMATOS DE INSTRUES, 200
5.2.1 Critrios de Projeto para Formatos de Instrues, 201
5.2.2 Expandindo os Cdigos da Operao, 202
5.2.3 Exemplos de Formatos de Instrues, 203
5.3 ENDEREAMENTO, 208
5.3.1 Endereamento Imediato, 209
5.3.2 Endereamento Direto, 209
5.3.3 Endereamento de Registrador, 210
5.3.4 Endereamento Indireto, 210
5.3.5 Indexao, 212
5.3.6 Endereamento de Pilha, 212
5.3.7 Exemplos de Endereamento, 218
5.3.8 Discusso Acerca dos Modos de Endereamento, 225
5.4 TIPOS DE INSTRUES, 226
5.4.1 Instrues de Transferncia de Dados, 226
5.4.2 Operaes Didicas, 227
5.4.3 Operaes Mondicas, 228
5.4.4 Comparaes e Desvios Condicionais, 229
5.4.5 Instrues de Chamada de Procedimentos, 231
5.4.6 Controle de Loop, 231
5.4.7 Entrada/Sada, 232
5.5 FLUXO DE CONTROLE, 237
5.5.1 Fluxo de Controle Seqencial e Desvios, 237
5.5.2 Procedimentos, 238
5.5.3 Co-rotinas, 242
5.5.4 Traps (Armadilhas), 245
5.5.5 Interrupes, 246
5.6 RESUMO, 249
6 O NVEL DE MQUINA DO SISTEMA OPERACIONAL, 254
6.1 MEMRIA VIRTUAL, 256
6.1.1 Paginao, 256
6.1.2 Implementao de Paginao, 258
6.1.3 Paginao por Demanda e o Modelo de Conjunto de Trabalho, 262
6.1.4 Poltica de Substituio de Pginas, 264
6.1.5 Tamanhos de Pginas e Fragmentao, 265
6.1.6 Segmentao, 266
6.1.7 Implementao de Segmentao, 269
6.1.8 A Memria Virtual do MULTICS, 271
6.1.9 Memria Virtual no Intel 80386, 274
6.1.10 Memria Virtual no Motorola 68030, 278
6.1.11 Comparao entre o 80386 e o 68030, 281
6.2 INSTRUES DE ENTRADA/SADA VIRTUAL, 282
6.2.1 Arquivos Seqenciais, 282
6.2.2 Arquivos de Acesso Randmico, 284
6.2.3 Implementao de Instrues de E/S Virtual, 285
6.2.4 Instrues de Manipulao de Diretrios, 288
6.3 INSTRUES VIRTUAIS USADAS LM PROCESSAMENTO PARALELO, 289
6.3.1 Criao de Processos, 290
6.3.2 Corrida Crtica, 290
6.3.3 Sincronizao de Processos Usando Semforos, 293
6.4 EXEMPLOS DE SISTEMAS OPERACIONAIS, 296
6.4.1 Exemplos de Memria Virtual, 297
6.4.2 Exemplos de E/S Virtual, 299
6.4.3 Exemplos dc Gerncia de Processos, 308
6.4.4 Comparao entre o UNIX e o OS/2, 310
6.5 RESUMO, 310
7 O NVEL DE LINGUAGEM DE MONTAGEM, 316
7.1 INTRODUO LINGUAGEM DE MONTAGEM, 317
7.1.1 O Que uma Linguagem de Montagem?, 317
7.1.2 Formato de um Comando de Linguagem de Montagem, 318
7.1.3 Comparao de Linguagem de Montagem com Linguagem de Alto Nvel, 319
7.1.4 Afinao de Programas (Program Tuning), 320
7.2 O PROCESSO DE MONTAGEM, 321
7.2.1 Montadores de Dois Passos, 321
7.2.2 Passo Um, 322
7.2.3 Passo Dois, 324
7.2:4 Tabela de Smbolos, 327
7.3 MACROS, 327
7.3.1 Definio de Macro, Chamada e Expanso, 329
7.3.2 Macros com Parmetros, 330
7.3.3 Implementao de uma Facilidade de Macro em um Montador, 331
7.4 LIGAO E CARGA, 331
7.4.1 Tarefas Desempenhadas pelo Linker, 332
7.4.2 Estrutura de um Mdulo Objeto, 335
7.4.3 Tempo de Mapeamento (Binding Time) e Relocao Dinmica, 336
7.4.4 Ligao Dinmica, 338
7.5 RESUMO, 340
ARQUITETURAS AVANADAS DE COMPUTADORES, 343
8.1 MQUINAS RISC, 343
8.1.1 Evoluo da Arquitetura de Computadores, 343
8.1.2 Princpios de Projeto Para Mquinas RISC, 346
8.1.3 Uso de Registrador, 352
8.1.4 Grande Debate RISC versus CISC, 357
8.1.5 Um Exemplo de Arquitetura RISC: SPARC, 363
8.1.6 Um Segundo Exemplo RISC: MIPS, 373
8.2 ARQUITETURAS PARALELAS, 386
8.2.1 Viso Geral dos Computadores Paralelos, 387
8.2.2 Computadores MIMD com Memria Disjunta, 392
8.2.3 Multiprocessadores de Memria Compartilhada Baseados em Barramento, 395
8.2.4 Multiprocessadores MIMD Multiestgio de Memria Compartilhada, 401
8.2.5 Computadores Paralelos SIMD e a Connection Machine, 406
8.2.6 Computadores Vetoriais SIMD, 412
8.2.7 Computadores de Fluxo de Dados, 416
8.3 RESUMO, 420
LISTAS DE LEITURAS E BIBLIOGRAFIA, 424
9.1 SUGESTES DE LEITURAS ADICIONAIS, 424
9.1.1 Obras de Introduo e Assuntos Gerais, 424
9.1.2 Organizao de Sistemas de Computao, 425
9.1.3 Nvel de Lgica Digital, 425
9.1.4 Nvel de Microprogramao, 426
9.1.5 Nvel Convencional de Mquina, 426
9.1.6 Nvel de Sistema Operacional, 426
9.1.7 Nvel de Linguagem de Montagem, 427
9.1.8 Arquiteturas Avanadas, 427
9.1.9 Nmeros Binrios e de Ponto Flutuante, 429
9.2 BIBLIOGRAFIA ALFABTICA, 429
APNDICES
A NMEROS BINRIOS, 439
A.l NMEROS DE PRECISO FINITA, 439
A.2 SISTEMAS DE NUMERAO, 440
A.3 CONVERSO DE UMA BASE PARA OUTRA, 442
A.4 NMEROS BINRIOS NEGATIVOS, 444
A.5 ARITMTICA BINRIA, 446
B NMEROS EM PONTO FLUTUANTE, 448
B.1 PRINCPIOS DO PONTO FLUTUANTE, 448
B.2 PADRO DE PONTO FLUTUANTE IEEE 754, 451
NDICE ALFABTICO, 455
ORGANIZAO ESTRUTURADA
DE COMPUTADORES
1
INTRODUO
Um computador digital uma mquina capaz de nos solucionar problemas atravs da
execuo instrues que lhe so fornecidas. Denomina-se programa uma seqncia de
instrues que reve como executar uma determinada tarefa. Os circuitos eletrnicos
de cada computador 1cm reconhecer e executar diretamente um conjunto limitado de
instrues simples para as is todos os programas devem ser convertidos antes que
eles possam ser executados. Estas trues bsicas raramente so mais complicadas do
que:
Some dois nmeros.
Verifique se um nmero zero.
Mova um dado de uma parte da memria do computador para outra.
Juntas, as instrues primitivas do computador formam uma linguagem que torna
possvel essoas se comunicarem com o computador. Tal linguagem denominada
linguagem de mquina. se projetar um novo computador deve-se decidir que instrues
devem estar includas nesta ;uagem de mquina. Geralmente, tenta-se fazer as
instrues primitivas to simples quanto svel, consistentes com o uso pretendido e
necessidades de desempenho, a fim de reduzir )mplexidade e o Custo da eletrnica
empregada. Como a maioria das linguagens de mquina muito simples, difcil e
tedioso utiliz-las.
Este problema pode ser atacado de duas maneiras principais, ambas envolvendo o
projeto um novo conjunto de instrues de uso mais conveniente para as pessoas do
que o conjunto instrues embutidas da mquina. Juntas, estas novas instrues
'formam uma linguagem que maremos de L2, exatamente como as instrues embutidas de
mquima formam uma linguagem, chamaremos de Li. Os dois conceitos diferem na
maneira com que os programas escritos L2 so executados pelo computador, que,
afinal de contas, pode apenas executar programas ritos em sua linguagem de mquina,
Li.
Um mtodo de execuo de um programa escrito em L2 consiste, em primeiro lugar, em
stituir cada instruo nele por uma seqncia equivalente de instrues em Li. O
programa iltante composto inteiramente de instrues Li. O computador ento
executa o novo programa Li em vez do programa em L2. Denomina-se esta tcnica
traduo.
A outra tcnica consiste em escrever um programa em Li que receba os programas
escritos L2 como dados de entrada e efetue a execuo examinando uma instruo de
cada vez e cutando a seqncia equivalente de instrues Li diretamente. Esta
tcnica no requer a ao de um novo programa em Li. Denomina-se interpretao, e o
programa que a executa omina-se interpretador.
A traduo e a interpretao so similares. Em ambos os mtodos, as instrues em
L2
executadas pelas seqncias equivalentes de instrues em Li. A diferena que, na
traduo,
rograma inteiro em L2 primeiramente convertido para um programa em Li, o programa
abandonado, e ento o novo programa em Li executado. Na interpretao, depois
de
a instruo L2 ser examinada e decodificada, ela executada imediatamente. Nenhum
programa
luzido gerado Ambos os mtodos so amplamente utilizados.
2 OK(;ANIZAO ESTRUTURADA DE COMPUTADORES
Em vez de pensar em termos d traduo e interpretao, muitas vezes mais adequado
imaginar a existncia de um computador hipottico ou mqurna virtual cuja linguagem
de mquina seja L2. Se tal mquina pudesse ser construda a um custo
suficientemente baixo, no haveria absolutamente nenhuma necessidade de se ter LI
ou uma mquina que executasse programas em LI. As pessoas poderiam simplesmente
escrever seus programas em L2 e o computador os executaria diretamente. At mesmo
se a mquina virtual cuja linguagem L2 fosse muito cara para ser construda com
circuitos eletrnicos, poder-se-ia ainda escrever programas para ela. Estes
programas podem ser interpretados ou traduzidos por um programa escrito em Li,
linguagem esta que possa ser diretamente executada por um computador existente. Em
outras palavras, podem-se escrever programas para mquinas virtuais como se elas
realmente existissem.
Para tornar prticas a traduo e a interpretao, as linguagens LI e L2 no devem
ser "muito" diferentes. Esta restrio significa muitas vezes que L2, embora melhor
que Li, estar ainda longe do ideal para a maioria das aplicaes. Talvez isso seja
desencorajante em vista do objetivo original de criar L2, ou seja, livrar o
programador da carga de ter que expressar os algoritmos em uma linguagem mais
adequada s mquinas do que s pessoas. Entretanto, a situao est longe de
desesperante.
A soluo bvia criar um outro conjunto de instrues que seja mais dirigido s
pessoas e menos dirigido mquina do que aquele de L2. Este terceiro conjunto
tambm constitui uma linguagem, que chamaremos L3. Podem-se escrever programas em
L3 como se uma mquina virtual cuja liguagem de mquina fosse L3 realmente
existisse. Tais programas podem tanto ser traduzidos para L2 quanto executados por
um interpretador escritos em L2.
A inveno de toda uma srie de linguagens, cada uma delas mais conveniente do que
suas predecessoras, pode continuar indefinidamente at que uma adequada seja
finalmente conseguida. Cada linguagem utiliza sua predecessora como base, assim
podemos visualizar um computador que utiliza esta tcnica como uma srie de camadas
ou nveis, um sobre o outro, como est
________________________________ Os programas em Ln ou so interpretados
- por um interpretador em execuo em uma
Nvel quina virtua n, com mquina de nvel interior, ou so traduzidos
linguagem de mquina Ln j para a linguagem de mquina de uma
mquina de nvel interior
Os programas em L3 ou so interpretados por interpretadores em execuo em M2 ou
Ml, ou so traduzidos para L2 ou Li
- Os programas em L2 ou so interpretados por um interpretador em execuo em Ml ou
so traduzidos para Li
Os programas em Li podem ser
executados diretamente pelos Circuitos eletrnicos
Nvel 41
Nvel 3 1
Nvel 21
Nvel li
Fig. 1.1 Uma mquina multinvel.
INTRODUO 3
trado na Fig. 1.1. A linguagem ou nvel mais baixo a(o) mais simples e a
linguagem ou
1 mais alto a(o) mais sofisticada(o).
LINGUAGENS, NVEIS E MQUINAS VIRTUAIS
H uma relao importante entre uma linguagem e uma mquina virtual. Cada mquina
a sua linguagem de mquina, que consiste em todas as instrues que a mquina pode
utar. De fato, uma mquina define uma linguagem. Do mesmo modo, uma linguagem
define i mquina -ou seja, a mquina que pode executar todos os programas escritos
nesta linguagem. uralmente, a mquina definida por uma determinada linguagem pode
ser enormemente compli a e cara de construir diretamente a partir de circuitos
eletrnicos, mas de qualquer modo emos imagin-la. Uma mquina com C, Pascal ou
Cobol como sua linguagem de mquina a complicadssima, mas certamente imaginvel
e, talvez dentro de poucos anos, tal mquina considerada de construo trivial.
Um computador com n nveis pode ser considerado como n diferentes mquinas
virtuais, uma delas com uma diferente linguagem de mquina. Podemos utilizar os
termos "nvel" iquina virtual" indistintamente. Apenas os programas escritos em
linguagem Li podem executados diretamente pelos circuitos eletrnicos, sem a
necessidade de interveno da tradu ou interpretao. Os programas escritos em L2,
L3,... Ln, devem ser interpretados por interpretador em execuo em um nvel
inferior ou ser traduzidos para uma outra linguagem espondente no nvel inferior.
Uma pessoa cujo trabalho fosse escrever programas para a mquina virtual de nvel n
no isaria estar ciente dos interpretadores e tradutores subjacentes. A estrutura
da mquina asse t que estes programas sero de algum modo executados. E de pouco
interesse se eles so :utados passo a passo por um interpretador, que por sua vez
tambm executado por um o interpretador, ou se eles so executados diretamente
pelos circuitos eletrnicos. O mesmo Itado surge em ambos os casos: os programas
so executados.
A maioria dos programadores que utilizam uma mquina de nvel n est apenas
interessada vel do topo, que lembra o mnimo possvel a linguagem de mquina
situada l embaixo. retanto, os interessados em compreender como um computador
realmente funciona devem dar todos os nveis. As pessoas interessadas em projetar
novos computadores ou novos nveis
, novas mquinas virtuais) devem tambm estar familiarizadas com outros nveis
alm
ivel do topo. Os conceitos e tcnicas de construo de mquinas como uma srie de
nveis
detalhes de alguns nveis importantes constituem por si s o assunto principal
deste livro. rtulo Organizao Estrutural de Computadores vem do fato de se
visualizar o computador o um conjunto hierrquico de nveis que prov uma boa
estrutura para compreender como mputadores esto organizados. Alm disso, projetar
computadores como uma srie de nveis [ a assegurar um produto final bem
estruturado.
MQUINAS MULTINVEL CONTEMPORNEAS
A maioria dos computadores modernos possui dois ou mais nveis. As mquinas de seis
is so muito comuns, como est mostrado na Fig. 1.2. O nvel -O, l embaixo, o
hardware adeiro da mquina. Seus circuitos executam os programas em linguagem de
mquina de li. Para completar, deve-se mencionar ainda a existncia de um outro
nvel abaixo do nvel ste nvel, que no est mostrado na Fig. 1.2 porque se situa
no campo da engenharia eltrica or isto est fora do escopo deste livro),
denominado nvel de dispositivos. A este nvel, ojetista enxerga transistores
individuais, os quais so os primitivos de mais baixo nvel para rojetistas de
computadores. (Naturalmente, pode-se tambm indagar como funcionam os sistores por
dentro, mas isto j pertence fsica de estado slido.)
No nvel mais baixo que estudaremos, o nvel da lgica digital, os objetos
interessantes so )minados portas. Embora construdas a partir de componentes
analgicos, como os transistores, ortas podem ser modeladas com preciso como
dispositivos digitais. Cada porta possui uma nais entradas digitais (sinais
representando O ou 1), e fornece como sada funes simples as entradas, tais como
AND ou OR. Cada porta constituda no mximo por um punhado ransistores. Ns
examinaremos o nvel de lgica digital em detalhes no captulo 3. Embora
4 ORGANJZAO ESTRUTURADA DE COMPUTADORES
Nvel 5 Nvel de linguagem orientada
para problemas
Traduo (compilador)
Nvel 4 Nvel de linguagem de montagem
Traduo (montador)
Nvel 3 Nvel de sistema operacional
Interpretao parcial
(sistema operacional)
Nvel 2 Nvel de mquina convencional
Interpretao
(microprograma)
Nvel 1 Nvel de microprogramao
Os microprogramas so executados
diretamente pelo hardware
Nvel Nvel de lgica digital
Fig. 1.2 Os seis nveis presentes na maioria dos computadores modernos. O mtodo
como cada nvel implementado est indicado abaixo dele, juntamente com o nome do
programa que o implementa eni parnteses.
o conhecimento do nvel de dispositivos seja um tanto especializado, com o advento
dos micropi cessadores e microcomputadores, mais e mais pessoas esto entrando em
contato com o n de lgica digital. Por este motivo, ns o inclumos em nosso
modelo e dedicamos um capftL inteiro do livro a este nvel.
O nvel superior seguinte o nvel 1, que o verdadeiro nvel de linguagem de
mquir Ao contrrio do nvel 0, onde no existe o conceito de programa como uma
seqncia de instru a serem executadas, em nvel 1 h definitivamente um
programa, denominado microprogran cuja funo interpretar as instrues de nvel
2. Chamamos o nvel 1 de nvel de mkcroprograma4 Embora seja verdadeiro que no
existem dois computadores com nveis de microprograma idnticos, existem
semelhanas suficientes que nos permitem extrair os aspctos essenciais nvel e
discuti-lo como se ele fosse bem definido. Por exemplo, poucas so as mquinas q
tm mais de 20 instrues neste nvel, e a maior parte destas instrues envolve a
movimenta de dados de uma parte da mquina para outra, ou a realizao de alguns
testes simples.
Cada mquina de nvel 1 tem um ou mais microprogramas que so executados nela. Ca
microprograma define implicitamente uma linguagem de nvel 2 (e uma mquina
virtual, ct linguagem de mquina essa linguagem). Estas mquinas de nvel 2 tm
muito em comu At mesmo mquinas de nvel 2 de fabricantes diferentes tm mais
semelhanas do que diferen
INTRODUO 5
te livro, denominaremos este nvel de nvel de mquina convencional, por falta de
um nome
iceitao geral.
Todo fabricante de computadores publica um manual para cada tipo de computador que
comercializa, intitulado "Manual de Referncia da Linguagem de Mquina" ou
"Princpios Dperao do Computador Western Wombat Modelo 100X" ou algo semelhante.
Estes manuais am, na realidade, da mquina virtual de nvel 2, e no da mquina
real de nvel 1. Quando descrevem o conjunto de instrues de mquina, esto, de
fato, descrevendo as instrues rpretadas pelo microprograma, e no as prprias
instrues de hardware. Se o fabricante omputadores escrever para uma de suas
mquinas dois interpretadores que interpretem duas luinas diferentes de nvel 2,
ele precisar fornecer dois manuais de referncia de "linguagem
iiquina", um para cada interpretador.
Deve-se mencionar que alguns computadores no tm um nvel de microprogramao.
Nestas uinas, as instrues do nvel de mquina convencional so executadas
diretamente pelos uitos eletrnicos (nvel O), sem qualquer interpretador
intermedirio de nvel 1. Como resultado, vel 1, e no o nvel 2, o nvel de
mquina convencional. De qualquer modo, continuaremos iamar o nvel de mquina
convencional de "nvel 2", apesar destas excees.
O terceiro nvel geralmente um nvel hbrido. A maior parte das instrues desta
linguagem
tambm na linguagem de nvel 2. (No h motivo para uma instruo que aparece em
nvel no poder estar presente tambm em outros nveis.) Alm disso, h um conjunto
de
as instrues, uma organizao diferente de memria, capacidade de execuo de dois
ou
s programas em paralelo, e vrias outras caractersticas. Existem diferenas
maiores entre luinas de nvel 3 do que entre mquinas de nvel 1 ou de nvel 2.
As novas facilidades adicionadas ao nvel 3 so efetuadas por um interpretador em
execuo nvel 2, que historicamente tem sido denominado sistema operacional.
Aquelas instrues nvel 3 idnticas s do nvel 2 so executadas diretamente pelo
microprograma, e no pelo ma operacional. Em outras palavras, algumas das
instrues de nvel 3 so interpretadas sistema operacional e outras so
interpretadas diretamente pelo microprograma. Isto o se quer dizer por "hbrido".
Denominaremos este nvel de nvel de sistema operacional.
H uma diferena fundamental entre os nveis 3 e 4. Os trs nveis inferiores no
foram etados para o uso direto pelo programador mdio comum. Eles so voltados
principalmente a execuo dos interpretadores e tradutores necessrios para
suportar os nveis superiores. s interpretadores e tradutores so escritos por
pessoas chamadas de programadores de sistema, so especialistas em projetar e
implementar novas mquinas virtuais. Os nveis 4 e superiores dirigidos aos
programadores de aplicao com problemas a serem solucionados.
Uma outra mudana que ocorre no nvel 4 o mtodo pelo qual os nveis superiores
so )rtados. Os nveis 2 e 3 so sempre interpretados. Os nveis 4, 5 e superiores
so geralmente, nem sempre, suportados por traduo.
Uma outra diferena ainda entre os nveis 1, 2 e 3, de um lado, e os nveis 4, 5 e
superiores, )utro, a natureza da linguagem provida. As linguagens de mquina de
nveis 1, 2 e 3 numricas. Os programas escritos nestas linguagens consistem em
longas sries de nmeros, uais so timos para as mquinas e pssimos para as
pessoas. A partir do nvel 4, as linguagens m palavras e abreviaturas
significativas para as pessoas.
O nvel 4, o nvel da linguagem de montagem, realmente uma forma simblica para
uma iagem subjacente. Este nvel prov um mtodo para as pessoas escreverem
programas para veis 1, 2 e 3 de uma maneira no to desagradvel quanto as
prprias linguagens de mquina aI. Os programas em linguagem de montagem so
primeiramente traduzidos para a linguagem vel 1, 2 ou 3, e ento so interpretados
pela mquina virtual ou real apropriada. O programa executa a traduo denominado
montador. A linguagem de montagem j foi importante, est perdendo a importncia
com o tempo.
O nvel 5 consiste em linguagens projetadas para serem utilizadas por programadores
de ao com problemas a serem resolvidos. Tais linguagens so denominadas
linguagens de nvel. Existem literalmente centenas delas. Algumas das mais
conhecidas so BASIC, C, IOL, FORTRAN, LISP, Modula 2 e Pascal. Os programas
escritos nestas linguagens so [ traduzidos para o nvel 3 ou nvel 4 por
tradutores conhecidos como compiladores, Dra ocasionalmente eles sejam
interpretados.
Os nveis 6 e superiores consistem em colees de programas projetados para criar
mquinas
6 ORGANIZAO ESTRUTURADA DE COMPUTADORES
especialmente adequadas para certas aplicaes. Eles contm grandes quantidades de
informao acerca da aplicao. Podem-se imaginar mquinas virtuais voltadas a
aplicaes em administrao, educao, projeto de computadores etc. Estes nveis
esto no terreno da pesquisa atual.
Em resumo, o ponto-chave a ser lembrado que os computadores so projetados como
uma srie de nveis, cada um deles construdo sobre seu predecessor. Cada nvel
representa uma abstrao distinta, com a presena de diferentes objetos e
operaes. Ao projetar e analisar computadores deste modo, podemos temporariamente
suprimir detalhes irrelevantes e assim reduzir um assunto complexo para algo mais
fcil de ser compreendido.
O conjunto de tipos de dados, operaes e caractersticas de cada nvel
denominado sua arquitetura. A arquitetura trata daqueles aspectos que so visveis
ao usurio daquele nvel. Os aspectos que um programador v, tais como quanta
memria est disponvel, fazem parte da arquitetura. Aspectos de implementao,
tais como qual o tipo de tecnologia da pastilha utilizada na implementao da
memria, no fazem parte da arquitetura. O estudo de como projetar as partes de um
computador que so visveis aos programadores denomina-se arquitetura de
computadores. Na prtica, arquitetura de computadores e organizao de computadores
signifi cam essencialmente a mesma coisa.
1.3 EVOLUO DAS MQUINAS MULTINVEL
Para darmos uma viso geral das mquinas multinvel, examinaremos resumidamente seu
desenvolvimento hjstrico. Os primeiros computadores digitais, na dcada de 40,
tinham apenas dois nveis: o nvel de mquina convencional, no qual toda a
programao era feita, e o nvel de lgica digital, que executava estes programas.
Os circuitos do nvel de lgica digital eram complicados, difceis de entender e de
construir, e no eram confiveis.
Em 1951, M. V. Wilkes, na Inglaterra, deu a idia de se projetar um computador de
trs nveis, a fim de simplificar drasticamente o hardware. Esta mquina teria um
interpretador embutido imutvel, cuja funo era executar interpretativamente os
programas em linguagem de mquina convencional. Como agora o hardware tinha apenas
que executar microprogramas, que possuem um repertrio limitado de instrues, em
vez de programas na linguagem de mquina convencional, uma quantidade menor de
circuitos eletrnicos seria necessria. Como os circuitos eletrnicos, naquele
tempo, eram construdos a partir de vlvulas, tal simplificao prometia a reduo
do nmero de vlvulas e, conseqentemente, aumentava a confiabilidade. Umas poucas
destas mqui nas de trs nveis foram construdas na dcada de 50. Outras mais
foram construdas na dcada de 60. Por volta de 1970, a idia de se usar
interpretao no nvel de mquina convencional atravs de um microprograma, em
lugar de execuo direta pelos circuitos eletrnicos, genera lizou-se.
Os montadores e compiladores foram desenvolvidos durante a dcada de 50 para
facilitar o trabalho do programador. Naqueles dias, a maioria dos computadores era
do tipo "open shop o que significava que o programador tinha que operar a mquina
pessoalmente. Prximo a cada mquina havia uma folha de reservas. O programador que
quisesse executar um programa reservaria um intervalo de tempo, digamos, quarta-
feira de 3 s 5 da madrugada (muitos programadores gostavam de trabalhar quando a
sala do computador estivesse tranqila). Quando chegasse a sua vez, o programador
se dirigia sala portando um deck de cartes numa mo e um lpis apontado na
outra. Ao chegar na sala, ele gentilmente expulsava o programador anterior e
assumia o controle da mquina.
Se quisesse executar um programa FORTRAN, seguiria os seguintes passos:
1. Ele iria at o armrio onde a biblioteca de programas estivesse guardada,
pegaria o imenso deck verde de cartes etiquetados.compilador FORTRAN, coloc-lo-ia
na leitora de cartes
e apertaria o boto start (partida).
2. Ele colocaria seu programa FORTRAN na leitora de cartes e apertaria o boto
continue. O programa era ento lido.
N. da R.: Lugar de trabalho onde no necessrio pertencer a um sindicato, ou
seja, qualquer um pode trabalhar
l.
INTRODUO 7
3. Quando o computador parasse, ele leria o programa FORTRAN uma segunda vez.
Embora alguns compiladores necessitassem de apenas um passo de entrada, muitos
necessitavam
de dois ou mais. Para cada passo, um grande deck de cartes tinha que ser lido.
4. Finalmente, a traduo se aproximava do trmino. O programador ficava, muitas
vezes, nervoso perto do final, pois se o compilador encontrasse um erro no
programa, ele teria de corrigi-lo e comear tudo de novo. Se no encontrasse mais
erros, o compilador perfurava em cartes o programa traduzido em linguagem de
mquina.
5. O programador colocava ento o programa em linguagem de mquina na leitora de
cartes, junto com o deck de cartes da biblioteca de sub-rotinas, e lia ambos.
6. O programa comeava a ser executado. Muitas vezes, ele no dava certo e parava
inespera damente no meio. Geralmente, o programador mexia nas chaves da console e
observava suas luzes durante um certo tempo. Se tivesse sorte, ele descobria o
erro, corrigia-o e voltava ao armrio que continha o imenso compilador FORTRAN
verde para comear tudo novamente. Se no obtivesse xito, ele tiraria uma listagem
do contedo da memria e levaria para casa para estudar.
Este procedimento, com pequenas variaes, foi normal em muitos centros de
computao ante anos. Isto forava os programadores a aprenderem a operar a mquina
e saber o que r quando ela quebrava, o que era freqente. Amide a mquina ficava
ociosa enquanto stavam carregando cartes pela sala ou quebrando a cabea, tentando
descobrir por que rogramas no estavam se comportando da maneira esperada.
Por volta de 1960, tentou-se reduzir o tempo perdido atravs da automatizao do
trabalho operador. Um programa chamado sistema operacional era mantido no
computador durante o o tempo. O programador fornecia certos cartes de controle
junto com o programa que lido e executado pelo sistema operacional. A Fig. 1.3
mostra um exemplo de deck para dos primeiros sistemas operacionais de amplo uso, o
FMS (FORTRAN Monitor System), IBM 709.
O sistema operacional lia o carto *JOB e usava a informao nele contida para uso
contbil. asterisco foi usado para identificar os cartes de controle, de modo que
eles no fossem fundidos com os cartes de programa e dados). Mais tarde, ele lia o
carto *FORTRAN
JOB, 5494, SUZANNE BAART
*XEQ
* FORTRAN
Programa
FORTRAN
* DATA
Cartes de
dados
END
1.3 Um exemplo de job para o sistema operacional FMS.
8 ORGANIZAO ESTRUTURADA DE COMPUTADORESI
que era uma instruo para carregar o compilador FORTRAN a partir da fita
magntica. O compilador ento lia e compilava o programa escrito em FORTRAN. Quando
o computador terminava, ele devolvia o controle ao sistema operacional, que ento
lia o carto *DATA. Esta era uma instruo para executar o programa traduzido,
utilizando como dados os cartes que se seguiam ao carto *DATA.
Embora o sistema operacional fosse projetado para automatizar o trabalho do
operador (da o seu nome), foi tambm o primeiro passo no desenvolvimento de uma
nova mquina virtual. O carto *FORTRAN podia ser visto como uma instruo virtual
"compilar programa". Do mesmo modo, o carto * DATA podia ser considerado como uma
instruo virtual "executar programa". Um nvel com apenas duas instrues no era
bem um nvel, mas era um passo nessa direo.
Nos anos seguintes, os sistemas operacionais ficaram cada vez mais sofisticados.
Novas instru es, facilidades e caractersticas foram adicionadas ao nvel de
mquina convencional, at que ele comeou a adquirir a aparncia de um novo nvel.
Algumas das instrues deste novo nvel eram idnticas s instrues do nvel de
mquina convencional, mas outras, particularmente as instrues de entrada/sada,
eram completamente diferentes. As novas instrues eram freqen temente conhecidas
como "macros de sistema operacional" ou "chamadas de supervisor" e estes termos so
ainda utilizados.
Os sistemas operacionais se desenvolveram tambm de outras maneiras. Os primeiros
liam decks de cartes e imprimiam a sada em uma impressora de linha. Esta
organizao ficou conhecida como sistema em lote (batch). Havia geralmente uma
espera de vrias horas entre o instante em que o programa era submetido e o momento
em que os resultados ficavam prontos. Desenvolver software era difcil em tais
circunstncias.
No incio da dcada de 60, pesquisadores do Dartmouth College, M.I.T. e de outros
lugares desenvolveram sistemas operacionais que permitiam que (vrios)
programadores se comunicassem diretamente com o computador. Nestes sistemas,
terminais remotos estavam conectados ao compu tador central por meio de linhas
telefnicas. O programador podia digitar um programa e obter os resultados quase
que imediatamente, em seu prprio escritrio, ou em sua casa, ou em qualquer lugar
onde se localizasse seu terminal. Estes sistemas eram, e ainda so, denominados
sistemas de tempo compartilhado (rime-sharing systems).
Nosso interesse em sistemas operacionais est nas partes que interpretam as
instrues e nas caractersticas presentes no nvel 3 e ausentes no nvel 2, mais
do que nos aspectos de comparti lhamento do tempo. Embora no o enfatizemos,
devemos lembrar que os sistemas operacionais fazem mais do que apenas interpretar
programas de nvel 3.
1.4 HARDWARE, SOFTWARE E MQUINAS MULTINVEL
Os programas escritos na linguagem de mquina de um computador (nvel 1) podem ser
executados diretamente pelos circuitos eletrnicos do computador (nvel 0), sem
quaisquer Interpre tadores ou tradutores intermedirios. Estes circuitos
eletrnicos, juntamente com a memria e dispositivos de entrada/sada, constituem o
hardware do computador. O hardware composto de objetos tangveis - circuitos
integrados, placas de circuito impresso, cabos, fontes de alimen tao, memrias,
leitoras de cartes, impressoras e terminais em lugar de idias abstratas,
algoritmos ou instrues.
O software, ao contrrio, consiste em algoritmos (instrues detalhadas que dizem
como fazer algo) e suas representaes para o computador - ou seja, os programas.
Os programas podem estar representados em cartes perfurados, fita magntica, filme
fotogrfico e outros meios, mas a essncia do software est no conjunto de
instrues que constitui os programas, no nos meios fsicos sobre os quais eles
esto gravados.
Uma forma intermediria entre o hardware e o software o firmware, que consiste no
software embutido em dispositivos eletrnicos durante a fabricao. O firmware
utilizado quando se espera que os programas raramente ou nunca sero mudados, por
exemplo, em brinquedos ou instrumentos. O firmware tambm usado quando os
programas no podem ser perdidos ao se acabar a alimentao (p. ex., quando a
bateria da boneca se descarrega). Em muitos compu tadores o microprograma est em
firmware.
Um tema central neste livro que sempre aparecer :
INTRODUO 9
Hardware e software so logicamente equivalentes.
Qualquer operao efetuada pelo software pode tambm ser implementada diretamente
em dware, e qualquer instruo executada pelo hardware pode tambm ser simulada
pelo software. leciso de se colocar certas funes em hardware e outras em
software baseia-se em fatores como: custo, velocidade, confiabilidade e frequncia
esperada de alteraes. No h regras das e diretas para se dizer que X deve ser
implementado em hardware e Y deve ser programado licitamente. Projetistas com
objetivos diferentes podem, e muitas vezes o fazem, tomar diferen decises.
Nos primeiros computadores, a distino entre hardware e software era clara. O
hardware cutava algumas instrues simples, tais como ADD (somar) e JUMP (saltar
para), e tudo lais era programado explicitamente. Se um programa precisasse
multiplicar dois nmeros, rogramador tinha que escrever seu prprio procedimento de
multiplicao ou pedir um empres o biblioteca. Com o passar do tempo, tornou-se
claro aos projetistas de hardware que certas raes eram executadas com uma
freqncia suficiente para justificar a construo de circuitos eciais para
execut-las diretamente em hardware (para torn-las mais rpidas). Isto resultou
uma tendncia de se levar as operaes para os nveis inferiores, O que era
previamente gramado explicitamente no nvel de mquina convencional era mais tarde
encontrado abaixo
no hardware.
Com a chegada da microprogramao e de computadores multinvel, a tendncia oposta
bm ocorreu. Nos primeiros computadores, no havia dvidas de que a instruo ADD
era cutada diretamente pelo hardware. Em um computador microprogramado, a instruo
ADD nvel de mquina convencional era interpretada atravs de um microprograma
sendo executado nvel situado mais ao fundo, e era executada como uma srie de
pequenos passos: buscar struo, descobnr seu tipo, localizar os dados a serem
adicionados, buscar os dados da memria, cutar a adio e armazenar o resultado.
Este um exemplo de funo que moveu para cima, nvel de hardware para o de
microprograma. Ns enfatizaremos mais uma vez que: no existem ras rgidas e
diretas a respeito do que deve estar em hardware e do que deve estar em software.
Ao desenvolverem uma mquina multinvel, os projetistas devem decidir o que colocar
em a nvel. Esta uma generalizao do problema mencionado anteriormente, de se
decidir ue colocar em hardware e o que colocar em software, o hardware sendo
meramente de nvel s baixo. interessante notar que algumas das caractersticas de
certos computadores modernos agora executadas pelo hardware ou pelo microprograma,
mas que originalmente foram progra las explicitamente no nvel de mquina
convencional. Dentre elas esto includas:
1. Instrues para multiplicao e divis de inteiros.
2. Instrues aritmticas de ponto-flutuante (veja Apndice B).
3. Instrues aritmticas de dupla preciso (aritmtica de nmeros com duas vezes o
nmero usual de algarismos significativos).
4. Instrues para chamar e retornar de procedimentos.
5. Instrues para acelerar laos (looping).
6. Instrues de contagem (somar 1 a uma varivel).
7. Instrues para manipular cadeias de caracteres.
8. Aspectos de acelerao de computaes envolvendo matrizes (indexao e
endereamento indireto).
9. Caractersticas para permitir que os programas fossem movidos na memria aps
terem comeado a ser executados (facilidades de recolocao).
10. Relgios para temporizar programas.
11. Sistemas de interrupo que avisem o computador to logo uma operao de
entrada ou sada esteja completada.
12. A capacidade de parar um programa e iniciar outro utilizando poucas instrues
(chavea mento de processos).
O objetivo da discusso mostrar que a fronteira entre o hardware e o software
arbitrria iie varia constantemente. O software de hoje o hardware de amanh, e
vice-versa. Alm o, os limites entre os vrios nveis so fluidos. Do ponto de
vista do programador, a maneira
10 ORGANIZAO ESTRUTURADA DE COMPUTADORES
como uma instruo est realmente implementada no importante (exceto, talvez,
com relao
velocidade). Algum que estiver programado no nvel de mquina convencional pode
usar
sua instruo de multiplicao como se esta fosse uma instruo de hardware sem se
preocupar
com isto, ou at mesmo estar ciente se ela realmente uma instruo de hardware ou
no.
O hardware de algum o software de outrem.
O fato de o programador no estar ciente de como o nvel que ele est utilizando
imple mentado leva ao conceito de projeto estruturado de mquinas. Um nvel
muitas vezes chamado de mquina virtual porque o programador pensa nele como uma
mquina fsica real, mesmo se ela no existir realmente. Estruturando uma mquina
como uma srie de nveis,os programadores que trabalham no nvel n no precisam
saber de todos os detalhes confusos dos nveis inferiores. Esta estruturao
simplifica enormemente a produo de mquinas (virtuais) complexas.
1.5 MARCOS DO DESENVOLVIMENTO DA ARQUITETURA DE COMPUTADORES
Centenas dc computadores de diferentes tipos tm sido projetados e construdos
durante a evoluo do computador digital moderno. A maioria j foi esquecida, mas
alguns tiveram um impacto significativo nas idias modernas. Nesta seo, daremos
uma viso breve de alguns destes desenvolvimentos-chave histricos, para conseguir
uma melhor compreenso de como chega mos at onde estamos agora. Nem preciso
dizer que esta seo apenas toca os pontos importantes e deixa muitos outros de
lado. A Fig. 1.4 lista algumas das mquinas marcantes a serem discutidas nesta
seo. Slater (1987) um bom lugar para se encontrar material histrico adicional
sobre pessoas que ajudaram a iniciar a era do computador.
1.5.1 A Gerao Zero - Computadores Mecnicos (1642-1945)
A primeira pessoa a construir uma mquina de calcular foi o cientista francs
Blaise Pascal (1623-1662), em cuja honra deu-se o nome linguagem de programao
Pascal. Este aparelho, construdo em 1642, quando Pascal tinha apenas 19 anos, foi
projetado para ajudar seu pai, um coletor de impostos para o governo francs. Era
inteiramente mecnico, utilizava engrenagens e funcionava atravs de uma manivela
operada manualmente.
A mquina de Pascal podia apenas subtrair e somar, porm 30 anos mais tarde o
grande matemtico alemo Baro Gottfried Wilhelm von Leibniz (1646-1716) construiu
uma outra mquina mecnica que podia tambm multiplicar e dividir. De fato, Leibniz
construiu o equivalente a uma calculadora de bolso de quatro funes, trs sculos
atrs.
Nada mais aconteceu durante 150 anos at que um professor de matemtica na
Universidade de Cambridge, Charles Babbage (1792-1871), inventor do velocmetro,
projetou e construiu sua mquina de diferenas. Este dispositivo mecnico, que do
mesmo modo que o de Pascal s podia somar e subtrair, foi projetado para calcular
tabelas de nmeros teis navegao naval. A mquina foi projetada para executar
um algoritmo simples, o mtodo das diferenas finitas utili zando polinmios. O
aspecto mais interessante da mquina de diferenas era seu mtodo de sada: ela
perfurava os resultados numa placa de cobre com um buril de ao, desta maneira
prenunciando os ulteriores meios de apenas uma escrita, tais como cartes
perfurados e os primeiros discos ticos.
Embora a mquina de diferenas funcionasse razoavelmente bem, Babbage logo cansou-
se dela, pois podia executar apenas um algoritmo. Ele comeou ento a gastar
quantias crescentes de seu tempo e da fortuna de sua famflia (sem mencionar 17.000
libras esterlinas de dinheiro governamental) no projeto e construo de uma
sucessora, denominada mquina analtica. A mquina analtica possua quatro
componentes: o armazenamento (memria), o engenho (unidade de clculo), a seo de
entrada (leitora de cartes perfurados) e a seo de sada (sada perfurada e
impressa). O armazenamento consistia em 1.000 palavras de 50 dgitos decimais
utilizadas para armazenar variveis e resultados. O engenho podia aceitar operandos
do armazenamento, som-los, subtra-los, multiplic-los ou dividi-los, e retornar o
resultado ao armazenamento. Tal como a mquina de diferenas, ela era inteiramente
mecnica.
O grande avano da mquina analtica era ser de uso geral. Ela lia instrues de
cartes perfurados e as executava. Algumas instrues comandavam a mquina para
buscar dois nmeros
no armazenamento, lev-los ao engenho, sofrerem a operao (p. ex., soma) e ter o
resultado
INTRODUO
no
Nome
Construdo por Comentrios
834
Mquina analtica
Babbage
Primeira tentativa de se construir um computador digital
936
Zi
Zuse
Primeira mquina calculadora a rels a funcionar
943
COLOSSUS
Governo britnico
Primeiro computador eletrnico
944
Mark 1
Aiken
Primeiro computador americano de uso geral
946
ENIAC 1
Eckert/Mauchley
A histria do computador moderno comea aqui
949
EDSAC
Wilkes
Primeiro computador de programa armazenado
951
Whirlwind 1
M.I.T.
Primeiro computador de tempo real
951
UNIVAC 1
Eckert/Mauchley
Primeiro computador vendido comercialmente
952
IAS
von Neumann
A maioria das mquinas atuais utiliza este projeto
960
PDP.1
DEC
Primeiro minicomputador (50 vendidos)
961
1401
IBM
Mquina comercial de pequeno porte muito popular
962
7094
IBM
Dominou a computao cientfica no incio dos anos 60
963
B5000
Burroughs
Primeira mquina projetada para uma linguagem de alto nvel
964
360
IBM
Primeira linha de produtos projetados como uma famlia
964
6600
CDC
Primeira mquina com amplo uso de paralelismo internamente
965
PDP-8
DEC
Primeiro minicomputador de venda em massa (50.000 vendidos)
970
PDP-1 1
DEC
Minicomputadores que dominaram os anos 70
974
8080
Intel
Primeira CPU de uso geral em uma pastilha
974
CRAY-1
Cray
Primeiro supercomputador
978
VAX
DEC
Primeiro supermini de 32 bts
1.4 Alguns marcos importantes no desenvolvimento do computador digital moderno.
iiado de volta ao armazenamento. Outras instrues podiam testar um nmero e
desviar condicio [ dependendo se positivo ou negativo. Perfurando um programa
diferente nos cartes entrada, era possvel fazer com que a mquina analftica
executasse clculos diferentes, algo no era verdade na mquina de diferenas.
Uma vez que a mquina analtica era programvel numa linguagem de montagem simples
precisava de software. Para produzir este software, Babbage contratou uma jovem
chamada la Augusta Lovelace, que era filha do famoso poeta britnico, Lord Byron.
Ada Lovelace
assim o(a) primeiro(a) programador(a) de computador do mundo. A moderna linguagem
programao Ada(r) foi assim denominada em sua homenagem.
Infelizmente, do mesmo modo que muitos projetistas modernos, Babbage nunca
conseguiu ,urar completamente o hardware. O problema era que ele precisava dos
milhares de dentes, las e engrenagens produzidos a um grau de preciso que a
tecnologia do sculo 19 era incapaz prover. Apesar disso, suas idias estavam muito
frente de seu tempo, e, at mesmo hoje, naioria dos computadores modernos tem uma
estrutura muito similar mquina analtica, modo que justo dizer que Babbage foi
o pai (av) do computador digital moderno.
O prximo grande marco de desenvolvimento ocorreu nos anos 30, quando um estudante
engenharia alemo chamado Konrad Zuse construiu uma srie de mquinas de calcular
autom is utilizando rels eletromagnticos. Zuse no conhecia o trabalho de
Babbage, e suas mquinas am destrudas pelo bombardeio de Berlim pelos aliados em
1944, de forma que seu trabalho ) teve qualquer influncia nas mquinas
posteriores. Mesmo assim, ele foi um dos pioneiros ;te campo.
Logo depois, nos Estados Unidos, duas pessoas tambm projetaram calculadoras, John
Atana f, no Iowa State Coilege, e George Stibbitz, no BelI Labs. A mquina de
Atanasoff era surpreen
11
12 ORGANIZAO ESTRUTURADA DE COMPUTADORES
dentemente avanada para sua poca. Ela utilizava aritmtica binria e possua
capacitores para a memria, que eram penodicamente refrescados para evitar que se
descarregassem, processo esse denominado por ele de "estimulao da memria". As
pastilhas modernas de RAM dinmica funcionam exatamente da mesma maneira.
Infelizmente, a mquina nunca se tornou realmente operacional. De certa forma,
Atanasoff foi como Babbage: um visionrio derrotado pela inadequada tecnologia de
hardware de seu tempo.
O computador de Stibbitz, embora mais primitivo do que o de Atanasoff, funcionava
realmen te. Stibbitz fez uma demonstrao pblica em uma conferncia no Dartmouth
College em 1940. Uma das pessoas da audincia era John Mauchley, um desconhecido
professor de fsica da Univer sidade da Pennsylvania. Posteriormente, o mundo da
computao ouviria mais sobre o Prof. Mauchley.
Enquanto Zuse, Stibbitz e Atanasoff estavam projetando calculadoras automticas, um
jovem chamado Howard Aiken estava realizando manualmente tediosos clculos
numricos como parte de sua pesquisa de doutorado em Harvard. Aps seu doutorado,
Aiken reconheceu a importncia dos clculos feitos por mquina. Comeou a ler sobre
o assunto, descobriu o trabalho de Babbage e decidiu construir com rels o
computador de uso geral que Babbage no conseguiu construir com rodas dentadas.
A primeira mquina de Aiken, o Mark 1, foi terminado em Harvard, em 1944. Ele tinha
72 palavras de 23 dgitos decimais cada, e tinha um tempo de ciclo (isto , de
instruo) de
6 segundos. Para entrada e sada, utilizava-se fita de papel perfurado. Quando
Aiken acabou
de construir o sucessor, o Mark II, computadores com rels estavam obsoletos. A era
eletrnica
tinha comeado.
1.5.2 A Primeira Gerao - Vlvulas (1945-1955)
O estmulo para o computador eletrnico foi a Segunda Guerra Mundial. Durante a
primeira fase da guerra, os submarinos alemes estavam massacrando os navios
britnicos. Ordens eram enviadas pelos almirantes alemes de Berlim para os
submarinos por rdio, o que os ingleses podiam interceptar, e o fizeram. O problema
era que estas mensagens eram criptografadas utilizando um aparelho denominado
ENIGMA, cujo precursor, casualmente, foi projetado pelo inventor amador e ex-
presidente dos EUA, Thomas Jefferson.
No incio da guerra, a inteligncia britnica conseguiu adquirir uma mquina ENIGMA
da inteligncia polonesa, que tinha sido roubada dos alemes. Entretanto, para
decifrar uma mensagem codificada, era necessria uma imensa quantidade de clculos,
e, para que ela pudesse ser aprovei tada, esta decodificao deveria ser feita o
mais rapidamente possvel. Para decodificar estas mensagens, o governo britnico
criou um laboratrio altamente secreto que construiu um compu tador eletrnico
denominado COLOSSUS. O famoso matemtico britnico Alan Turing ajudou a projetar
esta mquina. O COLOSSUS ficou operacional em 1943, mas, como o governo britnico
manteve praticamente todos os detalhes do projeto classificados como segredo
militar durante 30 anos, a linha COLOSSUS nasceu morta. Vale apenas salientar que
foi o primeiro computador eletrnico digital do mundo.
Alm de destruir as mquinas de Zuse e estimular a construo do COLOSSUS, a guerra
tambm afetou a computao nos Estados Unidos. O exrcito precisava de tabelas de
alcance para calibragem de mira de sua artilharia pesada, e achava que calcul-las
manualmente consumia muito tempo e era sujeito a erros.
John Mauchley, que conhecia o trabalho de Atanasoff e o de Stibbitz, sabia que o
exrcito estava interessado em calculadoras mecnicas. Da mesma maneira que muitos
cientistas da compu tao que vieram depois dele, Mauchley apresentou um pedido de
auxflio ao exrcito para financia mento da construo de um computador eletrnico.
A proposta foi aceita em 1943, e Mauchley e seu aluno de ps-graduao, J. Presper
Eckert, construram um computador eletrnico que eles denominaram ENIAC (Electronic
Numerical, Integrator And Computer, ou seja, Computador e Integrador Numrico
Eletrnico). Ele era constitudo de 18.000 vlvulas e 1.500 rels. O ENIAC pesava
30 toneladas e consumia 140 quilowatts de potncia. Arquiteturalmente, a mquina
possua 20 registradores, cada um capaz de armazenar um nmero decimal de 10
dgitos. Sua programao era feita atravs de cerca de 6.000 chaves
multiposicionais e da interconexo de um grande nmero de soquetes atravs de um
verdadeiro emaranhado de cabos.
INTRODUO 13
A mquina s ficou pronta em 1946, quando j era muito tarde para ter qualquer uso
em s objetivos originais. Entretanto, logo que a guerra acabou, Mauchley e Eckert
obtiveram misso para organizar um curso de vero para descrever o trabalho deles
para seus colegas itistas. Aquele curso de vero deu incio a uma exploso de
interesse na construo de grandes putadores digitais.
Aps esse histrico curso de vero, muitos outros pesquisadores comearam a
construir compu ores eletrnicos, O primeiro computador operacional foi o EDSAC
(1949), construdo na iversidade de Cambridge, na Inglaterra, por Maurice Wilkes.
Dentre outros,temos o JOHNIAC, R.and Corporation, o ILLIAC, na University of
Illinois, o MANIAC, no Los Alamos Laboratory, WEIZAC, no Weizmann Institute, em
Israel.
Eckert e Mauchley comearam a construir uma nova mquina, o EDVAC (Electronic
Discrete iable Automatic Computer, ou seja, Computador Automtico Eletrnico de
Variveis Discre , mas este projeto foi seriamente afetado quando eles deixaram a
Universidade da Pennsylvania a criar uma companhia, a Eckert-Mauchley Computer
Corporation, em Philadelphia (o Vale Silcio no existia ainda). Aps uma srie de
fuses, esta companhia tornou-se a atual Unisys rporation.
Enquanto isso, uma das pessoas envolvidas no projeto ENIAC, John von Neumann, foi a
o Instituto de Estudos Avanados de Princeton, para construir sua prpria verso do
EDVAC, iquina IAS. Von Neumann era um gnio do tipo Leonardo da Vinci. Falava
muitas lnguas, um especialista em cincias fsicas e matemticas, e tinha total
lembrana de tudo que ouvia, ou lia. Era capaz de citar de cor, literalmente, o
texto de livros que ele havia lido anos es. Quando ele se interessou por
computadores, j era o mais eminente matemtico do mundo. Uma das coisas bvias
para ele era que a programao de computadores com um grande nero de chaves e cabos
era lenta, tediosa e inflexvel. Ele comeou a perceber que o programa leria ser
representado em forma digital na memria do computador, juntamente com os dados.
servou tambm que a desajeitada aritmtica decimal utilizada pelo ENIAC, em que
cada ito era representado por 10 vlvulas (uma ligada e nove desligadas), poderia
ser substituda uma aritmtica binria paralela.
Seu projeto bsico, agora conhecido como mquina de von Neumann, foi utilizado no
EDSAC, rimeiro computador com programa armazenado, e ainda a base de quase todos
os computadores tais, at mesmo hoje, quase meio sculo depois. Este projeto, e a
mquina IAS, construda colaborao com Herman Goldstine, tem tido tanta influncia
que vale uma breve descrio. t esboo da arquitetura dado na Fig. 1.5.
A mquina de von Neuman possua cinco partes bsicas: a memria, a unidade lgico-
aritmtica,
nidade de controle de programa e os equipamentos de entrada e sada. A memria
consistia
t096 palavras, cada palavra possuindo 40 bits (0 ou 1). Cada palavra armazenava
duas instrues
20 bits ou um inteiro de 39 bits com sinal. As instrues possuam 8 bits dedicados
a dizer
po da instruo, e 12 bits para especificar uma dentre 4096 palavras de memria.
Dentro da unidade lgico-aritmtica, a precursora da atual CPU (Central Processing
Unit, seja (Unidade Central de Processamento), havia um registrador interno
especial de 40 bits ominado acumulador. Uma instruo tpica adicionava uma palavra
de memria ao acumulador armazenava o acumulador na memria. A mquina no possua
aritmtica de ponto-flutuante,
Fig. 1.5 A mquina original de von Neu
Acumulador mann.
14 ORGANIZAO ESTRUTURADA DE COMPUTADORES
pois von Neumann achava que qualquer matemtico competente deveria ser capaz de a
de cabea a posio do ponto decimal (na realidade, ponto binrio).
Mais ou menos na mesma poca em que von Neumann estava construindo a m&
pesquisadores do M.I.T estavam tambm construindo um computador. Ao contrri ENIAC
e outras mquinas deste tipo, que possuam comprimentos longos de pala visavam ao
clculo numrico pesado, a mquina do M.I.T., o Whirlwind 1, possua 1 16 bits e
foi projetado para controle de tempo real. Este projeto levou inveno da de
ncleo, por Jay Forrester, e depois, eventualmente, ao primeiro minicomputador co
Enquanto tudo isto acontecia, a IBM era uma companhia pequena engajada nc
fabricao de perfuradoras de cartes e de mquinas mecnicas de classificao de
carte' a IBM fosse um dos financiadores de Aiken, ela no estava muito interessada
em com at produzir o 701 em 1953, muito depois da companhia de Eckert e Mauchley
j ser um do mercado comercial com seu computador UNIVAC. O 701 tinha 2K de palav
bits, com duas instrues por palavra. Foi a primeira de uma srie de mquinas
cient vieram a dominar a indstria em uma dcada. Trs anos mais tarde surgiu o
704, 4K de memria de ncleo, instrues de 36 bits e hardware para ponto-
flutuante. a IBM iniciou a produo de sua ltima mquina a vlvulas, o 709, que
era basicam verso melhorada do 704.
1.5.3 A Segunda Gerao - Transistores (1955-1965)
O transistor foi inventado no BeIl Labs em 1948 por John Bardeen, Walter Brattain
Shockley, pelo qual foram agraciados com o Prmio Nobel de Fsica de 1956. Nos 10
anos s o transistor revolucionou os computadores, e no final dos anos 50 os
computadores estavam obsoletos. O primeiro computador transistorizado foi
construdo no Lincoin La do M.I.T., uma mquina de 16 bits baseada no Whirlwind 1.
Foi denominada TX-O (Traru eXperimental computer 0, ou seja, computador
transistorizado experimental 0), que visa mente a ser um prottipo para testar o
TX-2, uma verso melhorada.
O TX-2 no significou muito, mas um dos engenheiros que trabalhavam no Lincoin Lal
Kenneth Olsen, criou uma firma (DEC), em 1957, para fabricar uma mquina comerci
parecida com o TX-0. Apenas quatro anos depois que o PDP-1 apareceu, e este
atraso a principalmente porque os investidores fundadores da DEC acreditavam
firmemente que n mercado para computadores. Ao invs disso, a DEC vendia
principalmente pequena de circuitos.
Quando o PDP-1 finalmente apareceu em 1961, ele possua 4K palavras de 18 bi tempo
de ciclo de 5 microssegundos. Este desempenho era a metade daquele do IB] a mquina
transistorizada sucessora do 709, e o mais rpido computador do mundo tempo. O PDP-
1 custava US$ 120.000, e o 7090 custava milhes. A DEC vendeu de PDP-1, e a
indstria de minicomputadores nascia.
Um dos primeiros PDP-1 foi doado ao M.I.T., onde rapidamente atraiu a ateno d
desses jovens gnios to comuns nesse instituto. Uma das muitas inovaes que o PDP
era um display visual (CRT) e a capacidade de se plotar pontos em qualquer posio
tela de 512 por 512. Em pouco tempo, os estudantes j tinham programado o PDP-1 pa
guerra nas estrelas, e o mundo tinha assim seu primeiro videogame.
Poucos anos mais tarde, a DEC lanou o PDP-8, que era uma mquina de 12 t muito
mais barata que o PDP-1 (US$ 16.000). O PDP-8 trouxe uma grande inovao: ui mento
nico, o omnibus, como mostrado na Fig. 1.6. Um barramento um conjuntc paralelos
utilizados para conectar os componentes de um computador. Esta arquitetura em
muito, da mquina IAS, com memria centralizada. Desde ento, foi adotada p todos
os computadores de pequeno porte. Eventualmente, a DEC vendeu 50.000 PDP a tornou
lder no mercado de minicomputadores.
Entrementes, a reao da IBM ao transistor foi construir uma verso transistori
709, o 7090, como j dissemos antes, e mais tarde o 7094. O 7094 tinha um tempo
de 2 microssegundos e 32K palavras de 36 bits de memria de ncleo. O 7090 e o 7094
ir
o fim das mquinas do tipo ENIAC, mas elas dominaram a computao cientfica duran
anos na dcada de 60.
INTRODUO is
Omnibus
1.6 O omnibus do PDP-
Ao mesmo tempo que a IBM tornou-se uma importante fora na computao cientfica ri
o 7094, ela ganhou muito dinheiro vendendo uma pequena mquina de orientao
comercial, tominada 1401. Esta mquina podia ler e escrever fitas magnticas, ler e
perfurar cartes, liprimir quase to rapidamente quanto o 7094, por uma frao do
preo. Era terrvel para icaes cientficas, mas perfeita para manter registros
comerciais.
O 1401 era incomum no fato de no possuir registradores, ou mesmo um comprimento de
palavra. Possua uma memria de 4K bytes de 8 bits. Cada byte continha um caractere
6 bits, um bit administrativo e um bit usado para indicar fim-de-palavra. Uma
instruo MOVE,
exemplo, tinha um endereo fonte e un endereo destino, e comeava copiando bytes
do
te para o destino at atingir um com o bit fim-de-palavra ativado.
Em 1964, uma nova companhia iniciante, CDC, lanou o 6600, uma mquina que era
quase a ordem de grandeza mais rpida que o poderoso 7094. Foi amor primeira
vista entre os nbercrunchers (trituradores de nmeros), e o CDC foi lanado assim
para o sucesso. O segredo sua velocidade, e a razo de ser muito mais rpido do que
o 7094, era que dentro da CPU 'ia uma mquina altamente paralela. Ela possua
diversas unidades funcionais para fazer adies, ras para fazer multiplicaes, e
ainda uma outra para diviso, e todas elas podiam executar paralelo. Embora fosse
necessria uma programao cuidadosa para obter o mximo dela, ri algum trabalho
era possvel ter 10 instrues sendo executadas simultaneamente.
Como se isto no bastasse, 06600 tinha alguns pequenos computadores internos para
ajud-lo,
a espcie de Branca de Neve e os Sete Anes. Isto significava que a CPU podia
gastar todo
u tempo "triturando" nmeros, deixando todos os detalhes de gerncia de tarefas e
de entrada!
la para computadores menores. O 6600 foi um marco importante na computao
numrica.
Houve muitos outros computadores nesta gerao, mas um sobressaiu-se por uma razo
ito diferente, e vale mencionar: o Burroughs B5000. Os projetistas de mquinas como
o PDP-1, 4 e 6600 estavam todos completamente preocupados com o hardware, ou
fazendo-o barato C) ou rpido (IBM e CDC). software era quase completamente
irrelevante. Os projetistas B5000 tomaram uma direo diferente. Eles construram
uma mquina com a inteno especfica program-la em Algol 60, uma linguagem
precursora do Pascal, e incluram muitos aspectos hardware para facilitar a tarefa
do compilador. A idia de que o software tambm importava cia. Infelizmente, ela
foi esquecida quase que imediatamente.
.4 A Terceira Gerao - Circuitos Integrados (1965-1980)
A inveno do circuito integrado possibilitou que dezenas de transistores fossem
colocados
uma nica pastilha. Este encapsulamento tornou possvel construir computadores
menores,
5 rpidos e mais baratos que seus predecessores transistorizados. Alguns dos mais
significativos
putadores desta gerao so descritos abaixo.
Por volta de 1964, a IBM era o fabricante lder de computadores, e tinha um grande
problema
suas duas mquinas de grande sucesso, o 7094 e o 1401: eram totalmente
incompatveis re si. Uma era uma processadora de nmeros altamente veloz (number
cruncher), que utilizava mtica binria paralela sobre registradores de 36 bits, e
a outra era uma excelente processadora entrada/sada, que utilizava aritmtica
decimal serial sobre palavras de tamanho varivel na iiria. Muitos clientes
possuam ambos, e no gostavam da idia de ter dois departamentos Drogramao com
nada em comum.
Quando chegou o momento de substituir estas duas sries, a IBM deu um passo
radical.
iou uma nica linha de produtos, o System/360, baseada em circuitos integrados,
projetada
16 ORGANIZAO ESTRUTURADA DE COMPUTADORES
tanto para computao cientfica quanto comercial. O System/360 continha muitas
inovaes. a mais importante delas era que esta famlia, de cerca de meia dzia de
mquinas, possua a mesma linguagem de montagem, com tamanhos e potncias
crescentes. Um cliente poderia substi tuir seu 1401 por um 360 Modelo 30, e seu
7094 por um 360 Modelo 75. O Modelo 75 era maior e mais rpido (e mais caro), mas o
software escrito para um deles poderia, em princpio, ser executado no outro. Na
prtica, o software escrito para o modelo pequeno executaria em um modelo maior sem
problemas, mas, quando mudssemos para uma mquina menor, o programa poderia nc
caber na memria. Todavia, este foi um grande avano em relao situao
existente com o 7094 e o 1401. A idia de famlia de mquinas foi aceita
imediatamente, e poucos anos depois a maioria dos fabricantes de computadores
possua uma famlia de mquinas comuns apresentando uma grande variao de preos e
desempenhos. Algumas caractersticas da famlia 360 inicial esto mostradas na Fig.
1.7. Outros modelos foram lanados mais tarde.
Uma outra importante inovao do 360 foi a multiprograinao, com vrios programas
presen tes na memria simultaneamente, de forma que quando um estiver esperando
pela entrada/sada
ser completada, um outro poderia estar sendo executado.
O 360 tambm foi a primeira mquina que podia emular (simular) outros computadores.
Os modelos menores podiam emular o 1401, e os maiores podiam emular o 7094, de
forma que os clientes podiam continuar a executar seus antigos programas binrios
sem modificaes. enquanto eram convertidos para o 360. Alguns modelos executavam
os programas do 1401 to mais rapidamente que o prprio, que muitos clientes nunca
os converteram.
O 360 resolveu o dilema do binrio-paralelo versus decimal serial com um
compromisso:
a mquina tinha 16 registradores de 32 bits para aritmtica binria, mas sua
memria era orientada para bytes, como aquela do 1401, e ela possua instrues
seriais do estilo 1401 para copiar registros de tamanhos variveis na memria.
Uma outra caracterstica importante do 360 era um enorme (para aquela poca) espao
de endereamento de 224 bytes (16 megabytes). Com o custo de memria da ordem de
vrios dlares por byte naquela poca, 16 megabytes parecia uma infinidade.
Infelizmente, a srie 360 foi seguida posteriormente pela srie 370, srie 4300,
srie 3080 e srie 3090. todas utilizando exatamente a mesma arquitetura. Por volta
da metade dos anos 80, o limite de 16 megabytes tornou-se um srio problema, e a
IBM teve que abandonar parcialmente a compatibilidade quando adotou os endereos de
32 bits necessrios para enderear a nova memria de 232 bytes.
Olhando para o passado, poder-se-ia argumentar que, uma vez que eles j tinham
palavras e registradores de 32 bits, provavelmente poderiam ter tido endereos de
32 bits tambm, mas naquela poca ningum poderia imaginar uma mquina com 16
megabytes. Culpar a IBM por esta falta de viso como culpar hoje um vendedor de
computadores pessoais de ter apenas endereamento de 32 bits, pois dentro de poucos
anos todos os computadores pessoais necessitaro de mais de 4 gigabytes (um
gigabyte igual a i0 bytes), e ento os endereos de 32 bits se tornaro
intoleravelmente pequenos.
O mundo do minicomputador deu um enorme passo frente na terceira gerao com o
lanamento, pela DEC, do PDP-11, um sucessor de 16 bits do PDP-8. De vrias
maneiras, era como se o PDP-11 fosse o irmo caula da srie 360, assim como o PDP-
1 parecia ser o irmo caula da srie 7094. Tanto o 360 quanto o PDP-11 possuam
registradores orientados para palavras
Modelo
Propriedade 30 40 50 65
Desempenho relativo
1
3,5
10
21
Tempo de ciclo (ns)
1000
625
500
250
Memria mxima (K)
64
256
256
512
Bytes buscados por ciclo
1
2
4
16
Nmero mximo de canais de dados
3
3
4
6
Fig. 1.7 As ofertas iniciais da linha de produtos IBM 360.
INTRODUO 17
emna orientada para bytes, e ambos cobriam uma ampla faixa de relao
custo/desempenho. PDP-l1 obteve um enorme sucesso, especialmente nas universidades,
e manteve a liderana DEC em relao aos outros fabricantes de minicomputadores.
.5 A Quarta Gerao - Computadores Pessoais e VLSI (1980-199?)
Nos anos 80, a VLSI (Very Large Scaie Integration, ou seja, Integrao em Escala
Muito ande) tornou possvel colocar dezenas de milhares, depois centenas de
milhares, e finalmente hes de transistores em uma nica pastilha. Este
desenvolvimento levou a computadores menores ais rpidos. Antes do PDP-1, os
computadores eram to grandes e caros que as companhias iniversidades tinham que
ter departamentos especiais, denominados centros de computao,
a oper-los. Com o advento do minicomputador, um departamento podia comprar seu
prprio nputador. Por volta de 1980, os preos tinham cado tanto que era possvel
a uma pessoa ca possuir seu prprio computador. A era do computador pessoal tinha
comeado.
Os computadores pessoais foram utilizados de uma maneira bastante diferente daquela
dos
ndes computadores. Eles eram usados para processamento de textos, planilhas e
inmeras
caes altamente interativas que os computadores maiores no realizavam bem.
Atualmente, os computadores podem ser divididos grosseiramente em cinco categorias
que
sobrepem, como mostrado na Fig. 1.8. Elas se baseiam em tamanho fsico, desempenho
reas de aplicao. Na categoria de baixo, temos os computadores pessoais, mquinas
de mesa utilizam uma nica pastilha processadora, geralmente dedicados a um nico
usurio. Eles amplamente usados em escritrios, em ensino e para o uso domstico.
Os minicomputadores so amplamente utilizados em aplicaes de tempo real, por
exemplo,
a controle de trfego areo ou automao industrial. Dizer precisamente em que
consiste minicomputador difcil, pois muitas companhias fabricam produtos que
consistem em um roprocessador de 16 ou 32 bits, uma certa quantidade de memria e
algumas pastilhas de rada/sada, tudo em uma nica placa. Funcionalmente, tal placa
equivale a um minicomputador jicional, tal como o PDP-11.
O supermini essencialmente um minicomputador muito grande, quase sempre baseado
um processador de 32 bits, e geralmente equipado com dezenas de megabytes de
memria. s mquinas so usadas como sistemas departamentais de tempo compartilhado,
como servidoras arquivos (em rede), e muitas outras aplicaes. Estas mquinas
modernas so muito mais lerosas do que o IBM 360 Modelo 75, o mainframe mais
poderoso do mundo quando foi ado (1964).
Os mainframes tradicionais descendem de mquinas do tipo IBM 360 e CDC 6600. As
diferen reais entre um mainframe e um supermini esto na capacidade de
entradalsada e nas aplicaes a as quais so usados. Um supermini tpico pode ter
um ou dois discos de 1 gigabyte, Um nframe pode ter 100 deles. Os superminis so
utilizados normalmente para aplicaes interativas,
uanto a maioria dos mainframes usada para grandes jobs em lote (batch) ou para
processamento transaes, tais como bancos ou reservas de passagens areas, onde
grandes bancos de dados necessrios.
Na extremidade superior do espectro esto os supercomputadores. Estas mquinas so
especial te projetadas para maximizar o nmero de FLOPS (Floating-point Operations
Per Second,
MIPs Megabytes Maquina
Tipo tipicos tlpicos exemplo Exemplo de uso
Computador pessoal
1
1
IBM PS/2
Processamento de textos
Minicomputador
2
4
PDP-1 1/84
Controle de tempo real
Superrnini
10
32
SUN-4
Servidora de arquivos (em rede)
Mainframe
30
128
IBM-3090/300
Bancos
Supercomputador
125
1024
Cray-2
Previso de tempo
1.8 Cinco tipos comuns de computadores.
18 ORGANIZAO ESTRUTURADA DE COMPUTADORES
ou seja, operaes de ponto-flutuante por segundo). Qualquer coisa abaixo de 1
gigaflop/s no considerada um supercomputador. Os supercomputadores possuem
arquiteturas singulares alta mente paralelas, a fim de atingir estas velocidades, e
so apenas eficazes em uma pequena faixa de problemas.
Durante anos, os nomes supercomputador e Seymour Cray foram quase sinnimos. Cray
projetou o CDC 6600 e seu sucessor, o 7600. Depois ele criou sua prpria companhia.
a Cray Research, para construir o Cray-1 e o Cray-2. Em 1989, Cray deixou-a para
formar uma outra companhia para construir o Cray-3.
1.5.6 A Famlia Intel
Em 1968, a Intel Corporation foi criada para fabricar pastilhas de memria. Logo
depois, ela foi contactada por um fabricante de calculadoras que queria uma CPU em
uma nica pastilha para a sua calculadora, e por um fabricante de terminais que
queria um controlador em uma nica pastilha para o seu terminal. A Intel produziu
ambas as pastilhas, o 4004, uma CPU de 4 bits, e o 8008, uma CPU de 8 bits. Estas
foram as primeiras CPUs numa nica pastilha do mundo.
A Intel no esperava outros interessados alm dos clientes originais, de maneira
que estabeleceu uma linha de produo de baixo volume. Estavam errados. Houve um
interesse tremendo, por isto comearam a projetar uma pastilha de CPU de uso geral,
que resolvesse o problema do limite de 16K de memria do 8008 (imposto pelo nmero
de pinos da pastilha). Este projeto resultou no 8080, uma pequena CPU de uso geral.
Similarmente ao PDP-8, este produto tomou a indstria de assalto, e
instantaneamente tornou-se um item de venda em massa. Porm, ao invs de vender
milhares, como a DEC, a Intel vendeu milhes.
Dois anos mais tarde, em 1976, a Intel lanou o 8085, um 8080 encapsulado com
alguns detalhes extras de entrada/sada. Depois surgiu o 8086, uma verdadeira CPU
de 16 bits numa nica pastilha. O 8086 foi projetado para ter uma certa semelhana
com o 8080, mas no era completamente compatvel com o 8080. O 8086 foi seguido
pelo 8088, que possua a mesma arquitetura que o 8086 e executava os mesmos
programas, mas possua um barramento de 8 bits, ao invs de um barramento de 16
bits, o que o tornava mais lento, porm mais barato que o 8086. Quando a IBM
escolheu o 8088 para CPU do IBM PC original, esta pastilha tornou-se rapidamente o
padro da indstria de computadores pessoais.
Nos anos seguintes, a Intel lanou o 80186 e o 80188, essencialmente novas verses
do
8086 e 8088, respectivamente, mas contendo tambm uma grande quantidade de
circuitaria de
entrada/sada. Nunca foram amplamente utilizados.
Nem o 8088 nem o 8086 podiam enderear mais de 1 megabyte de memria. No incio dos
anos 80, isto se tornou um problema cada vez mais srio, por isso a Intel projetou
o 80286, uma verso superior, compatvel com o 8086. O conjunto bsico de
instrues era essencialmente o mesmo do 8086 e 8088, mas a organizao da memria
era muito diferente, e um tanto desajeitada, devido necessidade de
compatibilidade com as pastilhas anteriores. O 80286 foi utilizado no IBM PC/AT e
nos modelos intermedirios do PS/2. Do mesmo jeito que o 8088, obteve um grande
sucesso.
O prximo passo lgico foi uma CPU verdadeiramente de 32 bits numa pastilha, o
80386. Como o 80286, este microprocessador era mais ou menos compatvel com todos
os anteriores. at o 8008, o que era de grande ajuda para aqueles para quem
executar software antigo era importante, mas um incmodo para aqueles que preferiam
uma arquitetura moderna, limpa e simples, sem os erros e a tecnologia do passado.
Como o 80286, esta pastilha foi amplamente utilizada. O 80386SX uma verso
especial do 80386, projetado para ser compatvel com o soquete do 80286 para prover
um melhoramento parcial s mquinas 80286 existentes.
O 80486 uma verso superior, compatvel com o 80386. Todos os programas para o
80386 sero executados no 80486 sem modificaes. Por isso, quase sempre no texto,
quando nos referirmos ao 80386, o mesmo valer para o 80486. A diferena bsica
entre o 80486 e o 80386 a presena de um co-processador de ponto-flutuante,
controlador de memria e 8K de memria cache na pastilha. Alm disso, o 80486
tipicamente duas a quatro vezes mais rpido que o 80386. e tambm mais adequado a
sistemas multiprocessadores.
A evoluo da linha de CPU da Intel reflete a evoluo da indstria de computadores
como
INTRODUO 19
Largura do
Largura dos barramento Espao de
me Ano registradores de dados endereamento Comentrios
04
1971
4
4
1K
Primeiro microprocessador em uma pastilha
08
1972
8
8
16K
Primeiro microprocessador de 8 bits
80
1974
8
8
64K
Primeira CPU de uso geral em uma pastilha
85
1974
8
8
64K
8080 reencapsulado
86
1978
16
16
1M
Primeira CPU de 16 bits em uma pastilha
88
1980
16
8
1M
Processador utilizado no IBM PC
186
1982
16
16
1M
8086 + suporte de entrada/sada em uma pastilha
188
1982
16
16
1M
8088 + suporte de entrada/sada em uma pastilha
286
1982
16
16
16M
Espao de endereamento aumentado para 16 megabytes
386
1955
32
32
70T
Verdadeira CPU de 32 bits em uma pastilha
386SX
1988
32
16
70T
80386 com um barramento de 80286
486
1989
32
32
70T
Verso mais rpida do 80386
1.9 A famlia Intel de CPUs. Observe que: K = Kilo (2' M = Mega (220). G = Giga (2
e Terra (240).
todo. Em cerca de uma dcada e meia, fomos de uma CPU de 4 bits para uma CPU de
)its, com um fator de ganho de desempenho superior a 1000. Por outro lado, enquanto
o
contm 30.000 transistores, o 80486 possui mais de um milho deles. A famflia Intel

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

48 ORGANIZAO ESTRUTURADA DE COMPUTADORES


Tempo
(a) 1 ll
1 1 l 1 1 Amplitude 1 Amplitude
(b) alta baixa
(dl
difase
Fig. 2.25 Transmisso do nmero binrio 01001011000100 em uma linha telefnica, bit
a bit. (a) Sinal de
dois ni (b) Modulao em amplitude. (e) Modulao em freqncia. (d) Modulao em
fase.
chamado modulao. Na modulao em amplitude [ a Fig. 2.25(b)], dois nveis
diferentes
de tenso so utilizados para O e 1, respectivamente. Uma pessoa ouvindo dados
digitais transmitidos
a uma taxa muito baixa ouviria um rudo alto para um 1 e nenhum rudo para um O.
Na modulao em freqncia [ a Fig. 2.25(c)], o nvel de tenso constante, mas a
freqncia da portadora diferente para 1 e 0. Uma pessoa ouvindo dados digitais
modulados em freqncia ouviria dois tons, correspondendo a O e 1. A modulao em
freqncia muitas vezes chamada frequency shift keying (chaveamento por
deslocamento de freqncia, FSK).
Na modulao em fase simples [ a Fig. 2.25(d)], a amplitude e a freqncia no
variam, mas a fase da portadora invertida 180 graus quando o dado muda de O para
1 ou de 1 para 0. Em sistemas mais sofisticados de modulao em fase, no incio de
cada intervalo indivisvel de tempo, a fase da portadora abruptamente deslocada
de 45, 135, 225 ou 315 graus, para permitir dois bits por intervalo de tempo. Isto
chamado codificao dibit em fase. Outros esquemas para transmitir 3 ou mais bits
por intervalo de tempo tambm existem. O nmero de intervalos de tempo a taxa de
baud (baud rate). Com 2 ou mais bits por intervalo, a taxa de bits ser maior que o
baud rate. Muitas pessoas confundem estes dois termos.
Se o dado a ser transmitido consiste em uma srie de caracteres de 8 bits, seria
desejvel que houvesse uma conexo capaz de transmitir 8 bits simultaneamente -
isto , 8 pares de fios. Como as linhas telefnicas possuem apenas um canal, os
bits devem ser enviados serialmente, um aps o outro (ou em grupos de dois, se a
codificao dibit estiver sendo utilizada). O dispositivo que aceita caracteres do
computador na forma de sinal de dois nveis, um bit de cada vez, e transmite os
bits em grupos de um ou dois, na forma modulada em amplitude, freqncia ou fase,
o modem.
O modem transmissor envia os bits individuais de um caractere em intervalos de
tempo regularmente distribudos. Por exemplo, 1200 baud significa que um sinal muda
a cada 833 s. Um segundo modem no lado receptor usado para converter a portadora
modulada para um nmero binrio. Como os bits chegam ao receptor em intervalos
regularmente espaados, uma vez que o modem receptor determina o incio de um
caractere, seu relgio indica quando amostrar a linha para ler os valores dos bits
individuais.
1
ORGANIZAO DE SISTEMAS DE COMPUTADORES 49
nsmisso Assncrona e Sncrona
Dois mtodos diferentes so usados para transmitir caracteres. Na transmisso
assncrona, ervalo de tempo entre dois caracteres no fixo, embora o intervalo
entre dois bits consecutivos m caractere seja fixo. Por exemplo, uma pessoa
digitando em um terminal de um sistema empo compartilhado no ir teclar com uma
velocidade uniforme, assim o intervalo entre caracteres sucessivos no ser
constante.
Essa variao na velocidade cria o problema de como o receptor pode reconhecer o
primeiro le um caractere. Se os mtodos de modulao da Fig. 2.25 so usados, no
h forma de nguir entre a ausncia de dado e um bit em. O. Um caractere formado
exclusivamente de ma completamente invisvel. Alm disso, um caractere formado por
um 1 seguido de sete o poderia ser distinguido de um caractere formado de sete Os
seguido de um 1, porque eptor no teria meios de dizer se o bit em 1 estava no
incio, meio ou fim do caractere.
Para permitir que o receptor reconhea o incio de um caractere, um bit de partida
(start transmitido exatamente antes de cada caractere. Para aumentar a
confiabilidade, 1 ou ts de parada (stop bits) so transmitidos exatamente aps cada
caractere. Normalmente, a mantida no estado 1 quando no h dados sendo
transmitidos, para permitir a deteco Lm circuito interrompido. Assim, o start bit
O. Os stop bits so ento 1, para distingui-los tart bits. Entre o start bit e os
stop bits, bits de dados so transmitidos em intervalos de DO uniformemente
espaados. Um temporizador no modem receptor disparado quando 'rt bit chega,
permitindo ao modem dizer qual bit qual. A comunicao assncrona ilustrada ig
2.26(a).
As taxas de bits usadas para transmisso assncrona variam de 110 a 19200 bps. A
110 bps, usados 2 stop bits, assim um caractere de 7 bits, mais um bit de paridade,
mais um bit tart, mais dois bits de stop, do 11 bits por caractere. Portanto, 110
bps correspondem a racteres/s. As taxas mais altas usam apenas um stop bit.
Na transmisso sncrona, a necessidade dos bits de start e stop eliminada. O
resultado umento da velocidade de transmisso de dados. Comunicaes sncronas
ocorrem normalmente as de 4800 bps, 9600 bps, ou ainda maiores. Neste mtodo, uma
vez que os modems esto
-onizados, eles continuam a enviar caracteres para manter o sincronismo, mesmo
quando h dados a transmitir. Um caractere especial enviado quando no h dados.
Nas transmisses
-onas, ao contrrio das assncronas, o intervalo entre dois caracteres sempre
exatamente smo.
As transmisses sncronas requerem que os relgios do transmissor e do receptor
permaneam onizados por longos perodos de tempo, o que no ocorre na transmisso
assncrona porque
O tempo entre caracteres varivel
Tempo
(a)
O tempo entre caracteres constante
(b)
2.26 Modos de transmisso. (a) Transmisso assncrona. (b) Transmisso sncrona.
50 ORGANIZAO ESTRUTURADA DE COMPUTADORES
o incio de cada caractere explicitamente indicado por um stari bit. O perodo de
tempo duran o qual uma transmisso pode ser mantida sem ressincronizar as fases do
receptor e do transmiss depende da estabilidade dos relgios. Tipicamente, os
relgios so suficientemente estveis pa permitir a transmisso de blocos de
milhares de caracteres sem ter que ressincronizar. Ess blocos, muitas vezes, usam
cdigos Hamming, ou outras tcnicas, para detectar e corrigir em de transmisso. A
transmisso sncrona ilustrada na Fig. 2.26(b).
Transmisso Simplex, Haif-dupiex e Full-dupiex
Trs modos de transmisso so utilizados com o propsito de comunicao: simplex,
ha/f-dup/
e full-dupiex. Uma linha simplex capaz de transmitir dados em apenas uma direo.
Isto n
devido a nenhuma propriedade dos fios, mas simplesmente porque de um lado h apen
um transmissor e, do outro, apenas um receptor. Esta configurao raramente usada
por comp
tadores porque ela no prov nenhum meio de o receptor transmitir um sinal de
reconheciment
para o transmissor, indicando que a mensagem foi recebida corretamente. A difuso
de rdi
e televiso so exemplos de transmisso simplex.
Uma linha haif-dupiex pode enviar e receber dados em ambas as direes, mas no
simultanea
mente. Durante qualquer transmisso, um modem o transmissor e o outro o
receptor. Um
situao comum um dispositivo A, agindo como transmissor, enviar uma srie de
caractere
a um dispositivo B, agindo como receptor. Ento A e B trocam simultaneaniente os
papi:
e B envia uma mensagem de volta a A especificando se os caracteres foram recebidos
com o
sem erros. Se no houve erros de transmisso, A e B trocam novamente os papis e A
envi
a prxima mensagem para B. Se houve erros, A transmite a mensagem deturpada de novo
A "conversa" entre transmissor e receptor a respeito do que fazer a seguir
chamada de protocolo
O tempo gasto para comutar uma linha haif-dupiex de uma direo para outra pode ser
d
muitos tempos de um caractere. Uma linha frrea um exemplo de um canal haif-
dupiex, porque
ela pode lidar com trfego em ambas as direes, mas no ao mesmo tempo.
Uma linha full-dupiex pode, ao contrrio, enviar e receber dados em ambas as
direes simultaneamente. Conceitualmente, uma linha full-dupiex equivalente a
duas linhas simpiex, uma em cada direo. Como as duas transmisses podem ocorrer
em paralelo, uma em cada direo, uma linha full-dupiex pode transmitir mais
informaes que uma linha haif-dupiex com a mesma taxa. Alm disto, linhas full-
dupiex no perdem tempo comutando direes.
23.3 O Mouse
Com o decorrer do tempo, os computadores esto sendo utilizados por pessoas com
menos conhecimento de como eles funcionam. Os computadores da gerao ENIAC eram
utilizados somente por pessoas que os construram. Na dcada de 50, os computadores
s eram utilizados por programadores profissionais altamente especializados.
Atualmente, os computadores so utili zados por pessoas que necessitam de algum
trabalho realizado e no sabem (nem mesmo querem saber) muito sobre como eles
funcionam ou como so programados.
A maioria destas pessoas acham que os comandos (freqentemente criptogrficos)
digitados nos teclados no so amigveis, se no hostis. Elas preferem sistemas nos
quais o computador exibe menus na tela, e elas apontam o item desejado. O uso deste
modelo requer um meio de apontar a tela. O meio mais comum de permitir que usurios
apontem a tela com um dispositivo chamado mouse.
Um mouse uma pequena caixa plstica que fica na mesa ao lado do terminal. Quando
ele movido ao longo da mesa, um pequeno apontador na tela se move tambm,
permitindo que os usurios apontem os itens na tela. O mouse tem um, dois ou trs
botes na parte superior, para permitir que os usurios selecionem itens de menus.
Muito sangue tem sido derramado como resultado das discusses sobre quantos botes
um mouse deve ter. Usurios ingnuos preferem um ( difcil apertar o boto errado
quando h apenas um), mas os mais sofisticados gostam do poder de muitos botes
para fazer coisas fantsticas.
Existem trs tipos de mouse atualmente: o mecnico, o tico e o optomecnico. Uni
tipo
de rnouse mecnico possui duas rodas de borracha na parte de baixo, com seus eixos
perpendiculares
um ao outro, como ilustrado na Fig. 2.27. Quando o mouse movimentado
paralelamente ao
L
ORGANIZAO DE SISTEMAS DE COMPUTADORES 51
Apontador controlado pelo mouse
Mouse
Rodas de borracha
2.27 O uso de um mouse com rodas para apontar itens no menu.
eixo principal, uma das rodas gira. Quando ele movimentado perpendicularmente ao
seu
principal, a outra gira. Cada roda aciona um resistor varivel (potencimetro).
Medindo iariaes de resistncia, possvel saber quanto cada roda girou, e assim
calcular quanto zouse se moveu em cada direo. Outro tipo de mouse mecnico obtm
o mesmo efeito do uma esfera levemente saliente na parte inferior.
O segundo tipo o mouse tico. Este tipo no tem rodas ou esferas. Em vez disto,
ele sui um LED (Lighl Emitting Diode diodo emissor de luz) e um fotodetector na
parte inferior. nouse tico usado sobre uma placa especial de plstico contendo
uma grade retangular inhas pouco espaadas. A medida que o mouse se movimenta sobre
a grade, o fotodetector te o passar das linhas, percebendo as mudanas na
quantidade de luz refletida do LED. ircuito eletrnico dentro do mouse conta o
nmero de linhas atravessadas em cada direo.
O terceiro tipo o rnouse optomecnico. Como o mouse mecnico de duas rodas, ele
tem rodas montadas a 90 graus uma da outra. Entretanto, cada roda tem um LED no
centro,
i srie de fendas uniformemente espaadas ao longo da circunferncia da roda e um
detector
i da roda. A medida que o mouse se movimenta, as rodas giram e pulsos de luz
atingem
letectores sempre que uma fenda fica entre um LED e seu detector. O nmero de
pulsos
ctados proporcional ao movimento.
Embora um mouse possa funcionar de diversas formas, um mtodo comum ele
transmitir
t seqncia de trs hytes para o computador a cada 100 ms. Geralmente, esses
caracteres
1 atravs de uma linha RS-232-C, como se tivessem sido digitados em um teclado. O
primeiro contm um nmero inteiro com sinal dizendo quantas unidades o mouse moveu
no eixo s ltimos 100 ms. O segundo fornece a mesma informao para o movimento no
eixo y. rceiro byte contm o estado atual dos botes do mouse. Algumas vezes so
utilizados dois s para cada coordenada.
Um software de baixo nvel no computador recebe esta informao e converte os
movimentos tivos enviados pelo mouse em posies absolutas. Ele ento mostra uma
seta na tela na o correspondente posio do mouse. Quando a seta aponta o item
desejado, o usurio rta um boto do rnouse, e o computador pode determinar qual
item foi selecionado atravs eu conhecimento da posio da seta na tela.
4 Impressoras
Embora terminais CRT possam ser suficientes para muitas aplicaes interativas,
para outras cessno um registro permanente das sadas em papel. Para atender esta
necessidade, muitos s de impressora tm sido desenvolvidos. Descreveremos
brevemente a seguir os principais de impressora e como eles funcionam.
Janela
Menu
Botes do mouse
Direo do movimento das rodas
52 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Impressoras de Impacto
O tipo mais antigo de impressora, a impressora de impacto, funciona como um
teletipo um pedao de metal ou plstico, com uma letra em alto-relevo, comprime uma
fita tintada contn uma folha de papel, deixando uma imagem da letra no papel, como
mostrado na Fig. 2.28(a) Nos computadores pessoais atuais, esta forma de impresso
usada nas impressoras tipo margarid (daisy wheel), assim chamadas porque elas
possuem uma roda raiada como uma margarida, con os caracteres nas ptalas, como
ilustrado na Fig. 2.28(b). Para imprimir um caractere, a impressor roda o caractere
para a frente de um eletrom, e ento energiza o eletrom, pressionandc a letra
contra a fita. Impressoras deste tipo produzem boa qualidade, especialmente quandc
usadas com fita carbonada, e atingem uma velocidade de 20 a 40 caracteres/s.
Grandes mainframes tambm usam impressoras de impacto, mas aqui as letras so
gravadas em uma esteira de ao que contorna o papel. Uma impressora de 80 colunas
ter 80 martelos. um para cada coluna. Uma linha impressa instruindo cada martelo
a bater logo que a letra apropriada estiver em frente a ele. A cada rotao da
esteira, todos os caracteres iro aparecer em cada coluna, tornando possvel
imprimir a linha inteira. Essas impressoras podem geralmente imprimir uma pgina em
poucos segundos ou menos.
Impressoras Matriciais
Outro tipo comum de impressora so as impressoras matriciais, nas quais a cabea de
impresso
contm de 7 a 24 agulhas eletromagneticamente ativveis e varrem cada linha
impressa. Uma
impressora barata deve ter sete agulhas para imprimir 80 caracteres, com uma caixa
de 5 x
7, em cada linha. De fato, a linha impressa consiste em sete linhas horizontais,
cada qual formada
por 5 x 80 = 400 pontos. Cada ponto pode ser ou no impresso, dependendo dos
caracteres
a serem impressos. A Fig. 2.29(a) ilustra a letra "A" impressa com uma caixa de 5 x
7.
A qualidade de impresso pode ser aumentada atravs de duas tcnicas: usando mais
agulhas ou sobrepondo os pontos. A Fig. 2.29(b) mostra um "A" impresso usando 24
agulhas com pontos sobrepostos. Geralmente, so necessrios mltiplos passos para
cada linha para produzir pontos sobrepostos, e assim o aumento de qualidade implica
reduzir a velocidade de impresso. Boas impressoras matriciais podem operar em
vrios modos, oferecendo diferentes compromissos entre qualidade de impresso e
velocidade.
(a) (b)
Fig. 2.28 (a) Seo de uma impressora de impacto. (b) Uma margarida.
ORGANIZAO DE SISTEMAS DE COMPUTADORES 53
00
0
o
0000
o
o Fig. 2.29 (a) A letra "A" em uma ma
triz 5 < 7. (b) A letra "A" impressa
com 24 agulhas sobrepostas.
ressoras Laser
Provavelmente, o desenvolvimento mais excitante em impresso, desde que Johann
Gutenberg ntou o tipo mvel no sculo XV, a impressora laser. Este dispositivo
combina uma imagem Ita qualidade, excelente flexibilidade, boa velocidade e custo
moderado em um nico perifrico. impressoras laser usam praticamente a mesma
tecnologia das mquinas fotocopiadoras, e iavelmente estaro disponveis em breve
em mquinas combinando copiadoras e impressoras. A tecnologia bsica ilustrada na
Fig. 2.30. O corao da impressora um tambor rotativo reciso. No incio do ciclo
de cada pgina, ele carregado com cerca de 1000 volts e coberto um material
fotossensvel. Ento, a luz de um laser varre o comprimento do tambor de forma
semelhante ao feixe eletrnico de um CRT, s que em vez de obter a deflexo zontal
utilizando tenso, um espelho octagonal rotativo usado para varrer o tambor, O
e de luz modulado para produzir um padro de pontos claros e escuros. Os pontos
atingidos feixe perdem sua carga eltrica.
Depois de uma linha de pontos ser desenhada, o tambor roda uma frao de grau para
nitir o desenho da prxima linha. Eventualmente, a primeira linha de pontos atinge
o toner, reservatrio de um p preto eletrostaticamente sensvel. O toner atrado
por aqueles pontos ainda esto carregados, formando ento a imagem visual daquela
linha. Pouco tempo depois, mbor coberto de toner pressionado contra o papel,
transferindo o p preto para ele. O cl passa ento atravs de rolos aquecidos que
aderem o toner permanentemente ao papel,
(b)
Laser
O feixe de luz atinge o tambor
Toner
Tambor
Rolos aquecidos
pel
Pilha de
neo
saida
Fig. 2.30 Funcionamento em uma im pressora laser.
54 ORGANIZAO ESTRUTURADA DE COMPUTADORES
fixando a imagem. Mais tarde em sua rotab, o tambor descarregado e sofre uma
limpez de qualquer toner residual, preparando-se para ser carregado e coberto de
novo para a prxim pgina.
Que este processo uma combinao excessivamente complexa de fsica, qumica.
engenhari mecnica e tica, no precisa ser dito. Mesmo assim, montagens completas,
chamadas mquin impressoras, esto disponveis por diversos vendedores. Os
fabricantes de impressoras laser comb nam essas mquinas impressoras com seus
prprios circuitos e software para produzir uma impre sora completa.
Um tipo ligeiramente diferente de mquina impressora que no usa um laser tambr
disponvel. Neste tipo, uma linha de LEDs montada ao longo do tambor (ou
direciona par ele atravs de fibras ticas). Os LEDs so ligados e desligados por
software para formar cad linha. Este projeto tem um projeto tico mais simples, mas
requer mais circuito para aciona todos os LEDs.
Existem duas abordagens diferentes para converter uma mquina de impresso em um
impressora completa. De um lado, o computador apenas fornece textos, com comandos
par selecionar fonts, e talvez desenhar linhas, retngulos e crculos. Um
computador dentro da impre sora constri o mapa de bits para cada pgina e o
transfere para a mquina impressora.
vantagem desta abordagem que a banda passante necessria entre a impressora e o
computadc pode ser muito baixa. A impresso de uma pgina de 50 linhas de 80
caracteres com um nic font requer 4000 bytes de entrada. Uma impressora terminal
funcionando a 12 pginas por minut requer uma banda passante entre computador e
impressora de 6400 bps, o que pode ser suprid por uma linha RS-232-C a 9600 baud. A
desvantagem a necessidade de um computador complet dentro da impressora. O
computador deve ter cerca de um megabyte de memria para armazena o mapa de bits
para uma pgina de 8,5 por 11 polegadas, com uma densidade de 300 x 30 pontos por
polegada quadrada.
Para evitar o gasto do computador e impressora, alguns sistemas usam o computador
princip e sua memria para construir o mapa de bits e simplesmente transferem a
imagem dos bit para a impressora. Este esquema torna a impressora muito barata, mas
requer agora a transfernci da imagem de um megabyte em 5 segundos, para uma taxa
de transferncia de 1,6 megabith Caso contrrio, a impressora pode tornar-se lenta
se esta taxa no puder ser atingida.
Projetos intermedirios entre esses dois extremos so tambm possveis, mas,
claramente quando movemos para 600 pontos/polegada ou mais, necessria uma
considervel memria alm de maior poder computacional e maior banda passante.
Infelizmente, sistemas tipogrfico profissionais precisam de algo entre 1000 e 2000
pontos/polegada; assim, deveremos ter aind que aumentar o desempenho no mnimo uma
ordem de grandeza. Por um lado, a matriz par o original deste livro foi impressa
usando uma impressora de LEDs com uma resoluo efetiv de 450 pontos/polegada. Se
voc compar-lo com livros profissionalmente impressos, usando au microscpio de
baixa potncia, a diferena ser bem aparente. Felizmente o contedo altament
intelectual sobrepe a baixa resoluo fsica.
A impressora laser fez aparecer uma nova indstria inteira, chamada desktop
publishin (editorao eletrnica). O Macintosh da Apple, o IBM PC e outros
computadores possuem softwar que permitem aos usurios digitar documentos e v-los
na tela do mesmo modo que eles seri na forma impressa. Este sistema chamado
geralmente WYSIWYG (Whal You See Is What Yoi Gel), pronunciado "wiz e wig". A
maioria destes sistemas traduz o texto de entrada para um linguagem intermediria
chamada PostScript, e ento o envia para a impressora. Na impressor existe um
interpretador que converte PostScript em pixels e os imprime. PostScript o padr
de fato para as impressoras laser.
2.3.5 Cdigos de Caracteres
Cada computador possui um conjunto de caracteres que ele pode ler ou escrever. Este
conjunt inclui, no mnimo, as 26 letras maisculas, os 10 dgitos de O a 9 e alguns
sinais de pontuao tais como espao, ponto, hfen, vrgula, e o caractere de
retorno de carro. Os conjuntos di caracteres mais sofisticados incluem letras
maisculas e minsculas, os 10 dgitos, uma grandi variedade de pontuao, uma
coleo de caracteres especiais teis em matemtica e no comrcio e algumas vezes
letras gregas.
ORGANIZAO DE SISTEMAS DE COMPUTADORES 55
Caracteres de controle
O NUL NulI
1 SOH Start ot heading
2 STX Start of tesl
3 ETX End of text
4 EOT End of transmission
5 ENQ Enquiry
6 ACK Acknowledge
7 BEL Beil
10 BS Backspace
11 HT Horizontal tab
12 LF Line teed
13 VT Vertical tab
14 FF Form teed
15 CR Carriage return
16 SO Shift out
17 SI Shift in
20 DLE Data link escape
21 DC1 Device control 1
22 DC2 Device control 2
23 DC3 Device control 3
24 DC4 Device control 4
25 NAK Negative acknowledge
26 SYN Synchronous idie
27 ETB End of transrnission biock
30 CAN Cancel
31 EM End of medium
32 SUB Substitute
33 ESC Escape
34 FS File separator
35 GS Group separator
36 RS Record separator
37 US Unit separator
40 (Space)
41
42
43 #
44 $
45
46 &
47
50 (
51 )
52
53 +
54
55 -
56
57
60 O
61 1
62 2
63 3
64 4
65 5
66 6
67 7
70 6
71 9
72
73
74 .
75 =
76 >
77 ?
100
101 A
102 B
103 C
104 D
105 E
106 F
107 G
110 H
111 1
112 J
113 K
114 L
115 M
116 N
117 O
120 P
121 O
122 rt
123 5
124 T
125 U
126 V
127 W
130 X
131 Y
132 Z
133 [
134 \
135 j
136
137 -
140
141 a
142 b
143 c
144 d
145 e
146
147 g
150 h
151 i
152 j
153 k
154 1
155 n
156 n
157 o
160 p
161 q
162
163 a
164
165 u
166 v
167 w
170 a
171 y
172 z
173
174
175
176
177 (Delete)
L31 Cdigo de caracteres ASCII (em octal).
ara transferir esses caracteres para o computador, a cada um associado um nmero:
xemplo, a = 1, b = 2,..., z = 26, + = 27, - = 28. O mapeamento dos caracteres em
ros inteiros chamado de cdigo de caracteres. Os computadores atuais usam cdigos
de 8 ou 9 bits. Um cdigo de 6 bits permite apenas 26 = 64 caracteres, a saber, 26
letras, itos e outros 28 caracteres entre smbolos matemticos e sinais de
pontuao.
ara muitas aplicaes, 64 caracteres no so suficientes, e, neste caso, um cdigo
de 7 bits precisa ser usado. Um cdigo de 7 bits permite at 128 caracteres. Um
cdigo de amplamente usado o chamado cdigo ASCII (American Standard Code for
Information hange). A Fig. 2.9 mostra o cdigo ASCII. Os cdigos de 1 a 37 (octal)
so caracteres ntrole e no so imprimveis. O cdigo de 8 bits mais usado o
EBCDIC da IBM, usado randes mainframes IBM. Ele est obsoleto, mas, por razes de
compatibilidade, a IBM nua utilizando-o.
ESUMO
)s sistemas de computadores so construdos a partir de trs tipos de componentes:
processa memrios e dispositivos de E/S. A tarefa de um processador buscar
instrues, uma da vez, da memria, decodific-Ias e execut-las. O ciclo de busca-
decodificao-execuo sempre ser descrito por um algoritmo, e, de fato, muitas
vezes executado por um programa )retador que executado em um nvel mais baixo.
;istemas capazes de executar instrues em paralelo esto se tornando cada vez mais
comuns. )utadOreS paralelos, do tipo SIMD, incluem os processadores vetoriais e os
array processors. mputadores MIMD so sistemas multiprocessadores que usam vrios
esquemas para interligar )cesSadoreS e memrias.
56 ORGANIZAO ESTRUTURADA DE COMPUTADORES
As memrias podem ser classificadas em principal e secundria. A memria principal
usa para conter o programa que est sendo executado. Seu tempo de acesso
pequeno - um poucas centenas de nanossegundos no mximo - e independente do
endereo acessado. A maior das memrias so equipadas com cdigos de correo de
erro para aumentar sua confiabilidad As memrias secundnas, ao contrrio, possuem
tempos de acesso muito maiores (milissegund ou mais) e que so dependentes da
posio do dado a ser lido ou escrito. As memrias secundri mais comuns so fitas
magnticas, discos magnticos e discos ticos.
Os dispositivos de EIS so usados para transferir informaes de e para o
computador. Cotr exemplo podemos citar os terminais, mice e impressoras laser. Em
mainframes, os dispositiv de E/S so ligados a canais de dados. Em mquinas menores
eles so acionados por controladon ligados diretamente ao barramento do sistema.
Dispositivos de E/S comuns incluem os terminai mice, modems e impressoras. A
maioria dos dispositivos de E/S utilizam o cdigo ASCII, excel em mainframes da
IBM, onde usado o EBCDIC.
PROBLEMAS
1. Qual o propsito do passo 2 na lista da seo 2.1.1? Que aconteceria se esse
passo fos omitido?
2. Um certo clculo altamente seqencial - isto , cada passo depende do
anterior. Ser um array processor ou um processador pipeline o mais apropriado para
este clculo? Expliqu
3. Para competir com a imprensa inventada mais recentemente, um mosteiro medieval
decid produzir livros manuscritos em massa colocando um vasto nmero de escribas em
um imen hall. O monge chefe iria dizer a primeira palavra do livro a ser produzido
e todos os escrib iriam copi-la. Ento, o monge diria a segunda palavra e os
escribas a copiariam. Esse proces seria repetido at que todo o livro fosse ditado
e copiado. Com qual sistema de processadon em paralelo, da seo 2.1.3, esse mtodo
mais se assemelha?
4. Estime quantos caracteres tem um livro tpico, incluindo os espaos. Quantos
bits seriai necessrios para codificar um livro em ASCII com paridade? Quantas
fitas de 1600 bpi seria
necessrias para armazenar uma biblioteca de 106 livros?
5. Estime a capacidade mxima de armazenamento do crebro humano usando as seguint
suposies. Toda a memria codificada usando molculas de DNA. Uma molcula d DNA
uma seqncia linear de quatro nucleotdeos bsicos A, C, G e T. Do peso mdi de
um nucleotdeo, cerca de 10-20 g, e um peso mdio de um crebro de 1500 g, dedu2 a
capacidade de bits do crebro para esta forma de codificao. Nota: Este clculo
apem um limite superior, porque o crebro contm clulas que fazem outra funo
diferente d memria.
6. Quais das seguintes memrias so possveis? Quais so razoveis? Explique.
a. endereo de 10 bits, 1024 clulas, clulas de 8 bits
b. endereo de 10 bits, 1024 clulas, clulas de 12 bits
c. endereo de 9 bits, 1024 clulas, clulas de 10 bits
d. endereo de 11 bits, 1024 clulas, clulas de 10 bits
e. endereo de 10 bits, 10 clulas, clulas de 1024 bits
f. endereo de 1024 bits, 10 clulas, clulas de 10 bits
7. Os sociologistas podem obter trs respostas possveis para uma pergunta tpica,
tal com "Voc acredita em Papai Noel?" - a saber, sim, no e nenhuma resposta. Com
isto, Companhia de Computao Sociomagntica decidiu construir um computador para
process os dados da pesquisa. Este computador tem uma memria trinria - isto ,
cada byte (tryte
ORGANIZAO DE SISTEMAS DE COMPUTADORES 57
consiste em 8 trits, sendo que um trit pode conter um O, 1 ou 2. Quantos trits so
necessrios para armazenar um nmero de 6 bits? D a expresso geral para o nmero
de trits para representar n bits.
Certo computador pode ser equipado com 262.144 bytes de memria. Por que o
fabricante
escolheu um nmero to peculiar, ao invs de um nmero fcil de lembrar como
250.000?
A taxa de transferncia entre a CPU e sua memria de ordens de grandeza maiores
que
a taxa de transferncia de dispositivos de EIS mecnicos. Como esta diferena causa
inefi cincias?
Mea sua prpria velocidade de leitura. Como sua taxa de dados se compara a uma
linha
telefnica de 300 bps?
Calcule a taxa de dados do olho humano usando as seguintes informaes, O campo
visual consiste em cerca de 106 elementos (pixeis). Cada pixel pode ser reduzido a
uma superposio las trs cores primrias, cada uma com 64 intensidades. A
resoluo de tempo 100 ms.
Quanto tempo gasto para ser lido um disco de 800 cilindros, cada um com cinco
trilhas le 32 setores? Primeiramente, todos os setores da trilha O so lidos
comeando do setor J. Ento, todos os setores da trilha 1 a partir do setor 0, e
assim por diante. O tempo Je rotao de 20 ms, e um seek gasta 10 ms entre
cilindros adjacentes e 50 ms para o pior caso. A comutao entre trilhas no mesmo
cilindro pode ser feita instantaneamente.
Um computador tem um barramento com um ciclo de 250 ns, durante o qual ele pode ler
u escrever uma palavra de 32 bits na memria. O computador tem um disco que usa
este
arramento e que tem uma taxa de transferncia de 4 Mbytes/s. A CPU normalmente
busca
e executa uma instruo de 32 bits a cada 250 ns. Em quanto o disco torna a CPU
mais
enta?
O diretor de seu centro de computao local decidiu que o lugar apropriado para as
perfuradoras Je cartes, leitoras de cartes e equipamentos similares o Museu
Nacional. Entretanto, para t-los em lugar seguro, ele decidiu salvar todos os
decks de carto existentes em uma rita magntica. Se o gap entre registros em uma
fita de 1600 bpi de 0,25 polegada, e 15 cartes de 80 colunas so gravados em um
registro fsico, quantas caixas de 2000 cartes ;ero gravadas em uma fita de 2400
ps?
Decodifique o seguinte texto binrio ASCII: 10010010100000 100110010011111010110
1000101
J100000 1011001 1001111 1010101 0101110.
Projete um cdigo de Hamming de paridade par para os dgitos de O a 9.
Projete um cdigo para os dgitos de O a 9, cuja distncia Hamming 2.
Em um cdigo de Hamming, alguns bits so "desperdiados" no sentido de que eles so
isados para verificao, e no para informao. Qual a percentagem de bits
desperdiados )ara mensagens cujo comprimento total (dados + bits de verificao)
2 - 1. Calcule rnmericamente esta expresso para valores de n de 3 a 10.
Erros de transmisso em uma linha telefnica geralmente ocorrem em rajadas, em vez
de individualmente. Como o cdigo bsico de Hamming s pode corrigir erros simples
em um caractere, ele no tem utilidade se o rudo deturpa n bits consecutivos.
Projete um mtodo Je transmitir um texto ASCII em uma linha onde rudos podem
deturpar tantos quantos 100 bits consecutivos. Assuma que o intervalo mnimo entre
duas rajadas de rudos de iilhares de caracteres. Sugesto: Pense cuidadosamente
na ordem de transmisso dos bits.
58 ORGANIZAO ESTRUTURADA DE COMPUTADORES
20. Quando um texto ASCII com paridade par transmitido assincronamente a uma tax
10 caracteres por segundo em uma linha de 110 bps, qual a percentagem dos bits
receb
que realmente contm dados (ao contrrio de overhead)?
21. Certo terminal ASCII assncrono verifica a paridade e imprime a 60 caracteres
por segu Qual a velocidade que ele usa: 110, 300, 600 ou 1200 bps?
22. Um terminal bit-map possui uma tela de 1000 x 1000. A tela redesenhada 50
vezes segundo. Qual a durao do pulso correspondente a um pixel?
23. Um fabricante anuncia que seu terminal colorido bit-map pode mostrar 224 cores
diferei Porm o hardware tem apenas 1 byte para cada pixel. Como isto pode ser
feito?
24. A Companhia de Modems Hi-Fi acabou de projetar um novo modem de modulao
freqncia, que usa 16 freqncias ao invs de 2. Cada segundo dividido em n
inter iguais de tempo, cada qual contendo um dos 16 tons possveis. Quantos bits
por segu pode este modem transmitir, usando transmisso sncrona?
25. Quantos caracteres por segundo (7 bits + paridade) podem ser transmitidos
atravs de linha de 2400 bps em cada um dos seguintes modos?
a. Sncrono
b. Assncrono (1 start bit e 1 stop bit)
26. Escreva um procedimento hamming (ascii, codificado) que converte os 7 bits de
baixa or de ascii em uma palavra-cdigo inteira de 11 bits em codificado.
27. Escreva uma funo distncia (cdigo, n, k) que recebe um arranjo cdigo, de n
caract de k bits cada, como entrada, e retorna a distncia do conjunto de
caracteres como sada
1
3
O NVEL DE LGICA DIGITAL
4a base do sistema hierrquico da Fig. 1.2 encontramos o nvel de lgica digital, o
hardware
lo computador. Neste captulo, examinaremos muitos aspectos da lgica digital, como
um
de construo para o estudo de nveis superiores em captulos subseqentes. Nosso
estudo izar microcomputadores, no apenas porque eles so fceis de entender, mas
tambm porque
-se tornando cada vez mais importantes.
)s elementos bsicos, a partir dos quais todos os computadores digitais so
construdos, urpreendentemente simples. Iniciaremos nosso estudo observando estes
elementos bsicos ibm uma lgebra especial com dois valores (lgebra booleana)
utilizada para analis-los. eguida, examinaremos alguns circuitos fundamentais que
podem ser construdos utilizando s em combinaes simples, incluindo circuitos para
executar operaes aritmticas. O tpico nte sobre como as portas lgicas podem
ser combinadas para armazenar informaes, ,sobre como as memrias so organizadas.
Depois disto, falaremos das CPUs e, especialmente, como as CPUs de uma nica
pastilha interfaceiam com a memria e dispositivos perifricos.
E'ORTAS LGICAS E LGEBRA BOOLEANA
odem-se construir circuitos digitais a partir de um pequeno nmero de elementos
primitivos s da combinao deles de inmeras maneiras. Nas sees seguintes,
descreveremos estes ntos primitivos, mostraremos como eles podem ser combinados, e
apresentaremos uma rosa tcnica matemtica que pode ser utilizada para analisar seu
comportamento.
Portas Lgicas
Jm circuito digital aquele em que apenas dois valores lgicos esto presentes.
Tipicamente, mal entre O e 1 volt representa um valor (por exemplo, o O binrio), e
um sinal entre volts representa o outro valor (por exemplo, o 1 binrio). As
tenses situadas fora destas no so permitidas. Dispositivos eletrnicos
diminutos, denominados portas lgicas, podem itar vrias funes destes sinais de
dois valores. Estas portas constituem a base do hardware a qual todos os
computadores digitais so construdos.
)s detalhes de como as portas lgicas funcionam internamente esto realmente fora
do 'o deste livro, pertencendo ao nvel de dispositivo, que abaixo do nosso nvel
O. Entretanto, gora desviaremos brevemente do nosso tema para dar uma rpida olhada
na idia bsica, o difcil. Toda moderna lgica digital baseia-se, em ltima
anlise, no fato de que um stor pode operar como uma chave binria muito rpida. Na
Fig. 3.1(a) mostramos um transistor bipolar (o crculo) em um circuito simples.
Este transistor possui trs conexes o mundo exterior: o coletor, a base e o
emissor. Quando a tenso de entrada, V est o de certo valor crtico o transistor
abre e age como uma resistncia infinita, fazendo a do circuito, V adquirir um
valor muito prximo a V uma tenso regulada externamente, mente +5 volts. Quando V,
excede o valor crtico, o transistor fecha e age como um fio, do V ser ligado
terra (por conveno, O volt).
60 ORGANIZAO ESTRUTURADA DE COMPUTADORES
+ vcc
+ vcc
vo
Coletor
Base
(a) (b) (c)
Fig. 3.1 (a) Um inversor a transistor. (b) Uma porta NAND. (e) Uma porta NOR.
O importante destacar que quando vi, baixo, V alto, e vice-versa. Este circ
, portanto, um inversor convertendo um O lgico em um 1 lgico, e um 1 lgico em
ui lgico. O resistor necessrio para limitar a corrente que passa pelo
transistor. O tempo necess para chavear de um estado para outro tipicamente de
uns poucos nanossegundos.
Na Fig. 3.1(b), dois transistores esto ligados em srie. Se tanto V quanto V forem
a]
ambos os transistores conduziro, e V ser baixo. Se uma das entradas estiver em
nvel ba
o transistor correspondente abrir, e a sada ser alta. Em outras palavras, V ser
baixa
e somente se, tanto V quanto V estiverem altas.
Na Fig. 3.1(c), os dois transistores esto ligados em paralelo, ao invs de em
srie. N
ponfigurao, se qualquer entrada estiver alta, o transistor correspondente fechar
e a sada
aterrada. Se ambas as entradas estiverem baixas, a sada permanecer alta.
Estes trs circuitos, ou seus equivalentes, formam as trs portas lgicas mais
simples. chamadas de portas NOT, NAND e NOR, respectivamente. As portas NOT so
freqentem denominadas inversores; utilizaremos os dois termos indistintamente. Se
agora convencionar que "alto" (V volts) um 1 lgico e que "baixo" (terra) um O
lgico, poderemos expre o valor da sada como uma funo dos valores de entrada. Os
smbolos convencionais adot para representar estas trs portas lgicas so
mostrados na Fig. 3.2(a)-(c), juntamente coi comportamento funcional para cada
circuito.
NOT NAND NOR AND OR
->- LI D- "
A X A B X A B X A B X A B X
01 001 001 000 000
10 01 1 010 010 011
101 100 100 101
1 10 1 10 1 1 1 111
(a) (b) (c) (d) (e)
Fig. 3.2 Os smbolos e os cmportamentos funcionais das cinco portas lgicas
bsicas.
O NVEL DE LGICA DIGITAL 61
Se o sinal de sada da Fig. 3.1(b) ligado a um circuito inversor, obtemos um
outro circuito precisamente o inverso da porta lgica NAND - ou seja, um circuito
cuja sada 1 se, mente se, ambas as entradas forem 1. Tal circuito denominado
porta AND; seu smbolo scrio funcional so mostrados na Fig. 3.2(d). Do mesmo
modo, a porta NOR pode ser la a um inversor, resultando em um circuito cuja sada
1 se uma ou ambas as entradas 'erem em 1, ou O se ambas as entradas forem 0. O
smbolo e descrio funcional deste iito, denominado porta OR, so mostrados na
Fig. 3.2(e). Os pequenos crculos usados nos olos do inversor, portas NAND e NOR
so denominados crculos inversores. Eles so tambm uentemente usados em outros
contextos para indicar um sinal invertido.
As cinco portas lgicas da Fig. 3.2 so os principais blocos construtores do nvel
de lgica ai. Da discusso anterior, deve estar claro que as portas NAND e NOR
necessitam de dois ;istores cada uma, enquanto que as portas AND e OR necessitam,
cada uma, de trs. Por muitos computadores baseiam-se em portas NAND e NOR em vez
das portas lgicas mais liares AND e OR. (Na prtica, todas as portas so
implementadas de maneira diferente, m NAND e NOR continuam mais simples que AND e
OR.) Vale a pena notar que as as lgicas podem ter mais que duas entradas. Em
princpio, uma porta NAND, por exemplo, ter arbitrariamente muitas entradas, mas na
prtica no usual mais do que oito.
Embora o tpico de como as portas lgicas so construdas pertena ao nvel de
dispositivos, sramos de mencionar as principais famflias de tecnologia de
fabricao, pois freqentemente so referenciadas. As duas tecnologias principais
so bipolar e MOS (Metal Oxide Semicon or). Os principais tipos bipolares so o TTL
(Transistor-Transistor Logic), que tem sido jo com arroz da eletrnica digital h
anos, e o ECL (Emitter-Coupled Logic), que usado ido se necessita de operao em
alta velocidade.
As portas MOS so 10 vezes mais lentas que as T'FL e 100 vezes mais lentas que as
ECL, m requerem quase nenhum espao e alimentao, e assim um grande nmero delas
pode ncapsulado em um espao bem pequeno. Existem diversos tipos de MOS, tais como
PMOS, DS e CMOS, sendo que novos tipos surgem continuamente.
2 lgebra Booleana
Para descrever os circuitos que podem ser construdos pela combinao de portas
lgicas, novo tipo de lgebra necessrio, uma em que as variveis e funes podem
ter apenas resO e 1. Tal lgebra denominada lgebra booleana, devido ao seu
descobridor, o matemtico s George Boole (1815-1864). Rigorosamente falando,
estamos realmente nos referindo a :ipo especfico de lgebra booleana, uma lgebra
de chaveamentos, mas o termo "lgebra eana" to largamente usado para significar
"lgebra de chaveamentos" que no faremos tino.
Do mesmo modo que existem funes em lgebra "comum" (isto , da escola
secundria), m existem funes na lgebra booleana. Uma funo booleana tem uma ou
mais variveis ntrada e fornece um resultado que depende apenas dos valores destas
variveis. Uma funo les, f, pode ser definida dizendo que f(A) 1 se A for O e
f(A) O se A for 1. Esta funo uno NOT da Fig.3.2(a).
Como uma funo booleana de n variveis possui apenas 2 conjuntos possveis de
valores ritrada, a funo pode ser descrita completamente atravs de uma tabela de
2 linhas, cada mostrando o valor da funo para uma combinao diferente dos
valores de entrada. Tal
,a denominada tabela verdade. As tabelas da Fig. 3.2 so exemplos de tabelas
verdade.
Dncordarmos em sempre listar as linhas da tabela verdade em ordem numrica (base
2),
para duas variveis, na ordem 00, 01, 10, 11, a funo pode ser completamente
descrita nmero binrio de 2 bits obtido lendo verticalmente a coluna de resultado
da tabela verdade. n NAND 1110, NOR 1000, AND 0001 e OR 0111. Obviamente,
existem apenas loes booleanas de duas variveis, correspondendo s 16 cadeias
possveis de 4 bits. A ra comum tem um nmero infinito de funes de duas vanveis,
e nenhuma delas pode escrita por uma tabela de sadas para todas as entradas
possveis porque cada varivel pode r qualquer um dentre infinitos valores
possveis.
A Fig. 3.3(a) mostra a tabela verdade para uma funo booleana de trs variveis: M
=, B, . Esta funo a funo lgica da maioria, isto , O se existe um nmero
maior
62 ORGANIZAO ESTRUTURADA DE COMPUTADORES
de entradas em O, e 1 se existe um nmero maior de entradas em 1. Embora qualquer
fun booleana possa ser completamente especificada por sua tabela verdade, medida
que o nm de variveis aumenta, esta notao torna-se cada vez mais desajeitada. Em
lugar desta, ou notao freqentemente usada.
Para ver como esta outra notao funciona, observe que qualquer funo booleana p
ser especificada dizendo quais combinaes das variveis de entrada produzem um
valor de sa
1. Para a funo da Fig. 3.3(a), h quatro combinaes das variveis de entrada que
faz
M igual a 1. Por conveno, colocaremos uma barra sobre uma varivel de entrada
para mdi
que o seu valor invertido. A ausncia da barra significa que ela no invertida.
Alm do
usaremos multiplicao implcita ou um ponto para significar AND e + para
significar OR. Ass
por exemplo, ABC significa A = 1 e B = O e C = 1. Tambm AB + BC significa (A
e B = O) ou (B = 1 e C= O). As quatro linhas da tabela da Fig. 3.3(a) que fornecem
1
1 nas sadas so: ABC, ABC, ABC e ABC. A funo M verdadeira se qualquer uma de
quatro condies for verdadeira; logo, podemos escrever
M = BC + AI + AB? + ABC
como uma maneira compacta de fornecer a tabela verdade. Uma funo de n variveis p
ento ser descrita atravs de uma "soma" de, no mximo, 2 termos "produto" de o
variv Esta formulao especialmente importante, como veremos brevemente, porque
ela leva din mente a uma implementao da funo usando portas padro.
3.1.3 Implementao de Funes Booleanas
Como foi mencionado acima, a formulao de uma funo booleana como uma soma at 2
termos produto leva diretamente a uma implementao possvel. Usando a Fg. 3.3 co
exemplo, podemos ver como esta implementao feita. Na Fig. 3.3(b), as entradas
A, C so mostradas do lado esquerdo, e a funo de sada M mostrada do lado
direito. serem necessrios, os complementos das variveis de entrada so gerados
passando as entra atravs de inversores rotulados 1, 2 e 3. Para evitar que a
figura ficasse confusa, desenhar seis linhas verticais, trs das quais esto
conectadas s variveis de entrada e as outras tr seus complementos. Estas linhas
provem uma fonte conveniente para as entradas das po lgicas subseqentes. Por
exemplo, as portas 5, 6 e 7 utilizam A como uma das entradas. um circuito real,
estas portas estariam provavelmente ligadas diretamente a A sem utilizar quaisq
fios "verticais" intermedirios.
O circuito contm quatro portas AND, uma para cada termo na equao de M (istc uma
para cada linha da tabela verdade que tenha um bit 1 na coluna de resultado). Cada
jx AND calcula uma linha da tabela verdade, como indicado. Finalmente, faz-se um OR
de to os termos produto para dar o resultado final.
O circuito da Fig. 3.3(b) utiliza uma conveno de que precisaremos vrias vezes
neste li quando duas linhas se cruzam, nenhuma conexo est implcita, a menos que
um ponto c esteja presente nesta interseo. Por exemplo, a sada da porta 3
atravessa todas as seis lin verticais, mas conectada apenas a C. Fique atento ao
fato de que alguns autores utili2 outras convenes.
Do exemplo da Fig. 3.3, deve estar claro como implementar um circuito para qualq
funo booleana:
1. Faa a tabela verdade para a funo.
2. Providencie inversores para gerar o complemento de cada entrada.
3. Desenhe uma porta AND para cada termo com 1 na coluna de resultado da tabela
verde
4. Ligue as portas AND s entradas adequadas.
5. Ligue as sadas de todas as portas AND a uma porta OR.
pod o OWOD unu sa soqu SO UNyN si st opui s saq s i owoo unu 2t p i p an i soqu s
iwod ODIUfl wn Opu 'J ji p JL wn sowi nb 'O1 j in I ojnd 1ON no ojnd UNVN p i t En
iu ow sop So p o i ' " i p o odq wn s opu1 so3inoJ!D n U iu io UNV 'LON simod o i i
opod nbp3nb i O? l OWOD opI sow ioqw
(i opu o2inDJiD w (q) s1 s p uoti O1 u ut pnpj 'v (
(q)
LAJ
38
D 3
(e)
L L L L
LO L L
L LO L
000 L
L L LO
00 LO
o L 00
0000
V 9V
9 1V11910 V3190'I 311 13AIN O
64 ORGANIZAO ESTRUTURADA DE COMPUTADORES
ser feito utilizando apenas portas NOR. (Elas so solues imediatas, mas no as
nicas possv
veja a Fig. 3.5.)
Um modo de implementar uma funo utilizando apenas portas NAND ou apenas poi
NOR primeiro seguir o procedimento dado acima para implement-la com portas NOT,
Ai
e OR. Depois, troque as portas com mltiplas entradas por circuitos equivalentes
que utiliz
portas de duas entradas. Por exemplo, A + B + C + D pode ser calculado como (A +
+ (C + D), utilizando trs portas OR de duas entradas. Finalmente, as portas NOT,
A]
e OR podem ser substitudas pelos circuitos da Fig. 3.4.
Embora este procedimento no leve a circuitos timos, no sentido do menor nmero
portas, ele mostra que sempre existe uma soluo. As portas NAND e NOR so cnama de
completas, pois qualquer funo booleana pode ser implementada utilizando uma
delas. Nen ma outra porta possui esta propriedade, o que uma outra razo para a
sua freqente escc como bloco de construo de circuitos.
3.1.4 Equivalncia de Circuitos
Os projetistas de circuitos tentam naturalmente reduzir o nmero de portas lgicas
em produtos a fim de reduzir o custo de componentes, a rea da placa de circuito
impressc consumo de potncia etc. Para reduzir a complexidade de um circuito, o
projetista deve encon um outro circuito que execute a mesma funo que o original,
mas com um nmero me de portas lgicas (ou, talvez, com portas mais simples, por
exemplo, portas de duas entra ao invs de portas de quatro entradas). Na procura
por circuitos equivalentes, a lgebra boole pode ser uma ferramenta valiosa.
Como exemplo de como a lgebra booleana pode ser utilizada, considere o circuito e
tal verdade para AB + AC mostrada na Fig. 3.5(a). Embora ainda no as tenhamos
discut muitas das regras da lgebra comum tambm so vlidas para a lgebra
booleana. Em particu AB + AC pode ser fatorada como A(B + C) utilizando a
propriedade distributiva. A
A-
(a)
(b) (c)
Fig. 3.4 Construo de portas (a) NOT, (b) AND e (e) OR, utilizando apenas portas
NAND ou a
portas NOR.
O NVEL DE LGICA DIGITAL 65
A
B
C
AB
AC
AB+AC
o
o
o
o
o
o
O
O
1
O
O
O
O
1
O
O
O
O
O
1
1
O
O
O
1
O
O
O
O
O
1
O
1
O
1
1
1
1
O
1
O
1
1
1
1
1
1
1
A
B
C
A
B+C
A(BC)
O
O
O
O
O
O
O
O
1
O
1
O
O
1
O
O
1
O
O
1
1
O
1
O
1
O
O
1
O
O
1
O
1
1
1
1
1
1
O
1
1
1
1
1
1
1
1
1
(a) (b)
.5 Duas funes equivalentes. (a) AB + AC. (b) A(B + C).
mostra o circuito e a tabela verdade para A(B + C). Como duas funes s so
equivalentes somente se, tiverem a mesma sada para todas as entradas possveis,
fcil ver a partir 'ela verdade da Fig. 3.5 que A(B + C) equivalente a AB + AC.
Apesar desta equivalncia, uito da Fig. 3.5(b) claramente melhor que o da Fig.
3.5(a), pois contm um menor ro de portas.
jeralmente, um projetista de circuitos pode representar um circuito como uma funo
boo e ento aplicar as leis da lgebra booleana nesta representao na tentativa de
encontrar iais simples, porm equivalente. A partir da representao final, um novo
circuito pode nstrudo.
ara usar esta abordagem, precsamos de algumas identidades da lgebra booleana. A
Fig. ostra algumas das principais. E interessante notar que cada lei tem duas
formas que so uma da outra. Trocando AND por OR, OR por AND e tambm O por 1, uma
forma ser produzida a partir da outra. Todas as leis podem ser facilmente provadas
pela construo as tabelas verdade. Exceto pela lei de De Morgan, a lei da absoro
e a forma AND npriedade distributiva, os resultados so razoavelmente intuitivos. A
lei de De Morgan ser estendida a mais variveis, por exemplo, ABC = A + B + C.
lei de De Morgan sugere uma notao alternativa. Na Fig. 3.7(a), a forma AND
mostrada negao indicada pelos crculos inversores, tanto na entrada quanto na
sada. Assim, )orta OR com entradas invertidas equivalente a uma porta NAND. Da
Fig. 3.7(b), a dual da lei de De Morgan, claro que uma porta NOR pode ser
desenhada como uma AND com entradas negadas. Negando ambas as formas da lei de De
Morgan, chegamos 3.7(c) e (d), que mostra representaes equivalentes das portas
AND e OR. Existem los anlogos para as formas da lei de De Morgan com mltiplas
variveis (por exemplo, )orta NAND de n entradas se transforma em uma porta OR com
n entradas negadas).
isando as identidades da Fig. 3.7, e das anlogas para as portas lgicas de
mltiplas entradas, tais fcil converter a representao de soma-de-produtos de uma
tabela verdade em uma com apenas portas NAND ou com apenas portas NOR. Como
exemplo, considere a funo
66 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Propriedade Forma AND Forma OR
Identidade
lA = A
o A = A
Elemento nulo
OA = O
1 + A -1
Eqipotncia
AA = A
A + A = A
Inverso
A = O
A + = 1
Comutativa
AB = BA
A + B = B + A
Associativa
(AB)C = A(BC)
(A + B) + C = A + (B + C)
Distributiva
A+BC=(A+B)(A+C)
A(B+C)=AB+AC
Absoro
A(A+B)=A
A+AB=A
DeMorgan
=-
+
XOR (ou exclusivo) da Fig. 3.8(a). O circuito correspondente soma de produtos
padr mostrado na Fig. 3.8(b). Para se fazer a converso da forma NAND, as linhas
que cone as sadas das portas AND s entradas da porta OR devem ser redesenhadas
com dois cn inversores, como mostra a Fig. 3.8(c). Finalmente, utilizando a Fig.
3.7(a), chegaremos 3.8(d). As variveis A e B podem ser geradas a partir de A e
B, utilizando portas NANI NOR com suas entradas interligadas. Notem que os crculos
inversores podem mover-se vor ao longo de uma linha, por exemplo, das sadas das
portas de entrada da Fig. 3.8(d) pai entradas das portas de sada.
Como nota final sobre equivalncia de circuitos, agora demonstraremos o resultado
surpi dente de a mesma porta lgica fsica poder executar diferentes funes,
dependendo das conver utilizadas. Na Fig. 3.9(a) mostramos a sada de uma certa
porta, F, para diferentes combina da entrada. Tanto as entradas quanto as sadas
so mostradas em volts. Se adotarmos a conve de O volt ser O lgico e 5 volts ser 1
lgico, denominada lgica positiva, obteremos a rt verdade da Fig. 3.9(b), a funo
AND. Se, entretanto, adotarmos a lgica negativa, on volt ilgico e 5 volts O
lgico, obteremos a tabela verdade da Fig. 3.9(c), a funo OR.
Assim, a conveno escolhida para mapear tenses em valores lgicos de grande
import
A menos que seja especificado de outra maneira, usaremos, a partir de agora. a
lgica posi
assim, os termos 1 lgico, verdadeiro e alto so sinnimos, do mesmo modo que O
lgico.
e baixo.
3.2 CIRCUITOS BSICOS DE LGICA DIGITAL
Nas sees anteriores mostramos como implementar tabelas verdade e outros circuitos
sin
utilizando portas lgicas individuais. Na prtica, poucos so os circuitos
construdos porta a p
= A+B AB =
(a)
AB = A+B A+B =
(c)
Fig. 3.7 Smbolos alternativos para algumas portas lgicas: (a) NAND. (h) NOR. (c)
AND. (d) OR.
(b)
(d)
Fig. 3.6 Algumas iden des bsicas da lgebra leana.
B
o
o
(a)
XOR
o
o
A
B
A
B
O NVEL DE LGICA DIGITAL
67
a isto j tenha sido comum. Atualmente, os blocos de construo usuais so mdulos
intm um certo nmero de portas lgicas. Nas sees seguintes, examinaremos estes
blocos struo mais de perto e veremos como eles so utilizados e como so
construdos a partir tas individuais.
Circuitos Integrados
s portas lgicas no so fabricadas ou vendidas individualmente mas em unidades
chamadas Los integrados, muitas vezes chamados de CIs ou pastilhas (chips). CI um
pedao quadrado cio de cerca de 5 x 5 mm sobre o qual algumas portas lgicas foram
depositadas. Os io geralmente montados em encapsulamentos plsticos ou cermicos
que medem de 5 a ri de largura e de 20 a 50 mm de comprimento. Ao longo das
laterais existem duas fileiras las de pinos de cerca de 5 mm de comprimento que
podem ser inseridos em soquetes [ s placas de circuito impresso. Cada pino est
ligado a uma entrada ou uma sada uma porta lgica na pastilha, ou alimentao ou
ao terra. Os encapsulamentos com
A
o
o
B
o
o
(b)
F
o
o
o
A
o
o
B
o
(cl
F
o
Fig. 3.9 (a) Caractersticas eltricas de um dispositivo. (b) Lgica positiva. (c)
Lgica negativa.
A
o
o
(b)
(cl
B
(dl
8 (a) Tabela verdade para a funo OU EXCLUSIVO (XOR). (b)-(d) Trs circuitos para
imple
B
oV
5V
oV 5
F
0
0V
0"
5
68 ORGANIZAO ESTRUTURADA DE COMPUTADORES
duas linhas de pinos externos e CIs internos so conhecidos tecnicamente como dual
inline pack (encapsulamento de duas fileiras) ou DIPs, mas todos os chamam de chips
ou pastilhas, obsc cendo, assim, a distino existente entre um pedao de silcio e
seu encapsulamento. Os encaps mentos mais comuns tm 14, 16, 18, 20, 22, 24, 28,
40, 64 e 68 pinos. Para algumas aplica especiais, encapsulamentos quadrados com
pinos nos quatro lados so algumas vezes utilizad
As pastilhas podem ser grosseiramente divididas em classes, baseadas no nmero de
po que elas contm, como mostrado abaixo. Este esquema de classificao
extremamente grossc mas algumas vezes til. O limite superior nos VLSI est
atualmente entre 1 e 2 milhe transistores.
Circuitos SSI (integrao em pequena escala): 1 a 10 portas
Circuitos MSI (integrao em mdia escala): 10 a 100 portas
Circuitos LSL (integrao em alta escala): 100 a 100.000 portas
Circuitos VLSI (integrao em altssima escala): mais de 100.000 portas
Estas classes tm propriedades diferentes e so usadas de maneiras diferentes.
Uma pastilha SSI contm tipicamente de duas a seis portas independentes, e cada uma
d pode ser utilizada independentemente, no estilo das sees anteriores. A Fig.
3.10 ilustra desenho esquemtico de uma pastilha SSI que contm quatro portas NAND.
Cada uma de portas possui duas entradas e uma sada, necessitando um total de 12
pinos para as quatro poi Alm disto a pastilha precisa de alimentao (V e terra
(GND), os quais so compartilh por todas as portas. O encapsulamento tem geralmente
um chanfro perto do pino 1 para identil a orientao. Para evitar confuso nos
diagramas de circuito, nem o V nem o terra, nen portas no utilizadas so
mostradas.
A Fig. 3.11 mostra algumas das outras pastilhas SSI comuns. Estas pastilhas
pertence srie TTL 7400 desenvolvida pela Texas Instruments e atualmente produzida
por diversos f2 cantes de semicondutores. Elas so mais apropriadas para circuito
simples que no podem feitos de outra maneira. O circuito da Fig. 3.3(b) poderia
ser construdo a partir de um 7 dois 7411 e um 7432. Nenhuma porta OR de quatro
entradas existe na srie 7400, mas a me funo pode ser efetuada fazendo OR de
pares de entradas e depois fazendo um OR dos resulta Simbolicamente, isto pode ser
representado como A + B + C + D = (A + B) + (C + isto , se faz um OR de A e B, e
tambm de C e D, e depois se faz um OR das duas sor Se o circuito da Fig. 3.3 fosse
realmente construdo desta maneira, a placa de circuito impre sobre a qual as
pastilhas fossem montadas, conteria trilhas condutoras para interconexo
vcc
H
Chan ___ __
HHL
GND
Fig. 3.10 Uma pastilha SSI que contm quatro portas lgicas.
O NVEL DE LGICA DIGITAL 69
7400 7404
4B 4A 4V 3B 3A 3V Vcc 6A 6V 5A 5V 4A 4V
14 13 12 11 10 9 8 J1JiiUi
Lb]L
1 2 3 45 6 7
lA 1B i 2A 2B 2V GND lA 1V 2A 2V 3A 3V GND
7408 7411
Vcc 4B 4A 4V 38 3A 3V Vc iC l 3C 3B 3A 3V
14 i _____
__ ilr
lA 1B 1V 2A 2B 2V GND lA 1B 2A 2B 2C 2V GND
7422
2D 2C NC 26 2A 2V
H
lA 1B NC 1C 1D lv GND
7432 7486
Vcc 4B 4A 4V 3B 3A 3V V 4B 4A 4V 3B 3A 3V
14 13 12 11 10 9 8
L L
1 23456 7
lA 1B 1V 2A 2B 2V GND lA 1B 1V 2A 2B 2V GND
11 Algumas pastilhas SSI. Layouts de pinos de The TTL Data Book for Design
Engineers, direitos
tdos de Texas Instrumenis Incorporated. 1976.
70 ORGANIZAO ESTRUTURADA DE COMPUTADORES
pinos apropriados. Algumas das portas lgicas no seriam usadas. A pastilha 7486
contm po lgicas de um tipo que ainda no foi mostrado, a porta EXCLUSIVE OR, que
equivale ao circuito da Fig. 3.8.
Para os nossos propsitos, todas as portas so ideais, no sentido de que a sada
apar to logo a entrada seja aplicada. Na realidade, as pastilhas possuem um atraso
de porta fii que engloba o tempo de propagao do sinal atravs da pastilha e o
tempo de chaveamei Atrasos tpicos esto entre 1 e 20 ns. Em esquemas so
freqentes nmeros como 74S00, 741 74H00 e 74LS00. Eles representam pastilhas
funcionalmente equivalentes com diferentes comi missos de atraso/potncia/preo. A
srie 74C00 consiste em pastilhas CMOS que so funcionalme idnticas s TTL 7400
correspondentes.
No estado atual da arte, colocam-se um milho de portas em uma nica pastilha. Cc
qualquer circuito pode ser construdo a partir de portas NAND, poder-se-ia imaginar
que fabricante poderia construir uma pastilha muito geral que contivesse o
equivalente a 250. pastilhas, como o 7400. Infelizmente, tal pastilha necessitaria
de 3.000.002 pinos. Com o esp mento padro de 0,1 polegada, a pastilha excederia 2
milhas de comprimento, o que pod ter um efeito negativo sobre as vendas.
Claramente, a nica maneira de tirar vantagem da tecnok projetar circuitos com
uma alta relao portas/pinos. Nas sees seguintes, focalizaremos circu MSI
simples que combinam internamente um certo nmero de portas lgicas para prover
funo til que requeira apenas um nmero limitado de conexes externas (pinos).
Depois di:
examinaremos duas aplicaes que requerem milhares de portas (LSI) com apenas 20 a
40 pi ou seja, pastilhas de memria e microprocessadores. A linha divisria entre
LSI e V
vaga, mas uma pastilha VLSI tpica poderia conter um grande microprocessador.
alguma merni
de uma forma ou de outra, e talvez uma unidade especial de ponto-flutuante.
3.2.2 Circuitos Combinatrios
Muitas aplicaes de lgica digital requerem um circuito com mltiplas entradas e
mlti sadas, no qual as sadas so unicamente determinadas pelas entradas atuais.
Tal circuito denc nado circuito combinatrio. Nem todos os circuitos tm esta
propriedade. Por exemplo, um circi que contenha elementos de memria pode gerar
sadas que dependem de valores armazena e das variveis de entrada. Um circuito que
implemente uma tabela verdade, tal como aqt da Fig. 3.3(a), um exemplo tpico de
circuito combinatrio. Nesta seo examinaremos alg circuitos combinatrios
freqentemente utilizados, como exemplos de pastilhas MSI.
Multiplexadores
Ao nvel de lgica digital, um multiplexador um circuito com 2 entradas de dados,
sada de dados e n entradas de controle que selecionam uma das entradas de dados. A
entr de dados selecionada "ligada" sada. A Fig. 3.12 um diagrama esquemtico
para um multi xador de oito entradas. As trs linhas de controle, A, B e C,
codificam um nmero de 3 que especifica qual das oito entradas ligada porta OR,
e portanto sada. Qualquer seja o valor nas linhas de controle, sete das portas
AND tero sempre sada 0; a outra 1 sada O ou 1, dependendo do valor da linha de
entrada selecionada. Cada porta AND habilit por uma combinao diferente das
entradas de controle.
O circuito da Fig. 3.12 um candidato ideal para a implementao de uma pastilha ?
como ilustra a Fig. 3.13(a). Tal pastilha possui oito entradas de dados, trs
entradas de conti
e uma sada. Incluindo V e terra, a pastilha pode ser implementada com um
encapsulame
de 14 pinos. Utilizando esta pastilha MSI multiplexadora, podemos implementar o
circuito
Fig. 3.3(b) em uma nica pastilha, como mostra a Fig. 3.13(b). Para cada combinao
de
B e C, uma das linhas de entrada de dados selecionada. Cada entrada ligada ou
ao
(1 lgico) ou ao terra (0 lgico). O algoritmo para a ligao das entradas
simples: a entr
D tem o valor da linha i da tabela verdade. Na Fig. 3.3, as linhas 0, 1, 2 e 4 so
0, 1
as entradas correspondentes so aterradas; as linhas restantes so 1, logo elas so
ligadas
lgico. Desta maneira, qualquer tabela verdade de trs variveis pode ser
implementada usai
a pastilha da Fig. 3.13(a).
O NVEL DE LGICA DIGITAL 71
3.12 Um circuito multiplexador de oito entradas.
D D
D D
D D
D
-0-- F -0- F
D D
D D
D D
D D
l
(a) (b)
.13 (a) Uma pastilha MSI multiplexadora. (b) A mesma pastilha ligada para executar
a funo maioria.
72 ORGANIZAO ESTRUTURADA DE COMPUTADORES
J vimos como uma pastilha multiplexadora pode ser usada para selecionar uma dentre
v entradas e como ela pode implementar uma tabela verdade. Uma outra aplicao
utili como um conversor de dados de paralelo para serial. Colocando 8 bits de dados
nas linha entrada e ento variando as linhas de controle seqencialmente de 000 a
111 (binrio), bits so colocados na linha de sada serialmente. Um uso tpico de
um conversor paralelo-s em um teclado, onde cada toque de tecla define
implicitamente um nmero de 7 ou 8 que deve ser enviado serialmente por uma linha
telefnica.
A pastilha MSI da Fig. 3.13(a) tem oito entradas de dados. Pastilhas similares a
esta en tram-se disponveis comercialmente, assim como pastilhas multiplexadoras
com 16 entrada dados. Alm disso, existem pastilhas com dois multiplexadores
independentes de quatro entn e pastilhas com quatro multiplexadores independentes
de duas entradas. Algumas destas pasti provem tanto a sada selecionada quanto o
seu complemento, e algumas tm uma linh entrada adicional que fora a sada para 0,
independente das entradas (isto , um pino habilita sabilita pastilha).
O inverso de um multiplexador um demultiplexador, que liga seu nico sinal de
enti a uma dentre 2 sadas, dependendo dos valores das n linhas de controle. Se o
valor bin
nas linhas de controle for k, a sada k ser selecionada.
Decodificadores
Como um segundo exemplo de pastilhas MSI, focalizaremos agora um circuito que t
como entrada um nmero de n bits e o utiliza para selecionar (isto , colocar em 1)
exatam uma das 2 linhas de sada. Tal circuito, ilustrado para n = 3 na Fig. 3.14,
denominado de ficador.
Para se ver onde um decodificador poderia ser til, imagine uma memria compost
oito pastilhas, cada uma contendo 8K bytes. A pastilha O tem endereos de O a 8191,
a pasi
1 tem endereos de 8192 a 16383, etc. Quando um endereo apresentado memria,
DDO
DD1
A A ___ D
1 __
B,B _
c 1III::
CT _ _ = __
Id.-. c _____ - tIII:: D
DDi
Fig. 3.14 Um circuito decodificador 3-para-8.
O NVEL DE LGICA DIGITAL 73
Porta OU EXCLUSIVO (XOR)
A=B
Fig. 3.15 Um comparador simples de 4
bits.
periores so utilizados para selecionar uma entre oito pastilhas. No circuito da
Fig. 3.14, bits so as trs entradas A, B e C. Dependendo das entradas, exatamente
uma das oito de sada Da,..., D 1; as restantes so O. Cada linha de sada
habilita uma das oito as de memria. Como apenas uma linha de sada colocada em
1, apenas uma pastilha itada.
operao do_circuito da Fig. 3.14 direta. Cada porta AND tem trs entradas, das
quais eira A ou A, a segunda B ou e a terceiraC ou C. Cada porta lgica
habilitada ia combinao diferente de entradas: Do por A B C, D por A B C e assim
por diante.
pastilhas MSI decodifcadoras disponveis comercialmente incluem o 4-para-16, o 3-
para-8 1 2-para-4 (isto , dois decodificadores 2-para-4 encapsulados juntos em uma
nica pastilha). isso, os decodificadores 4-para-lO para decodificar nmeros
decimais codificados em binrios so tambm comuns.
aradores
itra pastilha MSI til o comparador, que compara duas palavras de entrada. O
computador
da Fig. 3.15 toma as duas entradas, A e B, cada uma com um comprimento de 4 bits,
iz 1, se elas so Iguais, e O, se so diferentes. O circuito baseado na porta
EXCLUSIVE ue produz O se suas entradas forem iguais e 1 se forem diferentes. Se as
duas palavras rada so iguais, todas as quatro portas EXCLUSIVE OR devem ter sada
O. Pode-se m OR destes quatro sinais; se o resultado for O, as palavras de entrada
so iguais, de laneira, no. Em nosso exemplo, utilizamos uma porta NOR com estgio
final para inverter lo do teste: 1 significa igual, O significa diferente. As
pastilhas MSI comparadoras disponveis ialmente no somente possuem um pino para A
= B, mas tambm pinos para A < B
os Lgicos Programveis (PLA)
vimos anteriormente que funes arbitrrias (tabelas verdade) podem ser construdas
utili portas AND para implementar os termos produto e depois fazendo um OR de todos
lutos. Uma pastilha bastante genrica para implementar somas de produtos o
arranjo rogramvel (programmed logic array) ou PLA, sendo que um pequeno exemplo do
mesmo rado na Fig. 3.16. Esta pastilha, o 74S330, possui linhas de entrada para 12
variveis.
74 ORGANIZAO ESTRUTURADA DE COMPUTADORES
6 sa
Fig. 3.16 Um arranjo lgico programvel de 12 entradas e seis sadas. Os pequenos
quadrados repre fusveis que podem ser queimados para se determinar a funo a ser
executada. Os fusveis so di em duas matrizes: a superior para portas AND e a
inferior para portas OR.
O complemento de cada entrada gerado internamente, constituindo 24 sinais de
entra total. O corao do circuito um arranjo de 50 portas AND, cada uma das
quais po ter potencialmente como entrada qualquer subconjunto dos 24 sinais de
entrada. Qual si entrada vai para qual porta AND determinado por uma matriz 24 x
50 bits fornecid usurio. Cada linha de entrada para as 50 portas AND contm um
fusvel. Quando sa fbrica, todos os 1200 fusveis esto intactos. Para programar a
matriz, o usurio quei fusveis selecionados aplicando uma alta tenso pastilha.
A parte de sada do circuito consiste em seis portas OR, cada uma das quais com
entradas, correspondendo s 50 sadas das portas AND. Aqui, novamente, uma matriz
6) suprida pelo usurio diz quais das conexes potenciais realmente existem. A
pastili
12 pinos de entrada, seis pinos de sada, alimentao e terra, para um total de 20.
Como um exemplo de como uma PLA pode ser usada, consideremos o circuito
3.3(b) mais uma vez. Existem trs entradas, quatro portas AND, uma porta OR e trs
inve
O NVEL DE LGICA DIGITAL 75
is conexes internas apropriadas feitas, nossa PLA pode executar esta funo
utilizando
suas 12 entradas, quatro de suas 50 portas AND e uma de suas seis portas OR. (As
portas AND devem calcular ABC, ABC, ABC e ABC, respectivamente; a porta OR stes
quatro termos produto como entradas.) De fato, a mesma PLA poderia ser preparada
xecutar simultaneamente um total de quatro funes de complexidade similar. Para
estas s simples, o nmero de variveis de entrada o fator limitador; para aquelas
mais compli poderiam ser as portas AND ou OR.
pesar de as PLAs programveis no campo descritas acima continuarem em uso, para
muitas ;es prefervel utilizar PLAs feitas sob encomenda. Estas so projetadas
pelo cliente ande volume) e produzidas pelo fabricante de acordo com as
especificaes do cliente. LAs so mais baratas do que aquelas programveis pelo
usurio.
demos agora comparar as trs diferentes maneiras discutidas para implementar a
tabela le da Fig. 3.3(a). Utilizando componentes SSI, precisamos de quatro
pastilhas. Alternada- suficiente uma pastilha MSI multiplexadora, como est
mostrado na Fig. 3.13(b). Final-
podemos utilizar um quarto de uma pastilha PLA. Obviamente, se muitas funes so
rias, a PLA mais eficiente do que os outros dois mtodos. Para circuitos
simples, pode
,fervel pastilhas SSI e MSI, mais baratas.
Circuitos Aritmticos
gora tempo de mudar dos circuitos MSI de propsitos gerais discutidos acima para
circuitos natrios MSI utilizados para executar aritmtica. Comearemos com um
deslocador simples ts, ento olharemos como os somadores so construdos, e
finalmente examinaremos unidades aritmticas, que desempenham um papel central em
qualquer computador.
adores
osso primeiro circuito MSI aritmtico um deslocador de oito entradas e oito
sadas (ver
.17). Oito bits de entrada esto presentes nas linhas D D A sada, que apenas
ida deslocada de 1 bit, est disponvel nas linhas S S A linha de controle C
determina
;o do deslocamento, O para a esquerda e 1 para a direita.
ara ver como o circuito funciona, observe os pares de portas AND para todos os
bits, Kceo das portas no final. Quando C = 1, o membro direito de cada par
ligado, passando ia entrada correspondente para a sada. Pelo fato de ser a porta
AND da direita ligada ada da porta OR sua direita, um deslocamento direita
executado. Quando C = 0,
17 Um deslocador para a esquerda/direita de 1 bit.
76 ORGANIZAO ESTRUTURADA DE COMPUTADORES
o membro esquerdo do par de portas AND que ligado, executando um deslocamen
esquerda.
Somadores
Um computador que no possa adicionar inteiros inconcebvel. Conseqentemente
circuitos para a execuo da adio constituem uma parte essencial de toda CPU. A
tabela ver( para a adio de 1 bit mostrada na Fig. 3.18(a). Duas sadas esto
presentes, a soma entradas A e B e o vai-i (carry) para a prxima posio (
esquerda). Um circuito para calc tanto a soma quanto o vai-1 dado na Fig.
3.18(b). Este circuito conhecido como somi parcial.
Embora um somador parcial seja adequado para a soma dos bits menos significativo
palavras multibits de entrada, ele no o para uma posio situada no meio da
palavra, no leva em conta o vem-1 (carry in) da posio da direita. Em vez disso,
o somador comi da Fig. 3.19 necessrio. Inspecionando o circuito, deve ficar
claro que um somador com composto de somadores parciais. A linha de sada Soma
1 se existe um nmero mpa is em A, B e vem-1. O vai (carry out) 1 se A e B so
ambos 1 (entrada da esquerd porta OR), ou exatamente uma delas 1 e o bit vem-1
tambm 1. Juntos os dois somad parciais geram os bits tanto da soma como de vai-1.
Para construir um somador para, digamos, duas palavras de 16 bits, basta repetir 16
v
o circuito da Fig. 3.19(b). O vai-1 de uma posio utilizado como o vem-1 para a
pos
esquerda seguinte, O vem-1 situado mais direita ligado a 0. Este tipo de
somador chan
de somador com propagao de vai-1 (ripple carry adder), pois, no pior caso,
adicionan
a 111... 111 (binrio), a adio no pode estar completa at que o vai-1 tenha
percorrido
o caminho do bit mais direita para o bit mais esquerda. Somadores que no
possuem
atraso, e, conseqentemente, so mais rpidos, tambm existem.
Unidades Lgicas Aritmticas
A maioria dos computadores contm um nico circuito para a execuo das operaes A
OR e soma de duas palavras de mquina. Tipicamente, tal circuito para palavras de n
b constitudo de n circuitos idnticos para posies individuais de bits. A Fig.
3.20 um exet simples de tal circuito, denominado unidade lgica aritmtica ou ALU
(arithmetic logical Ele pode efetuar qualquer uma das quatro funes - a saber, A
AND B, A OR B, A + B, dependendo se as linhas de entrada para seleo de funo F e
F contm 00 10 ou li (binrio), respectivamente.
O canto inferior esquerdo de nossa ALU contm um decodificador de 2 hits que gei
linhas de habilitao para as quatro operaes, baseadas em F e F O canto superior
esqu
Poria OU EXCLUSIVO (OR)
A
B
Soma
Vai-1
o
o
o
o
O
1
1
O
1
O
1
O
1
1
O
1
(a) (b)
Fig. 3.18 (a) A tabela verdade para a adio de 1 bit. (b) Um circuito somador
parcial.
O NVEL DE LGICA DIGITAL
B
Vem-1
Soma
Vai-1
o
o
o
o
O
1
1
O
1
O
1
O
1
1
O
1
O
O
1
O
O
1
O
1
1
O
O
1
1
1
1
1
A
B
Vem-1
(a)
.19 (a) A tabela verdade para o somador completo. (b) O circuito de um somador
completo.
a lgica para efetuar A AND B, A OR B e mas apenas um destes resultados passado
i porta OR final, dependendo das linhas de habilitao vindas do decodificador. Por
se
enas uma sada de decodificador em 1, apenas uma dentre as quatro portas AND que
igem porta OR de sada ser habilitada, as outras trs tero sadas 0,
independente de
canto inferior direito da ALU contm um somador completo para efetuar a soma de
incluindo manipulao de vai-Is, pois provvel que vrios destes circuitos sero
eventual- ligados em paralelo para executar operaes de palavra completa.
Pastilhas como as da .20 esto disponveis realmente e so, conhecidas como bit
slices. Elas permitem ao projetista rnputadores construir uma ALU de qualquer
largura desejada. A Fig. 3.21 mostra uma de 8 bits construda a partir de oito ALUs
bit slices de 1 bit. Existem pastilhas contendo ices na mesma pastilha, o que
simplifica o projeto e reduz o nmero delas. Quatro dessas ias podem ser
interligadas para construir uma ALU de 32 bits.
Relgios (Clocks)
m muitos circuitos digitais, a ordem na qual os eventos acontecem crtica. s
vezes, ento tem de preceder um outro, e s vezes dois eventos devem ocorrer
simultaneamente. ermitir aos projetistas satisfazer as relaes de tempo
requeridas, muitos circuitos digitais m relgios para proverem sincronizao. Um
relgio, neste contexto, um circuito que uma srie de pulsos com uma largura de
pulso precisa e um intervalo preciso entre pulsos utivos. O intervalo entre bordas
correspondentes de dois pulsos consecutivos denominado de ciclo do relgio (clock
cycle time). As freqncias dos pulsos esto comumente entre 0 MHz, correspondendo
a ciclos de relgio de 1000 ns a 10 ns. Para atingir alta preciso, jncia do
relgio geralmente controlada por um oscilador a cristal.
m um computador, muitos eventos podem acontecer durante um nico ciclo de relgio.
es eventos tiverem de ocorrer em uma ordem especfica, o ciclo de relgio tem de
ser lo em subciclos. Uma maneira comum de prover resoluo mais fina do que o
relgio interceptar a linha primria do relgio e inserir um circuito com um
atraso conhecido, lo assim um sinal secundrio de relgio defasado do primrio,
como mostrado na Fig.
77
Vai-1
(b)
78 ORGANIZAO ESTRUTURADA DE COMPUTADORES
A
B
F
Fig. 3.20 Uma ALU de 1 bit.
3.22 (a). O diagrama de tempo da Fig. 3.22(b) prov quatro referncias de tempo
para e discretos:
1. Borda de subida de Cl
2. Borda de descida de Cl
3. Borda de subida de C2
4. Borda de descida de C2
Ligando diferentes eventos s vrias bordas, o seqenciamento requerido pode ser
conse Se mais de quatro referncias de tempo so necessrias dentro de um ciclo de
relgio, linhas secundrias podem ser geradas a partir da primria, com diferentes
atrasos.
Em alguns circuitos o projetista pode estar interessado em intervalos de tempo, ao
de instantes discretos de tempo. Por exemplo, pode-se permitir que um evento
acontea sc que Cl for alto, e no precisamente na borda de subida. Outro evento
deve acontecer sor quando C2 for alto. Se no necessrios mais de dois intervalos,
mais linhas de relgio p
L
O NVEL DE LGICA DIGITAL 79
Vem-1 Vai.1
Oito ALUs bit slice de 1 bit conectadas para formar uma ALU de8 bits.
idas, ou os estados altos dos dois relgios podem ser parcialmente superpostos no
tempo. Itimo caso, quatro intervalos distintos podem ser detectados: Cl AND C2 Cl
AND ND C2 e Cl AND C2.
no um aparte, deve-se provavelmente dizer que a Fig. 3.22(a)-(b) realmente um
tanto adora. Os relgios reais so simtricos, com o tempo gasto no estado alto
igual ao tempo estado baixo, como mostra A na Fig. 3.22(c). Para gerar um trem de
pulsos assimtricos,
o bsico deslocado utilizando um circuito de atraso, como mostra B na Fig.
3.22(c). nte, faz-se um AND dos dois para se obter C na Fig. 3.22 (c). E este o
sinal mostrado E na Fig. 3.22(b). C2 pode ser gerado atrasando Cl.
MRIA
componente essencial de todo computador sua memria. Sem memria no haveria
tdores da maneira como atualmente os conhecemos. A memria usada para armazenar
instrues a serem executadas quanto os dados. Nas sees seguintes, examinaremos
onentes bsicos de um sistema de memrias comeando ao nvel de portas lgicas,
para o elas funcionam e como so combinados para produzir memrias grandes.
atches
criar uma memria de 1 bit, precisamos de um circuito que de alguma maneira
"lembre" anteriores de entrada. Tal circuito pode ser construdo com duas portas
NOR, como Fig. 3.23(a). Circuitos anlogos podem ser construdos com portas NAND.
Ns, entretanto, mencionaremos estes, pois eles so conceitualmente idnticos s
verses NOR.
C
(b)
1 1 1 1 1
A
1 1 1 1 1
JLJLJJ-L
1 I 1 1 1 1 Fig. 3.22 (a) Um relgio. (b) O diagrama
de tempo do relgio. (e) Gerao de um
(c) relgio assimtrico.
8 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Fig. 3.23 (a) Um latch NOR no estado O. (b) Um latch NOR no estado 1. (c) A tabela
verdad
o NOR.
O circuito da Fig. 3.23(a) denominado Iatch SR. Possui duas entradas,_S (Set),
pan o latch, e R (Reset), para deslig-lo (isto , limp-lo). Possui duas sadas, Q
e Q, que so co mentares, como veremos daqui a pouco. Ao contrrio de um circuito
combinatrio, as do latch no so determinadas unicamente pelas entradas atuais.
Para ver como isto acontece, assumamos que tanto S quanto R so O, o que eles s
maior parte do tempo. Vamos, alm disso, assumir que Q = O. Por ser Q realimenta
porta NOR superior, ambas as entradas so O, assim sua sada, Q, 1. O 1 realime
na porta inferior, que possui ento entradas 1 e O, fornecendo Q = O. Este estado
pelo r consistente e mostrado na Fig. 3.23(a).
Agora vamos imaginar que Q no O, mas 1, com R e S ainda em O. A porta sul tem
entradas O e 1 e sada, Q, O, que realimentada porta inferior. Este estado, mo
na Fig. 3.23(b), tambm consistente. Um estado com ambas as sadas iguais a O
inconsis pois fora ambas as portas a terem dois Os como entrada, o que, se
verdadeiro, produz:
no O, como sada. Similarmente, impossvel ter ambas as sadas iguais a 1, pois
isto fo as entradas para O e 1, que produz O, no 1. Nossa concluso simples:
para R = 5 o latch tem dois estados estveis, que referimos como O e 1 dependendo
de Q.
Agora examinaremos o efeito das entradas no estado do latch. Suponha que 5 vire 1
enq
Q = O. As entradas para a porta superior so ento 1 e O, forando a sada para O.
Esta mu
coloca ambas as entradas da porta lgica inferior em O, forando a sada para 1.
Assim, "set:
S (isto , fazendo-o igual a 1) chaveia o estado de O para 1. Colocando R no estado
tem efeito algum, pois a sada da porta inferior a mesma para as entradas 10 e
11.
Utilizando um raciocnio similar, fcil ver que colocando S em estado 1 no tem
algum, mas que "setando" R muda o estado do latch para O. Em resumo, quando S
momentaneamente, o latch acaba no estado 1, no importando qual estado em que
estava mente. Do mesmo modo, "setando" R fora o latch para o estado O. O
circuito "lembi Sou se R que estava ligado por ltimo. Utilizando esta
propriedade, podemos construir mer de computador.
Latches SR com Relgio
freqentemente conveniente evitar que o latch mude de estado, exceto em certos
ins
especficos. Para conseguir isto, modificamos levemente o circuito bsico, como
mostra
Fig. 3.24, a fim de se obter um Iatch SR com relgio.
Este circuito possui uma entrada adicional, o relgio, que fica normalmente em 0. o
relgio em 0, ambas as portas AND tm sadas em O, independente de S e R, e o latc
muda de estado. Quando o relgio 1, o efeito das portas AND desaparece e o latc
sensvel a 5 e R. Apesar do nome, o sinal de relgio no precisa ser fornecido por
um rt Os termos enable e strobe so tambm largamente utilizados para significar
que a entra relgio 1, isto , o circuito sensvel ao estado de Se R.
At agora, tivemos o cuidado de saltar o problema que acontece quando 5 e R po
O NVEL DE LGICA DIGITAL 81
Fig. 3.24 Um latch SR com relgio.
s o valor 1. E por boa razo: o circuito se torna no-determinstico quando tanto R
quanto rnam finalmente a O. O nico estado consistente para S = R = 1 Q = Q = O,
mas go ambas as entradas retornem a O, o latch deve pular para um dos seus dois
estados is. Se uma das entradas cai para O antes da outra, aquela que mantiver 1
mais tempo pois quando apenas uma entrada est em 1, ela fora o estado. Se ambas
as entradas
arem a O simultaneamente (o que muito improvvel), o latch salta para um dos seus
s estveis aleatoriamente.
'es D com Relgio
Jma boa maneira de resolver a ambigidade do iatch SR assegurar que ela no pode
r. A Fig. 3.25 mostra um circuito com apenas uma entrada, D. Como a entrada da
porta inferior sempre o complemento da entrada da porta superior, o problema de
ambas tradas serem 1 nunca aparece. Quando D = 1 e o relgio 1, o latch
colocado no D lgico 1. Quando D = O e o relgio 1, o latch colocado no estado
lgico O. Em termos, quando o relgio 1, o valor corrente de D mostrado e
armazenado no iatch. :ircuito, denominado latch D com relgio, uma memria real
de 1 bit. O valor armazenado mpre disponvel em Q. Para carregar o valor corrente
de D na memria, um pulso positivo cado na linha do relgio.
Flip-flops e Registradores
:m muitos circuitos, necessrio amostrar o valor de uma determinada linha em um
instante ular do tempo e armazen-lo. Em princpio, uma maneira de atingir este
objetivo usar rch tipo D com relgio com um pulso muito curto na linha de relgio
em torno do instante e a amostragem vai ser feita. Na prtica, gerar pulsos muito
curtos pode ser difcil, e uma mudana no circuito do latch foi desenvolvida. Nesta
variao, denominada flip-flop, do de transio no ocorre quando o relgio 1,
mas durante a transio do relgio de 1 1 ou de 1 para O. Assim, a durao do pulso
do relgio no importante, desde que Isies ocorram rapidamente.
ara enfatizar, repetiremos a diferena entre um flip-flop e um latch. Um flip-flop
sensvel Ia (edge triggered), enquanto um latch sensvel ao nvel (levei
triggered). Fique avisado, anto, que na literatura esses termos so freqentemente
confundidos. Muitos autores utilizam iop" quando se referem a um iatch, e vice-
versa.
Fig. 3.25 Um larch D com relgio.
82 ORGANIZAO ESTRUTURADA DE COMPUTADORES
(a) (b) (c) (d)
Fig. 3.26 Latches e flip-f/ops tipo D.
Os smbolos padro para lutches e f/ip-flops so mostrados na Fig. 3.26. A Fig. 3.2
um latch cujo estado carregado quando o relgio, CK. 1, em contraste com a
Fig. 3.2) que um latch cujo relgio normalmente 1, mas cai para O
momentaneamente para carr o estado de D. As Figs. 3.26(c) e (d) so Jlip-flops em
vez de lotches, o que indicado smbolo pontiagudo nas entradas de relgio. A Fig.
3.26(c) muda de estado na horda de su do pulso de relgio (transio O para 1),
enquanto que a Fig. 3.26(d) muda de estado na b de descida (transio 1 para O).
Muitos, mas no todos, latches e flip-flops possuem tam Q como sada, e alguns
possuem duas entradas adicionais Se OU Preset (fora o estado ilgico) e Reset ou
Clear (fora o estado para O lgico).
Registradores
Os flip-flops so disponveis em vrias configuraes. Uma simples, contendo dois
f/ip-j D independentes, com sinais de Cleare Preset, est ilustrada na Fig.
3.27(a). Embora encapsul juntos na mesma pastilha de 14 pinos, os dois flip-flops
no se relacionam. Um arranjo ir diferente o flip-flop octal da Fig. 3.27(b).
Aqui, os oito flip-flops D (da o termo "oci no possuem as linhas Q e Preset, e
todas as linhas de relgio esto interligadas e ligada pino 11. Osflip-Jlops em si
so os do tipo da Fig. 3.26(d), mas os crculos inversores nos flip-j esto
anulados pelo inversor ligado ao pino 11, de forma que os flip-flops so carregado
borda de subida. Todos os oito sinais Clear esto tambm ligados entre si, de forma
que qu o pino 1 vai para O, todos os flip-flops so forados para o estado O. No
caso de voc imaginando por que o pino ii invertido na entrada e depois invertido
novamente em sinal CK, o fato que um sinal de entrada pode no ter corrente
suficiente para acionar t os oito flip-flops; o inversor de entrada est sendo
realmente utilizado como amplificador.
Enquanto a razo bvia para interligar as linhas de relgio e de Clear da Fig.
3.27( economizar pinos, nesta configurao a pastilha utilizada de uma maneira
diferente daq de oito flip-flops independentes. Ela utilizada como um registrador
de 8 hits. Alternativam duas destas pastilhas podem ser utilizadas em paralelo para
formar um registrador de 16 interligando seus respectivos pinos 1 e 11.
Focalizaremos os registradores e seu uso, mai perto, no captulo 4.
Por agora, a coisa interessante a notar como a escassez de pinos leva o projeto
da pas inexoravelmente para circuitos com relaes portas/pinos mais e mais altas.
O Iatch D sin da Fig. 3.25 requer cinco portas lgicas, e assim uma pastilha latch
octal anloga da Fig. 3. necessita de 57 portas, incluindo os oito inversores
para CK e os oito inversores para Cir. flip-flop sensvel borda mais complexo
internamente do que um Iatch; assim, a Fig. 3. representa o equivalente a algo como
100 portas lgicas, algo bem distante das pastilhas da Fig. 3.11. Na prxima seo,
estudaremos uma organizao interna diferente para past de memria, que permite uma
relao portas/pinos muito mais alta.
3.3.3 Organizao de Memria
Embora tenhamos progredido da memria simples de 1 bit da Fig. 3.25 para a men
de 8 bits da Fig. 3.27(b), no poderemos continuar desta maneira devido falta de
pinc
O NVEL DE LGICA DIGITAL 83
GND
(a)
(b) GND
.27 (a) Flip-flop 7474 tipo D dual. (b) Flip.flop octal 74273.
a. Cada flip-flop requer dois pinos, D e Q, alm dos pinos de controle comuns a
todos
-fiops. Para construir memrias maiores necessria uma organizao diferente. que
precisamos de um projeto no qual o nmero de pinos cresa logaritmicamente,
s de lineannente, com a capacidade da memria. Uma organizao de memria
amplamente
84 ORGANIZAO ESTRUTURADA DE COMPUTADORES
utilizada que satisfaz esse critrio mostrada na Fig. 3.28. Esse exemplo ilustra
uma men de quatro palavras de 3 bits. Cada operao l ou escreve uma palavra
completa de 3 Apesar da capacidade total de 12 bits de memria ser um pouco maior
que nosso flip-flop c ela requer menos pinos e, o mais importante, o projeto
estende-se facilmente a memrias mai
Apesar da memria da Fig. 3.28 parecer complicada primeira vista, ela na reali
muito simples, devido sua estrutura regular. Ela tem oito linhas de entrada e
trs linha sada. Trs entradas so dadas: I I e '2; duas so para o endereo: A e
A e trs para cont CS para habilitar a pastilha (Chip Select), RD para distinguir
entre leitura (ReaD) e es e OE para habilitar a sada (Output Enable). As trs
sadas so para dados: D D e D
Entrada de Dados
Fig. 3.28 Diagrama lgico de uma memria 4 x 3. Cada linha uma das quatro
palavras de 3 bits.
operao de leitura ou escrita sempre l ou escreve uma palavra completa.
L
O NVEL DE LGICA DIGITAL 85
io, esta memria poderia ser encapsulada com 14 pinos, incluindo alimentao e
terra, DS 20 pinos para o flip-flop octal.
ra selecionar esta pastilha de memria, uma lgica externa precisa ativar CS e
colocar i nvel alto (1 lgico) para leitura, ou em nvel baixo (0 lgico) para
escrita. As duas de endereo precisam ser estabelecidas para indicar qual das
quatro palavras de 3 bits ser lida ou escrita. Para uma operao de leitura, as
linhas de entrada de dados no das, mas a palavra selecionada colocada nas linhas
de sada de dados. Para uma operao ita, os bits presentes nas linhas de entrada
de dados so carregados na palavra de memria nada; as linhas de sada de dados no
so usadas.
ialisemos agora a Fig. 3.28 cuidadosamente para ver como ela funciona. As quatro
portas Je seleo de palavra esquerda da memria formam um decodificador. Os
inversores tradas foram colocados de forma que cada porta habilitada (sada em
nvel alto) por lereo diferente. Cada porta ativa uma linha de seleo de palavra,
de cima para baixo palavras 0, 1, 2 e 3. Quando a pastilha for selecionada para
escrita, a linha vertical ,a CS RD estar em nvel alto, habilitando uma das quatro
portas, dependendo de qual e seleo de palavra est em nvel alto. A sada da
porta de escrita ativa todos os sinais ra a palavra selecionada, carregando o dado
de entrada nos flip-flops para aquela palavra. scrita s feita de CS est em
nvel alto e RD est em nvel baixo, e mesmo assim lavra selecionada por A e A
escrita; as outras palavras no so alteradas.
leitura similar escrita. A decodificao do endereo exatamente a mesma da
escrita. agora a linha CS est em nvel baixo, assim todas as portas de escrita
esto desabilitadas um dos flip-flops ser modificado. Em vez disso, a linha de
seleo de palavras escolhida as portas AND ligadas aos bits Q da palavra
selecionada. Ento uma palavra solta seus para as portas OR de quatro entradas na
parte inferior da figura, enquanto as outras [ soltam 0. Conseqentemente, a sada
das portas OR idntica ao valor armazenado vra selecionada. As trs palavras no
selecionadas nada contribuem para a sada.
ribora possamos projetar um circuito no qual as trs portas OR so trs linhas de
sada, umas vezes causa problemas. Em particular, temos mostrado as linhas de
entrada de as linhas de sada de dados como distintas, mas nas memrias atuais so
utilizadas as
linhas. Se tivssemos ligado as portas OR s linhas de sada de dados, a pastilha
tentaria lados, isto , forar cada linha para um valor especfico, mesmo nas
escritas, interferindo om o dado de entrada. Por essa razo, desejvel ter um
meio de conectar as portas linhas de sada de dados nas leituras, mas desconect-
las completamente nas escritas. precisamos de uma chave eletrnica que pode fazer
ou desfazer uma conexo em poucos gundos.
lizmente, estas chaves existem. A Fig. 3.29(a) mostra o smbolo para o que
chamado to-inversor. Ele tem uma entrada de dado, uma sada de dado e uma entrada
de controle. ) a entrada de controle est em nvel alto, o buffer age como um fio,
como visto na 9(b). Quando a entrada de controle est em nvel baixo, o buffer age
como um circuito como visto na Fig. 3.29(c); como se algum separasse a sada de
dado do resto do com um alicate de corte. Entretanto, ao contrrio do modelo do
alicate de corte, a ) pode ser subseqentemente restaurada em poucos nanossegundos,
simplesmente colo- sinal de controle em nvel alto de novo.
Entrada
de dados
-. o-
Controle
(a) (b) (e) (d
(a) Um buffer nao-inversor. (b) Efeito de (a) quando o controle est em nvel alto.
(b) Efeito iando o controle est em nvel baixo. (d) Um buffer inversor.
86 ORGANIZAO ESTRUTURADA DE COMPUTADORES
A Fig. 3.29(d) mostra um buffer inversor, que age como um inversor normal qua
controle est em nvel alto e desconecta a sada do circuito quando o controle est
em baixo. Ambos os tipos de buffer so dispositivos fri-state, porque eles podem
produzir 0 nenhuma sada (circuito aberto). Os buffers tambm amplificam sinais, e
assim eles podem muitas entradas simultaneamente. Algumas vezes eles so usados em
circuitos por esta mesmo que suas propriedades de comutao no sejam necessrias.
Voltando ao circuito de memria, deve estar claro agora para que servem os trs
no-inversores. Quando CS, RD e OE esto todos em nvel alto, o sinal de
habilitao de est tambm em nvel alto, habilitando os buffers e colocando a
palavra nas linhas de Quando CS, RD ou OE est em nvel baixo, as sadas de dados
so desconectadas do do circuito.
3.3.4 Propriedades da Memria
Um aspecto til da memria da Fig. 3.28 que ela se estende facilmente para tani
maiores. Como a desenhamos, a memria de 4 x 3, isto , quatro palavras de 3 bits
Para estend-la a 4 x 8 necessitamos apenas de adicionar mais cinco colunas de
quatro Jlij cada, assim como mais cinco linhas de entrada e cinco linhas de sada.
Para ir de 4 8 x 3 precisamos adicionar mais quatro linhas de trs flip-flops cada,
e tambm uma de endereo A Com esse tipo de estrutura, o nmero de palavras de
memria deve se potncia de 2 para a eficincia mxima, mas o nmero de hits na
palavra pode ser qualquei
Como a tecnologia de circuitos integrados bem apropriada para fazer pastilhas
cuja est interna um padro repetitivo bidimensional, as pastilhas de memria so
sua aplicao Com o desenvolvimento da tecnologia, o nmero de bits que pode ser
colocado em uma pi aumenta, tipicamente, de um fator de 4 a cada 3 ou 4 anos. No
incio da dcada de pastilhas tinham 1K bit; nos ltimos anos, tinham 4K, 16K, 64K,
256K, e assim por Por volta de 1990, foi possvel colocar 4 milhes ou mais de hits
em uma pastilha. As pa maiores nem sempre tornam as menores obsoletas, devido s
diferenas de compromis capacidade, velocidade, potncia, preo e convenincias de
interfaceamento.
Para qualquer tamanho de memria, h vrios modos de organizar a pastilha. A Fi
mostra duas organizaes possveis para uma pastilha de tamanho mdio (256K bits):
2 8 e 256K x 1. Na primeira, so necessrias 15 linhas de endereo para enderear o
byte des e oito linhas de dados para carregar e armazenar dados. Na ltima, so
necessrias 18 de endereo para enderear o bit desejado, mas necessria apenas
uma linha para ei de dados e outra para sada. Em ambos os casos so necessrias
linhas para distinguir li de escritas e para a seleo da pastilha. A linha FT a
habilitao da sada (Output E, a sada est presente quando ela 0, e ausente
quando ela 1 (isto , a sada da p:
desconectada do circuito). A linha para habilitar a escrita (Write Enable). As
sobre O W e significam que o sinal habilitado por um estado de tenso baixa (0 1
em vez do estado de tenso alta (1 lgico). Esta conveno ser discutida com mais
d mais tarde.
Note que a construo de uma pastilha de memria com uma palavra de 16 bits a de
pastilhas de 256K x 1 requer 16 pastilhas em paralelo e resulta em uma capacidad de
pelo menos 512K bytes, enquanto o uso de pastilhas de 32K x 8 requer apenas oito pa
em paralelo e permite memrias to pequenas quanto 64K bytes.
As memrias que estudamos at agora podem ser lidas e escritas. Tais memrias so
cha RAMs (Random Access Memories), cujo nome io apropriado porque todas as
pastil] memria so acessveis randomicamente, mas o termo est bem oficializado.
H duas vari de RAMs: estticas e dinmicas. As RAMs estticas so construdas
internamente usando cii similares ao nosso latch tipo D. Essas memrias tm a
propriedade de seus contedos retidos enquanto a alimentao mantida: segundos,
minutos, horas ou mesmo dias.
As RAMs dinmicas, ao contrrio, no usam circuitos do tipo Iatch. Em vez disse
RAM dinmica um arranjo de pequenos capacitores, cada um podendo ser carregado ou
de
gado, o que permite armazenar O ou 1. Como a carga eltrica tende a escoar-se, cada
RAM dinmica precisa ser refrescado a cada poucos milissegundos para evitar que o
dado e
Como uma lgica externa precisa tomar conta do refrescamento, as RAMs dinmicas req
O NVEL DE LGICA DIGITAL 87
4 DO AO
4 oi Ai
A2
4 D2
A3
4 D3 A4
4 D4 A5
4 D
4 D5 A6
4 D6 A7
Pastilha de A8 Pastilha de
memria de D7 memria de
32Kx8 A9 256Kx8
AiO
Ai i
Ai2 out
Ai3
Ai 4
Ai5
Ai6
Ai7
(a) (b)
O Dois modos de organizar uma pastdha de memria de 256K bits.
rfaceamento mais complexo que as estticas. Entretanto, em muitas aplicaes, essa
desvan compensada por suas maiores capacidades. Algumas RAMs dinmicas possuem
uma le refrescamento embutida na pastilha, proporcionando tanto alta capacidade
quanto interfa ito simples. Tais pastilhas so ditas quase estticas.
RAMs no so os nicos tipos de pastilhas de memria. Em muitas aplicaes, tais
rinquedos, eletrodomsticos e carros, o programa e parte dos dados precisam
permanecer nados mesmo quando a alimentao desligada. Alm disto, uma vez
instalados, nem rama nem os dados sero modificados. Esses requisitos levaram ao
desenvolvimento das (Read-Only Me que no podem ser modificadas ou apagadas,
intencionalmente Os dados das ROMs so inseridos durante sua fabricao,
essencialmente expondo um il fotossensvel atravs de uma mscara contendo o padro
desejado de bits e ento gravando rfcie exposta (ou no exposta). O nico modo de
trocar o programa em uma ROM iir a pastilha.
ROMs so mais baratas que as RAMs quando pedidas em grandes quantidades para as
despesas de fabricao da mscara. Entretanto, elas so inflexveis, porque no
podem dificadas aps a fabricao, e o tempo gasto entre o pedido e o recebimento
das ROMs r de muitas semanas. Para facilitar s empresas o desenvolvimento de novos
produtos s em ROM, foi inventada a PROM (Programmable ROM). Esta pastilha como
uma exceto que ela pode ser programada (uma nica vez) no campo, reduzindo
grandemente o de retorno.
prximo desenvolvimento nesta linha foi a EPROM (Erasable PROM), que pode no ser
programada, como tambm ser apagada, no campo. Quando a janela de quartzo EPROM
exposta a uma luz ultravioleta forte por 15 minutos, todos os bits vo para 1.
88 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Se muitas modificaes so esperadas durante o ciclo de proeto, as EPROMs so
mais econmicas que as PROMs porque podem ser reutilizadas.
Melhor que a EPROM a EEPROM (E!ectrically Erasable PROM), tambm cham EAROM
(Electrically Alterable ROM), que pode ser apagada aplicando pulsos em vez colocada
em uma cmara especial para exposio luz ultravioleta. As EEPROMS difer RAMs na
escrita e no apagamento de um byte, que demoram milhares de vezes mais. Entri os
tempos de acesso para leitura de ROMs, PROMs, EPROMS, EEPROMs e RAMs so tveis
(poucas centenas de nanossegundos, no mximo).
3.4 MICROPROCESSADORES E BARRAMENTOS
Munidos com informaes sobre pastilhas SSI, pastilhas MSI e pastilhas de memr
podemos agora atacar o tpico principal deste captulo microprocessadores. Nesta
seo, primeiramente analisar alguns aspectos gerais de microprocessadores sob o
ponto de vi nvel de lgica digital, incluindo a pinagem (o significado dos sinais
de cada pino). Cc microprocessadores so to inter-relacionados com o projeto dos
barramentos, iremos uma introduo ao projeto de barramento nesta seo. Nas sees
seguintes, daremos ex detalhados de processadores e seus barramentos.
3.4.1 Pastilhas Microprocessadoras
Para o propsito deste livro usaremos o termo "microprocessador" para significar q
CPU contida em uma nica pastilha, embora algumas delas possuam arquitetura e poder
co cional de pequenos mainframes. Nossa definio baseada no encapsulamento, o
que apropriada ao nvel de lgica digital que estamos estudando.
Escolhemos focalizar CPUs contidas em uma nica pastilha por uma boa razo: suas
int com o resto do sistema so bem definidas. Uma pastilha microprocessadora tpica
teu 40 e 132 pinos, atravs dos quais precisa ser feita toda a comunicao com o
mundo e Alguns pinos soltam sinais da CPU, outros pinos aceitam sinais do mundo
exterior, e podem fazer ambos. Entendendo as funes de todos os pinos, podemos
saber como interage com a memria e com os dispositivos de E/S no nvel de lgica
digital. Embora o ri seguinte relacione-se especificamente a microprocessadores, as
idias bsicas, por exemplo a CPU referencia a memria, como os dispositivos de E/S
so interfaceados, e assim por tambm so mantidas para minicomputadores e at
certo ponto para tnainframes, se b de forma ligeiramente diferente.
Os pinos de uma pastilha microprocessadora podem ser divididos em trs tipos: en'
dado e controle. Esses pinos so conectados a pinos similares das memrias e
pastilhas atravs de um conjunto de fios paralelos chamado barramento. Para buscar
uma instn microprocessador primeiro coloca o endereo de memria da instruo nos
seus pinos de en Ento ele (usualmente) ativa a linha de controle para informar a
memria que ele q uma palavra. A memria responde colocando a palavra requerida nos
pinos de dados do mi cessador e ativando um sinal informando que o fez. Quando o
microprocessador perce sinal, ele aceita a palavra e executa a instruo.
A instruo pode requerer leitura ou escrita de palavras de dados, e, neste caso,
processo repetido para cada palavra adicional. Daremos abaixo detalhes de como
lei escritas funcionam, mas, por enquanto, o fato importante a saber que a CPU
comuni a memria e com os dispositivos de E/S colocando sinais em seus pinos, e
aceitando sir seus pinos. Nenhuma outra forma de comunicao possvel.
E necessria aqui uma observao em terminologia. Em alguns pinos, a ao por um
sinal alto (+5 V). Em outros, ela causada por um sinal baixo. Para evitar co
iremos consistentemente dizer que um sinal ativado (em vez de dizer que ele est
baixo) para significar que ele colocado no estado para causar alguma ao. Ento,
para pinos, ativ-lo significa coloc-lo em alto. Para outros, significa coloc-lo
em baixo. Ao que so ativos em baixo so dados nomes contendo uma barra sobre eles.
Ento, WI ativo em alto, mas WRITE ativo em baixo. O oposto de ativar
desativar. Quand de especial acontece, os pinos esto desativados.
O NVEL DE LGICA DIGITAL 89
ois dos parmetros-chave para determinar o desempenho de um microprocessador so o
o de pinos de endereo e o nmero de pinos de dados. Uma pastilha com m pinos de
:O pode enderear at 2' bytes de memria. Valores comuns de m so 16, 20, 24 e
32. rmente, uma pastilha com n pinos de dados pode ler ou escrever uma palavra de n
bits a nica operao. Valores comuns de n so 8, 16 e 32. Um microprocessador com
8 de dados levar quatro operaes para ler uma palavra de 32 bits, enquanto um com
os de dados pode realizar a mesma tarefa em uma operao. Assim, a pastilha com 32
le dados muito mais rpida, mas invariavelmente tambm mais cara.
lm dos pinos de endereos e dados, cada microprocessador possui alguns pinos de
controle. os de controle regulam o fluxo e a temporizao dos dados para e do
microprocessador, outros usos. Todos os microprocessadores possuem pinos para
alimentao (usualmente lts), terra e um sinal de relgio (uma onda quadrada), mas
os outros pinos variam muito tilha para pastilha. Mesmo assim, os pinos de controle
podem ser grosseiramente agrupados uintes categorias:
Controle de barramento
Interrupes
Arbitragem de barramento
Sinalizao de co-processador
Status
Miscelnea
abaixo descrever brevemente cada uma dessas categorias em termos gerais. Quando
anali s as pastilhas Intel e Motorola mais tarde, forneceremos mais detalhes. Uma
pastilha de
enrica, usando esses grupos de sinais, mostrada na Fig. 3.31.
s pinos de controle de barramento so, na maioria, sadas do microprocessador para
o
sento (portanto, entradas para memrias e pastilhas de EIS), indicando se o
microprocessador
r ou escrever na memria, ou fazer alguma outra coisa.
s pinos de interrupo so entradas do microprocessador vindas dos dispositivos de
EIS.
sioria dos sistemas, o microprocessador pode dizer a um dispositivo de EIS para
iniciar
_______ Arbitragem
Endereamento 4 .t _______ de
barramento
Dados *i ______ Co-processador
Micropro
cessador
Controle de barramento tipico _______ Status
Interrupes Miscelnea
' para
terra eltrico
.1 +5v
Smbolo do/ t
sinal de Alimentao 5 volts
relgio
31 A pinagem lgica de um microprocessador tpico (hipottico). As setas indicam
sinais de entrada da. As linhas diagonais curtas indicam o uso de mltiplos pinos.
Para um microprocessador especfico, dicado o nmero de pinos.
90 ORGANIZAO ESTRUTURADA DE COMPUTADORES
a operao, e ento cair fora, fazendo algo til enquanto o dispositivo de EIS
lento reali; trabalho. Quando a E/S estiver completada, a pastilha controladora de
E/S ativa um sin um desses pinos para interromper a CPU para obter servio para o
dispositivo de E/S, por exe para verificar se algum erro ocorreu. Alguns
microprocessadores possuem um pino de sad; reconhecer o sinal de interrupo.
Os pinos de arbitragem de barramento so necessrios para regular o trfego no
barran
evitando que dois dispositivos tentem us-lo ao mesmo tempo. Para os propsitos de
arbitr
a CPU considerada como um dispositivo.
Muitas pastilhas microprocessadoras so projetadas para operar com co-
processadores, a maioria pastilhas de ponto-flutuante, mas, algumas vezes,
pastilhas grficas, entre outras facilitar a comunicao entre microprocessador e
co-processador, existem pinos especiai fazer e entender vrias requisies.
Alm desses sinais, alguns microprocessadores possuem vrios outros pinos. Alguns
fornecem ou aceitam informaes de status, outros so teis para reinicializar o
compu
e outros ainda esto presentes para garantir compatibilidade com pastilhas de E/S
mais anti
3.4.2 Barramentos de Computadores
Um barramento um caminho comum eltrico entre mltiplos dispositivos. Um cxl
comum o barramento de sistema presente em todos os microcomputadores, que consis
50 a 100 fios de cobre paralelos gravados na placa-me, com conectores espaados em
inte regulares para inserir placas de memria e E/S. Entretanto, os harramentos
podem ser tal dedicados a funes especiais, tais como interligar um
microprocessador a um ou mais co-p sadores ou a memrias locais. Alm disto, dentro
da prpria pastilha do microprocessador e) vrios barramentos para interligar os
componentes internos, como ilustra a Fig. 3.32. Na liter os barramentos so
representados por setas grossas, como na figura.
Embora os projetistas de microprocessadores estejam livres para usar qualquer tipo
de
CPU
Barramento de sistema
Fig. 3.32 Os sistemas de computadores podem possuir mltiplos harramentos.
O NVEL DE LGICA DIGITAL 91
que quiserem dentro da pastilha, para permitir que as placas projetadas por
terceiros
ser ligadas ao harramento de sistema devem existir regras bem definidas sobre como
imento funciona, as quais devem ser obedecidas por todos os dispositivos a ele
conectados. egras so chamadas de protocolo do barramento. Alm disso, deve existir
uma especificao ica e eltrica, de modo que placas de terceiros caibam no
bastidor e tenham conectores caixem naqueles da placa-me, tanto fisicamente quanto
em termos de tenses eltricas.
rios barramentos so amplamente utilizados no mundo da computao. Alguns dos mais
idos (com exemplos) so o harramento Camac (fsica nuclear), o barramento EISA
(80386), us (fsica de alta energia), os harramentos do IBM PC e do PCIAT (IBM PC e
PCIAT), sbus (PDP-11, VAX), o Megabus (Honeywell), o Microchannel (PSI2), o
Multibus 1(8086), ibus 11(80386), o Nubus (Macintosh II), o Omnibus (PDP-8), o Qbus
(LSI-11), o barramento computadores de hobhy), o SBI (VAX-111780), o Unibus (PDP-
11), o Versabus (Motorola) ramento VME (680 x 0). O mundo provavelmente seria
melhor se todos, exceto um, sumissem ente da face da Terra. Infelizmente,
padronizao nesta rea parece muito improvvel, z que muito j foi investido em
todos esses sistemas incompatveis.
amos agora iniciar nosso estudo sobre como os barramentos funcionam. Alguns
dispositivos conectam a um barramento so ativos e podem iniciar transferncias
pelo barramento, ito outros so passivos e esperam por requisies. Os ativos so
chamados mestres; os )S so chamados escravos. Quando a CPU ordena que um
controlador de disco leia ou a um bloco, a CPU est agindo como um mestre e o
controlador de disco est agindo escravo. Entretanto, mais tarde, o controlador de
disco pode agir como mestre quando nanda que a memria aceite as palavras que ele
est lendo da unidade de disco. Muitas iaes tpicas de mestre e escravo so
listadas na Fig. 3.33. Em nenhuma circunstncia ria pode ser um mestre.
s sinais binrios que saem dos dispositivos do computador freqentemente no so
fortes iente para alimentar um barramento, especialmente se ele for relativamente
longo e possuir dispositivos. Por esta razo, a maioria dos mestres de barramento
esto conectados a
avs de pastilhas chamadas acionadores de barramentos (bus driver), que so
essencialmente
icadores digitais. Similarmente, a maioria dos escravos esto conectados ao
barramento
de receptores de barramento (bus receiver). Para os dispositivos que podem agir
tanto mestre quanto como escravo, utilizada uma pastilha combinada chamada
transceptor ramento (bus transceiver). Estas pastilhas de interface com o
barramento so freqentemente tivos tri-state, para permitir que eles flutuem
(sejam desconectados) quando no so necess u so ligados de uma maneira
diferente, chamada coletor aberto, que atinge efeito similar. lo dois ou mais
dispositivos, em uma linha de coletor aberto, ativam a linha ao mesmo o resultado
o OR hooleano de todos os sinais. Este arranjo freqentemente chamado OR. Na
maioria dos harramentos, algumas das linhas so tri-state, e outras, que precisam
priedade de wired-OR, so de coletor aberto.
amo um microprocessador, um barramento tambm tem linhas de endereo, dados e
controle. anto, no existe necessariamente um mapeamento um-para-um entre os sinais
do micropro ar e os do barramento. Por exemplo, alguns microprocessadores tm trs
pinos que codificam est realizando uma leitura de memria, uma escrita na memria,
uma leitura de EIS, ;crita de EIS, ou alguma outra operao. Um barramento tpico
ter uma linha para leitura iiria, uma segunda para escrita na memria, uma
terceira para leitura de EIS, uma quarta
Mestre Escravo Exemplo
Cpu
Memria
Busca de instrues e dados
c
E!S
Inicio de transterncia de dados
c
Co-processador
Passando instrues de ponto-tlutuante
ES
Memria
DMA (acesso direto memria)
Co.processador
Memria
Busca de operandos
33 Exemptos de mestres e escravos de barramentos.
92 ORGANIZAO ESTRUTURADA DE COMPUTADORES
para escrita de EIS, e assim por diante. Uma pastilha decodificadora necessria
entre a
e tal barramento para converter o sinal codificado de trs bits em sinais separados
que
acionar as linhas do barramento.
As principais consideraes no projeto de barramentos (alm do nmero de linhas de
en
e dados) so a temporizao do barramento, o mecanismo de arbitragem, o tratamento
de int
o e o tratamento de erros. Estas consideraes tm um impacto substancial na
veloc
e na banda de passagem do barramento. Nas sees seguintes, analisaremos tais
tpicos, come
com a temporizao.
3.4.3 Barramentos Sncronos
Os barramentos podem ser divididos em duas categorias distintas, dependendo da ter
zao. Um barramento sncrono possui uma linha acionada por um oscilador a cristal.
C desta linha uma onda quadrada com freqncia geralmente entre 5 e 50 MHz. Todas
as ativi do barramento gastam um nmero inteiro desses ciclos, chamados ciclos de
barramento. O tipo de barramento, o barramento assncrono, no possui um relgio
mestre. Os ciclos de mento podem ter qualquer durao requerida e no precisam ser
os mesmos entre toc pares de dispositivos. Iremos examinar cada um deles.
Como exemplo de como um barramento sncrono funciona, considere a temporiza Fig.
3.34(a). Neste exemplo, utilizamos um relgio de 4 MHz, que produz um ciclo de
barrar de 250 ns. Assumiremos, a partir de agora, que a leitura de um byte da
memria gast ciclos de barramento, dando um total de 750 ns do incio do ciclo T
at o fim do cic Note que nenhuma das bordas de subida ou de descida foi desenhada
verticalmente, p nenhum sinal eltrico pode mudar seu valor em tempo zero. Neste
exemplo, assumiremo um sinal gasta 10 ns para mudar de valor. As linhas para o
relgio, endereo, dado, NI e i so mostradas na mesma escala de tempo.
O incio de T definido pela borda de subida do relgio. Durante T a CPU col
endereo do byte desejado nas linhas de endereo. Como o endereo no um valor
qui como o relgio, no podemos represent-lo como uma nica linha; ao invs disto,
ele mo como duas linhas que se cruzam no instante em que o endereo muda. Alm
disto, o somb antes do cruzamento indica que o valor sombreado no relevante.
Usando a mesma conv de sombreamento, vemos que o contedo das linhas de dado no
so relevantes at T
Depois que as linhas de endereo tiveram a chance de ter seus novos valores
establi MREO e D so ativados. A primeira indica que a memria (e no um
dispositivo de est sendo acessada, a segunda distingue leituras de escritas. Nada
acontece durante T dar tempo memria para decodificar o endereo e colocar o dado
no barramento. Na de descida de T a CPU amostra (isto , l) as linhas de dado,
capturando_(isto , armazen o valor em um registrador interno. Tendo lido o dado, a
CPU desativa MREQ e RD. Se neces outro ciclo de memria pode comear na prxima
borda de subida do relgio.
Na especificao de tempos da Fig. 3.34(b), so elucidados oito smbolos que ocorrc
carta de tempo. TAD, por exemplo, o intervalo de tempo entre a borda de subida do
n em T e a estabilizao das linhas de endereo. De acordo com a especificao de
tempo 110 ns. Isto significa que o fabricante da pastilha garante que, durante
qualquer cic leitura de operando, a CPU soltar o endereo a ser lido dentro de 110
ns da borda de s do relgio de T
As especificaes de tempo tambm requerem que o dado esteja disponvel nas linh
dado no mnimo 50 ns antes da borda de descida de T para dar tempo de estabilizar
de a CPU amostr-lo (isto , l-lo). A combinao das restries em TAD, e TDS
significa no pior caso, a memria ter apenas 250 + 250 + 125 - 110 - 50 = 465 ns
do instant o endereo aparece at que_ela_precise soltar o dado. Se a memria no
puder responder sul temente rpido, ela ativa WAIT (no mostrado) antes da borda de
descida de T quando ' amostrado. Isto ir inserir estados de espera - waif sfates
(ciclos extras de barrament at que a memria termine e desative WAIT.
As especificaes de tempo garantem ainda que o endereo estar estvel no mnin
ns antes de MREQ ser ativado. Este tempo pode ser importante se MREQ usado na se
da pastilha de memria porque algumas memrias necessitam que o endereo esteja
estvel
O NVEL DE LGICA DIGITAL 93
Ciclo de leitura
T T 1
1
:
Endereo de memria a ser id
o___________
J
...-
,........ .
.,.,..,...,,., .. .. .... ... .
O
.....
ado
-
-
TM H
____ 1
TML
TRH
--d
TRL TDH
Tempo ___-
(a)
cio
Parmetro
Mm
Mx
Unidade
Atraso da sada do endereo
110
ns
Endereo estvel antes de Mft
60
ns
Atrasode
85
ns
Atraso de da borda de descida de D em T
85
ns
Estabilizao do dado antes da borda de descida de
50
ns
AtrasodeM
85
ns
Atraso de da borda de descida de 1 em T
85
ns
Temp conservao do dado aps desativao de RD
O
ns
(b
.34 (a) Temporizao de leitura de um barramento sncrono. (b) Especificao de
alguns tempos crticos.
leo da pastilha. Claramente, o projetista de microcomputador no deve escolher
uma
a de memria com tempo de estabilizao de 75 ns.
s restries em TM e TRL significam que MREQ e sero ambos ativados dentro de
a partir da borda de descida do relgio. No pior caso, a pastilha de memria ter
apenas 250 - 85 - 50 = 365 ns aps a ativao de MREQ e para colocar seu dado no
rnento. Esta restrio adicionada restrio_de_endereo.
MH e TRU dizem quanto tempo gasta para MREQ e serem desativados aps o dado
lo amostrado. Finalmente, TDH diz quanto tempo a memria precisa manter o dado no
Enento aps I ter sido desativado. No que diz respeito nossa CPU exemplo, a
memria remover o dado do barramento to logo RU tenha sido desativado; em alguns
micropro lores reais, entretanto, o dado precisa ser mantido estvel por algum
tempo.
REO
DADO
MREO
RD
94 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Gostaramos de salientar que a Fig. 3.34 uma verso altamente simplificada das
restri
reais de tempo. Na realidade, muitos outros tempos crticos so especificados.
Contudo
d uma boa idia de como os barramentos sncronos funcionam.
Alm dos ciclos de leitura (e escrita), alguns barramentos sncronos suportam
transferi de blocos. Quando uma leitura de bloco iniciada, o mestre do harramento
diz ao esc quantos bytes sero transferidos, por exemplo, colocando o nmero de
hytes nas linhas de d durante T Em vez de retornar apenas um byte, o escravo solta
um byte durante cada at que a quantidade seja exaurida. Neste exemplo, uma leitura
de um bloco de n hytes gas n + 2 ciclos, em vez de 3n.
Outra forma de tornar o barramento mais rpido encurtar um ciclo. Em nosso exeni
um byte transferido a cada 750 ns, dando uma banda passante de 1,33 Mbytes/s. Com
relgio de 8 MHz, o tempo de um ciclo poderia ser reduzido metade, e poderamos
ati 2,67 Mbytes/s. Entretanto, encurtar o ciclo de barramento poderia levar a
problemas de engenh Os sinais nas diversas linhas no trafegam exatamente na mesma
velocidade, um efeito charr bus skew (atraso ou desvio). E essencial que o ciclo do
harramento seja longo comparad atraso, para evitar que a boa idia de intervalos de
tempo discretos seja reduzida temporiz analgica.
Nosso ltimo ponto se os sinais de controle so ativados em alto ou baixo. Cabe
projetistas de barramento determinar qual mais conveniente, mas a escolha
essencialm arbitrria. Poder-se-ia consider-lo como o equivalente em hardware da
escolha do program de representar blocos livres do disco como O ou 1 no mapa de
hits (bit map).
3.4.4 Barramentos Assncronos
Embora os barramentos sncronos sejam simples devido aos seus intervalos discretos
de ten eles tambm tm alguns problemas. De um lado, tudo trabalha em mltiplos
inteiros dos ci de barramento. Se uma determinada CPU e memria so capazes de
completar uma transfer] em 3,1 ciclos, elas tm que estend-la a 4,0, porque
ciclos fracionrios so proibidos.
Pior ainda, uma vez que o ciclo do barramento foi escolhido, e placas de memria e
EIS terem sido construdas para ele, difcil tirar vantagens das futuras
melhorias na tecnolo Por exemplo, suponha que poucos anos aps o sistema da Fig.
3.34 ser construdo, este disponveis novas CPUs e memria com ciclos de 100 ns em
vez de 250 ns. Embora pos ser utilizadas, elas iriam funcionar na mesma velocidade
que a antiga, uma vez que o proto do barramento requer que a memria ative as
linhas de dado justamente antes da borda descida de T
ENDEREO
MREO
RD
MSYN
DADOS
SSYN
Fig. 3.35 Operao de um barramento assmncrono.
O NVEL DE LGICA DIGITAL 95
Colocando esses fatos em termos ligeiramente diferentes, se um barramento possui um
conjun terogneo de dispositivos, alguns rpidos e outros lentos, o barramento deve
trabalhar com ais lentos, e os mais rpidos no podero usar todo o seu potencial.
Tecnologias mistas podem ser manipuladas atravs de um barramento assncrono, isto
, em relgio mestre, como mostrado na Fig. 3.35. Em vez de amarrar tudo ao
relgio, quando stre do barramento ativou as linhas de endereo,_MREQ, Ri5 e mais o
que ele precisa, nto ativa um sinal especial que chamaremos de MSYN (Master
SYNchronization - sincroni i do mestre). Quando o escravo o percebe, ele realiza o
trabalho o mais rpido que puder. ido termina, ele ativa SSYN ( SYNchronization
sincronizao do escravo).
To logo o mestre perceba o SSYN ativado, ele sabe que os dados esto disponveis;
assim s armazena e ento desativa as linhas de endereo, junto com MREQ, RD e MSYN.
Quando ravo percebe a desativao de MSYN, ele sabe que o ciclo terminou; assim ele
desativa , e estamos de volta situao original, com todos os sinais desativados,
esperando pelo imo mestre.
Cartas de tempo de barramentos assncronos (e, algumas vezes, de barramentos
sncronos) am setas para mostrar causa e efeito, como na Fig. 3.35. A ativao MSYN
causa a ativao inhas de dados, e tambm faz com que o escravo ative SSYN.
A_ativao de SSYN, por 'ez, causa a_desativao das linhas de endereo, MREQ, RD e
MSYN. Finalmente, a desati o de MSYN causa a desativao de SSYN, que termina a
leitura.
Um conjunto de sinais que se travam desta forma chamado de handshake completo. A
essencial consiste em quatro eventos:
1. MSYN ativado.
2. YN ativado em resposta a MSYN.
3. MSYN desativado em resposta a SSYN.
4. SSYN desativado em resposta desativao de MSYN.
Deve estar claro que handshakes completos so independentes do tempo. Cada evento
ido por um anterior, e no por um pulso de relgio. Se um par mestre-escravo em
particular ito, isto no afeta de forma alguma um par subseqente mestre-escravo
que muito mais
As vantagens de um harrament assncrono devem agora estar claras, mas o fato que
Lioria dos barramentos sncrona. A razo que mais fcil construir um sistema
sncrono. PU simplesmente ativa os seus sinais e a memria simplesmente reage. No
h realimentao a e efeito), mas se os componentes foram escolhidos corretamente,
tudo funcionar sem fshaking.
Arbitragem de Barramentos
At agora, temos assumido tacitamente que existe apenas um mestre no barramento, a
CPU. ealidade, as pastilhas de E/S devem tornar-se mestres para ler e escrever na
memria, e ,m para causar interrupes. Co-processadores podem tambm querer se
tornar mestres arramento. A questo surge: "Que acontece se dois ou mais
dispositivos querem se tornar res ao mesmo tempo?" A resposta a necessidade de
algum mecanismo de arbitragem irramento para evitar o caos.
Mecanismos de arbitragem podem ser centralizados ou descentralizados. Vamos
inicialmente iderar a arbitragem centralizada. Uma forma particularmente simples de
arbitragem centra- a mostrada na Fig. 3.36(a). Neste esquema, um nico rbitro de
barramento determina o prximo a ir. Muitos microprocessadores possuem o rbitro
construdo dentro da pastilha PU, mas em sistemas de minicomputadores ele algumas
vezes um dispositivo isolado. srramento possui uma linha wired-OR nica de
requisio que pode ser ativada por um lais dispositivos ao mesmo tempo. No h
meios de o rbitro dizer quantos dispositivos
96 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Requisita barramento
Dispositivos de EIS
(a)
Requisio nvel 1
(b)
Fig. 3.36 (a) Um rbitro de barramento de um nvel usando daisy chaining. (b) O
mesmo rbitro,
com dois nveis.
requisitaram o barramento. As nicas condies que ele pode distinguir so: alguma
requis
e nenhuma requisio.
Quando o rbitro percebe uma requisio do barramento (bus request), ele gera uma
permi ativando uma linha de permisso de barramento (bus grant). Esta linha
ligada em srie atr de todos os dispositivos, como as lmpadas de um pisca-pisca
barato de rvore de natal. Qu o dispositivo fisicamente mais prximo do rbitro v
a permisso, verifica se foi ele que a requisio. Se foi, ele toma conta do
barramento e no propaga a permisso pela linha no foi, ele propaga a permisso
para o prximo dispositivo na linha, que se comporta do me modo, e assim
sucessivamente, at que algum dispositivo aceite a permisso e tome conta
barramento. Este esquema chamado de daisy chaining. Ele tem a propriedade de que
dispositivos so assinaladas prioridades dependendo da distncia que esto do
rbitro. O disposi mais prximo ganha.
Para contornar as prioridades implcitas baseadas na distncia do rbitro, muitos
barrame possuem mltiplos nveis de prioridade. Para cada nvel de prioridade
existe uma linha de requis e uma linha de permisso de barramento. O da Fig.
3.36(b) possui dois nveis, 1 e 2 (barrame reais freqentemente possuem 4, 8 ou 16
nveis). Cada dispositivo se liga a um dos nvei requisio, sendo que os com
tempos mais crticos se ligam aos nveis de maior prioridade. Fig. 3.36(b), os
dispositivos 1 e 2 utilizam a prioridade 1, e os dispositivos 3, 4 e 5 utili a
prioridade 2.
Se mltiplos nveis de prioridade so requeridos ao mesmo tempo, o rbitro solta a
permi apenas para o de prioridade mais alta. Entre os dispositivos de mesma
prioridade, usac processo de daisy chaining. Na Fig. 3.36(b), em caso de
conflitos, o dispositivo 3 ganha o disposi 4, o qual ganha do dispositivo 5, o qual
ganha do 1. O dispositivo 2 tem o menor nve prioridade porque ele est no fim da
cadeia de menor prioridade.
Por um lado, no tecnologicamente necessrio ligar a linha de permisso de nvel
2 serialmi atravs dos dispositivos 1 e 2, uma vez que eles no fazem requisies
nela, mas, por uma co nincia de implementao, mais fcil ligar todas as linhas
de permisso atravs de todo dispositivos em vez de fazer uma ligao especial que
depende das prioridades dos dispositivo
1..
O NVEL DE LGICA DIGITAL 97
Iguns rbitros possuem uma terceira linha que um dispositivo ativa quando ele
aceitou iisso e tomou posse do barramento. To logo ele ativou esta linha de
reconhecimento, as de requisio e permisso podem ser desativadas. Como resultado,
outros dispositivos requisitar o barramento enquanto um outro o est utilizando.
Quando a transferncia te terminar, o prximo mestre do barramento j ter sido
selecionado. Ele pode iniciar o a linha de reconhecimento for desativada, quando
ento o ciclo seguinte de arbitragem omear. Este esquema requer uma linha extra no
barramento e mais circuito em cada tivo, mas faz um uso melhor dos ciclos de
barramento. O PDP-11 e as pastilhas da Motorola, utras, utilizam este sistema.
n muitos sistemas, a CPU pode tambm competir pelo barramento, mas ela tem a menor
ade, e somente obtm o barramento quando ningum mais o quer. A idia aqui que
pode sempre esperar, mas os dispositivos de EIS freqentemente precisam obter o
barra- rapidamente ou perdem os dados que chegam. Discos girando a altas
velocidades no esperar.
uando a arbitragem descentralizada est sendo utilizada no h rbitro de
barramento. amento SBI do VAX, por exemplo, tem 16 linhas de requisio de
barramento priorizadas, ira cada dispositivo. Este projeto limita o nmero de
dispositivos a 16. Quando um dispositivo sar o barramento, ele ativa sua linha de
requisio. Todos os dispositivos monitoram todas as de requisio, e assim, ao fim
de cada ciclo do barramento, cada dispositivo sabe se requisitante de maior
prioridade, e ento se lhe permitido usar o barramento no prximo Comparado
arbitragem centralizada, este mtodo requer mais linhas de barramento, lo porm o
custo potencial do rbitro.
utro tipo de arbitragem descentralizada de barramento utilizado no Multibus. Este
esque )strado na Fig. 3.37, usa apenas trs linhas, independente do nmero de
dispositivos presen primeira linha uma wired-OR para a requisio do barramento.
A segunda linha da BUSY e ativada pelo mestre corrente do barramento. A
terceira linha usada para r o barramento. Ela encadeada atravs de todos os
dispositivos. A cabea da cadeia ida ativada, ligando-a fonte de 5 volts.
uando nenhum dispositivo quer o barramento, a linha de arbitragem ativada
propagada de todos os dispositivos. Para obter o barramento, um dispositivo
primeiro verifica se smento est disponvel, e se a linha de arbitragem que est
recebendo, IN, est ativada. estiver desativada, ele no poder tornar-se mestre do
barramento. Se IN estiver ativada, nto, o dispositivo desativa OUT, o que faz todos
os seguintes na cadeia desativarem IN Quando a poeira se assenta, apenas um
dispositivo ter IN ativado e OUT desativado.
spositivo se torna mestre do barramento, ativa BUSY e OUT, e inicia sua
transferncia.
nsando um pouco, observaremos que o dispositivo mais no incio da cadeia que requer
Lmento sempre o obtm. Portanto, este esquema similar arbitragem daisy chain
original, pela ausncia do rbitro, sendo assim mais barato, mais rpido e no-
vulnervel a falhas itro. O Multibus, incidentalmente, tambm oferece arbitragem
centralizada, permitindo projetistas faam a escolha.
na ltima palavra sobre arbitragem se refere a operaes de mltiplos ciclos. Em
sistemas rocessadores, comum o uso de uma palavra na memria para proteger
estruturas de :ompartilhadas. Se esta palavra O, um processador pode coloc-la em
1 e usar a estrutura
Requisita
barramento
Ocupado
17 Arbitragem de barramento descentralizada do Multibus.
98 ORGANIZAO ESTRUTURADA DE COMPUTADORES
de dados. Se ela j 1, o processador precisa esperar at que o processador que
est
a estrutura de dados termine e coloque a palavra de volta em O.
A seguinte seqncia de eventos mostra a situao quando as coisas saem erradas.
1. O processador A l a palavra x e v que ela zero (ciclo de barramento O).
2. O processador B l a palavra x e v que ela zero (ciclo de barramento 1).
3. O processador A escreve 1 na palavra x (ciclo de harramento 2).
4. O processador B escreve 1 na palavra x (ciclo de barramento 3).
Se esta seqncia acontecesse, dois processadores estariam pensando simultaneamente
q um tinha acesso exclusivo estrutura de dados compartilhada, resultando em caos.
Para esta situao, algumas CPUs possuem uma instruo que l uma palavra de
memria ela for O, a coloca em 1. O problema que tal instruo requer dois ciclos
de barra um para a leitura e outro para a escrita. H uma chance pequena, mas no
nula, de q segundo processador se esgueirasse entre a leitura e a escrita e
provocasse a confuso.
A soluo para o problema adicionar uma linha extra ao barramento, digamos, 1 que
pode ser ativada quando tal instruo comea. Uma vez que LOCK foi ativada, no
pei a nenhum processador tornar-se mestre do barramento, at que ela seja
desativada. Est permite que a CPU original realize mltiplos ciclos de barramento
sem interferncia. Em mentos que no possuem tal caracterstica, difcil
construir sistemas multiprocessador funcionam corretamente.
3.4.6 Tratamento de Interrupes
At agora, temos discutido apenas os ciclos comuns de harramento, com um mestre de
um escravo ou escrevendo nele. Uma outra utilizao importante para o barramen
tratamento de interrupes. Quando a CPU comanda um dispositivo de E/S para
realizar a coisa, ela usualmente espera uma interrupo quando o trabalho foi
feito. A sinalizao de iffl o requer o barramento.
Uma vez que mltiplos dispositivos podem querer causar uma interrupo simultaneai
o mesmo tipo de problemas de arbitragem que tivemos com ciclos comuns est presente
A soluo usual assinalar prioridades aos dispositivos e usar um rbitro
centralizado pa
prioridade aos dispositivos mais crticos no tempo. Existem pastilhas controladas
de interi
padres, e elas so amplamente utilizadas, O IBM PC, o PC/AT, o PS/2 etodos os
clones
PC compatveis) usam a pastilha Intel 8259A, ilustrada na Fig. 3.38.
At oito pastilhas controladoras de E/S podem ser conectadas s oito entradas IRx
(In Request) do 8259A. Quando qualquer um desses dispositivos quer causar uma
interrup ativa sua linha de entrada. Quando uma ou mais entradas esto ativadas,
o 8259A ativ (INTerrupt), que aciona diretamente o pino de interrupo da CPU.
Quando a CPU est hab para tratar a interrupo, ela envia um pulso de volta ao
8259A em INTA (INTerrupi Acknow/ Neste ponto espera-se que o 8259A identifique que
entrada causou a interrupo colocan nmero no barramento de dados. O hardware da
CPU usa ento este nmero para in uma tabela de apontadores, chamada vetor de
interrupes, para encontrar o endereo do pr mento que trata a interrupo.
O 8259A possui vrios registradores internos que a CPU pode ler ou escrever utili
ciclos de barramento comuns e os pinos RD (ReaD), Wi ( WRite), S(Chip Select) e AO.
Qi o software tratou a interrupo e est pronto para tratar a prxima, ele escreve
um cdigo es em um dos registradores, o que faz com que o 8259A desative INT, a no
ser que haja interrupo pendente. Esses registradores podem tambm ser escritos
para colocar o 8259 um dentre os diversos modos, para mascarar um conjunto de
interrupes, para habilitar caractersticas.
Quando existem mais de oito dispositivos de E/S, podem-se ligar os 8259As em ca
No caso extremo, todas as oito entradas podem ser conectadas s sadas de oito
8259As, perm
O NVEL DE LGICA DIGITAL 99
4 T _____ ____ _______
W Contr _______ Teclado
interrupes lR4
8259A 1R5 Disco
4 DO-D7 ______ 1R7 ________ Impressora
5V
8 Uso do controlador de interrupes 8259A.
tt 64 dispositivos em uma rede de dois estgios. O 8259A tem alguns pinos para
tratar scata, os quais omitimos por motivo de simplicidade.
esar de no termos exaurido o assunto sobre projeto de barramentos, o material
acima rnecer uma base suficiente para entender os princpios de como um barramento
funciona, mo os microprocessadores e harramentos se interagem. Mais informao
sobre barramentos r encontrada em Borrill, 1985, e Gustavson, 1984. Vamos agora do
geral para o especfico, ;ar alguns exemplos de processadores reais e seus
barramentos.
EMPLOS DE PASTILHAS MICROPROCESSADORAS
sta seo iremos examinar em algum detalhe as famflias de microprocessadores Intel
e )la ao nvel de hardware. Iremos tambm comparar os vrios membros de cada
famflia r como as pastilhas evoluiram com o decorrer do tempo. No fim da seo
faremos uma omparao entre duas pastilhas, 080386 e 068030. Aps isso,
analisaremos dois barramentos res utilizados com essas duas famflias, o barramento
IBM PC e o barramento VME.
As Pastilhas Microprocessadoras Intel 8088/80286/80386
sta seo examinaremos os tr membros mais amplamente utilizados da famflia de CPUs
) 8088 (usado no IBM PC), o 80286 (usado no IBM PC/AT e nos modelos mdios do o
80386 (usado nos computadores pessoais de topo de linha). Embora essas pastilhas i
caractersticas comuns, elas tambm diferem em vrios aspectos. Todas so
amplamente las e vale a pena discuti-las todas.
1 8088
8088 um microprocessador NMOS vendido em um encapsulamento de 40 pinos. Interna-
ele tem um fluxo de dados de 16 bits, mas ele l e escreve na memria 8 bits de
cada
to , a largura do barramento de dados de 8 bits). Ele pode enderear 1 megabyte
iria. Sempre que possvel, o 8088 tenta buscar instrues antecipadamente, e
assim, a prxima necessria, ela j estar disponvel.
8088 pode operar em dois modos: modo mnimo e modo mximo. O modo mnimo lo a
sistemas pequenos, com poucos dispositivos perifricos. Por exemplo, um 8088
utilizado :ontrolador de uma mquina de lavar poderia estar em modo mnimo. O
significado dos diferente nos dois modos, sendo mais simples no modo mnimo. Em
computadores pessoais, ualmente est sempre em modo mximo, portanto no mais
mencionaremos o modo mnimo vro.
pnagem real do 8088 no modo mximo mostrada na Fig. 3.39(a). Vinte dos 40 pinos
i o endereo de memria ou de E/S que est sendo lido ou escrito. Eles so
denominados
1
100 ORGANIZAO ESTRUTURADA DE COMPUTADORES
S2 Si 50 Tipo de ciclo de barramento
GNDE
A14E
A
A12E
AliE
AlOL
A9 E
A8 E
AD7E
AD6E
AD5E
AD4 E
AD3 E
AD2E
AD1 E
ADO E
NMI E
INTRI:
CLK E
GNDE
8088 no
modo mximo
2 39
3 38
4 37
5 36
6 35
7 34
8 33
9 32
10 31
11 30
12 29
13 28
14 27
15 26
16 25
17 24
18 23
19 22
20 21
(a)
: vcc
J AiS
] A16/S3
] A17/S4
] A18/S5
] A19/S6
J MN/MX
3 RD
3 RQJGTO
3 RQ/GT1
3 LOCK
3 S2
3 Si
3 SO
3 QSO
3 QS1
3 TEST
3 READY
3 RESET
O
O
O
Reconhecimento de interrupo
O
O
1
Leitura de porto de E S
O
1
O
Escrita em porto de E S
O
1
1
HaIt
1
O
O
Acessoacdigo
1
O
1
Leitura de memria
1
1
O
Escrita em memria
1
1
1
Liberao de barramento
(c)
_____ 4- INTR -
4- N Ml lnterrupoes
2 - - - Arbitragem de
*# RQ/GTOGT1 barramento
8088
no 4--.-- TEST Co-processador
______ modo
mximo / S3-S6
QSO-QS 1 Status
________ 2
4 MN/ Miscelnea
_________ 4- RESET
tt
+5V
Fig. 3.39 (a) Pinagem fsica do 8088. (b) Pinagem lgica do 8088. (c) Tipos de
ciclos de harramento
no 8088. As setas so usadas para distinguir os sinais de entrada, sada e
entrada/sada.
A0-A19. Uma vez que o 8088 transfere 8 bits de cada vez, pareceria lgico que oito
pinos adic:
deveriam ser usados para o barramento de dados. Entretanto, para reduzir o nmero
de e manter o 8088 em um encapsulamento padro de 40 pinos, as linhas de dado D0-D
multiplexadas nos mesmos pinos que A0-A7. No incio de cada ciclo de barramento,
estes 1 denominados ADO-AD7, contm o endereo; mais tarde no ciclo, eles contm
dados. P precisas governam a temporizao, e nunca h ambigidade.
Os pinos 35 a 38 so tambm multiplexados, contendo endereo no incio de cada de
barramento e informaes de status no fim. Esta situao indicada pela notao A
(veja o pino 38). Assim, uma barra usada para separar dois sinais diferentes que
compart um mesmo pino.
De outro lado, o pino 33 chamado MN/MX (MNimo/MXimo), mas ele no repr dois
sinais, MN e MX, que esto presentes em instantes diferentes. Este pino ativado
colocar a pastilha no modo mnimo (MN). Em outras palavras, ele ativado para colc
pastilha no modo no-mximo (MX). Estes dois nomes de cada lado da barra so formas
difei
20
Endereos A0-A19 4
8
Dados D0-D7
r
Controle de .) r.i
barramenio 1 t
LREADY
4
4
-
(b)
L
O NVEL DE LGICA DIGITAL 101
r a mesma coisa. Apesar desta notao ser um tanto confusa, ela a nomenclatura
oficial l; assim, com alguma hesitao, iremos nos fixar a ela.
ntretanto, na tentativa de diminuir a confuso, iremos, a partir daqui, desenhar
todas as as usando a pinagem lgica, em vez da pinagem fsica. Na Fig. 3.39(b)
vemos de novo desta vez mostrando os sinais lgicos, sem considerar a localizao
dos sinais nos pinos.
por exemplo, mostramos AO-A 19 separados de DO-D7 porque logicamente eles so
distintos. de eles compartilharem alguns pinos no necessrio para compreender
como a pastilha na. Uma linha diagonal curta com um nmero prximo a ela diz
quantos sinais esto tes (por exemplo, 20 para AO-A19). Para completar, note que a
posio que escolhemos ira para cada sinal no baseada em qual pino usado; em
vez disso, os sinais inter-rela los so agrupados para fcil explicao.
is pinos no 8088 so usados para controle do barramento. (Status) definem o tipo lo
de barramento que o 8088 quer. A tabela da Fig. 3.39(c) mostra as possibilidades.
eaD) indica que o ciclo de leitura. Ele no necessariamente utilizado no modo
mximo a mesma informao pode ser obtida dos sinais O-S mas algumas vezes ele
conveniente. pode ser ativado pelo 8088 para dizer aos outros potenciais mestres
para deixarem amento livre. Este sinal necessrio para obter acesso exclusivo
memria durante certas es crticas da CPU que requerem mltiplos ciclos de
barramento. Ele indispensvel
temas multiprocessadores. _________
o contrrio dos outros cinco sinais de controle de barramento, READY de entrada.
lo o 8088 quer um byte da memria, suposto que a memria o entregue dentro de
ciclos de barramento. Se a memria pode cumprir este requisito, ela ativa READY ao
r o byte no barramento, e tudo est certo. Se, entretanto, a memria muito lenta,
ela
i desativar READY antes do quarto ciclo, e mant-lo desativado at que ela tenha
colocado requerido no barramento, introduzindo assim estados de espera. Deste modo,
o 8088
er usado tanto com memrias rpidas quanto lentas.
s sinais INTR (INTeRrupt) e NMI (NonMaskable Interrupt) so usados para interromper
A diferena entre esses dois que o software pode temporariamente mascarar
(desabilitar) )rimeiro tipo, mas no pode mascarar a do segundo tipo. Uma
interrupo mascarada perdida, mas simplesmente mantida na espera at que o
software reabilite as interrupes. ia INTR normalmente utilizada pelos
dispositivos de E/S, enquanto NMI utilizada
idicar erro de paridade na memria ou outro problema maior que no pode esperar.
s duas linhas P (ReQuest/GranT) so utilizadas na arbitragem do barramento, poi lo,
entre o 8088 e a pastilha co-processadora de ponto-flutuante, o 8087. Usando essas
um co-processador pode requisitar que o 8088 flutue todos os barramentos (isto ,
se iecte eletricamente dos barramentos), e assim o_co-processador pode tornar-se
mestre do ento para acessar a memria. A menos que LOCK esteja ativado, o 8088 ir
normalmente :ir o uso do dobramento a qualquer requisio ao fim do ciclo corrente.
Existem duas que permitem o suporte de dois co-processadores.
sinal TEST utilizado para permitir que o 8088 teste o status do co-processador.
Este necessrio porque, quando uma instruo de ponto-flutuante encontrada, o
8088 dispara . O 8088 pode ento prosseguir com as instrues regulares (isto , as
que no so de flutuante) em paralelo com o co-processador. Quando o 8088 precisa
do resultado da operao ito-flutuante, ele pode testar se o co-processador j
terminou, e, se no, esperar por ele.
s sinais S3-S6 e QSx contm informaes sobre o estado interno da CPU. No muito
porqu de sua existncia. Na prtica, normalmente, eles no so utilizados.
analisamos MN/MX, e assim o sinal restante RESET, que utilizado para
reinicializar
J, por exemplo, quando o usurio aperta um boto de reset na console. Aps o reset,
colocada em um estado inicial bem definido.
4 80286
sucessor do 8088 o 80286. Ele tem trs vantagens principais sobre o 8088.
Primeiro, ssui tanto o modo kernel quanto o modo usurio protegido, tornando-o mais
adequado
uo simultnea de mltiplos programas. Segundo, ele tem um barramento de dados de
(como o 8086), o que efetivamente dobra a banda de passagem da memria. Terceiro,
102 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Unidade de endereo Unidade de barramento
'\ \___/ barramento - AO-A23
______________/ Interface com o
\ Somador de endereos
- - PEACK
Intertace com o
Tabelas co-processador - PEREQ
Unidade de Controle de - READY, HOLD
barramento - .. , CODIINT, t HI
_____________________ lnterface com o
barramento - D0-D15
_______________________ de dados
Registradores
\ ALU
Controle 4
ttt
NMI ERROR
INTR U
Unidade de prefetch
Fila de
6 bytes
de prefetch
Unidade de 4, instruo
Fila de Decodificador - RESET
instrues de
decodificadas instrues - CLK
Fig. 3.40 Um diagrama simplificado da estrutura interna do 80286.
ele internamente mais rpido, e tambm pode trabalhar com relgios mais rpidos.
Ju estes fatores tornam um sistema tpico baseado no 80286 de 5 a 10 vezes mais
rpido qw sistema tpico baseado no 8088.
O 80286 consegue uma boa parte de seu desempenho da presena de quatro unidades
funcii independentes internas, como mostrado de forma simplificada na Fig. 3.40. A
unidade de b mento realiza todas as operaes com o barramento para a CPU, buscando
e armazenando ir es e dados quando necessrio. Quando ela no tem outro trabalho
a realizar, ela tenta bi antecipadamente at seis bytes de instruo, alimentando a
unidade de instruo.
A unidade de instruo obtm os bytes buscados pela unidade de harramento e deco as
instrues para subseqente execuo. Ela pode armazenar at trs instrues
completari decodificadas ao mesmo tempo. Tendo instrues decodificadas sempre
disponveis significa a CPU raramente tem que esperar pela prxima instruo,
acelerando assim a execuo.
A unidade de execuo executa as instrues entregues a ela pela unidade de instri
Algumas instrues contm endereo de memria. Estes so entregues unidade de
endt
para processamento adicional.
A unidade de endereo executa todos os clculos de endereo e trata a memria vi:
(Memria virtual uma tcnica que permite a um processo utilizar mais memria que
o compu possui. Ela implementada trocando pedaos do programa da memria com o
disco auto camente. Iremos analis-la em detalhes no captulo 6.) A unidade de
endereo aliment sada unidade de barramento para leitura e escrita.
O 80286 requer mais de 40 sinais, logo a Intel foi forada a um encapsulamento dife
para acomod-los. Em vez de ir para 48 pinos e continuar multiplexando alguns
sinais. decidiram ir para um encapsulamento quadrado de 68 pinos com 17 pinos de
cada lado. encapsulamento permite 24 sinais de endereo, 16 sinais de dados e 16
sinais de controle, do relgio, alimentao, terra e outros pinos de reserva no
conectados. A pinagem l
O NVEL DE LGICA DIGITAL 103
ada na Fig. 3.41. A distino do modo mximo/modo mnimo do 8088 no existe aqui;
nas um modo e uma pinagem.
)s 24 sinais de endereo e 16 de dados so diretos e no necessitam de comentrios
adicionais. tanto, h um novo sinal relacionado com endereamento que no est
presente no 8088, E (Bus High Enable - habilita barramento alto). A necessidade do
BHE vem da habilidade 286 de ler (e especialmente escrever) palavras de 16 bits de
uma vez. Ler um nico byte to difcil. Tudo o que a CPU precisa ler uma palavra
de 16 bits e extrair o byte desejado. ver mais difcil, uma vez que a escrita de
um nico byte no deve modificar a outra te da palavra. O sinal W pode ser
desativado para que o byte superior seja transferido, iendo assim por cima da
memria. Como A0-A23 podem enderear qualquer byte no espao dereamento, par ou
mpar, o 80286 pode ler ou escrever exatamente um byte em qualquer na memria,
desativando TT.
)s pinos de controle de harramento do 80286 so ligeiramente diferentes dos do
8088, mas s geral a mesma - isto , especificar se um ciclo de barramento para
leitura da memria, na memria, leitura de um dispositivo de E/S, escrita em um
dispositivo deE/S, ou algo nte. As convenes de nome da Intel para SO, i, M/T
(Memory/JO) e COD/INTA (CODe/
-rupt Acknowledge) so de alguma forma arbitrrias e no muito informativas. Na
realidade, iplesmente uma tabela com 16 entradas, correspondendo s 16 combinaes
de bits, dizendo cada uma faz. Sete delas so teis, quatro no fazem nada e cinco
no so utilizadas. ompatibilidade_com antigas_pastilhas de E/S no fosse
importante, um projeto mais limpo ido possvel. LOCK e READY fazem o mesmo que no
8088 (travar o barramento e inserir )S de espera).
imilarmente INTR e NMI fazem tambm o mesmo que os correspondentes no 8088. Em as
pastilhas, eles permitem que dispositivos de E/S causem interrupo na CPU, tanto
rveis quanto no-mascarveis.
)s sinais HOLD e HLDA (HoLD Acknowledge) so novos no 80286 e fornecem uma forma de
arbitragem de harramento. Quando um potencial mestre quer o barramento, ele ativa
D. Aps o 80286 perceber essa requisio e flutuar seus pinos, ele ativa HLDA,
quando o mestre do barramento assume. O 80286 continua em estado de flutuao e
mantendo ativo enquanto HOLD estiver ativado. Quando o novo mestre termina, ele
desativa
e o 80286 prossegue normalmente.
sinalizao do co-processador de 80286 mais elaborada que a do 8088 para permitir
co-processadores utilizem a unidade de gerncia de memria do 80286. Utilizando
PEREQ ssor Extension REQuesi requisio de extenso do processador), um co-
processador pedir ao 80286 para buscar o contedo de um endereo (virtual). Quando
a palavra est rramento, o 80286 ativa PEACK (Processor Extension ACKnowledge
reconhecimento tenso do processador) para permitir que o co-processador capture a
palavra. Todo este tismo feito pelo hardware, sem interromper o software.
AO-A23 4 [ INTR -
Endereos I NMI lnterrupoes
Dados D0-D15 - HOLD Arbitragem de
HLDA barramento
2 80286
SO -Si 4 / PEREQ
: _____
RESET Miscelnea
b +5V
41 Pinagem lgica do 80286.
104 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Os sinais BUSY e ERROR so utilizados para permitir ao 80286 sentir o estado do
cessador e esperar que ele complete o que est fazendo. A diferena entre os dois
que usado para a sinalizao normal, enquanto ERROR usado para gerar uma
interrupo c algo errado ocorreu, tal como erro de ponto-flutuante.
O sinal RESET funciona da mesma maneira no 80286 que no 8088, permitindo q circuito
externo reinicialize o computador. Adicionalmente, existem tambm os pinos CLK, a
tao e terra, embora no 80286 eles estejam presentes em vrios pinos. Finalmente,
para com notamos que o 80286 possui tambm um pino que deve ser ligado terra
atravs de um cai de 0,047 microfarads por razes de engenharia analgica.
O Intel 80386
A primeira CPU de 32 bits da Intel em uma pastilha o 80286. Em termos gro de
velocidade de computao, ele comparvel a um pequeno mainframe. Alm da
velocidade, ele tem vrias outras vantagens sobre o 80286. De um lado, todos os
registr e instrues podem manipular 8, 16 ou 32 bits igualmente. De outro lado,
ele permite pro com uma memria virtual de 246 bytes (versus 232 no 80286) e pode
gerenclar at 4 gig de memria fsica (versus 16 megabytes no 80286). Finalmente,
ele pode emular tanto quanto o 80286, tornando possvel executar uma grande
quantidade de software existente (inc sistemas operacionais) sem qualquer
modificao. Para maiores informaes sobre ele, veja E e Agarwal, 1985.
Com um barramento de endereo de controle, o encapsulamento de 68 pinos utiliza
80286 era muito pequeno; assim, a Intel foi para um padro maior. Este
encapsulamento C( em uma grade quadrada de 14 x 14 = 196 pinos, com a subgrade do
meio de 8 x 8 ausente, dando um total de 132 pinos, como mostrado na Fig. 3.42.
Muitos deles so dup de outros pinos, ou no so usados.
Internamente, o 80386, tal como o 80286, contm um certo nmero de unidades func
que operam em paralelo para maior desempenho. Em vez de quatro delas, existem oito
porque as unidades de endereo e execuo foram divididas em vrias subundades que
operar independentemente umas das outras. Embora este projeto seja mais complexo,
o aui no desempenho o torna compensador.
A pinagem do 80386 similar do 80286 e mostrada na Fig. 3.43. Internamente, o
trabalha com palavras de 32 bits, e todas as referncias memria devem ser
alinhad
limites de 4 bytes. Assim, a CPU pode buscar palavras nos endereos 0, 4, 8 etc.,
ma
ABCDEFGHJKLMNP
1 O O O O O O O O O O O O
2 00000000000000
3 00000000000000 Pino
4 000 000
5 000 000
6 000 000
7 000 000
Pastilha
8 000 000
9 000 000
10 000 000
11 000 000
12 00000000000000
13 00000000000000
14 O O O O O O O O O O O O O O Fig. 3.42 Encapsulamentode 132
__________________________________ usado no 80386.
1
O NVEL DE LGICA DIGITAL 105
Endere os A2A31 4 INTR Interrupes
4 4 NMI
Dados D0-D31 4 4 HOLD Arbitragem de
HLDA barramento
W/R 4 80386 4 PEREQ
D/ 4 4 TJ . Co-processador
M/i0 4 4 ERRORJ
Controle de i:
barramento READY
4 RESET Miscelnea
8S16
NA
4i +5V
.43 Pinagem lgica do 80386.
-as nos endereos 1, 2, 3. Como resultado, todos os endereos de memria so
mltiplos atro, e assim os dois bits de baixa ordem do endereo so sempre O, e AO
e Ai no
pesar disso, existem instrues para armazenar quantidades de 8 e 16 bits na
memria; o problema resolvido pelo BHE no 80286 tambm existe aqui, mas pior. Ele
foi resolvido ta forma direta, simplesmente provendo quatro sinais, BEO- Enable -
habilitao rramento), que apenas indicam, para cada byte na palavra, quais devem
ser utilizados. om o 80386, a Intel mantm a tradio de redefinir todos os sinais
de controle do barramento i nova pastilha. Desta vez eles so chamados WIR
( Write/Read), D/C (Data/Code) e MIT ory/!O). Entretanto, algum finalmente achou
uma tabela com as potncias de 2 e descobriu _ 2 e assim apenas trs sinais so
usados para os sete tipos de ciclos de barramento
;rios (leitura de cdigo, leitura de dados, escrita de dados, leitura de EIS,
escrita de EIS,
ecimento e halt)
e READY no foram modificados, mas trs novos sinais de controle de barramento
presentes no 80386. T5 (ADdress Status status de endereo) indica que um endereo
est no barramento. Quando a memria v este sinal, ela sabe que o endereo e as
linhas flrole do barramento so vlidos, e ento ela pode comear a trabalhar
imediatamente. S16 (Bus Size 16) uma entrada que pode ser ativada para dizer ao
80386 que o sistema i pastilhas de EIS (antigas) de 16 bits. Quando o 80386 v este
sinal, ele realiza as transfe s de 32 bits como uma seqncia de duas
transferncias consecutivas de 16 bits. nquanto BS16 usado para reduzir a
velocidade do sistema, N (Next Address prximo eo) usado para aceler-lo.
Ativando N', a memria pode informar ao 80386 que ela reparada para aceitar o
prximo endereo de memria, mesmo que no tenha ainda ativado )Y para o ciclo de
barramento corrente. Esta caracterstica permite um maior pipeline, 'ez que a
memria comea a preparar o prximo ciclo antes que a CPU tenha terminado )cessar o
corrente.
)s sinais INTR, NMI, HOLD, HLDA, PEREQ, BUSY, ERROR e RESET esto tambm nes como
no 80286 e tm a mesma funo. No existe PEACK porque o 80386 pode r seu co-
processador diretamente.
As Pastilhas Microprocessadoras Motorola 68000/68020/68030
orno segundo exemplo de uma famflia de pastilhas microprocessadoras, analisaremos
agora tilhas Motorola 68000, 68020 e 68030. Diferente das trs pastilhas Intel que
acabamos udar, que so CPUs bem diferentes, estas trs pastilhas Motorola so
bastante similares.

106 ORGANIZAO ESTRUTURADA DE COMPUTADORES


A primeira, o 68000, tem uma arquitetura de 32 bits com um barramento de dados de
16
A segunda, o 68020 (MacGregor et ai., 1984; MacGregor e Rubinstein, 1985), difere
do
porque ela tem um barramento de dados de 32 bits e algumas instrues adicionais
dentre o
caractersticas menores. O 68030 essencialmente um 68020 mais um cache de dados e
unidade de gerncia de memria encapsulados na mesma pastilha. Estudaremos caches
no ca
4 e gerncia de memria no captulo 6.
Em vez de darmos as pinagens das trs pastilhas, nos concentraremos nos dois men
mais avanados da famflia, o 68020 e o 68030, sendo o ltimo um superconjunto do 6
Conceitualmente, muito do que vale para eles tambm vale para o antigo 68000. As
difer so poucas (alm dos barramentos de endereo e dados) e se referem a detalhes
menores como o suporte para as pastilhas de EIS de 8 bits (agora obsoletas).
O Motorola 68020 e 68030
Nos pargrafos abaixo descreveremos a pinagem 68020 e do 68030. Usaremos o termo
68' mas as descries tambm valem para o 68020, com exceo do controle do cache e
do su de emulao, que no esto presentes no 68020. O 68030 possui 32 pinos de
endereo pinos de dados, como mostrado na Fig. 3.44. Alm disso, o tamanho do
operando. 1, 4 bytes, codificado em SIZO e SIZ1.
As pastilhas Motorola tm um mecanismo mais elaborado do que as Intel para o cor do
barramento. Alm disso, todos os sinais de controle so consistentemente ativos em
l No incio de cada ciclo de barramento, o 68030 ativa (Externa! Cycie Star -
inc ciclo externo) para indicar a temporizao do ciclo para a memria e pastilhas
de EIS. L escrever uma palavra gasta mltiplos ciclos de harramento. OCS (Operand
Cyc!e Start - de ciclo de operando) ativado apenas no incio deles. O tipo de
ciclo de harramento ind por F-F, de forma anloga a -S2 no 8088. Adicionalmente,
RIW indica se o ciclo leitura ou de escrita. Como o ffl3 no 8088, esta informao
apenas por convenincia, p ela pode ser obtida de FCO-FC2.
Quando todos os sinais acima so gerados e esto estveis, o 68030 ativa (Address
St
para anunciar o fato ao resto do sistema. Durante um ciclo de leitura, o 68030
ativa TYS
Endereos A0-A31 2 . Arbitragem de
32 BG barramento
Dados D0D31 4J 4 BGACK J
Tamanho SIZO-SIZi 4 3
4 RESET
_Q 4 i:i
FCO-FC2 4 4 Miscelnea
Controle de R/W 4 68020 4 (somente 68030)
barramento 4 and 4 STERM
OS 4 68030
4 iTN
T 4 CIOUT ' Controle de cache
DSACKO . CBREQ (somente 68030)
DSACK1 2 4 CBACK J
r )
Interrupes IPEND 4 ______ -
L _____ 1 Suportede
STATUS emulao
4 MMUDISJ (somente 68030)
tt
+5V
Fig. 3.44 Pinagem lgica do 68020 e do 68030.
O NVEL DE LGICA DIGITAL 107
no ponto em que ele est pronto para aceitar o dado. Em um ciclo de escrita, o
68030 a quando o dado no barramento vlido e estvel. DBEN (Data Buffer ENabie)
pode ado pela memria ou pelas pastilhas de EIS como um sinal que diz quando
habilitar seus s de dado. A ltima sada de controle do barramento RMC (Read
Modify-write Cycie), usado da mesma forma que as pastilhas Intel usa o LOCK, ou
seja, manter todos os mestres fora do barramento durante uma operao de mltiplos
ciclos. Tal como LOCK, usado para a sincronizao em sistemas_multiprocessadores.
ois sinais de controle do harramento, DSACKO e DSACK1 (Data and Size
ACKnowiedgement ;onhecimento de dado e tamanho), so entradas para o 68030, vindos
do barramento. Eles ilizados para dizer quando uma leitura ou escrita foi
completada, grosseiramente de forma ;a ao READY nas pastilhas Intel.
)s sinais IPLO-IPL2 (!nterrupt Priority Levei nvel de prioridade de interrupo)
so dos pelas pastilhas de EIS para gerar interrupes de CPU. Trs bits esto
disponveis, ri qualquer uma das sete diferentes prioridades podem ser causadas (o
nvel O no utilizado). veis de maior prioridade so usados por dispositivos
crticos no tempo e tm precedncia os nveis de baixa prioridade quando duas ou
mais interrupes_ocorrem simultaneamente. Jo 068030 aceita um sinal de
interrupo, ele responde ativando IPEND (Interrupt PENDing errupo pendente).
Normalmente, um dispositivo que interrompe especifica o vetor de ipo, que diz
como encontrar o procedimento de servio de interrupo a ser executado. tanto, se
o dispositivo no for capaz de fazer isso, ele pode ativar AVEC (Automatic VECtor
or automtico) para deixar que a CPU use certos valores defauit.
, B e BGACK so usados para controlar qual o prximo a obter o barramento, algo r
ao HOLD e HLDA no 80286 e 80386, mas com uma diferena importante. A linha us
Request) usada pelos dispositivos de EIS para requisitar o barramento. A linha BG
Grant - permisso de barramento) ativada pelo 68030 para anunciar que o
barramento ente est flutuando. At aqui,_o_protocolo o mesmo que o da Intel. Uma
diferena, anto, a presena da linha BGACK, que ativada pelo dispositivo
requisitante aps ter permisso do barramento. Em princpio um dispositivo poderia
requisitar, ter a permisso ir o barramento e ento ativar BGACK. Neste ponto, W e
BU esto disponveis para dispositivo requisitar e obter o barramento, enquanto o
anterior ainda o est usando para erncia de dados. O segundo dispositivo no pode,
claro, realmente comear a utilizar amento at que o primeiro indique que
terminou, desativando BGACK. Ciclos de barramento onomizados permitindo que um
segundo dispositivo comece a negociao pelo barramento que o primeiro_tenha
terminado de us-lo.
e HALT permitem que dispositivos externos reinicializem e parem a CPU, respectiva
F1tR utilizado para reportar que alguma coisa falhou - por exemplo, que o 68030
acessar uma memria no-existente. CUIS desabilita temporariamente_o cache interno.
M (Synchronous TERMination trmino sncrono) como DSACKO e DSACK1, exceto le
usado em ciclos de barramento sncronos, em vez dos assncronos usuais. Este sinal
iste no 68020.
uatro sinais de controle do cache tambm no existem no 68020. Nem os trs sinais
usados ermitir que o 68030 emule o 68020. Seus significados exatos so muito
complexos e requerem ompreenso do funcionamento interno da pastilha, o que no
apresentamos ainda, e assim emos descrev-los aqui.
Comparao Entre o 80386 e o 68030
.s pastilhas 80386 e a 68030 so ambas processadores de 32 bits de alto desempenho
com madamente o mesmo poder computacional. E, entretanto, interessante compar-los
para mo projetistas diferentes tomam decises diferentes no nvel de hardware. Em
captulos lentes, veremos como eles diferem tambm em alto nvel.
mbas as pastilhas utilizam endereos de 32 bits, mas os do 80386 tm sempre os 2
bits
xa ordem iguais a 0, alinhando transferncias em limites de palavras. O 68030 no
tem
mitao e pode enderear a memria comeando em qualquer byte. Ambas as pastilhas
n barramento de dados de 32 bits. No h nenhuma diferena aqui.
s sinais de controle do harramento so de alguma forma diferentes. O 68030 tem
sinais,
108 ORGANIZAO ESTRUTURADA DE COMPUTADORES
que indicam o incio de um ciclo de barramento e um ciclo de operando,
respectiva] facilitando aos dispositivos externos o sincronismo com a CPU. Com o
80386, os dispo de EIS tm que sincronizar monitorando o barramento. Ambas as
pastilhas possuem sinais e que indicam que o barramento de endereo est vlido,
mas somente o 68030 um sinal similar ( para o barramento de dados. Ambas usam um
cdigo de 3 bits para espc o tipo do ciclo de barramento, e ambas tm uma
forma_explcita_de deixar que na m e dispositivos de E/S sinalizem o trmino de um
ciclo (READY e DSACKx). Ambas pc tambm uma maneira de travar o barramento para
operaes de mltiplos ciclos (LOCK e 1
o tratamento de interrupes ligeiramente diferente. 080386 possui apenas duas
priori mascarvel e no-mascarvel, enquanto o 68030 tem sete. Eles tambm diferem
na arbil de barramento, com o 68030 permitindo que um segundo dispositivo requisite
o barra antes que o primeiro termine, algo que o 80386 no permite.
Embora ambos os microprocessadores possuam co-processadores de ponto-flutuante, a
de interface-los ligeiramente diferente. O 80386 considera seu co-processador
como algo especial, e tem sinais especficos para comunicar-se com ele. Ao
contrrio, o 68030 cor seu co-processador como simplesmente outro dispositivo de
E/S, e se comunica com ele de ciclos de barramento normais. Esta abordagem torna
mais fcil ligar co-processadores adi ao 68030. O processador 68030 foi, de fato,
projetado com a idia de que os usunos pu construir suas prprias placas co-
processadoras.
Ambas as pastilhas possuem uma unidade de gerncia de memria sofisticada intern
apenas o 68030 possui um cache de dados substancial. Ambas usam pipeline para melh
desempenho. Em resumo, as duas pastilhas so mais parecidas do que diferentes. Am
times de projeto tiveram acesso mesma tecnologia, ambos tiveram os mesmos
objetivos e estavam tentando conquistar os mesmos consumidores, de modo que no
deve ser surpre os produtos resultantes sejam muito similares.
3.6 EXEMPLOS DE BARRAMENTOS
Os barramentos so a cola que mantm os sistemas de computadores juntos. Nesta
veremos mais de perto dois barramentos populares: o barramento do IBM PC (incluindo
o
mento do PC/AT) e o barramento VME.
O barramento do IBM PC um bom exemplo de barramento utilizado em sistemas peq Ele
possui 20 linhas de endereo e 8 linhas de dados e amplamente utilizado em si
baseados em 8088. A maioria dos clones de PC o utilizam, e ele forma a base do IBM
1 e de outros barramentos.
O VME um bom exemplo de um barramento utilizado em sistemas industriais, gi e com
alta carga. Ele suporta 32 linhas de endereo e 32 linhas de dados. Ele utiliza
vrios superminicomputadores e em muitas aplicaes de automao industrial.
3.6.1 O Barramento do IBM PC
O barramento do IBM PC tornou-se um padro de fato para sistemas baseados en porque
praticamente todos os vendedores de clones de PC o copiaram para permitir que
placas existentes de E/S, de terceiros, pudessem ser utilizadas em seus sistemas. O
barra possui 62 linhas, listadas na Fig. 3.45. Nesta figura, a coluna rotulada
Entrada se refe sinais que so entrada do barramento para a placa me, e a coluna
rotulada Sada se aos sinais produzidos pela placa me e saem para o barramento.
Fisicamente, o barramento gravado na placa me, com cerca de meia dzia de con
espaados 3/4 de polegada um do outro, nos quais podem ser inseridos cartes. Cada
possui uma borda que encaixa no conector. Esta borda tem 32 faixas cobertas com oi
cada lado, que fazem o contato eltrico com o conector. Para registro, a IBM chama
o barra de I/O channel, mas ningum o faz. Apenas mencionamos isso porque dois dos
sinais do barra usam este nome.
O IBM PC original (assim como muitos clones) acionado por um oscilador a cri]
14,31818 MHz. Esta freqncia no arbitrria. Ela requerida para produzir o
sinal de cromi
utilizado nos televisores em cores da Amrica do Norte e Japo. (A IBM
originariamente 1
O NVEL DE LGICA DIGITAL 109
Linhas Entrada Sada Descrio
1
X
Relgio de 70 ns (1431818 MHZ)
1
X
Relgio de 210 ns (477 MHZ)

1
X
Usado para reinicializar a CPU e os dispositivos de
EIS
20
X
20 linhas de endereo
8
X
X
8 linhas de dado
1
X
Habilita Iatch de endereo
1
X
Leitura de memria
7
1
X
Escrita em memria
1
X
Leitura de porto de E/S
1
X
Escrita em porto de E/S
1
X
Habilita endereo (ativado para que a CPU libere o barramento)
F
1
X
Verifica lO Channel (erro de paridade)
RDY
1
X
lO Channel pronto (insere estados de espera)
R07
6
X
Linhas de requisio de interrupo
DRQ3
3
X
Linhas de requisio de DMA
)-DACK3
4
X
Linhas de reconhecimento de DMA
1
X
Trmino/contagem (indica fim de DMA)
tao
5
5 volts, 12 volts
3
Terra
'ado
1
(No utilizado; seleo de carto no XT)
5 Sinais no barramento do IBM-PC.
iitos consumidores usariam seus aparelhos de TV existentes como dispositivo de
tela, 'itar o gasto na compra de um monitor apropriado. Ningum o fez, mas, uma vez
feita :olha, ficaram presas a ela.) O sinal de 14,31818 MHz est presente no
barramento na SC (OSCiliator oscilador).
ta freqncia muito alta para o 8088 padro, cujo mximo 5 MHz, e ento ela i
por 3 para produzir um sinal de 4,77 MHz, que, na verdade, serve como o relgio que
determina o ciclo do barramento. A diviso da freqncia cristal por 3
invariavelmente la pastilha Intel geradora de relgio 8284A. O sinal de 4,77 MHz
tambm est presente
-amento, onde ele chamado CLK. Ele est baixo 2/3 do tempo e alto 1/3 do
tempo, :rrio de OSC, que simtrico. Alguns clones do PC trabalham a 8 MHz,
usando uma mais rpida da pastilha 8088, e assim possuem um sinal CLK
proporcionalmente mais
284A tambm gera o sinal RESET do barramento. Para reinicializar a CPU, uma
circuitaria
envia em sinal ao 8284A, que ativa RESET para forar a reinicializao da CPU e s
dispositivos de EIS.
barramento tem tambm 20 linhas de endereo e 8 linhas de dados, como poderia ser
lo de um barramento projetado para ser usado com o 8088. Entretanto, para que
muitas ras linhas do barramento faam sentido, realmente necessrio entender no
apenas mas tambm algumas das suas pastilhas de suporte, e como elas so
utilizadas. Na Fig. )resentamos uma verso simplificada do ncleo da placa me de
um clone tpico de PC. isiste em sete pastilhas principais, alm de outras
pastilhas secundrias no mostradas.
110 ORGANIZAO ESTRUTURADA DE COMPUTADORES
O subsistema de memria no mostrado, uma vez que ele se conecta logicamente
atravs do barramento, mesmo que ele esteja fisicamente na placa me.
A primeira coisa a notar na Fig. 3.46 que a CPU no aciona as linhas de end
de dados diretamente. As linhas de endereo so amostradas por um conjunto de trs
octais 74LS373, cada um similar Fig. 3.27(b). Somente 20 dos 24 bits so
utilizados.
A necessidade dos latches para as linhas de endereo vem da Fig. 3.39(a), onde vini
alguns sinais de endereo e dados so multiplexados nos mesmos pinos. No incio de
cac de barramento da CPU, o 8088 solta os sinais de endereo. Os lcitches capturam
este e os mantm nas linhas de endereo pelo resto do ciclo, apesar de eles
desaparecerem da ADO-AD7 do 8088 pouco depois. Assim, os latches escondem a
multiplexao dos pinos e foi linhas de endereo puras e demultiplexadas para o
resto do sistema.
As linhas de dados so apenas amostradas ou providas por cartes de memria e
em instantes especficos (por exemplo, na borda de subida de algum perodo de
relgio),
Barramento do IBM-P(
Fig. 3.46 Um esquema simplificado da CPU e das pastilhas de suporte de um clone
tpico de PC.
1
O NVEL DE LGICA DIGITAL 111
precisam ser armazenadas. Se o sinal correto est presente no momento necessrio,
ficiente. Mesmo assim, as linhas de dados do barramento so acionadas por um
transceptor smento, o 74LS245. O pino DIR (DiRection direo) determina se o dado
est indo :pu ou vindo dela.
retanto, a razo real para "bufferizar" tanto as linhas de endereo quanto as de
dados CPU uma pastilha MOS, e como tal no solta corrente suficiente para acionar
um nto completo cheio de placas. As pastilhas de buffer TTL soltam corrente
suficiente lonar muitas placas. Alm disso, quando dispositivos que no sejam a CPU
desejam e mestres (por exemplo, para DMA), a CPU precisa flutuar o barramento. A
maneira iples de tirar a CPU do barramento ter um sinal externo de requisio do
barramento, o AEN (Address ENable habilitao de endereo), que desabilita a sada
dos latches eptores, flutuando assim o barramento.
Itando ao barramento, o prximo sinal de nossa lista o ALE (Address Latch Enable
litao de amostragem de endereo). Ele ativado quando as linhas de endereo
esto :ionadas pela CPU, para permitir que os 74LS373s saibam quando amostr-las.
Ele tambm Jo no barramento, para que as pastilhas de memria e de EIS saibam que
as linhas reo se tornaram vlidas. Antes que o ALE seja ativado em cada ciclo,
eles no so e no devem ser utilizados.
quatro prximas linhas do harramento so MEMR, MEMW, IOR e 10W, para leitura de
memria e de dispositivos de EIS, respectivamente. Com efeito, o barramento prov
aos de endereamento_distintos, um para a memria e outro para E/S. Assim, uma cio
endereo 0 com MEMR ativado far com que a posio de memria 0 responda, ia
leitura do endereo 0 com T ativado far com que a pastilha de E/S qual foi
dooendereo0 do espao de endereamento de E/S responda. Memrias no respondem IOR
ou 10W esto ativados.
tretanto, a determinao de quando cada um destes quatro sinais deve ser ativado
no imente trivial. Como vimos na Fig. 3.39(c), o 8088 solta o tipo do ciclo do
barramento ia codificada, usando os sinais -S2 Para decodificar esta informao em
quatro sinais ais de barramento, a pastilha controladora de barramento 8288 da
Intel utilizada. Esta recebe 3O-S como entrada e produz MEMR, MEMW, iO e TW como
sada, junto E. Ela tambm pega AEN do barramento (produzido por dispositivos que
querem se Ilestres) e gera o sinal que faz com que os acionadores de endereo e
dados flutuem smento.
mal i CH CHK (I/O CHanne/ CHecK) ativado quando um erro de paridade detectado
smento. Este o sinal que ger uma interrupo no-mascarvel.
mal 10 CH RDY (I/O CHannel ReaDY) usado por memrias lentas para inserir estados
ra nos ciclos de leitura e escrita. Ele ligado ao pino READY do 8088.
,rximo conjunto de seis sinais, IRQ2-IRQ7, so entradas do barramento para o
controlador
rupo 8259A, como vimos na Fig. 3.38. Quando um ou mais dispositivos requisitam
errupo, o controlador mantm informaes a seu respeito, interrompe a CPU e
coloca ro do vetor de interrupo nas linhas de dados quando a CPU pergunta por
ele. IRQO ilmente usado pela pastilha temporizadora, e IRQ1 geralmente usado pela
interrupo do. Nenhuma delas usa o barramento, e nenhuma mostrada na Fig. 3.46.
sinais restantes de informao no barramento se referem ao DMA. Conceitualmente, a
CPU pede, digamos, que um disco leia um bloco de dados, supe-se que a pastilha
idora de disco espere que o primeiro byte chegue da cabea do disco, e ento pede
tornar o mestre da barramento para escrever o byte na memria. Uma seqncia
similar rida de cada dispositivo capaz de fazer DMA.
gica necessria para tratar o protocolo e realmente fazer o DMA, incluindo o
incremento reo de memria e o decremento do nmero de bytes aps cada byte ser
transferido, licada. Para economizar o custo de colocar esta lgica em cada
dispositivo de E/S, a ojetou uma pastilha, o 8237A, que pode realizar o trabalho
para as outras pastilhas, D que elas no precisam faz-lo por si prprias.
encialmente, o 8237A uma pequena CPU com um programa embutido. Quando o ;eja
iniciar DMA em algum dispositivo, ele armazena o nmero do dispositivo, o endereo
ria, a quantidade d bytes, a direo da transferncia e outras informaes em
registradores
112 ORGANIZAO ESTRUTURADA DE COMPUTADORES
internos do 8237A. Quando a pastilha controladora est pronta para ler ou escrever
o pi
byte, ela ativa uma das linhas DRQx do barramento, que so entradas para o 8237A.
Ao ver este sinal, o 8237A_requisita o barramento e o estabelece para transferir
Ento, ele produz o sinal DACKx para a pastilha controladora, sinalizando-a para
escre byte (para operaes de leitura) ou ler seu byte (para operaes de escrita).
Durante esb a pastilha controladora est funcionando como mestre e a memria est
funcionando como e Este projeto requer um mnimo de circuitos nas pastilhas
controladoras. O 8237A possui canais independentes e pode manipular at quatro
transferncias simultaneamente.
Complementando, o 8237A no tem 20 linhas de endereo, de modo que ele este as
linhas de endereo no barramento utilizando alguns latches dedicados, que no so
mo na Fig. 3.46. Alm disso, DRQO no disponvel no barramento, porque ele usad
refrescar a RAM dinmica.
O TIC ativado pelo 8237A quando o nmero de hytes exaurido. Este sinal p que o
controlador saiba que a EIS foi feita e que hora de pedir uma interrupo ao
Os oito sinais de barramento restantes so para alimentao e terra. Existem duas
com +5 volts e uma de cada com -5, +12 e -12 volts. Trs das linhas so aterradas
foi reservada para uso futuro, mas no PCIXT ela foi utilizada para seleo de
carto.
Embora a Fig. 3.46 esteja longe de ser completa, vale a pena estud-la cuidadosa A
placa me da maioria dos computadores pessoais 8088 utiliza essencialmente estas pa
alm de algumas adicionais para o subsistema de memria e alguns controladores de
EIS c como o teclado. Alm disso, o 80286 e o 80386 usam pastilhas anlogas,
organizadas de similar, de modo que as idias discutidas acima podem ser aplicadas
para os Outros sistem2
3.6.2 O Barramento do IBM PC/AT
Quando a IBM introduziu o PCIAT baseado no 80286, tinha um grande problema nas Se
comeasse do zero e projetasse um barramento completamente novo de 16 bits, muil
potenciais consumidores teriam hesitado em compr-lo, porque nenhuma das muitas
placas nveis para o PC de outros vendedores funcionaria na nova mquina. De outro
lado, i
Conector do Barramento do
PC PC Carto de
Contato expanso
\j
i DLJ
]
J
] flE
3 H
Lio
3
3
o
rio
Lo
00
Novo conector do PCAT Conector de borda
Fig. 3.47 O barramento do PC/AT possui dois componentes: uma parte original do PC e
Outra nova.
O NVEL DE LGICA DIGITAL 113
amento PC, com suas 20 linhas de endereo e oito linhas de dados, no tiraria
proveito ilidade do 80286 de enderear 16 MB de memria e transferir palavras de 16
bits.
soluo escolhida foi estender o harramento do PC. Os cartes PC tm um conector
rda com 62 contatos, mas este conector no ocupa toda a extenso da placa. A
soluo 1' foi colocar um segundo conector de borda no fundo da placa, adjacente ao
principal, etar o circuito do AT para trabalhar com ambos os tipos de placa. A
idia geral ilustrada
3.47.
segundo conector do harramento PC/AT contm 36 linhas. Destas, 31 so providas para
linhas de endereo, mais linhas de dados, mais linhas de interrupo e mais canais
de
alm de alimentao e terra. O resto lida com as diferenas entre transferncias de
8 its. Por exemplo, existe uma linha que acionada pelo sinal fflT do 80286 para
habilitar/de- ar o byte superior nas transferncias.
uando a IBM trouxe a srie PS/2 como sucessora do PC e do PC/AT, ela decidiu que ra
de comear de novo. Parte desta deciso pode ter sido tcnica (o barramento do PC
almente obsoleto naquela poca), mas parte foi sem dvida causada por um desejo de
r um obstculo no caminho das companhias fabricantes de clones de PC, que tinham
pego ;rande parte do mercado. Assim, as mquinas PS/2 mdias e grandes foram
equipadas im barramento, o Microchannel(r), que era completamente novo e que foi
protegido por patentes e por um batalho de advogados.
resto da indstria de computadores pessoais reagiu a este desenvolvimento adotando
seu o padro, o barramento EISA (Extended Industry Standard Architecture), que
basicamente xtenso do antigo harramento PC/AT para 32 bits, com algumas
caractersticas novas (por )lO, multiprocessamento). A vantagem desta abordagem
que ela mantm compatibilidade
mquinas e cartes existentes, e tambm baseado em um barramento que a IBM tinha
radamente licensiado para muitas companhias para garantir que tantos fabricantes
quanto
e! fizessem cartes para o PC original, algo em que ela voltou atrs para repensar.
O Barramento VME
nquanto o harramento do IBM PC e seus descendentes so largamente utilizados no
mundo mputadores pessoais, em muitas outras aplicaes necessrio um barramento
mais pesado. seo, descreveremos um harramento deste tipo, o VME, e mostraremos
como ele difere srramentos dos computadores pessoais. VME vem de Versa Module
Eurocard, uma vez e derivado do antigo Versabus da Motorola, mas usa uma placa
com formato duplo )Eurocard (160 mmx 200 mm).
rico
o final dos anos 70, depois que a Motorola produziu a pastilha 68000, ela decidiu
construir ler computadores baseados no 68000. Seu primeiro sistema baseado no 68000
(Exormacs) um barramento traseiro que foi chamado de Versabus. Pouco depois que o
primeiro Exormacs ;pachado, a operao europia da Motorola sugeriu adaptar o
Versabus para usar o formato ard, que estava rapidamente se tornando o padro de
fato para a indstria de computadores ropa e em outros locais. A Motorola concordou
que isto era uma boa idia e contratou tek e a Signetics/Philips para suportar este
novo barramento, que foi chamado do VME. dida que outras companhias comearam a
produzir cartes para ele, foi decidido criar mit IEEE para produzir um padro
oficial para ele (IEEE P1014). O VME agora s barramentos de 32 hits de alto
desempenho mais largamente utilizado, especialmente plicaes industriais.
Atualmente, mais de 2000 placas feitas por mais de 250 companhias lisponveis para
VME.
ma das caractersticas mais atraentes do VME o fato de que ele tem uma definio
amente formal, na forma de um livro que chega perto de 300 pginas. Este livro
descreve randes detalhes exatamente como este barramento funciona. Ele tambm d um
grande o de regras que todos os cartes VME devem seguir, assim como muitas
recomendaes ialquer projetista consciente ir observar se ele quiser ser capaz de
vender o carto que projetando. O livro tambm fornece inmeras observaes,
comentrios e exemplos,
114 ORGANIZAO ESTRUTURADA DE COMPUTADORES
de modo que um consumidor pode comprar um carto VME de CPU de um vendedor carto
de memria de um segundo vendedor e um carto de EIS de um terceiro vendi e todos
eles iro funcionar juntos harmoniosamente. O harramento do IBM PC no to
definido, podendo acontecer que, embora os cartes A e B funcionem isoladamente com
a eles se recusem a funcionar quando ambos esto presentes.
As metas do barramento VME so interoperabilidade, alto desempenho e alta
confiabili A interoperabilidade atingida por se ter uma padronizao formal do
barramento. qu vendedores aderem. O alto desempenho atingido pelo fato de o
harramento ser assmnci Nenhum relgio de sistema usado para sincronizar mestres e
escravos, permitindo que p individuais trabalhem na velocidade que a tecnologia
corrente permitir. Na prtica, um 1 superior efetivo um ciclo a cada 100 ns, mais
ou menos, porque sendo mais rpido muitos atrasos e outros problemas anlogos de
engenharia. Com uma transferncia de d de 4 bytes a cada 100 ns, a banda de
passagem efetiva de 40 Mhytesls.
O barramento do IBM PC, ao contrrio, tem um relgio fixo de 4,77 MHz, dand( ciclo
de barramento de 210 ns. Uma vez que quatro ciclos so gastos para transferir um a
banda de passagem mxima terica de 1,2 Mhytesls. Na prtica, isto no pode ser
atir porque a arbitragem do barramento no pode ser feita em paralelo com as
transfernci dados, como no barramento VME.
Vale a pena falar um pouco mais sobre barramentos sncronos versus harramentos
assncr aqui, porque existem outros barramentos modernos, tais como Multibus II e
Nubus, qu sncronos a 10 MHz (isto , tm um perodo de ciclo de 100 ns), tornando-
os comparve VME. Considere uma CPU funcionando internamente a 16, 25 ou 30 MHz e
trabalhandi um barramento sncrono de 10 MHz. Nem todos os ciclos da CPU usam o
harramento, de tempos em tempos, a memria precisa ser referenciada.
Como o relgio interno da CPU no funciona em compasso com o harramento, a
simplesmente precisa esperar at o incio do prximo ciclo de harramento antes de
cort sua operao de memria. Este atraso est na faixa de O a 100 ns, com uma
mdia de 5 Assumindo que um ciclo de barramerito suficiente, o tempo de acesso
efetivo foi aumer de 100 ns para 150 ns, devido natureza sncrona do barramento.
Barramentos assncr podem comear um ciclo a qualquer instante, e no sofrem deste
problema.
O barramento VME atinge alta confiabilidade tanto pelo projeto mecnico quanto i
protocolos de barramento. Em vez de utilizar cartes encaixveis com conectores de
borde como no IBM PC), ele usa cartes com conectores apropriados, consistindo em
trs fileir 32 pinos metlicos redondos. Estes conectores combinam com soquetes
apropriados de 96 p Embora consideravelmente mais cara, esta abordagem elimina
virtualmente maus contatos, das principais fontes de problemas nos sistemas de
computadores. A vibrao, outra gr fonte de preocupao, minimizada pela
requisio de bastidores fabricados com precis guias, para at 21 cartes. O rudo
eltrico reduzido pelo uso de placas multilayer.
A confiabilidade ainda melhorada tendo-se linhas no barramento que podem ser
utili2 para autotestes automticos e reportagem de status. Alm disso, o barramento
tem pro' para uma parada suave nos milissegundos disponveis entre o momento em que
uma imir falha na alimentao percebida e o momento em que a alimentao caiu
abaixo do nvel utiliz
Adicionalmente, a placa traseira no contm nenhum componente ativo, como uma me.
Em vez disso, existe uma placa controladora de sistema separada que contm o mo de
falha de alimentao, rbitro de barramento, controlador de interrupo, e vrios
temporizac usados para propsitos de testes e utilitrios. Esta placa pode ser
facilmente substituda. se necess
Viso Tcnica Geral do Barramento VME
O VME , na realidade, parte de uma famiia de trs barramentos projetados para trab
em uma ampla variedade de sistemas de computadores, de pequenos sistemas de
desenvolvim a sistemas multiprocessadores completos. A Fig. 3.48(a) mostra um
sistema mnimo com cartes VME, um para a CPU, um para a memria e um para o
controlador de EIS.
Em contraste, a Fig. 3.48(b) mostra um sistema multiprocessador maior. Neste sisti
cada processador tem memria local, qual ele se conecta atravs do barramento
VSB,
tambm faz parte da famflia VME. Colocando todo o cdigo do programa e os dados li
1
O NVEL DE LGICA DIGITAL 115
Cpu Memria EIS
Barramento VME
(a)
(b)
S (a) Um sistema VME simples. (h) Um sistema VME multiprocessador.
emrias locais, somente aquelas instrues que referenciam a memria global
compartilhada tilizar o VME. Este projeto significa que a banda de passagem total
do barramento pode exceder, em muito, o limite efetivo de 40 Mbytes/s, imposto pela
tecnologia VME. Por lo, um sistema multiprocessador com 16 CPUs, cada uma
requerendo uma palavra de :s a cada 200 ns, precisaria de um barramento comum com
banda de passagem de 320 s/s. Se 90% destas referncias so para buscar instrues,
ler e gravar dados locais (uma io razovel para a maioria das aplicaes), um
sistema com um barramento VME e 16 ilentos VSB pode suportar a carga.
Jm do barramento VSB, a familia VME tambm suporta uma via de comunicao serial,
ida de barramento VMS. Este barramento funciona independentemente dos outros dois,
ser usado para comunicaes de baixa banda de passagem e para sincronismo entre
mltiplos ssadores, em paralelo com as transferncias de dados nos barramentos
principais, O VMS elhante a uma rede local funcionando com um nico cabo coaxial.
s linhas do barramento VME podem ser divididas em quatro grupos:
Transferncia de dados.
Arbitragem de barramento.
Interrupes com prioridade.
Utilitrios.
s agora analisar cada um deles.
barramento VME suporta transferncias de 8, 16 e 32 bits, para tratar sistemas de
pequeno,
e grande porte. Ele tambm suporta endereos de 16, 24 e 32 bits, pela mesma razo.
ciclo de barramento especifica o endereo e o tamanho do dado que ele precisa, de
modo iferentes pares mestre/escravo podem comunicar-se no mesmo barramento, com a
largura r mais econmica para eles, sem considerar o que os outros esto fazendo.
tuitos tipos bsicos de ciclo de barramento so definidos, cada um operando em
vrias inaes de 1, 2 ou 4 bytes. As mais simples so leituras e escritas comuns
de 1, 2 ou
116 ORGANIZAO ESTRUTURADA DE COMPUTADORES
4 bytes. Transferncias desalinhadas (por exemplo, 4 bytes comeando em um endereo
i
so tratadas de forma especial.
Alm disso, transferncias de blocos (leitura e escrita) so tambm suportadas, mas
nen transferncia pode atravessar uma fronteira de 256 bytes. A razo para limitar
as transfer de blocos deste jeito para simplificar o projeto de cartes de
memria. Se transferncias arbil fossem permitidas, ento uma nica transferncia
de bloco poderia comear em um carto, para um segundo no meio do caminho,
requerendo que todos os cartes tivessem a habi] de pegar uma transferncia de
blocos no meio. Este problema evitado com cada carto come em mltiplos de 256
bytes.
Proibir transferncias alm dos limites de 256 bytes uma das muitas regras
existeni especificao do barramento, para minimizar a ambigidade sobre o que se
espera que um VME faa. Poder-se-ia imaginar um padro que no mencionasse o
assunto, resultando em de memrias cujos projetistas nunca nem ao menos pensaram na
possibilidade de seus prc terminarem uma transferncia de blocos de outro.
O prximo tipo de ciclo de barramento o ciclo indivisvel l-modifica-escreve,
nece para suportar sistemas multiprocessadores. Existe tambm um ciclo de
reconhecimento de int
o. Ambos j foram vistos anteriormente, e no os discutiremos mais aqui.
O ltimo tipo de ciclo de barramento um que ainda no foi visto: o ciclo apenas
de end Nenhum dado transferido durante este ciclo. Seu propsito permitir que
um mestre ar que ele est planejando requerer certo endereo brevemente, para
permitir que placas de me se preparem para ele, e sejam ento capazes de responder
internamente quando a requ real for feita mais tarde. Estados de espera podem ser
algumas vezes evitados, avisando as men lentas com suficiente antecedncia.
Quatro tipos de dispositivos podem participar de uma transferncia de dados. O n e
o escravo esto presentes, claro, mas outros dois tipos podem tambm tomar parte
monitor de endereamento pode vigiar o barramento e causar uma interrupo local em
sua] sempre que um endereo dentro de uma certa faixa aparece. Por exemplo, se uma
certa p de memria ou registrador de E/S escrito, quando no suposto ser, um
analisador 1 pode ser ligado ao barramento para coletar todas as referncias ao
barramento, parando qt a palavra sob observao tocada. Os n ciclos anteriores
podem ser mostrados, para pe ao usurio localizar de onde a referncia ruim foi
feita.
O quarto tipo de dispositivo que pode tomar parte em uma transferncia de dado
temporizador de barramento, que monitora constantemente o barramento. Se ele nota
qu ciclo de barramento est muito longo (por exemplo, porque uma memria no
existen acessada e no h um escravo para responder), ento ele pode gerar um sinal
de erro terminar o ciclo de barramento. Sem esta facilidade, um barramento
assncrono poderia ser susJ para sempre.
A Fig. 3.49 ilustra uma leitura de 32 bits no barramento VME. No incio da transfen
o mestre estabelece as linhas de endereo, A1-A31, as linhas modificadoras de
endereo, AM5, e a linha LWORD (Long WORD). As linhas de endereo especificam_o
endere linhas modificadoras de endereo especificam o tipo de ciclo, e a linha
LWORD indica s uma transferncia completa de 32 bits ou se ser uma transferncia
parcial.
Aps todas essas trs estarem estveis, o mestre ativa (Address Strobe) para diz
escravo que o endereo vlido e que ele pode ser amostrado. Ele ento desativa
(para leitura) ou ativa (para uma escrita) o sinal WRITE. Na figura, WRITE
representado poi linha tracejada, para mostrar a seqncia causa-e-efeito, mas o
sinal no muda necessariarr dependendo de como ele j estava. Finalmente, o mestre
estabelece DSO- para m que ele est pronto para ler. A codificao real de DS ST,
LWORD e Ai determina a es dos bytes requeridos dentro da palavra selecionada. A
codificao destes quatro campos alguma forma, obscura.
Assim que o escravo v a ativao das linhas ele comea a trabalhar e c os dados
nas linhas DO-D31, to logo possa. Depois disso, ele ativa DTACK, para recon que
est pronto. Quando o mestre v DTACK, ele desativa a maioria dos seus sinais.
Finalrr ele tambm desativa i5 que diz ao escravo para desativar DTACK, terminando
o ciclo. O barramento est ento pronto para realizar outro ciclo.
O segundo grupo de linhas lida com arbitragem de barramento. Trs esquemas so
suport
O NVEL DE LGICA DIGITAL 117
.49 Um ciclo de leitura no barramento VME. As setas rotuladas com um M so internas
ao mestre. Luladas com um S so internas ao escravo. As no rotuladas so de ambos.
chaining de um nvel, prioridades fixas e round-robin, embora outros esquemas no
sejam idos. Para todos os esquemas de arbitragem, um aspirante a mestre faz uma
requisio, do alguma linha. Quando obtm a permisso, ele toma conta do
barramento, ativa ento nal de barramento ocupado e desativa a requisio. Desta
forma, o prximo mestre pode icolhido enquanto o atual est trabalhando. Esta
facilidade existe tambm nas pastilhas O, de modo que no surpresa que a Motorola
tambm a tenha colocado no barramento. istemas de alto desempenho, isto pode
aumentar consideravelmente o desempenho.
estudamos daisy chaining de um nvel e prioridades fixas, assim, vamos analisar a
arbitragem 1-robin. Quando este mtodo usado, cada uma das quatro linhas de
requisio considerada s outras em termos de prioridade. Cada mestre em
potencial ligado a uma das linhas; com n mestres potenciais haver uma mdia de
n14 mestres por linha. No primeiro ciclo irramento, o rbitro d permisso linha
0, no prximo, linha 1, e assim por diante. ngum est querendo ser mestre em
dada linha, ela saltada. Se mltiplos dispositivos m ser mestres na mesma linha,
daisy chaining usado entre eles. Considerando que o D VME tem dois conectores de
96 pinos, dos quais cerca de 80 no so usados, prover is quatro linhas de
requisio parece excessivamente frugal. At mesmo o antigo Unibus linhas do PDP-11
tinha cinco linhas de requisio.
.Jma caracterstica interessante do barramento VME uma linha usada pelo rbitro
do mento para requisitar a um mestre de baixa prioridade, que est engajado numa
longa erncia de bloco, que pare e permita que um mestre de maior prioridade tome
conta do mento.
) terceiro grupo de linhas do barramento VME lida com interrupes com prioridade.
Tal
-AM5
RD
rE
118 ORGANIZAO ESTRUTURADA DE COMPUTADORES
como no barramento do IBM PC, o VME tem certo nmero de linhas de requisio de
intel (sete, para ser exato) e uma linha encadeada (daisy chained) de permisso de
interrup um sistema com um processador, fcil o tratamento de uma interrupo
dispositivos le a mo para causar uma interrupo, e algum tipo de controlador de
interrupo (tal 8259A) seleciona um e ativa o pino de interrupo da CPU. Quando
um barramento tem m CPUs e mltiplos dispositivos, como no VME, as linhas de
requisio podem ser distt entre dois ou mais controladores de interrupo, cada um
monitorando linhas especficas responsvel por interromper uma CPU especfica. Por
exemplo, as linhas 1 a 4 poderi utilizadas para interromper a CPU 1, e as linhas 5
a 7, para interromper a CPU 2.
Uma vez que a interrupo foi requisitada e permitida, a CPU relevante pode ser
interrc O que a CPU faz a seguir est fora do protocolo do barramento. Ela pode,
por exemp como mestre e perguntar ao controlador o nmero do vetor de interrupo,
mas no nec mente. Se mltiplas interrupes ocorrem simultaneamente, as CPUs
interrompidas pi competir pela tomada do barramento da forma normal.
O grupo final de linhas utilizado para funes utilitrias. Uma destas linhas
um fixo de 16 MHz, acionado pelo carto controlador do sistema. Ele no utilizado
para d
ciclos de barramento, mas pode ser utilizado para medir tempo, por exemplo, para
timeoti
Duas outras linhas so usadas para implementar o barramento serial VMS. Uma dela
pulsos de relgio de 32 MHz, de modo que quem envia saber quando colocar bits a
linha. Assim, o barramento serial VMS pode trabalhar a 32 Mbps, mas tambm pode tr
a um submltiplo, tal como a 16 ou 8 Mbps. Os dois relgios descritos no so
necessari sincronizados um com o outro, e eles certamente no so sincronizados com
coisa algt barramento.
As linhas restantes se referem a inicializao, reinicializao e teste do sistema.
Ur
completa de todos os sinais do VME dada na Fig. 3.50. Nesta figura, entrada e sa
relativas ao mestre do barramento ou ao controlador do sistema.
3.7 INTERFACEAMENTO
Um sistema de computadores tpico de pequeno a mdio porte consiste em uma i
microprocessadora, pastilhas de memria e alguns controladores de E/S, todos
conectad barramento. J estudamos memrias, microprocessadores e barramentos com
algum detalhe hora de analisar a ltima parte do quebra-cabea, as pastilhas de
E/S. E atravs destas p que o computador se comunica com o mundo externo.
3.7.1 Pastilhas de EIS
Inmeras pastilhas de EIS j esto disponveis e novas esto sendo introduzidas
todo o Pastilhas comuns incluem UARTs, USARTs, controladores de CRT, contioladores
de e PIOs. Uma UART (Universal Asynchronous Receiver Transmitter transmissor e
recepto crono universal) uma pastilha que pode ler um byte do barramento de dados
e col numa linha serial para um terminal, um bit de cada vez, ou receber dados de
um te UARTs usualmente permitem velocidades de 50 bps a 19,2 kbps; larguras de
caracterl a 8 bits; 1, 1,5 ou stop bits; e provem paridade par, mpar ou nenhuma,
tudo sob e do programa. USARTs (Universal Synchronous Asynchronous Receiver
Transmitters) poden pular transmisso sncrona, usando uma variedade de protocolos,
bem como realizar tI funes da UART. Uma vez que j analisamos as UARTs no
captulo 2, vamos agora a interface paralela como um exemplo de uma pastilha de
EIS.
Pastilhas PIO
Uma pastilha PIO (Parailel InputlOutput - entrada/sada paralela) tpica a Intel
mostrada na Fig. 3.51. Ela tem 24 linhas de E/S que podem interfacear com qualquer
disj compatvel com TTL, como por exemplo teclados, chaves, lmpadas ou
impressoras. Num descrio, o programa da CPU pode escrever um O ou 1 em qualquer
linha ou ler o de entrada de qualquer linha, provendo grande flexibilidade. Um
sistema pequeno base
k
O-BR3
OIN-BG3
OUT-BG3OUT
CR
)1-
K
O NVEL DE LGICA DIGITAL 119
Linhas Entrada Sada Descrio
A31
31
X
Linhas de endereo, AO sempre O
O-AM5
6
X
Modificador de endereo define tipo de ciclo de barramento
ORD
1
X
Palavra longa. Define parcialmente o tamanho do dado
1
X
Habilitao de endereo Ativado quando o endereo estvel
iT
1
X
Ativado nas escritas Desativado nas leituras
Tf
2
X
Habilitao dos dados
32
X
X
Linhas de dados
ACK
1
X
Sinal de reconhecimento dos dados
1
X
Ativado quando detectado erro de barramento
4
4
4
7
x
x
x
x
x
x
x
x
Linhas de requisio de barramento
Permisso do barramento, entradas de daisy chain
Permisso do barramento, sadas de daisy chain
Barramento ocupado
Ativado pelo rbitro para requisitar o barramento
KIN
KOUT
x
x
Linhas de requisio de interrupo
Cabea de cadeia de reconhecimento de
interrupo
Reconhecimento de interrupo, entrada de daisy
chain
Reconhecimento de interrupo, sada de daisy
chain
SCLK
1
X
Relgio do sistema, 16 MHz
RCLK
1
X
Relgio do barramento de bus VMS, 32 MHz
A
1
X
X
Linha de dado do barramento VMS
L
1
X
Falha na alimentao AC detectada
JI
1
X
X
Linha de diagnstico
SRESET
1
X
Reinicializao do sistema
rnentao
9
5 volts, 12 volts
JD
12
Terra
servado
1
(No utilizado)
O Sinais no harramento VME.
120 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Porto A
AO-Ai
Pastilha
4 PortoB
RD paralela
RESET 8255A
8 8
DO-D7 4 / 4 / Porto C
Fig. 3.51 Uma pastilha PIO 8255A.
microprocessador usando uma PIO pode frequentemente substituir uma placa completa
de pastilhas SSI ou MSI.
Embora a CPU possa configurar o 8255A de vrias maneiras, carregando os registi de
status dentro da pastilha, vamos nos concentrar em alguns dos modos de operao
mais s A forma mais simples de usar o 8255A como trs portos de 8 hits
independentes, i C. Associado a cada porto existe um registrador de 8 bits. Para
estabelecer as linhas porto, a CPU apenas escreve um nmero de 8 bits no
registrador correspondente, e o r de 8 bits aparece nas linhas de sada,
permanecendo l at que o registrador seja re Para usar o porto como entrada, a CPU
simplesmente l o registrador correspondente.
Outros modos de operao provem handshaking com dispositivos externos. Por ex para
enviar dados para um dispositivo que no est sempre pronto para aceit-los, o pode
colocar o dado em um porto de sada e esperar que o dispositivo envie um pulso d
dizendo que ele aceitou o dado e quer mais. A lgica necessria para gatilhar tais
pi torn-los disponveis CPU est includa no hardware do 8255A.
Do diagrama funcional do 8255A, podemos ver que, alm dos 24 pinos para os trs ele
tem 8 linhas que se conectam diretamente ao barramento de dados, uma linha de da
pastilha, linhas de leitura e escrita, duas linhas de endereo e uma linha para
reini a pastilha. As duas linhas de endereo selecionam um dos quatro registradores
internos, cori dentes aos portos A, B, C e ao registrador status, que tem bits
determinando quais pori de entrada e quais so de sada, dentre outras funes.
Normalmente, as duas linhas de en so ligadas aos dois bits de baixa ordem do
barramento de endereo.
3.7.2 Decodificao de Endereo
At agora, temos sido deliberadamente vagos a respeito de como a seleo da pas
feita nas pastilhas de memria e EIS que temos visto. Agora hora de analisar mais
cuidados como isto feito. Vamos considerar um microcomputador simples, composto
de uma CPI EPROM de 2K x 8 para o programa, uma RAm de 2K x 8 para os dados e uma
PIC sistema pequeno poderia ser usado como um prottipo para o creoro de um
brinquedo ou um simples eletrodomstico. Uma vez em produo, a EPROM poderia ser
substitui uma ROM.
A PIO pode ser selecionada de duas maneiras: como un. verdadeiro dispositivo de
como parte da memria. Se escolhermos us-la como um dispositivo de E/S, ento de
selecion-la utilizando um espao de endereamento explcito de E/S, por exemplo, o
sinal (ou 10W) do barramento do IBM PC. Se usarmos a outra abordagem, EIS mapeada
em m ento devemos assinalar quatro bytes do espao de endereamento para os trs
portos o registrador de controle. A escolha , de alguma forma, arbitrria. Vamos
escolher E/S m em memria porque isso ilustra algumas consideraes importantes do
interfaceamento de
A EPROM precisa de 2K do espao de endereamento, a RAM tambm precisa
do espao de endereamento, e a PIO precisa de 4 bytes. Como, no nosso exemplo, o
de endereamento de 64K, devemos escolher onde colocar os trs dispositivos. Uma
p
escolha mostrada na Fig. 3.52. A EPROM ocupa os endereos de O a 2K, a RAM
O NVEL DE LGICA DIGITAL 121
EPROM no endereo O RAM no endereo 8000H PIO em FFFCH
1 1 1
O 4K 8K 12K 16K 20K 24K 28K 32K 36K 40K 44K 48K 52K
56K 60K64K
Localizao da EPROM, RAM e PIO em nosso espao de endereamento de 64K.
os de 32K a 34K, e a PIO ocupa os quatro ltimos bytes do espao de endereamento,
5535. Do ponto de vista do programador, no faz diferena quais endereos so
utilizados; ;o, para o interfaceamento, faz. Se tivssemos escolhido enderear a
PIO no espao io seria necessrio nenhum endereo de memria (mas seriam
necessrios quatro ende espao de EIS).
os assinalamentos de endereos da Fig. 3.52, a EPROM deve ser selecionada por
qualquer de memria de 16 bits da forma 00000xxxxxxxxxxx (binrio). Em outras
palavras, qualquer cujos 5 bits de alta ordem sejam Os cai nos 2K inferiores da
memria, portanto na Assim, a seleo da pastilha da EPROM poderia estar ligada a
um comparador de qual uma das entradas estivesse permanentemente ligada a 00000.
a forma melhor de atingir o mesmo efeito utilizar uma porta OR de cinco entradas,
cinco entradas ligadas s linhas de endereo Ali a AIS. Se, e somente se, todas as
lias so O, a sada ser O, ativando assim CS (que ativado em nvel baixo).
Infelizmente, te nenhuma porta OR de cinco entradas na srie SSI padro. O que mais
se aproxima orta NOR de oito entradas. Aterrando trs entradas e invertendo a
sada, podemos produzir o sinal correto, como mostrado na Fig. 3.53(a). Por
conveno, as entradas as no so mostradas nos diagramas de circuitos.
esmo princpio pode ser usado para a RAM. Porm, a RAM deve responder aos endereos
da forma l0000xxxxxxxxxxx, e assim preciso um inversor adicional, como visto na
decodificao do endereo da PIO mais complicada, porque ela selecionada pelos
ndereos da forma llllllllllIlllxx. Um circuito possvel que ativa apenas quando o
correto aparece no barramento de endereo visto na figura. Ele utiliza duas
portas Je oito entradas para alimentar uma porta OR. Para construir a lgica de
decodificao reo da Fig. 3.53(a), usando SSI, so requeridas seis pastilhas - as
quatro pastilhas ntradas, uma porta OR e uma pastilha com trs inversores.
tudo, se o computador realmente consiste apenas na CPU, duas pastilhas de
memria ), podemos usar um artifcio para simplificar bastante a decodificao de
endereo. O baseado no fato de que todos os endereos da EPROM, e somente os da
EPROM, bit de mais alta ordem, A15. Assim, podemos simplesmente ligar CS ao AiS
diretamente, ostrado na Fig. 3.53(b). Neste ponto, a deciso de colocar a RAM em
800011 pode nuito menos arbitrria. A decodificao da RAM pode ser feita notando
que os nicos )S vlidos na forma l0xxxxxxxxxxxxxx esto na RAM, ento a
decodificao de dois ficiente. Similarmente, qualquer endereo comeando com 11
deve ser o endereo da lgica da decodificao completa agora duas portas NAND e
um inversor. Como sor pode ser obtido de uma porta NAND simplesmente unindo as duas
entradas, uma ;tilha com quatro NANDs mais que suficiente.
igica de decodificao de endereo da Fig. 3.53(b) chamada decoditicao parcial
de porque os endereos completos no so utilizados. Ela tem a propriedade de que
leituras
reos 0001000000000000, 0001100000000000 ou 0010000000000000 daro o mesmo resul
fato, todo endereo na metade inferior do espao de endereamento ir selecionar M.
Como os endereos extras no so utilizados, no h danos, mas, se se est
projetando putador que poder ser expandido no futuro (o que no ocorre em um
brinquedo), Ficao parcial deve ser evitada porque ela amarra muito o espao de
endereamento.
122 ORGANIZAO ESTRUTURADA DE COMPUTADORES
A
Barramento
de
endereo
A
(a)
A _____________________________
Barramento
de
endereo
A
(b)
Fig. 3.53 (a) Decodificao completa de endereo. (b) Decodificao parcial de
endereo.
Outra tcnica comum de decodificao de endereo usar uma pastilha decodifi como
mostrado na Fig. 3.14. Conectando as trs entradas s trs linhas de endereo
ordem, obtemos oito sadas, correspondentes aos endereos do primeiro 8K, do segur
e assim por diante. Para um computador com 8 RAMs, cada uma de 8K >< 8, uma destas
fornece a decodificao completa. Para um computador com oito pastilhas de memrn
O NVEL DE LGICA DIGITAL 123
nico decodificador suficiente, desde que cada pastilha de memria esteja
localizada poro distinta de 8K no espao de endereamento (lembre-se de nosso
comentrio Je que a localizao das pastilhas de memria e de EIS no espao de
endereamento
UMO
iputadores so construdos a partir de pastilhas de circuito integrado contendo
minsculos ,s de comutao, chamados portas. As portas mais comuns so AND, OR,
NAND, OT. Circuitos simples podem ser obtidos combinando diretamente portas
individuais astilhas SSI.
uitos mais complexos so construdos usando componentes MSI padres, tais como
multi es, demultiplexadores, codificadores, decodificadores, deslocadores e ALUs.
Funes s arbitrrias podem ser programadas usando uma PLA. Se muitas funes
booleanas ssrias, as PLAs so muito mais eficientes (isto , requerem menos
pastilhas) que a o de pastilhas SSI. As leis de lgebra booleana podem ser usadas
para transformar circuitos forma em outra. Em muitos casos, circuitos mais
econmicos podem ser obtidos desta
operaes aritmticas de um computador so feitas por somadores. Um somador
completo mico bit pode ser construdo a partir de dois somadores parciais. Um
somador para avra multibit pode ser construdo, ligando mltiplos somadores
completos de tal maneira ti de cada um alimente o vizinho da esquerda.
componentes de memria (esttica) so latches e flip-flops, cada qual podendo
armazenar nformao. Podem ser combinados linearmente em latches e flip-flops
octais, ou logaritmi em memrias completas, orientadas para palavras. Memrias so
disponveis como RAM, 'ROM, EPROM e EEPROM. As memrias estticas no precisam ser
refrescadas; elas seus valores enquanto a alimentao estiver ligada. Por outro
lado, as memrias dinmicas ser refrescadas periodicamente para compensar o
escoamento dos pequenos capacitores ha.
componentes de um computador so conectados por barramentos. Muitos, mas no todos
de uma pastilha microprocessadora tpica, acionam diretamente uma linha no
barramento. s do barramento podem ser divididas em linhas de endereo, dados e
controle. Barramentos 5 so acionados por um relgio mestre. Barramentos
assncronos usam handshnking com ra sincronizar o escravo com o mestre.
arramento do IBM PC um barramento tpico de um computador pessoal. Um sistema
iliza tem uma CPU 8088, um controlador de barramento, um controlador de
interrupes, tilha de DMA, alguns latches e acionadores, e outras pastilhas. Para
aplicaes industriais desempenho, o barramento VME freqentemente utilizado. Ele
suporta endereos Ls, transferncias de dados de 32 bits, assim como as mais
estreitas.
ves, luzes, impressoras e muitos outros dispositivos de EIS podem ser interfaceados
com tador, usando pastilhas de E/S, tais como o 8255A. Estas pastilhas podem ser
configuradas irte do espao de EIS ou do espao de memria, como for preciso. Elas
podem ser :adas total ou parcialmente, dependendo da aplicao.
PROBLEMAS
conhecedor de lgica entra em um restaurante drive-in e diz: "Eu quero um hamburger
im cachorro-quente e batatas fritas". O cozinheiro foi reprovado no sexto ano e no
(ou no se interessa em saber) se "e" tem precedncia sobre "ou". No que lhe diz
eito, uma interpretao to boa quanto a outra. Quais dos seguintes casos so
interpre es vlidas do pedido? (Note que "ou" significa "ou exclusivo" em
portugus.)
omente um hamburger.
omente um cachorro-quente.
omente batatas fritas.
124 ORGANIZAO ESTRUTURADA DE COMPUTADORES
d) Um cachorro-quente com batatas fritas.
e) Um hamburger com batatas fritas.
f) Um cachorro-quente com um hamburger.
g) Todos os trs.
h) Nada - o conhecedor de lgica ficou faminto por ter sido um sabicho.
2. Um missionrio perdido no Sul da Califrnia parou em uma bifurcao na estrada.
E
que duas quadrilhas de motoqueiros habitam a rea, uma das quais sempre diz a
e a outra sempre mente. Ele quer saber que estrada leva Disneylndia. Que p
ele deve fazer?
3. Existem quatro funes booleanas de uma varivel e 16 funes de duas variveis.
funes de trs variveis existem? E de n variveis?
4. Use uma tabela verdade para mostrar que P = (P AND Q) OR (P AND NOT Q).
5. Mostre como a funo AND pode ser construda a partir de duas portas NAND.
6. Use a lei de De Morgan para encontrar o complemento A
7. Utilizando uma pastilha multiplexadora de trs variveis da Fig. 3.13,
implemente um que a paridade das entradas, isto , a sada ser 1 se e somente se
um nmeri
de entradas for igual a 1.
8. Reflita bem. O multiplexador de trs variveis da Fig. 3.13 realmente capaz de
uma funo arbitrria de quatro variveis booleanas. Descreva como e, como exemplo,
o diagrama lgico para a funo que O se a palavra em ingls para o nmero da
tabela verdade tem um nmero par de letras, e 1 se ela tem um nmero mpar (por
exemplo, 0000 = zero = quatro letras -* O 0111 = seven = cinco letras -+ 1;
thirteen = oito letras -* 0). Sugesto: Se chamarmos a quarta varivel de entrad as
oito linhas de entrada podem ser ligadas a V terra, D ou D.
9. Desenhe o diagrama lgico para um demultiplexador de 2 hits, um circuito cujo
sin de entrada dirigido a uma das quatro linhas de sada, dependendo do estado d
linhas de controle.
10. Desenhe o diagrama lgico de codificador de 2 bits, um circuito com quatro
linhas de das quais apenas uma est em nvel alto em cada instante, e duas linhas
de sada cu
binrio de 2 bits diz qual entrada est em nvel alto.
11. Redesenhe a PLA da Fig. 3.16 em detalhe suficiente para mostrar como a fun
maioria da Fig. 3.3 pode ser implementada. Em particular, mostra quais conex
presentes em ambas as matrizes.
12. Que faz esse circuito?
A c
B
D
O NVEL DE LGICA DIGITAL 125
ma pastilha comum MSI um somador de 4 bits. Quatro destas pastilhas podem ser
interli idas para formar um somador de 16 bits. Quantos pinos voc espera que um
somador
4 bits tenha? Por qu?
m somador de n bits pode ser construdo colocando em cascata n somadores completos,
m o vem-] do estgio i, C., vindo da sada do estgio i-1. O vem-1 para o estgio
0,
o 0. Se cada estgio gasta T ns para produzir sua soma e o vai-1, o vai-I do
estgio no estar vlido at iT ns aps o incio da adio. Para n grande, o tempo
gasto para vai-] propagar at o estgio de mais alta ordem pode ser
insuportavelmente longo. Projete rn somador que trabalhe mais rpido. Sugesto:
Cada C, pode ser expresso em termos dos perandos A.-1 e B,-1, e tambm do vem-] C
Utilizando esta relao, possvel expressar como funo das entradas dos estgios
O a i-1, e assim todos os vai-! podem ser gerados
multaneamente.
e todas as portas da Fig. 3.20 tiverem um atraso de propagao de 10 ns, e todos os
outros trasos puderem ser ignorados, qual o menor tempo que um circuito utilizando
esse projeto ode assegurar em ter um bit vlido na sada?
ma ALU de 16 bits construda a partir de 16 ALUs de 1 bit, cada qual tendo um
tempo e adio de 100 ns. Se h um atraso adicional de 10 ns para a propagao de
uma ALU ara a prxima, quanto tempo demora para o resultado de uma soma de 16 bits
aparecer?
ue o estado quiescente das entradas 5 e R para um latch SR construdo a partir de
uas portas NAND?
ara ajudar no pagamento de seu novo computador, pessoal, voc aceitou prestar
consultorias ara alguns fabricantes novatos de pastilhas SSI. Um de seus clientes
est pensando em roduzir uma pastilha contendo quatro flip-flops tipo D, cada um
possuindo sadas Q e O, pedido de um consumidor muito importante. O projeto
proposto possui todos os quatro nais de relgio interligados, tambm a pedido. No
existiro nem o sinal de preset nem de clear. Sua atribuio fazer uma avaliao
profissional do projeto.
memria 4 x 3 da Fig. 3.28 utiliza 22 portas AND e trs portas OR. Se o circuito
fosse xpandido para 256 x 8, quantas de cada seriam necessrias?
)uanto mais memrias espremida em uma nica pastilha, o nmero de pinos para o
endereo mbm aumenta. Muitas vezes inconveniente ter muitos pinos de endereo em
uma pastilha. rojete um mtodo para enderear 2" palavras de memria utilizando
menos de n pinos.
Jma mquina de estado finito possui 2 estados possveis. A cada pulso do relgio,
ela um smbolo de k bits, emite um smbolo de k bits como sada e muda para um novo
stado. O smbolos emitido e o novo estado dependem do estado corrente e do smbolo
e entrada. Descreva como a mquina pode ser implementada utilizando uma ROM e diga
ual deve ser o tamanho da ROM.
Jm computador com um barramento de dados de 32 bits utiliza pastilhas de memria
RAM inmica de 1M x 1. Qual a menor memria (em bytes) que este computador pode
ter?
elativo carta de tempo da Fig. 3.34, suponha que voc reduza a velocidade do
relgio ara um perodo de 400 ns em vez de 250 ns como indicado, mas as restries
de tempo ermaneam inalteradas. Quanto tempo ter a memria para colocar o dado no
barramento ps MREQ ser ativado, no pior caso?
[ Fig. 3.34(b), TML especificado como sendo no mnimo de 60 ns. Voc pode
imaginar ma pastilha na qual ele negativo? Em outras palavras, poderia a CPU
ativar MREQ ates do endereo estar estvel? Sim ou No? Por qu?
126 ORGANIZAO ESTRUTURADA DE COMPUTADORES
25. Indique os tempos de transio das linhas de endereo na Fig. 3.35 como TAl e
TA tempos de transio de MREQ como TMRQI e TMREO,, e assim por diante. Escreva
as inequaes envolvidas no handshake completo.
26. A maioria dos barramentos de 32 bits permite leituras e escritas de 16 bits.
Existe alI ambigidade sobre onde colocar os dados? Discuta.
27. O 8088 e outras CPUs possuem um tipo especial de ciclo de barramento para
reconhecim de interrupo. Por qu?
28. Um PC/AT de 10 MHz requer quatro ciclos para ler uma palavra. Quanta banda de
pass do barramento a CPU consome?
29. Uma CPU de 32 bits com linhas de endereo A2-A31 requer que todas as
referncias men sejam alinhadas. Isto , palavras devem ser endereadas em
mltiplos de 4 bytes, e meia lavras devem ser endereadas em bytes pares. Bytes
podem estar em qualquer lugar. Qw combinaes vlidas existem para leituras de
memria, e quantos pinos so necessrios express-las? D duas respostas e mostre a
razo para cada uma delas. Qual soluo u pelo 80386?
30. O 68030 usa trs linhas para arbitragem de barramento, versus apenas duas no
80386. Sup que a arbitragem de barramento gaste um ciclo e que uma transferncia de
dados quatro. Se a taxa do relgio, velocidade interna e todos os outros fatores
fossem os mes qual mquina seria mais rpida, e por quanto? (Sugesto: pense
cuidadosamente. e uma pergunta capciosa.)
31. O 68030 tem trs linhas de interrupo, versus 1 no 80386 (excluindo MMI). Isto
vantagem significativa em sistemas pequenos? E nos grandes?
32. O barramento do IBM PC tem 62 linhas. Proponha uma mudana que o reduziria
60, sem perder qualquer funcionalidade. Sua mudana no deve requerer mais do que
algi
portas adicionais s placas de memria e de E/S.
33. O circuito da Fig. 3.46 usa 74LS373s e 74LS245s. Por que voc acha que dois
tipos difen so usados?
34. Um bastidor VME contm 16 processadores nos slots 1 a 16, e uma placa de memri
siot 17. O processador 4 estraga e o seu carto removido. Depois disso, as
interruf
no funcionam mais apropriadamente. Explique.
35. Um sistema multiprocessador VME tem 20 processadores de 32 bits e usa o barraff
VSB para memria local. Cada processador faz n referncias memria global por
segi.
Sob as melhores condies, qual o valor mximo terico de n?
36. Um computador tem instrues que requerem dois ciclos de harramento, um para b
a instruo e um para buscar o dado. Cada ciclo de harramento gasta 250 ns, e cada
insti gasta 500 ns (isto , o tempo de processamento interno desprezvel). O
computadoi tambm um disco com 16 setores de 512 bytes por trilha, O tempo de
rotao do de 8092 ms. Para que percentagem de sua velocidade normal o computador
redi durante uma transferncia DMA, se cada uma gasta um ciclo de harramento?
Cons dois casos: transferncias de 8 e de 16 bits.
37. Qual seria o efeito de se adicionar uma terceira linha de entrada porta NAND
que sele a PIO da Fig. 3.53(b), se esta nova linha fosse conectada a A13?
38. Escreva um programa para simular o comportamento de um arranjo m x n de portas
N.
O NVEL DE LGICA DIGITAL 127
de duas entradas. Este circuito, contido em uma pastilha, tem j pinos de entrada e
k pinos de sada. Os valores de j, k, m e n so parmetros de simulao em tempo de
compilao. O programa deve comear lendo uma "lista de interconexes", cada
ligao especificando uma entrada e uma sada. Uma entrada qualquer um dos j
pinos de entrada, ou a sada de alguma porta NAND. Uma sada tanto um dos k pinos
de sada; quanto uma das entradas de alguma porta NAND. Entradas no utilizadas
esto em nvel lgico 1. Aps ler a lista de interconexes, o programa deve
imprimir a sada de cada uma das 2' entradas possveis. Pastilhas gate array como
esta so amplamente usadas para colocar circuitos persona lizados em uma pastilha,
porque a maior parte do trabalho (deposio do gate array na pastilha)
independente do circuito a ser implementado. Somente as interconexes so espec
ficas para cada projeto.
Escreva um programa para ler duas expresses booleanas arbitrrias e verificar se
elas repre sentam a mesma funo. A linguagem de entrada deve incluir letras
isoladas, como variveis booleanas, os operadores AND, OR e NOT e os parnteses.
Cada expresso deve caber em uma linha. O programa deve calcular a tabela verdade
de cada funo, e compar-las.
Escreva um programa que leia um conjunto de expresses booleanas e calcule as
matrizes 24 x 50 e 50 x 6 necessrias para implement-las com a PLA da Fig. 3.16. A
linguagem de entrada deve ser a mesma do problema anterior. Imprima as matrizes
calculadas.
4
O NVEL DE MICROPROGRAMA
O limite entre hardware e software no bem definido e, alm disso, est
constanter se alterando. Os primeiros computadores tinham instrues para operaes
aritmticas, book deslocamentos, comparaes, loops, entre outras, que eram
executadas diretamente pelo hari Para cada instruo, um circuito especfico de
hardware estava presente para execut-la. Poder pelo menos em princpio,
desparafusar o painel traseiro e apontar os componentes eletr usados pela
instruo de diviso.
Num computador multinvel moderno, no mais possvel isolar os circuitos de di'
porque no existem circuitos de diviso. Todas as instrues disponveis no nvel
de m
convencional (por exemplo, instrues aritmticas, booleanas, deslocamentos,
compara
loops) so executadas passo a passo por um interpretador executado no nvel de
microprogram
O equivalente atual de olhar para os circuitos de diviso obter uma listagem do
micropro
e procurar pela parte que interpreta as instrues de diviso.
Embora programas em qualquer nvel possam ser executados por um software interprel
e embora este interpretador possa, tambm, ser executado por outro interpretador,
essa hiera no pode prosseguir indefinidamente. No nvel mais baixo, deve existir
fisicamente uma m em hardware, com circuitos integrados, fontes de alimentao e
objetos "slidos" similares. itens foram o tema do captulo anterior. Neste
captulo, iremos estudar como os compon eletrnicos so controlados pelo
microprograma e como o microprograma interpreta o n mquina convencional. No
captulo 8, estudaremos uma classe de mquinas que no so micr gramadas (mquinas
RISC).
Como a arquitetura do nvel de microprogramao, chamada de microarquitetura, de:
pelo hardware, ela normalmente primitiva e difcil de programar. As consideraes
de t so, por exemplo, freqentemente importantes. Estas consideraes levaram
Rosin (1974) ad microprogramao como "a implementao de sistemas esperanosamente
razoveis atrav interpretao em mquinas no-razoveis".
O nvel de microprogramao tem uma funo especfica: executar interpretadores
para c mquinas virtuais (esperanosamente mais razoveis). Esta meta de projeto
leva naturalr a uma organizao altamente otimizada no sentido de buscar, examinar
e executar instr de mquina convencional e, em alguns casos, instrues mais
sofisticadas. Os problemas e cor missos envolvidos na organizao e projeto deste
nvel sero examinados neste captulo.
Comearemos nosso estudo do nvel de microprogramao revendo brevemente os
construtores bsicos discutidos no captulo 3, porque eles so parte da arquitetura
do nv microprogramao, e portanto de interesse para o microprogramador. (Um
"microprogram algum que escreve microprogramas, e no um programador pequeno.) A
seguir, cheg ao mago da questo: como instrues mais complexas podem ser
construdas a partir de seq de instrues primitivas. Este tpico ser discutido
em detalhes e ilustrado por um extenso exei Posteriormente, examinaremos os vrios
fatores que devem ser considerados ao se proje nvel de microprogramao de um
computador, para melhor compreender por que ele do que . Olharemos tambm para
as maneiras de melhorar o desempenho do computador. 1
O NVEL DE MICROPROGRAMAO 129
examinaremos o nvel de microprogramao de nossos dois exemplos correntes, as
famflias
Motorola.
EVISO DO NVEL DE LGICA DIGITAL
trabalho do microprogramador escrever um programa para controlar os registradores
quina, seus barramentos, ALUs, memrias e outros componentes de hardware. Ns
estuda sses dispositivos no captulo anterior; agora iremos apenas revis-los
brevemente para colo- em perspectiva. Aps a reviso, tambm falaremos um pouco dos
diferentes modos concei le encapsulamento dos componentes.
Registradores
Fm registrador um dispositivo capaz de armazenar informaes. O nvel de micropro
o sempre tem alguns registradores disponveis para conter as informaes
necessrias processamento da instruo que est sendo correntemente interpretada.
Conceitualmente, istradores so o mesmo que memria principal, a diferena que os
registradores esto lente localizados dentro do prprio processador, de modo que
eles podem ser lidos e escritos rapidamente do que palavras na memria principal,
que usualmente esto em pastilhas as. Mquinas maiores e mais caras normalmente
possuem mais registradores do que as res e mais baratas, que precisam usar a
memria principal para armazenar resultados interme s. Em alguns computadores, um
grupo de registradores, numerados O, 1, 2 n-1, vel ao nvel de microprogramao,
e chamado armazenamento local ou memria de iho.
Im registrador pode ser caracterizado por um nico nmero: quantos bits ele pode
armazenar. 4.1 mostra um registrador de 16 bits com a conveno de numerao de
bits utilizada livro. A informao colocada num registrador permanece l at que
outra informao a tua. O processo de ler a informao de um registrador no afeta
o contedo do mesmo. tras palavras, quando um registrador lido, uma cpia de seu
contedo feita e o original ado intacto no registrador.
Barramentos
Im barramento uma coleo de fios usados para transmitir sinais em paralelo.
Tipicamente, rramentos so usados para permitir que o contedo de um registrador
possa ser copiado utro. Diferente dos barramentos de sistema que estudamos no
captulo 3, esses barramentos conectam dois dispositivos e, portanto, no h
necessidade de linhas de endereo e linhas ntrole extensivo. As n linhas de dados e
uma ou duas linhas de controle geralmente so mtes. Barramentos so usados porque a
transferncia paralela de todos os bits de uma muito mais rpida do que a
transferncia serial bit a bit.
Jm barramento pode ser unidirecional ou bidirecional. Um barramento unidirecional
s transferir dados em um sentido, enquanto que um barramento bidirecional pode
transferir nos dois sentidos, mas no em ambos simultaneamente. Barramentos
unidirecionais so mente utilizados para conectar dois registradores, um dos quais
sempre a origem e o sempre o destino. Barramentos bidirecionais so tipicamente
utilizados quando qualquer um conjunto de registradores pode ser a origem e
qualquer outro pode ser o destino.
tuitos dispositivos so capazes de se conectarem e de se desconectarem
eletricamente dos nentos aos quais esto fisicamente ligados. Estas conexes podem
ser feitas ou desfeitas Lnossegundos. Um barramento cujos dispositivos possuem essa
propriedade chamado de
Nmerodobit 1514131211109 8 7 6 5 4 3 2 1 O
1 0 0 1 0
1 Um registrador de 16 bits pode conter 16 bits de informao.
130 ORGANIZAO ESTRUTURADA DE COMPUTADORES
barramento Iri-state, pois cada linha pode ser 0,1 ou estar desconectada.
Barramentos so comumente usados quando h muitos dispositivos ligados a um
barramento, todos ( potencialmente colocar informaes neste ltimo.
Na maioria das microarquiteturas, alguns registradores esto conectados a um ou mau
mentos de entrada e a um ou mais barramentos de sada. A Fig. 4.2(a) mostra um regi
de 8 bits conectado a um barramento de entrada e a um barramento de sada. O regi
consiste em oito flip-flops tipo D, cada um conectado ao barramento de sada
atravs buffer no-inversor. Cada um armazena 1 bit. O registrador possui dois
sinais de contro (Clock, que na realidade significa "carrega registrador") e OE
(Output Enable, habilita sada), ambos conectados a todos os flip-flops.
Normalmente, ambos os sinais esto em seu quiescente, mas ocasionalmente eles podem
ser ativados, fazendo com que a ao correspo acontea.
Barramento
de entrada
D D D D D D JD ID
Registrador
de 8 bits _______
Sinais de
controle
Lo ________ ___ ___ ___ ___
100 101 03 04 05 6
a
Barrarnento
de sada
(a)
Do barramento C Para e
16 barran
CK OE1 0E2
(b)
Fig. 4.2 (a) Detalhe de um registrador de 8 bits conectado a um barramento de
entrada e um bar] de sada. (b) Representao simblica de um registrador de 16
bits com um barramento de entrad barramentos de sada.
O NVEL DE MICROPROGRAMAO 131
ando CK est desativado, o contedo do registrador no afetado pelos sinais do
barra-
Quando CK ativado, o registrador carregado a partir do barramento de entrada.
o OE desativado, o registrador desconectado do barramento de sada e
efetivamente le existir em relao aos outros registradores do barramento. Quando
OE ativado, o do do registrador colocado no barramento de sada.
outro registrador, R, tiver sua entrada conectada ao barramento de sada deste
registrador, [ transferir informao deste registrador para R. Para faz-lo, OE
deve ser ativado ido ativo por tempo suficiente para que a sada do barramento se
torne estvel. Ento, CK do registrador R deve ser ativada, carregando R a partir
do barramento. A operao ilitar a sada de um registrador em um barramento para
que outro registrador possa obter valor ocorre freqentemente no nvel de
microprogramao, como veremos em breve. um segundo exemplo de registradores e
barramentos, a Fig. 4.2(b) mostra um registrador iits com dois barramentos de
sada, cada um controlado por um sinal OE diferente.
Multiplexadores e Decodificadores
circuitos que possuem uma ou mais linhas de entrada e calculam um ou mais valores a
que so determinados unicamente pelas entradas atuais so chamados circuitos
combina- Dois dos mais importantes so os multiplexadores e os decodificadores. Um
multiplexador entradas de dados (linhas individuais ou barramentos), uma sada de
dados da mesma que as entradas e uma entrada de controle de n bits que seleciona
uma das entradas eciona para a sada. A Fig. 4.3(a) mostra um multiplexador com
dois barramentos como i. O sinal de controle de 1 bit seleciona A ou B como sada.
A Fig. 3.12 mostra o circuito n multiplexador de oito entradas.
inverso de um multiplexador um demultiplexador, que direciona sua entrada nica
para suas 2 sadas, dependendo do valor de suas n linhas de controle.
itro importante circuito combinatrio o decodificador, que possui n linhas de
entrada has de sada, numeradas de O a 2 - 1. Se o nmero binrio nas linhas de
entrada to a linha de sada k ser 1 e todas as outras linhas de sada sero O. Um
decodificador tem exatamente uma linha de sada em 1, com as restantes em O. A Fig.
4.3(b) ilustra camente um decodificador de 4-para-16; a Fig. 3.14 mostra o circuito
para um decodificador
inverso de um decodificador um codificador, que possui 2 entradas e n sadas.
Somente
ha de entrada pode estar em 1, e seu nmero, em binrio, aparece na sada.
Entrada
A 8
Entrada
'Ir
Decodificador4-para.16
Sada
Sada
(a) (b
(a) Um multiplexador 2-para-!. (b) Um decodificador 4-para-16.
132 ORGANIZAO ESTRUTURADA DE COMPUTADORES
4.1.4 ALUs e Deslocadores
Todo computador precisa, de alguma maneira, realizar operaes aritmticas. O c
mais simples apenas um somador, que pega duas entradas de n bits e produz sua
soma sada. Um circuito aritmtico mais geral a ALU (Arithmetic Logical Unit), ou
Unidade e Aritmtica. Ela tambm possui duas entradas de dados e uma sada de
dados, mas t possui algumas entradas e sadas de controle. A ALU da Fig. 4.4(a) tem
dois bits de F e F que determinam qual a funo que a ALU deve realizar. A ALU que
usarerr nosso exemplo pode calcular A + B, A AND B, A e tambm A. As duas primeiras
f so auto-explicativas; a terceira simplesmente copia A para a sada; a quarta
produz o i de A. A terceira funo pode parecer intil, mas veremos mais tarde para
que ela A Fig. 3.20 mostra uma ALU de quatro funes que opera em um bit de dado.
Rep este circuito n vezes e alimentando o vai-1 do bit i para o bit i + 1. podemos
fazer 11ff de n bits que calcula AND, OR, NOT e adio.
Uma ALU pode tambm ter sadas de controle. Sadas tpicas so linhas que est
1 quando a sada da ALU negativa, quando zero, quando existe um vai-1 do bit d
alta ordem, ou quando ocorreu overflow. O exemplo da Fig. 4.4(a) tem duas sadas de
co
N, que indica que a sada da ALU negativa, e Z, que indica que a sada da ALU
O bit N apenas uma cpia do bit de mais alta ordem da sada. O bit Z o NOR d
os bits de sada da ALU.
Embora algumas ALUs possam tambm realizar operaes de deslocamento, na r das
vezes necessrio ter uma unidade de deslocamento separada. Este circuito pode d
uma entrada multibit de 1 bit para a esquerda ou direita, ou, ainda, no realizar
nenhum d mento. A Fig. 4.4(b) o smbolo que usaremos para um deslocador; um
circuito desi pode ser encontrado na Fig. 3.17.
4.1.5 Relgios (Clocks)
Os circuitos de computadores so normalmente acionados por um relgio, um dis que
emite uma seqncia peridica de pulsos. Estes pulsos definem os ciclos de mquina.
E cada ciclo de mquina, ocorre alguma atividade bsica, tal como a execuo de uma
microins E freqentemente til dividir o ciclo em subciclos, de modo que diferentes
partes da microin! possam ser realizadas em uma ordem bem definida. Por exemplo, as
entradas para a ALU ser colocadas disponveis e se tornarem estveis antes que a
sada possa ser armazenada.
A Fig. 4.5(a) mostra um relgio simblico com quatro sadas. A de cima a sada pr
as outras trs so derivadas dela pela insero de diversos atrasos nas linhas de
sada. O primrio mostrado na Fig. 4.5(b) (linha superior) tem uma largura de pulso
igual a um do perodo do ciclo. As outras trs sadas so obtidas por atraso de
uma, duas e tr
F S
F
FIA, B)
(a) (b)
Fig. 4.4 (a) Uma ALU. (b) Um deslocador.
O NVEL DE MICROPROGRAMAO 133
1 subciclo
1 ciclo 1
HuH 1 1 1 1
- f1 f1 JL SL
- fL JL 1 __ __
(a) (b)
5 (a) Um relgio com quatro sadas. (b) O diagrama de temporizao de sada.
ara do pulso. O resultado um circuito que divide cada ciclo em quatro subciclos
de
durao. Para mais detalhes, veja a Fig. 3.21.
ira provocar quatro transies diferentes que devem ocorrer em um ciclo em uma
certa
o projetista do computador pode fazer um AND do sinal habilitador de cada um com
nha diferente do relgio. A transio ligada linha de relgio primria ocorrer
primeiro, sio ligada linha de relgio com o menor atraso ocorrer em segundo
lugar, e assim inte.
Memria Principal
s processadores precisam ser capazes de ler dados da memria e escrever dados na
memria. oria dos computadores possui um barramento de endereo, um barramento de
dados e rramento de controle para a comunicao entre a CPU e a memria. Para ler
da memria, coloca um endereo de memria no barramento de endereo e estabelece os
sinais de le apropriados, ativando RD (READ), por exemplo. A memria, ento, coloca
o contedo tado no barramento de dados. Em alguns computadores, a leitura/escrita
da memria a, isto , a memria deve responder dentro de um tempo fixo. Em
outros, a memria Jemorar quanto quiser, sinalizando a presena de dados usando uma
linha de controle o terminar.
scritas na memria so feitas de modo similar. A CPU coloca o dado a ser escrito no
lento de dados e o endereo a ser armazenado no barramento de endereos, e ento VR
(WRITE). (Uma alternativa para RD e WR ter MREQ, que indica que se deseja
quisio de memria, e RW, que distingue leitura de escrita.)
m acesso memria quase sempre consideravelmente mais demorado que o tempo neces
ara executar uma nica microinstruo. Conseqentemente, o microprograma deve
manter res corretos nos barramentos de dados e endereos por vrias
microinstrues. Para simpli sta tarefa, muitas vezes conveniente ter-se dois
registradores, o MAR (Memory Address 'r, ou registrador de endereo de memria) e o
MBR (Memory Buffer Register, ou registrador los de memria), que alimentam os
barramentos de endereos e dados, respectivamente. s nossos propsitos, ser
conveniente organizar os barramentos como indicado na Fig. mbos os registradores
ficam entre a CPU e o barramento do sistema. O barramento de os unidirecional em
ambos os lados e carregado do lado da CPU quando a linha itrole ativada. A
sada para as linhas de endereo do sistema est sempre habilitada ssivelmente
apenas durante as leituras e escritas, o que requer uma linha de habilitao ia
ativada pelo OR de RD e WR (no mostrado)]. A linha de controle de MBR faz ue o
dado seja carregado do barramento de "Entrada de dados" no lado da CPU. A e "Sada
de dados" est sempre habilitada. O barramento de dados do sistema bidirecional,
sada de MBR quando WR ativado e carregando MBR quando RD ativado.
134 ORGANIZAO ESTRUTURADA DE COMPUTADORES
CPU Barramento
_________ Barramento
Ende::: de endereo
Barramento
de dados
Saida de dados ________ __________
Entradadedados< MBR
Controle
Ssnal RD
Sinal WR
Fig. 4.6 Os registradores usados para acionar os barramentos de endereo e dados.
4.1.7 Encapsulamento de Componentes
Nas sees anteriores revimos vrios circuitos que podem ser combinados para form
computador. Estes circuitos so comercialmente disponveis em vrias formas
conceitualr diferentes. A maneira mais direta em encapsulamento MSI (Medium Scale
Integration, ou mi o em mdia escala), com cada pastilha contendo um componente:
por exemplo, um registr uma ALU ou um deslocador. Esta abordagem ilustrada na
Fig. 4.7(a). Os componente ento, interligados para formar o computador. Como
existe uma grande variedade de pas MSI de alta velocidade e de baixo custo
disponveis, muitos computadores foram constr desse modo.
O principal inconveniente de construir um computador a partir de componentes MS
grande nmero de pastilhas necessrias que ocupam muitas placas, consomem muita eu
e dissipam uma quantidade de calor significativa. Outra tcnica utilizar
pastilhas bit-slice. pastilha bit-slice tem, por exemplo, 1 bit para os
registradores, ALU e outros compon A Fig. 3.20 mostra como uma ALU bit-slice de 1
bit por dentro. Poderamos facilmente est esse projeto para adicionar, por
exemplo, 16 registradores de 1 bit, um deslocador de e outros componentes com
largura de 1 bit. Pegando, digamos, 32 pastilhas desse tipo e colocan lado a lado,
obtemos uma mquina com 16 registradores de 32 bits, uma ALU de 32 bitt deslocador
de 32 bits, e assim por diante.
Alternativamente, com apenas 16 pastilhas poderamos construir uma mquina de 16
A tcnica de bit-slice fornece ao projetista a capacidade de compor facilmente uma
m
com qualquer largura de palavra. So amplamente disponveis pastilhas bit-slice de
2 ou m
4 hits. A Fig. 4.7(b) mostra uma mquina de 8 bits construda a partir de quatro
unidades bi
de 2 bits. Em geral, a abordagem bit-slice requer menos pastilhas e muito menos
tem
projeto que a abordagem MSI, mas usualmente produz mquinas mais lentas.
Uma terceira tcnica para combinar os componentes colocar um processador com em
uma nica pastilha [ a Fig. 4.7(c)]. Enquanto isto obviamente reduz drasticame
nmero de pastilhas (para uma pastilha), tambm tem algumas desvantagens. Para com
a tecnologia necessria para encapsular grande nmero de componentes em uma
pastilha dife da utilizada para pastilhas MSI ou bit-slice e normalmente produz
mquinas mais lentas. disso, as tecnologias tanto de projeto quanto de fabricao
so excessivamente complica caras. Ao contrrio, qualquer engenheiro eletrnico
competente pode projetar um compu simples usando pastilhas MSI ou bit -slice sem
muitos problemas. Do ponto de vista de um fabri de computador que espera construir
computadores por vrios anos, provavelmente vale a dominar as tecnologias
necessrias para a fabricao de processadores em uma nica pas para uma companhia
que precisa apenas de uma mquina de uso especfico, provavelmente
L
O NVEL DE MICROPROGRAMAO 135
Registradores
_____ _____ II _______
liii
I\\I I\\I
(b) (cl
.7 Trs formas de construir um computador. (a) Pastilhas MSI. (b) Bit-slice. (c)
Pastilhas LSI.
m as opes: usar um processador disponvel comercialmente, contratar algum para
projetar
icar uma pastilha de uso especfico, ou constru-la a partir de componentes MSI ou
bit-slice.
UM EXEMPLO DE MICROARQUITETURA
gora que j revisamos todos os componentes bsicos com os quais se constri o nvel
icroprogramao, o momento de vermos como eles so conectados. Como, nesta rea,
incpios gerais so poucos e dispersos, introduziremos o assunto atravs de um
exemplo tado.
As Vias de Dados
s vias de dados de nossa microarquitetura exemplo esto mostradas na Fig. 4.8. (As
vias dos correspondem quela parte da CPU que contm a ALU, suas entradas e suas
sadas.) )ossuem 16 registradores idnticos de 16 bits, denominados PC, AC, SP, e
assim por diante, rmam uma memria de rascunho acessvel apenas ao nvel de
microprogramao. Os registra- rotulados O, + 1 e -1 sero usados para armazenar as
constantes indicadas; o significado ornes dos outros registradores ser explicado
mais tarde. (Na realidade, O no foi utilizado ossos exemplos simples, mas
provavelmente o seria em uma mquina mais complicada; Lalquer forma, foi includo
porque temos mais registradores do que podemos usar.) Cada rador pode dar sada de
seu contedo em um ou nos dois barramentos internos, o barramento barramento B, e
cada um pode ser carregado a partir de um terceiro barramento interno, ramento C,
como mostra a figura.
)s barramentos A e B alimentam uma ALU de largura de 16 bits, que pode realizar
quatro es: A + B, A AND B, A e NOT A. A funo a ser executada especificada pelas
duas de controle da ALU, F e F A ALU gera dois bits de status, com base na sada
corrente
136 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Barra- Barra-
Barra- mento mento
mento A B
c
Para o barramento
de endereos
Para o barramento MAR -
de dados M
Fig. 4.8 As vias de dados da mieroarquitetura exemplo utilizada neste captulo.
L
O NVEL DE MICROPROGRAMAO 137
U: N, que ligado quando a sada da ALU negativa, e Z, que ligado quando a la
ALU zero.
sada da ALU entra em um deslocador, que pode desloc-la de 1 bit em qualquer
direo, huma. E possvel executar um deslocamento de 2 bits esquerda do contedo
de um ador, R, calculando R + R na ALU (que um deslocamento de 1 bit para a
esquerda) o deslocando a soma de outro bit esquerda utilizando o deslocador.
em o barramento A, nem o barramento B, alimenta a ALU diretamente. Em vez disso, m
alimenta um latch (isto , um registrador) que, por sua vez, alimenta a ALU. Os
latches cessrios porque a ALU um circuito combinatrio - ela calcula
continuamente a sada ir das entradas correntes e do cdigo de funo. Esta
organizao pode causar problemas :ular, por exemplo, A := A + B. Como A est sendo
armazenado, o valor no barramento iea a se modificar, fazendo com que a sada da
ALU, e portanto tambm o barramento modifiquem. Conseqentemente, um valor errado
pode ser armazenado em A. Em outras as, na atribuio A := A + B, o A do lado
direito o valor original de A, e no alguma a bit a bit dos valores velho e novo.
Inserindo latches nos barramentos A e B, podemos Lar l os valores originais de A e
B no incio do ciclo, de modo que a ALU fica protegida idanas nos barramentos
enquanto um novo valor est sendo armazenado na memria cunho (scratchpad). A carga
dos Iatches controlada por L e L
ale a pena notar que nossa soluo para este problema (isto , a insero de !
atches na da ALU) no a nica. Se todos os registradores fossem f7ip-flops em vez
de latches, um projeto de dois barramentos seria tambm possvel, carregando os
operandos nos barra s A e B no incio do ciclo e lendo o resultado de um dos
barramentos mais tarde, no Os compromissos entre os projetos de dois e trs
barramentos envolvem complexidade, lismo e quantidade de ligaes. Um tratamento
mais detalhado dessas consideraes est ) escopo deste livro.
ra a comunicao com a memria, inclumos um MAR e um MBR na microarquitetura. R
pode ser carregado a partir do Iatch B, em paralelo com a operao da ALU. A linha
itrola a carga do MAR. Nas escritas, o MBR pode ser carregado com a sada do
deslocador, ralelo, ou no lugar de uma escrita na memria de rascunho. M controla a
carga de MBR r da sada do deslocador. M e M controlam leituras e escritas da
memria. Nas leituras, ) lido da memria pode chegar entrada esquerda da ALU
atravs do multiplexador licado por Amux na Fig. 4.8. A linha de controle, A
determina se o latch A ou o que deve alimentar a ALU. A microarquitetura da Fig.
4.8 similar a vrios bit-slices veis comercialmente.
Microinstrues
ira controlar as vias de dados da Fig. 4.8, precisamos de 61 sinais. Estes podem
ser divididos
ve grupos funcionais, como descrito abaixo.
sinais para controlar a carga do barramento A a partir da memria de rascunho
sinais para controlar a carga do barramento B a partir da memria de rascunho
sinais para controlar a carga da memria de rascunho a partir do barramento C
sinais para controlar os latches A e B
sinais para controlar a funo da ALU sinais para controlar o deslocador
sinais para controlar o MAR e o MBR
sinais para indicar leitura da memria e escrita na memria
sinal para controlar o Amux
os valores dos 61 sinais, podemos realizar um ciclo nas vias de dados. Um ciclo
consiste car valores nos barramentos A e B, armazen-los nos dois latches de
barramento, passar res atravs da ALU e do deslocador e, finalmente, armazenar o
resultado na memria unho e/ou MBR. Alm disso, o MAR pode tambm ser carregado, e
um ciclo de memria ). Como uma primeira aproximao, podemos ter um registrador de
controle de 61 bits, n bit para cada sinal de controle. Um bit em 1 significa que o
sinal est ativado, e em
138 ORGANIZAO ESTRUTURADA DE COMPUTADORES
O significa que ele est desativado.
Entretanto, pelo preo de um pequeno aumento na circuitaria, podemos reduzir con
velmente o nmero de bits necessrio para controlar as vias de dados. Para comear,
16 bits para controlar a entrada do barramento A, o que permite 216 combinaes de
registr fonte. Apenas 16 dessas combinaes so permitidas ou seja, apenas um dos
16 registr de cada vez. Portanto, podemos codificar a informao sobre o barramento
A em 4 bits um decodificador para gerar os 16 sinais de controle. O mesmo se aplica
ao barramento B.
A situao ligeiramente diferente para o barramento C. Em princpio, so
possveis arm mentos simultneos mltiplos na memria de rascunho, mas este aspecto
virtualmente utilizado na prtica, e a maioria das implementaes no o prov.
Assim, tambm codific o controle do barramento C em 4 bits. Tendo economizado 3 x
12 = 36 bits, precisamos de 25 bits de controle para acionar as vias de dados. Lo e
L sempre so necessrios em in:
bastante determinados, de forma que so supridos pelo relgio, deixando-nos com 23
controle. Um sinal adicional que no estritamente necessrio, mas que
freqentemen um para habilitar/inibir o armazenamento do valor existente no
barramento C na mi de rascunho. Em algumas situaes, deseja-se meramente executar
uma operao da ALi gerar os sinais N e Z, mas no se quer armazenar o resultado.
Com este bit extra, que d naremos ENC (ENable C, ou habilita C), podemos indicar se
o barramento C deve ser arma:
(ENC = 1) ou no (ENC = O).
Neste ponto, podemos controlar as vias de dados com um nmero de 24 bits. N agora
que RD e WR podem ser utilizados para controlar a carga de MBR a partir do barn de
dados do sistema e para habilitar a sada de MBR para o harramento de dados do s
respectivamente. Esta observao reduz o nmero de sinais de controle independentes
para 22.
O prximo passo no projeto da microarquitetura inventar um formato de microin
contendo 22 bits. A Fig. 4.9 mostra um formato desse tipo, com dois campos
adicionais, e ADDR, que sero descritos em breve. A microinstruo contm 13
campos, 11 do so os seguintes:
AMUX controla a entrada esquerda da ALU: O - Iatch A, 1 = MBR
ALU -funodaALU:O-A+B,1 =AANDB,2=A,3=A
SH - funo do deslocador: O = nenhum deslocamento, 1 - direita, 2 - es
MBR carrega MBR a partir do deslocador: O = no carrega, 1 - carrega MBR
MAR carrega MAR a partir do Iatch B: O = no carrega, 1 - carrega MAR
RD requisita leitura de memria: O - nenhuma leitura. 1 = carrega MBR
da memria
WR - requisita escrita na memria: O = nenhuma escrita, 1 = escreve o co
de MBR na memria
ENC controla armazenamento na memria de rascunho: O = no armazena, 1
zena
C seleciona registrador para armazenamento se ENC - 1: O - PC, 1 - AC
B - seleciona fonte do barramento B: O = PC, 1 = AC, etc.
A - seleciona fonte do barramento A: O = PC, 1 - AC, etc.
Bitsl 2
2
2
11111
4
4
4
8
1AIC
MI
D
lul
1
ALUI
1
1
SH
1
1B
Ii E
IRIRID
1 1
C
1
1 B
1 A
1
1
1
ADDR
1
AMUX COND ALU SH MBR,MARRD,WF
O lalch A O - nau desvie O A B O no desloque O nao
1 MBR 1 - desvie se N 1 1 A ANDA 1 desloquei bil esq 1 50
2 O 2-A 2-desloquelbitdir
3 desvie sempre 3 A 3 (no usado)
Fig. 4.9 O layout da microinstruo para controlar as vias de dados da Fig. 4.
O NVEL DE MICROPROGRAMAO 139
lem dos campos completamente arbitrria. Esta ordem foi escolhida para minimizar
os
nentos de linhas na figura subseqente. (Na realidade, este critrio no to
maluco como
cruzamentos de linhas em figuras geralmente correspondem a cruzamentos de fios em
de circuito impresso ou em pastilhas, que causam problemas em projetos bidimensio
Temporizao de Microinstrues
pesar de que nossa discusso de como uma microinstruo pode controlar as vias de
dados te um ciclo esteja quase completa, negligenciamos um assunto at agora: a
temporizao. ido bsico de ALU consiste em utilizar os latches A e B, prover tempo
para que a ALU eslocador executem seu trabalho e armazenar os resultados. E bvio
que esses eventos i ocorrer nesta seqncia. Se tentarmos armazenar o valor
existente no barramento C na iria de rascunho antes que os latches A e B sejam
carregados, ser armazenado lixo em dados teis. Para conseguir o seqenciamento
correto de eventos, vamos agora introduzir
lgio de quatro fases, isto , um relgio com quatro subciclos, como o da Fig. 4.5.
Os
s chave durante cada um dos suhciclos so:
Carregar a prxima microinstruo a ser executada em um registrador chamado MIR
(Microinstruction Register), o registrador de microinstruo.
Colocar os contedos dos registradores nos barramentos A e B e armazen-los nos
latches
A e B.
Agora que as entradas esto estveis, dar tempo para que a ALU e o deslocador
produzam
uma sada estvel, e carregar o MAR se requisitado.
Agora que a sada do deslocador est estvel, armazenar o valor existente no
barramento
C na memria de rascunho e carregar o MBR, se for necessrio.
Fig. 4.10 um diagrama de blocos detalhado da microarquitetura completa de nossa
na exemplo. Pode parecer complicado inicialmente, mas vale a pena estud-lo
cuidadosa Ao compreender totalmente cada bloco e cada linha, estar bem encaminhado
no entendi do nvel de microprogramao. O diagrama de blocos tem duas partes: as
vias de esquerda, que j discutimos em detalhe, e a seo de controle, direita,
que veremos
maior e mais importante item na seo de controle da mquina a memria de
controle. nemria rpida especial onde as microinstrues so mantidas. Em
algumas mquinas, memria somente para leitura; em outras, ela memria de leitura
e escrita. Em nosso )lo, as microinstrues tero largura de 32 bits e o espao de
endereamento das microins s consistir em 256 palavras, de forma que a memria de
controle ocupar um mximo x 32 = 8.192 bits.
'orno qualquer outra memria, a memria de controle precisa de um MAR e de um MBR.
aremos o MAR de MPC (MicroProgram Counter, ou contador de microprograma), porque
iica funo apontar para a prxima microinstruo a ser executada. O MBR apenas
, corno mencionado acima. Note que a memria de controle e a memria principal so
etarnente diferentes, a primeira guarda o microprograma, e a segunda, o programa na
gem de mquina convencional.
partir da Fig. 4.10 fica claro que a memria de controle tenta continuamente copiar
a instruo endereada pelo MPC para o MIR. Entretanto, o MIR somente carregado
te o subciclo 1, como indicado pela linha tracejada vinda do relgio para ele.
Durante ros trs subciclos ele no afetado, independente do que ocorre com MPC.
urante o suhciclo 2, o MIR fica estvel, e os vrios campos comeam a controlar as
vias dos. Em particular, A e B fazem com que os dados sejam colocados nos
barramentos Os blocos decodificador A e decodificador B no diagrama de blocos
provem a decodificao )ara-16 de cada campo necessrio para acionar as linhas OE1
e 0E2 nos registradores Fig. 4.2(b)1. O relgio ativa os latches A e B durante este
subciclo, provendo entradas is para a ALU durante o resto do ciclo. Enquanto os
dados esto sendo colocados nos nentos A e B, a unidade de incremento na seo de
controle da mquina calcula MPC
1
140 ORGANIZAO ESTRUTURADA DE COMPtJTADORES
Fig. 4.10 O diagrama de blocos completo da nossa microarquitetura exemplo.
+ 1, preparando a carga da prxima microinstruo da sequncia durante o ciclo
seguinte. pondo estas duas operaes, a execuo de instruo pode ser acelerada.
No terceiro subciclo, d-se tempo ALU e ao deslocador para a produo de res
vlidos. O campo AMUX da microinstruo determina a entrada esquerda da ALU; a da
direita sempre o latch B. Embora a ALU seja um circuito combinatrio, o tem ela
gasta para calcular uma soma determinado pelo tempo de propagao de vai-1, pelo
atraso normal das portas. O tempo de propagao de vai-! proporcional ao nn hits
da palavra. Enquanto a ALU e o deslocador esto calculando, o MAR carregado do
barramento B, se o campo MAR da microinstruo for 1.
Durante o quarto e ltimo subciclo, o valor existente no harramento C pode ser arma
de volta na memria de rascunho e no MBR, dependendo de ENC e MBR. O bloco n
"decodificador C" pega ENC, a quarta linha do relgio, e o campo C da microinstru
entradas e gera os 16 sinais de controle. Internamente, ele realiza uma
decodificao de 4- do campo C e ento faz um AND de cada um destes sinais com um
sinal derivado d da linha do subciclo 4 com ENC. Assim, um registrador da memria
de rascunho son carregado se prevalecerem trs condies:
O NVEL DE MICROPROGRAMAO 141
ENC = 1.
o subciclo 4.
O registrador foi selecionado pelo campo C.
. tambm carregado durante o subciclo 4 se MBR = 1.
dois sinais que controlam a memria, RD e WR, so ativados se estiverem presentes
R. Na verdade, os campos correspondentes em MIR agem com latches.
Seqenciamento de Microinstrues
nica considerao pendente como a prxima microinstruo escolhida. Embora
algum seja suficiente para buscar a prxima microinstruo da seqncia, algum
mecanismo 'rio para permitir desvios condicionais no microprograma, para
possibilitar que ele tome s. Por esta razo, deixamos dois campos em cada
microinstruo: ADDR, que o endereo ssora potencial da microinstruo corrente,
e COND, que determina se a prxima microins ser buscada de MPC + 1 ou de ADDR.
Toda microinstruo contm potencialmente vio condicional. Esta deciso foi tomada
porque desvios condicionais so muito comuns ;roprogramas, e, ao permitir que toda
microinstruo tenha duas sucessoras possveis, o-las de execuo mais rpida do
que a alternativa de estabelecer alguma condio em icroinstruo e depois test-la
na prxima. A maioria das microarquiteturas existentes ossa estratgia de uma forma
ou outra.
escolha da prxima microinstruo determinada pelo bloco rotulado "Lgica de
microsse mento" durante o subciclo 4, quando os sinais N e Z da sada da ALU so
vlidos. deste bloco controla o multiplexador M (Mmux), que roteia MPC + 1 ou ADDR
para Je onde ser buscada a prxima microinstruo. Fornecemos ao microprogramador
quatro s quanto seleo da prxima microinstruo. A escolha indicada fazendo o
campo igual a:
No desvie; a prxima microinstruo ser tomada de MPC + 1
Desvie para ADDR se N = 1
Desvie para ADDR se Z = 1
Desvie para ADDR incondicionalmente
a de microsseqenciamento combina os dois bits da ALU, N e Z, e os dois bits de
COND,
e R (Right) , isto , esquerda e direita, para gerar uma sada. O sinal correto
Mmux = LRN + LkZ + LR = RN + LZ + LR
significa INCLUSIVE OR. Em palavras, o sinal de controle para Mmux 1 (roteando
para MPC) se LR 012 e N = 1, ou LR 10 e Z = 1, ou LR 112. Caso contrrio, e a
prxima microinstruo na seqncia buscada. O circuito para a gerao do sinal
pode ser construdo a partir de componentes SSI, como na Fig. 3.3(b), ou ser parte
PLA, como na Fig. 3.16.
ra tornar nossa mquina exemplo ligeiramente mais real, vamos assumir que um ciclo
iria principal tome mais tempo que uma microinstruo. Em particular, se uma
microins inicia uma leitura memria principal, fazendo RD = 1, ela tambm deve
ter RD = 1 ma microinstruo executada (que pode ou no estar localizada no
prximo endereo nria de controle). O dado torna-se disponvel duas
microinstrues aps a leitura ter iciada. Se o microprograma no tem nada mais
til a fazer na microinstruo seguinte niciou a leitura de memria, a
microinstruo simplesmente tem RD = 1 e efetivamente liada. Do mesmo modo, uma
escrita na memria tambm gasta dois tempos de microins para completar.
142 ORGANIZAO ESTRUTURADA DE COMPUTADORES
4.3 UM EXEMPLO DE MACROARQUITETURA
Para continuar nosso exemplo do nvel de microprogramao, vamos agora nos volt a
arquitetura do nvel de mquina convencional a ser suportada pelo interpretador em
e na mquina da Fig. 4.10. Por convenincia, vamos chamar a arquitetura da mquina
c 2 ou 3 de macroarquitetura, em contraste com o nvel 1, a microarquitetura. (Para
os prc deste captulo, vamos ignorar o nvel 3, porque suas instrues so
praticamente aqu nvel 2, e as diferenas no so importantes aqui.) Similarmente,
as instrues de nvel chamadas macroinstrues. Assim, pela durao deste
captulo, as instrues normais de MOVE e outras do nvel de mquina convencional
sero chamadas macroinstrues. (O de repetir este comentrio que alguns
montadores tm a facilidade de definir "macr tempo de montagem, que no so de
maneira alguma relacionados ao que queremos di macroinstrues.) Vamos algumas
vezes nos referenciar nossa mquina exemplo de como Mic-1, e mquina de nvel 2
como Mac-1. Antes de descrever a Mac-1, enti vamos digressar ligeiramente para
motivar seu projeto.
4.3.1 Pilhas
Uma macroarquitetura moderna deve ser projetada com as necessidades das lingua alto
nvel em mente. Uma das questes mais importantes de projeto o endereament
ilustrar o problema que deve ser resolvido, considere o programa Pascal da Fig. 4.1
programa principal inicializa dois vetores, x e y, com valores tais que Xk = k e Yk
= Ento, ele calcula o produto escalar (tambm chamado de produto interno) dos dois
Sempre que ele precisa multiplicar dois nmeros positivos pequenos, ele chama a
fun (Imagine que o compilador para um microcomputador e que somente implementa
um subc de Pascal, no incluindo o operador de multiplicao.)
Linguagens estruturadas em blocos, como Pascal, so normalmente implementada modo
que, quando se sai de um procedimento ou funo, a rea de memria que estav
utilizada para variveis locais liberada. A maneira mais fcil para se conseguir
isto de uma estrutura de dados denominada pilha. Uma pilha um bloco contguo de
memria C( alguns dados e um apontador de pilha (SP, de Stack Pointer) dizendo onde
est o topo d O fundo da pilha est em um endereo fixo, e no mais nos
interessar. A Fig. 4.12 (a) uma pilha ocupando seis palavras de memria. O fundo
da pilha est no endereo 40 topo da pilha, para onde SP aponta, est no 4015.
Nossas pilhas crescero dos ender memria mais altos para os mais baixos, mas a
escolha oposta igualmente boa.
Muitas operaes so definidas para pilhas. Duas das mais importantes so PUSH ) Y.
PUSH avana o apontador da pilha (decrementando-o, no nosso exemplo) e ento ar X
na posio de memria agora apontada por SP. PUSH aumenta o tamanho da pilha item.
POP Y, em contraste, reduz o tamanho da pilha, armazenando o item do topo em Y, e
ento removendo-o atravs do incremento do apontador de pilha com o tam item
retirado. A Fig. 4.12(b) mostra como a pilha da Fig. 4.12(a) fica depois que uma
contendo 5 foi empilhada.
Outra operao que pode ser realizada numa pilha avanar o apontador da pi
realmente inserir qualquer dado. Isto normalmente feito na entrada de um procedim
funo, para reservar espao para as variveis locais. A Fig. 4.13(a) mostra como a
n poderia ser alocada durante a execuo do programa principal da Fig. 4.11.
Arbitrari assumimos que a memria consiste em 4096 palavras de 16 bits e que as
palavras 4021 so usadas pelo sistema operacional, e, portanto, no esto
disponveis para armazenar v A varivel Pascal k armazenada no endereo 4020. (Os
endereos so dados em d O arranjo x requer 20 palavras, de 4000 a 4019. O arranjo
y comea em 3980 para y at 3999 para y Enquanto o programa principal estiver
executando fora de pmul, o valor 3980, indicando que o topo da pilha est em 3980.
Quando o programa principal deseja chamar pmul, ele primeiro empilha os parm
chamada, 2 e k, e ento executa a instruo CALL, que empilha o endereo de retc
modo que pmul saber para onde retornar quando ele terminar. Quando a rotina pmul
O NVEL DE MICROPROGRAMAO 143
o, SP 3977. A primeira coisa que ela faz avanar o apontador da pilha de 2,
para duas palavras para suas prprias variveis locais, p e j. Neste ponto, SP
3975, como o na Fig. 4.13(b). As cinco palavras no topo da pilha constituem a
estrutura de pilha rame) usada por pmul; elas sero liberadas quando ela terminar.
As palavras 3979 e o rotuladas a e b porque esses so os nomes dos parmetros
formais de pmul. mas, riente, elas contm 2 e k, respectivamente.
onfigurao da pilha aps pmul ter retornado e escalar ser chamada mostrada na
Fig. Quando escalar chama pmul, a pilha fica como mostrada na Fig. 4.13(d). Agora
vem ma. Que cdigo o compilador precisa gerar para acessar as variveis locais e os
parmetros (? Se ele tentar ler p usando uma instruo como MOVE 3976,ALGUMLUGAR,
pmul r quando chamada do programa principal, mas no quando chamada de escalar.
Similar- MOVE 3971,ALGUMLUGAR funcionar quando chamada de escalar, mas no quando
a do programa principal. O que realmente necessrio uma forma de dizer "busque
-a uma posio acima do apontador de pilha corrente". Em outras palavras, o Mac-1
program Produto Escalar (output);
Este programa inicializa dois vetores, x e y, de 20 elementos cada,
ento calcula o seu produto escalar:
xlii * ylIl + .c121 * y12 + ... + 4201 * y
const mar - 2(1: tamanho dos vetores
type Pequeno/ti! = 0 11)1);
- arras II n 1 or P*'qii*'tio liii;
rar k : itireger:
5', 5. cc:
function prnul (a, li: Pequeno/ti!): integer:
(Esta funo multiplica seus dois parmetros e retorna o produto.
Ela realiza a multiplicao por adies sucessivas. var p. /: tnteger:
begin )0: reserve espao na pilha para p ej)
if (a = 0) or (b = 0) then (1: se um dos dois for 0, resultado o 0)
pmul:= O (2: funo retorna 0)
else
begin
p : = 0; (3: inicializa p}
forj:= 1 toado (4: somebapavezes}
p := p e h; (5: faa a adio)
pmul := p (6: atribua resultado funo)
end
end; )pmul) (7: remova locais e retorne valor)
procedure escalar (var 5': vet,- 'ar resp: integer);
(Calcula o produto escalar de v e x e o retorna em resp. var soma, i: integer;
begin (8: reserve espao na pilha para soma e i)
soma := 0; (9: soma vai acumular o produto escalar)
for i:= 1 to rnax do (10: loop para todos os elementos)
soma : = soma + pmu/ (xlil, vliD; (II: acumule uni termo)
resp := soma (12: copie o resultado para resp)
end; (escalar) (13: remova soma e i e retorne)
hegin ) 14: reserve espao para k, xc y)
for k := 1 to max do (15: inicializao do loop)
begin
xlkI := k; )16: inicialize x)
ylkJ : = pmal (2, k) e 1 (17: inicialize y}
end,
escalar (y, 1<); ) 18: chame escalar)
writeln (k) (19: imprima os resultados)
end.
(a) Um programa Pascal para calcular um produto escalar.

144 ORGANIZAO ESTRUTURADA DE COMPUTADORES


Fig. 4.11(b) ProdutoEscalar em linguagem de montagem.
precisa de um modo de endereamento que busque ou armazene uma palavra a uma
conhecida relativa ao apontador de pilha (ou algum modo de endereamento equivalen'
4.3.2 O Conjunto de Macroinstrues
Com esse modo de endereamento em mente, estamos agora prontos para analisar a a do
Mac-!. Basicamente, ela consiste em uma memria com 4096 palavras de 16 bits e tr
dores visveis ao programador de nvel 2. Os registradores so o contador de progi
o apontador de pilha, SP, e o acumulador, AC, que usado para movimentao
clculos e outros propsitos. So providos trs mods de endereamento: direto,
indire As instrues que usam o endereamento direto contm um endereo absoluto de
m 12 bits nos 12 bits de baixa ordem. Tais instrues so teis para acessar
vanveis gl como x na Fig. 4.11. O endereamento indireto permite que o programador
calcule uir de memria, coloque-o em AC e ento leia ou escreva a palavra
endereada. Esta endereamento muito genrica e usada para acessar elementos de
arranjos, en coisas. O endereamento local especifica uma distncia a partir de SP
e usado pa variveis locais, como acabamos de ver. Juntos, estes trs modos
provem um sistema de mento simples, mas adequado.
O conjunto de instrues do Mac-1 mostrado na Fig. 4.14. Cada instruo c cdigo
de operao (opcode) e, algumas vezes, um endereo de memria ou uma
(DEFINA ALGUNS SMBOLOS
K = 4020
INSP
2
REMOVA PARMETRO/
X 4800
ADDL
SOMA
AC SOMA PMUL(...
Y - 3980
STOL
SOMA
SOMA SOMA * PMUL
A - 4
LOCO
1
ESTE NO FINAL DO LC
B
ADDL
1
/AC -1
P-i
STOL
1
1-1+1
- O
SUBO
C20
AC .- 1 MAX
v - 5
JNEO
L3
DESVIE SE 1< MAX
RESP - 4
JZER
L3
(DESVIE SEI - MAX
SOMA - 1
LODL
SOMA
12
- O
PUSH
LODL
RESP
(EMPILHE SOMA AC - ENDEREO DE R
JUMP MAIN
(COMECE NO PROGRAMA PRINCIPAL
POPI
RESP - SOMA
PMUL.
DESP 2 '
/0
INSP
2
13
LODL A
li
RETN
RETORNE
INZE ANOTZ
(DESVIE SE A <>0
LOCO O
/2
PRINCIPAL:
DESP
41
14
JUMP DONE
/RETORNEO
LOCO
1
13
ANOTZ:
LODL B
AC .- B
STOD
K
K NO LOCAL
JNZE BNOTZ
(DESVIE SE Be>S
L4.
LODD
K
16
LOCO O
/2
PUSH
EMPILHE K
JUMP DONE
/RETORNEO
LOCO
X 1
AC -(ENDEREODE:
BNOTZ
LOCO 5
/3
ADD
11
AC = X * K 1
STOL P
(P -O
POPI
X - K
LOCO 1
/4
LOCO
2
17
STOL J
/J .- 1
PUSH
PREPARE PMUL(2,
LODL A
/0 LOOP PODE SER EXECUTADO'
LOGO
K
PREPARE PMUL (2, K)
JNEO L2
1 e 0, NO FAA O LOOP
PUSH
AMBOS OS PARMFTP.
JZER L2
A-O. NO FAA O LOOP
CALL
PMUL
PMUL(2,K(
LI
LODL P
/5
INSP
2
REMOVA PARMETRO
ADDL B
AC-P+B
ADGO
Cl
AC.-2K
STOL P
P - P * a
PUSH
PREPARE YIKI - 2 K
LOCO 1
TESTE NO FINAL DO LOOP
LOCO
Y 1
AC - (ENDEREO DE
ADDL 1
/AC:=J*1
ADDD
K
AC.-Y+K 1
STOL 1
li -1 + 1
POPI
YIKI -2 K 1
SUBL A
AC - 1 A
LOCO
1
TESTE NO FINAL DO O
JNEG LI
DESVIE SEi> A
ADDD
K
AC - K + 1
JZER Li
DESVIE SE J - A
STOD
81
K - 81 1
L2
LODL P
/6
SUBO
C20
AC - K MAX
DONE
INSP 2
/7
JNEG
L4
DESVIE SE 81 e O
RETN
RETORNE
JZER
LOCO
L4 Y
DESVIE SE K MAX 18
ESCALAR
DESP 2
8
PUSH
EMPILHE O ENDERE1
LOCO O
/9
LOCO
81
AC-ENDEREODEI
STOL SOMA
SOMA-O
PUSH
EMPILHE ELE TAMB
LOCO 1
/10
CALL
ESCALAR
CHAMADA DE PROCEI
STOL 1
1 - 1
INSP
2
REMOVA PARMETRC
L3
LOCO XI
ii
LODD
K
19
ADDL 1
AC X * 1 1
PUSH
PREPARE WRITELN(K)
PSHI
EMPILHE XIII
CALL
OUTNUMI
ROTINA DE BIBLIOTE(
LODL V
AC :- ENDEREO DO VETOR
INSP
1
REMOVA PARAM
ADDL 1
/AC - V * 1
CALL
STOP
FIM DA TAREFA
SUBO Ci
(V COMEA EM 1, NO O
P8011
(EMPILHE V
CI.
1
CONSTANTE 1
CALL OMUL
(PMUL(X VII
C2O
20
CONSTANTE 20
O NVEL DE MICROPROGRAMAO 145
01
1 it
PROGRAMA PROGRAMA
PC- PUSH5 PUSH5
1 PCI
SP 5
SP 7 4015v
4016 9 40161 9
4017 2 40171 2
PILHA PILHA
4018 8 40181 8
4019 4 4019 4
4020 5 4020 5
(a> (b)
12 (a) Uma pilha. (b) A pilha depois de empilhar 5.
neira coluna mostra o cdigo binrio da instruo. A segunda mostra seu mnemnico
linguagem de montagem. A terceira mostra seu nome, e a quarta descreve o que ela
ravs de um trecho em Pascal. Nestes trechos, mix] se refere palavra de memria
x.
LODD carrega o acumulador com a palavra de memria especificada em seus 12 bits
a ordem. LODD usa ento endereamento direto, enquanto LODL carrega o acumulador
i palavra a uma distncia x acima de SP, usando portanto o endereamento local.
LODD, ADDD e SUBD realizam quatro funes bsicas usando endereamento direto, e
LODL, ADDL e SUBL realizam as mesmas funes usando endereamento local.
neo instrues de desvio so fornecidas, um desvio incondicional (JUMP) e quatro
condi (JPOS, JZER, JNEG e JNZE). JUMP sempre copia seus 12 bits de baixa ordem para
ador de programa, enquanto os outros quatro somente o fazem se a condio
especificada ficar.
DCO carrega uma constante de 12 bits, na faixa de 0 a 4095 (inclusive), em AC. A
operao i POPI, que retira uma palavra da pilha e a armazena na posio de
memria endereada O. PUSH e POP so teis na manipulao da pilha de vrias
maneiras. SWAP troca o do de AC com SP, o que til quando SP precisa ser
aumentado ou diminudo de uma Jade no conhecida no tempo de compilao. Ela
tambm til para inicializar SP no ia execuo. INSP e DESP so usados para alterar
SP de valores conhecidos em tempo ripilao. Devido falta de espao de
codificao, as distncias aqui foram limitadas a Finalmente, CALL chama um
procedimento, salvando o endereo de retorno na pilha, 'N retorna de um
procedimento, desempilhando o endereo de retorno e colocando-o
t agora, nossa mquina no tem instrues de entrada/sada. Nem estamos a fim de
acres alguma agora. Ela no precisa delas. Em vez disso, a mquina usar E/S
mapeada em ia. Uma leitura do endereo 4092 resultar numa palavra de 16 bits com o
prximo caractere
146 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Fig. 4.13 Instantneos da memria durante a execuo de ProdutoEscalar. (a) Pilha
durante a e do programa principal. (b) Pilha durante a execuo de pmul. (e) Pilha
durante a execuo de (d) Pilha durante a execuo de pmul, quando chamado de
escalar.
ASCII do dispositivo de entrada padro nos 7 bits de baixa ordem e zeros nos 9 bits
ordem. Quando um caractere estiver disponvel em 4092, o bit de alta ordem do regis
de status de entrada, 4093, ser ativado. A leitura de 4092 limpa 4093. A rotina de
e normalmente ficar num ioop esperando que 4093 se torne negativo. Quando isso
acoi a rotina de entrada carregar AC com 4092 e retornar.
A sada ser feita usando um esquema similar. Uma escrita no endereo 4094 peg
sP
Estrutura de pilha para
pmul
p
ender.
ret.
b
a
y li]
Estrutura
de pilha para
pmul
p
ender.
re
b
a
soma
ender
ret
resp
v
y [
sP
3975
3976
3977
3978
3979
3980
3970
3971
3972
3973
3974
3975
3976.
3977
3978
3979
3980
Estrutura
de pilha para
escalar
soma
ender
rei
resp
v
vil]
3980
y [
3975
3976
3977
3978
3979
3980
- sP
3999
4000
y [
x [
3999
4000
y 120) x [
3999
4000
y [
xli]
4019
4020
3999
4000
y [
x [
k
4019
4020
k
4019
4020! k
4095
4019
4020
(a)
k
4095 1
(b)
4095 l_________
(e)
4095
(d)
O NVEL DE MICROPROGRAMAO 147
Binrio Mnemnico Instruo Significado
xxxxxxxxxxxx
LODO
Carrega direto
ac := m [
xxxxxxxxxxxx
STOD
Armazena direto
m Ixl := ac
xxxxxxxxxxxx
ADDD
Adiciona direto
ac := ac + m [
xxxxxxxxxxxx
SUBD
Subtrai direto
ac := ac - m lx
xxxxxxxxxxxx
JPOS
Desvia se positivo
8 ac _ O then pc x
xxxxxxxxxxxx
JZER
Desvia se zero
if ac = O then Pc := x
xxxxxxxxxxxx
JUMP
Desvia
pc x
xxxxxxxxxxxx
LOCO
Carega constante
ac x (0 x 4095)
xxxxxxxxxxxx
LODL
Carga total
ac := m Isp + xl
xxxxxxxxxxxx
STOL
Armazena local
m ]x - sp] := ac
xxxxxxxxxxxx
ADDL
Adiciona local
ac := ac + m Isp + xl
xxxxxxxxxxxx
SUBL
Subtrai local
ac := ac - m Isp -i- xl
xxxxxxxxxxxx
JNEG
Desvia se negativo
if ac < O then pc x
xxxxxxxxxxxx
JNZE
Desvia se no zero
if ac O then pc x
xxxxxxxxxxxx
CALL
Chama procedimento
sp := sp - 1; m lspl := pc; pc x
000000000000
PSHI
Empilha indireto
sp sp - 1; m IspI := rn laci
001000000000
POPI
Desempilha indireto
m [ := m IspI; sp = SP 1- 1
010000000000
PUSH
Coloca na pilha
sp := sp + 1; m lspI := ac
011000000000
POP
Retirada pilha
ac mlsp];sp := sp + 1
100000000000
RETN
Retorna
Pc = m IspI; sp := sp - 1
101000000000
SWAP
Troca ac, sp
tmp := ac, ac := sp; sp := tmp
llooyyyyyyyy
INSP
Incrementa sp
sp := sp + y (0 y 255)
llloyyyyyyyy
DESP
Decrementa sp
sp = sp - y (0 y 255)
:xxxxxx um endereo de mquina de 12 bits; na coluna 4, ele chamado de x
'yy uma constante de 8 bits; na coluna 4, ele chamado de y.
14 O conjunto de instrues do Mac-!.
de baixa ordem da palavra escrita e os copiar para o dispositivo de sada padro.
O alta ordem do registrador de status de sada, palavra 4095, ser ento
desativado, voltando ativo de novo quando o dispositivo de sada estiver pronto
para aceitar um novo caractere. rada e sada padres podem ser um teclado de
terminal e um vdeo, ou uma leitura de s e uma impressora, ou alguma outra
combinao.
omo um exemplo de como algum programa usando este conjunto de instrues, veja
4.11(b), que o programa da Fig. 4.11(a) compilado para linguagem de montagem por
impilador que no faz nenhuma otimizao. (Cdigo otimizado faria com que o exemplo
difcil de acompanhar.) Os nmeros O a 19 nos comentrios, indicados por uma barra
na gem de montagem, foram colocados para tornar mais fcil a ligao entre as duas
metades ira. OUTNUM1 e STOP so rotinas de biblioteca que realizam as funes
bvias (imprimir mero e parar a execuo, respectivamente).
EM EXEMPLO DE MICROPROGRAMA
endo especificado em detalhes tanto a microarquitetura quanto a macroarquitetura, o
proble stante a implementao: Com que se parece um programa sendo executado na
primeira
148 ORGANIZAO ESTRUTURADA DE COMPUTADORES
e interpretando a segunda, e como ele funciona? Antes que possamos responder a
essas qw
devemos considerar cuidadosamente em que linguagem queremos fazer nosso
microprograi
4.4.1 A Microlinguagem de Montagem
Em princpio, poderamos escrever microprogramas em binrio, 32 bits por microinst
Programadores masoquistas poderiam at gostar disso; certamente, ningum mais iria.
assim, precisamos de uma linguagem simblica na qual possamos expressar
microprogramas notao possvel fazer com que o microprogramador especifique uma
microinstruo por identificando cada campo no-nulo e seu valor. Por exemplo, para
somar AC e A, e arm o resultado em AC, poderamos escrever
ENC=1,C=1,B=1,A= 10
Muitas linguagens de microprogramao se parecem com isto. Entretanto, esta notao
te
Uma idia muito melhor usar uma notao de linguagem de alto nvel, mantendo o co
bsico de uma linha de fonte por microinstruo. Conceitualmente, poder-se-iam
escrever mic gramas em uma linguagem de alto nvel comum, mas como a eficincia
crucial em microprogi vamos nos ater linguagem de montagem, que definimos como
uma linguagem simblic tem um mapeamento um-para-um para instrues de mquina.
Lembre-se de que uma inefic de 25% num microprograma torna toda a mquina 25% mais
lenta. Vamos chamar nossa mi guagem de montagem de alto nvel de "MAL" (Micro
Assembly Language), que, em porti pode significar "doente", como voc poder ficar
se forado a escrever muitos microprog complexos para mquinas idiossincrticas. Em
MAL, armazenamentos nos 16 registradoi rascunho, MAR ou MBR so representados por
comandos de assinalamento. Assim, o ex acima, em MAL, ficaria ac := a + ac. (Como
nossa inteno tornar MAL parecid Pascal, adotaremos a conveno usual de Pascal
de nomes em itlicos minsculos para os id cadores.)
Para indicar o uso das funes 0, 1, 2 e 3 da ALU, podemos escrever, por exemplo,
ac := a + ac, a := band(ir, smask), ac := a, e a := inv(a)
respectivamente, onde band significa "AND booleano" e mv significa inverso.
Deslocan podem ser representados pelas funes lshift, para deslocamentos para a
esquerda, e rshift deslocamentos direita, como em
tir : = lshift(tir + tir)
que coloca tir em ambos os barramentos A e B, realiza a adio e desloca a soma 1
bit
a esquerda antes de armazen-la de volta em tir.
Desvios incondicionais podem ser manipulados com comandos goto; desvios condic
podem testar ti ou z, por exemplo:
if ti then goto 27
Assinalamentos e desvios podem ser combinados na mesma linha. Entretanto, um pe
problema aparece se desejarmos testar um registrador, mas no fazer um
armazenamento. especificamos qual registrador deve ser testado? Para resolver este
problema, introduzir pseudovarivel alu, qual pode ser assinalado um valor apenas
para indicar o contedo da Por exemplo,
alu : = tir; if n then goto 27
significa que tir deve passar pela ALU (cdigo da ALU = 2), de modo que o seu bit d
ordem possa ser testado. Note que o uso de alu significa que ENC = 0.
Para indicar leituras e escritas memria, vamos apenas colocar rd e wr no
programa 1
O NVEL DE MICROPROGRAMAO 149
A C
M O A M M E
U N L S B A R W t'J
Comando X D U H R R D D C C B A ADDR
pc;rd
O
O
2
0
O
1
1
0
O
O
O
O
00
O
O
2
O
O
O
1
O
O
O
O
O
00
br
1
O
2
O
O
O
O
O
1
3
O
O
00
DC+1
O
O
O
O
O
O
O
O
1
O
6
O
00
ir; mbr ac; wr
O
O
2
O
1
1
O
1
O
O
3
1
00
ir; ifnthengoto 15
O
1
2
O
O
O
O
O
O
O
O
4
15
nv(mbr)
1
O
3
O
O
O
O
O
1
1
O
O
00
shift (tir); if n then goto 25
O
1
2
2
O
O
O
O
1
4
O
4
25
ac; li z then goto 22
O
2
2
O
O
O
O
O
O
O
O
1
22
band (ir, amask); goto O
O
3
1
O
O
O
O
O
1
1
8
3
00
sp+(-1);rd
O
O
O
O
O
O
1
O
1
2
2
7
00
shift (ir + ir); if n then goto 69
O
1
O
2
O
O
O
O
1
4
3
3
69
5 Alguns comandos em MAL e as microinstrues correspondentes.
m das vrias partes do comando fonte , em princpio, arbitrria, mas, para
melhorar ibilidade, vamos tentar arranj-las na ordem em que so executadas. A Fig.
4.15 mostra exemplos de comandos MAL, junto com as microinstrues correspondentes.
Um Exemplo de Microprograma
iegamos finalmente ao ponto em que podemos juntar todos os pedaos. A Fig. 4.16
:roprograma que roda no Mic-1 e interpreta Mac-1. E um programa
surpreendentemente
- apenas 79 linhas. Agora a escolha dos nomes para os registradores de rascunho na
bvia: PC, AC e SP so usados para armazenar os trs registradores de Mac-1. IR
istrador de instruo e contm a macroinstruo que est sendo correntemente
executada. uma cpia temporria de IR, usada para decodificar o cdigo de operao
(opcode). registradores seguintes contm as constantes indicadas. AMASK a mscara
de endereos, (octal), e usado para separar opcode de bits de endereo. SMASK a
mscara de )00377 (octal), e usado nas instrues INSP e DESP para isolar a
distncia de 8 bits. registradores restantes no tm funo assinalada e podem ser
usados como o micropro lor quiser.
mo todo interpretador, o microprograma da Fig. 4.16 tem um loop principal que
busca, ica e executa instrues do programa que est sendo interpretado, neste
caso, instrues ,l 2. Seu loop principal comea na linha 0, onde ele inicia
buscando a macroinstruo Enquanto espera que a instruo chegue, o microprograma
incrementa PC e continua r o sinal de barramento RD. Quando ela chega, na linha 2,
ela armazenada em IR iltaneamente, o bit de alta ordem (bit 15) testado. Se o
bit 15 for 1, a decodificao ia na linha 28; caso contrrio, ela continua na linha
3. Assumindo por enquanto que io um LODD, o bit 14 testado na linha 3, e TIR
carregado com a instruo 1 deslocada de 2 bits para a esquerda, uma vez usando o
somador e outra usando o deslocador. ue o bit N de status da ALU determinado pela
sada da ALU, na qual o bit 14 ais alta ordem, pois IR + IR desloca IR 1 bit para
a esquerda. A sada do deslocador ta os bits de status da ALU.
das as instrues que tm 00 em seus dois bits de alta ordem eventualmente chegam 4
para ter o bit 13 testado. As instrues que comeam com 000 vo para a linha 5, as
comeando com 001 vo para a linha 11. A linha S um exemplo de uma microinstruo
150 ORGANIZAO ESTRUTURADA DE COMPUTADORES
com ENC = O; ela apenas testa TIR, mas mio o altera. Dependendo do resultado desi
o cdigo para LODD ou STOD selecionado.
Para LODD. o microcdigo deve primeiro buscar a palavra endereada diretament
gando os 12 hits de baixa ordem de IR em MAR. Neste caso, os 4 hits de alta ord
0: mar : = pc; rd; (/oop principal)
1: pc = pc-c 1; rd; (incremente pc(
2: Ir ;= mhr; ifn then goto 28; (salva, decoditica mhr(
3: (ir : = lshif( (ir + ir); if a then goto 19;
4: (ir = lshift ((ir); if n then goto 11 ((X)Ox ou 001 x?
5 alu = (ir; if n then goto 9; (0000 OU 0)5)!'.'
6: mar := ir; rd; (00(5) - IODD
7: rd;
8; aC ; = mbr; goto 0;
9: mar ;= ir; tnhr := ac; wr; ( S
lO; wr goto 0;
11: alu := (ir; if a then goto 15; (04310 ou 00! 1'?(
12: mar ; = ir; rd; ((5)1)) = ADDD(
13; rd;
14; ac : = mhr + ar; goto 0;
IS: mar ;= ir; rd; (( SUBD(
16;ac:=ac-l- 1;rd; (NoIa;x -v= i + * no(V
17: a: = inc (mbr);
18; ac := ac + a; goto 0;
19; (ir ;= lshzf( ((ir); if n then goto 25; (OlOx ou 01 lx
20: alu := rir; if n then goto 23; (010)) ou 0101'?)
21: alu ;= ac; if a then goto 0; (1)100 = JPOS
22; pc := band (ir. amask); goto 0; (faa o desvio)
23: a/li ; - aC; if z then goto 22; (0 - JZER(
24; goto 0; (desvio falhou)
25; a/u;= (ir; if a then goto 27; (0110 OU 0111?)
26; pe := band (ir, amask); goto 0; (1)1 I JUMP}
27; ac ; = hand (ir, amask) ; goto 0; (1)111 = 1.0(0)
28: Or : = Ishif( (ir + ir); if a then goto 40; (1 ( ou 11 xx(
29: dr ;= Ishift (rir); if a then goto 35; ( lOOx ou l()lx?
30; aiit := ( if a then goto 33; (100)) ou 1001?)
31:a:= ir + sp; (0)00 = LODL}
32; mar ;= a; rd; goto?;
33; a := ir + sp; 1 S
34; mar ; = a; mbr ; = ac; wr; goto 10;
35: alu := rir; if a then goto 38; 1010 ou 101 1''
36; a := ir + sp; 1)11)) AI)DL
37; mar := a; rd; goto 13;
38: a := ir + sp; 1011 - SUBI
39; mar := a; rd; gotol6;
Fig. 4.16 O microprograma.
O NVEL DE MICROPROGRAMAO 151
40: (ir : = lshif ((ir); ir n then goto 46; (ilOx ou 1 lix?)
41: alu := ir; ifn then goto 44; (1100 ou Ii0l?}
42: alu := ac; ifn then goto 22; (1100 = JNEG}
43: goto 0;
44: alu : = ac; if z then goto 0; (1101 = JNZE}
45: pc : = band (ir, amask); then goto 0;
46: (ir := lshift ((ir); if n then goto 50;
4 := sp + (-1); (1110 = CALL}
48: mar : sp; mbr : = pc, wr;
49: pc := band (ir, amask); wr; goto 0;
50: (Ir := lshif( (ur); ir n then goto 65; {1 111, examine endereo}
51: (ir := lshif (tir); if n then goto 59;
52: alu : = (ir; if n then goto 56;
53: mar := ac; rd; (1111000 = PSI-11}
54: sp := sp + (-1); rd;
55: mar : = sp: wr; goto 10;
56: mar := sp; sp := sp + 1; rd; (1111001 = POPl}
57: rd;
58: mar : = ac; wr; goto 10;
59: alu : = (ir; if n then goto 62;
60: sp := sp + (-1); (1111010 = PUSH}
61: mar := sp; mbr := ac; wr; goto 10;
62: mar := sp; sp := sp + 1; rd; {iiii0i1 = POP}
63: rd;
64: aC: mbr; goto 0;
65: (ir := lshift ((ir); if n then goto 73;
66: alu : = (ir; if n then goto 70;
67: mar := sp; sp := sp + 1; rd; (1111100 = RETN}
68: rd;
69: pc:= mbr; goto 0;
70: a := ac; {i1ii1O1 = SWAP}
71: ac := sp;
72: sp : = a; goto 0;
73: alu : = tir; if n then goto 76;
74: a := band (ir, smask); {1111110 = INSP}
75: sp := sp + a, goto 0;
76: a := band (ir, smask); (1111111 = DESP}
77: a : = mv (a);
78: a := a + 1; goto 75;
1.16 (cont.)
zero, mas para STOD e outras instrues, no. Entretanto, como MAR s tem 12 bits
rgura, os bits de opcode no afetam a escolha da palavra lida. Na linha 7, o
microprograma
em nada a fazer, e portanto apenas espera. Quando a palavra chega, ela copiada
para
o microprograma desvia para o incio do ioop. STOD, ADDD e SUBD so similares. ico
ponto notvel relativo a elas como a subtrao feita. Ela usa o fato de que
1
152 ORGANIZAO ESTRUTURADA DE COMPUTADORES
x - y = x + (-y) = x + ( +1) = x + 1 +
em complemento de dois. A adio de 1 a AC feita na linha 16, que de outra manei]
desperdiada como a linha 13.
O microcdigo para JPOS comea na linha 21. Se AC < O, a condio de desvi e JPOS
terminado imediatamente atravs da volta ao ioop principal. Se, entretanto, O, os
12 bits de baixa ordem de IR so extrados, fazendo um AND deles com a mscara e
armazenando o resultado em PC. No h nenhum custo extra para remover os bits de
aqui, e assim podemos tambm faz-lo. Se isso tivesse custado uma microinstruo e
entanto, teramos que analisar cuidadosamente para ver se a existncia de lixo nos
4 alta ordem de PC poderia causar problemas mais tarde.
Em certo sentido, JZER (linha 23) funciona de maneira oposta a JPOS. Com JF a
condio for verificada, o desvio falha e o controle retorna ao loop principal. Com
se a condio for verificada, o desvio realizado. Como o cdigo para realizar o
des mesmo para todas as instrues de desvio, podemos economizar microcdigo
simplesmer para a linha 22 sempre que possvel. Este estilo de programao
geralmente seria cons grosseiro em um programa de aplicao, mas num microprograma
no existem barreiras. penho tudo.
JUMP e LOCO so imediatas, de modo que a prxima rotina interessante a ser ar a
para LODL. Primeiro, o endereo de memria absoluto a ser referenciado calculado
S( o deslocamento contido na instruo a SP. Ento, a leitura de memria
iniciada. C resto do cdigo o mesmo para LODL e LODD, vamos apenas usar as linhas
7 e 8 para Isto no apenas economiza memria de controle sem perda na velocidade de
execui tambm significa menos rotinas para depurar. Cdigo anlogo usado para
STOL, A SUBL. O cdigo para JNEG e JNZE similar a JZER e JPOS, respectivamente (e
contrrio). CALL primeiro decrementa SP, ento empilha o endereo de retorno, e fim
desvia para o procedimento. A linha 49 quase idntica linha 22; se fosse
exatamente a poderamos ter eliminado a 49 colocando um desvio incondicional para
22 em 48. Infeli precisamos continuar ativando WR por mais uma microinstruo.
Todas as macroinstrues restantes tm 1111 nos 4 bits de alta ordem, e ento a
decod
dos "bits de endereo" necessria para distingui-las. As rotinas reais so
imediatas, d
que no faremos mais comentrios sobre elas.
4.4.3 Comentrios sobre o Microprograma
Apesar de termos discutido o microprograma detalhadamente, vale a pena consider
alguns pontos. Na Fig. 4.16, incrementamos PC na linha 1. Isso poderia igualmente 1
feito na linha O, liberando a linha 1 para qualquer outra coisa enquanto esperava.
Nesta n
no h nada mais a fazer, mas numa mquina real o microprograma poderia usar esta
oport
para verificar os dispositivos de E/S esperando servio, refrescar RAM dinmica, ou
q
outra coisa.
Se deixarmos a linha 1 da maneira como est, entretanto, podemos acelerar a n
modificando a linha 8 para
mar := pc; ac mbr; rd; goto 1;
Em outras palavras, podemos iniciar a busca da prxima instruo antes de termos re
concludo a corrente. Esta habilidade prov uma forma primitiva de pipeline de
instru mesmo artifcio pode tambm ser aplicado s outras rotinas.
E claro que uma quantidade substancial do tempo de execuo de cada macroinsti
dedicada a decodific-la bit a bit. Esta observao sugere que poderia ser til
carregar sob o controle do microprograma. Em muitos computadores existentes, a
microarquiteb suporte de hardware para extrair opcodes de macroinstrues e coloc-
los diretamente n para realizar um desvio mltiplo. Se, por exemplo, pudssemos
deslocar IR de 9 bits direita, zerar os 9 bits superiores e colocar o nmero
resultante em MPC, teramos uma ram de 128 caminhos para as posies de O a 127.
Cada uma dessas palavras conteria a p
O NVEL DE MICROPROGRAMAO 153
instruo para a macroinstruo correspondente. Apesar de esta abordagem
desperdiar ria de controle, ela acelera bastante a mquina e, na prtica, quase
sempre utilizada.
N4o dissemos uma palavra sobre como a EIS implementada. Nem temos que faz-lo.
ido mapeamento de memria, a CPU no sabe a diferena entre endereos de memria
sdeira e registradores de dispositivos de EIS. O microprograma manipula leituras e
escritas luatro palavras do topo do espao de endereamento do mesmo modo que
qualquer outra ra ou escrita.
Perspectiva
A hora parece apropriada para parar por um minuto e refletir sobre o que mesmo a
oprogramao. A idia bsica comear com uma mquina com hardware simples. Em D
exemplo, ela consiste em pouco mais que 22 registradores, uma pequena ROM para
armaze nto do programa de controle, um somador, um incrementador, um deslocador e
algum ito combinatrio para multiplexao, decodificao e seqenciamento. Usando
este hardware, )S capazes de construir um software interpretador para executar as
instrues de uma mquina vel 2. Com o auxlio de um compilador, podemos traduzir
programas de linguagens de nvel em instrues de nvel 2, e ento interpretar
estas instrues, uma a uma.
Assim, para executar um programa escrito em uma linguagem de alto nvel, precisamos
eiro traduzi-lo para o nvel 2, e ento interpretar as instrues resultantes. O
nvel 2 efetiva- te serve como interface entre o compilador e o interpretador.
Embora, em princpio, o compi pudesse gerar microcdigo diretamente, isto
complicado e desperdia espao. Cada uma ossas macroinstrues ocupa uma palavra de
16 bits, enquanto que o microcdigo correspon e, excluindo a lgica de
decodificao de instruo, requer aproximadamente quatro microins es de 32 bits,
em mdia. Se fssemos compilar diretamente para o nvel 1, o armazenamento
requerido seria octuplicado. Alm disso, a rea adicional necessria uma memria
RAM ontrole, que muito mais cara devido sua alta velocidade. O uso da memria
principal microcdigo no desejvel porque ele resulta em uma mquina lenta.
A luz desses exemplos concretos, deve ficar claro por que as mquinas so agora
normalmente tadas como uma srie de nveis. Isto feito para eficincia e
simplicidade, pois cada nvel um outro nvel de abstrao. O projetista do nvel O
se preocupa sobre como comprimir ltimos poucos nanossegundos da ALU usando algum
novo algoritmo bacana para rduzir upo de propagao do vai-1. O microprogramador
se preocupa sobre como obter o melhor de cada microinstruo, tipicamente
explorando tanto do paralelismo inerente do hardware ito possvel. O projetista do
conjunto de macroinstrues se preocupa sobre como prover interface que tanto o
escritor de compilador quanto o microprogramador possam aprender star e que seja
eficiente ao mesmo tempo. Claramente, cada nvel tem diferentes objetivos, lemas,
tcnicas e, em geral, um ponto de vista diferente em relao mquina. Dividindo
oblema de projeto total da mquina em vrios subproblemas, podemos tentar dominar a
plexidade inerente ao projeto de um computador moderno.
PROJETO DO NVEL DE MICROPROGRAMAO
Como quase todas as coisas em cincia da computao, o projeto da microarquitetura
) de compromissos. Nas sees seguintes, enfocaremos algumas consideraes de
projeto is respectivos compromissos.
1 Microprogramao Horizontal versus Vertical
Provavelmente, a deciso chave quanta codificao deve ser colocada nas
microinstrues. Lgum fosse construir o Mic-1 em uma nica pastilha VLSI, ele
poderia ignorar as abstraes como registradores, ALU, e assim por diante, e
visualizar apenas todas as portas lgicas. fazer a mquina funcionar, certos sinais
so necessrios, tais como os 16 sinais OE para
rolar a sada dos registradores para o barramento A e os sinais que controlam a
funo
LU. Quando examinamos a ALU internamente, vemos que os circuitos internos so, na
154 ORGANIZAO ESTRUTURADA DE COMPUTADORES
realidade, controlados por quatro linhas, e no duas, porque no canto inferior
esquerdo 3.20 se encontra um circuito decodificador de 2-para-4. Em resumo, para
cada mquina conjunto de n sinais de controle, aplicados nos lugares apropriados,
pode fazer a mquina fui sem nenhuma decodificao.
Este ponto de vista leva a um formato de microinstruo diferente: com n bits de um
bit para cada sinal de controle. As microinstrues projetadas de acordo com esse p
so chamadas horizontais e representam um dos extremos de um espectro de possibi]
Na outra extremidade do espectro se situam as microinstrues com um pequeno nn
campos altamente codificados. Estas so denominadas verticais. Estes nomes vm de
cc artista poderia esboar suas respectivas memrias de controle: projetos do tipo
horizontal p uni nmero relativamente pequeno de microinstrues largas; os do tipo
vertical possuem microinstrues estreitas.
Entre estes dois extremos se encontram muitos projetos mistos. Nossas microinsi por
exemplo, possuem um nmero de bits, tais como MAR, MBR, RD, WR e AMU controlam
diretamente o funcionamento do hardware. De outro lado, os campos A, ALU requerem
alguma lgica de decodificao antes que eles possam ser aplicados s lgicas
individuais. Uma microinstruo extremamente vertical poderia ter apenas um que
fosse meramente uma generalizao de nosso campo ALU, e alguns operandos, c nossos
campos A, B e C. Em tal organizao, opcodes seriam necessrios para ler e na
memria principal, realizar microdesvios, e assim por diante, pois os campos que
coi estas funes em nossa mquina no estariam mais presentes.
Para tornar mais clara a distino entre microinstrues horizontais e verticais,
vamo reprojetar nosso exemplo de microarquitetura para usar microinstrues
verticais. Cada 01 truo conter agora trs campos de 4 bits, totalizando 12 bits,
contra os 32 da verso O primeiro campo o opcode, OP, que diz o que a
microinstruo faz. Os dois campos s so dois registradores, Ri e R2. Para executar
desvios, eles so combinados para fori nico campo de 8 bits, R. Uma microinstruo
tpica ADD SP,AC, que significa somado a SP.
A lista completa dos cdigos de operao das microinstrues para esta nova mqui
chamaremos de Mic-2, mostrada na Fig. 4.17. Desta lista fica claro que cada
microin realiza somente uma funo: se ela realizar uma adio, ela no pode tambm
deslocar,
o MAR, ou mesmo manter RD ativado. Com apenas 12 bits na microinstruo, s h para
especificar uma operao.
Agora precisamos refazer a Fig. 4.10 para refletir as novas microinstrues. O novo
di de blocos mostrado na Fig. 4.i8. A poro relativa s vias de dados,
esquerda, per idntica anterior. A maior parte do controle, direita, tambm
permanece a mesma. Pre ainda, especialmente, do MIR e de uma memria de controle
(embora os novos tenham de 12 bits, em vez de 32 bits). Os tamanhos e funes do
MPC, Mmux, incrementador, e lgica de microsseqenciamento so todos idnticos aos
do projeto horizontal. Aln precisamos de decodificadores 4-para-16 para os campos
Ri e R2, anlogos aos para C na Fig. 4.10.
Trs diferenas principais entre a Fig. 4.10 e a Fig. 4.18 so os blocos rotulados
NZ e decodificador OP. O AND necessrio porque o campo Ri agora alimenta tanto o
barr
A quanto o C. Um problema surge porque o barramento A carregado durante o
2, mas o barramento C no pode ser carregado na rea de rascunho at que os latcl
B estejam estveis, no subciclo 3. O bloco AND faz um AND dos 16 sinais decodificad
a linha do subciclo 4 proveniente do relgio e com um sinal proveniente do
decodificai
que equivalente ao antigo sinal ENC. O resultado que os 16 sinais que carregan
na rea de rascunho so ativados nas mesmas condies anteriores.
O bloco NZ um registrador de 2 bits que pode ser comandado para armazenar e
N e Z da ALU. Precisamos desta facilidade porque, no novo projeto, a ALU realizar
o
em uma microinstruo, mas os bits de status s sero testados a partir da
microinstruo st
Como a ALU no tem armazenamento interno, e N e Z so derivados da sada correni
N sendo o bit de alta ordem e Z o NOR de todos os bits de sada), ambos os sinais d
seriam perdidos depois de uma microinstruo se no fossem guardados em algum
lugar.
O elemento chave da nova microarquitetura o decodificador OP. Este bloco pr
O NVEL DE MICROPROGRAMAO 155
lrio Mnemnico Instruo Significado
00
ADD
Adio
ri := ri r2
til
AND
AND booleano
ri ri AND r2
10
MOVE
Move registrador
ri r2
iii
COMPL
Complemento
ri mv (r2)
00
LSHIFT
Deslocamento esquerda
ri /shift(r2)
01
RSHIFT
Deslocamento direita
ri : rshift (r2)
10
GETMBR
Armazena MBR em registrador
ri := mbr
11
TEST
Testa registrador
if r2 < O then n := frue; if r2 O then z frue
00
BEGRD
Inicio de leitura
mar ri; rd
01
BEGWR
Incio de escrita
mar ri; rnbr r2; wr
00
CONRD
Continua leitura
rd
01
CONWR
Continua escrita
wr
00
(No utilizado)
01
NJUMP
Desvie se N 1
If o then goto
10
ZJUMP
Desvie se Z - 1
if z then goto
11
UJUMP
Desvio incondicional
goto
6 * ri + r2
.17 Os opcodes do Mic-2.
do campo OPCODE de 4 hits, sinais que alimentam o bloco AND, a lgica de microsse
iamento, NZ, Amux, a ALU, o deslocador, MBR, MAR, RD e WR. A lgica de microsse
ciamento, a ALU e o deslocador requerem, cada um, dois sinais idnticos aos do
projeto ior. Ao todo, o decodificador OP gera 13 sinais distintos, baseados nos 4
hits de alta ordem icroinstruo corrente.
'ara cada um dos 16 cdigos de operao de uma microinstruo, o projetista da
mquina determinar quais dos 13 sinais vindos do decodificador OP esto ativados e
quais no esto. erdade, deve ser gerada uma matriz binria de 16 x 13 que fornea
o valor dc cada linha introle para cada um dos cdigos de operao (opcodes). A
matriz para o Mic-2 mostrada g. 4.19. As colunas esto rotuladas com os nomes dos
sinais. Os sufixos L e H significam 1 (Low) e alto (!-Iig/i), respectivamente, e se
aplicam somente aos dispositivos com duas de controle: a ALU, o deslocador e a
lgica de microsseqenciamento.
omo um exemplo de um cdigo de operao de uma microinstruo, considere BEGRD,
nicia uma leitura de memria. Ela utiliza a funo 2 da ALU (selecionar o
barramento le modo que ALUH = 1 e ALUL = 0. Ela tambm armazena o endereo em MAR e
o sinal RD. Todos os outros sinais de controle esto desativados. Considere agora
os desvios. manter a compatibilidade com a lgica de microsseqenciamento anterior,
preciso que MSLH MSLL seja 00 para no haver desvio, 01 para desviar se o bit N
estiver ativo. ra desviar se o bit Z estiver ativo, e 11 para desviar
incondicionalmente. (A compatibilidade iu propores to epidmicas na indstria de
computadores, que at as mquinas hipotticas vros-textos so compatveis com suas
predecessoras.) NJUMP gera 01, ZJUMP gera 10 e MP gera 11. Todos os outros opcodes
geram 00.
&gora vem a parte interessante. Como construir um circuito com quatro linhas de
entrada bits de opcode) e 13 linhas de sada (os 13 sinais de controle) que execute
a funo da 4.19? Resposta: utilize uma OU mais PLAs (ou ROMs). A Fig. 4.19 , na
verdade, uma ira pouco peculiar de representar 13 tabelas verdade de quatro
variveis, uma por coluna, o nmero da linha definindo implicitamente os valores
das quatro variveis. Assim, a questo
156 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Fig. 4.18 Uma microarquitetura com microinstrues verticais.
de como construir o circuito se reduz questo de como se implementa uma tabela v
A melhor forma com uma PLA de quatro entradas e 13 sadas. Se isso no estiver
disp trs PLAs 74S330 de 12 entradas e seis sadas tambm podem ser usadas. Se
denomit os quatro bits de opcode de A a D, do mais para o menos significativo,
ento algumas sero:
ALUL = J3tD + I3CD = J3D
SHH = Bdi
MAR = A + A = A
MSLH = ABCL + ABCD = ABC
Somente 15 dos termos produto so gerados internamente, pois AB no ocorre.
Agora, com o hardware completamente reprojetado, precisamos reescrever o micropro
Ele mostrado na Fig. 4.20. Os rtulos (labeis) foram mantidos para tornar mais
fcil a comp dos dois microprogramas. A sintaxe tambm foi mantida. Poderamos t-
lo escrito util uma notao de linguagem de montagem tpica - asse language - (por
exemplo, os o da Fig. 4.17), mas em vez disso utilizamos a MAL de novo, pois ela
mais fcil de s Note que os comandos em MAL da forma alu := reg usam a
microinstruo TEST para os bits N e Z. Tenha certeza de que voc entendeu a
diferena entre o microprograi
O NVEL DE MICROPROGRAMAO 157
Linhas de controle
ALUL SHL AMUX MAR RD MSLH
e da
instruo ALUH SHH NZ AND MBR WR MSLL
ADD
-1-
+
AND
+
+
+
MOVE
+
+
COMPL
+
+
+
-1-
LSHIFT
+
+
+
+
RSHIFT
+
+
-1-
+
GETMBR
+
+
-1-
+
TEST
+
-
BEGRD
--
+
+
BEGWR
+
+
+
-1-
CONRD
+
+
CONWR
+
+
NJUMP
-
-
ZJUMP
-
+
UJUMP
+
+
.19 Os sinais de controle para cada opcode de microinstruo. Um mais significa que
o sinal est um espao significa que ele est desativado.
o, como ele carregado na memria de controle, e a verso em linguagem de
montagem. parece no texto.
m geral, este microprograma mais simples que o primeiro, porque cada linha
executa ts 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 hits, para um total de 2528 bits
de armazena-
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
nica pastilha, ela tambm representa uma economia de 24% da rea da pastilha
necessria
i memria de controle, o que o torna mais fcil e mais barato para fabricar. A
desvantagem
a 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 urna 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 senado 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 : Ishij (rir);
1: rd; if n then goto 40;
pc = pc + 1; 29: tir : = lshifr (rir );
2: ir : mbr; ifn then goto 35:
rir : = lshifr (ir); 30: ala : = rir;
if n then goto 28; if n then goto 33;
3: rir : lshift(tir);
ifn then goto 19; 31: a : ir; {LODL}
4: rir := lshift (rir); a : a +
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: ae :- mbr.
a a +
goto 0;
34: mar : a; rnhr .- ac.
9: mar : ir; rnbr := ac; wr; {STOD} ar;
10: wr; goto 0;
goto 0;
35: alu := rir;
I alu : rir;
if n then goto 38;
ri then goto 15;
12: mar : ir; rd; {ADDD} 36: a : ir; ADDL}
13: rd; a : a -1- sp;
14: a : rnhr; 37: mar : a; rd;
aC:aC+a; rd;
goto 0; a : = mbr
15: mar : ir; rci; {SUBD} a . ac + a
16; rd; goto;
99: ac : aC + 1; 38: a : ir; {SUBL
17: a : mbr; a a +-
a : = irEi (a ); 39: mar : = a ; rd
18; ac : ac + a; rd;
goto 0; goto 99;
19: rir : lshifr(rir ); 40: rir := l,rhift (rir
if n then goto 25; if n then goto 46;
20: alu ; rir; 41 ala rir;
if n then goto 23; if n then goto 44;
21; ala : = aC; {JPOS} 42: alu ; = aC; {JNEG}
if n then goto 0; if n then goto 22;
22: C := ir; 43: goto 0;
= band (pC amask);
goto 0; 44: ala : = aC; {JNZE}
if: then goto 0;
23: alu : = aC; {JZER} 45 = ir;
if: then goto 22. C : = hand (pC. amask);
24: goto 0; goto 0;
25; alu : = rir; 46: rir : = Lhifr (rir
if n then goto 27; if a then goto 50;
26: C : ir;{J 47: ip := sp + -lr{CALL}
pc : handvc. amask); 48: mar := sp; mbr : PC; ar;
goto 0; wr;
49: C := ir;
27: ae : = ir; )LOCO} C : = hand (pc. amask);
ac : hand(ac. amask); goto 0;
goto 0;
Fig. 4.20 O microprograma para Mic-2.
O NVEL DE MICROPROGRANIAO 159
50: rir : /sh 64: ac
if n then goto 65; goto O;
51: rir : Ishift(tir);
65: tir lshifr (rir);
if n then goto 59;
if n then goto 73;
52: ala : rir;
66: ala : rir;
if n then goto 56;
if a then goto 70;
53: mar := ac; rd; {PSI-11}
67: mar :=sp;rd;{RETN}
r , 68: rd;
sp + -l); : + 1;
55: a : mbr;
69: pc:=mbr;
mar : = sp ; mbr : = a ; wr,
goto 0;
wr
goto 0; 70: a : ac; {SWAP}
71: ac: sp;
56: mar : sp; rd; {POPI} 7
57: rd; ' a.
goto 0;
sp : sp + 1;
73: ala : rir;
58. a .= mbr. ifn then goto 76;
mar : = ac ; mhr : = a ; wr;
74: a : = ir; {
goto 0; a : hand(a , smask);
59: ala := rir; 75: sp : sp - a,
if a then goto 62; goto 0;
+ (-l);{PUSH} 76: a : ir; {DESP
61: mar:=sp:mbr:=ae;wr; a:=hand(a
wr; 77: a : me(a);
goto 0; 78: a := a - 1;
sp : sp + a;
62: mar: sp;rd;{POP} goto 0
63: rd;
sp : .sp - 1;
.20 (cont.)
mquina microprogramada altamente vertical e uma hardwired (atravs de
interligaes is) fica ainda mais difcil. Para um tratamento mais completo de
codificao e paralelismo icrocdigo. veja 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 nanomemria, torna possvel interessantes
compromissos 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 a 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 iii microinstrues diferentes das
2 possibilidades so ente usadas, com m < a. Uma nanomemria especial com iii
palavras de w bits poderia ada para armazenar cada uma das microinstrues. Cada
microinstruo do programa original 'ia ento ser suhstituda 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 uni inteiro) hits. como mostrado . 4.21(b).
microprograma executado como se segue. A primeira palavra huscada da memria
160 ORGANIZAO ESTRUTURADA DE COMPUTADORES
- w bits Iog
J Microprograma J
4 wbits -
m Nanoprograma
(a) (b)
Fig. 4.21 (a) Um microprograma convencional. (b) O nanoprograma correspondente se
apenas m
trues diferentes ocorrem no microprograma.
de controle. Ela ento usada para selecionar uma palavra da nanomemria, que e
colocada no registrador de microinstruo. Os bits desse registrador so ento usad
controlar as portas lgicas durante um ciclo. No final do ciclo, a prxima palavra
da memria de controle, e o processo se repete.
Como um exemplo, suponha que o microprograma original tivesse 4096 x 100 b que
existissem apenas 128 microinstrues diferentes. Uma nanomemria de 128 x 100 b
suficiente para armazenar todas as microinstrues necessrias. A memria de
controb ento com 4096 x 7 bits, com cada palavra apontando para uma nanoinstruo.
A ec 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 1
mquina com dois nveis de memria de controle funcionaria mais lentamente que a
pois o ciclo de busca agora requer duas referncias a memria, uma para a memria
de e outra para a nanomemria. Estas duas buscas no podem ser sobrepostas.
Nanoprogramao mais efetiva quando as mesmas microinstrues so altamente ut Se
duas microinstrues que so quase a mesma pudessem ser contadas como sendo te a
mesma, o microprograma conteria uma quantidade menor de microinstrues distint uma
com uma freqncia de uso mais alta. Uma variante desta idia bsica permite exa
isso. Palavras na nanomemria podem ser parametrizadas. Por exemplo, duas microin
podem diferir apenas no campo que diz qual registrador deve ser conectado a algum
barr Colocando o nmero do registrador na memria de controle, em vez de na
nanomem , colocando zeros no campo de registrador das nanoinstrues), as duas
microinstrues p ambas apontar para a mesma nanopalavra. Quando a palavra
buscada e colocada no re de microinstruo, o campo de registrador pego da
memria de controle, em vez de da i mria. A montagem do registrador de
microinstruo parcialmente a partir da memria de e parcialmente a partir da
nanomemria obviamente requer hardware especial, mas e tem de especialmente
complexo. claro que o uso desta tcnica aumenta a largura da de controle, que
pode ser maior do que o ganho obtido por ter uma nanomemria menot
4.5.3 Melhorando o Desempenho
Embora o objetivo da nanoprogramao seja reduzir o tamanho da memria de mesmo ao
preo de uma execuo mais lenta, muito tempo e esforo foram gastos na inversa:
tentando acelerar a execuo, mesmo ao preo de mais memria de control dois
objetivos de projeto, aparentemente incompatveis, visam a interesses comerciais di
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.
t agora, tacitamente assumimos que todos os quatro subciclos tinham a mesma
durao. esmo tempo que esta abordagem simplifica, ela raramente resulta num
desempenho timo, rivariavelmente 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 la 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, ciclo 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 fica 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 po 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 Drnecem explicitamente a temponzao. 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
ira 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 overflow, 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 overfiow. (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 lexibilidade, muitas mquinas no possuem a
capacidade de testar individualmente bits tus 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=0 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
da resultado tambm so mostrados.
162 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Campo Desviar para
ADOR 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 execi o desvio. As microinstrues em 10001101 e 10000111 lidam com
desvios que tm suc 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 condi de 16 possibilidades. Portanto, eles no devem ser
escolhidos despreocupadamente.
Deve estar claro que, com esse tipo de controle de seqncia de microinstruo, a
loca das microinstrues na memria de controle torna-se uma verdadeira dor de
cabea. A pi microinstruo executada depois de um desvio condicional de 16
possibilidades deve conl 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 tc outros endereos, exceto aqueles da forma
xxxxllll, tambm podero ser necessrios ma ou mais tarde. A deciso deve ser feita
cuidadosamente, para evitar esgotar algum tipo de en Uma vez consumidos todos os
endereos pares, por exemplo, no ser mais possvel t 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 ur
funcionais e coloc-las como numa linha de montagem. Na Fig. 2.5, vimos como um de
cinco unidades funciona. Na Fig. 4.24, vemos que, se a instruo 1 buscada no 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:
incondi condicionais e loop. Um desvio incondicional diz ao computador para parar
de buscar ins 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 desv
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
de instruo
1
2
B
4
5
6
7
8
9
ticao de ;o
1
2
6
4
5
6
7
8
de endereo
1
2
B
4
5
6
7
de operando
1
2
B
4
5
6
o
1
2
B
4
5
4 Um pipeline de cinco estgios. Os nmeros so usados para rotular as instrues.
A instruo B um desvio condicional.
Instrues de loop so um caso especial importante de desvios condicionais, pois
conhecido que elas quase sempre tm sucesso.
)nsidere o que acontece com o pipeline da Fig. 4.24 quando uma instruo de desvio
onal, marcada B, encontrada. A prxima instruo a ser executada pode ser a que e
ao desvio, mas pode tambm estar no endereo para o qual deve ser desviado o
controle, lo de destino do desvio. Como a unidade que busca a instruo no sabe
qual at que o seja executado, ela pra, e no pode ir adiante at que o desvio
tenha sido executado.
lentemente, o pipeline esvazia. Somente depois do ciclo 7 ter sido completado
que qual a instruo que vem a seguir.
desvio efetivamente causou a perda de quatro ciclos, chamados de penalidade do
desvio. ma entre cada trs instrues sendo um desvio, fica claro que a perda de
desempenho ancial.
-ande quantidade de pesquisa tem tratado do problema de recuperar algum desse desem
(DeRosa e Levy, 1987; McFarling e Hennessy, 1986; Hwu et ai., 1989; e Lilja, 1988).
a mais simples a fazer assumir que o desvio no ser realizado, e apenas
continuar do 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 Ses atualmente no pipeline, algo chamado squashing, e comear de
novo.
uashing causa problemas prprios. Em algumas mquinas, como um subproduto do
clculo ereo, um registrador pode ser modificado. Se a instruo sendo apagada
modificou um s registradores, estes devem ser restaurados, o que significa que deve
haver um mecanismo rdar 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.
po mdio de execuo (em ciclos) pode ser calculado como a soma ponderada dos dois
'nstrues comuns e instrues de desvio.
tempo mdio de instruo = (1 - P + P + b) + (1 - P)(1)1
a lgebra revela que o tempo mdio de instruo 1 + bPJP A eficincia da execuo
11(1 + bP Com b = 4, P = 0,3 e P, = 0,65 (um valor tpico medido), a mquina a a
menos de 60% de sua velocidade potencial.
que se pode fazer para melhorar o desempenho? Para comear, se pudssemos predizer
maneira cada desvio seria realizado, poderamos buscar a instruo adequada e
eliminar lidade. Em nossa frmula para a eficincia, podemos ento substituir P,
por P a probabi 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
i de desvio que ele gera. Com instrues de loop, por exemplo, adivinhar que ela ir
de volta ao incio o correto na maioria das vezes. Durante o teste de uma
condio im como uma chamada de sistema retornando um cdigo de erro, a no
realizao do o que tem mais chance. Em muitos casos, instrues diferentes so
usadas para ess 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 ul o programa pode primeiro ser executado em um simulador, e o comportamento
de cad ser realmente guardado. Ento, o programa binrio pode ser alterado,
substituindo cad com o opcode apropriado (provavelmente ser
realizado/provavelmente no ser realizad
O outro mtodo de previso o dinmico. Durante a execuo, o microprogram uma
tabela dos endereos contendo desvios e mantm informaes a respeito do compor de
cada um. Este mtodo tende a tornar a mquina mais lenta por causa da manute
registro, de modo que alguma ajuda de hardware pode ser necessria. Medies mostra
a obteno de 90% de acerto desta maneira no difcil.
A previso de desvios no o nico meio de ataque. Outro tentar determinai
maneira ser o desvio antecipadamente no pipeline. Alguns testes, como desvios se i
muito mais fceis de fazer do que desvios se menor que. O primeiro pode ser feito
comparador, enquanto o ltimo requer um ciclo completo pelas vias de dados para fa
subtrao. Com esta tcnica, sempre que um desvio for encontrado, o microprogram;
uma rpida verificao num estgio inicial do pipeline para ver se ele pode
resolver imediatamente. Se puder, ele sabe onde continuar buscando.
Compiladores podem fazer muito para ajudar. Por exemplo, quando o programadoi um
ioop fazendo i variar de 1 a 10, o compilador pode testar i para ver se i ig em
vez de ver se ele menor que 11, de modo que o microprograma pode realizar uma con
em vez de uma subtrao.
Para tratar aqueles desvios que no podem ser resolvidos antecipadamente, o coi
pode tentar encontrar alguma coisa til para o computador fazer enquanto estiver e
que o desvio seja executado. Considere a Fig. 4.25(a), um comando aritmtico
seguidc teste. Um compilador com otimizao muito inteligente poderia produzir
cdigo comc 4.25(b), que no vlido em Pascal, mas mostra a ordem dos eventos.
Ele primeiro ger para realizar o teste, depois realiza a operao aritmtica.
Depois que o desvio entrou no muitas instrues comuns se seguem. Estas devem ser
feitas de qualquer jeito, de m no h necessidade de fazer uma previso e no h
necessidade de fazer squashing. F esta tcnica efetivamente, os microprogramadores
e os escritores de compiladores devem 1 juntos durante o projeto.
Se tudo o mais falhar, sempre h a possibilidade de seguir dois caminhos em paral
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 vezes
utilizado. E claro que, se qualquer caminho encontrar outro desvio pela frente a o
primeiro seja resolvido, a vida fica ainda mais complicada. Ter algumas dzias de
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
exemplo por um momento. Ela no tem unidades de hardware distintas para buscar, de
a:=b+c; lfb<c
Itb a.=b+c,
then comando; then comando;
(a) (b)
Fig. 4.25 (a) Um trecho em Pascal. (b) Como o compilador poderia trat-lo.
O NVEL DE MICROPROGRAMAO 165
n por diante, de modo que no possvel muito pipeline, mas, com pequenas mudanas
croprograma, podemos chegar a uma quantidade limitada de sobreposio entre busca e
o de microinstrues, que tambm uma forma de pipeline.
a Fig. 4.10, por exemplo, se a prxima microinstruo pudesse de alguma maneira ser
ia durante o subciclo 4, o subciclo 1 no seria mais necessrio, e o relgio
poderia apenas )ulsos para os subciclos 234234234... O problema principal ocorre no
tratamento das microins s de desvios condicionais, como vimos. Se a mquina esperar
at que as linhas de status U estejam disponveis antes de iniciar a busca da
prxima microinstruo, muito tarde:
praticamente j terminou e pouca sobreposio pode ser atingida. Em algumas
mquinas, lema resolvido apenas atravs do uso dos sinais de status da ALU do
ciclo anterior, claro, devem ser armazenados para evitar que se percam. Estes
valores esto disponveis cio de cada microinstruo, de modo que a prxima busca
pode comear assim que a corrente terminar, bem antes que a execuo da
microinstruo corrente se complete. necessrio dizer que essa maneira de fazer as
coisas complica em muito a vida para o rogramador.
ecnicamente, possvel escrever microprogramas para tal mquina de um modo
razovel. emplo, para testar alguma palavra da rea de rascunho e desviar se ela
for negativa, oprograma pode passar a palavra pela ALU numa microinstruo que no
contm um A prxima microinstruo uma no-op (nenhuma operao) com desvio
condicional, no faz nada, a no ser testar os bits de status da ALU armazenados e
desviar, O preo ela programao de uma forma racional a duplicao do tempo de
desvio, uma proposio sejvel.
nica soluo pegar um vidro de aspirinas e tentar fazer o melhor possvel nesta
situao. :emplo, o microprogramador pode adivinhar para onde o desvio condicional
usualmente isar a segunda microinstruo para comear a fazer o trabalho que
provavelmente ser rio. Infelizmente, se o desvio seguir outro caminho, ser
necessrio fazer algum squashing. mo um exemplo simples, vamos reescrever as linhas
de 11 a 18 da Fig. 4.16 para uma a com sobreposio de busca e execuo de
microinstrues. Os resultados so mostrados 4.26(a). Neste exemplo, tivemos sorte,
pois ao executar a linha 11 ns sabemos que imo cdigo ser ADDD ou SUBD, e ambos
comeam com a mesma microinstruo. Assim, colocamos a microinstruo comum na
linha 12 para manter a mquina ocupada enquanto io est sendo executado.
m exemplo ligeiramente menos agradvel mostrado na Fig. 4.26(b). Na linha 52,
sabemos ,rxima microinstruo ser PSHI e POPI, mas infelizmente estas duas
rotinas no possuem a primeira microinstruo. Suponha, entretanto, que uma anlise
estatstica dos programas lac-1 mostrou que PSHI muito mais comum que POPI.
Ento, podemos proceder como do na Fig. 4.26(b). Para PSHI, tudo est timo, mas
para POPI, quando chegamos 6, uma leitura de memria para a palavra errada j foi
iniciada. Dependendo dos detalhes do hardware, pode ou no ser possvel abortar uma
leitura de memria no meio sem danos. Se no pudermos abort-la, vamos apenas
esperar seu trmino e comear a leitura L. Neste exemplo, POPI gasta 15
microinstrues, em vez de 13, como na Fig. 4.16. Mesmo se o uso de sobreposio
reduziu o tempo bsico de microinstruo de at mesmo 15%, ;er mais rpido agora
do que antes.
11:alu :=tir; 52:alu :=tir;
12: mar := ir; rd; if n then goto 16; 53: mar := ac; rd; if n then goto 56;
l3rd' 54:sp:
55:mar:=sp; wr;gotolO;
14: ac :=mbr + ac; goto O;
56: rd;
16:ac:=ac+1;rd; 57:mar:=sp;sp:=sp+1;rd;
17:a:=iriv(mbr); 58:rd;
18: ac :=ac + a; goto O; 59: mar := ac; wr; goto 10;
(a) (b)
6 Dois exemplos envolvendo busca e execuo sobrepostas de microinstrues.
166 ORGANIZAO ESTRUTURADA DE COMPUTADORES
A situao se torna muito mais complicada se desvios multidirecionais, que so f
pelo OR de NZVC com os bits de baixa ordem de ADDR, so utilizados em vez d de bits
individuais. Alm disso, em muitas mquinas a sobreposio de busca e exec
microinstrues feita de tal maneira que, no incio da execuo da microinstruo
n, a da microinstruo n + 1 j foi feita, utilizando os bits de status da ALU
previamente arma durante a microinstruo n - 1. No vamos persistir mais nesse
assunto aqui, mas peh a motivao da definio de Rosin para microprogramao deve
estar clara agora.
4.5.5 Memria Cache
Historicamente, as CPUs sempre foram mais rpidas que as memrias. Enquanto as n
melhoraram, as CPUs tambm o fizeram, preservando assim a diferena. O que isso na
prtica que depois que a CPU faz uma requisio memria, ela deve permanece por
um tempo substancial enquanto estiver esperando que a memria responda. Com'
comum que a CPU estabelea uma leitura memria durante um ciclo de barramen
obtenha o dado at dois ou trs ciclos mais tarde, mesmo que no haja estados de
espera
Realmente, o problema no tecnolgico, mas econmico. Os engenheiros sabe
construir memrias to rpidas quanto as CPUs, mas elas so to caras que equipar
um con com um megabyte ou mais est fora de questo (exceto, talvez, para
supercomputador o cu o limite e preo no objeo). Assim, a escolha cai para
ter uma pequena qu de memria rpida ou uma grande quantidade de memria lenta. O
que iramos prefer grande quantidade de memria rpida a um baixo preo.
So conhecidas tcnicas bastante interessantes para combinar uma pequena quant
memria rpida com uma grande quantidade de memria lenta para obter (quase) a v da
memria rpida e a capacidade da grande memria a um preo moderado. A memria e
rpida chamada cache (do francs cacher, que significa esconder) e est sob o cor
microprograma. Vamos descrever abaixo como caches so usados e como eles funciom
informaes podem ser encontradas em Agarwal eta!., 1989; Farrens e Pleszkun, 1989;
et ai., 1987; Kessler et a!., 1989; Pohm e Agarwal, 1983; Przybylski et a!., 1989;
Smii e Wang et ai., 1989.
Durante anos, as pessoas souberam que os programas no acessam suas memrias de
completamente aleatria. Se uma dada referncia memria para o endereo A,
que a prxima referncia memria seja feita nas vizinhanas de A. Um exemplo
o prprio programa. Exceto pelos desvios e chamadas de procedimentos, as instrues
so de posies consecutivas da memria. Alm disso, a maior parte do tempo de
execu programa passada em loops, nos quais um nmero limitado de instrues
executa vezes. Similarmente. um programa de manipulao de matrizes provavelmente
far muita cias mesma matriz antes de tratar de outra coisa qualquer.
A observao de que referncias memria feitas em qualquer intervalo curto tendem
a usar apenas uma pequena frao da memria total chamado princpio da 1 e forma
a base de todos os sistemas de cache. A idia geral que, quando uma palavra
refe ela trazida da grande memria lenta para o cache, de modo que, da prxima ve
utilizada, ela pode ser acessada rapidamente. Uma organizao comum da CPU, cache e
principal est ilustrada na Fig. 4.27. Se uma palavra lida ou escrita k vezes num
curto, o computador precisar de 1 referncia memria lenta e k - 1 referncias
rpida. Quanto maior for k, melhor o desempenho geral.
Podemos formalizar este clculo introduzindo c, o tempo de acesso ao cache; m, de
acesso memria principal; e h, a taxa de acerto (hit ratio), que a frao de
referncias que podem ser satisfeitas pelo cache. Em nosso pequeno exemplo do
pargrafo h = (k - 1)1k. Alguns autores tambm definem a taxa de falha (miss
ratio), que 1 - h
Com estas definies, podemos calcular o tempo mdio de acesso como se segue:
tempo mdio de acesso = c + (1 - h)m
medida que h -+ 1, todas as referncias podem ser satisfeitas pelo cache, e o
tempo
se aproxima de c. Por outro lado, medida que h - O, uma referncia memria
O NVEL DE MICROPROGRAMAO 167
Placa da CPU Placa da memria
Memria grande,
lenta e barata
Memria pequena,
rpida e cara
Barramento
l7 O cache usualmente localizado na placa de CPU.
ez, de modo que o tempo de acesso se aproxima de c + m, primeiro um tempo c para ir
o cache (sem sucesso), e ento um tempo m para fazer a referncia memria. Em
sistemas, a referncia memria pode ser iniciada em paralelo com a procura no
cache, lo que, se ocorrer falha no cache, o ciclo de memria j comeou.
Entretanto, esta estratgia que a memria possa ser interrompida em seu trajeto se
o cache contiver o dado, tornando tis complicado. O algoritmo bsico para procurar
coisas no cache e comear (ou interromper) ncia memria principal dependendo do
resultado da busca no cache tratado pelo rograma.
uas organizaes de coche fundamentalmente diferentes so usadas, junto com uma
terceira hbrida das duas primeiras. Para todos os trs tipos, a memria, assumindo
ser de 2 (conceitualmente) dividida em blocos consecutivos de b bytes, para um
total de 2 Cada bloco tem um endereo que um mltiplo de b. O tamanho do bloco,
b, normalmente tncia de dois.
primeiro tipo de coche o cache associativo, um exemplo do qual est mostrado na
Fig. le consiste em um nmero de posies (slots) ou linhas, cada uma contendo um
bloco nmero de bloco, junto com um bit (Vlido) dizendo se aquele siot est
atualmente em 1 no. O exemplo da Fig. 4.28 ilustra um cache com 1024 slots e uma
memria com 224 livididos em 222 blocos de 4 bytes. Num cache associativo, a ordem
das entradas aleatria.
Vlido Nmero do bloco Valor
Nmero
Endereo do bloco
o o
137
4 1
52
8 2
1410
12 3
635
16
224 T
(a)
1
O
137
1
600
2131
1
2
1410
o
1
160248
290380
o
T

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.

O NVEL DE MICROPROGRAMAO 165


n por diante, de modo que no possvel muito pipeline, mas, com pequenas mudanas
croprograma, podemos chegar a uma quantidade limitada de sobreposio entre busca e
;o de microinstrues, que tambm uma fonna de pipeline.
a Fig. 4.10, por exemplo, se a prxima microinstruo pudesse de alguma maneira ser
ia durante o subciclo 4, o subciclo 1 no seria mais necessrio, e o relgio
poderia apenas
pulsos para os subciclos 234234234... O problema principal ocorre no tratamento das
microins s de desvios condicionais, como vimos. Se a mquina esperar at que as
linhas de status
U estejam disponveis antes de iniciar a busca da prxima microinstruo, muito
tarde:
praticamente j terminou e pouca sobreposio pode ser atingida. Em algumas
mquinas,
blema resolvido apenas atravs do uso dos sinais de status da ALU do ciclo
anterior, claro, devem ser armazenados para evitar que se percam. Estes valores
esto disponveis cio de cada microinstruo, de modo que a prxima busca pode
comear assim que a corrente terminar, bem antes que a execuo da microinstruo
corrente se complete. necessrio dizer que essa maneira de fazer as coisas complica
em muito a vida para o programador.
ecnicamente, possvel escrever microprogramas para tal mquina de um modo
razovel. xemplo, para testar alguma palavra da rea de rascunho e desviar se ela
for negativa, roprograma pode passar a palavra pela ALU numa microinstruo que no
contm um
A prxima microinstruo uma no-op (nenhuma operao) com desvio condicional,
no faz nada, a no ser testar os bits de status da ALU armazenados e desviar. O
preo
)ela programao de uma forma racional a duplicao do tempo de desvio, uma
proposio
esejvel.
nica soluo pegar um vidro de aspirinas e tentar fazer o melhor possvel nesta
situao. emplo, o microprogramador pode adivinhar para onde o desvio condicional
usualmente usar a segunda microinstruo para comear a fazer o trabalho que
provavelmente ser rio. Infelizmente, se o desvio seguir outro caminho, ser
necessrio fazer algum squashing. orno um exemplo simples, vamos reescrever as
linhas de 11 a 18 da Fig. 4.16 para uma na com sobreposio de busca e execuo de
microinstrues. Os resultados so mostrados . 4.26(a). Neste exemplo, tivemos
sorte, pois ao executar a linha 11 ns sabemos que :imo cdigo ser ADDD ou SUBD, e
ambos comeam com a mesma microinstruo. Assim, s colocamos a microinstruo comum
na linha 12 para manter a mquina ocupada enquanto io est sendo executado.
m exemplo ligeiramente menos agradvel mostrado na Fig. 4.26(b). Na linha 52,
sabemos prxima microinstruo ser PSHI e POPI, mas infelizmente estas duas
rotinas no possuem rna primeira microinstnio. Suponha, entretanto, que uma
anlise estatstica dos programas 4ac-1 mostrou que PSHI muito mais comum que
POPI. Ento, podemos proceder como ado na Fig. 4.26(b). Para PSHI, tudo est timo,
mas para POPI, quando chegamos 56, uma leitura de memria para a palavra errada
j foi iniciada. Dependendo dos detalhes do hardware, pode ou no ser possvel
abortar uma leitura de memria no meio sem danos. Se no pudermos abort-la, vamos
apenas esperar seu trmino e comear a leitura a. Neste exemplo, POPI gasta 15
microinstrues, em vez de 13, como na Fig. 4.16. Mesmo se o uso de sobreposio
reduziu o tempo bsico de microinstruo de at mesmo 15%, ser mais rpido agora
do que antes.
11:a!u:=tir; 52:alu :=tir;
12: mar := ir; rd; If n th.n goto 16; 53: mar := ac; rd; if n than goto 56;
54:sp:=sp+(-1);rd;
55:mar:=sp; wr;gotolO;
14: ac :=mbr + ac; goto O;
56: rd;
16:ac:=ac+1;rd; 51:mar:=sp;sp:=sp+1;rd;
17:a:=inv(mbr); 58:rd;
18:ac:=aca;gotoO; 59:mar:=ac;wr;goto
(a) (b)
26 Dois exemplos envolvendo busca e execuo sobrepostas de microinstrues.
166 ORGANIZAO ESTRUTURADA DE COMPUTADORES
A situao se torna muito mais complicada se desvios multidirecionais, que so fo
pelo OR de NZVC com os bits de baixa ordem de ADDR, so utilizados em vez 4 de bits
individuais. Alm disso, em muitas mquinas a sobreposio de busca e execi
microinstrues feita de tal maneira que, no incio da execuo da microinstruo
n, a da microinstruo n + 1 j foi feita, utilizando os bits de status da ALU
previamente arma; durante a microinstruo n - 1. No vamos persistir mais nesse
assunto aqui, mas pelc a motivao da definio de Rosin para microprogramao deve
estar clara agora.
4.5.5 Memria Cache
Historicamente, as CPUs sempre foram mais rpidas que as memrias. Enquanto as m
melhoraram, as CPUs tambm o fizeram, preservando assim a diferena. O que isso na
prtica que depois que a CPU faz uma requisio memria, ela deve permanecei
por um tempo substancial enquanto estiver esperando que a memria responda. Comc
comum que a CPU estabelea uma leitura memria durante um ciclo de barrament
obtenha o dado at dois ou trs ciclos mais tarde, mesmo que no haja estados de
espera.
Realmente, o problema no tecnolgico, mas econmico. Os engenheiros sabeI
construir memrias to rpidas quanto as CPUs, mas elas so to caras que equipar
um com com um megabyte ou mais est fora de questo (exceto, talvez, para
supercomputador o cu o limite e preo no objeo). Assim, a escolha cai para
ter uma pequena qu de memria rpida ou uma grande quantidade de memria lenta. O
que iramos preferi grande quantidade de memria rpida a um baixo preo.
So conhecidas tcnicas bastante interessantes para combinar uma pequena quanti
memria rpida com uma grande quantidade de memria lenta para obter (quase) a vel
da memria rpida e a capacidade da grande memria a um preo moderado. A memria i
e rpida chamada cache (do francs cacher, que significa esconder) e est sob o
con microprograma. Vamos descrever abaixo como caches so usados e como eles
funcionai informaes podem ser encontradas em Agarwal eta!., 1989; Farrens e
Pleszkun, 1989; K et ai., 1987; Kessler et ai., 1989; Pohm e Agarwal, 1983;
Przybylski et ai., 1989; SmitJ e Wang et ai., 1989.
Durante anos, as pessoas souberam que os programas no acessam suas memrias de
completamente aleatria. Se uma dada referncia memria para o endereo A,
que a prxima referncia memria seja feita nas vizinhanas de A. Um exemplo si o
prprio programa. Exceto pelos desvios e chamadas de procedimentos, as instrues
so de posies consecutivas da memria. Alm disso, a maior parte do tempo de
execul programa passada em loops, nos qais um nmero limitado de instrues
executad vezes. Similarmente, um programa de manipulao de matrizes provavelmente
far muitas cias mesma matriz antes de tratar de outra coisa qualquer.
A observao de que referncias memria feitas em qualquer intervalo curto d
tendem a usar apenas uma pequena frao da memria total chamado princpio da lo
e forma a base de todos os sistemas de cache. A idia geral que, quando uma
palavra refer ela trazida da grande memria lenta para o cache, de modo que, da
prxima vez utilizada, ela pode ser acessada rapidamente. Uma organizao comum da
CPU, cache e 1 principal est ilustrada na Fig. 4.27. Se uma palavra lida ou
escrita k vezes num i curto, o computador precisar de 1 referncia memria lenta
e k - 1 referncias i rpida. Quanto maior for k, melhor o desempenho geral.
Podemos formalizar este clculo introduzindo c, o tempo de acesso ao cache; m, de
acesso memria principal; e h, a taxa de acerto (hil ratio), que a frao de
referncias que podem ser satisfeitas pelo cache. Em nosso pequeno exemplo do
pargrafo; h = (k - 1)1k. Alguns autores tambm definem a taxa de falha (miss
ratio), que 1 - h.
Com estas definies, podemos calcular o tempo mdio de acesso como se segue:
tempo mdio de acesso = c + (1 - h)m
medida que h -+ 1, todas as referncias podem ser satisfeitas pelo coche, e o
tempo d
se aproxima de c. Por outro lado, medida que h -. O, uma referncia memria n
O NVEL DE MICROPROGRAMAO 167
Placa da CPU Placa da memria
Memria grande,
lenta e barata
Memria pequena,
rpida e cara'
Barramento
7 O cache usualmente localizado na placa de CPU.
z, de modo que o tempo de acesso se aproxima de c + m, primeiro um tempo c para ir
o cache (sem sucesso), e ento um tempo m para fazer a referncia memria. Em
sistemas, a referncia memria pode ser iniciada em paralelo com a procura no
cache, lo que, se ocorrer falha no cache, o ciclo de memria j comeou.
Entretanto, esta estratgia que a memria possa ser interrompida em seu trajeto se
o cache contiver o dado, tornando is complicado. O algoritmo bsico para procurar
coisas no cache e comear (ou interromper) 'ncia memria principal dependendo do
resultado da busca no cache tratado pelo rograma.
as organizaes de cache fundamentalmente diferentes so usadas, junto com uma
terceira hbrida das duas primeiras. Para todos os trs tipos, a memria, assumindo
ser de 2 (conceitualmente) dividida em blocos consecutivos de b bytes, para um
total de 2 Cada bloco tem um endereo que um mltiplo de b. O tamanho do bloco,
b, normalmente )tncia de dois.
primeiro tipo de cache o cache associativo, um exemplo do qual est mostrado na
Fig. le consiste em um nmero de posies (slots) ou linhas, cada uma contendo um
bloco imero de bloco, junto com um bit (Vlido) dizendo se aquele siot est
atualmente em no, O exemplo da Fig. 4.28 ilustra um cache com 1024 slots e uma
memria com 224 ivididos em 222 blocos de 4 bytes. Num cache associativo, a ordem
das entradas aleatria.
Vlido Nmero do bloco Valor
Nmero
Endereo do bloco
0 0
137
4 1
52
8 2
1410
12 3
635
16 4
224
(a)
1
0
137
1
600
2131
1
2
1410
o
1
160248
290380
o
'T
t
linhas
1 - 22 bits -e 32 bits -
(b)
8 Um exemplo de esquema de cache. (a) Memria com blocos de 4 bytes. (b) Cache
associativo 4 linhas.
168 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Quando o computador inicializado, todos os bits Vlido so colocados em 0, pai
que nenhuma entrada do cache vlida. Suponha que a primeira instruo referencie
de 32 bits do endereo 0. O microprograma vai verificar todas as entradas do cache,
pr por uma vlida que contenha o bloco nmero 0. No achando, ele vai ento fazer
uma r ao barramento para buscar a palavra O da memria e fazer uma entrada vlida
para nmero 0, contendo o contedo da palavra 0. Se esta palavra for necessria
novan prxima vez ela ser pega do cache, eliminando a necessidade de uma operao
de barr
A medida que o tempo passa, mais e mais entradas de cache sero marcadas coma Se o
programa usar menos que 1024 palavras de programa e dados, no final todo o 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 ne em
algum ponto o cache estar cheio e uma entrada velha ter que ser descartada pa
lugar para uma nova. Na prtica, a deciso de qual deve ser jogada fora precisa ser
fe rapidamente (nanossegundos). O VAX e muitas outras mquinas selecionam um siot
mente. Outros algoritmos possveis so discutidos no captulo 6, sob o ttulo de
memri onde o mesmo problema ocorre.
O aspecto do cache associativo que o distingue dos outros tipos de caches que
contm um nmero de bloco e sua entrada. Quando aparece um endereo de memria, o i
grama deve calcular o nmero do bloco relevante (fcil) e ento procurar aquele n
bloco no cache (difcil). Para evitar uma pesquisa linear, o cache associativo tem
um especial que pode comparar todas as entradas com o nmero de bloco dado simultan
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 ma
direto. Este tipo de cache evita a pesquisa colocando cada bloco num slot cujo nm
ser facilmente calculado a partir do nmero do bloco. Por exemplo, o nmero do ser
o resto da diviso do nmero do bloco pelo nmero de siors. Com blocos de 4 b , 1
palavra) e 1024 slots, por exemplo, o nmero do slot para a palavra no ende (A14)
mdulo 1024. No exemplo da Fig. 4.29, vemos que as palavras em 0, 4096, 819:
por diante so mapeadas no siot 0; as palavras em 4, 4100, 8196 e assim por diante
so i no siot 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,
basc
Siot Vlido Tag Valor Endereos que usam ess
o
2
3
4
5
1023
Bits
1
2
12130
1
1
170
1
3
2142
o
o
0
(a)
12
Tag
1
10
Siot
1
2
00
0, 4096, 8192, 1228
4, 4100, 8196, 1229
8, 4104, 8200, 1229
12, 4108, 8204, 1230
16, 4112, 8208, 1230
20, 4116, 8212, 1230
1 4092, 8188, 12284,
(b)
Fig. 4.29 (a) Um cache de mapeamento direto com 1024 slots de 4 bytes cada. (b)
Clculo do
a partir de um endereo de 24 bits.
O NVEL DE MICROPROGRAMAO 169
s de bloco mdulo o tamanho do coche. Neste exemplo, o siot O poderia conter
qualquer
s palavras 0, 4096, 8192 etc. A maneira de dizer qual est atualmente no siot
colocar
D endereo no coche, no campo Tag. Este campo contm aquela parte do endereo que
le ser calculada pelo nmero do siot.
a tornar este ponto mais claro, considere uma instruo no endereo 8192 que move
a em 4100 para 12296. O nmero do bloco correspondente a 8192 calculado
dividindo-o
iosso tamanho de bloco exemplo) para obter 2048. Depois, o nmero do siot
calculado
o 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 vez que o coche funciona com blocos inteiros, e estes so mltiplos do
tamanho do 4 bytes neste exemplo). Depois vem o nmero do siot (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 siot de coche pode causar problemas.
ia que nossa instruo de movimentao mova 4100 para 12292, em vez de 12296. Esses
idereos mapeiam no siot 1. Dependendo dos detalhes do microprograma, aquele que
.ulado por ltimo terminaria no coche, 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 siot. 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.
he de mapeamento direto com mltiplas entradas por sior 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 slot, 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 siot.
coches associativos e de mapeamento direto tm diferentes vantagens e desvantagens.
e de mapeamento direto mais simples, mais barato para construir e tem um tempo so
mais rpido, uma vez que o siot apropriado pode ser encontrado simplesmente
indexando utilizando uma parte do endereo como ndice. De outro lado, o coche
associativo tem xa de acerto maior para qualquer dado nmero de slots, pois nunca
h conflitos. No ontecer que k palavras importantes no possam ser colocadas no
coche simultaneamente, elas tm a m sorte de mapear no mesmo siot do cache. Quando
qualquer computador L sendo projetado, uma simulao extensiva do coche 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
Vlido Tag Valor
Siot
o
2
3
4
5
UTTTTT
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 simpli
mas 2, 4, 8 ou mais palavras so tambm possveis, e freqentemente usadas. Uma v
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 ban
permite transferncia de blocos. Uma desvantagem que nem todas as palavras podem
ser:
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 wrife through, quando uma palavra
es cache, ela imediatamente escrita de volta memria. Esta abordagem garante
que as 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 ac 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 inteii de comear uma operao de E/S.
Outra considerao de projeto a respeito de escritas o que fazer se uma escrita
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 a
principal usada.
Tendo considerado todas as coisas, o uso de caches uma tcnica importante para rr
o desempenho do sistema. Quase todos os computadores de mdia e larga escala usam
forma de cache. Informaes adicionais sobre caches podem ser encontradas cm Hill,
198
bylski et ai., 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
famflias 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
si evitar detalhes desnecessrios.
4.6.1 A Microarquitetura do Intel 8088
A microarquitetura de toda CPU Intel similar, porque todas elas evoluram da pi
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
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
anteo
O NVEL DE MICROPROGRAMAO 171
ribm internamente uma mquina de 16 bits. Entretanto, o 80286 consiste em quatro
les 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.
emos nos concentrar no 8088 como o membro mais simples da famflia, mas os outros s
so similares no esprito, mesmo diferindo em alguns dos detalhes. O 8088 usa uma a
de microcdigo e lgica aleatria (circuitos de hardware especializados) para
prover boa rialidade 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 os 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 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, .X, 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 , 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 amento de endereos. A parte superior contm sua prpria memria de
rascunho para adores, 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 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 fites 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 L, decodificar instrues, fazer os clculos de endereo e executar as
instrues. Os trs s 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, fade 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. lo 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 Para o
o a
a C
o
o.
a
(1)
o a
o.
a C
ALU
T
1 1
++tt
Cdigos de condio
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 bi bytes depois de instrues de desvio. O 8086 tinha uma fila de 6
bytes, mas isso foi r para 4 bytes no 8088. Alm da largura do barramento, esta a
nica diferena entre e o 8086.
O NVEL DE MICROPROGRAMAO 173
m das vias de dados, o 8088 contm uma seo de controle que armazena o
microprograma )la as vias de dados (veja a Fig. 4.32). Quando uma nova instruo do
nvel de mquina ional iniciada, seu byte de opcode tirado da fila de
instrues e carregado no IR tion Register, ou registrador de instrues).
unidade de hardware denominada decodificador de grupo na Fig. 4.32 extrai
informao 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 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
iazenadas em uma ROM de 504 x 21 na seo de controle. Quando uma instruo de a
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 tenhuma decodificao por software est presente. Ela completamente realizada
por re, para economizar tempo.
nicrocdigo dividido em bursts (SCL ncias) de at 16 microinstrues, cada burst
manipu ima ou mais instrues de mquina ou provendo um procedimento de servios
gerais, o 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 )s longos, exceto que eles depositam seu endereo de retomo
no registrador SR (Subroutine ou retorno de sub-rotina). Microprocedimentos no
podem ser aninhados. Ao todo. 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
Usada para
localizar
o endereo
inicial
na memria
de controle
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 clculo 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
registradc no precisa nem mesmo saber que operao ele est realizando. Desta
maneira, AD] AND, OR e muitas outras instrues podem compartilhar o mesmo
microcdigo, apesar di rem diferentes operaes. Naturalmente, PUSH, CALL e JMP so
completamente di e cada um requer seu prprio microcdigo.
Uma microinstruo tpica do 8088 mostrada na Fig. 4.33(a). Ela tem duas pai so
executadas em paralelo. A parte da esquerda, consistindo em dois campos de 5 bits,
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, coi
nos campos de tipo, cdigo da ALU, registrador e cdigo de condio. Seis tipos de
microl esto presentes, como listado na Fig. 4.33(b). Eles so distinguidos pelo
campo TIP( 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 i
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
microi
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
da ALU no mesmo ciclo.
Desvios longos e chamados de microprocedimentos criam um problema, na medid eles
requerem mais bits para designar o destino do que est disponvel na microinsti
soluo usar uma ROM de traduo, que mapeia endereos de 5 bits em endereos ci
do microprograma. Desvios longos e chamadas usam endereos de 5 bits para indicar
qu eles querem. E claro que esta estratgia significa que apenas 32 endereos podem
ser 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 un
olhada no Motorola 68000 (Stritter e Tredennick, 1978). O 68000 uma pastilha lige
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
Mencionamos a considerao de se o 68000 uma mquina de 16 ou 32 bits an
questo aparece novamente na microarquitetura. As vias de dados principais so mosi
Fig. 4.34.
Como pode ser visto, as "vias de dados" so, de fato, trs vias de dados de la 16
bits separadas, cada uma das quais podendo operar independentemente das outr
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 direil operaes nos dados.
Operao da ALU
Bus 5 5 3 4 3 1 Operao de memria
Desvio curto
FONTE DEST ALU REG 1 Desvio longo
/ 11 Chamada de
/ microprocedimento
TIPO Administrao
(a) (b)
Fig. 4.33 (a) Formato da microinstruo da ALU do 8088. (b) Tipos de
microinstruo.
Para o barramento Para o barrarnento
de endereos (alto) de endereos (baixo)
Fig. 4.34 Um diagrama altamente simplificado das vias de dados do 68000.
o
o
o
176 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Cada parte tem dois barramentos que pegam dados de registradores e os alime somador
ou ALU. Eles tambm servem para trazer a sada da ALU de volta aos regisi No topo
de cada um dos seis barramentos existe uma chave, que pode aberta ou feci software.
Abrindo a chave, os barramentos podem ser eletricamente conectados. Se seis chaves
estiverem abertas, por exemplo, os registradores da parte esquerda podem se como
operandos para a ALU, na parte direita.
Vamos dar uma olhada nos registradores, comeando na esquerda. O bloco marcadi ALTO
contm os 16 bits superiores dos oito registradores de dados. O bloco debaixo dek
os 16 bits superiores para os oito registradores de endereo. Depois, vem o
apontador do modo supervisor, dois registradores de rascunho, DT (Data Temporary,
ou tempo dados) e AT (Address Temporary, ou temporrio de endereos), e a metade
superior do de programa. Todos esses 20 registradores podem ser colocados tanto no
barramento da como no da direita, determinado pelo microprograma.
Ambos os barramentos levam a um somador de 16 bits. Este somador no un completa,
e pode apenas somar. Uma vez que ele usado principalmente para clculo de e ele
no precisa da capacidade de fazer qualquer outra coisa, e a construo de uma ALU
teria custado mais rea da pastilha. Note que a entrada esquerda do somador um
multil que pode selecionar tanto o barramento da esquerda quanto a parte superior
de um de constantes, novamente sob controle do microprograma.
A sada da ALU armazenada em um latch e pode ser colocada em qualquer barr de
modo que os resultados podem ser armazenados em registradores. Alm disso, o lai
fazer com que o barramento de endereo externo d sada metade superior de um e
de memria de 32 bits.
A parte do meio essencialmente o mesmo, exceto que ela no contm a men rascunho
de dados nem o registrador DT. Naturalmente, sua ROM de constantes g 16 bits de
baixa ordem das constantes, e no os bits de alta ordem. A sada de seu laL acionar
o endereo do barramento de baixa ordem. Ambas as partes podem ser habilitadas
neamente, de modo que um endereo completo de 32 bits pode ser colocado no bari de
memria de uma s vez.
A parte da direita similar s outras duas, contendo a parte de baixa ordem da de
rascunho de dados e a parte de baixa ordem de DT. Ela tambm tem uma ROM de coi
embora esta esteja no outro barramento e contenha constantes diferentes. Ainda
assim, similar.
Trs novas caractersticas aparecem aqui. Primeiro, o somador foi substitudo por
uii de funo completa, destinada a realizar funes aritmticas e booleanas nos
registrad Como a ALU tem largura de apenas 16 bits, operaes de 32 bits requerem
dois ciclos de dados. Em segundo lugar, um registrador de rascunho extra est
presente. Ele ne para multiplicao e diviso. Em terceiro lugar, no apenas
possvel enviar sada para o bari (de dados), mas, diferente das outras duas
partes, tambm possvel aceitar dados qi chegando.
O que no mostrado na figura, mas vale a pena mencionar, um conjunto de trs
regisi
de instruo para guardar instrues que acabaram de chegar. Trs deles so
necessrios,
o 68000 tem pipeline. O primeiro guarda a instruo que est sendo executada; o
segundc
a instruo que est sendo decodificada; o terceiro guarda a instruo que est
sendo
da memria.
Tambm no est mostrado o fato de que a interface para e do barramento de dados
chaves crossover nas duas direes, como o 8088, de modo que bytes superior e infi
uma palavra de 16 bits podem ser trocados quando entram ou saem do barramento d
Esta facilidade necessria para enderear e manipular bytes individuais.
O 68000 usa uma memria de controle de dois nveis, com um microprograma e um n
grama, como mostrado na Fig. 4.35. Os detalhes so alguma coisa diferente do exemp
no texto, mas o objetivo o mesmo: reduzir o nmero de bits na memria de
controle. com que o microprograma determine a seqncia de nanoinstrues
executadas e com nanoinstrues realmente ativem as portas nas vias de dados. O
microprograma cons 544 palavras de 17 bits, e o nanoprograma consiste em 336
palavras de 68 bits, para u de 32.096 bits. Uma implementao com 544 palavras de
68 bits iria requerer 36.992 bi
O NVEL DE MICROPROGRAMAO 177
icro-ROM Nano-ROM
17 bus - 68 bus
o
544 336 Fig. 4.35 O 68000 possui uma memria
ras de 17 bus palavras de 68 bits de controle de dois nveis, com uma mi-
ente utilizadas realmente utilizadas cro-ROM e uma nano-ROM.
Lia de 13%. Uma vez que esta pastilha estava definitivamente chegando ao limite do
da arte quando foi introduzida, a economia foi considerada de valor. Para
propsitos parao, o microprograma de 504 x 21 do 8088 tem 10.584 bits.
ROMs para tanto o microprograma quanto o nanoprograma so endereadas por nmeros
ts, permitindo at 1024 entradas em cada. Como mencionamos, somente 544 so
necessrias leira, e somente 336 na segunda. Nos dois casos, as entradas so
distribudas ao longo o de endereamento de uma maneira muito cuidadosa. Na
nanoprogramao convencional, 'are primeiro busca a microinstruo, e esta
microinstruo contm o endereo da nanoins i utilizar. A nanoinstruo ento
buscada e executada. O processo tem inerentemente gios, uma vez que a
nanoinstruo no pode ser buscada antes que a microinstruo isponvel.
projetistas do 68000 gostaram da idia de economizar rea de pastilha usando
nanoprogra mas no gostaram da idia de tornar a mquina mais lenta por ter que
esperar at que instruo estivesse disponvel para comear a buscar a
nanoinstruo. Eles usaram um para fazer tudo em um ciclo. Na maioria dos casos, a
nanoinstruo correspondente struo do endereo n tambm est no endereo n, e
ento elas podem ser buscadas eamente.
s casos em que a nanoinstruo compartilhada por duas ou mais microinstrues, um
r foi removido da circuitaria de decodificao da nanoinstruo para mapear dois ou
dereos na mesma palavra. Por exemplo, o endereo 0000011111 pode ser mapeado no o
0000010111 tirando um transistor, de modo que as microinstrues dos endereos 31
am a mesma nanoinstruo 23. claro que uma escolha exata de qual instruo vai de
fica crtica, mas os projetistas tiveram computadores para ajud-los a montar o
quebra-
is formatos de microinstruo so usados no 68000. Os dois so mostrados na Fig.
4.36. roinstrues no so executadas seqencialmente, como no 8088. Em vez disso,
cada struo explicitamente diz qual a sua sucessora. Este esquema necessrio,
dada a lade de se terem microinstrues especficas mapeando em nanoinstrues
especficas.
178 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Formato 1 FC PRXIMA MICROINSTRUO 1 TIO O li 1
TRAP CONTROLE DE PREFETCH
Formato 2 FC PRXIMA MCROINSTRIJO CONDIO
Fig. 4.36 Formatos
CONTROLE DE PREFETCH croinstruo do 68000.
O formato 1 usado para todas as microinstrues, exceto os desvios condicionais.
O 1
2 usado para os desvios condicionais. Ambos tm um bit que usado para comear
antecipada da prxima instruo, e ambos tm 2 bits do outro lado, FC, para dar
sada
para os pinos da pastilha, para dizer se uma referncia memria est no espao de
ins
espao de dados, reconhecimento de interrupo, ou nenhum dos acima. As microim
do formato 1 contm alguns bits miscelneos e um endereo de 10 bits dizendo de
ondt
a prxima microinstruo. As microinstrues do formato 2 contm um campo de 5 1
seleciona uma das 32 condies construdas para serem testadas, tais como os
cdigos de e
e bits no registrador de instruo. O resultado do teste produz 2 bits que so
combina
8 bits da microinstruo para selecionar uma das quatro possveis sucessoras.
As nanoinstrues de 68 bits so codificadas horizontalmente, com 38 campos dist
maioria deles de 1 ou dois bits. Os campos controlam o gatilho de todos os registra
memrias de rascunho nos barramentos, a seleo de registradores, o controle das c
estabelecimento do cdigo de condio, a funo da ALU, o uso das ROMs de cons dos
multiplexadores e a operao da memria, que so o motivo pelo qual tantos bits so
nec
4.7 RESUMO
No nvel de microprogramao, a CPU consiste em dois componentes principais:
de dados e a seo de controle. As vias de dados consistem principalmente em uma ri
de rascunho e em uma poro de ALU/deslocador. Um ciclo consiste em extrair alguns
op da memria de rascunho, pass-los atravs da ALU/deslocador e possivelmente arma
resultados de volta memria de rascunho.
A seo de controle possui a memria de controle, onde o microprograma mantid
microinstruo da memria de controle controla as portas nas vias de dados durante
um mi No exemplo dado, os microciclos foram divididos em subciclos controlados por
um relgio.] o primeiro subciclo, a microinstruo buscada da memria de controle
e colocada registrador interno. No segundo subciclo, as entradas da ALU so
colocadas em latc) mant-las estveis durante a microinstruo. No terceiro
subciclo, a ALU e o deslocador 1 seu trabalho. Finalmente, no quarto subciclo, o
resultado pode ser armazenado de volta de rascunho, se for necessria para uso em
uma microinstruo subseqente.
O seqenciamento de microinstrues pode ser mais bem descrito como bizarro.
mquinas possuem um contador de programa explcito no nvel de microprogramao.
disso, as microinstrues geralmente contm o endereo base para suas sucessoras.
Este e base tipicamente passa por um OR com alguns bits de status para produzir o
endere Em muitas mquinas, o endereo base de uma microinstruo combinado com
bits resultantes da anterior para produzir um endereo de desvio que no tem efeito
at uma mais tarde.
As microinstrues podem ser organizadas horizontalmente, com um bit por sinal de
verticalmente, com alguns campos requerendo decodificao complexa, ou alguma mi
horizontal com vertical. Organizao horizontal leva a palavras longas e mquinas
rpid mente paralelas. Organizao vertical leva a mquinas mais lentas e menores
memrias de
O desempenho pode-ser melhorado usando vrias tcnicas. Uma delas a nanoprogr
O NVEL DE MICROPROGRAMAO 179
d o microprograma contm apontadores (curtos) para nanoinstrues (longas) que
realmente iam as portas. A nanoprogramao reduz a quantidade de espao de pastilha
destinado VIs, ao custo de execuo mais lenta.
utras maneiras de melhorar o desempenho so tempos de ciclo variveis, desvios de
mltiplos hos,pipe/ine e cache. Cada tcnica traz consigo alguma complexidade
aumentada, entretanto. inalmente, as microarquiteturas de duas pastilhas
disponveis comercialmente, o 8088 e JO, foram discutidas. O 8088 tem vias de dados
tradicionais, melhoradas por uma seo or para realizar clculos com os
registradores de segmento. Ele usa microinstrues verticais bits. O 68000 tem trs
vias de dados independentes de 16 bits, duas para os endereos para os dados. Ele
usa uma memria de controle de dois nveis com microinstrues bits e
nanoinstrues horizontais de 68 hits.
PROBLEMAS
escreva algumas das foras e fraquezas de microprogramao.
-aduza a funo Pascal seguinte para a linguagem de montagem do Mac-l.
function nin(i, j, k: Pequenolnt): Pequenolnt;
var m:Pequenont;
begin
if i < j then m = i else n : = 1;
if k < ,n then m : = k;
mm := rn end;
tipo Pequenolnt a mesma subfaixa do texto.
-aduza o comando Pascal
if i < j then goto 100;
Lra a linguagem de montagem do Mac-!. Tanto i quanto j so inteiros de 16 hits em
comple ento de dois. Tome cuidado: se i = 32767 e j = -10, uma subtrao dar um
overflow LO detectado.
Fig. 4.11(h), recarregamos K na linha rotulada L4. Os dois comandos precedentes
garantem e K est em AC depois de tudo. Por que se preocupar em carreg-lo
novamente?
ilcule o tempo de execuo em microinstrues para cada instruo Mac-! sendo
executada
Mic-1.
epita o problema anterior, mas agora para Mic-2.
nte compilar o comando Pascal
n := a
retamente para instrues Mic-1, passando por cima de todo o nvel Mac-1. Discuta
sua
atativa.
)nsidere uma possvel reviso do Mic-1, na qual os dois campos de seqenciamento,
COND ADDR, so removidos, produzindo microinstrues de 22 bits. Microdesvios so
agora nipulados por microinstrues distintas de 22 bits. Os bits N e Z da ALU so
tambm locados em Iwches. para torn-los disponveis para um microdesvio
subseqente. Compare tamanho do programa Mie-! original com aquele necessrio para
este novo projeto.
180 ORGANIZAO ESTRUTURADA DE COMPUTADORES
9. Os dois comandos Mic-1 seguintes executam exatamente a mesma funo? Explique.
a = a + a; if n then goto O;
a := lshift(a); ifn then goto O;
10. Sua nica listagem de um microprograma chave Mic-1 foi acidentalmente colocada
nun tador automtico de documentos para o picador de papel, em vez de para a fotoc
prxima a ele. Voc ter agora que reconstruir o programa fonte a partir de u de
memria. No meio da desmontagem, voc passar pelo nmero binrio
11001000000100011001000000001000
Reescreva-o em linguagem de montagem.
11. Quantos padres de bits existem para a seguinte instruo Mic-1? ac := mbr + a;
ifn then goto 100;
12. Imagine que voc trabalha para uma companhia que est vendendo uma mquina cc
como nvel 1 e Mac-1 como nvel 2. O vendedor de semicondutores que normalment suas
pastilhas acabou de anunciar uma grande liquidao para acabar seu estoque de
complemento de um. Seu departamento de compras aproveitou a chance e com
carregamento inteiro delas. Ser que o microprograma da Fig. 4.16 continuar a com
uma ALU de complemento de um, em vez da de complemento de dois orig nova mquina,
nmeros negativos sero representados em complemento de um, cl.
13. Se leituras e escritas memria principal levassem trs microinstrues em vez
de Mic-1, o tamanho do microprograma seria afetado, e, se for, de quanto?
14. O campo COND na palavra de Mic-1 tem 2 bits, o que fornece quatro cdigos Se um
desses cdigos fosse necessrio para alguma outra coisa, por exemplo, pa o bit de
status de overflow de uma ALU recentemente implementada, qual dos quatr existentes
voc recomendaria sacrificar?
15. Proponha o acrscimo de uma facilidade simples ao Mic-1 para chamar procedim
nvel micro. Alguma maneira deve ser encontrada para tanto chamar quanto ret
microprocedimentos, que no podem ser aninhados (isto , um microprocedimento 1
chamar outro microprocedimento). Voc pode mdificar a arquitetura do Mic-1 n
minimizar as alteraes necessrias.
16. Microarquitetos se encontram constantemente com compromissos entre elegncia
ortogonalidade de campos) e tamanho da memria de controle. Suponha que voc o
trabalho de modificar Mic-1 para adicionar um bit a COND ou ADDR, peg bit de um dos
outros 11 campos. Faa uma sugesto de onde encontrar o bit sem enf muito a
funcionalidade do Mic-1.
17. Existem lugares no microprograma para o Mic-2 onde o microprogramador foi f
escolher entre tempo e memria de uma maneira no requerida no microprogra
o Mic-1? Se tiver, d um exemplo.
18. As microinstrues do Mic-2 so muito mais compactas que aquelas do Mic-1 (12
bi
32 bits). Voc pode visualizar um Mic-3 com microinstrues ainda mais curtas? Dis
19. O presidente da Corporao de Memria Nano-Micro-Milli ficou to impression as
vendas de suas nanomemrias, que ele considerou a adio de uma picomemi
linha de produtos. A picomemria seria referenciada pela nanomemria, da mesma
O NVEL DE MICROPROGRAMAO 181
ie a nanomemria referenciada pela memria de controle, isto , cada nanopalavra
conteria
endereo de uma picoinstruo, assim como a memria de controle contm endereos
nanoinstrues. Voc o Vice-Presidente Encarregado de Descartar Idias Estpidas.
que voc acharia desta proposta?
fssemos implementar o programa da Fig. 4.16 usando nanoprogramao, quantos bits
memria de controle, mais a nanomemria, iriam requerer juntas? Compare isto com o
imero de bits da memria de controle no projeto original.
iponha que tivssemos um pipeline de n estgios, em vez do pipeline de cinco
estgios
scutido no texto. Qual seria ento a penalidade de desvio?
onsidere uma mquina na qual 20% das instrues so desvios condicionais e outros
10%
.o desvios de loop. Os desvios condicionais podem ser previstos com 60% de acerto,
e
desvios de ioop podem ser previstos com 90% de acerto. A penalidade por adivinhar
rado de quatro ciclos. No existe penalidade para desvios incondicionais ou para
suposies )rretas. Qual a eficincia do pipeline desta mquina?
a Fig. 4.29(b), qual o endereo da palavra cujo contedo 2131?
m sistema de cache tem uma taxa de acerto de 95%, um tempo de acesso de 100 ns
quando dado for encontrado no cache e um tempo de acesso de 800 ns se o cache no
contiver dado. Qual o tempo de acesso efetivo?
m cache est sendo projetado para um computador com 232 bytes de memria. O cache
r 2K slots e usar um bloco de 16 bytes. Calcule, tanto para um cache associativo
quanto ra um cache com mapeamento direto, quantos bytes o cache ir ocupar.
primeira vista, a presena ou ausncia de cache no parece ter nada a ver com a
deciso
se mapear ou no os registradores de EIS no espao de endereamento de memria.
nse um pouco mais sobre isso e veja se voc pode encontrar algum problema
potencial.
ugesto: se voc no pode pensar em nenhum problema, continue pensando.)
68030 tem caches para instruo e dados na prpria pastilha. Ele tambm tem um tipo
pecial de ciclo de barramento, l-modifica-escreve, para ler e modificar uma
palavra de emria em uma nica ao indivisvel. Existe alguma interao entre
estas duas caracte ;ticas? Explique.
screva um procedimento em linguagem de montagem Mac-1 para multiplicar dois
inteiros
m sinal, cujo produto caiba em 16 bits.
screva um programa de teste na linguagem de montagem Mac-1 para verificar se o
micropro ama est funcionando corretamente. Verifique cada instruo com uma srie
de operandos nhecidos para ver se os resultados conhecidos ocorrem. Tais programas
so largamente ilizados pelo pessoal de reparos de computadores para tentar
detectar falhas de hardware.
fabricante do Mac-1 acabou de receber um telegrama de seu cliente mais importante.
telegrama diz: "Preciso ter nova instruo para deslocar AC n bits esquerda, onde
so os 4 bits de baixa ordem da instruo. Preciso para amanh de manh, s 8 h.
Envie novo microprograma por telegrama. Urgncia." Seu trabalho implementar o
microcdigo Lra o deslocamento.
;creva um simulador de Mic-1 em sua linguagem de montagem preferida. O simulador
ve ler um microprograma como uma srie de linhas de entrada de 32 caracteres (0 e
seguida de uma linha em branco. Ento, ele l o programa Mac-1, 16 bits por linha,
o executa.
5
NVEL CONVENCIONAL DE
MQUINA
Este captulo apresenta o nvel convencional de maquina (nvel 2) e discute muito
de sua arquitetura. Historicamente, o nvel 2 foi desenvolvido antes de qualquer d
nveis, e ainda amplamente (e incorretamente) considerado como "a" linguagem de
Esta situao tem acontecido porque em muitas mquinas o microprograma fica em
apenas de leitura, o que significa dizer que os usurios (ao contrrio do
fabricante da no podem escrever programas para o nvel 1. Alm disso, mesmo em
mquinas que so gramveis pelo usurio, a complexidade enorme da arquitetura do
nvel 1 suficiente par rajar a todos, com exceo dos programadores mais
intrpidos. Alm disso, como mquina possui hardware de proteo no nvel 1. no
possvel permitir que algui novos microprogramas enquanto outra pessoa estiver
utilizando a mquina. Esta can inibe ainda mais a microprogramao pelo usurio.
5.1 EXEMPLOS DO NVEL CONVENCIONAL DE MQUINA
Em vez de tentar definir rigorosamente o que o nvel convencional de mquli , de
qualquer maneira, provavelmente impossvel), ns apresentaremos este nvel de
exemplos reais, primeiramente um Intel, e depois um Motorola. O objetivo de esti
famflias existentes de CPUs mostrar omo as idias aqui discutidas podem ser api
"mundo real". Estas mquinas sero comparadas e contrastadas de diversas maneiras
par como diferentes projetistas fazem diferentes escolhas.
No se deve concluir que o resto deste livro trata da programao das CPUs Intel e
1 Longe disto. Estas mquinas sero utilizadas para ilustrar a abordagem de se
projetar ui tador como uma srie de nveis. Vrios aspectos de suas respectivas
organizaes sero ex e algumas informaes acerca da programao deles sero
apresentadas onde for n Entretanto, no se tentar dar uma descrio completa. Para
uma discusso completa os detalhes destas mquinas, favor consultar as publicaes
do fabricante.
Em resumo, este captulo trata fundamentalmente da arquitetura e das instrues
pelos programas de aplicao de usurios comuns. Instrues e aspectos
arquiteturais de mais especfico dos programadores de sistemas operacionais sero
omitidos ou prote o Cap. 6.
5.1.1 A Famlia Intel 8088/80286/80386
conveniente iniciar nossa discusso de mquina convencional com o Intel 8088, do
IBM PC e de seus clones e, como tal, indubitavelmente, a CPU mais amplamente do
mundo. No nvel convencional de mquina, o 8088 e o 8086 so idnticos, de fi tudo
que dissermos acerca do 8088 tambm se aplica ao 8086. O 8088 pode enderear
numerados consecutivamente, a partir de 0, como mostrado na Fig. 5.1.
NVEL CONVENCIONAL DE MQUINA 183
Endereo Palavra
de 16 bits
O Byte 1 ________ Palavra no ________
1 Byte 1 endereo o Byte 1 Byte O
2 Byte _______ Palavra no Byte 3 Byte 2
endereo 2 __________________________
3 Byte J
4 Byte 1 Palavra no
endereo 4 yte 5 Byte 4
5 Byte
6 Byte
7 Byte
8 Byte
9 Byte
10 Byte
220
.1 A arquitetura dc memria do 8088.
s instrues ou operam sobre bytes de 8 hits ou sobre palavras de 16 bits. As
palavras )recisam comear num byte par. embora seja a eficincia no 8086 um pouco
maior se as ras comearam por um byte par.
om 22 bytes de memria, o 8088 precisa realmente de endereos de 20 hits para
enderear mria. Uma vez que os registradores e tudo mais acerca da mquina
utilizam palavras de s, nmeros de 20 hits so altamente inconvenientes. Para
resolver este problema, os projetistas
recorreram a uma marreta (um jargo para designar uma maneira no-elegante,
rstica, rer alguma coisa). A marreta consistia em introduzir quatro registradores
de segmento (cdigo, ;, pilha e extra), cada um deles guardando um endereo de
memria que aponta para a de um segmento de 64K.
iada registrador de segmento aponta para algum lugar dentro de um espao de
endereamento bytes, como mostrado na Fig. 5.2. Todas as buscas de instrues so
feitas relativamente
gistrador de segmento de cdigo. Por exemplo, se esse registrador apontar para o
endereo
e o contador de programa contm o valor 1204, ento a prxima instruo ser
buscada adereo 97204. Com este valor no registrador de segmento de cdigo, podem-
se acessar ies localizadas em endereos na faixa de 96000 a 161.535. Para acessar
uma instruo lesta faixa, deve-se mudar o contedo do registrador de segmento do
cdigo.
;imilarmente, o registrador de segmento de dados e o registrador de segmento de
pilha existem acessar o segmento de dados e o segmento de pilha, respectivamente.
Finalmente h um :rador de segmento extra, de reserva, para ser usado quando
necessrio.
Este esquema significa que em qualquer instante, no mximo 256K de memria podem
ser ados sem se modificar pelo menos um registrador de segmento. Alguns
compiladores limitam ogramas a 64K para o texto do programa (isto , as instrues)
e outros 64K para uma inao de dados e pilha, a fim de evitar o custo associado
com a transferncia constante :ontedos dos registradores de segmentos, entre estes
registradores e a memria ou o uso gistrador segmento extra.
Feoricamente, os registradores de segmento devem possuir 20 bits de largura a fim
de apontar um endereo qualquer dentro de um espao de endereamento de 220 bytes.
Entretanto, j foi mencionado, o 8088 mal equipado para lidar com nmeros de 20
bits. Este problema solvido fazendo com que todos os registradores de segmento
apontassem apenas para ende mltiplos de 16 hytes, de forma que os 4 bits menos
significativos so iguais a zero e
184 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Endereo
O
96000 64
262144 Segmento de dados Segmento de pilha
64 K
800000
220
Fig. 5.2 Uti!iza de registradores de segmento no 8088.
no precisam ser armazenados. Assim os registradores de segmento contm apenas
superiores dos endereos de 20 bits.
O 8088 possui 14 registradores, todos de 16 bits, mas todos diferentes. Eles est
na Fig. 5.3. AX principalmente utilizado para clculos aritmticos. Por exemplo,
par
a soma de dois inteiros, o programa pode calcular um deles em AX, ento adicionar
a AX e, finalmente, armazenar AX memria. Os outros registradores podem se
utilizados, mas neste caso as instrues so maiores e mais lentas do que aquelas
qu
AX.
BX usado tipicamente para armazenar apontadores para a memria. CX u:
armazenar o contador em instrues de loop. Para se implementar um ioop de o
carregado com n. Em cada iterao, CX decrementado. Quando ele atinge zer pra.
DX utilizado como uma extenso de AX em instrues de multiplicao e divis
armazenada a metade superior de um produto de 32 bits ou a metade superior de um
de 32 bits.
Cada um destes registradores de 16 bits consiste em uma metade inferior e outra que
podem ser endereados individualmente. Quando utilizados desta maneira, eles e um
conjunto de oito registradores de 1 byte que podem ser usados com instrues que n
valores de 1 byte. A utilizao dos registradores desta maneira remanescente da
ma o velho 8080 de 8 bits trabalhava.
Os registradores SI e DI so utilizados para operaes sobre cadeias de caracte
operao tpica sobre cadeias de caracteres requer um endereo fonte, especificado
pelo r SI dentro do segmento de dados, e um endereo destino, especificado pelo
registrador do segmento extra. A instruo poderia, por exemplo, copiar um certo
nmero de fonte para o destino.
NVEL CONVENCIONAL DE MQUINA
AH
AL
BH
BL
CH
CL
DH
DL
Descrio
Acumulador principal
Aritmtica, apontadores
Loops
Multiplicao e diviso
Apontador fonte para operaes com cadeias de caracteres
Apontador destino para operaes com cadeias de caracteres
Apontador de base
Apontador de pilha
Segmento de cdigo
Segmento de dados
Segmento de pilha
Segmento extra
] Contador de programa
Palavra de status do programa
.3 Os registradores do 8088.
)s registradores BP e SP so normalmente utilizados para enderear a pilha. BP
aponta o fundo da estrutura corrente de pilha e SP aponta para o topo. Uma varivel
local ao dimento corrente normalmente endereada dando o deslocamento em relao
a BP (pois possvel especificar endereos relativos a SP).
m seguida vm os quatro registradores de segmento descritos anteriormente, seguidos
pelo dor de programa que aponta para a prxima instruo (relativa ao incio do
segmento de
o).
)s dois ltimos registradores so o IP (Instruction Pointer - apontador de
instruo) e istrador FLAGS, que na maioria das mquinas so denominados contador
de programa (Program Status Word - palavra de status de programa). O contador de
programa aponta a prxima instruo a ser executada. J o vimos anteriormente e h
pouca coisa mais a ta sobre ele.
or outro lado, o registrador FLAGS (ver Fig. 5.4) novo. No realmente um
registrador al, mas uma coleo de bits que so ligados, apagados e testados por
diversas instrues. mente, os bits tm os seguintes significados. O bit D
determina a direo das operaes adeias de caracteres. O bit 1 habilita
interrupes. O bit T habita traps para tracing, que ia para depurao.
)s bits restantes so muitas vezes denominados cdigos de condio, pois eles so
ligados agados atravs de diversas instrues dependentes de diferentes condies
que podem surgir tado negativo, zero etc.). O bit O ligado quando ocorre um
overfiow (estouro) do resultado ria operao aritmtica. Similarmente, o bit z
ligado (feito igual a 1) quando o resultado
4 l6Bits
185
3X
SI
DI
BP
SP
cS
DS
sS
ES
186 ORGANIZAO ESTRUTURADA DE COMPUTADORES
O a O ,
0 0& ' O
LJJ
Naousado 1 T IAI 1 l
Bits 12-15 111098765432 1 0
Fig. 5.4 O registrador FLAGS do 8088.
da operao zero e desligado (feito igual a 0) quando o resultado diferente de
hits A e C representam respectivamente o carry (vai-1) da metade e o carrv (vai-1)
da extr dos operandos. Finalmente, o bit P d a paridane (par ou mpar) do
resultado de uma i aritmtica. Sete dos bits no so usados no 8088, mas alguns
deles so utilizados em seus SU
O conjunto de instrues 8088 listado na Fig. 5.5. Muitas das instrues referen
ou dois operandos que so registradores ou posies de memria. Por exemplo, a ii
INC incrementa (adiciona 1 a) seu operando. Algumas das instrues possuem diversas
intimamente relacionadas. Por exemplo, as instrues de deslocamento podem fazer
esquerda ou direita e podem ou no tratar de maneira especial o bit de sinal. A
das instrues possui uma variedade de diferentes codificaes., dependentes da
natui operandos.
Na Fig. 5.5 os campos fnt so fontes de informao e no podem ser mudados. Ao c os
campos dst so localizaes destino e so normalmente modificados pela instruo.
regras acerca do que permitido ser fonte ou destino, regras estas que variam um
tanto. mente de instruo para instruo, mas no trataremos delas aqui. A maioria
das in possui duas variantes, uma que opera sobre palavras de 16 hits e outra que
opera sob de 8 bits. Elas se distinguem atravs de um bit na instruo.
Por convenincia, dividimos as instrues em diversos grupos. O primeiro grupo
instrues que movem dados pela mquina, entre registradores. memria e a pilha. O
grupo executa operaes aritmticas, com e sem sinal. Para multiplicao e diviso,
o ou o dividendo de 32 bits armazenado em AX (parte menos significativa) e DX (pa
significativa).
O terceiro grupo executa aritmtica em BCD (decimal codificado em binrio). tratan
byte como dois nibbles de 4 hits. Cada nibble armazena um dgito decimal (0 a 9).
As comi de hits 1010 a 1111 no so utilizadas. Deste modo, um inteiro de 16 hits
pode armaz nmero decimal de O a 9999. Apesar de ineficiente, esta forma de
armazenamento ei necessidade de converter a entrada deciml para binrio e depois
de volta para decimal r Estas instrues so usadas para executar aritmtica sobre
nmeros em BCD.
As instrues hooleanas e de deslocamento/rotao manipulam os hits de uma pai
byte de diversas maneiras. Vrias combinaes so providas.
Os dois grupos seguintes de instrues lidam com testes, comparaes e com desvios
b nos resultados destes testes e comparaes. Os resultados das instrues de teste
e com so armazenados em vrios bits do registrador FLAOS. Jxx significa um
conjunto de in que desviam condicionalmente, dependendo dos resultados da
comparao prvia (istc em FLAGS).
O 8088 possui diversas instrues para carga, armazenamento, cpia, comparao de
cadeias de caracteres ou palavras. Estas instrues podem ser prefixadas por um
byte denominado REP, que as fazem ser repetidas at que determinada condio seja
enc tal como CX, que decrementado depois de cada iterao at atingir 0. Desta
maneira arbitrrios de dados podem ser copiados, comparados etc.
O ltimo grupo uma mistura de instrues que no se encaixam em lugar algum. elas
se incluem instrues de converso, E/S e parada da CPU.
O 8088 (e tambm o 80286 e 80386) possui um certo nmero de instrues prefi quais
j mencionamos uma, REP. Cada prefixo um byte especial que pode preceder a das
instrues. REP faz com que a instruo seguinte a ele seja repetida, como j menc
LOCK reserva o barramento para uma instruo completa para permitir sincronizao
de ni
MOV dst, fnt
Copie da fnt (fonte) para o dst (destino)
PUSH fnt
Armazene fnt no topo da pilha
POP dst
Carregue dst com o contedo do topo da pilha
XCHG dstl, dst2
Troque dstl com dst2
LEA dst, fnt
Carregue o endereo efetivo de fnt em dst
LDS dst, fnt
Carregue o registrador segmento de dados e dst usando fnt
LES dst, fnt
Carregue o registrador segmento extra e dst usando fnt
ADD dst, fnt
Adicione fnt a dst
SUB dst, fnt
Subtraia fnt de dst
MUL fnt
Multiplique fnt por AX (sem sinal)
IMUL fnt
Multiplique AX por fnt (com sinal)
DIV fnt
Divida DX:AX por fnt (sem sinal)
IDIV fnt
Divida DX:AX por fnt (com sinal)
ADC dst, fnt
Adicione fnt a dst e depois adicione bit de carry
SBB dst, fnt
Subtraia fnt de dst ento subtraia bit de carry
INC dst
Adicione 1 a dst
DEC dst
Subtraia 1 de dst
NEG dst
Negue dst (subtraia-o de O)
Ajuste decimal para adio
Ajuste decimal para subtrao
Ajuste ASCII para adio
Ajuste ASCII para subtrao
Ajuste ASCII para multiplicao
Ajuste ASCII para diviso
DAA
DAS
AAA
AAS
AAM
AD
SALISAR dst, cont
SHL/SHR dst, cont
Desloque dst esquerdaldireita cont bits
Desloque logicamente esquerda/direita de cont bits
Rote dst esquerda/direita cont bits
Rote dst atravs dos bits de carrey
AND dst, fnt
OR dst, fnt
XOR dst, fnt
NOR dst
ROLIROR dst, cont
RCL/RCR dst, cont
Faa um AND dos operandos e ative FLAGS
. Compare fntl com fnt2 e ative FLAGS
AND de fnt em dst
OR de fnt em dst
OR exclusivo de fnt em dst
Substitua dst por seu complemento de 1
NVEL CONVENCIONAL DE MQUINA 187
o
E
a
'o
TSTfntlfnt2 CMP fntl, fnt2
O conjunto de instrues do Intel 8088.
188 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Fig. 5.5 Cont.
Jxx end
JCXZ end
CALL end
RET
IRET
LOOPxx
JMP end Desvie incondicionalmente para erid
INTend
INTO
LODS
STOS
MOVS
CMPS
SCAS
STC
CLC
CMC
STD
CLD
STI
CLI
Desvios condicionais baseados no registrador FLAGS
Desvie se CX for O
Chave procedimento em end
Retorne ao procedimento
Retorne da interrupo
Continue em Ioop at que a condio seja encontrada
Inicie uma interrupo de software
Interrompa se o bit de overflow estiver ligado
Carregue cadeia de caracteres
Armazene cadeia de caracteres
Copie cadeia de caracteres
Compare duas cadeias de caracteres
Examine cadeias de caracteres
PUSHF
POPF
LAHF
SAHF
Ative bit de carry no registrador FLAGS
Desative bit de carry no registrador FLAGS
Complementeo bit de carry no registrador FLAGS
Ative bit de direo no registrador FLAGS
Desative bit de direo no registrador FLAGS
Ative bit de interrupo no registrador FLAGS
Desative bit de interrupo no registrador FLAGS
Armazene o registrador FLAGS no topo da pilha
Carregue o reg. FLAGS com o contedo do topo da pilha
Carregue AH com o contedo do registrador FLAGS
Carregue o registrador FLAGS com o contedo de AH
CWD
Converta palavra em AX para palavra dupla em DX:AX
CBW
Converta byte em AL para palavra em AX
XLAT
Traduza AL de acordo com uma tabela
NOP
Nenhuma operao
HLT
Pare
ESC
Escape para (inicie) o co-processador de ponto flutuante
IN porto
Coloque em AL ou AX o byte ou palavra proveniente de porto
OuTporto
Envieaoportoobyteoupa
WAIT
Espere por uma interrupo
e
o
8
e
e
e
(O
a
1-
a
a
a
-Q
ao,
0
o
8
a
o,
o
o, a
(O
c
o, o,
o
1
NVEL CONVENCIONAL DE MQUINA 189
r. Outros prefixos so usados para forar uma instruo a buscar seu operando do
segmento a ou segmento extra, ao invs do segmento de dados.
:1 80286
ndo terminado de examinar o 8088, vamos agora reexaminar o 80286. No nvel
convencional
luina, o processador 80286 muito similar ao 8088. As diferenas principais do
ponto
a do usurio esto sumarizadas na Fig. 5.6. Para facilitar a execuo de programas
para
no 80286, a Intel proveu a pastilha com dois modos. No modo de endereamento real
ente apenas denominado modo real), o 80286 finge que um 8088 e faz tudo (quase)
eira que um 8088 teria feito. No modo de endereamento virtual protegido
(geralmente
denominado modo protegido) esto disponveis algumas facilidades no presentes no
8088.
Espao de endereamento 1 MB
8088
Modo real
Registradores de segmento armazenam apontadores
Nenhum mecanismo de proteo
Nenhum suporte de multiprogramao
Instrues bsicas
80286
Modos real e protegido
16384 segmentos de at 64K
Registradores de segmento armazenam seletores
Proteo utilizando anis
Multiprogramao suportada
Instrues bsicas, estendidas e de controle
Principais diferenas entre o 8088 e 80286, para o programador.
ii ambos os modos, o 80286 possui os mesmos 14 registradores que so mostrados na
3. Os registradores possuem os mesmos comprimentos e executam as mesmas funes
8088. Alm disso, todas as instrues listadas na Fig. 5.6 funcionam no 80286 em
ambos los, e em quase todos os casos possuem exatamente a mesma semntica. As
nicas diferenas os detalhes de implementao, tais como o que acontece se
armazenarmos o contedo istrador SP no topo da pilha. O 8088 primeiramente
decrementa o SP e depois armazena valor na pilha, enquanto o 80286 primeiramente
salva o contedo de SP e depois armazena dor salvado na pilha. A razo para esta
diferena deve-se a mudanas no microcdigo. Lneira geral, quase todos os programas
bem comportados de 8088 sero executados sem caes no 80286 em ambos os modos.
qualquer forma, os dois modos no so idnticos. A maior mudana neste nvel est
lereamento da memria. No modo real o 80286 possui um espao de endereamento 4, o
mesmo do 8088. No modo protegido, ele possui 16.384 segmentos, cada um com (bytes
de comprimento. Durante o projeto de 80286, surgiu a questo de como permitir
programas utilizem esta memria adicional sem modificar radicalmente a mquina.
rna abordagem teria sido manter o projeto da Fig. 5.2, mas incrementando o tamanho
istradores de segmento para acomodar o maior espao de endereamento. Esta
abordagem seguida, pois seria necessrio um tamanho impraticvel para os
registradores de segmento. n vez disso, um mtodo mais sofisticado foi utilizado.
Os registradores de segmento foram os com 16 bits, mas ao invs de representarem
apontadores de 20 bits, no modo protegido presentam ndices (denominados seletores)
para tabelas de sistema. Deste modo, o valor tS no significa que o segmento de
dados se inicia no endereo 32, mas que o segmento DS apontado pela segunda
entrada de uma certa tabela. Cada entrada contm um apontador bits e outras
informaes. Estudaremos em detalhes os endereamentos do 80286 e do
iuando chegarmos ao Cap. 6, memria virtual.
80286 no modo protegido possui tambm outras diferenas do 8088. A utilizao da
palavra
gido" no nome do modo sugere que ele prov alguma proteo. Esta observao
correta.
vel inicializar as tabelas de segmentos de tal maneira que quando o 80286
utilizado
m sistema de multiprogramao, cada processo pode ser impedido de acessar segmentos
190 ORGANIZAO ESTRUTURADA DE COMPUTADORES
pertencentes a um outro processo. Por ser este mecanismo intimamente ligado mei
deixaremos tambm esta discusso para o Cap. 6.
Alm do conjunto de instrues do 8088, o 80286 possui algumas outras in
os projetistas esqueceram no primeiro projeto. Elas esto listadas na Fig. 5.7.
Instruo Descrio
PUSHA
Armazena todos os registradores na p,Iha
POPA
Retira todos os registradores da pilha
ENTER cont, profundidade
Reserva rea da pilha para procedimento
LEAVE
Libera rea da pilha para saida de procedimento
BOUND reg, end
Verifica limites de array
VERRNERW
Verifica se pode ler/escrever em uni segmento
Fig. 5.7 Instrues adicionais presentes no 80286.
A maioria destas instrues torna possvel executar operaes chave com menc do que
com o 8088. Alm disso, algumas destas regras barrocas, acerca de quais so
permitidos para que instrues, foram relaxadas. Por exemplo, a instruo PUSH ter
uma constante como operando. No 8088, PUSH pode ter apenas operandos re memria mas
no constantes. Esta modificao torna mais eficiente a passagem de como parmetros
para procedimentos chamados. A instruo PUSI-IA armazena o de AX, CX, DX, BX, SP,
BP, SI e DI na pilha, nesta ordem. POPA recupera o armazenados para os
registradores. Estas instrues so utilizadas tipicamente 01 interrupo para
salvar o estado da mquina antes de tratar uma interrupo.
As instrues ENTER e LEAVE executam aes que so necessrias quando
um procedimento ou se sai dele. Fazendo com que instrues especiais executem toc
de uma vez, a entrada e a sada de procedimento podem tornar-se mais rpidas.
BOUND faz verificao de limites de arrays. Como todas as outras novas in
provida como uma otimizao, pois o mesmo servio pode ser executado por um
de instrues do 8088, apenas mais vagarosamente.
Finalmente VERR e VERW esto relacionadas com a segmentao do 80286. Ela
a um programa testar as guas antes de saltar nelas. Atravs da verificao prvi
evitar um erro de segmentao em um programa.
O Intel 80386
O 80286 possui duas limitaes fundamentais que levaram a Intel a desenvolve
Primeiramente, o 80286 uma CPU de 16 bits, com registradores, operandos e ins 16
bits. Para muitas aplicaes, uma CPU de 32 bits necessria. Em segundo lugar de
memria consistindo em muitos segmentos de 64K um grande transtorno. O prc est
no nmero de segmentos (16.384), que mais do que adequado, mas no pequen dos
segmentos (64K). O 80386 elimina estes problemas e ao mesmo tempo acrescen
facilidades que tornam o 80386 consideravelmente mais poderoso do que o 80286.
tambm muito mais rpido.
No projeto do 80386, a Intel fez um grande esforo para manter a compatibil o 8088
e o 80286, a fim de permitir que o 80386 executasse programas j existentes binrio
do 8088 e 80286. As principais diferenas entre o 80286 e o 80386, do pon do
programador, so mostradas na Fig. 5.8.
O modo real e o modo protegido esto ambos disponveis no 80386 e operam muito
similar do 80286. A novidade, entretanto, o modo virtual, que uma forma mi
entre os modos real e protegido. Como no modo real, pretendia-se tambm nele exec
programas em cdigo binrio do 8088.
NVEL CONVENCIONAL DE MQUINA 191
80286 80386
Modos real e protegido
Modos real, virtual e protegido
16384 segmentos de at 64K
16384 segmentos de at 4G
4 registradores de segmento
6 registradores de segmento
Aritmtica de 8 e 16 bits
Aritmtica de 8, 16 e 32 bits
Registradores de 16 bits
Registradores de 32 bits
Modos de endereamento de 16 bits
Modos de endereamento de 16 e 32 bits
8 prefixos
12 prefixos
(No presentes)
Diversas instrues novas
Principais diferenas entre o 80286 e o 80386, para o programador.
diferena que, no modo real, um programa pode fazer qualquer coisa que um 8088
azer, inclusive modificar os registradores de segmento, executar EIS etc. Isto lhe
d fora o que suficiente para derrubar o sistema. Em modo virtual, todas as
instrues normais iam como no 8088, mas as instrues que potencialmente podem
derrubar o sistema, tais E/S, no so executadas. Ao invs disso, elas provocam
Iraps para o sistema operacional, de ento emul-las (simul-las). Como resultado,
possvel ter mltiplos programas 8088 ecuo simultnea, cada um protegido dos
outros e o sistema operacional protegido de les.
uitos computadores baseados no 80386 executam UNIX como sistema operacional nativo
em mltiplas janelas aos usurios. Em uma ou mais janelas, o usurio pode executar
programas MS-DOS. Este artifcio conseguido fazendo o UNIX chavear o 80386 para o
virtual imediatamente antes de disparar um programa MS-DOS. Todas as tentativas
programa de fazer E/S, escrever na RAM de vdeo etc., causam traps no UNIX que a
ento o trabalho desejado e retorna o controle para o programa MS-DOS. Desta
maneira antigos programas MS-DOS podem executar simultaneamente em um ambiente UNIX
ar arquivos UNIX.
m dos principais objetivos do 80386 era livrar-se do limite de 64K por segmento,
mas ndo compatibilidade com programas 80286 que esperam segmentos de 64K. Esta
aparente ibilidade foi conseguida de uma maneira inteligente. Tanto o 80286 quando
o 80386 utilizam es nos registradores de segmento. Cada seletor essencialmente
apenas um ndice para as duas tabelas de 8K de descritores de segmentos. Cada
descritor contm o endereo, o, cdigo de proteo e outras informaes acerca do
segmento.
o 80386, um bit no utilizado em cada descritor foi tomado para indicar se um
segmento ou de 32 bits. Em segmentos de 16 hits, o endereo mximo 64K, e todas
as operaes palavras manipulam palavras de 16 bits. Em segmentos de 32 bits, o
endereo mximo 232 bytes, cerca de 4 bilhes), e todas as operaes sobre palavras
manipulam palavras bits. E tambm possvel em uma base de instruo por instruo
sobrepor estes defaults do um prefixo antes da instruo. E permitido a um programa
utilizar uma mistura de flos de 16 bits e de 32 hits.
mo conseqncia desta arquitetura, um programa 80386 pode enderear um mximo de
segmentos, de at 4G cada, para um espao de endereamento total de bytes. Este de
endereamento maior ou igual ao de quase todos os mainframes e supercomputadores.
s em que se podia afirmar que um supercomputador possua um espao de endereamento
do que o de um microcomputador pertencem ao passado.
ma conseqncia bvia de se ter um espao de endereamento de 2 bytes que os
aponta devem ter comprimento de pelo menos 46 bits, um nmero grande e
inconveniente. Para )ria das aplicaes isto um exagero. Em vez disso, muitos
programas 80386 utilizam smente um nico segmento de 212 bytes. Este modelo
muitas vezes afetuosamente chamado odo Motorola", pois o espao de endereamento do
680x0 consiste em um nico segmento bytes.
192 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Bits 16 8 '4 8
AH AX AL EAX
BH BX BL EBX
CH CL ECX
DH DX DL EDX
ESI
EDI
EBP
ESP
CS
SS
DS
ES
FS
GS
L
Fig. 5.9 Os registradores do 80386.
Ao utilizar mltiplos segmentos, um programa 80386 fica ainda restrito, em qualquer
i a um nico segmento para cdigo, dados e pilha, do mesmo modo que no 8088. Tamb
no 8088, prov-se o registrador de segmento extra para tornar possvel acessar
temporar um outro segmento. No 80386, foram providos dois registradores adicionais
de segm e GS, para reduzir o nmero de vezes que registradores de segmento devem
ser trocado maneira, at seis segmentos podem ser acessados sem ter de modificar
qualquer dos regis de segmento.
Alm de prover maior espao de endereamento, o outro grande avano do 803k
habilidade de executar aritmtica de 8, 16 e 32 bits. Os registradores foram
estendic 32 bits, como mostra a Fig. 5.9. Os registradores estendidos possuem os
mesmos noi velhos registradores de 16 bits, mas com um "E" colocado frente. Em um
segment bits, uma instruo para copiar uma palavra para o AX/EAX a copiar para
EAX, que anulada por um prefixo especial.
Embora no fosse necessrio, o Intel decidiu modificar a maneira pela qual as in
endereavam a memria no 80386. Em segmentos de 16 bits, tudo funciona da mesma que
no 8088 e 80286. Entretanto, em segmentos de 32 bits, um conjunto totalmente
possibilidades de endereamento (modos de endereamento) est presente. Dentre
elas, r eficientes de acessar elementos de matrizes e outros detalhes. Trataremos
detalhadamen adiante neste captulo, dos modos de endereamento. Por ora basta
compreender que as in
EIP
EFLAGS
NVEL CONVENCIONAL DE MQUINA 193
ssitam de campos de modo de endereamento para especificar onde esto estes
operandos
m registradores, na memria, na pilha ou em algum lugar qualquer.
A incluso dos registradores FS e GS requeria a incluso de dois novos prefixos,
para especificar
a prxima instruo os usasse ao invs do default (normalmente DS). Alm disso,
dois prefixos
m tambm includos para permitir que uma instruo individual num segmento de 16
bits
se um operando ou endereo de 32 bits e vice-versa. A lista completa de prefixos
dada
ig. 5.10.
Prefixo 8088 80286 80386 Descrio
REP
X
X
X
Repita at CX = O
REPZ
X
X
X
Repita at o flag Z ser ligado
REPNZ
X
X
X
Repita at o f!ag Z ser desligado
LOCK
X
X
X
Trave o barramento externo
CS
X
X
X
Utilize o segmento de cdigo
SS
X
X
X
Utilize o segmento de pilha
DS
X
X
X
Utilize o segmento de dados
ES
X
X
X
Utilize o segmento extra
FS
X
Utilize o segmento F
GS
X
Utilize o segmento G
Tamanho de operando
X
Inverta tamanho de operando (16 ou 32 bits)
Tamanho de endereo
X
Inverta tamanho de endereo (16 ou 32 bits)
5.10 Prefixos de 8088, 80286 e 80386.
O ltimo item em nossa lista a presena de um punhado de novas instrues para
testar converso de dados, copiar e outras coisas. Estas novas instrues esto
listadas na Fig.
Geralmente, estas instrues so muito mais exticas que aquelas adicionadas ao
80286. nstrues BSF e BSR examinam seus operandos, procuram bits O e ligam os bits
de FLAGS cordo. BTx um grupo de quatro instrues que podem testar, ligar, apagar
e completar individuais em uma palavra, sem perturbar os outros bits. CWDE e CDQ
convertem uma vra em dupla e uma palavra dupla em uma palavra qudrupla (8 bytes),
respectivamente, estender o sinal. As duas instrues MOVxx copiam dados de
tamanhos menores para localiza- de tamanhos maiores com ou sem extenso do sinal.
SETcc na verdade um grupo de 30 instrues, todas as quais armazenam um byte no
Istruo Descrio
F/BSR Percorra os bits para frente/para trs
X Operaes de teste de bits
Q/CWDE Converta de um comprimento para outro
VSX Copie com extenso de sinal
IVZX Copie sem extenso de sinal
Tcc Carregue o byte de cdigo de condio (flags
LD/SHRD Deslocamento duplo esquerda/direita
Carregue o seletor em FS, GS Fig. 5.11 Instrues adicionais presentes no
194 ORGANIZAO ESTRUTURADA DE COMPUTADORES
destino. O byte contm O ou 1, dependendo do estado de vrios bits de condio.
Esta s vezes usada por programadores de compilador para avaliar expresses
booleanas.
Finalmente, as instrues SHxD ordenam deslocamentos de 32 bits e (xx utili2
carregar registradores de segmento.
5.1.2 A Famlia Motorola 68000168020168030
Como j dissemos anteriormente, os Motorola 68000, 68020 e 68030 so muito m
lhantes entre si do que o so o Intel 8088, 80286 e 80386. Isso tambm vale para o
nvel com de mquina. Todos os trs processadores, por exemplo, possuem a mesma
arquitetura de Ela mostrada na Fig. 5.12. A Motorola denomina um agregado de 16
hits de pala agregado de 32 bits de palavra longa (ao invs de denomin-las
palavras e palavras dupi o faz a Intel).
Vale a pena comparar a Fig. 5.12 Fig. 5.1. Ambas possuem palavras de 16 hits e
longas ou duplas de 32 bits (no 80386), mas a ordenao dos bytes diferente. As
CP so do tipo little endian, isto , elas enumeram os bytes a partir da
extremidade de menc (little end). As CPUs Motorola so do tipo hig endian. Estas
duas abordagens so ig vlidas, mas a interligao de sistemas de diferentes
filosofias pode ser custosa.
Todos os processadores 680x0 possuem endereos de 32 bits, e assim o espao de e
mento terico para todos eles atinge 232 hytes. Entretanto, no 68000 existe um mapi
um para um entre a memria fsica e os endereos que os programas enxergam, de m o
limite lgico o mesmo que o limite fsico, ou seja, 16M. O 68020 e o 68030 no
esta restrio, de modo que os programas neles podem na verdade referenciar o
espao de ei mento completo de 32 bits.
Palavra
4 de 16 bus -
_______ Palavra no _______
endereo O " Byte O Byte 1
______ Palavra no Byte 2 Byte 3 j
endereo 2 __________________________
Palavra longa
noendereo4 -
-'.- Byte4 1 Byte5
- Palavra longa de 32 bits
Byte6 Byt
Fig. 5.12 Estrutura de endereamento da memria principal da familia 6t
Todas as mquinas 680x0 tm disponveis aos programadores 17 registradores de
e um registrador de 16 bits para armazenar bits de status (como o registrador FLAGS
dos pi
dores da Intel). Oito dos registradores de 32 bits, AO a A7, so registradores de
endere
e normalmente armazenam endereos de variveis e de estruturas de dados localizados
na IT
principal. AO a A6 no possuem qualquer funo dedicada, sendo exceo A7, que o
api
de pilha.
Os oitos registradores de dados de 32 bits, DO a D7, so registradores de dados
geral. A maioria das operaes acontece neles. Eles podem ser utilizados como op de
8, 16 ou 32 bits. As partes menos significativas de 8 e 16 bits dos registradores D
no nomes especiais, como seus correspondentes da Intel. O 17. registrador de 32
bits o o de programa. Os registradores esto mostrados na Fig. 5.13.
Endereo
O
2
3
4
5
6
7
232
NVEL CONVENCIONAL DE MQUINA 195
32
16
32
DO
Dl
D2
D3
D4
D5
D6
Apontador de pilha do usurio D7
Contador de programa
1 Registrador de status
13 Os registradores da famlia 680x0.
milarmente s CPUs Intel, as CPUs 680x0 possuem um registrador que contm bits de
flags. Este registrador, mostrado na Fig. 5.14, contm 16 bits. O byte menos
significativo
5 bits, que so feitos iguais a 1 ou O pela maioria das instrues, dependendo do
resultado
rao recm-executada. O bit C armazena o carry out (vai-!) do bit mais esquerda.
O detecta overflow (transbordo). O bit z feito igual a 1 quando o resultado for
zero.
N feito igual a 1 quando o resultado for negativo, O bit X uma variante de
menor
ncia do bit de carry.
Fig. 5.14 Registrador de status da famlia
680x0.
byte mais significativo do registrador de status utilizado pelo sistema
operacional para [ a mquina. Ele contm campos relativos ao estado da CPU,
interrupes e tracing. 'te no utilizado pelos programas dos usurios.
conjunto de instrues do 68000 disponvel aos programadores est mostrado na Fig.
s instrues que podem apenas ser executadas pelo sistema operacional no esto
listadas.
to fnt indica um operando que no alterado, enquanto dst indica um que . Com o
de instruo MOVE, se uma instruo possui tanto fnt quanto dst, um dos dois deve
se a um registrador. Apenas a instruo MOVE pode possuir dois endereos de memria
)perandos.
196 ORGANIZAO ESTRUTURADA DE COMPUTADORES
MOVE fnt, dst
Copie fnt em dst
AND fnt, dst
AND de fnt com dst
ANDI #n, dst
AND da constante n com dst
OR fnt, dst
OR de fnt com dst
ORI #n, dst
OR da constante n com dst
EOR fnt, dst
OR exclusivo de fnt com dst
EORI #n, dst
OR exclusivo da constante n com dst
NOT dst
Substitua dst pelo seu complemento de 1
MOVEA fnt, An
MOVEM fnt, dst
MOVEP fnt, dst
MOVEQ #n, dst
LEA fnt, An
PEA fnt
CLR dst
EXG dstl, dst2
ADD fnt, dst
ADDA fnt, An
ADDI #n, dst
ADDQ #n, dst
ADDX fnt, dst
SUB fnt, dst
SUBA fnt, An
SUBI #n, dst
SUBQ #n, dst
SUBX fnt, dst
MULU fnt, Dn
MULS fnt, Dn
DIVU fnt, dst
DIVS fnt, dst
NEG dst
NEGX dst
ABCD fnt, dst
SBCD fnt, dst
NBCD dst
Copie fnt em An
Copie mltiplos registradores para/de memria
Copie dados de/para bytes alternados da memria
Copie a constante n em dst (-129< n < 128)
Carregue endereo efetivo de fnt em An
Empilhe endereo efetivo
Copie zero em dst
Troque entre si o contedo de dois registradores de 32 bits
Adicione fnt a dst
Adicione fnt a An
Adicione a constante n a dst
Adicione a constante n a dst (O < n < 9)
Adicione fnt a dst com extenso de bits
Subtraia fnt de dst
Subtraia fnt de An
Subtraia a constante n de dst
Subtraia a constante n de dst (O < n < 9)
Subtraia fnt de dst com extenso de bus
Multiplique Dn por fnt (sem sinal)
Multiplique Dn por fnt (com sinal)
Divida dst por fnt (sem sinal)
Divida dst por fnt (com sinal)
Negue dst (subtraia-o de O)
Subtraia dst de O com extenso de bits
Adicione nmeros em BCD
Subtraia nmeros em BCD
Negue nmero em BCD
e
e
c
e,
e
e
1-
e
e,
E
e
e
e
a
O
o
e
e
c
e
1:
Fig. 5.15 O conjunto de instrues do Motorola 68000.
LSL/LSR #cont, dst
ROL/ROR #cont, dst
ROXL/ROX #cont, dst
SWAP Dn
TST fnt
CMP fntl fnt2
CMPA fnt, An
CMPM (An)+, (Am)+
CMPI #n, fnt
JMP end
BRA end
Bcc end
JSR end
BRS end
RTS
RTR
NVEL CONVENCIONAL DE MQUINA 197
ASLJASIR #cont, dst
Desloque dst esquerda/direita de cont bits
EXT Dn
Estende sinal
LINK An, #n
Aloque n bytes da pilha ao entrar no procedimento
UNLK An
Libere a rea de memria ao sair do procedimento
NOP
Nenhuma operao
CHK fnt, Dn
Verifique limites do array
TAS dst
Test-and-set para sincronizao de multiprocessador
DBcc dst, end
TRAP #n
TRAPV
Scc dst
BTST fnt, dst
BSET fnt, dst
BCLR fnt, dst
BCHG fnt, dst
Desloque logicamente esquerda/direita de cont bits
Rote dst esquerda/direita cont bits
Rote com extenso de bits
Troque entre si as metades de Dn
Compare fnt com zero
Compare fntl com fnt2 e ligue fiags
Compare fnt com An e ligue f!ags
Compare indiretamente e incremente registradores
Compare a constante n com fnt e ligue flags
Salte para end
Desvie para end
Desvie condicionalmente para and baseando-se nos flags
Salte para sub-rotina
Desvie para sub-rotina
Retorne da sub-rotina
Retorne e restaure cdigos de condio
Decremente dst e desvie condicionalmente
Inicie um trap de vetor n
Trap se overflow
Carregue dst de acordo com o cdigo de conduo
Teste o bit especificado por fnt
Teste o bit especificado por fnt, ento ligue-o
Teste o bit especificado por fnt, ento desligue-o
Teste o bit especificado por fnt, ento mude-o
o
a
o
5 Cont.

198 ORGANIZAO ESTRUTURADA DE COMPUTADORES


Observe que a Motorola escolheu uma ordem diferente daquela da Intel para os ope
em sua linguagem de montagem simblica (isto , ASCII). No 680x0, a instruo
ADD x,y
significa adicione x a y, enquanto em todas as mquinas Intel significa adicione y
a x.
Uma outra peculiaridade notacional o uso do sinal sustenido (#) em algumas inst
tais como
ADDI #n, dst
Ela indica que o operando deve ser uma constante inteira. An e Dn so utilizados
para r que um operando particular deve ser um endereo ou um registrador de dados,
respectiva Finalmente, a instruo CMPM utiliza dois registradores de endereamento
para local operandos, e ento incrementa os registradores. Explicaremos a notao
mais tarde quand mos de endereamento.
Do mesmo modo que fizemos com as CPUs Intel, as dividimos em diversos grup
aproximadamente as mesmas funes. O primeiro grupo encarregado da movimenta
bytes, palavras e palavras longas atravs da mquina. A maioria das instrues
imediata, MOVEP, que tem de executar E/S utilizando certas pastilhas perifricas
obsoletas.
Os dois grupos seguintes so para aritmtica de nmeros binrios comuns e nmeros d
codificados em grupos de quatro bits binrios (BCD) com dois dgitos decimais por
byte. 1 diversas variantes para algumas instrues, cada uma com uma codificao
diferente. Por e ADDI, SUBI, ADDQ e SUBO, todas adicionam ou subtraem uma
constante, mas as duas pr aceitam qualquer constante, enquanto que as duas ltimas
so instrues curtas especia adio e subtrao de constantes de 3 bits. Estas
instrues especiais complicam a vida dos prc dores de compiladores, pois muitas
vezes mais eficiente, digamos, obter 130 de algur somando 5 a 125 do que copiar
130 para l.
Em seguida vm as instrues booleanas e as instrues de deslocamento/rotao, que
sobre operandos em registradores ou memria. Elas so muito semelhantes a suas
correspoi Intel. A elas se seguem diversas instrues que testam ou comparam seus
operandos bits de flag iguais a 1 ou a O dependendo dos resultados.
O grupo seguinte cuida das transferncias de controle. Ambos os desvios e salto
presentes, a diferena entre eles est na maneira pela qual o endereo alvo
codificac desvios, d-se um deslocamento em relao instruo, enquanto nos
saltos utiliza-se um e de endereamento mais geral. Podem-se chamar procedimentos e
retornar deles. As ins que contm cc apresentam 16 variaes, com diferentes bits
de condio a serem testad exemplo, BLT significa Branch Less Than (desvie se menor
que) e BEO significa Branch (desvie se igual a), dependendo dos resultados de um
teste ou comparao prvia.
As quatro instrues Bxxx so para testar, fazer igual a 1 ou a O e modificar bits
tndivid
uma posio de memria ou registrador de 32 bits. O primeiro operando ou uma
constante
registrador que especifica qual bit utilizar, e o segundo identifica o operando que
contm o b
O ltimo grupo uma miscelnea de instrues que no se encaixam convenient em
nenhum lugar. As instrues LINK e UNLK so especialmente importantes e so pelos
compiladores para ajustar a pilha ao entrar ou ao sair de um procedimento. Conceitu
so similares s instrues ENTER e LEAVE do 80286 e 80386, embora difiram nos
deta,
Quase todas as instrues que utilizam operandos podem lidar com valores de 8 32
bits. O comprimento do operando codificado em um campo de 2 bits dentro da in
Como apenas trs dentre quatro combinaes so necessrias, a quarta
freqentemente u para uma instruo completamente diferente, tipicamente uma que
possa manipular um or de comprimento simples. Por exemplo, a quarta combinao para
AND uma instri multiplicao. Quase no h um padro na maneira pela qual as
instrues so codificada
Diferenas entre o 68020/68030 e o 68000
At agora, tudo que dissemos se aplica igualmente bem ao 68000, 68020 e 68030.
disso, as trs mquinas no so totalmente idnticas ao nvel convencional de
mquina. Do
NVEL CONVENCIONAL DE MQUINA 199
x fnt, #n, Dn Instrues para manipulao de campo de 8 bits
#n Ativa ciclo de txeakpoint no barramento
Dm, Dn, fnt Sincronizao de multiprocessador
2 Sincronizao de multiprocessador complicada
2 fntl, 1 nt2 Verifique limites do array e trap
2fntl,fnt2 Verifique limites do array e ligue flags
L fnt, dst Diviso de palavras longas, sem sinal
Sint, dst Diviso de palavras longas, com sinal
3 dst Estender byte para palavra longa
3AL Causa um frap de instruo ilegal
LJ.L ff1, dst Multiplicao de palavras longas, sem sinal
S.L fnt, dst Multiplicao de palavras longas, com sinal
< Dy, #n Empacote dois dgitos BCD em um byte
#n Retorne do procedimento e libere rea de pilha
'cc Trap se a condio for verdadeira
K Dx, Dy, #n Desempacote dgitos BCD de um byte
Fig. 5.16 Novas instrues pre
Comando de co-processador ntes nos 68020 e 68030.
que a Intel decidiu acrescentar algumas novas instrues mais tarde, o mesmo fez a
Motorola. ;trues presentes tanto no 68020 quanto no 68030 e que so disponveis
aos programadores listadas na Fig. 5.16.
Jgumas das novas instrues provem maneiras mais eficientes de executar certas
operaes, mo verificao de limites de arrays, manipulao de campos de bits,
converso de um )ara uma palavra longa, empacotamento e desempacotamento de nmeros
BCD, retornos )cedimento e sincronizao de multiprocessadores. Nenhuma destas
realmente essencial, s projetistas de chips invariavelmente sentem uma vontade
irresistvel de adicionar novas es.
)utras instrues corrigem problemas existentes no conjunto original de instrues,
tais como i de multiplicao e diviso de 32 bits verdadeiras. Isto foi
originalmente omitido talvez falta de rea na pastilha.
KPT usada para comunicar com analisadores lgicos externos conectados ao
barramento tema. TRAPcc e ILLEGAL geram ambos traps, a primeira se uma certa
condio for ieira, e a ltima, sempre. Finalmente, cpXXX um grupo de instrues
para comunicar m co-processador de ponto-flutuante ou outro.
l duas instrues, CALLM, para chamar um mdulo, e RTM, para retornar de um
mdulo, jram acrescentadas ao 68020 e novamente retiradas no 68030. As companhias
tambm de opinio.
Jm disso, algumas instrues do 68000 contm uma constante de 16 bits, por
exemplo, incia para o desvio relativo instruo corrente. A maioria delas foi
modificada no 68020 0 para permitir constantes de 32 bits. A no ser nos pontos
listados acima, para os programas irios, todas as trs CPUs so iguais. Para o
sistema operacional, entretanto, existem outras nas, particularmente gerncia de
memria e caching.
Comparando o 80386 ao 68030
instrutivo comparar o 80386 ao 68030, duas das principais pastilhas de 32 bits,
para ver diferentes projetistas tomam diferentes decises. Devemos iniciar dizendo
que as duas neste nvel, mais se assemelham do que diferem. Olhando rapidamente os
conjuntos de es veremos que eles possuem mais ou menos os mesmos tipos de
instrues, embora
200 ORGANIZAO ESTRUTURADA DE COMPUTADORES
difiram nos detalhes. Ambos possuem instrues para transferir dados, executar
aritr
e decimal, executar operaes booleanas e de deslocamento/rotao, executar tran
controle e manipular campos de bts. O 80386 tem operaes para cadeias de ca
68030 pode copiar mltiplos registradores em uma instruo, mas em geral a mai
instrues de cada mquina possui uma instruo correspondente na outra.
A diferena mais significativa entre os dois o endereamento. O 80386 possu de
endereamento segmentado com 16.384 segmentos de 232 bytes. O 68030 possui ti de
232 bytes. Ao mesmo tempo em que a idia de um grande espao de endere bits)
parece inicialmente atraente, ela tambm significa que qualquer apontador devi o
que dispendioso, ou devem existir regras complicadas para assegurar que nun de
alguma estrutura de dados apontar para fora de seu segmento. Na prtica, o espao
mento do Motorola suficientemente grande, de forma que os 16 bits adicionais
muita validade. A Intel nunca teria projetado tal mquina se no fosse basicamente
pela de ser compatvel com tudo relacionado ao 8080.
Uma outra diferena est nos registradores. Os registradores 80386 no so todos ei
Por exemplo, as instrues de loop sempre utilizam ECX. Ainda que o 80386 seja do
que o 80286 neste aspecto, ele no contudo to simples quanto o 68030, cujos rt
de endereo so todos equivalentes e cujos registradores de dados so tambm todos
e Conseqentemente, os compiladores para o 68030 so mais simples do que aqueles pa
Ambas as mquinas podem manipular valores de 8, 16 ou 32 bits. O 68030 uma maneira
imediata; um campo de 2 bits da instruo especifica o tamanho. O 8( apenas 1 bit,
o qual especifica se byte ou palavra. "Palavra" significar 16 ou 32 bits, d do
tipo de segmento e da presena ou ausncia de um prefixo. O esquema da Int
elegante, mas na prtica provavelmente mais eficiente, pois poucos so os progr
uma mquina de 32 bits que necessitam de palavras de 16 bits.
Os mtodos de execuo de EIS no 80386 e 68030 so diferentes. O primeiro possui
explcitas para leitura e escrita em portos de E/S. O segundo, no; este utiliza
EIS em memria. A E/S mapeada em memria um pouco mais geral, pois qualquer pode
ser utilizada para ler ou escrever em um registrador de E/S, mas este um menor
importncia.
Uma ltima diferena entre as duas mquinas a presena de modos real e virtual
algo de que o 68030 no necessita. Naturalmente, estes outros modos so apenas n
para execuo de software obsoleto, e um programa escrito especificamente para o
atrapalhado por eles.
5.2 FORMATOS DE INSTRUES
Um programa consiste em uma seqncia de instrues, cada uma delas especificam
ao particular. Parte da instruo, denominada cdigo de operao, diz qual a ao
a ser Muitas instrues contm ou especificam a localizao do dado utilizado pela
instr exemplo, uma instruo que compara dois caracteres, para verificar se so os
mest especificar quais os caracteres que devem ser comparados. A questo geral da
especil onde os operandos esto (isto , seus endereos) denominada endereamento
e
Cdigo de operao
(a
Cd. de oper.
Endereo
1
{b)
Endere
Cd. de oper.
Endereo 1
o 2 ]
Fig. 5.17 Trs formatos tpicc o: (a) instruo sem endere truo de um endereo;
(c) it dois endereos.
(c)
NVEL CONVENCIONAL DE MQUINA 201
o 5.3.
Fig. 5.17 mostra vrios formatos tpicos para as instrues de nvel 2. Em algumas
mquinas
iel 2 todas as instrues possuem o mesmo comprimento, j em outras podem existir
dois
s comprimentos. Alm disso, as instrues podem ser mais curtas, do mesmo tamanho
iis longas do que o comprimento de uma palavra.
dgumas relaes possveis entre comprimento de instruo e comprimento de palavra
so adas na Fig. 5.18.
Critrios de Projeto para Formatos de Instrues
uando uma equipe de projeto de computadores tem de escolher um formato de instruo
)rmatos) para uma mquina, deve considerar diversos fatores. Primeiramente, e o
mais
tante, instrues curtas so melhores do que as longas. Um programa que consiste
em rues de 16 bits toma apenas metade do espao da memria necessria a n
instrues bits. Memria, afinal de contas, no grtis, de forma que os
projetistas no gostam ;tla.
Im segundo ponto que cada memria tem uma taxa de transferncia particular que
ninada pela tecnologia e projeto de engenharia da memria. A taxa de transferncia
de nemria o nmero de bits por segundo que pode ser lido da memria. Uma memria
pode fornecer a um processador (Ou a um dispositivo de EIS) mais bits por segundo
e uma memria lenta.
e a taxa de transferncia de uma memria particular for de t bps e o comprimento
mdio
truo de r bits, a memria pode prover no mximo tlr instrues por segundo.
Portanto, qual as instrues so executadas (isto , a velocidade do processador)
depende do
rimento de instruo. Instrues mais curtas significam processador mais rpido. Se
o tempo
rio execuo de uma instruo for grande comparado ao tempo necessrio para
busc-la
1 palavra
reo
Instruo
Endereo
Instruo
Instruo
o
2
3
Instruo
Instruo
Instruo
Instruo
Instruo
Instrijo
Instruo
Instruo
Instruo
Instruo
Instruo
Instruo
Instruo
Instruo
Instruo
Instruo
Instruo
(b)
Endereo
O Instruo Instruo
(a)
reo
Instruo
Instruo
Instruo
Instruo
Instruo
Instruo
Instruo
2
3
4
5
6
7
Instruo
Instruo
Instruo Instruo Instruo
Instruo Instruo Instruo
Instruo Instruo Instruo
Instruo Instruo
Instruo
Instruo Instruo
(c) (d)
.18 Algumas relaes possveis entre comprimento de uma instruo e comprimento de
uma palavra.
202 ORGANIZAO ESTRUTURADA DE COMPUTADORES
da memria, o tempo de busca de instruo no ser to importante. Entretanto
rpidas, a memria freqentemente o gargalo. Aumentar o nmero de instrul por
segundo portanto um importante critrio de projeto.
Espao suficiente na instruo para expressar todas as operaes desejadas
critrio de projeto para formatos de instrues. Uma mquina com 2 operaes e ui
menor do que n bits impossvel. Simplesmente no h espao suficiente no cdigo
para indicar todas as operaes.
Um terceiro critrio que altamente desejvel que o comprimento de palavra seja
um mltiplo intejro de seu comprimento de caractere. Se o cdigo do carac k bits, o
comprimento de palavra deve ser k, 2k, 3k, 4k, 5k,.., de outra forma, ser d espao
ao armazenar caracteres. Naturalmente, possvel armazenar 3,5 caracteres mas
fazer isto provoca acessos muito ineficientes aos caracteres. As restries imposta
mento de palavra pelo cdigo de caractere afetam o comprimento de instruo, pi uma
instruo ocupar um nmero inteiro de bytes ou palavras, ou deve um nmer
instrues encaixar-se em uma palavra. Um projeto com o caractere com 9 bits, uni
de 12 bits e uma palavra de 31 bits seria catastrfico.
Um quarto critrio de projeto diz respeito ao nmero de bits no campo de endereo o
projeto de uma mquina com o caractere de 8 bits (possivelmente 7 bits mais uma
memria principal que deve armazenar 216 caracteres. Os projetistas podem escoil s
unidades endereos de 8, 16, 24 ou 32 bits como tambm outras possibilidades.
Imagine o que aconteceria se a equipe de projeto degenerasse em duas faces i
advogando tornar o byte de 8 bits a unidade bsica de memria e a outra advogandc
de 32 bits como unidade bsica de memria. O primeiro grupo proporia uma mem bytes,
numerados 0, 1, 2, 3 65535. O segundo grupo proporia uma memria de 21 numeradas 0,
1, 2, 3 16383. Ambas as organizaes de memria tm a mesma de bits.
O primeiro grupo diria que, para comparar dois caracteres na organizao de
32 bits, o programa no teria apenas de buscar as palavras que contivessem os
caraci
teria tambm de extrair cada caractere de sua palavra, a fim de compar-los. Isto
custos adicionais, devido s instrues extras, e portanto gastos de espao. A
organ
8 bits, por outro lado, prov um endereo para cada caractere, tornando assim a co
mais fcil.
Os partidrios da palavra de 32 bits replicariam dizendo que a proposta deles requ
endereos separados, enquanto a proposta de byte de 8 bits requer 16 bits para
a mesma memria. Um endereo mais curto requer uma instruo mais curta, que n
toma menor espao mas que tambm requer menor tempo de busca. Alternativaml
poderiam conservar o endereo de 16 bits para enderear uma memria quatro ve;
do que a permitida pela organizao de 8 bits.
Este exemplo demonstra que, para se obter uma resoluo mais fina de memri pagar o
preo dos endereos mais longos, o que em geral significa instrues mais mximo em
resoluo uma organizao de memria em que cada bit enderevel dii (por
exemplo, Burroughs B 1700). No outro extremo est uma memria que consiste en muito
longas (por exemplo, a srie CDC Cyber tem palavras de 60 bits).
5.2.2 Expandindo os Cdigos da Operao
Na seo anterior vimos como endereos curtos e boa resoluo de memria p
comparados nos prs e contras. Nesta seo examinaremos os compromissos que em
cdigos de operao e endereos. Considere uma instruo de o + k bits com um
operao de k bits e um endereo nico de n bits. Esta instruo permite 2'
operaes e 2 clulas endereveis de memria. Alternativamente, os mesmos n + k
bits podem sei em um cdigo de operao de (k 1) bits e um endereo de (n + 1)
bits, o qu apenas metade das instrues e duas vezes a memria enderevel, ou a
mesma q' de memria mas com duas vezes a resoluo. Um cdigo de (k + 1) bits e um
em (n - 1) bits provem mais operaes, mas o preo um menor nmero de clulas
end ou resoluo pior e a mesma quantidade de memria enderevel. Compromissos
bastai
NVEL CONVENCIONAL DE MQUINA 203
so possveis entre bits de cdigo de operao e bits de endereo alm daqueles
mais s, j descritos. O esquema discutido nos pargrafos seguintes denominado
expanso de de operao.
conceito da expanso de cdigo de operao pode ser mais claramente examinado
atravs exemplo. Considere uma mquina cjas instrues possuem comprimento de 16
bits e endereos possuem comprimento de 4 bits, como mostra a Fig. 5.19. Esta
situao poderia wvel para uma mquina que possusse 16 registradores (logo,
endereo de registrador its) nos quais acontecessem todas as operaes aritmticas.
Um possvel projeto teria cdigo rao de 4 bits e trs endereos em cada
instruo, provendo 16 instrues de trs endereos.
131211109 876543210
III
Fig. 5.19 Instrues com cdigo de opera
io de Endereo 1 Endereo 2 Endereo 3 o de 4 bits e trs campos de
endereo
rao de 4 bits.
ntretanto, se os projetistas necessitarem de 15 instrues de trs endereos, 14
instrues s endereos, 31 instrues de um endereo e 16 instrues sem endereo,
podem utilizar ligos de operao O a 14 como instrues de trs endereos, mas
interpretam o cdigo rao 15 de modo diferente (veja a Fig. 5.20).
cdigo de operao 15 informa se o cdigo de operao est contido nos bits 8 a 15
12 a 15. Os bits O a 3 e 4 a 7 constituem dois endereos, como usualmente. Todas as
trues de dois endereos tm 1111 como os 4 bits mais esquerda e os nmeros de
1101 nos bits 8 a 11. As instrues com 1111 como os 4 bits mais esquerda e 1110
11 nos bits 8 a 11 sero tratadas de maneira especial. Elas sero tratadas como se
seus s de operao estivessem nos bits 4 a 15. O resultado so 32 novos cdigos de
operao. so necessrios apenas 31, o cdigo de operao 111111111111
interpretado de forma ificar que o cdigo de operao real est nos bits O a 15,
provendo assim 16 instrues idereo.
orno vimos nesta discusso, o cdigo vai ficando cada vez maior, isto , as
instrues s endereos tm cdigo de operao de 4 bits, as instrues de dois
endereos tm cdigo erao de 8 bits, as instrues de um endereo tm cdigo de
operao de 12 bits e as ;es sem endereo tm um cdigo de operao de 16 bits.
a prtica, a expanso de cdigos de operao no to limpa e regular como em
nosso )lo. Dentre outras coisas supusemos que todos os operandos necessitavam de 4
bits. Na ade, muitas vezes so necessrios diversos comprimentos e formatos
diferentes.
Exemplos de Formato de Instruo
Festa seo examinaremos os formatos de instrues de nveis convencionais de
mquina P-11, Intel e Motorola. Inclumos aqui o PDP-11 para que sua simplicidade e
regularidade n, como um farol, iluminar os futuros arquitetos de conjuntos de
instrues.
maioria das instrues de dois operandos do PDP-11 so codificadas como mostrado na
21. Cada instruo contm um cdigo de operao de 4 bits e dois campos de
endereamento its. O bit mais esquerda do cdigo de operao indica se a
instruo opera sobre bytes lavras. Os campos de endereamento subdividem-se em um
de 3 bits para modo e outro Dits para registrador (o PDP-11 possui 8
registradores). Os campos de modo informam perando est em um registrador, se est
na memria, se uma constante etc. Os mesmos iodos que so disponveis para
operandos fonte so tambm disponveis para operandos o, e qualquer cdigo de
operao pode ser utilizado com qualquer operando fonte e com er operando destino.
Um conjunto de instrues em que o mtodo de especificao dos
Cdigo de operao - de 8 bits
Cdigo de operao- de 16 bus
15 instrues de
3 endereos
14 instrues de
2 endereos
31 instrues de
1 endereo
16 instrues de O endereo
Fig. 5.20 Um cdigo de operao de expanso, que permite 15 instrues de trs
endereos, 14 i de dois endereos, 31 instrues de um endereo e 16 instrues sem
endereo. Os campos marca xxxx, yyyy e zzzz so campos de endereo de 4 bits.
Cdig
o de operao
Operando
fonte
Oper
ando destino
r
[ ,
'
INSTRUO
MODO
REGISTRADOR
MODO
REGISTRAI
Bits 15"\14 13 12 11 10 9 8 7 6 5 4 3 2
BYTE/PALAVRA
Cdigo de operao de 4 bits
16 bits
-u:
0001
xxxx
yyyy
zzzz
0010
xxxx
yyyy
zzzz
1100
xxxx
yyyy
zzzz
1101
xxxx
yyyy
nu
1110
xxxx
yyyy
zzzz
-
yyyy
zzzz
1111
0001
yyyy
zzzz
1111
0010
yyyy
zzzz
1111
1011
yyyy
nu
1111
1100
yyyy
zzzz
1111
1101
yyyy
zzzz
Cdigo de operao de 12 bus
.-(jiii
1110
0000D
zzzz
1111
1110
0001
mi
1111
1110
1110
zzzz
1111
1110
1111
zzzz
1111
1111
0000
m
1111
1111
0001
mui
1111
1111
1111
1111
1101
1110
zzzz
mui
:i-
1111
1111
000
1111
1111
1111
0001
1111
1111
1111
0010
1111
1111
1111
1101
1111
1111
1111
1110
1111
1111
1111
1111
15 12 11 8 7 4 3 O
Nmero de bits
Fig. 5.21 Codificao ortogonal de instrues no PDP-11.
NVEL CONVENCIONAL DE MQUINA 205
eos dos operandos independente do cdigo de operao dito ortogonal.
Programadores mpilador adotam conjuntos de instrues ortogonais.
'ara umas poucas outras instrues, inclusive instrues de um operando, o PDP-ll
utiliza squema de cdigo de operao expandido, com cdigos de operao xlii
(binrio) sendo idos como escapes para cdigos de operao maiores. Estes, tambm,
exibem considervel ridade; por exemplo, a maioria das instrues de um operando
utiliza um cdigo de operao bits e os mesmos campos modo/registrador de 6 bits
como nas instrues de dois operandos. istrues do PDP-ll, que endeream memria,
possuem uma ou duas palavras adicionais bits, seguintes instruo, para
especificar endereos.
mflia Intel 8088/80286/80386
om as CPUs Intel a situao muito diferente e muito menos regular. Geralmente
para ies de dois operandos, se um operando est na memria o outro no pode estar
na memria. r existem instrues para adicionar o contedo de dois registradores,
adicionar o contedo ri registrador ao contedo de uma localizao de memria, e
adicionar o contedo de uma zao de memria ao contedo de um registrador, mas no
existem instrues para adicionar tedo de uma localizao de memria ao contedo
de uma outra localizao de memria,
iue o PDP-ll permite devido sua ortogonalidade.
o 8088, todo cdigo de operao de um byte, mas quando surgiu o 80386, os cdigos
erao com comprimentos de 1 byte estavam praticamente esgotados, de forma que o
cdigo erao 15 (decimal) utilizado como um escape para cdigos de operao com
comprimentos bytes. O nico detalhe existente no campo de cdigo de operao a
utilizao do bit a significativo em algumas instrues para indicar byte/palavra,
e o uso do bit adjacente indicar se o endereo de memria (se for o caso) fonte
ou destino.
a maioria das instrues, aps o byte de cdigo de operao, h um segundo byte que
na onde se localizam os operandos, similarmente aos dois campos modo/registrador da
Fig. Como so apenas 8 bits, este byte se divide em um campo de 2 bits que
especifica modo s campos de 3 bits que especificam os registradores. Deste modo,
tm-se apenas quatro iras de enderear operandos (contra oito no PDP-l1), sendo que
um dos operandos deve mpre um registrador. Logicamente, pode-se especificar como
registrador qualquer um dentre BX, CX, DX, SI, DI, BP ou SP, mas as regras de
codificao proibem algumas combinaes itilizam para casos especiais.
o 80386, em segmentos de 32 bits, os modos diferem completamente daqueles do 8088 )
286. Alguns destes modos requerem um byte adicional, denominado SIB (eScala,
Indice,
que prov uma especificao adicional. No este um esquema ideal, mas
simplesmente uma escassez de bits.
5 de tudo isto, algumas instrues possuem mais um, dois ou quatro bytes para
especificar lereo de memria e, possivelmente, mais um, dois ou quatro outros
bytes, utilizados como perando constante (por exemplo, para copiar o nmero 100
para um registrador).
) conjunto de todos os formatos de instruo do 8088, 80286 e 80386 mostrado na
Fig. Cada instruo pode ter at seis campos, cada um deles podendo ter de O a 5
bytes. No e no 80286, a menor instruo tem comprimento de 1 byte, e a mais longa,
de 9 bytes rindo os prefixos REP, LOCK e o de substituio de segmento default,
segment overriding). )386, a instruo mais curta tambm de 1 byte, mas com a
incluso dos prefixos tamanho-de- indo e tamanho-de-endereo, uma instruo pode
ter at 17 bytes.
mlia Motorola 68000/68020/68030
. codificao de instrues do 68000 apresenta uma diferena interessante em
relao ao
11 e s mquinas Intel. evidente que em relao ao conjunto de instrues e modos
dereamento os projetistas do 68000 foram influenciados consideravelmente pelo PDP-
11,
m relao codificao de instrues, eles percorreram um caminho diferente. A
filosofia por detrs da codificao de instrues do PDP-l1 a ortogonalidade do
cdigo de operao
randos - em outras palavras, uma instruo deve consistir em um campo de cdigo de
206 ORGANIZAO ESTRUTURADA DE COMPUTADORES
CPU Comprimentos de campos (em bytes)
Formato da 1 CDIGO DE
PREFIXO
instruo OPERAO
Bits 6 1
INSTRUO
.
Qual o operando fonte? / B
1
yte/pa
MODO
1
\
lavra
SIB 1 DESLOCAMENTO 1
2 3
LSCALA NDICE
IMED
3
BASE
MOO
REO
RIM
Fig. 5.22 Os formatos de instruo da Intel.
operao e nenhum, um ou dois campos de operandos, com todos os campos de 0]
codificados da mesma maneira.
Com o 68000 a situao bastante diferente. O 68000 tem mais instrues do que c e
trs comprimentos de dados (byte, palavra, palavra longa) em vez de dois (byte, e
assim os projetistas no poderiam dar-se ao luxo da codificao ortogonal, ou mesmo
de instrues. A compresso de todas as instrues em 16 bits era claramente uma
pois no poderia ser desperdiada nenhuma combinao. O resultado foi pelo menos 18
1 (excluindo o ponto-flutuante), dependendo, levemente, de saber precisamente onde
SI linha limite entre variaes de uma instruo e duas instrues diferentes. A
primeira de cada um desses formatos de instruo mostrada na Fig. 5.23. Do mesmo
modo PDP-l1, muitas instrues possuem palavras adicionais que seguem a instruo
para prover tes e endereos de memria.
Mais do que visando ortogonalidade., os projetistas do 68000 tentaram alocar mai
de cdigo de operao para as instrues importantes (isto , utilizadas
freqentemente) menor para o cdigo de operao para aquelas no importantes.
Geralmente, este enfot a programas objeto mais eficientes, mas a compiladores mais
complicados. MOVE inqu velmente a instruo mais importante em qualquer programa
e codificada utilizando o 1, com tamanho de campo (1 = byte, 2 = palavra longa, 3
palavra) e dois campos de i de 6 bits. Cada campo de operando possui um modo de 3
bits e um campo de registr 3 bits, como o PDP-11, embora seja o conjunto de modos
disponveis um tanto difer
68000 possui 16 registradores A e D, no 8, e assim nem todo modo pode ser utiliza
qualquer um dos registradores; o modo especifica implicitamente um registrador A ou
u trador D. Se os bits no fossem to escassos, os projetistas do 68000 poderiam
simplt ter deixado um MOVE com TAMANHO = O ser uma instruo ilegal a fim de
simplificar a c cao do cdigo de operao. No sendo este o caso, utilizam o
TAMANHO = O para diversas instrues em vrios formatos diferentes.
Tendo quase um quarto (3/16) do espao total do cdigo de operao para uma in
MOVE, prover dois campos de operando de 6 bits para todas as outras instrues de
dois op estava fora de questo. Ao invs disso, a maioria das instrues de dois
operandos po campo de operando de 6 bits completamente geral (OPERANDO) e um campo
de registr 3 bits (REG), utilizando formatos 2 ou 3. Isto significa que o 68000
pode somar registrac registrador, memria com registrador, registrador com memria
mas no memria com m como pode o PDP-11. As CPUs Intel possuam precisamente o
mesmo problema. A nicadi
NVEL CONVENCIONAL DE MQUINA 207
1 l5 14113112 1 11 101 9 8 7 6 i 5 4 3 2 1 O
OP TAMANHO OPERANDO OPERANDO
LcoD DE OPERAO
REG
MOO
OPERANDO
;
REG OP
OPERANDO
[ DE OPERAO
REG
REG
MOVE
1 ADD, AND, CHP, SUB CHK, DIVS, LEA. MULS
MOVEP
ASL ASA, ROL, ROR ABCD, EXG. SBCD
1 MOVEQ
1 ASL, ASA, ROL, ROR ADDO, SUBO
]Bcc
DBcc
] ADDI, CHPI, NEG, TST MOVEM
JMP, JSR, NBCD, PEA ] TRAP
1 EXT, LINK, SWAP, UNLINK NOP, RESET, RTS, TRAPV
MOD OP
uI.COD DE OPERAO
REG
[ DE OPERAO
COD. DE OPERA
REG
OP ITAMANHOI OP REG
. 1
REG
COD.DE OPERAO REG
op 1 DADO
[ DE OPERAO OP
[ DE OPERAO
COD.DEOPERA CONDIO OP j OPERANDO
OP ITAMANHO! OP REG
oi' TAMANHO!
COD. DE OPERAO CONDIO DESLOCAMENTO
1cO0 DE OPERAOI CONDIO 1 COD. DE OPERAO REG
COO. DE OPERAO ITAMANHOI OPERANDO
ITAMAJ
COO. DE OPERAO INHOI OPERANDO
CDIGO DE OPERAO OPERANDO
CDIGO DE OPERAO VETOR
CDIGO DE OPERAO 1 REG
CDIGO DE OPERAO
CDIGO DE OPERAO, OP determinam a instruo
OPERANDO delermina os dados sujeitos a operao
REG seleciona um registrador
TAMANHO escolhe byte, palavra, palavra nga
MOD delervnina se OPERANDO e fonte ou destino, e comprimento
CONTADOR, DADO so constantes na faixa de 1-8
CONDIO especifica uma das 16 condies possveis para leste
DESLOCAMENTO e um deslocamento com sinal para desvios
VETOR especifica para onde desviar
13 Formatos de instruo utilizados no 68000 (apenas a primeira palavra).
a Motorola desistiu de 3/16 do espao de endereamento para permitir que a
instruo ficasse ortogonal, e a Intel, no.
campo MODO no formato 2 distingue entre byte, palavra e palavra longa e tambm
se ,o OPERANDO refere-se fonte ou ao destino. Como 3 x 2 = 6 e 3 bits provem
oito ilidades, os outros dois valores MODO so utilizados para indicar instrues
completamente les.
[ instrues possuem formatos mltiplos. As instrues de deslocamento e rotao,
emplo, possuem uma variante, formato 8, com a constante de deslocamento CONTADOR
arte da instruo e uma outra variante, formato 5, onde o nmero de deslocamentos
OPERANDO
DADO
208 ORGANIZAO ESTRUTURADA DE COMPUTADORES
especificado em um registrador. Os formatos 7 e 9 existem porque numerosos
mostrado que a maioria das constantes que aparece nos programas de pequei formato
7 permite uma constante de 8 bits ser carregada em um registrador em uma ni de 16
bits. O formato 9 permite um nmero na faixa de 1 a 8 ser adicionado o
eficientemente de um operando. Para adicionar 9 a um registrador, utiliza-se a
instr (formato 13), juntamente com uma palavra extra de 16 bits para armazenar a
constan
A primeira vista, poderia parecer lgico que os bits 12 a 15 devessem determinai
mas isto no assim feito, pois nem todos os formatos possuem muitas instrues.
Divi mente o espao de cdigo de operao em 16 grupos de mesmo tamanho (que , mai
o que o PDP-11 faz) desperdiaria muito do valioso espao de codificao. Ao in s
vezes necessrio examinar todos os 16 bits para separar duas instrues no
relacioi
Um exemplo extremo deste efeito a maneira pela qual Scc (formato 10) e DB 12) so
distinguidos de ADDQ e SUBQ (formato 9). Todas as quatro instrues p
5 nos quatro bits superiores, como mostra a Fig. 5.24. Os dois ltimos diferenciam-
se dos dois primeiros pela presena ilegal do valor 3 no campo TAMANHO 3 (a codi
comprimentos depende da instruo para alguma razo peculiar, para ADDQ e SUBO, a
de MOVE, O = byte, 1 palavra, 2 palavra longa, 3 ilegal). Separar Scc de DBc
habilidade, pois todas as 16 condies so legais em ambos. A soluo escolhida
pr = 1 em Scc. Embora no muito elegante, funciona, e de qualquer modo ilustra os
que podem surgir quando se tenta empacotar muita informao em um nmero li bits.
ADDO 15 14 13 12 Dado : amano isijo 3 2 A
SUBO O 1 O 1 Dado 1 Tamanho Modo A
Condio Modo
DBcc o 1 O 1 Condio 1 1 J o J 1
Fig. 5.24 Quatro instrues do 68000.
O problema da codificao no 68020 e 68030 at mesmo pior devido neces suportar
todas as instrues de 68000 e algumas novas. As novas instrues foram es aqui e
ali, onde quer que uma combinao de bits livre estivesse disponvel. Esta cc no
apenas leva a compiladores e montadores complexos que tm de gerar formatos e mas
tambm a microprogramas complicados que tm de desmembrar os formatos durant o.
Este o preo do progresso.
5.3 ENDEREAMENTO
As instrues podem ser classificadas de acordo com o nmero de endereos que elas
No se deve esquecer que um conjunto de registradores numerados da CPU constitui,
uma memria de alta velocidade e define um espao de endereamento. Uma instn soma
o registrador 1 ao registrador 2 deve ser classificada como tendo dois endereo a
instruo deve especificar quais os registradores que sero adicionados, do mesmo
ti uma instruo que soma duas palavras de memria deve especificar as palavras.
Instrues que especificam um, dois e trs endereos so comuns. Em muitas i
que fazem aritmtica com um endereo apenas, um registrador especial denominado aci
prov um dos operandos. Nestas mquinas, o endereo geralmente o endereo i
palavra de memria, no qual se localiza o operando. A instruo para adio com o
NVEL CONVENCIONAL DE MQUINA 209
dereo m faz o seguinte:
acumulador : = acumulador + mmria [
es de dois endereos de soma utilizam um dos endereos como fonte e o outro como
o. A fonte ento somada ao destino
destino := destino + fonte
trues de trs endereos especificam duas fontes e um destino. As duas fontes so
adicionadas azenadas no destino.
t este ponto prestamos pouca ateno em como os bits de um campo de endereo so
retados para se encontrar o operando. Uma possibilidade que eles contenham o
endereo mria do operando. Outras possibilidades, entretanto, tambm existem, e
nas sees seguintes raremos algumas delas.
Endereamento Imediato
maneira mais simples para uma instruo especificar um operando a parte da
instruo 'a ao endereo conter realmente o operando em si em lugar do endereo ou
outra informao screva onde o operando est. Tal operando denominado operando
imediato, pois automati ite buscado da memria ao mesmo tempo que a prpria
instruo buscada; logo, est itamente disponvel para uso.
endereamento imediato tem a virtude de no requerer uma referncia extra memria
)uScar o operando. Tem a desvantagem de restringir o operando a um nmero que possa
em um campo de endereamento. Em uma instruo com um endereo de 3 bits (por ,lo,
campo de registradores), os operandos seriam restritos a 3 bits, o que limita a sua
de.
s CPUs Intel no possuem um modo de endereamento para operandos imediatos. Ao
iisso, elas possuem uma grande coleo de instrues distintas nas quais um dos
operandos Jiato. Na Fig. 5.5, por exemplo, a instruo ADD parece elegante e
ortogonal, tal como )P-l1. Na realidade, nove diferentes cdigos de operao so
utilizados para ADD, cinco iais para operandos imediatos, dependendo de como o
destino especificado e do compri do operando imediato (8, 16 ou 32 bits).
680x0 possui um modo de endereamento imediato; desta forma, qualquer operando
fonte ser uma constante. No 68000, algumas instrues permitem constantes de 8 ou
16 bits, o 68020 e 68030, todos os trs comprimentos so permitidos em qualquer
lugar. Alm instrues especiais, tais como ADDI, ADDQ e CMPI, permitem instrues
imediatas codificadas mais eficientemente.
Endereamento Direto
m outro mtodo simples de especificar um operando fornecer o endereo da palavra
mria onde o operando est contido. Esta forma denominada endereamento direto.
alhes de como o computador sabe quais endereos so imediatos e quais so diretos
sero dos mais tarde. Geralmente existem duas abordagens: utilizar cdigos de
operao diferentes izar um modo de endereamento especial para cada tipo de
operando.
Ddas as CPUs Intel possuem endereamento direto. O 8088 e o 80286 utilizam
endereos de 16 bits. O 80386 utiliza endereos de 16 bits nos modos real e
virtual, e segmentos bits em modo protegido. No modo protegido de 32 bits, os
endereos diretos so de ;. Observar que, em todos os casos, os endereos diretos
so muito curtos para cobrir espao de endereamento.
680x0 possui duas formas de endereamento direto, uma com endereo de 16 bits e
outra adereo de 32 bits. Os endereos dos primeiros 64K de memria podem ser
referenciados forma curta, enquanto os endereos acima de 64K necessitam da forma
longa. Estas duas so indicadas por valores no campo MODO de 3 bits e desta forma
se aplicam a todas rues da Fig. 5.23 com um ou mais campos OPERANDO.
210 ORGANIZAO ESTRUTURADA DE COMPUTADORES
5.3.3 Endereamento de Registrador
Endereamento de registrador conceitualmente a mesma coisa que endereai Nesta
forma de endereamento, o campo de endereo contm o nmero do registr o operando
armazenado. Uma mquina com 16 registradores e 65.536 palavras possui, na
realidade, dois espaos de endereamento. Deve-se pensar no endereo d como tendo
duas partes: (a) um bit que diz se se deseja um registrador ou um memria e (b) um
campo de endereo que diz qual registrador ou palavra de memria Como existem
menos registradores que palavras de memria, precisa-se de um ende e assim
instrues de diferentes formatos so freqentemente utilizadas para operand trador
e operandos tipo memria.
Se existisse uma instruo de registrador para cada instruo que endereas
a metade dos cdigos de operao seria para operandos tipo memria e a outra
operandos tipo registrador. Seria necessrio um bit no cdigo de operao para d
o espao de endereamento a ser usado. Se este bit fosse removido do campo cdigo
e colocado no campo de endereamento, o fato de dois espaos de endereamento esi
utilizados ficaria mais claro. O bit indicaria ento qual o espao de endereamento
a As mquinas foram projetadas com registradores por duas razes: (a) os regist
mais rpidos do que a memria principal e (b) como so em pequeno nmero, so
apenas alguns bits para endere-los. Infelizmente, ter 8 ou 16 registradores
tanibi muito a programao, pois deve-se decidir quais operandos e resultados
intermedi ser guardados no nmero limitado de registradores e quais devem ser
mantidos n principal. W. L. van der Poel (1968) observou astuciosamente que os
computadores providos com 0, 1 ou um nmero infinito de cada recurso (infinito
significa aqui suficiente para que o programador no precise gastar tempo pensando
acerca do qt algo se esgota).
As CPUs Intel e Motorola possuem todas um amplo repertrio de instrues
seus operandos de registradores e depositam o resultado em um registrador.
5.3.4 Endereamento Indireto
Endereamento direto um esquema em que o endereo especifica qual palavra de ou
registrador contm o operando. Endereamento indireto um esquema em que o
especifica qual palavra de memria ou registrador contm no o operando, mas o do
operando. Como exemplo, considere umainstruo para carga de um registrador (qu
naremos Ri) indiretamente da posio de memria 1000, onde a posio 1000 de memr
1510, como mostra a Fig. 5.25(b).
Primeiramente, o contedo da posio 1000 copiado para um registrador internc
Este nmero de 16 bits (1510) no colocado em RI. Se fosse como na Fig. 5.25(a
uma instruo de endereamento direto. Ao invs disso, o contedo da posio 1510 d
buscado e colocado em Ri. O nmero contido na posio 1000 no o operando vez
disso "aponta" para o operando. Por isso, denominado apontador.
Todos os processadores Intel possuem endereamento indireto via um registradc por
exemplo, possvel armazenar um ponteiro em SI e especificar que o operando est
na memria no endereo apontado por SI. No 8088 e 80286, apenas BX, SI e DI r
usados em endereamento indireto; no 80386 todos os registradores podem ser usados.
Ei deles possvel endereamento indireto utilizando um apontador em memria.
O 68000 permite endereamento indireto via registradores de endereamento. Nenh'
forma de endereamento indireto possvel. No 68020 e 68030 tambm possvel, d
formas, o endereamento indireto via memria. Esta possibilidade uma das
principais entre o 68000 e as CPUs Motorola mais recentes.
Alguns processadores, embora nenhum de nossos dois exemplos, permitem endei
indireto de mltiplos nveis. Neste modo de endereamento, um apontador utilizado
par uma palavra de memria que por sua vez aponta para uma palavra de memria, e
diante.
Os endereamentos imediatos, direto, indireto e indireto de mltiplos nveis exi
NVEL CONVENCIONAL DE MQUINA 211
Endereamento Direto
Endereo
Instruo:
Carregue Ri com o contedo de 1000
Passo 1:
O operando buscado
da posio 1000
(a)
Endereamento Indireto
Endereo
Instruo:
Carregue Ri indiretamente com o
contedo de 1000
Apontador
Passo 1:
O apontador para o operando Passo 2:
buscado da posio 1000 O operando
buscado da
Passo 3: posio 1510
O operando carregado em Ri
(b)
.25 Comparaes entre os endereamentos direto e indireto. (a) Endereamento
direto. (b) Enderea indireto.
progresso. O endereamento imediato no requer qualquer referncia memria, pois
rando foi buscado junto com a instruo, que aqui no levaremos em conta. O
endereamento requer uma referncia de memria para buscar o operando. O
endereamento indireto duas referncias memria, uma para o apontador e outra
para o operando. O enderea indireto de mltiplos nveis requer pelo menos trs
referncias memria, duas ou mais spontadores e uma para o operando. As
referncias memria neste contexto incluem
ncias a registradores.
212 ORGANIZAO ESTRUTURADA DE COMPUTADORES
5.3.5 Indexao
Muitos algoritmos necessitam da execuo de alguma operao sobre uma seq turas
de dados armazenados em posies consecutivas de memria. Por exemplo,
bloco de n palavras de mquina ocupando as posies.
que devem ser copiadas nas posies
A,A+1,A+2 A+n-1
B,B+1,B+2 B+n-1
Supondo que a mquina possui uma instruo
MOVE A,B
que copia o contedo da posio A para a posio B, poder-se-ia executar esta
instru
a prpria instruo para
MOVE A + 1,B + 1
execut-la novamente, ento modific-la novamente e repetir o ciclo at que todas
as tivessem sido copiadas.
Embora programas que modificam a si prprios j tenham sido populares, isto
considerado uma m prtica de programao. So difceis de depurar e dificultam e
lhamento de um programa entre vrios usurios de um sistema de tempo compartil sha
ring system).
O problema da cpia pode tambm ser resolvido atravs do endereamento ind
registrador ou posio de memria carregado(a) com o endereo A; um(a) outro(a)
ca com o endereo B. As instrues MOVE utilizam esses dois endereos como apontad
cada palavra ter sido copiada, os apontadores para elas so incrementados de 1. Os
a fazem parte dos dados e, obviamente, no fazem parte do programa; logo, no so
comp entre usurios simultneos.
Uma outra soluo ter um ou mais registradores, denominados registradores que
funcionam da seguinte maneira. Os endereos possuem duas partes: o nmero de um r
de ndice e uma constante. O endereo do operando a soma da constante com o do
registrador de ndice. No exemplo acima, se ambos os endereos so indexados um
registrador de ndice que contm o inteiro k, a instruo MOVE A,B copiar o da
posio de memria A + k para B + k. Inicializando o registrador de ndice co O e
incrementando-o do tamanho da palavra, aps cada palavra ser copiada, apenas um r
necessrio para o ioop de cpia. Alm disso, incrementar um registrador mais r]
incrementar uma posio de memria.
A indexao tambm comumente utilizada para enderear um campo com um desi
conhecido, em relao ao incio de uma dada estrutura. Variveis locais em um proi
so acessadas desta maneira.
No exemplo acima, foi necessrio incrementar explicitamente o registrador de o
tamanho da palavra depois de cada utilizao dele. A necessidade de incrementar ou
de um registrador de ndice imediatamente antes ou depois de ele ser utilizado
to cc alguns computadores provem instrues ou modos de endereamento especiais,
ou mesni dores de ndice especiais que incrementam ou decrementam automaticamente a
si pi modificao automtica de um registrador de ndice denominada auto-
indexao.
As CPUs Intel e Motorola possuem diversos modos de endereamento que envolve
o. O 680x0 possui tambm auto-indexao.
5.3.6 Endereamento de Pilha
' que altamente desejvel ter instrues de mquina to curtas quani
ria e tempo de CPU. O mximo em reduo de comprimentos de
pa
NVEL CONVENCIONAL DE MQUINA 213
ter instrues com absolutamente nenhum endereo, apenas cdigos de operao. Esta
o, bastante surpreendente, possvel. conseguida organizando a mquina em torno
ia estrutura de dados denominada pilha.
ima pilha consiste em itens de dados (palavras, caracteres, bits) armazenados em
ordem cutiva na memria. O primeiro item colocado na pilha denominado fundo da
pilha. Asso- a cada pilha h um registrador ou palavra de memria que contm o
endereo do topo ha. denominado apontador da pilha.
mbora tenhamos discutido acerca de pilhas no Cap. 4, faremos aqui uma rpida
reviso material, pois utilizar pilhas em aritmtica muito diferente de utilizar
pilhas para armazenar ,eis locais (ambos os casos podem, naturalmente, ser
combinados). A Fig. 5.26 ilustra a Lo de uma pilha. Na Fig. 5.26(a) dois itens j
se encontram na pilha. O fundo da pilha ia-se na posio 1000 da memria e o topo
da pilha localiza-se na posio 1001 da memria. intador da pilha contm o endereo
do item no topo da pilha, ou seja, 1001; isto significa le "aponta" para o topo da
pilha. Na Fig. 5.26(b), 6 foi colocado na pilha e o apontador lha indica 1002 como
o novo topo da pilha. Na Fig. 5.26(c), 75 foi colocado na pilha e ntador da pilha
aumentado para 1003. Na Fig. 5.26(d), 75 foi retirado da pilha.
)s computadores orientados para pilha possuem uma instruo para inserir o contedo
de posio de memria ou de um registrador na pilha. Tal instruo deve tanto
incrementar ntador de pilha quanto copiar o item. Similarmente, uma instruo que
copia o contedo po da pilha para um registrador ou posio de memria deve fazer a
nova cpia para ar escolhido e decrementar o apontador da pilha. Alguns
computadores tm suas pilhas ria para baixo, com os novos itens sendo inseridos
consecutivamente em posies de memria dereos de menor valor em vez de
consecutivamente em posies de endereos superiores, na Fig. 5.26.
.s instrues sem endereo so utilizadas conjuntamente com uma pilha. Esta forma
de eamento especifica que os dois operandos devem ser retirados da pilha, um aps
o outro, rao executada (por exemplo, multiplicao ou AND) e o resultado
recolocado na pilha. 5.27(a) mostra uma pilha que contm quatro itens. Uma
instruo de multiplicao retira o 6 da pilha, faz o apontador de pilha apontar
temporariamente para 1001 e ento recoloca iltado, 30, de volta na pilha, como
mostra a Fig. 5.27(b). Se uma adio for depois executada, iltado ser como mostra
a Fig. 5.27(c).
Apontador da pilha
(b) (c) (d)
26 Funcionamento de uma pilha.
ORGANIZAO ESTRUTURADA DE COMPUTADORES
Apontador da pilha
Endereo
1000
1001
1002
1003
1004
4
20
6
5
(a)
-4
Topo da pilha
Fig. 5.27 Utilizao de uma pilha em aritmtica. (c) Aps uma adio.
Polonesa Reversa
(a) Configurao inicial. (b) Aps uma m
uma tradio antiga em matemtica escrever o operador entre os operandos, x + y,
em vez de depois dos operandos, como em x y + A forma com o operado dois operandos
denominada notao infixada. A forma com o operador colocado aps dos
denominada ps-fixada ou polonesa reversa, depois que o polons J. Lukasiew
investigou as propriedades desta notao.
A notao polonesa reversa tem diversas vantagens em relao notao infixada na
tao de expresses algbricas. Primeiro, qualquer expresso pode ser expressa sem
p Segundo, conveniente para clculos em computadores com pilhas. Terceiro,
operadores tm precedncia, que arbitrria e indesejvel. Por exemplo, sabemos
que a x b + (a x b) + c e no a x (b + c), porque a multiplicao foi
arbitrariamente definida precedncia em relao adio. A notao polonesa
reversa elimina este problema.
Existem diversos algoritmos para converso de expresses infixadas para notao
reversa, O algoritmo mostrado abaixo uma adaptao de uma idia de E. W.
Dijkstra. que uma expresso composta dos seguintes smbolos: variveis, os
operadores did operandos) + - * / e parnteses esquerdo e direito. Para delimitar
uma expresso, in o smbolo 1 aps o ltimo smbolo e antes do primeiro smbolo.
A Fig. 5.28 mostra uma via frrea ligando Nova torque Califrnia, com uma
no meio que se dirige ao Texas. Cada smbolo na frmula est representado por u
O trem se dirige para o Oeste (para a esquerda). Cada vago ao chegar chave d
e perguntar se deve ir diretamente para a Califrnia ou fazer uma pequena viagem
Texas. Os vages que contm variveis sempre vo diretamente para a Califrnia e n
o Texas. Os vages que contm outros smbolos devem inquirir acerca do contedo
mais prximo na linha do Texas ao chegar chave.
A Fig. 5.29 mostra o que acontece, dependendo do contedo do vago mais pr
linha do Texas e do do do vago antes da chave. O primeiro 1 sempre vai para
uintes situaes:
Os nmeros se refe
o Texas.
1. Ovagoar
2. O ltimo va
3. O vago antes
e desaparecem (isto , a so apagados).
4. Pare. Os smbolos agora na Califrnia representam a frmula em notao polone
quando lidos da esquerda para a direita.
5. Pare. Ocorreu um erro. A frmula original no foi balanceada corretamente.
do Texas retorna e vai para a Califrnia.
ltimo vago a entrar na linha do Texas so a
214
(b) (c)
NVEL CONVENCIONAL DE MQUINA 215
Califrnia
Nova Porque
Chave
Texas
5.28 Cada vago representa um smbolo na expresso a ser convertida da notao
infixada para a o polonesa reversa.
Vago antes da chave
+ - x /
4
1
1
1
1
1
5
2
2
2
1
1
1
2
2
2
2
1
1
1
2
2
2
2
2
2
1
2
2
2
2
2
2
1
2
5
1
1
1
1
1
3
Fig. 5.29 Tabela de decises utilizada pelo algoritmo de conver so da notao
infixada para notao polonesa reversa.
A cada deciso ser tomada, uma nova comparao feita entre o vago antes da
chave, pode ser o mesmo vago da comparao anterior ou o vago seguinte, e o vago
que
o ltimo na linha do Texas. O processo continua at que o passo 4 seja atingido.
Observe
linha do Texas est sendo utilizada como uma pilha, com o encaminhamento de um
vago
o Texas sendo uma operao de insero na pilha, e o retorno de um vago na linha
do e seu envio para a Califrnia constituindo uma operao de retirada de pilha.
ordem das variveis a mesma nas notaes infixada e polonesa reversa. Entretanto,
[ dos operadores diferente. Os operadores em notao polonesa reversa aparecem na
n em que eles sero realmente executados durante a avaliao da expresso. A Fig.
5.30
emplos de expresses infixadas e de seus equivalentes, em notao polonesa reversa.
Infixada
Polonesa reversa
BxC
ABCx+
B+C
ABxC+
B+CxD
ABxCDx+
B)/(C-D)
AB+CD-/
B/C
ABxC/
+B)xC+D)/{E+F+G)
AB+CxD+EF+G+/
Fig. 5.30 Exemplos de expresses infixa das e seus equivalentes em notao polo
nesa reversa.
216 ORGANIZAO ESTRUTURADA DE COMPUTADORES
Avaliao de Expresses em Notao Polonesa Reversa
O algoritmo seguinte avalia uma expresso em notao polonesa reversa.
ALGORITMO
1. Examine cada smbolo na expresso em notao polonesa reversa, comeando
esquerda at voc encontrar um operador.
2. Anote o operador e os dois operandos imediatamente esquerda dele em de papel.
3. Apague o operador e os operandos na expresso, criando uma lacuna.
4. Aplique a operao sobre os operandos e escreva o resultado na lacuna.
5. Se a expresso consistir agora em uni valor, esta a resposta e o algoritrr
seno, v para o passo 1.
A Fig. 5.31 mostra a avaliao de uma expresso em notao polonesa reversa. A
operadores a ordem em que eles so realmente avaliados.
Expresso infixada (8 2 < 5) (1 * 3 x 2 - 4)
Expresso em notao polonesa reversa 825 x 132 x - 4
Passo Expresso a Operador mais Operando Operando