私の半導体業界での経験で学んだ用語を私の勝手な解釈で思い出と一緒に解説しようという今回のシリーズ。今回は「Errata(エラッタ)とBug(バグ)」を取り上げたい。今回も正確性については甚だ自信がないが読み物だと思ってお付き合い願いたい。
半導体業界におけるエラッタとバグの意味
もともと「エラッタ」とは誤字、誤植、誤謬などを意味する英語である(Errataは複数形で単数形はErratum)。マイクロプロセッサーは何億個にものぼる膨大な数のトランジスタを組み合わせてシステムを組んだ回路を小指の爪サイズのシリコンチップに集積する。この技術は恐ろしく微細なもので、かなり前のAMDのAnnual Reportで「我々が持つ最先端の0.35ミクロン(350nm)の微細技術は、虫ピンのヘッド部分にニューヨーク市全体の市街地図をストリート名までのレベルで書き込むくらいの技術です」、という例えをしていたのを憶えている。現在の最先端技術はこの技術をはるかに凌ぐ微細化であるからその凄さは推して知るべしである。
さて、こうした超複雑な回路技術/微細加工技術でも人間のやることであるから100%完ぺきという事はあり得ず必ず過ちはある。その多くは回路設計の段階におけるミスであるが、このミスを含んだマスクを基にして製品化されたプロセッサーはその仕様や性能などに影響が出る場合がある。製品の出荷の際にはこれらの"エラッタ"のうちクリティカルなものは公表され、製品仕様書に「エラッタシート」が追加される。ソフトウェアであれば出荷後の"アップデート"で修正できるがマイクロプロセッサーのようなハードウェアではそうはいかない。こうしたエラッタは次回のマスク変更などの際に纏めて修正されるが、「製品の実際のパフォーマンスに重大な欠陥があり」と判断された場合「バグ」と認識される。こうなるとメーカーはかなり厄介な問題を抱えることになる。
半導体史上もっとも大きなバグ事件を引き起こしたPentium
以前、AMDのBarcelonaのバグの件について書いたが、マイクロプロセッサーの歴史上一番有名なバグ問題はやはりIntelのPentiumの「FDIVバグ事件」であると思っている。
Pentiumはプロセッサー史上もっとも成功したCPUとして知られているが、致命的なバグ問題で史上最大のリコールを行ったCPUとしても有名である。
いわゆるFDIV(x86のアセンブリー言語の浮動小数点演算のニーモニック部分を指す)事件の経緯の概要は下記のようであった。
- 1994年6月にPentiumを購入したバージニア州の大学教授がPentiumの浮動小数点演算が間違った答えを出すことを発見し、4か月の詳細な検証の後にこれをIntelに伝えた。
- Intelは現象を認めたものの「これは非常にまれに起こるケース」とし、次のマスク変更の際のマイクロコード変更で修正するという判断をしこの問題を放っておいた。
- このIntelの対応に不満を抱いた教授は当時普及し始めたインターネットを通じて教授仲間にこの事実を知らせたところ、この現象が他でも起こっていることを突き止めた。
- この問題はマスコミの知るところとなり、テレビニュースで報道されるまでに拡散・炎上したが、Intelは従来の判断を変えなかった。
- この現象が衆知の事実となるとIBMがIntelに対しPentium搭載のパソコンの出荷停止を表明し、他のパソコンメーカーもこれに追従した。これにより問題はスキャンダル化した。
- Intelはついに該当製品の全数リコールと、修正版出荷を決定し12月暮れに発表した。
- この結果Intelは次の四半期決算に4億7500万ドルの交換費用を計上した。
この事件はマイクロプロセッサーという半導体製品が家庭のパソコンに入りだし、インターネットが急速に普及した時期に起こった非常に象徴的な事件として多くの人の記憶に残るものである。