Microsoft Word - Salamon.doc

Podobni dokumenti
Microsoft Word - avd_vaje_ars1_1.doc

Slide 1

Diapozitiv 1

Strojna oprema

Microsoft Word - MD_1_IJS_Mrovlje.doc

DES

Diapozitiv 1

Delavnica Načrtovanje digitalnih vezij

Delavnica Načrtovanje digitalnih vezij

4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenov

Uvodno predavanje

Preštudirati je potrebno: Floyd, Principles of Electric Circuits Pri posameznih poglavjih so označene naloge, ki bi jih bilo smiselno rešiti. Bolj pom

Delavnica Načrtovanje digitalnih vezij

MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

REŠEVANJE DIFERENCIALNIH ENAČB Z MEHANSKIMI RAČUNSKIMI STROJI Pino Koc Seminar za učitelje matematike FMF, Ljubljana, 25. september 2015 Vir: [1] 1

Diapozitiv 1

Microsoft Word - SI_vaja5.doc

Avtomatizirano modeliranje pri celostnem upravljanju z vodnimi viri

ARS1

Elektrotehniški vestnik 76(1-2): 13 18, 2009 Electrotechnical Review, Ljubljana, Slovenija Ugotavljanje podatkovne odvisnosti za procesorje z naborom

Datum in kraj

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan

Microsoft Word - A-3-Dezelak-SLO.doc

Microsoft PowerPoint - Predstavitev novosti COBISS_OPAC_V60_17-18_06_2010_za objavo.ppt

DES11_realno

Microsoft PowerPoint - Java_spremenljivke

Microsoft Word - vaje2_ora.doc

DN5(Kor).dvi

PowerPoint Presentation

