R8000

R8000 マイクロプロセッサチップセット



R8000は、MIPS IV命令セットアーキテクチャ(ISA)を初めて実装したマイクロプロセッサチップセットであり、MIPS Technologies (MTI)、東芝、Weitekの協力によって開発されました。開発時のコードネームは「TFP (Tremendous Floating-Point)」としても知られています。このチップセットは、1990年代初頭のスーパーコンピュータの性能を、より小型でコスト効率の良いマイクロプロセッサで実現することを目指して設計されました。

開発の経緯



R8000の開発は、シリコングラフィックス(SGI)で1990年代初頭に始まりました。当時、RISCマイクロプロセッサの性能向上の速度がスーパーコンピュータを凌駕しつつあり、この技術を活用することで、高価で巨大なスーパーコンピュータを、デスクサイドのワークステーションやサーバで代替できるようになると期待されていました。

1992年4月、ミップス社が将来の開発計画を発表した際にR8000の詳細が公表されました。その直前の1992年3月には、SGIがミップスの買収を発表し、1992年の中頃には、SGIの子会社としてミップス・テクノロジーズ(MTI)に社名が変更されました。R8000の開発はSGIからMTIに移管され、1993年中の完成を目指していましたが、実際には1994年の中頃までずれ込みました。75MHz版のR8000は1994年6月7日に発表され、当時の価格は2,500ドルでした。1995年の中頃には、90MHz版がSGIのシステムに採用され始めました。

科学技術計算に特化したR8000は、高価格帯であったため販売台数は伸び悩みましたが、科学技術計算市場での存在感は大きく、ハイエンドワークステーション市場において重要な役割を果たしました。しかし、1996年1月に、より安価で高性能なR10000が登場すると、その役割は終焉を迎えました。

R8000は、SGIのワークステーション「Power Indigo2」、サーバ「Power Challenge」とそのクラスター、ビジュアライゼーションシステム「Power Onyx」などの機種で採用されました(R8000搭載機種は機種名に「Power」が付いています)。1994年11月時点のTOP500リストでは、500位内の50システムがR8000を使用しており、最も上位だったのは18個のR8000を搭載したPower Challengeで、154位から157位に4システムが並んでランクインしていました。

詳細なアーキテクチャ



チップセットは、マイクロプロセッサのR8000、浮動小数点演算ユニット(FPU)のR8010、2個のタグRAM、そしてストリーミングキャッシュで構成されています。

