Intel 8087 FPUの中核をなす加算器
原題: The Adder at the Heart of Intel’s 8087 FPU
日本語訳
# Intel 8087 FPUの中核をなす加算器
2つの数値を加算するという概念は、一見すると単純なものに思えます。しかし、1970年代のIntel 8087 FPUにおいて、69ビットの加算器を用いてこれを行うことは、極めて困難な課題でした。この加算器は、正接(タンジェント)や余弦(コサイン)、指数演算といった多くの機能が依存する中核的な機能であるため、基本的には完璧なものでなければなりませんでした。最近の8087のダイレベル解析において、ケン・シリフ(Ken Shirrif)氏は、半導体史におけるこの「鼓動する心臓部」の構造、レイアウト、および動作について深く掘り下げています。
74シリーズのロジックICなどの市販部品を使えば、単純なバイナリ加算器を誰でも構築することは可能です。しかし、問題はいかに高速化するかという点にあります。例えば、69ビット目が、キャリー(繰り上がり)が前のビットを順次伝播してくるのを待たなくて済むようにしなければなりません。この解決策の主な手法は、加算を4ビットのブロックに分割して問題の規模を4分の1に縮小し、さらに最適化されたマンチェスター・キャリー・チェーン(Manchester carry-chain)方式のキャリー・ルックアヘッド(carry-lookahead)を実装することでした。
このキャリー・ルックアヘッドのバリエーションの主な利点は、パフォーマンスを大きく損なうことなく、必要なトランジスタの数を削減できる点にあります。後にIntelは、より高速ではあるものの、より多くのトランジスタを必要とするKogge-Stone(コグ・ストーン)加算器へと移行することになります。
NMOSテクノロジーを用いてこの加算器全体を実装し、ダイの他の部分とすべて配線するには、Intelのエンジニアによる多大な創意工夫が必要でした。前述の通り、この加算器はいかなる演算においても、ある段階で事実上常に使用されるためです。そのため、多くの周辺レジスタと、それらを管理するための回路が必要となり、その複雑さの一部はマイクロコードによって、残りの一部はシリコン(ハードウェア)によって処理されていました。
原文(英語)を表示
As simple as the concept of adding two numbers appears at first glance, doing it in the 1970s in Intel’s 8087 FPU with its 69-bit adder was still a tall order. This is namely the core feature that many features like tangents, cosines and exponentiation rely on, so it had to be basically perfect. In a recent die-level analysis of the 8087 [Ken Shirrif] dives into the structure, layout and functioning of this ‘beating heart’ of this piece of semiconductor history.
Although anyone can build a simple binary adder out of off-the-shelf parts including 74-series logic ICs, the problem is to make it fast so that the 69th bit doesn’t have to wait for e.g. a carry to trickle all the way through the preceding bits. The main way that this is solved is by breaking addition into 4-bit blocks, reducing the problem by a factor of four, along with an optimized Manchester carry-chain carry-lookahead implementation.
The main advantage of this variation of a carry-lookahead is that it reduces the number of required transistors, without sacrificing too much performance. Later on Intel would switch to the faster, but more transistor-intensive Kogge-Stone adder.
Implementing this entire adder with NMOS technology and wiring it all up to the rest of the die required a lot of ingenuity on the side of the Intel engineers, as as previously noted this adder is effectively always used in any operation at some stage. This necessitates many surrounding registers and in turn circuitry to manage these, with part of the complexity handled in microcode and part in silicon.