Pentium FDIVバグの歴史
概要
Pentium FDIV
バグは、
インテルのPentiumプロセッサの浮動小数点演算ユニットに存在した問題で、特定の除算で誤った結果が出るものでした。この問題は厳密には設計ミスに該当しエラッタと呼ばれていますが、一般的には「
バグ」として報道されていました。本項ではこの
バグの経緯と影響を詳述します。
発端
1994年10月30日、リンチバーグ大学の数学教授トーマス・R・ナイシーはPentiumプロセッサの
バグを発見し、報告しました。彼は数値計算を行っている最中に、特定の割り算が不正確な値を返すことに気づきました。9月には異なる
CPU間で計算結果の食い違いが確認され、さらに多くの検証結果が
インターネットを通じて広がりました。この問題は、Pentiumのx87浮動小数点除算命令である「FDIV」に起因し、その後「Pentium FDIV
バグ」と呼ばれるようになりました。
バグの根本原因は、Pentiumに新たに導入された除算回路の設計ミスです。具体的には、除算の過程で参照するルックアップテーブルのエントリの一部が誤ってゼロに設定され、これにより計算結果が誤ってしまったのです。この問題は特定の値がオペランドとして与えられた場合に必ず再現されるもので、確率的に発生するものではありませんでした。
当初の対応
この報告により
インテルは否定から始まり、やがて問題を認めるものの、影響が軽微であると主張しました。一方で、影響を受けた顧客にはプロセッサの交換を行うと公表し、代替の除算ルーチンも提供しましたが、これがFDIVよりも遅いことが問題視されました。競合他社からの激しい批判も相次ぎ、特にユーザーからの信頼を損ねる結果となりました。
チップの交換
1994年12月20日、
インテルは
バグのあるPentiumプロセッサを全て交換することを決定しました。これはチップの自主回収として初の事例であり、多大なリスクを伴うものでしたが、実際に交換を希望する顧客の大半は企業ユーザーであり、個人ユーザーは少数でした。この対応によって
インテルは
バグの影響を軽減し、依然として業績に悪影響を与えない結果となりました。
結果
結果として、Pentium FDIV
バグは計算精度を重視する顧客に影響を及ぼしました。高精度の計算を求める研究者やユーザーは、他社の製品や旧型のi486を選ぶ場面もありました。この出来事は、今後の
CPU設計においてエラッタに対する対策を講じる重要な教訓となり、
Pentium Pro以降の
CPUには
マイクロコード修正機能が追加されました。これにより、将来的に新たな問題が発生した場合でも、ソフトウェアのアップデートで回避可能となりました。
まとめ
Pentium FDIV
バグは、単なる技術的な失敗に留まらず、
インテルにとっての信頼回復や設計プロセスの改善の必要性を呼び起こしました。競合他社との厳しい競争の中で、この一件は業界全体に深い影響を与えたのです。