Intel i860
インテル i860 マイクロプロセッサ(50MHz XP版)
生産時期
1989年から1990年代半ばまで 生産者
インテル CPU 周波数
25 MHz から 50 MHz コア数
1 パッケージ
168ピン セラミックPGA テンプレートを表示
Intel i860 (または80860 )はインテル のRISC マイクロプロセッサ であり、1989年 にリリースされた。i860(とi960 )は、インテルにとって1980年代 のi432 以来の完全に新しいハイエンド ISA についての試みであった。i860は鳴り物入りで登場し、多くの人が設計が優れていると考えていたi960 のリリースを覆い隠したほどだったが、i960が組み込みシステム に活路を見出したのに対して、i860は商業的には全く成功せず、プロジェクトは1990年代 中ごろに終結させられた。
アンドルー・グローヴ はi860の市場での失敗の原因はインテルにあるとして、次のように述べている。
「
我々は同時期に登場した2つの非常に強力なチップを手にしていた。486 は主にCISC テクノロジーに基づき、それまでのPCソフトウェアと互換性 があった。i860はRISCテクノロジーに基づき、非常に高速だが何とも互換性がなかった。我々はどうすべきかわからなかった。だから両方を市場に投入し、市場に決めさせようとした 。…我々の曖昧な態度のせいで、顧客はインテルが486を押しているのか、i860を押しているのか、いぶかしく思うことになった。
」
—アンドルー・グローヴ [ 2]
技術的特性
i860は当時ではユニークだったいくつかの特徴を備えている[ 3] 。特にVLIW アーキテクチャと高速浮動小数点数演算 が挙げられる。ひとつの32ビット ALU とひとつの64ビット FPU を備えており、FPU は3つの部分(加算器、乗算器、グラフィックスプロセッサ)から成っている。ALUと乗算器、加算器に対してそれぞれ命令パイプライン を備えていて、最大3命令を1クロック サイクルで実行することができる。
バスは64ビットかそれ以上であった。キャッシュ を結ぶ内部メモリバス は128ビット 幅である。CPUもFPUも32本の32ビットレジスタ を持ち(うち1つは必ず0を返すゼロレジスタ)、それをFPUは16本の64ビットレジスタとして使った。ALUに対する命令は一度にふたつフェッチして外部バスをフルに使っている。このため、インテルはこのデザインを「i860 64ビット マイクロプロセッサ」と称した[ 4] 。
i860の命令は8ビットから128ビットまでのデータサイズを扱うことができる[ 5] 。
グラフィックスユニットをマイクロプロセッサチップに内蔵するのは当時としては珍しかった。これは基本的にはFPU レジスタを8本の128ビットレジスタとして使った64ビット整数演算ユニットである。様々なSIMD 的な命令と基本的な64ビット整数演算機能を持っていた。このi860での経験が後のPentium プロセッサのMMX 機能に影響を与えた。
i860の非常にユニークな機能のひとつとして、各機能ユニットのパイプラインに対してプログラムからアクセス可能であったことが挙げられる。そのため、コンパイラ が注意深く命令を並べてパイプラインが満たされた状態にする必要があった。一般的なアーキテクチャではCPU上のスケジューラがその役割を担うが、初期のRISC設計ではシステムの複雑さが用途を限定してしまう。i860はこれを丸ごとチップからコンパイラへ移してしまった。これによりコアが単純になり、他の機能をチップに組み込むことができるようになるため、性能向上につながる。結果としてi860はグラフィックスと浮動小数点については高速に実行できたが、一般的な用途では満足できる性能を出すようなプログラムを書くのが困難だった(後述)。
性能 (問題)
紙上の性能はシングルチップとしては非常に印象的なものだったが、実際の性能は全く違っていた。何が問題なのか当時は不明だったが、実行時のコードの流れを予測することが難しかったためと思われる。つまり、コンパイル時に命令を正しく並べることが非常に困難だったのである。例えば、ふたつの数値の加算命令はその数値がキャッシュ上になければ非常に時間がかかる。しかし、プログラマにはその数値がキャッシュにあるかどうかは分からないのである。もし予想が外れれば、データを待つためにパイプラインが停止する。i860のデザインはこういったことをコンパイラが効果的に行うことを前提としていて、それは不可能だったことが実証されている。XP版では理論上単精度 でも倍精度 でも60から80MFLOPS[ 6] の性能が見込まれたが、アセンブリ言語 で書いたプログラムでもせいぜい40MFLOPSで、コンパイラを使うと10MFLOPSも難しかった。
もうひとつの重大な問題はコンテキストスイッチ を高速に行う手段がなかったことである。i860はいくつかのパイプラインを持っていて、割り込み によってそれを壊すので、復帰時に元に戻さなければならなかった。この処理には最低でも62クロックサイクルを要し、最悪の場合2,000クロックサイクルにもなった。これはクロック周波数 40 MHzでは2万分の1秒(50μ秒)であり、CPUにとってはとてつもなく長い。このためi860は汎用CPUになれなかったのである。
バージョンと実際の使用例
i860 XP-50 CPU が3個搭載された基板。インテルのスーパーコンピュータ Paragon XP/S (英語版 ) で使われたもの。
Intel i860 XR
このチップにはふたつのバージョンがあった。コードネームN10のXR とコードネームN11のXP である。XPには大きなキャッシュ、二次キャッシュ、より高速なバスと、並列計算 のためのバススヌーピング 機能とキャッシュ・コンシステンシ 機能を持っていた。XRは25 MHzか40 MHzであったが、XPはプロセスを縮小したため(1 μm→0.8 μm)40 MHzか50 MHzで動作。どちらも同じ命令セットが動作する。
まず、i860はロスアラモス国立研究所 のiPSC/860 (英語版 ) のようないくつかの大規模マシンで使われた。コンパイラが強化されたためi860の性能もそれなりに強化されたが、当時のi860の性能は他のRISCには及ばなかった。他には、i860XRを28個またはi860XPを14個搭載したアライアント・コンピュータ のFX/2800シリーズがある。
インテルはi860をワークステーション のCPUとして使えないか、MIPSアーキテクチャ のチップなどと対抗できないか試したことがある。マイクロソフト は内部で設計したi860ベースのワークステーション(コードネームは Dazzle )で後に Windows NT と呼ばれるようになるOS の開発を行っていたが、最終的に NT が実際に動作したのはMIPS と Intel 386 で、その後他のプロセッサにも移植されたが i860 には移植されなかった。NTという名称は、i860XR のコード名が "N-Ten" だったことに由来するとも言われている[ 7] 。
i860をメインCPUとして持つUNIX ワークステーションも存在し、沖電気 のOKI station 7300と、それをベースにグラフィックスサブシステムに2個のi860を搭載したクボタコンピュータ の Titan VISTRA がある。
i860はワークステーション 市場でグラフィックスアクセラレータ としても使われた。例えばNeXTDimension で使われた。このマシンはMach の機能削減版が動作し、完全なPostScript スタックを実装していた。ただし、PostScript部分が完全に仕上げられることはなく、単に色ピクセル を動かすぐらいしかできなかった。このような環境ではi860はかなりよく動作した。主なプログラムはキャッシュに収まるサイズで、完全に予測通りに動くようにコーディングできたからである。Truevision (英語版 ) は同社のフレームバッファカード Targa と Vista と共に使うことを意図したi860ベースのアクセラレータカードを作り、ピクサー がそれを使って動作するバージョンのRenderMan を開発。これは386ホストの4倍の性能を発揮した。他の採用例は、ジオメトリエンジン内に複数個のi860XPを使った SGI RealityEngine (英語版 ) がある。SPARCstation 330/470などのデスクサイド型のVMEスロットに装備するVX/MVXグラフィックスアクセラレータには40MHzの i860 が搭載され(VXには1個、MVXには4個)、VXは40MIPS/60MFLOPS、MVXは160MIPS/240MFLOPSの性能を持つとされた。このような使用法も徐々に減っていき、多くの汎用CPUがi860の性能に追いついて、インテルもPentiumを主力とするようになった。
Mercury Computer Systems (英語版 ) はi860を並列計算機 に採用した。ファットツリー (英語版 ) 型ネットワークで2個から360個の計算ノードを相互接続したもので、各ノードのローカルメモリに他ノードからもアクセスできる。ノード毎に異なるシステムを採用でき、i860の他にPowerPC や SHARC DSP を3個組合わせたノードがある。i860向けにアセンブリ言語で書かれた信号処理ライブラリを提供したため、よい性能が得られた。19インチラック 9U の筐体に360個の計算ノードを詰め込めるため、軍用機上でのレーダー処理などに適していた。
また1990年代前半、ストラタス がi860ベースの無停止コンピュータ XA/R シリーズを開発している[ 9] 。
1990年代後半、インテルはARM ベースのXScale でRISCビジネス全体を置き換えた。また、インテルのXeon システム用のマザーボードのチップセットとしてi860という名前が再利用されているため混乱を招くこともある。
脚注・出典
^ Intel's 486 CPU turns 15 Geek.com
^ Kohn, Les; Margulis, Neal (1989), “Introducing the Intel i860 64-Bit Microprocessor” , IEEE Micro 9 (4): 15-30, http://www.computer.org/portal/web/csdl/doi/10.1109/40.31485
^ Grimes, Jack; Kohn, Les; Bharadhwaj, Rajeev (1989), “The Intel i860 64-Bit Processor: A General-Purpose CPU with 3D Graphics Capabilities” , IEEE Computer Graphics and Applications 9 (4): 85-94, http://www.computer.org/portal/web/csdl/doi/10.1109/38.31467
^ i860 64-Bit Microprocessor THE ADVANCE INFORMATION 1989
^ Mega Floating point number Operations Per Second(メガフロップス)。1秒間に浮動小数点演算を100万回行うことを示す、処理性能を表す単位。
^ “Paul Thurrott's History of Windows Server 2003: The Road To Gold ”. 2012年3月2日 閲覧。
^ Stratus Machine History
参考文献
Margulis, Neal (1990). i860 Microprocessor Architecture . Osborne/McGraw-Hill. ISBN 0-07-881645-9
「SuperASCII 1991年1月号」第2巻第1号、株式会社アスキー出版、1991年1月1日。
A.Patterson, David; L.Hennessy, John (1990). Computer Archtecture A Quantitative Approach . Morgan Kaufmann Publishers. ISBN 1-55860-069-8
外部リンク
生産終了
現行
その他 マイクロ アーキテクチャ
P5
P5ベースのコア
0.90 μm 0.60 μm 0.35 μm 0.25 μm
P6
P6ベースのコア
0.50 μm 0.35 μm 0.25 μm 180 nm 130 nm 90 nm 65 nm
NetBurst
NetBurstベースのコア
180 nm 130 nm 90 nm 65 nm
Core
Atom
Atomのマイクロアーキテクチャ
参考 45 nm 32 nm 22 nm 14 nm 10 nm Intel 7
Nehalem
Sandy Bridge
Sandy Bridgeベースのコア
32 nm 22 nm
Haswell
Skylake
Cypress Cove
Sunny Cove
Willow Cove
Golden Cove (+Gracemont)
Raptor Cove (+Gracemont)
Redwood Cove (+Crestmont)
Redwood Coveベースのコア
Intel 4 Intel 3
Lion Cove (+Skymont)