Pentium FDIV bag
Pentium FDIV баг је компјутерски баг у јединици за рачунање са покретним зарезом (енг. floating point unit, FPU). Баг узрокује погрешнан резултат при дељењу реалних вредности. Открио га је 1994-е године професор Томас Р. Најсли са Линчберг колеџа.[1] Интел је приписао грешку недостајећим вредностима у лукап табели која је коришћена при дељењу.[2]
Озбиљност FDIV бага је упитна. Иако су се обични корисници ретко сусретали са овом грешком (Часопис Бајт процењује да се 1 у 9 милијарди дељења са случајним параметрима изврши нетачно),[3] и пропуст и Интелова иницијална реакција на ситуацију су оштро критиковани од стране заједнице.
У децембру 1994. године, Интел је повукао дефектне процесоре. У јануару 1995. године, Интел је најавио "накнаду од 475 милиона долара од зараде (пре пореза), што је наводно укупан износ трошкова у вези са заменом процесора са грешком."[1]
Опис
[уреди | уреди извор]На погођеним чиповима се користио Свинијев, Робертсонов и Тошеров (СРТ) алгоритам за дељење. Он се реализује као програмибилно логичко поље са 2048 ћелија, од којих је 1066 требало да буде испуњено једном од пет вредности: -2, -1, 0, +1, +2. На чиповима са грешком, пет елемената који је требало да садрже вредност +2 су недостајали, и уместо тога је повратна вредност била 0.[3]
Хронологија
[уреди | уреди извор]Томас Најсли, професор математике на Линчберг колеџу, је написао код за тражење простих бројева, близанаца простих бројева, тројки простих бројева, и четворки простих бројева. Најсли је приметио неке недоследности у израчунавањима 13. јуна 1994. године, непосредно након што је убацио Пентиум систем у његову групу рачунара, али није могао да елиминише друге факторе (као што су грешке у програму, матична плоча, чипсет и сл) до 19. октобра 1994. године. 24. октобра 1994. године је пријавио проблем Интелу. Према Најслију, његов контакт у Интелу је касније признао да је Интел био свестан проблема од маја 1994. године, када је Том Краљевиц, студент Пурдју Универзитета који је радио за Интел у Хилсбору, Орегону, открио пропуст током тестирања FPU јединице за ново Р6 језгро које је први пут употребљено у Пентиум про архитектури.
30. октоба 1994-е, Најсли је послао имејл описом грешке које открио у Пентиумовој јединици за рад са покретним зарезом његовим разним контактима, тражећи додатна тестирања грешке на 486-DX4s, Пентиуму и Пентиумовим клоновима.[1]
Недостатак у Пентиумовом FPU-у је брзо верификован од стране других људи широм интернета и постао познат, као и Пентиум FDIV буг (FDIV је инструкција за дељење у покретном зарезу у x86 асемблеру). Пронађен је пример када је резултат дељења био погрешан за око 61 делова на милион.[1]
Прича се први пут појавила у штампи 7. новембра 1994. године у чланку објављеном у Electronic Engineering Times, "Интел исправља Пентиум FPU квар" (енг. "Intel fixes a Pentium FPU glitch") Александра Вулфа.[4]
Причу је касније преузео ЦНН у сегменту емитованом 21. новембра 1994.[1] То је ову грешку довело међу ширу јавност.
Јавно, Интел је признао ману у њиховим јединицама за рад са бројевима у покретном зарезу, али је тврдио да није озбиљна и неће утицати на већину корисника. Интел је нудио да замени процесоре корисника који су могли да докажу да грешка постоји у њиховом процесору. Међутим, иако је већина независних процена тврдило да је грешка малог значаја и да ће имати занемарљив утицај на већину корисника, она је изазвала велико негодовање јавности. Компаније као што су ИБМ (чији се ИБМ 5x86C микропроцесор у то време такмичио са Интел Пентиум линијом) су се придружили осудама.
Дана 20. децембра 1994. године, Интел је понудио да замени све Пентиум процесоре с грешком свима који то затраже, као одговор на растући притисак јавности.[5] Иако се испоставило да је само мали део власника Пентиум процесора вратио своје чипове, финансијски утицај на компанију је био значајан. 17. јануара 1995. године, Интел је најавио "накнаду у износу од $475 милиона долара од зараде (пре пореза), што је наводно укупан износ трошкова у вези са заменом процесора са грешком"[1] Неки неисправни чипови су касније претворени у Интелове привеске за кључеве.[6]
Чланак из 1995. године у Сајенсу описује значај проблема из области теорије бројева у откривању грешака и даје математичко образложење и историју Бранове константе, проблема на коме је Најсли радило када је открио грешку.[7]
Погођени модели
[уреди | уреди извор]Овај проблем се јавља само на неким моделима оригиналног Пентиум процесора.[8] Грешка је постојала само у неким процесорима Пентиум породице са фреквенцијом часовника мањом од 120 MHz.[8] На погођеним моделима, алат Processor Frequency ID Utility може да провери постојање овог бага.
Десет погођених процесора су наведени у наставку.
Породица | Модел | Ревизија | Ревизија језгра | Фреквенција часовника | FSB брзина | S-spec |
---|---|---|---|---|---|---|
5 | 1 | 3 | Б1 | 60 МHz | 60 MHz | Q0352, Q0412, SX753 |
5 | 1 | 3 | Б1 | 66 MHz | 66 MHz | Q0353, Q0413, SX754 |
5 | 1 | 5 | С1 | 60 MHz | 60 MHz | Q0466, SX835, SZ949 |
5 | 1 | 5 | С1 | 66 MHz | 66 MHz | Q0467, SX837, SZ950 |
Породица | Модел | Ревизија | Ревизија језгра | Фреквенција часовника | FSB брзина | S-spec |
---|---|---|---|---|---|---|
5 | 2 | 1 | Б1 | 75 MHz | 50 MHz | Q0601 |
5 | 2 | 1 | Б1 | 90 MHz | 60 MHz | Q0542, Q0613, Q0543, SX879, SX885, SX909, SX874 |
5 | 2 | 1 | Б1 | 100 MHz | 66 MHz | Q0563, Q0587, Q0614, SX886, SX910 |
5 | 2 | 2 | Б3 | 75 MHz | 50 MHz | Q0606, SX951 |
5 | 2 | 2 | Б3 | 90 MHz | 60 MHz | Q0628, Q0611, Q0612, SX923, SX922, SX921, SX942, SX943, SX944, SZ951 |
5 | 2 | 2 | Б3 | 100 MHz | 66 MHz | Q0677, SX960 |
Неки Интел 80486 OverDrive и Пентиум OverDrive процесори су такође подложни FDIV грешци, као и F00F грешци.
Методе детекције
[уреди | уреди извор]Универзални
[уреди | уреди извор]Присутност грешке се може проверити ручно, извршавањем следећег израчунавања у било којој апликацији која користи процесорску репрезентацију бројева са покретним зарезом, као што су калкулатор за Windows или Мајкрософт Ексел у Windows-у 95/98.
Тачна вредност је:
Када се претвара у хексадекадну вредност коју користи процесор, 4195835 = 0x4005FB и 3145727 = 0x2FFFFF. '5' у запису 0x4005 изазива грешку у логичком колу. Као резултат тога, вредност коју враћа Пентиум процесор у одређеним ситуацијама је погрешна на четири или више цифара:[9][10]
Види још
[уреди | уреди извор]Референце
[уреди | уреди извор]- ^ а б в г д ђ Professor Thomas Nicely. „Pentium FDIV flaw FAQ”.
- ^ „Statistical Analysis of Floating Point Flaw: Intel White Paper” (PDF). Intel. 9. 7. 2004. стр. 9. Solution ID CS-013007. Архивирано из оригинала (PDF) 6. 4. 2016. г. Приступљено 5. 4. 2016.
- ^ а б Tom R. Halfhill (mart 1995). „An error in a lookup table created the infamous bug in Intel's latest processor”. BYTE (March 1995). Архивирано из оригинала (– Scholar search) 9. 2. 2006. г. Приступљено 19. 12. 2006.
- ^ Alexander Wolfe. „Intel fixes a Pentium FPU glitch”.
- ^ „Intel adopts upon-request replacement policy on Pentium processors with floating point flaw; Will take Q4 charge against earnings”. Business Wire. 20. 12. 1994. Архивирано из оригинала 10. 7. 2012. г. Приступљено 24. 12. 2006.
- ^ „How many engineers does it take to change a lightbulb?”. Boiledbeans. 20. 4. 2009. Архивирано из оригинала 3. 2. 2010. г. Приступљено 10. 11. 2009.
- ^ Cipra, Barry A. (13. 1. 1995). „How number theory got the best of the Pentium chip”. Science. 267 (5195): 175. PMID 17791336. doi:10.1126/science.267.5195.175.
- ^ а б „FDIV Replacement Program: Frequently asked questions”. Intel. 20. 3. 2009. Solution ID CS-012748. Архивирано из оригинала 11. 5. 2009. г. Приступљено 10. 11. 2009.
- ^ „Pentium FDIV bug - a Picture”. Kansas University Institute for Policy and Social Research. 30. 11. 1994. Приступљено 3. 11. 2010.
- ^ „Ivars Peterson's MathTrek: Pentium Bug Revisited”. Mathematical Association of America. Архивирано из оригинала 10. 12. 2008. г.