8087数学コプロセッサの高速ビットシフタのダイ解析
本記事では、Intel 8087数学コプロセッサに搭載された高速ビットシフタのダイ(チップ内部)解析を詳細に解説する。ビットシフタは浮動小数点演算の効率を高める重要な回路であり、その設計と実装について顕微鏡写真を用いて掘り下げている。
背景メモ
Intel 8087は、1970年代末〜80年代のPCに広く使われたCPU「8086/8088」用の数値演算コプロセッサ。浮動小数点の計算をハードウェアで高速に実行し、当時としては画期的な演算能力を提供した。本稿の著者Ken Shirriffは、チップを物理的に削って顕微鏡撮影し、回路をリバースエンジニアリングするブログで知られる人物。
- 8087は8086/8088の「数学の友達」として設計され、CPUからは単に数値演算命令を投げるだけで、煩わしい浮動小数点計算を代行した。
- 本稿で焦点を当てている「高速ビットシフタ」は、数値のビットを左右にずらす回路。乗算や除算、正規化などで大量に使うため、CPUのレジスタよりはるかに多くのビットを一度にシフトできる専用回路を8087は載せていた。
- 著者はシフタのトランジスタ配置を特定し、チップ面積の約6%(全体で約6000トランジスタ中400個ほど)を占めることを明らかにした。この割合から、ソフトウェアでやると重いシフト処理をハードウェアに任せるという設計判断が読み取れる。
- 興味深い点は、8087がクロックを共有せず非同期にCPUと通信したこと、またシフタ回路がなぜ「バレルシフタ」ではなく独自の「2段階スワップ方式」を採用したかという設計トレードオフの解説。