Intel i860
出典: フリー百科事典『ウィキペディア(Wikipedia)』
i860(または80860)はインテルのRISCマイクロプロセッサであり、1989年にリリースされた。i860(とi960)は、インテルにとって1980年代のi432以来の完全に新しいハイエンドISAについての試みであった。i860は鳴り物入りで登場し、多くの人が設計が優れていると考えていたi960のリリースを覆い隠したほどだった。i860は商業的には全く成功せずプロジェクトは早々に終結させられた。 このチップの使用例で現存しているものは見当たらないし、すでに生産もされていない。
[編集] 技術的特性
i860は当時ではユニークだったいくつかの特徴を備えている。特にVLIWアーキテクチャと高速浮動小数点数演算が挙げられる。ひとつの32ビットALUとひとつの64ビットFPUを備えており、FPUは3つの部分(加算器、乗算器、グラフィックスプロセッサ)から成っている。ALUと乗算器、加算器に対してそれぞれパイプラインを備えていて、最大3命令を1クロックサイクルで実行することができる。
i860の非常にユニークな機能のひとつとして各機能ユニットのパイプラインに対してプログラムからアクセス可能であったことが挙げられる。そのため、コンパイラが注意深く命令を並べてパイプラインが満たされた状態にする必要があった。これはRISCアーキテクチャの目標の達成とも言える。それは、複雑なマイクロコードをCPU内部から排除してコンパイラに任せたということである。これによりコアが単純になり、他の機能をチップに組み込むことができるようになるが、コードが大きくなってキャッシュヒット率の低下やメモリバンド幅の低下を招き、結果としてシステム全体のコストが高くなってしまった。結果としてi860はグラフィックスと浮動小数点については高速に実行できたが、一般的な用途では満足できる性能を出すようなプログラムを書くのが困難だった(後述)。
バスは64ビットかそれ以上であった。キャッシュを結ぶ内部メモリバスは128ビット幅である。CPUは32本の32ビットレジスタを持ち、それをFPUは16本の64ビットレジスタとして使った。ALUに対する命令は一度にふたつフェッチして外部バスをフルに使っている。このため、インテルはこのデザインを「i860 64ビット マイクロプロセッサ」と称した。
グラフィックスユニットをマイクロプロセッサチップに内蔵するのは当時としては珍しかった。これは基本的にはFPUレジスタを使った64ビット整数演算ユニットである。様々なSIMD的な命令と基本的な64ビット整数演算機能を持っていた。このi860での経験が後のPentiumプロセッサのMMX機能に影響を与えた。
[編集] 性能 (問題)
紙上の性能はシングルチップとしては非常に印象的なものだったが、実際の性能は全く違っていた。何が問題なのか当時は不明だったが、実行時のコードの流れを予測することが難しかったためと思われる。つまり、コンパイル時に命令を正しく並べることが非常に困難だったのである。例えば、ふたつの数値の加算命令はその数値がキャッシュ上になければ非常に時間がかかる。しかし、プログラマにはその数値がキャッシュにあるかどうかは分からないのである。もし予想が外れれば、データを待つためにパイプラインが停止する。i860のデザインはこういったことをコンパイラが効果的に行うことを前提としていて、それは不可能だったことが実証されている。XPバージョンでは理論上60MFLOPSの性能が見込まれたが、アセンブリ言語で書いたプログラムでもせいぜい40MFLOPSで、コンパイラを使うと10MFLOPSも難しかった。
もうひとつの重大な問題はコンテキストスイッチを高速に行う手段がなかったことである。i860はいくつかのパイプラインを持っていて、割り込みによってそれを壊すので、復帰時に元に戻さなければならなかった。この処理には最低でも62クロックサイクルを要し、最悪の場合2000クロックサイクルにもなった。これは2万分の1秒であり、CPUにとってはとてつもなく長い。このためi860は汎用CPUになれなかったのである。
[編集] バージョンと実際の使用例
このチップにはふたつのバージョンがあった。コードネームN10のXRとコードネームN11のXPである。XPには大きなキャッシュ、二次キャッシュ、より高速なバスと並列コンピューティングのためのバススヌーピング機能とキャッシュ・コンシステンシ機能を持っていた。XRは25MHzか40MHzであったが、XPはプロセスを縮小したため(1μm→0.8μm)40MHzか50MHzで動作。どちらも同じ命令セットが動作する。
まず、i860はロスアラモス国立研究所のiPSC/860のようないくつかの大規模マシンで使われた。コンパイラが強化されたためi860の性能もそれなりに強化されたが、当時のi860の性能は他のRISCには及ばなかった。他には、i860XRを28個またはi860XPを14個搭載したアライアント・コンピュータのFX/2800シリーズがある。
i860をメインCPUとして持つUNIXワークステーションも存在し、沖電気のOKIstation 7300と、それをベースにグラフィックスサブシステムに2個のi860を搭載したクボタコンピュータのTitan VISTRAがある。
i860はワークステーション市場でグラフィックス・アクセラレータとして使われたりした。例えばNeXTDimensionでも使われた。このマシンはMachの機能削減版が動作し、完全なポストスクリプトが動作していた。このような環境ではi860はかなりよく動作した。主なプログラムはキャッシュに収まるサイズで、完全に予測通りに動くようにコーディングできたからである。他の採用例は、ジオメトリエンジン内に12個のi860XPを使ったSGIのOnyx Reality Engine 2がある。このような使用法も徐々に減っていき、多くの汎用CPUがi860の性能に追いついて、インテルも興味を失った。
1990年代後半、インテルはARMベースのXScaleでRISCビジネス全体を置き換えた。また、インテルのXeonシステム用のマザーボードのチップセットとしてi860という名前が再利用されているため混乱を招くこともある。
インテルのプロセッサ一覧 |
---|
4004 | 4040 | 8008 | 8080 | 8085 | 8086 | 8088 | iAPX 432 | 80186 | 80188 | 80286 | 80386 | i486 | i860 | i960 | Pentium | Pentium Pro | Pentium II | Celeron | Pentium III | XScale | Pentium 4 | Pentium M | Pentium D | Pentium E | Pentium Extreme Edition | Xeon | Core | Core 2 | Itanium | Itanium 2 (x86プロセッサ以外は斜体です) |