موضوع مقاله: باگ پنتیوم اف‌دی‌آی‌وی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # باگ پنتیوم اف‌دی‌آی‌وی | مقدمه: بخاطر این باگ، پردازنده ممکن است هنگام تقسیم برخی از جفت‌های خاص اعدادِ با دقت بالا، نتایج ممیز شناورِ باینری اشتباهی برگرداند. | ## بخش 1: باگ پنتیوم اف‌دی‌آی‌وی | مقادیر ازدست‌رفته در جدول جست‌وجوی مورد استفاده توسط الگوریتم تقسیم ممیز شناور، باعث محاسبه اشتباهات کوچکی شد. با اینکه این خطاها در اکثر موارد مورد استفاده به‌ندرت رخ داده و باعث انحرافاتی در رسیدن به خروجی درست می‌شوند، در شرایط خاص امکان رخ دادنِ مکرر آن‌ها وجود داشته و می‌توانند باعث انحرافات چشم‌گیرتری شوند. با اینکه اکثر کاربران به‌ندرت با این باگ مواجه می‌شدند (طبق تخمین مجله بایت، امکان بروز نتایج اشتباه، در تقسیمات ممیز شناور با پارامترهای رندوم، ۱ در ۹ بیلیون می‌باشد)، این مشکل و مدیریت اولیه اینتل در حل مشکل، مورد انتقاد شدیدِ جامعه تکنولوژی گرفت. در دسامبر سال ۱۹۹۴، اینتل پردازنده‌های معیوب را جمع‌آوری کرد و این اولین باری بود که یک تراشه کامپیوتری به‌طور کامل جمع می‌شود. در ژانویه سال ۱۹۹۵، اینتل «هزینه پیش از مالیاتی به میزان ۴۷۵ میلیون دلار با درآمد یا ظاهرا کل هزینه جایگزینی پردازنده‌های معیوب» را اعلام کرد. شرح به‌منظور بهبود سرعت محاسبات تقسیم ممیز شناور در تراشه پنتیوم روی 486DX، اینتل تصمیم به تعویضِ تقسیم شیفت و تفریق با الگوریتم سوینی، رابرتسون و توچر (SRT) گرفت. الگوریتم SRT می‌تواند در هر سیکل ساعت، دو بیت از نتیجه تقسیم را تولید کند در حالی که الگوریتم ۴۸۶ توانایی تولید فقط یک بیت را داشت. این الگوریتم با استفاده از یک آرایه منطقی قابل‌برنامه‌ریزی با ۲۰۴۸ درایه پیاده‌سازی شده که ۱۰۶۶ درایه آن باید با یکی از مقادیر زیر پر شده باشد: -۲،۱، ۰، +۱، +۲. وقتی آرایه اصلیِ پنتیوم کامپایل شد، پنج مقدار به‌طور درست در قطعه‌ای که آرایه را روی تراشه‌ها وارد می‌کرد بارگیری نشده بودند - به همین دلیل پنج خانه آرایه دارای مقدار صفر بودند در حالی که باید دارای مقدار +۲ می‌بودند. در نتیجه محاسباتی که مربوط به این پنج خانه هستند، خطا می‌دهند؛ این خطاها به‌دلیل خاصیت بازگشتیِ الگوریتم SRT، می‌توانند به‌طور مکرر افزایش پیدا کنند. در حالت‌های ناسالم، خطا می‌تواند به چهارمین رقم اصلیِ نتیجه برسد گرچه این اتفاق نادر است. اجرای این تقسیم در هر نرم‌افزاری که از کمک‌پردازنده ممیز شناور استفاده می‌کرد مانند ماشین‌حساب ویندوز، به کاربران امکان این را می‌داد که بفهمند تراشه پرنتیوم‌شان آسیب دیده‌است یا خیر. مقدار صحیح محاسبه عبارت است از: وقتی به مبنای ۱۶ که مورد استفاده پردازنده است برده شود، ۴٬۱۹۵٬۸۳۵ = 0x4005FB و ۳٬۱۴۵٬۷۲۷ = 0x2FFFFF عدد ۵ در 0x4005FB، باعث دسترسی به خانه‌های «خالی» آرایه می‌شود. در نتیجه مقدار برگردانده‌شده توسط یک پردازنده پنتیوم معیوب، در چهار رقم یا بیشتر اشتباه است. | ## بخش 2: باگ پنتیوم اف‌دی‌آی‌وی | در تاریخ ۱۳ ژوئن سال ۱۹۹۴، او متوجه یک سری ناسازگاری در محاسبات شد، بعد مدت کوتاهی که به مجموعه کامپیوترهایش یک سیستم پنتیوم اضافه کرد و تا ۱۹ اکتبر سال ۱۹۹۴، قادر به برطرف کردن عوامل دیگری (مثل مشکلات برنامه‌نویسی، مجموعه تراشه‌های مادربورد و غیره) نبود. طبق گزارش‌ها، خودِ اینتل در ژوئن سال ۱۹۹۴ از مشکل باخبر شده بود و در این مرحله اقدام به حل مشکل کرده بود ولی تصمیم داشت جزییاتی به‌صورت عمومی منتشر نکند و سی‌پی‌یو معیوبی را فراخوانی نکند. در تاریخ ۳۰ اکتبر سال ۱۹۹۴، ایمیلی برای استادان و محققان مختلف فرستاد که در آن مشکل را شرح داده و از آن‌ها درخواست کرده بود که عیب پنتیوم‌های 486-DX4s و پنتیوم‌های مشابه را گزارش دهند. این قضیه اولین بار در ۷ نوامبر سال ۱۹۹۴، در مقاله‌ای در الکترونیک انجنیر تایمز، با مضمون «اینتل نقص فنی اف‌پی‌یو پنتیوم را برطرف می‌کند» توسط الکساندر ولف به‌طور عمومی مطرح شد، پس از آن در اخبارِ شبکه CNN در تاریخ ۲۲ نوامبر پخش شد. همچنین توسط روزنامه‌های نیویورک تایمز و بوستون گلوب گزارش شد و در روزنامه بوستون گلوب در صفحه اول قرار گرفت. در این مرحله، اینتل عیب ممیز شناور را تأیید کرده بود ولی مدعی بود که مشکل جدی‌ای وجود ندارد و اکثر کاربران درگیرش نمی‌شوند. اینتل به کاربرانی که توانایی اثبات درگیر شدن‌شان با این مشکل را داشتند، پیشنهاد تعویض پردازنده داد. با این همه، هرچند که بیشتر آمار غیر وابسته به شرکت، به این موضوع پی بردند که باگ تأثیر کمی برای اکثر کاربران دارد، باز هم تأثیر منفی چشم‌گیری روی وجهه عمومی شرکت گذاشت.IBM، فروش کامپیوترهایی که دارای سی‌پی‌یوی اینتل بودند را متوقف کرد و سهام اینتل به‌شدت افت کرد. برخی در این صنعت، جویای علت این تصمیم IBM شدند؛ IBM در آن زمان سی‌پی‌یوهای پاورپی‌سی را تولید کرد و از خسارت وارد شده بر اعتبار پنتیوم یا اینتل، سود زیادی دریافت کرد. با این حال، این تصمیم باعث شد که خریداران حقوقیِ قطعات کامپیوتر، درخواست تعویض سی‌پی‌یوهای موجود پنتیوم را بدهند و مدتی بعد، سایر تولیدکننده‌های کامپیوتر، شروع به پیشنهاد تعویض تراشه‌های معیوب پنتیوم، بدون این که سؤالی بپرسند، کردند. رشد نارضایتی از پاسخ اینتل باعث شد این شرکت پیشنهاد تعویض همهٔ پردازنده‌های پنتیوم را در تاریخ ۲۰ دسامبر بدهد. در ۱۷ ژانویه سال ۱۹۹۵، اینتل «هزینه پیش از مالیاتی به میزان ۴۷۵ میلیون دلار با درآمد یا ظاهرا کل هزینه جایگزینی پردازنده‌های معیوب» را اعلام کرد. اینتل به‌دلیل منع توزیع‌کننده‌ها و تولیدکنندگان تجهیزات اصلی (OEM) از شرکت در برنامه فراخوانی و مجبور شدن مصرف‌کنندگان به تعویض تراشه‌ها توسط خودشان، مورد انتقاد قرار گرفت. اینتل دلیل خود را برای این موضوع در صفحه وب پشتیبانی خود منتشر کرد و محتوا به این صورت بود «این تصمیم شخصی خود مصرف‌کننده است که مشخص کند آیا عیب روی دقت برنامه‌شان تاثیر می‌گذارد یا خیر.» مقاله‌ای در سال ۱۹۹۵ در Science، در رابطه با اهمیتِ مشکلات نظریه اعداد در کشف باگ‌های کامپیوتری منتشر شد که این موضوع را تشریح می‌کند و پیشینه‌ای از ریاضیات و تاریخچه ثابت برون می‌دهد، مشکل به‌درستی در حال حل شدن بود که او باگ را کشف کرد. | ## بخش 3: باگ پنتیوم اف‌دی‌آی‌وی | پاسخ اینتل به باگ اف‌دی‌آی‌وی، به‌عنوان یک مورد از تأثیر روابط عمومی بر مشکلی که اثر کاربردی مشکل ذکر شده را تحت‌الشعاع قرار می‌دهد، شناخته شده بود. در حالی که اکثر کاربران با عیب گفته شده درمحاسبات روزانه برخورد نمی‌کردند، پاسخ اولیه شرکت در رابطه با تعویض نکردن تراشه‌ها تا وقتی که که مشتریان تضمین کنند تراشه‌ها معیوب هستند، باعث واکنش منفی گروهی از متخصصان این صنعت شد. بازخورد عمومی بعدی، اطمینان مصرف‌کنندگان به سی‌پی‌یوها را درهم شکست و باعث تقاضا برای اقدام حتی از طرف افرادی که امکان برخورد با مشکل را نداشتند، شد. در آن زمان از اندرو گروو، مدیر عامل اینتل، در ژورنال وال استریت با این سخنان نقل‌قول شده بود «من فکر می‌کنم که بخش اصلی از مشکل که فراموش کرده‌ایم این است که ما به خود اجازه می‌دهیم به دیگران بگوییم راجع به چه‌چیزی نگران باشند یا نباشند، چه‌کاری باید انجام دهند، چه‌کاری باید انجام ندهند.» به‌دنبال مشکلات بعد از کشف باگ و فراخوانی پس از آن، افزایش قابل‌ملاحظه‌ای در استفاده از راستی‌آزمایی رسمیِ عملیات‌های ممیز شناور سخت‌افزاری در سراسر این صنعت نیمه‌فعال دیده شد. به‌خاطر کشف این باگ، تکنیکی به نام «وارسی مدل در سطح واژه»، مناسب الگوریتم SRT در سال ۱۹۹۶ توسعه یافت. اینتل به استفاده از راستی‌آزمایی رسمی در توسعه ساختار سی‌پی‌یوهای بعدی ادامه داد. در توسعه پنتیوم ۴، از ارزیابی مسیر نمادی و اثبات قضیه استفاده شد تا تعدادی باگ که تأثیر مشابهی با باگ ذکر شده داشتند، پیدا کنند. اولین ریزمعماری اینتل که از راستی‌آزمایی رسمی به‌عنوان روش اصلی راستی‌آزمایی استفاده می‌کرد، Nehalem بود که در سال ۲۰۰۸ توسعه یافت. مدل‌های تحت‌تاثیر باگ اف‌دی‌آی‌وی، روی پنتیوم ۶۰ تا ۶۶ مگاهرتزی P5 800 در ورژن‌های قبلی تا D1 و پنتیوم ۷۵، ۹۰ و ۱۰۰ مگاهرتزی P54C 600 تا ورژن‌های قبلی تا B5 تأثیر می‌گذارد. اصلاحات نرم‌افزاری اصلاحات نرم‌افزاری مختلفی توسط سازندگان تولید شد تا حول محور باگ فعالیت کنند. هرچند انجام این ضرب باعث کاهش چشمگیر سرعت می‌شود - در برخی موارد زمان اجرای محاسبه را دو برابر می‌کند. چالش اصلیِ شرکت‌های نرم‌افزاری، پیاده‌سازی اصلاحی در یک نرم‌افزار از قبل موجود، به‌خصوص اصلاحی که بر پایه کتابخانه‌های خارج از دسترسی آن‌ها بود. این موضوع باعث ایجاد اکسپشنی می‌شود که یک اکسپشن هندلر که خود از طریق اصلاح ایجاد شده، آن را دریافت کند. مایکروسافت محیط رفع مشکلی در سطح سیستم عامل در ورژن‌های ویندوز تا ویندوز XP ارائه کرد. | ## جمع‌بندی | سیستم عامل دارای برنامه‌های کمکی بود تا وجود باگ را بررسی کرده و در صورت پیدا شدن باگ، اف‌پی‌یو را غیرفعال سازد.