R10000

From Wikipedia, the free encyclopedia

NEC VR10000

R10000 は、MIPS IV命令セットアーキテクチャ (ISA) を実装したRISCマイクロプロセッサで、当時シリコングラフィックス (SGI) の子会社となっていたミップス・テクノロジーズ (MTI) が開発した。開発コード名は "T5"。チーフデザイナーは Chris Rowen と Kenneth C. Yeager。R10000のマイクロアーキテクチャは ANDES(Architecture with Non-sequential Dynamic Execution Scheduling、非逐次的動的実行スケジューリング・アーキテクチャ)と名付けられている[1]。ハイエンドではR8000、それ以外ではR4400の後継として、それらに取って代わった。MTIはファブレス企業であり、実際の製造は日本電気 (NEC) と東芝が行った。R4000/R4400以上に設備投資がかかるため、それまでMIPSアーキテクチャのマイクロプロセッサを手がけていたIDTなどの半導体企業はR10000を製造しなかった。

1996年1月に150MHz版と200MHz版が登場したが、製造工程の問題があり、大量生産が可能になったのは同年後半である。200MHz版の供給量は1996年末まで少ないままで、結果として価格は3,000ドルとなっていた[2]

1996年9月25日SGIは、NECが同年3月から7月末まで製造したR10000に電流が流れすぎるという問題があり、動作中にシステムがダウンする虞があると発表。SGIは出荷済みの1万個のR10000のリコールを実施し、両社は多大な損失を蒙った[3][4]

1997年、0.25μmプロセスでの製造が始まり、250MHzでの動作が可能となった。

採用例

詳細

R10000は4ウェイ・スーパースケーラ設計で、レジスタ・リネーミングアウト・オブ・オーダー実行機能を実装している。それまでのR4000などのMIPSマイクロプロセッサは単純な設計が多かったが、R10000の設計はそれらとは一線を画すものだった。

R10000は命令キャッシュから1サイクルに4命令をフェッチする。命令をデコードするとその種類によって、整数演算、浮動小数点演算、ロード/ストアそれぞれの命令キューに入れる。デコード部の補助として、命令キャッシュに命令を格納する際に事前に一部デコードし、命令毎に4ビットの情報を付加しており、その命令をどの演算ユニットで実行すればよいかがすぐわかるようになっている。また、命令のフォーマットを再構成してデコード処理を最適化している。

各命令キューはデコーダから最大4命令まで受け付けることができ、ボトルネックにならないようにしている。命令キューは、オペランドやリソースの動的依存関係を考慮して、実行できるものから対応する演算ユニットに命令を発行する。ロード/ストア命令キュー以外は、1サイクルに最大2命令を演算ユニットに対して発行できる。ロード/ストア命令キューは1サイクルに1命令しか発行できない。全体として1サイクルに最大5命令を発行できる。

整数演算ユニット

整数演算ユニットには、整数レジスタファイル、3本のパイプライン(整数演算用2本、ロード/ストア用1本)がある。整数レジスタファイルには64ビット幅のレジスタが64本あり、うち32本がアーキテクチャ上のレジスタで、残る32本はリネーミング用である。レジスタファイルには読み取りポートが7つ、書き込みポートが3つある。2つの整数演算パイプラインには加算器と論理演算部がある。ただし、バレルシフタ分岐予測用ハードウェアがあるのは1本目のパイプラインだけで、2本目は乗算器と除算器へのアクセスに使用する。乗算器はパイプライン化されていて、32ビットではレイテンシが6サイクル、64ビットでは10サイクルとなっている。除算器はパイプライン化されておらず、1ビットあたり1サイクルかかる引き放し除算を採用しているので、32ビットでは35サイクル、64ビットでは67サイクルのレイテンシとなる。

FPU

FPUには、加算器、乗算器、除算ユニット、平方根計算ユニットの4つの演算ユニットがある。加算器と乗算器はパイプライン化されているが、除算ユニットと平方根計算ユニットはパイプライン化されていない。加算器と乗算器はレイテンシが3サイクルだが、サイクル毎に新たな命令を受け付けられる。除算ユニットは、単精度ではレイテンシが12サイクル、倍精度では19サイクルとなっている。

