i i “1335-Juvan-Marincek-0” — 2010/7/26 — 10:28 — page 1 — #1 i i i i i i List za mlade matematike, fizike, astronome in računalnikarje ISSN 0351-6652 Letnik 25 (1997/1998) Številka 3 Strani 141–143 Martin Juvan in Jože Marinček: F0 0F C7 C8 IN PROCESOR PENTIUM Ključne besede: računalništvo, mikroprocesorji, Pentium, napake. Elektronska verzija: http://www.presek.si/25/1335-Juvan-Marincek.pdf c© 1997 Društvo matematikov, fizikov in astronomov Slovenije c© 2010 DMFA – založništvo Vse pravice pridržane. Razmnoževanje ali reproduciranje celote ali posameznih delov brez poprejšnjega dovoljenja založnika ni dovo- ljeno. I Računalništvo FO OF C7 C8 IN PROCESOR PENTIUM Proizvajalec mikroprocesorjev in drugih elektronskih komponent družba Intel iz Santa Clare, Kalifornija, ZDA, s svojimi izdelki iz družine Pen- tium res nima sreče. Pred tremi leti je njegov ugled močno načelo odkri- tje, da mikroprocesor Pentium količnikov nekaterih parov realnih števil ne izračuna tako natančno, kot bi jih moral. (Članek o matematičnem ozadju odkritja te napake si lahko preberete v tej številki Preseka.) Na- paka in predvsem ravnanje Intela ob njenem razkritju sta kupce proce- sorjev Pentium tako razburila, da je morala družba brezplačno zamenjati vse procesorje z napako. Zaradi zamenjave je nastalo več kot 450 milijo- nov dolarjev stroškov, taki stroški pa so velik zalogaj tudi za tako veliko podjetje, kot je Intel. Precej bolj neopazno je maja lani minilo razkritje še ene napake, povezane s predstavitvijo realnih števil v premični piki. Nasledniki pro- cesorjev Pentium, procesorji Pentium Pro in Pentium II, namreč včasih pri pretvarjanju realnih števil v cela "pozabijo" postaviti zastavico za prekoračitev obsega. V začetku novembra so se novice o procesorjih Pentium spet pojavile tudi v medijih , ki običajno ne poročajo o računalniških dogajanjih. In to za Intel niso bile dobre novice . Kaže, da se je prvo sporočilo onovi napaki v delovanju procesorja Pentium pojavilo 6. novembra. Pošiljatelj je že- lel ostati anonimen, zato je kot svoj elektronski naslov navedel noname©noname. com, sporočilo pa je bilo poslano prek omrežja University of Texas. Dan kasneje je bila na internetu že kopica dodatnih sporočilo napaki, možnih razlogih zanjo, ugibanj o tem, kako bo ravnal Intel itn. Pri Intelu so reagirali umirjeno, njegovi strokovnjaki pa so si vzeli nekaj dni za premislek, predno so uradno "potrdili" (beri: priznali krivdo za) obstoj napake. Vesti o novih težavah s procesorjem Pentium so se hitro pojavile tudi v vseh pomembnejših sredstvih javnega obveščanja. Tako je na primer časnik Delo 13. novembra na prvi strani objavil krajši prispevek o dogodkih, povezanih z odkritjem napake. In za kakšno napako sploh gre? Poenostavljeno jo lahko razložimo takole. Procesorji iz družine Pentium poznajo ukaz CMPXCRG8B, ki pri- merja vsebino para registrav s 64-bitno vrednostjo v pomnilniku in glede na izid primerjave op ravi ustrezno zamenjavo vsebin (CMP == compare, XCRG == exchange, 8B == 8 zlogov = 64 bitov). Ker je ukaz "zapleten", pri uporabi pa večkrat želimo, da se celotni ukaz izvede brez prekinitev, ki jih povzročajo zunanji signali, mu lahko dodamo še posebno predpono (Jack), ki zagotovi, da njegovo izvajanje ne bo prekinjeno. Do težav pride, ko zgoraj omenjeni ukaz izvedemo v "zaklenjenem" načinu, kot operand Računalništvo I pa uporabimo eneg a od registrov. Ker imajo Pentiumovi registri le 32 in ne 64 bitov, med izvaj anj em ukaza pride do napake. To ni še nič hudega , saj procesor med izvajanj em ukazov večkrat ugotovi , da t i niso pravilno sestavljeni. Procesor tako op ozori na napako in poskuša izvesti poseben podprogram (error handler), ki naj bi poskrbel za "odpravo" napake. Ker pa je ukaz izveden v "zaklenje nem" načinu , procesor po pr ekinitvi izvaj a- nja ukaza ome njenega podprogr ama ne more izvesti , zato se "obesi" . V življe nje ga obudi le ponoven zag on računalnika (zadošča pri tisk na gumb Reset ) . Uradno In t elovo poimenovanje napake je "Invalid Op erand wit h Lo- eked Compare Exchan ge 8Byt.p. (CMPXCHG8B) Instructi on Erratum" . Nap aka je značilna le za procesorje Pentium, medtem ko st arejš i (npr . 486) in novejši procesorji (Pentium Pro, Pentium II ), zaradi drugačne arhit ek- t ure, na kod o, ki povzroči napako, reagir aj o pr avilno (pokličej o podpro- gram za "odpravo" napake , nad aljnje ukrepanje pa je odvisno od opera- cijskega sistema) . Napaka za običajnega up or abnika ne predstavlja večj e nevarnosti, saj uporabniški programi resnih programerskih hiš ne vse- bujejo zlobne oblike ukaza CMP XC HG8B. Pa tudi če do napake pride (recimo , da nam nekdo uspe "p odt aknit i" pokvarjeno kod o), izgubimo le podatke, ki so se ob nas topu napake nahaj ali v pomnilniku (niso pa še bili shranjeni na disk ). Ker pa vsi vem o, da je redno shr anjevanje opravlje- nega dela ena od osnov varnega del a z osebnim računalnikom, nas taka napaka ne more presenetiti. Napaka je bolj nevarna za večuporabniške računalnike (in za strežnike), saj jo lahko povzroči prav vsak "zloben" up or abnik z možnostjo izvedbe las tne kode, pri čemer ni t reba, da im a tak uporabnik tudi kak šne dod atne privilegije. Približno ted en dni po odkritju napake so pri Intelu predstavili svoj e pr edloge za nj eno odpravo . Njihovi inženirji so se potrudili in izdelali načrt za progr amsko odpravo napake. Zaved ali so se namreč , da bi pri popravku na nivoju strojne opreme razočarani kupci v velikem št evilu zahtevali za me njavo procesorj ev, stroš ki t ako številnih za me njav pa bi lahko resno ogr ozili usp ešno poslovanj e družbe. Pri Intelu so t ako pripra- vili sp lošn a navodila za izde lovalce op eracijskih sistemov, vsak izdelovalec pa je zadolžen za izdelavo pop ravka za svoj operacijski sistem. Intelova rešit ev je precej zvita in teme lj i na nekaterih pos ebnostih procesorja P en- ti um. Nekoliko presen etljivo je tudi , da je tako resno napako v stro jni opremi mogoče odpravit i kar s spremembo programske opreme , še bolj nenavadno pa je, da programska rešit ev praktično ne upočasni delovanj a računalnika . In kako lahko sami pr ever ite, ali imate "prist ni" P entium? Če uporab- ljate Microsoftov ope racijski siste m (MS DOS ali kat ero od različic Oken ) , I Računalništvo si lahko pomagate z vgrajenim ukazom debug. Ukaz poženete iz ukazne vrstice in vtipkate podčrtano besedilo, vsako vrstico pa zaključite s pri- tiskom na tipko Ent er (namesto vprašajev bo operacijski sistem izpisal šestnajstiške naslove, ki za nas niso pomembni) : c. \> debug -alOO ????:0100 db fO Of e7 e8 ????:0104 ret ????:0105 Vpisovanje ukazov v zbirniku. Usodni ukaz. Poženemo vpisani program. Pri kodi ukaza lahko namesto e8 vpišete tudi eno od vrednosti e9, ea, .. . , ef (gre za šestnajstiške vrednosti, ki določajo različne registre kot operande ukaza). Če imate običajni Pentium, bo računalnik "zamrznil". Če pa delate z drugačnim procesorjem, bo odziv odvisen od operacijskega sistema. V Oknih 95/NT boste dobili obvestilo o napačnem ukazu, okno z ukazno vrstico pa se bo zaprlo. V MS DOS-u pa bo računalnik najver- jetneje "obvisel", tipkovnica pa se bo še vedno odzivala. Običajno boste ponovni zagon lahko dosegli že s kombinacijo tipk Control-l-Alt-l-Delete. Drugi način, s katerim boste verjetno tudi izzvali napako, je, da prevedete in poženete spodnji enovrstični program v C-ju: unsigned ehar maine] = { OxfO, OxOf, Oxe7, Oxe8 }; Tudi proizvajalci strojne opreme počasi postajajo podobni izdelo- valcem programske opreme. Slednji so nas že pred časom "navadili" na izdelke z napakami in kopico pomanjkljivosti ter na njihovo nikoli do- končano "razhroščevanje" . Zdi se, da se nam sčasoma nekaj podobnega obeta tudi pri strojni opremi za osebne računalnike. Če radi križarite po internetu, potem si lahko uradne Intelove razlage križev in težav s procesorjem Pentium preberete na naslovu http://support.intel.eom, zamolčana dejstva pa boste našli na naslovu http://www.x86.org. Da ne bo pomote, ločil na koncu obeh naslovov vam ni treba odtipkati . Martin Juvan, Jože Marinček