MIPS R4000は、ミップス社が設計したMIPS III命令セットアーキテクチャ(ISA)を実装した
マイクロプロセッサです。1991年10月1日に正式発表され、
64ビットマイクロプロセッサとしては初期のものの一つです。当時、
RISCマイクロプロセッサはIntel486などの
CISCマイクロプロセッサを置き換えることが期待されており、R4000はAdvanced Computing Environment (ACE) という
RISCプラットフォームの業界共通規格で使用されるプロセッサとして選定されました。ACE自体は様々な要因で失敗しましたが、R4000はワークステーションやサーバ市場で成功を収めました。
- - FPU内蔵: 浮動小数点演算ユニット(FPU)がチップに内蔵されました。
- - 64ビット対応: レジスタセットと命令セットが64ビットに対応しました。
- - スーパーパイプライン: 8段のパイプラインを採用し、システムクロックの2倍の周波数で動作するスーパーパイプラインアーキテクチャが導入されました。
- - 動作周波数: 内部動作周波数は100MHzおよび150MHzで提供されました。
- - 二次キャッシュ: 最大4MBの二次キャッシュメモリをサポートしました。
- - マルチプロセッサ対応: マルチプロセッサに対応した命令とキャッシュ機能が搭載されました。
R4000のバリエーション
- - R4000PC: 二次キャッシュインターフェースを削減し、ピン数を減らしたバージョンです。
- - R4000SC: 二次キャッシュを接続可能なバージョンです。
- - R4000MC: 二次キャッシュインターフェースに加え、マルチプロセッサ対応インターフェースを備えたバージョンです。
内蔵キャッシュは命令用とデータ用それぞれ8KBと
R3000よりも小さくなっていますが、後に内蔵キャッシュ容量を倍増させたR4400がリリースされました。
開発における課題とその後
スーパーパイプラインを採用したにもかかわらず動作周波数が低く、スーパースカラアーキテクチャも採用しなかったため、他社CPUに遅れをとるようになりました。この背景には、自社工場を持たず設計と製造が分離されたことによるオーバーヘッドがあったと指摘されています。その後、R10000などで第一線級CPUファミリーへの復帰を図りましたが、製造できるメーカーが限られ競争力を低下させる遠因ともなりました。
しかしながら、R4000/R4400はワークステーションやサーバに広く採用され、R4100、R4300、R4600などの派生品は
組み込みシステムで多用されました。
アーキテクチャの詳細
R4000は、8段のパイプラインを採用し、各ステージの処理量を減らすことで動作周波数を向上させました(スーパーパイプライン)。ただし、アーキテクチャ上の改善はスーパーパイプライン化のみであり、分岐予測、
アウト・オブ・オーダー実行、投機的実行、レジスタリネーミングなどは採用されていません。設計の主眼は、マルチプロセッサ対応機能のサポートと
64ビット化に置かれていました。
機能の改善点
- - branch likely命令: 条件分岐命令の実行方法を改善し、パイプラインの乱れを抑制。
- - 浮動小数点演算: 平方根を求める命令が追加されました。
- - TLB: 48エントリに減少しましたが、1エントリで2ページをマップできるため、実質的に96エントリ相当となりました。
- - ページサイズ可変: ページサイズが4KB固定から4KB~16MBまで可変となりました。
64ビットモードでは、汎用レジスタが全て
64ビット幅になり、CP0レジスタも
64ビット化されました。各種演算命令も
64ビット版が用意されました。MMUは48エントリのTLBを使用して仮想アドレスから物理アドレスへの変換を行います。仮想アドレス空間は
64ビットですが、実装は40ビット(1TB)に制限され、物理アドレスは36ビット(64GB)です。特権モードにはカーネルモードとユーザモードの中間のスーパーバイザモードが導入されました。xkphysは物理空間をTLBなしでマップする領域で、
キャッシュコヒーレンシの方式によって多重にマッピングされています。
マルチプロセッサ対応
マルチプロセッサをサポートするため、R4000MC/R4400MCではスヌープ方式が採用され、無効型(MESI)プロトコルと更新型(MOESI)プロトコルが選択可能です。また、スレッド間の同期機構として、sync命令とll/sc命令が導入されました。
sync命令
sync命令はメモリアクセスの順序性を保証します。これにより、複数のプロセッサが共有メモリにアクセスする際の矛盾を防ぎます。
ll/sc命令
ll(load linked)命令とsc(store conditional)命令は、アトミックな読み込みと書き込み操作を実現します。これらの命令を使用することで、ロック機構などを効率的に実装できます。
パイプラインの詳細
R4000の整数パイプラインは8段です。
1.
IF (Instruction Fetch): 仮想アドレスを生成し、TLBで物理アドレスに変換。
2.
IS (Instruction Send): 命令キャッシュから命令をフェッチ。
3.
RF (Register Fetch): 命令を解釈し、レジスタを読み込む。
4.
EX (Execute): 命令を実行。
5.
~7段: 実行継続
8.
WB (Write Back): レジスタファイルに書き込み。
各演算ユニット
- - 整数演算部: ALU、シフタ、乗算器、除算器、ロードアドレス生成器を含む。ALUはパイプライン化されており、シフタはバレルシフタを使用。乗算器と除算器はレイテンシが大きい。
- - 浮動小数点演算部: IEEE 754-1985準拠のFPUを内蔵。加算器、乗算器、除算器のサブユニットで構成され、最大3つの命令を並行実行可能。乗算器はマイクロプロセッサのクロックの2倍の周波数で駆動されます。
二次キャッシュ
R4000SC/MCは128KBから4MBの二次キャッシュをサポート。物理インデックス・物理タグ方式を採用し、ラインサイズは選択可能。キャッシュコントローラはR4000本体に内蔵されています。
システムバス
R4000のシステムバスは
64ビット幅のSysADバスを採用し、アドレスとデータを多重化しています。駆動周波数はプロセッサの内部周波数を分周して設定可能です。
製造プロセスとトランジスタ数
R4000は120万個のトランジスタを集積し、1.0μm
CMOSプロセスで製造されました。ミップス社はファブレス企業のため、パートナー企業が製造しました。
クロック
外部からの主クロック信号を元に、PLLを使って2倍のクロック信号を生成しています。
パッケージ
R4000PCは179ピンのCPGA、R4000SC/MCは447ピンのSPGAを採用しています。R4000MCとR4000SCはピン配置が異なり、R4000PCのピン配置はR4200やR4600とほぼ同じです。
R4400の概要
R4400はR4000の改良版で、1992年11月初めに発表されました。動作周波数が向上し、100MHzから250MHzのバージョンが存在します。主な強化点は一次キャッシュ容量の増加で、命令・データともに16KBとなりました。
R4400の製造
IDT、LSI Logic、NEC、Performance Semiconductor、
シーメンス、
東芝がライセンス生産しました。
NECのVR4400
NECはVR4400として販売し、0.6μmプロセスで製造。後に0.35μmプロセスで製造した250MHz版もリリース。MR4401というMCMも開発し、二次キャッシュを内蔵。
東芝のTC86R4400
東芝はTC86R4400として販売し、0.3μmプロセスで製造した200MHz版をリリースしました。
採用例
R4000/R4400は、多くの企業がワークステーション、サーバー、リアルタイムシステム、
スーパーコンピュータなどで採用しました。例えば、Carrera Computers、コンカレント・コンピュータ、DeskStation Technology、NEC、ピラミッド・テクノロジー、Siemens Nixdorf Informationssysteme、
シリコングラフィックス、タンデムコンピューターズなどが挙げられます。
コアロジックチップセット
R4000/R4400は、システムとのインターフェースにコアロジックを外付けする必要があり、各社が独自開発または市販のチップセットを使用しました。
その他のバリエーション
R4200、R4300iは低価格/低消費電力版、R4600、R4700はQEDの設計によるもの、R5000はスーパースカラー方式です。
脚注と出典
(参考文献は省略)
外部リンク
(外部リンクは省略)