2bit分の演算をもう一歩進めたのがSRT法である。前ページでの①~③の関係を、図にまとめたのが図3になる。除数と非除数、各々の商の関係をまとめたもので、「正規化」というのは、「0~1の間になるように調整」という意味である。
この図3に、さらに「引き戻し法」と呼ばれる方法を加えたものが図4になる。引き戻し法とは、除算の結果として「余りが負になる」ことを許すというものだ。負になった場合、あとで余りを正に引き戻す処理が入ることから、「引き戻し法」と呼ばれる。この場合、1桁ならあまりは-1、0、1の3種類となる。それが2桁なので、あまりは-2から2までの5種類となる。
図4の例では、商が重なりあう場所がいくつかあるが、これは「商がどちらの場合もあり得る」という意味だ。最終的な商はどちらかに確定するが、その判断は後の引き戻しの処理で決まる。
図4の右上を拡大したのが図5である。この例では、除数を16等分(1マスあたり32分の1)、余りを12等分(1マスあたり2分の1)としたが、数ヵ所の例外を除けば、除数と余りから「商を得られるテーブル」が構築できることがわかる。数ヵ所の例外は、余りをもう一段細かくする(1マスあたり1/4)ことで、これを回避できる。
結果として、「ある2bitの除算の商が、テーブルを参照するだけで求められる」ことになり、大幅な高速化が可能になる……というのが、このSRT法の要点である。ある2bitの商を算出すると、次の2bit分の余りが算出できるので、これを繰り返すことで除算が可能になるわけだ。
なぜFDIVバグは発生したのか
Pentiumに話を戻そう。Pentium FDIVバグが発生した理由は、このテーブルの値が5ヵ所間違っていたことによるものだった。その結果、このテーブルの当該ヵ所を参照する割り算は、必ず値がおかしくなる。残念ながら、これはファームウェアで修正できるレベルではなかったし、当時はまだ「CPUのバグをファームウェアで修正をする」という概念がなかったから、CPUの交換が必要になったのは致し方ないところだろう。
お詫びと訂正:掲載当初、テーブルの値が1ヵ所間違っていたと記載していましたが、正しくは5ヵ所でした。ここに訂正するとともに、お詫びいたします。(2013年1月18日)
この話をなぜCPU黒歴史第1シーズンで触れなかったかというと、確かに大問題は大問題であったのだが、結果から言えばそれほどインテルに悪影響を与えなかったからだ。むしろ、インテルのサポート対応を良くするうえで、効果的だったとも言える。
確かに、FDIVバグを持ったPentiumの交換には非常に金がかかった。しかしこのトラブルがあったにも関わらず、Pentiumの売れ行きはすぐ元に戻り、Socket 5からSocket 7の時代にかけて、広く利用される製品となった。当時、浮動小数点演算を積極的に扱うユーザーは、それほど多くなかった。科学技術計算系はともかく、一般消費者は「まだ整数演算だけできればOK」という時代だったから、とも言える。また、最終的なインテルの対応に好感を持った消費者が、少なくなかったこともこれを後押しした。
またインテルはこれに懲りて、問題があったらすぐに公開して対応するという姿勢を全社的に整えることとなる。これにより、それまではあまり表に出てこなかった「エラッタ」※1のリストなどもこの後は入手が容易になった。
※1 Eratta、CPUが抱えるバグや設計上の問題点。
Pentium関係のバグでは、1997年に発覚した「F00Fバグ」※2の方が重大だった。しかしインテルが速やかに情報を公開するとともに、解決法を提供したため、OSベンダー側がこれに対応して、バグを発生させないように対処したことで、大きな影響はなかった。
※2 「lock cmpxchg8b eax」という命令を処理しようとすると、ハングアップする。本来は不正命令として例外処理を行なうべき命令。
その後インテルがリリースした製品でも、Intel 820チップセットや、最近ではIntel 6シリーズチップセット、Intel SSD 520などでリコールの問題が起きている。だが、これらが深刻な影響を与えずに済んでいるのは、やはりPentium FDIVバグの教訓がいまだにきちんと生きていることの証拠と考えられる。
その意味では、インテルの黒歴史のひとつになりそうだったのが、一転して貴重な体験をもたらした功労者となったのがPentium、と言えるだろう。
この連載の記事
-
第775回
PC
安定した転送速度を確保できたSCSI 消え去ったI/F史 -
第774回
PC
日本の半導体メーカーが開発協力に名乗りを上げた次世代Esperanto ET-SoC AIプロセッサーの昨今 -
第773回
PC
Sound Blasterが普及に大きく貢献したGame Port 消え去ったI/F史 -
第772回
PC
スーパーコンピューターの系譜 本格稼働で大きく性能を伸ばしたAuroraだが世界一には届かなかった -
第771回
PC
277もの特許を使用して標準化した高速シリアルバスIEEE 1394 消え去ったI/F史 -
第770回
PC
キーボードとマウスをつなぐDINおよびPS/2コネクター 消え去ったI/F史 -
第769回
PC
HDDのコントローラーとI/Fを一体化して爆発的に普及したIDE 消え去ったI/F史 -
第768回
PC
AIアクセラレーター「Gaudi 3」の性能は前世代の2~4倍 インテル CPUロードマップ -
第767回
PC
Lunar LakeはWindows 12の要件である40TOPSを超えるNPU性能 インテル CPUロードマップ -
第766回
デジタル
Instinct MI300のI/OダイはXCDとCCDのどちらにも搭載できる驚きの構造 AMD GPUロードマップ -
第765回
PC
GB200 Grace Blackwell SuperchipのTDPは1200W NVIDIA GPUロードマップ - この連載の一覧へ