3 पॉइंट द्वारा GN⁺ 2024-12-30 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Intel का Pentium FDIV bug

  • पृष्ठभूमि: 1993 में Intel ने high-performance Pentium processor जारी किया। Pentium में पुराने Intel 486 processor की तुलना में तेज floating-point division algorithm सहित कई सुधार थे। लेकिन एक साल बाद, गणित के प्रोफेसर Nicely ने twin primes के reciprocal पर शोध करते समय पाया कि Pentium floating-point division करते समय गलत परिणाम दे रहा था.

  • bug की खोज और प्रभाव: Intel ने इस समस्या को "बहुत मामूली तकनीकी समस्या" माना, लेकिन यह bug एक बड़ा media issue बन गया। अंततः Intel ने सभी दोषपूर्ण Pentium chips को बदलने का फैसला किया, जिसकी कंपनी को 475 मिलियन डॉलर की लागत आई.

  • bug का कारण: Pentium का division algorithm lookup table का उपयोग करता है। Intel ने 1994 में घोषणा की कि इस bug का कारण script error की वजह से table से पाँच entries का छूट जाना था, लेकिन वास्तव में गणितीय गलती के कारण 16 entries छूट गई थीं। इनमें से पाँच missing entries ने FDIV bug पैदा किया.

  • floating-point numbers का अवलोकन: floating-point numbers बहुत बड़े और बहुत छोटे numbers को represent कर सकते हैं। Intel की 8087 floating-point coprocessor chip ने IEEE 754 standard के विकास में योगदान दिया, और Pentium सहित अधिकांश computers ने इस standard को implement किया.

  • SRT division: Pentium division करने के लिए SRT algorithm का उपयोग करता है, जो standard binary division से दोगुना तेज है। SRT algorithm quotient digits चुनना आसान बनाने के लिए एक असामान्य approach का उपयोग करता है.

  • lookup table की संरचना: Pentium की lookup table में 2048 entries हैं, और पाँच missing entries FDIV bug का कारण बनती हैं। इस table को programmable logic array (PLA) के रूप में implement किया गया है.

  • bug की गणितीय सीमा: division algorithm का मुख्य चरण partial remainder को divisor से divide करके quotient digit प्राप्त करना है। इस प्रक्रिया में अगर गलत q value चुनी जाती है, तो algorithm recover नहीं कर सकता.

  • carry-save और carry-lookahead adders: Pentium की division circuit addition और subtraction को कुशलतापूर्वक करने के लिए carry-save adder का उपयोग करती है। यह adder FDIV bug पैदा होने में महत्वपूर्ण भूमिका निभाता है.

  • bug fix: Intel ने table की सभी unused entries को 2 से भरकर bug को ठीक किया। इससे गलत entries तक पहुँचने की संभावना खत्म हो गई, और PLA equations सरल हो गईं, जिससे PLA और छोटा बन गया.

1 टिप्पणियां

 
GN⁺ 2024-12-30
Hacker News की राय
  • लेखक ने कहा कि अगर Pentium bug के बारे में कोई सवाल हो तो वह जवाब देने के लिए तैयार है

    • Intel की प्रतिक्रिया दिलचस्प थी, और सभी users के processors को replace न करने की वजह से नकारात्मक मीडिया कवरेज बहुत हुआ
    • Amazon Colorsoft के मामले का ज़िक्र किया गया, जहाँ defect को चुपचाप replace करके समस्या हल की गई
    • Apple AirPods Pro में crackling समस्या को भी चुपचाप replacement के ज़रिये हल किए जाने का उल्लेख किया गया
  • Intel के whitepaper में दावा किया गया था कि आम user को 27,000 साल में एक बार यह समस्या होगी, लेकिन IBM ने विश्लेषण किया कि customers को हर कुछ दिनों में यह समस्या आ सकती है

    • लगता है Intel ने एक single user को आधार बनाया, जबकि IBM ने support requests को ध्यान में रखा
    • जब बड़ी संख्या में requests संभाली जाती हैं, तो बहुत छोटी संभावना वाली समस्याएँ भी बार-बार सामने आ सकती हैं
  • वास्तविक उपयोग के दौरान bug को पहचानने वाला सिर्फ़ एक ही व्यक्ति था

    • छात्रों को गलत calculator देने वाले एक अध्ययन का ज़िक्र करते हुए समझाया गया कि error से प्रभावित होना और उसे पहचान पाना अलग बातें हैं
    • ज़्यादातर लोग यह जाँचते ही नहीं कि कंप्यूटर का output सही है या नहीं
  • यह अनुभव भी साझा किया गया कि customers के CPU को नियंत्रित नहीं किया जा सकता था, इसलिए libraries में विशेष code जोड़कर समस्या को हल करना पड़ा

  • Intel के table generation algorithm की समस्या की ओर इशारा करते हुए कहा गया कि PR में इसे मामूली समस्या बताया गया, लेकिन असल में यह उससे कहीं बड़ी थी

  • यह सवाल उठाया गया कि Intel ने table की सभी unused entries को 2 से क्यों भर दिया

    • कहा गया कि ज़्यादा सुरक्षित तरीका सिर्फ़ 5 entries को बदलना होता
    • यह भी पूछा गया कि जब संशोधित table ज़्यादा सरल था, तो शुरू से ऐसा क्यों नहीं किया गया