R5000
採用例
R5000は、シリコングラフィックス (SGI)、NEC、Siemens-Nixdorf といった企業がワークステーションやサーバに採用した。SGIは O2 というローエンドのワークステーションに採用している。ルーターやプリンターなどの組み込みシステムにも採用された。Cobalt Qube や Cobalt RaQ は当初、R5000の派生品であるRM5230とRM5231を採用していた。Qube 2700 ではRM5230マイクロプロセッサ、Qube 2 ではRM5231が採用されている。RaQ は後に AMD K6-2、さらには Intel Pentium III を採用した。
歴史
もともとのロードマップでは1996年前半に200MHz版、1996年後半に250MHz版を出荷し、1997年には改良を施したR5000Aを出荷する予定だった。R5000は1996年1月に発表されたが、200MHz動作を達成できず、180MHzとされた。ローエンドのワークステーション向けとしては、当時他にIBMとモトローラの PowerPC 604、HPのPA-7300LC、インテルの Pentium Pro が競合していた。
詳細
2命令を同時に実行できるスーパースケーラ設計だが、アウト・オブ・オーダー実行はできない。整数演算命令1個と浮動小数点演算命令1個を同時に発行できる。整数演算命令用の単純な命令パイプラインが1つと浮動小数点演算用パイプラインが1つしかなく、トランジスタ数を削減してチップサイズとコストを低減していた。動的な分岐予測機能もコスト低減のため実装していない。代わりにコンパイラが静的に分岐が起きそうかどうかを判断し、 MIPS II ISA で導入された branch likely 命令を適宜使用するものとした。
QEDの設計は大きな一次キャッシュと単純なCPU設計を特徴とし、R5000にも大きな一次キャッシュを搭載している。R5000の一次キャッシュは命令用とデータ用それぞれに32KBである。2ウェイセットアソシアティブ方式で、ラインサイズは32バイト、仮想インデックス・物理タグ方式である。命令は一次キャッシュにロードされる際に一部デコードされ、命令毎に4ビットのデコード情報がキャッシュに付随して格納される。この4ビットは命令が前後の命令と同時に発行可能か、どの演算ユニットを使用するかを表している。スーパースケーラの命令発行機構がこの情報を使用する。
整数演算ユニットは大部分の命令を1サイクルのレイテンシとスループットで実行できるが、乗算と除算だけは例外である。32ビットの乗算はレイテンシが5サイクルでスループットが4サイクルとなっている。64ビットの乗算はレイテンシがさらに4サイクルかかり（合計9サイクル）、スループットも半分（8サイクル）となる。除算は32ビット整数では36サイクルのレイテンシとスループットで、64ビット整数ではそれらが68サイクルとなる。
FPUは32ビット単精度を高速化した設計である。これはコストを抑えつつ、3次元グラフィックスで多用される単精度浮動小数点演算性能を高くしてほしいというSGIの要望に応えたものだった。完全にパイプライン化されており、R4700より遥かに高性能になっている。MIPS IV ISA の積和演算命令を実装している。単精度の加算・乗算・積和演算はレイテンシが4サイクルでスループットは1サイクルとなっている。単精度の除算はレイテンシが21サイクルでスループットが19サイクル、平方根はレイテンシが26サイクルでスループットが38サイクルである。除算と平方根はパイプライン化されていない。倍精度の演算命令はレイテンシが極端に大きく、加算以外のスループットも小さい（加算だけは単精度と同じレイテンシとスループットである）。倍精度の乗算と積和演算はレイテンシが5サイクルでスループットが2サイクルである。除算はレイテンシが36サイクルでスループットが34サイクル、平方根はレイテンシが68サイクルでスループットが66サイクルとなっている。
R5000は二次キャッシュの制御部を内蔵しており、512KB、1KB、2MB の二次キャッシュを制御可能。二次キャッシュには専用の同期SRAM (SSRAM) を使用する。システムバスはR4000などと同様のSysADバスを採用している。アドレスバスとデータバスを多重化したバスで、動作周波数は最大100MHzである。当初R5000はマルチプロセッシングをサポートしていなかったが、将来のサポートに備えてパッケージではそのためのピンが予約されていた。
QEDはファブレス企業なので、自前では製造しなかった。R5000を製造したのは、IDT、NEC、NKK である。3社はいずれも0.35μmのCMOSプロセスで製造したが、それぞれのプロセスには差異がある。IDTは2層のポリシリコンと3層のアルミニウム配線を採用。2層ポリシリコンを使うことで、4トランジスタのSRAMセルを実装でき、トランジスタ数を360万個、チップサイズを8.7mm×9.7mm (84.39 mm²) とした。NECとNKKは1層のポリシリコンと3層のアルミニウム配線を採用。ポリシリコンが1層であるため、SRAMセルに6個のトランジスタを必要とし、トランジスタ数は500万個、チップサイズも約 87 mm² と大きくなった。チップサイズを80から90mm²にすることはMTIからの要請だった。キャッシュを除いたトランジスタ数はどちらも80万個ほどで、残りは全てキャッシュ用である。パッケージは272ピンのBGA (ball grid array) と272ピンのPGA (pin grid array) がある。従来のMIPSアーキテクチャのマイクロプロセッサ群とはピン互換性はない。
派生品
1990年代後半、QEDはMTIからMIPSアーキテクチャのマイクロプロセッサを製造・販売するライセンスを取得し、社名を Quantum Effect Design から Quantum Effect Devices に変更した。最初の製品は RM52xx ファミリーで、当初RM5230とRM5260の2モデルを発売した。発表は1997年3月24日のことである。RM5230は当初100MHzと133MHz版、RM5260は133MHzと150MHz版があった。1997年9月29日、150MHzと175MHzのRM5230、175MHzと200MHzのRM5260が追加された。
RM5230とRM5260はどちらもR5000を元にしており、一次キャッシュの大きさ（32KBから16KBに削減）とシステムインタフェースの幅（RM5230は32ビット67MHz、RM5260は64ビット75MHz）が異なり、デジタル信号処理向けの積和演算命令と3オペランド乗算命令が追加されている。製造を請け負ったのはTSMCで、0.35μmプロセスで製造した。パッケージングは Amkor Technology が担当。RM5230は128ピン、RM5260は208ピンである。
RM52xxファミリーには、1997年9月29日の Embedded Systems Conference でRM5270の追加が発表された。ハイエンドの組み込み用途をターゲットとし、150MHz版と200MHz版がある。最大2MBの二次キャッシュをサポートできるキャッシュ制御部がチップに内蔵されている。SysADバスも64ビット幅で100MHzで駆動可能である。304ピンのSuper-BGAでパッケージされ、RM7000とピン互換性があり、RM7000からの移行を意図している。
1998年7月20日、RM52x1ファミリーが発表された。RM5231、RM5261、RM5271 がある。これらはRM52x0ファミリーからの派生であり、0.25μmプロセスを使っている。RM5231は当初150MHz、200MHz、250MHz版があり、RM5261とRM5271には250MHz版と266MHz版があった。1999年7月6日、300MHz版RM5271が追加された（1万個単位で140ドル）。RM52x1ファミリーは一次キャッシュが32KBとなり、SysADバスも最高125MHzで駆動可能となっている。
PMC-Sierra がQEDを買収した後も、RM52xxファミリーは同社の製品として販売され続けた。PMCはさらにRM5231AとRM5261Aを2001年4月4日に発表した。これらはTSMCで0.18μmプロセスで製造され、さらに動作周波数が高くなり、消費電力が低くなっている。RM5231Aは250MHzから350MHz、RM5261Aは250MHzから400MHzで動作する。