平方根計算ユニットは、平方根と平方根の逆数を求める命令を実行する。平方根命令のレイテンシは18サイクル(単精度)または33サイクル(倍精度)である。平方根命令は20サイクル(単精度)または35サイクル(倍精度)に1回の間隔で発行可能。平方根の逆数はさらにレイテンシが長く、単精度では30サイクル、倍精度では52サイクルとなる。

浮動小数点レジスタファイルには64ビット幅のレジスタが64本あり、うち32本がアーキテクチャ上のレジスタ、残る32本がリネーミング用レジスタである。加算器には専用の読み取りポートと書き込みポートがあるが、乗算器と除算ユニットと平方根計算ユニットはポートを共有する。

除算ユニットと平方根計算ユニットはSRT除算アルゴリズムを採用している。MIPS IV ISA には積和演算命令がある。R10000では乗算器から加算器へのバイパスがあり、レジスタファイルを経由せずに乗算結果を加算器パイプラインに送り込める。したがって積和演算専用ユニットは持たないが、レイテンシは4サイクルとなっている。

キャッシュ

R10000は当時としては大きなキャッシュをチップに搭載していた。命令キャッシュ32KBとデータキャッシュ32KBである。命令キャッシュは2ウェイ・セットアソシアティブで、ラインサイズは128バイトである。命令は部分的にデコードされて命令毎に4ビットの情報を付与されてキャッシュに格納される。

データキャッシュはデュアルポートの2ウェイ・インターリーブ式である。16KBのバンクが2つあり、それぞれが2ウェイ・セットアソシアティブ方式となっている。ラインサイズは64バイトで、書き込みに対してはライトバック・プロトコルを採用。仮想インデックス・物理タグ方式なので、同一サイクル中にCPUからキャッシュにアクセスしつつ、二次キャッシュとのキャッシュコヒーレンシを保つことができる。

外付けの二次キャッシュは命令・データ統合型で、512KBから16MBまでの容量を接続可能。一般的な同期SRAM (SSRAM) を使用する。専用の128ビットバスで接続し、9ビットのECCで誤りを訂正できる。このキャッシュとバスはR10000と同じクロックで駆動され、最大周波数は200MHzである。200MHzではバスのピーク帯域幅は3.2GB/sとなる。2ウェイ・セットアソシアティブ方式だが、ピン数を減らすためにR10000側がアクセスするウェイを予測している。

アドレッシング

MIPS IV は64ビット・アーキテクチャだが、コスト削減のためR10000の仮想アドレス空間も物理アドレス空間も64ビット全部を実装していない。それでも物理アドレスは40ビット、仮想アドレスは44ビットで、1TBまでの記憶装置をアドレッシング可能で、仮想記憶は16TBにもなる。

システムバス: Avalanche bus

R10000のシステムバスは Avalanche bus と呼ばれる64ビットバスで、最高100MHzで駆動可能である。アドレスバスとデータバスを多重化していてアドレスの転送にサイクルを使用するため、理論上の最大帯域幅は800MB/sだが、実際のピーク帯域幅は640MB/sとなる。

システムインタフェース・コントローラは、最大4プロセッサまでの密結合・対称型マルチプロセッシング (SMP) をサポートしている。外部にバス制御ロジックを追加すれば、理論上は数百のプロセッサでも結合可能である。例えば、SGIの Origin 2000 は最大128プロセッサを搭載可能である(NUMA)。

製造

R10000は約680万個のトランジスタを集積しており、そのうち約440万個が一次キャッシュの実装に使われている[6]。チップ寸法は16.640mm×17.934mmで、面積は298.422 mm2。0.35μmプロセスで製造され、599ピンのセラミックパッケージのものが 1994 Microprocessor Forum で公開され、527ピンCPGAで製品化されると発表された。また、1MBの二次キャッシュを含む339ピンのマルチチップモジュール (MCM) も検討中だとされていた[7]

派生品

脚注・出典

参考文献

Related Articles

Wikiwand AI