АРХИМЕДОВА ТАЧКА

ЧУВЕНИ PENTIUM-ов БАГ

Pixabay

Одређивање тзв. Брунове константе која се јавља у Теорији простих бројева није, само по себи, нарочито важан проблем. Међутим, њено израчунавање довело је до сазнања да и рачунари нису безгрешни. Томас Најсли, математичар са малог Линчбург колеџа у Вирџинији (САД), одредио је 1993. вредност Брунове константе с тачношћу до осмог децималног места. Овај подуват није толико интересантан колико једна друга чињеница: током својих компјутерских прорачуна Најсли је наишао на више грешака, које је уочио само зато што их је ради сигурности изводио на више различитих рачунара. Највећа грешка коју је том приликом уочио био је чувени Pentium-ов баг.


Проф. др Миодраг Петковић

Повремено ће се у овој рубрици у појављивати занимљиви прилози из света математике који укључују интересантне математичке формуле, догађаје из света математике и живота великих математичара, као и елементарне али интригантне и изазовне задатке за чије решавање је довољно средњошколско знање математике. Већина ових прилога, и још математичких прича и занимљивости може се наћи на сајту www.miodragpetkovic.com , аутора ових прилога (опције теме у менију).

Прости бројеви (бројеви који су дељиви једино с бројем 1 и сами са собом) често се јављају као узастопни непарни бројеви, као што су 3 и 5, 11 и 13, 17 и 19 итд. Такви прости бројеви називају се простим близанцима. Тренутно (година 2020.) највећи прости близанци су

који имају више од 388.342 цифара сваки. Скоро сваке године рекорди ове врсте се обарају помоћу рачунара. Мада се претпоставља да близанаца има бесконачно много, ова хипотеза још није доказана. Интересантно је да се она помиње у филму The Mirror Has Two Faces у коме професор математике, кога игра Џеф Бриџис, објашњава ову хипотезу професорки књижевности коју игра Барбра Стрејсенд.

Године 1919. норвешки математичар Виго Брун доказао је да, ако сабирамо реципрочне вредности узастопних близанаца, сума ће тежитии једној одређеној вредности, данас познатој као Брунова константа:

(чак и да их има бесконачно много). С обзиром на познату чињеницу да сума реципрочних вредности простих бројева 1+1/3+1/5+1/7+1/11+… дивергира ка бесконачности (ово је доказао Ојлер још у 18. веку), коначна сума близанаца је заиста импресивна. Интересантна је и особина да се осим првог, сви парови близанаца јављају у облику (6n-1,6n+1).

Брунова константа и њено одређивање није, само по себи, нарочито важан проблем. Међутим, њено израчунавање довело је до сазнања да и рачунари нису безгрешни, мисли се пре свега на дизајнирање и конструкцију њиховог хардвера. Томас Најсли, математичар с малог Линчбург колеџа у Вирџинији, одредио је 1993. вредност Брунове константе с тачношћу до осмог децималног места, B=1.90216058. Овај подуват није толико интересантан колико једна друга чињеница: током својих компјутерских прорачуна Најсли је наишао на више грешака, које је уочио само зато што их је ради сигурности изводио на више различитих рачунара. Највећа грешка коју је том приликом уочио био је чувени Pentium-ов баг. На најновијем процесору Pentium фирме Интел”, који се на тржишту појавио 1993. и био одмах продат у милионима комада, дошло је до необичне грешке у потпрограму за множење, тако да, на пример, збир

1/824633702441+1/824633702443

(збир реципрочних вредности простих бројева-близанаца) није био добро израчунат; резултат није био тачан на 19 децимала, како је потребно и како је обећано, већ само на 9 децимала. А то је драматично лоше ако сабирамо много бројева и притом желимо да спречимо акумулацију грешака. Ово је била катастрофа за Интел” који је морао поново да пројектује чип и да га замени на милионима места.

Kатастофа је тим пре била већа што је била праћена бруком јер су у Интелу” и сами претходно открили грешку, али су је прећутали. Ова грешка и замена исправним чиповима коштала је компанију скоро 500 милиона долара.

У конкретном случају проблем је био у аритметичкој једниници Pentium процесора. Да би се повећала брзина израчунавања, коришћене су готове таблице са унапред израчунатим вредностима елементарних фунција за неке опсеге вредности аргумената (lookup table). Ове таблице подсећају делимично да давно коришћене логаритамске таблице или таблице тригонометријских функција. Од 1066 улазних података, колико је требало да садржи lookup таблица конкретног Pentium процесора, недостајало је 5 података, што је у неким (истина, врло ретким) случајевима доводило до тога да је процесор враћао недовољно тачне резултате.

