- 1993年、Intelは高性能なPentiumプロセッサを発売した
- Pentiumの回路を解析していたところ、3を掛ける複雑な回路が見つかった
- この回路はPentiumの浮動小数点乗算器回路の一部で、64ビットの数値を8進数ベースで乗算する
- 8進数ベース乗算の必要性
- 2進数の乗算は概念的には単純だが遅い
- Pentiumは8進数ベースで乗算することで回路を減らし、速度を高めた
- 8進数乗算は0から7までの数字で掛ける必要があるため複雑になる
- Boothアルゴリズムと×3回路
- Boothアルゴリズムを使って乗算を最適化した
- ×3回路は浮動小数点乗算における特別なケースとして処理する必要がある
- この回路は高速に動作する必要があり、キャリールックアヘッドのような技術を使って性能を最大化している
- キャリールックアヘッドと並列プレフィックス加算器
- キャリールックアヘッド加算器は、すべてのキャリービットを並列に計算することで加算を高速に実行する
- 並列プレフィックス加算器を使って、8ビットチャンクごとにキャリールックアヘッドを実装した
- Kogge-Stoneアルゴリズムを使って遅延を最小化し、回路を効率的に構成した
- キャリーセレクト加算器
- キャリーセレクト加算器は2つの加算を同時に実行し、キャリーが決まるとすぐに結果を提供する
- Pentiumは×3回路で各8ビットチャンクに対してキャリーセレクト加算器を使用した
- BiCMOS出力ドライバ
- ×3回路の出力には高い電流が必要であり、BiCMOSプロセスを使って信号遅延を減らした
- BiCMOSはCMOSとバイポーラトランジスタを組み合わせ、高い性能を提供する
- 結論
- Pentiumの×3回路は複雑な設計で、過去のマイクロプロセッサよりも多くのトランジスタを使用している
- これは、プロセッサの複雑性がどれほど増したかを示す一例である
1件のコメント
Hacker Newsのコメント
Trinaryコンピュータのエミュレーションでは、3の累乗で割る処理をビットシフトと加算に変換する方法がある
Cinematronicsのアーケードゲーム用プロセッサは、2つの12ビットアキュムレータを持っていた
Peter KoggeはStanfordで博士号を取得し、IBMフェローとしてマルチコアCPUを発明した人物である
アドレス計算では3倍にする処理はよくある作業である
乗算器では、7倍の代わりに8倍して1を引く方法がある
×3乗算器には約9000個のトランジスタが含まれており、これは1976年のZ80マイクロプロセッサより多い
radix-8 Booth乗算器にはx3回路が必要である
8086: 29,000
radix-8乗算の欠点は、0から7までの数を掛ける処理が複雑なことだ