5 Programirljiva vezja 5.1 Kompleksna programirljiva vezja - CPLD Sodobna programirljiva vezja delimo v dve veliki skupini: CPLD in FPGA. Vezja CPLD (

MAGISTERIJ

(Microsoft Word - EV_Ga\232peri\350_1.doc)

Vrste

DES

Microsoft Word - CNC obdelava kazalo vsebine.doc

Zavod sv. Stanislava Škofijska klasična gimnazija Programiranje v Pythonu Program za računanje Maturitetna seminarska naloga iz informatike Kandidat:

CelotniPraktikum_2011_verZaTisk.pdf

resitve.dvi

DODATEK_F8

Delavnica Načrtovanje digitalnih vezij

Društvo za elektronske športe - spid.si Vaneča 69a 9201 Puconci Pravila tekmovanja na EPICENTER LAN 12 Hearthstone Na dogodku izvaja: Blaž Oršoš Datum

Microsoft PowerPoint - IBM Celovito Obvladovanje Varnosti Bostjan Gabrijelcic.ppt

Microsoft Word - diploma-b.doc

Microsoft Word - UP_Lekcija04_2014.docx

DIGITALNE STRUKTURE Zapiski predavanj Branko Šter, Ljubo Pipan 2 Razdeljevalniki Razdeljevalnik (demultipleksor) opravlja funkcijo, ki je obratna funk

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se

Microsoft Word - lipnik16.doc

Kotne in krožne funkcije Kotne funkcije v pravokotnem trikotniku β a c γ b α sin = a c cos = b c tan = a b cot = b a Sinus kota je razmerje kotu naspr

REALIZACIJA ELEKTRONSKIH SKLOPOV

Osnove matematicne analize 2018/19

Delavnica Načrtovanje digitalnih vezij

PRESENT SIMPLE TENSE The sun gives us light. The sun does not give us light. Does It give us light? Raba: Za splošno znane resnice. I watch TV sometim

Brownova kovariancna razdalja

Microsoft Word - Kostevc.doc

ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA

(Microsoft Word - VIS_\212egula_Bojan_1981.doc)

Poskusi s kondenzatorji

DES11_vmesniki

Microsoft Word - M docx

Microsoft Word - ARRS-MS-BR-07-A-2009.doc

(Microsoft PowerPoint - vorsic ET 9.2 OES matri\350ne metode 2011.ppt [Compatibility Mode])

Slikovne transformacije_2017_18_DKT

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 31. avgust 2018 Navodila Pazljivo preberite

Sistemi Daljinskega Vodenja Vaja 1 Matej Kristan Laboratorij za Strojni Vid Fakulteta za elektrotehniko, Univerza v Ljubljani

APS1

STROKOVNI PRISPEVKI Izboljšanje testiranja programske opreme študija primera Sašo Greblo CGS plus, d. o. o., Brnčičeva ulica 13, 1000 Ljubljana saso.g

Microsoft Word - Perc_Kristof_diploma_univ.doc

LaTeX slides

Univerza v Ljubljani

Microsoft Word - UNI_Tomc_Edi_1968.doc

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v

Ime in priimek

Microsoft PowerPoint - OAPS1- Uvod.ppt

No Slide Title

EU-TPD 1 PODROBNOSTI KODIRANJA Informacije za trgovino JB za DCTA, (Final 1.2) Obveznost kodiranja izdelka, urejena s predpisom EU-TPD se n

Diapozitiv 1

PowerPointova predstavitev

(Microsoft Word - Kanalizacija MUHABER-OBRAZLO\216ITEVzaOSMONM.docx)

MED RAZGL 2008; 47: 3 12 RAZISKOVALNI ^LANEK Janez Dolen{ek 1 Simulacije dihanja I Simulation of Pulmonary Ventilation I IZVLE^EK KLJU^NE BESEDE: plju

STAVKI _5_

CpE & ME 519

Microsoft Word - PROSPEKT CSA G2.doc

Microsoft Word - prispevek za DSI.doc

Microsoft Word - Kocijancic2006

UČNI NAČRT PREDMETA / COURSE SYLLABUS Predmet: Numerične metode 1 Course title: Numerical methods 1 Študijski program in stopnja Study programme and l

Predmet: Course title: UČNI NAČRT PREDMETA / COURSE SYLLABUS Uvod v numerične metode Introduction to numerical methods Študijski program in stopnja St

Microsoft Word - Lenardic304

3. Metode, ki temeljijo na minimalnem ostanku Denimo, da smo z Arnoldijevim algoritmom zgenerirali ON bazo podprostora Krilova K k (A, r 0 ) in velja

Microsoft Word - M docx

Analiza vpliva materiala, maziva in aktuatorja na dinamiko pnevmatičnega ventila

Microsoft Word - Zakon o Slovenski izvozni in razvojni banki doc

Microsoft Word - CNR-BTU3_Bluetooth_vmesnik

Naloge iz kolokvijev Analize 1 (z rešitvami) E-UNI, GING, TK-UNI FERI dr. Iztok Peterin Maribor 2009 V tej datoteki so zbrane naloge iz kolokvijev za

Sinopsis

ARRS-BI-FR-PROTEUS-JR-Prijava/2011 Stran 1 od 7 Oznaka prijave: Javni razpis za sofinanciranje znanstvenoraziskovalnega sodelovanja med Republiko Slov

UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA NEŽKA RUGELJ SHOROV ALGORITEM DIPLOMSKO DELO LJUBLJANA, 2017

Transkripcija:

Elektrotehniški vestnik 74(1-2): 49-54, 2007 Electrotechnical Review: Ljubljana, Slovenija Neponovljivo obnašanje programov na razlinih procesorjih Matej Šalamon, Tomaž Dogša Univerza v Mariboru, Fakulteta za elektrotehniko ra(unalništvo in informatiko, Smetanova 17, 2000 Maribor E-pošta: matej.salamon@uni-mb.si Povzetek. lanek obravnava problem neponovljivega obnašanja programov, inštaliranih na raunalnikih z razlinimi procesorji. Predlagan je kriterij za ponovljivost in nain detektiranja neponovljivosti s posebnim testnim programom. Ta vsebuje testne primere, s katerimi je mogoe napovedati, ali lahko priakujemo na raunalnikih z razlinimi procesorji neponovljivo obnašanje poljubne programske opreme. Podrobneje so predstavljeni tudi morebitni vzroki za neponovljivost. Kljune besede: neponovljivost, procesorji, testiranje, simulator elektrinih vezij, Chujev oscilator Software non-repeatability behaviour in different processors Extended abstract. When we run the same program on computers with the same or different processors, we expect its behaviour would be the same. When this is not the case, the program non-repeatability occurs. Non-repeatability can remain hidden to users, if differences between results of different processors are very small. If differences increase in time, execution code behaviour in different processors will no longer be the same. This paper deals with the software non-repeatability problem and its detection with a test program. In section 2 we propose a software repeatability criterion and present an example of circuit simulator nonrepeatability. The test program for the software nonrepeatability prediction, installed on a computer with different processors, is described in section 3. The test program contains different test cases which verify the processors compliance with IEEE 754 and IEEE 854 standards. Results in section 3 show that the reasons for software non-repeatability are errors in the program, compiler errors and execution differences of the same mathematical operations in different processors. The latter occur when the program is running on a computer with a processor whose characteristics do not comply with the above standards. Namely, processor manufacturers build additional functions in their processors in order to achieve better performance and attractiveness for their market, although their functionality is not always in accordance with the IEEE standards. Prejet 12. september, 2006 Odobren 17. januar, 2007 Key words: non-repeatability, processors, testing, circuits simulators, Chua s oscillator. 1. Uvod Izdelovalci razline programske opreme zelo pogosto predpisujejo strojno opremo, ki bo zagotavljala dovolj hitro in pravilno delovanje programa. Pri tovrstni usklajenosti programske in strojne opreme uporabnik priakuje tudi ponovljivo obnašanje programske opreme na raunalnikih z razlinimi, predpisanimi procesorji. Ponovljivo obnašanje programa torej pomeni, da program, inštaliran na raunalnikih z enakimi ali razlinimi procesorji, daje zmeraj popolnoma enake rezultate. V nasprotnem primeru je obnašanje programa neponovljivo. Temeljno naelo znanosti je ponovljivost poskusov in opazovanj. Ponovljivost je lastnost poskusa oziroma opazovanja, da dá v kar se da podobnih razmerah enake oziroma vsaj približno enake rezultate, kar pomeni, da je variiranje med poskusi majhno oziroma zanemarljivo. Znanstvene dokaze je mogoe podati le, e je zagotovljena ponovljivost poskusov in opazovanj. Podobno kot velja za rezultate poskusov, mora veljati tudi za obnašanje programske opreme. e je na dveh raunalnikih z razlinima procesorjema inštalirana enaka programska oprema, mora biti njeno obnašanje oziroma odziv na obeh raunalnikih enak, sicer je obnašanje programske opreme neponovljivo. Neponovljivost je lahko izražena na razline naine. Lahko je prikrita, e so odstopanja med obnašanjem programa, inštaliranega na raunalnikih z razlinimi procesorji, vedno tako majhna, da jih uporabnik sploh ne opazi. V tem primeru je njena detekcija precej

50 Šalamon, Dogša zahtevna, saj zahteva natanno primerjavo procesiranih podatkov v procesorjih. Neponovljivost postane oitna, e se odstopanja med primerljivimi podatki procesorjev s asom veajo. V takšnem primeru postane ez as obnašanje enake izvršne kode programa, na razlinih procesorjih, zelo razlino. Zaradi velikih odstopanj je neponovljivost zelo opazna oziroma jo je mogoe enostavno zaznati. Nastopi lahko tudi situacija, ko program na enem raunalniku popolnoma odpove»se obesi«, medtem ko se na drugem obnaša popolnoma priakovano. V lanku predstavljamo problem neponovljivega obnašanja programske opreme in nain detekcije neponovljivosti s posebnim testnim programom. Drugi del lanka je namenjen opisu predlaganega kriterija za ponovljivo obnašanje programske opreme in primer neponovljivega obnašanje programska - simulatorja elektrinih vezij. V tretjem delu je opisan testni program, ki omogoa napoved morebitnega neponovljivega obnašanja poljubne programske opreme na raunalnikih z razlinimi procesorji. Na koncu so podani tudi rezultati izvedenega testiranja in možni vzroki za neponovljivo obnašanje programske opreme. 2. Kriterij za ponovljivo obnašanje programske opreme Detektiranje neponovljivosti zahteva zajemanje podatkov, procesiranih v primerjanih procesorjih in njihovo primerjavo. Zajemanje podatkov je razmeroma preprosto, e že sam program omogoa zapisovanje rezultatov (številnih vrednosti) v izhodno datoteko ali, e razpolagamo z njegovo izvorno kodo. Slednjo je potrebno modificirati tako, da omogoa prestrezanje in shranjevanje številnih vrednosti posameznih spremenljivk. Kadar ne obstaja nobena od teh dveh možnosti, je zajemanje podatkov precej bolj zahtevno. V takšnih primerih, ki pa so zelo pogosti, je potrebno podatke spremljati s pomojo razhroševalnika na nivoju strojnega jezika. Za detekcijo neponovljivega obnašanja programa P, inštaliranega na raunalniku s procesorjem A in raunalniku s procesorjem B predlagamo naslednje: podatke oziroma vrednosti spremenljivk, uporabljene pri procesiranju s procesorjem A oznaimo z a 1, a 2,... a n in jih zapišimo v obliki vektorja a: a = [ a 1, a2,... a n ], (1) vrednosti, s katerimi procesira procesor B, pa zapišemo v obliki vektorja b: b = [ b 1, b2,... b n ]. (2) Odstopanja med vrednostmi v procesorju A in B ovrednotimo s pomojo razdalje med vektorjema a in b: n d( a, b) = a i b i. (3) i= 1 Kriterij s pomojo katerega sklepamo, ali je obnašanje programa P na raunalniku s procesorjem A in B ponovljivo, je razdalja med primerjanima vektorjema a in b. e je ta enaka ni: d ( a, b) = 0. (4) je obnašanje programa P ponovljivo, sicer je njegovo obnašanje neponovljivo. Obnašanje programa P bo torej ponovljivo, e bodo vse številne vrednosti, ki nastopajo pri izvajanju raunskih operacij v procesorju A popolnoma enake tistim v procesorju B. Oglejmo si praktini primer neponovljivega obnašanja programske opreme. 2.1 Primer neponovljivega obnašanja simulatorja elektrinih vezij Simulator elektrinih vezij SPICE je eno izmed nepogrešljivih orodij nartovalcev integriranih vezij. Gre za kompleksen program, od katerega se priakuje ponovljive rezultate, e ga inštaliramo na raunalnikih z enakimi ali razlinimi in zanj predpisanimi procesorji. Z raziskavami smo ugotovili, da temu zmeraj ni tako. V okviru tega prispevka si oglejmo nekatere izsledke izvedenih raziskav, podrobneje opisanih v literaturi [7] in [8]. S simulatorjem SPICE 1 smo simulirali kaotini Chujev oscilator (slika 1) in ugotovili, da se rezultati asovne analize tega vezja, na raunalnikih z razlinimi procesorji, nekaj asa ujemajo, nakar prinejo vse bolj odstopati. Slika 1: Chujev oscilator [6] testno vezje Figure 1: Chua's oscillator [6] testing circuit Primer tovrstnega odstopanja je prikazan na sliki 2. asovna poteka napetosti na kondenzatorju C2 s asom divergirata, kar kaže na neponovljivo obnašanje testnega vezja, simuliranega z enakim simulatorjem na raunalnikih z dvema razlinima procesorjema Intel Pentium IV in AMD Duron. 1 ICAP/4 verzija 7.51 in 8.3.10.

Neponovljivo obnašanje programov na razli(nih procesorjih 51 Slika 2: asovna poteka napetosti na kondenzatorju C2 v Chujevem oscilatorju, simuliranem na raunalnikih s procesorjem AMD Duron in Intel Pentium IV Figure 2: Voltage time-domain waveforms on capacitor C2 in the Chua s oscillator, simulated on computers with AMD Duron and Intel Pentium IV processors Ugotovili smo, da je neponovljivost zaznavna le, e je obnašanje vezja kaotino in e je izbran dovolj velik as trajanja analize prehodnega pojava [7]. e je osciliranje Chujevega oscilatorja periodino ali e je kljub kaotinemu režimu delovanja izbran prekratek as trajanja analize prehodnega pojava, dejanske neponovljivosti simulacij ni mogoe zaznati. V takšnih situacijah lahko ostane dejanska neponovljivost prikrita. 3. Testiranje neponovljivosti V zgornjem primeru smo razpolagali s programom, ki je omogoal shranjevanje izraunanih vrednosti v izhodno datoteko in s tem preprosto primerjavo rezultatov simulacij. Ker veina programov nima te možnosti, je zajemanje oziroma shranjevanje podatkov precejšnja težava. Zato smo izdelali samostojen program, s katerim je mogoe napovedati, ali lahko na raunalnikih z razlinimi, izbranimi procesorji priakujemo neponovljivo obnašanje poljubne programske opreme. Testni program vsebuje tri testne primere in omogoa shranjevanje njihovih vmesnih in konnih rezultatov v izhodno datoteko. Omogoa tudi primerjavo datotek oziroma detekcijo neponovljivosti na podlagi predlaganega kriterija po enabi (4). Ker je izbor testnih primerov kljunega pomena pri detekciji neponovljivosti, si najprej oglejmo njegove podrobnosti. 3.1 Izbor testnih primerov Testne primere za odkrivanje neponovljivosti smo izbrali na podlagi standarda IEEE 754 in IEEE 854, katerih namen je poenotiti raunske operacije in lastnosti procesorjev razlinih izdelovalcev. Standarda obravnavata raunanje s števili s plavajoo vejico: IEEE 754 obravnava binarno aritmetiko 2, IEEE 854 pa decimalno aritmetiko 3. Upoštevajo ju skoraj vsi današnji izdelovalci procesorjev [1], [2]. Standarda natanno doloata [3], [4]: format zapisa števil s plavajoo vejico: format z enojno natannostjo (f = 24-bitov) 4, razširjeno enojno natannostjo (f = 32-bitov), dvojno natannostjo (f = 53-bitov) in format z razširjeno dvojno natannostjo (f = 64-bitov); pravila zaokroževanja števil s plavajoo vejico; raunske operacije seštevanja, odštevanja, množenja, deljenja, kvadratnega korenjenja; obravnavo ostankov pri izvajanju raunskih operacij; primerjavo števil; pretvorbo med razlinimi formati zapisa števil s plavajoo vejico; pretvorbo med celoštevilnim formatom in formatom s plavajoo vejico; zaokroževanje števil s plavajoo vejico na celoštevilno vrednost; pretvorbo med osnovnimi formati zapisa števil s plavajoo vejico in decimalnim zapisom; izjeme in postopanje z njimi, vkljuno z obravnavo neštevil (NaNs). Kljub navedenim, natanno doloenim pravilom in formatom pa omenjena standarda ne doloata [3], [5]: zgornje meje za število posebnih bitov 5, ki jih uporabljajo procesorji z razširjeno natannostjo; natannega zaokroževanja rezultata transcendentnih funkcij (eksponentnih, logaritemskih, trigonometrinih, inverznih trigonometrinih, hiperbolinih, inverznih hiperbolinih). To je mogoe priakovati razline rezultate enakih matematinih operacij na razlinih procesorjih. Oglejmo si podrobnosti izbranih testnih primerov in njihov namen: 1. testni primer Algoritem: izraun rešitev logistine enabe: xn+ 1 = xn ( 1 xn ) (5) Za ; smo izbrali vrednost ; = 3.8, za zaetno vrednost x 0 = 0.2 in število iteracij n = 10 9. Pri tako izbranih parametrih so rešitve logistine enabe kaotine. Po 10 9 iteracijah se vrednost x zapiše v izhodno datoteko. Namen: preveriti, ali bodo razlini mikroprocesorji dajali enake rezultate pri množenju in odštevanju, ki ju standarda IEEE natanno doloata. 2 Obravnava eksponentni zapis števil z osnovo 2, npr. 2 x. 3 Obravnava eksponentni zapis števil z osnovo 2 ali 10, npr. 2 x ali 10 x. 4 f pomeni število bitov mantise 5 Angl. Extra bits.

52 Šalamon, Dogša Ker je rešitev logistine enabe kaotina, lahko zaradi znanega metuljevega efekta [7] priakujemo, da se bo morebitna izredno majhna razlinost procesorjev pri velikem številu iteracij enabe 5 odrazila z zelo razlinim konnim rezultatom enakega algoritma. 2. testni primer Algoritem: izraun vsote kvadratnih korenov po enabi: y = n i= 0 i. (6) Pri tem smo za vrednost n izbrali veliko število n = 10 9. V izhodno datoteko se zapiše vrednost y po vsaki stoti operaciji seštevanja. Namen: preveriti, ali bodo razlini procesorji dajali enake rezultate pri operaciji korenjenja in seštevanja, ki ju standarda IEEE natanno obravnavata. Iterativno korenjenje in seštevanje velikih števil smo izbrali zato, ker smo predvidevali, da bi lahko morebitno razlinost procesorjev zaznali šele po zadostni akumulaciji odstopanj posameznega sumanda. 3. testni primer Algoritem: izraun rešitev enabe, ki vsebuje trigonometrini funkciji: yn+ 1 = yn + sin (x) + cos(x) (7) Pri tem je y 0 = 0, vrednosti x pa vzame iz intervala 134217728 N x N 134217728+2PQ, po koraku 0.0000001. V izhodno datoteko se zapiše konna vrednost y. Namen: preveriti, ali prihaja na razlinih procesorjih do odstopanj pri raunanju s trigonometrinimi funkcijami in velikimi argumenti, ki jih standarda IEEE 754 in IEEE 854 natanno ne doloata. Vsi trije algoritmi pomenijo rekurzivno izvajanje raunskih operacij z namenom, akumulirati morebitna izredno majhna odstopanja, ki lahko tako postanejo dober indikator razlinosti procesorjev. 3.2 Prevajanje izvorne kode testnega programa Standarda IEEE 754 in IEEE 854 ne obravnavata, kako naj bi se ukazi višjeprogramskih jezikov prevedli v strojne oziroma procesorske ukaze [3]. Zato smo s testnim programom želeli preveriti tudi, ali obstaja možnost razline interpretacije istih ukazov višjeprogramskih jezikov na razlinih procesorjih. Zato smo izvorno kodo testnega programa prevedli 6 z dvema prevajalnikoma: Visual C++ 7.0 in GNUCC 3.2. S prvim smo kodo prevajali v nainu Release (konni) in Debug, z drugim pa v nainu O3 in Debug. Dobili smo štiri razliice istega testnega programa, ki smo jih nato inštalirali na raunalnikih z razlinimi procesorji. S primerjavo rezultatov, ki smo jih dobili pri testiranju s posamezno razliico izvršne kode, smo lahko sklepali o vplivu prevajalnika in naina prevajanja programa na njegovo obnašanje na raunalnikih z razlinimi procesorji. 3.3 Rezultati testiranja Testiranje z opisanim testnim programom smo izvedli na raunalnikih s procesorji: AMD Duron, Intel Pentium IV, Intel Pentium MMX in Cyrix (IBM) 6x86MX. Zanimalo nas je, ali je na teh raunalnikih zagotovljena ponovljivost obnašanja testnega programa in ali lahko vrsta prevajalnika in naina prevajanja vplivata na ponovljivost rezultatov njegove izvršne kode. Rezultate testiranja smo zbrali v tabeli 1. Oznaka pomeni, da rezultati v oklepaju navedenih testnih primerov (TP) niso ponovljivi, oznaka DA pa, da je bil kriterij ponovljivosti izpolnjen pri vseh treh testnih primerih. Iz rezultatov razberemo, da so rezultati testnega programa: 1. ponovljivi, e njegovo izvorno kodo prevedemo s prevajalnikom GNUCC v nainu O3 ali Debug; 2. ponovljivi samo na raunalnikih s procesorji izdelovalcev Intel in AMD, e izvorno kodo testnega programa prevedemo s prevajalnikom Visual C++ v nainu Debug; 3. neponovljivi, e je izvorna koda prevedena s prevajalnikom Visual C++ v nainu Release; 4. neponovljivi, e je izvorna koda prevedena s prevajalnikom Visual C++ v nainu Debug in, e jih primerjamo med raunalnikom s procesorjem Cyrix ter Intel ali AMD. Ker so rezultati, ki smo jih dobili s testnim programom, prevedenim s pomojo prevajalnika GNUCC, na vseh platformah popolnoma enaki, s pomojo prevajalnika Visual C++ pa ne, sklepamo, da lahko na neponovljivo obnašanje programa vpliva tudi vrsta prevajalnika in nain prevajanja izvorne kode. Ker je izvršna koda programa vedno popolnoma enaka, se lahko morebitna neponovljivost rezultatov pojavi le zaradi neenakosti v izvajanju ali interpretaciji iste strojne kode na primerjanih procesorjih. 6 Izvedeno na raunalniku s procesorjem AMD Duron.

Neponovljivo obnašanje programov na razli(nih procesorjih 53 Prevajalnik/ nain prevajanja Visual C++ /Release Visual C++ /Debug GNUCC/ O3 GNUCC /Debug Intel Pentium IV in AMD Duron DA Intel Pentium IV in Cyrix (IBM) 6x86MX (TP1, TP2, TP3) Intel Pentium IV in Intel Pentium MMX DA Primerjani procesorji Cyrix (IBM) 6x86MX in AMD Duron (TP1, TP2, TP3) Intel Pentium MMX in AMD Duron DA Intel Pentium MMX in Cyrix (IBM) 6x86MX (TP1, TP2, TP3) DA DA DA DA DA DA DA DA DA DA DA DA Tabela 1: Rezultati testiranja neponovljivosti s testnim programom, inštaliranim na raunalnikih z navedenimi procesorji Table 1: Results of non-repeatability testing using the test program installed on computers with the stated processors 3.4 Vzroki za neponovljivost Rezultati testiranja kažejo, da je treba vzroke za neponovljivo obnašanje testnega programa iskati v procesorjih in/ali prevajalniku. Razlogi za razline rezultate enakih matematinih operacij v procesorjih so lahko naslednji: Razlini procesorji ne podpirajo vseh formatov zapisa števil, ki jih obravnavata standarda IEEE 754 in IEEE 854. Primer: procesorji, kot so Intel x86/x87, Pentium, P6 in njegovi kloni proizvajalcev AMD in Cyrix, podpirajo primarno format z razširjeno dvojno natannostjo in izvajajo vse aritmetine operacije z razširjeno dvojno natannostjo, ne glede na velikost operandov, shranjenih v pomnilniku. Morebitno zahtevo po rezultatu z dvojno ali enojno natannostjo izvedejo z ustrezno zaokrožitvijo rezultata z razširjeno dvojno natannostjo. Zato lahko slednji odstopa od rezultata, dobljenega s procesorjem, ki podpira le raunanje s števili z enojno ali/in dvojno natannostjo. Lastnosti aritmetike s plavajoo vejico, ki jih standarda IEEE 754 in IEEE 854 natanno ne doloata, so lahko v razlinih procesorjih razlino implementirane. Nekateri procesorji uporabljajo lastne posebne bite, ki v standardu IEEE 754 in IEEE 854 niso doloeni [9]. Primer: DAZ (Denormals Are Zeros) bit in FZ (Flush-to-zero) bit pri procesorjih izdelovalca AMD [10]. Izdelovalci procesorjev poskušajo namre z lastnimi dodatki dosei vejo atraktivnost na trgu. Rezultati testiranja so pokazali, da lahko tudi vrsta prevajalnika in naina prevajanja vplivata na razlino obnašanje programske opreme na razlinih procesorjih. Razlog za to je lahko ena ali ve napak v prevajalniku, zaradi katerih je dopušena razlina interpretacija istih procesorskih ukazov na raunalnikih z razlinimi procesorji. 4. Sklep Neskladnost razlinih procesorjev z doloili standardov IEEE 754 in IEEE 854 in s standardi nedoloenih lastnosti procesorjev so lahko vzroki za neponovljivo obnašanje programske opreme. Izdelovalci procesorjev v izdelke vgrajujejo lastne dodatke, s katerimi želijo dosei vejo atraktivnost na trgu, eprav njihov vpliv ni v skladu z obstojeimi standardi. Neponovljivo obnašanje programske opreme pa je lahko tudi posledica napak v sami programski opremi ali v njenem prevajalniku. Glede na rezultate testiranja sklepamo, da prevajalnik Visual C++ v nasprotju s prevajalnikom GNUCC dopuša razlino interpretacijo istih procesorskih ukazov na razlinih procesorjih. 5. Literatura [1] W. Kahan: Lecture Notes on the Status of IEEE Standard 754 for Binary Floating-Point Arithmetic, Univerity of California, Berkeley, 1995, http://www.cs.berkeley.edu/~wkahan/ieee754status /. [2] J. D. Darcy: Borneo 1.0.2 Adding IEEE 754 floating point support to Java, Berkeley, University of California, 1998. [3] D. Goldberg: What Every Computer Scientist Should Know About Floating-Point Arithmetic, Computing Surveys, marec 1991. [4] B. Verdonk, A. Cuyt, D. Verschaeren: A precision and range independent tool for testing floatingpoint arithmetic I: basic operations, square root and remainder, ACM Transactions on Mathematical Software, letnik 27, št. 1, 2001, str. 92V118.

54 Šalamon, Dogša [5] Sun Microsystems: Numerical Computation Guide, št. 806-3568-10, maj 2000. [6] M. P. Kennedy: Three steps to chaos. II. A Chua's circuit primer, IEEE Transactions on Circuits and Systems I: Fundamental Theory and Applications, letnik 40, št. 10, oktober 1993, str. 657V674. [7] M. Šalamon: Problem neponovljivosti simulacij elektri(nih vezij, doktorska disertacija, 2003, UM FERI. [8] M. Šalamon, T. Dogša: Problem neponovljivosti simulacij elektrinih vezij, Inormacije. MIDEM, 2004, letnik. 34, št. 1, str. 11V17. [9] J. Demmel: Basic Issues in Floating Point Arithmetic and Error Analysis, http://www.cs.berkeley.edu/~demmel/cs267/lecture 21/lecture21.html. [10] Advanced Micro Devices: AMD64 Technology - AMD64 Architecture Programmer's Manual Volume 1: Application Programming, št. 24592, rev. 3.08, april 2003, str. 0V398 Matej Šalamon je docent na Fakulteti za elektrotehniko, raunalništvo in informatiko v Mariboru. Na raziskovalnem podroju se ukvarja predvsem s kaotinimi in kriptografskimi sistemi, simulatorji elektrinih vezij in njihovim testiranjem. Tomaž Dogša je izredni profesor na Fakulteti za elektrotehniko, raunalništvo in informatiko v Mariboru, kjer predava na dodpilomski in podiplomski stopnji ter vodi Center za verifikacijo in validacijo sistemov. Na raziskovalnem podroju se ukvarja predvsem s preverjanjem programske opreme in s simulatorji elektrinih vezij.