На овом месту требало би рећи да је дизајнирање ефикасног и поузданог харвера или софвера рискантан задатак. Познато је више багова о којима се у литератури доста дискутовало. Чак и ако је аритметика без недостатака, понекад (мада врло ретко) долази до чудног понашања, углавном код нумеричких проблема који су истински врло тешки и лоше условљени. Ово није изненађујуће: пресликавање непрекидног скупа реалних бројева на коначан дискретан скуп (какав имају компјутерске аритметике с покретном тачком) не може да прође без икаквих проблема.

У наставку дајемо неколико познатих багова поменутог Pentium процесора прве генерације:

Аритметичка јединица за дељење у првој верзији процесора реализованог 1994. године није идеално функционисала. У екстремно ретким случајевима, она би при дељењу давала само три тачне децималне цифре. На пример, резултат израчунавања 8391667/12582905 износио је 0.666869… уместo 0.666910

Програмски пакет Maple, верзија 7.0, када је израчунавао 1001!/1000!, давао би 1 umesto 1001 (подсећамо, n! означава производ свих природних бројева од 1 до n).

Резултат израчунавања 850 x 77.1 (= 65535) помоћу ранијих верзија Excel-a 2007 износио је 100001. Грешка је настала при конверзији бинарног у децимални код.

Windows Calculator и Microsoft Excel u Windows-у 95/98 су, уместо тачне вредности (у аритметици двоструке прецизности), при дељењу 4,195,835/3,145,727 (= 1.333820449136241002…), давали резултат 1.333739068902037589, код кога су све подвучене цифре погрешне.

Kад већ говоримо о несавршеностима компјутерског хардвера (које се из генерацију у генерацију отклањају у приличној мери), неизбежно је поменути како је једна обична конверзија из једног бројног система у други на рачунару ограничених могућности довела до велике катастрофе и људских жртава.

У извештају Генералног компјутерског бироа САД од 25. фебруара 1991. стоји да је ракетни одбрамбени систем Patriot, који је дејствовао у Дахрану (Саудијска Арабија), пропустио да уђе у траг и пресретне долазећи ирачки пројектил Скад. Скад је погодио војне бараке и усмртио 28 америчких војника. Рачунар који је коришћен за управљање ракетом Patriot био је заснован на 24-битној аритметици, развијеној 1974.

Patriot прати своје мете мерећи време које је потребно радарском зраку да се одбије од мете и стигне натраг. Време се записује помоћу сатног система у десетинкама секунде, али се смешта у меморију као цео број. Да би се омогућило израчунавање времена праћења, време је конвертовано у 24-битни бинарни број са покретном тачком. Грешке заокруживања при конверзији времена проузроковале су помак у „области домета, који се користио за праћење мета. Служба пројекта Patriot добила је 11. фебруара 1991. податке с терена и уочила помак од 20% у области домета Patriot-a након што је систем непрекидно радио 8 сати. Ови подаци су указали на то да систем након 20 узастопних сати рада више неће бити у могућности да изврши пресретање ракете Скад.

Сати

Секунде

Израчунато врме

(у секундама)

Одступање

(у секундама)

Померање области домета

(у метрима)

0

0

0

0

0

1

3600

3599.9966

0.0275

7

8

28800

28799.9725

0.0687

55

20

7200

71999.9313

0.0687

137

48

172800

172799.8352

0.1648

330

72

259200

259199.7528

0.2472

494

100

360000

359999.6567

0.3433

687

Војни стручњаци су одмах започели рад на модификованом софтверу који би вршио компензацију нетачног израчунавања времена, али су замало закаснили. Дана 25. фебруара Алфа батерија, која је штитила ваздухопловну базу Дахран, већ је била у непрекидним ратним операцијама 100 сати. Нетачно израчунавање времена проузроковало је да систем више није могао да прати долазеће ракете Скад. Горња табела јасно показује како је с повећањем времена рада Patriot изгубио траг својих мета. Бројеви дати у табели су тачни са релативном грешком од 2^{-20} у компјутерској репрезентацији броја 0,1 – константе која је коришћена за конвертовање десетинки секунде сатног механизма система у секунде (2^{-20} је релативна грешка настала одсецањем 0,1 на 23 бита иза бинарне тачке).

Kуриозитета ради, наводимо три готово невероватна примера у којима погрешни резултати и неизвршени задаци нису производ икакве грешке у програмирању или хардверу компјутера већ су резултат лоше спецификације. На пример, сателит за испитивање климе планете Марс срушио се на њу септембра 1999. године због катастофалне грешке: један од тимова који су дизајнирали нумерички софтвер подразумевао је да је јединица за дужину метар, док је други тим користио стопе. Врло слично десило се јуна 1985. године када се свемирски шатл лоше позиционирао у настојању да региструје одбијени ласерски зрак од врха планине, али се то није десило јер је унет податак да је планина висока 10.000 метара уместо тачних 10.000 стопа. Поменимо на крају случај лоше пројектованог моста између Немачке и Швајцарске (2004. године) због тога што су две земље користиле различите податке о надморској висини на којој је мост саграђен.

О аутору

Stanko

Оставите коментар