Prefácio
E
ste livro está buscado na idé ia de que um comput:lrlor pode ser considerado uma hiernrquia de níveis. cada qual eXI.."t:u tan· do wgu ma função bem definida. O nívd lógico digltlll. o nível de mu:roarquitctura. o nível de arquitetura do conjunto de i n ~truç:i(), o nível de máquina de .~is tcma operacional c o nivel de linguagem de montagem ~ ão discUlidos detalhadumc nte. Esta quilll:l edição contém muit:l..S altcr.lçõcs que :lCompomham as rfipidas mudanças Ja i ndU.'>tria de compUludorcs.
tomando o livro basumte alual. Especificamente neste caso podemos citar as máqUinas usadas como exemplo: das ror.!m at ualizadas . Os exemplos utilizados são o Penliurn 4 da rmel. a 5un Ultra$PARC III c o Intel 8051. O Pcnliu m '" é um exemplo de C PU (Xlpular usad.a e m máqui nas de mesa. A Ulrr.J.SPARC 111 I:! um e.'{cmplo de servidor popular muito usado em multipmcessauores de médio ~ grande portes. Contudo, o 805 1 pode ser uma surpresa para muita gente: ele é um chip venerável. que est:1 no merc:\do há décadas c. por tim. com o enorme cfC.-«:imento dos sistemas embutidos. teve a opon unidade de mostrar seus talentos. Como hã computadores rundon:uuJo em tudo, desde rãdio-rel6gios até fomos de microondus. aumento u o interesse ~ m SisternóUl embutidos, e o 8051 é umu opção dc l mpl ü ulitizôlção devido :l "C U custo extremamente baixo. ti profu são de softwares c pcriférÍl.:os para ele e :lU giJ.ndc nú mcro de programadores especializados no 8051. Ao longo dos anos, muitos profes'\Orcs que adQ(:Ir.lm !;Slc livro ~ Iicil aram repe tidas vezes material sobre progr.lmação em linguagem de monlagem. Agora, com :I qui nUl I! uição. esse material est.1 disponivel no Apê ndice C. A linguagem de montagem escolhida é a 8088. viSlO 4ue ela é uma vcrsilo dcspojaili! do popular Pcntium. Eu poderia ter usado a UI\T:lSPA RC ou a MIPS ou alguma ootr.l CPU da 4ual quu:..e ninguém ouviu fal ar, mus como ferramenta molivacional a 801'!8 é lima opção melhor, uma vez que gmnde pane dos estudan tes te m um Pentium I!m casa e ele é capuz de exeCutar progrJ.mas 80~:i. Contudo. já que ti depuração de código dc montagem ~ muito difícil . providenciei um conjullto de fCIT'J. tnenras que po~ibilitam o .lprcndizndo da progmmaç5.o em lingu.lgem de rI1o nl!lgem. incl uindu um a.~sembler 8088, um ~i mu lador e um rJslreador. Essa.~ rClTamenlas são forneci das par.! Windows. UNlX e Linu x c podem ser baixadas pe lo site Wl!b do livro (www.pren hall.com/tanenbaum_b r). O livro tumou-se mais extenso ao longo dus :lnos e isso roi inevitá vel. tendo em visra que um assu nto ~ desc:lvo]vc e há mais a saber sobre cle. O efeito desse dcsdobr:uJlenlo ljuando ~e resolve adotâ-lo lo! que nem ~e mpre é possível tcnniná-lo em um únicu curSH (por exem plo. l{uan uo o curso c trunc.s tr:ll). Uma allen muva possível "t!na estudar. como um mínimo essencial. CtS capítulos 1.2 e J imciros. a pnmeira pane do Capítulo 4 (até. c mcl u),ive. a S~:il) 4.4) e \) C:lpitulu 5. O tempn q ue "ohr.lr podc ri~1 ~c r uti lizado com H rc~'a lll e do C'.lpftul n.J c partc~ J()~ C.lpllulus 6. ~ e 8. dependellJll do i nl cl'c:..~e du pruli.::'S\)r, Em seguida apresentamos. capítulo por capítulo. uma rc~ nha das prinCipais muda nças. O Capitulo I ainda contem uma revisão histórica da arquilclUrJ. de computador. l.Jue nm:.tiJ. comu chegamos onde estamos hOJe c quais fum m I~~ mareos .Itl lungo Ilu pen.:ur.-o. D i scutimo.~ lambem o I!Spcclro umpliado de computadures ex is u.:nles c apresemanr()~ nossos três exemplos principais (Pentium 4. UltrJ.SPARC lU t! ~05 1 ). No Capítulu 2. o material suore dispositi vos de entrada/saída rni atua lizado ..:om i!n ra.~ na tecnologia de dispositivos lIloUcrnus. ent re eles câmeras digitais. DSL ~ Internet por cabo. O Capílulu J passou por revisão ~ a1:0r:\ abord:\ também barramentos de ..:ompulador e chips modernos de EIS. Aqui. us tres nuvos exemplos são discu tidus no nível do chip. Foi :\diclOnado novo material sobre u barrJ.lIlento PCI Express. li 4ual. ~spcrn-se . ~ uhs tiluirá I) baIT'J.l1lclllo PCI I!I1I breve.
v
- - -- -
---_.......... . ... .
••" o
~
,• ~
E o
u
•
~
•
~
,• ,
'.•" o
~
c
•=
O"
o C"píluJo 4 sempre fo i bcnquislO por explicar como um computador realmente funciona. portamo a maior parte dele não sofreu altcfaçõe.". Contudo, hâ nova.~ seções que discutem o nive! de microarquitcturJ do Pcntiurn 4. da Ultr.t$ PARC 'li c do 805 1. Os Capítulos 5. 6 c 7 fomm atuali;(.ado.~ com base nos novos exemplos, (Xlrém. quanto ao restante. cSliio rclaliv,uncmc inaltcr.luos. O Capítulo 6 usa como exemplo o Windows XP em vez do Windows NT ma.", com base em nossa discussão. as altcmç6cs são mínimas. Em comparJç:1o. o CapílUlo li fo i bastante modilicadocom a intenção de rcOctir toda a nova atividade em tomo de computadon::!! paralelos de todo!> os ti pus. No capítulo abordam-se cinco classes diferemes de sistemas par.lldos.
desde () paralel ismo no chip (par.lJelismo no nfvcl da instrução. multilhreading no ehip e multiprocessadores de ehip unico), ntê co-processadores. sistemas de memória cOll1partilhada e clustcrs. c fi naliza com uma breve discussilo sobre grades. Vários I!xcmplos são discutidos nessl! c:lpftulo, desdI! a CPU TriMedia até o." clu.~ters BlueGenclL. Rcd Stonn c Google. As referências no C:lpítulo 9 foram I"Jdicalrnente aruali:r.adas. Organi:r.ação de computadores é uma área dinàmic:!. Mais d:! metade das referendas nesta edição refere-se a livros c tarugos escritos mais recentemente. Os Apêndices A e B nilo for.un atualizados. mas o Apêndice C sobre progrJffiação em linguagem de monl:lgem ..; eumplelamenle novo. É um guia pl",ilieo c upemclOnal pam progmmação em linguagem de montagem. que u[i!ir.a as ferm menl;JS accssfveis pelo shc Web. Foi escrito pelo dr. Even Waltcl da Vrijc Univcrsitcil. Amstenlã. O dr. Watlel ICc10nu hl1 muitos anos c tem ensinado seus alunos a usar cssa.~ ferramc ruas. Agradeço muito a ele por lef escrito esse apêndice. Além das ferramen tas para linguagem de montagem, o silc Web também contém um simulador gl".ifico a ser usado juntamente com o C:lpílUln 4. Esse simulador foi c..'K:rito pelo profc.~sor Richard SaJter de Obcrlin ColJege e pode ser usado pelos estudanlcs para ajudá-los a compreender os princípios disc utidos nes~ capítulo. AgradClio muito a de por Icr Cornecido esse soltware. Ademais. apresemaçõcs em PowerPoinl para professores também estão disponíveis em português no site Web:
hllp:/IVIVW. prenhlllJ. com/ tonen baum _ hr. Professores que adolólm este livro também podem obler no sire o manual de soluções dos problemas - baslól conlalill' o repre5emante da Pe:uson Educalion para obter uma senha. Muil:JS pessoas ler.un (panes) do original e contnbufram com sugcsuks úteis ou ajudar::un de diversas outras mllne ir.lS. Gostaria de agradecer, em particular, a ajuda prestada por Nikilas Alexandridis. Shckar Borkar, Herbert 80S. Scotl Canrlon, Doog Camleóln. Alan Charlesworth, Eric Cota-Roblcs. Michacl FeUemlan, Quinn Jacobson, Th ilo Kielmann, Ufal Kazi, Suul Levy. Ahmed Louri. Abhijit Pandya. Krisl Petcrscn, Mark Russinovich, Rnnald Schroedcr e Saim UraL pela qual sou muito grato. Também gostaria de agradecer a contribuição de Jim Goodman a eslC livro, em especial nos C:lpílUlos 4 e 5. FOI dele a Idéia de usar a Java Virtual Machine e nlivro ficou melhor por causa disso. Por fim, gosWlÍa de agradecer mais uma Vt::l. ti SU7.anne por seu amor e paciência. que nunca se c.~gotaram . nem mesmo após 15 livros. Barbara c Marvin são sempre uma alegria e agora subcm o que os professores fazem para ganhar a vida. A Royal Nelberlands Acudcmy of Ans and Scicnces me concedeu a cobiçada Academy Professorship em 2004, o que me livrou dos aspectos menos atraentes da academia (tal como infindáveis reuniõcs com o conselho diretor). e pela qual sou eternamente grato. ANDREW S. TANENBAUM
O.f editfJrt:.I' da edipio hrasileira a1:rtuJecem li flrt:t:ioSll culahonl(:ào do.,' (Jmle.~.'ó/m·.f ,lfmmóo Capelas ....
. . . . . . . . . .1111111111111 1111 1111 111 1111111 111111111111 1111;1
E.d.\01/
Midonlulll'lI.
111111 1111 111 111111111111111111111111111 1
Sumário
INTRODUÇÃO ......... .•.......... ...........•............... ...... ..... ... ..•.. ....... .. .....•..•....... .. .. ... ..... .. ... . I I. I
O RGAN IZAÇÃO ESTRUTURADA DE COMPUTADORES ........................................................................ 1 1. 1.1 Linguagens. níve is e máquinas reais ... ... ... ............................... ... .... ................... .......... .... .............. .. .............. 1 1.1. 2 Máquinlls muhiníveis COlllcmporJneas ............................................................. .......................................... ......... ......J 1. 1.3 Evolu(,.":io de m.:íquin:lll mulrinivds ........................................................... ................................................................. 5
1.2
MARCOS DA ARQUITETURA DE COMPUTADCRES .. ....... .. ......... ............... ...... ........ ............ ..... ............ 8 1.2.1 A gcraç:io zero - computadores mcc:1nicos (1642- 1945) .......................................................... ............................ 8 1.2.2 A primeira geração - válvulas (1 945-1 955) .......................................................................................................... 10 1.2.3 A scguooa gcrn...;10 - transistores (1 955-1965) ............................. ..... .................... ............ .................................. 11 1.2. 4 A tcrccim gerJ.ç:lo - circuitos integrodos (1965-198fl) ...................... ................. ................. .... .......................... 12 1.2.5 A quarta genu;ão - integrJ.çào em escala muito grande ( 19!1O-"!) ............................. ........................................... 1-1. 1.2.8 A ljUllltu gcrnç:lo - compUluuorcs lllVISl'lt:is ........................................................ ................................................ 15
1.3
ZOOLÓG ICO DOS COMP U1~DORES ........................ ..................... , ........................... .... ... ........................ 15 1.3.1 Força.~ tecnulógicas c econômicas...... ....... ............................................................................................................... 15 1.3.2 1.3.3 1.3.4 1.3.5 1.3.8 1.3."1 1.3.8
TIpos de computador..................................................... ............ ............................................................................... 17 Compuladores dcscartávds ...................................................................................................................................... 17 l\oficrocontrOladores ........ ............ .......................... ....... ............ ............................................................... .. ...... ......... 18 ComputadofCll de jogos ............... ............................ .. ................................................................................... ............ 1'} Computadores pt!ssoais ................................................................................................................................. ........... 11) Servidores ....... ............... ................... ..................... .................................................................................... ........... 20 ConjunlOs de CSlaçi}cs de trJ.bulho ... .... .. ...................................... .......................... .. .................. ............ 20
1.3.9 Mainfrnmcs ................ ...................... .......................... .......... ....... ............ ............................................................. 21
1.4
ExEMPLOS DE FAMÍLIAS DE COMPUTADORES .................................................................................. 21 1.'\.1 InLftxluç:ln ao Pcntium J .................................................................... ... ............ ..... ............. ......................... ........ ~ l \.4.2 Imnl(luçào ao UllraSPARC [li ................................................................................................................................24 1.4.3 Introdução ao MIl51 ...................................... .................................... .......... ......................... .................................... 25
1.5
UNIDADES lVI ETRIC AS .. ..... ...... ... ....... .......... ..... ..... .................... ..... ..... .................... ..... ... ........ ....... ..... ...... 26
1.6
ESQUE~I A
DESTE LIV RO ... ... .... ..................... ..... .............................................................. ....................... 2.7
2 ORGANIZAÇÃO DE SISTEMAS DE COMPUTADORES ....•................................ ......•. ........... 29 2.1
PROCESSADO RES ......... ............................................................................................................................... 29 Orgam7.aç:jn da CPU................. .......................................................................................................... 30
2.1.1
2. 1.2 Exccuç:lo de instruç:lo ......... ........................................................................................................................ .......... 30 2. 1.3 RISC versus CISC .................................................................................................................................................... 33 2. 1.4 PrinCIpias de projeto p:.tl':l compuladores modernos ................................................................................................ 34
VII
- - - -- ---_._ ........ . .
2 . 1.5 P::lr.l.!clismo no nível de instrução ..... .......... .................................................... ....................................... 34 2 . 1.8 P..u-...uc!iSII'K) no nível do procl:~sador ....................................................................................................37
2.2
••" o
~
,•
~
• o
"•
2.3
Bits .... ............................. ................................................. .............. 39 Endereços de memória ...................................................................................................................... .40 Ordenação de byte5 ................................................................................................................... .......... .41 Códigos de eOnt:lião de erro .......................... ....................... .................................................. ... ......... --'2 Mt:mória cache! ............................................................................................... .......................................44 Empacotamento e tipos dI! memóri .. ................................................................................................... ,46 o .................................................. .
MEMÓRIA SECUNDÁRlA ........................................................................ .................................. 46 2. 3.1 Hicr.!rquias de memória ......................................................................................................................46 2 .3.2 Discos magnéticos ........................................ ............................................ .......................................... --'7 2 .3 .3 Discos nexíveis .................................................................................................................................... .49 2 .3 .4 Discos IDE ............................................................................................................... ............... .49 2 .3. 5 Discos SCSI ........................................................................................................................................50 2 .3 . 8 RAID .......................................................................... .... ..................................................................... .5 1 2 .3 .7 CO·ROMs ......................................................................................................................................... .....53 2 .3.8 CDs grnváveis ............. ............. ......................................................................... .................... ........... ......55 2 .3 .9 CDs rcg r.!váveis .................... ......... .......... .............................................................................................56 2 .3 . 10 OVO .................................................................................................................................................... 57 2.3 . 11 Blu.R..y ................. ..................... ........... ....... ............. ................................. .. .....................................58
~
•
~
•
"o o
·
~
o
• • •"m
MEMÓRIA PRlM ÁRlA ................................................................................................................ 39 2. 2.1 2 .2 .2 2.2 .3 2.2. 4 2.2 .5 2.2. 6
~
N
2.4
ENTRADA! SA íDA ...................................................................................................................... 58 2 .4 . 1 BarrJ.mcntos .... ......................................................................................................................................58 2 .4 .2 Tl!nninais ................................................................ .............................................................................. 60 2.4.3 Mouscs ........................... ..... .................................................. ............. .. ..................................... .......... 63 2.4.4 l mpressorn.~ ..................................... ..................................................................................................... 642 .4 .5 Equi pamento de tl!lecomunicaçõe5 ...................................................................................................... 67 2 .4.6 Câmeras digitais ................................................................................................. ............ ..................... 71 2 .4 .']' Códigos de carJ.cleres .................... ...................................................................................................... 73
o
2.5
RESUMO ...................................................................................................................................... 75
3 O NlVEL lÓGICO DIGITAl ... .. ................................................... ................. ....... 78 3. 1
PORTAS E ÁLGEBRA BOOLEANA ............................................................................................ 78 3 .1.1 3 . 1.2 3 .1.3 3.1.4
3.2
Ponas ......................... .. .............. ............... ................. ...................................................78 Âlgl!brJ. booleana...................................................................................................................................80 Implernen ra.;ão de funções booleanas ................................................................................................... 8 1 Equi valêociu de circuito ....................... ................. ...... ...................... ................. .................................. 82
CIRCUITOS LÓG ICOS DIGITAIS BÁSICOS ................................. .. ......................................... 84 3 .2 . 1 Circuitos integrados .............................................................................................................................. 84 3 .2 .2 Circuitos combinaeionais ......................... ......................................................... ................................ .. 85 3 .2.3 Circuitos aritméticos ... ....................................................................................................................... 1'18 3 .2 .4 Relógios ......................... ...................................................................................... .................. 9\
3.3
MEMÓRIA ....................................... ..................................: ..........................................................92 3.3. 1 3.3 .2 3.3 .3 3.3.4 3.3. 5 3.3.6
3.4
de I bit ............................................................................................................. ............... .... 92 Flip· F1ops ............................................. ......... ........ ........... .. .................................................................93 Rcgistr.!uores ........................................................................................................................................94 Org:'HllL3Ção dalllClIlOrl:l .................................................... ................................................................95 ChlpS dI! me mória ......................................... .......... ........ ...... ..... .. .........................................97 RAMs c RO Ms ....................................................................................................................................98
CHIPS E BAR RAMENTOS DE CPU ........................................................................ ................ 100 3 .4 . 1 3.4 .2 3 .4.3 3 .4 .4 3 .4 .5 3 . 4 .6
3.5
l\1em6ria.~
Chips de CPU .............................................. ............... . .................. ..................... ......... 100 Barr
EXEMPLO DE CH1PS DE crus
.............................................................................................. 109
o Pentium 4 ....... ................ .. ................................................ ........... ......... .... ....... 109 3.5.2 o Ultr.!SPARC 111 .......................................... ........... ............... .............. ................................ ........... 113 3. 5 .3 o 805 1 ......................................................... ......... ...................................... .......................... ............ 115 3 . .5. 1
3.6
•
EXEMPLOS DE BARRAMENTOS ............................................................. ........................... .. 117
• • • • • •_ Ulllllllll lll lll l ! I!1111111111IJll l lrllllllll Jl1li·
1 1 111 . . . . . . . . . . . . . ..
3.6. 1 0 barr.unCnlO ISA .. ................. ... ........ .. ... ......... .......... .......... .... ..... . ....... 11 7 3.6.2 O oarr.mlcntll PCI ...................................................... . 3.6.3 PCll:llpn:SS .................................................................. ::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::~ 3.8.4 Barr.uncnlO serial universal (USB) .................................................................................................... 125
.. o
3 .7
3.8
INTERFACE ........ ........ ..... ..... ....... ................ ....... ... ......... ······ · .. ········· .. ···· .. ·· .... ··· ···.· ............ ... .... . 127 3.7.1 Chips dc EIS ........................................... .......................................................................................... 127 3.7.2 Dccodific:lÇão de cndcrclfo ............................................................................................................. 128
RESUMO .................................................................................................................................... 129
4 NfvEL DA MICROAR9UlTETURA ..•...•........•.•....•..•........ .•. ......... .........•..•.... ..... 134 4. 1
UM EXEMPLO DE MICROARQU ITETURA .......................................... .... .... ....................... 134 4 .1.1 O earninho de dados ............................................................................................................................ I]~ 4 . 1.2 Mieroimaruçõcs .................................................................................................................................. 1]8 4.1 .3 Controle de m icroinuruç:lo: :t Mie·l ................................................................................................. 140
4.2
EXEMPLO DE ISA: IlVM ........................................................................................................ 142 4 .2 . 1 Pilhas ................................................................................................................................................ 14] ... .2.2 Modelo de: Jnemooa IJVM ............................................................................................................... 144 4.2.3 Conjunto de insuuçlk:'I d3 IJVM ........................................................................................................ 145 4.2 .4 Compil:mdo Java para IJ V~I .............................................................................................................. 141
4.3
EXEMPLO DE IMPLEMENTAÇÃO ................ .. ............................ .. ....................................... . 148 4.3. 1
~Iicromstruçlk:s
e nOl3Çào .................................................................................................................. 148
4.3 .2 Implementação de IJVM que usa a Mie· 1 .......................... .............................................................. 1~1
4.4
PROJETO DO NíVEL DE MICROARQUITETURA ........................................ ........................ 159 4 .4 . 1 Velocidade conlr.l custo .............. ......................................... ............................................................... 159 4.4 .2 Redução do comprimento do caminho de cxt.'Cw.;ão .................................................... .. ............ ....... 160 4.4.3 Projeto 1,;0111 busca antecipada: a Mic-2 ....................... ......................... ................ . ............ 164 4.4.4 Projeto t.'Om par.llelismo : a Mie·] ................................. .................................................................. 165 4 . 4 .5 Parnldismo de sete estágios: a i\llic-4 ............................................................................................... 110
4.5
MELHORIA DE DESEMPENHO ............................ .................................................................. 172 4.5 . 1 Memória eache .... _.............................................................................................................................. 112 4 .5.2 Previ~o de desvio .............................................................................................................................. 116
4.5.3 Execução fom de onIcm I: rcnomc:lç;W de registr.K1or ...................................................................... 118 4 .5 .4 Execução cspeculativa ..................................................................................................................... 182
4.6
EXEMPLOS DO NíVEL DE MICROARQUITETURA ............................................................ 183 4.6. 1 A micruarqultctum da C PU Penlium 4 ........................ .. ........................................... ... ............... .. ..... 183 4.8.2 A microarquitcrurn r.1I1 C PU Ultr.lS PARC·III Cu .............................................................................. 1~1 4.8.3 A m.icnlarquitcrura da CPU 80~ 1 .................. ...... .............................................................................. 11)()
4.7
COMPARAÇÃO ENTRE PENTruM . ULTRAS I'ARC E 8051 .....................................•.......... 191
4.8
RESUMO .................................................................................................................................... 192
5 NfvEL DE AR(j)UITETURA DO CONJUNTO DE INSTRUÇÃO ................... ..... .......... 195 5.1
VISÃO GERAL DO NíVEL ISA ................................................................................................ 1% 5.1.1 Prupricdadcsdn nívd IS" ........................ ...... .................................................................................... 1% 5 . 1.2 Modelos ue memória ........ .................................................................................................................. 1'-)7 5.1.3 Registradorc... ................... ................... ............................... .. ................................................ 19R
s. I.4Instruçtks .............................. .............................................. .. .................................................. 199 5 . 1.5 Visào gero[ do nível [S,\ do Pl:ntium -l ................... .. .................................................... 199 5.1.8 Visão ger.ll du nível ISA tia UltraSPARC Ui .............. ....... ............................................................... 201 5 . 1.7 Visão geral do nível ISA do M051 ....................................................................................................203
5.2
TIPOS DE DADOS ................................................................. ..................................................... 204 5.2.1 Tipos de dados numéricos .................................................................................................................. :205 5.2.2 'típos lle dados niio-numéricos .......................................................................................................... :205 5 .2.3 TIpos de dlldns no Penlium -l .... .. ..........................................................................2Ofi 5.2.4 Tipos de dados na UltraSPARC rlI ..................................................................................... ............... 206 5.2.5 'Iípus de d:ldus do g()~ I ......... ............................................................................................................. 106
S
•
w
><
5.3
5.3.2 5.3.3 5.3.4 5.3.5
•
•o ~
,
~ ~
5.4
E
o u
•
-
~
,•
= •
w
o
~
N
~
O
Expansão de opcodcs Foml:ltus de mstruçik$ Fonnrltos de i n s truçik.~ r"OnTlatos de instruçõcs
....................................................................................................................... 208 do Pemium 4 ........................... .....................................................................2 10 da UllraS PARC IH .................. .......... .............................................210 do 805 1 ......... . ... ............................ ....... ................... .. .. 211
ENDEREÇAMENTO .................................................................................................................. 212 5.4 .1 Modos de e ndere~o.mc nto ..................................................... ........................................................ 2 12 5 .4 .2 Endereçamento inlCdiuto ........................... .......................................................................................2 12 5.4.3 Endere~amento direh) ............................................................ .......................................................... 2 12 5.4.4 EndeTClf:UllenlO di! n:gistr:uior ............................................................................................................ 212 5.4.5 Endercç:IoIT'1elllO indireto de registrador ..... ......................................................................................... 21 3 5.4 .6 Enden:ç:uncnto indexado .................................................................................................................. 2 13 5.4.'1 EnJen:çamcnto de base indexado ......................................................................................................214 5.4 .8 Enden.:çamc nto de pIlha ................................................ ............................................................214 5.4 .9 Modos de cndel"i.."Çumemo par.t inslruçõc... de de... vio ........................................................................217 5.4.10 Ortogonalidade de oJXodes e modos de endereçamento ........................................ ........217 5.4. 11 Mtldos de emlcn:ç:lluento do Pentium 4 ....... ........... ................. ... 218 5.4.12 Modos de endereçamento 1.1:1 UllmSPARC {]J .................................... . ....... 21 9 5.4. 13 Mudos de endereçamento do 8051 .............. ........... .. .. ................................. ..... .. ........ 219 5.4. 14 D i scu.~sITo de rnooos de endc!"eIfarnento ...................... ..................................................... .. ........ 22()
•
~
•• • C •
FORMATOS DE INSTRUÇÃO .................................................................................................207 5.3 .1 Critérios de pmjclo par.! rormatos de i n~truçào ....... ........ ......................................................... 20?
5.5
TIPOS DE INSTRUÇÃO ............................................................................................................ 220 5.5 .1 Instruçõcs pat"J I1lOvilTk."nto,Je dados .................................................................................... ......... .220 5.5.2 Ü(x."r.IçUcs di:idicas ............ ... ............................................................................................................22 1 5.5.3 0pef3Çõe.
5.6
FLUXO DE CONTROLE ............................................................................................................233 5.6. 1 Fluxo de controh: seqüenc.1al e desvios ........................ . ...........................................................233 5.6.2 Procedi mentos .............................................................. ............................................................234 5.6.3 Co--rulina.~ ................................. ................................... 5.6.4 Exceções ................................ ................................. 5.6.5 InterTUJlÇôcS ..... ............. ...... ..................
5.7
................................... :........................236 .. ...................................... .....................238 . .............................................................238
UM EXEMPLO DETALHADO: AS TORRES DE HANÓi ...................................................... 240 5.7.1 As Torres de Ilanói em linguagem de montagem do Pemium " ........................................................ 241 5 .7.2 As Torres de Hanói em linguagem de montagem da Ultr.tSPARC lU .............................................. 242
5.8
A ARQU ITETURA IA·64 E O ITANIUM 2 ..............................................................................243 5 .8.1 O problema do Pcnllum " ... ...............................................................................................................243 5.8.2 O moddó 11\-64: computação por instruçãu explicitumente par.tlela ..............................................244 5.8.3 Redução de refcrendas l mCIDÓn a ............................... ............... .. .......................................... 244 5 .8.4 Escalonamento de instruç[lCS .. ......................................... ................. .................... ..245 5. 8. 5 Rl."lI uç:lu de dc sv lu~ cnndidnmlis : prcdica,:lu. .. .................. ......... 246 5.8.6 C.t",p~ ,:~pcC\Jla t l\;lS ... .. .......... _......... ..................... .. ...... ~ ·~ 7
5.9
RESU MO
.............................................................................................•........................... 24M
6 NfvEL DE MÁQUINA DE SISTEMA OPERACIONAL .........•.•.....•........ .••................. 252 6.1
MEMÓRI A VIRTUAL ................................................................................................................ 253 6 . 1.1 Paginação .............................................................................................................................................. 253 6.1.2 Implementação de pagmação ....................... ...... ............................................................................. .. 254 6.1.3 Paginação por demanda c \} modelo de conjunto de trJbalhu .......................................................... 255 6 . 1.4 Política de substiLUlI,iio de página ....... ............................. .. ...................................................... 257 6.1.5 Tamanhu de p;ígUlll e tragmcntaçào .................................... ..................................................... ...........258 6.1.6 Segmenlaçilo ............. ............ . ........................... ........................................................... ......... 259 6. 1.7 ImplcmelUlI,:io de ..cg ll1cn1a~àtl. .... ............... ....... ....................... ...................... .... ..... ... 261 6. 1.8 Memóna vi nual nul'entiuIII " .................................. ............. ..................................... ... ..262 6.1.9 Memórln vi nunl na Ultr'\sPARC III .... ....................... ........................................ ... 265 6.1.10 MernlÍna vlnual e caching ........ ......................... ............. ......................... ..266
- - -- ----_ .... ...... .....
6.2
lNSTRUÇÕES DE EIS VIRTUA IS
...... 267
6 .2.1 Arquivos ............................. ......................................................... .....................................................267 6 .2 .2 lmplcmcmaç:io de instruções de EIS vmuais ............................. ....................................................... 268 6 .2 .3 Instruçiks de gcrcOl::J:lIncntll de diretório ... ,...................................................................................... 270
6.3
INSTRUÇÕES VIRTUAIS PARA PROCESSAMENTO PARALELO ...................................... 271 6.3.1 Criaçào de processo ......... ........................................................................... ................................. 271 6.3.2 ConJj~õcs de disputa ....... ............. .......... .................................................... .... .................................. 272 6 .3.3 SincroniLaç:lo Jc procc:,>sn usando \C máforu.'i ... ............................................................................. 27..
6 .4
EXEMPLOS DE SISTEMAS OPERAC10NAlS .. .. ............ .... ............................................. .... ...276 6.4.] [nLroouçào .......... ... ............................................................................................................................277
6.4.2 Exemplos de mCrllUna virtual ......................... ......... ......... .............................................................. 2ij2
6.4.3 Exemplos de EIS vinual ................... .................. .................................................................. .........284 6 .4 .4 Exemplos de gerenciamento de processo .......................................................................................... 291
6.5
RESUMO .................................................. ...................................................................................294
7 O NfvEL DE LINGUAGEM DE MONTAGEM •• .........• ....... ..•....•......•.. ... ...........•..... 299 7. I
INTROOUÇÃO À lING UAGEM DE ~I ONTAGEM ............................................................... .300 7. 1.1 O que é uma linguagem de muntagem? ........................................................................................... 300 7.1.2 Por 4uc usar linguagem de muntagem'! .............................................................................................. 300 7.1.3 Formato de umil declaração em linguag..:m de montagem .................................................................. 302 7. J.4 Pscudo-inslrUÇõcs ........................ ........................................................................................................ 303
7.2
MACROS .................................................................................. ............ ...................................... 3()j 7.2 .1 Definição. chamada c e~ pansão de macro .........................................................................................3()5 7.2 .2 Macros com par:inlCtnlS ...................................................................................................................... 3()(1 7.2 .3 CaroctcT'Ísticas avançadas .................................................................................................................... 307 7.2.4 Implementação de um processador de macros em um aS!lCmbll:r ......................................................307
7.3
O PROCESSO DE MONTAGEM ............. ................................................................................ .308 7.3.1 Assemblers de duas etaplls ................................... ... ............. ............................................ ..... .. 308 7.3.2 Passagem um ..................................... ....................... ....................................................................308 7.3.3 Passagem dois .................................................................................................................................... 311 7.3.4 Tabela de simbnlos ................................................................... .... ....................................................... 3 11
7 .4
LIGAÇÃO E CA RREGAi\llE·NTO ................................................... ................... ... ,.... " ............. .3 [2 7.4.1 To.refas realil.adas pldo ligadur ........... ................................................................................................. 313 7.4 ..2 Estruturo de um módulo objeto .......................................................................................................... 315 7.4.3 Tempo de Yi ncul~ção I: rclocação dinilmic:l ........................... .................... ......... .............................. 316 7.4 .4 LigtlÇão dinilinic~ ................................................................................................................................ 317
7.5
RESUMO ................................. ... ........................................................ ...... ....... ..... ...................... 319
8 ARQUITETURAS DE COMPUTADORES PARALELOS .. ..•............................... ..•... 322 8.1
PARALELISMO NO CrUP .............. ........ ............. ..... .. ......... .... .......................... .. .... ............... 323 ................................ ....... 323 ......................... .1::=.7 ............................................. ......... 330
8 . Ll P-.lralelismo no nível tia mSlruç:1u ........ .............. ....................... . 8 . 1•.2 Multllhl'l::lding 111) chlp ..... .. ................................................... 8.1.3
8.2
MuhipruccsswJores
COITl IIIIl
limcn chip
CO-PROCESSADO RES .. ....................................................................................... .. ................... 33. 8 .2.1 Processadores de rede .................... .....................................................................: ............. .. ............ 334 8 . .2 • .2 Processadores de mídia ....................................................... .. ................................ ................ ..........338 8 .2.3 Criptoprocessadorcs ............................................................................. ....... ................. ........ ............. 3.. 1
8.3
MUlT1PROCESSADORES DE MEMÓR1A COMPARTllHA DA ......................................... .342 8.3.1 Multiproces,'\adores v.. r.\·lf,~ Muhicomputadurc.s ................................................................................ 342 8.3 ..2 Sem5nuc'l da memória ................. ..................................................................................................... 346 8.3.3 Arquitetum.~ si métricas de multiprocessado!' UMA .............................................. ...............348 8.3.4 Multiprocessadorc... NU MA .. ..... .......................... ................................................ .. ........ 353 8.3.9 Multtprocessadorcs COMA ............................................................................................................ 358
8. 4
MULTICOMPUTADORES DE TROCA DE MENSAGENS ................................................... 35~ 8.4.1 R~es tJc interconexão .......................................................... .. 8.4 . .2 MPPi - proccssudore~ maciçamente paralelos ........ ......... .
............... 36()
........ 362
• "
~
e
•
~
~
8 . 4 .3 Compul.:u;ão de dWlcr ... .............................. ......................................... ............................................ 367
.<
••o" ~
,• ~
8.4.4 Software úe comumcaç:1u para multil'omputadorcs .......................................................................... 370 8.4.5 Escalonamento .............................................. ...................................... ................................. ........... ....372 8.4.6 MClllÓri;J companilh;Jda no nível d~ :1pJi~ão ................. ......... ........................................................ 372 8.4.7 Desempenhu .................................. ........................................................................................... ......... 37b
8.5
COMPlJfAÇAO EM GRADE ....................................................................................................379
8.6
RESUMO .................................................................................................................................... 38 1
e o
~
•
~
•
~
9 LISTA DE LEITURAS E BIBLIOGRAFIA ......... .. .•. .............•........ ......•......... .......... 384 9. 1
•,"
9 . 1.1 9. 1.2 9.1.3 9.1.4
Introduç:10 e obm$ gerais ............................................................................................................... .... 38-1 Organll.alf:lO de .~i~temas de l."Om putação ... ............................................ .... ......................................... 385 O nível lógico dig ital ................................................................................................ 3~5 O nível da micm:lrtjuitelurn ...... ............................................................ .. ........ 386 9.1.5 O nível ue a.rq ui tetura do conj unto de instruç ão (instrucuot\ set an::hiter.:tu re levei) ........... 386 9.1.6 O nivel ue mâ4uma do sistema \lpcracional ......................................... .................... .. ............. 387 9.1. '1 O nível da li ng uagem dI! lIIonl3gem ............................................................................................... 3H7 9 .1.8 Arquill.:IUr..lS parnklas de computador ............................................................................................... 387 9 . 1.9 Numeros hinários I! de ponto nutua.nte ........... ........... ....................................................................... 38H 9.1.10 Pmgr.llll:llfão em linguage m de montagem .. .................................................................................... 389
, ;"
~
o ~ ~
• "c •=
o"
SUGESTÓES PARA LEITURAS COMPLEMENTARES ........................................................ 384
9 .2
BIBLIOGRAFIA .......................................................................................................................... 389
AP~NDICE A
NÚMEROS BINÁRIOS ... ... ........ ............... ..................... ........ .. ...... 397
A .l NÚMEROS DE PRECISÃO FINITA ..................................................................................................397 A .2 SISTEMAS DE NÚME.ROS RAIZ. OU NÚMEROS-BASE .............................................. ..............39R A .3
CONVERSÃO DE UMA BASE PARA OUTRA ............ ..
.........................................................399
A .'" NÚMEROS BINÁRIOS NEGATIVOS ................................................................................................400 A .S ARITM É'n CA BINÁRIA ....
AP~NDICE B
.. .................................................................................................402
NÚMEROS DO PONTO FLUTUANTE .... .... ...•.... ..•.•. .. ..•. ..•......... ..•....• 404
8 .1 PRJNCíPIOS DO I>()NTO r1..UTUANTE ............................................................................................-I()4
B.2 PADRÃO DE PONTO FLUTUANTE IEEE 754 ................................................................................-106
AP~ND I CE C
PROGRAMAÇÃO EM LINGUAGEM DE MONTAGEM ..... .... ........•.... ... .409
C.I VISI\O GERAL .................................................. .............................. ................................................. .409 C.2 O PROCESSADOR ~()XR .... ...............................................................................................................410
C.3 ,\1EMÓRI A E ENDEREÇAMEN'IU ................................................................................................41 3 C.4 O CONJUNTO DI:.IN:-iTRLÇÔI:.S DO :lOS!! ...................................................................................-Ilb C.S O ASS!3;\1IBLER ..................................................................................................................................-1'23
c .e O RASTREADOR .................................................... ..........................................................................-127 C.7 COMO COMEÇAR ............................... ... .......................... .
...................................................... .-128
c.a EXEM PLOS ...................................................................... .
.....................................................429
fNDICE ... ...... .•.........•. ................ .......•...... .•....................••.. .. ..........•.•........ ....... 441
Introdução
m computador digital é uma máquina que pode resolver problemas para as pessoas executando insuuçõcs que Iht: silo dadas. Uma scqilênda de insuuçi\es que descreve como rcaJi;r.ar cena tarefa é denominada programa. Os circuitos ~!c· tr6nicos de cada computador poJcrn reconhecer e executar diretamente um conj unl o limitado de instruções si mples. e. para que os progr.lInlls possam ser executados. todos devem antes ser convertidos em instruçôcs. Essas instruçl1cs básicas r.lra~ mente são muito mais complu.:adas do que:
U
Some dois números. Verifi que um número par.! ver se ele é zero. Copie dados de uma parte dd memória do compul::ldor para outra.
JunlaS, 'IS instruçôcs primilivas de um compUlador formam uma linguagem com a qual as pessoas podem se comunicar com de. Essa linguagem ê denominada linguagem de máquina. Quem projel:1 um novo computador deve decidir quais instruçócs incluir em sua linguagem de máquina. Em geral, os projetistas tenlam fal..e r com que as instruções primitivas sejam as mais simples possivcis. cocn:nIes com os requiSitos de Ulilização e desempenho idealizados par.1 o computador. de modo a red uzir a complexidade c o custo da eletrônica necessária, Como a maioria das linguugcns de máquina é bem simph:s. todos acham ditTcil e cntediante u.'>á-Ia. Com o passar do te mpo, I!ssa simples observação rc:mllou em uma mnndl"'.1 de estruturar compuladores como umu série dc abSlr.1ÇÕCs. cada uma acumulando-se àquela que lhe lhe precede. Assim. n complexidade pode ser dominada e sistema..\ de computação podem ser projetados de modo cstnllur.1do, sisteml1tico. Denominamos cssa abürdagcm ol'"ganização estruturad a de compuladnrcs - foi esse o nome que demos a nosso livro. Na scç30 scguimc descreveremos o que significa esse lenno. Logo após. comentaremos alguns desenvolvimentos históricos, o estado atual cW. tecnologia c exemplos importantes.
1.1
Organização estruturada de computadores
Como já menciunamos. existe umu grunde lacuna ~J\ t.rc u que ê CUllvcnientc pam as pcSSOtl." I: U que é conveniente para compuladures. As pessoas querem fal.er X, m:ls 0:-' comput:l\lore:-. ..6 podem fazcr Y. u que dá origem a um pmhkma. O IlhJl!tivo llcslC livro": cxplicar comI) csse problema pode ~cr resolvido.
1.1.1 Linguagens. níveis e maquinas reais \ o prohlema pode ,cr abordado de duas- maneirJS: ambas envolvem projetar um novo conjunto de instruções que seja mais \ \.:onvenicnte p:ll"'.1 as pessoas usarem do que o conjunto de inslru~õcs !.lue já vem embutiuo nu máq uina. Jun(;J.S, essas nova.... instruçÕC!S também ronnam uma linguagem. que deno minaremos L I , exat:Ullenle como as instruçõcs de máquina fomlalll uma li nguagem. que dClltllninaremos LO. As duas aborda!;ens são diferentes nu modo como os prograJlltl.'i escritos em LI são exa:utOldos pelo cumputador que, alinal. só pode executar programas esçntos em sua linguagem de máquina. LO. L'm método para executar um programa escrito em LI é primeiro ~ ubs titui r cada inslruç:10 e!~cri t.a no programa por uma -;cqüc:ncia equivalente de instruçi)cs em LO. O progr.una rcsul[allle cunsiste intciramente cm instruçõcs LO. Entao o computador cxeçula {} novo progr:tma LO em vez do antigo progrnma. LI . ESSil técnica é denominada tradução. A outra técnica é escrever um progr.1Ola em LO que considere programas em 1.1 como dadol\ de elllrada c os execute examinando cada instruçãu por vez e excetuando diretamellle a seqüência equivalente. de. instruções LO. Essa lél;n iea nfio req uer a
1
N
•o•" ~
•
= "E o
u
•
~
•
~
o ~ ~
• •" N
~
O
gcrJ.ção prévia de um novo progr.unu em LO. ma é de nominada interpretaçãu
t! I) pmgrama I.jue a C:
convertido pum um programa LO; Q programa L [ ~ descartado e então o novo prugf".lrna LO ê carregado na memó· ria do computudor c c;tcculado. Dur.,llIlc a execução é o pmgrama LO rccém-ger..ujo que está mdunuo no computador c quem o está cUnlrol:mdo. Na intcfllretação, após () exume e a decooificação de cada instrução LI. ela ê executada imediatamente. Nenhum pmgr.lma tr:lduzido é gcmuo. Aq ui , o interpretador está no controle do comput:u.lnr. Para ele. o programa L I é
_~
Nivel n
1 MáaWli1 real Mn. com
linguagem de INIqUll"l3 I..n
/-
Programlilll em Ln são interPl'etaótlII por um Il\1eJpretador que roda CIITI ump mAqurn" de nivellnfor"lOf. ou slo traouzidos P81ll a uII911ayem 118 n laQllWIII
de
UfTIa
mâq'--ll8 de
nr.oellnlerior
NfVlll3
?rograrnllll em L2 são
Inlerpr01POOe por
fi"" ... 1_1
Máqu.jna multinivel.
...-- Inlerpr1l1adOrn que
N"'" 2
.... -
rodam
sir:r
em Ml ou MO. ou
~
pala LI ou LO
Prngm mas em L I sio InlerprOlados por um ImorprelQdOr que roda em
MO. ou lia lmouzrdos piIIlI LO
Nivel I
ProgmlTlQ Im LO podem ...- ser executados dirfl1amenle Nivel O
----_
......... ..... ..... ............... _. .. .. ... ---
pelos CII"CUII08 " lellÓr11C011
L
esse: seu CIL'UO não seria dici~ntc em comparação com outras u!cnicas. Não basta apenas ,"cr viável: um projeto pr:1tico também deve ter um custo aceitável. Em cena sc:ntidu. um eompuudor com n niveis pode ser consider..u.Jo como n máquinas reais diferentes. cada uma com uma linguagem de mo1quina diferente. Usaremos os termos 'nível' c 'máljulOu real' indifercmcmente. Somente programas escritos em linguagem LO podem ser e;ott!cuudos diretamente pelos ci rcuitos e letrônICos. se.m a necessidade de trJ.dução ou interpretação intervcnienfcs. Programas e..'iCricos em LI. L2 ..... Ln devem ser interpretados por um interpretador que roda em um nível mais baixo ou tr:J.duzidos parJ \Una outrJ linguagem correspomknte a um nível mais baixo. Uma fX.ossoa que. cscrevc pmgramas paTa a máquina real de. nível" não precisa \!.~tar ciente dos interprctadl)' res c tradutores subj acentes. A CStrulllr..\ da máquina garalllc que esses programa.~ scj:lm c:\ecutados. de uma nmnei· ra ou de outra. Não há nenhum interesse real se eles silo elliecutados passo a passo por um interpretador que. por sua vc:t~ também é ..:xecutado por um outro interprcudor. uu se são executados diretamente pelos circuitos eletrônicos. O resultado é o mesmo em ambos os casos: os progmrna... são elliccutados. A maioriu dos progrJmadorcs que USillll uma máqui na de nível n está interesSilda alx:nas no nível superior. aquele que menos 'iC assemelha à ling uagem de máquina qu..: está no nível mais inferior. Todavia. quem se intc rcs"" ..:m entender como um computador rc:tlmente funciona deve estudar todos os nrveis. Quem projeta novos (,."Ompuudores. ou novos níveill (isto é. nova.~ máquinas reais), ta mbém deve estar fam iliari:t..ado com niveis que mio sejam apena.~ O superior. Os conceitos c ,L~ técnicas da CtmSlrUçfio de maquinas como oma séric de nfveis e os detalhes des tes são o principal a.ssunto deste livro.
1.1.2 Máquinas multiniveis contemporâneas A maioria dos \!omput:u.lorcs modemos consiste em doi.~ ou mais níveis. Existem máquinas com até seis níveis. como mostra a Figura 1.2. O nív\!l O. na parte inferior. é I,) verdadeiro hardware da máqu ina. Scus circuitos elliecu· tam os programas em linguagem de máquina de nível 1. Para não deixar nada de lado. devemos mencionar a \!Xis· tência de mais um outro nível abailliO de nn....so nível O. Esse nível, que não é mostrado na Figura 1.2 pon:luC pertence ao domínio da engenharia de eletricidade (c. portanto. está fora do escopo deste livro). é de nominado nível de dispusiti vo. Nesse nfvel. n projetisu vê lrJnsistorcs individuais. qUI: são os elementos de nível mais bnixo pam projetistas de computadores. Se. perguntarmos como é o funcionamento inlerno de um trJnsistor. cntt'.lremos na área da fisica do estado sólido. No nível mais baixo que estudaremos, o oívcllógico digital, os objetos interessantes .~:1o denominados por· lus. Embora construídas com componentes analógicos. como lrJnsistores. as por1illl podem .ser modeladas com precisão como disposilivos digitais. Cada ponu te m uma ou mais entr.ldas digitais (sinais que representam O ou I) e \!ompula como saida alguma função simples dessas e n trada.~. como E (AND) ou OU (OR). Cada pona é composta de. nu máximo. um punhado de trJllsistorcs. Um pequeno número de .Q2!!:lli pnde ~cr I.:Olllbinado parJ formar urna melmíria de Lbit. que pOde annazcnar um O ou um I . As memórias de I bit po<.h:m ser combinadas em grupos de. por (!;(cmplo. 16.32 ou 64 paraJonnar registradores. Um registrador pode conter de um unico número binário até algum valor máximo. Ponas também podem ser combinadas para formar o prôprio mecanismo Jl'rinci~1 de computação. ElIiaminarcmos portas e o nfvel ltígico digitnl \!o m mais detalhes no Capítulo 3. O próximo nível é o nivcl d e microarquitctur.l. Nesse nível vemos. normalmente . um conjunto de!.a 32 ~istmdQ!S..' quc formam uma memÓri" In,,,,) e um circuito de nominado !1 (Arilhmeüc LD\,rlc Unit). ou ULA (Unidade Lógict e Aritmética), que é capaz de cxe\!utar operações aritméticas ~imp l es. Os registradores ..:ia cOTlecta~LU par.J fonnar um c:uninho de dados atJ"Jvés do qual os dados trJnsilarn. A oper:u,::10 básica do N.... S
Nivel oe IVIgu.-.m onontadO li problema
Traduçoo (compilaoor) Nivel4
Tralluç:io
(~
Nivel J
Nivel do sislema operacional da maqlllna
Nillel2
Nivel de 01011110111(8 de COI1illnlO OtIlnlllfuçÔell
"-"1.2 Computador de seIS nivelS. O metado de supone para cada nlvel esta Indicado abaixo dele (junto com o nome do programa de supone).
InlorpretaÇão (microprogmma) ou oxecuçáo dlre1a Nrvel I HardWare
.",,0
NivellOglCO digitai
M
o
•• •
~
~
e
= o
• •
u
caminho de dados (!unsistc em .iClccionur um ou dois rcgistr.ldorcs. fazendo com que a ALU efetue rugo com eles
rt.:suh;ldo cm algum regislrador. Em :JIgumas m:Í4ui na.s a opcra"ão do C!lJT1inho de dados é conlI'Olada por um programa denominado micro-programa. Em oUlras. ela é controlada diretamente por hardware. Nas três primeir..LS cdh,õcs deste livro, denomi-
(por exemplo. some-os) e urmai'..cnl;': {)
•o• ~
,•
~
E o
u
•
~
•
~
,•" , "
•
.• ~
o
~
o" •
~
O
návamos este nível de 'nível de micropmgr.lmm;ão· porque, no passado. cle em quase sempre um intcrprcwdor de software. Visto que :IgurJ. o caminho de dados costuma ser, de modo purcia!. controlado diretamente por hardware, mudamus o nome nesta edição p;1ra rClrmar esse fala. Em máquinas nas quais o cam inho de dados d controlado por sortware. () microprograma é um inlcrpretador para us inSlru'if>c:s no nível 2. Ele busca. I!xamina e I!xeeula instruções uma por urna. usando o caminho de dados para fazê-lo. Por exemplo. no caso de uma instrução ADO (SOME), a instrução seria buscada, seus operandos, localizados I! trazidos para úentro úo registrador. a soma seria calculada pe la ALU e, por fim, o resultado seria enviado de volta ao lugar a que pertence. Em uma m~quina com contTole incorporado do caminho de dados, ocor+ reriam etapas semclh:lntes. mas scm um programa I!xplíci to anlluzenudo pum conlrolar a interpretação das instruçõcs do nível 2. No nível 2 temos o que denominaremus nível de Arquitetura do Conjunto de Instruções (ISA InSÍTUctiun 5ct An:h itcctUTc). ou nível 15A. Todu fabric:mle de computadores publica um manual para cada um dos computadores qUI: vende. imitulado 'Manual dI,: Referência de Li nguagem de Máquina' ou 'Principios de Opcraçao do Western Wombal Modc1 IOOX Computer' . ou algo parecido. Na verdade, esses manuais Ir.ltam do nivel (SA. e não dos níveis subjm:enles. Quando descrevem o conj unto dI! instruções da máquina, estão de fa to descrevendo as instruçõcs executadas por inlerpretação pelo miçroprograma ou pelos circuitos de execuç:l0 do hardware. Se um t:1bricalllc de cumputadores fo rnecer dois inTerpretadores para uma de suas máquinas. os quais interpretam dois níveis ISA diferentes, de lerá de fornet;cr dois manuais de referência de linguagem de máquina, um para cada interpretador. O próximo nível em gemi é híbrido. Grande p:ln c das instruçõcs e m suu linguagem lllnlbCm está no nível rS A. (Não há nenhuma razão por que uma instruçao que aparece em um nível não possa estar presente também em OO[TOS.) Além disso, bá um conjunto de novas instruções. umu organização diferente da memória, a capacidade de e~ecutar dois ou mais programas ao mesmo tempo e vários outros aspt.."Ctos. Há mais variações entre projetos de nível 3 do que entre os de nível 1 ou nível 2. As novas facil idades adicionadas ao nível 3 são executadas por um interpretador que roda no nível 2, o qual tem sido denominado historicamente sistema operacional. Essas instruções de nível 3, idênticas às do nível 2, são c!."'u!cutadas diretamenle pdo rnicroprogr,una (ou controle incorporado), e não pelo sistema operacional. Em oulr.lS pa.lavr.ls, '!!gumas das inslru õcs ~o nível ';]0 inte reladas ~lo §ili.l~+opcru.ciQ!!.al e outras são i ntt;.~ tadll;§ 9 i relame~u rnkrogro 'r.lma. E isso que 'híbrido' quer dizer. Neste livro de nom inaremos esse nível de nível de máquina de sistema operacional. Há uma ruplUr.J fu ndamental entre os nívçis 3 c 4. Os três níveis mais baixos não sii.o projetados para ul"ili7...ação do programlldor médio. de nível caseiro. Ao contr.írio. são dirigidos primanamellle à eKecução dos interpretadores e lradulores necessários para dar suporte aos níveis mais altos. Esses interpretadores c lr.ldutorcs são escri tos por pessoas denominadas progr.Jmudtlrcs de sislemas, que se cspccia.lizam em projetar e implementar novas máquina.. reais. Os níveis 4 e su 'riOl"CS são dirigidos ao progmmador de aplieaç&s que tem um problema a resolver. o melodo de suporte dos niveis mais altos. Os níveis 2 e 3 são Uma outra mudanç
empre interprctudos. Em geraL mas nem sempre, os níveis 4 c 5 são apoiados por trad ução. Uma OUll".J diferença entre os níveis I. 2 c 3, por um lado, e níveis 4, 5 c superi ures, por outro, é a nature7.ll da linguagem rornl.'Cida. As linguagens de máquina dos níveis I. 2 e 3 são numéricas. Programas nessa.~ linguagens consistem de uma longa série de numeros que é muito boa para máquinas, mas ruim pura pessoas. A partir do nível 4. as linguagcns'conlêm palavras c :lbrevi:u;õcs cujo significado as pessoas entendem. O nível 4. nível da lingu:lgern de montagem tas~·elllbly). na realidade é uma forma simbólica para uma das linguagens subjacelm!s. Esse nívd I"ornet;e um méllxlo para as pessoas cscreverem programas para os níveis I. 2 e 3 em uma fmnm que 11:10 ~j:1 tão desagradável qu:mto as linguagens de m:Ílluina real em ~ i . Pmgmmas cm lingua· gem de montagem ~;lo pn mcim tr:lduzwos par:, li nguagcm de nível I. :2 Ou J , e em ...eguida itllerprctados púla m:lquina real ou real adt..o.quada. O progr.i/lla q UI! realiZa a Ir.iduçao é de nominado assernblcr. O nível 5 habilUallHentl! I!ollsiste elll linguagens projetadas para ~I.! r usadas por prngmr1ladores dI! ap l il.: a~f>cs 4UC tenham um problema a resolvcr. Essas linguagens costumam ser denominauas linguagens de alto nível. Existem 1iwralmcntl! centenas delas. Algumas d:l" mais conhecida... são C. C++. Java, USP e Prolog. Progr.lmas escritos nessas linguagens em geral ,,;lo traduzidos par.! nfvcl 3 ou nível 4 !Xlr Irauumres conhecidos como compilador'CS. embor.l às vezl!s sejam interpretados. em vez de traduzidos. Programas em Jav:l. por exemplo. costumam ser primeiro lmduúuos para uma linguagem senh.:lhante à ISA de nominada 'e{)Jigo de byles Java' ou ' bytccodc Java' ", qUlt ,; t.:ntao interprcl:l.da. Em alguns casos, (l nfvel 5 t;o nsiSlc em UI11 interpretador para o domínio ue uma :1plicação espt.'Cífic:l. como matemática simbólica. Ele romece dados c {}pc ra~iks para resolver problcmas nesse domínio em lennos que pes. soas versad.as nde ptlssam clllendê-In com rat;ilidadc. Resumindn, () ;L~ peelo fundaml! llt:l.1 :1 lembrar t! qUI! computadores sao projetados como uma série dc níveis. cada um construído sonre scus anteccssures. Cada nível rcprese nl.:J uma absll".l~ào uistinta na qU:J.1 estao presentes dil"crcmcs objetos e opcraçôcs. Pllr projetarmos I! analisarmos computadores desse modo. por enquanto ptx.lcmos dispensar detalhes irrcll!vanles e assim reduzir um assunto I.:omplexo em algo m:l.is f:ldl de entenuer.
_L
o
conjunto de tipoli de doldus. opcraçÕl!s e características de cuda nível é denominado arq uitetura. A arquitetu ra (r..na dos a.~pectos que são visíveis ao usuário daquelt: nível. Características que o programador vê como' quam.idatle de mCmOria tlisponívcl. são pane da :lrquiteturJ.. Aspectos de lInph:mcntação. como o tipo de' tecnol: gia uS;.Ldo par.l implementar a memória. não são parte tia arquitetui.... O estudo sobre corno projetar as punes de um sistema de compulador que sej;.Lm visíveis para os programadores ê denominado a r q uitetura de com putador es. Na prntica. contudo. arquitetura de computadores I! organi7':'lejão de compul:Jdon:s significam essenclalml!nlc :l mesma coisa.
ti)
1.1.3 Evolução d e máquinas multiniveis P:lr.J coloc3t as máquinas multiníveis sob ccna perspectiva. examinaremos brevemente seu desenvolvimenlo histórico, mostrando como o numero e a nature:t.!! dos níveIS evoluinm ao longo dos anos. Progmmas escritos em Uloo verdadei ra linguagem tle má'luina (nivel I) de um computador podem ser executados diretamente pelos circuito.~ eletrônicos (nível O) do computador sem n..:nhum interpretador ou trad utor interveniente. Esses cin:uitos eletrônicos.junto com a mcmória e dispositivos de entmJa/saída. formam o tmrdware do computador. O hardware COIllliste em objetos tangíveis - circuitos integrados. placas de circuito impresso. cabos. fontes de encrgiu. memónas e impn:ssoras - em vez de idéia.o; abstratas. algorilI1los ou instruçócs. O software, entretanto. consiste em al!-:Ilrilmos (instruções detalhadas que dizem como fa7..cr algo) e suas representações no computador. o que chamamos de programu.~. Os programas podem ser armazenados em disco rigido, disco nedvel. CD-ROM, ou outros meios. mas a I!ssência do software é o conjunlo de instruçõcs que compõe os progr.lmas. e niio o meio físico no qual estão gravados. Nos primdros computadores. a fmnteira I!ntrc hardware I! software cru nítida. Com o tempo. no enlanto. essa fmntcim licou bastante indistinta. primordialmente por eausa da adição. remoção e fusão de níveis à medida quc os computadores evoluíam. Hoje cm d ia. muit.as vc:t.es c dilTcil distinguI-Ia IVahid, 2003). Na venfude. um tema cen~ trai deste livro é Htmiwurf! f! softIVore são logil"L1mefllf! eqlúl'uleflles.
Qualquer operação exccUtad:.l por sonware I:Jmbém pode ser embutida diretamente no hardware, de preferência. após ela ter !lido sulicientemen tc bem elllendida. Como observou Karen Panett.:l LcnlZ: "Hardware é apenas soft~ ware petrilieado". Claro que o contrário é verdudeim: qualqucr inslruejão executada. em hun:lware também pode ser simulada ..:m software . A decisão de colocar cer1aS funções em hardware e outras em software t! baseada em fmores como custo. velocidade. eonli abilidudc e freqüência de mudanças esperadas. H.1 poucas regras rigorosas e imutáveis para determinar que X deva ser in:;l:ll~ no hardware e Y deva ser eJtplicil:lUlente progrrunado. Essas decis&:s mudam com as tendências econumlcas. com a demanda I! com a utHização de tecnologias dc COmpUtl.lUnres.
A invenção da microprogramação Os primeiros compuladores digitais. na. década de 1940. tinham s6 dois níveis: o nfvel lSA. no qual ern feila toda a progmmaç5.o. e o nível lógico digital que executava esses prugmmas. OI cin:uitos do nívcllógico digital eram complicados. difíceis de entender c montar. c niio conliávcis. Em 1951. Maurice Wilkes. pesquisador da Universidade de Cambridge. sugeriu projetar um computador de tr!s níveis para simplilicar drastic:.unentc o hardware (Wilkcs. 1951). Essa máquina deveria ter um interpretador e mbutido .. imutável (o micropmgrama). euja função fosse executar programas de nívellSA por interpretação. Como agora o hardware só leria de eJtcçutar microprogmmas. que tinham um conjunto limitado de instruçócs, em VC7. de progi..lmas de nível ISA. çujos' conjuntos de inslruçf)Cs eram muito maiores. seria m."Ces.~ário um numero mcnor dI:! eircuitos eletrônico... Uma vez que. na época. os eir<."Ultos l!Ietrônicos er.lm compostos de vâlvulas c!euonicas. l:ll simplilicaçiio prometia reduzir o nlimem de válvula.~ c. p..lrtalltll. aumentar a ctlntiabilidatlc (il>tll é. u número de (alhas p..)r dia). Puucas lleSSllS mÕlqultllls de Ires nívcls furnm construídas durante a dt!c:lda de 1950. Outr.ill tamas foram ~ons truídas dUr.lntc a década de 1960. Em IIlmn de 1970_ a idéia de interpretar o nívcllSi\ por um micmprograma. em vez de diretamente [Xlr meios eletrônicos. era dominanle. Todas as p ~irll.:ipais m:íqui l1:lS da cpoca a usavam.
A invenção do sistema operacional Naqueles primeiroll anos. gr:mde parte dos computadores era 'acc!lsivcl :t todos'. o que significava que o programador tinh:J de operar a máquina pe5MJ:lhnente. Au lado de cada máquina havia uma planilha de utilização. Um progr.lmador quc quisesse executar um programa assinava a planilha e reservava um período de tempo. digamos. quarta-feira. das 3 às 5 ua manhã (m uitos programadores gostavam de trabalhar quando a sala onde a m:iquma estava instalada. ficava tr.lnqüi!a ). Quando çheguva seu borário. u programador ~c dirigia à sala da máqu ina com um pacote dc cartÕl!S perfur.ldos de 80 <.:olunas (um meio primitivo de cntrada de dados) em uma da... mãos e um lápis bem apontatlo na Utltr.l. Au chegar à ~a la do computàdor. ele I gentilmente levava até a pUnll () programador que lti eSlava antes dele c tomava posS/! da máquina. I.
'~Ie'
dc\le ser clltcndido ••.'umu 'ele ou elll' em 1000 c:õtc l;vOl.
o
" •"-
"
Se quisessc
-•• •
Ele '\C dirigia ao armário onde Cr.1 mantida a biblioteca de progrJrnlls. relir.lV:.I o grande.: maço verde rotulado 'compilador FORTRAN', colocava-o na leitora de cartões c õl pcrtava o boti:io $TART.
2.
Então colocava:;cu programa FORTRAN na h.:ilOr.l de cartões c apcrt:J.va () bolfio CONTINUE. O programa erJ lido peja máquina.
3.
QuanJo o computador pllr.J.va. de lia seu programa FORTRAN em um segundo momemo. Embora alguns compiladores c;(igisscm apenas uma passagem pela entrada. muitos rcl/ucri:ul1 duas \lU 1ll1llS. ParJ ("aJa p'L"sagcm . ..::ra pn:dso ler um gmnue maço de cartócs. Por Iim. li Ir:ldução se aproximava da cuor.:lusão. Em. comum o programador ficar nervoso perto do final purqut!, se () compilador cncontr.lSse um I.:rro no progrJ.ma., o programallor li nha de corrigi-lo e começar todo u proccsw nova mente. Se nuu houvesse nenhum erro. o compilador perfur.lva em cartf>cs o programa tmdu7jdo para linguagem de máquina. Entüo o progr.l.mador colocava o programa em linguagem de mâquina na leitor.! de cartões, j unto com o muvu da biblioteca de sub-mtj na, c lia ambos. O progrJ.ffia começava a executar. Quase sempre não funcionava e parava incspcmd:uncnte nu meio. Em geral, o programador mexia um pouco nas chaves de cnntrolc c observava as luzes do console durJ.IllC alguns instantes, Se tivesse sorte, conseguiria descobrir qual er.l.ll problema e corrigir o erro. Em seguida. volt'uva ao armário onde estava guardado o grande c verde compI lador fORTRAN e com~ava Ludo dc novo. Se não tiv..:sse tanta SOrte, imprimia o conteúdo da memória., denominado d(!SCarga (dump) de memória, c o levava para casa a tim de estudá-lo.
~
~
E Q
'-'
4.
•
~
,• , •
~ Q
•• ••
~
c
•
um progr.ama em FORTRAN o programador devia seguir as seguintes etapas:
1.
Q
,
eXI,:cUl:lf
s. 6.
~
O
E.'\se procedimento, com pequenas variaçõcs. foi o normul cm muitos centros de computação durante anos. Ele rorçava os prugranmdorc.o; a aprender como oper.1I' a máquina e o que fazcr quando ela pUrJ.va, o que acontecia com frc"lüenda. A máquina costumava ficar ociosa cnquanto as pessoas c:un:gavam cartõcs pela sala aforJ. ou coçavam as respectivas cabeças tentando descobrir por que seus progmmas não estavam funciontmuo :.Idequudamcnte. Pcrto dc 1960 as pessoas ICnlar:lJn reduzir o despcrdfcio de lI.:mpo automati7.ando U lr.J.balho do opcr:ulor. Um programa denominado sistem a opcr.J.cional crJ nlunlido no computlldor todo o tempo. O programador produzia cenos cartõcs de controle j unto com o prugmma, quc cram lidos c executudos pelo shncma o(>Cmcional. A Figur.l. 1.:3 aprcsellla uma amostra de serviço (joh) pam um dos primeiros sistemas operacionais de ampla utilizaçllo, o FMS (FORTRAN Monitor System), no IBM 709. O sistema operacillnal lia o cartão - J08 e usava a infonnação ndc !""Ontida para finalidades de contabilidade. (O asterisco era usado par.!. idenlilicar cartõcs de controle. para que elcs 0:10 fossem confundidos com eartões de pTOgr.!.ll\a c de dados.) Depois u sistema lia o canão - FORTRAN, que erJ uma instrução puni carregar () compilador FORTR AN com base em uma lita magnética. Então o progrmna era lido par.l a máquina e compilava pelo progrJ.ma FORTRAN. Quando o compilador tenninava. devolvia o controle ao sistema oper.J.cional. que Cnl30 lia o cartuo · OATA. Isso c'm uma instrução par.! executar o progmm:1 traduzido usando comu dudos os cartõcs "lue vi nham após o cartão - DATA . Embora o sistema operacional fosse projet..'ldo par.! automatizar o lrabalho do operador (daí seu nome), foi também o prim..:iro passo parJ. o desenvolvimento de UlIla nova máquina real. O eart:.10 * FORTRAN podia ser con~ sidcmdo cumo uma instruç50 virtual 'compilar progralllll ·. De modo semelhante. o C!U1ào · DATA podia ser consid..:rado uma inslTllção virtual 'cxecutar progr.una' . Um nível que contivesse apenas duas inslrUçiks não l!mlá um grande nível, mas já em um comc:ço. Nos anos s ubsc'lücnles, os sistcmas operacionais tomaram-sc cada vez mais sofisticados. Novas inslTllçOes, facilidades e camcterísticas forJ.m adicionadas ao nível lSA até que ele começou a parecer um novo nívc:l. Algumas lias in:'lrUçõcs dc:.se nuvo nívc1 ..:r.JnI idi!ntica.s às inslTlllj6es do nível ISA, mas outr.ts. cm particu lar a..~ instru,,'Ões de entr:lda/:-':llda, emm completamente difl.:rcntcs. As novas instruçõcs cum~aram a liear conhecidas como macros de sistem a operaciunal ntl eh:Ul1udas du supcrvisHr . "gom o tenno usu:J1 Li chamadll do sistel1la . •JOO, 5494 , BARBARA
'XEQ -FORTRAN
R ..... t.3
Amostra de semço Uobl para o sistema operacional PMS.
-I
'DATA
'ENO
Sistemas opcr.\Cionais também se dcscnvolver.lJll de outr:lS maJleirns. Os primóros liam maços de Cartões e imprimiam a Slída na impressor..! de linha. Essa organii".açào era conht.ocida corno sistema bUlch . Nommlmente havia uma e-;pcr.1 llc várias horas cnlrc o ho rmo em que um progr..!ma entrava na máquina c o ho rário em qUe os resultados ticavam prontos. Era difícil desenvolve r softwaIC nessas cin: unstancia.... No início d:1 dêc:!da de 1960. pesquisadores do Danmout h Collcge. do M IT e de outros lugares desenvolve. rnrn <;istcmas upcr.lcionais que penniti,lffi a vários programadores '$C comunicarem di rctamcnlC com o computador. Esses sistemas tin ham temlinais remolOS com."Ct."ldos no computador central por linhas tclefO nic:.L'l. O computador em comp;U1ll hado por muilos usuanos. Um programador podia digilar um programa e obler os resultados impre:.~os quase imedi:llamcntc em seu escritório, na garagem de sua casa ou onde quer que o terminal estivesse localizado. Esses sistemas eram dcnominados sislcm m; de tem po compartilhado (times/laring ). Nosso interesse em sistemas operacionais está nas pancs que intt!rprctam :JS instruções e características presentes no nível 3 c 4ue n50 I!st50 presentes no nível ISA, em vez de nos aspectos de compartilhamcmo de tem po. Embor..! não vamos destacar o fato, você deve ter sempre em meme que sistemas operacionais fa:r.em mais do que apenas interpretar características adicionadas ao nfvel ISA.
Migração de funcionalidade para micro código Assim que a mieroprogramação se tomou comum (em 1970), os projetisl:ls perceberam que podiam acrescentar novas instruções apenas ampliando o microprograma. Em outras palavras. ele.~ podiam acrescentar 'hardware' (novas inslTUÇôeS de máquina) por programação. Essa revelação levou a UIlUl. explosão virtual de conjunlos de ins· truções de máquina. porque rn; proj etistas competiam uns com os outros pam produzir conjuntos de insuuçôes maiores c melhores. Muitas dessas instruções não eram essenciais no sentido de que seu efeito podia ser conseguido com facilidade pejas mSlnll,."õcs existentes, embom às vezes fossem um pouco mais velozes do que UIlUl. seqüência de instruçõcsjá exislente. Por exemplo. muitas máquinas tinham uma instrução lNC (lNCrl!lnl!t1t) que adicionava I a um nume ro. Como essas máquinas também tinham uma inslrução geral ADO, n50 era necessário ter uma instrução especial pat"J. adicionar I (ou 720. se fosse o cuso). Contudo, a lNC nonnalmente era um pouco mais rápida que a ADD. e por isso em inserida. Por essa r.1Zilo, muillS outras instruções foram adicionnd3s:lO micropro!:,'I"J.ma. Entre elas as mais freqücntes eram: 1.
2. 3. 4.
s.
Instruçõcs Instruções Instruções Instruçõcs Instruçôcs
pam multiplicação e divisão de inte iros. ariunéticas pam ponlo flutuante . para chamar c sair de procedimentos. para acclemr laços (luoping). para manipul:.ir cadeias de caf"J.ctercs.
Além do mais, as.~im que rn; projetistas de máquinas perceberam como era fácil acrescentar novas instruçõcs. começar.un a procumr outras carat:terística.. pat"J. adicionar a seu.. microprogr.unas. Eis aJgu ns cxcmplos dcsses acréscimos: 1.
2.
3. 4.
s.
Caraetcrístie:ts para acelcmr c:íkulos que envo lvessem vetores (jmlexação e endereçamenlo indireto). Características para pcnnitir a movimentaç:10 de prt)grama.~ na memória após o início da exeeuçfio (fm.:i!idades de relocação). Sistemas de interrupção q ue avisavam O computador t!'io logo uma opcmção de cntr.1du ou saída estivesse concl uída. Capacidade pura interromper um programa e iniciar OUtro com um pequeno número de instruções (comulllç:1n de proce......o). Instruçõcs eSpl.-ciais para proct!ssar art{uivos de áUlJio. imagcm e mu lti mrdia.
Inúmcr:1S outrJ.S carnclerlsticus c faci lidades também foram acresccntadus ao longo do,\, anos. em gerJ.1 parJ. accler.lr alguma atividade panicuiar.
Eliminação
d~
microprogramação
Os micmprogmmas engordaram duranle os anos dourados da mieroprogmmação (décadas de 1960 e 1970) e também tendiam a fi car cada vez mais le ntos à medida que se tomavam mais volumosos. Por lim. alguns pesquisadores pcn:eOcr:lln que. eliminando o microprograma, prumovcndo uma dr.istica redução nu cunjunto de instruç6cs c fazendo com que ..... instruçi")Cs restantes fossem executadas d irelamcntc - isto ê. controle do caminho de dados por hardware - , as máquinas podiam licar mais r:ipidas. Em ceno sentido. o projeto de computadores techou um círculu completo. voltando ao modo como era antes de Wilkcs inventar a microprogr..!maç5.o. Ma.~ a rtxJa cominua girando. Programas Java em geral são execulados por eompilac,::'io pan uma linguagem intem ll.-diária (bJI(!("(J(/e Java) e depois pelu illtcrprctação desS
o
••,
~
~
,o
o
,
~
•
"
co
••
não é imponanlc. exceto, talvez. no que se refere à sua velocidade. Uma pessoa que esteja program:lIldo no nível tSA pode usar a instrução 'multiplicar' desse nível corno se fosse uma instrução de hardware sem ler de se prt:ocupar com ela ou até mcsrntl sem subt!r se ela t!. na verdade. uma insuuçáo de hardware. O hardware de alguém é o software de outrem. Voltaremos a todos esse:. IÔpicos mais adiame neste livro.
o
~
,•
~
8 o
u
•
~
•
~
• , =
•
~
o
1.2
Marcos da arquitetura de computadores
DurJ.nte a cvol uç:io do computador digitnl moderno fo r.lI11 projetadas c construídas ~cntcnas de difcrcntt!... tipos de comput:ldores. GrJndc parte já foi I!Squecid:!. há muito tempo. mas alguns causaram um impacto signilic:llivo sobre idéias modernas. NeSta seção vamos apresentar um breve esboço de alguns dos principais desenvolvimentos históricos parJ. entender melhor como chegamos onde c.'õtamos agora. Nl:m é pn.'Ciso di:rer que esta st.."Ção apenas passa por aho os pontos dI: maior interesse e deixa muita coisa de fora. A Tabela LI apresenta algumas máquinas que marcaram época e que serãu discutidas nesla SClõ:10. 51atl:r (1987) c! uma boa referência de consulta parJ. quem qui~r material histórico adicional .sohre as pessoas
~ ~
• c •
N
~
o
Tabela '11
Alguns marcos no desenvolvimento do computador digital moderno.
Ano
Nome
I
Constnudo por
.
Comentarias
183'
Mãquina amilltica
Babbage
Primeira tentativa de construir um computador digitai
1936
ZI
Zuse
Primeira máquina de calcular com relés
1943
COLOSSUS
Governo bntánk:o
Primeiro computador eletlÓnico
1944
Markl
AlIron
Primeiro computador norte-americano de
1946
ENlAC
8ckertlMauch1ey
A história moderna dos computadoWl começa aqui
1949
EDSAC
Wllkes
Primeiro computador com progrnrna annazenado
1951
Wlrirlwind I
M.!.!
Primeiro computador de tempo real
1952
IAS
von Neumann
A maJorla das máquinas atuais U3a esse projeto
1960
POP-I
OEC
Primeiro minicomputador
uso geral
ISO vendidosl
1961
1401
IBM
Máquina para pequenos negõcios de enorme popularidade
1962
7094
IBM
Dominou
1963
B5000
Burroughs
Primeira máquina projetada para uma linguagem,de alto nivel
1964
360
IBM
Primeira linha de produto projetada tomo uma fàmilla
1964
6600
COC
Primeiro supercomputador centifico
1965
POP-S
DEC
Primeiro minicomputador de mercado de
1970
POP-JI
DEC
Dominou os minicomputadores na década de 1970
197'
SOa0
Intel
Primeiro computador de uso geral de a blu em um chip
a computação cientiflc:a no inldo da década de 1966
massa
j50 mil vendidos]
1974
CRAY-l
Cmy
Primeuo :rupercomputador vetorial
1978
VAJ.
OEC
Primeiro supernunlcomputador de 32 bits
1981
IBM PC
IBM
Deu iniClO à era moderna do computador pessoal
1981
Osbome-l
Osbome
Primeiro computador ponatU
1963
Lm.
App1e
Primeiro computador pessoal com uma GUI
1985
386
Inta!
Primeiro ancestral de 32-bi'U da linJla Pentium
1985
MlPS
MIPS
Primeira máquma comercial RISC
1987
SPARC
Sun
Primeira estação de trabalho RISC baseada em SPARC
1990
RS6CXXl
IBM
Primeira máquina mperescaIar
1992
Alpha
OEC
PrimelrO computador pessoal de 64 bits
1993
Newton
Apple
Primeiro computador palrntop
1.2.1 A geraçã o zero - computadores mecãnicos (1642-19451 A primcirJ. pcSSUlI 11 ~\ll1slJ'Uir uma rnã4 uina ue I.:alculur opcrJ.dunal foi o cientista rrandls Blaisc Pascal (1623-1662),1:111 honra de lj ucm :I linguagem Pascal foi batií'.ada. Esse dispositivo, I.:nnslruido em 1642, quando
L
[).Jsca[ tinha apcna~ I t) anos. I"oi projet:Ldo para :1judar seu pai. um coletor de impostos do govemo francês. Em inlcirarnente mecânico. usava engrenagens e funcionava eom uma manivela opci.ld:Lii mão. A máquina de P:1~ca l podia efetuar apenurpreenUcutemel1te avançada para sua I!pOCl. Usava aritmética bi n:iria e a memória cm Ctlnll)(bt:l. de .:apacicores n.:carreyados penodic:unentc para impedi r fuga de carga. 11111 processu que cle t.lcno minuu 'slLcudi r a mem.~ria· Os ch i J>~ mndern(Js tle mcmória dim'imica (ORA M) funciona m desse mesmo modo. Infel izmente, a máquina nunca se tomou realmente operacIOnal. De certn modn. AtallllsoIT t;r.L como Babbage: um vision:irio que alinal foi dCITOt.o.do pela tecnologia de hardware inadcquada exislenle em seu te mJXI. O computador de Slibbi tz, cmboí.l mais pri mitivo do que o de AmnasolT. fu ncionava de ventade. Stlbhit7. rez uma gmnde demonstraçào pública de sua nl.1quina durante uma con ferência no Danmouth Collegc em 1940. Uma das pessoas presentes em Joh n Mauc hlt:y, desconhecido prtlfcssor de fís ica da Universidade da Pcnnsylvania. Mais (arde n mundo do computador ouvi ria mais a respeito do professor Mauchlcy, Enquanto Zusc, Stibbitz e AtanasoIT CSl!lv;tm projetando calculadol"'.lS automáticas, um jovem chamado HuwanJ Aikell estava remoendo tediosos cálcu los nu méricus à mão como parte de sua pesquisa de doutoradt) em Harvard. Depois de coneluído o doutor.ldo, Aiken reco nheceu a im ponãnd a de ra:/'.cr cálculos à máqui na, Foi à bihl ioteca, descobri u o trnbillho de Babbage e decidiu constru ir com rclés o computador de uso gemi 4ue Babhage n;lo tinha conseguido constrUir com rodas dentadas. A prirnei rJ má4 uina dl! Ai ken, a Mark I. fo i concluíd!l e/ll HarvanJ em 11)44. Ti nha 72 palavras de '23 a l guris~ mos decimais cada c U/ll tempo de instrulfão de 6 segundos. A cntr.lda e a suída Us:lvam tit.a de papel perfurada. Quando A.ikcll conclUI o sucehsor de.~sa m:lqu in:J, a Mark 11 , os computadores de rel!Ss já I!Stavam obsoletos. A era eletrônica ti nha começado.
= o
= •
u
• •
o
• o
~
~ ~
s
o u
•
~
•
~
•
"
-"
• w
.•• o
~
" •= o
-
o
1.2.2 A primeira geração - válvulas (1945-1955 )
o
cMírnulo p>lr:I IJ cmllpUlaJor dctrônico foi a Segunda Guerra Mundial. Durante :I t!lSC inicial da guerra. submannos alcmãr.:s c.slav;lm clusando devastação cm navios britânicos. As instnu;õcs de comando dos almir.mtcs ulcm:ks em Berlim er:.11ll enviadas :llIS submarinos por rádi u. as quais os britânicos podiam interceptar, c interceptavam. O probkm:l. em qUI! essas mensagens C!':lJll codilic:uJas usando um dispositivo denominado EN IGMA. cujo an h!CCSStlr fo i projetado pelo invcntor amador c outrora presidente dos Estados Unklos. Thomas Jefferson. Logo no inído da guerra. ti illlcligência britfinica cllnseguiu adquirir uma máquina ENIGMA da Inte ligência Pnlollcsa. l{uc ti tinha roubado Jos alcmàcs. Contudo. para decifrar uma men:;agel11 codificada cru preciso uma LjuantitL1dc enamle de dleulns c. pura a mensagcm ser de alguma utilidade, era necesilário que esse cálculo fosse concluído poueo lempo depois de ela ter sido intcrccpud.1. Par.l decodificar cssas mensagens, o governo britnnico montou um labor:lIório ul tra-secreto quc construiu um computador eletrônico denomi nado COLOSSUS. O famoso m:llemáuco brilânicoAl:m Turing ajudou a projetar essa máquina.. O COLOSS US funcion ava desde 1943. mas. uma vez que II governo brilânico guardou pralicamcnle todos os aspectos do proj eto como segredo militar durante 30 anos. a linha COLOSSUS foi h:L'iicamcnlc um beeo sem saída. Só vak a P'!na citá-lo por ter sido o primeiro com· putador digital detro mco do mundo. Além de destru ir :IS m:íqui nas dc Zu ~ e estimular a construção do COLOSSUS. a guerra também afetou a computação nos Estados Unidos. O exército preeisava de tabelas de alcance pam mirar sua arti lharia pesada e produzi:ll!ssas I.:lbclaS con lrata ndo centenas de mulheres para fazer os cálcu los necessários com a uuli:r...ação de calculadoras de mão - as mulheres emm consideradas mais caprkhosas que os homens. Ainda assim o processo era demorado e freqüentementc surgiam erros. Jnh n Mauchley. quc conhecia II 1mbalho de AunasolT. bem como o de Sti bbitz. s:J.bia que o exército es\;lva interessado em calculador'.LS O!cc;1nic:lS. Como muitos eientistas da compulação que Vier.lOl depois delc. ~auchley montou uma proposta solicitando no exércilO fi nanciamento pam a construção de um corn pulador eletrônico. A propo:.!a foi aceiw em 1943. e Mauchlcy e seu aluno de pós-~r.lduação . J. Prcspcr Ecken. passaram a construir um eompul.:ldor eletrúnico ao qual uer'.lm o nome de EN IAC (Electronic NlllUcrieal lntegrator And Compote integrador e computadur num-:rko eletrônico). O EN IAC consistia I!I1I IH mil válvulas e 1.500 relês, pesava 30 toneladas e consumia 140 quilowatts dc ener· gia. Em temlOS de arquitetura. a máquina tinha 20 rcgislr.ldores. c:lda um com eapacidadc par:l conter um numero decimal de 10 algarislllos. Um rcgis tmdor ded mal é uma memória muito pequena que pode conter desde um numero até um outro nu mero máximo de CaSas dt..."Cimais. mais ou menos como o odOmetrO, qu e registra quanto um carro rodou em seu tempo de vida útil. O ENlAC era programado com o ajuste de :lIé 6 mil imerruptores multiposição e com a conexão de uma imen::;a quanudade de soquetcs com uma verdadeir'.! norcSla de cabos de j um pcrs. f\ cOIL"lrUç50 da mS-quina só fo i concluída em 1946. quando cr.l muito l!1n.Ie para ser de alguma uulidade em relação a seu propósito original. Toda via., uma vez que :\ guerra linha acabado. Muuchley e Eckcrt receberam permiss.ão p:1m organi7.ar um curso de vcr:io par.l descT\!ver seu tr.lbalho par.l seus eolegas dentistas. Aquek curso de ver:l0 foi o início de uma explosão de interesse na construção de grandes compuwdorcs digitais. Após aquele curso de verJo históri<.:o. o utros pt!squisadorcs se d ispusemm a construir eomputadores eletrÔni· coso O primeiro a entr.lf em uperução fo i o EDSAC (1 949). construído na Universidade de Cambridge por Mauriee Wilkcs. Entre outros. Iiguravull1 o JO HNIAC. da Rand Corpomuo n; o ILLlAC, da Universidade de Lllinois; o MAI"IIAC. do Lus Alamos l..abof'.llUry: e o WEIZAC, do Wei:r.mann Institute em Israel. Ecken e Mauchley logo eoml."Çar.lm a 1mbalhur cm um sucessor, o EDVAC ( EI ~trol1 ic Discrete Variahle Automatic C om pule). Contudo. esse projcto licou fata lmente eompronu:tido qua ndo ele.... dcixarnm a Universidade da Pensilvãnia par.l fundar um:1 empresa nova. a Ecken-Mauchlc)' Computer Corpor.ltinn. na Filadéllia. (O Silicon Vallt.!y amda não ti nha "ido invenlado.) Após uma ~ric de (usücs. essa empresa ~e tomou a moc.lerna Unisys CmllClr.ltlOn. Cumo um ap:u1e legal. I;:ckcrt e Mauchle)' ~olid tarJIIl um:1 patente alegando q\le eles h:tvi:un inventmlu u cum· putador d igital. Em retrospceto. pussuir essa patcntc uuo seria nada mau. Apos :IIIOS de lillgio. u tribunal deCidiU que a patente de Eeken -MulIchlc)' I!r.! inv,ílirJu e 4ul! Jnlll1 AlUnasulT linha inventado () computador digita l. cmho['".l nunca u tivesse ]lutentea~(). F.nquanto Eekcn c Mauchle)' Ir.lbalhavam no EDVAC. uma das pessoas envolvidas no pmjelo ENIAC. John von Ncuman n. foi para () InSlinHe nf Advanec:d Studies dc Princeton par.! construi r sua própria vcrs.ão do EDVAC. a nuíquin:1 LAS. Von Ncumann cr.l um gênio. da lIlesmu est i~ dc Leonardo Da Vinci. Falava muitos idiomas. cm I!spcdalisw. em CIênCiaS flslcas c matemática e guaruav:t na memória tudo que jli ouvimo vi r.! Oll lem. ConsegUia cttar 'iC1ll consulW. palavm por palavr:I. o tcxto de livros que ti nha lido havia anos. Na é poca em que se interessou por I.:nmput:ltJorcs. ele Já I!r.lll mais e mi ne nte malemático do lI1undo. Uma da~ coisas que logo licou óbvia para de fui que prugmmur eomput:uJores co m q uantidades imensas de interruptoTCs e cabo~ era uma I.:lrefa lenta. tediosa e mecân ica. Elc pereebeu que li prngr.lmu podia ~ r rcpresen ta· do cm fOl1l1a Lligllul na Olelmiria do computador.jullto com us dados. Também viu que a desajeitada aritmética dedmal serial usada pdo ENIAC. COIll cada dígim rcpresclltlldo por 10 válvulas (I aeeSll c 9 lI pllgada.~). pocJia ser substitu ída USiUldo aritmélica binária par.llda. algo q ue J\ttUlasolT tinha pcreebido anos ante~. O proJCIO bâsico. {) pri mem) que de dl!scrcveu. agor.! é conhecido como máquinn de Von ~eumanD . Ela foi usada no EDSAC. " primeiro I.:ornput:ldor de pmgf'.Jma anna'l.enado. I.: agorJ. mais de meio século depois. ainda é
I..
figura 1.4
Máquina ongmal de Von Neumann.
I Unidade ae
1
I
Unldaae di! lóqK:a ear l t m 7
IXlnuola
I
Acumulador
-,......LEnllUda
J
.
I "'" I
a base de quase todos os eompUl.:Worcs digitais. Esse projeto c a máquina lAS. construIda em colaboração com Henmm Goldstine. teve uma inllu":ncia tão grande q ue vale n pcna descrevê-Ia brevemente. Embo....J o nomc de Von ~eumann esteja scmpre ligauo a esse projclO. Goldsli nc e outros também lhe de ....un substanciais cOlllribuições. Um esboço da arq uitctur::l é dado na Figur.J IA. i\ máquina de Von Neumann tinha cinco punes básicas: a memória. a unidade de lógica c ariunética, a unidade de controle c o equipamento de enllilcla c saída. A memória consistia em 4.096 palavr.ls. uma palavr.J contendo 40 bits, cada bit um O ou um I. Cada palavra cOl1tinha ou duus insU1Jçõcs dc 20 bits ou um inteiro de 40 bits com sinal. As instruçõcs ti nham K bits dedicados a identificar o ti pu da instruçãu e 12 bits para espccilkar uma das 4.096 pabvr.ls de memória. Juntas. a unidade de lógica e ariunética c a unidade de eontrole fannavam o 'cérebro' do computador. Em computadores modernos c1a... süo combinadas em um único chip denominado C I'U (CentraJ I'rocessing Unil - unidade central de processamento). Dentro da unidade de lógica c aritmélica havia um registr.ldor interno cspcciaJ de 40 bits denominado acuDluI:tdor. Uma instrução lÍpic:l adicionava uma palavra de memória ao acumulador ou annazcnava conLcúdo do acumulador na. memória. i\ máquina nilo tinha arilmética de ponlO tlut uante porque Von Neumann achava que qualquer matemático competente conseguiria ::Icompanhar o pomo decimal (na verdade o ponto binário) de cabeça. Pratic::lmellte ao mesmo tempo em que Von Neumann estava construindo sua máquina IAS, pesquisadores do MIT lambém estavam cnnstruindo um com putador. Difere nte dn IAS , do ENlAC e de oUlfas máquinas dessc tipo, cujas palavras linham longos comprimentos e eram destinadas a cálcu los numéricos pcs:ldos, ti máquina do MIT, a Whirlwind I, linha uma palavra de 16 b i L~ c cra projetada para controle em tempo real. Esse projeto levou à invenção da memória de núcleo magnéuco por Jay Forrester c, depois, em seu devido tempo, ao primeiro lninicomputador comercial. Enquanto tudo isso c...tava acontecendo, a tEM em umn pequena empresa dedicada ao negócio de produzir perfumdo ....lS de cartões e máquinas nx'ciuicas de classificação de eartõcs. Embor.l te nha contribuido para o financiamento de Aiken. a IBM nãn eSUlva muito inlereM>ada em computadores alé que pn.xJuziu o 70 I cm 1953. muito tempo após a empresa de Eekert e Mauchtey ter aJcanç:ldo o posto de número um no mercado comercial eom seu computador UNIVAC. O 70 1 tinha '1.048 palavras de 36 bits, com duas insU1Jçõcs por palavra. r-ui o primeiro de uma série de máquinas científic:ls q ue vic ....un a dominar o setor dentro de uma década. Três anos mais tarde apareceu o 704 que, de início, li nha ·t.()96 palavr.ls de ltIemôria de núcleos, instruçõcs de 36 bitS e uma inovação: hardware de ponlo l1utuantc. Em 1958. a IBM iniciou a produçiio de sua úl tima máquina de válvulas, :l 709, que era basicamente um 704 remodelado.
I'
1.2.3 A sllgunda geração - transistores (1955- 1965) o transistor fOI invenlado no Bell Labs em 1948 por John Bard\!Cn, Wa.1ter Br:llt:lin e Wi lliarn ShockJey, pelo qU:11 rcccbc!r..1In tl Prêmio Nubel de fhiea de 1956. Em dez allos () u-ansi:,tor revolucionou os ..:ompuladores c, ao linal da tléc.ad:l de 1950. os computadores de v:ilvulas estavam obsoletos. O pmnciro eomputudor !r..lOsistonzado foi eO " ~lmidll no Lincl)l" Labur:lIlwy un MIT. uma máquina de 16 bits rlUlllcsma li nha do Wtllr!w;nd I. Rceellcu () uurue de TX-O (Transiscotized cXperi lltemal Comput.er O - comp utador 1r.JlIsistoriwdo t!Xpcrimental O), e:l intelJção era uSli-la apenas como d isptlsitivo dc teste para () muito mais elegante TX-2. O TX-2 nunca foi granúc coislI. lIlas um Jos engenheiros tlue trabalhava no Laooratory, Kenllclh O lscll. fundu u uma crnpresa, a Digi tal Equipmcm Curporatiun (DEC), em 1957, pam I"abricar uma máqui na comercial muito parecida com o TX-f). QU:lttn :tnns se pa.ssar.un antes que essa máquina. o PDP-I, aparecesse, primordialmente purque os investidores de risco q ue fundaram a DEC acredil:lvam de modo veemente que não havia mercado para computadores. Afinal. T. J. WaLSoll. amigo presideme da IBM. certa vez dissem que o mercado mundial de cornpUladores corrcspondia :l eerca de quatm ou c inco unidadc.... Em vcz de computadores. a OEC vendia pequenas pll.lças de circuitos. Quando o PDP~I fi nalmente apareceu em 1961, ti nha 4.096 palavras de 18 bits e podi:l executar 200 mi l instruçõcs por segundo. Esse desempenhu era a metade do desempenho do IBM 7090, () sucessor tr.lIlsisttlrii'.ado do 709 e tl computador mais d pido do mundo na época. O PDP- I custava 120 mil dólares; o 7090 custava mi lhõcs. A DEC vendeu dCi'.cnas de POP- Is, e 1Ia.~cia a indústria de minicomputadores. Um dos primeiros PDP- Is fOI uado ao MIT. onde mpidamente at....Jiu a alenção de alguns novas gênios em aprilIluramento tãu comuns no MIT. Uma das muitas inovaçõcs do POP- I era um visor c a c:lpacidade de plotar pon-
o
• u•
~
N
••
fIIU'.1.5
Barramento omnlbus do PDP-8.
o
~
,• ~
•
o U
•
~
• • ,
~
-•
~
o ~ ~
• N
<
•m
o
tos I!m qualquer lugar de sua tela UI! 5 12 por 512. Em pouco tempo os estudamesjá tinham programado o POp·[
pura jogar guerra no espaço e o mundo ganhou .seu primeiro vidcog:J.me. Alguns allos mais (Urde n DEC lançou () PDP-It que era uma máquina de 12 bits, porém muito mais barol{a do que o PDP· I ( 16 mil dólares). O PDP·8tinha uma imponam!! inovação: um oorramcnto único. o omnibus. como mostrol a FigurJ 1.5. Um barramento é um conjunto de fios parJlclos usados para conectar os (.'Omponcntcs de um computador. Essa arquitetur.t fo i umu mpl Ur:I. imponamc em relação
11.
arquitetum da má(luina IAS. ccntradn na
memória, c, desde então, foi adulUdu por quase todos os compuludorcs de pequeno porte. A DEC alcançou a mureu
por-s
de 50 mil vendidos. o qut: a consolidou como :l líder no negócio de minicomputad ores. Enquanto isso. a reação d3 IBM ao tr.tIlsistor foi construir uma vcrsão trJ.nsislorizada do 709, o 7090. como já mencionamos, e. mais tarde. o 7094. O 7094 linha um tempo de eiclo de 2 microssegundos e 32.536 p3lavrJ.S de 36 bits de memória de núcleos. O 7090 e o 7094 marcaram o final das máquinas do tipo ENIAC. mas dominaram a computi!ção cientític:.t durante anos na década de 1960. Ao mesmo tempo que se tomava uma gl"".tnde força na computação científica com o 7094. a LBM e:uava ganhando muito din heiro com a vcnda de uma pequena m~quina dirigida parJ. empresas. denominada 1401. Esta mâquina podia ler e escrever fita.'! magnéticas. ler e perfurar cartões. além de imprimir saída de dados quase tilo l"".1pidamente quanto 11 7094. e por uma fmção do preço dele. ErJ. terrível pal""J. computação científica. mas perfeita par.1 mantcr registros comerciais. O /401 era fol"".1 do comum porque não tinha ncnhum registrndor. nem mesmo um comprimChto de palavra fixo. SUi! memória tinha 4 mil bytcs de 8 bits. embora modelos posteriores supor1assem até 16 mil bytes. o que era assombroso na época. Cada byte continha um caractere de 6 bits. um bit administrativo e um bit par.1 indicar o fi nal da palavra. Uma instrução MOVE, por exemplo. tinha um endereço-fonte e um cndereço-de.'!tino. e começava a trJ.nsferi r bytes da fonte ao destino at~ cncontrar um byte de fi nal com valor I. Em 1964. umu minúscula empreSll desconhl.'cida. a Control Data Corporation (CDC), lançou o 6600. urnu máquina que 1:1"",1 uproximadamente uma ordem dc gmnde7..:l mais r-ipidu do que a poderoSll 7094 e qualquer tlutrJ. máquina existcnte n:!. ~poc:!.. Foi amor à primeira vista paro os caJculiSbs. e o CDC parou a caminho do sucesso. O segredo de sua velocidade .... a razão por que em tão mais rápido do que o 7094 era que, dentro da CPU. havia uma máquina com alto gl"".1U de paralelismo. Essa máquina tinha diversas unidades funcionais par:! efetuar adições. outr:l.~ pllrn efetuar multiplicaçõcs e ainda mais uma para divisão. e toda... ela... podiam fundonur em paralelo. EmborJ. l!Xtr.l.ir o melhor dessa máquina exigisse cuidi!dosa prob'mmação. com um pouco dt: trabalho em possfvcl eXt."t:ulllr de:.! instruções ao mesmo tempo. Como se isso não fosse o bastante. a 6600 tinhi! uma quantidade de pequenos computadores internos para ajudá-Ia. uma espécie de Branca de Neve e as 'Sete Pcssoas Vertical mente Prejudicadas'. Isso significava que a CPU podia gastar todo o seu tempo processando números. deixando lodos os detalhes de gere nciamento de jobs e entra~ da/saída pam os computadores menores. Em rctrospt:cto. a 6600 cstav"J. décadas à frente de sua época. Muitas da.'! idéias fundamentais encontradas em computadores modernos podem ser rastreadas dircLamentc até a 6600. O projetista da 6600. Scymour CI""J.y. foi uma tig ura legendária. da mesma estatura de Von Neumnnn. Ele dev()tou sua vida inteira à conslTuç:10 de m,íquinas c:Lda vez mais rá pidas. deRominadas cntão de slIperCtlmpUbldores. inclUIndo a 6600. a 7600 I.! a Cray- I. Também invl.!ntou o famoso algoritm u para comprar carro.~: VIi ta concessionária mais próxima de sua casa. aponte o carro mais pruximo ua pona e diga: "Voü h:var aq uele". E.'ôSC algoritmo gasta t) mínimo de tempu em coisas .;em imponanda como cmnpl"".lr carms - pam deixar o máXImo de tempo livre ll.lra fa..:c r .:oi:.as i mpllrtaHtc ~ com~) projctar ~ upcrcomput:ldl) re~ . Havia muitos \l ulros comput:ttJorcs nessa época. mas um se dest:lca por uma rawo bem difere nte .... que vale a pcnll mencionar: li Burnlughs B5(XX). OS projclisti!s de m:iquinas l:Omu o POP- I, o 7094 e () 66{)(1 estavam tolalmellle preocupados com li hanlware. seja pat"J. (Iue ficassem mais bUf"J.tos (DEC). seja par.! que fosse mais rápidos (IBM e CDC). O software era prJIieamente irrclcvantl.!. Os projeu:.tas do B50()() adour.uTI uma linha de ação difereme. ConslruírJ.1l1 uma máquina com a imenção C."llC.: cítica de progr.J.má-la em linguagem Algul 60. uma precursora lI:1C e da Juva. c induír;J.1O muitas características no hanlware paJ"'J. facilitar a tarefa do compilador. Nascia a idéi a de que n software tambêm em imponllntc. Infe lií'.menle. ela foi esq uecida quase de imediato.
1.2.4 A terceira geração - circuitos integrados 11965-1980) A invenção du circu ilO integmdo de si Hcio I>or Roben Noyce em 1958 permitiu que dezenas de trJ.nsistores fn:.sc m colocados em um ún ico ehip. Esse cmpacotamento possibil itava a construção de computadores menores. mais r.í pidos e mais bumtos dI) l/Ut: SI.!US precursores transistoril'..udos. Alguns dos computadores mais sign ilicativos dessa gcr.lção sãtl dl.!scritos a seguir. Em 1964 a IBM CI"".1 a empresa líder da área de cllInput:K!ures e linha um grande problema com suas dua.'i máqui nas de grande sucesso. a 7094 c a 140 1: elas emm tão ineumpôllfveis quanto duas mâquinas podem ser. Uma
.L
Tabela 1.2
Ofena inicial da linha de produtos IBM 360. Propriedade
Modelo 30
l'
Desempenho relattvo 1 Tempo de delo !em bilionésimos de segundol
1.000
Memória mãxima !byresl
65.536
8ytes buscados por delo
Número máximo de canais de dados
3
Modelo 40
Modelo 50
I
Modelo 65
3,5
10
21
625
500
250
262.144
262.144
2
•
16
3
4
6
524.288
c:r..1 uma procesS!ldor::l. de números de aha velocidade que usava ariunétie:l binária em registradores de 36 bit... ; ::l outra, um fes tcjado processador de enlf'lda/saída que usava arilmética decimal serial sobre palavr..lS de compri mento variável nu memória. Muitos de seus clientes empresariais tinham ::lmbas c não gostavam da idéia de ter dois departamentos de progr..1mação sem nada em comum. Quando chegou a hora de substit uir essas duas série.... a IBM deu um passo radical . Lançou uma linha de um único produto. o Systern/360, baseado em cin::uitos imcgr..1dos, projetado para computação científica c também comercial. O System/360 continha muitas inovaçOcs, das quais a mais import:mle era ser uma famiJi a de urna meia dúz.ia de máquinas com a mesma linguagem de montagem e tamanho e capacidade crescente.'1. Uma empresa poderia substiruir seu 1401 por um 360 Model 30 c seu 7094 por um 360 Model 75. O Modcl 75 er.. maior c mais rápido (c mais caro)...mas o software escrilO para um deles poJeria, em princípio. ser executado em outro. Nu pr.ítica. software escrito pur.. um modelo pequeno seria executado em um modelo gmndc sem problemas, porém, quando transferido par.. uma máquina menor, o progrJITla poderia nãl) caber na memória. Ainda assim er..1 uma im ponante melhoria em relação à situaç:io do 7094 e do 140 1. A idéia de fa mílias de máquinas 1'01 udOlada insuultancamenle c. em poucos anos. a maioria dos fabricantes de computadores tinhu uma famOi:l de máquinas comuns que abrangiam uma ampla faixa de preços e desempenhos. Algumas características da primdra família 360 siio mostr.was na Tabela 1.2. Mais tarde fornm lançados outros modelos. OUtr.l importante inovação da 360 era a multiprogm mação, com vários program::ls na rrn:mória ao mesmo tcmpo. de modo que, enquanto um cstal;a esperando por cntr..1dn/saída par..1 concluir sua tarefa. um OUlfO podia executar, o que res ultava em utilizaç50 mais aha da CPU. A 360 l:lmbém foi a primeira máqu ina que podia emular (simular) o utros computadores. Os modelus menores podiam emu lar a 1401. e os maiores podiam emular a 7094. de maneim que os clientes podiam cominuar a ext.'CUlar seus antigos progrnmas binários sem modificação dur.mte a conversão para a 360. Alguns modelos CltCeutavam progral,nas 1401 com um a r:Jpidel: tão maior do que a própria 1401 que muitos clientes nunca convertcr..1m seus programas. A cmulaç30 er::l. fáci l na 360 porque todos os modelos iniciais e gf'lnde pane dos que vier..1m depois eram microprogr..1mados. Bastava que :1 IBM escrevesse três mieroprugr.unas: um para o conjunto nativo de irullrUçõcs da 360, um para u conj unto de instruçõcs da 1401 c outro para o conj unto de instruçõcs da 7094. Essa nexibilidade foi uma das principais r.lZÓCs para a introdução da microprogr.tmação. A 360 resolveu o diJema 'binária par.a..lela · versus 'decimal serial' com uma solução conc iliatória: a máquina ti nha 16 registradores de 32 b its para aritmética binária. mas sua me mória era orien tada para byles. como a da 1401. "J'I..mbém li nha instruções seriais no estiJo da 1401 para muvimentar regis tros de tamanhos variáveis na memória. ' Uma llutr..1 característica importante da 360 e m (pam aquela ~poca ) um imenso espaço dc endereçamento de 2 N ( 16.777.2 16) bytes. Como naquclu época a memória cust'uva váriu." dó lares por byte. esse lantn de memóri:1 parecia uma inti nidade. Int'elizmentc. a ~ó;e 36() fui seguida mais tarde pcla1> séries 370. -l300. 30RO e J090. tndas u1>ando ..1 ll1l:!:.lIla an..juitelur... Em llleadu1> U:L décaJa de 19KIJ. Illimilc de llIelllUna 1)e tomu u um problt::ma real e a IBM tcve de abandonar I:m pan e a compatibilidade, quando mudou para endereços de 32 bits nccesslírios para c:ndcreçar a nova mem<Íria de 21: hytes. Com () beucfício de uma pcrcepçãt) tardia. podemos arg umentar que. uma vez. que de qualquer modo ti nham palavras c registros de 32 bits. provavelmente tam bém deveriam ler endereços de 32 bi ts. mas na época ninguém podia imaginar uma máqu inu com 16 milhiks de bylL'S de memória. Culpar a IBM por essa falta de visoio é como culpar a fahric:mlc de computadores pessuais modernos por ter somente endereços de 32 bits. Dentro de alguns anos os eomputad()fC S pessoais talvez precisarão de muito mais do que 4 bilhõcs dt: bytes de memória. quando e ntão os cnt.lcrcços de 32 hi ts licar.lo inapelavehncnte pequenos. O mundo dos minicomputadores lambém avançou um gf'lnde passo n:. direção da tcrceir..1 ger..1ç:io quando a DEC lançou a série PDP- I I. um sucessor de 16 bits do PDP-R. Sob muitos aspectos. a ~érie POP- II era como UIO inn:iu menor du sdric 360. cxatamente como o POP- I era um inn.iol'.inho ou 7094 ..-\mbos, 360 c PDP- I I. li nham registr.u..lores orientados pUf'..1 palavr:ls e uma memória oricn[:lda par.. bytes. I! ambus ocupavam uma fa ixa que abr..1ngia uma cnmider.ivcl relação preço/desempenho. O PDP- II teve enorme .. ucesso, em especial em universidade.... c deu continuidade à Iidcranç:J da DEC sobre os out ros fabricantes de minieomputadures.
'. Q
~
~ Q
= c ,o •
"
1.2.5 A quarta geração - integração em escala muito grande (1980-?)
••
o
~
"•
~
8 o
" • •
-••
~
•
~
o
."
~
• " •
~
o
Na décólda de 19)0\0. ;a VL.Sl (Very L:Jr<,,:c St..':Jlc IntC'.;r.J.üon - inlegmção t:rn escala muito grnndc) Linha possibilitado colocar primcim dc;r.cna.~ de milhan.-s. depo!:; cc ntcna.~ de milhares c. por tirn. milhões de transiswres em um unico chip. Esse desenvolvimento logo levou a I.:omputadorcs mt;!IIOres c mais rápidos. Antes do PDP- I, os compuladores erJIIl tão gmndcs lo! l:UfOli quccmprcsas c univcn;id:ldcs ti nham de ler dcpanamcntos especiais denominados centra .... de cumput:II;~ 1J para us:~- !os. Com a chegada do minicomputador. cada dcp;mamcnto podiUl:mnpmf seu pró-
prio computador. Em 191'10. os preços caiml1l tanto que em viável um úni co indivíduo le r seu própriu computador. Tinha começado a crJ do computador pessoal. Computadores pcsso;.is Cr.lnl uúli7.:J.dos de modo muito direrente dos computndores gmndt!S. Eram usa.dos paro processar tc:ttos, montar planilha.~ e par.l numerosas apl ica~õc.:s de alto gmu de imer.lÇ~io - como os jogos - que os computadores maiores nao manipulavam bem. Os primeiros I!o mput.ad~ pessoais costumavam scr vendidos como k.ils. Cada ki t continha uma placa de cirl!uilO impresso, um pu nhado de chips. que nommlmentt: incluía um mtel 8080. alguns c abos. uma ronte de energia c wivez um disco tlc:<Ível de li polegadas. Junta r t:ssa.~ panes para montar um compuUlour er.l tarefa do comprador. O software não era foml!ciuo . SI! você quisesse :Llgum, você mesmo teria de escrevê-lo. Mais tan.le. o sistema opcmcional CPIM, eserito por Gary Kilua H, tomou-se popu lar nos SU80s. Em um verdadeiro sistema operacional em disco lle:tÍvel. com um sistema dI! arquivo e comandos de usuário digitados no tecladu &;: cnviudos a um processador de comandos (sllefl) . Um outro computador pe!l.wal cra o APrle, c mais tarde o Apple 11. projetndos por SLeve Jobs eSteve Wozniak na tao ralada garagem . Essa máq uina g07.:J.va de enom\e popularidade entre usuários dOlllésticos e em escola.... e re'l, da Apple uma par1icipante séria no mercado pr.lticamcnte da noite para o dia. Depois de muito deliberar e observar o que as outr.lS empresas estavam fazendo. u IBM. qoe entao em a força dominante na IIldústn a de computadores, por fim decidiu que queria cntrar no negocio do compotador pe.~'IOll1. Em vez de projetar toda a máquina panindo do lero, usando somente pt:ças da 113M, o que levaria tempo demasiado. a IBM fe'l, algo que naU lhe era car.lcterisúco. Deu a Philip Estridge. executi vo da empresa. uma gr•.mde mala de dinheiro e dis.o;c que dc fosse par.l bem longe dos acionistas intrometidos da sede da empresa e J1\ Annonk, NY, e só voltasse quando tivesse um computador pessoal em funcionamento. Estridge ioC estabeleceu longe da sede, em Boca Rmon. FL. escolheu o Imel H{)88 como sua CPU, e construiu o IBM Personal CompuLCr com componentes cncontmdos na prnça. Foi lan~dtl em 1981 c instllntaneamente se tomnu u maior crunpcao de vendas de computadores da história. A IBM também fe'l, algo que não lhe era earncteristico c de que mais tarde viria a !iC arrepender. Em vez de manter o projeto da máLjuina em total segredo (ou ao menos protegido por uma pmen te) corno costumava razer, a emprcsa publicou os planos con\pletos. incluindo todos os d iagramas de circuitos. em um livro que vendia por 49 dólares. A idl!ia Cr.I possibilitar a fabrica~:'jo , por OUlms empresas. de placas de cone:t:1o (plug-;n) par.J. o IBM PC, a fim de aumentar \ ua nexibilidade c popularidade. Infelizmente par.J. a IBM, uma vez que o projeto se tomar.!. totalmente público c cra fáC il obtcr todas as pc~as no mercado, inúmeras outras empresas collleçaram a fabricar clones do PC. muitas vezes por muito menos do que a IBM estava cobr.llIdo. Assim comc~ava toda uma indústria. Embor.l outms empresas fabricassem computadores p.;:ssoais usando C PUs nao fon\ccidas p.;:la fntel. entre ela.'i Commodore, Apple c Alari, u impulso :Jdquirido pela indústria do l"BM PC cra tão gr.lnuc que os outros fomm esmagados por esse rolo compressor. Apenas uns poucos sobreviveram em nichos de mercado. Um dos que sobre viver.un, se bem que por UIII triz, roi o Macintosh da Apple. O Macintosh roi lançado em 1984 como o sucessor do malfadado Lisa da Apple, o primeiro computador que vi nha e(lm uma CUI (Gr.1phical T.Jser Interface - Interface Gr.ífi C3 de Us uário), semelhante à agom popular interface Windows. O Lisa fr.lCas'>I.lU porque em muito caro. m;ls (J Macintosh de menur PI"C\'O lam;ado um anil depois roi um enonne succ...so e inspimu amor e p:lixiiu entre ~CII S moitas admirado!'Cs. Esse primeirn mercado do compUlador pc:s~Hal também levou :lO desejo até entãO inaudito por computadores I>onátcis. Nllqude le mptl. um cumputador ]lI1r1átil falia lanto sentido ,-!uanw hoje fa7. um refrigc rador portáuI. U pri meiro verdadeiro cumpmadilr pc:s:>ouul ponalil rOi \I Osburne-I que, CiUlI II qUllo~, era mais um compuI:luOr 'arrasl:\vc]' do q UI! um cmnpurallor purtáti l. Ainda assim. era pmva de que a idéia dc um computador purtâtil era possível. O
Com O sucesso do 8088 em mãos, a Imel continuou fazcndo ve!"SÕcs maiores e melhores dele. Panieul;lnnente d igno de nota era o 3H6, lançado ~m 1985. que foi. em essência. o primdm Pemium. Embora os Pcntium mader. nos sejam muito maiíl r.1pidos do q ue o 386, em tcnnos de arquitetura o modemo PcnlJum é basicamenlC um 386 mdhorJdo. Em meados da déc:lda de 1980 . um novo dc.'\envolvi mcnto deno minado RISC começou a 'IC impor, s ubstituin. du complicadas arquiteturas IClSe) por OUlfas bem mais '\implcs. cmbor..l mllis rJpidas. Na década de 19t)O começaram a :lparecer CPUs s upcresc:llarcs. E.ssas mâ{IUinas pndium exel;utar vânas instruçÕl:."S:lI mesmo b.:mpo. muita.'I vezes em ordem diferente da que apan.-..:ia no progr..lma. Vamo<; apresemar os conceilOs dc C ISe. RJSC e supcrcSt:aJar no Capítulo 2: e discuti-los minuc!osamcntc em todo este livro. Até 1992, computadores pessoais eram de 8. 16 ()li 32 hiK Então a DEC apareeeu com o revolucionário Alpha de 64 bils. uma verdadeim m~qui n a RISC de 6-1. bits ..:ujo desempenho ullrapassava por grande margem O de IOdos os outros compuwuores pessoais. Seu sucesso foi modesto. mas quase uma década se passou antes que as máquinas de 64 bits começassem a te r gr.ull.lc sucesso e. na maior parte tias vezcs. como servidores de topo de linha.
1.2.6 A quinta geração - computadores invisíveis Em 198 I. o governo japonês anunciou que eSlava planejando ga.'Ilar 500 milhõcs de dólares par..l ajudar empresas japonesas u desenvolver eomputuuorcs de quinla geraç:1o que seriam ba.'>eados em int.e!igência anifidal e representariam um salto quântico \!!ll relação 1I0S compumdores 'bum)s' da quana gemção. Como já ti nham visto cmpresas japonesas se apossarem do merc.ldu em muitos setorc.~ . de m~q u inas fOlOgr:iJicas a estéreos c 3parelhos de televisão. os fabric.mtcs de compuladores anu.:.ricanos e europeus forJJl1 de zero a pânico tOlal cm um milissegundo, exigindo s ubsfdios do govcmn c oulr:\." coisas. A desp!!ito do gmooe barulho. o projetO j apllnes da quinta gcmção basicamente fmcassou e foi abandonado sem alarde. Em een o sentido, foi como a máquina 3nal ítica de Babbagc - uma idéia visionária. mas tão ~ frente de seu tempo que nem se podia vislumbr:lr a tecnologia nccc.'isáJ'\3 par.J realme nte construí-la. Não obstan te. aq uilo que poderia ser denominado a quinta gemção na verdade aconteceu. mas de modo inesperado: os computadores encol her.un. O Newton da Apple. lançado em 1993, mostrou que um eomput.ador podiu 'ler cnnslrUído de ntro de um invólucro ~Iu e niio er.1 muior do que um tocador de tit3S cas,<;cle portátil. O Newton usava escrit.a1'l. mão par.J. entrada do usuário. o que provou ser um gr.1nde obstáculo. mas máquinas posteriores des,~a cla.'Isc. agor..l dCllominooas POAs (Personal Digital Assistllnts - agc ndas elet rônicas). aprimorJr::lIl1 as interface.~ de usuário e tomaram·sc muito populares. ~ u itas dessas têm "luasc a mesma c:lpilcid:1f,.Ie de computação que computadores pessoais de 3lguns anos atr.is. Mas mesmo a." POAs não s:in realmcmc revolucionárias. Ainda mais importatl1cs são os computadores ·invisíveis'. embutidos em eletrodomésticos. relógios, cartões bancários c diversos out ros dispositivos (Beehini et ai.. 2(X}4). &'\CS pl'()I.'CsS:ldol'C:l pcnnitem maior funeiuna lidade e custo mais baixo em uma ampla variedade de uplicaçÕC'S. C()nsiderar esses chips como uma verdadeim ger.}Ç:1o é diSt.'1.ltfvel (estão por ~l i de;dc a décaW.! de 1970, aproximadamente). mus eles ~"Sl:1() revoluciunando o modo de funcionaflx,:nto de milhares de aparelhos c outnx dispositivos. Já L'OJOt..'Çlr..un a causar um importante impacto no mundlJ e sua influência crescerá rapidamente nos próximos anos. Um aspectO peculiar dcssc." computadores embutidos é que o hardware e o soJtwate costumam .ser pnljctados em eunj unto (Henkel et aI.. 2003). Voltaremos a eles mais adiante neste livro. Se considerannos a primeirn geração eomo nuíquinas a v ~ l vu l a (por e~e ltl p l o . o ENTAC), a segunda geração como máq ui nas a tra nsistores (por exemplo. o IB M 7094), u terccirn geração como as primcir.ls máquinas de eir· cuilo integrado (por exemplo. o IBM 360 ). e a quun a gerJ.ção comu compuladorcs pessoais (por cxcmplo. as CPUs Intel). a real quinla geração é muis umu mud.lm;a de pamdigma do que uma nova ~ u ite tur.l eSI)I;!Cílica. No futuro. computadol'C.<; cSlarno por tot.la pane e embutidos em tudo - na verdade. invisfvt!is. EIt!S seriio pane da eSlnltur:l. da vida Jiária. abri ndo pol1a.. , :lccndcnc.llil luzes. distri huimlo dinhcim e mI lhares Je outraS coi~:.I.S. Esse modelo. arqUItetado pelo 1:llccido Mark Wciser. foi dCllominado uriginalmente cump utaç:JtI ubíquu. mas u tenno computação I)Crvasi vu também é u~ado ugura com frcqUc llcia ( Wei~cr. 2:0(2). Ele mudur.! o mu ndo 1.:0111 tan ta !>I'lll'undidadc q!!:Ulto .1 Revol ução Industrial. Ni'iu ~) disctltirelllo~ lIluis ne~!e livro. maS "I! li Icilor qUIser mais infonnuçiics .sobre ele. deve w nsul tur: LYYlinen c You. 2002: Sahu e Mukheqce. :!(}(l3: c Sak:unu ra. :!U02.
1.3 Zoológico dos computadores Nu seção anterior, aprescmmmls uma hreve história dlls .~ i sl c m as de comp utaçao. Nesta. exami naremos o prc· licnte c olharemos paru \) futuro. E mbora computadores pcss()uis sejam os computatlorcs mais conhecidos. há mllros lipos tle m:íqu i n:l~ hoje em dia. punamo. vale u l>ena dar uma pesquÍ!mda no que ha mais por ..li.
1.3.1 Forças tecnológicas e econômicas A indúslria de ctlmpuladores c,·a:i avançando como ncnhuma outm. A força propulsora primária é a cupuci tlade dos fahricantt!s dc chips de cmpucotar eada vez mais lJ"J.usistores por chip 1000 ano. Mais transistores. "lue são minúsculos mtenuptol\!S eletrÔniclls. ~ign i ficam memóri as maiores c processudores mai ~ poderosos. Gordo!l Moorc. eoIlmdudor e ex- pn.:.'\identc do ;,:nllscl ho ua Imel. uma vez disse, bri ncando, que. se a tecnolugia du aviaç:1u tivesse pmgrcdido tão l"..lpidu!1lcntc quunto a lel.:nologia de computadores, um avião custana 500 dólares e daria uma volta na Terra em 20 min utos com 5 galGt!s ~!c gw.oIlJiU;I. Entret;Ulltl. seria do tamanho de uma eaixa de sapatos.
o
= •
"
ngura 1.6
A lei de Moore prevê um
••
aumento anual de 60% no numero de transistores que
."
podem ser colocadO!! em um ctup. Os dados pontuais
o
,•
~
informados nem figura silo
o
tamanhos de mem6rias em bits.
e
"• • ."
~
o ~ ~
•• c
•
~
o
•
"" "'" ,,'"
100.000.000 10.000.000 1.000.000
! B •c
.. ~
100.000 10.000 , 000
'O)
",
""
."
·•=• ·•
"2M
1.000.000.000
1970
1975
1980
1985
1990
'995
2000
Especificamente, ao prcpar.lf' umil paleslr:l para um grupo do setor. Moorc observou que cada nova gCr:lção de de mcmô(t:a eslaV'..t sendo lanç;lcla três anos após a anterior. Uma vez que cada gcrnção linha qualrO ve:t.c.s mais memória do que .~ ua antecessor.!. ele percebeu que o número de Ir-.lnsislorcs em um t:hip estava crcscenuo a uma taxa conslante c previu que essc cres<;imcn!o continuaria pdas próximas décadas. E.~su ubservaç:io ficou conhecida como lei de MOClre. Hoje, a lei de Moore costuma ser expressa dizendo 4LlC o número de lrUnsislOrcs dob ....t a cndu I li meses. No!e que isso equivale a um aumemo de 60% no número de tr.lns islOres por ano. Os tamanhos dos ehips de memória e suas daUls de lanç•.IIllento mostrJdos nll Figura 1.6l!on lirmam que a lei de Moore está valendo há mai s de uis décadas. Claro que a lei de Moorc não é uma lei real. mas uma simples observação empírica sobre quiío rápido a ffsica do estado sólido e 0.'; engenheiros estão avanç~Uldo o estadOwda-ane e urna previsão de que etes eoolinuardO na mesma taxa no futuro. Alguns observadores do sctorespcT'Jm que a lei de Moorc contin ue v:i1ida ao menos por mais uma década, talvez até por mais tellll)O. Naquele ponto os IrJllsistores consistirão em alguns poucos átomos. um número muito pt:quello par.t garanti r a I!onfiubilidude. emborJ scja possível conceber que o.~ progressos na computaç:1o quàntka possam mudar esse cellârio (Oskin ct aI.. 2002). Contudo. oulTOs observadores I!Spcr..un que dissipaçilo de energia. ruga cJc eorrente e outros efeitos apareçam antes e causem sérios problemus que precisam ser resolvidos (Base. 2004: Kim el ai.• 20(3). A lei de MOOTC criou n que m; economistas chamam de cír culo vi rtuoso. Progressos na tecnologia (IrJIlsislores/ehi ps) levam a melhores produtos c preços mais baixos. Prcço.~ mais baixos levam a novas uplicaçõcs (ninguém estava fa bricando videogames pam computadores quundo estes custavam la milhõcs de J ó larcs cada). Nova... aptie:tçfics levam a novos mercados e a novas empresas, que surgem para aprovcilllr as vantois. disco:-. rigidos dc IDO gigabytes crdm comuns nus sueessmes do PC/XT. Esse ,Ivan~u de 4U:UR1 muens dc grarulc/:1 em :!O anus representa um aumcnto de c:lpacidaJc de ~H% :l1l unn. \nntudfl. mcdir o avu~u em diM.'tls lo! mais enganoso. visto que M outros parâmetros além da capaCIdade. como taxas (de IrJllstc · rencla) de dado~. tempo dc busca e preço. Nun obstante. quase qualquer método de nLedi~ão mostr.li.i que a r.tlão preço/descmpenho aUlllentou desUe 1<)82 pelu mcnos 50% .lO ano. E~cs ellomrcs ganhos em dcsempenho do cJiseo ali'ldns :lo fato lIc que o volume de dólares de discos despachados do Silkull Valley (Vale do S illciu) u[trupassnu Il de ehips de CPU levou AI Hoagland a sugerir 4uc o nome ullloeal cstava crrJdn: deveria ~c r lron Oxide Vallcy (VaIe do ÓXido de pcrro), uma vez quI.! é csse o material de grJv3ção utili ....ado em discos. Um;r oUlm ;\rea que teve ganhos espetaculares fui a de telecomunicações e redes. Em mcnos de cJua..'. ili.."\:adas fomos de modems cJc 300 bilSls pam moderru. analógicos de 56 mil bits/s. c daí par.I redes de libra ótka de 10 12 bit.Js. Os cabos dc telclo nia transatlãnticos de fibra 6tica. como o TAT- J '!I13. custam Ct!TCa de 7QtJ milhÕL-S de dóla· res, durJ.m dez anos e podem transponar J OO mil ligaçõcs telefônicas ~im ul t5.ncas. oque ~e tmduz em menos do que I ccnt::rvo de dólar para lima ligaçãu telefônica intercontinental de dez mi nutos. Sistemas ó ticos de cOlTlunka,iiu que fu ncionam a ]()I l hits/~. a distancias 4ue passam de 100 km e 'iCm :unpl iticadores. mostrJ..un scr viáveis. Nem é preciso comentar a4 ui o crescimento exponencial da [ntemet. c h i p~
1.3.2 Tipos de computador Richan.l Hamming. anligo pesquisador do Bel! Lab~ . certa vez observou que uma mudança de uma ordem de
gramh:7.:l em quantidade C'lUsa uma mudança na qualidade. Assim, um carro de corrida que aJcallça 1.000 kmJh no
-....
descno uc Nevada ê um tipn de máquina fum.l:l.mcntalrnc!llc diferente de um carro normal que alcança 100 kmIh em uma rodovia. De mOllo semelhante. um arr.1l1ha-céu de 100 andares não é apenas um edifício de apartamentos de lO undarcs em escala maior. E. no que se refere a computadores. não estamos falando de t:tlOrcs de 10 mas. no decurso de três décadas. cstamos falando de f:llores na C:1sa de milhào. Os ganhos concedidos pela lei de Moorc podem ser usados de vários mooos. Um deles é construir computadores cada VC'l. mais podcroso.~ a preço CIJtlSl.:mtc. Uma outr..t abordagem é construir o mesmo computador por uma quantia de dinhcinl ~da vez menor a c::I!Ja ano. A indústria dos computadores fez amb:.lS as coisas e ainda mais. o ljUI: resultou na ampla variedade de computadores disponíveis agom. Uma categori7.açao muito esquemática dos computadores cxislentes hoje I! dada na Tabela 1.3. Nus Sl!ÇÕCS seguintes ~umin:rrcmos cada uma dessas c:l.Iegorias e discutiremos brevemente suas propriedades.
=
Tabela 1.3
u
Tipos de computador disponiveis arualmente. Os preços devem ser vistos com certa condescendência (cum grano salisl . Tipo
Computador descartAvel Microcomrolador
Exemplo de apllcação
Preço (US$)
O., 9
cartões de felicitação
Relógios, carros. eletrodomésticos
Computador de jogos.
50
Videogames domésticos
Computador pessoal
500
Computador de mesa ou notebook
Servidor COnjunto de estações de trabalho Mainframe
,.
50-500 •
'M
Servidor de rede
('
Mlrtissupercomputador departamental Processamento de dados em bloco em um banco
1.3.3 Computadores descartáveis Na cxtremidadc inferior desse tipo encontmlllos um línico ch ip colado nu par1e intema de um cartão de cemgralulaçi)es que loca ' Feliz Aniversário' ou ' U vem a noiva', ou qualquer OUtr:l dessas musiquinhas igualmente horrorosas. O autor ainda não encontrou um cartão de coodol2ncias que tocasse uma marcha mnebrc. m!lS, eomo lançou essa idéia e m público, espero encontrá-lo em breve. Para quem cresceu com mainrr:JlIlcs de muitos milhões de dólares, a idt!ia de computadores descartáveis fU1. tanlo sentido quanto a de um avia0 descartável. Contudo. os compUlooorcs descartáveis chegaram pam ficar. O desenvolvimcnto provavelmente mais importante n:J :írca do .. cmnpuludorcs dCSC:lItfiveis t! o chip RFIO (Radio F'rcllucncy rocntificatioo - id cntificu~ão por r.Jdiofreqiiência). Agom é possfvel fabricar por alguns centavos chips RFlD sem baleria com menos de 0.5 mm de espessura que contêm um mimísculo mdiotransponder ~ um único número de 128 bits embutido. Quando pulsados por uma antena externa. são ali mentados pelo sinal de rádio de enlrada por tempo suficiente para tr.lI1smitir seu número de volta à antena. Conljuanto os chips sejam minúsculos, suas implicações com cer1eza não são. Vamos eoml,.'Çar com uma !lpl icação corriqueira: acahar com os códigos de oorras dc produtos. Já for.un feitos testes ex perimenwis nos qU:lis li fabrIcante anexou ehips RFID (cm vez de códigos de barras) a seus produtos 11 venda em IUJas. O diemc escolhe.: :,cus produtos. coloca-os em um carrinho de compras c ape nas os leva para fora da loja. .;em pas!!.ar pclu c:lix:1 rcgi!ilr.Jdor.J. Na saieb da lOJa um leitor munido de uma ;Ifllen!l envia uma si nal 'rOHc1wndn que cm];1 prodmn ,e iden tifil!lIe. o quc cada um fal. por meio de uma cun:. t ransm is~:10 ~c m tiu. O dkmc também é identllicado por um ehip embutido em seu cartão bancário ou de erédito. No final do mês. a loja envia ao clicnte uma fa tum idcntilicad:1 por iten:- refercnte às compr.b do mes. Se o e:lI'tiio de banco ou car1àu de ("'Jl.ldho RF1D do clientc não llu' vtil idn, um wannc ": :Itivauu. Esse .~is t e!lla nãu só eli mina a neecssld:lde ue caixas e a correspondente espcr.c na fila. mas I:uubém ~rvc c.:omo sistema anLifuno porq ue de nada adianta esconder um produla nu bolso ou na sacola. Uma propriedade IUlercss:mte desse sistema é que, embora ClS códigos de barra identifiquem o tipo de produto. não idcnlilkam o item espccílic.:o. Com 12S bits ;1 t..1isposição. o RF!D faz isso . Como conseqüência, cada pacote de aspirina. por exemplo. cm um supenncrcado. lerá um código RFID diferente. Isso sigOllica que. <;C um fabri cante dc medicamcntos descobrir um defeito de fabricaç:1o em um Ime de aspirinas após ele Icr sido despachado. poderá inJ'onnar a todm os supermercados do mu ndo inteiro para que façam disparar o alarme -.cmpre que um clienle comprar qualquer pacote cujo número RFID estcj a na faixa afe13da. mcsmo que a compra acomeya em um pais distantc. meses depois. Os pacotes de aspirina que não pcncnçam ao lote defei tuoso niio furju smlr o alarme. Mas rotular pacOlc.'i de aspirina. dc bulachas. de biscoitos paf'.J cachorro ~ só o começo. Por q UI! par.Jr nos bi scoi tos para cachonu ljuando você pode rotular o próprio cachorro'! Donos de animaiS de estimação já estão pedindo aos veterinários para implamar ch!ps RFlD em seus animais de modo que possam ser rastreados se forem per-
o
•
ao
••"o ~
•
d idm ou nJ ub:.uJos. Fazendeiros I~mbém v:l0 4ucrer marcar seus reba nhos. O próxi mo passo áovio é pais ncrvows fX-'tIin.:m a seus pediatras que implantem chips RFID em ~cus ti lhos para o caso de dcs se perderem o u serem seqiicslrJdos. Já que estamus nisso, pur que não razer com que hospi tais iili:miliqucm todos o!> recém-nascidos par.J. evüar troca de bebês'! E os governos c a polfcia sem dúvida te r.!u muitas boas r.1ZÕCS pum r.LSlrcar todos os cidadãos o tem po lOOU. Agtlra. as 'impl icaçõcs' dos chips RFID a qUI: aludimos :lI1lcn Onncntc estão ficando um pouco
mais clams. Uma ouml aplicação -- um pouco menos controvertida - de chips RFID ~ o ras treamento de veiculos. Quando uma fila de carros com coip... RFID embutidos csUvcrcm tr.trcgancln por uma rodovia e pa!>l>arem por uma leitora, o \.:o mpUlador ligado à Icitor.1lcr.i uma lista dos C:lrros que estiveram pur ali. Esst: ~ist e m a faci lita mstrcamento 1ados a gmndes distâncias por uma antena. Os que funcionam em :.Ilt
°
•
..• w o
~
c" •
~
o"
1.3.4 Microcontroladores No dcgrJ.u seguin te da escada tc rnos computadores que são embutidos em dispositivos que não são vendidos I.."omo computlldorcs. Os cumputadures embutidos, às vezcs de numinauos microcnntroladnM!S, gere nciam os dispositivos c manipulam a interrace UI.' usuáJiio. São I. " nenntrJdos em grJnde varied:lde de aparelhos dife rentes, entre eles os seguintes. Alguns exemplos de cada categoria são dados entre parême.'ics. 1. E l et mdmné~ ticos (r:1dio-relógio, máquina de lavar..\Ceadora. forno de microondas. alarme anti furto). 2 . Apare lhos de I:umunicaç:lo (telefolle ~c m fi u. telefone cd ul:lr. fax. pager). 3. Peri fériCOS de l.:ompuladorc... (i mpn.:~!
Um earru ue pril1ll.."i rJ linhal>OJeria facilmente euntcr 50 rn icroconlmladores (Iue cxecutam subsistemas, comu rreios an LitrJv:1l11cnto. injeção de combustível, ráuio c GPS. Um :lvião a jato poderia I'lIcilmcnte tcr 200 ou mais deles. Uma família poderia possuir facil mente ecntcnas de eo m p uladorc.~ sem saber. Dentro de alguns anos, praticamente tudo o 4ue fu nciona por cnergia elétrica ll U baterias conterá um mlcrocontrolaiJor. Os números de microJ,:o nt rollldores yendidos tUiJll ano de ixam longe, por ordens de grandeza. todos tiS outros tipos de computad urcs, exceto os dcscan:ivcis. EnquanlO chips RFID são sistemas mínimus. min icuntroladores slin cum putatlnres pequenos. mas completos. Cada micmconlroJador tem um pruccssador. mcmória ~ capacidadl! de EIS. A J,:a pad dade de EIS habi tualmcnte
I
inclui detectar os botôcs e interruptores do aparelho t: conlrol:lf suas IU7.es. monitore:;, ~ons. . mo,on:"." 1No" m:uona . dos casos o software está incorpor.lt.lo no chip na forma de umO! memória somente de leitura cri:Jda quando o nucrocontrolado r é fabricado. Os mknxontro/:ujorcs sãu Je dois tipos gerais: propt)~ ito gCT
-
CJ:)
instruçÜC!s dirigido para alguma aplicu!jào específica. por exemplo. muhilllídiu. Micnx:ul1Irolatlo!'CS podem ler VCf,i(jcs cle 4. 8, 16 c 32 bits. COIlIudo. mesmo os micmcontrollldores de uso gcr.l1 ~tprt:scn(;lm imponullIcs diferenças em rclaçilll aus PCs. Em primei ro lugar. há a questão rclaóonadu ao custo: uma empresa que compra mtlhÕl:s Je unidaLlcs pode b:Jscar escolha em diferenças de preços de I centavo por unidade. Essa rcstrh;ão obriga 0 )0 tabril:;lIl[CS de micrucontroladores a optar por arquiteturas muito mais com base em custos de fabricação do que em ehips que custam centen:J~ de d6lares. Os preços de miCrQÇIJnlTOladores variam muito dependendo de quantos bits têm. de quanla memóna [i!m e de que tipo é a mem6ria. alêm de outros fatores. Para dar uma idéia. um mil.:rocuntmlador de 8 hits comprado em volume suficientemente grnnde pode eustnr a~IlIIS 10 eentavos de dólar pur unidade. Esse pre'fo é () que possibLlita inserir um computador em um r:1dio-relógio de 9,95 dólares. Em segundo lugar. pr.ltic:unente todos os microcontroladores funcionam em tempo real. Eles recebem Ulll esúmulo e devem dar uma resposta instllnt!lm:a. Por exemplo. quando o usuário :lpena um bot:! o. em geral uma luz se at:ende e não deve haver nenhuma demora entre pl'CSsionar o bOlJo e a luz se acender. A necc.~sidllde de funcionur em tempo real cO.~tumu causar impacto nll arquitetura. Em terceiro lugar. os sistema embutidos muitas vezes têm limitações físicas em termos de t:unanho. peso, consumo de bateria e outras limitações elétricas e mecânicas. Os microconlroladores ndes ulili7.ados devem ser proJetudos tendo essas restrições em mente.
:-1J3
1.3.5 Computadores de jogos
Um nfvel acima estão ai mdquinas de videogame. São computadores norm~ com recurso'! gr.Uicos espeCiais c capadJillie de som. mas software limitado e pouca capacidade de extensão. Começ:tram como CPUs de baixo valor pat:l jogos si mples. como pingul.!-pongue em aparelhos de tclcvisilo. Com o passar dos anos evoluír.llll par:t sistemas muito mais poderosos. rivaJi:c.ando com o desempenho dI.! computadores pessoais c até ultrapassando e~se dese mpenho em cenas dimenSÓCs. p..lr.J ter umu idéiu do que c:.t6. dentro de um computador de jogos. considere a especificação de três pnxJUIOS populares. Primeiro. o Sony PlayStation 2. Ele contém uma CPU proprietária de 295 MHz e 128 bits (de no minada Emotion Engine). que é baseada na CPU MIPS IV RISC. O PlayStution 2 tnmbém contém 32 MB de RAM. um chip gráfico de 160 MH'l, fab ricado por encomenda. um chip dc áudio de -18 canais fabricado por encomenda e um tocador de OVO. Em segundo lugar. () Microsoft XBOX. Ele contém um chip Intel Penlilltll 1II de 733 MH'l, C[)JU 64 MB de RAM. um chip gráfico de 300 M 1170 fabricado por encomenda. um chip de :iudio de 256 e:\llliIS fabricado por encomenda. um tocador de OVO e um disco rígido de 8 GB. Em terceim lugar. o Nintendo GamcCube. Ele contém umu CPU de 485 MHz e 32 bits (denominada Gekko), derivada tia CPU IBM PowcrPC RISC e fabricada por I!n~ome nd a. 24 :v1B dc RAM. um chip gr.llico de 200 MI b. !'aorit:ado por encomenda. um chip de áudio de 64 canais e um disco ótieo proprict:irit) de 1.5 gig;,OYICS. Embora esSólS máquinas não sejam tão poderosas quanto os computadores pessoais produzidos no nlcsmo período dI! tempo. elas não ficam mui lo atrás e em ccr10s aspectos I!Slao li rren te: por exemplo: a CPU de 128 bits do P!aySlation 2 é maior do qUe a CPU de qualquer PC. embora u velocidadl! dc relógio seja muito mnis hab:a. A principal diferença entre uma máquina de jogos e um PC não est6. tanto na CPU. mas no fato de que máquinas de jogos são sistemas fechados. Os usuários não podem ex pandir a CPU com c:lni)c~ plug-in. embora às V!.!Zt:S ~ejalll rOnlecidas imerfuccs USB ou FircWire. Além disso. e talvc.! o mais iml:HJname. máquinas de jogos são cuic.1adosamente Illimi/.adas par.l Ullla única :irea dc aplicação: jugrn. dc alta interJuvidade em 3-D cnm alta qualidade de 6.udio estéreo. Tudo o res to é M.'C tmdiirio. Es~as reslriçõcs de hardware e ,\(lftwarc. velocit1ldes de relógio haixas. au:.enciu tI!.! um 1Il0nt[llr de ali" fC.'\olução e. hahim:Llrllenle. :1U,;ênCl" de um di""ll rfgldo pn~ sLhilit:U11 a eonslruçJo c :t venda dc..\Sas m:1quinus pur um prc'fO mais baixo do que o de eompututlorcs pcs~uais. ;\ dcspdto ucssus restriçõcs . .. fio vendidas milhôcs dC.~sas máquinas de joglls. As mesmas empresas quI.! fabricam a.i principais máquina... dc jogo.i também produ7..cm má4uinas dejogo~ portáteis. que são alimcntadas por baterias I! estão mais pr6x.mlas dos sistemus embulldos que j:i discutimus do que dos computadores pessoais.
1.3.6 Computadores pessoais Em -.eguida. cncgamos aos computadores pe§soais nos quuis a maioria da.i pessoas pensa quondo ouve o telTTlo ·etllnputadur· . O termo ·computadores pcssouis' o.br:mgc computadores de mesa c nOleoooks. Costumam vi r equipados com centcnas de megabyter- de memória c um disco rfgido que contêm cerca de 100 gi gllbytc.~ de dados. um drive de CO-ROM/DVO. modem. caniio de som. interface de rt!de. monilOr de aha resolução (! outros periféricos. Têm sistemas opcJ':lcioml i.~ elaborados. lIluitas o]lÇ()es dc expulIs;lu c uma imensa fa ixa de softwares disponíveis. Há quem reserve o tcnno 'pc' pum as máquinas I.lUI.! têm uma CPU InrcJ e use 'estaç;1o de tmbalho' parn as \.."q uipadas com um ehip RISC de ií ltima gcr-.Jção. eornu as Sun Uhr:tSPARC. Conrudo. cunceituulmente há pouca diferença entre das.
L
o
,
o
N
•• o
~
,•
~
E o u
• • ,•
~
~
ngar31.1 A placa de Clrcuíto impresso
está no coração de c;lda computador pessoal. Essa é uma fotografia da placa Lmel D875PBZ. Direitos de da Intel
2003,
, "
• o • w
~
•
ê
•
~
o I. Soque1e l'cmiurn .J 2. Su p0"': de chip 875 P J. Soquet cs de mcmórill
,.
4 Conectar AG P
8. PorlllS
j.
Interface de
di~co
6. Gigubit F.lhcrnet
9. TL'\:nulo8i~ de resfri amento
10.
BJOS
Ci nco e ncaixes parn I'CI
us a 2.0
o coração de todo computado r pcs.mal é umu placa de circuito impresso que está. no fundo da caixa. Em gcr.li essa placa conlém a CPU, memória. v:irios dispositivos de F.JS (como um c hip de som c possivelmente um modem), bem como interfaces para teclado. mousc, disco. rede etc .. e alguns encaixes (slals) de expansão. A Figur.l l.7 mostra a foto de uma dessa... plucas de circuito. Notcbooks são basicamente PCs em uma embalagem menor c utilizam os mesmos componentes de hardware, mas em tamanhos menores. Também executam ns mesmos softwares que os PCs de mc.sa. Um outro tipo de m:J4uilla estrei tamente rclacionadn sào as PDAs. Embom sejam ainda menores do que os nntebooks. cada uma tem um;l CPU, memória, teclado, visar e a maioria das outr.lS carJ.ctenstkas de um computador pt!ssoal em miniatum. Uma vez que grande parte dos lei tores provavelmente conhece computadores pessoai s muito bem, não scrá preciso fazer uma apresentação introdutória mais dewlhada. 1.3.1 Servidores Computadores pessoais reforçados ou e~taçõcs de trabalho são mu ito usados como servidores de rede, tanto em redes locais (em geral dentro de uma única empresa) quanto na Internet. Os servidores vêm em conJiguraçõcs com um único processador c com múltiplos processadores, têm gigabytcs de memória, centenas de gigabytes de espaço de disco rígido e capacidade para Irabalho em rede de alta velocidade. Alguns deles podem manipular milhares de transaçõcs por segundo. Em tenHOS de J.rquitt.!tura, cuntudo. ulll :.t!rvidor CUIll um único processador na veniade não é muito uiferente de um computador pessoal com um tin icn processauor. ,\ penas é mais r:ípidu, ll1:lior I.:; tl!lI1 mais I!:;paçu de disco, e pt)~~ivclmc nl e cllllex:lp \Ie rede nwi'l r:\ piúa. Serv idnre~ cxcCUl:Im os mesmos , i ~ t c ma" opt.!r:lclunais que os compllt:luures pessoais. normalmente algunl:J variação de Unix !lU Windows.
1.3.8 Conjuntos de estações de trabalho Dcvido as melhorias quasc continuas na relaç:1o prc\foldesempenho de CSla\fÕCS de tmbulho e computadores nos lí ltUIl OS anos os projctistas de sistemas eome\faraill a conectar grandes números deles pam formar COWs (Clustcrs of WOrkstatiOIlS) nu. :t.~ vezes . .~ implesmente dustcrs. Eles consistem em cumpuLadorcs pessoais ou cstaçiks de trabal ho padrão co nce tado~ por redes de gigaby le/.~ c executam sotiwarc especial que pennile a todas as máquinas trabalhurcm j untas em um único problema. muitas vezes eientffico ou de engenharia. Normalmenle são o que se coslum:t dl!nominar COTS (Colllmodity OITThc Shcir - rncre:JdtJriu de prateleir.a). computudorcs que qualquer um ptxie cllmpmT dc ;llgum vendcdor de PCs comuns. O principal acréscimo é a capacidade de trabalho em rede de alta velocidade. mas 1Is vezes isso também é 11m earuio de rede padrão I!nco ntradll no comércio. A escala desses çonjunlos pode '\cr aumentada com fac ilidade c vai desde um punhado de máquinas até milhares delas. Em gcml. o fator limitador é a vema u i ~plln ívcL Devido ao baixo preço por cumponenle. agom uepanamentos individuais podem ler essas máquinas. pes~oai s.
L
Uma oUlra utilização de um COW ~ como um servidor Wcb de Internei. QU:lndo um sile espera rcc bc milhares de rcquisiçik:s por mill ul() par;l suas p:íginas. ,\ solução mais econômica costuma Ser um aglomerado :OI~ centenas. ou até milhares. de servidorc... AsslIn, as requisições que chegam ~o dislribuidas pdO!l servidores permitindo que sejam processadas em paralelo. Quando usado dessa mancim, um COW no rmalmente é denominado uma server r:lrm.
-
N
1.3.9 Mainframes AborJ ch.!gamos aos main fr:1mt!..~ : computadores que ocupam uma sala e nos faze m voltar à década de 1960. Em muitos C:l.SOS, essas m.iq uina... são a... dcscc nde nles direla.i dos mainframcs IBM 360 adq uiridos há décadas. Na maioria não são muito mais r:í.pidas do ljue servidores de grande potência. mas sempre têm mais capacidade de EIS c costumam ser equipadas com vastas coleçõcs de discos que contam no nnalmente milhares de gigabYlcs de dados. Embom sejam caros. é comum serem mantidos cm funcionamento por causa do enorme investi mento em software, dados. procedimentos de opcmç:1o e pessoal que representam. Muit.:ls empresas acham mais barato pagar algu ns milhõcs de dólares dI! vez e m quandu na eomprn de um nuvo do que sequer pensar M esforço exigido para reprogr:J.mar todas as suas aplicações para máq uinas menores. Ê essa dasse dc computadores que levou ao infame problema do Ano 2000, causado pelos programadores Cobol na... décadas de 1960 e 1970 porque rcprescntavJm o ano com dois algarismos (dígitos) decimais par:! econo mil.ar memória, Eles nunca imaginaram quc scus softwares durariam três uu qualro décadas. Embora o desastre previsto não tenha ocorrido devido ao imenso tr.. balho realizado parJ. solucionar o problema. muitas empresas repeliram o mesmo erro quandu simplc... mcntc acrescentar:un mais dóis dIgitas ao ano. O aUlOr prevê aqui o ti nal da dviliLllljão que conhecemos à mda-noi te de 3 1 de dczembro de 9999, quando 8 mil anos de velhos progr.unas Corol falharem simulUlleamente. Além de sua uülização para executar '«l/iwarc herdado de 30 anos de ex istência. nos últi mos anos a Internet de u um novo fô lcgu a es.ses mamfl"J.mes. Ela achou um novo nicho. como poderosos servidores de Intl:rnet, por exemplo. porque podcm manipul ar quanlidades maciças de 1r.1IIsaçiJcs de e-commcrce por segundo, em particular em em presas ljue exigem imensas ba.'iCS de dados. Emborn o foco deste livro seja PCs, servidores e microcontroladores, vamo~ examinar melhor os mainframes no Capíllllo 5. Até há pouco lempo. havia uma outra categoria de comput.:ldores ai nda mais poderosos do que os mainfr:lmeS: os supercomllut..:1dores. Eles tin ham C PUs extremamente dpida... , muito!\ gigabytcs de memória princi pal c discos I.: redetl muito velozes. Ef'.Jm usados paI".! cálculos maciços na.~ áreas cientflic:l e de engenharia. como a simulaç:1o de COIiSiiode galáxias. a síntese de novos medicamentos ou a modelagem do !luxo de ar ao ",-dor da asa de um avia0. Contudo, oos úl timos anos. os COW.~ passaram a oferecer a mesma capacidade de corn pUlaç:1o a preços muito mais baixos, c os verdadeiros supercomputadores agorJ. são uma raça em eXlinçào.
1.4
Exemplos de famílias de computadores
Neste livro vamos foca li7.ar três tipos de computadores: computadores pessoais. servidores e eompuladores embutidos. Os computadores pessoois são imercss anTes po rque tooO leitor sem dúvida já usou um. Servidores silo interessuntes porque executam todos os scrviços na Internet. Por fim. computadores embutidos são invisíveis pura seus usuários mas eontrolam carros. televisores. fo mos de microondas, máqu inas de lavor e prJ.ticameme todo equi· p;lffie nto elétrico que cusle mais de 50 dólares. Ncsta seção faremos uma breve introdução aos três computadores que serão usados como exemplos no resto do livro, um de cada, uma das t:rês c;uegorias Ci tadas. São eles o Penlium 4. o UltraS PARC LU e O 805 1.
1.4.1 Introdução ao Pentium 4 Em 1%1:1. Robert Noyce. n inVCll10r do cireuiftl integrado de ~i l rdo. Gurdon Moan.:. :14ucle famoso da lei de Moore, e Anhu r Rock. um c:lpilalisla dI! nscn di! S1ln Fr:mCl!\oCO. fOOllaram li Intd Corptlf'.Jlio!l para I':lbricar chips de memória. 1.:.111 seu pri llIClfll ano de uperação a Imcl venUcu apc n:L" 3 mil dÓlares de chips. rna.~ desue ent:'io o negódo mclhon}U. Nn rmal da déc:tlia de 196(). as calculadoras er.un grandes múqumas d etromecãnicas do tamanho de uma moderna impreSSOr:! li laser e pesavam ::'0 !.juilos. Em 'lCtt:lllbro Je 1969, uma empresa j apll ncsa. a Bu ~ icom . con.. ultou a Imel sobre um pedido de rabricaç:in \.Ie 12 chips sob encomenda par:1 uma calculadom c!clroniea propos ta. Ted HoIT. O engenheiro dn Inlel designado para essc projeto. JnalisOll o plano e pen:t!bc u qut: podia colocar lima CPU de UM) gerJ..i \.Ie 4 bits c m um ünlCO chip. que raria a mesma coisa e seria mais simplc... e também mai s barata. Assim. nascia. em IY70. a pri mClf'J. CPU de um só chip. deno minada 4004 de 231X) transislo!'Cs (Faggi n el aI., 1996). Vale a pena observar que nc m a Intel ncm a Busicolll tinhnln li mínima idéia do que acabaV:Lm de faze r, Qoando a Inlel dt:ddiu que poderia valer a pena IClllar usar a 4004 em OUlros projelos, pf'OP'1s à Busicoln comprar de volta os di reitos ao nnvo chip devolve ndo os 60 mil d61ares que aquela empresa linha p:lgo à lnte l para dc.~c n vol vê- Io, A a rena fo i aceita sem mais dclongas e elllão a Inlel começou a tmbalhar em uma vcr:cio de 8 bits do chip. o 800S. lançado cm 1972. A falllíli;1 Intel. q ue clJlncçou com o 4(}()4 c o 800R. é mostmda na Tabela 1.4. Como a cmpresa não csperJ.va muita de manda pelo 8008. montou uma linha de produção de baixo \fOlume. P'.J.r::t o espanto de lodos. houve um enanne interesse . pnl1anto a Intel passou a projetar um novo chip de C PU que lLl lr'.Jpassava o limite de 16 'luilobytcs de memória do 8008 (imposto pelo numero de pinos no chip). esse projcto
,o ~
•
u
TatlelõltA
·• o
~
•
Famfua de CPUs da Intel. As velocidades de relóglo são medidas em MHz (megahenz) em que I MHz é t milhão de ciclos/s. ,'l'ransi&torna , M'amória I
Obllarv!lÇÕus
4004
4/1971
0.108
2.300
640
8008
4/1972
O,lOB
3.500
16KB
Primeiro microproce5St1dor de 8 bits
8080
4/1974
2
6.000
64KB
Primeira CPU de uso geral em um àup
6086
6/1978
5-10
29,CXX>
1 MB
Primeira CPU de 16 bIts em um chip
8088
6/1979
5-8
29.000
1 MB
Usada no IBM PC
80286
2/1982
8-12
134.000
16 MB
Primeira CPU de 32 bits
Primeiro microprocessador em um chip
Com proteção de memória
80386
10/1985
16-33
275.000
4GB
80486
4/1989
25-100
1.2 M
4GB
MelllÓna de cacbe de 8 KB embutida
Pentium
3M93
60-233
3,1 M
4 GB
Doi! pipelines: mode1os posteriores tinham MMX
'.•
Pentium Pro
3/1995
150-200
5.5 M
4G8
Dois niveis de cache embutidos
Pennum n
5/1997
233-450
7,5 M
4 GB
Pcntium Pro mais instruções MMX
N
Pentium 111
2/1999
650-1.400
9,SM
4GB
Instruções SSE para grãficos em 3D
"•o
Pentium 4-
11/2000
1.300-3.800
42M
4GB
HipenhreadiDg; mais instruções SSB
•
~
o
~
o resultou no 8080, uma CPU pequena, de uso geral, lançada em 1974. De mudo muito parl!CIllo com o PDY-S. esse produto tomou o setor de assalto e se tOmou instanL:1nearnentc um itcm de mercado de masSll. Só 4uc, em vez lIe v~nde r milhares, como :t DEC tinha vendido, li Intel vendeu mi llllks. Em 1978 veio o 8086, urna genuína CPU de 16 bits em um lín ico chip. O 8086 foi projeL:1do para ser semelhante :lO 8080, mas não Cr.I tOlalrnenle compUlfvel com o 8080. O 8086 foi seguido pelo 8088, que tinha a mesma arquitetur.l do 8086 e CXCCUL:1va os mesmos progr.tnJas. mas linha um ba.rr.unemo dc 8 bits. em vez de I b bits. o que o to mava mais lenlo e mais barato do que o 80~6. Quando a IBM adotou o 8088 como a CPU do IBM PC original, esse chip rapidamente se tomou o padrão da indústria dos compuladores pessoais. Nem o 8088 nem () R08t'i podiam endereçar mais do que I megabyte de memória. No início da década de 1980 isso se to mou um problellw c:lda vc:-. mais sério. por isso a Intel projetou o 80286. umll versão do 8086 eumpatível com os chips anteriores. O conjunto de instruç()cs básieo cra essencial mcnte mc... mo do 8086 c do 8088. mas li organização da memôria er.l Oclll diferente e um pouco desajeituda por eausa do requisito de compatibilidade eom os chips !"Quis antigos. O ~02 86 foi usado no IBM r OAT I! nos modelos de fa ixa média. PS/2. Assim como o 8088. foi um gr:.lOue sucesso. em s rande parte. porque todos o considcmv:un um 8088 mais veloz. O proximo passo lógico scria uma verdadcirn CPU de 32 bits I!m um ..:hip, o 80386. lançado em 1985. ASSlln como o 80286. esse ehip er... mais 011 menos compatível com tudo qUI! havia antes. até o 8080. Sendo compalível com n famíl ia anterior. era importante par... pcSSOIlS que queriam rodar velhos programas. mas um aborrecimento p:U'a que m preferia uma arq uitetura simpll!s, limpa e muderna que não fosse pn::judicada pelos erros e pela tecnologia do passado. Qualro anos mais \m'de roi lançado o 80486 que. em essência. er... uma versão mais veloz do 80386. que também tinha uma unidade de ponto flutuante I! 8 quilobytes de memória de eachc no chip. A mcmól"ia de caehc I! usada pam conter:lS palavras de memó ria milis usadas, dentro ou próximilli da'::PU. de.! modo a evitar acesso (lemo) à memóna prineipal. O HWR6 também tinha ~ uptJne de muJliproce s~adnr embutido. o qUI! pcmlitia que \l~ fabrieantes ,,:ullstrufsselll sistemas COIII várias crus 4u,,: compartil havam uma memória em comum, N..:ssc punlo. a Intel deSI.:(lhriu do modo mais difícil (penJcmlll uma ação judicia I de violação de marca rcg i .~· Irada) que nlÍ mern1> (cnnm XO·~Hó) não 1~M.1eJll <;er eonsidemdns comu marca regi.,trada. portamo a gCrJç:io <;eguinle g:.mhou um nome: Pentium (da palavra grega pma cincn. 1fR InI:). J)l feI'Cnte do MU4H6. que unha um $O plpclint: interno. o Pemium tin ha dtl t ~. o que ajudava a tomá· lo dUlls vCl.es mais r,i pido (d i scut irclllt ~ pipd ines em dClalhcs no Capftulo '2). MaIS tarde a Intel w.:reM:ellltlu à linha de produção as instruçõcs especiais M M X (MultiMediu eXtension). O Prtlpósito dessas instruç(les c.... accler.tr d lculos ex igidos pa .... processar áudio e vídeu. li que tomou desneeessária a adiçãu de cu-processadores especiais de multi mídia. Quando a pnhima ger...ção apareceu. que m estava cspcr... nllo por um S~ ium (st';c é '<;eis' em 1:11 1111) tieou desapotlllldo. O nome Pemiulll agor... era tão conhecido que o pessoal de marketing resolveu eonservâ-Io. e o novo chlP 101denominadu Pellliurn rm. A despeito da pequena muuilnça de nome em relilção a seu aJltL"Ccssur. esse processador representou uma gr... nde ruplUr.l com o passado. Em vez de ter dois ou mais pipeli nes. n Pcntiull1 Pro tinha uma organi/.ação interna mui to difl!re nte c podia eXl!eUlat até cinco inSlnlçÕCS por vez. Uma outr... innvaçilo cnel\(lIrada no Pcnlium I>ro cr... uma nlemôria lIe cache de dois níveis. O chip do processador em si tinha Kquilubytcs de memória r.ipida par... conter inslruçõcs mais usadas..: mais S quilohytes de melllóna r:ípida pam ..:onter dados mais usados. Na mesma cavidade dentm tio paco!c Pcnlium Pru (mas não no ehip em si) havia ullm segunda memória de caehe de 256 quilobylC....
°
1
'" N
Flgbra 1.8
Clup Penuum 4. Direitos da rotoqraHn da Emel Corporation. 2003. reprodução pernutlc.a.
,o •
u
Embora I,) Penlium Pro tivesse uma gr-.mdc c:lt.:he. fa ltavam as instruções MMX (porque 3 Intel n50 conseguiu fabricar um chip tão grandc com desempe nho accitável). Quando a tecnologia melhorou o bastante para conseguir colocar as instruções MMX e a c oche no mesmo chip. o produto combinado foi lançado como Pentium H.-logo após fora m adicionadas ainda mais instruçõcs de multimídia, de nominadas SSE (S tre.o.ming SlMO Extcnsions). par.! mclhomr os grâficos em 3- D (Rarrutn et ai., 2000). O novo chip foi denominado Pentium 1lI. mas internamente era, em essência, um Pentium n. O próximo Pentium em baseado em uma arquilClUrll intcrna dife rente. Pura celebrar esse evento a Intel mudou de algarismos romanos par.! algarismos adbicos c o denominou Pentium 4. Como sempre, o Penlium ~ em mais rj pido do q ue tooos os seus :!nt!.-'Ccssores. A versão de 3.06 G I-Iz também introdu1.iu uma nova e intrigante ear.!ctcrislica, o hipcrthreading. Essa c:lr.l.cterístiea permitia que os progrnmas dis tri buíssem seu lr.!halho p;tr.l dois lhreads de cont role que tl Pentium 4 poJb executar em paraldo, acelerando a execução. Além disso. roi aercscenlóldo um novo lote de instruções SSE para ace lerar :tinda mais o processamento de áudio e vídeo. Uma fotograJia do Penlium J é moslr.lda Figuro. 1.8. O seu tamanho real é 16.0 mm X 13.5 mm. um chip extremamente grande. Além da linha principal de CPUs para computadores de mesa discutida ames. a Intel fabneou variantes de alguns dos chips Pentium para mercados espt!Ciais. No início de 1998, a empresa lançou uma nova linha de produ111 de nominada Cc/crun, basicamente uma versão de baixo preçlJ e baixo descmpenho do Pemium 2. dirigida a PCli de linhas mais bar.ttaS. Uma vez que II Celeron te m a mesma arquitetura do Pcntium 2. nao o discutiremos mais neste livro . Em junho dI! 1998. a I..ntellançou uma versão I!specilll do Pentium 2 para a f:lixa mais alIa do mercado. Esse proccssador. de nommado Xcon . tinha IIm:l cache. maior. barramento mais rápido e mel hor suporte de microprocessador. ma.;, exceto por isso. ern um Pcntium 2 normal. penanto lampouco vamos discuti-lo separadamente. O Pentium lU tam bém teve uma vcrsào XCOIl. Em novembro de 2000. a Intel lançou o Pe.ntium 4, 4ue I!xt.'CUlava os mesmos programas que o Pentium lU c: I) Xeon. mas com um projeto interno totalme nte novo. A versão de 3,06 GH7. do Pentium 4 intrOOuziu o hipenhrcading, assu nto que vamos di,seutir 110 Capítulo 8. Em 1003, a Intel lançou o Peruium M (de Mohile), um chi p projet.ado para nolcbooks. Esse chip era parte da arquitelUra Cenlrino. cujos tl bjetivos era LII menor eOnSUltlll de energia pura maior te mpo de vida lítil das baterias: computadores menores e mais leves c e:lp
l
...
,.
'm
,OOK
~
~
\
Penllurn
o
eo
Penhum lU
,""
••
,•
P6fl1lum •
"".
N
fI •• r:ll.9
Lei de Moore para chips
de CPU {Intell.
'-'
• • ,•"
,j ".
$
" '00
~
",
~
;
•
~
o ~ ~
• " •"
~
o"
.,
1970 1972 1974 1976 1978 1980 1982 1984 1986 1988 1990 19921994 1996 1998 2000 Ano os IallÇ/ln'lOnlO
dissipado são proporcionais ao quadrado da tensão elétrica, ptlnanLO !!ltL"Cução mais rápida significa ler mais calor do qual se livrar. Em 3,6 GHz o Pclltium 4 consome 115 wullS de potência. o que s igni fica que de fie::! quase tão quente quanto uma I!hnpada de 100 W:lUS. Acclcr:tr () relógio ugrava o prohlcma. Em novembro de 2004 a Intel cancelou o Pcnlium -1 de 4 OH... por causa de problemas de dissipação de calor. Grandes venti ladores podem ajudar. mas o barulho que fazcm nao agrnda aos usuários. e refrigeração:1 água, embor:l uS:lda em gr..mdcs mainfr.:uncs, não é ullla oPlfilo viável pam I.:quipamcntos de mesa (menos ainda para notebook:s). Como conseqüência. a antes implacável marcha do relógio pode ter sido temporariamente interrompida. ao menos até que os engenheiros da Intel descubram como se livrar com eficiência de 'odo o calor gerndo. Em vez disso. os planos ,"UIUIUS da Intel f'ão colocar duas em um mesmo chip. j unlo com uma gr:mde cache compartilhada. Por C:lUsa do modo como o conSUlll1) de cnergia está n::lacionado com a tensão elétrica e a velocidade de relógio. duas CPUs em um chip consomem muito menos energia do que uma a uma velocidade duas vc:r.l!s maior. Como I.:onseqilencia. o ganho oferecido pela lei de Ml,!9re pode ser ainda mais explorado no fu turo (XU"'J incluir caehes cada vez maiores cmbutidas em um chip. em vez de velocidades de relógio cada vez mais al ta.,>. porque a memória não consome muita energia.
crus
cru
1.4.2 Introdução ao UltraSPARC III Na década de 1970. o Unix em popular em univer.üdadcs. mas nenhum computador pessoal o executava. porta nto os admiradores do Unix tinham de usar minicomputadores de tempo compartilhado (muitas ve:r..ts sobrecarregados). wis C0ll10 o PDP- II e o VAX. Em 1981. um estudante alemilo de pós-grnduação de Slanford. Andy l3cehtolshcim. frustrado por ler de ir alI! a ccnlml de computadores par.! usar o Unix. decidiu resolver esse problema construindo para si mesmo uma eswç:lo de Ir.J.balho Unix pessoa.l com peças enc.;ontrada.~ no comércio. Ele a denominou SUN-I (Stanforu Univt:rsity Network). Logo Bechtnlsheim atraiu a atenção dt: Vinod Khosla. um indiano de 27 anos cujo ardente desejo era se tornar milionári o até chegar aos 30. Khosla convenceu Bechtolshei m a fundar uma empresa para construir e vender estaçõcs de trabalho SUN. DcJXlis Khosla contratou SeOlt McNcaly. um outro estudante de pl'ls-grJduaç:"io de Stanford. parJ chcHar a produção. Par:I escrever o software eles contratarJm Bill Joy, arquiteto principal do Berkcley Unilt. Os quatroju nlos fu ndaram a Sun Microsystems cm 1982. O primeiro produto da empresa. a Sun- I. t!q uipada com uma CPU Motorola 68020. foi um s ucesso inslanlâm•.'o . assim como as m~quinas Sun-2 e Sun-J que vit!r.Jtn logo depois c que também us<\Vam CPUs Mutorola. Diferente de OUlros computadores pessn:tis lia época. c ~sa.~ máqui nas t!ram muito mais podcmsas (dai ri designação 'e~taçüo dc lTaba!ho' ) e. desde () início. foram projetadas para funcionar em uma rede. Cada e:>.I:l\,::l() de lr:.hulho Sun vinha t!quipada LIIII1 urna cunl!.~:10 Elht!nlct t! Lmn software TCP/IP par... conex.io com a Arpanet. a a nt eL~.çnrJ da Internet. Em 1">87 a SIII1. que :.gora vendia meio hilhiio de dú]:tres por ano de ~istemas. decidiu projetar Sul. própria CPU com base cm um projcto novo e revuluciun:irin da Un iversidadç da Culifómia em Berkdey (a RISC 11). Essa CPU. dcnominada SPARC (SCllable I'mces.wr AR Chitcctun! - :trq uitclUru escahívcl de prtH...'eSsador) fOrnl
cru
- - -- - --_...... ..
L
por CPUs com chips Intel. P:tr.t ganhar a confiança de emprc...as que \.-stavam interessadas na SPARC mas não que. riam inveslir em um produto contmlarJlI por um con\.'Om!ntc. a Sun criou um consórcio de mdústrias. a SPARC Intcmational, parJ. gerencbr o desenvolvimento de futurJ.S versões da arquitetura SPARC. Ponamo. é imlXlnante disti nguir entre a arq uitctura SPARC, que.! uma espedticaç;lo do conjunto dc instruçõcs e oU1ras ..:aracten"sticas visíveis para o programador. e uma implt:mellt;lção panicular dessa arq uitetura. Neste livm eStudaremos a arquitelurJ. genérica SPARC c, quando discutinnos chips de CPU nos capít ulos 3 e 4, estuililrcmos também um chip SPARC t."Spccílico u:.ado em estações de tmbalho Sun. A SPARC inicial era uma máquina completa de 32 bits que funcIonava em 36 MHz. 1\ CPU. dcnomin;Kla lU (ln leger Un i O, era cnxuta e sem acessórios, e tinha apenas três formatos de insrrução imponantes em somente 55 instruções no tmal. Além disso. urna unidade de pomo nUluame adicionava outras 14 insuuçtks. Essa hiluória podc ser comparada ":0111 11 da linha Ime:!. que começoll com chips de 8 c 16 bits (8088. 8086. 80286) e finalmente chegou a chips de 32 bits, como o 80:'Hi6. A primeir'J. ruptura da SPARC com o passado ocorreu em 1995, com o dcscnvolvimenlo da Vcrs:io 9 da r1fllui{etura $PARC (V9). uma arquiteturJ. .,;nmpleta de 64 bits. eom endereços de 64 bit.~ c registradores L1e 64 bits. A pri· mC II"a eSlaç:1o de tmbalho Sun par,l implementar a arquitctur'J. V91Versão 9) roi a UllraS PA RC I. lançada em 1995 (Tremblaye O·COllllor. 1996). A dc.... pcito de ser uma muquina de 64 bits. também era totalmente eompalfvd bmá· ria com as SPARCs de 32 bits existentes. A Ultra5PARC pretenLlia desbravar um novo terreno. Enquanto as m,íqui n :. ~ antecessorJ.S for.lJll pmjetadas para manip ular dados alfanumérieos e executar program~s como procc.ssadores de textos e planilhas. desde I} infcio :l UltmSPARC foi projetada parJ manipular imagens. vídeo e multimídia em gemI. Entre outr.lS inovações além da arquitetura di: 64 estnvam 23 novas inslruçcks. incluindo algumas par.! empacotar e desempacotar pixels de palaVf'J.S de tH bits. aumentar o tamanho de imagens e gir.1·las. movimentar blocos e processar compres!ião c descum· pressão de vídeo clIllempo real. Essas insuuçãe!i. denominadas VIS (Vis ual lns truction SeI), destinavam·se a for· necer capacidade multimídia gemI. análoga às instrw:;õcs MMX da Intd. A UltraSPARC vIsava a aplicações de primcira linha. tais eomo gr..mdes servidores Web mu1tiproc~sadores c()m dezenas de CPUs c memórias físicas de até 8 TB ( I TB (tcr.lbyte) = IO'~ hytes). Comudo. versõcs menores lumbém podem ser usadas em notebook..~ . As succssoms da UltraSPARC I foram a UltraSPARC 11. UltmSPARC lU e UltraSPARC IV. E$.~es modelos diferem sobretudo na velocidade de relógio, mas em cada iter.u;ão também fnram adicionadas algumtl~ novas caraetcristie:1S. Em grande pane des te livro. quando disculiml()S a arq ui teturJ SPARC estaremos nos referi ndo primaria· mente à V9 Ultra5PARC 111 Cu de 64 bit.~ c()mo exemplo. A UltraS PARC IV é. em essência. um processador dual no qual são colOl.:adas duas UhrllSPARC III no mesmo ehip de C PU que companilham a mesma memória. Vamos aoord:í·la quando chegarmos a JIlultiproccssadores. no Capftulo M.
1.4.3 Introduçã o ao 8051 Nosso terceiro c:templo é muito di feren te de nosso primeiro (o Pentium 4. usado.::m eomputadores pessoais) c do segundo (a UllraSPARC m. usada em servidores). ~ o SU51. usado em si!itemas embutidos. A história do g051 começa em 1976. quando o 8080 de li bits já estava no mercado havia nproximad:lmeme dois anos. Fabricantes de eletrodomésticos e aparelhos em gemi estavam comcçando a incorptlrar () SOMO em St!IlS equipamentos mas. para construir um sistema completo. eles precisavam do chip de CPU 8080, U1l1 ou mais chips de memória e um ou mais chips de flS. O custo de no mínimo três chips ..: !iua intereonexào era substancial e restringia a utili:t.açào de com· pUladores cm sistcma... embutidos a itens razoavelmente gr,lndcs c caros. Muitos fabricallles pediam 11 Intel que colocasse um compUlador inteiro (CPU. memória e flS) cm um único chip. par.t reduz.ir custos. 1\ [ntel atendeu a seus cl ientes pnlduzindo o chip 8748. un~ micnx:olllmladClr com 17 miltr:m~i.~tores "lue con· tinha uma CPU semcl h:lIltc à 8080. 1 KO de memtÍria ~O lllente de leitura para \) programa. 64 hylC~ de mellllíria de leitu ra/e~crita pum as vari:íveis. um tcmporizador de ~ bits e ").7 linhas de FJS parJ. controlar imelTlJplorcs. botõc... c IUlCS. Embora pnlllllivu. ti chip rui 11111 ~UCCS'i(l ":OIl1crcial. u 411c levou .1 lJ ltcl a 1.m~a r \I 8051 cm 19MO. E~sc novo clup cOlllmha 6U miltrJ.llsislOres. umôl CPU mU 1l0 m:us r,iplda. ~ KB de rnC11luna 'iOIllCllle de ku urJ.. 12M bylcs de memória L1e !dlur.llI!Scrila. 32 linha.~ de F.JS. uma porta :.crilll e dois tcm pori.l..lIdorcs tle 16 bits. logo fo i seguido pur outros membros 4uc a Intel denmTllnou ramília M CS·5 1. mostmda na làbcl:1 1.5. Tabela 1.5
Chip
I
Membros da família MCS-51.
Mamaria de programa
8031
OKB
8051
4K8
8751
8K8
Tipo de mam.
RAM
Temporizadores
lnterrupçoes
"8
2
5
ROM
"8
2
5
OIROM
"8
2
5
8032
0K8 8 K8
ROM
25. 25.
3
8052 8752
8K8
E:PROM
25.
3
3
• • 6
tO N
o
;; C-
•
"
'" N
• o"
·
~
•,
~
e o
'-'
•
~
,•
·, •
~
'." o
~
•
c
•
· ~
o
ToJos esse.... .:hips usam memórias somente de leitura p:lra o prugr.lma. mai s um;! pequena quantid;l{Jc de mt:mória de IciturJlcscnla denOTllinada RA :vt (R:.IIu.lum Acccss Memul')' - mcnl(íria de Ilccssn ulcul6rin) para ann:u:cnamcnto de dados. Com o 8031 c o g032. a memória de progr.una é I!Xlcmu. o que permite 4uc mais de R KB sejam usados se ncct!Ssârio.l2sluJ;Jrcmos ROM (Rcad On ly Memury) e EPRO M ( Er:l.~ .. ble Prugrummablc RO M) no Capitulo 3. Por enquanto. basta saber que o 8051 c o 8052 são microconlroladores de um só chip usados em produtos propriamente ditos. Cada lule é fabricadn ~ob cncomcndu paro o cliente (por exemplo. um fabricamc de dctmuoTllcsticos) c contém o prngr.una rornecido pelo cliente. Contudo. para desenvolver o sotiwarc, o cliente precisa de um sistema de dcscnvolvimclIlo. É aí que entram tl X7.)1 c () 8752. Eles :.ão IIIUilO mais caros do que no 1W51 e o ~052. ma... podem ser progr.ulludo,s pelo cliente parJ. a tinalidadc de testar n sofTWare. Se for encontrado um hug no código. o progmma no 8751 ou no 8752 pode ser apagado c.xpondo o chip :) luz ultrJvioleta. Então um novo pmgmllln pode ser gravadn. Quando estiver pronto, o wftwan: pode ..cr entregue ao fabrie:mle do ehip que depois pnxJ U)'~ sob enctllnenc.l:l, o 8051 ou 8052 que contem o código, Em termos de arq uitetura. intcrfa,,:e e progmma.;ão. todos os membros da ramília MCS-51 slio muito semcIhantc... , Por simpliódade. nos referiremos quase sempre ao 80S!. apnntando as diferenças enLre ele e os ouLros chips quando neeess,irin, US:lr como exemplo um chip de 8 bits que tem mais dc).!O anos de existcncia pode parecer uma idéia ". s Lr.mha par.t muita gente, ma... há boas r:lI:ÕCS par.t i~so. O número dc microcomroladoreli vendidos por ano é de cerca de ti bilhões e está crcscelllJCl rapidamente. Esse mimcm é ordcns de grandeza milior do quc o número de Pentiums vendidos anualmente. Fni apcna.s em 200 1 que o oumero de mil.:rocooUl'Jladores de 8 bits vendidos por ano uhrapassou o volume dos microcuntroladores de 4 bits. Iloje. a venda de mil.:rocOl1 uuladores de 8 bit.. ultrapa...sa a de todos os outros j untos. e a ramília de microcontrol;\dures MCS-5 1 é a mais pnpular de todas as faml1ias de 8 bits. Dada a c~ce nte importância de sistema... embutidos, quem quer que estude arq ui tetura de computadores te m de CStar famiHaril'. ado com 0'<:, chips usados oela. e o ~051 é um dos mais populares. Há vânas rJ.Zôcs par.t o sucesso do 805 1. Antes de mais nada. O.preço. Dependendo do numero de unidades encomendadas, um 8051 pode ser com pr.:ado por cerca de 10:t 15 eentavos de dólar por chip. talvez menos pura grandes voluml!li. Ao contrário. um microcontrolador de 32 bits costuma custar 30 vezes mais. sendo que o PI'e110 de um de 16 bits I..'.~tará em algum lugar desse intervalo. Par.t produtos vendidos por menos de 50 dólares em mercados competitivos. reduzir un.~ dois dôlures do r.;usto de fabricação pode razer uma di t'crença significmiva no pn:ço de varejo c nas vendas. Esta é a princi pal ra7iío por que o 8051 é tão popular - cle é muito barato. Em segundo lugar. meia dú7.Ía de empresas fabrica os 8051 sob licença da Intel. Seus produtos abr.tngem uma ampla fa ixa de velocidades, desde a original de 12 MHz até 100 MHz. c usmn muitas tec nologias di ferentes de fabri cação e empacotamento. Essa concorrcncia não ape nas mantém os preços baixos, mas os gt;\ndcs clientes também ..cntem-se muito mais felizes quando não dependem de um unico fornecedor. Em terceiro lugar, como o 8051 está na praça há muito tempo. ex iste uma imensa quantidade de softwares para elt:, ind uindo assemhlers. eompiladnres para li nguagem C e Outr:IS linguagens. bi blioter.;as de Lodos os tipo~, depuradoreli. ~im lll adores. 'ioftware de testes e muito mais. Também há no mercado muitos si~te mas completos de dc:>en\'olvimento. o que acelera o de ..eilvolvirnento de hardware e soltware embutidos. Por lim. uma grJ.nde quantidade de progr.tmadorcs e engenheiros de ha rdware conheeem bem o 8051, u que faci lita encontrar pessoal hahilitado. E....sa popularidade lie realimenta de si mesma. Pesquisadores interes...ados em sistemas embutidos mui tas vezes escolhem o 8051 como seu principal objeto de estudo devido a seu uso disseminado. por exemplo. par.t testar novas tec nologia... mais eficientes no consumo de energia (Manin et a!., 2003) ou mais tolerantes a fal ha (Lima et aJ.. 2002). Exi'\lc uma grande qualllidade de infonnaçtks sobre o 8051 na Internet. além diliSO, ai nda há au tores t:serevelldo novlIS livro'i sobre e1c (Aynla. 2OW: Calcu\I et aI.. 2004: MaeKcnzic et a!.. 2005: \,; Mazidi et al .. 20(5). '
1.5
1
Unidades métricas
Par.! evitar qualquer eonfusào, vale a pcoa declurar explicuamellte que. ncste livro. a.~sim como na cicneia da cnmpUla.,:iin em geral. ~ã{) usadas unidades métricas em vel' d:t~ tradiciunais unidades inglesas (o ..istcmafilrlulI~ ' \·flmc ·Jimllit:llIt O .. principais prefixos IIIctriCOS estàu relacionado~ 0:1 Tabela 1.6. Os prelixus nonnahncnte são ahreviado), pnr ,uas primcims lelr.ts, ~ellthl a Ulmlade maior UI) 4ue I em m>liúsculas ( KB. MB elc. ). Uma exceção (pur r.tzües históriC:IS) é kb p'\ p'lr.! Idlohits/s. Assi m. um:t lin h:. ue cOlllllnicaçJ.o de I Mbps tr.tnsmite lO" bits/s e um relógiu ue 100 ps bate a cada ltl 10 segundos. Urna vez que ambos os prefixos. mili e miem. eomeçam eom a letr.l 'm· . era preciso fazer uma e~co l ha. Normalmente 'm' representa mili e 'IJ.' (a letrJ. grega mu) representa miem. TalOocm vale a pena lembrar que. par.! medir ta manhllS lIe menllírias. disct)li, arquivos e banco de dildos, na pnítiea eomum uo ~e t or:lS unidadc.~ tê m ~ i glli lic:ld os ligeiramente difere ntes. Quilo, por exemplo. ~ i gninca 2 10 ( 1.024) em vez de IOJ ( 1.000) porque ali mem(iri:ls são .~empre uma pn!ência de dois. Assim, uma mcmóml de I KB eomém 1.024 bytes. e não 1,(XIO bytes. De mudo 'iemelbantc. uma memória de I MS cnmém 2-'\1 (1.04~.576) hytc... , uma memória ue t G B r.;nntém 2311 (1.073.74I.K24) hyws e um banco de dados de J TB contém 2·IU ( l .n99.511 .ó27.776) hytcs. Todavia. uma linha de cOTllunica"ão tle 1 kb p~ pode tr.tnsmitir I .IXX) h i t~ por segundo c uma LAN de !O Mbps funcilllla a IO.tXX1.OOn bits/s porque essa... velocidade!'! nãu s:iu PllIências de uois.
L
Tabela 1.&
Os principaIS prefixos métricos.
'ÜUi !.! ler"
0.001
mill
lo'
1.000
KlJo
JO~
O.(XXXXll
mia0
10'
1.000.000
M"",
10.11
0.000000001
",mo
lo'
1.000.000.000
Giga
10- 0
O.lXXXXXXXXXXlI
pico
10:2
1.000.000.000.000
,..,.
10- 15
O.OOOOOOOOOOCXXX>l
~mta
IO
1.000.000.000.000.000
""ta
IS
10- 18
0.0000000000000001
alo
10"
1.000.000.000.000.000.000
Eu
l(Tal
O,OOOOCXXXXXXlOOOl
zepto
10"
l.ooa,OOO.OOO.OOO.OOO.OOO.OOO
Zela
10-2..
0.00J00CJCXlIXXXX1
"""
lo"
1.000.000.000.000.000.000.000.000
lota
1
Infelizmente. mu ita gente te nde :I misturar esses dois "Istemas, em c~pcc i al
1.6
Esquema deste livro
E,'ile livro Imta de ~ Il mpu t:.ldores mu ltin fvcis (n que incl ui prnticamentc todos os computadores modernos) e de como eles são organ izados. Exam inare mos quatro níveis com considerável detalhe - a saher. o nível lógi · co digital. o nível da micmarq u itetur.l. o nível LS,\ c o nível do sistema opcme ional da máquina. Ent re alguns dos assu m os básicns examinados I!.,tão o projeto global do nívd (c por que fo i proj etado desse jeito). os tipos de instfUl,'õcS e dados disponiveis, a o r~ani:t.::u.;ão c o cndcreç:J.nlenl'O da memória e o método de implementação do nível. O estudo desses tópicos c de t6picos semelhantes é de nomin:J.do organb·.ação de computadores ou arquitetur.! de compu tadores. Nossa preocllpação pri mord ial é com conceitos, e não com de talhes ou mate mática formal. Por cssa razão, alg uns dos excmplos dados ser:iu muito sim plilicados. de modo a enfa tizar as idéias centrais, c não os detal hes, Para dar uma certa idéia de como os princípios apresc mados nes tc livro podem ser, e são, aplicados na prática. usaremos t) Pcntium 4. a UhraSPARC lI! e \) 8051 como cltemplos correntes çm todo o livro. Os três foram I!Scol hidos pur dive rsas razõcs. Em primeiro lugar. 1000S ..ão am plamente usados c é provável que o leito r tenha acesso a no mínimo um de les. Em segundo lugar. cada um tc m sua própriu arq uitetura exclusiva, o
,
•
o
,
•
u
'" N
•o• ~
• •
~
e
o u
• • •" •
o Capítulo 6 abmngc :llgum:1S das lns lruçõc~. organi/..a...ilo de rncmóriOlI.: nu:c:mismos de controle presentes no nível do sistema operacional d:l m:lquina. Os exemplos usados aqui são o Windows XP (popular em sislem:.l.S de servidores Pcntium 4 de primeira linha) c o Unix. usado no Ultr.lSPARC UI. O Capítu lo 7 tOla do nfvel de linguagem de montagem. Abrange :l linguagem de mOnlagclll c o processo de monlagem. Aqui também é aprcscJlLado o tÓPico da ligação. O Capítulo 8 discute compul;ldo~ [>amidos, um tópit:o de crcsccmc importância nos dias de hoje. Alguns des~ scs computadores parald os tl!m múltiplas CPUs que compartilham a mesma memória. Outros tem múltipla.'\ CPUs sem memória em comum. Alguns "ão supcrcompUl:lullres: alguns são ~jstC Jl1a.s CIIl um chip c outros são COW ~. O Clpítulo (} contém um:. lista comentada de leitur..ls sugeridas. classi fiçadas por assunto. e uma lista em ordem alfabética de citaçÕC:i da Iiter:ltur.I.. Ê o capítulo mais imponantc do livro. Aprovcite-o.
~
~
• •
w o
'•.
~
•
o
•o
o"
Problemas 1. Explique eada um dos termos seguintes com suas próprias palavrds. a. Trddutor. b. Intcrpretador. c. Máquina real. 2. Qual é a diferença entre imerpreroçi1o e lratillçiio'! 3. É concebível um compilador gerar sarda para o nível de microarquiletur.l. em vcz de par.l. o nível ISA'1 Discu~ os prós c çontras dessa propos~. 4. Você pode imaginar qualqucr çomputador TIlultin'ivds no qual o nível de disposilivo c os nívei s lógicos digitais não e~ ti ve ssem nos níveis mais baixos? Expliquç. S. Considere um computador multinívcl no qual lodos IlS níveis .~ i1o diferentcs. Cada n(vel tcm i n s lruçõc.~ que súo m vezes mais poderosas do que as do nível abaixo dele: isto!!. uma instrução de Ilívcl r pode fazer o trabalho de m instruções de nível r - I. Se um programa de nível I req ucr k segundos pura cxt!eutar. quanto tempo levariam progralllas I,."quivalentcs 110S níveis 2. 3 e 4 :ldmitindo quc são req ueridas /I inslrulfUcs de nível r pat:l intcrpretar umu úniea instruçào de nível r + I? 6. Algumas instruções no níve l do sistemu operacional da máquina são idênticas a instruçõcs em linguagem ISA. Elas são exeçutadns diretamente pelo mieroprogr:una. c n:lo pelo sistema opcr.lcional. À luz de sua resposta ao problema anterior. por que você acha que is.so aeontecc'1 7 . Considere um computador com interpretadores idênticos nos niveis I. 2 c 3. Um interpretador precisa de n ins· truções pard huscar. examinar c execuUU' uma instruçào. Uma instruç:lo de nível I demof':l k nanosscgundos para executar. Quanto tempo demora pam execUlar uma instrução nos níveis 2. 3 c 4'1 8. Em que senlielo hardware e software são equivalentcs? E não equiv:.lentes'! 9~ A maquina diferencial de Babbuge tinha um progmma lixo que não podia ser trocado. Isso é essencialmente a mesma coisa que um moderno CO-RO M quc não pode ser tTOc:l.do'! Explique sua resposta. 10. Uma da..~ conseqüências da idéia de Von Neumann de armazenar o pmgr.lma na memória é que cs§cs programas podem ser modificados. exatamente corno os dados. Você consegue imaginar um exemplo onde essa fuei lidade poclcria Scr útil? (Dica: pense em cfetuur ariunétiea em vetores. ) 11. A relação entre o desempenho do 360 modelo 75 c do 360 motlelo 30 crd de 50 vezcs. Ainda assim. o tempo de eklo era só cinco vezes mais clpido. Como você expliça essa discrepância'! 12. Dois projetos básicos de sistcma.~ são mostr:ldos nas figurJ.'i I A e 1.5. DcSl.:rt:V'.l como poderia ocorrer enlrada/sarda em eada sistema. Qual deles tem potencial para melhor desempenho glob al do sistema'! 13. Suponha que e:lda um dos 300 milhões de habi tantes elos F~~ tauns Unidos consonu.: totalmente dois pacOles de mcn;adorill por dia marcados com cliqueta.~ RAD. Quantas cdquel:l.ll RFID teriam de ~r pnxiu7.idas por :1110 pard satisf:l7.er essa demanda? Sl! a l!tiqueta custar um centavo de u()br por unidade. qual é u custo total dns ellquelas'! Dado o tamanht) do P18. essa quantia ser.í um onst:ículo 11 , ua utiliz:u;:io":lI1 çada pacote ofcrcc idu J vcnda.' 14. Dê () nome de três c1etnxiomésticos ou apurelhus candidatos a funcionar com um:. C PU embutida. 1S. Em uma cena époça. um transistor instalado em um microprocessauur unha 0.1 micra ue diãmclro. Segundo a leI de MonT\!. que tamanho teria um trdnsistor no modelo do ano seguinte'! 16. A questão legal que l!nvol via I.juem leria invent.aúo o computador foi tC.'IOlvida em :.tbril de In3 pelo juiz Earl Larson. que julgou uma açiio j udicial de violaçãu Je patentc impetr.tda pela Spcny R:md Corporalion. que tinha adquirido as patentes do El~ IAC. A pusilfãu da Sperry Rand er:. de que lodos o~ fabric'lI1tcs de computadorl!S lhe dev iam royallit:.\· porque as p:ltentcs principais lhe penend:un . O caso fo i :1j ulgamento em junho de 1971 e mais de 30 mil provas foram apresentadas. O arquivo do C:lSO passou de 20 mil púginus. Estude esse ca.'IO çom mais cuidado usando a grdndc qU:Lnlidade de infonnaçõcs disponivcis nu Intcmet e redija um relatório que disçut:l. seus aspectos técnicos. O que. exatamente. Ec!.::ert c Mauchley patcnteamm e por I.jue o j uiz >lchou que o sistema deles era b>lSC:ldo no trabalho anterior de AtanltSojf? 17 . Escolha três pessoas que vncê considera serem as mais inJluentes na criação do modem\! hardware de computadores e redija um euno relatório que desc.:reva suas contribuições e () motivo de escolhê-Ias. 18. Responda ~ pergunta anterior ~ ubs tituind o hardware por ~oftw:lrt: de çomputadur.
,
i I
I
L
Organização de sistemas de computadores
m computador digiUll consiste em um sistema illlerconcctado de processadores. memória." !' nus cinco capítulos subseqüentes. Procl!ssadorc.s. memórias c dispnsilivos de entrada/saida são conceitos fu ndamentais c cstur50 presentes em todos ()S nívds. portanto. iniciaremos nosso t.!.'!tudo da arquitctur.l de t:om-
U
pUladores examinando toc..los os três. um por vez.
2.1
Processadores
A urgani .....açào de um comput:1tJor simples com barr.J.mento é moslI':J.dll. na Figura 2.1. A CPU ( Cen lr.ll l'mcessin~ Uni! unidade ccntr.J1 de processamento) é o 'cérebro' do computador. Sua funç.:1o é CXI..'Cutar programas :mnazenados na memória principal bU5C!l.ndo SUtiS im,uuçõcs, examinando-as lo: Io:ntào eXeCUl3J1Jo-as uma após a outra. Os ctlInponcnlcs ",10 conecta!.los por um h1l.rrJnlCllIO, que é um conjunto de lius p
-
Unidade cenlr.ll do pl'OC8ssamenlo (CPU)
~ 00 c:onlloie
flgur:a 2.1
A orgaruzação de wn computador Slmples com wna CPU e doIS disposlnvos de
EIS.
.....
UrlIdacie
Intl'!'létlca (ALU)
[nJ DO
DIspoIitrws de EIS
Mell'lÓna principnl
Disco
ImpresSOfll
II
II
Jl
DO
Barramanltl
29
o
M
••"o ~
•
"5
~
o u
•
~
•
~
•"
=
•
~
o ~ ~
•
"
o
•
~
o
o rcgistmdor mai), importante I:! o Contadtlr de I'ru;.:r.lma (PC _ jnslrU~l{)
l'rllgr:ull Countcr). que indica :\ próxima
a ser husc:lda paro.l cxccm;ão, O nome 'c\lntador de progr.mllt' t! um 1:111\0 enganoso. porque de n:Jua tem
que ver com (:m r/ar qualq uer coisa: porém (} temlO ê lIc liSO univasal . Também impurtantc é () Rcgislrlldor d e Instruçuo (IR - Illstructioll Rl.'gis tcr), que contém a instrução que está senuu cxcr.: utada no momenlO em questão. A maioria dos cOlllpuladorcs também te m diversos outros registradores, alguns de uso gcral. outros de uso
específico.
2.1.1 Organização da CPU A QI",pniz:l.çãu interna de parte de umá tfpica CPU de Von Ncumann ê mostr;lda na Figura 2.2 com mais detalhes. Essa parte ê denominada cuminh u de dados c é composta de rcgiSlr.ldores (nonllaJmcntc I a 32). da ALU ( Ullid~dc I-Áígica c Aritmética) e de di verso:; barramentos que cnnectnm as peça.~. Os rcgistmdores alimentam doi:; regisLradorcs de entrada da ALU. represen tados por A c 8 na ligura. E s~cs registradores contém a t!ntrada da ALU en4~nl o da está executando alguma opt!ração de cmnpul:Jção. O caminho de dados t! muito impon:lIllC em todas as máquinas e nós o discutiremos minudosaml:nte em todo este livro. A ALU em si efetua adição. sublmção e ouLras opcmçi'ies si mples sobre suas I.!ntr.ldas, produzi ndo assi m um res ultado no registrador de s
1 ",oo••
A
R•••
, Jl
Rgura 2.2
Jl,
A
O caminho de dados de uma tipica maquina de Vo n Neumann .
Jl---Berfllm lll"lto 00 entrada da ALU
Jl
/
\
\
ALU
/
Jl I
.. _ _ Regislmdor de erllmde da ALU
A.,
1-
Regi-slrador 00 salda da ALU
. II 2.1.2 Execução de instrução A CI)U eXI..'·c uta cada instruçãu em uma !iêrie de pequenas etapus. Em te nHOS simples. as etapas são
:IS
seguintes:
Tr.t~cr
a próxi m;J inSLruçãl) da memória até \) registrador. Alte rar o contador de.! programa par.t indicar a prüxima inslnJção. 3_ ~tc nninar O tipo de inslmção tr..lZÍlJa. 4. So.: a insLrução usar uma pal:lvra n;.l mem6ria. detenninar undc CSS:I palavra está. 5. TrJ7.e r :L palavr.J pam dentro de um rcgiS1r.ldor da CPU. se necessário. 6 _ Executar a ins lru~ilo. 7. Vo har à etapa I par-..l inidar :t execução da instrução seguinte. I.
2.
L
public class lnterp ( static int PC; static int ,.l,C; stabc Inl r.str; static In! instUype: static int dala_loc; static inl data; slallc boolean run bit '" Irue:
/I contador de programa conlem endereço da prÓl(lma inSlr /I o acumuJadQr. um registrador para efetuar antmetica /I um registrador para conter a Instrução corrente "o tipo da instrução (opcode) /I o endereço dos dados. ou· I se nenhum 1/ contém o operando corrente 1/ um bit que pode S9r desligado para parar a máquina
publlc slatic void Interpret(inl memória{ l. int starting. address) { 1/ Esse procedimento Interpreta programas para uma máquit\8 simples com instruções que têm " um operando da memóna. A máqUina 1em um registrador AC (acumulador), usado para /I 3.ritmelica. A instrução ADO soma um inteiro na memória do AC, por exemplo. /I O interpretador continua funcIOnando atê o bit de funCIOnamento ser desligado pela InSlruçlo HALT. /I O estado de um processo que roda nessa máquina consiste em memôria, /I comidor de programa. bit de funcionamento e AC. Os parâmetros de entrada consistem " na Imagem c1a memória e no endereço Inicial.
PC ., s taninS-,address: while {run_bit} ( Instt ;; memory[pC); PC:PC+ I ; InstUype ;; geUnstuype(lnstr); dala_loc;; Iind_dataQnst(, Instr_type): 1I (data_1oc >: O) data ", memorvidata Jocj; exocule(instUype. data): J J privale slatic inl geUnstr type(int addr) { ... } privale static inl firn:Cdala(lnl Instr. Inl type) ( ... ) pTlvste statlc vold execute(int Iype, int data) { ... }
/I busque a próxima instrução e armazena em instt /I incremente contador de programa /I determine tipo da instrução I/localize dados (·1 se nenhum) 1/ se da ta_loe é -1, não há nenhum operando /I busque os dados /I execute Instrução
Interpretador para um computador simples (escnto em Javal.
E:~sa seqüêncil de etapas costuma ser denominada ciclo busc.ar·decodificar--c..xecutar. É fundamental pam a op:rJ.ção de todos os computadores. Essa dcscrif.::ão do modo de funcionamento de uma CPU é muilo parecida com um programa est.Tito em inglês, A FigurJ. 2.3 mostra esse progr.ml41 infonnal reescrito como um método Java (isto é, um procedi mento) uenommado intuprt'l. A máquina que c!u:i seodo intcfllrctada tem dois registr.ldores visiveis pam pmgrJ.mas usuários: o l:oOlaUor de programa (PC), para controlar o endereço da próxima instrução a ser hlL'.cada. e o :u.:umulador (AC) para acumu· lar result:tdos aritméticos. Também tem registradorc... intcrnos parJ. conter a instrução corrente durante SUil execução (Inslr), f,) tipo da instrução comnte (instClYpe), o endcn.-ço do operando da instrução (d8taJoc). e o npcr:mdo cOITCnte em si (data). Ad mitimos qUI.: as instruçôcs contêm UIll único endereço de mcmória.}\ localização de memória ende· rcçada contém o opemndo, por exemplo. () item de dlldo a adicio nar no acumulador. próprio rato de ser possível e.'\Crever um pmgrJ.llla que pode imitar a função de uma CPU mostra que um progmma não pn.:cisa ser exccutado por uma CPU de 'hardware'. formada por uma caixa cheia de dispositivos eletrônicos. Em vcz disso, um progrJ.ma pode ser eXI.!cutado fazendo com que um outro progmmll busque. I!xamine e exccute suas instruções. Um progr.una {cumo o da Figura 2.3} qUI! hU$Ca. examinll e I!xt..'Cuta :1... instruçi>es de um outro programa é denominado interpretador. como mencionado no Capitulo I. Essa equivalência entre processadores de hartlwai"\! e interpretadores tcm importantcl> implicaçõcs parJ. a orga· ni/..a~.àtl de computlldorcs e para 11 projeto de ~ istemas de cllmputat!ort!s . Após .1 . . spccilicaç:l0 da lingu:lgem de m:iquina. L par.! um novu cnmplllauur. a cqldpe dI! pro;C\(l pode decidi r ~t! " uer ennMmir um proce~ s:lIjor de han.l· wa rc para executar programas em L direlamelltc ou '\C qucr escrever UIIl interpretador parll imerprcl:\( progr.uuas em !.. Se a equipe preferir escrever um interpretador. t.o..mbém dcve providenciar alguma llI,íquinu de hardware para exc· CUl:lr o interpretador. Também ,,;lo possivcis eerlas c0l1s truçL1cs hibrid:ls, com um poueo de cxe~w.;il.o em hardware, bem corno alguma i nterpreta~ãn dc "ot)wnrc. Um interpretador subdivide as instruçõcs da m:1q uina I!m quest:1o em pequenas ct:lpas. Por conseqüência. a m:1qui nu nll qual o interpretador roda deve ser muito muis simples e ml!nos cara do que ..cria um processador de hardware parJ. a m:iqui mt citada. Essa economia I! especialmente signilicativa 10e :l máquina em qucstão tiver um grJ.Jldc número de inslruçõcs ...: as 1Il5lruçõcS forem r.lL.uavclmentc complicadas. com muita!> opçõcs. Em essência. :t economia vem do ralU de 'Im! I) hanlware e.~t<Í sendo sub~lituídn por soliwarc (o intcrprcltldor) c reprod uzir hard· ware custa mais do que reproduzir software. Os primciros computadores tinham conjuntos dc instruçõcs pi!l.juenos. simples. Mas a procurJ. porcomputauores mais poderosos levou. cntrc n utras coisas. :t instruçik:s inui viduais mais poderos:ls. Lugo descohriu·se que instruçcks mais complexas muitas vezes levavam à cxecuç:Io mais r.ípida do progmma mesmo que as instruções illlJi· vidullis dcmorassem m:lis p'lra ser exccutada.~. Uma inslruç,io de llOnto n utuantc I! um cxemplo de instrução mais complexa. Supune direto pum acess:!relcmcntos matriciais ê uutro!. Às vezes era simplcs como observar que as mes·
a
••o
-
~
• •
~
E o
~
•
~
••e • •
;;;
J FIgura 2.:1
-
M
•
~
'•". •• o
~
=
o
N
o o
N M
·• o
~
•, ~
E o
u
• • •
~
~
c
•
~
o
mas duas instrtll,;iks fn:qi.lcnlclll\:ntc ()Comam em scquénr.:ia. ponamo uma única insU'ução poderia fazer o lr:I.balho de ambas. As instruçilcs mais complexas Ci..un melhores porque a cxccu~ao de opcru....-õcs individuais às vezes podia ser sobreposta ou e ntão cXL"Culada em par:.tlclo usando hardw:lTC diferente. Nu caso de t.:ompuladorcs caros. 1.11.: alto desempenhu, o custo dcssc hardware extra ptxlcria ser imediatamente j ustilicado. Assim, computaJorcs caros, de :1110 desempenho. paSsar.lffi a tcr mais instruçõcs do que os de custo mais baixo. Contudo. o custo crescente do desenvolvimento de SO nW:lrc c requisi tos de compatibilidade de instruçf)Cs criaram :\ necessidade de imph.:mentar inslru<;lies compl cx:L~ mc~ mo em compu tador:! de Ixti xu c usto nos quais o c usto cro! mais impon:.ulLC du que a velocidade. No final dil década de 1950. a IBM ( na época a empresa que dominava o setor de computadores) percebeu que prestar suporte a uma únic:\ famflia de m.íquinas, todas CX(.'Çutando as mcs mas instruçiks. linhu muitas vantagens. tamo par.. :.L IBM quanto par,! .seus cliente.',. Então a cmpn.."Sa introduziu o tcnno urquitctur.a par.! descrever esse nível de compalibilidaue. Uma nova f:Lmília dc computadores terb uma StS arquitet ura. mas muiw implcmenuçõcs diferenles que pocJeriaflL e.'(I.'Cutar o mcsmo progr:una e seriam diferentes apenas em p~o e velocidade. Mas como cunslrUir 11m compmadnr de b;Jixo c u~to que poderia c.'(ccutar todas as clll1Lpl ie:.Ldas ins\.nLçõcs de m:iq uinas caras. de alto desempenho'! A resposta e ra a interpretação. Essa técnica. que já tinha ,;ido sugerida por WiJkes ( 1951 ), pennilia o projeto de computadores simplcs e de menor cu:.to. mas que, mesmo assim. podiam executar um gr.tnde númcm dc inslrUIjõcs. O resultado foi a arquitctura IBM Systeml360. uma Família de eomputadof'C.'I compatíveis que ab rangia quase dua.'I ordcns de grnndeza. tanto em preço quanto cm capacidade. Uma implementação de haroware direto - isto é. ml0 interpretado - er.! usada somenLC no .. modelos mais caros. CompuLadorcs simples com instnJljõcs inte rpretadas também tinham outros benefícios, enrre os quais os mais imponamcs eram
I •
A capacidade de corrigir em e:llnpo instruções implemelllada... incorretamente ou até compensar delicicncias de projeto no hardware búsieo. 2 . A opnnunidade de acresccntar novas instruçõcs a cus to mínimo, mesmo após a entrega da máquina. 3 . Projeto estrulur.ltro que pcnnitia desenvolvimento, tes te c documentação eficientes de instruções complexas. I.
À medida S mai,; caros c de desempenho mais ulto, (.'Orno o Cr.ty-I e a série Cybcr da COJ1lrnl Data. 1\ utmi'.:LçãO dc 11111 interpretador diminava as limitaçõcs de custo ine~nles às instruçik:s complex3.'!, e as arquitclurJ..'I começaram a explorar ins truções muito mais complexas. em particular os modos de espl.'cilicar os operandos a utilizar. A tendência alcançou seu ponto mais alto com o computador VAX da Digital Equipmenl Corporalion. que ti nha várias centenas de instruçõc." I! mais de 200 modos diferentes de especificar os operanJos a serem usados em c:Llb instnlção. Infdizmcnte. desde o inicio a arqu ite tura do VAX foi concebida par.. ser implementada com u.;. interprel:ldoT. .sem dar fIluir..a ate nç:io à implcmentaç:in de um nuxlclo de alto desempen ho . E."'IC modo de pensar resultou nu inclusãu de 001 mimem fIluito gr.ande de in'itmçôes de valor marginal e qoe eram dilTceis de ClteCUlar direL:lJuc nle. Es~a llmissi)l) mostrou ~cr f:.Llal par:1 () VAX c. por lim. tambem para a DEC, .\ Cump:.LlJ ":OlllproU J OEC em I'NK e .. Hewlcu-Pad:anJ comprou a Compa"l em 2001 . EmhuTa os primcirtls microprocessaJores de 8 bits fossem máquina ... muito simples com conj untos ue ins1ruçi'lcs muitu simples, no tinal da déc:.Lua dc !970 até os microprocessadores tinham pass.'ldo par.a projetos bu.'reados em interpretallor. Dur:mte esse perftldo. um dos maiores desafios cnfrent.:ldos pelos pmjetistas de microprocessadores 1!f'J lidar com a crescente cOl11plcxidaJe possível por meio de circuitos integrodos. li mil imponante vantagem da abordagem bascatl:t em interprct:uJtU cr.a a capacidade de projetar um procesluwor simples e cunfi nar quase toon a complexidade na memória que continha " intcrpretador. A s~ im . um projeto complc;<() de hardware se tr.ansformou ,,;m um proje1o cmnplexo de ~o ftw:trc . O ~ ucc."SO do Motorola 68000. \.{ue linha um grande l.'Onjunto de instruçôcs intcrprel:ldas. c o concomi1ante frnC~ISSO do Z ilog 7.8000. que tin ha um conjunto de i n~ t1Uç()es igualmcnte grJnde, ma... sem um interpretador. demonstr.ar.. m as vantagens de um intcrprct.:ldur para levar um novn mkruprocessador rapidamente ao mercado. Esse ~lICCSSO Foi ..inda mais ~ urpree ndcnte dada a vamage m de "lue o Zilog desfru ta va (o an tecessor do Z801Ml, li 7.80. era muito mois popular do que o antecessor do 68000. ti 68(0). Claro "luc outros fatores também contribuírnm parJ isso. e um dos mais impClnanLCs foi a longa IlIstória da Motorol:! como fabricante de chips c a longa história da Exxon - pruprk'" tária tia Zi log - eomo empresa de pelrt'lleo. c m}1) ..:omo fabricante de chips.
I •
_ _ _ _ _ _ _ _ _ _ •• •••• ,11111 " •• • " ' ., 1111' •• ' •• " 1' ''1 11111II
II
L
Um outro fator a favor da interprctalfão naquela época foi a existência de memórias rápidas somente de 1citur.1. denominadas memór;;L'i de contr ole. par.! I,;Onler OS interprctadon.:s. Suponha que uma instruçào interpretada úpil,;a precisa.'\SI,; de 10 instrulfõcs 1.10 inll,;rprctador. denominadas microins[fuçiks. a 100 ns cada, e duas referências à memória prindp
/
2.1.3 RISC versus CISC Dur.lIltc o final da década de 1970 houve experimentações com instruções muito complexas que eram possibilitadas pelo interpretador. Os projetistas leolavam fec har a 'Iacuna sem5ntica' Cnlrc o que a.~ m6.quinas podiam fazer e o que a.~ linguagens de programação de alto nívd demandav:ull. Quase ninguém pensava em projetar máquinas mais simples, l!Xatámcnte co mo agorJ não há muita pesquisa na área de projeto de sistemas operacionais, redes, processadores de textos etc. menos po
•• o
~
•
•
~
eo
u
• ••e •
~
;;;
•
~
'.• o
~
N
C
•
~
o
N
o
• " u•
...
'" ••
o
~
• •
~
E
o u
• • "• • ~
•
o
•= ~
o
2.1A
Principios de projeto para com putadores modernos
Agor.1 que já se passamm mais de du"s décadas desde que a.~ primeiras máquinas R/Se fomm lanç!lI.l:is. ccr· tos princípios de projeto passai.lrn a ser accilOs cumo um bom modo de projetar computadores. dado o estado :!tua! da tecnologia de hardware. Se oco~cr um:1 impon:lI1tc mudança na tecnologia (por c:
Todas as instruções são executadas diretamente por hardware Toda." as instruções comuns são eXeCUUlf.lllS diret:I.lTIcllIe pelo h"rdwarc - não são interpretadas por microinstruçõcs. Eliminar um nívd de interprctaçiio dá aha velocidade à maioria das instruçõcs. No caso de comput:lliores que implementam conjuntos de instruções CISC. as instruçücs mais complexas podem ser sulxlivididas t:m panes scpur.ldas que então podem ser executadas como uma seqüência de microi nstruçõcs. Essa elapa t:xtra faz com que a ffi:iqu ina lique mais lenta. porém, para instruçõcs que ocorrem com menos freqüência. isso pode ser aecilávl!!.
Maximize a taxa de execução das instruções Computadores modernos recorrem a muitos truques parn maximizar seu desempenho. entre os quais o principal é telllar iniciar o máximo posdvel de instruções por segundo. Afinal, se você puder emitir 500 nli lhõcs de instruçôcs por segundo, terá construído um proccssador de 500 MIPS. não imponandoquanlo t~lIlpo as instruçôcs !'Cal· mente levem para ser concluídas. (MH»S quer dil.er Millions 01' Instruclions per Sccond - milhôcs de instruçõcs por segundo: o processador MIPS recebeu esse nome como um trocadilho desse acrônimo). Esse prindpio sugere que o paralelismo pode desempenhar um imponanle papel na melhuria do desempenho. um!! vez que emitir grnlldes quantidades de instruções lentas em euno intervalo de tempo só é possfvel se várias instruçõc,,, puderem ser exe· cutadas ao ffiCsmo tempo. EmborJ as instruções sempre sejam encontr.ld:lS na ordem do programa. nem sempre elas são executadas nessa mesma ordem (porque algum n.-curso necessário pode estar ocupado) e não precisam tenninar na ordem do programa. É claro que, se a instrução I estabelece um registrador e a instrução '2 usa t:ssc rcgistrlldor. deve-se tomar lIluito cuidado par.t garantir que a iustruçào 2 não leia t) registrador até que cle contenha () valor correto. Fazer i~so funcionar direito requer muita contabi lidade. mas tem potencial para ganhos de Ucscmpenho por executar várias instruções ao mesmo tempo.
instruções devem ser fáceis de decodificar Um limite critico parn a taxa de ~missao de instruçõc''' é ::t decodificação de instruçõcs individuais para determinar quais rt.'Cursos elas necessitam. Qualquer coisa que possa ajudar ne.~se processo é útil. Isso inclui f:v.cr instruções regulares. de comprimento lixo. com um pt."queno número de campos. Qu:mto menor o número de t'Onllatos diferentes par:l as instruçtks. mdhor.
Somente LOAD e STORE devem referenciar a memória Um dos modos mais ~ i ll1ples de subdi vidir operações em IJtapas 'icpnraclas é rcqut!rcr que os opemndos parn a maioria das instruçl)cs venham de registr:ldores da CPU .: a eles retomem. A operação de movimenta(f:l0 de oper.:mdos da memória para registradores pude sc.r executada em instruções scpar.tdas. Uma vez que o aCl!s~n à memória pndl! levar um longo tempo. e 4ue Il atmsfllÍ imprevisfvel. II melhor ê ~oh re p o r C!lsas instruçiks:t outras ~e das natla tizcrcm c.'(ee!n movimentar npcr:mdns ent re rcgLst r:lltll!'Cs c memória. ES.·m nh'erv:u.:ill ~ i gni lica que ~()me nte instruçt1cs LOAD e STORE devem referenciar a memória. ToJ:1S as outr.\S instruçtJcs devem opcr.lr somente em registrndores.
Providencie bastantes registradores Visto qUI! \I :leesso à mcrmíria é rcl:uivumcntc lento. é prcci.~o providenciar muitos registradores (no mínimo 32) de modo que. assim que uma palavra I't)r huseaeJa. ela possa ser mantida em um registr:ldor :IIé não ser m:lis nceessâna. E'iglllllr os regislraJores e ter de descarregá-los de volta à memória só par.t ter de recarregá-los mais tarde é indesejável e deve ser ev itado o máximo possfvel. A mctbnr maneirn de consegUIr isso é ler um número .~uli ciente de registradores.
2.1.5 Paralelis mo no nível de ins trução Arquilelns de computadores estão sempre se esforçando pam mclhorJ.r o desempc.nho das máquinas que projetam. Fazer com que os chips fu ncionem com maior mpide7. aumentando suas velocidades de relógio é um mudo. mas. paro cada nuvu prujelO. h::i um limite:lo que é po~sívcl fazer !Xlr força bruta naquele momento da rustória. Por
L
conscqüêm::ia. gr..mde pane dos arquitetos dc computadores busca o pamlclismo (fazer duas ou mais coisas ao mesmo tempo) como um mcio de conseguir desempenho ai nda melhor parJ dada velocidade de relógio. O parak:l isnm tl::1O duas formas gerais. a saber, (Jaraldismv /lO /lível de insrnfçuu c paralelislllo 110 nível de pnx:e.uacivr. Na primeir.!, {} paralelismo ê explorado dentro de instruçÕCo'i individuais par.J obter da miÍquina mais jnslnl!;õcs por segundo. Na últimil, várias CPUs trabalham j untas no mesmo problema. Cada abordagem tem seus próprios méritos. Nesta seção vamo~ cSlud;tr o paralelismo no nível de instnH;ão; na seção seguinte. estudaremos o par.llelis!TIo no nível de processador.
"''" ••o ~
~
Pipelining Iparalelismo) HiÍ anos sabe-se que o processo de busear inslruçõcs na memória é um grande gargalo na velocidade de execução da instruçüo. P:tr.J :U11eni7..ar esse probkma. os computadores, desde o IBM Strctch (1959). tinham a capacidadc de buscar instruções na memória alllecipadamente. de maneira que estivessem pre...cntes quando necessárias. Essas instruçõcs eram :l.mlazenadas em um conjunto de registradores denominado Dufl'cr de busc:J antL"Cipadu (ou prefétch buj}'er). Desse modo. quando neccssária. uma instrução pod ia Sl!r :l.panhada no buJTer de busc:l :llllcdpada. em vez de esperar pela conclusão de uma Icitura da memória. Na verdnde. abuse:!. Uflteelpodn divldc a execução dn instrução cm duas prutes: a busca c a execução propriamente ditas. O conceito de pipe/i" e (par alel ism o, tubulação) ampU:l muito mais essa estrntégia. Em vcz de dividi r a execução da instrução em apenas duas partes. muitas vezcs ela é dividida em muitas partes (uma dúzia ou mais), cn.da lima mani pulada por uma parte dedicada do hardwure. c todas elas podem executar em paralelo. A Figura 2.4(a) ilustra um pipcline com cinco un idades. também denominadas estágios. O estjgio I busca a instrução na mcmôria e a coloca em um buner até que cta seja nt.'·c cssjriu. O estágio 2 dcçodiJica a instrução. determina seu tipo e de quai~ operandos ela neçessita. O estágio 3 localiza e busca os operandos. scja nos rcgiSlr:ldore.~. seja nu mcmória. O c,stiÍgio 4 ê que realiza o trabalho de executar a instrução. normalmente fazendo os operandos passar pelo eami nho de dados da rigur.! 2.2. Por rim. o estágio 5 escreve o resultado de voha no registrador adequado. Na Pigllra 2.4(b). vemos corno o pipel inc fu nciona em função do te mpo. DllrJnte o cido de relógio \, o est:ígio $ I est:í trabalhando na instrução \. buscando-a na memória. Durante o ciclo 2. o eslágio $2 deeodifica a instrução I. enquanto li estiÍgio S I busca a instruçào 2. DurJnte o ciclo 3. o estágio S3 busca os opc:randos para a instrução I. o estágio S2 decodifica a instrução 2. e o estágio $ I busca:l. terceim instrução. Durallte o ciclo 4. o e~lági() S4 \!)(ecuta. a inslrução I. S3 busça os opl!r..mdos para a instrução 2, 52 decodifi ca a instrução 3 c S I busca a inslrução 4. Por fim. durJllte o ciclo 5. S5 escreve (grava) li res ultado da instrução I de volta. no registr.1dor. enquanto os oulTOS esclgios trabalham nas inslruyõcs seguintes. Vamos considerar uma :malogia pam esclarecer melhor o conceito de pipcli ning (paralelismo). Imagine uma f:ibrica de bolos na qual a operação de produçào dt>$ bolos c a {lper.Jção de embalagcm para expedição são separadas. Suponha que o dcpartmncnto de expedição te nha urna longa esteira transportadora ao longo da qual tmbalhUln cinco fu neion:írios (unidades de processamento). A cada 10 .~cgu ndos (o dclll de reI6gio), o funcionário I coloca uma t.'mbalagcm de bolo vazia na esteira. A cnixa 6 transportada :lIé o funcio fl ário 2, que coloca um bolo dentro del;\. Um pouco mais tarde, a caixa ehcgn nn estulfão do fu neioniÍrio 3, onde': fechada e selada. Em seguida, ela prossegue até o fu nciOll jrio 4. que coloc:l uma etiqueta na em balagem. Por fi m. o funcionário 5 reti ra a caixa da esteira e :I eoloca em um grande {.'ontéiner que mais tarde scrá despachado para um supermercado. Em termos gerais. e.'ise é o modo como um pipeline de computador também funciona: cada instrução (holo) passa por divcr.;os e~tjgi os de processameJllo antes de aparecer jj concluída na exrrc midade linal. Voltando ao nosso pipcli ne da Figura 2.4. suponha que o tt.: rn po de çiclo dt.'ssa máquina sej; 2 ns. Scndo assim. uma instmç:!o leva 10 rl.~ para percorrer toJo o caminho do pipcli ne de cinco estágios. À primeira vista, como lima instnlç:lo dcmora 10 n~. p:lTCCC que a máquina poderia funcio nar em 100 MIP5. mas. na verdade. cl :l funciona muiHl
..
Unidade do
""~
Instn.ção
83
52
i-
UnldMe de de!;ouiHcação do Instrução
-
"""" "
"",modo
51 ;
52,
~
i-
(.,
R.u nlU
lal Pipeline de cinco estágios. (bl Estado de cada estágio como urna função do tempo. São ilustrados nove cic:los de relógio.
85
Umda06 de
Unidade de axecuçâQ lJa l/lStruç.'io
0
~
83,
"', 85,
2
3
,
, Tempo ("
_
7
, ,
f-
Unidade
"
gravaç.ão
•• S
• •
,;;
•
~
o ~ ~
• N
•
~
o
N
o
•'" "
«J
/
'" •o•
·•
~
= ~
E o
u
• • •
~
~
= =
·•
~
o.o
~
• •= N
·=
o
melhor do que isso. A cada ciclo de relógio (:! ns), uma noY.l instrução é concluída.. p<>nanto a velocidade real de processamento é 500 M1PS. c não 100 MIPS. O pipclining pcnnilc um compromisso entre latência - o h:mpo que dcrnor.l para executar uma insuuçãoe largur"'J de hundll de processador _ quantos MIPS a CPU te m. Com um tempo UI! cido de Tns c /I estágios no pipclinc. a latência I! nT n:mosscgundos porque cada instrução passa por n csW:~ios, cada um dos quais demorJ 7' os. Visto que ulIla instruça\l é concluída a cada ciclo de relógio e que há 10 fl' ciclos de relógio por segundo. o número de instruçues cxccul:lllas por segundo c! 109n', (lor exemplo. ~c T "" 2 IIS. 500 milhõcs de instruçõcs são executadas a caU
Arquiteturas superescalares Se um pipeline é bom. então certamente dois pipelines é ainda melhor. Um projeto possível parJ. uma CPU eom dois pipe!ines. com base na Figura 2 .4. é mostrJdo nll Figura 2.5. Nesse caso. uma única unidllde de busca de instruçõcs huscu. pares de instruções ao mesmo tempo e colocu. cada uma delas em seu próprio pipeline. completo com sua própria ALU pam operação paralela. p.J.m poder exccutar em par:tlelo. as duas instruções nlo devem ter cont1 ito de utili:t.ação de n.'C ursos (por exemplo. rcgistrJrlorcs) e nenhuma deve depender do resultado da outrJ.. Assim cumo em um pipdine único, ou o compilador deve garantir que essa situnção aconte(fa - iSlo é. () hardware não verifica e dá resultados incorretos se as instruçõcs não rorem compaLIvds - . ou os conllilos são deleelado$ e eliminados durante a cxt."Cução usando hardware extra. Embora pipclincs, simples ou duplos. sejam usados em sua maioria em müquirlUs RISC (o 386 e seus antecessores não tinham nenhum), a partir do 486 a Intel começou a acrescentar pipclines de dados em ~mas C PUs. O 486 tinha um pipcline e () Pentium original tinha pipeJines de cinco estágios mais ou menos como os da FigurJ 2.5. embom a cxata divis:l0 do tmbalho entre os estágios 2 e 3 (denominados dccooe· 1 e decode-2)crJ ligeimmemc direrente do que em nossu exemplo. O pipcHne prim:i pal. dc nomin::tdo pipelinc u . podia cxccular uma instrução Pentium arbitrâria. O segundo pipcline. denominado pipeline y. podia e.1ecUlar apena.'i instruções com números inteiros (c também uma instrução simples de ponto nutuante - FXCH). Regras tixas delemlinavam se um par de instruçõcs era I.:ompatíve l e. portanlO. se elas podiam ser cltccutadas em pilrJ.lc!o. So.: as instruçõcs em um par não fosse m simples o sulicientc ou fossem incompalÍvcis. somente a primei.J. erJ. executada (no pipeJine u). A ~g unda cm retida para fa:t.cr par com a insU'ução seguinte. Instruções erJ.m sempre executadas cm ordem. Assim. os compiladores específicos pum Pentium que produziam pares compat!veis podiam produzir progrJma.~ de eltcl.:ução mais r.i.pidos do que compiladores mais antigos. Mediçõcs mostrarum que um código de exccução Pentium otimizado para ele era exatamente duas vezes mais rápido para programa.~ de inteiros do que um ·n16 que executava à mcsma velocidade de relógio (Pount:lin. 1993). Esse ganho pOO:ia ser atribuído inteiramente ao segundo pipcline. I)a.~sar parJ. quaLrQ pipdines era I.:om:ebivd, mas exigiria duplicar muilO hardware lcientistas da computação. difere nte de .:specialisms em folclore, não acrcdiw.m no número três). Em vez disso. uma abordagem diferente é uolií'.ada em CPUs de topo de linha. A idéia básica é ter apenas um unico pipe/inc, mas lhe dar várias unidadt!S funcionais. como mostrJ. a FigurJ. 2.6. Por exemplo, o Pentium II tem uma eStrutura semelhante à dessa figura. que ser.i. discu tida no Capítulo 4. O tenno arquitetura s uperescJ.htr roi cunhado parJ essa abordagem em 1987 (Agerwllla e Cocke, 1987). Entre tanto. suas raízes remo ntam a mais de 40 anos. ao computador 6600. O 6600 buscava uma instrução a cada 100 ns e a passava para uma das 10 unidades funcionais pum exccu(fão parJlela enqu:UJto a C PU saía em busca tia prüxima instrução. A ddfi niçãu de .wpatm:alar cvoluiu um pouco ao longo do !emlX). AgorJ ela é usada para descrever proces· ~adorc s que c.~er.:utalll múltipla.~ instruçl)cs - fn.'qilcntc mente quatro (lU scis- em um unico r.:iclo de relógio. Claro que uma CPU supercscalar deve ter vária:. unidades fu ncionais para as quais passar torlas c~as inst ru~ões. Uma vez que. em geral. u~ prnce~sadorc~ ~ upcrc~calares têm um ",í pipcline. tCIlI.lCIH a .;cr parecidos com O~ da FigurJ. 2.6. U)klnuo e:'>~a JctiI1U,:lIJ, u h6(]() nâu l:ra tcc /lll.:amentc um , upcn:scalar rurqUI! emitia sorncnll' ulHa in~!nH.;:ln por ciclo. T(xlavia. {) dei to em quasc u mesmo: i n stnJ~ties eram terminadas em uma t:LX" muito 11I:lis alfa do que podiam ~er cltecu lad a.~. 1\ difcren(fa entre ullla cru com um rclógill tle 100 ns 'lUC executa urna inslrw,:ão a cat..!:1 I.:ic!n parJ. um grupo de unidades funciooa ts e uma C PU com Uni rel6gio de 400 ns que eXt.'cuta quatm mstfU1i'Üc:; por Cicio para o mesmo !,,",,pn de unidades funcionais ~ muito pi...'quenn. Em ambos os casos. a idéia rundam..:nt:ll ~ 'lUC l taxa tinal e murto mais alta du 'lue a taxa de execuç:l0. sendo a carga de trab:llho distribuída ":lUrc U1I1 conjunto de uni· dades funCIOnais.
coe
n..,.. 2.5 Pipelines duplos de cinco estâglOs com umll unidade de busca de mstruçào em comum.
"
Unidaóede
Unidade de bl.l!lC3
"'"
de
!ns1r~O
--
UnodaOede
de IfJSlruçàO
55
53
- ~-'" """ " -~~;}1u;::adel "",m""" Ul'lI(ladede
"""'do
"""""'"
-
urnoade de
""'""
,,~;""'"
I - ""-,.
.-
"-U
•
,• o
~
Figura 2.8
Processador superescalar com cinco unidades funClOna15.
52
53
coeccxifk:açào Unõdade de
~OIdade de
51
I
o:Hl ÍMIfUçOO
r-
ru=~
1/ t--
""'-
\\
,•
ACU
'\' LOAO
STOAE
-
~
• o
u
55
• •• 8 •
~
Undod. do """,000
/,
•
~
•
~
o
-
~ ~
• N
C
•
~otuaI\te
,
~
o
Implícito à idéia de um processador superesc:tlar é que o cst~gio S3 pode executar instruções eom mpide1. con· maior do que o estúgio S4 ~ capaz de cxccUl~·las. Se o eSLÚgio S3 exccuUlssc uma instrução a cada 10 os,c todas as unidades runcio nais pudes.~em re:tlií'..ar seu trabalho em 10 os. nunca mais do que uma unidade esta· ria ocupatb :10 mesmo tempo. o que negaria todo o raciocínio. Na verdade, grande pane das unidades ru ncionais no estágio 4 leva um tempo eonsidemvclmcnte maior do que um ciclo de relógio par:!. eXl."Cutar. certamente aquelas que acessam memória ou efetuam ariunctica de pomo t1U1uame. Como pode ser visto na ligur:J. é possível ter várias ALU no tágio S4. s ider:Jvel m~mc
2.1.6 Paralelismo no nível do processador A demanda por compUlldores cada vez mais rdpidos pan.."Ce ser ;ns:leiável. Astrônomos querem simular o que aconteceu no primeiro mierossegundo após u big Illln,t: , I!conomistas querem modelar a economia mundial c adt>leseentes querem se divertir com jogos multI mídia enl 3D enIO :;eu amigos virtuais pela Internei. Embora·as estejam cadu vez mais r.1pida.~. hllvern um momento em 4ue cI:I.ll tl!rão problemas com a velocidade da luz. o que provavelmente acontecem u 20 cm/nanosscgundo em fio de cobre ou libra ótica, nilo imponando o grdu de intcli· gêneia dos engenheiros da lnlel. Chips mais velozes também pnxluzem mais calor. cuja dissipaç:lo é um problema. Paralelismo no nível de instnlção ujuda um pouco, mas pipelinmg e opemç:lo supercscalal' r.lr:Jlllentc re ndem mais do que um rator de cinco ou dez. Para obter ganhos de 50. 100 ou mais. a línic:l. mancim é projetar computadores com várias CPUs: p«>nanto. agOr.l vamos ver como alguns deles siio organií'..!ldos.
crus
Computadores matriciais Um numero substancial de prdblcmas em c iênc l:l~ físicas e cngenharia envolve matrÜ:eS ou então tem cstru tu ~ de alta regularidade. Muita... veí'.cs. os mesmos cálculo>: s:io CfCUl:ldos em mu itos conjunms difercnles de dildos ao mesmo tempo. A regu lllridade e a estruturJ desses progt:lmas os tomam alvos e~p~cialmentc fáceis pam acele· raç;:io por meio de cXL"Cw,::io paralc!u. H:i doi s métodos (.j UC têm sido usados para cxecut:lr grandes pmgr:ullas eien· tflicCl~ rapidmncntc. Embura e:-.:.cs dois .:~ucma~ gu:uucm nUUlvcis M:melhaulfas na mainna de M!US a~pecLOs, iro· nicamcnte um dcle.~ é eonshJerado uma exll!nsão de um proce..~sador único. enquanto o outro é cOllsiderJ.do um eomputador paralelo. Um pnKcss.adtlr malrici:11 consiste cm um grJnde númem de processadores idênticos que efetuam a mcsma M!qUência de instruçõcs em diferentes ennJuntos de dados. O primeiro processudOl' m:llriciaJ uo mundo foi () ILLlAC IV da Un iversidade de lIIinois. ilusLmdo na Figur:J 2.7 (Rouknight el :.11 .. 1972). O plano ungin:ll Crd cOllstrui r uma máquinõl que consistisse em quatro quadrJ.ntes. cada um dcles eom uma gmdc quadrJ.da 8 X 8 de dementos de processador/memória. Uma única unidade de controle por 4uadr.mle trJ.lIsll1itia instruçõcs. {Jue emlll efetuada.>: no mesmo passu por todos os processadon:~. cada um uS
N
o o
•
u
co
Unidade de controle
'"
••c
~
•
"e
~
fig ura 2.7 ?rocessador matricial do tipo IllJAC IV.
c u
• • •
~
~
-""•
~
'.• c
~
N
•= ~
o
BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB P~_. .,--- B B B B B B B B :aBBBBBBB """'ria / ' B B B B B B B B BBBBBBBB
Grade process.ador/mel'!lÔna 8 x 8
Para um programador, um pr ocessador vetorial se parece muito com um procé~sador mly Research agora é parte da Sal). Processadores matriciais, bem como processadores vetoriais. trabalham com matrizes de dados. Ambos exec utam instruçõcs úllleas que, por exemplo, somam os demelllos ;LOS pares par.! dois velores. Porém. t:nquanto o process:J.dor matricial faz isso eom lant01\ somauorcs quantos forem os elementos do vcttlr. o proccssador vetoriallem o conceito de um rcgistr.!dor vetu ria l, que consiste em um conjulllo de registradores convencionais quc podem ser carregados eom base na memória em uma única instrução que. na verdade, os carrega scrialmcnte com base na ncmória. EnlJo. uma instrução de adição vetorial efctua as adiçcks par a par dos elementos de dois dcss~ vetores. a1imentando-os em um somador com parJ..lclismo (pipclined) com base em dois registradores vetoriais, O resultado do somadm é um outro vetor, que pode ser armazenado em um rcgisLmdor vetorial ou usado diretamente como um operando par...L uma outra operJ.ção vetorial. Embora ~LlualmenlC n:io haja nenhum processador matricial em produção, a idéia está longc de perecer. As instruções MMX e SSE disponíveis no Pentium 4 us!Un esse modelo de execução par.! acdcmr software de multimídia. Nesse aspecto particu lar. o ILLlAC IV t! um dos :mcestrais do PCl1lium 4.
Multiprocessadores Os elemento~ d ~ processamento em um procei>sador matricial não são CPUs indc~ndentes. uma vez que há uma só unidade de controle l:Ompartillmda par todo~ eles. NO~M) primeiro sistema paralelo com CPUs totalmente dcscnvolvida.s é o multiprocessador, um sistema I.:om mais de uma CPU que companilha uma memória em comum. como um grupo de pessoas que. dentro de uma sala de aula. I.:omp:uti lha um quadro-negro em comum. Uma vez que cada CPU pode ler ou escrever qualquer pane da memória. da... devem se coordenar (em software) par.! evitar que uma atrapalhe a outra. Quando duas ou mais CPUs têm a capacidade de interagir de peno. como é l) ca.~o do~ nmltiprocessadorcs. diz-se que elas são fortemente acopladas. Há v:irios esquema.~ de implementação poss rvei.~. O mais si mples é um barmmcnto único com várias CPUs e uma mcmória, IOdas ligadas nele. Um diagrama desse tipo de multiproct:ssador de barramento único é mostrado na FigurJ. 2.H(a). Não é preciso rnuÍlil imaginiILjào para perceber quc, com um grande númao de processadures velozes teman· do acess;1/" a memória pelo mesmo barramento. ~urgi rãtJ confli tos. Projc ti s ta.~ de Illultiprocessauorcs aprescnlar,un vürio~ e~I]Ll c mas para reduzir essa contenção c melhnrar \} desempenhlJ. Um ~Ics~cs esquemas, mostrJ.do na Figur.. L 1. H(M. d:1 " c:ldil pmcc~sador um pouco de memória 10c:l l ~Ó dele. 4ul! niiu t! :lccssivcl pilr.. L os llut rtlS. Essa mcmó· riu pod e ser wada para código de programa c para os i lCn ~ dc ~Iad\ls que não precisam ~er companílhuu\lS. O accs~ll 11 essa memória pri vn tJa não usa \J barramento princi pal. n 4UC red ul. muito o tr,írcgo nll harr:unento. Outros csqucm;L~ {por exemplo. caehing) lambêm sãu possíveis. Mamorias locais
\
...............
figura 2.8 Mamóna compaJ1iL hada
(aI Multiprocessador de barramento linico. (bl
Multlcomputador com memonas locais.
~5? (.,
Barmmemo
BarramenLO (b)
I I I
L
!
II I
Multiproccssadorcs têm a vantagem sobre outros tipos de computadores paralelos: é fácil trnbalhnr com o modelo de pmgrnmnçãn de uma únit.::l memória compani lhada. Por exemplo. imagine um prugrJ.ma que pmcura células cancerosas na f010 de :llgum tecido tirada por um microsctipio. A fOlogr.1lia digitalizada poderia ser mantida lia mem6ria em comum, sendo cada processador designado par.1I.!::lC;;:ar essa... célulus em ulgum
Multicomputadores
'" M
·• o
~
• "S
~
EmburJ. seja rclalivarnCnle fácil construir multiproccssadorcs com um númt!m modesto de processadores (::5 256). cOlt~trui r grJ.ndcs é surprecndcnfcmcnlc d.irícil. A dificuldade c,<;tá em COf\I!Clar todos os pruccssadon.:s !l memória. P:lrJ. evitar esses problemas. muitos proJclisus simpleslTll!lIIe abandonaram :lo idéia de ter urna memória comparulhada. e pa.... saram a construir sistema..;; que consistissem em grandes números de eompuladores inlereonectados. cada um com sua própria rncmúria privada. mas nen huma memória em comum. Esses sistemas são denominados multicom pllrndor es. Costuma·se dizer que as c r us de um multicomputauor são fmcamente acopladas para eontmstj· lal'i com as CPUs fon cmente acopladas de um multi processador. As CPUs de um rnultioomputador se comunicam enVIando mensagens umas às OUlrüS, mais ou menos como enviar e·mails. porém com muito mais mpida. Em sistemas grandes n:io é prático ter cada computador ligado a C~lIja um dos outros, pon:mto s:10 usadas lopologias como malhas 20 c 3D. árvores e anéis, O resultado é que men· sagens de um compulador par.! ou tro muitas vezes passam por um ou mais computadores ou comu tadores (chaves) intcnncdiários par.! ir da fonte até o destino. Não obstante, podem-se. conseguir tempos de transmissão de mensa· gem da ordem dc alguns microssegundos sem muim dificuldade, Multicomputadores com aproximadllmente 10 mil CP Us já foram eonstrufdos e colocados em oper::lljão. Uma vez que multiprocessadorcs são mais fáccis de programar e mlllticomput:iC!orcs são mais fáceis de conslrUi r, há muita pesquisa subre projetos de sistemas híbridos qUt: combinam as boas propriedades de cada um. Esses compullldores temam apresentar a Ilusão de memória compartilhada sem bancar a despesa de realmente construíla, Falaremos mais de muhiprocessadores e mullicompUladores no Capítulo 8.
o
" ••6 • •
~
•
~
o ~ ~
• N
= • ~
o
N
o
" 2 .2
Memória primária
A memó ria é a parte do oompuudor onde são annv.cnados programas e dados, Alguns cientistas da compu· tação (em especial os brilânicos) usam o tc nno a rmazém ou annazc.nagem em vez de mem6na, se bem que o lenno arma:'t:llagf!/II e."I:i sendo usado cada vez mais pam arm:v:cnagem em disco. Sem um:\ memória da qual os processadores possam ler e lia qual possam gr.!var. ou escrever, informaçõcs, não haveria computúdores digitais cllm progr.imas armazenados.
2.2.1 Bits A unidade básica de memória é o dfgito binário, denominado bit. Um bit pode conter um O ou um I. Ê a unidade mais ..implcs possfvel. Um dispositivo capaz de amlazcnar somente zeros dificilmente poderia formar abuse de um sistema de memória; s:io n!... ce.~sários pelo meTlos dois valores. As pessoas costum:un dizer que compUladorc.~ us:tm ariunélica bin:1ria porque ela é ·eficiente '. O que elas querem dizer, embora ra.ramente percebam, é que informôlçücs digitais podem ~r armazenadas dislinguindo entre valo· res di ferentes de alguma qUllnlidade ffsica contínua, lal como tensão ou eorrente elétrk:l. Qu:mto maior fo r o núme· ro de valores que precisam ser distinguidos, menores serilo as scpamções t:nlte valores :Jojaccllft:s e menos confiável ~cr.í a memória. O siSlema nurncrico binário requer a distinç:io entre apenas doi s valores. Por conseqüência, é o método mais conliávd par:) codilic:lr illfonnaçiks digilais. Se você n.io CS\lve r I'arn ilian;r.ado COIl1 milllcms i'lllldnos. consuhe .1 Apcmlicc \. H:\ empresas lIue anu nciam lju!.! SCIIS cu mpulaJores têm aritmética decimal. bem como binária. como ri n caso da IBM e .;cus gramh:s mainfr:.l.ITICs. Essa l'açanha é realizada usando·'\\! ~ bits para annazenar um dígito decimal ljuc uuli/.:l um cúúigo denominado UC D (Bin!.lry Codcd Decim!.ll - oXligo decimal L'odifiCldo em biná rio). Quatro blL'i dão 16 combinaljOes, usadas par.! os 10 dígitos dc O a 9 - scis combinac;õcs não sào usadas. O nume· ro 1944 é mnstmdo a ~gui r eoc.lilicado elll formalll dccimôll e em l'onn:tlO bi nário puro, usando 16 bits e m cada exemplo: decimal: 0001 10010100 0100
binário: 0000011 1 t OOl 1000
Oc7.es!iCis bits no fonnato deci mal puc.iem arm:l7.cnar os números de O a 9999. dando somente 10,{)(X) combi· nuçi)es. ao passo ljue um número binário puro de 16 bIts pode armazcnllr 65 .536 eombinaçôcs diferentes. Por essa r.lzão, as pessoas dizem que o binário é mais elicientc. Nu ctlLanlO, considere n que acunteceriôl se algum jovt= m e brilhante engenheiro elétrico inventasse um dispositivu clem)nico de alta eonliabilidade que pudesse armazenar dircL:uncnle os dígitos de ():t I) dividindo a região de U a 10 volts em 10 intervalos. QUlILroUeii.'>CS JL~positivos poderiam armazenar qualq uer númeru decimal deU a~.
o
'" ••
o
"• •
~
E o
u
• " • ",•"
·
w
o
~ ~
• C • N
~
O
Quatro de~scs Ll is(X>silivos dariam 10.000 combinações. Eles também lxx/criam ser usados para annal.cnar númc:· ros binários usando ~o mcnte O e I. caso cm que quatro deles ptxlcriam annazcmu- wmcntc 16 combinações. Com tais dj sposi ti vo~. o sistema decimal c obviamente mais eficiente.
2.2.2 Endereços de memória Memórias consistem em uma quantidade de célula'i (ou endereços), cada uma tias quais podendo nrmo.zcnar uma inronn::l\;ão. Cada célu!:1 lem um mimem. denominado seu cndc rc,"o. pelo qual os programas podem se referi r a ela. Se a memória livcr /I células. Cl!L~ tcrJo cndcrcço.~ de O a 11 - I. Todas as células em ulIla memÓria contêm o rnc:smq númcm de biLS. Se umu célula consistir em k bits. ela pode conter quaisquer Uns 7! diferentes combinaç"es de ~iLS. A Figura 2.9 mostra tris orgo.nizaçÕt:s diferentes pam uma mem6ria de 96 biK Nole que as eé lul:L~ adj:u::enles têm endereços consecuti vos (pul' dc!inição). Computadores que usam o sistema de números binários (incluindo notaç:io cctal ou hexadecimal para números binários) expressam ende!'etr"Os de memória (,'0 11\0 númerus binários. Se um e ndereço tiver m billl. o número máximo de células endereçáveis é 2'". Por exemplo. um endereço usado parJ refere nciar a memória da Figura 2.9(a) precisa de no mínimo 4 bits para cxpressur lodos os m.irncms de O a 11. Contudo. um cnderaro de 3 biLSé suficiente pal"'J. :L~ figuras 2.9(b) c (c), O númeru de bit.s no endereço detennina o número máximo de células diretamente endercç:íveis na memória e é independente do número de bits por célula. Uma memória com 2'2células de 8 bits eada e uma mcmóriu com 2 11 cél ulas de 64 bit.s cada precisam de endereços de 12 bits. J\ Tabela 2.1 mo:.lm o número de bits por célula pat'J alguns computadores que já foram vendidos (,"Omen:::ialmcntc. A slgnificância da célula é que ela é a menor unidade endercç:ível. Há poucos anos. praticamente todos O!l fabrica ntes de computadores padronizamm células de 8 hi ts. que é denominada um bytc. Rytes são agrupado:\ em paJavr.ls. Um computador com uma palavra dI! 32 billl tem 4 bytcslplllavrJ.. cnqu:mto um computador com urna palavl"'J de 64 bits tem 8 bytcslpalavra. A signific:1ncia de uma palavl"'J é que grande pane das instruções efetua opc.Endereço
Enóoreço
Uma célula
""",'oço
11 21
01 11 21
31
31
21 31
41
"I
51
51
01
"I
,I
FIIIur.2.9
si
'I'rés maneiras de orgallJZar uma memória de 96 bits.
61
61
71
71
01 11
I I
""" 101
- 12 bits
ai
(b)
91
la !
I
11 1
I
"'"
I' )
Tabata 2.1
NUmero de bi ts por célulá para alguns computadores comerciais historicamente mteressantes. Camputndar
BIIll/célulll
Burroughs B1700 [BM PC
8
DEC PDP-8
12
IBM 1130
I.
DEC
18
PDP~IS
lOS 940 ElecttoLogica
___________ .... ... ",1,. ' •• ".1""" ,···
2'
xa
27
XDS Sigma 9
32
Honeywell 6180
3.
coe 3600
48
COC Cyber
60
L
rações com palavrJ$ intcims, por exemplo. adicionando duas palavrJs. Assim. uma máquina de 32 bit"! teci re 'isrcgis~a trJdorcs de 32 bits e instruçõcs para manipular palavrJ-s de 32 bits. enquanto uma máquina dI! 64 bit.. dores de 64 bits c instruções pum movimentar, somar. subtr.lir c. em gemi. manipular palavras de 64 hit....
em
2.2.3 Ordenação de bytes
I I f (
Os bylcs em uma p:ll avrJ podem S5,Vnurncrados da esquerda para a direita ou dn direita para a esquerda. A principio essa uJlII50 pode parecer ..em importância mas. como veremos em breve. da tem consideráveiS implica_ çõcs. A FigurJ 2.IO(a) retrata pane da memória de um compu tador de 32 bits cujos bytcs sijo numerados da esquerda para a direita, tal como o SPARC ou os grandes mainfrJ.ffiCS da IBM. 1\ Figura 2.10
o
O
(el Resultado da lransferencin. do reglStro de uma màquina big endian parti uma little endian. (dI Resultado da troca de byteS [c).
,
,. , 3
3
, , " "
5 9
2
O
O
5 9
2
ayle Pnlavm de 32 bits - _
4 _
maquina /itt/e endian.
2
• ,• , " " , " " " " -"-- " " " -" ,., ,.,
,• ,•
A.ura2.l0 (ai Memória big endian. (b! Mcmóna littte endian.
fIg.ra2.n (aJ Regtma de pessoal para uma mãqwna bzg endian. (bJ O mesmo registro para uma
',d,,,.,,,
uma enálan
,
Idylll
Palavra ue 32 DUS
- -
....
Tran~er6ocla
Blg ef\dian O J
,"
,• "
,
"
, "•
S
H
"
T
O O O
L/ttIe andlan
T
",
,
"
O O O H O O O
O O
O O ~,
,•
,
2
6
,
J
J
S
S
O O O H
H
O
, "• ,
O O O
,.)
J
S
, ",
Trans1ertno. 11
T
"
"• ,
O O O
"I
O O
,
"
",
O T
O O O
, , ", ,•
O O O O O (di
,• 2
-'" •• ,• Q
~
~
• Q
"• ~
•• E
• • Q
N Q
= ~
•
"
.
N
•o•" ~
~
•
~
8
o u o
~
• • = •
~
·
~
'•. o
~
• c •o
o"
Não há nenhuma ~ol u ç:lo si mples. Um modo que funciona, mas é incticicmc . é induir um cabeçalho na frente de cada itl!m úe dado que informa que tipo de dado vem a segui r (cadeia. inteiro ou out.ro) e qual é seu comprimento. Isso pcmülc que o de,;ffin:u5rio efetue apenas as conversões ncces.'1iÍrias. De qualquer mooo, é pn.'Ciso que tique c1:ITO que:1faHa de um padrfiu para a onicn:lç:in de byl c~ é um gr..mdc aborrecimento quundo há trao.;:l de dado.~
enln! mJ.iqu inas diferemes.
2.2.4 Códigos de correção de erro Memóri as de computador podem cometer cmlS de vez em qu.anuo devido a picos de tcnsào na linha déuica ou IJutr.LS causas. Para se resguardur conlr.l esses erros. algumas memórias usam códigos de detecção de erros ou códigos \Ic correção de erros. Quando esses códigos sã\) usados, bits extras silo adicionados a I:ada palavra de memória de modo especial. Quando uma palavra é lida na memória. os bits extras são verificados para ver se ocorreu um em). Par::l entender como os erros podem ser manipulados. é preciso ver de reno \) que é. na real idade, um CITO . Suponha qUe uma palavrJ de memória consista em m bits de dados. aos quais ser-J() :H1icillnados, bits redundantes, ou de verificação. Seja o comprimento lutai 11 (islO é, 1I ""' m +- ,). Uma unidade dI! n bits que contém m dados e r bits de verificação costuma ser denominada uma puJavr'.1 de c6c.ligo de n bits. Dadas duas palnvms de código quai squer. por exemplo. 10001001 e 10 11000 1. é possível detenninar quan tos bits correspondentes silo diferentes. Nesse caso, 3 bits são diferentes. ParJ dctenni nar quantos bits são diferentes. basta calcu lar o EXCLUS IVE O R (OU EXCLUS IVO) booleano bit por bit das duas paJavrolS de código e contar o número de bits I no res ultado. O número de posiçõcs de bit nas quais a.~ du,1S pahlvms de código são diferentes é denominado distâ ncia de liamming (Hamming, 1950). Sua principal signilic:incia é que. se duas paluv rn.~ de código estiverem separada.... por uma distftncia de H:l.lnming d. secl preciso d c!rros de bits únicos para convc!ner uma na OULr'J. Por exemplo. as palavrolS de código 11110001 c! 00 II 0000 c!stão a uma distância de Ham ming 3 uma da OULr'J porque ti preciso 3 erros de bits únicos para eonvencr uma na OULr'J . Com um;J palavra de memóri;J de In bits. tooOS os 2'" pudroes de bits são legais. mas, devido ao modo como os bi t.~ de verificação são computados. so mente 2'" das 2n palavras de eódigo silo válida.~. Se uma leitura de memória aparecer com uma palavrJ de código inválida. tl computador sabe que ocom:u um erro de memória. Dado o algoritmo parJ calcular os bits de vcriticaç50. é possível mo ntar uma lista completa das palavras de código legais c. p
I
0000000000.0000011 11 I , tt 1 1100000 c 1111 1 I tt 1 I
c...M! CIM.hgo tem uma dlst:lnf.:la 5. o crmiti rá que tooos os erros de bits unicos SCJam corrigidos. Cada. uma dus 2'" palavrJs dc memória leguis tem /I palavrJs de eódigo ileg:tis a uma distnncia I. Essas palavr:L'" de eooigo ilegais sUo fllnnadas S;stcllIilficam\,;llle invenendo cnda um UIJS 1I bits na palavr:l Je eÓtligo de 1I bits fomlada com base nela. Assim. cada. uma das 2'" palavras de me mória legais requer n I I padn:1c.'i de hits dl..'dicadus a ela (p;Jra I)S n possívcis crros c padrJo de com:çfio). Uma vez que o número total de padmcs de bi ts é 2". te mos dc ter (11 + I )2m :S. 2". Usando /I :- 11/ + r esse requi ~ ilO se toma (m I , + I) S 2". Dado m. i~so impt>c um limite inferior ao númem de bits de vcrific:lç:1o necessários parJ eorrigi r erros únil..'Os. A Tabelu 2.2 mllSt.r:I () mímem de bil'\ de vcriJic:l, ão n.'que rid~ pt>r vários tamanhos de palavrJs de memória. E....sc limite inferior tcôrico pode ser conseguidu usando um método eriadu por Richanl Hamming ( 1950). Antes dt: ullalisar u algo ritmu de Hammi ng. vamos cxami nur uma rc presclltól,ão gr.ílka simples que ilustra I:om cla· reza a idc!ia de um código de correção de erros parJ palavT;ls de qUillm b i t.~. O diagr.lIlla úe Venn da FigurJ 2. 12(:1) contém três círtulos. A. H e C, que juntuS fu nnam sele regiõcs. Como cxemplo. vamos coJilicar a palavrJ de memó-
___________ . ... .. I " "
11"
li
I I I I I I , , , , .. . . . . . . . . . . . . . . . . "
l
Tabela 2.2
NUmero de bits de verificação para um código que pode corrigir um erro (mico. 'nnnanho total
~
Acresdmo percentual. '
8
4
12
50
16
5
21
31
32
6
38
••"o ~
"
•
6.
7
71
11
•
128
8
136
6
256
•
o
265
4
522
2
A
,
512
10
A
figu ra 2.12
!0.1 COdificação de 1100. (b) Paridade par adicionada. (cl Erro em AC.
@) ,,
o
B
l-I
c
~
e
"• ~
••
•• •
OOc @J ,, , ~~~de ,
O
""""do
B
E~ C
o
L
paridade paridade pandade paridade paridade
1 incorrelo ( I , 3,5, 7, 9, 11 , 13.15.17, 19,2 1 contêm cinco 15). 2 correto (2. 3, 6, 7, 10, 11, 14. 15, 18. 19 contêm seis 15). 4 Incorreto (4, 5, 6, 7, 12. 13, 14, 15,20.21 contêm cenco 15). 8 correiO (6, 9, 10, 11, 12, 13. 14. 15 contêm doiS 15). 16 correto (16. 17, 18. 19,20,21 contêm quatro ls).
~
~
1 verfflCablts 1.3,5, 7, 9,11,13,15.17,19,21 . 2 venfica blls 2. 3. 6, 7,10,11,14,15.18,19. 4 venfica blls 4, 5, 6, 7, 12. 13. 14, 15.20, 2t. B veriticabits 8. 9. 10, 11. 12,13,14, 15. 16 verifICa bits 16. 17, 18, 19,20,21.
de de de de de
~
1'1
Em geral , o hil b é verificado pelos bits "t, h,! ..... " J tai; que b , + h" + ... .j,. hJ = h, Por exemplo, o bit 5 é verilicado pelos bits I e 4 porque 1 T 4 5. O bit 6 é verificaúo PCI(lS bits 2 e 4 porque 2 + 4 6 c assim por diante. A Figuf'J. 1,13 mostrJ. a construção dt: um código de Hillnming para a palavrJ. de memória de 16 bits IIIIOI.XX)IO IOII lO. A paluvru de cóJigo de 21 bits é (M)IOI I I OUCX)()lO I 10 1 110. Para ver como funciona a correção de erros. considere o 4ue uconleccril1 se o bit 5 fosse invenido IXlr uma M>brecarya clétncu na linha de força. A nova palavrJ. de código seria 00 1001 IOOllOOlOII011 10 em vez de 0010 1110000010 110 1110. Os 5 billl de puridude seriio veri ficados com os segui nte." resultados: BII Bit BII Bit Bil
o
• "c •
d
I"
=
•
~
o
ria de 4 biL'I 11IX) nas regiões Aa. ABC. AC t: BC. I bil por região (em ordem alfabérica). E.'Isa codificação é mostrada na Figura 2.12(:1). Em seguida acn:sccnlamos um bit de paridade a cada uma dessas três regiõcs v:uias paro produzir paridade pa.r. como ilustrado na Figura 2. 12(b). Por defi nição, tlgora a soma dos bits em cada um dos três círculos, A , B c C. é um número par. No cfrculo A, temos os l.]uatro números O. 0, 1 c I, cuja somll tot:J..! é 2, um número par. No círculo B. os números "ãl) I, I. O e 0, cuj a soma total é 2, um número par. Por fim, no cfrculo C, temos u rnl!Sma coisa. Nesse e,'{cmplo. por acasO lodos os cfrculos são iguais. mas somas de O e 4 também silo possfveis em oulros exemplos. Essa figurJ. corrcsponde a uma palavra de côdigo com 4 bits de d:\(Jos t: 3 bits de paridade. Agora suponha que algo de ruim aconleçu com o bit na região AC e elt: mude de um O (Xlr.l um I. como mostra a Figura 2.12(c). Agora, o computador pode ver que os circulo....1\ e C têm :1 paridade err.uJu (ímpar). A umca mud:l.IlÇu de bit individual que pode corrigi-los é restaurar AC parJ. O. o que corrige o erro. Desse muJo. o comput:l.dor pode corrigir automauc:uncntc t:rros de 1l1cm6riu de um s6 bit. Agor:l. vamos ver como o ulgorilmo de Hamming pode ser IIsado para construir eódigo.~ de corrcç:lo de erros para quulquer UJn!lJlho de paluvrJ. de memória. Em um ~6digo de Hamming são acrescenlados r bits de paridade :l uma pnluvrJ de /li bits. fon mmdo uma nova palavra de comprimento In + r bits. Os bits são numerJdos cOlllt:çando com I, não com O, sendo que I,) bit I é o bit da extrema esquerda (ordem aha). 1Odos os bits cujo número de bit for umu potênc ia de 2 sào bits de paridade; os reslan tes são usudos para dudos. Por exemplo, com uma palavra de 16 bits, .~ão adicionados 5 billl de paridade. Os bits I. 2. 4. 8 e 16 sào bits de puridadt: e todos os bits restantes silo bits de dados. No total, a palavra de memória tem 2 1 bits ( 16 de dados. 5 de paridade). Neste exemplo usaremos (arbitr.lriurncntc) paridade par. Cada bil de putidude verifica posiçõcs espa.'Íficas de bits: o bit de paridade é estabelecido de mot.lo que o nú mero de Is nus posiçücs vcrilicudus seja par. As posiçõcs de bits verificadas pelos hits de paridade são Bit Bit Bn Bil BII
~
=
N
o
• •
~
"
Flgara 2.13
COnstrução do código de
-• •
o
~
•,
Hammmg para a palavra de memôria 1111000010101110 adicionando 5 bits de venflcação aos 16 bits de dados.
Palavm de memória 1111000010101110
[Q]@j..!..@].!...!.. 1_[gJ 0_-2..12. \ O 1.. 11J o.:..
1, , , 5, 7'~:i~'d:' 7' 17 "
, , O 19 2õ 21
paridade
~
8 o u
'•. o
~
"
"•
~
o
o lIlímcro total de 1s nos bits 1. 3, 5. 7, 9. LI. 13, 15. 17, J 9 c 21 deve ser um número par porque está sendo usada a paridade par. O bit incorreto dt:vc ser um dos bits vcri ticados pclo bit de pariumlc I - ou seja, bit I, 3. 5. 7,9. I J. 13. 15, 17, [9 ou 21. O bit de paridade 4 está incorreto. O que signi fica que um dos bilS 4, 5. 6. 7, 12. 13. 14, 15, 20 ou 21 eslá incorreto. O crro deve ser um dos bits que está em ambas as listas. a saber. 5. 7. 13, 15 ou 21. COllluclo, o bit 2 está correto, o que eli mi na os bits 7 c 15. De 01000 semelhante. o bit S está COlTeto, el iminalldo o bit 13. Por lim. o bit 16 está correto, c!liminando o 2 1. O único bit que sobrou ê 5. que é o bit que está com erro. Uma vez que foi lido eomo um l. ele deveria ser um O. Dcssa maneira. os erros podcm scr corrigido~. Um método simples parJ. achar o bit incorreto é. calcular antes todos os bits dc paridade. SI!-ttxlos estiveI"Cm corrctos. não houve nenhum crro (ou mais do que um). Em seguida somar todos os hiL~ de paridade incorretos. contando I parJ bit 1,2 par.! bit 2, '"' par.l. bit 4 e assim por diante. A soma res ultante é a posiç:iu do bit incorreto. Por exemplu, ~ os bits de paridade I e 4 estiverem incorretos. mas 2, 8 c 16 e... tivercm correios. o bit5 (I + 4) foi invertido.
2.2.5 Memória cache Historicamente, as crus sempre foram mais r,ípidas do que as memórias. ConfolTIle as mcm6rias melhorar.l.m as CPUs tambêm melhoraram, mantendo o descqui líblio. Na verdade, 11 medida que rica possivel colocar cada vez mais circuitos em um chip, os projetistas de CPU estão usa ndo essas novas facilirJades no paralelismo (pipelining) c em operação superescalllr, fazendo com que as CPUs fiquem ainda mais vel07,c,~. Projetislas de memória ÇOS1Umam usar nova tecnologia par.! aumentar li çapacidade de seus çhips. e l1:io a velocidade, portanto parece que os problemas c... tão tiçando piures çom o passar do tempo. Na pr,ítka. o significado desse desequilíbrio é que. após emitir uma requisição de memória, a CPU nào obterá a palavrJ. de que necessita por muitos ciclos de C PU. Quanto mais lenta a memória. mais ciclos a CPU lerá de esperar. Como já destacamos. há duas maneiras de tratar esse problema. O modo mais simples é somente iniciar READs (IeitUr.ls) rJc memória quando das forem encontradas, mas Ç(lIltinuar exceUlando e bloque:Lr a C PU se uma instrução ten tar US:Lr a palavra de memória antes de ela chegar. QU:lIlfO mais lcntn a memória. mais frequentementc esse problema ocorrerá e maior será a penalidade quando isso, de fam. neorrer. Por exemplo, se o atraso de memória for úez tidos, é lIIuito provável que uma das próximas dez instruçõcs te ntllr.i usar a palavr.! lida. A outr.! solução é ter máq uinas que não fieam bloqueadas m:ls. em vez disso. requerem que o compilador nãu gere código par.! usar palavr-J.S antes que elas tenham chegado . O problema é que é muilO mais fácil falar dessa abo rdagem do que excçutá-Ia. Muitas veles não há nada mais:l fazer após um COA0 (çam.:gar), portanto o compilador é forçado a inserir instruções NOP (não-operação), que nnda mai.s fazem do que ocupar um intervalo (slot) e perder tempo. Com efei to. cssa abordagem é um bloqueio de sotlware em vez de um bloqueio de hardware, mas :l degradação dn desempenho é a mesma. Na verdade, o problema não é tecnológico. mas cconômko. Os engenheiros sabem çomo çnnstruir memóri a.~ lão rápidas quanto as C PUs. mas paro que executem :l toda velocidade, elas têm de eSlar localizadas no çhip da CPU (porque passar pelo harramento para ale::l.Ilçar a menllíria é uma opcráção m~ito lell1a). lnst:llar uma memória gr,l.I1de no chip da cru faz com que esta fique m:lior c, pon:lnto. mais C;!r.L. Ai nda que o custo não tos!\C uma qucst50 a ennsirJcrar. h:i l.imites de tamanho para um ch ip dc CPU . Assim, a opç:io ~c resumc a te r um:1 pequena quantidade de mernôria rcipirJu nu uma gmnde qua nt idade de memôria !ent:., O 4ue nós gosl:lríarnns de ler é urna gmnue quulllidade de memória rápirJa a pn.::ço baixo. O i ntere~s:lnle ..: que h.i téçnicas ç!lnh!..'çidas p:ml enmhinar uma pequena 4u:ullidade de memória r:ípiua C!lm uma grande ljuanlirJade rJe l1lCmól"ÍiI lenta par.L obter (\]uase) a velocidade lia melmíria rápida e a çapacid'lde da mem6ria gmnrJc a um preço moucr:ldn. A mcm!íria pequena e rápida é uenwninada cache (do fmJlees 1.'lIcher. quê signilic:l 'esconder' e 5ie pronuncia 'c:íche'). Em seguid:l. descreveremos hrevemente çomo as cuçhes ~ão usadas c como funcionam. O Capítulo 4 apresenta uma rJescrição mais detalhada. A id6a básica dc uma cache é simples: ;L~ palavr.!s de memôria usada..... e()m mais freqüência são mantidas na çache. Qu:.mdo a CPU precisa de uma palavm. ela examinu cm primeiro lugar a çachc. Somente se a palavra não e~il iver ali é que ela reeorre à memória principal. Se umu fração substancial das palavra5i estiver na cache. o tempo médio de acesso pode ser muito red uzido. I\ssim. u sucesso ou o fracasso rJepcnde da fração das palavms que estão na cache. Há anlls todos sabemos que programa.~ não açessam suas mem6rias em total aleatoriedade. Se uma dada referência à mcmória par.! o endereço A. é provável que a pnixima referê ncia à memtÍria estará nu vizinh:U\ça gemi A. Um exemplo simples ê o próprio programa. Excctu 4UaJldo se trJ.lu rJe desvios e de chamarJas tle procedimellto. as instnJ1;{ks são buscadas em localizaçiks consecutivas da memória. Além do mais, gr::mde parte do tempo de eXL.'cução de um progr.l.ma é
uC
ror
L
ttl Raar.l2.14
A locaUzaçiio lógiC.l da <:ache é entre a CPU e a memória prinCipal. ~ tennos fisicos tui. diversos lugares em que ela poderia estar localizada.
'"
·• o
~
•
•
~
•
o u
gasto em laços. nos quais um número limilado de instruções é executado repetidas vezes. De modo semel hante. é pruvuvcJ que um programa de manipulação de matrizes fará muitas referências à mesma matriz antes de passar para outra coisa qualquer. A observaç::io de que referê ncias à memória fe itas em qualquer interv.lIo de tempo curto tendem a usar apenas uma pequena frJç:10 da memória total é denominada princípio da localidade e fonna a base de todos os sistemas de cache. A idéia gemi': que. quando uma palavrJ. to r referenciada. ela e algumas de suas vizi n~ sejam tr:l..Zidas da memória grande c lenta pUl"""J. a cache. de modo que. na próxima vez em que for usada. ela possa ser acessllda rapidamente. Um arrJ.lljo eomum da CPV. cache e memória principal é il ustrado na Figura 2.14. Se uma palavra for lida ou escrita k vezes em um eUf10 intervalo de tempo. o computador precisará de I referencia à memória lenla e k - I refl.:rencias i\ memória rápida. Quanlo maior for k. melhor ser:.í o desempenho glob:ll. Podemos fOmlaliz:lr esse c:ílculo introdu7jndo c. o tempo de acesso à cache; m, o tempo de acesso à memória principal: e h. a taxa de !ll."'ertu. que é fração de todas as referencias que podem scr cumpridas com base na eache. Em nosso pcquentll!xemplo do pa~grafo anterior, 11 :: (k - 1)Ik. Alguns autores também definem a taxa de falha (na cache). quc .: l -h. Com eS1õas defi nições. podemos culcular o te mpo de aces.~o médio como scBue: tempo de acesso médio ", c .. (1 - h) m
À medida que h~ . todas as referencias podem ser satisfeitas fem da cache e o tempo de acesso médio se aproxima de c. Por oulro lado. à medida que 11 --lo O, toda vez ser.í necessária uma referência à mem6ria. pon anto o tempo tk acc.o;so se aproxima de c + m. primeiro um tempo c pUl"""J. verificar a cache (sem sucesso) c enlão um tempo m par.! f:u.cr a referencia à mcmória. Em alguns sistemas. a referência à mt:mória pode ser iniciada em paralelo com OI busca na cache. de modo que. se ocorrer uma falha na eache (cache müs). o ciclo da memória já ter:i sido iniciado. Contudo. cs.~a c."tr.llégia requer que a mellltSria possa ser interrompida se houver uma presença na cache (cache hit). o que torna a implantação mais complicada. Usnndo o pri ncípio da locali9ade como guia. mt:mórias principais e caches são divididas em blocos de tamanho lixo. Ao nos referirmos a esses blocos dentro da cache. eles são comumente chamados de linhas de t ache. Quando a busca na cache fa lha. toou a linha de cache é carrcg:lda da memória principal para a cache. e não :i.pCnas a palavra que se quer. Por exemplo. com uma linha de cache de 64 bytes dc tamanho. uma referê ncia ao endereço de memória 2tíO puxnd li linhu que consiste nos bytes 25tí a 319 pura uma linha de cache. Com um pouco de son.e, algumas das outr.l.S palavra.'i na linha de cache também ser:1o necessárias em breve. Esse tipo de opernç::io é mais eficiente do que buscar palavrJ.s individuais porquc é mais rápido buscar k palavras de uma vez só do quc uma palavrJ. k vczes. Além disso, tcr entrJ.das de cache de mais do que urna paJavr.l ~ i gn ilica que há menor numcro delas: por conseguinte. é preciso menos memória auxiliar (O"llt!rht!lu/). O projeto de cache é wna questi'lo de importância cada vez maior parJ C PVs de alto dcsempcnhú. Um aspecla é o tamanho da cache. Quanto maior J cachc. mc!hnr seu fum:ionamen\(}. mas tambem maior é o custo. Um ~egundo aspecto é () tamanho da linha de eachc. Uma eache de 16 KB pode !!Cr dividida em até 1.024 linhas de 16 bytes. 2.048 linhas dc 8 hytcs e nutras combinações. Um terceiro as~cl() é a maneira de organiz:lç:io da cachc. isto C. como ela controla quais palavras de mc!miria est:1o sendo rnantid~ no momento. Exalllmaremos caehcs JClalhadamente no CapílUlo 4. Um quano aspecto do proJcto é se u,'i instruçiics c dados são mantidos na meslIla C;lC!lC ou em eaches diferenteS". Ter uma cachc unificad:J (instruçôes e dados usam a mesma cache) é um projeto mais simples e mantém aUlOmaticamcnte U I..'q uilibriu entre buscas de instruções e buseas de dados. No entamo. a tendência hoje é uma tache dividid:J. com inslruçõc'<; em uma C;\che c d:u..los na OIJlrJ.. Esse projeto também é denominado ar(luitc(ura Harvard e essa referência voll;.! ao pasS;Jdo até o computador Mark 111 de HowanJ Aiken. que tinha rnerntirias diferentes parJ. instruçõcs e dados. A força que impele os projetistas nes,'ki di reção é a uti lização muito difund ida de CPVs com paralelismo (pipelined). A unidade de ousca de instruçiiu precisa acessar instruções ao mesmo tempo que a unidade de busca de opcrJ.ndos precis;l de al..1!SSO aos dados. Uma caehe dividida pcnnite acessos parJ.lelos: umu cache unilicada. não. Além disso. uma vez quc as instruçõcs n:io são mudificadas durJ.lllc a execução. o conteúdo da cache de instruçiio nu nca tem de Ser escritO dc volta na mcmória. Por lim. um quinto aspecto é () númem de caches. Hoje t! m dia nào I! incomum ter chi ps C0111 uma cache primária no chip. uma cache secundária rom do chip. mas nu mcsmo pacote du chip da CPU. e uma tcrceir.l cache ainda mais dislllllte.
• •e•
o
• •
•
o
'•. o
~
N
C
•m o
N
o
• ~
•
u
'"...
2.2.6 Empacotamento e tipos de memória Desde os primeiros dias da memória de scmicondutor aI.! o início da década 1990.
comprnda c instahlJa comI) chips UilICOS. A:-.
•o•" ~
• •
~
e o
"• ~
• • •" •"
~
•
~
o ~ ~
• o • N
~
o
t1cn:,id41dc~
li
memória era fabric:lda.
dos chips iam de 1 K bits até I M bits e além, mas C3da
ehip er.1 vendido como uma unidade ~parada. Os primeiros PCs coslumavam tcr soquetes VU7.iOS nos quais podiam ser ligados chips de memória adicionais. se I! quando o comprador precisasse deles. Ag()ra. usa-o;c um <Jrranjo diferente. Um gnlpo de chips, normalmcnlC 8 ou 16. é montado em unja minúscul:L pluc:l de dn.:uilu impresso e ."entlido como uma un idade. cssu unidaue é denominada S IMM (Singlc InJinc Mcmory Mudulc - módulo ul1ico de menuiria em linha) ou um DlMM (I)ual Inlinc Mcmory Module lllooulo duplo de mClTuirill em linha), dependentla de ter uma tileira de concelares de um só lado ou de ambos os lados da placa. Os SIMMs Ii!m um concclor de bonJa com 72 contatos I! tr.lnsfcrem 32 bits por ciclo de relógio. Os DIMMs em gcro/têm concetores de borda com 84 contatos Ctn cada lado da placa. perfazendo um tota..l de 168 contatos e transferem 64 bit... por ciclo de relógio. Um exemplo de SIMM é iluslr.wo na Figuro 2.15. Uma conligumção típica de SIMM ou DIMM poderia ler oito chips de d."Ulos com 256 rncgabits (32 MB)cada. Então. o módulo inteiro conteria 256 MB. MUltas computadores têm espaço paro 4uatnl módulos, o que dá uma capacidade 100al de 1 G8 sc u-.:J.rcm módulos de 256 YlB e mais, sc usarem módulos maioTCs, Um DIMM fisic:lmcnlC menor. denominado SO-lJIMM (Smal! Oudine OIMM - OIMM pequeno perfil) é usado em nOlt.!books, Pode-se adicionar um bit de paridade ou correçãn de erro a $ IMMs c DrMMS. porém, visto 4ue
n..... 2.15 Módulo Unico de memóna em llnha (SIMM) que comem 256 MB. Dois dos chipa controlam
o SiMM.
2.3
Memória secundária
Seja qual for o tamanho da memória principal, ela sempre será muilO pequena. As pessoas sempre querem armazenar mais mronnac;õcs do quc a memória pode conter principalmemc porque, à medida que a lecnologia melhora. elas coml!çam li pcnsar em annazcnar coisas que antes estavam inlciramcnle no reino da ficção cientifica. Por exemplo, como as dirctri7.cs orçamentária." do glwemo dos Estados Unidos obriga. as agências governamentais a gerar sua própria receita. poJemos imaginar a BibliO(cca do Congresso (Library of Congrc~s) decidindo digitalilar c vender todo o IoCU conte tido como um artigo de consumo ('iodo o co nh~i menlo humano por apcna.~ USS 99,95"). Aproximadamente 50 milhiks de livros. cada 4ual com I MS de texto e I MS de figur.1s comprim ida.~. 14 requerem arnlazemlgem dc 10 bytcs OU 100 terabytcs. Amm;:enar 1000S os 50 mil filmes produzidos :ué agOr.1tambérn faz panc desse carnaval. Essa qu:.mtidadc de infornmç:io mio caberá na memória principal, ao menos por algumas décadas.
2.3.1 Hierarquias de memória A soluç:1o 1r:IlJicionaJ par.t annazcnar gr.tndcs quantidades de dados é uma h.ier.u-quia de memória. como ilustrada na Figur:l. 2.16. Nu IOpO estão os registr"uJoTCs de CPU. que podem ser :lCt.'SS:Idos à velocidade 10lal da C PU. Em seguida vem 11 memória cachc, ljUt! atualmentc I!Slá na faix a de 32 K.ll a alguns ffiegany tes. A memória vem logo após. hoje com tama nh ol~ 4UC vão de 16 MB pat:1 sistemas básicos até dezenas de gigahytcs na extremidade muis aha. Depois vêm os Jiscos m:.~nélicos. o alual burro Je carga lia :mna/.cna,gent pcrm:mcntc. Por tim. lemos fitas magnélic:llo e Jbcm, ulicns para .u'lBaJ.cnagcm ue .u·lj uivtl~.
n..... 2.1. Hlerarqwa de memória
de Cinco nivelS. Disco magnéllc:o
'"
Olsco Ollco
L
À medida que descemos na hiernrquia. lrê.~ parâmetros aumentam. Primeiro. o templl de acesso fica maior. Os registradores da CPU podem "er acessados em alguns nanosscgundos. Memória.' cache demoram um pt..'qucno múltiplo dos rcgistrndores de CPU. Acessos la memória principal Ilonnalmente lcvum algumas dC7.cnus de nanosscgun. dos. Agor.! vem uma grande lacuna, porque tempos de :lcesso a diS(.""Os são no mínimo 10 milisscgundos e ace.'ISOS a 1ila.S ou discos ólÍcos podem ser medidos em segundos se a mídia tiver de ser buscada c inserida no drive. Em segundo lugar. a capacidade de annazcnagcm :lumenta à ml.."t.!itla que descemos na hicr.!r4uia. Rcgislr.!dores de CPU são bons pam. talvt:.l. I::!Mbytes, eaehes parJ un~ pt)ueOS megabYles. memórias principais para dC'l.cnas a milhares de megabytcs. disco .. mugnclicos para algum gigabytes a dCl.cna.~ de gigabytes. Fü:lS c discos óticos sãu usualmente mantidos fum da linha. portanto sua capacidade!! limilnda apenas pelo orçamento do usu;lrio. Em terceiro lugar, o número de bits por dólar gasto aumenla descendo a hierarqUIa. Embom os prc'fos atuais mudem com rJpidez. a memória principal é medida em dolareslmegabyte. armazenagem em disco magnctico t:m ccntavoslmegabyte. c arm:.lll.:nagt:1lI .:tn tita magnetica em dólares/gigahyte ou menos. Já vimos registros. cache c mem6ria principal. Nas ~eçiks seguintcs, vamos examinar discos magnéticos: depois. estuUnremos discos ótiCOS. Nilo estudaremo!l fitas porqut: são rarJrncntt: usadas. exceto par.! cópias de segurJllça (back-up) e. em todo caso. não há muita coisa a dizer sobre elas.
••o •o
·
~
~
E o u o ~
•
•E • ~
•
2.3.2 Discos magnéticos
~
Um disco magnétk:o é composto de um ou ma i .~ pratos de alumínio com um revestimento magneti7..ável. No infcio. esses pratos tinham até 50 em de di:imctro. mas agor.! têm nomlalmente de 3 a 12 em. c uiscos paro notebooksjá estoJo com menos de 3 cm e continuam encolhendo. Um eabeçote de disco que contem uma bobina de indução flutua logo acima tia superfície. apoiado sobre um eolchião de ar (exceto par.! discos ilexiveis. onde tocam a superfície). Quanuo uma corrente positiva ou negativa pa...sa pelo eabcçote. ele magneti"l.ll a superfície logo abaixo dele. alin hando ;lS partfeu!:.!s magnéticas pum a t:squerda ou par.! a direita, dependendo da polaridade da cOlTCnle. Quando o eubl."1jotc passa sobre uma área magnetizada. uma corrente poslIiva ou negativa I! inuuzida nele. o que possibilita a leitur.! dos bits armazenadu.'õ .1l1lCS. Assim. à medida que o pr:l.IO gira sob o cabcçute. uma corrente de bits pode ser escrita e mais tanie lida. A geometria de uma tri lha de dilM.."'O mosttaUa na Figum 2.\7. A seqü6ncia circular de bits escritos quando o d isco faz uma roUlção completa é denominada trilha. Cada uma das tril has é dividida em ulgum número de setores de tamanho fixo . que nomlnlmemc contêm 512 bytes de dados. precedidos por um p r e:imbulo que pennitc a sincronização do ..:abcçotc antes de uma IClIura ou escrita. Em seguida aos daJu.~ há um código de correção de erros (ECC - Error-Correcting Code), ou um código de Hamming ou. mais comumente. um código que pude corrigir múhiplos erros. denominado côtligo de Reed -SolomOR. Enlre setores consecutivos hâ uma pequena lacunu intcrsetorcs. Alg uns fnh ricantcs citam a capacidade do scus discos no eSlado scm fomlataç31l (como se cada trilha contivesse apenas dados), mas uma medida mais honl!sta «! a ..:apacidade no estado fomlUtado. que niio contll os prcàmbulos. ECCs t: lacunas corno dados. A capacidade do disco (onna· tado é normalmente 15% menor do que a capacidade scm fornlUtaçilo. Todos os discos têm brnços mlÍveis que podem se mover paro dentro e par:l fora a difercn te.~ distâncias radiais da haste ao redor da qual o prato gim. A cada distância mdial pode ser escrita uma trilha diferente. Assim. as trilhas são uma série de círculos concêntricos ao redor da haste. A largura da trilha depende da largur
e
fIg.,. 2.T1 Porção de uma trilha de disco.
DoIS setores são ilustrados.
, V
Largura da trilha li 1-2 rr"IICl8
Largurll de um I bIIé 0,111 0.2 mfcron
Bmço do disca
'•. o
~
N
C
•o
·
O
N
o o ~
•
u
... <Xl
-••• o
~
,
Cabeçcle de IellUralescnu (I por superlloe)
~--,
Supertlcie 1
Supemc~
-:::::::rl=~=~
6 __ Sl.lperllcIe 5 ~
figura 2.1.
Disco com quatro pratos. Oiraçao de mOVImento do brnço
~
E o
"•
~
•
~
,• ,
•
~
o ~ ~
• N
C
• Q
o
Os pri meiros desses dri~~, criaúos pela IBM. tinham 30 MB de arm;l"-cnagcm sclada c fixa c 30 MB de arma7.cnagcm rcmovfvel. Coma a história que esses discos 30·30 Icrnbrav:lnl iis pcs.~Oall os ritlcs Winchcstcr 30~30. que
tlescmpCnhar.lfll gr:mdc papel na abcnurn da:. fromcira.s nonc-:Llncricanas. e o nome 'W1m:hcstcr' licoLl. A maioria dos discos é composu de vários pmtos empilhados na vertical. como ilustr.tdo na. Figur.:l 2.18. Cnda ,upcrticic tem seu próprio brnço e cabeçolc. Os braços são agrupados de modo que todos se movimentem pam diferentes posições radiais ao mesmo tempo. O conjunto de trilha... em uma dada posição rJr.l já csb.:jam abaixo de I OIS. Logo que o cabeçotc esteja posicionado r.tdialmcnte. h:1 um atr.lSO. denominado latência rotacionul. alé que o setor desejado gire "ob o cabcçote. 1\ maioria dos discos gira a 5.400 RPM. 7.200 RJ>M ou IO.SOO RPM . ponanlo o atmso médio (meia rotaçãu) é de 3 a 6 ms. O tempo de transferência depende da densidade linear e da velocidade de roução. Com taxa." de transferência típicas de 20 a 40 MB/s. um 5Clor de 512 bytes demora enlrc 13 e 26 ISS. Por consf.:qüência. o tempo de busca e a latência rotacional domi nam o tempo de Ir.lIlsfcrêneia. Ler setores aleatórios pnr tooo o di.~o é claramente um modo ind i ciente dI.' operar. ValI.' a pena ml.'ncionar que. por eonta de preâmbulos. ECCs. lacunas intcrliCtorcs. tempos de busca e latências rotacionaiS há uma grande diferença entre a taxa m:1xima de rajada (bllrst rale) de um drive e sua taxa m:1xima sustentada. A taxa máxima de rnjadll é a uxu de dados. uma vez que O cabcçote c.~t:1 sobre o primeiro bit de dados. O oomputador deve ser C.lp:lZ de manipular os dmJos que eSlão chcg:mdo com essa mc... ma r.lpide7_ Conwdo. o drive só pode manter e.~sa taxa para um único setor. Para alguma." aplicaçõcs. como multimídia. o que importa c a taxa sustentada m...tdia dumnLC um p.:ríodo de segundos. que também tem de levar em ...'Onta a.~ neec."sárias buseas e atr.I.SIlS rotacionais. Um pouco tle racioc{nio e a utilizaçào daq uela velha fónnula de matemática do colegial par.l a órcunferencia de um drculo. (' = 2Pir. rcvdarào que a distância linear ao redor das trilhas mais externas e maior do que a das trilhas mais internas. Uma vez que lodos os discos magnéticos giram com velocidade angular constante. não imporlilllUO onde estão os cabcçotes. essa observação cria um problema. Nos drivcs antigos. os fab ric;mtes usavllm a m:1xima dellsidade linear possível na trilha mais inteOlU c densidades lineares de bits succs."ivamentl.' menoI"Cs na.~ trilhas mais (:xtcmas. Se um d isco tive....~e 18 setores por tril ha. por exemplo. cada uma ocup;.lva 20 gmus de arco. não importando em qual cilindro se encontrava. 1·lojc. usa-se uma estratégia diferente. Os ci1indl"{ls Sal) divirlidos em zonu." (normalmente 10 u 30 por drivc) e II nú nlero de setores por trilha uumcntu de zOlla em zona panindo da trilha mais interna pam a mais externa. E.~sa mudança dificulta o r.lstre:lmento de informaçõcs mas aumenta a e:lp:lcidade do d'rive. quI.' é consider.lda mais importante. T,)(]os tlS setores ~ã{) do mesmo l:tInllnho. A Figur:\ "l.I') mn"lr:t um discu com dnco zonas.
".u,.2.19 Disco com CinCO zonas. cada zona lem mWlas Inibas.
_____________ 111111" ",."
I"
1 1"
" " "
A.~sociado a c:lda drivc há um controbdor de disco. um chip que controla o drivc. Alguns conlrQladorcs contêm uma CPU completa. Entre as tarefas do cOnlmlador csl:.io aceitar comandos do software. como REAO. WRJTE e FORMAT {escrevendo todos os pre:imbulos), ..:ontrolar I) movimenlo do braço. detectar e corrigir erros e convcncr bYte~ de 8 bits lidos na memôria em uma corrente serial de bits c vice-versa. Alguns conltOladores lambém lTlani. pulam () buffer de Imiltiplos lielores. fazendo cache dc setores lidos para potencial uso futuro e remapcando selares ruins. Essa última rUI1~ão é eaus;u!a pela (:~istênda de selOre.~ que têm um ponto ruim. ou seja. p!!nnanentemente magnetizado. Quando Uc!>Cobn.: um setor ruim. o cOlllrolador tJ substitui por um do~ .setores sobn:.ssalentcs reservados par"d esse fim dentro de cada cilindro ou I.Ona.
2.3.3 Discos flexíveis Com o ativemo do computador pcs.~oal. era pl\.'Ciso um meio de distribuir software. A solução encontr.:lda foi o disquete. ou discu flexível. um meio removível. pequeno. ll.'Isim denominado porque os primeiros eram fisic:lmente flexíveis. Na venJade. o disco flcxível foi ;nvcntJdo peJa IBM pura gravar informaçi.}cs de manutenção dt:. SClL~ m:linframc... parJ o pessoal de serviço, mas foi rapidamente adotJuo pelos fabricantes de compuuuiores pes· su:us como um meIO convcl1lenle de distribuir softwan.: pura venda. As características gentis são as mcsmas dos discos que acabamos de descrever, exceto que. diferente dos discos rígidos. onde os eabcçotes n llluam logo acima da superffeic sobre um coJch:1o de ar de movimento r.ípido. os eabcçoles de discos I1cxívcis na verd:l.de tocam os disquetcs. O rcsulllldo 15 quc tanto o meio como os cabcçolcs se Jesga.~tum com relativa raplde7_ ParJ reduzir o desgaste. os eompullldorcs pessoais recolhem os cabcçotcs e {XU"'dm de gir.lJ' quando um drivc não estiver lendo ou escrevendo. Por conscqüência. quando é dado o próximo comando de leitura ou e:.crilll. há um alr.lSO de eerca de mdo segundo até o motor ati ngir a velocidade neecssári:l.. Discos flexiveis foram usados durante cerca de 20 anos. ma... os computadores modernos geralntellle ~ào vendidos sem e1c.....
2.:1.4 Discos IDE Os discos dos modernos computadores pcssOnados. e a taxa dI! transterência aumentou de 4 :vIB/li para 16.67 MB/s. Enquantu :I tecnologia de disco continuava a mdhtlr.lJ'. o patlrãu EIOE continuavlI li evuluir. m,lS, por alg uma í.l1..ãO. o sucessor do EIDE foi denuminado ATA -J (AU.uchment). uma referência ao IBM PClAT (onde AT sc referia 11 ent:io IL'Cnologla avan..;ada (At.lvaJlced Techno logy) de uma CPU dc 16 hits c~ecut:mdt) em 8 MH1.). Na L'f.Iição
••"o •
~
• ••
~
e
• • o
N
o
,
~
•
u
o
"'
-•• • o
~
,
~
5
o u
•
~
•
~
,• , "
•
u
'.• -• o
~
•
c
~
O
seguinte o padrJu rece beu o nome de ATAPI--I (ATA i»ackct Inlerral:C - intcrf:lce de pacutes) e a velocidade aumentOu pam 33 MS/s. Com I) ATAPI-5 ela alcançou 66 MS/s. Nessa época. o limite de 128 O B imposto pelos cndt!rcços LBA de 28 bits eslava ficando catla VC1. mais :lIl11:açaJor. portanto li ATA PI-6 allernu o tamanho do LBA parJ 4~ bits. O novo padrJo entrou c m dificu ldade qua ndo os discos chcg:lmm a 2~~ X 2'" hytcs ( 128 PB l. Com um UUIIlCOIO de c:lpacidadc de 50% ao ano, o limi/I.! de 48 b i l~ provavelmcnte durará até apmximlldamcntc 2035. Para saber como o problema roi reso lvido, favor consultar a décima primclrJ cdiç:1u des te livro. A melhor aposta é que \) ta manho do LBA alcance 64 bits. O padr;io ATAPI-6Iam b..!m aUlm:mou a tax a de Iransfcrcncia par.:! [O() MB/s c atacou a questão do ruído do disco pcla primeira v~z. O p
n.5
2.3.5 Discos SCSI Discos SCSI n:io são diferentes de discos IDE em relação ao modo comn seus cilindros, trilhas e setores silo organizados. mas tên} umôl imcrfacc diferente e tax.as de lr.lnsferência muito mais elevadas. A história dos SCS I remonta a I:lowan:! Shugart. O inventor do lIiSt.:o tlcx ivel. cuja empresa lançou o disco SASI (Shugart Associares Systcm Interface - interface de ~btcma da Shugart Associatc...) em 1979. Após algu mil.~ modificaçõcs e muita discussào. 11 ANS I o padronizou em 1986 e mudou u no me paro. SCSI (Smull Computcr Syslcm Interfat.'i: - inter· face pura sistcnms cumpu tacionais pequenus). A pronúncia de SCS I em inglês é 'sdzi', de l ·C/lZ•••:y. Desde então for.lIn patlronizadas versUeS c.uh vez mais rápidas sob os nomes de Fast SCS I ( lO MHz). Uh.r
rabela ~3
Alguns dos possiveis parâmetros SCSI. ,
Nome
• BibJ de dados f'teqlienCla do barramento (MHz l
MB /s
8
5
5
• 16
la la
la 20
20
20
W1de Ultra SCSI
8 16
20
40
40
40
80
SC$I-I Past SCSI Wlde Fast SCSI Ultra SCSI Ultra2 SCSI
8
Wlde Ultra2 SCSI
16
40
UJuaJ SCSI
8
80
80
Wlde UltraJ SCSI
16
80
160
U1trn4 SCSI
8
160
160
Wide Ultrn4 SCSI
16
160
320
_......... .."" "" "
,. ,
... .. _-
-
I
I !
I I L.
o
cabo mais comum paro! SCSI de ~ bits tem 50 fios. 2S dos quais ~ão tc:rras que fazem par com 01\ outros 25 fios para dar Cx.ct:lcnlC imunidade contra ruido. neccssâria parJ. operação em alIa velocidade. Dos 25 fios. 8 . d.o par.! dados. 1 é para paridadc, I} siío para controle c os rcsl:mtcs WO par.t e ne rgia elitrica ou reservados para uliliz.u;ão fut um . Os dbpositivO:i de 16 bits (e 32 bits) precisam uc um segundo cabo pum os sinais adicionai!!. O~ cabos podem ler muitos metros de comprimento. o qUe pcnnile drivcs, sc:mners externos clC. Controladores c pcrifêricos SCS I podem funcionar como iniçiadores ou como alvos. Nonnahnente o COntra. lilllor. agindo como iniçiador. emitc comandos par:!. discos e outros pc.,réricos que agem como alvos. Esses comandos são blocos de até 16 b)'tcs que dizem ao alvo o que ele te m de fal.er. Comandos e resposta.:; ocnrTI.:m em fases. usando vários sinais de controle para delinear as fasc... c arbinar o a,.!sso ao barr.!mento quando varios uisposll,ivos est;io tentando usá-lo ao mesmo tempo. Essa arbi tragem <é importalltc porque o SCS I pcnnitc que todos os dispositivos funcio nem simult.meamcnte. o que de modQ.. potencial resulta I!m gr.!nt.!e aumento do desempenho cm um ambiente em que há múltiplos proCI!SSOS ativos ao mcs nm te mpo (por exemplo, Unix ou Windows XP). IDE e EIDE pennilcm some nte um dispositivo ati vo por vez.
2.3.6 RAID
o
desempenho da CPU vem :mmentando ex.ponl!ncialmente na ultima década c dobra aproxjmadarnc::nte a cada 18 meses. O mesmo não ueonteee com o desem penho do disco. Nu d6cada de 1970. os tempos médios de busca em discos de minicomputadores e ram de 50 u 100 ms. Agora. os te mpos de busca são de lO rns. Na maioda das indústrias léenkas (por exemplo. aUlomóvcis ou aviação), um falOf de 5 a 10 de melhori!l de dC!iempc nho em duas décacas seria uma grande notkia. mas na industria de computadores é constrangt.-dor. Assim, a lacuna e ntre o desempenho da CPU e o de...empenno do disco licou cada vez muio r eom o p:l~sar do tempo. Como vimos. muitas vezes é usado proccssamento par.!ldo para acelero r o dcse mpenhQ da CPU. Ao longo dos anos ocorreu a várias pcssoa.~ quc 8S puraleliltambêm poderia So.!r uma boa idéia. Em seu :lrtigo de 1988, p.mersoll Cl aI. sugeriram seis organizações cspecfficas de disco 4ue poden am ser usadas para melhorar o dc~mpcnho, a con· tiabilidade do disco, ou ambos (P;Jtterson el aI .. 19liS). EsS!l.~ idéias roram rapidamente adotadas pela indúsuia e t.lcro!m origem:!. uma nova classe de dispositivo de EiS denom,inildo RA ro. PaUcrson CI aI. t.lcliniram RAro como Redundant Army nf Inc:\:pen'live Ois ks (arranjo redundante de discos bar.,)tt~'i). mas a indústria redclimu o I ,omo 'independente' em vez de bar.'lIo (illt!xpensive) - lalvcz pam que pudessem usar discos caros'! Já que tam~m era preciso ter um vililo (como no caso RISC verSU.f CISC. também dcvido a Pattersun). nesse caso o bandido era u SLED (Single Large Expcnsiyc Ois k - discn unico grande e caro). A idéia fundamental de um RAIO é instal;Jt uma caixa cheia de discos próxima ao computador, em geral um grande servidur. substituir a plaea do controlador de disco por um controlador RAIO. copia r os dudos para n RAIO e então cominuar a ext.'Cuç:l0 nonn.d. Em outr.ls pilluvr.l.~, um RAIO deveria parecer um SLED para o sistema opcracimml. mus te r melhor dese mpenho e mclhor cnnfiabilidadc. Uma vez qUI! disco~ SCS I têm bom desempenho, baixo preço c a capaddnde dc te r até 7 drivcs em um únieo ,ontrolador (15 par.! o Wide SCSI), é natural que a maioria dos RAlDs consista em um ,ontrolador RAID SCSI mais ulIla c:Uit::t de discos SCS I 4ue parecem um único disco grande para o sis tema opcr::teion'll. Por1anto, nao é pn.'Ciso alterJ.ro software paro usar o RAIO. UIII ótimo argumellto dc venda para muitos ud ministr.tdores de sistemas. Além de parecerem um disco úniCll par:! o software . há uma pl'Opriedadc comu m il todos os RAlOs, que é a distribuição dos d;Jdos pelos drivcs par.! permitir oper:u,ào paralela. Pattcrson ct al . deli niram vários esquemas diferemc.'! para f:lZC r isso C. agom. eles são conhecidos como RAlO nível O até RAJD nível 5. Além disso. há alguns outros níveis me nos imponantes que nilo discutiremos. O tl!nno Ifívd é, de cena maneir..l. umu denominação imprópria. uma vez quc nãu há nenhuma hicrarquia envolvida: há simplesmente seis diferentes organizações possívcis. O RAIO nfvel O é ilustrado na Figura 2.20(a). Consi ... te em ver fi disco vir1ual simulado pe lo RAIO como se fosse dividido em liras dc k setores cada: os setores O a k - I sito a tir.! (l. os sctores k. a 2k - I são a tir.! I e :lSSim por diante. P:..r.! k .:::; 1, , ada tira ê um setor: pam k ... 2. uma tiro! ~ão dois 'M!1Orc.~ ele. A nrg:lni 7~lção RAID nível O escI'Cve tiras COOSé..'Cutivus nos dri vcs por allemância clrcul:lJ'. cnffiO demt)nstr:ldu na Agura 2.~O(a) pam um RA ID , om (!uatro drivcs de disco. Essa distri bult;:1u de tI:'ldos por múlliplos dn\'e~ é dcnumimltla slriping. Por c,'\:cmplo, ' e o software emitir um cumando par..} ler um bloco de d<wos quc consiste em quatro ti rus consecuuvas e comep nu borda da tirol. o coutnllaúor RAI D ~ubd i vi Jir.i esse enmando CIll quatnJ comandos ,epamdlls. um p;JTa cad<1 um dos quatro d iscos. c far.í com que eles funcionem em ~Jlelo. Assim. te rnos EiS parJlela scl1l quc o sol1ware Sóli ba disso. O RAIO nível () funciona melhor com requiSIções gmndc.~: quanto maiores. melhor. Se uma requisição ror maior do que o numero de drives vezcs o taman ho Ju (im. alguns drives l\."Ccber.io mulliplas req uish,õcs. de modo que. quando te nninam a pri meim requisição. iniciam a segunda. Cabe :10 cont rolador dividir u requisi\j:ão e alimentar os comando:; ;Jdequudos aos discos adequados na seqU1:ncia cena c entiJo agnlpar os resultados nu rnemôriu corretamente. O desempe nho é ex,ell!llIe e a implemclllu\j::1o é direta. O RA IO nível (l runciona pior ,om Slstem:lS oper.u.:iUl1;Jis que CllSIUlniUn requisitar tbdos a um setor por vez. Os re.~uhados serju corretos. mas nào há p..'lrJlelismo e. por conseguinte. nl!nhum ganho de desempenho. Uma nUIr.! dcsvanlagclll dessa organiz:llfão é que a confiabilidatlc .! potencialmcnte pior do que ter um SLED. Se um RAIO ..:onsistir em qU;Jtro discos. cada um '0111 um te mpo médio de fa lha lle 20.000 horas. aproximadamente uma vez u ,ada 5.OOJ horas um drive falhará c h:l ver.í perda total de dados. Um SLED ,om um te mpo médio de fal ha de 20.000 hor:l.~ scr.í quatro vezes mais confiá'o'eL Como não há nen huma n:d undànda presente nesse projclO. na realidade de nãu é um ve rdade1ro RAIO.
I
__
~JI "
••o
.
~
••E • •
00
•
~
o ~ ~
•
" •" Q
c
N
o
=
N
'" I'I
•• o •
'''' o r..a .4
..
, , "'., Tira 5
"~
,
Tira 10
Tira 8
Tn 9
""
To'
T~
lira 5
Tn 6
lha 9
TIra 10
~
= ~
eo
~I
u
• • •,
O
"'"
TI.a 8
~
,
~ "'"" 03
fu 7
RAIO nível O
"'" ,
T~
lira 7
Tlfa 6
""' "
"".
~
•
(c)
~
o
~
N
~
o"
~ "'" 6
11no "
To' T~
,
RA'O
nível 1
Tora n
§§§§§§§
,
•• • C •
,
n • • r.2.20
t:J t:J t:J t:J t:J t:J t:J
§ § § §
RAIO nivei3 O a S. Os dtives
=: : !: :'~: : ': -~O: P' -~_oo_n_"'_d._._'_tãO_ I~ ~ ~ ~ ~
(e)
~
t:J ~O ",,.13
n, ~f'()-3 . ~ ~ , .. .... "'" .
"'" O Tina .4
TA'
T~
O
Tira "
' "'"
RAIOnlvel2
11,. 2
Tn 7
P4-7
rifa 10
l1nI 11
P8-11
lira 2
""
E'O-3
To 5
"'" 9
Tora'
TI.a 5
TIra 9
Tl'8 12
P12·Hi
P16,19
T1fa 16
".7 " " '''' " "'" " TO. " "~ " "" " ,.., "" " " "rn "
RAIO nlvel4
P4-7
RAIO nlvol5
i\ próxima opção. RAlD nível I. mostrada na Figura 2.20(b), é um RAIO verdadeiro. Ele duplica todos os discos. ponanto há qualru discos primários e qunLrQ discos de back-up. P".lr3 uma escrita. cada tir.! é escrita duns vezes. Par.l uma leitura. quaisquer da.~ duas cópias pode ser usuu.,. distribuindo 11 carga por mais drives. Por conseqüência. o desempenho da escrita não ê melhor do que o de um unico drive, mas o desempenho de leitura podc ser duas veles melhor. A tolerância à falha é excelente: se um drivc ralhar. biliot:1 usar a outro.L cópia cm St!u lugar. A recuperação cOII.')i.')tc na .')i mplcs instalalfão de um nuvo drivc c cm copiar tooo u drivc de back-up para ek. Diferentemente tios níveis () e I. que Imb:tlham cnlll liras de SCloo..-S. () RAIO nívd 2 trabalha por palavr..L. po....~ i vclrnentc .Ité por hytc. Imagine llividir c:Kb. bytc do disco virtual único em um p:lr de nibblcs de 4 bit... c ent:lu IlCtescentar um código de H:unming ri cada um pard fommr um paluvr.l de 7 bits, dos I.juuis os bits I. 2 e .. fossem bits de fl'l ridadc. Imagine ainda tlUC li posição do hra'r'U c li posição Nt:.LCional dos sele drivts da Figur..L 2.20(c) fossem sincronl7.:vJus. Entãu M!ria J>O.').')ívcl escrever a palavr.l de 7 bits I,,:odificat.lu por I~ umming nos sete drivcs, um bit por drivc, O cOInpUlador Thinking Machinc CM-2 usou c...se ~..quema. pegando pa1ayr..L." de 32 bits de dados e :ulicinn:mdu 6 bits de paridade para fonnar uma palayrn Hamming de 38 bilS, mais um bit cxua pard paridade de palavr.l. c distnhuindu cuJa palavr.l em 39 driyt'!s de disco. O rendimento total et'..L imenso porque cm um tempo de setor cle poúia escreyer o e4uiva1cmc a 32 sclOres de dados. Além disso. perder um drive nào cuulklva problemas. poRjue essa pcrdu equivaleria a perder 1 bit cm cada palavr..L de 39 bit~ lida. algo ljue o código de Hamming podcria manipular racilrnellte. Uma desvantagem c! 4ue esse csquema requer que as rotações de todos os drives sejam sincroniwdas. e isso só faz sentido eom um numero substancial de driycs (mesmo com 32 drivcs de dados e 6 drives de paridade. a sobreclIrga ~e ria de 19%), O esquema também exige muito lio controludor. urna vez que ele deve cfetuar uma suma de verificaçãu (dwchwn) de Hamming li cada tempo de bit. O RAiO nível 3, Huslr..tdo na Figum 2,20(d), é uma yersào simpliJicadn do RAIO nível 2. Nesse arranjo, um único bit de paridade é computado par..t cad::l palavra de dados e escrito em um drivc de paridade. Como no RAlD
.. ..
"._-
L
nível 2. os drivcs devem estar em c:
2.3.1 CD-ROMs Discos óticos foram desenvolvidos originalmente para gravar programas de te!t!visão. mas podem ser utiliz.ados par.! uma fu nção mais estética como dispusitivos de armaí'.cnagcrn de computadores. Devido à sua grande capacillade e baixo preço. discos óticos são muilO 1Is.1dos para distribuir software. livros. tilmcs e dados de todos os tipos. bem como para fazer back-up de discos rígidos. A primeir.! gernção de discos óticos foi inventada pela Philips. o conglomerado holandês de eletrônica, para conter filmes. Tinham 30 cm de diâmetro e eram comcrcialií'.ados com a marca La.~erVision. mas não se estabeleceram. exceto no Japão. Em 1980. li Philips. ju nto com a Sony. desenvolve u o CD (Comp:ll.:l o isc), que rapidamente suhstituiu os dis· cos de vi nil de 33 1/3 RPM usados par.! gr.!var música. Os dados técnicos exatos do CO foram publicados em um Pndr:1o InLCrnacional IS 10149. popularmente conhecido como Rcd 800k (I~ ivro Vcnnclho) por calJS<.l da cor de 'iua capa. (Padrões Internacionais s.ão I!mitidos pela Inlernational Organií'.aUlln for Standardization. que ~ li contraparte internacional de grupos de padronização nacionais como ANSI. OtN etc. Cada um tem um numero IS.) O motivo da publicação das espccilicaçõcs do disco e do drive como um Padrão Internacional é permilir que COs de dift!renles gmvauorus I! aparelhos de rep roduçao de diferentes fabricantes funcionem em conjunto. Todos os CDs têm 120 mm dI! diâmetro e 1.2 mm de c,<;pcssura. com um orifício de 15 mm no meio. O CD de âudio foi o primei~ TO mcio de armazenagem digital a te r sucesso no mercado de massa. Supõe-se que devam durar cem anos. Favor verificar em 2080 lima awali7.ll\(ão sobre como se saiu o primeiro lote. Um C O é prepar-.!do com a Utili7.ação de um laser infrJ.vcnnclho de aha potência paru queimar oriffcio.... de 0.8 mknm tle diâmetro em um di:.eo meslre revestido de vidm. Cnm nase nesse me~trc ê fabricado um molde. com saJicncias onde Cllt41Vam os oriffcios de lascr. Ent:ill injcla-se policarboruuo fundido nc.,l>C molde pum fonuar 11m CO cnm tl mesmo padr.1o de orirrcios Jo discolncSLT'C I'Cvestido de vidro. Em "Cguidll é dcpnslIalllluma fina camllda de :1.lumínio rciletivo ~(}brc o policarhonalO. eubcn:l por 11m vemil. de proteção e. por tim. \lCm uma el1ljUCla. As marc:ls no ~III'K· IrJlo de policarbonalu ,ãu lIenolllllllu.la., dep~-.ffics !pib') e as üreas emre elas ~ão denomin:lda.s planos (lamis ). Quando o disco ~ tocado. um diodo a laS<.:r lIe baixa polência emite lu~ infravennclha de ".'omprimento de orlda de 0.78 miemn sohre 3$ depress{')es e pl an m ~tando el>tes passam pdu luz. O laser está no lado do policarbonato. punamo as depressõcs estão invenidas na direção do laser c aparecem cumo saliências sobre uma ~upc fffde que . .:aso comrârio. seria plana. Como as depressõcs têm umu altur.! de um quarto do compri rnt:nto de onda dll luz dt! laser. li lul. que se rel1etc Je uma úcpressão tem uma defasagem de met\) compnmcnto de onda em relação à luz que se ccllete das supcrfides qUI! a circundam. O resultado ê que aJo dua.'Õ parlCS imerferem uma com a Olltro de modo destrut.ivo e devolvem menos luí'. ao fotoJete!; tor do aparelho de reprodU(ilio do qUI! a luz que se renetc de um plano. É assim que o aparelho distingue uma depressão de um plano. Ernhoru talvez pareça mais simples usar lima depressiío par.! grJ.var um O I! um plano para gravar um l. ê mais conli;ivel usar uma IrJllsição depressão/plano o u plano/depressão paro um I e sua ausência par.! um O: ponanto. esse é o esquema usado. As depressllCs e planos são escritos em urna úmca espir:J.! contínua qu~ começa peno do orifício L'Cntr.l1 t! con· tinua ptlr uma distãncia de 32 mm em dircç:lo à borda. A espirnl faz 22. I 8H revoluçõcs <10 redor do diseo (cerca de flOU por mm). Se fosse desenrolada. Icria 3,6 km de comprimento. A espir..tl ..! ilustrada nn Figura 2.21 .
L_ -
•o•" •
~
=
~
E
o
U
•
~
·• E
• o
c
~
•• c •
~
o
N
o
Sulco em espil"lll
•• o
~
•o ~
E
A gura 2.21
Estrutura de gravação de um disco compacto ou CO-ROM.
o u
• • •
~
BIoca de 2 K de daoos de usuário
~
~ o
•
~
o ~ ~
• C • N
~
o
Par..! fazer com que li música seja tocada a uma taxa uniforme, é preciso que as depressõcs c os planos passem sob a luz a uma velocidade linear constante. Por conseqüência. a taxa de rotação do CD deve ser continuamente reduzida à medida que o !;UbcçolC de Icitur.:l se move da pane interna pam a externa do CD. Na parte interna a taxa de rotação é de 530 RPM par.! conseguir a taxa de reprod ução regular de 120 cm/s; na parte mais externa tem de cair para 200 RPM para dar a mesma velocidade linear no cabeça!c. Um drivc dc vc::!ocidade linear constante é bem diferente de um drive de disco mag nélico. que fu nciona a umu velocidade angular constante, independente de onde o cabeço!e esteja posicionado no momento em questão. Além dh,;so, 530 RPM cstá bem longc das 3.600 a 7.200 RPM com a qual gim a maioria dos discos magnéticos. Em 1984. a Philips l! a Sony perceberam o potencial para usar CDs como meio de armazenagem dc dados de computadores. então publicaram O Yellow Ilook (Livro Amarelo) ddinindo um padr:io exato par.! o que agora conhccemos como CD- ROMs (disco cnmpacto com memlíria somente de leitu ra ). Par:l pegar carona nu mercado ,.k CDs de áudio. que já cra substancial na época, os CD-ROMs eram do mesmo tam:lnho físico dos CDs de áudio, guardav:lm compatibilidade mednica e ótic:l com eles e er:lIn produzidos usando as mesmas m::íquinas de moldagem por injl.."ç50. As conseqüênci:ls dess:l decisão fOr.!m a necessidade de motores lentos de velocidade variável mas também que o custo de ln:lnufaturJ. dt! um CO-ROM estivesse bem abaixo de um dólar para volume mooerndo. O Ycllow Book definiu a fonnatação dos dados dt! computador. Também melhorou as c:lpacidades de correção de erro do sistema. um passo essencial porque, embor.l os :lprcciadores de músiCa nãu se importassem com perder um hit :lqui, oulro ali, os apreciadores de computadores tendiam a ser muito exigentes com isso. O formato básico de um CD-ROM consiste em codificar t;lda byte em um símbolo de 14 h i l.~. Como vimos antes, 14 bil~ são suticientes para cod ilicar com Hamming um byte de R bi ts e ai nda sobr,lm 2. Na verdade, é usado um sistema de codificação mais poderoso. O mapeamento 14 paril 8 par,! leitura é realizado em hilrdwarc por COllSUl1ll de tabela. Do nível seguinte par.l cima. um grupo de 42 símbolos consccutivos forma um quudru de 588 bits. Cada quadro contém 192 bits de dadm (24 bytes). Os restallles 396 são u~:ldos pam correç[io c comrole de erm. Até aqui, esse esquema é idí:ntico parJ CDs e CD-ROMs. O que o YeJlow Book acrescenta f o agnl pamento de 98 quadms em UIII sctur de CD-ROM, como mostra a Figura 2.22. Cada setor de CD-ROM começa com um prelimbulo de 16 byles. sendo os 12 pri meiros 00FFFFFf+H+FFFFFFFFFFOO (hexadecimal). para pemliti r que o aparelho de reprodução reco nheça o infcio de um setor de CD- ROM. Os 3 bytes seguintcs contêm o número do Sl:tor. nccessârio porque fazer busca eTn um CO-ROM com sua única cspiral de dados é muito mais dirícil do que em um magnético com s uas trilhas concêntricas uniformes. P:lra buscar. o suftware no tlrive calcula aprollimadarm:nte ollde ir. leva o C:lIx.\Z()tc até 101 e Cllliiu comcça a procur:lr um pre:irnbulo para ve ri licar a prcci~ão do scu cálculo. O úhimo bit do preâmhulo é o modo. () Yellow Rtlok dctine doi" motim. O moclo I usa () layoul da Fig.ura ::!.22. cnm um preâmbulo de I fi nytcs. 2.048 hylcS de dados c um ct'ídigo de correção de crro de 288 bytcs (um código de Recd-SolomOIl de intercalação cru zada). O modo:! COTTlbina os dados e campos F.CC em um ..::ampll dc J.nuos de 2.331'1 hytes para as aplie:u;Õt!s que não precisall1 de co/"T"cÇ:J.o de elTO (ou n:lo displ)cTTl de tempo para executá-Ia) corno auuio e vídeo. Note qw.:, par... oferecer excelente conliilbi lidatle, são usatlos três esqucmas ~parados de corrc~ào de erros: dentro de um ~ínl-
Srmbolosde CICIO ..• ClCCl 14 1!i\1;cada
T42 sim-;;:s que compõem 1 quadro I e c c c c e
FlguraZ22
Layout lógico de dados em um CD-ROM.
\
I
. . Bytas 1ti
2048
Pr1UlmbuKl
---
-
CI c
98 quadros que compõem I selor
Quadros do 568 bUs. cada um COf1!ondo
24 byles do dadOs
Selordo
ILi'I:::-___--::o":::~:'-___---.JILE=cc:' -l1. (2352 ,-, . bytlls) 268
I
l
bolo. Jcntro til! um quadro c demro de um setor de CD~OM. Erros de hit único são corrigidos no nível mais bai.'lO erros I.!m rajada curtos são corrigidos no nível dc quadro c quaisqucr CITOS residuais solo apan hados nu níve l de sctor: O preço pago por eS.~a confiabilidade é que ela ocupa 98 quad ros de 588 bits (7.203 by!cs) para lf',lllSpurtar uma única carga útil de 2.048 bytes, urna eficiência de apc nas 2H%. Drivcs de CD-ROM de UJlla vdocidadc operam a 75 setores/s, o quc dá uma (:lAa de dados de 153.600 bytcs/s I!m modo I c 175.200 bYlcs/s cm modo 2. Drives de dupla velocidade são duas vezes mais rápido.~ (! assim por dian te. até a vc!ocidmk mai ~ alta. Um CD paddo dc :íudio tem espaço p:lm 74 minultls de música quc. se uS;J.do par.l dados do modo 1. dá uma capacidade de 681.l)84.UOO bytcs. Esse númem costuma:.cr infonnudo como 650 MB porque I MS é igual a 220 bytes ( 1.048.576 bYICS). e não 1.000.000 bytcs. Note que mesmo um drive de CD-ROM 32.'1 (4.915.200 hytl!:ils) n:ll) é páreo par:! o drivc de disco magnético Fast SCSI-2 a la MS/s. mesmo quc muitos drives dc CO-ROM uscm a intcrfacc SCSI (também existcm drives de CD-ROM IDE). Quando você se dcr \Xl nta de que o tempo de bu.~ muitas vezes é de várias centenas dc milisscgundos. deve ficar claro que os drives de CD-ROM não estão absol utamente na mes ma catcgoria de desempenho tios drives tie disco magnético. a dcspeillJ de s ua gr•.IOde capacidade. Em 1l)86. a PhiJips atacou mais uma vez com o G reen Book (Li vro Ver de) acrcsccnt:!ndo recunoos gr.ilicos c a capacidade de intercalar ~udio, vídeo e dados no mesmo setor. uma caracterís.tica essencial para CD-ROMs multimídi:l. A última peça do quebm-cabeças do C D-ROM é o sistema de arquivo. Para possibilitar a ulili7..aç50 do mesmo CD-ROM em dilerentes eompul:Idores. CI':l preciso chegar a um acordo qualllo aos sistemas de arquivo e m CDROM. Pum conseguir esse acordo. repreScntanlCs de muitas empresas fabrica ntes. de compUladures se reuniram em Lake Tahoc nas High Sierras na fronlCil':l Califómia-Nev:.lda e arquitetarJm um sistema de arquivo que denominaram High S icrra. Mais tarde ele c:voluiu pam um Padr:io Intemacional (IS 9660). O sistemll lCm tres níveis. O nível I usa nomes de arquivo de I1té 8 caracteres que têm a opção de ~cr ou nilo ,«;gu ldos de uma extensão de até 3 canletercs (a convenção dc nomeaçào de arquivos MS- DOS). Nomes de arqui· vos só podem conter Ictr.lS maiúsculas, dígitos e o grifo. Diretórios podem ser aninhados lllé oilo. mas nomes de diretórios nilo podem conter extensões. O nível I requer que todos os arquivos sejam com ígllos. o clue não ~ Pnlblcma para um meio que é escrito ~pcn;ls uma vez. Qualquer CD-ROM que obedcça o IS 9660 nível I pode ser !ido uS!l.Ildo MS-DOS, um computador Apple, um computador Unix ou prollÍcamente qualquer outro eompul:Iuor. Os fabricantes de CD-ROMs consideram essa propriedade uma grande vantagem. O IS 9660 nível 2 pennite nomes de até 32 caracteres e o nível 3 pcnnite arquivos não contíguos. As extenslies Rock Riuge (o nome extravagante se deve à cidade em que Mel Bmoks filmou BllJ:.ing Saddle.f IBanzé no Oestel) pcnnitem nomcs muito loogos (par.l Unix), UIDs. GlDs, e en luces simbólicos, mas os CD-ROMs que nilo obcdt.'Ccm ao nível I Mio poUerJo ser Jido~ em todos os computadores.
2.3.8 CDs graváveis De início. o equipamento ncçcssário para produzir um CO-ROM mestre (ou CO de áudio, por falar nisso) erJ muito caro. Mas. como sempre acomece nu indúsu;1l de computadores, nada pcnnanece caro por muito tempo. Em meados da década dc 1990, gravadores de CO não maiores do que um reprodutor de CD cmm um periCérico comum dispunível na maioria das lojas de computadores. Esses dispositivos ainda eram direrentes dos discos magnéticos porque, uma vez gr-lvados. os CO-ROMs não podiam ser apagudos. Aindól assim. c1es mpidamclllC encontraram um nicho como um mcio de hack-up para grandes discos rfgidos e também pcnniuram que indiv!duos nu novas empre~as fabricasscm seus próprios CD- ROMs em pequena l!SCala ou procluússem mestfCs par.l forneccr a entprcsa~ eomcreiais de reproduç:1u de gr.mde:. vol ume.~ de CDs. Esscs drives:.5o conhecidos eomo C DRs (CD-Recm-dablcs - C Ds gr-J v:í veis). Quanto :m aspectu fisicn. I)~ CD-I~~ ctllneçar.un com disctls cm brunco de policarbon:lro dc I:!() mm de di5II1Clro quc ~iio CO!1m CO-ROM!'. !!xceto por conterem um ~ulcn de 0.6 mm de largura p:1r.\ g,uiar (l laser dt/r:mtc J eSCOla (gmvaçãu). () ~ulcn tcm um desvio senoidal de 0.3 Illmlll a uma freqüência dc exato:. 22,05 k.Hz pam pmver rcali menta\;:Io continulI de modo que a rotação possa scr monitorada c ajuswda ..:om precisão. C!l.'lO ncccssário. Os primeims CD-Rs pareciam CD-ROMs tlonnais. !!XCCIU I)l)r terem a :.uperfíde supcrior dourada em vez de pratc:J,da. A cor doumda vinha da utilização de ouro verdadclm em vez de alumínio na ca.mada retle\iva. Diferente dos COs pr.lIcados quc continham depressõcs flsicas. nos CO-Rs as diferente~ rellelividadcs das depre~si)cs c pianos lêm de ~cr simuladas. Is....u é fei to com a adiçào de uma c;lmad;l de corJllle Cnlre () policarbonato e a superfície refletiva. cumu mostr.t a Figur:J. 2.23. São usadas duas ..:spécies de cor.mtes: cianma. que e venJe. c ftalocianina, que ~ :.Imarclo-aJarJ.njuda. Os ljuílllicos podem tiiscutir eternamente sobre 411al das duas é melhnr. E.~ses comiUCS s:10 ~c mclhame s aos usados em fotografi a. 11 que explica por que a Kodak c a Fuj i são grJndcs fabricantes lle CD-Rs. Com o tcmpo. a camada rcllctiva dourada foi substituída por uma camólda de alumínio. Em seu estágio in icial. :\ canlada de cor.lnte é Irnosparemc e pennite que a luz do laser que :.I atravcssa ~jll refletida rela camada re!1etiva. ParJ grJvar (escrever). () laser CO-R ~ ligado em alta potência (R-16 mW). Quundo u feixc atinge uma porção do corante ele tl aljuece e rompc a ligação química. E.~sa aJtemção d.1 estrutura molecul'lr cri:! um plinto escuro. Qu.ando I) CD-R é lido (a 0.5 mW).o 1'0lOOetcClor vê uma diferença entre (lS poutos escuros onde o corJntc Coi atmgido c as áreas (r.msparcntes onde o disco está intacto. Essa difcI'Cnça é interpretada como
·• o
~
•
•
~
"o
u
•• e • • ~
•
.•• ~
o
~
"c •
~
o
N
o
• •
~
"
"' Raura 2.23
•o•"
I
Seção transversal de um disco CD-R e laser (não está em
~
•
escala). Um CO-ROM tem
=
estrutura semelhante. exceto
~
por não ter a camada de
eo
u
corante e por ter uma camada
•
depressões em vez de uma
1.21 rM1
p"oC~_'c---,_··__-1ii-___S_'_'"_'_'_'o___
, -_ _
_
..J
_ MO _ _ Ol~a.
Lente
de aluminio cheia de
~
camada refletiva.
ForoéelectOr
-{}-
-
oonOo inlravennelho
•
~
o
•• • c" •
~
Q
o"
diferença entre depressõcs e planos. mesmo 4u3ndo lidas por um leilor de CO- RQ M nonoa! ou até mesmo por um reprodutor de CO de áudio . Nenhum tipo novo de CD poderia .se !1nnur com orgulho sem ler um livro colorido, portanto O CO-R tem o O mngc UtKlk (Livro Lar.lllj a ). publicado em 1989. Esse documento dctinc o CD-R e também um novo fonnalO. o CI).. ROM XA. que pcrn)ite que OS CO-R... sejam l,'l'aV:wos por incrementos. alguns setores hoje, outros amanhã e mais alguns no próximo rnes. Um grupo de setores consecutivos: escritos de uma só vez ~ denominado trilha. de CD-ROM. Urna das primcirJS uli1iz:tÇõc"<; do CD-R foi no PhotoCO da Kodak:. Nesse sislema o cliente leva ao processador de fotos um mio de filme exposto e seu velho PhotoCD, e recebe de volta o mesmo PhotoCD com novas fotos acrescentadas às antigas. O novo lote, que é criado por digit:l1i7~ão dos negativos, é gravado no PhotoCD como urna trilha de CD-ROM separJda. A gT"Jvação incrementai é necessária porque os CD-Rs virgens são muito caros parJ se ter um novo para cada rolo de tilme. Contudo, ti gravação incrementai cria um novo l>roblema. Antes do OrJnge Book, todos os CD-ROMs tinham, no inido, uma linica VTO C (Vulume T:ahlc IIr Cllntents - tabela de conteúdo de volumes). Esse esquema nilo fundona com escrilas incrementais (isto é, multitril has). A solução do Omnge Book é dar ti eadl trilha de CO-ROM sua própria VTOC. Os arquivos listados na VTOC poúcm incluir alguns ou todos os arquivos de lri lhas anteriores. APÓS a inserção do CD-R no drive, o sistema operacional raz uma busca em tooas as trilhas do CD-ROM puro localizar a VTOC mais recente. que dá o estado atual do disco. Por incluir alguns, mas não tooos os arq uivos de trilhas anleriorcs na VTOC cnrrcnte. é possível dar uma ilusão de que os arquivos fomOl apagados. As trilhas podem ser agrupadas em St.."'-SÓcs, o que resulta em CO-ROMs multisscsSÕCS. RepnxlulOrcs de CO nom13.i5 não podem manipular CDs mull issessõcs. uma Veí. que t!speram umu única VTOC no início. Cada trilha tem de ser escrita em urna única opt:ração conlínua sem interru pção. Por conseqilênda, o disco rígido de onde os dados estão vi ndo tem de ser suficientemente r.ípido para cnU'Cgá-Ios a tcmpu. Se os arquivos a copiar esti verem distribufdos por todo (l disco rígido, os tempos de husca podem faz.er com que a corrente de dados parJ o CD-R cesse e cause um temido estouro de buffer (por falta). Um estouro de bu ffc r resulta na produção de li ndos e bril hantes - se bem que um tania caros - aparadores de copos de bebida ou em umfrübet! dourado ou pr"..ltcado de 120 mm de diâmetro. O sol\warc em CO-R habitualmente oferece a opç30 de re unir todos os arquivos de cntr.lda em uma única imagem contígua de CO-ROM de 650 MU antes de gruvar o CD~R. mas esse processo nOl1'11l1lmente dobra o tempo efetivo de escrila. requer 650 MS de espaço de disco livre c ainda assim nào protege COnlrJ di .~cos rígidos que entram em pânico c decidem faLcr uma nnvlI ealibrJ.çâo tc rmiea quando ficam muito quentes. O C O-R pnssihilila que indivíduos e empresas copiem CO-ROMs (c CO.. de :íudio) cum f:u.:ilicklde, em geral .:um J. \ mla,·:'!o \In.. d irc il O~ .luwr~lj .. do cdih.lr. V :i rio~ esquema.i j :i fOT:.11II ill\-l.'nl:adu~ parJ ditkull;,tr esse tipO de pirJtaria c também a Icituru de um CD-ROM usando qualquer OU!nl cuisa que não scj;,t o sut)warc do editor. Um deles cnvolve gravar tudus tiS compnmclllos de arquivos do CD-ROM CO nttl nmltigigabYle. frustrando quaisquer tcntativas de cupiar os uflj uivos parJ. dbco rigiJo l;om a utiliozaç50 de suh warc de e6pia padrlo. Os vcniadciros cumprimentos \!Sião cmbutidos nu sunwan: Jo <•.'ditor \lU ocultos (possivelmente criptogmlooolo) no CO-ROM em um lugar incspcrJduo Um \lUtm esquema usa intencionalmente ECClo ineolTCtos em setores selecionados. na espcmnça de 4ue o <;ol)ware de cópia de CDs 'corrija' os erros. O o;oliwarc de aplicação verillca os ECCs e se rttlL'lU a funcionar 'iC estiverem l;OITCIOS. Usar lacunas nàtl padm0l7.ada.~ entre trilhas c outros 'defeitos· ffsicus também -mo pos.~ibil i dadcs . :.I
2.3.9 CDs regraváveis Em!Jt)rJ tOtlllS estejam acustumados com (}Ulr.L.~ mídias que aceitam apenas uma escrita, como papel t"otogrnfico. existe untl! demanda por C O-ROMs rcgrJ.vliveis, Uma h.'Cnologia di.~pon ível agom é o CO-RW l e l)RcWritJble). que usa um meio do mesmo tamanho do CDR. Contudo, em vez úos curantes cianina ou ftalocianina, () CD-RW usa umllliga de prata. indio. antimônio e teJúrio pam a c:.Imada de Ilravuçào. Essa liga tem dois c.~tados estáveis: cristalino e amorfo. Ctlm diferentes rc tletividadcs.
..
"
Os drives de
CD.R~V
usam 1a.'lCrs com três potências diferentes. Em alta potência o 1a.'lCr funde a liga fazl:n-
do-a pa!lsar do estado cnslali no de alta rc tlcti vidnuc parJ o t=slado amorfo de baixa reilctividadc para representar uma dcpress:1o. Em potência mécJia a liga se funde c vl)l(;J novamente u seu ~ tado natural cristalino par.! se tornar
mwamcnlc um plano. Em baixa potência. o estado do mutcrill l ~ sondado (pam leitura), mas nào OCorre nt!nhuma lr.lnsição de fase. A r.1Zào por que o CO-RW n:in substituiu complct:l.Incnlc o CD-R !! que os CD-RW em branco SUl} mais caros do 4ue os CD-R em br.lnco. Além disso. para aplic~õcs dt: back-up de discos rigidos. o falO de que. uma vez escri10.
o CO não possa ser apagado acidentalmente é uma grande vanL'lgcm.
2.3.10 DVD
o rommlo básico CD/CO-ROM está nu pruça desde 1980. A tecnologia melhorou dc.~de então. portanto, agora discos óticos de capacidade mais :Iha são economicamente viúvds e h;l uma gr.mde demanda por eles. Hollywood adoraria substilUir as fitas anal6gicas de vidcotclpc por discos digitais, uma vez que estes têm qualidade mais aha. são mais fáceis de fabricar, duram muis. ocupam menos espaço nas pr:uclciras das locadoras de vfdeo e não preci sam ser rebobinados. As empresas fabricantes de eletrônicos de consumo estão à pnlcura de um novo proouto revolucionário c muitos fabricantes de compuladores querem adicionar características multimídia a seus softwares. Essacombinação de tecnologia c demanda por três indústrias imensamente ricas e podt!msas resuhou no OVO. origi nnlmente um auônimo p:\rJ. Digit.a l Video Oisk (di.s<.'O de vídt.'o digilnl). ma.~ agora oJicialmente Digital Vel'SJtile Disk (disclI versátil digital). OVOS usam o mesmo desenho gerJ.1 dos COS, com discos de polic:lfoonato de 120 mm moldados por injeç50 que contem depressões c planos que silo il uminados por um diodo de laser e lidos por um fotodetector. A novid:lde c! o uso de Depressiks menores (0.4 mieron em vez do 0,8 mícmn para COs). 2. Uma espiral mais apertada (0,74 mfcron entre trilhas COI11I".1 1.6 micron pal".1 COlO). 3. Um laser vennclho (a 0.65 micron versl/s 0.78 mícron para COs). 1.
••" • Q
~
= ~
eQ
u
• ••e •
~
•
00
•
~
o ~ ~
•• c
•
=
o"
N
Juntas, essas melhorias aumentam setc VC7..cS a capacidade. passando parn4,7 GB. Um drivc de OVD Ix DVO funciona a 1.4 MB/s (versus 150 KB/s pam COs). Infelizmente, a troca para lusers vemlt:lhos usados em supennercados signilica que os reprodutores de OVO precisarão de um segundo lascr ou de uma extr.lvagante ótica de conversão pam poder ler os CDs c CO-ROMs existentes. algo que nem todos pOOcrào oferecer. Além disso, ler CD-Rs e CD-RWs t!m um drive de OVO talvez não seja possível. Capacidade de 4.7 GO é suficiente? Talvez. Usando compressão MPEG-2 (padroni7.ada no IS 13346). um disco OVO de 4,7 GB pode contcr 133 minutos de vidco de tela cheia com imagcns em movimento em alta resolução (720 X 480), bem como trilha.'i sonoras em até oito idiomas e legendas em m:Li .~ 32. Cerca de 92% de todos os filmes que Hol1ywoodjá produ;du têm menos de 133 minutos. Não obstanlc. algumas aplicações. como jogos multimidia ou obrJ.s de referência. talvcz precisem mais. c HollywoOO gosmria de gruvar vários tilmcs em um mesmo disco. portanto quatro formatos t"orJm dcfinidos: t. 2. 3. 4.
Uma face. uma camada (4.7 G8). Uma face. duas camadas (8.5 GB). Duas faces. uma camada (9,4 GB). Duas face.~, duas camadas (l7 G8).
Por quc tantos fomlatos? Em uma paluvrn: poHticl.. A Philips e a Sooy queriam discos de uma unica face com duas camadas parn a vcrsão de altll capacidade, mas a Toshiba c a TIme Wamer qut:nam discos de duas ftlcc.'i, com uma camada. A PhiJips e a Sony não imaginartull que as pessoas estariam dispostas a virar os discos. e a lime Wumer não acreditava que cnlOC:1r duas c:lInaths cm uma facc poderia fuocinnar. A o;oJução de conciliação: uKlas as comblnaçõcs. mas o mercado detenninani quais sobreviverão. A tccnologia da camad:l uupla tem um calTlada rencliva emhaixo. coberta por uma camada semi-renetiva. Dependendo de onde o laser fClf fOl.::lli/.adtl, de o;c renetc de uma cillnauallu da OUlr.1. A cumaúa IIIlcn\lr pred~a de depressiks e planos um pouco maiores. para lei\ul".l conliávcl. portanto sua capacidade é um pouco menur do que a da camada superior. Discos de dupla face são rabricados colando dois discos de uma face de 0.6 Olm·. Para que todas a.~ vcrsi\es tenham a m\!Smu \!Spcssura. um disco de uma face consisle em um disco de 0,6 ml1l colado ti um subslr.lto em hmnco lou. talvet. no fu turo. contendo 133 minulOS de propagantla. na esperança de que as pcS'iO:.l.~ licarão curiosas de ~nhcr o 4ue existe 16. dentro). A estrutura do disco de dupla face. dupla cilmuda, ê i1u~tl"J.da na Figurn 2.14.
, I
I I
L
ngun 2.2C Disco de OVO de dupla face. dupla camada.
o
~
•
u
o OVO foi arquitetado por um consórcio de dez fabricantes de elcnunicos de commmo. sele deles j:lponcscs. em c:;ttcila colaboração com os principais ~I údios de Hollywood (alguns dos quais
~ão
de propriedade dos f:lhri-
canles de eletrônicos j aponeses pertencentes ao consórcio). As cmpresils de computadores e
••" o
~
•
•
~
E o
u
• • ,•
~
~
,
•
u
c
telecomuni c:lçõc:~
não
fomnt convidadas para {l piquenique c {) foco resultante foi utilizar OVD para locação de filme s t: apresentações dI! vendas. Por t:lIcmpl0. entre as características padrão está a capacidndc de saltar cenas impróprias em tempo real (o que pcnnitc que os pais transfomlCffi um filme proibido parn menores de 18 anos em um filme qUI! possa ser visto por criancinttas), seis canais de som c suporte para P..m-and-Scan. Essa úlLima carJ.ctcrislLca pcnnitc que O locador de OVD Jccida dinamicamente como recona.r as extremidades din:iti.J c cstlucrda dos filmes rcuja n:lação l;lrgur:llaltu ....J é 3:2) parJ que se ajustem aos tumanhos das tdas de aparelhus de tc1evis;io ex istcllles hoje (cuja relação é 4:3). Um outro item em que a indústria de cotnpuLUdnrcs provavelmente não tcna pensado é uma incompatibilidade intencional entre discos destinados aos EstruJos Unidos e discos destinallos à Eumpa, c aind:..L Ollll"'OS ,XldrUcs parJ oUtruS contincntes. HollywOOll exigiu C-'\Sll 'CaT"JCtcrislica' porque filmes novos !lào sempre la.nçados antes nos Est!ldos Unidos e então despachados parJ a Europa quando os vfd(.'OS (."Onll.'çlJn a sair do circuito comercial nos Estados Unidos. A idéio. Cr:l gurJJllir qlle as locadorJs de vidl..'O n:io pudcs.-.cm t.:omprJr vídeo:> nos &tados Unidos II1Uito cedo. I) que n.'tIu:rjria as receitas de Hlmcs novos nos cinemas da Europa. Se Hollywood 1t1illlda.~SC na indústria de computadores. tcríamos discos Ilex.fveis de 3.5 polegadas nos Estados Unidos c discos Ilcxívcis de 9 cm na Europa.
~ ~
• " •=
~
o"
2.3.11 Blu-Ray Nada lica pamdo no negócio de computadores. o que também vale parn a tecnologia de armazenagem. O OVO mal acabara de scr lançado e seu sucessor já ameaçava tomá-lo obsoleto. O sucessor do OVO é o 81u-Ray (rJio azul), assim chamado porque usa um 1a.'iCr ;rwl. em vez do vcmlclho usado por OVOs. Um laser azullem comprimento de onda mais curto do que o laser vermelho. o que permite um foco mais preciso c, portanto. deprcssik:.~ c planns mcn()rc:~. Discos l3lu-Ray de uma face contêm cerca de 25 GB de dados: os dc dupla fuce contêm cerca de 50 GB. A taxa de dados é apmxi madamente 4.5 MB/s, o que c! bom para um disco 6tico. mas ainda insignilic:Ullc em comparação com discos magnéticos (cf. ATAPI-6 a 100 MB/s e Widc Uilra4 SCSI :1 320 MB/s). ESpcr.l-SC que. com o tempo. o Blu-Ray substitua CO-ROMs c OVOs. mas essalr:lnsição ainda levará alguns anos.
2.4
Entrada/Saída
Como mencionamos no início de:stc capítulo. um sistema de computador tcm lrCs compone:ntes principais: a as memórias (primária e secundária) e os cquipame:lltos de EIS (t!ntrada/.~.aída), ou UO (InpullOulput) como impressoras. scanncrs e mOOcns. Até aqui só e:xalllinamos a CPU e as memórias. Agora é hora de examinar os I,.'q uipamentos de EIS e como eles estiío conectados ao resto do sistema.
cru.
2.4.1 Barramentos Em lennos rrskos. a maioria dos computadores pessoais e estaçõcs de tr:I.balho tcm estruturn similar à mostrada lia Figura 2.25. O arranjo usual é uma caixtl de metal que: contém uma grande placa de cin:uito impresso nl pune inferior. denominada placu-mãe (ou placa-pais. para os politicamente corretos). A placa-mãe contc!m o chip da CPU. alguns encaixes par.! os módulos DIMM e vários chips de suporte. Contém também um barramento ao longo do comprimento c soqueles nos quais os conl,.'Ctores de borda de placas de EIS podcm ser inseridos (o barr:unento PCI). PCs mais antigos também têm um segundo bamunento (o barramento ISA) par.!. placas de EIS herdadas. mas os computadores mudemos não os têm mai s e esses barramentos cstão desaparecendo rapidamcnte: A estrmura lógicOl dc um computador pessoal simples de hai.l:o preço é mostrada na Figura 2.26. Es~c etllnpularJnr lem um línit.:o bUIT;uncnlo para conectar a CPU. a mcmória e os equipamentos de EiS; a maioria dos "istemas tem doi" \lU mais barr:um:ntos. Cada dispositivo de EiS consiste de duas partes; uma {lUto: cllntêm g ....Jnde parte da d etrõnlea. denonunalla contTIIladul". c OUlrol ljUC comêm o dispusllivo dc EiS em ~ I. tal como um dn vc de discu. O controlador nomlalmentc está conlido em um plae:1 que é ligad;1 a um !!ncaixe livre. c"ceto 010 controladores ljue .não sãn upcionais (como I) teclado). que às vezcs cstão localií..ados na placa- m5c. MCSllll) quc t) visor (monitor) não Conll"DIaoor SCSI
P"~"~~~tE~~ o o o
n.."..2.25 Estrutura fisica de um computador pessoal.
Modem ___
o if""o
/
ConocIor da bon:IB
--- ........ ., ,,' , , , , " , ... , _
I i
L
Monitor
-
T8I;!ado
I.
Oriva do CO-ReM
D"'-'e de disco ri!lKlO
di. .
'" tO
••o •o
figura 2.26
~
Estrutura lógica de um computador pessoal slrnnles.
~
S
o u BarffifT14m!O
seja opcional, o controlador de vídeo ls VC7.cS CS I~ loçalizodo cm uma placa de e ncaixe (plug-in) para pcnnitir que (l us uário escolha entre placas com \JU sem acelcradores gr:ilicos. memória extra c assim por diante. O controlador se cancela com ,>cu dispositivo por um cabo ligado ,10 concclOr na partI! de trás da caixa. A função de um COlllrolador é controllll' seu dispositivo de EIS t manipular para de o acesso ao barrJ.fficnlo. Quando um progr:lma quer dados do disco. por cxcmplo. ele envia um comando ao controlador de disco, que e ntão emite comandos de busca c outroS comandos para o drive. Quando a trilha c o setor adequados forem locaIi7..1l.dos, o drivc começa a I!nlregar dados ao c()llIrolaúor como uma corrente serial de bits. É função do controlador dividi r u corrente de bits em unidades e escrever cada uma delas na memória., à medida que esteja montada.. Uma unidade típica li composta de uma ou mais palaviJS. Quando um controlador lê ou escreve dados de ou para a memória sem intervenção da CPU, diz-se que ele está executando acesso di reto à mem/)ria (Direct MClIlory AcCc.-.s), mai s conhecido por seu acrônimo UMA. Conduída a transfen:ncia. controlador nonnaJmente causa uma interrupção. forçando a CPU a suspender imcdhllumcnte a execução de seu programa corrente e começar a executar um pmcedimcnto especial denominado rolina de interrupç:.iu para verificar erros. executar qualquer ação espt...ocial necessária e informar::lo sistema operacional que a EIS agoiJ. está conduída. Quando a rotina de inTerrupção conclui sua tarefa. a CPU continua com o programa que foi suspenso quando ocorreu a interrupção. O balTamelllo n:io usado somente pelos controladores de EIS. mas também pela CPU para buscar insl.l\lçães e dados. O que aCOlllece ~e a CPU e um controlador de EIS quiserem usar o barramento ao mesmo tempo? A respoSUl i que um chip dcnominado árbitro de barramento decide o que acolllece em princípio. Em geiJ.1. ê dada a preferência aos d ispositivos de EIS sobre a C PU. p0I"I.IU!! discos C OutTOS dispositivos que estão em movimento não podem .~er interrompidos. e obrigá-los a espcmr resultaria em perda de dados. Quando niio há ne nhtlma EiS em curso. a cru pude ticar com toJos os dclos do barramento pam.si própria para referenciar meml'iria. Contudo. quando algum dispositivo de EiS também estiver executamlo, ele requisitará e ter.i acesso ao barramento sempre que precisar. Esse processo é denominado ro u ho de ciclo c reduz a velocidade do computador. Esse projeto funcionou bcm para os primeiros computadores pessoais. já que todos os componentes est:lvam em certo equiHbnll. Contudo. à medida que CPUs. me mórias c dispositivos de flS licav:un mais dpidos. surgiu um problema: o barramento n:io dava mais conta da carga a prcsemuda. Em um sistema fechado. tal como uma estação de liJbalho de engenharia. a solução foi projetar um novo barramento mais rápido para o próximo modelo. Como ninguém nunca passava dispositivos de EIS de um modelo antigo para um novo. essa abordagem funcionou bem. Todavia. no rnundn do PC. 4uem passava paiJ uma CPU mais potente muitas vezes queria levar sua impres . .~or.l. scanner e modem para o /lUVO sisterna. A lém disso. ti uha-se desenvolvido uma imensa indústria deSlinada a forneccr urna ampla faixa de dispos rtivos de EIS parJ tJ barramento do IBM PC. e essa indústria não eSlava nem um pouco intercssaúa em perder todo lJ s(!1I invest irnenln e cllTl1e.,:ar J!,; novo. A IBM aprendeu isso do mlx.lo mais difícil 4ualldo I:Ul":ou U 'u<.:t!~~ur dI) 113M PC, J. linha PS~. O PSt:! linha um batrJ.l\lcnw IIIlVU e mais r:ipido. mas a maiori a dos fabrit::mtcs de dom:s corrti/luava a usar o antigo barramento do PC. agora denominado barrumento ISA (l ndustry S!:mdard Architccturc l. A maioria dos fabricantcs lk discos e dispositivos de I-::JS continuuu a fabricar controladores para etc. e a IBM se viu enfrentanúo il peculiar situação de ser a línica fabricante de PCs que não eram mai s compatíveis com o PC da raMo Com t) tempo, a crnprcsOl foi forçada a suportar o barr:.mlento ISA. Como um comentário à parte, favor nOTar que ISA 4uer dizer JnstrucTinn Sd Architetture (arquitetura de conjunto de instruçõcs) no conte;l;to de níveis úe m:iquina. ao pm.so que no contexto de barramentos 411er dizcr Industry Standani An;hitecturc (arquitcwl""J padrão da indústria). Não obstante. a despeito da pressão do merendo parJ. que nada mudasse. o antigo barramento era mesmo muito lento. ponnnto era preciso lazer algo. Essa situn.,::io lcvou outra.." empresas a desenvolver rmíquinas com múltiplos barrame ntos. um dos quais era o antigo barr:unenTo [SA, 011 scu sucessor compatível. o barramento EISA ( Exlcllded ISA - ISi\ t!.'õtc ndido). Agora. o mais popular deles é () barramento PC l (periphcral Cumflollcnl Intcrcnnncct). Esse baTrJ.mento fo i projetado pela Intel. mas a empresa decidiu passar todas ;L~ patentes para c1orninio público a tirn de incenti var toda a indústria (incluindo seus concorrentes) a adol.:Í-lo.
°
c
j'
I I
I t
I
!I
L
•
~
•• E
• •
00
•
~
o ~ ~
•
o" •,
~
o
N
o o
o
'"
Barrwnt!f110 da
CPU
~
• •
~
E
o u
• • •"
~
I'!:lnte ..,PCI
•
•"o
memona
Hgura 2..2l
PC moderno tipico com um barramento PCI e um barramento ISA. O modem e a placa de som são dispositivos ISA; o controlador SCSI é um d:Ispomtivo PC!.
~
• •"
_ ____ _ ..__......_,...__
..I~_
Barmrnento PCI
~
==='-'====:!-,====~===='-!::== BafTllmel'llC ISA
•
w
o ~ ~
•
"c
•
~
o"
o barramento PCI pode ser usado em muitas conligur.tçõcs. mas a Figura 2.27 ilustrJ uma confi guraç:10 Irpi. ca. Nesse caso. a CPU se comunica com um çomrolador de memória Iltravés de uma conexão dedicada de altll velocidade. O controlador se comunica diretamente Çllffi li memória c com o barrJ fficnlQ PCI. ponanlo o tráfego CPU·mcmÓria não passa pelo barramento PC!. Contudo, pcriréricns de alIa largura de banda (isto é. alIas taxas de dados) podem ser conectados diretamente ao barr.uncnto PCI. Além do mais. !Iqui o bllf"rolmcnto PCI tem uma ponte parJ o barramento ISA. de modo que controladores ISA e '«:us di spo~i livos ainro podem ser usados. embora. como já mencionamos. o barramento ISA CSHí em processo de extinção. Uma rn:íquina com esse projeto normalmente conteria três ou qualro concctorcs PCI vazios c um !lU dois concctores ISA. para que o cliente possa conectar os antigos canõcs de EIS ISA. em gerJ.1 para dispositivos lenlOS. c novos cartõcs de EIS PCI - normalmente para di spositivos rápidos). Há muitos tipos de dispositivos de F.JS di sponíveis hoje. A seguir, di!õCutircmos alguns dos mais comuns.
2.4.2 Terminais Tcrminais de computador consistem em duas partes: um tedado e um monitor. No mundo dos ffiainfrnmes. essas panes costumam ser integr..ldas em um único dispositivo ligado ao computador principal por uma linha serial ou por uma linhu tt:!efõnica. Nos setores de reserva de ra~s;lgens aéreas e bancário e em outros setores que usam mainframe.'\, esltCs dispositivos [linda têm ampla ulili7.31;iio. No mundo dos computadores pessoais. o teclado e o monitor são dispositivos indepcndemes. Qualquer que seja o caso. a tecnologia das duas panes é a mesma.
Teclados Há uma grnnde V'..lriedadc de tcclados. O IBM PC original vinha com um teclado munido de um contato mec:inico sob c:ldu teda, quc uav:l retomo t:l.liI c emitia um clique quaudo a teda em apertada com:tamente. Hoje, I),S teclados mais bumtos têm teclas que fa7,cm apenas contato lIIt.ocinico quando acionados, Os melhores têm uma lâmina de malCrial elastomérico - cspb;ie de borrncha - entre as teclas c a placa de cireuito impresso que est:1 por baixo. Sob cada teda há uma pcquenu saüEncia que cede quando pressionada correta mente, Um ponti nho de materiul condutor dentro da saliência fecha o cireuito. Alguns tedados têm um magnelo <:ob eada Iccla que passa por uma hohina quando pressionado. induzindo assim a'um:! corrente quc ptxle ~er dctcct.aúa. Também há v,írios outros méwdos e m uso, mcdl.nicos e cle:tromagm!ticos. Em computadores pt.·SS(·mis. quando uma Il.ocl.a ~ pressionada, ulIla intcrrupção é gernda e a rotina de inlerrupt;ÕC~ do teclado - um ~o flwarc que fal panc do SL~ lellla \JpcraclOnal - ~ ,lcionada. f\ rolinu de intemll~ÜI!S lê um rcbi~tr,Jdor de h:m.lwarc dentro du <.:ontmlaJur dc ICl: lado para pegar 1I Ilumem da teda t I a 1(2) que ac;.toou de ser pressionada, Quando a tccla é 'Iolta. ocorre uma "I!gunda illleml~ . Assim. "C UI1l usmirio pres.siunar a lecla SI-11FT. e em .;eguida prcs.~ionar c solt:lr a tt!Cl:l M. c dcpois ~ohar a tecla SHIFT. li 'IiSlem:1 opcracional pode ver qUI! o usuário quer um 'M'. e nilo 11m 'rn'. O tmlamcnto dI! ~eq( lênci;ls de v;í ria~ lecl:l.~ envolvendo SHIFT, CTRL I! ALT ê fei to imelr.!mcme c.m snftwarc (incluindo:l abomin:ivcl St!qUêneia de lcelas CfRL-ALT-DEL que é usada p;u·:J. rei niciar lodos os IBM PC.~ I! seus clones),
Monitores CRT Um monil\lr I! uma caixa qUI! contl!nt um C RT (Calhodc Ray Tubc - lubü de raios catúdicos). O CRT contém um canhao que pode emitir um fche de clétnms contrn uma tela fosfoTCscente pr6,~itna à parte fron tal do IUbo. como mostrJ. a Figur.! 2.28(a). Dur..lnte a varredura hori7.tlntaJ o fdxc varre a tela em apruximadamcnll! 50 f.IS, tr.J1;andn n!!la uma linha quase honzol\lal. Em ~eguitla exccula uma varredur.! hurizonl1ll de retomo (um Inl1;o horiwnlal) par..l voltar até a e .~tn::lllidadc c.squl!nJa I! imdar a próxima varred ur.!.. Um dispositivll como esse. que produz LIma imagem linha por linha. ~ dcnominudo dispositIVO dI! varred ur.! (rosru .~can ).
•
-
I VamK!ura honzonlaJ
I Canhão de elétrons
I
flgura UB
de CRT.
] ~
........ rla
la) Seção transversal ele um
_ . * _~._
/
_
Plac:l co deHe~ão
•
~"'"
<J:)
'~.-"_::
,..",leia
\
CRT. Ih) Padrão de varredura
I
Gf3do I Tllla
/
VarrndlJm WNtk:a1 CO retomo (ou ~tmço 'l61"1ie3lj (bl
(a)
,
•
,• o
D
,
o o
~
Varrodura horimntal 011 retomo (00 retraço hor~nta;)
s
o u
• •S •
~
I
;d.o
A varredura hori:;.ont.:l.1 ..: controlada por uma tensão elétrica linc:mllcntc crcsccUlc aplicada à.~ rlac:L.~ de dcOccoloc:vJas à cSljU\:rda c à direita do canhão de c!étro n ~. O movimento vertical é controlado por uma
h~)ri:'GOmai s
Icnsiio elétrica que tamocm cre.....:c linearmente, porém muito mais lentamente. aplic:lCla a placas de dcllcxao verti-
cais posicionadas acima c abaixo do canoão. Após um número aproximado de v:.tfTCuuras, entre 400 c l.(XX>. as tcnS\lCS détrh.::.I.S sobre as placas de dc!1cxào YCllicais e honzontais são mpieJamenlc invertidas ao mesmo tempo para po:\icion:lr l) reixe de volta no l.::lOtO ~squerdo ~upcrior. Uma imagem de tclu inteir".! normlllmeme ê repintada entre 30 e 60 vezes por segundo. Os movimentos dos fei:(Cs são mostmdo:\ na Fi~ur.l 2.28(b). Embom umh:ul\os descritO CRTs que usam C:lUlpoS elétricos pura varrer o fe ixe pc:a tel a. muitos modelos usam campos m;,lgnéticos em vez
I
I
de elétricos, em especial
Monitores de tela plana
I
I I
i I
,
CRTs são muito volumosos e pesados para serem usados em notebooks. portanto é pn...-ciso uma tecnologia completamentc diferente para suas te las. A mais comum é atccnologia de LCD (Uquid Cryslal Displuy - moni· tor de cristal líquido). Ê uma tccnologia dc alta complcxidade. tem muitas varhu;õcs c está mudando rapidamentc. portanto essa desl.:rição ser.í necessariamente breve e muito simpli licJda. Cristais lIquidos são moléculas orgânicas viscosas que fluem como um liquido. mas também têm estrutura !-=spuciul como um cristal. Foram tkscobcn'os por um botânico austríaco (Rhdnitzer) cm I R88 e aplicados peta primt:irJ. vez em visares (por cxernplo. calculador"J.s e relógios) na década de 1960. Quando todas as moléculas estl10 alinhüdas na mcsma direção. as propriedades óticas do cristal depe ndem da direção e polarizuç;lo d:Lluz incidente. Usando um campo détrico aplicado. o a!inhafficllIo molecular e. por conseguinte, as propricdades óticas podem ser mudadas. Em particular. faze ndo passar luz através de um cristal líquido, a intensidade da luz que sai dele pode ser cOlllrolada por meios elétricos. Essa propriedade pode ser cxplorada pum canslmir visores de tela plana. Uma tela de monitor de LCD consiste em duas placas de vidro par.uellls entre as quais há um vol ume selado que contém um cristal lfquido. Eletrodos transparentes são ligados a ambas :J..~ placa.s. Um luz amís da placa traseira. natuml ou artificial. ilumina a tela por tr:ís. Os eletrodos tf'.lllsparcntes ligados a cada placa são usados para criar campos d élTicos no crist.al lIquido. Dircrenles partes da leIa reccbl'~ll tellst>o.:s elétricas dife rcntcs para controlar li imagcm apresentada. Colados às part'es frontal e trascir-.l da tela há polllr6idl!s porque a tecnologia de vlsores TCqU\!r u uti lização de lul. polarit.ada. A montagem ger".!l ~ mustr.lda na Figura 2.29(a ).
I
~
CnstaltiQuidQ Placa da
~ldro
lrastllla
o
Figura 2.29
lal Construção de uma tela de LCD. (bJ Os sulcos nas placas traseUIl e Irontal são perpendiculares W1S aos
outros.
,=. _ Brilhante
(.,
"I
· "
•
. ~
o
~
" • N
C
~
c
N
o
, •'" "
, N
co
•o• ~
•
E
o u
o ~
~
•
"c •
'"
O
Embor.l muitos tipos tk: visol'L'S de LeD cstejam I:ffi uso. agorJ vamos o.:OIlsidcrJ.r um tipo particul3t de visor. oTN ('I'wistcd Ncmutic - ncmáticn to rcido), como exemplo, Nesse visor. a placa frolSCir:l. contêm minusculos ~ulcn~ honzontais. C:J plac:I frontal. minúscult)~ ~ulcos verticais, como ilustrado na Figura 2.29(b). Na au~ncia de um campo détrico. as moléculas do LCD tendem a se aJinh;tr com os sulcos. Uma vc~ que os alinhamentos frontal c tr.lsl!Íro estão a 90 graui'Õ um ..:m relação:lo outro, as molécul:ls - c, ponanto. a cSlnuum cristalina -ficam lorcid;t~ entre as placas tr:lscirJ e frontal. Na pane de mis do vism há um polaróidc horizontal que pcrnlitc somem..: a passagem úe luz polarizada horil.QnL:l.hIlCnlc. Na p;.lne da frente do visor há um polaróidc vertical que pcrmilc SOllll.:ntc a passagt:ffi de luz polarizada verticalmente. Se não houvesse nenhum líquido presenTe entre a:. plat:as, a luz polarizada horizontalmcnte que entrasse pelo polaróidc trJscim scria bloque:Jda pelo polaróide fronTal. pmduzindo unm tela unifonncmcntc ncgr.t. Contudo. a CSlnJ\ura cristalina torcida das moléeu l a~ do LCD guia a luz na I)as,~age m e g ira ~ua polariza~iio faze ndo com que ela saia n:l vertical. Portanto, li:! :!usência de um campo cI~trico. a tda LCD é uniformemente brilhante. Aplicando uma Icns;10 elétrica em partes ~iI_'C ionadas da placa. a estruturo torcida podc ser dcslrufda, bl()quea ndo a luz nesses locais. H:i dois esquemas que jX'Xtem ~r usados p'.ra :.plicar a tensãu elétrica. Em um mon ito r de m atriz passiva (de baixo custo). ambos os elelrodos contêm fios parale los. Em um visor de 640 X 480. por exemplo, o eletrodo lr.tSeiTO poderia ler 640 fim; verticais e o frontal poderia ter 480 horizontais. Aplicando uma tensão elétrica a um dos tios vcrti ca i ~ e então faze ndo pulsar um dos horizontais, a tcnsão em uma posiç:lo de pixel selecionada pode ser mudada. fazendo com que ele escureça por um curto espaço de tempo. Repetindo esse pulso para o próxi mo pixel e então para {) segu ime. pode-se pintar uma linha escum de varredura. análogo ao modo de fu ncionamento de um CRT. Nonnalntcntc a tela illlcira é pintada 60 veles por segundo para enganar o olho e r:l7.ê-lo pensar que ali há uma imagem eonstame - mais uma vel. o mesmo que faz um CRT. O outro esquema de ampla utilização é o monitor de matriz ati va. É mais caro. mas pnxluz melhor imagem. E.m vez de tcr upenas dois conjuntos de lios perpendiculares, ele tem um minúsculo elemento comutador em cada posição de pixel em um dos delrodos. Desligando e ligando esses elementos pode-se.! criar um padril.o de tensão eM· lrica arbiuiuio na tel:.!, o que pennite um padrão de b i L~ tam bém ilrbitrário. Os e1ememos comuladores são denominados tra nsistores de película tina (T"'1' - lhin tilm lral\!,;Sttl~) e os monitores de tela plana que os utili7.:lm costumam ser denominados monitores (visorl!!l) T l-j·. Agora, a maioria dos notebooks c monitores de tela plana independentes para computadores de mesa usam a tecnologia TFT. Alé aqui descrevemos como funciona um monitor monocromático. Basta dizer lJue monitores coloridos usam os mesmos princípios gerais dos monitol'Cs monocromúticos, mas os detalhes são muito mais complicados. Filtros óticos são usados para separar a luz branca cm componentes vermelha. verde e azul em cada posiçào de pixel. de modo que esses possam ser e;Clldelllemente. Toda cor pode ser obtida por ullla superposição dessas três cores primillias.
RAM de video Ambos os monitores, CRTs e TFT. são renovados de 60 a 100 VC7.e.<; por segundo por uma memória e.~pecial, denominada RA M de vídt....' (memória de :lt:csso alc:uório de vídeo), embUlida n:l placa de controle do monitor. Essa memó.ria te m um 0 11 mais mapas de bits que representam ... tela. Em uma tela eom, por exemplo, 1.600 X 1.200 elementos de imagem, denominados pixels, uma RAM de vfdL'O t:onteri:l 1.600 X 1,200 valores, um para cada. pixel. Na vcnJadc. poderia conter muitos desses mapas de bits para pcnnitir a passagem rápida de uma image.:m de tela para outra. Em um monitor de primeira linha, eada pixel seria representado como um valor RGB (redlgrunlhhU!) de três bytcs, um para cada imensidade das componentes vcnnelha. vcnlc e azul da cor do pixel. Pelas leis da ffsicn. sabe· '«! que qualquer cor podc ser obtida por uma superposição Iinc;lr de luzes vennelhu. vcnle e azul. Uma RAM de vfdetl cllm 1.6<Xl X 1.20() pi xels a 3 hytes/pillcls requcr quase 5.5 MB para annazenur 11 imugem e uma boa I.ju:llllidade de te mpo de CPU par:! rUl.cr qualquer coisa com ela. Por essa ral.iio. algu ns compulllduTI:S adolam uma ,nluçiiu de cunciliação usandu um mimero de S hi t .~ pam indir.:ar a cm desejada. Então, esse numeTU é u~;ldo cmnu Ulll índice.: para UIll:I tahela dc hardware denuminada palet:. de en res. que contéll1156 e.:nlradas, c:.da umu com um v'l lor RGB de 24 bits. Esse projeto. denominado ctJr indc.:ruda. reduz em dois terçus o tamanho dl. memória da memüria da RAM de vídeo. m:L~ pennite ~omc nt e 256 eOI"l!~ na leia au mesmo tempo. Normalmente. cada janela na tela tem "Cu própno mapeamento. Porém. com apenas unta pall:la de COTelo cm hardware. !.juando há v;írias j:.md:ll> pre~cn l e.~ na tela. muita); VC1.cS apenas II j anela corrcn te apre~nta ~ uas cores corretamente. Monitol'Cs de vídeu de hits mapcadlls requerem grandc quun tidade de largur.. de banda. Aprescntar multimídia em tdól cheia. com todas as cores cm um mOllllor de 1.600 X 1.200, requer copiar 5.5 M B de dados paro aRAM de vídeo par.! cada quadro. Quando o vídeo é de rnovirncnlo total. é preciso uma t:IX:.! de no mínimo 2S quadros jXJr ~gundo. o que resulta uma tala total de dados de 137.5 MS/s. Essa carga é muito m:.!is do que o barramento (EliSA pode mampular, até mais du que o barramcnto PCI original podia manipular (127,2 MB/s). Claro que imagens menorc.~ requerem menos lurgura de banda. mas largura de banda ainda é uma questão impnnante. I).ar:l pennitir maior largura de banda da cru para RAl\1 de vídeo. a partir do Pcnlium 11 a Intel acrescentou supnMe para um novo barr:ul1cnto para a RAM de vídeo. o barramento AG P (Acceleralt.'d G raphics Pllrt _ l)(Irta I-:dfica acclt! radu l. que pode lr.llls!Cnr 32 bits a uma laxa dI: 66 Y1Hz, ou st.!j:•. para uma taxa de dados de !52 MS/s. Versiks subscqlielllcs executavam a 2l1. 4x c alê 8x para pmvidendar largura de banda ,;uliciente para recursos gr.ífico.'i de alta intcração sem sobrecarregar o barr.1mento PCI pnndpaJ.
····""1 " ' ' ' ' '' .. · .. " ...
L
2.4.3 M ouses À medida que o tempo passa. os computadores estào ~ndo usados por pe:ssoos menos versadas sobre o modo
de funcionamento dos .:omputadoI'C1>. Computadores da gCr.lç:io ENIAC cr.un u:.atlos lIOmcntc pelas construíram. Na década de 1950. compuladores cr.tm usados
SO IllCnlC
pes.~oas
que os
por progr.lIlladon.:s prolissionais altamente
treinados. Agora. computadores s:1o amplamente usados por pessoas que precisam fazer algum trahalho c não sabem muito (ou nem qucrcm
~abcr) ~ohrc
como funcionam os compul:lllorcs ou como são programadns.
Allugamcnte. a lIIotimi:! dos computadores linhu interfaces de li nha de comandu, parn as quaIs os usu:irios digilavam .,;omandos. Uma vez que ljucm não é ~spccialisla quase sempre acha que iJllcrfaces de linha de comóllldo não são amig:iveis ao usu:Úio. se nilo absolutam..:nte hostis. muitos fabricantes de comput.:ldores dcscnvolverJ.m interfaçcs de apomar t: clicar. lais eamo :IS :\1adntosh e Winduws. Usar esse mooelo prcssupt1c que huja um modo de aponlar algo na tcla. O melO mais comum de permitir que usuários apontem algo na Ida é um mousc. Um IIUIu.'ie é um cai~inha dc plá.·nico que fica sobre u mcsa ao lado do teclado. Quando ela é movimentada ..ubre a :n~a, um pequeno ponteiro tam!)!m se movimenta na tda, pcnnilindo que os usu:irios apontem itens. O mousc tcm uma., dU:ls ou tre), {celas na pane de cima, quc possihilitam os usu:írios a sclccion:lr Itcns apresenuoos em menus. Muita polêmicaj:í se levantou por causa de disculosõcs sohre o numero dc tC\:las que um mousc deve ter. Usuários ingênuos preferem uma só (e mais difícil de apt:r1ar a teda errada se houver apenas uma), mas os solistie:ldns gostam dll poder conferido por várias teclas par.I fazer coisa.~ imaginativas. Tres tipos de mouscs foram produ:t.idos: mouses rnednicos, mouses óticll!, e mouses ótico-ml.'Cânieos. Os primeiros tinham duas rodinhas Jc bomlcha parJ. 1'0i..\ da pune ml'crior Jo ~orpo com ci~os pcrpcntlicularcs entre SI. Quando () mouse crJ. movimentado em parJ.lda com seu CIXO princip:u. urna roda gir:lva. Quantla crJ. movlmcnL:.tdo ao longo da perpendicular dt: seu cixo principal. a outra roda girava. Cada rodinha comandava um rcsistor vari:ível Ou polenciômcuu. Medindo as alterJ.çõcs na resistênCia era possível ver como cada roda tinha girado e assim c:dcuJar a disl5.neia quc o mouse tinha percorrido em eada direçào. Há poucos anos esse projeto foi substilUída em gr.mJe parte por um outro no qual. em vC7. oe rrxlinh:J~. era usada uma pequena esfera projemda um pouco para fora do fundo do mouse. Ele é mO~lfadn na tigura 2.30. O segundo tipo de mouSt: ~ o ótico. Essl! tipo nãn tcm rodinha.~ nem estC::ras. Em vcz delas, tem um LED (Lighl Emitting Diodc - diodu emissor de luz) e um fo uxkteetor na pane de bai~o. O mouse ótico ê usado sobre uma almofada plástica cspedal que contem uma gmde retangular de linhas espaçada.;; muito pn;xima.'\ umas das outras. Quando o mousc se movimenta sobre a grJ.de. o lotodetector perccbe os cru7.amentos de linhas pelas alteraçõcs n:l quantidade de luz renelida pelo LED. A eletrônica dentro do rnousc ~onta a numl!I'Q de linhas de grade cru:tada.s em cada direç!ío. O terceiro upo dl! mousc e Ólico-mednil.:o, tem uma esfem que gira dois ci~os alinhados a 90 graus em relaç:lo um ao outro. Os c i x().~ estão conL'Ctados a dccoditic:ldore.s com rc nda.~ que permitem a p'tSSagem da luz. Quando () nlOuse se ruovimcnt.a. os eixos gir.uTI c pulsos de luz Iltingem os detcctores sempre· que aparece uma knda t!lllrC um LED e seu dctector. O número de pulsos dctcctados é proporcion::tJ à quantidade de movimento. Embtlf'J. mouscs possanl ser montados de várias mal1c ira.~. um atrJ.D.jo comum é enviar uma scqUt!ncia de três bytes ao computador toda vez que o mouse se movimclll:l a uma dist!lncia mínima (por excmplo, 0,01 polegada), às vezes denominada mickcy. NornJUlmente cs.~cs carJ.Cteres vem cm uma linha serial, um bit por vcz. O primeiro byte contém um intciro com sinal que infonn:l quantas unidades o mnuse se moveu na dirc,ão.r desde a ultima vez. O segundo bylc dá a mesma infonna,:lo pura o movimento nu dirc"ão y. O terceiro byte contc!m o estado correntc das teclas do mouse. Às vezcs são usudos dois bytes para c:.toa coordenada. No computador. um software de baixo nível aceita essas infomJações à mcdida que chegam e convene o~ movi mentos n:1ativos enviados pelo ll\OUSC cm uma posição absoluta. Em seguida apresent.:l na tela uma set.:l cor~pondcntc à posição onde t1 ,"ouse está. Quando a ~ ta indicar o item adequado. o usuário clic:\ a leela do mouse c ~ntào () computador JXXle intl!rpretar qual item foi selecionado por saber onde a sew cstâ posicionada na tela. Pontolro conlrolado por mouse
Jilneta
R.unI 2.30 Utilização do mouse !WR apontar Itens de
menu.
".~
M
•
,•
• •
~
"S u•
~
• •• ••
~
•
~
•
~
• ••
~
~
c
•
~
o
N
o
• o-
•
u
...co ••o
..
~
,
~
eo
"• ~
•
~
,•"
,
.
~
'.•" o
~
o
•m
o
2.4A Impressoras Após o usuáriu prcpar.lr um documento ou bu~r uma página na Wcb. muitas vezes quer impnmir seu Imb:!lho, punamo todos os computadores podem ser equipados com uma impressora. NCSUl seção descreveremos alguns dos tipos mais comuns de imprcSSOflS monocromáticas (isto é, em prcl
Impressoras monocromaticas o tipo mais barato de impressora é a impressor a matricial. 0:1 qual um C3.beçOlC de impressão que contêm cntre 7 c 24 agulhas ,uivadas clclromagnclicamemc varre cada tinha de impressão. Impressoras mais barnlas têm sele agulhas p.ira imprimir uma li nha de. por c;tcmplo. 80 cat:lcteres em uma matriz 5 X 7. Na verdade. a linha impressa consish': em 7 linha.~ horizomais. cada uma composta de 5 X 80 =< 400 pontos. Cada ponto pode ser imprcs!>O ou não, dependendo dos C3taClCrcS que scrJo impressos. A Figura 2.'3 I(a) iluslra a IClr.I 'A' impressa em uma matriz 5 X 7. A qualidade da impressão poJc ser melhorada por duas técnicas: usando mais agulhas ou sobrepondo cín:ulos. A Figura 2.31(11) rnosrm um 'A' impresso com 24 agulhas que proou7.em círeulos !ÕObreposlos. Em geral. parJ. produzir pontos sobrepo~tos são necessárias várias pa.~sagcl1s sobre cada linha de varredura, portamo :l melhoria da qualidade esLÚ ligada a taxas de impressão mais lemas. A maioria das impressoras matriciais podc funcionar em diversos modos, oferecendo difercntes compromissos entre qualidade c velocidade de impressão. ImprcssorJ.s matriciais silo bar:l.tas, em especial no que se refere a nlllteriais de consumo, c muito confiáveis. porém são Icotas. ruidosas c de ma qualidade gráfica. No.'1 sistcmas at uais elas sào usadas de Ires modos principais. Em primeiro lugar são populares parJ. imprimir fomml:1rios grJ.ndes ( > 30 em) de composição gr.llica prt.-ddinida. Em segundo lugar, são boas parJ. imprimir em tiras de papel de pcqucn:lS dimensõcs, tais como rt.-cibos de caixas registradoras, registros dc transaçõc." em caix:lS eletrônicos ou com cartôcs dc crédito ou cartões de embarque de linhas aéreas. Em tereeiro lugar. em geral das são a tecnologia mais barJta p:1rJ. imprimir fonnulários ~onlÍnuos com vários campos e várias cópias em papel-carbono. As im pressoras de jato de tinia sào as favorit.as parJ uso doméstico de baixo preço. O eaheçote de imprcs530 móvel, que contém um cartucho de ti nta. movimenta-se na hori7.ontal sobre o papel por meio de uma correia enquanlo a tinta é borrif
n••,.2.3 1 (a) !.eua 'A' em uma matnz 5 x 7. Ib) Letra 'A' impressa com 24 agulhas sobrepostas.
o
o
o
O
o
O O
0000 0 O O
O
(.,
O (b)
e
_ -o
Espelho oc.ogooaI rolalivQ
: Tambor oomlado e carregado
i L
Fo/xo de fUl alinse o IlImbor I
•• " o
~
•
figura 2 .32
•
~
Funcooar.\enlo de uma lIDp(e~ora 11 laser.
;
-
Raspador Descarregacor
Q
U
• • ;• •
~
Roiamentos aqu&eloos Piltla de prlXlUIO
•
•
~
Provavelmente o dese nvolvimento mais interessante da impressão desde que Jo hann Gutcnbcrg inventou o lIpU móvel no ~ulo XV é a i l1lp~ra a laser. Esse dispositivo combina uma imagem de :lItu qu:lIidade, c-'c:celcnte rlexibilidade, gr:lllde velocidade e custo moderado cm um único pcrifi!rico. lmprcssor.tS a laser osam quase a mesma tccnologia das rná(luinas futocopiadoras. Na venbde, mui tas empresas fab licam equipamentos que combinam cópia e impressiIo - c. às vezes. também fa x. A tec nologia bi'lica é ilustrada na Rgum 2.32. O comçào da impressor:!. é um tambor rotativo de pn..'Clsão, ou um:! correia. em alguns sistemas de primeir:! linha. No início de cada ciclo de página de recebe uma carg:! de até cerca de 1.000 volts c é revestido com um material fotosscnsfvcl. Então a luz de um laser passa ao longo Jo comprimento do tambor. como se ft)sSC o feixe de elétrons de um CRT, exceto que, em vez de provocar a denexão hori zontal usando uma tensão elétrica. é usado um espelho octogonaJ rotativo par.l varrer o comprimento do ta mbor. O fe ixe de luz é mtx:lulado pam produ,.'; r um pmJrlo dc pontos escuros e claros. Os pontos atingidos pelo fcixe perde m sua carga elétrica. Após pintar uma linha de pontos. o tambor gira uma fração de um gr.lu para permitir que a próxi ma linha seja pi ntnda. Com o decorrer da rotação. a primdm linha de pontos chega ao to ner, um reservatório que cOfIlém um pô negro cletroc.statie:ullente se.nsível. O to ner é atraído por aqueles pontos que ainda estão carregados. fo nntllldo uma im ag~m visual daquela linha. Um pouco mais adiante na lr.I.jetória de transporte. o tambor reves tido de toner é pres~ ionado contra o papel, transreri ndo () pó preto pard ele. Em seguida. o papel pas.~ a por rolamen\()s aquecidos 4ue fundem pcrnmnememenlc o toner ~ superfície. do papel, fixando a imagem. Em um ponto mais adiante de sua rotaç:lo, o t
Q ~
~
• = • N
~
o N
o
= u•
'"
••
o
fi gura 2.33
POntos de meio-Iom para viirias faixas de escala de Clnza. (a) 0-6. [bJ 14-20. (e) 28- 34. (di 56-62.
lei 105-1I1.!n 161-167.
~
,• ~
eo
u
=
•
~
o ~ ~
• c" •
~
o
Impressoras em cores Imagens coloridas podem ser visUlS de duas manclr.J.s: por luz tr,m:.mitida e por luz relletida. Imagens por luz
lr.msmitida, como us produzidas em monitores CRT. são compostas por supcrposiçãu li near das ttis cores prim:ínas aditivas, vcnnclhu. verde e azul. Imagens por luz retlclida. como fOlogralias em COres lo! fotos em revistas de pnpd luslroso, absorvem cenos comprimentos de onda de luz e rcllctcm o resto. Elas são compostas por uma superposição li neur das três cores suulrJtivas primárias, ciano (toda cor VCOllclha absorvida), amarela (tooa cor azul absorvidu) c magcnla (Uldil cor ve rde ahsorvida). Em teoria. toda cor pude ser produzida mj~lurandu as ti mas c iano, amarela e magenta. Na pr..ítica é di fícil con· seguir eSS;IS tin tas .:om pure;.;J sulicienlc para absorver ttXIa a luz e produzi r um negro verdadeiro. Por essa rJ.zão. pmticamenLe todos os sistemas de impressão em cores usam quatrO tinias: da no. amarela. magc nta. e negr..J. Esses sistemas são denomi nados impressor.!s C YMK {K representa negro (bIGl,:K)l. para evi tar confusão com azul (h/UI'). Mon itores. ao Ioiontr.irin. usam luz tr:lnsmitida e {) s istema RGB para produzir cores. O conjunto completo t.le cores que um visa r ou impressorJ. pOOe produzir é denominado sua gam a. Nenhum dispositivo tem uma gama que Se iguale à do mu ndo rea l. uma vez que cada eor ve m em 256 intensidades no máxi· mo. o que do1 somente 16.777.216 cores discretas. Imperfeiçõcs na tec no logia redu1.em ainda mais csse total e as res tantes nem sempre estão uniformemente espayudas no espectro de cores. Além do mais, a pereepção da cor tem mu ito a ver com o modo de funcionamento dos ba.stõcs e cones na retina humana. e nilo apenas com a rísica da luz. Como conseqüência dessas observações. convencr uma imagem colorid a que parece boa na tela e m uma im agem impressa idêntica está longe de ser trivial. El1lre os proble mas estão: I.
2.
3. li .
Monitores em cores usam luz tr,lllsmitida; impressoras em cores usam luz rd1ctida. CRTs produzem 256 intensidades por cor; imprcssOT:.L'! têm de usar meios·tons. Monitores têm um fundo negro; papcllem um fu ndo luminoso. As gamas RGB e CMYK são diferentes.
Obter imagens impressas em cores q ue re produ zam os tons do mundo real (o u até mesmo os du... imagens na tela) req uer c alibrJ,çào de disposi tivos, software solisticado e consideroveJ cunhec imento técnico e experiência da parte do usuário. Há cinco tecnologias de utiliz
a cem costumavam ser:t principal tecnologIa de impressão em cores. mas c.'.tão '\tndo 'iubsritufda... pelos outros tipos
cujos
mat~riai s
de consumo são mais baratos.
O quarto tipo de impressorJ CID cores é :t imprc.'iSOra pnr subl im:u;:iCl de co rante. ou de tinta . Embora tcnha algo ue freudi ano. subl imação ~ o no me cientifico da pil5sagcffi do estado sólido para o g;lsoso St! ffi passar pelo e;ta. do líquido, Gelo seco (d ióx ido dI.! carbono congelado) é um material bem conhecido que subli ma. Em uma impresSOr.!. por sublim,u,:ão de tinta. uma port.:lUOr..l contendo os curantes CMYK passa sobre um cabcçote de impressão térmico que contém mi lhares dt: dcrnentm. de aqul..'Cimcnlo program:ivcill. As ti nl:l!i slio vaporizada.~ instant:mca_ mente e .lbsorvida:. por um papel especial que I!Slá pmxunu. Cada elcmCIlIO de aquecimento pode prodU7Jf 2561cmper.lIums diferentcs. Quanto mais aha ti tempcnllur.l. mais corante é lIcposlt.aúo ~ 1I1;IIS intensa é J cor. Dlfcrente de todas as outt"JS impressoras em cores. nessa s,lo possíveis cures pr:lIicamcnte contInuas pafa .:ada pi:o;el. ponanw o meio-.tom não é necessário. Pequenas impresso ras lIe instantâneos muitas vczcs usam proccsso de sublimação de tinia parJ produi'-ir imagens fotogr:Hkas dI! alto gr.lu de reali smo sobre papel especial (c caro).
••
o
~
•
•• • E
2A .5 Equipamento de telecomunica ções Hoje em dia. gr.lndc pane dos computadores C:SI.á ligada a uma rede de computadores. freqüentcmente a IntemeL Conseguir acesso requer equipamento especial. Nesta seção veremos como esse c:quipamcnlo fu nciona.
•
~
•
~
o
Modens
~ ~
Com o crescimen to da ulilizaç:1o de computadores nos úl ti mos anos. ê comum que um compUlador precise se comunicar com outro. Por ex.emplo. muitas pessoas tê m em casa com pumdorcs pessoais que usam parn se comuni ~ C:\J" com o compUlaoor que está em seu local de tr'.lbalho. com uma provcdol"l de serviço de Imenlct (IS P - Internet Service Providcr) ou com um sist(!mn de IlOml:! banking. Em muitos casos. a linha telefônica provê a comunicação física. Contudo. uma linha telcfôn icn eom um (ou cabo) não é adeq uada p:W.l tr.lnsmlss50 de sinais de eomputadorque ger.ll mentc re pn:sentam um bit O comu O volts e um 1 bit como ) a 5 volts . como mostra a Figura 2.34(a). Sinais de dois níveis sofrem cnnsidcrávcl distorção quando tmnsmitidos por uma linha tclctünica projc{;.Ida parn V07~ o que resulta em CITO!! de transmissào. Todavia. um sinal de onda scnoidal pur.! a uma frcqilência de 1.000 a 2.000 (11.. denomi nada portador ... pode ser tran..,mitido com relativamente pouca distorç5o e essc I~IO é I!,"(plomdo cumo a base da maioria dos sistemas de teil.'comunicação. Como as pulsaçõcs de uma oncln senuidal são totalmentc previsíveis. uma onda senoidal pum não Ir.lllsmite nenh uma infonnação. Contudo, vari ando a am pl itude. a frcqiH!ncia uu a fasc. uma seqüência de I se () s pode. ser Lmnsmilida. como mostr".! a Figura 2.34. Essc processu é de nomi nado modulação. Em modllJução de am plitud e (veja a Figura :!.34(b»). s:1o usados dois níveis de tensão clétnca (voltagem) para O e I. respectivame nte. Uma pc..,~ soo que esteja ouvindo dados tra nsmitidos a uma taxa de dados muito baixa ouvina um alto ruído parn um I e nenh um ruído p..'\fil um O. Em m odulação de fr eqüência (veja a Figur.! 2.34(c )), o nível de tensão clétrica (voltagem) é con ~ tante. ma.~ J freq üt!ncia da ponadom é diferente par.! I e para O. Uma pessoa que estivesse ()uvindo dudos digirais eom fre qüência modulada ouvi ria dois to ns. cCllTCsponde nlcs a Oe I. A modulação de freqüê ncia costuma ser de nominada nl()dulu-W ão por chuvcamcnto de freqüê.ncia . Em modulação de fase simplcs (vej a a Figuro 2.34(1.1». a amplilude c a frc4üê neia nao mudam, mas a fase da portadoro é invertida 180 gr.Jus quando os dados pas...,am de O par::l I ou de 1 para o. Em sislemas dc fase mod ulada mais sofislicados. no início de cada intervalo de tcmpo indi visível tI fase da portador:!. é abrupun'k!nle mudada para 45. 135. 225 ()u 31S gr.lu ~. par.! pcnnitir 2 biLS por ime:.valo de tempo. dCllominad() codificaçãu de fa.'iC di hit. Por
,.)
V2
o
o o
r.""" o I
E VI
&
FI...... 2.34 1'rammussão bit a bit do
numero binário OlOOlOL1OOOlOO por uma Unha telefónica. tal Sinal de dOIS nivelS. [bj Modulação de amplitude. rei Modula~o de freqli.éllCl3. rdl Modulação de fase.
'b)
(d)
--
..
~
Sou
, amplltuoo
. \,
A"
: !reqUltncia
,,)
o o
o o o
"
B.",
: Ir&q06nci..
•• c o•
o N
,o
= • " ~
<Xl
'" ••o N
~
,•
~
6 o u
•
~
o
•• • e •
~
N
~
N
o
reprc~ntar 00, uma mud:mça de fase de 135 gr.lus poderia reprc'\Cnlar 01 c assim por diante. T:l.mbém c;\islcrn outros esquemas par..llr::msmitir 3 ou mais bits por intervalo de tempo. O número Jc intervalos de tempo. isto ê. o número de mudanças de sinal por segundo. é uma taxa de hauds. Com 2 ou mais bits por intervalo. a taxa de bits ultrapassar.i a faxa de baud.~. Muitos confundem os dois [conos.
exemplo, uma mudança de fa.'ie de 45 grnus poderia
Se os dados a serem lmnsmitidos consistirem em uma série de caracteres de 8 bits, scria desejável Icr uma
conl!X:10 capaL de transmitir 8 bits simultaneamente - iSlo é. oüo paR!ll de fios. Como as linhas telefônicas ofere cem apenas um canal. os bits tem de ser enviados scrialmcntc. um após o outro. ou em grupos de dois se esti ver ~cmJu usadll codific:II,;::io dibiL O dispositivo que aceita cat:lClcres de um eomputador na forma de sinais de dois níveiloi, um bit por 'lei. e lr.Ulsmite os bits em grupos de um nu dois, em formn de :unplilude, freqüência ou fase modulada é u modem, P".1rJ marcar o início e o lin,,1 de enda enl1lelere, nonnnlmente é enviado um earnctere de b bits precedido por um bit de início c seguido por um bit de Iim, totalizando 10 biL~. O modem que está lr.Ulsmitindo envia os bits individuais dentro de um caractere 11 intervalOli de tempo regularmente espaçados. Por exemplo. 9.600 bauds implica uma mudanc;a de sinal a cada 104 mil.:rossegundos. Um segundo modem fIll extremidade receptora é usndo pum converter umu portndora modulailil em um número binário. Como I)S bits chegam nu receptor a intervalos regulanneme espaçados. uma vez que o modem reecplOr tenha determinadu o inrdo do camctere, seu relógio o infomm quando Ult10Slrar a linha para ler os bits que estão entrando. Modens modernos funcionam a taxas de dados nu fa ixa de 28.800 bits/s a 57.600 bits/s. usualmente à ta:ta de buuds muito mais baixas. Eles usam uma combinaçilo de técnicas pam enviar múltiplos bil~ por baud. modu lando a amplitude, a freqüência e a fasc. Quase todos eles são fuU-duplcx. o que quer dizer que podem transmitir elll ambas as direções ao mesmo tempo (usando freqüências diferentes). Modens ou linhas de lransmissrlo que p<xlem trallsmitir em uma direção por vez. - como uma ferrovia com uma única linha que pode transportar trens em direção ao norte ou tre ns em direção ao sul, mas não fazê-lo ao mesmo tempo - s:10 denominados h~lf-dupl e.~ ou semidu p l c.~. Unhas que só podem transmitir em uma direção são linhas slmplex.
w
Linhas digitais de assinante IDSL - Digital Subscriber Lines) Quando a indústria da tclefonia finalmenlc chegou aos 56 kbps, ela ~ congratulou por um trabalho bem-feito. Enquanto ;S~. a indústria da TV a cabo estava oferecendo velocidades de até 10 Mbps em eabos eompanilhados e a.~ empresas opcr::ldoras de satélites estavam planejando oferecer mais de 50 Mbps. À medida que o acesso ti Internet tomou-se uma parte f,:ada vez mais importante de seus negócios. as tclcu.'i (tclephunc eompanics - empresas de tcleronia) comtÇ:lr.J.m a perceber que precisavam de um produto mais competitivo do que linhas discadus. A resposta dc.~sa... empresas foi começar a oferecer um novo serviço digital de acc...so à Inh.:rncl. Serviços com mais largUT'J de banda do que o serviço telefônieo padrão às vezes são denominados scrviço.~ de banda larga, emOOrJ, na realidade, o termo seja mais um conceito de markeling do que um conceito técnico específico. De início, havia muitas o fert:l..~ que se sobrepunham. todas sob o mesmo nome gemi de xDSL (Digital Suhscrihcr Line), para vários x. Mais adiante discutiremos o serviço que provavelmente vai se tomar o mais popular desses. o AIlSL (Asymmetric DSL - DSL assimétrlcu). Visto que o ADSL ainda está scndo desenvolvido e nem todos os padTÕcs estão totalmente em vigor. alguns dos dcllllhes dados mais adiante podem mud:lf com o tempo. mas o quadro básico deve conlinuar válido. Para mais informação sobre ADS L. veja Summers. 1999; e Vetter et ai.. 2000. A ral.ão por que modens são tão lentos é que os telefones forJIn inventados para tr.Ulsmitir a voz humana e todo o sistema fo i cuidadosamente otimi1.ado paro essa finalidade. Dados sempre foram filh os enjeillldos. A linha, de nomi nada loop loc.ul. de eada assinante da compan.hia tc!efllnica é trJdicionalmentc limitada a certa de 3000 Ih por um li ItnJ na centr:ll da empre.<;a de telecomunicaçõcs. É esse filtro que limita 3 wa de dados. A lar6Uf:l de banda real d" loop local depende de 'leU comprimento. m:L~. para distâncias lÍpica.~ de algu ns quilllmclros. 1, 1 MHz é viável. A cnnftyur.JÇã() mais comum da ofena úe ADSL é i1uslmda na figur:1 2.35. Na verdade. o que da r:u. ê re muver li tiltm e dividir () espectro disponível de I. I MHz no loop Incal em 256 canais independentes de .t.3 I 2.5 Hz emla. O canal O é usado pam POTS (t»t intcrfimm um ..:om os \)utru~ . Dos 250 ..:anal!) restantes. um é usado para controle na din:'çào da empresa de telefonia e o outro para controle na din.:ção do usuá· nu. () restu c.~tá dispunfvcl para dados dll usuário. O ADSL t:t.juivalc a ter 250 modens. Em pnndpio, cada um dos canais remanescentes pode ser usado para uma corrente de dados full..
figura 2.35 Operação de ADSL.
J,n ~
~fI~
,(\~ fI~
25
-voz DlrllÇão aa empresa
,(\flfI(\
fI(\fI f l r
-
OIreçào do usoAno
(\
'.'OO~Hl
'"'"
·• o
u
Agura 2.36
•
Configuração tiplca de equipamento ADSI~
e
"
~
o
u
•
u
•• E
• •
•
80%-90% da largura de banda na direç50 do usuário, uma vez que eles descarregam muis dados do que carregam. Essa opção deu origem ao 'A' em ADSL. Uma diVIsão comum s:1o 32 c:.lImis na direção dn cmpresa c o resto na direção do usuário. A qualidade da Jinhtr'.l alcançar essa taxa,. mas 4--8 Mbps ~ possível em distàncias cun as por loops de alta qualidade. Uma configuração A DSL típica é mustrada nl! Figura 2.36. Nesse esquema. o usuário ou um técnico da companhia Iclclônica deve insLalar um NID (NdwOrk lnterl:u:e Oevicc - dispositivo de interface de rede) na casa ou escritóriu do cliente. Essa caixinha de plástico mnretr'.lto). Ocasionahn~nte. usa-se pona US B em vez da Elhemel. Sem dúvida haver.1 placas internas de modem ADSL disponíveis no futuro. Na OUlr.l extremidade da linh:l. no lado da empresa telefôniea está instalado um divisor correspondente onde a porção da voz é filtr.lda e enviada ao comUlador de voz nunna!. O sinal acima de 26 kHz é direcionado par.! um nuvo tipo de dispositivo denominado DSLAM (Digital Subscri ber U ne Access Multiplcxer - m ulti ple:(ildor de acesso de li nha d igital d e assi nante), que eontém o mesmo tipo de processador de sinal digit:ll que o modem ADSL. Uma vez rccupcr.ldo u sinal digital em uma corrente de bits. Silu fonnados pacotes c enviados à ISP.
lntérnet por cabo ~l uÍla.'1li! lIIp~s.a., de TV agor.l est:1o oferecendo acesso à Internet por meio de seus cabos. Uma vez que a lec~ nolugia ~ muito diferente da ADSL. vale a pena f;u.cr uma brevc descri\:1u Jela. Em cada cidade a operadOr:! por cat>ll tem uma central li! ullla gmncle quantidade de cai:tr'.l uma vizinhancra rica (ca.-;as mais :lfastadas uma da outra. porumlO menos usuários por cabo) uu para um bairro pobre (mnguem pode pagar ..erviçu de !nternt:l).
u
o ~ ~
• • N
C
~
N
o
N
o
-•• ~
u
o ....
••"
o
~
,•
54254 88
flaura 2.31 Alocação de freqiiência em um tipico sistema de TV por
cabo usado para acesso â Internet.
~
E o u
• • ,• ,
~ ~
•
~
'•. o
o/li
~108
550
I
MJR1
rm
O.."
750 101Hz
d_,",'", ]
FreQOéncias descendentes
."
\
Uma vez que o c:lbo é um meio compartilhado. delcnninar qut!rn pode enviar. qU:lndo e em qual freqüência é uma questllo imponamc. Pam ver como isso funcio na. tC nlns de fmrer um breve res umo do moJo de funcionamento de uma TV por cabo. Nos Estados Unidos. O~ I:nnais de h:lcvisãu por c:lbo normalmente ocupam a região de 54 a 550 MHz (CXCC\() para rjdio F:'v1, de 88" !OM MHz). Esses canais têm 6 MHz de largur.l. incluindo faixas de proteção par,J impedir va",;.uncnto dI! si nal entre canais. Na Europa. a cxlrcrnidadc haixa ~ nonnaJmcntc 65 MHz e os canais têm de 6 a 8 MHz de largura pam a resol u!jào mais al ta c.ligida por PAL c SECA M: porém. qu:mlO ao mais. o esqucma de alocação é similar. A porção inferior da banda não é usada para 1r.1Ilsmiss:"io de Iclevis:1o. Quando as empresas por cabo lançaram a Internet por cabo. unham dois problemas a resolver:
~
N
•= ~
"
O
1. 2.
Como acrescentar acesso ~ Intcmet sem interferir com programas de TV. Como ter lr.ífcgo bidirccional quando os amplHicadorcs são inerentemente unidirccionais.
As soluçõcs são as seguintes. Cabos modernos operam bem acima de 550 MHz. rnuil:lS vezes :llé 750 MHz ou mais. Os canais ascendentes. isto é. do usuário au temlinal de distribuição. entr.... m na l"aixa úe 5 a 42 Ml-b. (um pouco mais altn na Europa), e o tráfego úcscendentc. isto ~. do temlinal de distribuição ao usuário. usa as freqüências da extremidade alta, como ilustrado na Figura 2.37. NO!c que. uma vez. que os sinais de TV são todos desccndentes. é possível usar ampli lieaúores ascendentes que fu ncionam somente na região de 5 a42 MHz. c tunpliticadores descendentes que funcio nam somenle a 54 MH:-, e:: acima. como mOSlr..t a figura. Assim. obtemos uma assi metria nas larguras de banda asccndente e descendente porque há mais espectro disponível acima da banda da televisão do que abaixo dela. Por outro lado. a maior parte de tráfego scd provavelmente na direção descendente, portanto as opemdoras por cabo não estilo infelizes com essas coisas da vida. Como vimos antes. empresas de telefonia usualmente oferecem um scrviço DSL assimétri{;o. ainda que nào tenham nenhuma r:viio técnica para fazer isso. O accsw à [nlemet rcquer um modem por cabo. um dispositivo quc tem duas interfaces: uma com o compuL:ldor e outra com a rede por cabo. A iuter!"aec computador-modem por r.::Ibo é direta. Normalmentc é EUH:me(. exa· tamentc comu na ADSL. No futuro. u modcm inteiro poderá se resumir a uma jXqucml placa inserida no eomp ulador. exatamente como os modens inlt:mos V.9x. A outra ur tempo de conexão. Para entender melbor como elas funcionam. vamos ver o que acontece quando um modem por cabo é inst:l..lado e ligado. O modem faz uma varredum dos canais Jescemlentes em busca de um pacote especial lançado periodicamente:: pelo tcnninal dc distribuição para fornecer parâmetros do ~istcJlla aos modcns que acabar.l.ln de entrar e lll linha. Quanúo acha esse pacote. o novo modem an uncia sua prescnça em um dos canais aseendentes. O tenninal de dhurih uiç:ln respo nde design:.mdo (l modem a seus c:mais :l~cc ndent e e Jcscendemc. Essas designaçõcs podem ser mudadas mais tarde se u Icrnúnal de distribuição achar necessârio equilibrar a carga. Então li Ilmúem detemtina sua distfinei,J cm rclaç:l0 ,m tcnninal de disllibuiç:iu cnviandu um p:lcote especial e o/)scrvundo quanto tempo delllo ..a p:lfa ele obtcr uma resp..)SLa. E:.sc proccs:.11 e úenoml1laúo r:mgil1g. Ü im[Xlrtame que n modem cnnh(.'Ça sua distância para ajustar o modo como os canai s usccndcnles npcram e para acenar su:llcm[Xll; ....:IÇào. Eles siio divididos em lIlinintcr vlllos de lcmpu. Cada ]lllcntc ascc!ule nte devc se :ljuslar a Uni uu mais minimervaJos de tempo cnnsccut ivos. O terminal de di~tribu i ç:1o anuncia periudic:lmcntc li ih ício de uma nova rodada de rn.inintervalos de tempo. mas () tiro de largada n:"io é ouvido por lodos us modens si multancamcme por causa do tempo de propag>Jç:io pelo cabo. Sabendo a que distâncht eSI:i do tenninal de dislribuiç:1o. crlda modem [Xlde calcular há 4uamo h.:ml>U o primeiro minimervalo realmcllle corneçnu. O comprimento uu minintervaJo depende lia rede. Um:.l earga úlil típic:t é R hylCS. DUrJnte a iniciali:-..;.Io.,:ão. o lenn inal de distrihuio.,:ão t
-
....
f igura 2.38
Detalhes típicos dos cl1nais ascendentes 6 descendentes na América do Norte. QAM-64
(Quadrature Amplitude ModuJatlon - modulação de amplJtude em qUl1dratuIal pennne 6 blls/Hz I1ll1S funciona somente em a1lllS freqíiénCl.'lS. QPSK lQuadrature ?hase Shlft Keyinq - modulaç5o por chaveamento de fase em quadralUr.!.! funciona em baIXas
Canal (!08C~f\dente som oontonçAo:
C8bo c::oullinl
J~~,=~" ~:, ~~~~2/7"~'~t" ~" :~"'~ 't0A~, M-i~:ri~ '~ ' ' i~ ;'"~' '~'~' '~'~Ui :~! E~
~j
~
i '.' ••• •• •• •••
Pacote
Camll :lSCOf'ldonte com contenç3Q 9 Mbpa usando QPSK e mlnlnlefVllt~ oe 8 by!es
fIeqliências mas permite apenas 2 bltsIHz.
••o
u
,•
~
• e
", u
·• 5
• •
~
l \
i, I
Por outro lado. sc houver cOfllcnção parJ o minintcrvalo requisitado. nenhum reconhecimento ~erá enviauo e I) mouem eSIl\!r:t um tempo :Jleatório. c tema mais umu vcz. Após c:Jda uma desS:JS temat i vu.~ sucessivas mulsuccdidas o tempo :Jlcal6rio é duplicado para distribuir ti carga quando o lr.ifego \!Stiver pt:su.do. Os canais descendentes são gerenciados de modo diferente dos canais ascendcntc.s. Umu r.u..ão é que há smnenu: um re meteme (o te rminal de disuibuiyão), portanto não há nenhuma contenção e nenh uma necessidade de minintcrvalos que. na verdade. é apcna.5 um modo de multiplt:xação por d ivisão estatística. Uma outro r.l7,ãu é que o tclfego descendeme costuma ser muito maior do que o ascendente, portanto é usado um paem!! de tamanho lixo de 204 hytes. Parte dele é um código de correção de erros de Rced-Solomon e algumas outras in forml\yõcs de controle, sobrando lii4 bytes de carga útil para o usuário. Esses nú meros fora m escolhidos para compatibilidade com televisão digital lllle usa MPEG-2, de modo que os c:.umis di! TV c os canais di! dados desccndemes sejam formutados do mesmo modo. O aspecto lógico das conexões é Illoslr.ldo na Figura 2.38. Voltando à inici.:.liZ3Ção do modem. uma vez concJuíd.:. a rangi ng e obtida.:. dcsignuç:lo de seu canal asccndemc. eanal descendente e mimntcrvaIo. o modem está liberado para começar a enviar pacotes. Esses pacotes vão até o [coninal de distribuição, que os rctr.lflsmite por um canal dedicado até a cenlml da opcradom por cabo e ent.ão até o ISP (que pode ser a própria empresa por cabo). O primeiro pacote ~ dirigido 11 [SP e req uisita um endereço de rede (tcenicamenle. um endereço IP) que é designado dinamicamente. O pacote também requisita c obtém um hcr:ino cxato. A pr6xim:J elapa envolve scgurJnça. I1ma vez que o cabo é um meio compartilhado. quem quiser 'ie dar ao tr:.Ibulho pode ler todo o tr:1~go que passar por cle. p.J.ra cvitar que qualquer um bisbiU1Qte seus vi.dnhos - liler.llm~ntc - . lodo o tr:1fego~ criplografado em ambas as d i rc~õcs. Parte do procedimento de inicialização ~nvol ve ~ta bdeeer chaves criptográficas. A princípio podeTÍ:Jmos pensar que conseguir que dois estr.lflhos. o lcmlinal de distribuição e o modem. combinem tml:J chave secreta em plena luz do dia com milhares de pessoas vigiando seria algo difícil. Aconteec que não é. mas li técnica usuda (o :Jlgorilmo de Diflic-Hcllmun) esta forJ do escopo deste livro. Uma discussão sobre esse algoritmo é dada em Kaufman cl aI. (2002). Por lim. o modem tem de se regislr.ll' (f:l7.er logm) e fomeeer seu identilkador exclusivo pelo canal seguro. Nesse ponto está concluída a inicializayão. AgorJ. \} usuário pode se conectar com a IS P c eom...",ar a trabalhar. H:í mu ito mais 11 ser dito sobre modens por cabo. Algumas referênci:1S rekvanles são: 4\dam.. e Dukhinos. 200 I ; Donaldsun e lones. 200 1: e Duna-Roy. 200 I.
2.4.6 Câmeras digitais Um:l urili/a,:10 cad:1 VCI mai .. pnpular de eomputadnres é a fotograli:J digital. o que Lransfnnn:l d mcras digitais em uma cspécie de periférico de emnpullldor. ValllOS f;u.c r uma breve dcscn ,:1o de CO lllO isso funciona. Todas J!'> c:imer.ls têm uma lellte que funlla ulIla imagem do sujeito no fundo da càmera. Em um equip:uncnto convenCIOnal. o lunu u da e:lmcrJ. está cubcno por ullla pclicula fowgr.iliea - JiJl1le - .~obn: a q ual é formuda uma Imagem latente ljuandu a luz a :Itinge. Ess
•
u
e ~
~
• N
•o= N
C
N
o
,
~
•
u
Um pileel. COfT4I05IO de quattO ecos. um vermell'o (R), um azul(S) "dois verdOS (G).
•
•
,.ç;;;~~
o"
~
,•
Lente
~
E o ü
•
Rgu ra2.39
Câmera digital.
~
RAM
•
~
,• , •
~
o
. i I
~ ~
•• c •
~
"
O
_
somente a luz verde :l.unj:l. os outros dois. São usados dois ecos para a lul. vcrdc porque utilizar quatro ecos para representar um pixel é muito mais conveniente do que usar três, e o olho é mais sensível à luz verde do que à venllcl ha ou azul. Qu:md() um fabrican te de c:lmcr:lS digitais afiml:!. que uma c!lrncra tem, pur c.;(cmplo. 6 milhiks de pi;ccls. ele CS I:i mentindo. A dmera tem 6 milhões de que. j untos, formam 1,5 mi lhões de pixcls. A [ma· gem ~er:lli da como um arrolnjo de 2.828 X 2. 121 piltcls (em câmeras de baixo preço) ou de 3.000 X 2.000 pi"els (em SLRs digi\:üs), mas os pixe ls cxtl".lS são produúdos por intcrplllaçào por :oIOflware dentro da câmera. Quando o botilo do obturador da câmcrn é pressionado. o software do equipamento reali7.:l lrês tarefas: ajusUI o foco. detennina a exposil,:Io e efetua o equi líbrio do br.tnco. O auto foco funeiona analisando a infonnação de :1Ita freqüência 011 imagem c entilo movimentando a lente até que clã seja m:uimi7~da. para dar o máximo de detalhe. A exposiç:1o é detenni nada medindo a luz que cai sobre os CC Ds e cntàn ajustando o diafragma da lente e o tempo de exposição para faze r com que a intensidade da luz caia no meio da faixa de alcance dos CCOS. Ajuslar o e4uiHbrio do br.mco tem a ver com medir o e!'ipcctm da luz incidente para efetuar a.~ nect!.~sárias correções de cor mais tarde. Entilo. a imllgem é lid:1 com base nos CCOs e annazcnada comn um arr.1njo de pixcls na RAM interna da cimer.l. SLRs de primeira linhél usados por (otojornalistas podem fotografar oito quadros de alta resol ução por segundo por 5 segundos, e precisam de apmximadélmentc I GB de RAM intcffilJ para anna7.cnar as imagens antes de proct!.~sá- l as e ,lnmI7.cná-las pennanentemenle. Câmeras mais haratas têm menos RAM. mas ainda assim têm boa quantidade. Na fase de pós-caplUr.J. o sohware da eâmera aplica a correção da cor por equilíbrio do braneo paro compensar a luz avcnnclhada ou azulada (por exemplo, de um objeto na sombr:t ou da utilização de um t1ash). Em seguida aplica um algoriuno para reduzir rufdo -: um outro para.compcnsar CCOs defeituosos. Logo após o software tenta dar melhor definiç:io à imagem (a menus que essa earJ.eleríSlica estejo desalivado) procurJ.ndo contornos e aumentando o gradiente de intensidade ao redor deles. Por fim. 11 imagem pode ser comprimida para reduzi r a quantidade de armazenagem reque rida. Um fomlato ~.'om um é íJ JPF.G (Joint I'hotogrJ.p hic Expcrts Grou p - gru po assuclado de eoopecialistas em rotografil.l) no qual uma u-ansfonnaúa ue rnun-:r espacial bidimensional é aplicada c algumas das componentes de alia frcqllêl1cia !'oão onUllúa:.. O rc~ullado dessa tr.I01>li)rnl(l~:io é que li imagem rc4uer um númeru menor de bi ls de am1a7.cnugem mas perdem-~tl o.~ úetalhes mais ~UllS. Quando uxJl) \1 pruce~sa mcnto interno ti c:imcr.t estiver eonduftlu. a imagem é gr.waua no meio tJc mua/.cuagemo em ger.u umo memória rápida ou um minúsc ulo disco rígido removfvel tlcnomi1HJúO microdrive. O J>I.~s-prt) eessamellto c a gravação podem levar vários .~egundos J>l.1r image m. Quando o u:-.uário chega em casa . .1 c.ãmcrJ. pode ser cont."Clada a um computadur. em gemI usando. por exemplu, uma entr.u!a USO ou um e:lbo FircWire. Então, as imagens são transrerida.~ tia càmera parJ. tl disco rígido do computador. Usando software especial. tal eomo () AdoOe Phntoslwp. () usuário pode rccnnur a imagem. ajustar bri ~ lho. contraste e equilfbrio ue cor. dc~ laear. obscurecer ou re mover porçi;es da irn ugclll e aplicar diversos Iiltros. Quandu -:k estiver !,.'Ilnlente com () resultado. os !m;uivos de imagens podem -;er impressos em uma impressora em c()rc.~. enviados pela Intemet li uma loja especializada para ftl1.cr o :Icabamentn nu gr;lvadns em um C D-ROM nu DVO para armazenagem cm arquivo c suhse411ente impressão. A quantidade de c.:lpacidadc computacional. RAM. espaço em disco rígido c ..oflwarc CIO uma câmera digital S RL é est:lrreccdnr.1. Além de o computador ler de fazer todas a.~ e()isa.~ mencionadas antcrionnellle. ainda pn::ciSII ~e cumunicar eum a cru na leOle o.: com :l cr u na memória rápida. renovar a imagem na tela LCO e gerenciar lodos os botÕCs. engrenagens, IU7.es. mostradures c traquitana.s da dimerJ. em lempo real. E.~sc sistcma embutido ê ..:x tremarnente poderoso e mUHas ve:r.cs rivali7-l1 com um computador de mesa de alg uns anos :ltr.k t:
_ _ _ _ _ _ _ _ __ '. '111 11111111"' 1111 1 1 1111 1 1"
ecos
.. · "
.. , .,.
w
2.4.7 Códigos de caracteres
M
Cuda ctlmputaJor tem um conjunto de C:lrnClercs qUI! clt: usa. O conjunto mínimo contém as :!fi klr.l.'i mnilis.
cula..., as 16 letras minúsculas. O!! algarisnllls de O a 9 c um conjunto de menos. vírgula r.:: retomo ao início da linha.
~ímbolos
especiais. como c ~ paço.
~inal
de
Para tr.msfcrir esses carJ.ctcres pum o compuTador. um número é designado a cada um. por exemplo. a =: I, b = 2 . .... 7. = 26. + :; 27, - = '28. O mupe:.llncnlo de caracteres par:\ números inteiros c denommado clKligo dI! caracteres. É essencial que computadures que se comunicam usem o me ~ mo código ou nüo cnnscguir.lo se enten. der. Por essa r:uiio. 'oram dese nvolvidos padrf.c.'i. A seguir c-'tlllninarcnms dois dos mais unportantcs.
ASCII Um código de ump!:!. utilizaç;io I! dcnomin:uJo ASCII (Amcric:m SUlldard Codc ftlr Information lnterchangc - Clíd it.:o Plldr:.io :lrncric:Intl para troca dtl in ro rrna~iic.'1I . Cada car.1ctcre ASCII h:m 7 bIts. o qUI! pcnnitc 128 car..tCleres no 100al. A Figura 2.40 mostr.1 o códigu ASCII. Os códigos O a I F (hcxadecimal) são caracteres de controle e não ~ã() imprcssos. Muitos dos car.u.:!eres de controle ASClI são des ll llado.~ a tr.ms rmssào de dados. Por exemplo, uma mensagem pode ser composta de um ear.1CICre SOH (Slart 01' Hcadcr - iníc:o de cabeçalho), um car.lClen: STX (St:ln ar Text - início de te:uo), o texto em si c um car.-c!erc ETX (Enu (IrTex! - tim do !C.~to) c cnl:io um caractere Em (tim da Tmnsmissão). Contudo. na pr:iuca. a mensagem enviada por linhas telefônicas e redes são rormatadas de modo muito difere nte. pormnto os carm:tercs ASCU de controle de transmissão jâ não são mUito usados. O .. carttctere... de impressão ASCII sào diretos. Incluem as lelr.1S maiüsculas e minúsculas. sinais de pontuução c alguns símbolos matemáticos. Hei r O-
I' I:
•5
I-7
,
1
I.
I~
Ic n.ar.2.40 Conjunto de cnrncteres ASCll.
I
10 E
LF__ r -
~ :x
I"
I "23
I"
I 26 " 127
"29
'"'8
....
Nome _~g"ifieado -~ NUt. Null SOH Slart ot Headll19 STl( Slnrt Cf TaxI 12 EI'I(I OI' Text 13 ETX EOT Ena OI Transmlsslor1 14 ENO Enauily I 15 ACX ACKnowledgemont
,
8EU
as
Badl;Space
HT LF
Horizontal Tab Une Feed
VT
1Jet11ca1 T80
17
'A '8 'C 'O 'E
Form Feed Carrlage Aoturn Sh.n Oul S'_ _ ShIt! ~
se
+.
~
~car. Hei (Spaco) 30 I 1 31
,
..
0.._ O
IF
r. -
r:':
, I"
42
I;:
•5 I'"'" 3
s
I'" 35
&
" , I;: • 37 38
, " 7
39
2C
3C
<
1'0 I 'E
, 3D 3E 3F
> 1
2F
18 19
FF CR
Nome~Igniflçaoo
oLE
""
"
8EL
OC,
OC' 0C3
Hex
A 8 52 C ' 53 O E I '" 55
I"
.,.,
Car. p
I" O R I~ S T ,I'" OI U 65 V I"
"oIS "
O H
.8 'C '0 .E
! 1" ---
I"57 5.
5A J X 58 L 15C M 50 N ISE O ' SF
Cat.
'
....
71 •b I" 172 , ," 74 d •, ' 7576
W
,
n
X
h
76
" '68 , . .. .. F
-
Hei
-~-
Y
2
I
-
o
~
•
•
~
eo
"• ~
••3
• •
00
•
~
o ~ ~
•• c o•
o
,
"'o
, 79
6A 68 I SC 'O I 'E
7A 178 7C m 170
6F
o J...?F
I
k
o
' 7E
~
•
u
0.., p q
•
•, ,"
,
w
,,,
I
, }
o~L I
UNICODE
,......
·•
~
Dala Unk Escaoe 08V1C8 Conu'Ol I Oevice Centrol 2 Oevtee Control 3 O'9vic& Control 4 NegalNe AcKnowledgement SYNcnronous 10'18 End of T ransmisslon BIodt
OC' NAX SYN ET8 CAN CANco' EM End 01 Meafum SU8 SUBstituto ESC ES""," FS File Separalor OS Group Separllor RS Aecord Separator _ US__Unit ~tor
Caro
46
,
--
-
N
A indústria do computador se descnvnlvcu em grande pane nos Estados Unidos. o que levou ao conj unto de caracteres ASC II . Esse código o;! bom para a lfngua ing lesa, mas não tão bom para outros idiomas. O ib.ncês precisa de acentos (por exemplo . .~y.fT~me); () alemão precisa de ~ inai s diacriticos (por cxemplo.fiir) \! a.~sim por diante. Alguma... línguas eurupêias tê m ccn;ls letr.1s que não '\C encontram no ASC II . tais como li alernll ~ c a dinal1larqul!..a Ib. Alguns idiomas tê m ,l lfaOetos intelr..tmenle difere ntes (por exemplo. russo e âr.1be), e algumas poucas línguas nolo têm alfabelO algu m (por exemplo. a chinc.~a). Comu os computadores se cspalhar..tlll pelos qua{f() cantos tio
, .,.
.... •• o
~
~
•
~
•
o U
"
~
•
~
~
•
-• •
~
o ~ ~
• "c
•
~
o
mundo e como
llS
fabricantes de software querem vender pnxlutos em países onde .. maioria dos
IISUâriOS
não fala
inglês. é pn..'Ciso um novo conjunto de car.lctcTCS. A primcir:l lcm:l.Iiva de ampliar o ASCII fo i o fS 646. que acrescentou mais 128 caracteres au ASC II. trans· fonnanuo-o crn um ctkli go de 8 bits dl:nominado L:lti n- 1. A maioria dos caracteres adicionais eram lettas liltinas com acentos c sinais diacrílicus. A pnSxima tentativa foi o 15 8859. que inmxJutiu o conceito de uma pági lia de cód igo. um conjunto de 256 caracteres para U111 idioma particular ou grupo de idiumas. O IS K!!59-1 é Latin- I. O 15 1'1859-2 Itatu Jos idiomas eslavos buscados nu latim (por c)tcmplll, checo. polonês c húngaro). O IS ~85 Y-3 contém os caracteres necessários para os idiomas turco, maltês. e:.pcranlO. galego c ~ssim por di:lllte . O problema da abordagem da págin~ de cóJigo é que o software te m de mULHer controle da página em que ~stá: i Impossível misturar idio mas nas páginas e o esquema nào cobre a Hngua j aponesa ncm .:I. chinesa. Um gmpo de empresas de computadores resolve u c..'ise problema fonnando um consórcio par.! criar um novo sistema. denominado UNICODE. e lr.Ulsfonnando-o em um P-J.dr::io Internacional (15 1(646). Agora o UN ICODE c suport:l.do por algumas linguagens de progI"J..lnação (por exemplo, Java). alguns s istemas opt:I"J.t.:lUnais (por exemplo. Windows XP) e muit.:lS aplica.çiic:s. É pmv~vel que será progressivamente aceito à medida que a indústria de computadores ~ IOma global. A i d~ia que fundamenla o UNICODE é designar a cada caractere e símbolo um valor unico de 16 hit... denominado po nto d e cód igo. Não são usados carJ.ctercs multibytes nem seqüências de escape. Sfmbolos de 16 bits simplificam a prooução de softwares. Com símbolos de 16 bits. o UNlCODE tem 65.536 pontOs de código. Visto que lodos os idiomas do mundo usam ccrca de 20(}.OO(} símbolos. os pontOS de código são um recurso escasso que deve ser Jlocado com grande cuidado. Cerca de metade do~ pontos de código já fomm alocados. e o consórcio UNICODE estiÍ ~ mpre e:.tudando propostas pam utilizar o restante. Para :1I:e!crnr a aCcll:llfão do UNICODE. o consórcio teve a brilham..: idéia de usar l ati n- I como pontos de côdigo () a 255. o qu..: faciliTa a conversão ent re ASCI I e UN ICODE. Para ..:vitar despt!rdiçar pontos de código. cada sinal diacrítico te m seu próprio ponto de código. Cabe ao soliware combinar ~i nai s diacríticos com seus vizinhos para fomlar novos caracteres. O espaço do ponto de código é dividido cru blocos, cada um deles é um múltiplo de 16 pontos de código. Cadil alfabeto impon:.lIlte cm UN ICODE tem uma scqil€neia de 7.onas consecutivas. Alguns cxcmplos (c o mimero de pontos de eódigo u!oc:ldos) são lutim (336), grego ( 144), cinl ico (256), amlênio (96), hebraico (1 12), dcvanágari ( 128). gumlUllui ( 128). oriá (128), tclugu ( 128). c k:umada ( 128). Notc que cada um desses idiomas reccbeu um numero maior de pontos de código do que II número de letras que p(lssui. Essa o pção I"oi escolhida em parte porque muitos idiomas lêm várias fonnas parJ. cada letrJ.. l>Or cxemplo. cada lelr:J cm inglês tem duas fo nnas - minuscuIa e MA IÚSCULA . Alguns idiomas têm três ou mais fonnas, possivelmente dependendo de a letrJ estar no início. no mcio ou no IinaJ de uma palavra. Além desses :Mabctos. for.lJll dc..;ignad(ls pontos de código paI"J sinais diacríticos (1 12). sinais de pontuação (112), índices infenores c superiores (48). símbolos mone\.á rios (48), símbolos matcmáticos (256). formas gl.-omé. tricas (96) e :.inais variados (dillgbals) (192). Dcpoi~ de:o>ses vem os ~ ímb{) los necessários para as línguas chi nesa. japonesa e coreana. Primeiro há 1.024 ~rmbo l os fonéticos (por exemplo. katakana e bopomofo) e. em seguida. os ideógr.!fos han unilicados (20.992) usados em chi nês e japonês e as sílahas ha ngul do idioma coreano (I I . 156). Para pcnnitir que os usuários inventem carnct.ercs especiais pam fi n alid3dc.~ especiais. 6.400 pontos de código foram designados para uso local. EmborJ o UNICODE resolva mui tos problemas associaúos com a intemacionaliza<;;io. ele nào resolve (nem te nta reso lver) todos o .. problcmas do mundo. Por exemplo. enq uanto o alfabeto latino está e m ordem alfa!>Ctica. m i d etlgrama~ han não estão na ordem do dicionário. Por con:.eqilência. um programa ~ m inglês pudl! prncur:lr {"(li e doS em ordem illf:l.bélic:1 ..implesmenle comparJ. ndo o valor UN ICODE de ~e ll pri llleim caracte re. Um prngmllla ..:mjapllnês precisa de tabelas e:
2.5
Resumo
Sistcm:lS de compm:won:s ~;io compOSH)S por três tipos de componentes: processadores, memórias e disposi_ tivos de EIS. A tarefa de um processador é buscar instruções. umu por vez, em uma memória, decodifid-I:ls t! executá·las. O ciclo busca-dccodificaçãO-exccução pode ser descrito como um algoritmo c, na verdade. às vezes de é e;'H.'CutaJo por um intcrprctaJor de software que roda e m um nívd mais baixo. Para ganhar velocidade, muitos computadores agura têm um ou mais pipelincs (parJ.lc1ismo) ou 1t:1I\ um projeto supert:sca[ar com múltiplas unidades fundom!Js que funcionam em pat:llclo. Sistemas com v;inos process.adores são cada vez mais comuns. Computadores paralelos incluem processadares m:llru.:iais. nos "luais 3. mesma operação é cfenmm ~obre múltiplos co njun tos de dmios ao mesmu tempo, multiproc:.:ssadore.'I, no .. qU:J.is vári:l.S CPUs comparilh:Ull uma meméri:l cm comum. \! mul ticompuudores. nos quais cada um tios v:írill~ computadores tem s ua própria m\!mória ma.~ se comunicam pur tr:msmiss;10 de mensagens. Mcmôria.~ podem ser c;llegori:t.adas como primária." o u sl.:cund.1ri lS. A memória primária é usada parJ. conter o programa q ue: está sentlo executado no momento. Seu tempo de ace~so é curto - algumas poucas dczenas de nano~segundos. no máximo - e indepcnde do e:ndercço que está sendo aces ~ a(lo. Caehes reduzem ainda mais esse tempo de acesso. A lgumas memórias são cquipada.~ com códi gos de cOfTeç:io de erros para aprimorar a conliabilidade. Mc!mSrias .~ecu l1d;lrias. ao ctmtr:írio. têm tempos de acesso muito mais longos (milissegundos ou mais) e dependem da localização do~ dados que estão sendo lidos ou escri tos. Fita.... discos magn6ticos c disco... õ ticos são :1.-; memórias ~ccu ndári ns mais comuns. Há muitas varit."Ú:ldcs de discos magn~lieos. incluindo discos tlexfveis. discos Winc hester. discos IDE. discos SCS I e RAIOs. Entre os discos ó ticos tiguram CD- ROMs. CD- Rs e DVOs. Dispositivos de EIS ~ão usados para trJ.nsferir infonnações para dentro e para fora do computador. Estão eom..'(,;tndos ::10 procc~smlor e à memória por um o u mais barramentos. Alguns exemplos são tenninnis, mouscs. impress(lr::ls e modens. A maioria dos dispositivos de EIS usa o código de cnr:lClcres ASCII. embora o UNICODE eSleja gan hando mpida acei taçào à medidu que a indústria de computadores se toma global.
Problemas 1. Considere a operação de uma máquina que tenh:1 o cam inho de dados da Figura 2.2. Supollh::l que carregar os regiSLr"J.{lores de entmda da ALU leve 5 os, executar a ALU demore 10 ns e arma ...enar o resultado de volta no regislnldor de rascunho to mc 5 os. Qual é o númcro máximo de MIPS de que essa máquina é C::Ipaz nn ausência de parJ.lclismo (pipelining)'! 2 . Qual é a final id:lde d:l c tapa 2 na lista da Seção 2.1.27 O que aco nteceria se cssa clapn fosse omitida'! 3. No compuUldor J. o tempo de execução de todas as instruções. é \O ns. No computador 2. o tempo de e:tceução 6 de 5 ns. Você ptxk afirmar com certeza que o computador :2 é mais mpidn7 Discuta sua resposta. 4. Inl:lgine que você está projetando um computador de um só chip p:lm um siste ma c mbutido. O ehi p conter.i toda SU:l mt:mória c exceutnrá fi mesma velocidadc da CPU sem penalidade de :Ieesso. Examine c nda um dos princípios discmidos na Seç:io 2.1.4 e diga por que são t:lo importantes (admitindo que ainda se de.~cja alto dese mpenho). S. Um certo processo de ctlmput:u;ãn tem alto grJ.u de scqlicneiamenlO - isto é. cada ctap:l depende da etapa que a precede. O que seria mais apropriado para t:.~se processo: um processador matricial ou um processador com paralelismo'! Explique. 6 . P-J.rJ. competir com :I prensa impressorJ. reccn te men te inventada. um mOSlCiro medieval decidiu produzir e m massa livros escritos e m papel reunindo um vas to mimero de esenbas em uma gr:mdc sala. O superior do moslCiro então dilarhi J. primclrJ. paluvrJ. do livro a ser prudul.ido e tooos os eseribas a e~reveria l1l . Em ~gui da cle ditaria ri ~gu ndll palavr:1 l! todos os escribas a t:screveria m. Esse processo .;cna repelido atê que o livro UlIelm t{}SSC lido e copiado. Cum 4U:11 dos ~istem:ls de pnk:c:-..'illdCJT parnlelo discutido .. ml St.'Ção 2. 1.6 e!o.SC sistt: ma é mais parecido'! 7 . À medida que descemos n:1 hierMqui:l de memôria de cinco níveis discutida no IcxtO. o tempo de accsso au mcnta. Faç:l uma esti mati va rJ.l.oo"cI da razão entre o te mpo de aces:-.o pur disco ótico e o tcmpo de acesso nu regis trador da memtÍria. AdmiUl que tJ disco já está no respec tivo drive. 8 . Sociólogos podem obter três respos tas pussíveis para UniU típica pergunta de levalllamento como "Você :lcredita e m PapaL Noel'!" - o u scja: sim. não. nenhuma opinião. Tendo isso em mente. a Sociomagne tie Computer Company deCidiu construir um compuudor parJ. processar os dados do levantamcnto. Esse eompulac..!or te m uma mem6ria trinaria. isto 6. eada byte (trytc?) eonsiste e m 8 tri ts. sendo que um trit contém um O. um I ou um 2. Quaultls trils ~ào Ileeessârios pam eonte r um número de 6 biL~? E.~crcva uma expressão para n numero de uiL~ necessúrio para conter /I biLS. 9. Calcule..t taxa de dados do o lho hurn:lno usando as seguintes infommçOes. O c:lmpo visual consiste ~m c~ rca de lO'" elementos (pixel s). C3da pi:tel podc ser reduzido à uma ~ohrep()siçiit) das três cores primári
••o ~
", ~
E o u
•
~
·• E
•
•
•
~
o ~ ~
• N
•
~
o
N
,o ~
•
u
•
'",...
·
•o
11 .
~
•
= ~
e o
"• ~
• •
~
= = ;
-
12. 13. 14. 1S.
16.
~
o ~
17.
~
•
"c •m
o
18.
19.
la, 21 . 22. 23 .
24. 25.
26. 27. 28.
29.
30.
31 .
duas veZC$ aquela freqUência. bto é. :J. 44 kHz. Uma :l.ffiOSlr..t de 16 bits provavelmente é suticientc parJ. capturar a maioria das info nnaçõcs :luditiv:Is (isto é. t) ouvidu nãu pode disting uir mais do que 65.535 níveis dI! intensidade). As informações genéticas dI! todos os seres viventes eslão codiliçadas como moléculas de ONA . Uma molé· cuia de DNA é uma scqüencia linear dos quatro nucleotídcos básicos: A. C. C e T. O genoma humano contém aproximadamente 3 X 10'" nucleOlfdcos 1I0l fOnTla de :Iproximadamcnlc 30.000 genes. Qual é a capacidade lOtai de infonnaçõcs (em bil.'1 ) do gcnoma humano? Qual é:'l capacidade mãxima de i nfonna~(ics (em bits) do gene médio? Um ccno computador pode ser !',''luipatlo com 268.435.456 byles de memória. Por que um fabricante escolheria Inl númao peculiar. em ve1. de um número fáci l de lembrnr. como 250.000.000? Invente um código de ~Iamming de paridndc par de 7 bit.. par.! os dfgitos O ti 9. Invente um código pum os dlgitos O a 9 cuj:l di.~tância I-bmming seja 2. Em um código de H:lmming, ulguns bits são 'desperdiçados' no selltido de que são usudos para veriticaçilo. c não para infommção. Qual é a poreelllagem de bits desperdiçados par.! me n:\agens cujo comprimento LOtai (dados + bits de vcri ficaç:1o) é 2/1 • I'! Ava lie essa expressão numedc:unente par.! valores de 11 de 3 :I 10. O disco ilume dcscquilfbrio pode eaus:.lr ineficiências" Como elas podem ser atenuadas'! Um fabricante anu nda que M: U tenninal de mlpas de blls de eor pode exibir 21~ cores diferentes. Pon!m. o hardware SÓ te m 1 byte par.! cada pixeL Corno é possível fazcr isso? Um tenninal de mapa de bits tem um visar de 1.600 X 1.2lXI. Ele é redc.'iCnhndn 75 vezes pnr ~cgundo. Qual é a dur.tção du pulso eorrespUlldenh! a um pixel'! Usando ulIla certa !"ulIle, Lima Impressora munucrulllallca a la~e r fXlde impnrm r 50 linhas de :tO ear.!clere.~ por página. e caractere médio ocupa um quadr.!du de :2 mm X :2 111111. dos quais cerea rJc 2:5~ é toner. e o::;to é hr..tnco. A eamada de to ner tcm 15 micm de espessur:1. {} canucho dc toncr da ill1prcssur.! lIlcde 25 X R X :2 em. Qu'lOta~ pági nas fXxlem ser impress:ls com um cartucho de 'oner? . Quando um texlo ASCII de paridade ímpar ê tmnsmitido assincronamente a uma taxa de 5.600 earnctercs por segundo. p()r um modem de 5bJXXI bps. qual purcentagem dos bits recehidos contêm dndos (ao contrário de controle)'! 1\ Hi-Fi Modem Cumpany al:abou de projetar um novo mooem de mfXlulaç:1n em freqüê ncia quc usa 64 fre qüênda.~ cm vcz de apenas 2. Cada scgundo ~ dividido em 1I intervalos de te mpo igu:lis. cada um deles conte ndo um dos 64 tons fXlssívcis. Quantos bits por segundo esse modem pode tr..lIlsmitir usando tr.tnsmissão síncrona'! Um usuário de Intemcl eontratou um serviço ADSL de 2 Mbps. e vil.inho dele preferiu um servll,o de Internet por Cl.lno que tem umu largura ue handa compartilhada de 12 MHI.. O esquema de modulaçãu em uso é QAM64. Hd /I residências ligadas ao cabu. cada urna com um cumputador. Uma fr:lção j dessc:s computadores c.... tá
_ _ _ _ _ _ _ _ _ _•••••••• , ••• 1"11 \11111 11 1111111 111 , ,1. 1, 1, , ' 11
32.
33.
34.
35. 36.
on-line :l qualquer dado instante. Sob quais condiçõcs o usuário do cabo obter.! melhor 'lCrviço do que o Ilsuário ADSL"! Uma c5.mera digilaltl!m uma resolução de 3.000 X 2.000 pixcls. com :\ bytes/pixd pura cor RGB. O fabnc:mte da câmera qu!.!r grJ.var um:l imagem jPEG a um fator de compressão 5x na memória rápida em '!s. Qual é a !Ull:l de dados requerida? Uma cJ.mcr.l digiTal de primeira linha Tcm um sensor com 16 milhõcs de pixcls. cada qual cnm 3 bytes/pixcl. Quantas fOlOS podl.:fIl :>cr unn:\zcnm.las \!m um cartão de rncrmkia r:ipld:l de 1 OB se u fator de compressão for JO 5.,'! Admita 4ue um I GS sig nilica 2 bytcs. Estime quantos caracteres. incluindo espaços, cunlém um livro tfpico sobre cienda w comp\U:.u;ão. Qtlantos bits são necessários p OVDs de Jupla face. dupla camada. são necessários para a mesma bibliotc!.:l? Reesc:-eva um procedimento }wlluning (useij. f!nt.:cxlf!J) par:t convence os 7 blfs de baixa ordem de ascii e:n ullla pala.vra de código de II bits :umazcnada em encodf!a. Escrev:J uma fum;ão ai:uance (codf!. n. k) que rei:cbe um cnde. matricial de /I C:leaClcrcs de k bits cada como cntr.uia c rclOm:J a distância do conjunto de car.tclercs como saída.
r-o f"-I
••o ,•
~
~
S o
u
••
•, •
~
o ~ ~
• "c •
· ~
o
N
o o
\
I
I I
o
nível lógico digit a l
a parte inferior da hierarquia da Figura 1.2 encontramos o nível lógico digital. o real hardware do computador. Neste !;Jpícu lo examinaremos muitos aspectos da lógica digilal. como um fundamento pal1l o estudo de níveis mai~ altos em capílulu~ subse4uentclI. Esse assunto está no limiar entre a ciência da compulação e a engenharia elélri'::1.. mas o material é independente. portanto não há necessidade de experiência prévia de hardware nem de engenharia para entendê-lo. Os elementos bisicos que fazem pane de lodos os computadores digitais são surpreendentemente simples. Iniciaremos nosso estudo examinilndn esses elementos bá.sicos e também a á!gcbr'J. especial de dois valores (álgcbm booleana) usada para an:llis:í-lus. Em seguid:1 examinaremos alguns cirçu itos fu ndamentais (Iue podcm ser construidos usando simples combinações de ponas. entre eles os circuitos que efelUam a arilmélka. O tópico que vem depois desse ~ o modo como essas portas podem ser combinadas para annazenar infonnaçÕt!s, isto ê. como a.~ memórias sUo organizadas. Logo após, chegamos à questão das CPUs c. em espt..-cial. de como ~ a interface enlrC crus de um só chip, a memória e os disposi tivos pcrili!ricos. Mais adiante neste capitulo serão estudados diversos exemplos da indúslna de computadores.
N
3.1
Portas e álgebra booleana
Cirçuitos digitais podem ser construídos com um pequeno número de c\emen{Os primitivos combinando-os de inúmera.'l manc1ms. Na.~ scçõcs seguintcs descreveremos esses elementos primi tivos. most ....lrcmoS como eles podem ser combinados e introduziremos um" poderosa tée niclI matemática que pode ser uSilda para analisar seu comportamento.
3.1.1 Portas Um cirçuito digital é aquclt! cm que estão presentes ""mente dois valorc... lógicos. O non ual ~ que um sinal entre O e 1 volt represe nte um valor (por exemplo. O binário) c um sinal e ntre 2 e 5 VOll'l represente o ouuo valor (por exemplo. I bin~ · rio). Não s.tb pcmlitidas tClIlIÕ!!." fu r..1 dessa.. duas raixas. Minúsculos dillpositivos e1l!lronicos denominados portlLS (gOles ) pu~Jem calcular vârius funçõcs dcs~ si nais de dois vulorcs. E"sas portas fonnam a ba.~e do Ilardware sobre a qual todos os computadores digitaiS sao construídos. O!'> detalhes du fUllelouamellt/l iml!mo dcs,as punas e~ t rrll fo ....! do I!SCOpll dc!'>!e livro. puis pcno.!l1ccm 110 nível de dispH. sith ti '-tuc e~tá .!baixlI do lIí,cl O. ~ãll ub., tante, .!gu"'J vamos dhagar UIII puuco c c.\:.uninar rapll!;.tlllenlC a idéia bâsÍo.!a, '-tue nãu ê dificiL Nu fundo. 100:1 a lógica digital modema Se apt~ill no falO dt: quc um IrJIlSisIllr pt.ldc funcionar como um cumulador hillano muiUl râ[lidu. Na Figura .\. I! a) IIlIl~t ....!mus um lTansiShJr bipolar - reprcsentadn !leio drculo - illSt:rido em UIII cir· CUlto si mples. EsSt: tl".!llsislor tem três conexi.)cs com o mundo cxtelior: o coletor, a hase I! o c mis.~r, Quando a voltagem de cUlmda. V,,,. estâ abaixo de um .:cno valor .:rílico. o t....!lIsistor de~liga e age corno uma resistência infi nita. Isso tal com ário pa...J. lim itar a quantidade de corrente drenada pelo Ir..msislor, de lmxlo que ele não queime. O tempo típico reyuerido paJ"J passar de um estudo para outro é de alguns nanusscgundos.
78 - ....... ... .... "
.."",,, ..
+vc::
v_
.v~
Rgura3.1
Ia) [nverscr a tran:::lstor. (bl Pona NANO. ICI NOR.
r
V,
Coletor
Pona
·V~
V_ V,
v'1 V'~...
V,
~."""
•>
'"o
(o,
(b)
(.)
V_
Na Figur:I 3. I(b) dois tr.lnsistores estão ligados..:m sém:. 5.! :uubas, VI e V2 • forem altils, :unbos os lrJnsistores conduzir.1o c V"H' ..:air.1. Se qualquer das o;!ntr,ldus for bai..:a, o tr:illsislOr corresponden te se desl igará e a saída será alta. Em OUlras palavr..s, V"u, ".CrJ baixa :;c, e som..:nte -.c, ambas, VI c Vl , forem altas. Na Figur.L 3.I(e) os dois transistores I,:st[o ligados em paralelo em vez de em série. NesSll eOllliguração, se qun.lqucr das entr:lJas for alta, o transisto r correspondente ligará e conectará a saída eom a terra. Se amoas a.'i entrJ~ das forem baixas. a saída pemlalleccr.1 al ta. Esses três circuilOs, ou seus L'quivalenlcs. fonnum as três ponas mais simples e são denolllinóldas ponas NOT, NANO e NeR, respecliviUnente. PortólS NOT costumam ser dcnominólda.~ in versoras; usaremos o.~ dois tennos inJiferentemente. Se agora aJClarmos a convcm;ão de que 'aha' (V..... volt.~) é um I lógico e 'baixil' (tcrm) é um O lógico. podemos cxpn ..'!lsaT o valor de Sólfda eomll uma função dos valores de entmda. Os símbolos usados parJ. representar essas portas são mostrados nas ligur:ls 3.2(a) a (c) junto com o comportamento funcional de cada circuito. Nessas figuras. A c 8 são entradas e X é a sarda. Cada li nha especifica a ~aída para uma combinaçJo diferente da.~ entradas. Se o sinal de saídn da Figura 1.1 (b) for alimentado em um circuito inversor, obtl..'mos um outro circuito com o invl..'rso exato da puna NANO. a saber, um circui to cuja SCussão precedente deve ter deixado claro que as ponas NANO e NOR req uerem dois tTansistorcs cada. ao passo que as portas ANO e QR req uerem três cada. Por essa r.l71io. muitos co m pu l adore.~ são baseados em portas NAN O e NOR em vez das portas mais conhecidas, AN O c OR. (Na prática. todas as pon as são imp l emen Ulda.~ de modo um pouco diferente, mas :L~ NANO e NOR ainda silo mais simples do que as AN O e OR.) A propô~ito, vale a pena observar que as ponas podem perfeilamente ter mais de dua~ c n tr.la;\:;. Em principio. uma pona NAN O. por ellemplo, pode ler, arbitrJriamente, muitas cnt.radn..~, mas nu prática não é comum encontrar mais de oilo entr:tdas. Emborn a questãu do modo como são construídas as portas pen em;a ao nivel do disposÍlivo. gostaríamos de mencionar as principais famílias de l,ccnologia de fabricação porque elas soio citadas com muila freqüência. As d un..~ h.:cnologias principais são a bi~)lar e a MOS (Metal Oxide Scmiconduclor - scmicontlutor de ÓXldu mctá1ico). Os dois principais tipos hipolares ~<10 J r rL (Tranl>istor-TrJllsislOr Lo~ic - lógica U';1nsi:,lOr-trJ.Ill>i:.tor), que há muilOs anos é o burro de carga Ja elelrônlca digital. c a EC!. (Eullltcr-C\)upled Lugic - lógica de cmissor acoplado). que ena u~ada quandu ~ rcllueria uma opcrnç;lu úe velocid:ldc ll1uihl ,llIa. Para circuitos de computador. u que prcdumllla agurJ ~ a tecnoll)gm. Punas MOS .~ào mais lent:ls do que as TrL e ECL, mas exigem bem me nos energia elétrica e ocupam um esp.tçu muito me nor. punamo, um gmmJe numem dc."'''a... pon as pode ser compac\pdu t! cmpacot.:ldo. Há muitas variedades NOT
~ na..,.. 3.2 Símbolos e componamento funCIonal das cmco penas básicas.
~ x
o , , o
(.,
NANO
NOR
OR
ANO
~ ~~ ~ B
B
B
• x,
B
•x , , , , ,
•
x
, , , , , , ,o
A
A
o o o , o o o o
o o o o o o o
o o o o o
Ib)
(O)
I~
(.,
A
B
o o o o
X
A
, , ,
, , , , , , ,
M
• •
"
o
<Xl
••
de MOS. entre das PMOS. NMOS e e M QS. Embom 1,):' modos de construção dos tr.m::.islOres MOS e dO!! lmnsislOres bipolarcs :o;cjam diferentes, sua capadtlaúc de funcionar C0ll10 comul.adorc.'i dctn)nicos é a mesma. A maioria das CPUs t! memórias modemas usa tecnologia eMQS. que funciona a +3 .3 volts. E issoé tudo o que diremos sobre o nível de dispositivo. O leitor inleres.sado em continuar () estudo Jesse nível deve consultar as leilUr.1S sugerida.'! no
Capítulo 9.
Q
~
,• ~
e Q
u
• • ,• ,
~
~
"
•
~
Q
•• • c" •o
~
o"
3.1.2 Álgebra booleana Partl dc.scrcvc r os circu itos 4uc podem ~cr construfdos combin:mJo punas. é necessário um novo tipo de álgebra. no qual variáveis c funçõcs podem u!,::.urnir someme os valow.: Oe 1. Essa álgebra é denominada álgcbr.l boole:.m u. nome que 'I,C deve a seu descobridor. o matemático ingli:s George Boole (1815-1864). Em Icm1O." estritos. estamos nos referi ndo a um tipo espcdlko de álgebr.l booleana. uma álgebr.. de COltltJtação. mas o tenno ':1lgebr:l boolcàlla' c: tão amplamen t~ usado no lugar de ·álgebr.l. de eomUlação' que não faremos a distinção. Exatamente como h:í funções na :llgebr.l. 'ordinária' (isto!!. a álgcbr.l. do eo[cgi:.ll). també m há funções na álgcbr:l booleana. Uma rlmção boule:ma te m uma ou mais variáveis de l!nlr.l.da e produz um resultado que depende somente dos valores dessas variáveis. Uma fu nção simples. f, pode ser delinida ao se dizer quef(A) é I se A for O eftA) é O se A for I . Essa fu nção é a função NOT da Figura 3.2(a). Como uma função boolean:1 de n variáveis tcm s6 2" combinaçõcs possíveis de valores de e ntr.l.da, a função pode ser completamente desc rita por uma tühelOl com 2" linhas. na qual cada linha infonnu o vulo r da funç:io para uma combinução diferente de va lore~ de entmda. Essa tOlbcla é denominada ta hela-verdade. As tabelas da Figura 3.2 são todas exemplos de tabelas-verdade. Se concordannos em sempre listar as lin has dc uma tabela-verdade em ordem numériea (base 2), isto é. para dual\" variáveis na ordem 00, OI, lO e 11, a função pode ser completamente descri ta pelo numero binário de 2" bits obtido pela leitura vertical da coluna de result:uio tia labcl:t-verdadc. Assim. NANO é 1110. NOR é 1000, ANO é 0001 c OR é O111 . É óbvio que só existem 16 funções booleanas de duas variáveis. correspondentes às 16 possíveis correntes de 4 bits resultantes. Ao cOlllr.1rio. a :Ugebr.l. ordinári:t tem um Dumero infinito de funções de duas variáveis, nenhum;] das quais pOOe ser dcscrit:.l por meio de uma tabela de saídas par.l. ux.las as entradas possíveis porque eada variável pOOc assumi r qualquer valor de um número infi ni to de valores possfvcis. A Figura 3.3(a) mostra a tabela-verdadc para uma fu nção booleana de três variáveis: iH = 1(1\. 8 , C). Essa função é 11 fu nção de lógica majoritáritl. isto é. ela é O se a maioria de suas cntmdllS for O. e I se a maioria de suas e ntradas for I. Embom qualquer fu nção booleantl possa ser complet.amente cspcci ficlldtl dada sua tabela· verdade, li medida que a umenla o numero de variáveis c.~sa llot.::tç;1o lica cada vez mais Imbalhosa. Portanto. costuma-sc usar uma outra ootação no lugar dela. Par:l ver como oeom: c....sa outra nomção. observe que qualquer função booleana pode ser especificada ao.se di7..cr quais c.:ombinaçõcs de: variáveis de entrada dão um valor de saída igual a I. Pum a função da Figura 3.3(a), há quatro combinaçócs de V'.uiáveis de cntr.wa que fU1.elll com que M seja 1. Por convenção. marearemos a variável de entmUa com uma barr.l. par.. indicar que seu valor é invertido. A ausênda de uma barra significa que o valor não é invertido.
ABC
Ãêê
A
Lo>Ã
~
• n gura3.3 lal 1'abela-verdade para a /unção majontâna de tre!J vanáveis. Ibj Circuito que I1lIpIemen ta a fu nç3o descnta em "a".
8
A
8
C
o o o
,
O O O O O O
,
•o
H
,
•
, O O , , , , , O , ,,, , I')
--- .... .... ... ...,.... . .-
C
Aãc
4.
O O O
,, ,
5
ÃBC
40
7
Ibl
ABC
A8C
"
Além disso. usaremos multiplicação implícita ou um e?nto pam representar a função boole:môl ANO e + par.:! repre!il;:ntaf à fum.;;1,!. boo~ ;Jna ORo Assim. por t!xemplo. ARe assume! o valor I SfJmentc quando A = 1 e 8 = () e e = 1. r\Jém disso . ."R+ 8C ~ I somc[~tc qua,:do (A =_1 e fi = O) oU (8 = J e C = O). As quatro linhas da Figura 3.3(a ) que produze!Jll bits I na saída são: A8e. A8C. ARe e ABC. A fu n'ião. M, é verd:u..leirJ. (iStO oS, I) se qualquer umôl dessas quatro condiçõcs for verdadeira: daí. podemos escrever
•
M = ;Inc +ABC + ARe +i\BC um modo compacto de dar a tabela-verdade. Oe!ssc nltxlo. um:! função de n variaveis pode ~er descrita como ~e desse uma 'soma' de no máxinm 2" teml<)S de produtos' de n varhh'cis. Ess,:.[ formulação oS de ,:spt!ciaJ importJim.:ia. como wremos cm breve. POll.luc leva direlamt!nte a um;) implementação da função que usa portus padronizadas. É impo.mante ter em mente a d istinção cnlre uma funçJo hflO!c;.tn;J abstrala e sua implemen[;Jção por um clrcuilO eletrônico. Uma fu nção booleanôl consiste em variáveis. como A. B e C. e opemdores booleanos. eomo AND, OR e NOT. Uma funçuo boolcan;J é descrita por uma tahcla-verdadc ou por uma função booleana como
•> ~
c
M
Umôl funç.io Otlolc:ma pode ser implementada por um circuito eletrônico (muitas ve..:cs de muitos modvs diferen tes) que usa sinais que representam as variáveis de entrada e sôlída e portas como ANO, OR e Nar. Em gemi llsaremos :l nOL:l~:io ANO, O R e NOT quando nos rcferiml0s !lOS opt!fado res boolc:.II1os, c ANO. aR e! NOT quando nos refcrimlos a portas. mas essa notaçiio fn:qlicntemcntc é ambígua.
3.1.3 Im plementação de fun çõe s b oole anas Como já mencionamos. a formulação de uma função booleana como uma soma de até 2" produtos leva li uma possíve l implementação. Usando a FigurJ. 3.3 como exemplo, podemos ver como essôl implemenlaç:io é cfetuadu. Na Figur.l 3.3(b), ôlS entradas, A, 8 e C são mostmdas na c:'(trcmid:lde esquerda. e a funç;lo de saída. M, é mOSlrJ.dôl na cxtremidade direita. Como são necess;iri ns complementos (inversos) das variáveis de entrada. des são gcrmJos tomando as entradas e passllndo·a.s pclos invcrsores ro tulados 1. 2 c J. Para cviwr almvancar a tigura. dcscnhamos seis linhas verticais. três das quais conectadas às variáveis de entrada e tres com.'Ctadas aOS complemcnlos dessas variávcis. Essa." l inha.~ oferecem uma fonte conveniente par.! 0..<; entradas das portas subseqüentes. PI1r exemplo. as porta.~ 5. 6 e 7 usan1 fi como uma entrada. Em um circuito real, essas portus provavelmente estariam ligadas diretamente a A sem usar nenhum tio 'vcrtical' intemlcdiário. O circuito conté m quatro portns ANO. uma para cada tcrmo da equôlç:10 para M (isto é. um;J para cada linha da tabclôl-verdadc quc tenha um bit I na coluna de resul tado). Cada porta ANO calcula uma linha da. tabela-verdacle. WII\O indicado. Por tim. Iodos os lcnuos produtos alimentam a pOrtil lógica aR para obter o resultado lina!. O circuito da Figura 3.3(b) usa umôl cOllvCnçãl1 que Ulil izarcmos rcpetida.'i vezes neste livro: quando duas linhas se CI1J7.am. não há nenhuma Iigaç5.o implícita a menos que hajôl um ponto negro bem visível na interseção. Por exemplo, a saída da porta 3 cruza todas a.~ seis linhas verticais mas está ligada apena.~ a C. É bom lembrJ.r que alguns autores usam ouLras convenções. Pelo exemplo da Figura 3.3 deve licar claro como implcmcntar um circuito par.! qualq uer função booleana: L 2_
3. 4 .
s.
Escreva a tabda-verdade para a função. Providencie invcrsores para gerar o complcmenh) de cada enLrarJa. Desenhe uma porta ANO para cad;J tcnno que tenha um I na coluna de resultado. Ligue a.~ portas ANO às cntrndas adeq uada~ . Alimente ôl ~a{Ja de todas as portas ANO a uma purtil aR.
Embora tcnhamm. moslrado cnmo qU:llqucr funç:1n hoolc:lI1ôl pude ....:r implemc!lt;Jda usa ndn purtas NOT, ANO (' aR. muitas ve/.e:-. ~ ennvcnicnte impkmcnlar circ ui [()~ us:melo ~Ó um tipo elc pol1.:l. FdiLmcnte. COl1\enCf circui tos gemuos pclu algori tmo precedente à forma NANO pura nu NOR pura e urna opcr:ujiio direta. Para fazcr cssa eonvcrs:io. basta que tc nh;Jmos um modo dc impk:ml!!!Iar NOT. ANO..: aR usa ndo Ul1l únil!o ti po \Ie ptJr!a. A linha supcrim da Figura 3.4 mostro como todas essôlS três (>Ix!em ser implememadas usando so m ~ nc e porta.~ NANO; a fileira ele hai;«) mostra como is~o pude I>er fe ito uSôllUlo apenas portas NOR. (Essas opemçõcs siio diretas. mas tambCm hâ outras maneiras.) Um modo de implementar uma função blX)lcana usando somente portas NANO ou smncntc portas NOR ~ primeiro seguir o procedimento dado adma para conslmí-Ia com NOT. ANO..: aR. Em ~eguida. substÍluir as portas de múltiplas entradas por circuhos cquivalcntcs uSôlndo portas de ,Ilms enlr.luas. Por exemplo. A + B + C + D pode ser computada como (A + B) + (C + D), usando três portas aR de duas entradas. Por tim, as p(mas NOT. ANO cOR são substituídas pelos circ uitos da Figura 3.4. Embora esse procedimento nào resulte em circuitos ótimos. no sentido do númcro mínimo de pon;L~. de mus· IrJ. que sempre hã uma solução viãvel. Amba.~ as ptll1as. NANO e NOR. são denorn i nada.~ com p letll.o; porque 4ual· quer fum,::io booleana ptw..Je ser calcu lada usando quaisquer das duas. Nenhuma nutra porta tem essa propriedade. li quc ~ uma OUtr:.1 i.!z:lO pur quc das ~ostumam scr preferidas como blocos de conslrUção de circuilOs.
o o ~
•
u
N
(X)
-•• • c
~
c
~
E
c
"• ~
• •
~
-= '.•" •
~
c
3.1.4 Equivalência de circuito Projetisl:lS dt: circuitos muitas VC/.eS tentam reduzir II numero de punas em seus prodUIOS par:J. reduzir custo de componcnlcs, espuço de placa de circuito impresso. consumo de energia elétrica c assi m por diante. Para rcduI.ir a complexidade de um cir<;uito. em primeiro lugar o projetista tem de e ncontr.Jr um outro circui\o que calcule :J. mes ma função que Il original. mas ..:fctut: essa opcmção com um númem menor de JXJna.~ (ou !"Ivez com ponas mais ~ imllks. por cx\!mpl0. ponas com duas e ntr.uJas em vez de ptlltas com quatrO .:ntradas). A álgebra boolc:m:l poUc ser uma ft!rr.lmcl1la valiosa na busca de circuitos equivalentes. Como exemplo de como a álgcbr.l boolc:ma pode ser ul>aUa. considere o circuito c a tubela-verdade p;lrJ. AR + AC mostnu:los na FigurJ. 3,5(a). Embor.. ainilil não:L'i tenhamos JiscuticJo, muitas Jas rcgr.lS da álgebr.l eomum também ~;io válidas par.! .. ~lgebra booleana. Em particular, a expressilo AO + AC pode ser tiaor.lda para A(B + C} U:lan1.10 a lei distributiva. A Figum 3.5(b) moma o,) circu ito l! li tubcla~ve rtlade par.! A(8 + C). Como duas runções silo equi valentes Si::, e somente se, ela.s tivercm a me~ma saída par.llodas as t!nlmdas I>ossiwis, é ráeil ve r pelas tabclas~ verdade da Figura 3.5 que A(B + C) é equivaleme aAR +AC. Apesar dessa equivalência, o circuito da Figura 3.5(b) é clammcntc melhor do que o da Figur.! 3.5(::1) JXlrq uc contêm menos portas. Em geral. um projctist:1 Jc circullos começa com uma função boolean:!. e emao :!.plica a da as leis da álgebra booleana na tentativa de achar uma funçãu mais simples. porém cquivalcme. Um ci rcuito pode ser construIdo com bast: na função I1nal.
~
c
•o
-
O
(.)
fl •• ra 3.4 Flgum 3.4 Construção de
portas (ai
NOT, Ib] ANO e lei OA usando somente portas NANO ou somente portas NOA.
A
.. o
A -~-, B,---l_/~l..-{_~
O'-'-I.~
A
AO
A.O
O (b)
(o)
A-,,--,, o-lf-LJ AS .. AC
0--'""--C--L__
c--l~
n ••ra 3.5 OUlIB funções eqwvaJentes. lal A8 ... AC. Ih] AIB + Gl
A-------~~===>~A~(O~.~C)
A
O
C AO AC AB+AC
A
O
C
A
O.C
418+ C]
o o o o
o o
o
o o o o
o o
o
o o o o
o
o o o o o
o
o
Q
Q
o o o
o o o
, , o , o , , , , ,
, ,
, ,
,
,
o
o o
o
, , 1
o o o o o o
(.)
,
,
,
,
o
, ,
, , ,
, o o , o , o , , , , o , , , , , , , I
(b)
,
, ,
Tabela 3.1 ~.
Algumas identidades da álgebra booleana.
' ."-~. 'Nome ' . ' ..,.,...
"t",·. >1<
formnlltl!1II'•
M CO
.
FOrma.OR
Lei da identidade
lA-A
Lei do elemento nulo
OA _ O
1+ A - 1
Lei idempotente
M _A
A-t-A -A
Lei do inverso
AÃ ... O
A+Ã-l
Lei comutativa
AB -= BA
A+B - B ... A
Le! aSSOCiD.tivn
IAB)C .. A(BC)
IA+BI+C-A+IB+ct
A+BC-{A+BIIA+C)
AIB .... q-AB+AC
Lei da absorÇão
AIA+BI-A
A+AB-A
lei de. DeMorgan
Ãã-Ã + ã
Ã+ã-Ãã
Lei
dismbutiva
O+A-A ~
"o "
•>
"
o
M
Par.!. usar C.'isa abordagem prcci:lamos de algumas identidades da JIgebrJ book~:Ja. A Tabela 3.1 rnoslr.l algumas das mais importantes. Ê interessante nOlar que I.: ada lei tem dilUo'! formas que são duais uma da outra. PemlulanJo AND t: OR c l.lmbém O e I, quaisquer d;L~ romlas pod..: $Cr produzida com base na outr.l. Tcdas a.s leis podem ser provadas c\)m facilidade construi ndo suas tabclas-vo.:rdade. Com exceção da lei dt: DcMorgan . ..t \d da :l.bsorção, c da rOmlll ANO da lei distributivo.. os resultados sdo rJ.zoove!mente intuitivos. A lei de DeMorgan pode ser I!Stcndida par,! mais de duas variáveis. por exemplo. ABC = Ã + ã + C. A lei de DeMurgan sugere uma nOla(fão alternati va. Na Figura 3.6(01) :l fonna ANO é mostr.1da eom a negação indicada por bolhus de inversão tlrnto parJ. entr.xJu quanto {lurJ. .'Iaida. A.'Isirn. um porta aR com entr.was inv.:rtida.'i equlvalt:nle a ullla porta NANO. Pela Figurn 3.6im como O !ogll.:o. j a(s/J e leI/silo hUl:m. ~
AS
A.B
=D- :::L>"!lU,. 3.8
SimbolO$ alternauvos para algumas ponas:(al NANO. Ibl NOA. fel ANO. (dI OA.
(.)
D- :::L?AB
A ... 8
I')
,
,
)b)
Id)
o
A
,
XOR
O
O
O
A-r-.......
,--,.._/
, , , O ,
A-r-.......
O
§-'------'
O
•
,•
, ,
o
~
~
(.,
naur:s3.7 lal Tabela-verdade para a
"E
~
funçào XCR. Ibl-Id) TTés CUltos para c:lI.cular essa l ~ela.
o u
• • ,•
~,
Cll-
A-r-""
Ã---r-~
,--....
~~---------- '-L-~
~
_/
~
A--r-, ã--,--_/
" "
•
~
'.
(o,
o
I~
~
• N
o
A
•
'"
Figura 3.8
o
la) Caracteristicas elêtricas de um dispositivo. (bl Lôglca positiva. (el LógiCl negaova.
3.2
,
F
o' o' o' o' O'
5'
" O'
O'
5'
5'
5'
(.,
A
,
F
A
O
O
O
,
, O , O O , , ,
O
(b)
, , , , F
O
, , ,
O
O
O
O
(o,
Circuitos lógicos digit ais básicos
Nas -.cçi~cs anteriores vimos CO l1\O implementar tabelas-verdade e outrOs circuilos simples usando portas individuais. Na prática. poucos circuitos são construídos porta por porta. cmbora houve uma época em que isso er.1 comum. Hoje em dia. os blocos de construção usuais são módulos que contêm várias po"a..... Na.~ seções seguintes
examinaremos t!sscs bloco!! de construção mais de p..:no c veremos como de.'i podem ser construídos com base em punas inJ ividuais.
3.2.1 Circuitos integrados Portas nãl) são fabricadas nem vendidas indi vidualmente. mas em unidades dcnominadôls circuitos integr.. ~ dos. freqUenteme nte denominados ICs ou chips. Um IC é um pedaço c cunccta com a entrada ou ..aída de alguma pona IlU chip \lU à rome de energia. ou :lO aterr..lmentu. Os paeutes com dua:. IÍlcirJS de pinos na pane exlcma c IC~ na pane interna ~:IO conhecidos tecnicamente como pllcol~ duplos em linha (DIPs - Dual Inline Packages). mas lodo muntkJ ( l'\ ch:unll de chip..:. (J (Iue nh'ara chips gmndes c u.slUmam ser usadus pacOtes Ilullllr:IlIt)~ eom pinu.. nos quatru lados lJU na parte de baixo. Clups pudcrn .\our diVididos em classes gl!!"'..lIS cum baM: nu número de purt;t!> que l!ontêm. eomu ..:spcciliclIdo logo adiante. É (>bvio qUI! e.~'iC c:squcma de classificação e extremamente pn:dno. mas às vezes ê útil. SS I (S m;tJl Seale Integr:lh...-d - circuito de intcgr.u;ão em pequena c,">Cala): 1 a 10 portas. MSI (Ml.-dium Selllc Inu!gratc:d - circuito de integr..lç:io em médi:1 escala): 10 a 100 Jlonas. LS I (Large Se!llc IntegrJ.Il.'U - cireuito dI: Illlcgmção Clll grande escalll): 100 a 1ao.()Oa portas. VLSI (Very Large Se .. lc lntegl"'..lted - circuito de integr:u,:ão em escala muim g!"'.J.nde): > 100.000 pOl'Uls. Essas classes tt!m propriedades diferentes c sào usadas de mcxlos diferentes. Um ehip 5S1 nonnalmente contém de duas a seis portas independentes. cada uma das quais pude ser usada individuahncnre. nu estilo das seçi)cs :lIlteri urt:s. A Figura 3.9 ilustra um descnho csquemútico de um chip SS I comum que clllltêrn Ijuatro purtas NAND. Cada uma dessas punas tcm duas entradas c uma saída. de mandando um lutai UI! 12 pilll)s para as (lualro portas. Além d i ~su. li ehip precisa dc energia elétrica ( V,_,.) e terr..l (GND). que .'iào
- - - - ---_........ ... ., .. .,., ...
'" ex)
fllura3 .9 CWp 551 que contem quatro
portas.
Entalhe
,...•> 2
o GNO (Terra) M
compartilhados por todas as portas. Em gCf:l1 o pucole tem um .;nw.lhe pr6:timo ao pino 1 paí.1 identificar a orienLaç::iu. ParJ evil.:u- que os diagramas fi ljucm atr:lva nc:.!dos. por convenção não são moslr-.ldus a ro nte de energia. o terra c as ponas não utjJiz:uJas. Há muitos outros ehl ps ,;omo t.'SSCS disponi',eis por alguns centavos c3d:l. C3da chip SS ltcm um punhado de porIas e :ué 20 pinos. mais ou menus. Na década de 1970 . constru íam-se cllmputadorescom gr.mdes mimems de:iscs chips. ma.~. hoje em dia. uma CPU inleir.l e uma substancial quantidade de memória (cnche) sãll gmvudas em um único chip. Para todos os efeitos. todas as ponas s,io ideais no sentido de que a saída aparece logo que a enrmda é aplicada. Na rc:.!lid:tde. chips 103m um atr.JSfI de porta Jinito ljue indui o te mpu de propagação de sinal pelo ehip e o tempo de comutação. Atr.tsos tfpll.;os são de I a I tl nanossegundos. A tccnologia moderna vigente permite colocar quase 10 milhõcs de transistores em um ch ip. Como qualquer CIrcuito pode ser construído com base em pen as NANO. você bem que poderia imagintu- que um fabricante poderia produzi r um ehip muito geral que contivesse 5 milhõcs de portas NANO. Infelizmente. um ehip como esse necessitaria de 15.00tl.OO2 pinos. Como o e~pw;o-padr.1o enlrC pinos é 0.1 polegada.. o chi p teria 19 km de comprimento. o que Ullve7, tivesse um efeito negulivo sobrc as vendas. É claro que a única maneiro de tiror proveito da tec nologia é pOljetar circuitos com uma aha relação ponóllpino. Nas seções seguintes vamos ex aminar circuitos MSI simples que comhinam uma quantidade de p()na.~ internamente para fornecer urna função útil que requer apenas um número limitado de conexoos externas (pUlOS).
3.2.2 Circuitos combinacionais Moitas aplü:açÕt:). de lógica digital requerem um circuito com mú ltiplas entradas e múltiplas saídas, no qual as saídas são determinadas exclusi vamente pelas entradas em questão. Esses ci rcuitos são deno minados cir cuitos cumbi naciunais. Nem todos os circui tos têm essa propriedade. Por exemplo. um circuito que contenha elementos de memória pode pertd tamenLe gcrar saídas ljue depe ndem de valores armazenados. hem como de variáve is de entrada. Um circuito que esteja implementando uma tabela-verdade como a da Fig ura 3.3(a) é um exemplo Ifpico de um ci rcuito eombinacional. Nesta scçào examinaremos alguns circuitos com bi nacionais de uso freqüen te.
Multiplexadores Nu nívcllógicn, um nHlJtiplc~:ldor é um cin:uito com :!" entrnd: L~ de dados. um:! ~a iu a de dados c 1/ en tr.lda.~ de cuntrole q UI! '\Clcciunam Umit das cnlr.tuas de dado~. Essa entrada sek.'Ciormda ê dingida (isto ê, roteada) atê a ~aída. A Figur.l 3. 1U é um diagr:una csquelllôltico dc um multlplexauor de Oifo elllr:u.lus. As três 1i n ha~ ue eOlllrole, A. H c C. euJ iiieam um nu mero ue J hl ls que o;!~ pccl i ka ljual da:.. oito linhas de entr.lua e direcionaua ate.J puna OR e dali até a ~ afdil. Não import;t qual valor cstej
o
"
co
O'--r==::=
'"
O'---r~O
••o ~
,• ~
e
o u
F
figura 3 .10
• • •,
~
CIICI!i[O multiplaxador de oito entradas.
~
=
----R=f=!= =1~~=) O'--#E=E o,
•
~
o ~ ~
• N
C
•
~
A
o
•
C
v
" o,
o,
O,
O,
o, Rgara 3.11
o,
(aI Multipleudor MS!. (bl O mesmo multiplexador ligado para calcular a tunção
O,
majoritária.
--
F
o,
o, D,
A •
o, o,
I-F
O,
o,
o,
O,
I
t
,
C
(.)
jj
•
C
{b'
serial ê um tcdado. onde cada acionamcnlO de uma tecla define implicitamente um numero de sete ou oito bits que deve ser al imentado serial mente por umu linha telefônica. O inverso de um mu ltiplcxar.lur é um demultiplcxador. que dirige sua unic:l cntrnda até uma dlS 2" ~ídas dependendo dos valures das 11 linhas de cunlmle. Se u valor bimírio das linhas Je corurok for k. e selecionadol a S:líll:J k.
Decodificadores GUrlU um ..cgUntJu exemplo. :lgor.J vamos cx:ulIi n:Lr um circuito 4uc hJma um mimem de n nils Ctlllltl cmmd:l c lIhll para ~lC\:;llnar listu I! . .:nllXaf elll I ) c:.:atamcntc urna Jas ~" li llh a~ de ~;Iída. Ta! t:irculIo. ilu::,lradl) p;Jra 1/ .;;. , na Figura 3.12. lo! denominado dccudific:idor. Para ver comll Ulll decudiJicauur ptlJe -;c r utl !. imagine um;J pC4ucna merllon:14uc con:-;i:-;Ie em uito chips. c:.lua um cOtlleuuo I MO. O chip O tem cnuercljos de O a I MS. Ii dlip I tem enderclju!'!o ue I MI3 a 1 MS e :tS.\im'pm di:.ulle. Quando um enuercw ~ .Jprcscntado à memória. m J bil~ de urnem aha '\
Comparadores Um tlU(rtl c ircuito útil c o cnmparndur. que ctJIllpata duas palavr:ls de entrada. O comparador ~imples Ja riguf'J. ,t 13 fUma dua... enlrnJas. A e 8. cada uma de 4 bits de I...·umprimcnto. e pnxlu7. um 1 lIC elas forem iguais e
.... .... _-
-
D,
D,
4
RGura 3.12
Circuito decodificador 3 pill'a S.
D,
A
A
•
Ã
c,
•
4
c
,
D.
ê
.. ~
c o o ~ ~ ~
Õ >
~
c
c
4
""co
D,
c
D.
~
o >
'" Porta EXCLUSIVE OR (OU EXCLUSIVO)
".. A,
B,
fleunI 3 .13
IJ A••
Comparador simples de 4 bits. A,
" Ao
'"
II
11
um O se das não forem iguais. O circuilO é hascado na pon:l XOA (EXCLUSIVE O R - OU EXCLUSIVO). qut: produz um O Sl! sua.' entradas forem iguais c um I se da.~ forem diferentes. Se as dua... palavr.Ls de entr.lda forem igU:lis. todas as quatro portas XOR devem produzir O. Entrio poJc-o;;..: efetuar um:l opcra~o O R nesses quatro sinat!>; se o re.'iul tado for O. :lS palavr.ls de entrada são igu:lis: caso contrário. não. Em nosso exemplo usamos ?,Ima pon:l NOA como o estágiu tinal para reverte r o 'icntido do leste: I signitica igual. O signilic:J diferente.
Arranjos
lÓglCOS
programáveis
J;i vimo!> anlc~ l[UI.! fulU,ücs .Irh ltr.lria.~ ltabclas· yc m:uJcl podem -.cr cn n:.lruída~ c:llcul:mdn tennos prodmo com portllS ANO c cntão efetuando um:1 op!r.lI;:io OA nll~ pmtJulos. Um chlP muito gcr.!1 par.! fonnat somas ue pnxJutos ..: uennmin;luo arranjn 14ígicn Ilrogr:uuávd (PLA - Pru~r,"unmllble LOAic Arr.lY ). Um pequeno c:l.cmplo dcs~ alT'.!njn é mmtr.!uo na Figur.J .1.14. E..~sc chip tcmlinh:lS de elllr.!ua par.. 12 vari:iveis. O t.:omplemcnto de c:llÍa cntrJ· da gerado internamente, pcrf:u-.cndo 24 .'i inais de cntr.lda no tmal. O corJç:1o do Circuito é um alT"..lllJo de 50 p()na.~ ANO. Cada urna del a.~ ondc ler corno uma entrruJa potencialmente qualquer s uhconjunto dos 14 sinais de ..:ntrada. Uma mau;L de 24 X 50 bits fOmccld.1 pclo usu:irio tklennina qual dos SlIlalS de I.!mr.:ada vai paro qual pona ANO. C::UllI linha de cntrada para ;IS 50 punas ANO eonrém um fusíve l. Quando expedidos da fábrica. loooS os 1.:2Otl fusfveis estilo inUII;· loS. ?-.lnl pmgr.ullar a matriz n usu;trio queima fusivcls selecionados aplicando uma alta tensão au chip. A partc de -;aida do Circuito consiste em '\eis (lIlnas OA. cada uma com até 50 entrada.~ (',,{lm.!spondenlcs ih 50 Sili· das das ponas ANO. i\l{ui. mais uma vez uma matriz (50 X 6) fornecida relo usuário dil. qU:lis das .:onexUes potcn· dais realmcllt~ e:l.btcm. O ehip te m 12 pinos de cnlr.ida.. 6 pmos dc :.aida. energia e aterr.:alllcnto. I!m um total de 20. Como exemplo de um modo de uulit.:.lç:io possível de um PI.A vamos cllnsiderar mais uma velo ti circuito da Figura 3.3(01. Ele tem tr!:s I!ntr..da:-., ljuatro portas ANO, ullla porta QR c três invcrsores. Apcis feitas a-; conexões internas a(k'(luada~. nOSSll PLA (lIxlc calcular a mCSIll;1 funçilo usandn trê... de .. uas 12 "aidas. quatro de ~ uas 50 puro tas AND c um;.! de suas seis IXJnas OR. (As ljualro porta.. ANO devem calcular irBC. ARe. Afie t! Afie. respccu-
c
~
•
"
CX) CX)
4:
•• "c
B
~
•c
0-
!
I
!
4>
/
-
/
So_ ""q ,,,,>o
i-- """. 12 ;,: 2",24 sinais de tiO
"'"
S C
'-'
• , •c
~
~
c
'•. c
~
"c
Figura
l.'.
Arran)O lógIco proqr3.m.ável de 12 enuadas. 6 saldas. Os
quadradinhos represenlllm
L
4»-
fusiveis que podem ser queimados para determinar
- - 24 llnhaI da
a função a ser calCUlada. Os
O
fu.:nvelS são arranjadOS em
,
em
.,
duas matrizes: a !nIperior para as Dortas ANO e a Inlenor paia as ponas OR. O
•
~
,
o Se 8SSII fuslvel esuver queimado. a potta ANO 1 nAo e uma Bnlrada para a porla OR 5
r-~
:;o tinhas de entrada
,I
5
'lamente: a porta OR to m:!. esses quatro termos produto como cntr.u:la.) Na verdade. o mesmo PLA poderia ser ligado par.l calcular simultaneamente um total de quatro runç6c.s de complexidade similar. O rulOf limitador parJ CS.'iaS funçõcs simples é o número de variáveis de entmda : para as mais complicadas poderia ser as portas ANO OU OR. Embora tlS PLAs programáveis em campo que acabamos de descrever ainda estejam em uso, par.! muitas aplicações é prcrcrivc1 um PLA feito <;ob m~ ida. Es.~ PLAs são projclaUOS pelo cliente (grande volume) e produzidos pelo fabricantc conforTlle as especificaçi'les do cliente; além disslI...ão m:tis barJtos do que os programlÍveis em campo. ;\I;or:l poc.kmos campamr os trés diferentes modos de implemcntação da tabela-verdade da Figurol 3.3(a) que já diSCUlimos. Usando componentes 55 [. pn.:chwmos de quatro chips. Corno altemutivu. um chip multiplexador MSI seri a suficiente. como mostrJ a Figura 3. I I (b). Por lim. poderíamos usar uma qutlna pane de um ehip PLA. É óhvio que. se fore m necess,irias muitas runçix:s. o PLA li mais elicientc do que os outros dois métodos. P:.Lra circuitos si mples. os chips SS I I:: MSI . mais baratos. podem ser prcl"críveis.
3.2.3 Circuitos aritméticos Chegou a hor..l de passar dos circuitos MSI de uso geral discutidos anterionnente para circuitos MS I combinacionais usados par!! efetuar uriunétiCL. Começaremos com um .. impk s deslocador de 8 bits e em seguida veremos como ~tl con),lm íulI!> os 'iOrIladorcs e. por lim. e),tud;lrcmo~ ;IS unidades de lógica aritmética quc dc.~empcnham um papel fundamental cm qualquer compuw.dor.
Oeslocadores Nosso pritm:im circuito ari tméticu MS I é um ueslm::ldor de oitu entradas e uito saídas (veja Figur:l 3. 15). Oito bits til! elllrJ.ua ~:i{) .Ipresent:ldos nas linhas Du . .... D,. A ~ aid ... que ~ apenas :I cntr.u.la deslocada de I bll. C...lú nus linhas So • .... S7' A linha de comrole. C. delemlina a direção do deslocamento. O. parol a esquerda e I parJ a dircilll. Quando u dcs locamento for par... a esquerda. um O': inserido no bit 7. De modo semelhante. quando o deslocamen· 10 for parJ a di reita. um I ê inserido no bit O. P:.lra ver cnmo tl drcuito funciona. observe t)S pares de ponas ANO par..ltodos os bits. exceto 3.<; pon as na extremidade . Quando C = I. li membro da direita de ,ada par é ligado. p;.L'iSUIldo o bit de c mrada com:spumJenle par... a ~aida. Como a pona ANO da direita está ligada à entrJda da porw. OR à sua direita. é t!xccut.a.do um deslocamento parJ. a di reita. Quando C -= O. u membro da esquerda do par da pon.a ANO é ligado. n t.juc provoca um deslocamen· lo parJ a esquerda.
Somadores Um ctllllPutador que mio possa somar números inteiros é quase inimagin;1vcl. Por eonscqi.lência. um circuito de hardware parJ. efetuar adiifãu é uma pane essencial de toda CPU. A tabcla-vcruadc parJ. adição de inteiros de I
1
o,
o,
o,
o.
o.
I
C
o,
Cl
to
..
figun3.15
o
Deslocador esauema/direlta
C
ij
de 1 bit.
Q I s.
5,
I
S.
S,
5.
S,
50
5,
o
u
a ~ ~
õ >
"O
Pana E#:!usive OR B
A
O
Som. Tl'1Inspon.
O
O
O
, , , , , ,
figura 3.16
O
lal 'l'abela-verdade para
B-h--,II-/
M
Som,
O
bit é mostr:lda na Figur.l 3. I6(a). Há duas saídas presemes: a soma das cmrndas. t\ e B. e o trJnspon e (vai-um) para a posição seguinte (à esquerda), Um cirt:'.lilO para calcular o bit de soma c o bit de lr.tnspone é ilustrJdo na Figura 3. I 6rb). Esse circuito simples é gcr.:limcnlc conhecido como um mei~so madllr . Embor.J um mcio-somador 'icja adequado para somar os bit.; de ordem !miX.l de dua... palavras de enlr'.wa de múltiplos bits. ele não servirá par.!. uma posição de bi t no meio du palavr.! porque não tr:lla o lranspone de bit da poloição à direita (vem-um). Em seu lugar precisamos do somador complctu da Rgum 3.17. Pc!a inspeção do circuito deve ficar claro que um somudor completo é composfo de dois meills-somadorcs. \ linha de suída Sum (Suma) t! I se um mimero ímpar A. 8 e o vem-um (curry in ) forem l. O vai-um (wrry OI" ) é I ~e A ou 8 forem ambos ' (elllr:l
n.an3.n (al1'abela~verdade
A
B
O
O
O
O
somador completo. Ibl CIrCUIto para um somador completo.
'm
.....
Vai·
O
O
O
'm
, , , , , , , , , , , , , , , o , , , , ,
O
para
v.~
O
O
O
O
O
O
O
O
O
O
O
VIII'Um
L
,o,
~
•
,
O
,o u
O
O
adição de 1 bit. Ib) Clrruito
para um meio-somndor.
A
/ -r-----\1~~_
~,
o
'" ••o ~
•
= ~
• o
U
•
~
•
-•
~
= =
o ~
~
• • N
C
~
o
Cuntudu. considere cs~a lIIodific:u;ãu. Em VI!Z de urna unica metade ~upcrior. vamos Jar:lo ~o/ll;IIJor duas tllct:uJcs ~upcriorc~ em paralelo dup lic:uuJo o hurdwart:: tia metade superior. Desse mmJo. agora () ci rcuito consiste em três somadores de 16 bits: ulIla metade inferior c uuas metades :,upcriorcs, UO c UI que fu ncionam em paralelo. Um O c alimentado em UO como vai-um: um I é alim":lIIat!o em UI como V:lI-UIII. Agor:l.. ambos podem iniciar J() mesmo tempo que a ml!tadc inferior, mas somente um estará correIO. Após 16 tell1po.~ de adi-
y;io de bits, já se saberá 4uaJ
~
o vem-um que deve ir para a mcladl.! superior. portanw agor-J j:1 se pode .~clccin nar
metade superior cO ITCta com base em duas respos tas disponíveis. Esse t!..~lJ'at:lgema reduz o Icmpu de adição de um [:.tIOf rle Joi!o. Um somador como elosc é denomi nado sClm:Jdor de seleção de vai-um. Eru:io o cstr:ltagema pode :-er repelido par.t eon.\trUlr c:J.da sOInador de 16 bits com base em somadurt:s de !oi bits repetidos e a:>sim por diante.
li
Unidades lógica e aritmética Gr-.tndc p:Jnt: dos computadores contém um único circuito pam efetuar ANO, OR c soma de duas pa[llvrns de m:i4uina. Nu caso típico, !:ll circuito paror pal:lvms de n bit... é cmnpostQ de n órcuilos idênticos pal":.l as posiçõcs individuais Ilc biu. A Figur.r J.I ~ é um cltemp[o simples de um ci rCUito des'ICS, denominado unidade \6gica aritmética (UL.\ )(A r ilhmctic Logic Unit - ALU). Ela pode calcular qualquer uma das quatro funçõcs - a saber, A ANO /J, A OR 8. Buu A + 8, dependendo de as linhas de enlfllda de sckt;5.o de fun ç:1u Fu c F, conterem 00, OI. 10 ou I I (binário). Note que. aq ui , A + 8 significa a soma aritmêtica de A e B. e n50 a opcr.u,ão booleana ORo O canto inferior esquerdo de nossa ALU contém um deeodificador de 2 bit~ para gem.. sinais de habilitação (enllhll') par.r as quatm operaçõcs, com hase nos sinais de controle Fu e F I' Dependendo dos valores de Fu e F I' t!ltat:amcnte uma das quatro linhu.>; de habilitação é seh..-cionada. Ativar essa linha permite que l loarilir para l funç:io <;clcciun:ada pa.~sc por ela :até a pona OR tinal. pam saída. O canto ~upcrior esquerdo contém !l lógica para calcular A ANO fi A O R 8, e 8, ma.~ no máximo um desses resultados ê passaúo para a porta DR tinal. dcpcrnkndo Jus li nhas de habilitação que saem do dccodilicador. Como cxat:amcnte uma das said:Js do dccodilic:ador <;crj I. ex:atamentc uma d:l.'i quatro portas AND que cmn:.uulwll a puna OR será habilitada: :as outras três resultar:i.o O, independente de A e 8. Alé m de poder usar A I! B como entr-.rdas pam opcr:açõcs lógicas uu aritmética... , t:ambém é possível obrigar quaisquer delas :l O negando ENA ou ENB, respectivamente. Tambêm é possível obter à ali v:tndo INVA. Veremos utili7.aÇÕCS para INVA, ENA e ENB no Capítulo 4. Em condições normais, ENA e ENB SÜO ambas I para habilitar ambas a.... cntr.rdas e INVA é O. Nclose e:aso, A e 8 s30 apenas :alimentados na unid:ade lógica. sem modilic:lÇ:1o. O canto direito inferior da ALU contêm um sOlnnd()r completo para calcular a soma de A c B. incluindo manipulaç:1o de tr.rnspuncs (vai-um e vem-um), pontue é provável que, em seu devido tempo, vários dcsses circuitos scrJo ligados j untos para efetuar opcrw,:ôes de pal:avr.l inteira. Na vcrdat.!e, existem circuitos como o da Figum 3.18
Unidade lógica
,1
INVA A 'NA
l..-
:J
í ;DAa
-~
:I fL>A_a
):
I I~
a 'Na
I
~
IV
>+-,
----
_-1
, : Rgtl m 3.18
=::,~ ,
ALU de I bIt.
~------~
,,, F.
I
,,,i I, i
1
:
IQ ,,
i
,,
F,
!_--
v
OllCodlllclltlor
-~
P
:
Soma
>
DPI
,, I ,,I ,
Somador comDle1o
I
-i
,I
- - - - -______1
&lida
, FI.ura :1.19 Oito segmentos tslicesj de ALU de I bit conectados p..ua formar uma AI.U de 8 bits. Os sUlais de habilitação e
....
F'~~
inversão não são mostrados por sm'lp1icidade.
Ai.U
~u
1 b'l
1 Di!
o,
a.
.,."..." ,-
Ao "
" .. ""
o.
o,
o,
o,
A, 8 ,
..
Ol
-,"" O,
-
o,
•
disponíveis que ~lio c onhcddo~ como se~lIll!ntus de bits (bil slic~s ) . Eles pcmulcm que \} projctiSlJ. do compUI:l-
dor monte uma ALU de qualquer l:u'gura que quiser. A Figura 3.19 mostra uma ALU de 8 bits montuda com 8 scgmemos (J'ficl!s) de ALU de I hit. O ,inal INC só ~ útil pum operações de adição. Qu~nd o prcscntc, incn!ll1cnta o result:.Ldo (isto é. adiciona 1 a ele), possibilitando o cálculo de SOm:lS como fi + 1 c A + 8 + I.
o
3.2.4 Relógios Em mu itos circu itos digitais . a ordem em que:
0.";
eventos ocorrem é critica. Às vezes um evento deve preceder
um OUlm, is vezes dois ..:vcntoS devem OCOlTc r simultaneamcmc. Par.l permiti r que os projetisla.s consigam as relações LI!.: lemporiz:l(,ão rL'(!lleriJas. muitos cicuitos digitais Llsam relógios par:t providenciar si ncroni1.:1ção. Nesse
contexto. um rcl 6~i u c! um circulto que cmite uma séne de pulsos com uma 1ar<.;urJ de pulso pn.-cisn e intervalos precisos entre pulsus consecUlivos. O ioter.'alo de tempo entre as arestas correspondentes de doi ~ pulsos consecutivos é denominado tcmpn de ciclo de n:lc;gio. Em gemi as freqüências de pulso estão entre 1 e 500 .'v1Hz. correspondendo a ciclos de rehígio de 1.000 nanosscgundos a 2 nanosscgundos. Pam consegui r alu pn.:cisão, a frcqüc:nda de relógIO oonnalmcnLC é controlada por um oscilador de cristal. Mui tos eventos podem ocorrer dentro de um comput:ldor dumnte um único ciclo de relógio. Se esses eventos devem ocorrer em uma ordem espt..-cíficu. o ciclo de relógio deve ser dividido em subciclos. emil muncir.i comum de prover resol ução superior à do relógio bâsico é upruvei lar a linha de re lógio primária e inserir um circuito com um atrJso c:ollhceido. ger.mdo assim um sinal de relógio sccum.lârio deslocado de certa fase em relação ao primeiro. como mostra a Figura 3.20(a). O diagrama de Icmporização da Figura 3.20(b) dá quatro refcrências de tempo para eventos diNcrelos: L
2.
3_ 4.
Fase ascendente de e I. Fase descendente de e I . Fase ascendente de e2. Fa.~ descendente de e2.
VincuJ:IllJo diferentes evenlos às várias fases , pode-se conseguir a scqUéncia requerida. Se forem necessárias mais do 4ue 4uatro refcrencias de tempo dentro de um c:ido de rc!ógi". paJem-se puxar mais linhas da ünha primária. com diferentes atrasos. Em alguns drcuitos ~St.:lIll OS i ntcrcs~ados em intervalos de tcmpo cm vez de instantes discrems de lempo. Por exemplo. pod~-sc pcnnitir que ulgum evento aconteça toda vez que e I estiver alto. em vez de cxatamente nu fase ascendente. Um Olmo cvenLO só poderá acontecer ljuando e2 cstiver alto. Se forem necessários mais de dois intervalos diferentes. podem ser instaladlls mais linhas de relógio nu pode-se fazer com que os estados altos dos dois relógios se sobreponham parcialmcnte no tempo. No último caso. podem-se distinguir quatro intervalos distintos: e l ANO C2. e l ANO C2. e l ANO C2e CI ANO C2. A propósi to. relógios são Sillll!lncOS - o tempu gasto no estado a.lIO é igual ao tempo gasto no estado baixo. éomo mostrJ a Figura 3.: tl(b). Par..t gerar um trem de pulso assimétrico. o relógio bi... icu é dcslm:ado usando um Circuito de :urJSO e efcru:l1ldo uma npcraçãn AN D com o sina! original. eomo mostra a Figul'll 3.20(c) eomo C.
+iDh---+C' ~
1-)
fl.ura 3.2D
(a! RelôglO. !b! Diagrama de temponzação para o relógto. !C/ Geração de um relôg10 assimétnco.
•> z
lO)
: i
"
, ,'
A~ B
C
~ , , : ,~ 11 ' "
~
1 11
,'
,::
: I :
1
•
fi
~ ~ ~
'I
i:
,
I
, . .
'" "
lo)
'" '"
o
•
u
N
'" ••"o ~
,•
~
3.3
Memória
Vm componente essencial de todo computador é sua memória. Sem memória não poderiam existir os computadores que conncccn\()s. A memória é usudn par.!. annl.LZcnar inslruçõcs a serem c:xccut:uJas e dados. Nus seções seguintes examinaremos os componentes básicos de um sistema de memória começando no nível da pona par.\ ver como eles func ionam c como ~u combinadus par..! produzir memórias de grande pune.
e
3.3.1 Memórias de 1 bit
"•
ParJ. criar uma memória de I bit ("IU1Chc"). precisamos de algum circuitO quI.! 'se lembre', de algum modo. de valores de entrada anteriores. Tal circuito pode ser construfdo com base em duas ponns NQR, como iluSlrJ.uo na Figura 3.2 1(a). Circuilos ;múlogos podem ser construIdos com ponus NANO, porém não vamos mais mencioná-los porque sào conceitualmente idênticos à.~ vers~s NOR. O circuito da Figur:I 3.21(a) I! denominado la tch S R. Ele tem duas cnlr.ldas. S. par:l ativar (setlillg) O latch. e R. parJ. restaur:í-In (reselling), isto é. libcr:í-Io. O circuito também tem duas saídas. Q e Q, que são I.:omplementares. como veremos em hrcve. Diferentcmellle de um circuito combinacionaJ. as saídas do latch não são exclu~iva mente determinadas pelas entradas atuais. ParJ. vcr como isso ocorre, vamos admitir l{ue ambos. S e R, scj::ulI 0, o que é verdade na maior pane do tempo. Apenas para polemizar. vamos admitir que Q = O. Como Q é realimenlmJo para a puna NORsuperior. ambas as suas enlrJ.das são O. portanto sua saída. Q. é I. O I é reaJimentndo par..a a pona inferior que. então. tem entrneJas I e O. resultando Q = O. Esse estado é no mínimo ..:ocrente e é reu-atado na Figura 3.2 1(a). Agora vamos imaginar que Q não seja O. mas I. com R e S ainda O. A pona superior tem entradas de O e I, e uma saída, Q, de 0, que é rcalimentada para a poru inferior. Esse estado, mostrado na Figura 3.21(b), também ~ cm:ren te. Um estado com ambas as saídas iguais a O é incoerente. porque fo rça ambas as port:lS :l tcr dois () como entradu. {) que. se fosse verd:lde. produziria I. não 0, co mo saída. De modo s\!m\!lhante. é imposs1vel ter ambas as saídas iguais a I, porq ue isso fo rçaria as entrad:ls:l () c I, que resultaria O. nao 1. Noss:I conclusão é simplcs: p:lrn R = S = O. o l:neh tem dois estados estávcis. que denomin:lremos O e I, dependendo de Q. Agom. vamos CX:lmin:l1' o deito das entrada.~ sobre o estado do 1:llch. Suponha lIue S se tomo. I enquanto Q = O. EntiIo, as cnrrndas paro a porta superior são I e O. forç:lndo a saída Qa O. Essa mudança faz com que :lmbas :lS cntr.!das par.! a porta inferior sejam O. forç audo a saida para I. Port anto. uliv:lI S. isto é, faze r com que St:ja I. muda o estudo de O pam 1. Ativar R pura I quando o latch está no est!l.do O não tem efeito nenhu m purque a saída da portll inferior NOA é O para entradas 10 e enu-ada.~ 11. Usando r..aciocínio semelhante, é fáci l ver que :ltivar S par..a I qU:lndo em cst:ldo Q = 1 não tem efeito nenhum. mas ativar R lev:l o lateh ao estado Q = O. Resumindo, quando S é ativado para I moment:lneamcntc. o hllch acaba no estado Q = I. independentemente do cSlado em que eSlava anil!!;. D:I mesma mancir:l. ativar R p:lro 1 momenlaocamente força o laleh ao estado Q = O. O circuito'sc Icmbr:l·. §c foi Sou R. lig:ldo por ültimo. US:lndo essa propriedade podemos construir memórias de computadores.
o
~
• •
~
", •
~
o ~ ~
• C •o N
o
s
O
ã
S
O
O
ã
Figura 3.21
/lI Lalch NOA no e!lado O. jb) Latdl NOA no estado I. leI TabeJawvcrdade para NOR.
O
• ,
O
O
A
NOR
O
, , , , O
O R
O
o (a)
a
R
a
O O
O (b)
(,)
Latches SR com relógio Muitas vezes é eOl1vcn ienle impedir que () latch mudc de I!stado, a nãu ~c r em certos momentos especilicados. Par:t aliogir esse nhjclivo fa ....emos uma ligclr:t lIIodi lieação no circuilU hásico. como nmsll"J. a Figul"..l 3.22. par.! ubter um latch S R com rel6gio.
- - - - _........ ..... .... , . ", .. ..
naura 322 Latch SR
com relógio.
'"'" R_R R
--.:=c}--L»--"-
O
Esse circuito tem uma cntr..tda :ldicional, o I\!lógio. que nonna/mente é (l. Com o relógio em O. ambas as portas ANO geram saída O. illl.lcpcndclllementc de ser SeR. c o latch não muda ue estado. Quando o relóglu ê 1. o t:fcito das ponas ANO dcsap;:m:ce e o latch se toma sensível a SeR. Ape.'\;U" de seu nome. o ~in al do relógio não prccil'ól ser ger..tdo por um relógio. Os It:rmos habilitação (e"able) c intermitente (.~trQbe ) também são muito usarJos para indicar que a entrada do relógio é I; isto !!. o circuito é sensível ao estado de S e R. Até aqui evitamos fala r no que acontece quando ambos. SeR. são I. por uma boa razão : o circuito se toma nãu dt:tt:nninfstietl qua ndo ambus. R e 5, finalmente retomam J. O. O único estado coerente para S = R = I é Q = Q= O: porém. assim que ambas as entradas voltam parJ. O. o 1:lIch deve ~alUlr para um de seus dois estudos esdvels. Se quah.quer das entr:J.das cair para O :llltes da outrJ., a que pcrma.!lecer cm I por mais tempo vence, porIl!!e. quando apcnLl.S uma entrJ.da for I, da força o estado. Se ambas as t:nlradas voltilrem li O simultaneamellle - o que c: muito improvável - , o latch salta .dcatoriumente pUni um dt: seus c:stooos estáveis.
Uma boa maneira de resolver a ambigüidade do latch SR (causada quando S = R = I) é evitar que ela ocorra. A Figur..!. 3.23 apresenta um circuito de latch com :mmcntc uma entmda. D. Como a cntr::lda parJ. a porta inrerior ANO é '\empre o complemento da entr.lda para a pona superior, nunca ocorre o problema de ambas as entradas serem I. Quando D = I t: o relógio for I, o latch é levado 30 estado Q = I. QU:llldo D = O c o relógio for I. de i levado ao eSlndo Q = O. Em outras palavras, quando o relógio for 1. o valor corrente de D é lido e armazenado no laleh. E.~se cireuito. de nominado latch O com I'1!I6gio. é uma verdadeim memória de I bit. O V'.llor annazenado sempre estará disponível em Q. P'J.r.l carregar o valor corrente de D na memória. um pulso positivo é colocado na linha do relógio. Esse circuito requer 11 trans istores. Circuitos milis soJisticados (porélll menos óbvios) podem annazenar I bit com até seis transistores. Esses projetos são normalmenle usados na prática.
R",nl3.23
o ~
o
• c-
•
u
Latches D com relógio
l.alch D com relógio.
•> z
R-f---j
3.3.2 Flip-flops Em muitos cireuitos é necessário ler o valor em dctcmlinada linha em detcrminado instamc, e unna7..ená-Io. Ncs....a vaname, de nominadaflip-j1op. u transição de csUldo mIo ocorre quando o relógio é l. mas durante a tranMçàu du relógio de O p:lrJ. I (borda :.c.ccndente), ou de I púr'.l O lbonia dCSl.'Cndenlt:). As..~im. o cmnpnmenlo do pulso do relógiu mio é imponante, cuntanto que a.... Iransiçlks ocorr..!m rapidamt:nte. Para d;,r ênf:L'\C. vmnos repel ir qual é a diferença entre um Ilip-nop e um b lch. Um tlip-l1up é disparado pela burtl.:I, enquanto um latch é dis par..tdo pelo nível. Contudo, lique atento. porque I!SSCS temlOS são muito confundido... na litcr.llurJ.. Muitos ,mWn.:s usam ' nip-llop' quando estão se referindo ti umlatch. e vIce-versa. H6 várias abordagens de prujelO para um J1ip-l1op. Por cxemplo. se houvcssl! alguma maneirJ. de ~cr.tr um pulso rnuiw cu no na borda asccm.knte do ~ inal de relógio. esse pulso poderia ser alimentado para um latch D. Na verdade, c.~sa maneira cxiste. e o circuito para da é moslrJ.do na FigurJ. 3.24(a). À primeir.l vista poderia parecer que a silída tia porta ANO seria sempre l.cro. uma vez que a opcrJ.ção AND de qualqut:r sinal com seu invcrstl é l.em. m;L'\:1 situação é um pouco diferente disso. O inversor tem um atraso de propaguçào pequeno. mas não I.em, e c: I!SSC atraso que faz \J circui to runcionar. Supunha que meçamo.~ a tensão nos quatro pontos de mcdiçau a, b, t" e d. O sinal de entrada. medido em li. é um pulso de relógio longo. como mostr'.ldo na parte inrerior da Figura 3.24(b). O sinal em b c: moslr..!do acima dele . Observe que ele cst6 invenido e também JigeirJ.mente atrJ.Sado. nonnalmcnte de alguns nanossegundos. dependendo do tipo de inversor ulilizado. O si nal em (.' lambêm eSlá lItra.~ado . mas somente pelo tempo corrcspondt:nte à pmpagação (li velocidildc da luz) do sinal. Se a distância ffsica entre (/ e c: fo r. por exemplo. 20 micr.l. então o atr:J.sl) de propagação é 0,0001 nanossegundo. que cenamente ê desprezível em comparação com o tempo que leva para o sinal se propagar pelo inversor. Assim, par.! todos os t:feifOs t: propósitos. o sinal em (.' é praticamente idêntico ao si nal c:m li.
...
C)
1I
i
d
•"" o
~
~
•o
~
ê o u
• • •o
figura 3.24 la) Gerador de pulso. {bJ Temporizllção em quatro pontos do ciICUIlO.
o
"o
II I
o
I I
1I
(. )
b
~
Ii
•
~
Tempo _ _ o
o
;
(b)
~
o
•• • o •
O
~
ã
N
~
O
Rgura 3.25
11
rup-flop D. Q
(.)
(b)
(o)
Ib)
Quanuo se efetua urna op!!rJ."ão ANO com as cnlr..u1as para a pona ANO, h c L. Orcsu!tudo é um pulso cuno, corno moSlr..l a Figur.!. 3.24(b). onde a largurJ. do pulso, !l. é igual ao atmso da ponu do inversor. nOlmalmenlC5 nunosscgundos ou menos, A saída da purt.:1 ANO é ~alamc nlC esse pulso deslocado pelo atr.lSQ da pol1!l ANO. como mostrJ.do na parte superior da Figur::I 3.24(b), Esse deslocamento de tempo significa apenas que o latch D será :llivado com um a1rolso li xo apú.. a fase a$ccndcntc do relógio,
ma.~
nào tem efeito sobre a largum do pulso. Em uma memória com tempo
de ciclo de 50 nanosscgundos, um pulso de 5 nanosscgundos para infonnar quando ler II linha D pode ser suticicntemente cultO, caso em que o eircuito .:omplcto pode ser o da Figura 3.25. Vale a pena observar que esse projeto de tlipl10p t! atrJ.cnte porque é fácil de entender, cmbor'J.. na prática. Ilonnuhnenle ~ão usados mp- f1op.~ mais solisticados. Os símhulos padmnizados para latches e nip-Ilops são llIostrados n3 Figura 3.2fi. A Figura 3.26(a) é um laleh eujo I!stado é carregado quando II relógio. CK. é I. ao contrário dll Figura 3.26(h), que é um lalch cujo relógio normalmentc é I. ma.s cai parJ. () mOlllenl:llu.:amenu.: (XII"J. carregar o eswdo :L panir de V. As tiguras 3.2ó(c) e (d) slIo tl jp- ll np~": 111 wz de l a lclll~~. () I.jllC '; indicado pdo símholo em ângult) nas emr:.\das do relógio. A Figul"J 3.2(c) muda Je eStado na horda .Isccndcmc do pulso dll rcl6giu ( Ir:Ul~iç;io de n par:1 1). eUltUal1l0 a Figura 1.::!6(d) mud:l de ("SI:ldo nu hoft.!:l descendem..: (tl"J.nsiçãu de 1 para Muitos latdles e l1ip-t1ops ( ma.~ não lodos) também têm Q" como uma ~aida. e J.lguns tem duas cnlmdas adicioll:lls SI!/ oU Prl!.~j!1 (que forç:.un o cstatlo para Q"" I) e l?eseJ ou Clem' (q ue fo rçam n estadu para O).
m.
º"
3.3.3 Registradores I lá uma varicdade dc contiguraçôt:s de l1i p-t1ops dispo níveis. Uma simples. que contém duis tlip-l1ops D independemc), com ~ i ll:li s deu!'..: predc/.Il ilustl".lda na Figura J.::!7(a). Embora emplleoladlls no TIll;!smo chip de 14 pi no ... os dOI S m p-!1ops n;lo são relacionados . Um arranjo baslantc diferente é o tlip-Ilop netal da Figura 3.27( h). Aqu i. os oito (daí {) lermo '(letal') nip~ niJpS D não apenas não 1êm as linhas Q e I"e.\'el. mas todas as li nhas dc relógio cstüo agru pada.s c são comandadas pelo pino 11 . Os tlip-rlops em si sãn do tipo dos da Figuru J.::!ó(d). mas aS marcas de invcrsào nos t1ip-tlops são canceladas pelo inversor vi nculado ao pino 11, pultamo 0:Ilip-t1ops ~ão carrcgudos na hurda ascendente. ToJos os oito sinais deur também eSllIO agrupados. portanto. qua ndo o pi nu I vai :t I.Cru. todns os llip-nops são forçados para seu estado O. Caso você esteja imag,inandu por ljUC o pino 11 c invertido na entrada c então invertido novamente li cada :ünal CK. um sinal de entrada pode não
v~
f14l
Í12l
[131
flil
"' C1)
f1õt
L
• -o
r
eLR
CK ?R
af-~
o
r-
Q
CK PR
T
~ f-+--'
••
I
---,
'"o 1
(.,
Agura 3.27
elR
GNO
lal f1ip-flop D dual. [bl Flip-t1op octal.
M
o o
o-
•
"
II
ONO ("
I
I
(
I I
I
I I f
I
I
( ~
te r corrente suficiente para com:mdar todos 05 oito flip-Ilops: na ~aJidadc. o invcr.lor de entrada está. sendo usado como um amplilicador. Embom uma mzão pam agrupar as linhas de relógio e cÚ!/lr da Figura 3.27(b) seja economizar pinos. nessa COIlfiguração o chip é uSl.Ido de modo diferente em relaçao aos oito flip-flops não relacionados. Ell! !S usado corno um regis-
ImJor único de 8 biL... Como ah.crnativa. dois dessc." chips podem ser usados em paralelo pru-.J. formar um registrat.lor t.lc 16 bits YlIlculando seus respectivos pmos I e 11. Estudaremos registradores e suas utilizações no Capitulo 4.
,
3.3.4 Organização da memória Embora agora 'cnhamo~ progred ido de uma .. implcs memória de I bit da Figura 3.23 par.!. n memória de 8 bits da Figura 3.27(h), par.!. construir memôrias gr.mde~ é preciso lima organização diferente. na qual palavr.ls individuaiS ptlllem ~c::r endereçadas. Uma orgun ii'.aç:'in de memória ampl:l.nu:rue utilizaua t: que obedece a esse cri tério é moslrnda na Figura 3.28. Esse exempln IlustrJ. uma memória com quatro palavras de 3 bits. Cada opcrJ.ç;jo lê ou escreve lima pul avra cnmplcl:t de J bh~. Embnm uma eapaciebtlc IUlal de memória de 12 bits ~eja poU!,;o mais do que nosso fl ip-Ilop ocla!. ela requer um númenl menor de pino'l c. m;us iml>llnante. o pmjeto pode ser estendido com facilidade para memórius grandes. Embora à primcir.l. vistu mlvc.l pareça complicada. :t memória da Figura 3.28 na verdadt:. l! basl:mle simples dcvidn à "ua eSlrUt'Ur:t reg ular. Ela tcm oito tinhas de enlrmla e três linhas de saída. Trê~ cnlrJ.das são de dados: lo. [I e 12; duas silo para tl emJcrcço: 1\1 e AI; e lrês s:io para controle: CS pam Chip Selcct (sclecionarchip), RD para distinguir entre ler e escrever c OE pam OutpUl Enablc (habilitar saída). A.
, •
Entrada de aados
Ol
I,
•o• N
""" de~
•
•
"-
~
e
~
•
~
'.• o
~
N
C
•
flgara 3.28 Diagrama lógico para \ll'ruI memôna 4 X 3. cada linha é uma das quatro palavras de 3 bits. Uma operação de
,,-
~
"
oa
oa
CK
C}(
p
CK
~
a
oa
oa
o
CK
~
O
r C
CS ' AD -
r
CK
PaIaVl1l 1
00 C
O
a
Palavra 2
~
(
""'"
de seleç!io de palavra 2
~ N
~
oa
,
completa.
....... 0
~C}(
UM'
ao seleção de palavra 1
leitura ou escrita sempre lê ou escreve uma palavra
oa
(
de palavra o
~
oa
rt9K
-t:>-'ü.......
o
u
• • • • •
10 a
C Palavra 3
ç
ç
7
CS AO
\J
'---
'---
a,
o,
'--DE
H.
de
saida . cs , AD ' CE
presentes nas linha.; de entrada de dados siio carregados nu palavr'..L de memória selecionada; as linhas de saída de dados não são usadas. Agora vamos examinar Ulcntarncntc 11 Figura 3.28 para ver corno isso funciona. As quatro ponas ANO de seleção de Ih'lluvras à esquerda da memória fomlllm um dccodilicador. Os inversores de cntl"..lda foram instalados de modo que cada pona é habilit:ula (saída é lllta) por um c nd crc~o diferente. Cada porta comanda urna linha de se leção de palavra, de cima pum baixo, para as palavras O, l. 2 e 3. Quando o chip é selecionado para ulIla escrita. a linha vertical ro tulada CS . RD estará alta. habilitando uma das quat ro portas de escrita. depende ndo de qual linha de seleção de palavra esteja alta. A saída da porta de escrita comanda lodos t)S sinais CK para a palavr:l. selecioJlIlda. carregando os dados de entrada nos flip-Il ops panl aquela palavra. Uma escrita é efetuada somente se CS estive r alto e RO esti ver baixo. e. ai nda assi m. somente a palavra selecionada por Ao e é c~r,;ri t:l: as ou rra.~ palavrn..~ niio sào alteradas. Ler é semelhante a escrever. A decodificação de cndereço é cxat:.lJnt:ntc a mesma que a da escrita. Mas a~ora a linha CS . RD está baha. portanto tu;.:!as as port:ll> de c:.scrita estãu dC"'lbilitauas C!. m:nhum J us fl ip- flops é rnoJiIkadu. Em \'t!7. d i ~Ml . J. linha de , dclõ5.o J c palavr:a que for c~co l hiJa habilita J.~ purta!> ANO vim.:ulaú:u. J.u~ Q bit!> da palavra selL'd onadn. Portanto. a palavrJ. sclL'Ciunada entrega Sl!US Jados às portas OU Jc quauu entradas na parte Inferior da ligura. enquanto a.~ ourrJ..~ trê.... palavr.JS pnxJul.cm I):;. Por ctlnscqüência. J. saída das pon as DA e idêntica ao valor anna1'.cnado na palavrJ. selecionada. As três palavras não ~k.'Cion adas não dão nenh uma comnbuição à saída. Embora pudéssemos ler projetado um circuilO no qual :L~ tres portas DR fossem diretamente ligada.'I às três linhas de saída de dados. t,$sa oper.:Jção às vel.es causa problemas . Em panicular. mostrJ.mos que as linhas de entrada de daJos e as linhas de saída de dados são diferentes. porém. nas memórias pnlpriamemc di tas. as mesmas li nhas silo usuJas. Se tivésscmos vinculado as ponas DR às linhas de saída de dados. o ehip tentaria pnxluzir dados. isto é. fOl\'llr cada linha a um valor cspt!cífico. rncsmo nas I!scritas. imerfcrindo desse modo com os dados de entrada. Por CSSll r.l.7.ào. é desejável ter um meio de conectar as ponas DR às linhas de saída de dados em leitura.'I. mas desconectá-las eompletamente nas escritas. O que precisam()s é Jc um comutador e lt:lTfmico (lue possa estabelecer nu interromper uma cone~;io em poucos nanossegundos. Fdizmeme esses comutadores l!~ i Slem . A Figura 3.29(a) mostra (J símbolo para o que denominamos bufTcr nuo inversur. qUI! tl!lIl uma cmrada ue dados. uma ~ "ída de dados e uma cmrnda de controle. Q uando a entmda dc
Ar
---------------_ ..... ....... , . ""
"
.... . .
~
I
I
I
, I l
I
~
)
, I ~
I I
I
n.,ura :1.29
'I
(aI Butler não Inversor.
:I
(b) Efello de tal quando o
controle esta alto. le) Eleilo de (a) quando o oontrole esta
•
,.,
baIXo. (dI aulfer mversor.
(b)
I
(di
I.::onlrolc ,;stiver alta, ,) bufrcr age como um fio, como mostra a rigura 3.29(b). Quando a cntr.lda de controle estiver baixa. \l buffcr age como um circuito :tbcno. como mOS lr:l a Figura 3.29(c); é como se alguém dCNconI! C t:1S.~e a saíJa lI.! dados do resto do circuito com um ulicate de corle. Contudo, ao conl.cirio do que aconteceria nll caso do
aliçatc de cone. a conexao pode ser rcslaur.lda logo em seguida. dentro de alguns nanossegundos. apenas t"a.t..cnt.lo com que o sinal de cono-oic fi(l ue alto novamente. A Figur.l 1.:!l)(d) mostra um hulTcr inversor, que funciona como um invt:rso r na nnal quundo o comrolc esti ver alto. e dcsconccta li ...aída do ci rcuito quando o controle estiver baixo. Ambos os tipos de bulfers são d ispasiLivos de três esbdos. porque podem produl.ir 0, I. ou nenhum dos dois (circuito aberto). Buffers também am plificam sinaIS, ponanto ()(xlcm comandar muitas entt:ldas simultaneamente. Às vezes eles Slio usados em circuitos por ess:\ rJ.zão. mesmo quando suas propried:tdes de cOlnuta«ào nào são necessárias, Voltando ao circui to de nlcmória. agora já deve estar claro para que ~rvem os tres burrern não inversores nas linhas de ~aída de dados. Quando es. AO e DE estiverem todos altos. \I sinal de habilitação de saída também e.~tá alto. habilitando os buffers e coloc:l.ndo uma palavrJ. nas ljnha.~ de saída. Quando qualquer um dos es, AO ou DE c~ liver baixo. a.~ saídas de dadus são desco nectadas do resto do circllito.
II ,!
•> o
'I
I M
•, •
"
3.3.5 Chips de memória o bom da memória dll Figura 3.28 ~ que ela pode ser ampl iada com facilidade para tamanhos maiores. Em nosso desenho. a memória ê 4 X 3. islO é, quatro palavrJs de 3 bits cada. Para ampliá-Ia pura 4 X 8. basta adicionar mais ei m;o colunas de quatro tl ip-tlops cüda, bc!m como mais cinco linhas de enlrJ.da e mais c inco linhas de saída. Para passar de " X 3 p::tr'J. 8 X 3, devemos acrescentar mais q uatro linhas de U'ês Oip-tlops cada, bem como lima linha de cndereço Az. Com esSC tipo de esuutura o número de palavras na memória deve ser uma potência de ~ parJ. elkii!ncia máxima, mas o número de bi ts em uma palavrJ. pode scr qualquer um. Como a tccnologia de cireuitos inlegmdos se ajusta bem à fabricação de chips cuja estrutura interna é um padr:1o bidimensional repetitivo, chips de memória são uma apliC:lçãu ideal p:tr:1 ela. À medida que a tecnologia mclhol"J.. o número de bits que pode ser colocado em um chip clJlllinua crescendo. normalmente por um rator de dois a cada 18 meses tI!!i de Moo rc). Os dllps maior!!s nem sempre tomam os menores obsoletos devido às difere ntes pcnnulaçõcs entre capacidade, vchX:ldade, encrgill., preço e co n ve ni~ncia da interface . Em geral os chips maiores disponfveis no momento são vendidos por pn.:ços mais elevados. ponanlO são mais caros por bit do que os antigos. menores. Há vânos modos de organizar o chip para qualquer tamanho de mcmória dndo. A FigurJ. 3.30 mo~tra duas organil.açÕCs possíveis pal"J. um chip de memória mais amigo de 4 Mbits de tamanho: 5 12 K X 8 e 4.096 K X I. A propclsito. os tamanho<; de chips dc memória costumam '\C f citados em bits em vez de byle!l. portanlO odoto.remos essa convenção, Na Figur.l 3.30(a) são m:cessárias 19 linhas de endereço para endereçar um dos 2 19 bytes e oito linhas de dados para carregar c armm:enar o bytc selecionado. Cabe aqui UlUa tl bserva,,:10 ~o brc tecnologia. Em alguns pinos a alia tensão provoca uma ação. Em OUlro~ , é a baixa tensão que causa uma ação. Par.:! evitar eonrusão. preferimos manter a coercncla c di:t..cr sempre que o sinal t! afirmado (em vez de dizer que fica :.tllo ou fica baix.o). (l que signiJica que fui utivado paI".! provoc:lr alguma ação.
..'"
AO - .,----,
AO-.,----, 1-- 00
'"
-O,
A5AS A7 AS
FI ..... 3 .3a
DoIS modos de organizar um Chip de memória de 4 Mblt.s.
mamona de 5121< x 8
""
(4 Mb~!J
AI'
02
Chio"
A9
A12-
"3
AO' Al5
~i
AI 1.2
AI
03
o, 05 -
06
-
07
A3
M AO
A6
A7 AS AO
AlO
C","""
fJl8mofia da • •096 K x 1
(4 Mbits)
, I
o
{
Al6
m
AI'
- -1..,......-,,.-' cs Wê (.)
OE
t
t
CS WE (O)
õE
1 ,
I
.J
co
'" •" o" ~
,•
~
e
o u
• " •"o
~
~
o
"
•
~
'." o
~
N
"
~
o
Assim. par..! alguns pinos. alirmá-lo ~ign i!ica estabelecê-lo alto. Para OUlrO~. ~ig n ilica I!stabdcccr o pino baixo. Os nmncs ue sinais de pinos alirmauos baixos são distinguidos por uma barra '\upcnor. A:>sim, um sinal com rotulo CS é atinnauo WIO, mas um sinal !.;om ftitulo CS ..: alinnado baixo. O oposto Je ;.tJinn:.uJo .! ncgadl). Quando nada de
especial estiver acontecendo, os pinos são nc=gaJos. Agora vamos voltar an nosso chip de memória. Uma wz que um computador nonnaJmente te m muitos chips de memlÍria, li preciso um sinnl par'.\ selecionar u chip necessário no monmnlo em questão. de mudo que ele rcsp<mda c todos n~ outros não, O ~inaJ CS (Chip Sdct:! ~ seleção de chipl existe para essa linalidade e !! alinnado para habilitar o chip. Além disso . .;! preciso ullla m:100.:1ra dc distinguir en tre Icituras o.: escriws. O si nal WE (Write En:lblo.: - escrilll habilitLlda) é usado par:t indic:lr 4ue os dados !!SIão sendo ..:scritns, o.: nao lidos. Por fi m. o sinal OE (OUlpUI Enablc - .~aída habilitada) é afirmado para comandar os sinais de saída. QU;Jndo ele não é alirmado. a saída do chip é desconectada do circuito. :--Ia Figura 3.JO(b) é usudo um esquema de endereçamento t.lifcrenle. Esse chip é org.mizado intcmumcnte como uma mauú: 2.()48 X 2.048 de célul:ls de I bit. o que dá -I- Mbit.... Para endereçar o~. em primeiro lugar uma linha é selecion:u..la 110!'iC eoloc:1\" seu número de 1i bil:i nos pinos de endereço. Então oRAS (Row Addrcss Strobe - st.nr bc da linha de .:ndereço) é aHrmado. Em ,>cguida. Um númcro de coluna é colocado nos pinos de endereço c o CAS (cü luna t.la linha de o.: ndo.:reço) c afirmado. O chip responde aceitando ou entregando um bit de dados. Chips de memúria de grande porte coslUmam so.:r construídos comu matrizes n' X n enderC\;ad:ls por linha c coluna. E.~sa organi;wção reduz o numero de pinos requerido, mas também toma mais Icnto o cndereç:lmento do ehip. uma vez que são necessários dois ciclos de cndcreç:unento, um para a linha e outro p:lra a col una. P.,ml recuperar um pouco da vdocid:lde perdida por esse projeto, :llguns ehips de memória podem receber um endereço de linha ao.:ompanhill.lo por uma se4üência de endereços de o.:oluna pura acessar bits consccutivos em uma linha. Ano~ alr.is, os maiores chip ... de memória costumnvam ser organii'.aúos como os da Figura 3.J O(b). À medida que as palavras de memória cresciam de 8 bits até 32 bits e mai s, os chips de I bit começaram a ser inconvenientes. Construir uma memôria com uma palavra de 32 bits usando chips de 4.096 K X I rt."quer 32 chips em pur.Jlelo. Esses 32 chips têm capacidade tmal de nü mínimo 16 MS. ao passo que usar chips 5 12 K X 8 requer somente quatro chips cm paralelo e permite memórias pequenas, de até 2 MS. Para evil:ir ter 32 chips para memória, grande pan e dos f:lbric:Ulles de chips lunçou família s com 4. 8 e 16 bits de largura. A situução com as palavrJS de 64 bil~ é pior ainda. é claro. Dois exemplos de chips moúernos de 5 12 Mbits são d:ldos na Figura 3.3 1. Esses chips têm qualrO bancos de lllemôriu internos de 128 Mbits cada. o que req uer duus linhas de seleç:io de banco para ese.olher um banco. O projeto da FigurJ. 3.31I a) é de um chip de 32 M X 16 com 13 linhas pam .o sinal RAS, la linhas para o sinal CAS e 2 linhas parJ. a seleção de banco. Juntos. esses 25 sinais permitem qoe cada uma das 22!1 células internas de 16 bits ~ endereçada. Em compar.'!X!!.0. a Figura 3.3 1(b) apresenla um projeto de 128 M X 4 com 13 linhas para n sinal RAS, 12 linhas para o sinal CAS e 2 linhas para:1 scleçiio dc banco. Nesse C:lSO, 27 sinais podem sdC!eionur quaisquer das 2~7 células interna~ de 4 bits parJ. endereçar. A deCIsão sobre o número de linhas e de colunas que um chip tem é mmada por razõcs de engenharia. A malriz não precisa ser quadrada. Esses exemplos demOnSlrnnl duns questões separ.Jdas c independentes parn u projeto do chip de mcm<Íria. A primeira é a lilrgurJ. da saída (em bits): o chip entrega l. 4, 8, 16 ou :ligum outro número de bits de uma vez só? A segunda é se todos os bits de o.:ndC!reço são apresentados em pinos separados de uma vez só IJU se as linhas c colunu.s cio aprcscl1ladas em scqüência. como nos exemplos da Figul".J 3.3 I. Um projetista de chips de memória tem de responder a ambill; as perguntas antes de iniciar o projeto do chip.
3.3.6 RAMs e ROMs Ttxlas as memórias que estudamQs até aq ui podem ser escritas c lidas. Essas memórias são denominudas mo.:mdrias RA M (Random Acccss Memories - mcmÓria.~ de acesso ale:ltório), que é um nome suspeito porque todos os chip~ de mcmória telll ao.:essu aleatório. No cnt;1Oto, o tc nno já c muito corrente parJ. que nos livremos dele .. gora. RAMs I)lxlem ser \Ic duas vario.:dadcs. c~ t:i t ic:ls e dinàmic:ls. Nas CS tálica.~ (St:ltie RAM - SRAMs) a constnJç:io intenm usa dre ulI (J~ similares a n u,~o Ilip-Ilup O h;ísicn. Uma dus pmpricdades dessa.~ lIIcllllírías é que seus euntelidus ~ão eon~crvados enlluanto houver (nnu.'C lmenHJ úe energia: segundos, minutos. horas e até mesmo dias. As RAMs est:íticas ~:10 mui\{) r..ipidas. Um tem po dI! aees~lltípico é da ordem de alguns nano~scgtlndo~ e por essa rJ.:l.ão elas ~ãll muitl) u)o:u..las como mcmória c;a:he de nível :!. RAMS dimimicõlS (Dy,mmic RA i\ b - ORA Ms). an cOlllr.irio. não US:.u;1 fl ip-nop.~. Em vez dissll. Lima RAM dinâmica é um armnjo de células. cadu uma contendo um tr:tnsistor e um pequenillLl capacitor. Os capacitores ptxlem ser eam:gados nu desc:lm:gados. pennit.indo que Os eis sejam annal.cnados. Como :l carga elétrica lenúe a va?..ar, cada bi t em uma RAM din:imiea deve scr renuvadu - rcs taui.ldo, recarrcgado - eom alguns miJisscgundos de interv:llo pam ev it:lf quc us dados dcsapaJ"~alll. Como a lógica extemu ê 4ue tem de executar da renovação. as RAMs dinâmk:ls precis:ull de uma interface mais complexa do 4ue as estática..... e mbnm em muitas aplicações essa desvantagem seja compensada por suas maiores capaddudes. Visto que RA Ms Jinãmic:Js precisam de apenas um transistor c um capacitor por bit. em comparação eom .os seis tmllsisto res por bit para a melhor RAM I.!stática. elas têm de nsidade muito alta (muitos bil~ por chip ). Por essa r.Jl.ãu, as memórias pnndpais qUllSC sempre são cunstruídas com RAMs din:lmicas. Contudo. essa grande capaddade tem um prc,
j
.."
AO
A3-
'"AO AS
"" A" AS
flg unI 3.31
DoIS modos de organizar um chip de memória de 8 12 Mbits.
."
A12-
~'"
ma '. dll 32 M ( 16
00
O, O,
AO
03
M
'"05
A7
06
- - 07 (!:12 MbttS) - - D a -09
--O" -011
imOÃS-
-012 -013 --014 -015
"""" O lI.n,,"
t 1 we
OS
,.)
I
oe
Cl Cl
A' A3
'"
.. AS
"" m '"
A"
"",do
•
memória oa - 0 0 128M X 4
-
(512 MOíts)
- - 02
O,
--03
~
m
•> z o
Bm"lCO O
li""""
t t I CS
WE
DE
'b)
Existem diversos tipos de RAMs dinâmicas. A mais amiga ainda e~ i stentc (em compuladorcs antigos) é a modo de rmgina r.ípidu). Ela é organi7..ada internamcnte como uma mmr iz de bits e funciona da seguinte rnam:ira: u hardware escolhe um cnder~ de linha c então selct:iona endereços úe coluna um a um. como descrevemos par.! o RASe o CAS no eontc.xtoda Figura 3.30. Sinais explCeitos inronnam à memó· na quando é hora de responder. de modo que ela runciona em assim."1"Onia com o relógio do sistema principal. A ORAM FPM foi substituída pela EDO (Exlendcd Daln Output - suída de dadllS umpl jada). que pc!nniu: iniciar uma segunda referencia à memóna antes de ser eonclufda a rererência à memória precedente. Esse pru-alelismo simples não aceler.tva uma rcrcrencia individual b memória. mas mcJhorav
DR.Ao.M FPM (I'asl I'age Mode -
Chips de memória não volátil RAMs não ..ào o únieo tipo de ..:hip de memória. Em muilas aplicações. como brinquedos, ..:Ictrodolllé!.ticos e carros. o progmma c alguns dns d:lI.J.ol> devem pcmml1ccer am1ULen::tdos mC.~n1l1 quando o forneci mento dc energia for imemunpido. Além do mais. UIIIU vez instal:Ldos. nem o pmgr.lma nem os d:u.los ~ão ahcr.tdos. Ess..:s rcquisitns levaram ao cJcscnvolvimcnto de ROMs (Read-Only M..:murielt - memórias someme de IcituT:\). que não pudcm ser 'Ih..:radas nem ap:lgaJ:ls. 'iCj:l ou nãu in tC:lleiollalllleme. Os d:ldl1' de 1I111:! ROM ~.i() illserid()~ duran te ~ Lm fahricaç:il) [>\u· um pruces~o llLlc e~põe um material tutusscnslvcl por meio de urna má.~ear:1 que contém o póLdrlo de bits desejado e então grava () padr:10 sobre :I ~ lIpcrfíeic e~posta (ou n:in e;tpn~ ta) . A unica maneira de mudar o programa cm uma ROM é suhstiluir o chip imci ro. ROMs são muito mai s baratas que RAMs quandu fubricadas em vulume.s suficientemente gr.tnd e.~ par.! cobri r o custo da fab ricação da máscarn. Todavia. são inOeltÍveis ponluC não podem ser alteradas após a manufatura. c o tempo decurrido cntre euloe:lr 11 I~.:dido e receber .1S ROMs pode chegar a semanas. Para facil itar o desenvolvimen10 (>I!las empresas de nuvos produlUs eum ROM foi invenlaú:l a PROM (Progl"'..Immable ROM - ROM progmmávcl). Uma PROM é como uma ROM. cl{celo que ela pode.! ser progmmada (uma vez) em campo. eliminando o tcmpo dc c~pcra entre proc.1uçJu e clI1rega. Muilas PROMs contem um arranjo de minusculus fusíveis em seu interior. Um fusível espcci~ico pode ser queim:ldo sdedonundo suu linha e t:nlu na e então aplit:ando alta tensão a um pino especial no chip. O desenvolvimento seguinte IIcssa linha foi a IWROM (Er:lsahle PROM - PROM apagável). que n;1o somente pode ser prugr.ullaJa. mas também apag:ula em campo. Quando aj:mel:l de quanzu de uma EPROM é exposta a uma rone luz ullr".tvioleta durante 15 minutos. Iodos os bits '\:io lixados em I. Se a expectaliv:l é ter muitas al1eraçfle.'i dur:I.llIC II ciclo de prujelo. ali EPROMs s;1o mais econ ô mica.~ do que as PROM s porque podem ser reu tilizadas.
•
~
o o
• ,• o
~
,•
~
E
o u
•
~
• ,• ,,
~
•
~
'.•" o
~
•"
~
o
Tabela 3.2
Comparação entre varies tipos de memórias.
MJi,j,E
Byte allerável VoWil.
UtUização tipica
SRAM
Leitura/escrita
Elétrico
Sim
Sim
DRAM SDRAM
Lcitw'a/escrita
Elétrico
Sim
Sim
Memória prindpal !antigal
l.eitura/escrita
Elétrico
Sim
Sim
Memória principal (novai
ROM
Somente de leitura
Não e passivel
Não
N'o
Equipamentos e grande volume
PROM
Somente de leitura
Não é possível
EPROM EEPROM
""'"
P.rincipalmente leitum
"" UV Principalmente leitura métrico Leitura/escrita
ffiétrlco
Cache de nível 2
N'o
N'o
Equipamentos e pequeno volume
Não
N'o
Prototillagem de dispositivos
Sim
Nilo
Prototipagem de dispositivos
Não
N'o
PIlme para càmera digital
As EPROMS costumam tcr li mesma organização que as RAI'vls estáticas. A EPROM 27C()40 de 4 Mbits. por exemplo, usa a organi7. ação da Figura 3.3 1(a), que é típica de uma RAM cst{uica. Ai nda melhor do que a EPROM é il EEPROM, que pode ser apagada aplic:mdo-se pulsos em vez ser cxpostll à luz ultraviolctn dentro dt! uma dmum especial. Além disso. uma EEPROM pode ser reprogr.unada no local. enquanto uma EPROM tem de ser inserida em um dispositivo especial de progrJ.ma,uo de EPROM para ser progr.lmOlda. Uma desvantagem é que a capacidade das maioTes EEPROMs nonnalmente é somente 1/64 da capacidade das EPROMs comuns. e sua velocidadc é a met...'lde. EEPROMs não podem competir com DRAMs ou SRAMs porque são 10 vezes mais lentas. sua capacidade é IDO VC7.CS menor c são muito mais caras. Elas são usadas somente em situat;ões em que sua não-volatilidade for crucial. Um tipo mais recente de EEPROM é n memóriu nash (j1asll m~mory ). Diferente da EPROM. que é apagada pela exposição a luz ultr.lviolet:L. c da EEPROM , cujos bytes podem ser apagados, os blocos da memória l1ash podem ser apagados e reescritos. Como a EEPROM. a memória nash pode ser apu.;ada sem ser removida do ci rcuito. Vários fabricantes produzem pequenas placas de circuito impresso com até I GB de memória nash que silo utilizadas como um 'fil me ' para annazcnar fa lOS em câmerlS digitais e muitas outrJ.'\ finalidades. Algum dia as memórias rápidas poderão ser usada.; parJ substituir discos, o que seria uma enonne melhoria, dados os tempos de acesso de 50 nanossegundos. O pri ncipal problema de engenharia no momento é que elas se desgastam após serem apagadas cerca de 100 mil vezes. ao passo que discos duram muitos anos. não import:lJldo quantas vei'.cs forem reescritos. A Tabela 3.2 apresenta um resumo dos vários tipos de memórias.
3.4
Chips e barramentos de CPU
Agora que já temos todas essas infonnaç5es sobre chips 55!. ehips MS I e chips de memória, podemos come· çar a jumar todas as peças e exami nar sistemas completos. Nesta seção estudaremos primeiro alguns aspt.'Ctos gerais das CPUs do ponto de vista do nível lógieo digilU!. incluindo pinagem (PiIlOlltS), isLO é, o que significam os si nais dos vários pinos. Uma vez que as CPUs estão tão cntrcla,adas com o projelU dos burramemos que utilizam. tamb~m faremos uma introdução ao projeto de barramentos nesta seção. Nas seçõcs seguintes daremos exemplos detalhados de CPUs e seus barramentos e de como ê a interface entre eles.
3A.l
Chips de CPU
Todas as CPUs m(x!emas são contidas em um únicll chip. o que faz eont que sua inter.tt;ão com o resto do sistcma seja bcm ddinida. Caua chip de CPU tem um conjunto de pinos por meio dos quai s deve ocorrer toda sua comunicação emn o munuo externo. Alguns pinos produzem sin:lis da CPU pam o mundo externo; outros aceitam SIIlUIS do munJo e:ruemo; alguns poocm I·ul.er as U U:L~ coisas. e ntendendo .t fum;ão de tllJll~ c~sc~ pmus. poUCl!lUS aprender como a CPU imerage com a memória e os uispusitivos de EIS no nível lógico digital. Os pinos de um chip de CPU podem ser divididos em tres tipos: dt! endereço. de dados c de controle. Esses pinos' são cnnt.-ctaLlos a pinos similares na memória e:l ehips de EIS por meio Je um conjunto de tios p:lralelos denominado b;lrmmento. Para buscar uma instruçiio, em primcirtl lugar a CPU coloca o endereço de memória daquela instrução em ;;cus pinos d~ endereço. Enlão da ativa uma ou mais linhas de controle para inronn:!r à memóriil quc d a quer ler um:! palavra. por excmplo. A memória responde colocando a pahlVra requ isitada nos pinos de dados du CPU e ativando 11m sinal que infonn:! o que acabou de fazer. Qu:!ndo percebe ~sse sinal. a CPU aceita a palavra e ..::xccuta a instrução. A instrução pode req uisitar leitura ou escrita de palavras de dados, caso em que lodo o processo é repelido pam cada palavra adicional. Mais adiante vamos entrar nos detalhes do modo de funcionamentu da JciturJ e da escril:!. Por enquanto, o importante lo! entender que a CPU se comunica com a memória e dispositivos de J1IS apre!
__
Endereçamento _~r---l-_ -- Arbitragem de barramento
n gura 3.:12 Pinagem lógica de uma CPlI genênca. As setas indicam sinaLS de entrada e srnrus de salda. Os segmentos de rela diagonais mdicam que sào utilizados vânos pinos. Há um numero que indica quantos
são os pUlOS para uma CPU especitlc3.
O
Co-ploce ?dor
Controle de barramento
Slmoolo ,/ •
para $IOa1 llerelógio
.. ,"/~ ,:.'" . . (;.-':-, ,. lt't' ...'~ \ / ... , "'\ .
processador Ilplco
Diversos
In!errupç6es
"rI
~
1,1:1
... ", 51mbo1opara
aterramenlO elbico
'-,t.
Energia elõtrica 1& 5 volts
•
-;. \ I'i'\
~'b{,-:l;fl \ .> R.~; ....::;;.~/ (~J!'o.
."c:P/ '~ nlcmórill. Valores comuns de m são 16.20,32 e 64. De modo semelhante. um chip com 11 pinos de dados pode ler ou escrever uma palavra I.lt.! 11 bits em umu única operaç:1o. Valores comuns de 11 são 8, 16,32.36 e fH. Uma CPU com R pino..~ de dados efetuará quatro operaçõcs purJ ler uma palavra ue 32 bits. cnquumo uma C PU com 32 pinos de dados pode CXI.'CUIll( a mesma tarefa em uma única operação. Assim. o cnip com 32 pinos de dados é muito mais r:lpidu: porém. invariavelmente, também é mais caro. Além dos pinos de endereço c de dados. cada CPU tem alguns pinos de controle. Os pinos de controle regulam o IlUltO c a Icmpon :t.açr1o de dados que vêm da CPU C! vilo par.! ela além de ter outr.!s utilizaçõcs diversas. Todas a:. CPUs têm pinos par.! cnergia elétrica (us ualmente + 3.3 volts ou + 5 voll.'i), para terr.l. c par.! um s.inal de rel6gio - ond:t quadmda com um periooo bem definido - . m:l.S os outros pinos variam muito de chip para chip. Nilo obstante. o.~ pinos de controle podem ser agrupados apmximadamcntc nas categorias principais seguintes: l. Controle de barramento. 2. Interrupções. 3. Artilragem de muramento. 4. Sinaliz::u;iio de co-pn>cessador. s. Esllldo. 6. Diversos. Logo fare mos uma breve descriç:!o de c3d:l um3 dessas categorias. Quando clIaminarmos os chips Pentium 4. UltmS PARC [JJ e 8051 mais Jdiante. daremos mais detalhes. Um chip de CPU gen~ri eo que usa esses grupos de sinais é mostrado na Figura 3.32. A maioria dos pinos de controte do barramento são saída.~ da CPU parJ o barr.unento (e. portanto. enlr.ldas par:ll memória e ehips de F.JS) que infonnam ~ a cru qucr ler ou escrever para a memória ou fazer OUlrJ cOIsa qualquer. A cru usa esses pinos pura controlar o ~StO do sistema e lhe infonnar o que ela qucr l"al.cr. Os pi nos de imerrupç:!o siio entrada.~ que vêm de dispositivos de EIS para ri CPU. Em grande parte dos sistemas a CPU pode di7.cr a um dispositivo de EIS que inicie uma operação e então continuar e fa7.cr uma oulrJ. coisa qualquer enquanto o dispositivo de EIS está realizando seu tnbalho. Quando a EIS esti ver concluída. o ehip comrolador de EIS :niva um siTlal em um desses pinos pura interromper a CPU e fa ...er com que ela preste algum serviço ao dispos.itivo de F.JS. por excmplo. vcritique se ocorreram clTOS de F.JS. Algumas CPUs têm um pino de salda para I"l.'conhccer o sinal de interrupção. Os pinos de arbitr:J.gem de barramento são necessários para disciplinar o tr:ifego no blll'Tlllllento de mexlo a impedir que dois dis positivos tentem u st1~ lo ao mesmo tempo. Do ponto de vista da arbitragem. a CPU é um d ispo-~ilivn tJ tem de requisitar o barrJmento como qualquer outro. Alguns chips de CPUs são projetados pam funcionar com co-processadores. como chips de ponto flutuante. 1Il:t.l. a... vezes também com eh lps gdfico .. ou OUtnlS chips. Para facilitar a comuOlcação entre C PU c co-processador, h:l pinOS cspeciais dedicados a fa7.cr c aceitar req uisifjõcs. Além dc~~e s ~ in ais. há nutnls pin()~ d iver~o~ presentes em algumas CPUs. Alguns deles Jão ou aceitam informafjflCS de cSlado. OOlros são úteis para reiniciar o computador c oUlros mais estão presentes para gar:tntlr a compatibilidadc com chips de EiS mais antigus.
3.4.2 Barramentos de computador Üur ra mento e um caminho elétrico comum cntre vruios dispositivos. Os barramentos podem ser eatcgoril.or sua funljão. Podt:m ser usudo.s no inlcrior da C PU parJ. lrJflsponar dados dI! e pura a ALU 011 podem ser c:([eml)S à CPU para eoOt.:crá-la à memória ou a disposi livos de EiS. Cada tipo de bumlmento tem seus próprios T"Cquisitos c propriedades. Nesta sefj,ão e n~ segui ntes focalizaremos barmmentos quc conectam a CPU à memória c a dispositivos de flS . No capftulo seguinte examinaremos mais dc pcno os barramentos internos à CPU. O~ primeiros computadores pcssoois tinham somente um barramento cxtcmo. ou barr a m ento de sistem a. que consistia em 50 a IOCl lius de cobre pamlclos gravados na placa-mue. com CllncctoreS a intervalos regulares para ligação com a nlem6ria e pl acas de EIS. Os cumputadores pessoais mot.lcrnos em geral têm um barrJ.mento de uso c"'lCciaJ cntre a C PU c a memória c. ao menos. um outro bamunemo parJ os dispositivos de EiS. Um sistema mínimu. com um barramento de mcmória e um barramento de flS. é ilustrJdo na Figuro 3.33.
I ....
-•> z
o
~
o
• •
'-'
'"o
·• o
~
• "
ClIIp deCPU
Barramento oe
RegislJadotes
~==:iContJOlador de
f'
barramento
memóna
Haura 3.33 Sistema de computador com vários barramentos. Barramento do EIS
~
eo
<.>
-..... Bamunenlo no ch,p
•
~
•
::
" •
~
o ~
~
• "c •a
o"
Na literatura. às VC7XS OS barr:uncntos solo rcprcsenUldos por SCta.~ largas e so mb rc!ldõl.~. como na I-i gur.l 3.33. A distinção entre essas setas lo! uma tinha reta con.ada por um pequeno segmento de n:t:.l inclinado acumpanhac.lo de UIII nú mero de bits é sutil. Quando todos os bIts são do mesmo tipo. por exemplo. todos silo bits de endereço ou todos são bits de dados. portantO costuma ser u::.ada a ~prcscnta'i50 pelo segmento de reta diagonal. Quando estão envolvidas linhas de c ndercço~. de dados e de controle, a seta larga sombreada é a mais comum. Embora os projetistas de CPUs te nham liberdade para usar qualquer tipo de barra mento Que quiserem dentro do chi p. parJ. possibilitar a liga..;:1o de placas projetadas por terceiros ao barramento de sislema é preciso haver regras bem delinida.'i sobre o moela de funcionamento do barr.lmento, às quais lodos os dispositivos a ele ligados têm de obedecer. Essa.'I rcgra..~ silo denominadas pmtocolo de barrdmentu. Além disso. são necessária.'i especilicaçõcs mecânicas c elétricas. de mudo que placas de tcrceiros caibam 110 suporte da placa e te nham conectores compalívcis com os da placa-mãe. ta nto em termos mecânicos quanto em tt! nnos de tensões. lempori7.açõcS etc. Há inúmeros barramentos em uso no mundo dos computadores. Alguns dos mai~ conhecidos, no pa.<;sado e atualmente (com exemplos), são: Omnibus (POP-8). Unibus (POP- II), Mu ltibus (8086), barramento VME (equipamento para laoomt6rio de fís ica). barramento IBM PC (PC/Xn. barramento ISA (PClAT), barraJllt!nto EISA (80386). Microchannel (PS/2). Nu bus (Macintosh), b:llTumento PCI (muitos PCs). barramento SCS I (muitos PCs e estações de tra balho). Universal Serial Bus (PCs modernos) e FireWire (equipamentos eletrônicos dc consumo). O mundo provavelmente seria um lugar melhor se looos os barramentos. menos um. dCS
f.xemplos de mesues e escravos de barramentos. I
Escrnvo
CPU CPU CPU E/S
Memória
DMA (acesso direto à memórial
Memória
Buscar instruções e dados
Dispositivo de EIs
Iniciar transferência de dados
Co-procossador
CPU que passa Instruções para o ~processador
Co-processador CPU
..
------------------........,"""" ,
Exemplo
"""
"" "
" ,
Co-processador que busca operandO! na CPU
..
"
.. . .
Assim como UIl1:l CPU, um barramento lambém (em linhas de cndcrel(Q, de dados e de controle. Contudo. não há necessariamente um mapeamento um pam um entre os pinos da cru i! os sinais do barramento. Por exemplo, algumas CPUs têm três pinos que codilicam se ela est,í fazendo uma lcitura de memória. uma escrita na memória, uma kitur.l de EiS. uma escrita de EiS ou alguma outra opemç50. Um barr,unemo tfpico pode ter uma linha para leitura da memória, uma .'iCgunda pUr.! escrita na memória. uma tcrceirJ paro leitura de EIS. uma quarta pura escrita de EIS e as.~ im pur diante. Ne'lsc caso seria n.:cessoírio um chi p decodificador entre a C PU e o bamunento par.J. compatibili7..ur os dois ladt}s. ism é, converter o sinal de J bits coditicado em si nai s scparJdos que podem coman _ dar as linhu.~ do barramento. Projeto e opcrJç50 de barrJmcnto são qut:Stões de l:lInan ha complexidade que há inúmeros livros e.~criloS apenas sobre eI;lS (Andcrson el ai .• 2004: Solari e WilIsc, 2()().4). Os principais tópicos do projeto de barr.unento s.ão largura de barramento. relógio de barramento. arbitrJgem de barr.J.mento e opemções de barrarTk!nto. C3da om desses tópicos tem imp3clo substancial sobre a velocidade e li larguru de h,lIlda do barrJffienlO. Agor:J. c:xaminaremos cada um deles nali qUllt.m .seções seguintes.
A largur.i tio barr.uncnlo ê o parâmetro de projeto IllSc!S fatores encarecem n barramenlo e por causa disso há um compromisso enlre tamanho máximo de memória e custo do sistema, Um sistema com barmmento de endereço de 64 linhas e 23: hytes de memória cuslará mais do que um sistemtrá compatível. Plaças antigas projetadas para. os barrJmentos m:us lentos. não func ionarJo com o novo barr•.lmento. Invalidar as placas antigas descontentar.í n50 somcnte os proprieúrios dessas placas. mas também os fabrican tes. Por conseguinte, a técnica que t:ostuma >\Cr admada parn mdhor.1ro desempenho é adit:ionar milis linhas de díldos. de romla análoga à Figunl 3.34. Todavia. como era de esperar, esse crescimento incrcmelllal não leva a um projeto limpo. O IBM PC e seus sucessures. por exemplo. passaram de oito linhas de dadl1li pam I(l e em seguida para 32. conservando praticamente 11 mesmo barramentu. Par.! contornar o probkma de barramentos mui10 largoo;. ;L~ veze:. U~ prujcuslas oplam por um barr.uncn to mulLiplcxadn. :-.1c~sc proJt!lo. o!m VCI. Jt! ,l' linhas UC endt!n:ços c dados ....crem :.cpar.tda:.. 1111. por exemplo. 32 linhas para cndcre!jos e dados juntos. No início Je Lima oper.tção de barrJrI1cnto as linhas sãu usadas pam t) cnden:,o. Endef~ do 20 bits Erldef~de 20 btts
v
.vi
Endereço de 20 bks
Co"'''''
ConTrole
Crescimento de um barramento de endereço ao longo do tempo.
80286 EndenJçO de 4 bíI$
Endereço do 4 bits
"""
ç."""""
Endereço De 8 bits ConTrole
,.)
O
"> ~
o
3.4.3 Largura do barramento
FI•• r.3.34
'"
eonlfOle
(O)
'o,
~
•
"
...
-
o
••
Mais tarde. são usadas para dados. Para unia c-~ rit;J. na memória, por exemplo. issu <;ignifica que a.'i linhas de cncJc· Teço devem ser éSlabelecidas c propagadas pum a memória an tes que os dados possam ser ,:olocados no bamul1cn· la. Com linhas scparJd:ls. cnucn::t;os c dados podem ser colocados j untos. Multiplcxar as linhas reduz :l larg urn (c o CUSIO) do harr.!mcnto, mas resulta em um sistema mais lento. Quando tomam SUtl.S decisõcs, os projetistas de r.1fficnlO têm de pesar c uidadosamente todas essas opções.
rnu-.
N
o
~
,• ~
8
o u
• • ,• ,
~
~
•
.• ~
o
~
N
C
•
~
o
3.4.4 Relógio do barramento Barr.mlcnlos podem
~cr
dividiJos em duas categorias distintas dependendo de Seu relógio. Um barramento
síncrnno tem ulTla linha comandada por um osci lador de cristul. O sinal ncsS
Barramentos sincronos Como exemplo do funcionamento de um OOrrJ.mento síncrono. considere o diagrama tcmpomJ da FigurJ. 3.35('.1). Nesse exemplo usaremos um relógio de 100 MHZ, que d.1 um dclo de barramento de 10 nanossegundos. Embora isso possa parecer um tanto lento em comparnçilo com velocidades de CPU de 3 GHz ou mais, poucos bar· rJ.mcntos de Pc.~ existentes ~ão muito mais rápidos. Por exemplo, o popular barr.lInento PCI usualmente fundona a 33 MHz ou 66 MHI.. As rJ.zi)es por que os barramentos atuais são lentos fo mrn dada.~ anteriormente: problemas técnicos de projeto. como al.r.lso diferencial de barramento e nccessidade de compatibilidade. Em nosso exemplo admi tire mos ainda mais que ler da memória leva 15 nanossegundos a panir do instante em que o endereço est:i estável. Como veremos em breve. com esses parâmetros. Icr uma palavra levará três ciclos de barramento. O primdro ciclo começa na borda asce ndente de TI e o tereeiro termina na borda aSl..'endcnte de T", como nlQstra a figurJ . Observe que nenhuma das borda.~ ascendentes ou descendentes foi desenhada na linha veni eal porque nen hum sinal clétri.;n pode trocar seu valor em tempo zero. Nesse excmplo admitiremos que leva I nanosscgundo para o sinal mudar. As linhas de relógio. ADORESS. DATA, ~. ~ e WAiT. estão todas representada.~ na mesma cs.;alll de tempo. O inído de T I é definido pela borda ascendente do relógio. A meio caminho de T I a CPU coloca o endereço da palavra que ela quer na linha de e ndereço. Corno o endereço não é um valor único. como o relógio. não pode· mos mostrá-lo como uma linha única na figurJ. - por isso ele é mostrado como duas linhas que se cru7.am no inslante em que o endereço muda. AJem disso. a :irea sombre!lda antes do cruzamento indica que o valor nessa :ire:!. não é imponantc. Usando essa mes ma convenção. vemos que o conteúdo das linha.... de dados não é signi ficativo até u ma boa porção de T J' Depois que as linhas de endereço tiverem uma chanee de se acomodar a seus novos valores. MAEõ e Ãl:i são auvados. O primeiro indi.;a que ~ a memória - e não um dispositivo de FJS - que está sendo acessada e o segun· do é ativado (valor O) parJ lcituras c m:gado (valor I) para escritas. Uma vez que a memória Icva 15 nanossegundos após o endereço estar está vel (a meio caminho no primeiro ciclo de relógio). clll não pot.Ie entregar os dndos req uisitados durante 1'2' Para dizer à CPU que nuo os espere. a memória a.~segura 11 linha WAIT no inicio de Tz. Essa ação inserirá ~ tados de cspcrn (cidos extras de barramento) até que a memória eonclua e desative WAIT. Em nosso exemplo foi inserido um estado de e.~perJ (TV porque a memória é muito lenta. No início de T), quando ~su1 certa de que terá o.~ d!ldos durante o ciclo corrente. a memória nega WAif. Durante u primeiro metade de T), a memória coloc
- - - - - - - - - ............... ....... ... .
Ciclo de leitura
.1; ~'"--+--1 ~-'TOO-l-ri-
TIIr-_.,...._-=E=_ ;::.:=~=m:;.m:~:=":.:.:.:-:::.:'=,,"" ___X _;---i__;-__---'___-,___...,._T""' ~ I~'- ... I OAoos11 • XX , i I I ll~
ENOEReçO
'"O ~
•
J
Dado.
I I
f-T~
I
1--1
la) 'Te mporização de leitura em um barramento
I
sincrono. (b) EspecttlcaçAo de alguns tempos criticos.
I
F
Hgat'3 3.3!1
I
I I
I
I I
~
I Tempo -
-
""'''''"''
AIrISo de saida do endereço
r~
Endereço e$ljvlllent.. de ~
T.
Atraso 00 ~ de1K!e li ooráa descendente
r~
Atms.o de AO desde li borda desceOOGrIlII de 41 em T1
I I I
2
r~
rempo ele lJUSta dOa dadas antas da bofda delCendenUl de
r~
AIra$O de ~ desdi! li boI'da descenaeme de 41 em T:I
r~
Atraso de Im desde. borda d
r~
Tempo de suslerllaçio dos aaóos desde li
1det'18 ÓII
(b)
As Iimil:u;ucs imposIa,s a T Mto! TlU.
,, , , I
~ ignilicam
2
.,.. ,, , ,
em T3
do'"
'"o
I
r~
MI~
r~
•>
I
1--.1'
(.)
s.......
I
Fr.,t
Q
M
,o
u_ "~
-~~
--
que ambo:;, 'M"R'Eã e imo scr..10 ativados dcnltO de 3 nanasse-
gundn.. a partir da borda descendente T I do relógio. No pior caso. o chip de memória lerá ~omcntc lO + 10 - 3 - 2 = 15 nanosscgundos após a asserçào de MREQ c FlD paro levar seus dados até o barramcllIo. Essa limitação é adidanai ao (c imJcpcndcnlc do) intervalo de 15 nanosscgundos necessário após o enden.'1fo estar estável. T Mil e T,w infonnam quanto tcmpo leva para 'M'REõ e RO serem negados após a leitura dos dados. Por tim. T 0 11 infonna por quanto tempo a memória deve sustentar os dados no barr..tmento após a negação de An. No que diz res peito a nosso exemplo de cr u, a Illcmôria pode re mover os dados do rnJrrumcnlO tão logo m:i lenha siuo negado: em 1Ilgumas CPUs modcmus. contudo. os dados devem ser conservudos cst:ivcis dura nte um pouco mais de tempo. Gosl!llÍamo!l de des tacar que a Figura 3.35 é uma versão muito si mplilicadu das restriçõcs reais de tempo. Na realidade. sempre são especi lkados muitos mais tempos crilicos. Ainda assim. ela nos dá uma boa idêia do modo de funcionamento de um barr.unentu síncrono. Uma última coisa l[uc vale a pena mencionar é que sinais de controle podem ser ativados baiJtos ou altos. Cabe aos projetistas do \)arramelllCl determi nar () que J m
Barramentos assíncronos EmtJu•..! scJa ·fáciltr..tbalhar com barr.1ml!nlos síncronos por causa de scus intervalos di!iCf"Ctos de tempo. eles também têlll alguns problemas. Por ~xt:lllplo. tudo fu nciuna como Olultiplos do relógio do barramento. Ainda que C PU e memória pu~sam concluir lima tr..msferênda em 3.1 ciclos. elas ter,io de prolongar o ciclo :lté 4.0 porque ciclos fr..tdo nárins são proibidos. Pior aindil. uma vez esculhido j) elcl" do barramento c construídas placa.~ de memóri:.l e EiS p"'J. de. é difíci l :lproveitar futuros aV:.lnços da tecnologia. Por exemplo. suponhll qUI: alguns anos :.lp6s a constru.;:1o do sistema d;!. Figu•..! 3.35 5Cjam lançadas novas mcmôria.'i com tempos de acesso de 8 nanossegundos em vez de 15 naoossegundos. que c1iminam o cstadn de espcr:l c dão mais velocidude à múqulIlil. Então 1>uponha que 'iCjam lanç:ldns memória... de 4 nanosscgundos. Não haveria nenhum g:lIlho adicional de desempenho porque. com esse projeto. tl tempo míni mo par:l lima leilU'J J dois ciclos. Exprimi ndo esses falOS em termos ligeiramente diferentes. se um burramentu síncrono tivt,!r uma coleção hete rogê nea de dispositivos. alguns r.ípidtls. alguns lentos. I) barmmcmo te m de ser ajustado par.! o mais lento. c os mais r:ípidos não podem U1W.r todo o seu potcncial.
•
"
ct>
o
··• • o
~
,
AODAESS
figura 3.36 Operação de um
barramento assinctono
~
1.
Endereço oe mem6na iI Sf!f lidQ
MREa=~=:;\~==:=~=========1~=;'/== RO
MSVN
~
E o u
DATA
•
SSYN
\~
__________-p r/
1'1;
~
• ,•
~
·, •
~
o ~ ~
•
"c •b> o
Pude-se utilizar tecnologia mista passando parJ. um barramento assíncrono, isto ~, qUI! não Lenha um relógio mestre. como mostr..1 a FigUiol 3.36. Em vez de vincular tudo ao relógio. 4uandn o IIlc~lrc de tmnsfcrenda de dados Liver ativado o cndcrcc,:o. ~. RO e ludo o mais que precisa. em seguida assegur.J um sinal t!Spt.."Cial que denominaremos MSYN (Maslcr SYNchronization). Quando o I!scr.Jvu vê esse sinal. realiza u trabalho com n maior rapidez que puder c, ao concl uir essa fase. luva SSYfij (S lav~ SYNchronizàtion). Assim que o mestre perceber SSYN ativado. cle 'Iabc 4UC os dados estão disponfveis. ponanto ele os scriali7..a c cntlio di!SlIliva as linhas de endereço, junto com MAm. ~ c MSYN . Quando o I!scmvo pcn.."t.-OC a negação de MSYN , sabe que o ciclo roi concluído, pt>nanlo nega SSVN. I: voltamos à situação origin:ll, com toJos os sinais negados, espemndo pelo próximo me~trc. Diagmmas tl.!mpor.tis lll! barramentos assíncronos (I: às ve7,cs também os de barr,llm:t1Ios síncronos) usam setas pam mO!>lr.lr causa e efeito, como na Figur:.1 3.36. A ativ;\çllo de MSYJiJ faz com que as linhas de dados sejam ativadas e também faz com que o I!scravo ative gy;:;j, A ativação de ~, flOr sua vez, causa a nl!gação das linhas de endereço,~. AOI! MSYN. Por tim. a negação de ~causa a negação de ~,que conclui a leitura e retorna o sistema a seu eslado original. Um conjunto de sinais que SI! interligam dessa maneira ~ denomin:Jdo operaÇio completa. A parte I!sseneial consiste em quatro eventos: I. M"SYN ~ alivado. 2. ~ é ativado em resposta a MSm. 3. MSYfij é negado em re.~posta a SSYN. 4 . ~ é negado em resposta li negação de MSYN.
Ê preciso que lique claro que opcr.lç6cs completas são independentes de temporização. Cada evento é causado por um evento amerior e n:io por um pulso de relógio. Se delenninado par mestre-cscr.lVO for lento. não afetará. de modo algum. um par mestre-c.'>Cf'.lVO subseqüente. qUI! é muito mais rápido. Agom. a vantagem de um barmmenlo assíncrono já deve est:lr bem claro. mas a verd:.dt: c que ti maioria dos barramentos I! síncrona, A r:lzão é que é mais fácil constnlir um sisH:m:\ sfncrono. A CPU apenns ativa seus sinais c a memória apenas reage. Não há rcalimcnruç:1o (causa c efeito) mas. se os compollemes foram escolhidos adequadameme, tudo runeionarj sem dependência. Além "'isso. há muito di nheiro investido na tccnologia do barr:unenlO
síncrono.
3A.5 Arbitragem de barramento Até aqui ricou subentendido qUI! ha ~o.)me me um mestre de transferência de dados. a CPU.
Na realidade. ehips de EiS têm de 'iC tomar mestres de trollsferencia de dados par.l ler c c...crcvcr na rnem6ria e t:lmbém para causar inll!mlpçlk:-.. Co-proce
,...
-
O
A_
"""""'"
de tlarrtlml!lnlo •
"""""'" .---
de barmmonto pode . r ou não propagada ao longo da C
Figura 3.37 (a) Arbitro de barramen-
10 centtalizado de um
mento em série (dais)' ruNclusandoencadeachaining).
I
.... _/ 1
I I
I I
I I
','
','
','
2
3
•
-.l
,
DISpOSitivo!> (Ia EIS
("
r::::l=~~~~~~~~~~~~~==~lf~==~~~====~~====~r=: Arbitro
•>
'"o (bl
• Esse esquema é denominado cllc::ulcamcnto em série (daiçy chaitling). Ele tem 11 propriedade de designar prioridadc!i aos dispositivos dependendo da diMância elll1\!. dcs c o árbitro. O que t:Sliver mais próxImo vence. Para contornar as prioridades implfcitas basc:tda.... na dislilncia em rclaç:1o ao árbitro. muilOs barr.lJl\CIIIOS 113m vinos nivcis de prioridade. l':lra cad.'l nivd de prioridade há uma linha dc requisição de barr:um!nto c uma linha de concessão de lmrmmcnlo. O barmlncnto da Fi gura 3.J7(b) tem dois nivds. 1 c:2 (barrarncn!os reais costumam Icr 4,8 ou [6 níveis), CJda dispositivo c...tá ligado a um dos níveis de requisição do barramento. sendo que os mais cn'tico~ em rc!;lç:1o ao tempo t.:stão ligados aos níveis de prioridade m:l.i.s altas. Na Figur.l. J.37(b) os dhposiLivos 1,2 e 4 usam prioridaili! 1, enquanto os dLsposiLivos 3 c 5 usam prioridade 2. St.: vários níveis de prioridade são requisitad()!; ao mesmo tempo. o árbitro emite uma concessão somente ao de prioridade mais alta. Entre os dispositivos da mesma prioridade é usado o encadeamento em série. Na Figura 3.37(b). se ocorrer algum conllilO. o dispositivo 2 vence o dispositivo 4. que vence o 3. O dispositivo 5 tem a menor prioridade porque e!:>l:i no tinal da linha de enc:lde:l.mento de menor prioridade. A propósittl. tccnic.amenlc não t! nL'Ce...",1rio ligar a linha de concessão de bamunento de nível 2 em série passando pelos dispositivos I e 2. uma vel'. que eles n:1o podem fazer rcc.tuisiçõcs nessa linha. Contudo. por conveniênei:l. de implementação. é llI:lis rácilligar todas as linhas de concessão passando por todos os di~po,iuvos. em vcz de razer ligaçõcs cspeelais que dependem da prioridade de cada dispositivo. Alguns árbitros têm uma lcrccirn linha que um dispositivo ativa quando lICeit:! uma cuncl!.Ssão e pcgn o barrumento. Tão logo tenha ativ<1do eSS<1 linha de reconhecimento. as linhas de requisição e concessão podem ser negadas. O resultado é que outros dispositivos podem requisil:l.r o barramento enquanto o primeiro dispositivo o estiver usando. No im;tanle em que a lronsferência em questão ror concluída. o próximo mestre de lr.J.llsrcrencia de dados j;í ter.i sido selecionado. Ele pode começar logo que a linha de recullhl.'Cimento lenha sitio negada. qUlUldo então pode ser iniciada a próxima rodada de arbitragem. Esse esquema requcr uma linha de barr.unento extra e mais l6gica em eatla dispositivo. mas faz melhor uso de ciclos de balTulllento. Em sistemas em que a memória está no llarrJ.menlO principal. a CPU deve \:om petir pelo barrnmento com todos l}~ dispositivos de EIS -: 111 prJlicamente rodos os ciclos. Uma sulultão comum parJ t:s .. a situ:l\(:iu é d:lr il CPU a prioridade mais buix:l.. de mooo 4UC ela obl.t.:lIl u barr.uncnto somente quando nmguém m:li~ o quiser. :"'Jcsse t.:osiuvos. O iníciO JCSs:l cadela é ativaJo )igando-u a uma fonte de ene!"Jla de 5 volts.
um
--
co
-
o
•
•"
~ ,,~m
Ruura 3.38 ArbItragem de barramento
descentralizada.
o
·':7
uma"
""".,..,
~
~
• • •,
~
~
,
•
w
o ~ ~
•• •= ~
"
O
j
nl ~
~" = , .'
~ ',j m 1
,•
E o u
~.
2
Bwly (Ocup!l
~
'm
II ~,
,~
E" -/ ~
w 3
II II l ,~
~ I!\
<:
'4'
/I)
1 ~
:il
5
~
Quando nenhum dispositivo quiser () bllrramcnlO. a linha de arbitragem alivlllll.l ~ propagada por todos o.~ dispositivos. Par..l adquirir o barr..llllcnlo. um dispositivo primeiro veri tk:l par'.l ver se () oorr:lrncmo está ocioso c se () lilllal de .rrbitrJ.gcm que e:.l:i n:ccbcndo. IN (ENTRADA), está ativado. Se LN (ENTRADA) estiver negado, o disposi\ivo em tlucstão não pode ~e ({)muru mestre de transfcrencill de dados I! o sinal OUT (SAÍDA) ê negado. Entretanto, se IN fur ativado, u dispositivo nt!g:l oLiT, o que faz com que seu vizinho seguinte na cadeia veja IN negado c negue seu próprio OUT. Daí. Iodo os dispositivos depois dele na cadeia v!:crn IN nC8ildo e. por s ua vey.. neganl OUT. Quando \l processo tcm1inar. somente um dispositivn tcd IN ativado e OUT negado. c é elc 4ue se toma o mestre de tmnsferênda de dados. ativa BUSY e OUT e inicia sua tt'.msfcrenciu. Um pouco de r.lciocfnio revcltu'á que () dispositivo mais ~ esquerda que quiser o balT'J.menlU t) obtém. Assim. c~se esquema é si milar à :uhilragern original por cncadc:unenlo em serie, com :l e:\ceção de nilo tcr tl ~rbitro. Por is.~o é mais bamto. mais r.ípido c não está sujeito à falha de árbitro.
3.4.6 Operações de barramento Até agorJ.. discutimos apenas ciclos de barramentos comuns. com um mesl..tt (normalmente a CrU) lendo de um escravo ou escrevendo (Xlm eh: (nonnalmcnte a memória). Na verdade. ellistem vários outros tipos de ciclos de balT'J.mento. Em seguida vamos estudar alguns deles. Normalmente '>1.1 uma palavra é tr.msferida por ve7.. Contudo. quando é usado caching, é desejável buscar uma linha imcirn de cache (por exemplo. 16 palavras dc 32 bits eonsccutiv::L") por vcz. Transferências de blocos costumam $Cr mais eficicntes do que transfcrencias individuais sucessi vas. Quando uma lciturn de bloco é iniciada. o mestre de transferência de dados infonna 30 escr,lVO quanlaS palavras ser:1o transferidas. por exemplo. colocnndo o número de palavr.1.~ nas linhas de dados durame TI_ Em vez de retomar apenas uma palavrJ.. o escr.lvo entreg:\ uma palavra durante cada ciclo alé csgotur aquele número de palavrJ.s. A Figura 3.39 mostra uma vcn>ào modificada da Figura 3.35(a), mas agom com um sinal extm. BLOCK . que I! ativado para indicar que roi requisitada uma tr.J.llsfcrencia de bloco. Nesse Ci':Cml>lo. uma leilUrJ. de bloco de 4 palavras dcmorn 6 ciclos cm ver. de 12. Há também outros tipos de ciclos de barramento_ Por ei':emplo, em um sistema multiproccssador com dua.~ ou mais CPUs no mcsmo barr.uncnlO. muitas ve/.o.:s é nCCl!Ss:irio garantir que só uma CPU por veí'. use alguma CSlrutura de dados critica na mcntt'kia. Um modo trpico dc organizar isso é ter uma variável na memória que é () qu:mdo nenhuma CPU estiver usando a estrutura de dados c I quando cst:J estiver em uso. Se uma CPU quiser obter :lcesso à eSlrutum de dados. deve ler a variávcl. e. se !!Sta for O, passá-Ia para I. O problema é que. com um ptlUI.'-O de má sorte. duas CPUs podem ler a variável em ciclos de barrJ.mento consecutivos. Se cada uma perceber que a variáve l é O. então cada urna passa a variável para I c acha que é a única CPU que está usando a eSlruturJ de dados. Essa s..:qü~ncin de eventos leva ao caos. P-J.r..l evitar t:s~a situação. sistemas multiprocessadorcs costumam tcr um ciclo de harramento especialler-modilicar·cscrcver que pem1ite a qualquer c r u ler uma palavra da memória, inspecionar e modificar essa palavra. e escrevê-Ia novamente na memória. tudo sem liberar o barramento. Esse tipo de ciclo evita que ullVl CPU rival poss;! usar o barramento e assim inlerfcri r com a tlpcr.lÇ:ill da primdra CPU.
" ENDEREÇO
""OOS
Count
n •• ra3.39
'l'ransferimcia de bloco.
MREã ÃÕ
WAiT êLõCK
. .. . . . . . . . . . . . . . . . . . . . . .. . 11111111 111 11
I I 11 11 11 I I I 11.'···· , • •
\I
1"INTA
naara 3..40
CPU
Unl1znção do controlador de interrupção 82S9A.
AO WA
Controlador
AO
iI'Iterrt."ç40 8259A
C;;
"
IJO.07
IAQ IA1 1A2 IA 3 - IA' - IAS
,''''--
IA7
<:)ReI6g10
r.
Ã
Teclado
-
'" O
E:J Disco
•
8
=
Impressora
"o u
.5 ,
I.
Um outro tipo imponuntc dI! ciclo de barramento é o usado para manipu lar interrupções. Quando ort.kna que um dispositivo de EiS faça algo. u CPU nonnalmenle espera uma interrupção quando o tr.malho for conc!ufdo. A smalil.ação da imerrupçào requer o brur,lI11elllo. Uma vez que vários dispositivos podem querer causar uma imcrrupção si multaneamente. os mesmos tipos de problemas de arbitragem que tivemos nos ciclos de barr.unenlo eomuns também eslão presentes aqui. A soluç:io usual é atribui r priondades a dispositi vos e usar um árbitro ccntraliZldo para dar prioridade aos dispositivos mais criticos em relação ao tempo. Existem chips contro ladores de interrupção padronií'.:ldos que sIlo muilO usados. O fiM PC e tooos os seus sucessores usam o ehip Intel 8259A. iluslr.ldo na Figura 3.40. Até oito chips controladores de EIS podem ser conectados direl:lmente às oito entroldas IRx (Intcrropt Request) do S259A. Qu!mdo quaisquer dc.'iscS dispositivos quiser causar uma interrupç:io. de ativa s ua linha de enlraUa. Quando uma ou m.ais e ntrold:l.~ são ativada.'l. o 8259A ativa INT (L'ITerrupç50), que aciona diretamente o pino de inter· rupç:lo nn CPU. Quando a CPU puder mani pular a inlenupção. ela devolve o pulso ao 8259A por INTA (INTerrupt Acknow!cdge - recon hecimento de interrupção). Nesse ponto o 8259A deve especificar qual entrada causou a inter· ru pçào passando o núméro daquela t:ntrolda para {} bamlmento de dados. Essa opernção requer um ciclo de barramen· to especial. Ent:lo I) hardware da CP U usa esse número para indexar em uma tabela de ponteiros. denominados veto. rcs de interru»fo;:iu. para achar o endereço do procedimento a executar para atender à imerrupçào. No imerior do 8259A hã divcl1ios registradures que a C PU pode ler e t!screver usando cieJos de barramento comuns e os pinos AD (ReaD), WR (WRife). CS (Chip Sclcct), e AO . Quando o soft ware concluir a manipula· .,::io da interrupção e esti v~r pronto para atender à segui nte. escreve um código especial em um dos rcgistr.ldores. que faz com que o 8259A negue INT, a menos que haja outr.l interrupção pcndellle. Esses regislr.ldorcs também podem ser escri tos par".! colocar o 8259A em um de vários modos. mu.~earar um conjunto de i nterrupçõc.~ e habili!:1I' outras caructensticas. Quando mais de ui to dis positivos de EIS estiverem presentes. o 8259As pode funcionar em cascaLa. No caso mais extremo. tudas a.~ oito entradas podem ser conectadas às sardas de mais oito 8259As, pcrmilindo até 64 dispo~ it i vos de EIS em uma rcde de intl!mJpção de doi s estágios. O 8259A tcm alguns pinos dedicados a essa operação I!m cascata. quc omitimos por questiio dc simplicidade. Embom não tcnhamos nem de peno esgotado a ques tão do projeto de b:lfr.lmento. o material que apresentamos aré aq ui deve oferecer fundamento .~u(jciente p:U'U cntem.ler os aspectos essenciais du modo de funcionamento de um barramento e da interação entre CPUs e brurolmentos. Agora vamos passar do gemI parn o cspcdlico e exa· minar algu ns t:xe mplos de C PUs reais c seus barramentos.
3.5
Exemplo de chips de CPUs
Nesta hardware.
sc~50
vamos eX:Lminar eom algum de talhe os chips Pcntium 4. UhrolSPARC 111 e 8051 no nível de
3.5.1 O Pentium 4
o Pcntium .t é um descendente direto d:1 CPU 80MS usada no IBM PC onginal. O primeiro Pemium 4 foi lan~ado
em nl.lvembro de 2lKJO cmll\l uma CPU de 42 milhõcs de transistores que funcionava em 1.5 GH7. com urna I:ugurol de linha de 0.18 míeron. Largura da linha quer d izer a largurn do~ lios entre tl"olnsistorc:l. bem como é uma medida do tamanho dos pr6prios transistnre.'i. Quanto menor a I:JrgUr:l da linha. mais ImnsisLOrcs podem caber nll ch ip. No fu ndo. a lei de Moore se refcre à capacidade de os engenheiros de processo com inuarcm a reduzir as lar,guras tias linhas. Larguras menores também permitem vclocitlade.'i de rcl6gio mais altas. Como termo de compar.lç:iu. os lios de cabelo humano licam nil faixa de 20 a 100 micm de diâmetro. ~endo o cabelo lOiro mais tino do que \) preto. No decurso dos tres anos seguintes. â medida que ganhava expt:ri€tlcia no processo de manufatura. a Intel evoluiu parol 55 mi lhões de transistores que funCIOnavam a velocidades de até 3.2 GHz com larguras de linha de 0.09 nícrnn. Emhora esteja a anos-l uz do 80RR de 29 mi l ll".lnsisttlres. o PentiUIll " é lotaI mente compalível ..:om o 8088 e pude executar pmgrolmas binários 8088 sem modificaçõcs {scm mencionar os progl"olmilS pam todos os processa· dores intcnnediánosl.
j ...
-
•> z o
M
o
=
-
o
••
o"
~
• •
~
s o
"•
~
•
~
•
•
..• ~
o
~
"c •m
o"
Do ponto de VISta de software. o PentiulU " I! uma mâquinil completa de 32 bits. Tem todas as mesmas Car.lCIcrislIcas ISA de nfvel de usu.'lno ljue os chips 80386. S04H6. Pcntium, Pcntium 11. Pcmium Pro c Pcntium 111 , c ~m~m os mcsmo~ regil>lr.Idores. :1S mCl>mas i n.~ lruljões lo! uma implementação compreIupona hipcnhreading. Essa lillima ear..tctcristica prove dois conjuntos de rcgistradorc.'I e alguns out.ros recursos internos que pennitem que o Pcmium 4 pa.'Ise dc um programa par..t um outrn com muita mpidcz. como se o computador contivcsse duas CPUs ffsicas. Examinarelllos a miel'O:.rrqtlitetur..t no Capítulo 4. Emretamu. assim como seus antecessores. o Pemium 4 pode executar várias illstru~ões ao mesmo tempo. o 4ue I) toma uma rn:\quina superesealar. Alguns modelos do Penlium 4 têm cache de dois nfve i .~ e alguns de tri!s níveis. Todos os modelos têm no ehip uma cache SRAM de II KB de nível I (LI ). Diferente da cache LI do Pentium 111 . que apenas armazena bytes brutos vindos da memoria, I) Pentium 4 dá um passo à frente. Quando as instruçôcs s:10 buscadas na memória. elas s:i.o convcnidas em microopcr..tçõcs para execução no núcleo RISC do Pentium 4. A eache LI do Pentium 4 annaLena até 12 mil microoperolções dl".'Codilic:luas. eliminando a nt."Ccssidade de dccodilid-Ias repetidas vezes. A eache de segundo nível arm:ucna até 256 KB de memória nos modelos mais antigos e até I MB de bytes nos mais novos. Nada é decodilieado: bylcs puros lia memória são annazenados na eache L2. Ela pode conter uma mistur..t de códigos e dados. O I'entium -lo Extreme Edition também tem uma cache nfvcl 3 de 2 MB para elevar ainda mais o desempenho. Visto que lodos os chips Pentium 4 1Í! !l1 no mínimo dois níveis de cache. surge um problema em um sistema multiprocessador quando uma CPU modificou a paJuvr:t em sua eache. Se lima outrJ CPU tentar ler aquela palavra da memória. obterá UIlI valor ultrapassado. já que palavras de cache modificadas não ~:10 escritas de volta nu memória imediatamente. Par..t manter a consistência da memória. cada CPU em um sistema microprocessador esculn (S II OOpS) o barramelllo de memória em busca de: rererências de palavras que tenham em cache. Quando vê uma dessas n: ferências. ela se apressa e:m foml.."Ccr os dado.~ req uisitados antes que: a memória tenha ehance de faze ·lo. Estudaremos ese:uta (.m()llp;lIg) no C;tpituJo tt Nos sistcmas Pentium 4 s;1o us:u..Ios doi:. barramentos pri mários e:xtemos. ambos síncronos. O barr.lmento de memória é uso.tdo par..t acessar a (S)ORAM principal: o barmmemo PCI é usado par..\ ralar com disposi tivos de EIS. As ve:1.t!s um b.. rmlllento herdado - isltl t!. t1migo - é ligudo ao barr.lJllento PCI para permitir a ligação de dispositi vos periféricos antigos. Uma di ferença subslUncinl entre o PC!lllUlll 4 C todo os seus :mteccssores é o t!ntpucolUmcnto. Um problema presente em todos os ehips moúemos é a cllt!rgiu que cUllsomcm e () calor que pnxJuzem. O Pelltium 4 consome entre 63 e 82 w:ltl'l dependendo da freqüência. Por eonscqUência. ti Intel est.1 .'iCmpre buscando novas maneir..ts de gerenciar o calor produl.ido pelos chips de CPUs. O PentiuIIl4 vem em um pacote de 35 nun dt! lado e contém 478 pinos na pane inrerior. 85 dos quais são pura cnergia e: 180 !>lo aterr..tdos parn rOOuzir rufdo. (); pinru; são ocganiz.aoos como um quadr..tdo de: :26 X :2/1 !'>C nt nada na pane dUll1citl (14 X 14). Também raltam dois pinos em um dos camos par..t impedir a incorre!:t inscnrào do chip cm seu ... uquefe. A disposiç:io fís ie:1dos pinos t nlUstrada na Figur..t JA I. O clup est:í equipado com um ~up()n e de montagem para um dissipador de calor que distribui o calor e um vcnd l:tdor que rc~rn:..t n chip. P:lr..t ler uma 1deia du pmhlcllla. ligue UIIIU lâmpada de nO w:uts. deixe que da csqucnh': e cinJo punha "'Ua!> 11I;l1l~ ..tO redor Jela 1111:il> não ..t 1{ltlue). Uma qUUJlItdadc de caiU\' e:quivalcnte a c.~sa Jevl.! ...cf d i ~sip:.lda cunt uULlIlI1ente. Por conseqüência. qu:uulu acahar a utilidade de UlII Penlium 4 como CPU . ~empre pode· remos ulili/Ü-Iu elllllll fugarcirn de acampamcntt}.
n ••ra 3A1
Dispos'lção fiSlca dos pino! no P1lnuum 4.
=="'------ ~
-
-
-
- - - - - - -- - - - . . . . . . . . . . . . "
I I "
, I "
"
, • ••
De acordo com as leis da ffsica. qualquer coisa que emita muito calor deve absorver muita energia. Não é inte. reSSM tc uS
Pinagem lógica do Pentium 4 Os 478 pinos do Penliull1.( são usados para 198 sinais. 85 cone:
fl.ura 3A2
erro
lOCK.
aRO. AO
JI
AO,,"
"
"
REa.
,
Otvorsoa
,
~
CPU
RS. A~.\a
Nomes em malllsculas e mmusculas são grupoa de sinais relllclonados ou descrições de sinais.
,
PandadN
Pinngcm lógica do Pennum 4. Nomes em leuas
maiÚSC'Ulas do os nomes OfiClaL9 usados pela lmel para sinrus individluús.
Dados
" O
M
C
• O-
•
U
BPAIt - - . , - - - - - ,
Atbillagem { ele barramenlo
Aequ~o
•>
Pentium"
2
_
AESETI Interrupç6es GeronCiamcnlO de energ.. Garanclamen\fl de caklr FreqQ60cIa
de relOglO
TROV' PanCl8ua.
1 I I
~
aNR. O. ORDV. DasV.
Pand&de.
. Diversoe
.
...::...- ESQJt.a
• "
7
1 I
Energia
•
As ClIlCO linhas de cm)s são usadas para infonnar erros de ponto !lutUUIlIC. erros internos c erros de veritica· çào de máquina - isto é, hardware - e alguns outros erros. O grupo Rcsponsc contêm sinais usados pelo cscrJ.vo parJ devolver infonnaç6cs ao mestre. AS# contém o código de estado. TRQV# indica que o escravo (o alvo) está pronto par.! aceitar dados do mestre. Esses sinais também têm sua paridade vcritic:lda. BNR# é U!Õl.3.do par.l solicitar um estado de espera quando o alvo endereçado não
o
pode responder a tempo.
N
-••
~
,
~
eo
u
•
~
• ,•
-
~
,
•
~
o ~ ~
• "o •
~
o
O últimu grupo de barr;1mento é par... :I transferência de dados propriamente dita. D# é usado para colocar S hytcs de dados no barramento. Quando são colocados ali. DROV" é ativado par.! anunciar que eles estão presentes. OBSY# é usado parJ infannar ao mundo que o barramento está ocupado nu momento em qucstão. Aqui também é usada a paridade para vcriticar dados. Os sinais diversos lidam com amOSlrngem de valores e coisas semelhantes. RESETIt é usado pam reiniciar a CPU no evento de uma c:llamir.l:.lde nu quando o usuário apertar a tecla 'rcset' no painel do PC. O Pentium 4 (Xxle ser confi gurado para usar inh':rrupçõcs do mesmo modo que o 8088 (para finalidade de compatibilitfudc) ou também pode usar um novo sistema de interrupção que util i7.;l um dispositivo denominado APIC (Arlv~nced
l'rogr-oImmllhle Illlerrupt Controller - cOlltroludur de interrupção programável ava nçado).
O Pentlum 4 pode funcionar em quaisquer de várias tensocs prer.lelinidus. nlaS tem de sa~r qual delas. Os sinais de gercnciamellhl de energia são usados pura seleção automútica de tensão da fonle de energia. parJ info mlar à CPU que a energia está estável e outros assumos relucionados com a energia. O gerenciamento dos vários estados de sono também é fei to aqu i. uma vez que o sono acontece por razlks de gerenciamento de energia. A despeito de seu sofisticadn gerenciamento de energia. o Pentium 4 pode fiear muito quente. O grupo de Gerendal1lenlo de Calor trJ.ta do gerenciamento ténnico. permitindo 4ue a CPU indi4ue a seu ambiente que e:ôtá corrcnr.1o risco de :ôuperaquedrncnro. Um dos pinos I! ativado pela CPU caso s ua tempcraturJ. atinja 130 DC (266 QF). Se uma CPU algu ma vez se aquecer a essa te mper.ltur:.l. provavelmente estar:1 sonhando com sua aposentadoria e postcrior transformação em fogareiro de acampamento. O grupo Frcqilêneia de relógio tcm a ver com a determinação da fn.:qilênc ia do barr.unento de sistema. O grupo Di~nóslicos conlém sinais pam testar e depumr sistemas de ..cardo com o padrão de teste IEEE 1149.1 JTAG. O gru pô Iniciali/.lUfllo lrnta de inicialiLUr (dar partida ao) o sisl.ema. Por~, o grupo Diversos é uma coleção de sinais variados quc inclui um quc indica se o soquete da CPU está ocupado, um relaciunado à emulação de 8088 e outros sinais que têm várias linalidi.ldes especiais.
Paralelismo no barramento de memória do Pentium 4 CPUs modernas como o Penlium 4 são muito muis rápidas do que as mlX1cmas memórias ORAM. Para evitar que a CPU pcre'Ya por fa lta de dados. é essendal obter o máximo possível de rendime nto da memória. Por essa rJ.zào. o b:ur.unento de rncmôria do Pentium 4 tem alio grau de paraleli smo. eom ate: oito transações de barmmento ocorrendo ao mcsm\l tColllpo. Vimos o concei to de parJ.lelismo no Capftulo 2 no contexto de umn CPU com paralelismo (veju a FigurJ. 2.4). mas memórias também podem te r paralelismo. Para permiti r o paralelismo. as requisiçõcs à memória do PCllli ulll 4. deno mi nadas transaçik.'1. têm seis estágios: t_
2. 3. 4. S. 8.
A A A A A A
fase fase fase fase fase fase
de de de de de de
arbilr.lgem de barramento. requisição. notificação de erro. escuta, resposta, dados.
Nem todas as rases ~lio nl.:cessárias em toda.~ as tr.lnsaçiks. A fase de arbitragcm de harramento determina qual pntenci:li:- mestres de Irmsfcrencia de tfudlls enl r:1 em seguida. A f:L-.c de requisi'iãu permite que \l cndereçu 'iCja colucado nu barr.lTllell10 c lIue a reqUISição SCJa leua. A f;lsc de Ilou lic:urão de erro pcnnLle lIue o escrJ.vo anun!.:le que u endereço tinha UlTll!m) de paridade nu que .,Iguma nutm coisa estlÍ errallu. A fase de Cl>Cuta pennih! que uma CPU eseute uma nutr:l. n que ~6 !! n..."Ccss;.írio em 11111 s i ~t ema multipruccssador. Na f;ISC de resposta o mestre fi ca ~abcn do se est:í prestes 11 ohl.er os dados que que r. Por fi m. a fase de dados permite que os dados sejam enviados à CPU que os requisi tou. O segredo dI) barrJ.mento de memória com pamlelislllo do PenliUII1 4 ~ que !.:ada fase usa si nais de barramento dil'erellles. de modo qUI! cadu uma é completamente independent!! lia outm. Os sei~ grupos de sinais necc.~sários ~ão os mustr:l.dos na FigurJ. J.4:! à esquerda. Por cXl!mplo. uma CP U l)Ode tentarubter o barr.unentu usando os sinais de arbitragem. Urna vez adqUlriuo t) direito tlc I!l1tr.lr. ela libcm c.~sas linb:ls de barrJ.llIento e começa a usar as linhas do gOlflO Rt:quisiç:io. Enquanto isso, a Ulltr:l CPU uu algum di sposi livo de EiS ,>Ode enlrJ.f na fase de :lrbitnlgern de barralllCruo e assim pur úiame. A Figum 3.43 moslrJ \!OlOu várias transllçõcs de barr..tmento podem eslar ativas ao ml!smo tempo. Na FigurJ. 3.-13 li fase de :.trbitragclll de barramento não é mostrudll porque nem sempre ela é necessária. Por exemplo. se () proprietáriu do barramento no mUlIlento em 4ucslão (I'rcqüentcmenlC a Cr U) 4uiser exc!.:utar uma do~
--------------_ ..-........ , ". " ."" ..
"
-
M
Ciclo de barmmento
,
T,
" AtlUnI 3A3
Requisições com paralelismo no barramento de memôna
do Pentium 4.
""'2
,
•
• 7
•> z
,..
o
".
\
Qutra tr.msaç:Io. não iS preciso TCadquirir o burramento. Bastu solicitar o barmmcnto mais uma vez após passar a propriedade do barrnmcnlo pam outm dispositivo req ui sitante. As transat(ÕCs I c 2 são diretas: cinco fases em cinco ciclos de barramento. A transação 3 introduz uma fase de dados mais longa. por exemplo, por ser urna transferência de bloco ou porque .1 memória cndcrcç:uJn inscriu um estado de espera. Por conseqüência. a transaç:lo 4 não pode iniciar SUl! f:1.~e dados quando gostaria. Ela observa que o sinal D8SY# .. inda está ativado e apenas ci'ipcra até que de seja negado. Na lr.1flsação 5 vemos que a fase de rcspo.'ila também pode levar vários ciclos de barramento c por isso atr::lsar a lr.rns.u,ão 6. Por fi m. na transação 7. obscrv:amos que assim que aparece um vazio no paralelismo. ele ali permulll!Ce se novas lf'.mS:IÇÕCS consecutjvus cominuarem a ser iniciadas. Contudo. na pr.'ílic:l. é improvável que 11 CPU lente iniciar uma nova lransu~ão em lodo I! qualquer ciclo de barramento. pon anto os vazios não duram muito.
•
u
3.5.2 O UltraSPARC III
I
I
I
•
Como nl).'\SO segundo exemplo de um chip de C PU. examinaremos agOI"'J ti familia Suo UhrnSPARC. E.<;sn famnia é a linha da Sun de C PUs SPARC de 64 bits. Essas CPUs estão totalmente de acordo com a arquitetura SPARC Versão 9. que também é parJ C PUs de 64 bits. Elas sào usadas em csta~õcs de tmbalho e servidores Sun. bem como em várias outras aplicaçlks. Essa familia inclui as UllI:lS PARC I. UltraS PARC 11 e UltraSPARC m . que são muito scmdh:mtes em termos de arq uitetura - a.." principais d iferença." são a dat!l de lançamento. a velocidade de relógio e algumas instruções extl"'''''' imroduzidas em cada modelo. Pal"'J tic:.mlms em terreno concreto. vamos nos referir à Ult.raSPARC 111 logo adiame, mas grande pane da discussão da arquitetura - isto é. independentemente de tecnologia - também vale para as outras UltmS PARCs. A UltmSPARC 1lI é uma máquina RlSC lf'Jdicional e é Imal memc compatível com o código binário da arquitetura SPARC V8 de 32 bits. Ela poc.Ie executar progmmas binários SPARC V8 de 32 bits sem modificação porque a arquiteturn SPARC V9 l! compatfvel com a arquitetura SPARC Vlt O unico ponto em que a UllrJS PARC 111 se desvia da :uquiteturn $ PARC V9 é no acréscimo do conjunto de instrução VIS 2.0 projcw.do pam aplica~ões gráficas em 3D. dl.:codil'icaç:ln MPEG cm tempo real. compressão de dados. processamento de s1lm!. execução de progrJma.'i em Java e IrJb:.llho em rede. Embora a UllraS PARC (fi também o;cju uti li7.ada em es ta~iJcs de II"'..Ibalho. na real idade ela foi pmjel:llla para ~r llliJi7~lda no negtkitl principal da Sun. grnndes servidol'CS multiprocessados de memória companilhada u~adns na Inh::n1CI I! cm imrJn":l:' curpnrat iv:l)o. F_,>pc":lli..:ameme. grande pane do 'adeslvo' nceessário pam construir um multiprncessador est:i incluída cm cada chip UIlr:lSPARC m. o quc radliHI a ,,:ol1ex:1o conjunta Jc grande quantidade dcles. A primc1m UhmSPARC 111 foi lançada em 2000:1 61M.1 MHz usando linhas de alumínio de O.11i micron. Os chlPs contêm 29 milhôcs de lI:lnsistores. Como o volume da Sun é muito pequeno p:lfU j ustilicar a cunstnlção de uma f~ bri c a de chips de líltima gerJção, a empresa prefere se com:enu-J/' em projeto de chips e software e cumrJtar a fabricação de C P U~ com tereeiros. No caso da UllrnSPA RC 11 1 t iS chips foram fabric ados pela Texas Instrumellls. Em 2001. a T I rnclhomu sua teeno logia e começou a fabrie:lr ehips de 0.15 mfcron de I)()() MHz usando tios de eobre em ve~ de alumínio. Em 2002. a largum da linha caiu para 0. 13 mícmn c II relógio foi ell:vado alé [,2 G Hz. E,,,ses chips requerem 50 waus de potência e. p«>nanto. têm praticamentc 05 mesmos problemas de dissipação de calor que o Pentium ·t É difícil comparar um ehip C ISC (como o Pentium 4) e um chip RISC (como o Ultr.J.SPARC 111) apenas (orn base na vclocidude de re lógio. Por exemplo. :) Ult!':lS PARC 111 podc iniCiar continuamente quatrO instruções por CIclo de relógio. o que lhe confere qua.'IC! a mesma l!Ua dc execução que uma CPU que inicia apenas urna instmç:I,) funcionando a 4.M GHz.
1 I
-,
•"o ~
,•
ngurn::l.44 Chlp de CPU U1traSPARC !li.
~
8 o u
'"·o ~ ~
• o •o N
o
A Uhr..l$PARC também tem seis parnlc!i.
- -- ---- ....... ... ... .... _--
'''''''"""
"
de memória
25
OadosdelaQ
.ValIdação de ~
""'" do
I
•I I I I
" " do
""'"
" Pandade de tag _ 20
nucleo de um sistema
'"""""
-""""
Ca
""""do nlvel2
". "
I
CPU UI\nISPll.AC lU
do""'"
- ç ã o ...
mtraSPARC 111.
5
MflmorY adOrOU
35
,
flaura3A5
PrinClpais caracteristicas do
ao barramenlO
o_ Pandade
c"""'
_. •
m
--'"
'""""'" ,
...UPI\ pom
-~poncpaJ
di! nill8l 1
DD 5 CoP. . .
I
_ ,do
Dadoe d, memOM128
I
memóna UOBII
ECC da m&mOria 16
as 256 linhas de dados mais usadas estão na cachc de nível I. Linhas de eache que são muito usadas mas não cahcm na eache de nfvel I são mantidas na cachl! de nível 2. Essa eache corut!m linhus de d:.tdos e linhus de instruç:1o rnisturJ.das aleatoriamente. Elas são unnU1.cnadas no retângulo mlulallo 'enche de dados de nível 2' . O sistema tem de monilomr quais linhas estão na eache de nível 2.
E.~sa
infonn:lção é mantida em uma segunda SRAM. de nominada
'l àgs de cache de nível 2'.
•
Quando há uma ausência na enche de nível I, a CPU envia o idcoti lieador da linha que esL1 procurando (eoucn.-ço de tag) parJ a cache de nfvel 2. A respos ta (dados de lag) info rma à C PU se a linha está ou não na cache de nivel 2 e. se estiver. infonna também o estado em que a linha está. Se a linha estiver na eache. a CPU vai pegá- Ia. As transferências de dados têm 16 bytes de largura. ponanto silo necessários quatro ciclos parJ buscar a linha inteira na cache de nível I. Se a linha de cache não estiver na tache de nível 2, ela deve ser buscada na mem6 ria principal por meio da interface UPA. A UPA UhrnSPARC III é implement::u:ia com um controlador centralizado. O endereço e os sinais de controle da CPU (de todas as CPUs. se houver mais de uma) vilo parJ lá. Para acessar a memória, cm primeiro lugar a CPU deve usar os pinos da arbitragem de barr.lmento para obter pcnnissão de entrar em seguida. Uma vez çoncedida a pcmliNsao. a CPU envia o endereço pam os pillos de endereço. espcci fica o tipo de requisiçào e atua o pino de endereço válido. Esses pinos silo bidirecionai s. já que em um multiprocessador UllraSPARC lU outras C PUs precisam acessar eaches remotas para manter todas as caches coerentes. O endereço e o tipo de ciclo de barramcnto são entregues ell1 dois ciclos nos pino>; de endereço, sendo que a linha sni no primeiro ciclo e a col unn no segundo ciclo, como vimos na Figura 3.30. Enquamo cspera os res ul tados. a cru pode perfeitamente continuar cxecutanuu outru trJbalho. Por exemplo. UI11,I ausência na cache dur:mte a buscO! :mtecipada de uma instrução não inibe a cxecuçilo de uma ou mais instruçõcs já busc:ldas; c:lda uma das ,!uuis pode se referir a dados que não est.ão em 4uaisquer das cachcs. Assim. várias ltansaçõcs com a UPA podem estar ativas de uma vez só. A UPA pode manipular duas corre ntes de transação independentes. no mlUlmente leiwr:J.s ~ escritas. cada uma com vária.>; tr.msaç&:s pendcntes. Cabe ao controlador centr:J.lizado monitorar tudo isso c f:lí'..cr n:tjuisiçõcs de memória propriamen\.C dit.as na ordem mais eficie nte. Quando I)S dm.los li nahnenre ch egam da memória. podem vir em g bytcs por vez e COIII um código de correção de I!rro de 16 bits par.l maior confiabilidauc. Uma tr.lllsação Ixxle :.ol id tar um bloco de c;\che intdro. ullla 4uadWtlrd IR bylesl uu :ué mesmo um número menor de bylcs. ToJos I)S d:u.ll)~ '{ue erllralll vãll paro 11 UDS. que n~ annal ena em um hull'e r. A linalidade do UDB ê úc.winc ular ainda mais a CPU do sistema de lIIemó na, de modo '{ue possam tmbalhar em :lSSlIIcronia. Por e.t emplo. sc a CPU tiver de escrever uma palavr.! nu li nha dc c:lche na mem6ria. em vez. de cspcmr par.! acess:J.l· .! UPA. da pocle escrevcr os dados no UOU illll,..'tIiatamcllte e dClxar 4ue elc o:. pa:..sc par..! a mcnllíria mais laroe. O UDS tambem g Cr.l e vcriJiCl {) c(xJigo de LOlTCção de eml. Só pam tiear n:giSlI"'.IJO. a deseriç50 que fi".c mos da UllrnSPARC 111. bem como a do Pentium 4 :J.llles dela. romm muito ~i mp l i licadas. mas a c!.sência de sua opemção foi descrila.
3.5.3 08051 Tanto o Pt:ntium 4 quanto a UllraS PARC lU sáo exemplos ue CPUs de alto desempenho pmjctadas par.! construir PCs e servidores de extre ma mpidez. Quando pensam em eompuwdorcs, ê esse o tipo de sistema 4ue mu itas pcssoa.~ tendem a focal iZ:lr. Enlretanltl. existe toJo um llutro munJo de computadores que nu verdade é muito maior: ~ is t cmas embutidos. Nesta scç:io vamos examinar brevemente esse uutro mundo. Provave lmente não será um gmnde exagero dizer que todo \!'{uipamcnto elétrico '{ue \!usle Illais de 100 dólares tem um Ctllllput:ldor dentro dele. Hoje em d ia. ~ I.:eno que televisores. telefones celulares. agendas elctnl nicas.
L
•> z
c
M
I I
•
o o
•"-
"
•
-tO
,,, ,• ,• PL , •• •, " iflrn ifrn """ Tal P3. 11/ P3.• " "" .'.'> " .J "" 5 ". ,•
~
"" ""
A
•
•"o ~
• •
~
PL
Rgura 3.46
Pinagem ffmca do 8051.
~
e
o u
~i '"
AS
RXDI nC:OI I I
~ / VPP
P3. P3. P3.2 P3. J
5
vcc PO.O ! ,1..00 ?O.I / AOl PO.2 I AD2 PO.3 1 ,1..03 PO.4 I AeM PO.5 1,1..05 PO.6 1,1..06 PO.1 I AD7
N
"" ""
" "" "" '"
"""
P2.7 1 ,1..15
1'2.6 1 ,1..1 4
1'2.5 1 ,1..13
•
m/P:!. Fm l P3. >
• •
fo mos de microondas. ci.llncordcrs, VeRso impressoras a l:J.SCr. alamles anti furto . aparelhos de surdez, jogos det.rô-
•
~
• •
~
'•. o
~
" •
'"
o
~i
H
vs
~
1'2.4 1 01.12 1'2.3 I AlI P2.2 I AIO
1>2.1 / ,1..9 f>2.0 I AlI
nices c OUITOS incontáveis dispositivos para mencionar aqui são lodos controlados por computador. Os compuwdores 411c estão dentro desses aparelhos tendem a ser otirnizados pam baixo preço e não para alIo desempenho, o que proVQl!:.I compromissos dircrcntes dos fe itos para C PUs de tecnologia avançada que t:s tudamos ate: aqui. Como mencionamos no Capítulo I. o 8051 provavelmente é o microcontrolador mais popular em uso hoje. c.m gmndc. parte por causa de seu custo muito baixo. Como veremos em breve, ele também é um chip simples. Pl)rtan· to fazer interface com de é algo t'ácil e banIa. AgorJ. vamos examinar o chip 8051. cuja pinagem f(sic:l ~ mostra· da na FigurJ 3.46. Como podemos ver na FigurJ. 3.46. o 8051 nonnahncnte vem c.m um pacote· padrão de 40 pinos. embor:l haja outros pacotes no rncre:luo para uso especial. Ele tem 16 linhas de endcrt:!lfo. portanto pode em.lcreçar 64 KB de rnc.mória. O barmmento de dados tem 8 biL~ de largum. de modo que as transferências de dados entre a CPU e a memória são feitas um byLC por vez. em cmnparJç:io com os 8 bytes por vez no Pentium 4 e os 16 bytcs por vez na UltraSPARC 111. O chip tem uma variedade dc linhas de controle descritas a seguir. mas o maior contmste com o Pemium 4 c. o UhmSPARC. que sãu CPUs pUr.ls. é a presença de 32 linhas de EIS. organizada.~ em qu:.um grupos de 8 bits cada. Cada uma dessas linha.'i de EIS pode ser ligada a uma tecla, comutador. LED (Light Emitti ng Diode - diodo e missor de luz) ou outm dispositivo existente no mundo real para prover enlmda para o 8051 ou saída do 8051, Por exemplo, em um râdio-rclógio. cada um dos botõcs c comutadores pode ser ligado a um linha de EIS diferente. sendo que ou(J'a.~ linhas de EIS controlam o visar. Desse modo. a maioria das (unções do aparelho, se não todas, poderia ser controlada por software. elimi nando a neee:;;,sidadc da cara IÓl:,'ica discreta. A pinagem lógica do 805 1 é moslmda na Figura 3.47. O 805 [ vem com 4 KB de ROM inlerna (8 KB no 8052). Se isso for insu ficiente par.t a aplicação. até 64 KB de memória externa podem ser conectados ao 8051 por um barramento. Os sele priml!iros sinais do lado esquerdo da Figuro 3.47 s:io usados pam fazer a interface com memórias externas. se esti verem presentes. O primciro sinal, A. contém 16 linhas de endereço pura endereçar o byte de memória extem:l a ser lido ou escrito. As oito linhas D são usada.s para transporte de dados. As oito linhas de endereço de baixa ordem silo multiplexadas nos mesmos pinos que as linhas de dados, de maneir..J. a reduzir o número de pinos. Em uma transação de barr.lJuenlo. I!sses pinos de saída enU'Cgam o endereço no primeiro eido de relógio e carregam os dados em cidos subseqüentes. Quando é usada uma memória externa. o 8051 tem de indicar se está Icndo ou escrevendo na memória ativando RD (lU WA . rcspcCtiV:UllCnlC. O sinal ALE (Address Latch Enable - Habilitaçãu de Registro de Endereço) I!
"
A
O
8
"'"""
ALE
_
PSEN ~
fl gura 3.41
Pinagem lógica do a051.
Tomporizadores intoff\JpçOes
2 2
.05<
Portal
•
_ _ Porta 2
•
"'O RXO
--+--- Pona :1
Rs>
~
- ------------_ .... ...... . , , , " " .... ..
• •
--+---Porta O
usado ~uando uma memória e:'ttema está presente. A cru asscgur.1 e'lsc sinal par.l indicar que I) endereço é válido. Meffitírius e:'ttcrnas nnnnalrlll.:nte u usam para amOSlrar as linJ1:J.s de endereço. uma vez que elas scrJo libcrad:l.S logo após. de mooo que os pi~s podem ser reuulizados para os dados. Os sinais PSEN e EA# ta mbém estilo relacionados com a memória externa. O sinal P'SEN (Program Store ENablc) é auvado puro indicar que o &05 1 quer ler da mem6ria de progr.lma. Nonnal mcntc cle estaria cOIl(.."Clado uo si nal OE da memória. como iluslI'Jdo na FigurJ 3.28. O sinal EA (Externai Access - acess() externo) cosluma ser ligado em alto ou baixo. portanto sempre tem o mesmo valor. Se for ligado alto. a memória interna de 4 KB (8 KB no 8052) é u.~ada p.lra enúere~os de ntro da faixa e a memória externa i! usada para endereços acima da t:lixa de 4 KB (8 K.B no 8052). Se estiver ligado baixo. a memória externa": usada para todos os endereços e. na verdade. u mcmória no chip é d\!Sviada. N() 8031 e no S032. EA deve ser ligada haixo porque 0;10 há memória no chip. As duas linha... do lempori1..
Exemplos de barramentos
3.6
Barmrnentos silo a cola que mantém a integridade dos sistemas de computado res. Nesta seçilo examinaremos minuciosamente alguns barramentos muito conhecidos: o bllfT'.llllcnto ISA . o barramento PC I \! o burramcnto USB (Universal Serial Bus - barnllnenlo serial universal). O barr:uncnto ISA é uma ligeira expansão do bammcnto IBM PC original. Por rJZões de compatibilidade. ele ainda estava presente em todos os PCs com chips Intel (ué alguns anos atrás. quando a Intel e a Microsort coocordamlll em eliminá-lo. Todavia, es&as máquinas invariavelmente também têm um ~egu ndo barmmento mais rJpido: o barmmenLO PCL E.~St! barramento é mais largo do que o barrJ.mento ISA c fu nciona \I uma taxa de relógio mais alta. Por eonscqUfncia, pode transponar mais dados por segundo do que o barrJmenlo ISA . Ele é o burro de earga da maioria dos PCs existentes hoje, embora já haja um sucessor em vista. O Univcr.illl Serial Bus é um barrJ.memo de EJS C:lda vez mais popular pum periféricos de baixa velocidade. como mouses e tL·clados. Uma segunda versilo do barr.ulIcnto usa funciona a velocidades muito mais elevadas. Nas $Loçõcs seguintcs vamos exam inar cada um desses barmmt:ntos por vez para ver como funcionam.
3.6.1 O barramento ISA
o
barramento IBM PC era o pacJ.rjo de f acto t..Ios sistemas que usavam o 8088 porque praticamente todos os fab ricantes de clones do PC o copiaram para pcnnitir que as muitas placas de EIS existentes fabricadas por terceirl.1S rossem usadas com seus sistemas. Ele tinha 62 li nhas de sinais. incluindO 20 para endereço de memória. 8 para dados e uma linha de cada parol. ativar leitura de memória. e.'iCritu na memória. leitura de EIS c escrita de t:JS. Havia também sinais para requisitar e eonceder interrupçõcs e usar DMA . c isso era praticamcnte ludo. Em um barr.unen10 muito si mples. F.m lennos físicos. o harramcnt o era gra vado na plac;\-m.le do PC com eerca de meia dúzia de conectores espaçados de 1 cm nos quais podiam ser inseridas plucas. Cada placa tin ha um rebordo cOInpntível com () eonector. Esse rebordo lmha J I ratxa.~ ha nhadas a ou ro de cadil lado. que ral.iam contato elétrico com ll eonector. Quand" .1 LBM laJ\~llu o PC/A r com a C PU 8U2gb. fir.:oll com um grande problema nas màos. Se d a tivessc panido do zero e prujel
•• o
M
o o ~
•
u
<Xl
ConectorÓD
barramento PC
BafTamento PC
Cl
•
•o ~
• "
~
•
o u
• •
oO
figur::I 3.48
O~
O bürmmento PC/AT tem dois componentes. ü parte do PC ongmaJ e a pane nova.
~
=O
O~
CPUa
00'= chips
~
• "
~ Chips
O O
= =
"
""
•
Novo conectar pam o PClAT
'"o ~ ~
• " •"m O
fabricavam cluncs do PC que tinha conquistado uma parte dc!\Conrortavclmenlc grande do mercado. kõsim, as máquinas PS/2 de faixa média c supt!rior foram equipadas com um balT:J.mcnto comp!ewmente novo e prou.:gido por uma mUr..L!ha de patentes e um batal hão de advogados. O resto da indústria de computadores pessoais re:Lgi u a esse dcscnvolvimenlo adotando seu próprio padrJo, o barramento ISA (Industry Slandard Arquitetura - lIrtjuitelur.t padrão da indústria), que era basicamente o barramento POAT, mas fu ncionando em 3.33 MHz. A grande vantagem dessa abordagem em que da conservava a compnlibilidadc com as máquinas I! placas I!ltistentcs. Também era baseada em um barramento que a IBM linha liccnciado libemlmcnte pura muitas empresas para gurantir qUe o maior número possível de fabricantes produzisse placas para o PC original. fa to que aeabou se voltando contra a própria IBM e por jim a alijou do ncg6eio de PCs. Até há poucos anos, a maioria dos PCs C{lm çhips Intel ainda tinha I!sse b,UT:UlIenlO, I!mbora também tivesse um ou mais outros barramentos. Mais lardt:, o blLrrJ.mento ISA foi am pliado para 32 bits com mais algumas caraelerístieas (por exemplo, par:.I multiprocessamento). O novo baffiunento foi dl!nominado EISA (Extendcd ISA - ISA estendido).
3.6.2 O barramento PCI No IB M PC original. a maioria d:L'i aplicaçlks era baseada cm texlo. Gradual mente. com a intnxJuç:1o do Windows, pouco a pouco cOllleçarJ.lll a ser usadas:l.'i interfaces gnHicas de usuário. Nenhuma dessas aplieaçõcs exigia demais do barramentO ISA. Contudo. com \) passar do tempo. quando muitas aplicaçõcs. em especial jogos em muhimidia. cotneçarJ.m :l usar computadores para apresentar vídeo dc lcla inteira e movimento totnl, a situação sofreu uma mudança rJ.dical. Vamos fazer um cúlculo simples. Considere ulUa tt: la de 1.024 X 768 usada p:lrJ. imagens em movimento c: cores renis (3 bytcslpixcl). Uma leln contém 2,25 MS de dado~. Para um movimento s uavc são necessárias ao menos 30 telas por segundo para uma taxa de dados dc 67.5 MS por segundo. Na verdade. é pior do que isso. uma vez que par:! apresentar um vidoo a partir de um disco lígido. C D-ROM ou DVD. os dados devem pm;sar do drivc de disco parJ. O barramento e ir até a memória. Enti"io. para a apresentação, os dados devem no vamente pereorrer o barramento até o ad:1Pladnr gr.Hico. Portanto. precisamos de um:1 largura de b'anda de harr..um:nto de 135 MB por scgundo só parol tJ vídeo. sem contar a largur.!. de handa 4ue :t CPU e outros disposi tivos precisam. O b:\rr:UllenlCl ISA funcio nava à taxa máxima de 8.33 MHz e podia lr.lI1sferir :! hytes por ciclo para uma largura dc banda m.íxJrna de 16.7 MB/s. O barramcnto EISA podia movuncntar4 bytcs por ciclo. para alcam.;ar 33.3 MS/s. Claro i.juc nenhullLa dc.:l>sal> lax:l.~ ~":L[ucr çhcgava jlI!J10 Jo i.jllC era l\cçCl>sano para .lprcscma,:l'l de vÍl.k:o cm tcla. Em 199{1. a Intel percebeu o "lue eswva para acontecer e desenvolvcu um nOVlJ barramento com uma largura de banda muilo m.\is aha do que a do pniprio barramcnlO EISA. Foi dc:tloll1inado ImrraOlellto PC I (lleriphcrlll C nmponent I.ntcrconnt.oct 8u.~ - Imrf".lmcntu tle interconexão de componente p eriférico). ParJ. incentiVar SU<:1. a UltrJ.SPARC 11 1i. O b:1JTalllcnto PC I é apresentado com todos os detalhes tétricos cm Shanley c Andcrson ( 1999) e Solari e Willse
(2004). O harr
._-_ ...... .... ... .. .... .-
l I.
burramento PCI fu nciona em até 66 MHz o.! pO
CPU
'""'""""" K:=======~
flgara 3.49
Arqtutetura de um dos primeiros sistemas Pentrum. Os barramentos represelllados por linhas
maIS largas tem maIS largura de banda do que os representados por linhas mais fin as. mas a figura não estâ em escala.
==
Bamtml!ntO PC1
El'ICalxe PCI dlsponllllM
ElB
Barramento 1511
.......
EncmxelSA
-
'"
," Q
M
o
• u•
~
o
N
•"o•
U:7'i~... ;i. fBmer'110 AGP
~
,•
Barrameruo Iocru
/
Bamlmor1to de momótla
~
E o u
fiaur:I 3.50
•
Estrutura do barramento de
~
• ,•
~=======~ Memória principal
Ch.
~
pome
um Pennum 4 moderno.
~
,
,
\
•
.".".,
~
'•". o
,
dl$pOl1ivel
PCI
~
IMoJselEec~dol
c
•
I
~
:: 1000;'01
~
O
A pane intcma do chip ponte é dividida em duas partes: a ponte de memória e a ponte de EIS. A ponte de memória cancela a cru com li memória c com o aduplador gr.íJico. A pon1C de EiS cancela o controlador ATAPI. o barr.l.lncnto PC I e. opcionalmente. outros dispositivos rápidos de EIS com uma conexão direta de ponte que liga um au outro. As duas pontes são conectadas por uma interconexão de velocidade muito alta. O barramento PC I é síncrono Ctl lllO todos os barr.tmcntos de PC desde o IBM PC original. Todas as lr;lIlSllÇÕCS no barramento PCI ocorrem entre um mestre. cujo nome oficial é iniciador. c um escr..lVO, olicialmente denominado a lvtl. Para manter baixo tl núm~ 1't) de pinos PCI. as linhas de l!ndcreços e dados sào multiplexadas. Desse modo. nas placas PCI são nccessmos somelllc 64 pinos par..l cnden.'Ço mais sinais de dados. ainda que o PCI suponc endereços de 64 bits I! dados de 64 bits. Os pinos dI! cndereço I! de dados multiplexados fu ncionam da seguinte mancir..l. Em uma operação de leitura. durante o ciclo 1, o mestre coloca o enden:ço no barr..l m~ n to. No ciclo 2 I) mestre remove o l!ndercço e o barramento muda de sentido, de modo que o escravo possa usá-lo. No ciclo 3 o escravo enlrcga os dados requisitados. Em operações de escrita, o barT'..lmento nao tem de vir..ll' porque o mestre coloca o end~reço e tam bém os dados. Não obstante, a tr..lllsaç:1o mínimu ainda dura três ciclos. SI! o escravo não conseguir respo nder em três ciclos. ele pode inseri r estados de espera. Também sào pennitidas transferências de bloco:,> ~m limite de tamanho. bem como diversos outros tipos de ciclos de barr..llncntO.
Arbitragem de barramento PCI I'ara usar o baJT'..Imento PCI. um disposilivo deve antes adquiri-lo. A arbitrngem de barmmcnlo PCl usa um árbitro de harr..lmcnto centr..llizado, como moslra a Figura 3.5 1. Na maioria dos projetos, o árbitro de barramento é inserido em um dos chips ponte. TtX.lo dispositivo PCl tem duas linhas dedicadas que vào dele até o árbitro. Uma linha. AEOI#. é u s,ld~ par..l requisilar o lmn-..IInentQ. 1\ outm linha. GNT#, é usada pal"..l receber cOllcessôcs de balT'..Imenlo. P:U-J req uisiL:.lr o barramcnto. um dispositivo PCI (incluindo a CPU) auva REDIl I! espera até ver sua linha GNTIf .uivada pelo árbitrO. Quando esse l!venlO actlntc:ce, o db,poMlivo pude usar o barr..llllenlO no proximu cido. O algori1l110 us"llln ]k:lo ,írhitm 11.111 é ddi nido pela especificaçãu do rcl. I\cbilI':Jgem por varredura circular. arbi tmgem por pnllrid,uJc I! nulm ..
fig ura 3.:11
O barramemo PCI usa um arbitro de barramemo centralizado.
1111
,~PC'
....................... • • •• 111111111 1 1111
I
• ow ~
I
•
"o%
""';8''''
1
õw •Z ~
"o
'"
1 1II I J'I II I".· ----------------------------
ô w ~
~ o~
",,,
""""!:'~
~
o
"
"'"
Contudo . ..:m circunstâm.:ias especiais. na ausência de concorrência pelo barr.tmento. um dispositivo pode fazer uma transação atrás da outra sem tcr de inseri r um ciclo ocioso. Se um rm:stre de tr.msferênct:l de dados e.~ti ver realizando uma transferência muito longa e algum OUtro dispositi vo requisi tar o barr.tmento, o árbitro pode negar a linha GNT#. O mestre de tntnsfert:nciu de dados em ques(:lo deve monitorar:t linha GNT#; portamo. quando perceber 11 negação. deve liberar o burrJmcnto no próximo ciclo. Esse esquema pennite transferênci as muito longas (q ue s;1o c licie ntes) quando há someme um mestre de transferência de dados callÚidilto. mas ainda assi m dá re."posta rápida a disposi tivos concorrentes.
Sinais de barramento
-N
•
pcr
o
barrJmento PCI tem vários sinais obrigatórios. mostrados na Tabela 3.4(a), e vários sinais opcionais, mostrados na Tabela 3.4(b). O restan te dos 120 ou 184 pinos são usados pafil energia. alcrrJmento e diversas funçõcs relacionadas e nào a parecem nessa lis ta. As colunas M e.' itre (i niciador) c Escra vo (al vo) informam quem ativa o sinal em uma lrJnsação nonnal. Se o sinal for ativado por um di spositivo diferentc (por exemplo, CLK). ambas :lS colunas sãu de ixadas em branco. Agora vamos ex.aminar brevementc cada um dos sinais do barr.tmcnto PCI. Começaremos com os sinais obrigatórios (32 bits) c cm seguida passaremos para os sinuis opcionais (64 billl). O sinal CLK comanda o burmmento. A maioria dos outros sinais é síncrona eom ele. Ao contrário do bamunento ISA, uma tr::l.nsação dc bnrr.lmento PCf começa na borda descendente do ClK. que está no meio do ciclo. em vez de estar no início. l.bel. 3A
Sinal
la} Sinais obrigatórios de barramento PCI. Ib} Sinais opcionais de barramento PCI. I Linhas
Mestre
Escravo
Relógio 133 MHz ou 66
CLl< AO
Descriçao
i
3'
PAR
X
X
MHzt
Linhas de endereço e de dados multiplexadas
X
Bit de paridade de endereço ou dados
X
Comando de barramento/mapa de bits para bytes habilitados
mAMEI
X
Indica que AD e CIBE estão ativadas
IRDY.
X
Leitura! mestre
IDSEL
X
C!BE
4
a~jtarã ;
escrita: dados presentes
Seleciona espaço de configuração em vez de. memória
DEVSELt
X
Escravo decodilicou seu endereço e está na escuta
TRDY'
X
Leitura: dados presentes: esaita: escravo aceitará
S1'J)"
X
Escravo quer interromper a transação Imediatamente
PERR,.
Erro de paridade de dados deteCtado pelo receptor
SERRt
Erro de paridade de endereço ou erro de sistema detectado
REQ'
Arbitragem de barramento: requ1lJição de propriedade de barrameuto
GNU
Arbitragem de banamento: concessão de propriedade de barramento
RSU
Restaura o sistema e todos 03 dl:Jpos!tivos (.(
Escrovo r REQ64f
X
X
ACK64' AO
3'
PAR64
Permissão concedida para uma transação de 64 bits 32 bits adlcionais de endereço ou dados
X
Paridade para
0$
32 bil5 amas de endereço/dados
X
4 bil5 adicionais para babilitações de bytes
I.OCK
X
Trava o barramento para permitir rnUltlplas transações
SBOi
X
Presença de dados em uma cache remota {para um multlprocessadorJ
C/BE-t
4
Descriçao
Requisição para realizar transação de 64 bits
Escuta realizada (para um multlprocessador)
SDONE
lI<'I'x
IrAG M66EN
• 5
Requisição de uma Interrupçio Sinals de testes IEEE 1149.1 JTAG Ligado li energia ou ao terra \66 MHz ou 33 MHz) (b(
•> z
o
~
o
=
N N
•o•
·•
~
,
c.
E
"
u
•
~
• •,
~
·, •
~
o
•• • "•
~
N
· ~
O
Os 32 sinais AO são par.!. endereços c dados (para lr.lns::u;õcs de 32 bits). Em geral. dUr.lnlc o cldo I o endc·
rcço é ativado c durnme o ciclo 3 os dndOli são aliv:l(Jos. O sinal PAR é um bll de paridade p:lr.t AO. O sin
Transações de barramento PCI Na realidade. o bam Ullento PCI é muito simples (no que diz respeito a bUlTllmelllos). Para ter uma idéia melhor dele. considere o diagrama te mpor.al da FigurJ 3.52. onde pode:mos ver uma transação de leitura seguida pur um ciclo ocioso. seguida por uma I.r.lns..ção de escritn pelo mesmo meSlre de lr.msfcrencia de dados.
T,
T,
-
T,
., "gu l1l 3.52
E..r:ernplos de trarulações de barramento PCI de 32 bus. Os trés primeiros ciclos são usados para uma operaçiio de leilura. em seguidll um cldo oaoso e depois [rés CIclos para uma operação
de escnta.
AO
RI1O(1lO
Enó8reço
X
X
Dados
,::~tlr i IAOV.
- --
p<
O'VSElO
I
TAOV'
I
_ _ _ _ _ _ _ _ . _ . _ • • • • • • • • • • • •• , , ' , . ' I 11"
"
I
I I
X
X Er.der8ÇO X
I
Dados
><=
x~t~x71'~II
!I '\ I ,r--f---I----L,I . . I --;:/T~I I I I ! 'T I
,. •c • • • c C C
• C
• • • • • •
, ,•
Quando a bord:l descendente do relógio acontece durante T I' o mestre põe o cndac\=o de memória em AO e o comando de barr::uncnlu em ClBE*". Entào :lIiva FRAME# par:J iniciar a lr.lIlsação de barr.an1cnto. Dur.lJllc T z• o mestre libcr.l o oorrJ.mcnlO de cndcR.Yo par.!. dchar que ele retome em preparação para o comando do escravo dUrdllh! T]. O m\!Slre também muda ClBE# para indicar quais bylc... na palavra cnucrcçada ele
I
N ~
que r habilil'at. isto é, quais que r que sejam lidos. Em T J • o CSCí.l.VO ativa DEVSEL# de modo que o mestre saiba que ele obteve o endereço c está planejando res-
ponder. Alé m disso. P.1c 0:0; dados nas linhas AO c ,lliva TRDY/# pura infomlur ao mestre que fel. i~so. Se o CSI,;r.lVO n:in puder responder cum tanta Wpilh:z. ai nda assim cle :'ltivaria DEVSELIt para anunciar sua presença. mas m.mleriu TRDY# negadu até que pudessc obter os dados que hi cstão. Esse procedi mento introduziria um ou mais cst
de espera. Nesse exemplo (e muitas vezcs na realidade). o ciclo seguintc é ocioso. Começando em T j vemos o mesmo mestre iniciando lima esçrita. Ele começa coloc3J1do o endereço ~ o comando no barr.!.lIlcnto, como sempre. Slí que agora. 110 segundo ciclo. e l~ ativa os dados. Uma ve1. que o mesmo dispositivo está comandando as linhas AO. não há necessidade de um ciclo de re tomo. Em T 7 , a memória act:ita os dados.
3.6.3
•> z
o
pcr express
Embora o funcionamento do barrJ.mento PCI seja adequado parJ a maioria das apl icaçõcs existentes hoje, li necessidade de maior largurJ de bõ.ullla de EiS está causalldo uma confus;10 na antes limpa arquitetura intem a do Pc. A FigurJ 3.50 deixa claro que o barramento PCI não é mais o elemento central que mllnlém unidas as partes do Pc. O chip ponlC se apossou de pnrte desse papel. A essência do pmblema é que há eada vez mais dispo"itivos de EIS muito r.ípidos pat:l o bamunento PCI. Elevar a freqüência de relógio do barrJtncllto n:ío é uma boa solução porque então os problemas de alr:l.." o diferenciai no barrJmelllo, interfl!rencia na fiaç 50 c efeitos de capacitância sÓ licariam piores. Toda vez que um disposiuvo de EJS fica muito rápido par.l o barrJmc nto PCI (como as plat:a." gmficas. disço rígido, redes elc.) a Imel acres· el!ota uma porta ellpecial par..a o chip pontl! par.J. pcnnitir qUI! o dispositivo desvie do barramento 1>C1. C laro que isso também nüo ~ uma solução de longo prazo. Um o utro problema com o barramento PCI c! que as placas são muito gmndcs, n50 cabem em luptops e os rabri· cantes l:!0Sluriam de produzir dispositivos menores ainda. Além disso, alg uns deles gostariam de repartir o espaço intcmo do Pc. colocando a CPU c n tlH!mt'iria dentro de uma pequena caixa sdada e o disco rígi do dentro do monitor. Com as placas PCI é impossCvcJ faze r isso. Diversas soluçõcs roram prupos t 'L~, mas a que tem mais probabilidade de vencer (e em gt'J.lldl! parte porque a Intel c.~lá por trás dela) é deno minada PC I E .~ press . Ela tem pouco a ver com o barramento PC I c, na verdade, nem c! um barrJmcnto. mas o pc::ssool do mark:cting não quer largar mão do famoso nome PCI. PCs que contê m e:.:sa solu"ão já estilo no mercado há algum lcmpo. Vamos ver como eles fu ncionam.
Arquitetura do PCI Express
.
M
o cOrJção da soluç:10 PCI Express é se livrar do barramento pamlclo com seus muitos mestres e e:scravos e passar para um projeto baseado em conexões seriais ponto a panto de alta velocidade. E.<;.~a solução representa uma ruptUr.l mdical com a tr:ldiçüo do burramc nto ISAlEISA/PC I e to ma emprestadas muitas idéias do mundo das redes locais, em especial a Ethemcl comutada. A idc!ia bilSica se resume ao seguinte: no rundo, um PC é um conjunto de ehips de CPU. memória e controladores dI! EIS que precisa scr intereonectado. O que o PC Express faz é romecer um comutador de uso geral para conectar chips usando ligações seriais. Uma configumção típica é ilustrada na Figura 3.53. Como a figuro! mostra. a CPU, a memória c a cache estão conectadas ao chip ponte no modo trJdidonal. A novidade aqui ê um comutador conL'Cladn ;1ponte. possivelmente pan e do proprio chip ponte. Cadaul1\ dos c hip ~ de EIS !em uma conc.~ão ponto a ponto dL'tlic:lda com o comutador. Cada conexão I:;on:siste em um par de canais unidin..-cionalS. um quc vai par.! o cnlmundor e outro que \'C 1II dele. Cada c:lJlal é composto de dois tios. Uni pum n si nal c muro para \llcrr.!. para llar imutudade ~tl lllra ruídu JIIO dU rJtllC IrJ Il ~ nll~loãtl de alia vel ocjdad~. CSSlt ul'lluilelura subsLiIUtr.i a atual por um modelo muito mais uni fo rme. no qual IUdos os dispositivo:s s.lo tra tuuos igualmente. A arljllitetura !lC1 Exprcss te m ttês 1)(lntOS tle di ferença I!I1l rcJ:tção au amigo barramcnto 1>C1. Já vimos dois deles: um comuwdor centmli:t.ado contra um bamuncnto 1Ilultidmp c a ulili'l..aç:1o dc concxões ~~rini s ponto a ponto eSlrell ns contra um barramento pnralelo largo. O tereeln) é 1Ilais sulil. O modelo conceitual que I'undamcnta o barramcnto PCI é o de um mestre de transferência de dados que emite um comando a um escravo par:! ler uma palavra ou um bloco de palavr.ls. O do modelo PCI Express é o de um dispositivo que envia um pacote de dados a um nutro dispositivo. O conceito de um pllt.'Ole. que conSiste cm um caheçalho e cm uma carga útil. é tirJdo do mundo das redes. O c:lbt.'Ç:.Ilho eontém inrnnnnçiio de cont role. o que elimina ti necessidade dos llIu ltos :sinais de comrole presentes no barramento PC!. A cu rgu útil contém o:s dados a transferir. Na verdade, um PC com PCI Express é uma rede de comutação d~ pacO\e.~ em mininrurJ. Além dessas três impo nlllllCs rupturJs com o passado, ta mbêm há diversas pequenas dircrentfas. A quarta ~ que t) código de de tecção de erro ~ usado somente nos pacntes, () que dj 11111 grau de conliabilidade mais alto do que u barrJl11cnto PC !. A quinta é quc a conex:1o I!nlIC um chip e o comutador é mais 10ng;J do que crJ. até 50 cm. para pcrmim a repartição do sistema. A ~CJ(I:.J ~ que o sistema pode ser expandido porque um dispositivo pode perfc itrullcntc
~
•
"
...
N
CPU
c."
"""
••"
o
~
• •
flgur. ;1.:13 Sistema PC! express típico.
~
• o
u
• • •"
~
~
-
.....
• •
de
Yldeo
•
~
o
•• • C •
USB2
ser um outro comutador, o ljuc pt:rmite urna árvore de comutadores. A sétima é que dispositivos podem ~cr acrescentados ou removidos do sistema enquanto cle I!stá em operação. Por fim, uma vez que concctores seriais são muito menores do que os antigos conl."Ctorcs PC!. pooem·'\C fabricar dispositivos c comput:ldorcs muito menores. No todo, uma gr.mde ruplUrn em relação ao barr.J.mcnto PCI.
~
N
~
o"
Pilha de protocolos do
pcr Express
Condizente com o modelo de uma rede de COllllltaç!iO de p:lI':otes. o sistema PCI Exprcss lCm uma pilh3 de protocolos em camada.~. Um prutocolo é um conjunto de regr:lS que governam a conversa entre dua.~ partes. Uma pilha de protocolos é uma hicrJrquia de protocolos que (rollam de qucstiX:s diferentes em camadas diferentes. Por excm· pio. considere uma ema comercial. Ela obedece a cenas convençiX!s referentes 11 locali:t.uçào e ao conteúdo do cabe· çalho, ao endereço do destinatário. à data. :lOS eumprimelllos. ao corpo, ~ assilllllura e assim por diante. Ptxlemos dize r que tudo isso junto é um protocolo de cana. Além disso. h.i um outro conju nto de convenções referentes ao envelope. como t:lIl1unho, local e t'ormato do endereço do remetentc. loc:lI c ronnato do cndereço do destinatário. local do selo c assim por diante. Essas duas camadas e seus protocolos são indepenuentes. Por exemplo. é possível dar um formato completalnente diferente à carla. mas usar o mesmt) envelope. e vicc·versa. Protocolos em camada.'! são um projeto modular flexível e Iú décadas são muito usados no mundo dos softwares de rede. A novidade. no caso. é montá-los no hardware do ·barramento·. A pi lha de protocolos do PCI Express é mo.'!tr.1da na Figura 3.54(a). Vamos examinar as camadas de baixo par.! cima. A camada mais baixa é a canmda f'ísk'a. Ela tro ta da movi· mentação dc bits de um remetente para um destin:uirin por uma conexão ponto a pomo. Cada conexão pomo a ponto consiste cm um ou mais pares de enlaces simplcx. isto ê. unidirecionais. No caso mais si mples. h6. um par em cada direçào. mas també m é permitido ter 2. 4. K. 16 ou 32 pares. Cada cnlace é denominado via. O número de vias em eada direção deve ser o mesmo. Produtos de primeira geração devem suponar uma taxa de dados em cOlda din:· çào de no mínimo 2.5 Gbps. mas espera-se que logo li velocidade passe para até 10 Gbps em cada direção. Diferente dos ball.1.menlos ISAlEISNPCI, o PCI Eltpress nao tem um relógio mestre. Os dispositivos têm liberdade para com\.yar a lransmilir tão logo tenham dados a enviar. Essa liberdade deixa o sistema mais rápido. mas tamhém leva a um problema. Suponha que um bit 1 seja codi lieado como +3 volts c um bit O. como () volts. SI! us pnmcims bytcs forem todm. Os. C0!l10 o destinatário sal)!.! que dado!> estão sendll tr:msmitido!>"! AJinal. uma .sc..'qüência de O bits pan.'Cc \I mcsmo tlue um enlace ocioso. O problema é re:,olvido usando o que denorllLna nlO~ t:od ifica<;".Jo 8bll tlb. Nesse e~quema. lO bits ~iin tI ~;ulo~ para codiliear UIll byte de !.laúns reais elll um símbuhhle 10 hil~. Entre os 1.()24 símholos de 10 bits possíveis I"or:un c!\Colhidos como legais Il.~ que têm ~ un eiel1tcs Ir:msiçiks de relógio para manter remetente c uestinal5.riu ~i ncrnni · l..ados nas fru ntci r:l~ de bits. mesmo sem UII1 relógio mestre. Um:\ conseqüência da eodi lieaç:ill MbJlOb I! que UI1l enlace que Icnha urna capacidade nmta de 2.5 Gbps ~tí pudc trans mitir :2 Gbps (H4uidns) de dauos de usudrio. Enquanto [J camada I1sica lida com transmissàn de bits. a camada de enlace traia de tra.nsmissão de pacOles. Ela pt.'ga o cabeçalho e a carga útil passados par.t da pela camada de tr.msa\õào c acrescenta a eles um número de Camada OG sonwar.
n•• "3.54
um pacOle.
- --
-
_
_
_ _ __
I C_h<> I
Camada de lransaç40
(a) Pilha de protocolos do PCI Express. (b) Ponnato de
___ _ • ••••••••• ••• i ' , I , "
Camaoa lJe entat;O
C1mada !laica
,.)
• • • , ••• • - - -
I ~jj
I Quadra I Seq ,
Carga
I I I Cabeçalho I Cabaçalho
U1~
C~Ulil
Carga util
Ih)
I
I CRC I I CRC IQuadra I
scqüencia c um código rJe correção de erro denominado CRC (Cyclic RcdulldllllCY C hL'Ck - vel"ific:u;ão pur redund!inda cíclica). O CRC é gerJ.do pela cxecução de um ceno algoritmo no cabt:c,:alho c nus dados da carga útil. Quando um pacote é recebido, o destinatário efetua alguns dlculos no cabeçalho e nos dados e eompwJ. o res ultaJo com o CRC anexado ao pacote. Se forem compatíveis, o desti natário devolve um euno pacote de reconhecime.nto conlinmmdo sua corretil chegada. Se não fore m compatíveis, o destinatário sol idta uma retrans missão. Desse modo, a illlcgridade dos dados melhora muito em relação ao sistema de barr.J.mcnto PCI, que não tem nenh uma prescrição par.!. verificação e rctr'J.nsmissào de dados enviados pelo barrJ.memo. 1"J.r:l evililr que um transmissor r:ípido soterre um receptor lento com pm.:otcs que ele não pode manipular, é usado um rnecanisnm de controle de fluxo que func iona da seguinte mancir.J: o receptor concedc ao tr.ms missor um cena número dc créditos que corrcspondcm basic:llllente à quantidade de espaço de buJfcr de que ele dispõe JX1f"J amlazenar pacotes que chegam. QUilndo os crédilOs se (!."gOlam, o tr.J nsmissor tem de purar de enviar pacotes até R:ccber mais créditos. Esse e.o;quema. que é muito usado em todas a.~ redes, ~vit a a pcrda de dados cm conseqilência da incompatibilidade cnlrc as velocidades do transmissor e do receptor. A ca nmd u de lnlRs:u~iio LTata das açôes do barramento. Ler uma paJavra da memória requer duas tmnsações: uma iniciada pcla C PU ou canal DMA que está requi sitando alguns dildos e outra iniciada pe lo alvo que est..i fornecendo os darJos. Mas a camada de tmnsac,::io faz mais do que manipular lei turas c escritas purJ.S. Ela adiciona valor à trJ.llsmissão Je pacotes bruta ofereeida pela camada de enlace. Par.. começar, ela pode dividir cada via em ali: oito circuitos virtuais, eada um manipulando uma classe de LTáfego difere nte. A cmlliuJa de transação podc rotular pacotes de aco rdo com s ua classe de trjfcgo, o 4ue pode incluir atributos como 'alta prioridadc·, 'baixa priorithúe'. ·não escute', 'pode .'ler entregue fora da ordem ' e outros mais. O comutador pode usar esses ró tulos para decidir qual pacote manipulará em scguida. Cada tr:msnçào usa um dos quatro espa(,'"os de endereços: I.
2.
3.
4.
Espnço da Espaço de E.~pac;o de Espaço de
memória (par.! leituras e eserita... comuns). EiS (para endereçar regislr.Jdores de dispositivos). configuração (para inicialização do sistema etc.). mensagem (pam sinalização, interrupçõcs etc.).
Os c,"paços de memória c EIS são semelhantes aos dos sistemas existentes. O espaço de configuração pode ser uSildo par.. implementar c:lf:lctensticas como plug-and·play. O espaço de mensagem assome o papel de muitos dos sinais de controle ex istentes. É necessário ter algo parecido como I!sse espaço porque nenhoma das linhas de controle do PCI existe no PC I Express. A camada de software faz a interface enlre o sistema PCI Express e o sistema operacional. Ela pode emular o barramento PCI, possibilitmdo a execução de siJ> tcmas operJ.ciona..is ex istentes n::io modificados em sistemas PCI Express. Claro que uma oper.Jção como essa não ex plorará todo o poder do PCI Exprc.ss. ma.~ a compatibilidade é um mal necessário até que os sistemas operacionais sejam modificados par..I utili:r.ar tQlalmente o PCI Express. A experiência ma ma que isso pod e levar algum tcm po. O floxo de infomlaçõcs é ilustrado na Figur.J 3.54(b). Quando é Jado um comando à camada de software, esta o passa para a camada de transação. quc o ro nnula I!m (CrnlOS de um cubcça lho e uma carga útil. Entilo essa.~ duas pan cs são passadas para a camada de enl ace, que acrescenta um número de :>eqUênci a à suu panc anterior e um CRC à postcrior. Em seguida esse pacote umpliudo é passado à camada Hsica. qUI! ucresccnta infonnações de enquadmmento de dados a cada extremidade para formar o pacotc ffsico, que é, por Iim, transmitido. Na elttremidade receptom ocorre () pmcesso invt:fflu - o caOcçal ho de enlace e as informaçõcs que acom panham o bloco de dados (I railt'r) são removidos e o resultado é passado para a camada de trJ.nsação. O conce;lo do acréscimo dI! informações adicionais aos daqos à medida que cle descc pela pilha de protocolos j.í é usado h:1 décadas no mundo das redes com gmnde ~ UCI!SSO. A gmnde diferenç:1 entre urna rede e o PC I Expres~ é "Iue lIO mundo das redes o código nas várias camadas quase 'iClll pre ..: um suftware qUI! faz pane do sistema upemcional. Nu PCI Exprcss cle faz pane do hardware do disposit i\lo. O PC I Expre~s é um .ISSUnto complicadu. P:lr.IIII:lis inl"unna.,:<x.>s. cOlls ulte Mayhew e Kri ~hna n . :!Il03: c Sulari I! Cungdon, 2tXJ5.
3.6.4 Barramento serial universal (USB) o O:IITJlllenlO PCI lo! o PCI EXJlress sào bolls para anexar periférico~ de aha vt:locil.lade a um computador, ma... são muito caros par.!. dispositivos dI! flS de baixa velucidaJe. como 1I,..c1ados e 11lIlUSCS. Histuricaml!ntc. cada dispositivo padr.io de EIS 1!rJ. conl!ctado ao com pulador de modo cSpt.'Clal. com alguns encaixes ISA c PCl livres pam adicionar novos dispo.. itivo~. Infelizmente, esse cSC1 é muihl li mitaun (em gcrul dnis ou três). Placas pl ug-and-play cl imi n:l m o ajustl! das pontes, mas ainda assim ti usuário tem rJe ubrir o computador para inserir a pl:lca e tl número de encaixes du barramento continua lim itado.
-
'" N
•> z
o M
o o
o-
•
u
,••
.. o
~
,
~
e
c u
•
~
Par.! Lralar desse problema. em 1993. rcprcscnt:lII[CS de scle empresas (Compaq. DEC. IBM. Intel. Micro:;oft. NEC c Northcrn Tcil.:com) se re uniram para buscar a melhor maneira de anexar dispositivos de EiS a um cornpuLl!.lor. DClldc ent;1o. ccntcna.~ de outI"J.S empresas se j umarJm a elas. O padr.1o res ullaJ1tc. lançado olicm.lmenlc em 1998. lo! dcnomin:.do USU (Universal Serial nus - burr".!mcnto serial ullivers3I). e é amplamente implementado em computadores pessoais. Uma descrição mais detalhada desse barramento pode ser cnconlrJ.da em Ander.«.m
(1997) c Tan ( [997). L
2. 3. 4.
s. 6. 7. B.
•
cmprc~
Alguns dos objetivos Jas
9.
que conccbcmm o USB original c iniciar.lm o projeto eram os seguintes:
Usuários não Leda de ajustar comu ladol\:s ou pontes em plu(.::J,s ou disposi ti vos. Usu:irios não Icr:io de abrir a tom: par.! insl:úar novos disposi ti vos dI! EIS. Havcr.i apen:L~ um tipo ut: cabo. que servirá para conl!Ctaf todos os dispositivos. A energia para os dispcl!l>itivos de EIS deve ser fornecida por t!Ssc cabo. Até 127 dispositivos poderJo ser ligados a um único computador. O sistema deve suportar dispositivos de tempo real (por exemplo. som. telefone). Os dispositivos poderJo ser instalados com o computador em fu ncionamcnto. Não:;crá preciso reiniciar o computador após :l instalação dtl dispositivo. O custo de produção do novn barramento e de !iCUS disposi ti vos de EIS não deve ser alto.
~
o ~ ~
• "c •
~
o
O US B cumpre todos esses objt:uvos. É projetado para di sposi tivos dI! haixa ve locidade, Cl1mo tI••'Clados. mouses. d meras fotográfi cas. digitalil.:ldorcs. telefones digitais e assim pur diante. A versào [.0 te m uma largura de bunda de 1.5 Mbps. que é suliciente pam teclados c 1l1llUScs. /\ vcrsão [. [ fu nciona em 12 Mbps. que é suticiente para imprcssoras. câmerJ.s digitais e muitos outros dispo.~itivos. Esses li m i lc.~ babcos fomm escolhidos para manter o CUSIO baixo. Um sistema usa consistc cm um hub-r.liz (rIJIJ/lmb ) que é ligado ao barramento principal (vt:ja a FigurJ 3A9). Esse hub te m soquete~ par-J. cabos que podem ser conectados 11 disposiuvos de EIS ou a conexõcs de expan..iio. para rornecer mais SO quadros. fempo (mI)
,
o I FI ..., . :3.:5:5
Hub-rm USB emIte quadros B cada 1,00 1JIlI.
í
""""
!. Ouodro o) ..,,
,
3
:
,,
\§,'
I" lMóro,) \,,§/
J
Ouaaro3
/1
'
,.., P3c0tes da rall '...
l~j11~TAI~ ./
A PlIrnr' " •
••• -' do disposlliva " '"
ISYNI Plol PAYLOAD leRei
- ---------_.., ... , .. ". ,
"" " " , ..-
,
Na Figura 3.55 não h,í nenhum lIelViço a ser realizado nos quadros O e 2, portamo basta ap. Além disso há algumas pequenas difcrenças. como a interfuce cntre o hub-miz e o con trolador. O USB 1.1 tin ha duas interfaces disponíveis . A primeim. UH C I (Universal Hosl C ontroJler Interfa ce - intcr fa ce uni vcrsul de clln lr ol:ldor de hospedeiro ), foi projel:ldu peJa lnteJ c passava gmndc partc da carga par.! os projelistas de software (leia-se: M i t:ro~oft). t\. segund.\. O H C I (Opcn Hust Cunlrollcr Interface - inter face abcr ta de cnnlTlllado r de huspl.>cleiro), foi projel:1da pela Microsoft e passuva grande parte du carga para os projetistas de hardware {leia-se: Intel). No usa 2.0 todo s concordaram com uma novu interface única dcnomi nadil EHC I (Enh um..'Cd Hust C unlroller lnlerfllce - inte rface rnclhllrdda de controlador de hospedeiro). Ágora que () USB runcio nava a 4110 MbJls, passou a compclir ctlm o harramcnto serial IEEE 1394. mais conheCIdo como FircWire. que tilllciona .. >l()O Mbps. Embora prllticamelllc tndo novo ~ i ,~ tc m " Pentium anmlmente venha com USB 2.0, não é pmv,ivel que 11 1394 desilparcça porque tcm u apoio da indústri a de eletnlnicos de consumu. CalHcorders. aparelhos de OVO c lliSllllsitivos similares comin uar~10 a ~e r .::q uipados com inlerfaces 1394 no futuro pníxllllo jl<.)f(.jU": ,l~ fa hneanles do;:sse~ disposilivlIs mio 'lucrem 11Hllcar a despesa de mudar par.l um padrão difc .. rcmc ~luC é poUCcl melhor do 4uC li disponívd no Ilmmcnto. Além disso, os c()n~umidorcs também não gostam de mudar de padrilo.
usa.
3.1
Interface
Um sistema de comput:ldor típico de pequeno a médio pon c consiste em um chip de cru, chips de me mória e algu ns controladorcs dc I3JS, todos concctados por um barramento. J.í estudamos memólÍas, CPUs ~ halT'.llllentos com certo detalhe. Agor.I chegou a hora de examinar a última parte do q uchr.!-cabcça. os chips de flS . É por mei\l desses .:hips ~lue li cornplltauor sc comunica com o mundo exterior.
3.1.1 Chips d e
EI s
Há inúmeros chips de I3JS disponfveis no mercado e novos ch ips .~ão lan"iados o te mpo todo. Entre 0<: chips comuns estão conlrOladores UA RT, USA RT e controladores de CRT, ':olltroladorcs de disco c PIOs. Uma UA R'I'
....
....
-
N
•
•> z
o
o
• •"-
u
co
N
••
-
o
n
,•
(Universal ASyllchronous Rl'i.:eivcr l'r~U1s m iuer - tr:msmis..'illf rL'Ccptor :lSsíncrono universal) é um chip que pode ler um bytc !.lo barram~nto de dados c cn trcgâ-Io um bit por vez a um lenninal por meio de uma linha serial , ou receber u:uJos de um twni naJ. Em gcr.il a.~ UARTs permitem vári:.ls velocidadcs de 50 a 19.200 hp.~: largura de caracteres de 5 a li bits; I, 1.5 ou 2 bits til! !im: c fornecem paridade par, (mpar ou nenhuma paridade. tudo sob controle de programa. USARTs (Universal Synd lrlmous Asynchronous RcccivCf l'ransmiUcrs - tr.msmissor receptor assíncrono síncrono universal) podem manipular tr,msmissão síncnma usando uma varit.-dadc de proluCOllIS, bem como cxecut:lmJo lodas as funçõcs da UART. Como já vimos UA RTs no C<.tpítu lo 1. agof.l vamos estudar a interface paralela comu ~,~cmplo de chip de EiS.
~
e o
u
•
n
•
~
o ~ ~
• N
C
•a o
Chips PIO Um I.:hi p 1)10 (Parallcl Input/Output - entrada e saída par.dela) típico é o Intel 8255 A. mostrado na Figura 3.56. Ele tcm 24 linhas que podem fazer interface com qualquer disposilivo cumpatível com TIL. por e:-:empio. teclados. comutadores. luzes ou i mpres~ora.~. Resumindo. o programa da C PU JXxle cscrevcr um O ou I para qualquer linha o u lcr o estado de entrada de qualquer linha. o que dá gra nde flc:-:ibilldade. Um pequem} sistema com CPU que usc uma PIO, muitas IIC'lCS pode substituir um plaea completa cheia de chips SS I ou MS!. em especial quando se trat:1 de sistemas embutidos. Embora a CPU possa conligurJ.r () 8255A de muitas maneir.lS carregando registrJdores de estado no interior do chip. concentraremos nossa atençãu nos modos mais simples de operolção. O mollo mais simples de usara 8255A é como três portas independentes de 8 hits. A, B e C. Associado com cada pona há um regislr:ldor com amostragem de 8 bits. ParJ estabelecer as linhas cm uma pona, a CPU apenas escreve um mímero de 8 bits no regislrJ.dor I.:orrespo ndente. e esse número de 8 bits aparece nas Unhas de saída e rica ali até que () registr.tdor ~eja reescrito. Para usar uma porta para entrada. a CPU apenas lê o registro corrcsponde nlc. Out ros modos de opcmção executam LrOCa de dados com dispositivos externos. Por exemplo. para dar saída parJ. um dispositivo que nUl) está sempre pronto para acei13r dados, o 825SA pode apresentar dados em uma pona de saída e esperar que o dispositivo devolva um pulso infonnando que aceilou os dados e quer mais. A lógica necessária para amostrar tais pulsos e !Omá~ l()s disponíveis para a C PU está incluída no hardware do 825SA. Pelo diagrama funci o nal do 82S5A podemos ver que. além dos 24 pinos p,lra as três portas. ele tem o ito linhas que se conectam diretamente com o balTamento de dados. uma linha de seleção de ehip, lillh:l~ de leitu ra e escrita e uma linha para reinici ar o I.:hip. As duas li nhas de endereço selecionam um dos quatro registradores internos colTCspomlentc.'i às ponas A. B. C e ao registrador de estado, que tem bits que dete rminam quais portas são para cnlmda c quais parJ. saída. além de (lUtrJ.S funçõcs. Normal mente as duas linhas dt: endereço estão conectadas aos bits de ordem baixa do barramenLO de endereço .
cs AG-A l
flaura 3.56
WA
Chip 8255A PIO.
AO
RESET OQ.D7
•
2 Chip 8255A
do EIS
paratela
•
• •
Porta A
Pona. PonaC
3.1.2 Decodificação de endereço Até agora fo mos propositalmente superficiais sobre e~mo a seleção do chi p I! :Itivada na memória e nos chi ps de EiS que já vimos . AgOr:1é hora de examinar com mais euidado como isso é fe ito. Vamos considerar um compuUldar embutido simples de 16 bit~ que consiste em um:! CPU, um:! EPROM de 2 K.13 X S byles para o progranl:l, uma RAM de 2KB X R byte para os dados e uma PIO. K'isc pt.~ UCll() sistema p\KIc ser usado como UIII protóti po parJ t) cérebro de um brinqut!do barJ.to ou um e!t:trmjolll\!stico ~i m pll!s. Uma vez e m p rod u~;iu, a EPROM puderia ~er ~ub.~ titu íd:J por uma ROM . A PIO pude ser ~c!eci\mada de um enlre dois modos: como um verdadeiro disPllsitivo de EIS (lU como pane da memória. Se opramlOs por US;"j - l:1 como um dispusitivo de EIS. então devemos ~cleciomí-l a usando uma linha de barrJ.mcnto ex plícita que indica qUI! um dispositivo de EIS está .~endo referendado. e não a memória. Se US:lrtnOS a \} utru :lbordagcm. EIS mapeada par'J. a IIlcmtÍl; a. cntIjo tcmos de lhe designar 4 hytes 00 ...spaçu de mem~Sri a para as l,rC S ponas I! () registrJ.dOl' de controle. /I. eswlha é. de cena fomlil, arbirr.iria. E~cnlhere mns EIS mapeada pura a memória porque e la ilustra alg uns aspectos ill1cressallles da interface de EIS . A EPRO M nel.:essita de 2 KB de espaço dI! I!nul!reço, :t RAM l:lmbém preci sa de 2 K de espaço de endereço e a PIO precisa de 4 bytcs. Como () esp:lço de endereço de nosso exe mplo é 64 K. temos de eS(;olhcr ontle colocar os tres disposilivtls. Uma opção possível é !l\ostrn.dn. na Figura 3.57. A EPROM ocupa endereços a h~ 2 K, aRAM ocupa endereços ue KB a 34 KB e a PIO ueu pa os ~ bytes mai s altos do espaço de endereço, 65532 a 65535. Do ponto de vista tio programador. nuo l':Jz diferença quais endereços são lIsados: contudo. isso mio aconteec quando se IrJ.ta da inlerf:lce. Se tivcssemos uptado por endereçar a PIO via espaço EiS, da n:'io precisaria de nenhum endereço de memória. mas precisaria de quatro espaços de endereço de EIS,
n
EPROM em II!'\defOÇOt O
ngura 3.57 Localização da EPROM, RAM
e PIO em nosso espaço de endereço de 64 Im.
'I- -- ---'I
RAM em onoereços 8000H
-
'
,!
PIO em FFFCH
c c
•
das ligadas às linhas de endereço A 11 a A 15. Se. c somente ~, todas a cinco linhas forem O. a saída será O, o !.I UC ativa CS (que é ativ>ldo baixo). In felizmente. não e:
3.8
N
-
Com:1." designações de endereço da Figur:l. 3.57, a EPROM deve ser selecionada por quaisquer endereços de nll:mória de 16 bits du forma ()()()(lOxxXJtXX!UlXXX (binário). Em Outras palavr'J.... t{uatqu..:r endereço de mCm
j
'"
Resumo
Computadores s:'io construidos ç{)m bmic em chi ps de circuito integrado qut! ,,:onlêm minúsculos clcll1enlOs comutadores denominados p!lrtas. As P!)rta.~ mais comuns são ANO. OR. NAND. NOR e NOT. Circuilos Simples podem ser montados ao "I.! combinar diretamcnte pon llS individuais. Ci rcuitos mais t!omp lt!xus sãu tlIUlliplt!x:ldort!s. demu!liplexadorcs. eodilicadorcs. dccudi licadores. dt!slocadorcs e ULA .... Funçõc ~ booleanas arbitrárias podem ser progr:lnladas usando um PLA. Se fort!11l necessárias muit:ls funções bllolt!anas. os PLAs c()stumulll ser mais d i ciente:<.. As leis da álgebra booleana podem ser usadas para lt'.J.ns formar c ircuitos de uma foml!! para nUlra. Em muitos casos tE possível produ1.1 r circuitos mais econômi l,;os dessa maneira.
•>
"
o
o.
u•
o
-
",~m'""d]• • • •
'"
encer!!'ÇO
••
A"
"o
~
,• ~
so
u
•
~
•
~
•
éS X8
·
w
o
~ ~
• "c
2K '( 8 AAM
FIgura 3..'8 (a) Decodificação total de
P>o
(.,
endereço. (bJ Decodificação parcial de endereço.
•
BarramenlO
~
de endereço
o"
'7 '---
~
éS 2K x 8 EPRQM
L
'---
éS x8 RAM
2K
L
éS PIO
.,
A aritmética de computauores é efetuada por som:ldorcs. Um somudor completo de um s6 bit pode ser construido usando dois mciús-somauores. Um somador p:lr.l uma palavra mullibi t pode ser construído com a conexão de vários smnauorcs complCltlS de tal modo que pennita o vai-um par.! seu vb'.i nho da esquerda. Os componentes de mcmóri:1S (cslátit:as) são !ulchcs c !lip-Ilops: cada um dos quais pode arnlazcnar um bit de informuçãu. Esses bits podem scr combinauos linearmente fo rmando IUlehes octais c tli p-flops. ou por !ogariunos rlmnando memórias completas que usum palavr:ls. Há mcm6riali de vários tipos: RAM. ROM. PROM. EPROM. EEPAOM <;! !lashes. RAM~ I.!státicas nfio precisam ser re novadas; elas mantêm seus valores armazenados t!nquanto a energia es tiv~r ligada. RAMs dinàmk:as. por outro lado. devem ~er fCnovadas period icamente para w mpensar a fuga de corrente dos pequenos capaci tares do chip. Os componcntes dc um sistema de computador ~ ão conectados 1)1.'[ barramcntos. Muitos pinos - n.l0 todos - de um chip lIe C!)U tfpk:o comanllam dil"et:lll1l.!nu! uma linha de ba r~ ramento. As linhus de barraml!nto J>l.ldem scr divididas I!Ill linhas de I!ndcnaro. de dados I! de controle. Barramentos .. illcronos ~:1\l comandados por um rcltígio mc~ trc. Barr..unc nt o.~ :I.ssíneronm. u),am LrOC:lS cnlllplclas para sincronil ..:.ll" l) I!SCra\'ll cum ( J Il1I!),\rc. O PcnliulII 4 é um exemplo de uma CPU mlxlcrna. Sistemas modemos que usam esse chip 113m um barr:Llllcnto de llIelluiria. um barr:unento PCl. um barramcnto [SA e um barr.uncn[n US B. O b:Jrralllellto PC I puúc lr",.II\sl"crir 64 bits por vez a uma taxa de ó6 MHL, o ljue o to rna dpiJo ... u!kielllc para quase todos os !X!riféricos, mas não r.ipido sulidente para ml!mória. Comutatlores. luzes, illlpre~soras \! !lIuiws outros di:-;posilivlls de EIS podem fa ...er interface com computadores usandl) chips de EIS p:Jr.llda. como () M155A. Esses chips pOOem .~e r con tigumtlo~ como parte do espaço de EIS (lU do espaço úC nlel1)(iria. conforml! a necessidade. Eles podem ser tOlal ou parci almente tlceodHic;ldos, dependendo da aplicaçfio.
Problemas 1. Um especlalisla em lógica cnlr"J. em uma lanehonell! drivc-in c diz: "Quero um hambúrguer OLl um caeholToque nte e batatas fritas". Infelizmente o cozinheiro não sabe (ou niio se impona) ~e 'c' tem precedência sobre
2.
3.
4. S.
6,
7.
·ou· . ParJ. ele. tanto faz uma ou outra imcrpret:lção. Quais dos S(:guint~ casos são imerpretaçõcs válidas do pedido"! a. Apenas um hambürguer. b. Apenas Uni caehorro-quclltc. c. Apenas batata .. fritas. d. Um eachornKJueme c b:ltatas fritas. c. Um hambúrguer c bat.ala.~ fri tas. f. Um cachorro-quente c um hambúrguer. g. Todo os três. h. Nada - \) espccialisl."l em lógica passa fome por ser um espertinho. Um missionário perdido no sul da Califómi a pára em um cntnmcamento da rodovia. Ele sabe que duas gangues de motociclistas fre4üe nram a área ; uma ddas sempre diz a venJ,l(le e a outra sempre mente. Ele quer saber qual estmda leva à Disnc)' lândia. Que pergunta deve fazed ~. Use a tabela-verdade para mostmr que X = (X ANO Y) OR (X AND NOT 1"). Existcm quatro funções boolt:anas de uma únic:1 variável e 16 funçõcs de duas variáveis. Quantas funções de três variáveis existem? E Je /I variáveis'! Mostre como a função ANO pode ser construídn com base em duas portas NANO. Usando o chip multiplcxaJor de três variáveis da Figur::l 3.11. implemente uma função euja saída é a paridade das enlradlls. isto é. a saída é I se. e somente se. um número par de entradas for L POIlha seu 'c:lpacete de raciocínio'. O chip multip[exarJor de três variáveis da Figui.l3.11 pode caJcul:ll' ulIla funçào arbitr:iria de q/lfltro variáveIS booleanas. Dc.~crevn como e, :l útulo de exemplo. desenhe o diagrama lógico para a função que é Ose a palaviJ. ingl..:..'W parJ. a tila da tabela-verdade ti ver um número par de letms, é 1 se tiver um númcro ímpar de lelras (por exemplo, 0000 = zero = quatro lelm."; --+ O: 0111 = seven = cinco letras --+ I : 1101 = Ihineen = oito letras -+ Dica: ~ dcnominannos a quarta entrada variável D, as oilo linhas de entrada potlern ser ligatias a V,..,. term. D ou D. Desenhe o diagrama lógico pam um decodilkador dc 2 bit... um ci rcuito com quatro linhas rJe entiJ.da. exatamente umu das quais é alta em qualquer instante t!ado, e duas linhas de saída cujo valor binário de 2 bits informa qual cntiJ.du é alta. Desenhe o diagrama lógico para UIl1 demultiplexador de 2 bits. um c ircuito cuja unica linha de entrada é direcionada para uma das quatro linhas rJe saída dependendo do ..:.... tado das duas linhas de controle. Desenhe novamente o PLA da Figut'J. 3. 14 com dctulhes suticicntes para moslr.U' comO:l função lógica majorit.1ria da Figura 3.3 porJe ser implementada. lmpona.mc: não esqueça de mostrar quais conexôcs estão presentes em ambas as matri/.cs. O que esse cireuito faz'!
m.
8.
9. 10 .
11.
c f---+-{>~-D
12. ,Um chip MSI comum é um so m:ldnr de .. bits. Quatro de!;sc.~ chips podcm ser conccts o inielu da J.diç:1o. ParJ. /I giJ.udc. o te mpo req uerido para o vai-um f:l1,cr llli.msporte .Icelerado (ri!'I'//! ) até I) eSlágio de nruclIl alta pode scr imlccitavdmcntc longo. Projete um SOlllador que fu nóunc com mai:. iJ.pideL. Dica: cada Cf pode ser expresso em termos dos bi ts de opcmndo Ar I e 8 , I' bem corno do v:li- um C, I' Usando essu relação possfvel expressar C, corno uma função das entr:ldas parJ. os ..:..~ t:ígios O a i - I. de modo que todos us vui- ulll possam .~er gcradl)s simultaneamcnte . 14. Vamos arJmitir que todas as I>orlas da Figur.1 3. 18 te nham um aliJ.SO de propagação de 1 nanos.~eg undo c que podemos Ignomr todos os outros :ttrJ.sos. Vamos admitir tambêm 4ue temos um circuito com essa cnnligurnção. Qual o mcnor te mpo pam e~St! circuito ter ccrte7_a de que um bit de saída c v:ílido'! 15. A UL.\ da Figura 3. 19
c
--
'" •
•> z o
o o ~
•
u
-
N
'"
-•• "
o
~
,
~
8 o u
• • •, ,
~
-
~
"
~
'.• -• o
~
N
C
~
O
17. Às vezes é útil que uma ULA de 8 bi l~ comu a da FigurJ. 3.19 gere ti constUJ1lC - 1 como ~ aída. Proponha dois mooos pUfa fazer isso. Espcdriq uc os V;J[orcs dos seis s inaLS de controle paru c~Ld:1 um deles . 18. O que é o cstauo quicsccnt..: das e ntrad:.L~ S c R par.t um lalel'! SR composto de duas portas NANO? 19. O circuito da Figura 3.25 é um ilip-flop (Iut: é acionado na borda
4 1.
42. 43 .
44.
45 .
~
l • • • •
nla! o computador é reduá do durnnte ulJla transferência DMA se cada tr".Ulsti::rência DMA de 32 bits leva um ciclo de b.uTJmenlo? A máxima carga útil de um pacOle de dados isocrono no barrnrnenlo US B é 1.023 bytes. Admitindo que um dispositivo pode enviar s6 um pacote de dados por qU:Jum. qU:JJ é a máxima l
M M
•
•>
'"o M
o
= ~
•
u
N ível da micro arquitetura
n(vcl :l.cima do lógico digital é o nível de microarquilclura. Sua função é implementar o nfvel (SA (lnslJ'Uction SeI Archilccturc - arquitetura do eanjumo de intruçõcs) acimu dele. como ilustr.ldo na Figurn 1.2. O projeto do nível de microarquitctur:J. depende da ISA que está '\cndo implcmcnl:lda. bem como das melas de custo e desempenho do CO nlpUlaJor. Muitas ISAs modcm3l>. em p:utkular projetos RISC. têm instruções simples que usualmente podem ser executadas em um único ciclo de relógio. ISAs m:lis complc."tas. como a ])cntium 4, podem demandar muitos ciclos paiol executar uma única instnll;ão. E:H'Cular .. ulIla Instrução pode requerer locaJil..ar O" upcrandos na memória. ler esses opcr.lJ1dos c armazenar resultados de vollu ml mem6ria. A seqüência de opcrJçtks dentro de uma únicu inslruç:1o muiws VCl.t$ leva a uma abordagem do cnnlrole diferente da adt'l1ada para ISAs simples.
O
Um exemplo de microarquitetura
4.1
o
ideal seria que nós aprc.\Cntássemos esse tópicu explicando os princlplOS ger::Us do projeto de mieroarquilctur.t. Infelizmente. não hã princípIO" ger.tis: cada microarquitelUr.:l ~ um easo especial. Por conseqüência. resolvemos disculir um exemplo detal hado. I).$a nossa ISA que scrvir.i de ..:xcmplo. escolhemos um subconjul\lo da J:'lV3 Vinual Maehine, como promch!lllo." no Capítulo I. E.\SC subconj unLO contêm somemc instruçõcs com inteiroS. ponamo nós o denominamos IJVM . DisculJremos a JVM completa no Capírulo 5. Começaremos pela descrição da micruarquitclura sobre a qual implementaremos :I IJ VM, arquitetura que tem algumas instruções comp!cxus. Mui tas. dessas arq uitetur:lS costumam ser implementar.b s ao se recorrer à microprogramação. como discutimos nl) Capítulo l. Embu", a UVM seja pequena. é um buril pontO de panida para descrever u controle e a seqü6ncia de instruções. Nossa microarquitetur.l comerá um microprograma (em RaM) euja tlrefa é buscar. decodificar c executar instruções [JVM. Não podemos usar o interpretador Sun JVM par.! o microprogr.una porque pn:cisamos de um microprogr..lma di minutu 4ue comande com efica:ncia as punas individuais no hardware propriamente difO. Porcompar..IÇ30, o interpretador Sun JVM roi escrilll em t por qucst50 úe portabilidade. e não pode eururolar () hardw:.m: no nivel de detalhe que pn:cisamos. Uma ve7. que (} hardware UUIi7.."k11l etl ns i ~tc ~omcntc nos ctl mponcnt c~ básicos descritos nu Capítulo 1. em teoria. -.c o leitor emender completamcnte esse capituhl. dcver.i cst:lr habilitado a ~a i r c Ctllllpr:lr uma sacola de 1r:lIlsi~lorcs e montar esse .~ ulx:onjunto da máljuin,1)VM. O~ eSlLldau t e~ que cun"t.!gUlrem executar essa 1arefa com ~uces~o ganhar.l0 crédi LO~ I!xtr..l" (e um exame psi4Ui,itrleu compll,:[oj. Um müdelo cnnveniente para li projeto de micmarquitetura é pensar no proje1o como um pmblellla de progr:unaçiio no ljual cada mSlruç:.in nu IlLvel IS/\ ~ uma função a sl!r chamada ]}l.lf um progr:una mcstre. Nesse moucJn. o pmgr:tm:l mestre li um laço "imples. ~cm li m. quI,: lletennina uma função à ~er invocada. chama a timç:l0 e então comcça de novo. :lIgo muito parceiuo com a Figura 2.3. micruprogmma tem um cunjunlll de vari:iveis denmni nado cstudo do computador. quc ptxlc ser acessado por todas as ti.lrn,:i)C~. Cada funltão alter.l ..10 mcnos algu mas úas variáveis que compõem o estado. Por exemplo. o contador de programa l Progr.un COllntcr - PC) é pane do ....!>Iadu. Ele indica Illocali:t.aç;1o da memória que cuntem a prõximll função (isto é. ins trução ISA) a ser C,'(ccutada. Dur.lIlte..l execução de cada ill:.trução. o PC I! incrementado par..l indicar a proxima instrução lIloCr executada. Instnlç[)es IJ V M ~iío ...-unas .... fáceis. C.lda instrução tem alguns campos. usunlmentc utn ou dois. e cada um deles tcm :tlgum:t.~ lin:tlidades e~p .... cílkas. primeiro campo de toda instnll,:iio é () opeude (abrcvimur..l de Illlenliun code - c6digo de
a
a
134
- - - -- ----.---.
__
.-_._-
...
'"T
'oi
• li l
• • • • • I
opcr:.lC\:1o), 4uI! illcntitica a instrução informando se ela é um AOO oU um BAANCH. oU qualquer OUIr.:l. coisa. Muitas instruÇõc:, têm um campo adicional que cspccilka o operando. Por exemplo. instruções que acessam uma vari;\ vel local precisam de um campo qUI! identifique quaL variável. Esse modelo de execução. às vezes denominatlo ciclo huscar-exccutar. é úlll em lermos abslr'•.I\os c também pode ser a rnlsc purJ implementação de ISAs como a IJVM. isto é. que tenham ;nstruçiks complexas. Logo adiante descreveremos como ela funciona. qual é o aspecto da rnicroarquitctul"'"J. e corno ela é controlada pcla... microinsr.ruçõcs: cada uma delas controla u caminho de cb.dos dumntc um ciclo. A lista de microinstruçiics fonna o micro.. progr.uru. que apresentaremos c discutiremos dctalhadamcntc.
-"''" •"
=
• •
4.1.1 O caminho de dados
o
caminho de dadus é a pane da CPU que contém 11 ULA. suas entr..ldas e suns saídas. O cnminho dc dados dc nossa microarquilctura de exemplo é mostrado na Figura 4. I. Embora tenha sido cuidadosamente otimizado parO! intcrpretar pmgmmas IJVM. cle guunla uma r.lZoável semelhança como o cantinho de dados usado na maioria das máquinas. Contém vários registradores de 32 bits aos quais atribuímos nomes simbólicos como PC. $P c MOA. Embora alguns dl.:."scs nomes sejam fa miliares. é imponamc tntcndcr que esses registrado~ são occssfveis apenas no nível de microarquitctur.:l (pelo mieroprogrJ.ma). Eles recebem esses nomes porque usualmente com em um valor correspondente li. variável do mesmo nome na arq uitclUra do nível de ISA. A maior pnne dos registradores pode dingir seu conteúdo para o barramcnto B. A saída da ULA comanda o deslocador c em seguida o barramento C. cujo valor pode ser escrito em um ou mais registradores ao mesmo tempo. Por enquanto não há nenhum barramento A: adicionaremos um mais adiante. A ULA é idêntica às mosttIl.du-" nas figuras 3.18 c 3.19. Sua função é detcnninada por seis linhas de controle. O segmento de reta dingonal com rotulo '6' na Figura 4.1 indica que há seis linhas de controle de ULA, a Sólber: Fo e FI parJ. detenninar a opemção da ULA: ENA e ENB pum habi litar a.s enlrJ.da.~ individualmente; INVA pam invener a entrada esqucma e INC parJ. força r um vai-um parJ. o bit de ordem baixa, efetivamente adicionando I ao resultado. Contudo. nem todas as 64 cumbinuçõcs de linha." de controle de ULA fazem algo de titil. Algu!n:L~ das cumbina~ões mais interessantes sãu mostradas na Tabela 4.1. Nem todas essas funções são necessârias par:J. a IJVM. mas. para a JVM cumpleta. muitas delas viriam a calhar. Em muitos casos. há várias possibilidades de conscguir o mesmo resultado. Nessa t.:.Lbcla., + significa o ' mais' aritmético e - signilka o 'menos' aritmético; assim. por exemplo. - A significa o complemento de dois de A. ~
:1
I
MAR
T
R8QlS1fadores M
"oR
I
T
""um" mória ""
~
? PC
T
?
'·MãÃ-~
...... H
-
-I
SP
T
r
F=<
LV
SInais de contrda
T ? cpp T ?
R gura C.1
Caminho de dados da
microarquitct\Jla usada como exemplo nt$te C
t t
TOS
Barramen!'c
'" lU
CPC
T
-
r
Escreve!' barr:un&r1l0 C ~ra
r&gIS1f1lOO
~ \
\
F=< I
H
'
paf. barrotnanto B
r
T
-I
H(lb~irar
~
ULA
-- ,arramenlO B ,
I-:
N Z
J~ CorItrole do dllslocadof
DeslOcadOr
2
"u"
'" •>
'" ~
"o
'"M
-••
Tab. la 4.1
•
P'o
l'l
• o
O
,
o O O
6 o u
• • ,•
O
~
O
~
o
O
A
O
O
8
O
Ã
O
O
ã
O
O
•
A + B+l
O
A+ I
O
8+' 8-A O
O
O
O
AANDB
O
O
AORB
O
O
O
-I
~
"c •m
O
O
O
8- 1
-A
O O
A+6
O
O
~
o
FUnção
O
~
-, ..•
me
lNVl\
o O
~
·
Combinações uleis de sinais de ULA e a função executada.
O
O
O
O
O
O
O
O
A ULA da FigurJ. 4.1 precisa de duas cntr..das de dados: uma entrJ.da esquerda (A) e uma enlr'.lda direita (B). Ligado àentmda esquerda estú um rcgislroldorde rClcnçilo, H. LigaJo à enlmda direi t.a e:>lti () barr.llllCnlO B que pode ser carregadu por cada uma de nove fomes, indic:tdas pelas nove setas cinza que c hegam alé de. Um projeto aher-
nativo, com dois barmmt!ntos completos, tem um conjunto diferente de opçõcs de projeto e será discutido mais adiante neste capftulo. H pt.Xlc scr carregado com a escolha de uma função ULA que passe diretamente da entrada direita (vinda do barramento B) até a saída tia ULA. Uma fu nção desse tipo seria somar as enlmdas da ULA. porém com ENA negado. de modo que a entrada esquerda é forçada a zero. Adicionar .lcro ao valor no barrJ.mento B resulta somente o valor no barrJ.mcnto B. Então esse resultado pode ser Pill'sudo pelo dcslocador sem modificaçao e armazenado em H. Além das {unçõcs citadas, duas nulr.lS linhas de controle podem ser usadas independentementc para controlar a saída da ULA. ~LL8 (Shift Lef! Logical) desloca o conteúdo pam a
Temporização do caminho de dados A lempuri7.aç:lo desses eVCIllOS é mostrada na Figul'3 4.2. Um pulso curto é produzido no início de caili1 ciclo de relógio. Ele pode ser derivado do relógIO principal. como mostra a Figuf"J. 3.2(}(c). Na borda descendente do pulso. os hiL'i que cumandarJo toda:; as portas sào ajustados. o que leva um tempo linito c conhecido. j,w. Depois \) rcgistr.tdnr nt..'cessário no barramento B ê selecionado to! conduzido até o barrJmenlO 13 . Demora .lx pam o valor ser eSlávcL Enruo a ULA e o des loc:.ldor começ:.lm a upc mr com iliu.Ios válidos. Apüs um outro .ly. as saídas da ULA e do dl!.~ l ()cador estão estüvcis. Após UI1I ~z adicional. os resultados se propagarJ.m all longo do barramento C até os registradores. onde puJCI1I ser carregados nll bnrda a.'iCendente do pr6ximo pulso. A carga deve ser acionada pela borda ascendente dt} próximo pul so e de forma r:ipida. de modo que, se alguns dos registrJ.dores de entrada forem :l.lLerados. o efeito não scrJ sentido no barr:.lmentu C até muito I.\:mpo após llS regis tmdores lerem ~ ido carregados. Também na borua :l..'iCcndcnte do pulso. ti reglslrador que comanda t) barrJ.me nto
Registradores carregados Instantaneamente do barrnrnenlo C li da ITlIImórie na borda lI!lCendente do relógio
Sarda do deslocador estável
Ciclo 1
começa aoui I
I
I I
figura 4.2 DIagrama de temponznçào de wn CIclo de caminho de dados.
\
I
, _
tn
t:.y
.lW 1 ..\lI
-+---------r-
I
I IV.
,- -i
Novo MPC usado
_
_ _ para carreg.ar MIR
i
com 11 próxima
mK:Ioinslrução aqui
'-v-''-r-'~_
t
t
SinaiS de p1cparaçào
.
ULA fi o áesIocador
para comandar o caminho de dados
Orne H fi
Propagação do deslocador 81é
barramento 8
01:1 ragrstmdores
MPC
L
4.
• •o"
~
o
disponrvel
.qul
B p:írJ de fa:t..ê~lo prcpar.mdo-se par.! O próximo ciclo. MPC, MIR c a memória são mencionados na tigura; em breve discu Lircrnos seus papéis. É importante perceber que. ainda q ue não haja nenhu m elemento de armazenamento no caminho de dados. há um tempo de propagação tinira por ele. Uma altcr.lção de valor no balTllme nlQ B s6 provocará uma alteração no barr.unc nto C após um tempu ti ni\o (por causa dos a trasos finitos de cada etapa). Por conseqUência. mes mo que um amlucnmnento altere um dos regis rmdores de e ntrJda. o valor estará guardado em segurança no rcgistrJdo r muito antes q ue o valor (agorJ incorreto) q ue está sendo colocado no barramento B (ou H) possa alcançar aULA. Fazer essc esquema fu ncionar requer rígida te mporização, um ciclo de relógio longo, um tempo míni mo de propagação pela ULA conhecido e uma carga rápida dos regis tmdores pelo barramento C. Contudo, com cuidado~ 'ia engenharia, o caminho de dados pode ser projetado de modo q ue funcione eorrew.mente o tempo todo, Na ver~ dade, as máquina.'\ reais funcionam desse modo, Um modo um pouco diferen te de ver o ciclo de caminho de dados é imagi ná-lo frag me ntado em subcidos implícitos. O início do subcido I é acionado pela borda desce nde nte do relógio, As atividades que ocorrem dum nte os s ubcicJos s ão mos tradas a seguir. j unto com os comprimentos dos subcic10s (entrc parênteses). 2, 3.
-'"
_I 1-- Ciclo de relógio 2 ----I
Cido de relólllO . 1 ]
,....
Os s inais de controle são aj uslados (Ilw). Os registradores são carregados no barramento B (àx). Operação d.t ULA e dcslocador (/ly). Os res ul tados se propagam ao longo do batramento C de volta aos registrado res (6.;::).
Na borda ascenden te do próxi mo ciclo de relógio, os resu ltados são armazenados nos registradores. Dissemos q ue é melhor imaginar os subcidos como implícito.~. Com isso, queremos di1.er que não há nenhum pulso de relógio ou outms s inais expHcitos q ue indiquem li ULA quando opera r 011 que diga m uos resul tados que ~ntrc m no barramen to C. Na verdade. a ULA e o des locador funcio nam o tempo todo. Contudo. suas e nlradas são lixo até um tempo ó'w + Ilx após a borda descendente do relógio. Do mesmo modo, suas saídas são lixo até que IlIV + lix + ~y ten ha tra nscorrido após a borda descende nte do relógio. Os únicos sinais expHcilos q ue coma nd:lm o caminho de dndos são a borda descenden te do relógio, que inicia o ciclo do cam inho de dados, c a borda :Iscendente do relógio. que c:lrrega os registradores a partir do basrJmento C. As outras fronteiras de subciclos silo determinadas implicitamente pelos tempos de propagação inerentes dos circuitos envolvidos. Cábt: aos engenheiros de projeto gurulllir que o tempo /lll' -+- .lx + ~y + /lz venha sulicientemenle a.ntcs da borda aseendeme do relógio pa.ra fazer com quc o registrador carregue trabalho O tempo todo.
Operação de memória Nt)~Sil m;íquilla tem doi:-ô modos diferentes de se comunicar com a memória: uma porta de mc rntiria de 32 hiL~ elU.lereçâvel ror palavrJ e uma porta de memória de 8 bits c ndcreçâvel por bylt:s. A porta de 32 bits é controlada por do is registradores. MAR (M elllory Address Regis ter - registrador d e e ndereço de memoria) c MDR (Mcmo ry Data Registc r - rcgistr:ldnr de dados de me mória), como rnostrJ a Figura 4.1. A pona de R bits é contmlada por um registrador, PC, q ue lê I hyu: para os 8 bits de o rdem baixa do MBR. Essa pun a (MBR) só pode ler dados da memó ria; não pode escrever dados para a memória. Cada um de.'\scs registradores (e lodos os outros registradores na Figura 4.1) é comandado por um ou dois sinais de controle. Uma seta cla....l sob um n.:gistrador indica um sinal de controle q ue habilila a .~aída do regisu-ddor par.. o hamunento B. Visto que MAR não tcm conexão co m o barramento n, não tem sinal de habilitação. H lamocm não te m sinal de hahilitação porquc esta sempre habilitado. por ser a única ent rada esquerda possível da ULA. Uma seta ncg"'J sob um registrador indica um s inal de eOlltrulc que csçrcve (isto é, carrega) o registrador a partir dn bamllm:lJ(u C. Uma vez que MBR nüo podc se r carregado a part ir do barramento C, não tem um sinal de cscrila (cmbor.. tcnhll dois o utros :-ôinais de hahilitação descritos milis adiante). Para iniciar uma leitura o u escrita da
•> z
<Xl M
•
•o ~
,• ~
MAA de J2 bits (contagem.,.,.. palavras)
n gUr3 4.3
Ma.peamento dos bits em MAR para o barramemo de
TíW»J))))»J}))))))))))»J))));O
endereço.
11111 11 1111 1 1 1 1111 1 1111 1 11111 1 11
e
B.:UTaIOOf'lIO de
o
o
• • ,•" ,
~
~
•
~
'•". o
~
c
•
m
o
etIClereço de 32 bitII (carnagem em bytes)
memória, os regist.r:ldorcs dt! memória 3dcquados devem :;cr carregados c em seguida deve ser em itido um sinal de leitura OU escrila para a memória (não mOSlrJdo na FigurJ 4. 1). MAR comém enJcrc,os de palavras. de modo que os valores O. 1.2 ele. se referem a paJavr.l..S const:cutivas. PC contém endereços de In'te.~. lX>nanto us valores O. 1.2 I!tc. se referem ::I hylcs consecutivos. Assim. colocar um 2 em PC t! inidar uma leitur.!. de memória lerá o bytc 2 da mcmóri:J. c o colocará nos 8 bits de ordem baixa do MBR. Colocar 2 em MAR c iniciar uma leiturJ de memória lcr.i os bylcs H- l I (isto é. palavra 2) da memória e os coloca· rá em MOR. Ess:! di fcrença de funcionalidade é necessária porque MAR e PC sel"'Jo usados para referenciar dua.~ partes difere ntes da melllóna. A necessidade dessa distim,:ào jicarCl mais clar..! adiante. Por enquanto, basta dizer que a combinação MARlMOR ~ usada par..l ler e escrever palavl"'.1s de dados de nível ISA e a combinação PClMBR ~ usada para ler o prognlma executável de nível ISA. que consiste em uma seqilência de bytes. Tooos os oulmS rcgislrndorcs que contêm endereços usam e ndc~o de palavm.~. como o MAR. Na implementaçiio física propriamente dita. há apenas uma memória real que funciona com bytes. Permitir que MAR conte palavras (isso é ncccssaria por causa do modo como a JVM é delinida) enquanto a mem6ria fisica conta byleS depende de um e.str::llagcma simples. Quando o MAR é colocado no barml1lento de. endereço. seus J2 bit.. não são mapc;ldos diretamente par..! as 32 linhas de e ndere~a, () - 3 1. Em vez disso. o bit {) do MAR é ligado à linha 2 do barr.1rm:l1lo de endereço. o bit I do MAR é ligado à linha 3 do barr..!menlo de endereço e assim por diallle. Os 2 bits superiores do MAR são descartados, visto que sÓ são necessários paro endereços de palavra acima de 2 32, nenhum dos quais é legal par..! nossa máquina de 4 OS. Usando esse mnpeal1lt:nto, quando MAR i I, o eooeR:'Ço 4 é 'colocado no barramento; quando MAR é 2. o endereço R ~ colocado no b.uTarncmo e a.~~im por diante. Esse estratagema está ilustrado na Figur.! 4.3. Como já mencion3mos. dados lidos da. memória por uma porta de memória de 8 bits são devolvidos em MBR, um regislr..!dor de 8 hi{s. MBR pode );Cf copiado (gated) p3r:l. O barramento S por um entre dois modos: com sinal ou sem sinal. Quando ~ preciso o valor sem si nal. a palavra de 32 bil'i colocada no barramCnlo S contêm o valor MBR nos 8 bits de ordem bai~a e zcros nos 24 bits superiores. Valores sem sinal são úteis para inde~ar em' uma tabela ou quando um inteiro de 16 bil'i tem de ser montado a panir de 2 b)'tcs consec utivos (sem sinal) na seqüi!ncia de instrução. A OUlra opção puni converter o MBR de 8 bits em urna palavra de 32 bi ls é tralá-Io como um valor com sinal enlJ"e - 128 c t 127 e usar esse valor para ger..!r uma palavra de 32 bits com o mesmo valor numérico. Essa conversào é feita duplicando o bit de sinal MBR (o bit mais à esquerda) nas 24 posiçõcs superiores de bits do barramento B, um processo denominado extens;l(l de sinal. Quando essa opção é escolhida, os 24 bits superiores serão lodos Os ou todos 15. dependendo de o bi l mais à esquerda do MBR de 8 bit... ser um O tlU um l. A opçào de convertern MBR~e 8 bil5 "-'m um valor de 32 bit.. com sinul ou sem sinal no harramento B é determinada pur qual dos dois sinais de controle (sct:1.S clar..t.~ soh MBR 1111 Figura ".1) for ativado. A necessidade dessas duas upçõcs I! J rnziio de ha\cr duas ~las pre~nll::..!\ capa..:id:uJe de f:v.cr com que u MBR de 8 bits aja como uma liJllte de .12 hi ls para n baIr..!mcnto B ê indit:ada pelo retângulo lracejado na figum.
4.1.2 Microinstruções Par..! cOlllrular o eaminhu Jt! dados da Figur..! 4.1 precisamu... de 29 sinais. 4UC podem ser divididos em ci nco grupos funciunais. como Jcscreveremos ..!ltCguir. 9 ~inuis para controhtr e...crita de dados do barramento C parn registradores. 9 sinais para contmlar hahililaç:io de fCB istrJdores dirigidos ao hõ uT.lmento B para entrada ue ULA. 8 sinais pnra cOnlrolar as funções da ULA c lia dcslocador. 2 smais (miu mostr.ldns) para indicar leitura/escrita na memória via MAR/MDR. 1 sinal (não moslmdo) para indicar husca na memória via PC/MBR. Os valores desses 29 smais de conlmlc espcci licanl as operaçõcs par..! um ciclo clt) caminho de dados. Um ciclo co nsL~'e em copiar valores dos n:gistmdorc..~ par.! ti barr..!menlO O. propagar os si nllis pelu ULA e pejo deslocador. diri-
gi-lus ao bUIr..!mcmo C e. finalme nte. escrever os resuhallns 110 registradur uu registradores adequados. Além disso. se um sinal de Icilur..! de dados da memória for ativado, li upc rõl~ão de memória é iniciõldõl no final do ciclo de cam inho de dadl),~. apôs o MAR ler sido carregado. Os dadus da memurm eslão dispnniveis nu final do ciclo .çt:8 Ilim~
em MBR ou MOA e podem ser usados no ciclo que Vem clepois daquele. Em outras palavras. uma leltum de memória em qualquer porta iniciada no final do cldo k entrega dnrJos que não podem ser usados no ciclo k + I. porém somente no ciclo k + 2 ou mais tarde. Esse comportamcnto aparentemente .mtiintuilivo é explicado pela Figur::l ~.2. Os sinais tle controle da memória não são gemdos no ciclo de relógio [ até que MAR e PC sejam carregados na borda ascendente do relógio. próximo ao /ioal úo ciclo de relógio I . Considemrcmos que a memória coloca <;cus resultados nos barramentos de memória den tro de um ciclo. portanto, que MBA e/ou MDR podem ser carregados na prüxima horda usccwJcnle do relógio. jUlllo com os outros regis tradores . Em outras palavras. carregamos MAR no linal de um ciclo de caminho de dados e iniciamos a memóna logo após. Por conseqilência. na real idade não podcmos cspc.mr que os resultados de uma operação ue leitura eom 9 + 4 + 8 + :2 + I = 24 sinais. daí 24 bits. Contudo. esses 24 biL" só controlam o caminho de dados por um ciclo. A segundn parte do controle é determinar () que fa7,cr no ciclo segui nte. Para incluir isso no projeto do controlador. criaremos um Fonnato pa1'.l descrever as opcr.!çõcs a serem rc:dizadas usando os 24 bits de controle mais dois campos adicionais: o eam po NEXT.-AOORESS e o campo JAM. O eonteúdo de cada um desses campos será discutido em breve. A Figur.! 4.4 mostm um forma lo possfvel. dividido em seis grupos e contendo os seguintes 36 sinais:
• <.
'.
I
I I
I
-'" M
·•"• ·•" ~
c
u
::e
•> z
~
•
u
Addr - Contém o endereço de uma potencial microinstrução seguinte. JAM - Determina como a próxima microi nslru(fào é selecio nada. ULA - Funções da Ul A e do deslocado r. C - Seleciona quais rcgislr.ldorcs ~ à o escritos li panir dI) bal'tamento C. Mem - Funçõcs de memória. S .- Seleciona a fo nte do llarr-.llllenlO B: ~ codilic:l.uo como mostrado. A ordem Jos gm pns 10':. em princípio. arbitrária. cmbom na ycniade a tenhamos cscnlhiuu ctJm muito cuul:u.!o !lar:t minimizar cru/.:.nnenlO), de linha., na Figura ~ . j . Cruzamentos de linhas CII1 diagrama.~ esqucmâlkus comu ,j Bits
,
3
,
,
3
JJJSS~F,eE
NEXT.,.A.DDAESS
n gufII4..4
formato da rrucroinstrução para 11 Mie·!.
-
MAALA PMMLA C N Z81
JAM
I I HOT CLSP MMWAF N N NN POPVPCOAAfE'" ABve CSP AR rramsmo A EOH B
"C
ULA
c
M.m
O _ MOA
.
, . PC
5 . LV 6 . CPP
2 _ MBA 3.MBAU 4 . SP
a_opc
B
1 .. TOS
9 -15nemum
l~
...o
•
•"
o
~
•,
Figur-.t 4.5 costumam curresponder :.l cruZ:lfncnto de nais, portanto é mdhor rninimitií·los.
!io~
em chips. o que causa
problcm:l..~
em projetos bidilllcnsio-
4.1.3 Controle de microinstrução : a Mic-l Alé aqui descrevemos como o c;Lminho dI! dados é controlado, ma... ainda não descrevemos como é decidido qual dos ~inal s de controle deve ser habi litado em cada ciclo. rs~o é dClcnninado por um seqücnciad or. que é res.ponsável por cs<;:a!onar a ~cqü ência de upcr..u;õc .. necessárias pam a execução de uma única instnlção ISA.
O seqúcndador deve produzir dllis tipos de infonnação a cada ciclo:
~
• o
"• ~
• •," ,
~
•
.•• w
o
~
N
c
•
=
o"
I. O estado de cada sinal de controle nu sistema. 2. O endereço da microinstruçiio que deve ser cxccutllda cm seguida.
A Figum4.5 ê um diagr.una de blocos detalhado da microarquilCIUr.l completa de nossa máquina de exemplo, que uenominaremos Mie-I. Ela pode pareeer imponente de inCeio. mas vale:l pena estudá-la eom cuidado. Quando voci: entender tolalmeme cada relângulo e cada linha dessa figur.l, terá avançado bastame no entendimento do nível ue micruufl.Jui tetura. O uiagr•.11I1:J de blocos tem duns partes: o c:Jminho de. u:Jdos. à. esquerda. que já di scutimos del:Jlhadarm:nte. c a sc~fi{) de controle. 11 direitll.. que estudaremos agora. O nlluor item e também o mais imponante na parte do eontmle dn m:íquina é uma memória denominada :.mnazcnamcnto de controle. É conveniente imaginá-lo como ullla memória que. eontém () microprogralllll c()mpIClO, e.mbor.l tis vezes de seja implementado como um conjumo de porLUS lógicas. Em geral, vamo.~ nos referir a de como t) anna?.cn:'lIllento ue controle para evitar confusão com a memória principal. aceSl>:1d:l por meio de MBR e MOA. Contudo, em tcnllOS fu ncionais. t} amla7.cnamen{O de controle é uma memória que ~illlp l csme n u:. contém microinsmrções em ve? de i nsuu~õe s ISA. No caso da nossa máq uina de exemplo. ele contém 5 12 palavms, cada uma con.. isLindo em uma microinstruç:io de 36 biL~ do tipo iluslmdo na Figura 4.4. Na ve rdade. nem todas essas palavras são neee...sárias, mas (por r.aõcs que explicaremos em breve) precisamos de endereços para. 512 palavr.lS distintas. Em um aspecto impon:.allle o armazenamento de controle é bem diferente da memória principal: instruções na memória prineipal são sempre execu~das em ordem de endereço (exceto par:!. os desvios); microinsuuções não são. O ato de incrementar o contador de progr.lIna na Figur.l 2.3 cxpressa o fato de que a instrução padrJo (dt!folllI) a executar upós a i ns t nl~:io eorrente é a illStruç:io scguill1c à instrução eOCTClI1e na memória. Microprogmma.... pl\.'Ci-
MPC
ArmOlef1amento de COlItro!a de 512)136 bits. p6;rB
conter o mIcroprogmma
flgur::a 4 .5
Diagrama de blocos
completo de nossa IIllCIMfqUlIctura de JAMWJAMZ
2
ó 'Np-'" oe 1 bit
Sinais oe
~"'"
t
z
,.,,,,
Habiiíta
barramento a
2
t
€SCI'eI/a bat'ramento C il3ftI reglSlrlldOr
•
:iam dt: nmis th:lt ihilidadc (porque as seqilências de micminsInlçlks tendem a ser cUTms), punamo nuo costumam ter !!ssa pruprit.:uadc. Em vez disso, cada m icm illsll1J~ão cSIX-'Cilica expl icitamente sua 'iUCC:isor.l. Uma vez que em temlos funcionais o armazenamento de controle é uma memória (só de Iciturn), d e precisa de ~u próprio rcJ,;i str..ldur de endereço de memória c de seu próprio registrador de dados de memória . Não precisa ler nem cscrevcr sinai s porque é lido continuamente. Denominaremos o rcgislr.ldor de endereço de memória do armazenamento de controle MIJe (Microf"rugram Countcr - cnnhldor d e microprllgr:una). Esse nome é in}. ni(;O, Ullla vez que :to; [ocalizaçôcs nele sito cxplidlilmcntc não ordcmuJas. Ixmanto o conceito de contagem não é útil (mas quem somos nós par.! lutilr contrJ u tr.ulição?). O rcgharndor de dados I.k mt!mória é de nominado MIR (Microlnslruction Rcgister - registrador de micrninstruç50). Sua função é conter ;\ micruinslrução corrente. euj ns bits cOllmndam os ~ illai s de controle que operam o caminho de dado.~. O registrado r MIA na Figur.t 4 .5 contém os mcsmos seis grupos da Figura 4.4. Os grupos Addr e J (de JAM) comrolam li seleção da microinslrução seguinte e serJO discutidos em breve. O grupo ULA contém os 8 bits que sde· cionnm a funl.;:io ULA c comandam o deslocador. Os bits C fazem com que os registradores indi viduais carreguem a ~aída da ULA vindu do bamunemo C. Os bits M controlam operaçõcs de memória. Por fi m. os úhimos 4 bi ts comandam o dccodilicador que de tennina O q ue entra no barramento B. Nesse ca...o preferimos usar um decodificador padrfio 4 para 16. mesmo qUI! sejam requeridas apenas nove possibilidades. Em um projeto mais ali nado poderia ser usado um decodificador 4 par.t 9. Nesse caso. o compro misso é usar um circuilo padrJu que possa ser enCClntrJ,do em uma biblioll!ca dI! circuitos em vcz de projetar UIl1 circuito fabricado sob espcciJic:1ção. Usar o circuito plldrJo é mais simph!s c a probabilidade de introduzir bugs é menor. Construir seu pr6prio circu ito lisa mcno.'16.rea de c hip mas leva mais tem(Xl para projetar e h:i sempre a possibilidade de v()(.'é error. A opcrJç:1o da Figura 4.5 é :l seguinte. No início de cada ciclo de rclógio (a borda descendente do rel6gio na Figuro. 4.:2). MtR é carregado a partir da pulavr..t no arn1l.l7..cnamento de controle apontada pelo MPC. O tt!rnpo de carga du MIR é indicadt) na figura por Ill\!. Se pcnsanntls t! m tennos de subciclos, MIR é cam.-gado durame O primt:iro. Assi m que a micnlinstrução c! estabelecida em MIR. os vários sinais se propagam para úcntro do caminho de dados. Um registrador é copiado pur::l o barr..tmento 8 , a ULA sabe qual opcmção realizar e a atividade 6 frenética. E.~se é o segundo subciclo. Apôs um intervalo .ó.w + !lx a panir do início do ciclo, as entradas da ULA estão estávei s. Após um OUl1'o.ly tudo se acomoda e a.~ saída.'! da ULA. N. Z. c do deslocador estão est6.vcls. Entiio os val()~ N c Z são salvos em um par de llip-flops de I biL Esses bits. como todos os rcgistr.Klorcs que são carregados a partir do barr..tmento C e na memória. são salvos na borda ascendente do relógio. próxi mo ao fi nal do ciclo do caminho de dados. A saíl.hL da ULA não é serializada. mas apenas alimentada no deslocado r. A atividade da ULA e do dc:;locador ocorre durante o subciclo 3. Após um intervalo adicional. d ;:. a saída do dcslocador alcançou os registradores via barr..tmcnto C. Então os registmdores podem ser carregados pen o do final do ciclo (na borda ascendente do pul so de relógio na Figum 4.2). O subciclo 4 consiste em carregar os registradores e nip-Ilops N e Z e tcnnina um pouco al>Ós a borda ascendente do relógio. quando todo .. os resultados foram salvos e os resultados das opcmçõcs de memória anteriores estão disponíveis e o MPC foi carregado. Esse processo continua até que alguêm se entedie e desligue a máquina. Em paralelo com o comando do caminho de dados. O microprograma tem de detem\inar qual microinstrução excculUr em seguida. porque elas precisnm ser executadas na ortlcm em que aparecem no anna7,enamentll de controle. O cálculo do endcn..'ço da próxi ma microinstruç:io começa após MIA ter sido carregado e estar está vel. Primeiro. o campo NEXT....AOORESS de 9 bits é copiado para MPC. Enquanto essa cópia esta ocorrendo. o campo JAM é inspecionado. Se ti ver vulor 000. nnda mais é feito: quando a cópia de NEXT_AOORESS estiver concluída. o MPC apomar.i n próxima microinslrUção. Se um ou milis dos bils JAM for I. é preciso mais trabalho. Se JAMN estiver ati vado. o nip-nup N de I hit sofre uma operação OR com o bit de ordem alta do MPC. De modo semelhante. ~ JAMZ estiver ativado. é o Ilip-Ilop Z de I bit que passa pcla operação ORoSe :un bos estiverem aj ustados. ambos passam por ORoA r.17.;1o por que os l1ipIlops N e Z são necessj ri().~ é que. após ti bortla ascendente do relógio (enquanlll o relógio e~ t :i alto). o barTamento Il n:in está mais se ndo com:lIuJadll. portanto as s:lidas da ULA mio podem mais ser to madas corno cO!TClas. Salva!' os Ilags de estado Ja ULA em N e Z toma us valores com:toS disponíveis c estáveis par..t o cálculo Jo MPC. 8(:m imponar o que csteja ocorrendo na U LA. Na ~igur.l" .5. li lógic~ que faz esse c:1lculo é dcnominada 'bit aliO'. A funlfão booleana que da calcula é F .. (JAMZ ANO Z) OR (JAM N ANO N) OR NEXT~AOORESSI8! Note que. em todos os casos. MPC só pode a...sumir um de dois valores possíveis: \. 2.
O valor úe NEXT AOORESS. O valor de NEXT_ AOORESS com n bit ue ordem alta que pilssa por unm operação OR com I.
Não cxiste nenh uma outra possibilidade. Se o bi t de ordem alta de NEXT .AOORESS j6. for I. usar JAMN ou JAMZ não te m .iCnudo. Note que. quando os bi ts JAM sãu todos zeros. o endereço da próxima microinslrUção a scr executada é sl mplesmcnte o número de l) bits em .~c u campo NEXT _AOORESS. Q uanJo oU JAMN nu JAMZ é I. há dois suces~o rl!s potenciais: NEXT _AOOAESS e NEXT _AOORESS com operação O R com Ox 100. co nside rando que NEXT _AODRESS s; Ox FE (Note q ue Ox indica l.jue \1 número q ue vem em ~cguida eSl:1 e m hexaded mal .) Esse
-
-".
= o• ~
o"
•>
'" ~
o
=
EndereçO·r_C'O'O"'-_rJCAM:::'rCB~""::.:'=,=oo=o"tro""'::..:"'::..:oo=mc:',,,,=o;,:.;"'="""---, 0.75
I
OX92
L -_ _
001
~
__
~
____________
Bit JAMZ ajustado ~
Agura4.8
•"•o ~
MicroinStrução com JAMZ ajustado para 1 tem duas !Ucessoras pOteOl.1ais.
•o
Um',""
0><92
virá após Ox75
doponaendo
f
Oxl92
~
eo
do'
u
• • •"o
~
~
o
"
•
~
o ~ ~
• c" •
~
o
pOIHO é ilustrado na Figura 4.6. A microinslfU(;ão !.!orrentc, na I/x:l lil,açào 0:<75. tem NEXT_ADOAESS::: Ox92 e JAMZ :ljuSI:lUO para!. Por cOllseq üência, o próximo endereço da microinstrução depende do bit Z armazenado duraute :I opc raçào de ULA anterior. Se () bi t Z for O. a próxima microinstrução vem de Ox92. Se o hit Z for I, :l pr6;(Êma microinslfução vem de Ox 192. O tt.:rcdro bit no campo JAM é JMPC. Se de estiver ativado. os 8 bil<; MBR passam por uma opcrJ.ç:io OR bi t :t bit com os 8 bits de onlc.:m baixa do campo NEXT_ADOAESS que vem da microillstruç:1o corrente. O resultado é enviado a MPC. a retângulo com o rótulo ' 0' na Figura 4.5 faz uma a R de MBR com NEXT_ADDRESS se JMPC for I. mas apenas passa NEXT...ADDAESS diretamente para MPC se JMPC fOI" O. Quando JMPC .s I, os 8 bits de ordem bai:t:l de NEXT _AODRESS normalmente siio zero. O bit de ordem alta pode ser O ou I. portanto o valor de NEXT_ADDAESS us:!do com JMPC nonn almcnle é OdXX) ou Ox \00. A r..Jzilo para usa r às vezes OxOOO e às vezes Oxloo ser:i discutida mais adiante. A capacidade de efetuar O R entre M8R c NEXT_ADDAESS c armil7.cnar o resultado em MPC permite uma imp!cmel1wç:io eficiente de um desvio multivias (jUl/lp). Note que quaisquer dos 156 endereços pode ser especificado, determinado exclusivamcnu:: pe los bits presentes em MBR. Em uma miJização típica. MBR contém um opeode, pon anto a utilizaçilo de JMPC res ultar:.i em uma seleção {m ica pam a próxima rmcminslruçiio a ser executada para todo opeodc possível. ESSe método é útil par.! fazer desvios rápidos dirctamcnte par:! a função correspondente ao opcode que acabou de ser buscado. Entender a temporização da m:íquina é crítico para 11 que vem a seguir. portanto. UlIvcz valha li pena repe ti-Ia. Faremos issO em ICnllOS de sulx:idos. uma vez que ~ !:i.ci l de visualií'..:lr. mas os únicos evcmos de relôgio reais são a borda deSCendente. que inicia0 cieJo, e a borda ascendente. que carrega os regis tradores e os llip-l1ops N e Z. Favor se referir ti. FigurJ 4.2 mais uma vez. Durante o subeielo I, iniciado pda borda dt!sce ndcmc do relógio, MtR é carregado a punir do endereço eontido em MPC no instantc em questão. Durante o subcido 2. os sinais de MtR se propagam e () barramento B é carregado a p:lnir do registrador selecionado. Durante o subcicJo 3. a ULA e o dcslOC:J.dur funcionam c produzem um resultado estável. Duran te o $ubciclo 4. os valllres do barramento C. dos barr.unentos de rm:moria e da ULA tor ... nam-se est:íveis. Na borda ascendente do relógio. os regis trJ.dorcs s:!ú carregat.Jos a partir do barramento C, IlipIlops N c Z são carregados c MBR o! MDR obtêm seus resultados da operaçãll de memória iniciada no fi nal do ciclo de caminho de dados anterior (se houver algum). Tão logll o valor de MBR esteja disponivd, MPC ê carregado em preparação par:J. a próxima rnicminstruç50. Assim. MPC obtém seu valor em algum instan te durante I) meill do intervalo quando o relógio está alto, mas após MBRlMDR estarem prontos. Ele poderia ser ativado no nível (em vez de ativado pela borda) ou ativado pela borda com um atra~o !i:to ap(js a burda ascendente do relógio. que realmente importa ~ que MPC não seja earregadll até que os registradores dos quais clc depende (MBR. N e Z) o!slejam prontos. Tão logo o relógio caia.. MPC pode endereçar o amlazenamento de enntmle e um m{vo ciclo pode começar. Note qoe cadn eido r.: 'lUtu"~uficicn lc . Ele especifica o quc ocorre no bam\mento B. o que a ULA e n deslucador têm de t"a/.er. onue o b
a
4.2
Exemplo de ISA: IJVM
Vamos conti nuar nosso eJlemplo introduzindo o nívcllSA du m:iljuina a ser in lelllrClado pelll microprog rama que é e:teeutado na microarqui tctu ra da Figura 4 .5 (UVM). Por conveniência, às vezes vamos nos referir ~
.
"T
• 1
.• • I
• •
Insltlu.:tion Sei Architecturc (lSA) como a macruarq uitctu ra. par...l contrJslá-la com a rmcroarquitetura. Contudo. ,UUl:S de descrever IJVM, vamos fazer lima ligcir.l digre...são com o intuito de mmivaç:io.
4.2.1 Pilhas Pmlicamc.:nu! todas as linguugcns de programaç;1o suportam o conceito de procedimentos (métodos). que tem variáveis locais. Essas variáveis podem scr acessaúas de dentro dos procedimentos. m:rS dcix:uTl de scr acessíveis assim que l) procL-dirm:nto é devolvido. Portanto surge a pergunta: "Em que lugar da memória essas variáveis ucvcm ser mantidali?". A solução mai s simples. dar a cada variável um cndcrc(fo de memória absol uto, nào funciona. O problema é que um procedimento pode chamar li si mesmo. Estudaremos esses procedimentos rccun;ivos no Capítulo 5. Por enquanto. basta dizer que. se U111 procedimento for ativado - isto é, cham ado - duas veles, é impossível annal.enar !iouas variáveis em locali.l.açõcs abloolutas de memória porque a scgunda invocalfão interferirá ":001 a primeir:!.. Em vel disso. é usada uma est ratégia diferente. Uma área da memória. denominada pilha. I! reservada para variáveis. mas variáveis individuais não obtêm cndereços absolutos na memória. Em vez disso. um regislrJ.dor. por ellcmplo. LV, é ajuslado para apo ntar para a base das vardvcis locais parJ. o procedime nto e m questã\)o N:l Figura 4.7(a), um procedimento A. que tem variáveis locais 1/1, a2 c aJ, foi chamado, ponanlo foi reservado :mnnenl.llnentQ para suas variáveis locais eomclfando na ]ocali z:u,:ào de memória apo ntada por LV. Um outro registrador. SP. aponta a p:Llavra mai s alta das variáveis locais de A. Se LV for 100 c as palavr:!.s forem de 4 bytcs. elllão SP será 108. Variáveis sãu referenciadas dando seu deslocamento (distância) em relação a LV. i\ estrutura de dados entre LV e SP (e incluindo ambas as palavras apontadas) é denominada quadro dc y:triuycis locais de A. Agor.:l vamos considerar o que acontece se A chamar um outro procedimento. B. Onde deveriam ser arma7,t:nadas a.~ quatro vuriáveis loca.is de 8 (h/. b2. bJ, b4)'J Resposta.: na pilha. em cima das vari:iveis de A. eomo mostrJ a Figur.!. 4.7(b). Note que LV foi ajustado pela chamada de procedimento para apontar as variáveis locais de B em vez das de A. As variáveis locais de B podem ser referenciada.'i dundn seu deslocamento em re!alfão a LV. De rncxlo semelhante. se B cham:tr C, LV e SP sãu ajustados novu menle parJ. alocar espaço paf'J. as duas variáveis de C. cumo mostra a Figura 4.7(c). Qu:mdo C retoma, 8 toma-se :t ti vo novamente e a pi lha volta a ~r ajustada paro 11 Figur:! 4.7(b) de modo que LV agora apo nta novamente pam :!s variáveis locais de B. Da mesma furma. quando B retoma. voltamos à si tualfào da FigurJ. 4.7(a). Sob todas as cond ições. LV apon ta parJ. a base do (IUadm da pilha para n procedimento :!tivo no momento em questão e SP aponta paro o topo do quadro da pilha. Agora suponha que A ehama D. que tcm cinco variáveis locais. Essa é a situação da Figura ....7(d). na qual as variáveis locais de D usam a mesma mem6ria que as de B usarJ.m. bem corno pane das de C. Com essa organii'.a. ,ão de memória. a memória s6 é ulocada par... procedimentos que estão ati vos no momento em questão. Quandu um procedi mento retoma. a memória uSllda por suas variáveis locai, é lihcr...d:L Pilhas têm OUlra urilização além de eonter variáveis loca i .~. Elas podem ser usadas para re ter opcr.mdos durante o cálcu lo de uma expressüo aritmética. Quando usada dessa nmneirJ.. a pil ha é de nominada ,.ilha de OIJCr... ndus. Suponha. por exem plo. que. :l..tlles d~ ch:lIll:lr B. A tenha de calcular 81 .. a2+a3:
Um modo de efetuar essa soma é pa.;sar 02 para a pilha. como mostra a Figur... 4.8(01). Nesse caso. SP fo i incrementado pelo número de bytcs em uma palavr..... por exemplo. 4. e o primeiro operando foi annazcnado no endere(ju agma apontado por SP. Em seguida. uJ é passada par:. a pilha. como moslra a Figur:1 ·U!(b). i\ propÜSilO da no tação, usaremos ti tipo de fo nte Hclvetica para lodos os frag mentos de prO),lrJma. ":01110 li1.emos anteriormente. Tarnlll!m usaremos essa fonte parJ. opcudes e m linguagem de mnntagem e registradores de má4u ina, mas em texlo corn:IlIC. variáveis c procedimentulo de progr:lIllas serão d:tdo~ em irrllku. A dircren~:t ~ que ntlmc~ de vari:íveis e pro~ra!llas ,:ln eseu lhidm relu IIslI:lrio: IlU!l1es de Ilpctldc.; e re~i~tralhlrc.; vê m eom a máqu ina. f\ gora. o e:ikulu propriamente dito p"de ser feito execut ando uma i nslru~:iu que rCII I~t duas palavras da pilha. soma as duas e devolve o resultado para a pilha. como mostra a Figura ·U~(e). Por limo a palavra que eStá 110 topo pode ser reti rada rJa pilha c :lmlazenada lIov:unente em variável local /lI. como ilustr.lI.1o na Figur.! .... M(d).
" ...,. 4 ,'
Utilização de uma pilha para annazenar variáveis local!!. lal Enquanto A cstá ativo. (b) SP Após A chamar B. (el Apos B LV chamar C. (d) Após C e B re tomarem e A chamar D.
SP
j
.3
"
,.,"
I::
LV
SP LV
m "
(b,
." ", .3 " " 'OI
SP
"d3 LV
,
d2 03
""
'"
...
M
•>
"
~
•
"
SP
R gura 4.11
UnJização de uma ptlha de operando, para efetuar um cálculo anttnetico.
spm LV
" ill
LV
m ~
"
SP
LV
r"~", "
::J "'""..,
•• • • " E u• • • •
0$ quadros de variáveis locais li!: as pilhas dI! opcr.mdllS podl!m ser mistur:tdO'l. Por \!:xc mplo. ao calcular uma expressão como.r= + f(:r:), parte dela tpor ..:xcmplo. x~) pode C~I :lt em UrTUl pi lha de opclJ.ndos q uando a funçãofé chamada. O resultado dà fu nç;::io é deixado na pilha. em cima de .,(l. de modo que a próximü instrução pode somfi-Ia. Vale a pena observar que, enquanlo todas as máq uinas usmn uma pilha par:1 ;.lrmazenar variá veis locais. nem lodas usam uma pi lha de opcr.:muos como essa paiJ. efetuar arit mética. Na verdade. a maioria delas não usa, mas a JVM e a IJVM trabalham as~ im . .:!! por isso que aprcscntmnos opcr.lçães com pil has aq ui . Vamos estudá-Ias com l1luis de talhes no Capítulo 5.
"
4.2.2 Modelo de memória IJVM
·
I.)
~)
lo)
[dI
~
~
~
~
" •
~
•• • C •
~
N
~
o
Agora estamos pro ntos para estudar a arquitetura da IJ VM . Basieamenr.e. da eonsisr.e em uma memória que pode ser vislU de doi s mudos: um arranjo de 4.294.967.296 bytes (4 Gil) ou um arr:mjo de 1.073.741 .824 paJavrus. cada uma consistindo em 4 byles. Direre me da maiori a das ISAs. a Java Virtual Mac hine (máquina virtual Java) não deixa nenh um elllkreço absoluto de memória diretamente visível no nível ISA . mas há vários endereços implfr.:itos que fornecem a base para um ponteiro. Inslnll;õcs I1 V M só podem acessar memória indexando a partir desses ponteiros. Em qualqul!f instante. as seguintes :írC;.Js de memória sào delinidas: 1.
O (;tmjwllo til! cOIZ.wallles. Essa área não pode ser escrita por um programa UV M e consiste em constantes, cadeias e ponteiros para outras áreas da memóri:1 que podem ser n.:fereneiadas. Ele é carregado quan do o progr-.lIll.a é tr:17jdo para a me mória c não é nltcrJ.do de pois. Há um rcgislrador implícito. CPP, que contém o endereço da primeirn palavr.! do conjunto de conslantt.:S.
2. O 'lUa/Im th variáveis locais. ParJ. caane do quadro dt.: vuri:\vcis loc:lis. De (1lmlquer m<xlo, h.:1 um registrador implicito que contém o endereço da palavra do topo da pilha. Note que, di/c rente do c p p c do LV. esse ponteiro. SP, muda dur.ul!e a execução do método à me:didu 4ue opcr.muos são passados par.! a pilha ou retirJ.dos dela. 4 . A drea til!. método. Por li m, há uma região da mem6ria que contém o progr-..una, à qual nos refe rimos como a área de 'texto' em um pnx:csso UNIX. Há um rcgislr.tdor implfcilO que ~ontém o endereço da instrução a ser buse:ub em seguida. Esse ponteiro é denominado cont"dor de pmgr:lnl:l (Prob'Tam Counlcr) ou PC. Diferente das OUlr.!S rcgllJes da mermíria. a área dt.: método é lr.llada como um 3fT3njo de byles.
"""""
SP
~"
de~ila
"""'" ..,.."3 "lIriAY1MI
fI.unI 4.9
correnta
As \'tmas panes dO! memória
LV
UVM.
Quadrocse vaf1llyell Iocala 2
CO!11un10 de
constanlltS
L _ _....J·-Cpp
OuacIro de
Área
va ri.t.vais Iorois 1
d a mêlodo
PC
é, preciso c-~cJarel:cr uma queslão em relal(ão a pomeiros. Os rc.:gimadores Cpp. LV c SP ,~ão lodos ponteiros pata paltll'ms. não par..! byre.\·, e são dcshx:ados pelo número de palavr.ls. Para o subconjunto de inteiros que escolhemos. todas as referêm:ias a ilcns no conjunto de conSlantes, o quadro de vari:iveis locais c as pi lhas ~ão paluvra.~. e todos os deslocamentos usados pilr.! indexar esses quadros silo deslocamentos de pulavras. Por exemplo, LV, LV + I e LV + 2 se referem à.~ primeims tres palavr.tS do quadro de variáveis locais. Em compar..!çii.o, LV, LV + 4 e LV + 8 <;t referem a palavr:ls em intervalos de quatro palavras ( 16 bytes). Ao ..:ontrário, PC contém um endereço de byle. e lima adição ou subtralião :10 PC alterJ. o endereço por um número de byles. e não !Xlr um mimero de.: palavras. Endereçamento para PC é diferente dos outros e esse fala é :lrarcnle na porta de mClllória especial fome.:eida pam PC na Mie- I. Lembre·se de que a largurJ. dessa port:l. é de apenas I bytc. Incrcmenur o PC por um fator de um e iniciar uma leitum resulta em uma busca do próxi mo byte. Inercrncmar o SP de um falOr de um e inici:lr uma lcitur:! resulta em uma busca da próxima palavra.
... tO
·,•• ,
~
•o
,.· o
4.2.3 Conjunto de instruções da UVM
o conjunto de instruções da IJVM é moslmdo na Tabela 4.2 . Cada instrução consiste em um opcodc c às vezes um opcr..!ndo, lal como um deslocarncmo de memória ou uma consume:, A primeira ..:oluna dá a cod ificação hcxadecimal da inslrução. " segunda dá seu mnemônico em linguagem de lIlonlagem . A tcrceira dá uma breve dt=SCrição de seu efeilO. São fornec idas imlluçõcs rmrn passar parJ. a pilha uma pu lavra que podc vir de diversas fontes. Entre essas fontes estão o eunjunto de coruitanlCS (lDC_W), o quadro de variáveis locais (ILOAD) e a própria instrução (BIPUSH). Uma variável umbém pode ser rctimda da pilha e Ilnnal.cnacla no quadro de variáveis locais (ISTOAE). Duas operoçõcs anlmêlic:ls (lADO c ISUB) bem como duas opcrJ.çõc... lógh.:as booleanas (tAND e laR) podem ser cfclulldas usando as duas palavrJ.s de ci ma da pilha como operandos. Em [ochls ll~ opcr.u,:Oes aritméticas c lógicas. duas palavr.u sao retiradas da pilha e o resultudo é devolvido a da. São fOnlccida.'! qualro instruções de desvio. uma incondicional (GOTO) e três condicionais (lFEO. IFLT c IF_ICMPEQ). Todas a.~ instruções de ramilicaç:10. se tomadas, aju.~tam o valor de PC confonnc o tamanho de seus deslocamentos (16 bits com sinal). que vem após o opcode na instrução. Esse deslocamento ê adicionado ao endereço do opcooe. 1-16. também in.~ truções IJVM para trocar as duas palavras do topo da pilha uma pela OUfr..! (SWAP). duplicando li palavra do topo(DUP) e rclimndo-a ( POP). Algumas instruliôes lêm vários fonnUlos. o que pennite uma fomlU abreviada para vcrsik:s comumente usada.~. Em IJVM incluímos dois dos vários mecanismos que a JVM usa par..! f;u.er isso. Em um caso ignor.'lmos a fo rma Conjunto de instruções da UVM. Os operandos byte. const e vamurn são I byte. Os operandos dispo index e offset são 2 bytes.
Tabela 4..2
Hex
SignUicado
BIPUSH byte
Carregue o byte para a pilha'
OUP
Copie a palavra.do topo da pi.lha e pas:se-a pam 8 pilha
GOTO offset
Desvio Incondicional
(
0"-' 0.60
lADO
Retiro duas palavras da pilha; carregue sua somo
I
"'1E
\ANO
RetlrB
(
0.99
ImQ oftset
Retire palavra da pllha e desvie se for zero
Ox9B
lf'LT offset
Retire palavra da pilha e desvie se for menor do que %em
Ox9P
1f_ICMPEQ oftset
Rew-e duas palavra! da pilha: desvie se iguaIS
0.8'
I1NC vamum cons!
Some uma constante a uma variAval local
"'15
ll.OAD vamum
Carregue viuiãvel local para pl1ha
."..
INVOKEVIRTUAL cl!sp
Invoque um método
"'.0
laR
Retire duas palavras da pilha; carregue a R booleana
OxAC
IRB"MUI
Retorne do mêtodo com valor Inteiro
0.36
ISTORE vamum
Retire palavra da pilha e arm8%Cne em variável local
"'
ISUB
Retire dU8:il palavras da pilha; carregue sua diferença
"'13
LDC_W index
0.00
NOP
carregue constante do oonjW1to de coDstantes para pilha Não taça nada
"'51
POP
Apague palavra no topo da pilha
0.5P
SWAl'
Troque as duas palavras do topo da pilha uma pela outra
WIDE
instrução prefixada; instrução seguinte tem um indlce de 16 bits
"'10 0.59
(
.
.
Mnomônico
I
..
I
duas palavras da pilha; carregue ANO booleano
•>
'" ~
,o ~
•
u
-'"
abrevi:H.Ia em ravor da mais gcr:.11. Em outro C:.I:'>O mostramos como a instrução prclharJa WIOE pode ser usada parJ. moJ.iticar a inslrUl.;ão resultante. Por lim, há uma instruç:io (INVOKEVIATUAl) par.! invocUf um oUtro método c uma outro instrução OAETUAN)
••
para sair do método c dt!vo[ ver o controle :lO ntl!lodo que a invocou. Devido à complexidade do mecanismo, simpli ficu mus ligdr:.ullcme a delin ição. possibilitando produ:t.ir um mec:lllismo dirclO para invocar ullIa chamada e um retomo. A rcstri~':1o é q ue. diferente da Java, Slí pcmüurnos qUe um método invoque um método existente denu"O de
~
.;eu próprio objeto. Essa restrição prejudica :.criamcnte a oriem:u,::jú de ohjetos mas nos pcnnitc apresentar um
o
•
=
~
eo
u
• •
~
~
~
•
~
o ~ ~
• o •m N
o
mecanismo muito mais simples. evitando o requisito de [ocaliz:tr o método di na mic:.uncntc. Se voci! não estiver famil iurii'.i.llJu com pr(lgr.!ma~ão bascada em objeto, pode ignor.lr essa observaç:.l0 ~em susto. O que lizemos foi Il,,!var Java de volta a uma linguagem não basc:lda em objeto, como C ou Pnscal. Enl todos os compul;J(jores, excclO JVM, o endcreço do procedimento p:lra chamar é dctl!nni nado diretamente pela instrução CALL IXJrtallto nussa abordagem 6, na verdade, o caso nonnaL e não a \!)[ceçilo. O mecanismo par.l invocar um método é o seguinte. Primeiro, (l invocador passa par,}, a pilha uma referência _ ponteiro - ao objeto li ser chamado. Essa refe rência não é necess:íria em IJVM visto que nen hum outro objcto pode ser cspeci licado, mas é manlida par:! preservar a cOllsistcncia com JV1o
fIDUf.4.10
lal Memona antes de executar
Paró.mell'os p.""~
i
Pl lhtl llntes CIO INVOKEVIATUAL
INVOKEVIRTUAL. (bl Após
exccutâ-Ia. QlIadro devanâvels ~lIisaa
chamador
Vanllveis ~alsdo
d1amador
Vafiá
tocais do
chama
" (.)
(b)
(
.......
-
Pilhe antes de IRETURN
Base da !)ilha
anlet1du
figura 4." (a) Memória antes de executar IRImJRN. (b) Após executá-la.
IRETURN
PiIlaapós IRETURN
Ve rill vell
""'"
do chamauol
,.)
~I
4.2A Compilando Java para I1VM Agora vamos ver como Java e IJVM estão relacionadas uma com a outra. Na Figura 4. 12(a) mostramos um fmgmcnto simples de código Java. Quando alimentado em um compilador Java. cste provavelmente produzina li linguagem de montagem JJVM mostrada na Fi gura 4. t 2(b). Os numeros de Iinh:J..>Õ de I a 15 li esquerda do progmma de lin j;uagem de montagem não são parte da sarda do compil:ldor: o mesmo vale para os comentários (que comc~am com 11). Eles estão ali para ajudar a explicar a IigurJ subseqüente. Enlào o assernbler Java traduziria u programa de montugcll1 par..t o programu binário mostmdo na Figura 4.12(c). :-.Ia verdade". o compiludor Java faz 5ua própria montngem e produ!. o progrJ.mll bi nário diretamente. Para esse exemplo. considcn:mos (Iue i t! a vllricivcl local l. j i! ti vari:ívclloctll:! e k l! a vanávellocal 3.
I =J • k:
,
1' (1-3) k .. O:
2 3
. ..
J-)- I:
,
, 5
, • 7
(a] Fragmento em Java. (b J Unguagem de montagem Java correspondente. (Cl
10
Programa UVM em
"12
hexadeamal
IlOAO j 111. i'" k ILOAOk lADO ISTORE I (/ I! (1_ 3) ILOAOI BIPUSH 3 IFJCMPEO LI fi j .. i . 1 ILOAO, BIPUSH 1 ISUB tSTORE ,
GOTO l2 13 LI : BIPUSH o 14
ISTORE k
fl k ",O
Oll150X02 Oll1 5 0x03
0.60 Oll36 OllOI Oll 15 0ll01 Oll10 0.03 0X9f OKOO OXOO Oll15 0.02 OlllOo.ot
0.64 0)(36 0lC02 OKA 7 OllOO 0lC07 Oll10 OxOO Oll36 OlCOl
15 L2,
'"
•> z
A instrução IAETURN invcnc as operações da instrução !NVOKEVIRTUAL. como mostr.J a Figur.J 4.11. Ela dcsaloca o espnc;:u usado pelo método que retoma. Também re..>õtaurJ a pilha a seu estado anterior. exceto que ( 1) a palavm 08JREF (agor.J !illbn;scriLa) c tooO$ os parlmctros ror.tm retir.ldos da pilha I! (2) o v:llor retomado foi coloc.tdo no topo da pilha. na localizaçào antes ocllp:lda por OBJREF. Par.!. restaurar o antigo estado. a instruçiío IAETUAN deve ser c:l.paz de restaur.ll' os pontciros PC e LV para seus antigos valores. Ela faz i ~() acessando \I ponteiro de ligação (que l! ti palavrJ idemilicada pelo pont,dro LV ,:ofTt!llle). Lembre-se de que nessa localização. onde a OBJAEF estava :lm1à7.cntlda originalmente. ti instrução INVOKEVIATUAL nrmazcnou () endereço que aponta para o PC antigo. Essa palavra e a palavr.J acima dela são recupemdas parJ restaUI':lJ' PC c LV. respectivamente. para seus valores antigos. O valor de retomo, que estava armazenado no topo da pll1m do método que est1 cncermndo. é copiado par.t a localização onde a OBJAEF estava originalmente annazenada. c SP é restaumdo para apontar para essa locaJizaçoio. Por conseguinte. o controle c! devolvido à instrução imediatamente após a instrução INVOKEVIRTUAL. Até aqui. nossa máquina não Icm nenhuma instruçào de entrada/saída. Tampouco vamos adicionar alguma. Nossa m:íquina nao precisa dessas instruções. nem a Java Virtual Machine, e J especificação olicial para JVM 'lCquer menciona EIS. A teoria l! que uma mátjuintl que não efetua entrada nem saída é ·segur.. ·. Na JVM. leitura e o.:scrita são realizadas por meio de unta chamada a métodos t!Spedais de EiS.
t ___
~
"u
Variáveis locall do chamador
figura 4.12
,• • , •o
'"
'"
•"-
"
-... co
•• o" ,•
figura 4.13 Pilha apõ8 cnda Instruçlo da Figura 4.12(bl.
c::::c:J
•
~
~
8 o
"• ~
• ,•"
~
,
·.•" w o
~
• N
o
•
~
o
c::::c:J
EE LED , 2
EEl ,
L:ED
"
"
,
"
c::::c:::J 5
LJCJ
"
EB •
--"
7
"
o c6digo compilado é direto. Primeiro j c k são passadas para a pilha. somadas, c o rcsuJt.1.do é :mnazcnlldo em i. Então i c a constante 3 siío passadas para a pi!h;). c comparadas. Se forem iguais, é tomado um desvio para LI, onde k é ajustada parJ O. Se forem diferentes, a compar..u.;ão falha e o código logo após IF ICMPEQ é executado, Feito isso, cle desvia paJ'a L2. onde as panes then c dsc se fundem. A pilha de operandos para li programa IJVM da Figura 4.12(b) é moslmda na FigurJ. 4.13. Antes de () códi go começar a executar a pi lha está vazi3, u que é indicado pda linha horizollllll acima do n. Ap6s a primeira ILOAD.j está lia pi lha. como indk:adn por j DO ret:ingulo m;ilTla de I (o que signilica que a instrução I Foi executada). Apôs a segunda ILOAD, duas palavrJ.s cslão na pilha. como mOSlrado acima de 2. Após a lADO. h,i somente uma pal:Jvra na pilha. que contém a soma j + k.. Quando a palavíJ. do topo ê rclirnda da pilha c armazenada em i, a pil ha c.~ tá vazia. como mostrndo acima do 4. A instrução 5 (ILOAO) inicia a declaração ir passando i para a pilha (em 5). Em seguida vem a constante 3 (em 6). Após a comparação. a pilha está novamente vazia (7). A instrução 8 6 o início da parte else do Fragmento de programa Java. A parte elsc continua até a instrução 12. quando então desvia parJ. a parte lhen e vai para o TÓlUlo L2.
o
4 .3
Exemplo de implementação
Agora quejá especificamos detalhadamente a microarqui tetura e a macroarqu iteturJ. resta a questão da implementação. Em outra." palavras. como é um programa que eStá rodando na primeir:l e interpretando a última. e como ele funciona'! Antes de podermos responder a eSSas pergumas. devemos eonsidernr com cuidado a notação que usaremos para descrever a implementação.
4.3.1 Microinstruções e n otação Em princípio. poderfamos descrever o armazenamento de controle em linguagem binária. 36 bits por palavra. Mas em linguagcns de progrJma'ião convencionais é um grande bcndfcio introduzir uma not(1ção que transmita a cssência das questões ({ue precisamos tratar e ao mesmo temp() oculte os detalhes q ue podem ser ignorados ou que podcm ser mais bem Ir.nados automatieamente. Nesse caso, c importante perceber que a linguagem que escolhemos pretende ilustrar os coneeitos. e não facilitar projetos didentes. Sc esse fo... sc nosso objetivo. usaríamos uma nOlaçào diferente para max.imizar a tlexibilidade disponível par-J o projetista. Um aspt!clo em que essa questão ~ imponll11te é a escolha de endereços. Uma vez que a memória não é ordenada logic:.lIlu:nte. não há nenh uma 'pnlxima instrução' natural a ser subt:ntendida quando especificamos uma seqüência de operações. Grande pane do poder dessa organ ização de controle dcriva da capacidade do projetista (ou do progmmador de mo ntagem) de selecionar endereços com eficiência. Portanto. começamo.!> intrnduó ndo uma linguagem si mlxíliea si mples que dá uma descrição completa de cada opemção sem explicar çompletarnellle como todos os endereços poderiam ter sido determinudos. Nossa 1I00ação especifica toda.~ as atividades que ocorrem num único ciclo de relógio em uma úniea linha. Em teoria, rx,dcriamos llsar uma linguagem dc alto nível para descrever as operJ.çôes. Contudo. o eOfllrole ciclo por ciclo é mui10 importame porque d;í a oportunidade de realizar vürias opcraçiics ao mesmo tempo I! é necess,irio que po.~satnos analisar cada ciclo para clllender e veriJicar as operaçiics. Se a meia ror uma implclllcntaç,10 r;ípida e dicien1e (se os oUlros aspectos forem iguais. r:ípido e e lieienle é sempre melhor que lento I! ineficiente). Cn1ão cadu ciclo conta. Em uma implcmentação real h:í mui los estratagemas sutis ocultos nn programa, qlle lIsam seqücncias ou opcrJ.'itles obscuras para cconom i":;lr um únicn ciclo l{ue ~eja. Há uma grande eompcns
Vamos dar a nossa Micro Assembly L:tnguage de alto nível o nome 'MAL.: (palavra francesa que significa 'doente', o que com ccrte1.a você tic:mi se tiver de e.'\crever muito código utilizando essa linguagem), A MAL é talhada para ret1eti r as caracleristica..... da microarquiterura. Durante cada dclo. qualquer um dos regislt".ldorcs pode ser escrito, mas o nmmal é que somente um seja escrito. Apenas um rcgiSLr.ldor pode ser copiado par.!. o lado B da ULA, No lado A. as opções são + I. O. - I, e o registrador H. Assim, podemos usar uma declaração de atribuição simples. como em Java. parJ indicar a operação a ser cxccutaw. Por exemplo. para copiar algo de SP para MOR. podemos dizcr MOA ", SP
•" • • • •"o
~
Para indicar a utilií'.ação da.s funções ULA. c.xce[O pass:lr pelo baIT:l.Inento
a, podemos escrever. por exemplo.
"u
MOR .. H +SP
que lldiciona o conteúdo do regis trador H a SP c escreve () resullado no MOA. O operador + é comuL:luvo o que significa que a orrlem dos operamJos não iml>Ort3 - . port:l.ntO a dedar.lçJo anterior L:lmbém pode ser escrila como
•>
'"
MOA _ SP+H
e ger.lr a mesma microinstrução de 36 bits. ainda que. em tennos estritos, 1·1deve ser o oper.lndtl esquerdo da ULA. Tt:mos de tomar o cuidado de US:lr somcTlle operaçõcs legais. As oper.lÇõc~ legais mais importantes são mosItadlls na Figura 4, 14, na qu;tl SOURCE pode ser qualquer um dos MOR. PC, MBR, MBRU, SP, LV. CPP, TOS ou OPC (MBRU implica li versão se m sinal de MBR ). Todos esses regis tradort:s podem agir como fonte s par.l a ULA no bar· ramento B. De modo semelhante, OEST pode ser qualquer um dos MAR. MOR. PC. SP. LV. CPP. TOS, OPC ou H; todos eles são destinos possíveis par.! a saída da VLA no balT'.llnento C. Esse fonnato é enganador porque muitas declaraçfics apa.rentemente razoúvei s são ilegais. Por CAemplo. MOR ", SP + MOR
parect: perfeitamentc r.1zoúvel. mas não há nenhum modo de: e:xeculá-la em um dclo no caminho de dados da Figura EsS.1 res trição t:x iste porque. parJ uma adição (exceto um incremcTlIo ou dt:crcmcnto), um dos operandos tem de ser o regislJ'ador H, Da mesma romla.
4.5.
H ", H - MOA
poderia ser útil, mas 1ambé m da é impossfvel porque li única fonte possfvd de um subtraendo - valor que está sendo .~ubtraído - é o registrador H. Cabe ao montador rejeitar declarações que pareçam válidas mas que, na ver· dade, são ilegais. Ampliamos a notação para pcnnitir múlliplus atribuiçõcs pela utilií'.ação dt: múltiplos sinais de igual. Por exemplo. ad icionar I a SP e arma7.cná· lo de volta em SP. bem como escrev~-Io em MOR, pode )ÕCr conseguido por SP",MOR"SP;.l
Para indicar leituras c c..~rita.~ de memória de palavras de dados de 4 bylcs basta acrescentar rd e wr à. mieroinslruçlio, Buscar um byte pela porta de [ hytc é im.licado por feteh . Atribuiçõcs e opcmçõcs de memória ,}O(.]em ocorrer no mesmo ciclo. o que é indic:ldo escn:vendo-as na mesma linh:l. Pura cvit:lr qualquer eonfusào , vamos repetir que a Mie- l tem dois modos de aces ~ar memória. Lcilura.~ t! escn· ra~ dc palavras de dados de 4 bytes usam MAR/MOR e sào indicadas nas microinstruçõcs por rd e wr. rcspeelivamt!n~ te. Le itur.l.~ de opcodcs de I byle a. par1ir da seqUêneia de instruções usam PClMBR c são indicadas por felch na.~ microinstmçõcs. Ambos o.~ tipos d e opcralfõcs de memória podem ocorrer simu ltaneamente.
I DESTo H DEST " SOURCE
I OEST::o H OEST ., SOURCE
n.ura 4..14
I DEST '" H.,. SOURCE
J"
Todos as operações pennitidas. Qualquer uma das operações antenores pode ser estendida somando "« 8" a
~ST .. H~OURCE
+ 1~
I OEST .. SoURCE .,. 1--1
elas para deslocar o resuJl
comum eH - MBR «
-...
Ol
8.
OEST . H .. t
l
OEST • SOURCe -H , --, -OEST -_ _H -
rOEST • SOURce-
--I
I OEST .. H ANO_SOURCE--i oeST .. H OR SOURCE DEST . O -- -
I OEST .
I
OEST .. - l
J
~
o
• ~
•
u
o
Ul
Contudo. o mo.::>1ll0 rcgislr:J.dor não pode receber um valor da memória c o t:am inho de dados no mesmo ddo. Considere o código MAR ", SP; rd
·•" o
~
• o
~
• o
u
•
~
• •
~
"o o
"
•
~
MDA = H
o
efeito da primci('J microinstrução é atribuir um valor da memória a MOR no ti naJ da segunda microillstrução. Contudo. :1 segunda microinstrução lamocm atribui valor a MDA ao mesmo te mpo. Essa.s duas .uribuiçõcs estão em contl iw c não s:lo pcnni tidas porque os resul tados são indc!1niuos. Lembre-se de que cada microi nstruçãll deve rorncco.:f cxpli!.:i tamcnte o endereço da próxima Illicroinstrução a ser c:<;cçutaua. Todavia. é comum ocolTI!r que uma microinstnJção seja invocada somente por uma outra microinstruç:io, a saber, por aquela que está na linba imediatamente acima dd:!. P-J.r:l faci litar o trabalho do microprogr.unadur, o microasst:mb!cr nom1:l.lmcnte atrib ui um endereço a cada micruinstmç;"io, não necessariamente conseculÍvas no annazenamento de controle, e preenche o proximo campo NEXT _ADORESS de modo que microinstruçUcs escri· tas cm linhas consecuti vas são executadas consecutivamente. Todavia, às vezcs () mieroprogr...tmador quer desviar, condicional ou incondicionalmente. A nmação para desvios incond icionais é f6cil:
um
gotolabel
o ~ ~
• "• N
~
o
e pode ser ind uída em qualquer microinstrução para nomear explicitamente sua sucessora. Por exemplo, a maioria das scqiiências de microinslrução termina com um re tomo à primeira instnlljão do laço principal, ponamo a última instrução em cada uma dessas seqüê ncias nonnahnentc indui golO Main1 Note que o cami nho de dados está dispo níve l par.1 operações normais mesmo durante a microinstruçào que contém um goto. A linal. tooa microinslroçào individ ual contém um campo NEXT _AOORESS. A tarefa de goto é ins· truir o microassemblcr a colocar um valor específico nesse campo em vez do.! no endereço onde ele decidiu colocar a microinstruçUo na linha seguinte. Em princípio, ttxla linha deveria ter uma declaração goto; ape nas como uma con· veniência para o microprogramador, quando o endereço visadu for a próxima linha, ele pode ser omitido. Par.1 desvios condicionais, precisamos de uma notação diferente. Lcmbre·se de que JAMN e JAMZ usam os bits No;: Z, que são ajustados com base na sarda da ULA. Às vezes é preciso testar UII1 regi:mador par:!. ver se ele é zero. por exemplo. Um mlxlo de fazer isso seria passá-lo pela ULA e armazená· lo em si mesmo. Escrever TOS :E TOS parece peculiar, embora exerça sua função - ajustar o flip·l1op Z com basc em TOS. Contudo, para que os microprogr..unas pareçam melhores, :!.gora csto;:ndernos o MAL adicionando dois registradores imaginários, N e Z. aos quais se podem des ignar atribuições. Por exemplo, Z",TOS p~sa TOS
pela ULA. ajustando assim os nip-tlops Z (e N), mas não faz um aml:lZenamento em qualquer registrador. Usar Z ou N como um destino cqui vale a dizer ao microassemb1cr que ajuste tlXlos os bits no campo C da Figur.1 4.4 pam O. O caminho de dados executa um ciclo normal . com todas as operaçix:s normais permitida.~. ma." nenhum regis trador é escrito. Note que niio impona se o do;:stino é N ou Z; a microinstrução gerada pclo microa... sembler é idêntica, Programadores que escolhem intencionalmente a fo rma 'errmla' deveriam ser ohrig:ldo ~ a trabalhar em um IBM PC original de 4,77 MHz dumme um:l semana, como castigo. A sintaxe para di/.cr ao micmassembll:r que ajuste o bit JAMZ
c
if (Z) goto Lt; else gota l2
Uma vel. que () hardware requer que os 8 hits de orde m baixa desses dois cndcrc(flls sejam idênticus. cabe ao micrnassern bler designá-los a endcrc(fos com essa propriedade, Por outro lauo. visto que 12 pude estar el11 qualquer lugar nas 256 palavras que est:ío mais embaixo no anml/..cnamcnto de controle, n lllicro:L"so.!ll1 bk:r tem bastante liberdade para ac har um pllr disponivcl. Normalmente, essas duas dec!llraçilcs serão combinadas: por cltemplo: Z = TOS: il (Z) goto L1: else goto l2 O efeitu dessa declam(fão ~ que MAL gera uma microinstrução na ljua! TOS c passada pela ULA (mas não ~ anualenada em lugar algum) de modo que seu valor aj USI:!. o bit Z. Lugo :lpóS Z scr c:un:gado a panir do bit de .:on· dição da ULA. de passa ["lOr uma operJç:1o OR com o bit de nrtlem alta tio MPC. forç ando o endereço da próxima microinstrução a ser buscado em L2 ou LI (que de ve ser exalamcntc 256 mais do qUI! L2). MPC estar6 cst;\vel c pronlO a ser utili;t,udll para buscar a próxima microinstruç:ío. Por fim . pn.'cisamos de uma no tação par:!. usar o bit JMPC. A notaç:1o que usaremos
St:rn
gOlo (MBR OR value)
E:~sa ~ inta~e di!. ao microas~lI1bler par.! usar va/ut! parJ NEXT _ AOOAESS e :ljustar o bit J MPC de modo que MBR e NEXT _ADDAESS scj:lm combinados por uma opcr.l.ifão OR, e o resullado. annill'.cnado em MPC. &: vu lut: for O. que e o caso nunnal. basta escrever
-"'
gota (MBR) Note que somente os 11 bits de ordem baüa de MBR s:3o ligados ao MPC (veja a Figura 4.5). I)(>nanto a questão da extensão rJc sinal (isto é. MBR versll.~ MBAU) não surge ::lqui. Além d isso. n{)(c q ue o MBR disponível no fina l UO ciclo em <{ues tão é o que i utilizado. UmO! busca iniciadO! "essa mit:roi nstrução está muito atrasada par.l. afetar a escolha da prÜX1ll10! microinsU\lljiJo.
4.3.2 Implementação de IJVM que usa a Mic-l Finalmente chegamos ao ponto em que podemos j unlllr todas as panes. A Tabela 4.3 é o microprograma que I!.\eeuta em Mie- I e interpreta UV M. É um programa surpreendentemente curto - somente 112 microinstruçiks no total. São dada.'I lrês colun::ls par.l cada microinstrução: o rotulo simbólico. o microcódigo propriamente dito (' um comcm:irin. Note que micmim,Lruçõcs conset:uti vas niío estão necessariamente locali:t..adas em emkreços consecutivos no armazenamento de controle. como já haviamos coment.:ldo. A essa allum a escolha de nomes para a maioria dos regislrJdorcs na Figura 4.1 já deve ser óbvia: CPP, LV e SP são usados para conter os ponteiros para o conjunto de constantes, variáveis locais e o topo da pilha. respectivamente. enquanto PC contém o c nc..lcrc~o do prox.imo bylc a scr busclldo na corrente de insU\lção. MBR é um registrador de I bytc que contém os bytcs da seqüência de instrução. ta medida quc eles chegam da memória para ser interpretados. TOS e OPC são rcgistradore... extr.l.s. Sua utili1.ação é descrita li seguir. Em cen as ocasiÕCs. é garJ.ntido que cada um desses registradores contenha certo valor, mas cada um pode ser u:wdo como um rcgislrJ.dor lr..lnsitório se necessário. No inicio e no Jinal de cada in.'Itruçào. TOS contém o va lor do endereço de mcmória aponwdo por SP. a palavr.! que está no topo da pilha. Esse valor é redu ndame. uma vez que sempre pode ser lido da memória. mas tê-lo em um rcgistr:ldnr mui ta.s vezes economiza uma referência :\ ll1Cml'ina. Pard algumas poucas instruljõcs. manter TOS signitica mais opertlções de memória. Por exemplo, a instrução POP joga forJ a palavrn do topo e. portanto. deve buscar a nova palavr.! de topo da pilha na memória e passá-Ia para TOS. O regislr.!dor OPC é um registr::ldor temporário (isto é. lrJ.nsitório (sc:rau:h». Ele não te m nenhuma utili7.ação predctcnninada. é usado, por exemplo, par:1 salvar o endereço do opeode parJ. uma instrução de desvio enquamo o PC é incrementado par.! aCI.'Ssar parâmetros. Também é usado como um rcgislr"dor temporário nas instruçiks de desvio condicional JJVM . Cumo todos os interpretadores. o micmprograma da Tabela 4.3 tem um laço prineipal que busca. decodifica c cxecuta instruçõcs do programa que está sendo interpretado, nc.'Ise caso. instruções IJVM. Seu laço principal come· Ija na linha dc rolulo Maln1 . Inicia com a invariante de que PC tenha sido previamcnte carregado co m um endereço de uma loca lií·.aljão de memória que contém um opcodc. Além do mais. esse opeodc j á foi lrazido para dcnuu do MBR. Coruudo. observe que isso i mplica que. qua'ndo volurmos a essa localização, dcvcmos assegurar que PC foi atualizado para apontar aproximo opcode 11 ser intcrpretado e o próprio bytc do opcode já foi trazido par.! dentro de MBR. E.~sa seqüência inicial de inslnll':õcs é executada no início de cada instrução. então é importante que ela seja a mais curta possível. Por meio de um projeto muito cuit.llldoso do hardware e do software da Mic- I. conseguimos red u:t.ir o laljo principal a uma tinica microinstruljão. Uma vez iniciada a máquinn, toda vez que essa microinstru1j:10 for executada. o opeode UVM par.t executar j á está presente em MBR. A tarefa dessa microinstrução é desviar para o microcót.ligo parJ cXI.'t:utar a instrução IJVM e também iniciar a busca do byte após O opcode. que pode ser um bytc de opcrJ.ndo ou o próx imo opeade. AgorJ podemos rcvt!lar a real rJ.zão por quc cada microinstruljão nomeia explicitamente sua suceSSOrd l!m vel de c~ccu lá- I:1S em seqüência. Todos os e mlerc~os do aOllazenamCl\to de controle correspondentes a opcodcs devem ~er reservauns parJ. a primeira palavra du intcrpretad ur dc instr"Uljão corrcsponucnte. Assim. pela Tabcla 4.2. vemos lluC I) códigu lIue interpreta POP .:umelja em 0",57 c o côdigll lIUC interpre ta DUP começa em 0)(59. Cumo o MAL conscgue colocar POP em 1))(57 e um dos grJ.nues mlSlcn os UO universo - deseu nfiamos que há um arqU I VO em algu m lugar que o infom\a. Infcl il..mcnte. o código par.!. PQP tem tres micruins tru~Ocs de comprimento. portanto. !K! colUC;ldo em palavr.}.~ conscculiV'J.s. intcrferirill com o início de DUP. Uma vez lIue todos tiS endereços do am1aZenalnento dc controle corres pondelltes a opcodes são ereti v:lmelllc reservados. as miemi nstruções. exceto a iniClUl em cada seqüência. devem :.cr .:olocaua.~ [lOS espaljos entre us e ndcn:~os rese rvados. I'or essa razãu. há muitos sallos pu", lá e pur.t cá; des!iU munelrJ.. ter um mierodesvio c~plrd t o - rnicmi nsU\lljão que desvia - :t cada pouca... microinstruçilcs parJ. saltar de buraco em buraco seria muito desperdício. p.-lrJ. ver como o illlerprctador lr.tbalha. vamos considerar. por e~e mplo. que MBR euntém o valor Ox60. iSlO é. o upcode pam lADO (veja a Tabela 4.2). No laljo principal de um ... sõ micminstrução rcaJi .....amos três coisas: 1. 2.
I
..L
Incrementamos o PC. que fic :l contendo () cndereljo do primeiro byte após o opeade. Inici:llllos uma husca do próximo hyte pura M8R. Mais cedo nu mais Illrdc esse bytc sempre será necc,,~:írio . .'óCja como um opcr.mdo para a instrução IJVM corrente, seja como o próximo o peode (eomu no e:lSO da trlstruljão lADO. que niio Icm bytcs de uper.lIldu).
•" •" "
~
•"o u
2
•>
'"
3.
N
"' ~
••"o
u
•
E.,(CCUW.ffiOS um desvio mullivi;c; alé \I endcreço contido cm MBR!lO início UI.' Main1 . Esse endereço é igual ao valor numérico do opcode que está !Oendo cltcculado no momemo em questão. Ele foi colocado ali pela mil.:roinslruç:io anterior. Não esqueça de (Jb~crvar que () valor que está <;cudo bu.~cado nessa microinstrução não dese mpenha nenhum papel /lO (\t!s vio rtlultiv ias.
A bUSCà do próximo bytc ~ iniciada aqui. portanto de eSlar:í disponível no início da terceira microinslruçào. Ele pode ser ou não ncccss.1rio nesse momento, porém. muis cedo ou mais tarde. <;cr:í neccss:.irio. Ponanto, em tOOO c:l'iO, iniciar a busca agor:Ln:"in poderá r:I1,cr mal :llgum.
o
~
Ei
o u
Tabela 4.3
Rótula
Microprograma para a Mie· I.
I
•
.
•
Mainl
PC ... PC ... 1; fetch; gota IMBR)
MBR contém opcode: obtenha o próximo byte; despache
nopl
gota Mainl
Não faça nada
laddl
MAR ""SP =SP - I; rd
Leia a palavra seguinte â do topo da pilha
'.•
iadd2
H _ TOS
iadd3
MOR "" TOS
H ... topo da pilha Some as duas palavras do 10po; escreva para
o m
!subi
MAR -SP - SP - I;rd
tela a palavra seguinte à do topo da pilha
isub2
H ""TOS
H = 10po da pilha
j
OpemçãeJ!
Comentilrios
u
u
•"o o
"
•
~
o
~
= MOR + H; wr; gala Mainl
N
• o
MOR _ TOS _ MOR - H; wr;
gota Main I
o topo da pilha
Efetue subtração; escreva para topo da pilha
iandl land2
MAR _ SP _ SP_I;rd
Leia 11 palallTa seguinte li do topo da pilha
H".,T08
H .. topo da pilha
iand3 ior1
MAR =- gp "" SP-!;rd
Leia n palavra seguinte à do topo da pílha
10<2
H - TOS
iar3
MDR,.. TOS = MOR OU H; wr; goto Main\.
H - topo da pilha Do aR; escreva para nova topo da pilha
dupl dup2
MAR _ SP _ SP+ I
popl
MAR - SI! - SP - I; rd
MOR ""- TOS "" MOR ANO H; wr;
MOR "" TOS; wr;
goto Main 1
gota Malnl
Incremente SP e copie para MAR Escreva nova palavra da pilha Leia a palavra segwnte à do topo da pllha
Espere nova 1'05 ser lida da memôna
pop2 popa
Do ANO; escreva paro novas topo da pilha
TOS - MOR; gota Main I
Copie nova palavra para TOS SeI MAR to SP - J; leia 2a palavra da pilha Ajuste MAR para palavra do topo
swapl
MAR - SP - 1; rd
"",,p2
MAR - SP
",.p3
H - MDR;wr
",.p4
MDR - TOS
Copie TOS antigo para MOR Ajuste MAR.para SP - I: escreva como 2a palavra na pilha
swap6
TOS ... H; gota Mainl
Atualize TOS
blpushl
SP-MAR_SP+ 1
MBR - o byte paIa passar para a pilha
bipush2
PC _ PC+ l;felcb
Incremente PC. busque próximo opcode
bipush3
MOR .. TOS '"' MBR; wr; gota Main 1
Estenda S'inal da-constante e passe para a pilha
iload 1
H ... LV
MBR contem Indice;
iload2
MAR _ MBRU + H: rd
MAR "" endereço de variável local para passar
i1oad3
MAR - SP_SP+ !
SP
tload4
PC = PC
i1oad5
TOS ... MDR;
Salve TOS em H: escreva 2a palavra para topo da pilha
swap5
+
1; !etch:
gota
wr Ine
Mainl
copie LV
para H
para pilha aponta para novo topo da pilha; prepare escrita
PC; obtenha próximo opcode; escreva topo da pilha Atualiza TOS (Co/llinll(.J)
- -- --.. - _. -- -----"'
,
Tabela 4.3
Microprograma para a Mic-l (Continuação).
,
Oparações
I
Comentários
istorel
H""LV
MBR contêm índice; Copie LV para H
!store2
MAR _ MBRU. + H
MAR - endereço de variãvellocal on.de armazenar
istore3
MDR - TOS; wr
Copie TOS para MOR; escreva palavra
istme4
SP = MAR=SP-l;rd
Leia a palavra_seguinte à do topo da pílha
istore5
PC .. PC+l;leteb
Incremente PC; busque próximo opcode
tstore6
TOS .. MDR: golo Mainl
Atualize TOS
+ I; fetcb;
Busque byte de operando ou próximo opcode
wldel
PC '"' PC
wide2
gota [MBR OU OxlDOI
Ramilicação multivias com bit alto aÍUStado
wide_Doadl
PC - PC+ I; lelch
MBR contém lo byte de indice; busque 20 H - lo hyre de indice deslocado 8 bits pata a
wide..Jload2
H=MBRU«8
""".rna
'Nide_lload3
H""MBRUOR H
H". indice de 16 bits ,de variãvellocal
wldeJIoad4
MAR ... LV
wideJstorel
PC - PC
+ H; rd; goto iload3
+ I; felCh
MAR "'" endereço de variável local para passar MBR contém lo byte de indice; busque 20
wide_ istore2
H - MBRU«S
H - lo hyte de indica deslocado 8 bits para a esquerda
wide_istore3
H-MBRU OR H
H"" Jnd.lce de 16 bits de varlavelloca1
widfl)store4
MAR '" LV -+ H; goto istore3
MAR = endereyo de variável local no qual armaze-
nar
ldc_wl'
PC _ PC+ I;fetch
MBR contém lo byte de indke; busque 20
ldc_w2
H- MBRU <
ldc_w3
H _ MBRUOR H
ldc_w4
MAR = H + CPP: rei; goto Uoad3
H= lo byte da indice« 8 H _ indice de 16 bits dentro do conjunto de COl).Slames MAR = endereço de constante no conjunto de constantes
Üficl
H- LV
MBR contêm Indica; Copie LV para R.
ilnc2
MAR - MBRU + H; rd
Copie. LV + índlce para MAR; Leia vanável
ünc3
PC - PC + 1; fetch
Busque constante
ünc4
H_MOR
Copie variâvel para H
üncS
PC - PC + 1; fetch
Busque proximo opcode
iinc6.
MOR "" MBR + H; wr; gota Mainl
Ponha soma em MDR: atuall%e vruiiivel
gotol
apc
9 0102
PC - PC + I; fetch
MBR - lo byte de deslocamento; busque ao byte
gota3
ft-aMBR <<8
besIoque e salve primeiro byte com sinal em em H
PC - 1
Salve andereço de apeado.
gOl04
H - MBRUORH
H- Deslocamento de desvio de 16 bits
got05
PC ... OPC + H; tetch
Adicione deslocamento a OPC
got06
goto Mmnl
Espere para buscar o próXlIllO op(:ode
Intl
MAR ", SP ... SP-l;rd
Leia a pa\llvm saguinte â do topo da pilha
illt2
OPC - TOS
Salve TOS em OPC temporariameme
illl3
TOS - MOR N _ OPC; if IN) gota T; else gota P
Ponha novo topo da pilha em TOS Desvio de bit N
.",1
MAR=SP - SP -1 ; rd
Leia a palavra seguinte â do topo da pilha
iteq2
Salve TOS em OPC temporariamente
lleq3
OPC -TOS TOS _ MOR
üeq4
Z"" OPC; ir Il) gota T; else gotoF
Desvio de bit Z
Inl'
Ponha novo topo da pilha em TOS
( C()ntinua )
I
I
~i
•> ~
~
•
"
~
-• o"
~
• o
~
E
Tabela 4.3 e
Microprograma para a Mie-I (Continuação). apemçães
Camentárfas
Rotulo IUcmpeq!
MAR =SP = SP-l;rd
Leia a palavra seguinte à do topa da pilha
ifJcmpeq2
MAR - SP - SP- !
Ajuste MAR para ler novo topo da pilha
iUcmpeq3
H- MDR:rd
Copie segunda palavra da pilha para H
iUcmpeq4
OPC -TOS
Salve TOS em OPC temporariamente
ilJ cmpeq5
TOS - II4DR
Ponha novo topo da pili;la em TOS
o
"
iUcmpeq6
Z "" OPC - H: if (Z) gota T; else gota !"
Se 2 p.1.lavras do topo da pilha 19unis. gala T. eise goto!"
•
T
OPC ,.. PC - 1; gota g0t02
o mesmo que gota J ; necessârio para endereço-alvo
PC-PC+\
Salte primeiro byte de deslocamento
~
•"o o
, P2
PC "" PC + I; letch
PC agora aponta para PTÓJimO apcode
1'3
gota Mainl
Espere por busca de opc:ode
lnvokcvittuall
PC _ PC + I; letch
MBR = byte de Indica; 1; inc. PC. obtenh'a 20 byte
fnvokewtual2
H_ MBRU «8
Desloque e salve primeiro byte em, H
Involrovirtual3
H - MBRUORH
H = deslocamento de ponteiro de método em relação a cpp
invokev.irtual4
MAR "" CPP
inv,okevirtualS
OPC ... PC+I
Salve Return PC em OPC temporariamente
invokevirtual6
PC _ MDR; retch
PC aponta para novo metodo; obtenha contagem de parâmetros
invokevirtual7
PC ... PC + I: fctch
Busque 20 byte da contagem de parâmetro
invokcvirtual8
H - MBRU «B
Desloque e salve primeiro byte em H
invokevirtua19
a "" MBRlfOR H
H - mimero de parãmetros
invokevirtuallO
PC ... PC+I:fetch
Busque lo byte de .. locais
invOkevirtualll
TOS-SP -H
invokevinunl 12
TOS - MAR _ TOS
invokevirtuall3
eC=PC+ I;letch
Busque 20 byte de ", locais
invokevirtual14
H "" MBRU«8
Desloque e salve primeiro byta em H
invokevirtual15
H .... MBRUORH
H- " locais
invokevittualJ6
MDR - SP+H+ l;wr
Sobrescreva OBJREf com ponteiro de enlace
Invokevinual17
MAR "" SP ... MDR;
Ajuste SP, MAR para local1zaçã:o para conter PC antigo
invokevirtuall8
MOR "" OPC; wr
Salve PC antigo acima dillt variáveis' locais
+ H; rd
Obtenha ponteiro para método da área cpp
TOS "" endereço de OWBEf- I
+J
TOS ... endereço de OBroU (novo LV}
invokcvtrtual\9
MAR - SP - SP + I
SP aponta para ~ção p.ara conter LV antigo
Invokevirrua120
MOR _ LV: wr
Salve LV antigo acima do PC salvo
invokevirtual21
PC".. PC + I; fetCh
Busque primeiro opcode do novo metodo
invokevirtlJal22
LV - TOS: goto Mmnl
Ajuste LV para apontar para LV Frame
MAR "" SP - LV; rd
Reajuste SP. MAR para obter ponteiIo de
ireturn 1 iretum2
Uga~o
Bspere por leitura Ajuste LV para ponteiro de ligação; obtenha PC antigo
ireturn3
UI - MAR .... MOR: rd
lretum4
MAR - DI +1
Ajuste MAR para ler LV antigo
ireturn5
PC SII MDR; rd; fetch
Restaure PC;.busque próximo oprode
ireturn6
MAR _ SP
Ajuste MAR para escrever TOS
ireturn7
LV - MDR
Restaure DI
ireturn8
MOR - TOS: wr; gota Maln 1
Salve valor de retorno no IOpO de pilha Original
r ~
...
'
.-.,..
.,. :IIj
Se :lcasu os hytcs em MBR forem todos zeros. () opcooc p:tr:l. uma instruç:io NOP. a microinstrução seguinte. é que tem rotulo nopl, buSCld3 da lncatizaç5.o O. Uma vez que
~
1Ij li ~
. ~
1 ~
I I
I
I I I
P"J.r.t buscar II ",)Cntndo na memória é necess:1rio dccrernentllr o pomeiro da pilha e escrevê·lo em MAR. Note que, por conveniência. esse endereço também é o endert.'lfo que será usado para a escrita !\ubseqi.knte. A lém do mais. vlSIO que essa localizaç.:lo será o novo LOI)() da pi lha. esse valor devc ser atribuído a SP. Portanto. uma única operação podc determinar o novo valor dc SP e MAR. decrementar SP. e cscn:vê-Io em ambos os registt:llJores. Essas eoisas:iào realizadas no primeim ciclo.laódl. c a operação de leitura é iniciada. Além disso. MPC oblém o valor do eampo NEXT AOORESS de laddl , que é o endert."1fo de ladd2. o nde quer que ele pos.'\ef ajustada. A inslrução OUP s impll!.~men te duplica a palavra do topo da pilha. Uma vez que o valor dessa palavra já eslá armai'.cnado em TOS. a opcr.1ção é lão simplc~ quanto incrementar SP par:.Laponl:lr parJ. a nova locali7.ação e armazenar TOS naquela localização. A inslrução POP é quase tão simples. apenas decrumenta SP para descartar a palavra que está no topo da pil ha. Contudo. pura manter a palavrJ. do topo em TOS. agora é neçcssário ler a nova palavra do topo na memória e escrevê.-Ia em TOS. Por Om, a instrução SWAP envolve permutar entre si os valores em duas IOC:Llizaçi)cs de memória: as duns palavras do topo da pilha. Essa upe ração é. facili l:lÚa de certa forma pe lo falO de. o TOS já conter um desses valores, portanla de não pn. cisa ser lido da memória. E:isa instrução scr.í disc utida com mais dc talhl."s mais adiante. A ilislrução BIPUSH é um poucu m:.Li ,~ complicada purque o opcode é seguido IXlr um I1l1ieo b)'te. como mostr:.11I Figura 4 . 15. O hyte deve ~cr interpretado como um inteiro com ~inal. E.~sc byle. 411e já foi busc:ldo pura MBR em Mainl, 1.1eve ..er estendido em sinal para 32 biL~ e passado par:!. o topo da flilha. Pon:mto. essa ~l./üê.ncia deve I;!,~ tende r em ~Inalll h)'tc em MBR para 32 hits c cupiá. lo para MOR. Por lim. SP ê incrementado e ctlpiaJo para MAR. i>Cl"IllltHldu '4ue I} uperaUÚl.l '>eJa c.'> uitu para 0 101'0 da pilha. No eallllnho. C.\se operando t:unhém deve ~e r copiado par.! TOS ..o\lém disso. antes de retomar parJ. o programa principal. note quI.! PC deve ~er Incrementado de moooque u pm xlrno ,)pt:ode estar:i tlisponivcl em Mainl . Em 'iCguida ell n~idere a illSlnlç;iO ILOAO. ILOAO também tem um hytc aptÍs o ol>eode. como mostrJ. a FigurJ. -k 16(:1). mas es.'OC byle ê um indiee (sem sinal) parJ. idcntilicar a palllvr.J. no espaço de variáveiS locais que será pas11 sada parJ. a pilha. Uma VCi'. l./ue há somenlc I hyle, apcna.~ 2 = 2.~ó podem :;cr tti~tinguidas. a saber. as primcims 256 palavrJ.s no espaçu de variáveis loc al ~. A instroção ILOAD re4uer uma lellura (parJ. obter a palavra), bem como pilha). IlarJ detemli nar o enden.., u flara leitura. entretanto. o ueslocalncnuma escril:l (paro! passá-Ia para o lopu 10 . contido em MBR. dcve scr adicionado ao cuntclído de LV. Uma vez 4ue amhos. MBR e LV, Slí podem '>Cr acessados pelo barramento B. LV primeiro ê eupi:ldo para H (em iloadl ), em30 MBR é adicionado. O res ultado dessa adiç:io ê copiado pam MAR e uma leitura ~ iniciada (em 11oa(2).
w
f" ur.4.15 Formato da instrução BIPUSH.
I
I
l
BIPUSH (O}(IO)
BYTE
to to
, ~
•o o
•
~
•>
" o
•
"
-
'"'" ••
o
~
•
ngur:l4.18
(ajllOAD com um Indice de 1 byle. !b) WIDE IlOAO com um indice de 2 bytes.
COflludo. a utllizaçào ue MBR como um índice é ligeiramente diferente do que em BIPUSH. onde ele era t!slen_ dido em sinal. No caso de um índice. o dcslocarncllLO c sempre posilivo. ponanto o deslocamento do bytc deve ser inlcrprel:luo como um imciro sem sinal. difereme de 8IPUSH. o nde Cr:l interpretado como um imeiro de 8 bits com sinal. 1\ interface de MBR ;10 barr.lmcnto B é cuidadosamente pmjctad:l. par.l possIbil itar ambas as opcmçiks. No caso de B1PU5H (inteiro de S bits com sinal) a opcr.lção adcqu.ada é l!xlcnsào de si n:tl. isto ê. o bit da extrema esquerda no MBR de I byte é copiado par.! os 24 bits superiores no burr.lffiCnlo B. No C:l'lO de ILOAO (intcim de 8 bits sem
• w
'. -• o
~
• N
o
~
o
~inal) . a opcraçào :ldequada é preencher com 7.cruS. Nesse caso. os 24 bil.'i ~ upcriorc.~ do txuT:l.lnento 8 são ~imples· mcnte .. upridos com zeros. Essas duas operaçõcs s::io distinguidas por ..inais sepllr.uJus que indicam qual operaç::io dcve ser exeeutadn (veja a Figura 4.5). No micruc&ligo. isso é indicado por MBR (estendido cm ~in a/, como em BIPUSH 3) ou MBAU (sem ..inal. como em iload2). EnquanlCl está c~pcr,mdo que u memória forneça o opcmndo (em iload3). SP é incre mentado para comcr o valor para annm:cnar o resultado. o novo lopo da pilha. Esse valor também é copiado para MAR em prep:tr.l~ão pura escrever o operando parJ. u topo da pil ha. Mais um:L vez o PC deve ser incrementado para buscar o próximo opcode (em iloaCl4). Por lim. MOR é cupimlo para TOS para retletir 1.1 nuvo IUIX) da pilha (em lIoad5). ISTORE é a opcrJ.Ção inversa de ILOAO, isto é. ullla pulavrJ. é rctimda do topo da pil ha e arnuzenada na locali7.aç:1o espedficada pcla 'i01ll:L de LV e do índice contido na inslnLção. Ela usa o mesmo fonnato de ILOAO, mostrado na Figum 4.16(a). exceto que 11 opcotle é Ox36 em vez de opcooe Ox 15. ESi'la inslnLçiio é um pouco diferente do que poderiumos espcmr por que :L palavrJ. do topo da pilha já é eonhecida (em TOS), portanto du pode ser annazcnuda imedia· tameme. COllludo. a nova palavrJ. do topo da pilha deve ser buscadu. Assim. são ncccssárius uma cscrita. bem como uma leitur:!. !nus elas podem ser realizadas em quulquer OrtlCIll (ou uté em purJ.Jclo. se isso rosse possível). Alllba~, ILOAD e ISTOAE, são resuilas. no sentido de que só podem acessar a.~ primeim.'1256 variáveis locais. Ao pa.'iso que para grande pane dos progr.unas esse esp:u;o de vanáveis locais ~ja muis do que suficiente. é claro que é neeessáriu poder acessar uma variável onde quer que ela esteja localizada no espaço de variáveis locais. Paro razer isso, UVM usa o mesmo mecanismo empregado em lVM : um opcode espL·cia.l WIOE (largo). conhecido como bylc de prcl1xo. !>Cguido pclo upcode IlOAO ou ISTORE. Quando essa seqüência ocorre. as dcliniçõcs de IlOAO e ISTORE ~iIo mooificada.... eom um índice de 16 bits após o opcode. em vcz de um fndice de 8 bil.... como mostra a Figura 4.l6(b). Wl0E é dl.ocodilic:lda do modo usual. levando a um desvio paru widal que manipula () opcode WIOE. Embora o opcode parJ. alargar. ou ampliar (widen) já esteja dispunfvel em MBR. widel busc:\ o primeiro byte ap<ís o opeode. porque :ilógica do mieroprograma :>empre cspcrJ. que ele esteja ali. Então é feito um segundo desvio multivias em wide2, destu vez usando a bite após a WIOE pUr.l despachar. COllludo. uma vez que WIOE IlOAO requer microcodigo difeTCnte do de IlOAD, e WIDE ISTOAE re4uer rnicrocódigo diferente do de ISTORE etc., o segundo desvio mullivia.~ não (Xxle só usur o opeou..: como o endereço-alvo, do mesmo n1lx.lO que faz Main1. l!m vez disso. wide2 eretua uma opemção O R de Ox 100 com o opcode cuquanto IJ está colocando em MPC. O resultauo é que a interpretação de WIOE IlOAO começa em Oxl15 (em vez de OXI5), u interpretação de WIOE ISTORE eomeçu em Oxl36 (em vez de Ox36) e a.~sim por diante. Desse mootl. todo opclxle WIOE começa em um endereço 256 pa l avr:L~ mais alto, isto é. Ox 100, no annuzenarn..:nto de eomrole do que o opcoJe regular correspondente. A seqüência inicial de microinstruçõcs para ambas. IlOAO e WIDE Il OAO. é mostrada nu Figura 4.17.
El'ldereço
OxtFF
Agura 4.Tl
Ox1l5
Sequénoa mioal de rucrolllStruç6es para ILOAO e WIDE ILOAD. Os endereços são exemplos.
""" 0.00
- -_ _ _ _ _ _ __ _ • __ •••• , . . . . . " . , "
1 11 ' I '
--, -,
,
WLoe
lOAO !LOAO
3
MIIlnt
0>
-
.. ,,,,,,""
A~en8mef1l0
t .,. , . . '· ._ . . .
L
• • _.
IkHldl
2
2
,
IINC
Figura 4.1 8
INDEX
(Ox84)
A instruÇão IINC tem dois
CONST
campos de operando diferentes. Uma vez alc:lI1ç;J.do o c&ligo para implementar Wl0E ILOAD (0:< 115), a diferença entre de e o ILOAD nonnal é somente que I,) índ ice deve ser constru ído concatenando 2: bytes de índice em vez de simplesmente estender em sinal um byte único. A cuncatenação e ~ubscqüente adição deve m scrcfctuadas em elapas, primeIro enplando INOEX BYTE 1 em H deslocado 8 bi ts parJ a esquerda. Visto que o índice é um inteiro sem sin:l1. o MBR é estendido em zeros usando MBRU. Agora {) segundo bytc do ImJice é adicionado (a opcrnç:io de adição é idêntiea ~ concatenação. umu vez que ti bytc de ordem baixa de H agom é zero, garantindo que não haverá vai·um entre os bytt!s) e. nova· lIleme. o resultado é am13zenado em H. Dai em diante. a operação pode seguir exatamente como se fosse uma ILOAD padrJo. Em vez de duplic0010. ml Figum 4. 19(a) vcmos a situação no início dc Main!. O o pcode já está em MBR. mas PC ainda não foi incrementado. Na Figur.l4. (9(b) vemos a situação no início de gOlol . Nesta allum o PC já foi incremenlaJo. mas o primeiro bytc do deslocamento ainda n:lo foi buscado par.! MBR. Uma microinstruç:1o depois temos n Figurn 4 . I9(e), na qual () antigo PC. que aponta pam o opcodc, foi salvo em OPC e o primeiro byte do dc.~· lueamcnto c...lá em MBR. Esse valor é necessário porque o deslocamento da instrução GOTO IJVM é relativa a ele e não ao valor ..:orrelllc de PC. Na verdade. essa é a raz:1o primordial por que prccisamo'l ou rcgistr.ldor.
--- • , B•
,,' FI••,.. 4.19
Sltuaçdo no inicio Registradores de várias PC mlCfotnStruçóeS. (aI Main!. (b) golO!. (cl got02.
(dI 90103.
(el got04.
-
OFFSET BYTE 2
OFFSET BYTE 2
OfFSET 6YTE 2
OFFSET6'fTE2
OFFSET aYTe 2
QFFSET BYTE 1
OFFSET 6'fTE 1
OFFSET BYTE 1
QfFSET B'fTE 1
OFFSET B'fTE 1
GOTO(OIlA7)
GOTO (OKA 7)
GOTO(O~A71
,------,
OPC:====I "BR:=~~=I 0~A7
H
(O~A7)
GOTO(O~A7)
.,
r------, ,------, r------, ,------, ' "' "' 11 11
,
"'.."
L-_ _--' (.)
GOTO
lO)
,
,
11
,
,-,
11
IOFFSET B'fTE IIIOFFSET BVTE IIIOFFSET BYTE
I!
II
I (o)
I I
,
21
OFFSET I «8
(d)
(. )
I
-•• = = a
•o u
•> z ~
o
= ~
•
"
'"'" •
·•• o
~
,
~
e
o
u
•
~
•
~
'•. o
A microi nstruç:1o em gOl02 inicia a busca lio segundo by[c de ucs!uc:uncnto, o que leva à Figura .U9ld) no iníc io de got03. Depois que o primeiro bytc do dcslocalllt!nto foi deslocado Mb lt.~ P'lnl a esquerda e copiado par.! H, chegamos em 90104 c?l Figur.l -L 19(c). Agora lemos o primeiro hytc de dcslocarnclllo deslocado para a cSl{ucrda em H. o 'iegundo bylc de deslocamento em MBR c a base em OPC. Construindo o deslocamento de 16 bits completo em H c então () adicionando à base. o btemos o nO\lo endereço par.! colocar em PC. em galoS. Não esqueça de observar que usamos MBRU em 90104 em vez de MBR porque não "lucremos extensão de smal do segundo byte. Na verdade,
o dc<>locamcnlo de 16 bits t! construido demando uma operação OR C(l m as duas mclaues. Por fim , temos de buscar o próximo opcodc antes de voltar :t Maln! porque o côdigo que ali está esper,l () próxi mo opc.:ode em MBR. O último I,;iclo. goto6. ê ncccssJrio porq ue os dados da memória podem :.cr bUSI.::ldos :J. tempo de apare\..'cr em MBR dUr.lnte Main I. OS dcslocamentos usados nu insU'Ução goto lJ VM ~:io valores de 16 biL" com sinal, com um minimo de 32768 e um mJximo de +32767. Isso signifi ca quc desvios para qU:llquer lado par:l. rót ulos mais distantes do que esses valores não são possíveis. Es.~a propriedade pode ser considcrada como um bug ou uma característica em ]J VM (c também em N M). A mml:l do bug diria que a derinição de JVM n:io deveria restringir seu estilo de prog.r:l.mação. A tunna d:l caracleristil,;;I diria que o lrabalho de muitos programadores sofreria uma melhoria radical se eles tivessem pesadelos com a te mida mensagem do eoml>iludor: program is too big and halry. You must rewrite 11. Compllatlon aboned. (Progr:una muito grJ.nde c confuso. VoeI! precisa reescreve-lo. Compilação abortada.)
~
N
C
•
· ~
o
Infelizmente (de nl)SS(l ponto de vista) CSStl mens:lgem só aparece quando uma cláusula lhen ou e lse passa de 32 KIl. o que normalmente rep resenta 50 páginas de Java. Agom I,;onsiderc as lfês insU'Uçües IJVM de desvio condicional : lFLT, IFEQ e IF_ICMPEO. As duas primeiras retir.un a palavra que cstd no topo da pi lha. dcsviando se a palavr.l for menor do que zero ou igual a zero. respectivamente. IF_ICMPEO rctim as duas paJavl"..!s do topo da pilha c desvia se, e somente se . elas forem iguais. Em todos os três casos. é n\.."Ccssário ler uma nuva palavrJ. de topo de pilha paíJ. armazenar em TOS. O conlJ'Ole parJ. cssas três instruções é scmelbame: o opcrJ.ndo ou oper.mdos são primeiro rolocados em registradores. então o novo valor do topo de pilha é lido parJ. TOS. fina.t mente são realizados o teste c o desvio. ConSidere IFLT em primeiro lugar. A palavr.! a testar jd estd em TOS, porem. uma vez que IFLT retira uma palavra da pilha. o novo topo da pilha tem de ser lida par.l armazenar em TOS. Essa leitum é iniciada em a111. Em illt2. a palavrn a ser testada é salva em OPC por cnquanto. ponamo O novo valor pode ser colocado em TOS dentro em pouco sem perde r o valor currente. Em iltt3 a nova palaví..! de topo de pilha está disponível em MOR. ponanto'; copiada Jlill':l TOS. Por fim, em il1t4 a palavra a ser testada. agorJ. salva em OPC. é pS.! impleml!ntação úe INVQKEVlATUAL c JAETURN. as InsU'U\;iks par.! invocar uma chamada de procedimcnto e n.:mmo. t!omo dl!SCrito na Seção ~.::!.3. INVQKEVIRTUAL é uma 'iCqüência de 21 microinSlruçijc~ e é;l mais cnmple:'ta inslnu.;:io implemt!lllada em IJ VM . Sua npcr.I~·:it) I()i m\l~lrad :l na Figur..! .t tO. " inslnll.;:lo U)kI seu deslocamento de 16 bus par..! detcm\inar o endert.oço do método a ser invocado. Em nossa implcmenlili,;ão. tl deslocamento é simplesmeme um deslocamento 110 Conjunto de Constantes. Sua locali./..ac;:io nesse conjunto aponta o método a :.cr invocado. Contudo. lembre·se de~uc os primeiros " byles Je cada método nâu são illsU'UC;dc.... e ~ i m dOIS pontciros de 16 bits. O pri meiro dá u número de palavrJ.S de parJlIletru - ind uindo OBJAEF (vcJa a FigurJ. -'. 10). O segundo dá I) tamanho da área de V'.uiJvcis IUl,;ais cm palaví.ls. Esses I,;;unpos.;ão busçados por meio doi porta de g bits e mOlltadus exatamente eumo sc fosse m dC!\Jocamcntos de 16 bits den tro Je uma instrução. Entiio. a informação de enlace nel,;essária para resta UíJ.r a m:il.[u ina li seu estudo anterior - () endereço do inicio da :Il'l!a de variáveis antiga e (l PC J. nt igo - é armaLcnada imediat:llllenle aci ma Ja área de variâvcis locais rL"Cé m-criada e abaixo da nova pi lha. Por fi m. \) opcooe da I>roxi ma instrução ê buscado e o PC é incrementado antes de retomar a Malnl para inici ar a próxi ma instrução. IRETUA N é ullla inSTrução simples que n;1o eontém opcmndos. Ela simplesmente usa o endereço armazenado na primeira palavra da :ire:! de v:lriáveis ItlCais para rec ullCrar a i nfu nna~ ão de ligação. então res taura SP. LV e PC a seus valores IInteriores e copi a \1 . . alor dc retomo do lOpu da pilha I,;OITent.c pllra o topo da pilha origi nal. 1,;01110 mostra a Fi gura 4.11.
4.4 Projeto do nível de microarquitetura EX:Jt:.IIncnte como quase rudo na dc:ncia da compulilI;ão. o projt!lo da microarquitcturJ c.\itá repleto de compromis~os. CumpuliIdorcs têm muitas camctcrfstil,;Js desejáveis. entre elas velocidade, custo. contiubiJidadc. facilidndc de utilização, requisitos de energia e tamanho Hsko. Contudo, um compromisso comanda as decisõcs mais importantes que os pmjetistas de CPU devem {ornar: velocidade conlr.l cuslo. NI!.'ila seçao estudaremos cs..;e assunto tletalhadamcntc para ver () qUI! pode ser permutado pelo que. que grau de desempenho potlc $Cf alcançado e a que pre~o
-"''" •", •
em hardware e complexidade.
4.4.1 Velocidade contra custo Emhora a tecnologia mais rápida tenha resultado nu maior dos aumentos de velocidade em quu lqucr periodo de tempo considerado. esse assunto n50 se cnquadr.t no ..:scopo dc.'ile livro. Melhorias de velocidade devidas à organizaçao, embora menos espt:tacularcs do que as devidas a circuitos mais r.ípidos. ainda assim sao imptl:ssion:uucs. Velocid;uJc pode ser medida de várias maneiras, mas dados uma tecnologia de circuitos e urna ISA, há tré.'1 abordagens básicas para aumentar a velocidade de execuy:1o: 1. Reduz.ir o núm..:ro de ciclos de relógio nec..:ssários pam eXl."Cular uma instrução. 2. Simplificar a organizaç3o de modo quc o ciclo de relógio possa !>Cr mais curto. 3. Sobrepor a execuçao de instruyõcs. As duas primcira.~ são óbvias. mas há uma surpreendente variedade de oportunidades de projeLO que pode afetar dr.t~nic;un enlc o número de cicJus de rel6gio. tl período de relógio. ou - em grande parte das ve ...cs - ambos. Nesta seção. daremos um exemplo de como a codificação e a decodilic:lção de uma opcrnç:1o pode afetar o ciclo de relógio. O número de ciclos de relógio necessário pam executar um conj unto de opcr:lçõcs ~ conhecido como comprimento do caminho. Às vezes o compri mento do caminho podc ser cllcurtado adicionando hardware c.~peciali ...ado. Por exemplo, adicionando um inerementador - conceitualmente um somador com um lado pcrtl14lnentemenle ligado a 'some I' (add I) - ao PC, n50 prccismnos mais usar aULA partl fazer avançar () PC, eliminando ciclos. O preço a pagar é nl:lis hanfwarc, Todavia, essa capacidade mio tljuda tanto como seria de esperar, Na maioria das 10slruções, os ciclos consumidos para incrementar n PC também são ciclos em que uma opcraç:10 de leilurn escl sendo executada. Em todo caso. a instrução seguinte não pode ser executada mais cedo porque ela depende dos dados que vêm da memória. Reduzir o número de ciclos de inslmção ni.'Ccssário par.l buscar instruções requer mais do que apenas um circuito adicional para incrementar o PC, Para :lcclernr a busca de instmçüo em qualquer grau ~ ignilicati vo, a terccirJ. técnica - sobreposiçao de execução - deve ser explorada. Separar o circuito de busca de instruçõe" - a porta de memóriu de 8 bits e os registr:ldorcs MBR e PC - é mais efetivo se, cm lermos funcionai s, 11 unidade for montada indepcndcmemcnu: do cami nho de dados principal. Desse 01000. da pode buSC:1f o próx.imo opcode ou oper.mdo por conta própria, talvez :.IIé mesmo execut:lndo forJ. de si ncronia em relação ao restunte da cru e buscando uma ou mai~ instntçõe... com antccedl!:ncia, Uma das fases que mais consome tempo na execução de muitas das instruções é buscar um deslocamento de 2 byles, estendê· lo adl.'"quadasncnte c o acumular no registrador H em preparação parJ. uma adiç.ào, por exemplo, em uma ramificação de PC .:!: /I bytes. Uma solução potencial - construir uma porta de memória de 16 bits de largu· ra - complica muito a opcrnç1l.o porque. na verdade, a memória tem ]2 bits de largura. Os 16 bits necessários podem abr.lOgcr fron teiras de palavra.", de modo qUI! até ml!,,,mo lima tinic:! leitUf:l de 32 bits não buscará necessariamcnte. ambos os bytcs necl!ssários. Sobrepor a execm;:io de instruções é, de tonge, () mais i nleres,~ante I! oferece a melhor oportunidade paf:l dr.islico:. aUIIlClIl!lS de vcJucic..lade. A simpk.." .~ obrcpostçã(} da busca e execuç:io de inslruçdcs dá um resultadu 'urpn.-en c..Ientel11cnte dclÍ\'o. Entretanto, tccnicas mal!> :.olisticada... .J\
•o u
•>
"
•'" "
r o
-'" ••"o ~
• o
~
•o
u
• ,•.
~
~
o o
; ~
'.•" o
~
c
•
m
o"
Um do!' circu i t().~ mais cX:lustivarncntc cstud:LuOS na his((kia iJ o sornador billll.rio. Há milhares de projetos c os mais rápido~ ~àu muito mais vclol.cS do que os mais lentos - c também muito mais complexos. O prujCltSla de sish.:mas lClIl de decidir ~c a maior velocidade vale () preço do 'imóvel'. Somadores não são os únicos COIllI}(l11cntcs que lêm muitas opçõcs. Praticamo.:llIc qualquer compuncnLe do sistema pode ~cr prtljctudo pum executar mai.~ l"'.1pidamentc ou mais lentamente, com um difcrcndal de custo. O desutio parJ. o projetista é idcmificar os compom:ntcs que mais podem melhor.1r o shnema das questões de projeto c os compromissos corrcspondemes. Um dos fatores fundamentais para dctenninur a velocidade em que um relôgio pode executar é a quantidade de tr:l.bulho que deve ser realizada em c:ld:\ eiclo de reló.gio. Obviame11le, quanto mais trJ.balho a ~cr realizado, mais longo será o ciclo de relógio. Claro que não é assim tão simples. porque o hardware é muito bom para fazer coisas em parJ...lelo. Ponamo. n3 verdade. o quc detennina o comprimento do ciclo de relógio ê a scqüência de opel":li;õcs quc devem ser exccutadas f!lll shie em um linico ciclo dc relógio. Um a~pcc to que pode ser controludn é a quanr idude de decodific:lç:ln que deve ser re:llizada. U:lllbrc-se. por exemplo. de que nu Figur.:l 4,5 vimo.~ que. embor:1 qoalquer um de nove registradores pudcsst ser lido pam a ULA a panir do barrJ.ffienlo S, precisávamos de apen:l!i 4 bits na palavra de mieroinstrução para especificar qual registrador H devia ser :,;elccionndo. InJi:l izl1lcnlc. essas eco no m hL~ têm um preço. O circuito de decodificação agrega atr:L.'IO ao caminho critico. o que signilica que qualqucr registrJ.dor que habilite seus dados para o barrJ.mento S reeebcr.í. o comando um pouqulllho mais tarde c obtcrj seus dados no barr.uncnto um pouquinho m:lis tarde. Isso provoca um efci to em cascata. com aULA reccbendo suas cnu-J.das um pouco mais tarde e produ.lindo seus result:Ldos Uni pouco mais tarde. Por li m. o resultadu estará disponível no batrJ.mcmo C para ser cscrito nos regislradorc... também um pouco mais tarde. Uma vez que esse alraso muitas vel.cs é o Catar que determina o compri memo do ciclo de relógio. isso pode significar quc \) relógio n:in pode funcionar com lanta rapidez e lodo o compulador deve funcionar um pouco miJis lentamente. Assim. há uma permuta entre velocidade e custo. A redução do annazcnamenlo de controle em 5 bits por paJavrJ. vem ao CUStO da n.--dução da velocidade do relógio. O engenheiro de projeto deve levar em conta os objetivos do projeto 30 decidir qual é a opção correIa. P:u'a uma implementiJç:10 de alto desempenho. usar um decod i fi~ cador prov:lvchnentc não é uma boa idéia; para uma implemcntação de baixo eustu. pode ser.
4.4.2 Redução do comprimento do caminho de execução A Mie- I foi projetada para ser moderadamente simples e mooerJ.dameme r-í pidu. emborJ. admitamos que há uma enorme tensão entre esses dois objelivos. Em poucas palavras. máquinas simples não ~o r.ipidall e máquinas dpidas nãu ..5u SImples. A CPU da Mic- I também usa uma quantidade mfnima Je hardware: dez regislrJ.dorcs. a ULA ~ impl es da ·Figur:1 3. l8 repetida 32 vezes. um deslocador. um dccodi lieador. U111 armazenamento de controle e um pouquinho de eola aqui e ali. O sistema inteiro poderia ser montado com IIlCI1()S de 5.000 tr.utsistores mais o tanto que o armazenamcnto de controle (ROM) e a memória principal (RAM) pn.'"Cisarcm. Agorn que já vimos como a IJ V M poJc ser implementada de modo Jireto em microcót.ligo com pouco hardware. é hurJ. de cx.aminar jmplementaçiks alternativas. mais rápidas. A seguir vamos estudar modos de reduzir o número de mieroin...truçõcs por instruçào ISA (isto é. redu7ir o comprimento do caminho de execu"ão). Depois disso. vamos consider,Jr outras abordagens.
Incorporação do laço do Interpretador ao microcódigo Na Mie- I. o l:IÇO principal consiste em ullla micminstnl"ão que deve Sc!r executada no início de e:lda instru"ão IJVM . Em alguns casos l! possível sobrepô-Ia à instrução anterior. Na verdade. isso já foi conseguido. :lU llleMS em pane. :-.lote que. quandu Main t é cx.eeuwda. o npcmlc a :.cr intcrpretado j:l CS l:í I!I1l MBR. O opcode cstá al i porque foi huscado pe[o [al,'o [lrincipal .mteriur ( M: J. instruçãu J.llleriur não tinha upcrJ.nJo..) OI! Juranle J. cx.l."Cuçâl) da instruçãu lllllcrior. Essc conceito de :.obrcpor u início d:1 ills[rul,'àu pude ser levado mais adi ante c. na real id:ule. em alguns easos o laçu principal pode 10Cr rcdu1.ido a nall:l. 1s,'iO pude ucorrer da '\Cgunlle miJIlCira. Considere cada seqüência de microinstruçõcs que [ennina desviandu pum Main1. Em cada um desses lugares a microinstnlç:iu do laço principal pode '\Cr agreguda ao final du scqüência. em ve7. de :tO início da prtixi rna scqüência. scndu quc () desvio multivius agorJ. é repctitlo em muitus lugares. mas Sc!mpre cum o mcsmo conjunto de iJlvo--:. F.m alguns casns a mieroinstruçào Main t pode scr incurpomda à microin.~truçõcs alllcriores. JÜque essas i n s t ru çr.c.~ nem sempre ~;10 totalmentc utitizauiJs. Na Tabela 4.-1 é mostrada a seqüência dinâmica de instruçõcs para uma ins trução POP. O laço principal ocorre antes e depOIS de cada instruçãu: nll ligura mostrJ.11Ius apenas a ocorrência após a instruçào POP. Note que a execuçào dc.~~a inslruçãu leva 4ulltro ciclos de relógio: IreS par:.\ a.~ mic rolO.~lruçõcs cspccíticas par:l POP e uma parJ. o laçu principal.
_
_ _ _ _ _ _ _ _ __ • •• llII1111 ' I I ' I 'I[I[111 1 1 ) ' ., II I . " , · . · · · . ·.
Tabela 4A
Seqüência angina! de microprograma para executar PCP.
Rótulo
Opel'aÇÓes
popl
Leia a palavra anterior à do topo na pilha
pop'
Espere novo 'I'OS ser 1100 da memória
pop3
TOS - MDR:
Mainl
PC _ PC + 1; fetch; gola (MBRI
goto Main I
cc
Comentários
Copie nova palavra para TOS
MBR contem o opcode; obtenha prólimo byte: despache
•o Tabela 4.5
Seqüência de microprograma melhorada para executar POP.
Rótnla '
Ope.raçóes
i
Comentários
pcpl
MAR " SP -- SP-I;rd
leIa a palavra antenor à do topo na pilha
Main I
pop PC _ PC ... I; tctch
MBR contem opcode: busque próxuno byte
pop3
TOS - MDR; goto (MBRI
Copie nova palavra para TOS; despache em opcode
Na Tabela 4.5 a scquênda ro i reuuzid;J. a três instruçõcs que incorporam a.'i inslruçííes do laço principal. apro-
veitando um cit:l0 de relógio no qual a ULA não é usada em pop2 para economizar um ciclo e novamCTlh! em Mainl . Não I!sllucça de ooscrvnr que u fina l dessa seqüência desvia diretamente para o código espedfi eo pum a instruç:to ~ubseqüenle ponanto. S:lO req ue rido..~ apenas lrês ciclos no {otal. Esse pequeno estratagema reduz de um ciclo o te mpo de I!xet:uç:lO da proxima microinstnlção; punamo. por exemplo. uma IADD subseqüente passa de quatro ciclos par.llrês. Assim. isso equivale a :uUTIenlar a velocidade do relógio ue 250 MI-Iz (microinstruç()ci'> de 4 ns) pura 333 MHz (rnicroinstntçõcs de 3 ns) sem pagar nada. A instrução POP se ajusta fXuticu lanncnte a esse trmamcnto porque ela tcm um ciclo ocioso no meio que não usa aULA. COllludo. o laço principal usa a ULA. Por ii'>SO. redu7jr o comprimento da instruç:io por um falar dentro de uma instrução n:quer :tchar um ciclo nu instrução no qual a ULA nào e.~tá em uso. Esses ciclos ociosos não são comuns. mus ocorrem. punanto. v-J.lc a peml incorporar Main I ao tina! de eada seqüência de microinslrução. Tudo isso custa um poueu de ann:17.enamenIO de controle. Assim. lemos nos.<;a primcira l(o(.:nica par.! n:duzir o enmprimento do (:anunho:
Incorporr: o 1(/(;0 do interpretador ao füwl de cada seqüência de micmcódigo.
Arquitetura de três barramentos
o
que mais pudemos f:tzer para reduzir õ eomprimelUo do caminho de execução? Uma OUlr.L solução fácil é ter doi.~ harramentos completos de enll'ada para a ULA. um barramento A c um barr.lmento B. o que dá ll'ês barramentos no 10t.al. Todos (ou ao menos a maioria) os registradores devem te r :lCesso a ambos os barramentos de entradu. A vantagem de te r dois harramentos de entrada é que então (o possível adicionar qualq uer regislrador a quulquer outro rcgistr.tuor em um Stí ciclo. Pum ver o valor dessa eamctcrlstica, considere a implementação Mie- I de ILOAD. mostr.lda nuvamente nu Tabela 4.6. Vemos que em iloadl LV é copiado para H. A única ffi71io pamLV ser copiado para H é
Passe dI' um pmjew clt' dois harramentos para um projeto de Lr~s Tabela 4.6
.L
burramenIO.~.
Código Mic-l para executar lLOAD.
Rótulo
Comentnrlos
Opernções
Lload l
H - llI
MBR contém indlce: Copie LV para H
Uood2
MAR - MBRU
i1oad3
MAR -SP - SP + 1
SP aponta para novo topo da pilha: prepare escrita
Lload4
PC _ PC + I; fetch: wr
Incremente PC: obtenha novo opcode; escreva topo da pllha
lloadS
TOS - MOR; gotO Mainl
Atualize TOS
Mainl
PC - PC
MBR contém opcode: obtenha próximo byte; despache
\o
+ H; rd
I: fetch: goto (MBRI
u ~
MAR - endereço de variáveis locais a busctlr
•
>
z
o
= ~
•
"
-
N
'" ••
o"
~
,•
Tabela 4.1
Códig'o de
_@Mi.•
tres barramentos para executar lLOAD. Operações
:
ComentârfoB
iloadl
MAR =- MBRO + LV; rd
MAR - endereço de variávellocaJ a buscar
iload2
MAR - SP - SP+ I
SP aponta para novo topo da pilha; prepare escrita
iload3
PC ... PC + 1: fetch; wr
Incremente PC; obtenha novo op<:ode; escreva topo da pilha
ilcarl4
TOS - MOR
Atualize TOS
iload5
PC - PC + 1: felc:h; gOlo IMBR!
MBR lã contém opcode; busque byte ·de índice
~
e
o u
• • •," ,
~
~
"
•
~
'.• o
~
N
C
•=
o
Unidade de busca de instrução Va le a pena usar essas duas téc nicas mas, para conseguir uma melhoria drástica. precisamos de algo muito mais radical. Vamos voltar lLlrás um pouco c c.~ am inar as partes comuns UI: toúa insLruçiío: a busca c a dccodilkaC;ão uos campos lia instruçilo. Observe que, par.! cada instm."ão. podem ocorrer a.~ seg uintes opcr.u,õcs: I.
2. 3. 4. S.
O PC é passado pela ULA c incrementado. O PC é usado para buscar o próximo bytc na seqüência de instruções. Opcrandos são lidos da memória. Operandos são escritos par.l a memória. A ULA cfctua um cálculo e os resullados SõlO armazenados de voltOl.
Se umOl instrução tiver ealllpos adicionais (para operJJldos), cada campo deve ser buscado explicitamenle. byte por vez, e monUldo ;llItcs de poder ser usado. Buscar e montar um campo ocupa a ULA por no mínimo um ciclo por bytc para incrementar o PC, e então nOllamcnte parJ. montar o índice ou deslocamento resultante. AULA é usada em pmticamente lodos os eiclus para uma variedade de operaçÕt:s que têm a lIer com buscar a instrução e montar os campos dentro da instrução, além do 'trabalho' re:ll d:l instru(fão. P:lr.l sobrepor o laço principal ~ necessário liberJ.T a ULA de algumas dessas tarefas, Lsso poderia ser rcito com a introdução de uma segunda Ul.A, embora não seja necessário uma ULA completa parol grolnde parte da ativida· de. Observe que. em muitos casos. a ULA é simplesmcnte usada como um caminho para copiar um valor de um registrador para outro. Esses ciclos poderiam ser eliminados imroduzindo caminhos de dados adicionais que mio passem pel a ULÀ. Corno exem plo. pode·se conseguir algum benefício criando um ca minho de TOS li MOR, ou de MOR a TOS. lima vcz que a pulavrol do topo da pilha é copiada freqüe ntemente entre esses dois registradores. Na Mie-I . grande pane d;l carga poUc ser rctir::lda da ULA criando uma unid;Jde independente para ouscar e processar as instmções. Essa unidade. denomi nada IFU (l nstruction Fetch Uni t - unidade de bU$:l de instru~;1t). pode incrementar o PC independentcmente e buscar bytes antes de elcs screm necessários. Essa unidadc requer ~ornentc um incrementador, um circuito muito mais simplcs do que um somador completo. Levando essa idéia mais adiante. a IFU também pode montar operandos de 8 c 16 hits de modo que des estejam prontos parol uso imediuto sempre que ncce.~s..irio. Há no mínimll dois moo().~ de fazer isso: 1.
2.
A IFU podt: interpretar eada opeodc. determinando quantos campos adicio nais devem ser busc:ldos. e mo ntá-los em um regislr.ldor. prontos para a mili1.ação pela unidade de execução principal. A lFU pode aprovcitar a nalure ...,a :seqüencial das instruçõcs c disponibilizar os próximos fragmentos de 8 c 16 bits ((ldas as vc~es. quer isso te nha ou não algum sentido. Emão. a un idade de execuç:io principal pooe requis itar o que precisar.
MOSLrarnns os rudimentos du ~eg und\J esquema na Figur.l 4.20. Em vez de um unieu MBR de X bits. agor.J há dois MBRs: o MBRl de II bit~ e t) MBA2 de 16 bits. A tFU tnoni tor:1 \) bylc. ou bytes.. mais recentemente cOllsumidu pela unidade de excl.: u..,:iin princip;ll . Tarnh":m dis p''''lbili7.:I (l prô ximo hytl' elll MBR1 . cxatamente Cll mn li:.! Mie I. excelo 4uc perccbe automal icamcnLc quando MBR1 ..: lido. busca I.) próxi mo bytc alllt!cipadameUle t! o carrega em M8R! imcdiat:Jlm:nte. Comu na Mk I. da tem lIuas interl':!ccs com o harralllcntu B: M8Rt e MBR1U. O primciro": cstendido em ~ il1aJ para j2 bits: lJ tiltimo": estendido para I.ero. De mudo scmd hallle. o M8R2 oferece a mesma funciunalidade mas cllntém os próximos 2 bytc.s. Também tem dua ... inll.:rfaet!.S eom tl barramento B: MBR2 c MBA2U, quc copiam os valores dc 32 hit.... estendidos em sinal e estendidos em I.eros. respt:ctiv;unente. A lFU é responsável pm huscar uma seqüência de hytes c faz isso usando uma pona de memôria convenciunal de 4 bytes, buscando palavras intei ras de 4 bylcs antes da hora e earregandu os bytcs (.:onsecutivos em um registrad\)f de dcslocamelllo que os fornece um ou dois por vez. na ordem em que foram buscados. A funç:io do registrador dc deslocamento": mantcr um.. tira dc bytes da memória. pam alimentar MBRl e MBR2. Em todas a.'; IIczes MBRl contêm (J byte mais antigo no registmdor de deslocamento e MBR2 contém os 2 bytes mais antigos (byte mais .. ntigo na esquenta). pam fo rn1ar um inteiro de 16 hits (veja a Figum 4. I6(h»). Os 2 bytcs em MBR2 podem ser de palavr.ls de rncmüria diferentes. porque instruções IJVM niio 'iC alinham em fmllteiras de palavrols na 1Ucmtíria.
,
,
M
M"'"
-'"
,::::1:::: lu
•
RIIgIS\t8UOt' de deslOC3mento
•" •
:>
Da mmnól'il
figura 4.20 Unidade de busca para a
,
Mie-\.
R
,
~
~ -
j----,-----.---"--..... _- _...... _--2 bits de omam baila
- Barramento C
B
,
.
-
Batramanlo B
•
~f
>
'"
E5creva PC
Sempre que M8R! é lido. o rcgistradordc dt:slocamcnto dcsloCl I bytc para a direita. Sempre que MBA2 é lido. cle dc .. loca 2 bytcs para :l direita. Então MBR1 e MBR2 são recarregados a parlir do bytc mais amigo e do par de byles mais amigo. rcspt..'Cuvame ntc. Se llgOr.1 reslar espaço suficiente no rcgislrJdor de deslocamento para mais lima OUl["'J. pnlavra imcirJ. a IFU inici:J um ciclo de memória para ler css;J. palavra. Admitimos que, quando qualquer um dos regislr.ldores MBR é lido. de é preenchido. novamente no início do ciclo seguinte. de modo que poJe ser lido em ciclos const:cuti vos. O projeto da LFU pode ser modelado por uma FSM (Finitc Statc Machine - m:.íquin11 de estudu finito). como mostra a Figur..l 4.21. Todas as FSMs consistem I!m duas p:U1.es: estados. represcntados por círcu los. e lran· sições, represen tada... por arcos q ue vão de um estado a outro. Cada estado representa uma possível ~itua\riio na qual a FSM pode estar. Essa FSM particu/;tr te m sete estados. correspondentes aos sete estudos do regislfador de dc~lo· camento d:. Figur::l 4.20. Os sete ~tados correspondem ti quantidade de bytcs que est1io no rcgislmdor de desloca· mento no momento em questão. um número cnU'C Oe 6. inclusive. Cudu arco representa um evento que pode ocorrer. Três eventos diferell1es podem ocorrer nesse caso. O primdru evento é a lei tura de , byte do MBR1- E,.. se evcnlO fal. com que o rcglstí..ldor de deslocamento seja ativ-..ldo e I byte ..eja deslocado par..l for:'!. da eXlTCmidade direita. o que reduz o estado por um falar de I, O segundo evento é a lei tura de 2 hyles do MBR2. o (Iue reduz o estado por um fator de 2. Essas duas transiçi\cs fazem eom que MBRl c MBR2 ~jam Tl.'Carrcgados. Quando a FSM passa pllr.t os ~ Iados O. I ou 2. é iniciada uma referencia à memória p."lr::l buscar uma nova palaví..l. considerando que a memória não \!s teja ocup3da lendn uma palavr..l. A ehegad3 da palavr:1 adianta o eswdo por um fator de 4, P-.lí..l trabalhar eorretaJl\\!III\!. a IFU devc bloquear quando requisitada paro fazer algo qu~ nlo pode faze r. ta.1 como fornecer O valor de MBA2 quando há somente I byl\! no registrador de dcsloc.amento e a memória ainda !!stá ocupada buscando uma nova palavra. Além disso. da SÓ pode fazer uma cnisa por v\!z. portanto eventos que \!stào chegando devem ser scrillli1..adOS. Por fim. sempre que PC é alterado. a lFU deve scr alualil!lda. Esses de lalh~s a tornam mais complieatl:l do que mostramos. Ainda assim. muitos dispositivos de hanlware s:10 COTl,'; lruídos eomo FSMs. A lFU tem seu pr6prio regis tr:tdor dc endereçtl de memória, delltlminado IMAR. que é usado p:tra ende;:rcc;.ar a m!!múria quando uma nova palavra tem de ser buscada. Esse registrador tcm seu próprio incrementador dctJicado de modo que a ULA principal não é nc..'Cessária para incll!mcnt:í·lo ncm par.! buscar a próxima palavra. A IFU devc monitur.lr o bafT"o!fllenlo C de mooo que. scmpre que PC for carregado. tl novo valor de PC é copiado para IMAR. Uma vez que;: I) novo valor em PC pude nãu estar sobre uma fro nteiro! UI! palavr.l. li II-'U tem de buscar a paJuvra nccc~\:iria e fal.er o ajuste adcqlmdo do rcgh.trador de dcslocamenlo.
FI.ur. 4.21 Máquma de estado finito para
Implementar a lfU.
MBR2
MBR2
Tl1InllçÓIII
MBRI : Ocorre qUIII100 MBR! IIÍ lido MBA2: Ocorre quall(fO MBA2 I lido P3laVI1l bullCOOa: OCIl
~
•
u
...
tO
••
·• o
n
•
~
E o
"• n
•
n
•
• •
~
'•. o
~
Com J [FU. a unidw.h: dI! c..:tccução principal c~cn:vc par.! PC Stllllt.!IIIC quundo for necessário aHcr:lf:J. natureza sC4ilcncial da corremc de bytcs da in.!.tmçJ() , Ela escreve por causa de uma LIIslruçào de uc!ov;o bcnhucedida e .:m vi nudt: da lNVOKEVtRTUAL
\!
IRETURN.
Uma Vras. e mcremcnla somente por um falor de I (para J. bylcs novos). Como o MAR. o IMAR e~ lá ligado obliquamenle ao barrJ.menlO de endcrclfo. sendo que o bit O do IMAR está cOIll.'Ctado à linha de endereço 2. c ussim por diunte. para efetuar uma cnnvcrs;itl impHcila de endereços de palavras parJ cnde· rclfos úe byles. Como detalharemos em breve. nuo ler de illl.:rcmentar PC no Inço principal representa um grande ganho. por· que..! rnu.:rninstrução na qual u PC é im:rcment:uJo costum" faze r pouco mais do que incrementar PC. Se essa lIlicroinslnu;ào puder ser eliminada. O caminho de execuçiio pode ser reduzido. Nesse caso. a pemmta é mais hard· WlU\! por uma máq uina mais r.ipida, ponanto 1l0SSU terccirJ técnica pura reduzir comprimento de caminho é
Busque Inslruçóes nll memória com uma utlidade ! unclomt! especializada.
"
",
· ~
O
4.4.3 O projeto com busca antecipada: a Mic-2 A IFU pode reduzir muito () comprimt:nto do caminho du ilblrução média. Em primeiro lugar. da elimina lodo o lalio principal. viSIO que o Jinal de cada inslnu,iio simplesmente desvia direlamclltc para a próxima instrução. Em segundo lugar, evita ocupar a ULA com a tarera de incremcnl4lr o PC. Em terceiro lugar. reduz o comprimento do c:uni nho sempre que um índice de 16 bits ou um deslocamento é calculado. porque ela mOIlL:l o valor de 16 bits I! () passa diretamt:nte par.:a a ULA como um valor de 32 bits. eviL:lndo a m.'Cessidade de mOlllUgem em H. A FigurJ 4.21 mostrJ a Mic-2. uma versão mclhor:u1a da Mie- I à qual foi acrc:lcentnda a lFU da Figura 4.20. O microcódi· go par..! a máquina melhorada c! moslnldo na Tabela 4.8.
1."='-
-; Registradores
MAR
~-
T
"DA
UIlI08de de
""~"" l ~ Instrução (IFU)
I I
T
I
PC
'''!MBÃ"" . _... _..
T
tt
I
.... -
I
'·T .1.1.
MBR2
...
SP
T LV
'.0 -
ngllnl4n
O caaunll0 de dados
E=arn~M:O;'C-!2.c-______
t t
H:lDlhte
c pp
pa ra IJarmmefllo B
lOS
EscrlNa ba namen!o C paro rfl9l$fraoor
_.
,
Barramen!Q C
-
CPC
T' H
T
-
TT
Corurole
""UI.<
""m
,\ ULA
Jl Dealoc:locr
--------------------- ..
,'
......... ""
" ."
... .
menlOA
I-
N
Z
CJ)
CO
~
~
-I I
~
Rog
o
( 2
ULA
., I
• •"o
ULA
ULA
•>
FlpnU&
'"
nustração grâfica do funcionamento de
paralelismo (plpelinet.
~
o o
3
o.
•
u
, ULA
Cid<> ,
ULA
C"", 3
Cicio 2
"'. ,
Tempo
I
I
.:1-..
Vamos voltar ao ciclo 2. Agora podemos começar a dcsmcmhrM swap2 em microct.apas c iniciá-Ias também. No ciclo 2. podemos copiar SP parJ. 8 . cnt.:1o passá-lo pela ULA no ciclo 3 e fi nalmente atma..-.ená-Io em MAR no ciclo 4. Até aqui. ludo bem. Deve estar claro que, se pudennos continuar nes....a tmca, iniciando uma nova microinstruç5.o todo ciclo. tri plicare mos a velocidade ela máquina. E.~sc ganho vem do rato de que podemos emitir uma nova microinstrução em todo ciclo de relógio. c que a Mic-3 tem três vc:r..cs mais ciclos de relógio por segundo do que a Mie-2. Na vcrdatlc. consU'Ufmos ullIa CPU com parJ.ld islllll (pipclined), lnfcli1.rncntc. cncontr.unos um empecilho no ciclo J. Gostaría mos de começar a lr.lbalhar e m swap3, mas ti primeira coisa que da raz é passar MDA pela UI..A, c MOA não estará disponível na memória até o infcio do c iclo 5. A silUação em que uma microelapa niia pode iniciar porque está cndcncia. P::Ir.llclismo (pipd i"in;:) é um u técnica fundamem al cm todas as CPUs modernas, pol1anlo é impon.ame cntendê·lo bem . Na Figura 4.24 vemos o cami nho de dados da Figurn 4.23 ilustrndo gralicarncnte como um parJlclismo (pipcline). A primeira coluna represcn ta o que eslti aCUnlet.'endo no ciclo I. li segunda coluna represen ta () ciclo 2 e assim por diantt!. considt!r.mdo que não haja nenhuma protelação. A região sombreada no ciclo I par.!. a inslrução I indica que a IFU c,\I::i ocupada busc;:mdo a instruçãu I. Uma baúda de relógio mais tarde, durante o ciclo:2. os registradores requisitados pcl::! instrução 1 estão sendo carrcgudos nos registr.tdores A e B enquamo. ao mesmo tempo. a IFU está ocupada buscando a instnu;iitl 2. novamt! ntc mostrJda pelos doi s retângulos sombreados no d clo 2. Dur:mle u dela J, a inSlru!fão I eSlá usando a ULA c o deslocador para \! xecutar ~ua opcruç:io e os regislr.!.do. res A c B eSlao sendo \!:llTCgadus pôlr.!. a instruç:.'io:2, c a instrução 3 está sendo buscada. Por fim. durante o ciclo 4.
o
-'" •• o
~
•
"8
~
o u
•
~
•
~
•"
" "" •
~
o ~ ~
• o • N
=
o"
quatro instruçõcs elOlJo sendo processadas ao mesmo te mpo. Os re:.uJw.tlos da in.~ truc.::1o J estão sendo armazcnado~. o lr..lba..lho da ULA para a instrução 2 está scnllo rcaJií'.ado. os regisLradorcs A e B pilr:t. a ins truçJo 3 It:.lão sendo carregados e a mSlnu.::1o 4 está sendo buscada. Se tivéssemos mostrado o ciclo 5 e os ciclos subseqüentes. o padrão tcria sido I) mesmo do ciclo 4: toda.~ as quatro partes do caminho de dados que podem e:tecutar independentemente estariam fazendo isso. Esse prujo.!to representa um pamldismo de qual/'(} estágios. com cst4gios para busca de instrução. acesso a opcr.mdo. opcr.:tçücs de ULA c e.""rita de volta para os rcgislr.ldores. É similar ao parJ.Jclismo tia Figura 2.4(:1), exceto pela ausênci:l do I!Slágio de decodificaç:io. A 4ucsI:lu imporwnlc a entender aqui é 4uc, embom uma tí nica instnlçiIo leve quatro ciclos de relógio para ~:tccutar. em llxlo ciclo de relógio uma nuva instrução é iniciada e uma velha instrução t concluída. Um outro modo de ver a Figura 4.24 é seguir cada instrução na pâgina em sentido hori~ontal . Para a instrução I. no dclo I a IFU está tr.J.balhando nela. Nu ciclo 2, seus registmdorcs estão sendo colocados nos barmffiCntos A e B. No ciclo 3. a ULA c o deslocador estão trabalhando para da. Por fim. nu ciclo 4. seus rcsul!ados t:stão sendo annazcnados dI:: volta nos registradores. O que 'iC deve nOlar nesse caso é que há quatro st:ções do hardware dispo.. níveis. e durante cada ciclo. uma delenninada instrução usa só um deles. liberando as OUtr:lS seç6cs parJ inslruçõc....
dircn::nte.'i. Uma analogia útil para nosso projeto com pamlelismo é uma linha de montagem t.le uma f:íbril,;u de autom6... veis. P'J.ra abstrair os aspcCtllS essenciais desse modelo, imllgine que um gongo (! locat.lo a cada minUlO. quando então todos os autonnivcls passam para uma cSlaçào segui nte na linha. Em cada eSlaçào os rrabalhadon::s que ali t:stiio c;(ecutam algumu oper:lç:io no carro que está à sua frente no momento em questão. como adicionar o volante ou instalar os freios. A cada batida do gongo (I ciclo). um novo calTo é introdu7.ido no início da linha de montagem e um carro pronto sai no final . Assim. ainda que leve centenas de ciclo" pam terminar um carro. a cadu ciclo um carro é concluído. A fábrica pode produzir um carro par minuto. independente do leml>O que realmente leva pam montar um carro. Essa ê a força rJo ]mrJ.lclismu. e ela 1iC aplica igualmente bem a CPUs t: a fábricas de automóvcis.
4.4.5 Paralelismo de sete estág!.os: a Mic-4 Uma queslão a que não demos o devido destaquc é o fala de qut: toda microinstruçào seleciona sua própria sucessor.!. A maioria dela.'> apcna.'> sdt:ciona a instrução seguinh! na seqüênciu corrente. ma.-; a última. tal como swap6. muitas vezes faz um desvio multivia.s que atravancu o pam.lelismo. já que é impossfvcJ continuar fazendo busca antecipada após o desvio. Precisamos de um modo melhor de lidar CO rll essa questão. Nossa proxim:l (c última) microarquitetum é a Mic-4. Suas partes principais estão ilustr:ldas na Figura 4.25. mas uma quantidade subSllincial de deUllhes foi suprimida em bencfício da c1arc7.a. Como a Mic-3. ela tem uma IFU que busca palavra.s da memlíria antecipadamcnte c mantém os vários MBRs. A IFU também alimenta a corrente de bytcs que está entrando parJ. um novo cumponente, a unidade de decodificação. Essa unidade tem uma ROM intcma indexada por opcode IJVM. Cada entr:lda (linha) contém duas purtcs; o comprimcnto daquela instruçào IJVM e um índice par.! uma outr.J. ROM. a ROM de microopcmção. O comprimcnto dá instrução IJVM é usado para permitir que a unidade de dccodificaçào raça a análise sinl.ática (pars~)
o• ........
""""',
figura 4..r.5 PnllClpalS
m&mória
componentes da Mic-4.
ULA
---
________ ... ...... .... .. .__
, ""
.. . '
"
... .
~
0
da seqüência de bytes qUI! está enlrando dividindo-a em instruçõcs. de modo que ela ~empre sabe quais bytcs '1;10 opcodes e quais são opcnmdos. Se (J comprimento da instrução em questão for I bytc (por exemplo. POP). então a unid.ade de decUt.lifi~ação sabe que.o pró::i mo bytc é um o~Ut.lc. Contudo. se o comprim~nto da instrução em que:,tão lor 2 bytcs. a umdade de dcc04..hficaçao s:lbc que o próximo byte é um opcmndo. seguido imediatamente por um outro opcode. Quando prelixo WJDE li visto, o próximo bylc é lr..tnsfonnado cm um opcode largo especial. por c.>:emplo, WIDE ... Il OAD se toma Wl0E_ llOAD. A unidade de decodificação despm;ha o índice na microopcmçiio ROM que encontrou em sua tabela para o próximo componCn!e, a unidude de clllileir.lrncntn. Ess.a unidaue contém somente lógica mais duas tabelas inter. nas, uma em ROM e uma cm RAM . A ROM contém o microprogr.lma. sendo que cada inslIUção IJV M tem um ceno numero dc en!r.ldas consecutivas denominadas micruoperaçiie.'I. As entradas devem estar em ordem. porta nto não são pcnnitiJos truques como o desvio de wide_iload2 para Uoad2 na Mic· 2. Cada seqüência IJVM deve ser escriCi por extenso, duplic:mdo seqüências em alguns casos. As microoper.!çõcs s:10 similares às microinstruçõcs da Figur.! 4.4. ~ceto que os campos NEXT_AOOAESS e JAM estão ausentes c um no vo campo codificldo ~ neeessário para especificar a entr.1da do barrnlTh:nro A. Dois novos bits tam bém são foml-'Cidos: Final e Goto. O bit Final é marcado na úl tima micmopcr,lI;ão de cada seqüência de microopcl':.Lção IJVM pam si nalizá-lu. O bit Goto é ajustndo para marcar microopcr-..tçõcs que são micrOOcsvios condicionais. Ela.~ tê m um rormalO direrente do das microopemçõcs nonnais, consislmdo nos bits JAM e um (ndiee para a ROM de microopcmçilo. Micruillstruçõcs que fizeram alguma coisa antes com () caminho de dados c também rca· liaram um microdc.svio condicional (por exemplo, ifl(4) agora têm de ser subdivididas ~ m duas micmopcmçõcs. A unidade de cnfilcimmento runciona da seguinte maneira. Ela recebe um fndice de ROM de microoperação da unidade de dccoditicação. Então examina a microopcração e li copia cm uma ma interna. Em seguida tambc!m copia a próxi ma microopcração pam a liJa, bem como a seguinte depois de.ua e a.~sim cominua até encontrar urna cujo bit linal é 1. Ela copia cssa também e t: ntão púra. Consider-.m do que ela não te nha encontrado umu microoper.u;ão com o bit Gota li.g;Ido e que ai nda tenha muito espaço de sobra na liIa, a unidade de enfi leiramento então devolve um sinal de reconht.:cimemo à unidade de decodificação. Quando a unidade de decoditicaçao vê o reconhecimento, envia o índice da próxi ma instrução UVM para a unidadc de e nfileiramento. Desse modo, por fim. a seqüência de instruçõcs IJVM na memória é convertida em uma seqüência de microopcrações em uma fila. Essas microopcraçõcs alimcnlam os MIRs, que enviam os sinais puro controlar o caminho de dados. Contudo. há um Outro fator que lemos de considerar agom: os campos em c:lda mj l.;Toopcr-~ilo não estão ali· vos ao mesmo te mpo. Os campos A e B estaO alivos durante o primciro ciclo, o campo ULA está alivo dur.mte o segundo ciclo, o campo C está ativo dumme () terceiro ciclo. e quaisquer operaçõcs ue memória ocorrem no qUarto cich.l. Para fa7.ercom que isso funcione adeq uadamente, introduzimos quatro MIAs independentes na Figura 4.25. No início de cada ciclo de relógio (o te mpo tiw na Tabela 4.1), MIA3 é copiado para MIA4, MIA2 ~ copiado para MIA3, MIA1 é copiado par.! MIA2, e MIRl é earregado com uma nova microopcração da Iiltl de microopcr..tçõcs. Ent.ã o. cada MIA emite seus sinais de controle. mas só alguns deles são usados. Os campos A e B de MIA1 são usado!Õ p:lr.l selecionar os rcgisu"adol'Cs que serão enviados :lOS barramentos A e B, mas o campo ULA em MiAl não é usado c nãu é cont!Ctado a nada mais no caminho de dados. Um ciclo de relógio mais tarde, essa microoperaçi!.o passou para M1R2 e os registradores que ela selecionou agora estão scguros nos regislradores A e B cspcr..tndo pelas ave ntur.ls q ue hão de vir. Scu campo de ULA agom é usado para comandar a ULA. No próximo ciclo, seu campo C escreverá os rcsultudos de volta nos registradores. Depois disso, ela pa.'isarn pam MIA4 e iniciará quaisquer opcmçõcs de mem6ria necessárius usando o MAR ago m carre!lado (e MOA. para uma escrita). Um último aspecto lia Mic·4 precisa de um poueo dc discussão agor-.l: microdcsvios. Algumas instruções JJVM, como lFlT, precisam dc.wiar condicionalmente com base. por exemplo, no hit N. Quando ocorre un1 microdesvio. o ptlralelismo nua pode eonlinUtlr. Para üdar com i!Õso, adicionamos o bil Goto à microopemç;1o. Quando a unidade de enfildmmento ati nge uma micruoper..tçào que tenha es~ bit ajustado enquanto a e~tá copi:mdo par.! 11 lila. ela percebe que hã problcmas à frcnte e se abstém de CllVillr um reconhecimento ~ unidadc til.: ucct)dilica~:io. O rcs ult:ldo i! quc tl tnJiquina ficar-.í parada nesse ponto até que \I micnxlesvio tenha sido res.nlvtdo. Ê concehívt:J q ue algumus mstruçi'lcs JJ VM que esLão além desse desvio j:i te nham sido alimentadas na unidade uc decndi r;ea~:lo. mas nilo 1111 un idade de enfileiramento, uma vez ljue ela n:1o devolve um sinallle reco nheCI' menta - i.~to é. conlinua - qua ndu atinl!.c ullla microopemç:1o na qual o bit Gato cslâ li gado. Silo necessános hardware c mecanismos especiais 1)aT:1 :lc arnl; com a cnnfus.:io e voltar à trilha cena. mas eles estào além t.!n I!scopo d~te livro. Qmllldo Edsger Dij kstra escreveu ~cu famoso ani!l0 "GaTO Slatcment considered harmful" (Declur..tç:io GOTO consider-.lda perigosa), de não linha idéia do quanto estava certo. Percorremos um longo caminho desde a Mic· I. I\. Mic- I em uma peça de hardware muito simples. com quase todo \I controle em 'Ioftware . A Mic-4 te m um projeto de alto paralelismo. com sete estágios e hardware muito mais complexo. O pamlelismo é mostrado esquem:llicamenre na Figum 4.26. Os números dentro dos círculos refercm -~e diretamente aos componentes na Fig ura 4.25. A Mic-4 faz busca antecipada automátiCa de uma seqüência de bytes da memória, decodifica-a para instruçõcs Jj VM. converte-a para uma seqüência de microopcraçiies usando uma ROM e a cnFileim pura usar quando necess:írio. Os primeiros três estágios do paralelismo podem ser vincu lados:1O rellÍgio do caminho dt: dados se dcsejado, mas nem sempre haverá tr.walho a fal.er. Por exemplo, a IFU cenamente não pode alimentnr um novo opcode IJVM à unidade de uecodificaçãu em cadu ciclo de relógio porque instruçõcs IJVM levam vúrios ctc10s par..t executar e a tila transbordaria rnpidamente.
°
=• ~
•o o
" ••
2
•
o
• •
o
flaura 4..26 P:lTalelismo da Mle-4.
•o• ~
,• ~
8
o u
• • •",
~
~
Em cada !.:ido de relógio os MIRs ~o deslocados par.! a frente c a microopt:rJç.ào que está no final da lil:! é copiatia par.l o MIR, pam iniciar , ua ~xccuç5.\l. Os sinais de controle dos qualrO MIRs então se espalham pelo cantinho de dados fa7xndo com 4UC QCormm ::UjUcs. c.uja MIR controla uma pun.;:io difl!rcntc do caminho de datlo~ c, portantO, microctapas di ferentes. Neste projeto temos uma CPU de aho par,dcli smo que permite que as etapas individuais sejam muito curtas c, por isso. que a freqüência de re lógio seja alia. l\llUlll1$ CPUs s:io prujclildas (!Sscncialmcntc dessa maneira, em espeCIal a... que têm de implementar um conjunto de instruçÕl!s mais antigo (C ISC). Por cxcmpJo. o conceito da implementação Pcnlium li é si milar ao da Mic--4 em alguns :L~pcCtoS . como veremos mais adiante nestc capítulo.
,
•
4.5
Melhoria de desempenho
~
o
••
~
• " "•o
o
ToJos os fabricantes de computadores querem que seus sistemas funcionem o mais rapidamente possrvel. Ne.'\ta S(.."Ção veremos algumas técnicas avançadas
4.5.1 Me mór ia cache Um dos aspcctó.~ mais desafi;.dorcs do projeto de um computador em toda a história tcm sido oferecer um sis· tema de menltíria capn de fornece r npcnmdos ao prncess:ldur à velocid:lde em que c le podc processá-los. A recen· f C alta tax:! dc crcsci rncntu na vclocidade do processador niio foi acomp:mhada de um :.tumento correspondentc na velocidadc das memórias. Se comparJdas com :L~ CPUs. as memónas estiio fic:mdo nmis lcntas há décadas. Dada a .::mlfllle impl.!nânela d:J mcmuna pnmana. e:....a :.ituu\,;lu limunu limito u Jçscn~ul\ ill1ellto de .: . istcmas dc ",ltu dcsempenho e estimulou a pcsquiScqucna memória dpidll. u que acelera o acesso a elas. Se lima porcentagem ~ unci e nt cmc ntc gr.J.nde da.~ pall.lvras de memória estiver na cachc. a !atêm:ia .;ret.iva de memória ptxJe ler I!nonnc rl..-duçào.
,
Pacol'll daCPU
n.uraU7 Sistema com de cache.
-
Chlpoa CPU
Iilll LEI três
níveiS
""""'" ~ OeflÍWI2
dollr~3
, I
Placa do
proc&ssadof7"
[§J '"''''''''
r
CO!1trolaoor Geledaoo
I Cachu diVIdidas de Instruç;'lo o dadrnl
Cornrolador gráfico
......... pnllClpaI (ORAM)
§j "''''''' I I
Cacne de fllveI de p~ (SAAM)
= =
•
~
•"o "u
• •>
~
Uma das técnicas mais efetivas paiJ. melhornr largum de handa e w.mbém a Illtência é a utilização de várills caches. Uma técnica básica que funciona com gr.uuk efetividade é introduzir uma c;lche separada parJ. instruçÕ\.:s e dados. É possível ntner muitos benefícios com caches separ::ul;ls (Xtr.l inslruçôes e dados. muitas vezes denominada cache divididu . Em primeiro lugar. as opcraçôcs ue meml'iria podcm ser iniciada.~ independentemente em cada cache. () que elctivamcnte dobra :I largura ue banda do sistema de mcmôria. É essa a r:u::Io por que faz semido fornecer duas portas dc me mória ~epaiJ.das. como fi7.cmos na Mic-I : cada (lOna tem sua própria c.ache. Note que cada cache tem acesso independente à memória principal. Hoje. muitos sistemas de memória são mais complicados do que isso. c uma cache adicional. denominada caehe de nível 2. pode residi r entre as caches de instruç:1o e dados e 11 memória principal. Na verdade, pode haver três (lU mais níveis de cache à medid:t que se cltigclIl sislemas de mem6ria mais solisticados. Na Figura 4.27 vemos um sistema com Ires níveis de cache. O propno chip dOI CPU contém uma pequen:.l cache de inslnJção e uma pequena c:.u:he de dados. el1l gemi de 16 KB a 64 KB. Ent:1o h:1 a cache de nlvel 2. que não cSt:i no chip da CRU. mas pode !>Cr incluída no pacote d:.l CPli proltima ao chip da CPU e (.'Qoectada a ela por um caminho de alia velocidade. Em gemi essa cache é unilicada. contendo um misto ue dados e instruções. Um tamanho (fpico pam a cache L2 é 512 KB :1 I Mil. A cache de terceiro nível está na placll do processador c eonsiste em alguns pouen.~ megabytes de SRAM. que I! muito mais d pida dtl que a mem6ria principal DRAM. As enches são gerJ.lmcntc inclusivas. sendo q ue o cOn!cúdo lOtai da cache dc nível I está na cache de nfvel 2 c todo o cOn!Cúdo da cache de nível 2 c.~tá na eache de nível 3. Cache... dependem de dois tipos de endereço de localidade parJ. cumprir seu objetivo. Localidade e... pucla! é a observaç:l0 de que localizaçt3cs de memória com endereços nu mericamen!c "imilares a uma locali7.ação de llIemÍlria recen tementc accs.~:L(J:I prtlVavclmente sedu :tcessmlas no fu tunJ prnltimo. Caches cltploram essa pmpriedadc tral.endo mais dadt'S do que os n."t{uisitados. na expectativa de poder antecipar requisiçõcs fUIUT:lS. L.ocalidade te~ll por.. 1 Ot..'QrfC quando locali7.açõcs Je memória recentemente acessadas são acessadas novumente. Isso pode ocom:r. por exemplo. com locali7.açõcs de memórias proximas ao topo da pilha. ou com instruç6es dentro ue um laço. Localidade u:mpoiJ.1 é \!JtplomdOlenl projctos dc cache primariamente pela da escolha do que descartar quando ocor~ rc uma ausfncia na e:1che. Muitos algoritmos de substituiç:io de cad te exploram localidade te mporal desca rtando as entr.ldas que não forJ.m IIcessadas rece ntemente. 10das:1." c.1ches usam o modelo seguinte . A mcmória principal é dividida em blocos de tamanho fixo desig nados linhas de C:lehe. Uma linha de cachc ffpic:l. ("'Q nsiste em 4 a 64 bytes cons(,.'Cutivlls. As linhas s:io nu meradas em scqilência começando em O. portanto. 'iC tivennos uma linha de]2 nyfcs de tamanho. lt linha O v:li do bytc O ao bytc J I. a linha I dn byte 32 ao 63 e assim JlÓr diante. Em qU:llqucr instantc algumas linhas estão na cache. Quando a mermíria é referenciada. Il circuito de controle da c:lchc venlica ~ a palaviJ. referenciada C.~I:í na cache no instante em questão. Caso positivo. o valor !.luc ali c.'It:i pode "cr usadu. evit:tndn uma viagem até a memória principal. Se a palavr.t mio c."tivcr :tli. alg uma linha de cntmda ê removida da cache e a linha nccessán:1 c buscada na nrcmóna ou tia cllche de rli\clrnars baLxo pUiJ. ... ub~Litui- la. Exi:.tcm mui tal> vana"üc:. Jel>l>c eMjucma. mal> ":U I LuU:.Ll'o el:11> J idéia ..: lIl,mh:L' as linhas mais utilizadas na cache (I quanto pt)s~íve1. par:l lll:tximi1.ar () mimem de refe rências à memóriu -;atisfciL:ts pela cache.
Caches de mapeamento direto A cache mais si mples": conhecida como cache de mupcumcnto di reto. Um exemplo de cachc de mapcamentu direto ue um Sl'í nível ..: mostrado nu Figura J.2X(a). Esse \!.,empln de cache c()nt ~m 2.048 entradas. Cadu cntnlda (li nha) nu cache pode comer exatamente uma lillhll de cache da memória principal. SI! a linha de cache liver 32 hytcs de tamanho. parJ. esse cltemplo. a cache pode conter M KB . Cada entrada de cache consiste em três panc.": t.
2. 3.
() bit Valld indica se há uu nãu quaisquer dado.; válidos ncs!Ul entiJ.d:1. Quando o sislemrl é iniciado. todas :l~ entradas s.1n marcadas como mv6Jidas. O campn Tag consiste em um único valor de 16 bi l~ 4ue identifica:l linha de memória cllm:spundcmc da quul viemm us t.1udos. O campo Data comem uma cópia dos dados na memória. E.ssc can1llO contém utna linha de eache de ]2 bytcs.
z ~
o
= u•
.... ....
-
VaUd
Entrada 2<>"
•
Endereço,s quo usam Issa ennada
o•• I Tag ~''j::==+=======165504-65535. 131040-131071,
•"o ~
•
= ~
E o u
•
Hgllra 4.28 (",j COlche de
mapeamento direto.
96- 127, 65632-1.5663 , 131168-1 31199 64-95, 65800--65631 , 131 1!l6-131187,
Ihl Endereço vtrtua.I de
32-63,6556éI-65599 , 1311()04.131135. 0-31 , 85536 55 5'0', 1310n-131103,
32 bits.
(.,
~
•
~
•
Bits
"
"
TAO
3
2
LINHA
(.,
•
~
,. o
~
•
" •
~
o
Em uma cachc de mapeamento direto. uma detenninada palavra de memória pOOc ~r arma7.enada em exatamente um lugar dentro da cach!.!. Dado um I!lldcreço de mcrnliria. há somente um lugar onde procurnr por de na cache. So.: ele não estiver nesse lugar. então não está na cachc. P:lr.l anna:r.enar c recuperar dados da exile, o endereljo é dcsrnclI1brJdo..:m quntru componentes. como maSlr.! a Figura 4.28(b): 1. O campo TAG correspom.le aos bi(.'! Tag armazenados em uma entrada de c::I.I.:hc. 2. O campo LINHA indica qual cntr.lda de cache contém o.~ dados correspondentes. se dcs esliverem presen-
leso
3. O campo WOAD inronna qual palUVr3 dentro de uma linha. é rererencimJa. 4. O campo BYTE em geral não é uS;Ldo. mas se fL)r requi sitado apena.~ um byte. ele inramla qual byte dentro da palavra é nli:cessário. Para urna eache que fornece apenas palavra.s de 32 bill>. esse c:unpo será sempre O. Quando a CPU produz um endereço de memória. o hardw;u"C cxuai os 11 bits UNHA do endereço e os uLi1i7.:l paro indexá-lo na ç:lchli: parJ achar uma das 2.(}48 enuada.~. Se essa entrada for válida. o campo TAG do endereço de memória e o çampo Tag na cntiJda da cache são comparados. Se forem compatíveis. a entnldu de c:lche contém :L pnlavra que eSf:1 sendo requisitada. uma situação denuminada presença na cache. Se ()Correr umn prcsen~a na cache. uma palavra que está S$.:ndo lida pode ser pega na cache. eliminando a necessidade de ir U1é a memória. Somente a palaviJ. ncces.'lária é extraída da t:.ntrada d;t cache. O resto da entrJda nào é usado. Se a entrJ.da de c:1(;he for inválida ou os tags não forem compatíveis. a enlr.lda necessária não está na presente C:lche. uma situaçào denominada ausência da C:lchc. Nc.~Sc! ca.~o. a linha de cache de 32 bytcs é buscuda na memória e armazenada na linha ua clchc. substituindo o que 111 eSlava. Contudo. se a linha cache ex.istente sofreu moditicaçào desde que foi ewregada. ela deve ~er escri ta de volta na memória principal antes de ser descarwda. A despeito da complex.idade da deCisão, o acesso à palavra necessária pode ser ex.lraordinariamenle rápido. Assim que o endereço for conhecido. u exata locaJ i7.ó1ção da palavra é conhecida .fi! da f!stivf!r p ri!senle IW cache. Isso significa que é possível ler a palavra da C<J.che e entregá-la ao processador ao mesmo tempo em que está sendo dctenninado se essa é a palaviJ. correta (por comparaçào de tags). Portanto. na verdade o processador recebe uma palavra da cache simultaneamente ou possivelmente até antes de saber se essa é a paJólvra rt!tjuisiUlua. Esse esttuema ue ntapeamento põe linhas de melmkia consecutivas em linhas de cache consecuti vas. De falu. :ué 64 KR bytes de dadtlS comíguos podem scr armazenados na cache. Contudo. ljuando.1 d irerença emre I) c mlcret,:n de dl/a .. lin has for c:sc nÜlI1ero. el:b n50 pudem ..er armazenada.~ na cache ao mesmo tempo (porque têm o mesmo valo r LINHA). Por exemplo. se um prugr:una acessar dados na locu lizaç:10 .'( c elll seguid'Lc:
- - - -- ---_._....... .......... ....
Caches associativas de conjunto Corno mencionamos antes, muitas lin ha.~ difere ntes competem na memória pelas mesmas posições na cache IIOS endereços O e 65.536. havcr.1 conflitos constantes porque C:ltJII referenda potcncialmcntl! expulsaria a OUIr.l da cachc. Uma solução para cs!tC problema é pemlilir duas ou mais li nh us em cada cntr.1da de c:lchc. Uma cache com n cntrJ.uas possfveis ram. cada endereço é denominada uma c:.u:hc assuciativa de conjunto de n vias. Uma cache associmiva de conjunto de
(cuche s/ou). Se um programa que utiliza a cachc d:l Figura 4.28(a) usar muito palavras
quatrO vias é ilustmda na Figura
4.21),
Uma eache a...sodativa de conjullIo ê inerentemente mais \.!o mpl icada do que uma cache de mapeamento dire· 10 porque, cmbom a li nha de c:lche cOlTCta a examinar possa ser calculada a parti r do endereço de mem6 ria q ue ,,:slá sendo referen dado, um conjunto de /I linhas de cache deve ser verificado par.! ver se a palavra necessaria está presente. Ainda assim. a expt!riência mostr.1 que cachcs de duas vias It de quatro v i a.~ funcionam suficicntemente bem par.! q ue esses cin::uhos exltas valham a pe=na. A utilização de caches assoduti vas de conjunto oferece uma opção ao projetista. Quando uma nova linha deve ser Irazida par.! dentro da cache, qual dos hcns nela presentes deve ser descanado? É claro que a decisão ótima reque r uma olhadela no futuro. ma.~ um algoritmo muito bom para a maioria das linalidades é o LRU (L~usl RcecnUy Used - menos rL"Ccntementc usada). Esse algoriuno mantém uma ordenação de cada conjunto de localizaçiks que poderia ser acessado a panir de uma delenninada local i7.ação de memóriu. Sempre que qualq uer das linhas presentes é acessada. de atualiza a lista. marcando aquelu entr:lda como a mai~ recentemente aceslmdu. QU:lndo chega a hora de substituir uma entrada. a que está no fina l da lista - a menos recc nteme nte acessada - é a descartada. Levada :10 eXlremo. uma cachc de 2.048 vias que contém 2.048 linhas de entrada tnmbém é possívd. Nesse ca.~o, lodos os endereços de mc mt~ria Illupciam para um único conjullto. portanto a consulta requer compamr o endereço contr.! todos os 2.048 lags na caehc. Note qUI! agor.J. cada enlrtlda deve tl!r It~gica de compatibiliz::.ç30 de tag. ViSIO que o C3mpo LINHA lem compri mc nto O. O ..:ampo TAG é o endereço inteiro. exceto par.J. os campos WOAD c BYTE. Além do mais. quando uma linha de cache é subsutuida. todas as 2.048 localizaçi'ics são possíveis c~didatas à substituição. Manter uma lista ordenada de 2048 l inh a.~ requer muita contabilidade, o que tom", () LRU inviável. (Lembrese de que essa Ii~ ta tem de ser atualizada a cada opcr.lç:1o de memória. e não ape na.~ quando ocorre uma ausência na cache.) O surpreendente é que enches de alto gr.J.u de associatividade não melhoram muito o desempenho em relação a caches de baixo gr.J.u de associatividade sob a maioria das circunstâncias e. em alguns casal';. até funcionam pior, Por c.~sas r.J.7..ôes, a associatividade de conj umo além de quatro vias é relativamente incomum. Por fi m. escritas propõem um problema especial para as caches. Quando um processador escreve uma palavra e a palavr.:l. está na cachc. é óbvio que ele tem de atuulizar a palavra ou dcscanar a entrada da cache. Praticamente todos os modelos IltuaJi7.:lftl a cachc. Mas. e quanto a atualizar a cópia na memória principal? Essa opcra'fão pode ser adiada até mais tarde. quando a linha de cache estiver pronta pum ser suhstituída pelo algori tmo LR U. essa escolha é difícil. e nenhuma das 0P
I o
,.., '" R • ..,. 4.,29
Gache nssOClauva de conjunto de quatro ",...
T.,
Dala
Valid
o••
I o
Valid
T"
Data
I T.,
O,.
,.
,
7
•5 • 2 , 3
o
~-~
U"," A
I
I
(\
-'" Ul
UnhaB
~
UnnaC
~
-
,•" • , •o"
~
"o
•• z
o.
•
u
"'.....
••o ~
,• ~
B o u
•
~
• ,• ,
~
•
~
o ~ ~
• C • N
~
o"
o descmpenho J.a c:lChc ~ crítico par..! o tk..-:cmpcnho do sistema portjuc a defasagem entre a vdoddadc da CPU c a vdlM.:idadc da memória é muito grJlluc. Por con~q{jênda. a pesquisa de melhores estratégias de c:u:hing ainda é um tópico muito disculido (Alarnch.lccn c Wood. 20()4; Huh cl ai .. 2004: ~lin CI aI.. 2004: Ncsbit c Smilh. 2004; e Suh ct al .. 20(4).
4.5.2 Previsão de desvio Computadores modernos têm alto grau de p:lr.llclismu. O paralelismo da Figur:.L 4.25 tem sete estágios: comput:.ldorcs de úllima geração às vezes. tê m paralelismo de dez estágios ou até mai.~. O paralelismo funciona melhor com código linear. de modo que a unidade de buse:l pode :lpcnas ler palavras consecutivas da memória e as enviar parJ a unidade de clccoditic:.u;Iiu antes de haver nt:ccssidadc delas. O único problema com esse mar..iVilhoso modelo é que de não é nem um pouco reulisla. Progr.unas nilo são :;equêocias de cóc.ligo tineM - estão repletOs de i n s lru~ões de Ucsvio. Considere as simples declarações cb FigurJ. .1)O(a). Uma van ável. i. é cum~J.da a O (provavelmente o leste mais comum na proltica). Dependendo do resultaJo, um de dois valores possíveis é atribuído a uma outrJ. V'J.ri:ível. k. Uma possível tradução para linguagem de montagem é mostr..uJa na FigurJ. 4.30(b). Estudaremos linguagem de montagem maLS adiante Ih!stc livro e os detalhes não ~ ão importantes agora. mas. dependendo da máquina e do compilador, é provável código mais ou menos como o da Figura 4.30{b). A primeirJ inslruçiio cumpam i com O. A segunda desvia pura. (l rotulo EI.I·e (o início de uma cláusula dse) se j nào for U. A terceira instrução atribui I a k. A quarta instrução desvia para ~al tar a próxi ma decluraliJo. O compilador convenicntemente colocou ali um I'tStulo. Ne:rt. portJ.nto há um lugar pam o qual desvia. A quin ta instruçao utribui 2 a k. Nesse caso. dcvcmos obscrvar que duas das cinco instruções so1o desvios. Além do mais. uma delas. BNE. é um desvio condicional (um desvio que ê lomado se. c somente se. algu ma condição for cumprida. nesse caso. que os dois operandos da C:vIP anterior n:lO sejam iguais). A St..'qüência de código lincar mais longa no caso sao duas instru5ôcs. Por conseqüí:ncia, buscar instruçõcs à alta velocidade par..l alimentar o parJ.!e1ismo é muito difícil. A primcirJ. vista podc parecer que desvios incondicionais. como a instruçiio BR NelCl na FigurJ. 4.30(b), não são um problema. AtinaI. não há m:nh uma ambigüidade sobre aonde ir. Por que a unidade de busca nao pode apenas continuar a ler as instruções a partir do endereço visado (o lugar pam onde o desvio levará)'! O problema está na naturew do paralel ismo. Na FigurJ. 4.25, por exemplo. vemos que a decodilicuço1o da insuução ocorre no segundo estágio. Assim. a unidude de busca te m de decidir de onde buscar em seguida antes de saber que tipo de instruç:lo acabou de lIbter. Somente um ciclo mais tarde ela pode s:lber que acabou de pegar um desvio incondicional e. li. essa alturJ.. já começou u buscar a instrução que vem após o desvio incondicional. Como conseqüência. um numero subst:mcial de máquinas com p:lr.lidismo (como a UltrnS PARC UI) tem a seguinte propriedade: a instrução seguintl: a um desvio incondicional é cxecutada. ainda que logicamemc não devesse scr. A posição após um desvio é denomi nada pusi çi:íll de retarotl (deliIy .vIOI). O Penli um 11 (e:l máq uina usada na Figur..l 4.30(b) não tem c.~sa propriedade. llUlS a complexidade interna para contornur esse problemu cOSluma ser cnonnc. Um compilador otimizador tenlará encontrar alguma instrução IÍlil parJ. colocar na posição de remrdo, mas fR!(lüentemente não há nada disponível. então de c: forçado a inserir ali uma insuução NOP. Assim o programa lica COITCto. mas também maior e mais lenlO. Por mais que desvios incond i cionai~ sejam irri tantes, os desvios condicionais ~ão piores. Além de lambém terem posições de retardo. agora!1 unidade de busca não subc de O IUJ ~ ler até muito mais (ldiantc no par:alelisrno. As primeiras máquinas com pamlclismo apenas protchlyam até saberem se o desvio seria tomado ou no1o. Uma protelação de lrês ou quatro ciclos em todo desvio condicional. em especial se 20% das instruçõcs forem dcsvios condicionais. arrasa o desempenho. Ilor conseqüência. o que a maioria das m:'iquinas faz quando cheg3 a um desvio condicional é prever se ela vai ser tomada ou njo. Seria maravilhoso se pudéssemos apenas ligar uma bola de cristal em um encaixe PC l livrc parJ. ajudar na previsão. ma.~ até agorJ essa abordngem não deu frutos. Na falta de tal penférlco. t'orJ.m arqui tetada .. vanas manemts de fazer a pl'Cvi~o. Um modo muito '1imples c: I) ~t.:guintc: considere que todos os desvIOS condiciunais para lTá.~ <;erJo tOllladllS e tod()s ()s desv;o~ para a frente n:in .;erilu to rnados. O r:Lclocínio que fu nd:unent:1 a pnmcir:1 pane é que Il" dewios para tr:h CUStULll:lJlI estar !ncatil.ados no tinal de U11l l:rljo. A maiuria dos laçm é executada várias vezes. ponanto. prever que um desvio de volta ao início dtl !aljO ~cní to mul[u. em gerJI .s UI1I bmn palpite. A segunda pane c: mais lunluhuada. Alguns desvios pOlrJ. a fre nte ocorrem quando l>ão detectadas condições de em ) em software (pnr exemplo. um :mJ.uivo não pode ser :lbeno). Erros 8:10 rams. portanto a maioria dos Je~vios a.~sociados a eles não são tomados. É dam que há uma gr.tnde qua ntidade de desvios parJ. a fre nte que não esto1o relacionados com I) trJlamento de erros. pl)r1anto a laxa de ... uccsso não c: tão boa quanto a dos desvios par.t trás. Embora não 'leja r.lfltÚstica. essa rcgm C:. IlO mínimo. mc!hor do que nada flg.ra4..30
la) Pragmento de programa.lb) Sua Iradução para uma linguagem de montagem genénca.
...
II (r_O) k .. 1; Then: k., 2;
Else:
CMP i.O BNE EIse
; compare I com O : dal'lie para Elsl se nlo for igual
MOVk.l BR Next MQV k.2
; desvio incondjçionat para Next
Nex!:
I')
- - - - --_ ........ ........ .. ... .. -
Ib)
• mova 1 para k ; mova 2 pera k
Se um desvio for prcvislO cOfTCtarncntc, não há nam de especial a fazer. A execução apenas continua no endereço-alvo. O problema comcC;:l quando o dcsviu é erronC:lmenh,: previsto. Imaginar para onde ir c ir pum lá não é difíci l. A parte difícil ~ dc~tiv.cr as instruçilcs que já focam cxecUladas c não deveriam ter sido. Há dois modos de resolver isso. O primeiro é pt:nnitir que inSHuçõcs buscadas após um desvio condicional
previsto execute até que tenlem mudar o estado da mátluina (por exemplo. annazcnandu elll um registrador). Em vez de sobrescrever o rcgislrJdor, n valor calculado ê colocado em um regisrr.:ador [rJnsitório (S(.:crclo) c somente copi:1do para o regiSlr.ldor real após saber que a previsão cSlava c.:um:!a. O 'legundo modo é rcgislrJl' o valor de qualquer registrado r que está pre.. tcs a ser sobrescrito - por exemplo. em um rcgistrador 1r:ms;(6rio ~ecrcto - , de modt) quc a maquina possa ser levad,,- dI! valia ao estado em que eSlava OI> mamemo em que tumou o desvio m,,-I preV111. 10. Ambas as ~oluçõcs .. fio complexos c requerem contabilidade dc n;vel industrial par<1 conseguir cfctuá-Ias COITC tamente. Além do mais. sc um segl1ndo de:wio condicional fo r atingido antes de se saber se a previsão do primeiro estava correta. as coisas podem ficar realmentc complicadas.
-. '.
Previsão dinâmica de desvios Claro que previsões exatas lêm grJ.nde valor. uma ve4 que pcnnitem que a CPU funcione a toda vcloçidadc. Como conseqüência. gmnde pane da pesquisa I!m cun;o tem como objetivo mel horar algoritmos de previs:1o de desvio ~Chen et ai., 2003: Falcon et aI.. 2004: Jimenl!z. 2003 c Parikh et aI.. 20(4). Uma abordagem é a CPU manter uma tabela histórica (em hardware especial) na qual rcgistrJ. desvios condicionais à medida que eles oçorrcrn. de modo que eles podem ser consultados quando ocorrerem novamente. A versão mais simples desse esquema é mos· tt:lda na Figura 4.3 1(a). Nesse I!xcmplo. a tabela histórica contém uma linha pat"..l cada instrução de desvio condi· cional. A linha contém o endereço da in-stnlção de desvio j unto com um bit que inromlu se de fo i tomado da últi· ma vez que foi executado. Usando esse esquema, a previsi'lo é simpksml:1lIe qUI! o desvio irá parJ. o mesmo lugar que foi da última vez. Se a previsão estiver err-ula, o bit na tabela his tórica é alterado. 11:1 diversos modos de organi:r..ar a tabela his tórica. Na verdade. são cxatamCnle os mesmos modos usados para ol'!lani'l..at uma cache. Considere uma máquina com instruçõcs de 32 bits que são alinhadas por palavra de modo que os 2 bits de ordem baixa de cada endereço de memória são 00. Com um tó"lbela histórica de mapeamento direto que contém 2" entradas. os n + 2 bits dI! ordem baixa de uma instrução de desvio podem ser eXimidos e deslocados 2 bits para a direil:l. Esse número de n bits pode ser usado como um índice para a tllbela histórica ondt! ~ feita unlU vcrilicução para ver se () endereço ali armazenado é compatível eom o t!ndereço do desvio. Como aCOnll,.'Ce com uma cachc. não há necessidade de armazenar os 11 -r 2 bits de ordem baixa, JXlI1anto eles podem ser omi tidos, isto é. some nte os bits mais altos de endereço - o 1:1); - são armazenados. Se houver compatibilidade. ou seja. uma presença nu tabela. o bit de previsão é usado par.I prever n desvio. Se o tag emldo estiver presente 00 a entrada for inválida, ocorre uma ausência na tabela (ou não há compatibilidadc) exatamente como na cache. Nesse caso. pode ser usada a regra do desvio para a rren te e para trá..~. Se a t:lbcla histórica de desvio tiver. por exemplo, 4.09fj t! nlradas, e ntao os desvios nos endetCÇos O. 16384, 3276!t ... <;er:io connitallles. prohlema análogo ao que enClllllrJ.mos na cadle. A mesma solução é possCvel: uma entrada a.~sociiltiva de duas via...., quatro vias ou 11 vias. A!>.... im corno parJ. a eaehe. o easo limite é uma única e ntra incolTCl:Is. E:..sa aburdagelll req uer dOIS biL~ de previsão na tabcl:1 histórica. um pura aquilo ljUI,\ o desvio 'deve ' fazer e um para o que ela fcz da ultima vez. CIl1l\O 11ItlSlr:.1 a Figura ..U I (b). Um moUt) ligeir.!mcnte diferente de ctlnsidcrolr esse algnritmu é vê ·ln CO OlO uma m:ttjlli na de e\l:Idtl finito de (Iuatro estados. como mostro! a FigurJ. 4.32. Apús uma :"érie de previsõcs suceSS1Vll'l certas de ·nenhu11l lk svio·. a FSM estarJ no estado OU 1,\ prever:1 'ncnhum desvio ' lamhé1ll nu próxima VCL Só se cssa previsão estiver e rrada da
O.".,
r1a/lflUm Valid
noura4.31 (ai lii.stóneo de desvio de 1 bit. (bl Histórico de deSVIO de 2 bns.
(el Mapeamento entre endereço de de deSVIO e
instru~o
enderf!(,."O-alvo.
Poaição
desvio
tag I I ,-Jl do desviO
Bits da
Vaüd
POSiçãO
U
ILag dodesvio""""", .... Poslçao I I
,•5
,•5
•,,
3 2
3
3 2
1
2 1
O
O (.)
Bits de IH_são
VaJid
, tag do de~vlo -
1
O (b)
(o)
I Endoleço-atvo
•o u
'"
.. >
~
o
• u•
~
co
Nenhum desVio
.....
•• o ~
,•
n, .. 4.32 Máquina de estado
fimto de 2 bIts para previsão de desvio.
00 Prever nenhum desvIo ,---.
0""'"
01
umll voz
~
e
o
u
• • •, ,
~
Nenhum desVIO
~
o
•• • C •
~
N
~
o
passará agom para O estado ! I c preverá desvios I> tempo todo. Na verdade, o bit d:1 extrema esquerda do estado I! a previsão e \) bit d:l c;ttrcma direiw. é o que o desvio fez da última vez. Embora esse projeto use somente 2 bits parJ. o histórico. um projeto que monitoro 4 ou 8 bits históricos também é possível. ESSil nãn é nossa primeira FSM. A Figura 4.21 tambdm era unta FSM. Na realidade, todos os nossos microprogmmas podem ser considcmdos FSMs, uma vez que cada linha representa um estado específico no qual a máquina poclc estar, com tr.msiçi>Cs bem dcfinidns parJ um conjunto fin ito de outros eSlados. F5Ms são amplamente usada... cm uxlos os aspectos do projeto de hardware. "-té :l4u;. consideramos que o alvo de c:lda desvio condicional era conhc:..'Cido. ou como um enden.."Ço explícito par.l o qual desviar (!."omido dentro da própria instrução), ou como um deslocamenlO relativo com referê ncia 11 inslrução corrente (isto é. um numero com si nal par.l adicionar:lo contador de progr.lma)" Muita.... ve:tes essa suposição é válida. mas algumas inslruções de desvio calculam o endereço-alvo efetuando aritmética nos rcgistr".ldores e emão dirigem-se parol aquele cndel\.'Ço. Mesmo que a FSM dn Figur.l 4.32 preveja co m exatidão que o de~vio será tomado. essa previsão de natl:l serve se I) endereço-alvo for desconhecido. Um modo de lidar com essa situação é armazenar na tabela histórica I) endereço ao qual I) desvio se dirigiu da última vez. como moSlm :l Figum4.3 1(c). D~st: modo. se a tabela inromlar que da última vez que o desvio no endereço 5 16 foi to rnmlo ele foi para o endereço -4000, se a previsão agora fo r 'desvio' a suposição de trabillho serJ um desvio pam4000 novamente. Uma abordagem diferente pam a previsão dc desvio é monitor..\f' sc os últimos k dcsvios condicionais encontroldos foram tomados. independentemente de quais instruçõcs emm. Esse número de k bits. mantido no registrado r de de..,lue;;lIlIcn to da tabela hi...;lÓrica é CIll:10 comparado em parJ...lelo com todas as cntr.ttlas de um:l tabela histórica que tenham uma chave de k bit.. e se ocorrer um sucesso, a previsão enconlr.lda sc~ usada.. Por surpreendente que seja, essa técnica fu nciona bastante bem.
Previsão estática de desvio Todas as técnicas de previsão de desvio discutidas alé agora são dinâmicas. isto é. são reali7.adas em tempo de execução. durante a execução do progrolllla. Elas também se adaptam ao comportamenco corrente do pmgmOla. o que": bum. A dl.!svamagem é que elas requerem hardware I.!speciaJií'..ado e caro ~ muita complexidade no chip. Um modo diferente de funcionar é fa:tcr com que o compil:ldor ajude. Quando o compilador vir uma declaração corno
ror (i =< O; I < 1000000: 1++) { .•. } de sabe muito bem que o de1.vio no final do laço scr:í tomado qu~ toda vel. Se ao menos houvesse um meio de de iníoouW" o hardware. muito ;,:s!'OTÇO seria poupado. Embor:l seja um:l altcl'"..lÇào de arquiteturn. e não apcna.~ uma questão de implemenlllção. algumas máquinas. como a UItr.lS PARC 111. lêll1um ~egundo conjunlll de instruçõcs de desvio condicional. além das nonll11i~. que ~ãll necessárias pam compatibilidude. As novas contêm um bit no qual o compilador pode cspccific
4.5.3 Execução fora de ordem e renomeação de registrador Gmnde pane das CPUs modemas tem parulclisl110 e lambém ~iio superesc:llares. como mostr.l a Figura 2.6. Em geral . isso signitica que hâ uma unidade de husca que retira paJavms de instrução da memória antes que elas -.cjam necessárias. pllf:l alimentar uma unidade de decoJilk::u;ão. A unidade de Jccooiticação emite as instruçõcs
decodificadas parJ. :LS unidadt:s funcionais :II..1equailil.'i parJ. e,'(ecuçào. Em alguns casos ela pode desmembrJr instruç6cS individuais em microoperJ.çôcs ames de emiti-Ias parJ. as unidades funçionais, dependendo do que as unidaúes funcionais podem fazer. Claro que o projeto da máquina é mais simples se as instruções forem executadas na ordem em que são bu~ cadas (considerando. por enquanto, que li algoritmo de previsão de desvio nunca faça uma previsão errada). Contudo. a execução em ordem ncm sempre res ul ta em desempenho ótimo devido às dependências entre instruçõcs. Se uma instrução precis:1r de um valor calculado pela instrução anterior. a segunda não pode começar a eltCCUlar ate:: que a primeIra tenha produzido o valor necessário. Nessa situação (uma dependência RAW), a segunda instruçào te m de esperar. Também existem outros tipos de dependência. como veremos em breve. Em uma tentativa de eontornar esses problemas e produl'.ir melhor dcsempcnho. algumas CPUs pt:mlitem saltar instruções dependentes parJ. chegar a instruçõcs rUlurJ.S que nào silo dependentes. Nüo é preciso dizer que o algori tmo de escalonamento de instruções internas usado deve eausar o mesmo deito que causaria se o progrJ.ma fosse executado na ordem escri ta. Agorn demonstraremos como a reorde nação de instruções funciona usando um exem plo detalhado. Par.l il ustr.lf :l natureza do prohlema, começaremos com uma máquina que sempre emite instruç&:s na ordcm do programa e também reque r que sua exccuçüo seja concluída na ordem do programa. A significància dessa última exigência ficará claro mais adiante. Nosso eltemplo de máq uina te m oito rcglstradores visíveis para o programador, AO até A7. Todas as instruções aritméticas usam três regiSlrJdores: dois para os opcrnndos e um parJ. o resultado. igual à Mic-4. Vamos conside rar que. se uma instruçào ror decodificada no ciclo n, li execução inicia no c iclo n + 1. Para uma inslrução si mples. como uma adição ou sub tração. a escrita retroati va no rcgistr.J.dor dt: desti no ocorre ao final do c iclo n + 2. Para uma instrução mais complicada. como uma multiplicação. li escrita retroativa ocorre ao final do ciclo n + 3. Para tomar o exemplo realista. pemlitiremos que a unidade de decodificação em ita até duas instruções por ciclo de relógio. Há vária.~ CPU!> escalares comerciais que podem emitir qualtQ ou até seis instruções por ciclo de relógio. Nosso exemplo de ~eqüê nci a de execução é mostrado na Tabela 4.1 1. Nesse caso, a primeira coluna dá O número do ciclo e a segunda dá o nú mero da instnJ4jão. A terceira coluna relaciona a instruçiio decodificada. A quaru informa qual instrução está sendo emitida com um máximo de duas por ciclo de relógio. A quinta in fonna qual instrução fui re tirada. ou conclufda. Lembre-se de que nesse exemplo estamos ex igindo emissão em ordem, bem como conclusão em ordem. ponanto a instrução k + I não pode ser emitida tlté que a instruç5.o k tenha sido emitida e a insTruç:1o k + I não pode ser retimda. ou seja. não pode ser escrita retroativamente nu regislmdor de deslino até que a instruç:1o k tenha sido retirada. As outras 16 colunas são discutidas logo adiante. Após decodificar a inSTrução, ::. unidade de dccoc.Jificação tem de decidir se pode ou nuo emiti-Ia imediatamente. Par:t tomar essa decisão. a unidade de decodificação precisa conhecer o csudo de todos os registradores. Se. por exemplo. a instrução corrente precisar de um regislr.ldor eujo valor ainda não foi calculado. ela n;cus estados após a emissilo da instrução que está naquela linha. Enlr.ldas em branco são Os. Uma vez que nosso ~empJo é uma maq uina supcrescalar que pode emitir duas inslruções por ciclo, a segunda instruçào (12) é emi tida dura nte o ciclo I. Ela soma AO e A2 e annazena o resultado em A4. Para ver se essa inslruçào pode ser emitida. são aplicadas as seguintes regf'JS: 1. Se {Jualquer operando estiver scndo escrito, não emita (dependéncia RAW). 2. Se o registrador de resultudo esti ver sendo lido. n:lo emita (dependência WAR). 3. Se o regiSlr.ldor de resultado esti ver sendo escrilo. não emita (dependência WAW).
,•" • •o u
•>
'"
o
00
,
••
... ,
Tabela 4 .11
,,
11 *1 1
c
~
•
2
CPU superescalar com emISSão em ordem e condusão em ordem. .\
....
Decod. R3~RO&
R1
.
...,
Ret~
IllnlL
I
1
I
~
• •
·
'.• c
6
2
2
1
1
1
1
3
3
3
2
1
1
1
1
4
R6- RI+RI\
-
3
2
1
1
1
1
3
2
1
1
1
1
1
1
1
I
1
2
1
2
1
1
4
1
R7- R1 0R2
5
2
l
1
1
1
RI- RO-R2
-
2
1
1
1
1
1
1
•
5
o
9
7
Rl--R3"RI
10
11
13
"
1
l
1
1
1
1.
1
1
1
,,-.
• n",R4+R4
7
1
1
-
1
1
1
C, I
1
1
15
17
1
6
14
18
1
5
•
12
1
8
4
C
1
3
7
~
1
R4-RO+R2
~
N
N _Ulllla_ 1 1
Q
R!j:..RO+Rl
4
5
*."
Regifttmdoros ellcritos
2
3
•
Registtndores lidos
•
I I
-
~.
1
.
-
-.
1
"
.'
.
1
7 2
2
•
I
I
1 1
I
Já ."i mos dependências RAW, que ocorrem quando UJlla inSlntçilo precisa usar (,,:01110 fonte UII1 resultado que uma instrução prévia ainda não produziu. As tlutms duus dependências s:1o menos sêrias - são. em essência. conOilos de recursos. Em uma dependência WAR (Writc After Rcad - escrita apôs leitura) uma instrução ~Iá tentando sobrescrever um reg istrador que uma inslfuç:1o anterior pode nâu tcr tcnninado de ler ainda. Uma dependência WAW (Writc Aftcr Writc - escrita após escrita ) é similar. Muitas vezes cs.~ podem ser evil:l.da.s o brigando a segunda ins trução a co)oc;lr seus rcsu llados em alg um outro tugur. talvez temporJrirune nle. Se nuo existi r nenh uma des.,as três depe ndência... ci tadas c a unid::uJe fu ndo nal de que a ins trução necessita estiver disponivel. a instrução é e m itida. Nesse caso. 12 usa um reg istl"J.dor (AO) q ue está semlo lido por uma instrução pendel\te. rnas t!ssa sobre pu~ i çãu é permi tida. pw'lan[o 12 é e mitida. De mudo ., erndhante. I3 é e mitida dur.lluc o cido :2 • . \gurJ. ..:heg:Ullos j 14. que pred'>U usar R4. Infdil./llcnIC. vemo, pela linha 1, qUl" R4 c,d ~cndo c.;cnla. 'Jessc C! intcmlpç;iu. seria muito d ifícil ~al va r o cSlado d>! máquin>! de mudo que e le pudesse ~ r rcstaurddo mais t>!rUe. Em p
uma CPU (Moudgill e Vassil iadis. 19(6). A retirada rora de ordem loma a.'i interrupç6cs incxm:ls, c é por isso que algumas máquinas rt!querem conclusão de instrução em ordem. Voltando ao nosso exemplo. no tinal do cido 4. loJas a,.. três instruçõcs pendentes podem ser retiradas. portautO 14 pode ser linalmcntc emitida no delo 5, j untO com a 15 recém-decodilicada. Sempre que uma instrução é re tirada. a unidade dt.! decodificação tem de vcrifil.:ar pllr
t:mitida. No ciclo 6. 16 é protelada por que ela precisa escrever par.!. R1 c AI I!S tá ocupado. Por tim. ela é iniciada no ciclo 9. A seqüência intcirJ de oito instruções leva 18 ciclos par.!. ser concluída devido a muitas dependências. :lInda que o hardware llcja capaz de emitir duns instruçõcs em cada ciclo. Enlrel:lntO, note que. ao ler a coluna Emit. da Tabela 4.1 I de cima p.lra buixo. toUas as instruçõcs fo ram emitida.~ em (lrdem. Da mes ma forma. a coluna ReI. mostr.l que das também foram retiradas na ordem. Agom vamos cons iderar um projeto ahernativo: cltccução fom de ordem. Nl.!Sse projeto. instruçt'ics podem ser emitidas fom de ordem c tambêm pc.xlem ser retiradas fora dc ordem. A mesma seqüência de oito instruçõcs é mostrJ.da na Tabela 4. 12. só que agora ~Jo ~rmitidas emissiio fora de ordem e retirada fora de ordem. A primcirJ. diferença ocom: no ciclo 3. Ainda que 14 lenha ~ ido protelada. temos pc.nnissITo para o,-codificar e emitir 15 uma vez que da nãu conflita com qualquer instrução pendente. Contudo. saltar instruçõcs causa um novo problema. Suponha que 15 tenha usado um opemndo calculado pela instrução que foi saltada, 14. Com a tabela de pontuação corrente, não leríamos nmado isso. Por eonseqilência. temos de estender a tabela de pontuação pam mOllitomr os annazenamentos feitos por instruções que for.un saltadas. Isso pode ser fei to adicionando um segundo um segundo mapa de bits. 1 bit por rcgis U":ldor, para monitorar annazenamcntos feitos por ins uuções pnlleladas. (Esses contadores não são mllstTados na figur.l.) Ago rJ.. a rcgrJ. de emissão de instruçõcs tem dI! ser I.:stcndidn par.l i.:vitar a emissão dI! qualque r instrução que tenha um oper:mdo I.:scalotlado parJ. .~cr armazenado por uma instrução qUI! veio ante.~. mas que foi saltada. Vamos voltar e examinar 16, 17 I! 18 na Tabela 4.11 . Nela. vemos que 16 calcula um V'.llor em Rl que é usado por 17, Contudo. vemos também qUI! o valor nunca é usadt) novamente porque 18 sobrcscreve RI. Não há nenhuma rJ.7..ãO real pam usar RI como o lugar para comer o resultado de 16. Pior ai nda. R1 é uma péssima escolha de regis. trJ.dor intermediário. embom seja ~rfeitamenle mzoávcl para um compilador o u progmmador acostumado (.:om a idéia de eXl.'cução St.'qüencial sem nenhuma sobreposição de instruções. Tabela 4.12
1
Operação de uma CPU superescalar com emissão de instrução fora de ordem e conclusão de instrução fora de ordem.
--------Eant.
Dacod.
1
R3-R~
RI
I
2
R4=RO+R2
2
3
Rol
I
O
1
1
1
2
1
1
2
1
2
5
3
Registradores escntos
6-71 O t ,2 ; 31 4-516 , 7 1 I
1
I
1
2
,
RSaoRO+RI
3
3
R6-R I +R4
-
3
2
1
1
1
1
3
5
R7-RI "R2
5
3
3
3
1
1
1
1
6
SI ..Ro-R2
6
I'3
3
3
1
1
1
1
3
2
1
1
•
2
1
1
1
1
I
•
2
1
1
1
1
1
4
2
3
1
I
1
I
3
2
3
1
1
1
I
1
I
I
1
1
2
, ,
3
7
R3-R3"SI
-
3
8
S2-R4+R4
8
3 1
3 5 7
t
Registradores lidos
6
I
I
I
I2
c_
.
1
I
2
2
3
6
2
1
3
1
,
2
1
1
3
1
I
1
1
1
2
1
1
5
1
2
I
1
8
1
1
1
1
7
I
1
t
8
I
1
1
9
t
1
7
I
1
I
--
Q)
• • •
•> z
~
u•
N
-'" •o• ~
•
= ~
E
o u
• • •
~
~
=
= • w o
•• • o"
~
•
a
O
Na Tabela 4.12 imrOOU/:imos uma nova técnica pa..\ rc:mlvcr esse problema: regislrador de renome:u;50. A
sábia uniJauo.:: de dl.'Codific:l,ão lr.tJlsferc a Ulilit..u;Jo de Rl em 16 (cIcio 3) c 17 (ciclo 4) pum um registrJJor secreto. 51, que não é visível par.! () prugr.unudur. Agora 16 pode St!r emitida ao mesmo tempo que 15. CPUs modcm:IS costumam tcr uezcnus ue regislradores ~crcms pum usar com rcno rnc:.u,ilo de registrJuor. E.~sa técnica muitas VI!ZCS pode eliminar dcpcndência.'i WAR c WAW. Em [8. usamos novamente rcnomeação de registrador. DesL:l. vez Rl é renomeado para S2. de modo que a adiç50 pode ser iniciada ames que Rl esteja livre. no li nal do ciclo 6. Se acaso o rcsult~o realmente tiver de e.~tar em Rl dc.'ita \'C7•. o cometido de 52 .;cmprc pode '\Cf copiado de volta pam lá a tempo. Melhor ainda. todas as futuras instnlçUes que precisem Jele podem ler suas fontcs rc nmneadas par.! o rcgistr:ldor onde elas realmente estão anna7.cn:Was. Seja como for. desse modo :I adição 18 conseguiu começar mais cedo. Em muitas máqui nas reais a rcnomcayão está profundamente embulida no modo como os registradores s1l0 organi:r..ados. Há mu itos registradores secrelos e uma tabcl:a que mapeia os regislradores visíveis ao pmgramador paT".l os registr:adores SCCTt:IOS. Assim. o registrador Te:al quc está sendo uSóldo para. por exemplo. AO. é loc:alizado examinando :l entrada Odessa tabela dc mapeamento. Dcssc modo. niio exhte nenhum registrador real AO, ma.~ apena.'\ uma vineul:u;iio entro o nome AO e um dos registradores secretos. Essa vinculaçãu muda muitas vezes durante a execução para evitar depe ndê nó aS. Note quc. na Tabela 4. 12. qu.mdo lemos a quarta coluna de cima pa!'ol baixo. aS instruçõcs não foram emilida.'i em ordem, Nem foram retiradas em ordem. A conclusào desse exemplo é simples: usando execução fura de ordem c rc no rneação de registrador. podemos acclemr o cálculo por um fato r lh: dois .
,
4.5.4 Execução especulativa
,,
Na seção anterior intrOOuzimos o I,.'onccito de reordenação de instruções de modo a melhorar o desempenho. Embora não o tenhamos mencionado explicitamente. o foco estava !!Obre a reordenação de instruçõcs de nlrO de um único bloco b,bico, Agom está na hora de examinar essa qucst30 m;J.is de perto. Prog ramas de computador podem ser desmembmuos em blocos básicos. sendo que cada bloco básico cOllsiste em uma seqüência linear de cISdigo com um ponto de entrada no início e uma saída no linal. Um bloco b.í.sico não contém qualquer estrutum de controle. por exemplo. dcdarolções II ou dcclaraçOe.'i whlle, de modo que sua lraduçao para linguagem de máquina não contém nenhum desvio. Os blocos básicos sào concctados por dedarolçiks de controle. Um progr.una nessa fonna pode ser represe ntado por um grálico oricntado. como mostr:l a Figurn 4.33. Nesse exemplo calculamos as soma.'i dos cubos dos inteiros pares
odasum .
()(Iásum .. O;
k .. ! ·
I
I
,>-o lImit
whlle (I < IIfT11t) f
Ruun4.33 ja) fragmento de programa. lbl Grãtioo de blocos hãslcos correspondente.
0;
1. 0: while ~ <
"mil) !
, 1:
k . 1. I · 1:
II (({V2) • 2) ",. 1)
...
if «(V2)· 2) .... I) T
I
I
,.,
---..'
---
!wensum .. e'II8OSUITI" 11.: I ! oodsI.m .. oddsum + k:J I .. ! ~ t,
I
'" ....
~
.. _-_._.- .
!
rt..'1.)ruenar instruçtks atr.lvessando fmnteir.lS de blocos básicos I!.Stá além da capacidade do hardware, p<mamo o eompi1:uJor deve mover as instruçlks explicitamente. 1\ execução espcculativa introt.luz alguns prohlemas interessantes. Um deles é qUI! nenhuma das instruções e~pceulaliv:ls tem resultados irrevogáveis porque mais I:mic pode ·se descobrir que elas não deveriam ter sido executada:-.. Na Figur.l 4.33, é bom buscar CI'I!I/.'iUIII e adul·U"'. e t;J.mbém é bom detuar a adição lilo logo k esteja disponível (mesmo allles da declaraçcro If), mas não.! bom armazenar os resul tados de vollO)z=y/x; onde .t. y C .: são variáveis de ponto Ilutuan te. Suponha que as variáveis são todas buscadas com anteeedEncia para registrJdorcs c que adivis:i.o com ponto Outua nte (uma operação Icnt:l) é elevada para acima do teste il. Infelizmente, t t! () C 11 exeeção res ultante. isto é. a divisão por í',ero. enccrm o programa. O re'lultado Ifquido é que a especulação causou a falha de um progrJma correto. Ainda pior, o progmmador inseriu um código cxplfcito pam evitar essa situaçãl) c. :tinda assim. ela aconteceu. Provavelmente o progrJrnador não licar.'i feliz com isso. Uma solução possfvel é ter vCr.\ões especiais de instruções 4uc podenam cau~ exeeçõcs. Além disso. um bit denominado b it envenenad Ll é adicionado a (':ufa rcgistrJdor. Quando uma instrução espcculauva e... pccial falhar, em vez de causar uma execç:lo. elu ajusta o bit envenenado no regist rador de resultado. Se mais adiante uma instrução normal chegar a esse regis trador. a nrnlUdilha ocorre nesse momento. como deveria. Contudo. se o resultado Llunca é usado. o bit envenelwdo mais cedo ou mais tarde é eliminado e não há dano algum.
4.6 Exemplos do nível de micro arquitetura Nesta seção. mostra remus exe mplos resumidos de três processadores de alta tecnologia. mostr:lndo como eles empregam os eonceitos cxplomdos neste capilUlo. Os e:(emplos 'iCT'Jo necessariamente breves porque máquinas l\!aL~ ~ão de ULlla cnmplexiúade enllnne. contendo milhÕl!." de p()n a.~. Os exemplos são os mesmos que usamos até agora: o Pentium 4. o Ullr.lSPARC 111 e o :-l051.
4.6.1 A m icro a rquite t ura da CPU Pen tium 4 Por fora. \l Pentium ..j. parece lima máq uina C ISC lT'.ldiciunal, com um conjunto de instnujilt:s imenso e desajeitado ~ u e ~uporta opemçiX:s com inteiros de M. 16 e 32 bits. bem como nper.lçõcs de pomo llut uantc de 32 bits c ().J. bits. Tl.:m somente oJito rcg l :.trauorc~ visíveis e não há \Iois deles que sejam cxa14um:nte iguais. Os cumpri mento", de instruc;:iies variam de I a 17 nyles. Resumindo. é uma arquitetuT'.l herdada que parece fa:f,cr tudo emdo. Entretanto, por dentro. li Pcmium 4 (:ontém um nudco RISC moderno. enxuto e de alto gr.lU de paralelismo que e)(l..'Cllta:t uma La.'{a de relógio extremamente r::ipida. que provavelmente crescem nos anos vindoLlnlS. É muho impresSIOnante como os engenheiros da Intel t:onseguiram construir um processador de última gerJr;:lo para implementar uma arquitcturJ antiga. Nesta ~l..'Ção examinaremos a micruarquitetuiJ Pcntiulll 4 pam ver como ela funciona.
Visão geral da Microarquitetura NetBurst i\ microarquiletura do Pcntiulll 4. Jenominada micrnarquÍlelUT'.! NcU1u rst. é uma rupt ura tOlal e m relaçãu à microarquitelura PÓ anteriur. usada no Pentium Pro. no Pcntium 11 e no PClltium 111 , e represema a base sobre a 4ual
-
'" CO
·•,• , ·• · ~
o
u
" •> z
...
-
Para barramento de memooa
<Xl
Subsistema de memória
·•"
I
~
• •
Célçhe de dados de nl'1611
Caehe de nlvel 2
~
6nSlrl.iÇ06S e dodos)
"•
naura4..34 Diagrama de blocos
• • • •"
do Penbum 4.
~
r
Intarlaca de sistema
o
E o
Unidade de execução
I
Unidades de execução de Inteiros e ponto Rutuante
~
un~a~r debusca/ rastreamento decodillca Cadwde
'"·o
E:!IC31onador8!l
Unidade
de retirada
r·ROMr-
'••.
Unidade de previsao de ramifiCação
~
c
•
Tem'llnal frontal
~
Controle do 10m de ordem
"
O
a Intel construirá nos próximos anos. Uma visão gcrJlcsqucmáLica da microarquitclurn do PCnlium ~ é d:l.da na Figura -',34. Esse diagrama corresponde mais ou menos à Figur.J 1.8. O Pentium 4 consiste em quatro subscçiks principais: () subsistema de memória. o Icmlinnl frontal. o contra\..! de for.! de ordem c a... unid:ldcs de CXt.'cução. Vamos examiná-Ia.'i umu por uma. começando na parte superior esquerda c percorrendo o chip em sentido anti-horário. O subsistema de memória contém uma çache L2 (de nível 2). hem como a 16gica pum acessar aRAM ellter· na pelo barramento de mcmôria. Na prirm:ir.l gerJtWão. o Pcnt ium 4 ti nha 256 KU; na segunda. j 12 MB e na tercci· ra. 1 MB. A cache L2 é uma cache associativa de 8 vias baseada em linha.~ de eache de 128 bylcs. Quando uma requisição li cachc L2 cncontr..l uma ausencia da caehe. ela iniçia um par de transferências de 64 byles para a me,m~ ria principal para buscar os blocos necessários. A C:lehe L2 é uma eache de leitum rClrOati vól. e isso significa que. qua ndo unta linha é moditicada. o novo contetÍdll niio é escrito de volta na memória até qut: a linha :.eja dcscam:· gada par.. a m",mÓria. Associada li cólchc cst:í 11m unidade de busca :mll:dpada (que não é mOSlnlda na IigurJ) que (erHa buscar dados com antecedência da memória pri ncipal para a eache L2. antes de eles serem necessários. Da cache L2. os dados podem migrar para outras eaches em alia velocidade. Urna nuvu busca na eache L2 pode ser iniciada ;I cada ciclo alternado de relógio. Portan{(), por cXl.!mplo. se o relógio funciona r ' l 3 GHz. em leoria a cache L2 pode fornecer às m uras caches :llé 1,5 bilhão por segundo de blocos de ó4 bytes para uma largura de bandn de 96 GB por segundu. Abaixo do subsistema de memória na Figum 4.34 está o terminal frontal que busca instruçõcs da c.aehe 1..2 e o.'. deeooifiea na ordem do programa. Cada instrução ISA do Pentium é dcsmembr.tda em uma scqüência de rnicroopcmçõcs parecidas com RISC. P'Jm as instruçõcs mais simlllcs. a unidade de husca c decodificação dclennma inter· namente 4uais microopc:raçOcs ~:io necessárias. Par.l as mais complexas. a 'iCqllêm:ia de ruicruoperJçõe!; neeesSll· rias .: eOIl:.ultruJa na micro-ROM. IX 4ualyucr mooo, toda instrução ISi\ d\l I\:nllUm 4 c! convcnida para uma seqLiência dc mi croopcraçõc~ par.I execução pelo nudeo RISC do chip. Ê esse li mecanismu que resolve a defasagem entre um eonjUr1h) de in... truç rk-.; C[Se ant igo c um rnotlcrnll caminhu de dUI!O<; I~ISC . As microoper:.u,iK!s decutlilicada~ silo aliment:ldas na ca che de ra.strellmcnto. que é a cache de instruçi}cs de llivcl I. Colllt:antlo em cachc as miCrlXl[)Crayi'H.!s dccoJilkadas cm vez da.~ insu'uyties em bruw, ljuandll uma instru· ção l! exc(,;ulUda fora da e:Lchc J!;! r:ll>lTc:.uneriltl. não hú nenhuma n!;!ec.~sid:IJe de dceOl.lific:í·la uma l>Cgunda llCí'.. bsa. abordagem é ullIa das difcrcnças funll:LrncnlUis ertlre a microaltluitctura Net !3urst e 11 P6 (que continha apenas !IIS' lruçõcs Penllurn " na c:lchc de instruçõcs de nfvel 1). A prcvisJo de Jc:.vio também l! l'dla :lqui. Instruçõe.~ sào alimelHadas tL.1 ~ac hc de rastreamento para o \!.SC:llonador na ordem ditaJa pelo proAlr.!ma. porem elas não são ncccssariamcrue crm titla.... na urdem do progmma. Quando é cneontr..lJa ullla mkrooper.tçào qUI! nãu potle :.cr exccutada, li e:.calonildor a retém mas continua processando a corrente de i n.~lTUç:iu par.! emitir instru· yUes ~ ubseqüc ntcs par.. as 4uais todos us recursos (registr.ldorcs. umdades Cuncionais ete.) t:slão disponivcis, A renolllc:.lção dc rel:i~tr..ld()res tambem é fe ita aqui. par.. pcnnitir que instruçiies com uma dependência WAR uu WAW prossigam scm :.II.r:1S0. Embnrol iUMruçik'l possam <:cr emitidas fora de ordem, o n.'quisilO . de intcrrupçrks exat:l.'1 da arqUitetura du Penlium signilica que:ts instruções [SA devem ser instruçõcs devem ser rctirada.~ (isto t!, ~C\lS resul tadus devem /icar vis(vcis) em ordem. A Unidade de rctir..lda exccuta cssa tarefa.
- - - -- _
..... ........ . " " " .. .
:-.lI)
quaurante 'iuperior din:itO da fi gura temo!!
:'lS
unidades de execução que efetuam as instruçõcs de intciro~.
dc ponlO Ihlluanlc c l!.'lpccializadas. Existem várias unid;u..Ics de execução c elas funcionam em paralelo. Elas Obtêm seus daLlos do arquivo 1.10 rcgistr..tdur c da cachc de dados L I.
'" CO
o paralelismo da NetBurst A FtgurJ. 4.35 é uma versão mais detalhada da microarquitclUr::I NClBuI1it. mostmndo o parJ.leJismo. Na pane :.upcrior está o Icmli nul fmntal. cujn tarefa é buscar inslnlçBcs na memória c prcpar.i~ l us pllru cxccuçilo. O painel rrun(:lI rcct!lx: lIovas inslruçiks Pentium d:! cachc L2. 64 bit!> por vez. Ele as dccodilka par..! microopcr.tçiks par..! armaI.cnamcntO no cachc de r.lstn:amelllo, que retém 1'2 K mkroopcr.lçõc:t Uma cachc de 1"'.L'itrcamcmo ucs.>;e tamanho dá um desempenho COlllpur.ivel :la de uma cachc L I convencional de 8 K.B a 16 KB. A cache de r::Istn:amento contcm grupo~ de -.;eis microopcr-lçõc... cm um única linha de r.lstrcamcnto. As microopcraçõc.~ em uma linha dc i.lStreamenta devcm ser cxer.:utadlJ..~ em ordem. ainda que puSS:lm .'~er dcri vada.~ de instruções Pcntiurn ISA sepurndas por milhares de hytes. Para seqüências m:L;S longas de microopcmções. várias linhas de l"olSU'C:Lmento podem ser ligadas. Se um:Linstrução [SA Pcnl ium requerer mais do que quatro microopcroçõcs. ela n;lu ~ der.:odilicada par.! a cache de I".lSlrcamentu. Em vcz disso. um marcador é colocado ali parn indiçar à lógica 4ue consulte as microoperaçUcs na ROM de microcódigo. Desse. mooo, as microopcraçõcs são a.limentad\s para a lógica fura de ordem. seja usando instruções ISA previamcnte decodificadas da cache de rasU'Curnento. seja r.:O rlsult
J Unidade
ÓII
decoOlllcação
I
Terrrunal
lronlaJ
f~m_go ROM'"
"""'"
de tMtnHlmflnto
j
....
Fila ".
Iara da Qtdem ....,
I
__
I
EliCalon.
C",," L2
Fila da memória
."....."
Pendum 4.
,
j
co",ro,.f Visão SLmpUfic.:Jda do caminho de dadO! do
eT8",:,toI ...... meo
j
Unidade de alocaçãolrenomeaçao
ftg.,. 4.35
eTe mJ
t:~!l. 11
Escnlon. óe I1 E:õealon. de I
';~!d;'~U~LA~~~d~'~U~LA~~I."rrNU~~·~Ii~m~'~"~'O~II,,,~,~,ega J~;m~'~"'~'OI
r """"1
ri
ArquiYo d& i6gisbadOJ
de ponto Dutuanfe
~
,
J
F> m"""".
Lo......
I 'r-,, Atqutvo t-_~"'=i""'r'~=-_"T_J"J.-, de i agi hadoi
I ~
Unoclade da FP MMX moYIf'I18nlllçãol
~E
j \}n{r !/ Ilarmazenamenlo Ca rr8gamaniol
I
"""'""' I
dados Ll
I I
I
1
De/pura
UnlCladO ele retirada
L--___~I
I IL--________~
= • •o ~
• •>
~
"
'" <Xl
••
"o
~
,• ~
E o u
puder ser C:'I:I!Cutaua. da é tctardada. mas as microopcmçôcs subseqüentes são processadas. o que leva à execução fora de ordcm ôa." microopcral(õcs. Essa cstr'Jlégia foi projetada par.! manter todas as unidades fundonuis o mais ocupadas possível. Até 126 instruçocs podem estar llO ar a qualquer instante I: até 48 dessas podem ser carregadas da memória c ;JIC 24 podem :ler armazenamentos para a memória. Às vezes uma micruoper. .u;ão ~ protelada porque precisa escrever paro.! um registrador que CSlli sendo lido ou escrito por uma rnicrooperação anterior, Esseli contlitos são denominados dependênclilS WAR c WAW, respcclivamenu:. como vimos antes. Renomeado o alvo da nova microopcru'ião p:lrJ permitir que da cscn.:va !;Cu resultado em um dos I:!O n:gistrJ.dores Lf:ll1sitórios em vez de /lU alvo pretendido. mas ainda ol:upaJo. pode ser possível esca~ lunar a microopcr..lçãu p:lr..t execUl,ão imediatamente. Sc não houver ne nhum rt:gistradnr lr..tnsitóriu disponivd. uu se a microopcração Liver uma dependência RAW (que nunca podcr.í ser igm)r:!da). o alocador observa a nalureza do problema na cnlr:lda do ROB. Quando todos os rccur.ms requisi tados fie:un disponíveis mais tnrde. a microoperação é eoloc:lda em uma d:ls filas de execuçJo. A unidade de :llneação/renomeação põc as microopcmções nas duas filas quando elas cstiverem prontas para exeClilur. Nu ()ulr..1 o..:xtrcmidade h:i quatro escalonadores que as tiram d
1. 2. 3.
4.
•
, 'f
Escalonador I: ULA I e a unidade de movimentação lk ponto flutuante. Escalonador 2: ULA 2 e unidade de execução de ponlo Ilutuante. Escalonador 3: Carrega insuuçõcs. Escalonador 4: Annazena instruçõcs.
Uma vez que a freqilência de Cum;ionamento dos escalonadores c das ULAs é duas veí'.es a frcqilência nominal do relógio. os dois primciros escalonadores podem despachar duas microopcrJ.ç(')es por ciclo de relógio. Com duas ULAs de inleiros cada uma funcionando à velocidade dobmda. um Pentium 4 de 3 Gllz é capaz de realizar 12 bilhões de opcr:lÇÕCS com inteiros pur segundo. Essa velocidade muito alta é a rJ.zão por que o controle de fora de ordem se preocupa tanto em encontrar trabalho para as ULAs realizarem. As instruçÕl.!s de carga e annazcnamenlO compartilh:nll uma unidade de execução de freqüência dobrada. isto é. capaz de emitir uma carga e um amlazenamCll(O elll cada ciclo. Assim. no mdhor dos casos. seis rnicrooperaçõcs de inteiros podem ser emitidas por ciclo de re lógio. além de algumas operaçõcs de ponto llutuante. As duas ULAs de inteiros não silo idênticas. A ULA I pode executar todas as opt!raçõcs ariunéticas. lógieas e desvios. AULA 2 pode efetuar apenas adição, sublmção, deslocamento e instruçõcs de rOlação. Da mesma fonna. a.~ dua.~ unidades de ponlo nuluante também não são iguais. A primeira pode realizar movimentaçõcs c as instruções SSE. A segunda pode efetuar aritmética de pünto tlutuantc. instruções MMX e instruções SSE. As unidades de ULA c pomo nutuante são aliment:ldas por um par de arquivos de registradores de 128 enlr"J.da.~. um para inteiros e um parJ. números de ponlo l1umante. Eles fornecem todos os opcrandos para as instruçõcs screm executadas c um repositório para resullados. Devido à renomeação de registradores. oito deles contêm os regislr"J.dores visíveis no nfvel ISA (EAX . EBX. ECX. EDX etc.). porém. quais oito dcle..úctêm O valor 'real' varia ao longo do tempo à medida que o mapeamenlO muda duran te cxecu~ão. A cache de dados LI lo! parte do circu ito de all;l velocidadc (2x). ~ uma e:l.che de 8 KB c contém números inteiros e de ponto tlutuante e OuttOS tipos de dados. Diferente da cache de raslreamento. du não é decoditicada de modo algum e apenas retém uma cópia dos bvlcs na memória. A cache t.le dados L I é uma ca<:he associativ:1de 4 viô.ls com 64 bytes por linha de cache. É uma .:acilc de escrita. direta. o que significa quc. quando uma linha é modificada, essa tinha c imediatamente copi ada de volta para a cache L2. A cache pode manipular uma operação de lei turJ. e uma de escrita por ciclo de relógio. Quando uma palavra necessária não estiver presente na cnche LI. uma requisiçãu é enviada à cache L2 que, ou responde imediatamente. ou busca a tinha de cache na memória e enlão respo nde. Até quatro requisiçõcs da cache LI à cachc L2 podem estar em curso a qualqucr im;l:lIIte. Como micmoperaçõcs ~ãll execu tadas fora de uma ordem. não s:10 permitidos arnmzcnamentos na eache LI até l.jue todas as instruçõcs anteriores:1que causou o armazenamento tenham ~ido retirou.!as. A tarefa da unidade de retirada lo! retir..Jr instm çllCs. cm ordem. c monitorar onuo..: das o..:stiío. Se OCOITCr uma illtcrrup,:l(). a:; instmçõcs que a11lJu nuo lor.l1l1 rellr..vJas são ahonadas. purtanto () PentiullI 4 conserva a. propriedade que. na ucurrCncia de uma intcrrulllfão. wdas as i n~lruçi)e..~ fOr..Ull conduídas até um dcternli nado pOntO e nenhum:! instntç:io aplls essa intcrmpção lcm qualquer efeito. Se um:! instrução de ann:!7.enagem tü; retimda. mas' instruçõcs anteriores ainda estiverem e m cur:m. a cachc L I não podc ser atualizada. pOMunto os resultados são colocados em um bul1i:r es[>Ceial de anna/,Cnamo..:ntn IlCndclIte. Esse buffer tem ~4 entrJ.das. ';lll"re~ p{)odcntcs aos 24 arnmzenamentos que poocm estar em execuç:1o ao mesmo tempo. Se uma carga -;uh:«.-quenlc te ntar ler os d,ulos annazenadns. ela podo..: ser passallu do bu!Ter de annal.enamenlo pendcme pa!~l a instrução. mesmo que ainda n:lo estejn na cache de dauos L 1. Esse processo I! dcnominado repasse de armazcnamcnto pUr:.I el.lrl-:lI. A essa altura deve estar claro que o Pentium -l- tem uma micmarquiletura de alt.a complexidade cujo projeto foi comandado pela necessidade lle execular II amigo conjunto de inst111çõcs Pcntium em um IIlkJeu R1SC moderno. de alto grau de paraleli~mo. Ele cumpre o..:ssc objetivo desmembrando in~uuçõcs Penlium em micronpcraçi)es, enlocarulo-us o..: m cacho..: c alimentando-as no paralclismo tres por vcz para execuç:io o..:m um Cllnj unto ue ULAs capaz Je exo..:eutar até scis rnicrtlnper..lçiies por ciclu sob condiçõcs <;timas. Mieroopt!mçõcs ~ão executauas fora de
J
,
r on:ll= ",. mas retiradas em ordem c os resultados são annaLcnauos nas c:u..:hcs LI e L2 em ordem. Mais infonnaçõcs sohn.: :l micruarquitclura NctBursl podem Ser t:ncontr.ldas em Hin[Qn CI aI. (2(04).
4.6.2 A microarquitetura da CPU IDtraSPARC-Ill Cu
....
-
CO
A série Ullr.tSPARC é a lInpICmcnlU(f:io da SUIl da arquitetura SPA RC Versão 9. Do pomo de vista do usuário ou do programador. isto é, no nível ISI', os v:irios mtxlclos são bastante similares e as principais diferenças Silo o dcs.:mpcnho c o preço. Todavia. no nível da microarquitclura. a.~ difcrc n ~ ;Js entre eles são consideráveis. Nesta ~cv50 descreveremos o processador UhraSPARC [J] Cu. O Cu na designação rcfcrc ·~c à uli lizar.;ào de fiação dI.: cobre no chip. em vez ua nação de alumínio usada em seu antecessor. O cobre tem rcsistCncia mais baixa do que Q alumínio. o que pcnnite fios mais fious C OpCr.:lç:1o mais rápida. A UltraSPARC li! Cu é uma máquina completa de 64 bits. com registr.u.lores de 64 bits e um caminho de dados d~ 64 bits, embora. por rnzõcs de compmibilidade com as SPARCs Vers:1o 8 - ÜilO'::. 32 bits - ela w,mbém possa manipulnr opcrnndo." de J2 bit~ c, na verdade. c.~ec Ula r ~ftwarc SPA RC de 32 hits '\em modi ficação. Embor:l a arquitet ura imerna scj>t de 64 bIts. o b>tITJlI1ento de rucmóna tem 128 bits de ]>trgur.:l., análogo ao Pentium 11 com arquitetura de 32 bit.. c barr.uncnto e memória de iH bit" e. cm ambos os casos. u batr.lmento está uma gcrJç;lo à frente da própria CPU. Difereme do Pemium 4. a UltrnSPARC é uma al'quiteturJ RISC verdadeira. o que significa que ela não preci~a de um mecanismo completo pam collvener amigas inslnu;i\cs CISC em microoper:l(;õcs parJ execução. Na verdade. as instruçõcs do núclco já silo microopcraçõcs. Contudo. nos últimos anos foram adici'lnudas instruçõcs gráficas e de multimídia. que requerem hardware especial para sua execução.
"
Visão geral da microarquitetura mtraSPARC lI! Cu
• "
•o "u
•> z
~
;" ,
o diagr.unn de blocos da U\lrJ.SPARC IJI Cu ê dado na Figura .l.36. No todo. de é muito mais simples do que a microarquitetura NelBuSlcr do Pelllium 4 porque a UltrJ.S PARC tem uma arquitcturJ ISA mais simples para implenlentar. Ainda assi m. alguns dos componentcs fundamentais '\ào scm~lhan tes aos usados no Pemium 4. As similaridades são. em sua muioria. comandadas pela tecnologia ou por razões econômicas. Por exemplo. na época em que esses chips foram projetados. c:.u.:hes de dados L I na faixa de 8 KB a 16 KB fu:t.i am sentido. portnmo. é o ljue elas têm . Se e m algum ponto no futuro caches LI de 64 MS lizercrn sentido 1I...·c nológico e econômico. Todas as CPUs as ter.Jo. As diferençus. au cOlllrán o, SI! devem pri ncipal mente :J. difere nça entre ter ou não ler de preencher a lacuna cnlre um conjunto de insltUção CISC antigo e um llIídeo RlSC moderno. Na parte superior esquerda da Figura 4.36 está a c;\chc dc instruc;ôes associativ>t de 4 vias c 32 KB . que usa linhas de eache de 32 bytcs. Uma vcz que a maioria das instruçõcs UltrJ.SPARC é de 4 bytcs. há espaço para cerca de 8k inslruçÕt!s nessa cache. um pouco menor do que o da cache de rastreamento da NetBurst. A unidade de emissiio de inslruç:lll prepara até quatro instruçõcs parJ execulião por ciclo de rel6gio. Se houver uma ausência na caehe LI. merlOll in..tnlçôes serJo e mitida.... Quando é cncontrJdo um dC$vio condicionnl. uma tahela de r.lmific:lç:io com entrJda.~ de 16K é consultada para prever se busca a pTÓ:
A•• ,.4.:la
Diagrama de blocus da UltraSPARC 111 Cu.
.....T_.""
h
0."'"
de lna(rução
I
r
UnidaÓII de BmlSsâj de lnslruçOOs
I
I do~1
1 1 Unidade Unldaoe !kl exocuç30 de execução de iniBires grálicalf'F
Inlorlaee àe sislema
----------cache -----------
Conlr~a(lor
da
L2
""",.1.2 (kndo d'llp
Controlpoor da momóna
. ~ "'*"........ """" C....
L
I
Unidade (le carga! armazenamento
[
-
f
"
co
co ~
•o•"
A unid.:uJI! de ponto nUlUanle contém 32 regisuadores c t.res ULAs Sl!par..w.fas. par.! adiçãolsubt~!Io. mu[(iplic:tÇão c diVl\ào. I1!Spcl!liv:.uncntc. Instruçõcs gráticas lambim são executadas nesse caso. carga/anll:.lzcnamcnto manipula v:irias im.trtu;õcs de carga e a.rrn:v~nugclll c tem caminhos de A umdade d;U[ON pal"..llrCs cachcs diferentes. A C:Jche de dadu.'1 é uma tradicional cachc de dados LI associativa de quatro vias c 6-+ KB 4ut! usa uma linha de 32 bytcs de tamanho. A enche de husca :utLecipad:1 dI,) 2 KB é fornecida porque a ISA Ullr.lSPARC contém instruçõcs de busca UJlh!cipada 4UC pennilclll que um compilador busque palavr.tS de
ue
~
lbdos antes de das serem necessárias. Quando um compilador acha que poderia prcch.ar de ct!na palavr:J.. de pode cmitir uma instrução de busca
~
:lllIcdpaua. que f:u eum que a linha de c:lI':hc endereçada seja ~arrcgada na cache de busca antcclpada cum antccc· dência, o que acdcr:l o a~esso quando a palavl"'.i é necessária algumas inslrul(ÕCs mais Im'de. Sob certa... cireumtnn· Clas. também ê fd ta husca antLocipaJ:.I em hardware, de modo a melhorar o dcscmpt:nho de pnlgr.unas hcrdadns qUI,: 1\:10 fazelll busca antecipada. A cache de escrita é urna cache pequena (2 KB) que é us:!(m par.! combinar resu[l:I· dos de escrita para fazer melhor uso do largo barmmento (256 biL\) na direção da cache L2. Sua unica funçJo é melhurar o dcsempenho. O chip t.:l.lnbém conté m lógica para eonlrolar acesso à memória. Ussa lógica é sulxlividida em trê.~ panes: a mtcrfacc de sblema. o contnllador da c:lche L2 c li controlador de mcmôna. A inlerface de sistcma faz a interface com a memória por um barramento de 128 bits de largura. Todas a... l'Ctjuisiçõcs para o mundo exterior, exceto para a cache L2, passam por essa interface. Com um cndereço físico de memória de 43 bits, em teoria, a memória prin· eipal pode scr de até 8 TB. Illas o ta manho d::! placa de ci rcui to impresso na qual o processador é montado limita a mClmkia a 16 GB. A inte rfacc fo i projetada para permilir que várias UltmSPARCs sejam collt...octadas à mesma ml!mória par.I formar um mllltiproces."i~ldur . Discutiremus multiprocessadores no Capítulo 8. O controlador de eaehe L2 faz inlerface com a cachc L2 unificada, que é I!xtema ao chip da C PU. Com cache L2 externa. são possíveis e3Chc,~ de 1 MB .4 MS c R MB. O tamanho da linha depende do tamanho da cachc. na faixa de 64 hytes para uma cache de I MS até 512 bytes Jxu':J uma cache de !I MS. Por comparação, a cache L2 do Pentium 4 estú no chip. mas é limitada a I MS no máximo, devido ~ falta de espaço no chip. O compromisso nesse caso é que a UhraSPARC podc ter umu taxa de prcscnça na cache L2 mu ito mais alta do que o Pemium (porque a cache pode ser maior). ma.~ li acesso 11 caehe L2 é mais lento (porque está fora do ehip). O contmlador de memória mapeia endcrcços vinuais de 64 bits para endereços físicos de 43 bits. A UhnSIJA RC suporta memória virtual (discutida no Capítu lo 6) com tamanhos de página de 8 K.B, 64 KB, 512 KB e'" MS. Para acelerar I) mapeamento são fol'tlCCidas tabc l a.~ especiais denominadas TI...Bs (1hmslation Lookaside IluJTers - bufTers dt: tr..lduçUo later.!I). para comparar o endereço virtual corrente que está sendo referenciado com os endereços referenciados no passado recente, Três dcssas tabelas são fo mccidas para gerenciamento ne:dvel dos diferentes ta manhos de página para dados e mais outras duas pum instrul(õcs de ma peamento.
,• eo
u
• • • , =
~
~
•
~
'•. o
~
N
C
•
~
o
Paralelismo na U1traSPARC III Cu A UltmSPARC UI Cu tem paraleHsmo de 14 estágios. ilustt:ldo de maneira simplificada na Figura 4 .37. Os 14 cstágios ~ào designados pela.~ Ictras de.;\ a O no lado esquento da figura. Agora vamol'l examinar brevcmente cada um dos estágios. O cst.:igio A (geração de endcTl!t;o) cstá no início do paralelismo. Aqui é dcterminado o endereço da próxima instrução a scr buscada. Nomlalmentc esse endereço é o seguinte à instru ção corrente. Contudo, essa ordem scqiJencial pode ser qucbrJ.ua por uma varicdade de razõcs. por exemplo. qua ndo uma instrul(:lo anterior é um desvio que foi previsto para !;Cr tomadu ou qua ndo uma cxceç:10 ou imcrrupção precisa scr resolvida. Como a previsão de desvio não JXX.!c ser feita em um ciclo. a instrução em seguida a um desviu condicional é sempre cxe· cutada. não importando parn onde o desvio vai. O c,<;Lág;o P (busca preliminar) usa o cndereço fornecido pelo c,<;tágio A para cOInl".'Çar a buscar até quatro im;· truÇllcs da ~achc de instruçi;es L I (cade ! L I) pur ciclo. A l;lbcla de desvio!:! também é consultada aqui par.I ver se quaisquer delas ~ão desvio~ cundicionais e. em c:lsn atirmat;vQ, se a previsão indica quc des ~cjal11 to mados. O está· gio F (busca) condu i a busca de instrul('ics para a cachc de instruçãu (":'Iche 1). O cSI:tgio IJ (a!vo do desvIO) dccodi tica as insrrm;õcs que acabar.uH de s..:r buscada),. Sc lluaisqucr Jclas forem Je~\ 10), ]lreviMo~ para !>eTCm 100naúu". ~~ mturmaçau .:.,t..l Ji~]lUIH \clIICSM! c),lagio e c. .1!imClltada de vulta ao c.~ta· glU....I parJ. comandar futura busca de inslrUl(ào. O cstágio I (fonnaç:10 dc grupo de i n ~truçtics) agOlpa;J instrução ilUC cntm depend endo de quaiS das '\eis um· dadcs f{mcionais d a usa: ULA! de inteiros. ULA 2 de inleiros. 3. ULA I Je punto llutuante/gr:i1ka. 4 . ULA::! de ponto l1u(\]antclgr.ifi~a. 9. Paralelismo dc desvio (niIo mostrado na Iigura). 8. Oper.J.ções de carga. arm:l.7.cnamento c operal(õcs e!\peciais. I.
2.
As duas Ul..As de intciros niio são exatamente idên ti ca.~ e as duas ULAS de ponto l1utuantc têm di ferenç as aprccilivcis. Em c;lda c:lsn. Il.~ conju ntos de instnu,i'ies que 'l~ ULAs podem I!;(CCUlar ~:1 0 difcrc nlcs. No cst:ígio /. as inSlnll(iics são cI:l~s i fic:tdus dependendo de qual unidade ncccssilam.
~: [~-~-~-=:;:;T::;:::;:;:::;:-~-~~~:~T~;~-~ ~"~ '~-~!2' __-----------p
C)
DO
~-"'-~
~
, •
F
----
• -< ,
IDecodilic;açkl do _nslr\lção j
naur.4..31 Repressntação S1mpWlcada do paralelismo da
~
•"o
--1-------
-------------J
,
------- -----~~~ ------- -- ----------
Alvo
o"
'•"
Enlileuamento de 1n!lruçOea
~
.::z•
-------- --
"- --- J -1 de
UltraSPARC 111 CU.
~
ArqUJvo f&gÚllladOr ele ponIO nUIIl&J'1b1
E
,o
---T----T-C
M
w
x
-
,, '," ali!!!
~i~~
":1 ~ ~,.
"",
,,
>12 -'c gl~ 11 ~1.2
:i11~ ~,-
~,8. • ~l~
,
~
r-;
"-
"""" L.L
.
T
D
o
estágio J (estágio de agrupamento de inSlIUçÕCl» relirJ. instruçõcs da fila de instruçõcs e prepara par..! despachá..las parJ. as unidades de I!Xccução dUr:l.nte o próxi mo ciclo. Até quatro instruções podem ser passadas para o estágio R a cada CH:: JO. A escolha d e instruções é restri ngida pelas unidades funcionai s disponfveis. Por exemplo. duas inslruçôcs de intt!iros. uma insLrução de pollto !lutuantc c uma instrm;ão de carga/armazenamento, podem ser emitidas e m um ciclo. O estágio R consulta os registrndorcs necessários par.! as instruções de inteiros e repassa as n.:'q uisições de rcgislr.ldorcs de ponto tlutuanlc parn o arquivo de rcgislrnuores de ponto flulUunte . Verificaçõcs de dependência tambêm são fci las nesse caso. Se um regislrudor necessário não estiver disponível porque ainda está ~ndo usado de mooo conllitante por uma instrução a1llcrior, à illstnlçilo que está precisando daquelc rcg:i.~trador cS protelada c ;!s 4UC estão atrás deI:! ~;io bl()quead;L~. Difcrente do Pentium 4. a UltraSPARC 111 Cu nunca cmite instruçl1es fn iJ. de ordem.
I I I I I I I
.:L
O e:-t;ígiu E (e:H."CINi:lO) c! o I!slágiu em qllc as inslnlljõcs de ulIciros ~ão realmente eXI..-cutadas. Gr:.mdc pane d:!!> iu!>lI'UlõuCS .munc!lka.'i. b..lol~n:.ls c de ili:slocamcnlo U~1ll as L: LAs de intem>:! c conclucm CI1l um ":Iclo. Na conclusão. c:ltla inslruç:iu atualiza imctli:U:lmcntc o arq uivo dc rcgis tr'J.dorcs de lrabalho. Algumas das lIIStruÇÕCS de inteiros m:us ctltllph.:xa.'i ~:lu ençaminhadas par:! uma un idade cspcci:ll. Nesse estágio Instruções ue eargll e armazenamento .,ão iniciadas, mas não t oncluídas. Nesse caso. opcrandos de ponto nUlUantc são buscauos no arqui vo de n.:gl!>l....ldorcs dc ponto l1utualltl:. InstruçiKs de desvio condicional são processadas no cstágltl E e sua d ireção (desvio/nenhum dcsviu) é dctcrmmad:! aqui. Se ocorrer uma prcvis;).o errônea. um sinal ê enviado de vulta ao cMágio ti c li pamlelismo é esvaziado. O est:ig;o C (cachc) é o estágiu cm que é conclufdll ll acesso 11 cl:'1o na eache LI . t\ cache L:! c! verilieada a seguir c. se também ralhar. é emitida uma referência à memória. o qUi': IOma um grande númcn) de cidus. QuaiSl.luer bytcs. quanos-de-paJavrns ou meias-palavras que estão presentes na eache L I mas "tuc precisam ser alinhaJas ou !!s tcndid:L~ 1:111 sinal 1:lmhém "ãn proccssauas ncsse estágio. Cargas ue pontO J1ulUante que ..:hegam e I:m:ont"'J.m prc..;ença na eache de busca antccipada também obtêm seus resultados aqui . A eachc de busca anh.:clpada nflu é usada parJ. d:ldos de númem~ inteiros por rJ.ZÕCio um \.anta complicac..las de tcmpon:r..ação.
•
u
o
Cl
•""
o
~
•o ~
eo
"• ~
• •
~
"
~
o
o cst:igio W (c)oCrita) é o cl'ot:igin e m que os rl!sull:.u.los daunid:.ldc especial são escritos de volta no ;rrquivo de registradores em sCl"viço. O est:igio '( (extensão) ê o estágio em que a maioria das instruções de ponto nutuante c gr.ífic:J.S SI! cundui. Os rcsult:.uJos estilo disponivcis par.! illSLruÇÔCS subseqüen tes por mdo de repasse de :lnl1:J.zcnamo.:nto-parJ.-c:rrga amcs que as instruçõcs sejam fonnalmente retiradas no estágio D. O e~!<Ígio T (cxccç3.o) t! O cst4gio cm que são dClcct.ada..~ as exceções de inteiros e pontos t1U1uanlcs. Esse est.1.gio é responsável por fazer com que as l!X!.:cçõcs c intclTIl pçõcs sejam exatas. Em OUlr.tS palavras. apó~ uma exceção ou interrupção. u estado da m:íquina que': salvo deve s..::r lal lj ue loJas as insLruçllcs allles da e;u:cção llU inler_ rupç:iu tenham I..:oncluído tutalmcntc c ncnhuma das inslrufjÕl!s depois ddas tenham sido iniCiadas. O estágio D cntrega os rcgistrJ.dnrcs de inteiros e pomos Ilutuantes a seus rcspel..:!ivos arquivos de registradores de arquitetura. Se O(;orrcr uma armadilha ou imerrupção. ~ão esses valores que lit::lm visivcis. c não os que estão nos registradores de! serviço, O ato de armazenar o rcgistrJ.dor no arqui vo de arquitetura é equivalente . . retirada no Pentium. Além disso, no estágiu D. quaisquer instruçõcs de armazenamento agora concluem a escrita de seus resultados na cache de escrita em vez de na cachc de dados LI. Por lim. as linhas que estão no.:ssa." cadw::; ~ão escritas de volta na cache L2. evitando a cache LI (cujo conteúdo não I! compatível com o ua cao.:he L2). Esse :lrranjo prere nde f:lcilil.:l.r a construção de multiprocessadores UltraS PI\RC Essa ucscrição da Ultra$PI\RC 111 está longe de scr completa. mas deve dar uma idéia rJ.zoável de como ela funciona e de f.juais são as diferenças entre sua arquitetura e a do Pentium 4.
~ ~
• c" •
~
o"
4.6.3 A microarquitetura da CPU 8051 Nosso último exemplo de uma microarquitclurJ. é a da 8051. mosu'ada na Figum 4.3R. Essa microarquileluru é considerave lmente mais simples do que a do Pentium e da UllraSPARC. A razão parJ. cssa simplicidado.: é que o chip é muito pequello (60.000 InJ n s i store.~J c foi projetado ames do.: o pamlcl ismo se tomar comum . Além dissll, o objetivo primário cra fazer um chip bardtO. nào rápido. Barato e simpks são bons am igos. BarJ.tn e rápido não são bons amigos. O coraçào da 8051 é o barramento principal. Ligado a ele estão vários registradores. a maioria dos quais pode ser lida e escrita sob controle de programa. Vamos descrev~-Ios brevemente agom. O rcgistr.!clor ACC é o ACCumuJator (~cumulador). o principal regist rador aritmético no quaJ é arrnazenada a maioria dos resultados de cálculos. G rantle parte da... instruçôcs ariunéticas o usa. O regislmdo r 8 é usado na multiplicação t! na di visão t! também ~ um registmdor tro.nsitÓrio pam reter dados lempor.írios. O regis1rador SP é o ponteiro de pilha e apoma par.! o topo da pilha. como na maioria das máquinas. O rcgislrJ.dor IR é II registrador de instruçi'in. Ele retém a instnJçi'lo que está sendo Cltccutada no momento em questão. Os rcgistradnTCs TM?1 e TMP2 são aCUlllU!;l(Jores parJ. a ULA. Para C:
ROM
RAM
B,_
~:
~
I
IRAMADOR
figura 4 .38 Mlcroarqwletura do
I L I
SP
L
ACC
'R
B
RQMAOOR BUFFER
.
L trn::fsmomalior 00 PC PC I OPTR
J[
8051.
Temporizndor O
TMP2
I
"'"
~
TMP1
,
Temporizador 1
T&mporiZadOf 2
\
7
\
ULA
li. ~
- - -- _........ ..... , ... . "", .. ..
PSW
PonnO
I
Pona 1
I
Pona 2
I
Pona 3
I
I
A sarda da ULA pode ser escrita para qualquer um dos registradores que podem ser escritos por meio do burramento princi pal. Além disso. os c.ódi);os de condição. que indicam se o rcsu h.ado era 7,ero, ncgativo etc .. são escritos pata o PSW (Progr:lln Stat Uli Word - pall.lvra de estado do proJ!ramu). 08051 tc m mc móri:.L~ separadas [Xlt:l dados e código. A R..... M de dados tem 12H bylcs (8051) ou 256 bylcS (g052), p<,manto o registrador RAM AOOA de 8 bits é suficienlcmenle largo pant endereçar todos eles. P-Jr.l endcrcçar a RAM. o endereço do byte dcscjl.ldo é colocado no rcgis(T;ldor RAM AOOR c a operJç:io de memória é iniciada. A memória de código pode ter alé 64 KB de larg urJ (quando é usada memória for:!. dI) chíp). portanto o reglstntdor ROM ADOR usadn parJ. endereçá-Ia tem 16 bils de largu ra. De modo scmelhantc. o registr:ldor ROM AOOR endcreça o código de programa na ROM . O OPTA (Double PoinTeR - i>411llciro d up lo) é um registrador lntnsitooo de 16 biL<; para gerenciar e montar endel'C1ios de 16 bits. O registrador PC é o con tador de prllgrJ.mu (Pmgram CtlUnter ) de 16 bits, isto é. ti endereço da próxi ma instrução a huscar e executar. O regilitrJ.dor PC INCREMENTER (incf'Cmcnt:ldor de PC) é uma peça de hardware especi al que age como um p~eu do -reg i slrndo r. Quando o PC é cnpiado pam ele e entao lidl' de volla. o valor é automaticamente incrementado. Nem o PC nem o PC INCREMENTEA poUern ser alcançados pelo barrJ.mento principal. Por tim. BUFFER !! um outro registrJ.dnr Ir-U\sitório de 16 bits. Na verdade. tudos essc~ rcgistrJ.dore10 de 16 bits eonliiSlcm em um par de registradores de 8 bitS q ue podem ser manipulados independe ntemente. mas o efeito é o de um registrador de 16 bitli. Além disso. o 805! tem três tcrnpori ...adores de 16 bils no ehip que são essenciai ~ pam aplicaçix:s em tcm po real. Também há quatro portas EIS d e 8 hits. que pennilcm que o 805 1 eontrole até 32 botõcs ou teclas. lâmpadas. scnsores, at uadores cxternos c assim por d iante. Aci ma de qualq uer outra coisa. é a presença dos Icmpori ....adores c porw.s EIS que possibilimm usar o 8051 para aplicações I:mbutidas sem nenhum chip adicio nal. O 8051 é um proccss;ldor síncrono no qual a maiorb das iIL<;truÇÕoeS leva um ciclo de relógio. embora algumas levem mais. C;lda ciclo de relógio pode ser dividido em seis partcs. dcnominadas cst:ldos. DUrJ.nte o primeiro estado. a próxima instrulOão é buscada na ROM, colocada no barmmenlo princip;ll e eneaminhada par-J. dentro do rcgis· trJ.Jor IA. Dumnte o segundo c.<;tado, a inslruç:lo é decodificada e o PC incrementado. Durante o terceiro e~ tado. os opcr.lOdos s.1o preparJ.dos. Durante o quarto esmdo. um dos operandos é eolocado no barrJ.mcnto principal. usualmentc parJ. despacho pam TMPt. ondc ele pode ser registrJ.do parJ. utili ...m,i'io como um operando da Ul A. O registrJ.dor ACe também pode ser copiado parJ. TMP2 du rante esse estado, ptmanto. amb:L~ :.L~ enlmdas da ULA estão prontas para serem usada.... Duran te o quinto estágio. aULA cxccuta. Por fi m. durJ.ntc o sexto estadn. a safda da ULA é e:lcri ta de volt.a pam seu destino no barramento principal. Enquanto isso. o registrado r ROM AODR é ajustado parJ. buscar a próxima inslnlç:io. Embora pudéssemos e ntrar em mais detalhes sobrc o 805 1. a desc rição aci ma c a Figura 4.38 dão a id éia básica. O 805 1 tem um único barramento principal (para reduzir a :irea do chip). um conj un to helerogcnco de regislr:'ldores e três te mporizadores c quatro portas pendurados no balTamen to principal. mais alHu ns fcgis· tradores ext ras no barramento local. Em cada cielo de caminho de dados dois operandos são passados pela ULA c os res ultados voltam a ser armazenados e m um registrador. eX:'llamente como nos computadores mai s modernos.
4.1
Comparação entre Pentium, UltraSPARC e 8051
Nossos três exemplos silo muito diferentes, porem ainda assim exibem uma certa dose de car:lcteríslicas em comum. O Pcnti um 4 te m um conj unto de inslnlçõc'<; C ISC ;Ulligo que ns engenheiros da Intel :'ldorariam jogar na Bafa de San Francisco. caso isso não violasse as lcis :l.mipoluição das :i);uas da Califórnia. A Ullr.J.SPARC 111 é um projew RISC puro. eom um conj un to de instruçõcs enxuto e esperto. O M05 1 \S um si mples processador de R bits pam aplic:lI,i\cs cmbulidas. Ai nda assi m. ti coraçãu de cada um deles é um conjunto de registr..Ld nrcs e uma ou mais UlAs '-{ue eretuam operaçi\es aritmética.~ booleanas simples em opt:mndos registrado res. A de:.peito de '\ua:. óbvia... dircrcnças cXlernas. a PentiullI'" e a UltrJ.SPARC 111 lêm unidades de execução r..v.oavc!mcllle ~emd h:lllle:.. Ambas ;,1.\ ulliJaJe ~ de exccuç:1\) aceitam mlcronper-Jçôcs '-{ue r.:olltêm um upcnde. dOIS regis tradon!s-forlleS e um regi.~1r ..d()r de lIc.~li no. Ambas Ixxlem I:xC\:Ular um:) mlcroopt!r-Jçào em um eiclo. A mb ~L~ têm llho grJ.LL de parJ.l cl i ,~ n1t). previsão de desvio e caches de instruçi'ics e de dadus div ;did:.L~. E.~sa ~i milaridadc interna não é um acide nte ou nem mesmo devida à eterna rotatividade de empregos dos cngenheiros do Silicorl Vallcy. Como vi mos em nossos excmplos Mic-] e Mic-4• ..-! fãcil c natural eunstruir um caminho de dado .. com paralelismo que reg .. dOIS registradores-fontes. passa-os por uma Ul A e armazena os resul tados em um rcgistrJ. u()r. A Figura 4.24 mostr-J esse paralelismo graficamentc. Com a tecnologia atua!. esse é o projeto mais efelivo. A principal diferença entre a Pcntium 4 e a UltraS PARC !l1 é o modo como elas vão de seu conjunto de instrução I$A ale a unidade de cxecuc;;\o. O Pcntium4 Lem de fragmcntar suas inslnlçõcs C ISC parJ colocá-Ias no formato de Ires rcgislr.J.dofCs que a unidade de elL:t..'Cução necessita. É isso que faz o Icnninal frontal na Figura 4.35 desmembrJ. inslruçücs grandes cm mieroopcraçõcs caprichada... e jeitosas. A UltrJ.SPARC 111 n:io tem de fazer nada porque suns instruçücs nati vas já são micn'H.)pcraçõcs caprichadas c jd w sas. É por isso que grande purtc das novas ISAs ~:111 do tipo RISC - pam uferecer melhor compatihllidade entre li conjunto de instrução [SA c () mecanismu interno de execução.
L
-•o u
•>
'" ~
o
• u•
~
'"'"
-
É ms uutivo compu.ml' no:.:.o projeto final. a Mic-4. com esses dois e:l:cmplos do mundo real. A Mic-l ~ muito parccir.i:.\ CO I1l o PcnliulIl 4, A (:ln.:(a de ambos é intcrprcUr um conjunto de instruçüo ISA que não é RISC. Ambos fazem is~o dc~mcrl1brando :l.S instruçõcs ISA em microopcrnçõcs ~\)m um opco(k. do is rcgistmuorcs-folllcs ~ um
••o ,•
tàrdC. A polític;J esrrila do projeto da Mic-4 prevê em.issão em ordem, execução em ordem, retirada t::m ordem, ao p:l~SO que o Penlium 4 tem uma polític::l de emissão em ordem. exccuç:io fora de ordem, retirada em ordem.
~
~
e
o u
•
~
•
~
registrador de ucs!ino. Em ambus os I:;IS0S, as rnicroopcr.J.çõcs s:iu ucpositad:l!i em uma fila pum c)(l;!CuçiIo mais
Na real.idadc. a fvlic-4 c a UltraS PARC OI ml0 podem ser cOlllparJda.". ponJuc o conjunto de instrulrfu.. ISA da l.:JtmS PARC lU é composto de instruções RISC (isto~, microopcr.u;õc.. de três rcgistmdores). Essas instruções não têm de ser dc:mk!mbr.ldls c podcm .-,cf ~·({.'Cutauas cumu se apresentam. C:IJa uma cm um único ciclo de eaminho de d:ldos. Em compar.!If,lo com o Pentium 4 e a UltraS PARC 111. a 8051 I! realmente uma máquina si mples. Tendc mais pam RISC do que pam CISC porquc grande panc de suas instruç6cs pode ser ext!CulUu:l em um ciclo de relógio e não precisa lier desmembrada. EI[J não tc m p:lr.!lclismo. nem cachc. e tcm emissão em ornem. execução em ordem e I'C tirada em ordem. Em liua simplicidade. é muito mais aparentada com a Mic· l .
,• , •
~
o ~ ~
•
c"
•
~
o
4.8
Resumo
a coraçào de todo computador é o caminho de dados. Ele cOl1lém alguns registr.l.dorcs, um. dois ou três barramentos e uma ou mais unidaues funcionai s como ULAs e deslocadorcs. a laço de execulfào principal consiste em buscar alguns opcmndos em regis tradores c enviá-los pelos barramentos l ULA e [J outr.J.,.. unidades funcio nais para execução. Entãu. os TC!.ullados são ann:v.c nados de volta nos regislradores. O caminho de dados pode ser controlado por uma sl.:·qüênc ia que bosc.a microinstruçõcs em um annazenamento de controle. Cada micminstrução (..'ontém bits que controlam o caminho de dados por um ciclo. Esses bits especilicam I.juais opcram.los :.eledonar. qual Upcr.IÇ:lO elU.'Cutar e o que fazer com os resultados. Além disso. cada microinstrulfão cspcciliea sua succssora, em geral cxplieitamelllc por conter seu endereço. Algumas microinstruçõcs modi ticulll essc endereço de base cfetuando operações a R com bits no endereço antes de usá-lo. A máquina UVM é uma maquina de pilha com opçodes de I byte que passam palavr.1S par.! .:t pilha. retiram palavras da pilha c combinam pa lavT'.J.S (por excmplo, somando-as) na pilhu. Uma implemenlaçao microprogr.!mada foi Jad.:t à rnicroarquitcIur.! Mie-I. Adicionando uma unidade de busca de instrução paro earregar os bytcs anle· cipaililmentc na seqüência de insU'Uç:io. foi possívcl eliminar muitas refcrências ao conladorde progroma e a máquina ficou muito mais veloz. Há muitas mane iras de projetar o nível de rnieroarquitctura. Existem muitos compromissos, incluindo projetos com dois barramcnlos c três barramentos, campos de rnicroinstrução codificados e não codificados. presença ou ausência de busca Ulltecipad
Problemas 1. :'lia Figur..1 4.5 o registrador do barramento B está codificado em um campo de 4 bits. mas o barr.unento C é rcprc:.cntado com um mapa de
b i l~.
Por 4uê'!
2 . Na FigurJ -l.5 há um rclÚngulo t.lcllomillwJo 'bit alto'. Aprcsellle um Jiagr:.una de d rcuito pam cle. 3 . Q uando o campo JMPC em um:l microinstrução é desabi litado. é efetuada uma Opcr..IÇ:iO a R enLre MBR c NEXT _ADRESS para fonnar l'l enderelfo da próxi ma microinstrução. Há alguma circunst5.ncia n
4 . Suponha que no c:<emplo da FiguT:l-l.12(a) a declaração k '" 5;
é adicmnada após a declamç:lo if. Qual sl!ria o no ...o cód igo de muntagcm" Considere que o compilador é um compi lador m imi1.ador. S.
o..: duas traduções J1VM di ferentes parJ. a seguinte dedar.!ç:io Ja va: 1-'" k ... n .. 5:
6. Dê a decluraç:io Java que produziu () seguinte código U VM:
M
'"
ILOADj ILOAQ n ISUB BIPUSH 7 ISUB DUP lADO ISTOAE I
•," • , •"o ""
~
7. No texto. mencionamos que. quando tr:lduzimos a dedarJção il (Z) goto LI ; else goto L2
par.! binária. /2 te m de estar nas últimas 256 palavras do anllazenamento de controle. Não seria igualmente possfvel que LI estivesse em. por exemplo. Ox4ü e L2. em üx140? Explique sua respos ta. 8 . No mieroprob'l'aIlla par.! Mie-I, em iUcmpcq3. MOR c copiado para H. Algumas linhas mais õldiantc ele é subtrJído de TOS par.! veriticar igualdude. Com ccJ1eZa seri a melhor tcr aqui uma declaração: ICcmpeq3 Z .. TOS • MOR; rei
•>
'"
Por que isso não é feito? 9 . Quanto tempo uma Mie-I d e 2.5 GHz leva para exccutar a dcclanaç:1o Java a seguir" I:: J + k;
Dê
~ ua
•
resposta em nanosscgundos.
u
10. Repita a pergunt:. anterior. agora para uma Mie-2 de :!,5 GHz. Com ba.~ nesse cálculo, quanto tempo um pro· b'T'Jma que executa dunante \(Xl segundos na Mie-I demor.J.ria na Mic-2? 11 .
F~~crcva um microcód igo para a Mie- I a Iim de implementar a instrução JVM POPTWO. duas palavms do topo da pi lha.
Es;~a
instrução relirJ
12 . Na máquina JVM completa. há opcodes especiais de I b)' le para armal.enar de O até 3 locais na pilha em vez de usar a instrução geral ILOAO. Corno a IJVM deve ser mooilicada para fal.er o melhor uso dessas insfruçôes? 13. A instruç;io ISHA (deslocamento aritméti!,;o de inteiro ]Xlra a di rcita) existe em JVM mas não em UVM. Ela usa os dois valores do topo da pilha. substituindo os dois por um valor único. o resultado. A segunda paJavra a partir do to po de uma pilha é o operando a ser deslocado. Seu conteúdo é deslocado pura u di reita por um valnr entre O e ) I. inclusive, dependendo do valor dos 5 bits menos signiticativos da palavrJ que ~lá no topu da pilha (os outros 27 da palavra do topo são ignorados). O bit de sinal é duplicado p:tr.:l a d ireita por lamos bits quanto for o inteim de dcsloc:ullento. O opcode para ISHA é 122 (Ox7A). Qual é a opc.rJção ariLmética equivalente ao deslocamento p:tr.:l a direita com um inteiro 2'! b. Estenda o mierocôdigo par.! incluir t:...sa instrução como uma pane da UVM. 14. A illStruçao ISHL (deslocamcnto de inteiro par.! a esquerda) ex iste em JV M. ma.<; não em IJ VM. Ela usa os dois valores do topo da pilha. lIUbsliluindo os dOIS por um valor ún ico, o resultado. A 'iCgunda palavra a panir do IOlxl da pilha é o operando a ser des locado. Seu conteúdo é deslocado para a esquerda por um valor entre O e 3 1. inclusive, dept!wJendo do valor dos 5 bi ts menos signilicativtls da paluVT:l. que está no topo da pil ha (os outros 27 da palavrJ do topo ..:io ignomdos). Zeros sào deslocados pam a direita por tantos bits quanto for o inteiro de dl!slocamento. O o flcode par.! ISHL é 120 (Ox78). :.t.
a.
Qual ê:1 opernç:jo ari tmé tica equivalente ao dcsluearncllItl p.1.ra a csqucrd:l por uma contagem de ::!:?
h.
Estcm.la
II
mieroc6digo para incluir essa instnlçilo corno urna pane da IJVM.
15. \ instmç:io JV'vI INVOKEVtRTUAL pn..'Cisa '>;IOcr quanto-.
p:.lr:.imt:lm~
d a tem. Por 4U~'!
16. Implemente a instruçãll JVM OLOAD para a Mie-l. Ela tem um índice de I b)'te e passa a variável Ille:} ! que es!ti llessOl posi'f:iu parJ . 1 pilha. Em:!\) d a lambem passa para a pilha a próxi ma palavra mai .. alta. 17. Desenhe uma m.íquina de e~l:Ido liniw para cuntagem de pontoll no jogo de tênill. As rcgru.~ do t(:nis sITo as ~e g uln te s. Para ganhar. você pn:dsa de um mínimo de quatro pontos e de ve lcr no mfnimo dois pt1ntos a mais do 4ue 'cu adversãrio. Cmllecc com um estadO (O. O) que indica que nenhum ponlO fOI marcado alllda. Depuis ,ldicitllle um e~ t ad o ( I. O). que , ignilica que A marcou um ponto. Denmnine A II arco de to. O) a ( I, O). Agora adicione um estado (O. 1) que indica que IJ marcou um ponto e denomine 8 o arco de (O. O). Conti nue adicionandn e~lados e arcos :lté que todos os cstados possÍ\'cis tenham Sido incl uídos. 18. Rt.'Ctlllsidcrc O prohlema anterior. Há quah;q uer estados que puderiam qualquer jogo'! Ca:.o a rcspusla seja positiva. 4uais são equivalentes"!
~er
agrupados
~c m
mudar o resultadO de
19. Desenhe uma mliquina de estado linllo para previsJo de dc ~v i () que seja mais pcrsbtcnle du que a Figur.J --l.32. Ela deve altcr.!r previstles ~omcnt e após tres previsi'lcs err.uJ61s consecutivas.
... '"
20. O registrador de dc~loc:tmcnto
12 bytcs'! Juslitiquc sua respüSla. 22. No microprogr:lma para a Mie-2. o código para iUcmpeq6 vai parn T qU:lndo Z ~ ajustado para l. CIJn!uoo, o côtligo em T": 11 mesmo qu ~ g0101 . S..:ria possível ir pUrJ g0101 diretamente? Fazer is.~o deixaria a ll1áquina mais r.íplua'! 2 3. Na ~l ic-4, a uniJ:ule de dccoditicação mapcia o apeoU!! JJVM para o fndiec da ROM onde as microoperaçÕt!s correspondentes esmo :tnna:tcnadas. Pareee mais simples apenas omitir o estágio de d~cOllilica~;io c alimenlill' o upcOlle IJVM diretamente no entilciramcnto. Ela poderia usar o opcudc IJVM como um índice para a ROM. do mcsmo modo que fa:l. 11 Mie-I. O que e,."Lá errado nes~ plano ? 24. Um comput:ld()r telll ullla cachc de dois níveis. Suponha que 60% d;L~ referêneius à memória obtêm presença na cachc de primeiro nível, 35% na cache de segundo nfvel. e 5% encontram ausência da eachc. Os tcmlXls de acesso ~ã{) 5 ns. 15 ns c 60 IIS, respcetiv:ullcntc, e os Lempos para a t:ach~ de nível 2 e para a memória come· çam a ser contados no momcnlO em que das sabem que são necessários (por e:\emplo, () acesso :1cachc de nível 2 nem mesmo inicia até ocorrcr uma ausência da caehe de nível I). Qual e o tempo médio de acesso? 25. No li na! da Seção 4.5.1 dissemos que uma alocação de escrita vence somente se houver possibil idade de várias escrims sequenciais para a mesma linha de cache. E o caso de uma escrita seguida por várias leituras - tam· bém n.l0 seria UIll grande vencedor'!
o
26. No primeiro rascunho deste livro, a Figura 4.29 mostrava uma cache associativa de três vias em vel. de uma \:;lche associati va de quatro vias. Um dos revisores teve um ataque de nervos dizendo que isso provoc:uia uma It!rrivel confusão para os estudantes porque três não o;! uma potência de dois c os \:omputadorc.s faze m tudo em binário. Uma vez que ú dieme sempre tem ra/..ão. a tigura li1i alterada p.. ra uma cache associativa de quatro vias. O revisor tinha r.l",;"'io'! Discuta sua respos ta.
27. Um computador com paralelismo de cinco estágios lida com ucsvio~ condicionais protelando durante os lrê~ ciclos seguintes após chegar a um desses desvios. Qual seria o prejuízo causado por essa protelação se 20% de todas as instmçilcs fore m desvios condicionais? Ignore todas condicionais.
a.~
fontes de prmelaçãn e:\ceto os desvios
28. Suponha que um computador faz bUSC;1 alllcci pada de até 20 instruções. Todavia.. na média. quatro dessas ins· truçÕt.:s são desvios condicionais, cada um deles com probubi lidadc de 90% de previsão COrte I U. Q ual é a pro· babilidade de a busea antecipada estar na trilha cena? 29. Suponha que temos de altcmr o projeto uu máquina usada na Tabela 4.11 para Ler 16 registmdores em vez de . 8. Em.lo tmc;JnlOS 16 para usar R8 como seu destino. O que :leontece nos ciclos a partir do ciclo 6'l 30. Dependência.~ normalmcme causam problemas em CPUs com parJlciismo. Há alguma olimização que possa ser rei ta com dependê ncias WAW que poderia realmente melhorar a si tuação'! Q ual '!
31 . Reescreva o interpretador Mic-l mas agora com LV apontando parn a primeira variável local em vez de o pOlllciro dc ligação.
[lD.J"..1
32. Escreva um simulado r para uma eache de mapeamentO Jireto de uma via. Considere o número de entrJ.das e \) tamanho da li nha como parâmetros da simulação. Faça alguns experi mentos c. escreva um relatório sobre u que constatou.
Nível de a rquitetura do conjunto de instrução
" "'
E
ste c;apÍlu]o discute detaLhadamentc o nível da arquitetura do conjunto de instrução (ISA - Instruction SeI Archilcl:lUre). Esse nível está posicionado entre o nível da microarqu ilclura e o nível do sistema operacional. como vimos na Figura l.:! Historic:ll11t!nu:, esse nível fo i desenvolvido ant~ de quaisquer oultOS níveis e. na verdade. originalmente em \) unico nível. Até hoje ni'io é incomum ouvir esse nível ser denominado si mplesmente ':1 arquitetura' de uma m:lquina ou às VC7-CS (incorretamente) cnmo 'linguagem de montagem'. O nível ISA tem um significado especial que o lorna impon:mtc par.! arquitetos de sistema: é a interface entre o software c o hardwan:, Embora seja possível o hardware executar diretamente programas escritos em C. C++. Java ou alguma OUlr.l linguagem de alto nível. não seria uma boa idéia. A vantagem em desemp(:oho da compilação em relação à inlerpreta~ii.o seria perd ida. Além do mais. para ter muita utilidade prática, a rn:liocia dos comput:ldorcs deve ser capaz de t!llecutar programas escritos em várias linguagens. e não apenas em uma. A abordagem adotada essencialmente por todos os projethllas de s i s lcma.~ c! traduzir progrJmas escritos e.!m várias linguagens de alio nível para uma fo rma intermediária comum - o nfvel lSA - e.! eonstmir hardware que possa executar programas de nível ISA diretamente. O nível ISA define a interface e.! ntrc os compihldorcs e o hardware. É a linguagem que ambos têm de e.! nlcndcr. A relação entre os compiladores. o nível ISA c (l hardware são mostrados na FigurJ. 5.1. O ideal é que. ao projetar uma no va máquina. os arquitetos conversem com os escritores de compiladores e também com os engenheiros de hardware parJ. descobrir quais características cada um deles quer no nível ISA. Se os l!SCritorc.... de.! compiladores quiscrem alguma caracteristica que os engenheiros não podem implcme.!ntar de modo e tidcntc em custo (por cxcmplo. uma instrução des vie-e-processc a folha de pagamento), ela nua entra no harowarc. Da mesma fumla. se a tumla do hardware tiver alg uma nova carJ.clerisuca elcgamc quc quer acrescenlar (JXlr exemplo, Ullla memória na qual as palavras cujos cndcrc· .,:os são números primos sejam supt!r-clpidas), mas a turma do software não conse.!guc imaginar como gerar código para usá-la. ela não passar.i da pranchcla. Após muita negociaç:1o e simulação. surgirá uma ISA perfeitamente Olimi7.ada. para as linguagens de programação pretendidas. e ser.1 implcmenluda. Isso é a teoria. Agora vamos à triste realidade. Quando surge uma nov;l máquina. a pnmeira pergunta que todos os cl ientes pOlcnciais fai'.cm é: "Ela IS compmívcl com sua anlcct.."'Ssora"f'. A segunda é: "'Ela pode ClCeCUlar meu sistema operadonal amigor. A terceira é: "Ela cxccular:í lodos ()s meus programas de aplicação c:dMenleS scm moJilh:aç:1o·?". Sc qualquer uma
I
Progmma em
FORTRAN90
I
Programa em FORTR"N 90 ~-,.,.
fI.ara 5.1 O nível (SA é a ffirerface entre os compiladores e o hardware.
prognuM 1$"
progmmaemC compiIaoo para ptogmlT\lllSA
IL______'_'~,"-SA-------'I----------~:~r;-----------Progra/na 15.4. executado por rmcrOJlf09"'I"IIII ou hardware
195
··•• a
~
,
~
E c
"• ~
• •
~
o ~ ~
•
"c
•o o
dessas respo~lus for 'oão', us projeli sl;J.~ Icr:1u muitas explicaçõcs u dar. É rJ.ru que os clientes se disponham ajogur fol"'.! tooos os seus programas antigos o.: começar tudo de novo. Essa ~ltlludc pressiona muito os arquitetos de cumput..'J.uorcs u manter a mesma ISA enlre modelos, ou ao menos !Orná-lu compalÍ\'cl cum os l!I\xlchJS anteriores. Cmll isso 4ucrcmos dizer que a nova m~quina deve ser capaz de executar progr.unas antigos .~ cm alteração. Contudo, é totalmente aceitável que a nO"ll máquina tenha
novas inSlruç(lcs e outras camctcrlslÍt.:as que s6 possam ser exploradas por novo software. Em Itmnos da Figur..l 5.1, contanto que ()~ projetistas gar.mt:lnl que a ISA seja compatível com os modelos anteriores. dcs têm looa a liberdade para faze r () que qlli~rcm com () hanlwan.: porque. na verdade, quase ninguém se impuna muito ~om o hardware real (ou nem mesmo sabe o que ele faz). Eles podem passar de um projeto micropmgmmUt.lo para execuçâo direta. (JU adicionar paraldismo ou facilhJades s upercli~;lJarc s ou qualquer outra ~oisa que queiram. contanto que mantenham a compatibilidade com a ISA anterior. A meta é garanlir que velhos programas sejam ellecutado:; na nova mátpJina. Então. O dc-salio se toma consto!ir máq uinas mt:!hores sujeitas às limitaçõc..'i da compatibilidade. O que acabamos de dizer não tem a intenção de dM a entender que o projeto da ISA não impnna. Uma boa I$A tem ~ i gnitieativas vantagens em relação a uma mim. em panicuJar quando se trata de comparar capacidade computacional bmta com custo. Se quanto ao lIl<Jis os projetos forem t:quivah.:ntc~. as ISAs podcm ser responsáveis por uma diferença de até 15% em desc:ml}Cnho. O que 'lucremos deillal" claro é que as forças do mercado diticullam (mas não impossibi1iw.m) descarta r uma ISA antiga e introduzir uma nova. Não obstante, de vez em quando surgc uma nova ISA de uso geral e. em mere
5.1
Visão geral do nível ISA
Vamos começar nosso estudo do nível ISA perguntando o que cle é. Essa pergunta pode parecer simples. mas é muis complicada do que poderfamos imaginar ~ pri mdr.! vista. Na scç:l0 seguinte abordaremos algumas dessas questõcs. Em seguida vamos clIam inar modelos de memória. rcgislr.ldorcs e instruções.
5.1.1 Propriedades do nível ISA Em princípio. o nível ISA é defi nido pelo modo como a máquina se apresenta u um program<Jdor de linguagem de mJ:quina. Uma vez que llIais ning.uém (normal) faz muilu progr..tmllç:io em linguagem de Ill
No caso da SPARC, a idéi:1 é pcnnitir que vários fab ricantes de chips produunl chips SPARC idênticos. em lermos funcionais, c diferem..:s apenas em d~-.cmpcnho c preço. P:lr.J essa idéia d:tr ceno. os fabricamcs de chips têm de saber o que um chip SPA RC deve f.1l.cr (IIQ nívcl ISA). Por conseguinte. o documento de dcliniçl10 informa
l[uul é o mtxlclu da memória. llua.is registradores estão presentes. o que :.lS instruç<1es fazem c assim por diante. mas nuo qual é o aspecto Ja microurquilclura. E.~scs documentos. de dctinição contêm sccrõcs nornmlívas. que impõem requisitos, c st."Çõ~ infonnativas. cuja intenção é ajudar o leitor. mas que mio s:io parte da delinição fonnal. As seções normativas usam constantemente palavr.1S como del't!. nào /JUlle c dtweriu par.! requerer. proibir e sugerir ,c,,1>cctos da arquitclur.l. respectivamcnte. Por exemplo. uma ~nte m;a como
Execufar um opcode reservauo deverd causar unw cxccçl1o.
.....
Ol
•
~
o
informa que. se um programa executar um opcodt: que n,io é definido, de deve causar uma. cxceção t: nuo pode ser apt:nas ignor:u.Jo. Uma abordagem alternativa. poderia ser deixar essa questão em abeno. quando então a sentcnça poderia ser
c
o
'" o u
o
O cJciW du exeruçdo de um vpuN./e reservado t' deflntdo na Implemenwçdu.
~
Isso significa que o escritor do compilador não pode comar com qualquer componumento pankular, o que dá
•
a diferentes implementadores a liberdade de eocol her opçõcs direre ntes. A maioria d:l.s espcd ficalfõcs de arqu itetura é acompanhada de conjuntos de testes para verificar se uma implementação que se utinna compatível com a especificação realmente o é. O motivo por que a V9 SPARC tem um documento que delinc ~u nível ISA é daro: todos os chips V9 SPARC cxecutar.:io o mesmo software. Nao há nenhum cJocuml:nto fonnal que defina o nível [SA do PcntiulIl 4 porque a Intel não quer abrir a guarda pum que. outros fabrica nte.'I produí'.am ehips Pl:ntiurn 4. Na verdade, a Intel já apclou para a justiça pura tentar impedir que outros fabricantes clonasscm seus chips. mas perdeu a causa. Uma outra propriedade importante do nível ISA é que na maioria das milquinas há no mínimo dois mtxlos. O modo núclctl (b rn ef) deve executar o sistema operacional c permite que ttxlas as instruçocs sejam exccutadas. O nmdo usuário devc cxccutar progn.Lma.~ de aplicação c não permite que certas instruçõcs sensfveis. como as que manipulam a eaehc diretamente, sejam c.'Cceutadas. Nestc capítulo focalizaremos primordialmente instruçõcs e propricdades do modo usuário.
5.1.2 Modelos de memória
,,-
Palavra de 8 bytes em uma memória little endian. [a) Alinhada. Ibl Não alinhada. Atgumas méqmMs requerem que palavras na memóna sejam alinhadas.
._--
'5
"
"I
12 / 11 110 ! 9 1
Endereço
Endereço
-
8by1es
2'
• "• O
19 1 18 1 17 1 16
"
1<1 I '3 112
I
,
Palavra de a bytes
,. "• O
PoloVrl!. de a bVlO$ MO alInhada no endereça /2
ol1nhoda no endereço 8 {o)
•> Z
~
Todos os computadores dividem a memória em células quc têm endereços consecutivos. O tnlll:lOho de célula mais comum no momento t.! 8 biL~, mas células de I bit a 60 bits já fomm usadas no pUl!isado (veja a Tabela 2.1). Uma célula de 8 bits é de nominada. bytc. A iJ.Z;JO para usar byles dc 8 bits é quc os caracteres ASCII têm 7 bilS. port:mlo. unl camclerc ASCII mais um bil de paridndc cabem cm um byte. Sc o UN ICODE vicr a dominar o setor no futuro, então os futuros computadores poderão ser baseados em unidaJcs de 16 bits com numeiJ.çao sucessiV'.1. AtinaI. 2" é um número ainda. mais interessante do que 2 3 , uma vez que 4 é uma potência de 2 e 3 não é. Em gemi os byh:S são agrupados em palavrJ.s de 4 bytcs (32 bits) ou 8 byles (64 bits) com instruçõcs disponívds para manipular palavi.lS inteiras. Muitas arquitcl ura." req uerem que as palavras sejam alinhadas em suas feon leirus naturais: assim. por exemplo. uma palavrJ. de 4 bytes pode começar no endereço O. 4. R etc .• mus nào no endereço 1 ou 2. De modo semelhantc. uma póllavr.l de 8 bytes pode começar no endereço O. 8 ou 16. mas não no endereço 4 ou fi. O ali nhamento de palavras de 8 hytes c! i1uslrado na Figura 5.2. O ali nhamento costuma ser exigido porque memórias funciona m com mais ericicncia desse modo. O Pentium 4. por exemplo. que busca 8 b)'tcs por vez na memória, usa c.ndereços tTsieos de 36 biL'I. mas tem SOIncnle 33 bits de cndere'r"t). cumu moSlra a Figur.l 3.-0. Assim. o Pcntium "' não poderia fa:tc r uma referência não alinhada à melTllíria nem que quisesse. porque os.1 hiL~ dc ordem baixa não eSlào especificados e:'lpl icitamentc. Eles são sempre Os. o que obriga lodos IIS endereifos de memória a ser múltiplos de 8 byles. Contudo. c.~se relluisilO de :lli n hamclllO às vezes causa problemas. O PenllUm 4 permite quc pnlgiJ.rnas ISA referenciem palavr.l" que começam em lIualqucr enderec.;u. uma propriedade que remonta ao MUKR. que linha um barr:.uncmo de dados de 1 byte dI: largur:1 - e. assi m. nenhum requlsilo de alinhamento de refcrêncius à mcmória em fron teiras de 8 hytcs. Se um pnl~r:una Pentium 4 ler uma palavrJ.. de 4 hytes no endereço 7. o hardware Icm de fazer uma referência à memória pam obter os hytcs de () a 7 e uma segunda referência?l memória parJ. oblt:r os bytes
nv..,. 5.2
<
{b)
•
U
ao
-'" •o•
-
~
", ~
8
o u
• • • ,
~
~
•
~
o ~ ~
• "c •
~
o
de 8:1 15. Entiio n CPU tem úe cxtr.lir os 4
bylc~
TCquisitados dos 16 bytcs lidos da mcmôria e mont:i.-Ios lia ordem
correia par.l rornlar ullla paJavr:J de 4 bytcs. Ter
:l
capacidade de ler palav!"",s em endereços arbitr.írios requer 16gica extra no chip. () que o lurna maior e
mais caro. Os engenheiros projctist.:LS ador..triam JiVr'.lT-SC dda c simplesmente exigir que tooOS os pro~rnmas fi/.es_ sem rer'crênda~ à memória aJinh:.b.ms por palavra. O problcma é que, sempre que os cngcnhdros di".t!ffi "E quem se unpom com executar progmrnas 80RX antigos c bolorentos que referendam a memória de modo crr..lut)'!", o pessoal de ffiitrkcli ng tem uma respos ta sucinla: "Nossos clientes". A maioria das máquina:l tem um lÍnico C~p:l1t1J de endereço linear no nlvel ISA. quI.: ~c estende cln endereço O ate algum moi;;:imu. fl'l!qücntcmenh! 2'2 bytcs ou 21>4 byles. Contudo. algum:ls maquinas têm espa<;os de endereços separ.ldos p.:lr.l in~lmçÕl:" e dados. de modo qlle uma husca de inslIUç:io no cnden.'Ço 8 vai para um espaço de ende_ l"CÇo difercnle do que uma hUSl.:a de dados no endereço 8. Esse esquema é mais complexo do que tcr um único esp:.çn de endereço. mas tem duas v:mt
5.1.3 Registradores Todo.. {)S computooore:-. têm alguns rcgislr.ldores visíveis no nivd ISA . Eles estão lá pat:1 controlar a execu'ião do programa. reler I\!l>ultado:-. tcmporários e par..t outr..t.'\ linalidades. Em geral. os rcglstr.ldores visíveis no nível de miao:.Jf4ullI:tur..t. como TOS e MAA na Figura 4.1. n:lu ~:10 vislvcis no tIIvellSA. ConlLldo. alguns deles. como o ,:oLUador Jc prugr:u ua e \1 ptlllL':JrlJ dc pill~. sau V iM~Cl~ em J.mbo:. lh Ilí\cil>. Por outro ladll. rcgl:.tradorcl> vi:.l.... cis no nível ISA '\ão ..empre visíveis 110 nível da micrnarquitelura. já que ultados intemledi:irins de cálculus. Sua funçáo prinCipal de C PU ~ fer ainda mais. Em algumas máquinas. os rcgislf'.ldorcs de uso gerJI s:10 completamente simétricos e intercambiáveIS. Se os rcgislrJdorcs fore m todos cquivalentes. um compilador pode usar AI para retcr um rcSUll
. Mesmo qua,?do os regislrJdorts dt: uso geral são eo mp l ela~e nte intercambiáveis. é comum que o sistema oper..IClOnal ou ~ompll:ldorcs adotem ~o nvençôcs "'lbrc como e ks sao usados. Por e:'templo. alguns registradores p€xJem conter paràmctros para procedimentos chamõ.ldos e outros podem ~c r usados como registradores tr.l.I1si t6rios. Se um compilador colocar uma variável local impon:lIIte em Al e depois chamar um procedimento de biblioteca que pensa qUI.: A1 é um registrador transitório disponível pura e le. quando o procedimento de biblioteca retornar. Al poderá conter lixo. Se houve r convenções gerai s c ab rangentes sobre como os registradores devem ser usaúos. aconselhamos os compiladores e programadores de linguagem de montagem a adOH'j-[as parJ evitar problemas. Além dos regislr:ldorcs de nível ISA visíveis para progrJm;ls us u:lrios. há sempre uma quantidade i>ubst:u1dal de rcgistr.ldon:s de uso especial disponíveis somente em modo núcleo. Esses registradores cOntrolam as vmas caches. mem6ria, dispositivos de EIS t: outras carnctenstic:.s de hardware da máquina. Eh:s s:i o usados somente pelo siSh!ma operacional . pon:U1to compiladores e usuários não têm úe to mnr conhecimento deles. Um rcgislr.u.lor de controle. que é rugo \..'omo um hibriúo de núcleo/usuário. é o rt.-gL-ilmdur dI! nu~s ou PSW ( Pru~r.tm Status WClrd - palavra de cst:ldo do programa). Esse registrador contém v6.rios biL~ diversos de que :J CPU precisa. Os bits mais imponantc.s são os ctKligos de condição. Esses bits são ajustados em todo cido de ULA e retl etem o estado tio resultado da opcr.J.çào mais recente. Entre os bits de condiçao tipieos \!stãn; NZVCAP-
Marcado quando Marcado quando Marcado quando Mart;ldo quando Marcado quando Marcado quando
-'"'" '.e o
~
•c
o resultado fo i Neg:.uivo. o resultado fo i Zero. o res ultado excedeu a cll pncidade da ULA (oVcrllow) o resul tado causou um voi-um do bit da \!xttcma esquerda. houve um vai-um do bit 3 (vai· um auxiliar) o resu ltado teve paridade par.
Os ctXJigos de condição são importantes porque as instruções de comparação e desvio condicional _ isto é. instruções de salto condicional - os usam. Por exemplo. a instrução CMP nonnahnente subtrJ; dois opcrJndos e aj usta os códigos de condição com base na diferença. Se os oper.llldos forem iguais, então a diferença scr;i !.cru e O bi t de código de condiçào Z no rcgisl(;Iúor PSW será marcudo. Uma instrução BEQ (branch equal) subscqUcme te."la o bit Z e desvia se de estiver marcado. A PSW contém mais do que apcna... códigos de condição. mas o conteúdo t()(al varia de máquina para m6.quina. Campos adicionais típicos são modo da máquina (por exemplo. usuário ou nüc!eo). bit de rJ.Slreamento ( usados parJ depuração), nível de prioridaúc da CPU e estado de habilitação de interru pção. Mui\.as VC7.es a P$W pode ser lida em modo usuúrio, mas alguns dos campos (xxiem ser escritos somente em modo núcleo (por cxemplo. o bit de modo usuário/núcleo).
5.1.4 Instruções A principal c ar.lcteristic:l. do nfvel ISA' é seu conjunto de instruçõcs de m6.quin:l. que Controlam o que li máquina pode fazer. Há sempre instruçõcs lOAD c STOAE (de urna fo rma ou de oUlra) para mover d;ldo.~ entre a memória e regist radores c instruções MOVE para copiar dados entre os regis tradores. Inslruçôes aritmét i ca.~ estão sempre presentes. assim com o instruções bookanas e instruções para comparar ilens de dados c desviar con forme os res ultados. Já vimos algumas instruçõcs ISA lfpicas (veja a Tabda 4 .2) e estudaremos muitas mais neste capítulo.
5.1.5 Visão geral do nível ISA do Pentium 4 Neste capítu lo discutiremos três ISAs mui to di ferentes: a IA-32 da Inle l, incorporada no Pentium 4; a arquitcJ lurJ SPARC Ver:;üo 9 implementada nos processudorcs UILraSPARC. e a H05 1. i\ intenç3u não é dar uma descriçào e:'tau~tiva úe quaisquer das ISAs. mas de monstrar a... pccIOS illll>Ortantt:i> de urna ISA e llJOSlrJI COII)O esses a... pt..'C1OS poúem variar de uma ISA pam l1\l tr:J.. Vamos cnmeçar com n Pel1tiurn 4. O proee~sadur Pcntium 4 evoluiu ptJr muitas gcmçUci>. e ~ua linhagcm rode ~e r rJstrcada :Jté alguns Jos mais .lnllgos nucmprocessac.lorcs (!ue já forJIll consfnlfdo... '.'011\0 di.~C Ulimos no Capítulo I. Embor.l a ISA b;íMca manlenha IOla l ~ upon e paruor.ts do 8U80. um I)(UCCS....wor de 8 bits popular na década de 1970. O W!!O, por sua vez. :.ofreu fone innuência da... rc.... rilfi;cs de cmnpalibilidade com () processaúor 800lt mais anttgo ainua. que erJ. ha.~ea do no 4004. um chip de 4 bits IIsado na é[lOCa em que os dinossauros vagavam pela Tcrra. Do ponto de Vista de software. o 8086 e t) 8088 er.un máq uinas normnis de Ib bi15. cmbora o 8088 tivesse barmmenlo de dados de 8 bits. O sucessor dele.~. o 80286, também era umu máq uina de 16 hits. S u ~ princIpal v.mlagem cra um e~ paço úe cnúercço maior. emborJ poucos pmgrJ.Jna.~ o usassem p€)rque dc cunslslia em 16.3H4 SCI::mcnws de M Kll em vez de uma memória linear de 21t1 bytes. O 803H6 foi li pri meira máq uina de 32 bil.'ô da família ln("el. Tnda.~ a.~ máquinas ~ ubscqUcnte... - 80486. PcnlÍurn. PenlÍum Pro. PcntLum 11 . Pcntium m . Pcntium ~. Celemn. Xcon. Pent ium M. Cenuino ClC. _ lêm, cm c.sscncia. a mesma arquileturJ de .12 bits do 80386. dcnomin:lda IA-32. portanto é t!ssa ~rq u i l et u m que tix;al i"':lrc 1l10 ~ uq ui . A únicu altcrJçàu impuna nte na arq uitcturJ desde t) 8038b foi a inl roJução das instruções MM X. SS E e SSE2 em versões. pustcriurcs da série Penlium. EsS1JS instruçôes têm alto gr.J.u de espcdalii'.açjo e IOr:un proJctadas par.!. mclhorJr o dese mpenhu cm aplicaçôes multimídia.
•>
'"
~
•
u
o o
N
•o•" ~
,•
~
eo
"• ~
• •, ,
~
•
~
o ~ ~
• N
o
•
~
o"
o Pcntium 4 tcm Ires modos de opcrJ.,:io. duis dos q uaIS () razclII agi r corno um SQ8K. No modo real. todas as caraclcríslIcas que for..IIn acrcsccnl:was desdI! () SOX::! são desligadas c o Pl!ntium 4 se comporta. como um simples 8083. Se algum programa lizcr algo emulo, l maquina inteira falha. Se a Inte l tivesse projcl.:IIJO seres humanos, ela tcnti inserido um bit que os faria voltar ao modo gorila - grande pane do cérebro dcs:ltivuu.a, mio falaria. donniria cm árvores. comeria muitas bananas I:lc. Um degrau aci ma d O ~OK6 modu virtual. que possibilita executar antigos progmmas 8088 de moJo protegido. Nesse mooo. um sistema operacional real está nu conlrolc de tcxla a máquina. P:.ra cxccuLlIr um programa 8088 antigo. I) sistema opt:mcional cria um ambiente isulado cspct:ial Ljue age t:OIllO um SOBR. e.\ceto que. se seu progra, ma fal har. o sistema opcr...u.;jonal é avisado, em vez ue a máquina falhar. Quan uOlltn usuá rio do Windows inicia uma jancl:J. MS-DOS, o programa ali executado ~ iniciado em modo vinual SOS6 pal""J proteger o próprio Windows contra o mau comportamento ue programas MS-DOS. O modo final é Il modo protegido. no qual o Pentium -I- realmente age como um Pentium 4 em vez de um 8088 mui to caro. H :i quatro níveis de privilégio dispo níveis. controlados por bits fiól PSW. O nível Ocorrcspondc ao modo nudeo e m OUlroS computadores e tem acesso to tal à máq uina. E uSóldo pelo sistema operacional. O nível 3 é para programas uSUlírios. Ele bloqueia o acessO a cenas instruções crÍl.iC:Ls c controla regis tradores para impedir que um progrJma usuário trJpacciro f:uj:1 a rnáquillil inteira ralhar. Os níveb I c :2 s;io rar.uneme usados. O Penti um 4 tem um eSfaço de endereço enon ne. com memória dividida em 16.384 segmentos, cada um indo du endereço {) ao endereço 23 - - I. Contudo, a rnaioriu dos ~ i ste m;L~ operacionais (incl uindo o UNlX e IOdas as versõcs do Windows) suport
,-
Bit
"
_.•
AH
AX
BH
BX
0..
CH OH
R gura 5.:1
-
CX OX
AL
.-
EAX
BL
Eax
CL
ECX
DL
EoX
1-----------------11 :~~
' -_ _ _ _ _ _ _ _ _ _ _ _ _..J. ESP
Registradores primârios do ?entium 4.
~-----~CS
f-------j SS ~-----~OS
f-------j ES I--------I's
'--_ _ _ _ _..J GS
'--___________-11
EIP
L._ __
_____________ ~E'~GS
o próximo grupo lle rcgi~ lradore ~. CS at ~ GS. são regi.~lradore~ de ~eg me I1 10 . "té certo POII\(J. ele s silo Irilobiles e lelrÔnieos. r6~seis :lIIl ig05 que reslaram úe uma época em que o 808R le nta"a endereçar 2.!.1I by te~ de memória usando c ndcrcl,'os de 16 bits. Basta d i7.er que. quando o PCl1liUIll 4 é aj ustado para usar um unico l'~ pa· ~o de endereçu linear de 32 bi ts. eles podem ser ignorados !>C IIl proble ma :llgum. O segui nte é u EIP. (Iue é O COII · todor de programa (Extended Inst ruetio n Pointer - ponteiro de instruçào estendido). Por lim . chcga mos ao EFLAGS. (Iue é u PSW.
-
O
N
5.1.6 Visã o g e ral do nivellSA da UltraSPARC 1Il ,\ ;Irquitetura SP"RC foi aprescntada llela primeiro vez e m 1987 pela SU I1 Microsyslems. F.~ ~ 3 urqu itet unl foi da ~ primeiras :1 ser eumcrcinlizlIda com (l rótulo dc arquitcium RISC. Era baseada nas I)('squi ~a~ realizada~ em Aerkeley na déç3da de 1980 (Pallerson, 1985: Pallerson e Séquin, 1982). A S I'ARC origi nal em uma nrquilCwra de ~ 2 bit~. mas;t UltraSPARC 111 é lima máquim.l de 64 bits. basctll.hlna Versão 9 da nrquiteltlrH. que l: ri que de~c re Yc rcn lO~ rle~tc capítulo. Pam m;\IIter 11 cQeI'encia com o re~lo do Iiwo.lIqui \podl.! a cc~~:lr. 1'Illllos "mblcmus lI1í1 i~ sé rio~ encontrados I>or anjuitclurllli bem-sucedidas é que sun ~ ISAs limitavam 11 qunntidade de memória endercçá\·eI. Na ciência da l.'OlIlpUI:u;ão. o único erro que não IXKlc ser contornado é n:lu ter hil~ ~lI licie lltc~. Um d i.. n u~~m nel\ls 1ll1S pcrguntarihJ CO IlItI . !lntignmente. os computa(lores conseguiam fa7er algo lendu ~llmcTlIC' l' nd e rl'I,'~ de 32 hil!; C al )C1I 3~ 4 C U de memó riu real. qu;mdo um joguinho médio precisa de 8 C U !l1Í para ~er init'1lulo. A ISA SPARC é Iimp
lnllel" 5.1 Registradores gelais da Ultra SPARC ti!
Registrador
Função
Nome eltemaUvo
RO
GO
Travados em O. Armazenamentos nele lão Ignorados
RI - R7
Gl - 07
Contém varisYels globais
RO - RI3
00- 05
Contém parâmetros para o procedlmento que está .sendo chamado
HI4
SP
Ponteiro da pllha
RIS
07
Regllftrador transitório
RI6 - R23
LO - L7
Contém varlsyeis locais para o prote{]imemo coucnte
R24 - R29
10-15
Contém parAmeuo8 que chegam
R30
t'P
Ponteiro para a base do quadro de pilha corrente
1131
17
Contém endereço de relorno para o procedimento corrente
• {I IIUlur w refere 11 um 1,s~r llrtu
IN rJu I{ '1". )
~111\,,.,lo
lIe e.~tJol:Ci~li'JI\·ftu eUI mie'
lIIan:in;~.
Ilrll.'T'C IHk, IIil.t'r que t'~
nK'~l!r_
do
•
~
o
c
"c o
'-' o ~
•" •"
•>
'"
•
u
N
o
N
•• Q
~
•, ~
8 Q
U
• • ,•
~
~
·
;
•
~
Q ~ ~
• C • N
· ~
O
de garantir que o programa acesse os n:gistradoteS corrct:.unenle .: efetue nclc... o tipo correto de aritmética. Por e.'(cmplo, ê muito fácil carregar numeros de pouto Outuallle nos registradores gcrJis c cmão efetuar adição de inteiros nele~ . uma operação que proc..lul.ir.i tOlal c absoluto absurdo. mas que a CPU re:llizará alegremente Se assim for instruída. As variáveis globais são usadas p;:trJ reter constantes. variáveis e ponteiros que ~ão nccc,,,sários em todos os procedimentos. embol"'J po~sam ser annazcnôldas c n:c:lITcgadas em cnlrJdas e saídas de procedimento se for preci. so. Os registradores Ix c Ox são usados par.! passar par:lmclros a procedimentos a fim de evitar referências 11 memó. ria. Mais adi:U1lc exp licun.:mos comu isso funciona. Três rcgislr:ldorcs dedicados são u satll)~ para tinalidades cspt!óais. Os registradores FP c SP deli mitam u quadro correntt:. O primeiro aponta para a ba.<;c do quadro corrente e é usado para elldere~ar variáveis locais. exatamente do mesmo modo que o LV na Figura 4.9. O último indica o topo da pilha eorrente e flu tua à medida que pulaVr.lS são passadas para a pilha c dela retiradas. Em comparação. o FP só muda em chamadas c retornos de procedimento. O terceiro registrador de uso especial é o R31 . É usado por charnôldas de procedimento pam reter o endereço de reto m o. Na verdade. a Ultr.lS I'A RC III tem mais do que 32 registradores de uso geral. crnborJ somente 32 sejam visf· veis parJ o pmgmma a qualq uer instante. E.,~a curacteristica. conhí..'Cida corno junela... de registrador. serve para o suporte eliciellle de chamadas de procedimento e é ilustrada na Figur:l 5.4. A idéia básica é emular uma pi lha, emborOl usando os rcgistmdorcs. Isto é. na verdade h:i vdrios conjuntos de regis tradores. assi m como hd vários quadros cm uma pilha. EX:ltos 32 rcgisLr:ldorcs gcr:Lis são visfvcis a qualquer instante. O rcgis trJdor CWP (Currerlt Window Pointer - ponteiro ..Ia janela corrente) LTlonittlra qual conj unto de registradores está correntemente em uso. A instrução de chamada de proccdimento oculta o antigo conjul1to de registradoI'C.S e providencia um novo con· j unto par:l uso do procec..limento chamado, dcc relllcnlando CWP. Contudo. alguns reglstrJdores s:io tr.msporullos do procedi mento que está. chamando par::l o procedimento chamado. um mudo diciente de passar par5melros entre proc...'t!imentos. Essa têcnic3 fUllc iona pela rcnollleaç:1o de alguns lias registrallores: após a chamada de procellimento. os antigos registr"Jdorcs de saída. AS a R IS. ainda 1!."1110 visíveis. ma.~ agora são os regislrJrlorcs de enlrJda. A24 a R31. Todavia, os oitos rcgistrJdorcs globais nao mudam. isto é. sào scmpre o mesmo conjumo de registradores. Diferente da Illc món:l, que é quase infinita - [lO menos no que diz respei to à pilh[l - , quando procedimen. tos estiío ani nhados muito profundamente. a máquina esgolUrá as janelas de registrador que tem pam usar. Nesse ponto o conjunto mais antigo é Lransponado para a memória para lihcr.tr um novo conjunto. De modo semelhante, após muitos retornos de procedimento, um conjunto de regis tradores pode ter de ser buscado na mem6ria. No todo. essa complex.idade é um grande abom.'cimellto c provavelmente não vale o lr.lbalho que dá. Só ajuda quando as chamadas n:lO c... tão prorundamente aninhadas. AO "' 00 ;;----,;0----,
AO 00
A1
RI
ai
A7
G7
I
Global I
A70G~7----~~~~'~7-------"
CWP . 8 A8 ~~-------1-00 A13 AI.
ngura 5..4 Operação das janelas do 1'Cg1str<1dor d<1 UltraSPARC m .
05 $P
~01/,-~" " ,- ,-o·-"c·-~ ",-~ ,-~:- - r. - ~í-':": "c," -: -., "': " ',q C,7 ~, ,-",c , ,-: -I0 CWP .. 7
A8
___
saindo O
'"A" A" A18
•
que oot;1 saindo
O$Parâmo!(O de
t!e Ponleiro de pilha
•
SobrepOSIÇãoA29 15 Parâmetro de que Miá A30 FP PonteIro de q'Jadro
entrando 5
'-;:-________-+ ___________ ~?~t"I7-=-=~-="'="='''~'''''-------___I
1',,,~7~T.~_=~t!rio~·
~
""'LO
-
Pane ÓI "'nela anterior
r:NP
R2' ~'_:__,_O-"",7'----_::----_1 nas Cflarnllaas nesta uireção R2' 10 Paràmetro de que &5Lâ ,
em~O
Parâmetro de qlJD está
Paria o:iII janela all1eOOr
A20 t5 Itlllrando5
A:lO FP f'rontoiro ~ ql,lQdro
A"
17 Efldereço de r81orno
{. )
~ -
{' I
, A Ultr;J$ P,\RC 111 também tem 32 rcgislroldores de ponto nutualllc que pOOcrn comer valores de 32 bits (pre_ cisão unica) OLl de 64 bil'> (pn..-cisão dupla). Aind:l é possfvt:l usar pares desses regifilroK.lores parn suponar valores de 128 bits (precisão quádrupla). A arquitetura UltmSPARC II I é urna a rq uitchlr.J carregue/armazene. J~!O é, as únicas UpCI':II';:ÕCS que aCcss:lm rnt:môria J ircWlI1cnlc são insuuçilcs LOAD eSTORE. instruçõcs par..l mover d:ulos cmrc os rcgislnlUurcs c a meml}.. ria. ToJos os opcr.lI1dos para instruçõcs :Iriunéticas c lógicas devem vir de registradores, ou ser fomcddos pda im.truçJo - c não pda memória - , c toJos os resultad()s devem ser salvos em um registrador - c não na mcmóna.
5.1.7 Visão geral do n ível ISA do 8051 NosM'l terceiro exemplo ~ o 8051. Diferente do Pc ntium 4 - que é pri mariamente usado em máquinas de proplísito gemI c conj unlo~ de servidores - I: da UltraSPARC !li - que ~ primariamentc usada I:m grandes configura(fiks de ~rvidorcs. em espcciul servidores lllultiprocessadores - . o 805 1 é usado em sistemas e mbutido~. como sinais de lcifego e r.idios-rd6gios. par.! controlar o dispositivo e gerenciar botõcs ou tc..-elas. luzes e outr.lS panes da interface de usuáriu. Sua história ê simples e ohjeliva. Quando a Intcl lal1\iOU :l CPU !-I080. de um ..ó chip. foi um sucesso insfan üinco. (-';tbricantes de todos os tipos a embutir.un em seus pnxlUIOS e então perguntamm à Intel se ela poderia pnxJuú r um chip único que contivesse mio somente a CPU. mas também a memória e controladores de dispositivos de EiS para red ul.ir a quantidàdc de chi ps. A Imel aceitou e lançou o 804R. que logo se tomou o 805 I. A despeito de ~ ua idade avan(f:1da. ou talvez por causa dda. ainda agor.l t:le é amplamente usado, em gmndc parte porque é muito barato e e m si.~ temas embutidos Il pn.",SC mode· lo ê usado por qualqucr um dos chips. o progmma é gravado na ROM na fábrica e nunca é alter..ldo pelo usuário. No outm extremo. ~ possível ter um sistema 8051 com uma memória de progmma cxterna de 64 KB ROM \)u EPROM e aJicionais 64 KB de RAM para dados. Também é possível ler lima única RAM extema de 64 KB 4uc contém o programa. bem como os dados. O 8051 ai nda suporta um modelo imennediário. com os 4 KB mais baixos de memória de progr.una e 128 bytes de memória llc dados no chip c o resto forJ. do chip. A voltagem aplicada acenos pinus nt) chip determina qual dessc.~ modelos ~ern usado. O W51 tem um modo incomum dc lidar com reghlJ'adores. A maioria dos programas &051 é ~scrito como se cle tivesse oito registradores. cada um COIll 8 bits de largurJ.. Essa é uma mantim nalurJ.1 de ver a CPU por4ue muiIa.~ instruções contêm um campo de 3 bi ts que espccifka qual rcgistl"'J.dor usar. Os registradores são de nominados de AO até A7. Contudo. há quatro conjuntos d1!sses rcgistr:,dures. embora cm qualquer instante um deles é o conjunto corrente. Um cumpo de 2 bits na PSW delennina qual conjunto de registradores é o corrente. O real pmPlísito de ter v:irios conjunto$ de registradores é habilitar processamento bem rápido dc interru pçõcs. Quando ocom: uma U1lcrrupção. o tr.!tador de interrupção não prccis:l salvar todos os registradores; pode apenas passar para um conj unto diferente. Essa propril.-dade loma o 8051 eapa;,. de tmtar um numt:m muito gmndc dt: intcrru pçõc... por segundo. uma imponante C:lT'.!cterislÍca parJ. um processador pmj1!lado pam sistemas emhutido .. de tcrnJXl real. Uma OUlra propriedade peculiar dos regi~lradorcs do XU51 é 4uc eles estãu prescntcs no c,",paço de memória . O hyfC O do espaço de dados é equivalcntc a AO do conjunto dc registradol"Cs O. Qu:mJll uma instrução altera RO c ent:10 mais tarde lI! hyle U. ela cncullf ra o novo valor de AO ali. De modo scmd hantc, o byte I Je memória I! R1 e J.-"!,tUl 1) de llIelllllna dc li ale 15 o,;urre~VUndem au CU IIJUIUO Jc n::gislr.!dores I 1! :l.'isim por Jiante. até o byle J I. que é R7 no conj unto de registrJ.dores 3. Esse arranjo é mostr.!do na Figura 5.5(a). Diretamente acima dos quatro bancos de regislfauon!'\. nos enden:'ços de mcrrníria de 32 alé 47. eslão 1(-, hytcs de mel1ll;na 4ue suo endereçáveis por hits eomo bils de () .Ité 127. O R051 tem UIl1 conj unto de instnu.;õcs p:lrJ. ajustar. liOCrJl'. cfetuur opcraltõcs AND e O R e testar hi ts específicos cnuereltados por Ulll número na fai xa de O até 1'27. Essa.~ inslru(fõcs operam sobre bytes de 32 até 47. Essas iIlSlru(f6cs são úll.:is porqut: processadores embu< tidos muitas vezcs precisam de variáveis dI! bit p:Jra registrar ou ajustar u estauo de interruptores. luzes c uUlros dispositivos de EiS. E.~sas localil.açties cspcci ais de mem6ria pcmlilc Ol 4ue u M05\ acesse essas variãvcb dc bit ~em buscar byles IIlIt:im ... colocando-m em IX)si"ão e mascamndo bi ts não desejados. Por '\Cr um processador tào pcqu1!no. de ê extremamente hom no gerenciamento de variáveis boolcanas. Além dos qU:ltro conjunLOs de o ito rcgislmdorcs. n M051 tem uma pequena quantidade de rcgi~ t rndores de uso espcl.: ial. dos quais os mais importantes cst:10 ilustrados na Figu m 5.5(bl . A PSW eontém. da esq ucrda para a direila. o hit v:li-um. () hit vai· um au)!:i liar. () conjunto de registradores a usar, {) bit de excesso c o bit dI.: paridade. Tudos csses. e;'tcclU li conjunto de registradores. ~ ;"i{) ajustados como resultado de opc raçOe~ aritmcticas. Os cam pu~ com li nhas di:Jgo nais eru t.adas não são dctinidos.
,........................ •
M O N
o ~
,
~
I I
, I I
,
"
•c
•
~
o c
,
c o
u
o ~
,• ~ , a "'• ~
;; >
z
~
o
, ~
•
u
•...... ,' ' 1" "" """ II t t' , •.- - -- -:--- - -- - - - - - - -- _. ._ . .___ _ _ _ _-
I'ri i 11
,
r' ,I
.,.o N
•"o
Memóna ele "."..,...
~
,• ~
5
naU,. 5.5
o u
lal Organização de
• •
memória em c.hlp para 08051. (b) Principais ~reg~,m.~'~o~,e~,~8~O~S~I~'____
~
-,
~
,•
'---_ _ _ _--' 0
IclAI$®
r------------------'
lEA@E2IESIE1IxlIEOlxo IIE
-
'"
RS
lol$Q(j plpsw
tgggXjE21 Esl Ellxll Ealxe IIP
101 t RlloolROI E1 IT11 EalTO ITCON
~ ~
'•. o
I
&emporizador 1 ITemporlzador o TMQO
~
-"o
aeits - - -
•m
(.)
o
'- - - - - 8 Bits - - (O)
o registrador IE pcnnite 4uc interrupçõcs sejam h
rem ajusl:ulos. Os bits E2. EI e EO habilitam ou dcs.."lbilitam os três canais tcmpori7.3don:s. Com três canais tt:mpo-
•
rizadorcs. até três contadores podem funcionar ao mesmo tcmpo e cada um deles gera uma intcnupção quando cxpira. O bit ES habilita ou desabilica a intenup((ão de callal serial. Os outros dois bits habilitam ou desabilitnm as intcrrup((õcs geradas extt:rnarnente. Quando eles são habilitados, dispositivos externos ligados a dois dos pinos do 8051 podem causar intenupçõcs. Quando são desabilitadus. essas interrupçõcs não podem ocorrer. O registrador IP delennina o nível de prioridade de cada intcrrupção. Há dois níveis. alto e baixo. Se uma inter· rupção de bai xa prioriuadc estiver sendo atcndiilil.. ela pode ser imcTTOmpida por URla de alta priorit..lade, mas não o contr.irio. Quando um bit é marcado ncsse caso. a interrulx;ào correspondente é aj ustada par.l alta prioridade; caso cOlltrário. da ..: de baixa prioridade. O rcgisU"'.ldor TCON controla os Icmpori7.adores O c I. que Slio os principais. Os bits 01 e 00 são ajustados por hardwaI"C quando o tcmpom.ador correspondcnte tT'.lnsbonlnr. Os bits Al e AO são os bits de controle de execução, que pcnnilcm que o progr.lrna ligue c desligue os tempori7.adorcs por software. Os oUlros bits cst.'io relacionados com acionamento na borda ver.f!ls acionamcnto no nível para ambos os tcmporizadores. O registrador lillilJ, TMOD, determi na 11 modo de cada tempor\l.ador (8 bits, 13 bits ou 16 bits), se ele será um temporb:ador verdadeiro ou apenas um contador, c até que ponto os sinais de hardware podem controlar os temporil.aduR::s. Outros reg;str.ldores. não mostrados. estão relacionados com gerenciamento de energia e controle da pon:l serial. Todos os rcgistrJdol1:s especiais mencionados anfcriormente e algu ns outros, incluindo o acumulador e as poriaS de EIS. estão loc:ll i1::JClos na fa ixa de mem<Íria 128 a 255. Eles podem scr acessadus cxatamellte como a memó· ria. do mesmo modo que os AO até A7 podell1 ~er acessados. Por exemplo, () acum u lad or. que ~ IIsado na maioria das instruções aritmétic:ls, está localiz.:lt..Io no endereço 240. Nu 8052. que tem memória real na t:lixa de 128 a 255. os rcgistr:u.lorcs c:'pLociais sc ~obrcpôem ali espaço de memória. Quando !! u:.ado cndcrco,;.ullcnto direto nu 1«152, os rcgistmduI"C" eS!'\!t.:l:uS são c nde rco,;ado ~, ao pa.\5IJ que referênCias mdiretas la mCll1óna (via !>IlIlteiro em UI1l reglstr.ldur) vãu para aRAM rc:.1.
5.2
Tipos de dados
Tudos os cumputadores precisam de dados. Na verdade, hli muitos sistemas de cumputação cuju único propósito é proccssar dados financeiro s. cumerciais. cient(ficos, de engenharia ou outros. Os dados têm de :-;cr represcnlados dc alguma foml:l cspccílka no interior do computador. No nível ISA são uSlldos vários tipos de dados difc· rentes. 4ue scr.to explicados a seguir. Uma qucstão fundamental ê "e há ou niio suportc de hardwán! par.l um tipo particular de dados. Suportc de hardware signiliea que umu ou mais inslnu;;:ilcs esperam dados!!m um fonnuto particular c n usuário não tem liberdade de escolhcr um ft) rmato di t"crente. Pnr exemplo. os cnntadores têm o hábho I>cculiar de escrcver números ncgativos com um sinal de menos à direita do nú mcro em vez ue à csqucrda. LInde os dentistas da eompmaçào o colocam. Suponha que. cm um esforço de impressionar o p;1lr'Jo, o chefe do centro de compul.:l(,:ào de um e.scritório de
contabilidade altcrou todos os mhneros. em toJos os computadores. par!! usar o bit da e:urema direita (em vez do bit da I.!:mcma esquerda) como hit de sinal. Não hfl du vida de que isso causaria urna ótima impressão no patr;}o - porque todos os sllftwarcs dei.~ariam de: fundonar corretamente. O hardware espera um certo formato parJ inteiros e n:1o funcio na adequadamente quando recebe qualquer outra coisa. Agora considere um outro escritório de contabilidade. que acabou de finnar um contr..lto par.J verificar a dívj. d:1 fcucrJ.1 (quanto o govcrno dos E.~tados Unidos deve a todos os cidadãos). Usar aritmélic!! de 32 bits não fundonaria nesse C!lSO. porque m números en...·olvidos são maiores do que 2J2 (cerca dI.! 4 bilhões). Uma soluç:Jo ~ u!-oa r dOLs inll.!iro<; de 32 bits parJ. representar c.::tda número. o que dá bJ bits no tot.::tL Se :l máquin:l não suportar cs<:c tipo de númcRI de dupla p~dSliu. toJa a "riunética efetuada com eles teria de ser executada em software. mas as duas partes podem estar em qualquer ordem. já que o hardware nfio se importa. E....
tO
O
'" o c ~ :
;"
o
•
~
~ o
•o o
5.2.1 Tipos de dados numericos Os tipos de d;ldos podem ser divididos em dU;lS categorias: numéricos c não nu méricos. O principal cnlre os tipos de dados numéneos suo os intei ros. Eles podem ter muitos comprimentos. normalmenle g, 16. 32 c 64 bit.'>. Inteiros contam coisa... (por exemplo. tJ número de chaves de fc nda que uma loja de ferr.lge ns tem em estoque). identiJicam coisas (por excmplo. númcros de contas correntes) e muito mai s. A maiuria dos (;omputadores modcrnos amw.zcna inteiros em notação binária de complemento de do is. embora outros sistcmas j:i tenham sidu usados nu passado. Números binários scr:l0 discutidos no Apêndice A. Algun." computadores suportam inteiros sem sinal. bem como inteiros com .. inal. No (;3SQ de um inteiro sem sinal, nfio há bit dc si nal e todos os bits contêm dados. Esse tipo de dado tcm a vantagem de um bit ex!rn. portanto. por exemplo. uma palavrJ. de 32 bits pode conter um único inteiro scm sinal na faixa de O!l 2Jl - I. inclusive. Por co m~rnçfio , um inteiro de 32 bits com sinal, .representado por complemento de dois. s6 pode manipular núme· ros até 2 I - 1. mas. é claro, também pode manr pul ar números negativos. P-J.ra números que não podem ser expressos como um inteiro. como 3.5. são usados numeros de ponto Outuante. Esses nú mems serao discutidos no Apêndice B. Eles têm comprimentos de 32. 64 ou. às yczes. 128 bits. A maioria dos eompuladores te m instnlçi)es parn crelUar aritmética de ponto Outuante. Muitos ddes têm registrado(Cloo ~cp!lrad{)s parJ. contcr opcrandos inteiros e para conter opt:ralll.los de ponto nutuante. Algumas lingu!lgens de progrnm>lç:1o. em especial Ca Bal. pcnnitcm números dt.'Cimais como um tipo de dJ.do. Máquinas que querem ser amig:iveis à linguagem CaBal costumam suportar números deci mais em hardware. nonnalmente codificando um tHgilo decimal em 4 bi ts e entao empacotando dois dfgitos decimais por bytc (formato dccim:Ll em código binário). Todavia. a aritmética n:1o func iona corretamente em mímcros decimais empacotadl)s. portanto são necessárias instruções especiais de com:ç:in de aritmélica decimal. Es ~as instruções precisam conhecer (l sai-um do bit 3. É por e!-lsa rnzão que o código de cond ição muitas vezes contém um bit auxiliar de sai· um . A propósito, o problema do Y2K (ano 2(00). tão comentado. foi C>lusado por progrJ.madon:s CaBa L q ue decid iram que seria mais barJ.tll representar o ano com dois t.lfgitos decimais e m vez dc represen tálo por um número bi nário de 16 bits . Grande otimização !
5.2.2 Tipos de dados não numericos Embora quase todos os primeiros computadores ganhassem suas vidas triturando nú meros. computadores modernos '\010 freqUentemente usados para aplicações não numériC:IS. CllmlJ e-mail .navegarpela Web.fologrJ.fia digital e enaç:l0 c reprodução t.le multimídia. Par.J essas aplicações são necessários outros tipos de dados. que muitas vezes s:lo ~ up()rtadus por instruçi)es Je nívcl ISi\. Nesse casu. é clura li iml>urtância dos caracteres. embora nem totlos os cumputadures orereçam suporte de hardware par.I cles. Os clX.ligos Je ear::u.:terc... mlli ~ eOllluns \ãu ASCII o: llNICOOE. EIo:~ ~ upurtam car.lctcrc\ de 7 bits o: caractere" dc 16 bil\. rc\pccILvamentc. \rnbos !'or.Jm Ji!-o('uudos no Capítulo 2. Não c incomum que ti nível fSA lenha mstruçõcs cspcdll.is ocslÍnadas a mampular eadeia.s de caracteres. isto .:. carrcirlli> COrl.'>CeutI V:L'l de carJ.cterc.... E!-osa.... cadeias Js vezes sfio dclimiwdlli> por um car:lCtcre especial na extremidade. Como :.d lemauva. um campo dc comprimento Je cadeia ptxlc ~r u,'i:lJo par.\ munitorar essa extremidade. As irlSln lçllcs (1\x.lem cxeeutar cópia. bUSCa. eJiç:1o e OUIrJ.S fu nçÕ<:.s naS caudas. Valores booleanos também são impo n antes. Um valor 00010::1110 pode ass umir um de d()is valores: verdadeiro ou falso. Em teoria. um único bit pod~ re presentar um boole:mo. com O paf'J ralso c I pum verdadeiro. ou viceversa. Na prálica t: u ~adu um oytc ou uma palavra por valor booleano. porque hits indivitl uais em um bytc não têm scus endeT'CIfOS próprios e. portanto. são difíceis de ace:o>sar. Um "islema comum usa li scguilllc convenção: O signitica falso ~ qualquer outra coisa signi fica verdadeiro. 1\ única situação em que um valor booleano é nonnalmcnte re prese ntado por I bit t: quando h::i todo um vetor tlc valores. portanlO uma Plllavra de .12 bits pode conter 32 valores booleanos. ESSlt estrutura de daoos é de nominada mupu de hil.. c ocorre em muitos COlllexlOS. Por exemplo. um mapa de bits pode ser llsado parJ. monitomr os blocus livres em um disco. Se () disco tivcr " hlucns. entlio II mapa de bits lem /I hits.
"o ~
•" • • •
~
<"
•
~
••
z
~
o
..••
"
I
, i!
"
o
N
••
o
~
•,
~
E
o
u
•
~
• • ::,
~
•
Nosso ühimo tipo de dados é o ponteiro, que é apenas um cnllcrcço de m~uina. Já vimos ponteiros repelidas ve;:7.cs. Nus máquina." Mie-,\', SP. PC. LV c CPP são todos cXemlllQs de ponteiros. Accs.~ar uma van ável a uma dist!indiL lixa de um pontóro. que é o moelo cumo :.I instrução JlOAO trabalha. é elUn:mamcntc comum em todas as máquinas.
5.2.3 Tipos de dados no Pentium 4
o Pcmiurn4 suponn intei ros em complemento de dois com sinal. inteiros sem sinal. números decimais em códigu binário c nÚmeros..:lc ponto n UlUanle padrão IEEE 754. 'orno mostra a Tabela 5.2. Devido às suas ongcns como uma humilde maquina de 8 bitsl l6 bits. ch: manipula bem inteiros com esse comprimento. com nUlllcmsas instruçõcs parJ erctuar opt!r.lções aritméticas c opera\!õcs booli.:anas. c fazer comparaçõcs entre elas. Opcr..tncJos não têm de estar ali nhados na memória. mas o desempenho t: melhor se os endcl"t!lfos de palavras forem múltiplos de 4 bytes. O Pemium -ltambém é bom na manipuJaçao dt: carJctcres ASCII de 8 bits: há instruções especiais paro copiar e busear cadelas de carJctercs. Essas instruçÕl!~ podem ser usadas com cadeias cujo comprimento é t:tJnhccido com antecedência. e também co m cadeias cuja cxlrCmid:ulc ê marcada. Elas costumam '1cr usadas em bibl iotecas de manipulaçãu de cadeiàs.
~
o
'"
Tabela 5.2
~
• C • O>
Tipos de dados numéricos do Pentium 4. Os tipos suponados estão marcados com x.
••me':I""'i.!li .'tJ·ho:e'W'''.';l'·I!f'
N
Bit
o"
Inteiro com sinal
x
x
x
Inteiro sem sinal
X
X
X
inteiro decimal em código bínãrto
X
x
Ponto nutuante
x
5.2A Tipos de dados na UltraSPARC 111 1\ UhraSPARC 111 supona lima larga faixa de fonnatos de dados. como mostra a Tabela 5.3. S6 parn inteiros. da pode ~uponar operandos de 8. 16.32 e 64 bits, eom e sem sinal. IlIlciros com sina! usam complemento de dois. Opcr.uu.lus de pomo nUlUante de 32. 64 c !28 bits são inclufdos e obedecem ao padrão IEEE 754 (para os números de 32 bits e 64 biL~). Númel'Os decimais em eódigo binário ndo silo .. uponados. Tooos os opcrJndos devem t!.'It:lr alinhados na mern6ria. A UltraSPARC III é b[L'It.::Ida em registr.ldorcs e quase todas as instruçõcs oper'.lm em rcgistr.ldorcs de 64 bi(.S. Tipos de dados de .:aructeres e de cac..l eia não silo suportados por instruçõcs especiais de hardware - são manipuJados inteir..\.ll1en te em software .
laDeia 5.3
Tipos de dados numêricos da UltraSPARC lI!. 05 tipos suponados estão marcados com X. 8 bits
16 bits
32 bits
64 bits
Inteiro com sinal
X
X
X
X
Inteiro sem SlnaJ
X
X
X
X
X
X
.It
I bit
128 bits
Inteiro decimal em código binârio
Ponto Uutuante
X
5.2.5 Tipos de dados do 8051 o a05! tem um número muito limitado de tipos de dados. Com uma úniea exceção. todos os regis tradores têm li bits de largurJ. JXlnanto inteiros também lêm 8 bir.'I de largur.l. Caracteres também têm 8 bir.~ de largurJ. Em essêllciu. n único tipo de dado que ê rcalmcnle suponado pelo hardware para opcraçi>es ariunéticas I! (l bylC de K bits. como mOstr:l a Tabela 5.4. O S051 também tem um outro tipo de d:Jdos s uponado pnr ha rdware que nàu é usado par:l ari unética: () bit. Um bloco de 16 bytes que eome\(a nu endereço 32 ~ memóri a b:L~ead a em bits. Todo bit pode ser endereçado indi· vidualmente usando um des locamento de O a 127. O bit () é o bit mai s ~ dircila no hytc 32. ti bi t I é II bit ~g uinte :J de e assim por dia nte. Há inslru\(ÕCS parn aj uslilT. libcmf. efetuar upcmçiks ANO c O R e eomplcmelllar bits indi -
Tabela 5A TIpos de dados numéricos do 8051. Os tipos suportados são marcados com x . T
llpo
I! bit
r
a bits
. 16 bits
r
32 bits
I 64 bits
, 128 bits
x
lli,
....
O
'"
x
Inteiro com sinal Inteiro sem sinal
mleiro decimal em código binário
•
Ponto Outuante
~
viduais. movc r pum bits e testar bits. No caso dt: .. is tcmas crnbulidos. b i L~ individuais são usados p3m armazenar o eSlado de comUl:ltJore<>. lu7.c... etc .. 0011:11110 a capacidade de manipular esscs bits diretamcnte I! IIlUilO útil.
~ c
•c
o u o
5.3
~
Formatos de instrução
Uma inslruc;ão consistI.! em um ()peode. usualmclllc em conjunto eom alguma infurmaçào adicional. tais como de onde vêm os opcrandos e para onde vi'lo os res ultados. O tópico geral que. IrJ.la de especiticar onde os opcrandos estão (isto é. seus cnde.l'C(fos) é denominado endereçamen to e será discutido detal hadamente mais adiante nesta se.çãu. 1\ Figura 5.6 mostm diversos formatos possíveis par:l. instruç()cs de nível 2. Instruções sempre têm um opeude que. indica u que LI inslrução ra:r_ Pode haver tern. um. dois ou Ires endew;os presentes. Em algumas m:1quinas. lOOas as inslnlçõcs U! m o mesmo comprimento: em oUlrJ.S pode haver muitos comprime ntos diferentes. InSlrUçties podem ser mais t.: urtas. mais longas ou do mesmo .:omprimcnm da palavra. Ter instruções do mcs mo comprimento da palavra !! mais simples e fadl ita ti det:odifie~o. mas muitas vezes desperdiça c~paço. uma VeJ. que. então, todas as instruções têm de sertão longas quanto a mais longa. A Figura 5.7 mostr.l algumas relaçõcs possíveis entre comprimcnto de ins trução c comprimento de palavr.L. figura 5.&
endereço. lbllrutrução de um endereço. IclInstruçào de dois endereços. Idl Instrução de tnis endereços.
fleura 5.1
Algumas relações possível.! enlIe comprimento de LnStrução e de palavra.
IOPCOOE I
OPCOCE
{.,
Quatro formatos comuns de Instrução: (aI Instrução sem
I
IOPCOOE IADOA' IADDR2 1AODRO I
{<,
(d)
- ,"""" - - - -- - ,,,.... - IrlllruÇio
{.,
In.tr uçâo
Inslrução
Instrução
'M""""
1 palavra Im,lrvÇão
Ins1r
1nstruç60
'M"""" '''''- ,""-
'M""""
{b,
(<,
Instrução
•
.,a
•
>
z
=
AOOAESS (b)
OPCOOE IAOOAESSIIADORESS2 1
• • •
Instr.
5.3.1 Critérios de projeto para formatos de instrução Quando um:1 o.! quipc de projl!to de .:umpuludur te m de ~s..:u lher fonnato::, Je ltI.~ lruÇÕt.:s par..! ~ ua m:iquma. úcve c(Jllsitler.lr v:írios f:uores. A difie uldade desS:1 csct)lha ': fác il estão convidados a pegar uma folha de papel e anotar ~ uas previsõe... para ( I) uma velocidade de relógio de CPU lípica. e (2) um !cmlXl de aCeSSO lfpico à RAM para computadores daqui a lO anos. Dllhrc bem esse papel c gua rde.o pm 20 anos. Então desdobre·\) e leia. Os que earecem de humildade potlem csquecer a folha de papel e publicar suas previsócs na Internei agnra. É claro que :lt!! IIS projetistas que têm a melhor vis:jo do futuro talvez nãu eonsigam fazer as escolhas cenas. E. me~ mo que pudessem. teriam de lidar eom o cuno prazo tambélll. Se c.<>sa deganle ISA for 11m pouco rI1ai .~ cara
co
o
'"
-• ••o
~
,
~
E o
"
•
~
o ~ ~
• • N
C
~
o
que
:I.
ISA fe ia fabricada agorJ. pelos cOIu.:orrentcs. a empresa t.:tlveL nãú
~bn:v;va
o
~uficic ntc par:1
que o mundo
Se toJas as OUIr.tS coisas forem iguais. instruções curtas sào melhore.; do que :u longas. Um progr.una que con_ sbtc em 11 instruções de 16 bits O\:upa somente metade do espaço de memória ocupado por /I inslruçõcs de 32 bits. Com o ul.."'Cliruo dos preços da memória. ~'iSC fator podcrJ ser menos import:lmc no futuro , se n:io tosse pclo rato de que a metástasc do !loftwarc I! ainda mais r,ipida do que a queda dos prt.'(,:os de memória. Além do mais. minimizar o t:l.Il1:.mho das instnu,;iks pode torn,í-las mai s difÍl:cis de codilicar ou mais dificeis de sobrepor. Portanto. é preciso cOlllr.1balançar o tamanho mínimo Ja instrução com (l tempo rC4ucrido rum decudificá-la e executá-la. Uma outra razão paral11inimii'.af o comprimento da instrução já é important e e está liclndo ainda mais impor_ t;tnte com processadores mais r:Jpidos: a largur:J de banda da memória (o número de bit"'s que a memória pode fornecer). O crescimento impressionante das velocidades de processadores na ultima década. não foi equipamdo por cresci mento .. iguais na largura de banda de memóri:l. Uma das reslriçõe... cada vez mais eomum imposta aos proccssadores ~urge da inc:lpaddade do sistema de memllria de fornecer instruçõcs e opcr-.mdos com a velocidade com que o processador pode cOllsumi-los. Cada memória tem uma largurn de b.mda 4UC é determinada por sua la-notogia e por seu projeto de engenharia. O gargalo da largur-J de banda se aplica n:lu somcmc à mcmória pri ncip.lI, mas também a todas as cachcs. Se a largur.t de banda de uma cache de instruçào for I bps e o eompri mel1lo mêdio da inslruçiil1 for r bils, a cache pode entregar no maximo tlr instruç6cs por ~eg undo. Nnle que esse é um limite .\'uperior p:lI"J a taxu ~ qual o proccss:ldor pode executar im,truçõcs, embor:.a alUalmente haja esforços de pesquIsa dedicados a romper até mesmo essa barreira apatcntemente impossível. É claro 4UC a taxa à qual as instruçõc..~ podem ser executada... - isto é. 11 velocidade do processadur - pode ser limitada pelo comprimcnto da instruçào. Inslruçi\cs mai~ curtas signilicam um processador mais rápido_ Uma vez que processadores modernos :.ão capa.l.c.~ de executar várias i n stru~õcs a cada ciclo de relógio. buscar várias inslnu.;Ocs por ciclo de relógio é impcr-.ttivo. Esse :J.Spt."CIO da cache de instrução fo I,.jue. de cena modo. licou com li pior das Juas. Eles re4ucrcm todos os hiL'i neccssarios para endereçar bylcs indivldual'i, mas IlS ucessos à meml'iria lêem uma. duas ou às vezes quatro palavras por vez. Ler I byte da mCrlltlria na Ullr-.tS PARC 111. por exemplo. tr-.l7.. um mínimo de 16 bytcs tveja a Figura 3.-44) I! pmvilvchnentc toda uma linha de cache de b4 bytes.
5.3.2 Expansão de opcodes Na sec,;ão anterior vimos comu hã um compromisso entre I!ndt:re(jos o.;urtos e boa resulução de memôria. Nc..'itu seção eX:lminarcmos novas pcrmuta.'i ,,",ue envolvem opcodes c endereços. Considcre uma inslru(jão de (li - k) hils com um upcode de k hits e um línicu endereço de /I bits. Essa instrução permite 2.t opcr-.t(jõcs diferentes e 2" célulus de memória e nderelj;\vei,~. C.lI!iC) alternativa. os mc ~ mlls " + k bits JlI-xleriam ~e r desmembrados em um Ilpcode de (k - I) bils o.; um endefCljo de ( li + !) bits, o que ~ lg n ilica apenas li metade do numero de inslruçiies. ma... duas ve.l.cs IImis mcrmina o.;nuercr.;:ivel. \)(1 a mesma quantidade de memóna. mas com duas vezes a resoluljãu. Um opct'ltle
flgU r3 5..8 lru..uução CXlm um opcode de 4 bits e três c.1IlIpos de endereço de 4 bits.
15
14
I I
13
12
I1
10
9
1
8
6
I I -.- --
4
"
o
'" O
N
--,..
Opcode
5
Endereço 1
EndeToÇo 3
o
de (k ~ I) bits C um endereçu de (n - I) bits dá mais opemçõcs, mas o preço é um número menor de células I!ndercç;ivcis ou ulIla rcsoluç;lo pior c a mesma quanliú:u!c úe memória cndcn.:lfávcl. É possível faze r pcnnutas baSilin~ <\o!isucadas entre bils de op..:UUI! c bits de endereço. bem como a... mais simpks 4ue acabamos de descrevcr. O
esquema di ~cUlido nus par..igr.!fns scguimcs': dl!lluminado c)(pansão de UIJeodc. O conl;dlo t!e opcodc e:tpandido pode ser visto com mais d::lI'l':1.C o~ pmjctisl3s precisarem de 15 instruções de lfês endereços. 14 inslruções de dois endereços. 31 i/l~mJçõcs de um endereço e 16 instruçõcs sem absolutamente nenhum endereço. podem usar opcodes de O a 14 \:O!l1U lnstru"õcs de três I!nden."Çlls, mas interpretar o opcodc 15 de modo dirercnte (veja a Figur.! 5.9). Opcode 15 significa que I) opcodc est:\ contido nos bits de 8 a 15 em vez de 12 a 15. Os bits de O a 3 c 4:l 7 fl)nnam dois endereços. como sempre. As 14 instruçõcs de dois endereços têm loda.~ 1111 nos 4 bits da ex.trema esquerda. c mlmeros de 0000 a 110 1 nos bits de 8 ali. Instruções que têm I 1II nos 4 bils da extrema esquerda e 111 0 ou 1111 nos biL.. de 8 a 1I terjo tralamentO especial, isto é. serJo tr.:l.lada... como se ~e u s opcodes estivessem nos bits de ..t a 15. O resuhado ê 32 novos opcodes. Como são necessárim apenas 31. o opcode 11 1111 11 11 II é intcrpretado para significar 4ue o apeode real está nos bi ts O a 15. o que dá 16 instruçõcs sem nenhum cnderc'fo. Ao longo dessa nossa discussão, o opcode ficou cada vez mais longo: as instruções de três endeTi-"Ços têm um opctxle de .t biL", as instruç6cs de dois cm.icTi--yos têm um opcodc e a,.. i nsl ruçõc~ sem endereço têm um opcode de 16 bitll.
=
~
= ; c
•
~
I
, ,
~ c
'c= o u
o ~
•
" ;;=
= o-
"'•
. ~
>
" ~
o
=
16 bits
"""'., e-)(){X 0001 0010
da4 bll
"00
1101 1110
,-
"",-
de 8 bll
três e ndereços. 14 lnstruçôe5 de dois endereços. 31 instruções de um endereço e 16 mstruçõeg sem endereço.
.)(){~
ou .~
=
'ff'f'I 'ff'f'I 'ff'f'I
...
(IrtLOCIÕill 'ffY'I 1111 0001 yyyv 1111 0010 yyyv
u•
14 In5truções dll "" ,."',,"'" "" "" "" "" ""
1+tt+11D tWb alZ 1 11100001
=
1111 1110 1110 1111 1110 1111 1111 1111 0000 1111 1111 0001
Os campos marcados com un. yyyy e l2ZZ são eümpos de endereço de 4 bits.
15 lnslruçOes de 3 elldareços
""
""'
•
"" "" =
""' "" ""' ""' ""
1111 1011 1111 "00 YY'IY 1111 1101 YY'IY
n..ra19 Expansão de opcode que permite 15 instruções de
XXJOI
~
'-...
31 lnstruç6es de
"" = "" = m'
1111 1111 1101 11 11 1111 1110 un
"""""•• "'"
lJTf" t 1#-11 ffOoocl) 1111 11 1111 0001 1111 1111 1111 0010
161/lStI"UÇ6es sem eflderoço
1111 111 I 1101 1111 tlll 1111 1110 1111 1111 1111 1111
""
15 12 11 6 7 " 3 O Número dO brt
I J
-
o N
••o ~
,• 0-
S o u
• • ,•
~
~
, •
~
o
• • c •
~
N
=
o
A idéia de I:xpandir opcodcs demonstra um compromisso entre () espaço para opctxks e () espaço para OUt.r:l.~ infonnaçôcs. Na pr.itica. npcoul.'S expandidos nãn são 1:10 limpos c regulares como CI1l nosso exemplo. Na verdade. h;\ dois modos individuais de explorar a capadú:tuc de u:-;ar tamanhos variáveis ue opcodcs. Em primeiro lugar. todas as inslruç
5.3.3 Formatos d e instruções do Pentium 4 Os formatos de instru"i3cs do Pendum 4 são de :.!ILa cllIllPll!xidade c irregularidade. com até seis campos de cmnprimt!nto variável . cinco dos qual:. upl.:ionais. O pad rJ.o geral é mo:.lr.ldo na ""igurJ 5. 10. ~e estado de coisas OCOITC U porque a arquitetur.. evoluiu pUl' muitaS gcra"õcs c adotou algumas opçõc:. desastroSas no inkio. Em nomc da compatibilidade nãu foi possível reverter essas primcir..lS decisõcs mais tarde. Em gerJI. para instruçôcs de dois operandos. se um opcmndn estiver na mt!môria. o outro não pode estar. Por isso existem instruções par.! somar do is registradores. somar um regislr.ldor com memória c somar memória com um regis U'at.lor, mas nào par.. somar Ulllli pal
0·5
1 ·2
1""/OPCooE 1 f lgUrII 5 .10
Ponnato!f de LIlslrução do Pentlwn 4.
Bits
8
!
INSTRUCAO
o· ,
O· 1
MODE
~. Bhs
11
!
~OCAMENTO 2
3
ISCAlEI INDE)':
I I
••
o· •
0·4
1
tMEDIATO
3
SASE
I
Oual operandO li fon1e? By1e.'pal;tvP'il
Slb
2
3
3
I MOD I
REG
RIM
5.3.4 Formatos de instruções da UltraSPARC III A ISA UltraSPARC IIi consiste illll!ir.l.mente em instru"õcs de 32 hit... alinhadas Oõll11emüria. As inslnlçõcs em gcral "ilio 'iLmpks e e)pecificam somenlC uma unica aç:ln. Uma instru"ão anlmclicu típicu especifica dois regis· tmdurcs par.! tom!.'eer os operandos-fontl!s e um único rcgistmdor de Je.~ lino. Uma vuriante pcml ite que a instruçào
F0fIT\810
2
" Ib
5
,
5
DE'T
OPCODE
SRC1
OEST
OPCOOE
SRCl
, ,( ,, • H ,
ngura5,.U Formatos de instrução da SPARC.
3(
•
FP'()P
O
,
5
I
CONSTANTE IMEDIATA
5
3
22
OEST
OP
CONSTANTE IMEOIATA
CaNO
I
'Re>
N
ISETHI
3
22
CP
DESLOCAMENTO EM RElACÃO AO PC
•I
I I Imedialo
3 ReglSlrador
30
I BRANCH
ICHAMAOA
OESLOCAMENTO EM RELAÇÃO AO PC
•o o
= =
fomCli:l uma constantc de 13 bits com sinal em vez de um dos registradores. I)..tr.t uma instrução lQAD. dois regis-. tr.tuores. ou um regis trador e uma con ~lante de 13 bits. ~:10 somados par.t e,'\pccilicar o ernlercço de memória a ser lido. Os dados são escritos no outro registrador e~pedficado. A SPARC original tin ha um número muito limitado de fonmllos de ;nMruçix!s. ilustr:IIJos na Figura 5.11. Com o tempo foram acrescentados novos fonn:lIQs. :\Ia tlpoC:l da red:lção deste livro. a contagem estava em 31. e aume ntava vios condicionais não previslveis usam fomUlo 3. sendo que o campo CONO informa qual condição lestar. O bit A tr.t!:! dc evitar tempos de retardo sob cenas eondilr'Õe.s. Os desvios previsivcis usam o mesmo foml:lIO. mas cum um deslocamento dc 11) bits. como já mencionamos. O último formalO é par.! a instrução CALl, usada pam faze r uma e hamalla lIe procedimento. E.~sa instrução é especial porque é a única na qU:1 1 os 30 bits de dados são necessários pllr:l espcdficnr um endereço. Para essa !SA h:i um Ilnicn opcodc de 2 bits. O e ndereço é o e ndc rcc;o-ulvo di vidido por quatrO. o que toma a faixa uIcnm.áveJ aproximadamente ::t 2 JJ bytes em relaç:10 à instrução corrente.
5.3.5 Formatos de instruções do 8051
o
S051 tem 'iCi~ fllml atos simples de instI\Jlião. cumo ilustrado na ""ig\ílu5. 11. As instruçu..:!i .;.:10 tle I. 2 ou 3 hytl!s. () fonnaHl I eu n~bte cm apcn:l~ um !lpeode. Ele é usado. pur excmpltl. pela inslmç:io que in~n:menla (1 acumulador.
"",'''0 O<>
, "gura 5.12 Formatos de InStruçãO do 8051.
3
,
o""",.
R..
""-
Operando
O<>
Endereço 00 11 bits
5
O""""
ti
Op«>de
Endereço de 16 bits
""'' "' ' ' ,
""'' "' ' ,
o
<>
"<> ~
• •
= .,. <
•> ~
•
"
N ~
N
•• o
~
•, ~
8 o
"
o formalo 1: também tem um bylc c consiste em um opcodc de 5 bits e um número de registrador de 3 bits. Entre as instruçõcs que usam esse fo rmato estão mui tas que f:ll.crn :l.lguma cais'l l{uc e nvolve o acumulador c um registrador, ta l como somar um registrador ao ac umu lador ou mover dados enlre um rcgi~[rador c o
;Jl:umulador. O fOrnl:l.to 3 [em um opcrJ.nt.lo de 1 byle. O opcr..mdo pode ser urn:l COllStnntc imediata. por exemplo. a ser C:l.fregada no acumulador: um deslocamento. pore;tcmplo. a distância a saltar: ou um número de bit. por exemplo. para ajustar. libcmf ou testar o bit n. Os t'omlatos.J c 5 são ullaJos parJ. saltos c cham:u::las de sub-rotinas. A versão de cndcn..,\=o de II bits pode scr usada quandu não há memória externa. de modo qUI! todos os endereços de prugmma devem estar abaixo de 4.096 (805 I) ou li 192 (8052). Quando siio usados mais do que 8 KB de memória externa. a fonnu de 16 bit:; é neçessária. O formuto 6 contém lla is opcrandos de 8 bits. Há várias instruçÕ\!s que usam esse fo nTl
5.4 o
Endereçamento
Gmnde pane das instnlçõcs tem opcr.lndos, portanto é necessário :Ilgum modo de especificar onde clc.s csliio. Esse assu nto, qu~ discutiremos agonl, é de nominado endereçamento.
5.4.1 Modos de endereçamento •a
Até aqui. de mos pouea atenção ao modo como os bits dc um campo de endereço são interpretados para achar o operando. AgorJ. chegou a hom de investigar esse assunto, denominado modos de cndcrt.'Çurnento.
O
5.4.2 Endereçamento imediato o modo mais simples de uma instrução cspccilicar um opcr;mdo é a parte da instrução referente :10 endereço realmente conter o operando em si em vez de um endereço ou outm info rmação que descreva onde o opt:rnndo está. Tal operando é denominado flpcrJlldo imediato porque c1e t! automaticamente busc:ulo na mcmôria. ao mesmo tempo que a própria instruç:io; por conseguinte, ele está imediat:.llllcllte disponível fl'lrn uso. Uma possível instrução imediata par:1 carregar o rcgislrndor A1 com a constante 4 é mostrnda na Figura 5.13. O endereçamento imediuto tem a virtude de não ex igir umu referência extra à memória par.! buscar o operando. A desvantagem é que so mente umu constante pode ser fornceida desse modo. Além disso. o númenJ de valores é limiliJdo pelo wmanho dn campo. Ainda assim. muitas arq uiteturas usam essa técnica para especificar constantes inteiras pequenas.
fi ..., . 5..13
Instrução imediata para carregar 4 no registrador l.
A'
•
5.4.3 Endereçamento direto Um rnêtooo para especificar um opcr.Uldo na memória é dar seu endcn:ço completo. Es~ mooo é denomi mado ender eçamento direto. Assim C0ll10 o endereçamento imediato. o cnderclr'amenlo d ireto tcm LISO restrito: a instrução sempre iLeessar.í exat:1t11entc li mesma locali:J:ação de mcmóriu. Portanto. embUr.!1} va!{;r po~!>a mudar, a loca1i7.:1ç5n não pode. Assim, I) endereçamcnto d ireto ~(Í pode ~e r usado para acessar vmi:iveis gloha i.~ cujos endereços ~ão conheeirJos no momento da compilação. Não obstante. muitos prognunas têm variâvcis globais. portanto. cs~ lIIodo ê .1Illplamcntc usado. O~ dCI:Ilhcs Je cumo o computaJor sabe quais endereços ~:i() imcdiatos e lll1aii'l ~ ã() di!\!lOS '\erau rJisc uudos mais ,u,Jia11le.
5.4.4 Endereçamento de registrador Emh:reç:lIllt:nto rJe rcgistrarJ!lr é conceitual 11 1C11Ie li mcsmo quc endcrcçamcnLO dirclO, mas cspcci lica um registrador em vez de uma localizaç:lo de memória. Como os rcgistr.ldorcs são tão importante1 (dcvldo ao ace ~so rápido c enden.'Ços cunos). esse modo rJe cndcrc"amell(n t! u mais comum na maioria dos computadores. Muitos compil ad(J rc.~ ra,.cm IOdo () l)t)s~íveJ p:Jr.l dCh..:nninar quais variáveis scr.:ill accssadas Clllll maim J"rcqtiênda \)lJr c.~e mp l o. o índice de um lac.,:o - e colocam es.sas variáveis e m registradores. Esse modo rJc c nrJercçamelUo é conhecido simplesmente CO Il II) modo rcgistr3dor. Em arquitelUrJ.s carregue/armazene, como:.L da UltmSPARC 111 , quase lodas a.~ instruçik:s USáfl\ excl us ivamcnlc esse modo de endereçamento. A única \'C Z CIII que csse modo de endereçamento não t! usado I! quando um operando é tr.lflsferido da mçnlóriu pam 11111 rcgislrarJor (instrução LOAD) ou rJc um registrador para a mellltkia (i nslnu,;ãu STOAE). Mesmo 4ualldll ~c trata rJessas instruções. um rJus opcr.lnrJos é um rcgislr.ldor - de o nde a palavr.l de memóna deve vir ou pam onde deve ir.
_........•
_--
5.4.5 Endereçamento indireto de registrador NI.'!'iSC muJo. o opcr.mdo que cSI:'i '\Cndo cspccifi<:ado vem d;\ memória ou vai para a memória. m:I..~ seu ende. reço não C)ol:í ligado à inslruç;1o. comu nu cndc~a/llento dirclO. Em vez disso. o endereço está comido em um regis. Imdar. Quando um endereço ~ usado dessa maneira. ele J dc nominólclo ponteiro. Uma grande ...amagem do endereçamenlo indireto de regislrndor t! que ele pode refel'Cnciar memória scm pagar o preço de ter um endereço de
M N
o ~
rllt:móri .. completo na inlirrução . . \lém disso. lambém pode usar diferentes palavrJs de rncmilria em diferentcs exc_
,
cm;:ões da instmç:io. P:lnl ver por que poderia ser útil usar uma palavra diferente em cada execução, im:lgine um laço que percom:
•c
os elementos de um vctllT unidirnt!llsional de inteiros de 1.024 elementos pam c:llcu lar a somll dos elementos no rcllistr'.Idor Al. r"1JrJ. do h:u;o. algum !lutro registr:u.Jor, por exemplo. A2, pOOe ser ajustado pllr.l. apon tar para o primeiro elemento do vetor e um outro registrador, por exemplo, A3, pode ser ajustado parJ. apontar para o primeiro enden:ço que se encontm logo após o vcmr. Com 1.024 intei ros de 4 bylCs cada, se o armnjo comc,ar em A. o prime iro enden:ço logo após o llI'r.lnjo scr:i A + 4096, Um código cm linguagem de monLagem líplco parJ. delUar esse cálculo li moslrJdo na FigurJ. 5, 14 para uma máquina de dois cm.lerct;o§ na.~ suas instruçõcs, Nesse pequeno progrJma, usamo~ vârios modos de cnuercçamento. As lrês primeir:J~ instruçõcs usam mooo registrador para I} primeiro opcrJ.ndo to destino) e modo imedialO parJ. o segundo operJ.ndo tuma constante indicada pelo sinal H), A segu nda instnuião eoloca o enJerefu de A em A2. não o conteúdo. É isso que o sinal 1# infornl'J ao assembler. De modo semel hante, a terceira inslrução enlOC;l cm A3 o endcreço da primeira palav ra logo após o vetor. É interessame ntlt:lr nesse easo que o corpo dn laço nüo contém nenhum endereço de memôriu., Ele usa o modo registrJ.tlor e o !Ilodo indireto de regislrador na quart:l instruç:io, U:>u modo regiSlrador e modo imediato na quinta instrução I! mooo registrador duas vezes na sexta instrução, BLT poderia USôlJ' um endereço de mcrnóri:l, mas u mais provável é que cspedJique o endereço parJ. o qual Jesviar com um deslocamento de 8 I:tits em relaç:io à própria inslrução BlT. Evitando emnplelUmente a utilil.ação de endereços de memória, produzi mos um 13(;0 curto e rápido. A propósito. n:l rea.lidude. es~e progrJ.ma é para o Pemium 4 - apenas renomeamos ao.. instruções e regislradores e alterJ.nlOS a notação parJ. facilitar a leitorJ.. porque a sintaxe da linguagem padr.1o de mo ntagem do Pentium 4 (MASM) é qU{L'W biz,arra. 11m resq uício da vida an terior da máquina corno um 8088. Vale a pena observar que, em teoria, há um outro modo de fa:r.c r esse cálculo st!m usar cndereçamento indiretO de registrador. laço poderia conter um;1 instrução para somar A com A1, tal como
a
a
ADD Al,A
Então. a c:lda iterJção do laço, a própria instrução poderia ser incrementada por um rato r de 4, de modo que. após uma iteração, ela leria ADO Al ,A+ 4
e assim por dian te, até concluir. Um progr.una que se modifica a 'li me~mo é dcnom.in:ldo progiJ.ffia aulomodificadol'. Quem teve essa idéia foi nin~uém menos do que John von Ncumann: da fazia scntido nos primeiros computadores, que não unham endcreç:1tllentO indireto de rcgistrJ.dor, I""oj\! em dia, progr.l I1111~ autOlllodifieador'Cs siio considemdos de mau gosto c difíceis de entender, Esses progmrnas também não poocm ser compartilhados por vários processos ao mesmo te mpo, Além do mai s. eles st!quer funcionam corretamente em m6quinas que têm uma cache dividida dt! nível I se a cache de instrução não tiver Circuitos parn fazer escn[:J.S rctroativa.~ (porque os projetistas a.~s ullliram que os programas não se modificam a si mesmos ),
n.ara5.M Programa em linguagem de montagem genenco pala calcula! a soma dos elementos de um vetOI
MQVRt,.o MQVR2,JA
MOV R3"A-4096 LOOP ' ADD Rl ,(A2) AOO R2,it4 CMP R2,R3 BLT lOOP
: acumule a soma 11m R t , inicialmente O ; A2 • endereço 00 afran,a AR ; R3 . enooreço da pnmell'a palavra logo após A • IIldireto de f8QIsttadof Via A2 para Obter operando : rncl'Omeflle R2 de uma paJavm (4 bytas) i' terminamos? : se R2 < R3, não Lermmam05, pontlnto continue
5.4.6 Endereçamento indexado Muitas VCI.CS é útIl IlOder refercndur paJavrJ.s de memória eujo dt!slocamento em relação a um regi.str:u.lor é conhecido. Vimos alguns excmplo:. em IJVM. na qual variáveis locais 'i:io referend:ldas d:lndo seu deslocamcnto .... rn rda~50 a LV, Endcn.'çamenlCl indexadu ~ I) nome que se dá :lO endcrcçamentu de memüriu que fum(.'Ce um regi~trJ.dor (ex plíciw ou impHcito) mais um deslocamento conSl.'J.nte. acesso li variável local em UVM usa um ponteiro parJ a memória (LV) em U1l1 registrador mai s um pequeno dcsloc:lmento na prcipria instruçáo, como mostra a Figura 4 . l6la). Contudo. também é pnssfvel fa:r..cr isso do outro modo: () romeiro dt: tl1em(~ ria nu instrução e o pequeno deslocamento no regis trador. P:lr.t ver como isso funcil)na. considere o seguinte cálculo, Temos d()i,~ vetores unidimensionais de 1.024 palavrus cadu, 1\ c B, c desejamos calc1llur A, AN O B, p:lra tndus 0'1 pares e entüo efetuar um opeíJ.ção aR com esses 1,024 produtos booleanos pUíJ ver 'Ie h:í uo menus um par nãu-lero no COl1jU1lltl, Umu :lbcm1agem scria colocar o cndere~ () de 11 em um rcgis-
a
~
•
~
o
,c c
o u o
~
,• • , a <
•
~
•>
"
,o •"-
u
figura 5.15
MOVA1 ,!'O
Programa em linguagem
MQV R2"A MQV A3.,A..-4096
de montagem genenco para calcular a operação L.OOP: AOD Rl,(R2) OR de
••o ~
,• ~
eo
u
•
~
•
~
,•
,
At ANO BI para
: acumule a soma em R I , IlIlonlmentQ O • R2 . onderllÇO do arrnnto AR , R3. endereço
oa pnmeim palavra logo
após A
. indireto de regis trador VIa A2 para obter op8f3ndo
ADO R2.,4
: Incremento R2 de uma polovra (4 bytasl
dms velores de 1.024
CMP R2.A3
elementos.
BLT LOOP
:já lorminamos? : se R2 < R3. nio terminamos. portanto conlinue
trJuor, o endereço de 8 em um "Cgundo rcgistr.ldor. c então percorrê-los J UlIIOS no mesmo passo. análogo ao que fizemos na Figur.l 5.14. Esse m(xlo de razê-lu com ccrtCLU funcio naria. mas hã urna outrJ maneira melhor e mais geral. ilustrada nu Figura 5.15. i\ Opc r:.IÇJO dc...sc programa é direta. Aqui. prcci ~amos de quatro registradores:
I. 2. 3. 4.
AI A2 A3 A4 -
Contém a OR acumulada dos temK>S do produto booleano. O índice. I. que é usado para percorrer os arranjus. A consUlnte 4096. que é o valor mais baixo de i a não usar. Um regislrndor transitório parJ. conter cada produto :i medida que t! form3do.
ApóS inicializar os regislradtlrcs. entmmos no laço de seis instruçõcs. A instrução em I~O OI) lrnz AI para A4. Aqui. o cálculo da fonti! usa modo indexado. Um rcgisll"J.dor. A2. e uma comtante. o enderL"'Ço de A. <;ào somados e usados pam referenciar memória. A soma dessas duas quumidades vai para a memória. mas não é am~,cnada em nenhum registrador visível ao uswírio. i\ notação
o
MOV R4.A (R2)
signilica que II destino usa modo regislr.ldor eom A4. ao passo que o registrndor e a fo nte usam modo indexado. sendo ,\ o desloc:unenlo e A2 o registrador. Se A tiver o valor. por exemplu. 124300,11 instruçào de máquina pura isso provavelmente é pareciua com a moslrJ.da na Figul"J. 5.16. A prime ira veL qUI! o laço é percorrido. A2 é O (porque fo i inicializado assim), portanto a palavra de memória endereçada é Ao no endereço 124300. Essa palavra é carreg:Lda em A4. Na próxima vez que o laço é percorrido. A2 é 4, ponanto a palavl"J. de memória endereçada é A I em 124304 e assIm por diante. Como tínhamos prometido. nesse ea.-;o o d~ l oca mento na instrução cm si é () ponteiro de memória e o v:J..!or no rcgistr:uJur I! um inteiro pequeno, que é incrementado dUl".lnte o d lculo. ES!ia forma requer um campo de deslo.. camento na instruç:io grande o suficiente para conter um endcl'C\;o. é c laro. ponamo é menos c!icicl\tl.! do que fazê· lo da outrJ. maneira: entret.:.lmo, ai nda assi m, llIuit.a.s ve:r,cs essa ê a melhor solução.
ngura 5 .16 Possível representação de MOV R4.AIR2).
5.4.7 Endereçamento de base indexado Al~umas
máquinas têm um modo de cndereçamento no qual o endereço de mem6ri:l ê calculado ~omando dois lIlaLS um dc... ltlcal1lcnto (opcional). f.sse modo à.~ vezes é denominado cnde.rt.'Ç:une.nlo de ba.se indexadll. Um do), rcgislJ".ldorcs ê a base e o outro ê o fntlice. Esse mudu t..:ria sido Ulil aqui . For..l tio laço poderiamos lcr posto o cndere\il) de .1 cm AS c o cndereifo <.h! IJ Clll AS. Ent:1o, pOlkn:mllls lcr suh~ titurdo :t instnLçàn em I.{)O P e ~ua sucessora p·ur regi.~ trJ.dorcs
lOOP:
MOV A4.(A2 ..AS) ANO A4.(A2+A6)
o ideal -.crm que hou vc.~se um modo de endereçamento P'lf'.l cndereçar indiretamente il suma de dois rcgisll"J.dorcs sem nenhum t!t;sllk::.Ill1en{O. Como altemativa. J.té mesmo uma inslrução cwn um deslocamento de 8 bIts ll.!ria s ido uma melhoria e m relação :lU código original. IIllla vc .... tlue podcriamos ajustar ambos os deslocamentos par.! O. Entretan to. ~ os deslocam..:ntos fnrcm sempre de 32 bits. nada ganharíamos por usar e~se modo. Na prn(ica. cuntudo. mátjuinas que tem esse modo costumam ter uma forma com um deslocamento de H bits nu Ib bIts. 5.4.8 Endereçamento de pilha Já ob...ervallms ser mui to deseJ:lvcl que a... instruçi'lcs de máquina o;cjam as mais ..:unas possfveLs. O limite Ji nal na reduç:1tJ de -.:nmprimentos dI.! ..:ndercços ê nãu ter endereço.... CII1110 vi mus no Capítulo 4, H1struçõcs de I.em endereço. -.:umo !ADD. são possíveis em conjunção -.:um uma pilh:l. Nesta !\cção I.!xaminarcmos llluis lle peno o cndercçamenw de pilha.
. ' .. "
..........
'.,"' ." "
Notacào polonesa invertida É uma antiga tr..ldiç:1o da matcmátic;t colocar o opcrJ.dor entre os opcr.lOuos. como em x ~ y. em vez de apó~ os upcr.lIldos. como em ,( y +. A funna com o opcr..ldor entre os opemndos é denominada in fixa . A [onna com I.) o~r•.ll.lur upds os opcmmlos ê denominada pós.rlXa ou notação polonesa in vcrtith.l, que deve seu nome ao lógico 1.
N
Luk;L~h.:wic'l.
(1958), pesquisador Uns propriedadt:s dessa nos têm precedência. () que é arbi trjrio c im.lcscjávd. Por exemplo...abcmos que u X b • c signiIic:l (Ll X b) + c. c não u x (h + c) ().uquc foi definido amLtr:LriarnclIlc quc a multiplicaçao tcm precctlêocia sobre a adição. Mas um dc.slo~;amcnlo parJ a esquerda lem preceuénda .~obrc ANO b..l0Ic:ma? Qu!!m sabe'! A notação pOloncsa inveltida !!Iimina c.w: incurwcnieLllc. Exbtem diverso!> algoritlllo'! par.! convener rórnlUJas infixas em notação polonesa invl!rti
O vagão que está no desvio vai par.!. o Tcxas.
2.
O vagão mais n.>centc na li nha para Texas raJ: o retomo ~ vai paro 11 Califórnia.
3.
O vagão que está no dl!Svio c vagão mais recente na linhn do Texa..'i silo desviados e desaparecem (isto é. são apagados). Pan::o Os símbolos agora em Califórnia representam a fónnula cm notação polonesa invcrtida quando lida da esquerda par.i a direita.
4.
s.
•c
•
~
o c
•c
o u o
~
•>
"
°
Pare. Ocorreu um erro. A fórmula original não foi e4uilibrnda adequadamentc.
Após a realb'.;\çào de cada ação é fdla uma nova compar:lo;ão entre o vagão que t!slá no desvio no momento cm questão. que pode <;cro mesmo da compar.\ção anterior ou o próximo vagão. c o último vagão na linha do Texas.
CaIi'ómla
"\Desvio
Nova Volk
n aura 5.11 cada vagão ferroviário representa um simboJo
na fórmula a ser convertida de notação LtImôl para notação polonesa Invertida. T.~
VagA0 no d!!!VIO
;
-
i
•
I
I
,• , , , , ,5 2 , , , , Tabela de decisão 8. '" , , , usada pelo algontmo de ~ _,' 2 2 conversão dôl Dotação ,2 2 2 2 Intixa para a notaç5o ~~ • 2 2 2 2 , 2 "poe'Oo"n::""""i~nevo::m "·,d,,".__ ~ ~ 5 , , , , , fItI.r. 5.18
'i~ .~
2
2
2
2
2
2
2
-
~l!!
>~
3
~
u•
",'
Tabela 5.5 Alguns exemplos de express ões m.fixas e seus
N
eqwvalentes em notação polonesa invertida. Inflxa
·• o
~
,•
~
,
Notação polonesa invertida
A+BXC
ABCX+
AX B+ C
AB XC+
A XB+CX D
A8XCDX +
E
IA + BI/IG - D)
AB + CD - /
u
AX8fC
AB Xcl
•
UA + aI xc + Dl/fE + r+GI
AB + ex 0+ EF +G+!
o
~
•
~
• ,"
; ~
'.• o
~
"• c
~
o"
o processo continua até alc:.mçar a etapa 4. Note que a linha do Texas está sendo usada como uma pilh:l. sendo que o direcionamento de um vagão para o Tcx!lS é uma opcmção de passar para a pilha c fazer o vagão que j:i est:i na linha do Texas retomar c enviá-lo para a Cal ifórnia é uma operaçãu de lim! da pilha. A ordem das vari:iveis é a mesma na notação inlixa c na nOl:lção polonesa invertida. A ordem dos opcr.ldores. entretanto, nem sempre c! a mesma. Na notação polonc...a invertida os oper.ldorcs aparecem na ordem em que serão realmente executados dUrJ.nte a avaliação da expressão. A Tabda 5.5 dá divcr.ms exemplos de f6nnulas inli xas e suas equivalentes em notação polonesa invenida.
Avaliação de fórmulas em no tação polonesa invertida A notação polonesa invertida é a ideal para avaliar fórmulas em um computador com uma pilha. A fónnula consiste em 11 símoolos. cada um é um oper:lIldo ou um operaJor. O algoritmo p'lríl avaliar um;.! rónnula em notação polonesa invertida c! simples. Examine a cadeia da notação polonesa invertida da esquerda para a direüa. Quando encontrar um opcr..lIldo. passe-o para a pilha. Quando encontrar um opemdor. execute a instruçào correspondente. A Tabela 5.6 mostra a avaliação de (8
"f"
2
x 5) I
(1 + 3
x
2 - 4)
em UVM. A fó rmu];. correspondente em notação polonesa invenida é
825 x +132 x+ 42 -1 Inr.roduzimos IMUL c IDIV na figlll-J. como instruçõcs de multiplicação c divisão. respectivamente. O número no topo da pilha é o operando da direita. não o da esquerda. Esse pomo é importante para a divisào (e a subtração ), visto que a ordem dos operJ.ndos é signiticativa (di ferente da adição e da multiplicação). Em outras palavras, IDIV foi cuidadosamente definida, j>ortanto, pllssur prim~iro o numerado r. depois o denominado r e então efetuar a opcfU1,=ão dá o resultado correio. Note como ~ fácil geror código par... JJVM com a nota1,=ão polonesa invertida: basta Tabe la 5.6 Utilização de uma pilha para avaliar uma
fórmula em notação polonesa invertida.
Etapa !
Cad8la restante 825 x
+ 132 )(+ 4'- /
2
25X+132 )( +4 - /
~
Instrução
Pilha
I
BIPUSH8
8
BIPUSH2
8. 2
3
5)(+132X+4-/
BIPUSH5
B. 2. S
4
x +132 x+ 4 - /
[MU'
8. 10
5
+132X+ 4 -1
lADO
18
6
132 x1' 4 - 1
BIPUSHI
18, I
7
32x+4 - 1
BIPUSH3
18, 1. 3
8
2X+ 4 - /
BlPUSH2
la 1,3, 2
9
x+ 1 - 1
1MU'
a, 1. 6
10
+4 - 1
lADO
18, 7
11
BIPUSH4
12
-I -I
18,7,4
lSUB
18,3
13
I
IOlV
6
4
!,,!J'Corrcr a fôrmula I.! IIl nUlaç:iu polonesa invertilb e eXlrair uma ins truç. .. ...c , . pn/\Juza "' ,' ,o pam a PIlha S. no . por • I.!OIl!>lantc ou vana uma inslr\u,ão par;,t pasSd< boslIn"", o. Sc: ) slmbol!) for um ~ . inll1ntÇ:lU par..! detuar..L opcrJIf:1o.
. COslm
loro
a r um upcr-.1I1or. PnxJU7..;\ uma
5.4.9 Modos de endereçamento para instruç ões de d
.
. , h , e SVIO r\ t é :JqUl ClI:llmnamos upenas 1Il ~ lJ1 lçik~ que opcr.tm so rc {ados. Instnl '(k ' d. . dimcnto) também precisam de 1lI000S de cndCrC\;:lIllcnlO para cspcci licar o . lid S c des vLo (e chum:uJas de proce.. . ' hé . . .J • O c ncl" Co crcçn-alvo O, ,n \11,.1 '·0S' que cxamma. , mos ,ue :aqUI Iam m lunclOnam . em grande parte. p;.Ira uCSVIOS. .' . .. . . . . crt!çilflll:mo lh rclO é ' . . 1 - ', r ~ l b Lhd adc. slInplcsnu.:nh: inclUindo O emkn:t;o-alvo complelO na I11SlruÇ50. • ~cm uU Vlu:.!, uma pollContudo. OUlrOS modos de endereçamcnto também faze m sentido E nd . ereçamento ' Ir .1 . mil!! 4ue \) progr.J.lruJ c:llcule o em.lercço.alvo, coloque...o em um regislt'".tdor _ In Il'\:to ue reglslrJ.dor per'b,,··I . I " .I d d e entao vá até I, ' <',se mod o,· a maJor , tlexI I luaue, JU ljue o cnllcrcço-.alvu é calcula o no tempo c execuçãQ. M. . <:.: o ua dc parJ cnar bugs 4ue sãtl 4ua:.c i mpos~ívcis de achar. as também oferece a maior oportunitla_ Um outro mooo rJZoávd é o indexado. cujo des locamcnto em relação a . clda. Tem as mel>ma..o; propriedades do modo de cndercç:ullento indireto d. u~ registrador é uma distância conhee re"lslrJdor Uma outra opç;1o é cndcreçamcnlo em relação ao PC (contador de pro e . (com sinal) na própria i n~trução é adicionado ao comador de programa pa ra rama). Ne,~se modo, o dcslocamcmo ..: simplc~mcnte o modo imlcxadn. usando o PC como registrador. o ler o endereço_uIvo. Na verdade, esse
Do pomo de vista do o;nftwarc, instruçi>es c c:ndcrcçamcnlo deveriam tcr ereçamento rtl mínimo dc fonnalos de instrução. Essa cstrulur.l facilita ao compilador r uma. esUUturJ. reyular. com um núme· devl!m pcnnitir t~os ~ I~()dos de endereçamento o~de qucr q~c faça sen~d~~I;~~1\ c~igo. Todos os ~cs res devem cSl;;lr dlspomvcls j>ill'll todos os modos rcglslrJdorc.... mcluindo . o maIS, todos os registrado. . o ponteIro de quauro "(FPI, o pontClro ' de pilha (SP ) c: o contador de pmyr:l.ma (PC). Como exemplo dc um projcto limpo para uma máquina de tres endereç . de 32 hits da FigurJ. 5.1 9. São suportados até 256 opcodes. No formato I ea t~' conSidere os formatos de instrução les lo! um rcgistr:l.dor de desunI). ToJas as instruçôes aritméticas c JÓ"ic ...: ~ a ltlSlruÇ.:1o tem duis rcgistr.tuores. fon· '" ~ usam esse 10m O campo de S h i L~ nãu utilizado da extremidade pode ser uS:ldo pura d ' ~ . Il\IO. . 1" 'da tnstruçao. ' - Por exemplo. um opcodc podcria ser alocado para todas as opcf'J.ÇÕCS de POntoIlerenCI:'lI'ão ... nulCIOIUI faze r a distinç;io entre cl:'IS. Além disso. ~ o bit 23 estiver marcado. o foro,. Iluluallle, usando ti campo c:xtnl. para ~ mais um registrador, ma.s uma constante imediata Je 13 bits, com ~inal In ~:o 2 é usado e o segundo opcrJ.ndo não usar esse formato parJ. referenciar mcmória em modo indcx3do. . s ruçõc... lOAD c: STOAE tambem podcm É preciso uma pequena quantidade de inslnlf.;õcs adicionais, Como de: . . < " • , I,ICI menle se aJustar:lu lonnalo J . Por exemplo. um opcode podena ser de .' SVIOS . d condleion"" .... m"as e,as pod en. am . ..lo . slgna oacadatl,esvlO . (con d"IClonal) ,cha· mllJa de pnx:edllllento elc., dClxam. 24 bIts par::! um deslocaml!nto em rela 'i! . camcn[u seja contado em palavrdS, a faixa seria::t 32 MB . Além disso al" u ç o ao PC. ;\dmitindo que esse deslo-. . ' b ns 0pcodes """I.. . IIlslnlçiics LQAO c STOAE, que precisam de Lleslocall1Cnlos longos de fo ....... . 3 t":,oCnam ser rescrvados paru . ",ato Eles nua ' , ' (IXJr exemplo, sO/ncme RO (XJLleria sc::r carrcyado ou anllai'..cnado), ,lOré , .. . . senam tora mente germs m Senam usadQs AyorJ. cnnsidere um projeto pura IImu má4uina de dois endereços que pod . r:tnunc ntc. q.uulqucr um.dlls operJ.ndos. O proj~1O é mostrauo na Figur..! 5.20. Essa máquinae ~ma pala~ru de memória par... na li um rcglstradm. somar um registrador a umll paJavr..:t de mcm6ria se. e ~ Illar uma palavra de rncmó• • • • ' mar" um rc<>lslr:id ' um rcglstrJ.uor ' ,' ou . L. ,ornar uma pa , UVrJ. uc mClI\ona a urnu pa.l:.l.vrJ. de memória. HOJc, os aces "' . or .1 . . • . SOs a mem6na ." ", ' ponanlo esse projeto all\da nao é popular. mas. se os pmgn.:ssos na Ice , . ",",o te ,lIlvamcntc caros.. no agia de each •. :lces\US à memória haralO!> nll fUluro. produzir código par.I esse pmjelo _, . . e Ou mCOluna tomarem os _. panlcula''''';\ ....... , ".e ,"" ' . O ' . 10rJrn ma4uIIlas 4uc alcançar.un .Imenso sueesso e do n :;era Ut,;1 e cllclentc. P'3" • " e () VAX' , - . Hnnnun n mundo , . .. .• , I \lr.II1\C t \las Jel'aJa... 1I.~andn [lrnJctos '
: lJ'
•
,
,
flaunI 5.19
11
OPCODE
101
DEST
SAO,
Pl o)eto slmptes pam os rormalos de UlStrut;ãO de uma maqum3 de três endereços.
'I
OPCODE
1, 1
DEST
SRe,
'1
OPCOOE
Rp ... 5.20
Projeto SImples para O!l tonnatos de Instrução de uma máqulna de tres
endereços.
••
•
L 3
5
•
5
SRC2
_ OF~
o
~
•o •
~
o
,o o
o
"o ~
-
,• •
5.4.10 Ortogonalidade de opcodes e modos d e e nd
alts
'.,
OFFS€T
J
•
>
'"
,o "-
•
"
co ~
N
••o
~
,•
~
E
o u
• •
~
~
,•
-,• ..• ~
o
~
"
o
Nesse projeto temos. mais uma vez. um opcooe de 8 hits. mas agora temos 12 bits para especificar a fonte e 12 bits parJ. especi licar o dcstino. Para cada opcr.mdo. 3 bits diio o modo. 5 bits dão o registraúor e 4- biL~ dão o desloc:uncnIO. Com 3 bits de mooo podemos suportar mudos iml:diafo. direto, rcgislmdor. indireto de rcgiSlrador, ;ndc}lado c de pilha. c ainda sobra espaço para dois mooos futuros. Esse projeto ê limpo c regular. ~ I"deil de compilar para ele. nJém de ser bastante flex.ível, em especial ~c o contador de programa. o ponlcil'O de pilha e o ponteiro de v:uiável local estiverem entre os registr.ldorcs gerais que podem ser acessados. O ún ico problema é que, para endereçamento d ireto. precisamos de mais bit." par:l o endereço. A solução adolad:! pelo POP·j J c I) VAX fo i adicionar uma palavra ~:ma 11 instrução par.. o ~ndcreço de cad:.! opcrJndo endereça· du Jiretamente. Tamlll!m poderimnos usar um de Jois modos de endereçamento di~poníveis em lugar Je um mooo indexado com um deslocamento de 32 bits após a instrução. Assim, na pior das hipóteses. pm ~xemplo. uma AiJD mern6ria para memória cujos dois opcrJndos fossem endereçados diretamentl!. ou utilil.assem uma fonna indexada longa. teria 96 bits de comprimento e usaria três ciclus de barr.lInento (um parJ a instrução. dois par.. dados). Por outro lado, a maioria dos projetos RISC exigiria no mínimo 96 biL... provavelmente mais. para somar uma palavr.1 arbitrária na memória com uma outra palavra arbitriria na memória. e usaria no rnínul10 quatro ciclos de barr..mento. Há mui tas alternativas possíveis para a Figum 5.20. Nesse projeto é possível executar a declaração i
= i;
em uma instrução de 32 bit!;, contanto que ambas. j ej, estejam entre as 16 primeiras variáveis locais. POI' OUlro lado. par.1 variáveis alé m de 16. te mus de ir a deslocamentos UI! 32 bits. Umn opção seria um outn> tumulto <.:om um único deslocamento de 8 bits I!m vez de dois deslO\;amentos de 4 bits. mais urna regra que infonna "tue li funle ou o destino poderiam usj·lo. mas não ambos. As possibilidades e compromissos são ililllJlados. c os projetistas de. máquinas uevcmjog:lr com muitos falores pum obler um bom resultado.
5.4.11 Modos de endereçamento do Pen tiu m 4 Os modos de ende.reçamento do Pemium 4 são muito irregulares c diferentes dependendo de detemlinada illsuuçJu I!star em modo de 16 bits ou modo de 32 bits. Vamos ignorar o modo de ltl bits: o modo de 32 bit... já é ruim o suticiellle, Os modos suponados Mio imediato. direto. regislr
32 bits do Pentium 4. Mlx]
e a palavra de memória em x.
, I RIM
00
000
M{EAXl
M{EAX + OFPSET81
M[EA}~
+ OFFSET32]
BAX ou AL
001
M[ECXj
M~CX
010
i
OI
MOD - - - - - - -10 - ---
-
11
M[ECX + OFFSET32j
ECXou CL
M[EOXj
+ OFFSET8j M[EDX + OPFSET8j
M[EOX + OFFSET32j
EOX ou DL
011
M[EBXj
M[EBX" + OFFSET8J
M[EBX + OFFSE'l'321
EBX ouBL
100
SIB
SIB com OPPSET8
SIB com OPFSSl'32
ESP ou AH
101
Direto
M[EBP + OF'PS1IT81
MIEB? + OFrsET32]
EBP ou CH
110
M[ESij
M[ESI + OF'FSET8)
M[eSI + OFFSET321
ESI ou OH
111
M[EDI]
M[EDI + OPPSE1'81
MjEDI + OPI'SET321
1301 ou BH
- - - - - _._--_ ..... _--
-'" N
1- EBP iem EAX
""'~ variáveIS fIgUra
5.21
Acesso n al11.
""-
'I
tia pllh
""'" a [OI a [11 a[2[
o ~
--
EBP+8 EBP +
~
•"
Re!erilnaas do moóo S!B M[4 • EAX + EBP - 8]
•c
12
•
EBP - 18
~
o c c c o
I
u 1.2.4 ou ~ (dependendo de SCALE)...nmando-o :10 registrldor de base c. por lim. somando um deslocamento de uu 32 bits. dependendo de MOD. Quase l()(]oS os regl),tr.ldorcs podem -.cr usados como andice ou baM:. Os modos SIB sà!) úteis parJ acessar dementos de vetores. Por exemplo, considere a dedur..u.:50 Java
~
for (I ",O: I < n; 1_) a{1] '" O: anue ti é um arranjo de inteiros de 4 bytcs local para o prucL-dimenlo corrente. Nonnalmcnte o EBP ~ usado para aponlar pilr.l a base do quadro da pilha que c.:ontém as variáveis locais c vetores. como mostrJ a Figura 5.:!1. O compi lador poJeria manter i em EAX. Par..! acessar lI{i], o!le usaria um mudo SIB cujo cndereço de operando fosse a soma de 4 x EAX, EBP e M. Essa Instruç:iu poJerm arma/,cnar em ali] com uma unh.:a ;nstruç;lo. Esse modo vale a pena'! Difícil di'!.er. Nilo há dúvida de que essa instruç:1o. quando adeq uadamente us:uJa. ec().. nomi:r...a alguns ciclos. A frcqtlêneia com que é usaw depende do compilador e da aplicaç:1o. O problema é que essa. instruç:lo ocupa uma eel1a quantidade de úrea de chip que poderia ler sido usada de modo direrente se essa instrução n:1o estivesse prel>Cnte. Por cxemplo. a eachc de nível I poderia ser mainr. ou o chip poderia ser menor. o que p()~sivclmentc pcnniliria uma velocidade de relógio ligeirJ.n1cnte mais alta, Esses s:lo os lipos de compro missos que os projctis la.~ enfrentam constantemente. Em geral silo realizadas !;x(c n siva.~ si mulaçi\cs de execu~ào :Ulles de moldar qualquer COIsa em :-.i lfelO, ma.~ essas s mlUla~õcs exigem que se tenha uma boo idéia da po!osível carga de lr'.lbalho. Apostar que os projellstas do 8088 não induir.lfll um navegador Wcb em :.cu conjunto de teste é ganhar na cena. Ainda :l!osim. um grJnde número de dellccndentes daquele produto agnr:J. é uSlldo primariamente pura navegar na Web, pot1anto as deciMics tomada;; hâ 20 anos podem estar \.Otalmente erradas para as apliea"iks correntes. Toolwia. em nome da compatibil idade, uma veloque uma earm:terística entre no ehip. c impo;;;;ivcl lir..i-Ia.
5.4.12 Mod os de endereçament o da UltraSPARC III Na ISA UItrJ.SPARC, ttxlas as instruções usam endereçamento imediato ou dc modo registrador, cxceto as que memória. Para n modo registrador. us 5 bits ~i mpJ es mente informam qual registrador usar. Paro modo imediato. uma constante de 13 Oil'i (com ~inal) fnrnece os dados. Não há nenhum outro modo presente parOl as instruç6cs aritméticas. lógicas c similares. Três tipos de instruçõcs endereçam memória: lOAD. STOAE e uma instruç:1o de sincroni:r.aç50 de mulliproc~~ sador. Instrut,:ões lOAD e STOAE tê m dois modos parJ. endereçar memória. O primciro modo calcula:l SOl1l3 de dois n;gistr..!d nrc,s e endereça indiretamente [)OI' ela. O outro é indexação tradicional com um dc... locamcntt} dI! 13 bits (com "in:1l). e ndere~am
5.4.13 Modos de end e reçamento do 8 051 o XII~ I tem uma estnuur.t de endereçamentu m:ruavclmenle regula r. H:i cinco modos rnísic(ls. O mai ....implc:. .: um mndo impHcito que usa li aeumul:Jdor, Muitas i nslru~ õcs eombinam um oper..!lluo com o acumulador. tais C(H I1U ~t) lI1ar. suotrair. c!ctuar opcnu,.;õcs AND nu Q R ellln: um operando e cle. [n;;truçôes 4ue usam o acumulador não tê m bits c.~pceia.is pam mdiear u acumulador 40e está sendo usado. Esse fato c;;tâ implfcito nu upcodc. O segundo ml)(]o é I) modo registrador, no qual o opcmnUo cstâ em um regislr..!dor. Regislr..!dores podem M:r uS:ldos como fo mes e lo.mbém como destinos. O terceiro modo é o endereçamento dircltl. no qual II opcrJnd n está na lIlelllt)ri:1 em um cnúen:ço contido na pnípria instnl!.i:'lu. O quarto mooo é (l indireto de regi;;trador. no qual um registrador COlllém um pollteiro para tloper:lt1dn. Uma ve7.l/ue registradores nnmlais têm ~ oi ts de l:t rgura. operandos enderc~adlls dt!..~sc moou devem esl:lr nus 256 bytc... da pal1e mais baixa ~la mcmóna. O quimo modo é o imediato. no qual U llper.I.lIÚO ~ pane da propria IIlSlnlç:io. O M05 1 também tem um modo de endereçamento especial usado em um número limitado de i nS lnt ~i)es para ar.:cssar ll1ell1{lria. Lcmbre-'\t: de que um M051 pode ter até ó4 KB de memória eXterna de pmgr..!ma c mais 64 KB de IIlClIlorla externa de úadns. É preciso ter algum meio de e nuerc~ar essas memtJri:L~. 1\ rnemlÍria externa de pml:;rJ.ma é manipulaua por dua;; i n ~lruçôcs: WMP. que toma um dc.~locarneIlLO de 16 ous e pode saltar :\lé l/ualquer
o ~
~
• •
;
~
<
•
.
~
i
>
z
~
o
• ~
u•
,
I'
o
N N
-• •"o
c ntl c rc~ o nu memória : t: LCALl. que !,trnbémlul1la mIl deslocamento de 16 bits c pode chamar 11111<1 ~ ub · rolina em quftlqucr lugar nn lIlcm6riu. U acesso 1\ memória externa de dados t! lll:lnipulauo de maneira diferellle. O 805 I tem um rcg islrarJor de pon teiro de Ir, bits denominado OPTA que pode co nter UIIl endereço de mell1ória de 16 bits. P rogra ll1a ~ podem enrre-
gá-In e então ctlllcrcçar indirclamcUle por ele parn referenciar um byle em qunlqucr lugnr do c.'\paço de memória de 64 KB .
~
o
~
8 o u
• • •
~
-" ..• ~
o o
~
o
~
N
o
•
~
o
5.4.14 Discussão de modos de endereçamento Agora j ~ e~ lUd"1l1 os um grande número de modos de cmlcrcçlllllenlo. O ... u .~a d o ~ pelo Pentium 4. UHraSPARC 111 e 1\051 estão resum idos na Tabela 5.8. Todavia, como j,j dissemos. nem Indo modo pode ~cr usado em codn instrução. N.. prlitica.lliio são necessárins muitos modos de endereçamemo para um
D.a
,p. ;, n n n.
on
5
'" ,n
Comparação enlre modos de endereçamento.
Modo de endereçamento
Penllum 4
U)traSPARC 111
AcumWador
8051
es'
X
N(
Imediato
X
DIreto
X
Registrador
X
X
X
Indireto de registrador
X
X
x
Indexado
li
X
de r
X
é. s
De base Indexado
X
X
X
ml paI sár do:
Pilha
5.5 Tipos de instrução Instruções de nrve1 ISA podem ser divididas em aproximadamente meia dúzia de grlll){)S que guardam reluli vfI similaridade de uma máquina para Oulra. ainda que possam.ser difercntcs riOS dclalhes. 'IOdo cumputlldor tem alpm1as in stru~'õcs rum du comum. ucrcscenllldas p
F.m dire 50 d
prill'
mos
5.5.1 Instruções para movimento de dados Copiar dados de 11m lugar par:! outro é a mais rumlamclllrll de todas as operaçõc ~. Por copiar quc reJl1o~ di7er a crinção de um novo objclo, com padrão de bits idêntico ao original. Essa ulili7ól~'ão da pol m ru 'll1tw imentn' . ou ' mudança' , é um pouco dife rcnte de sua Iltili zlIÇiio em linguagem corrente. Quando d;1.eIllOs {IUC Morvin Mongnose se mudou de Nova York I,am a ClImúmia, isso não significa que tenha sido criadn unm c('pin idéutica 110 Sr. Mongouse nempre .~ ignifi c,t llue uma clÍpia identi ca fui criadn no n.'E!i sIJ1ldor c (11lC IJ urig.inal (~ontinu:t intocável na loca1i1.ução 20ü(). Um nUl1lc mel hor para in ~tru çôe~ de lImvimenlo de dados <;:eriu ill ~ tr\l çfJCs dc 'du])lkHÇilo de dados', ma~ o lermo ' movimento de d ad o~' já se finnoll .
qualq tonl1 rnédi: ção d
11ft ll1ms r;I7.Ues por que dlldo<; podelll <;cr copiados de ullla locali,.açào para oulra. Uma é fund'\lnenl,tI : a atritmiçiio de v:l lores ti variáveis. A alribuiçiio
N N
A = EI
é implcmentada com a cópia dn valor que cst(i no cnderclfo de memória fi para a localizaçi1o A pun.fue o J'rogra· Illmlor disSl' llue é para fazcr is~(). A scgunda razão para copiar dados é reJlrc~enl;í. llls pam acesso c Ulilização clióen· It'~. C0ll10 já vimos, muitas instruçõcs s6 podem acessar variáveis quando estus estão (\i s ponfvc i ~ cm rcgiqrado· res. Uma VCllJUC há duas fonles possfvcis para um ite m de dado (memória ou registrador) e que há dois dcstinus pos~rl'ei~ ,,<.In! um item de dado (memórin o u registrador), há quatro lipos diferentes possfveis de cópia . AI1!u tl<; computmlores tem quatro instfuçõcS p:lfa os quatro casos. Outros têm ul1Ia inslruçao para todos os quatro c.,sos. Há ()1I1m~ ;,il1d:1 que usam LOAD para ir da memória até um registrador. STORE para ir dc um registraU(lr até a 1111:lI1ól"ia. MOVE ]llll":l ir de um registrador até um outro regi strador c nenhuma in s tnl~, ão para urna c6pia de lIICIlU'i!"ia para memória. [ l1~tmçüe.~ de movi mento de daJos devem indicar, de algu ma forma. a 4uilntidade de dados a ~cr movida. Em alguma!' ISAs ex istem imtwçõcs p
o u
5.5.2 Operações diádicas
'"
lIiálli cas sãu as que combinam dois opcrando.~ p3r:t produ7i r um resul tadu. Tnda ~ as [ SA~ têm iuslru,õi!5 pllfH efetuar mlição e subtração de inteiros. A mult ipli caçãu e di visão de inteiros também ~ão 4ua ~e um padrão. Ach am o~ deSlleces!\ário ex pli car por q ue computlldorcs são equipados cum instru,õe~ arill1U! tÍl:a.~. Um mllru grupo de opl!ra,ões diádi cas inclui as instruções booleanas. Embura existam 16 rUIl ÇÕt'~ Il\lo · lelll1as dc duas vlIriávcis. poucas m,Ílluinas têm instruções para todas as 16, se é qu e algurm, lell1 . U<;mlll11cntc c~Iilo "rescntc~ 1I~ operações ANO, DA e NOT: às veles t:llllbélll estão presentes as o perações EXCLUSIVE OR, NOA e NANO. Uma utilizlll,âo importante da operação ANO é ex trair bi ts de p:llavras. Considere, por exemplo, uma máquinit CllIl1 põ1 liLvras
o ~ ~
, "
o"
•
~
o
,
o
o o
~
,• • , ~
<"
•
~
•>
OrenH.íie~
10110111 10111100 ! 101101 1 10001011 A OOO(KX)(Kl 111 ! I! 11 (KKItMX)(){) OOOQOO()(l B (máscara)
nOOOO(lOO 10111100 O()(.)()()()Of) OOOÜOOOO A AND B Em ~{'guida. tJ resultado seri a de~lucHdt1 [6 hits para a dirciw para iso[ur o C:lrllctere a ser ex lmfdo na e:mcmidade dir"CÍtlt da pnlavra. Uma utili7.ação i mpo n :1ll1C da upt!ni,üo OR é crnpacotllr bj t~ em uma p:llavr.\, onde empacotar signilic:I fi i rwer~ !'o de eXImir. Parll altcr:r r os 8 bil<; dn extrema direita de uma palavra de32 bits sem perturbar os Olltro~ 2/1 hit~. em primeiru lugar os 8 bits inde~ej:lt los são llI:1scaradm e então o novo caractere I ms~a por urna 01}Cra~-ao OR. como rn o~ tra11l0~ a ~eg uir.
10 11 01 11 101 [1100 11 0 1 IOU lOO()IOl1 A 1.U l111l il l !! I! I 111111 1J (XXXX)(XX) [j (máscara ) 10 11 0 11 [ JOIIII OO 11 01 10 11 OOOO()(MJO A AND B 00000000 OOOO(XJOO UOOOOOOU 010 1O[ [ I C 1(11 [OI I I 1011 I 100 J 101 10110101011! (A AND 13) OR C
j 4
.c
...
A o l)Cni ~ão ANO tende li remover I porque nunca há unia (IUl1l1t idade maior do que I no re~u ltado do que em (Ilmlqucr dm t1pcnmdos. A operaçuo DR tcnde a inserir I porque scmpre h(] 110 mínimo tantos I no re~ultadtl qunnto nl1 tlpenHlth1 que tivel" 11 maior número de I.;A uperaçãu EXCLUSIVE OR. l)llr outro lauu. é simétricõ,. {' te!!de. rm médiH, ncm :r i!1~eri1" nem a rel1\uvcr I. Essa simclriu em relação a I e Oé ú!i l uCl1sionulmentc, por exe mplo. nl1 gemçiio de tllílrlCIOS aleatórios.
"o o ~
•
u
N N N
I-Ioje. a maioria do!:' computauores llllnbém sUI>urta um conjunto de instnu;ílc!\ ue I}onlo nUlltrl11l C que curt'c!ipondcllI aproxinmdumclllc ti nperuçõcs ari tméticas Clllll inteiros. Grande parte das Im\quilla ~ fl'rI1 cce :111 menos do i ~ comprimentos cle números de ponlO nutuanlc. O~ mais Çur10ll para \'clocidade C os mais longos par;! ocas i õc~ em que são necessários muitos b il.'J de precisão. Ernbom haja 1I1uitns variações possfvcis para furmAtus de ponto luanlc. agor!! um (inico padrão é :uJotado
nu-
•• "o ~
•
= ~
8
o u
•
~
• •"
~
=
e
• w
'•. o
U·
N
o
•
~
o"
5.5.3 Operações monádicas Operações rnoruídicns têm um s6 operando e produzem um só resultadn. Cotlln é prcd~n c~pccilicar um endereço ri menos do que pum ullla operaçilll di:ídicn, às vezes as ins tnlçi'les s1\o lIIai ~ c llrta ~, embora frc(lilentemen! e outras infnm l;1çôes tenham de ser e~ peci ljcmlas, In struções pllrOl cle~I OCOl r ou rooar o conte1id(1 de UIII;1 palavra ou byte são bOlstante utcis c co~ IUll m m ser forne cidas em di versas vmi açf~s, f)el'lucamel11 os são operações nas quais m bits sôo movidos para a t'~{lucHla ou para li dirciw, com bil $ que silo empurrados p:m. fura na extre rnidudc da palavra e. portanto, siio perdidos, Rotaçfles ~50 dcsloc;lIl1Cntos nos quais hits e1l1pllrrado~ para fom por umn ex tre rnid"de rea parecem na outr:t eX lrell1idnde_ A diferença ell1re um deslocame ntu e unIU rotação é ilustrnd:l a seguir, .
[){XXl(XlOO OOOOUO[){l 00000000 OI I ((Xl ( ( A 00000000 UOOOOO()O 00000000 000 1I J (Xl A des locado 2 hits para li {tireitu I IOOOOUO UOOUOOUO OOOO()(JOO 00011100 A wtaçionado 2 \"li!s para .. direita Deslocamcntos e rotações para li esq uerda e pOlra a direit
(((((((( (((((((( (((((((( (((( OOOOA OU] 11 111 ] J I J I J 11 11111111 111 J 1100 A deslocadQ sem extensãu de ~nal 11111111 I J 111111 11111111 1IIIII OOA des locado co m extc n ,~ ãode s inal Uma utilização i11l1}()f'tante do de.~locall1ento é lIlultipli cH~'iio c di visão por Jlotêr u.:ias de 2. Se um inteiro positivo for desloclldo para a e~qllenla k bits, o resultado. a não ser
111] II J I 11111111 11111 111 11111110 - I e m complement o de I 1I1 11111 1II J 11I1 J III1 111 1 J J 11100 - I dcsloc;ulu I bil pura a esque rd;t :::o - 3 I J 1I 1I11 111111 11 111 11 111 I I 111 OOU - I desloc.ulo 2 bits para a esquerda = - 7 Deslocar para a e~q lle rda nÚll1em.~ negativos em complemento de I nüo permite a ll1ultipl icação por 2, No Cll1nntn. deslocar pam a direita simula li divisiio corretamente, Agom considere uma re presentação e ll1 complemento de 2 do mimem - I, Quaudn de ~locml() 6 bits para a direita COIl\ extensão de sinal, e le dá - I. o
;orre:.)~ doi) X:~ em lU !lu::E 754
I
cmlc-
:UlCIllC
forne para a ..::~ ~iio
\ difc
Cena~ npcraçõc ... diádicu) ocorrem com tania frcqUênda com delenllinadlls Clpcnllldos que. às \Il!ZCS , a~ ISt\S lêm OpcfílÇõe~ IIlOlládicill. para cfelUá-l:ls r:lpidulIIClIlt. Movcr lCru puni UIII3 paluvra de memória ou registrôldllr é cxtremalllellte elUICUIll n,\ inidôllil.açào de UJIl cálculo. Clam 411e move!r zem é UIll calOU c),lledaJ das instruçõcs gemis de mm H11cnto de dadolo. Por que~li\o de cficiência. muilllS veb.!~ é fOlTIcc ida uma operação CAL com um únku clldereifo: ;1 loculil.a\:ao a :ocr lihel"lllln. isto é, aju~tada pa"'J I.ero. A npeOlção de ~,IILI !lr I a 11 111:1 p..1lavrJ também é comumenle u:.ndu p:tru cOlllagem. Ullm forma monádica tlli U l~ · lJ'ução AOO é a operaifilulNC, que !>oma I. A Ilpcnl~ilo NEG é um outm cxcmplo. Negar X é, nu vcrdade. ca!culur O X, IUlla ~uhl ruifàll dJádic .. ; porém, mais lima VCL, por CU USlI de! ~ lLa uliliLlIlfi10 frcq\h!ule, à~ veze~ é fornecida uma inslrução NEG ~epa r.uJiL . Nc~!>e eli:o\) é im\>ol1ante nb!>ervlIr 11 diferellifll entre 11 uperação ari lmética NEG e li Opt!rJ~\ão lógi(;a NOT. A ill)o!ro.L~ao NEG produl. (J inverso ildith'o dc um /1limero (o número que, llUlIl1do SOllllltlo au originill, dá 0'. A operuçào NOT ~JtllplC1>l1Iente illvcl1c todos os bi t:. il1l.lh'iduais na palavrJ. As operações:.ào muitn ~I!ni l ares e, na vcrdade. pam um !>i!>ICIIlJ. qUe U:.D repre..'il!l1tac,:ão de complt:/Ilelllo de I, dlls são idênticas. (Em aritmética de cOll1plcrncnlU de 2 , li in!>lnlpo NEO é exccutuda primciro in"ent ndo todus (I~ hit~ individuais, e então sotlUll1dn I .) I n!>tnl~·I1c.:!> dHltliea,<, c mcm:'i dicas CO~l lII n a ll1 scr agnl pada ~ cnnforme !>LIa uti lizllÇiiu, em \'Cf. de pelo mímero dc opcrmldo!> que reljuerelll. UllI lll"upo abrange npernçôes lIriUllétiCllS, inc lu indo t1egaçiio. O OlU ro grupo inclui U]lCrac,:õc~ l ógica~ e de!>ltM..ul1lellhl, \'bw que.! eSSa~ dua ~ categorialo IHI maioria das vaes são u:.:ul.. ~ em C()t1junlo panl realizJ.r e,\ lnlçun de dadus.
M N N
o.o ,
U
"
•c
•
~
o
,
c
c
o u o ~
5.5.4 Comparações e desvios condicionais r nK1al) iiffic~
lU :.C o inuará
lJ) ui\.u IIlIipll-
pur ,!l. Ilkuhu' o UI1IU ! .\ dn i:. co:.lll du UI1l :.idere, ! ~loc,\-
2. No pura
U
llI,lis lucrdu ,
11
,Crlm )
a cadu ' 11ll1ll'
100enlu 'i.! opc-
Quu!>C lodo!> n~ progrumas precisam du c.:apacidade de lt:lolllr ~eu) dados c allerar ti !>t!qüência de i n~tmçOc., " !>el" c,\ecutall.! com ba~c no!> rcsu Jt :ldo). Um cxemplo é a função raiz quadrada, Vi. Se .\ for negmivo, (I procedimento cmite uma lUe ll ~agclll de erro; ca~o cUl1I rário, calcula a raiz. C a condição for cumprida. À!> \'el'C~ um bit na instmçiin ind1cll ~e u d e ~\ in dcvc ucorrer se a condição for cumpriclu ou se :t condiçãll nãu for c.:umpridu, re:,pcclivumenle. Muil;1!> \ eLcs ,) endereçu-alvo não ~ absoluto, ma!> rdlllivlI à i n~t nl ç!l.{l Cllrreme. A cOllcliçílo mui!> COIl1UIll ;c st.!r testadu é ~e Ulll determinado bit na máqui na t O ou não. Se uma i1l.'otruçuo lesInl" n bh dc ~illal de UII1 mí mem c desvi ar para RÓTUL.O se ele for J, IIS decl lirac,:õe~ lllle começam em RÓ'f'UI,V :.cr:lo cxectltuda~ ,> e o mimem fnr negativo, c as IlechlraçÕt.!S ' Iut: "em apó~ o dt:s"jo cOlldidollal ~crãu ~xcculalhl!> !>C () lllímcl"Il for li ou lllbill\o. MuitJ!> máqll ina~ lêm bit:. lk código de condição que ~ão uloadll~ I)ara imheilf condi..;õc!> e~pedfíca~ . I'or exelllpln, pude ha\ er um hu dc ex.;e!>so que é IlIl1fCildo em I ~el11pro.! que ulIla Ullemçílo aritméticllller um re!>uhudo il1l.:lIrrclO. Te:.lamln e~ ,o! bit, \ e rifí~1I11111~ exces!>{J nu opera,e .X:OITt:U um CXCCl>~o, l)Ode ~e fllLcr um de ~\ i(1 par:! li ma rotina de erro c executar :IÇÕClo cOl"rclivlIs. De modo !>ellldh:lIlte, alg u n~ proct!ssllt l (lre~ l êm um hil dc v:li-u1l\ quc ~ marcmlo quando UIl1 V:Ii , u lll l nHl~hllr da P:II,I 11 hil d,. l \lrCIII" c~lJuerdJ , por exemplo, !>e d()i~ lHimcro~ n egati\'o~ forem ~lIlIIado!>. Um vui-L1111 d,J hit dll extrema c't]uenl,. é hcm 1101"111111 e não dcve ~er confundiLlo com um exco.!!>S(). TeMar li bil lIe \ai um é l1ece~~:\nll p:lrD tlnllllêlicil dt: precisào nllíhipla, i!>[{) é, quundo um inteiro é n:prc:.cnlado por dua!> 011 nHü~ palavra:.. 'Jc)lur \I \o ... I' lr é illlptll1anle pllra laço!> e muilas outms fi nal i dad~ . Se tudas as i n!>lrtlçõc~ de desvio condie1OIllllteslarem :Olllllemc I bit , lC!>1:Ir uma dt:termi mula palavra paro LCro prcci~aria de um teslC ~e parudo par:! eadu hil para garanlir que nenhum era um I. Para evilur es~a situação, llluitlls m~llu i n as têm um a instrução para tcstar um!! p:IJavr:. e (I e~ v i ar lo\! da for lem . ~ claro que es!>a soluçilo lll~ n as llasSij a rc~po n sa hi1id ll dc par.! 11 microilrquitetunl. N,l práti(;:I. tl hardware LI ~ua l mt:nte contém um registrador cujos bi l ~ pllS~" 1II todos por lIU1a opc rill(ão OI{ pam dar um únieo hil que lIItilflllJ sc o rcg:i~ lrad ur contém ll uaisquer bits I. O bil Z na Figura 4. 1 normalmcnte seria caleuhldn pur uma opcr:l~ão OR cOlll lodos os bits de saída da ULA e entilo se inveneria Il ~sll lt atlo. Comparar duu:o p.. I,1\ r.!~ ou caroictcres P;lnl vcr se são iguais, 011, se não forem , ' ltml lldes é Jmlior, lambém t! inlporlamc. por ell.empJo. em classifi cllção. Pura excclllar esse leste são necessários Irês endereços: dois pilnl oS itens de dudus e um para I) enderec,:o p :lIlI onde tl e~ vi ;t r sc li condiçiio for verdadei ra . Co mp utad orc~ cujo formu lO de instruc,:ão pcnnile Irc~ enderc,<us por instrução nllll lêm problema algum, lIlas os que niill tê m ess~ formato de in~tt"LI ~ii\l dt:vcll1 hlLcr ,1lgUlllil coisa pnra Cllnlomar e~sc problema. Um .. !>1I1uçãll comum é forn..:eer uma instrução que faz uma compllmção e ajusla um ou nlíli~ bits de condiçãl) pilríl reg i ~lrar tl rc!>u hwlo. UlIla in!>tnlção sub~eqüe nh! pode teslllr os bits cI..: condição o.! desviar se os dois valores eomparnlllls furem Igulli!>, ou dife re lll c~, ou sc o Jlrillleiro for mai"r c :I!>!>i1l1 IlOr diante. O Ptntium ~ e a UhmSPARC 111 u~all1 C S~II abordagem . Há alguns ')lllllo) íoutis ..:n\'olvidos na (;oll1 plirnçilo de dois mímcms. Por exemplu. compuralião 1130 ~ tall ~i lll pies quanto sublnu;ílu. Se um mimero posit ivo mui lll grande for eumparudo com um nlllllcro negmivo muito graudt:, ôlloUblnlçâfl fC !>ultará em ex(;c!>!>o, Ullla VCL que u resultado dn s uhtru~ã(l não llOde ser reprc~cl1lad(). Ainda assim, ,I in5lnlçàu de ctJl11pamc,:ão devc dClerminar se IJ t C~ l e especi fí cudo fu i smisf..:ito e relomar a rcS ])()SIII correIa - nào há ncnhum cxce~ ..o em cC1Inpar:lc,:iks. Um oulro pomo suti l em relação à comparuç1io de mímeros é decidir se os mímcros devem ~el" ou não .:;on ~i derado~ com ~il1ul Numeros hináriu!> ,Ir.! três hits podem ser ordenado~ cnjlforme um de! tlnis IlIUt!I)!>. Do mcnor paru o lIIaior:
•> z
... N N
•• o"
~
•,
o.
• o
U
• •
~
Sem sma!
I
Com sinal
000
100 lo menorj
001
101
dlO
110
011
I II
100
000
101
001
110
010
111
011 lo malorl
~
,•
""
1\ coluna tia cS
o
5.5.5 Instruções de chamada de procedimento
,
"
~
~ ~
• o"
•
'"
o
Um proccdirm:rJlu é urn grupu de inslnu;ões que rcnli'l,a alguma hlll:fa c pode ser invocado tchillnado) de diversas partes do progmrnn. O lermu SlIh-roliml muitas veles é usado em ve:- de proccdimenlo, em e .. pccial quandu se rerere a programa .. em linguagem de montagem. Em 1<1\'11, o lenHO usado é método. Quandn Cl proct:dimenlll cunclui sua tarefa, dev{' ret~lnl<1r à dl.'CI<1rnção <1p()~ a clm111<1da. Pllnanto. o endereço de retorno dc\ e ~er transmitido :111 procedimento ou salvo em algum lugar de modo que pos~a ser lucalizado quando ror" hora de retOflmr. O endcre~n úe retorno pode ser colocado em Ilualquer 11111 de trê~ lugareli: na mern6ria, cm 11111 regi .. rrnclur nu na pilha. A pior ~o l uçào é, de longe. mas lIluiro longe, cnlucá-Io em u111illÍnica localilaçl\o dc memória fixa . Nes..e esquema. se O pmcedimentll chamou um outro proceuimclltu. 1\ segunda ch:uIHuJa furia cum q ue~, enuereço de retmno da primeiru fosse perd ido. Unm pe(luena melhoria é fazer !;om ode reluTlwr tlesvümdo indirel,Hllcnte "am a primeira palavm ou, ~ U hardware cujucar \I llpende para desvio na prillleirrt p:tlnvra jUn1U com o endereljo de retorno, deliviando direlamente plln! ele. O procedi mento pode chamar outros procedimentos ponlue cada um lem espaço pari! 11111 endereço de retQrno. Se (l procedimcnto chamar a si pr6prio, esse e~(IUellm falha, ponlue o primeiro endereço de retorno será destrufdo pela 'iCguntla chamada. A cnpllcidade de um procedimcnto chamar a si mesmo. denom inada recllrsiio, é de extrem!! imporlância para progmIIlndorcl'l práticO!iI, bem CO III(l te6rieos. Além tio omi .. , se o procc
5.5.6 Controle de laço A necessi{lnde de cxecutar um grupo de in~lm~'õt' s por 11m número filiO de vezes ocorre frcllilcntcl1lcnle e, por isso, ll l guma~ mátjuinns tem in .. tm\'õcs que facilitllm c~l'Ia upcr:u;ão. Todos os e~ue m lls cnvtJl\'t' m 11111 contador que é aument:ldo uu redu7iuo de alguma constante cada \'C7. que I) laço é percorrido. () ctmt auor lambém é testadll uma vez, cada V('1. que o Il1ljo é percorrido. Se uma cer11l condiçào ocorrer, o la\'11 é ctlllclufdll. Um mélodo iniciali7Õ1 um l'Un1ador fura do Inço e então imediatamente ctlmeça a executar I) código do laço. A última illstmçno do hJço atunlizo o contador e, se 11 condiçiio de término ai nda não esliver sati .. ft-ita, desvia de volta à primeira instmção do laço. Caso contrário, O l<1ço é CO{lclll ítlo e passa adiante, executando :1 primeira instrução ,Ipó~ o laço. Essu fOrl1l11 dc fazer Imjo é raracterizada C01110 l u~'o do tipo ' Ic~ t e no final' c é ihr ~ trad:t em C I1tl Figur..1 5.22(a). (Aqui ,xx1crfullIo5 us,u Java I;IOHjUC ela 11:10 tetll urna decluruçiio gOI0.) O laço do tipo te,~le no fina l lern a seguinte propricdade: o Inço sempre ser(i I:xeclltadn :tn mcno~ uma VC/ , mCsmu qUI! Ir ~ejll mcnor ou igu:l 1 a O. Considere, conto exemplo. um progranlõ1 que llultlh:'11l res.illtro~ do pe~s()nl de li ma empresa. Em certo 1;101110, o programa está II.-ndo infonnllçõcs sobre determinado cmpregado. Ele lê 11, o lIúmero de filhos que tl empregado tcm e execnla um l a~'tll/ \'CleS, uma ve7 para cuda filho , l' lê o nome. sexo e dutn lle auiversárin du crial1ça, ue modo que li ert1Jl l e~1I flI IS~:! lhe enviar um presente dc ani\'eNirio, que é U11l dos
1",, ; L1:
"'N N
iI (I > n) gato l2;
primeira declslação
L1: primeira declaraçêo; Fl yura 5 .22
(aI Laço do tipo ·teste final ' (bl Laço do tJpo 'teste no inicio'.
úlllma declaraçAo
úlUma declaraçAo i,", I + 1: . I1 (i
no
j. j
't
I;
gato LI ;
•
L2:
~
(a)
(bl
bcncfício~ iuliânnai:. oferecidos por ela. Se o emprcgildo não tiver filhos ,
mostra ()~ :pcnde Ilc
:nuções.
de di vcrunlldo !>C ' 1110 connitido au rador ou a. Ne~se .Ie Ulor,n:IiO de l , o proII.Ic par.! tll I)ltdc
challlur I.ula. A pmgra-
rocedi rn !>él'ic regis1110 for
I
lo pana Ic proI
espe-
ço~
=\~o
de de
e, por que
Ir I
uma
çn, A volta liÇão igura ~<eL ,
.J.oa l 11.
n
.\u C
dos
do mais uma
VI.!!
c enviará
prel>cnle~,
/I
será O, mas o laço ainda ~crá executa-
e d.uá resultado inc01Teto .
A Figura 5.22(h) Ult))!ra um OUlro modo tle exeCII!ur o teste. que funciona bem mesmo para 11 menor ou iguul a O. Note que () IC ~le é diferente nos doil> casos, de modo que, se uma unicn inslruçiil) ISA fi/oCr o incremento e lamhéll1,lte~tC.IIl> plojclI~ta~ são forçados fi esclllher Ullllllétodo ou o Oulro. f\)II:>idere (I código qUe de veria ser produzido para li declarução
o
""o
o u o
~
·••"
-" · a
lor (i '" O. 1 < n; IH) ( statements 1
~
S~ 11 eOlllpi ludur não tiver nen hurnH infnrm O, por exemplo, verificundo onde /I é mnbuido, poderia usar o cód igo melhor da Figura 5.22(a). O padrlio FORTRAN antes 'Ilinnava que IOdol> Ul> laçu) de~' eri,lIn ser r.:xec utHd ns uma veL, p.lra permitir que () eódigo mais ct1cienlc ,1;\ Figur'l 5.22{
e~pera
ocupad ••.
EIS Of\IA .
Agora, di M.:utireIl IO~ c.ldJ 11111 deles. O mélndn ti.: I:JS mui), ~im pJ e~ j)(lsl>fvcl é u EIS l>rug ra nmda , que é comumente mada em microprncessutlure) de haixa teclwlogiu, por exemplo, em ),istcmas emhutido) 011 em sistemas que têm de resl)(lIlder raridamente a Ullldan\::t~ CXlcm.l~ (l>i~ t ema" de tempo rea l). Essas CPU~ ul>ualmenh! têm uma tinie'l in~ltUçào de entnlCla c uma unica inslfuçllo de ~;:tída. Cada uma das instruç.iks M!lecinna um dos dispositivos de EIS. lJlI1línico caraclere é tr.m sfe rido entre 11m regi~ t nuJor lixo 110 Jlroce~)ad()r e o tlh.JlositivlI de EIS l>decinnado. O proce~~udtl( deve: exceut:lr uma seqilêm~ ia explkita de hll>!ruçõe~ para eada um dos CUfilcteres lidos ou escritos. COIno exemplo ~Implel> d el>~ método, considere um hmninal com 'I"atro registradores de I byte, corno mnsIm ti Fit;unt 5.23 . Dois rcgl~ trad orcs ~ão U~iU.lOS rara elllruda, um de e~tudo e UIII de dados e ,Iois paru ~arda . !Umbém um paru e~t;lI l n e um ram d'ldos. Cada um lem um e ndereljll exclusivo. Se a F.JS usada for do lipo lIl
fluur.5.23 Reglllradores de dlsposUivo para um ter-
o ~
Nenhum \lutm gru]lü di in)lruções exi be tantil vilriedtld r.: de máquin'l para m áquinu qu.mto as instruçõcs de Pi S. Il á II elo eloquelll.tlro difereme) cle r..:JS em uso Cimente em cO lllputudol'e~ pc~soais. Sihl eles :
3.
~
"
5.5.1 Entrada/s aida
1. bi S prot;nulltul.t Lum 2 . biS por III1CtnJpção.
•> 2
I)I.~
·
Pronto para pró.lmo caractero
I
~torrupçAO habilitada
Estado do monitor
Interrupção habilitada
mmal simples. Butlar do tect
Sufter do monitor
Caractere recebido
Caraetare a apresentar
•
u
I1
publlc stallc vold oulpul burler(char bu!! ]. Inl counl)
N N
!
/I Produza um lJIoco de dados para o
Inl status do dispositivo, i, ready;
••
o
u
•
"
"8
figura 5 .24
Exemplo de
gramada .
EIs
for (I = O; I < count; 1++) I pro-
doi status .. In(dlspley_ slalusJeg): OS" (status :lo> 7) & OxOl : } while (Ioady I", 1): out(display bufler reg. bul[iJ):
ready
1/ obtenhll estlldo
11 isole bit ready
~
o
u
• • •" "
u
~
·.""• w
o
~
• o • N
~
o"
mente 11 bit ('o é gerada uma iuterrupção: caso contrário. não é gcrad;, uma inlclTup.,:ão (il1l~rr!lpçõc~ ~c rilll discutidas em ureve). Quando usa EiS progmrn:tda pnra obter entrada, ;\ CPU lI()nll:l1mcnlc ~c OIlCOI1II<1 em um Itll;O rcslrilu lluC 1[1 repelida::: vezes n regislnulor de cst:ldo do teclado à espCr.l du bit 7 pnrn Cllliiu continuar. Quando isso acon ~ Ieee, () solhvlIrc lê u registrador de bul:rcr du teclado par..lllbter o cnractere. Ao ler u registrador de dado~ do teclado li regi~tr"dor faz COIll que o oit CARACTERE DISPONlvEL (oit 7) seja reajustauo para ti. A sarU,! funciona de modo similar. Para escrever um caractere na tela. o !!ortware primeiro lê o regi ~ trador de estado do moni tor para ver ~e o bit READY é I. Se não for. executa o laço até que o bit vá panl I, o que indica {[UC o di sposi ti vo t:st:\ pronto para acei t:IT um caractere. Tão logo o teml il1111 esteja pronto, {I sonw,!re escreve um caractere pllra o regist rador de bul"rer do monitor. o que fnz com quc ele seja transmitido pllnl a tel a. c também que o dispositivo libere u hit READY no regi~lrador de estado do monitor. Qucmdo o clIraclerc r(lr aprc~clltado n:1 tela e o te rminal estiver prulll.o para tmtm o próximo camctere, o bit READY é automaticamcnte aj \l~lndo para I 1I0vamCll\e pelu conlrolador. Como um exemplo de EIS progrrlll1nda. considere o procedimento Java da Figura ~.24 , Esse procedimento é chmnado cum dois parâmetros: UI11 vetor de cafilclcrc s para snfdn e o mimero de cafilClere~ presente~ nu velOr, até [ K. O corpo do procedimento é um I;lço que envia caracteres para li ~afda um por vez. Para c:lda caractere, primeiro iI CPU tem dc cspcrur até (Iue o dispositivo estejit prunlo, e então envia o carActere. Os pmcedi!llC ll ltl.~;/I e O/ff ~erialll típkll~ rotinas de linguagem de montagem para ler e e~cre\"er O~ registradores du dispo~itivo cspecificn du~ por um primeiro pllrârnetro. de ou para a va riável especi ficada por um segundo parâmctro. A divisiin por 128 se livra dos 7 bits de ordcm haixa deixando {) bit AEADY no bit O. A des valllngem primordial dn EiS progffllllada é <[ue a CPU gasta gr;lIId(" p:u1e de ~eu tcmpo em ullllaçn res trito espenmJ(l (Io, 11 cnntw" ladnr DMA raz unm rel[ uisiç:io ao barramento pafl1 ler u byte 100 da memória, du meSllln IIltxln que li C PU leria dt! lI1elllória. Após ter obtido esse byte, o controludor UM A r:lz tllnR rc<[u isiçiio FJS 110 di ~ ptl ~ itivo 4 pllrll escrever () byte pam ele. Apús:l conclusiio de
&IJnln
LJ
r Fluur. 5.25 Sistema com um controlador DMA.
'do dl~U!i . lrfl restrilu
f:l L_
I ••i"i.~v..\
EnóOroço
c"F~·~m
--""'
bso "cn/l.
M!irrll)liIJ
, li ~-
""
II
~'I
.... N N
o
••,
~
" "
" •
~
o
I
Barramento
,do rcclu _ .Iroltlnr de
Idica que
Im Cllrac_ ;111 cJuc (I ) !lU relu J nll\'lI _
IIlcllln é :tur, Ult!
primei. lIeom
!ic•• tlos ,I,!
livról
rc~rri ·
r lIo!d.1 mp/c:.
(ulcr, ·enlc. gerar çÃO mdu o.)
li
Nn lui·
JrI' 101'
>.'
ço de J c llccn.:nlcul.. .)l!U rcgilllrndor de conlugélU de J. Se 11 contagem do registrador .. indu for maior do quc 0, um OUIW hylc é llllu di' memória e elllão cloCrito paro o disposi tivo, (Juandu II cimta.gtm por fim chega li O, o ctlIlIrnludor DMA pára de lramfenr dndoll c utiva alinha de inlcrmpção no chlp du ('PU . Curo DMA. li C PU tem de inicializar apenus alguns regis tradores. Logo após, elll está Ih re
paru Itw:r Ilua1quer 01111 u COi)3 até que li Ir..msfcrêncin complo.:w scj:1 concluCda, quandn então obtém uma imemlp!fão do cOlltroluc!or OMA. Alguns contro ludore~ OMA têm dois, trê~ nu mais conjumos de rt!gi ~ Ir.l(lorcs, IlllfllUlIU ))0111.:111 controlar \ árias Iral1~rcrêndas simultflneas. Emhtlr:lll DMA alh ic muito íl CPU da carga til! EIS. o proccsso não é tOlalmente livro.:. Se 11m dispu~ilivo de ahu vcltlCidadc. CUIlIO 11111 Ilhco, estiver sendo executllc!ll por DM A. serão necessários muitos ciclu~ de hamlnlt!nlCJ. lanlO pam rderênda!> a memória quall10 para rderências a dispositivos. Dumnte esses ciclo!'> a CPU terá de bperar (a prioridade du Dr.IA no harramento t sempre muior do (Itie a da CPLJ pur d:1 CPU t denominado m ilho de ddn. Ainda lIhim, o gunho pur niln ter de tratar uma illtemlllÇão IlOf hyte - 011 plllavra - tnmsferidn cllmpcn!>a em llIuito a pe rda dc\ Ida :to muhõ de ciclo.
5.5.8 Instruções do Pentium 4 NI!~I.t )C~il.n .: Iht~ tlua~ M:guilllcs. c~lud:lrcmlb o~ conjun tos de in~tnlçõc!'> de nO!'>~:JS Ires l1lá(ltlinu!> de e,\clII · plu: ti 1\:l1Iilllll -I . normalmente gcruda~ p"lr ctllllpilatlul'\!'. JIloll~ 11m cunjuntu de instruções (lU\! mramcntc são tbudll!> \lU ~1io usadas !'>01l1eOle pcln !'>iSICIl1,1 opc I1\cional . 1.111 nO~ ~ .1 (Ii ~e u l>~:i\), roc:llil.urClHtl/> :11> inl>1nlçõcl> cumulls. Vamtl~ começar com () Pcntium 4. n CtllljulltlJ de iJll>lnlç/)..:s tio PcntiUIIl '" é uma mbLUra tle inslruçõcl> tl"\! rUl.cm sentido em modo 32 bit/> c in~ tru\'i\c!'> IllIe rCIHOJl llJl1I fll>ua vida anterior comu um 808K. Na Figura 5.26 IIUblnUIlOS III1UI l)Cllucnu I>dc~:ilu da~ ;1))lmçi'k:!'> de inh:;nh mai/> COnlU/b que os co mi>iludorc ~ e I'mgnll1\adorcl> pruvavdlllcmc Ul>.ll1ln I1Ih dias di! hoje. 1:I>~ iI lil>t" c.!'>lá lotl!!e tle !'>cr complcta. porque niio indui in~lntçÕl!'!' de IXllIlu flutuante, in!'>l rtll.:ik:. de controlé e nem JIIe~nUI ;l lglllll,l ~ ,I.t~ ilb tru!fÕC~ de inteiros mai~ cAótica". C01l10 tbar um bytc de Kbit~ em AL par'd n:ahLar cumulla de tabela. ~i1o uh!'>[allle, dá lima ooa idéia dUlJue O Pentiurn 4 pode fa.lcr. Muita!'> da!'> iU~lIllÇões do Pemium 4 rdcrcndarn IUH Im dois operandol>, seja (;111 regislnldon:s, seja nH I11C!llI' ria. Por e.\clI1plo, a il1l>tnll~:lIo ADD, de dois opcrandos, soma H fonte eoJtlIl destino. c a instruçill) ele UIll ol>erantlo, INC_ il1cn:mcl1I:1 (l>UIllU I tnlçÕCl> têm di versas variuntc~ (IUC ~u(lrdam e!>lrcitH rela\ão cum da~ . p,lr .:xcmplo. li!> instruçôel> de deslocamentu podem de!'>loclir para a direita 011 par.! OI cS1lnerda c podcm d:Jr ou u5u tr:ltamenlo t::l1k!Cio.1 ali bit de sinal. Grande pane da!> instruções tcm uma vari..:dmle dc direrentes cuddicaçõcl>, dependemlll da natureza du~ operandol>. Nu Figura 5.26. Ib CIIIl1 I)()) SAC são funtes de inforllmção c não l>1I0 íllterudos. Por cIllupamçüo, os campos DST são deslinll!> e lIunllalmente são modilkado$ pela instnu;iio. Há al~urnlLs regms sohre o que é penn itido a ul1Ia fll1HC 011 11 um (k~ti ll o Ijlle vm'üllll eml1icamcnlc de in~lrução panl instJ'ução, mas não entraremos ncs~c a~Sullttl aepli . Muita!> iI\)truçô~s tl!mtrês variantes, para operumlos de 8. 16 e 32 bits, rl!spcctivôlmcnle. Ela~ são distinguida .... por IlIk:Ulb diferente!> c/ou por um hit na in)trução. A listll da Fi~urn 5.26 dá ênfase tas in ) tru\iõc~ de 32 bits. p,lr t.,:om·cnicl1cia. divlllimm IIS instnlçt'ícs em ~,(jritJ) grupo:). O primeiro grupo contém in~ truçõcs (11IC movem datlo!'> Ik:hl mácluinu . entre regi!>tradore!r., 11 memória e a pilha. O !'>cgundo ~rupo efetua aritmética, com l>il1al c ~C l1l ~inal I'ara ll1uhiplicat;ão c divisão, o produto ou dividendo de 64 bits é arlllllL.Clllldo cm EAX (pune de ilrth: 1lI balAu) c EDX (Jlarte de ordem alta). O tcrt.,:ei m ~"uJ1 () cfCtllu aritmética decimul cm código binário (UCO - Binury Clltlcd Deci mal) trulllllllo cada byte COll\U du\) uihhl es de 4 bits. Cada nihble contém um dígiw dccimal (O a 9). Não ):10 usadas as COIllhilHlI':ÔCS de bit!'> 1010 a 1111 . Assim, um int eiro de 16 bits Ilude conter um mimero decimal de O a 9991) _ Embmll inefici cllIe, e!>!>:J IOflllU de armal.cnamcnto elimina a necessidade de COJlvcner entrada decimal para binária e Ilcl}oi~ convertê-Ia nuvamcnte para dccimal par.! surda. Essas instruções l>ão Ul>atl:1S pura eretuar aritmética nos nümero~ BCI). Sfiu llmÍlu uMldas em jlmgramas COBOL.
•> z ~
,• ~
•
u
IX)
N
Tnm...,6nc1l1
M<Mm'I!to
N
MOV OST,SRC
MOVI SAC rl08T PIISIe SAC 11. pl4/)a
PUS,! SRC
••o
XCHOOS1,DS2 lEA DST,SAC CMO\Ioc O8T,8
~
,•
P"""-'IeOSIIOS2
..
•
5omeSACcomOSr
o
SUB DSr.SAC MUl SRC IMUL $nc D/Y SRC ICIV 811C
Subtrlia SAC (N DST Mulllpl!que EAX".... snc (IMlm altIIIl) M~ EAJ( SRe com...w)
'-'
•
~
• •, ,
~
AOC DlT.SAC S88 osr,SRC INC D5T
"
OEC osr
NEãoS'T--
"
~
o
f lgur.5.28
~
Seleção de
•
~
o"
ÇOIIUo!e
8eflol coodicIO!1ai. com bII'" Im riOS
Aetofne do'~ -
IAEl
ReIof". de"DtrUPÇAo
....!!í!.!!!.
a.tue wrprir çondIçio INr " lok:Ie um. lmerrlJpÇlo de lIOItYr,r. INTO Inte"ompa M !li! de 11!eft8O ..~ '-_---'ma~ lClOPn
0MdD EOX.EAX pot 8AC 1~ ....Q 0Mda EOX.EAX jIOf 8AC 100m "'*l Some SRC çom_OST• ..,1110 - . . bit ........ SI.CIu... 5RC. v.lI""" de OST Somei.OST
coos
Call~'
nos
"'rt\IIIet~
c.deIa
ea.s.••
McMI CIOcIII\II
~f' M' c.deID SCAS _._ ---1 E.oIIrOOe Cllau
-
Códigos '"' c:ondIçAo
Subtraia 1 de OS r Negue osr IUbbaill O5T de O
Instruções de inteiro! do
Pentium 4.
sre
II bil de vII'um ITI! '&II'ehadOf EFLAGS
I..Ibor. bit do ~III" .... ,.tradof EFLAOS CompItrntnIt biI de vII·um ..-n II!gj5111dof erLAG
STO
AjUl*!.!'U~ d!,.eçAo em 1'0
CI.O
UbenI bil '" dhçlo.!!'l f.Qlttr~ EFLAOS
911
biI "'...... D'1I~~ EF\.AGS lI:Iere bft ele ....., .... f!!It.lraclof E~ P._res;.tredor EFI.AOS pera. pf'tla
CU PUStff'O PQPFO LAHF
Bootllanas
i~~~~i~l;ii~~~;~~~
rtIIIor EFLA09
RIIIlrI' ~tr.do, erLÃãS da ~Ia C'If&g\HI AH 'II~do rell~~ E~LAOS
""'ffiSWê'~']OS!!:'=~-~~,~-~ da 11_ ~W..:a~ d;õST pari JIII,a cIviso\o SAl IF
Armaun.I "H.m 'fgilt" rlOf VLAGS
bit EsIerIda EAX EUlC EAX ~ Estenda "IimeIO de 111 bits 11'" AX lIatl ENTER StZE.L Y C,. quadro ele piltr. ge.rll brln SIZE LEAYE Da ~ pHhn CCflltrufda)lO'
CWO
[)esloe8 ......,o1'folaçllo
SAlJSAA on.. DealaqUII OS! "".. 8"'l.... '(I"'dl',.",. , bit!! StiUSHn OSI. ' 0nIcxIue IogIcamema 09T PB'B .tq.... rdaldl'ell •• bIIt
AOIftIOR 0&1.1 r10de OSI 1IfI" ~ROST .'
~
• Aoo/1
Rer
eLe eMC
~
s.n.
CALLADOR ~- rocedlmento em A''''''' '''''--_ j
fu~métieas
AOOOSr,SRC
• "o
JIOI ADOR
PIo'. O
ClnIl!!U! .-.dereço erltiYo.s. SRC perl osr MaYlrnenIo corddonaI
~
'.
f> ADDf1
RocIt 051-"
daldlrelll. bib-
"""
It..T
_
EAl(
E~l
ER
Ner1flun~ 0jKI~
P.,..
biIt
1 estolcomptt'açlo
.. LV
......,"""' " "" .1ocoI1lI
~
...,.,."
....
,""'..,~
As inslnlçõcs booleanas e úe des l ocamel1lolrohl~'iio manipuhun 0:0; bits em um" pôtl" ... ra ou hyte de vári:IS mane iras. Vãri:!', combinaçõc:o; são ro met:idas. Os dois g rupos seguinte q di zem respei to a teste e cOl11paraçi'io e então a sa lt n~ l'OIl1 I m~e n;,~ re"ultAdos. O .. rc.... ultados de instnlçõcs de teste e comptlnlção são arITm7.em1ctidas vezes a instrução seguinte alé o cód igo de condição Z ser marcado. o u não marcadn. resl}Ccti vame nte. lOCK re~er va n harmmenln para to<1:. .(l instru«ão. para permitir sincron iz
a
5.5.9 Instruç ões da mtraSPARC III Todas as in~lrUyÕl!lI d(! irll eiros de modo usulÍriu da UhraSPARC q ue um compilador poderia gerar c~ lii o rdacionllda~
'" N
N
nu Figuro 5.27. Não damo~ aqui inslnrçõcs de ponlo Iluluantc, nem imtmçôcs de cuntrole (por exemplo.
gerenciamcnto de clu:hc, re~llIuraçãll de lIi~ lcm a), instmçõcs que envolvem c~ paç{)s de endereços. excetu os de IISU:'\.rio, nem imlnlçikl> ob~o l e.las. O conjutllo é surprcendcntcmcnlc pequeno: a UltraS PA RC 111 é realmente um compUlador 100111 conjunto rcduliJo de instnrçõcs. As i mlnl ~'õl!'" LOAD eSTORE !'>ão diretas, com versõcs para 1,2, -I c 8 bylcs. Quandu Uni númcl'O com menos de 64 bit!> é cmTcgadu em um registrador (64 bits), () nú mero poder ser estendido em sinal ou ci>lendido em zeros.
Existem in:.truçôes pura u:. dua~ opçi\es. O próxilm) grupo é p:lr1a os códigos de condição. mas l:m UlllillTláqu illil I{I SC issll é indesejável porque re~ lringc a liberdade de o compiludor mover illstnlçõcs p;ITalá e para t.:,í qua ndo tenlilf preent.:her e~ paços vazios. Se a ordem originul de i n .~tmções for A ... B ." C. sendo (jueA ajusla os códigos tte condiyão c B testa os códigos. o cOlllpiludor não pode inserir C éntre A e B se C ajustar ns códi· go~ de colltliçãn. j1m c~~u ruzão são fornecidas duas versões de muitas instruções, sendo que o compi lador nornml· men te usa a que niin ajll~tu os códigos de cundi ção, a menos que estej a em seus p1.anos te~lá- las IlIl1is lorde. Multiplicaçiio, di v i ~il() com sina l c divisão ~cm sinal ~ão I O(.!;tS supol1adôls. O fon nato uritmélico com lag (rotulado) é um fonnut o especial aUlo-idemificudo de números de 30 bits. 1:1(: pode lIcr u~ud() por linguagens como Smalltalk c Prolog, lUIS qUllis as variáveis ni'lo ~i1o tipilicarlas em tempo ele cllmpilnção e podem mudar de tipo em tempo de execução. Com l1límeros rotlllad o~ li w lIlpilador pode gemr LIma
',. o
~
"
•O
•
~
O
•, C O
U O ~
,•" •
•> ~
~
, O
"
o.
•
STS SRC.AOOR
Armazenamellloa ArllllUeoe b 18 (8 bits)
STIi SRC.AOOR
Armalaoa meia· alavra (t6 blt_)
STW SRC,ADOA STX SRC.AODR
Arll1iilU08 IIlavrll (32 bils Armizlloll sillmdida 64 bllf;
u
I
"
0'
árias ;. Os ~prc-
erio-
ftuura 5 .21 !nstmçães de imeiros da UltraSPARC [JJ primana
actedils I,
até
SlL RI .S2,OST
ruI)!.)
,õcs, SU til
ução tidas !seradns :Olll-
Im 4 L! do
nos
Des/oqlJe Ioglcamema p8ra a esquerda (32 bits)
SLLX RI .S2,OST Dealoqueloglcllmsola para a s'Gu.rd~ nlalldlda (64) SALÃ1.S2.DST Duliloque Iogicameote para a !/Ireha (32 bhs) SRLX AI ,52.0ST DesloqUlf bgk:ameole paIB a dlroita l15lendlcla (64) SRA RI ,52,OST DeJ.loque .rltn'léllca par. a dlfllilll(32 bils) SR AX RI ,S2,OS Desloque erhmllllea para a direita aS180dlda (64) SRC .. Iegls lrlldor· tontlt DST .. ,lt{Jiitflloor de daillno
IH
<6
reglstsar·tonhl
S2 .. tonte: rel/l$lrador ou lmedilllo ADDA '" ende reço 00 memória
TRAP .. .. 011018ro d8 uceçAo FCN .. código dll lunçao MASK .. tipo da operaçAo CON .. con.laml! V .. dosignadot de " gISlradol
"
" cc .. CÓ(l'1JO de condiçio iljUSlaoo A . r${jiWndot dos!ino condiçllo
çc ~
ra
LZ.LEZ.Z.NZ,GZ.GEZ
o
'"'" •" "o
",• ~
so U
•
Tabela 5.9
Algumas instruções UltraSPARC !lI simuladas.
Instrução
Como fazer
MOV SRC,DST
OR SRC com 00 e annazene
'CMP SRel,SRe
SUBCC SRe2 de SRCI e armazene
1'8T SRC
ORCe SRC com GO e rumazene o resultado em GO
(I
r,esUltado OST
NOT OST
XNOR Dsr com GO
NEt OST
SUB
INC OST
AOD I a OST (operando imediato)
(I
osr de GO e armS7.ene em DSr
"•
DEC DST
SUB 1 de OST (operando Imediato)
CLR Dsr
DR 00 com GO e armazene em DST
SBTIII 60 a O
"
NoP RET
",•" ,
resultado em GO
JMPL %11+8.%09
"
..• w o
~
"c •m
o"
in~trução AOD e u máqui na determina. em tempo de execução. se ela precisa de uma ADO de intciro~ ou de uma ADO de ponto nuluunlc. O grupo deslocamento contém um deslocamento para a esquerda c dois deslocal1lcnlllS paTa a direi tu. CiHJlI um com uma versão de 32 bits c uma versão eSlcndirJa de 64 bits. PUni Sll. t odo~ os 64 bits são deslocado~. uma vez que isso ainda é compatível com so ftware ant igo. O~ ut:slocamentos ~i\o lI1ai<: u<;ados para manipula,ão de hits. A 1I1"iOl"ia uas máq uin[ls C ISC tem um vasto mimero de illstmções de deslocmnento c rOlllç;'io. praticamente todas elas totahnenle imiteis. POllCOS escri tnre~ de compilllllorcs passarilo rmites cm claro c hurando .~II[l ausêrlt'ia. O gru po de illslruçõc~ booleflllas é análogo ao grupo aritmétko. Inclui operações ANO. OR~ EXClUSIVE OR. ANON. ORN e XNORN. O vlllor das ú1!illlas três é qllc~tionáve1. mas e las podem ser cfc!U;tua<; elll um t.:iclo c requerem ( Iufl ~e nenhum hardware, então foram mantidas. Até projetislas de máquinas RISC às ve7es ~ucum hem à tcntação. O próximo gmpo de instruções cOlltém os controles de transferencia. BPcc repre<;cntn IHH conjuntu de in<;truçi)Ç<; que desviam soh várias cundições c especificam na illslI'I.I,110 sc u compilallur ficha que o desv io sen1 tomudo ou niio. 8Pr tesl3 UI1l regi~tJ;ldo r c desvia se a condição ror dctcct:tda. Há dois modus de c1m1llul" procedimentus. A in~!ru~~ün CALL usa o rllmlato 4 da Figura 5. 11 com um dcslocamento de /m/u\"1"{/ UC 30 bit~ C1l1 relação u() Pc. Esse valor é. suficiente para aJca"~~;1r
5.5.10 Instruções do 8051 o 8051 tem um conjunto de instruç(~S si mples. cuja pri rneim pane é mostrada na Tabel a 5. IU. Cada linha dá u rlHlcmÔnico. urna breve d escrição e os 111odos de endereçamento aplicáveis pnm ronte ou tk~tino. cunforme :'1'11rC~3 S/"I' ou dstCR n" desnição. Como era de esperar, há urna variedade de instruções MOV pnra muver dados cntrc \I AGC (acuFI1u lador). registradores e memória. Há instruções puru passar e retimr de 1I11l<J pilha. a (IUal é apolll:lda por 11111 registrador em memória dedicado 3cima do endereço 256. Esse regi .~ !rador. lJue é <;empre cxtemn. uma vez lltlC o 8051 tem sumcntc 128 bytcs de memória e o 8052, apel1a~ 256 bytcs. é sentpre endereçado illdiretamente por
Tabala 5.10
-
Conj unto de Instruções 8051. pane I:
M N
Descriçao
O
"
'.
x x
MOV
Mova s/c para AGe
MOV
Mova src para registrador
X
MOV
Mova s/c para memória
X
MOV
Mova src para RAM indireta
X
MOV
Mova constante de 16 bits para OPTR
MOVe
Mova código para deslocamento ACC em relação a DPTR
MOVO
Mova código para deslocamento ACC em relaçio a PC
MOVX
Mova hyte RAM externa para ACC
MQVX
Mova hyto RAM en. de AGe @DPTR
MOVX
Mova para byte RAM ext. desde ACC
MOVX
Mova para byte RAM ext. desde ACC @DPTR
PUSH
Passe byte N C para pilha
X
POP
Retire byte da pilha para <1st
X
XCH
Pennule ACC e dat
XCHO
Pemlllte digito ACe de ordem baixa e daI
x
X X
X
X X
X
X
X X
o
••,
~
"
" •
~
o
,"
." o u
X
o ~
,• ,•
X
X
X
~
"' X
•>
X
~
SWAP
TlOque nlbbles de daI
AOO
Some s/c com ACC
X
X
X
x
AOoe
Some src com AGe com vai-um
X
X
X
X
suaB
Subtraia S/c de ACC com vem-um
X
X
X
X
INC
Incremente dsl
X
X
X
X ~
X
o
,
·•
o,
u
O'C
Decremenle dSI
INC
OPTR
MUL
Multiplique
OIV
Divida
DA
Ajusle decimal dst
ANI.
ANO src com ACC
ANL
ANO ACC com dai
X
ANL
ANO Imediato com dBt
X
ORL
OR src com ACC
ORL
OR ACe com dSI
X
ORL
OR lmedllllo com dsl
X
XRL
XOR S/c com ACC
XRL
XOR ACe com ds!
X
XRL
XOR hnedlalo com dst
X
CLR
Líbere dSI
CPL
Complemente dst
X
RL
Rode daI para a
X
RLC
Rode dst para a esquerda ale vai-um
X
RR
Rolate dSI para a direita
X
RRC
Rode dai para a dlrella até vai~um
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
esqu~da
meio do rcgislradm DPTA tIl! 16 hits. Algumas inslcuçlks diversal> pam trocar pm1e:) de n!gi~ lrmlorl!l> cOlllplct:UIl o grupo de ilblnu;õc:) lio.! 111m Illlcll\O.
N
'" N
-•• • o
~
"S
~
o
u
o 805 1 tem instruções arilmétiC;ls ~jlllples para somar, suhtrair. multiplicar c di vidir, ~c n d{) que cs!>
ajusta u bit mírnero 43 e não "rela os outros bils no mesmo byte. Em seguida vêm as i n ~lnlçfJe~ ljue Ir;msferem CtIIllrole. incluindo os sahos c os cham adas de sub-rot ina. mais dois saltos condicionais que cumpllram urna foute a alguma coisa, c uma insLnlção. DJNZ. usada pam ex.ecutar laço.
-
Tabela
CLR
"
~
o
5.11
Conjunto de instruções do 8051, parte 2. Desctlçao Libere bit
ACC
• •• •1I1i11 X X
5B'rH
Ajuste bit
CPI. .
Complemerite bit
ANI.
A1lD sre com vai-um
X
X X
X X
•• • "e •
ANL
ANO complemento de StC com vai-um
X
ORI.
bR IIre com vai-um
X
O
ORL
OR complemento de arc com vai-um
X
MOV
Mova sre para vai-um
X
MOV
Movà vaJ-um para 8re
X
JV
Salte relativo
JNC
Salte relativo se vaI-um
18
Salte relativo se bit dirêlo marcado
X
JNB
Salte relativo Se bit direto não marr.ado
X
JBC
Salte relativo se bit direto marcado e vai-um liberado
X
ACALL
Chame sub-roUna (endereço de J1 bits)
I.cAI.I.
Chame sub-rotina (endereço de 16 bits)
RET
Retorne dê sub-rotina
RETI
Retorne de Interrupção
~
-'"
se vai-um marcado
não marcado
SJMP
Salto reintlvo curto (endereço de 8 bits)
AJMP
Salto relativo (endereço de 11 bits)
WMP
Salto relativo (endereço de 16 bits)
JMP
Salto indireto relativo para DPR+ACC
JZ
Salte so ACe for zero
JN'l
Salte se ACe for não-zero
CJNE
Comp. arc com ACe, salte se dllerente
CJHE
Comp. 8ce com imediato, salte se dilerente
DJNZ
Decremente dst e gaIte não-zero
NOP
Nenhuma operação
X X
X X
5.5.11 Comparaçã o de conjuntos de instruções O.~ três excmplo!' de conju ntus de instrução são muito diferentes. O Pentium 4 é IIllla clfI!'ô~ica lIu\{luina C ISC de dois endereços e 32 hits. com uma lunga hist6ria, modos de endcn,·amento .. peculiares e muitO irregulares e flUl! tas instru~'ões que refcrencimn a memória. A U]{raSPI\RC 111 é uma mudenw RISC de três endereços c 6411its, com arquitetura carrcgue/amIU1..e nc. pou Cl)S modos de enóereçamento e um çonjullto de inslru\,õcs compacto e eficieute. A arquitetura 8051 é um minlíscu10 processador e mbutido, prujetado para caller em um único chip. Cada máquina é cumu é po r uma IX)II razãu. O projetu do Pcntiurn 4 foi determinadu por três fatures prindpais:
na US11 'L1ções
cnn I/lte il
I
I. 2. 3.
ClUupatlbllldade. \Olllplltibllid,uk. CompatihiJid'lde.
M
M N
Dada 11 tccnologhi atllO!l. ninguém projetaria ulUa máquina tão irregular eom um núnlcm tãu pequeno de: regilotradorclo. Ilxlulo dlfCfenh!lo. b ...o .o O cu . . w IXlr CPU.
5.6
••
Fluxo de controle
Flu>." dre clJnll'ule ~e refere à lIe'ltiência em que as instruções são executadas dinamicamente. iSIO é, durante a e.\el:uçãll do programa. Em gemi , na ausência de dL:lovios e chamadas de procedimento, inslnlçõcs executadas em Ioe{liiêncill ~ã.., hu~c ílda., t!m localiaições conscctlt ivu . . de memória. Chumadas de procedimento causa m alterução no tluxu de controle. intcITOIII]'lt:ndn \I procedimento que l:~I!'i sendo excclLtlldn nn momento CIO quc~tão e iniciundo n procedimento chmmldu. Co-roti nas ~ão relacíonadus com procedimentos Ccausam aheraçõe... semelhantes nu nnxo de contwle. Ela ... ~ão ,ítci... paTa simulnr prOCessos puralclos. Exceçõcs e interrupções Iltmbém cau ...am alteruçi'io no nuxo de euntrole qUilndo ocnm:m condições especiais. Todos esse ... tópicos serão discutidos lUIS Ioeções seguintc~ .
5.6.1 Fluxo de controle seqüencial e desvios A maiori;! tlu ... IlbtnlÇWIo não altem o fluxo de controle. Após uma ilbtnlçilo serexccutlldu, u inslnu;fio q\le velll dela nll Illl!1I1ória é bUlocuda e execlltuda. Após cada instrução, () cont ador de prugmmu é muncntado relo comprimento clll imtrll~: illl. Se isso for obsl!fvado 1)(11' um intervalo dI! tl!l1lpO longo em comparação com li h:LlIpll médio de in~tnlçãn. I} contador de programa é aproximadamentL: uma função linear do tL:mpo. aumentando com 11 comprimento médio da instrução por tempo médio de instnlção. Em outnts palavras, a ordem dinâmica na
;c Li-
figura 5.28 Contador de pfoglama como tunção de tempo !a)ustfl dal. lal Sem desvios. Ih) Com deSVIOS. T~po
T.""",
(. )
(')
'"
..•
"
~ u gcria evitar dcc!an1\'Ucs guIo. Essa carta deu origem à re\'oluço1o da pl'Ogrnrna~'ào cstrulu rnua. lia qual um uns dlll! mas é li l'i ubslituição de declarações goto por flll'ma s de nu:to de controle mais eslruHlnldll ct. corno l aço~ whi le. É d aro que esses programas compilam até programas de nível 2 que c;ontêm muitos dc<;vio'i, porque [I implementa-
ção de es llll tUr
•• o ~
,• ~
8 o u
•
~
•
~
,•" ,
" •
~
o
••
~
• N
o
•
~
O
ctllllU
whilc e outras. requer desvios pam todos
o~
ladus.
5.8.2 Procedimentos A técnica mais imponnntc para eslruturnr programas é o proc(:tlimclllo. De certo IlI.mlo de \';
towels(:l. I, 3) 1':11':1 rcsolvcr \I pruhl enlil da Figura 5.3 1 gera mais tfê .. chmmul .. ". E~pcc ifi c;1 11Icnte, fa:r .... chamadas towers(2. 1,2)
lowers(l, 1, 3) towers( 2, 2, 3)
A primeira e rl lerceira genlrão três ehrlmadas cada , para um lotai de sete. Para ter procedimentos recursi vos prcciS:11I11l': de IlI1la pilha pam ar11l:17ennr O< l'arãlllctrn.. c \'ôlriá\ eis locai .. pam cnda invucação, ti mesmo que tínhamos em IJ VM. Cada vc:r tllle um procedímento é chamadu. UIl1 novo quadrn dc pilha é rrlueado "rira o prucedimenln que eSlá no tOl)O da "ilha. O quadro l·dado mui .. rece ntcmente C li quadrn C(lrrente. Em nossos exemplos. a "ilha crescc para ci ma. dos endereços de mem6ria baixos pala ti" e ndereços altos. ellata mente como ell1 IjVM . Porlanto, o (luadR) muis reccnte tem endereços ma;!! :11105 dn (IUC lootl" O" outm.~ . Além do ponteiro de pilha, (IUC 3ponta para o topo da I)il hn, lI1uilns VC7.c!l é cOI1l: euiell tc (cr um po nleiro de quadro (FP - Jmmf' 1l0;II'U), quc al>ont a para uma locali Lu,ão fi'tn dentru dn quadro. Potleria apon tar p:lra o Ix m Estaca t
Fluura 5 .29 Configuração inicial para o prOblema
'!brres de Hanói para cinco discos.
Esll1Ca 3
dugih:. t: cntu-
~ --~
".dO ."" 1 -:, -,
"
nada exc·
~
LlLUa
Primeiro mOVll 2 discos
rada
tJa " laca 1 p.iofiI • estaca 2
: 1110
cb
:010 ~c·
riá tb-
Idu
f igura 5 .30
Elapas requeridas para resolver o problema 'foneli de Hanói para uês diSCOS.
-
Emlio mova 1 disco
lia eSLaca I pilli!
@
iI
estaca 3
IIII.!
j ~
~ u-
1111
;m ll! -
fi·
Por Irm. mo~a 2 discoa da .. ~ Iilc:a 2 jliI/a a IIslaca:3
,.
"
l l ~
J.
"
~
~ ~
~ ~ ~
cb ~ ~
l !
~ C J~-?J
La ®
C
~ .,
publiC void 10werS(1n1n, Inll, In! j) ( Inl k:
if(n>= I) System.oUl.p,inltn{"Mova um disco de" ... i ... . lo . .. j); else I k:: 6 - 1- j;. lowers(n - 1, I, k); towers(l, I, J); towers(n - 1, k, 1);
fiyur.5,31
Procedimelllo Jlcl.ra resolver o problema 'furres de HanÓI
I
I
teiro de ligação, como em IJ VM, uu para a primeira vuriávc! locul. A Figura 5.32 mOSlra () quadm de pilha para Ullla Jná'lulOa COIII UllliI palavr:l de J2 hits. A ch:lllluda origimd par.! IOWUS pass:I lI, i ej para a pilha e emão executa uma inslrução CALL (Iue pas~a ti endereço de relOmo paro a pi lha, no endereço 101 2. Na entrada, o procl."(limelllO annazella n antigo valor de FP na pIlha em 1016 e enlãu adianla u ponteiro de pilha p;tr.l alocar arll1i1lenarncnto para 1lS Yaná vei ~ loc:li~ . CiUn upcnas lima variável local de 32 oils (k), SP é incrementado de 4 pa ra 1020./\ :o.iluaçiio, depois (Iue I {)da~ e~~a~ cOI,a~ fur.ulI fei tas, ê mostrada na Figura 5.32(a). A primeim ClJlloa 4ue um proced imento devc faler quando chamado é salvar o FP anterior (de modo que 1)()~SIl ~cr rc~[aura( ln na loaitln do proced imento), copülr SP para FP c possivelmente iucrcmenlli -Io por utlla palavra, depeno demlu do lugar par.I ondc, no novo quadro, o FP apontar. Nesse exemplo, o FP upo nl a pUni li primeim vuriávc/ IOC111, porém, em IJ VM, LV ilpnntlLvH para um ponte iro de ligação. Máquinas diferentes ma n u~einm o ponteiro de quadro de modl\~ ligei r.un..:mc lliferenles, à~ vezes coloc.mdo-o na pane inferior do qundro de pilha, às veles nu topo e às veJ.:i:~ IlU meio. ':01110 nu Figura 5.32. Quanto li es~e aSI>cctu, vale a pcm. comparar li Figura 5.J2 com 11 Figura 4. 10 1'1lra \CI" Ulli:. modu!> Jifercnlc:. de gCrénc iar o pomcirn dc: ligaljão. Outros mudos làmhém são 1)O!:>sívcis. Em tolllls (I~ casos, a c ha\ ~ é .. c.apaciclade de, mais larde, poder (aler um procedimcnto rcturnar e rc~la umr o est:ldu tia pillm au que era exatam.,;ntc .mlc~ tia invucação do procedimento corrente.
rn M N
o ~
,
~
;"
c
•
~
o c
, c o
u
o ~
,•"
-•.,. " • ,
<
.. ~
Z
~
o
• o.
•
u
'"
,,-
C")
N
FI'
all~
"
.. 1024
., ,., ,. ,
End. de retorno
••"o
~
•
"
~
• " o
• •
~
"
figura 9.32
Pilha em diversos
pontos dUlante a
figura 5.31
" FP
•
~
o
~
N
o
•m o"
.
FI" .• FI' ftnli
,..,, . , ., ,.,
End. d•••!Orno
" ""
. "'"
FP
,..,, ,""' .,
End. de reklrno
execução da
"•"
•• •
-
FP -
FP~
..,
OId FI' . 1000
End. delatamo
,..,, ,""'., FP. .,
., ,. , ,. ,
EIId. de lelorno
ibl
"I
EIId. de retorno
i .. ,
"" '
FP FP anl 0 .. 1000 EM. de f81CKno
,..,,
, ., k.'
'"
., ,. ,
End. de 1.lomo
EnderllÇ(l
.
rI' anil .. 1(124 Fnd. dllltomo
,..,, , -, , ''',' .''''' ,..,,
..
Ior1(l. de retomo
, -, k. ,
rI' ., End. de retorno
., ,. ,
,.,
,. ,
'"
'"
"'''
"'" "'" 1056 , ~,
"'''
"'"
"'" "''' ""
' ~8
"" ""
1018
,.,. 1012
''''''
'''''
o código que salva o [)unte iro de quadro antigo, ajusta o novo ponteiro de quadro e adianto o ponteiro de pi lhn prtru reservar esp;lço para vnriáveis locais é denomi nado pr6 l o~o de procedimento. À saída do proccdill1cnlo, li pilha tem de ser limpa novamente, o que é dellom inado epflogo de procedimento. Uma tlu ... (,.' anu.:lcrístiL':IS mais importantes de qualquer computador é o tamanho e 11 rapidel': tio prólogo e do epílogo de <:cu<: procedimentos. Se eles rorem longos e It:ntos. as chamadas de procedimento serão caras. Prugranmdorc!i (lllC rC1.um pe lo clltecismo dll eficiência Ilpren(\crão ,I evitar escrever muitos procedimentos (.'urtos e, em vez di sso, ClIcrcvcr programas grandes. monulf!icos e n:io c .~tmt uradus. As instruçõcs ENTER e LEAVE do Pc nlium 4 rOfam projetad n~ pUni executur cum efi c iência grande parte do lrablllho de prólogo e epílogo do procedimen to. É claro tjuc elaS têm Um Illmlclo particular pam o H1ot.lo de gercm;; anlcl1lo do ponteiro de ljumlro e. se o compilador ti\'er u!tllllo
para ver se
IQwerS(2, 1,2)
Após essa chamada ser condu(da, a pilha est:í como mostm a FiguTll 5.32(b) e o proced imento come,,1 novamente no início (um procedimento dlarnado sempre come~' a no in ício) . Destol vez, o teste pam 1/ -= I ra lha novamente, pOl'tanto ele preeuche k mai s unm vez e faz a chamada tQwers( I , 1, 3)
A pilha. pOl'tantn, e sl~ cCllno 1l\ostra a Figura 5.32(c) e o c(mtat.lor de programa npo1l1a para o início du proceIlirnt:nto. Desta vez o teste é bem-sucedido e lima linhn é im pres~a. Em seguida. o pmccdimcHIO retOnt a retirando um LjuCldro de pilha. reaj ustando FI' e SI' pura ,I Figura 5.32lll). Então continua e,,;cl:utando nu enderc,o de retorno. (IUC é a segundll chamada: towels(t , 1,2) Isso acrescenta UJll novo qU:Hlro i\ pilha como moSlra a r=i gura 5.32(e). U l1Ill oUlnl linha é illlpre~ <: a: após o retorno um (luadro é retirado da pilhll. As chafHuLlas de procedimento continunlll (lesse modo até li chnrnnda uriginal concluir a execuçiio e o quadro da Figura 5.32(a) ser re movido da pilha. P
5.6.3 Co-rotinas Nu seqiiênl:iu de chamnda usunl. h(1 uma clara dis tinç~o enlre o procedimento (IUC chama c n procedimento que é chamado. Considere um p roccdimento A. que chama um procedimento Una Figura 5.J:l. O procedimento IJ executa durante algom tempo e então voltn a A. À primeiru vi sta você poderia considerar e~sa situação simétrica, porque nem A nem U é um programa principal. porque aml10s são procedimentos.
I"
I"
Procedimemo que 86t" chamando
Procedimento
'" M N
""""do
A chamllOO - + -- 7 partir do programa
li
pfW!Cipil)
o
••,
~
•
" o
",
f lgur.5.33
'0 o
Quando um procedlmenlo
e chamado, a execuçãQ do
u
procedimurlto sempre
"
começa
1111
o
primeira
declaraçau do procedmltlnlo.
,il ha 0, u nuis . Se
) da Jcs, 'om
_+__
A retoma ao programa
•> J
prirlCll.l81
Il'Ii -
"'o
não ciro Uu-
:uIU-
'c -
Jo o,
n
io
e
'" ,
(Procedimellto A pode ler !>ido chamado pclo programa princi pal, IllIlS isso é irrdevume.) Além do nlfli s, em primeiro lugar o ClInlmle ..: trlll1sferidu de A puni li - li ChlLlllUdll - c: mais tardc (I conlrole é tran ~ rc:ridn de 8 pura A u rClOrno. A assimetria .!ourge do f'lhl de que, quando o controle paS!>1I de A para IJ, o prucedimento lJ começa a elteCular no início; quandu LI rclOma Jl.lnl A, a exccUI;ão não cUllleçll no início de A , mus na dcclumção Ingo após a chuJl utda . Se A CACCutar durante um certo tcmpo e chamur lJ nUVamente, 11 execuçiío ctlllleçu no infciu de IJ novamente, e não na dcclaraí,'ãu lugo apó~ (l retomo anterior. Se, nu curso da cltecução, i\ chamar B lIluitas vezes, {j começll no iníc;u mai ~ UUlU VI:I e lodÔl.!o U~ veze~, ao pôl ~~o (I\lC A nunca rcinicill, Essa difcrcnçol é r~ nelid a no método r~elo qual o'colltrole é passado emre A e B. Quando A Chanlil IJ, Lba 11 in~trtlçi\o dc ch:ullada dc pmcedimento, quc coloc1I o endereço de relorno - i ~to é, o endereço da declamçi\u ~cglllFlte à clnllllllda - e m 'Llgurn lugar útil. por cxemplo, no tupo da pilha, Em segu ida c(~ IClca o e ndereço ele IJ no cllll tador de programa para cOlLc luir a Ch:Ulluda. Quando IJ rClUrna, não LISO a instrução de chamadll, e sim 11 imtrução de retorno, que simple!>lllcntc retira o endereço de retorno reLcnte 'rc:tum' , isto é, à mais recemc chamada de A. Oois procedimento!> quc fUIICioll:UIl de~sa Illlmciru são dénomlnado~ co-rotinils. llma ulihlllÇãl) comulll dc co-rot inas é simular processamcnto par.!lelo em unia única C PU , Cada cu-rotinn cltcculll cm p~I:Lldop:lralclisll\tl clIm as OUtrllS, como se da tivesse :.ua própria CPU. Esse estilo de programação facili ta a pfOgnLmu~:l: n tle algumas aplicações. 'I:-ullbélll é Lílil para teStar so ftware (jue mais tarde exccUlará cm um llIulliprocc!>.!oadur. Ncm a ill:. lrLl ~du CALL u",ual ncm a instru\~ã Ll AETUAN UMlal funciona para cha mar co-rutinas, porque o endereço para onde de!>viar vem da pilha como um rctorno mllS, dife re nte de um reLOrno, a própria chamada de cu -rotina 1:IIII\ciJ um endereço dc retorno em algum lugar pura (1 subseqüente retorno a e le, Seria bom :-oc hnuve~ se UllW illl>lrLLç.iu para permutar o topO du pilha l:nm o cOlHador de pmgram!!. Em dctalhe, essa in~tru ç:'io primeiro retiniria o c:ndereço de retorno :lntigo da pi lha paro denlro dc um registrador interno, em seguida passuria li ct)l)luclur dc progruma para a pilha c, por fim, cupiaria o regi slraclor interno para o contador de prngrama. ComI) uma palavro é retirada du pilhn e uma ]Ialavro é pa~sadu para n pilha, (1 l)Onhdro de pilha não se altera. E~~a IIIStru yilt) n\rumenle existe, ]lortunlo ela tem de ser simulado, assim COITlO vária!> instruções na llIaioria do~ CU.'o\h. ~
o. u
•
co
1'1
M
N
A chamllOo
I
B parlir do
programll p, lnclpal
·•
CONTINUE B CONnNUEA
.
o
"•o ~
8
o u
•
"• "•"
CONllNUE B
nuura 5.3 4 Q\lando uma co-rolina é
;--......
c~
reiniciada. a execução
I----
começo na declaração de onde ela partiu da vez
anterior, c não
fiO
CONTINUE. B
inicio.
o o
~
"
·
~
o
•• • o •
~
A relorna
N
110 progrll prlndpal
~
o"
-m.
"
~~"~1
~
5.6.4 Exceções Uma ('xccC;iio (rrap ) é um ti p(l de chamada de procedimento autorn~l i cn iniciada por a l ~unw cOTld i ~:10 c,l1J~a dn pe lo progranHl. usualmente um;\ condj ~'ão importante. mas que (x:on'e rnrumcnlc. Um ho m exemplo é o excessu loverOow). Em muitos computadores. se \I rc ~ ull11dlll[ C II11H1 operação arilrnéticu for mniur do \IUC o maior número que pode ser rcprcsclllado. (lÇorre uma exccçã(), o (lue sÍjnificu que o nuxo de c011trole p
5.6.5 Interrupções IIIICITUl'çi)cs são u ll era~õcs nu 'h l .~o de control e que nllu são causadas pe lo programa em execu~:ã 'J. 1I1as ror :tlgurna nulm t'f1i~a . cm geral rclm:ionada a EiS . Por exemplo. 11111 programa I}lide in struir u d i~c(l u iniciar tram:ferênc1n t.le i nrurrlla~'ãu e ajus tar t) di sco para pro\'idcnd ar 1l1ll11 interrupção tã u lugo 11 transferência e~teja conclufda. Assim comu a exceção. n interrupção pára u programa em exec ll~'ão e transfere II (;j.Jlltrole para UIll trata{lor de interrupção. que executa alguma ação adequada. Quando term ina. o tratado r de interrul>çào OCHJh·c o cuntrole au programa interrompido. que deve re inida r" processo interrompido exatnlllent c no me ~ I1l Ú e~lad{l em que estava quantlu ocorreu a in te rrup\~ão. o qlle ~ i gni fi ca res taurar tDdus O~ registradores intemo~ a ~eu l'stad" :,nleri "r il interrup~·fio . A d iferençft essencial entre exceções e il1teml p~·fle.~ é a ~eg llillt e; I'xceçrJe.f são SfIWWIW<: com () pn1grama e ;lIfe /T"IJçrie,f são as~fn cn ma s. Se u programa ror executado 11m milhão de vczes c(lm a mesma cntmd:\. a ~ exceçõe~ ocon'er1io no mesmo lugar tod., vcz. lIla~ as interrupções podem v
Paru ver '01110 i lll l!(rupçõe~ rculmenle funcio/lullI. valllos cnnsiderur um exemplo comum: um comput;Hl!,r quer cl1\' iur uma linlm de cafiLctercs para ulIltermina1. O ,~oftware do sistcnHl primciru relÍn!! tOllns os caracteres quc devcm ~cr e~cnto~ para n terminal em um buffl!r, inicinlit.n UJlHI variá "el glohal plr panl ilpont:lr fi inIcio do ourfer e ujulot:l Ulll:l ~c!:: ullda "nriá"el glnonl , '011111 igual nu nlÍmero dI! caracteres a lIcr enviado. EllIão veri fica p:ml vl!r .lIr.: li tenll1nal clotá prolllo. Se estiver, II computador envia II primeiro caractere (por exemplo, uloamlo re~illlradl)n: ~ I,;lInlO 0\ da Figura 5.23). Após inicillr li EIS, a CPU (~~ tá livre para executar um outro programa ou fa zer IIlItra cO\~a, No ~cu tkvidn tempo, o cumct..:rc é apresentado na tela. A interrupção agora pode comcçar. De forma ~i1ll pli . ti tada, ~I~ eta lla ~ ~ãlJ ;J.lI loeguintes,
O>
M N
'". o
~
"
""
•
~
Ações do hardware I.
o cuntml.lllnr de
dbposilivo at iva uma linhu de intemlp','iio 110 bMramento de s i~tellla para inicHlr u dc imcmlpçãn, T ~n logo c'tep preparada para trat ar 11 iutCfmpçiio, 11 ('PU utiva um Ioillul de reconhccillll!llto de intcrmp' çillJ IIU bUrrlllllCnlil, QtUlIldn \l !.:lIuu'ol,u lnr Ile displJloitivo vê que ~eu si ual de illtC1TUI)(,'ào foi rcconhecldo, (;llloCII 1I1Il inteim pequeno lIalo hnh,ls de dudn~ para ~I! idenllficar, Esse mímero é ,lcnomilladlJ \'eIOr d e in tcfI'lI l)çàu. A CI'U rellfilU "etllr de illtemll)Çiio do harralll..:nto e o ~al"a tel1ll)l)rariam.::nte. EllIãil a ('J'tl pa~';1 o contador de progr.uml e a !l!,W parJ 3 pilha, Em ~L:guid,1 li CPlJ IlIcalit.a um novo culltador de prognlllt:l lIl1aml!) I) vClOr dI! 11Itemll'lÇlIll eomll um lI\(h· CL: p>!Ta luua tahda nu pane infelÍor da 1l1l: lllória, Se o contador de pmgrilll1a hu de 4 bytcs, pm excmplo, l!ut nl1 l) I'etor de interru pção n cnrre~ p()nd e ao enderl!ço 4n , E!>~c novn contudol' dI! progra ma "ponla paru n in(l,;hl d;1 rotina de ~c rviçt> da interrupção panl n di s l}l1~itiv() Ijue causou ,I inlemlpçiin. Mtlit a~ vele~ li PSW também é carregada ou modificada (por cxemplo, para neslloi!itar mais intI!ITIII>lii'ie~) , ~cqliênc iil
2.
3.
4. 5_ s,
o
c
" "o
u
o ~
•> z
Ações do software '1.
8.
9. 10. 11.
12. 13. 14.
A primeira C:Oi~ii Ilu,,: a rolina de serviço 11r: inlcrrupçãu fal. é I>ulvnr t odo~ O~ registT! V":IO!' uc i l\terrupç1io é gerahllentc c:nlll]lartilhm.lo pO!' IIldllS II~ di~positivm de Ilclenninad.1 tipo, por· tanto ainda ní1u ~e ~ubc qualterlllinal cn u~oll u intcn'ujl\:llo. O mimero do termillal lxxle ~er encontrat!1I pchl lciltlroJ dc ul!!ulII re~istrodor de di~ I>O:.itivn , Agur.a [Xxk !'!ocr lida lluulquer outrJ i llfu rmil ~ão ~ol>rc a il1lemll>Çlio. tal como cód igos dI! e.lltado, Se oc.lrrer um t:n"o de FlS, ele pode ser tmtado nesse caso. A~ Wlriá\'el~ gluhais, plr t! I 01/11/, são atLlalit.:I(hl~ , A primeira é incrcmclllada para ,ll)1}ntar para t1 próximo hyt..:. t! u última é decl'ementada par;! ind icllr que reSta I hytc a IIl Cll llS para ser envi lldo. Se 1'0111/1 ainda fm mllinr do IltI..: D, há lIlai~ cnnlcteres :1 enviur. Copia o cafll ctl!re lIgoru al'H.lIlwdo \)1)1' P/I' p,lrn o regiMrlldM de huf!'er de ~aíd,1 Se rcquerido, é pruduLlllo um código e~ l)Ceill l para inforlllllr ao J isl>ositivo ou ao cUlllrolador de illleITII]>' \ii,J 'luC a IIlterrupçàn foi proce~!>uda . R e~ t allra I l)dn~ o~ registradores salvos. ExeculIado em que da eSHMI cxalalllente allle~ de aCOlllI~cl! r a irltcrrul>ÇlIo, Então o computador cominua de o nde estava.
Um conceittl fllndamentul para interrupçõcs é Iruns parência , Quando uma interrupção [lcontcce, algulIlall lIão reali/ada~ i: a l gun~ códigos, executados, mlls. quando tudo tl!rminar, o compullldor dl!vl! rctornllr cxatll' mente ao IIIC~11I0 cl>lado cm que c~tava anlcs da illtemlpçllo. Uma rotina de interrupção (I\le tem essll propriedadc é dcnominuda Irrlll.I·/Hll'el//e, QUJndo todas ü~ intcrrup\:õe~ s:1o transpurclllcs. é muito mais fácil entcndê-las, Se UI1l cumputador tiver allCllas um dispositivo de EIS, então a~ int errupçl\c~ sempre funcionam como aCllba· mos Ite dC~l:rc\'C1' e nada mai.\o há a dit.cr a respeito delas. Entretanto, um compUlador dc grande porte tem Illuitos di s l>o~it i \'os de I:o:JS ~ vário.ll deles jlOtll!l1I estar cm exccuyào ao mesmo telll]>O, possivelmente lltemlen.-lo a diferell' le~ u ~ u árin5. Existe uma probabilidade não-zcro de que, enqllanto uma rotina dI! imermpçiin estiver executando, um i
•
u
...
o
II!lftIlUpç'm do! dl$:O fl'Iotldad
N
" manllds ptlndenl&
ISR RS232 cooc!uI Inl8mlPÇAo 00 dÕllOO IICnrrc
••o
Inl."upçl!Q Iie R51.32 pfloridlo
~
•o
Fluura 5 .35
InleffupçlIo de ""lIrp~SO/Il prlor\dft(!e 2
Exemplo de seqüéncia
~
8
temporal de varias interrupções.
o u
• • •
~
o I
I
\O
15
20
I
I
I
PrIJ1IfllmII :ISRIie: U!lué,1g :Im",es:
"I
I
tSA !lo
ISAdo!
."I •:ISndll:
35
..,.a , "'" ."i""JPfft.! I --~~ 1~'uàrIo ! ~' I rDSSOm m ,essora
~
: lOIlI : I
h
O
O
RS~.32
,
I
h
•
- '" .. I
I"fQgII'lIrt1f1
u, u'fIa
-
~
O
•• • •"
~
N
~
h
O
nadas por um campo na PSW. Quando um dispositivo de prioridade 11 interrompe, a roti na de inlerru,:H,-iio também Jcve cl(~ular ell1 prioridade 11 . Enquanto uma rot iuo de intcmlpção de prioridade /I esti ver cxecutímdu. qualquer Icntílti vll que 11m di sptJi'iti vo de prioridnde mais bai xa roça para causar uma inlcrrup','ào é ignorada até que a rotina de intcrrupc;ãu esteja concl uflia c n CPU volte a executar código de prioridade mai s haiJl:a. Por outro ludl). ilHcrrupçõcs de ui s pl)s itivo ~ uc prioridade mais alta devem ter permissão de aconteccr sem nenhum atraso. Uma vez que as próprias rotinas de in tcmlpção estão sujeitas a interrupção. li me lhor ll1uncira de manter a auministração em rJia é gar:mtir que todas as in terru pções sej a11lt1'allsparentcs. Vamos considerar um exemplo simples de v{arias intcrrupçõcs. Um computadur tem três disposi tivos de FlS. uma impl'c<;sUfn. \1 111 rJi ~c() c ulIla li nha RS232 (serial), com prioridades 2, 4 e 5. respccti vamente. No infcio (I = O). um progra111a u"uário cstá exccutando quando, de repente. em 1 = 10. ocorre uma interrupção da i111pressom. A rotina uc se rv i~o de i11lcrrupçao t ISR) da impre ~so ra é ini ciada, como mostra a Figura 5.35. Em I = 15. a linha RS232 quer atenção e gem uma inteJnlpção. Uma vez que a linh., RS232 tel11 prioridade mais .,I ta (5) do que 11 imprcssonl (2). :1 inlemlpção acontece. O estado
5.7
Um exemplo detalhado: as torres de Hanói
Agora 4UC já estudamos [1 ISA de três lIlá4u irms. vamos reunir loo,IS a ~ peças e examinar det;r lltadal11cl1tc o mesT1Io cxcmplo de progruma para [I.~ uuas m!illttirl
Demo!> urna vl!r~ã{l em Javu lk!>~e programa IIlI FigunI 5.31. Nas seções seguiules darclIl\).'i progmmus em código de lI10nlagem pám a~ TolTt!~ de Hanói. ('unhldo, faremol> IIl11a pequena Irllpaça . Em Vi!l dc dar a l rad u~:ilo du vcrsão Jnva, paru () 1\:l1Iillll1 4 e a llllrílS PARC 111 , darc mo~ a lradução de um .. vcrsão em C, para evitar ulguns problemas com EIS em J;Jvu. A 11nica difcrcnçil é u SUbl>litui,ãn doi chamada Java para prilltlll pclu dedar.l~·ão p,J{!ri'iu em C
-... N
pnnU(Mol/a um diSCO de %c:!Jo %d\n I, Il Parll nUlol>á linaliclade, 11 ~intll)lc dus cad eias do formato pri"if não é iml>Ortall1c. Bu!>icillnenle, 11 Cildehl é imprc!tl>i.1 lileralmelltc, exceto que %d l>ignifica ·illllwima " próximo illldru Clll decillllll'. A línicu coisa (IIIC é relevante ncs~c calo" é que o proccdilllelllO é chamudo com Irês parâmetros: IIlIIa c/Illeia de fOnlm l1l c dois irueiros. A nu:ão para u.'> ar 11 vcr~ão em C par.! o Pentium 4 e a UhmS PARC 111 é que a biblioteca Java de flS não está di:'lxlIIÍ\ d em fllflll ôl Il.Iliva para e~~a.'> máquina.'>, ao paS.'>o que a hlblioleca em (' r:stlÍ. A diferenç:l é mínima e afeta !>UIllt:I1IC a limc:. dedar.J,·lIu de imprimir.
5.1.1 As Torres de Hanói em linguagem de montagem do Pentium 4 1\ Figul'll 5 .36 Ilá uma tmtluçdo po!>sfvd da versão em C das Tnrrc~ de IIan6i para o PcntlUJIl 4. EIlll>ua m aiuria illr.tduçãll é ralO.l' clmellle direla. O regiíolcudor EOP é usado cumu li punteiro de quadru. As dua~ primeiral> palavri1) ~ãn u~ada~ paru ligação, de modo que u primeiro par.imc lro propriameute dito, 11 (ou N aqui, porque é indiferente:.c MASM é e!>Cri la em lIIaiú)o.::u ht~ ou minúscula:.), está em EBP + 8. seguido IXlr i ej em EBP +12 e EBP +16. rc~pecth'llmenle. A '.lriá"d local. k, está em EBP + 20. : compile para Penl lum (ao contrário de 8068 atc.)
.586 .MOOEL FLAT PUBUC lowers
; exporta '1owers'
EXTEAN prlnU.NEAA
: Impa" prlntl
LI :
PUSH EBP MQV EBr. ESP CMP [EBPlal. I JNE LI MOV EAX. [EBP ! 161 PUSH EAX MOV EAX. [EBP.. 121 PUSH EAX PUSH OFFSET FLAT.lonnal CAll pnnd AOO ESP, 12 JMP none MQV EAX, 6
: 5aI1/8 EBP (ponlelro de quadro) e dac.emenle ESP : ajusle novo ponlelro de Quadro acima de ESP
SUB EAX. [EBP+12j SUB EAX, IEBP+16J MOV [EBP+20), EAX
:EAX",S i : EAX .. S 1- / ; k _ EAX : inicie 10000ra(n - 1.1, k) : EAX_I
PUSH EAX
MOV EAX. IEBP+121 PUSH EAX MQV EAX, IEBP+8} OEC EAX
fIUur.5.36 1brres de
Hanói pare
o Penlium 4.
: lniciak _ 6 _ 1
: passe I :EAX .. n : EAX _ n _ I
MQV EAX, [EBP+12} PUSH EAX
.EAX:!
CAll lowers AOO ESP. 12 MQV EAX. [EBP+ 12) PUSH EAX MQV EAX.IEBP+20]
: chame towarS(n - I. i. 6 -I-I) : rall/e pSloms do pilha : inicie lowers( I. I. J)
; passe 1 : passe I ; passe I
: chame towors( I. I. I) : retira parallls da pilha ; Inicls towers(n - 1, 6 : passe k
MQV EAX.IEBP~81 DEC EAX PUSH EAX CALL _Iowors AOO ESP, 12
;EAX _ n ; EAX = n - l
RETO
; passe n : chame
ENO
I, I)
I
lowers(n - 1. 6 -
; ajuste ponlelm de prlha ; prepare para salr ; relome BO chamador
DATA IOrrrl(;l
t-
; passai ; EAX . k
PUSH EAX
lEAVE
endereço dato,malo
" ellra params da pilha : terminamos
:passen - l
DB ' Move disk Irom %d lO %d\rI" ; cadela de Iormalo
"co " • "
•" ""
~
<
•> ~
o
. prlntl(' ...•. I. li: : nole que parAmeuos I. J e 11 cadela : de Iormalo 610 passados para a pilha : em ordem Ifl\I8rsa Essa ê a oofllt'eOÇAo de chamada em C
PUSH EAX CAll _IOwers AOO ESP, 12 MQV EAX. IEBP. 16) PUSH EAX
PUSH 1
Dono;
.6e(n _ l) : óesl/le se n nAo lor I
; oflselltal signiflca o : chame prlnll
o
o
'"
CODE loweni
•
~
i-
J. I)
o
•"-
"
N
~
N
•""o ~
•, 0-
S o
u
•
~
,•" , "
•
~
o
•• •
~
N
d
•
'"
o"
o prnccdimcTllo come",'u c~I:lbclt:cc nclo tl 1I0\'(1 {lIwdro Iltl final do anligo. cupiando ESP p.11"II n pOlltem) de qua· dro. EBP. Entào cle cmnparu /I cum I, tk"vi;n ldn paru :\ chiusula elsc se /I :> I. () cóJigo lhclll'a"~a Ires \'ll lorcs pma a pilha: (l en dcre\~u da c:lueia de formalo. i cj. \' chama a si I1H!smu. Os pnrftrncl fUs são passmJos e1l1 onJclIl illVCrl':t. o que é rt.':tlllCrido por progr:ttn:l'i \'111 C. ! \'('le~ 0" procedimentos rccurqivos confumlem iI~ pClõ<;oa<; no prindpio rna ~.
r N é parAmetro de entrada 0'/ t , é parAmetro de entrada 1 ., r J é perAmetro de enlrada 2 "
r r r
K é variável local O ., Paramo é parllmetro de S8lda O ., Paraml é parllmetro de !IOlde 1 ' / Palam2 fi parllmetrode lolde 2 '/
r
I' a propósito, cpp usa a convençllo de comentário C '/
.proc 04 .gIoballowers lowarl: lave %sp. - I t 2, %sp cmp N,I bna Eisa aol h! %hl(tOlmOI). ParamO ParamO. %Io(tormol) , ParamO mov 1. Param I call prlntl moY J, Param2
nuur .. 6 .3J Tonos do Hanói
EIso'
pala a UltrnSPARC 111,
I prln1t("MoVil e dlk Irom %d lo %d\!1", t, j)
! ParamO .. endareço de CAdeia de lormalo
bDon. "..
!Param l . 1 t ch ame prlntf ANTES DE parâmetro 2 (I) !leI ajustado I U!lO a poslçio 'I8zla após chamada pall! ejustar parâmetro 2 I lellnlnantOll agora t preencha posIçllo vazia
mov6, K
Iln1c1ek.e -l- j
sub K, J,K sub K, I,K
Jb6
J
I k ", 6
I
iKkI N, - I. Scmtch mov Scratch, ParamO mov 1. Paraml call tOWilra mov K, Param2
! ioicle towers(n - 1.1, k) ! Tempo"'1o .. n I 1 psrArnel ro 1 .1
mov I , PenamO mov I, Param! caJl towers mov J. Par8m2
I Inicia towel!l( I , I, Jl I parllmelro 1 .. I I cheme towerl ANTES DE pafArnetro 2 u) ser AjustAOU
mov Scralch. ParamO
I inicie lowefB(n t, k, Jl I parâmetro 1 '" k t chame towefl ANTES DE perAmetlO 2/j) ,er ajustado
call towell mov J, Plillam2
'"
reatore Iormat·
t se (n t. 1) goto Else
Of
nlOV K , Paraml
Done:
lse(n ._ I)
j
1chllme Icwers ANTES DE pluêmelro 2 (k)
!Ief
IljuslAdo
I use a posiçlio vaZiA ilPÓ!; ct1i1mAda PCI'fl aJuSlar pa,Amalro 2
I parAmelro 2 -
t
par~metro
2 ..
i
I
! retoma I UAO 11 poslçio vella após !el pala relltaurar ianelas
.oselz ' Move a disk from 'Y.d lo %dlu"
'f.ll',
Emlerlll()). de algoritmo, .. versãu UltmSPARC 111 é idênticlI à versão I\:ntium 4. AlI1ha~ IC~llUlllI p.lra cumedt!!>\'I'llll pÕlfa li .. láu!>ula d"clol! 11 > I . A principal complexidade d,) versão UhraSPAR.C ~c deve 'll.lgulIl,llt pm-
pricd.tdt:) da ISA
oro rii-
lIc OI'
,,,
" " a o.
... M N
_
P,lra come\r'Õlr, " UhmSPAl{C IIllcl11 de pas!>ilr o endereço ela cadeia de fonualtl r ~Ir mover o endereço para o rcgi)lrador que contém o parâmetro que e!>l~ saindo porque não há nCJlhmn JIlodo de C(I!UCilf uma cOIlManle de.l2 hil~ em um rt:gislrntlm em uma línica ills lru~ào . É preciso dua" in,truçik:. para falcr i ~ "l , SETHI c DA. A pr~Xilll..l cm ~ .. li notar é 'lHe não há nenhum:! necessidade de fazer um aju!>lc de pilhll a]wll> li chamada por(jUC li jrmela dr.: rcgi \ lr.ldnrcs é ilju!>ladn pela iUl>lruçãn RESTORE no final do procedimento. A capacidade de 1:010..:ar o~ pal1ill1elro.~ Illle c~lãu ~ui llcln em rcgi~l raclmcs e não lef de ir ,ué n memória é um grllnde gaUh\1 de de~eIlLI)C ' nho ~e li prulwlI.Jid.H lc da chamadn não fi Cllr LIlUitO grande mas, em geral , ludo o mecanismo da janclu de rcgislrlulllrl:) prm.1\ clmcnh! n:'hl vule a cornplcxülade. Agur'L null.: li iU)lfLIçãu NOP em seguida au de) vio pura f)ulle. E).'.a é uma IXI)içàn vaLill. b)a iulolrução .'.em· prc M.:rá cxe'::lLImlu. ,JlIld,1 que \C I1/111 :Ipó~ umll imlrução de de)vio incondicional. O problema é que a LJllraSPARC 11/ Icm 111\1 par.Jleli:'llLu proiundo c até o hardware dc~cohrir que tem um dcsvin em mãos a próAi ma in)ll'tlçiin Já I!~tll rá praticalllente clulcl u[da. BClll-vindo ao Mumlil Milntvilllo~o da Pmgrmlulção R/ SC. [i)Sll cânJcterflolIca dhel1idu também se e~lendl! a cham.lda~ de procedimento. Ohserve a primeir:1 ehu11lad,l p:u'J /OU't'rS nu d áu)ula else. EllI cul!x:a 1I - I I!nt %00 e; em lJ-ol. mas fai: •• chamada dI! plUccdimcnto para 101I't'1")' anh!!> li.: culoc:lr o ullullu p.lrâmetro 111) lugar. No PentiulIl 4, primeiro você pass!l ns parâmet'(()), depoi~ faz li ehammla . Aqui, primello voeê pa)sa alguns dos parâmetros. depois fai: 11 chrmlllda e, ptlr fim , pll s~a u último pur5meIm. E. novamente, 'Ilé a llIálluinu perceher que cstá lidando CO m uma in~l l'ução CALL, a inslrUliãtl ~eg uint e já I!~tá t1l:0 profunda nu parulcli)mo (lue tem de ser executada. Nesse caso. por (Iue não USllr a posição vllLia para p:lssar o LÍltiulIl pal'dlllelro'! r.. k~ml) que a primeiríssima instruçãn do procedimenlO chamado use aquele parâmetro, elc estar.í lá a tempo. Pur fim, em /JII/II'. vcmo.~ que a instrução RET Iõ.lTllbém lcm uma posição \'a7i3. Esta é usada Jlafil a instrução RESTORE, filie IIlc ....:menta CWP e recoloca u j,l1lcla {Ie registradores 110 modo 'lu,: () dltllllllc!or e~ pe ra. Il~(l
5.8 A arquitetura IA-64
e o Itanium 2
A Intel e~tá ctwglllldn rapidamente ao pOllW em que já e.'.prell1eu (luase 11 lí1tim:1gnta de sumo da ISA IA-32 e da linha de p('IJee!>~ :hlore~ PcntiuLlJ -L Nuv()~ modclo~ lliuda Jltldem ~e benefieiar elos avanç()~ da tecnolugia de I'ahri c:l~ãll , {I lluC lolgnilici' Iran~i)lI)rC~ menores - c, portanto, maiores vclocidi J em rciaçll.o au PcntiulIl. O mercado iniciaJ são os sl!rvidores de uha t\!cnologia, ma), cllm I) tempo, pnde migrar para o mundo dos cLlmplltadore.'. de mcloa. De clualqucr modo. a arquitetura é tão radicalm.::ute diferente dI! tudu o que ~ tudllillu!> llté agora que valc a pena e)lUdá-);1 )ó por essa r.Jzão. A primeira impleulcllta\ão da arqUitetura IA-M é li ~érie Itaniunl. Nu rcstante desta ~eção estudarclllo!> a arquitetura IA-/W e a ('PU !lulLJu1l1 2 que 11 implemcnta.
5.8.1 O problema do Pentium 4 Ante) de Cnlrar no~ delalhl!s da IA-(H e do It aniulll '1, é hom rc\'i~ar () que \!~t~ eCT".ldo nll Pelllium 4 pura vcr qUlli~ pruh lel\la~ .1Intel e~li.va teilt:lndo resolver com a nova ar(luitclllf!l. O prineipal fnlo da vidn (Iue causa wdo Il pl\lhlt!nm é que a IA U é lima ISA alltiga eOlll tndas :IS propri\!llades erraLt:Ls para 11 lecnologia corrente. É umu ISA ClSC CUIll in~tru~i'ie, Ile I;omprimellttl vuriávcl c ullIa prorll~ãLl de diferentes formatoS que ~iio difíceis de codificllr rapidamentc dlll'ilnte li exeeut,:ão. A tecnologia corrente funciona melhor eom ISAs lu se llue têm um línico COmprimentu de in~lm~ã .. c um nl>Looe de comprimenlo fixlI, fácil de decodificar. As instnlçõcl> IA-32 podem ser <1.:)1II\!1I\br.nlas em lIlicr. llJpera~ÕI!~ )emclhames li RISe durante 11 cxecu~ão, mas is~o requer 11Iln!wllfc (área de chip). h)HU\ tl!mpll e agr\!g'l complcxidudc ao projeto. E~loe é o primciro problema. A IA-)2 I;Jlllhém tem ulIla ISA lJc: doh cnderc' eom base em mem6ria. A maioria elas instruçõl!s referenda memória, e grande p.. nc do) prngr:unadores e cOlllpiladtlres não se preocupa llIuito com referendar a memória 11 1\!I1lIHJ todo. A Icclloltlgia corrente f:wor\!cc ISA !> do til>oearregul!/annaLcne que)6 referendam ti memória para pu!>· ~ar operándo~ p:.ra rl!gi)lradorc~, porém, quantu ,UI rnai~, efetuamtudos os seu~ c~ l eulos usando il1.,tnlçõe~ de regi strador com trê~ emll:(cço) d.: memória. Como as vclucidade~ dc relógio das Cl'th estilo crelocendo COI1l mpide/. I1IU;tO IllUHlr du quo.: .. ~ \eloel d ade~ de memóriu. o pmhléma licurá pior com () I\!mpo. Esse é 11 )egundo problema.
o
••,
~
"
"c
•
~
o
, c
c o
u
o ~
,• •
•> '" o
-• o
~
u
1\ 11\-32 tem um CU l1jlll11tl de regislmdorell ]>e4ucnO e irregular. Além tlc dar UIll mí 1I01l t'o1l1pilad()rc ~, cllsa pCqUt'IIi1 qUlIlIliJadc de rcgislmumcs de uso geral (quatro ou sei!>. depcmJcmlo de como você c(1I1la ESI c EOI) requer que rcsullndos intermediárius sejmn despejados nu memória u tempo Iodo, gerando referêm:mll cJl lnL,1l à rnernlí ria.
•"o
",• ~
ao
"•
"• ",• , "
"
~
'•. o
~
N
o
•
~
o"
mesmo quandu 11 lógica nã.o as exige. A IA-32 perde li partida. Agora vamos para li tinal. A pel]UCnil quantidade de registradores causa 1I1Uitall dcpcl1dêndull. em espedal dependências \VAR desllccessárias, porque (J!i resultado!> têm de ir para algum lugar c nào Ilá regilllradores exlras dispollrvei .~. Contornar 11 f
5.8.2 O modelo lA-64: computação por instrução explicitamente paralela A idéia fundmm:nllll <1<1 IA-64 é Inlllsfcrir o trnbalho do tcmpo de execução pllra u temllll de curnpilnção. Nu Pcntium 4 , durantc a execução a CPU rcordenll ins tru~'ões, renomeia registradores. esclllona trnid:tdcs func ionuis e realiza muitas outras tarefas para determ inar COl1l0 manter todos os recursos de hanlwm'c tOlahnente ocup:tdos. No modclo lA-64 . o cumpilador decifra lodas essas C01S31' com anlcc.:edência e produ7. um programa que podc ~er executado tal como é. sem que u hardware tenha de fazer malabarismos du rante a e"eetlt;ão. Por exemplu. em vez de di7.er ao compilador que a má{juina te1l1 oito registradores quando na verd,,!!e tem 128. e entilo tcntar imaginar durante o teUlpo de execução comu evitar dependências, nQ modelo IA· (i4 u cumpilador sabe quantos registradores a máquina realmente tem. de rntxlo 4ue. antes de tudo. pode pnxlu7.ir um programa que não tcm nenhum eonn1w de registrador. De maneira semellmnle . ne~ s e modelo o c('rlipilndor monitoTll quai s unid:ldcs funcio nai s estão oc.:up
5.8.3 Redução de referências à memória o ltaniu m 2 tem 11m modelo de memória simples. A mcmóri n consiste em nté 2 61 hyt \!s de
mell16rin linear. última para nlÍmeros lle ponto nUlUunte de 80 bi ts p"drüo IEEE 745. Referências à mcmória não precisam cstar ali nhada ~ por SUtiS fmn I\!irm: untur";s. ma.~ o llcsempenho incorre em uma penalidade se não estiverem. A memória podc ser ,,;~ elld;(l1I ou liu'e ellflioll. li quc é determinrldo por UIll hit e m um reg;strudor que pode ser concg:ul0 pelo 1'istema operacional. O acesso ti mernóriu é um enorme gargalo em IOdos os computadores modernos porque a~ C PUs sãu muito mais rápidas do (Iue a memória. Um mooo dc reduzir referências li. mem6ria é ter IIIHa c.:i\dlc de ní\'e l I grande no chip c uma cnche de lIível 2 maior ai ndu próxi ma ao c hip. Ttxlos os projetos mod~nto~ têm e~ ~n~ duas cfll'hcs. Ma ~ In slruçõe~ estão Ili sponí"cis para acessar memória em un;dade~ de
I. 2.4 . R. 16 e 10 hyte~.
li
~sJoa
quer
ória,
fI.ur. 6.38 ! -
blon,lI
Hegliiuadores do
~iIIIJiI(\Ofe,
Ilalllum 2. UIi8IIG1 como =="-'''--uma pllha de regls1rlllklres
I
64 regl81rddoses de prBulcados de 1 bll
"
128leglslrador88
de ponto lIuluanle
em 32
"'"
~/
~ig
JIIe
um
ma
firo
.Ia
". no !-
,"
U')
N
li regi.lradorn do IteliVÍO
rBgISlfadot ••
daI uu.
...
"t;l~COI
não dcvcl!lu:" nolo re ~ t ringir ti" enches nu buscu de outro~ modos ele rcdutir refcrêncius 3 memória, e ti IA-()..I lI!>a algu lllo (lCl>"é:l> lUodo,. O melhor lIludu de aeelerm referências à Ilu.:mórin é, tlntes de IllLlllcllICf coisa, cvitá· lus. A impl e me n1U ~'1ill hanium 2 do II1fHlel' l IA·64 tem 128 rcghtradores de mo geral de 6-1 bits, Os primeiro!. 31 ,telelo Joãu clolálicos, ma~ u~ 96 restantcs !>ão u~adu~ LOIllO Lima pilha de reghtmdorcs muilU !>Cmdhallte ao e~quell1a de jllnel:1 ele regi~tradu res dOi IJllnlS llAI~C 111. Contudll, diferente da UltmS PARC 111. o mí meru de regislradores vi~rvcilo para o programa é variável e pude Illudur de pmcedimenlo p:lra procedimento. ASloiul, cud:1 procedi menti) lem IlceloSO a 32 regi5lmdMes e~ti\ticos e a algum mimem (variável) do: regis tradores de alocução Itinamica. Quando IIlIl pn lCc.limenlu é chamado, 11 pomeiro de pilha úe regilolmdtm:s é 'l\'unç;lflo, do: modo que os p:lrl1metros de enlr.lda MIO vh,!\eh em I\:glslradorcs, mas nenhulIl regiMntdor é alocado para variáveis locais. ~ u pr6prio pmcedillH!lIto que decidI! de quantos regislradnrc!> I~rccisa e avança o pomeiro de pilha de regi~ tr;l(l {)res para alocá-los. Elo,e, regi'trlldurcl> nã" precisam ser salvos na entrada nem restaumdos na sarda, embora, se li procedi mentu precisar modilicar um registrador eSlático, deve ter () cuidado de salvá-lo explicitamente antes e restaurá-lo mais tarde, Por ter ntÍmero variável de ré:gistmdores disponfveis e talhados para o que o procedimento precisa, os regis t rad()fi:~, IIIll I'CCUn.O e~cu,~o, não são desperdiçados, e chamada~ de procedimcnto podem se nprofu ndar anles de Olo rCl:li!>lradllre~ tcre m de Joer descarregado!> pam a II1cm6ria. O [lUnium 2 tílmhé m tem 128 regi st radores de [)onlo tlutuunl e em formulO IEEE 745, que ni'in funcionam eomo uma pilhn de regislr:tdorclo. Elo~e ntímuo muito gmnde dc registradores significti que mui los cálculos com ponto Oll' tllilllte podem manter lodo~ t)~ ~CII~ r<.!sultudos inlt:nnediários em regi~ l ntdores e cvitar o ttnn:lzenomenlO lemporálin til! rl!~uhodj}~ na memória. Talllhém há 6~ I\:gi~tradorclo de predicados de I oit, oi lo regj~ l rndores de desvio c 128 rcgislmdores de aplicu· ção de uso e )pcc illllltiliL(ld o~ para várias fin alidlldcs, tal como p:t~sllr parilmelros enlre progrtlmas de aplic:lçiio e I) loil>letnll operuciunal. Uma Vilo1i1l geral dos regi~tflldorelo do Itaniu m 2 é dada na Figura 5.38.
5_8.4 Escalonamento de instruções Um do~ pri ncip..Iis problemas do Penliuffi 4 ~ a dificuldade de escalon:lr as várias instruções pelas várias uni· dades funcionaiS e C\ itar depend!ncias. Si'io necessários mecanismos ex tremamente complexos paro m'lIlipular toda ... ClóS:b {luc~tÕt!S em Icmpo de execução, e uma gronde fra ção da área dn chip é dedicadn a seu ser.:nciamenlo. A IA-6-1 e o Itanium 2 C\·itillll wdos esses problemas porque é o compiludor que faz o trabalho. A idéia fundamen · tal é que (J prugrtllllil coJbilota em lima seqUêllcia de grUJlOS d e instrução. Denlro de cert as fronleiras, 1()(las as illstmçi"H.:lo de ntro dI! um gnllXI não entram em conflito lIllIas com as nu tras, não usam mai s lIlIidlldcs funcionais e recur~os do quc li máquina lCtn, não contêm d eJ>end ê ncia~ KAW c WAW e lêm somenle dependêncins WAK rcstrilils. Gnlpolo de i n ~ tmçÕt!~ con~ec uli vos pilreCent estar Joc ndo executados estritamente em seqUência, sendo que o segundo gmpo não começ,1 até 'Iuc o Ilrimeiro seja conclufdo. Enlretanto, il CPU pode iniciar 11 segundo gnJpo. em pm1e, aJo!>illlljue pcrceher 'Iue é )Cgum fater isso. Como comcqíicuciu dessas regras, 11 C PU fica livre pam e!>culOllur Il~ instmçõcs dcnlfO de UIII gmpo nu ordem que preferir, plI!>!>i"dmcnte em paralelo, se puder, .~elll ter de Se I)reocupar com cllnnitos. Se I) grupo de instruçôc.~ vinlar {J$ n~gm~ , o cUlIIlKlrtul\lcnlO do pwgràlllll é iudeti llidll. Cabe 110 compihldor reordCrlllr o código de montagem gemdo 1>l.'In progrumu-fllule de modo a loat isfazcr tndos e~Selo requhilos. Para (;()mp ila~:1io rápida enquanto um pm grama clotá ~ellll" dCJlumdu, ., compi lador podc colocar cuda instrução em um gml>O diferente, o que é fácil de fazer, IIt.I~ reloullu I!m m três campos dI! regi~tmdllr. Pur tim, h.:mm o REGISTRADOR DE PREDICADO, que l>Crá deloCrito em breve.
•
~
o
,
o o o
u o
~
,•" •
,o"
'•" ~
•> z
,o •
u
Bits r ___40''---__, , __--'40' ___, ___C'"'' -__, C''-;
1"~t'''ÇBO 1
Instrução 2
•
•o •,
~
ffgUra 5.39 O pacote [1'1 - 64
ins!mçôes.
~ ...
... _,/' /",-
contem três
/ "
.... ...
,., b ." ......... ... ... ~...!I... ar!
/'
Blls
II
Inslfuçi'o O
,
...
r'''.,/c---;=,,~,__-r;;;;:;;o;;7''':;;;;r;;;;=7::c=''''='''~7::c=''''_''~ 6'~':.:,., REGISTRADOn REGISTRA DOR REGISTRADOR 3
~
2
,
8
o u
• •
~
~
,•" , "
•
~
o
••
~
• N
REGISTRADOA DE PREDICAOO
o gabarito UU pucOle informa, em e!'sêl1d:•. qU;lis uniu:lu c~ fUIlc1 0ll:lis () patQtc nccc~ ~ i l a e tmnbém " po~i,llo da fro nt eira ue um grupo de instrução prescnte. se houver. As prilldpai ~ unidlllJc.s fund urmis ~iiu 11 ULA de inte;T(l~. ;l~ i ll ~l nlçf)Cs de ULA para nãu i l1\e iro~. (ljJcraçõcs de rncm6ri
5.8.5 Redução de desvios condicionais: predicação Ulmt outra curaClcr[slil:u impurtll11 te da IA-64 é a 1I0va ma neira com que ela lidu eUI\! dc~\ ios cOillJ icinnai s. Se houvesse um me io de sc livrar dn maioria deles. as CPUs j>odcrium ser 1I1l1i s simples e 111l1 i~ r6pid u~ . A pri mcim vista poderiu pareçer illlpossrvclli car livre de desvios com.l icinnais Ilnrque progrn llw~ c~ tào rcplc l o~ dc dedamçõcs do tipo 'ir. Contuuo. a IA-64 usa uma téc njça dellonúnndn pl'cdicuç1io. que pude ret.lut.il muitu seu mi mero (August et aI.. 1998: e II wu, 1998). Agora vamos fa 7.er uma descrição rcsumiua dessa téçnica. Em lIu1quinas atuuis, todns ns inslruções são incondicionais. 110 sentiuo de que, qua ndu n CPU atinge ullla instrução, ela apenas 1.1 e:ui,õcs da parte clse podem ser cUll1pil ad:t ~ e llllllll:;1 ~ cqUê n dll de in~trll ' çOcs CMOVZ. T{xlas essa" in~tmções. o ajuste do regis trado r, as CMOVN e as CMOVZ rllrlllalll 11111 único hloco hásicll sem l1enlll1l11 desvio cuntlicional. As instruções podem até ser renrdelladas, sejôl pel o compilador. ind uinuo cle\'ar as atriI!(At = Oll ngurfl6.40
CMP AI ,O BNE L t
A2 -= R3; A4 . A5;
la) Declaração Ir. Ib) ) 0ls6 I Código genérico de A6 -= A7; montagem para la). AS . R9; IcJ Instruçâo condicionaI.
MQVA2.A3 MQVAtI .A5
CMOVZ R2 .R3,Rt CMOV7 A4 ,R5.Rl CMOVN R6,R7,Rt CMOVN na,R9.Rt
BR L2
L I : MQV R6.R7 MOVA8.R9 L2: (b)
(o)
il(At ..",OI!
Ruma li 4.
R2 ~
R3;
A" .. R5;
1111 Declaração iI (uI ) biseI
Código gtlnénco de mllntllgflm pata (aI (cl Execuçao condtClonol
R6.,R7, A8 . Ri;
"
CMP Rt ,O BNElt MOV R2,R3 MOVA4 AS BR l2 t.10V R8,R7 MOV ABR9
CMOVZ R2 A3 At CMOVZ R4.R5.Rl CMOVN A6R7.AI CMOVN AB.A9.A I
L2. (b)
(.)
(o)
•
~
il(R! =R2)
içilu ~, as IllIe, iCllr [nl ~
do,
f luura 5 .42 (a) Declalilc,:ào íf. lO) Código gt:nérlco de montagom paro (a) . (el Elecução pretJlcad"
A3 :oR4 .. AS; .IM
R6 .. R4
AS
(.)
CMP AI .R2 BNE li MOVR3.A4 ADD R3.RS BA l2 U . MQV AS,R4 SUB A6.AS t2:
CMPEQ Rt .A2.P4 ",P4:. ADO A3.A4.R5 ",PS,. SUB A6.R4.R5
(b)
(o)
hui çõc~ p:L!'a :u\lc~ dLl t e~ lt:, ~eja uurame 11 execução.
"
ê o
~
•,"
O tinico :.enão é (IUC a cond i ~~i'io tem de )er conhecida na hora
t:m (IHe:l:. itbtrtJ\'/\!:' devem ~c r retiradas (próximo ao fin:t1 do pllruleli:.mo). Um elcmplo ~imple~ que mostra a parte lhen c fi p,Lrle else é dudo 11,1 Figllnl 5.41. ru
,
"o
dI! Ill -
o c
Emhonlteuhil1llus mo~trado inSlntçôes condicionais muito simplc~ 114ui (ml verdade tiradas do Pentium 4), lia IA-M tnda~ a) i n~ truçi'll:) ...ào predicadas. Isso significa que li execução de loda lII ~ trução P'Xle ser tmnSfonmldll em condicional. O UUllpll I:;(u'a de 6 bits a 4ue no~ referimos lInte~ M:lcciolla um dos regist radore~ de predicados de 64 hits. A~~illl. ulUa dl:durw;ão ir!>l!rá compilada pam código que marca um dos rcgi~tmdores de pr~dicados como I M: a cundlção fur \'el'lladclnI ~ pam fi !>C ela for falsa. Simultânea e automaticamente e1alllurcautn mllro rcgi~tmdor de pret.Iicat.lu par.. li \l,lor im crw. U~ando predicação, as in~truç&~ ele 1\1;'\'luina 'Iue fumllUll as cláusulas then e else serão fundidas em umu Línll:a cadeia de instruçõcs, as primdr.t~ usando o predicado e as liltimas usando ~cu inverso. Embora ~imph; ~. n cxe:mplo de Figura 5.·,n mostra a id~ ia bl1sica dc {."(lIllO a predici!ção pode ser usada pilr'.t dill1 inur (t c~\ i()~ . A tU~lmçãu CMPEQ campar.t LI!)is registradorcs c murca o registmclor cle predicado P4 como I se e1 c~ forem iglHli~ e CIImo O:.c fOl'l!m diferentes. Também ajusta um rcgistr.Lclor emparelhado. pm exemplo, P5, para a co nd i ~ãn in\'cl'~a . Agora as iJ1~t Olç{1es pari! as pill1es 11 e then pod em ser colocndas uma atrás da outra, cada um!! eulltlieiLlI1ada C\)[l forI11e algum rcgi~tnltlOf de predicado (l11ostradn elltre parcotescs ungularcsJ. Nesse caso pode ser cnJllCadn eóUigu arhL!n'Írio cOJl1anlO que cmla in~lruçiio ~ej a ade1luad:lll1clltc prl!dic'lda. Na IA· 6-1 , e~sa Ldéiu é lcv:Lda ao e:uremo, com in s t ru~;õcs de comparnçilo para ajusHlr os regislrndnrc~ (Ie prcdicildn.~, bl!lll CULllO in,tnlçoclo uritntéticas e O U1ra~ jnlotrtLçÕC~ C(tiu cxccuçi10 dej'x: ndu dI: IllgtLm registrador de prcdiclldll. Imtruç{lc ... p"Cdj cilda~ ,lOdem ser ulimentadas no punllelisnlo em seqill!ncia, sem nenlluLIlu pro telação nem prJ)hlerno ~. ~~ pm h~(I 4uc: ~ilo tiln úteis. O modo como ,L pn:vi... 3o relllmente flHlciona na IA-6-I é que tCX:!;l instolção é executnda. No tinal do parah:lbmo. quando i! hora de re timr uma jn~tOlçi\o , é rcita uma vcrificação para ver se o predil.:lldll é verdadeiro. Se for, a in~tl1lç:l0 é retirad u normalmente e seus resultados são escritos Ilc vnhn no reg i ~ trudor de dCMino. Se o predicudo fm f~ll ~o, nàu é feita ncnh umil c:.crita retroativa. porlluuo a illMruçllo não Icm ncn hum efeito. A predicação é discutidu em delltlhe~ em Dulullg (11Jf>8).
5.8.6 Cargas especulativas Uma cntado 110 ('apituh) I Se UI.:a!.o () regbtrildor envenenado rOf utiliLado mais ta rde, u exceçàu ucorre n c~sc instante; ca~o cllnm'iriu, Llatlu ,lconh!ce. () mmln nurmal dc U1i1inr il elillCcu l:tçàn é () cOlllpi1:tclor elevar in ~tmçÕl!s lOAD para posiçõcs adrna an tes de ~CréJll neccs ... árill:,. Começando cedo, elas pocIem ser conclufdas iIIltes
•
,
o-
<"
• •>
~
"
... Dl
N
•""o
"•
"8
~
o
u
•
"•
"• "
" "" "
~
o ~ ~
• " •"
~
o"
r1l1l1US de um:! dedarnçi\n I1 sejum fundillas em umu única cnclcia, eliminando" dcsvilll'undidon'll c, por ;($0. 11 previsão du cm ninho que dcvcriÍ seguir. Por lim. LOADs c~pcclllalivas pmsibililillll lJu~c:,r opcrllndos com ,mtcced{ll1da. sem penalidade se nlOi s funil' se descobrir (Iue , afinal, não são IlcceSSnl';os. Para mais informm;ão subre li II nl1;ull1 2 c sua lI1icmarquilclurn. veja McN:lir)' e Soltis, ZOOvirlual
IIIclllorycryptuJ; e RLI~1l ef <1 1.. 2lX14.
5 .9
Resumo
o nível til' arquitetura do conj unto dc inslruçt1l1 é li que a maioria das pcssoa~ chama de Iin8//(lgl'lII (/" mdqlfill(l. Ne.
nsc
Problemas 1. Urna palavra c m um computador fiftlr em/iWI tem o \'alor lIumérico (le 3. Se el:L for trall~rnitida para 11111 CO III putador big (!l1flhm b)'le por bytc e .. li am mzcnaclu com o uyte O no byte O. c I1s~i1l1 pm diante. quul é seu valor numérico na mácluinll big t11llial/1 2. No PentilLIll 4. i n s tru ~'õcs podem conter quul(IUer (Iwmtidaue de uytcs. par ou fmpar. Na UltraSI'ARC 111. todas IIS in~truções contêm 11111 mímern inteiro de palavras, isto é. um número par de hytl'~ . C ite lima vantagem do C5(IILCI11U PcntiLlTl1 4, 3. Projetc um (1)Cudc de c}(pansão para permitir que ludus os scg uinte~ sej am coúirica(lm elll uma instrm;i1o de 36 bits: . 7
SOU 40
in~truçõcs
com dois
cl1dercç()~
de I 5
bit~
C 11111 mímcro dc regis trntlor de 3 bits
in~tnl~·tJes com um ender~çn de 15 hit s c 11111 mil11em de registrador de: 3 hit~ in~tnlçücs
sem nenhum
e ndere~'()
nem rcgi!'lradur
4 . Urna certa 1I1á(luÍ11:1 tem in~ tnrções de 16 hiL~ e endereços dc (í hil",l\lgumas in ~truçflCs It'm UII1 endereço e ulltm~ têm dois, Se houver 1/ illslI'uçõcs de duis e n dcre~·o~. qual é o número máJdtILo de il1iilf1LÇÕCS de IItIL cl1derc~'u? 5. É possível projelar um \I1)C()(le de exp:msão (Iue permita ql1e os seguintes sejam cndiril'ados em uma i n ~ll'ução de 12 bi ts? Um registrndor tem :1 bit~ . 4 instruções cum três rcgistnldores 255 in~ , rlLçõcs C(lm IIIll rcgislradnr 16 in~tr\lçõe.~ com zero rcgistJ'adurc."
6.
D..dth li:. \' .. I"f~!o de IIIcI116ria 11 !>Cguir, e ullla máquina de 11m endereço com UIII ac umulador, quai!> \'alorcl> U:. ~cglLi lllel> inl> lnlçc'lel> carregam no acuillulador?
...m N
pala\ Ta lO corll ~ rn 40 palavra 10 Clllllém :'i0
"I
palavra . H) C"Illl!rn 60 p;da~ ra
d o.
lOAD LOAD LOAD LOAD
e.
lOAD DIRECT 30
t.
LOAD INDIRECT 30
& .
..
b.
-
,-
c.
:5
,.
OS
7.
"11 c, Ull..!1II 70
•
~
o
c
"
Compare máquina:. de 0, I . 2 c J
x ~ IA
"
IMMEOIATE 20 OIRECT 20 INDtAECT 20 IMMEOIATE 30
cndereç()~
c o u
c:.cfc"cudo programas para Ct1lllp llHlr
, Il X CI 11Il - E X F)
para cada ulHa das qumro l1 uíquinlls. As
'.
o Endereço
'.
'.
inslrU!;llc~ di:.ponfvds
1 Endereço
pnra usu silo ti l>
2 Endereço
~cguinu:s:
3 Endereço
PUSH M
LOAD M
MOV [X = V)
MOV IX = V)
pop M
STORE M
AnD IX '" X+V1
ADO IX - V+Z)
ADD
ADDM
SUB IX
SUB
SUB M
MUI. IX .. X'V}
MUI. [X ::.- "·ZI
MUL
MULM
DIV IX
~
DlV (X "" V/ZI
DIV
DlV M
= X- YI X/VI
SUB IX
,"
o
• o,"
"' •>
== Y-Z)
z
~
o
é um
ellcle r~o
de mem6ria de 16 bits. e X, )' e Z sã\) e ndereços de 16 bits ou
rt::gi~lrlldofes
de 4 bits. A máquina de (I cndereço usa uma pi lha, li máquinu de I endereço usa um acumuhltlor e U5 outras duas têm J fi registradores lo! lI1~tmçõcs que operam sobn: todas as combinuçóc/Õ de localiLaçõcs de Illemória e regilolmdnre) . SUB X. Y ~lIbmlL Y de X e SUB X ,V,Z ~lIblnl i Z de Ye coloca o resultado em X. Cum u(lClldcs de H bits e ctllllprimellllb de i n ~ lrU \:nn tmíltiplos de 4 hit ~, '1LHltllOS bits a mâcluina precisu pam calcular X?
1ft
6,
Planeje um mec:lnbmo de endereç,unelllo Iltle permitil que um conjun1o arhitrárin de 64 endereços. niío em um espuçn de entlcreçll grande, !>cj a cspeci lk,ivcl t!lll ltlll campo de 6 bi ls.
nece~~arianh.: n1e ~1)1l1igu()s,
9,
10.
Citc UIllJ.
a.
A+ B I C +O
- j~
b.
(A - B J X (C
D)
c.
(A X 13 )+ (e x Dl + E lA B) x {I(e n x E)/F)fG)
Qu,Ú) do!>
-t-
!>eg uitt t .:~
n + (' + ~ A
+E
x 11
pares de rórmu las em nowção Imlollcsll invenilla sãu m:llCJ1lUlic,lI1h.:nle equivlllenlcs'!
x+
n.
A
b.
A B - C eA U C A li X (' + c A B C -I X
c. 12.
de código aUIOllKN.lilicadol' (Iue nãll foi mencionfula no ICXlO.
CmlVeOa a!> )c~uiruc~ fónn ulas dc nutação inlixlI para notação polonesa invcrtida.
d.
11 .
dC ~\ üll!tlgel1l
BC
Cunvcrtll a~ ~cg uintc) fÓrJ1llll.i~ em notaçào poloncsa invenida pllra no t a~ãu inlixa . a. b. c_
d.
(' I ]) X Ali AU f('I> /+ ~BC])EI X X I A B C J) I: X I· / .,. U
HI
x+
13.
E~crcva
Ires Il'irmul;l) r.:1ll notaçi'io Imlom:sa invel1idu que nào podem ser conv~r1 idns purll llOl:lçãll inll ,"(;I.
14.
Convert a a!. ~cg\J i ntr.:~ f6nnu las boole:lt1a~ em notução inll,"(u para notação lN.l1cll1cs" invenida . (AE B)ORC' b . (A OR BI AND tA OR C,
a. c.
(AEO,OJ{(C'ED)
..•"
u
oli) N
15 . Converta a ~eguinle fórmula clllllolac;ão infixa para notação pulonesa invcnida c gere um código UVM pam avaliá-Ia.
(53217)2(4/21 I)
•"
16 . 1\ instrução em lingu:lgcm de montagem MOV REG,ADDA
o
~
•
signifir;a: carregue um registrador com base rw memória carregar um registrador da memória escrevemos
•
0-
S o u
• • •" • •"
" w o
~ ~
•
Pentium 4. Contudo, na LJ ltmSPARC 1/1. pura
LOAD ADDA,REG
Por que a ordCJIl dus opcr:lIldos é dirercnlC'!
~
~
110
17. Quantos registnuJurcs tell1 a máquina cujos forllllL lOs de instruções são d;'I(l t,~ na Figura 5.19'! 18 , Na Figura 5.19. u bit 23 é usado para distinguir entre a utilização do formUl o 1 c do fOflllillo 2. NenhullI hil é f0I'l1('c;<10 pam distinguir a uliH7nçilo do funna\() 3. Como o hanJwarc slIbc 4uando \I ~<í - I o '! 19. Em progn\llla~'ã(l. 6 ('011\11111 (\lIe UII1 rrogram<1 precise determi nar onde unl:L variável X est,í t:=m rclal,"ilo an intervalo /\ a 11. Se houves~e urna instn1~'litJ de trê~ endert.'Ços di~ponr\'cI cum tl~ ullenl1ltlo~ 1\. 13 e X. quun · t o.~ bits de código dc condição teriam de ser ajustados pnr e~~ll illstmçi\u'!
N
o
•
~
o"
20. O PentiulI1 4 tem U11I bit de código de cundição que 1II0nilora o vai-um do bit e:l. De que serve isso?
~
após uma opeT:l1,"5n ariunéti -
21. 1\ UltraSPARC II1 não tem instrução para calTcgar 11111 mimero de ~2 bits CTllUr11 regi~tmd o r. Em VC7 di ~~Il. nonnlllmente é u~adu urna seqiiêncin de duas instnJçõcs. SETHI e AOO. Hd T1Iai ~ de ut1l1Jlodo de c urrcgnr um mímeru de 32 hi ts em um registrador'! Discuta sua respoS ta .
22. Um (11- ~elJ~ amigos irmllll}e eTJ1 seu q\Hlrtu ~" 3 h(lraS da manhã. sem fôlego . para lhe l'(lJ1\;1r 'lll
24.
Tel' tc ~
da furma
11 (k:s O) .. . il (a :> b) .. . iljk < 5)
são comuns em programação. Invente uma instrução para rea1i7.ílr esses lestes com eliciênci a. Que cnmpos estão pre~entcs em sun instruçilo?
25 . Paraomirnerobindrioue 16 bits 100 1 0101 1100 00 11. l110stre o efeito de: a.
Um deslucamento de 4 bits para" direita com preenchimento zero.
UIII deslocamento de 4 bits para a direita com extensão de sinal. c. Um desloclllllcnlO de 4 bits "anl a csquerdu. d . Ullla rotação de 4 bits para n esquertla. e. Uma rota~'ilo de 4 bits para a direita. b.
26. Como você pode limpar uma palavra de memória em uma memória que não tcm nenhuma instnlção eLA" 27 _ Cakule
ti
expressãu booleana (/\ I\ND B) O R C
I~ara
onno
1\ "'" 1101 IOIO()(lll B = 1111 1111 ()()()() 1111 C ,.... (X)(J(J 0000 00 I U 0000
28. Im'ente um lIludo de inlcrcambiar duas variáveis 1\ e R sem usar uma lerceim variável nu pense na iIlS "'l~'ão EXCLUStVE QA.
regi~lrad()r.
Di ca:
po~sh'e l movcr um míll1ero de um registrador pam outro. dedocar cada um deles para a esqucn.l:1 IXlr diferentes qU qUlll condi~'ào essa seqUência de instmção é ÍlLil para cakulllr 'i,;(lllst;mte X variável "!
29. Em um certo cumputadO!". é
30. Máquina!' diferentes lêm densidades de instnt~'iío diferentes (número tle b)'tes requerido pam.re
lingua!l~m d~ IIlHutagc/lt Pentillm -I , li ngllilgclIlllc munt:lgelll UhmSPARC 111 c JJVM , Em seguiria cakuk (lu:lIlloi> h)'h!) ctld,1cÃJln:!~~ão requer pilra cada máquina, ('un~idere Ilue i e j i>iio vaná\ ci~ locai:. na tllcl1lflria; (lor~ JI] . qWIIlHl UII mais, faça as surosi çik~ 11mb otímislas em rodos os casos.
a. j" _ 3; h. i = j; c. i =j , para
31. As in!>lruçÕo.!!> de luço di~clltidas 110 textu er-.un par-.l IIlfluipu lar laços for. Invente 11111:1 in!>lruç30 que pexlcria i>d tÍtll para manipular I:IÇlh while. 32. Admita que 1I1o mongci> de Hunói IXlssam movcr I disco IXlr minuto (ele!> não lêm pres!>1l de tennillar o ln.hulho pOl"quc "lo upol1llllidades de cmpn:go pUni pcloloU:I:. que lêm cssu huhilidllllc peculi:lr :.ão limiliidas em II"nói,. QU'IIIIII tcmpo levará para eles re:.oh-l!rclII lodu n problcmll do:. b4 disco:."! F..\.prl!l'I!>e seu resultm.lu cm anl/:'.
1 bit
I
-"'
N
'•. o
~
"
•c
•
~
o
c
•c o
33. Por /llIe O~ di!>pt.1Silivos de EIS colocam () vetor de intemlpção no harnunentn? Scria possfvel armazenar
u
34. Um compu l.ldur Il!>U UMA pura ]enle seu di seo. O disco II!IIl 64 sei ores de 5 12 bylcs por Irilha. O Icmpn l!c rutaçiio do dl~ctll! 16 ms. O bamullenlO telll lI) bit~ dc largura e ImnsferênciaS dI) burrall1t!llto levam 500 ns cadu. A in:.lluç:lu Illt~diu de CPU r
•" • • "" '"• •>
!ri-
35. Pllr yUI! mlina!> dI! intl!mlpção de scrviçulêm prioridades aSM>Cilldas a elalo CIII]lUlIlto procedimenlos norumis
•0,
36 . A arquilclufa IA-6-I contém um grande mímero dI! regislradorcs (64), o que não é comum. A escolha des!'lc
não lêlll priundmle:."!
o ~
•
~
mímcHI lfio grande dc rcgislradores cslá relacionada com a ulili,açiio de predica,'50'! Se 11 resposltl for pil!'li. liva, como e~ lii() rclnciol1udos? Se a rcs[XlslU for negativa, porque há lamos regit.lrudorcs?
U>
ia "
37 .
di~.:ulidll o cunceilO de inslmçõcs ci>pceu lativ:Js LOAD. Conludo, n;\o há nenhuma menção de in ... Ifuçi\e!> e!>]leculath as STOAE. Por que n:\o? E);I!> situ, em essêllda, o mesmo que insll"Uç~s especulativa... LOAD IIU Im uma (lUlril razão por clue não fur.!1U disculidas?
z
No texto é
38. Quando Ilu,l) rc~le, locais dcv~1ll ser conccltldai>, um computador denominudn pIlnte é in~crido entre ela:. e.! ct\llcetudll ,I .lIllh:.:.. C:llla pacole lran~milido Clll qualquer UIIl" das redc!> cau~;1 llm:l intcITUI>Ção /lU IXlIl!e.! pam pernllllr que du \'erifitluc se o pacOI~ Ic:m de ~er re pa:,s~ldu . SUfIOnha '1ue Imlar ti inlerrupção c impccionar I) p.ll.OIC Ic\e 250 115 por pacote, mlt~ a lrausmis!>iio, se for nece5:.:lria, ~en:i executada por hardwurc DMA -"cm l'Iuhrccllrregar li CPU. Se lodos os pacotes tiverem I KB, Ilual é a máximu laxa de.! dadm que pode !>er tolerada em cilda um:l das redes s~m c:lLI~ar perda de pacutes pela IlIllIlc'! 39. Na I-igura i. :\2 , () pnll1cim de quadro aponta pura a primeifll variável Inca!. Que informa,:i'io o programa TlCCC~~i l a para retornar ~Ic um proccdimelllo? 40 . E!>crc:\ a uma ... uh-rllliua em linguagem de monhlgem para converter um inteiro hinário ..:nm ... inal para ASCII. 41. bcrc\'ÕI um .. ~ lIb-w tIll U cm linguagem de montage.!1ll pam eonvencr LUIIU fórmula infixa p.!rd nmaçi'io 1)11111.
nc:sa ill\l!ftulu 42. O TUITI~~ dc IhulÓi não é o linico peqUl!no procedimcnto recursivo mui 10 apreciaclCl llOr eientislas da compuTação. Um L)Ulm ravoriTO imhaljvel é lI!. onde li! = 11(11 - I)! sujei 10 ti condição limitadora O! ""' I. Escreva um prrK:edilllel1to Clll ~ lIa lingmlgclIl dc nlonlagcm fav\)fitll para calcular n!. , 43. Se você nãll ,:sli\'cf convencido de que a fl':Cllrsão é às vezes indispensável, h:n te prllgramar li Tom.!s de Ilanói !>ClIllhar reCUI"~ãll t: sem i>imular a sol uça0 recursiva manlendn uma pilha cm um Vcll}r. Porém, lIdwr tiulns de tlllIemao que você provavelmente nih> eun~cguini :.ochar a solução.
~
o
• " u•
Nível de máquina de sistema operacional • I
r c s [em" l1e,~[C livro é que U1t1l:ompulauor moderno é cOI1 ~lr\lfdo como UIIlU !'érie de nr vei~, e cadu um nneo:ccnta rUUdll!1a-
O
lidoulc
Um sist ClII1l ope raciolla l é um programa tlue. cl t) ponlu de viSla do programador. acrescenta \lma vnricdadc de novll'! ins Iru çõc~ c cnrul'[crflilicns, acima c além do que o nível ISA fornec e. Nonnulmcnlt:, o sistema operacional é implementado. e m grande parle, t'm software , mas n110 há nenhuma razão le6ricn ror que elc nilo possa ser colclCado em Imnlw:rn', cxatu mentc como acontece com os micropmgramas (quando estilu pre ~cl1r es). !'am :rbre viar. denuminnremOs u nfvel quc ele implelllcnla nlvel OSM (Operaling Syslcm Mnchillc). ou seja. nlvel de m Ólluill
Poslciunamento do uivei de máquina de sistema
operacional.
NlveI?
NlveI dlllIlquhelura eM oonjunlo de Inslruçlo Mlcroprogl8ma ou han:tw810 Nlvel tfe mlcrollrquHalura
Embom u ufvel OSM e CI nh'eJ ISA ..cjmn runbm: ab~tnuos - nu sentidll de que não s50 n venladciro nfvclllc hardware - , há uma importante direren~'a entre elcs. U conjuntu de in!>lruçõcs du nlvel OSM é li conjunto ctllllpleto de ill~t ruçõcs dispunf~ veis para prognlllmdure!õ de apl icaçiio. Contém quase tuda~ a~ instruçõc!õ de nrvellSA. be l!! como o ('unj unto de Imvll~ in'l\ru· ~'ões que o sistcma opcrndmral adiciuna. Es~"'1 nuvas instnu,:õcs são deno minadas Chanllldlls de sistem ll . Uma chamada de sistema invoca um serviço predefinido du sistema operaciu nal. na verdad e, Unla de suas illstruçüc..... UmA chamada de ~j~ t enm tfpica é ler alguns dadus de UIl1 arqu ivo. As chamadas de sistema serão impressa .. em letrru;: lI1 i mi~culas em fome Hd \'tt ica O nível OSM é ~e!l1 pre interprctado. Qu;rnuo UI\1 programa usuMio executa uma instruçilll OSM. ctUm' ler "lgu n ~ dado~ de um "((Iu ivo. \I s i ~ ' e ll1;r opc racionnl cxecu ta essa instrução passo li passo. do mcsmo mod o que U111 microprognrnl/L cxcculnrin urnA instruç[io ADO passu 11 passo. Cont udo. quandll um progrnmn executa uma i n s tru~'ão de " fvc l ISA. eln t crl."luuthr diretamente pelo nrvcl de microarquitelUra subjacente. sem nenhuma assistência du sistemA operacionAl. Ne~ l e Ii VUl poderemos oferecer apenas a mais breve das introduções AU ass unto de sistcmAS Hperac1U1Hl i... FoclI1izaremus três t6p1cllS imj)unantes: () primeiru é me m6ria vinuaL urna técnica romecida por mui tos sistemas opemcio ll (li~ motlenlll~ para fuzer com lluC U máquina parcçu ter lIluis lIlem6rill do que lUr rClllitladc tem . O srgundo é EIS de IIHjui vo, 1I111 cunceito de nível mais tll!n do quc as instruções clc EIS {Iue es tu dam o~ 110 capItulo unteriur. O te rceiru tópico é p ruces.~ am cn\{l paralelo - t: tlmu vários processus Iludem e,;ccut nr. se cumunit:ar c sincronililr. O conceitu de um processo é importante e o lIc'creverelllo,; deta· Ihadmncl1te mais ..cliante n l.'~tc cupítulll. Pur enquanto. podemus conside r.. r um processo corno um prngmllla em cJll:ccuçãn e t Ulla ~ as suas informm;õcs de estudo (me mória. registradores. cont ndor de programa. estadu dc EIS e ;..~si lll pur cliantc). Após di scutir es~('s princípius l~1lI tcr1llllS gerais. mustnrremos COlHO eles '1e nplirtlm aos sislernus o pe mdo n ai~ lle dmr" de l1U~';U~ máqui l1as de c .~r l!1plo. {I I'entium ~I (Winunws XP) e li UltmSPARC 111 (UN IX). Uma ve? que u NOS I normalmente é usadu em si~lt' rn;ls embutidos. e le nãu tem UII1 sistema operadunu!.
252
CI g c'
c' A Il
6
Nfver de máquina de siste ma operacional Slslema operacional
figura 8 .1
I'
'I' rI.'
6: 'I'
"
'" d, 'I'
"
1'"
ç"
ru' rer
,r ma JlIe
O,
6.1
Memória virtual
M I/)
N
Nu mícin da
h i~ l óri
dlllo LumpulwJorcs,
a~
Illemórüis erllln pequenas c C;LnIS. O IBM 650. n Ifdcr dos compu·
[adore:. científicu.., de MI,! éll\U;a (ti nal da déc:uln de 1950), linha Mll1lCnll! 2.000 píllavra:. de me mória. Um do... pri meiros cOlllpi[udur..: . . ALGOL CIO foi ebcrito para um computador 'Iue linha npenas 1.024 pu!:!v!"lIS de mcmórj,l, Um um igu l>i... lema de h.:mpn compun ilhudo tllllcilm(tva haSlnnle helll e m 11111 PDP- l C0111 1111llunhtl \OIal de memória de Uflé.llilb ·'-1)1)6 palavrJ:. de IH !lilll puru () . . iSlemn npcracinnul c pmgruma:. usuários comhinadu:.. Naquda época n Ilwgrmniulor gastava mu iw lemptl tenlandn comprimir prugrulllas na rnimísc u\:lllIcm6ria. Muitas \CLes em IlCCCS. . árin u...ar UI1I il lgor1llllil cuja execução era nllliw mais lema dn llUI! a de um OUlro algoritlllo mel hor. simpksll1l:llte I}OH\UI: 11 IIlguritlllll mdhnr era Illuito gr.ulIle - boto é. um progrmn
"
O
••"
~
•
w u
~
• ,"
'"." ">
" w o
• u
A idéia prlljMll>la pdu gnJj>1I de M:lIlcfu:ster foi )cpar'dr us conCl::IL..,~ de. espalio de enden:çu e hx:ulilaçõcs de mellll\ria. Comide~, como exemplll. UII1 computador típico t!uI\uc!a éll,oca, que Ixldcna ter lidu um cumpo de cllderi!~u de 16 bil~ em Mles~oas fa ..jam uma distinção entre (J~ e ntl\! rt:\~ o~ abaiXll de 4.096 e Ul> iguai ... uu acimu de 4 (}I)h. Embora raramente. e."presSn em pa1:l\ra ... , \!S~ilS (1mb pessoall não fu,dmn dhtinçfiu entre espaçu de i!ndercço c l!udcl'e.,:u) de rnernóriól porque o hardware IllIpunha uma correslXllldênci,1 um para um entre des. A idéia de ...cparilr IJ c... pa~'u dlo! el1dereifo e os el1derCl;o... de Illemórill é a ~cglli lll\!. Em qua lquer instuntc, 4.(196 palavrall Ilc melllóri:t podcm ~ér ilccllsadas diretamente, mas elas n1l0 precisam corresponder a cndcre'i0s de memória O u 4 .t195 . Pur e~elHp!(} , Ilo(\crCamos 'dizer' ao eomputudnr (lU\!, duli em diante, sempre.:: ' IU(! I) endereço 4.()I.)6 fll~~e rdere.::nd atlo, :t pal,wl'U de mcmória IIUend e~ço O deveria ser usada; sempre que II en de l'\!~:o 4.1)1.)7 fosse refercndalh.}. palavm dc Illcmóri" 110 endereçu I deveria sc:r usada; sclnpre que o endereço 8. 19 I fos~e refercnciado, a p:llavm de memóri:l IIU cndereçtl 4.0lJ5 deveria ser usadn e assim por diante. Em outras palavras. definill1o~ um mapeamellltl do e~paço de c.::nderl!ço pam endereços de memória pruprimnente ditos. COlHO mostra a Figur.l 6.2. Em termo) dt:S~ quadro de mapear endereços do espaço de endereço pam locali"ações ele memória proprianlellle dil
,I
E.paço fluur.8.2
dllllnderllÇO
-1d.
Endereço
endereços virtuaiS 4.096 a fU91 são mapeAdos pata ellderaçoll da
8191
rnem611il pnnclpal
4096
O a 4.095
•"u
•"
6.1.1 Paginação
Mapeamento 110 qual
• "uo
l
I
M.po.m"," ptirq)al M."""'. de 4 K
~
-
O -
_____
""I
...
r-
of09S
~
O
panl um cmk.fc llO entre 8. 192 e 12.2M7'!'". Se :\ máquina ni'lo ti ver memória \'i r1uul. " prugrllllli1 causaria uma cxccçiio que imprimiria uma mensagem adequadamente rude, pm exemplo: " Memória rerercndad a não existente:", e e ncerraria o programa. Se 11 lI1líquillll tiver memória virtual. ocorreria a segui nte seqilênci a de clapns:
•• "o
~
,• ~
8 o u
• •
~
~
•, , "
•
~
o
•• • •"m ~
N
o"
O conteúdo da memória prim:ip.r l seria sal vo em di ~co. Pa1:wnts 8, 192 a 12.2R7 seriam locali zadas nu disco. 3. Palavras R. t92 a 12.287 seriam c;lITegnuas para a memória princip:1L 1\ . O nwpa de endereços seri a alterado paru mapeur endereços 8.192 li 12.2R7 para I(!c,,'ií:a~'íjc<: de ria O u 4.095. s . A execução conl inuarifl COI11(1 se nndtl de incolllumlivesse acontecido. 1.
2.
I11CIl1(i-
Essa técnica de sobreposição aullll1lnl ieu é denominada paginação c os Irechos tk progr~lma lillll" du di ~c,1 ~ãu denominados páginas. ":,mbém é possfvel um modo mais soriSlicado de mapear endereços do espaço de endereço ll;JnJ clHleft:~os de memória propriamente ditos. Por tjl/eslão de ênfase, dellominaremm os endereços que (1 pmgrltll1:l pode referenciar como CS p tll,O de ender eço virtual. e os endereços de memória ligados ( rrsico~) propriamc!IIc dilos C\IIIIO cspa(o ,Ic end er{'ço rís ico. Um IlUlI)lt d e mcmórin ou tllbelll d e I>áginns especi tica o endere~'tl rr.. ico correspondentl' para cada ende re~'o vi nua I. Admitiremo.~ que hft espaço suficiente ell1 di sco para arlllazcuur IOdn () e~pa~'o ltc endereço "inuóJ!. ou, ao menos. a porção dele
8.1.2 Implementação de paginação Um requisito eJ;Sencilll para uma memória virtual é um disco no qual guardar todo o programa e lodot\ 0<': dados. Em tennos conceituais, é n\lli s si mples considerar a cópia do programa que eSlá no di ~co como o programa original e as porções trazidas para a mernÓlia pri ncipal de VC1. em al é capa7 {lc cllnter CX:lt:Ullel1l e Ulml pági na. Essas porções de me mória principal pam onde vão us páginas são dcnominadns quadrns dl' páginA . Na Figura 6.2 li memória principal conté m somente um rimeiros 64 KB de seu espaço de endereço vi rtual. t\ej .. para huscar inslruções, seja para hll~C,lT t.Iad(J~ ou armllzClmr dailm. em primeiro lugar ele gera um elHt{"re~u virtual e ntre O e 65.532 (admitindo que emtereços de 1',11,1 "Ta deve m ser di vit\ fvei ~ por 4). Indexação, endereçm nen to indireto c lodas as téc"ic:t~ lI~ ua ;~ plxlem ser usada .. pllra gerar es~e endcre~·o.
'c-
Pallilllll
'"'"
Enooli!ÇOS InIlUBil
1
N
"
14
61.'140 - 65.535
• "ou
51344 - 61439 53248 - 51343
;-
,,,
,.,,u
o"
'.
flourll 6 .3
lal Os pnmelfOS 64 KB do espaço de endereço vJ(\ual divididos em 16 páginas. cada pãgina com 4K. IbJ Memóna prinCIpal de 32 KB dividida em oito quadros de página de 4 KB cada.
" " " 91;0 "• " .... • •,
•
49152 - 53.247 4506(1 - 49151 40
40.959
32168 - 30863
7
32 K da póU1e InterIOr da
45 055 Quadro
28.612 - 32.167
7
24.576 - 28.671
,•
,
20480 - 24 575
3
,
12288 - 16383
I
4096 - 8,191
16384 - 20.'179 8 \92 - 12 .287 0- 4.095
O (.)
fl'\8Il'IOlIB
priflClpal
de pligina EndB11IÇOI tlllCOS
28.672 - 32.767 24 576 - 26 671
,
20.'180 - 24 575
,
\2288 - 16 383
I
4.096 -
3
16,384
20 479
8.1112 - 12.287 8,19\
•"
~
o
•-•••
;;;
• •
~
" = o-
~
"
0 - 4095
O (b)
A Figura fi .3(h) I1IllMra um" memória rf~ica (IUC cnnsiste em Oil0 quadros de página de 4 KIl . I1s~a mern()ria poderia ~er limililcla .. 12 Kl~ porque ( I) isso é tudo que ti má1luinu tinh" (um proccssutlnr I:l11hutillo em li ma m:1llui rui de l.l\'ar nu em 11111 furno de l11icTCMmda:. poderia n1io predsllr de mai s), ou (2) o resto d :l Il1cm()ria r()i alocado li eifl. de um endcrcço virtual dI! 32 hits pal1l ullIcndcreço ff"icu 11..: 15 hit~, ele prl!cisa de um registl'udor de cntmda de 32 h it ~ e UII I rcgi~lmilor (Ie ~ilída de 15 hil", PUni ver CO I1lIl li MMI l funciona, considerc I) I!xl!l1Ipln da Figura 6.4. Quundo um cllllcn:ço virtual de 32 hil~ é apre~cu l ado li Mfl. lI J, ela :.ep;Jra I) endereço em ulIllllímero de página virtual de 20 bits c cm um Ikslocmncntn Ilc 12 hi,~ dçnU'1l da página. porque u~ páginas de IlIJ~~O cxcmplu ~il{l de 4 K. O nLlm.:rtl de pilg,inu virtual!! u ~ado COlllll um índice para li lahcla Ile p:lglJlilS a lim li.! achur u elllrudu para a página referenciuuõl. Na Figur'd 6.4. {I mímero de página vi rlllal é .~ , pUfBmlo é ~dedlm ..dil a entmda 3 da tabcl;lllc página:., como mostra à ligura. A primeira coi,a 4uc 11 MMU fa/_com a entr-.ldil de lahda de página é ,·crifie;lr panl \'cr M: a página rcfcr..:uciada eíolá na memóriu principill no momcnto em qucslàn. Alinul, com 2 20 páginas virt uais e ioomellle oito quadros dt: páginll , ncm IIxl,j:.a~ I):lginas virtuais podem e:.lilr na mcmória all IIlcsmo teml"l, A MMU fUL c~~u verificu~:;lo ex:uninumln n hit pre.lo>Cntc/uLlsc nl e na entrada da tabela de página~, Em nos~n exemplo, () bit é I, n que sign ifieil quc .. página t::.tá IJ.I L1Icm()ri:. no momenw em qLlC~lilo, A pr();i m:l etapa é pegar O valor do quudro de página dn entrada selecionadu (6 nclo"C CllloO) c copiá-lo para 11.\ três bits lo LlpcrillJ'e ~ do rcgi:.tradlll Lie lollída de 15 bit!>, Sllllllece!o~ário~ lrês bits porque há oi lU quadros de páginu lli! memória fí~ica . Em p:Lralelu a essa 0 l>emção, o:. 12 hib menus ~ i g lllfi ca t ivos do endcreço vil1L1al (o campo de de~ ]ucami!illO da págiml} ~lIlJ çopiado.s panl. os 12 bit~ de ordcm baixa do rl!gistrador de sarda, çomll mostnl a figu ra, E:.~c cndereçu JI! l:i bit:. agora é cnviado para a cache ou paru a memória. para consulta. A Hgum 6.5 nlO~tra um IXlssfvel mal>eamelllO cnlre páginas "inuai,~ c IllIadros dc rá8ina ~ fbic:ts, A página vi nual O i!~tá \lO 1]llddru ele página I. A página virtu.. l I elola no quadro de páginu O. A página virtual '2 não estÁ na memória princiPil1. r\ págllla \'.rtu"l 3 está no CIlindro tle página 2. A página virtuul 4 nil"o está na memórin princijJill. A página , inual 5 c~l;i no qUõldro de página 6 e a~~illl pur diante,
6.1.3 Paginação por demanda e o· modelo de conjunto de trabalho Nu ,lisc u ~!>ão .mterior admitimos (Iue a página vi n llul refcrenciada cstava nu mcmória principal. Contudo, eS~!1 SIIIX)loição nem ~emprc ~erá verdadeiro. porqUi! não há e~paço suticiente na memória princ'llal para IOdas as páginas vil'llluis. Quando é lcitu L1l1la referência á um endereço e m umu página que não eSlá preSi!Llle na memória principal. ela é denllminada fa lta dê página, Após ocorrer lima faliu de página, é neccssário que o sistema oJlCr.1cional leia a plÍgina relJllt.!rida do Lii~n, rcgi~trc ~ua IIUV1I locaIiLa\:;lo na mem()ria rfsica na Illbt:la dI! págiml e i!ntão repita a instfuçãu que caUloUII :j 1:.lha.
•> z
~
•
u
tO
Endereço de mem6r111 de 15 bits
lO N Pi!oglna virtual
••"
Tabela de ~glna.
o
Bit prHftlltw8u,enle
~
"!.:
,
~
•
,."
• • ,•" ,
"12 "
B
o u
~
~
"
•
"'o
'•".
-
", ,
naur.6.4 Formnção de um endereço tle memória prIncipal a pArtir de um
7
endereço virtual.
6
~
5
•, 3
"•
, ,
~
O
'lO
° 1010101010101010101010101010101010101' I' 101010101010101' 101' I'1°1 ::.~:::: I--~~~ Pi!o~na yl, tusl de ~~-
20 bits
_I.
Deslocamento de 12 b",
-I
Endereço vh lual de 32 bita ~~-
Tpoola de página.
PAgIna Ovadlo virtual de página
.,
" °, ,° " flgur.8.5 PoSlllvel mapeamento das
16 primeiras páginas virtuais para uma principal com oito qundro!! de página.
"12 ° ° °, ° " 5 "9 ° °
_.
, °, °
priociplll
3
°, °7 "- "- ~ 5 , ~ °, ,° , 7
PAgina Ylflual 6
7
6
P6gW18 virtual 5
6
6
3
Pãgina ""'uaI14 PégIna vir tuaiS
• 3
O
Página vi.tu!!1 3
, °,
Pligina vlr\l.lal O
, ,
"'glna virtu al I
O
°,
O
PIIIQlna vir tual 11 5
\
1 • Prasenle na memórl. principal o . Auallllte .da memória prlnclp~1
É poss(vel iniciar um programa que cxec ul,1 em urna máqu i na com memóriu vinuul ll1C~1110 quando não houver nad:l do pf'O!!r,IIlHl IItl memória principal. Basta nj u<;tar a ta be ln de pági nas para indicar
in!>lruçàn, obtém imc"h .. Hllllt:IlIC uma fOlha de página, o flu e faL co!tl quc a página "lue coutém a pnun:.ra ill!>truçãn !oCja coIrrc:gada na mcmt''lria e rc:gistrada na tabela de página. bui'io, a primdm iU:5tnl~~fio pod e c\)mc~a r. Se a primeirn irblruçãn liver dtll ~ e ndcreçll~ . e os dois endereços c~tiverc m em páginas diferentes, e jlJlltm~ forem diferentes da página da iUSlnu.:i'io, /}cC)rrer~u rnui s duas fal Ias de páginas e mni s dUilS páginas M!riin tfa/ida!> antes (lHe a iJl~tnl~:â() I)() ~~a, por fim. execu tar. A próKima inslnu;l\u pudl.! I;uusar m:tis algumas fahas de páginas c IIssim por diante. ElIse método de VIJCnlr uma memória virllllll é denominado pngina{i'io 11m. d ClIllllldll, por analogia com () conhecidu al gmillllo de alimcllI'ação ele bebês por dem:lnila: qUilndo 11 hehê chora, v()cê () a li mcnta (uo cOlltrárin ele ill imellUi-lo lIegundo 11111 e~(luellla rígido). Em pag inação por demanda ali páginas são traLicla!l para a mem(ll; a !.Omentc IjllUndn ocorre uma requi~içi'lo de urna página. e não anlccipadamentc. A (jue~ l ao ele 1"lIr ou não paginação por dernandu ~ó é r..:levante quando UiIl programa for iniciado pclu primc ira VC/. A!>~ im (Iue cle e~ lejn excculundo por algum lempo, as páginalo nt:ccsioúrias já terão sitio colelaclas na IIIcllllkia principal. !'e u compuludor companilhur te ml:H) e tiS processos forcm pe rmutados up(h [(Xl ms de execu ção uu por aí, cilda programa !>Crú rciniciuli zado lIluita~ veLes dUrímle o cur!>u de loua execução. Como o mar.' de memóriu é excJ u ~ i vu de cada progratllll c é tn'lCildo ljUlUldu us prugrumas ~i'iu trocados. por cxemplo, em um Si~lC ma de tempo cumpa. tilll:ldo, fn:qJlelllemc.ntc a (1Ile ~ tão se.: torna crítica. A ahmdagelll alternati va é hascllda na l)bservoçi'ln de que gmnde parll! dos progmlllaS nilo rcferencia seu CSpi!~o de endereço unifllrlllelllCllle, lIIilS a~ rcfcrência~ tCndclll1l Se ag lomerar cm um mímei"O pequeno de páginas. E~M: conceito é denotlli n:ltlu prillcípiu da localidade. Uma referê ncia fi memória IlOde buscar 1111111 ill!>tnl~~ã(). pode hu ~· cur dudos nu 1:Hk.le Ulllla/eJ)lIr dlldu~. A qual(lucr in~lant..: I exi!>te Ulll eUlljulllO que eonsi~te em toda!> as p:lginas ma· da!> 1)Cla!> J.. rcferêl1t.; . ,I ~ Illai!> reeel1l~ à memória . Deunillil ( 1968) d..:nullIinou i !>~o conjuntu d e tratmlho. COIllU o cunjunw d..: tr .. lmlhu nomtalmenle.: varialelllamcnle com o lempo. é IXllIsfvd fal.er uma p revi~iio razoá\ ..:1 lll;! quai!> página) ~rJO n l!cc~sá ria~ quando o programa for reiniciado, com ba~e em !>eu conjullt\\ de trahalho na IIcll~ião em que foi interrompidu da úllima vei.. Entãu. ":SS:I!> páginas poderialll ser carregadil.!> 1Il1wcipad;uuenle ant..:s de inki ar o pmgrnlllll (lldm itindn que elas caibam ).
6.1.4 Politica de substituição de página o ideal é (Iue eUJljul1tn de páginas que li progrilntu usul1luito e mivillllcl1tc, de nominadu CUlljUlIlU d c t.·ahat)
Ihn. [!t1!>!>U ser lIIantidu na memória para n:du/.ir a falt a de pági nas. Contudo, é raro que O!\ jll'Ugr.unlldorcs saibulIl IllIal~ página!> clIlão 1111 conjunh\ dll trabillho, portanto ti lIistelllll ol>C:nl.cional tem de descobri .· eSlIe conjunto dil1illl1icamentc. Quando 11111 prugnuua rcfen:ncia uma páginutlue nilu está na IlIcmória principal. a p5guliI ~o li ci l ad,1 de\'C ~er bu...eada no di!>Co 11Id ada. paw lhe abrir esp ••ço, cm gemi :..lgulIlu outra pági na lerá de !>cr llcvoh ida ao clillCo. I'orumlo, préCbllllllh (Jc um algorilmo que decldôi qual JltigullI deve ~er removida. E~enl h er akatllriôilllellle uma página pi1Ti1 ro.: llIuver provavel mente não é ulIla oua idéia. Se. por aca~o, a página IjUC contém li iJ1!ltrllçãu faltante for a escolhida . ()Correrá lima outra f;lha de pág inu t30 logo seja tdta umu lentali v" ele hu ~c al' a próxi ma imtnu,ão. GnUlde parte dos lIi~ t c mall operaehlll:lis lellta prever qual das pág i1111S n:l tn t::lllória é a menu!> IÍlilnu ~enlido de que ~lla ilUlIêncill ClIllsaria 11 II1ClIllf efeihl adveno possível sobrc II programa elll e'\Ctlu,:l'Ill. Um lI111do de fazer iS!l(j é prever quando oClll'ferá a pdixi mu rcferêllcÍiI a eilda p~gina e remover a página l.uj .. pnh ima referência previllta e~tive r no futuro mais IlJllgíllquO. J-lnt outra s palavras.":1II vez de ext rair uma p.tginil qu e ~erá nece !.sária em bréve, te nla-lI": selecion:lr UilIa t'llIC nãu ~crá necessária por um lllllgu tempo. Um algoritmo pupular extrai a págin .. menos rec..:ntcmcnte usada porque é ôllul i\ prooahilidade (/ pl"iori de da não estar no cnnjuI11 0 de tnlbillho corrente. Ele é denominado :tlgoritmo LR IJ (Leusl Rcceutly Used - menos rece nlemenle usada ) e, cmbor .. nomlalmente funcione be m. há si tuuçõcs palológiclls, como as cJescrillls 11 seguir. n.-.~ Ijuais o LR iI f.. lIm milll~ravehllcI1lC . I magine 11m prognllllll ' luC esteja l!KeClJlalldo um gronde Inço (ILle se c~tcnde pm nove página!> virluais elll UllIU mri(luilla que tem c~[>aço ]lanl apenas oito páginas na memó ria física . Após o programa chcg,lIr na p5gina 7, 11 lIIcmóriu princ ipal estará elllHO mOStra a Figura 6.6(a). Em dlldo instante é feita uma lelllutivll paro huscar UIIl;! instrtlçi10 na pág inu vinual 8, Illjue CllllSH UIHlI falta de página . É preciso decidir qual págiml d~vc ~~r cXlrardu. O alguritmo I.RU escolherá a pági nll vinu .. 1 O, 1>Of(lue foi a menos reee ntemcnte u ~ ada . A página vinulII O é removida e 11 I)ági na vinual 8 é muid:. p:ll'll suh~ t ituf- I II. resultando na situação lIIostmda na I' igura 6.6(h). AI>Ó!> executar il3 illlltruÇi"lcll nu página vil1ual 8. o pmgnllnll de!>vi3 de volta I)am II inreiu do laço. para a página virtual o . Elisa etap.. call~1J nutra falta tle página. A página virtual O. que ac:tbou de ser extraída, tcm de ser tml.ida
fi gur.8.6 ral ha do algoritmo LRU
Página vil1ual 7
Pliglna Vir tual 7
Página wlUlll6
Páglnll vi rtual 6
P6gina virtual 6
Pagina vir tuaiS
PII.glna vi rtuaiS
Página virtual S
Página virtual 4
Páglnll virtulII 4
Página ~irtual4
Páglrur. vi/tual 3
Página vinusl3
Página VIIIUHI3
P.tgl/la vlrtual2
P6gIna ..... ,ual 2
Pagina viltual2
Pãglflll virtual!
Página vi/tual I
Página VirtUal O
Páglf18 virtual O
PálJlf1ll wlual8
PajjlOll Vl/tual8
(-,
'"
PAgina virtual 7
("
....
"'
N
•
"ou •
•"-
o
•8
•• ~
• •
~
.•," ~
2
••
"' ~
o
• •"-
u
<Xl
'"N
-•• • o
~
,
~
B o u
•
~
• ,•
-
~
,
-•
~
o
•• • •
~
N
C
~
o
de vollu . O algorit mo LRU escolhe n página I para St: l re tinula, o que produ z a ~i l l!ação na Fi gura (1.6(;). O pwgra-
ma cunlirnlll na página O por al guns instantes e então lenta buscnr lima inst1lJção lia páginn vinual 1. cau~ alld o uma r.. llll de p:ígilla. A página I [em de ser traz.ida de volta IIlais uma vez e a página 2 será cxlrafdll. A CSS;i altura já deve estar evidente que. ncste caso. o al g\lrillllo LRU está duramente faLe ndo a pior escolha toda vez (outros algoritmos também fa lham sob condições similares). Cont udo. se o lamanho da 1I1emória principal disponíve l for muior do que o do conj unt u de Irab:\lho. o LRU tende a lIIinimizar o mimem de raha~ ele pllgin:l. Um OU[ro :llgoritlllo de substituição dt!: pi1ginu é o FI"' O (Firsl-11I Flrst-Oul - prinll'iro(a) a enlmr, prilIIt'iru(a) li suir). O FLFO remove a p;ígina menos rel'cntemcntc carregilda. independente de q u'lIIdo essa página foi refcrenciada pela última ve7.. !-l á um contador associado a cada quadro de pági na e. de in ício. todo~ os c() tltadnrc~ estão ajustados cm O. Após cada falta de piígina Ter sido trat,l(la. o contador de eada p;i.gi llll que ~e encontm n;t me mória no momento em questão é aumentado de um. c o cont fl(Jor da pági na (jue acltonu de ser Trazida é aj ll ~lm.l o em O. Qu,mdo se torna necessário escolher uma p;ígin:1 para remover. a pági na cujo contador e~ t i \'e r mai s alto é a escolhida. Uma \'e7. que seu contadur é o mai s alto. essa página teste munhou o maior mírneru de rallUs de pág ina . Isso signili ca que ela foi c arregada na memó ria ;Lntes de qualquer uma d;ts OUl nl S pág inas e. I'0nanto (espentlnos). tcm a maior chance (I pl"iol"i de nao ser mai s necessária . . Se o conj unto de trabalhfl for maior do que o mímero de quadros de págirHl di ~ Jl(!nívci ... ncnhum al g.ori tmo dará hons re.~ ttltados. a me nos llue seja um oráculo. e as fa h a~ de pági nas ser1io freqii eutc.<;. (Juundu um progra ma gcra fahn s de pági ml ~ C01lt rrC(IUência e continuamente. di z-se que ele está fa zcndo )mginuçiio exccssi't'u (tl/Nu hillC). Nem é preci so dize r (lue li pngi nação excessiva é uma CHracterlsli cR indesejávcll'rn scu sistema. Se um programa usar uma gramte quantidade de espaço de endcreço virtual. mas ti ver um conjulIlo de tI'C tbalho pequeno. que muda le ntamente e ctlbc na memória princi pal dislXlnfvet, ele da rá poucos problc1Il:ts. Es~a ohservat;ilo é verdadeira ainda que. no decurrer d e sua vida úti l, o programa use um mírnero de palavras de me mória virtu:tl centenas de vezes maior do que o número de palavra.. de Iltcmóriu principal da máquinll. Se unta página (Iue está prestes:l ser extraída não tiver sido mo<.!ilicada desde que fo i lida (u ma ocorrência provável se a págin:1 c(lnti ver pmgranl
6.1.5 Tamanho de página e fragmentação Se l>Of nClIso acontecer de \1 progrmurt e os dados do u ~ u:1rio preencherem e)l utatltcntc um míttlero inteiTll de ulio haverá nenhum espaço de s pcrdi~' ad() qun ndo e lts esti verem n:1 mcmória Se. por OUlro 1:101), elcs não prcencherem ex atamente um mírnero inteiro de páginas. havcrá algum esp:lt;o nào utilizlldu ttll última página. Por excmplo. sc o programa e os dados precisarem de 26.000 bytes em utlta m:l.quin;\ com 4.096 byte.. por pág ina . :\s primeiras .~ei s pági na ~ cstarao cheias. tol:t lizamlo 6 X 4 .096 = 24 .576 oytcs. e a ülrirtm P<Íll itHl l'onlení 26.lKX) ~ 24.576 = 1.424 hytes. Uma vel que há espaço para 4.096 bytcs por pági na. 2.672 by tc~ scr50 despenlit;:tdus. Sem pre que a sétima pág ina e ~ tiver presente nn memóri a, esses bytes ocupllrão ntemóri:1 princi pal. Illa ~ não ~e r v i rão para Ilcnhum a função út il . O problema desses byles des perdiçado~ é denominado frugm e nlação interna (por que n e ~Jlaçn clesJlerdi t; ad~l é inte rno a alguma pági na). Se o t;unanho da página for /I bytcs. 11 quantidade média de espaço despe rdiçado na lílt irn:l pági na de um pro· gf:lllla por fragmen tat;ão interna será ,,/2 oytc .. - IInta situat;50 que sugere 1I5
Por nutw lado. UII1 tamanho dI! pági na ti..: I KR cxigiria SUlllt:nte 10 MB de RAM para I.!untcr todas as págl na~ . S..: lllllt:mória di ' I}tIll I\'eI rOhe 32 MB, com um ta manho de págum lIc 8 KB . o programa furia paginação cxccs· !loiva, lIlas cum um tamanho de rágin:1 de I KB isso n1k, àcontcccria. Comi d~ral1dlJ IOdus n!lo :ISpcctnS, a tellllênda filvorccc página~ d..: IUlllunhll:. IIllliorcs. o
lha )'11
~oi
cs
na lo
A me mória vin uul tli ~c uti(\a unteriurmente é unidilll..:nsiol1ul l>orquc os cndereços virtuais v!io de O até
o,
"
2.
I,
3. 4.
"a '.
,
6.
A tabela d..: ~í mbolos, que conté m os nomes e atrihlLlels dc variáveis. O tl.!xtn-font e que e~ t á sendo salvo pant fi listagem impn:s~a. Uma tahcla quc cuntém todas as constantes i n1cira ~ e 11..: pontO nutuantt: IIS(jtlas. A árvore de :Ul~ li ~c (parse) que contém 11 amíli se si n1:íticn do progr.unn. A pilha lI ~ud u pllra cham:j(lns de procedimento dentro do compili.ldor.
lud;) uma da~ qua tro prilllcims tahelas crt:sce continuament e à medida que a compilaçiío prossegue. A lí ltima au nlenla c diminui UI,; Illekln illlJlrevi~ível clurlIllle a compi lação. Em Ullltllllernóri,. unidimcn sional, eSSilS cinco tal}!!las terillm de ~cr ill ucada ~ Cillll(J porções contíguas de espaço de c nd erc~'o virtual, como nu Fi gura 6.7. Cun:.idere 11 411e ilCUnh!Ce se um programa tiver um número excepcionalmente gromde dc variáveis. A porção ele c ~p .. ~o de enderc\() alocôldê.l para a laht:la de símbol()s poderia ser 101ahnente preenchida l11e!,111O clue houvesse muito c~p"ço d h lXJIII\eI em uu tra~ ta belas . I~ claro que o compihldor l>f,deria sirnplc~ lIIe nte emitir uma IIlc n~agem d;;'..i:ndll que li ..:omj11Iaçiio lIilu 1)lj(le conlinuar porque há dClllasiuda~ variávei", mõl ~ isso ni'lo pureee muito ju ~tll '1lHllldn há espaço niio Ulili;,adu nas outras tubclas. IJllliJ outra pll ~~ lllIh d ad c é U cOlllpilador se ftll.cr de I~ oh in HunJ, tmnund n cS ila ~O dus Inh~las que tem JIluilU, c ,I:mdo () à~ H,h da~ q ue ~t ê m pouco es pu~o . Essa~ llludaJ\ç a ~ podem scr rci t ~obrcpu~ i ç()es - um aho rrec irncntn lia Illc lhor das hip6 1C SC~ c U1l1 1mball,o tedioso e Illal rcc()ll\pe ll ~adu nu pi, Ir dclll .... O quI,; realment e pr..:cisalllos é um modo de livrar o prugnlLll3dor 1.1" obrigação dc gercnciar 11 expan~ão c contração de t, du mClomll mudo que a Illt:mó ria virtual elimina a preoclLpll~ão cle: organizar {) progralllll em ~I)hrepmlçõc s. Uma :.olu~áo lli rcla é Jornccer muitos c~paçtl~ d..: elllkrt:~o completamenlc i lldep..:ndent e~. d..:numinadl)S SC~ IlI c nlUS. C:,da ~eglllt.' IILO comi~lc em uma ~":CJ ilên cia linellr de c lld e reço~. de O aLé algum máximu. O comprimenln de cada ~cgmc1Uu pode ~..: r Ijuulquer coj"a desdt: O até li máximo pe:rmitido. Diferentcs ~cg m cnlo~ pudellllcr, e co~ IIIm;lI11 te r, C() 1I1 prillll,; .1l 0~ d i fercntes. A lém do mai s, comj1rimcn l{) ~ dc ~cg m c n{()s podem mudar dUnlnte :! execução. O I;omprimenlo de Ulll ~egm..:n h ' de pilha pode ser aumentado sempre (Iue al go for Jla ~sa dn pam ela e reduzido scm· pre qUI! algo for dela r":li I1IJ O. Comu cad.1 ~l!gHlcntCl con~titlli IUIl espaço de e nd erc~o ~..: pa nldo, difl!rente~ ~egrnCIl\O~ podcm se cxpnndir I)U t:ncolhcr inúepcndelltcmel1Lc. ~e m (jue um afete () outro. Se uma pilha em um certo segm ento precisnr dc mais c~paçj) de endereço par.. cre~cc r, pode consegui-lo. por(jue ni'io há nada mitis em ~eu e:.paço de en(kreço com ti ll llal ela po~:.a ~e chlle:!r. I~ C];I(O lJue um ~egllle lllO pod e ~cr prcenchido completamente, ma~ eles costumam !locr muito grandes. l'OrllHltn essa t'ICt)rrêncill é mra. I>ara e~ l>c:d fi car um c ndcreço nessa me mória segmentada ou bidime l1 ~ iullal. t) prt)gr3mu devc fornecer um e ndc re~(I de dUIl ~ panes: um 1Il1rnero de ~t:gmcnto C UIll cndl!rcço dentm do ±-cgIllClltn. A Figura 6.8 ilustra uma memória segme ntada 'luC cstá sendo usutla para a~ t uhel a~ de compi ludor (JlU! di scu1imos untc~ J)c)l:lcamos que um ~egmeJ\to é llIllll entidudc lógico, da '1uul o pmgramador e~ t á cienl e e a lJual usa comI) uma cn tidadc lÓgica IInil;H. Um ~cg m cnt() poderiu comer um pnx:edimenLo, ou 11111 vetm. ou umu pilha, ou 11111 CO l} o j UIILo dc vari áyei~ c~lu l arcs. ma!" em geral, não c(lIIh~rn llJllU rni~tllfêl dt: til)l)S dift:rt:ntcs.
UsadO no momento
!Iha d:, t
flgur .6.J
Em um espaço de endelt!ço unidImensional com tabelas que aumelllam. uma labela pode I::nCOSlnr um Outra.
U)
N
•
6.1,6 Segmentação ri-
m
: AfVor~~&Oi·!16a
t
Tabela do constanles Texlo-lOI11& Tabeta
de .rfT1bolol;;
)
"uo
-•• ~
o
••• u
;;
•
~
• "o
',.. ~
•> "
~
•
u
o
20K
I6K
fluura 6 .• Uma memória segmentllda 12K
•"o
permite que cada tabela cresça e encolha
~
Independentemente das
•
outras tabellls.
•
8K
Tlb&Ia do
.rn!bolol
'K
•
~
e o
So,."."",
" • •
-••
~
•"
~
o
•• •"
~
c
•
~
o
Ô S....,.,," , ""lo
•
"""'.
I(Tlbel8 ~I con.tan\e$
dewlise
$egnl8ol\)
Segmento
2
Pi"" Ue chamedlll
(paFlHl)
,
Seqmenl0
•
Um1l memória scgmcnl'u.la \CII1 outras VUl1togCI1S ;llél1l de simplificar o m rlllu ~eio de cSlnJ!uras de dados que podem IlUlTlcU\,.r e cl1{'olhcr. Se cada procedimento ocupar um segmento sepflr:ulu. tendo cndcrC1,'o O cnl1m seu cl1dere~'(l inicial. ti interconexão de proced imentos compilados em ~c l)nradtl é l1Iuitl1 'iilllplifrcada. Dcpoi~ que todos O~ procedimentos que constituem um progrmuu rOrlUlI compi lados e ill l Clconec l ndo ~ , uma chamutla de procedinu:nlO pllra o procedimento que está no segmento /I usará o endereCfo tia duas partes (11 ,fJ) para e ndereçar a palnvru O (o pontu ue entrada). Se, na seql1êncill, () pwcedilllcntu nu segmentu /I for modiricatlo e rccompilaú(J. nenhum nutru procedimento precisará ser IIlterndo (porque nenhum endercço de infeio fo i modilicado). me ~ mo que 11 nova ve r~ão seja maior do que a unliga . Com 11111:1 mcm6ria unidimensionnl. os procedimcntus normalmente ~ãll ell1pacotadus bem aper· tadus, um au lado do outro, selll nenhum esp:lçn de endereço entre eles. Por eo n~eqiiêJlc.a. alterar u tamanho de um procedimcnto Ilode afetar o endereço de início de O\ltro~ procedimcntns não Iclacionados. Isso. por sua \oC7. requer II1OOilic:.r todos os pmccdimentns que c hamoun O de administraçãu. Comu o l1~u:Jrio de urna mem6ria ~egmentada telll n ilu~ãtl de tlue lodus os st'gmcntos estão na me m6ria princip"1 o tClllflu lodn, csses seg lllcnlo~ podem 'l.' I cndcre-.:n(,I)~ sem que ele, o usul1rio. tenha de se preo('upar com li :uJministraçilo dn eventonl sobreposi\'âo de Se!!mCnlu~ .
Tabela 0.1 Comparação entre paginação e segmentoção. Consideração o programadol precisa estar ciente dela?
.,.
Paginação
Quantos espaços de endereços Uneares há?
Segmentaçã.o
Sim
MuJtos
O ospaço de endereço virtual pode ser maior do que o tamanho da memória?
Sim
Sim
1'obelas de tamanhos variáveis podem ser manipuladas com fa cUldnde?
'i.
Sim
Por que
Para slmulal memórias grandes
li
tócnlca foi Inventada?
Para fornecer varios espaços de endereço
6.1.1 Implem entação de segmentação A l>cgm..:nlaçilll podo: ser implementada
Cl.!rltl coujunlu de scgmcluns
"
" c
,.
,
e~ lá
d~
N
na memória em IIIH dado inst:lIllc. Se thr feila urníl referência a um segmento que
não está nu memória 1111 mOIllCnl\\ em questão, esse segmcllIo é trazido pum li memória. Se não houver espaçu pôlra ck, um llU mui:. scgnlentoío deve m ser cscrjlo~ para um di ~co antes (il lllenos que ali j,í ex ista urna cópia limpa, CUiiO em que 11 cópia da IHClnórill pode ser abandonada), Em ccno :.cnlklo. a pcrmulução de segmentos lull) é diferente da raginuçã~) rl ll' J cm'lIl1la: segmentos vêm c viio conforme a nccessidul'le. Todavia , hü lllllll diferença essencial entre a implementação de scgmentu\:ão c a illlrJemcnla~âo dI! pagina!fãt): r6.gin:J.~ têm tamuuho fix o I! segmentos não. A Figura 6. 1OCa) mOstra um exemplo de nlemória Hsica que contém inicialllll!1Lte cinco :.cglllen tos. Agora considere Il quc acontecc se o segmento I for ex tm ído c o segmento 7, yue é menor, for colucado I!m ...eu lugar. Chegamos à configuração de me mória da Figura 6.9(b). Entre o segmento 7 e {) ... egmellto 2 h6. uma :ln:!a não milizuda. i~HI é, uma lacuna. Então, o segmento 4 é suhsti tuído pelo seg mento 5. como na Figura 6.l)(c), c () segmento 3 é substituído pelo segmento 6. como na Figura 6.9{d). Apt\s () sistem 'I\(e cstãn apó ... a ht<.:tlllil para l1lai~ peno da locilli zaçiío de memória 0, o que elimina aquela lucuna, mas deixa unw gr;Ul(h': InClina 110 final. (\1Il10 alternativa, Jl()opular, denominado melhor ajuste. es<.:olhe li menor lacuna nu qual o ~cgmento Ileces:.nrio cabt::rá. A idéia é compatibi lizar lacunas com ~egme ntos pura evilur partir um pcdaçu de uma grandl! lacuna que mais tarde poderá Ser Ili:cessária para um segmento grande. Um outro algodtlHo popular, denominado primeirn ajuste. percorre .1 Ihla dc lacunas em círculos e escolhe a primeira làcuna grande o suliciellle plml contt::r o Se!!meUlo. É obvio (jue isso leva menos telllllO do lluC veriticar a lista intei ril c achar o melhor ajuste. O surpreendente é qUI! o algoritmo primeiro ajl/ste também é melhor cm termos de dcsempe nh,) global do que o algoritmo melhor ajllste, pon lue es~e último rende a gcr,lr muitas I:lcuna~ pcqut:: nlls, tOlalmenl\: inútei~ (Knuth , 1997). Os '1 lgorillHus primeiro ajuste e melhor ajuste tendem a reduzir o tamanho médio dH lacuna . Sempre 4ue um ~cgmt;n to for J.:OIOC"d(, em urna lacunu maior do (Iue ele, o yue ilcnntt;Ce quasc toda VeZ. (ajustes exatos sào raro~), a lacuna é di vidida cm duas panes. Uma parte é ocupada pelo segmento e a outra pane é a nuva lacuna. Essa no"u lacun:'l é sem pre Illeunr do que li antiga. A menos que haja ti ni processo de compen sação para criar lar.:unas grandes a pim ir til! lar.:unas pcq UI!IlUS, ambns os algorillllos, o primeiro ajuste e () mel hor Iljuste, uc .. hari'io enchendo a memólia com pequenas jaJ.:IJIlas imiteis. SegtOenl1l4 (7K)
fluur.6 .9
Segmenl1l3 ' 8K)
{aHd) Desenvolvimento de fragmentação externa .
Segmemo 2
tel RemoçÃO da
-
dois modos: pcrnuuaçã(l c paginaçlio, No primeiro esquema, um
(5K)
tTagmemação alterna por compactação S&gmenlll 1 (BK) Segmenlll O (4K)
"1
"I
•c o
u
•
•"
~
o
•8 • " • •c
~
~
.• o
~
~
•>
"
'"
-"•• o
,
• ~
o u
DelcrItOf
flgur • •. 10 Conversilo de um
endereço MULl'ICS de duu partes em um
Sl!gmerllo doacrhor
)~
OUlldros Oe pl'tlllna
~
de segmento
de páglna
Tabela de péglnps
endereço de memóna principal.
•
"• ",•
NÍlm8fo de segmenlo
-
"
~
o
~
~
• N
o
•
~
o
PlIg,na
!
DeslocanllHlIo
Numet'o de página Deslcx:amen,o de lO bits de 6 bIt!I dentro d!II ptlglna
de 18 bitI
,
Palavra
Eodcreço MULTICS de dulI.S partes
Um desses processos de compensação é o que de!'cre\'cl'cmll.~ a segu ir. Sempre que UIII ~cg l!1t:l1l{l for removi do da ll1emória e um ou :Hl1bus de seus vizinhos 1lI11is pn)x i mo.~ forem lncunas c não !lcgnlClltus. nli lacunas adjal:cnICS podem ser IIglulimu.lns elll UlI1U grnrllJe e única Incuna. Se o segmento 5 ros~ remuvido <.In Figura 6.9(d), as dU
8.1.8 Memória virtual no Pentium 4
o
PenliulII 4 tem um s istema. sofi~ticndo de memória virtual que supona pagirmção I)lIr de manda, scgl1lClltnçãu pura e segmentação com I,aginaçào. O cor:lÇão dll lI1cm6riu virtual do PentiUlll 4 ~·onsi~t,· em tlU:IS lahcla~ : :1 l.llT ( 1,0("11 1 UCScril'lur Tllllle - I:lbcla d e dt'Scrilurcs locu is ) e a GIJT (t;loblll-' )eSc.riplnr' Tllhlc - ttllJela de dl'sc.ritores globais). Cllda pmgrnrna te m sua própria LDT. mas h:í urna únkn GDT. COllllHlllil hada por todo'\ li!! prognulIlls nu computador. A LDT descre\'e segmenhJS lucuis a cadu programa, incluinllo ~cu ct'Jdigll. dntl o~. pilha c IIssim ("lor di ante, UI) pusso que li GDT descrcve scgmentos dc sisteHlll. induimlo o próprio si~tc ll1a operacional. Como descreve1ll0S II() Capftulo 5, para ucessar IIHI segmento, urll programll Penlilllll 4 primeim carrega um seletor para esse ~cgrnen 'o em um dos registradores de segmento. Durante 11 exeCu\·;;n. CS ctmtém o '!clctor parn (I ~egmento de C(kiigu. IJS contém o seletnr para \I segmentu de dados e assim l)Or diallte . Cada q-letor é UII1 mimem de 16 hits. cunlO lIlostra a Figura 6. 11. Um Jos hits cio seletor inronna se o segmcnto é locul ou g lobal (i~to ~. ~e cle e~tá IHI LI) r ou na (jl)T) . Outros 13 bits e~pccificillll a linha de entrada ,Ia LDT ou (if)T, portanto. (:ad" uma dc~~as tahe l a~ c'!,á reslThu li conter R KB (2") descritores Je segmentos. Os outros 2 bit~ eslflo relacionados com proteção ('" senil! de!'Crj t()~ milis a.diante.
rlUI". 8 .11
Sclctor PenUum 4.
L
Blt8 , _..;;"",':;;-__T'",''-, INDICe III o . GQr1
1 " lOT I
I
Nrvel de
pflvil~,lo (0-3)
-
32 Bits LIMITE 0·15
8A SE 0· 15
Fiuur.6.12
BASE 24-31 G DO
DeSGlllor ele segmento de
código do Pentium "
LIMITE 16-19 P OPl
t
I
".m "'.. J
Segmentos ele dados são O. LIMITE as Iigelramel1te dlferellles. 1 LIMITE as ré arn pé\,linas
T1PO
-
BASE 16-23
EndolOÇD 161111 il'O
O
M
"' N
4
Tipo de segmento e pr oleçAo Nlvel de prl\lllAgIo (0-3
•
"o u
O: Segt11emo IISla au san ta da memória ! 1 : Segmonto está pros onlo na memória
O . Sll{Irn enIo da 16 b::;}1 : segme oto de:n bits
o
•" •o,
o
o d e~c r i l j)r O é in\,jJido C C[lUS;\ lima exceção se lIsad!), Ele pode ser carregado com segurança em um regi:.,rador de
~Cg Ill C HI O
parti i1ldieirr que
(l
registrador de scgmcllIo niio está disponível no momento em q uestiio, lIlas
L:LlIsa IIrnlL cxccyão ~ c fnr usado. ;-.lo in ~ tall lc (:UI que UIIl ~dc l or é carregado em um registrador de segrncn1 0, () dcscril{)l" com:spondcnlc é hus-
d-
".
as
o.
...,.
,. c
caJu 11.1 LDT Ill l (;0 r c annllLcnuJn em rcg i ~lradure~ MMU im emos, Je modo (jUC po~~a ~er acc ~slld ll rapiJ amcnle. Um J e~cri ll)r c{)lI~ble elll H b yl c~, inclllÍnJo endereço dI;! base, o Illmanho c outras inrormações do segmento, eumo d e~c ril lJ na I'igUl'l1 6.12. O formaltl J o ~cletor fo i escolhido com im e li g~ nci a para racili lar a loca lização do descritor. Em primeiro lugar é sd eciolllldíl LDT 1111 CiD'!', COI1I base no hil 2 dll sd etor. Entiio O seleto!' é copiado pal'll um registmdCJr transitório da MM U e o~ 3 h it ~ de urdelll haixa silo ajustadlls par.! O. o que equivale li mult iplicaf {) 11I1111cro cle ~e l e tor de 13 oils po!' 8. Por ti ni, \I ~ndereçn inichll da labela LOT ou da tabela GDT (mantido em regi3lrmlores MMU inl cmus) é ~{)mad o ao ~ cl eI(lI', pal1l dar um pOllteiro dirclO para () descri tor. Por exemplo, o seletor 72 referend a ,I entrada 9 nu (H.H , que "::516. In.:ali7ada no endereço GDT + 72: V[HnO~ aCiHllp'lllhar u ~ et a pa~ pc l ll ~ '1"'lis um pilr (seletor, dcs lncílmenlO) é convel1 ido em 11111 endereço físico. I.(lgo q1l1.! n ltardwaro.: ~([ UhCf qU:l1 registrador de ~egmento est;1 sendo USildo, poi~ l e lll a 0pc(;lcional vá pcgó-Io. Em ~cg ui du , o hunJwure verifi cu pura vcr se o deslocament o está nlém da extrel1lidude do segmento, caso CIIl que ocorre uma exccçfio . Pel a 16gica, deveria haver !> impl c~ mcnl e um campo de 32 bils no dCSCfill)r informilndo lJ talllunhn do ~eg mcnto , 1I1i1 ~ al i há somente 20 bit s di spull fve is, por1anto é usado Ulll esqut:lllu diferente. Se o hit G (grIlJlularidalle) do cam po for 0, o ctlmpo LIMITE é o Immmho exuto do segmento, até 1MB. Se for I , () c;unpo L1Mt TE dá o tnmu nho dll ~eg lll ellh) em págilla ~. em veL de hytes. O tamanho da página do PenliulII 4 lIUIICll é menor dn que 4 KB , pon;ullO 20 hi l ~ ~ãll ~ lIficic tll es para segll1enlOS ilté 2 \2 byles. Considerando qlJe (l ~cg Jl1 e nt o está na memória c o d e~ l l)(; alll e ll to está dentro da fai xa, o PcnliUJlI 4 clll ão soma o campu BASE de 32 bi l), que está no .Iest.:ritnr eom () des locamento para fonm\r o que é denominado clldcreçu liuear, como mostra a Pig unt 6. 13. O campu BASE é dl.!~ n1l!mbrad o cmlrês pedaços e cspalhadll pelo descriwf para JlHwter .1 cUlI lpalibilldade com o 80.28h, no (jlml BASE tem só 24 ohs. Com isso, o campo BASE permit e que caendo par.! (I end e re~:ü frs ict) com a Uliliz:lção dI! tubel:ls de páginas, muito p;trccido com o apresentado em flO SM1S I!~c m]llos. A lÍnica complicação é que, com um endereço \'Íltual de 32 hits e uma página de 4 KR , um ~egmcn10 poderi a cunter I 1IIi lhão de pág inas, portanto é uSildo um mapeumento de dois níveis pum rcc!tu.i r o lamanllo da labdll de pág ill a~ para ~eg tlleJl t os l'leqUellOS.
m.
I Descrilor
flUllra 6 .13
ConvllIsiio de um par (selelor, deslocamento) para um endereço linear.
Emlereço-baSll
{
lImlle
OllstocamerlJO
-é
OUlros campos
Endereço linear de 32 bits
•> z w
o
-• o
o,
u
...
••"o ",•
-
o. 8 o u
Endereço ~near
."
10
10
12
DIR
PAGE
OFF
(,)
rlUllr.8.14 Mapeamento de um endereço linear para um
Diretório de paginas
I
ondereço Hslco.
Moldura do pagina
TAbela de péginlls
1
J
•
"• ",•"
, "
•
I I
DIA
PAGE
I
I
OFF
V
.I
-
Palavra selecionada
t
(O)
V
w
o
•• • d •
~
N
~
o"
Cada programa em exccuç50 tem Uni diretório d e p :í ~inas que consiste em 1.l124 CI1IT<1U;lS de 32 bil~ c está locaijzlldo em um endereço apontado por um registradur globlll. Cnda cnlr:lda nl! ~SC uirctór;p ap(lnla panl uma !:Ihela de páginas que também contém 1.024 cnlrarJas de 32 bitlL A tahela de entradas de p~l!itlôl" aponta para o qundru de pági nas. O c~ucrna é mostrado na Figura 6.14 . Na Figura 6. 14(n) vemos 11111 endcrcvo linear desmembrado em três cmnpus: DIA. PAGE c OFF. O campo DIA é usado l'1n primeiro lugar como um índice pam o diretório de páginas para luculi:rar UIII pCJnteiro pilm a tnt>eln de ptiginn" adCtlundn. Então o earnlXJ PAGE é u"ado como lI/li índice para fi I:lbe la dI.! ptlgillíl" parll ncha r \I endereço ffsictl do qU:ldro de página. Por fim. OFF é somado ao endereço do quadro de página pmll ohtcr u endere'to ffsico do hyte o u da Jlnlavra endcrcçuua. As lillhus da tnhe];1de páginn ~ têm 32 o it~ cflda , 20 dos 'Iuais contêm U1II mImem de {IUlltlru de página . O~ bit." res tantes cuntem oit .. de a!.:e~so e bits llujOS, :uusludos pelu hardware e11l proveito du "iSlemit OllCr.lcional. bi ts de pmte'tão e (llIlrOll hitll dc utilidade. Cada tabela de págin:t" telll linhll'~ para 1.024 quadru .. de página de 4 KB. porl:lIlto 11"1:1 única tabeln de p:1.gi. nas llI:tnipula 4 megahytes de me mória. Um segmento mai" curto du que 4 M terd UII1 diret6rio de pági mL" com UIII:\ IÍnica linha. \1111 ponteiro pllra "ua línica lahe!:1 de págiTm .. . Desse modo. a sobrecarga p:lm <;egmentos C Ult{l~ é de apenas duas linI1:l.... em vez do mi lhão de linhallllue seria neces~á rio em ullla talJclll de pági nas de 11111 sn nível. Para evitar razer referê ncias repetidas ~ memória, a MM U do Pentium 4 telll SlIpc i:ll de hard ware para r.:un~ul tar rapidamcnte as cllrn hilHlçf){'s DIR- PAGE mais recentemente ustldas e 1I11ll'eá-Ia .. panl \) endereço rr"icn do quadro de I'ági rw r.:orre~ pnnd e n t e. Só qualldo a cl1mbinilçãCJ enfrente não tiver sido u~ada rccenternente é que u .~ etapa~ mostradas na Figura 6 . 14 são realmente executuda~ . Um pouco de raciod niu revelará t[uc. quanúo é 1ISIIdn n pag i nn ~·ã o. m\ ve rdade não há ne nhum l1Iot ivo pura u campo BASE fiO descritor ser não-zcro. 1\ únic;t coisa que BASE faz é c;tusnr um pequeno uc ~ locaT\lento pam U~:lr uma entrad:\ no meio do diretório de pág.inas. elll VC7 de no infcio. A unica e real Hlzão panl induir BASE é pen nitir scgmenta\'ão pura (111\0 pagi nada) e llIunter a compatibilidade COIII o antigo 802R6. que não linha pagjm\~·ãt). Também vule a pe nll me ncio nar
'"N
Posslvels 01106 /006 níveis
"" •c o
figur.6.15
u
Proleçâo no PentlUm 4.
•
•"
~
O
•e
2
•
3 NII/GI
Uma LllllililÇfio ptl!>... Í\d de~... ~e IUccõLnhmo é ~lIgt: ridu na Figura 6.15. No nível O, ,U:IUIIIIUl> n I1lklco do ... isl~ · ma operill,:iolWI. flue monipulfl EIS, gcrcncimm:nto de memória c oulru!> a:>sunlos crítico .... No nCvel I, o tral:ulnr de chamada d..: lo l... h':lIla c:>[Í! pn.: !>CIlIt:_Aqui , programas Ibuário!> 1'K)(11!1lI chamar proccdimclllm !Ir,: mudo a executar chamada, de l>btem.. , 11M!> UllClHl!> ulI1a li ... lil prOlcsidu c c~pccíficu de procedirncnlOl. pode :>cr ch:unarJa. O nivo;:! 2 c lm lá
têm pruccdilllCJlII)) de hibhuh.!l"a, po...... ivchnente compartil hados por muilOs progr:una!, em ll!>uárw... PUd':Ul
R
cxccu~:ão .
Programas
c:-.!>c!> proccdimenlOs, ma ... não podem modifir.:á·llls. Pur fim, programas uMIl'iriu!\ executam ,I Ll1~nor protc,no. As!>ill1 CO!110 o ~Sl llLeLlla de gcrcnd;1I11cLlhl de lIlelllt\riu do Pentium -I, o ~i~
dllllll
no Ilhel3 , tllir.: h!LJI tema Ik pHlI!,!~ã() c ho.lscado no MUI:n CS. Exce~õe~ c irlt e rrtlpçlk~ usam um mecanislllo similnr nus pOrtll!> de chamada. Também elas referendU LH de~ critore!> elll ... el de clldere~m absolutos. e esses de~criturcs apontam paru prt)ccd il\ll.!lIttl~ t!-jlcdlictls a !>cr executado!>. O cllmlMI TIPO na I-igura 6. 12 Ji:.tinguc elllre segmelllus de código, :.cglllcnttb de dadn~ c U:. v.irius eS I>éde~ lie pOr1u:..
A UltraSPARC 111 é uma m:íquirm de 64 bits c suporta uma J11elllóriu virwul pagituu l'L bu~cuda em endereços de 6-1 hits. Cmttldo, por raúks de engenharia e cu:.tn, u!> programas não podem u:... r tndo t) espnço de cndereço \ ir·tual de ó-I blb. Somente -14 hits são suportados. Ixmalllu o:. progrumus não Ixxlcrn passar de 1,8 X It)n 11)11'::'. A lIIem6ri.1 \'il1utlll)i!nnilidll é dividida em dLIn!> I.onfl:' de 2""'\ bytes cuda, uma na parte decillla do espaço de endereço vi rtual .: outm nu pmlC dI! baixo. No meio há uma IUCUlliI que contém elld~reçtls Ilue nilo l:k)(jelll ser u~a do:.. Uma tentatha de u:.á · l!l~ c .H1~:mi uma falta de página, A mem~ria fí:.ka IlIf\.),ima el1l urna UltruSPAR(' 111 é 2.11 uytes, que é .:erctl dc 2.2UO un, grande LI ~uJiciel1 te para li Ilmitlda Ja ~ ap l k:urflc.~ mai~ comul\!>. QUi1lrtllalllllllbo~ de página ~l\o ~llporludos: MKR, 6-1 KB,.'i 12 KIl c "", MS . O~ nlapealllellln:. implfcltos por es!>es qualru lam:U1ho~ de páginll s1l0 ilu~lradol> lU! figura 6.16. Devido a C~M: e'I);lÇll tle enderc~~t) virtual extremamente gmnde. não ),Cria prático ter uma tabela de páginas dir.:ta como 11 do Pemilll ll -l. Em \CL di:.!>O, a MMU da UltmSPARC []] é forçada a usar uma abordagem multI) diferente. Ela contém 1I11l:llaht:1a em hardware denominada TLB (l'rnnslatioll Looknsid e Uurrer - butrer d e trad ução lale· ral) quc mapeia nLÍIlI.:m:. de página vinual parJ míllleros de quadros de páginas fís icas. Pam () tamanho dc página de K KB há 2" mím~m~ de página:. virtuais, isto é, mais de 2 bilhôcs. É c1anl que ncrntodas rolem ser ma()(:udas. Em vez db~(), u TI.B contém ~ó os mílllertlS de páginas virtuais mais recentemente u~adas. A mnnitoruçi'lo de in5tJ\lyõe~ ..: páginas de dadus é fciul em ~e paratlo, sellCllI llue a TLB retém os M nÍlmeros de página:. virtuais mui s recentemente u~aclas em cada categoria. Cada linhu ctn TLB contém Ul11 nÍlmero de página virtual c I) númem do liUlI' dro de página fí~icil Lorre~ponde Jlt e. Quando um mímcro de processo, denominado co nl c~ t o , e um endereço vinulIl dentro de ~~e cOlllext\) ~ão a]lre~entados à MMU , ela IISlI circuiloS especiais pam comparar o m11llero de págiml virlmll colltido nn cOnte"to com \()das as linhas da TLB para nqucle cnntcJttu ao lIIe:.II\O tempo. Se ror encol1lr:tda Ulllll corre~llOndênda , n llLímcl\) de quudro de página naquela linha da TLB é comhinado COIll o deslocamcnto tomado do endcrc~11 virtual pura fl)l"lllnr UIlL endereço ri~ i co de 4 1 bits e prodUL1t· alguns sinaJil.adores (t1ags), COnlO bits ,te proleç:ln. A TLB é illl ~t fadli nu Figur.J 6.17(a).
flllura 8 .16
Endereço virlual
13
.
Endereço
22
Cuadro DeslOCa· do pAglna mento dli SI2K
"SICO
",,'
"
li
para IisicD na Ul1raSPARC.
"
45
16
Mapeamento de endereço vtnual
28
13
16
"
~
~
" •>
" w
o ~
virtu ;li.~
"
~
"
6.1.9 Memória virtual na illtraSPARC III
Bit'
• • •c
~
22
"
22
•
u
co co
T SB (MMU • soIware)
TlB (Ilar
N
Cooteldo Sin!lli~dore, P!\glna (naus) virtual
••"
T9bcla de lraduç80 opE!racion!l.l)
F1gur.8.11
o
"•
(Si~r!l,"il
Estmturas de dados usadas na tradução
" e
de endereços
~
virtuais na
o u
,., o \ofmalo
IDtraSPARC. (a) TLB.
•
é flleiramente
(bl TSB. leI Tabela
"•
de tradução.
"•
O'IXlffiPIIrdltl&da por 100M as pl!glnu vifluais
Que telmlnam em 0 ... 0000
"
'o,
~
o
•
'"
todas u P-'lJinas virtual.
'b)
•
o"
sislelTlll Oj)CraOOnal
qv8 tomllnllm em O .0001
""
• •"
doofinido p8Io
A entrada' • oomparlitlada pof
"
~ ~
)
1\ efltnldfl
Todavia, se lIenhlllllll currc~p()mlência for encuntrada, ()Corre uma ausência dll TLU. que cau~a lIlllil CACCÇ(1(l para o sistema npemc;onaL Cabe ao sistema opemcintlctem pela linha O na TSB . De modo si milar. todas as págil1:111 \pir1lm i~ cujos bits de ordem haixa mapeialll ptlm (XXlOOCJO(XXX.IU1 competem pela linlm I no TSU. como mostra n FigunI 6. 17(b). O tamanho da TSn é determinado por softwaJ'e e ~ol1\u ni\:ado à Mr>.·1U por meio de rcgislrndorel'i especiai~ aces ~f"cis <;ol11ente põlnt (I sistema 01'ICrtlciona1. Quandu ocorre unm uusência d:l TLD . o sistcma operacillllul verifica se a linha corrc~pnndcll t e lia TSR contém n página virtual necesdria. Asi~ t êncill tio haru\\arc na e(ln~u lta de en lmtla ~. o sistenm opcr"c1emal e~tá Ihrc parn \I~ar qualquer formato quc (Iui~er. Por excmplo. IlOtIe razer \1111:1 o l ~ra~ão de Iwsl, com o mi mem de p:ígilla \'it1u:t1 di\ idindo-o por Algum número primo./'. e usundo o reslo CUI1IU ludice para uma tabela dc 1}lInl e i(t)~. na (IUal cada um aponta para ullIa li~ta c llcade uda de linhas de pági nas v1t1unis que pruduzem () II1C~1I1(l rc,",ultnllunu IIpcmçã(l de Imsh comI'- Note que e~su~ lil1h u~ não ~àu as pági"OIJ>. rna~ IIS lillha~ da TSB . O re~utt .. tl(J (ta (;lJn ~ lIhl\ de uma págin:t na tabela de tmdução pode ser a lucalização da página na me1l1ÓrÍlI. ca~o em que a linha da I S lllIiI l'ache de ~n nwarc é alualizada. O resuhatlo hl1l1bém pode ser a descobel1fl de que li p,\giIlOl não e~ tr. na Illem(,ria. qumulo então é ini ciada uma açiio píldrnnizada Ite fallíl de página . É inleres~anlc comparar os sislenHlS de memória virtual do Penliul1l 4 e da UltraSl'/\f{C 111. O PC1Iti1l1l1 4 suporta segmenlação pura, pagi nação pura e segmentos pa gin Auo~. A UllraS P/\RC 111 ~6 tCl1ll'íI~iml~· ã{) . O PenliUIH 4 também usa hardware pura percorrer a tabeln de p~gilla~ para rec:lrrcgar ti TI.B 11\1 e\'Cl1ln de uma ausência da TI.B. A lfhraSPARC 111 apcna<; p:lssa o cnntrole para ~is tcnl!l ilpcradorml (1l1Ulll10 h~ u1l1í1 'IU~ência da T1.B . A raziio primáriu para e~~a diferel1~a é que (I PcntiulIl 4 u~a seg mel1to~ de 32 bit~ C C~~C ~ ~egT1lel1to~ tão pequc· no'\ (somente I lIlilhiiCI de páginas) l>OI.telll ~r lI\a/lipulndo~ com labelas de págillll~ cIl"\encionai~ . Em teoria. {I l'ell1illln 4 leria um problellla se I1Tll progmma usa~S(.' mi lhares de !1ocgmentu.~. ma~. ulHa \' C/ljl1e nenllllm:1 da~ \'ersõcs du Wil1dow~ ou do UNIX supona ma i~ do (I"e um segmenlo IXlr proee~~tl, o prohlema nãll apan.'Ce . Pllr comparação.;J UltmSPARC 111 é uma máquina de 64 hi t ~ e plXtC ler :llé 2 bilhõcs de págilla~ . logo. t;Ihela~ de rágina~ to n \'el1cilll ", i~ niio runcionam. No futuro . toda~ a~ rn áquinu~ Icr;to c~pu~'os ue endereço virtual de 64 bit~, portallhl esquclIlall C(ltllll o da UlI r:ISPARC scr[io nonll" .
°
6.1.10 Memória virtual e caching 1I10~
Emoom à primcira vista II\cmt'lria vil'tual (paginada l>or demanda) e cnching não p;trcç:Ull reladOlladas. em lert1e c\I!lceilO elas ~ãu lIIuilo si milares. Com mell1Órill vinual, tc.xlo o prognuna é rnamido em di"C{l e dc~m{'m ·
brado I;:IIl págillõJs dI;: t,llllunho fixo . Algum sub(;Onjullto dt!ssus páginas está na mcmória principal. Se o progrul1llL usar, na maior pane, a~ págirws na rnern6rhl, IllIverã l)Oucas falIas de página e o prognlllla ext!culará rapidamenle. Com cnching, IOrlO!) programa é rnamido na memória principal ~ desmemhrudo em bloco.~ ele cnche de lurmmho lixo. Algum ~ubco nJ ull1o de~M:~ blocos é rlli:l1\tiJ o Ilil eache. Se o programa usar, na maior p"rI ~, o~ blocos na cache, haverá JlOILCll~ uu~êll c i u~ da cache e a eXt:cução dn programa ~t: ni r.ipida. Em termn~ de cnru:dlo, as duas siio idênl ica~ , ~6 que operam em n íve i ~ diferell1l!s na hierarquia. É claro quc lamhém IHi nlgwll:ls dilúençus I!ll1 re IIll!lIlória vi rtuul I! caehi ng. Umu dclu ~ é que us ausênci:L ~ .1<1 cache sãu nHU\ipnladó! ~ pelo hardw:lrt:, enquaruo raltas de p:lgina são manipuladas llelo siSlema operacional. Além di ... ~o, bltx:O!o, de em.he lípicm silo lllu ito ll1ellOn!S do (Iue páginlLs, pClI' exemplo, 64 byles wr.fII.f 8 KB. E mui~, o Ilrapcil lllcnlC1 cnlrc página" v i rILl1Ii~ e qUildro~ de página ~ é di l'crl!nl1!, s1!ndo qUI! tt ... labelus ele página.'> silo nrgllllil:l{Ias indcxatu!u p:lra u~ hjl~ de ordcm lLha llo endercço virtulLl. !lO I)ass!) quc I!
Instruções de E/ S virtuais
6 .2
o "::llIlj unlu de 1lt:.lr1Jçõl!~ de nfvd
ISA é cOlllplctamcrue di ferente do conjulllO de j n ~ ltu~ õe~ de micrnarquiletum. A~ opl;:rayõl;:~ lllle POUCII\ ~I!r c.xcculadus e BlIIlbém os run nalos das inslr11ções são ~III difl!rentes nus doi... nívei .... A ~.\i~lênda oca~hmal de algullla.'> instruçõc ... , que "ao as mesmas em mnhos os níveis, é, c lll es ... ênda, addcntal. bn C(lll lra~ le , 11 cunjulllO de in~ l ru~õe.'> dc nível OSM etlHl":rn gramlt: parle das in s t nl~ ões de nível ISA com a adi~ilo dc algulIlli', in!tl nrções n {)va~ , porém impOftaUlCS, e a rCIl1{)~ão de algumas pnucas inslruções pOlcneialmenl e daml!>a!>. En lr:lChl1s.líth, é uma das árelLs elll que llS dn i ~ níveis apfe ... l!lllam elll}siderá veis d ife:renças. A razão pam c.'>sas tlil'cre n ç,l~ é !>implcs: um Llsuário que putle:ssc execular as inst ruçflCs de EIS reais dI! nível lSA poderia 1I:: r dadns (onfide nciai s armazenados ell1 qual{juer lugar do siSTema, escrever em lerminai s de OLltru~ lI~uárius e, .1:': 111 gem i, ~t: Iran!>l onnar em um grande transtorno porqUi;: seria uma ameaçu à seguranç'l do próprio siSlemlL. Em scgulldo lugar. programadores normais, sensatos, não querem fazer F.JS no nívd ISA porquc du é ledio ~u i! complexa ao extremo. Reali ziIf urna EIS rcqller aju star campos e bil S em vári()s regi slrlldores de ili spo... ;t; vo.>, espcrnr ulé i.lllC li opcnl~ão st:ja concluída e enlao verificar para .,.er o que :Iconlcccu. Só para dar IIJIl ext:l1lp ln ihi veriri ca~ illl , o~ discos têm bits de reg istrador de dil>posi tivo para delec lllT os seguiul cs erros, en tre muil!'!> u ulroS:
O braçu d!! di~co não realizou uma busca adequada. Memória IIIcxi ... lcnte eSpI!ci licada como bufrer. EIS de di ...en eOllleçnu ,mies do lérmino da anterior. 4 . Erro de h:rnpW'i/a~:ãu de: lei tura. s . Discu endc n=~'lll ü inexiSll!lll e. 6. CiJinclrn clldere'i:uJn inexistenle. 7. SelOr endl.:fl;:çudo incx istenle. 8. Erro dc ~o ma de vCrifiCll~:ão na leitura. 9 . Erro de vcrilicaçiio de escril:L ilpÕS opcraçíio de escri ta. 1.
2. 3.
Quando um d t.:~~i!s CI'I'Ill> ocorre, o hil correspondente em um regi strador d~ disposilivo é ajuslado. Poucus usunrios qucrem ~t! incolllodar com a monitnração de ludos esses bilS de erro c uma gr.mdl! quanlidade de in.fnrmaç.tks de e ... ladn adicionais .
6.2.1 Arquivos Um modo de orgauizllr EIS virtual é usar Li ma abslr.tçao denominada arquivo. Em sua forma mui s simples, um 'Irqui vo con~i S lc em urna S(!CIi.iênciu dc bytes escrila em um dispasil ivo de EIS . Se o d ispositivo de EIS for um d il> posilivo de lIrlllarenamenlO, eomo UIll disco, o arquivo pode ser \ido ele volla mais wrdc; se o di sposi tivo não for um disposili vo de lInlla.lCIWOlenlO - por exemplo, ullla illlpressoru - , não pode ser lido de VOhlL, ê claro. Um di.>co poue eOlltt!f muitm arquivos, ead:l um com algu m lipo particular de dados, pnr ext!JlIplo, ullla figura, ullla plani lha ou o tCXlu do capítulo de um livro. Arquivos dilerentes têm comprirncnlos e outras propriedades diferentes. A ahsIf:I~il() de um arqui\il permile que a EIS virt ual seja organilada de maneira ~im pl es. Para o ... i ~ t t!lIla operacional, UIII lIrquivo non nalrnl!JI\c é apenAS nma sC
•o o u
• "
•
~
o
•e
• •
~
• •o
~
.•"" o
~
•
>
z
'"o o
"
~
•
"
co
Numero
•o•
Flgur.8.18
registros lógicos la) Antes de ler registro 19. lb) APÓ8
u
ler registro 19.
• "• ",•
~ ~
• • N
C
-'"
O
PrOl{Imo legl8110 Ióglco
17
1'",lidQ
t "-
11
consiste e m
~
o
"
arquivo que
E o
w
1 registro
Leitura de um
",•
-, -•
- ..-;;-
14
de registro ~ lógico 15
N
" " " "
Registro lógico 18
20
"
} """~
Próxlllwl lt'gI.'ro ,. ", Uria
111
~
Momórla IJliocIpal
21
" ..- "
"",. ,.
Me,nÓ"" prlnclpal Rev~ l,o
lógico 19
--
1
t Bufler
-
('1
-
(b)
A chamada read coloclI os dados rcqui sil<'luos no butre... U~ tlalll1 c l1 l c ela retoma ,\ cOlllagc ll1 do Illímero de by t c.~ rcalmente l idos. que pode ser menor do que o número requisitado (você não pode tcr 2.(X)(J hytcs de um :lnluivu de 1.000 b) tcs). Associado com cada arquivo aberto há um p"fltei ro que infonna <ju Al bylc será lido CUI seguida. Após IImll read. o ponteiro avança conronue o número de byles lido. por1.mlo, reads consecut ivas lêem hlucm de dado.. consecutivos tio arquivo. I labitual mente. há um 1I10d o de aj ustar es~ pontei ro pam 11111 valor c .. pecífico. ",manto os programas podem aer~sar alellloríamellle Ijuajljuer parte do arqu ivo. Q uando um progr:J nm encerrou a leitura de um :u'ljuivu. pode fech.í-Io pMa in formar ao sistema opcracionlll q ue não usará muis o urljuivo. o qlt~ permi te que o siste llla operacional libcre () espaço lle tabela que está sendo usado para conter infonnaçõc .. sobrc o arqu ivo. Sistcmas operueiolLa is de computado res de g ru11llc porte (mainfrumcs) tê m U1I1:\ hMiu lI1:1is so fi ~ ti c :HJa do que é UIIl arq uivlJ. Nesscs ~ i s t c rnns, um arq uivo pode scr UIllU scqUênci a de r cgis h 'os ló gi cn.~ . cad a UIIl com uma e~ t nLt ura be m de lin ida. Por excmplo. um rcg istro lógko poderin ser urna estrutura rJe dud o~ (IUC consi'ltc em d ucu itens: duas cadcias ue Clmll.; tercs. " Nomc" e "Supervisor "; dois números inteiros. " Depal'ta mc nto" e ·'Escrih'irio". e uma boole:lTla "SexoÉFem in iuu", Alg uns s i ste ll lll~ opctaciunais faze m urn u uistim;ão entre urqu ivos IIOS qUAis todos n~ registros cm UII1 arquivo tê m a mesllm estrutuTlI e arquivos que contêm urna rn i~lLIra de di ferente" ti pn~ de registros. A instntçãn de en trada vin ual básÍl'a lê o próx imo registro do arqui vo ~peciri c"do ('O coloca na memóri " principal c
6.2.2 Implementação de instruções de Eis virtuais Para entender C0l\10 ~ão implementadas instruljõcs de EIS virtuuis. é nccessário examinar comu o~ arquivos organizadus e annalenat!os. I lá uma que ~ tijo h:í .. iea que todos os s i ste lll a~ de arquivo devem encarar: a " Ioca~'ão de anllll7Cllal11ento. " un idade de alocação pode scr UII1 ÍJ nico setor de disco. mas l11u i t a~ \C7.es con'liste ClI1l1n1 bloco de ~et ore .. cOllsecutivllS . Urna uu tr;l propri t.'{luuc rundamental da illlple tllcl1Ilujiio de um sistema ue anluivos é "C 11111 arquÍ\'O f an llln:enudo em unid:1ucS de afocflçi1o colt ~ec uti v,t s ou não. " Figura 6, 19 dcscre ve um d isc~ 1 sim)!le .. com lima ~ upe rffcie que contém ci nco t l'ilh l\~ cle 12 selllres cada. A Pigllnl (I. II)(a) rnostm um cStfuellln tle 'J l oc;t~· ii !l no qual li ~e r o r é li uniunde básica de aloc:1çiio d e cspa~'o e no qual UIH eradonaIICIl1 de um arquivo. O prugr:lIl1ador vê o arqui vu C(lIIlO uma ~t'1, i1êndll linear de bytes ou regi~ tHlS lt'!gicos. O sislell1,1 ol>enlcional vê o arqu ivo l'UJIIU uJlla c()le~'ão de un idela. denOlllinaua fnd ice de arqui vu. (fue dá as unidade'l de aJocuçi\o e seus ~ão
,
'"
$olor 1\
Selo< 11
figura 8 .19 ESlralégias da alocação de disco
la) Arquivo em
Tlllha O
Cab!lçol. de Ie1' Llralescnla
_J.H+t
•c
CabeÇOle de
o
'futura/escrita -
u
• •o.
selores conset:UUvo!l
ArquIvo em setores não consecullvos. Ib)
--
o
-
Dlfaçio
•e
•
Olfllç&O
•
ele mla.çAo
de rotltÇlo
do d"",
dodl5CO
~
ell(l e l'r.:~o~
di,: di 1>ctl prllpl'iulHcnle ditos. O índice de arquivo pOli!! ser orgllnizucl(, COnlO UlIlil li .~ln de endereços d.:: hl()w~ de di~co (u~lldl) pelo UN IX), ou como uma lislll de rcgislro~ lógicos 'l11!! dão o endcrl!çn de disco e I) desloC~Hll cnlU par;. cada UIII. ÀIJ vezes cilda registro lógico tem lima clllIve e os programas podem se ,-cf..::!"ir sa urgani lilçàll ~ cumum em Inllint'ntlllc:-.. Um méll)du ulh:rnath'o de localilar unidades de alncação de um unluivo é organizar n arquivo como uma li ~ t a cnclldeada. ('udu ullIdllde de alocação contém o endereço de sua suce~sora. Um modo de implementar essc eSora~ na memória principal. Por exemplo, parll1l1ll dhcu ctlm (!.. KB de unidadc!> de alocaçãu, o ili)tenla ojx:racional poderia ter lima tabela na mcmória com IH KIl de linha!>, calla urna dando Il índice de SIiU sucessora. Por exemplo, ile UIIl arquivo l'lCupailSe aS unidadeillle alocação -l. 52 e 19, 11 linha "na tll1~lu conteria um 52, li linha 52 conteria um 19. e li linha 19 conteria um códigu Cilpccilll ([Xlf exemplo. I) ou - I) pam indicar final de arquivu. Os loistcmlts de llRluivos LbaduiI por MS·DOS , Windllws ')5 c Wind,)"lo 9K lunciunuvum dessa maneir-.t. O Windows XI' louporta esse Si!>Lcllla de :mluivos, mas tam· bém tem ileu prl'lpriu ~iMC ll\a d.: arquivos nativo, que funciona maiil CIlIllU o UNIX. Alé agonl diltCUIIILlU~ arqui .. l!~ alocados cnnsecutivumente e arcdlic:mlOlo Il\lr quc !>i\!, u!>ml05 dois tip(b. Em arquivos ulocud'h COLl~ccu l ivaLlLcnte. 11 adminislração de blocos é lIlah !>imple). ILla~ quamlt! II LlIlllanho máx imo dI.: arqui .. u não é conhecidu cnm anlccc:dênciu, é ram poder IIsareSSlIS téemcalo, SI.! llLlL "rquilo comcçasse no setor j e lhe fos sa permitido crCM:er para setores consccutivos, ele poderia C n C{)~ Lar cm 11m (mtm anluivo no sc:h)r k e nâo ler e~ paço para loe eJôpandir. Se o arqu ivo não for alocado consecuti vamente. ni'io havcr.i pr\lblcma algulll, porque hlocos sucessivos podem ser cotoc:ldns em qualquer lugar do di sco. ~e 11111 dilocU comi"er ullla 1llinllda lista d e li vres. A Figura 6.20(:1) i l Ll~ t ra a listu de livres para o disco da Figura 6. 19(b). Trlha SalO~ Njjmaro da 5610r&5 em
uma Lacuna figura. 8 .20
DoIs modos de
monlloflll Stltores dL!ljluniveLS !ajUsla da IIvreR. lbl Mapa de bUS
o
,
O
O 6 O
2 2 2
3 7
,
3 3
O 9
3 3
4
3
,, ", (.)
5
",,
l iilha O O O O 2 3 O 4
, ,
2 3 O O O O o O O O O O O
"',,,
9 O O O O O O O O O O
5 6 O O O O O O O
,
8 O O O
, , , , ,, , , ,,,
3
,
7 O O O
(b)
10 11 O O O O O O O O
,
,
•
~
•
,o
. ~
'"
•>
'" w
,o o.
•
u
o
""'
N
••" o
~
• "8
~
o u
•
~
•
~
•"
"
"" •
~
o ~ ~
• N
;;
•
'"
o"
Um l11 é todll al1 cruutivo ~ manter mil mapa de bits. cum 1 bit por unidudc (!c alol:lIçüo. l' lJ rHII mustral! Figuru (1.20tb). Um hit I indil::I que 11 unidade de nlOC,Hjàll já está oClIJlada, e um bit O indiea élll fi f:\VOf IIe gmndes unidades de alocm;i1o é o fa to de que ter unidades de uloca~'i1f) pequ c lla ~ ~ i g nin ca ter l1luitlls unidades de alocaçüo. Por sua vcz, Itlllitas unidades de aloca~ão sigui fi cam gnlJlde~ frldi ce~ de arquivo nu gnmdcs tabe las de li sta~ enelldcada.~ na memória, Na vcrdade, a raí'.l10 por \Iue u MS-DOS linha de fl..'l'Orrer 11 unidades de ,llocaçãll rnLLJti~sctores cra o falO de (IUC os endereços dc di sco eram armazenados como nlímeros de 16 bit ~. Quando os discos ultmpassarmn 64 KB de setorcs, o Ílnico modo de repre.<:entá-Ios em usar un i dlldc~ de alnca~'ão maiores. para que o mimcm de unidades de alocação não ullmpa.<;sasse 64 K. A pri111eim \'crsãll do Windows 95 tinha I) mesmo probl cll1~. mas urna versão subseqüente usava m'lmeros de 32 bits. O Windows 9R liupol'lav,l ;Hl1b()~ ()~ tamanhos . Contudo, em favof de unidades de alocação pequenas está o fato de que Iloucm an.[IIi"{J\ ocupam exatnmell te um número inteiro de unidades de a l oc a~ão . Por con~eg uinte. sempre será dClipcrdiçado algum c~ paç o na última unidnde de alocCl\'ão de praticamente todos os arquivos. Se o an[ui vn for muito maior d(J que II un idade lle
6.2.3 Instruções de gerenciamento de diretório Nos prillltÍrdios d:1 computação, a ~ pessoas guardavam seus program'ls e dados em l',l rti}c" pcrfurndos em arqui vos em seus e~crit6r i tJs. À mcdida que cresciam o I:rrmmho e li qumrtidllde de pro g ralll ;l ~ e dados, essa s itua\'ão se \t1rnnu cada vez mai s indesejií vcl. Nilo demorou muito e surgiu a idéia de usar l. nrcmlÍri a sec uml~ria do computador - por exe mplo , di sco - como loclIl de arl1lílzcnmnento para programas e dados como lim a alternativa aos arquivos (Je e~crit 6ri(J . I nf\mna~ ües que podem ser açessadas diretamente 110 cOll1pllladur St'lI! n necessidade de intervenção humana são denominadas ellllinhll (( I/I ·fim' ). au COIllnírin das tnfoOlwç ües fllr a de linlUI (fJg : /i" e), que requerem intervenção hUI1l:trm - por e:
2. 3. 4.
Criar UIll arllllivo e eutrar cm um dire tório. Apagar UIII m'll"ivo de um diret6rio. Renomear um :mpli vo. Mudar o estadu de prot e~ão de um arqui vo.
Ilá vários eSll lIemas de prot e~'iio em uso . Urna pllssibilidade é I I pro p ri c t~ri \) dc t..: ada arqll ivfl e ~peci rk ar uma scnllll secre ta pafU cad:.l artlu; vo. Quando tCTllnT acc~s ar um arqui vo , um prngrillna dcve fornecer :J ~e nlm . qlle () ~i~ tema nperlldonal e ntão verinca para ver liC elit;í COlTela. antes de permitir tJ aceSliO. Vm 011111 1 método de pflll c~'íin é o prorri e t~ri o de cada nrqlli vo rornel'er ultla lista e xpllcila dc pc~~oa li C Ujtl ~ prog.nllna ~ p(lilern ae e~~ ar aq ue le arq ui\o, Todo os s il'temas operaci!lIrni s modemos permitem que os usu:ilios Inantellhalll ll1 a i ~ de um d irelü rio de nrqui vlls. C ada diretÓl'io é , em si. um nrqllivo tfpicu c. C(llIlO 1:11 , pode figurar na li ~ la de um olltrn dire tóri o, (1 que d~ ori gem a urna {irvQl'e de dil'ctó rios. Dire t ó ri() ~ múltiplos são de particul:lr uti1idad ~' l)ll ra p rog rarmll 1pl' e~ {Jlm trabalham em di vcl'so s prujetos. Inmlue el es pode m agrupar todos o ... ;1r
Figura
Atqulvo O
Nome do arquivo:
Palinho de boIracha
Arquivo I
ComprImento.
1.840
Arquivo 2 Arquivo :3
npo.
Ar\iilldae dalalaOl
Dala de erlilçAo:
Março 18. 1088
Arquivo 4
Ultimo acosso:
Setembro t. 1492
Arquivo 5
Úlllma a~6r11çio:
Julno4 . 1n6
ArQllivo 6
Total d. IIC6IS01:
Arquivo 7
_O.
'" Trilha 4
Salore
Arquivo 6
Bloco I.
TrUha 19
Se1019
uma
Arquivo 9
Bloco 2:
Trilha 1\
Selor 2
'OIl\U
Arquivo 10
610003.
Trilha 77
SelorO
I. davia, .1 lisla
Fi y urat 8 .2 1
A lém I hil. :IH dc
Dilelório de arqu.Jvoll de usuário e o _ couleudo da uma entrada liplca em um duo::lório de arquivo.
IlIu ide
)(1
.....
N
o
c o u
o
•"
~
o
•8 • •
~
li
Icr
;rtl U-
s de Indo
lar" )m'/lIe
IIHI C,I-
ilo, 1.11
;a'cs 'a-
la.
',." ,.
',.
,
•
~
6 .3
Instruções virtuais para processamento paralelo
A Igun:. algoril l1lU~ dI,; cIIJIlpu taljãn podem ser prngnlllllldos com maior cOllvcniênciu para dois 1111 mais pnx:es:.tb clX)~rati\ us que cxccut,Ull Clll paraldo (h lU é, :.i lllllhanearncllte. em pnx:essadurc:. diferente:.), em VCOl. de para um tinicl.l prllce:.!oll Outro:. processos de compLllayão podem ser di vidido!> em porçõcs, q ue então podem ser execu l ada~ em paralelo pJra rellulir o lempo trdu!>Comdo para t1 proce:.so de computação IOlal. Pam (lue vários pnlCe!>~o), tmbalhCIII Junto .. em p.tr.llclu, sào necc~sá ria s alguma!> ill:.lmçõt:s virtuais. Essa~ inSlm çÕl!lt :oerã n discutidas nas próxima:. Sl:ifÕt:!>. Alt Jeilt dtein, é impossível transmitir ~i n ais elétricos com velocidadt! maior do que a da luz, IIIIC é ilprnxi madamente 30 emhll> no \';\cuu, mcnor em rios de cohre ou fih ras ólicas. Es~e limit e tcru importantes implicuç~s para ;1 org,ulI l,u.:iio de compl1ladores. Por cllcmplo, :oc lima CPU precisur dc dados p0:.I'i \o hc mé a C I'U. Por comclJilência, Ilegundo, os computadufC:' lemo de ltl:r c~ tr.: mal11cnh! lllimísculo:.. UniU aoordagem altemuti" a para acelerar cillnputuclurcs é construi r mácJuina~ com nlltitil ~ C PI I ~ . Um cmllpmador com mil CPU!> tÀ! I m podc tcr a mesma cupacidade de computaçãn d.: uma C PU com um h:!lllpu de cido dc 0 ,00 1 ns, mas a primei m pode ser Illuito mais fáci l e 1Il;lilt bar,llu de construir. Em um COlllpi llildor cum mais de uma cru. cada um do!> divChllS processos COf:lllCmlivo:. pode ser dCltignmln a Mia própria CPU. n que pcnnile que os pn )Cc!>~os pro~Sigillll simu lHlIlcamcnte. Se houver upcna:. \Im procc~sadtlr dis ponível, J) efeitu .In proccsltítll1cntlJ pamlelo pode ser simul ado ftl .lClldll CO IllIJIIC () processador execute cada proce~so JlOr VCOl. du ra ntc um c urto IlCrfodo de ICIllJlO. EIII OlL tnt ~ pulavrus, o proc cs~ IIt1t) r pode !oer companiHmtlo Clltre vários processos. A Figura 6.22 IlWl>tru a difcrença cJllre processamento vcnladeir:tIl1Cllte pamlelo, com mais dc um proces~ lI dor físico, c pror.:c~~a m enlo parulelo "ill1ulado, com :'Ó UIII proccs~ ador físico. Mesmo lJIHllldu 11 proccssamClltn pamlelo é simul:ulo, é .íti! co n ~idc: rar que cada processo tem seu próprio pr('ICc~sudur virtuu l Ikdicôldo. Os mesmo!> prohlemas de cOlllllnicllçlio que ~ ilrgcm quando há processlIlllento verdadeiramente parnldo também s urgem no C;I:>O "imu ladn. Ayura 6 _22
la) Processamenlo verdadeIramente paralelo com vinia,
PfoceSIO J
Processo 2
cPUs. !b) Processamento paralelo sImulado pela comutação dinâmica de uma imica r.PU enue trés
processos.
Processo 1 Processo I
p:::'::SC~t::±I::i::±:':::Í:J
""-J P nx:e51O 1 em ex.ecuç6o
T.""",
,.)
T.mpo
")
6.3.1 Criação de processo Quundo um progra mo deve ser executudo, elc devc exccutar COlHO parte de algulll p l'()Ces~o. Esse procc)'~Jl, corno todo~ U:. u ul l'11S. é cUJ'IIct.:rizudo por um estndo e um CSIMço de endereço por nleio rlo qual o progmm3 c ih dudo), I>od em J,er al:l:!o:.acl().~. O c~ lad o inclui no m rllimo o COI1 !:ldnr de progr3m:l, uma palavra de estudo de prtlgr:Jrua, um IXlOlciro dc pilhu c os regis tniclores gerais. 1\ muioria cio, ~ i ... IClllu~ 11 1>Cf'Jcionai ~ modernos pcnnile clue proce!o!oos sejum criucloll e cncerrados d in:tmicaIUCnlo.!. PUf'J tinir tOIJ I prU\ d to de!>:.a car:tcterí:.tica e obter prucc:.~a nK!nto pamldCl. é preciso uma chamada de si!>-
o
,o ~
'0
~
•>
'"
N .... N
•"o ~
,
~
ICl1ltl para l'l';Hr 1I11l110VO processo . Essa cl1:unnda de sistema pode apenas farer um clnllc do chamador. o u po.. lc pcr-
l1I;tir np chamador
ti t:riH\~ll l)
de tl!11
prlli.:CSSU
que especifique
sell c~ l adll
inicial. incluindu "e u programa. dados c
cnucrcljo de juki",
Em alguns casos, li crin~ão de um processo (pai ) mantém controle parcial. ou até rnc<;rno 10lal. do prt>Ccsso criado (lilho). Com essa finalidade. existem insll1lçõcs vi rlLm;s para permitir que um pn1ce<:sll- pai imcrrmnpa. reinicie, examine c encerre seus proce~stJ~- fithos. Em outros casos, um pui tem menos cOIIIJ\>le sobre ~e\lS nlho ~: uma vez cri:ldo um processu. ni'itl h,j nenhum modo de um pai imcmlll1pê-lu. reiniciá-Io, examiná- lo ou enl'errá -In à força. Então. us dois processus executam indcp('lldclllemellte um do outro.
~
8 o
L>
•
~
• ,•"
~
, "
"
~
o
•• •
~
N
o
•
'"
o"
6.3.2 Condições de disputa Em muitos c a~(l~, processos paralelo" predSll111 se conlUnicnr e sincronizar de rnOd {l a rcali 7;1r ~eu trabalho. Nesta se,ilo. será cX:Hllim,u:l li s incroni1nçilo de processos e algumAS das difi c ul{tade~ ~e rà lJ explicad,, ~ por mcio dc UII I exemplo detillhildo. Uma solulfilo p;tra esJ((L~ tliliculdnues será dada nu J(cção seguinte. ConJ(idere ultla si tuação em que há doi s prOCCSS(lJ( independentes. () processo I e o pM·C"J(O 2. que ~e CO I1lU nicmn por meio de um bulli!r compartilhado na mCl11úriu pl"i ncipal. Por simplicidade. van1(1S denomi nar {I proccs~n I produtor e () proccs~o 2 IêUlIsulIlidur. O produtor calcula lIúrnero~ prirno~ e os col(Jt~a 110 hutTcr um por vez. O consumidor retira esses nlÍm eros do burfer U1ll por vez e os imprime, Esses doi s processos executam em paralelo a taxas
Processo 3 osper!lf1do pela CPU
~
Processo 3 Processo 3
~;::r:i~q':;:b::;:II=+IJ
Processo 2
~::j::~=!=i::j::tt:qt:::tLJJJ.-i:Jw
Processo I
pi::±i:::r±j:±=O=IJ
Proeesso 2
flgll ra 6 ,23
Utilização de um tlUffcr C'il!;UJar.
Processo 1
"-.../ PrUI.!BUO 1 um OX9CUÇ/lO
Tempo
T!! r"nJl O
(, )
'"~
per· lo~ c:
publ!c class m ( Ilnal publlC IiIaUC Inl BUF _S'ZE o; 100; 1/ butlor executa ela O a 99 hnal pubIK: li\allc tong MA)CPR.ME _ .OOOOOOOOOOOl;1I para aqui pullilc sla tlc Int in" O. 00' • O, 11 pontellos pa/li 08 dados public lIatie Iong bulfer( l- new loog(BUF StZE]; 11 pumos arnlêlzenadol aqui public SI/lIIr. proclucer p ; /I nome no produtor publlc slatle consumer c; 1/ noma do consumidor
!
·c:.:.o rei· Ullla
pobllC Ii.auc 'IOid maln(S.rlng args] I) (
/0 à
p . nEW producer( ):
c • new consumar( p.lilall( I,
):
11 Inicie o produlor 11 Inicie o consumidor
c.' tar ' ( I.
ho. de
1/ r.lasse principal 1/ crie o produtor 1/ cria o consumidor
/I Elisa é uma lunçio para Incremen.ar In li oul da modo clcllco publlc stalie Inl next(inl k}l'f (k c BUF_SIZE - 1) return(I..I). elü ratumIO):)
M
r-. N
•
o o
"• •"
~
o
•e
• • • •c
~
tu-
_'o O
o, c, tc
,. ,
fluu;a 8.24 Processament o paralelo com uma conrução latal de dispula.
clau procluce r aXleMa Thread publlc vold fun!) I tong prime " 2;
I
wnHe Iprlma '" m .MAX PRIME) I prune 5 fMllrLPf lme(pi'lme); 11 (m.next(mJn) _ m.out) suspendI ); m buffer]m.ln]", prIme; m.ln '" m nexl{m In); iI (m.next{m.ool) ... m In) m .c rosume( );
1/ \.:Ialilie produtOf /I código proo!ltC'lr fi varlávaltransltólld
~
,
~ ~
11 declaração Pt 11 declaração P2 "dtICl,uaçAo P3 /I declar8çAo P4 1/ deCI8rilção P5
" •> z
prlvale Iong nextJ}rime(long prime)! •..
1/ funçiio que calcula o próximo Pfimo ~
dass conliumer extand. Ttlfead ( publlc vold run( ) {
Iong &mlrp '" 2;
,o li clali58 consumidor
11 dMJigo conaumidor li varlévol transi tória
whlle (amirp '" m MAX_ PRIME) { 11 (m In .... m .ou t) sUllpand( ): 11 dBClillaçlio Cl emlrp .. m.buNel (m 0411): 1/ dact818ÇAo C2 m .out . m .nutlm OUI); I1 doclaraçAo C3 11 (m out as rn naxt(m na. t(m .in))) m.p.relume( ): /I declaraçio C4 Systam out prlntln(emlrp); /I declaração C5
A fun ção Uliliuiria 1It:..\l permite o fácil incrcmcnto de ;11 c mlt, sem ter de escrc:ver código pam vcrificar a COIIdiç3u dc volta cClttlplCla toda \·cz. Se o parâmetro pura "ext ro r 9f1 ou menos, 11 pr6x imo intdm mais alw é retonla110. Contudo, se o p,uâmctro for 99, IItingÍlllos o linal do burrcr, portanto O é retornado. Prt;!c i sa mo~ dc urll ntudo relo qual quale)!ler um dos procesSOS vá donnir IlOl" conta própria qua ndo llãCl pudcr continuar. O~ projet i~ t as de Java cnh.:nder.ull a necc:.sidadc dessa h(lhilidade e incl uíram os mélOdos .\"IIspl'nd (clor· mi r) e rt'.mll/I! (de"pcrt'lr ) na classe 1'Im'flrl já na primeim vers30 de Ja"'I. Eles são usados na Figura 6 .2... . Agora chegamos ao código propriamente dito para o produtor e o consumidor. Em primeiro lugar, Il proclutnr gera Ulll no\o mímem primo em 1'1. ()b~erve a utili zação de III.MA ,'C PRIMt: aqui. O prelixtl m. é necessário para ind icar que querelllo1> diLcr o MAXj'H.lkIE dcfi nido na d:\ ~se 111. Pela lIIesma ralão, esse prelix o t:lmbém é tleCes· ~:trill panl in, 111/1, Im{fl'r e I/t'.\l. Emãll () pnxlut llr \e ri fica (em P2) para "cr se 111 está ulIla IlO~iç30 atros de lIl/I. Se estiver (pm exemplo, ;1/ ::: 62 e "111::: 63), o bulTer e:.lá cheio e o pn"lulor vai donll1r chanmndn fIIJ]H.'1It1 em 1>2. Se u hulTe,r nãu eloliverchcio, o novo mimcm primo é in~rido no bu ltêr(P3) e in é i nc~ mcn t :tl1o (1)4). Se t) novo valor de ;11 esti"er tllIIlI posição à frente de Ol/t (P5) (por exemplo. il/ "" 17 e 0111::: 16),;1/ c 0//1 erilm iguais Rll tes lle in ter sido incremcll ladn. O pnxlulOr cond ui que Il hufft.:r clotava \ Mil! C que o con:.ullIidor c~tava, c ninda c:.tá, ,Iormindo. Por Ctltl~cgu il\te , I) pnldu lor chllllla re.~II1111' parti l1e~pcnar 11 '-'I/bumidor (P5). Por fim , () produtor começ" a pmcurar O próximo número prilllO. Em termo:. cI>uulurai:., u programa du consumidor lo! ~emc lhant e. Em primeiro lugar é feilo 1.1111 teste (C I) para vcr ~e () huffer c~ t li \üí' io. Se e~ti "er, não há nenhum Imbalho para o eO Il~ull1idor raz!! r, púrHI1I10 cle vai dnonir. Se I) huffer não e~ li "e r v:l/iu, d e re tira o próx imo mí lllef{) a ser impn:sso (C2) e incrcmcllta 1/11/ «('3). Se flW e~ ti ve r dlla~ ))osiçõt:~ li f!"c lll.: dI:! i/J Ilc!\se 11I.Itlto (C4), d e deveri:\ c~ t,l r uma posição ti fre nte de;1I an t e~ de ser incre mentado de~:.a líltima veL Cumo ;/. -" 0 111 - I é 11 condi ~~ão ·hutTer cheiu', o produtor lI!!vi,1 estar dMlllindo e , PlJnanlo, rl cunsumidor o acord.1 cmu re.UIlfIC. Pnr lim, () mimem é imprc:sso (C5) e o cldu lie repelI!. InfclilJllenlC, c:.~e projeto cOlllém lima falha fatal, como Ihl~ trado na l1igura 6 .25. Lcmhrc·se lte ljllC os dois pmcc~~()~ eXCl:utalll \elll sincronia c li veJocldadc~ IlO~sjve hne n[ c variáveb. CllJlsidere () C ,, ~{l e m (Iue )obra somen· te um número nn !'urlrel", na en lrada 2 1, C ;II - 22 c out ::::; 2 1. como Illo!\tra a Figura 6.25(:1) . O produtor eSI ~ na
..•
o
., Produtor fI!II PS
Produtor em PI consumidor em C5 99
••o ~
•o ~
8 o
u
•
~
•
-
"•
flgur.0.25 1"01 11(\ do mecanismo de comunicaçi!o
produtor-consumidor
In - 22 OUI _2 1
99
Sulfar
.
In .. Out _ 22
.
,
Produtor e m PI COIlsum!dor em C t
~
.
In _ 23 -
V8Z'o
Ou! _22
envlll um sinal de desperla'llo comlUrnldor em C l
.
. .
Pruno
Primo 1
1 numero
nú~ero
no burral (,)
no bllller
,. L_.....J
O
("
o o
-•
~
o ~ ~
• N
C
•
~
o
,'
c5 il11prilll imhl o 111írl1cro !lH pu~ i lfào 20. O consumidor Icnnina de il11prim ir o número, rU7. o teste em C I e retira o lílli1l1o m 'l lllCTtI do buffcr em e2. EI11ào illcrcmcnla o ul . Nesse instante, amhos.;/I c 0/11. têm o \'alor 22. O consumidor imprime o número e e m seguida vai para C I. onde busca ;/1 e o u/ nu memória par:1 compará-los . como IlIustra a Fig ura 6.25(b). Nesse exato momcnto, ap6s o consumidor ter bu seado;n c O /fl , mas antes de tê- Ioli comp:lrado. o produtor acha o próx imo mimem primo, coloca o níul1ero no burrcr e m 1'3 c incrclllcnt:l ;11 em 1'4. Agora. i/1 = 23 e 0 111 = 22. Em P5 o produtor descobre que;1I = I/exf (u m ). Em outras paluvrali. i n é 1 a I1w i s do m,f, o que sig ni fi ca que agora h ~ um itcm no burfer. Por conseguinte , () produtor conclui (incorrctamentc) SIIIII t», CUI110 1110Stra a figura 6.25(c). Clnro (llle o consumidor ainda está acordado, portanto o sinal de despertar é perd ido . O produtor COI1lCÇU a prOCllrilr () pró~imo númcro primo. N e~sc instante. o consumidor continua. Ele j ú b lL ~C (lU ;', e UIII na memó ria ant e~ tllte n produtor colocasse o lí1limo mímero no buffcr. Como ambos têm o \':llo r 22. o COllsumidor vai dormir. Agora II produto r acha um novo nlÍme ro primo, Vcrifica os pontc i ro.~ c c ncontra in = 24 e oU! = 22, punanlo (,lltcnde 4\1c hrt dois números no burfe r (verdadel e que o consumidor está aconlado (fal so). O produtor continua cm laço ;llé que . por fint o enc hc () buffer c vai dorm ir. Agora ambos os proces~m; estão dormindo e nss im ficarão para sempre, Ncsse caso, a dificuldnde é Iluc, entre o instante cm que o consumidor buscou ;n c UIII c o illSllUlIC cm que foi dormir. () produttll' se e~!!.\Ieim\l para dcntro du burfcr, descobriu que ;/1 = OI/I + I. cnll'ndcu que o consumidor esta\ta dormindo (mas c le aimln não estava) e enviou um Sitlllllk dcspcrlar que foi perdido PUI'(llIC o Clln ~ ul1litlor ainda estava acordado. E~sa dificuldadc é conhecida como condição de dis puta, purque o sucessu du método depcnde de (Iuem vel1ce a corrida paUl testar ill e um após 0 111 tcr sitio incrementado. O problelllll das cnndiçücs dc disputa é bem conhccitlo. Na verdatle é tão sério que, v(j rios anos apó" a int.-o· t.Iução da ling ullgem JaviI,:1 5un !IIlHJOU a classe Tltread. c removeu il S chamadas ,w sf! f'lId e rI'.m me porque levavam a condiçõcs de disputa cOllllanta freqü êncin . A solução oferecida fo i urna solllljão ha ~c ad a 1Illlinguagem mas. cumu aqui eSHlIllOS estullando sistemas opcraci0l1:lis. di scutirelllos uma outra solução supo rtada por IIIUitOS sislemas (lpe· rac jonai ~. incluindo UN IX c Xl'. dcc lurm;ão P 1 prol'tlnl11do um número primo c o consumidor está ocupndo em
6.3.3 Sincronização de processos usando semáforos A coudição t.Ic di sputa pode ser rcsolvida por no IIIC Il()~ dois IIIOU05. Uma !loluçiln cO II ~ i ~ t e e m etluipar eada processo C01ll um 'bit de e.~ pcra pal'a despertar', Sl'mpre
Tallela 0 .2
Semâforo " O
Ur
Down
,...tO
Efeito de uma operação de semáforo.
Semáforo = sernlitoro + I; Iie o outrO processo foi Interrompido na tentaUva de concluir uma insUUção down nesse semáforo, agora ele pode concluir down e continuar e18cutando
N
Semáforo> O
Semátoro = semãforo
+
I
Plocesso para até que o oulro processo IlreC\lle uma instrução \IP /lesse samá· Semáforo "" semáforo - I foro
•
"uo
•" •o.
o
•e
• • • •o
~
A il1l>tnu;ào up I t'rilh:a I>~ () ~I: I1IMllm c:~lá 1: 111 O. Se cstiver, II Oull'll pl'Dcel>soc~tá dormindo nde e u ~emáfllm é alllllelll ado de I. O proce~~n IluC e~ t .í dormindo então pode! concluir ôlllpl.'nu;ão down qm; u ~ n s pl.'lIdeu, reajusHwdo o ~enll1fow P,II';I U t! pernlllindo que mnhos os proce~~ll~ eontinllclII . Unm instl'Ução up c:m um I>l.'lI1áforo ljlll.' n;in e~tá em Lert) ~imple~Jl1en tc I) alllllenla de I. Em e s~c nda, um semáforo Ilroporciona um contador para annalc![l:Ir sinais tle de~llC l1a r para IItllil'U.,ão fUlura , de modo que ele~ não sejam perdidos, Uma propriedade l·,~encia l lle inlotmçõe ~ dc I>emáforo Cyue, lão logo um proce.ssn tenha iniciado urna inslmção ClIlllm semáforo, ncnhum oulro pmc~!>so pode aCCS~ilr o 'I:máforo até que o primeiro lI.:ulm conclurdtl sua in~lnl,,·ãu ou lenha !>ido ~u~l>ensn quando lcnt;II U executar ulHa ill'lrução down cm UI11 O. A Tahchl 6.2 resume as propriedudes es~c.nciub da ... chalLladus de ~istcH1a up c down. Cumo IIh.!nc1onamm anle~, Java lem lima I>olução b;ssclldn em linguagem para lidar t..:OIlI cn ndi~:Õt.:s de db.pu· la e agnra c!)IlIIllOlo di ,cutindn :--i:--tClllilS operacionais. I)M isso, pn.:cil>;uno) de um modo paru expreSSlir lIIi1izaçãu lle ~CIll.trUro~ elll Ja\il, ;linda qtl\! clc nllo estejilllH Ii ngungcllI nem nas clnSloes padronit:ldas. Vnmos fazer is~o admi tindo que fOTaIll Cl>erilOS doi:-- método) nativol>, UI' e f/Oh 'II, 'jUC fazem IIS chllllladlls de loi!>tema up c down, rc~p(.'Cli · \illllentc . Exc{'lIIandn c~) ,, !> lh;ulla(\u) com iutciru~ ordinários como parBmelros, tClllll~ UIll modo lIe cxpn:ssar a uti· lilação de M!U1Mnro) CIU ]lrngnulla.~ Java, A Figura 6.26 mOl>lra eomo a cond ição de disputa pode ~er eliminada por meio da ulilizaçliu de semáforos. Doi~ ~emMurll~ ,ào ac rc~ cc ll t ud()s li classe m: (H'"i/(I!Jle, que é inicialmente 100 (o tamanho do buffcr). cfilled, qUe é inidnhucnte O O pmdutllr cumeça executando em PI na Figura 6.26 e n consumidor L.!omeça executando em CI como antc~ . A ch;mHldil (/(M/I emjille(/ pára o proceslolltfor consumidor imediatalllenh:. Quando o pmduIOf tIver cucontr,ldllll primeiro nlÍmero primo, chama (1011'11 lendo (II'ai/IIMe COIIIO parâmetro, :lj\l~lando ami/n· bit, para 91) . I:..nl P5 dc t!h"III'1 "11 tendo fille(1 como par5m ~lro, falcl1l lo filiei/ igual a 1. E~Ml açiln lihcra o consumidor, que agura jllldl.' coudu ir ~ua dHl.rnada (/011'/1 que t!~t;\V1I su~ pe n~a . Nesse pllII\() , jilled é O e ambth o~ prucf.!s~ns e~tãn exccutando. Agom vamolo reexmnin:lr ti condição de disputa, Em \1111 ceno instante, h, = 22, OUl = 2 1, (l pm(hlll1r está c!1lI PI e o cll1\~ulllidur Cl>tá CUl C5. O cnn.'.ulllidor Ic!nninn o quc e:--ta":t f;llendo e chcga a C I, onde chama dml'lI cm jilli't/, que tinha o v:llur 1 01111..:) lI,1 dlilmada e () após li dmmada. Emão o consumidor retim lIlíltilllO mimem ,lo hulfc!r e f1UIIlCl1ta (ll'fli/(lhle, que pa..:-.ll pdr.. I(XI. O ,:ollSlIInidor imprime o mímcro c vai para C I. Um IXIUCO antes dc o COIISulllidor poder chamar dllll'lI , 11 proclhtor encontnl o próximo primo e execUla as declaraçõcs 1>2, P3 c P4 cm rápitlll sllcessfio. Ncs~e pOIlIIl, jillcd c;: O. O prOcnt ujustalln para I e o con· I>umiduf nãu ~eni MI~pcn~o de !iludI) algum. Em amhS, ncnhum si nal de desllCI1ar licu l)Crdido. É claro quc CSI>:t cra no:.~ Ill.:ta lluandu HlI rodllzinltl~ I>cmáforos. A propriedmle c ~l>l.' ncial d".'. tlpera~õe~ de sem:1fnl'O é que elu~ loão indivisíveis. Unm VCl inidada lima 0ller.!· ~âo de !oCmáfortl, nenhum Oulro ]lrucessu pode usar o semáforo até que o pri meiro pmccssu tenlm concluídu a upcraçàn ou cutiio Icu ha ~ idl1 ML:.p..:nsn nll tc!lItaliva. ALl..:llla is, com semáforos, não se perdem si nais dc despertar. Pm cllHlpllmç;in, ll~ declafJ.çi\el> if tlu Figura 6.24 não sllo indivhíveis. E n tr~ a avaliaç:1o da condição e a execlII;ãl1 du tledurnçi'lu l\clc\:lIl1l;ul.l, UIII outro prOCCS~(J j>odc enviur 11111 ~illal de dCl>pertar. N,I \-erdhde, l) plOhl': llIu da sillcronilação de p rncc~M) foi diminallu declarando (Iue alo challl:lda~ de ~i~lellla up e down Iclla~ 1)1)1' IIp e dOI'" ~ãll indi\ i sívd~ . Para ljU": c~l>as operações loejam indivisívd s, o l>i~ t cllla operacional dt!\'c proibir que d('li~ IIU mailo jlmce:.!'>os usem () mcsmo ~t! IllMoro ao mesmll It!lIlpO. No mfnimo, unia vez feita LIma dt:lmadu d..: I>i~w llli~Iemlb COLllIlIU líll1r.:O processador, às velCS são impl ~ llI e llt;ld(ls scmáfoms pela desabilitação de inter· rUPltocl> dllrlLnt..: ul>el'açi'lel> de ~cIllMm'U. Em sistclLlus lllllltiprocessmlores, esse cstratag..:mu não funci ona. SilLeJ'Onilll\,:i'h) ptlr I>..:máflll'os é uma técnica (IIIC funcionn para (IUlIlqucr mímc!ro !Irbil rário de processos. Váriolo PNt:":)I>US poJ em C~l:Jr dormimlu, tentando cuncluir umll c hamnda de sistema down no iIIcsmo semáforo. QU;lIIdn, por fill\. algum outro proccl»() excculil uma up ll:Ltjuclc semáforo, um dos prnces~os que e~ t á 11 cspem obtém per_ Illissão de cundllir ~'hL down e cul11inuar c!xecutnndn. O valor do ~e ll\Mom pe rmnncce O c os outros pmcc s~ns ";011tinlwnl e~p.:nlnd\l .
~
,
.• a
'"
•> z
....
Uma analogia pod~ c~d:t/'cccr melhor li nnUlrez" Jus !'c IlIMoros. Imagine U1I1 piljul'niquc com 20 lime!' de voleib\1 1 di\';dido~ em 1U j og05 (processos), cada lime jogundo em StlU pl'ópria quadra. c um gnmdc (CJ;to (o ~e rulí
•""
7 bolas "0 cesto (o semáforo lem um valor entre Oe 7,. Colocar uma OOlll no çesto é urna up por
'" o
u
,• ~
8
o u
fmu) que contém
U~
bolas do jogo. Infeliz.rnCTlle. h;\ ;lpcnas 7 ]xlll1s disponfvcis. Em qualquer im'lanlt" há l'Ulrc O e
down). Seus jogos são susp ensos temporarialllenle. Em um dado instante. um dO$ outru~ jO!!OS termina e UIlI
é uevoJ vida ao cesto (eXI:!C tllil uma up) . EsS,I opcra~~rlO perm ile que um dus trê s jog
(mais duas up silo exccu\U
que fil ais duas holas sejam devolvidas ao ccstu. QUilnd o os d ois líltil1l(ls jllgU~ plxJem prnsseguir.
public CIASS til ! final publk: slalic Inl BUF. SIZE .. 100: final publlc stetlc long MAx...PRIME '" iOOOOOOOOOQOL: publlc stallc Int In '"' 0, oul " O; pubtlc slatlc loog bullar!] '" new long[BUF_SIZE]: public slalie prodUC9r p: public slalic (;onsumer c; publie stalic inl filled:: 0, available '" 100:
"
~
o
••
~
• •
Jl1:li.o; dua.o; hnla.o; vol!arc1l1
/I burfar vai de O '" 99 /I pare aqui
fi pontehos para os dados
/I primos armazenados aqui 11 nome do proclu!or /( nome do consumidor fi semáforos
N
publlc stalle vold maln(String args[ J) l I / c l a s s e principal p " new producer( ); /I crie o produtor c'" new consumer{ ): /I crie o consumidor p.slart{ ): fi inicie o produlor c.start( ); /I inicie o consumidor
C
~
o"
/I Essa é um funçÃo para incrementar in e oul cicliearnente public staUc Inl nexl(!nl k) (11 (k <: BUF _SIZE - I) return{k+I): else retumlOl:}
flllura 8.28 Processamento paralelo usando sermiforos.
class producer e~tends Thre ad ( nallve vold up(lnt sI: nafille void down{int sI: public void run{ ) ( long prime" 2; whila (prime <: m.MA>LPAIME) ( prime ~ nex! prime(prlme): down{m.Allailable): m.bllffertm .inJ '" prime: m.in = m.ne~t(m . ln): up(m.lllled):
/I declaração P 1
1/ declaração P2 /I declaração P3 /I declaração P4 /I declaração PS
privale long nexLprlme(long prlme)( .. )
CI(lSS eonsumer exlends Thread ( native vold up{lnl sI: native vold downltnl sI; public void run( ) I long emirp = 2; whlle (emlrp <: m.MAX_PRIME) ( downlm.lilled); emirp .. m.burler{m.oul]: m.oUI" m.nexf(m.out): up{m.available): System.out.prlnlln(emlrp):
6.4
11 classe produlor /I métodos em semáforos /I código produlo! 11 variável transitória
/I função que calcula o próximo primo
1/ classa consumidor /I métodos em semáforos /I código consumidor 11 variávellransit óriA
/I declaração C 1 /I declaração C2 /I declaração C3 /I declaração C4 1/ declaração C5
Exemplos de sistemas operacionais Nc~ ta ~c~iio CO!1 limlilrcrno~
a discutir nossos
exet1lp l n.~
de ~islem " s. () I'Crlt iurn 4 c 11 UllraSPA RC 111 . Para
c ad ~,
11m examinurelllllS um si stema operacional u sado l1a«(uc!c proccs~adtlr. No caso til) Pcn tiu1l1 d. usaremos o \Vindtl\V~
XI' (denominado XP daqui em di,u1te. para abreviar): pam a UllraSPARC UI tI~aremo ~ o UN IX . Urna vcz l/tlC o UN IX é rrmis .. implcs e. ~(lb muit(l~ a~pectos. mais elegante, começarelllos COI11 ele. t\{!c!lmi~. I) UN IX foi projetado e i mplementado em pr;t1le;ro 111gare leve granJe inn uência no X P. p0l131110 es.o;a ordem 3 ord em
inversil.
raz
r1l<,i.o; sentid o
dn que
6.4.1 Introdução Nesta :>e~: ão ltilreJl10~ lima breve introdução de 1l0S~OS dois exemplos de sistemas o[lCrncio nUl s, UN I X c X I',
focaJizlJJulo il
hi~1 6 1
ia. iI C:.lJ"ulunt e as chamadas de sislema.
UNIX
•c
o UN IX fo i dl,:~el1\'olvido no Reli
Lahs no início da décmhl de 1910. /I. primeira ven;ão foi t:~cri la por Kcn 'I1Ulmp ~!HI em '1~~ell1hlí:r para o minicompuludor PDP-7, que foi logo seguidn por lImu versão para () PDP· tl , escri · t8 I!IH ullIa IIl1va linguagem dcnnmimlda C. {lue foi inveJ\l adu c illlplelllCnH1dfl por Dennis RilChic. Em 1974, Rih.;hie e :>cu colega. KCII Tholllp~OIl, publicaram um artigo sobre o UNIX ( Ri tchi c e Tholl1p~oll . J 974)
'lt!!!
marcou época.
Mai:. lard e.cle~ reccherum o prc:.tigioso prêmio ACM Turing AWllrd (Rirchic. 1984; Tho1l11hOJl. 1984) [}(! Io lrnhalh(l que dC:>CI'cvt::ralll nc~~e artigo. A publicayào du art igo estimu lou muitils uni ve r~id [tdt:s u pedir Lima cópia do UN IX an Ad l l ..,b,). Uma Vel. que, I1U época, li AT&T, empresa lllutriJ.: do Bell Labs. em um monopólio rcgu hJ.l1lcntudo c nilo ti nha p~ Jll1i.,~iio para :lIunr 110 negócio de computadores, eln ni"io se opÔs a Hccnciar o UN IX para uni ver~ idades , medianLe uma m ode ~ta taxa. Por UUla d c~sa~ COlne ldê.l1cia~ que muitas vezes moldam a hi stória, n PDP- I I cra o computador pretl!rido dlls dcpartamcnln~ de CIência da computaçiio de quase todas a~ uni\'crsidades. c os sistemas (lpt.:raciollaj~ que acnmpanhavam u PJ)I~- Il linham grande fama de 1(;l1"i"eis, talllo ent re prnfessnres qmllllo entre alunos. O UNIX rapidaml!nle preencheu e ~ ~e vHeuo, além 110 mai~ era fnrneeid o com n cüdigo-fmlle complelo, o que permilia que todos fi/ C~ S Clll c,," perilllelll os intenni llllveis com cl e. Uma (Ia ~ nllli!a~ univl!hidades que adquirilt Ulll UNIX logo de início foi li Unive r~ ida (k da C'al if()rnia cm Ber\..dey. ("onul () código-fome complcHl eSlaya c!i ~ pojlívd , Berkdcy conseguiu faler alteraçõe~ suhstanciai!> no programa . A~ Jll ni~ impon anles f(lrao, umu vcr~iío para O m j [l ko mpllla~lor VA X e a adição de memóriu vÍl1ual pagiIlOde lrocar d ll(:l O~ cm ambas ti ~ djreçik~ por meio dt::~ s n conexllo, normalmente usando o protocolo TCP/IP. Visto que u tecnolog ia de rede ex i ~ l e nn UN IX há
o
u
•
"•
~
o
•e
• "
00
•
~
•
,o
.•
O'
~
w
o
• ~
•
"
Tabola 8.3
Divisão aproxi mada de chamadas de sistema do UNIX.
( '"tl'~orhl
••
o"
'd
,•
AIJ.!lIlts I'xl;'mplns
ÚercllI;iilnlCnto de nrquivo
Abrir, ler. es\:rcvcr, fcchur c bloquear arquivos
GCrCnciaménto úe dil:ct6rio
Criar c apagar diretórios; mover urqujvos de um lado para outro
Gerenciamento tle processo
Gerar, encerrar, monitorar e sinal i7.:\r processos proce sso~ ;
Gerel1cirullcnto de Ulemõda
Compartilhar IIlcrilúria entre
8 o u
Oblcr/ajust.ar parâmetros
Ohter lO de uswírio. gnrpo, processo: aj ustar prillnlhule
• • ,•"
Datas c borários
I\ju .~ta r horários de acesso a HnlUivos: execm;i\o de perfi I
Rede
Estabelcccr!m:cilar conexão: cl1viar/rccclJcr mensagens
Divcrsm
Habilitar contabilidade; lI1ànipular cotas de disco; reiniciar O sistemn
~
'd 'd
, "
•
~
o ~ ~
•
" •"rn o"
pruteger págirHl'S
lI ~ nr
temporinldor de intervalo:
Como lul 1I1uitm; il1lplC:lIleI11aç'õe~ de UNIX. é dirfcil db'.cr muita coisa ~(Jbre a e ~t r1ltll!1\ dt , ~i S l e rna operaciOlllll. visto que cada uma é UII1 pouco diferente de todas as outras. Todavia. em geral. a Figum 6.21 se aplka 1\ lI1aioria delas. Na parte de baixo há lima e:\JI1ada de drivers de dispositivo que separ;ull o si ~ t ell1
Stlell
Progl ama lJSIJá110
I
I
Elltnttuta dtl UIII sistema UN!X tlpieo.
Oel e,ldilHlE1I\to ôe processo
Sls rema de erqvlVQ'
I Cacfle de blocos I Ofivl'r!l de dl ~pos~lvo
I I
,PC Sinais
Hardwlve
usuirro
f
Illterloce 00 chomllda do Si9 roma
Figura 0 .21
M<>do
I 1 I I
I I I
Escalons rnerllO Oelllrldllmelllo de memória
I
Mod,
mick!o
Windows XP Quandu rüi hlll\:ado em 1<)81, o IIlM PC original vinha cqui l)uc!n com um
~b'cJII:L Opt~raci{)na l
de 16 bits, de
modu rcõ.l! , u,miriu LlIIII•.:O, ha:.c;ulu elll linhas de comando, denolllinado MS-DOS 1.0. ESMO: si ... lcma operacional COH:.i~tia em Il KU l.k ludigo de lllelll~ria residcme. I:x,is anos depois .•lptlft!CCU UIlI si~tcma Illuilnlllais podem~o. de 2-1 KB , 11 MS· I)()!\ 20, (11Ie ,,;untinha um prOlXssador de linha de contando (shell), com várias camclcrhlku:. éLllpn:~ladall du UNIX . Quando ti IBM lançou o PC/AT. lm:.t!ado JlO 2K6, em l!)k4, cle VCIO e'luipado com o to. 1SDOS 3.11, cul511 cmu :In KH AlllolIgo dos anos. o MS-DOS cnntinullu a incorporar nO\'as camclerislicas, mal> ainda em um sist('Jl\l1 hil.'>cillln em linhas de comando. Il1spiraJu pelu llUl':Cll!>O do Appk Macinlo!>h, a Microsoft clt!cidiu dar ao MS-DOS unm illlcrface gráfica de uMuíno, 1'1 qU:l1 dcu 11 1101111': dc Wi ndows. As primeiras Irêlo \'ersõeli do Wi ndow~, culm inilndo IlO Windows 3."" nilo eram ~i~tetllalo lIj1crm. JOllail> venl:u.lt:iros, mal> /llIerfacl::) grálicas de usuário l>ohrc o MS-DOS , que ainda eSlava no cl1l11nlle tia múquitw 'Iodo~ o prognullas elleCll!,lValll no mcsmo cspaço de cmlcrerro e um hu); I::nJ (llIílllI11I;:r um deles 1)()I!l:ri ,1 fuzcr todo t) ~i~temll paror de vei.. O lançamento do Willdow~ 95 em 1995 ainda nfln ditnillou n MS -DOS, eJlthot'.t 1enlm in1rodulitlo uma novu versão, 7.0. Junto~, o Windows 95 c o MS-DOS 7.0 conlinham gmnde pal'1 e dn.'> cametcrís t icu ~ IIc It Ill :.i~lc lll a npcr.ldonal tlll:t IIllCtlh.: del>cnvlllvido, inr.:Juindo memória vinual, gcrcncimllclllO de processo e muhipmgr.lIlltlção. Toclnvin, Il WilldO\v~ 95 tI;lU Cfll ulll pl'ogt'l.II1l!.t de 32 bi ts cnmplt:!lll. Cont iuha grundcs pOJ'~ÕClo do anligo código de 16 bi ls (bem como algun!> cóJigo~ de 32 bit!» e ainda USIMI t) si~lellla cle arqui\'o~ do MS-DOS, COIII quuse tudas as suas limituçõcs. Alo ímica~ mudança., llllpOllltlllCS no sistelllll L1e arqu i vú~ rOt:un a adição de nomes de arquivo longos no lugurdo~ nomes dI! arquivu de 8 + 3 caruclCI'CS [>I!rmilidos em MS-DOS, e a capacidade de ter mais de 65.536 blocos em um dil>co. Melo/Ilo eom li lanç.ullt:nto do Windows 98 em 1998, o MS-DOS cOlllinuuvu lá (agmu na versão 7.1) e execlIWVil cóJigu lI!.: 16 bit,... Embom um pouco mais de funcionalidade Icnha migmelo da pAne do MS-DOS par..t a pane do Wjlldtlw~, c Ulll ldaute de di!>cu 'ldequadu pard diloCO.'> maiure.'> agom fo~se padrão, cm cSJ.ência o Window~ I)~ nilll 1!r.1 lillllhl diferellh! do Willdows 95. A pnncipal diferença cm a intcrface de usuário, (Iue promovia uma integração mllh elolrdlU cmrc 11 computador, a Imernet c a tdeviloão. Fui exalUmCllle e!>.'>1l itllegm~ão que atraiu a àlcn~ãu tlfI Dcp;u·t:ll11elltu dc JUlotiça cio.'> EStados Unidos, (l U.:! cmruu com mil prOf,;e~s() judicial cnnlm a Microsofl alcgandllljue 11 cmprc.'>:t t!r.lllm monopólio iJcgal. O Windows 98 foi scgu ido pelo Winduws Millenniulll Edition (ME), de cunu \ ida, ljue em um Windows 98 ligeirümente mel horado. Emluanw ocorriam lodo!> eSlles desen\'olvimcnIOS, a Microsoftluml>ém se ocupava de um ~is l ema o~raci0l1il1 de 32 bit), \!Ilmplctamenle novo, que cstuva sendu escri to a partir do zero. Esse novo sistema foi denominado Wi llcl lm s Nc\\ TcchIlUIIl/,\y, IlU Windows NT. De início, CSlol! si~lenm el1l :lpen:ls uma .'>Ilb~ti t uição llIélhorudil de tOt.llllo os oUIJ'n~ ~i~ t enllls o]>crocionais para PCs com proct:lIsildores IlItel; porém, por ulgulll'! ralão, demorou um pouco p:lra engrenar, C lIIai:. tnrdc fo i redirecionado para li fui",,, de merendo de maior podcr aquisitivo, '>lide encuntrou um ni4:ho. A !tegunda \· e r~5n ([o NT foi dcnomin:ttla Wi lldows 2ClOO e \(l rn ll ll -~e a versão principal, também para () Illet'eadn d\! cOIl1JlllladClres dc mesa. O lo UCeSloOf do Wi ndows 2000 foi tl XP, ItlUS as ahcraçõc.'> furam rdativlltncJlte miIllÍb.clI lu!t. () XI-' é, cm e~sa tlcia, um Wi ndows 2(}ÜO 1igciralllc/11e md hMado. O XP é \ clIllidll CJlI dlln~ \·crsõc!>: sCl'vidm e cliente. Es~as duas vcrllõcs são quu~c idênticas I! gcr:tcrl'idures de arquivo e 1Il1[lre!t~{ju ha~eud o~ em I./\N e têm carac lcrl~ticalo de gltrencialllcntll IIlIt IS elabora.las du (Iue a \'C i'~iio cliente, "I"C é dirigida para eomp u tadllrc~ de t1Il::sa de.:: um ~6 ulou:1rio. A vltn.ão sltrvitlnr Iltm unia vuriUl1le (clllpre!tarial) dirigida a ~ral1dc!> t'edc~ . A~ \i'ln.l:' \ ChÕCS têm ajusu:lo diferentc!>, c'lda uma mimi ... adn para 11 nmhiel1lc prctendido. Exceto I)or e!>~al> 1)C"luclla~ dife rcn~i1lo, rodas as versões são. em essêl1cia, as I11ItMmlS. Na verdade, quuslt lotlus u.'> anjllivos executávei!> .'>àn ideJ\lI~ II~ em IlIdas a.'> VCfsõcS. O próprio XP t.lelocobre de que versão é (:onSllltando uma varilível em uma .:~ t nllllnl de 11;1110' int.:rna (n registro). A licença não permite que o~ usuários mudcm essa V'olriávd e, com i~SI), convertam a vcr~ã(l dil'/l/c (hamta) em v.:rsÕt:s ~'t:n'iflor nu elllpI'f'.WI";(I/ (muito l11i1is ear.Js). O ligados simu hal1cumcnle Jlor IIIl1Urede, cmla IItIl aeCloSlmcio ...eu . . pnSprill.'> an\lli\o~ . O XI' é 11111 \cldadeiro loi~tel1la 0l>cmcional de 32 hi t ~ com IIllll t iprngramll~iiu. SUllOna vá rio~ pnX:t:s:.o!> U~\I~ riol>, cada qual com UIIl e~pa~:o de CIlt!Cfq :O villual completo de 32 bits paginado por dem.mda. Além do 11mb, li próprio :.blerlHl C illlcir,l l11cllh~ elocrilO como código de 32 hits. lJlIlU du.'> rndhlJl'Íalo originais do NT em rclayuo !l1l Wimlllws 9~ fui sua c~ll'lI tll ra Hl(lthl lar. Consistiu em UIII lIlideu l1lodel':ulllmel1le l'lCquello que exccul avlt Ctn modo n!'telen, mllis vários processos servidores (Iue exeCulaVlltl1 el1l Ilwdo u!>uário. Proce~~IIS tlsmirios intcmgiam com os processos servidores usando u modelo clienle-scrvidtlt': um clienle cnvinva \1111<1 J'1lcnsagcm de requisição a um ~erv i J C)r, e o servidor rCl1liillVa o lranalllo é rClOrnavu (I rc~u l tado pam n cl ieute pllr meill de uma ~eg unda mensagem. Essa estl'lItura 1I10d u!;lI' f:lcililava sua migração para váriu!> cUl11pulltdor.:~ ;llél1llh)~ da linha Intel. entre os quais DEC Alpha, 113M l}uwcrPC c SO l M1PS, COl1lUdll, por lI"e~ tão de de~e111pellhll , a panir dn NT 4.0, Brande pane di) sistema foi c()lncadn ,li:: vol ta 110 lIucleo. Poclerlnll\olo culllinuar a di~cu tir por longo tétllJXl a c~lnllllrJ intenta di) XI' t: também Mia interface de chamada dc ~Í!> tcma. ]>I)rérn, ":Wlltl no~~t) illtcrc~!oC primordial é a máquina virtual apresentada I)(lr vários sistemas opc!r.lcinnais.
• "uo • •
~
o
•e
• • •
~
~
• ,"
.•
~
" •
>
z
~
•
o
g
I Programa Win32 I
N
II
I
I Subsistema Wln32 I
•o" ~
8 o u
• ,•"
~
, "
IJ8ulirlo
Interface de sistema
~
,•
Modo
I
Figura 8.28 EstrutuHI do
",~i~n~d~,:w~s~XP".,-_____
-
J
Servlços,1e AishJma e.ecut!\IO
1-
Cacne de Memória Proce~_ arquivo vlrlual e threads
Si~!~:~1
de ar
UMl
SegUfilJlÇ6
Gerenciamento de ob)elo
Drlvers de dlsposillV'O
I
Nticjeo
Cllm8da de IIbtitração de hardware fialdwnre
I
Wln32
"
Modo
Interface
micleo
grállca de dispositivo
I
"
~
'. o
~
• " •m"
" O
isto é. as chamadas de s i ~ lcllla . faremos ;J pena.~ unlc ndenlc do hardwure c . por is~o. de alta portabilidade. O míc leo reside pcn nUllelltclIlCTltc lia memórin principal e não pode sofrt'r pree11lpção. e mbora possa entregar 11 controle temporarimncnte par;\ atender int e rrup~õcs Ile EIS. C ada d rivcr d e dispos iti vo pode controlar um 0\1 Inais J isposit ivos de FJS, I1U1S um drivcr de disposit iv() tcr o sistema. Por essa razão, O~ tlri\'cr~ devem <;cr e~crito~ com llIuito cuidado. Acima dlllllíc1eo c dos dri vers de di ~p\)sitivo estú ;1 porçilo superior do sistema opcracionul. llenominau(I executi vo. O exccuti vo é illdel'cndentc de arqu itctura e pode ser portado pura novas m(iquinas com um c~forço rdati vumente I>cqueno. Ele cUJlsiste em treS c:unada:;. A cmnada mais baixa contém os lIistcll1as de arqllivl)~ o gerenciador de ohjelo. Os s iste m as de IlrtlUivo ~lI l>o r· tam a utilizaçiio de nrqlli\'os e diretórios. O ~e rcllci:ldur clt, nhjl'to manipu la objetos cunhecido~ pelo núcleo. Entre eles, pmeesso~ . threads (processos leves dentro de UIll espaço de endereço), arqui vos, di rct 6ri (l~, ~elHárllros. disposiliv()~ de E'lS, tempori;:adorcs e muitos t)utrnll. O gerencindor de objeto também administra 11m e~ p;I(;1l de nomes I1U {IUal objetos recélll·t·riadn,~ podem scr colocados de mod o que possam ser referenciado~ mais ta rde. A ca mada segui llle consiste em seis partes p rinciplli~. eomo mostra a Figum 6.2R O ~ ert' uciadlJr de EIS rornece uma estrutura para gerenciar di.~pos ili\'os de EiS e serv içus genéricos de EIS. Ele lI~a o~ serviçm do si~tc lll a de arquivos que, l}Or SU,I vez. usa os drivers de dispositivo. bem COIllO o~ sen'iços do gerem:: iad!J r de objeto, O ~e re ll ciadnr d e t'nc he de UI·tlllivlI estlí cllvolvido com o gerencia mento de b l oco~ de
ao la u
o gcrcndllclur de memória virtual imph:mcnta a arquitetura de 1ll~11l6riu virtllul dt,; paginação por dCJI1i1lllla do XP. 1~ 1c s"rem; llI () 1Il,I[}t!,ullcnlo de págiTla~ "irluui~ pnra quadros de J1[ígilla~ ff~it:a~ . IInr L!IlJlM!lliiênda, impi'lc ns regras de pt'OIc yiill que rC~lringclll c.ldil processo n ilces~ ar SOHU!IIIC as páginll~ que pertencem 11 M! U C:.p'HrO de endereço, c. mlo i' c~pa'il) de cndcn:I;o de muros proCC.IO~OS (exceto soh cin: un ~ldnc ia ~ c:.PCCi'lL!», Ele liLmhém muni pula ccrt'i:' cham.lllalo .h; :'11>ICI1111 rchlcionada:. cum 11 memória virtual. O i;~r~ndadur de prm:b.sus e thrcads Illllnipula prOCCS:»l1o c Ih~uds. incluillllo MUI criução e clc:.lmiçüo, Ele !>c prcucup.J com "1> IlICc.mhl1lIlS u:.:ldos p.lnl gCh.:nciá·lm. e não COIll 111. reglu:, de sua Ulili1.fi'idO. O IIlUnlttll" de .. crcrê llcia de seguranç.1l impõe o dahorado lI1ecul1 i.\Jl1o ele. segurullya do XI', que ohe(ll!ce ao~ re'lu i ~i tus C2 do Livro Laranja (Orange Book) dn Departamento de Defesa dos E~lUdtls Unidos. O Livro I.aranja e~pedfica um grande mhncru de regras à~ quais um si~temu deve obedecer, CIHIlCyll/Ulu com hlgin autentic:.lllu e o 1II0do de lllumpuJaç30 do cOlllrolc de uce:>so, e dlcgando até o fatn de que a~ pági nas viTlual~ dl!\'cm Ji.er Lcr:lda~ ante:> de ~\!r rcu liliLadas. A intnl'ace ),l rálica de dispusilivo manipula gcm.~ncialllentu.l..: imagem p;ira monitor c impTc!ssor.Js. Fomcce dlilll1acia:> de ~hlcm;1 (lue penni lcJll que programas lI~uári{)s c:.creV:t111 no 1Il01lllor uu em impre ~~or.ts tle JlllhlO independCnh! do disrn~i1ivn. Tamhém cOlllém os drh'crs dc dbposili vos de IlunJwaTc! para Silída gráfica. Em veht'le~ do XP uIII..:rinre:~ fi XP -UI, da eSlllva no espaço usuário, nlas o desempenho c:ra desapnl1l udor. purlUnlo a Microsoft a pa~!\ou pUni ucnlHl do nlideu pam aumentar a "elocidade. O 1l16dulo Wiu32 tambéllll1wllIpula gmmlc pane dilJi. chamad de :> i ~te nlôl Tilmbc!m de e:Slava nriginillmenlc em cspaçu lll! usuário e tambélll ele foi trnnsferillo pura li mkle!o pllfOl melhorar o desempenho. Em cimu di) e~ecutiv(l está uma tina cumuda dcnominada sCr\'lçus dc llislcma. Sua função é fomecer ullla interl~1ce pura ti ClIeeuli\'o. Ela aceita as verdildeims chmnaduil de ~iS h! ll1il XP e chama OUlntS purtes do executl\'o para que elas ~eja!l) ellcculudus. Fura do fIIkk·o e~ l 1itl O~ programas \J~u;lrio~ e tl ~lI lhi~tcl1la :HlIhiclllaL O suhsiSICllm ulllhlclIllIl t! f{)fll..:.;kto (lurque progr:lll1:lll LI ~uá riOil nào devem faLer chamadas de sislema diretamcnte (embom ~ejam tccnicamente capazes de fa/ ê-la:.). Em \ clo di:>~o, o s u b!\ i ~ t C1l1 a umbit;!lItul e~puna um conjul\ltI ele! challlud;JS de função 'lu..: os prog.rJma~ uSlláno~ potemas amhienlais, Win32 (paru NT. Windows 2000. XP ou iué mC ~lllI) Ilaril progr.tmas Windows 95/t)ISIME), POSIX (para programas UN IX qUI! foram pon adtls) e OS/2 (pam prngr"lI1a~ OS/2 {llle fnrlUn ponados}. Dl!s~es ..~oll1ente o Win32 é suportildo. Tndavia, ugora ex i~tc um novo II1I~thdo Se rvice~ para UNIX que dá lIIodeS1Cl suporte iHl UNIX . A]llicaçflCs Wint!ow:> u,am as fUllçõcs WI1132 c se comunicam cum 11 suh~islema Win32 pUnt fazcr challladrls de ~b l el11a . O subsbtcllla Win32 aceita as challlmlil!\ de função Win32 (vcr mai s adiante) e lI~a () módulo de biblioIt:ca de inl crraee de sistenm na verdade um :lr1luivo DLL (veja C:I]lftulo 7) - para f:lLer as \'crdadeira~ cha1l1adUll de l>i!\lema XP lIecc-,,:>árias para executá· Ias. é a~:>illl que Ull chillnadas de ~i:.lema Mlu fcita:. no XI'. Agora que já filemu!> 11111 cxu me resumido 1111 eSlnl\urõJ do XI', vamos vultar a nosso a~Sun lo principal , os ser\'içu~ oferet.!itloJi. pelo XP. Es:.a interface: é LI princip:ll con\!xàu do programador com n si~ t el1m. Inrdi/.menle, .1 Micrusufl Ilunc:\ r.:\'elnu ao ptlhlico ti Ii.'> t:! COlllpletll das chamadas de s i ~tcma do X P e altcra \!~sas chamadas a .;;u la vcr~ã{). Nc ~~a~ coml iy6e~ , e~c r\!\'c r progmmas quc faLcm chamadas de :>is[ema diretmllente é qllase illlpossrvel. O quc ,I MH.: rU~uft lú foi dcfinir um conjulllo dc c h :l lll ada~ denominado \Viu_H AI)I (AlljJlicütion Ilrllgrunllllínj,\ Inte rface - i;llerruce de prtlgrama'tão de aplicação) quc deu ao conhe:cimenln Iníblico. Sãu Pfl)cedimenl(}~ de hihli()léca IIU\! uu falem chamudas de sistema pam con.'>cgu ir 'lul! o lrab:tlho ~t!ja realiLíttln (lU . cm alguns Cll!\O:>, realí/um o Inlballtu diretamente 1\0 procedimenlo da hihlioteciI du espa~'n Ilc IIMlário ou no suhsi~le nlll Win32. A.~ chlllll:tdas da API Willn não Silll ít heradus em (lovas ediçõcs para prollllJ\'cr e~ t [lbilidade . COl1 tudo, tamhém há c hanlmla~ da API que podem JIludar Clllre ver~ões dc XP. Emllorilllemlol!as us chamllda~ da APi Win12 sejam ch:mlada~ de ~i~ lenHi XI', aqui é melhor focalizar CSSllS chamultas dll que li:> verúadeim~ chamadas de shtcma XP porqlh! a~ chamadas da API Win32 s50 bem dOCtHllenlnda~ c mais ~ I áve i l> un longo do tcmpo. Quandn n Windtlw.'> foi ponut1o paru máquinas de 64 bilS, a Micru~oft mudou () nOllle W;n32 p..1nt ahrungcr lunbas as ver~ffi!~ , de hit~ c 6-l hib. lIIa:>. p,ira nossu tinulidade, é sufici\!ntc c.\arninar il versão de 32 bits. A filu~o!ia da API Win32 é cnmplclUIlIe11lc diferente lia filosllfia UN IX. Nes:.a Iillimn . as ch:lIll1idils de ~i~te mn ~ãll llK.l:I:> conhcd dus du público e fOl'lll!l1l1 uma interface mrllimu : remover !linda quc umu ~ó tidas reduLirill 11 fundu1\lIlidllue do :. i~h':l1lu opemcional. A IiI\lSolill da Will32 é propordonur ulIla intcrl'uce milito uhrangelltc, {llIe mui [as vel.cs oferecc trê~ uu 4uatru modos de fuzcr a llleMnil coisa. e inclui llIuil, I'nK:eSSUS, Ihr.:l.ltl~. ':\\11\:~ÕC~ etc. liM.!.1 ehamooI!r usado parJ executar opcraçõe~ 110 objelo. Munipuladores !\3tlespccílicus Pill'U o proce~~o (Iue criou t) objclo ao qual o manipu lmlor se refere. Eles não IXldcm ser passados diretamenle para 11111 oulro prllCCSSO e ali ~erem usados (cX:llame l\le como dcscri t ore~ de urquivo UN IX n[io podem ~cr pussadns \l,ira um outro Jlr{lCc~~u e ali ~er\!m us'ldos). Contudo, l>oh certas circunstâncius é possível t1ulllicar um manil'uludor e pa~.,á - lu a nU\l'<)!) proccs:>tls de modo prort;!gido. pennitindo a eles acesso controlado 1\ ubjc\O~ que Ilertenç;lm li ()U1ro~ pmce~:>{h . 1'0110 uhjclo pode ler 11111 descritor de :>cgurança IIsstlciado li cle, que illfOl'lnll. C.!llI detalhes, quem pt~k I! '1uell1 lliiu polie cxeculnr quai s tipo~ de opcl"'Jçõc:~ no ohjelu.
n
<Xl N
•
"o u
•"
•o-
o
o-
•
u
N
<Xl
N
À", V~7e~ rJiJ.-sc (IUC U XI' é baseado em objNo~ PUnluC U Lín ico 111000 de manipu lar objeto," de nüdeo é ill\oCIII1t1n métooos (funçf)Cs AP1) com seus mani pul11dores. Jlor Olllm lado. raltam-lhe algllllla~ d .... propriedadc~ llI.. i~ btlsica.~ dl' <:. iSlemas baseadtls elll objetus. como herun\~ a c poli morfismo .
A Win32 API tumhém está disl)(Inf\'cJ em Windows 95/9K/ME -
bem CO l1l 0 nu ~il,lcm:l operacional de c4u1
••
p,nllenlos clclrô nkos de Cll l1 SU nlO , () Windows CE com um peque no num ero de CXCC\'4ic~ . P('Ir c'(cm pln. u Windows 95/98 n1i u tinhn nenhuma scgunlllça . portanto as chamadas da Arl relndonada .. com <;cgurallç'a limil a-
~
vam-se a rctt)rnur c(,di gos de e rro Ctn Windows 95/98. Além di sso. o." nomes de arqui vm XP u.. mll (l cnnj lll1h1 d l' caracteres Unicodc. que não estava di spo nfvel em Window:" 95/98. Também há dire rc ll ça~ em pa r5 l1l e t ro~ l1ilra algumas c hamadas de fUIl~·í1o A Pio No XP. IJOr exe mplo, todas as coordenuda!1. de leia d., d 'l ~ nl1~ funçlie .. gnHica~ ~ão lHímero$ vcrdudciros de.12 bits: em Windows 95/98, somel1!e 0$ 16 bi ts de ordem l"I:liX il CrDm u:,,;]do~ (para compatibilid:ldc com () Windows 3. 1). A exi$lênc ia da WinJ2 A PI e m vários ~isle ll 1(1'\ olJCraciona i'\ facilita por· t!lr programa0: entre eles. mas também sa lienlíl com mais clarezl1 que, de certa (onlln, ela e~tá dell\ incul:lllu dUll cha madas de si:"tcma.
"o
,• ~
8 o
"• ~
• ,•
~
,
0.4.2 Exemplos de memória virtual
"
Nesta sc~:ã() estudaremos a memória \'irt ualno UNIX e !lO XP. Em grande parte, tes do ponto de vistu do progrull1adnr.
•
~
'•.
c la ~ ~ã(l
hasl:mte
~c rnclh an
o
~
Memória virtual do UNIX
N
o modelo de mcmória do UNIX é .!'i mples. Cada proce~s(l tcm três segmentos: código, du d(J~ e pilha, corno ilust mdo nu Figul'a 6.29. Em uma máq ui na 1,:0 111 um únicu espa~'o de enderf!\"tl linear, (I código geralmente é colo· l'udo próximo ii parte de rnliJto d'l me m6ria. segu ido pelos dados. A pilha é ColOCllda na pm1c tle cima du IllCIl1(jria. U tamanho do cooigo é lixo. mas os dados e ti pi lha pudem crescer. até mesmo em dirt.:çüc'\ Upust;LS. E$se modelu r fácil de implemenlar em j>ratic:unente qualquer máq uina e é o modelu usado pelo Sulari, . Ademais. se 11 máquina ti\'er paginaçãLl. todo (l e~paç() de endereço pode ser pligi l1a~l o $c rn que os prog rarua ~ ,~c dêem conta d is~o. A unku coisa I]ue eles !lotam é que é permi lido ter Jlrograll1a~ maiore .. do Ilue a memória n.. i· ca da mátluina . .si~ t e m a~ UN IX qUe nãu têm pagilla\'ão em genlltf()Ça m processos i n t c iro~ e'l1tfe memória e di~co para permitir (\ tLC um mímero arhitrariamente grande ele pmccssus compartilhem u tempu da (, PU. No [aso dI) UN IX de Berkeley, li descriçãu :lllteriur - memória virtual paginada por (I!.:m;1I1da - é b;l~ica· mente toda a história. Todavia. o System V, e também n Solaris, incluem di versus C;1r.lctcrf~ l inl~ quc I>cnnitern au'\ usuários gerenciar sua IlIcIl1l5ria virttml de modos mais ~()fist iead os. A mais illlport;li\lC d c ht ~ c: u capncidade de Um pruce~"o mapear \1111 arqui\'o (panc de um arqui\'u) para parte de ~C\l cs ra~·o de cndereçu. Por c-.;elllplo, se um UfllUi · \ 'U de 12 KIl f(>r nHlpc'ldn no endereço virtuul 144 K. umu lcitllr.t para a palavra 110 cndcre~'o 144 KB lê il prime ira palu\'nI do anluivo. De~se modo. r.;s de arqu ivo pode ser rculiz.,da seI\! rarer chanmdas de S i ~ te"Hl . Unlil \'e7 que nlguns arquivus podcm uhrapassur o tamanho do espaçu dc endereço virtual, Iilmbém é pl.lS~f\'cI t1I"pCier ape n a~ IIt11<1 porl;ão de um n1"llui vtl cm ve7. de c le totlo, O mupcalllento é rcito em pri1l1c iro lugar nhrimlu o nnl ui vo e recehendll dc volt:, um d c~cri!O r de nnllLivo,Jd,
o
•
~
o"
paddr = mmap(virlual_address, length, protection, lIags, Id, tlle olfset) que mapeia um número de bytes igual a 11'1I8th. que cOIll~am em jile_(Jj]Jf't no at4uh'O, para ti espaço de endereçu vi rtuu\. (Iue começa em I·j,-IIfl1C(lt!tlre.u . Como ulternntiv:L. o parJ.metru j1(1R.{ pode l'er aju~t:ltlH para solicitar ali siste· ma que escolha um endereço virtual , que ele então retoma cumo patldr. A região mapeada de\'e..cr ulIIllúmcro intei· ro dc pág illa~ e alinhadu em uma fronteira de página. O parJ.metro !Jrotecl;OIl pode especi ficar qualquer comhinaç:\u til.' pennissãu lIe leilum, Cl'Crita ou execute. O mapeame nto pode ser removido nlai ~ larde cum uflmap. Vári o~ proCI!"so'\ podem 1ll3pCar para o mesmo Ilr(lLLivo :to mesmo temp(). Silo orerccida~ dU,l~ oJlÇÕC~ de com· pOLnillmmcll!o. Na primeira. tl)
Pil/la
I
rlgur.8.28 Espaço de endereço de um unico plOces80 UNIX.
I D,'" CódIgo O
.." .o
Memória virtual do Windows XP
M
:n
Nu x g lodo pllX:~:.~O u!>uárill tem ~u próp!iu espilço dI! endereço villl1ul. Enuereços " il1ulIis têm hil ~ de CO!)IprimCnliI, de l11udo que cuda pnx:esso Il!m 4 GB de espaço dI! endereço 1'11111011. Os 2 Gil mab haixm e~lâ(J dispourvei!> p:Lra o códigu I;: os dado!> du processo; os 2 Gil mai:. llhos I~rmilelll acesso (lilllilado) li m~ llIóda de núcleo, cxcelO em vcrsôc:. Servidur (Scfver) do Window:., Jla.'> (jlmis u divisão IXxic ser de 3 em pum () usuário c I GI3 para (J míclco. O e:.p:u,:u de endereçu l'il1lml,s p:lginado pur demanda. com um tamanho de página fi xo (4 KB Ilt) PcmiLUlI 4). Cada p5gina \ il1ua\ ('10th.: Ci>tar em um de três c),\uuo:.: livre, reservada 1)lI cmnprolllclida. Uma I)úgina livre não está CIllIlSO em um dado 1lI11lllCIUO e ullla referêncill a ela causiI uma faha de página. QUHlldo um proces~o é iniciado, !od a~ :n, ~ Ull ~ págin,!!'> e~ t nO enl e:o;tadn livre até tple o progmnla e os dados iniciais scjnm rnape:adlls para !l>CUespaço de e nderc~u. Tão Illg'l ..:6digo ou dadns ~j;un mapeados pam uma página. dil.-!.e que a página eSt{i comprometida. Uma rererência ,1 IUll!l pág.JLla compromctid.. é molpeada usando (I hardware de Illemól'ia virtual e é bem-succdida se a págilia C~ l i vc r na memóri a prillcip:tl. Se a pági na não e~tiver lia memória principal, ocorre uma fa lta de página c n sistetl1i.1 opc mcional ach'l 11 p.ígimj c a tral. du dis..:o. Uma página. vinualtambém l>Ode estar cm eSlado reservado, o (IIL C si gnifica que ela niio C\Hí di)p<mívell"lilra ser lllilpeada alli que ,I reserva seja renmvida explicitamente. Além dos atributos li vre, reM::r\'ada e comprometida. as p,igina ~ tamhém têm outros atlihutns. tais como pode ser tida (real/uM,') , podc !>Cf e:-...:rita (~I ',.,./(I/J!d e 1">I)dc Iocr eXeCu1il(\a (rXtflll{/h!e). Os 64 KB da pane de ci ma e os 64 KB da parte de haixn da LIlcIl\6na l,!),Ii'in !'>Cl1lfU'C livrl:~ , para pegar crros de pOLlteiro (I">IUltciros ni\n inicia lizados cOSllunam ser O llU - I). Cad:l p:i ~ tnu cWllprOHlctidu h:!m L1mà pági lla Mllllhm no dist.:o, o ndc ela é rmmtida qUlLndo niio e~ t ivcJ" na memória principal. Págiuu., li\ J"e~ c reservudils não tê m páginas sombras, portanto referências a elas causam fa lUls de pági nu (o Sit.WIllU nno pode InlZC f um;1 página do disco se nno houllcr ncnhumu página no diseo). As pági nas sombms 110 d i~t.:o sãu nrganiLadas em IILIl ou mais un}ui vos de: paginação. O sistemn operacional monilOnl qual páginll vi rtual mapeia Im!"a qlml P,tI'cc de qual arquivo de paginação. Para texto de programa (só de exeeução), o arquivo bináriu exct.:utá\'cl cont..!m a.~ páginas sombms; para páginas de dados são Ll ~ad os arquivos especiais cle paginação. () XI', as~im cnmo II S)'Mcrn V, permite que ar do) c~ pa ~os de clLdere~o virtual - boto é, carreiras de páginas. Tão logo um arquivo tenha sido mapeado para o espa~o de cndereço, dI! pude ~er lidu nu e ~cr i!U usando referências comuns de mem6ria. Arqui vo) de memória nlal>eada são implcmenHl(los do mesmo modo que outras páginas comprometidas, s6 que p:ígin:l)' ),o Ll\hra~ pudtm c!'>tar no disco cm \'ez de no arqu ivo de paginação. O resu ltado é quc, qu.mdo um arquivo é mapeadu, a \c r~ãn que cstá na mcmória pode não ser idêntica à versão que está !lO di sco (devido iI escritas receLlle ~ parôl ti e~paçu dt e mtcrcço virtual). Contudo. quando o arquivo é desmi~ll; cm uma LÍnicu págiuíl ou em uma scqiiência ue dItas ou mais páginas que !'>i\o consecutivas no e~ paçu de t!ndc .. e~o virtual. A~ quatro ]lI iLL1drll ~ fllLl ~ÕCS da API são uUIO-ex plic:l1 ivas. A~ duas :,cguintes diio fi um processo li hahilidade dI! conectar um certo mí na:rn dc Jlágiuus nll mem6ria de modo CJue elas nào I>ejmu reti rada s por pUl;!inuçiio. Também lhe dão capm.:id"uc ite de ~fa Ler o que Iizcra1l1. UIII programa de tempo real poderia precisar de~~a habilidade, por TalJela 6.4
Principais chamadas Windows XP API para gerenciar memória virtual.
Funçào API
Significado
ViJlualAJloc
Reserva ou C
VirtualFree
Libera ou descompromete uma região
VmualProtect
Altera a proteção ler/escrever/executar em uma região
VirtualQuery
Consulfa o ealado de uma região
Virtuall.ock
Transforma uma região da memória em residente, isto ê, desabilita paginação para eta
VinualUnlock
Torna uma região paginavel do modo usual
CreataF1leMappiug
Cria um objeto de mapeamento de arquivo a lhe designa (opciOnalmente) um nome
MapVlewOfF1le
Mapeia (pane de) um arquivo para o espaço de endereço
UnmapViewOfPile
Remove um arquivo mapeado .do espaça de endereço
OpenPileMapping
Abre um objeto de mapeamanto de arquivo previamente'criado
00
N
•c o u
•"
•c.
o
•e • •
~
• •c ,
u
.•
~
'•" u
•>
" ~
o
"•
c.
•
u
tO N
••o ~
,• ~
8
o u
• •
~
~
,•" , "
•
~
o
••
~
• N
o
•rn o"
exemplo. Somente progTllmas que cxccululll em 1I0ll1!! do adrnini .~ tn:luur do siste ma podem prentlcr páginas na IHcmória. Al ém di s~u . há UIIl limite imlX)sto )lelo sistema operacional para evitar que até I1\c~ n lll cssc~ pmccssus Ilt)UCI1I muito gummdosos. Embora niío SCjlL111 lIlostradas na Tubclu 6.4. o XI' \flrnbém tem r\lnçõc~ 1\1'1 para permitir (Iue um processo :I(:essc a memória virtual de um processo diferente sobre o qU:llohtc\e U cOllt ro le. iS\(1 é.
parn o quallclIl um m:lllipu lador. J\s quatro líllimus fun ções 1\.1'1 relacionad:t~ ..,er"'CIll para gcrem:illf arquivos de memória mapeada. Para limpem' um nnjUivll. cru primeiro lug ar é prc(· jso criar um objeto de mapeamento do arquivo com CrealeFiteMapping.
Essa fun,ào relunll! um Illallipu latlnr parti o objeto de mapeamentu de ô\nlui vo e upcional mente registra um nome para ele no sistcma de arqui vos para quc um outro proccsso possa usá-lo. As duas fUI1 ,õe~ scg uinte~ mapeiam e desl1\upciam arquivos, res pectivamente. A última pode ser usada por um processo para mapear um arquivo que, no mumento em questão, tll1llbém está mapeado pura 11111 processo diferente. Desse modo. d oi~ 011 mai s processos podem e01l1pal1ilhar regiões dc seus cspa~'os de endereço. Essas funçües A PI .. ão as funçõcs básicas sobre as quai s é cullslnlfdo o resto (lo si~t e m a de gerenciamento (lc l11emÔria. Por exemplo. hií fun ções API p:lm 11locar c liberar estmll1ras tle dados cm um ou mais momes. Montes são US:lt10S para armazenar estrulura ,~ de dadns que são ("fiadas e destnJfdas dillill1l icamentc. Os montes não sfi o removidos 11t'lo sistema opelTlI.:itlllalnas suas coletas de lixo, portanto c<1be ao usuário do sort ware lihc r1lr blocos de lIlCrnóri,1 vir111
6.4.3 Exemplos de E/ S virtual o coraçãu de ljUaj{juer sistema operacional é proporcionar serviços a programa~ u s u á rit) ~, em gmnde parte ser\'i,os de E"lS como Icr e escrevcr 'Irqui vos. A1l1bo~. o UNIX c o XP, oferece m urna umpla varicdaue de ~ervi ,tl ~ de E"lS para programas uSll,íri os. O XI' te m ll111a c hamada equival ente p'lfa a nUlioria da ~ c hamad a~ de ~ i s t el1la UNI X. Illa ~ u contrário não é vCHladc iro, pOfllllC o XP tem 111uiltl mai s chamildas e l'nó:! uma tlda ~ é mui10 lIlai ~ cornpli cnda tln que sua con1rapartc UN jX.
Eis virtual em UNIX Gr:l!1rJe j)arte dn popularidade do siste ml1 UN IX pode ser al ri bu (dll diretaJ11e ntê ~ sua sil11plic idullc que. 1}I)r sua re~ llltüe /lOS arquivos Jlenhun1<1 estrulunl de registro. embora muitos progm m<1s usuários considerem arqu ivos de tex to ASCII como seqUências de linhus, cadll UI11 terminando com :l volla ao início de umn nova linha. Associado COIl1 todo nr(Iuivo aberto está um IKlIItciro para o próximo byte a ser lido uu cscdtll. As chamad<1s de sistema read c wrlte lêem e escrevem dados corneç<1ndo na posição do itrq uivo indicada pe lo po nteiro. Ambas as chamadas aumentam o ponteiro após a OpCTlWãO de urna t.juantidaue igual ao número de bytes t ra ll ~ rc 1'idns . Contudo, é p{)ss fve.J acesso aleatório a arqu ivos ajusti1lldo explicitamente o ponteiro de arquivo pnra um valor e~ pcdfi co. Alé m de anjui vos ordil1ários, o sistema UN IX tamhém suporta anluivos especiais. que são usad ll~ para acessar dispositivos de EIS. Ccciais designullos a ele. Le ndo e escrevendo do arquivo l1ssociado especial , Ulll programa Jmde ler e escrever do disposit ivo de EiS. Di ~co)i . imprcs)i()fas. terminais e muitos outros dispositi vos são 11Ial1ipulados dessa maneira. As princi pais c hall1ada,~ ele sistema de arquivos do UN IX estão relacionadas na Tabela 6 5. A chamada creat (se111 O e) pode ser usada para criar um novo anluivo. Ela llfio é mais e~ trilarne n te necessária porque agora open tamhé m cria um novo ílfljui vo. UnJink remove um arquivo, :-tdmitindo que o anjui\"o eS\cj 'l Stllllt:I1\C t'm IIIH diretório. \'('z,
é um
Tabe la 0.5
Principais chamadas de sistema de arquivos UNIX.
Chnmada do sistema
Significado
crentjname, mode)
Cria um arquivoi mode espeellica o modo de proteção
unlinklnamel
Apaga um arquivo jadmitindo que há só um link para elel
openjname, mode)
Abre ou cria um arquivo e retoma um descritor de arquIvo
closelfdl
Fecha um arquivo
readlfd, buffer, countj
LO coUl11 bytes para o bulfer
wrilelfd, bulfor. count)
Escreve count lJytes do bulfer
lseeklld. ollsel, w)
Move o ponteiro de arquivo como requerido por offser e w
statlname. butfer)
Retoma Informação sobre um arqllivo
chmodlname. model
rutera o modo de proteção de um arquivo
fCn!llfd, cmd, ... )
Realiza vArias operações de controle tais como bloquear Iparte de) um arquivo
arquivo. ' / inld .. open("clata", O); oulld .. clflal("nawf', ProtactionBlts):
,. Abm OI deSC(~Or81 de
! ar IUI
/In
le,
,» .te 'I>
";.
"
fIl,ura 6.3 0 fragmento de programa para copiar um arquivo \Isando ch.. madas ria sistema UNIX. Esse fragmemo es.á em C porque Java oculta as chamadas de sistema de nivel halXo e nós estamos telllando eIpô-las.
lO
00 N
I" Laço de cópia. '/
do'
coun. '" raad(inld, bu"ar, Dy,es); 11 (coun' ,. O) Wfita(ouI'd, 00110(, count),
I whlte (coun' ,. O);
r
Fecha 0$ arqulvol. -/
eIose(lnlo); eIosa(out1d);
Opon é /I,ad" pant abrir arquivos existentes - e criar novos. O modo Ilag in{orma COnlO ithri-Io (para leitu ra, p:lra c~critli Clt.: I. A chamada rClorna um inteiro de baixo valor denom inado d cscdtor de Ul'lluh't1, quc identifica I) urquivo Ctn chumadns sllb~eqüentes. Quando o urquivo nllo (nr mais neceh{lrio, ciosa é ch,lImtda para liberar \) (h! ...critOl de arquivo. A EIS de arquivo prupriamenle dita é reila com (ead e wrJta, clllla uma das quai ... tem um uCScrilor ue anlui\'ll Ilue indiL:lll[ua l arqui\o Lbar. UIIl huffer de onde ClS dados vêm e pam onde v30 e UIll byte dê cont:lgcm ll'lJIIIII) l[ue informa li quuntid ..ule de dathlS transmilidos. lseek é usaua para po!\icionur o ponteiro de arquivu, ti que IXlS... ibllila o aceM,O a!c/ltóril1 J ilflluivu .... Stat rcLo rna Lllfnrmuçôes sohre um arquivo. elltre elas seu tamanho, qunnuo roi acessadu pela úl tima vel, propritlário c uulrns. Chmod ul!L:ra I) modo de proteção de IIIll arl[lIh'o, ror exemplo, pam permitir nu proibir sua leitura por tbuários que nl\u sejam o proprietário. llor lim, rcntl executa várias operações diversas em um arquivo, tlra CIlIII(l runcionam as principais chamadas de EIS ele ar1luivo. Es~e cúdigo é mínimo c não inclui 11 l1ece ~~ ária verificação de erro. Antes de clllrar no laço. o programa abre um urquivu cx i... tcnte, (/at(l, c cria um no\'o i1nllll\'n . !leuf. Caela ch:lIllada retoma um descritor de IIrquivo, illfiJ e oul/d, respectivlunente. Os segundos pilrfullctrm parll i\ ~ UUlb chu rnadu ... são bils de proteçao que e~pecificalll que os :t!-clu i"n:o. devem ser lidos e escritlls, n:sp<.!ctil'umcme. Amha~ us chamadas relOrnuUl Uni d e~crilur de arquivu. Se open ou crea l rallmrem, é retonladu um dCM:rilOr de arqui\() nl!gutivo. inrormundol[uc a chamada ralhou. A chumillla pilrll r8ad tem três parâmetros: um descritur de arquivu, um buffer e um c(J[lIador de hyle~. A chnmud .. tcuta Icr par,1 dentru do buO'er o mímero desejado de byles do nrquivo indicadn. O número de byles reulmcnte lidu é retornado em ('01/1 11 , que será menor do que b ylel ... e O arquivo cru muito curto. A chamfllla write dcpo~it::1 o~ byte ... recém-lid" ... 110 arquivo dI:! !>aída. O la1,\o continua até que u an/uivo de entrad~1 tenha ~ido cOmplCHlJllclltc lido, quando entàu t) laço encerrn e ambos os arquivos ...fio fechados . l)e ... CriLorc1> de artllllVO em UNIX são intciru.~ de peqUellO \'ulnr (usualmente ahaixo de 20 ). Descril()re~ de arquivo 0, J lo! 2 ... !ln c~pedais e corrcsponuclll a ullla enl nula padrão, saída padrão c cITO padJ'ãn, rc~rccti v~l mellte. Normahnclllc u primeiro ~a refere ao teclado, o ~cgulldl1 ao monitor e o tl!rcciro tamhém no monitor, mas podelll1>cr redire:cinn"dtl~ li arquivo~ pelo usuário, Muitos progmmas UN IX obtêm sua entrada da emrada pmlriln e e~c reVCll1 a ... aÍlla pmce~sada na sarda padrno. Esses pmgrumas costumam ser c!cnoll1imIJo) fillrus . O s i~tl!llI!1 de arquivos guarda eSlrcilil relação com o ~is l erna de diretórios. Cuendn que cad~1 d iretório contém arquivos, bem como suhdirclórios. Sistema!> UNIX normalmente ~iio cunIlguradn, ctlm um diretório principal denlJminado diretó rio-raiz, que contém suhd iretórin~ Mil (pal1l programas txcL:utadol> cilm rrctjíiênciaJ. ,1l'L' (pam o~ arquivos especiui~ de di spOsi tivo de EIS), li" (pura bihliotecas) c /lU (pttra llireh) riu~ de u~uánCl ... J. CIIIIU) lIIostnt a Figurn 6.31. Nesse cxemplo, n diretório IIsr cumém ~ubdi rctórius para (1.\( e j i", . () diretório tal contém dois arquivos, l/olfl e joo.c. c um suhdircl6rio, hill, que cuntém Ilulltro jogos. Os ltrqui vos pudem ~er nomclldos dando seu caminho n I)anir do diretório-mito Um cllrniuho contém uma li ~ta de IUdo~ oi; djret611{)~ percorridos desde o raiz até o arquivo, sendu (11lC I)S 1I01llC~ de diretórios silo sepnmdos por harrillhll~ ill~lilladll' . I\Ir cxcmplu, u nilme de clllllinhn ullsnluto de glj//w2 é IlIsrlrmlbill/gllllle2. I Jm cUl1linho 'lue: cnrncçll na miL é dcnominado clllllillho a bsoluto. A todo in~t'Ulte . cada programa em execo~ão tem um diretó rio de Irüh:llllo. Nomes de c.'t!Ilinhos tamhém lN.Jtielll ~e: r relaLi\'o ~ ao diretório de tmbalho, Cll!.O em que n1l0 com~çllm com uma barrinlm inclilwua. pant distingui-los dm 11OlllC ... dc caminhos ab~() l lLtos. TilÍS cUllIinhos 5110 denominaelos camlllho.~ relativos, Quando /im'/fI.\'1 é () diretório de trabalho. g(lllld pode St:r aces~ado usando o cuminho bill/gmlle3. Um usuário r ode criar 11mB ligação (lillk) para o arquLvo de alguém usando 11 chamada de sistcma link. No exemplo que acabamos de dar, ambos, IIm'/mllbi/l/1:III/Ii'J e IlI.Irljim!jmlO , acessam u mesmo IIrqu ivo, Paro evirar ciclos no siste ma de diretórios, nãu ~ãn permi tidos lin~s punI diretórios. As chamauas open e eraa! ildntmn como ;Irglllllcntos nnmcs de caminhos ab~olUlns nu rd"ti\'o~ . As principai~ ~hamada s do sistema de gc:renciamenlO de uiretório em UN IX eSl1l0 relacionadas n'l Tabe la 6.6. Mkdfr cria um novo dirctório c rmdlr apaga um direlório existellle (vlizio). As três chamadas ~eg tlintes Mio tlsadits para ler elllntdas th.: diret ório. A primcira ahrc u diretório, a .....::gu intc lê elltradus dele e 11 tíltima fcchll li Jirctt'lriu. Chdir muda (I diretó rio de Ir"h:tltm.
• "o u • "
•
~
o
,• z
~
o o ~
•
u
"'co
......
N
I.
•"
"-
í
"o
"•,
,.
B
e
o u
~
lusI
.OI
(
• "• ",•"
;m
-
Ibi..
\
--
, "
" o •• • " •m" ~
fluurlllO.31
IUII~lm
fullfaSI
Parte de um S';stema
."
diretório tlplco do UNIX .
jolto
data
~
100.'
o lu.rlastlbin ..~I
-" ~ game2
game"
I
.
~
Arquivo!! de dados
Tabela 8.0
Principais chamadas de gerenciamento de direlórlo do UNIX.
Chamada de sistema
SlgnUlcado
rnkdtr(neme. mOde)
Cria um novo diretório
nndirlname)
Apago. um dlretôrio vazio
opencfulname)
Abre um diretório p81a,leltura
reoddir!dlrpoinler)
Lê a próxima entrada em um diretório
cloSediI{dirpointel)
Fecha um diretório
chdir(dirnamej
Muda diletória de trabalho para dimame
link(neme I. name 21
Cria uma entrada de dlretólio name 2 que aponta pala 118me I
unUnk(name)
Remove name de seu diretório
Llnk f.rz urna 110'1<1 clIll1Ida de diretório sendo que a nuva e ntrada aponta para um arquivo existente. I)or excmpio, a cntrada / I/Jrljim/jUl1Q poc.Ic tcr sido criada l>ela chamad:l link("/usr/asllblnlgame3". "/usrfJlmljoUo")
ou por uma chanlllda cc!uiva lcntc q ue usa nomes de camiilhos rell1 ti vos. de l>eudcl1do du direlftt io uc trabalho do progruma que está faze ndo li c hamada. Unlink remove a entrada de uirc t(,rio. Se o arquivt1 liver ~umente um link. 6 apagado. Se tive r uois ou mais ti nks. é man tido. Não importa se um link removidu 6 O origi nal Otl UlUa c6pia fei ta nUli ~ tarde. Um:\ vez reilO um lillk, cle é um cidadão ue primeira c1lls~e, i nd i ~tillglLfvcl du uriginal." chamada unllrlk("/usr/ast/b!n/garne:n
to rna RfII/w3 acessível ~o me nte por meio do caminho //ur/jimljuI1C1 dali em dianle. Unk e unllnk pouem ser mndas (Iessa rllll11eira plrnl ' mover' UrCllliv05 de um diretório pllra outro.
As~ochldll C\Uu todu arlluivo (incluindo diretório!>, por'lU(! eles tambêm sào l:Ill]ui\'os) há um mapa de bit~ que intormu 'lue;:m 1)I)(Ie aC(!!>!.!lr n arquivo. O mapa contém trêll campos RWX : n primdm c()lllmhl nll pcnnis!o.ÕC~ I ~r, bcrc~u. E,/occulUr p.u-a o propri(!tário; o segundo panl UUtrUII lluC perh:nCeJ11 an gmpu t!lI proprietário e o l(!rccim pura lodo o!> outf{l~ . A~ ... illl. R\\IX R-X - X significa que o proprietário pod(! ler o arquivo, escrever o arquivo e eAeCUlar o lU1luivu (6 óbvio llue é um programa cxecm{jvcl, ou 'excclllar' e~larill dcslig:l(hl), nu passu que oulro:. em ~ell grul>l1 Ilodem ler ou CXCClllllr tl anluivo e estranhulI só podem execUTá-lo. Com essas pcrlllissfics, c~lrunhll:-' podcm u:-.ar ti pmgrarllu , 11\,1:-, !lãn I>lxlem ruuhá-Io (copiá-In) porquc nào têm penni:.são de h,:iwra. A d c~ i g na~àn de usudrin:. u gruJ>I)l> é fdtulk:ln adlllinhtrudor do si:-.tema, usualmenle Ilenolllinudo supcrusuárlu. O SUllerttsuáriu também lem ÍI podei' dc unulllr 11 mecanislIlo de pTOt(.-çàu e ler, c:..crever e execular qualquer Urllui,'o. Agora. v"ml)~ 1:~l lJllar re:.tllnidumente como an:lui\o:. e diretórios :.ão implementados em UNIX. Se o leitor qUI ...cr infurmaçõcs m.1i:. compkt!ls. \cja Vuhalia (1996). ASlIOCiudo com cada nrquivo (e cudn diretório, !lIll'CIIIC um diretório também c! um
open(100.c", O)
o S;l>Iellla eXilmina o Ihrctóril1 de tmbalho em husca do nomeck! arquivo. "roo.c," de modo a lucali.wro número de inCIde paru ,Kludc ilrquivo. Qu:mdo achar (l mimero de inode. então clc pode ler li inudc, que inroOlllltudo sobre o arquivo. Quundll é e~pe..:i licadu um nome de caminlm mais longo. as elôlpas básicas delineadas anteriormente são repctidu:. diver~a:. \cze!o. até (IU(! Indu o caminho tenha sido nnali.~ado. Por cxemplo. pam locl1li Lar o mimem "k inode para lIur!a.IJIt/Uf(j , clll primdro lugnr ti :-.istema investiga o diretório-miL em ousea de L1m:! cnlmda /lU. Ao achar o intlde paru 1/11', cio.: pode ler aquele arquivo (um dirc\t\rio é um arquivo em UNIX I. Ne~sc urqu ivo cle [lroeunl umil el ll nula (I ~I, lIM.illi/lllldll ;I~~i lll fI IIlimem de inodc para n l\rCluivo II/,I·r!a.\·/. Ao Icr /".1 //0.\'/, (. sistema Ilocle então achar a entrada Ilur,1 1111111 c, a,):.iul. u uúmel'O de inodc par:. ! u.\·r!a,u!d{J/(/. Dado o mimem ete innde para 11 arquivo, enti'io etc 11I II..k de:-,cClhrir ludo ~uhrc li Urlluivo pelo inodc. () fl,rmato, coulClídu (! leiaute de um innde variam um j'lClUCO de Sblenl:l pam ~ i ~tl! l1la (em especial (julI1\{lo M': ~~ I ii IIl1amlo r.:Je), lU.1:' o:. ~cgllillte!> ilenl> :.ão típicCls e I}()(!t:m ~e r c n contr.u lo~ cm cnda inode. ()~ 9 hit~ de prOll!çi'io RWX e alguns outros bits. O Il\ím~ro d(! lin~~ para 11 arqu ivo (u número de entrada!. de diretórin pafôl ele). A idcJ\tidudl,: dn prnprictárill. 4 . () gnlpo do prujllÍctário. 5 . () cumprilllelllll do jlHlllivfl em bytcs. 6 . Tre'-I! e l1dc rc\CJ~ de dii>co. P/ . A última \e7 em quc I) arquivo roi lido. B. A Lillillla \(!l em que o nrqui\'o foi escritn. 9 . A última \el e m '1l1e I) inooc foi alterado.
t.
O tipu du ,lrqu l\u,
2. 3.
O tillO !.Ie anlul vlI di:-.tUlgue ilr'luivos ordinários. diretórios e doh tipos de arquivos especiais, para dispo:.iti \lls de I.:/S e~trulUr.ldo:. em hll lClh 011 não estruturados, rcSpccti"iUllentt. O mímero de lillk:. e li identificaç.ão do pmprietário já ("Jr;1I11 dbcutido:.. O comprimento do 1I1l11li,,0 é um mimero inteiro de 32 hib (Iue dá o byte mais alto 'luC lem um valor. Pam lriar um arquivo. é perreitnll1cllte legal rU7,er uma Iseek pilru posiciollllf 1.000.000, e e:.creyer I bytc, (1 que;:" esullu em um arqui\'n de compr;ml!nto I.OOO.tlO I, Todavill, o urquivo / /fl0 rt!quereria annaLenall1cnto paru IOdlh os byle:. 'faltantes'. Os de7, primeiro:. cndcrcçn~ de disco apolllam pura blocos de dados. Com um tamanho de h!tlCO de I .1J2.J by[e~, arquiv()s de Ulc! I().2.JO bytc,) [lfllkm ser manipulados deSMI maneira. O endereço I I "pullla rum 11m hlocu de diM:o, (Iemuninudo hloco ind il'l~ IU , que contém 256 endereços de disco. Arqui vos mé 10.2.J0 + 256 X I.O:!.J = 272.3iS~ hy t e~ !>ão munil'uJadm dCSl>rt maneira. Para arquivos :lillclll maiores, o endereço 12 lIl>llI\t:\ purJ um Moeo clue contc!1l1 11:' en dcre\o~ lIe 25h hloco:. indiretos, que loma conta de unluivo:. até 272.384 + 256 x 256 x I .OH = h7.381.2.J8 hytcs. Sc e,)~c c~quema de bloco indirelo duplo ainda ror muito jlCclllcno, u enden..\ :o de disco 13 é u ~adll para allOntar p.1m um bloco indireto t ri llln que contém os endcn..-ços de 256 hlocos indiretos duplos. U ~alltl u n~ cndere\:os diretn:-., líll icus, indiretos duplos e indiretos triplos, lIté 16.843.018 blocos I,oclcm ser endcl'eçudns, Il quc clá 11111 IôIlHunlw de ar
.... CO N
•
"
o u
•
•
~
o
•8 • • • •c
~
~
,
.'•" b"
•
,.> w
,o o-
•
u
<Xl <Xl
N
:1rcferenci" anterior. Para furwlcccr esse efeito. tl SiSlclI1:1lambémlenUllcr o !Jrríx;/l/o bloctl C111 11111 lIrquivo. antes de de ser rcCcrcllciado. de modo ti acelerar () proccss
••
Com
Iln bllfrer.
cs~a
informação
h~~ica.
agora podemos ver C0 l11 0 funciona
fi
F/S de arquh'u. Opcn fal. com que o
~i~lc
,
ma I>eSI I\li .~e os diretórios em bUSt'll do caminho e,~pecificado . Se a pcs(\uisa for bcIT1 ·~ \Iced;II ;I. o illude é lido para ulIla tabela interna. Reads e wriles retlucrem que o sistema calcule o numero de bloco a partir da IX1<;;çãtl corrente dI) anluivo. Oq endereços de di!;Co dos dez primeiros bhM.:oS sempre estão na mem6ria principal - 110 inodc: "10co~ dc números mlli<; all(}~ requcrcm 'I ue 11m ou mais bl()c()~ indiretos sej am lido~ Ulltc~. lseek só muda II pt)l1lcirn de i>osi~'iio corrente sem fU7.er nenhuma EIS. Agtlt1l també m fic ou sirnp l e.~ entcnder IInk e unllnk. L'\nk consu lta seu primcirtl argurncnlO para achar 1Il11irneI'U de inode. Entiio. cria uma e nlrada de diretório par.l o segundo argumento colocilndo o mimcm de inodc do primei ro lIHll1iv(J nnquela entradlL. Por fim . ela aumenta de um a contagem de liuks no inode. Unllnk remove ulI1a entnlllu de diretóriu e dccrelllcl1tu OI contagem de links nu iuude. Se a contagem for zero. o arqui vll é removido e !(Ido.. o~ blocos são devolvidos à li ~hl de livres.
•"
Eis virtual no Windows XP
"o
"O
•, ~
•
o u
•
"O
• ,•"
"O
~
o ~ ~
• " •"
~
o"
XI' suporln vlirios ~is l clllas de artl\livtl~ c os maio; importilllles deles são o NTl'S IN" "-ih' Syslem - 51SI('1II0 de a nlui vos NT) e o FAT (File Allueution Tuble - trt bchl d e II locnçiio d (' arquÍ\'o ). O primeiro é um no\o ~; .. terna de nr
6.1 Principais funções API Wln32 para EIS de arquivo. A segunda coluna dr't a equivalente mais próxima em UNIX.
Tllbela
Função API
Significado
CrealePlle
open
Cria um arquivo ou abre um arquivo existente; relorna um marúpulador
DeleteFUe
unlink
Destrói um arquivo existente
CloseHandle
close
Petha um arqulvo
Readfile
n18d
Lê dados de um arquivo
Wrilefile
write
Escreve dados para um arquivo
Setl'llePo(ntcr
Iseek
Ajusta o ponteiro de arquivo para um local especifico no arquivo
GetFUeAl1ributes
slat
Retoma as propriedBdes do srqUlvo
l,ockFUe
Icntl
Bloqueia uma rogl60 do arquivo para proporcionar oxctusão mútua
Unlockf'ile
Icnll
Oellbloqucla uma regiâo prevlamento bloqueada do arquivo
"in
,
TI
o
I.
Um IlOllldm para o nume do arquivo a criar ou abrir.
2. Sinali/.ldofcs (nôlgsl qUI: infomuull se li ilfquh'o pode ser lido, ~sc ri ln ou amhos. 3 . Sinalit.ldun':lt ( nuglt) que informam se vários rn)l.:~)~os podem .thrir o anlui\'o ,lO mClimn tempo. 4 . Um pOllleil o para o dCltcritor de segunll1çil, l jllC in furIlw quem pode I.lCeS/t3r o arqui vo. 5 . Sin",li/ ,ldures (nags) que informam o (llle flw:r SIJ () arqui vo cxi~ l ir/niio ex istir. e. SinaJi/.,Ic!on:li (flag)) que lidam com alrihul!lS ctllnu arquivamento, cnmprc!osi'in elc. 7. O malllpuludof de um arquivo cujos ulribUlO.\o devem !!ler clOllilllo) para o novo llrquivo. A) próximol) :.ch. funçõcs da API nu Ta~ lu fi.? s1l0 raLOõl"dmenlc similares às c hrllnadns de sistema CIIrrespondcIIICl> em UNIX. Alo últimas duas ]>enniu:m 'Iue uma região d~ um arquivo seja hloermilir que um proces~ nbl~nh a exclusão mútua ganmtidll li ele. UStmdu c~!>lt~ fUllçj)e~ da API é po~Í\'eI escrever um proccdimelllo para copiar 11111 Urcllliwl, análogo à \ e~llo UN IX dll Figum 6.30. Tull)tt)cedimelllo, sclllnenhuma \crilicaçi'lo de erro, é /I1u:.tmdo lia Figura 6.32. Foi projetml!) para imilur a ~~ trll tU fll til! Ht;urn 6.30. Na prática, nilu teriullIo) de progr,l.I llur a cc'ipia de arquivo, IIUla VCl. que CopyFlla é uma rUnÇall da Al' l lllle cxt:CUlu algo parecido eom es~c pmgrama, como um procedimcnto de bihlioteca.
r Abra arquivos para entrada a satda '( Figura 6 J I2
fragment o de plOgrama para COplal um arquIVo
o.
Inhandla '" CnlalaFile(" dlllll". GENERtC_REAO, O, NULL, OPEN EXISTlNG. NUll): oulhandle .. CrealeFlle( " nawl", GENERtC_WRITE. O. NULL. CAEATE-ALWAYS. FllE.-ATTRIBUTE _NORMAL, NULL);
usando as funções da API r Cop\f.I o arquivo. '/ do Windows XP. ""I s '" RelldFlta(lnhandla. bullar. BUF_SIZE. &counl, NUlL). O fr agmento esta em C II (s > O && COUnl > O) WrlleFiIe(outhandla, buller. count, &ocot, NULl): porque Java oculta as I whlla (8 > O && counl > O): chamadas de sistema de nlvel boao e nós estamos r Feche os alqllivos. '( tentando uXI)ó~ laB . CloseHandle(lnhandta);
m ex> N
•c o
u
•"
•
~
o
•E • ; ü;
•
~
•c ,
'. ~
~
•>
'"
CloseHandle(oulllandle); ~
hieránluico de arqllh'm ~ lInil ar ,lO ~ i sl e ma ele ,I rq u ivn~ UN IX. TI){hwia, o sepanu lnr de nllJl1C~ de r.:on l lll1LlCllle~ e \ em VCL do.! /, um r6~:\il herdado elo MS~DOS . Ilá um cemr.:eito ele 11111 diretóriull..: trahalhl1 correnh:, c ti!> nOllle~ de caminhos jXKll!m ser rdativos ou llhso!Ultb. Uma diferença ~ign ifÍl,;aliva entre li Xi> e 11 UN IX, cllI rctallln. ê (Ilte o UNIX pcrmile que os s i ~lcmas de arquivos em d i sco~ c máquina.., diferente) ~ejulll montado) jUlltu:. CIII umu línica árvore de numeaçlio, o que nc ult:I a e!)tnJlur.I de disco de IClI.ln ti ~(lftwa n.:: . O NT 4 .0 niio tem e.'~" pn.pri edadc . I'HJrtamo n o m e~ absollllo) Ih.: urquivu devem cmllc~ar cnm uma lelra dc drivc (I"e imlique prillci p'li.., fU I1l;: Oc~ du A PI de gercllciul1lcnw de di l'e h~rio siio d'ldus nu Tubela 6 . ~. muis IIIlIU vez aeOIlIJlUnhadns de !>lIa~ e(l ui valclltc) m;.is pró.\ imas em UNIX . E~pcnllllos (Iue :ts fUllçocs M:jalll aLuo-ex plicati vas. O XI' tem LlllIlllet:1II1 i ~ 1II 0 de scgUfallÇU IIWiltlll1ab djlhllrado do que u mai oriu dOI> ) islelllUs UNIX. Elllbonl haju centcnas dc fUllçõc) da API rd:ni\'a.) à ~eg urança , 11 bre\·e cl c~c rjçào Ilue fllrClllm li !>cgUlr dá óI idéia geral. Quandu um USIIUI'IU fal IOllin, ~ell pmcesM> iniciul recehe lima lichu de UCt'Ssu dutla pelo ~i:.ll;!lIll1 upcracwllul. A fi cha de ..ce~so C,J11Ic!1II li SIJ) (Securily 10 ) do u ~ lI á lio, uma lista de grui>u~ de :.egurtuwa aos quais o usuário pcrlence, ljuaisq ucr pri\ ilég i o~ c)l>cciais dispollivds c :llguns OlltroS itens. A ra7..10 da I:k!rmis...ilo de ace!>~o é CIlIICCIIIrar todas a~ infOlIlHlçikl> de locllurançll cm um lugar fdei J de achM. 'Iod()~ us pttlS herdam UIIle:'/I1<1 parn i~)i'I(l dI! acesso. Um dI)) Jlur;illlelff)~ t/UI;! podem ser fornccidos quando \jualquer IJbjclO é cri,llfu é seu dcserilur de segUI'lIll ,u . O descri tor de locgur:mçu contém LIma lista de enlmt1us denominada uma ACL (Acccss Conlrnl List - lista de cOlllrolc de aces... !) . Cuda en/rada permi te ou profi)C, a alguma SID ou gnlpo, :1 n!iltLwçãlJ de algum cOlljunlO de uperações 110 obJc\o. Por exemplo, 11m arqu ivo poderia ter um descritor de scgur.tnç'l ~s l>ccificanli o que Lc0l10nl o XP
~U lllJlla
UII1
~i~h~ltla
•
u
Principais funções da API Win32 para gerenciamemo de diretório. A segunda coluna dá a mais próxima equivalente UNIX. quando ela exisle.
Tabe 'a 8.8
runçao API
liME'
SlgniJtcado novo diretório
CreateDireClory
mkdu
Cria 11m
RemoveDlraclory
nndir
Remove um dlretMo vazio
PindPiflltPile
opendir
Inlclal!za e comece a ler as entradas
~'indNe.xtt'il e
readdir
em \Im diretório
Lê a próxima entrada de diretório
Move um arqulvo de um diretório para outro
Moverile
SetCurrenlDlrectory
•
eM ir
Muda o diretório de trabalho corren te
o
Ol N
•o" ~
•,
•'"
o u
•
~
•
~
,•" , "
~
o
•• • "
~
•"rn
o"
nuu Lcul absututumCllte nenhum lIccssn ,lO arquivo. Rit'ualo pude ler () arquivo e [.intl'l PUU\! [cr (lU CSt'rcvcr I) an[ui -
vu. e lodm Oli membros du !!l1lPU XYZ podem ler I) comprimento do arquivo c nada nlais. Quando um procc<;so lenta rCOIli zar alguma opefl\t;ao sobre um objeto u~allfJo I) manipulador que Ublc \'c l tUundo abriu o objeto, o gerenciador de segunlnçu pega a fi cha de acessu do processo c pcrClln-e 11 lista de enlrauas na I\C L pela urdem. Logu llILC cnctllllrar uma clllmda que combine com a S ID tio dJ;lmadur ou com um dos gn1lJOS do chamador. o privilégio de acesso ali cnconlrado é considerado definitivo. Por essa ralao. é USlHl l l'olocar cnlmtla~ que negam acesso antes de elltrudas que pe rmitem :u.:csso na ACI., de lIIodo que () uliuário li quem o acesso foi espe cificamcnte !1l'gado não POSS,I e ntrar por meios escusos por ~e r mcrnhru tle 11111 grupo que tem acc~so legílimo. O dcscritor de segurança també m contém inforrmlçõcs usadas paru veriricilr os acessos ao ohjeto. Agora vamos dar Hum rápida ol1mda 110 1110<10 de implementação de arquivos c dire({Jri(l ~ em XP. Cad,1 di ~co é dividido e~tat icrun e llte ell1 volumes intlepcmlentcs, equivalentes 1\s partições de di sco em l ' NIX . Cada volume contém milpas de bits. aHluivllS, dire t ório.~ e oulr:lS estrUHlras de dados para gerenciar suus infonna,ôcs. ('.u la volu me é organizado como umól seqüênciA lineilr de ng rupanll'lIlos. sendo que o tamanho do agl'upil1l1cntn é fix o para cada volUl11e e está na fuixêl de 512 bytes a 64 KB. dependendo do tama nho do volullle. Agru pa 1ll e nt o.~ são rcferen ciadm' por seu dcslocumenlO em relação ao início do vtlluinc utilizando ntimeros de 64 hits. A princi pal cstmtura ue dmlus Ctn cada volume é 11 MFT U\>lus ler File 'lilble - Ia bela IIlcslrn d e U!·(luh'os). quc tem uma entrada para c.:ada :lTlluivo c lIiretório no volume. Essas clllrudas são an álnga~ ao~ i lluu c~ e m UNIX. A I\'IFT é. em ~ i. um arqui vo e, COl II O tal. pode ser colocada em qlmlque r lugar do volume. elimi nando assi m o problema que O UN IX tem com blocos ru ins do ui sco 110 mcio dos inodcs . A MFT é mostrnua na Figurn 6.33. Ela e.:oTllc\·a com um c:lbeçalho que co ntém infornwções ~o brc o volume tais colllo (polltciros pora) o diretório-raiz. o arquivo de inicialização. o arl{uivo de blocos ruin~. a administração da lista de.: livres ctt'. Depois tli sso vem uma entrada por :U'qUiVll ou diretório de I KB. exceto {llIulldu o tamanho do agrupamcnto for 2 KH ou mais. Cada ent rada contém todos os Jl1etad,IIJos (in rormaçõcs adm inistr:llivas) sobre o arquivo (lU diretório . SUo pe nnilidos vários formatos. um dos quai s é mostrado na Figura 6. 33 . O campo p11driio de informações contém infonll1ujões eomo mureus de tempo n cccssária~ para a e.{lIIló1gclI1 de Iigaçõcs e~tritas (l1(1I'({ {il/ks). os bit~ de somente leitura e nrqlliv:IIncnto etc. É 11111 campo de com primcnto fixo e está sempre preselllc. O cnmprimentll do nome (te ar(luivo é variável até 255 çaractere!' Unicnde. l'C I rnlll de espaço. A lislll dc 2 67 mm leriu 15 anus-Iuz de comprimento e se estenderia Ilté muito além do sistema solar. ida c volta atéAlfll Centauro. O ~i~tcl11a de arquivos NTFS tem militas uutras pruprieJades ;nlcrcssallles que incl uem c{Hnpressão de tla
InlOfmaçOOS NQme de
padrilo
alqulvo
Nome MS·DOS SegulllrlÇa
figura 0 .3 3 Tabela mestra de arquivos do Windows XP.
Enlf8d8 MFT pelll um IIIQ\livo
Cflbeça lho
MFT
TaOOIR
mesllll de luqulvos
()flOOS
6.4.4 EKemplos de gerenciamento de processo Amllilli, UNIX c XP, permitem que uma
larcfll scjll ~ubdiy idid a
em
vári()~
processos
J)l)dcm exeCutar CIII (pscut!o)plIraldil>lllo c 1>1! comunicar entre si, no estilo do exemplo pnxJulor-comurnidor que já discutimos. Ne~la l>1!~iio d iscumc ll1 o~ cumt) pmccl>l>os si'lo gerenciados em ambos os sistema:.. Ambol> suportam paralelismo dentro de um único procCl»o u,ando thrt!ads. portllnto isso Imnhém ser.í discutido. (PU!
-'" N
•o o
Gerenciamento de processo em UNIX
u
Em quulqucr in, tillll l.:, 11111 processo UN IX pode criur um suhprocesso que é um:\ réplica exala de si lll e~ JLlO c)(ccul:Indu 11 ~ humml..t de l>i:.lcnlôl Jork. O proce~so origimll é dcnominudo (lui e () no"o pmccl>l>o é denominado filho. Logo apól> 11 IOfk, li!> ,Iui) procelosoS são ident icol> c até companilhum os mesmos dcscrilOrcs de arquivo. Dali em dillllle. cadu um !.egul! ~CII próprio caminho e fuz o que qui!>er. indepelulentemente do outro. Em mllilH ~ ca!>o,. n proce~so-fil hu rcalila ('enu~ manipulações com os descritores de arclu i\'o c emão executa a dl.tIHadú tle;: ~b t C II I.I exec, qUI: ~ubSl i lU i seu prognunu e dudo~ pelo pmgnuna e dad o~ encont rados em um arquivu i:xeclll ávc! C~ I lt:ci lic"do CO IHU panlmctrn par.!. a c hlllllndn exec. Por cxemplo. quando um u~u~rio lIigi l:l um coman· L1n xyz em uni I..:nninul, (I interpr":lador de comallllos (~hcll ) executa fork para criar UILl p['{lcc~~o - lilhlJ . Esse proce~ ~u- filho ent ãn execut .1 axec purll cxecUlar o progr.una x)'z. Os dois prncc.)w~ currem em paraldu, com ou ~e l1l exec. a menos que O pai deseje c~ pc rar que o fil ho tcnninc an tc~ tlc ele própriO conti nuar. Se desejar eSI>c!mr, 11 pai executa ,I chamada de ~iS lCJl1a wail ou wa!tpld. (Iue fal com que e/e fique l>Il 'pen~o até que o filho temline executando exit. Após o filho cncermr, () p'li continua. ProceSS(b podem executur fork quanta!> vezes qlli~erelll , dando origem fi uma árvore de procc.)~tb . Na FigurJ ~ .3~ , por cxemplo. n prl)Ccs~n A executou fork duas veles, criundo doi s filh()~. IJ e C. Emào IJ t:lll1hélll executou fork duas veze~ e C a ":XCUllOu uma I>t'i vez. reSlIltando na árvore nnal de sei s processos. Prnc cs~O) cllllJ NIX pudclII ~e comunicar um com ti outro por meio de uma estntlura dCllominllda IJipe (conexão nu tubu ). Um pillt: é UllI ti po de hl.lffcr no qual um pmcesso pode c.)crcver um:1 cnrn:nt e de dndos c um outro pt1dc r.:ti rá- In. B )'te~ ~ãu .)(: mpre cctimdos de UJII pipe na ordem em (Iue fomnl escritos . .'\ cesso aleatt'irio não é po.)~ívd. I'lpc~ nào prc~c(\ .un frolllc1ms de mensagem; pon:lIlto. se um proccssn fi 'l.er (Iuntm escri t a~ ele 12K b)'tcs e li mllm liler uma IdlUra de 512 h)'les. o leitor ohterá IOdo!> o.) dudo.) no mesmo tempo, ~ell1 nenhuma indicação de que fomlTI e~cri l o~ em Vári:h 01}Craçõcs. Em S)'.)ICHl V e Solari~ , um OUtro modo de comunicação entre pmee~sos é li utili:t.ll~ãu tle liIus de mensagens. Um procc~l>o l)()lle criar lima 1I0\'U 1i!:1 de men Sllge n~ ou ahrir uma filu existente usando msggat. Cum uma fil a d..: men~agr.: n !> , I) pnlCl!s,o pode cuvinr Ill e ll ~agcn s usando msgsnd e recebê-Ia) 1I ~ lInd o msgrecv. lIá mu it us dife:reu'(", entre melll,agen.) ell\ me/a!. de~sa maneif'.!. e dados amontoodo!. cm um pipc. EIII prime:iro lugur, rmllll!lfa) de IIICII~a~en ~ !>ão prl!~r.:rywj ,t::.. au PoI.)Mj I/UC um pipe é apcnll~ uma corn:nte de: bytc~. EIII ~C~UII(Jo lugar. memugens U~lII priorid nd c~. IlI11'l.lllltl ,I::' m:.t1::. urgentes JX'H.ICIII pa~sar à fre n!," das menos impnrl'lIltes. Em terceiro lugar, Ilá , ip(l~ l/ C lHen.)d~..:n~ c, ~c dC~I!Jad(J. uma msyrecv I}ode eSI>ecific:lr um tilH) particu lar. Um muro rnecanbmtl .Ir.: cnmunicilção é li capacidade de dois ou nwis p roces~(J~ clllllllartilharCIIl uma regiilo de: ~..: u.) re~pe!.:ti\(ls e~p:U;i.Ilj de endereço. UN IX IIlllnipula c~sa mcmória comparti lhada mapeando as meSlllas págilUIS pam li eSJ)3çO de emlereçn vi rlual de 1000::. os Ilroct!.)sos cOIllpanilhantcs. O resuh ..do é que uma escrita rcalilutla por um pmccs~u CIII uma rr.:gillo cOlllpanilllild:l é Imcdllllamellle Y i ~ íve l palil os OUIrOS prncessns. Esse mecanl.)lIlo pmIH)r.:inna um !.:aJllltthu tlr.: cOlllunicação entre pmce.)so.) de largum de banda muitO :llla. As ch amada~ de MSlcmu c:nvolvHlas na memória cIJmpanilhada atendcm por nOJl1":::, C0ll10 shmat e shmop. Um uutro ul> pecw!lo SystcJlI V e So/aris é a disponibilidade de scmáforos {Iue, em essê nciu . funcionam «omll descrito no exemplo prodUlor-comumidur dado neste textn. Mais ltlll:L facilidade proporcionada por tndos os sistemas UNIX é 11 capacidade de: ter IIILihiJllus threiltls tle cuHlrole dentro de UIl1 lí nicn processo. Esses thrcads de controle, usualmente denominados ;Ipenui> threllds. são COIIIO proce.)Sth I,"ve~ 'Iuc companilhum um espaço de enclereço comum e tudo () que es lá associado com csse espaçu d..: e ndc rc~~u. com" dócritores de arquIvo. variávcis IImbienlais e lempori L'Hlorcs imIH)n allles. ('onllldo, cada thread tem i>eu prtiprm contador de programa, seus próprios regis tnldore:.~ e SII:I própria pilha. QUllndo um Ihread bloqucHl - i ~ t ll é. lem de pllrllr por um ecno tempo ;ué Ii/S concluir ou ulgwII outro eventn acont ecer - , (mtros Ihr..:ud ~ no lIle ~ mo proccsso conti nuam ap[()~ a exccul:lr. Doi.) threads no mesmo processo. que operam como pro· dutor c cnnsumid'lr, são ~e lllc llwut c s . mas não idênt icos. a dois processos. Cathllllll com IIllll1niellthread, que estãu cOlllparulh:mdo um I>cglllclllo ~k memória que contém um bllfTcr. As diferença~ lêm a ver com o futo de que, 110 il liilllu CilSIl. cada flf(~c.)~(l tCIll.)ell~ pr6prios descritores de Uftluivo elc., :10 pasMlllue, no primeiro caso. Iodos es~cs A
. - - P,DCaSIiO originai
flut.,a 8 .34 Arvore de processos elO UNIX.
c . --
Flhos da A
F . - - NelOI CIII A
•" •
~
o
•e • •
~
• •o
~
'". o
~
•> z
.. o
• ~
•
u
N
itens são cOlllpa!'lilhados. Vimos a Ulili 7..lU,:iill de thrcuds J:I\'3 110 exemplo produlur-coll§urnidor que denw, :lIIle ...
N
Muitas ve"lCS o sil'lcllUl tle execução Ja":1 usa um lhread de sistema operacional para cnda um de seus thread.... llIas
'" ••
o"
.., •o
~
8 o u
..,• ..,• •" o
o
"
•
w
o ~ ~
• ••m N
" O
não precisa fazer isso. Como exemplo de onde os thread poderiam ~cr líteis, considere um serv idor da \Vorld \Vide \Ve b. E..sc ~cr· vidor pOlleria manter li 11 In c UIl1 (hreao po r VCl. ace<;~e 11 recurso compartilhado. lhreads devem lravar o lI1utex a11l e~ de usar o r<.."Curso e de ~ tnlV á · l o (rllando condulrclH seu trabalho. Contanlu 'Iue looos os Ihrcads obedeçam a esse protocolo. 1)()(lelll-se evitar eundiçõcs de di ~ puta . ~ I Ulel(e ~ são COllln sernMorus bin(irius. isto é. semáforos quc podem assum ir sument e us valores de I) c I . O nume ' mutcl( ' se deve a(l falO de quc lI1\Lte,'(es são uliliJ.udos pl1ru gnrnl1lir c., clusão mútua em algu m rec ur~(). Mutel(es pudc lIl ser criados e destrurdos pelas c hamndas plhread_mutexJ nlt c plhread_muleX_de!i troy, rcspecli· Vl1t1lente. Um lIIutCX podt: est:lr em um de dois estados: trn vado ou dcstr:\Vado, Quandu UII1 thrcad preci~ a lrav"r UI1l lIIutel!. dcstmvlulo, usando plhread_mulex.Jock. a truvlI é ajustada c o lhrcnd COl1lillllíl, COl1wdo, quandu um Ihrelld lellla travar UI11 rnutcx quc j á eSlá lravadu. ele blU(lue;a , Quando o Ihrcad que eulucou li trava antes tiver cunclu{do a uti lização do ree ursu, d eve .leslm" ar o mutcl!. correspondente ch:nnando plhtead mulex untock. fi. finalidade uos mutexcs é traVl\r por curtu pTíl I.O, lal ("'O I!lU protcger uma va!iá\el compartilhad'l. Nãu ~ão t'ogitados pam s illcro ni/~l~'àu crando. o si nal é perdido, Variáveis de condiçilo não contam comfl se máforo\;.. Algull1" ~ outras ol>craçõcs também suo definidas por thrcnds. mutcxcs c vari<'h'cí.. de comliçi\o. Tabal.
B.8
Principais chamadas de thread POSIX.
Chamada de ttlread
SlgnHicado
Pthread_create
CrIa um novo thraad 110 espaço de endereço do chamador
vthread_el!.it
Encena o thread Que está chamando
Pthreadjohl
Espera que um lhread encerre
Pthread.Jnute~lnlt
Cria um novo mutex
Pthread_muteI_des"lroy
Destrói um mutel!.
PUlfead_mulelJock
Bloqueia um mutex
PlhreatLmutel..unlock
Desbloqueia um mulel
Plhread_cond_lnll
Cria UJnIl variável de condição
Plhread_cOIllLdc9troy
DestrÓi uma v8Ilável de condição
Ptlttoad..,oond_wait
E9pera em uma variável de condição
Ptllfead_cond_slgnal
LIbera um Ihlead que está esperando em uma variável de condição
Gerenciamento de processo em Windows XP
o XP suporia Illlíl1i plos prOCeSSOS que Iludem lIC comunicar e sincronizar. Cildll processo contém no rninirno
,;o é
o
um lhrcud qUi..:, por ,ua
\Cl ,
contém no mfnimo uma librn (lhrcad leve). Juntos, processos, thrcuds e fibras propor-
donam um conjunlll muito geral de rerrillllentas p:lr.l gerenciar paralclil>lllo em un iprocessuúoféS (má{luinas com urna única CPLJ) , hem CUIIlU em Illuhipn:x:t!sltadorcs (lIlálluinas com várias CPUs). Novo) pnJccs:.o~ :oUo criuclo:. IIsliIulo li função da API CrealeProcess. Essa função tem dez parnmclros, cada qual com muitalo opçõe~ . I~~ projeto ê claramente muito rnai~ complicado do que li e~qllellla UN IX, lU) quallorlt não tem
:.ó três: pOluciros para o l10me de arquivo a ellCCLuar, o vetor de par511léU'OS de linhas de comando (analisada),) e alo cadeias umbieutais. Em ternlOS gcmis, os dez purGl1letJ"O~ pam CreateProcess sno m scgui mcs:
parâmetro) c exec 1.
2. 3. 4. 6. 6. '1.
8. 9. 10.
II!I JI
Um punteim panl () nOlllc do arquivo ellt:Cutávcl. A lillha de I,;omalll!o em ),i (nãu Ilnali~tlluci"I paru us cade ia ~ ambientais. Um POJ\IC[W p:Jra u nmne du diretório de tmhalhn corrente do UOVIl processo. Um pO/ltcU'u p1m! uJIla eSlnll uru que dc~crcvc. a janela inicial na tela. Um flIlIlte!lH paro ullIa c),lrutU r.l q ue retoma 18 valores para O chamador.
a
XP não impcH.! nenhulll tipu de hierar(lui,1 pai-filho nem quulqm:r outra hierarquia. Tocln~ n, ProCC),30S ),[hl criadm iguululcnh':. Contudo, \ i!jto que I do~ 18 pllrfimct rcJs retornados parn o pf()cc),~o criad /lJ' é 11m Illilnipullldor para o novo pn'lCt!~~\l , u quc pcnllite considerável cO lltrol ~ M)brc o 1I0VO processo, há IImil hicrurquia implícita elll lerlllOS de <[lLcrn tem UIll manipula(lor para ([uem. Embora eS),C3 manipuludore~ não possam ~er pas3ado~ dirctmnente par:! \)utm), ]lrncc .. ),u~ , há um mod o de um prc)Cc),),o tomar ullla alçu adequada para um outro pmcc),so e ent:1n dar-lhe () Illanipulador, ptlnunUl a hierar(IUia de processo implícitu podc n30 dumr muito. ('uela pme~.\o)ol) nu XP é criado com um línico thrcud , Jlla~ um procc),so pode criar nlt,i), thread~ mOI i), tanle. Criar um thread é mui), ),il1lp[cs do <[ue criôlr um I)ruce),~u : CreateThfead tem upcna), ~ei~ parilrllctl'us, CIII VCf. de dez: li de~crillH de ,egurança, () llullunho da pilha , 11 cndereço de infciCl, 11111 parfllllctfO J t:linidu peln u~tIl1rio, li c ... llIdo inicial di) thrcad IproliW ou bloqueado) e a 10 do Ihread. O mlcl!'!!) é que criu tlt llrc;td, portllrlto de esl.1 dural1l~llIe I:icllte d (\~ Ihre:tds - [SIO é, eles não sno implemenlados pllf:l melltc em e~pac() de u~lIárit) , COIl1I1 é 11 ca~o cm alguli)' Olltr(J~ ... i ... ttllla~ . Quando ti lIIielt:u fal 11 e~calonalllento. ele não ll>Olllenle escolhe o pmces~() que cxecut,lrá cm :.eguida, mas tamhélll qualthrcad naquele pr()ce~~IJ. b so significa qUI! o m1c1eo está ),clllprc ciente de quais thrCll(b e ... tãu prontos e quai), e),tau hIOtIIlC,lI l o~. COIllO :o.ãll ohjetos de míclt:u, us threllds têm de~critores dc segurança c manipuladorc~ . Vi~1n que manipuladu,. par.. UIII thread pode ser pU~SUdll pum UIIl o utm processo, é ])ussf\'cI fluer com que lIIlI prOl;e~~() cnntmle m threa{b em 11111 processo diferente. Es~a c,tractcrfsticu é ,Í1i l para dcpumclurcs, por exemplo. Thread~ 11\1 XP ),;\0 rcl escalnnadus clll c),pa~'o u ~ uá rio pelu programa que a~ criou (ou seu ),islellla de clIecução). Cada thread pode tcr vária~ fibms , !lu nlC ~ IlI0 lIludu que um processo poc:kr ter vários threads, exceto que, l!wlIldo uma fibra bl(}(lut!Ía lugiceS, pipes nomeado),. mai!~lot)" sl)(luete)" chamadas remotns de procedimento e nrquivos companilhados. Pipcs têm dois modos: bytc e l11en ~a gclll , .\oclccit)llildo~ na hor.! dn criação. Pipcs de mudo byte funciolium do mesmo mlxlo (Iue em UN!X. I)ipcs de modo mcnloagclIl ),àu um pouco semelhullIes, mas preservulll fronteiras de llIl!nsllgens, de modo quc quatro cscritu) de 1 2~ hy t c~ ~erã() lidas COIIIO quatro mens,lgens de 128 byles, e não como uma mensagem de 512 hylcs, comi) õicontccerill cm pipc ~ de modo hyte. Também existem pipes nomeados, que têm os mCS1llOS dois mudos d()s pipcs nOflnui .... Pipe~ IlIl\l1c;l(lo), podem ~er IIsados em uma rede; pipes normais, não. M:tib,lob ),ão lima caructcristica do x.p que não está presente em UN IX. São semelhantes n pipc~ em cenn.\o a),l>c:ctm, ma), não em todo~ . Um dos aspectos diferentes é (Iue mailslots têm uma só via. enquanto pires têm duas; outru é que tamhém l>Odem ),cr mados em redes, mas não garantem iI entrega. Por fim, permitem que um processo envie 11 11111 lII e rl.~ugclIl broadca~t a mui tos receptores, em vez de a apenas um . Soquete), ),no como pipes, exceto que normalmcnte conectam processos cm máquinas difcremes. Todaviu, \amhélll podcm ),cr US,Uhb pam COl1ectj>luiO dI.! I!n dere~:u de B 1!11l nome de A e retomar o resultado para A. !-I 1'i várias restrições aos ]larâmetrl13. Por exemplo, nào fa7 sentido pu)sar um ponteiro panl 11111 pmeesso difcrcntc.
ur;,
M Ol N
•
"uo
-"
• •
o
•e •
. ~
•
o
•c
.•" o-
~
•
o
•>
"
"• "
... O>
N
Por lim. processos po\lc lI1 compnrlillwr rncmúrifl mapea nuo par:! o mes mo arqui "fl ao mesmo te mpo,
Então. todas us esc ritas fe itas por UI1I processo aparccCl1lrtu es paço de cndcrcl,;tl dns
(Julrn ~
prucc'\!'us. Com
c"~e
IlIccalli smu. o bufft:r compartil hado usmJo em 1I0SS0 exemplo produto r-consumiúor pode ~CI implementado com
faci I idadl.!.
•"o ~
•o ~
B o u
•
~
• •
-..
~
o o
"
~
o
•• • o •
~
N
-'"
o
Exata1l1crlle como fornece v:'irio~ mcc;lI1isl1Ios de comunicaçào entre processos. li XI' !fImhé rn u ferece lti,'cr.'lOS mecanismos de sillcronizlIçàu. incl uindo scmMoros. mutcxcs, seçõcs crflicas {' eventos. TOo para WaUForSinglftObject, Ile modo que o thread chama
em
6.5
Resumo
U sistema Operac1(lll al pode ser considerado como UIII intérprete para ce rta ~ ca rac t err~ tiea~ de arquitetura não enculltradas no uIveI ISA . Entre as princ ipais estilo me m(lria virtual, in s t ru, õc~ de EIS virtual e fadlid ;lll e~ de process;un cnto paralelo. Memó ria virtual é u lI1a caractedstica de :!rquitetura cuja finalidade é permit ir
'"m
Problemas 1.
N
Por (IUf! Ulllloi:.tcll1i1 operacional inte'l,reta so mell1~ algumas das inlotruçócs de nívd J. cllljuólnto um Illicroprogralllll imcrprl!ta toda:. as in s lru çõe~ de nfvd ISA'!
2 . Uma máquin .. tC UI c~ pac;o de cn(kreço virtual de 32 bits cmlcrcçávd por hyte. O lamunho da página é 4 KB . Quallta!> págin.ll> dI.! c!>paço de endereço \'irtual ell.i!>tcrn? 3 . É necc)"ário 'juro! o tamanho da página seja lima potência de 2'! Uma página de 4.000 b yh!!> de tam,mho, por exemplo. poderia )c!( implcl11clllmla, em teoria? Caso 11 resposlu ~cja posiliva, isso seria pnídco'! 4 . Umu memória virtual h:!m ullIlUnlnnho cle página de J .024 palavras. oilO p:lginas vi rlUais e página!> fí... i co~ A tahela ele páginas é a scguill1 c: Pagma virtual
Quadro do páglna
o
3
2
não estA na memórla principal
3
não es-tâ na memória principal
4
2
5
. não esté na memória principal
6
O
7
não estA na memória pnnClpal
íjllll!rO
quadros de
•c o
u
•
•"o. o •
•• "
~
• •o
~
.= ~
" • .,> w
a. b.
Faça umll li~l a de lodos
cnderc-ros virtuais que cau sarão falta s dI.: páginH. Quai~ ~ão tl~ e lldl!l\:çu~ risico~ para O, 3.72K, 1.023. 1.024 , 1.025,7.800 t! 4.096'1
o
tiS
5 . Um cl\mputatlllT te m 16 páginas de e~ rmç() de; endl!reço virll!:ll ma~ apenas quatro quadros de pági na. De inido. :1 IUcrnóri" cMá v.a/ia. Um progmrna rcfercncia as páginu~ vinuiJi~ na ordcm
0,7,2,7,5,
6.
IS,~ ,
1.4
ü.
Quai~ rct crênt!Ía~
b.
QtI:lj~ rd clêm;ias ca u ~:un uma fali a de página com
causam uma falia de página com UH )'!
FIFO?
Na Se\'àu 6. 1. I roi !Ipre~cmado UIIl algoritmo para illlplemcllt:lr urna cstntlégia dc S Uh )l it u i ç~o de pligin:l!> IU\'C llle UUHI c~ trllt ég ja mai s dicielllc. Sugestào: é pos~h' cJ atulIlizar {I ct1nwdur na página recé m-earregalla seUl 1I1e)H:f na~ nutras. }oi FO.
7.
Nll~ si~t..:ma!> paginados di scutidos no tcxlu, (I tmtadnr de f:llta ele pág inn eru parte d o nível I$A e. l'Im i!>stl, não e~I:I \a próenlc nu c!>pa\:o de endereço de (IUtllquer progntma de nfvel OSM . Na realidnde, o trJ Hldor de falia de págilw tamhérn OCUp:1 pági nas, e ele mcsmo poderin ser remov ido sob cenas circullsriincias, por excm· pIo, polít ico! de ~ulhti flli \fão de páginas FIFO. O que aconteceri .. se o Irntador de falia de página não estivesloe p re~e n t c qlH1I1d,r ()corre~~e lima falia de página? Como isso [)Odcria ~c r cOIIsen ad/l?
8 . Ncm tooo,> o~ compul:tdores lêm um bit Ile hunlwarc que é aulomalicalllcnle ujuswdo (Ju;llldu uma página sofre uma eM:ri l:t . Nilo uhl\t,mlc, é lítil moni torar (I\lni~ páginu!> roram rnodifieadus para evitar s upor (I pior dos ca~()~ e c!>crc\er tnd a~ as pági nas de volta paTiI o di sco após 11 utilização. Admitindo que cada pági n3 tenhu bib de Imnlw3rc punI hu bililar IIce~so para leitura, escrita e execução em sep:lI':ldo, celmo o sislema operacional pOtIc Illoniturar qu;t i~ p:ígi lla!> c~ t ão limpas c quais estao sujas'! 9 . Uma IllI::IllÓri:1 ~eg ll1enllldil tem segmelllos paginados. Cada endereço vinllal tem um numero de segmento de 2 bil:>, um mímern de págimt de 2 bits e um deslocame nto de 11 bits dentro da página. A mem6ria principal contém.H KB ~Ii vididos em págintllo de 2 K H. Cada segmento é somenle de leilura, ou de leitura/execução, ou de l eilu ralc~t: l'itil , 011 de lciturwescritaJexecuçiin. As tahelils de pági nas c li pr"lcção são as seguintes:
Segmento O
Somente de lellura Pégina vLrtual
Quadro de página
O
9 3 Em disco 12
I
2 3
I
Segmento I
Segmento 2
Segmento 3
Leitura/execução
Leitura/escnta/e.ecu~o
Leitura/escrita
Pégina virtual O
Quadro ele pagine
I
o
2
15 B
3
Em disco
Página virtual
Tabela de páginas não estA na memória pnncipal
O I
2 3
-•... o
Quadro de pagina
"I 6 Em disco
u
'" N
Para cada um d o~ seguinte!! acessos à 1I1cml'iria virtual. digll qual é o endereço ffc:ko calculaJu. Se ocorrer UntA fallíl. informe o 1;1>0. Acesso
•"o ~
• "e
I. busque dados
Segmento O
2. busque dados
10
3. busque dados
3
4. armazene dados
O
5. armazene dado!
3
~
6. armazene dados
3
~
7. desvie para
~
o
u
• • •"
" "
u•
'l·mm.! Deslocamento dentro da pagina
8. buaque dados
3
2.047
• 2
O
I'
3
100
O
2
50
9. bllllque dados
2
O
S
10. desvie pata
3
O
60
o ~ ~
• "o •
'"
o"
10. Algum; cOIllJlutadures permitem EIS direlmllcntc p:ml CSpflÇO de usuário. Por c;
procC!i~O
muôirio. Isso causa algum problema
se for UJ;:Jdo cOl11pac\;u,ão para implementar a memória virtual ? Discuta sua rt'ipü<;[a. 11 . Sislem:L'i operaciollais que permitem arqui\'os mapeadus na memória scmpre requerem que UIl1 arqui\'u seja mapcadu em front eiras de p:íginas. Por excmplo. CUll1 páginas dc 4 KB. um :l1'tjtli\'o pode "cr mapeado come· çando no enuelc,,"o vil'Hml 4Jl96, tlIa~ não começando no cndcfC(,-o vi rtual 5.000. Por quê? 12. Quandu UII1 reF.istrmlnr dc segmento é carregado 110 PCntiUlll 4. o descri tor corresponde111 c é buscado c CArregado em UI1II1 pmte iuvisfvel do registrador de seg mcnto. NA sua opinião, por que n~ Jlroj!.!li~l:I" da Intel deddirUIl1 fazer isso'! 13. Um progn11lm nu Pcntiulll 4 rderenda ~cg I11CJltO lucnl 10 C\llll deslocamento !tOOU. O campo BASE du scgmento l.DT 10 contém lO.lXX1. Qual entnlt!a de página de diretório o Pe1ll1uIII4 0,,:1'! Qunl é o mímem da página ? QU
te:. ao:. maiol\' ~ ilr'l\livo~ U:'lIl1hUcllte ocupam cerca de 95% de todo (1 espa~'o de c1i~o em u:.o. Com esses dados em lIlã()~, iI que cooclusão você rode chegar sobre o IUmanho do bloco de disco'?
23 .
C()IJ:. id~fc
b.
Il flun~r Lima única ( ' PU que troca processos a cada ItX) rmo'! DILa:. CPt ':. compartilhi.rem uma mcmória comum na qual o sCIllMoro c~t:'i lucalilildo'?
24. A Nt!\er..:ra:.h 0lll!taling Syslcm Company vem recehendu 'Iueixas de alguns de :.eLI.~ clientes sobre seu .ll1imo l an~:um:nhl. 'Iuc inclui oper.lçõcs de semMoru. Eles acham imordl tlllC m processo!> blO<j1Lcicm (o (!ue chall1illl1 de 'dorll\ir utl\ruh:.lho'). Umil VI:Z que a 1)()lhicit li.. cmprCSil é dar uos clielltl!s aquilo 'Iue dc:. dcscjmTl. foi proj>OSIO udidonur url1U tcrceiru operação, peek (espiar), plln.l :.uplcmcntnr up c down. Peek ~implcslllcnte cxamina () :.cllulfllfO :.t.:11I alterá-lo nem bloqucar ti proccs:.II. Desse modo, progralluts '1111: nchum qUI: é illlnrul hloquear pm.km ill~pcci()na r {I :.eH1áforo antes parll ver se é seguro fazer uma down . ES:.l1 idéia funcionará se Irê~ ou mui:. pI'l)C!.!~~Cl~ u:.ãrem o :.emáforo'! E :.!.! dois proce~~Os usarc:m o scm:ifow'!
25. Monlc: uma t:.hcl;. para l1lo:.tmr qu:.is dos proces~o)i - PI, P2 e P3 - estão C.>.ccutllJldu e 4UltiS e:.tão hlO.1I é rdniciutlo, i~w é, PI obtém preferêncii. ~ohre Il 2 e P3 e ulo:.im (XII' ,nanle. No início, Indu:. IIS trê~ e~lãu excl. utando c I) :.emtiforo cSlá eUI I. Em/ I:m/ Em / Em / Um /
...... = '=
N
o :.cguillh! méu)(Ío pelo qual um silitcmil opcracionul poderia implcmcl1lur imtl'Uçtks de semáforo.
SClllpn: (lue a (' J'U c)tiver prcstcs a fazer uma up ou umo down em um semáforo (uma variável intcir.t lia nlel1u'lri:.), em priuu.:iro IUgllf da estabelece a priurid:ItJe da cru ou muscara bils d..: modo tal que desabilitu 100hl) ,Ili inlcnup\:õcli. ErllnO ela busca o semáforo, U l1Iodificêl u desvia de acordo. Por fim, ela habilita interI"UI)ÇÕI:::. mwarucut..:. Es~e método runciona se a,
'"m
HMJ 2tX) 31)0 -100
P I fai ulLla Pt laL uma Pl fal IIl11a li I fal IIl11a 500 P I r;1l umll bn/ - flUO 1'2 I.LL uma Em / +' 700 1'2 1';.7 urnu Em f "" 8(0)l1 hlL um:. Em / = IJt)() 1'1 f,li' uma
down down up dOWJl down up down up up
26. Em um liiMem,. do.! re!>Crva!o de passagem aérea:. é nuccs:.:1rio gilralllir que, enquanlo um processo estiver ()cu· plldn LL:.ando 11m ,arquivo, nenhum OtLlTu proce:.so poder:! usá-lo. Caso cUl1Irário, dni:. proce~loú:. dircrcntc ~, que tl1lhalhal1l parti thJII~ agêllciu~ de viagens diferentes, ptltlerialTI , inadvertidamente, \'cnder ,a líltima poltrona em algum VÔtl. IJ1\enlc um método tle si ncronização quc u~e Semáforos para garl\Jllir que ~omente um proces:.tl 1)01' VCl pu),:.a ilce~~:u cudu urquivo, considerando quc tiS proccs:.os obedeccm lls regms. pol> ~ ihilit 'l r a implc:melllaçlln de sUJlláflJros em um ('omputador curn vária~ CPU~ que companilhmn umil memória comum. u:. urt[ui lelOs de compuuldores CosHlIllum fornecer u insll1Içao 'leM c Sei l.ock (Teslc c Trl\\'c a Trava - TSL). TSl X Ic),ta il localização X. Se o.conlelido for zero, elas são ajlL~l.:Idas para I em um único dcln imhvisívcl de mumória e a próxima insl nlçãn é saltada. Se for não-z.cro. li TSl age como uma no-op. Usando TSL é IMllo~fvcl Cíocrever procedi menlos frx-k e UI/toá com as seguintcs propriedades: tock (xl vcrifica pari. vcr se X e~lá lnJ.vada. Se não estiver, ele trava,\' c devolve o corl\role. Se,\' já cSlivcr lravuda, ele espera alé (r ue x lo~ja de ~tr.l\il(h. , emão trava x e devolv~ o conlrole; wllnd libem uma Imvu existente. Sc todos os pro":c:.~o:.lravarem a t.. bela de )emáforos antes e illL~arelll sOlllem/! um processo por VCI., j}ode·se mexer nas \'arirt· vcil> c IlOn l eiftl~, evi taudlJ disput:LS. Escrevo IU{'k e JlII{ock etn linguagem de mOl1llLgem. Considere lud(lO IlllC for nrwâvcl.
27 . Parol
28. MOl>lre 1)), vul lJrel> de;1I e 011/ para um burrer circlIluf de 65 palavms de compn mclllO após cadu uma das seguintes operações. f\l1lba~ inici,un em O. a.
22 pulavm:. :.ãu colocadas 9 palavrol:' ~;lll retiradas c. 40 jJaluvnt:. t>ão culocadas d . 17 palavralo :';'{I) rClinulas O. 12 pulavnt.) são colncadas f. 45 palavru:. !.iln ro.: tirauas g . li palavra:. !>ãll co locll(la~ h . II palavra, ~fiu n..:timdns
b .
29. Suponha que LIma \cr:.ão do UN IX use blocos de disco de 2 KD c armazcne 512 endereços de disco IlOr hluco imhrClO (liniclI, duplu e triplo). Qual scnu o lIunmlho máx imo lle arquivo'! (Considere que os poll1eiro~ de arquivo têm IH hlll> de lurgum.
•c o
u
•" •
~
o
•••• •o o
'•.
~
2
u
•> z ~
o o
· ~
o•
O'J Ol N
••"o ""• o
~
S
o u
•
"" • ""•" •o "
• w o ~ ~
• • N
30 . Suponha que ::l chanllldu de unlink{"/usr/asVblnlgamen
~il' t cl1la
UN IX
fu ~'te CXCÇlLIad ll IIlI corlleX IO lIn Figura 6.31. Dcsnc"n cuidml\l~n 11l ent e quai ~ ~il t1 a~ alle l il~·t}C~ fc ita ~ nu 1'1"ICmo de diretÓrio~.
31. Imugine que você tives"c de implcllIentllr o l' i ~temll UN IX e m um microcnlllputador cuja me mória principal fusse pequcna. Após cunsideráveis ajustcs aq ui e ali. ele ainda não cabe mui to hem, portanto você e"Col hell aleatoriamente uma c hamada de sistenm parti sacrilicar c m prol do hc m gemI. VOI.:ê c<;culhcu pipa. que cria oS pipes usados pal1l enviar correntes de bytes de um processo pUni uuLro. Ainda é pus~f"cI, de algum:! forma. implemcntar rcdirccionn1l1Cllln de ElS1 F. pipeliucs1 lJi l'cuta u~ prohlernas c u~ pos~hci ~ soluçõe".
32 . O COlHi tê de Justiçu pura os Descritorcs de Arquivo cstá orgnniz:lI1do um prote:;lo contra ti sislcnm UNI X porquc. tt)(la vez que c:;tc retorna um descritor de arquivo. sempre retoma o número mais hai'U) {llIC nâll e.~Ui cur· re ntemente em usu. Em conseqilênc ia. descritores de arq uivo de mimero mais a Uo {Iuuse nu nca são utili:l:atloli. O plnno é retomar o nÚl11em mais baixo que ainda não foi utili;;:;u.lo pelo progr.lIl1u em ve7 do mímcru m:li ~ b.,ixu que nflo está correlllemellle em uso. O Comitê dt!cl:lfll (11Ie li implementação é Irivial. que não arct ur:11l~ progrnrnas existentes e que é mais ju ~tn. O que você acha? 33 . Em XI' é po~sívcl estubcleccr uma li st" de contmle de "cesso de modo tal que Rohcl1a llão tenha nenhum nces· Stl a um arquivo, mas tudo o resto dn pessoal lcnha acelOSO a ele. Na lO ua o pinião. como i ~~ o é implementado? 34. lJc~crcvu dois moUQs diferenlcs de progr:ul1ar problelll:ls de produtor-consumidur usandu buffers cUllIp;utilhadus e semáforos em X P. Pen~e em C0ll10 implementar o bu llcr compartil hado em cada cu<;o.
d
35. É COlll um testar algori tmos de ~ubslit uiçãu d" página por si mul:lção. Neste excn.::ício você dcvc C~' revcr
~
simu lador pam memóriu virtua l baSClIdll em Jlágina~ p'lnl \111m máquinu COIll (,4 páginu ~ de I KU . O ~ imula d{)r deve manter Ul11<1 úllicu tabela de 64 entradas, UniU por p:\gi ulI, que contém o nÚlIlcm de r :íg iuíI ffsica correspondent e àqudll pngiun virtual. O simulador deve ler um ar<juivo que contém endereço" virtllai~ em lIi~ t c ma dt:ci mal. um e ndere~'u por linha. Se li página corrc~ l}\ lIId e n te estiver na memória. rtpena~ rcgi~trc urna presença de pági na. Se ela não est iver na lIIemória, chame um procedirncnln de ~ Uh" lilUiçil() de página ]Iam c~cnlhcr uma p.'1giml pata ex trair (isto é, urna entrnda na tabela a ser sobrescrita) c regiqre uma nu~ência tle pág.ina . Na real idade. nào ocorre ncnhum tflU1"llOrte de páginu . Gere um artlu i\'U que consiste (' 111 c lldcreço~ aleatórios e teste ti desempenho pam LRU e FIFO. Em seguida, gere. um arquivo de endcreços nu qual r')f, doe; endereços sao tjual\"\) hyte~ mais altos do que t1 anterior (para si mular localidade). EJlcclllc te~ l e~ p
o"
UI1I
37. I~~crevn um progrnmu Pllr!l UNIX ou XP
o
nível de linguagem de montagem
ci paJ ,Iheu la o~ rm ...
pnr· cordos. Ilais á os ;esuu'! ha-
um Ila-
0'te-
rna Ira de
u,
'" o,
,,le
'e° la
e u
eapftulo... -l, 5 c fi discutimos treS níveIS diferentes presentes na maioria dos computadores contempMiincos. E~tc capítulu IrÕlt •• jlrHHun:hal mcmc de um outro nível que. em e!i~ê nci a . t.. mbém e~ t á prt:~e nt c em todos os C()lIlpu t lldc,..,.:~ nmdcrno~: o rmel da linguagem de montagem, O nível dH linguagem dc mlllllítgelll tem uma caracterfstica ~ i gnificillivamc nt e difen':l)tc cm rela\'ih) UIJ~ níveis ela rnicruarquit cturn , ISA e ele máquina ele s i ~ l c ma o peraciona l - é implarrlad(1 por tr'lduçãn e m vez dê inter pretação. Progn.lrn:" que Ctm" er! cm um pmgmma de usuário escrito em alg uma linguugem pam uma Outra Jingrragem .\ :'0 (!l.:nomi mt do~ tnHlu llIl·CS. A linguugem na (IUal o programa originBI é e ... crilt) é cknmninudll Iing ulIgem-follte. e a linguagem p.lnl a q ual clil é com enidil é dCllominada linguagem ' lIh o. Ambas, linguagem-fonte e liuguug.cm.a lvo, de fine m nh ei~ . Se: houver um proces~ador {h~lwlllfvel '!(le po ...... a execlllar direlalllcnte progr.l.Ina~ escritos em linguagem·fonte. não hánenhulllu /l~ t:e~~id ade de traduLir o pmgmma-fume para a linguagem-alvo. A Irllduçiln c u! nào paról" linguagem fonte . Se: a trad ução li,i n:alizada corre:tamenle, li execução do prngnunu tmduLidn dani exatamente (I:. mesJ110~ rC~Hhadm (lU!;! ~l execução do programa· ft)IH c dadu se houvesse um proces~,ulor di~]lunfvel para ele. Por en/lsc:qUência, é pt)~ ~ívd illlplemc rua r um novo nivd para o qual n30 há nenhum proce:.sadnr, cm pri meiro lugar tTiltluzindo progrll m u~ escritos para t:~~c l1!vel para um nível-al vo e em seguid:1 executando os pmgmmas no nr,'d -:tlvo resultante. l~ impon '1l1h! oh...ervar a di ferença entre tradllç~o. de um lado, e interpretaçiio. de nut ro. Na traduç:lo, (I programa m igi· nal na li ngu:tgclll fnruc nãn é cxecUl ,I(\O diretamenle. Em vez disso, e le é convertido para um pmgruma e1luiv,llentc denomi nad~, Il/'Ogntlllll-ohjcto IIU p rogrlllllll b inlÍrio e.xccutá \'cI. cuja execução é reali zada somente após a co nclu~ã() 11:1 tmtluç~!I. Há dua ... e tllpa~ Ih'lLnta~ /Ullratluçiiu: 'b
N
1.
2.
Ger:u,iio de UIII pmgr.ullu equivalentc na lingu'lgem·alvo. ExeeUfiao dI! pl'tlgramil rl!cé m·gemdo.
E~sa~ dlla~ C1ilpll~
não ocorr':J\1 ... imuhanclllllente . A !
ape ll
299
o o
7.1 Introdução à linguagem de montagem
M De modo gc .... 1, tradu tores Ilodem ser divididos em doi s gru pos de~)Cndcnúu da rcla~'ã() Clllre a linguagcl11 -rollle linguagem-uIvo. Qumu.lo a lin!!.uagcm. fonlc é. em essência. UtnIl represe ntação sill1b(llkH paru um" linguagem de tlllíllu;rHl llulIléril.:lI. n tradutor é demuninudt) assemblcr (lIwllhldur ) e a linguagem. fonte é denomi nada lin jtoll~e lll dI." m untllgem (os,fe1llbl)' tangI/age). Quando li linguagem-fonte é ulllalinguagem de al Io nh'cl corno Ja vlI (lU C e a linp.uagem-alvo é limo linguagem de 111~(luilla numérica nu lima rCrrc.~nl!l\,ã\) o:imh61ica de urna lill~tlngcm de máquina numérica. li Iradu!or é denominado co mpilador . l'
-• ••o
~
,
ti
~
• o
U
•
~
• ,• ,
-
~
"
~
o ~ ~
• N
C
•
~
o
1.1.1 O que é uma linguagem de montagem? UItW linguugern de montagem pUni é UlIltl linguagem na (]un l cada dcclaral<~o produz e'(atmnente uma instfllção de l111í'luilltl. Em uulf'llS palavras, há uma correspondência um-para-um entre instruçiks Ile má(Juina c declaraçõe~ no programa de montugelll. Se cada linha no programa c m lingutlgelll de mOl1lngem conti ver exata mente uma d ednrtl~'ãu e cnda palllvrll de máquina contiver cxatamente umn instruçào de máquina , então um progrmml de montagem de 1/ linhas produ7irá um progranm de linguugem de máquinn dc /I palavra... 1\ I1v,.l10 por que as pessoas usamlinguugem tle montagem, ao contrário de progl1ullnção em lingu;lgcm de m áqui IUI (em hexauecimal), é quc é Illuito mais fáci l pmgramar em linguagem de 1Il()lltagclll. A utili i'tIljào de l1 umes simbólicos e endereços simbó licos em vez de binários ou octais f'll. umo enonne difcrença. 1\ maioria das pessous 1)\1(le se lembrar de que us ahre\'iuturas pillU somar. subtmir. multi plkar e dividir s.'io ADO. SUB. MUL e DlV. mas ])oucas consegucm sc lembrar dos valores numéricus correspondentcs que a m:\4uinn usa. O progrdnlador de linguagem de montagcm só precisa se Icmbrar dos nomes simb()licos porque o assembler os lmdu7. pam inst nHiüe ~ de lIl:aquina. I\s IIlcsmas observal<ôes se aplicam a eudercçus. O programador de lingoagem de montagem pod e dLlr nomes si mbó1ic{)s a 1Ot.:11liz:lçües de mcmória c dcix:w para o asscmb1cr a preocupação uc fornece i os valo re ~ Ilumérico!l C ~lrrc t o~. O pmgnuutluor de lingtltlgclIl de mfl qu in a deve sellLpre trubullmr com os valores nu Illéricos dtJ~ cndereços. Como eonscljilência. hoje ninguém programa em linguagcm de máquinLl, embora i~s(J ac()nteces~e décadM atní ~, antes da invenção dos assemblers. Linguagens de montagem têm uma outra propriedade. além do mapcarnentu um-para-um de dl.'C l anl~·i)es em linguagem de montagem pílra inslruçües dc m~quina . quc as distinguem de linguagens de ultu níve l. O programador de linguagem dc montagem tem acesso tltudos os tlspcctos c in s tru~·õe.~ disp(lnf"ei~ na mJÍquina-alvo: t) pnlgramador de linguagem de alto nfvcl não tem . Ilor excm p](). se a mál]uina-alvo tem um hit de vai- um . um prognuua cm linguagem dc montage m I}ode t e.~tá - lo, mas um progra ma em Java não pode tes tá-In din.' hllllc nte . O pl'OgnLl1Hl em li nguagem de montagem pode exeeutar t(K1us as instruçi3cs presentes no conjunto de jn~trlll".'lo da mál]uillll-al \'0. IH"S Il l)rngnllna em li nguagcm de alto nfve l niiu pode . Em suma. tudo o {lue pode ~e r fl'iw em IingulIgcm de máquina podc ser feito em ling uagem de montagem, IHUS muitas instru ~·ões. registradores e caraclcrí~lica~ si milares não cst:lo di sponfveis l)aroL util ização pelo programador de linguagem dc alto nível. I.inguagcns para program ação dt· sistemas. (' (lnIU a C. fre4Uentemente !>ão um híbrido desses lilXls. com a sintaxc de uma linguagcm de allll nfvel. mas ctlll~c rva nd o muito do Acesso à lI1á(IUi na de 1I111a lingungelll de rnonlngem . Uma difcre n ~'a tinal que vtlle Il pena explici tar é que um progra ma em li n gua~clII dc 1I10ll lagem slÍ podc ser execLLwdll em uma fmunia de nu'iqui nas. ao passo qoe um progrunw escrito em uma 1ingullgclIl lle alIo nlvcltem n capacidade IlIJtcncial de ser executado em muitas máquillôls. Essa c;lpacidade dc transfcrir sol'twure d~ unm má(luin:l para outra é de gr.mde inwortância prática para lIluitas npl il·ações.
1.1.2 Por que usar linguagem de montagem? Pmgrumação em lil1guag('m de lllonragCIII é diffcil - não se il uda. Nilo é pam c(J"Ilf(le~ c frul·Otes. A lém do IIIl1i ~. tlI11 progmlllil cll1 1ing ungl'lI\ de monl ngcll1 dcmoru lIluito mais do que escrever" lI1e~ II\ O pro~r;ulln Clll uma lingungcrn de nllo nfvel. E tnlllbém demora muitt) mais para depura r. nléur de a manutenção ~l'l' mil i\() mai~ tlirlci1. Otldll~ cssa~ condições, por t]ue alguém programaria em linguagcm de lIIt)ntagern'l ll á {Iua ~ mli"'e~ : dl· ~cm"e· uho e acesso ti máquina. Antes de tudo. um progrmmLdor cspcdali711llo em li nguagem de 1I10 nt:1gern IXHJe Imxlui'ir muitlls ve7.es códign mu iro menor e mu ito ma is rápido do q ue um progl1unador de linguagem de alto uf\d . Para algumas aplicaçõcs. I1lpitlez e t.uml11h(J sã" crlt icos. Mui tas npti ca\'õc~ embutidas. comu \I dkli!!n cm um carr i10 intelige nte (.\'111(111 mrd). o códigu em 11m telerone cclulur. f!ril'(' /,j' de dispusit ivos, roti na.. de BIOS e os la~o~ intcrnos (Ie Hplicações de dcse mpenhu crftico ctien, nessn catcgoria. Em segundo lugar. alguns procedi mentos precisam de acc...so completu ao ha13lware. algo que às vezes é impo~ sf\'el em lillglmgens de alto nfvel. Pm exemplo. os lraladores de intelTllpçõcs e cxcel
c
"
progralllfldorc!o de lil\}!;uagcrn de lIlontagem. O progr.una final poderia executar o padrão de comparação em cerca ele 33 l>cgumlo:. porque um progrdmador inteJigtmte pode ganh3r ele um compiludnr inteligente por um fatur de 3 (cmhufll hJj:l illlindíi\ ..:i) controvérsias l>obre elo:.t! Ih.: ;,!>a uhserVl'uj:10 de que somente uma mimiscuhl fração do código é re!opons.ávd pd:l maior pane do tempn de (!>.ccw,:ao, é fIO»ível LIma oUlra ahunlagcllI. Primeiro o progr:una é cM:rito em ulHa linguagem de ahu nível. Então é rc.llil1Ut.1 unta M!lic tle IIlcd i ~ões pam dClennilwr quais p'1I1!!:> do pruglullm !tão rc:.poni>ávcil> peja maiur paJ1e do h! ll1pO de c\cCLltrão. Tai:. mecliçOes nonnuhnl.!I\lc i ncluiriam tbar o relógio du !>i:.lcma panl calcular a qumtlidudc
de ICLllllO g:I... la cm calla pmccdimcllIu. monilomr o niimem llc vezes que cnda Inço é ex~culado e ~Iapas simil.II~. ConlQ cxemplo. \'.. mo~ udmil ir que 10% do progmm;I IOIul é rcsptllblh'd pur 1)0% do lempo de exccuyfio. b sn i>ignilicu (Iue. IlJfU IIlIm 1Ur~fa d~ 100 segundos, 90 !>cgurulos i>1\0 gllsws com es~el) 10% crílicm. e JO !>eg und o~ Slill g;l !>w~ COlll li!> re~l:lJlte!> 90% do pmgranUl. Agor.!. os ](l% críticos podem ~c r melhorado!>, rec!>crcvendo·o!> em Jin· guaj.!cm de lIlOl1lagcl lL. E ~!>e proCl!s!>o é denom inado ujus lc c é ilu~ l rJdn na Tllbcla 7. 1. Aqui .)ão Il eccs~árill!> nwi!. cinco prognu lllldufI':S-.LtlU!> para rce!>cr.;vcr os pmcetlimel1to!> crit icu!>, mas !>cu tempo de cxccuçi10 é I"l!dULidll dc 1)0 ~cg ulld t)!> para \O !>cgundos. é 1I1!>ll1ll hu clJmpu!"ar a abnnlagern miSla lil1gu:lgclll de nho nívclllingungcm de lllOll! agem COlll:! verMiu em linguagem tle IllCllltagcl1I pura (veja a l àhelu 7. 1). A 111lima é cerca de 20% nw i!> rápid;l (.1.1 ~egu ndos cOlltm 40 !>cgulldmJ. lllm. LI preço é mais do que l rê~ vczc~ mais alw (50 Jlrogral1ladores·a ml~ CCll l!f;l 15 !lrogmmadores-:mns). A lém do 111ai ~ 1 li \'illl l ;l~cm da abordagem mi ... la é rcalmcme maior do que :1 iuclicnda, porque recotli licur pura códl gl) de mOlltagclLl um procetlimento cscrilo em linguagem de ahu uível c já depuradu é, de falO, muito mais fácil tio lllle L!~c re\..:r \I lIle~ll1n procedimento em código de monlagcm cOIncçando do Leru. Em Ul u ra~ palavras., a e~ull\ali \ li de 5 pnlgralll;Hhm:,-anus para reescrever os proceclilllClllUi> críticos é uma previsno exce~siva mellte conscrvudora. Se , na \ crdaLle, e5~lL recoclificaçiio levasse !>omenh! 1 progralllildoNItlO, li r.ll.ão entre" 'u!>to d,l abordagem mistJ e dll uhurd.lgCIII dOi linguagem de m ontagem pura rc:!>uhariOl em mais do (lU!! 4 pnm I em favor d;l abordagem rnil>ul . Um prngramadnr que usa uma linguagem de alto nível não se preocupa em mm'cr bits de um lado par;I tlUlrn c às ... eLe!> co n ~eguc ler um discerni mento do pftlblclml (IUC l)trmilc mclhoriul> retl;j' no dc!>cmpenho. Essa situa\'iio rílrlllllClltc ocon.: com progr:ull"dores de linguagem de l1lonHlgem, (Iue nonnal mcnte cSlào tenlundo manipulrlr illS' InlÇ&!!> pura ptlupar alguns ciclos.. 1..c:\3ndllt udo i!.MI em conta, há ainda nO mínimo qualm hn;t!> razõcs pam cM utlar linguagem de lllonlugclll . A primcinl é que, '111110 ti M"C!>SO (lU o fraca~s(J de 11m grande projeto pode depender de ~e eon~eguir cXlrair UIIl fator de mdhurin de ~ nu ~ do dcsempenho de ,11 !:lll n ~ procedimentos crftic()~, é illllKJrlanlC puder e!>crevcr um bom códi· go de linguagclII de montage m quando for realmen le nece ~~,írio. A )eguml.L é que tI~ \ eZé~ o código de montagem é a tí nkil ultemaliva dcv idt1 à l!l'>ca~!>cz de memória. ('Ilrriks IIItcligc nle!> eomem umll (, PU, mas poucos têm um l1legubylc de memória, e um mimero menor ainda tem um disco rfgido pHnl ]1uglllUr a memória. Ainda M.~im ele!> têm de efetuar cOntlll exo!> "i lculm criplográlicos com recur~o~ lirnillldm . P roces~acl()fes embulidtl!l em c l e [ft)d o lll ~S licos COslUll1am ler uma memória mfnima Jlor nl lõC~ de c u ~h J. Agend,,~ digilais (PDAs) e t)UlroS equipamelltos elt!lrlinicus i>Cl!I tio acillnado~ por ba1t!ria eos· tumum ler men Hln a ~ pequcnltl> p!lru C\) n M~rV;l r II en.:rgia da blllcria, porlllnttl, wmhilll IH,',!'!e l!.I!>O, códigos pC{lue· Il U~ c e li cit: nl e~ !>1Io UlIW Iteccs!>idmle.
rabela 1.1 Comparação entre programação em linguagem de montagem e linguagem de alio nivel. com ajuste e sem ajuste. Programadores-anos para Tompo de 8110CUção do produzir o programa programa em sogundos
50 10
33 100
9
!lO 10
10
100
Joom criticos
6
30
90'*:1
9
10
15
40
Unguagem da montagem Unguagem de alto nível Abordagem misl.! anles do ajusle tQl\t)
crltlcos
Outros
9{)qb
1btal Abordagem misla apãs o ajuste
OUl r09
Tolal
-
O M
8
•
~
• c o
~
•
•m ,•
m c
~
• •>
~
z o
~
u•
M
A lerceira é (llJC um c(ll1lpilarJor deve ou pn,duzir ~ afll(\ usada por um assemlller tlIJ cle IIlC'lI1 1tl executar tl processo de IIllmtagc m. Ass i m, Crltelluer linguagem de 1llOIllagc111 é essencial p:tr;l e nlC11\Jcr como compiladul'cs rlll1 ciomun . E, "final de cO/llas. alguém tem de escrever o compilador (c "CU asscmblcr).
•""
putadures. eS('1'c\'cr um pouco úc c6uigu de montagem é a única mane ira de ler lIIua itléia de (;1)11111 reallltCllll' silo a.. m,~quillas !lO nfl'cl da Hrquitetura .
",•
1.1.3 Formato d e uma declaração em linguage m de monta gem
N
o
Por lim. cl'tudar linguage m de montagem expõe a m{]quin3 l'e al11 vista. Parn cSludal11C'l de arquilcll1ru de COI11o
~
8 o
"• "• ",• , "
•
~
o
••
~
• N
C
•
'"
o
Emhora a cslnl1ura de uma dedaraçàu em linglmgem de l110ntagelll seja muito parecida (11111 a clllrulura (1(, illslruç1io de máquina que e la rcprcserHu. linguagens de mo ntugem para rná4uinas ~ifc re l1tc~ c n í\'ci ~ diferentes silo s ulkienteruerrle parecidas urnas com as Ulltras para permitir LIma discussão de linguagem de lllolHlIgelll cm geral . A Figura 7.1 mostra fmgme l1lo~ de prognllllas cm linguagem de montagenl para o Pcntium 4. () Mllt om la 680xO e a (Ultra)S PARC para cfCLUur o cálculo N = / + J . Em todos os três exemplos as dcd a ra~ 0l''l aci ma da linlra em brnm:o e fe tuam u dlcultl. As declaraçõcs abuixo da linha em branco são cornatld() ~ para n aS'lC ll1bler rc ~e rv ar memória !"rra a.~ vari;ivei s /. j e N e não são rcpresentações simbólicas de il15truçõcs de m :íqll ina. Exi stcm vários assemblcrs para li r.111lrtia Intel. cada um com uma sintaxe diferente. Ne~ le capítulo USllrell10S a linguagem de montagem Microsoft MASM para nussos excmplos. Embora estej amos foca lizando () l'ent iUIII 4. tudo o que ti ve rmos a dizer se aplica igualmente bem ao 3R6, 486. Pentiurn e Pelltium pl'\). No ~iI~() da SPARC, v all1o~ basear n os~os excmplos no asscmbler da Sun . Também nesse caso. tudo o que. d issermos se aplica às pri meiTaS v~r sõcs (cle 32 bits) da SPARC. Por questão de uniformidade usaremos sempre rnaitiscul a.. pam opf.:odcs e I'l'g i~ tradores (conven~'ão do PentiullI 4), ainda que o asscmhler da Sun e'lpcre rninÍlsculas. Declarações em linguagem de montagem têm
Opcoda
~p~randol
ComanMrlol
f ORM ULA:
MOV
EI\X.! EAX.J N,EAX
: reglS lrador EA X .. I : regis lrador EAX. I ;N. I ~J
3
: raserve
Aoo MOV
N
DO DO DO
< O
~
J
1' 1
figura 1.1 Cálculo de N = I + J. !a) Pentium 4 . (b) Mo torola
Etl~e_ta
Opcode
Operan dol
Comanlãrlol
FORM ULA
MOVE.l AOOL MOVE .L
1,00
; reglstradol 00 .. I ; r8g1~1 '8 do r DO . I • J ; N _I ... J
I J N
De L OC.L OC.L
68010. (eJ SPARC
J, OO OO , N
: reserve " bytes com valor inicial 3 : rese/ve" bv' e~ com v8ln/ iniCiAI d : 18selV9 " livres co'" vlllor inici81 O
3
< O
Ibl Etiqueta
Opcoda
Opa/lindo,
Comen l ~r lOI
f ORM ULA'
SE"I HI LO
%HI(t),%RI I%Rt ..%LO(lll.% A1 %HI(J),%R2
I RI = t1lts de orde m al!~ óo errdare<;:o de I I RI =1 J R2. bits 00 ordem allll do endereço de J I R2 ., J I espere'"J chega r da momória
SETlil LO NO P
I%R2~%LO(J)) .%R2
AoO
%RI ,%R2,o/.R2 %HI(N),%RI %R:o'.[%R1 !-%LO{N)1
SETHI
ST I' J, N,
WOfIOJ WORO " .WORDO
I I
lo)
I R2. R1 ~ R2
I R I _ bllS de ordem
8~1I
do endereço de N
reserve 4 bVr91l eu
t; ma çarul:l~rí~IIl:1, de)a~lru~a de a l g u n~ ll)semhlcrs é \IUe clit(uCIliS eSlão re~trita~ a M!is ou oito Cilnll,;t~res . P.tr C'1Illp.troi\ifio, il tm,hJnJ d a~ linguagem de alio nfvel permile a LIIilil.ação de nomc) de cOlllprimctlHl ilrhiwiritl. Ntllllc) lungus, bem 1.!~l:l)lhidll~, faciliUllll muito Illai) íl Ici lUrJ e 11 tompreenl>ão \Ius prngr:una) por HLllTill> pcS:.O:b. Cada uma (1.1) lIl,iquitlôl' tcm algwb rt:gi!o.lradnrel>, mal> delo rccd"ICram nomcs IllllilO difcn.:llh.!S. Os rl.!gi!>lr.ldn.. rCl> tio PcntiulIl 4 lêul IItlJII\; ~ !;Ul1lil EAX, EBX , ECX e ulol>im por diante. 010 regil>lradorcl> cta Mnwrnlu sãn dcnomin:}.. l h) ~ DO, Dl , D2, 1.! 111r.: Ol/lml>. () ~ registradores da SPAltC têm vário.!> nome:.. ACjLd, Il ~U Ill(}), %A l c %R2 para I.! les. Clillll}O de opcCMl1.! cnruénl ou lima abrcvi lllum si mbólicl' p,Jr" n opc()(k -.!>C 11 ueclm"U\:ãn for uma n.:prescn .. hlÇ1'io :.i mbóli ea par., IIJlW ill ~ lmç1'io de l11áqllil1'l - nu um COl11undn pam o próprin assembkr. A escolha de UJ11nOJlli: adt:quudn é 'lpcllllS uma lllU.::.tfio (Ie goslo c diferc n t c~ projl.!tistas de linguagem cle montagem IIlUiHIS vele:. fU/em cltCtllhas tllferclltcs. ()lt proietiMas do assel1lbh~r da Intd tlt:cidimm usar MOV lamo pam clllTeg:lr III"t!gil>lmdm 11 ~Ir .. ti r da memória qual1ltl plJl"3 anllaLenar um registmdnr na memória. Ol> pflticli~ t a:. dn a s~c lllblcr clu Mutnmla e.!>colhe .. r.UH MOVE p.. m :lIl1h.ll> 11) opcr:lç"elt. Pur CI)mpllra~:1o , o) projctil>lul> do asscmblcr dil SI'A I{(" decidiram usar LO pam u primeira t: ST p,In, li ullllnu. Tumbém nesse caso. as cltcolhus nada t~m a ver com u máquina ~uhj acentt. Au cumrário. " n ece~~i d adc dt: usar truçõc" de má(IUinu. começando com SETHI, para aces ...ar Clh.!lI1t'1.. riu. é uma propriedudc incr.:l1Ie cll! urquitclUfU SPARC jl(lf(jUC endereços virtuais lêm 32 bih (SPARC Vcr~ion H) \lll .J4 bit~ (SPAI{(' Vcr~ inn 9), c a~ in~ t ruçi\e~ podem conll.!r no máxi lllo 22 biB de dad(1lt imedhl1olt. A~sitll, scmpre é prcci ...o dual> ill . . lru~· I\e~ para fnt"lleccr lodos o) hil . . de um cndereço \'inual completo. A tarefu de
°
SETHI
'}e H I(I).'1~ R t
~ I.c(,u· o:. 3~ hil:. Mlpcriore, e ():. 10 bi ts inferiurc:. do rcgi.l.lradur Al (de M bit») c cnlào colocar o~ 22 bi tl> .!>upc:d\).. (c:. do cllder..:ço de .l 2 hitl> de I na:. posiçõcs de bits 10 a J I de Al . A iU!o.tOlçãu M!guintc,
LO t~Al .. %l O(t)I,%Al
Mim:! Al l:0I11 n~ 10 hil~ de ordem baixa do endercço cio.: I pam forma r o endereçu cumplct,) de I, bu .~c il uqul.!hl p.. !:,. vra nu Illenulria ..:. :l rnhlC:l em A1. Sc ro~se um concurl>{) ,te heleli!, em lIm3 e~catH dc I a II) I'~~al> ill~tmçõcs glll1hu riam cercll dc l O, llla~ a SPARC não foi projetada flelu helezlI dI! ~ 1I11 linguagcm (Ie IlIonlagelll. Ela fui pwje1:ldil paru uha vclocidad.: de exccuçllo e cumpre bem eSsa meta . A família Pell\lUIH. () ftt:IOxO e a SPARC permitem operamln:. com tamauhns de byh.:s, (lu1:lVrus e IOllgo!>. CUI no o n~~elllhler :.11bt: ' Iuc cumprimellto usor"! Mais ullIa VC7, ns projt!lislas de assemblcl's t::.cul hcralll :.olllçõo.:.!> diferclI" t e~ . No Pentiunt 4, rcg i~trudnrc~ de tamanhos diferenlc!> têm 1I0mes diferentes, pO,10l1to EAX é ll ~a do para 1I1ll,'..:r ilcns ele 32 hil~ . AX l! lIl>udo I)ar" movcr itcm. de j6 bit s e AL e AH são usados pam mover ilem de H bits. Por COIII .. paraçno. Ol> prnjc1Íl>I'll'o dn :I"!o.el11bler da MOlorola dccidir.ull aere!o.cCn1ar a eada opeüdc um sufixo.L pura longo •. IV 1},I11l p:llavm nU .1J IJ.lr:l hytc, cm \eL de d:lr nomcs direrentes iI ~ubconjuntos de DO etc. 1\ SPAI{C usa opcodes di!"c.. rl.!nle ~ par.! CIJmprilllclltm tlifertntcs (por exemplo. LDSB, LOSH c LOSW para c:IITCgar hytes cOI11:.inal. meias .. p.lla .. \'ru ... c pulavra.!> elll UJIl fcg i.. lr:lllor de 6.J bits, re~]>ec l i\'aIllCI1lC) . Tudos o) Irê~ ClIudos !o.fin v~Hdo.o; , porém. mili~ ullla VC/. indlcum cl ar:ullente li natllreLa arbitrária do projch) dc li nguagem. Os 11"15~ a~~c lflh ler~ tiuubérn são di iácl11es no modo COIllO l·e~e r\'a1l1 espaço para d:tdm. O:. prujeli:.tas da liuguugcm ele m0l1tllgClI1da Intel \!scolhernm DO (Defi ne Oouble). ullla \'ez llue a palavrn 1It) 80HK tinha 16 bits. Os ela Mutlll"ulu gu~larwll de De lDdinc Cu n~lunt) . o IJCl>soal ll" SPARC prcfl.!riu .WOAD de~dc ti infcil). Mais uma W-l , J~ Jircrt:nç a ~ ~;il) ~Irhi t rária~.
O C:.IIUpll tl t.: lll)c!nUldlb de IIl11a dl.'daro.lçâo 1.! t1l linguagcm de montagem é \ll>lIdo para el>!)CciJieur os enderel,,"Us c rcghtmdorcs lI~ado., ':Urllll fJlJCr:lndl1S pela instrução dI.! máquina. O l.!:lrnlX) de 0l>emndos J c uma in... lruçiio de adi .. ç. () de illleiros infmma I) 'I"C M!r:í somado a quê. O Call1 jXl dc nper.mdos de uma instmç3u de desvio infonua para undc desviar. Oper.mclo!o. 1>l lI.lclII !o.cr regislradorcs. constantcs, \ocalil.ações de memória I.! a:.~j m por diante. O campo tle clj l1le ll1 ári o~ ufercce um lugar ondc os progmmadores podem colc"ICar cx plicôlçÕt:s Litcis sobre n rUncilJllamenlO do prognuI111 para o bcnefício de oulroS pmgnlllludores que possam querer usar oU rnodifiClIr o pro.. gm mil mais tardt: (uu pUni o bcnd"ício do programador original um ano depois). Um programa c:m linguagem dc monl:'!lem ~em e~~a c1oculllcnt,lção é 'JlHlSC incomprcl.!ll sívcl pam lodos os prngralll'Hlorcs. elltrc eles muitas vezes wmhém 11 . .eu UUlor (J C:lIl1 I>1) de cnmenl:irio~ é exc! usivUtll..:nle para consumn de seres hUl1lilnns; não tl.!Jn nenhum deito !o.ohre o pnJCc:'l>\l dI.! montagem nem sobre o prograllla gcrado.
1.1.4 Pseudo-instruções i\lêm de e"' jlCcificar qUlli~ inslmçõcs de má4uina exccutar. UI11 prognuua em linguagem de montagem também 1>llI lc cOlller clllllo1nUII) ]111m n própriu a!o.~clllbler, I>or exellll)lu, petlir 'jUI.! d e altXllle lllgum :lnnaLenamcnto ou ejete Unl;! nova página na Iblugt:l1l. Comandos p:lm l) próprio U:'Sl.!mbler são dt!nominlldos )lseudll .. lns lru~·iM!li ou. à!> veLCS. dil'cU \'u!> de nSlocmhh:l'. Já d mos urna Jlst: udo- in~ l mç!io Ifpicl! nu Figum 7.l(a): ow. Algum:ls outras pSt!lulll-in.'>lru .. ç(lt:~ c:.tão relacioll:ulo.l:.!li' Tahclil 7.2. E l a~ foram tirlldul> do u s~c ll1bler Micro~oft MASM paI"""J a família Inlel. A pl>..: ud\l · ill~lrllçfiu SEGMENT in ida um novo scgmentn e ENDS ellcérru UIIl segmento. I~ pcnllitidu iniciar um .~l.!gmcnll1 de leX ln. U)11l c6digo, entã() iniciar \Im segmento de daJos e, em seguida, voltar nu segl1lCll1O de tC>. ln e a!o.~im por dioullc. AUGN illllll.-I{; rI próxltlUL linha uSU:llmellle Jôldos, um endcreçu que é UIl1 múlti plo d..: seu argillllc,:I1[{J. Por o.:xempio. l><..'- o !'>Cgmcnto lorrc.: nte já IIver 6 \ h)' t c~ dc dados, enlão, upós AUGN 4, O próximo endereço altlcado !>er;i M . EQU o! u....lda P.lr.! dar \l1Il nome loimbólicn a umil exprcssão. Por exemplu. apó~ ,I Ibelldn"II1:.lnlção BASE EDU t 000
M O M
a
•
~
•c o
'" e
•
~
•,
~
c
::l
••
"o
~
o
• •"-
u
..to
g
.d mhul u BASE ]xw..lc Soe .. uS:ltlu em todus us lugnres no lugar dt! 1000. A ex pressiln que vem del)lji~ de EOU pude cnvulvcr vários sfmholt)~ dctinidos combi nados cum upcrudores aritméticos e outros. cumo. pur exemplo. em
11
lIMIT EaU 4 • BASE
•• o"
"•o ~
• o
u
• "• "•
-
o
"
•
w
'•. -• o
~
N
o
O>
o
I
2000
Gnuulc parte dus nsscmblers. illcluindu o MI\SM , !"e
aluca e.~ paç o pam 3 bytes c os iuiciali7a COIII 11. 23 e 49, rc..,~cti'·alllente . Tóll11bém de!illc CI slmbnlu TABU:: c o ajusta com o cm.lcreço ullde I I é armazenadu. A~ ]lse udo-il1~tmçUcs PROC e ENDP defillem 1.1 in icio e (l filiai de pmcedimc1l1o~ de ling.uagem de monta~elll . re~pectiv:lIl1ente . Procedi lllent us elll linguagem de mont:lgelll têm a mesma run~'iio tlue pnx·etlimelllu'l em uulm ~ linguagens de programaçfio. De modo selllclhmue. MACRO e ENDM del imilam o eseop() de \l IIHI defi nição de l1I:lcro. E~tutlarernus lIIac ro~ mais adiante neste capítulo. As duas pscudo · instruções seguintes. PUBUC c EXTERN, controlam 11 visihilidnde de sfmbolos. é. COIIIIIIII escrever prognulI:ts curno UIII cunjunto de an]uivos. Muiws VC7.eS um procedimcnto que esl.l em um a((luivo preci sa chamar um procedimellto ou acessar uma palavra de dadm de finida em um outro ilrtluivo. Pura p(l~sibi1itnr cs~a~ referênc ias cnl7adas cntre arquivos. UIII símbolo que deve fi car disponíve l para uutro~ arquivo~ é e"
Algumas das pseudo-instruções disponíveis no assembler do Pcntium 4 (MASMI .
Pseudo-Lnstrução
Slgnillcado
SEGMENT
Inicie um novo segmento (texto. dadOR etc.) roffi certos atributos
ENOS
Encene o segmento ctInente
J\UGN
Controle o alinhamento de próxima instrução ou da.dos
EQU
Defina um novo sImbolo Igual a uma expressão dada
OS
Aloque armazenamento para mn bu mais bytes Unidallzad08)
ow
Aloque
OU DQ
armazenamento para um ou mais Itens de dados (palavras) de 16 bits (Inicializados) Aloque armazenamento para mo ou maill Item de dad08 (duploll) de 32 bits (inlciallzadosl Aloque armazenamento para um ou mais itens
de dados (quádruplosl de 64 bits
linlcialit.adosl
PROC
InicIe um procedimento
ENDP
Encone um procedimento
MACRO
Inicie uma
ENDM
Encerre uma derinlçAo de macro
PUBUC
~:xporte
6XTERN
Importe um nome dellnldo
lNCLUDE
Busque e Inclua um outro arquivo
IP
Inicie montagem condicional baleada em uma expressão dada
ELS'
Inicie montagem co mllcional se a t:o ndlção Ir acima for falsa
ENDlr
Termine montagem condlclunal
COMMENT
Defina UIII novo caractere de Inicio de comentAria
PAGE
Gele uma quebra de página na listagem
ENO
Termine o programa da montagem
defmição de macro
um nome definido neste módulo
de outro módulo
A p:>cuJo-IIl!ltrução INCLUDE faz com (IUC u assemblcr bUS(IUC um outro arqu ivu e o indua no corpo do anluicorreme. E!lM:!I IlnlLIJVOS incluídos freqüe ntemeute COntem definições, macros e outros ilClb necessários em JllIíI tiplos IIrljuivos . Muitos as:>eILlhleh, incluindo o MASM . sL Llmrtam /llolllagcm condicional . Por cJwmp lo, VH
tO O M
8
WORDSIZE EQlJ 16 IF WOADSIZE GT 16 WSIZE: DO 32 ELSE WSIZE: DO 16 ENOtF
•
•'" c o
'"
aloca uma (mic.! pa!..\ ";1 de 12 hits e chama !leu endcreyo IVSIZE. A palavrn é iniciuli:t:adu cnl11 ~2 ou 16, dependcndo do \ ulnr dc II'OJando CSI>U abordagclH, ..: rll ~~í \l! l HL:luh: r um 11nico programa-font c JlllI'(1 várias máqllinas alvt) ( dircre JLte ~), 11 (lllC fucililll o de~envt)h imenw e 11 rlIilnllt e Jlç~() dt: ~o ftwal'e . Em rnlli t (\~ ellM j~ , tndas as dclín i\:clcs dependent cs dc máquinil, COIl1O W()HIJSIZ E. I>li o ro.!UUldas CIIL 11m único arqui vo, com vc r~õl,!~ diferente:. para máquinas difcrt:nles, Incluindo o arquÍ\o de dcfiniçõc ~ corrcln, li programa pode ser rCCII/llpiludo com fa cilidade pltr:lllláquin:ls difcrentt:S. A p:.eudo· iIlSlfuçãn COMMENT permite que (I ulIuárin ahere o delimitador de COlllcnt ário pum algo dift:rcnle de ponto-e-\ irg ul/l. PAGE é uS:lda para contrular a Iblugcm que o asscmbler pode produli r. I>C req uisitado. Por fim , ENO mun:a o fi n:.. 1 do pWgralllll. Ex istelll muitu, ()ulm~ pseudo- in ~ tnlçõc~ em MASM. Outros a!lscmhlers Pemium 4 tê m um conjunto difcrenle de JlM! u do ·in~ tn. çllC" d i ~lxmíveis Ix,nl ue d ii ~ não suo dilada~ pda arqu itelura subjact:llle, Ulas pelo goSto do csniInl' do ulI:>cmbler.
••
'" •=
'"c
~
•
"
•>
"o ~
o
,
-• o-
u
1.2 Macros Pmgr.tmadore ~
de linguagem de monlagt:1lI fre(llIt:ntrwlcnlc preeisam repetir seqllencia:. ele inSlnLçÔCll várias dcntro ue um programa. O modo ma i~ óbvio de faler i ,~so é lIimplesmcme escrevt:r a .. in ~ tnL çõcs rt:quelidas IlIH.I.: quer q ue ~ejalll ncet:háriü:', Se uma seqiiencia for longa, entretanto, 011 tiver de lIer 1I ~.u la IIlllitllS veLes, c:.cr.:ve-Ia repel1dll~ \'eL.e, tllnLa-'>C tcdiosu. Uma abordagem Jht:nllltiva é tnmsfonn ar a scqilênciu e m 11111 procedimento e c hu lI1~ - l a scmprt: (IUC necessáriu, E:.:.a e~t r.tl égia tem a cle~vull1agem de requerer uma in ~ truçfio de clmtllillla til! proced imcntu c lima instmçao tle re torno" :.cr execlIlildü tnda VCL. (IUC IImn seqliênciu for ncces~á fia . Se as seqüência:. forem curtas - Ix)r exemplo, duas i n s tru çõt:~ - ma~ Ll s adil ~ com freqiiência, a sohreclIrgn da chumatla de procedimento podc rcdllzi r siguiliclIt iV,LmCl ue a vclocj(lade du pWgrulllll, Macros proporcionam li ma ~O lll çã(l fá cil e efi ciente par;! o problema de prcci I>llr repc l i cl a~ vezc~ d.!~ me~ mll.s , nu de quase ns mesmas, se'liiências de instfu ções. \C/.e~
1.2.1 Definição. chamada e expansão de macro Uma delin içãu d e macro é um modo de dar um nome ti um pedaço de texto , AllÓS ullla macro ser definida, (l l}J"ogmmador Ixxle e-.crcvcr o nome da macro em YeL. dll I>cdilço dc programa, Uma macro é, na verdade, uma nbrevi atura püra um pcd,u':l) de texto, A Figura 7.2(a) mostra um programa t:m linguagem tlt: llIo nlagem para o Pcnl iurn 4 que troca o COllh!Lídu das vafl áveis p c 'I dUlIs vezell, I!ssas sctjUências pod eriam ser dCllc rit a~ como mncros, comu rno~ t ra 11 Figuru 7.2(11), AllCh sua dt:linição, loda vez que ocorra SWAP, ela será sLlbsliluftlll pelas quatro linhas: MQV MOV MQV MOV
EAX,P EBX,a a,EAx
P,EBX
o progr.!llllldlll' dd'iniu SIVAP como ullla ahreviatul"ll para /lI> quatro declaruçôes Illo~tl"adns nnteriormentc.
"8u,.1-2 Código de linguagem de montagem pa ra trocar P e Q dual; ve?.6S ja l Sem uma milcro. (h) Com lima macro.
MOV MOV MOV MOV
EAX,P EBX,O a ,EAX P,EBX
MOV MOV MOV MOV
EAX.P EBX,O O,EAX P,EBX
SWAP
MACRO MOV EAX,P MOV EBX,O Mova,EAx MOV P,EBX ENDM $WAP SWAP
(.)
(b)
w o
Tabela 7.3
Comparação entre chamadas de macro e chamadas de procedimento.
M
Item
•""
Chamada de macro I Chamada de procedimento
Quando a chamada é feita?
Omante montagem
Durante execução do programa
Sim
Não
Uma instrução de chamada de procedimento é inserida no programa·objelo e executadn mais tarde?
Não
Sim
Deve ser USada uma instrução de retorno após a conclusào da chamada?
Não
Sim
Qualltas cópias do corpo aparecem no programa-
Uma por chamada
objeto?
de meero
Uma
o
~
•o
o corpo é inserido no programa-objeto em todôs os lugares em que a chamada é feita?
~
8
o u
• • •"o
~
~
o
"
" w o ~ ~
•
EmbOra asselllhlers diferentes tenham notações ligeiramente dift:rcnlcs llIeSlIlas pilfles bilsicns em uma definição de macro:
N
I.
•"
2.
'"
o"
3.
!,
de finir
11lacrn~ ,
{odo.. requerem " ..
Um cabeçalho de I1IIlCro que dê o nume da 1llacI'll 4ue c~!l1. sendo delinidn. O Texto que ahrange fi corpo da macro. Urna pseudo-inslruçiin que Illllrca II linal úa definiç50 (por exemplo. ENDM).
Quando o assemblcr em:ol1lr:l urna dcfiniçiio de mm:m, de a ~a l\'a em uma tabela de dcfini\'ão (!c macros pnra uso subscqiiente. Desse pOl1to em diante, sempre ([ue o lIome da m:lcro (SlVAI' 110 cxcrnplu un FiguI"ll 1.2) aparecer ClllllO um opcodc, o as~emb lcr a ~ ubsli tui pelo corpu da macro. /\ utiliza\'ão de um mllllC UC mncru corno 11111 opco úe é conhecida como chulllfldu de mucro e sua subst ituição [x:lo eorpo da macro é denominada ex pullsãu d e macro. A expallsilo de Illacro ocorre dmante o processo de montagem e n1l0 durante li excctlçãll do progrmna. Essc ponto é impUltan1.e. O pl"Ogral11a da Figura 7.2(a) c o da Fi gura 7.2(b) produzi rão exalmncntc t1 mesmo códi go de linguagem de máquinn. Exami nando apenas () progmma em linguagem de máq uina. é ill1ptls~fvcl di7cr se houve ou não houvc macros envolvidas em ~ lIa genl~'ão. A razãu é que. tão logo a cxpansão de macro tcnha sido condufdu. as dcfi11i'iGes de macro sãu descaltadas pelo assemblcT. Não resta nenhum vestlgio clelas 11\1 [lwgruma geradl" Chamadas de macro n1lo clcvern ~er cunfundidas com challllld as de pmcedimenhl. A direrença básica é que 1111111 c1lll111Uda de macro é uma illstmção p[lrll o asscrnhlcr substituir o nome da macro pelo t'orpo ti;! macro. Uma chamada de proccdimento é ul11a ill~tl1l~'ão 111.' 111[111Uil1a que é inserida no programa-ohjclO e que mai~ !,mle será e;\ccUhld a para ch;lrnar o procedimento. " Tabela 73 CI1fll para c hamada ~ tle malTI) com chaulôl
1.2.2 Macros com parâmetros
o processador de macros que acabal1lo~ de descrever pode scr IIsado para cncurtar pmgrarna~ lui .. quai .. exatamcntc a mesma SC(lliêucia de inslru\~ôes ocorre repclida~ vezcs. Contml(l. Illuiws vez(' ~ 11m prngrama contém diversas seqüências de instruções que são quase. mas não tOlalmcnte. idên ticas, ('0/110 il u~lntdn na Fi~lIrll 7.:1(a). Aqui, li primeira scqiiênci a permuta l' c (l e a ~egu nda sel[i1êucia pcrmul<1 N e S.
FlDural,3
Seqiiénclos de decloraçôcs quase idênUcas. (aI Sem uma macro. (bl Com umll macro.
MOV MOV MOV MOV
EAX,P EBX,a O.EAX P,EBX
MOV MOV MOV MOV
EAX.A EBX,S S.EAX R,EBX
CHANGE
MACRO PI , P2 MOV EAX .PI MOV EBX,P2 MQV P2,EAX MOV Pt ,EOX ENDM OtANGE P, U CHANGE A, S
("
(bI
MllIuudlln:s de macro.\ Ir:llam Oca~o de seqOêndus ]lr..Lticallll!l1tc idê ul icll ~ pcmlitindll que dctiniçõcs de maero põlrfi mcl ros Ihl' lI uli~ e permitindo quc chamadas de macro fnn1Cç,Ull parâlll clros rClIis. Quundo uma Jllacro é exp.mdida t,:lHta parfullclm fonnaJ que aparece no corpo da macro é substitufdo pelo purll!m:tro relll COl1'e5l)lmdeIlIC, O .. parâmetro:. I'eai~ são colocildoli no cumpo de opc:nll1do da dtallluda ele !nucro. A Figura 7.3(h) nln.)lra 11 prugr.lnht da l·igur:.J 7.3(01) r":C!oCrito usandn uma lUUCro C\lm d.li~ parilmetrus. O:. :.ímholos I' I c 1'2 são o:. parâmetros (onll"i, Calla \l1,.·"rrênda de 1'1 derllrO de um corpo tle lIlacro é Ituhstitufda pelo primeiro p'lrdmetrtl rCllllluanIln a macro ~ exp. uulidil De modo ~elllelhanle, 1''2 é b uh~lilufdo pelo :.egulldo pudimet"'1 rcuJ . Nu chumada de munn fnme~:am
CHANGE P,
.... O M
•• m
•
"o
a
p ~ 1/ prillldm parânll!tro rcal e Q é o segundo par:lrnclro rcu!. Absim, O~ prognunil~ cxccutávds pmduL.idllS por amhas
ilS p:ln e~ du Figuru 7..'
~ão jd él1 tico~. Elc~
cnntêm eXUTilJIlCnTC
,b tll ClIInu!t
ini;ll1lçõc:. com ns
IlICS IllIl~
'"
opcrandos.
1.2.3 Cara cleristicas avançadas A m,lillna 111)'1
proce~~adori!.!t
dc macro!> Tem uma gnlllde quantidade dc camctclút1..:aS
ll\'iLllçucla~
para fuciliwr
a vida do pUJgnulIiJdor de Jingm.gcm Llc montagclll . Nc~ta ~eção vamos exuminar algullla~ LliI~ caracleríl>licaS a\l.lII-
çadas dll MA!iM . I illl prohlell1:1 que ocorre com lodos IlS asscmblers CJuc sUjlnrtulll mucros é a d\lpl i ca~~ã{) tle n'ilulo~ . Slljlol1hll IIIIC uma macru contenha uma instruçilo dc dcsvio condicional e um rótulo para n '1ual ela Ik:.viu. SI! il macro é chamillt.1 dUi!;-. {lU lIIab vezes. o r(ltulo ~crá duplicado, () (jlle cau:.iI um eITO de Innntagelll. Umil Mlluçlin é faL.er com que Il prognunadm furneça um rótulo diferente cm i:aLla ehmnada, eomo um parâmetro. Uma soluçãll diferenTe ( \I ~:ldl\ pelu l\ IASM) é pcnnilir qUe um rótulo bcja declaradll LOCAL e que o assemhlcr gere automaticamente UI11 mtuto dilereme a cada expansão da macro, Alguns outro~ a~semhlers lêm uma regrn que impõe (Iue ról uIm, nUl llél'leos sãr) aulUrnuticanll.:ntc locais. MI\SM e grande parte du outros lIssemblcrs permitcm que m,lcro~ sejam definidas dentro de OIlIms macros. E:'i>a car;lctcrhlica e muito Íltil em eombi naç:io eom mOtUagcnl condiciullul. Normalmente a mC~ltla mllcro é definida em amhUIt ,I), jl ..rte~ de ullIlItlcclarllção IF, assim: MI MACRO IF WOADSIZE GT 16 M2 MACRO ENDM ELSE M2
MACRO ENDM ENDIF ENDM
De qualquer IIIOdo, a rnar.:fIl M2 será ddinida, mas :t definição rlellenderft de o progr.Ullll 1oI:r montado em 1I1lltl rnáquillll rte 16 hit~ Il U em unIU tuáquin;t de 32 hitb. Se M I mio fur ch:llltmla, M2 (\~o Será dclinidu de modo algml). I'or lim, rlLilcru, podcm chamar oulru" macros, incluindo elas mesmas. Se uma macro for recursiva. isto é. chamar li si IlICllllla, ela deve pa~~:tr para si mesma um parâmetro 4ue é trocadu a cada expans50, e a mncro deve testar I ) parâmctrn c enccrrar a reell~ão quando a!c,mçar 11m cel10 villm. C:t~u contrário, o asscmbler ptxJe ser COIOCõ1llo cm um la~:o infinito Se iS~ll acunlecer, O assemhler dcve :.er temlinudo expliciwmenle I>clo u ~uá rio.
1.2.4 Impleme ntação de um processador de macros em um a ss embler Par" impleltleillar um proce)sador de m acro~, um a~~el1lhler de\'e M:I" capaz de realizar duas funções: salvar dc macro e expandir chtlllladas de macro. V'lIllOS examinar essas dua~ funções, uma por veL.. O a,-.cmblcr deve mt1nter umu t!lhela com lodos os nomes ele macros e. jUlllo com cmla nome, um ponteiro par.! ~ua delint~l1t) ;,nuaL.ellôlda ..de modo (IUi! cl;. possa ser recuperada (jltiltldu nccess6ril). A I !lun~ u~~emhleh lêm uma tuhclll scparada para nomes de macl'lls e .. lgulls têl1lllllla taheh. de opcodcs Ctltt1 hilla(\l)~ llfl tlllal ~iio mantidas Imlas as iml naçõcs de máquina, pse lldo- in~t nu;õcs c nOllles de macro. Quando Utllll {tcfil1i~iln de IImcm é ellcontmdl1, é ~riad a IInla cnlmda lIu tabela (Iue cUlltém o nome da llIilcm, (l mílllem de p,lramelrUlI fl)nn.li~ e 11m pomeiro p;mllllllu outra tabela 11 tubcla de dclini~: ão de macros - ollde 11 Cml)ll da I1IU":fil ~erá nl;lIlIidu. Ncsbc mesmo momellln tUlIlhém é constru(da uma listu ttos parâmetroll formais par:I ulilila~'i'in 1ft) prtlcC,~ml1ell ll) d,1 deiinição. Então, tl c0'l)Q da macro é tido e armazenadu lia IIlhd" lie definiç:lo dc nwcrll~. Parâm e lm~ fonnui~ 'Iue ocurrcm dentro do corpo são ind i catlll~ I)or õ1lgullI símhulo especial. COIllO exemplo, a repre:'l!lItuçiío tntcrna da dcnt1i\~ i'io de rnm.:ro de CHANr.E na lllml o pOll1o-e-vfrgulu J'eJlrc~el1ta "retonto IUI ihf.:io da próx irnu e linha" e & é () srnrbolo de parilJ11ctl'll for mal é 1l101l1rtlcl!. 11 seguir: definiçj).!~
MOV EAX .&Pt MOV EBX,&P2; MOV &P2,EAX; MOV &PI ,EBX;
Dt:I1!ru da tabela de definiçàn de macros, t) CllrpÜ li:. macro é si mplc:.rnCtlle uma catlcill de camcteres. Durantc 11 et..Lp..L um da montagem. opcodt:!> silo cilnsultadus e macros si'lo explmdidas. Sempre que unul d!!lilll çi'in dc tt1f1Cnl flu· c!tlulJurada, da é urmal.enada nu tuhchltte macros. Quandu unta macro é chamada, o lIssembler pára
•>
'"o
•""
u
di~po~i li vo
Icmpomrimncnlc de ler entradas tio
M
macro. Parâmetros funl1ais eximIdos du corpo anllaZClllu.h.J da macro sãu substilllfdus pel(lS ""râmc!rus rcai .. fornecidos na cham.u.!". f\ presença do & 110 frente dos parâmetros fon na;c: facilita ..eu l"enll1hl..'l,:;l11cnlu pclo asscmbkr.
••"o ,•
1.3
de enlrmla c, em lugar dis);l).
C(lIl IC~'lI li
<Xl
o
ler do corpo armllLcnadn da
O processo de montagem
~
~
e
o u
• • ,•"
~
~
,
"
•
~
o
••
~
• "c
•
~
o"
Nn!l seçôes segui Ul!!!! vamus descrever resu midamente como UIll asscmblcr fundonn . bnhora cada Illlt4U1rW lI1ol1tilgem é sClI1elhntllc o ~Ufil' ic lll c pam llllC pm~a -
lenha urna linguagem de Illonlngem diferente. o processo tle 1I10S descrevê-lu em lermo.. gerais.
1.3.1 Ass embler s de duas etapas Como um programa e m linguagem de montagem (:olls;",e em ulIla série de dcdaraçflC'l de lima linho ç:ldn a princípio. Jxxleria pllreçer natural (cr ulIIlIssemlJh:r 4"e lesse uma declaração. em ~egllida n lIudu/i~~e para 1ingua gem de má(Juin .. e. IX'" lim, I)a..~sasse 11 linguagell1 de 111I"\
1.3.2 Passagem um A principal runçãu do p:lssagem um é montar lima tnhela den{lrninada tu lJelll de sfl11 bo I CJ~. que contém o \':llor de todos os sfmbolus. Um sfmboln é um rótulo ou um valor ao qual é utribu fdo um nome ~imht'Jlicll por meio de lima pscOlJo-instmçãu tal como BUFSIZE EOU 8192
sfmoolo no campo de rótulo de um" il1stnlçào, o as~e lllhl cr tem tle ~aber qU1I1 crltledo I)rognum-. Para monitllmr o cndcreço de te1l1lx) de cxecução da instrução quc cst,l sendo montada, o asscmbler mantém ullla variilvel durunle a lIlullI agcl11. conhecidu como ILC (Instructitlll LOCllli\l11 C OIlllt cr - contador de lomll 7.fll;iill de instruçiio ). E~ sa variável é ai u ~tada para O no infcio da paS.l\agC1l1 11111 e incrementada do comprimento da instruçãn paru cada instm ção prtlcc~l\adtl , como mostra ti Figura 7.4. Esse cxcmplo ~ par" I) I>Clltilll1l 4. Daqu i em diante não daremos excll1ph,~ da SPI\ RC (ou Motoro laJ pnrtjuc a~ tlircren<;,,<; e ntre:t~ linguagcns de montagem nàn ~ào lI1uilo importanlel\ c U1l1 só e"(cmplu d",'\'crá I\cr ~ 1I1i cicntc. I\lém do mais, se houvcsse um cuncurso para escol hcr qual é a linguagelll de 1I11l11ta!!CI1I 11Icno~ legfvcl dll l1Iundo. a da SPARl' seria unta séria candidata. 1\0
atriboir um vn lor
li UIIl
re~'O a4uclu instm ção terá duruute a execu~'ão
Rótulo rlUIIf. 1A
o contador de localização de instrução (ILe) monltom o endereço no qual as Instruções selão tllnegades na memória. Nesse exemplo.
as declaf(lf,;ÕCS antes de MARIA ocupam 100 bytes.
Opcode Operando.
MARILYN:
ADD AOD
EAX, t EBX,J ECX.K EAX, EAX EBX, EBX ECX. ECX EAX, EBX EAX, ECX
STEPHANY:
JMP
OONE
MARIA: ROBERTA:
MOV MOV MOV IMUL IMUL IMUL
Comentitlol EAl(.1 EBX",J ECX .. K EAX.l.l EBX",J .J ECX",K·K EAX . t .l .. J.J EAX .. l .( -I-J·J.K · K branch to OONE
Comprimento ILC 5 100 105
•
,• ,,
12' 12' 127
5
129
3 1
111 11/ 119
'"
Tabela VI Tabela de símbolo9 para o programa da Figura 7.4.
·w@ttMU\.l'
O
'"
Outras Infonnaçõeil
MARIA
100
e
RODERTA
111
MP,RlLVN
125
• "c
STEPI1ANV
129
•
~
o
"
A pa~,age1l1 IIILl da llliliorHI dos aS~l!mblers usa nn mínimo três Illhclas inh:mAs : a tal'lela ele ~ ímholos, a tabl! la dI! p~e\ldll- iTl:. tnlC;ne) e a tí.bch. de npcocles. Se necessário, também é mantida uma tabela de literais. A tl.bcla de :.imbnlus tel;' uma cutrada para cada símbolo. como ilustrudo na Tabela 7.4. Símbolos s1lu definidos ao se usá-llls como rótulo ... uu por dcfini~un expHdta (por exemplo, EOU). Cada entrado. dll tabe la de símhnlos contém o símboIn em ~i (ou um po"teiro para cle). seu valor numérico e, às ve.le~, outrus in fofmaçÕCls. E~MIS infurnlllçõcs adidonili~ podem incluir I. O cíllllprimclllO do climpo dI! dados ilssocilldo com il ~ímbolo. z . Olo hib lit: IdlM.:a~· iio . (O símho lo muda de \'ulor ~c o pmgrallla ror carrcgado em UIII endereço direrente daquele pr..:tcn l"Oméllll10 mínimo uma elltr:llta ]lllrll cada opcod ~ simhólico (llU1cllIônico) na li nguagem de montagem. A Tahda 7.5 Illo!>tm partI: de uma tahcla de opcodes. Cada en trada contém I) opcode simhólico, dois op~ralldn:-. , 11 \illnr Ilumérico do opcode, o comprimento da instmçiiu. e um número de tipo que ~e pal"à os ()pcude~ em gnlpo) que dependem da quantidade e do tipo de opcrandos. Como exemplo COIl)itlcrc o opcode ADD. Se uma inMrução ADD cOlltivt!r EAX cumo o primeiro operando C uma COlllotallte de 311.lit!> (lrnmGd32) como () ~cllu ndu, ent ãn é usado o 0llCt)(te 0,11',05 e li comprimento da instruçãu é 5 h)'tes. lCnrl)\!lntc\ (Iue pOdl!Ul ~er expressa.) em K 011 16 bits lI )al11 opcodcs diferentClI, Ililo mo~tl1ld()s.) Se ADD fnr lJl>mlll COnl doill r..:g i :-.tradurc~ como operando.), \I instruçuo telll 2 b)'ICS, com opcode OxO I. A cla... se de instrução (arhitníria) 19 ~cria dJ.da a tothl'" tI) cUlllbinaçõc ... o]>code-opcrando que seguis!>C1n as meSlllilS regmll e devesscm scr pruce~ ... adlh do mC~llIú modo que ADD com dois operandos de registradores. A daslIc da instnJç. o designa efetivamente um procedimcnto dentfll do a"'loemhler que é chamado par-.!. pmce~~ar todas as instntçÕClo ele um dado tilm. Algun ... as~embkr~ permitem que n~ progmmadores e!>cre\'am instnlçÔl.!lo u...amlu endereçamento imediato, :Iinda 'Iue não cXl~ tll nt:nhuma in ... tntção correlll>OlIdente na Imguagem-alvo. Es),as inlltruções 'p~e uclo -imedi:lIas' 11110 Illilnipulada ... como ~cgl1c. O a~~cl11blt!r 1110CH Illctl\órÍê. parti tl operancl,) imediato no !in;!1 cio programa e gera uma iJ\~ lrução que ti rd"crcucia. Pur exemplo, o mainl"m1l1c JUM 3090 não tem instruções imediatillo. Nãll ohstante, programadmclI 1}lldem c;.ercver L t4,=P5' para carregar ti reghtraclnr l-l com uma conMante de palavr.l intei ru de vaiO!" 5. Desse !lIodo, o programador ev ita escrever explicitarnente uma p~eudu - ill ~ tnJ çã" para alnear urna palavra com valnr 5, dandll-Ihe um r61Ulo, e enü'ill lIlo:!r elo~C 1'6111 10 na imtruçãll L Con~ t :U\t t!s pum !l.i (ju uis li us~elllb l er róerV11 memória autOJl1aticllllh::l1te sào denominudall litcruis. Além de poupar alguma escrita ao programador, as literais melhoram a legibilidade de um prtlllrama tomando (I " llnr da cu n ~ t antc llparentt! na declamçi1o-foJlte. A passagem um do asscmbler deve montar umu tahdli com tíxillll ali IlIerai~ usadas no prognllna. Todo ... us nnssns tres exemplos de computador (êm inslruçõe~ imediatall, IlOnuntU ~el" a:.sel1lblers não fornecem literllb. In~tnlçõcs lIucdll1tas ~iio bem comuns hoje em dia, mas antes não eram. I~ provável qUe u umplu uti lizlIção de l i l erai~ deixou duro para Ih projeti stas dI! máquinus que o endereçamcnto imed iato era lima hoa idéill. Se literfl is Tabela 1.5
O coda p
Alguns excertos da tabela de opcodes para um assembler Pencium 4. Primeiro operando
Segundo Opeode operando helladectmal
MA
BAX
AnO
"'li
AND
EAX
ANO
''9
AOO
37
I
6
immed32
05
5
4
"'li immed32
DI
2
19
25
5
4
"'.
21
2
19
•>
'"
o
~
•
u
-
o
M
·"•" o
,•
~
e o
u
•
"• ",• ,
· >.
•
'"o
•• • "•
~
N
~
o
forem lU.:ccs~r.ri:IJ;, ullIlIlahcla i.le literai~ é mantida durante li montagem. f:l7cndu 1l1tW lima cllIrada tuda vez que fur cncIll11nlllH lima lilcrnl. Após a pllssngcIII 11111. cssn tnbcln é urdcllatJn c as Cl1tralll1<; dllplicada~ ~ão removidas. 1\ Figura 7.5 muSlra um procedimento que poderia servi r C0ll10 hase para li pas<;ugCIII um de UII1 nS'Iembler. O estilo de programação t digno de l1 ula por si só. Os nomes de procedimentos foram C,.'iCulhit.los para dar 11111:1 blm indicação tio que os procedimentos fa7.eru. O mais itlllXlrtll111e é que a Figura 7.5 repre'lcnla UII1 c~bO\=() de pas<;ngem um 4uc. embur:I 11110 scjll cumpleto, proporciuna UIll bom punlo de partida . I~ curlo li ~u!iciellle para ser entcndiJo com facilidade e dei/Ia daro tlUal é a clUpa seguinte - a s:lbcr, escrever os proc{'dirHl~ntn~ nele u ~:ldn~. Alguns dc!õ!!cs proccdimcntos scrão re1alivmllellh~ curlOS. C0ll10 dl(·ckJor_Hml/flf. Il uC lIpcl'r:1S retorna o !iflllbulu CUIII{I uma cadeia de t:l1racleres se houver um shnbolu c nulo se não hou\"cr. Outmo: prtx:edimcnhJ<;. Ctll11H Ht'cfe1lHlh _oLIY/Jel c 1lt',-fe/l8,h_of_'Y1Jl!2 . podem ser mAi~ longos e podem chanlilf nlllro~ proct'dill1entus. Em geral. o número de tipm não será dois. é claro. mas dcpenderá da linguagem que está ,,('mio lIlontadu c de quan1;l" in!õlfllçfJC!i cln lel11 . EstmtuJar programas dessa manei ra tell1 outrns VAntagens além úa facilidudc de prugnullru;flo. Se o a... ~c mhler c~tivcr ~cl1du escri to por um grupu de pel!soas. us vârins procedimcntos pvdem ~e!" di vitlitloo: entre 00: prograll1:uJore5. Todos os detalhes (detcsláveis) dll obtenção de enlrada estão oculto~ em rnll' lI('rl /im·. Se elc~ mudarem por exemplo, devido a ullln lIlud:lnça de si>:tcnm openu.:itlnal - , l\P'!nas UI1I pnx:edilllelllIJ ~\lh>:i diário é ufetóldll. c não há necc~sidad c de nltcrnçlics 110 prlK:cdimcntu/m.t.f_(lIIt! cm si . À Il1ctHdu que lê I) programil . " pas~ltgem um tem de analisar cmla linhll puru nchm (J (11x:ode (por exempl(l. ADD). cx(Unin:tr scu tipo (bu~icmnentc (I padrão de opcnll1dns) e calcular () cnmprimento da in~lru~·;lu . E~~;I~ infllrma~·iíc ~ t:unhé m são lIece~O:iíril\5 lIalluso:agern dois. port tmto é possfvel csc revê - Ia ~ explicitamente para eli mimu· 11 nécessidude de analisar 11 linha partindo do z.ero na pníxima ve7.. Cuntudu. reescrever U iuquivo de cntrada pnmx;a li o(:onenc1a de mais F/S. Se ror melhur f"ler mais EIS punI elimÍlmr :lnáli~e ou mcnu>: ,,-:I'; e mais tln:íli~c depende das "elocidades rclali"us da CPLJ c du di sco. da eficiência du sistenlll de arqu i"o c de outros fature>:. Nestc C:l.Clll pIo vamu" escrever um urquivo temporário que contém o lipo. o opcodc. () comprimentu e li própria linha lIe entru da. É essa linha que a pa~~agelll dt)i ~ lê cm ve7. da cnlmda brula do :I«luivo. Quando a pseudo-instrução END é lida. a pass
Ioc
1/ munia e primollll lnslruçllo em o
whlJe (rTlOfe Inpul) ( fine . read I16xt linel): lenglh = o;
"fT1Ofeolnput aJustada patll lalso pnr /I oblenhA ume linh8 dll en trAda /I # bytes na instruçi'lo /I de que tipo (lmmato) '" e instrução
Iype " o. II (lIfle Is not
rlgura l .6
Passagem um de um assembler sunples.
IIlnlclaHzaçao gera!
END
commenl(llne)) I
8ymbol - check_JOf tymlJol(~ne) : f/ essa linha é loluladlJ? jf (.ymbol l_ nun) 11111 101. reglshll .Imbolo e "8101 enler new symbol(symbol. Iocatlon cooJ1ler) : IUefl.! .. check 101 IiIOrAl(line); fi e linhA con tém uma 1111'I{l11 11 (1IIerAII_ null) • fi 88 conliver, IInlre a linha na tabela enlerJlew.Jrlefel(liIereJ), " Agore determine o IIpo de opcode _ llIgnifica opcode ilegAl opcode _ exllac\ opcode(llne), fi localize mnerTlÔnico do opcode Iyp!t .. search opt:ode lable(opcode);/I ache lormalo. por exemplo OP REG I,REG:!: 11 (type < O) fi se nllo for um opcode é uma p~euclo-Insllução? typa .. lealcn pseuclo_lable(opcode); 8'Nltcn(lypel ( I cIelelmine o COf"IlP,rmcrrto dos!m InslruçAo case I· lenglh "gel lenglh oUYlMI1 (llne): break; case 2: lenglh .. gel lenglh 01 lype2{llne): bleak: 1/ outros casos aquI
'Nfl1e lemp liIe(type, opcode. length, ~"e): IIlnformaçilo uIJI plllll a passagem dois Iocalion countel . !ocllllorr counler ~ Iength: /I 8lull l17.e locO etr 11 (type . . END STATEMENT)I If tllrminalllO!l a entnula? mole Inpul '" lalse, 11 se terminamos, 8X9CU18 tarefas de prep"ro .ewlnd larnp 101 P85S Iwo(): 1/ lals CQmo reboblfll.lf o orqulvo temporário soll IIlerol lobla( ): /Ia Oldenar a labela de Irlarals remove redundanl lilarals(): " a remover lilelals duplrcadas
1.3.3 Passagem dois A fUrl l1ão tlu pa.s ~agc ltl dni~ é gcl'ur o programa-ohjeto
Além
dj s~o ,
I:
possivdmCllh! imprimir
a paslIlIgeltl uoh dcve prudulir cerl as inrorrmu;ões de (Iue o lig
1Il0UluuOS em
I C ll1l}() ~ dircrcl1 l c~
dinh::nlo panl
pa~~agcm do i ~.
li 1i~ l llgem
nece~si l a
de montagcm.
1>.Jr;lligar proced imentos
ell1 UIIl único arquivo executável. A Fi gura 7.6 mostra lIlIl rascunho de UIll procc-
8
A 0 l)<.:! raç;io de ,,:LlI~ ug eJl1 dois é mais ou menos semelhante à da pas~ agcrl1 um : da lê as linhas uma pur vez c as prOl.:e!>!\lI. VhlO qUe e ~nCVl! rnth o tipo, o opcudc c o comprimento no infcio de cada linha (no arquivo lempor;i rio), tudo ISS\! é lido [luru jloup;lr um pmlco de un;il be. O lrubalho principill da ger.lção de código ~ realiLlulo pd{l~ procedimenrDs el'{/C1YPt'I, I!I'lIC 1YPI' 2 e assim po r d iante . Cada um m:mipula um padrão pan icular, lal como um npcodl! I! d\li~ op..: r; llId\)~ ele registrador. Gem \) ci'Ídi go bill;lrill para 11 in.'>tru'ião, rClOrmr -{) em cor/e e enlão cl..: é c.'>crito. O mais prova\'cl é (IUi! II'rile_oulfll/l apenas acumu le o código bi nário em 11111 bulll!r e escreva () arqui vo UI) di sco em graruk ... pnf~&::s para re(!lu:ir o tráfl!go . A dccla nu,:iin-flllllt.: original e o cód igo de ohjcto dcla gerado, em hexadeci nral , podem então ser impressos ou <:olocõ.ldos I!nI um ou rf..:r pura impressão posterior. Api'Ís () lLC scr ajustado, a próxima decllrraçãn é buscada. A té agora adm ilirmb llue o pmgrama-foru e não conlém nenhnm erro. Qualquer um q ue já tcnh n e ...crito um prngnrtllrr, I!tll (llUrlqucr linguagem. sabe com(l essa s uposição é irreal. A lguns dos erros mais comu ns são: l.
Um . . ímbu lo fui u.'>ado, mns miu definido.
2.
Um ~ímhu lo foi úc!illido mais de uma veL.. O nome!lll carl1l)() de opcudc não é um u(lCode.legal. Um opcoJ c é fum ecido com um JllílllCro insuficiente de operandos. Um npcod .: é forn ecido com Ulll millle ro demasilldo de 0llCnLndos. Um lIlímero /letal contém um 8 ou um 9. UliliZll'iãll ilcg:rl de regi.stmdor (por e;o;cmplo. um desvio para um reg istrador). A declanu.ão END cS!,í faltando .
3.
4.
s. 6.
7.
8.
muito engenh usos l]uandu se lrata de achar novos tipos de erros para cmnel(!r. Erros de sflllhnlns não d e!i l\ i d (l~ Illui ta... vezes sõlo caUsacJll.'> por erro~ de digitação, portanto um assenrhJcr esperto J)(xleria lenlar erllcnder qual do" ~íl\lho l os definidos é mais pare..:ido com o sfmbolo não definido e má· lo em ~cu lugar. Pouco pode ...er fei l!) p:tTa corrigir 11 l1l:Jiori a dos outros erros. A mel hor coisa que um assem bler pode fazer eom uma dechr· ração errada é impri mir uma mensagl!tll de en'o e leniHr cOlllinuar a montagem.
Pl'llgJ'allltuJore ...
~i'ill
pubHc sraric voiel pass_lwo( ) { /I Esse procedimento é um esboço de passagem dois para UI" assembler simples. bootean mOl e InprJt _ trtJe; /I sinal que pLÍra a passagem UOIS Srrlng line, opeoue; 11 campos da jnslrução Inllocallon countar, lenglh. type: /I variávei s diversas hnat lm END STATEMENT _ - 2. I1 Sinaliza final da enlmda linellnl MAX COOE = 16; /I máximo de byles da código pur Ins1fuçAo 1/ comém código gerado por InorruçAo byte couel J .. new byla(MAX_CODEI;
flgur. '1.8
Passagem dois de um assernbler slmplel:l.
locallon counler = O;
1/ monta a plirneila ins trução em O
wILile (more Inpul) ( 1ype ., reau rype{); opcooe = read opcode(): teng lh = reacLlength( ): tine • faad IIne( );
1/ more lnpl.ll ajustlldll paIs lalso por END 1/ obtém campo de ltpo da pró~jma linha /I Oblém campo da opeode da pló~lma linha 1/ ob tém comp rimento de campo da próxtm a linha 1/ Obtém a linha da entrada propriamenle drla
11 tipo O 11 para linhas de comentádo SWITch(type) , I1 gerar o CÔdlgo da salda casa 1 evaUype 1(opcode, IlInglh. line. cnda); quebra; case 2: evaUype2(opcode, te nglh. IIne, cnde) ; quebra: /I outros casos aqut
ir (type t= O) (
wriTe_oulput(code); wrlte IIstlng(code, lIne); Iocallon counter., locallon counler il (typa n ENO STATEMENT) ( more Input .. false; IIntsh IIp( ):
1/ escreva o código blnádo I/Imprima Irma linha na listagem 1/ atu alize loc crr I1 terminamos a enlfatJa? 1/ se terminamos, execule tarefas de manutanção 1/ avulsas
+ tength ;
1.3.4 Tabela de simbolos Dur:mtl! lt plr ~~age l1l UIIl lIn procesSo de monlagern, () assernbler acumul a inforrnil~:ões sobre símhollls e SéuS v:ll ore~ que devem ~ef :rmrazenarlas ria \:lhela de ~írnhulos pura consullit du raml! a pa s~a!;ern dois. Há vários modos
•m •
c
o
~
,•
"
o
~
o o ~
•
u
N
M
•"o ~
,• ~
8 o u
•
~
• ,•"
~
, "
" w o ~ ~
• N
o
•
~
" O
dircrcnlcs disponr\lei~ p~lm urgul1i.wr ;l l:lhe1" de srl11bo l o~. Logo udiaute descrc\crClIllJ'I n>"umidallu!l1le nlgun~ deles. Todos ele~ tentam si mular IIl1ln IIIcm6rin lI~sudn lh'lt que, cmlerlllOS conccituai(. é lIlI1 l'unjunlo de p"rc~ <:fl11holu. \lolur. lJudo () slmbolo. a memória IIssochl1 iV;1 deve produzir u \lnlof. /I. tél.!nicu de implcmcllluçilo mais si mples é. de fato, implemcnlllr li tabela de s rmholo~ como UII1 arranjo de pares. cujtJ primeiro elemento é (ou aponta pura) o sfmbolo e cujo segundo elementu é (ou ,l1xIIl1a para) t) v'l lur. Dado um slmbulu para procurar. li rotina da tabela de símbolos apenas pesquisa ti lubchl linho por linha aré uchnr um .'lImbo]" compatível. Esse método é rácil de programar. porém é lenlo porque. na média. Hlcwde da tubcla lerá de ~cr ])Csquisnda em cada CUIISU !t,1. Um (Jutro modo de organi7.ar ia t!lhel ... de sfll1boloj; é orde nar por sfmbolos e uS;lr o algoritHlo de bU~CH himí rla pam pnx:urnr um símbolo. Esse algorit mo rllllcioJln comparando a entrada do meio li" t'lbcl:1 ~1l1l1 o ~írT1holo. Se ti sfrnholu vier antes da entrada dll1l1eio. em ordem ulrabética, ele deve c~tnr localizado na prillwim mctlldc da t!Lhela. Se o s(lI1bolo vier apt,s iI entrada d., meio. deve e.~tnr na segundOlllletade da tahela . Se o ,!lfmbolu rm igual à e nlmd" tio mcio. a hu~ca termina. Consider'lIltlo que a elltrada do Illeio não seja i81H11 ao sfmoolo procurado. ,lU lIIeno~ suhcmos em qual metade da Iflhehl procurá-lo. Agura a hu~ca bimíriu rode ser uplicada à metade correIa. 11 que re ~ ultará ou e m uma compatibilidmlc ou nn qmtno CtlTTCt(1 da I;,hclu. Ut ili1alldn aplicação rccur~iva do algoritJl1\l, um:1 tnbela de /I enlr:l{lu~ de tlll1l;II1]1II pode ser pes(]uismla el1l cerca de ]ogl "tentutivas, ti lí[)vio quc c~sc lll(lI.lo é lI1uitt1l11ai~ l-:ipido do qut iI pesqui~a lincar, ma~ requer manter a label!! ordenadn. Um 111000 completamenle difcrculc de simular urna rncll1líria i1~sociati\'ll é uma técn ica conhecida comu colll , n Cllçiio hllsh ou IlIIshing. I::"~sa abordagem rCI!Uer I~ r unm run'f"O ' Imsh' que mapeia ~fll1b()lll ~ para illlClIOS nu fai xa U a Ir. - I. Uma função l>ossh'cI t multiplicar ()~ códigos ASCII dos caracteres presentes no~ ~rl1lbo l(ls, ignl)rar o \'aium c 10111:1r O 1I1&1ulu da divi~ilo Ir. rcsultnntt ou tlividi-Itl por um número primo. Na verdade, pfaticllIllcllte qualtluer rUllçilo da entmda que der um;r dislribuiC;ão uniformc de valun's de hush serv im. Sfmholu-; podem ~cr annazcllat.lo~ em unm tal",'I:I tlue consista enl k l'arliçrn.'S mmrcnrdas de O a k - 1. Tooos os pares sfmholo, "l lor -- cuju sJ1llhnlo resultar i ap{ts li upcrm;50 de hash siio
-=
figura 1.1
Codificação hash. lal Simbolos. valores e os códlgus hash derivados. jbl1'abela haslr de oito entradas com listas encadeadas de simbolo9 e valores.
1.4
Ligação e carregamento
A maioria dos prognrnms eonsisle em n1ai~ til' \1111 procetlimCl1l\l. Em geral. clln1piladlJ rc~ c a~~embk rs tradu7.cm um prt>cetlimellto por "ez e COlllC
'"
PrOC&d!monto
Figura 1.8
Jo
A geração de um procJrama bmário eX6CUtável a palllr de um conjunto
M Pn)Qlllma
Tlatlutor
de procedimento~ lonte traduzidoll independentemente requer a lI1illzaçãô dO um hgador.
-
M
Módulo
oblolo 1
\0111111
blntilKl e.fKluta~1I1
Procedimento·
•
fonte 3
6
•m •
o o ::t
MOdulo objeto 3
" I. 2.
Clllllpihl\'ão UU Illontagem dI):, Ligaç;lo de lIIúdulo~ uhjetos.
proct:d i1ll~nlm.- ronlc .
A primeira c1.lpa é c:>.cculada pclo compi lador ou as:.cmbh!r e a segunda é rcali/.act.o. pdo ligador. A IrI'ulm,.ãtl di! proct:di IllCIIIO-fulIlc paru módulo ohjeto reprc:senta uma mudança de nível '>OfClue a linguagemfo m e c 1IIinguugl.'ll1 ·al\'n têm insll'uçi'ics r.: IlCllaÇ1l0 di fere ntes. O procc.':ISo de Jigaçãll, Cnlrctan[o, n!lo rcpre~cnta ullla Ih; nível, um,1 yct que :I cnlmda do ligador, !)t!m como a ~aída do ligador. são programas p.lm ti IIlé!. JI1 a
mudança
máquina virtual. A runçllu do lig:ldor é reunir prucedim~ntus tmduf.iJos em separado e ligá-lo:. uns ao:. out ros para lluC !'>Cjll lll cxccut:tdo:. ~011l0 uma unidade denominada IIrogrullIu biniírlll cxcclllá\ocl. EII1 MS-DOS, Windows 95/<JX C NT Ol<> módulos dI!. objctu têm a extensão .uh) c O ~ progrumas binários executáveis têll\ n extensão .ere. Em UN IX, o:. lIu\lulu!'> de llbjeto têm ex tensão .0; programas binário~ cxecutávei:. não têm eKlensão. ('om p iladnre~ c a!'>:.ell1bler:. traduzem cada pmced imentu- ronll:: como uma ent idade separada por uma bUli rtiZlin. Se um cUlllplladnr (lU as:,cl1lbler tivesse de ler WUi! série de procedimclllos-fon tc e produLir di re tamcnte 11111 programa em linguagem de máq uina pronto p!lra cxe~ ut ar. ullemr ulIla únicOI declar,lçào em um único proccdimenIO-ronte cxigiria que todos us proceclimelllos-rome ru ~se m traduzidos novamcnte. Se ulili/;ul,L a técnica de mód ulo ohj~ t o ~ep"rmlo mostraLla IHI Figura 7.8, ha~ t ll traduzi r Il11Vamel1t c o pro~ L:l!dimcllto LlIudificadn, e n1l0 os que não roram alterados, embora ~eja m:cc.!sr.ário religar todos os módulos de objeto Ilnvamenh!. Tnd,,\ ia , normalmef1l l! li ligaçlin é muito m'lis r.ípida do (Iue a tr<1duçuI): 1"II.Ir isso, C:.~e prnccsso Ile dUlI:' eta]>il:' llt.: tr.ldução e liga\"ao pode poup .. r grande quan tidade ele teml)!1 durante o desenvolvimento de um pro~ grama . E ~sc ganho é dc c:.pccial importância para programas quc têm ú:ntenas de milharcs de módulos.
ror
1.4.1 Tarefas realizadas pelo ligador No iuíclO da p,I~~agcm de U1I1 dn procc» . . u de montagclll, o contador de luculi zaçãu de instrução está uj uStudo em O. E!o~" l:l tlpn e'!lU \ ale li admitir que O I1lIX\ ulo di: objelll e~lur.i localizado no c:ndcrcço (vinual) O dUfótllle i! Clt!!cuçnll. A Hguf"iL 7.9 mn~ tr;t quatro módulo:. objeto para lima ll1iiqu ina genérica. Nesse cXl!mplo, clIda m6dulo come· ,ll1Jçllo MOVE dent ro do módulo. jlítr'l execut:lr 11 plugrlillLa, () ligmlur lnl/ 11:. \lL ódultl ~ ohjew r .ml il memória prindpal pam tormar il inlllgem do prngcilllLa hJlliíri .. ~)(el.:\Jtá\d, como mo:,tr<1 a Figura 7 . IO(a). A idéia é laLer uma imagem c~ill a 110 I!spaço de. endereço virt ual do prngr
'00
,--"====---, Módulo otIjelO A
"" ~===C~,~,gLJ8L==~
500 ~==::::SC~ALQL~CL=~ '00
"'" ~=:J",,~V~E]Q[T~Q[XL~
'00
Figura 1.8 Cada módulo tem seu próprlo espaço de endereçu com inicio em O.
o t=}B~R~'~N~C~H[T~Q2:!!""'1iL=j Módulo objeto C
"'" "'"
CAll D
"'"
MOVEATOX
"'" ~=:J"~Q~V~EJS[T!!O~X=~
"'"
'00
o
'00
BAANCH TO 200
••
z
o ~
o
• o. u
•
...
M
•o•" •o
~
~
8 o
"•
~
• ,•
~
o
'""o
'•.
~
"
•"
~
o
çôes correta.... Se não houver memóri a (virtual) su fi ciente para fonnar a imagem. IXKle -se u.. ar um arqu h'o em disco,
Normalmente. urna IXXJUCIHI
~CC;ão
da memória Ctllll inicio elll
e nderc~'o
zero é usado pum \etmc" de ilHcmlpc;ão.
comunicação com o .'ii!'terna operaciunal. caplurd de ponteiros não iniciali7.adns nu outra..: fina lidades. portanto os programas costumam cnm{."Çur aci ma de O. Nessa figuf1I cOIlleç'mnos. arbill1lrimllcntc. os prtlgmmas nu endereço 1(XI, O programa da Figurn 7. 1O(a). e1l1bum carrego.du para li imagem do "''(luivo bi nário e:<eclll;'Íycl. ai nda mio está pronto para cxccw.;ão, Cnmüdere o tlu \:: acuntcçcria se a execuçãu começasse co m a ill " l ru~·[I(1 11(1 il1kio do módulo A . O programa não d c~v iad 'l para a instrução MOVE CI1II1O deveria. porque essa inslruçfio agora c~ tá c m 300. Na verd ade. lod i l~ ;l~ illslJ'iu,"iics de referência à IIlclIl()ria fa lhariiun pe la mesma 1'37.1\0. I~ claro llLlC illgo tcm de ser feito,
Esse problelTlll. denominado pmhlelll3 da reh.K'nçiio. ucorre ponluc cildil módulo ohjeto 11:! Figum 7,9 represen!U UIll espaço de cllllcreço sClmrndo. Em ullIa máquinol com es pa~'O de endereço segrnelllat!u. COIllO:l Pentiulll 4, cmtcof;:!, c.Klo módulo ubjetu poderia ter seu prúptio espaço de endcll\'o em seu próprio segml'nln Cllntudn. OS/2 é li único ..i<;IClTla opcrdCiunaJ I"u~! tJ l'enl iulll 4 (Iue supolla esse cunccito. Toda.~ as ver~ões t.le \Vindo\\'<; e L':-i IX "upOr1alTl apCntl<;
um eSI>ô.l\·O de endel1!\'O lincll r. por1anto os módulos ohjeto devem ser fund idos em um único c~pa~ tJ de cndeleçu. Além do mais. as in<;lnlçlies de chamada de proccdimc llw na Figura 7. 111(;1) tinnhérn n~() fUIli.:ionarfin. N\l endere\'tI 4(Xl. o programador pretend ia chamar ti m6dulo de objeto n. IXJrém. CU IIl{1 ('ad.. pmcedilllcl1lO é tmd ulidn soz inho. o asscmbler n ~o tem meios de saher qUJlI endereço inseri r na instrução CALL B O ctuJercçu do mód ulo de ubjetu n nàu é cunhec ido até () mo mento da ligulji!o. E~~e pruhlcma é denominlldo prohlema uu I'cl'erllncht cxlt' rtil!. Ambos os problcllltls que acubulIlos de cit,!r IXJdc1l1 ser resol vidos de ttmnci nt ~i 1l1 p l c~ pcl\1 liglUJor. O ligudur funde os c~pu,os uc cndereços sep:umlos dos m6du lus objeto em um tinico c"paljtl de endc l c~'o li· tlcar conforme n~ (1lHltro etapas scguintes: 1. Ele constrói umll labela de IIxlns os mótlu l u~ ohjcto e seu.. comprimellto... 2. Com base ness.. tabela. {) ligador designa um endercljo de inícin iI cnda m(xlll ln ohjcto.
""
'lgurI.l.10
Os módulos objeto da figura 7.9 após o posicionamento na imagem bimUla. milll antes da relocação e da ligação. Ih) Os m~mOR módulos de objeto após a ligação e após a lelocação.
"" "" """ '""" """ "" "" """ """
'900
MOYE S TO x
'900
o
BRl\NClI TO 200
CAU.D
MOVERTOX
-,
MOVEOTOX
'500
C
,"'" ,,""
8 RANCH TO 200
CALLC
"" ""
"""'" """ '''''
-,
"""" B
'000
'''''
'"
'"
800
.""
BRANCH la 300
CAlLB MQVEPTOX
''''' o
BRANCH r o 200
500
"'"
."", ,""'" "'" "'"
'''''
,
"""o" obJolo o
BRANCIl lO 1800 CAlll eõO~
......
MOVEAI O X
obj!Ito
c
aJ1ANCH TO t3
CAU tl 00
"'"
'''''
..
MOVES1 0 X
obfeto
900
900
""'o.
MOVEO TÕ K
_.
..... B
'"'
H TO 800
CALL SOO _ MOVE P lOX
BRANCH 10 300
3. 4.
ti
Ele :if•.:ha t"..la, as in~lnJl1õelo (IUC ref~tendLJm memória c ;Idiciuna a cada uma dclalo uma constant e el e rclllcuçãn Igual uo cnderl.."Ço de início de St:u m6dulo. Ele acha tndulo as inlolru~õc~ (11Ie refcrcuciulll uutl'Ulo proccdilllcllIO'" e in ...ere o:. endereços Ih!s~es proced i. mcillo, 110 lugar udequado.
A tuhela de mÓI!t lhlS Ilhjeto ClIllstrufdilllu clapa I é mostrada para os módulos da Figura 7.10 ntlme, o compriml! lIIo I! () cmll!rcço de início de cada módulo.
li
segui r. Ela dá
f.}@Mti'H"H"+!'!@ Endereço de mlc10 A
400
100
B
600
500
C
500
1.100
O
300
1,600
li)
8
•
~
• C
o
2
A Figura 7. lO( h) lIlu!>lra o alopcctll do espaçn de c ll derc~'() da Figura 7.IO(a) a pós o ligudnr ter n.:uliZHtln essas
elUpas.
•>
1.4.2 Estrutura de um módulo objeto ~ I ódu l o~
objclu C!htlllllalll conter seis pune~, ,umo 111U!>lm a Figunt 7.11. A primeira parte contém o nOllle clu I1IÓllllln, Cerl ll!> infulmnçõcs eI ~ tlue o ligador precisu, como os comprimentos dalo várias panes do módulo. e, às veLes, \lS dudo!> de Illontagem. A .,egunda p;lrte C!U módulo ohjeto é lima lista dos silllbol()~ dclinidns no módulo que Olltro!> módulos podem rcferen~ i ar, al'url1pallhud{)~ dc :.cus valores. Por exemplo, se o módulu consi~tir em um procedi mento denominado biglmg, u tahela tle pontos de I!lIIrada conterá ti cilddn de can.lcten:s 'highug', Ilcompunhada do endc re~:o ao 'llIal ela e<.lrreS\XIIl,!t:. Um prugramuJ or de linguagem de 1II0nllL!!,t:r1l indica quais símholos de ...cm ser declurado~ C(lIHII plintos dI! cu t r~da u~lIml o IllIIa pSl!udo- inslrução como PUBlIC nu -n.helu 7.2. A tt.:rl·cira pane do IIl\Xlulo objcto consblc em UI1I:! Ii~tll dOlo símw!o:. tlUC !>:lo u~ad(ls no módulo. ma~ I.jue silu ddinil!llS em nulrm lI1&lululo, jllFllO com umali:. I:ldasi n ~lruçõesd~máqu in aqueu:.al1l cads:1 liltimll li~UI em melem paru puder inloeri r U~ endereços cOlTelO:' nas in!>lruçi'íes que lI:.am sill1bulus CIIU.: rIlO). Um procedllllellhl pude chamar oUlm~ prucedimcmos ImduLidns indcpendememente dec\ar.lIldo como Cllh.:fI\Ulo 1I1o nUllIc!> dolo pr.x:edi lllentos chamados. O ]ll1lgnunador dc li nguagcm de monlagem indica qUiLis simooI (I~ de.\ em loer dedafildol> cOllln ~íllllwl f)s externos USILlldo uma pseudo· in:.lrução como EXTERN na Tabela 7.2. Em algulll> compLlladlll'e!'> pomol> de cntrada e re.ferências extemas s1l0 comhillallnlo cm unul (mica lahcla. A quanil pane do módulo ohjeto são o código Illontadu C alo COmHLIlh!S. ESloa partI! do módulo d e ohjeto é a Ilnka tlllC locrá ~u("('cg'J( ! ,L nu Il!\;mória para ser executadu. As muras cinco parte:. s.:riln lI ~ uda s llelo ligador para Iljudá-llI óI filL.,;r loeu lJahalhll e el1150 serün dcscanad.\!> untes cio início da cllccução. A quilllil parte jlu Illl'lc.lulll uhjeto ~ o dicionário de rc\oc:!lfão. Como mostra a F;gura 7. 1(l. iuslruçõcs que cnn leul endl.!rl.!l1o~ de 1llt'lIli~rht devem ser somadaS .1 1I1lI!! constante de relocação. Vhlo que (l ligador não tem nenhum meio l!e llclenmnilr, IM Ir 1II~ 1~\~ iin, 4uais das pulilvms dI! dadus nu Jlune quatro contêm inlotmçõcs de máquina e <jua; ... cuntêm CUlllotanh!S. :1 IIlfOflllilçao sohre os endereçus que devem ser relocadm. é dada nes:.a tahela. A informação pode tumôlr li forl1l" de ulllal,Lhela de bi ts com I bitl}()r I!mlerc=ço que Ic rn possibilidade de ...er relucado ollllrna lista eAp!fci lU de ender~\\!l> que clc\uào !oCf relocados. A SC!Ala pane é lIU1a IIlllrca quul4ucr de final de módulo, lal veL um:! :.ull1a dc vcrifi'::lçllo para pegar c rm ~ enq uanto lé li rnódu!t l c= o cnderc,o nu (Iual cornc~ar li execuçi'ln. A rnuioria th.)~ hgllt!orcl> req uer duas passagens. Nu plbsilgell1 um (I !igadur lê IOdos os m6dulolo ubjeto c cunl>Irói UIlIII IlIhd:Lde IlUlllé~ C cnrnJlrimeHI()~ dc módu!(ls Ilell1 'OIllO ulIl a wbela global cle s ír Jlhll l {)~ ' luC contém tod().~ Olo plllllo~ de el1lJ'ada e referências extel1lllS. Na pa s~age m , doi ~ U~ módulos de objelo ~llo lidos, ..docados e ligados, um m6c.lulo I)!.lr velo Final do módulo
Ilicloná"". ralocação
ftuural.n BSlnllura interna dtl um módulo objeto produzido por um Iradulor.
11\S!luçOes de máqlllrlil a conS lanl9S
T.L>IIIlI doi fdllllAnelat exlel/lal
Tallela lia poolOS de enl/lIda
IdanJ"lcação
'"O
~
•
"
tO
1.4.3 Tempo de vin culação e relocação dinâmica
M
Em um sistcnm com lI11dtiprogralllaç1lo. um programa pode ser lido p
•• o
~
• "e
~
o u
•
~
•
..• ..""
~
•
'"o
•• • o" •
~
..
~
o
para a.~ mCSIlIUS lucilJi zn~ õcs 100 .. ve7,.
A Figura 7. 12 mostra U I]ue ;lcontcccrin se o prognUllajá reloc:uJo da Figuru 7. lO(h) fosse recarregado 110 CII(lcrc<;o 400 em vez de no ende reço 100 onde (J ligadur u culocou originalmente. Todus os cl1d e re1ô o~ de Ulc!l16ri:t csllio incorrctu~; alé m uOIIHlis. li inrorma~'iio de re l oc a~' ão há rnuito foi dcscartl1da. Mesmo (llI(; a inflll"llllu;1iu de n: I ~N.:il ~'üo uinda esti vessc dispun(veL u cuslO de ter de relocur (Otlos us end~rcços tooa ve7. 4ut! ti progl1UTlíl ro~~c chavcado seria muito ulto. O pmblenw de movcr programas 4\1C roram ligados e relocados está relacionado muit o de perto com () l11Oll1cn!O CI11 que a vinculação lillul úc nOJ11CS simbólicos a endereços de memória rfsicos ahsoltllos é cond ufda. Quando 11111 progra1t1:t é escrito. ele contém nomes simbólicos pura endereços de mem6ria. por excl1Iplo. BR L. O 1110ll1Cnto em que é uClerl11inado u endereço dc mcmória principal propriamente dito eotTe~pol1dcJ1 t e a L é denominaúo lempo de ,'lllculaçiiu. 11r. pelu menos seis puss i bilidad c~ para o 1I1omento de vi nculaçiio: Quando o progral11a é escritu. Quando n prugrama é lmduzido. 3. QumHlo o programa é li gado, mas ames de ser cnrregado . 0\ . Quando tl prognlTlm é cHrregatlll. 5. Quando 11111 reg islmdor de b'lst! uS~ldn pum endereçmncllto é cmregado. 6 . Quando a instntção quc conté m o endereço é eXt!cut,.da. I.
2.
Sc uma ill~tn.çãtl que COI1l('111 um cl1dcreçn de mem6ria ror 1Tl00'id[l alxís [I vincu hlt,:ãtl. ela ~c rr. inCQITeta (considcrando que o objcto ao qual se refere também foi movido). Se o Intdutor produzir um binárin e.\ecut clvcl como saíd[l, a vi ncula,ão ocorreu dun1111e o tempo da InllhJ ~'üo e li prngr.una deve ser executado nn endereço em qUt! n tradutor c~ pcra\'a tlllt! cle ros~e executado. U método dt' ligação descrito nu seção antelior vincula nmnc ~ ~i 111 b6licos :1cndereçn.~ absolutos durante a lignçüo c é por isso (lue I11lJ\'cr progranU1S fl lxís fi ligação r"II IO, l'0Il1(11lluSlra 11 rigum 7.12.
MOVE~ ~
'''''
IIR1\NCH l a \800
=''''' MOVE RTO"
Programa blnario relocado da cndereft'Os para cima. Muitas instruções agora se rererem a um endereço de memória incorreto.
,
.....
,
BHANCIt la 1300
Figura 1,12
Figura 7.101bl. movido 300
.-. }-
"'" "'" "'"
CAU. 1100
MQVEOTOX
.. URANCIi 10m
''''
CAlL 1500
MOVE I'TOX
.'"
IlRANCI! TO ;,00
.-,....
-
Há d O I~ a:.~ Ull \{l~ relaci ullados envnlvi do~ :U:jlli. Em primeiro lugar, /u\ li queslão cio lllOllle:nlO e m Ilue nOl1le~ ~ jll\
N
bólico~ ~iio Hgado~ a ellllerelfo~ vil1llais. Em se:guntlo lugar, há u questão do 1ll01llenW em IlllC cndereços "i J'1Il u i ~ são
M
ligadus a cndereçu, Iísir.:o~ . A vinculuyiio está eOl1cluídll sumen1e quando umhils ,IS nl~l1Içi'k:s ocorre ram. QlIilllC!I) ti ligadnr IlIndc U~ e~pru':lJ:' ele cndcrc\:os se p.arado~ dus módulos objelo cmum tínico espaço de emlcn.:çn linC:lr, 1Ii1 \er,Imle ele ~tá criandu um espaço de cnden!\:o vinual. A rdt k:ilc;ão e a ligação SCrvClll panl vincular l1{)11\es si mhólktl;, li cndere\~tJ~ vinUl.i), e~ I)t."Cíiicn:. . Essa observação é verdade ira quer a mcmóri,l vinual c~teja sendo ulililada Ou nnn. Con~ id erc, pur clUlui.nlO. (Iue o espaço de endereçn da Figura 7. IO(hl fosse pagi nado. É dnro que us e:ndereçu:'> v ir\llui ~ ,orrcsplmdcntc~ a ll~ nomes :.imhólicos A, 11, C e f) já (onml determinado:., rnc~ m o que seus e nd cre~'o:. fbico), de lllelllóna principal uinda depcndam do comelidu da tahda ete pti~illuS no momento CIll que fo rem Il S(ul ns. Nu rell lidudc, um prugnulUl hinário executável é uma vi llculllÇfio de nomes simbó licos ,. c nd ~rcçns virtmHs. QuallluCI IIlcluni:.I1lIJ que: Jlcnniltl clue li mll.l>I!:Ul\\!fllO de endereçll:' \'irltmi:. para endereço:. de memóri íl ff~i cu :.cja troc ndll com faci lidade també m facilitará a movimcntllçiio de programas pela memória principal, mesmo dcpnh lIc llllucle:. cllúere~: I)) lerem sido ligados a UlIl espaço de endereçu vi rwa l. Um desses mecanismos é li paginação. Ap6~ a lllovilllelU,u;1Io de um progr.una nu memória principal, somente sua tabe la de páginas preci ... a ~er aheradH , c não ,) prngriUlla CllI si. Um ),e!: ulldll lucclmblllo é a utililuçào li" um rl!g i ~1rad or de l'elnclIçüo em tempo de CKCCllÇàu . O CDe 66()O c ~c u ~ ~ucc~~nre:. tinham um rcgi~ l rador desses, bll JIl álluinu~ que USillll es~a técnica de rehx:a~'li o. o regi,i;lmdur scm pr.: apont,. para () cndcreço de memória fí~icll. do infciu dtl programa COITente. O hardware acre~ce nta o registratltlf LI/! rcloc:.~ãtllllOdo~ m e nde n:~os de memória .mles dc enviá-IO$ à me mória. Todo o proce~.\Io de re l oca~'ãl) é tmllSparentc ," Ira tl~ prtlgramil:. muário~ - ele!> nem sabem o (IIIC c~tá ocorrendo. Qu.tndo um programa é movidt), o si:.lema operacional d..:\e ljtualll,íIl' o regi:.tradnr de rcJocllçilo. Esse me'lmismn é menos gemi do (Iue a pilgi uilÇão 1>l lrque o prngralllil 1Illei ro de\ e :.er movido como uma unidade - a rnenns quc hnjll regis tradn re~ cle re locaçiio de dados e de códigu 1<e par[ltl o~, CUntO llO Intel 8088, ..:aso e m que ele te m de ser movido cumo duas unidades. Um tcrccim mecanblllu é poss íve l em máquinas que podem refe renciur memó ri:l relativa ao contador de programa. MlIl ta ~ lfIslruçõcs de desvio são relativns ao PC, u flu e ajuda. Sempre que um progrnma é movido na memóri'Lprincipa l. :.(llI1el1le () contador de progranm preci sa ser atualizado, Um programa no quallOdas :IS re ferê ncias à Ill cmóri~ ou :.ãu relati vaS
1.4.4 Ligação dinâmica A c:.tr,.tégia dI.! ligaçàu di:.Ctlllda na Seção 1.4. 1 tem a prnpde:duLle de tJu ~ todos o~ p roccdullcnlos (IUC um I'wgf'.lllm podemt chamar são ligaiJu:. antes que o prugrmna ptl ~~ a iniciar 11 e~cc u yãn, Em um computador CUlll memórt:t vmual, I.!tllh.:luir Indu iI liga~:ã() ,mtes de in ici:lr 11. execuçãu não aprovcila todas as capaclducles da lllt!l1lóda \ irtual. Mui1U ~ programa~ lêlll pnx:cdimcnlol> que ~ãu ch:unados apcllas sob circulIstfim.:ius fOl'it dn CUmtllll. Pnr C~ e lll)lIU, 't)m p i l ad llrc~ têm pmceclimellltb pant , ompilar declarayões ranlll1 ~ lIl c IIsac!,.s, 'llém (Ie procetli lllelllns par.! tnnm cou J içik~ de erm que ocorrem raramenle, Um IIltw.lu l11 ai~ Ilexhel Lle ligur proceJimeultls compiladus em separadt) é ligar cada procedimcnto 110 nmmenlO em qu/! ele é chamado pchi primeira ve7.. Esse processo é denominado ligação diu âmi Cll. O pillllei ro em sua uti liLaçãu fui n MUL"IICS, cuja im JlI ~ment ação, sob cen m :tl>pecIOS, ainda é insuperá vel. Nas ~c~õcs :.eguintes C),lll d .. rcIIlO), 11 It giL ~ãu thuiilllic:t em vários ~is tcma s .
Ligação dinâmica em MULTICS Na furma MUI T ICS dc ligação dinâmica. há um segmento as:.ociadu li cada programa, t1cnomin:.dn s~g nu!ll lu de IIgilção, IluC lllnlém Uni hloco de informaçlx::. para cada procedimento que 1}()(leria !ocr chamado. Es:.c bloco de informaçõc:. CUllleçll com lima palavra reservada pllra o endl!reço Virullll do pr(x:edi men1o e é seg uitl:l Ix:lo nume do prncetl irne nto, LJuc é armaLenado corno uma caLlda de cafll cleres. Quandu li ligm;ão dinâmica e~lá sendo usadll. c hamadas de procedi mcnto na linguagcm-fom e silo 1radu ll da~ para in:.lnl\i'ic)o, que e ndereçam i nd irelamcnt~ a pl'imcira ]lalavr'l do bloco dc li gaç ãn corres pundcnle. cllmo 11I0SII":\ a Fig ura 7. 1.1(a). O compilmlur preenche esr.u palavra com um c ndcreço invá lido ou cum um ])uclrão de bi ts e~Jledal que fmça uma eKecç1lo, Q uand u é dtalllÓr. o endereço inválido e l>c:.qu isa o diretório de lIr(pdvos do uSlllírin em tmscn de um procedimento cnmplluLlo com e:.se nome. J)c l;loi s é rurilmfdo um ell(lereço vinuala e:.sc procedimcnto, usuulrncllte em ,' cu próprio seglllento pri\"ld(J. e esse endereço virtual sobrescrc\'e o endereço inválido 11(1 segmelllo rle Ji gllção, cumo ind icado nil H gu nl 7. 13(h). Em seguidu , n in~truç:li ll (\ ue causou a fnlhu de ligaçllo é CXCCutlldu fl(W;t men1e. o que p!!rmil l! ao programa continuar de onde esta va antes tia exeeção. Todas a~ rcfer.:ncias M lh ~C(lil e nt cs a esse pmcedimcnto serão executadas sem causar fulh a de ligação porque il palavra indir":l:t agora contém um I!ndcre~'o vinual válido. Por l:onseqiiência, o ligador vi rtual é invocado somente nu primeira VC/. em qllC um procedil11entn é chlllnado e, da i em cli ullI e, n1l0 é flHli ~ invnC:ldo.
8
•
~
• o" ~
••
"o
~
o o ~
•
u
<Xl
Um segmefllO
de p1ocedlmEH110
M
CAlLEARTlI
•"o
•
~;>
O "1If'nento de II~o Endereço IfI.,4JlcIo
E A R T H
Inl()l'll1l1ç{les de HgaçAo
Endereço IIlvéllOo
CALL FIRE
A
~
~
- - - Plllll vllllmllreta
f
"
I
perll o prOC9d!mento AIR
CAlLAIR
o
EnderlÇO 1nwI~
~
e o
CALlWAIER
u
•
~
F
r
-
Nome cio procedimento li! armazenado como uma tn!JeÍ8 de cafllcleres
Endereço invllfldo
CALLEARIII
•
I R E
A A
T E R
~
• o o
"
"
~
'•". o
~
CALLWATEA
flgur.l.13
Ligação dinâmica. la) Antes de BAtrfH!ref chamado. [bj Após EARTH ser chamado e ligado.
Um SIIQ1l161ltO de procedimento
,., ;! ' m" ;;F'Jt End.r.""' 1OO E A R T H
to d11 11 ga çâo
080
~Bi:
CALLEARTH
o
l
•
~
CAlLFIRE
o
Endereço Invd:11do A I R
CALLAIR CALLWATER
CAlL EAATH
Endereço invalido I R E
'"
P.ua ellrth
F
Ir--
Endereço Inv'lIdo
W A 1
E R
CAlLWATER
1'1
Ligação dinâmica em Windows 'l iKJa~ li \' cr~õe!' do ~ ;~t c m a IlpcnH:;OIllIl Wi11dows. inclui ndo () NT. sururHuu ligil~'il(r di nânl1l';t e dCl,cnúcm 111UI\0
DLL
rlour.l.t4 Utlllz,1.çào de um ;'lfqulvo DLL por dois processos.
---- I--.
CAbeçalho
A B
C D
/
V
USl.ultio 2
dai ao hgactur para inlonná-Iu 'Iue deve faJ.Cr ulIla DU_. DI I..:. l:mlUlll>lm .!>Cr constnJ{clas a panir de conjulJlm de pmcedjrnenlo~ de hihliolcca que prma\elmenh! scrilo nt!Ces~ários par>l Olulliplos proet!~S()~ . O s proccllil1lenlO~ de inh.:rfuCc pnl' sllo exclIlptos COIIIUlh de [)I.L~. A wlnlligclll de U~!l r DLL~ é l)(lIIpar espuço na memória e em disco. Se alguma hihJilltcca de lI:.n comum f()~.'>e ligada cSIUl1cumenle acuda progralllll que'l utiliza. da apareccriu em Oluitos hinários I!xecUlávci~ no di!>i.:o e na memória, despenliçandu c.!opaçn Com DLLs. cada hiblioteca apare(:e apen>l:. lima vez em disco c uma vei. na mem6ria. Além de pl)upar e:. ra~·Il, essa ahordagem faciliw n alUi.li/_açilo de procedimelllo.'> de biblioteca, mesmo dClxlb IllIe m prograJ\la~ que 1I11 c.'>lÜn usundo lenham sido compiludos e lig:ldos. No caso de pacole:. de sortwarcs comcrciai:., quando li:' u:.uánu:. nmullenlc têm o código-fllllte, u:.ur DLLs signilica lJue () fabricillllc dn ~(lnware pode di lI1ill hihliotcc
-
m M
e
•m •
"
" o
'"
~·ÕC:' no~ pfllgrnrna ~ hmário~ principui~ .
A principlIl difercll~:a cnlJ'e Ulllll DLL e um binárin execlltável é que lima DU . nAU pm l!! ~er illici:llla c cxecu11Idu ])or ~i própna - ]lor'llIe .. ão tcm prognulllI principal. Ela lambt!m lem informaçOe~ Jifcrcllt c:. JllI c.Lhc~: íllhll . AdeLllai~, :1 DLL CUUlU um tudu tem vário:. proccdjllLento~ eKtms que não :.ão rc!;ll:iOníldn!> com o~ procediLllelll\l~ na bIblioteca. Por excmpll). h:i U11l procé:dimcl1lO que é automaticamcnte chamado IIcmpre que um novlI procc:.:.o.! vinculado ti DLL, e IIJIl (llltrtl que é aullIlllilticulILente chullludo Selllpre que um p roces~1l rS de~vi1ll;lIhtll() dela . Essc~ prtlccdimcnto~ podelll alocJ!" e dt!~lIluenr mCIIlMi .. 011 gereLlCLar nutrCIS recuJ'sol\ de 'Iue 11 DLL lIece.'> ~ lla . Ilá dl)i:. nJ{lilll~ de um prngnl1lla se viucular :llIl1Ia DLL. No primeiro, denominado lil;ação illlplfdlll, () pmgnuua duu:.mlrio c~ll'llig~ldo c.'> t.llÍcamenle :l1L1ll arqul\'U especial denuminado hlhtiull.'CiI d ... iJll l)tJrt:JI;iio, 'lU!,! é gerado pur um progr,lUlil IItill1 áli() quI,! I!xtl1li l,!en.l~ infonllilçôes .111 DLL. A hihliOlcca de irnl"l\lnUçiln fOnlet'e u ade~ivo II\I!! pcntdtc que li programa u~uário a{ e~,c a DLI.~LJII1 programa u ~uári o IxKle ~er ligudu li várias bihholeerl!. de ilJlfKH1Uçüo. Qu,mdn um jlW!!nlllla IllIe 11:..1 ligilção implfcila é ctilTcgado na menu'lri:t p.ll';! execução, 11 Wi ..Jows 11 CXrllllilia panl ver LJuui ~ DI.I .:. ele u~a e \'erificlI para vcr:.c todas cJusjá Cl>I30 11:1 I1lcmól'Ía. A~ Ilue 11111) t!~làlllla 1I1CIIll~ri:1 :.àll currcgiula:. 1tllcdi.tHIIIII:llle, mil~ não necessariauh::llte inteims, vbln que ~ito pagmada:.. Em ~eguid d..: dado:. lUl:. bihlinlecfts de il1ll"lOJ'laçilo. de modo qUI! os pruccdilllCJltol\ chumadns PI)~)iIJl1 ser IllCalii.iulo~ . I~~ ,.l:' ah cr",oe.'> :.âo IIIll pouco parccida~ COIll a:. mlJ:.trada~ na Figmu 7.13. Ela:. l:unhém têm de .'>er mapeada:. par:'1 o e~pôl';lI de endereço virtual do pnlgnt1lla. Ne:.:>e IXIfiIu. o prognl1l1" u:.uárill e::.tá pmnto para executa r e polle challliir o, pnXCdllTlento:. Cjue e~tão nas DLL~ L:OIl1{) ~e eles estivC),M!JI! e~talicumcll l e villcllladm a de. t\ ahemUIJI'il i\ Il ga~ao imjllCcili1 é - sem I1cllhutnu i>Llrpre~a - li 1i~lI l,:no cxplícllu. ES~ ii ilhordagellL não requer hlhlioh.:ca:. lll.: imponiU;ào e não r'li. cnm (lHe a~ I )LI .!> ~I!jalll currcgml,i.) ao tIlc~mu tempo qUI! I) prngmma UM lá rio. EIlL leI tli:.su. II jll llgl1l1 1UJ u~uáricl fal uma ch.lInmla I!Aplídta dUl1l1lle Ilt~nlllil deexeeuç:iu p:1rJ!'>e \Jllcut;lr li umo! Dl I. e. em :.eguid.L. fai. .. hanhld'l:. udldnuai~ para llblcr 1I~ e nder~'Ço~ do~ procedimentos de '1ue ncçcs~it;l . 11111;1 "Ci. éllcnmradlb cs!>C~ c lld c re~'os, li progmma usuário pode chuJl1u r os t>rocedilll c nlo~. Após tudo isso, cle faz uma chilmncta finul pafil :.c dCSI'inculul da OU _. Quandu li tíJtimo procc.!oso se de~vincllhl tle um:! DLL, ~111 pode ser reuKlVidl1 da mcmória. É impn(\aUl~ entc.mler que um procedimentu em 11111,. DLL não tem nenhuma identidade própria (como aconIeee com uJllthread (>11 um processo). Elill!Xecllta nll thrcad do chamadnr e usa a pilha 110 dlJlll1adnr para MIU!'o "'u'já vd~ !eleai:.. Ilude ler .Iadoi> cM,il icos eSllCdlkos de pmce~sn . hem como dados COml):lfIllhndus, c, quanto UI) mai~ . .'>c compona do l1\e~JllO modo que um procedimento ligado esltllic3lllelHe. A línic,1 difcrença c~~e nd al é o Jllodu CUI1IO a vinculução é reali/.udu.
Ligação dinâmica em UNIX
o s l ~tema UN IX tem um mecanismo que: é. em essênda, similnr às J)LLs em Winduws, denominadu lJihHu tcca ("umpllrtillmda . Como UIIl arqui vo nu . Hma hihlioteca cHmpani lhnda é um arquivo de arquivos clue cont~m vários procedimcnlo, ou módulos de dados que eSlllo presentes na me mória duranle o tCffil>O de execução e que podem scr vinculadol\ u vririos processos 30 mesmo tempo. A biblioteca padrão C e grande parte do código de rede ~à(J bibliol~'ClI:. cumpal'lilhadas. O UNIX ~Llp()rla 3pe n a~ ligação implfcilO. ponanlo lima bibliOll!ca cmnparti lhada consiste cm duas p.1ne:.: lima hihlinlc('u husped eira, ligada c~lU ti cal1ll!ntc com o :Ircluivu executá\'el. e uma hibliolccn-u l VO, que é ehamad,1 dur.lIlle a exccLh,:ihl. Eml}!)r,1 c~~c~ detalhes .'>ejum dif~rcllt es, o~ conceitos ~llo essencialmente os J1\~ s m\)s '1uc o:. das DLLs. 1.5
Resumo
Emhurli a maiona tlus programas pudesse e devesse ~cr e~crilo em ulIlillillgu ngelll de alto nível. exi!>lenl sit uanas tllluh é nec pura comp ut:tdoJ'c~ portáleis pohre~ cm rccLlr:.o~ , lais como SJllan eards. procc!>~adore~ embutidos em eletrodom6licos e crevcr somente as porçt'\es do prognuna que ~ão muitu I"ad:t~ . Na pn'itica. em gemi uma pequena fTiI~'i\u do código é re:spollsávcl ]lor umA grande: fmç1lo do tempo de execlLí,ão.
~ÕC!>
•>
'"o
~
•
u
o
N M
-"•• " o
o
~
•
o
"• "•
"• o
-• o
w o
~ ~
• • N
d
-
~
o
Mui tos ai"scmblcrs leU! 11111 recurso Ue milem ' lHe pe rmite 4ue u pmgmll1aclor dê 1I01lH."~ "irnlxílicu<: 11 ~(I ilen das de L~jgU comumente us..das para inc\u!ião sub~qüc nle. Em geral essas macm~ ptll.lclI1 "cr paramclrizutlac:: de 111000 direto. Macrus são implementadas por um tipo de nlgori tlllo de processamento literal de cndcia'l. A mnioria dos asscmblcr.. é de duas pass:lgens. A passagem um é llcdicada a montar uma tabela de sfmbulo'l paIOl rt'l\ulos, literais c idell!i riC:lllores especHic.ullcnlc Ilcdnr;ldos. Os símbolos podem 'lcr mlll1tido.. sem ordcna\'i\o e então PCS(lu;sados linha pur lin l1:1, ou primeiro ordenados c dcpoi~ pesquis:lendel1tt=rncntc podcm ser interligados para formar um progrnma binário executável que 1XH.le scr e:u;:cutmJu. E.~sc trabalho é feito pelo lig:ldor. Suas tarefas Jll'ill1árill~ são rehx.::llj'ào t= vinculação Ile nomc.'l. Lig;u.;ão dinâm1cn é uma técnica na qual cel10S proccdimentos s6 ~1() ligat.ltlS \ju:mdn fUfC m dmmadm.. As I)LI_~ do Wi n útlw.~ e a~ b ibliu t eC;I~ comparlil had ll~ do UNIX u~alllligllçãu dimimÍl'a.
Problemas 1. Para ccl10 progmrna. 2% do cód igo é 1't'$I>ousável por S()% do tempo de cltI!Cuc,:ão. ('(lfuparc tempo de Jlro~ra mmião c tcmpll de execuç1io par:! as três cstr:ltég i a.~ ~cgtl il1t l·s. Cunsklcrt' quc levaria 100 hOl11cn'j-1I1ês pam e~crc vê· los cm C. c \j ue I) c6tJigo de munt1I10 \I priltlciru o])CTIIl1llo e o cl1llercço-fmll e conlo o st'gundo opcnltl(!ll. Quui s problemas teriam (Ie ~er resol\'idtl~ parti fazer isso nu orúem inversa" 4 . O pmgrmu3 II seguir poúe ser montadu cm duas pnssagens? EQU é urna pseudu-inslrlu;iln que iguala (I rótulo à c;(prcssão no compu do oper'11Ido. PEQUe QEQU R A EQU S SEDU .4
S. A D;11cheilp Soft W:I!'C Cnmpul1y e~ t á plancj:lI1do pmd u7ir um f1~~el1111ler p:ml um cOIllJlutndor com unm pula\'r:t de 48 bit!'. Pam 11 1
9 , VI)Cê pOlle imaginar d l cU II ~ t âncias nas ll uai ~ UIIIU linguagem de monta ~c m l>ennite quc lIm nítulo scju (l m e.~ mo quc ul1Illpcodc (I>or exclllplo, MO V como um r6tuI0)'! DiSl'1Jla slla rc~pu~ta . I O. Mo~ tfC a~ elilpa.~ n cccssá ria.~ peslluisar Bt'rkelcy u ~lI ndo mlsc3 hi nária nR ~guinte 1i~la : Anil Arbor. Ikrkeley, Cmllbridgc. Eugcllc, Mndi ~on . New lI a\cn, Paln 1\ 110, PU ~;It.lc nu, Santa ('nI7. Stol1Y BrOl)k. Westwoud c Yelltlw Springs. Ao culcular \I elelllentn do meio de UlI13 listlllluunt!o h;1 um mimem par de eleII1 cnlCl~, u~e tJ elemcnto que vem I(lgo após o fl1\ lict" do mciu. 11 , É pl1 ~~ívcl u ~:\r hu ~cu b inária ell1 ll ma tabela CUj\l larmmhu é u1l1111írncru primo'! 12 , Cal cu le u c6di go hash para cada um d o~ seguint cs sfmholtM somando as letra .; (A = I, D = 2 etc.) e c\lIl ... i· derandll \) rn6<111 10 (lu ~ 11111 :1 úivid ida pc lo tUlllunho tia 1ubela de hash. A tllhd:1 de h ôl~ h tem 19 pll.~ i~'ücs numeradas de O 11 IR .
"'UiI
eIs, j 311 . jelle, lIIuuik c Cada símhulo gera \1111 línico valor úe Imsh'! S(' não gerar. corno poúe ser re~o! vido um prohlcma de colisãu'!
13. O méhl(ln de l:odificação hash dcscrito no teXIH liga todas a~ el1!radus Cjue têm o mesmo cÓtlign de hash em umfl Ii ~!il cncadead~1. Um método Illtemulivo é tC( somente uma tahela de /I posições e cadil posição da lahe!!t ter espaço p:ml Lima línica chave c scu valor (ou pOllleims para elas). Se o algoritll1o de tmsh gemr uma po~içã\) que já e:.tá cheia, é feilil uma nova It nltl1iva wmndo um ~.:gu l1do algorilrno de hush. Se a nova po~içilo gerilda Iam· hém esth'er cheia. c! u:.ado um outro algoritlTlo e :I:'l>irn por dilmte, uté (Iue se encontre umu posição vazia. Se a fraçiln de pmiçõc:. chcia.~ ror R, qualllas lenllllivus ser.l0 necessárias, em média. par.! regbtmr um no\'o ~rrnholo'! 14 , À mecliclu que o.l ICCIIOlogÍíI progride. talvez um di~t seja fW):.:.ívcJ colocar milhares de C PUs idélltic:ls em UIll chip, cada CP] J CIIIlI ulgullIas I"tlavt:ls de mcmtiria locai. Se todas a) C PUs puderem ler c e~c ..cver três regb· tradorc:. cOlllparliltwdos, como IIrnu mcmóriu uSsoci uliva pode ~e r implemelltada'! 15. O Pentiulll 4 te lll uma arljuitctllrlL segmentada com vários st!gmcmns independerl1c .... Um u~semhlt!r p.lra e!>..... máquinfl podei I" perfeitamente ter uma pscudo- inslruç30 SEG N que comnndaria tl ..... ~emhler OI colocar códi· gu c daulb :.uIN.!llucJltd no ...egmclllo N. Esse eMlltema h!m alguma influênciu sohrc" ILC'! 16. I-rclIiiclltcmente o~ pmRrumas e:.tão ligail,,~ a várius DLL.... Não :.eria ma;!'> e licicnte colrlCar todos ()~ procclli· IIlcnto:. I!m 11111.1 gl'Ullde DLL e clllão faZer a ligação com ela? 17 . Umu DLL pode ~cr mHllCuda para os e~ paços de e llllert!ço vinual dc dois pn H.:CS ~OS elll clldcreçtls virtuais dife· re n!Cs'! Se for po:.~j\'el, ,!uuis prublcmas ... urgiriam? Eles podem ser 1"I!...olvlltos'! Se não fnr pus:.ivel, () (IU C ~e pudc fal.el' para eli miná· lo:.'! 18. Um modo de fal.cr ligo.lção 1eslát ica) ê o ~t:g uilll e: IIIl1C:. dI! percomr a hihliotl!ca, o ligadnr llIonta uma li ~ t il de procedimcllto:. ncce ...... ,irios. i:.to é, 11(I/IIC:. defi nidos COIJ)O EXTERN no ... módulos lllle c.l.lãtl sendo ligado.... Enlao ti lig:l{lm fl\=rcllrre iI hiblioteca linha por linlm. extrclindo tndu pmcedi ll1cnlo 'Im.: c:.ti\'er na lista de m)me ... uece ... l>ário.... E:. . . ~ e»quelllil funcioua? Caso não funcioue, digll IlOr que e C0ll10 r od e ~cr remediado. 19. Um regi,tradm Jlod~ ...cr u~,ldo como par~m e tro propriamente di lo em umil chilllladôl de lIlucrn'! E uma cn n ~· tant e'! El\plique as razOes p()r Cjuc rode nu por que lIão pode. 20 . Você tem de implementar um asscmhler com mucros. Por Cjuc)lilo de eSlélicll, seu c h ~ rl! decidiu que definiçiks de lIlacro não precham preceder suas chamadas, Quuis 5.10 as implicaç.ões dcs:.u decis.1o sohre u impkmelllu\'ão'! 21. Imagine uma llIunciru de colocar um a:.sembler dc macro em um taço infinilo. 22. Um ligadllr li! lInCil ml'lduto) cujos comprimentos sào 200, 8tXI, 600. 500 c 7tXI pala vras, respectivamellle. Se des rm~ern callcg.ltlo:. I\elo:'[l ordem, ljllllh ~erifllll 11.\0 con~ t,lIll e) de fchx:açã()? 23. E~crevll um póll.:ote de tahdit de srmho lo ... II"C c{)nsi~ l a em dlla~ rotinas: l'IIII'1í.SYl/lhol, \'(j{,w) e lookllp(s)'mlml. m /lld. A pl;mCII'iI r..:ghlffi nO\'(I~ s(mho!lls nalilhclrt e a llltimll os cOIl:.uha. Use alguma fOntl1l dc codificaçon hll~h . 24, hscrevA um a...:.cmhler lioilll ple:. pura o compuwdor M ic·j do CHpftulo 4. Além de manipular a:. imlnlçl\cs de maquinil. fome,",1 um rCLII~t) para designar cnn:.lanll!S u ~flllh()lo:. ellltt!mpo de mlllllagclll e um mudo de I11I1U· lar um.. cllu ... tal\lC em uma patnvra de máquina. 25 . Adicione um rC':Uhn de macro si mplc:. ao a:.:.emhler cio prublema alllc";of.
N M
a
•
~
• c
o
'" a
• •'"o ~
o
3
• •>
~
z
o ~
o
• •'"
u
Arquiteturas d e computadores paralelos
compul.uJures continuem n fie:!r cada vez mais rápidos. as úelllHlldas irnl)OSlaS a elc~ estãu cre'iccndn no mrni · mesma c3pidcz. À'IlrOIlUI1105 (lucrem simu!:'f toda a hi stória do universo. desde o hilll)(/IIX até u final do espcIl'kuln. Engenheiros f:lIl1lacêulicos adorariam projetar em seus computadores II1cdical11clllO~ "ol! enCUH1t'lu.la pam duel!ças espcdlicas. ~ 111 vez de ler de sacrificar legiõcs úe nllOs. Projetistas '\Ie aeronaves ptXIeriam invcnlnr produtos mais eficientes
E
mhora
~IS
1110 cum
:1
nu COIlSlImu de cumbuSlfvel se os cOl11pul:ldores pudessem fa7er lodo () tralmlho sem a necessidade de cll11Qmir protótip0!l ffsi cos para tesl:!f em uínci s ucrodiuall1icus. Em sum3, seja qual ror a cilpacitl:tdc de co mputação disponrvcl, para mu;to~ usuários. em eS].lel.:ial na" ~re a s da dênda. engenharia e industrial. ela nunca "crá suliciente. Emhora as velociuaues lle relógio cont inuem suhindo. a velociuade dos circuitos não pude aurnelllar indcfinidamente. 1\ \'elcx:idade da luz já é um grande problema para projetiSTas de computadores de alta tecnologia. e n 1>Cf1;pec ti va de conseguir que elétron" e fóton~ se muvUIIl com maior mpidel são desani madora... Questõe." de dissi pação de calm '''Ião transfonnundll supercomputadores em cOTUliciOlmdorcs de ar de última geraçi'lo. Por lim. como o Icrg podem se tomar 11111 gnllldc pmblcma I'ol"l nllto. para enfrentar prohlelllllo( cndil vcz Illaimc<:;. o~ ""llllitet\J~ de cOl11puwdurcs estilu recllrrelldu cada VCi' IlIni " a CUll1pll1tl( l (lre~ parnleltl~. Se hem (IIII! talvc7, não sejfl pos~fvcJ l'llII ~tlll ir tlm compuHldur Ctlm \lIIHI (mieu ('PU c tIIil tellllxl de cidu de {)J)OI n ~. potle ~er pcrfci tllmente p(l~~fv('l construir 11m cllm mil CPUs. cad'l lima cum UIII tcmpo lI!! ciclo de I IIS. Emhmll es~e LÍlIimu projeto lI ~e C PUs mais Il'nt[l~ do que ti primeiro. sua cnpaddnde tot .. 1 de cOlnputil~'ilH é teoricnntclltc ;t 1I1t:~II1" , E ~ aq ui que e-"Iá a e~penlnça . O p:lrilldi~lIlu 11I.,crc<:;calare~ com v;'\ria~ unidades funciunais . Talll~1II pode ser nuidmmdu por meio de palavras de in~trll çào muit., longa~ l."{lm pamlclislllo illlpHci to, Características e~pec in i~ IXlC.lclIl "cr adicionad:15 1\ ('PU ]Iam permitir que ela I1mni · pule IIlIihip[os thr(,:I! I ~ de l.'OlItrnlc .10 lI1e(mulcml"IU. Pur lim. várias C PUs pudcm ~r reunida( no lIIe~ nU l chip. JUl1t,ts. es~a~ c:II:H.: t crr~ tka " P00cIll cquivaler. talvcl.. a um fatur t.le dei' \'ei'CS cm desempenho em re l a~~ão a prnjcllJs puramente "cqUcndai'õ. No IIr\'c l seguin tc. plaeas CJtlrn'õ de cru com cnpncidade de process,lIllcnTo adicional podcm ",C I' a\.:re"ccntarJa~ 11 um sis· tcma. lJ!'uall11ente. essa." C PU s de cncôlixe tem fun ç[}c$ l'sp~ci;tli7;ld:IS. tais C(lIllO "ruccs~a llle lllu dc pacute, de rede. prucess;t· lIIento de llIultirnfdia uu criptografia. No caso uc fIUl~'ÔCS cspcdnli1adm; o f:ttur de ganho tilm!Jém pode "el' de. talvci' . 5 il 10. Conlllt!u. para conseguir 11m fator d e cem. de mil. ou de milhão. é necessário rcplicar CI'U~ ill1cira ~ c fai'er cu", que t()da ~ Chl'õ rmwioncllI junt;l~ cum eliciênciil. "':S"iI it.léia leva a gr:lIIu\!$ ll1ulti]lrocc~sad ()res e l1Iultil'ollflllIIaU\l rC" (!1flI IXJ<;; de COlllputad(m$). NCIII é preciso d i~er qlle intcrligar milh;lre~ de pnx:c"sauI1rcs cm 11111 gr;mdc siste ma ger:l "ell" pnípr iu" J1whlel1m~ . que precisam scr I c~"lvidos. Pur fim. ílgora é pos~h'e1 enyolver urgnllizaçõcs int~i ra .. pela InterneI e fnrm
322
M
Memória
,
Memória privada compar tilhada
"'I
Co·processadOr Tllreaú
figura
e.1
(a) Pam!ehsmo no chip (u) Co~ pllx:(lssador (el MulupfOCtlS!;ador. (dI Mulucomputador.
le)
N M
Computado(
\
•o
hn
• ,•
•
~
CPU/
[J
Grade.
CPU principal Fortamente ecoplada
(.)
(b)
(o,
(d'
(.,
Tuda \I quc~t ;ill do par:dclislllll, ll~ IIU1a cxtreruid ...de tio elol>ectm ii mJlra é 11tH tópico d~ IlClo1luisli muito atual e Ctlm,.:orridu. 1'01 1l>'O, dllrernns UIl1 mimew muitll maior de Icfcrêndlll> nc~ l c capítulu, de plderência a ufllgtll> n:cenh:l> MJhre o lI ~ lolUlIO. Itch:rêll\.lils 11lllis illlrodutóriulo l>erân dllLla~ t1.l Scr;ãtl Y. J .8.
•
,•
o
~
•o ~
" o
'-'
•o • ,• o
• o
8.1
Paralelismo no chip
Um Imlo,lu de lIUlllcnlar a produli\'id.lde ete um chl p é conl>cguir Ct1lll lllle ele faça IIIUb COiMIl> ali mCSlI1tl tCtu!>tI. NClota ~cr;;1u, vanU rlo eloludar alguns modos de co n sc~ lI ir ilumenHtr a velocidade por meio do parulelilolllo li/) IIÍI'cl do chip, incluídolo pUlollcliloJlln IIU nlvel (\:1 instrução, muhilltreuding e a cnloc.ar;fio ~h: IlIl1is tle umu CPU 110 ehip. ESlolls lécnicalo sôu hcJllllJfcrenlelo, IUlIlo cadu uma delas ajuda à SUlI própria muncim. Mas, cm lodos Il) CII~(lS, (l idéia é CC)\)· ~eguir
8.1.1 Paralelismo no nivel da instrução Um modo de CIll1scgl1ir pUrIllelislllo 110 nível mais baixo é emilir múlliplas inlotrtlçi\clo por ciclu de relógiu. l lá duas variedadelo de CPlh de emilosão nuíltip\iI: proce~loadore~ ~tlrereScalan:lo e proccloloadof"és VLlW. Nu verdade. já cOlllenta m n~ algulIllI t.:Oi~ ll ~Il hre essulo dUll~ 110 li\'!>1, mas lIlh'elloeju 111il revisar esse muterilll tl1llli. V11110~ ('PUlo , upercloctlhU"r,:s tmtes por exemplo, na Figunl 2.5. Nu eun liguraçãu muis comum. em 11111 {'cftu j)Onlll do jllpctine Ilá urntl illl>lntçilo pronta para ser cxecutllda. CPUs ~uperclocalares são capal.e~ de emitir IIltíltiplas in s l "u~'ões para alo llllidtl,lcs de exc<'II~'ão em um tínico ciclo de rcJógio. O mírnero real tle inlolrur;iks enutidulo depende do projctn do plllCes~lllttlt". helll como dulo ci rculllolâneias COITenles. O hardwure determina ollllrnero máximo Ilue pndc :oer emitIdo, u~ualmenlc dualo a seis instrtlçõclo. C'ulltudo, l>C uma illl>tnlç1io prcciloar de umn unidud.: funcil1Jl,i l lluC não ':l>ul. i.lbpOl1í"t:1 011 de um re~ult(ld(l (\ue ainda llão foi calculadu, ela não será emilida. A I)utru forma de parul clismo no nfvel da instruyão é enconlrada em process.ulores VI.JW (Vcry LUIIK Ills trucllotl Word - pa lavra de inst rução muito longa). Na f0011 a Ilriginal, mácluinalo VLlW de fato tinham pa la. vras longalo que conlinham in~lruçõcs quc usavalll tm111iplas unidades funcionnis. Considere, por exemplo, o rirc~ Iinc da Figura 8.2(a), nu llual a máquina tem cinco unidades runcionai~ e pode cfeUlur, ~lIltu ll ancamenlc, duus 01)C~ mçnes Cílm iUlciru\, ullla uperação de ponto fluluanle . um carrcgmneulo e um annU1.ellumenIO. Uma inlolntyÔn VLlW p.ira C~~,i m:lqu ina conteria cinco opcodcs e cinco Jl3rcs de IlJlcrundos, um opcuue c 11m pllr de operandos l"IOr unidade J"Ullcillllil l. ('11m ti bils por opçode, 5 bits por registrador c 32 bils I)m cndereço de mcmória, as inMrtlyOClo puderiam faCilmente ter 134 bits - ou seja, bem comprida. Contudu. Clo~e projctO rcvclolllocr muilO rígido l)Orquc IIcJIltoda inslntçilo pouiu utilizar todas as unidades fun cionailo, o que rt!loultma em lI1uilas NQ·QPs imíleis u sada~ como li ltro, eOI11O ilulotrado na Figura 8.2(h). Por eonse· qiiência, nh H.krnalo lIIá4uiJ\a~ VLlW têm 11m mudo de marcar UII1 grupo tle inslrlu;õcs que forma m um conju nt o eom III1l bit dc 'fin.. 1111.: gl\lpU' , COIl1U mostra a Figura 8.2(c). Então, o processador pode buscar o ~ rul)O iJl1ciro e cmililil !le uma \'eL ~ó ('lIbc 1111 compi ludor preparar grupos de illl>lnlções compalfveis. Na \'crdadc. VLlW lram(erc () encargo de dc:temlinar quais instnlções podem ser clllilid:i .~ em eonjuJl1o lIu ICllIpn de cxecuyão pitrJ II !empu de compi lação. Essa opção niln apenas simplificlI o hartlware li o loma mais rápi tio, malo tmllhéll1, \ I~IO que um compilador otimizadnr pode funcionar durante um lungo lempo se for preciloo, permite (IUC ~e muntem pacutelo melhores dI) que o hardware poderia montllr durante O tempo de c:xecllçãI1. É cl,lm (l!le I,il JIludança radical na llr'luileturu da cru será diffcil de illll1lduz.ir, como dcmonSlrn fl lenla aceilaçt'io do ltaniulH. A propósitn, \.lle il pcna ooservar que 11 paralelismo no nível da instrução nnu é a únic.. fonl1t1 de pnraldistllo de haixn ní\cl . Um,] Cllllrtl é 11 pilnlldilolllO no nível dli memória, no qual há múltiplas nperoçõcs de lIlemÓrilll10 dr UI) mC~Il1(l lempt) ( 'hnu el ,1 1. , 20(4).
,o-
., o
~
• '-'
~
N
M
•""o "•o 0-
S o u
• "•
"• o
nauta 8.2 [aI PlpeJine de CPU. (bl SelfÚéncia do insuuçi}es VL!W. (e[ Corrente de Instruções com pacotes
No-op
marcados. (b) [
o
-- L - [ -- - L
1'.Fl. I',F .S1 .. - l I
IIF - S I I . FLS
~
" o
•• • "c
~
(o)
-- LF~
Marcador de llnal do grupo
Insttução VUW
~
[L[L[IL[IIFS
I
IFLS
§
I I I FS
[L[ LFS [
~
•
o'"
[ ':+J
Grupo
A cru VLIW TriMedia E."lUdarn()~
um exemplo de ulUa CPU VLIW.
li
ltaniurn-2, no Capftu!u 5. Agora \'UIIIUS. c~a ll1ir1ar um pmces-
sador VLlW muito direrente, o TriML'd ill, projetado pela Philips. l i empresa holandesa de cqUi pUr1ICTHO" eletrÔnicos que também irl\'e nlou u C O de ~uJio e \I CO-ROM. A uti1ila~~ lI.o prelcnd itla do TriMcdi a é corno Uni processadur emuutido cru uplica(fOes que ra l{~ n1 uso intensivo de irflagcl1l. áudio e V{UC(I, como rcpWdUlOrC'i de c n. DV D e MPJ, gravmJorcs de CO c DVD, televisores illlcnuivos. d hneras dig itais. call1con!crs c ;1.~sjl11 pur dhmlc, Ues por ciclo. a velo· cidade efetiva de relógio é c inco vezes lImis alta. Na discussao a seguir, rocalizarelllos a implementação TM 3260 do TriMeuia: a~ difere ru,:as C I1\ relação cueS. Por fim. um registrador de 64 hits couta o 'húlI1cru de ciclos de CPU desde II tiltirna restauração da C PU. A 300 MI I7., (J contador leva aproximadamente dois IIlil anos para dar \1111:1 \'4111 a (:0111pleta e reiniciar o ciclo de cnntage m.
Posição t flgllr8 • .3
Instrução Tri Media típica l1loslrando cinco operações posslveis.
\
Posição 2
Posição 3
Postçilo 4
\
Ope/a~O
na uosição 5
,-----'-,
CA CdO,".,co-,-;;:::;=':::-:=:r.;C;;':::;-:;::Tc~'= lIegamen'o [ Armã28riiirnento
',--2:::"'"=====--y-
tnstruçAo
o Trimcdia Tf\ 11260 tem comTtll~
J
I unidades fun cionais diferentes pura efetuar opcnlçl\es urilmélicas, lt'lgicas c de
cle nu ~o (hcm como um.. par.!. controle de enche que nilu di M:u tifelllo~ lI' jui). Ela:o. eMi'ln rdadonatlas lia
Tabela 8.1. A:o. dll a~ primdra~ COhllllb dão o nume da unidade ~ lima br..:vc desc ri ~: iio €In que ela faz . A tercci nl colu · nrl InfnrJII:1 quanta~ C C~pla!> da unidade cxbtelll eOl hilHlwarc. A qum1a coluná dlí fi Imênciu , il>\(l é, quantns c iclos de relógilJ du le"':1 paro! conclllir. Nes~c contexlo, vale 11 IlCJliI observilt' quc Hldll~ u... unidade:o. fUllcil)naj~, eXl:elO li uni· dade: de pllnto tlUIU,Ull e Ilc fUil (JlI(ldr.tdaldivi ...ão, têm PôlJ"ôlJclilllHlI. A latência u:ula na taht:la illformu quunll1 tempu faliu ]l.U.1 II rC!olllt ado de uma upcnt\:ão e~ lar di!oI.llUlf\'el. mas ulHa nova tlj)Cmção pode ...cr illkhula li cada ciclo. A ...sinl . 1)llf eAempln ,.'Ida um.. das Irê~ inl>lnu,,:&s consecull val> l>txlc cunlcr duus (}pcrJ.ç6e~ II ~ CIIITegalllelllo, o 'Iuc rCl:> ulta em ~c i:o. cilrr... gamenlO~ em \ ánol> cst:ígills de execução ao I11Clol1It) tcmpo. Por fim. H!> 1i1111lHll> dncn colullillo 1110slfal11ljuai l> [I(ls i çiie~ de in~lrUl;iitl pixleJl1 ser ulili llldm. por qu al unidadc fun cioJlll l. Por cxempln, opcw\:6c.:. de cOlllpa nJ~'i111 de I)lJIlIO l1uluanlC dcvcm apure!.:c!" lo()1l1é.lltC na tcrceim IXll>içr!o de Ul11a ilb tl1lc;UI). A IIl1id.ulc de l l)fhlalllC (COIblUnle) é u.:.ada para opc raçõcl> imedi (llIIl'ger ALU) delU:1 adição, l> uhtmçã(), ôll> opera· ÇÓCl> hoolclll1a ~ UloUall>. c: .IJlerHc;õe:. de Clllpilcotalllento/dtllempacuwcncntll, O rie~l()cador (.\hijli'r) pode de~llIcilr 11111 reg l ~t rildor em qlHllquer dircçiio por um nUl11en1 e~ llt:dfieml o dc bil:.. A unidilde Ile ~arreg,lIIlCn\{)Jarnm,e n a mcnto ll(j(t(V.~fII/"t!) Iraz r a1avr.ls de IIlcmória pal1l (Ienlro de regi slrudnrCl> c U:o. Cl>crcve dc \ulla ria mcmória. O TriMedi:l é, b'bicameme, UI11:1 CPlJ 1<1$(' aU fIl cnl adu , porlunto OpCr.IÇOCS nonmu" l>ão c:relluld, l ~ em reghlradnrc" c a unid.llie de l:urr.:gamcmolanllalCmmlcnHl é lb,IoI,1 pUr.l e (Ie ponto nUllnlJile. A~ Irê~ IIl1 j d a dc~ ~cg uillh!S Cfctll'UH. rCl>pe_ I1V:IIIICIIlC, adiçüe:o.l:.uhlr.lc;ÕC) (FP AI ,Il). r.:oJC1par(I ~·i\cl> (FI' ... mllpilnl\,3t1) C r.li/, '1IJ.1dflldu c di vjMlcS (FP l>\lrl/div) de pumo IlIIl U&ll1e. OI>craqÔl:l> de de~vlO l>iio i!Ael:utallas pcla unidade dc tlesvi\) (11,.'11/('11). I lá IIlll alf'JSO fh,o tic :l cidos UPÓ) um d e~\'io , l,urtan1n;b Ifê.:. inslnlç(\es (,ué 15 operações) 4Ue vêm um desvio ~illIl>l!ll1pre cXt:euladns, lllesmo para d c~vitl~ in(;flndi cil1n,l i ~ .
Ilnr fim , ChCgUlIlO'
(l ~
duas unitludcs de mullimfcliu, 'IUC e:<'CCIIIUlll us llJlCrac;ÕCS
es~ia i s
de I11UIIÍ!U(diu, ()
DSP no IImnc da \1IlId,llk IUlleiollul refcre·se a Di gilnl Signal Pl'ucel>~or ( pn lCc~l>!1d llr de !ohMI d lgilal) quc, lia \-er dadc. 1Il> opcl1lçikl> di! 1I111himídial>uhsliluem. Mai ~ ndianlc farenms uma hreve d .:~\ lIÇão tlal> 0rentçÕCl> dc muhimf· dm. Um :I~pec1iJ digllo Jc nUI:I é 'IIIC ludill> d al> utill,am arilméli cu slI lurutltlcl1l vel. de aritmélicu de cornplcmcn· lU de doi l> u ~ adu uevidu 11 CIICC~MI. em vcz de !ler:lr uma exceçãu ou dar reMllIado li xo. é usado \I numero válido l11ais pró· :<. il1l\). Por exemplo. cum mimcros de. g bit~ ~C I1l sinal, l>omar 130 t'om 130 dá 2S5. COI\le) nem lnd,. IIJl1!rilçàn 1)Q(le uparecer CIll lotla pmiçào. mui las VCles acnnlece d I! uma instmção nãc) Ctl l1 ler hxllll> as 1,: 1111;\) III)1!r,. ~i\cl> IltJICndail>, Quando uma posição niln é usadu, ela é cnrnl1acluda jlHnI min ulli zur 11 quan lidade de e~ Jlu \f u dCl>pcnliçada. Ope ra çõc~ que e~lii() prCscnl!!S ocupam 26. 34 o u 42 hi b . Dependendn cio mimcru de upemçÕl.·lo "lU!! rcaJmcnl c eSlão ]lrescnles. us instruçi\es Tri Mcdia variam e11lre 2 c 28 bytes, inclu indo algtub cubcçalhnl> fixo~. O TriMc:dLa nil .. fUi \'cn ficaç~ durante a execução pUfll vcr ~ as ol~raçt'ic~ um um .. inSlmção são comp:uí· \'C I ~. Sc não lorcm, dc a!> executa mcsmo assim e ohlém a rel>JlOslil errmla, Deixar a verificação de ror.. foi uma deci~:1o del ibcrada para poupar tempo c lran sistores. O Pentiulll faz verilicaçiio em tempo de exccução pum ter ccr· lU " de que lodllS as 1I1lt:raçÕt:s superescalares são Cl1nl]lUlfvcis, mas a um cUSto imenMI cm lermos de complcxidadc, Icmpo c I r"'l1si~tnrcl> . Tabela 8.1
Umdades funci onaiS da TM3 260, sua quanUdade, latência e as posições de insffilção que
elas usam. Unidade
Descrtçao
I1I13BIIIIIIII , x X x x
ConSlanle
Operações imediatas
AW de inlelros
Operações arllllléticas, booleanas, de 32 bits
5
X
X X X X
Deslocador
Deslocamelllo8 multibits
2
X
X
CSlltlgarl Annazensl
Operações de memória
2
3
Int/PP MUL
Mu1tiphcação de InteirO! e PF de 32 blls
2
3
PPAW
Aritmética de PP
2
3
PP comparação
Compara PP
PP Sqrt/dIV
DiVisão e rai% quadrada em PP
17
x
Desvio
ConlIole de fluxo
3
3
x
DSPAW
Anlméllca de multimldla dual de 16 bits, quádrupla rie 8 bits 2
3
DSP MUL
Multiplicação de nlultimldia dual de 6 bits, quádrupla de 8
2
3
X
X
X
X
X
X
X
X
X
X
x
X
X X
X X
X X
U)
N
M
"o
• • • •"
.. o
~
•
"e
~
o u
•" •"
"
~
<"
..• ~
u•
o TriMcdia evi\,] t!~~a dc~ pcsa põ'ls~lmd\l <1 t:arga do c~c;tlorHlll1eIlIO pari!
••"o ,•
~
~
e
o u
• • ,•" ,
~
~
"
" •• • o" • ~
o
~
~
o"
(J CUIlIJliludor, que tem tOUlI o \ClI1pt' lIl) IflIllldo para Cltimizar com cuillauo u pusiôullllmCIIIO de operaçücs em p:tlavras de inslru~·àu . Por outro lado. '1 C Ulllllllpcraçàu prl~ i sar de tltlm unitlmJc funr.:iunal ljuc não está disponfvel. 11 inSlnll.,:ãn pnllelará lLté que ela liqut' tli ~ pUl1í\'cl. COl1lllnll [lallilll1l -2 . a~ operações da TriMedia são prcdir.:t1t1a.'!. Cada operação (1;(1111 dl!a ~ pe qU CII:IS exceçilCS) especifica um rcgislrmJur q ue t Icslatlt) antes de a nperaçàu ser executada. Se li bit de onlc1l1 baix" do rcgi~lrad{Jr c$liver marc;lIln (valor I), a openu;ào é cJlccula(la: "aso clllltrário, ela é Sal la{l;•. Cada ullla d
IF R2 lADO A4 . A5 -> Aa
que [esta R2 e. ~C o bit de tlrdctll baixa fm I. sOlna R4 COlll A5 e !lrtltazena n rcsllltatlu c m AIJ . I l um opcnJ~'ão pode ser tra""fol'1!wt!a em i Iltundiciunal usando RI {(llIe é ~c tllpre I) como {J registrador de predic'lun. U~:lr AO {(ltlC é st'mpre O) a lransforma e m tinta llIHlp. I\s olJe ra~ücs multi1l1fúi'l úu TriMedia podem ser agnJjladils nos 15 grupos rel "dormdos 1101 Tabela tU. Muit"s ti"" t1penll;fJcs envolvelll gr.1Il11)C,1Il1eIL11l (dipping). que cspedtic
Plincipais grupos de operações que vêm com o TriMedia .
Descrlçõo
Grupo
ClIp
Grampeta <1 bytes ou 2 melas-palavras
DSP valor absoluto
Valor grampeado, com sinal, tomado em módulo
DSP add
Adição grampeada, com sinal
DSP subtract
Subtração grampeada. com sinal
DSP multipty
MulUpllcação grampeada, com sinal
Mln, m:u
Obtêm núnimo ou má.xlmo de pares de quallo bytes
Compare
Compara dois leglstradores bit PCI bit
Shif!
Desloca um par de O].lcrandos de 16 bits
Sum of ploducts
Soma com sinal de produtos de 8 ou 16 blts
Morge, paei\", swap
Manlpulaçilo de bytes e meias-palavras
Byte quad llverages
Média quádrupla. sem sinal, byte por byte
Byte averages
Médias de quatro elementos, sem sinal, byte pOI byte
Byte multlpUes
Multiplicação. sem sinal. de 8 bits
MOtiOfl estimation
Sorna sem sinal de valores absolutos de diferenças de 8 bits com sinal
M\sceUalleous
Outros operações aritméticas
figura 8 .4
lal Matm de elementos de 8 bils. (bl Metro: transposto !cl Matnz ongmdl buscada em qualro registradores. (dI MatM transf'bsta em
q~latro
rtlglsuadulCI
.... N
/ Registrador de 32 bits
f!~jH
E~'"
B F J N A C 'G KO I~H L P
R2ABCD
0EJ:!E
A' lijf@j ,U A' [BJ1j1® A' ~K j O A5 jD@'-~
A. [íj J~ j,J
A5 FIiil§ liI
(d)
(o)
(b)
(-)
R2
M
Por fim . CS),b p.I];11 ra~ ,tiu urmalellilda) nu memória. Embora esse l1Iod o dI! ftl7cr 11 111t1l ~po)lçãu rcdul.a .) Utílllero de rcfercnciu) à mCIIl6ria Ih.: 24 parol R, H ma ~cur'lI11enHl e o dCloloclImento )au curo!. pur causa da) Illuita:. oper:l\':õcs re qll c rilla ~ panl eXI I ... lr c inserir cada h)' le na po:.ição correta. U I riMcdia pl npnrcLOlla uma :.oluç:lo ILldhor do IllIe C»àS dua). EI:l C() I UC~II Iflllcndn a) (Itlutm pfl lavras para t\;g i ~tradore). 'Iodü\ia, em \lei. de cnn:.tl1li r a S:líd:llIsandu míl:.caramentll e dC:.loCillllCI\IU, :.ào utiBi.ad'I) npcnu, nes e)!'lCci;lh 411e c\lr.u!1LI e ilL:.crem bytClo em regi:.tradorcs para cOIblntir a safda . O re) UltlLdo t! yue, cum oito rde rênCIaS à mCTlIóriu c OHO d eslo[l ~ 0 1)Cmçõc~ e)llCci:li~ dc muhimfdia, pud e-:.(: realizar Il tnlnspo:.içào. Em primelcu lugílr, o código cOlltém UULU lll>eraçàl) com duas ope raçõcs de carregamento IIll S po)içõcs 4 e 5. respectivame:llte. para l:.trrcgar palu\ tu ... em R2 e R3. )cgu ida 1)C)r umlL otUra operação como el>sa para carregar A4 e AS. As in~ tn lçõc~ que CIIIllêm e)l>"~ 0l>craçilclo I}()(!cm u:.ar as posiçõe) I, '1 e 3 para o utras linalid,.de:.. Quandu todas as palavras furum cnfregadas, as oito Opcntçôe) clopeciais de lIIultimídia podem :.er t!mpacollllias em duas instruções paro! eonslmir a :.afda, l>cguida) pll1 dlUb 0I)l!ntÇÕCS puro! amHlzená-las. Nu total, são necessárias apenas :.cis in:.lolçi\cS. e 1-1 das 30 pos i ~õe~ nel»,IS in~t r U\,:llel> licarn dil> poníveis para oulras operaçõcs. Nu venlmlc, todo o lr.tba lho podc ser realizado com n equiwllente e fetiVO a cerca de Irê) instntçôes. Outras operações de multimídia l>âo igualmelllc efiCientes. EllIfe eM,as opcnl~'õc) podero)as e a:. ci nco pnsiçõcs (Ie c milosão por in~ t ruçi\(). () TriMedia é limito diciclltc para e f..:tuar o~ tipo ... de cákul,}) necessário:. em processamento dc multimídiu.
Fluura 8.5
(a) ~' IA2ccr~A"I A51 ~~1I A8 1
(dI
~ l lc, IA2IB2IC2IA31831C3IA"~4 1C41
,,' [C.jC2jC3:"'I::Crcoffi §§] ,.)
E;]~ . rnC2jC3jC-1j"'ElA5J
~bl ~, [IJa2C[lã3~B6~
CicIO - ...
"•o ~
• " o
•
"
.. o
~
•
Tnd as a) CPi :lo IlLndenlils, com paralcli:'il1t1 ( pipelinc). têm UI1I problema inerellte: quando unia referência à mcm(iri n CnClllllnl uma uu:.ê ncia das Clll.:hcs de nível I e nhcl 2, há umu longa c~pcra até q ue a pul:.vra req uisit:lIlu (e ) IHI linllll dc ca.:he It ~).,.,;iudll) )l:!jum carn.:gadall na cuchc. pOrlUllto o pipelinc p:ira. Uma ahonlagcm par.t lidar com ":l>S,1 sitllw;ãll, denuLllLllad•• mullithrcuding nu chilJ, Ih!rmite que a C PU gerenci..: múhipltl) th rt::Ids de contrnle tto 1l1 t:~ nl\l 11.: 1111)11 \! LII uma II:nHui va de: n m~cara r eSloas protellLçõelo. Em ) ULIl:l. se n Ihrcad I e~tiver blotjuc:ldo, a ( 'Pi J ainda Ictn UIII,. t:h'IIKC ue executar o th re ..d 2 , dI! mudo a manter (I Illtnl ware IOI:ll mcnle ocupado. Emhut\1 11 idéi,1 h.hic ... )eja r:l/.oavet mc nlc si mples, ex istem IlItÍhipla~ variantes. qU I! examina remos ngol1l. A primdru ahmdagem , mullith reuding d e gl'lluula~ ií o ti na , é Ilustrada lia Figurlt ~.5 jlllra uma C PU que tem a cllpacidade tie cmitir umlL IIhtru~ão por ciclo de rel6glO. Na Figuro ~ . 5 (a}- (c), vemos trê) Ihreadlo, A, 8 c C, p'lr:I 12 ciclo!> de lllí\qulna. Durante u primeiro ciclo , n thn=acl A cxe!;uta a instnlçi'io A /. Essn instlllçiio cOIIl: lui em um ciclo, ptJrlunto. no l>e!;undu ciclo, ti instntção 1\2 é iniciada. I nfehI.IH\!lIte, e);r instnlção encnntm uma ausência dto! cache de nível I, I)llnanto, dois ciclos siío d e~ pcrdiçltth)s CLllju.ull n 1L pahl\'nI llecc)sána é buscada !\lI cnche de nfvel 2 . O thrcuel cOlllinuu no ciclo 5_ De modo scl\lelhant e, os threalb 1.1 e C tambem prolelam ocasionnlrnente, como iluSlntdo na figura . Nesse modelo, se uma instrução protclur, u:. in~ l nI~õe, :.uhseqilcntc!\ não Ixxlcm ser emilitlílS. ~ duro que, mesmo com urna !al>ela de eScalonlllllcnlO mais )Ufi slICada, à~ velc~ podem ser cmil itlas novas instruções, 1118S, nesta di scusl>ão, vamOS ignoror tal po~sibi lidade. () n1U ltithro.:adlll~ de granulação tin"~ muscam alo protelações cxccutumlo os th reutb )Cgundo UIllU l>ulftica de allcl'Il:lnd .. c iro.: uhlr, .:mn ULll Ihreud ,lifero.:llIe em ciclns cnn)ecuti vos, como Illo:.trú iI Figura 8.5(d). Quando c hc~a (} quarlo !;Iclo, U opcr;tçãullc IIIcmória iniciada e m A I foi concluída, ponanro a insltlIç:h'l 1\2 pode M!r executada, ainda 1IIIe n ece:.~ite du rc)ultado de A J. Nc)se caso, a prolclação tnáxima é t.I nis ciclos, pllrtanW, com três Ihrl!ads, il operação protl!lad.t )cmpre é concl ufda a tempo . Se UUla protclação de memória demorasse qUlltro ciclo:., preci:.arí'lIllll!> de qWltro th reutls pllru gurami r operação t;omín uu c assi m po r cliame. Uma vel Cjue tllreads d if..: n: n, c~ nadn ' ~ L1L 11 vcr um com o outro, cadA um precisa de seu próprio c()nj~LIl\() J e rcgi~,rad()res . QUàndu urna inslOIção é emitida, é preci)o incl uir, com da, UIll pollteiro par.! seu conjunto de fegistnJ1111I'CS, de Illlkio que, !>c um regi~ t rad ()r for referenciado, o hardware saherá qual conjunto de regi!>tríulores usa r.
relAugulos vaziOS indiCilffi que o thread parou esporando pol rnenulna. (dI Mulmhreadtng de granulação tina. lei Multithreadlllg de granulação glossa
~
u
8.1.2 Multithr eading no chip
!al- (cl Três 111I
•o • •• " •• o
CICIo
_
00 N M
••" o
~
• "
• ~
o
u
•
~
•
~
•" " "" •
~
'. o
~
• c" •
~
o"
pOJ çOllseqiH!lIcin. u mimem m{txiltlo ue 1 11 ['elld.~ que podem ser e,'(ecutado~ de uma ver ~Ó é lixado lia ncn~iãu em
lJUC {) ch ip é projetadu. Opera~·õe ... de memória nilll ~iio a línica r,lzào para protela\'ão. Às \'ele~ uma ins lnl~'flll pred~a de Um result ado calcu ladu por uma instrução anterior Ilue ainda não foi condufda. Às "ezes uma instrução 11110 pode iniciar porque ela ve m após um desviu conJiciOllill l:uju direção ai nda niio é conhecida. I~ rn geral. ~e (I pil~ lil1e tiver k c<;tágios. mas houver no mínimo k threads par:! rU7.er al!ermlucia ÔrcUIUf, nunca IHlvcrá llmi .. de urna in ~ tn.L1;ii\l por thread nu pipcl i nc fi urtanto fllgUII~ projct i ~tus pr efe rem lima nbnrdage m diferent e. Cllrlhecic!a como multilhrcadillg de grllrlulaçi'i u grnS.~a. ilu ~ tmd n na Figura 8.5(c l. Nesse co so, () threml A inicia e cuntinua " emitir ins tmçõcs até 'Prtltclar. dc..:pcrdiç:lndo um dclt). Nesse ponto ucorre IImu lmc a e é executado. Visto que fi primei ra i n s tru~'ão do th rClI(1 fi prolela . aClll1tecc uma outra trocu de thrl!ild c Cf é executado no ciclo 6. Uma vez que se perde UI1l ciclo ~C!ll prc (IUC unm in~tl'll\'ã\l protehl. o multithreading de gr:muluçilo grossa é potcndallllcme menos dicienle du que muhith reatli ng de granul1l\ão finu. mas tem [I grande va ntagcm de precisar de um número II1Uit(1 menor de th re;lI t ~ para 11Iô1nter R CPU ocupada . Enl situaçõcs e m que hi"i um número insu lic ie me de thl'cads ati vos, pcline . At é aqui considcrmnos que li C PU só pode emi tir uma línic,l instrução I>or ciclo. Todav ia, comu já vimm. mode rnas podem emitir rlníltiplas instruções por ciclo. Na Figurn 8.6 considera ll1 o~ lI"e a C PU pode emi tir duas ins tn.!~·i)Cs j)()f ciclo de relógio. ma.~ mantivcmos a regra que db: que, quando uma instnlção protela. as in~tru çfles su bseqiient e.'\ nãu podem ser emi tid tls. Na Figura 8.6(a) vc mos como runciona o mul!ilhrcading de granulação fi nu COIll uma CPU supcrcscalar de cmissão dual. Pam o thrcau A. us duas primeiras in s tru~'õe" pouem ser emitidas no pri mei n1 clelu. ma.\: para o thrc'ld li e ncont ramos imediatame nte um probl ema no próximo ciclo. puna11lo ~orne n · te lima instrução pude ser emitida e assim por diante. Nu Fi guru 8.6tb) vemos como funciona IJ lIIultithreading de granulaçãu gros~a eOIll uma CPU de emi.'\sito dual, mll ~ agora com um escalonador estático que não introduz 11m delu morto após urna instrução quc protela. B:lsic;une nte. o~ thre;lus são cxeculados um por vez, sendo q ue :1 ("PU cmi te dlllls il1~t/'llçõe<1 jX1f thread até atingir \111\ que prote l:l. ponlo e1ll ~Iue troca para I) próx imo thread no inkio do ciclo seguinte. Com C P U .~ superescalares há um tercei ro modo possfvel de fazer multith rcading. denomi nado 1tIt1 l ti lh l'eHdin~ si multâ nclI. il u ~ tradtl na Figura 8.6(c). Essa alxml'lgcm pode ser con .~ ide rada cmnu um refinnrne nto d11 1llul tithreading: tte gnrnulac.;ãll gros~ a. rm qunl um único thre,l(t te m permi ssão de e mitir dua~ i n ~ lnl ~'iie ~ por cid o pelo tem po que puder. ma~ . (IUando protelar. a~ inslruções .~1i(1 tornadas imediatame nte do pr(}x irno Ilm:ad rw ~t·{jitê ncin. pHr.L manter a C PU tlltn lrnCl1te ocu padn . O llIultithrcading ~ inHlltãnco lambém pod e ajud.u a r1l!11lle r nC llpada~ tnda.~ a~ unidndes I\mcionni s. Quando UFOU imtnl\ão não pude r ser inici ada porque uma unidade funci(lfIa l de que ela nc('cssita e~\;í ocupada. pOlle-se e~colhe r uma i n s t n l~'ã(l de um thread diferente no lugar daquela . Ne~~a figurn estamos eOl1.~ iderand(J {lue fJH pro tel a no ciclo 11 , portanto (:7 é iniciada no ciclo 12. Se (juiscr mai s in fo rmaçiJcs sobre lItultithreuding, t'onsu ltc Dea n. 2004; Kalla ct ;11.. 2(M)-l : c Kapil ct aI.. 2004 . 1\ co mb i llil~';1o de multithrc.uling e t11ll execuç uo espec ulativa é f"~alninada e ln Sohi e RUlll (2{x) I).
"f
crus
flgltra 8.6 MultiUueading com uma CPU superesclIlar de emissão dual. (a) Mull.iUueading de
gra nulação fina . (bl MulUUueading de granulação grossa. (e) Multllhreadlng simultâneo.
AI 81 C1 A3 82 C3 A5 B3 C5 A6 BS C7
A2
C4
,.,
Ctclo -
84 C6 Al B6 C6
Ciclo -
-
1')
Cicio - _ I,)
_
Hiperthreading no Pentium 4
O>
Agur .. que jú \ imul> \I muhiLhrcadillg no campo ahSlrUl!), vamos CQn:.idcmr IIIIl CXCl1Ipl.) prático de lIIullilhrcading: .1 CPU l'enlJunl 4. Dcpoi:. que t) PentiulIl -t já C,)[UVõI em produção, os iuquilCIO:' tia Intel jllOCUrrll':l1lL vário!>
meio ... de aUlIlcnlM !ou .. vl:lucidad..:
~em
Illud.. r
ti
interrace de pwgramadnrcs. algo que jamui . . seria uccitu.
Rapidwucnlc ~lIrglnllll CLILCO mudo:.:
,'ckl\:illnde de relógio. 2. C!llneur dUd!\ (Plh. CI1I um chip. L
AUlIlclltolf il
3. 4.
Adichlllilr 111l1l1.lIle ~ rUIll: jolluis. Aumelll ,lr 11 .,;omprimenlo do pilldine.
5 . Ihar IlJIIILIlhrc,uliug .
Um modo 6h"l" de melhorar () lic~e/llpeilho é ,\umentar 11 velocidade de relógiu :.t:1Il alle"lr mais nada. hM ) é algo n::lr.tj,umenh; direto c hém cllI cndido, porlalllO cadil novu chip lan,:ado em geral é um pnuc() ma;) mpidullo IIUI.! ~e u pr.:dt:cl! i.~{)r. IlIldit.nh:lltt.!, um relógio mai!> rápido tal1lhéllllem dUll ~ del>v.t1Ila~t.!Il~ pnn';l]lai~ que liu1llal1l li lõ!nl\J de aUIllClll <1 que pode ~cr tolcrmlo. Em primeiro lugllr. u m rdóg;o lllais rápidlJ 1lS:1 mais clIl!rgia, n {IUI! ~ IIIll enorme probknl'" Jlilnl lI11whool.!> e t1utrn~ dispo:.ilivol> que fun cionam com 11OItcria. Em ~cgu Jl(lo lugar, a entrada de encrgiipar. Cülocar Jua ~ CPUl> CIlI um chip é rC];ll ivamentc dirctu, mas cquivale il quai.C duplicar li árcalJo dlip !oc ..:uda umll th er ~Uill> pmprill!o eacheS c, por isso, reduz por um fator de dois o m1mcm tle r.: hip~ ptlr lilmin8. tl que , elll es!>ência, dobm o c o ~ tn de fabricação por unidade. Se os doil> chip~ compartilharelll um,1 cilchc em COlllum, di) nH:~mo lanmuho d,1 originll1. a árclI do chip n:lo é dobrada. mas o tamanho da cachc por (' PU é divididu ao mcio, 11 IJLh! reclul. u dl!!>t:lllpcnho. I\Mm diíol>o, c:.nquanto aplicaçi'ic!> de :>crvidores de alio de!>cmpcnhu llIuit() ~ VCLes Ixxll!ll1 utilizar IIJtalllll!ntl! JlLLílliplil) CPU). ILCIII todas as aplicayõc!o paw ct1mputndorcs de rue~LI têm p:lI'alcli~lIl11 inerente Mlficienle pllra jLhtilieur dual> CPUs completlls. Adicionar Lnai:. ullidudcs runcionais também é f(Wliivelmcnte r~e i l. ma~ é iL1lpl.ll1arlll! clJlLseguir o I!quill1JI in eurrcto. Não atlhllllll lIluiw I\!I dt.!z ALUs ~I;! n t.! hij1 l! ineuj1'" de ulilllenlar imlrLu,:õe) !lO pipcliJlI! CO III rapide, l>L1li ~ ciente para manlÍ! la!> toda:. lJcupada). Um Plp..:linc III IOUgll, cum mais e)lágius, cuda \Im rellJillLndo uma porção menor du trab:llho em um perfo. du de: h!lIilxr nl<J i ~ l:IlI tn também deva o deM!ml:k!uho, HHI~ tamhém aumenta os creil()~ negati vu!> das pl'cvi~õcs errada) de dc!>\ io), au ~êJl t.!ia ... da cache. inlCmlpçÕCS c outros fatore~ que intcmnnpcm 11 nuxo uunnul no pipdine. Além do llIai~ , panl n tolal aprmd tamcllto de um pipeline mais longo, LI velocidade de rdógin tem de ser :lurnemad:l. I) que :.ignilica que l11al) energia é cOII:.Llrnida e mais c:Llul' é pnxluzidn. Por lim, ptK1e·!>c at.licillnar LlIultithreading. Seu valor c)tá .:m flll.Cr com que um segundo thread Ulili/l! hardware que, nãu fu~,c pur I~:'O, lic:nia abandonado. Apt.i'> algwua:. expenlllentaçi\e:.. ficou claro que um ilumento de YA na árca d,1 chlP pari! )UI)()111! de llluhilhl'e..ding r~su h:triu t:1ll g(lnho de 25% em d c!>~~ mpenh\l JliU<1 Illuilas apH· caçõci., Oc:' m(li s rápida!. do pn)t;c~saclor PellliUlll. A Intel deu o nome de hi pcrthrt!:ld ing li implcmclltução de ll1uhilhreadillg uloada no PClltiullI 4. A idéia h:hka ê l)Crmitir 'l"e dui:. Ihreilds (ou 1)lls~ivcllllcnte processos, um:1 veio (jlle u CPlJ nl\o pode IIi:.tinguir cntre o que é um thrl!ad e o que é um processo) CXCCUlemlLO mesmo tempo. Para o Sil>h:!lIla opt:mciunal, o chip Pcnliulll 4 com hipcrthreilding parece um processador duul no qual ambas as CPUs cnrn l):LrtilhillTl cm comum umlL cache c u memória I,rineip:tl . O sistema operacional escalonn os threads indcpc.:ndelllcrnente. Se duas nplic\lvnel> estiverem execu!ilndo ao mesmo tempo, o ~htema opcmeimlill pode exeCUI:Lr :Llnbo~ \10 llle~nlO tempo. Por exemplo, se um daemoll Ih! eorreit) csliver envi ando ou recebendo e· muil no segundo pluno cnq UU!ll1J UIIl uSIl6rio e~tá intcrllgindu com al~L1m prugr:ullllno primciro plano, o pl'llgr(lma dUC!LlOIl e o j>L'IlgrullLa u:'lIário podem executw CIIL parald u, COll lO !>I! llOuve ~l>e Lltm:. CPUs di:,ponívcis. Um )Ill!w:u'e de apliclu;l1n projetado para executar como thrclllb múltiplos pode USIU' ulllb:i~ as CPUs virtuuis. Por excmplu, progriLllIal> de t!dição de vfdeo usualmcnle pt:!f1uitem que os Il!>uá!'io) el>pecitiQucm cer1o~ liltrus para aplicar LI cada tlu;lum dCl1tru de ulgulIl limite. Esslo:s filtros Ixxlcm modificar o brilho. o contr.tSIt.:. o equilfllfio dt! cores e nutra!> prt,pncdadc.'!o de cadlL quadro. EllIãn, II pmgr.:uua IXIlIc tlc!>ignar UIIl:' CPU jl:ir.1 pJ'tll:eío!>ar o:. CIU:Ldros de nÚlllcrn::. pare!> e a mura CPlJ p:LrJ procesl>ar os quadms de números ímparc) lo: alo c\tm:. podem cxt-'Cutar ~olllpl e· \lllllcme imJep'I!lIdellte:. ulIla da ulltm. Uma \ ' CZ (ILlC tini!> lhreads comparti lham todos os recursos de hurdwarc, I! preciso lima estratégia par.I gl!l'Cncinr Ii cOllLpanilhamemn. A J mel identificou 1]1Iatru c~ tratégial> Ílteis para COlllpilt1ilhil1llCnlll de recursos em conjunlOcom hipcrthrcading: dllpJjca~:àCl dI! r.:cursos. partiy:'lll ele rl!cursos. compan ilharneuln limitado e CIlIllP;lrtilhunlclltíl lOWI. Valllo~ c~I Lldilr caeJa lima dcl'ls por VC7. Ilara cOllle{fdr, al g LlIl ~ reC Ll r~os são duplicados só p'lnL fal.er 11 lllreadillg . 1\1I' exemplo, \' i ~LO qllc cada lhread telll !>cu próprin i1u xo de cOlllrol.:. é preciso acre~celllur um sc:g undo cnnLlIcJur de programA . AI .!1I1 di~:.tl . a '"hcla quI.! mapcl.L o!> rcgi:'lrudores de aflluitctura (6'AX, t:IJX etc. ) para regi.,lnll l ore~ fjskn~ li:lIllhém tcm de ~t:r dupli l ada , a~:.illL como n controlador de interru pçào, jii quc os Ih read~ ]>od~1IL ~c r illlCrrollljlHill) tndepcnclclll cmell lc.
N M
•o
• •
..-•• •o
~
,• ~
• o
"• '0
• ,• •
~
o
• ~
•
u
o
Cl .
M M
""
flgllr.8 .1
Compartilllllmento
•"
de r8(.111808 elltre
~
micr08rqui tetura NetBllist Pentfum 4.
o
• "
~
•
o u
• •
~
~
•
·"""
" w o
~ ~
• N
o
•
~
o
threads na
. """ rAbeln
r" d, mlACll
AIOCIIçA(>I
'elll"""ltÇAo
._. R.do
""'-
"" ."""•.
11001'1" " hecuçlilo
"""
.
C."" "'''''
I"... FlICf~n
dt
r"IPSI!~dor
"
'~~rad ~
Em ~guid ll lemos:. IJllrlh;iio de rl'Cllrsn.. (·ompar1illmdns. na (IUa1 UJ; I't:l'ur"us do hmdwllre ~5u divididus rigiuul1lclltc elltre os IhrcAd~. Por exemplo. se a C PU tiver umam:! cntre dois estágios de pipcliltc funciuno!. meta· de <.Ius posiçõcs putle rill ser dedicada ao lhrcad I c a o utra metade ao thread 2. A I)o .. içõc .. em cada fila é rescr"ada p'lnl cada Ihrcad. Nessa parliç1io. nenhum thread IXKle estmngular um outro. O ulucador c rcnol1lelldur L1e regi~ trnclnr também é repartido. O escalonador é compm1ilhudo dinamicmm:nt c, mas com Uni limite. IWlI impedir que IIIHlIquer dos lhn: nu lIlultithrcilding - t;lIl1hé m h ~ uma dc .. vnnt:.gelll. Emhllfól () particionamento seja hnTato. o compartilhamento dinâmico de qualllucr recurso e. em especi:ll. com um limite sohre quunIH um Ihread pode pegar. rcituaçõcs ua ~
°
8.1.3 Multiprocessadores com um único chip Embora (I lIIu1ti1hrei.di ng rcsulte em ~ i g nifi cat ivos ganhos el11 dc~e ml'e nho por 11m çu"tn 1Il1ll1r.'!1o. pari! ulgu mas aplicações é preci~o um ganho e m dcsel1lpenhol1luiIU maior do Ilue o nm\lilhreading pode (Irercccr. Pura cnnseguir esse de..emlx:nho estãu semhlll escll vo l v ido~ c hi p~ multiproce~"tl(lme~ . IH \l ua" :he.... de i ll1erc~ "e pO!I"a c""e~ chips que con1êm dun s uu rna; ~ C PU .. : servidt)rcs de al ta tecnol("lgia e e(lui panlentu~ elc t rôr1i co~ de (:on~umn . 1\ seguir vumos r"zer um breve c~ t Ulln de clldll uma d e l a ~ . •
I
Plpeline \ flgutll 8 _8
Mutuproces!>adores com um UnlCO clllp. la) CllLp com plpehne dual. !b) Chlp com dois núcleos.
1=
-
F'~
..
CPU
Memória da cacha
L_C_P_ lJ _ -,
Plpellne \
I
& I c;ooo~ '(.'" ""
MemÓrl~·dO cache
I'}
lO)
Multiprocessadores homogêneos em um chip Cum U~ il vml'ill~ nH h.!enologhl VLSI , IIgora é Ilossfvd clIlcx:ur dll
Multiprocessadores he terogêneos em um chip Uma área de aplicilçãn complclHmenh! difcrt!lIte que utiliz,l rnulliprocessadores em U1II único chip é 11 de ~is t e C0 l110 aparelhos de tclevisão. rc produttJfe~ d\! DVD, camcordcrs. consoles de j ogos. te lefones celulareS e assim pM dianle. Esses sistemas têm rt!qui silos c xi genl t! ~ dI! dcscmpcnho c restri'iOcs rigorosas. Embora esses disposilivos parcçilln dircrenles, na realidlldc. rnal~ c rn uis ddes s50, simplesmente, lM::quenos computadores com uma ou mais C PUs, memórias, controlrtdorcs de EIS e alguns di~ pos il i vos de EiS cspcdai s. Um lelefone eelulllr, pO!" exemplo, é IIIll mero PC com umil CI'U, rncmória, teclado d iminuto, microfone. alto-ful :lIlte e uma conexiio de rede sem fi o, IIc1ll.ro de um pt!qucllo pilcnte. Consitkre, como exemplo, um ilpilrelho pnrtfí til de DVD. O compUTador que está de nlro dclc tem de manipular as ~eg llilll cs fllllçi'ies: ma~ embtr1 i d()~, t!11I csp\!ci:11 em equi pamen\(ls elelrônir.:os audiov isuais de consumo,
C'lIl1lrole de U1l1 st! rvomcc ani ~ l1lo lI,lralO, não conliável, para posicionmnel1\o do cabeçote (511guló de \'isão L1c J60 !l fillL ~J. z , Curr vcr~úo dc lInrdógico para digillll. 3 . C(JI"reç:i1l d I.: erl"Os. 4 . ne<.: ri pta \~ãt) c gcrendu mclllo de dimitos digitu is. B. !)t!~CO Jll r n.:~~àn de vide!"1 MI'EG-2 . 6. De~co Ill Jlre.'>sãt) de Úudiu. 7 . Codificaçfi p da saída para apurel hos de LCl e v i~ ãu NTSC. PAL 011 SECAM . 1.
E:,sc lra halhtt deve ~c r rt!ali zado soh ríg idas n!~ lri ções de lempo real . qua lidude de ~e r v i ç o. energiil. dissipOIçãn de calur, lam,mh(l . p<.: ~(l c prcçll. DbclI~ de DVD contêm UlllillollgU c~ p ira llla qual e~ l ã{) as informllçõc~, eomo ilustrado na Fig1l1"il 2 .2 1 (para 11m C D). O e abe ~'Ht e de leitura deve 1}CI·corrc r a espira l COl11 precisão ti medida que {) di sco gira. O Jlre~o é I1lmllido biJÍXU pela IIt!lil.lIl, àu de lll11 projctn mccânico rClmivll1l1cnle simples c pelo rfgitlu <.: oulroll! da pos ição do cabc ~nte cm ~on wa re. O ~il1a l quc ~a i do cabcçote é um sinalllnalógico que devt! ser convertido para forma digital ant es de ser proce)~a du. Apô~ ~cr digitnli zildo, é preciso cx l en~a correção dc erros l)Urqlle DVDs sã() prl!nsados c contêm mu itos t! rru~, que ueveHl ~er corrig idos e m ~urt ware . O ,,(deo é c()mprimido usando o padrão MPEG-2. (jUC requer ci\ lcuj q~ cnmpkx \1s para a descompressão (parecidos com Iral1sfornmda s dI! Fourier). O úudio é cnm primido usando um mod elo p ~lcoacli ~l i cn que lambém requer l:álculns sofi sticados pam descompressão. Por fim , áudiu e vfdt!o tê m de ~er 1!1It rq;lIe:. em 1I111a fonnil adequada ]lilr.t re produyão em aparelhos de televisão NTSC, I'AL ou SECA M, dcpcndcmlo tio p:ti~ pura o qual o apardho de DVD será despachado. Não é nenhuma surpresa que sej a illlpos~ í vel
•o
• ""
" •"o
~
·
~
," ~
ao
u
•
·0
•
,"" •
N
M
M
••"o ~
,• ~
• o
U
• ,•"
~
, " "
~
o ~ ~
• "c
•
~
o"
fa1.er (tltlu esse 11"311111ho CI1II(,111pO real. em suftware. COI11 lima C'PU bllmla de u ~o gcru l. Nc~ ~e l:a'lO, Jlrcd~ arnos de UIII Inullipn)Cc~~uuor hClc nlgêncll 'luC cOJucuha IlllíllipltlS I1lk1cos. cada um especializado para lima tnre f" p"rtit' u, 1:lr. UlIl l'ltCmpltl de apart!lho de DVD é dado na Figura R.9. As fun,õe~ dus núclcus na Figura 8.9 são todas difercnlc.c;. e cada uma é prujclaull com cuidado para ser extremamente boa nu que faz pelo pre,o mai ~ ba; ,'Ilo possíve l. Por exemplo. o vfdco de IJVO é comprimid\) u'Iamlo um C"qUCIII3 conhecidu como M I'EG-2 (que quer Ili 7.er M"lioll I'iclure Exp crls CrUIII) - grullU de espedlllistlls em flI lIles - que ti inventou) O sistema cOllsiste el11 d iv idir cada quadro em hlocos de pi :(cl ~ c fu?.c!" lima complcx lI transfortllll\·ão em cada 11111 . Um (IUadm I~od e con"isti r intei ramente em blocu,> Imn1iform .. do~ OH pode C"IJCdficllT que UIn t:erto blut:(l é iglHl l a um outro já encontrado no ~Iuadro nl1lerior. exceto por um par de pi'\"cI" tlue rOrdlH aHcr;rtlos, porém locaIi7.ado(,:Qm um arastamento de (de lta x, delta y) em relação à sua po.. i ~·f1o l'IlHCI1\C. FAzer e~ ..e d iletilo e m sof!w:lrc é cxtremamente lento. ma1i é plls~rvel (~nn ~ lr1Jil' ullm 1I1:'i às vezes tê m máquinas fOlo~ ráfi c as. " ideodimera.. , lIIá4Uin:l" de jogu ... brll\\'sr rs \Veb. l ei tore~ de e-m ail c rece ptores de rád io por .. :Ité lite, que usam a lecnologm de tcleft.JI1 ia celular (C DMA ou GSM) ou In tcrnet ~C I\1 fio (IEEE 802 . 11. também c h:lluada \ViFi ): O ~ futlll'tJ" p\1dclI1 inclu ir todos esses. À mcd ida Ilue os dispusi tivos adquirem cada vcz mais fUlIcionulidade , l.'()1I1 !'c l';gio .. que se In\n .. fnnnarn e l1l lIt:1p:rS buselldos em G PS e 6cul os que se tf:m sforrnam c m rádios, a necessidade de m\ll! ip rtlcc~" adure s hetcmgêneos s6 crescerá. Dentro em puuco Ol' chips tc rilo 500 milhõcs de transistores . C hips como esse~ ~ à o gra nd e~ d emai~ para quc sc projete uma pOr1a e U111 fio pur veL O esforço humano requcrido rari" com que m chi p .. fi ca~~C 11l oh.. u lelOS II1Iando rossem terminados. 1\ úl1ica maneira viável é usar l1úclcns (em essência, bih1intc c ,, ~) que contel1ham ~ u b conju ntus razua"e ll11ente grande.. e então cll loc.í-lus e int c rco nec t á - ln ~ nu chip conformc nc("e"s:í rin. Então. 11~ projetistas têm de determ inar qu ul mideu de C I' U usar para o pnx:essudor de controle c (llIai~ rrncc .... udorc~ dc u ~n especial acrescenl;lr pari! :Ijudú-Io. Atribu ir nltlis c .. rga ao software que exccuta nu pl'Ucc.. ~adur de controle f:17, o sistema fi car mais lcnltl mas rcsulta em um chip mcnor (c mais buratCl) . Ter \'á ri u .. ]lrtlce~<;u d nre<; de lI"n I'wecial panr prOl"c~sarnento de áudio e vfdco ocu pa árell do chil>. aumcnta o c u ~to. ma~ rc~ ultn em desempe nho" mais altos c UIUII t:Lxa de relóg io mais b"ix:l . o que s i g l1ifi l~ a menor consumo de e rrer~iu e menos di ~~ip n çilo de l·alor. Assim, os projctistas de chips enfrentam cada vez mais esses c() mpromi<;so~ m ncm~c(i pic os em \ 'el de se preocupa r com onde vflo (.'Olocar cada tntnsistor. Aplicações a lldi ovi~ Ulli s fn zem u ..o muito intenso de dados. Enonncs (1 U:l11t idade ~ de tl ad()~ têm de ser pmces· sHdns rapidll1nente, portantu, o 1I0rmnl é que 50t;f, 11 75% dn Me:I do chip são dedicados à merni'rin ~oh IImn forma ou outra , e li quantitllluc est:1 ucsccllllo. Neste caso, as IIUCS1ÕCS de projeto silo r1Ilm l'fH"it~. Qtl lIl1 to~ l1í ve i ~ de euchc devcm ser usados'] A(s) cllche(s) deve(l1I) !lcr di vitl iJals) ou unifieada(s)? Q\HII deverá ~cr () 1:1I1I1111 ho de cmln caehe? Qunl deverá ser a rapidez de cada uma'! Um po uco da memória também de\'c ir para" chip ! Eln de\'e !Ocr SH. AM ou SDH.AM? As rcspn~ t :r s para cuda lima dessas perguntas têm importantes irnplicaçõe ~ para \1 desempe nh u. consumo de encrgi:I e dissipa"'iiu de calm do chip. Alé m tio prujeto de processndores c sistcrnn de memória. UlIla oulra questiio ,Ie con ~ i dl'nhd ef11lscqUência é () ~ i ~ h.: ma de curnunic!U;iio - como IO"ll~ os núcleos sc cn nlunlcilrn um com o muro'! No Cil'iO de ~i~ teln:l'i pequcnos. um línico barramento usualmente dará cunta do negócio, mas paror sistemas maiore~ ele 1011.(1 "C toma um gnrgnlo. Mui tas \l'.l.es o prohlemil poJ e ser resolvidu migrando para rnultiplos barramenlos ou. 1)\1....i\'("11IIel1le. para um anel IllIe \'lIi de núcleo para núdeo. Nesse líltimo caso iI arhitm\'ào é conduzida passando u1I1lJC(lucno pacole denominado 1111111 pennissilo llO redor du anel. Para lransmi1ir, e m primeiro lugar um micleu deve caplUmr li !lCnni .....âo. AtI c()l1duir, ele de"ol"c a peJ'rni s~iio ao ;ml!!. de modo que e la possa continuar circulando. E,."5e protocolo evi ta c(lH .. f)('~ nu anel. Comu c~clll plo de um;, interCOHcxão!lo c hip. considere o CoreCmtnerl da IBM . ilu ~tr:rdn 11;1 Fillurn lU O. É unIU arqui tetura pam concc t;Ir nudeos em UI1l mulliproces .. aJor h et ero~ênco COIII UII1 ti ni!:" chi p. Tm t ll - ~ til' um prl1jeto de sj~ t c ma cm um úni.;o chip especi almelltc completo. Dc certo 1110do, o CCJreCunnect é pllra multipntCc ..S ll dmc~ dc dliplínicn o <jllC II Imrrarnellto PC I é para I) " clltill lH - (J adesivo que mantém jl1ntll~ t(l(III~ a~ pa rt c~ . Ctl11tmll1, diferente mente d o hUrTIIl1lentl1 Pl' l, o CoreCol1/1t..'C t roi projct ado scnl l1cnhul1In ~'~i !ll!nc i:r de cull1patibi li dadc com e
Figura 8 .9
A csmllura lógLca de um IIhnplns aparelho de OVO contem um
lIIultiprocflssador heterogêneo com
muluploa nucleos para diferentes
M
Docodillcador de vidoo composto NTSCJPAUSECAM DecodiflCadOf de vfdeo MPEG
M
M
Controlador de disco
•o
Processador de contrOle
•
•" • •• o
Ctup muluprocessador
heterogêneo com -' -
L=="-'-"-'='iC="-'=f'-:-'='--'
~
seis nUcJeos
funçi5cs .
~
•o ~
eo
u
I
!cPU de fluura 8.10
I""'""'"
Árbitro
••"o • o
Exemplo da
O'
"
il.lquilelura
~
CorüCouuet.1 da IBM BarfillTlento de processador
..
Barramento de periféricos
o
• ~
•
u
I:.:.temkr li Illlrl ,tl1u.:uttr de prncebador ao chtp tntdro n:duziriu :.cu descmpenho, port.tolo UIII segundo bar~ fallh.:ntH c!>Iá prc!>elllc paril dhpu!>itivos de EIS lentos, como UARTs, temporizadores, controladorcl> di s· pn~itivo!> de EIS senal e ils~im pllrdiallle. Es~c bllrrumento d e periféricos foi projetado COITl n objetivo de sim plifi car sua iutcrlllt'C CUllI pl:!rifém:o~ de 8. 16 e 32 !li ts usando niio mais do que uma ccotc nu de portas. Também de é um harranll!lItu :.il1l:runo. com uma va/:lo máxima de 300 Mbps. Os doi~ halTamentos sàn conectados por uma pUllIc. não IIlL1llU Ilifcrenh: d'ls ponte!> (Iue foram IIsitdus pura concctar os barramcntos PC I e ISA em peso até li b'lrramclllO ISA :...:r dl!~e{)tllillulldo há alguns ~lIlns . O terceiro harr,lIlleFlto é (I hurrallle nto d e n~ g i .~ l rlldllres d e dispos ith'o, um harrulllcntu dc JllLílua npreM:nl,u;ão :l~~íncnJl1t1 , Ih! \'cltx;idllde muito baixll, utili z:ldo para permitir que os rrocesslldores acc=s~clllOS regis ~ trôtdore!> de d i ~p()~ iti \'U~ de todu!> os pcriférico$ de modo n cnnlrolur os dispMilivo!> corrc:.pnndcntcs. É de~tina do a trôtn:.f..:rênciil!> puuco freq(icll lI':~ de apcmts nlguns bytcs por vez. Ao fnmel.:..:r bllrr.llltentn no chip. interfilcc e e~trulura ]llldronizILdos, a IBM espem criar IIIl1U versão em miniuwm do IlHwdu dn PCI, nu qual muitos fabricuntes produ zllFn processudores c cou troluclores fáceis ele ~eremligadnl> cm conjullto. EnlrelnFllO, ulIla difercnçil é qUI!. no mumlo do p e l, os fabricantc!> produzem e ven~ Ilcm iI~ placa!> l)mprillUlen tc ditus que o:. mont:ltlurcs e usuários finais de PC cOlll pmm . No mundo dn eore('unncct. I c rccili)~ projel.un micJeo!>, lIlas nllo os fabricum. Em VI!Z disso, elcs os licenciam como proprie· dade intcJcctu:.d pUI ,I c ml)r.:~a ~~d c eletrônicos de CllIbumo c OUlra~, (lue então projctum chips 1lI11Itiprocc~!>i1' dore~ hl!tl:rogênco ~ por \! th.:omclldll, bllscmlos e m "CUS próprios lIIí cleos c em micleos licenciados por tcrceiros. Vistn que rabll cur e~se!> chips tão granJcs c cOIllI!lexns requcr lIla ci~o investimcnto em unidild c~ indu~lnai:. , na muioua dos ca~os as empresa:. (Ie c lctrôn ico!> úe COIl:.Ulno apenus fazem o projelo e subcontra· t'lIIl li fabrici1~ão do dup com um fabricante de sClllicondutOfl!s. Exi ~tem míc1eos para várills CPUs (ARM. M1PS , !'owcrPC etc . J. hcm como jlllra decodificudon:s MPEG, processBdore!> dc !>ina is digitai ~ e tmlos os COIItl'lllatl{)rc~ dc EIS padrnnizadm. U CoreCun nccl da IBM não é o único b"rralllcl1w no chip popu lar no mcrcndo. O AM UA (Advullccc! Microcontroll cr n u!> Arc hit ecture), também ti Illuito usado (Flynn, 1997). Outros barramentos 00 chip um pouclllllenos popuhrre!> sã" o \fel ( Virtual Cmu(lull ellt Inl crcctnncc t - intcr concdtl de com ponentes yirtu a is) e 11 ()CI~- II ' (OpCII Cor e I'rolocol - Int e rmlllOllal I'a r tllcrshlp - A l hHl~'11 Int ernaciOllul I'rolllcu!o d e NiiclclI A hcrto), Ilue também cstão competilltlo por 1I11111 pllrlicipuçi'l.o de mcrcadll (Kogel e Meyr, 2004; e OUildjanut e HUIII.CI , 2tJO.J). Hilrrarncll\(ls 111\ chi p são s6 U ClIlIleçtl; há quem já estcju pensando em redes inteil'a.) I!Ill t!1ll chi p (Bcnini e De Mi cheli, 2002). Como o~ fabri..:.mlel> de chi ps encommm umOl dificuldllde cadll \'CL. maior para ekvar frcqilencill~ de relógio devido 11 problenllll> tle dl!>~lp..ção de calor, llIultiproce:.sadnres em um línico chip siln um tópico que de!>pata muiw Ílllcrc ~~e. Mlli~ infml1layõc~ podem ser encolll rndas em Clua~en. 2003: Jcrruya c \Volf, 2005: Kuntar ct ai., 20()-I: LavagulJ, 2002: Line" 1004: e IhlvilUlmar, 2004.
usa.
;;;
8.2
Co-processadores
f')
-••" o
~
"e
~
o u
'•. •" o
~
"
~
o
Agora que j á Vi ll1 11~ algun~ do); modos de conseguir paralelismo no c hip. \ ",1I110S <;ubir urn degrau c ver CU II\U (I computador IXx!C ganhar velucidilde com a aJ i ~'ão de um <;egundo processadur e"pecia1i 1
dores irulcpcnucnlc<; puro efetuar EIS. Gráfico.. c uril mética de ponto nUluante silo (mIras área .. onJe ..ão lI"udu" cuprocessll tlores. Até I1IC<;I\IO UIlI chip DMA pode ser visto cnnm um co-processador. Em alguII" C30;{)Jõ, li CPU dá U(I co-pl1lccssaJor urna instru\'ào {lU um conjunto de iTl'itnu,:õcs c ordena que ele IlS e)(l'\'ute: em ulltro~ ça 'iO~. o (."l'-pIUI,:CSS;It!Pl é lII;1i ~ independente c funciu na e m grande parte pur .. i ~ó. Em tcrmo~ n~ict)~. cu -processad orc~ pod em vun;lr de um gnbiut'te sep:1rado (m c Clllai~ de EIS do .160). uma plnca de cJt pall ~iio (proce~sall nre~ de rede). 11 uma Arca 110 {'hi l) principal (pont ll nutuantc). Em todu~ t!~ C:I ~O~. II (Iue 01' di ~t il1gue é o fato de q ue all:\ull1 outro proce~ ~adllr é o plOcessndur principnl e que o.~ c{)- pnx:e~~;I dnres e~ tll n IA pam ajUll:í-lo. Agora exam inaremos as árca~ onde ~ pus!iíve l aumcntar n veloc idade: prOCl's~a lll e" to em rede. mui · tim ídia e criptografia.
8.2.1 Processadores de rede Ornnde pane dos curnpututlores de hoje estàu cOllectados li Ull1 n redc ou ~ Intemel. Ct)ll1{l resultado d e~~c prnem Iwrdwarc de rede , ClS redes agorn ~ão tão rApidas que fic!)u cflda \ C7 m::l i ~ tlilk il "mee~~u r cm suftware t odu~ os dados que Cl1lrUI11 e (Iue saem. CQlUO eún~ellilê n ciu, foramll c~e nvu lvid o~ pnlCcs~ ::ldure~ espc · dni~ de rede p:lra litlnr com o trMcgo e muitos cum putadores de alta tecnolog in ngom têm 11111 d c'i~c~ processudo· res. Nesta seçãu. rll1tc.~ de mais nada vmnos dar unm brcve ;ntroouçllo n redes e cm scguid;\ di ~c ut; rc m os como fun · ,",onam os Jln)Çe~~ lldorcs de rede. g rcs~uteenol(}gic(l
Introdução a redes Rcde~ de computad ores Ilodem ser tle dois tipos gerais: red es locais. ou LA Ns (local-arca nctworks ). que <'onect"m vários compuI ..dores dentro de 11111 edirrdo ou de UIl1 campus, e ret1es de louJ!:a distâ ncia (wide-arca n e lwork.o; ou WA Ns), (11Ie cOllectalll l'omputadores espalhados IXlr uma grnnde ~rea geogrMka. 1\ LAN mais popular ~ denominada Et hernel. A Ethcrnct original ('(lI1 ~iSl i a em um cabo gm~1'o no qual eram fnrç(,,,amcnle inseridos os fio~ que vi nlmm de t:nda computador, usando uma deriv:1çi\u conhec ida pelo eufe mismo conedor \'lImpirn. Elh cmct~ moc.leflm" lignm os computadores a UI11 comutador cc.nlm!. como i1ustradu na porção d ireita da Figura R. I1. A Ethernet origin .. 1 se ..m lstava a 3 Mbps, mas õl Pli meim versàu comercial jA er:! de 10 Mb p~. I:lu niio demo rou muito 11 ser ~ lIbs lilufda pelll Fast Elhcmel U 100 M b p~ e. então. pe la Gigubit Elhernl!t u 1 Gl>p~. Jlí existe no mero l'ado lima Ethcnlct ue lO gigabils e UI11 ;\ de 40 gig:lbils já está pronta para ser l:!nç:!da. A o rgn llj 7.a~1\o das WA Ns é d iferente. El:ls consi$tcll1 em complltall ore~ es peci illi 7adu.~ dcnominêldus rotelldu· I'CS cOlleclados por fi os ou fihrn s {ílicllS, CUlI10 11l0slm n purte dn meio dn f-igum 8. 11. Bl ocu~ de dlldn" {!t:nolllinildos IJll Colcs, 1l0rl1lnlmentc de 64 li cerca de 1500 bytcs. ~~ (lllluvidos da lII,íquin;l-follt c e Jla ~~ nltl pur UI1I (lU rn"i ~ rotcudorcs IIté alcan~~ are nl seu dest ino . Em eada snllo, um puário doméMico. U computador do usuárin nOnlltl huente está COllectll' do 11 um ~crvi(lor Web relu sistcma telefônico. por meiu "de Uni nlodcnl discado de 56 khp" ou por ADSL. que foi discutido no ClIpftulo 2. (Como alternativa pude ser usado um ÇIlOO de TV. eaS(I em que o I:ld,) c.~qucrdo da Figura R. I I é ligeimmente diferente e a empresil de TV li t:abo ~ o ISP.) O computadur do usu:trio de~ lIlembra em pacole~ os dados quc scr.iu en vill c.J()~ uo servidor c e nviu esses pacote~ no IS I' (Internet Scn'k e IJnu-idcr - provedor d e scrviços d e Intcl'llel), ullla e mpre~ a que ufcret·C acesso à Interne t a seU!! clientes. O IS P tem lima cunexão de alta velocidadc (usualmente por fi bra ótica) com uma das redes regionais ou hnckhon e~ llue cOlul)Ôem a InterneI. O~ pacotes d" usuArio ~ão repassados sa lto por s;llIo pela Internet até chegllrcrn au scrvidor "'cb. Insllll!lÇÕes 00 provedor de aplicaçAo
,,,. ,, ,
n oleadof
flgur. 8.1t
Como os usuários estão conectAdo!!
Internet.
8
servidoros na
4.
Unha 'clctônlca
.
lU
/ ",00"
4~ ISP y'/"~ O"1
4.
Servidol \ Flrew
\ Computador do usuário
Enlace de flblA ótica
I
I
fig ura 8 .12 Pacote tal como apaluf:o nll t::lhernet.
Carga ull!
I~I
A llI11ioriu da, e l1lpresa~ que nfefl!Ce s~rviços de W..:U t..:1I1 1lI1l computador t!Spt!cillliwdil d ~lIomimull) 11m nrc wlI lI qUt: filtra tudo o tráfego 'lu,,: chega nu tenti.l1 iva de ft!ll\íWer pacote!> indescj,ldos - pur exe mplo, pacotc~ de hac"er~ llUI:: e),tiio 1I':lItulldo invlILlir li n:Llt!. O fi rcwalJ c~ tá cOtlectadu à LAN 1000ill, Illlrru:\lmcnte um Ctllllut,uJor Ethernct ljue mlel.t p.ICnlt!~ até ti ~crvi dor desejado. É claro que a rculitladc é muito uUli ... complicada ,IH que mos· Immos, 1I11.!> a Idél.l hállica da Figura H. I I contimlil \'ál ida , O~ )oft .... .m: de rede cOIl!>i ... lc em tlníhiploll pro!ocolns, e cada um d..:lc) é um clIllju nto de f()nnalo~, loeqilêu·
da ... Lle troca..: r..:gr'Ll> ...Ohh:. 1l ~ignificado dos pacoteS. Por exemplo, (IUando um lI!>1uirio llLlcr huscar uma página Wch Ctn um . . ..:rvidur, .....:u hroWM:f envia ao ...crvidor um pUCOle quc contém uma reqlli~ição (if-:r PAGE u:\amlo () pTlltl)cnln IITrJ' (UYI'CI'TexI 'lhlllsfer l'rolncnl - prulnc:ulo el e transferência de hil)ertcxto). () ~c l'v idof s:Jhc como p nw.:e~sar c~sa~ reqlll . . l~ik s . I lá 1I111iltls pr(j[ocolo~ em II~O c. frcqUcntcmcnte, combillílllo .... Na II1l1imia das sitllilç,ies UlI prot ocol"... siío c~tnlHlra(hI S como uma :\éric de CUlIladas. seudo que as mni~ altas passlI lIl pacotes para a~ IlIlLis baixa!> para pnX;l! ~lI.ullelllo e li camada mais bai xu efctLlu 11 trlln... missiio prnpdal\lI:lItt:. Ilitll. No ladu receptor, os pacntc . . pc:n..:orrelllllell eumi nho pelas canmclus lia ordcm in"crsa, i...1O é, de baixo pura dil UI . Uma ,>et ljue proccs:\alllcnto de protocolos t. o (ILlC os pr(K:e)~lIdores de rede fatem pllra gUllhul' a vidu, é IICCCS~árin e... pliclIr um pllU..:u ~obre protocolos untes de I!~tudar o!> processadore ... de rede cm si. Por enquanlO, vamos "ui· t:.ar li requisição GLi' "A GE. Como ela é cllviad:lllo ~ervidm Web'! O que acontece é Cjut, cru primeiro lugar. o brow~er ~t ahc l ccc LII11d cllllexão com o ~crv idor Web usando um protOl:olu denominado T Cll ('I'rans missloll Control l'ruluc.,1 - pl'OlllCol1l de cUl1 l rul ~ de transmissão). O Mlftware que implemcnta es~c protocolo vcrificu se todos (j~ pae()\e~ furàl1l re..:ehidll~ integralmente e nu ordem elllTcla. Sc um pacot!! . . e pe rder, o M)rtwarc Tep garante qUI! de ~cj il rctrallsmilH.l1l t anta~ veLe:\ quantas forem lI ece~5áfi,IS alt. ~cr n,:cebido. Na prál ica, () lJuc aCOllteee é lJue Il browser Wcb fl1l'llmlU 11 requisição GET PAGE ÇOIllt) uma mcnsagcll1 11TTi' corro.:la e CllIãn :t enlreg:1 ao software TCP par.. translllis~ão pelll conexão. O sortware TCP acrescema 11111 cabt:~:iL lho à fTCU t!! da II1cu ...agcm, que contém um mimem de se(!Uência c outras informaçôcs. NaturalmeLlte, e)se cal}C~a · lho é denominado ca hcç1llhu T C I' . Is ...o fcito, o ...oftware TCP pega o caheçalho TCP e 11 carga út il (que comém ,I n'" paenlc ft;:sultantl! (que ,Igom é composto do cabtçal ho IP, cabeçalho Ter e rr.:quisição r.F.T PAG/:) é pôl~~adil par.! hlli), II. Jl1lnt iL cUlIladu de enlace de dndos, onde é acrr.:scelltado um caheçalho de enlace dc dad()~ ti frcl' te d! 1 pa..:')te p.. ra 11 !ntn~llli ......ilo propriumente dita. A cal Iluda d ~ r.:nlllce de drtdos tllll\hélll ILc n,:~CCILIIL ulna sorna de \'t:riIiCiU.:ilo uo tinal do pacute d~Hnlllinada cite (Cyclic I{cc!uml:mcy Cude - códigu de rcclundfinclll delirll) para dctt!ctar erro~ de h l llL,ltli~~i'io. A prc!>t!nça de ...nmas de Verificação na camada de enlaec dc dado:\ c na camadu de 111 pudcria parecer rcdulld,llLIe, lIIa~ da melhor.!. UcOllfiabilidadr.:. A cllda salto, o CRC é veri licado e o cabeçulho c () CRC lIi\o rc:.movido!> c regenerados. e 11111 formato "proprialh) é escolhido para o clll:Jce dc ~afdu . A Figura R. 12 Illo. . tm n li!>pccto do pacOle tlu:mdo estú na Ethemcl; na Jinhu telefônica o pacote é semelhante. cxcetn 1lt!lo 'cabeçalho de linha telefônica' em \'c~ Ile um eahcçal hn Etherncl. O gcrenciamelLlo de: cabcçulhos é impol1Unte c t. lima das coisas Illh! os procc:.sad(lrc~ de rede podem rULcr. Não é precillo diter Illh! :1pt:1l11S arr.mhamos a slIpcrITcie da (luC:\tào de rcd~ de COlllllutao.lure . . . Sc 1\ lei tor qll i~er um lr:ltamentO mais ahr.lIIgeutc, consulle 'I1menhaUlIl. 200:\.
Inlrodução a processadores de rede Há mui tos tipo ... dI! di~jlmitivns CO ll eelado~ às rctlc ~. U~llIlrios finais têm eo rnplltUllore~ pc~~()ais (d ~ Ille~a ou notcbooh), é claro, purém, cada vez mais tamhém têm m:ílJuinus tle jogos, rDAs (palllltOpS) e telcfullcs ccJu l:u ..:.... Empre...a... têm PC\ e íocrvidnro.:... como siste/lllls fina i:.. Tnt!lIvill, há fíl mbém nllmemsos di ~ pos jtj \,os ' Iue funcinlllllll !;tJIlIO ... i. . tcllla . . intcrmccliário~ elll redes, entre e l e~ rotendores, cOlllutadore~, lirl!walls, Wcb proxies e ha l ane..:udnre~ do.: carga, O ill1crc~ .,anle é (IUC cs...es sislemas int emlC(liáriil~ :.:10 os nlíLi ... exigenlcs. já (Iue slil) eles (Iue de\'em movi· mentar u maior mímem de pacotes por segundo, Servidore... também são exigo.:lltClo, 1H1I~ lIS múquinas u.... láriíb não lil'ill, Dep.!uo.lt!/1110 ita lede e do pllcoh: em si. um pacote que chcga pode precislIr de vários lipo§ de processantclltn : U\l c~ de 1>Cr repa~ ..... dn pUni ti Iinhu dc ~alda nu para n progr.UlllI tle aplicação. Esse pfllCe~ ... amento pode incluir do.:ciJir paríl onde o.: nvi;lr 11 pal,,,te, fmgmcnlií-Io, rc:colbtruí-In ti pllftir tlc ~CIIS peda\:o§. gercllciLlr sua qU1Llidade de ...cr· vi~\1 (CITL e;pccial IMf;! áudio e v/rico em tempo rcul l, gcre1Lci:lr segurança (por exclIlplll, criptogmfar c dt:criptogru t'url. eOlllprell~ão/d c"'C!1I 11p re~slio e assim iK1r di:LIIle. Com LI \cloeidude da... LAN ... ~c 1Lproximando dc -'O gigahits/~eg tln do c pacotes de I KU , um cumputador em redc pode ler de pfHce ... ~ur qua~e 5 milhõc~ de pueutcs/...cgundu. Quando O~ pacolcs são de lH hylt!s, u númcro de jl:içutcS quc tem de ~cr pn.lCc~ ...ado por segundo sohe a qua ~ !:lO milhõcs. Executar t od'l~ as vária... funções (IUC acah1lmu~ de mcnciOIl.t1 cm I 2- 2no os (além das mlÍltiplu ... cópias do pacote que, inv:lria\ellllc:nte, ... ãu neccssárilIIente naú ~ vi á\eJ elll Mlitware. A assistência do hardware é es...encial .
"' M M
•o
• • •
~
••"o ~
,• ~
8 o
u
• • ,•
~
•
m o
,
o.
•
u
•"
o
~
H O ~
• O
U
•
~
H ~
H
"O O
"
"
~
O
'H
~
• N
H ~
O
Um liplI de soluçiill de hnnlware p:m, processarnc11Iu n'lpido de p;u;oles é u~ar um AS Il' (Apllll cHlioll-SI)cdfic
Inlegnltcd Clr l'uit -
circuito int egradu eS l'ccífil'O Ilarn aplicatO ãu) soh cspcc iti l:a~·~o.
E~~c
chip é CtJII1 U um pru-
grama lixo que executa qutllqucr co [~um o de funçõc s de processamentu para o (IU;II fui prtlj('ladu. Mu itos roteadores atuais usam As/es. Entre tant u. os AS ICs lêm muitos problel11l1s. Em primeiro lugar. u pfl~CIU de um AS IC é muito dClIlormlu e sua rahricõJçãolambérn. Eles s~o rígidos. portanto. se for necessária unul Tluva fU llciunalidade. ~crá preciso pmjclnr e fabri car UIIl novo chip. Além d" I1m;s. o gcrendlUm:nto de bugs é um pcs,ulclo, visto que o \Ínico modo de c0l1!lcr1:t-los é projetar, fabri car, dc ~ plld1;lr c instalar Ilt)VOS chip!'. Também ~ão Cari l):, a menos que o volu me sejtt !iio grande que pemlita lI1nortizar o es fm'i0 do dese nvolvimento eum umn quantidade su h~ta llcial de ehi ps. Uma segunda !'ul u ~'ão é o FI' GA (F ield Prog rnmrna hle C ale Array - llrn llljo til' I'urtm; p rog rllllllhel em c:Ilnpn). que é 11111 conjullto de port a~ que podc ser organb:ado conruflnc ti circuito dC'Icjndu modificnl1dtl 'lua fi :l· ção em e;llI1I'0' O tCIIllXI de c hegada ao ITlcrcal!!) desscs chips é muito mai'l curto do quc o llos I\S I(;s. c sua liaçiio podc ser tIIodificndn em Clllll l)() rel!luvclltlo-os do siste ma c ill.~criudo- os elllurtl di " po~i ti \'ll c~pcci al de rc prugrama· "ão . Por uu tro ladn. ele... ~ão compleltos. I C1l1o~ c caros e. po r isso. não !'ao atmc nl c.~. l'!tCcto I'am aplir.:a~·õcs !'idade de sc comunicllr UII~ com us outros. 1\ outra formll de t)rgan i la ~ão til' PI'Es é o pipcline. Nessa organi Lação. cada PPE excl.: uta UIII:\ el apa de pm· CC!lSaT11cnt u e cntão alimcnta um punteiro para seu pacote de lOmfd :l para o próximo PPE no pi lJCline. De~~e IIIUUU. o pireline de JIPE age de modo muito parccidu cum os pipclines de CPU
di p!'ocessador de rede
" ....
p-
figura 8 .13 Placa e ehip de um
processadol de rede Uplco.
Em projew., ; I\ anç ildll ~, n~ PPE~ tê m multi threading. n que significa 'jue eles têm vários CO llj1l1110~ de: reí;islme um regj~trad()r em hardware que indica llIW[ d clc~ está em u ~o nu momento em \juCSl ão. Essa Cl\ ra c' e rís l i ~ ca é u~atla 1',1101 e x\a: u l nr \ lÍrio:. pf{lg rarna ~
thread , apena:.
'conjurlltl atual de regi:.tradores'. Mais comumeL1te:, quando um PPE prolela, plU vári()~ cidu~ dI! fI,.:lógio), ele pode Cllllltlt;lr inSl an1anc;uneJllc para um thrcud exeLlllávcl. Dessa Illllneira. um PilE pode conseguir altll utili zação, mesmo quando hloqueia com frcqliência para UCCl>:.ur 11 SDRAM nu realizar alguma outru operação ex tcrna lCJlIU.
.....
M M
Ulh:!r:llu.ln iI \ ariil.vcl
exe mplo. qu,mdo fI.: h.:rt!lH.:ia :1 SD RAM (n que !Orna
Além dm, I' P E ~, tod()~ os proce:.sudores de rede Contêm 11m proccl>sudor de COntrole, usualmente apenas uma CPU RlSC padroni/ad'L de Ul>{) geral. pnrn realizar lodll o lrabalho não relacionado com p l\)ce~:.aL1I1,: ntu de pac.:o1l.!s, tlll corno a tu 'L l iLa~ãll das tahelas de roteamento. Seu progfàl1ltl e dados estão IHI Illcmórin 110 chip locn l. Além tio mais, Illl1itt)~ chips de proct!ssadnres de rede Hlmbém contém um o u Il\ab proccs!>adures c!>pecia lil.'ldos parti rcali · Lllr Ct\lIIpatihililllÇãu de p.Leirões ou outras ope rações críticas. Na realidade, el>ses proces~lirlnres ~ãLl pequenos A S I C~ (IUI! :.:10 hOH ~ pura c;';Ct;Ular UJIlU ún it;U n pL.!ra~litJ :.implc!'>, tul como consultar um cndcre'i,:o de destino na tabc· la de roteamenlu . Tudo:. Olo COlllpOllelltcs dl) proce!>!>:tdnr de rede ~e COllllLll icalll por lun 011 llIai ~ harrallle ll tn~ para· lelos no d)ip, 4ue funciunam a vdoddades de mlllligigahils:Jsegllndo.
"o
• • •"
~
•o"" ~
•
"So. o
"
Processamento de pacotes Q uando um p,JL;l)le chega, ele pa~~a por vários e~t;ígi os dc proct;! S~mnento. independentemente de o pmces~a· dor de rcde ter lima L)rganizaçãn paralela ou de pi ]>cli ne. A Iguns processadores de rede divide m essas ctapas em 0l~' raçõc~ cxcculUdôlS eUl p'I!.; ()tc~ quc chegam (sej a oe uma linha ilc rede, ~Cjil de UI1\ harrrtlllenlO de SbtCTlHI), deno mi· m[(lu ~ p roCC3S11IlU!II !CI d e c utruelil , e operações exccutildas em pacotes de saída, deno minadaS pl"OccSSUIIICIII () d e suíd u. Quando c~~a di~tinção li feita, IOdo pacole passa, em primei ro lug:lr. pelo pnx:essumcnto de entrada c, em seguida, pelo prnce~ ~ amenl(! de sn ída, A fron teira entre processamento de entrndn e pmcessnmenlO de !>a ída é tlcd vd porque al g ull\ a~ e t apa~ podcm ser renlizudas em quaisquer das duas panes - por exemplo, coletnr estHtÍl>t icas d..: lráfcgo. 11. ~t:guir di ~c 1l 1lrcJll m ullIa ordena~ão potencial das várias etapas, ll1a~ observe que nem todos os pa c()tc~ preCi!>iLIII U..: todalo li!> C t ilp:L~ e Illlli tas outra~ ordenações ~.l() ig ualmcnte válidas. I,
2,
3,
4.
s.
6. 7.
B.
9.
I
J
°
Ved ticação d e er l'Os d e t ra nsmissão. Se o poeote de entrarln estiver chegando da Ethemct, CRC é recai· Ciliado par.! ser comparado com o que está 1\0 ]>:lente e ler ceneí'a de que não há nenhum crro de tnm s llli ~· ~ií(). Se I) CRC Elhenn:t e~t ivc r correto, ou não e~tiver presente, a ~o rnn de verilicaç:1o Ir é reculcu lmla e Cllm· pal'Ldu com li que L!~ t á no pacote p;U.,l ter certeZ:I dc que o p:lcote IP não foi danilicado por um bit defciHI O~o nu mem6riu do rcmClente após o cálculo ela ~n ma de vctificução lP ali cfe:tllaclo. Se: todas as loonlaS c~ti v..:· rem co n'c t ,L ~, LI pacote é aceito para processamento ulterior: ClISO cClILtr:'irio, é !'Oi lllplc~ lIlent e descartado, E :\ t l'lI~ii u du ClIllIpU, O cal)t!çalho relevante é analisadn e os campos fllnda!1lentai~ são exlraítlo!>. EIlIIIIll cll lllLU utlm Hhcrnet, ~Il u cabcJtlllhu Elhernct é cxamiuado,:m paS~1l quc, em um ro teador IP, o cabeçalho 11> é inspccionadu. Os ca ll1po~ fundulllent;!Í S s1l0 armazenados em registr.ld ore~ (organização em PPEs p'l r:l ld{)~) LlII SRAM (Il/'gllnização em pipcljuc), C1assilicllliiiu d e [lucotes, O pacote é clalhificado conforme um;1 série de regras Ilfllgmll1l1vds. A clas~i· licaçãu IIW1 ~ lo irnp le~ t! distinguir pacotes de dados de pacotes de cOlltrole, mal> cm geral loão feitas di~ l ilL ' çC'Je~ lJIa j~ !I! tinadas. Scl c~~ão d e clIIuinhn, A maioria dos processadores de rede lem 11m caminho rápido e~pecial, otimi1.;Ldo, pal1l tratar m pa cott!~ de dadm CI)IIlILlllo; todos os outros pacotes são Il1Iwdos de modo d ife renle, muitas vezes pelo prOl:es:..ldL 'r de co nlmle. Por conseqíiênci:t, é preciso escolher () carni nho rápido 1111 o caminho lento. I>etennin:Lçã tl da red e d e d cstillO, Pacotes IP contêm um endereço de desti no cle 32 hits, Não é pl)s~í· \d, nem d c~ejá\'d, lcr uum tabela de 232 entradas para consult ar 11 destino de cada pa(;nt e IP, por c() n ~c' ~ u in t c , a pilrlC da extremiLcSCJucrda dL! ellllereço lP é n mímero d1J rede e o resto especificn a máquina naquela rede. N llmcros de rede podem ter qualquer comprimcnto, P0I1.1I1tO, detemlinal' n mlmero da rCLle de cle~ti ll n nãu é uma tarefa trivia l e lica pior devido ao falO dc que várias comhinaçõcs ~ão possÍ\'eis e 11 mais longlL é iL que conta. Nessa fase, mu itas vezes é usado um AS I(' sob encomcnda. Consullll d e rola , UmiL VCl conhecido n mí lllcm da redc de destino, u linhu de saída a IIsur pode ser consul · lada em ullla tahela na SRAM, Mais uma vel., nessa elUpil IXKlc ~er usado um ASIC fahricmln soh demanda. f"rag1l1elllu ção e r econstrução. Prog ra mas gnlolam de ôlpreselllar gntlllles curgas tÍleis à ca mada TC P pafu reduzir () ntímcJ\l de d1illlladulo de sistema necessárias. mas todos, Tc r. Ir e Elhern et , lêm tmn.llll lOlo mhi1ll 0~ pUni O~ piLcoles LILlC podem manu scar, Como co nst!'liiência desses limitcs, cargas IÍtei~ e pacotes lul· \Cí' tenlllll11 de loer fra gmentados 110 lado re metente c seus pcduços reconstrurdos no lado receptor. Ess:L~ loiiu tarc ra ~ (Iue o processudor de rede pode realil.ar. f:1ll11 put:u;ão. Às veles é necessário realizar t!ol11]lutação pesuda sohre a carga litil, por exemplo, compri· mirluesr..:ulnprim ir dadus e criptogra fa r/dec rj pl o~mfu r daulIS, Elosa:. ~ã(J turdas que 11m pmct!ssador de rede pode reali lilr. Gcrc ncialllen to d c cll bc~a lhll , A:. veles é preciso adicionar uu remover cillleçalhos, (JU modificar alguns tle ~elL~ ealLLJ)().\. Por ..:xemplo, li caheçalho lP tem 11111 campo IILlC ctlntu IJ mi mem de saltos que () )lllcote
"o • o.
• "
00
\ 'C7. (IUC é relrans1I1ilitlo. cs"e clI nlpo th!\'c ~e r dccrel1lcnlado. algo que o processador de rede pode fa7.e1', 10. Gercllchullcnto de mil. Pacotes que chegam c saem muitas vezes têm de ser culocmJus em lila~ ClltltUlIIlu eSpel'':. lll1 sua vez úe serem proccssauo!o\. Aplic?\,Ue." de multimrdia podem prcci "lu de um certu csp.. ça-
•• "o
menta de lel11po entre pacotes p'U':l evi tar instabil idade 110 sinal (ji"f'r). Um Iircwallnu rotcatlur pode prceisur distribuir li cargll que chega entre várias linhlls de salda de ilcordo com ccrla~ regras. ToJas I!s"as
M M
~
• "e
~
o
u
• •
~
~
• "
"
•"
w• o
'.• ~
N
d
•m o
ainda pode faz.er antes de ser descartado. Toda
tarefas plH.lctll ser CXcculluJas pelo processadur de rede. 11. Ger:u;"o de SOI1l11 de vt:!rific:u;iio. Pacotes de surda precisam receber uma snll1U (lc vcrific:lçàu. A ~oma de ve dfi ca~~ão Ir' 1}()(le ser ger:lda rIC1u processlIdor de rede. mas o CRC Elhcrncl é gCr:llmenlc cn/cuhldo
pelo hardware. 12. Cu nta bilidade. Em alguns casos é preciso uma contahilidade parn o tní.rego de pacott'~, em e~peci al quando uma retle eslti relmss;mdo tnífcgo parH outras redes corno um ~e rvi ço comerci al. O process:ltlor de rede pode fa7.er a contahilidadc. 13. Coleta de dados estatisticos. Por fim . Illuita... urganizaçõc... gost:U11 de colctar dlld(J~ e~ la t fs ti cos r('ferente.. a ..eu trMego c o processador de rede é um bom local para fazer essa colcta.
Melhorias de desempenho Desempenho é o que import!! em p roce!ls ado re~ de retle. O que pode ser fei to pllra melhorá-lu? Porém. antes tle melhumr o desempen hu. temos de definir o que ele significo. UIIIIlIOOO de medição é o mimem de pac(Jte ~ tlue ~lIfl rt'passado~ IXJr segundo. Um segundo modo é o número de bytcs transmitidos por ~egulll.lu . Essas lHed i ,f>e~ são diferentes e um esquema que funciono bem pmu pacotes pequenos pode não funcion ar tão bcm p'lnl pacotcs !!mndes. Em p;l(licIII:.r. 110 casu de plleoles pequenos. melhomr u mímero de eunsultas de destino !'(lr seguT1tlo pode ajutlal" muito. 111<15. tJuandu se lratu de pacotcs grantlc.~. pode nilu ajudur. O modo mais di reto de melhorar o descmpt!nho é aumentar a velocidade de relógio d11 pmce<:~:ldor (Ic rede. Claro (Iue u Uescmpenho nilu é lilll.'ur em rcJu,ãu à \c\ocidade de relógiu. visto tltle O tempo de cid(1
8.2.2 Processadore s de mídia Uma segunda iÍrea na
o processador de midia Nexperia Estlll.lan'!IIos essn {!rea de eresccnte imporlil.ncia l)(Ir meio dc um exemplu: o Nexpcri:1da I' h ilip~, um:l fmunia tle chips dislK)I1(vcl cm vÓr;as rreqUencias de rel ógio. O Ncxpcria é UI1l multipn>Cl::s..ador de chi p único hetertlgêneu il1depcndcl1Ie, no sentido tia Figura R.IO. Ele contém vários núcleos. incluindu uma (' PU VU W TriM ctlia para eOlltrole. lUas também diversos núcleos para processamcnto de imagem. lIudio, vídeo e retle. Ele pude ~e r u ~:ldo COIIIO um prOCeS511ÚOr princi pcessar essas estrutu ras de dndos e. IXlr fim. pnx!uzir unIU suída cm fonn ,ls :ldcqU:ldas an~ v:'i ri ll~ di spo~ i l i vn!i conectados. Por e:t:emplo, quando um PC é US;ldtl eomo relJnxiultlr de OVO. u Nex l>cria ptx!e ser prngntmado p:lru \cr 11 corrente dc v(tleo crip\tlgm fada e cumprimi(11I do di sco de DVD. decriptá la c de~ comprillli - Ia e cnt;10 produ7ir a saída em UIIl tnm anho adequllIlo fi tela na qual ela estll sentlo upresellll1da. E tudo i ~so ptl{le ~c r fei ttl t'm )!eguntIo plano.."cm envolver de modo algum a CPU principal tlu cumputador. tãulogo o prngramll do repwdUlor tle OVO tenh:I ~ ido carregado no Nex llCria. Tod o~ ()~ dndo~ que chegam são rritnci m anml7.Cl1lldo" nu mem6ri:l para proce~~llmcnt(l: não h~ ncnhuma {·"lIexilo direta entre d i~ IXJsi lh'l!~ de entrada e di sp(Jsi li \,(l~ de sarda . ("apttrnlr t'nll1lún indui den}f.tilicar li pall ir de
umll ampl.1 \arit!lladt! {k I:lm a nhu~ ~ (orrnalOS de vfdeo (clllre ele!> MPI!G-l, MPEG 2 I! MPECi-4), fUrlnalo!> de áudio (i ncluindo AAC. Dnlhy e ;"1P3) e converter par.. Clolmtur.t:. de dadm adequada:. pane aml:.lZenalllel111l e pmc:c!>!>Ull1el1lo: A cnlratla IXKlc vir do harmmenlO PC I, dll Elhemel ou de linhas de elllrada dcdicóldas (por excmplo, um microfone 1111 IUII ~ i l> tCl11a cSléreo ligado diretamente no chi p). O chip Nexpcria lell1 456 pin()~, alguns dlh quais t!l>tiio di1o]l'IJ\ívcil> para clllrmla t! )aída diretas de Iluxo~ de mr,liH (c nUlras). O prllct!l>l>aIllCnlO de d,ldos é conlrolado pelo snJ'tw:m.: nu C I'U 'J'riMellia. quc pode ~er pro~ranmda p,lnl ti 'lU\; fuI' nece:.sário. EUl r"':1!> tardal> típi ca!> estão deselltrelaçar vídeo para melhorar sua niti. ,uunCllIur o lamanho da imagcm, convener de e para diferentes formato!> de videu e redu· !.ir ruido. A n'(J Cu~ lllllm ugir como n empreiteiro principal, subcontnLl,mdn gr.mdc pane do Inlrnllhu cUlIllllícleos ~sl',,!cii\li/ados no chi p. A funcinnalicl:ule de saída inclui codilicar eS l nthml~ de dadol> em lima ronmllldeqUildu 1111 di~JlO!>iti\'o de 5n(,I(I, fumlir nnillipla, fll1ll1':l> de ,lados (vídeo, áudio, imilgem, gráficolo em 21) ) !,: cuntrolar os llil>I)4.)l>ili\·IIS de !>aíctil. ASl>im ctlmCl a elltradá, OI !>,.ida pude ir para o bilrramcnl 0 PC I, para a Ethemel ou para linlml> de sartlu dédicaclas - por . exemplo, um ultn fultmte nu um amplificador. Um diagr:ulla de hh)C()l> di) chip Nl!x l'lI.:ria PNX 1500 é dado na Figura ~.l4. OUtl'ilS vcr)õcs aprel>clllam ligd· nl!> difer..:n~· ul> , pOflalllo. por Illlel>tilu de coerência, quauclo nOl> rderi nnos a 'Nexperiu' n":.,1I1 s\;ção, :.ignHicu li implementação PNX 15110. EII! lem quatro ~c~ões prin\;ipuis: controle. entrada, procc ~~ mne nlO e surda. A CPU I! o prucessauor VLl W rriMl!diu tle 32 bi ts discutido na Seção 8.1.1 que func iona a 3(10 MH.l. Seu progruma, usual · lIlt:llle escrito em C ou C++. dc:termina a fu ncionalidade dtl Ncxpcria. O Ncxl>t:ria contém nenhuma memória no chip, exceto pafll as duas cache~ {Ientro da CPU TriMedia. Em Vr;:L dbSo de tem uma intl!rrllce para a memória eXlcrna que IlCnnite 8-256 MB de DOR SDRAM. o que é balolallle paru :.tplicilçoô típila~ de multimfdia. Com um relógio de 200 Ml-Iz, il largura de banda da mem6ria é 1.6 GB/s. Uma interface I'C'l cllmplcta também está inclufda no chip, cO!lltransferências de R. 16 e 32 bils a 33 MHz. QUlmdo Il!>ada como a CPlJ principal tlentro de um equipmllelllo eletrÔnico de consumo (por exemplo, um reprn· dutor de DVD), 11 IIl lcrfnce P('j tmnbém pode 3gir como árbitro de harramento. Essa interf,u;e pode ser usada. por exemplo, pan. l>e \;omunicilr com um drivc de DVD. A concclividade di reta com Elhemet é proporcionada por um mícleo dedicndn que pode llHlrlipuJar conexões Ethernel de 10 c I(}O Mhps. Por wllscqliência, uma cllIllcordcr equipada com Nexperin pode produzir a saída de um I1l1xo de víd\;o ditlital por uma interface Ethcrnct até um dispositivo remoto de caplura (lU apresentação. O nücleo M!guintc mallipu la inicialização, restauração. re lógios e algumas OIuraS características menos impor· ..mtCl>. Sc um certo pino do Ncxperill ror ativado. é iniciuda uma restallnlção. O mícleo l:un~m pode ser prognunu· di) COl1l0 um interruptor de !>Cgur:mça. Se a CPLJ não enviar nenhum'l mellsagl:lll tlur.1I1IC um ccno per(Oil>tl!llla caiu c Jlllrtc par:t uma reinicinli'l.àção por si !>{,. Em di ~ pos; li vos aUlônomos :I reini· c ialila~:lu pude ~e!' !t!ila pur meio de lima memória nUl>h. () mic1co é cUltlant!;ldu po!' um oscilador ex lerno dc c ri ~taldc 27 MII L, {III\; é llIultiplil,:udo ;ntcntamentc por (~ purõl ive l '1ue OI ('PU reduza a vel()cidnde do relógio p:tra pou· par ellergul ·I';.nll'lélll é fornecido um modu adormecidu paru dt:loligul' OI maioria das fUlIljiks Ijllaudu não hã nenhulH trahalho a rc.lliLllr, " que COIll>er\'a li carga da batél'hl de di~pu~iti\'o:. móveis.
/li'"
Enllada Para SORAM
Parttllauamenl0 PCI Para
figura
.:14
Mulllprocessador heterogêneo NeJ:pt'lria em um chtp.
Elhernel
CliSlilI 27MHl
"
m M M
•o
• •" • ••"o
~
~
,• 0-
S o u
•
~
•
,"• •
~
o
..••
u
o
M
•
•o ",• ~
e
o
u
• "• "• , , "
•
~
o
••
~
• N
C
•
~
o"
Elisa unidade tamhém contém 16 'scmáf\lros' que podem ser
IIsado~
ram sincnmi7:1çà" entl'e
tli~ptl~ilivn" .
Quandu UI1I núcleo escreve um valor nãu-zero para UIII semáforo que está elll zero nu 1I1t)l1lcnln em questão. a cscri· tu é bem-sucedida: caso contrário ela r.. lha e o IInllgo valor pcnnallccc in\;\clo. A e...crilll de um 7.ero é ~crnpl'c hem.~ lIceditla. Uma \lC7. que s6 um mícleo pode ad1luirir o barramentn de ~istclll:t por vez. C,,""" upcraçtK''' são atl\lIIic
Silrnis de televisão bmadcast são enlrclnçlldlls. ti lJue signirica que, para cnda quadro. que con~i~lc em 525 linhas de ~c:t11 (625 pam PAL e SECA M), primeiro siill trnllsm itidas todas a~ linhns pares e. em seguidn , Illdtl~ a~ linhas (mpafCs. O dcsentrelaçllmentu produz um sellll progressivo de llIelhtlr qllulidade. no 4u a ltuda~ as [jnllll ~ Ik ~ClllI ~ão proce!õsadas \lU trnllsmilirJas em ~ u:t ordelll vcrd:tdcim c rcnl)vad:l~ a rJllas velcs ti 1:1;'(:1 de quadm~ elll re1a~·m.lus (29.97 fps pllm NTSC c 25 fps parI! l'AL c SECAM ). O controlador de t:tmanho huriwntal c ve rtical pCrlnite que o Irllllllllhl) da~ inmgens seja red1l7.ido ou aumcntado. possivelmente depois dI,} nx:orte. A televisão padrãu tem uma r
de tilllle ~ de 3~ 111m. () conlrnl .. dm de tamanho IKlde conVC11er entre es~as raLÍ'lcs de aspeclO, scjll linearmente, ~ej(t usando um ulgoflllllll não linear. Ele lambém pode converter entre os formatos indexado, RGIl c YUV, e 1ll0rllar um hi!'> lognuna do valor de IUlllinfind~l, n que é úlil para melhorar a qlwlidmle ele imagem na s:lída. I'or fim , poc.ICIlH.C
n!aliLUr ccn:l~
Ira n ~lorlllaçi)c!>
para rcdul.ir as
Y ariô.l ~:tlcS
de brilho lia illlagem.
O procchadof grálictl (,1"- apre"enlações em duas dimensões de dCl>criçiin de objetos. Tamhém ,>Ode preencher área:. cercudll' e I'Calilür o l>eraçi\es !lráficas bil hlt , o que equiva le li pegar dniio mapas ele pixels retangulares e com-
hiná-Inlo usando uma tunção ANO. OR , XOR, IIlI 1I1gUIllU \lulr.l função hooleana. Nãu h,; m:nhurn Illícleo para f'lI.Cf procCSSiUlIenlO de áudio. Tod o proccsslullen!O dI! áudio que não é fl!il o Ili! cnlmda é rci!o peJa (,PU TriMcdiu em softwnrc . O iludio req uer um m1mcro tfio p":(jueno d c LIndos que processá-lo em sMtwarc uiio é probl..:mu algum. Além dis~o, muitas jrplicaçàes não rccJucrclll absolutumentc ne nhum proceslIuinCuto de áudio, e.u ;ew lah'cl. con\'cr~ã{) de fon Huto:.. O ntícl":ll de lkpuraçüo ujuda p rojet h ta~ c prngramadures a depurar hardIVarc c software. I'om ece um3 interfa ce parol irhlrumenrllçàu c f..:rr.rmentaio tonrp1 Acti oll Group - gru l)tJ de ução de ti!iJte!o conjuntos), como dclinido nn padrão IEEE 11~9.1 . A loc~ão de ~uíJ a pega o~ duelo ... Jl roce~ ... adolo n:J memória e o ... envia para li saída. () lIlícJeo de vfdeo COml)l.lSlu pega urrlU ou JlIa i~ C... TnLlllnllo dc dados que rcpreseutulII pix.cJ s, as rlorm:lli7.a de ~crlOS m()do~ e enlão :1'; ll1istura de maneira ... e~pedllcad:l ... para ... aíJa. D ~\{los em formuto indexado são Ite ... index udos durante o processo para obter o~ pi xe l ~ pruprimllclIle ditos, I! fonn:llos incomp.ulvci... ~ão convertidos conforme a neceios idade. Esse mícleo tam· bém P(}(h: fa/cr curr..:ção de contraste, hri]ho e cor. l>C requerido. Também pode fazcr ·cromukcy·. na qual um ator que e ... rá IHI frente de umu teln de rum azul é recortado da tela e colocado visualmentc na frl!lIle dI! um cenário tira· do dc IJIIlU jOllte dil..:rl!llte. Ire modu ~cm c lhant e. de ...enhos animados nos (Iuab os per...on:rgem de primeiro plano lo": lIlovi nlCr!1am Wlllra um pano de fundo (cenário) c<;láti(;O ou em movi mcnto, IlOdem ser produ lidos aq ui. E. é claro. Cl rl!sultado filiai é cOllwnido para os formntos Ilc vílh:o ou te levisão requeridus (por excmplo, NTSC, PA L ou SECAM ). incl uindo a geração de pul sos de: sir}(;mrri ... a~â,) horizontai s e verticais. Vi ~[(I que nãu há nenhum cu... h) exlra, espera-se (jllC a maioria dos sistemas haseado~ no Ncxperia !ocja cap;17 de: manipular :ullorn .. ticumellll! t ndo~ os três fommtos de lelevbão, de modo que poderão !ocr vendidos M!rn rno fontc s de ~alda e 1l1/U1~ !Il acrescenta alguma flUl clluralidildc. incl uin· do reulIvllçãll de eXlhi~õc~ em painéi... plunos (TFT) cle tamunho ... até 1280 X 768 pixel... a fiO 11... \lU reno\'a~:i\o ele uparcl hol> de t cJevi~ ,lu clllrd,r~:adlh ou prog re:. ~i vuio . A I\1l1ltiplcxa~ão é necc ~~á ria po rque m ~lIfdll ~ de vídeo com· po~ t t) e gcnérica (:lllllpanilltam os mC ~ lII o~ pinos. O n úc lc~) de ~aicla de áudio Pllt.le produúr até 8 canais c~téreo ... Clllll prcci~,1O de 32 bib na~ lax:ls cle amn ... lm· gcrrl até ~6 I,.H I.. E~!>a ~aídll COm umente comanda um cOll\ ersor extemo digital-para-analóglcu. A !tarda SI' digital pode ~er cOl1el..lada a clUrada Si> digital de dispositivus que usam o padrão de áudio digilal Sony· Philip.... O núcleo linal manipula EIS de uso geral. Há 16 pino~ dispon(veis para qualquer utilização requerida, '11Ie podem ~er eHllce1:ld,IS a t.xl;I!> nu hutOcs, comutadores ou LEOs IliIr:r que ~cjlUll v i s to~ ou 'lIi \' ado~ em software . Os JlIllO~ podcm ser u... ado~ mé Ill c~mo para protocolos de rede de média velocid,l(le (20 Mbps) cnntrnhlclns pm ... oftwarc. T,lIl1 hé rn há v(irills teml>nriladMes. con tadorcs e tral,ldores dc cventos prcSenh!S n es~e rníclell. No total, () Ne" peria tcm unta enonne capacidade de computação paro aplica~õcs .lUdiovi ~ uai s e. comu O~ pm c ess ad()rc~ de I"..:de. permitl!m que ,I CPU se livre de uma ' Iuantidadc maciça de trabalho. A capacidade de eompu· tação é ainda maior dn que pnderia parecer à primeira visla. uma ve7. que IOdos os núcleos pode m eJlCCular em paralelo uos com o.\. outro... e com a C PU . E. o (Iue lalve7 íocja surprcendcmc, ele Clil>ta menos ccial os bascudos em chips mui· tiprocessudorc~ h c t t!rngênen~ jfi deve estar fi cando ll1ai ~ claro. SI! o leilOr lj\li ~e r conhecer um chi p análogo dirigido ma is à lclcfonia Ito quc à multimfdia. consu lh: Nickolls et aI.. 20tH.
a
8.2.3 Criptoprocessadores Uma tercdm ;irea na qual os co-processadores s50 populares é segurança. em eSI>ccial segurança em rede:.. Quando ullla CllrlCXflO é e~t ahc t cci t.la cntre um clkme e um scrvidor. em muitos casns ele~ dc vcm primeiro se autenticar mutullmenl c. b lt ãll, é pr!!ci ...o el>lahelecer uJlla concx.ão segunI e criplografada entre eles, de mod u que os dados pns~alll ... cr t(ansfcr1 ,ICl'" C0111 ... cgurança p
j
•o
• •
• •"o ,•
~
·
~
~
8 o u
• •• = •
~
m o o ~
•
u
11
,I'
N
I
M
...
Pnrn l1lul1ipulur .1 cOlllplltuçiio necessária pam criptografar os dndos com segumnçl pam 'ran~TIIi s~iio ou anTl"1cntl1l1eulu, vári as cmprc~a~ produziram co- proces~ad lJrcs criptográficos. às vez.es suh li 101'111[1 de placas de expansilo para burrumcnlo PCI. Esses co-processadures têm Uni hardware cSI:tecial que os habilita ri c:o;ccular a criptugra-
•
111000 de funcionalll ento tios criploproccsslIuorcs ex igi ria. em primeiro lugar. explicar muita co;~n sohre 11 criplvgrnfiu em si. \I que está fura du escopo desse livro. Se \I leitor desejar l1Iai~ infonnaçi)Cs sohre cu-proccs~lIdnre~ cri ptogr:Hicos. jxxle consult:lr Dancshbch e H:lsan. 2004; c Lutz e Il asan. 2004 .
riu nccessliriu ll1uito mais rapidamente cio que
•
"o
~
•
•
~
•
o u
8.3
poderia ulIla CPU comum. Infe1i7.l1lcn tc. UIllIl di ~cus~ão dctalhmla do
Multiprocessadores de memória compartilhada
• •
Agora já vi mos COl1l0 se pode acrescentar paralelismo li c hipll únicos e a sistemas indh iduais "didol1lHulo 11m co-processador. A próx illm et:Lpa é ver como mú lt iplas C-PUs totalmente dellenvoh' jd;ls podem ser cl)lJlh in ad u~ para furmar sistemas maiores. Sistemas com vári:ls CPU.. podem ser divididos em mul tilJl'occs"lIdore.. c I1mllicornpu tadores. A!>l~s "ennos com atenção o que esses tenHOS realmente significam, est udaremus primeiro lIlultiproce""adnres e, em seguida. Illulticomputadores.
"
8.3.1 Multiprocessadores versus Multicomputadores
~ ~
•" • •"
~
o
••
~
• c" •
'"
o"
Em qualquer sistemll de computaçilo paralelo, c r us que 1mbalhlllll em pílltCS lJircrCllte'i du Il1C~1I10 scrvi\o dcvem se comun icar umB." com ali outras para trocar infurllla~·fies . EXlltamente como c l:ls de\'cm fazer isso é aI1;SUIIto de muito debate na comunidade da anluitetura de cumputadorcs. Dois projetos distintns foram pmpmilos e imple· mentados: multiprocesslldores e rnulticomputadores. A diferença fund ul1lelltal entre m doi " é a presen~·:t 0\1 uu~ên · cia de rnemúri;\ compurt ilhuda. Essa difcrençll interfere no modo como são p rojel ad o~, cOlIslrufd us c prognuuudus. Ucm CO lHO em sun escnl ll e preço.
Mulliprocessadores Um computador pllralelo TIO qual tod:\s a.. C PU~ compi\rti lham uma mem6ria cO!llum é dCllominado um multip rflcessador, comu indicado ~i mboli eamcnte na Figura R. 15 . T()do~ o .. proces'iO< que funcitllllllll j\lrlt(l~ em \1111 multiproeessador podem compartilhar um linico c~pa\o de e lldrre\o virtual nmpeudo pllra a mC1I16riu cOll1um. Qunlquer IJroceSS(l IXlde ler nu escrever ullIa puluvra de I1Icm6rill a]>ellas exccutfmc:lo uma in~truç1l() lOAD ou STORE . Nuda lI1;\i ~ é preciso. O hardware rllz o rc~lu . Doi~ proce~sos podem ~e (·OIl1l!nkl1r pelo ~i 1l1plc" 1110 de 11111 dcle~ csnever dudos pnm li memória e o oulro os ler de volla. A capacidade rJe dnis (ou mais) pnx:esSO!l se (."{lI1lUUicarclll apenas lendo e escrevcm.!" ml memória é n ru7i11) !'IOr que os llIultiprocessllclme.. siln IK.lpulare ... (~ um modelo fácil de elltender pelu.~ I)mj!ramm ll)~~ e é aplicável a ullla 31l1pl:t fa ixa de problcmas. Cunsidere. por exemplo. um pmgmnHI que in~ pecio"a ullm imagcm de mapndem ocupar \'á ria ~ ~c~·õcs. Se um processo descubrir que UIll de seus objetos se cstende pam além da rrontcira de umll seção. ~' Ie apcna~ "egue () objeto nu próxi ma SC1iàO lendo as palavl1ls dess.1 s('·1;ão. Nesse exemplo. nlguns objetus ~cr.ll) dC~"(lhcrtn" por \"áriol1; ]lnx:essos. portanto é preciso uma cena cuordellal(ào nu fina l "am detenninar 'Iuamas ("a"us. ár\"on.." c a\'irlC~ h:\. Como todas as CJl Us e m um multiprocessador vêem a mesma imagem de memórill, há ~Il mente uma cópia óo sislema operacional. Pur COnSe(lilênci a. há sOllle nte um mapa de pági lln ~ e uma tahcl:t tlc pn.l(.·e"'ills. Quantl\l \\111 processo blo
Mullicomputadores
o segundo pmjcw pOl>sívd pal1l uma anluitclufa paralela é um projeto no qual cada CPU tem sua própria mcrm')· ria priV,ldor que alguém r.:ol1~truiria llIulticom[lutildores, quando Illultiprocessadores são mais fácd s de prognun;ir'! A re ' llll~ ta é simples: ê muito mais simples e mais harato conslnlÍr grandes multicompuwdort!s do que llIulti]lrnce~s;lClme~ com o mesmo lIlilllt!ro de CPUs. Implementar uma memória companilllilda, aindu 11\1e seja para a1gullla~ cenh,::na~ de C PU ~, é lima empreitada substaneiul. ao passo que construir um muI! icomputador com 10 mi I C'PU: adiante Ill.::~le capítulo e~tlldilrel11()S ul11lllulticol11pUlador com mai s de 50 mil CPUs. I'ortallto, tenll l~ UlII dilema: lIlultiprocessadorcs ~:\o difíccil> dc (:ollstruir, mas fáceis de prugfllIl1ar, cnquiulltl mu lticomputauorcl> ~ão fáce i ~ de cOIIl>tl1lir, Illas difícei s de pro~rall1a r. Essa observação gerou muito e~for~o pllra clIll~lrll i r .l i ~ temas híbriJo~ que ~ão rehuiviltnell!e fá ceh de construi r e rdmivamente fáccis de programar. Esse 11""ha lho levou 11 pereep..:ao de que mcmória compallilllada pode ser implcmemllda de vários modos, cada qual com ~cu próprio COJljuIIlu de vantagens e desvantagens. Na venlmle, grande parte da pesquisa allml na área de arquÍlclura~ paralda~ e: i ~tellla npcrl.ll:i(}nal lllcaliw a página e solicita 11 CPU 411C a contém no momento em questão que desmapeie 11 página e a envie pclH interconexão dI! rede. Quando chega, a pági na é mapead:! ]Jara dentro e a instnJçau que falhou é reinidattu. Nu verdade, () ~istcma operaeional está ape nas atendendo faltas de páginas a panir de mcmória~ remotas em veL dI! a pmli r de di sco. )Iam o usuário, parece que ;\ máquina tem memória compartilhada. Ex.aminaremos a DSM m ai~ adiante nc~te capítulo.
... M M
"o
• •" • ••"o
~
~
,• ~
ao
"• ~
=o
..••
u
MemórIA privada
CPU
•"o
flull'. 8.16
M
P
la) Mu\ticomputador com 16
M
P
M
P
M
p
·•
CPUs, cada uma com sua própria memória privada.
~
(b)lmagem de mapa de bits
~
,
so
da Figura 8.IS subdividida
-
P
M
de lnte,conedo PI'!!! Iroca de mBlllllgens
P P
M
P
M
R~de
de interçooedo IH". troca
B!il P
ele monlSgens
P
entre as 16 memÓria!.
U
•
~
,• ,
· ·"
(.)
w o
-,
Méqvlllll 1
~ ~
• " "•
ApI!caçAo
·'"
(b)
MáQlJlna 2
Méqulnll 1
Aplicllçao
""..çAo
Méqulml 2
o
flgur.8.11
VAriAS camadas ande a
Sistema de l'JIecuçAoda IInguagom
Sistema de eJeCuçAo da IInguogem
Slslemll de elCecuçAO da
Sistema de eXllCUÇlo da
Sislemll de !!xecuç&o da
IIrlQU&Qem
linguagem
llngulIgem
memória oomparUlhada pode ser implementada. (all1ardw8r8.
Ih) Sistema opel1l.clonol. (c) Sistema de elecução da linguagem.
ApllcaçAo
ApI!cIlÇ ~O
i
Sistema de
oxeeuçllo da • linguagem
I SislelTl8 op6ulciooal
Sistema OPeracional
Slslema operRclonal
SIIIO/l'~
operacional
SISleme
opel1tCl()",11
OPeracional
HarOw8!8
HardwRre
HIl!clware
Hardwllre
HfI!dwll !e
H IUdwll!1I
SI!Ilemll
M&mórIR compartllMda
MomÓfill compilo! IlthauR
'"~
(,)
(.)
Uma terceira possibilidade é fazer com que um si~te nUl de execução de nfvel usuário. pt''lsivt'lmcntc e"pedfico pam unia linguagem. implemente uma formll de memória cUlllpartilhada. Nessa abnnlagclIl . IllingungclI1 de prognUllm;ào provê algum tipo de abstração de memória cOll1partilhada. que entilo é implementada pelo C0l1lpilador e pelo siSle m
°
Taxonomia de computadores paralelos Agora vamos voltar a nosso tópico principal. n arquilelUru de computadores paralelos. Muitos tipos de compu tadures paralelos já foram propostus C construfdos :10 longo dos .mos. 1'01'1antl). é natural perguntar se há ulguma umncira de cutegorizl\-Ios em uma la.,01l011l13. Muitos pesquisadores tentaram. Cl1m resullndn!' misloll (Hynn. 1972: e Treleavcn . 1985). InfeliZlUente. u C"rolus Lin tl:tt!us ' du com jlutação pamlcla nindu está para 1.
C~f(llu~ Lirlllnell~ (11U7-11111) (/li \I hiólogu 5l1i.'Cn (tur. in\'cnhl(t tI si.~lemn rei tio. mu. ctasst'. urúem. rllmOia. gêtlr'rIl e e~IJoéci<· .
U~hÚ\l
agllnl p:lm
dil~~ificar 11 1(1 n~ ir~ plaJ1t8~
e nnimlli~ e11l
Tallela
8.3
'I'axonomla de Plynn para complltadores paralelos.
fluxos de instruções flux(ls de dados
Mó:luplas Múltiplas Múltiplas !>ur~ir.
MuJliplns
Exemplos
SISO
Maquina classlca de Von Neumann
SIM O
Supercomputador vetorial. processador vetorial
MISD
Nenh'tm. possivelmente nenhum
MIMO
Mulliprocessador, mulUcompulador
O C::Mtuelll:1 de Hynn. 11 L\nico qUe é muito LL~ildu. é d:uln ml Tabela 8.3, e ILlc~m(l e~IC é, nu melhor das hipóIc~C~, uma llproximôlVã,) muitu gros~ci ra . A clil~~ifit:açã" de Flynn é b.l~eadll elll doi~ CUlICellLlS t1uxo~ de iH~lmçOcs e nUXll:. de dmlos. Um !luxo de in ~ l ruçõc~ cllrrc:'lxulde lt um cuntador de prngnllllll . Um l>i:.lellltl com 11 ('PUs tem 1/ cOlllllllol'es de programa, por cunscgui me, /I flux !!lI dc in:.:truçõcs. O nuxu de dados c/)nsi~te em um conju llttl de opcral1lltls. O excmp lo do d lcul\l dc lcmpc:raturu que dcmus LU\tC!> tem váriÍl~ nu .\n:. de dados, um para cadu sensor. O) nuxo~ de ill:'lnu;õc!> e de dndus são, até cen o punto, illdcpendentcs. pot1aulLl ex i!>tl.:l\l lIuatro comhinaçÕt.:s, COIllO rcl:lcionudas IIU 'labela M .3. SISD é apenaS II clá:.sico computador !>cqUcncial de VOlt Nculllunn. Ele. tem um nuxu de in~lnl~õe, um Iluxulk dadu:. e ral uma cois:t por 'cz. Máquinas SIMD tê m um.1 uniC:1 unid:ttlt: dc I;Lmtmlc quc cmitc Ulll:! imtruvãu Jltlr vez, mas elas tem tm1ltiplas ALUs para executa-IaS em v:iriu~ conjun lo~ de dados :'UlIUltullc.lIllclItC. () ILLlAC IV (Figura 2.7) é o prol61 lpi' da:. máqui nas SIMD. A~ m áquiml.~ :"1 1M!) CMão ficando cada \'Ci'. mais raras. llIa~ computadures convcncionai s lI) vczes têm algumal> iLl~lru'iÕt.:~ SIMD para proccsl>õlmcnlo de material alldio"i~llal. A~ in~tmções 5SE tio PentiUlII são SIMD. Nãn Oh~ t :!lIIe, há uma lima árc;i na ttIlUlulgulllôls das idéias do rlllmdo SIM D cstão dc~el11pc n hand o um palX!l: processadores de Ilu,\u. b~J~ má!lllillil:' ~íiu prnjelad, lllle são apena:. IIll\ltipJas CPUs imlcpcndtntcs openlrl{lf) t.:omo parte: d~ um si~lcltla maior. A m:liuria di " prtlCc~!>lIdores par;llclos cai Il C~S:1 catcgoria. Amoos, rnllhiprOC~badtlrc:. I:! IlllthicllmpUladorcs :.511 máquina:. MIMI>. A tallunornia Ik Flynn pána aqui, Illa~ nós i/ a1l1pliamos Ilil l'igunl 8. 18. A SIMD foi subdividid:l em doi:. ~uh gnIJlll:.. O pnmeiro I! IMnI ~llpcn:()llIrutad ore) numéril,.lI:. e olltru~ máquinas {IUC uper;un :'Clhn: 'dures, cfdLlallllo ti IIlc~m .. npl!r.lção em cad" e1t:l1lenlu du velor. O ~egllndll t! para m:hlu in:l!. do tipo puralclu como ILLlAC IV, na IllIal uma unidadc lll e~ \r.1 de clllll rulc tnllll>t11ite in ~lnlções para llluil:lS ALU~ illdcpcndc n tc~. 1~1ll n n~:.a tlLlIollOlllia. a catcgoriu MIMO foi sllh,lividida em multiproccssadol'cs ( t1l ~qtl i na~ de mcmória COIllpun ilhflJa) c muhicomputudnres (JIIárluinas de troca dt! llIel1s:lgcns). Existem três lil)lI:' dc mult ipnlCt:s!>adm·t:s, dl ~ ti n g ui do~ pclo tUlKll1 COlIIO a Illcmória companilhadll c nele:. in lph::meLlfllda. Eles são d~ lIomi l1 ados Ul\'IA (Uuifon n l\'lelllory Acccss - uce:.so ulliforme b me/llórilt ). NUMA (NonUniform ~'l eI1lUl'Y Access - acessu não unirorme à memória) e (. Ol\'lA (Cltche Ollly Memory Access - acesso :.omente à lIIelllórhl enche). Essas categorias ex islem l>Ofiluc, ~m grande:. lUulliproces."adOl'es, a memória cO:.tuma ser subdividida em vários módulos. A prnpricdudc dlstll\1Jva das máquiml:> UMA é 'llle cada cru tcm o mesmo tempo dc accsso a hxJoS os módlllos de memória. Em outra:. pulavras. CUl!;, p. davm de memóri a pode ser lida Ido nlpidamcllte quanto (jtlalqller mura palavra de memória. Se i:.!>u for tecmcamClITe illlpossfvcl, a velocidade das rcferências mais mpidas é reduzida para (lue se compôltihilií'cm com a!> rllab lenta:., pon ôllllo os pmgrllllladorcs ni'io vêcm a diferença. É isso 'lue 'uniforme' significa ne:.tc casu. E:.."a uniii lnnidade torna o desempenho previ~f\'el, um fmor imponantc para escrever código clicicntc. Por companu,:fio. Cl»U propriedade ndo é viilid:t cm Ulll multiprocessador NUMA. Muitn, vei'es há um módulo de memória próxlIlIll a cada CPU e aceSS:lr aquele módultl de memória é mais rnpidu do que acessar os distante:.. O re~u lt ado é quc, por quc~ t ões de desempenho, u local onde () código e os dados :.ão 1}(J:.icionadns é importanle. Máquinas COMA lamhém ~ão não-unifonnes, mas de um modo difcrcme. Estudaremos detalhadamcnle cada um desscs tipn~ c MILIS \uOcmcgorias Illais adiellll..:. A Oulrã categoria prindpul dc llIíÍquinas MIMO cn n ~ i sle nos l1lulticomputadon:s, que, diferentemcnte dos nlllltipmce:':'ildorc~ , níio tê/lllllcmória primário! cornpart il h:u.JlIIIO lIível da arCluilCltlra. Em OlllntS palavr'ds, o :.istema operacional em L1mu [,PU de lllultir.:ull1pUl ador nilo pode aCeSsar mcmória ligada a uma ['PU difercnle apenas excculil ndn lima IIblruçãll LOAD. Ela tcm de enviur 1111111 mensagem explfcitu c esperar IIl1la rC~pClsl:l . A capaddhdc do :.htc:ma opcruciollul de ler lima paluvnl diSlUn te upe nas eXCCllumdo uma LOAD é o que di stingue llul lli processadO/'c!> dc mullicompulfldores. Corno mencionamos anles, mesmo em 11m mlllticollllHl tudor progrumas usuários podem Icr a I;al)aciduue de acessar memória rernllla uSôlndo instruções LOAD e STORE, mas essa ilu."rlo é ~llp(Jrtu d u pdo :.i:.telllll oJX!racionaJ, /.: não pelo hUl'dware. Essa diferença é sutil . mas muito imponante. Como Illulti computadllrc:> não têm aCCl>SO direto à memória remuta. às vezc:. eles :.ão c1 cnominado~ má(IUinas NO RM A (N O l{emolc M enwry Acccss - sem acesso à Jl1cmó riu remoia ).
•o
• • •
~
•• "o
n
• "eoo
"n• ••" •" "a"
<
'"o o
o-
•
"
... U)
I'Irqultolllll!.5 de computeoores parflle!os
M
·•o
(VOII NeumMn)
~
,•
,
flgur.8.18
~
8
Taxonomia de computadores paralelos.
o u
•
~
• ,•
-
~
, •
w o
~
~
• N
o
•
~
o
O!ô rnull ko rnputad ures 1}O(!cm ser di vididos em duas Cillcgorias. A prillleil1l catcgl1ri:l contém os MI'I'5 (Massh'cl)' l'urnllcl Processnrs - prot'csslIdnrc.'i de pal'lIlclls mu 11111ch;o) (llle sfin ~ lIpcrt:tJlI1 putadorc~ CUI"Il!; que cO!1l'isrcm em lIluitas cr u!> fort emente Ileopladas por utm. rede de intercQrl t'lIiío pro prietári n ,[e 31!1] vc!lIc iúmlc. O IBM SP/3 é um exemplo tJcm conhecido no mercado.
A outra categoria consiste em PCs ou
e~tações
de trabalho
COIllUIl'\.
possi\'t'lmcnte mnnlado'l e m
c~tmuc~
c
c(l1Icclados po r tecnologia de il1\crconc:c.i'\o comercial. de prateleira. Em termos de Ilígica não hll lIluita diferença. mas surlercompllradorcs cllonncs (IUC custam TI1uitos mi l hõc~ de dól3re~ ~:lo u"a(l (l~ d" modo dil~renle de rell e~ de PCs rnolllad"" pe los II s u:lri n.~ po r urna fra ção do preço de 11111 MPP. F. ~~ iI !I máquinus l· u ~eir;.l~ ~:ll l cnr,hccidas l>ur ... ~ rios nomc.~. ent re elci'i NOW (Network of Wurkslnliollll- rede de C!itllÇÔt'S de Ir/rl mlho ), CO'" ( ('III~ter or Work.... tatiolls - gru po d e cstn çiK's de trnlmllro), ou. iI~ \>Cl-es, ape na" dustt'r (I!ru(lo).
8.3.2 Semântica da memória Aiuda que todos os l1lulti prncessmlllres npreseutc l1l às ('PUs 11 imagem de um únil:t) e~ p1L\;o rJ" emlc"cço ClIrll pm1ilhado. Illuitas ve1CS esta\) presentes muitos 1111,,-lul u" de rllcmória. cada um CIII1tc rroo alguma pon.;ão 11:1 memória rr.. ka. A~ CPU" c mcmórias muitas \'C1t!'S silo concctaoa" por ul11a CllIllplcXlI redc de intercHlIt!'xi'in. Cll1l10 discutimos na SC~'ãu R.I.2. Divcrsas pudem e~ tllr tClltllndo ler uma palavra tle memória ao mesmo lCIIlIKl em que várias uutras CPUs cstãn telllalldo escrever :1 mesma p;tlavru , e :llgUlIt:t ~ das mensagens de rC(luisiç1\o pode m scr ultrapassndus por outras em trânsito c ser e nlregUc.~ em urna ordem direrente du l l\le furam t· rnitida ~. Além desse jlwblcma há li ex istência de nuílliplas cópius de ;rlgun ~ blocos de mem6ria (po r exemplo. em c:I(:I1('''I. li que pode resultar ell1 cans com muit:1 facilidade. a Illenos que sejam to madas medidas rigomsa~ pUni ('vitá-Io. Ne~ta St:ção veremos u que real mente significa memória comparti lhada c veremos como nle mlll'ia ~ IKK1elll reagir ra1.On\'elmen te ~ob essa" circllnstânl:ias. Um "lOdo de ver a se mânti ca de \tle nH~ ria é C0l110 um conlmtn entre ti S\ lftW!HC c n Illl rdware de me mória (Adve e Hill . 1990). Se o software eonconlar cm ohcúecer a certas regras. :t mcm6ria cnllclJrlla eln enlrcg.ltr ('tol II ls rcsultados e. ent:lo, ;r discussão rica centrada e m qu;r; s siio eSlias regra". Elas sUo denOIll;nada ~ 11I001('los de cnnsislência e mu itos modelo~ direrentes j~ ror.un Prol>ostos e implementados. Para cJ:tr uma idéia do problcll1:1. sUI,onha (Iue a cr u oescreve o valor I e m algulIlil l':l la\' nl de I1\c mórin c. um pOUCI) mais lurdc, n CPU I escreve o val or 2 pura a 1l1esnm palavra. Agora iI CPU I lê a pulav nt e \'\hlé 111 (J v"lm 2. O proprietário do computador deve levllr sua mCltlu;na pam cunsertar? I ~~o depenrJe do IIIIC :1 mem6ria prometeu (seu contrato).
crus
Consistência estrita O modelo mais si mples é u da cOIIsistê l1cin es trita. Com esse modelo. qualquer Ic iwflL pam unta locali/.ação retoma u valor tlu escrita mais recent e para x. Prt),;ramadores adora m esse mudelo, mas. 11:1 verdade, ele é eretiVtllllCntc itlll>llssfve l de implementar dc qualquer uutro modu quc não scju ter um único módulo dc memúria q ue simplesmente atende a todas as requi siçi'lC" segundo a potftit.:a primeiro a chegar. prime;m a ser atendidll. ~em cache nem duplicação de dados. E"sa implemcntação InlJt ~fon n arhl :1 lTlem6ria em um ilHen ~o g:lr8alo c, purlalllu, não é 1I111a eumlidata séria . infelizmente.
x
~e ll1pre
Consistência seqüencial
o segundu melhor é um modelu dcnonlinudo consis tência SCtfÜCllcill1 (L:unporl. 197Y). ~esse casu. a idéia é que, na presença de Iluílliplas rcquisi\~ões tle leit llrlt c escrita. o hardware escolhe (sem de t cnnini~ mn ) Illgurn u inter r.; alll~·ão de tudas ns rcquisiçtics. mas tudas as C PUs vêem a Itlcsmtl ontem .
fluura 8.19 [aI DUdS C)llls escr.:vendo e duas CPUs lendo uma palavra ele memória em
l.ê 2.
comum. lbl- ld) Três modos pos~ i veis
0
de intercalaI as
W",
W'OO
W200
W200
R3" 100
R4" 200
H3 .. 200
W200
WHI'
H3 .. 200
R4 .. 200
R3 .. 100
R4 ., 200
R3 .. 200
R4 .. 100
A4 ., 200
R4" 200
A3 . 100
.... ... M
•o
•
• •"
duas escritas o IIS qUiltro
leituras em felação ao rampo.
liam .;ntcll(h.!r p;davra .1", c I e~crita
(l
~
lO'
lO'
lO'
••"o
ldl
u
que bso significa, considere um CXeml)!o, Suponha que a C PU I escreve o vôl lnr 100 para a
palav ra .r. AgorJ., suponha que I ns ,IPÓS a segunda ler I>ido emi tidol (mas não neceS:.arj,uncme ainda conclufda) duas OUlras CPUs, 3 c 4. lêem a pal avru x ll uas li::'
mah lanh.: a CPU 2 escreve o valor 2()O para
li
veles cada lima em rá pida sLlccssiio, como mostra a Fi gunl 8. J 9{a). Três pnssive i .~ ordenações Ilos seis evento:. (dUlLS c qWll l'!1 Il!ilu ra s :.ã~ ) mostradas na Figur.l 8. 11) (h)-{d ), respcctiv,tnleI11c. Na Figura K. Jl){h), a CPU 3 I)htém (200 ,200) c C' PIJ 4 nht ém (200, 2(0). Na Figura 8.19{c), das ohtêm ( 100, 2(0) e (200, 2(0), respectivHmcllle. Na Figura iUlJ(d) , ela:. Obl êlll (100, JOO) e (200, 100), res ~c ti vam c nt c. Toda ~ es~as sãu Icgilis, hem C01l10 lllgumas olltra~ pO!.Mhilid,ldes que niio são mostradas. Contuún - c e ~~ a é a e),~ê ll c i a (\3 co n S i ~têlld a seqiltncial - , não imporia ti llll l! ilcon teça, uma memóri a :.eqiielldulll1en tc cll n ~ i :. t ente nunca permitirá que li CPU ] obte nlm ( 100, 200) cnqua nt o u CPU -I obtém (200, 1(0). Se il>~l! vic~3c a lH.:urrcr, ~ig n ifi e aria quc, de acordo com a C PU 3, a tlll.: rilil de 100 pela CPU I concluiu :lpc'lS u c:..:rita lI.! 200 pclu (, PU 2. Tudo hem! M,tS t,llllhém significuria 4uc, lll! acmdo cl1m u CPU 4, li. c~cri t a ele :l/H) pclu ('I ' U 1 conclu iu antes da cíocrita de 100 pela CPU I. Em si, cssc rCl>ultado tumhél1l é po!>!>ívd. O problema é qlh! a Cll113 1íotcIlcia ~cllti cJ\ciu l garante (jl U! há uma única ordenação g[ohal dI! tuda:. a~ esc ritas quc é ... i1<>f"eI para tuda!>..L1> C' Plh . Se a CPlJ 3 llb:.ervar llllll 100 foi escrito CU I primeiro lugar, cmilo a CPU -I tambêll1 lJc ...c I er c~~a ordclIl. Emhora a ~"II~i~t2 Il ci:t ~eq Uelleial não seja uma regra tão rnd eJ"()~:1 qoanto a c(Hl s i ~ t êllc ill cs.trita, ainda é muito lílil. NlI Icnlade di! di, que, Iluando l1lúlti]lI{)~ el'en!(l~ c!>ülo lIcolllecendo COll('orrCllIenll;:lllc. há alguma ordem vcr· d.ldcirn na qual ele!> OCt~rre lll , pos:.ildmentc ltetenninada pela tCIIl]lorizuçiin lo! peJo ,lcaSlJ, mas existe uma ordeJ\a~ii\ll'erdadcira c todol> n~ prol:csslIdorcs ohserv;"\1I1 eSSit mesmil ordem. Embora e!>sa alirnmti l'illalwz parcya 6hl'ia, a ~egllir di1>cutir..:nlOs Illoddns de consistê ncia (Iue ncm i!>~ll garautem. c~cri la!)
Consistência de processador Um mo([t.!h l de C()Il~ i ~lêm..: iil menos rigorOM). TIla~ que é mai s fád l de impl emcntar em grandes é a CIUlsíl>lência de !)!"Ucesslulur (Gofldrllim, I()8()). Elc lem duas propriedade!>:
mUllipr()(:c ~sa-
dnrc~,
t. 2.
bctit a1<> ]ll)r llualquer CPU são I'ist:ls por t{xtas as CPUs na ordem em que foram emitid:ls. Para e,lda palavnJ de memória, lodas as CPUs vêem todas ,IS escritas P,lnl ela na mes ma ordem.
E~~e~ d o i ~ pontoS 1>iio impormntes. O primeiro ponto di/. t]u ~, se a CPU I emit ir e~c rit :ls com valores I A, I B e IC para algumu I nnl l j ~a~ãu de memóri a ncssa s~qiiênr.:ia , então todos os nutrus processadores as vêem nessa unlclll tamhé m. Em uUlr.t:. palu vrus, Ijualquer IJlLtro proces:.ador em UIll laço rcstrito tlUC oh!>ervusse I A. I 13 c )C. Ic rll.Ju as pa [avru, e~clitas . nunca verá o valor escrito por lU e depoi s () escrilO por I A e assi m por diantc. Q segundo ponto é l1t:ce~!.áritl para exigir Ilue toda palavra de mem6ria tenha um valor não ambíg uo após vári a ~ CPlls escrcverem para Cl,l l!. por fim, pararenl. Todos têm que concordar sobre qUlll veio por lí lt imo. Me~l1l() com cs~ as rel>lrições, o programador tem mu ita nex ibilidade. Comidere o 4ue acontece se a CPU 2 cmitir e~c rit as 2A, 2U c lC coucorrentemente com as três escritas da CPU I. QllIras CPU li que estão ocupadas Icmtt) memória oh:.ervariill alguma illlcrcalaçiiu de seis e1>Crilas. tal comn I A, 111 , 2A. 2B, I C, 2C ou 2A, I A, 2B, 2C, IC ou mui las ollt ras. A cnllststência de processador não garante que tuda CPU vê a meSlIl:l ordenação, dircl"cnIt!me n t~ da eOll~I ~lê nda seqUcnc ial. que dá essa garantia. A~ s im , é llerfeitamentc legítimo que \) hanlw:IfI!. se comporte de tal manei ra que algumas CPUs vêem a primeira ordenação acima, algllma,~ vêem a segunda e algumas vêem ainda o utra!>. O que é garantido é que nenhuJlla CPU verá a seqilência na qual I B velll a l1l e~ de I A e assim por diant e. A ordelll com 'I"e cada CPU faz suas escritas é ohservada em lodos os lugares. V
'!l.
Consistência fraca NO!>~o prlhullo modelo, a cunsislêncill fracH, nelll mesmo garante que c1>critas de lima tínicu CPU sejam vistas em ordcm ( DllhlJi~ el aI.. 1986). Em uma mcmória fracamente consiSlente, um:\ CPU podcria ver IA antes de In e ullla outra CPU poderia vcr IA depois de 10. Contudo, para colocar alguma ordem no canso memórias fracamente con1>i~tenlc~ têHl varü1vei!> de ~i ll\'; l"\Inil.aç ão ou uIHa opcração de sincronização. QU:lndo uma sincronização é executuda.
•o ~
eo
u
•
u
••" o • o ~
< ~
o o
•
u
...
00
Escrita
/ I
M
•""
o
~
• "E
rluur. 8 .20
CPUA
A memória fracamente consistente usa operações de sincronização para dividir o tempo em épocas seqüenciais.
cpue
'- ,
'8
2A
cpuc
,e
10 tE
2.
2e
3A
3B
"
20
3C
•
~
Pollto de "ncrolll1.açllo "
o u
• • •"
IA
TempO _ _
~
~
" ""
w" o
~ ~
• N
o
•
~
" O
todas as escritas pe ndentes são tenni nada$ e nenhuma nova é inici ndil lué que todas a.. IIl1l igil~ c ..' ejam conclu{Ja .. c própria sincmniza,ão I,unbém eSlej 3 cOllclufda. N3 verdaúe. urna sim:ronizlIção 'descarrega () pipc linc' e kva " mem6ria li um cslac!n e~ t;lvcl sem nenhuma opcn' ~'ào pe ndente. OpCnlçõco: de silln oni zm;ilo sãu, Clll si. !'cqilc\II.:;al· mente consistentes, iSlo é, (IU
Consistência de liberação A co nsistência fraca ICIll o problema ue ser bastantc ine fi cientc IKlrquc ueve ellct.'rrar tOlhi" as Ilpcr;lç üe .. de mcmória pcnde ntes e dete r tooas as novas até q ne aI! operações correntes ten ham term inado. A cuns i"têncill til' Iiberaí,' üu lI1e1 hora as coisas adotando UIll Il100elo semelhante ao tia.. !ieçix:!; crIticas (Gharuc horluu ('I ai .. 1990). A idéia que fuu damenta esse 1Tl00lelo é que. quando um p n )Cc~ ~o sai de urna regiãu erftic:1 niio é T1 e\.· c" ~ lí ri o rorçar lod a.~ a ~ escritas a l'onc!ufrem imcJiatamcnte. B3.. ta assegurar que e las e .. rejam e n cc rraua ~ anteq que quallluel' prlk:e~~t'I entre mUllIe la região crItica novamente . Nesse mooelo, 11 ope rnçfio de sin{'fonização orerccillu pelu çnllsislê nda (raça é slIhdivididu CII1 dUlls lIpcrnçôc~ diferenles. Pura ler ou esc rever uma variável de dtuJos compart ilhada. uma C PU, i s l(l ~. ~eu suftware. de\'C rc:llizar. e m primei ro lugar. uma uperação 8equ!re na vari:'h'cI de sillcroni7..aç1iu pu ra obter a cc~~o cx d u ~ ivo uos dados comp ~u tilhtldllS. Então 11 CP U pode uçá-los c{uno quiser, lendo c escreve ndo 11 vo ntllde. /l.lIl·nnc!uil. a C I' U rC:Jli 7.a uma o]>e lllção r8!ease na variá"el de sincronizaçiin para indicar que term inou. A retease n50 ohriga a ~ escritil!' ]lendent e~ a l'onc1uir, mas el;l prô pria não conclui até q ue .. ~ escritas emi tj {l a ~ anteriormente e ~ t ej ar ll cOllc hrfdas. A lém do mai!'. n()va ~ opcraçf>e s de mcm6ria não ~:lo i ll1 pcd i d :L~ de inic iar imcdiatamel1\e. Quallll{l li próxi ma acqulre é emitida. é feita uma ve rifkm~' i\o par.! ver se l nda ~ ns release Ul l1e ri orc~ fo ra m co n ~ cl ufdas. ~ e nuo furam. li acqu!r8 é detidl1 mé que todus tenham conclu ído - e. por co n ~cg uin te . que 1I ){ la~ ai; e~cri t,1S realizadas ante~ (l c1a~ c ~lCjam condufdas. Dessc modo. se li acquire ~egu i nte ocorrer em um te mpo suficiente · mente longo apús a retease mais recelllC. elll nun lc m de e~ penlr antes de iniciar e l>Olle elltrar na regi:l0 crftka .~ elll de lllora. Se a acqulre segui nte ocorrer logo após IImôl rete sse, li acquire . e tooa.; ôlS i.ll ~ truçõc~ após e la. serã\l relardadlls até
8.3.3 Arquiteturas simétricas de multiproce ssador UMA OS rnult iproce ...sadures mai .~ simples sãu baseauo!' em um lí nico hilrra mcnlU. COIIIU ilustrado na Figura 8.21(a ). Duas ou mais CPUs e um ou mólis módu los de lllem\Jriu. 1000S usam \I mesmo bllrra me nr tl para ctl11lunicm;ào . Quando lIlI1a C PU qu er ler uma palav ra de memória, em pri meiro lugar e la veri fi ca se () barrall1ellltJ e~ tá ocupndo. Se u barramc nto esti ver ocioso. a C PU coloca nele o cnd ere~u da p:t l.. vra que ela lluer. "tiv;1 al~lIn ~ !l in a i ~ de con~ tl'Ole e cspera .ué quc a me mória coloque 11 paluvru desejllda nu barramento. Se o ha rra mento estive r ocup:l\lo qu;muo uma C PU qu i ~er ler ou esaevcr na rnel11ti ri a, n (,PU ;I pc na ~ e~rcnt ate! ' lllC o barra mento fiq ue ocios(j. E é aqui que está o problema desse proj clo . Com du u~ ou li\!" c r u ~ . a ('UnteI!' ~~ ã o pelo lmrramelllo ... erá a(' ll1 in i ~ t rá \lel : com 32 IIU 64. ~e ní insuportável. O si~ t e mu liellrá towhl1cnte lirnitmJ(1 pela largura de banua do barramento e a maioria das C I' Us ficurá ociosa a maio r parte uo tempo . A solução para esse problemn é acrescentar uma cache a cada C PU, cumo retrallldo na rigu nl 8.21(11). A e:lchc podc esta r dcutro do chip da cru. próxi ma ao chip til! C PU, na phlCa do processador uu algu ml. cUl n bina~'~o dt' t oda.~ as tfê .... Uma vez que agora mu ilas leitural! podem ser satisfe itas pe la cnche loca l. h:l\ erd muito 111('110S trMego nu barmmcnhl e o sistema pocJc s uporta r mais C PUs. Assim, nesse .:aso, ruzcr cachc é um gr:mdc ganho.
baseadOlil em barramento. (ai Sem cache (bl Gom cache. (1:1 C.om cache e memónas pnvadas
.,.m
Momórla privada - _
MarOÓ1I1I compartrlhada
fluura 8.21 Três mull lprOCtl!l!ladores
m
M
•o o
,.,
Barrllmaoto
Ib)
1'1
• •" ••"o
~
AiJtda uma lIutm pü:.:.ihi lidadl! é I) projeto da Figura 8.2 1(e), no 'Iuul !;llda CPU tCtn não SLlltlCn te UJJ1a !;achc. ma!> tillHhcm ullla IIlclIlóri:t l\lcal e privada quc ela acc!>!>a I>or um barmmento dedicado (pri vmlo). Pam fal.er utili7a\,:10 61il1l11 dCS:.fi etln fi gu rll~'ào , () !;o/llpilador d ~\'e colocar nas memórias privadas todo o texto dc prograll1a, todas a!> cadct:l!>, Ctllll>t:mte:. e outro:. dado!> ~Olllcn t c dc It:itunl, pilhas e \'ariávei ~ locais. Emão. 11 mcmória compan il hatla só é usada para \'ariá\ei~ !;ompul1ilhudus que podem ser c)crila:.. Na maioria do) casos, es!>c po!>icionamenttl cuidadOM) redLL l irá IllUilLl () tráfego L\(J bllrnunenltl, mm. re{lucr cooperação aUV;L tlll cmllpi1:.nltlf.
,• ~
S o
u
•
Caches de escuta
~
Conquan to 0 ' urgullLCllto!> de de:.cmpenho llLle aCOlhamos de apresent.lr ccn amentc SCjll1 11 ven.!lldeiros, atenuamu:. um pmblr.:m;a fuudamcntal um potu.;o dcpre) ~a dCllwis. SupHllhu '1L!!,! a memória "cja :.cqiienci almeme cun:.i)lente. O 'lu..:' ;I~un t c!;c b <.:' a CPlJ I II ver uma linhll em sua cnche c r.:ntão ;1 cru 2 tClltor ler uma p:llavra n:l mC)lIlu linln. de c'lche? Na nu~ê nc ia de Iluaisquer n:gra) espcdab., tilmhém clu ohteria urna cópia em sua eadLC. Em prindplo é accLt(hel fUlcr duas vezes a enche t.!e: uma mc)ma linha . Agora suponhll que u CPU I mndififlue a linha e e ill ãll, imedialiUlIcLlt e apó), li C PU 2 Idll ) LlU cópia da linhu a p:lrt ir do! sua cm:lic. Ela ohterá dados \'elhlls, \ tnhmuo 'I\:.illl (l !;OlltralO entre I) ~o ft wa re e fi IIlclTI('lria. O programu que e:.tá cxecut 'lIld,) na cru 2 uão fi!;ará felL l.. j!s,.: prnhlt.!mJ, cOlllleddo CUlIlO cotrênl'Ía de cnche ou cu n!lislêndu de cuche, é e"trell1umentc sério. Sem uma looluçiio, nãll:'c Ilode u!>ar cnchc e us Illultiproce:.:.adores ba!>cados em harrumentn Ik ólrülm limitados a duns ou Irls ('PU:.. Como IlInv.:qilêndll de !oU11 impol1ãn!;ia LlIuita!> )f.)luçfk:s forulll propo!>t.. ~ no lougu dI)) ano~, por t!xempio, (/OII(!IJlitJl, I I)X~; c Ilap,ILllufCO!> e Putel, 19R4. limboru lodos cs...es algllfL tnlO:' de cac h ~, denominados prutu(:ulus de cuerênclll de cadlc, aprcSenh!1Il difercnçus em dctalhe~ , lod o~ d e) impedem qlle vcrsõc:. diferentes dll nh':~Jll;t linlLII de cll.. he apare\:!lIlI !>imultulLca Lllcllte t!LlI dua:. ou mlli~ cnc hes. Em teMia!> a ~ ~Hluçj\c..., li r,!ontrollldor de c,lche é projetado cspecialmellle para penmtir (Iue cle csculC o barra· mcnto m()llLlor.mdrlll )( l;l~ llS n!tjuhiçõcs de barramento de outras CPUlo e cnche:. c execute alguma a~'ãn em ccl'\os casos. E!>~ê!> di!>pCl ~ ithos :.ão dCllolI\illlldos coches de escuta ou, às veles, cach~s de e5pill , IlOl'Clue 'e)piam' o harram..:ntn. O cLlnjunto de rcg ru ~ implementado pelns clldlCS, CPUs e mcm6ria para impedir quc diferentcs ve~õcs dos dados aplln:çam em LllLílt iplas cachc) forma II protocolo de cocrência dc t ache. A unidudc Ile transferência c arLllll/ClluLlIcnt n de lima cólche é denoLllinad:t uma IIn hu de eache c seu cOIlLprilllento t{pico é 32 ou 64 bytes. O ]"1rotl:lI..:o lo dL! ctlcrêuchl dc c"chc mais ~ illlpl es etc lodos é dCl10m inuclu escrita dil·cIH . Ele pode ser mui:. bem cllIendidn di)tingu LIldL) o~ quatn> ca:.o:; mostrado:. na Tabela 8.4. Quando 1I1Hi.l CPU lenla ler uLlm palavra que Hãu t.::.tlÍ em ~ ua c,K'he i)111 é, h~ Lima uu!>ência da cuchc para leitura - , seu controlador de Cllche carregll na cache a linha (11Ie clllllém llquela palllvra. A linha é fomccida pela memória, que:, nes)c protocolo, t:.'itá scmpre atualil.ada. LdlLlnl ~ !IUh:.cqlicllte:., L~IO t, pre:senças na cnehe para 1c:ilUra , l>Odem :.CI' s'lIi sfcitas "da cuehl!. QuandulL:1 uLlIa ausênciu dn cnche para escrita, a palavra que roi Lllodificuda é I!scrit!l paru 11 mcmórill principal. A linhu que CUl11é1 1l lL p'llavra referenciadn I/{;O é carrcgllda na cnche. Quundn há lima presença na cache paflt e~cri ta , 11 !;llc hc é atuulil.lIdn c, 1I1ém disso, a palavra é e~~ri t 'l diretamente pant a IIIcm6rin principal. A essência des)c protllcolo é 11 li!: tutl,llo a~ IlI"ICfõlÇÕCS de t:scrita rcsul tam na l!M:rita da palnvra dirct:uuente para a memória pam mantêla atualil.:tda 11 tempo ludo. Agurll v'lmos t1b!>el \ur Ioxlas essas açõcs nOValllell1 ~, lIIa~ dc)lu Vel., do ponto de vi)lu da t:!>cLlla. mOsl.....dn til! coluna li direil.! da rahcla 8.4. Vamos dar u lIome de cache I li c'lchc que rr.:al il.'1 as ações c de CilChc 2 li cache ele c!>cuta. QlIlllldo li l\lche I encontra LIma ausência da eache para um.. lei tura, ela faL. uma req uisição an bóllTamento plln! buseur UJIltl li nha da lIIemória. A cache 2 vê isso, purétllllada faz. Quundo a cachc I encomr:! 11m;! presença na caché p:lra leitura, a rC'lui)IÇãLl é s ati s f~ it a IDCi! lmcnle e não OCOITC ncnhuma requisiçiio uu harramento. portanto a t:achc 2 nãu clotá ci!;llte d:t!. pre~cnças nu cache pam leitura da cacht! I, 'abela 8 .4 Protocolo de coerência de cache de escrita direta. Os retângulos vazios indicam que nenhuma ação foi realizada . Ação
Ausência da cache para leitura Presença
~
na cache para leitura
Roqul91çao local
Requisição remota
Busque dados da memória Use dados da
cache
local
Ausencia da cache para escrita
Alualize dados na memória
Presença na cache para escrita
Atualize cacho e memória
Invalide entrada de tache
.. o
•
o
'"'" •""o .., •o ~
eo
u
• ..,• •"
~
o o
"
w• o ~ ~
• • N
C
'"
o
E~tTitas
silo
rnrli ~ illlcrcs~anles.
Se a CPU I fizer uma escrila, a cache I
rarn lima I'cqui ~ iç;iu de c<;crita 1111 11:11'-
ralllCuto. taluo quundo huu ver ausência dll eache. <:(11110 (11 ... ndo huuver prc ~e l1 ~'a Ilil cache. Em loda~ a<; c<;l'ritus 11 c'lI:he 2 verifica se ela tem a palavra que cst~ sentiu c~rita. Se niio tiver. de seu 1"!I1tH de "1 <;la i')hl é um;, rell \li~i ,fio/ausência da enche remoia e cln nada r:l7.. P,1ffl c~clarcccr um 1'01110 sUl il. note que. na Ta"c! .. RA. Unln lltl~e nda du t:'Lchc rellltJtll ~ignifkil (IIIC li palavm não está prescn'e na cache de esculn: não imp0l1n ~c ela c~lava (lU nào na enche 00 ori ginador. Assi m. urna línica requ isilfiio pollc Ser uma presença na enche loca lmente e umn uu<;ênciu tia cuchc na cuchc de cscutn. (lU vit'c-vcrsa . Agum supunhu que a cnche I escreva unl:l palavra
o protocolo MESl de coerência de cache Um protocolo IXlpu lar de coerência dt' cache tle e~c ri!:r retroativa é dCl1omimldo i\ 1f.:'''i I. ti filie reprc'icnta 1I ~ iniciais dos nnme~ dos quatro Clllados (11.1 . E. S e I) que eht usa (Pi.lpaman."Cls e P:lIcJ. 1984) Ele é ba~e;lll o no anli· go prulocolu r.serevt' Ulna \ '1.'.7. (UOOdIllUlI, 1983). O protocolo MESI é lI~ado pelo I'cntiul11 4 c pur 1lllli l fl~ ( llItr'l~ (')JU~ para c~ piar o harramentu . Cnda entrada de euche Ixxlc estar em U1l1 dos segl1 inte ~ qtt:ttm e~ t ad(J~ : I. 2.
3. 4.
111\ álid" -
Qu:mdo a C PU é iniciadll pela primeira vez, todas :t ~ cl1lr:tdelo barralllcntu. Ullla outra C PU tamhém pode hU'I;car a rn~ ~nm linha e colocá-Ia na cache mas, por causa da e~CU\;1. o purtlldororigillal (CPU I) vê que nãu e"~tá mais ~t)7il1lm e anuncia 110 barramcntn quc ele tmn bélll tem uma c.:ópiu. Amhas as cópia ... são m arC:lda~ corno e~ t ltdl) S IcompartilhuulJ). como nm~trn
cPu 1
I')
ITJ
CPU3
CPU2
Memótla
,--,
O
CPU 1 16 ~OCQ A
e.duslYO Bamllnenlo
CPU 1 (h)
CPU 2
ITJ
O
CPU3
Memória
CPU 216 bloco A
O I
CQfnpar lilhada ComparUlhada
-"''" •o • • •
· •• ·
~
o
~
DorfBmerllO
,•
~
CPU 1
lo)
CPU2
ITJ
O
IMooheada
CPU 3
MemÓfla
CPU 2 6!.Creve bloco A
O
I
,
coerenCla de cache
CPU 1
Id)
O I
CPU2
cpua
[TI
ITJ
Memória
ICompar ~lhad a l Compa l1Uhada
•
• ,• •
CPU 3 16 bloco A
,
88framElO o
CPU I
I.)
cPU 2
ITJ
O I
CPU3
CPU 1
Memória
CPU 2 eSt:flMl bloco A
ITJ
O
CJ
"""''''1
CPu 1 ucrew bloco A
6i:! rr 11me nlo
»~g uh.I. 1
~
"
ModifiCltIltt
Em
.•
O cpua
~
,o
Modificada
CPU2
· ·, ""· ~
Berla menlo
I~
U ~
I
B rramenlo
f'IU" 8 .22 I"'otocolo MESI de
so
clJlbiden:. t) que acontece !>C a C PU 3 ler a linha. A ('PU 2. a quem a linh a tlgom pcrtcm:c, sabe: llllC
cópia na IIlCmÓrillllàll é \Ülidn. portanto ela ativa um lIoinalllo barralllcnlo illfonnando ti CPtJ 3 que faça o favor de cl>pcrur cllqu.uuu el.l clIocn:ve a linha de volta par.! li memória. QU3mo a CJlU 2 cuncluir. li CPU 3 busca uma cópia c
lJ
a linha é mnr.:ada como t;omp:utilhada em ambilS 115 cat:he~, como mO!)lr:. a Figur.l 8.22(d). Após issu , a cru 2 escn:\'~ :1 linha nnvamCLlh.: , I) llue invalida a cópia
Multiprocessadores UMA que usam comutadores crossbar Me ~ lIlu cum todas as possíveis otimizaçõcs, u utili;,..ação de um l\nico harramcnto lim il!! o tamanho de multipmcesloudor UMA Oi cerca de: 16 ou 32 C PUs. Para passar di s~o é precb.o um tipo diferente de rede de interconexão. O circuitn rnub si m ples para conectar /I CJlU s 11 k me mórias é o COllluhldur crossllar mO!>lnido na Fi gura 8.23. Cu n1UIIl.Ll nre~ ero~~har são utjli.ü.dus há décadas e m centr.tis de comutação tclcfônicil para concctar um gnlpo de linh !l~ de cnt rada a um conjunto de linhas de safdn de 11m lllodo arbitrário. Em cada inle r~cc;iin dc lima linha horizontal (de elllrnda) com lima linha vertical (de sil ída) está um ponto de cruzu mento. Um punto de cnI'l.amento é IIIll pc(lueno comutador que I)(XII:) se:r aberto nu fechado eletricamente. dcpemlemlo de as linhas horil.untal e vertical deverem ser 011 não ser conecladas. Na Figura M.23(a) vemos Irês punI ll~ de cnWUllentn Icchados loilllultancamente, o que pe rmite conexões e ntre os pnres (CPU, memória) (00 I, flUO), (10 1, 101) e ( I J 0, II I O) ao mesmo tempo. Muitas outl"o.lS comhinações também são possíveis. Na verdade, O mímero de cnmhillilçÕCS c igual ill) mímem de modos diferentes em que oito tom:s podem ser r(hicionadas com segurallça sohre um tabuldm CILl xadrel.
N
Memórias
U)
M
Comu!ador
$
. ~ ~~II~:~n~~
•"o
L2"'CJ-t--1f----+- +--1>--+-f+1/'i> ----......,
•o ~
figura 8.23 la) Comutador crossbar
8 o u
8Xe. (b) Ponto de cruzamento
•
aberto.
~
•
~
•"
O
,
~
,
e5IA liberto
.
(b)
(e) POllto de cruzamento fechado.
o
o
"
Comutador de ponto de cruzamento rl!l;heoo
"
~
o
•• • o"
~
•
~
o"
Comutador de ponto de Cflllamento nberto
(,(
Uma da ~ propriedades mais i lll erc~sal1te s do comutador crnssbar é
Multiprocessadores UMA que usam redes de comutação multi estágios Esse 'algo bcm di feren te' potlc ser haseado no modesto cUlIlutador 2 X 2 n lO~tra(t o 11:1 Figunt 8.24(a). E~sc comut:ldur tc m duas cntradas e duas suídas. Mcnsugem 4uc chegam em qU11 14uer lima das linhas de entrada podem ser cOlllut:ldas para qualtlUer das li nhllS de s.\ída. Para 11 finalidade que pretcndcmos Heração. tal COIH(! READ ou WRITE. Por fim . o campo Valor OI'f'Ío//lIl pode conter um 0l>erando. tal CO lII ll ullla pa lavro de 32 bi ts a ~er e<;crila e lll uma operalrão WRITE . O comutador inspeciona n cam po {lfââlllo e o utiliza para determinar ~e a rnell$flgelll de\'e ~cr enviada IlOr X ou l'I(lr Y. NI)sSUS comutadores 2 X 2 podc m ~e r organ izUTtanto a mcnsagelll :Igora é re passada para 3D por me io tlu Sllídu inferior. Nc"~c pOllto U terceiro bit é IcslmJo e verifica-se 4t1c é UIII O. Por conse4i.1ênda. a mensagcm sai pela salda superior e ('ltega ~ memória 110. C0 ll10 desejado. O cUllIinhll pc rcorriJo por essa memage1ll é marcado pclu letra o nu Figura 8.25. flgufa 8 _24
tal Comutador 2 X 2.
ibl f'OIma lo de mensagem . (.)
(')
._--
-- ~
,M CPUs
MemÓfias
'" o
fiyur. a .4t5 Rede de cumulaçao ómega.
• '0
'" À l1u,:dlda que li IIH! rl"agcm pcrcol1'c li l'l!ll c d ~ conulIação, os hil ~ da cx lremiJad ~ esq uerda do rni\duln já não ),10 mais nc.:c!'>!'>álÍlJi>. Ek~ podem muito bem !>cr u!>ados p'lnl registrar :di I) Jllimero tlu linha dI:! cntrmla, de modo que a n.:~f>mla 1'II1!>!>U encontrar :.CU caminho de yoha. Para n caminho ti, as linhas de elllnida são O (cnlnlda !>upcrior p.. r.t l O I, I 11.: 1111 ada inlú i'lr pam 211 ) c 1 (entrada inferior pllr.t 3D), rcspecli vlUlICUIl!. A re:-.postn é ro h:udli de \'olla ui>amltl 011 . !>ó (11l1!, dC!>la vel, el a é lida da direita para li esquerda.
o
• •
Au mt:~lI1o tempo em (IUI:! IUdo i:.so está UCOJlICCClldo, U CPU 001 quer Ci>crcvcr lima p'll avra pari! o lIlódu ln de memória 001 Ne~M.~ ('a!>o aconll:ce um pruCCi>i>O análogo e a l1l~nsug~1ll é rOli!~ltlil pelas ~tlída~ s u~rio r, ~uperior c
lu
inferior, rClopecl ivillllCIlI C, marcildas com a klra b. Quando da chega, seu Cllllll)() Môdulo comém 00 I, (IUi! repre~cn o c;mlinhn fjlll,! clol tomou. Uma vcz que cssa~ dua~ félluisiçõcs nãu USilm ne nhum dolo mesmolo comul adorcs, linha ~ 0 11 m,)t l u l n~ ele rncmórin. elas podem prnsseguir cm paralelo. Ag,JnI c( ul~ idcre () que aconteceria se a Cl'lJ {)nO qu iloel 1){1f(/ ;1 memória e rel>I"IOl>!Us da mcmflriu. É dUl"iLlllCllh: de~ej :hel e~palhur a~ rcferêncius à memórin uni furmcmentL!. pdol> múdlllos. Uma técnica comum é ll~hr U~ hi ... úe nnt..:m buixu comu 11 mímeru de módulo. Considere. IXlr exel1Lplu, um t:~ pw,:o de endereço IKlr bytes para um compumdor que .. ce ~sa princillalmentc pal;wr:Js de 32 bit s. Os 2 bits de ordem baixa usualmente ~erão 00, mili, os J bib M!g uilll e~ eSlarno uniformemente J i:.lribll(dos. USillldo e~ses 3 bits cumo o número de mÓdulo, pala"OI!:> e l1d crc~ adal> con~ LLt ivU IllCl1te e~laroo em módulos consecutivos. Um sistema de memória no qual palavr:J~ cllll ~ecu ti vu ~ e~ t llo em módulos eonseculivos é dcnnminatlo intercalado. Memórias intercaladas maxil11i 7am paraIdil>l1lo ponlue gmnde purte das rcferêncills à memórill é P;LTlI endereços COllseClll ivu:.. Tilmbém é pos~í\'cI projetar redel> de cumutação tlllC nào l>ão bloqueantes e oferecem múltiplos chmi nhos de cada ('PU li cada módulo de mel1l(\ria, para lI i:.lribuir mdhor o tráfego.
"
8.3.4 Multiprocessadores NUMA
I·
Nel>lilo assim tão maiorcl>. Para chegar a mais de ccm CPUs. alguma coisa tem de ser abandonada. U:.ual1l1Cllle {) que se: abandona é n idéia de que todos os módulos de memória tenham t) mesmo tempo de acesso. E:.sa conCe1'>:.àlllc\'lI li idéia de I1lllltipruce ~sadores NUMA (NonlJllifurm McnlOl")' Acccss - uccsso não uu l· fUl'me à memória). Como seus primos UMA. eles forn ecem um único e~p;1(;() de endereço para todas as CPUs, porém, clifcrentclIlenle das máquinas UMA , o ace~~o a módulus úc memória local é mais rápido do 'Iue li acesso li m6dul l)~ renlOlOlo. Assim, wdos os programas IJMA executamo sem alteruçllo em máquinas NUMA, ma~ u desemrcnho ~erá pior do que em uma máquina UMA à mesma velocidade de relógio. Máqui nal
la
,e
'" ." n.
In
;.
,.c ,."
'.
I.
Ilá um ünico e:.paço de endereço visívc\ a todas as CPUs.
2 . Ac..: ~~u à memória remota é feito usando ill ~lnll;õcs lOAD e STOAE. 3. ACeSloO n mcmória remota é llItLis lenlll do que acesso à memória local.
Qll;mdu () tempo de acesso li memória remOl'1 não é oculto. porque não há enche, o sistemH é del\1l1l1inado NC'-NU !\'tA Quando es tão presentel> çur.;hes coerentes, ele é denominado CC·NUMA (ao menos pelo pessoal do hardware ). Ü pCl>slla l do software cO~lII ma denominá-h) nSM de hu rdwar~ porclue ele é busica mentl! o meM IlO q ue m..:môria compurlilhada di:.lrihuída por soliwarc. mas implemcnHu.l:t pelo hartlware usando uma págino! Je tamilnho pequeno.
."
••"o ~
•
"6
~
o u
•
~
•
~
•" "
"" •
w o
'.
~
• "
•"
~
o
Umas da~ prilHeinl~ m~qlliml~ NC-NUMA (emhora o nume :lil1{ta nã\lli"e~sc sido CUllh;ldo) fi,i (I ('arne~ic - Me1toJ1 em". ilustrada de fUl1nll simplific'lda na FigullI 8.26 (Swall Cf aI.. 1977). Ela cOl1sislia em unm cole~iil) uc CPUs LS I11. cada urna com alguma II1cl11(,ria endereçada por meio de um bamUllcnlu loclll. (A LSI- ll era urna versão de chip único do DEC PO!'- I] , UII1 minicomputador popular na décnda de 1970.) !\fJelllais. os ~ i stcl1las LSI- II cmm conectados por um hiUnUtlenlo de sislen la. QUillll.Jú UII1U requisição de mem6ria entrava em uma MM U. c ~ pe(.·iahllell[c modificada, era feila uma vcTilicação para ver se a palavra necessária estava na memória tOl~11. Se estiv('..;sc. cra enviada uma requisição pelo barl'amcllWlocal parti unter a palavra. Se não eslive~~e, 1l1'L'tIUisiçiio era mll'ada pdo l1mT:.Hllf"lIto de ~is · lema alé o sistcma que conti nha a palavra. Ilue, emito, rc~pomlia. É clam qUI;: a lí hima tleIllOr
Multiprocessadores NUMA com coerência de cache Projetos de multiproccssadores como o da FigllTll H.26 não se preSlam muito bem à ampliução. porque não fazem enche. Tcr de ir alé fi memória remoIa 10da ve7. 11"1;: lima palavra de memória não local for acessada é um grande e mpecilho an desempcnhlJ. Conl udo. se for adicionado l~achc. cntão é prcci~o udiciUlI:lr tamhém cocrência de cache. Um modo de pro[}Qrciollar coerência de cache é escutar o barramentu de sis tema . ElIltenn(l~ téc· nicos lIao é difíc il fazer isso, l1la~, se for ultrapassado um certo l1lí mero de CPUs. lOrna·~c inviável. Pnra C(lIlS truir IIl11hiproccss
fluura 8.26 Máquina NUMA com dois níveis de balTamelltos. O Cm· 101 o primeiro muttiprocessador a usar esse projeto.
MMU
CPU Memória
.6:",::-1-:: BaH8mGnlO iOCul
BaHamenlo local
CPU MeHlÓI18
Barramento local
Barranlllnlo da sistema
CPU Men,ória
BRlramenlo loclIl
ie Mdlon PUlo 1.51· /) dI! chip oonL-cla_ e I1IfKJiliiada lima 10 de loisdo que li 10 levava diL pal;lvelhos: orquc a málluimilllr () com Jo para
lia
, li d c~
NO>
NóO
Nó2SS
1;;;;;;;~,1o local tl UllrlJ 8 .21
la) Mulliprcx:esslldar de 256 nós baseado em dlre1ório Ib) DIVisão de um endereço de memória de-82 bits
em campo,s lc) OllotoTio no no 36.
,
Rede dalntarçonelllio
(., Si"
8
N'
"
(b)
.~ , O
2
I O
"
O O (,)
ja UniU
cvilur adu 110
I
rw me-
Le não é 1111\ >erênllo léeI
eo n ~ -
crcnl 'lu, A lauclo (la 011
em6'lIçllo loide11 de ache .. I e
relle adas mos UIll'L ida,ub:u 4 1\
;u
~~ Iá
QUlludu a fI!LluisiçãCl chega ao n6 3tlllCla recle de interconexão, du é rO"!l!da pafiL o hardware de diretónu, O hllrdv.lIre IIltleXlI para ~ lIa labcliL de 2]M entrmhls, uma p:lr.:l eada uma de S tl :l ~ Ilnha ~ de cache c eXlrlli li enlrada 4. I }~I,I Figura K.21(c) vcmo~ II"ê ti linhu não c~ tá em cílche, pOrllllllO fi hllnlwure busca :1 linhu 4 li,! RAM IOelll, a envia de vulta ao nó 20 e lltu,LliLa a entruda de diretório 4 pura imlicur que a linha agora eSH'i 1:11\ cachc nu nô 1(J. Agora I'UIIlOS L:onloidcrar uma segunda rclllti~ição, d.:~ t a vez pcrgullt,llldn sobrc a linha 2: do nó 36. I'da Figura 8.21((') \'':IIIU~ ljUC es~a linha cstâ elll c:lch.: no nó 82. Nes~c l}Onto o hllrdwari,.: poderia alualizur a enlrud:L d.: din.:tório 2 p:Lnl inrormar quI>': a linha lIgora esU'lno nô 20 e então enviou unia men~üsern :lO nó 82 in~tnLilLdo-n li paslollr Ulinha Plll·a 11 nó 10 e invalidar sua cache. NtlIc que, me~mo um 'mullipn.ICclosadur de memória compartilhadu'. por ~1I cxd u~i \'o all/es ele modificá-Ia, '1';11 requ isição faria com que toc:Ja~ us outras CÓpilLS fossem iuvô!lidíltlas limes tlol .:nncc:-.sàOllu permissão, OutnlS olimil.;lçõcs Ile desempenho para máquinas CC-NUMA s1l0 diM:utidfls em StC"l\~tr\Un ct aI., I'N1.
M
•• o
~
,• ~
•
o u
• • ,•"
~
~
, "
•
w o
•• ••
~
o
•
~
o
o multiprocessador NUMA Sun Fire E25K Como exenlplo de um 1l1llltiproccssador NUMA de rlIclmíria t'Ol l1p:lTl ilhada. vamoo; c<;IUtlar:1 família SUl! r:irc da SU l! MicrosySICIIlS. Emhufa essa família contenha vários modclns. fuca1i7aremo" u E25K .
\ C7. de dlips de cru com processadores duais. E:
11
O ~iS lellla E2;i K C(m.~ i sle em até 18 conjuntos de placas. ("mia conjuntu de plal'n .. COIll I)(I<\O por uma plat'a CPU-memória. uma placlI d e EIS com l{uatru cunL"Ctures 1'C I e uma placa de c.\ I1õlllsao tlllC :1t'Upla a pl:lca CPU· me móriA à J>lacOl dI: EIS c une ti p"r ao plano centml, {llIe ~ lJp(lrta as plac:ls e contém a lógica de !;lIlIlutaçau. (',!lI" plllca CPU · memór;a l'olltém quatro chips de CPU e quatro módu los de RAM de '" GU. Pur wn ~c4ii i! l1da . cOIda placiI CPU-melllória no E25K contém oito CPUs e o ito 32 GI3 de RAM (quAtro CPUs e (Iuntm ~2 GU de RAM no EI 5 K). i\ s~ illl. UIll E25K cOlllpleto contém 144 CPUs. 576 Gil de KAM e 72 coneetorcs PC I. Ele é i lu ~tn.lllo na Figul'lI 8.2H. O i rl t el't.~S511nt e é que (I número I R foi e.~culhido por causa de limi tnções de elll]Jacotllll1ent o: um ~ i s tcm" L'om I Rconj untos de placas em o Imlior que ptxlia pa~s ar inteiro por lIrll:1 l)Orl
"., cont"de
d8 "t.",~
======-J!~ i {
9 places cP\,! "IGfnórIa
'1 \
rlgur.8.28 MulUproceslIadm Sun
Microsystems E25K.
....
"'
M
figura 8 .211
O Sun fi re E2SK usa uma InterconeJão de IlUMIO nlveis. As Unhas tracejadas sao caminhos de endereços As linhas cheias s40 r..l!\lIuhos de dados.
•o
•
-•• -•••
oo
~
,
0-
S o
"• ~
Trall:.j~ ..êne\a.. de dadu~ usam uma illlercont!xõo d ~ quatro nfvds como mOSI•.! a Figura 8.29. ESlIe pmjl!!n roi eM_uI/mio ptlf CiIU ...ldc ~cu allll ilt:~mpt: nh u. No nível 0, pare:. de chips ele CPIJ e l1lernóriut- são l:o lleClHdn~ por um pC'iuenu comut,.di.r cnl:... hur qUI! também tem ullla conexiío com o nível I . Os dois gnJpl\:. de 1)'Uc~ CPU-mel1lória ..ão conc~ladll~ p1 lr ul11:...::gundo comUlador cros~bar nn nível I. Os comutadores de harras cmzadas siío AS IC~ rahricndns ~ob i,!)PCCtticllçàll. Puru todos ele... , todas flS entradas eSllln di spon íveis nas linhas. hem como na ... culunas, cmhol'll r\L: 1H todil~ ll~ comhlOaçõcs sej,lffi uSlldns nu nem mesmo façam ..entido, Tt>da li lógiclI de comu ta~;ãu nas plilca~ é c(lll~tmí\I,1 11 p.lrtir dI> c r()s~ ha r 3 X 3. Cada I:tlJljulltn de phu.:.ls con.. iSle I!l11 tfês placas: li placa CPU-tI\éll\órill, a placll de EIS i! il placa dI! cxpansão, quI.! cOJ\I.!cta 11:' uutn.~ dIHI S. A imcrconcxno de nf\'el 2 é um Outro cornuHldnr crosshar 3 X 3 (lia placa de CXpllns:lll) 'lU\.: unc a memória propriamente dita às port:ls de EIS (que são dc mapeamento dI! memória em todas il!) lJ1traSPAR(\j. rud ..... a:. transrerências ele dados de nu p:'lra o conjunto de placa ~, seja para mem6ria uu parn llllla IMlL'tll de b'S . pa.. ~.Llll pelo eoruutudo.. dc nível 2. Por fim , dados que tem dl! ..cr trall ~ rc rid us de nu para uma placa rl!JIllltll pa ~:.alll llt )f um comutador crossh:lr I~ X 18 de dados no nível 3. Tmn ... ferências de d,lIlm são fdta~ 32 h)'les por veL, l>nrl,,11l0 Jcv:! ,hlil> c ic1 o~ de rdt"tgio p:lra transferi r 64 h)'te5. que é n unidade de transrerência usual. Ag,)ru 'Iue J.i VLJ nn~ como o:. comp(ll\ente~ ~ão organizados. vamo~ vnltar lIossa atençi'lo 110 modo como a memória cOlllparlllhucJ1I 0Jl..:ru. No nf\'el mui s baixo, os 576 GB de memória silo div ididl1s CJll2~9 blocos de 64 h)'tes cada. E~lIe ~ blllcl)~ ... ;'10:1.. unidadcs utômicas do sistema de memória. Cada bluco tem umll placil-mãe linde ele re~i de quulldo nno e:.tá em U~() em algu m outro lugar. A maioria dos blocns fic:I em ~1Ii1 placa-mi\e gra ndc parte do t..:mIM). (\II1IUOO, quand,) umll CI'U precisa de um bloco ele I11cmória, sejll ele ) ua própria plilca ou de uma da .. 17 placas renlo!:.... em primdm lugar ela re'lui si ta uma cópia pilnl sua própria ..:achl! e ellli'ln aces~a a cópia nu cache, Emhora cadll chi p de CPU no E25K cCln1 enh" duas CPUs. elas cnmpilrlillmm uma ún ica cache física e, por isso. comparlllham 1Il(ltl~ I" hlocns nelu contidos. Cuda bloco tlc IIICII16r1;1c: linha de enche dc enda chi p de CPU pode estar em um de três eSlados: I.
2. 3.
Acc~~o cxdtbi\'u (para escrita). ACC!\M' COll\partilhndo (para leitura). Inválido hl>to é. vaLio).
QUllndo UlIIlI (,PU prccba lcr ou CSCfC\'Cr uma palavra de memôria, em primeiro lugnr elil verifica sua própria cuch..: . Se ni'lo enwntrar a palavra ali, da emi te umn requi!\ição Incal para o endereço fisico. que é transmi1ida ~ (!Jnenlc c:1l1 ~c u prôpriu conj unto de placils. Se uma cilehe do conjunto de placlls tiver .. linha necessária ... lógica de C)!;utn dde.:1U a pro.!l>Cn~: a c cumpre a requisi'ião. Se a linha es1iver em modo cxclu ... ivo, el,1 é tr.msfcridu no rC(lui ~ itant..: c :. ,:ópl,. onBinal é rnurcada como inv:ílidll . Se esti ver em modo compartil hado. ;. cache nào r..:sponde. vi~ tu '111": a memória ~en.pn.: re"lxmde quando uma linha de eache e~ t i\'er limpa. So.! a lógl.:a Ih: c~cu t a nàll pudcr encont mr a linha de c11chc ou se a linl1ll estiver presente e compm1ilhada. ela envia uUla rei.I"I ... iç'io pelu plano central ti placa-mãe perguntando onde cstd o bloco de memória. O eSllli.lo di! ':ilda hluclI do.: memória c arlllllleOudu llos bits ECC do hloco, f!onanto a placa mi'le pOli!! determinar imedintamcllle ~c u c~ t adn . Se o hloco ni'lo cl>liver cmllpanilhadn ou estiver cumpal1ilh..do com um .. (lU mais placas remotas, a me mória rc)idcntc c ... tará atu,diLada o.! 11 rc'lui~ição IxxJe ser atendid:1 .. partir da Illcmóri .. da plaC:l-01àc. Ne~se caso, uma cópia du linha d..: l·...:he: .: Irall~J1litida pelo comutador crosshar de. {!:Idos CIl1 doi ~ ciclo~ de relógio c acahará chegando ti (')'U rei\ui~itllllte, Sc a rClluisiçiln em par.1 leitlll'a, é fei ta IIUla entrada IIU diretório na placa-mãe allotumJo 'luC UI1I no\'o clio.!lIlc c .. tá cOUlpan ilh111lilll a linha de cachc c li transaçãu c:.tá conduída. C'nntudo, se a r.:quil>içãu rl)r para escrita , uma 1l1l.:Ill>ugem de invultlJ
• ,• •
=o • o-
•
"
co ti) M
•• o
"• "8
~
o
"• "• "• o o
"
• ••
'"o ~
• N
C
•
~
o"
Agora CUl1 s id c l C ti CU ~tl e m que o blucll f"Cllllisitado e~ I,; em eJl.lndo e .ll d \l~ivu Im:al i7.ado el1l 1I1t1H placa diferen· te. QUHnuo ti placa- mil\! nuté m a req\1j si ~ ãu. ela consulta ti lucali z:rçãu da plac
8.3.5 Multiprocessa dores COMA Urna desvantagem da:-< máquinas NUMA e CC-NU MA é que re ferências "memória re mota ~1lo milito mai ~ lemas du que referênc ias à Illemóriu locu!. Em CC-NUMA. essa direrença de desempenho c'itá oculta, até certo po ntu, pd a atividade de cache. Não o bslntl!e, se li so. u es p;l~O de endereyo frsico é :,> utx:lividido e m linhas de cache. que migram pelu ~ i s tem ;\ sob demanda. Blocos n1lo têm máquimL~ de residênci a. Con1(l nômades em alguns pafses do Tt' rcciro MIHl{lo, :-cu lar é Illl{k eles estão e;\atamente no momento em (Jlle~tiio. Uma memória que apenaI' atrai lillha ~ conforme n ece ~ ~á ri o é deno minada memóríH de n t n u;;iio. U~ar aRAM prineip.tl com uma grande cache fUlIllc nta IIIlI ito a taxa de pre ~e n ça 1Il1 eache e. por eO Il ~eg uillt e , o desempenho. Inrelizm cntc, como ~e m p re. não ex iste ulrnoço grátis. Si :-tcmas COMA introdu zem dois IlO\'O~ prohlcllla ~: 1.
2.
Como as linhas de cache são localizadas? Quando unta linha é ex purgada da mcmÓria. o l/uc acontece se elrt ro r a últ ima c6pia I
O primeiro prulJl ema cs t~i relllcionadtl ao fato de qu e.lI pó~ a MMU ter trndu7ido um c ndl' re~·t) virllwl P;lTU um endereçu físico . se a liuha não estiver na ellche verdntle ira de h'lrdwnre. nao ex il\te uma manei ra fáci l de d izer ~e ela e~ t á na IIlt' m{lri
b:>tI n:)uha em pmcllrar linh,lS qUt são realmente reI1l0tá:>. Uma ~0luç3n é dar a cacl a págillil unm llI,ílluina de elll t..:rllll):> du lugar onde c:>tâ a elltrndu de diretóriu, Illa~ nãu dn lugur onde eStão os Ih.do:>. Entãu Im ... mell)agcm podo.: ~cr Cllv itldu ti máquina de re:> idência para, tln mínimo. localizar u linh•• do.: ..:u..:h..:. Otllrns c~ quCIl1,I ) cll\ohelll orgími/ar lHelllóriu COIllO uma árvore e procurur de Imixo pam ci ma até em;olLlrar a linha. () )o.:gullllo pruhlcmu na li)ta ' Iue acabamus de citar eMá rehlcionudo COm u n30-renmçãu da últimu cópia. ( 'IU1111 CIII CC NU~tA , um.1 linlm de enche podl! C:>lilr e m \ ílrius n ó~ uu IIlCl>1Il0 lemp(l. Quamlt l ocorre umlllluloênem da ..:ache, uma Imhil de!\c :>cr bus..:uda, o '1ue u:>uillmcnte ~ig njficíI qUe! \IlHa OUl m linha deVe! locr descunadu. O quc UI.:01l1l:":':' )C, 1'1111 lI.:al>O, 11 li uhu c:'>cul hida for 11 líhima COplll'! Nesl>e CU)(l, ela não plide ser deloearlada. UI1I,J :>nlll'Yãu c \tlllllr ao dirtlórii) e veril1cur se há olltra~ cóp ia ~ . Se houv.:.r, 11 linha pu"e ser dl!:>cartadil com l>cgllrànça. (. <1:>11 cnntrálllJ, da tem dc )er mignld:1para algum lIutro lugar. U IIlU OUIr.! ~tllução ~ idcntilicar uma c6pia cll: c'ld,j lillhOl dI! C,td lC eOlllO a cópia me!>lIl1 c nunca jogá-Ia fClra. E ~~a ~j)l lIç1io C\l;I .. le r de \'l!rif1car u d irctt~rill. Lc\'alldu IlItI\) em conl1l, COMA prometc mdhor dc~clllpt!Jlh o du que CC-NU MA, IIUIS pouca... rnálluinu~ COMA furam ' l.lIhlruídalo, IHuHUltn ~ preciloo lIlai ~ c:\pe riênd ... A) duas primdnls máquinas COMA conl>truíd'l:' fnmm li KSR- l (BurJ.lwrdt CI ,lI., I ~nJ e Oi Data DilTu sulII Machinc (I lagéfl>t en el aI., (992). Um.. lllíí1luina m Iai) recenlc é ,J SDAA I
m
M
•o • •" • ••"o
~
~
,• ~
8 o
u
• • ,•
~
8 .4
Multicomputadores de troca de mensagens
Como vimos 11,1 Hgura 8. 18, os dois lipos de pmceslolIllort: ~ paralelos MIM D si'in nllll t iprucc ~síldo re s c nlultiCOlllpuladu...~:> . Na :>cljau alll.:rior e~ltldumos m mlllliproce~ ~adllrc:s. Vimos que rnultiprocessadores uparccclll para I) ~ 1 ~lcllla IIpcraciull.11 'I)m., )e tiv":Sloem mem6na compan ilhada que Illxle ser ace:>sad" usanlto ilbt mçõe~ comuns LOAD eSTORE . b:>u memória eOIllPllrtilhada Ilode ser impll!ll1cnlada de várias manciras, cllmo vimos, incluindo haffillllt!mo:. Ile I.:)C II I,I , Cflh~ har de dados, redeS de cOlllutação rnu1tiestágios e \'í1rios esqucmas busead(l~ em diret6rio. Não ohltt;uuc. prognU1l;b escritos para \lnl rnult i pmce~s .. dor podem a..:cssar quahlucr localiLUção na mcm6ria :>elll lladil :.allo,:r l>ub.-c iI IOI>ologia intema ou o esquema de implementação. &S:I ilusão é que torna os multiproces~ aclilrc:. tão utr.léntel> e é 11 raL.'lo por que os programadores goslam desse modelo (It: programação. I'm Ulltro ladli, o~ 1I111ltipmcessadores també m têm suas limitaçõcs, e é lK)r isso flue os multieomputíldores ta mhém )1io impllllant c~ . Ame~ de mais nada. mulliproceSSf'ulorcs não podem ser ampliudos paru grandes tamanhos. Vimo) a enorme qu.lllll.ladc de hardware (Iue a Sun leve de IIsur para lIumentar o mimem de CPUs do E2:Ci K pata 72. Por comparação, lugn adiante I!studarcmos um Illultieompumdor (Iue Icm 65.536 c rus. Ainda faliam lllu ilOS anu~ pam IIIII! algu!!1 1I c()n~lma 11m multiproce~~uclor comercial com 65.536 nós e, elllllo, já cswrilo em uso IllUlli CIIHlputadore, CO Il1 Jl1 ilhõcs de nós. Adell lail>, li COllh!uç:l0 pda IHl!ll1ória em UI1I llIuhipTtW:t!ssodor pode Melar seriamenle o desempenho. Se cem CPUs e!>ii\ere m telllJndo ler c Cl>crcver as lIlel>lIlas vari:heb constantemCI1lC, a cOlltenção pelas v:1rias memórias, h;lrnullenlO~ e {jire lór i o~ I)(){!e rCl>ultar em um enorme haque no desempe nho. COH10 clln:>c'IilclId:t d el>~Cs e de outros fatures , há UIll grumlc intel'esloe C1I1 conSl0d r e usar computadores par.! Iclos nus qUlIb cada (, PU tem sua própria memória privadu, que não pode ser ac cs~ ada dirctilmt!ntc por qualquer nulra CI>U . ...tC) !>ão li!> lIIultieolllputadores. Pwgrnmas em C I'U~ de 1llultieompul:1IIurc) inleragell1 usando primiti\ a~ COIIIO S8nd c rec&lve para troc ur mcmilgen) exphcit:t1llt!nte porque uma não pode chegar até a Illemória da outra com ill)tnl 'YÕI!~ LOAD e STOAE. Essa di f.:rcnçu 111uda completamente (1 mudelo de progralllllçito. Cada nó em um IHulticlllllpulildur consiste em uma nu algumas c r us, ulgumu RAM (cenamcnlc comp3rtilhada ~ó emre alo CPU) '1UC e:>lftu naquctl! nó), um disco c/ou outros dispositivos de r:JS e um processador dc comunicação. O~ prt)(;C~~adlirc~ de cnmlllHcação estão cnnectados ror uma rede de intercomunicação de alIa velocidade dos tipos que dI M;u!i Illlh lia Sc~:ãu 1'1. 1.2. São usadas llIuilits tnpologias, cS(lu e lll u ~ de cllmulnçno t! algoritmos de roleamenti.) diferc llle~. O Ilue lOdo... o~ multieompuwdores têm em comum é quc, quando UIl1 programa de UpliCllção I!KeeUliI a prill1itiv,J send ti proce:.sador dI! cOlllunicução é nOl il1cado e transmite um blocll de dados de usuário à mtiquilia de de~ t illo , pmsh clmcnte ap6~ pt:dir e obler pc.rmissfio. UlIlmuhicomputador genéricll é Illllstrado na FigunI R.30.
Nó
f ig u ra 8 .3b
Mulucomputadol gonênco.
Rada do
inllllCOllOJtAo (IIt 11110 de5tilmponho
• , ~
"
• ~
u•
o
8.4.1 Redes de interconexão
M
Nu Fi gura K.3U vemos que l1lulticompLlla
"" ••
o
",• ~
e
o u
•
"• "• ",
pUladl'l'cs s;iv SlltVft'c tlllcl1l1!I1ICIllC si milares ncsse as pecto. po rque llIulliprucessadore~ InUi\llS "C/CS têm vários módul os de I1Ic Il16ria que tam bém devem se inlcrconeclar uns com os oulfllS l' COIl1 as C P Us.I\~~ i m. o n w te ri ~,1 nesta sc~ ãu
muitas Veles se
nplk~a
a ambos os tipos de sistemas.
A razão fUlluan'CIII:ll por (Iue rcues d ~ intcrc\lncxào de ll1ultiproccss auores e lIl ull icumptlla(lorcs sã!) ~ clllellliln te!> é que. no rundll. :lmhos usam troca de mensagens . Até mesmu em um3 máquina COI11 um a ún ica C PU, quando li processador qucr ler Oll cscrever uma palavra. sua açãu tfpica é ati var ce rta ~ 1inha ~ I1U harramCIIlO e c~ pc rar Jlor IIlIla resposta. FUllll a111ent a lll1 e nt ~, essa "~'ãu é cmno trocar me nsagens: o iniciador en via um:) requi.<:içao e espera umil re~ p()~ hl. Em grnndcs multiprocessaclores. a cOIllunic:lção entre C PUs e lI1em ória remoia (lu,!"e scmpre cQnlliste e m a CPU cllvi ar à IIlCl1ltí ria uma mensagem e ;~pl fd til , dellominadn pllcotl'. rC{jlLÍsi talldo alguns dad \l~ . C 'l memó' ri a tllle devulve um pacote de res posta.
,
Topologia
"
/\ tupolugin de lima rede de intert'onexão descreve como os e nla ce ~ t' os c Ol np u ta dore~ ~iio u rguni 7.ados. por exemplo, Ct)mo U1t1 u ll d tl U lima gfortant \' é a distânci a média entre dois I1 Ú~. uma ve7. que dil está re lacionaúa COI11 n tempo médio de trU11sito do pilCt1tC.
•
w o
••
~
• C • N
~
o"
* (.)
Figura 8.31
Várias topologias. Os polllOS negros representam comutadores. As CPUs e memórias não são tlIo9tmdas. Ia) Estrela. [bl Malha de interconexão completa . 1c:1Arvnre.
(o)
(b)
o (d)
(di AlieI. lei Grade.
lO 1bro duplo Ig) Cubo. (h) llipelcubo I1n. (.)
I')
I,)
(h)
Airul;1 uma {lutra propriedade il1lpOnanl\! dc uma rede de illlercnllexiio é ~ ua c.r p;l('idllclc de transmissão. é. ljLHll1t(J~ d..ldll~ clu pude mLlver por segLIIHlo. Umu medida Ii ti l de~su cap'lcillade é a largura de bllndu tl e bbseçãll. PUni calcuhH c~~u quaut idud\! , elll primeiro lugar temos de di vidir (cum.a.:itllu lmcnte) a rede em duas J>.rrh:~ iguui~ (C;:1Il l ~ rIl10~ du nrhnero de nó~) porém niío conectud ns. removendo um conjullto de urcos ele ~eu grafo. Euláo cakLl l allltJ~ U largura de handa IUlul dos arcos que fonuu removidos . Pode haver muilos ripllS difer\!lIt\! ~ dI! p.. ni~ úll de rede em duas pUrl c~ iguais. A largura ele b;lIIc1a de hisseçào é u mínima de toda~ n~ po~\i· vei~ purll~f)c~. \ ~iglllficfindn des~e nÍlmero é (11Ie, ~e a largura de handa tle hi~seçllo for. por excmpln, ~100 bll~/~ , enlãll, ~e hllu\ CL muita comunicaç:lo crllre as dua~ meludes. 11 I'azão tOlal pude M:r limitada a apena ~ IWO bi l ~/~, no plllr Cll~~l. Muitos projc!istlls ach;LIlI que a Inrgura de banda de bi~seçãtl é li rnétricll mais importante U": UniU rcdt! de Intercl1nexão. Muitas redes de ilUen:unexão são projetadas com 11 ohjc!j"ll de lIlaximil;lI' a largUrll 110.: b de IIIh:rL!orlL!xão podem ~er caracleriLad;l~ por sua dhnclll>inna liclad e. Pam nossas finalidadc~, a dimell~i{)nalidflde é determin,u.la pelo 1II1mero de (JI"lIjÕC~ qUI: há par..r chegar ela fonte ao de~tino . Se IIUllcll hlluver nL!nhum,} 1ll"lljão, htn e. ~c hou\cr l>Olllellte um cami nho entre li fonte e () deslino, a rede lelllllirnen~ân zero. Se houver ullla dimen~à(l na qual po~~a ~e r fei la LIma 01X;flo, por exemplo, ir para O oeste 011 ir para Illcstc it rede é unidimcn· SiOIl~LI. Se hIHI\'Cr doi~ eiX()~ de mudo que IIlll pacote Jl\b~a ir panl (J leste ou pam o oeste UU. como :Ilternativa, pll~~a i ~to
ir panl 11 norre nu p"mll ~u l . a rede é bidimcnsional e assim por diunte. V;iriu~ topLl logia~ são nru~trlldas na Figura 8.3 1. Sã" mll~tradm. apenas os en lace~ (linllll~) \! os cOlllulildurel> (pllnlll ~,. A~ memóriall e C PUs (nau mostradAs) U(\rmalment\! estariam ligadas aos comut!l d nre~ pm interfa· cc~. NlL FigunI X.3I1 lLJ . tCIll(l~ IImll configurução de dimensão tetO em c~trela , 11:1 tltlal as CI'Us c mCI\l~rias e~tnrilllllligudn, UO~ nó ~ extenlOS e nc\ celltral ~ó faria;r comutu~n tl . Embora sej a um projelo sim ples, no l.:aMI dI.! UlII grunde ~htellHl e pmvávd que () cornurudol" central seria UIlI imllol"lantc gargalo. Allellla is. da pcnpcctiVII da IOlcninciu li falh:l. esse projeto é ruim, uma vet que ullla lÍnicu I":rlha no cornutlldnr central dl!~trói l:ilIn·
°
plt!tUIlIClltl! (J ~i~h.:ma. Na Figum X.3I( b). temos Uni oUlro projCtO de dimensào t.cro que está na mUni extrenmlude do e~pcClrn . ullla ma lha de intercullt'xãu 101 111 . Ne~se caso, cadu nó tem uma conexão diret;1 par.! cad3 outro nó. Esse pn~elll maxi miLa a largura de banda de hi~se'ião, minilllilu o diâmetro c é extremamelltc tolerante nfalha - Plxlc perder clllais· 4\1er ~e i ~ elllm.:c~ c li rede llinda clllllinuar Intalmente conectada. InfeliL11lCnt\!. o m1mem de enlaces recjllerido pflm k 1l\1S é A (A I V:!. o que ru pidanrenlc sai dn controle para k grande. Uma ULllnt lopologi;1 ..! 11 árvOI'c, ilustrada na Figura lU t (c). Um prnhlema com cs~e projeto é que a largura de haru[;} de hi~lI..:ç5o é igual li cllpacicJade do I!ulilce. Uma \'L:Z que normalmente havcrl1muilCltráfego peno tio topo ela línure, \I~ poUCH~ 11611 clutlJl"K1 se tornarão gurgaluli. Umll1oc!o de conlOnmr csse prnblelll:l é aumentar :1 largura lle hil>\eção dando mai~ largura Ih.: b;mda aos en lllces quc e~t5() mais em cima. Por excmplo. u~ enlace~ dos lIívei~ mai~ baixo ~ Ixxleriam ter 11I1IU capacidade b, o pr6ximo nível poderia ter uma capacidade 21> e os enlaces do nf\'cl stlllCrior pOl.lcriam tcr 4b cudu 11111. Esse projetn é denolllilludo án'OI'e gurda e foi usmlo cm Illulticompututlores cnll1ercilli~.
tllb l 'omo m ('M ·5 da Thinking Muchincs, que não ex istem mnis. () mU'I da I'igunl KJ I(d) é IIInll topnlogiu unitlimcnsionul pehl 11I)SS:1 defi niçnn, Ixwque cuda pneOlI! enviudo tem uma opç:'lo de ir para a direilll ou pum a e~qllenla. A grade ou llIulha da Figura tL'I I{e) é UI1I projelo hilli1l1CII' ~illnal (IUe tem ~idu usudo em muilOS siMelll a ~ comerciais. É de ali:! regul:uid;rde. fácil de ampliar para IlLInanhos lIlaiorl!~ c tem 11111 diâlllctm (III\! aumen ta apenas com li miL quadrada do mimem de nós. Uma \'ilrianle da grade é (J turu duplo da Figura gJ 1(1), clue é um:r grade cujas extremidades lIiio conectadus. Além de ser mais tolerante li falha du que li gmde, ~eu diâmetro tam bém é menor, I)orque as are~tas opostas rrgora poJem se comunicar cm
M)IIIL!lItC dui~ ~alt\)~.
Urnu OLlIr.! topologia popular é o lOTO tridime n ~ional. Nesse caso, a tnpolugia consiste em uma estrutura 3D cOllllllh IIIh pomm (i,} ..(.) onJe todas as coordl!nada~ si'lo mimcros inteiro~ na faixa de (1,1, I) a (I, III, 11). Cada nó tem seis \'illnho~, doi~ ao longo de cada eixo. O~ nós nas extremidades têm enlac\!s que fLl7em a volta cUlnplela alé u eAtrcmHttdc upo~ta, t.!),uta rncn!c como us toros 2D. n cuhu du FigutiL R.JUg) é lima topologiatrid imensiollal regu lar. ]J1I~trumos um cllho 2 x 2 x 2. mas no caso gerill dc poderia ser um cubo k X " X k. Na FiguflI N.3 1(Ir) t emo~ 11m cubo quadridimcn ... ional co n ~trllíl l tl com ([\li~ cllbu~ trid imensiollais com tlS n6s corresponden tes conecllldtls. PLlderíamos faLcr um cubo penladirnc lL. ~ i\Jllal CILUI:lnd(I.1 c~tnrtll ra ela Figura 8.31(h) e concctundo us nós correspondentes para formar um bhlC(I de 'lua' tro cub{)~. Paru Il a ~eh tliltlen~õt.!s. poderfamos replicilr u bloco de quatro ctlbo~ e inh: rconeelar I)S nós t:mrc~ pondentc ... c ;L~~im por diallte. Um cubo n-dimemioIHtllonnat.ln d e~sa muneira é dcnmninado hipercubo. Mllilu~ COlUpll ludLlrc~ paralelos u~alll essa lopologin porqu\! U diâmctro ere~ce linearmente COIII a dimcllsiollillid'ldc. Em olltra~ ptll:l \'r;L ~. li diiirrretfO é () logaritmo de ha~e 2 do número de nós , porramo. por c)(cmplo, um hipercubu decadi mcn~ii)rLal tem 1.024 n ó~, mas um diílmcl ro Ilc upenas 10, o que Ihc conferc excelentes prnpried:rtles de ai raso. Note qU\!, Iltlr cOll1para,iio, l .u24 nós organizados como I1ma gnul!! 32 X J2 lêm UIll di ílrnetru de 62, mais do que seis vetCl> piur do (IUC I) hipercubo. O preço pago 1)Cln diâmetro menor é que li leq\l\.: e, pnr isso. o mimem de enlacc~ (e I) clhlu) ê muito rmlinr parll o hil)Crc llho. Ainda lI~~im. I) hipercuho é IIlIm escolha comum parol ~i~te m;l!> de altu rle~\!mllCuh() . I Iá .\ árrl)~ fi Innatl)~ e t 'c~llllls ' (I ue se dest;rclllu: ns MPPs e os clu~tcr~ . E~ILI(llIrCnlO~ cada um dcle~ pnr veLo
I /)
M
•o
•
•" • ••
~
o
~
•, ~
8 o
u
• ••
~
• •
•.
~
<
~
o
• u•
~
N
8.4.2 MPPs - processadores maciçamente paralelos
M
A primeira calcguri .. con~;~ le Il~ 1\'II'I's lMassivel)' l'U fll llcl I'rllcessors - proct'S",",lure'i lI1aciçnmcnle paralelos). que sãu imensus supercomputadores de muitns mil hões de dólares. Eles sau u~adll~ em dêndll". em engenharia e 11" indústria plUa c!ílculns muito gmmlcs. parn tralnr lHímcros muito grande.. de Inlll~a,ôc~ por ~egun
•""
do ou par:! data w"rchnLl~i n g tllnuflzenarnCl1to c gcrellc1nmcnlu de imensos hancl!!I de dmlo'1.). De início. n<; MP!'"
!J)
o
~
•o ~
S o u
•
~
•
"•"o o
"
•
~
o ~ ~
• • N
C
~
o"
CHlIl1 priulllr1UmCrllC IIsadlls l"UIIlO SU llCrcol11 pulluIorcs cicnt[ficos. mas. agortl. a llIuiurl" dclc~ é usada em ,1I11hicl1 te .. c\ll1lcrciuis. 1\111 centl sClllidu. essas l11á4Uiutls sao IIS SIICCSsurm; dos podernsos rnaillrmll1l' ~ du uécada de 1960. e mbora I\·i'iO. os MP!'... (h:salojnnll1ll11:lIIUiuas S IM D. ~upercnl1lputadores \'e t ()ri;l i~ e processadores l11atridnis do Itlpu da t:adeia alimentar. 1\ maioria dessas lIl;.'illllinas u~a C PUs padronizadas l'0ll10 "Cu~ prO(·e~sadores . ()p4iile~ I)\ l rlllllr('~ ~ão n Pel1tium d:. Intel, a Ullrasrl\ l~C da SUl! e o PowerPC da LUM . O que destaca os Mrp~ é a Ulili7.ll!;ilu IluC fazem de umu rede de interconexão prtlpriet~ria de de ~empenho 1II0 ilO 'lho. prujctada para muver memmgcm CIIIl1 h:lixa latência c li alt:l largurn de bunda. Esses dois nspcclos s.10 importantcs P0l'(llIC li vasta mllil.lr;n de toda ~ :1S mcn ~agc n~ é de 1)ClllIerlll tamanhu (bel1l auaill!! de 256 bytcs), Illa$ gram.le parte du tráfc!!o total é callsada por gmr1tJeo: mert<;ageu( ( nmi ~ dI.' 8 KD). Os M PP~ t:\ll1béll1 vêm com extensivos suftwares e lJib l iotcca.~ prop rictárin~. Um nUll'll ponto que caracteri7.1I os MPPs é SlIa enorme I;apaddatle de EIS. Prol'llcl11;t~ grandes li .~lJficie nh: pllra Ju~tincar a utilizaçi'lu de MPPs invariavelmente tem llWullidades maciças de d;Ldu~ a prllcl'~~ar. "nrita~ vei'e~ d .. ordem dl' terabYlcs. F(~es dados devem ser dislrillUrdos enlre Ilmitoll d iscos e pre1.:isam ~er movidos pela rn6quinu i\ grande vciocitlalle. Por fim. uma outra t]ucsti'io espcdfica (Ius MPl's é SUl! Mcnçãu com a 10lerância à falha . Com milhares de CPUs. váriao: falha~ pur SCIIIlLnl! são inevit;íveis.l\bortar uma execução de 18 horas porque UIllU CPU falhou é inaecil ~vel. em especial quando se cspera ter urna falha dessas t(xI" semana. I\ssim. gl'llndell MPPs scmpre têm hard ware e software especiai .. para moni torar o sistcma. detectar falhas e recuperar-se dela., sem (lIbre((alto(. Se bem que seda interessunte cstudar os princfpios gemis do projeto do MPP agnra, na verdade não h,í muitos prindp;os. No fim dus ~ollla s. UIIl MP]> é uma coleçilo de nós de coml)Ula~~i1o mai~ (lU l1Ieml( padmTli7.11dos. COllectados por uma interconexilo muito mpida dos li ptl~ 4ue já eSI\lda[ll U.~. Portanlo, elll VC7 di~o:n. "
BlueGene Como 11111 primeiro exemplo de UIIl pflleessadur maci\'arncnle paralelo. Cl[all1;lI;trCI1lI)'; (Igora o si"lcrmL BlucGene dl! IBM . A 10M concebeu esse projeto ell1 1999 corno um supercomputador maciL,"umerne paralelo para resoh'er problemas COI11 gmndes quantidades de cálculos em áreas das ciências da "ida. entrc uulras. Por cxcmplo. biólogus acreditam 4ue ti e~ trut ura tridirnensiom.l de uma protchm detcn11i l1a ~ua funciona lidlltle. porem. calcular" C~ll'Ulum ~I) de umA 1X-"
c PU de cálculo Unidade de ponlO flutuamil
-
~ ,\
-
~ FPU
figura 8 .32
Chip de processador sob ell~eClhcaçiio
Caches LI
Oeste ..-
,
/
-';-
.. / '"',
e
BlueGene/l..
"
. Escuta
FPU
-
~: f.. O
NuCI6Q de
Powe,PC 440
FPU
oros3D
•o
..••
C.acho
O
t
~
C8$1
~
"ruoh. U! , ; J
e- ,
q
~
~
0e4MB
~
'"'
M
erf8f.8 pllrB
Chlp especial
~-~ ~~
\
Nucloo de PowerPC 440
M
Para cima
Norte
~
Leste
Para ~ DOA SDRAM
,
na pla ca
••"o ~
•a
~
eo
u
CPUd e eomU,jlCaçAn / Para Ullixo
Elhernel
A ~ e~{ nJlum.; do~ d lJi~ mítleO!. dI! C P U no chip ~ã() idênti cas, ma:. dC.\olilladas a ~erel1l pmgralH a d H~ til: modos diferentes. Urna dd:11> é para cá lclllo: a outra é para manipular a COtliUn1côlção entre os ó 5.536 nós. 1I :1 lrê:. uivei!> de cache presentes no chip. O primcirn nível consiste em urna cachl! 1.1 dividida com 32 KB para ill:>lruçncs e 32 KB pllra porque os núcleos Powerl'C ~ ~(j pad rnn iLadn~ não as suporiam e foi decidido usar ~)s mícleos sem modifi caçii{l. O segundo nível é uma cache unilkada de 2 KB . Na verdade. as caches L2 sfio buffers de busca antecipada, e m vei. de c!>illl, 32 crus de cálc lllo - por placa. Visto que c3da cartão conlém I GB de SDRAM , as p hlea~ contêm 16 GB por peça. lima placa é ihlslrm!a nu Figura 8.))(c). No nÍ\cl segu inte. ]6 dessas placas são cOllcet:ldas na pane de cima dc um gahinete t! outras 16 ),:10 conecla( I
5T2 MB
~
~
;;1] i
figura 8.33 BlueGene/L. (a) Chip. Ib) Ca rtão. (e)
:;
Placa .
(dI Gabinete (e) Sistema.
Cnlp:
Cartao:
~ ~ Plaf.a
2 Chlps
t6 Cartões
t GB
32 Chips
16GB
Güblnete 32 Placas 5 t 2 Cartõas I 02<1 Chlpa 512 GB
SISlema 64 Gabinetes 2048 Placas 32.768 Cartões 65536 Chtps
32TB
(a)
J
(b)
(e)
(d)
(.)
•
'0
••"a • a O'
"
~
~
o
a
"
~
•
u
..'" M
••o ~
•
"8
~
o u
•
~
•
-•"" -
~
•
~
o ~ ~
• " •"
~
o
Por fim , um s i sl ~ rnn completo. que consiste l'l!1 (} era nltn cUllliahi lidade c di s]lonihilidade. Por cnl1~eqii ê l1 cia, lima grande quantirlade {Ie t' lIi l l ~ d ns[J cngen haria foi dedil'ada às fontes de energia, ve ntiladure ~. re~fria m c nto e C:lhe'lIne ntll. tendo ,o1110 ohjetivn 11111 telUl>O médio entre falh~ s de de7 dius. Para ,onectar todos os chip~ é preciso lima ill1 crcOrlc:tão de alto desempenhu, que pn ~~ n scr ampliada . () projeto usado é um toro tridimensiOlHlI que mede 64 X 32 X 32. COI11U conseqüência, cada (,PU pret:i.~a de ~e i ~ conexões, duas pari! Olltras C P U~ que, em termos lógicol>, estãf'l ad11la c abai ;ul dela, au nor1e e an ~u l dcla, i! le~ t e e a oeste deln. E~sa.~ ~ei .~ ctll1exôel> sâo denominadas le ~1e, ()C~tc. none, sul. para , i111:1 e para haixo, respcctivamcnte. na Figura 8.32. Em lermos ffs i co.~. cada gabinete de 1.024 n6s é um toro de 8 X 8 X 16. Pnfe.~ dc g ahinctc.~ \'ilinhus furmam 11111 toro de: R X R X 32. Quatm pares de gabinetes na mesma linhã formam um tu/'o de R X .12 X J2. Por fim , t()(la ~ as 8 linhas fonuam um toro de 64 X 32 X 32. PortalllO, todos os e nlaces suo punto-a-ponto e fun cionam a IA Gbps. Uma \'e7. q ue l'ada um d()~ 65.536 nós temtres enlaces para n6s de ntirneros ' mais altos', um em cada dimensão, a lal'gufOl de banda tutal du sistema é 275 tcrahits/s. O conteúdo de informaçiio deste livro é de cerca de 300 milhões de bit s, indu imlo toda a parte artfstica cnclIpsulllda CI11 forrnato PoslScripl. portamo () BlueGene/L pod eria mover 900 mil c6pias deste livro pur segu ndu. Par:l onde cI:lS iriam e qllCI1l as qucrerin Ii,a C01ll0 cxerdcio para o Ic itor. A comtlnk,u;iiu no toro 3D é fcilH sob a furma de rotclIIncnto Jlor atulho virtual. E ~ ~ a técnicorte de t1ad ()~. há nutras quatro redes de , o1l11l11icaçiio prese nte~. A segu null é uma rede cumbinada C1l1 forma de árvore. Muita ~ das operJ,õe~ reali7
Red Storm Como nosso segundo c:tt;'.mplo dc UIll MPP. V;\1n t1~ considerar li lT1 ~ qllinn Red Stof1ll, também deno lll iuatl:J Martelo de Thor, do Sandiil Natiunal Lilhoratofy. O Salldia é opcr:llln pcla Lock.heed Manin e t' .~ecu t a trabalhll~ conIidel1d:1i ~ e niio cOl1litle nciili.~ para o Depart:nnento de Energia dos Est ados Unidos. Parte dn trahalhll con lide ncial es l <Í relaeil)lIada ao projet o e à si rnula~· lio ue allnas nucleares, que exige alta capac idutlc de l'ákIlJ (J~. O $ andia estr. nesse ramo h ~ mil ito tempo c produziu mu itos ~ upcrcorllJlutadnre ~ tlc tecnolOBia de l}llII!:1 an longo dus anos . Durante décadas deu preferência a ~ upcrcomputadorc~ vCTOriais, lIla ~, cnm n te lllpo. a tccnologi n e
u eeOIlOIlUU turn:.rulll " ... ~[ [ )P ... mai!> cfeti\ os em eu~ IO . Em 2002, o MPr exblCllte na épOCôl, dellomin;H.lo ASCI Reli, elolava ficando um P{\UCU enfcrnlji,do. Embora tive!o!oC 9.460 n6s, eolctivumente delo ti nham mem!> 1,2 TR de RAM e 12.5 Til de ~~pa~, l de 111 ),"0, t: o )istema mal conseguia produt.ir 3 ter:lnops/scgulldn. POI1fIlUO, no verão de 2002, tl Sam[ia eM:ol heu ,I Cmy n cseurch, uma faorieantc de supercomputadores há muilO tempo no men:adu, par.t COIIS truir um ~ u h~lillLllI para (l ASC I Rei! . O ... uh3litUlo fui t! tU rcjltle em agml0 de 2004. um ciclo de projeto c illl p l c Jll C n1U ~:ã() cxcepcionulmcntc eUl'tn panl um:. má,[ui na de !iiu grande [mne. A raLilo por que n computndor pôde ser pwjewdo e entregue com tll1l1unlm (;IJlide.t é que I) Kcd Senrru li!> .. (I UU~ que !oomente peça... de pruteh:i nl, exceto para um dos c hips eS!,lCc1l1huelltc 11 1110t.. do ... u...aJo p,lra rute;UHell!!). A CPtJ e... colhldu para I) Ked SlOnn foi ti AMD O l)tcron . A Opleron tem diversa!> clll1lclerí!>tictls fu ndamenlais que influcnciaram li !ouu e!>colhu, A primeim é que dn tcm !fê!> modos opemcionnil>. No llIodu herdado elu c:xccu tu progrumlll> hinários plIllri'io [lclu ium sem m(xlificllç1io. No modo compalihilidade, n !>i!\lellla opemciollul execut a em mudo tH hih e pode endereçlu' 2M bylcs de mem6ria, Illll... pmgramas de lIplicação CXCC UUlrll em modo 32 hih. Por tim. em IlII.uU 64 hu !>, [I 1II.lllu iml inteira é de 64 hits e l odo~ o~ pmgnllllus podem t: ndereyllr todo 11 espuço de endereço dI! 6-' hit!> . Em JIlodo M hits. é possfvel misturilr e combinur ~O ft Wilrt:: programas de 32 b it ~ lo! progr:lJllas de 64 b it ~ jlmkfll exccu!ôU un mc: ... lIlo tell lpU, () que permi le UIII f;lei l CU1lli nho de utu ulizaç1lo. A segundu cUlol!;terfstica fundamenlal que tl Optcroll1em é SUtl atenção ao prohlclll u da largura de bandu da mellllkia. Nu~ Il lt im"!o ano... , as C P U~ eSlão fi cundn cudll \'CL Hlil is rápidas c 11 mem6ria n50 consegue aC(llll p" nh ~ lu!), o que re ... ulta em grande 1'N!lliIlidade 2- -1 GB. COlll udo, à medida q ue a memória fi Ci! mais barata, nno há duvida de que mais scr:\ adicionadu no fUluro . Uma ulUlIlitaç30 par..\ Opl~ rollS de lIlíclcos duais IlImbém é umu 1l]>Ção. o que duplica fi c:Jpacidade bru ta Je compu1açJlo. Cada Op!erun telll !>cu próprio processador de rcde dedicadl), denominado Seashll'. fuhricado pcla IBM. O Seastar é um culllpUnCll1 e crílico. lima ve7. que 'Iuase todo o tráfcgo entre os procc~sadores pas~;l pela rede $caSlar. Sem a in1cr~II IlCX:l(j de alt a wlocidade oferecida pnr esses chips fabricados especia [mcnte, o sis1ema ra pidmnenlc fiCaria atolado em dadj)~ . Emb(lra a!> Optcmm c... lejam disponfveis no comércio como mercadoria dc pratc h: ira. o I!mpacolamento du StOml é fabricado sub encmnenda. Cuda placa Red Stun ll conté m quatro Oplerons, 4 O R de RAM, . um pmee:.sadnr RAS (Reli:lhl lily. A\'ailabililY, and Servicc - confiabilidade. disponihil idade e serviço) e um chip Ethemel de 100 Mhlh. CIIIllO Illo!>tra il Figunl 8.34. U m conjunto lIe Oi 10 placas é conectado a um painel Ir:l:.dro e inserido em uma ponu-canõcs. Cada gllhinctc contém Irês [lOn a -Côlr1ÕC~ para UIll lot:ll de % O ptcrons, Jl1:1is as fontes de energia e vellliladures necessários. O si5tl!lllil completo con~l'le em IOH gabinete!> panlllól> de cálculo, () que dá IImtolal de 10.368 Opternns co m [O TR de S DRAM . Calla C PI J "'lí Icm acesso fi ... uu própria SOR Ar...!. Não há nenhuma mem6ria çom]l:lrtil hacla. A capaddude leóricn de cllm]lulílcàn dn siSlema é de 4 1 leranops/scgllndo. A inlcn:onexãl l cntre as C P U~ O ptcron é feita pelos roteadores Scaslar. UIlI roteador I)()r CPU Opteron. Elus ..;in coneclad ..... cm HllIlnro 3D de tamanho 27 X 16 X 2~ çllm um Seastar cm cadu pOnto du malhn. (' .. da Sl!lI~ t ar tem !>etc I!nlacel> bidirecioml.il> dc H Gbps nas d ireçi'\c!> /lorle, leste. sul. oeste, p:lnl Imixo, pal1l cima e pam a Opteron. O tempo de trânsito entre po nlos adjacellles da malha é de 2 microsscgundos. ['or meio do cunj unto intel· rll de 11m. é de illlt:ll.I:. 5 IIlicro!>scgundos. Uma seGunda rede que usa uma Elhernet 100 Mhps é uS:ldu para serviço e llIanule n ~ão.
SORAM de 2-4 GB
// ( -:;
:'=/,~/r~~~~/~-I ·l/""".·a'.... ' Iuur. 8 .34 Pacole de componenles do Red Storm
("ª
V/
.--T- . f'ofla 'Cllfl08s
/ ~fon Elhemel 100 Mbps
~Iar
Gabiflele /
j
1/
li)
cn
M
•o
•
• •
·
~
•• o
"•, ~
8 o
u
•
"•
,·• • ,
~
"
"
.. o
o ~
•
u
I
'" FIgur.8.35
-• •• o
~
"8
~
I DD§O CC [] [] [] O§O[J [] Dooao 00 00 D§ 000 00 00 § oo
N6 de EIS 11 81.VIÇO
DU
Sistema Red Slorm vlSIO
a~
de cima..
~o
Comutador
Nó da \C\JIO
00000 00 0 000000 0000000 '------'
0000000000000 00 00000000000 0000000000000 , " y
28 gllbi08tes
52 gsbinlle8 comuláYehl (4 992 OpIeron.)
Y
Armazenamento conrideflr.l8is de 120 re (2888 Opterons)
00000 00 0000000 00 00000 J --y--
DO DO 00
28g!blnotos "li<> oonIidenclal. (2 _688 Opterona)
Armazenamento <.Se 12OT8
o
u
• •
~
-•" -"
~
w• o
~ ~
• C • N
-
~
o
Além dos lOK gabinetes de cúlculo, u .. islcnw também c,;untém 16 gabinclc!1 parn procc~ ~ l,dure~ dI.' EIS c de scrvi,o, Cada UIII desses gahinetes contém 32 Optcnms. Essas 5 12 CPUs silo dividida.. : 256 parlll3JS c 256 par'l Sl'n i~·o. O resto do espaço é para d iscos. (lllC Sãll organizados corno RAID 3 c RA II) 5. cada um CUIIl um drivc de paridade c um snhressa1cnte de cntruda automática. O espaçtl tolal de di~ç(J é 240 1'B. A lôlrgura dc handa ~u ~ l e rll a· da e m discu é 511 Gil/segundo. O ~i~tcll1u é rqlôlrtidu e ru seç(k'õ conFidendal e não conFidenci aI. eom ctl lllut;l dore~ entre :l~ pm1 e~. de mudo que ]1lKlcl1l ser acopladas ou dC!'ôlt:npludlls mecaniCAmente. UlIltotal dc 2.688 c r us de t:álcu111 e~ t á ~l' mpre 11:1 ~cçi1n cnnlidcndal e tlulnl~ 2.6RH sempre na sc~'ão não conlidencial. As rc.laanlcs 4.992 CPUs de cálculo pudem Sl'r ctlIllLltil,la ~ parti qualquer seção, corno dcmnnstm a Figura 8.35. Cada uma da.~ 2.688 Optcffins co nlidC llciôr i ~ tcm 4 eC i almcJlte COJl ~ tru rdo . O ediffcio e u It'c:rl forntlL projetuuns Ile modo que II sistem!l possa ser :unpli ado pllm até 30 mil ç l' U ~ no futuro , ~c for nccessário. Os nós de c;ílculn consomem 1,6 mcgawatls de energia: (IS di scos COllsumelll lIlai ~ um IIlc!!awau. Som:nulu o~ \'cnti);rdores e os aparelhos de ar cnndicionadn, o pucotc todo usa 3,5 ~HV. O hardwôrre e o software du compuladnr custaram 90 milhões de dó lare.... O edifício e o \i~ l e ma de re fri geração c u ~ t aram mais 9 milhÕCs. por1anto, o custo lolnl fi cou um pouco 3baixo de 100 milhiics tlc liÍllnres. cmhora lIUHI parte dessa quanliu seja custu de cngcnhari a não reconcnte. Se você quiser encomendar um el one exuto, 60 1llilhtle~ de dólares seria um oom nú mero parn pensar. A Cruy pretendc vender versõcs menores do si<;telll:l a outro~ gtJ\'cr!lUS e a clientes cumerciais sob fl nome X3T. Os nós de cálculu cxecutam um núcleo leve denomi nado ClIllImount. Os nós de EIS C ~C rt'iÇfl c-"tcUI:lIn u Lin ux normal com ullla JlC
Uma comparação entre o BlueGene/L e o Red Storm
o Red Slorrn e tl Bl ucGcnc/l . são c()mp:lr~vei s soh ccrtos aspectos, porém úiferen tes soh OUlroS. portlllrlO é intcrcssunlc colot.':II· lIlguns desses parâmetros fundam cntais ludo li Indo. t'0ll10 aprcsentado tlH Tabe la 8.5. As duas máqu inas foram construftlas na mesma éjKx::r, portanto suas diferenças não ~e de\'ern à tecnologia , mas r..... diferentes visões dos projetistas c. até certo puniu, 1'rs d ircren\'as entre o.~ fabriea ntcs. IBM e Cl'ôly. O Blllc(Jene!L foi projetado desde ti inkio como uma Tlli1lluimt comercial. que a j 11M espel'ôl ... emkr em !!T:lndes qU,Ult idades às emprc s:l.~ de hintecllolugi;r, farmacêut it:as e outras. O I{cd Storm foi construído sob conlr:lIn cSI}Cci al com o Sandia. embora il Cray tamhém planeje eO T1 ~ t ruj r uJIla "e rs~o menor para vcnda. A visão d" IBM é clara : combinar lIIíc1etl~ t'x islente!Õ para eonstnlÍr um chip especial que pu""a ~e r proou7ido e m massa a baixo custo. execut:rr a baixa velocidade e ser inlerli(laclo el11 mímeros muito glôurd~' ~ us:rndo uma rede de cotl1unica~ào de velocidade llIodesta. A visão do Sandia é igualmente clara. mas diferente: lt~ar umil rudero~;r CPU lle 64 bi ts de prateleira . projcwr 11m ('hip de I'IIl cador mu i\() r~ pid o e m; n~sce nta r lt mu gnrnde quantidade de me mória para pr(Klu 7.ir um nó mais poderoso do quc o BlueGcnclL, de modo 'lUC UIllU qlllrnr idade menor dcle ~ ~c r(] necessária c a {,olHun il'm;50 e nt re e les será m:l is rá pida. As CO n ~C(liiê nd as dessas decisi'>c<; se rcneliram no empacotamcnto. Como a IBM consmriu um {'lrip e'ipecial combinando pnICess.ador e ro teador, conseguiu urnll densidade de empacotamcnto maili alt:r : 1.{)24 CPl Wgabinete. Cumo () Samli:t prefcriu um c hip de CI'U dc pl1lteleim, .~C Tlt rttod ilicaçãu. e 2-4 G U (Ie RAM por 116. eln ~(i etl ll ~C gui u colocnr Y6 CPUs dc C()tllputaçiio em um gabi netc. O rcsultuclo é que o Rcd SlOrm uc upa tIIlti~ c~p;rçtJ e conStlTUC m:tili energi a tIo que o BlueGcnefL. No mundo exótico da cOlllputaçào de laooratóriu de 5mhil\) nucional. o iml>Or1,mte é ti tlc~e rllpcnht). Ne~~e a ~ l}Ce t o, o BlueGcne/L gunlm, 71 TF/s contra 41 1'F/s. llIas o Red S loo" foi projetado pura ~er c x pan~h'el: pnflutr!tI, ac re.~ cc n tando ntni ~ 10.368 Opte l'Uns ao prohlema - por cl!e rnplo. mudando paro chipç de mícleu tlU:I!
IX)
'" M
•"" o
~
,• ~
8 o u
•
~
•
",•" , "
"
~
'.• o
~
N
C
•
~
o"
De moúo gemI, os duslcrs são cor~u nlos pCI]uenos. n3 failt
Google O Googlc é um s1'11cll111 de tm~ca popu!ur para achar informações na In lcmct. EmUurn <;11;1 popularidade seju IlcVl,l:I . em parte. à sun interface simples c lcmpn tk re.~ l lO<;ht rápido, seu projeto n;io é nada .;implciI. Do pontu de " istn do Google. I) prublema é IllIe ele tem de m:har. indexar e armllzcnur ItX]:lll World Wide Wl'b (nwi<; de 8 oilhüc~ de prtgi nas e I bilhão de inlllgens). ser c:'paz de pesquisar a coisa toda em menus de 0.5 <;cgundo e manipular milhares de cunsulta!ilsegundo que vêm do mundo inteiro. 24 hmo'l por dia. Allcl1lai~. ele n~o poclc p:llar l1unca. nem mesmo em fa ce de terre motos. llueda de cncrgia elétrica. queda de red!!.'! de lelecomllnica~tlC ~. falhas de hnrdware e bugs de softwnre. E. é claro. te m de fazer tudo isso do modo mn is barato l}Ossfvel. Mt1ll1;lr UI1I clone do Ooogle (lcfiuitivlUnentc não é um c:<erdcio para o leitor. . Como o (lnogle consegue', Para cnmec,'ar. o Goo!,-Ic opera várias centrais de dados no mundo inteiro. Além de essa aborda~ern propurcionur bm.:k-ups no caso de ul!lulIla dela'l ser cngolidll lX1r ulllteITCmnlu. ttuando o 11'11' 11 .800Xll'.wm é consu llad\l. II endereço 11' do remClelllC é insl>ecionudo e é fomccido t) e ndereço du centraltle llados mais prliximu. E é paI"!! lá que o brow ~er envia a consu lta. Cad.. central de dados lem. no mínimo, urna conexão de libm ótica OC-48 (2.4R8 Ghp'l) com a Intemcl. pcla Illml recebe consuhas e envia rcsl>ostas, bem como uma conexão de back-up OC-12 (622 1\-lb,,'I ' com 11111 outro pruvedur de telecolllllllicõlçflCS diferente, caso o primário I"alhe. I-lá fonte!' de enel"gia I'mtegidll~ contra intcmlp,'ão e gcmdores a diesel de emcrgência em tndas us centrais de dudo'i para manter (I espet,Íl:ulo em l'cna durallle Ijl1cda'l til' energia. Por conseqüência, quando acontece um grande desastre ualur,,!. o desclllllCnhv ~lIlrcrá, nw ~ ti Ooogle eonlimmrá fum:iunundll. Para cntellller melhur por qlle o Ooogle e~colheu essa anluilctura. é bom descrever re~\lITliilmll c ntc cuml! 1I111a con1õulta é [lruces~ada assi m que Chl.'!ll! à sua ccntral de dados designadu. Alx'IS ehe}!.ar ~ cCTllrul de d ado~ (elU,,:1 I Uil Figura 8.J6), o hulanccmJordc carga rotei" li consulta para um dos muitos lI1aniljl1latllll"e~ de c()n~uha~ (2) e para o rev isur ortogrMico (J) c um servidor de atHind(ls publieil:iri os (4 ) em pnralclo. Em:io, U~ plllnvrw~ procurutlu<:. ~ãll Pcsllllisadas nos ~c r"idmes de rndice (5) em puraleltl. Esses servidores conlêm lima cnlr:.ltla para cada palavnl na Web. Cnda e ntrada relaciona lodus us doculI1e ntos - páginull Web. arqui"o~ POF. apresentll\'iies Ptlwt:rPoint etc, - que coruêtn 1I p:llnv"" organizudos por importância da página. A imptll'tílllcin da página ~ tlctcnllirmda por lima fórmula complicada - e secreta - , lIlas o númcro de rererêllci .. ~ pura uma página c smlS rc" I)t.·cti vl!~ illlIX)l"tR"c in~ lIcsem l>cuham um grande paltd . Para obter maim desempcnho. o íl\llice é subdi"idido em l}Qr~'ões dcnomi rUldu<:. rrllglllcntos que podcm ser I:tCS(IUisadas em pnnllclo. Ao menu'! em lennus concei tuais. li fragmento I contém todas as I'lIlu\ r:t~ nu fndice. sendo que cada uma delas é aeomp:mhad:1pelos IUs dos 1I documentos de importnncia lIlai~ alta que cuntém aquela palavm. O fragmentu 2 contém tudas as paluvras e os IDs dos" documentos de importância mui<õ IIltu scguintes e lI~'Iim por diante. A. medida quc a Web cresce, c:rda um desses frllgmcntos podc scr su lxlividido ma i ~ I:lrtle. CIlI1l a~ primcims k palllvnls cm um cUlljunto de fmgrnenlos. ;1'1 seguintes k palavrus em um sCf.u ndo conju nto de fragm e nw ~ e assim por diante. de modo a e\Jnseguir eada vcz mais paralelismo na busca. Os servidores de índice retomam um conjullto de identificadores de d()cumento~ (6). que então s,io '-'u mbinado~ de acordo cum as pmpriedades booleanas da cOllsulta. Por excmplo. se li J'CS'luisa for para +digitul +cupivam +danc,'a. então só os identificadores de doc umentos que apnrecem em todos os três conjuutos são u~adt)ll para 11 prÓXilllll etapól.
11
3
Servldof --, de anuncio! I
Revisor
Oilogu\lico
Flgur.8.38
9
_.P ,~. ~;;:-
Processamento de uma consulta no Google.
f ~~":~:'l
_
.n.I1ZJI .
_
' ''1f).0095
_
5
7$OOl_1.
:.
_
10'.[6<3
_
oII03n."'"
_ U lIl.llaU f _ _ S1J<1 f3OI2.
8
,>
servldo" 1
rdll docomenlo5 8 7
Nes~a ewpa, (7), ti, próplim doculllenlOs ~i'iCl rden: ndados pólra extrair seus trtul m, IJI{L e pl!dacin hm dc texto que c..:n.:mll ( h termos d..: Pcs1luisa. U ~ s t:r" id orc~ de dOCUIllClllOS contêm lIlui ta s CÓpt:l~ de tnda a Weh e m c:.da cenlrallk d a ulI~ . '1111.: hoje !>50 Ct:nl elHb de tc rüh Yh:s. O ~ documento!> també m ~ jj() di vididu!> t: 1I1 fra gmc nh1!> par,! mdhola r a p e~ qubu par'ltela . Elllbura o prm:eSSilmentn de cons ultai> ni'iu ex ija a ldtura da Weh inteira (ou :It é m Clomo a ki tufa das dezenas de terah ytelo nos serv ido res de índice ), tc r dt: processar I()() MU por pC!>C)UIl>U é normul. Qu:mdll I" rCltu lllldo.., são clt:volvi d(ls ih) rnunipulador de consu lt a!t (8), as pági nas encout radas silo reuni dus c daio", ifil,;adu", por imJlonilnciu de páginu. Se forem delcctadus potellc iui s erros de o rlogr:lfia (9), d cs !t50 unundados e ..,i'io adic ionudos amíncitls public itário.'! relevuntes (10). A present ar propa gundn de lIn\ll\ci:l nleS inleressudlh em cOlll prar te rmos específicos - por exemplo, ·hutel ' ou 'cameorder' - é o modo como Cl Goog le gunllll M!U dinheiro . Por lim , os resultadoio são fo rmatados em IlTML (ll ype rText Mnrkup LllngulIge - lin gu:lgelll de montagem de hi{X'rtcxto) e enviadu!> uo usuário co rno uma pági na Wch. Munido1> de..,sa!> Informações básicas. agora podemos examinllr a unluitctura do GU(JgJe. A maiorill tl us l!lIlpresa!>. quando clln frotlC adllS cum um imenso tmncO de dado!> , taxa de truu1>llIissão maciça e li neces!>idadt: de aha contiabi lid:lde , l;umpruria (I cqui))amento mai or, rlwi.s rápido e mui", c(ultiável cX iStenlc. no lIlercado. O Googlc. fei' cXllliJllleule II oposto. ('IlIllProu PCs harmos, de desempcnho modesto. Muitos dcles. E, com eles, montuu (I maior cllbter de prateleira do llIundo. O princfpio diretor dessa decisi10 foi simples: olimizllr prcço/desempenho. A 16gic:l (IUC fundamentou es..,a deci são está na cconomia: PCs normais !>ilo muito bmatns. Servillorcs de Ull:l tecnologia nüu silo e grandt:8 l1Iultiprocessadorcs, Illeno!> ainda. As!>ill1. conquanto um 1>Crvidor de :Ilt a tecnol ug ia puck:sse tcr tlua\ ou trê~ \'ele!> u deseml>cnho de um PC de l1Ie~a médio, nllrmalmcnte seu preço scna 5 a 10 veles mai s alto. o ljUe niiu é dicientc em termos de cuslO. ('Iunl quc I'C~ b;mllo.., falham ma i!> do I]lle servidorcs rle [01'0 de linha, lIlas I)~ IHlirllUS tamhém falh,lIll , [lorUlntu {J softwa re do Onogle tinha de ser projetado para fun cionar cnm hard ware que falha va, n1\n import,meln qual equipament o e~ ti vcio~e lI.., ando. Uma vez escrito n sllflware lolerante a f:llha !>, na verdade não impnrtuva que a !lixa de falha fosse (), 5 ~ por ano (lU 2% l)Or ano, elas teriam de ser Ir:lladas . A experiência do Gc>oglc rli1. que cercn de 2% dos PC~ fulhlllll por ano. Mais da melade das falh .. , ~e dcve a rliscos defei tuosos, segu idos l)Or fontes dc energia e chips RAM . Uma Vt:l' con.'!t nlfdas. as c r us nunca falham . Na verdade. a maior fonfe de qucdas não é o hardwa re: é o loOftW:lfI!. A primeirn rcaçào a ullla queda é npcnas rcinic ialií'llr, o que Illuitas VC7es resolvc o pmblenm - é li equ ha lcllIe d etrônico dc ulIllllédicu dil.er: "T\)l1lc duas aspirimls e vá pam:r cama". Um t(plCI) PC mudeml) do Gougle con siste Clll um Pelllium de 2-GII 7., 512 Mil de RAM I! um disco de cerca dI! MO Gil. I) t i]"lo de Illilqll ina lluC uma uvó compraria para verificar ocasio nalmclllc scu c- mail . O únicu item CSI:k:eiali/ado é um ehip Elhcruel. Nlio exutamente um chip de líltima gemçiio. mas um chip l1luito haratu. Os PC!> ~:10 UC(lmlicinnadn~ cm caixa!> de I unidade dc nllur3 (ccn.:a de 5 cm dc e ~ pessurn) c cmpithndos em gnl ) us dc 40 em estantes de 50 ccntil llctroS, um:! pilha na frente c uma pitha atr:ís. no tOla I de NO ]les por I.!~ tnllt e . Os PC.., 4ue c~ l ãu em lima e~ tant c loàu conectados por Ethernct comutlldu e o comutador está dentro da e!>t::tmc. A ~ estantes em urna centru l dc dlldn~ tUlllhém sao eonectadllS pm Ethcrnet comutada, com dlJis comutadores redllud:ulles pur cenlml de dj[dl)~ UMulOl. para ~ll hrcv h er a fullllls de comutadorcs. (J la )'oul de UIIIU típ le .. central de dado1> Gnogle é ilu slr:lClo II U FigunI M.3? A libra OC-4 H de a lta largura de h:tnda de elltr:IlI,1 é ruteada~l)ara cada um de dni!> cnlllutadores Elhe rnet de 12M porl:Js. De lIlodo scmc] h:lIIte, a fihra 0(' · 11 de back up tamhém é roteada para cada um dos dois cOlllut:ulores. As lihra!> dc entmtla usam car\ôelo c1>pec l;u!> ti.: entrada e ni'io ocupam nenhum:1 das 128 portal> Etheme!. Quatro c nl:l ce~ Ethernet 1>aem Ile I.:ada ':iot;ulle : doÍ1> !lilr;1 \) I.:ornut ador da esq uerda e doi!> para Il cOllluladnr da direita. Ne!>sa ctlnliguriu,,:i'io, () sistcm:1 pode ~ !1hrcv i h:r a lalha de llualque r dos doi s COllltHaclores. Uma ve/. q ue cadu CSta llt .: tCIIl 1luatro concxõe!> co m n I,;orllu tudor Idoi!> d ll~ 40 PCs da frente e dois dos 40 PC!> ele trás). é preciso quatro I"alhas de cnlace ou dll a~ falh a!> ele e nl:l':c e IlIn" de ClllllUladur para limr uma estante de linha. Com IIIlI pa r de cmn\ltadure~ de 12ij purt"1> e quatro cul.".:.:.., de cada estant e, at é 64 c.'!t;JIltes podem scr SU)>ortildilS. Com NO PC!> por t:s tantc, uma central de dadllS P'K!c ter .ué 5.120 pes. Mas, é claro. as estantes nào têm lIe conter e)l,atalllclltc /':0 PCs c ns cnl1lutad nrci> pudem ..,er lIluiorc.'! o u menores tio (I"C 12M portas; eSM:!!> lindos são apenas dado típicos de um c!Ulo· ter Googll.!. A dellltitl!lde de energia talllhé m é uma qucst5n fundamenlUl. Um PC lípico uti li7.11 120 W:lt\S, ou cerCIL dI.! 10 kW IXl r e~l:JlIle . Um:1 C ~ lanl e precisa de cercu de 3 1Il ~, pant (lHe o l"lCs!>llal de manutcnçãu possu inlttal",. e remover PC.., e par.! p:u·âme tros dão Ullltl densidade de energia dc mais de 3.()OO wau~rn:!. A m:liori.1 d:l.'! centrui.., de dados é proj etada par.! 600- 1.200 walllllm1 , ]>onallll) são nceeiosárias Jlledida~ cSI)CCiai.., p:ml rc frigcroif tl1> clotantes. O Gongle upremlcu t!"lh coisas sobre executar se n' idore~ Web maciçns que é hom 1"C)x:tir:
1.
C() I11PC:>n CII I ~~ fal ham, I>ortamo planeje" (:Il ha.
2.
DupliC"Jlle tlld() pafil Illlllller a vazão e ütjllli/.e prCyWdéSernl"lCnho.
3.
li
disponihilidadc.
O primeiro hcm diL que você precisa fer soflwure lolerall1e a falha s. Meltlllo com () melhor <101> t:(luipamenln.." !>e \'ocê ti ver ulIIlllimero maci'io de componentelt. algullI falhará c o software tcm de ser capal de trotar li erro. Quer você Icnha ullIa fatha pur ..,e rnana ou fluas [ulhas por ~emana . com 1>blClllaS desse tamanho o software lem lIc ser ca ll1ll. de IralHr e !>~,,~ fiL lha.). •
m CO M
•o
• • •"
~
••"o
.., ,•
~
8 o
u
..,• •
,•" •
o
·• o
o. u
o
~
I'bra OC-48
'66·~==rr
'" M
•"o
Comutllclof Grge.b
~
I
,• ~
Dois ftnll*CeS ,.. Glg!lbit ElhElrner
8 o u
• • ,• ,
~
'.•" -•"
Fluura 8 .31
Cluster Google Upico.
!Jl!J
~
[!J[l
[ !DI".
r
/' Estanre com 80 PCs
~l!J~[:]~~ Ô • • •
"
w
o
·•
~
••
.
m
O
() ~cg undu item indica que umoos, hardware e software. têm de ter alio grau de rcdundându . Alérn dc melhomr as propriedades de tolcr.illCia a ralhas. isso também melhoro a vazão, No ClISU do Oooglc. o~ pes, \'i~CH'l. l'l\I)()S c '011111111dores são hx!tlS replicados lI1uila.o; vezes. Além do mais. Q rndice c os doemllentos são sulxli\ ididu'l elll fragmentO!' e \,.. fragmelltos são muilO rcplicm.los em cada ccnlml de dados e as próprias ttntrais de daljos \:lIllbém <;30 repliC4IlJas. O terceiro item é unm cunseqilênda dos dois primeiros. Se o sistema foi projetado corretamente para lidar com falhas, Comprar componcntc'l curos como RAIOs cum discos SCSI é um erro. Alé ele~ fulh
8.4.4 Software de comunicação para multicomputadores Progrnl1lar UII1 IllUIlko1l1putador requer soOware especial, uSllô1 lmente biblioteca... parn m:m ipl1lar a COll1tlllil.':!· çào e li sincroni zação entre processos. Nesta se~'iío vamos fala r um pouco sohre esse softwnre . Nu maim;a da~ '·ezc~. o.~ 1I1c~rnos pacutes de software e~(:cutal1l em MPPs c cluslers. l;tOrtanlo é fácil l;tOrtar nplicaçt>e<; entre plal'lforllla... Sislelll:ls tle troca de Ill c n snge n~ têm dois ou mais processos (]ue executam independentemente um do outro. Por e:<elllplo. um processo pode produ7.ir alguns dados e UIII. ou outrnq mais. podem c()nstJlTli · ]o~ . Não há nenhu · ma garantia de que. qU
2. 3.
Tmea sfnerona de IlIcl1s<1gens. Troca de lIIensagen~ por buffers. Tme:l de mensagens sem bl()(IUcio.
Em 11'0 ('.11 sín('rona de I11 C IISII~c ns , :çc o remetente e~ecu(l1 uma send e o receplor ailllhl u[lo executou uma recoive. o .emetente é bl1X1UClldo (suspenso) uté l]Ue 11 receptor execute umll receive. qLU1I1do cllmu 11 mer1.~tlgel1l é c\lpiada. Quando o remetente obt iver novamente o cOllll'Ole "pós a chtl\lIad:l. ele sabe (]ue n lIIell~:lgern foi e nviada e COfrel:1fI1Cllte recehida. Esse m élOd t1 é t) que tem 11 se ll1~ntic a mais simples e nào requer nenhuma operação de bufo fero Poré m. uma séria desvulltagem é t]ue o rellletente pcnllanece bl{l(lueado até
ElIl lrtlCll de IHcllttagcns sem hlollllCitl, o r~ll\e l cJltC. tenl pe rmi ~:.ão pura cnnt inU\!lo quando o ourfa estivcr d i~pL)n í \'d . Nenh ullliI dela:. simplilicõL" l>\lftv. Me. logo adillllle \:I.I I1i1l1 dbculir brevemcnte um si~tc n'i' popul:lr de troca de Illen~agem di ttl:HlIIlVel elll mllittl ~ multiemUpllIlIdLlrell: " to. 1PI .
MPI - Interface de troca de mensagens Dur,mte mU il()~ ant)l>. u l},Icme de cOlllun kai(lin lIl~i s pLlpu lar !lOIra lIlulticomputadnrcs foi il 1'\'1\I (Parallcl VirlUlII ~ liIl:hlll c ) tCJd~ 1 et ai .. 11)1)4; e Sundcrram, II.}!XJ), Contudo, nos ú lt i lll ()~ unos d e vcm ~end {l suhstituído em grande parte pela .\ 11'1 (f\'lcssugc- I'üssing Inl errace - ill lc..ru('C de Iroca d e m cnsagens). A MPI é muito m:lis rica ClIlilillcolll f1kxa du tiL!!: a 11V M , lem muit u lIlui~ clmmadal> de hihliuteca, muito mai s opçõcs c mUlto mais parâ· Illetro:. por chamada A ve r~ iio uriginal da 1\H'I , ugmii dcnominlldu MPI -1. fo i alll pliillla pe la MI'I -2 em 1997. M:lis adi:lIlte tl are mn~ ulHa IIltflKlução muito ~Uci llt il h MPI - I ('Iue contém tod os os aspectos b:hicos) e em seguida come lllllrt!mo~ um pOIU.:{1 () que fo i adicio nadu na MPI -2. Se o leilor fJu ber mais infonmlções sobre M PI , pode CO II · !.uh ar Gropp et aI.. 1')IH; t: Snir et :lI ., 19%. A MPI- l nãu lida com criaçãll ne m gercnciUlIlellto de processo, como 11 I'VM . C nbe ao usulirio criar proces~o~ ll ~;md n chamatl õh hIC,l i ~ de ~is t c Jl1 a. Uma vez crinclos, ns pnICcssos lIão tlfgunizíldos em gI1Jpo.~ c~t~ ti eoll dL.! pro~ cc~!<()~ , que uãu )ão .dlc rado:-. I~ COIll es~e:. grupoll quc u MPltruhalha. A MPI ..! ha,cad.l elll 1luhtm ctll1ceitt)s pri nci pai ~: comunicadores, tipos de dadoll de Il1c n ~llgenl>, Opcru\'t'\ell de comunicação e lLlJlOlogiilS \ inuai s. Um cOlllun icndnr é um grupo de proccs! e dc precisão dupln c a 5~inl por diantc. També m é po:.)f\'e l cOlbtmir uutro~ ti pos ded vados dC!lses. A MPI ~up()nlL Uni conjunto extcnsivo de operações de cOIl1\lllicaç!lo. A m,th h;hica é u)adll paw envillr IIIClba· gens CO IIIO :.eguc: MPI Send(buller, coufll , data....type. deslinaUon. tag, eommunlcator) E:.~"
l haLll.lda elL\ ia ,UI L.le~lIl1a t Mi u UIll butTer com UIli lIlímem r'lJlmt de itclb du tilxl de dadns e)llCellicado. O Cillllr)(} rulUla a men ~ag ':: lIl Ile modo que (I ro.:cl!ptor IlOSsa diLer 4ue ~ quer reccOcr uma meJlslI~cm com aquele r6tu l\l. O lilt imo campo JIIroml,l el1l qwll grupo de pruecs~os cSlá o destinalário (O campo deslilml;ol1 é .tpcnas um fndice pam a Ih t:. de pl'Lx:e~\o~ do grupu espedlkndul. A ChuJllada corre~ p()ntlc nl c para recchcr urna tIIenllagem é:
IIIK
MPI Aecv(&bullar eOtlm, data_type. sourca. lag. communicator. &status)
' 11Ie anuncia que
t)
re .. ..:plof e!
r6tulu. A MI)I ~lIpLl n ll qua tro nlLlLlo!< básicos de comunicação. O modo I é sfncrono. no qU
.M...
•o
• • •
~
••o e ,• ~
" o
"e• •
,• ,• ~
"
'"
.. o
• o,
• "
-. M
.... M
Memôria virtual de compar llkhamenlO global que consiSla Im 16 páginas
•
•"
800 00 [1:1] fiNur.8 .39
Ei paço de endereço
0~
CPU O
CPUl
virtual que consiste lim 16 pilgiTl8S distnbuldas por
referencIar a página la. (el Após a CPU I referenciar a págma 10,
neste CS!lO consldtmmdo que ela e uma página
-
Memória
CPUJ
CPU '
•" " •
"e u"
~
00ITl 000 00[1:1] @]@i 0 0~ CPuo
CPU I
CPU2
I
I
I
0~
0~
CPuo
CP U I
I
I
CPU'
I @) @]
@] @i
· < ~
CPU 3
CPU'
I (,)
• •" •"
~
.,."
00 [1:1]
00 ITl 80 0
@)@)
Rodo
(O)
IIn menle de le ltura .
R.do
1
EsslI uMia há:.ka foi illlplt!mentada pela primeira \e7. em lVY (Li e !-Iuda!.. , 1986. 1989). Ela proporciona uma rnC IllUrl :t Illlalmcnte clunpun ilh'!.da c :>cqiicndu lmcnlc I;fll1Sblcnte em um mullicclIllpullItlor. Cnnlllcll', há mllil a~ olirn i.la~·õcs pl b, í vc i ~ rum I1ld lulfM (l desl!mpenhn. A primei ra 111imizaçi'io, prescl11c elll I VY, é pcnnilir que u) p:lgin a~ marcad:l,> (,:omo Munl!l11 l! de IdlUrtI ~ I o.!ja m jlrc ~ enle~ em varios n()s ao mesmo telllJlO. A~s illl , clUllndo ncone IImil fa lta de págllla IIllla ~ôpi a dela é cnviad.J l)ara u máquina onde ocorreu a falt a, mas .1 original fi ca onde e~HI , .lÚ qUt: n:hl lui Ill!nhU IIl perigo de conl1ilos. A sÍlunçi'i n de dlln ~ CPUs (Iue cllmpanilham umn página ~Cl1l1 e nl C de leitura Ipflgma lO ) é il ll~ lrrl du na FigurII R.J9(c) . M e~ lIL" curn l:,> ~ .1 utimI Laç:1n. () desempl!llho muitas VeLI!S é inacei távc:l, em especi al 'I"ando um processo c~ l á Cl>!.:rc\'cndn ath.1mcutc a l g ulII.1~ palavra!> no topo de al guma página e um outm procc!i),o em uma CI'U difen:llle está c.)Cro.!ve lllln :lt Í\alllclUe algumas palavra!> no final do página. Visto que s() cxi ste uma cópia da pági na. ela ficlIrá em CI III ~ tmll e ir c \ ir. II I1l U ~ ilU:lçãC) cOllhl!cida CUJIlO ru lso cOIll !)urlll hnmcnl n. O pwbl ctllll di . rabo cnmpartilhllll1enlO pode ser Illacado de várias maneiras. No s istema TreaJmarb. pnr CXl,!lIIplu, lIIemónu ~l,!ll lic n e la I IllI,!IU ~ con!oislclIIC é abandonada e m favor da con!>ist! ncill de lihcrdçã" (Anu a, 1(96). P.lgina,> que pode m \cr e~c rilas IlOd cUle ~ tar ]ll'ese nt e~ cm1llúlliplos n6), ao mesmo tellll)(), mas. lml es dc fazer \111m e~cri t a . um pm('e~~() d,,:vc pl illll!iro rcaliz:1r um:1 operu\:ão acqulre parll silluli zar ~ua in t enç~ (J. N cs~e ponlo. 1{ll'las ilS c6pins, exccil) a nlllh recent e, ~â{) ilwalidadas. N~nhum:l OUlr.I cópia pode ser feilollté que s~j a exccllIada 11 release COI'I'C!>pl1nJelue, qualldu cutao a página I)ode M!r cumpartilhatla novamellle. Ilma scg unda Ollml.l açãll fdla c m Trclldmarh é inicialmentc mapear cada página llU!: pode scr cscrilll , e m modl) SUll1e/lh! de IcJlura. Qtmndo a página é e~c rit a pela prinll.:ira vez, llCorre uma fulh a de prtllcçiio e o ~ i S ll:ll1a laz UIIl:l c6pia da p:1Mi na, denominada gêm ea . Então a páginn original é mapeada com,) de leilur:l-cscrit:1 e lIS e~cri l a~ s uh~cqll elll cJo po(km prosseguir :I wda velocidade. Quando ocorrer uma fali a de página remotu mais tarde, e a pági n.. ti ~cr de !>er dt:spachada para onde ocorreu a faha , é reali zada unta compuração jllll:tvra por Ilalavra cntr~ a página corrente c a gêmea. Somente as palavras q uo.! foram all emcl .. s são enviada ~, o que redu .l o Inllm · nho claJo nH.!Il ~ a gcn ~ . Quaml\) ocorre lima falt a de página, a páginu que está raltando telll de ser locali zada. Há várias sol ll ~'õcs pu~~ ívei s , mdllindn ;!S lI ~ad a~ c m mállllllHtS NU MA c CC)MA . lais como diretórios (reside ntes). Nn verdade, muilas das so lu~i'lc~ u ),a J a~ em n SM tamhé m são IIplicávei s ri NU MA e COMA porque, nll re:tlidade, DSM é upeIl ll:' uma illlplcllle lll a~ào e m ~oftwure de NUMA (lU COMA na CASI-IMER E ( Knnt t)[ h a n aJo)i~. t:l .1 1.. 1997; c Sleb et ai.• 1!)1}1). CRL p(lhnsOIl et aI.. 1995), Shasta (Seule), cl aI., 1996) c Trcadlllilrk) (Anl l;I, J<)96; e Lu ct uI. , 1997).
J
·••
~
~
Ro<,
(. )
quatro nós de um
mullicompuloIdo r (ai Situação IniCia I. (uI Após a CPU O
@]@i
" "
~
•
u
Linda SiSlcnlnS DSM buscatlos em p:ígirms como o lVY e () Tre:lllmarks usal.1 n Imnlware MMl ! para c au ~arex(;c ... flC~
••" o
~
•o ~
" o
u
•
~
•
~
•o"
"o "
• o ••
de acesso às p,ígi nas faltanlcs. Se bem que calculur e enviar diferenças ell1 vez da p:igina inteira ajude. pcnmlllcct' () falo (Ie que páginas uno silo UIlH, unidõ1de natural para compart ilhamento. ]lonanlo foram I C l1tnd il~ OUlnlS nbo n.hr gell .~. Uma delas é Linda. que fornece processos em várias nuíquinas com UIIlO! melllória compartilhada dislribu fda com alto !/.r:lU dc CSlntl Urnçiio (Carricro c Gclcnllcr. 1989). Essa memória é acess,ula por meio de Uni peq ueno (:011jun to de openu;õcs pri miti vas que pOOCIIl ser adidonadus í1 linguagens existentes. tal C0ll10 C c FORTRA N, para furinar lin~uagcns paralelos, nesse caso. C-Li nda c FORTRAN -Linda. O conceito unilh:ador rurll.laIlU!n!lll de I ,inda é \l ue um l'Spaço abstr.lto de tuplus. qu!;' é glolwl para o si~ t elll;l inteiro c aces~[vcl a todos o s seus proce~s()s. O csp:wo uc tllplas é corno uma memória global compartilhada ..~6 que com umn certa estrutura ernbutida. O espa~'O de tuplas contém uma l:erlllllUlllltidade de tuplas. Gula ulI1:1 lle1:ls con~is tind u em UIII uu mais carnpo~. Pam C-Linda. os tipos 'Ie campos induclIl intcim~. intcif"lJ~ lougos e números de ponto nutuante. bCIII corn u tipos compostos corno vctores (incl uindo caueias) e eslnltma.~ (lI1as não outras tuplllS). A Figura 8.4U mostra três exc.lllplo~ UC lu pias. São quatro as opcrnçüe5 cfellwuas em tupi as. A pri meira. oul. colocu urna lu pia no e~paço de IUI,las. Por excmplu. out("abc" 2. 5):
~
~
• • N
d
~
o"
coloc:l a tupla ("aoc". 2, 5) no espaço de tuplas. Os ca mpos ue oul normalmente são constante~. variávelll ou expresSilCll. COIllO cm out("matrIK - l", i, j. 3.14): que produz uma tupla com ljuatrn campos. o segundo e terceiro dos quai s são dctcrmi natlm Pl'los \'alorcll corrente~ das vari(jveill i ej. . Tuplas são recuperadnll d(1 espaço de luplas pela primiti va in. Ehlll ll~O eJltlereçath, ~ peJo conteúdo em vcz. de pelo lIIune ou endereço. O .~ ~''' llIpOS de in podem ser eKpressões ou parllmclros rorll1ai ~. C(ln~ide rc. por e~emplo. In("abc-. 2. ? I);
EsslI operação ' peS(lu i~a' () espaço de tuplas em husca de uma tupla composta por umn cadeia ":lhc··. pelo int eiro 2. e por um tercdro campo que contém {jllUl
2. 3 .
O gahari to c a tupla têm o mesmo número de çampl.Jll. Os tipos dos campos correspondentes siío iguais. Cada constante DU variável 110 gah11rito é compatível com seu campo de IIlpla.
Panimetrt)s fllrl11ais. inuicaa:;cado lia idéü, da s:tcula de hueras chei a tle johs por razer. O prt)(.~ess{) plincipal inicia ou! execut:Lmlo um laço que clJntém out("task·bag", ?jOb);
no qual uma descrição de job dirercnlc é produzida pnnl o c~ IKlçn de tuplas a cadn iteraçàll. Cada t'perário começa obtendo urna tupla de descrição de job usando In("task·bag-. ?job);
fin ura BAO Três tu ptas Linda.
("abe", 2. 5) ("matrix-l ", 1, 6,3.14) ("famllia". "é irmã". Carolyn, Elinor)
r ,
4U1;! dI! cntão excetUa Qu.mJo tcrmina , regll uma outra. Além di~~u , novO:.lrah:J lhos podem sercolncudos na Sacolu ti..: tarda:. tlumlllc ,I cXro!cução. D...:.se modo simples. o trabalho é dividido dinumicamelllc cnlrc os opt:rários. c cada IIpcrário é nHllllldll ucupaJo t) tempo lodo. c tudo com rclali\'amelllc puuca sobrecarg;l. b.iSlcm várias IIllplt:l1l1!nlllçÕCS de linda em ~i:. lcma s 1llUl l icornputlld nrt:~. Em todlI ~ das, uma questão fundu mcnwl é cmno dl ~ l rjhuir lI.\ luplas cnlrC a~ máquinas e como lncul il.á-lllS qUlHltlo necessário . EUlfc as várias ]"los)';bilidutlcs C~lã(l bmad,,;u:'ling e diretórius. A repliéaçãtl l:m\bém é uma questão illlpOr1:Ullc. Es ~cs pontos são disculiclu~ CIII DjtlntllUII
(199]).
• •"
•
~
Orca Uma úbonlagclIl um flUI/CO diferente para 11 rlll!lIl~ria companilhada no nfvcl de aplica~:iI(l em um mul1icom[)utal[nr é lL~ur como ulLul,u ll! dc compal1i1lHllllell1O objetu!. \tJt:L!llIcnte desenvolvidos, em vei de apt.:llas (Urlas. Ohjt.:to:. cOII~ b tern enl csllldo il11cnlo (ocuho) mais méwdos ram operar nllqucle estado. Por não permitir que o rmgrallllldur ace~M: li "" ,"Liu dire1amente. são abeI1,1~ militas pnssi hi\idadica companillmtlu. () l> ish:nta bUl>c;tdo e m ohjc\{l) que dá i1 ilu!>ão de memíÍria com panilhada elll sistemas Illulticompuwdorcs é dcnominado Orc'l (Ral, (1)1)1 ; Bal ct aI.. 1992; e Bill c TanenhaulIl, 19810. Orca é \111m lin j;.lIilgcl11 ele programm;í'ítl tradit.:iunal. haM!..da l'11I Modula 2, li qual for.uH adicionadas duas novas caracterfstica:.: objetos c a habilidade de criar n,WOl> prrn:cl>l>o~ Um objeto Orca é um lipo de dados abslnllo, análogo a um objeto c m Jllva ou a um pacote e m AJa. Ele e nr.;ap~ula e~t rutura~ de dados internas e métodos escrilOs pe lo usuário de nomimldos operaçõcs. Objc1Cll> ~ilo pa s~i \'us. l~tU é. não cuntêm threac\s pso, pmcessm acessam o~ dadn ~ internos clc 11m objeto invocandu seus métodns . Cnda méwdn OI d i c nn ~ i S1 c e m uma li~ta de pUfeS (guarda. bloco de declanu;õcl» . Uma 1l1I1ll'da é uma cxprc~ l>ào hOtlleanillluc nãu ":l)ntém ncnhum efeito eolaterul, ClU forem JII/.~(', () prl"C l>~ ll ill\ fll;ildnr é tltral>ndo lué que 11111:1 se lI)rnc /I'I1t'. Quando é etu:Qutrada IlImt guardu que é avaliada como /me , o bl"..:,) d..: dcclura~:õe~ Ilue vem depois "da é executado. A figunl MAl relrnUlUJU ohjeto .\·/(/('k com duas ()peraçÔ\!~. Jlloh e Imll. Uma VCL dcILmd" ~lttd" pudem-se declarar \ariáveb delose ti[>o, como em 5, t 5tack;
que cri" duil> ohjctus pi lha c inicill lil.a da P,lfU a pilha J [lClit dl!daraçãu
•o
li
vllriávd /()Jl em cada um deles para
n. A
vadável ;ntdm k pode
~cr
passa-
S$puSh(k);
c aSl>im I){)I' diitllte. A Ur)(.:r.J~.Ju IXI!J lel1l uma guardíl, 1)()n1l111O ullla tenlaliva de fctirur IIl11a vuri:ivel de ulHa pilha Va1H1 s u ~ pe l1d l:rá () plllCel>Ml chamador até que 11111 oull'O ]l1'OCCl>!>lJ t..:nha p1I pUrfl a pil ha. (}I'ca tem IIllla d..:clwação furk para criar UII1 IlOVI) pn"cs~o em um prllCc s~ ador e~peci ti cm l (j por usuário. O 11m\! JllOce~~u cxecLlt,j n jlhlCGdllnellto nomeado na dcclar.tção rflrk . Paràmetl'Os, IIIduindo ()hj e t')~, podem ~cr 1):110l>,ido!> au nmo pru;.:c~~o, e é .J~loilll quc ubjctos fi cam di ~tribu ído!> eJltre máquinal>. ~or exemplo, li dcclllraç 11 rOI' i in I ., n d n fOl'k foobar(s) nll i; 00 ; gera um n(Jl'o.pnlCe~~!le lll eada UIllIl tias JlilíqllillllS, de I ali. cxecutando o progmma fimlml' em cllda uma delas. À medidn quc c!>~s /I 111)\'(\\ procebo~ (e o poli) CXecU1iUIlCI\l par.JleJo, Indoi' e lt::s podem passar ilens pilr.l a pilha compar1i lhadu c I\!lirá - lo~ da pilha como se tndos de estivessem executllndo em IIIll multiprocessador de llIem6rill companilhada. SlIstentar a i111 ~1io tlc llIemória compartilhada onde cla realmente nõo cxiste é tarefu do sistema de excc\l~'ãu. 0 l)l!raçi'ies ~o bre uhjetol> clllnpani lh,ldns são utõmicils c sC(liienci almcntc consistentes. O sistelllíl gistcmas DSM baseadOlo cm pnginação. Doll> tipus de ~ incmn i zação são lu:cessários em pmgrJlllas paralelos. O primeiro tipo é sincroni Jrlçao por exclu~1in Illmua, pam evitar ~Iue duis procehos executem :1 mesma rcgião crítica no mesmo tem]lu. J>nm ,,)( I n~ (l~ efe it o~ , cada ul)l!raç,lo sobre UIIl ohjcto complIn ilhado em OrclI é como 1I1ll!" região Crfticll, porque () shtl!ma garantI! (11Ie o rel>ultnd() !lnal é () 1lIe:.11l0 que ~e,;u se todi'ls 'l!. rcgiôcs críticas fossem executadal> uma por veL, isto é, l>ellHclleialmcllt l:. N ":~l>e a~pecto. 11111 ubjetO Orca é COIllO uma fonlla dbtribuída de um monitor (Hoare. 1975). O oUlro tipu Ile 1> lnCrOlli/açãu é sincroniLação de condiçãu, na tjualum proce~so bloquei:lespcrando por algumu contliçllu vâhdu . Em Orca . u ~ incruni7.llção de cnndição é feita com guardas. No exemplo da Figura 8.-11 , um proCClol>O 'luC tt: llte reumr um item de uma pilha va1.ia ser:\ 101I~I)Cnso até que a pilha não e~teja mai s vazia, O ~il> teU\:1 dc exccuçàn de Orca manuseia replicação. migração c cnnsistí!ncia cle objClO, e invocação de nrlCmçiiu. Cada objeto pude estar em um de dois estados: cópia única ou replicado. Um ohjeto em estado cópia únk a cAil>le l>umCllle em um.1 máquina, l)()n:mto, todas as ft:l.IUisições pm",! ele são enviad;l~ parJ essll má(luina. Um obj~ to replicadu clotá prescnte em t()da~ as máquinas que contêm um processo que o está usando, o (Iue facilita as opt!l1lt;Õl.!l> de lei1ura - j.í q ue c1Cr fdtas localmente - 11 eustn de cncarecer as utualiLações. Qmlndo é exel:Uta.!a IInla npcmçllo qu ~ Illodilica 11111 ohjeto replicado. em plimdro lugar ela dcve obter um número de scqilêncin
••"o ~
,• "-
•
o u
•
,•" • ,.,.
.. "
.,
,o •"-
u
Oblecl Implemen tal10n Itack;
top:lntogor;
li armazenpmento para 11 pilha
staek: array [In legar O.•N-l] of Inl egar;
•"o ~
,•
Figura IA. Objeto pilha [stackl ORCA simplificado. com dados intemos e duas operoçôes.
~
8
o u
•
~
operação push(llem: Inwger); begln guard !op « N 1 do stack[top] ;_ ilem; lop;" lop t 1: od ' end;
operação pop( ): iolegor;
, lunçlio retoma flAda
H passe i!en1 pa ra fi pll~la 1/ incremente o ponteiro de pilha
IIlunção rclomando um Inteiro
begln guard lop > O do top :=top I;
relurn sttH:k[lop]: od:
11 suspenda se a pilha estiver vazia iI decremento o ponteiro de pilha fi retorne o Item do lopo
end;
"
begln
~
lop ;.. 0:
o
•• • o"
•
'"
o"
• InlclallzeçAo
end:
~
U.rdu po r UI11 processo centralizado que os emite. Enliln é enviada Ullla mensagem fi cada máquina que te m wml cópia do ohjeto. di 1.end u a ela que exet,:ute a ol>eração. Uma vcz tjllC 100m, cs~as a lu a li zaçf>e ~ portam l1límero.. de scqUência. lodas as máquinas execullllll a~ operações na mesrna ordem. o que garante con<;i<;lê nda seqüe ncial.
Globe A maiuria tios s i s tc 1t1~s DSM. Linda e Orca execUlulll em sistemas locai s, isto é, dentro de um úhico cdirrcin ou campus. Todllvia, tam bém é possível constl1lir um sistema de me mórin compartilhada no nível {Ie aplicação c m um mult icullIPlltado r que executa em âmuiw 1I111nrJial. No sistcma Glohe. um objeto podc c.~ tar localizado no c.~ pa ço de e ndereço de vários processos aUllIesmo tc mpo, possivelmente em dife rcn tes continentes (Kermarrec et ai .. 1998: Popescu et ai .. 2002 : e Villl Stccn et ai., 1999). Para ilceSSflr os dados de um ohjeto ctlmpartillmdo. processos usuários devem p.L~s ar por seus 1I1éto
8.4.1 Desempenho
o
po nto pri nci pal da construção de um computadur pHfalelo é fazer com que ele execute mai .. rapillarnell te do que uma mátluina cum um línicu prucessadur. Se e le não cumprir esse s ilHpl e~ objetivu. não va le a pena tê- lo. Além disso. e le deve cumprir o objetivo de ullla maneira e fetiva em relm;ão ao custo . Uma máq uina que é duas vezes mais rápidu d o que um uni processador n 50 vczc~ o custo muito provavelmen te não <;crá um sucesso de vendas. Ncsllt scçiio ex:tl11 inarelllos algull1:ts d a~ questões de desempenho associadas a a rquite tH ra~ de computadores paralelos.
Métrica de hardware Da perspectiva do hardware, a métrica do desempenho que interessa são as vc l oci da de~ de CP\] e EiS e o desempe nho da rede de inlcrcollex ão.As velocidfldcs de CPU e EIS sãu as mesmas de um uniprocessador, l)Oft:lllto os p:tr5ll1ctros fundamcntfli s de interesse em um sistt:BW paralelo são os lISSOCilldos com doi<: itcns fu ndamenlais: "ttência e largura de bamJ:l, que agora examinaremos um por vez. A 1:1Il!ncifl de ida e voh:t é o tempo que leva para a CPU enviar um paeotc e obter um:t re~(XJ~ l a . Se o p.K'(Jle rur enviado fi lInta memóri:t, entào a latêm;i" mede o h,:tnl}(J (lue leva para ler ou escrever urna palavra ou bloco de palavras. Se ele fo r enviado a uma outra CPU. a latêlld:t mede o tempo de cornunica\'f!o Clltre pnx:essudore<; para pacotes daquele tal11anl1o. Usu:ll lllcnte fi latência que intcressa é a de pacotes l11íni mos. l11uita~ \ eles lima li nica pala. vra uu uma pequena linha de cache.
I
A I;n ênda é Ctlll1]lIhla de vários f[llOfI!s c é c1irere lll ~ p.tra ;ntcrcOllcxflcs de comutação (11: ci rcuit os, ,H"IIl,ILCtHlgcrn c rcpa ~~c, utalho virtual c wormho!c rulcuda. No cusu du COllllu:I(iiln de ci rc uitos. rt hl1 Encia é il soma tio tempo de cswhetecillh!llIu com o IcUl po de transmissão, Para c~tllbclccer um drcuilo é preciso c nvi ur 11111 pacote de ~() n · dagcm polra rc..crv.u rccllr!>u~ c cnli'to devolver um relat6rio. Tão logo isso nCIlIHeç;., " p;lcUlc de c..Iado~ Icrn de ser 1Il0utl.UO Quando o pacote c.'>livcr pronto, os hil~ podem nuir a tod a velocidade, portamo, ...c 11 tempo lotai IIe montagem for f " 11 lam.Jllho du pacote I' hits, c a largul1I de hunda b hits/s. a hnência de IlIml vh. é "I~ + /vb. Se () circuitll for fuI! d uplcx cmão nàu há tempo de t! ~ l llhe lecill1 c ll \O para li rc~p().~l a, portanto, ti lalênchl mfnima para eJlviar um pacote dc p bil:. lo! ubtcr um re~posta de p bits é 1 ~ + 2p/b s\!gundos. Na C0ll1ullu;5n tle pactlle.\ nliu é rlecl!~~ário e nviar antes um !>i.lcotC de Nomli.lgclll ao destino, mas ainda li!!. algum h!lIIPO inlerrlu de cstahdl!Cirncllto para 1Il0ntilr o pacOle, 1 ~. Nes~1! ca:.o, o tempo de tfll nSlllissi'io de uma via é "/;, + I,/b. ma) ;1»11 é apcna) ti teml){) de levar o pacote até o primeiro CllIIlUlador. Ilá um alra)o IInilt) dentro 110 cOlllllllltltlr. por exemplo, '/ .I, c cnli!n o procC)loO é re petido no comutador ~g u i lll l! c il l>~i ll l pur Jiantc. O a!nl.§() '( I é Ctllll lllll>1U 11.) teUll)l1 de pmcelosulllento Illab o atra!.(J de fila :\ I!!>penl da hhera,,~ào de uma pnna de l>aíJa. Sc hOIl\'er 11 cOlllUt:ldure!>. e lll 50 a hllêncill totill de umll via é !latia pclil r6rmu la "I;, + n(p/b + 1d) + p/ú, cuju termo final !.e devc 11 cópin do riltlll\(J cnl11ut:ldof até /I deslillu. No mdhur ca!>,I, lb latência!. de Ullla viii pam atalho vinual e rotcamento wonlllmle estiiíl próxima.> a 'I;, + lI/h porlJUl! não 1I:\IICllhlllll pacole ue I>ündagem para esw.bc leccr um circuito c também nenhu m alfllloO de ilnnõ.lzcu.unen1\1 c repil!>ltc. lialoicumcnle, t! o tem pu inicial de e~ tll he l cd lTle m{l para montar o pacote, lIlai!> tltelllpn par:l elllpum.lr u) bitlo pon .. illma. hlll odll~ m cnloOS é preciso adicionar o illmsn de propagilçi'lo, mas c le é u ~uahne nl e pequello. A outm métric.! de hardware é ri largura de handa. Muitos progranlllS paralelos, cm especial em ciências IIU1I1rai~ , IIlOVilllentulll Ulllu grande quantidade de dados de um !clclu para nutro. portanto n mimem de hyte!il) que o ~is temiL potll! mnn:r é u ui..:o ptlra I) desempenho. Há vária)o métricas parH largura de banda. Já V illlO~ urna delas - lurgllm de hand.l de hh~Cçã(} . Uma outra ê it larg urll d e lllultln agregud a , que é caJcullldu pela ~i l\lpl es adição d:ls c;,paclllatlc:. d..: IOtI\" o) enla..:elt. E)o\e nÍllllcru dá o llIílllerO l1l:lxill1o de bits que podem e~t:!r emlr3111>ito ao mesmo tempu. Ainda uma m Uni m':trh.:à imponalllc é :1 lurgura de b'lIldn média nu salda de cada CI'Il . Se cada C PU rm capaI.: de pru4hllir I MIM~, d~ pnucu udiunta li interconexãu ter uma largura de. bisseçàn de 100 A cOlllunieuçiio IIcn1limitad u pela quant idade de dlldos que cuda C PU pode produli r. Na práti..:Ol, conloegu ir Ilualquer coisa qU I! llO menus chegue penn du Inrgura ele hanel a teórica é muito diricil. Muillb fUlltt:~ de ~uhrecargu contrihllem para red uzir li cllpacidade. Por exemplo. há sempre lllguJIla stlbrecllrga 1'H lr pucole a ~M)C i IH.I:, ti t. uchl IlIICIlI ..:: montur o p....;ole, con~tru ir seu cabeçalho e Illlllldá-In Clllhllnl . O en"io de 1.024 paco t e~ de " 11)'lcl> nunca alcançará a mesma lur}!lInI dc h:rnda que I) ~nYio de um único pacote de 4.096 lIylelt. IJlfdil.lI\el1te . p'ifll lom'C.1:! lIlr haix1b latêncialo é melhur lI)oal pacot e~ menme ~, vi:.1tl que Olo gr:mdes bloqueitllll as linhalo c cOlllutadurc lo 1)llr llIuitn le/lll){). A!>~1II1 , há UIlI ... unllilu iuerente ent re conseguir ha ixlIlo latênci u!\ méJ ia~ e aha 1I1i1il.:ação de lurg ur.! de banda. Pilra :l lgullIlb aplic:l"õc" ullla dehls é mai) impon ullte do que a outm, e para outras apli..::l~~õe)o 1)(}(le ser o ..:ontrárin. EntrelUIIIH, vale .1 Ik na oh ~c rvur 4ue você sempre I)\)(k comprar mais largurn de handa - in ~'uhmd o Ill:!i s fios nu nll~ lIl a i ~ largll~ '. lIla~ nãu pUf.le compmr lat ê ncia ~ lIlai~ baixas. Por i:. ~(), em geral é melhor errar para lado das mt:!norl!s lalcucia!> pus:.íveb c loC prcocupar ":O/ll it largura de hallela m.. ilo t;lrde.
anis.
°
Métrica de software A métric'l llc h.ud .....are. como latência c lnrgllm dc banda ohserva tl que o hard .....are é ~a paz de razer. Cont udo, Ib ul>uário... têm uma pcrllpccli va diferente. Eks querem saber o ganho de rupidc7. na cxecuçõo de scus prognllllllS em IIIIl compllHldllr pllnrleln cm vel. de em UIll uniprocessndor. Panr eles, 11 métrica rlllldalllcntal é lIlab vc locidlllle: Ijllan to mai)o rupit.l,ullcnte um programa exccuta em um sistema de 11 proces~udt)res cm cOlllpam ç~o com um sistema com um só procell~adnr. Normalmente OS resultados são rno... trados em graro~ como os da Figura K.42. Ne~se caso. vcnlllS vário ... ]lfllgnuna ... par... lelu ... diferentel> que executam em um muhkulnputador que collsiSle el n (H C PUs Pelltiulll Pm. Cada cur"a mt)~ t ra ti ganhu de velocidadc de um progr.ulla com k C Plls CUlllU uma fun~'i'lo de k. O ganho de veloci Ilade perlc.llu é IIIdicado pela Iiuha pontilhada na quul usar)c CPUs falo programa funcionar k vei'.es mais rapidamcnIC, para quulqucr J.. I'oucm prngrumas conseguem IJ ganho pClfeito de velocidade. mas illguns chegam pt!no. O pl"{). hlcllla dus N - l!Uq)l l~ ..:o n ~egue um ótimo parJ.leli~nlO ; ti awad (um jogo de Illbuleiro africano) se ~ai razoavelmentc hem. nml> Ílwcner lima cei"la m:llril. c1e linha tio luuizonte não chegn n mais do que cinco vezes n velocidade original , não hlll>ort:llldo qualllas ('PUs e~l ej llm disponívd s. Os programas e rc~ ultmlos são discutidos cm Bal CI aI. ( 1998). Parte d" razão por que li ganho de velocidadc perrcito é q uase irnl){)S~í\'cI de alcançilr é que quase todos os pm· gramalo têm altlum ..:ulllponente s(.'(liiencial. qUI! costUIIHI ser iI rase de incializaç.ão, a leitura de dados o u a coleta cle resu ll'ldm•. Nelo~e caloo, não adian ta Icr muitas CPUs. Suponha (Iue um programa exccute por Tsegllndos em 1I1111111iproce~siU l(}r, ~e ndo 41h! uma rr.tçi1ofde seu tempo é elltligt1 s(.·q ücncial e uma fmçiio ( I -f ) tem po tencial para pamIdi slI1tl, COllltll1l0l>tra a Figurn H.43(a). Se esse úl timo código puder cxecutar e m /I CI' Us sem nenhuma sohrecllrga. ltCU tcmpo de execuçfru pode )ocr red uzido de (I - j)Tpam ( I - j)T111 na melhor dll ~ hipóteses. como mOSlra a Figura R.43(h). bso dá um lempo de execução total pitro! as punes SCtliicneial e pardlela de fT + ( I - j) T/II . O aumento de velocidade é apc na) o tcmpo de execuç1lo tio pmgr:ulllI original, T. di vidido relo novo tempo de c:\l!cuçi'io; AWlllmlO di' l't'/oddlll/e-=
J
I
"
+ (lI IV
"o
• •"o" ~
,• ~
8
o u
• •"
~
," "• ,
"" ., ,o
"' "
o.
•
u
00
.... M
00
50
Aumento linear
•" o
~
•o
o.
•
o u
• •
~
de volocldlld' " ' -
figura RA2
Programas reall alcançam
menos do que o aumento perfeito de velocidade indicado pela linha pontilhada.
" ,
-•
~
,
.".
....
--
...
AWl'Ir i
...
Il1v,rsMo da matrll dl'llinh{l do horizonte
•
"
o
/, ..
. . ............... --
_..---
o
"
"
"
~
o
30
50
60
Ntlm8fO de C PUs
~ ~
• N
n CPU, atIvas
d
•
~
o"
flgu,.. 8A3
la) Um programa tem uma parte seqiienCial e uma parle que pode UtilizaI
paralelismo.
Parte
P8l1ecom
IIlIIf entlmttr118
potencial pafll pursl.lilmo
seqüencial
!b) ~feito da execução de parte do programa em
II
paralelo.
I
I- I
H
T
- IT
(1 - I)Tln- -
'"
I"
Pam! = O pudemos obter aumento de velocidade linear, mas pamf > () o aumcnln de vcl\lCidade perfeito niio é posslvcl por cllu~a do componente seqUem:illl. Esse resultado é conhecido como lei de AlI1dllhl. A lei de AlIldahl 11110 é a úni ca razão por que ti aume nto perfeito lle velocidade i qua"e hlt,lO(,~ h'e l de comeguir_ Latê ncias de cOllluniclI,ão não-7.ern, larguras de oanda'! de com un ica~'1I0 tini tfl~ e inclki ê ncia~ de algoritmUlI lamhé m podem dcsempe nlmr um p'lpcl. Além disso. mesmo (pie hou vesse mil CPUs d i~polllvci ~. ne m tooos o~ ])1'0gl'amas IXldern ser escri lm para fazer u .~o de lunr11 ~ CPUs e a sobrecarga para iniciali 7n r lodu ~ pude ~e r r-ignificati. Vil. Ademais, muitas VC7CS u ulgorit lllo mais conhccido não é bom p11m ser u ~ ado Clll Iml;l l1uíquina parale la. purtauto é prec iso usar um nl goritmo subólimo tiO caso pumlel0. Isso poSIO. lu'i I1lllitn~ t1plicm,:üe~ para a~ q\lai ~ ~eria muito dcsejávc l 4ue o progrmna exccutasse com velocidade /I ve7.es maior. nindu que pUI'll i ~~fI preei~a~~e de 211 CPUs. Afinal. CPUs niio são caras. e llluitas e mJlre"a~ vivcm com considera vel mentc I1lCIltI~ dI) que IOtI"f de e fi c iencia em outra ~ pm1es de seus negócios.
Obtenção de alto desempenho O modo mais direto de mclhOrAr o dcscmpenho é ,HJieionar maj ~ crus ao siste1l1:!. Contudu. e~sll adi\"ão llevc ser feila de U1l1 moou 1.11
um barramento. [bl Sistema de 16 CPUs com um barramento. (cj Sistema de 4 CPUs em
grade.
CPU
I
n
?? I
8!uromel!lo
'dI Sistema de 16 CPUs
em grade.
1-'
Ib)
lo'
IdI
í
Agmu \'amo~ laLcr li 1llt:~lIla coisa cOlllum si~ l elll a em grade. como rnllSlrilll Figura K.-I.,I(c) c
m .... M
CiI ôlllltcda da lurguftl de banda õl grégnda por C PU, \.!omo açnnlCcc com um barramento. Na vcrd.ulc, a razão emre enlaces e CI'Us ,HlI llcnlu di,; 1.0 com 4 CPUs (4 CPUs, 4 enlaces) pam 1,5 com ló C P U~ (16 CPUs, 24 enlaces),
(IC1l1aulo agregar C Plh lllcJhora 1\ largunl de handa agregada por C PU. C lam (IU C a lalgur:. de b,md .. niio é li línica questão. Adicionar CPUs ao barramento não :Ilunenla O diâmelro da redl.! de lIlh.:n,;oUl:xiíu nem a l al ~ncia na ausênci a de tráfego. no passo que adic ioná-las à grude. aumenta. Para lLlIlll grade 1I X li, n di,imctro é 2(11 - 1), pllrlanto, na pior das hipóteses (e nn rnédiu), a latênc i n aumenta aprm:imud.um:n1e pe la ruiL. quadrllda do mílllt!rtl de C I'Us. Para 400 C PUs, () diftmelm é 18, tIO pa~s{) (Iue paru 1.600 (' PU ~ é 78, porullllo quudrulllicar o nLÍll1cm dc CPUs aprnxi llllldamcnte dllbra o diâmetro e, por is~() , a latência média. O ideal seria qLU: um ~i:.1c Jl1 a escaláv!:1 manIÍl'es~e a mesma largura de banda média por C PU e uma lalên cia média e" n ~laJ1lc à medida quc rllSS~lIl adicionadas mais e mais C PUs. Contudo, na prá1ica, é viável manter slltica:nle Jurgma de hantla por C PU, Illa.~, cm lodos í1~ projews prátiL:Os, a latência aumenta com o tamanho. FU/.cr com ~luC di! dlUlICl1te por logaritlllo, l:0! 1ll) em um hipercubo, é quase o melhor {Ilh! ~I! poJe fazcl·. O problema do allmelllo dil Ialência à medida que 11 sistema é ampliado, é \'ezl!~ há uma Jemora ~ lI h~ t ancial parll ir bmc,1-]os c, quan lo maior n l\ish!ma, mais Icm!;u é o ,ura:.!l, C0ll10 ilcílhiUllm de ver. E~:-.e prohlema é válido para mllltiproces~ad()fes, Iklll como para multiCIIJIlplltadnrc:.. já qu..: , em illllhos os cusos , iI Illl!ll1ória física é invilriavc!lIIcntc ~lI bd ivi d ida em módlllu~ extensos, ( 'onm l:onseqiicnda dc~~a .. )h~crva~~ão, projeti st ils de ~i~ t eJl1a ~ muitas veL.es faLem griUldes esforços pura reduú r, 011 ali IIICIlO~ \I<,; ullar, ;1 latência, IISiltlclo di\'ersas técnicns que mencionaremos agor.J. A primeira técnica par.l ocultar li lat ência ~ ., replil:ação de dados. Se for possível m;\l11er cópias de um hloco de dados em váriils locn lizaÇilCS, li vclncid"dc dll~ W':C:.SO:. a parl ir dcs~as loca lililçilcs pode ~Cr lIUITlClIl il d u . Uma dessas técni cas de replicação ~ fa Ler cm:he, IHI (111.1 1 IllIla 0 11 nlili~ cópias de hloclls de dados sao mantidas prõximas de onde estiio ~endn usadas, hem COIll\! no lugar .1 que cla~ ·pertencem' . Contudo, uma uutra c~tratég:ill é nmn1er várills cópias pares - eópiils que II!Il1 iI rne~llhl ~t , llm - em cnlllpilração C~) 11l \I relucionalllento a~lÔi rn étrÍl:(1 primária/secundáriallsudo em cache. Quando ~ão Illuntida:. vária:. ctip itl ~. n[\('I imponand u dc que forma , as lJlle~ l õcs r\lllda l11 Clllai ~ silo: ollde slIo colocad o~ o~ b l oco ~ tiL! dado~, Ijuilndo C por quelll. A~ re~p()~ta !. vrio de jlllsidolHUTlellto diniimicn ~uh demanda pelo hard'\llfe ti pil~ icionuI11CI11l) intendl uml na hora dI) ca lTegtllllCllI1l :.egui ndo dirctiva~ do cOlltpilndur. EUI todos os ca~ns , gCfL:llci:lr a C~)I) ) l~téll(: 1H é uma qUL:Miio. lJma ~eg ul1da l.,)cnic'l para ocultar latcllcias é a huscllll nt eci l)lIda . So.! 11 111 item de (judo puder s~ r bu~cnd o antl!S dI! ~cr nece~~líriu, li pn~.:~~n de bu)ca P()(1t! ser sohre pusto à execuçilH nonnlll, de modo que, qlllmJu o item JiJr neL:c~:.il r itJ, ele Já eSI.1r(í lá. A bu~ca anteci pada IXI(!C ser ml10illática 011 sob cont rolc de prog rama. Q uando uma cach\! l:arrega não Ilpcn'ls a palavra que eSlá sendo referenciada. mas uma linha de cache inteira que conlém a palavra, Ixx.!e· se apmlaf que 11), ]lulllvras sm:c)sivas tam bém logo ~erão n cct! s~árins. A bu~c'l am e( Ip:HJa ptx.!~ ~er c()lltrolada cX j)licit:ullente. Quando o compilador percehe que precisará tle illgulls dadu:"> , pude in~el"il" uma instrução explícita para buscá-los c colocar aquela instrução COIll lllllcccdênda sulicient e pafll que ,IS dados estejam undc Ilcccss,írio li tempu. Ess'l e~ trat égia requer que o CClmpilador tenha 11m cOll ht!ci /llCll tn co mplclO) da mliquin:l subjacente t! de sua le l1l porizil ~ão, bem como elllllrole sohre o lncal linde ludo~ \\S dado" ~ão ullllL:ados . Essils instruçõt!s LOAD espceulali\'as funciona m mdhur (1lIando se sahe com cene· za qUI! o~ llildus ~e rão II t!ce~s:írios. O hter uma fa lt a de página com uma LOAD para um caminho que, atinaI. não é lUlll"dll, ~ mui\!) C lh[()~n . Uma lerceira lt!cuicH que pode ocultar latência é 111l1 ult ith reading, como já vi mos. Se u mudança entre ]lm· Ce~~O:. puder )er feita com ~ul1ciell le rapidez, por excm [llo, dando 11 cada UIll seu pró priu mapa dc memória e seus pr6prios .. egi~ t 1"ad mc~ de hardware, então, quando UIll th read hloqueia por eSlar espera ndo a chegada de dados rcmo tos, o h,mlware pude rnpidamente mudar para um ÜlUro que pode continuur. No cilso-limi te, li C PU execula a prime ira inslI1u;ão do lhrl.!ad um , i1 segunda inslnu;ão do 1hrcad dois e assim por dianTe, Desse modo pode·se manter:l CPLJ ocupada, mesmo em fuce de I O llga.~ latêncins de mcmória para os th reads individuais, Uma 'luaJ"la técnil:l1 p,u'a oc ult:1r ]llI ênC1;1 é usar I!scritlls sem bloqueio, Normalmcntc, quando é cxecut uda uma iU!.Irllçi'io STORE, a C PU e~pera até que iI STORE tenha concluído antes de continuar. Com escritas sem blOllucio, li uperação de Illemóri;, é in iciada, mas Il programa continua assim me~ m o. É difícil cCl/ltinunr passnndo por uma LOAD , mas (;11111 execução fo ra tle ordem até isso é po~sfve1.
Computação em grade
8 .5
Muito~ d n~ dl! ~ aliu~ aluais na ciência, engenharia, indLÍ~tria, me iollmbiente c outras árcas são de grnndc escala e interdi),ciplinarl!s. Re~olvê· lolÔ requer a cX j>criência, a~ habilidades, conhccimentos, iIl Sl:l t nçõe~, soft wares c dad{l~ de nl(í lt iJl l il~ organi lilções e, muitas veL.es, em pa fses diferentes. Alguns exemplos são os seguil1lcs:
I. 2, 3.
CiClllist'1S que c:stão desenvolvendo uma mi ss50 panl Marte. Um consórcio para ~on~ InJir um produlo compl exo - por exemplll, uma hnrragelll ou uma aeronave. Uma e(Juipc de socorro internacional (lilra coordenar o auxf1io prestado após 1111"1 d esl1~t re Ilutural.
•o
• • "
•
~
•"o• ~
•o
~
8
o u
• •"o •
"• o
~
"
"
.. o o
"
o-
•
u
o
ex>
M
Algumas d~ ~"a~ coopt.'rat;ocs silo de lungo pralO. nutras de pmzos 11m i!> l'unuS. rn~ <; 1l)l,la' cOIll l'artilharn n fiel t:tlllt.lulor comum <\ue é comcguir l\Ue mganilaçõc... inllividuais. cum seus próprios rcclII"O" c proced imcntos. 111I1l:lIhem j untas para atingir umll meia comum.
·•" o
~
• "8
~
o <.>
• •
~
~
·,•" ·"
'"o
••
~
• N
d
•
·'"
O
Até há j'lOUCu tempo. conseguir (IUC organizações diferentes, COIl1 sistemas operadullai" lIc ClII1\pu(,ulor. !laTI cus de dados c protocolos diferentes, trahalhussem junTa .. em muito dirfci l. Contudo. a cn;<:ccnte ncce<:sidadc de l'OI)IlCração intcrorganií'.l.tcional d e larga escala levou ao desenvolvimento de s i.~ [cll1as c I C~' nol ugia pam cOllcclllr com· put;u.lu rcs muito distantes un s dos fl ulrus no que f! denominado grndc . Em certo scruid n. a grade é ti ctap3 .. eguintc an longo do e ixo da Figura 8. 1. Ela pode ser considcmdll cnnw U111 cl uster muito grundc. ill1erlllll;itJ1ml. fracame nte lLcoplado e heterogênco. O ubjetivo da gmdc é propurcionar infra-cstmt unt t&:nica pllra permitir quc um grupu de org;H1i 7a~'üc~ que compartilham uma mesma meta fonne uma o rganizRção virtual. ES~i1 organiza,ão \'ir!uallcrn de scr fiedvcl , com um quadro de as~ociad os grande e mutável. permitindo que M:US membro~ trabalhem juntt1'; em áTCa~ (lue ct)l1 ~ id c rmn apropriadas e, fiO mesmo tempo. permitindo que elc~ mantenham controle sobre ~Cll ~ jlll)l'rim rccurS\I~ em (lual(IUer gmu (Iue desejarem . Com essa timllidaJe, pesquisadores de grude estão descnvol \'cndn sc rv i~·os. fcmllllentllS e protocolos pam habililu r o runcionamento dessas o rganizaçõcs virtuai s. A gradc é ineren tc mc nte mul tilateral. cOl1lmt1ito~ participantes quc têm O IIIC( n lll s t nlll ~. Ela pUllc scr cun trn studa COIll estrulu ras de l:Olll lllltação ex istentes. NlI lIlodelo die nte-scrvit!of. ullln t rn ll ~ a~'~n envolvc d\ln~ partes: U serv idor. quc orcrece algu m serviço, c U cliente, que quer usar o serviço. Um e.\ cmpln tfpieo de lI1 0delu clicnte-servidor é n Web, nu qual lIsuários se di rigem a scrvidores Wcb para achar illronna\'õc'l. A grade tm nl>tlll é direrenle de aplicações pcer-to-pcer. na quais pares de imlivftluos trocam arq ui vos. O e- mail é um exemplo cOIhum de uma lIpliclI,ão peer-to-pel! r. Por ser dire ren tc desses modelos. \I grade requcr novo" protoc olos e tccnologia. A gradc pred";\) e pcnni· te acesso conlrul:ldu a ele por usuários re motos. Essa c:llll1l(11I pro po rciona mn" interface ullifurllle Jlara que call1adll ~ mais altas pos~a l1l inqu iri r as características e status de recurso~ individuais. mnnilofUmlo esses rel: ur~o~ e OQ utili7ando de modo seguro. Em seguida vem a Cll l11udll coletiva . ccffi co'l. /\. camada coleti va poJe ma uler diretórios ou outros I.mncos dc dadus para romeccr cs~a~ infl1l'lIIaçtlCs. Tamhém pude orerccer UIIl se rv i~'o de corretagem. pelo qual os p r(lvcdt1l'e~ e usuários dc sc r\'i\'o~ ~ãu comp'l\ibilil.
runção
Camadas da grade. Camada
Aplicação
Aplicações que compartilham lecursOS gerenciados de modos ronlfoladOl
Colotiva
Descoberta, tonelagem. rnofÚloraçào e ron tlOle de grupos de rccur808
De
Acesso segUIo o gerenciado a recursos IndJvldunJs
10(.'\.111108
,,,"
Recursos (Jeicos: computadores, armazenamento. redes, sen50res. programtls e dados
1
Unl;l dali principõlb CõlJ"actcrf)ticas do modelo lle segurança é a Os-filhos também podem ser identificados. Quando uma credenciai é lLprese/Uadu a uma máclllina remota, ela tem de ser mapeada pard o mccanismo Incal de segul""dnça. Em ~i sll.!mlls UN IX, 1)01" e},emp1Ll, ul!ouáriola são ilh:n lilkados por lOs de usuárins de 16 bits, mas outros lailatemas têm oulro1o 1.!1o(ltLema ~. Pur fim , (Lgrade precila:l de nlec:HlisIIlO» para pennitir llue l:Hllíticas de nccsso sejam t1echlradus, lLIa1l1itlala e atlLuIiLad Ar chitecl ure - arcluitctura d e servlç.os d e grude abe rla) para posiciulIlar U~ váriu) piJdnk ~ e M!U dl! ~c! llVtl l v;men to. Sempre que f>oslaível, os padrõc~ uliliLatn padrõcs já existc!ntes, por L.!xcmplo, o V. S])L (\Veb Servie!,!la Definiton Language.), para de~c revL.!r ... erviço~ OGSA . Os M.: rvi\:us ' Iue estão atual mente em fil ~e Ih.: p;uJrollizaçilo pertencem a oi tu c;ltcgOJ"ias gL.!nlis. como descrevcllIus a seguir, Jl1a~ nova) eatl.!gnrias selão c ri adiC~ II1;U1> lardL.!. lI~uário
Scn i~'nla dI: Sc!rviçn~ d\.; Scrviço) dI,; Scn h.:m dI! Sen iytlla de SerViçtfS dI! Sl.!fv iç.ls de Serviçl)la de
I. 2. 3. 4. 5. 6. "I ,
8.
inrra - c~ tnttur.J. lhabi litar comunicur.,:lio entre recursos). gerenciamento de recursos ( rc~crva e distribuiçiio de recursos). dad()~ (II1mer e replicar dadula para onde forem necessários). Cunh!\W (de:.crcva reCu~o~ requl!ridos e política~ de IltiliLuçi'iu). mlonnuçào (obter infonnaçôes ~obrt! disponihiliclfule de recursos). autogerencinmentcI (suportar UC1ln qualidade de se rvi~,o declamda). )cgurunç:l (impor 1)()ICticas de scg urunça). gercnciumento tlc cxccuçâo (gerenciar nuxo de trahaJllO).
Ilá IUU11H Hl,lh que poderia scr dito ~ubrc a grJde, mala limitaçõcs d~ elapaçu nos impedl:m de cstender mlll~ tópico. Se \I leItor quiser IlLlli~ illfo rllla~:õe~ ~obrc a grude. Ixxll: cUIlSUltllf Beflllan el ai., 20m; F(I)\ ~r e KCla~d ll1an , 200.1; e l ' o~ll!r ct ,11., 2002.
C~~e
8 .6
Resumo
blá fic,mdu cada \eL lTlai~ diffc il conseguir que o~ computadores funcionem COIl1 nlilb rupitlCL apclla~ aumell1,IIIdll 11 velocidade LI.! n.:16!!in l)Or c uu~a de prublemala cnlll a maior dilasipaç:lo de calor e uutros fator~", . Em VCl di~so , os Ill"tljcliMa ... I.!latiio bUlacllllllo o paraleli smu para con~cg llir ganhos de velocidade. O p:tral e li ~lllu pode ~e r inlroduúdu em lI1ui" I~ lIívci~ diferent!!la, de!.de o mui to baixo, onde os elcmen tos de proct:ssumclLIu laão C1luilll fllrtl.!llIentl! acoplados, até o muilO ulto, onde eles são muito fracamenle acoplados. No nível haixn I!)tá n paralelismo no ehip. no qual utividades paralelas ocorrem cm ulIllÍuico chi p. Uma forma dc pnl"aldi ~ 11I1l IIH cJllp é o pnruldismo no nÍ\·el da in~tnuião, no qual uma in~trução, ou ullLa ~l:qUê llcia de ill)tru· çõcs, cm itc lllúlLipla ~ t)perJl,:ÕCS que podem ser cxecuulChtla em par..tlelo por dircrentes unidadela funcionais . Uma lacgund:1 furma dr.! paralelismo no chip é o muilithrcading, lIO qual a CPU pode comutar como quiser e ntre múlti plu:. thrC:ld), Llbtnu;:io por ilbtnlçllo, cria ndo Ulll multiprocessador virtual. Uma terceira forma de paralelismo no chip é () JIlullipmccs~a d(\f dI.! chip único 110 qual dois ou mais míclcos slln co!flcadns no mesmo chip p;lra permilir qUI! eles eXcCtue m mf melamo t~mpt) . Em UJIl nível aci llla encontramos os co-processadores, normalmente plal!lls de expansão que ngregam capacidade de proce ..io.iUllCIllO extra e m ulguma área especializuda lal como pmcesslImemo clc proux:olos de rede ou mui· timídia, f.:sscla pmce .. ~adores ex .ras alivinm o lrahalho tht C PU princip;II, I>crmitindo (lue elu faça outms eoisa1o enquanto ele) e,uiu n:ali/andu ~ua s tarefas espcciotli zlldas. Nu pr6X1l110 nhcl e n contramo~ os Illuhiprocessadorcs de memóriíl compartilhada . Os si~ lellla s contem duas ou maj ~ C P Us tolnlmcntc dl!senvolvidas quc comportillwlll UIIHt mem6rifl em comulll . Muhiprocessudnrcs UMA ~I! cÜllIllnic,lIll vl(\ um hurrnmento compurtilhado (de escuta), um COllllU!tdor crossbar ou lima rede dI.! comulação JIl u1tielalügios. Eles são carac te rizilclos por terem um tempo de acesso Ullifol'nlC a todas as localizaÇÕCla de me mória. Por comparação. multiprocessadmcs NUMA també m apresentam todos os processos com o mcsmu elapul,!LI dc cndereçu cmnpurtilhado, mas, nesse caso, os nccsst)la remotos levam um temllO bl.!m mais longo du que tI~ locu;:. Por fim , l11ultiprocessadores COMA silo mai s ul1ln variação na quallinh:t) de eache s1l0 lIul\'idns ele UlII ludo p;:H!l outro da máquina sob dcmanda, mas nãu tem uma residênciíl real como em outros pwjclO ~ ,
Muh icwlIpuladn(c) la,l(l ~ i ~ tc 1llas com llIuitas crus que não comparti lh:un uma 111t:J11 ~ ria e l11 COl1lUlll . Cada ulIla tem ~ ua propria memóriA privada, com comunicaçâo por troca de mensagens. MPPs são muhicomput~l(lmcs gmlltli::la com fetle) de l:ol nuni c a~·!'io L!)I>ccial izadas como o I3 lul!GcndL da 113M . C1usters s30 sistemas mais si lllple~ qUI! UMIIlI CLlBlptlJlClltela de; I'futclcim, eomo o ~iMc ma que sustenta o Google, ~ltLlt iet)llI l,utatl!lfcla t:tbILLlIl!l1\l ser pmgroJllIudm u~imdo um pacote de tmc a de Il1cnS:lMcns como MPI. Uma ahmdagem ullern:alh .1 é tllailr me mória compartilhada no nível de: ilplicaç1io como um ~b t cllla I)SM hase,ldo em
-
00
M
•o
• •" • •• "o
.. ",•
~
eo
u
• "• ,•" •
'"o , ~
•
u
N
00
M
fl;íginas. OC'\pfl1f1l de tuplns Linda. ou ohjclUs Oren ou Globc. IJSM si mula memó ria cumpal1ilhaua ru, nível de n:!. o que !l Wnlll ~i1l1ilar a um 1\I ~4uil1a NUMA. exceto pela llermlidadc maior p:lnr n·rcrê lld ll ~ re tllot a~.
Por fim. !1l1 nível mais alto c mais fracamente acuplmlo, estão as gmdes. São sistCl'KIS ILU~ 4U:I;S org:milações inteiras são rcullitlas c interligadas pcla 11l1cmct para compartilhar clrpacidatlc de processamento.
•• •
o"
~
dad\l~
c
tltI'ro~ n!Cllr~(I~ .
Problemas
•
O-
I, Inst nL,õcs Pentium poder 11 ler comprinlcmns de até 17 bylcs. O Pel1\;ufl1 é ulIla C PU VI IW,!
8 o
2 . QUil;'~ lOBo us valures grumpcnúos de 96. - t), 300 e 256 quandu 11 r!li xa de grampcmllCl1lp é U- 255'!
•
3 . As segui nte.. instruçõcs TriMedia são permilillas? Se nào forem, qlwl
u
p:í~i
ti
razãu'!
~
•
n. b. c.
~
•
• •" •
~
o
~
~
• o • N
~
o"
Adiçiifl de inteiros, s ubtrnção de illtciro~. curgu. adiçãu de pontu nUIU:mtc. curga imediata. Subtraçãu de inteiros. ll1uhiplicllÇão (Ie inteirnc;. carga intellinta . deslocumcnto. dl·c;lul,.·lUllt'nln. CllfKlI imediata. adição de ponto nutuante, multiplicação de pollto nutuante. des\ io , c:lrgõl imediata .
4, A Fi gura R.5(d) e (e) mostra 12 ciclos de
in s tm<;õc~.
Para cõlda
UI1l,
diga o que acontece
no~ lrê~
cidno:
~eguinl e'l.
5 . EI11 Ulllll dctcnllilladu CPU, uma instnlção
c\ lI1~i :,tên c ia
8, Considere um nrulliproccssador
~e ll lli~
é
\lHI
ti lH.)
proccs"udure"
9 . SlI lxlIlha llue, por razõcs técnicas. uma cnche de escula s6 ptxJe esclltllr linhas de cndcle\·o. e nilo dados. Essa al teração nfctaria o protocolo de escri ta direta?
linh u~
de
10, Corno UII1 mudelo si mples de UIll sislenm l1lulfiprnccssadnr com b,uT!lInento. scm l'ache. " ltl'0nhll que \111111 in ~ tntçiio em cada quatru rderenda li I1lt lllt'ltia, e que um:l rcrcrêl1ci;\ à mcmória ocupa ti h,trranrcntn durante 1111\ tempo de in ~lnlç:io inteiro, Se tl barramento estivcr ocupadn, a CPU n'quisillUlle .. é eolocaI!a ell1 urna FIFO. Qua! ~crá .. dirercnça entre li velocidnde de execuçãu de um sistema conr 64 CPU~ c um c;ic;lcma com uma ("PU'!
ma
I I , O protocolo de coerência de cache j\'IES I tcm quatru estados. Outrn~ protocolos tlc c(K.'rênci:l tle clIchc de c~eri ta retroati va têm S(JIIH! ILlc três estados. Qual d o,~ quatro cstat.lo~ MF.s I poderia ser ~ lI c ri fi cado c qUilÍs serialll as l'on~Ctl {lêllci íl s de cadu escol ha'! S(' \'llCê !i vc"se tle cscol her ;tpenus três es tat.lo~, q u ai~ c"clJlhcria'! 12. Usandu o protoculo de cuerência de ellche MESI. há alguma situaçãu na qual uma lilltm ,te cache c~lil pre ~c n te na cachc l ()caI1l1a ~ para a qUl\1 ainda m:~im é ncce~~árill uma trllllsaç1io de harnlllll'nlo'l Ca~o li re~ptJ~ ln ~cj a pu'\iti\'lI. cxplique . 13. Suponha tjUC h~ /I C PVs em um b,llTóunelltu comum . A prohahilidnde de qualquer ullln thl" ('PV" tClllar o u:urmnento e1l1 um dado ciclo é p, QUill é li chan('e de : R.
b,
c,
14.
lI ~:\r
o blllTlllnento C~ tllf ocioso (O rt!lJui ~ i çix:s)'/ ser fcita cxalnlllerltc \111111 requi siçãu'! ~el re ita mais de uma requisição?
QUtllltO~ (:t unut:ullll'e ~ (: ros~bur
tem um Suo File E25 K complcto'/
15. SUlxmhn que o fiu entre u comutador 2A e o comutad ur 3B nu rede Omega $ de t)uem '!
1'(llIIpa, Qucm é dc~concctatl o
16. Hot SI)()IS (Iocalizaçõcs de memória quc recebem grandes qlllLlltidadcs de rererel1cia ~ ) ~ãl) cllIr:Ull('1l1e um grandc problcma em redes de cumutação multieslágio. Também são um problema cm si'\lemas ha ~e ados cm ban'lllllCnto'! 17. Uma redc de cUlllulnç:íu ômcga COllccta 4.()t)6 CPUs R ISC. cada qual com UIl1 tCIl1IX) de dclo de (jO n ~, a 4,096 Ill(xlulo~ de memória infinitamentc rápidus. C;lda um dos elementos dc conmtaç:io tem um atra~() dc :; IIS. Quantos compartimentos de :Itmso são necessários parti Ullla instf\ll,'ão lOAO'! 18, COl1sitlel'c uma máquina quc usa lima rede tlc comutação ômcgll, como n I1Il1stf<'lda lia l"igurll R,2;. SU llIlIlha (lHe ti prognuu:I e a pilha para o proccsslldor ; sejam mantidus 110 l1l()dulo de memória i. Proponha uma ligcint :rltcr:u;ão na topologia que raça uma gr:mde dircl'cnça 110 dcscmpcnhu (o IBM RP~ e u BB N Bultl'rfl y u~am essa topologia modificada), Qual é li desvantagem dessa sua nova topologia cm comparação COIl1 li o rigina1"
\
., 19. 1:111 UII1 muIIlJlrocc~sa d()( NUMA, rderêndas 11 memória local lc\'um 20 n ~ c rcrcrêm:ia,., remoia,., levam 120 n,.,. Um certo programa ril ? um IOlal de N rcrcrênciull à memória dUr:lnlC ,.,uu c:\l-"Cuçllo. das <jllllb 1% silo para uma pági na r', No início essa página é remota, e copiá-In l oca lmcnl~ leva C ns. Sub IjllUi,., condiçõcs li página J cvcria ltcr cupinda localmente nu ausência de ulili nçllo significmivil por outros p roccs~lldorcs? 20.
('ol1~id crc
UIII mulllrroccssador CC-NUMA como () da FigUfU 8,27, pnrém com 512 nós de 8 MR cada. Se as linha!> tlc cadlt~ têm 64 bylcs, qual é a porcentagem de snhrccarya pUfa os din.:t6rios'! AUlI1entar o mimem de nó.\, aumenta a .\oübrecarga, redu.l 11 sobrecarga ou não provoca nenhuma IIl1eraçãu'!
21 . Calcule
(I
d ilimclro da rede paro cada tupologia mo,.,trada na Figura K.3 1.
22 . Para clU lil topo log ia lIlostrada na Figura 8.:'\ I determinc 11 gnlll de tolerância à falha. definida como o mí mcro uliiJtirnll de eul;l(;c:, que pudem ~C l pc!rtlidos sem repal1ir 11 rede em duas.
1OI>oIogia úe toro duplo dn i-=lgura 8.31(1), mal> expandida par.. um lamanho k X k. Qual é li diâmctro tld r~k'! (Dica: c~lIs idcrc J.. ímpar e k par separada mentc.) 24 . Uma rede tle LJllercllnexàn tem a forma de um eubo 8 x 8 X 8. Cmla e nlace tem ullIa largura tle bandll full duplex de I (m/~ . QUIlI é 11 hlrgura de banelu de hisseçno da rede'! 25 , A lei de AlIIdahl limiw o aumento potcncial ele \'clucidade Ljue se pode conscguir em um computador pnralclo . Cill ... ule, W nLO lima runção
li
M CIO
M
•o
• •" •
~
•"o•
-,•
~
~
6
o u
• ,•
~
•
• •
" <"
27 . Nn lcxto foram di:,clltidas Irês variaçõcs de senel : !oíncronu, com bloqueio c :.tm bloqueio. Citc um 1I11urlu métudo Ilue :.cja :oll\l11ar à send com bloquciu, mas lenhu pm priedudcs ligt:ir:unelllc difc rcnt c ~ . C ite uma \'([nlUgcl1l e 11l1ltl de~\'uLl la ge1ll de ~Cll mélnclo em cnmparação COI1l a sond com hloC]lleio. 2 8 . Cl Il I~idere um u1UlIicol\1pulador que está eXecutando em lima rede com hardwarl! de broaclcà:oting, tul C0I1111 11 Elhemet . Por que ê imllOnullI e fi r.lzão entre 0 l>eraçõcs de leitura ~ ([s que não atlluli /um I) eSI;Jdo interno lias \'ôU'iávcb ~ e uj1er.l~:ÕC!~ de escrit;J ~ as que atuali7:J111 n estado int emn das variáveis'!
~
•
u
Lista de leituras e bibliografia
Nos oito caprlulos precedelltes furam discutidus lIluit ()~ tópicos C01l1 vários graus de detlllhc. Este çapftu lo pretende auxiliar us [d/ores interessados em se apmfundar no estudo da organi zação de computadores. A Selo'no 9. I Ctm' ~ m uma lislll uc Icilums s ll gcri~t as organizada por cap rtul os. A Seção 9.2 é urna hibliografia em ordem alfabética de todos os livros e artigos Ci llldos neste livro.
9.1 Sugestões para leituras complementares 1\ seguir apresentamos algumas leilur:ls dirigidas explicitamente a (,;;Jda capft uln, A maiori Ol é co rnpo~ l" de livros didáticos. tutoriais nu artigos de visilo geral. -
9.1.1 Introdução e obras gerais Borkar. "GclIing Gignsc:llc Chips" A lei uc Mumc provavelmente vulerá por nu rnfnimo mais Unlil déc,uJa. u
Colwcll. 1'1se P('f1/i//1I/ CIII'IJ/lide,ç Robert Colwcl1 fui o líder da equipe
Hcath, EmlJt'dfll'd SP/CIIU' flnig ll. r loje e ll1 dia. praticamente tudo () qUI;!
r1lnciona com elcllkidade c custa mais \Iu que 50 dólares lem um clll1lputadur incorJluradu. E~scs s is t cma.~ emhutid us são o tópico desse livru. O texto conu'ça CO rTI o básico de procc~~a d ore~ embutidos. memória c peri féricos. pHssando para interrace, s i ~ tel11as (lpcraci(lna i .~ de tempo real. soft ware e dep llru ~·ã(,.
I Jcnnessy c Patter,mn , Compllfer ",.dll·feClllrc: (I qll(1/1fifaril'e lIP/JH)(/('I!. ,~ ediçiio. Esse li vro didático. dirigido:) pós-gnlt.lmu;üo. en tru em grandes detalhes sobrc como projetar um pwce ~ "ad (' f e SUlImCI1lÓria. À ênfuse está nu obtenção uc aliO desempenho. e m CSI>cci íll pe);, explor:lçüu de pllmlcJi smo c JliJlelilling, Se Irui"cr saher tudo sobre projeto de CPU de tÍl 1; nHl 1,!cração. esse é o livro (IUC você deve eOTl ~ ultar. esselllial,~ o! C/JlllpUIf'J" orgallizlIIiul/ lI//l1 ",.rhifeefU re . Um outro livro didático subre ur·ga nização de computadores que abrange l1Iuitos dos lIlesmos tópicus deste livru. Ixxém com lIle'ltIs profundidude.
Nul1 e Lnbllr. Tlle
Puue rsun c H cnnc~sy. Cumpllll'/' OI"!t((lIIizl/fioll muI (Iesigll. ,~ nliçüo . À )a cdi ~'ão, que deixa de ler as m il p~ gi n as da 2ªedi'í'ãu. transreriu grande purte do tex to au C IJ-R() M {r ue fi aCOInpunh
384
'
.
..:aminlw de
dadt)~,
p,lralch ltmo. memórias, reriférit,;o~
t!
Chl!.h::rs. Emhora () Pemiu m 4 seja discutido e m diversns
pancllo, j) principal cXl!mplo par:! ex plicur os conceitos é o máquina !H S(' cOJllcrcia l, hlllvuda em 1985.
rfUce~sad()T
MIPS, projetado ror
lI e lllle!>.~y
c a primeira
Priec, "A hj~l()fy IIf ..:akulating IIlllchincs", bnhlll'a clltllptllauoft!l> modernos tenham corm!çildn com Bahbage no sécu lo XI X, os serl!) humanos têm feitll cálculos de:o.dc a IIU1"ora da (;ivililuçllo. Esse fascinante anigo ihlstmdtllru~:a um quadro dl1 hi ~ lór;lI da contagem, tlu llulIcm:hica, calcmlM;IJ)o c dilcu l o~ dClIodc 3000 lnrnnu-sc vcgc!ariano'! As rC~pl.l~ tôl \ ~"tão m:~sc livm fa"cinôltlte qUI:! contém biografias curtas de 34 ressoa), que moldaram u indihtria d~ cOlllput.. dorc .... de Charles [lnhbagc a Dona ld Knuth. Stalling . . , nllllllU/1'! o rglllli::llfiOlI mui "I"chile'·fllrt' , 6" I'dirtlo. Um tClIW gemi . . uhre ar'luiteurna de cOlllput,ulor..: .... Alguns dOlo tópicus tratados ne ... te livnJ também ... 1íu ab(Jfd;JUUl> Ih) 11\ IH de SI.llIil1g....
Wilke . . , "C{)lllJlIIII:!~ then :md ILOW". Umll hl\tóri,) pcs~üal de emnpuradores desde 1946 até 1l)6H pelo pioneilll pn~etil>la de computaclorl!S c uIVcntur UiI rni.:ruprogramaçao. t-. launcc WilkC!.. Ele naml as primeims ba talha~ entre os "cadell!s cln e . . paçu". lJue acreditavalll lia pmgrauHurào automática {prc-compilmlorC!. FORTRANJ, e o . . traclicillualiMa.... que prdcliam fa7er MIõ! I'rogmrnay:ln Clllllctôll
9.1.2 Organização de sistemas de computação BuehanaJl c Wibnn, J\l/l'(lII('ed IJC lI,.d,ilnlllre. Apc . . ar de um pou..:u de . ."rdelllllln, ..:s...e livro ullr.lIIge ullIa gnmde :írca referente a pfoce... sadore!>. h:.rnllllentus (PCI, SCSI..: IJSB). porta... (jUgl)... , paralda c :.criaI) lo! uutros componcnte.... Ng. "Ad\ ancc ... Hl dj\k Icchnology: I>crfomlance issues". Ilá q11C111 \ cnha prevendo o fim dos discos Inugnélicos há no mínimo 20 anos c. mesmo as~i m, ell!s ainda cstão pr": !>C l1tlo!~ . Segundo ": ~~I:! tinigo, MUI lécnnlngill está progredindo com muit:! rupidez, então provav..:!rnclltc continu1Irão sen{\tl UMtdo!> Ilinda por lIIuito . . tinos. Mc . .slllcr, nu: illlli\/ll' llI"llh/e Pí lum/ll·ore úook. -I oJ nlil'(}O. ('01\1 111)6 páglllll'" (divididll'" e1ll 37 capílUlo . . c 7 apêndices), e~se livm lalw.:L não ... eja indispen ... ável. mas cn1l1 ccrtel:l ~ VOhIJllII ... H. PI'atiC;UI1':III..: tudo I) (Iue há p:lIl1 ... al>er sobre pn.>Cc ......adnres 80xtl6. mcmória!>, hamulle/Uo... e Ill:riférl!':u~ e ... til :I(I UI ,,:ul1ItmJolo O!t d~talhcs el>lllrrecedorc~. Se você leu e digeriu o livro de Nurton e GooJman citado abaIXO c (Iui . . er p,I!> . . ar panj () pró>.imo nfv":! de det:.lhc técnico, ..:Sle é um hom eOll1c~~n. Nurttltl c Ot)I1c1man. Im;lle I/li: pc, !fI edirão. A nlaioria dos Ih ro . . ~ l!b(1! hardware tk PC~ é e . . crila para quem é fnnnado em Engcnhnria Elétrit;;I, fUh) que gcra um gnm tle diliculdadc de leitura para quem Irabalh;1 na árca dc soft ware. Esse livro é dircrcmc. Ele explica li hardwiLre de PC . . de um lllndo técnico mas muito acessível . Entre os tópicos ahordados e . . t1!n CPU, mem6ri:l. h'lrmmento), di~r.:os, monitur!! .... disposith'os de EIS. PC" portáteis, redes e omito mais. Um livro mo> e valioso. Rohimoil. 'Tnward lhe age of Mllarter slorage". O urma/cnamento percorreu 11111 longo caminho desde a época dll.~ memórias de núcleos (memóri a de fcrrite) e ell rt õc.~ perfur1ldos. E......e breve 1II1igtll!xamina pur omk undllu a tecnologia, ondc ela se encomra agorll e para linde e ... tll indo.
Sl:hcihle, "A ... urvcy "r . . Ioragc o(ltions". UIII uutm ..:xamc detalhadu dlltccnologia de mem6ria. :.ó 'luC focaliLando o que e... tá di slKlllívd ugora . O livro discute o~ v:iriu:.tip"", de RAM, memória rápida ( nu~h 1llcmory), fita, discos rígidos, discos ncxfveis. CDs c DVDs. Stun c Sl..adrnll , ··I'o..... cr-a\l, are cOlllputing". À mcdida que ri!> r.:olllJlutudores fic!Hn rnuis puderosos, elts con~omclll lIIuita cnerg iu. o (I\ll! é um problema c.Tc!tccnIC Cn1 11111 mundu cmla VCL mais portátil. Esse artigo é li illlroduç.1I0 dos edilores eOllvidlldos para uma edi ção c~ptcia l da IEEr. íOII'/JII/f'r MlIgfl'l.i1w ... nbrc computução e a preocupação corno I) cun . . ulllO de t:t1l!rgia. Trichel. 'f Irl' 8lJ UM. H{).JXIÍ, /lI/(/l'ellliulII pron'S!>o/'. É um pnuco difícIl cI:.~~ifie;lr CÍ>.-.t: livrn pois elc trata de hardware, ~()fl w.tre c interCace. Uma vez que li ,lUtor tmhalha pam :I 11l1d. "alllu!> diler que se tr.lla de: um livro de harJware. Ele conta tudo l>\lbre processadores, memória ~. di~p() . . ith O~ de: EIS c interCfl.ce dos ehips HOxH6, mas I:Imbém como programá· los em linguagcm de llluJllilgelll. Emhllr'j pO!t~Uil mt.:ril~ I) 15 páginas. contém quase tanTlI rmm:rial quanltl li liVrei de MCl>MIICf, já que as págin:ls srin !naillre!t.
9.1.3 O nivel lógico digital Flnyd , O;gi/III frllll/wIICIIW/I , tr' edjçiio . Para leih1re... inlcrc~.,allo . . CIl! Imrdwart: que d e~ejulII aprofundar seu e . . tudo do nível lógiCO digital, esse im t.:n ~ !tO livro. cuhmdo c llIat.l\'ilhIlSaml!nte ilu~lrado, é um;! I'crdadeira predos idmtc. Os capítultls ••bordam lógica CO/ll-
U">
00
'" • •"
m
o
~
., • •• • •
~
•
~
• "
~
~
o
• " u•
1
M
himtdunal . disposilh'os h'igicos prog,r:uuá"cis. mp-1101'S. regislnldnrt' de deslocamentu. memórias.
M:IIIIl c K imc. LoS;!' rlllt!
•" o
",•
~
ao
u
• "• ",• ,
-
w" o
illl~'rf;,("c
c
muitu Hluis. c'(}III/ItIIt>r (Ie,rigll !I//u/ml/rnltr/,f .
.f' I'tlirrio .
Embora esse livro nno lcnh41 n aprescl1Iução clcgalllc do livro de Floyd. Iôlmtlém é umll hua referência pam u nfvellógico digital.l\horda cin.:uitos cumbirlildo nais e
~eqüc n c iai s. regi~trad{}rcs.
mcmÓri(l(. projetu de C PU C EIS.
Ma)'hcwe Krishnun. " PC I cxprcs~ anti advunccd ~w itching" . O pC! E!l.press pruv,wellllcnte substituiráll b.1rr:trllCIlIO PC I nu fuluro próximo. e c ....e :trtigo ofercl'C um tu torial para camadas. cOlllmlc de fluxo, cmmis \'irtunis. comutação e roteamento.
Ma7.idi e Maz.idi. J1/e HOxRti 111M PC (//u/l 'Oll/I)(l/iIJle colllf}///erl'. if' I'
F'amlcitores interessados em entender '000$ tiS chips existentes tlentro de UII1 Pc. esse livro rO$s~ui capftu los intcims sobre os Ilrindpai~ chips, bem como umll profusão de Qutras inforlllaç~.. sohre I) hanlw:lrc til) IBM PC e ti programação em Iingullgell1 de muntagem. !-toth. PUllllalllt'll1(/f.f o/lfJ8it'
9.1.4 O nível da micro arquitetura
~ ~
• C • N
-'"
o
Ilurger e Goodman, "l3illioll·transistor architectures: there anti baek ag:lin". Suponha que ell1 1997 alguém tenha dado a você um bilhão de tmnsistore.o: e dito: "Prujt'tc UII1 chip". Que lipo de microllrquitelum você projetaria? Em ~ett'lIlbro de 1997. as visõc'O: de sele pesquisadores nA área da arquitctunt n quem C~~1l pergul11a foi feita fUTam publicadas na IF.EE COIIII1Ufcr M//Il(lt.illt'. Sete anoo; mai .. tarde. " Ull~ previ ..ilCs foram compnmdas com a lecnologiu de pont:t du época. Handy, n/e ('(IeI/", mem(//)' book. 2" edipl0. O projeto de ('ache é tão illl]'llnnnte que ugom ex istem livros inteiros sobre () assunlO. () livro de Handy di ~ cute cm:hes lógicas em comparação com cllches ffsieas, tamanho de linha. polflic,ls de co:crila direta cm compara~'ão 1,'0111 as de: escrita retroativa, cachcs unificadas e lll compamçl\n COIl1 eaches dividid
Jnhnsnn, Super.tt·(/Iar II/icro{lroa.u or dt'SiRII. Para leitores interessados nos detalhes do projeto de CPU supcresea l:tr, essc livro é
Ele aurnnge busca de insln/ção e decodificação, clllissãu de estaçõcs de n!-'\Cfva, previsão de desvio, entre tJUtros
fl
indic:tdo pam comcçnr.
instnt~'ào fom de ordem , renolllcaçilo de registrador,
a~su ntos.
Shri\'er c Smi th . "The analomy of n high-perforlllalwe lIlicroprocessor". Esse livro é uma boa il1dicn~'ão pam o estudo detalhado de um modenlu chip de CPU no nfvel dn micrmu'quitctUH1. Examina del:llhudlllllente \) chi p AMO K6, um clone do Pemi um , dando ê nfa~e an para1cli .. mc,. nu e~caltlna mcnt\! Ih: ill ~t l'll ção e a oti1l1izaçõc~ de dcsCllIllCllho. Sill1:1, "Superscalar i/lstructiul1 issue'·. A qucstiio da illstr\l~ão s\lpere~ca lar é cada ve7 l1U1i.. impurtante em crus mClderna ... Algumas dus tlueo:tiie.. silo alxlItlndas nesse artigo.t:l1 como rc nomeaçilu e execução especulativa. Nesse anigo são ex,lI11i nadas cssn .. e muit:tS UI/Iras questões. Wil~on,
"Chn llengcs anti
Irend.~
in proccssor design·'.
O projeto de prncessmJor está morto c enterrlulo', Nem pe nsur! Seis dos
1I1elhorc~ rlnILLitct()~
de CPU
Cyrix. MI)tmolll. Mipo:, Inlcl e Digit:ll nos di7.Cnl poro onde (l projeto de CI'U está se dirigindo nos Será di vertido ler es~e livro em 2<XJ8 (mllS tn1l1hém vil le il pell111ê· lo agora).
próxi1l1{l~ 11110...
'
9.1.5 O nivel de arquitetura do conjunto de instrução (instruction set architecture leveI) "l1lonllko~ .
'/71(' IJl'lIf;//lIIlIIiaopmrt'.f.w/'. Os pril1lcil'O~ nove capftulos desse livro Irnlmll de cOllln programar () Pentium em lingllHgelll de Il1ml1ageltl. Os últimos uois tratam do hardware do Pemitlrtl. Sito dados v!lrios fra gmentos de código. e n BlOS rece be um 1I atalnCl1to clllupleto. Ayala. '{1It' HQ5Imif'/'ocml/mfler. JU ('(/iriio . Se você e~ti\'er interessado em apre nder a prugrnmar o 805 1. e~"c livro é \lma 01X;iiu rnlflávcl para COll leçnr. Bry:1111 e O·l lallaroll. COIIIJllIIl'r .fyJ/em.f: a pro8mlllllll'l' ·.~ Ill'I',ff't'f'li!'f'.
Em1>onl um puuco desurgani zado, esse livro nbrnnge uma :lmp!:! área rela!i vll ao nfvcl rSA. illdl1indo .tritrnétipo~ de instruçUcs. cuntrole de nuxll e otimização lte prugrmnn.
tica, tli fercnt cs
Paul. SIJARC (l/'(: llile('/lIrf', lI,u em/,ly 1t1llj.1/C(I!lt'. P'WlI'(IIII/IIil/g, lIIul C. Maravilha das milr.tvilhll~. eis um livro .. tlbrt' programaçãu em lingungem de montagem que não InUa da linha IlItel 80xR6. Em vez disso. tratu dil SPARC e de comu prognum1-1o.
\,
I
""
Wl!ilvcr
I!
( i crIllIlJld ,
.....
1'111' .\'PARC Clr{'hitet:lllre III(IIII/{I/.
('om a C l't.: ~ccnl c ilHcmadonalilaçiio da indlh tria de computadores, os padrõcs estiio se [Orn;luJo cadll VCi'. mais importantes. por I ~S !l é inJbpcnsâvel estar farniliarizmln com eles. E.~sc li\'ro traIa da deli lli ~ 50 da Vcrsiio 9 da Span:
c dá urna hl)" idéia dI.! ..:omn é UlIl padrão, além de
ll1 ui[a.~
infonnw.:ôcs sobre o m{)do (Ie IUJlc:iollamellto da Sparc (Ie
9.1.6 O nível de m a quina do sistema operacional
• •"
ti arl, " WiI13:! :.y:.ICtll pn!gram ming"
.o
6-1 hÍls.
[) ifereLllcJ11en lc de ([liaM.: (mlus os outros li \ll'O~ !:Ioort! WindoWll, esse ni'in se deté m IHI inll!rface gráfica de II SII ,l rio (0 11 nem li llhord,!). Em vez dis!)u, concerllra-se na ~ chamadas {te sistema oferecidas pelo WilJdows e C0 ll10 IIS:tla" para aces"n li arljui\n, gercm: il1lllCnlO de memória. gCI\!llcialll':l1lo de processo , cOlllunicação e nt re pruce sso ~, Ih rc il d~ , I:JS c (JUlm , ló pit:(h . i ~~ u cs {Ir implemenliltion". Se qlli: c c), l r u ttlru~ T I.U c ilus tra ilS i dé i ;( ~ usando I I~ processadores M1PS, PowerPC c PCl ltium .
J:u.;uh c Mudgt:. "\ il tual mCllw ry:
M c K\l ~ir.:k el
o/ llI l' .J•.J JJSO operm;ng .\·)'~ I e lll . Direr':lllcl1lellh.! uu llluiorla do:> livros sobre UN IX , cs~c cOlm;ça com uma f010 do.s quatro autores em uma Conre rê ncia USEN IX ( USEN IX Conrere nce). três dos q uai ~ escn:veram grande pane do 4.4 USD e são eminCnh!lIIente q uali lic ad o~ para explicnr seu funcion<Jmcnl() intcmo. O livro abnlllge as chamad as de ~is tema , processos, EIS e po~ ~ ui uma seção cS]lcciaJmenle bl)a sobre redes.
.11..
J)f!~ lgllllllll imp/elllt!/I lluio/l
Ril Chic e ' l1ln mJl ~oJl . "Tlle UN IX time-sharing syslem", Esse é () anigl' origi lw l ]luhlica(J() sobre n UNIX. Aindll vale a [)Cnll le r 61il110 ~ is t c lll a ope nu:iol1aJ.
dessa peque nu scmcntc surgiUlL1ll
Ru ~s ilU J\fic h e SnJolllon,
lI/sitie Microsvf l Windows, .JU ecJiç(io. Se \ Dei! qui...er ~llbc r corno () Windows ruuciona inlern iI1llc:nl t!, esse Ji vTn é ti md hor lJpçi\o. Elc di scute iI nrqui ~ lel ur:1 e u~ lll ec a nj ~lI uh do ~ i ~ lcma , processos, Ilm!llds, gere nciamelllo de memória, seguflIuça, E/S. cnchl;! c s i ~t C Il I;I de urqu i\O, cnlre uutro." tópÍ!.:us. O livro é um eSlluln dclalhad n e prorundo dirigido a cstudnllteS de C iência da COlllpu tilçiio c pro tb si(lIlH b ue Tecllologill da Informação, Tllllcll haulll c Woodhull , OJlt'mtillg s)'$l rm,~ : tlesigll (//u/ implemr?l/latioll , 2" edir âo. Dife rentcmcru e da maioria cios livm s sobre sislemas (lpcradonais que Inu am apenas da tcoria, esse livro ahra nge toda a h: ()fi.l felc"lmlC e ri ilustra disculÍndo o códiso de um sistema operacional parecido com () UN IX, o fvll NIX , que exeCll1a no IIl M PC c em outros comput;Jdorcs. O código-fome é apresentado em umlll>êndice acompUllhauo dc mui t a~ IOb:.e rvlHiõcs,
9.1.1 O nive l da linguagem de montagem Lev ine, I.il,KeI',\' m ll/lom/el"\". Se n se u l1e!l Ó(' i ~l .s ÜO ligadon:s e ca rrcg ado rc ~ e você Se di verte CO I1\ os v~ rio s ronnmos de obj elos exislemes, a djrcren ~' a elll !"e ligação e~l át i<.: a e din5111 icil c os vários t"m malos de biblioteca, t:~se é o livro pilfa \'ocê, Salol1\ulI, A I.I·('lIIblel I wul /o(ulers. Tlldo () que você quer saber sobre o modo de funcionrlmelllo de asscmhle rs de uma passllgclll e de duas passagens, hem CO lllO tle ligndores e calTcgadores, está aqui. Mueros e mo ntagem condicional lllmbé m são a bmngidas.
9.1.8 Arquiteturas paralelas de computador AlIv.: c U harilchorlotl, "Sh arcd rnelllory consistem;y Jl1olld s: a tuto rial", Mu ilO~ complll adore, nllld cmos, em e ~ pec i n l mu hiproccsslldorcs, suportam um modelo de me mória mais fraco do que iI cnll ~ i ~ t ê n c ia ~cqil e n c ja l , E s~c IU10ri al di ~t'll t e vári os Jlllx lt!lns c explica como eles funcionam. 'nullhé m cunfi rma IIU reruta v:irios mi tos sobr.: memória de haixa ctlll ~ i sl ê nc i a . Come r, Nt:III'nrk .1)'.IIe IllS (ks igll. A pri mdr.1 pane de s ~c liv.(o lr:11a do lradid ollill proccsso de empiu.:O!ume nto em red es, mus II segunda introdu;>: procc~ ~lId (ln.!~ de rede e do.:scrcve sua fin alid ade, arquitelura e comprom issos de projelo. A terceira parle ex a~ llIilla o 1)fl){;C:. l 'ril/á(J/t-l' mui pj"(lf'lice,ç o/ itJlCI"('OIlIwc'tiollll efIl'O/·h. Se vllc e t,! ~ ti \"t=r int e re ~s ad (ll! rn redes de illlerconex flO , e~ se é () li vl"O a consultar, Após ullla introdução à IOI"l()logül , ~ã\l e~ l lIltiid a~ fedi,!), !l(}rho le ta, redes tom t,! rcdes não hloqueadoras. Em st,!guida aprcsc l11 am-se alguns capfIlll tl~ ~ ohre rnlcalllt:111o, cll111m le de nu xo, buffe rs, deadlock e q ll e~l õcs re lacionadils. Dung.lrra ':l aI., '011' Sm ll'l "'book of(w mllel nl/llpltling. Progralllllr 1I1l1 ll i proccíl~ad o rcs c clusters é h~ m cli rt,! rcntc de progrumar unipl'{){;es sadorc.~. Nesse livro, ~C l e e: lídc re~ na árca abordall1 vlíril)S aspecws da prognullação paralela , e nt re eles arquiteturas paralelas, IccIL ll l ogi a~ de ~ o H w~u .: , algori tmos paralelos e a lgumn~ al,licaçbes.
J
00 M
~
o
~
• • •
~
"
m Q
"o. •
u
tO tO M
1-111 1.
" Multiprt)cc!ls~lrS
shlluld SUPlXJrt simplc mcmory-consislcncy 1l10dcls", . de memória alt:n um.lu é UI11 tópico pulêm icn ~ controver~u e m projeto de memória de multipn1ccssador. Modelus mais fracos pennitcllI ccrtllS otimi7.lI~·ões de hardware. como fa1.er rerCr~ t1ci3~ fora de ordem. lIlas dilicultaru a programação. Nesse artigu, \) ;tutor di scute muitas Ijuestôes rclcv:1Il1c" IJ;l nI a c\lllsi~ tência memó ria c concluj que a semântica atenuada não vale os problemas que cama. A
se lll ~lIlica
uc
••" o
~
•o
~
8 o u
•
~
• •"o
~
o
"
•
~
o
~ ~
• N
o
•
~
O
f-Iwang e Xu, Scalobfl' J1/1mllC'/ r O/"fJlllillR. Auonln nd n () hardware e também o so ftware. os autores nprescnlmn um pamU'lIIIIllnibilb:ar esses rec ursos ti usuári us 1Il 6"ei~, Os dois nrtigm <:egui nt cs li c<:se (lIlI1 bém tratam de grades scm fio . r'fister. 111 .rearc ll 01 d/I.f/ers, r 1!(IiÇfio. EmbunI a d e n"i~'ã() de cluslcr não npareça até li p~g in a 72 ( 11111 pun hado de computadore" complelO<: que ImballUlIll em conjunto), elu aparentemente inclui todos os s i~(cl1lu S rnultiprocessadores e mult icumputauo l'cs us uai ~, Seu hardware. software. descmpenho e disjxmibilidade são cstudados cm detalhc. Mas ud \cn illlo<: li leitor {jue, cmbora no início o estilo eng nl~'adinho UO Autor sej .. interessante, lá pe la pátl ina 500 " novidade j~ se esgotou . Snir et aI.. MPI: 71/e colI/plete refe /'ell('e IIImllU/f. O lítulo diz tudo, Se você t]uiser aprender 11 programar e m MP!. consulte es~ livru. Ele al1 rangc ccm mnicação l>onto a ponto c coletiva. cOIlltlllicadorcs. gercncimnc ntll ambiental, delenn in..ção de perfi l e o utro ~, Stenslrorn et ai .. "'rends in ~ hared memory HllIlliproce s~ illg" , Embonl enuhiprucessadores de memória compan ilhadll sejam freqUentemente COllsidemllos como tiUllCrCOC!1put:ldores puni cálculos cientfficos maciços. na venl.. dc essa é njJCmL~ uma d imi nutu fraçãu d(' seu mcrcadn. Nl'~se ilrtigo o nUlOr discute unde se Cllconlr" u real mercado p.lrn cssas máquil111s e quais 1I~ irn plicuçOes quc isso aC:lrrc la para sua artluitelura. Ungcrer et aI.. "A survey uf prucessors with explieit multithre:.ding", O artigo C'xplicO! comu runciuna cada um dos principai s tipos de mullithre:ldillg - gmnul,,~':lo li na. gOlllul:l\;ão grossa ~ simultâneo - c dá vários exemplos de compmadorcs tl re-:II e preocupações CO III di ssi paç~o de cncrgia, Entre us de software estão Ilucstõcs de $istcmas o pcraciullais e pote nciai ~ prubl c llla ~ de segu rO!nça ,
9.1.9 Numeros binários e de ponto flutuante Cody, "A nalysis of prupo ~a l s ror the noat;ng-point standanl", I\ lguns nrm,<: "lr~". o IEEE projetou urna an]uitetum de ponto nutu unle que se turnou () padrilu de fi lf'1fI pllra tudo<: 0<: chil's de CPU modernos. Cody d iscute a.<: várias questões. p.-ol>05ta5 e c()llt ru\·ér~ ia .. Il ue ~urgir:lln dumnle t) processo de padmniLnçãll. Koren. Compu/c /' ari,hmet;c a lJ(Q/'ilhms. Um livro completo "obre aritmética. com ênfa<:l' em algurilllloll panl adição, 111\1ltiplicaçãu e d iv i ~ilo rápidll", Muitu recomcndado para quem acha que j~ "prcndeu 1Udo o (11Ie há pllra O!prender sobre llritmética IUI "eX !:I ~é ri c.
Imm, 1'1'0(', vi lh e /1 ·11, SymfJo.fi/l1ll OIr L'tmrpuler t1r;IIImf! lk . 1\0 cOlllrárin da upinhl0 popular, :I aritmética é uma área de pesquisa íltiva cOlllllluitos aniJ!.u<: c icr1trfico<: eo:cri tll~ por e p.ll a e~ peci "li s t ,,<: , Nessa ~rie de simpósios são :lpresenlados u<: ilVanços em udiçllo c r m rlt i Jll ica~'ãtl de .. I\ll ve locidaue, h:mlw:!re aritmé tico VLS I. l:tl-processadorcs. lolerancia u f:llha e O!rrelltlrldmne nto, entre oulros hípku~ .
Kl1 uth. St'lIIimmeeri('{11 lllgfJrillclll.f, .fI n /içl1o. U ma profusão de nI:l\crial sohre sistemas de números posicio nais, nritmética de IXUlIn nu tu unte, aritmética de preci~1io IIniltipla c 11lí1l1erus aIClItório<:, F.s"e materia l re4l1cr e mercce cuidadoso eSlud(l, Wilson. " Flnllliug-poiut stl rvivnl kit". Unm interessante intrnduçihl a ntlmeros de ponto nu tuan te c radJ'õcs parJ quem llcha que " mll ndo acaha em 6~.535. Tamhé m silo diseuI idos algllll<: pudrt1es de Cll l1lp'lra~·ã() l)t)pularcs puni algori tmos de ponto nUIUanle. l'omo
J.iupud.
\
,
'.
m
9.1.10 Programação em linguagem de montagem Blul1I, j 'mjl: \'.\ifll/ill m~I'lIIbI)' ta/lguage Uni guia parA pr,)thsionuis !>obrc a programação do PentiullI cm linguagclll de montagem. Uma veL que CllivfIl é oriCn\lIllo para pmfi!>!tinllab. o autor ~nlcndc 'Iue voe! está executandu LiIlUll em !teu Ilentium c fucaliza o asscll1 ~ hlcr Lil\u ~ c rerramenta:. ( iNU, bem como discuti: as chamadas de ~ iM c ma Linux.
Irvinc, A HtmlJl)' hwgllagl! IfI"
inlt'l-hasetl ;O/ll/JII /I'rS, 4 u etJiruo,
Prognull ur CPU~ Intel em linguagem de rnolllólgcm é o assunto desse Ih'f{). Tamhé m ah range programaçiio de EIS, mncro:.. arlJu j\ m, l; g:J~ãn. interrupções c muitos outros lópicos relacionado:.,
CIO M
-•• '"o
n ~
9.2
•
Bibliografia
A DAMS,
~I :
••
•
I)UI C HI NOS, 1). "ül>cnCablc", IEHE CO/mll/m. Magflljlle, v. 39, p. 'J!:I- I05, jun. 2001.
ADIGA , N. R. CI ai "Au ovcrvit!w (lf lhe bluegenell SlI pcrcomplllcr". frac:. .wpue(}tlll'lIli"g ]002, ACM , ]l. 1-22, 2002. . AD VE. S. V, ; ( ' IIARAC HORLOO, K, "Shared rllc/llory consislcncy lUodcls: llllllorial". IEEE Compmel' M agaz.ille. \ .29, p. bó-76. dcL 1996.
•
~
•
~
• •
ADVE. S. v' ; III I.L, M. "Wl!uk ordering: a new ddinilion". Pme. 17/1, AI/li. Im " S)'mp. 011 COlllpUft>r An·" .• ACM, p. 2-14, 1990.
OI
AGERWALA , '1'. ; COCK I:, J. " High performance rcduccd inslruclion sei proccssors". IIU.·' 'I:J. Wal~()n R e~ctln: h ('énlcr Tcchnical Rcport RC 124 34, 1987.
•
ALAMELDEEN . A.R.; \VOOO. D.A . "Ad:tPlive cache cOlllpression for high-perform:Ull;e pmcessors". Pl'Ot·. 31.11 Ali/I. 1", '1 S}'I/I. 011 CmllllllluAreh. ACM , p. 2 12-223, 2004.
u
A I.M ASI. US el .. 1. "Sy~h:1ll II1l1nugcmenl in lhe bluegene/l sUllCn:ompulcr". Proc. / 7111 1111 " Ptlralfel muI Vil/r. P/'Oe. Srll/I'., IEI: I:. 20nJa. . A LM ASI , O.S. CI ,lI. "Ali uvcrvicw 01' lhe hlllcgcnc/l p. 561 -574, abr 1003h.
~ys l em
software organi.talion". I'CJr. P/'oe. ultl.'rJ·, v.
t ~,
AMU. C.; COX , k; DWARKADAS . S.; KELEII ER. !l.; LU , H.; RAJA MONY, R.; YU. W.; Z WAENEPOEI., W. "Trc..dfl,·larb: ~ Imrcd mcmory cumpul ing on a nClwor k of wor),:,slUlions". IEEE Cml/fllllt'I' M agazi/te. v. 29. p. 18-2H, 1'0;:\. IIJ%. ANDERSON . D. Ihlil'I'r.IfI/lfrillf Im.l· .\·)'slem tII·clli/l't:lI4re. Reading, MA : Addj~()n-Wel>lc:y, 19')7.
ANDE KSON, D.; BUDRIIK , R. ; S HAN LEY, T. " CI Wc~lc )',
t!),'presl' s)'.Hel/l (/I'/·lu'leclI/re.
Kcading, MA: Alldh on -
2004.
ANDERSON , T. E. ; CLJI.I.ER , D.E.; IWrfERSON , O.A .; equipe NOW. "A case for tions)".IHI:E Afll'l'/I M Clg(jÚIlC, v. 15. p. 54-64.jun . 1995. ANTONAKOS , J.L.
n /f
II()W
(nelworks oI' worksta-
pemiwI/ mil'roprm·t'J'sor. Upper Saddlc Ri vcr, NJ: Prcntice lI all, 19')7.
AUG UST, D.I., CONNORS , D.A.: MSI-ILKE, S.A. ; S IAS, J.W.; CROZIER , K.M.; CHENG , H.e .: EATON, P.R.; OLAN IRAN, Q .B. : !-I\V U, W. M. " lnlcgr,lIed preclicalcd and specultllivc execulion in lhe I MPAcr EPI C ó/rchiI cc lun~". Prol'. 251h A/li! . 1", '1 S)'mp. OI/ COlI/fJl/lel' Are"., AeM, p. 227-237, 199R. AYA LA, K.
nU' 8()'iJ MicrtJt·oll l rolfel'. 3. ed. Clifton Park, NY: Thomsoll Delmar Learning, 2004.
BA I.. II.E .; Pmgftll/lming l/isII'i/)lIIeIJ s)'.flem.r, !-Iemel Hempstcud, Englund : Prcnlice ',1:111 Inl ' I, 1991. BAL. 11.1:.; UH01:])JANG . R. ; HOFMAN, R; JACOBS , c.; LA NGENDOEN, K. ; RUI IL . T. : KAAS HOEK, M.Fo "Pcrf'lrmance e .... luatiun of lhe urca ~h
C,.'"
Jall./fc\ .
19~)g.
BAL, H.E.; KAASHOEK, M . I ~; TANENBAUM , A.S. "Orca: a tanglmgc fnr parJllel prognmlllling \lf di slribuh!ll 1ro)' ~l clll~ ". II::J:.E Tl'lIn.\. 1111 SO!IlI·{/rt~ EI/gitt ecril/8 , Y. 18, p. 190-205, mur. 1992. BAL, H.E.; TA NEN IlAUM , A.S. " J)islriLmted progrulIlming with shurcd dala". P/'Qc. 19HR 1", '1 COl/f. 1.l/l/81111gl'l. IEEI" p. 82-91. 19H8.
0 11
Compufl'r
BARROSO, L.A .; UEAN , J. ; IIOLZ LE. U. "Weh search for a planei: lhe gnogle cluSlcr an:hi tccture". IEEE Miem M{/M(dlle, v. 23 p. 22-2g. mar./abr. 2003. BEC III NI, A.; CONTE, T.M.; PR ETE. C.A . "Opporwllities and challcngcs in embcdde(1 Syslcms". IEEE M il'ro MII811'l.illl!, \ . 24 p. 1i-9, jul .l
BERMA N, I'.: POX G.; IIL:.Y, AJ .G. Gritl C'OlIIpllli llg: /lU/kil/M lhe glolm/ Juh ll Wiley, 200 t
;1I!m'wI'//('1II1'1' ti I'1!1I/i1J'.
B.lO I~NSON. lU) . "Linda 011 diSlribulcd mClllory Ilwltiprocessors". Ph.D. The~ i s, Ylllc Uni\'., 1993 .
lIohoLell. NJ:
o ~
•
o
'"'"
BI.UM, R. Prvfl'ssh}//tll assembly hIll811"ge. Nova Yurk : Wilcy. 2005. BLUMR ICH, M .: CHEN. D.; CHIU. a.: CUrEUS. P.: GA IM.I\ .: (J IAMPAPA. M .E.: IIARf N(i , I~ . A . : HEII 1ELHERGER. P. : HOENICKE. D.; KQPCSAY. O.v .: Ol-IM AC HT. M. ; STE INMACHEH -BUROW. O.D.: TAKKEN, T.; VRANSAS , P.: UEB SCI-I . T. "A n o"crview oI' th!! IllucGcne/L ~yS I C I11" . IBM J . f?e,H!(II"('/' IIIU( d~l ·e l .. v. 41),
nmr.lmaio 2005. 130RKAR, S. "Geuing
giga~cnl e
chips".
QIIl' IIC.
p. 26 33. ou!. 2()(J3.
HOSE. P. "Cumpmcr nrçhitccture rcscarch : shirting priorilics :md IIcwcr challengcs" , léF.E Mil/'o MaWllil!f'. v. 24.
p. 5. tllJv.lJe7. 2004. DüUKN IG IIT, W.J .: DENENBERG. S .A.: MCINT VRE, D,E.; RANDALL. 1.M.: SAMEII. A.I/. : SLOTN ICK. 0 .1.. " 'Il!t~ illi;u.; IV syslcrn", I'roc. IEEE. p. 369-38R. abro 1972.
I3IHGIITWELL. R.; CI\M P. W; COLE. D.; VEHENED ICT IS, LEI.I\ND. R.; 'IQMPKI NS. J. : M,\cCA IlE. "An:hileClural spccifi\:
0//
COIIII'II/er
ACM. p. 90-101, 2004.
Ci\LCU1T. D.; COWi\N, E; I'ARC HIZA DEI-I. '-I. 805 1 M iaocolllmller.r: al/ al'plicafio// f ho.w,(1 il/lmdm'/ iOIl,
Oxford: Ncwncs. 2{)04. CA RRIERO, N.; GEI.ERNTER. D. "Linda in COrlICXI"". Cnll1l11ll/1.
/lJ lhe ACM. v.
32. p. 444-45R. abro 19R9.
CII ARLESWORTH , 1\. ''l"hc slln lireplane inlerconrlccl". IEEE Mia0 MagaÚlle, v. 22, p. 36-45, jun.trev. 2002 . CHARLESWORTH , I\. "The sun fireplane inlercollnccc. !'ml.'. Cnn! ml lligl! I'e/f. Nt'/lI'urkil/g (///(/ COlllpu/i//g. ACM.2ool . C H I\RLES\VO I~TI-I ,
A.: PI-IELPS. 1\.; WILLlAMS . R.; GILBERT. G, "Gigaplarrc-XB: cX lcnding lhe uhm enlerprisc f;lnlily"". "'/'O{ '. /10/ Imerl'OlIIlf' I'/S V. IEEE, 1998 . CII EN. L.; DROPS II O, S.: ALBONES I, D.II. " Dynamk (hua r.!cpcnúence lracking anti ils aplllil-alion lo hrlllwh prcdiclion". Pml·. Nimh Im 'l Sylllp. OI/ Higlr -Pl'Ifol"llrtl //ce Compu/f!/" An ·h.. IEEI :. ]l. 65-78. 2{)OJ. C I-I OU, Y ; FI\ HS, 13.: A!3HA I IAM, S. "Microarchilccl urc oplimi zalions for cxploi ling rn e llHlry~leve l parallcli ~ m"" . CQ ()/"o I'. ll.H A//II. 111/ '/ S)'IIII'. 0// COIII/}/IIer A reI! .. ACM. p. 76-77. 2004. CLAI\SEN, T.A .C.M. "Syslcrn 0 11 a chi p: c!mnging ic dcsign loday and in lhc fulurc ". IEEH Mia0 M(/~(/;il! (,. v. 23. p. 20-2(,. maio/ju n. 2003 . CODY, W.J . "Analysis of prop osa l ~ ror lhe noaling-puint Slirndanl" . IEEE COIllPu/ I!!' Mogar,illc, v. 14, p. 6 .'-68. m:lr.I981. COHEN . D, "011 holy wars anr.! a rica for pcacc"". IEEE Compu/e,. Magazille. v. 14. p. 48-54. ou !. 19RI. COLWELL. R. n/f! pelllil /m cJl/'(mide.~ . Nova York: Wilcy. 2005. COMER. D.E. Nl'III'O,.k .fysle/ll.f (le.5ig" usillg lI elWo/'k 1I/"OI'('sm rJ : agen' l'el'J;m/. Uppcr Saddlc Rivcr, NJ: Premire 111111. 2U05. CORAATO, F.J . " PU I as li 1001 for syslCIII pwgrurllrllil1g"". lJ(lfamm;oll. v. 15. p, 6R-7G. maio IY6!J. CO RB /\TO. 1-'.1.: VYSSOTSKY. V.A. " lrH rodllClion aml uvervicw llf lhe lIIultics sy~ I C 1l1 ". 1) /(1('. f-'JCc. p. 185196.1 %5. C I ~OWLEY. P.: FRANKLlN. M.A.: II AI) IMIOeiLU, H.; ONU F I~YK, P.Z. Ne/11't1rk P/'f)/'f'WI /" d('.~i~l/ : ; fJ/(t'f (///(/ I,mclie('s. v. I. San rnHlci~ co : Morgun Kuurmltl1JJ. 2()02. IJALLY. W,J .; TOWLES. B.P. I'ritwillle.f alld pl"flefire.f o/ illlen'Olllll'c(;OIl IIl'lwO/"h. Sal! Fr,lIlci'll:O: Morgan Kflu frnanll. 2n04. DANES I·IBEH . A. K.; I IAS/\N. M.I\. "I\rcu effidenl high spcccl cl liptic curve c ry" r ol "'(K:CS~tH' ["I Ir ramlurn c ur\'c~" . 1'1"(/ ('. 1,,0 CIJ/!f. 0// lI/f. Tel-!t. CodiI1XSI}f!m/tllil'l' t;'ff' ('/I(iol/ fIIul COII/puNI/X. IEEE. p. 5!HI-54J. 2UU4. IJEAN.I\.G . "Effk icnl real -lime finc-graincd cuncurrellt:y 011 l ow-cn~ 1 Ini croc o rrlrollcr~·· . IEf~ /~' M irro Moga;.im'. v. 24, p. ]()-22, ju l.fago .. 2004. IJENN ING. P.J . "The working seI mudei f(lr progrmu hehavinr". COnUlHnl. 01' th(' ACM. \'. 11 . p. :12J-JJJ. !!trlio
1968.
1
IlIJK Sl RA ,
c.\\'.
"Gultl ~ lrll clllC: 111 con~ idc red harmful". COIII/ll//II. oflhe ACAt,
DIJKSTRA , h .W "CtH)llCl1lling ~c(lllenlirll Ynrl : ACill!u lHc Pn.:~~ , 1968h. DONALDSO N Ci .; JONES. 1). "Cahlt': 31), p. 112· 116, JUII. 21M)!.
proccs~es".
ldevi~iou
v. 11 , p. 1.0· 1-18, mar. I96Ha.
In: GENIJYS. F. (ed.).
P/'Ogl'(JlIIlI/ill~
hmgu(lge.\·. Nova
brolldhand Ilclwork an:hileclures". IEEE Commllll. Magazi/le. v.
1)()NflARRA , J.; "OSl'EI{ . 1. ; FQX , G .; GROPP, W.: KENNEIW , K .; TORCZON . L. ; WIIITE. A. nu' l'O//I·ccbooJ., i~r /mwlld "IIII("" il lg San Fr.lI1ci scu: Mnrgall K:llIrmulI, 2()03, DUBOIS . M.; !'lC HEURICH . C.: BRIGGS . F.A, "Metllory accc~s huffering in Im 'f S) IIIIJ. 0/1 CrllllplllCI' ArcA , ACM, p . 43-1·4-12. J9K6.
IIIl1hiproccs~ol1i" .
Pro{', 13111 Ali".
OIJLONCi , C. .. n,c IA -64 archileclurc aI worl". IEEE Cunlfm/tI' Maga zine. v. 31 , p, :!4 · 32, jul. 1998.
.... 39. p. IH - In~ . j lln . 2()C11. ESCIIMANN, I ; Kl.AUER . U.: MOORE. R.; WALDSCIIM IDT. K. "SDAARC: A n EXlcndetl cache-only mcmu· r )' un.:hi!cCIII I\!·'. II!EE Alia0 A!{/Kllz!m', v. 12, p. 62 ~70 . muio/jllll . 2002. FAGG IN, 1-.; II OFf. M.l.:..; Jr.; MAZOR, S.; St-IIM A. M. "Thc l'lislory of lhe 400·t". IEEE ""fiao Mag(ll.inc, v. 16, p. 10·20. nu\. 1996. FALC'ON . A.; STA RK, J. ; RAM IREZ, A.; LAI . K,; VALERO, M. " I)rophel/crilic hybrid bnuu:h Ilrcdiclion". ProC. lI/h AIIII. 1111 '1 S)lIIJI. /111 Compwer ArdI" ACM, (l. 250-261 , 2004.
FISH ER, lA : FREUDEN BERGER, S.M. "Prediclil1g condilional bnmch clirecliotls from pre... ious nms or 11 pm· gnull'·. I),of'. I-iJlh Im 'l Crmf 011 ArdI. SlIfJfJor{ for I'm,lt. l .img. (lIId Ope.mtillg SYl'I., AeM , p. 85-95, J 992. H ,OY D, '1'.1.. Di ~i/(ll / IIIuÜlml-'lIw/s. 8. ell. Upper Sa(jdlc Ri ...cr, NJ : Pre nlice Hall, 2002.
fi 11/'11'
11~ - 128,
Com(III/('r.~.
v. C-21 . p. 948 ~
l"o/ll[1l/til/8 i!ljnu·trm·mft:. Sun Francisco: Morgan
1998a,
l'OSll; R, 1. ; KbSS I:.I .MAN , C . "1'lIe I!"müho/l. IEEE. p. 4- 18. 1998h.
glubu~
projecl : a
l> HII Ul>
reporl". II J PSISPD I' '98
IIj~Il'/'Ogelle(lllj'
com(mlillg
FOTHER INU IIA \1 . J. " Oynalllic slorage allOClltion in lhe IIllaS compulcr iucluding an aUlomfllic use af a hacking :.ltlJ'C'·. (';11111111111 , (I/tlte AeM,"" 4, p. -135-436. OUI. 1961.
J.: JIANG. W.; MANC IIEC K, R.; SUN[)ERR AM, V. /'VM: Pflrollef XI/itle fmll IUwrilll fur l/e/ll'orkl'if /mmlfl'l CIJ/IlIItI/illg. Cumhridgc, MA: M Il'. Prc$S,
GEIST. A., SEUl 1: L1 N, A.; DONUAkRA , \' il"lllllf
Me/dllut:: (I I/lN',\'
1994. (JEkBER, R., BINSTOCK. A. PmgramminK lIIiI/, II)'per·tltreat/illg tl'l'Il11ul/lg)'. Santa C lara, CA: Intel Press. 2CX).l. G II EMAWAT, S.; GODlOFF. 11 .; LEUNG , S. T. " 111<.: Gongle liIe s)'slcm" . Proc. 19ffl S)'IIl". fm Opemfillg SyJfl'lllJ Prilld/JI/!J, A( ""1. p. 1943, 20m. GOüDMAN, J.I~ . "Us ing cat:hc IIlcmory 10 rcducc processor mcmory Irnme". Proc. lO/ir AI/li. 1m '/ Symp. CO/ll//Illel Anh. , ACM, Jl. 124- 131, 1983.
011
GOODMAN , J.R "Cache cOTlsislcney and sequcmial cOlIsislency". Tech. Rep. 6 1. IEEE Scalahlc Cohercnt Inl e rfa~c WorJ..lng Grtlllp. lEEE, 1989. GRIMSHAW. A.S, WUI.F, W. " Lcgion : à vicw ff(l m ~O ,()O() feel". P/'flC. Fifth I/ln Symf1. Dis/d/m/ !'d r mll/JlIIi"S. IEEE, p. 89·1)9, ago. 19%.
011
lligll -Perfimumll'f'
GRIMS IIAW, A.S : WUI.P, W. '1'hc Icgion vision nf a worldwidc virl ual COlllpulcr". CO/mmm. of lhe AeM, v. 40. p. 39·-J5.jan. 1')1)7 . GROPI', W.; J.USK . E.: S KJELLUM , A: U.~i/lg M}JJ: porU/Me II(I/'{dfef J)/'08/'lll/lmillg 11';111 fite llil'S$tlge pl !.Jsillg inteiflil"í!. C'i1111 hridgc, MA : M I T. Prcss, 1994. GURUMURTII I. ~ .; S IVASUBRAMAN IAM ; KANDEM IR. M.; FRANKE, 11. "Reducing di ~ k puwcr co n~ump ' lion in ~c r Yc rs with DRJ>M". II:.EE rompI/lu A'I II1:fI1.ille. v. 36. p. 59-66, dez. 2003. HAGERS'!'EN , E.; I.A NOIN. A., HARIDI. S. "DOM MII1;IIÚIlC , v. :!.'i, p . -14 -54, ~ L. 1992.
" '"• ,•" • •
~
"O
• •
~
"o o ~
1.; KI! SS ELMA N, c.; N ICK , J .M.: TUECKE. S. "Grid ser ... ices fur dislribulcd systr;:ms intcgration". IEEE ('mlll'lI/a ,\[agllz.itU'. v. 35. p. 37-46, jun. 20m. FOSTI! R. 1.; K I~~S H . MAN , C. "Globus: .1IlIctilcolllpming infruSlnu': lUre [oolkit" . !tll 'l J . of SlIpercomplltCl' tlPIJ!i· 11. p.
o
•
FO S T I~ IC
r lll;(lIB, y,
~
u
FI.YNN , O. """, mA : elluhling reusubll,! nn-chip dc s ign~ ". /HEE Mi('/'o Magazinc, v. 17, p. 20-27, jlll. 1997.
FOSTER , 1.; K E~SELM AN, C . Tlte grid Z: /J!ueprim for Kuuflllan ,2l)( U.
•
•
D IJT IA · IU)Y, A. "An tlvcrvicw of cuhlc modellllcc hnohlgy and IllUrkel pt:!rspeclivt:!!o". IEEE Comtlltm. Magazine,
FLY NN , M.J . "Sonh! cmnpulcr organi.tutions ;md Iheir erfeclivcncss"'. IEEE Trrms. 011 960, ~c l. (1)72.
•
A cache·only memury archi leclllre" . IEEE Complllu
IIAMA( ' I-II : R, V.V : VRANES IC, Z ,G. ; ZAKY, S.G. Com/m/eI' (Jl'gallízmioll. 5. cd. Nuva York: McGraw-Hill . 200 1.
N
'"M •~ o ~
,•
~
eo
u
HAMM1 NG . R.\V. ';Error dClccling aml crrur corrccling
cuU c~··.
IIr'11 Spr. Ted l . .I.. \'. 29. p. 147 1(,1). ah ... 1950.
HAMMOND. L.: WONO. v.: C HEN, M.: HF.RI7 AERG . R.: DAVIS. J .: CA RL'HROM . n.: PRAAH U. M.: WIJA YA. H.. KÜZYRAK.IS. c.: OLUKOTUN, K. "l'ransaclion111 mClllory çoherCllce nnd consislcncy'". Pmc. J Ilh 11/111. Im'l S)"III/1. ()// Compute,. II,.ef, .. ACM. p. 102- 113.2004 . l IA N OY. J. '/ 111' ("/1('/'" HART. J.J\'I, lI'i,,32
1/11'/1/(11")"
bOQk. 2. cl!. 01"1.mdo. FL: Academic I'ress, 1998.
.~y.fl l'''' pm8m/ll/llil1g.
Reading. MA : Addi son-Wesley, 1997.
1IEATH. S. Elllh('(/(/ed SYSI('III.f (leJigll . 0;< ford: Nl'WllCS. 2003 . IIENKEL, 1.: HV, X.S.: BHAITACHARYYA . S.S . "Taking 0 11 lhe cmbeddcd sySlcm dmllcngc" . I EEE COI/I{l/ItC,. M {/gIl Zil ll', v. ~(J, p. 35-37 ... 1>r. 20m. IIENNESSY. J.L. " VLSI pnlÇcssor arc hileclu re" . IEEE Tr{//u. VII COlllfllftel·s. v. C-3~. p. 121 1- 124tí. dez. 1984 .
• ,•"
~
,
"
•"
w o
•• • "o •O> ~
o"
IIENNESSY. J .L.. IW ITERSON. D.A. Complltel" nr("fljl ef'fllre: a qllal1litatil'e oJ1(Jmm·h. 1. eel . Sal\ Fnmcisco: Morgull KaUrlllmlll , 2003. f 11 LL.
M.
"Mulliproce ~~nrs
shou III sUIlJlun sirlll'le
l11 e1l1o ry ·cuns i ~ lcm:y
Illmlel s··. I EE'~
tOlll{lFlfl'r Ma1fa ;JII(" v .
J 1.
p. 28-)4. ago. 1998. IIINTON. li.: SAGE R. 1).: VITI"O N, M.: BÜG OS. D.: CA RME AN. D.: KYKER, A: ROUSS EL. P. 'Thc lI1icroarchileclllre uI' Ihc Pcntium 4"'. 11111" Tt'dlllo'ngy ./rmmal. v. 5. p. 1- 12. jml.lnmf. 2001. I-IOA RE. C.A .R. " M {l nil or~, lIn opcraling syslcllllllrucluring COllccpl'". COIIIIIIUlI. 01 tlle A CM. v. 17. p. 541}-557. ou\. 1974: Errata ill : (.'0/ 111111111 . v!tIJe A CM . v. IR. p. 95. fev. 1975. HUH . J .: BURGER. D.: C HA NG. J .: SOI·II. G.S." Spccululivc incohcrcnt clIchc v. 24 . p. 104- 1O~. nov.ldez. 2004.
pmloc o l s". If~EE
Mia0 M onm.il1e.
IIWANG. K.: XV, Z. Smll1l)/(' !mmllel COlllflllling. Nov" Ynrk : M"Uraw-Hill. 1\J9R. HWV. \V.M . " lmrOllucliulI 10 prcdicalcd c;
palh -ba~ed
neural branch preclicl ion". Pmr. 3f){/! 111/ '/ .';)"111//.011 Mir·m (//"("hi/I'ctllre . IE EE ..
JO HNSON, K.L. ; KAASHOEK. M.F.. WAI .LAC II. D.A. "C RI .: Iligh-pcrfoT1llllnce a)[ - ~oft wa rc lli<;lribulcd sharcd memory". "me. 15111 S)"III/'. ()II Op('ratillg Sy,fle/llS Prillâpln, ACM , p.2 13-22R. 1995 . JOIINSO N, M . .';"persmlur micmproct's,wr desigll. Vpper Saddle River, Nl : Prenlice Hall. [1.)91 . K.A LI.A. R.: SINHAROY. B.; TENDLER.l .M. " IOM Powcr5 Chip: a dual -core lIlultilh rcndcd Min'O M ugaúlI(: , v. 24. p. 40-47. mar.-nbr. 2004.
pnx:e<;~m" .
IEEE
KAPASI. VJ.: R IXNEH. 5.: DALLY. w.J .: KIIJ\ ILANY. a.: AlIN. J.lI. : MA'nsu N. P.: OWENS, J.D. " Progra lll lllab)c SlrCalll pruccssors". IEEE COlllputel" !I1ugaú lle. v. 36. p. 54-62, ngo. 20(Jl . KA PI L. $ .: McG IIA N. 11 .: LAW RENDRA . J. "A chip l1Iullilhreadcd processor ror netwOIk-fad llg workloads'". IEEE M ia0 MagflúIH' . \'. 24. p. 20 -10. marhh r. 2004. KATZ. R.H.: BORR IEI.I .O , G. COIr/ell/I'OmIT IO!<Íf' lfeúgll . Uppc r Suddle Ri vcr. NJ: Prcnticc Ilal1. 2004. KAUFMAN. 2002.
c.:
PERLMAN. R.: SPECINER. M . Ne/ll"ork semril)". 2. ed. Uppcr Saddlc Ri\cr. NJ : Prcnl ice Ilal1.
KERMARRE(', A .!''''!.; KUZ. 1.: VAN STEEN, M.: TA NENBAUM. A .S. "A frall1cwurk ror web objccls". I'me 181h /111" CO/ll (/11 IJislr. Cmllln/lil/X S)"Jt.. IEEE, p. 276-284. 1998.
co n ~isle nl
replkaled
KIM, N.S.: AUST IN. T.: I1I.AA VW. D.: M UDGE. T.: FLAUTNER . K.: l-IV, J.S.; IRW IN. M 1.: KANDEMIR. M.: NA RA YA NAN. V. " Lcakagc (' UITCIl I: Moore's law I1lccls stalic puwer'". !F.EE CVlI/llutl'r MII}I(/ :;.illl'. \'. J(j. p. flR 75 . dc7.20tJ:l . KNVTf /. D.E. "An clIlpirica[ sllldy uf FOK['RAN programs'". SO!flrare - /IH/cticl' & expel"il'II t ('. v. 1. p. 1(J~ - I J3, 197 1. KNUTH , O.E. "I1U' (lrI 1997.
li! colII{Jtl ter {J1"Of?rammillg : {lmdllll/('lIll1{ algoritllms. ~ .
KNUTH. I).E. T/je (/11 WClllcy. 19lJR.
oI ('vlII/ltllel" I'roBmlllllljll~ :
ed . Rcud illg. MA: Addi<;on-Wcslcy.
semilllllller;("(ll aIKor;IIIIII.I".
:l
cd . I{ clld ing. MA : Addi son-
KOGEL. T.: MYER, 11. " Hctcrogcllt':o us MP-soe: lhe solutionlo cllcrgy-cflicicnt sigll õl l proces~ in g" . 11/11/. CO/ll oll f)esigll IIlflomatioll. IEEE. p. CiH6-{jlJ l. 2004.
. .~ -
1'/"0(".
4J.vt
..,
--
".
KONTO'IIIANASS1'i, L.; I/U NT, G. ; STET$, R.; II ARDAVEI.I.AS , N.; CIEKNI AD. M .; PA RTI IASARATI IY, S ;
W.; DWARKADAS, S.; scorr. M. ··VM · Il'II>I.:d shared IllClHory on low lal~ncy rcumlc rncmory nCIYo urks". IJmc 24,11 .'11/1,. /111" S)lIIp. ()II CcJIIIIJutu Arch., AC~I , p 157- 169, 1997. MI:.II~A,
.u.:(:c~~
M
m M
KOR EN, I ('mllJlIlf."lIIit lmu'/it · a!yoril/lll'!.', Nmick . MA: A .K. PC lcr~ , 2002.
KOlJFA'1 V,
n.:
MAlut , D. T. "lIypcrthrcading lcchnology in lhe nelhursl ndcrnarchi h.:Clllrt:" , IEEE Alit:m
M'I.~II !illc . \ . 23 P Sfl-65 , mar.lubr, 20()3.
KUMAR. R.; JOI lI'l' l, N P.: TULJ.SEN, D.M . "Culljoinoo-Core chip mulliproccssing". Prm', 37111 Micmtlrrllilec '(lfl l'. II :EE.. p. 11)5 -206, 2f)(~ .
LAMPOItT, I..
/11/"
Sy/llp. 01/
·'H.,,, 11) Inuke 11 mulliprocelisor computer Ihal corrcclly executes lIlultiproce~s programs". fJ::HI:'
TrmB , 011 COl/JfWII' I .\, ... ,
C· 2K, p. 69()·MI,
~c t .
1\)79.
LAH.OWE. H. .P.; EU IS. C.S. "EKpcrirncnlal cnll1pari~()u uf rnernnr)' rnanagemem ~ur~". ACM '{'rmll. ,,11 Cfjlll/J/lI~r SySIt'I1IS. v. 9, p. 319-363. novo 1991.
pnlicic~
for NtJMA multiproce:-.-
LAVA(jNO. L "S)'~ICILI:' on a ~ hip : lhe ncxI clcclrtlnic IfOnlicr", IEEE Micro MogmJut', v. 21:, p. 14-1 5, ~CLfOln. 20m, I.AWTON. (i. "Wi ll rlclwml.. proccs~or ullilS live uI' 10 [heir prullli sd". IEEE COlIIlJlftt'l' M agazille. v. 37, p. 13- 15. ~ihr. 21)().!. LI! KKAS , P.C . NelI! OI" prt/!'/'Hor.I': IIrchi't>t·IIfI·/'S·. JlI'(lf(J(·ol.\, (//111 pfmlorms. Nova Yorl.. : M ~Gr.l.w - lIill , 2003. I.EV INE, lR. Linh'l'I {//ullo(/(I"I's. Son Frnncisco: Morgllll KuufnulIllI, 2000. LI , K.; IIUDAK . P. "Mcl1lory cohercnce in :.harcd virt ual meIHory SySICI1lS". ACM Trmu', 011 ('OIl1pllll'l' S)'lll'/IH', .... 7, p. 321 -359, tlU\ . 19K9. LIMA , F.: CAH.RO, 1..; VELAZCO, R.; REIS, R. " llljecling IHultiple upSCIS in a SEU loleram 8051 micro--cQlllro!· Id', p/'(JC. tiSlllft II-.t:E 1111 '1 OIl ·Une Te.llillg WfJI'bllO{J IEEE. p. 19o1, jul. 2002. J.JNES , A. "A:'yllchront)tl~ illlcrconncct ror :')'l1chnmous ~oc design". IEEE Miem lI'fll/tIlZÍlII', v, 24, p. 32-41, jan.lfcv. 1IX)·L LU , 11.; COXo A.L.. DWARKADA5, 5.; RAJAMONY. R. ; ZWAENEPOEI.. W. "Sollware distrihuted sharcfl IIIcmnry ~lIpp()n for im:llu1ar ltpplicatiollí.". P/'OI'. Sixlh Cun/. VII Prill. (11/(1 1'l'Ilcti"e 01 P(/mflld Pmg/'. , p. ·Hi ,~6 , JUII . 1997, I.UKAS Jl~ W I CZ, J. ·\ /'illolll'·,~ .~)'lIogüti( ·. 2. ed. O"ford : Oxford UnivcrsilY Press, 1958. J .. IIASAN. r\ . "lIigh pcrformluu;c FPGA ba:.ed elliplic curVl! cryplugruphic co-pmce~~or". Prol'. /111 '1 CO/if. 011111} Tn 1,_ rodillg mui COlllputill,i;, IEEE, p. 486·492, 200ol. I.YY·I INEN. K .: Y(JO, Y. "b.\oUé:' anti chalJ..:ugcs in IIbiquilouS computing'·. COIIIIIIIIII. of/h/' ACM, v. 45 , p. 63· M,
urrz,
deI.. 2002.
MACKENZIE, Ui .; PI-IAN. R. Tlu' 8U5 1 mimWOItlro/ler. 4. cd. Uppcr Saddlc River, NJ: Prenlicc ] !;dl, 2005 .
MA NO, M.r,.-I .; KIME, C.R, I..ogif' I-Iall, 2003 .
(//1/1
cOIIIIIUlertlesig/lfimdamelllllls. 3. el!. Uppcr Sadlllc River. NJ: Prclllice
MARTIN . A,1.; N' STROM. M.; PA PADANTONAK I S, K. ; PENZES, !l.i. ; PRAKAS H. !l.; WONG, C.O. ; C II ANG , J.; KO , K.S.; I.Er!., 8 .: OU, E.; PUG I-I , j" TA I.VALA , EV.: TONO, J.T. ; TURA , A. "Thc lutonium : li :.uh-nannjuu]e a:.ynchrono\ls H051 microcontrollcr". Pmc. Nilllh 1111 '{ S)'lIIp. ml AS)'/ldll'Ol/ou s Cin:uilS aurl Sp/t'flh ,
IE I: E, p 14-2 .1, 200.1.
MARTIN. R.P.; VA I-I DAT, A.M .; CULLER , D.E.; ANDERSON, T.E. "Errccls ofcnflununic:'llioll I:uency, o\'crhe:il!, Ulul bandwiu lh in ,I cluSler urchileclurc". 1'1'11('. 2-/111 AIIII. 111/ 'f 's)lIIp. 0/1 ("ompu/el Art'/t .. ACM , p. 85 97, IlJt)7.
MAYIIEW, D.; KRI~IINAN, V. "I:lCl express aluI adVllllced swilching: c ...olulillllllry palh lu buihlin1:jllcxl gen~m tion inlcrcunnecb". Prol'. lI/h S)'tllJI. (11/ Hh-:h Pt'rf /meI'COIIIII" ·b. IEEE, p. 21-29, agn. 21X13 . MAZIDI , 1\ I.A. : M( KINI.AY; MAZIDI , J .G. 805/ microcollfroller muI embet/t/rd s)'slcms UI'/'t'r Smldfe Ril·t'I'. NJ : Pn.:nlice I-I all , 2005 . MA Z!])!. MA ; MAIJI)] , 1.(; , 'lhe HO.r86 IHM I'C (IIul compmiblt, (·o/llI)///t'I'J. 4. cd , Uppc.r Saddl~ Ri"cr, NJ :
Prclll icc lI all , 201.12 ,
Mc KNIGIIT. L.W,; I-IOWISON, J.; BRADNER , S: "Wirdess grid:.". IEEE jul.lago. 2otM.
/III/'1'IU!1 COIIIJlllting,
r.,'lc KlJS ICK: M . K ,; HOSTIC, K.; KA RELS. M.: QUA RTERMA N, J.S. T/tl' t!el'iK" USO DfJenllill,i; l.\ 1/1'111. Rcading, MA ; Addisnn-Wesley, ]lJ9tl.
III/lJ
Y. 8, p. 24-31 .
illlfl/C/IIl'Il/miulI 01 lhe .1.-1
Mc KUSICK , M K.; JOY, W.N.; LEI-'FLER, S,J .; FAORY. R.S. "A fast tire syslcm for Unix". ACM Tmlls. 011 ("all/II/Ua Splt'II/\ , \'. 2, p. ] H1- 197, ago. 19H4. Mc NA IRY. c.: SUl marhhr. 2otU.
ns,
D. "Itanium 2 pmcessor micrnarchileclurc·'. IEEE Micro A!0811l.illt', v. 23, p. 4ol ·55,
• ,•" • • "• ~
•
~
~
o
,
o.
•
"
..'"
'"
•• o" ~
•o ~
8
o
u
•
~
• •"
~
o o
"
•
~
o ~
~
• N
C
•
'"
o"
MIN. H.; JUNE. W.: BEN .: II U. Y. "LOI.::1Ii01l cl!l'hc: li ltlw-po\\·cr L2 (':rche systcrn", I',.,n 'f', '()(J4 1111'/ Sn"p. LvII' POII't!r WeClrullk.f wuIIJcsi8/1, IEEE. p. 120· 125. ago. 2004.
0/'
MESSMER. 11.1'. "1'11(' ;lIffisl ll!lI.tible I'C flllnltrorl! bOllk. 4. cd. Rcuding. MA : Addis(ll1-\Ve .. lcy. 2DO 1. MOUDGI LL. M. : VASSIUAD IS. S. " Precise intcrmpts", /EEE Mia0 MlI!jll:i" e. v. 16. 1'. 5H ·fi7.jull. [t)t)6. " roL'tiL't' (lIId Er/If'rit·/wf', v. 14, p.
MULLENDER. S.1 .. TANENBAUM. AS. " lllllllcdinlc IiIcs", Software 368. 1984.
NES UIT. K.J .: SM IT II. J.E. "0:1101 enche prefclching u.si ng a gluhal I't'rf. Cmll/JII/f'u\ rl'fl .. IEEE. p. Y6· 106. 2{}()11 .
h i~ ltlry
J(í.~ -
huffl'r"', Pn}f . l(lIlt f",'/ Symp. mr Ilix"
N( i, S. W. "AUvurlr.:cs in disk lCl:hnolngy: !}Crfuf111uncc issucs", I EEE ColltfJlller Magll:J/l I!, 11. 3 1, p. 75· MI. maiu 1998.
NICKOLLS. l .: I'IIIAUAR, LJ . 111 : JUHNSON, 5.; RUSTI\G I, V.: UNOER. K.: CHOUDIIURY, M. Tali~lo: a luwpower single-chip Tnull iproccssoJ' cummunications plalrorm". It:EE Mia0 Magll zine , \I. 2J. p. 29·4:\. mar. 2{M)J . NO In'ON. P.: GOODMI\N. J. IlI.fitle lhe /'c. 8. cd. IndianOlIKJl is. IN: Sam<. 191}9, NULL, L.: I ,O BUR, J. TI/I! f.'.u('l/liaü of CI)III/IIII(' " 0/ gflll;wlirm (//1/1 (//·chill!('f/lI·f'. Suubury. M I\ : JOIIC~ anil Ual1lell. 2003. O·CONNOR. J.M.: TREMA LAY, M. "PkoJalla-l: lhcjav:I virlu.ll machine in hardware". IFI:F Miem M"R'I<.;I/(" \'. 17. p. 45-53. mar. -abr. 1997. ORGAN ICK. E. n'l! MULTl CS .f)'.flem. Call1bridgc. M A: M I T. I'rcss. 1972. 05KIN. M.: CIIONG, r:L: CII UI\NG. 1.1.. "A pructical nrchilcctu rc for rel iable (IUalltu1I1 cumputcr~". lI:n : COmf!l/ler Mag(l zille, v. 35, p. 79-87. jun . 21.102. OUA DJAOUT, 5.: HOU7.F.T. D. "C;l"Y soe d c~ig n with VC I ~ys te 1l1 C adaptcrs··. P/'(){', IJiR i/ClI Syslem l)eú1f,lI . IEEE. p. J 16-323. 2004 . • PAI'AEFSTATI IlOU, 1.; NIKOLAOU, N.A.: I)OSI-II. !l.: OROSSE, E. "Nelwork pnlCc~~ur" for fUluu,' high-cml sySlcms llml applic:ttioll!1". IEEE Mit:m Mag(dm', Y. 24. p. 7-9. sct.lout. 2U04.
PAI'AMARCOS. M.: PATEL.: J. "A low overhcad coherel1ce SOllltiol1 fur Il1ul liproce....or"l wilh pri\'atc cachc IItl'l lIUric~". PI'fW. 11th AIIII. 1//1'1 S,rmp. 0/1 CVIIIJllller Arei, .. ACM.)l. )48-354, 1984. PARIKH, D.: SKADRON, K.: ZII ANG. Y : STAN. M. " Powcr aware bram:h prediclillll : chnractcri :wtioll lIIul design'·. Jli,t:/:: Tram. Compllfe/·s. Y. 5:l. p. IüR- 186. fev. 2(K)4.
"li
PAITERSON. D.A. "Rcduced inslructiulI sei
computc r~ " . ('mlllllllll. of ,"e A
eM. \'. 28. p. R·2 1. jan. 1')85.
PATI·ERSON. D.A.; GIBSON. O.: KATZ. R. "A case for rcduntl'HlI army" (If inexpen .. ivc di"k< (RAID)". I'me ACM S/GMOU 111(1 Ctmf. 011 Mallagt'"u'nf ofl)(I/(I. ACM. p. 109· 166, 1988.
PAITIiRSON, D.A. : II ENNESSY. J.L. Co/II/mle/' mgulliw/ioll Kaufman11 ,2005.
(//1//
({e.fig". 3. ed. Sall Fr;ml'iSl'o: Murgall
1'A'r-I'ERSON. DA: SEQU I N, C. II. "A VLSI RISC". IEEE COl/lp/llt'r 1"' lIg(dl/l'. v. 15. p. R-22. <;ct. 1982. PAUL. R.I'. SPARC arc/li/eclII/'e. lIs.I'embly !lIl1glWgf'. "mgrumm;lIg. {mr! C. Upper 5atldlc Rivcl . NJ: Prcntice Hal l.
1994. PFISTER. G.F. 11/ .fell!'('// (lfdllsle!'.f. 2. cd . Uppcr 5adtlle Ri\'cr. NJ : Prel1t ice I1 nl1. 199 8. POPE."iCU . !l .c.: 5TEEN, M. VAN: TANEN BAUM, A.S. "A sccurity 'l rchilect ure for l1bjccl-ha"ed dislribtllctl lcJl1.~". p,,(){'. 18111 A/IIlllal Compmer Sem ril)' A""I. C(JIIf. AeM. p. 161 - 171.2002,
~ys -
PU UNTAIN. D. "Pel1lillllt : morc RISC Ihan CISC". /J)'If!. \'. 18. p. 195-2114. seI. 19l)). PRICE. 1). "A history nf calclIlnting m.. chi ne~". IEEE Miem M(lgm.i"e. v. 4, p. 22-52. jan. 1911 I. RADlN. G. '1 'he 801 minicoll1J>ulcr". COII/IJmerA"c". Neli·s. Y.
1{),
p. 39-47.llIar. 19M2.
RI\MAN , S.K.: PENTKOVSKl, V.; KES HAVA. J. "Implcmcnling strcaming SIMD pruces~or".IEEF. Mic /'() M agazine, v. 2U, p. 47·57,juIJago. 2{)OO.
cXIl' n ~i()l1'" 1111
lhe Pcnlium 111
RAVIKUMAR. c. P. " Mult iproccssor ardli tceturcs for eltlhcdllcd sylltcnHJIHI-chip ;lppJi c uti \J I1 ~". P/,(I!'. 171// /111 'I COIif. fl II Vl S I f)e.rix". IEEE. p. 5 12-519. jan. 2004. RITCHIE. D.M .. THOMPSON . K. "'llc Unix timc-sharing syslcm". ('0/11111111/. Of/he AeM. \'. 17. p. 365-:\75. ju!. 1974. ROBI NSON. G.S. "'I'bward lhe age "I' ~rna l1c r stomge". If:EE C,'III/J11f(,!' Mag(lliuf', \'. 35. p. ;\5 -41. de7 . 20{)2 . ROSEN BLUM. M.: OUSTERIIOUT, l .K. "The (lc~ign and illlplemcnlalioll 01':1 log·stnlclllrcd file ~ys l e lll ". fJ I'f)('. 'l1,if'l(!f'lI/h S)'lIIp. VII Opem/i//g Syslem " ";//l'iplt'j·, ACM. p. 1 - 1.~ . 199 1, ROTH. C. I!. f'lIIulamelllols r1 lu).:i/' Ilesigll . 5. co. Florcncc. KY: Thut1l~tII' EnginccrillF., 200J . RUSS INOVIl'I-I. M.E.: SOI..OMON , D.A. MilT().fllft \I';ml(JII',f ;IIfl'f7l11ff. 4. cel. Rellrnond. \VA : Micro~ort PTC~~. 20115.
..",*
,
----
'. s.;
Ml JI.J( )NO , 1-1 .; ('J-l ERKALJER, B . " [tani um 1 p wc r.::~sor 6M ", IEEE Mian (I1t1}1f1ÚIJe, v. 2-1 . p. 10- 18,
ti>
lIJar.Jahr. 200-1 . SA I IA, D.; M UK I J ERJ EE, A. '·Pcrv
M
RUSU .
SALOMAN , D. A.\ \cm/JIerj 01/11 foae/en. Upper Saddle Ri vér, NJ: Prclllicc Hal1. 1993.
m
•
•"
~
SCA LES, n,J. ; G II ARAC/lORLOO, K.; Til I.:,KK ATII , CA . "ShllSH1: :J low-ovcrhcild ~o n warc-tllIl y upproach for ~ll ppmling tine gl1tin sh;:ln:d mCl1lory", Proc. Snemh 11/1 '/ COI!{. 011 ArdI. SIIPP/lrl for Prog. Lt1/l8. I/II(/O/)el". SY.H . AO\'I , p. 17-1- l loLí , 1996.
o
SCHEIBLE, J.i>. "A :.ul"vcy oI' Slorage oplions". IEEE C/JIllplllf'l" Magm.inc. Y. 35, p. 42-46. dez. 2002. SELJ 7.UR . M .; DtlSTIC. K.; Me KU SICK , M .K.: STAELl N. C. "An implemcnllllioll of a log-slI1lclllred tile ~}'~lC m for UN I X". Prm·. \Vinte:" 1993 lISENIX Teclmi('(/I Cmlj. , p. 307-.126, 1993.
SII AN LEY, '1.; ANDhH.SON, D. PC! sy.ffelll (/I'chileeflll'l' . 4. cd. Reading, MA : Atldison -Wesley, 1999. SII I{lVEi{ , n.; S~ I['J H, 13. n'l~ tIIl(lfO/l/)' oJ CI higli-/1elfo /"l/wll ce mic/'Opl'O('l!l'SO/': A lami lO~. CA: J bEl: ('(lIllJllller Soeicty, 1 99~L
1/
sys/e m.\· {Je r.~pe('lil·e. Los
S IM A, D. "Supeu\:al af in~lnlctinn issllc". I EEE M icro Magm.im:. v. 17, p. 2K-39, set./ol1t. 1997 . SIM A, n.; FOUNTA1N , '1'. ; KACSU K, P. Adwlluw l comlw/el' (j,.('lIifl~(·'IfI·e.~ : MA : Addi~on Wc~ l cy. 1997.
S I.ATEle R. !'O/'/IIÚll
/11
li
tles;gllsl'w'/' app /'Oodl . Rending,
l ilic ·OIl. Call1briclge, MA : MIT. Press, 1987.
SOI1I . Ci .S .; 1<0 '1'11 . A. "Spl!CUl alive Illullilhrcacled proccssms". IEEE Compu/I:/' M agrlú11e, v. 34, p. l'i6·73, abro
2001 . SN IR , M .;
arro, 5 .W,: lIUSS·LEDERMAN , 5.; WALKL:.R, D.\V.; DONGA RR A, J. MP!:
I 'e 1//111111<11. C:lIl1hridgc, MA : M I T. P rc=~s. 1996. SOLA1H , E.: ('ONír DON , B. PC! e.Il'r'ess (Ie.\·;g ll &
xy.~ft'l/I (il'('h;rf!c/llre. R e~c:I1'I:: h
'/1le ('r/ll/ple/f! r/'fi'r'I~ II -
Tech, Inc., 2005,
SOLA IH , E. ; WII I.SE, G. l'rI wItI IJCI-X !t(l/'(llI'(/re {/Iul sO!IU'are. 6. cel . Srll1 Diego, ('A: Annabooks, 2004. STALLl NUS. W. CtJlIrJlIIII:I' 01'1;(111;1.(1/;0/1 tIIrtlllrchi/ce/IfI'l!. 6. cel. lJ ppcr Sacld !c Ri\'cr, NJ: Prcntice l-I al1. 20m,
STE NSTROM , P., II ACiI:.RSTEN , E.; L/WA, D.1 .; M A RTONOSI. M.; VENUGOPAL, M. "Trcnds in sharcll melHory IHtrhiprocc~sing " . IEEE Compurl'/' Magm;;m:, \'. 30, p. 44-50, dez. 1997 . STI: TS. R. , I) Wt\f
SU B , T. ; LEL, I I.I I.S.: BLOI JG I J. D.M . " Inlcgraling cadlc \:ohcrcnct! prOlocu!s for hcl c rogcnt!ulIs ~ y~tc rn ~. Parl I ". It.'EE MirTO kI1l8m.il/l:, v. 24, p. 33-41, j ul. 2004 . SU MM ERS, C. K. AJ)SI .: S/(IIu!a/'{ú, illlplem eI/UII ;OIl, (111(1 mâ';/eflll/'I:. Boca RalOn. FL : Ci{C
mllll i rl'llct! ~s()f
P res~ ,
19tJ9.
\ .n, " PV~'I ~ u fram CWllrk for pnrulld distrihut cd cllrnpulillg", ('ollnrrrell cy: I' mc!icc (//ul EI'pel'Ít'lIt'e, v. 2, p. 3 15-33!J, deI.. 1990.
SUN DERR AM .
5WAN . lU .; FU I.! Elt 5.11.; SIE\VIOREK, D . I~ "Cm. -
3
modu lar muhipn)Cc~stlr".
P /'O('.
NCC, p. 645-655, IlJ77.
TAN , W.M. /Je l'dP/1inS lISB PC (ll'ripJlt'ro/l·. 5a n Dic=go, CA: Annaboo ks, 1997. TANENBAUM , A S. Crmlpl//t'1'
lIeIlWI/·Ál.
Upper S:lddk Rivcr, NJ:
Prentic~
Ililll, 20m.
---;:-,c-. "I mpli c.rl iÚlb uI' ~ 1I1I C lU rl!d progralllll1ing for Illuchinc= archiIC\:lurc". COmI/11m, oJ til/! ACM , Y. 21, p. 237246. mar. ItJ7x . _ _ _ _ o.
OfJ/-'/wil/>: \)"~f1'Il/S: desigl/ muI impl/!/IIell/m;o/l. Upper Sadd le Ri ycr, NJ : Prent icc Hnll, 19B7.
_--,__. \VOODIIl JLL. A.\V. Opera/il/!:
.f,VS/t'lIIl·:
d/'l'igll
/11 1/1
;lIIplell/l'lIIm;oll . 2. t:d, Uppcr Sadd lc River, NJ:
PrclIlice HaU , 11)1)7. TIIOMPSON, K. "UNIX irnplclIlclllilt iulI" . nt'll
S )'l/.
1'l'dl, J. , v, 57. p. 1931 · 19-ltl,jul/ago. 1978.
TRELEAVEN, P. "CoIl1ml-driYcn, dala-dri ven.
v,2, 19R5. TREMBLA y, M .; O' CONNOR , l.M. "U llmSPARC I: a fOlll'-iSSIIC procc~so r su pporting Il\u\timed;a". lHE/:.: M icm Ma!ill z.;/li!.
v. 16, p. ·~2 - 50, mar. 1996.
T RJ EBEL. WA. 1 h., 8VJ86. SW86,
/ll1I!
Pell/il/II/ PJ'fIccJJ()r. Uppt!f Suddlc Rivcr, NJ: PrclIl iL:c Hull , 1998.
TUCK , N.; 'I'IJLLSEN, D .M . "Inilial observations of thc s;muh :lneous llluhithread ing PCllIium 4 prot:essOI J ' . Pl'Oc. 11th /11/ '1 G~I!I 01/ Pumllel A/'f'1!. m/(I CompilmiOl I TC'dmiql/es, IEEE, p. 26-35, 200'3. UN()ER, S,l!. "A compulcr oricnted lowanl sp:llial prohlcrm", P/'Oc. IR E, v. 46. p. 1744-1750, 195R.
VA IJ AUA , U. UNIX
11II1' l'/Ir1Ü.
LJ pper Saddlc Ri vcr, NJ: Prelll ice J.l all, \ 1)96.
..•
"
'"
(})
M
VA I/lO, F. "Thc :'Iuftcnillg of han..\warc". IEEE Compu/e/" i"'lIxa;}lIi'. v. 36. p. 27-34. abro 2003. VAN STEEN. M.: '-IOMBURU, P.C.; TANENBAUM. A.S. "The architectural dcsign ur globe: :I wide-arca di ~ l ri
tmted systcm" . IEEECOIlI'l/rrf'lIC)', v. 7. p. 7o-78.jal1.1m:lr. 11)99.
•"o• ~
•
" 8
~
o u
• • •"
~
~
VElTER. P.: OODERIS, D.: VER llQaffiN. L.; GRANGêR. A. "SystclIls aSI>ects ur A PONIVUS L deploymcnl" , fF.EE CO/mll/m. M(lga;.illt'. li, 38. p. 66-72, maio 2000. \VEAVER. 0 .1....: GERMQNO. T. 71u' SPARC An:hilCClllre Mall/wl. Ver.fio/l 9 . Uppcr Saddlc River. NJ: Prentke
I-Iall. 19IJ4. WE ISER. M. '''nIC compute r for lhe 2 1st centur)"', IEEE: PenY/,fi!'t! Compu/i/lg. v. 1, p. [1}·25. j:mJlllar. 2002: publicado pela primeira VC7. em Sdt'l/Iiflr Americall. seI. 1991.
WII.KES, M.V. "Compulcrs lhel! anti 1I0W", J. "eM. v. 15. p. 1-7. jUI1 . 1968. WILKES. M.V. "The bcs( w"y lo dcsign an aulUlIlatic ca1cuJ:lling machinc". Pme. Mm,cllf'.\/I"· Unil', COIlllmle,. IlIal/Xl/m l COII[.. 1951.
"
WILSON. J. "Challcngcs [llItl tre nús in proccssor de~igll" . IEEH Ctlf//IJII/f'r Ma8aúllf. v, :lI. p. II)-4R. jUlI , 199R. WILSON. r. " F!tlating-Ixlinr survival kit" . IJ)'/e. v. !:l. Jl. 217-226. mur. 1988.
w
WULE W. "Thc rmu re 01' I11l1ltiprot'cssor sys l e rn ~ -on-~·hip~" . "me 4J .~f ÃI/II, Cmif. p. 68 1-685. 2004.
"" •
'•. o
~
"
"•
~
o
ali V('.~it!1I A/I/o/llmiol/. IEEE.
..,
'.
Números binários
AJ
rillllélú:a 1I ..,.. A difercnc;a
mai~
imponante
é quo;! computôltlnre\ rcali'::iulI Upcr'dÇÕC!Õ com m1mcms cuja precisão é !inil .. c IixlI. Outra diferença é que a mainriu ,hlS '\)tnputadorc\ u!>u n si~ l cilla binário c não o dcdm:.l para represelllar mimem!>. Es)oc~ tópicos são o al>Sunlo 11';:~le apêndice.
A.1
Números de precisão finita Quaudo
e~ l lllll.)!o
dCIU:lIldo aritmética. em geral, nem pCIlS:.ullOS na questão de quam o1> drgillls decimais s110 ne..:essários
para repl'c!ocnltiJ' UI1) numero. Fíl>ico:- paJem calcular que há I t17 ~ elétrons no univCnio sem se preocupar com n (alO de '111C !oãn necfi!.lo~áriul> 79 dígitu) dccim.tis pam escrC\'er eS!o1! mimem pm Clucnso. Alguém que eSlivc!ose calculando o valor lIe IIrnll fllnçiio com lápi1:l c p
C\\IU ~C I<;: dígitu.), nll OIlu, ou ,[ua n \(l~ f(b~enl nc:cessários. Nllnca ~ urgc o prohlellla ,lo papel /lilo ser grande o ~lIlieic nt c para mímcrn:o. ele ~cte díl:\ i\ll~ ('(llll ctllnpul'ldnre" u hi~"iria é bem difercmc. Na maioria dde:o., li Iluant idade de IllclIlóriu di spon ível para iUlllatcnUr mính:ro:. é líxada ua u(.;a~ii'Í1) em que li m!ic[uiLlíI é pmjcladu . Cnm 11m pouco de e~fnr~o , II progrumador pOf[e reprc:.ctltar lLL'lIm'fO,<, dU
N,írnan... maiore:. ([ue 999. N\írm':fI!:. Ileg:lti vo!'> .
3.
Fnlçoc~ .
4. 5.
Nllrncl'O), irradl}Hili s. Nlím..:ro:. I.: IIL1lp lexn:..
Uma propriedadc irnponunte da aritmética no conjunto de todos os inteiros rd'ere-se ,lO rcclwlt1cnto no que diz res pdtll li:. opcra~õe~ tle adr , ilu, s uht ra~:iio e multiplicação. Em outras palavras, para cada par de intei ros i ej , i + j, i - j c i X j t;unhém :.ãu illteiros, () t.:ollJunto de int eiros não é fet.:hado no (11Ie di .. respei to à divisão, 11Ilcque existem valores de i cj p:Jr.1 o~ (1lllIis ilj não I:HKlc :.er c~pró:.n t"llln um inteiro (por excmplo, 7/2 e 1/0). Números de prccr:.fio tinita não são fcdmdos em relação li nc:nhUrll:1 dessas qUillrn IIpcmçfX!s hásicas, cnlllO mU1:ItrtllllOS a scguir, u ~ando mlmcm ... decimais de três dígitos como exemplo: 600 + 600 '" 1200 (murro grande) 003 - 005 '" 2 (negatrvo)
050 X 050:: 2500 (muito grande) 007 I 002 ,. 3,5 (não é um inteiro)
A1:I \ iola~õc~ p\l(!cm :.er divididas em duas das~c1:l !llUtuamell1~ exclusivas : operaçõcs cujo resultado é maior ([uc o maior ntíml!ro UH Ctllljuntll (crro de \!).\!c:.:.u) ou menor 'luC o mcnor mí mcro no conjunto (erro de faha) e oper:lç~ cujo reMlltadl)
397
al Ol
nilu é nem 1I\UilO gmndc nem muilo peq ueno. m a.~ lO impkslllcrllc não é um IlIcmhru do ctmjullIo. 1J;l ~ qu;um violaçi'\c.<; citadas acima, as Irês pri meiras s1io exem plos da viol;n;:ào pelo primeiro 1I10tivo (c'(cc.~su ou fa lta) c a quarIU é UIII c.'(cm plo de v i o l a~'ihJ pelo segundo moli vo.
•• "•,
de precisão liutra. os resu ltmJl1S de certos cálcu los serão. do ponto de ViS\Ol da malem;íricill:h"o;ic.:a. ~ill1ple~II1Cl1rc
M
Corno cnt1lpul:ldurcs têm IlIcm6rias ti]]i L"s c, portHr1tO. devem necessariamente eret uar arilmt!tinr com nlimem" O
errados. Um dispositivo de cálculo que dá a resposta errada. emhora esteja em l>erreil,r" condiçõcs de fum:iunamcn!o. (llxlc parecer estranho de i nfcio. mas () erro é urna cOlIseqliênr.:ia lógica de ~ lIa nature'loa finitn.
~
Alguns computndorc.o; têm h ardware e"pecia] t ]U C dc tf."C ta erros de ellce~so. A áll!cbra de mimem" de precisão fi nitll é di fcrcl1Ie d,l álgebríl normal. Como c,clIlplo. cOI1~illerc a lei lIssocifltiva:
8 o
<.>
8+(b - c) ::: (a+b)
•
"•
,"•
•" •
w o
Valllo" aV:lliar ílJllhus "" lados pam a = 70n. IJ = 400. (' = 300. Pam calculor (1 lado e~qucrdl). primeiro ..:a1cule (IJ - c,. 'I"C é IOf). c clI/llu SOUlC c~sn I/uanlidndc 11 a . o que d:f 800. Para calcular o /"'/H dirc:ifrl. primcim clIkule (ti I b). (l que dá um ellces~o na ari tmética fini ta de tré .. d ígitos inteiros. O res ultado J)ode dcpcndcr da máqui na (11Ie está ..emltl usnúa. m;IS não ~e r"á r HX). Suh/m ir :lOO de algum número quc niio sej a 11(X) vale. A orúe m d:ls ope rm;iics é imporllm/e. Cumu o utro ellclll llIIl. cunsidere a lei di ~ t rihu/ i v u :
a.~sncia ti vlI
~
"c •
~ h
O
"no
n ~o
vui fI..'s ultar 800. A lei
a X (b - c):::aXb - a xc
~
•
c
VHltm" Il\'aliar limbo" os Indus pamil = 5. /, = 2 1f1. t' = 195. O Indu esquerdu é 5 '! 15. ti que d:í 75. O lado direi to nãu é 75 porque /I X " úá erro de exccsso. A julgar l10r esses exemplos. podcrra rnos nmdu ir que. clIloom o.~ computadures !'cja rn {1i~ I}I,siti\'o~ de uso geral. sua nntllfCl,;I 'i ni/:, os turnu1lI e.. pccialrncl1/e inadequados para efetuar ari tmética. I~ claro que l'S5a cu u cl ll ~ilo nilo é verllmlcirn. mas !lcrvc para i lus(r:lr a iml>Ut"ulnt'in de entendc r CtJ lIl O os compu/adore" fundmlal1l c '1 llai~ são suas ti m i l ;l ~·õcs.
A.2
Sistemas de números raiz, ou números-base
U m número deci mal ordi rulrio com o qllal luOos estamos familiari zados co n s i ~l c em Ulll a sellUêw.:ia de df!!- i /\J~ deci mais e. possivelmente. um ponto dcci mu\ (v(rgula m; lmétiea). A fnrma J!cral e !lua int crpre\
0123456789
Por curnpara,ãu. números hinários não partir de dois dfgilOS binárius
u~a rn
e..ses dez (Hgilos. Todos eles são CtlIl<;lruídns c'{du"ivarnel1/C a
01 Nú meros OClnis sito fOl1llUdos a parti r dos o ilO dígitos Ix:tai s 0123 4 567
Para us nÍlmcros hcxadeci muis são necessários 16 d(gitos. Assi m. prccisamu!l de mais sci~ no \'o" ~ím b() I ()~. I'ur coll\·c nção. siin usadas as Iclm.~ maiúsculas de t\ a F para os seis d ígitos depois do 9. Enliill. nÍlmeros hClladeci mai" siio montlldos a parlir dos d íg itos 0123456789ABCDEF
poeiçAo posIçlo
'" "),,
flgur • • . 1 A forma geral de um numero decimal.
..
'"
"'10
"","" de)
posiç!o "",<,<> ""." de. ) de.O' de .CIOt
I I I
I I
d,
d. ,
"
"
Numero .. I:
I . -k
q_l0'
d,
d,
d,
,
"
o
Blnauo
o
o
(» (»
o
M
1 lo( 2' 0 ... 1 ), 2~ I 1 x 2' I 1 ,,2 7 .. 1 x 2' .. O lO( 2~ ... 1 )( 2' T O X ~ I O " fl . . O), 2' , 1)( 2" 1024 .. 5 12 .256 ,128 .64 .. o .. 18 .0 ' 0 10 .. ,
O nU/IIl;lro 2001 em sistema bimlno. oclal e hexadtlclmal.
•c
-
3 7 2 3)(8)+7x82 I 2 1018 ' .. I x l/' 1536 ~ 448. 16 .. 1
fi gura A.2 Decimal
2
~
c
"•c
o
o
2Â l ~ ' OX\@10·" ' 0' .. I >< I00
2000 Hrucadeclmal
7
+0
.. O
•E
'".
+1
O
7 l1C ls' ... 13 l< 16',l x I6° 1192
.. 208
.. 1
•u
'•". ~
A l!x pre!>~i'l1l "dígito binário", que :.i!,llli fi côl I ou U, costuma locr lIellOll1inudu um b it. A Figura A.2 rnolotra o número deClinai 21101 t::.\prc ~l>O e m furma bináriu. oct:ll. decimal c hc xadccil1ltil. O lU"unem 7139 é ()bvialllenl ~ hexadccimal, PO(qul! {I símholu U só pode. ocorrer CllIlllín1Cros hexudeci mais. Contudo, () mÍlur.!ro 111 poderia eSI:.Ir
elll qualquer um dlh !'Ii:.tellub numéricos di scutidns. P:m\ evitar amhigUid:.dc, CO:.ll1l1lOl-Se 8, 10 {lU 16 ]1111"'.1 indicar a halo!! quando ela nlio é \~hvia pe lo próprin eOllte >.to.
U~:lr
UI1I !OdieI! inferior 2,
('01110 ~M! lHp! O de ll\lta~:1in hinária, octôll , decimal I,l hex adecimal, cons id~ m a Fig ura A.3, qUI: mos tra Ull1 cuujunt n de iruci ro, ni'i n- negati v\ls cxprcssos cm C'llhlum desses quatro :.i:.tCII Hl!> ljj fe rcnles. Ta l v~" daqui OI milhares d~ unos algulIl arqueólogo dc!>cuhra essa tabela c a cons idere a Pedra de Rosella Ilos :.b ICllla!> numé ricos do tinal do século XX c inídu do:.éculu XXI.
Tabel a • .1
Numeros decimais e seus equivalentes binaJio, octais e hexadecimais.
o
A,3
··Wi·-MO
O
'1+1+'
Blnaria
H'MM • •@-
14
1J10
16
IS
1111
17
,
10
E
2
10
2
2
16
10000
20
3
11
3
3
20
10100
24
•
100
3
3
30
11110
36
lE
5
101
5
5
40
101000
50
26
6
110
6
6
50
110010
62
32
"
111
7
7
60
111100
74
3C
8
1000
10
8
70
1000110
106
46
9
1001
11
8
80
1010000
120
50
10
1010
12
A
90
1011010
132
5A
11
1011
13
B
100
11001000
144
64
'12
1100
14
C
1000
1111101000
1750
3E8
13
1101
15
O
2989
101110101 101
5665
HAD
"
Conversão de uma base para outra
A COl1\'c~ào (lo.! mí m..:ro:. oclôli:. ou ht!xadeei mais para nÚIIlt!ro:. binário!> é fád l. Para cOll\ener um IIL"imclo bi ná rio p ara uc tnJ, divida u I,lI1l gru pos dl,l 3 bits. eom os 3 hi ts imcdiata ml,l/lll,l à cSl.juerda (ou à direita) do punto dccimal ( muit !!:. VC:lC:~ denominado um ponlo bi nário ou vírgula aritmética) fonn:lm lo um gru po, os J bits imediulU 1Hclltl,l ti l>l1Ol e!>qucrda o ut ro gmpú e :J:.s illl por dr:ulIe. Cada grupn (k J bits rode ser convertido dire tulIlcule par.! um lí nicn dígito. 0;,:1:11. () li 7, de acordo ;,:om a cllllve rs ão dada nas primeims linhas <1:1Tabela A. I. Talvez seja nccc!>sário adidonar um 011 duis Lcms li esqucrda ou à direita p.. nl precncher um g ru po c complctilr 3 bits. A conve rsi'io de (letal para binário é i~ualmcnlt! tri vial. Cada dígi to ne tal é simplc.smcntc ~lIbs t ituido pelo mi mem bináriu t:IIUl valc nt t! tle 3 biL:.. A cClIlversão de hexadecimal para biná rio é, em essência . a mesma (lue de oetlll para binári u , CXt!clU quc u lda dígito he"adecimal cn rrc ~pt)lIll e a 11m grupo de -I hits em vez de 3 hits. A Figura A.3 dá .. lgllll~ c.\crnplu:. de I;lIl1\er:.Õt:s.
<
o
Exemp lo 1
...
o
Blm\rlo
FIgura ..3
o
, ,
6 -....... 000 11 00101001000.1011 0 11 0 0 ~
••
,
9
Hexadeçimal
..---.,.............. ,
0''''
~.
o
5
5
~
5
,
Exemplos de conversão octal
~
,•
para blnário c hexadedm1l.1
para blnério
~
eo
ElIemplo 2
,
Hexad&e!mal
•
0''''
~
•
c
_--- --A
.~
,
o 1 1 I I o I 1 1 o 1 o o o I 1. I o 1 I 1 1 o o o I o o ....... o , 7564 3.5
BlnArfo
u
B
~
,•" , "
"
~
o ~ ~
• N
C
•
~
o
A c.:on\'crs~lI de números decimais paw binários puuc ser feita de dois modo~ diferentes . U primeiro método resulta diretamente da dcfinh, ão de. números binários. A maior potência de 2 menor que o mílllcro é ~ tlhlnlída do lIlímcro. Entiio, o prvcesso é repetido 11;1 difcrcll,a. Uma VC7. que o mímcro tenha sido dCCO Jl1pO~ 10 em pOlênci
No outro método. 11 nú mero bi l1l1l'io é escrito na ver!ical. um bit pOf l1l1ha. com o bit da extrema e~q tl erda el11 Imi lHI. A linha lle baixo é denominada linha I. li linha .,dm
I
1492
,<6
figura A.4 Conversão do nlimero decimal 1492 pala billârio pOI divisões sucessivas por 2, começando no topo e prosseguindo para baixo. Por exemplo, 93
dividIdo por 2 dá um quociente de 46 e um resto de 1, escrito n8 linha
abaixo dele.
,,,
Restos
I o o
18'
" " " ,
o
o
11
5
o o
=ill 1
A.II
o1
1 t
o 1 o 1 oo
. 1<1921(
Numeros binários negativos
Quatro sistemas dife rentes pa1':l rC]lresClrlar númerus ncgativos jll futa m usados Cl11 computadores digit:li s em uma época 00 outra da his tória. O primeiro é conhecido como magnitud e com sinol. Ne~~t~ s istema. (I hit dn eXlrema eS4ucrua é \I bit de ~inaJ (O é + c I é - ) e us bi ts rest.tntcs contêm a magnitode absoluta do numero.
,
•
'.
o
l o
o
fipur. A.5
1
1
1
O
I~ L" '" '49',' 29"
_ -
Rellultaao
,
1 .. 2,,749 . 1499
' ... 2 ,, 314 .. 749
Conversão do número blllário 1011 101101 11 para decimal pOi
0+2 )(
mullipUca~ôes
sucessivas
-...
por 2, Iniciand.o embaixo. Cada linha é formada multiphcandu-se por 2 11
'--_ _ __ __
1 ...
187~14 ,
2 )( 93 . 187
'23 ..'-46
•o
'--_ _ _ _ _ _ _ _ __ 1 .. 2 1( 11 ~3
E
'--_ _ _ _ _ _ __ 1 ; 2", 46 . 9J
' -_ _ _ _ _ _ _ ... O ... 2 K
que estil abaixo doia e somando o
bit corresponden te. Por exemplo,
749 é duas vezes 3'14 malH o bll I
~
u
" ~
, 1 .. 2 )( 2 _"5
1 .. 2 )(5_ I 1
na mesma linha que 749
' -_ _ _ _ _ _ _ _ _ __
' -_ _ _ _ _ _ _ _ _ __ o. ' " ~ 1+2 )( 0.1_
< _ _ Comece aqui
u u ~
o segundo sblerna, denominado COUlI)lcllIcntu de 11111, também Icm um lIit de ~i J1 a l , que é Opara mais e I para menos . Pam !Ornar um IlLllllem negativo. sub:.dtlLôI cada I IlOr O c cada lt!fO por I. bso vale IlLInbém pum o bit de :.inal. O complclllclI lH de I é obsoh:lO. O te rceiro sis h.:ma, chamado complem ento d e duis , também tem um bit de si nalllllc é O par:! mais e I pBnt mCIl03. O pm~e)~o para tran ... rormur UIIl mímcro e m negativo tem dUlb etapa!.. Na pri meira, cuda ! é ~UlhÜtuích ) por O e cadn O por I , o.!Aal;Ulleutc C0ll10 no complt.:mcllIo úe Unl. Nu segunda, I é :ldieionado UO resul!iuJO. A adi~i'io hl nárill é igual à udh,;ào dC('imul , CKce to
Se ncorrer um I'ai-u m 110 bit di! ex trema !'!~q 1Ler,la , e le é descartado. O qllartll \ istCIIl:l, que ~ chôlmado excessn 2'" I p iml mimcfllll d e UI bits, represem a um número afmale!lUnt!oo corno ti ~ul1la d ele Illc ... mn com 2",·1 . Por exemplo, pura mímeros de fi bils. m = 8, o ... i~ t cnlil é dennrnilludll excesso 128 c 11m mimem é arm:l7crmdo como seu lerdadeiro valor mais 12M. Ponanto , - 3 ~e toma - ) + 128 = 125, e - 3 é n.:prl!M:IlI i1do IlClo mí rnl!f11 binário de M bib p:tr.l 125 (O 1111 I () I ). O ~ número:. de - 128 a + 127 mapeiam pa ..... O a 255 . todo~ H~ Ijlmb j>lllkrn ~e r l!xprc~:.o~ cOnin um illleirn positivo dI.! H bits. O int ere~~alllc é quI,! e~se ~;"'te lUa é idê ulico ~rfl cnrnp lClIlenllJ de dois r.:\l 111 o bi t de sinal imcnillü. A 'l'uhda A.2 dá exelllplos de mímeros negativos em t Ol I {)~ u.-; ljUlllriJ .~ j~t!,!rnu,.
'abela " .2 N
decimal
Numeros negativos de 8 bits em quatro sistemas. N
binArto 00000001
I
-N
I
·N
I
-N
magnituda com sinal complemento de I complemento do 2 10000001 111l11l1 11111 tiO
01111111
2
00000010
10000010
11111101
111111 10
01111110
3
00000011
10000011
111\ 1100
11lI 1101
01111101
4
00000100
10000100
11111011
11111100
OillllOO
5
00000101
10000101
11111010
11111011
01111011
6
00000110
10000110
11111001
1ll110l0
01111010
7
00000111
10000 111
lllllOOO
11111001
01111001
8
00001000
10001000
11110111
11111000
01 111000
9
00001001
10001001
11110110
11110111
01 110111
10
00001010
10001010
11 110101
11110110
011101 10
20
00010100
10010100
11101011
11101100
01101100
30
0001 1110
100111 10
11100001
11100010
01 100010
40
00101000
10101000
11010111
1[011000
0101 1000
50
00110010
101 10010
11001101
11001 110
010011110
60
00111100
1011 1100
11000011
11000100
01000100
(rrm'il/lU/ J
o ·u
o-
<
. N
o
Tabela A..2
•"
NUmeros negativos de 8 bits em quatro sistemas. {Cal1tinuaçdo}
N
N
declmal 70
blnnrlo
o
~
,• ~
eo
u
-N
-N
-N
magnitude com sinal complemonto de I complemento de 2
01000110
11000110
10111001
1011 1010
00111010
80
01010000
11010000
10101111
10110000
OQIIOClOO
80
01011010
11011010
1010010\
10100110
00100110
11100100
10011011
10011100
00011100
I()()()()()Q I
OOOOOOOO
100
01100100
127
DIIIlIIl
11111111
10000000
I ()()()()()Q I
128
Não ex.istente
Não eJ1alenle
Não existente
10000000
Magnitudes com s il1i11. hem como t:OIllplclIlCIl IO de U111. têm tlua.~ rcprcscrllaçiÍl.'S I'nra zero: rn!li~ zero c JIICI1O:zeru. Essa sit ua~'ãu é indesejável. O sistcnm de cmllplCtllCnlO de dois não tem esse prnblcrlIiI porque ti c umplCIllCI1!O úe dois úc m,lis 7.ero também é mais zero. COl1!udo, (} sislcnm clt· complemento de doi~ ICtn lima .. inguluridadc dirl'rCl1\e. O padr.io de bit que consiste C111 I seguido por Os é seu próp,iu complemenro. () res\lltullo di sso é que a~
faixl\S de números posirivos e negativos fiCillll não·si ll1érricus; há um mimem negath'o sem IICllhllll1l\ (Ol1lrapanc positiva. A !niio desses prohlcmas /lHO é diffcil de achnr: queremos um sistema de codi licm;iio (jue lenha duas
propricdudes: I. 2.
Somente uma reprcsenta\'iiu para zem. Exatamente a mesma qUlIlltida(le de números
po~itivos
e t1tírneros negath·os.
O problemu é que 'IlIulquer cunjullto de mímerus com li mesma quantidade de nÚllleru~ p!1sitivo~ e IIÚIllCro~ Ilcguti\'us e só um zero telll um mílnero rlU]>lIr lIe mClllhro~. ao pa"so (Iue 111 bits pennitc um mimcn, par de I',ltlrôe<; tle bits. Sl'mr1e h:l\'erá um plIdrão de bits a ruui~ (lU U1II padrão de bit>: a meno". não illllxlrtaml(I (I\lal repl'e<;entação sej .. escolhida . E~se p:ldrilll tlc bi ts extru pode ser u~ado pura n ou para um lllíl1lero negati\ll gmmk. nu pUnl quahluer outra c\li~a. Ixm'm. não importa cumo seja u ~m l o, ele cerá sempre um incÔmudo.
A_:i
Aritmética binária 1\ tabelo de :Idição P[lnt números binário~ é dada na Figura 1\ .6. Doi!':
lHí1llt· ro~
binários
pw el1l ~er
sum"do!':, illiciando
111)
bit dH extrema direita
l' ~()lI1i Ul('() - ~C
(15 bit"
CO/Tc<;(.I()I1dentes 110 adendo e 110 lIugt'ndo. Se ror gerado um vai-um. ele é tnln~portado para lima p,,~içãll à c~4 uenla , exatamente como na aritmética decinllll. Em aritmética de com plemento de UII1. um \'ai· ulI1 gerado pela lIdi~' ão do>: hit~ da extrcma e~qul'nl a é sumado ao bit da ex trell1<1 direita. E~lie processo é dCI1Olilinndo l1l11 I rn n ~rx)rlc . ou \'11 1um, de cont(ll'IlO. Em aritmética (Ie compleme nto de dnis. um vai-um gerado pela adição do" bit.; da extrema esquerda é apenas dcscal1adu. Exemplos de aritmética bill~ria são lIlostradns na Figura 1\ .7. Se o adendo e o :1ugendo tiverem ~inai~ opostos. nãu pode UCOTTer um erro de excc~~t) . Se tiverem o mesmo ~ini11 c o resultado tiver ~i n al opUSlo, ocorreu UIl1 erro de excc.<;so e a re~ po~tll c"lli crr:ulfl . EI11 amb:l~ u~ aritméticas, a dc complemenlo de um e a de complemento dc dois. ocorre excesso se, e 'Iomcntc '(c, U \'lIi· uTll para o hit de sinal fm diferente do voi -ulIl do hit dc sinal. Cirunde parte dos computadmes preserv:l (I \'ai -ulIl do bit de si nal. n1H~ o voi 'l1m panl o b it lIe sinal não é vis("el pcl" respos ta. Por essa TaLão. geralmente é fornecido U1I1 bit de c:(cesso es pecial.
figura ".6 A tabela de adição em binário.
Adendo Augendo Som. VIII·um
~
Figura A.l Adição em C{)mplcmento de um e complemento de dois,
eo..
,
,
'O
O
O
emenlo de 1 00001010 11111100
(·3)
.,
"
O
lU ~
o
O
.0 O
00000 1 la
~
,
., O
~meflle2e3
,
00001010 1111 t 101 00000111
I descartAdo
00000ltt
.,.;
1
..,
t
Problemas 1. Convertn os ~cgtJintc~ números para binário: 1984,4000,8192. 2 . O que é 1001 JOJO()[ tbimírio) elll decim al? Em oclal'! Em hcxudecil11al? 3 . Qllai~ do:. :.cgUiJlIC:' são mímcrns hex:tdccimais válidos'! BED, CAB, DEAD. DECADE, ACCEDED, BAG , DAD, 4 . Exprc:.:.c
U J\1l1l !C ]"()
ckcimal 100 em todas as bases de:1 a 9.
6. A lIluiorill da:. pc,:.o":' só ro!!\! CllLllur até dez nos dedl)S; c()!l1uc!o, cientistas da computação fazem mais ([\le i ),~o. Se vm;ê (;L!n~iderar cada dedo como um bit hinário, e () dedo estendido represcnt.ar 1 c o dedo IOC;lIlrlo n
7. Efetue
I)
IllOtlo'!
~cg ll inl c cálculo
ú
cálculo
11 I 1 J 11 J +1 J 1J J J J I
00000000 - 2111111 11
b.
c.
I o.
- ----
do rcsuhado é I.
000 + 111
111
100
100
+110
+11 1
+100
com sinal consistindo em /I dfgitos podem ser represellfíldos em /I + 1 d ígitos sem um sinal. 1êm ti corno o d ígito da extremfl esquerda. NÍlmeros nega1ivos são formados sub1raindo-se cadll dígi lo de 'J. A~~jm. (J neglllivo de 014725 é 985274. T3is míTllcros s:lo denoTlli nadol> mímcros d(!. complemento ele nnve e ~ão análogos llOS números hi nários de complcmcllto dc UIll , EKpresse os seguintes (;01110 nlimcros de II'ês dígiloS de cOIllplcrnenlo de nove: 6, - 2, 100. - 14, - 1, O. NÚlllero~ decimail>
NlÍmern ~ pmÍll vl)~
I I. Determine
li
..• .
-2 11110111
Se Ul> -' hib de urdclll haix a são O. Se ocorreu UlIl erro dC4!xcesso.
O/lO +OtJ[
z
"o '"
u!) tlmblem3 aJllCr101', mas agonl em cOlll plemenw de um.
~ iLlul
•8
'o
'u
I 1110111
9 . Considcre o l>clptinte prohlema de adição parJ nlÍmeros binários de 3 bits em complelllcmo de dois. Para cnda ~oma , diga a . Se o hit de
•o
u
cm nlÍmcro~ de R hi ts de complemento de dois.
(JOIOI lUI +111101111 8 . l{l:!pita
'. ~
c
~
5. {)mllltm. inteiro, J>o~i l ivo:. diferentes podem ser expressos em k dígitos USando-se lIlíl neros de huse r1
eXprC~l>lL d..: s~e
•o
regra du adição para números de. complcmento de nove c e lllão I,:fellLe lI3 seguinles ad içõcs.
IIIM)I
000 1
9997
9241
+-99LJ9
+9998
+99%
+0802
12. Curnplelllculo de deL é análogo II comple mento de dois. Um mímem negativo de eomplemenw de dez. é formado somallllo-se I ali núrm!ro de complemenlo de nove correspondente, ignorando o vai-u ni . Quul é a n:gra dil adil.:ão p'lfll nlÍmeros de complemento de dcz? 13 . COnl>lrlUI I.. hclll'. c1e mlllliplicnção para números de base 3. 14 . Mullipli411C 0111 e 0011 cm binário. 15 . I:.scrcvu um progmma que aceita um nÍlmcro decimal com sbml C01l10 uma corrente ASCII c imprima sua r..:prc),cntaç1hl em complemento de dois em binário, nC1a1 e hexadecimal. 16 . Escreva UIlI programa
Números de ponto flutuante
m l11uilo~ cálculos, a fai;li6 de mímcros usados é muito grande . Por exemplo. um cálculo de a~tmnl)H1i :~)(Klcri a envoh'cr 211 a IlIn ..sn li" elétron. 9 X 10- gramas. e a massa do Sol. 2 X 10H gramas. lima faill:a que ullmp""sa 10 . E~~s nÚIIlCl"01l
E
poderiam ser reprc'ICntadus 1)(-'(
()(J(lOO()()(MM1(J()()OOO()OOOOO(MMMMMMlOOOOO.OOOOOCmmlOO<JO()llOOOOOOOC~
200(J()()(J(MMMMMMJOOOOOOO(XlOOOOOOOOOOO.()()()()(MMXMMMMlOO<MMXMMMMlOOO podcm (ou precisam) ser feita.; com prcci~iiu tle 62 dígitos significlll ivo.;. E1I\bora seja pol'sfvcll1líll1lCr lodos os resullados intermcdiários ~'u m 62 dígitos sign;fi'alivn~ c de l>l)i~ desc..rltlr 50 ou 60 dele.; antcs de imprimir o res ullado final. isso seria um de']lCrdício de tempo e memória de C PU, O <jue precisamos é de um sistema para representar mimcros IIOS ljuais a faixa de número<;
Princípios do ponto flutuante
8 .1
UII11110tlO tle separar a faixlI d" precisão é expressar mímcro~ lia r,HlIil iur II U1I1Ç~U ciclll (liI.'u lI=f X IU~
f é dCllnrnirHlda u frac;iio. ou numtiss:! . e t> é UI1l inteiro Jlositivo ou negativo de nominado exlJOcnlc. /I. verl'ão pura computador des..:a notalião é chamm.la plint o nutu1Inte. Algum'! exemplos de mímeros expre..:so~ n e~~a fom .....lio CUI ( IU C
~, 1 4=O,314 X 101=3. 14 X lOu O.UOOOOI = (I.! X !O ~- ~ = 1.0 X 10 " 1 4 194 1 = 0.1941 X 10 = 1.941 X 10
/I. fail(il é creti va mente detcrminilda pelo mimem de dígitus no expoente e 11 prccisào é deternlinndíl pelo número de d ígilO~ na fr1ll,:1Io . Como há mais de lIITUl maneim de representar um número dntlo, em gem i é escolhida ulI1a rnrllm como o patlr.10. ra ra invcstigar as propriedades desse método de re presentar números, co n ~i de re uma represcntação, R. com uma fração de tfê...: dfgitos cllm sina l. na rnil(a 0.1 S Ifl < I 011 zero e um el( llUCnte de dois I.Hgitos com sinal. A faixu de gnmdc1u dl's,l'e.; nÚltu: rn.; vai de +0, 100 X 1O·Q9 a +0.999 X lO~w. o
3.
Nljmero.~ negativos gmndes rnenorcl' 4UC - 0.999 X IO'n. Nlirncl'OS ncgativos entre - 0.999 X 10')<) e - 0.100 X 10- "9. NlílllcroS negati vos pequcnos com gr<1 l1dezus menores \lue (1, 100 X lU 99.
'1. .
Zcrn.
1.
z.
5.
404
Nlimems positivus pC<1 11CIIIlS com grandcz
9Q
,.
t
'.
6. 7.
Número:. IlI)~iti\o1> ~ 1lI"': 0,100 X lU o)<J ~ 0,999- X 10"9, N,írnerolo p"l>ili\,O!, grandes lIl
LJlIln difcrcll\'u 11l1]ltlrl:UIII! CllIfC tl COIIJ Ullhl de mimem:. q ue ro primeiros nnu ])()(1c11l ser uSlldo:. ]>tara ex pressar quaisquer mimaos na ... rc:giõc ... 1, 3,5 nu 7. Se: o re ... uilado de um opcmção a ritmé tica fur um número nas regii\es I ou 7 ]'IM exemplo, 1000 )<: 10M) = 10 120 - ocorrerá um er ro de cxcessIJ I! (I rc:.pti:.t c é incvitávd. De JIIOtlo k llld lumll.:, um resultado nas rcgiõc:. 3 ,m 5 IUHlhc lI! nãu pode M!r cxprc:o!>o. Essa s ituação é denomi nada c rro de falta . O erro de Culhl é me nos sério que o e rm de CXCClol>tI, porque I) q ua~c sempre é uma aprox imação 5a l i~ra l ória poLra mílllt:ros It:lS rcgll3es 3 e ~ . Um saldo na de 10 IIJl I\:ais não é muito melhor que um saldu de O. Outra (hrcn.:nça impunun tc e nt rc nlÍmeros de 1>01110 flutmulle c númcros reais é sua dc nsitl:ltle. Entre quab.qucl' ntÍmef(l~ rc a i~ , I e )' , há OUll'() ntÍmero real, não ill1pCJrlandn quãu pr(,xi nltl .1 e~ t cj a dc y. ES~a propriedade ve m dn fato de que. para quabquer mímcros reais distintos, x c y, Z = (x + )')12 é um mi me m real c ntrc eles. Os mímert1~ reai ~ rtll'lllalll IIlll COJltrnUtl. Ao conlrário. IHII1IC m ~ de Iltlllto l1utu:.1llte nãu formam UIll clI11t(nuo. EXittô\menlc 179. 100 1lI'lI1h~roS posi tivm poth: m ser ex pn: ~~n~ no s i ~l e ma de cinco d rgitu~ e doi s s inais u~a d n~ acilllll. 179. 100 mímems lleg:nivos c O (t]UC pode ~er cX pre~MJ de vários 1Il0IJO~), u (I ue (lá ullIlutlll de 358.201 ntÍmcms. Do mimem illJinito de mímems reai s cnlre _ I O ~l!llI c +0,1)':)1) X lO'''), soment e 358.201 deles podem ser CS I)ec i lieadu ~ por c~s a notação. Eles !:i'lo ~ illlhtlJitaJLJ., pcln:. ptllll inhns nO! Figura 13 . 1. É hem possf"eJ (Iue o resultO!du Je um cálculo ~eJôl um Jus outro~ nLÍmeros, :Iluda (Iue e~lejli lia rcgião 2 ou 6. Ptlr exemplu, +0, 100 X lO) di viJidn por 3 niio pode ser ex presso l~mU/lI/e"'t' e Lll no~ ~() ~b t e llla de represclllaçãu. Se o resultlluo de um cá lc ulo não pudc Ser expre~so 11<1 reprc~enHlçàl' de mílllcrm c m 11.\0, o ó hvio a faLCr J u ~ur O mimem mah próximo que pude r !ocr exprclIlIo. Es~c COnla ":Orn.:l1I..::
pmce~~o
é dClltllUilllnh, ur rcdund luncnlo.
,
3
,
B.'
A linha do mimelOs leaiS
pode ser dividida om !itlte regiões .
Flllta neg~tlvl
F,III! poslllvll
•
Zero
Numerol NI\I-i'I'VO' podem ~ , 8xpr_
I
que
•
N,"f!\4IrtlI poiklv"" que podO[l\Ja,. "xP,e~
r
,,.,
--+ - 10 '011
O
10" 011
Tabe'. B. t
Os limiles inferior e superior aproximados de numeros decimais de ponto flutuante jnão-normallzadosl que podem ser expressos. DlgltO. na manlÚlSB
o
o o
~
•
~
•o
•"
•
., ~
=
•u
~
o
••
~
() ell]Jaçu entre mimcm:. :ldjacentes que pode m M:r cxpre~~lh não é con~tanle em lud a ,\ região 2 ou 6. A ~cpara~ãl) entre I () .•)t)~ X 10\1') c +0,999 X 10~ é 11111111) maior que ti l>Cparaçlio e ntre +0.998 X 100 e +0,999 X 1Ou. Conhldn. tjuamln OI :.epamç:1u entre um nLÍmcro e seu s ucessur é expre ssa COnt O lima percell1agcm daquele mimC;: !'(l, não há Hlri:uyflO lI i ~lc lll ática e m toda a região 2 ou 6. Em outras pClh :k11l pn.:cCtt.::l1Ie lenha sido em !t!(tllOS de um s i:.lcma de representação com uma fração de tf'fu, tli.llito~ c um cxpoen!e de doi:. dígitos, as co nclusões li {llIe chegBlllos também ~ão váliJ as p
fluura
•c ,• ,
Dlgltos no ellpoente
Limite infenor
Limite supenor
3
2
3
3
1 0. 12 10-10:1: 10- 1002
lo' la" lo'"
3
4
1O- 1OIXIl 10- 13
10101111
la' la" la'" la"" la'" lo'"
3
4
I
4
2
4
3
4
4
HT'" 10- 100] lO-moro
S
I
10- 14
s s
2
10- 104
3
10-\004 IO' 1OO(M
s
4
la
3
20
3
10' VX>\} 10. 1019
10'
la'" 10{l\lUO
"
co
... o
"• o
~
•
• ~
• o
Uma varia<;tlu dessa rc prC$C nln~'ã(l é IIsada em c01l1j1uwdOl'es . Por questão de didênda, a CXptllll'lll'iH<;ão é dl' base 2, 4. 8 oU 16 em veJode 10 c, nesse 1.::150. a manti ssa consiste em L1111" sCllllêntia de JfgilOS hináriu... de hase 4 .
oclai>: ou hcxlH.lcciumis. Se o dfgito da ex tre1l1a esquerda for zero, todos os drgilos podem
~er
tll'"JocaJos uma cu"a
par;1 a esquerda e () expoente reduzido de 1, sem alterar tJ va lor do mílllero (exceto quanúo há exccs"o,. Uma manlissa que tem um drgilO nãO-:lCro na extrema esquerda é denominada lIur llmll1.ml:t . Números nonnaJiJ.mlos C1I1 gemI ~liu prcfcrfvcis aos nilo-nonnalizados. porque há somente uma forma nOnlmJizmla, ao passo que hd muitas funnas nào-1I0nllali7.!ulas. Na Figura 13 .2. sào dados exemplos de números de ponto l1utuante nomlalizados pan! duas bases de exponend ação. Nesses exemplos são mostrados uma I1m"ti~~a de 16 bits ti ncJuindo I) bit de ~i llal) e Ulll c:-; poente de 7 bits IIS;IIlUO notação de c.'tI.:esso 64. O pollto-rai7 nu pOlllo-oase ( nuli.\" f'uilll. vfrgu la aritmética) est:i à eS(lllcrda do bit da extrema esquerda da mantissa - islo é. à di reit:! du ex p...... nte.
L>
•
~
• •
8 .2
Padrão de ponto flutuante IEEE 754
~
•
-"• " o
•• •
~
N
o
•
-
rn
o
Até aproxil1ladmncllte 1980. cada fahricante de computudor tinha seu pró prio forrn:l!u de ponto flutuantc . Niio (I\1C toUos eram di fe rc ntes. Pior ai nda. al~lIl1 s cldes realmente efetuavum aritmética incorretamente porque a aritmética de punIU l1utuallte tem algumas suti Iczas que não são óbvin~ para o pmjclista de hardware médio. Panl corrigir ('~~s a sit uayão. 1\11 final Ja década de 1970. 1,1 IEEE instituiu UIII comitê para padronizllr li aritmética de ponto nututll1tc. A meta niio em apcnas permitir a troca de dados de ponto flutuan te entre direrentes computadores. mas também proporcionar aos projetistas de hardware U1l1 modelo cnmprovadamente corrcto. O trabalho resultou no IEEE $tandanl 754 (IEEE. 1985). Grande pólrte das c r us de hojc (elllrc e la ~ . a~ CPU" Intel. SPARC c JVM que es tu d all1 o~ ncstc livro) tem inl'lruçõcs de ponto Outuante que obedecem ao padrão de ponto Outuanle do IEEE. Diferente de lIluitos padrt"les. que tendem a ser débeis soluçõcs dc compromi sso qoe lIão ag rad,ull ó\ ninguém. esse padrão não é 111<1\1. em grande parte po rque foi. primariame nte. () trahalho de UTIla únkn pes-:oa. II profc~s()r de 1ll,lIcm{ttica de l1erkeley. Williarn Kahan. O padrãu scrií dcscrito no restante dc~ ta ~eção. O padrão definc trê ~ r()nl1atll~: prccisiio simples (32 bi1S). preci.'Ião dupla (M bits) c precil'ão c~ICl1did;l (80 bits). O furmalu de precisão estemlida rretelldc redu7.ir cm)s de arrc(lon(\;uncnto. É Ill'ado pril11;)riml1ent~· dcntro de unidades de aril11léticf1 de ponto nutullllte. portal1lu niio vurnos disculj ·lo mais. Ambos os lurmatos clc prcci~ãu ~ill1 p1c~ e Ile preci ~ão dupla u ~all1 base 2 para nmntissas e notação de C)(L-e~~O pal7l expoentcs. Os format os são mo~li1ld\)~ na Figura B.J. I\rnlm ~ eornC'iam com um bit de sil1<11 pam \) mí1l1cro como UIlI [(ltlo. O para posit;v() e I para negalivo . Em scguilln vcm o c.'<pocntc. (IU C UStl e:'l.CCSSIl de 127 para predsàu simples c excesso de 1023 par:! pl cc;s;iu du pla. Os expue ntes mfnimo (U) c rmh imos (255 e 2047) não sãu usaclos para llÚmer()~ normalizados: eles tê m U~(1S especiais COIIIO descrevemus lugo acliante. Pur fim . telTlus as rnfulli~ .~a~, 23 c 52 bits. respecti vamente. Uma n1l1nti s ~a 1\orrrlali7.ada t·oll1e~·;l 1.'0111 um ponto bil\~rilJ seguido por 11111 bit I e. enl ão. o Tl'''to {Ia mantissa. Adotando unta prática que começou com o PDP- II. ()~ autores do padrão pcrcclwnulI que () bi t I pri ndpal da 11It111tissa não tem de ser aml:t1.e lllldn. uma vez que é po~srvcl ud mitir qlle ele e.~tá presente. Por COn ~C(I Ue ncia. u padrão definc n l1lunti ssa de rnaneiru ligeirulllcnte dife rente da usual. Ela consiste em UIII bit I implíci to. 11I11 1)()11l1) bil1 ~rio irnpHcitn e el1\;1u 23 1,111 52 bits arbitrárin~. Se tod(l~ os 21 ou 52 l"Iits da n1nlltissa forem {l. a rr rallti~sa te m () v
é preciso dil.cl"
E.orn~\l
2-·
tl Ao·,,...malizl1llo:
"
I: E'POrl.HldRÇi
2·'
"
,-T~
o o o o o o o o o 0110 11 ,,2"'lp,,:.'I,, - 2", ' ,,2'1
6 , " :r", 1 ,.. 2,'1 ",,2"" ,,2·"
M!TlliM~
EIP\lfIofllll
uttlUll464 664-64 ... 20
o Smal •
f igura 8 .2
~."
'1'1 '11 '1'1 rtrl'i"lrl'i"l
o 1010 1 00 o _--... ..... . . . S m~1
tlOfTrutlllllllo :
;z-~ 2-"
1001 001
110 110
oooooooooo ' 1"2",,,,2··
e.culo!l ~
673
" >< 2'") - .32
MMtiUII~! ,,2· .1><2·1
e . poe-nlt1
_2'( ' '' 2 T,1
64 .. 9
Exemplos de números de ponto nutuante nOlmalizados.
16 T NOO·TIDT">II~.,,!I
A
16 '
A
...:"c"c"c"__ oo 00
.. '
A
0001
IIr'
A
1011 .1I1·tl~ 1fl l.Fl ~ 16 ') "'.3?
ManU.lft' 1 .,. 16"' ,e" 16.... Im ""CI!SIIO
'119 - 114 .. 5 Paul "'o,ma~IBT. dtlS10qve
No,malltAdo:
~ m. 1I!Is1I8
2 dlll'lo. 1\t~IId.,;imBII paTa ti eSQVeTde 11 ~~bTTnlll? <.lo 11>_011
01000011 0001 ~---'-~ Sinal E. pottT11a um O_SSIl 64'87 - 64 . 3
é
L
... ;'1---,8'--T--""'''=---~ JI ", Mnnlltsa
50'"
Flour.8.3 I-'ormatos de ponto Iluttmllle padrão lU::!::: . lal Precisão simples. Ihl Precisão dupla.
BoIs 1
I(
,.,
•o •
"
"
11
"
MantlHII
EXpoIIn1.
• SII\IlJ
o
"o
''I
~
co nflL ~1I0 COJl1 uma fra ção convencionaL iL cornhinll yão do I implCcito COIllI) po nto hinário i mplíci cn ~ com os 23 I1U 52 bit s c~ p lícilll~ c dCIIUlIl Luilda um significando CIII vez de uma fruyão ou I1I nnli~sa. '!'m los O~ mímcros llllfma l iLU '
dus têm um signilic,wdo, .\', na fuixa I S;
l'
< 2.
Ai> c arlli.; lcrbl ll.:a ~ numéri cas dos Illímcros de ponlO llulU11111 c pÍldri'ío IEEE iJ:lO dadas Uil Tilhela 13.2. Como exemplo)" co n~idc l é Ih nLÍlIleroS 0,5 , I, c 1,5 em formulo normalizado de precisão única. Eles i>ãn rc prc se tllad()~ em hcx OIdedmul CtlIllO 31'000000, ) F800()OO, c 3FCOOOnO, respectivamente. Um dLl:. prohlcmui> 1nld k illnili ~ dos Illímcrus de ponto OU[ullllte é como lidar com faha), exc~ssos e ntímcl'OS llri o - inici ali za do~. () padrão JI :EE trata dc)scs prohlemils explici tamentc, [omando emprestada suu abordngem em pa11e do CDC 66()O. Além de alÍlllcros norm:llizauos, o padrão tem outros quatro tirlO~ numéricos, ,!t:scritos adiante c! m ()!> trud{)~
'O
•o
•8 "
z
•u ~
na FlgUru UA .
Surge um problema quunuu () resu lt ado de um cák ulo lem um a grandeza menor ljllC o menor mImem de ponto tlutu:lIlIe llUJ'lllali Lildo (jILl.: plldl.: s\!r rcprescntauo n es~c s i~t c llla . Ante!>, qua!>!! wdos os huniwurc!> ndotavam IIl1lh de dua!> abordagem.: hpellas ujuMar o re~llhad o par'.! leI\) c continuar nu cau ...ar um erro de f,lll:. de ponto nutU!llIIc. Nenh uma dela!> é rca ll llelltc l>!ltisfat óriu, portauto o IEEE invenlounlllncros desllOrmali"Ll.IIlus. Esses nlÍmeros têm um cx poelllc () e a frllçào Jada pelos 23 {lU .52 bits s~g uillle s. O bit I implfciw à e~qllerda do ponto binário agora )c toma um (). Nlíll1ero!> d!!!ollllrll1ali zilclos podem ser distinguidos dus lIonnalizudos porque niio é rcrmilido que os norl1lalizado~
tenhúln IUlI eX llOe nt~ de O. O menor mimero nornHlli"':tdo de pred s1'io simples tc m um 1 como ctopnent e e () como fração o.: represenla 1,0 x 2 l "t, . O lllaior ntímeru dcsnnrmulizaclo tem um O corno cxpoe nt e e !>6 [ na mantissa e reprcsenla upmxillllluamente O,1J'J99999 x 2 12(" que é quase a lll~!>lna coisa. Deve-se notar, entrelilllto, (jUC esse m1mem tem ilpenas 2 .~ hit!> sigll ltlc,lti v{}!>, contru 24 paru lodos os nlÍmeros normalizados. À Illedida que c.íleul ns redulelll ainda mais c ~se rC!>llltudo, n eX II{)~~nt e continua firm e c m 1Il.1S alguns dus prime im~ ~lil ~ d3 lIlantis~a ~c lOf/uml zero!>, o qu~ ro.:dlll Il villtlr, hc m como o mí lllc ru de bits signiticilli vos na Illillllis!>ll . O menur nÍ1meru niiO"lero deS llorll1i1J il.lIdo c{)n~iS l e cm I no hit da ex trema direila, sendo o resl<mte (l. O - representa ,_ 2J , pOn3tl10 n \Ia , or e• , " ex poente rcpfe!>cnta '1_ 1 ~1i ~ I.: fi '"raliil() _" I ~'l. ,-!!>~e CM[Uema proporcIOna IIIll crro de
n.
Tabo la 8.2
•
Características dos numeros de ponto flutuante padrão IEEE.
Precisão dupla
Premsão simples
Item Bits de sinal 8
11
(JUs ns mantiua
23
52
Bits, total
3J
64
SiSlema de erpoen!e
Excesso 127
ExatmO 1023
Paila de expoente
- 126 a + 121
-1027. a
Menor numero nonnaliz!ldo
2~116
2- lOn
Maior numero normalizado
aprOI. 212 8
8i!8 de expoente
Paixa decimal
Menor numero
aprox.
II
NOflnalizlIllo i
DDSrIOrmaliZa!lOI i I
Ti pos numéricos padrão IEEE.
aproJ(. ZIOH
a
aprox, 1O"4tt
d~snormalizado
figura B.4
10.38
o"
E~p " Max O
+1023
1038
aprOI. 10":106 a aprox.
1O~ql:l
10-32 4
Ouak1"'f pAdrao d4I bits QIJalqutr paurAo de blli nlo·tllrO
~===:===:::::::::::::::::::::::::::==~
~I±~I===o==::;======o=====::;
Zoro Intinilolt.1
1 11 ... 1
O
~::::::==*======::::; 1 1 1 ... 1 QUlllquer padrão de bns nio·zsrc
N~o li 10111 nUmero \ ~
Si! do w,aJ
'•. ~
<
00
ralla gruuual. pUHlue renuncia à sigl1 ilidl.ncin em \'CZ de .~alt:.!r para O q\H\Z1do 1.1 resu ltadu não puder ~C l' expresso C0ll10 um numero nurl11alizmJu . II ~ dois zeros presentes nesse esqllcllltl. I}()sili vo c neg:llivo. determinados pe lo hit de "llwl. Amho~ têm um CXpOCnLC O c uma manlissa (). Tmnbé m ílq ui o bit ~ csqucnla do ponto hinário é implicitamente O em "ez de I.
" ,•
O excesso l1ão pude ser Ir:LI
...
O
o
"•
"
~
• o
u
•
"
finito dividido por inlinito 6 7.ero. De modo semclhulltc, ljual(IUCr mimem finitu dividido por 7Cro dá infini to. E infinito tlivitlido por infinito? O resultado é indefinido. Para Inltar esse caso há nut ro fonllato. dCl1oll1irwdn NuN (Nu! a NUlllhcr - não é um número) . Ele t;l111b6111 p{xlc ser usado 1.'01110 U111 openll1do l'um rcsul!ado<; prcvisfvei,<;.
Problemas "
~
o
•• • o •,
~
N
~
o
1. Convena os segui nte 11lí1l1cros P;Ir:1 formuto IEEE de prcci.<;ãn simples. Dê os rcsultadn<; e01110 oi to dfgilOs hexadec ill1ais. n.
9
b. c. d.
5/32
- 5/J2 6. 125
2. COllvertl1 os seguinte números de ponto nutll<1l1tc IEEE de prccisi'ío simples de hexadt:d11lais para deci mais: a. 42E480{)OH
b. l F88tlOtlOH c.
008()()OOOH
C7FUOOOOH 3 . O ronnato dos nLÍmeros de ponto nuluante de pred,<;ào lín ic
esquerda da mantissu. A hase pnra cxponcllciação é 16. A orde m dos e
e;tlcc~so
de 64. e:
5. Pam ~(l mar d o i ~ números de ponto nUHmnte você precisa aj l1 .~tar os exp(leJlte~ (de~ loc nndo il r mmti~~ a ) panl que fiqucm igu;1is. E11Iiío você pode sOlllar as m a nti ~s as c nUTTlwliznr o resuhal!o. lle for l1 ecell~árin. Somc oS mímcros IEEE de prccisão llnica :H~EOOOOOH c 30 8{X)()(}()H c expresse o fe~lIhad o l1onnali zadol'lll hexadccinm1. 6. A cll1presH Tightwud C01l1puter Compuny decidiu Ilieu lIU mímcm de bits s ignificilti vos nu re ~ ultad o. Quol é essa SitUl1Çãu? pos~fve l é um nlgoritmo ilerativo (por exempl o. Newllln-Raphson). Algoritmos iterati vos predsl1m de uma apro}( irna~'ihl inidai e entãu a II1clhorlull conSlantcmente. Como você pode obter uma mil. <[tludrada aproximuda de Urlll1ÚI11Crtl tle POI1h) nutmmtc?
8 . Alguns chips de »UlltO nututlnte têm uma instrUl.;ão de nti7. quadrada embutida. Um algori lJl1o
9 . Escreva Ul11 procedill1cl1 to pura sonlar do i~ lllírncros de ponto llutuante de prccillão si l1lp lc.~ padriíll IEEE. Ca(la mimem é represent udo por 11111 vetor hooleano de 32 elementos. 10. Esçrevn UI1I proeedimel1 to para somar duis núll1eros dc ponto nutuanle de precisão ~ irllpl c" que usam base 16 para o expoente e bnse 2 para li mõlnlissa, mas não têm um bit I il11p1fcilo ~ esqucrda do ponto h;lI<írio. Um nÚ111em nornmlizmlo tcm 0001.0010 . .... 1I1 I como seu os 4 bits da extrcma cS4ucnla da 1I1i1lllÍssa. mas não 0000. Um núrucftl é nOr"lnalizl1do deslocaudo-se õI 111õ1ntissu 4 hi l5 para li csquerda e subtraindo I (lo expoente.
",j.
.,
b
Programação em linguagem de montagem E\'crl W"ud Vrijc IIni"cr!>il!;!;l AI1 I ~I~ nl:i. tl nlam!.1
C\lll ljlUlador tem unlll ISA ( Insl ru cliun Sct A rchilect u n : - A rq uitel ur u d ll CIJlljuIl IO de I ml n u;lw ), (jue é 11111 lcgi~l .. ador~~ , illslnJçÕCS I,,) OlllOlS cHrac!críl>licul> visívd ... par..! seus p rogramadt)re~ de lmi)(o niH!1. El>sa ISA COl>IU IlHI M!r dcnorninud .. linguagem d e m áq uina , embora es~ lermo niio seja tle Indo exalO. Um programa IICSM! nível de ah:oll1l\'ão é um" lunga lil>I ,1 de mírncms binário)" um por in!>lrução, que inromlu quais in.\o lnu;õcs cxct.:tIIar c lJuui:. ~ãt) :.c:us operandos. Progralllur tolll mímt:ros binárin" é muito diffcil , pol1'1II10, todas as m:íquimb lêm ulTln li ng uagem jlc mOlllaJ,lCm. umu rl!prcscllIlu;ão "imhóhca da IlrquilcluriI dn conjunto de illl>lruÇÕCl> com nomes ~ imhóli co~ C0J\10 AOO. SUB c MUL, em \'CL dc mímcru~ hi náriul . btt: a]lênc\iec é um tu torial sllhre pmgramuçilo cm linguagcm de m ontUgelll para urna rmiqllil1ll ellpcdlica, a lllld HUM!:! , ( IUC era ul\;tda no 113M PC nriginul e roi ri hase 11 partir d:\ (jl1al lle J c~e l1 vo l vctl " lLltHJcrno l'ent iuUl. O upêlldicc 1;lIlIhénl ahl'ungc a utilitaçiio de :llglll1la~ rcrruntcn la ~ (Iue podclII ser del\currcg •• dus pura ajudllr a aprender pnlgnulIllçã.) em li ngllllgcrn de mUII1 aJlUlur n leitor ,I apre nder ...Ln]Ultclura de ellll1pllladurCll por meio de experiência pnítk:l. I'or c!>~a raz.:io, escolhem()~ lima máquiu.l :.implcs - U Imel HOHK - COIIIIl cllcmplo de lmhalho. Emhora huje as H088~ sejulll rarame nte enc\1lltnululI, tooo PClIl ium é Ç;Lp:LL dc excclLtar programall HOKK, I>OL1antO U ~ liçi)es apre ndida ~ aqui ainda sãu aplidvds h rn:'\cluinas I\llx lcmas. Além UI! mais, grande plJl'tc <Jus iU ~ IJ'llÇÕ,,::o. de núcleo du Pentium refere-sI! n~ m c~ nms (IUC as do NOS!!, s6 qu ~ IL ~a lH rcg l ~l nLdorcs de :12 hit!> em vez de regilltnlllorclI dI;!. Ifi bit!>. A~~illl, este api!rulice também Ixxle ser con~idcradn ullla introdução leVe! à l>mgnulIlu):ih\ em linguagem de montagem do Pe ntiUIll. Para puder programar ' Iualq uer máqui na cm linguagem de mOrll agem. (I programador 1t:11l de conhecer detlllhadarnelllc li ôlNllHtClura do cllUJumu Lle inlotm~t"Ies da máquina. Dc ;Icordo com i!>so. as Seçõcs C.I 11 CA deste a~lIdicc S:II\ dedicadas à anluilctllr.l tio 808K. :.ua nrguniliLf;ão de memória, modos de endereçamento e inslnrções. 1\ Seção C.5 d i~cu tc n ils~c mhle r, que é tlllauo n!!!>!e apêndice c c~t á disponível gmtuililrnente. como descreVe!remos adiante. A notação cmpregnda lIelotc apêndice é a IIs:ld:.l por e~se a:.scmblcr. Outros assemblers usam nmaçõcs direrentes. portanto os Ie.itores '1ue já estão ramilinrizados com a pru gru m a~'ilu de muntagem do 808H devem fi cnr atcnlo~ às (Iifcrc n ~:ll s. A Seção C.6 d iscute uma rcrramclIlIl illlcrpretadura/ra:o.treadllrll/dcpufl.Lduril que rode ser descarregada para aj udar u principiante a depurar prugmmilS. A Seção C.7 de~cre\'c a in,talação da!. ferrame ntas e como começar. A Seçãu C.8 contém prognLOliIs, exemplo:.. exerdcios e soluçiic..'i. A Seção C.9 discute llUCl>lÕCll de implemcmayào, bugs e limittlçiklo do material.
T
Il\'tI
coujunto de
C.l
Visã o geral
Iniciaremos n\ )~~\I P;I:.SeiO pela programação em linguagem de munfagem ra/cndo de 1110nl"gcll1 e dandí), em seguida. um pcqucnn exemplo paro ilustrá-la.
IllglL n ~
comentários sohre IiUguilgCI11
C.l .l Lingua gem de montagem Todn a~~e rn bl er IIsn nmcllui ll lcos, iSlo é, pnlnvras CllrlaS tai s como AOD, SUB e MUL para instruçiks de rmt(Jltina eOlllo lIUtlllU·. sllhlnLÍr e llIultiplic'lf para {lue liqucm mai ~ ráceis de lemhrar. Além di sso, asselllhlers l'ICOllilem .1 utiliLa~~iio de nomes sim bólicos plira cUlhtan lc~ c rótu los pam imlic:lr endereços de inslrução e memória. Allemni s. gmndl! parte do:. aSSt:mblct's s.upona ccrlU mimem de plocudo·iuslruçõcs, {Iue não slIo trad uzidas pura inl\lm~õc:t ISA. mas C]ue lIão comandos para tl assembler lluC direçmnam () proce~loo de mont:lgcJl\.
409
o
1;)(1 ' ''WRIII: _srOOUl .1
••
SEcr .!EX! 11M:
""" "
eX,de·""
•" o
~
• "8
~
o u
figura
~
N
'" '" '"""" "'" ~"" "
00 O$ ", SS _ ES ""H -OO AL De AX : 811 ' 01) Il l ' OO CH-OO CVoe OH ' OO Ol'al)
lIdB
0000 0000
CU/DO
51', "
,,.
_ EXIT
'"'" '" ''"" '"
'"
ASCII ' HeIo WOIIdIn' 8YTE o
~.
•
•
STOOUT WRrrE
"'<
•
••
PUSIl
,~
.BECT .0","''''
~
o
PUSIt
linguagem de montagem (bJ A tela correspondente do raslreador.
•
w"
C.,
(a) Um programa em
~
.""
PUStl PUStl
"" e s ' "" .. '"", I ",. ", "" " "' O" " "" "O, . cc".,.,, ",. "'" '" ,u '" ...- - -
('I
"'"
C )( .d.·~ ...
I'USII C ~
l'U5'1 HW f'VSH S IDOUT 1"lS'1
u OOO~
>
0001
''' :Mor -P C
0000
OOOe
~
'" '"' ~
PUSII
Wf1IT E SP .! C lt AX C~
, , ,
,, ,,
'"
'" ,,. '" I I?
•
{bl
Quondo um programa em linguagem de montilgem é t1limcnlildo em UII1 progrnmn denominado ossclllbl cr, este converte (J prognuna em um progrUl11n hinário adc(lll,ldo pura (I execução propriamente d ita. Enlão. ('(<;0 p rugrama pode ser executado 110 hardware em
C.1.2 Um pequeno programa em linguagem de montagem Pam tornar algutlms dessas idé ias abstratas UIlI pout:o mais concretas, considere o progw ma c li imagcm uo rastrcador da Figura C. I. Uma imagem da tela do ra~t reud or é duda na Figura C.l. A Figura C.I (a) mo.,tm um programa simples em linguagem de montagem pam o 8088. Os nú meros após os pontos de exclamação são m: tltíllleros dus linhas da fonte. pum faci litar a reft:rênda às pnrl e~ do progratlll\. Uma c()"ia d es~l' pflJgra llla pode ser encontrada 110 material que ucompanha este livro. no direllírill eX(I II'fl!".f no arquivo-fonte HIII/ \Vrld.\" Es~e p'ro!!l"ama de lIlontagem. C01l10 todos os programas de mllntagclll discl1tidos neste tt pêndicc, têm o sufixu .s. que indieu quc ele é um programa-folll e de linguagem de muntagem. 1\ tela do rastrcador. mustr;l(la nu Figll r:l C · I (b I, contém sete ja nelas, cada UIllIl com infonmu;f"lCs diferentes sobre o estado do programa binário que está ~e ndo c'(ectl\ado. Agonl, vamos exami nar bre\'cmente a~ ~te jal1e1a~ lIa Figura Ç. I (b). Na pane de cimil. há tre( jan c l:l ~. Ilua( maiores e uma menor no meiu. A j.mcló] na piU"tC superior eSljuerdu mos tra o contclillo do proces~ador, que c()n .. i~ le 11m Villurcs correntes dos registradores dc scgmen\lls, es, DS, S8 e E8. dos reg i .~1 radorcs aritméticus, AH, AL. AX. c de outms . A j anela do l11eio nessa linha de cima c011 té m a pilha. uma área de memória u ~ll d ,l p1lnl \·:l1orl'.~ t e 1l1pl)nírio ~ . A janela à direita nessa parte superior possui um fragmento do progntllla em linguagem sl!s j ancl:ts há nutm <jue mostra uma pllrção dl! Illcnuí ria. E~~as ja l.c las sc rãl l Iti~C IJI id:t~ CIlllI 111 11 i .~ detalhes nl<1is ~ rremc, 1l1f1 ~ a idéi:t br.sica deve estar clnra: li mstrt>ador mOSlra o prognt ma-follt e. o~ regi s tradore~ da IIlflquina e uma UOi! qUHl1Iillade de ill fornmçõcs .~()bre n estndo do programa que eSlr. em exccu~·iill . A 1l1edida quc cada illstruçãu é execu tada. li informação é 3IUal i7.l1da. o que permit e ao usuário vcr. com gró1l1de detal he. u que n prog.rama esl<í fa7.cnd u.
C.2 e~s"
O processador 8088 Cnda processador. inclui ndu o MOBIl, tem um eslóldo interno. no llUalll1antél1l celtas infurmaçf)C s cruciai s. Para Iilli1lidade. o procl'ssador tem um conjunto tle ff:'gistra dofCS 1\05 quai s es s a,~ inflH"tI1açües podl' nl ser armll7.e-
'.
IIlld.. :. e pfl)Ce"'~.ldil~ . Prov,Lvclmenle n mais importante dt:lcs é o PC (p,-..gnun COlllltcr - contador de prog ramllJ qUI! cllnlêm u Joculizllçôo de memória. isto é, o endereço , da próxima instruçiio a ser executada. Esse registrador lUrnbélll é denominado IP (lnsl ruclion I)uilllcr - pOlllcirtl de instrução). êSS:1 instruçõo está locillizuda em LIma pane da 1ll.:l11órin principal denominada segmento de l,ódign . .Ar. memória principal no 80RR pode H!r até tllIl pouco 1lli1is de I M/1 de tamanho, mas o segm en to ele cód igo corrente tem apenas 64 KB . O registrador CS na Figura
CI inrurmu onde
(I
~eg Jtl C nlO
de código de 64 KB çOlllcça dentro da memória de I MIJ. Um novo scgmcn10 de
cóJi gu IWcgrnClllo de dado~ de M KB, (Iue informa onde os dados começam. Na Figura C. I sua origem é dudn pelo regisImuor OS, que lamhém pode ser alterado conforme necessário para llceSSlIr dados fora do segmenl0 de dados correl11\!. O~ I"cl!.i~u ,lt lorc~ CS c DS ~ão m:cc s!>ário~ porque o 8088 lem regisll"i\dorcs de 16 hil'<', Ixu·IiI!1l0 eles não podem colttel". dirc~un(, llll!, tlS cnd.:rcços de 20 hilS nccessál'ios para referenciar 10du U IlIcm6 ria de I MA . É por isso que o~ regiwadmc~ de ~egIllCI1l()~ de dado~ c de cudigo foram inlroduzidos. O~ I\utro~ reg i~lrutlores contêm dado~ ou pOllleiro~ para dados nu mem6lia principal. Em program
-
.-.. B
•
~
•o o
"
B
•o
C.2.1 O ciclo do processador A opcmçau do 80HS (e de todos os oulros computadores) consiste em c~ ec utar insll11çôes, uma após:l mUra. A execução de 1II1l11 tini!';!) in~lnJ(.:ão pode Ser subJi vidida nas M:guinl es etapas: I.
2. 3. 4. 6. 6.
7. A
BII~ car a ill~lruçãll na ll1emória no segmélllo de código usandc) PC. Inncl1lelll ar li cOll1ador de pmgnlllm. Dccodi licar a in!ootrução bu .~ cadil . Buscar O!oo dados lIecess,irios na memÓria clou nos registradores do processador. ExeClltilr ,I instrução. Anna"cmlr n~ rcsultmlos da instrução na memória e/OlI registradores . Voltar à etapa I para iniciar li inS1J1Ur ão seguinte. exccu~ão
"
~
u
Do Il(lll10 de \' i~ta de um programador elllli ngllagclI1 de montagem, o 8088 tem um conjunto de 14 registradores. E~ se~ rcgl ~ lradorc~ ~ão, de CCI1{) modo, o blnco de rascunho nnde as instruções 0penun, c c~!ii(J cm constante uso, Cll1hnr:lll~ resultados neles armazenados sejam llluito voláteis. A Figma C .2 d á lima visào geral dcs~cs 14 rcgi~tnltl()res. I~ daro que essa ligllra e a janela de regi~lradorcs do rastre:ldor du Figura C. J são muito ~clllclllílntcs porquc das rcpft:scm:Jm li mesllla infonllil\'ãll. Os registr:l(lnre~ ~088 têm 16 bil s de largura. Não CJliislCIll dois regislradores t]lle sejam complelumellte equi v;~lenlCS em tC fl llU~ funcionais, porém illguns dcles ~om partilhalll cert as caraclcríslü:a s, portanto ~iio di vididos em grLlpo~ na Figur,1 ('.2 . Agnf:l, vamos di scutir os difcrentes gmpos.
AH
AX
ReglstradOfes de segmentos
AL
os
SegmenlO dtI código
BX
BH
BL
DS
SlIgmento de aedos
CX
CH
CL
SS
Segmento de pilha
DX
OH
DL
ES
SegmenlO eXlra
"
fluura C.2 Os regislradores 8088.
• 7
"
O
Ponlelro 11 lndlce
SP
Ponlltiro de pilhll
BP
Pomelro de base
S'
(ndice de lonte
D'
fnalce de des~no
I
"
I'OOITSZ ]' I' ]'AI P FlaD5 de 851ado
, If"lSt((~o
iJ
CC
O
Ponlelto de
,P
\s
O
Códigos de condlçào
S'
O
I
"
Conlador da pfO{lrama
8
•'.
~
J c Ullla instrução se parece um pouco com um pmgram,1 muito pC(lucnO. Na vcruade, algu mus llIicrtJl)rogranm , para executar slIas instruçõcs. Os
Reglslradorlls {Ierels
~
o
máquilla~ i"clllmenle têm um pequeno programu, denom inado Illicroprngrama-,- ~ã l' uc~ C ri h)S dClalh:ldamclIte no Capft ulo 4.
~
'•.
IPC O
-
-...
N
-••• o
"d
o
~
8 o u
• • •o
~
-
"d
-• o
~
o ~ ~
• N
•"
."
o
C.2.2 Os registradores gerais Os regislnldorelio do primeiro gntpO, AX. BX. ex e DX. silo ().~ reglstrlul ort.'S gerais. () primeiro registrador UC5SC grupo. AX, é dcnom i rlUdo o rcglslrudor IlclIllIlllndor. Ele é usndo para coletar rC~ lIltlld ()!! de c,m,putaçôc~ c é o alvo de Ilwitas das instruçõcs. Embora culla um do!! rcg islmd o rc~ pussu executar gnlluJc 4ual1lidmlc de IUrcr:t ~. em nlgurna
O segundo registradtlr dc~se gnl lXJ é o 8X. () regls lrlldor de buse. Pam muila~linalid!ldc~ II BX ptKlc ~r IIsado da mesma nmncim so, cÜl11paranl\1s uua~ in,<; tru lV~~ . Em primciro lugar. lcmos MQVAX.BX que COpi:L para AX
1.1
COLllCúuo dc
ex. Em segundo lugar, lcmos
MOV AX,{aX) que copil! p:lnL AX o COl1tclÍtlu du palavra de mcmória cujo endercço cstá cuntido em ax. No primeiro cxemplo. ex cuntém I> operando fonte: no segundo, ele alx mla pura u operando fonte. Em ambos 11.~ cxcl11plm. note que a in ~I L·\L · ção MQV tem um operando fonte e um destinü. c que o destino está e~crilo ante-<; da fonte . () próximo n:gi~trador gcrul é ex. o reglst rutlor d e contadores. Além de realilur I11UitU ~ t)utra~ tlLre fa ~. e~~e registrador é usado espccifkarnente par.!. conter contadores para laços. Ele é automaticamell1C dt.."C rementado nu in'" trução LOOP. e os l a~os gerulmente são encerrudos quandu ex ehega a 7ero. O quartu registrador dl} grupo geral é OX. tl r egistrudor d e d odos. Ele é usado juntamente com AX em imtru · çõcs de comprimento de paluvra dupla (ist(l é. 32 bi ts). Nesse caso. OX cüntém os 16 bits de ordem aha e AX possui üS l(i bits de urdem ba ix a. Os inteiros de 32 bit!> costUJI1:UI1 ser intlicudns pelu termu 11111 1:11. () lenHO duVlu é Ilunnnlmcnte rescrvadn pam valores dc ponto Oututlnte de 64 bits. cmbur.I há quem use " duplu" para inteiro" de 32 bits. Nes~(! IUwrial. 1I3u haverá nenhuma Confusão punlue niio discmirclIltls númcros de punIu flutuanle . Todos es~cs regi s trudore~ gerais podem ser considerados C0l110 um registrador de 16 hi l ~ nu como ULU pnr de rcgi~lradme ~ de 8 bits difere ntes. Desl'e modu. 1) 8088 tem exntaLllcnlc oito registradores diferente~ de 8 bit ~. que l>tx lelT1 ser u~adl)s em in ~tnJçõc s de byte e de camcteres .. Nenhum dos üu tros registradore~ Ix llle ser divillido em metades de 8 bits. Algumas illstnu;ões usam UIlI registrador inteir\)o"'omo AX, porém outras in "t ruçõcs u .~aLll !LpcLH.L~ mctlltle de U1I1 rcgistradtlr. como AL ou AI-!. Em geral. instruçõcs {ltlC efetuam aritmética usam I, ~ rcgis1radurc" cum· ]1lctus úe 16 bits. lIlas in ~ t ru~'õcs (Itle lidam COLll canll'teres em ger,l l usam os registradures de 8 bits. Todavia . é impurt:mte entender que AL e AH silo apeLló\s Llomes par,L ambas as metade" de AX. QUl\ndo AX ~ carregado com um novu valor. ambos. AL e AH. oSlu mudadus. respectivamente. para as metades inferior c ~l1pcriur do número de 16 bits c(lloc:tdo em AX. I'am vcr como AX. AH c AL intcrugclIL. I.:oLlsidcre a instrução MQV AX.258 IIILe carrega I) registrador AX com n valur dccilllul 258. Após essa iLlSIIlLl,:ão. I) rcgislmdor de bylc" AH contém (1 valllT I. c o registradur de b)'tc~ AL detém o númeru 2. Se CSS:Linstruçãu for seguida pela in s lfU~' ãu de soma de bytes Aooa AH.AL cmão o registmdor de hytcs AH é incrementad u llelo \'alur cm AL (2), de mooo que. agora. d{' contém J. O efeito de~su açãu sobre tl registrador AX é que seu vulor aglll'a é 770. t) que equivale a 00000011 O()O()OOIO em ILOla\'âo binária, 1111 a O~()J (J:<02 cm LltltllÇilo he"mlccim:LI . Os rcg;~tradores de uitu bytes de largura ~ ão 4ua"e intcrcambir. ~ veis. l.:l11l1 a e .~ce~ã(l quc AL 'iel1lpre l'lJlltém \lnl dus "PCL andos na instflllVão MULa. e ~ tI d c~ t in() \lllplk iH) ltc~~:l (11)('raçâo. juntmncnte CuLTl AH. DtVa l,ul1béll1 u~a o par AH : AL para () dividendo. O hyle LL1ai ~ bai lo tio rcgistr:lclm de contador CL pode ser usado paru conter o número de cidos em instfU\'õcS de deslocame nto e rota\·âo. A Seção C .R. exemplo 2. mOSlra algumas dus propriedades dos registradores gerai" l:IOr meio dc uma di"cut;· são do programa GCIIRt!g.s.
C.2.3 Registradores de ponteiros
o
scgundo glUpO de registrauores consistc no~ r egistradorcs de ponteiros e índ ices. O regiqrauur LI1aj ~ i1l1lX)nan te de~ se gru po é li IInLltciro d e ,)i!lUI . que é denotado por SP. IJi lhas s:ll) illlportanl e~ tm maioria lias lin· guagens de prugramaçiio. A pilhn é um segmentu de mcmória que cOlLtém certas ilL fonna~'üc s de contexto sobre o programa em e~ecuçãu. Em geral. quando um procedimento é eh'l1lt:ldo. pill1C da pilha é re~er":Lda para contcr as variá\'cis locais do proccditnenlU. o endereço pam onde retomar qUillLdu o procedime nto c5li\el con(,.'lufdo e outras informa~'õcs de control e. A porção da pillm relativa:L um procedimcnto é denominada ~cu qULld ro de pilho . QuaJltln um pruccdil1lellto chamado buscu OUlro procedimcnto. (LLl\ ' 1lLadnl ,Ie pilha adiciünal é alncmhl. normalmente log(1 abaixfL do l)uadro corrente. (' hamada ~ adicionais aIOCll/lll)uadros dc pilha 1lI1icioll,Li s ahail((l do, corrente.;. Se bt!m l)ue não scja ohrigatório. pillw~ quase sempre crescem para baixo. tlc t'ndcrcçtJs allLl~ para cllttercço" nai,,(I~ . Nilo IJbstante, o endereço numérico nlllis baixo OCUpultadu~ tl·mporárin<;. O RORH tClll11Ll1il instmção. PUSH. que (;()Icx:n lumL palavra de 16 bit." no 101'1.) ela pilha. ESS:Lil1~tmção ]lrirneim dccrcmcl1 '
li
la SP de 2, I:lllilu an mw.:nu !>Cu openlOdo no endereço q ue SP está upolllando ngora. De mod o semel hante.
çãu POP r..:tll'U UIlIU jlllh.lYr..l de 16 hi ls do
IOro do. pilha buscando o
li insl n J ~
valor no topo da pil ha c CllIão incn:mcntamlo
SP de 2. O r~gl~ t nulnr SP uptll1la pard o IOpu da pi lha e é mCKlificado por inslmções PUSH, POP e CALL, sendo dccreIllCllIad,) por PUSH, incrementado por POP e dcc rc mcnlado por CAll. ( ) pr6" 111l0 regl~lnltl()r nesse grupo é BP, o rcgislrudnr de buscoGeralmente. ele contém um endereço na pi lhil .
Em]ll:IlIltI SP lIcmpr..: afkJIII11 pam o topo tia pilha. BP pode aponlar pam quulquer localizução dentro da pi lha. Na prática, llll\fl ulLltLII\àll CUlIIUIJI par'J BP é apontar para o início do l]ulIdro de pil ha do procedi mento com:nle, de modo a licor m••is f;Jdl adiar UI> variávch locais do procedimento. As)i m, BP aponta para a parte de baixo du quadro de pilha t,;urrcnh.; (á pulavru de qUIIIl, o 'Iuadro de pil ha correllte é delimitildu por ar e SP. Nc~~e glupo tle rcgi~ lI lull)rclro há dois reg i ~trad ores de índkes : SI, o fndi ee de ronte, c DI, II índice de d estinu. E:o.M~~ regbtwJllrc) nl~ tUJll ;Lm !>cr usados em comhiua4jão COIl1 BP para endereçar dadolro nu pilha, 011 C()JIl BX )J:!rJ calell l:!f o!> clldcreçu, de Jocalil.:!çào de dado~ de memória. Deixamos o tratamento 1ll1t1S cx t e n ~i\'o d esse~ rcgilrotrad()re~ para H ~e~'ã() que lr:ltU de modos de elltlcreçlllllCnlU. Um (hllro rcgiMr;ulorelro lL L in ~ tnlções, mas contém um ellilcn.:çn 11 0 lrocgmcl1I n de cód igo de prognuna ela IIlcmória. O ciclo lle instl1lçiío do pmccssaclor começa pela husc'l d.. in~l n,~al) apontada pelo PC. Ent ão, esse reghlraclor é incrementado un1eS que o re~ tlmtc da instmçãl) lro CjU C",~c\L t ;1do. nClro~1! modo. c~!>e contador de programa nponta para ,\ primciru instmç50 após li instn,çàl) corrent e. () regisl('Urlul' ele flu!,; 011 rel,lístrador de código de condição t, nu verdade, um (Onju nln de registradores de 11 m uuico bit. Algum dl b hi t:. :.110 marcados por instruçi)cs aritméticas e C~ l ãn relacionados com o resultadu, como segue:
...
e
•m •c o
~
e
• •o
m m
c
~
e
•o
..•
~
e
• "
'"o
Z - .esultado ó zelo
~
S - resultado é negalllfO (bit de sinal) V - resultado gerou um excesso C - resultado gerou um vai-um A vai-um aUXiliar (vai-um do bit 3) P - paridade do .6sultado
u
OUlrm bih ne) ~c regilrotmdnr cOlllrolam a opcraçàl) de cenos aspectos do prnce!>sador. O hit I habili t:1inll!rrup,flc:lro. () hi t T hubilit.1 mudo de ra~ t.reume nt o, que é usado pam depuraçilu. Por fi m. o bit J) conlrola a di rcçào dalro Ilpcraçõt:~ til:: cólJehl Ne m tudtl~ U~ 16 bi ts deslroC regbt radm de nag silo ut ilizudos: o~ (11Ie não !.fio, estão ligadolro
(cletritmucnte) li l eIO. I lá qLHlIfO I\:gblnlltorCl> no grupo de regislnulores de scgmcntns. Lclllhre-~e de qlle 11 pil hH, os dados e os dl\tigolro lI..: in ~ U"uçil(l, 1' ll\lIlro relroidcm na memória principal, maJ., g~rJ. hlle nt e. cm panes diferente!>. Os regi~ l rlld or~s Ile ~eg lLlcu t ll~ l:(llIlándanl e~~alro partes d i f~re ll1 es da JIlemóriu , IIIl C silo denomi nadas scgl11cntlls. Elroses registradores ~ào de n n lll i ll lLd ()~ CS para 11 regi~ t rador de segml!J\tos de cl~J i !;(), OS pllrà n registl':L(tm de segmentos de dados, SS pura n regl~ lfa d llr dl~ ~e~pllell t o!> de pilha e ES para o registradnr de ~cg mc n tos eX lras. Na maior parte do tcmjlu sells vól lores não ~a u ult cliLdo~. NII pnítica, () segmento de dados e o segment o de pilha usmn a mC~ III:! pmção da lllemória, c II~ tI ;l d{)~ licllm na palie inferior do segmento e :I pil ha nn topn. Exp licaremos mais !oohre esses rcgislrlulorelro nu SC~':io ('.11 .
C.3
-
M
Memória e endereçamento
() MUMM tem \111m urgani/.açào de mem6ria um tanto deselegant e por combinar uma mem6ria de t MA com de 16 hitlro. C'llIn LIma memória de I MB, são necessários 20 hl ts pnra representar um enderl!ço de memória. Por cUllseljU6ncla. é impossível ann01.enar um ponteiro para ml:mória em qualquer dos registradores de Ib hi,.... 1'1irJ. contomar ClroM! prublcma, a memória é organizada COIIIO segmentos, cada um llcleíi de (H KB, ponanto um endL:re\,o dentro de um segmento pode ser representado cm 16 bi ts. Agora. VlUUOlro t:n trar em mais detal hes da arquitewnl da memónOl clu !lOMR. regi~ lradurelro
C.3.1 Organização da memória e segmentos A lIIemória do X()MR, que consiste simj)ll!smente em um vetor de byte~ de R hits endereçáveis, é usada p;lra o Hrmazellamenlll de in~ t ntçõcs, hem como pa!"o! o armazenamento de dados e panl a pilha. Paru scparar as partes da IIIcIIl6rIH que !>iiu u lro!LlI !L ~ poml essas diferctltl:S linulidades. o M08M usa segmentos {Iue são porções da mem6ria desl,n:llf.Jas para cel1us u li li la~õe~ . No MUS8, tal segmcnto con siste em 65.536 hytes consecutivos. IH qualro segmentos: I. O lrocgl1lell tu tIL: c6di gtl~ 2. O ~cglllento de dadolro. 3. O ~cglllenlu tlc pilha. 4 . O ~egLllc n l H e), ll11.
O segmento de cód igo contém as inslmções do prngn.una. O CIlIllC,ído do registrador PC é sempre interpreta· tio COLllO UIIl endere\'o de memória no segmento de c6digu. Um valnr de PC igual a O refere-se ao clIlIL:reçol11uis hai.~u 1111 ~eg ll l clltll (I.: cútligu e não fiO I:ndereçllabsolUlo de mellll\ria lemoO l>Cgmen tu de J ados contém ,I» datl'll>
•
u
. ~
C
~
<
inicinli 7.ndos c n.'io jnit'inli~ndos pafll O programa. Quando BX contém um ponteiro. ele alMlI!(õI pflra e~se ~eg !11 t! l1hl
" ,• o
~
•o ~
8
o
u
• • ,•
~
~
o
,o
"
~
o ~ ~
• o •, N
~
o
de uauus. O segll1ento de pi Ihn contém vari,\veis locais e resul tados intcrlllediêÍrios passado~ para fi pilha. Endcl'c,m em SP e 8P estão sempre nesse segmento de pilha. U segmento extra é um registrador de "cg 1l1cl1\ u~ avulsos que pode ~cr cu]ncmlo em Iluall)UCr lugar da memória onde seja nccessiírio. Pura eada um dos segmentos existe um regi st rador de segment os corresplJlldcl1te: O" rcgislnHJorC'i de 1(í hit s es, DS. S5 e ES. O cl1dc rc~o de inkio de um segmento é o inteiro de 20 bits sem si nal que é t'!mslruído desloul!1do o registr:!dor de segmentos 4 hits p.lra a esquerda c colocando 7erns tias qualro po ~if..·ÕC~ UH CX lrCm;t direitn. I S~I) significa que os rcgistradores de scg mentos sempre indiclllll rmiltiplos dc I (j, etn um espHço de endcrq:o de 20 bits . O registrador de seg mentus ilpOllla para a hase do segmento. Endereços dentro do ~egmel1to podem scr construí(ltJ~ etlnvc rtcndn'$e o v.. lor de [6 bits do regi .~ trador de segmcntllS p:Jnt seu verdnflcirn emlcrcço de 20 bits. ncres 'cutandu 4 bits 7crn ao tillal. e SOlllillldu o dcs!o,mncnl{) a esse resultildu. N:l verdade, um e lldc re~'u uh ~o luto tlt: mCl1llíriil é cu1culudo Ilwltipli cando-se o registradtr r de segmcntus por 16 c então sllllJa11lln u dcslucamento ao re-~ult,rdo. Por cxemplo, ~c OS for igunl 11 7, c BX for 12. então o enderc\~o i ndicmlo !lllr ex é 7 x 16 + 12 J 24. Em uutras palavras. u endcreçu hin~rio de 20 bits implfc ito por OS "" 7 é O()OO()()(IO(){)()()OII 11)O(}O. Sumar i> deslocalllenIU de l(j bits OOOOOOOOOOOOllOO (dccimal 12) ~ origem do seg mento lli\ (I endereço de 20 hjL~ 00000000000001111 ]()() (decimal 124). Para loda referência i\ IlIcmÓrin. um dos registradore~ de segmentos é usndo p;lra C()I1~ truir o endere\'o de HlclIlóri;. propriamel1le dito. Se alguma instru~ào cont iver um endereço dirc{(} se m referência a um regi~trador. então essc c ndcrc~o esttí automaLicamcnte no segmento de dados e OS é usado panl determi nar a I>ase dI) sl!glIlento: O endereço ffsico ~ achado sO lllalluo-se essa base nrll1 o endcreço na instrução. () i!ndemço ff~il:o na memória do próximo código de instruçilo é obtido deslocando o conteúdo de CS por lltl:ltro casas hinárias I! somando o valor do contador ue programa. Em outras palavras, o verdadeiro I!ndereço dc 20 bits implfcill' pclo registradur CS de 16 bits é c"lcu[m.lo antes e, em seguida. o PC de 16 bits é somado a ele para fl)rtllllr um e rltlcrcço absoluto de memória d e 20 bits. O segmento de pilha é eomposto por paluvras ue 2 bytcs. portanto o pomciro de pilha. 5P. deve sempre conter um número par. A pilha é preenchida dos end creço~ alLoS para n~ end ere~os baix(l~. A~~irn. a in~tru~·ã() PU5H di1l1illui (l pontei ro de pilha de 2 e entiio arlllauna o operando no endereço de memóri a cal Clllado a partir de 55 c SP. O cormllldu POP recupera o valor e incrCOIenta 5P de 2 . Endereços no seg mento de pilha 1l1ai ~ bllix{)~ (11Ie ll~ inuicados por 5P são considerados livres. Desse modo, a limpeza da pilha é conseguida s illlpl e~me nt e :rulllent;mdu SP. Na práti ca. OS e S5 são sempre iguais. port
C.3.2 Endereçamento Quase tod:r instnrçi"io precisa de dados. ~ejalll da memórin. scj
uu
AOO CX,20 instrm;ües. (l primeiro (lpe nmtlll é de dcstino e () ~eg \lndo é de fontc. (Qual delc~ vem em primeiro lug'lr 6 tledslln arhitn'irill; tamhém poderíamos ter 1tll'crtitln a~ p{Jsiçi;e~.) Nem é prcci ~{) (lizer <]ue, n c~se ca~o . () (Ie~ tino deve ser um vlllnf IlUtnri1.:ulo. isto é. deve ser um lugar onde
1lI11i\
..
..
b '.
0 80 88 supur1a q uatro ti pos hásicos de dados: h)1c de I hyle, IHl hl.\'ra ele 2 bylcs. longo ele 4 bytes c d eci nml
cod ilicüdo em hinlÍ rio. 110 qual doi s dígitos deci mab são élLlpllCOllldos em UJlla palllVrn. O último tipo não é supor!lulo pe lo intcrprct:uinr. Um endereço d\! II1cmórill sempre referend a um hylc. entre tanto, no caso de UItlU I'lIluvra ou de um longo, us
local i/uçõcs de memória diretrllnenlc.: flci ma do hytc inlticullo Inmbém silo implicitamente referenciadas. A puluvnl
8
el1\ 20 cMá 11[\ ~ loc,lli/UÇÕCb de mcmóriu 20 c 2 1. O lungo nn cndcn.:ço 24 ocupa n~ endereços 24. 25, 2fi e 27 . O HO!ik é liu/e I:m!i(III , (I que sig rtilica que a parte de ordem hnixa da palavra é unnuzenuda no endereço mais baixo.
•
No segmento de pi lhu, u... pllluvl'lts devem ser culocudulI em endereços pare .... A cornhill a~~ão AX DX. na qUól l AX CUll I!!III :1 palavnl dc oruenl hai ;>.:!, é a LÍniclI proviloão fd la ról!';1 longolo nos rcgilotr..tuorcs do 1H1'ICC~~ óldor. A Tahclól C'. 1 dá uma visão gemi dos modos de endereçamento do 80KH . Vll111 0S di1oc uli-lolo nrevemenlc IIgora. O primciro hlocú Ih Iri/,mla! lia pane superior da IlIhcla relucinna Ih (cgilolr:ldorcl>. Elt!:. pndclI1 l>Cr u :.ado~ cllmo 0l ~ · f.l ndo.'> em '1mbc to,la:. al> in:.lruçóc.\., lanlu corno fon lcs. IllI!lIllO como dc.'> lil101o. Há oiw rcghtmdorl!!. ele p C oito regij,lradort:.'> dl: hyles. O .'>cgumlu blo...:o horiL.lIl11al, enden.:çamcIIICI de .\.cgllll!nlos dc dado!., contém modo.'> Itc cndcrcç,lrl1clllO para o scg mento de dadll:' Emh.: reçll.\o de.'>l>e liro Sl!l1lpre conlêul um paI" ue pal"l!lIleM':s pam indi car quc \I que sc pretende re pn.:~c nlar !! li L"onlclÍllo du cndcr('!ço c não n valor. O lI1odo mais r:kil de c nd crc~a ll1 c nln dChC lipn é Cl e lldcre~a IlICI!I() cl iI"clo, no <jllal t) cntlcreyu de da
o
AOO CX,(20)
~
•o
"
e
•
,. •e •"
~
nu qmll () conlclído da p" la\'ru de memória nos endcrc'fos 20 ('! 21 é somado a CX. Locn li.laçõcs de lIl~ m6ri a COSIU~ mam .'>cr r~ p re~c nt aJa~ por rót ulos em veio de vlllores numéricos na linguagem dc montagem, e :1CO II\, c~ão é reita em tempo dc JllOnl.lgelll . Até mesmo em instmç&s CALL c JMP, o delot ino pode ser arma1.cnnclo em lima localllllçllo de memória emlerc~all " por um r6111 ]0. Os parênlc.'>es que ccrc;un os rólulo!. são essenciai:. (par.!. I) il)st:mbler que é)lamo.'> u50H ndn) I)orq uc
'""o
~
AOO CX,20 u
lambém é uma inslrlIção v;'í lida, só que signilica ~oll1a r a consumle 20 a CX, e nno {) cOlltelídll d.1 palavra de lllcrnl'l· ria 20. Na T"bela C I, o !.ímhnlo Hé IIsadn para illdicar UIIIII cunSlanle numérica, um rótulo ou urna expressão constante que t:l\\ oha 111\1 rótulo. Em cnd ert!l;illIICllln indireto de rcgis lrlldor, o endereçn do operando é annai'cnucln em um dos regislradores BX. SI ou DI. Em tudo) o.'> tre.'> casos, o oper.!.ndo é encolllr.tdn no segmenlO de dOIdos. Também é I)()ssível cohx:ur uma con.\o tant e na rr.:ntc tio reg i:o.lr.u)or, caso em que O enM,~ lipn de elll lc re~u mc l\ln. dcnominado d eslocu lllenlu de registrdd or, é convenienle " um \'~tores . Se. por exemplo. SI cuntivcl 5. cntão () quinto Cllr;tctcre dn cadeill no rótulu FORMA'/' l>Ode ser carr~g ado cm AL por MOVe AL FORMAT(SI)
cadeia illteint pOllc ~cr exumimlC (isto é, o l!lll.krcçn Ilumérico mais haixo) do velor nu regislrador BX c rcservur o regi.'>lrador SI nu DI [)
~àll u ~ud l))
PUSH (B X)(OI)
nUM:óI o ennlelído dil local i/ação do segmento dc dados cujo endereço é dado pela SO Ill Il dm rcgislradurc:. BX c DI. b n .\tegtuda, elo.'>e \ "I(lr é p;llo~atl() pUfa a pilha. Os dois líltill1o.'> tipos de endcr('!ço 1)O(Icll1 ~cr c()Jll bj n ado ~ panl obter cmlcl"eçamentll de l·cgi.~ lra dur com índice c dcslocllluenllJ, como em NOT
20( BX)(01 )
quc cnmplcmclltu 11 pa luvra de memória cm ex + OI ... 20 ~ ex + OI + 2 1. Todo.'> il) IIllldt)lo de cnden:.:çllnlentu dirt:to no M:gmcnlo lle dado) também exi Slem I' t:xi.'> lelll out ros lluxlo.\o mais complicudos, até indirl!lO d~ ponteiro de base com flldlL'C e de.'> locamento - I( BP)(S[). E:.~es modos são valioso:. par.t endereçar variáveis locais e p.lfjime lro~ de ru n~:âo, quc ~ãl) ;Irmal..Cnado!. em t:nuereços tle pilha em sub-rotinas. E~se ammjo é dl!l>crito com ll1ais Ilctalhc.'> na Scçãu C -' 5. Tncl {)~ o.'> .: nd eJe'êO~ que I) I~dece lllllolo m()(los de endereçamcnto di:-.cutidos ale! agora Ixxlclll ~cr usados COlllU rOnles e de~ till u.'> parti O)lCrayÕCs. Eles são delinidos, cm conjunto, como endereços efeti vos. Os n1l")dos de cndcre!i,lIl1t:J1tO 110.'> dms bl llClI) re:o.wnlcs [tão podcm ~c r usados como dcsti no~ c não slio d.:nominmlns cnllcrcços efelivos. El c~ ~ó podem l>cr u~adllS COIllO font es. () lI1udo de endCrCç,lIllCllW no "unI o operando é UII1 valor constant).: de hylc nu pahlvra n:t pr6pria in ~ lrU ç~{) é ~I l.! nomin adll cndl'reçlllllclUO imcdilllo. A ~s illl , por exemplo, CMP
AX,50
clllllpam AX com a W/llot:Hltc 50 c nj uslu hil.\o no rcgiMrtldor de nag:. con formc os
res ult adu~.
•u
'.'" ~
o
~
-...
Tabela C.1
Modos de endereçamento de operandos. O simholo 'it i ndica um valor numérico ou rótuJo.
Modo
Exemplos
Operando
Endereçamento de reglatrador
•" "o
",• ~
8 o
u
• "• ",•" ,
Registrador de bytes
Registrador de bytes
i\H,AI.,BH,BL,CH,CL,DKDL
Registrador de palavras
Registrador de palavras
AX,BX,CX,DX,SP,BP,S!.DI
Endereço direto
Endereço vem depois do opc:ode
Indireto de registrador
Endereço em registrador
1+1 ISlI. IIlII. 18XI
Deslocamento de regIStrador
Endereço em reglstrador+deslocto.
t !Sl). f [DI). 'IBX)
Regi.
Endereço é BX + SI/DI
RegIstrador com Indica e deslocamento
BX + SI DI + deslocamento
tIBXUSl), if'[BX)(UJ)
Endereço em registrador Endereço ê BP + deslocto. Endereço ó BP + SI/DI BP+sr/Dl + deslocamento
18'1
Endereçamento de segmentos de dados
Endereço de segmento de pilha
"
Indireto de ponteiro de base
~
Deslocamento de ponteiro de base
"
'•. o
Ponteiro de base com Indlce
~
N
•"
~
o
.18XIISII. 18X1I0I)
Des1octo. de indice de ponteiro de base
tISP)
18'"SI). 18'11011 fI BPUSlj, '#IIBPIIDl)
Dados imediatos
Dados siio parte da instrução
•
Instrução push/pop
Endereço lndireio [5P)
PUSH. POP, PUSHF,POPF
nega de carregamento/armazenamento
Registrador de status de nag
LAHF. STC, eLe. GMC
Traduzir XLAT Instruções de t:ade~a9 repetidas Instruções de EIS
JIL. 8X
XLAT
ISII. 1011. leXI AX; AL
MOVS. CMPS, SCAS
Converte by1e. palavra
AL, AX, DX
CBW,CWD
Byle/palavra
imedi~to
Endereço Impliclto
IN t, OUT f
POI' fim . algumas das instruçõcs US
inslnl~·õcs.
() operando 011 ope-
PUSH AX
passn o conteúdu lle AX para a pilha decrernel1lando SP e então cOl,i nndo AX para a loca1i7.aç:lo tlgOnl apontatl:! por é nomeado na instmç,ào e m si; o mero rato de ser uma instruçãu PUSH implica (Iue SP é usado. De rorma <;emelhanl e. as instruções de Ilwnip" Iação de nags usam impl icitametlle () registrador úc nag ~ de s/alUJ sem nomeá-lu. Di versas outras inslrut,'ôcs també m tê m operamlos irnl)lfcitos. O 808H tem imilruçi'les especi ais para muver (MOVS). comparar (CMPS) e ex aminnr (SCAS) cadeias. Com essas instruçõcs de cadeia. us regist nulores de índices SI e DI são alterados automaticamente :')ltlS a oper.tção. Esse comportamento é denomi nado modo de /luto' inc remento ou de :1utndecrcmenl.tJ. O nag de dir'eção no registrador de nags de status é quc in d i ~:;. se SI c DI são incrementados (lU dec remcntados. Um vil lor O no tlag de dirCl,iio incrementa. enquanto um valor lIe I decrclllenta. A aherução é I I'nrll instruçiJes de hyte e 2 para in<;truçõcs de pnlnvm. De certo mudo. o IWlItciro de pilha também é de auto-incrcmento e aUlod ecrelllcnto: e le é decre rnentado de 2 no inreiu de uma PUSH c illcrc rncrttudo de '2 no fi nal de urna POP. SP. Entreta nto. SP niio
C.4 O conjunto de instruções do 8088 o cnw\iio de todn çot11Jlutadm é o conjunto {te instl1lções quc ele p IK!C executar. Para entendf'r realmente um ~·o m putudor. é Ilcc es~á ri(J cumpreender bem seu conjunto de instruçücs. Na ~ SCÇflCS seg u intt'~. di~cu tirt' rno~ :IS instmçõcs muis impor1ulltcs du 8088. Alguma... {leIas siio mostradas na Tabe la C.2, na (111:11 estiio di viitida .. em <11..'1. gru pos.
C.4.1 Mover. copiar. efetuar aritmética o primeiro gnlpo de instruções são as instruçi}es ]>:m! copiar e moveI'. De longe. li mai ~ Cll llmm é a iustrução MOV. Ilue te m uma ronle cxplreila c um destino expirei to. Se li fOnle for um registrador. u destino pude ~c r um cnJereço efetivo. Nessa tabd.!. um opera ndo de rcgi<;lr:tllor é indicado por um r c um endereço efetivo é indicado por um e. portanto. c"sa cllmbiuaçào de opel1lmlos é deuutada por f't-r. l:"~~ u é a primeira entradu purn MOV n:1 coluna O/Jemlldus. Uma Vi."Z que na sintaxe da instrução li destino é () primei ro opcnmuo c iI fonte. (J \cg unuo opcralll.lo. a scta +- é u~:ld il pafil ind icar os opera nd ll~. Assim. I't-I' signilica que um regi strador é copi;ulo para um e ndere~o efetivo.
;
•
...
7
Na inMruçãu MOV, a lome também pode ser um cmlem;u efet ivo, e o deMino, um rcgi~ l r-Jdor, o que SGrn dcnmado pur rt-t', oi :.eguntla entr.u!a da in . . lmção na coluna Op~,.mulm·. A terceiro possi bi lidade é dados imediatos como fonle . c l!lllh:rq:o Clclho COIllO destino, n que re)uha em f'f-#. Na Wlx:lêl, dados imcdillloS loBo indicados pelo ",lna! (#l. Vi~lU que exi~lcm duas ill'ilnIÇÕCS, MOV par.! mover paluvras c MOVB para IllCJver bylcs, o nmcmõnico da il15tmçiin lermina com 11m IJ enlre parêll l c~cS. Dessa fOnllll, a linhA realmente rc p"c~nIU :,c i ~ ini>ln1ções difcrcl11 cs. Nenhum du ~ tlag.. nu rcgblnldnr de código de C(lIHJi~'fi (l é nfcllldo ror unia i n ~ JnH':i'io move, portantu, nulo 1111i · 111m, quatro coluna:. ,I cJl lrada é "-", Note que a~ in ~ lrll çi\cl> move nao movem dôldos. Elus fa zem cópias, n que ... ignilica (Iue .. fnllh! u:ill oS IIl.w.lilh:uda como ;Jcontecerill com um movimcntn verdudeiro. A lIcg11ndtllu;iil l é denotada por XCHG (8) c I) call1po Operwul coméllll"He. A próxima inlltruçi'io é lEA, tlue quer ltiLcr Load EffcctÍ\c Adtlrcss (carro;g.ue el1l1creçn efetivo). Ela calcula 11 VUIOf nUlllerico cio endereço cfeli... o e 11 i.lrll1:llt:na elll um regbtrador. A .~cgUl r, \'el11 PUSH.ljue passa seu operaJlllo para II pilhu . O operando ex ptrdw pode ~cr 11l11a constante (# na clllulla 01'1' /"{/IId/J.\) !lU UIII cndereço efetivo (e na cul unu OJ1I!/"mldm·). Il á também uni operando implícito, SP, quc niln é JIlCllcinnadn nu ~ illl (IXC du instmçãn. A larefi.! dll itl~ lru çi1o é decrementar SP dc 2 e Clllão i.!nnilzen:lf ti (lPCmndo nll lo..:lllilllÇào llgnra UllOllWdll por SP. Dcpoi~ \'el11 POP. 'lu,,: rcmove um o]lerando da pilha para UII1 endcreço efctivo. Ali duas in~truçÕl::s segtl imes. PUSHF e POPF, Hunbé rn tê m IIpcrandos impl fcitus. o regi:-'Ir.ldor de llags pusll e 1'01', rel\pccti vamcl1le. Esse tmnbérn é () ca!>o do; XLAT, (IIIC c:uTega o n:gistrador Ilc hytl: Al .. p:lrtir do cndereço calculallo por Al + BX. Essa inlltmçãn IlCrmitc CIllI~lI l1a rápida CI11 IlIhel as de 256 hytl:lI de tamanho. A.) instnl\=Õl::s IN c OUT fOr.l1ll definida:. ofici[llrncntc no 80R8. mas não foram impleou:ntudlls no illlerprelador (e, I'or i ~l>ll, não estao relacionadas na T[lbelu C.2) c, nn verdade. são iUlotnJçõcs para mllver de e jlUnI um disllOsi tivo de EIS. () enderl!ço implfcito é lIcmprc () rcg isnudnr AX, e o scgundo operando na in:'lrução é () númcro de I}orta dn regblrador de dl ~ pollitivnl l e~ej:ld{J. No segundo !Jluco du Tuhl!la C.2 estão as in slrtlçõe~ de udiçã() e ~uhtraçã() . Cada uma. delas tem as me~ llla s lrês cUlllhina çõc~ de 0lh:I"ln du~ de MOV: endereço efetivo ]Iam rcgistl"lIdor. reg i ~ tl"ador para endcret;o efeti,,() e COIblU u· te p:lfa endcrcltu el..:tl\'o. ASlli l1l, u coluna Opermu/o.l· da tuhclll conti!m r~/', I~f-r C e . Em IlKiIlS es~u:. '1u:um inlllruçõcs, o nilg t.J.. CXL:ebO, O, (I nag c1e sinal , S. u I1l1g de Lem, Z, e o l1:1g de vui -unI, C. são l odo~ ajulIludCllo com oa:.e nu rCl>ulladu d,1 ilb tmçãn. Isso significa. I)or ex..:mplo, que O é marcado .o,e (J rcsultudo não puder ser ex prCSlIt) ";I.lrrCllllllellle no 1\l lmem permitido 11..: oits e dClI lI1lll"eado ~C puder. Quandn u maior número de 16 hib, Ox71Tf (32.767 elll llcci lll,tI), fur ~o llludo com ele mesmo, 11 rcsul!:ldo não pode ser cxprcsso corno UI1I mimero de 16 hits tom :.tntl l. IXlr\anto O I! ajustado pan:t indicnr o erro. Coi:.ltll sC:l1lclhantcs ucontecem com os outros l1ags de $/(1/11.\' n C~~:b opcr.Jçõe~. Se UI1H1 in ~ lnl çii{) C:lII~:lr algum cfcÍ11l !oohre um nag de S/(IIIU, is!on é indicado por um a~tc.!ri ~c() (fo) nu (.'oJunu CIlrre\ l"londente. Nas instruçõcll ADC e SBB, o I1ng dI! VUi-1I111 no infciu da opcração ~ ui>:1dn COI1l0 I (ou O) extra, quc é \ IlIto eontO ulll 1'(1; · /1111 ou ell/pr~.H(H mJ da operação anterior. Essa f:l cilidade é de cspcciul utilidade para rcprclIcntar inte i r(l~ de :n bits ou maill longo!> em várias pahJ\'ras. Ta mbé m cx istem ver:-.ões de bytcs par:! tüda:. as adiyõcs e lI uht rulti'le~. O blocn lIcgulJlte contém as inlltmçi'>e!o de rnultipli caç~o c divisi'io. Opcralldos inteiros COIll sinal requerem IlS inlltnu;õcll tMUl e lDtV: Oll ~c m ~i nal usam MUl c DIV. A comhinaçõo de regilltradores AH : Al é () de:.lino implfci tu na vCf!oãu de byte d \!~lIa:-. imtruçôes. Na vers~o de palavfi.l. o destino impl íci to é a combinação de registmdores AX DX. Mesmo que o rCloultado da multiplicação seja somente uma palavra ou um b)'te, o regisll1ldor DX uu AH é reescrilo duranl.: a ope ra~·iio. A multiplicação sempre é IlOs:.ívcl porque o destino contém bils suficientes. Os bits ele exce~so e vai-um são :lJmlaclo., 'Iuilndo o prodlllo não puder ser representado el11 11111:1 só pu lavra, ou em UI1I s6 bytc. Oll Oags de zero e de m:g,l1ivo lI1Io indefinidos upós umu multiplicução. A divisão tamlli!nlu~u ali comhinações OX : AX ou AH : Al como o destino. O cluocicntc Viii pilm AX nu Al c o resto p:lm DX ou AH . Tllt.lu~ (JlI t.lu:ltru llaSlo: vai· ul1l, CXI:CSSIl, zero c ncglllivo loào indefinidos apó:. lima ope mçào de divisfio. Se I) divisor for O, OUlIC () {Iiludemc não couhcr no registrador, a operação executa lima eJ\:ce~iio , que imcnompe o prugntma a mcnu~ lllle cl>lcj a prclIcnte uma rutina dl: tratador dc exceção. Ademai s, é SClIsutO tmlUr sinais de menos em lIllth~:lre a nt e~ e t.kl)()ilo da divisiitl l)()rlllle na t.lefi niç1lu do 808M IIl1illal do rellto ê iguul Utl ~ inl1l do di videndo, :10 pa:.s(l lIUC em malemática, 11m Fe!oto é sempre n1lo-ncgativo. Alo IIlstnl çõc~ para dccimilis em c6cligo binário, entre Ui> quais Asci i A dju~1 for Addilion (AAA) laju ~ tc AlIeii pllm adição l c Decimal Aj ulIt for Addit ion (DAA) [aju~ t e decimal pam adição], n1ln são implementadas pdo inl erpretllllor e não lo;lo JlIO~ l mdall n:1 Tilbela Cl.
C.4.2 Operações lógicas. de bit e de deslocamento o próximo hlOl..o contém iJl~ tmçÕ!."'S para extcnsãll
8
• •c
~
o 2
e
• ,•
~
~
c
::; 8
•o
••
~
•8
--• ~
o
~
u
•u
'.• ~
"-
<
co
.;o
l.bela
C.2
Algumas das instruções mais Importantes do 8088. Descrição
MnemOnico
••o
MOVIB)
~
L.' POP
Mover palavra, byte Trocar palavra carregar endereço efetivo Passar para pUha Retira r da pilha
o u
PUSHP
PU!fh flags
•
POPF X!.AT AOOIO) ADeIOI SUHI"I SOOIOI lMUL[BI MULI")
Pop Flngs Ttl\duzlr ,AL Somar palavra
•, n
e
~
• •"o
~
o
"
•
w
o ~ ~
• o •m N
o"
XCHG(B)
pusu
IDIV[Bj
DlVIBI COW CWO NRG!Bl NaIlOI
Somar paloVT8 com vai-um
Subtmll palavra Subtrair palavra com empré!Jlimo Multiplicar com 8Ínal MultlpUcar .em sinal Dividir com sinal Dividir sem alnal
Estender By\e/palavra com sinal
Operandos
..
r ~
"
I .....
a, e ..... r. e .....
*
,
Flaga de slatus Z C o
4e
e,f e
r +- a, e +- r. e t- t f f- e. e +- r,e ..... ' t +- e. e +-r, e (-~ f r+- e. e +- t, e t- f
e e e
u u u u
•
u u
u u
u u
Estender Palavra/dupla com sinal
Nega blmirlo e Complemenlo lógico Incrementar destino [NeIB) DECIO) D&CTemenlar destino ANO lógico ANOIOI DR lógico ORIOI XORIO) ÚR exclusivo lógico , Deslocamento lógico para a direita SHRIO) Deslocamento aritmêtico para a direita SARIOI j-SHt.lBU deslocar para a esquerda SflLlal Fazer rOlaçâo para a esquerda ROt.lB) ROHjB) Fazer TOIOÇllo para a dlreltll FOleI rolação para a esquerda com vai-um HCLI"I Fazer rolação para a direita com vo1-um nCR[BI TEST[B) Testa r operandos Compare operandos CMP[H) Ajuste nllg de dlreçãol! ) STO Liberar nag de dlleçilo lfI CI.O Ajustar flag de vai-um src Lllierar flng de vai-um CLC Complementar vai-um CMC Saltar para trás se ex 1 2: o decrementado LUOP Para trás se Z.... J e DECICX)I ~ O LOOPZ I.coPE LOOPNZ LOOPNE Para lrás se Z=O e DEqCXII ô! O REP REPZ REiPNZ Repetir Instrução de cadela Mover cadela de palavra MOV'I") Canegar cadela de palavra LOOSIOI Arm87.ellst cadela de palavUl STOS(B) Examinar cadela de palavra SCASIB) Comparar cadeia de palavla CMPS/B) Saltar courolme condições lCC SoUar para rótulo lMP Saltar para sub-rotina CALL Relomol do sub-rotina RET Exceção de chamada de sistema SVS
•e e e+-
T,
r .... e. e +- f
e ..... r, T+- e, e t- # e t-- r.rt-- e, e+- f e+- \, e t-- eL e ..... l,et--CL e t-- I. e t-- eL e t-- I, e+-CL e ..... l,et--CL e +- I,e+-CL e ... l,et--CL eH T,eHt e H t , e H f-
O O O
O O O
O
O
I
O rótulo rotulo rotulo illatruçio de cadeia
rótulo e, rótulo a, rólulo -,I
'.
o hllll:tltlc HI)tn (.;'.x.:~ l>cgu lJuc é u grupo lógico de dui ~ o]>t!r.lIldul> cujas iU:>IOllifto.'S l>C CU l1Ipl.lnlll1l cllmo Cl> ]k! nulu. No gnJ!XI de dc ~ h x:aJl".! nlO rotuçào, todas as opera'tõcs lêm um endc.:rcço e fc,:ti vo como seu destino, lUas :. r~lJ\h::: .! o regi:.tr.lllur ti..: h) tc.r. CL ou li mimero I. No:. deslucamentus, toJos o s I]Ualm n;lgs .\oào afe tados; nas mia ,<õe~, :>Olllcntc 11 \' a i ~ UlIl c n eXCCl>SO são afetado)" O vai·uJll Sc.!lIIpre obté m () bit que é des luc ado (lU que l>ui, IHI rola \i1n, do hit de ordem Hlw ou de urdelll haixa, dCpêntlendo da direção do deslucamento ou da ro1a~·àu . Nall rtltaçõc:. Cillll \ ai- um. ACR, Ael., ACAB r.: RClB, n vai-u m, juntamente com () opcnllldo no endereçu efCli"l), cOlbliUJem um:. Cllll lbl flJçfil1 de n::g l."ll.ld(m.:~ de dc~ l()ca me nlu ci rcular de [7 hil !> 011 de I) hit:>, qUI! fU CLlitll deslnCóUnento!o ~ rtlt ilÇi'lc~ de Imílli]l1:, ~ p,dllvras O pró . . 111111 bloc" dI.! in ~ tru~~õclo é u~adn para manipulur os hits de nag. A principal razãll P:'I'!! isso é prc parar para ~a h o.!l !..lJudidull.m. A ~c ta dupla {---lo é uload:1 em opcraçõclo de comparaçãO e lelole para indicar li) dois opcnmdolo. '1l1e não uuahull dur,u uc:l 01}l! L.L~:\n . Na Of)(:L1L~'ão TEST, o ANO lógko dullo o!)t!randolo é calculadt' para 'ljulIolar 011 liherar 11 ll iJg dt: Icnl c () i1:Lg de sin:tl. O valor culculadn propriamente dito não é lIrLll,w.:nac!o ClIlllenhum lugar eu 0llehUlllu nào I! m..di ticado. Nu CMP, Udifcre n ~::1 entre os operandullo é C:Jlculacla e It'klos m (Iu,urn Ilags lIo"n 1l1arc:.lln.!l IJU li her,ldolo culHO rC lIo ultadu da complu açi\o. O n ag de din.:ção, (IUC determino se O.!l rt:gistlõltl nrello SI e DI de\clIL lIocr inclcllIcntlu lullo nu dccrc mcntados n ;t~ instOlçtks lle cadeia. podl!. ser ajulotallo ou libcmJn por STO e CLO, n:.!I pl.!cti varllClllc. O !WxH também tem um n a~ d e paridade e um nag uu xlliur de vui · um. O nag de pnridllde dá a paridlldc do rl.! ~ ultml() (par ou IIllpUr). O nag au xi liar verifica se hou ve e .... ccs~o no meio hytc (4 bils) (ou vai-um) de onklll h:uxlI do úé:.lLrlO. Também há in ~ tru çõcs LAHF e SAHF, que copiom o byte de ordem bai . . a do re~i s tr-..dor de n"g CIO AH I.! \'1I,:e - vcr~a . () nag de excelloSo e~ t á 110 bylc de ordem ultu tio regimador de códigu de condição e nl\tI é cupi ado J\ cs~allo lIbtrU'fi\elo. Es.!lu!oo instruções e Ilugs são uloadas principalmente pura compatibilidnde com Ib pro· cC ~lo:ld\)fe~ HOI!.(J e MOx5.
e
-
m
...
•• ~
•
c o 2
e
•o
~ ~
•8 •
-
'"o
~
C.4.3 Operações de laço e cadeias repetitivas o blll(;(l loegui lllc contém us ill ~ t ruçõts (Iam executar: laços. A iUMnLÇ1io LOOP decrem enta ti regb trador ex e !ooll lta p:lnt tnb até o mtulo indicado lIoC (l resultado ror f"l:.i1ivo. As instn u;õe.s LOOPZ, LOOPE, LOOPNZ c LOOPNE tumbém tC.!ltmu () Ilag dc ll.!fI) paro ver se o laço deve ser abortado ames dc CX ser O. O dc ~ tino dc toda.!l UlIo inSlnLçi\tS LOOP deve e~lUr dentro dc 128 bylcs em relaçilo à posição L:orrentc do con· tudor de l)mgllllTlu pOl que li irblrução contém um des locamento de 8 bils com sinlll. A quantidade. de im'/l"IIçõC:l' (em colllparllçIlII W Jl\ bylc.!I) llue 1X>dt!LH .!ler saltadns nllo pode ser clllculadll com ex atidão, pois i nSlmções dife rentes têm cUlll priml.!ntn~ d lfereu t c~ . Geralmente, u primeiro byte define o tipo de lima in SIOJ~' ãn c, (lOrtanto , lllgu mas i n~ t nl çõc~ preciMtIll MJIllCIllt! dc um hyte nu &cgmcnlo de códi go. Muitas vel.e), O segundo hy tc é utilillu!o para definir os reg i ~ trllll u rl.!~ c muJo .. de rcgistnldores da instrução c, se us instmções contivercm des loClIl1lt lllos ou dados imclliatu~. tl comprimento da 111,InJçào Ixxle llumcmar uté quatro nu "eis oytes. O comprimento médio d.1 instnlçãu é de ccrca ue 2,5 h)'te:. pur inlotnlçfio, IXJrtaulo LOOP não [Xxle saltar pa.r.!. trás muis do quc cerca dI.! 50 il1stmçõc~. Também l: .... istelll ulguulo mccunismus eSI>cci ni l o pam laço~ em instruçõcs de cadeia. Ele ~ ~i\{) AEP, AEPZ c AEPNZ. Dc rnnJu loeJl1d hanle, 1ndas as einco in ~ tru ções de. cadeia nu próximo bloco da Tabela C.2 têm endereços iJllp1fd to.!l c: IIxla!oo U ~.lIll mudo autu-incremento ou mod u autode.crelllentll nos regislrudorcs de fndi eelo. Em \(Ida~ elo~lb Inst11lç().!!o, o rcghtmdor SI apo nta par.r. dc:ntro du segm cnto d e dadlls, mallo o registradur Dl rderenda o segmento ext ru , (jue é h.J~l.!nd. l em ES. Juntamente cum li in~truç ão AEP, li MOVSB pode scr usada pam mover c,ulc.as compk lib 1.! L1l 11111:1 j n~tn l ~· ão. O comprimento da clIdcia t:.!ItIÍ contidu no regislnulo r CX. Uma \fel. que a illstJ'uçftu MOVSB nftu afe ta Olo nu g~, não é pus.!Ifvd vcrilienr um bytc I.ero ASC II durante a opcmção dc cópia por meio d:l AEPNZ, no entanto, l,,(j pod e "cr consertado USando-se primdro uma AEPNZ SCASB pam obter um valor ~t: nsato c m CX e, tHít b tarde: uma AEP MOVSB. Esse pcmlo ~e rá ilustrndo pelo e . . emplu ele cópia de c:ldeia na Seç:lt\ C.8. Em tnda ~ C.!IMtlo i n s t nj\~j)cs é preci so dar atenção ex tra ao re~b l Tildor (Ie segmentos ES, li me nos Ilue Es e OS tenham 11 lll e~ llI() \:l lor. No illterpretador é usado um modelo de memlÍria l>equena, de modo que ES = DS = SS.
C.4.4 Instruções JU(IlP e Call () ,íllirnn hlocu traIU de sn1tns cOrtdicinni'lis e incondici ollllis. chllrlludns de sub· rotinas c rctmrms. Aqui , ti 0l>eração mailo Mrnph:~ J 11 JMP . Elu pode ter um rótulo como dc:.tino ou o cOIllClído de l]Ull lque.r cndcreyo efetivo. É fella uma dl.!ltill lt:l0 cnlre um salto próxim o e um s ulto dis tante. Em um s3ho próx imo, o destino c~ t á no loegmcn· lO dI!. c{l(ligo cnrren te, IjUC não Illuda durante a ( 1)\!.rJçiio. Em um salw dilotante, o regist rador CS é llhemdo dur.uuc \I ~alh). Na \ er~ãll di re ta eOm um rótulo. () novo vulor do registrador dI!. segmento de cód igo é forn ccido nu chaLllíltia ulxh {I rótulo; nu IC:f.!lão com endereço efeti vo um longo é hu scado nu me mória. tal 4ue a p:t luvnL baixa corrcsponda ao n\lulo de deMi no c :1 palavrtl alta ao novo \'alor do regiMnldor dc loegmcnto dI.! código. É darn que niio é ~ Llrpre Si . q ue tal distinc;ilo ex ista. Para salta. .. pura um endereçu arbitrá rio cll.!nlm de um cspa· 'lo de L: ndL:fC(U ele 2(J hit ~, é preci~o fazer alguma provisão paru especilicar mais que 16 Olb. O modo de fazer i ~lIou é dar JlO\ lb \alorello para CS e PC.
Saltos condicionais o ROK H tell1 15 ~a lt\b con,licionais e IllgUllS delcs têm dl)i .~ nOllle~ (por e.xempln, JUMP GREATER OA EQUAL é u Il1Cllolllil i n ~ lnl ~·à/lllIlC JUMP NOT LESs THAN ). Ele~ estft u rdnc i nll ado~ IIU Tabela C.3. Todos eles ~6 pcnn1tl.!rn sat-
u
•u
.. ."
o ~
"
o
N
••"o ,•
~
1(1.~
dentro de uma distAncia de até 12 8 bylcs em relação ~ instrução. Se o dest ino niio c ..l; ver de ntro oc~~ a faiXll. é USU E' uma t:tm~lIllc;ãu de sallu sobre snho. Nessa CO IISll'lIç ilo é usado o salto com a cO lldição 01}\Jstn para s
prcdso
JB FARLABEL
Temos JNA 11
~
eo
u
•
~
• •," ,
~
"
•
~
'•. o
~
N
o
•
'"
o"
JMP FAALABEl
"
Um oulra ~ pH lu v rn ~, se não ror pos.• (vc! ra",cr JUMP BELOW. entãu é culucad" Ul1ln JUMP NOT ABOVE 11 r61u10 I 4ue
estej n perto. seguida por um sallo illcOlldidonnluté FARU.JJf~1.. O efeito é o mes mo, com um custo ligcil"lllllcntc ullIis alto em tempo c espaço. O 1I5selllbler gera es~ es saltos liubre lialtos auto rntlticallleme '11I3mlo ~e espe ra ll"C (J tle~tino esteja muito di.~t:mt e. Fazer esse cálculu curretamente é UTII pouco complicadl" Suponha que li di ~ta nda e~tejll prtíxi m3 du limite, ma.~ algumas da~ i ll.c;tnt~'ões inl crvc ni c nte..~ tam bém ~cjalll sa lt n~ cI lIldic;onai!l. O I1m;<: externo não pode seI" resolvido até llue os tllmanhos dos intentus sejam conhecido'l e " 'lsim pur dirml ~ . Por 'legur.m~';l, o asscmuler crra cm rn vur da prccnuçflo. Às veze<:, gera um !ltl lto subre salt u ([lIaml" não ({ e<:lritarnente IICC(''l~~rio, Só gera um salto t'Ond icinflnl direto quando esti ver absolutamente eerto de que (I alV() (''llá de!l1ro di! rai xa. A maioria dus !laltos condicionais depe nde dos nags de ~'(/tl/.S e silo precedidu!! por uma in'ltntçãfl de le'lle (lU cmuptlração. A instntçilo eMP subtrai o operando da runte do operando de dr<:t ino, :l.ju'lta t K códign'l de cnndi..-ão e descarta o re<:ultadn. Nenhum dos operandos é alterado. Se o rt:sultado ror ~ero ou 'leu bit de 'linal c'lt ivcr ligadu (isto é, se for ncg"tivo), (l h it de nag correspondc nte é marc:ldo. Se o re'lul tndo niio puder ser c :-:p re~'l(l !lO nútTl('1"(l pcrmitid(, de bits, o nag de excesso é marcndo . Se houver um va i-um no bit de OI"dClI1l1l1l1, li It!g de vai- um é marcmln, Os &1110s condicionais podem testar todos esses bits . Se os operalldos rore m considemdos CO I11() npernndos com si nal. devem ser utili ~ada~ a~ in" tnlf;iie~ que usam GAEATER THAN e lESS THAN . Se rore m scm sinal. devem ser l1tili zôJdus as que usam ABOVE l' BElOW.
CA.5 Chamadas de sub-rotina
o
8088 tem uma im:truçilo usada para chamnr procedimentos, geralmente conhecidll~ em linguagem de mOIltage m como sub-rotinas. Do mesmo mudo que em i n s tru yõc..~ de S,tlto, ex istelll inslnl,õcs de clulllUlll a próxlnm e instruções de chumnd a t1 L~lllule . No interpretadur é implementnda somente a chamada pníxima. () destino é um rótulo ou p<xle ser e llcontrudo em um endereço eretivo. Parâ metros necess~ rills para as 'luh- rn t i na~ têm de ~r pas+ silllos pura :! pilha em prime iro lugur na ordem inversa, como ilustrado na Figunl c.J. Em lingLlilgem de mo ntage m us parâ metros costumam ser denominados a rgumentos, mas os lennos s:io intercambiáveis. Arós cssa~ pm!s:tge n ~. a inSlnt,ãn CALL é executada. /I. inslruçiío começa passando o contador de programa corrente p,m. a pilha. De'lsc n1(xlo, o endereço cl t' retorno é S111 vo. O ende reço de retomo é o endeTClo 110
Saltos condicionais.
Descrição
I
Quando sallar
JNA. JaE
Abaixo ou igual
CP= t orZP= 1
JNB, JAB, JNC
NAo abaiJ.o dI!
Cf= O
JE, JZ
Zero, igual
ZF= l
JNLE, JG
Maior que
SF= Of e ZF=O
JGB, JNL
Maior que ou igual
SI'= OP
lO
Excesso
Df'"" l
lS
Sinal negativo
Sf=1
JCXZ
ex é zero
cx= o
18, JNAI3, JC
Abal.xo
CF= I
lNBE, lA
Acima Cf50&ZF50
lNE, JNZ
Não-tero, não-lqua.l
ZF=O
l .... lNGE
Menos que
SF 4>. OP
JI.I3, JNO
Menos que ou Igual a
SF -:f. OF orZP= 1
lNO
Não-excesso
or =Q
lNS
Não-negativo
SP=Q
"
1
,
t
)
'.
-...
8P~8
N
BPl6
Atg~2
8P~4
Argumento 1
f'gura c.a
OP.2
Endereço du retorno
lhn exemplo de pilha.
AP
llP anllgo
BP ,
Van.ive! local 1
BP'
Vané~ellocal2
8P- 6
Variável local 3
BP'
Aasultado temporário]
~
BP
~
•
•o
SP
Em ~r.!g uid.1, n novo l..oll1udur de pro~rRllla é carregael\) a panir do rôlUln, ou a punir do endc.:rcço c(..:li\,o. Se a chu muda for Jl~lumc , 1:111110 11 Icgil>lrildl)" CS lo! pa~sndo p:ml:1 pilha de PC c :unho:., O contndor de programa e o regj~ · tflllJor de :.l!gllll!nlO de r.:ódigu, ~í11) clIrregaclos ti partir de d [ltl()~ im..:dia\() ~ ,lU 11 parI ir do endereço erl!livo. Isso conduí a
ill~lnlfiilu
CALL .
A imlrução dI.! Il.!lnrtlO, REl, "penas retini {l endereço de retomo tia pilll... arrnULcnll esse cuuercço 110 con lndur (Ie programa c li pmgr•.uIJ:l cuminuu na in~lrução imcdilllulIlcnle upõs a instruçl'io CALL. Às vCl.es. a in~lrução RET contém um número l'Im,uiyo eUlllu dlldns imt!dialOs. Admilc·!>c que esse número sej .. o llIílllerO de bylc~ dos argu meutlb que fOr.tLllI»l ~),adU). par.! a pilha antcs da chumadu; ele é adicion ..do a SP para limpar 11 pilha. Na vari ..nlc distantc, RETF. IJ rcgi~ t r.ld nr de :.egmelllo de código é rClimdo depois cio contador de progruma. como :,eria de esperar. Olo argurncl1l{)~ pr":c1l!alll el!lar a..:essívcis dentro d.. sub-rotina. I'onunto, 11 loub-rotiml muitalo VCLelo inicia pas:,andl) para a pilha (J ptlllteiro de base e copiando n valo(corrcnte de SP pam BP. I ~so signilica que o ponteiro de hase al){lnla pil.m :''':11 valor anterior. AgOt'à o endereço de retomo está em BP + 2 e n primeiro e segundo argurnenIOlo podem :,er ellconlrall{)~ 1I0lo endereçus efeti vus BP + 4 c BP + 6, respecli \'amente. Sc u procedimento precisur de \,Lriá\'cls locailo, eiltill! (I L\limcm rCílucrido de byles pmle ser subtraído do IlOnleiro de pilhu c eSloas vllriá\'eis podem locr endereçadas a pal'lir do ponteiro de base com deslocaLllen tu ~ ru~gat i vos. No exempln da Figura C.3, há três variáVcilo Incai). de palavnl úlllcn locn lizadas em BP - 2. BP - 4 e elll BP - 6, respectivamentc. Desse modo, todo o C(llljUllhllk argumc l1lo~ cnrrentt.!~ e v:Lriávds locais pode )cr akam;ado por meio dn rcgistmdor BP. A pilllil é uload,t do Illudo cnmum para salvar rc~ultlllJos intermediários ou pam preparar argumen tos puni .1 próximu chamada. '\'c rn cakular a (pUllltidadc de pilha usudu nu sub-rotina, 11 pilha IKI(.lc ser rcSlaumda antes do rel\lfl1n copiOllldo o pOllldrn de base para o ponteiro de pilha, retirando o BP antigo da pithll e, por fim, executlll\do a instrução RET. J)ur.llLte uma chall1ada de louh-rotina, os valores do!> registradores de processador às vezes mudam. É bolá chamando n50 precise estar ciente dos regilotmdorcs usados pclu rolinu que foi chamada. O Illlldulllais !>illlples de faLer isloo é Ul>ar as mC:,Jltas convençõcs para chanllldas de si~ t ellla e ~lIb- mtina!! Ilormailo. Ad lllit e - ~ que AX e DX possalll Illudar na rotillll chllmada. Se um des se~ I'egi~lradores contiva inf!1 rll1 a~i)c~ \ld Í! I~õI ~ , Cl1 t~u é acnnselhável {Itle a rmina que e~ lil tha llllLndo os coloque 11:1 pilha ILIlles de passar os ÕlfgumcnHls. Se a &uh fnlinll tamhém usar outrOS registnLdures, eSles potlcm ser passat!.Js puni a pL1l1ll illledhllamenle /10 lIIicio da louh-rot ina c rctirados :ullcS da ill ~tru çl\o RET. Em out ras palavralo, uma hoa cillLvenção é a rotina chumadofíll> .. lvar AX e DX )oC dCli contiverem algo de imponanle e a rotina chamada sal VIII' qlluisquer outros regilotfíldUl\!lo que ela Subre.'crcver.
C.4 .6
e
•
Chamadas de sistema e sub- rotinas de sistema
1J. i~lcma C cincll funções são slIponadus pclo intcrprct:Ldor. Elas estilo rchl ciolladas na T"hela CA. ESSOllo dnle nlliLla ~ podcm ser atiVlldlls rela seqUência de chamada padrão; em primeiro lug,ir, passe (lS argumenUl:, necc ~~á ritl~ Jlura a pilha e m ordem inversa, cntão p'lsse o mímero da chamadu e. por 11m, cxccute fi instrução de excc~ão de lol.~ lCllla SYS sem opcrandos. A rolina de ~iSlemu cnconlm todns n~ inf()l'll1açi\e~ neces~{irias na pilha. incluindo IIll1imern da ch'Llnadi.l do loerviço de si~ t ema rC'lucrido. Valore~ de retorno loão culucadus ou rcgi.~ ll'.lllnr AX, 011 Ili.l COUlhlll:lçào de registl'lldores DX : AX (CIILIlIllJO o valor de retorno for 11111 lungn). É garantidu '1L1e hw..lilS Ib mltms regbtrarJores mantemo seus valores na instrução SYS. Além db!io, 1110 argumcnl{)~ aillda c!>tarjtl n:. pl lhullpÓ!i d chamalla. Visto 4uC eles não são mai!> neces:,ários, () I)(lflteiro de pilha dcve ser ajustado lIpÓ~ a chamud" (llCl.L m lotru~ão chamadora), ti menos que sejam neccsloários I>ara uma ChlUllíldOl sulheqllcnte. Pur eml\cniêlll.ia, I)lo nOlHes dalo dmmadas de sistema podem locr dcfinidos como COII~ talll e~ no infcio do pmgrOlmô.l uloloembil.:r. tiL IIlIKlo qUI! elas pmsam ser chnm>ldas pelo nome em VCL de relo mimem. Nnlo exemplos, scriln dbcutida~ váL'iõllo l'h,UllUd, l ~ Ile ~i~le l\l>l. portanto, nesta seção, darelllos somente ulIllllinirnn necc).).ádu de dCllllhes. Ne~loa~ chamUtlus de loistelllll , arq Llivos siío abertos pcJa chamada OPEN ou pela challlllchl CREAT. Em mllhus ib cu~os, li primei l\l argullIellw é o endereço do infcio de IIllla cadeia que contém o nome do urtl'livo. O segullIln argullIenllJ na cham,lIla OPEN é O (caso o arquivo deva ser aheno para Icitut'à), I (cmm deva :,cr liberto pOtra c!>Cri lll), 011 2 (para '1II1ho... ,. ('11:.0 () arquivo deva permitir elocritas e .. inda não existir. de é Ldado pela chamada. Na chamada CREAT. é (rialin um arqui\'o vlll.io. com permissão ajulolada de acordo com o ~gllndo aq~ul1ll!lllU. Amh;1lo
'"
e
• ,•
~
~
o
e
•o
•• •e •
~
~
o
~
u
•u ~
•••o. <
N N
.;o
Tabelll
No
C.4
I
Algumas chamadas de sistema e sub-rotinas UNIX disponiveis no interpretador. Nome
Argumentos
Valor de retomo
Descrlçll.o
5
-OPEN
"nome, 0/1/2
descritor de arquivo
Abra arquivo
8
-CREAT
'nome, "modo
desctltOl de arquivo
Crie arquivo
,•
3
- nllAD
Id, buf. nbytes
f uytell
Leia nlJytes pala buffor buf
0-
4
-WRI1'E
Id, buf, nbytes
t
Escreva nbytes a partI! do buflcr buf
6
-CLOSB
Id
O para sucesso
reche arquivo com Id
19
-I..SBEK
Id. offsalUongl, dll/Z
posição lIongol
Mova ponteiro de arquivo
- EXIT
status
•• o
~
S o u
• • •,
~
~
bytes
·, ·•
117
- GBTCHAR
122
- PUTCHAR
Chill
o
127
-PRINTF
°forrnalj arg
Imprima fOI matado na salda-padrão
121
-SPRINTP
buf. ·forma!. arg
Imprima Jormatado em buller bul
125
-SSCANP
bu f, 'formal, 8rg
Leia argumelllos de buffer bul
~
•• • "c •
feche arquivos Pare processo
leia caractere
Leia caractere da elluada-padrão
cSCleva byte
Escreva cmactere
pSlB
saldo-padrllo
~
~
o as chamada~ , OPEN e CREAT. retornam UI11 inteim pequeno no registrad ur AX. tine é denominado deslTil ul" de nnluivo e lllle IXlde seI" u ~adll para ler. escrever e reehur n nrqui vo. Um val u r de retorno nc!!'Jl ivu .. ignilica que 11 chamad'l ralhou. Nu infcio do progr:lma. Irês nnlui\'os já csliiu nbcnos com dcscritOl'c~ Itc j]fllui\ o: I) pam c nl l adn p'lurflo. I para "ufda-pudlân e 2 para safuu de crrn-pllurilu. A~ chal1mtllls AEAD e WRITE lêm três argumenlos: o descrilor de nTlluivo. um hufk .. paru Cll1ltcr os lIadm c o mimero de by te~ a trunsfcrir. Uma vez que os argllmc nlo~ silu c mpi Ihados em ordem inversa. em primeiro 11Iga! pa~ sumos o número de bytes, entãu u emJcreçu du infciu do buITer. em seguida o de~cri tur de nrqui\"O c. JXlr fim. !l mi mero da chmn'lda (READ uu WRITE). Es~a urdem de e mpilhamcnlu dus orgumento" fu i c"<=lll hiúa para ~er igual à ~eqüêllcia de d1:lllmdu pl.ldnl0 em lingunge rn C, rm qmrl read(ld, buUer. bytes);
é irnplemelllnda passando-se us parâmetrus na ordem "y/(!.f. fmffer e, Jlilr fim. [d. 1\ chamada ClOSE n.:quer apcnns o descritor de urquivu c retuma O em AX se o fechumeJ1t u du urqu i\"o foi bem-sucedido. A chamada EXIT TClllU=r li ~'ltlllI.f dI! safda nu pilha e não retoma. 1\ chnmadu lSEEK ullem \I pUIltciru d e Icilul"tl/esc rilll em um arquivo ube rto. O primeiro argulllcntu é O descri lor de al"llui vu. Vi Slo que o segundo nrgulllcnl u é urn longo. a palavra de urdem :rI la deve ser passada para (r pilha cm primeiro lug'lr e. em seguida. a palnvra de ordem baixa, mesmo quandu u dl!,~lnc;rJl1 ent{) l"l!Uber em uma palavra. O lerceiro argumento ind icn se o novo ponteiro de leitura/escri ta deve ser eah:ulut.lo em rela\'ão ao infcio dn arquivo (caso O). em relação i\ posição corrcnte (casu I). ou cm rel a~ão ao final do arq uim (c:rslJ 2). O valor de reU'fno é a nova pos i\' ~o do pOllleiro em re la\~ão ao ink iu de um anluivo e pode!'Cr encuntrado com!! um hmgu na combinação de regislradorcs OX : AX. Agora. dlegamos às funções que niio são c harmrdas de sistema. 1\ funçã o GETCHAR lê um caraclcrt" da en lrada padrão e o coloca e m Al, ~e ndo AH ajuslado para zero. Caso falh e, toda a palavra AX é nju~lada para - 1. 1\ dlamada PUTCHAR escreve um byte nu s:lfda -p:ldnl0. O v:rlor de relomu pum uJlln escrita OcnHuccdida é li h)'te c~c ri Lo ; p,lra uma ralha é - I . A chamada PRINTF pn.xlu/. saída de inrornm~'ã\l fnrrmllnda . O primeiro argull1crlltl pura a dwm:lda é {l c nde re!;o de urna c
....;
-. lad,l, Se o:. ptLrâmelllllo f01>l>t:1I1 pai>sados da e ...querclu para a direi til, a cadeia de fonnalo clolaria perdida n3 pilha t: iI pnx:edimcntl' I,rim] Illlo loahcria onde encontrá-la. Na I.:harn.u la SPRINTF, () primeiro argumento é n htlffcr, puni receber a c,nlcia de i>uída, em VCl da saída padrão. fh IIUlnl~ ulgulllcl llnl> :,iln ():. mesmos que em PRINTF. A chumada SSCANF é o inverso da PRINTF IHI 111"::.1110 sentido de 4tH! ,) ]lrllllc lru argu1I1cnlo é ullIa c'ldcia. que pode COn1er inteiros em n(HlL~ãtl decimal , m;1U1 ou hcxadccimal . c 11 pró;.;imo argumcllIo é a cadeia de formato, (I UCc(lnlém as iJ\dicu~:õcs ele c(nlvcrsàu, O . . muros urguIlIcn\os são clldcrc4jo, de ]lOIlavras de memória para rcccbcr as informaçõcs cClJ\vcrtidas. E!>sIIS suh-rOli n'ls llc sistc ma . . :ill mlL1\n \crsl'il c i~ c UI1I lralUlIlCl1tn c.u cnsivo dali possihil idadell clItaria muito além do CM.:0IXt deste apêmlil:r.:. Na Seçiltl CK. divCl"\tll> exemplus mOl>lralll como elas JXXlern lIer usadas e m diferCUles situações.
.. M N
8
•
~
•c
,. o
CA.l Observações fin a is sobre o conjunto de instruções Na tldilliçãtJ otll.:ial du ~{)~M, existe um prefixo all cr:u;ão d t segmento que facilitil iI I)ul>sihilidade de usar endercçoll efeti\'O:. de um ~cg1llC 1 1l0 diferente; isto é, o primciro endereço de mem6ri u após a ulteração é calcu lado LllIillldtl n rcgi~trador do lIcglllcnlU indicudo. Por exempl\}, a instrução E5EG MOV DX ,(BX) pri m cilU cakula-:.c u cndcrcço de ex usando o segmcnto extra c, entilo, move-se o conteúdo purel DX. Contudo, n :.eg mento dr.: pilha, nu CillIO dos ellllt:rr.:ços que usam 5P, segmento extra, no <:ilSO de cadci:IS de illstruçõcs com 11 rcg l ~l rador DI, lIão podem ser alterados. O s registradores de segmcntos 55, DS e E5 podem ser ulIadol> na instru~'iio MOV, 1lI":. ê impollllível mm'er dados imediatos para um registrador dc segmentos, e esses r~gist radorcs não podem :.cr usados elll uma III>crução XCHG. A progr'
c()
~·õc:.
é h:llllante complkudil \! cle\'e ser cvitllda :-.cmpre que possível. O interpretador USll registradores de segmentos lixo:., ponan((). ne:.!.c <:a:.o, não surgem prohlemils. IlbtnLçilc:' de plInto nu1uantc estão di:.ponfvds ml muinria dos computadores, às "Coles d irct:llllente no proccs~udor, às "elc~ em U IH cn prucessador isolado e, às vezes, somente intel11rctadas no soBwarc por Illeio de um tilXl <:l>ped al de exceç~11 de pOllln flutuan tc. A discLlssno (Ic~~u~ canrctcrísti e'ls está tom do escopo deste npêndice.
C.5
O assembler
8
•o
••
~
•8 •"
~
o
"
~
<.>
•u ~
••• ~
Agora, j:í 1ernli lMmth ll()J>lIll discussão dn anlui1etura do ~088. O próximo tópico é o ~o nwarc usado para pmgrumiIT fi M(JISIS cm linguagem de montagem. em panicular ali fen-:unentas que furnc<:emos para aprender programa\'ão em linguagem d..: montagem. Em primeiro lugar, di scutiremos o a:-.sembler, en1õo () ru:.treador c, em seguida, pall:.:lIl IOll pura algulH'llI infnl'll1l1çj\e~ práticas para suu utitijl'açào.
C.5.1 Introdução Até agora, no,\o IcrcriH1ll~ ~~ i l1 stn.l çôc~ por SCll~ Illllemônlcos, i~ t o é, por nomes simhõ licos fáceis de lelllhm r <:IJH IU ADD c CMP. R..:gbuadorc:. tumbém furam dcnomillildn~ pur nomell :.i mbólicos, COlHO AX c BP. Um programa c.)criw uSandil nOlllc ~ lIl lrIbóhcClS para insll1lçõc:. c regis1radores é dClloOlinado IIr11gntllm e m linguagcm de 1111111 htgelU . Para executaI' tal progr.ulla, em primeiro ll1g.u é necessário 1radu.d- lo p:lnl 11:. tuímerm. bimiriulI que li CI' U realmente emende. O pl'ogramll ( IUe converte um progrôlm:\ em linguagem de montagem pm'l rnírncros hinários é um aS-'iemhlc r. A sóll"a ctn asscrnhlcr é denomimlda :t rtlui vu-ohjeto. Muitos programas fazem chamadal> às suhrotina:. Já 1l101l1iltlal> <: ilnlMzcnadas em bibliotccas. Panl executar essell programas, o arquivo-objeto recém-montado e U:. ~uh -ro1 inas de hihlio!ccn {llle ele lisa (também ar(luivos-objetos) devem ser cornhimld o5 em um IÍnico a nlu i\ o hin á rio exccul:Í\'d 1}m nutro programa denominado li.lludfJr . Somente qunndo o Jigildor t ivcr montado tJ afllui\'{l hinário cxccUllhd 11 pun ir de um ou muis arquivos-ohjelOs é que a If udução cstá conr plctl11l1enlt: condufda. Então, () ~ i ~ l e ll1u lI!lCfilCiollUJ pode ler o arquivo hinário exccutável pll m a IlIc móriu e cxecuuí-Io. A primeira tarela tln ul>M:rnhlcr é montar uIHa hlhclll de Sílllbo l o~ , que é usada pura mapear os nomc, de COllllIUntes sirnhólicu" e rotulOll parir (b nrímeros hinários que eles represento.rn. Constantes que sl\n definidas dirctumcnte no Jlmgrull1a pudeHl ~er Clllocudas nu Il1hela de simholos :.cm nenhum pmceSllamenlO. TncJ:l\'ia, rótu los repre~e ll tum endereços cujm valorel> nilu lI:IO imedia1alllente óbvios. l>ara calcu lar seus v~l lores. o assembler percorre o progrulllu linha ptlf linhu , operllção dcnominmla pr lrneiru jlu.l>sagem. I)umnte eSSll passagcm, ele controla um COII · lud ur de I nc" l ila~ãl' gemllllcntc indicado pdo símbolo" ." , pronunciado ponto (doI). J>ilr.t cnda in~trllção c reserva de mCIll(tna {Iue fi Ir eilcolltmda nessa passagem, o cuntador de Jocil li zação é aumentado l)Or valor cOlTespondente ali tamanho (I" mernórÍll lIecc:.sária pllm cOlltcr (I itelll examinado. Assim. se o tamanho das duas primcims ilJ ~lf11\'ÕC~ fm 2 e J h) tes, re:.pectivarncntc, entno um rótu ln nil lerceira instrução lerá u vaJm IlUHU!riCO 5. Por exemplo, se e~sc fnl gm~llt() de c
Nu iníci,) da segunda passagem, U vOllor numérico tle <:uda lIfrnbolu é conhecido. Uma vejl' ' lue valores numéfiCO:. dos IIIn ernilllku~ de in.\olruçÕt!s ~1io conlltantclI, agora li gt'l'Ução de cód igo pode começar. Ali instruções sãu
<
'd' N ""
li tlas novlImerue. uma pm vez.. c se u .~ \;llorcs bi nários são escri tus uo anil/i vo-objeto. Q uandu a últi ma iustl'Ução 1I101l t:ll.lU. o artlui vo~(lbjcto estará conclufdo.
e~ t i \'e r
C.5.2 O assembler asSS, baseado em ACK
••" o
~
•o ~
•
o U
•
~
• •"
~
o
.. o
"
w o
•• •"
~
o
•
~
o"
Esta se~'i! o descreve o s detalhes do asscmblcr/li gador a.f88, 4ue é fornecido
110
C D-ROM c
110 ~ il c
dc"te H\'nJ
ÓS um ponto de exclamação at é () tinal d n linha é UIll cO ll1entário e não
e
°
Imluivo-objeto produzido. 0 0 mesmo l1Iodtl. linl1ôl ~ vazias $11:0 pcrrnitidlls, IXlr6 n i g nom ct a~. Esse us~e Tll b J e r usa três seções diferentes, IIIIS quais u código lmdu zit.lo e os dados serao ilrmal.cnados. Essa" seçi')cs estão re];lcionadlls com os seg menws tle memória da máquina. A primeira é a seçiin TEXT , para a~ in"truções de prm:cs."lUlor. Em seguid;1 vem a seção DATA . para a inicia1izaçau da memória nu segnlento de d adn ~. 4ue é l!unhecidu 110 infcio do p roce~so. A ültillla é a seção nss (llIock Stllrh.'tl b)' Symlml - hlm'lI inici:ulu por sím IJlJlu), para a rese rv;I de rnell1 óriu 110 segmento de dados que HUO é inici i.lli zudo (islo é, é inicializ.ado pam O). Cada uma d essa~ seçõcs te m seu própri o contaullr de lo(·alizaçào . A. finalidad e de ter scçt)Cs é permit ir que à a~se lllbl e r !!ere a l g ulll a~ i ll st l'U ~·õcs. elllilo alguns dados. cm seguido :r lgumas instruçõcs, cl1[au ll1ais da d ()~ c a.~si rn por d iante, e clltiiu f07er com que tl ligador' rt::u rgunil.e 0$ I>ctlaçus de mudo que todas as instruçõcs estej am junta0; 110 segmcnto tlc texto e tod as a~ palavras tle dados estej am j untas nu segmento de d'ldos. C
CMP AX,ABC JE L
MOV AX,XYZ L'
L é UIll rótulo que ~e refere à i n ~ truç ã () de palavra de dadns que vem d e l}l J i ~ dela . São perlllit ido~ dois tipos de rótulo. O primeiro são os r 6Iu)"s gloha is. quc sao klcntifieado res alfanuméricus seguidos 1)I)r ul!i';- ]Jol1tos (:). Tod os esses ró tulos devem !;er exclusi vos e ni10 podcm ser iguais 11 nenhu ma palavra reservada nem I1 lJ1crnrinico de in';lruçi!o, Em segundo lug.rr. só na seção TEXT, pudemos ler r ótulos locais. cllda um d o~ tjutlis cons i ~ t e em um único dfg ito ~eg uido por d(J i s- ponto.~ (:). Um rótulo local pude ()(:O rTe r v{trias vezes. Quando um pmgral1la contém ulIla i m;t rl1~'i! o lal COIll O JE 2t i ~su
significa JUMP EQUAL para
li
rrente até () pró:
JNE 4b ~ i g nilica
JUMP NOT EQUAL para trás até o rótulo mai s próx imo, 4. O ;lssernhl er permite que as constant es recebam um nome simh61ico
u ~;lr1do
a si nt;txe
identificador = expressão na qual o iúcntificllllor é UI11<1 cadeia al r:Hlumérica. eOlllo em BLOCKSIZE
~ t 024
COlllo lodos os idcnlilie;ldores e l1l li11guagem lte m011ll1gem, somente os prime iros oito caracteres suo signil1 c
•
)
-, T.duda C.5
(/)
As pseudo-instruções do as88.
Instrução
...
N
Descrlçao
SnGT .TEXT
Monte as linhas seguinies na saçâo TEXT
SEI..'T ,DATA
Mome as linhas segulntes na seção DATA
SECT .BSS
Monte as linhas seguillle8 na seç:Ao HSS
IIVTE
Monte os argumentos como uma seqütl:ncia de bytes
,WORD
Monte 08 argumentos como uma seqüência de palavras
J.ONG
Monte 011 argumentos como uma soqüência de longos
ASCII ·stI"
Armazene str como oseii uma cadela sem um byte zero no final
ASCIZ "str"
Armazene 8tr como 8scii urna cadeia com um byte zero no final
,SPACEn
Avance o contador de localização n posições
.AUGNn
Avance o contador de localização a té uma fronteira de n bytes
.EXTERN
Identificador é um nome eltemo
8
•
~
•c o
"• ~
8
•=
•o
= c
~
8
•o
fabo la C.6 Alguns dos caracteres especiais permitidos por as88.
51mbolo de escape
In II 1\ Ib II Ir I'
Descrição Nova linha javllnço de IInhal
"'b Barra Inverl1l1a Retrocesso Alimentaçiio de formulário Retorno de carro Aspas duplas
Em luua IingllugC:IIl de 11hlJ1lugem há alglu m,s dil'clivllS quc in ll ucncium (I pmccsso dc IHuJllagcm em si. mas quc nã\1 ~iiu lradll /itl a~ paro. c\;digo h1llárin. Elalo silo dcnolllin:lt1as Il~etl cl o· ins l rtl~ões. A ~ plocu J o- in s L mçi\c~ t.lo tIINH c~lfiu IcI.u;i\lll.ld a~ na Tabcl:l C.5. O primeiro hlocu lte p~ 1UJll-i nlo lnll).:ões determina 11 seção na IllIal U:-. lillhl.:ç ~ O TEXT. cnl ãllll seçno DAT,\ 1.:, CII I loeguida, a ~eçã() nss. Após c~~u, rdl.:rências ill iciai~, as seçõcs [mosStl IllllnUsC:lr fi referência. Embora () lIM.cmblcr em si seja razoovelll1emc geral, quando de é usudo com o ruslreildnr vale a pena obloer\lar ;l lglln~ PClluCllLl~ punlo:.. O as~eillblcr accita pal:l\'m.<;-cha\'e em maiúsclll:ls ou mimlscu las, mas () rJ.:.lrendor sempre as ajlrr.:~cm.i em muilhculu~ . De Illodo scmclhalite, u a:.~cll1hle r acei ta ambos, '.\1"" (retorno lle carro) c "\n" (nm li lillltU J l!lllllO I ndku~ã\l de uma lIova lillha, mas o nbtreudor usa a úl tima. Além du mais, elllhura tI assemhlcr
u
•o
'•. ~
~
~
"'
~
possa man usear programas subdivididos em vários arquivos, pura uSlí-lo cllm n rastreador. li prnjlrama inteiro deve eSlar em ún ico arqu ivo com eJetensãn ",$". Dentro dele pode·se re(lui~itar
••" o
~
,•
~
•
o u
• • ,•
~
~
,
"
•
w
o
••
~
• N
o
•
~
o"
Nesse I.:orlanto os mímeros de tinlw llll,!ndonadm pt'lu asst'mbler em Ca~l) de eJTOS c avisos são dctc n ni n;tuos em relação a esse arquivu. Para projetos muito IlClluellos. ~~ \"t:zc~ é mais sim ples colocar o progra mll inteiro em um arlluivo e evilar tlilldude .
°
C.5.3 Algumas diferenças com outros assemblers 8088 o a~sel!1hler, a.~8~, é lIlodelado conformc o assc1l1bkr )J.tdrão UN IX e, como tal. é dirercnte. e111 alguns "~ IX:c to.~. do Micros(lrt Mucro A~setllblcr MASM e do n~~c1J1blcr Bnrlilnd 8088 T"SM . Es se~ dois :1.~ ~e l1lbl c r~ foram pro jetados para o ~is tell1a operacionnl MS-DOS e em certos aspectos as questões (lo nsscmhler c i1 ~ (pJ(·~tnes do ~ i~le 1IIi1 operacioll al csliio intiutl.\1llenle rc lndouadas . "mnos, MASM e T"SM SUIRmam lodos o~ mot.lclns de mcm6ria do 8088 permitidos pelo MS-DOS . l l ~. IlOr exemplo. o modelo de me mória lIIinílS(·ul ll . no ql1nl todo ti códigu e m dados devem cnuer em 64 KB. o 1Jl{)(lelo pc(/ueno, no qual u segmenlo de código c o segmento de drldus cada um tem 64 KB, e 1ll0lJclos gruu dcs. que ctlnH!m vários segmentos de código e (Ic da(los. i\ lliferc1t~·: t Clttrc c~~cs tltodclos depcnuc ll.Lmili7.,açãu dos registradores de segmentos, O Il1Ottelo jlfandc permi tc cham a da~ disl;tntcs e altcra ti registrador OS. O proccssmlor em si imp6c algum us rcslriijücs :lOS rcgistmdores de se!!mentu~ (por eJeclIlpto. o rejli~ trador CS não é permiLido COtltO des tino e m uma instrução MOV). Parn sirnplilicU"T U ras tt"eantl~ l1to. (J modelo de mcmória usado e1l1 (1588 é pureddo com o modelo IlCljuelltl. embura o asselllhlcr, sem () rastreador. ptl ~sa manipu tal' os registradores de segmcntos sem res triçõcs adidouais. Esses OUIWS asse rnbl ers niio têm UJHa se~'ã() .BSS e inicializam a mem6ri:1 sumente nas seçc.1cs DATA, Geralmente () arquivo do asscmblcr curlleçu C(lm :t lgurna informação de cabcijal ho. em ~egt1iu:l passa para u seção DATA. que é indicnda pela palavra-chave ,data. seguida 1)Clo teJeto do programa depois da pal avTóI-dmve .code, O eaheçalhu tem UJ1líl ]lilJ:tvra-chave title para nomear o program'l. uma palavra-t1lô1ve ,modet para indicar I) mntlelo tia me mória e uma palavra-chave .slack par" reservou memória para Il ~eg mento de pilha. Se \) hil1ári\l prdcndido fur um arqu ivo .com. CI11ão ti Itlvtlelo rninúSl.:ulo é usado, todos tiS regis tmdorcs de ~gnu.:nIoS ~ã!l iguai~ e no título desse ~egJ1le n to combinado sãll rc~crvados 256 byte~ pnnl um " Prelixo de segmento de pnrgrmlla"". Em \'ez das diretivas WORO .BVTE e ASGIZ, es~cs asscmhlers têm ptllavm~-chave DW para definir palavra e DB para definir bylc. Após a t.lircliva OS, pude ser uefinida um!! cadeia dc ntro de um pur de n~pa~ tllJpl;l~ . R ótultl~ pUni dclinil,"(lCs de lindos não são seguidos por dois-fXmlos. Gnmdes porções da mem6ria ~ãn in il"ióllizadas Ix:la Prl!:Lvra-eh;we DUP, que é precedida por uma contagem c segu ida de uma inicia1iziUião. por (·JeclIlpln. n dcdaraçnn
LABEL DB 1000 DUP (O)
inicializa LOOO h)'tcs de memória com bytes de valor ASCII zcro no r6tulo I '/\IJFJ ~ Além disso. rótulos purn sub-rotinas llJtl ~ãtl seguidos por dois-puntos. mus pela palavra-chave PROG . NIJ finnl da ~\th- ftJtilJa. () rótulo (: rcpclido e seguido peln pU!;lvra chave ENDP. de modo que o lI~selllblcl pode inrcrir li exulO cscol>O uc uma sub-mlina. Rótulos locais não ~iio ~uportados. As palavras-chave para a~ instruçGcs ~ão idênticas em MASM. TAS M e fls88. Além di~~f1 . a fonte é col(lcnda "pós o destino em instmç(JCs de dois opcraudos. Todavia, é prática l'(}1l1llJll u ~ar registradorl"s. cm I'e" de uma pilhn, p:lrll passar argumentos para runçõcs. Conludo. ~c r01"C1l1 usudas f\l tinlls de 1l10ntagem den tro tlc Jlrugnl1n:t~ C or C++. então é aconscJ h ~vcl usar a pilhn para licar lle acurdo CtHll J) Illecanisll1!l de chamada de ~ \t h ruti lw em C. Es~a nãt' é uma difcrença real. \'i.~to que. em asS8 lambém é possível usar rejliSlmdores em vel da pilha para Hlgulllenh)~. A 1l1aim diferença entre MAS M. TASM e 1I,1',WJ es t ~ na reali z;I ~'i'lo de dm1llada ~ de si~ t l" 1I1a . Em r.,'IASr.,'1 e TAS M. () sistenw é chamado por meio de uma interrupçlio de sistema INT.A mais comum é INT 2lH. que é desti nada às chamadas de runção do MS-DOS. O ttli tttt'ro da I.:hal1lada é etllc)Çado em AX. portanto. 1Ilai~ uJlla I"ez. tcmo~ pas~age!tl de argumentos em rcgi~lra dorcs , l lá vetores de inlern tpção c. mímcrlls (te inteO"ul11,'ãu {lircre ntcs pant cquipall1elllOS difcrente~. por exemplo. INT I GH par:1 as fun çõcs de ted
,
o rastreado r
C.6
o f para h:rmÍlmis. Em má<juinas UNIX ou Linux, (l emulado!' de ICI'Jl1inall1o ~il>lcrnn X-windmv gcral JIlélll !.! cumpre tb rt.:<.jui:.iIO:'. Em málluinôls Windows. li driver wlsi.Jys Ilonnalmenlé tem ue !oer carregado nos <11'(1111vo:. de inidali.wifâu do l>i~ l.;rna como dC:.CfI':VCIllOS adhUl1e. Já vimos o laynul dajuncla du fi.l~trcadOl' 1I0S exemplos do ra~lrcador. Com,) :rol! pode ver na Figura CA, a tela do l'astreador é s ubdi vid i.la em sele janelas. A janda l>UpCllUr t::.querJa é li janda do processador, que exibe os registradores gCr'dis em notação decimal e nu tro:. rC!l i "lrad!Jrc~ em hc"adccimal. Uma VC.l (jue o v:JJnr numélicú d.1 c()llwdor de prngramu nllo ,.! muito instnuivo, ti pn~i~'ão Ihll:óúigu-follte do programa em relnç3l) [lO rútulo global ant~rior é fornecida na linha llbaixo dele. Af.:iIlUJ do call1po lI..: contador de programa silo mostrados cineo códigos (le condição. E xces~u é indk " parallumClIlllf e por --<" pafll diminuir. O n :lg de sinal é --n". para negarivo ou "p" para :.'eru c pn~itivu . O nag dI.! um é " z" ~e lllill"Cado, e () nag de vai-um marcado é "e". Um " -" irlllica um flng não lI1ilrl:lldn. A janela ~ upel i"r do meio é usada para a pilha. exi biclrl em hexlldecirnal. A pnsiç1iu til) ponteiro de pilha é indicada por lima ~cta -> " . Endereços cle retorno e ~ u b-f(J lill as são indicados por um dígito à frente 110 va lor hexadecimill. A jiLud:1 superior direitil exi he \Uml parte do lIrtluivn-folllc na vizinlwnç:1 da prôxima inslmçân a scr exccutndu . A p'lsi~' jlll d" ,~onladnr d c programa tilmhélll é indicild " . Na jlUwla snb o processadur são exibidas as I>osiçõcli mais recentes das challludas de sub-rotina de códigu· fonte . J)il\:t:lll1cntc "baixo dda está a janela de f.:o munlloli d" rast reador. q\le: apresenta o comando previamentc emi· tido na pan e de cium c o cursor tle comando na pane (le haixo. Note que cada comando prccis". Na tinha de entnldll há uma seta --->" para indi car o punteiro lJue dc\c M!r lido em ~egui da . Se li programa chamur I'I'(/(/ nu gcu'/WI', a próx ima entmda na linha de coma ndo do rastreildor eMurá ent rando no campo tle entrada. Além disso, nesse caso, é necessário temlinar il linha de clltradá com um retorno. A parte da linh" . Em geral , Il rH ~ lreadnr lê ~e u s comalld o~ e suas entrada:.
pr.!> p1mJ 11 f.:Ôl hgu-folllc de Illontilgem. pr.$ para .\ ilrqui vo-fonte cúmpll:.t n. 3 . 11/'.88 par:I n arqtli\'l) de c
2 _
Te~to
Processauor
"m registradores
figura C.4
As janelas do rilstreador.
do programa
Pilha Arqlllvo·!onle
PlIhll de chamadas de sub·rolinas
Campo de enlrada de erro
Comandos do lnlerprelador
Campo dI! sarda
Campo de enltada
Valores de variáveiS gtobeis Segmento de dados
.-
8
• •
~
•o
" s
•
'",• •'"
~
e
•o ••
~
•8 •"
'"o
~
u
•
u
"•
'.
~
<
o tÍhiztlo lII"(juivo é usaúo pelo raSlre,\(lor para preencher ti ja nela guperinr direita e o campo uC' t.:olltauor de programa no monitur. Além disso, (} r:lstreauor verifica se (J arquivo de carga foi criado após a lílt il1l:l IIlwific1II,:ão do ]lrogrmna~ fonlc; se não foi. ele emi te uma aJvcrtêllcia.
"• ••o
"8
~
o
u
•
"• ~
•
" "
•
~
o ~ ~
• " •"
~
o
C.6.l Comandos do raslreador 1\ Tubcl:l C.7 aprcsclltn 1.1111<1 relação de comandos do mslreauor. Os ll1<1is importantes são U WIlHl11do de retornu ,ínicl). que é a primeim linhu du tabela c (lHe executa eXAtamente uma ins[ruç~o de pl'Oces.~ador. c o comando de saída q. na última linha da Iilucln. Se for dado um númeru como um comando. então esse mítlll'rtl uc in~lnlçõcs é executado. O número k é equ ivalente ti digitar um returno k vel.es. O mesmo efeitu é cOIl:«:guillo .~c () número ror seguidu de um pontu de eXc\:lTnm;ão. ! , uu de um X. . O cumamlo g pude ser usado para ir até ccrta linha no arquivo-fonte . Há três vcrs{')cs llc~~t.' cOIlHlnuo. Se ele for precedido pür UI11 lIlil1lcro de lin ha. então o raSlreauor executll até que essa linha scja encontrada. Cnm U111 rótuIt) rr. COIII ou sem +11. li número da linha na qual parar é computado a partir do rótu lo de in sl nl ~' iio 1'. O comnndn R. sem qunlql1t.'r indicnc;ão que o preceda. faz que o rastreador execute comandos até que o mímel'O da linlla conellte seja encun trnd u novamente. O c1l1l1nndoVfnfJtd é direrente para um rótulo de instrução e para UJll rótulo ue dados. Nu I.:aso de rówlo de datl!ls, lima linha nu j anela de baixo é prceTlchidn ou subst itu fdu por um conjuntu de dados
C.l
Como começar
Nesta seção. cxplicaremos como usar as re1'rafllenllts. Antes de mais nada. é neces~iíriu lucnli;'ar o ~onware para sua plataforma. Temos versücs pré-eo mpiladôls para Solaris. UN IX. para Liuux e pam Windnw s. l\ ~ ferrnlllenla~ e~tão na Web em \\'WIJ·.!Jrenlwfl.mm/wl1el1bmllll_b,.. Descompade o arquivo 7,Íp selecionado pam um diretório a.f.ft'mhfel'. Esse diret6rio e seus sllb·diretôrios eonlêmlOO(} o material necessário. Os principais diretórios ellcunlrmlo~ no ~ il e s1io /Jigf'lIdllx, Lth'llliNx e MSlVilrdO.f. e em cuda UIII deles há um subdiretório assf'lIIlJlel' que ('ontém n material. Os três dirctórios de nfvell11uis ulto silo para UN IX Big Endian (por exemplo, estaçflcs de trnhalho Sun), UN IX I.iule Endian (por exemplo. Linll)( em PCS). c sislemas Windows. respt.'Çtivumenre. Após descol1lpactar ou cupi:lr, () diretório do assemhler deve conler os seguintes "uhtlire16rin" e arquivos: m::AD_ME, hin . 1I.\·_ SI',·. Irce_~"'c:, e.\'l/IIII'Il's e exerci.fe. /\s fontes pré,coll1piltldas podem ser encon tnrda" no diretório hill. mas . por conveniênc iu. h6 tamhém IlIllU cópia dus hin~rios no diretório e.\,(/I/Ipfes. Se 4l1i scr urna r~pida vis:ão mllccipadu de eumo o sistema funciona, abm o ,Iiretório ('.I'WIr/'/t's e
Esse comando l:Ol'l'csponde ao primeiro exempl o JlU Seção C.S. O códi go-ronte pura o asscrnhl er está 110 diretório as_.\')'(:. Os arquivos de código. fonte estão em linguagem C, c o I.:omamlo makf' deve recompilar as fo nles. Para platn rllr1l1as cu mpulívei~ com POS IX. IHí um ,\fahjife 110 diretório-fonte (Iue faz o serviço. Pam Windows, há um arquivo de lote lIIake.lJ/lI. Talvcz seja n ece~s;í rio mover O~ arq ui vos c.\cctlláveis após c011lJlilaç1ío pura um diretório dI:: prugrama, ou \limiar a variável 1'1\'1'11 para IOfll;lr () as~el1l blcr m'88 e o rastre'lllor 188 visfvcis a partir dos diretórios que contêm os códigos-fontes de munt:lgcl1l. Como alt<'l'1l:lti\'a. e1Tl vez de digitar 188. pode ser usauo o 110me completo do caminho. Em sistemas Windows 2{)(X) I:: Xi>, é neccss:írio inst:llur O dl'ivcr de tcrminlll (I/Hi ..\)'s adicionando a linha device- %systemAoot%\System32\a flsi sys
,
an 'lrquivo de cnotiguru'rilo, ('on.fig. IJI , A locllli zílção desse arquivo é a seguint e:
Windows 2000: \winnt\$yslem32\contig .nt
Windows XP, \wlI1dows\syslem32\conlig.nt
Em
W i nd cJw~
Cl N
Y5, \JH .:: ME. I) driver deve sc:r adicion:ldu a ("ol/fig.s)'s. Em sistemalo UN IX c Linux , () driver geral-
•• ~
•
mente é padrão.
o
C,l Comandos do rastreador. Cada comando deve ser seguido por um retorno de carro la tecla Enter]. Um retãngulo vazio indica que apenas um retrocesso de carro é necessano. Comandos sem campo Address na lista acima não têm endereço. O simbolo -H representa um deslocamento de inteiro.
Tabel a
o 2
'iHHi'5++·,i·"H+.HM Execute uma instruçãoDescnção
•
,I
ITH
2.
Rxecule .J instruções
g, I,
/srart+5g
Execute até linha # após fONlo T
/'r+*
b
Istart+5b
Ponha ponto de parada na linha " após r6tulo T
fr+l'
c
Istart+Sc
Remova ponto de parada na linha ..
•
g
\089
E~ecute
•
•
Execute programa ate linha corrente novamente
b
Ponha ponto de parada na linha corrente
c
c
Remova ponto de parada na linha corrente
n
n
Execute programa até próxima linha
,X
b
prO{)Tama até linha # ap6s r6tulo T
Elequte programa até mesmo nlvel de sub-rotina Executa até nivel de sub-rotina mellOS 1
+
Execute até niveI de sub-rotina mais 1
/bul+6
Apresente segmento de dados no ,ótulo+.f-
,I
/bul +6d
Apresente segmenlo de dados no r6tulo ++
R. CTRL I,
R
Renove Janelas
q
q
Pare rastreamento, volte ao proces9sdor de comando
t DH
/D...... fi
C.8
Exemplos Oli SCyihl C.Z at é a Sc\'ão CA, di scutimos
'.• ~
Execute até ponto de parada ou final
+
a
•o
{I
processac\or 8088, sua memória c StlllS instruções. Em seguida, na
Seyão (',5 , e;t u dalllo ~ 11 lillgulIgelll de Illolltngefll (/.\-88 usudu /leSse tutorinl. Na Seção C.6, eSlUdnmos o rastreador. Por fim, na S\!~ão C,7, d \!~tr\!v\! mos como montar o conjunto de lúnul1t:nlas. Em leori:l, cs~;\s informações são sufi d ente:. p,lra e:.crcvcr e dCJlurar programas de montagem com as ferramentas fornecidas. Ainda lL~sim, tal vez. sej a \Í1il pura ll1uilo~ IcitOl e~ ver algu ns t!xe lll rlo~ dctalhado!\ dt: programas d ~ llIonlUgelll e como dc~ pndt!1ll ser depurados co m u m. . treadof. E~la é a finalidad e desta seção. Tod o~ os exelllplos de programas di scutidos ncStll seção eS1i10 d i~ pu l1 fvei ~ Il tl dIretório e.WlI/fJlel· do conjunto dc fClTalllenla~. Aconsel hamos u leitur 1l lll0ll1ar e nbtrcar CllUlI UIII dclc~ li medida que é Ji ~c utiJ ll .
C.R.l Exemplo He lio World Vam(l~
inil.:illr CdlH t) exemplo da Figura C.5, fl/lo lVr/(ü. A listagem do programa IIparcce na jancla esquerda. 11 ~íll1h ~l lo de l,;olTlclLtiÍrio do assembler é o POJl\t) de exclamação O) , ele é uSlIclo na jnncla de programil [lara separar a ~ ill:.tnlçõcs dos números de linha (lue vem depois delas. As 1rês primeiras linhas contêm defini ções dI! const;ullcs, que conecta m os nomes cOJlvcncioJllli s de duas duumulas de siSlema e o arquivo de saída li suas Uma vez (llle
r,;orrespollucJ\lCS reprc:,c ulu~:õe:. intem ns. A pscudo· instrução .SECT, llll linhll 4, declura qlle us linhus segui nt es devem ser considemdas eomo parle da ~t!~ão TEXT; htll é, i ll~lrll çõcs de processador. De modo semelhunte, a linha 17 indica {IUC li que vem li seguir deve scr considcrado dllCh " . A lin l11l 19 inic iulizH umu cudeill de dados que consiste em 12 hyles, incJuitlClo um cspaçu c urna Itova linha (\11) nn tinlll. A~ linha:. 5. I K c 20 cOlllêm rótulos, que ~ào ind ir,;ado~ por doi s-ponlos :. Esses rótulos rc preSenHl1l1 vu lores numéri r,;os, :.emdhanll's ti C(l n ~t:tnl cs. Cont udo, nesse cuso, o assemhlcr tem de determinar os valorc~ numéricos.
a
•"
~
o " o.
"• u
~
'. o
o-
<
o
... M
Uma vez que s/(/rr estará no cO llleço da :;cção TEXT. seu valor será O. lIlilS o valor dl' quai~{lu er ,.(,(ul"" "uh)(cyli!.:ntes na sCl,'ão TEXT (não presentes nes te cltcmp)o), dependeriam de quantos hytcs de CtÍtti go a~ preCCttcll1 . Agora, considere li linlm 6. Esso linha termina COIl1 li dircrc lllfH entre dois r61u10s. que é \lI1Hl cun ~la nl c. ell1 t e rn1U ~ llullIé·
rir.:os. Assim. a linll
•• o
~
,• ~
e o
u
• •
~
~
,•"
, "
•
~
o ~ ~
•" •"
~
o"
MQV CX,12
C0111 a exceção que dci:.. a o asscmblcr determinar o L'omprimcntn lia cadeia em vez tle (lhrigar (1 progranHldor a f"7CT i"so, O val or indicHdu aqui é a quantidade de espaço nus dadus rescrvadil para a cadeia na linha 19, A MOV na linha (j é U cOl1l1mdu de cópia. que rCt)ucr que o v[llor di' - Ir1l' seja cupiado panl e x. As lillha.~ 7 até 11 l11o:': lr;Ull como são reita:,: chamadas de siste ma 110 conjunto de re rra m e nl a~ . Essas cinc(1 linha ~ são a tradução em código de montagem da ctmm;lIta de função em lingullgem C wrile(l , hw, 12); e l11 I!ll e O primeiro parâmetro é o descritur de ar{luivo para ~ a fda padrão ( I), o segundo é o endereço úa cndeilt li ~c r inlprcssa lllll'), e o tereeiro é n eomprilucllto d:L cadeia ( 12). As linhus 7 a 9 passam esses parâmetros para a pill1:, na \lrdel1l inverso, que é a seq(iência de ehamadu em C. e que é a usada pelo r;\slrcador. 11. [i11hll I() pa!l~ a paru a pi lha o mimem da ch:unadu de sistema para wrlte (4), e a linha I I raz li chnruada propriamente dita . Enllmnt e~sll "e(liiêu t i.. de eh,un;vJll imite o 1I1od u como um prugranm em linguag.em de montagem propriamente Ililo fun cion aria em 11111 PC UNIX (ou Linux), no CIl SO de U111 sistema opcracio1\ul di rcrente, ela teria de ser ligeiramente ll10dHi eHlla para usar as cOllvenc;ões de duun1lCJn tio ~ i s t e nHI Ilptmciona l em 4uc~ tão . Con1Ullo, tl a ~s\!mblcr OJ88 c o ru~ treadn r 188 USUIlI as ellll"em;õcs uc cllmlladu UN IX aindu ': urna limpCl:l Im pi lhu , l'eaj uslHlldo o ponteiro úe pilha para o \'alor quc tinha antes (lU\! a~ qU:ltro palavr:ls de 2 byles rus ~e ll1 pa.~~ad as para a pilha. Se a ehamad:l write for benH llt·cdida. o número de bytes escritu é retornado eUI AX. A linhu U stlhtrai o re"ldtat!o da chumaua de ~ iHC tl1a :lpÓ~ a linhll I I do comprimento da cadeia origi nal em ex parll ver ~(' a 1:1I:1111;ll1a r!li bcnH lIcedida. isto é. pura ver se lodos os bytes roram escritos. Assim, o .~f(/fll.t de ~u ída do programa ~l'"rá Oquun · uo houver sucesso e alguma OtllfU coisa quando houver rrill::lsso. As linhas 14 e 15 preparam para 11 clKlllladu de "istema exitll:t linhn 16 passando pura :I pilha o .fl(//I/.~ de saída c o c(xligo de função para 11 dlalllilda EX Ir. Note {llle. TIas i ns !ru ~·"t.'S MOVe SUB, o primeiro argumcnto é o desti no e o segundo. iI fome . E.~~a é a cOl1\ cnção usada por nosso ilsscmblcr; mltros nssemb1crs I,odem inverter a onlem. Não h~ nenhuma rôl7iin particular pam Cl'eolher um3 ordem ou fl Ilutr;l. Agorn, VU I11 0~ !enlUr montar e execu!:lr HlloWrltl..ç. Seriio dadas instruções para a ~ r!a ! arn rm n~ UN IX e Windows. Para Linu x, S oJ ari ~, MacOS X e Ilutra.~ vllriullLcs do UN IX. ti pTocedinlcllto {leve ~{' r c~se Il Ci ;lln1t' nt e o lIIe!lIllO Ilue para UN IX. Em primeiro lugar. inicie uma janela de Jlnllllfll de comal1dtl (~ hd1. nu interpre!adnr de comandos). Em Windows, a scqUência de clique!l é, em gerlll , Start > Programs > Aceessorles > Command prompt Em seguida. mude para o diretório e.wmpll,t usaml" (l comando cd(CIHln~ c tlircctory). O : lr~ lllllcll !t1 para t'~se comando depende do local onde o conjunto de rerr.uncnt as rlli colncmlll no ~ i st e ma de an]ui\"lI. Então. \'erifi quc :,:c os binárioS dn as~e rnb l e r c do ra~trcndor estão nesse diretório usando I,~ C11l sistemas UNIX I.' di/" em !listemos Windows. Elcll siio dCllolllinul1os (j,f88 e /88. respeetivamell!e. Em ~ i stc rna ~ Wind ()w ~. eles têm a ('.'( ! e n ~llll.(·\ (·, IWI'\ não é preciso uigitá· la 1I0S comandos. Se () assembler e \I rastreudor niio esti verem ali. você deH! achá los e então copi á- los pam esse diretório. Agm;t, monte o progrll rll<'l de teste usunuo asaa HlloWrld.s
..
_EXIT_ ! wmTE STOOUT _ 1 SECT TEXT rt~ l1 '
M '" eu," I'USU PUSft PUSU
Figura C.5
ex.""-~w
"
~
Sl00ur WAI1E
'" ." ou,
(a) HlloWrld.s. lb) A janela conespondente 110 rastreador.
SP. li eX.AlI M H C, 0\1 ,,"'H
'"
SECl .OATA ~.
ASCII 'HoIIQ W",ld\,,· 00' .BVIE
o
(,)
",, • ,,
'ij,
,, ""SI:
• '"" " """ •
OS-SS ~ ES ·
00
AH :OO IIH ' OO CH-OO 01-1: 00
Al'Oc II L: OO CL :Oc Dl-DO
"" '"' '"
~
o"'
"
" . ",
OX, DOSZ C .,.0004 0001 0000 oc > 0000 IP :OOOc: P .C 0000 0000 IllI ! OOOe 11<18
~
"
AX : IIX :
."
-
"
.",
"." C X . d~ ·~ .. PUS!! e x rUSH HW PUSI! 5IDOUI PUSI ~ WIl11E
'" OU, ""
L,o_w~"," " """""
OOOO: ~II
k
',",
(b)
s r .II
C X."X P USI I ex
>l ftl'o' Wo,!"
, , ,
,,
, ,,"• .'" '' "" '" 2se 28
b
=
SI;: I1 lI!»Clllhlcr c~li\'l:r presente 110 diretório l'..\f/III{lles, no cnlillllO, ~c c)se cornnndo dl!r lIlUU IlIcn:.agCI1l dt! elTll, lellle outru Vei.,
Jigitundo
-
~
Jas88 HlloWrld s em !)i ... Lcnla.'> UN IÀ 011
8
• •c
.\as88 HlloWrld 5
~
em :.i.!olcJllu ... WimJows.
Se o procc ...!>u de Illontagem concluir cun'clU llh! rll C, as scg uintc~ mensagens scrllo aprcsclltudas:
o
:!
Project HlloWl ld .isltile HlloWrld $
ProJ8C1 HlloWrld num tile HHoWrld 1# Projecl HlloWrld loadhle HlloWrld.88.
8
• ,• D
c o ... trê:. arljui\'m ,:o rrcspondenles serão criadnS. Se ntio hou\'er nenhuma mensagem de erro, dê o comando de rn ... lrcaltor: 188 HlloWrld
o vi ...or dtl ru!>In.:udor ap•.n!ccrá com 11 ~C[ i1 nu janela superior direita apontando para a inslnlçilo MOV CX,de·hw
•8
•
PUSH ex o v;.lnr .k ex na jand,l da I:s(luertla agora é 12 , Aperte Ilovamcnh': li tccla de rdomo e oh1>cl'vl.l que a j:mcla tln
meio na lil1l1,. dI! (;Un:. deMa vei. corué:m o valor OO(k, que é hexildecim:.l para 12, E:.su jUllehl mo:.tril a pilha, que agonl lL:1ll L1Ula pal;J.vl11 que eontém 12, NovlImemc. aperte a Ieda de rc\llOlO mui:. tr~s \'eLe~ P;lrõl \cr a I:XC('U~' nU da:. inSlnLlil)(!lo PUSH nas linha:. K. 9 elO. Nclosc POlll.I, li pilha lerá quatro itens c o contador de [lmgrnma Im J:U1C111 eMIUI.:rd;. terá o \ .Ill1r ()( IOh, • Na pr.himu \ CI que 11 teclu dI: retorno for acionada. 11 chamaria de si:.telll:l será CXl!Cuwdll e a clulda " I-Idln WOJ 111\11" ~c rá apf. . ~cn tad ,1 na juuclu inrerior direitu. Nute que, ilgnr.l, SP tcm 11 valor Ox7fm. Após o próximu rclurno, SP é incrcnlL:JLI,.du de g c M! lorna (jx7ft}J. Após U1flÍl> qualro retornus, li chamada de ~ilo l clll a exit ct)ndui e o fUSIn:lldol' ~ai. Para Icr lt' fl C f a de quc \oce entendeu cllJlltll mlo fun..::iona, hmquc ti arquivo /,lIoWrltJ.l elU :..:u edilllr fa\-tlri10. I~ mel hor mlulbM um p(l)ccbudur dc h!xhl. Em :.i~le llllls UN IX. ex, I'i uu elllll':J' :.i'h) buas up.rõc:.. Em !>i~lcmas Windo\\ l>, /wlI.-'ptlll é um e.JilOr simple!>, qUe geral/llCl1h:: pode ser alcançado pnr Slart > Programs
8
•o ~ ~
da linlm 6. Agora, apene a tecla de retorno (Enter em teclado:. dt! PCs). Note (IUC a in:.lruçllo apomada desta vel é
I.l
'"c ~
;>
Accessories >
Notepad
Nàn U M! \VIII " , uma \'el 4L1~ (J display não pareccn\ correio e 'l safda poderá eSlur fot'lnu1:lda im;uITL:talllcJ1!c. r.,·IlKHlique li ....dda HU lmlm 19 pari.l aprc~e ntHr IImil men~agcm direrente, cntão :.a lVc li arquivo, monte-(J c exccute 11 COlll o (;.:.tr.....dur. Agora v•....:ê estií cOllleçundo a fazer prognJlna~lio cm linguagc.m lIe nwnt;lgelll,
C.8.2 Êxem plo de registradores gerais o próximo e",clI1pln dL:monSlra com rnai~ !let .. lhes como os reg islradnrcs são apresenludos e uma das cilmlas
dlllllUhiplicllçàu 11" HOH8. Na Figura C.6, pm1e do prngraJllII gellReg,;) é JIlost ,',uJu no lllcJn e ~ qlJcnl{) . À direita dc~~a Janela el>lãu llurI" j,uh:!lm, de regj~ t rallores cio mstre,Jdllr cOfn.!spondcntcs :1 di rCfcn te~ c:.lágill" da cxecu~'ào do programa. A Figu ra C.6(b) 1l111~lrU o e:.ludo do reg i~ l rador após lt exeeuçilo.!u linhlt 7. A insll1u;ão MOV AX 258 Jl:I linha 4 carrega 11 valor '158 em AX, ' luC rClouhn no curregumcnltl do valor 1 em AH e du vulm 2 em Alo Enlãll, OI linlm 5 :,('1l1ó1 AL f.:UIll AH c AH ncu iguul a 3. Na linlla 6, o contt!lldn da variável rimf'S (lO) é copiuclo para ex. Na linha 7, J) eudt:feço da variávd III/fldl/l , (IUI,\ é 2 pnrqllt! eln c~t l\ 110 ~cgltndu hylc do segmt!ll1o DATA, é cao·cghcla Clll ex. E:.:.c é ti momculu que é mostrado IIlt Figura C.l!(b). NO!!! que AH é 3, AL é 2 c AX é 770, o que era de e:.perur, I>Mque l X 256 t 2 770. A ill~lru\llo ~t:guinle (Iillhu K) copia o cOlllelido IIr.! multlm /)(/1'(1 AX. A)l>im, upó~ u m.:ionamellto da tedu tle !"I,\turno. AX :.erá 625. Agura, c~\l1J ntl!'! prontos paru enlmr em um luço que mulJiplica o cOJ1lel\do de AX pela paluvru endereçada I>or 2BX (isto é, //lI/M,l! + 1), 'lue tem o v'llor 2. O dc~ tinn implícito da instrução MUL é a combinaçi'lo de regbJnldorcs OX : AX. Nu primeira illlcnJçi'lll.lu 1alio, o resullmlo cabe ClIlllma palavra, pOr!,lJ1to AX contém o resuh.1dll ( 1250) e OX perlllanece o. () (;Ollteúdo dt: todos tiS registradores após 7 muhiplicuçõcs é moslrildo na Figuru c.r., Vbto (IUe AX Ctlllleçou em 625, o rt!sultado lIlxís essas sete multiplicaçõcs por 2 é SCl.CKIO, ESse resuhadn não cal)(! em AX, IJm~ \I produto é contido no regblmdor de :n hil S rormado peJa concatemtçào de OX : AX, I>on,lIlto OX ê I e AX é l-lA(H . Em IcrlnOlo numéricos, esse valor é I X 65.536 + 14.4M. (11Ie é. de rulo. 80,000. Note Ijue ex é -l aqui , porque a irhtruçãn lOOP t) decremcntu li cadu iteração, COntO ele começou em lO, após sele execuções da in~ l ruçàu MUl (ma, somente :.eis iterações da illStmção LOOP), temos ex aju"wdo pant 4.
'"o
"
~
u
•u ~
o
..
••o-
Flgur. C.O la) Parte de um programa.
•• o"
"• •
Ib) A janela de registradores do rastreador ajlÔS a
exocução do linha '1. lei O estado dos regisuadoles apó! sete multiplicaçães.
MOV Al108 MOV MOV MOV I,,· MUL
.."
N<>58 AHAl CX.(!Ime'J
15
"" "" ." '" '"
8X.muIdat
M(BX} 2(BX)
LOOP ""
.SECT DA'A .".. WORO la ml,ll(lal ' WORO 615,2
l al
~
8 o u
...
1 13
es . oo
DS .. SS . ESOO2
A11 :03 AL :02 8HOOBL02 CH 00 CL :Oa
AX '
,
no
"
ex ·
"o
[ SP " '00 OLOO OX 7feD SF OOS ZC BP : 0000 cc . ;> p . • sr · 0000 IP Q009 PC OI 0000 flllI! . 4
--
-
(b)
-
es
00
DS"SS .,f"SUa2
I
3~
" L Ba AX 1>1484 0 0 BlO2 OX 00 ClQ4 ex 00 DI. :Ol DX sr 7"10 SF o os ZC lor 0000 CC • >O $O 01100 IP 001 !;P C , 7 01)00 AtI Dtl CH OH
:1 ,
[o,'
.,,, ,, ,<,
Na lI1uhiplicôlÇão seguinte [lparccc o problcnw . MuHiplicaçiio envol ve AX, 1I1 a~ não OX. por1;lnl0, a MUL l11ul -
• "•
tiplica AX ( 144M) por 2 para obter 28.Y2B. Isso resulwllo ajuste de AX para 28.928 e de OX para O. li que é incurrelO em tennos numéricos.
,
C.B.3 Comando de chamada e registradores de ponteiros o próximo exemplu, \·eqJlvd..f ~ 11111 pequeno progr.mH\ que calcu la n produto i,1Iemo de dlli~ \"etnrc~. "('d e
" w
,'re2, A listagem do progmllw é mustradn na Figura C.7.
",•" "
'•. o
~
"
d
•
~
o"
A primeira parte do programa prepnra pam chanlllr ,'rl'lIm! salvando SP em BP e então pa~sandll O~ endcreço~ de 1'('c2 e I'r.{·! para a pi lha. de 1I10do que: 1't'cwlIf!le ni acesso a eles. Então, o comprimento do vetor em byte~ é cnrregado CIl1 ex IHI linha R, Desloclmdo esse reillll"llJo um bil panl .1 direi!n, 1111 linha Y. ex :'gora contém o número de palavras no vetor,
vecmul(eount, vecl, vec2) Durante n imilnlção eAlL. o enderec,'o de n:turno é p""sauo ]JôlTll ;1 pilha. Se o progr:IIIH1 for nl'\trendo, entãu que es~e endereço vem a i'õer O)({JO 11 . A prirnt"irn instruljiiu na l'ub-rotina é UIllU PUSH dn ponteiro de base, BP. na linha 22. BP é \;l1\'u pot'que rn.' · cisarc lIl\l ~ Ite~~e regis trador pnnt entlerCI;lIr os nrgumelllUS e a~ "nri:hei .. locai" da s uh· rotina. Em ~cguid:t. 11 ponteiru de pilha é copiado parn o regis trador BP na linl1n 23, de lIIodo que (I no vo valor do pont eim de ha~c c~tá í1IMIII tando para I) vlllur lII11igo . Agm" tudu cst(, pronto p;lm carregar os ar~ulII('ntus nos rcgi~tI'UI.Jurc..'i e para re~en'ar c ~ paljo p:im ullla \'t1ri('vel lucal. Nas três linha ....eguintes, e;tda um dos :lrgll1Uentos é bu~cad(J na pi lh:l e colocado em UIll regi~tradllr. [ ,ci llhre-'ic de {Iue a pi [Im futll.:i\JIw eom palavras, p{lrtanto, clIlkreços de pilha develll ~er pilrc ~ O eudere~'o de retor· no e~ t (, ju nto ao pouteiro de hase :mtigo. assim. ele: é endereçadu por 2(BP , . O argulTlento f·""III "elJl em se)!uid .. e é eI\(Jere~'ado por 4(BP). Ele é cUITegado cm ex Im linha 24 . Nas linhas 2.'i e '26. SI lo! cHlTef!:It!n Cllrll \"r'c/ e DI f: 1..'1IrreglllJo eOIll "f'("2. Essa sub-rotina precisa de uma va riável local com valor in icial O pam ~n l \'nr 11 re"ultllllo imediato. ("0111 e"slI finalidade, o "nlur O é pa.~~adu panl ti pi lha na linha 27. O c"t:ldo do pruces~l.Idur I}{IUCO ant e~ tle entrar pela primeira ve1. no la~'(l na linha 28 é mo~tmdo 11:1 Figuro C.lt A j:11Ic1n estrci t.., no JIleio da 1i1lha du IUpu (~ d ireita dos regi .~ t r"d o res) mostra a pilha. Na p;trte de nuillll da pilha está () eudcreço de \"l'r2 (0)(0022). eQ1II 1'''(, J (0)(00 18) acima dele e o terceiro argumentu, o mimem de itens em c:lda vetor (Ox0005) acima desse ültirno. Em seguida vem endereço de retomo (IJx(XII 1). U IHlmem I à e'\qtlenla de~se cndereçu indica 4ue cle é um endereço de retomo:t um nível do pm~rama principal. Na junela uhui.w dos legi'\tmdmes, o l1le~fTlO mimem I é mustrmlo, de~'\a VC7 dando seu enderC\'o simbólico. Acima du enderefjO dl' rewrt\o na pilha está n ;ll1tigo valor d e BP (thOrcO) c então (l7ero passado 11;\ linha 27 , A set;1 que apont a pam e~~e valur lmlica para onde SP aponta. A jllJ1e[a ~ direita da pil ha tlIOiltra um fragmento do texto do programa, com a ~etu imlicando a pr6l1ima in .. truljão a ~e r e,. ccutada . Agora Vl\llItl~ eX;Ul1inar o la~'() (11Ie cOllleça lia linha 2R. A il1stnt~'ào LaOS cnrregu lI111a pala,'ru til' I1lc111ória indiretame nte para AX. pur me i\) 1.11..1 registntdur SI a partir do segmento de dados. Cornu o nag de dir~ã() está I1jllstmlll, LOOS está em rncxlo dc :1l1l0 incrementu, portanto, alKls o instntção SI apontará paTa n pTÚ;(il1ll1 cl1tTlld:t de I"ef'l . Puro ver csse~ efeitos em modo grMico, inicie 1\ rastreador CO!11 " comnndo "erernll~
°
186 vecprod
Qunndo u janela do rnstre:tdor "parecer, digite o C{)Inundo lvecmu!+7b seguido de um retomo pam colucar um 1>OI1to de parada na linha que contém Laos. De ogorl1 em diante, não men · cionarcmos
,
para que tJ ro.l~trendor CXt!cute têun\U ndos até v ponlll de p:trJda ser elll.:Ol1tl":ldo. Ele vai parar nnlinha
...,
b
EXtT
I I I I I
.1
PAINTF • 127 .SECT .TEXT
inpstan: MOV BP,SP PUSH 1Iec2
I 6 passe ando/aço de vec2
PUSH EXIT SVS
v6Cfflul. PUSH BP MOV BP SP MOV CX,4(BP) MOV SI,6tBP} MOV DI,a(BP) PUSH
1.
121 InIcio de vecmul(count, vecl , voc2)
•o •• • E •
MUL (OI) ABD -2(BP),AX AOO 01.2
! 28 129 130 t 3t
SEeT DATA plrnt; ASCIZ · ProdulO Imorno 111 : 0lood\n' .AUGN 2 III1CI WOR03.4,l, t' ,3 1Iec2 WQRO 2,5,3,1,0 SECT BSS lnprod. .SPACE 2
l~sM8P
MOV BP,SP
MOV eX.4(BP) MOV 51.8J8P) MQV OI 6(BP) PUSHO
1 LODS MUI. (DI) AnO ·2(RP) .... X AOO 1"lI2 LOOPlb
I
E
copie SP para BP para acusar argumentos ponha contagem em plua controlar laço SI .. vec l Dt .. vec2 pasSfl O para pilha
ex
mova (SI) para AX muluphquo AX por (DI) Some AX com valor acumulado na memória If'lClemente OI para apOnl8f o próllullo elemento 132 se ex,. 0, 1I0lte ao rótulo , I 33 Retire topo da pIlha jlara AX I 34 Restaure 8P I 35 Retoma (la SulHotma
RET
Execuç.lo de vecprod .s
'"
o
LODS
POP BP
quando clc alcança a linha 28 pela pnmerra vez.
o
chame vecmul mova AX passe resultado a sei Impresso passe erw;lereço de cadela Oe formato 115 pau. codlgo de lunção pala PRINTF t 16 chame a lunção PRINTF I 17 limpe li pilha I 1H passa código da Slalus 11 9 passe CÓdigo de lunção para EXIT J 20 chamo 8 tunçAo EXIT
I 22 salve 8P na PIlha
lOOPlb POP AX
flgur. C.H
~
•c
I 11 I 12 I 13 I 14
I 23 t 24 125 ! 26 t 21
MOV IIP.SP PUI;H".a PUSHvlIC1 t.IOV eX .....::!·....:1 SIlR CX.1 PUSHCX CAu.. vllClTlUl
•
I la passe contagem de palavrs
PUSHO
O programa vec-s
E
I 8 ex. numero de bylas em lIetol I 9 ex. numero de palavras Itrn \/alor
MOV CX,vec2-vecl SHA eX,! PUSH ex CAI L v8cmul MOV (inprod),AX PUSH AX PUSII plml PUSH PRINTF Svs ADO SP,12
])(00
...
! 7 passa endereço de VIIC 1
PUSH vecl
figura C.l
M M
1 defina o valor de EXIT 2 dallns o valor da _PRINTF :3 Inicie o saomenlo TEXT 4 dollna rOtulo Inpslart 5 salve SP em ap
136 I 31 I 38 139 140 f 41 t 42
Inll:18 seomento DATA defina cadeia tosce 6ndareço par vetor 1 11810r 2 Inicie segmento BSS aloque espaço para InprOd
J
1 ~ 'cs . oo OS. .. SS.ESOQ4 pUSHap o ~IIP , SP I 8 I AHOOALOOAX RH 00 8L :00 ex o t.OV cx "BP) t 7 I .~oooo ~ 8t .• (8P) I 8 C H.00Cl.05 ex : OHOO Ol:OO OX o 71eO 1/01 O t. 8,RP) ! , P\JSH 110 SP 71b4 SF o os Z c t 00 11 0005 .. ~t : LODS I 11 OP 71ba cc . ~ p z SI OOU IP0031 PC 0018 1 MtJL (DI Df : 0022 ""emul .7 002"'1 _ _l"",,,,,~- 21IlP).AX
I,~~
123 124 ' 2!i ! 20
.. 001& : :1
o 'O
o b o
..
~
o
"
u
•u
"c
'.
o.
<
'" '" ,
~
'" ,'"" '''''"
..
\ "" Inp"Ul , 7
, '27 vUl,O 121 v.d.O !2' [ PI"'1 ,o !30 plm1t1l 13 1 1312 '
~
,,
,, 0022 2 o 15 li :I li 1 o " 0000.501 M 6S 20 lIlI 111 20 10 Th, '" prod 215701 . 0012 25 &oi 21 • o li :I o '\ó d l 25837
Na linha :10. I ) Inullado é adidon,1(!o à variável local no t:tulen:ço de pilha -2(BP). Como MUL não aUlo-incremelltá ~u operando, i:....o d.:\'': ~r fci lo cxpl ieitan1t:ntc na linha J \. Logo depois, DI aponta 1>Ós o laço, a suh-rotina retiro da pi lha ti v:ilor de re tomo p,lra AX (Imita 33), re:.UlUm BP (linhu 34) e volta para o progmma chamador (linha 35). Etttiin n pntl!r
....'" ••
MOV SP,BP
para lirnp:lf a pill1:l. A vnntagelll dessn soltu,;Jo é que tl prognunadur não precisa manler li pilha hal'Hu.:cad" no processo. Para o prognullu priru:i pul isso nã\l é grande coisa. mas em sub-rotinas essa abordagem é um modo fácil de
jogar fora o lixo. lal C0l11l.) v
ror
,
8
A sub-rotina I'ecm/fl pode ser incluída em outros program:ls. Se o :mluivo-folltc l'e('p,.od..~ colocado I1U linha de com3tuJo atrás de outro arquivo.route do asscl1Ibler. II sub-rotina estará disponível para 111ultiplkat;ão de duis vetores de wmprimclllo lixo. É aconselhável remover antes as definições de CtJl1.~t:llltes _EXIT c _P AINTF. tle modo a evitar que elas sejam delinidus duas ve7.CS. Se o arquivo-cabeçalho ,Iyscalllr.h c~tivcr im.:lurdo el1l alg.urn lugar, então n1io há neçcssid:uJe dc defin ir us çonstunlcs de Chlllll
•
C.8.4 Depuração de um programa de impressão de vetores
• •,
Nos exemplos anteriores, os prognlTlJaS exam inudos ermn simples. porém corretos. Agor'l vnrnos mostrar como o rastreador pooe .tiutJar a llcpumf pmgranms incorrctn~. O próximo programa (leve imprimir 11 ve t ~lr de inteiros. (IUC é fornecido apó.~ o rótulo \'t'C'I. CtJl1tudo. a versão inkinl contém três erros. O :I~scmhkr l' 11 r;I~trcadnr <;erão usados para corrigir esses erros. pori!ru. antes, \'amos di scutir o códigll Como l'ada programa precisa de chamadas de sistema c, por isso. devc dclinir co n s t a nl e~ pc ll1~ qllai~ idemifiC:11' os números das challludas, colocamos as definiçõe.~ de constantes para esses números em 11111 arqui vo-cabeçalho separado ..I:,)·scall1f'.h. que é incluído na tinlHl I do código. Esse :IHI Ui vo tlll1lbém define 11." c{)n~tantes p;lI'H os descritores de arquivo
"o
~
,• ~
o u
~ ~
, "
•
~
o ~ ~
• C • N
~
o"
STDIN '" O STDOUT - 1 STDERR ~ 2
que são abertos no infcio do proccsl'o. c rótulos de cabcçalho pura n texlO e (I ~ R~gllle ll tu~ de {! ad o~ . I~ l'eT1~at(l induflo IlO título de todo~ os anjulvOS-follle do asselllbler. pOrlllle essas definições são muito u s ada ~ . Se umu runte ror distribufda em mais de 11m anll1ivo. o <1~semblcr indui somcnte a primeira ctípia desse arqui\'o-t:abeçalho paru evi tar dclinir as constantes mail' de lima ve1.. O progmma arr(/)'prf é mostrado 11:1 Figul':l C.9. Os comentários fora m omitidos aqui. porljue. nesta altura, as instruçõcs já devem ser bem conheeidlL~. Portanto, pode-se IIS!lr um fomlato de duas coluna~ . A 1inhn 4 co!U\.:n tJ endereço da pilha val ia no registrador de ponteiro de bllse para pcmlitir que 11 limpem du pilhn pOSS8 '\er feita na li nha I () copi:mdo o pOllteiro de ba~e para n IX)rlleim dl' pillm. COltlO dcscre\'ell1\lS no e.'temph! nnlcrior. Tamhél11 vimos () cálculo e li passagelll dos 1ll'gulllcnlOs da pilha antes da chamada nas linhas .'5 a <) nn e;>,cmplo antcrior. 1\ 5 Iil1lms 22 a 25 curregalll tiS registmdores na ~uh- mtinn . I\s 1;1I11as 27 a 30 1110511<1111 como a cadeia podc ser impressu t' 3 1 " 34 moslmm li chamada de !i i~t c ll1n pllntl paru um vilJor inteiro. Obser\'e (llIC () c lldcrc~'o da cadeia é pussado para a pilha lia linha 27. enquanto 1\U linha 33 o \'alor do inteiro é puss:ldo pam u pilha. Em ambos os casos. o endereço da cadeia de formllU) é o pl'Ímciru argumcnto de PA1NTF. I\s linh[l~ 37 li 39 tlU lS!r;lm COIIIO tini línko c:lrllclel'e pode ser impresso usandu n chanllltla dc !ii ~ h.: ma putchar. Agora. vamos Icntar montar c cxccutar o progr:mlil. Q uando o comando
asSa arraypr1.s obtclllo~ UI1I erro de upcrando na linha 28 do arqui vo l/rro),fJ!'f.!. Esse urquivll é gerado pcll! a~ ~c lllhlcr COlllbi n
é digitado,
~Include
".Jsyscatnl.h"
.SECT .TEXT
o programa arrayprl anles da depuraçãu.
2 3
PUSH vecl
,,
MOV CX.!rmatslr·vecl SHA ex
7
vaepslrt: MOV ap.sp
fluura C_H
I I
PUSH ex CALL vecprlnl MOV SP.BP PUSHO PUSH EXtT
svs
.SECT .DATA
vecl ; WOR03.4.7.11.3 I,,"als!r: .ASCIZ "%8 "
• •
9 10 11 12 13
'" li'
116
rrmalkop: 117 .I\SCtZ "The array conlains " 118 Irmalint .ASCIZ " %d" 119
.SECT .TEXT vecprlrll' PUSII Bi> MQV BP.SP MQV CX.4(BP) MOV BX.6(BP) MOV St,O
PUSH Ilmalk.op PUSH Ilmals!/ PUSH PRINTF
120
121
'"
123 12'
12' '26 t27 28 29
svs
30
MOV -4(BP),l!metlnl MOV DI,(BX)(St)
" "
MOV -2(6P),01 " svs
32
LOOP lb
34 35 36
PUSH " n' PUSH PUTCHAR
38
SVS
:19
MOV SP.BP ROT
"41
INC St
37
".
.,.,I
• '. Um modll f,k.1 dI!
i.dlllf li
linha 28 dr.: al'''''yp,."S'':111
~i~ l cma ...
UN IX é digitur o comando
head 28 arrdyprt.S
Ijut.! aprc:.r.:nltl
iU.
rJ Illleirm. ::!R linha... do arquivo comhinado. A linha (Iue CSI:llIII finu! do li ...lilgcm é tl que c:.l:I crra
tia. DeSse mudo (ou lballeln 11111 edi\l)( c indo llIé li linha 28) vemos q ue o erm e~ l á na linh a 7, CJlle cOlll ém .1 ln:.ll11~ão SHA. A cUl1Ipal',lçl'lo desse código com n tuhela de il\~ lru yõcs na Fi gura ('.~ JllllS( rJ tl problema: a cunlugcill do .lc ... ]ntllU1Cllhl fui omitida. A linha 7 corrigidil deveria le r SHA
ex,!
E
•o
•o o
É mui ti , iJllpllr1i1I11C ohservar que tl clTn ,reVI:. ...cr corrigido no itrquivo-folllc nriginul, {I,.myl'n.~· . c mio /la fo nte cumbi nmln (/rm)'J1I1.$. pnrqut: esse .\lIil11o é nulOmal ical1lCnle regenerado toda vez qUI,: n lIlo.'>cmbler é chamado. A pnhi ma Icnt,uivÔl de lI10ntar u urqUlvo de cócligo·fllrllc dCH! IIcr bem-Mlccdida. Emão, o falltreadur pode IIcr inicillllu I}I,!IIJ cnma mlCl:
~
•
"S
•o •o o o
188 arraypr l
Dunutle \I Jlml..c~~ u dI! r.I ~l rCarnCnlu, podcmos \'er lluC 11 lI:1fda não é conll i ~tcn te COIII o vctllr no segmento tio.! dados. () vc.lnr Wtl!L'UI: J, .1. 7, 11, 3, nl"~ os I' óllorc~ aprc!lcnlados cllme~~am com: 3, 1.024, .... Il claro que alguma coisa cliolÚ errudll. Ilara :u:har I) crru. 11 ra .. trcador potle scr cxccut:ldo mais uma \'el., paliollo li fXl!Õ),O, I:!Xlllllinando o c:~tadl) tlll máquina pom:lI iUllc~ da imprc!Ios1Io tiL) valor incorrctu. O valm a !Iocr impresso eSlá imnazcnado na mcm6ria nitS linha, 32 c .H. Uma ICI quc (l valm errado c~ li'i sendo impres.so, e~~e é IIIH bom lugar p,lfa ver o que cstá errach Na .)Cgullda \'e/. que Ilt:n:onemoll o Iw,;II, leJlltl~ Ijue SI é um mímero impar, ' Iuando e~tá dam que dcvia ser um número par. IXJrI]lle ele é cmlcreçadn por rndll de palavras., c nau h) les. O prohlema e~lií na linha 35. Ela incremenla 51J~ I ; delll!l ia iII..:rclllcnl ,1- lo de 2. Para cC'nseL'lar ('I hug, e~s" linha deve ser aher.ldil paru
s
•o
..•
~
••o" o
"
~
AOD $12
Are'" falei c~:." ct\ r".:~:f1t1, li Ii ~ t a de Il\imero~ illlp rcs~:L e~!Urá cC'm!la . Tod.lvia, há n U11), 11111 erro à Ilt)s"a espera. Quando \·t!c·prim concl ui c retorna, o rastre"dor se cjucixiI dtllxmlciru de pill t:1. Por cntju,lIItu, (I 6bvio é veriticar:.e I) \'illnr pasloudo paru a pil ha quando \'1'("/"·;111 é chamado I! o v:l lm que c ... ta nu IUPU da pIlha ljUIlIU]O n RET na linhu 41 é execulado. Ni\o é. A sol ução é s u b~ l ituir iI linhu 40 l)('Ir duas Iil1ha~ :
••
." o
~
<
AOO SP,10 POP BP
A primcil1l ilbll U'iiill remove as dllCU pahl\'fa ... pÕc o \,.. Ior tle BP ~alvlI naJinha '11. lü:tir.U1do esse valor para BP, restaur:mms BP:IO valor que tinha antes da chamada c cXlxlmm 11 elUlclc\,u de r.;tOI11" CUrrt.:tll. Agora, 11 progmma conclUI curretamente. nepllnl~ão de cÓtligo de lIIulI\agl.!l1I d, por ccrh1, mab. ,u·te Ito que dênd fl, m
C.8.5 Manipulação de cadeia e instruções de cadeia A principal fin alil hnJc dl!~ta seção é rno~tr.Jr como munipulur instnlçõcs de cadeia repclfveis. Na Talle la C.l 0, há doi~ progrmll .. , ~illl pre~ demallipuluçãodeclIlIeia. slmgl.pY.l. e I"eL1erJI'I".s. amhos presentes Ilnllirel6rio t.\'tI/IIpfes. O da T:ttJcla C.IO(u) l' uma ~lIb- rotina pam copi ar uma cadeia. Ele chamu uma suh-rotina, .wdllgpr, quc também pode IoCr encuntrodu I.!II1 11m :m]uivo i>Cparudo Mri",IJIIr.l'. Sua li~tagelll n1l0 IIpar\!cc nesse apêndice. Pam montar progmmÕls quc contêut ~uh- rnlllla~ em anluiv()~.fll n t c separudos. ba~ ta relacionar IOdos os arquivos-fonte ntl cOIl1:lIIdo cl.\'88. cUIHI.!~alldo com o ;uqui\'u· fnlllc para o prugmma principal, que dctcnnina os nomes do nrcluivo exeeutável e do llrclll h ti auxiliar. Por cxcmpln, pam o prngmma dll Tabela C. IO(a) u!te asS6 slrngcpy.S
u
~tringp r . s
O prugrallloJ d,l rabcJu t:. IO(b) prudu/. safclrl de cadcia~ em ordcm ilt\·e~lI. Vamos examiná-Ias lima por vC"J.. l',lnJ dcmulI~tr... r que Ul> n úmcro~ de linha ...lo, r\!lIll11Cnle, apcnas comentários, lia TabeliL C.I O(u) lItuneranltls illI Jinl ms ":Illlleçaudo WIII o primeiro rótulo e om itindo o quc vem fL ll tes delas. O programa prim:ipnl. nas linhas 2 11 8, primeiro challla 1/1'1181'/))' cum doi ... argumentos, a cmleia de fonte, me~82 , e a cadd a de t1e ... tinll, Ir/t'l!(/. na urdem, pari! ellpiar a funte para o destino. Em ~eg Ul da, \'al\lU~ cXiUninar Slf'Il!(cpy, começando na linha 9. Ela espera que os endereços do ImJJer de destillu e da cm.lda de (tllIl\! h; nharn sido pallsados para a pilha um pouco antes de a stLh· rotina ser chllmilda. Nus linhus lO a I J, os regl~t""oJd llrc!> usados são sal\'o:. passando-os para li pilha, de lIIodo que possam ser rcslaurodos adillnte na ... linhas 27 a 10. Na linh,r 14, copiamos 5P para BP tio modo USUlIl. Agora, BP pode ser usado pura carrcgar m argLlll1cIIIO~ . Mais unia \'Cl, 11:!li nha 2tl, limpamos ,I pilhll copiando BP pllra 5P. (I coração da Mlh-rntina é a instnlção AEP MOVSB, na linha 24. A inlltntção MQV58 move o byle upontado pelo SI para o end\!rc.yu de memória apontado pelo DI. Elltilll, ambos, 51 e Dl, ~1Io incrementados de I. A REP ..:ria um IU\io no '1"al e~ ~" 1Il~lruçao é rCI}Ctida, dccrelllcntando ex de I pura cudu hylc lIlovido. O ];1\i0 é e ncerrado {juandn ex chegn a ()
--------==~~~-~
..
CD
SECT TEXr stestar!. PUSH mesg\ PUSH mesg2 CAl l slmgcpy ADO SPA
M
•"
· "•
PUSHO PU$H I
o
5V5 stmgcpy: PUSH ex PUSH SI
"
~
•
o u
PUSH Dl PUSH BP
•
"• "• " "
· "
~
o ~ ~
• •m
o"
·
o
Flaura C.l0 (a) Copie uma cadeia Istmgcpy.st.
Ibllmprima uma cadeia na ordem inver58Ireverspr.s!.
MOV MOV MOV MQV
BP,SP
AX,O 01,10(8P) CX,- 1
AEPNZ SCAse NEG ex OECCX MOV SI, IOtSP) MQV 01,12(BP) PUSH OI REP MOl/S8 CAlL slringp' MOV SP,BP
POP BP POP OI
por
POf'
RET
SI
ex
.SECT .DArA mesg l : .ASCIZ "Have fllook\n' mOflg2: ASCIZ "qrsl\rl"
I 1 I2 13 14
15
Ii'lnclude 'J!yscalnf.h"
! 1
51art MOV DI,slr PUSH AX MOI/ BP,SP PUSH PUTCHAR
,I 2
,
I , 15
Move AL,,"'
"
17 18 19
Mov ex,"
17 "
AEPNZ SCASB NEG CX
18
! IO
5TO
111 112
DECCX SUB 01,2
110 111 112
'"
114 115 116 117 116 119 120 121 122 12' 124 125 126 127 126 12' 130 131
I 9
MOV 51,01 1: LODsa MQV(BP).AX
li'
'"5 11
5V5 lOOP lb Mov e (BP).'\n'
5V5 PUSHO PUSH EXIT
5V5 .SECT DATA slr: .ASCIZ ' ,ftVerse\n"
116 117 116 119 120 121 122 12'
'"
132
133 134
.SECT .BSS
I.)
Ib)
EmrelarllO. an tc~ de poderrno~ executar () 1"\'0 AEP MOVSB. temos de i1ju~tar os reg.i"trad(lI'c q • o flue é feito nu" linhas 15 a 22. O rndice de fo nte. SI. é l;tlpiado dn argumento na pilha na linha 2 1: (I (mlke de dc~tiTl(). DI. é ajustudo nu linha 22. Obter (I v:rlor de CX é mais complicndo. Note que o final da catleia é imlicad\l por um hyle 1.eru. A instru,ilo MOVSa nào afeta O O:lg de 7crn, mus a in~lrução SCASB (exam ine c:ldei:1 de bytes) afellr. I;la l'ompar3 () valor apontado por DI com o valor c rn Al. e incremcnt:1 DI durante o processo. J\lf m du mai". ela é repetfvel, comu MOVSB. !'orlanto, na li nha 15 AX e. I>orconseclilêncin. AL. é limlxl. na linha 16 {1 pontcinl pam DI é hU~l'ildo rm pilha. e CX é inicializad u para - I na linha 17. Na linh:1 18. tcrnm a AEPNZ SCASB. (Iue fa 7 a comparm,:no no C(Jllte,to do lm,:o e ujusla o nug \Ie ;rero em iguuldadc. Em cnda ewpn do 1;1~O, CX é t1ecrelllcntudtl c ti laço pMa qmllldn o nng. tle zero estiver aju ~ tado. ponjue u REPNZ veri fi ca ambos. () nug de zero e CX. O númcro de ctllpas pat;\ n I:Wn MOVSB agora é cu1culado como 1\ diferença entre li valor corrente de CX e () - I 1l1lterior na ~ linhil~ 19 e 2U. O rato tle Ser lIecc"sário duns instruçõcs repct f"e i ~ lIlríll'lllha. mas e~~ é o prcçn de optar po r um projelo no (11131 mover in ~lnr,ik:s nunca areIa cód igos de condição. Durante os laç(l~, os rcgi s tnrdorc~ de fnd icc~ lê m de "cr im:l'clIlcntndos c. com essa nnalidudc. é necessáriu que o nug tlc dir('çao esteja liherado. A ~ linhas 2:\ c 25 imprimem a cadcia copindu por meio de uma sub-rolillu, sIrinl!:fII'. que está no dirctóri o t'XIIIII/J/tS . Ehl. é dircta e não será discutida uqui . No programn de impressão e m ordem lm'ersa, mo!'tr.ulo lia Tnbeln C. IO(h). a primeira linha inclui ()~ lllí1llcros usuais de chamadas de sistema. Nu linha 3, um \'ulor fictkio é passudo pam (l pilha e. nu li nh u 4. o ponteirtl de h: ..~e. BP. é obrigado a npllnlnr para u tupo de pilha ctJtTcnte. O prograrml imprimim clIrn; tercs ASC II UIIl ]lor um. a",sll11. o "'olor numérico _ PUTCHAA é pa ~~:uJ{J para !l pilha. Note que BP upoJl!a puru U CUl'!Il'tcre li ~CT' im)Jre~~o qUlmdo é reita ullm chamada SYS. A s linhas 2, 6 e 7 preparam os rcghlradores DI , Al e CX para ri instrução repctfvel SCASB. O regi~lr:ulur de contagem e (l fmli ce de destine, 1' i1(l carregados de modo semelhllnte ao da rotina de cópia de cadein. Illas n valor lIe Al é I) caractere de nova linha. e m vez do valor U. DCl'~e maneir:l ,
".
o comandul.\/I L:tllncará a cadeia SI ,. 110 campo de dadus do ra"!rCiulor. Umu vez I[IICn valur IllUlIérico do elldcde dados tamhem t! dado, rodell1os descubrir como os regist radores de índices funcionam por meio dos dados rdi.:n:llte~ fi p\l~I\;ão dOi cadeia. TocLtviu, IJ hug t! encontrado ~ó apól> acion;!T a Ieda de retorno muitas vezes. Usando os comandos do rastreador pOl.h!rnOl> chegar ao prohlelllli com maior rapidez. Inicie: o Tust reador e dê o comando Jj que nos le:vará até o meio do laço. Se agura dermos o comando b , estabelecemos um ponto de parada n es~u linha J.'i. Se dermos duas nOVil~ linha~ , então \ elllo), que 11 lctra fi nal e eSlá impress;1 no camllO de saída. O comando r flI nnt erá o rastre:ldnr eKecul:\ndo uttÍ ~er erlCImtrado um ponto de parada ou o li nalllo proces~o . Dess~ modo. pod~mos percorrer as 1etrilS daml!, II com I.;olncar li pOllh..l dI,! pnrada em uma linha específica, mas, cncâo, dcvcmos ter Cllllllent e (lue (I .lHluivo..l.\)".I'f'Id",..! induído, o que provOCtl um deslocll mcnlo de 20 nos mímeros dl.l!\ linha~. Por cO!1se(!uêneill. li ponto dI.! panlllu na linha 16 pode ~er e~ lahcle e ido pelo comundo .MIJ. Essa solução não é elegante, pm111nlO é IIIllito melhur u~ar o rótu lo glohal JI(II·' nlllinha 2 ;lJile~ da in~truçàu e dur o c(l mlll1do /~·lIIrt+ 14/J, que colocu o pontu de [lllrmliL Im me~llIu lugar !\élll lcr de IHOllitorlll" o t.ul1:1nho do arquivo incluído.
.....
C.8.6 Tabelas de despacho
•o ••
re~o
...
M
"••'" c
o
" 8
• ,•'"
'"c 8
Em v<Ína~ linguagens de prõgramução existem declaraçõcs ("(lse ou .tLLljlCh para selecionar um linho enlre diversas alternativa:. de acordo COJll a[gum v.dor llumérico de uma vilri ávd . À~ vezes, es~es desvios muhivias Imnhém silo m:cesslírllt~ em progr:u lla, de linguagem de montagem. Imagine. por ex~mpl{l, um cnnjumn de suh-rotinas de cl1iLIl1;l(la~ de :.i.<.lemH combi nadas em umu única rotilli! 11(: cxceçãn SYS. O programa j llmpll)I..~, apreseut:ldo tia Figuril C. [ I , mu~ l l~L ": 01\10 eSsa CO I\1UWç~O mullivias pode &OlltoS. Esse valor é copiado para BX. Na liuhu I M, li ill ~ 1ru çã\l AND lIla~..:ara 1UJo, exceto os qualJ"ll bits de ordem baixa , o lJ.ue deixa um nú mLlfO Llntre O c. JO (pdo filIO de que u (j elH ASCIJ é Ox10). Uma vel. que vall\u~ indLlx:tr para uma tabela Jc palavra:., em vel. d~ bytes, \I valor t,!m BX é multiplicado 111.")1" dois usando o dllslocalllenlU p:lra a ~~qllerda na linha 19. Na lUlha 20, teulO~ uma in:.truçiln de chulllada. O enderc\:o efelÍl'o é cncoJltrudo sn nmlldt)- s~ o valor de BX '!LI valor numJrico do fOtulu IltI, e o contClído desse ender~ço composto é carregado no conllldur de progriuml, pc . I.h ~e prngr:uuH I::~co lh e uma lias dez suh-rOlinas de acordo com um caractere qu.:. é buscado na entracla padriltl. Cada uma de~~a~ ~uh- rOl in a ~ p.t:'Sa u cnuerc,"o de 1Ilgu/IIiI mensugLlIl1 para a pilha c entilo ~il1til pam uma chamada uc s i ~tcma de :.ub-rutiua _PRINTF que é cOllljlnL"tilhada por uxlus das. Para entender o que está acontecendo, precisamos eS1:lr cicnles de que as inslru çõ~s JMP t! CAll carregam algum tlldcn:ço do ~ egmen tn de texto em pc. Tal endereço é apenas um número hinário, c dunmte o proces~() ele montagem t{)do~ m endereços silo suhsli tuídos por seus valores binários. Esses valores hinários podem ser IlslLClos pilril iniciiL li"ar um vetor no segmento de dildos, e isso é fe ito na linha 50. Assim, (l vetor que começa em/b/ comêm os e l1d ereço~ d!,! início de /"0/1/0. rollll, /"Ol/12 e assim por diante, doi s bytcs por endereço. A neces~id ..de de e nde rcço~ de 2 hytes ex plica porque precismnos do deslocamento de I bit na linha 19. Uma tabela desse lillO l:OM uJ1la ser tlennminadtl t:llJela de dcspudw. O modo cnulO e~~a~ rotinas fun ciOnnm pude ser visto na rol ina ermll nas linhns 43 uté 48. ES.~:I rmina tnllU o C;IM. de um dígi ll) fL)n\ tle :l lcitJlcc. Em primeiro lugar, o endercço da me n ~ "gl.!m (e m AX)!! passadu para 11 pilha Im linha 4]. EIl1~o, LI mimem da chamada de sistema _PRINTF I! passado para a pilhn. Depois di sso, a chanwda de sistema.! ri!ita, :t pilha é limpa e a rotina retorna. Cada uma dus outras llove rotinas, roulO ;Ilé /"OuI8, cflrrega os endereÇOS de :'Ulb mcn~i.l),(elb privudas em AX, c então s:L ha para a ~egund3 linha de tmmf para produzir a snída du IllCIl~!Lge m c terminar a ~ uh - rol iLltl. P.tra você ~e :l\!ost ulll:Lr com ':tbelas de despacho, o programa deve ser rastreado com vários caractere~ de entrada diferentes. ('omo exercício, o programa pode sl.!r alterado de um modo tal que ICIClos os caracteres gerem uma ução SCIl ~a la . Pur excmplo, lodos os camcteres que n1l.0 sejam dfgitoS octais dev~m dar uma mensagem de erm.
~
•8 •
'""o
~
°
C.8.l Acesso a arquivo com buffer e aleatório
o
programa IId'-il/luf. .\', mostrado na t-:igunI C. 12, demonslr:t EIS aleatória em arquivos. Presume-se (llte um arqu ivu consista em certo mímcro de linhas, e linhas diferentes podem ter compri m en\O.~ direrentes. Em primeim lugar, o programa 113 o arquivo e montiluma !:thela na quo I ,I cnlracla /I L! ti posição do arquivo na (Iual a linha /I começa. Logo ilpó~ , a li nha I>ode ser requ i ~itnda, sua posição consulladll na I:lbcla e iI linha pode ser [ida por mLlio de cha· mad
•o
..• "d
~
<
00
Itinclude °.Jsyscalnr ", I , .SECT ,TEXT )umpstlt: 13
'" ot'
•""
,.
o
"•
o ~ ~
• " •"
~
o"
I1
SVS
19
"
o u
"
SVS
PUSH _GETCHAA I 8
JL CMPBAL,'O' JL lO
~
w
" I"5 I.
eMP AX,5
"8
• "• "•" " ""
PUSH sl" MOV BP,SP PUSH PAtNTF
CMPBAL:9' JLE 2f
MQVBAl:9'i"1
fi gura C.11 Um programa que demonstla um desvio multivlns usando uma talJela de despacho.
2,
MOV eX,AX
ANO BX.OX! SAl 8X,1 CALL rbl(BX) JMP lb 8, PUSH O
PUSH
EX!T
SVS
'lO
'" '" "' '" 115 118 111 118 119 120 12' 122 '23
'"
outO' MOIJ AX .wesO
125
JMP 91 r out1 : M"V AX ,mes I
'" 121
JMP 91 101,112' MOV AX .mesí' JMP 91 rout3: MOV AX,me.93 JMP 91 rouI": MOV AX,mas4 JMP 91 routS' MOV AX,mesS JMP 91 rOO16 : MOV AX ,mesS JMP 91 10017; MaV AX ,mes7 JMP 9f 101118: MOV AX,mesB JMP 91 aroul: MOV AX ,emel PUSH AX PUSH PAIN1F
128 128 130 13'
I
,.
svS
ADO RET
5P,4
.SECT .DATA Ibl' .WQRD roulO.rout 1,roul2,r0u1J,rouI4,lout5,rOI1l6,rOUI7 ,roul8,rout8,e roul
m850: ,ASCIZ "Isso é um zero \o" mes1. .ASCIZ mos2: .ASCIZ mes3: .ASCIZ mes4: .ASCIZ mesS; .ASCIZ melEI: .ASCIZ mel7' .ASCfZ me$8.• ASCIZ emell: .ASCIZ 6lrt: .ASCIZ
'QUII l sl um um.\n ' 'Você pedIu um doill.\n' ' O dlgilo era um Irês \n' "'Vocf digllou um qualro."'" 'Você preferIu um cinco."'" 'Um lIelll!ul ef)COOlrado.\n' ' ElSe é o número lele"'" 'Esse digito nAo é aceIto como um 0081.",, ' ' liSO não é um digito. Tenle novamente."'" ' Diglle um dlgilo 0(.181 com um retomo. Pare em I'nal de arquivo."'"
132
133
'" '35
138 131 138 13. 140
'" ,U
142 143 145 148 147 148
'" '''' '" 152 153 15' 155
15. 157
'" '" '"
180
As cinco primeiras linhas ~ill1plcs1l1enle definem os números de chamada de si~ternõl e u lal1lanlw do IJ/ljJá e ajus tam o pOllteiro dc base tiO tOl}O da pilha, como scmpre. A.. linlta~ 6 até 13 lêcm (I nome !In anlui\'o a partir da cntrAda padriío. e o armuzc nam como uma Clldeis em AX. E~sc n útn~rn é copinuo para ex e o núrnefll de cnractcres qlTe ;li nda c~t;lo no buJJI'" ~~r:1lT1at1tido em ex dali Ctn diantl'. A posição rJc
t
.lllclooe· .J5y5Calnr.h"! 1 bulslz,. 512 12
SECT .TEXT IIllbulsl MOV ap,sP
"
arquIvo por leilura
de buffer e aleatório
.. 2.
eM? AX ,O
145
'46
SYS
'88
14.
CMPB Al,~'
JLE 71
151
e M? aX ,(counl) JG 71 SHL ex,!
'52
Jl 91 JE 11 STOSB JMP Ib
eMP BX .O
"11. 111 112 113 ! 14
115
'16
PUSH AX
CMP AX ,O
li'
,"
PUSH (hirtas) PUSH lSEEK
120
SYS
121
SUB CX,AX
'"
PUSH
STOS XCHG 51,01 CMP CX,O JNE 2b JMP l b 9 . MOV 5P,BP PU5HlInein PUSH all/Tless PUSH PAINTF
SYS
! 23
'29 'lO
'"
132
'33 '34 '35 '36 137 '38 '39 14.
ex
PU5H bu! PU5H (!lIdes) PU5H REAO
124 125 126 127 126
SYS
141
'42
'61 '62 183
'64 '65
'6' 167
'88
16.
SYS
172
ADO SP. 14 JMP 3b PUSH &Canefl PUSH PRIN1F
174 175
SYS
177
ADO SP,4 JMP 3b PUSHO PU5H EXIT
SYS fi!!buf. PUSH bU!Sll
eXCl:ulam (J anl l ilit.!I1,Ul1l:1I1t I prnpriamerue dilO, porém.
AOO BX,eX MOV Ol ,bul
A'T getnurn: MOV Olbnein PUSH GETCHAR 1.
"O ' 71
173
". '18 ". '60 '"'62
'.3
'84
es!.c~ r..:gl sw\( hl1 t,!~ ~íl{)
ror
o
...'"
18'
'90
e
191 ! 92 193
• •'"c
194 195
~
o
•
'96
~
CMPB Al,'Vl'
198
•
'09
J' 510SB
1100 1101
JMP I b
1102
Mova (DI),'\O'
PUSH curlln
1103 110<\
PUSH Illtmlml
1105
PUSH IIne!n PU5H 55CANF
1106
SYS
1106
ADO 5P, 10
11 09 1110
AET
1107
8
,•'"
'"c ~
e
•o
'•.
~
••" ~
.SECT .DATA 111 1 errmass: 1112 ASCIZ ' Open •...11 lalled\n" 11 13 nunllml: ASCIZ "%d" 1114 scanerr 1115 ASCIZ ~ype a IlUrOOel VI'! 116 .AUGN 2 11 17 SECT .BSS 1118 !inaln SPACE80 1119 lildas. • SPACE 2 1120 linh. .SPACE 8192 1121 cuIUn' SPACE4 1122 bu!: 5PACE bu!slz+2 1123 It24 count. .5PACE 2
vi~ l n que 5105 preSSllpõe ql1~ () destino está em DI e n1'io em permulados ames e após a 5105. As linhas 35 .ué 37 vcrilicarn ~c há rnai~ dad ns di spunr\'C l ~ 1I1I I)/IJFr, c ~ul1mll de itconlu com I) v,tlnr de ex. Quundll o lillul do l\r(luh'o c UICHllçuc1o, temos lunlt'l isla completa dl,l pnsiçôcs dm inícios das linhas do arqui vo. Como inici11 1l1t)', n \Clor 1i,,1r com uma palavra O. sabemos (Iue 11 primcimlinha com l.lçou no cndereço O, I.l que .1 próximo linha começ" na pu~ição d'lda fillh + 2 elc. tamanho da linha /I pode ser enconlrado pelo endereço de iníciu da 1inl1<1 11 + I meno!. li enden:ço dI! início dll linha 11. O ubjctivo (h) rClI!n do programa é ler o número de uma linha, ler alluelu linha pma o bulfel' e produzir ~un saída por mdn de uma cha mad'l wrile. Todas as infonllaçõcs necessárias IxK1elll ~e r cl1colllmdas no velor lil/h cuja 1'l1billW ('l1lmd .. COl1lélll a pOloiçao do infc io du linha /I no arquivo. Se o número de linha re'lui ~ilado for O ou estio "er fum de '1 Ic.tnce. o prngnuna ~ai, sllltando para r61ulo 7. ES~lI partc dtl pmgnmm começa com uma chamada pam 1\ sub-rotint1gf'lIwlII na linha 46. E~sa rOlina Ir! uma linlm dll CIIlI~tdn padrão e li annllzcna no bllIfer !in!!;". (nalo linhas 95 l1Ié 103). Em seguida, nos prcpllnlm05 para li chamada 55CANF. ('ullsider.mdu a ordem inversa dos argumentus, em primeiro lugar passamos o endereço dI! Cll r~ lill, que pode CUIller um \alar inteiro. então o e ndercço da clldda de fonnato de inteiros IlUmJml e. por fim , o cndcI'l!iFo do bllffl'r 1i1ll:1II quc contém li número em notação dcci mal. A sub--rotinlt dc sislem a SSCANF coloca o valor binário em I'//rfil/, ~e pUltlor"el. Se falhar, retoma um O em AX. Esse valor UI! retorno é lestado na linha 48: se falhar, n pmgmma gt:ra UniU JIIensagem de erro por meio do rótu lo 8. SI! lllouh-mlilt.l gt'llJlIIII retornar um inteiro vá lidu I!Ill ("Jjl'fill, enlão ptimciro (J copiamos em ex. Em seguida. lel>tanlt1s li valor cm rdação ao alcance nas linhas 49 até 5~, o que gera lima EXll se o li limero da linha e)liver fora de alcancc. I:.ntào de\ I!I1IO\ m: hnr o final da linha seleciollllda no anlui"tl c (J mímem cle hyles :1 leI'. ponanlO, mulliplica· mos ex por 2 cum l1t1l deslociHnenlo para a esquerda 5 HL. A posição de arqu ivo na linha cnrrcn lC. Pura filicr 11111<1 lei tura aleatória de um urq uivo é preciso urna chamudll Iseek para ajuslUr o uesloclll11cnlo do aTllui vo par;! o hytl,l ,t se r l ido. Á lseek é executada em r elação :In iníciu do unluivo, ponantn, em primeiro l ugar um ar};Umentll de IJ é pa\~ac\(1 para indicllr isso na linha 57 . O próximo argume nto é () deslocamento do unluivo. Por