

Intel 8231 と 8232 は、浮動小数点演算コプロセッサ(FPU)の初期設計であり、同社の主要CPUのi8080ラインで使用するために販売された。これらは、1977 年と 1979 年に AMD が発表したAm9511 と Am9512 FPU のライセンス版であり、AMD はこれらを世界初のシングルチップ FPU ソリューションであると主張した。[1] [2]
採択
i8231/i8232 (およびそれらの AMD ブランドの兄弟製品) は主に i8080 (または AMD クローンの Am9080) と組み合わせることを目的としていましたが、単純な待機状態の挿入やステータス ポーリングルーチンから、周辺プロセッサやアドイン ボードに適した割り込みやDMA コントローラ駆動方式まで、設計上の複数のインターフェイス オプションにより、少量のグルー ロジックを使用することで、DMA サブシステムまたは予備の割り込み入力/割り込みベクターを備えたほぼすべてのマイクロプロセッサ システムで使用できました。AMD の元のドキュメントには、いくつかの異なる例が記載されていました。[2]これは、最初に市販されたシングル チップ FPU の 1 つとして貴重な機能であり、その潜在的な市場を大幅に拡大しました。これは、 x86 CPU ラインに密接に結び付けられた、その後の Intel の社内設計による8087 (およびその他のx87ファミリ) FPU とは対照的でした。例えば、i8231Aは6502ベースのApple IIライン用のApplied Analytics MicroSPEED IIおよびII+アクセラレータカードで使用されていましたが[3] 、 Z80、MC6800、i8085、さらには16ビットのZ8000でも例が示されていました。さらに、8087の導入前に、Intel自身の予備データシートでは、当時新しかった8086に適したチップとして提案されていました。[4]
容量
Intel 8231 (および改訂版 8231A) は、算術演算処理装置 (APU) です。32 ビットの「倍」精度(後に 64 ビット浮動小数点数を表すために使われるようになった用語で、32 ビットは「単」精度と見なされます) 浮動小数点、および 16 ビットまたは 32 ビット (「単」または「倍」精度)の固定小数点演算を、独自の標準に従って 14 種類の算術および三角関数で実行します。APU は、ここに示すアルゴリズムを使用してチェビシェフ多項式を使用します。入手可能な APU バージョンの 4 MHz は 235.00 米ドル、2 MHz は 100 個以上の数量で 149.00 米ドルでした。[5] 後の Intel 8232 は、浮動小数点プロセッサ ユニット (FPU) です。これは、( i80387およびそれ以降の FPUで使用されている) IEEE-754標準(ドラフト)に準拠した 32 ビットまたは 64 ビット(真の単精度および倍精度)浮動小数点演算を実行しましたが、4 つの主要な算術関数(加算、減算、乗算、除算)のみを実行しました。 [1] [6] 入手可能な FPU バージョンの 4 MHz は 235.00 米ドル、2 MHz は 100 個以上の数量で 149.00 米ドルでした。[7]
これら3つのチップはすべて、i8080や当時のほとんどのマイクロプロセッサと同様に、 8ビットの データバス設計を採用していた。8231は最大3MHzで動作可能であり[1]、8231Aと8232は最大4MHzで動作可能であった[1] [4](3MHzに制限されていたAm9512 [2]からわずかに改善)。動作はCPUと同期するか、(8231Aと8232では)ホストシステムのバス分離の程度に応じて非同期で実行可能であった。非同期操作は、機能セットに追加された便利な機能です。たとえば、約 1 MHz の Apple II システムを 4 MHz の 8231A で拡張して、他の制限よりもはるかに高速な数値処理のメリットを享受したり、5 MHz の i8085 ベースのシステムで 8231A または 8232 をホストしたりして、互換性を維持するために 4 MHz 以下に減速する必要がなくなりました。また、割り込み駆動の周辺機器設計と合わせて、CPU と FPU の間である程度の並列処理が可能になりました。CPU は、基本的に「オフボード」のコプロセッサにコマンドとデータを渡した後、通常の処理を再開し、コプロセッサから処理が完了したことが通知された場合にのみ、浮動小数点サブタスク (結果を受け取り、必要に応じてさらにコマンドを発行するため) に戻ります。この並列化は、より複雑な機能の一部が FPU で完了するまでに数ミリ秒かかる場合 (コンピューティング用語では永遠に相当します)、全体的なシステム スループットを向上させるために不可欠でした。
命令実行時間は非常に変動しやすく、初期の設計では、後のより進化したFPUに見られるものよりもはるかに長いのが一般的でした。たとえば、データとスタック処理命令を無視すると、8232では単精度(32ビット)減算の場合は56クロック周期、倍精度(64ビット)除算の場合は4560周期に及び、[4]実効処理速度(4MHzでクロックした場合)は877~71429 FLOPSでした。 8231(A) の命令は、16 ビット固定小数点加算の 17 周期から、一般的な 32 ビット浮動小数点演算の 98 ~ 378 周期 (関数自体だけでなく、オペランドと結果の実際の大きさ、各数値の "1" ビットの数にも大きく依存)、最大で 12032 周期までの範囲にわたり、命令とデータの組み合わせに応じて、332、10.6k ~ 40.8k、235.3k FLOPS (4 MHz 時) のパフォーマンスを実現します。[6]これらの数字は現代の観点からは低いように思えるかもしれないが、後継のi8087(より広いデータバスとアドレス範囲により、より大きなメモリ空間へのより高速な転送、より高い数値精度、拡張された命令/関数セット、およびIEEE-754に近い準拠が可能)と比較するとかなりよく、通常のCPUでソフトウェアエミュレーションを使用して同じ計算を実行する場合と比べて大幅に高速であった。フル8MHzで動作する比較的洗練された16ビットの8086でさえ、コプロセッサなしでは数十から1000 FLOPS程度しか達成できず、[8]より低速な8ビットの前身および競合製品ではさらに悪い結果になっていただろう。
参考文献
- ^ abcd 「算術プロセッサ:当時と現在 – CPU Shack 博物館」www.cpushack.com 2010 年 9 月 24 日。2018年4 月 14 日閲覧。
- ^ abc 「AMD Am9511A/Am9512 浮動小数点プロセッサ マニュアル」(PDF)。Enterprise One Two Eight 。2019 年4 月 19 日閲覧。
- ^ 「InfoWorld、1981年11月30日、69ページ」。Googleブックス。1981年11月30日。 2019年4月19日閲覧。
- ^ abc 「Intel 8232 浮動小数点演算ユニット、暫定データシート」。データシートアーカイブ。 2019年4月19日閲覧。
- ^ Intel Corporation、「Intel 周辺機器が 8086 システム設計を強化」、Intel Preview Special Issue: 16 ビット ソリューション、1980 年 5 月/6 月、22 ページ
- ^ ab "Intel 8231A データシート" (PDF) . Octopart . 2019年4月19日閲覧。
- ^ Intel Corporation、「Intel 周辺機器が 8086 システム設計を強化」、Intel Preview Special Issue: 16 ビット ソリューション、1980 年 5 月/6 月、22 ページ
- ^ 「Intel 8087 データシート」(PDF) . Octopart . 2019年4月20日閲覧。