R8000(マイクロプロセッサ


R8000は、チップセット全体の制御と整数演算命令の実行を担います。内部には、整数ALU、整数レジスタファイル、一次キャッシュ、命令フェッチ用ハードウェア、分岐予測機構、TLBが含まれます。

パイプラインの最初の段階では、命令キャッシュから4命令を同時にフェッチします。命令キャッシュは16KBで、ダイレクトマップ方式、仮想インデックス・仮想タグ方式で、ラインサイズは32バイトです。命令のデコードはパイプラインの2段目で行われます。3段目でデータのロード/ストアが開始され、4段目で整数演算が行われます。整数演算は4段目まで遅延されるため、ロード命令の結果が必要な場合でも、キャッシュにヒットすればそのまま演算に利用できます。整数レジスタファイルへの結果の書き込みは、5段目で行われます。

整数レジスタファイルには、9つの読み出しポートと4つの書き込みポートがあります。読み出しポートのうち4つは、4つある演算ユニットのうち2つにオペランドを供給するために使用され、別の4つは、2つのアドレス生成器にオペランドを供給するために使用されます。残りの1つの読み出しポートは、2バンクあるデータキャッシュにデータを供給するために使用されます。書き込みポートのうち2つは、2つの演算ユニットの演算結果を書き込むために使用され、残りの2つは、データキャッシュの2つのバンクそれぞれと接続され、キャッシュからの読み出しに使用されます。

整数演算ユニットは、ALUが2個、シフタが1個、乗除算ユニットが1個、さらに2つのアドレス生成ユニットで構成されています。乗除算ユニットはパイプライン化されていません。そのため、乗算のレイテンシは32ビットで4サイクル、64ビットで6サイクルです。除算のレイテンシは、数値の大きさに依存し、21サイクルから73サイクルまで変化します。

ロード/ストア


ロード命令とストア命令は、パイプラインの3段目から実行を開始します。R8000は2つのアドレス生成ユニットを持っており、これらを使用して、ロードまたはストアの対象となる仮想アドレスを計算します。4段目で、その仮想アドレスとTLBを使用して物理アドレスを求めます。TLBはデュアルポートで384エントリあり、3ウェイセットアソシアティブ方式を採用しています。同じサイクル内で、16KBのデータキャッシュにアクセスします。データキャッシュもデュアルポートで、64ビットのバスで本体と接続されており、1サイクルで2つのロード命令、またはロードとストアを1つずつ処理できます。キャッシュには、パリティビット前方誤り訂正などの誤り検出訂正機構は存在しません。キャッシュミスが発生した場合、二次キャッシュであるストリーミングキャッシュにデータを取りに行くため、8サイクル待機する必要があります。一次データキャッシュは、仮想インデックス・物理タグ方式のダイレクトマップ方式で、ラインサイズは32バイト、データ更新はライトスルー方式です(同時に二次キャッシュにも書き込みます)。ロード命令で一次データキャッシュにヒットした場合、パイプラインの5段目で整数レジスタファイルに書き込まれます。

R8010(浮動小数点演算ユニット)


R8010は、R8000の命令キューから供給された浮動小数点命令を実行します。命令キューから先は、整数パイプラインと浮動小数点パイプラインが分離しており、整数演算命令と浮動小数点演算命令の間で、限定的なアウト・オブ・オーダー実行が行われます。つまり、同時にフェッチした4命令について、CPUとFPUの間で完了を待つことなく処理を進めます(4命令が全てそれぞれのパイプラインに送られれば、次の4命令をフェッチします)。この仕組みは、ストリーミングキャッシュのレイテンシを緩和するために導入されました。

R8010には、浮動小数点レジスタファイル、ロードキュー、ストアキュー、そして全く同じ2つの浮動小数点演算ユニットがあります。除算と平方根を除いてパイプライン化されています。除算と平方根の計算では乗算器を使用するため、それらの演算が行われている間はパイプラインがストールします。

比較命令以外の演算命令のレイテンシは4サイクルです。単精度および倍精度の除算のレイテンシはそれぞれ14サイクルと20サイクルです。単精度および倍精度の平方根演算のレイテンシはそれぞれ14サイクルと23サイクルです。

ストリーミングキャッシュとタグRAM


ストリーミングキャッシュは、外付けの1MBから16MBのキャッシュで、R8000の二次キャッシュ、R8010の一次データキャッシュとして機能します。R8000と同じクロック周波数で動作し、一般的な同期SRAM(SSRAM)で構成されています。この設計は、データアクセスを頻繁に必要とする浮動小数点演算の性能を維持するために採用されました。小容量で低レイテンシの一次キャッシュでは、十分なデータ供給ができず、キャッシュミスが頻繁に発生するため、レイテンシは大きいもののヒット率向上が望める二次キャッシュを一次キャッシュとして扱い、レイテンシを考慮した設計としました。

ストリーミングキャッシュは2ウェイインターリーブ構造を採用しています。2つの独立したバンクに分かれており、一方は奇数アドレスのデータを、もう一方は偶数アドレスのデータを格納します。これにより、2つの読み出し、2つの書き込み、または1つの読み出しと1つの書き込みが、それぞれ別のバンクであれば同時に実行できます。各バンクには64ビットの片方向バスが2つあり、一方は読み出し、もう一方は書き込みに使用されます。この設計により、双方向バスで必要となるバスの方向転換(bus turnover)が不要になり、あるサイクルで読み出しを行い、次のサイクルで書き込みを行うことが可能になり、性能が向上します。

ストリーミングキャッシュのタグは2つのタグRAMチップにあり、それぞれ1つのバンクに対応しています。両方のチップに同一のデータが含まれています。各タグRAMチップは1.189Mbitのキャッシュタグを持ち、4トランジスタのSRAMセルで構成されています。このチップは0.7μmのBiCMOSプロセスで製造されており、2層のポリシリコン層と2層のアルミニウム配線層から構成されています。BiCMOS回路はデコーダ部で使用され、サイクルタイムを短縮するためにセンスアンプとコンパレータが統合されています。タグRAMチップは14.8mm×14.8mmで、155ピンのCPGAパッケージで提供され、75MHzでの消費電力は3Wです。タグRAMは、キャッシュタグを分担するだけでなく、ストリーミングキャッシュを4ウェイセットアソシアティブ構成で動作させる機能も分担しています。ピン数を減らすために、キャッシュタグ自体が4ウェイセットアソシアティブになっており、通常のセットアソシアティブ式キャッシュとは異なり、ルックアップ後にロジックでアクセスするセットを選択しています。

ストリーミングキャッシュへのアクセスは、スループット向上のためにパイプライン化されています。このパイプラインは5段構成で、1段目でアドレスがタグRAMに送られ、2段目でアクセスが行われます。3段目でタグRAMからSSRAM群に信号が送られ、4段目でSSRAMにアクセスし、5段目でデータがR8000またはR8010に戻されます。

物理特性



R8000は17.34mm×17.30mm(299.98mm²)のチップに260万個のトランジスタを集積しています。R8010は83万個のトランジスタを集積しており、この2つを合わせると343万個のトランジスタが集積されていることになります。どちらも東芝が0.7μmのCMOSプロセスで製造し、591ピンのCPGA(ceramic pin grid array)でパッケージ化されています。電源電圧は3.3Vで、R8000の消費電力は75MHzで13Wでした。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。