Кіріспе
Intel P5 Pentium жылжымалы нүктелі блогындағы қате. Pentium FDIV қатесі – Intel Pentium процессорларының алғашқы нұсқаларындағы жылжымалы нүктелі блогына (FPU) әсер ететін аппараттық ақау. Бұл ақауға байланысты процессор жоғары дәлдігі бар сандардың белгілі бір жұптарын бөлген кезде екілік жылжымалы нүктелік есептеулерде дұрыс емес нәтижелерді көрсетті. Бұл ақауды 1994 жылы Линчбург колледжінің математика профессоры Томас Р. Нисли ашқан. FPU-ның жылжымалы нүктелік бөлу алгоритмінде қолданылатын анықтама кестесіндегі жоқ мәндер есептеулерде шағын қателерге алып келді. Көптеген жағдайларда бұл қателер сирек кездесіп, дұрыс нәтижелерден аз ауытқуларға себеп болды, бірақ кейбір жағдайларда қателер жиірек туындап, маңызды ауытқуларға әкелуі мүмкін. FDIV ақауының ауырлығы талқыланып жүр. Көптеген пайдаланушылар үшін бұл ақау өте сирек кездескен (Byte журналының болжамы бойынша, кездейсоқ параметрлермен 9 миллиардтан бір жылжымалы нүктелік бөлу дұрыс емес нәтиже беруі мүмкін), бірақ бұл кемшілік және Intel-дің мәселені бастапқыда шешу жолы да технологиялық қоғамдастықтан күшті сынға ұшырады. 1994 жылдың желтоқсан айында Intel ақаулы процессорларды қайтарып алды, бұл компьютерлік чиптерді толық қайтарудың алғашқы жағдайы болды. 1994 жылғы жылдық есебінде Intel компаниясы «бұл микропроцессорларды алмастыру және есептен шығару үшін салықтан бұрын 475 миллион доллар жұмсалғанын» мәлімдеді.
The Pentium FDIV bug is a hardware bug affecting the floating point unit (FPU) of the early Intel Pentium processors. Because of the bug, the processor would return incorrect binary floating point results when dividing certain pairs of high precision numbers. The bug was discovered in 1994 by Thomas R. Nicely, a professor of mathematics at Lynchburg College. Missing values in a lookup table used by the FPU's floating point division algorithm led to calculations acquiring small errors. While these errors would in most use cases only occur rarely and result in small deviations from the correct output values, in certain circumstances the errors can occur frequently and lead to more significant deviations. The severity of the FDIV bug is debated. Though rarely encountered by most users (Byte magazine estimated that 1 in 9 billion floating point divides with random parameters would produce inaccurate results), both the flaw and Intel's initial handling of the matter were heavily criticized by the tech community. In December 1994, Intel recalled the defective processors in what was the first full recall of a computer chip. In its 1994 annual report, Intel said it incurred "a $475 million pre tax charge to recover replacement and write off of these microprocessors."
Анықтау және жауап беру
Томас Нисли, Линчбург колледжінің математика профессоры, жай сандарды, егіз жай сандарды, жай сандардың үштіктерін және жай сандардың төрттіктерін санау үшін код жазған. Нисли 1994 жылдың 13 маусымында өзінің компьютерлер тобына Pentium жүйесін қосып, есептеулерде кейбір қателерді байқады, бірақ 1994 жылдың 19 қазанына дейін басқа факторларды (бағдарламалау қателіктері, аналық плата чипсеттері және т.б.) жоюға мүмкіндік таппады. Intel компаниясы 1994 жылдың маусым айында мәселені өздігінен анықтап, сол кезде түзету жұмыстарын бастады, бірақ зардап шеккен процессорларды жария етпеді немесе қайта шақыртпады. 1994 жылдың 30 қазанында Нисли түрлі академиялық байланыстарға қате туралы электрондық хат жіберіп, 486 DX4, Pentium және Pentium клондары бойынша қателікті тексеру туралы есептерді сұрады. Кейіннен CNN телеарнасы 22 қарашада осы ақпаратты эфирге шығарды. Бұл туралы New York Times және Boston Globe газеттерінде де жазылды, соңғысы бетіне шықты. Осы кезде Intel өзгермелі нүктедегі қатені мойындады, бірақ ол елеусіз және көптеген пайдаланушыларға әсер етпейді деп мәлімдеді. Intel зардап шеккенін дәлелдейтін пайдаланушыларға процессорларды ауыстыруды ұсынды. Дегенмен, тәуелсіз бағалаулар көрсеткендей, қате көптеген пайдаланушыларға шектеулі әсер ететін болса да, бұл компания үшін маңызды жағымсыз жариялымға әкелді. 2019 жылғы сөйлесуінде Джон Ромеро Quake-тің дамуы туралы ой бөлісіп, Майкл Абраш сағаттап іздеген, белгілі бір камера бұрыштарынан қарағанда ойын деңгейінің бөліктері күтпеген жерден пайда болатын қателіктің жиі және тұрақты түрде қайта жаңғыруын сипаттады. IBM Intel процессорларын қамтитын компьютерлерді сатуды тоқтатты, ал Intel акцияларының құны айтарлықтай төмендеді. IBM-нің шешімінің себебіне кейбір сала мамандары күмән келтірді; IBM сол кезде PowerPC процессорларын өндірді және Pentium немесе Intel компаниясының беделіне келген кез келген зияннан пайда көруі мүмкін еді. Алайда, бұл шешім ПК жабдықтарын сатып алушы компаниялардың қолданыстағы Pentium процессорларын ауыстыруды талап етуіне және жақын арада басқа ПК өндірушілерінің ақаулы Pentium чиптерін "ешқандай сұрақсыз" ауыстыруды ұсынуына әкелді. 1995 жылдың 17 қаңтарында Intel компаниясы кірістен салық алдында 475 миллион доллар төлегенін жариялады, бұл ақаулы процессорларды ауыстырумен байланысты жалпы шығын болды. Intel компаниясының FDIV қатесіне берген жауабы проблеманың клиенттерге тигізген нақты әсерінен гөрі проблеманың қоғамдық қатынастарға тигізген әсерінің мысалы ретінде келтірілді. Көптеген пайдаланушылар күнделікті компьютерлік жұмыстарында қатеге тап болмаса да, компанияның клиенттер зардап шеккенін кепілдендіре алмаса, чиптерді ауыстырмау туралы бастапқы реакциясы сала мамандарының наразылығын тудырды. Кейінгі жариялымдар CPU-ға деген тұтынушылардың сенімін шайқалтты және мәселеге тікелей қатысы жоқ адамдардан да іс-қимыл талабын тудырды. Ол кездегі Intel компаниясының бас директоры Энди Гроув The Wall Street Journal газетінде: "Біздің жіберген қатеміз – адамдардың неге уайымдау керектігін немесе уайымдамау керектігін, не істеу керектігін немесе істемеу керектігін айтуға тырысқандық", – деді. Intel кейіннен CPU архитектурасын әзірлеуде ресми тексеруді кеңінен пайдаланды. Pentium 4 әзірлеу кезінде символдық траекторияны бағалау және теоремаларды дәлелдеу ұқсас қайта шақыру оқиғасына әкелуі мүмкін көптеген қателерді табу үшін қолданылды. 2008 жылы әзірленген Nehalem – ресми тексеруді негізгі растау әдісі ретінде қолданған алғашқы Intel микроархитектурасы болды.
Тиісті модельдер
FDIV қатесі D1 деңгейінен бұрынғы 60 және 66 МГц Pentium P5 800 процессорларына, сондай-ақ B5 деңгейінен бұрынғы 75, 90 және 100 МГц Pentium P54C 600 процессорларына әсер етеді. 120 МГц P54C және P54CQS процессорлары бұл қатеден зардап көрмейді.
Бағдарламалық жасақтамаларды түзету
Өндірушілер бұл қатеге қарсы жұмыс істеу үшін әртүрлі бағдарламалық түзетулер шығарды. IEEE Computational Science & Engineering журналында жарияланған бір мақалада сипатталған нақты алгоритм – қате түрде нөлді қамтитын бағдарламаланатын логикалық массив ұяшықтарына қол жеткізуді тудыратын бөлгіштерді тексеру, және егер олар табылса, бөлшектің есемін және бөлімін 15/16-ға көбейту. Бұл оларды «қателі» диапазоннан шығарады. Бұл түзетудің жылдамдыққа әсері бар, ең нашар жағдайда, тек FDIV операцияларын орындайтын бағдарлама үшін орындалу уақыты екі есеге артады, себебі әр FDIV 40 сағаттық циклдің орнына 80 цикл алады. Көбірек кездейсоқ бөлгіштермен FDIV-тің орташа уақыты шамамен 50 циклды құрады, яғни бөлгішті тексеру үшін 10 цикл қосылды: 1024 кездейсоқ бөлгіштің тек 5-і ғана масштабтау түзетуін іске қосады. FDIV көптеген бағдарламаларда сирек кездесетін операция болғандықтан, түзету орнатылған кездегі жалпы баяулау әдетте бір процент немесе одан аз болды.