R10000
[Wikipedia|▼Menu]
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での動作が可能となった。
採用例

SGI - ワークステーションの Indigo2 と O2、サーバの Challenge、スーパーコンピュータの Origin 2000 など。

NEC - ワークステーションの
EWS4800、サーバのUP4800Express5800、スーパーコンピュータの Cenju-4

Siemens Nixdorf - Unix系サーバ

タンデムコンピューターズ - フォールトトレラント・サーバ NonStop Himalaya

詳細

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までの容量を接続可能。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:28 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef