Prefácio
E
ste livro está buscado na idé ia de que um comput:lrlor pode ser considerado uma hiernrquia de níveis. cad...
1036 downloads
7868 Views
100MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
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
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
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 gCTro 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:lpliú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 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 pes 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.~tS 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;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 uSsilivos 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.10brecarya 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 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 pcssO
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. 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
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.ll tem uma central li! ullla gmncle quantidade de cai: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 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. Essses 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 intemacionalizaCtica. 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: 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 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 ~
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..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
"
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 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
~
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 +-,
----
_-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-'ü.......
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 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 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. ~
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 - - - - - - - - - ............... ....... ... .
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
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 (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 ativlo. 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
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 uSOde 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.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
'"""""
-""""
Ca2.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
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 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 sinC1. 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.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 ificas. 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 cS
~
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:~-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 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
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
'" ~
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>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 resuJl1ll0 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:
'"
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á
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 apempre 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>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\
_
_ _ _ _ _ _ _ _ __ • •• 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.
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
",
· ~
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.
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 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:ã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 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
'"
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
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 ~
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!OlTc:.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 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 rlsultt 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Ó: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~!
'" ~
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;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 4 byles. Contudo. algum:ls maquinas têm espa
. 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 par
•>
'"
~
•
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) suportSC 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 hlusado 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çÕ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 ~
•" • • •
~
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
{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 opco
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 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 ' tumulto 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 tnl~·I1c.:!> dHltliea, 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. 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 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 é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{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 2
I)I.~
·
Pronto para pró.lmo caractero
I
~torrupçAO habilitada
Estado do monitor
Interrupção habilitada
mmal simples. Butlar do tect01l1eOle 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ã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:lr 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!>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 ~
,•"
-•.,. " • ,
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 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!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. Execul
~
: 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
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 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. !\'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 vclocid 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 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
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~ rletnll 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 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 rncm6ri8).
5.8.6 Cargas especulativas Uma
== 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; 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 pt.1Silivos de EIS colocam () vetor de intemlpção no harnunentn? Scria possfvel armazenar
!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 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 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 dillruçà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.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
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 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 caeln 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 [Í! 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~
dllllllsi~ 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 apcnaOI.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 ~ .1a!>. 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•
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 silctl 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 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 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 d 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é rncCcsso criado (lilho). Com essa finalidade. existem insll1lçõcs vi rlLm;s para permitir que um pn1cele 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 ~ () ~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 prOUS 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 porCI'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 pagiIlO 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:t 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 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 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.~ unl 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~ po 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 ehamoocguranç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' 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 (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 é desm
" ~
o
"•
c.
•
u
cciais 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, t 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'1ela 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 ã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 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 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 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:'/I1i:.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
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 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
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;.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ã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 cxcelcgumlo:. 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:..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 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>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 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.
!,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"\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
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.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)!\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 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~ cetlimellto por "ez e COlllC.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 trlra 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: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 pI!: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 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 é dtallli.: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 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 :.â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ílicu1, 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 exccu 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ão c:relluld, l ~ em reghlradnrc" c a unid.llie de l:urr.:gamcmolanllalCmmlcnHl é lb,IoI,1 pUr.l 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:~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 ~ ad 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
•" •"
"
~
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 cor 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
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 ipar. 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 JliUL'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 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 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 p 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'"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ári{) 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. 111Cl::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 p 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 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(O{,. 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
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 sívd pal1l uma anluitclufa paralela é um projeto no qual cada CPU tem sua própria mcrm')· ria priV,ldi:.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"
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 é ... i1f"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. Ve 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é 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 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 cpcrur 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 ----......,
•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 é 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>l:.à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
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.
"., 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 invultlJuillmcnte ~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. (. 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 Iu 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
• , ~
" "" ••
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..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
• ••
~
• •
•.
~
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 é 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. " .. (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 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
ccuham um grande paltd . Para obter maim desempcnho. o íl\llice é subdi"idido em l}Qr~'ões dcnomi rUldu50 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.! 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 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\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~!, Opcru\'t'\ell de comunicação e lLlJlOlogiilS \ inuai s. Um cOlllun icndnr é um grupo de proccs! ~ .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 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 pào hOtlleanillluc nãu ":l)ntém ncnhum efeito eolaterul, ClU 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, 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 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~ 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 tmoIogia ú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 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 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
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'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 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. " 111M". 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;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. '·Pcrvects 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 pO 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 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.
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-
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 é 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 ili\,O!, grandes lIl\} 10. 1019
10'
la'" 10{l\lUO
"
co
... o
"• o
~
•
• ~
• o
Uma varia
•
~
• •
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 é 111II~.,,!I é 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
'•. ~
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
••
ário~ porque o 8088 lem regisll"i\dorcs de 16 hil'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
~
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. portes 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 enOde ser carr~g ado cm AL por MOVe AL FORMAT(SI)
cadeia illteint pOllc ~cr exumimllrador SI nu DI [) 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'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 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
. 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.
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 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'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 corlanto 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 tedUpCllUr 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 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 0000 IP :OOOc: P .C 0000 0000 IllI ! OOOe 11l 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
.."
N58 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,'
.,,, ,, ,Ó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 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 , 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 linha cnrrcn lC. Pura filicr 11111-'1/1 C}Llil,:
• ~.:d"l!l ktl1c)
( 'h"..I.)
(', ,.".-lIu doe pro.,,"':"," , 27 1 .!12 C'Ijlh1lOfafiJ lk ~ h.".: (>lIbll' ... 311 f · llpUlgl~Ii., d ~ I,h,lI': ~ullé u lell. ]-11 ('np' up!'1..:c~~ad"r, 1-11 - i-I 2 nn 11 .)11 C ..lhnd e R~) fllhc: ) ('111111,361 { 'yh.!r doi n lC •.I! ( \ .. hc Ilcrlullll,Hl~ y ('hL~ L l\aIJku\~1I
pUI Ic,huulIJl.. IJ d..ti . .. j, 125 , 127, 335
D Jl.ld,,~
11I'lifi .. ud,,~ pel., dll~l l u. 22 1
O.•dll' \.:Ihu~, ,1 -1') nAIA >c',!a,j , "201 Ill)t< (I 'IIO"lIfe. J77- J7I1 ulm:nçllu de , J 71S·37'.1 " ... uh.I,·~u de IJlrm:IJ. 37'.1 11':~"'lIlpcllhl.l de "'I,hit"mpuI:lIl.lrc~ , 37bIkprc~sa(l (Im) .
37<J O,,:. I.,,:.dor. KI!. 11
Ih.:oal), j7 - ~8 1I'!!":11 Vid,-o Ilb)..ldi,.·u de \.d~u digllull 57 j)IIIIl'II.iun ... hJ ....t.:, J h! Ill"'~l \1Ols l1,Ili1e Disli.) 11)'lIl1ulll: !..in).. Libmry (bibhlllcI:a de hgllçilo ,linOmil:al. 31/1 D)'uum ie I~ A/o. 1 eRAM dillfllllica). 911
E EIS Ilrj.. Enl radalS:,i.lal EIS. in) lm,.:õc~ ,1.:.225 227 EIS lUllpc:llda jlat:l li memória, 1211
FJ S jllilgrllmada, :!25 EIS I'irtunl. 267-271
CIlI
UNIX. 284 21111
IIIlpkll1cntDLilll.2l'1lJ.. 271
no Wim.low, XJl. 211íl 290 I.:d.cCl , J. I'n.:..pcr. 10 ECl.ll'I'J4I bniuer ('oupled l..o,'cl F..dltilr de Ilgaçiíll. 312 EDO (I'''J'' Mell1óri~ r..xlcnded Dala Ompul) lUVt\C' (leja l:.leL'Iromc Di>oerele
...tiM")~
1.... llu l ~l, 1110 rile
DirCló/l1l de II;\ginas, 26-l Dirclónu (ie: Imbalho. 285 Dirclónn-r ..il.. 285 Dbcl.l, -ló .~8 ('I) IWM. 53-55 OVO. 57-Si!
dl1lera~d,ltll:.ll ".
Ikdlll.LI . 414 n ..:....".hlicl1\.5u .k ... ndc l ~ .." . 121'1 -12'.1 I>':~,ldlfi ... ,,\uu IIM":!;II J .. cn.lcr... .;u. 12'.1 Ixcudlli':lUluf. IIn. 117 nefilli~ilu de I U.,~IU. 'Ulí 106 11,·11I.1I1I1a, p"glU.l,iíu Il< of. 157 D... muhlllle~ a.I.or. tIIl 1k:I)(ndêll\..lu KAW. In'.! l)epclILlcncl" \er,t .. .Jcin, !t,'.l Dep.:,,,len.:iu Wm ~ ,\(Ier Re;u t U~nta Ikpemlên~la \I.
I)IP (, 1:/" Dual Inhne Pack:.gc) Dir... c1 /o.lclIl"r)' Accc,s (;u:esso direto 11 mO:lllóri;,J. 5'.1, 22fl Dm:llvM de b.emblcr, 3{)] Din:III. cndcr~ç:II1ICI\IO, 212. 415
Vllnahlc Au,n'U~'IC C:"mpuler) EHI'IWM (I'rjll Eleclrichlly Er:bllhlc I'I«)MI EJ WI I
I,,'r instfllç:'lo
cl pliçit umcllIc pamlcla). 244-2 7 Iwr (" ..j" File AII(K:Ulhm T3hle) FedH\l1Il·utO. 397 FiUrn.2'1,\ Ficha IIe açe~so , 289 Fichl Prugrml1l111lhl e Glue I\rnty (3rnmju de pllrt:l~ progm I11 ~\'c l em cum po), 336 FIFO (I'tjn 1\1gurilllm Fir!1 Locali,l!1 ('ollnl ~ r) ILLl I\C.lO ILUAC' IV, ~7 '8 . .1 . ..j 14 1 1I~lnI, 11111\ h:ldl Umll umdade de hUl>ClI
,Ie
I n)ln,~Únl.
1/\2-1/>-1
IlbU'lldl" " I , .... ,'UC'JI (",.,Inlo,;r /(;II!1LIl!lOI' de
lu.:.di/U\.IU
,I~ !II)Hl h,,~{)).
1011
IU)lIl1dll)U P.IUI!.: r 1pcciali.Lus CllI fOlugr.. fiaj, n Jllinl l ht Al:lnltl Gwup (gruJlo (I" a~lio de leslo:.,_ ~nnjunl(l.I, J41 Jo)', IJIII, l~ Jl'i:(i (I'/"ju JIIIIII 1>tlI.'lIogmphic E~peru
"mupJ JTAG (I 'ti" Juilll Tesl Aclion GrtlUp) JV M (I'fjll Jl,va Vinu~ 1 Machillc) JV ~1 (1" '1" III",/I/ m UVM)
p.emt.l. in.lru~õca , 3C\3 ·]0~
l ,ill~II"l!cII I , r,,"l.:,
299 Linha ..h: ..:..drc. 45, 173, 349 LllluÍlI CrySl1l1 D'~rl .. ), (mmllltlf de cmlnl h'IUHkI), III b2 I.lMH de liv re., ~ fll) L,lr:rdl. 3111) I.mlc cndian. Cull'[lUlarlrlr, ~ I, 415 Luc:ll De.c riplur Tahl..: (1lIoola ,Ie IIi!scrhur..:~ h)C" •• ), 262·263 l.oc~lida.Je ~11~.:iIlI, 113
I.ucahd.tdt: llJrll[MIr..1. 173 Lt~gl':" IIrgaU\ ... 113 [lo~itha,
Logil:d
Khosla , Viu"d, N Klld ..n, (;ary. I~
11]
I.ugu::al HlclI:J. AdJrc"lng (clI,lcrcçlln'CIlIrI dc hlucns lógicu), 49 I,ungo, 412, ~ 1 5 1..11111' h>r:bl ,1i8
Lovcluec, Arla.
K
]U2 ,103
JIIlr 'll!c lI~ar, 300-302
L}
LPII I't)l' '-rUI!> ~r inch) LKIJ (l'I'j.. Algunll1lo Lcasa: Rc:cenll)' U~etl)
I.V 1"rJ" I)ullldnl LV)
L l.a~IlIl,1 IIllcNlore., ~1 LAN (1"1,r Kerlc 1"":111) I.argulu de halldu agregaJa., 377 1--"!gurII di: IxInda dr: Im,seção, 3M LargUIll tle: IxInda de processador. 3f1
LargUrII do b;trlllmenlo, IOJ-IO-l La..cr, illlllre.sora a, 6S La,,;h, ~2 -93 I.:.ll:h [). ~3 Latch O CtHU I'dógil'l, 9~ Lmch d ,.p~rado podo nl\'d, 93 Luteh SK, 92-9] uuch SN cum relógiu. 92-,}] Lalêncla, ]6 rolaclollal.48 unin- I,14 LBA ("11" 1.0g;"1I1 BloeJ. Addressing) L(' O (I'('i ,j Urluhl Cry.11I1 Oispla)') LOT ("'1" Local Dócril'torTable) LEI) (I','jll Lighl Ernilling Diodc) Ld ,I..: AnulJh l. 3111 Lei de DcMurglln, 113 Lei de MOllre, IfI , 23 ·2~ I.eibnrl. Goufried. 9 Leqlle,360 Ligil\'ilu dln~mica, .111 ] 19 cxplrcil~,
31\1 illlplíCI I~, 311) m6dulu~
ohji!IO. 315 MUI: nCS, ]11 tllrefas rcallnduli, ]13-]15 tempo rle: \,jneullL\'§o, 316·] 11 UNIX,]ltJ Wi llduw. , 318-] 11)
ti g,,\,llu (1I1I1i), 2115 Ligmlo(. 312·119, 423 Ughl EUllrring Oiodc (,liod" emiiSOf de IUI;). 63 Linda, 314-]75 Uncs pcr Incli llinli~a ."Ir polegada), 65 Lingullgem. I l ,in I:Llagcnl-III\{),299 I , jngll~gelll de ullO níl'el , " cm l:omp~mçàc' Cllm linguugclIL dc rnunlugcm , 3(1), ]tH Li "gu~gelll Jc m4tjuina, I, ~09 LinguJgern de: IlIlliUJgcm, 300-308, 40')-
M da Allplc, I~ 3Uj·30g IIl1p!e:lllcnla~lio. ](11-j()1I Macro de ",i.lcnla .l{Ic:rndulluL fi MacnJóli'llUllerurll_ I ~] ~13gllt!lIc" ••lloCU, 41·53 Mugllll udc 1.'.1111 .11lal, .100
Mlldnl!)~h
MUl;ro,
Mails lul ,293 Maillfr;II11~.
21
MAL (1''')(' f.,h~fIl A._sclllbly LflnguBgc:) Malha, lrlllHlugla de rcdc, 361 Malha dr: rnlclT.unedo lotaI. ]61
MA NIAC'. 111 Manipul;"J.,r, 211 1 Mami .. ~ , -II~ Mara d.: hit s, 20~ Ma[li' ,te Incmõn a, 254 Máquina IIl1aliul:u,9
Má'lllina de: ViJI\ Neull\ann, lO- l I Máquina dif~rclldal, 9 M:kluillu IAS, 10 M5rluilJa l11uhinCI'eI. 2. ~-8 Mátl uina relll, 2 MAK (\'f'i" MC!Illlry Arlrlress Rcgisle r) Ml'fl!O • .la Ortlullclura de cOnlptrlallurcs, 8 - 1~ ~hlr~
I, I)
M~.cata,
22 1 fI'lá.caru de eruwl alfll. 340 MASM, ] 02 f,Ja>õsivel)' I'arallel l'ro..:e.-.sor lproccssador de l)arol l di~nKllllaciçoJ , 346, 362-367 Ma ..!cr !--ih: Tahle (tabela mcstrll de ~ 'lIUi\'u~), 2IJtl M auchlc)', JOhll, 9- 10 MB R (I'l'ju 1\1~llIory l1uffer KCj;i>ler)
MeNeai)'. SCOII. 2~ MOR (I'rj'l Mcmory 0:.13 Kcgisrcr) Me(::tJII .. IlI11 de illlpre.~lIo, 65 Mem-MJIIlliÚul', 119 Me:nhlna, 92· 1110 IIOHII.41.l ~16 us~oci alivu, 262,] 12 DOR, ')\) de alraç~, 3511
ORAM . 911 EDO, 99
~IO
Em 'KO~1 , 100
8115 1. ~23 ·42l1
EPROM.99 IIXI
l::,t'actcri.liell), 11):1
nu.h, 100
•u o
o
......
jet", 11"; Muni lur de malril. OLiva, 62 Munih'l de mntril' l'ass i\'II, 62 MUllitOT lIc ro:-fl'rell~'hl IIo! s~glltmlç3, WiIItJ,,",~ XI',2111 MCll1ill'f dc t~ltl phlllQ. 61 -62 Monitor TIT, (,2 Montador (." j(! A~ ~ lIIblerl Mt)Or~. Gt'roUII, L~ - I6 ,\-IOS (,·,jll Mel"1 O,\ ide Scmit'Undllclor) Mulif. 2711 Motioll f'k I111'" t::.~ Il'C I1.< GnlUl' (gnll'0 de e.!1Cdllli',a~ CUI fillI1e~), H2 M III"",I~ MLNIO . .\l M llu't'. 61.(,,1
Movi mento de dmJv', illslm~~1I para. 220221 M I'C (""jll MiclII]1l11gfUllI Counlcr) MPH.l-2. JJ1 MPI ("rj" ,\1 e~!Ig.c - l 'a~5ing IlIlerJ'Ht'e) i'.1I'1' ( ..,jll Ma uil el)' 1 'lImJl~1 rruce~sor ) MS -DUS.14 Mult iculIIlHllador. .19, J4J .1crl
Nr-NUj\.I,\ /"I'j"
). I \l hipnlt:e~s31k>re.
N("·NUMA )
"r
Nihhk,227
NIn It"j" -':cl\\cvit'eJ N,,"rl. I _ ~ Nh'c! de Ar~lIi tetllra du Ct>lIjlll!lCJ de I II~tnl~/\ç~,
4
I'\ivo:-I (\e tl i, ) I)II-II)() l\elall\u. -'011-102 Numeru de (lt>llhJ nUIl.j.lllh~, 4().I· ~ 08 N,lnlcW de prccl. !!.1 fiulla , )1)7-31}9 NlIrncw dc~nUl'1nahl.adu, ~"7 N,írm:ru IllJflll:olll..!(k" ~U() N,imcro OClal. 3911, 42J
P,1l...... lIt de r~llnhecln\emo. 125 I'ao.lrio de ponto IluIU,Ul1e IElli!, 406-408 P.lgllla. 25~ Página clIW]lfflll1ellda, 2113 Pdgll1a de códill')' 704 I':lgmu gê nrcu, 373 I';lgino IÍI'rt. 2111 I'ágin., rC!oC(\'I.da. 2i13 P;tgin~,lIo. 253·267 impleme'11QÇflo de. 25~- 255 IMIl demanda, 255·157 " aglll.LÇ;'Io .-xcc.,)h~ (1IJrwIrlIlS), 258 1'~l la'm, . 411. 415 1'.I1a\ ra de l.·õc!Jgtl, 42 P-.IIe.~ de wn:~ , 62 Paralelrsmo no nlvel de in~lnl.,:AI.). :14-37, 323·327 no nívcl 1.111 proccuJldor. 37·39 1'.lra l ell~IllO íplpcline). ] .~ Ilc )ele h lágillS, 17()· 172 Mic· l. 169 Mic-4. I72 1'':111111111..1 , 111:5-11:17 I'cnuum I, j/i Ull raS PARC. 1118 190 I'aralld InllUtlOul15 !J7 Organil8ç~u e"lnll urudJ ,I.: cornpllladorc!>, ) 8 Orgu u i/~çàu ~irluul. 31111 OS/2 , 1-1 n~hol"ll.:- I . 14 Ôlrcv ,liM:0.53-Si!
p l),ad.ell'rllce1
......
O)
"rujetados em
COlljlllltU.
15
I'rojcl" j :'I)I)II@~ 1I:'IlluinlA gCll1çã,., '5 l'r (\ l n~n de pWl'cllilllcntn, lJ(j
I'ROM (t·,.jll I'm,rluumoblr ROM)
••
I'mlclnç/lo t.,mllinR). 169 f'totclnçilo em pa rakli~lt1tl. 116 1'",[0\,"01 Pruce55 ing F.lIgine (rnálluinll de
",•
I'lUIuculn. lUZ. 124, JJ5
o
~
8 o u
•
"•
",• , ,,
I'rnce~!""K:IIIO
l'rutUCHlu õc ,'ucrfndll llc I:adlc, 349
I'"lfl,,--ulll MF.5I, JSO·JS I I'nllllcol\l lP ([l1lemel I'wlllcul). JH )' tuwcolo ~IESI de l"ocrcncin dt cndlC, l.~U
351
1 "('udu-iMHl1Ç~Il ..\OJ -.1IIl.
•
Q OUi+lhu, ~4
~
d
•
m ,
o
n\'Crs§, •. '99.~1O
RA M (1''''01 Rmllllll n Access MCl11ory) I(AM tle l·rUCO, 62-6.! I(andorn Al"CC~. Mcntm)' (memt'iria de ncc~~tl a!clltcídll). 26, 9/t-1JIl IJRAM ~fncruna. 99 RAM dinnmica, 911 RAM c:st:\ti ca, 9!! Rlmgi ng,711 RMt~aÓor. 410 1101111. :trr.tn1Cf1!II, 10.1. ' 06 Rcrl(lTIlc;lçllu\le regislrudc 'T, 1711_1M2 ReOr.lc. AufTcr Ihurrer dto reordenaçllo). UI5 RIS("' ( "tja RethH:cd lust!li('ti ufI Sl'l Compoler) RIS('. prinfll'iu, de pwjettl, 34 RISl' ...·nflr CIS(', .U ROII (I'tjo RrOnler lJu rr~r) ROM ( l'r1'lr Re:rd 0 111)' Meluory) ROlocional. I"tincia. 48 RlJteuc.lur. ll4 Rotina UI' iUll'ITUIJ'liUr', 5\1 R"tinlr de 'lCf\ i~'u de in lCr'TUpç!\o. 2]Q 240 RI\wllJ. 409 R641110 I!lobal. 424 R6tulo locll1. 424 RlJuhu de ciclo. ~9. 227
s Sacola de: Ulrcfll~, 374 Sarda ]Iadmu. 285 S.. ltll (,'tjo Dc.~,ill) Sallo di~tonTe, .t 19 SUllU I'r",~iIllU, 419 ScaJable Proce~..I 5ÜH,:wna).
~~
T 'Iabela d..: JO:)IM..t"., 43 7 hhcl.. ,.1.: 1):.gUl~~, 2S1
tahel •• .te Tuhda dc
11'J r~llljficaçil.u, 1117 T~hcl~ de .fmlxlln•• lOIS, :11 1-312. 423 ' Iatlela ,.h: 1r-.II.!u~ãh. 2M Tuhcla·\'crdadc , Im '1llhu ldl'u de x~drc ... , 2(,1 Tamallho de pálllllll. 25K-259 T~.\a
de
It c~'CI\ cr
lJJ)B (,'t:cph.r do: b:lrr-JIl\I:IUIl, 102 Tr-~llsfe relld~ de bloco, b~rmu1. 206
d.: J\~nói, 242 ·2..3 visão g':I~1 ,lu nCI'c! ISA, 20 1 203 UMA ( ...ja Unifllnu /I.'lel11ol)' Accc.s) UN ICIJ])E.73-7-1 Unidllde de alocllçãu/renurnea~~lIo, l'eruillll1~, ISS Uni,I;/Cle dI! decodificação, 170· I 7 1 Ilnidade de cmhslln de in.lrn~·Ii", IS7 Uuida,lc dc enfileiramenlo, 171 Unidade ue rctil~"la, Ixtí Unid.lIle funcional, 37 Uuidr,de lógIca e arltlllellca (Anllnnelic Logic Unil), 1, ]U, 9{j· 9 1 lJ n idock~ mélrit:\b, 26-27 T,lrr~.
U ni ftlrln ~k nll)1)' Açee,,~ (acc~S(l un it"nnc 11 uH:mc\nu). 345
Asyuchruuuus Receil'cr rcccplor ussíncronn unl\'cr~al), 127- 1211 UnÍl'crsal Host Coutwllcr inl crfllcc (inlerface lIbcrlõl de controlador de ho.jleddro), 127 lJni\'cr~al
'1 'r:ln~lllilltr (IrJ n~nli~,\.(lr
TI"MISlção, 161 'Ira u,i,tor, 1U'~II\,;iu ..lu 11 I mlL,L,rur de pí:lkula una (l hin fill1l lrilll~iSIeri<xliCIJ~ e confcrt: ncia.~ e eTII cinco li\'ros. TanenhaUlIllambém produz.iu um con~idcr:t\'cI \'olu me de l'ortware. Ele foi o princi pal artluitcto do Am~ t enlal1l Cmupilcr Kil, um cClnjull1tI dc ferram entas muito usado I)ura cCl]ucnn clone do UN IX dirigido à uli1iItl~'ào em laborallíriu~ de c n ~i l1 () de pwgruTlwçiio. Es~e sistema Prol)orcionou a in~pir.l~iio e li hu~c S(lhre 11 qual fui desenvolvido o Linux. Jun tamente COIl1 seu .~ aluno~ dc doutoradu e pru grallmdur{'~. cle ajudou li prlljewr u sistclllu operaciunal di stribuído Amocha, UIlI sistema ope racional di~tri llUrdo de allll descrnpcnllll. d l~ curta di ~tiin cia e ha~cado em micronucleu, DCI:HJis disso. foi um dos Ilrnj el i sl a ~ dp Glnhc. um ~i .~te l1l n d i~lrib\lrd n de longa distância para munipulaT um bilhão de LI ~ \lári\) .. , b.~c ~o ft\\'arc ,lgora e~ l (j ltispuufvcl gr;u uilamenlt: via Intcnlcl. Ele é Fellow da ACM. rcllow do IEEE e mcmbro da RUylll Nelhcr1:tnd .. Acn