|
R3000はMIPS I命令セットアーキテクチャ (ISA) のマイクロプロセッサで、ミップス社が開発し、1988年6月にリリースした。MIPSアーキテクチャとしては2つ目の実装であり、R2000の後継である。 オリジナルのR3000 はCPUと、メモリ管理および例外処理を担当するCP0と呼ばれる部分から構成される。またFPUはR3010という別チップであり、R3000と密に結合して使用される。キャッシュメモリは内蔵していないが、命令キャッシュとデータキャッシュのコントローラを内蔵し、それぞれ256KBまでの1次キャッシュを接続することができた。動作周波数は20MHzから最大で40MHzだが、主に30MHz、33MHzで使用されることが多い。1.2μmのCMOSプロセスで製造され、56 mm2 のチップサイズに11万5千個のトランジスタを集積している。 ミップス社は設計のみを行い、製造はメーカーに任せていた。R3000 を製造したメーカーとしては、IDT、LSIロジック、NEC、シーメンス、東芝などがある。SGIなどのワークステーションやサーバに使用された。また、派生品がPlayStationのプロセッサとしても使用され、組み込みシステムにも多く使われた。 == アーキテクチャ == R3000 は、4つのコプロセッサをサポート可能なアーキテクチャとなっているが、実際に使っているのはふたつであり、CP0 としてメモリ管理ユニットと例外処理ユニットを内蔵し、CP1 として接続された FPU を制御する。後継アーキテクチャでは FPU の拡張命令を CP1X として従来 CP3用とされていたオペコード表に割り当てている。命令はすべて32ビットとなっていて命令フェッチとデコードを単純化している。CPUのパイプラインは5段になっていて、実行ユニットとしてALU以外に、乗除算ユニットなどを持っている。CPUの汎用レジスタは32ビット×32本で、他に乗除算の結果を格納する専用レジスタ(32ビット×2本)とプログラムカウンタがある。 CP0 は、以下のような機能を持つ。 * ユーザモード、カーネルモードの設定 * 例外発生時の原因情報を保持 * メモリ管理機能。MIPSアーキテクチャでは仮想物理アドレス変換のためのTLBを直接ソフトウェアで制御するようになっており、そのための機能を実装している。TLBは64エントリのCAM(連想メモリ)であり、各エントリが4Kバイトのページをマップする。そのうち 8エントリは固定エントリと呼ばれ、オペレーティングシステムが固定的に使用し、それ以外はランダムエントリとして無作為に入れ替えて使用する。OSのカーネルはTLBを操作する際に、TLBを使用しない空間(下記)で動作するか、固定TLBエントリのマップする空間内で動作しなければならない。 * TLB を使用しないメモリアクセスも可能になっていて、右図のようになっている。''kseg1'' をメモリマップドI/Oに使用するため、I/Oをその位置に配置すると、TLBを使わずにアクセスできるメモリは512Mバイト以下となる。 * TLBミスが発生した場合、カーネルが処理を行う。これは他のアーキテクチャではハードウェアで実現している機能であり、ここを如何に最適化するかが性能に重要な影響を与える。OSが用意したページテーブルを仮想空間上で連続に配置しておくと高速にTLBのリフィル(置き換え)ができるよう設計されているが、そのためにはページテーブルがTLB上でマップされている必要があり、固定TLBエントリがこの用途のために使われることが多い。 * キャッシュメモリはTLBの外側にあり、物理アドレスタグになっている。ダイレクトマップ方式であるため、物理アドレスがちょうど64Kバイトの倍数分だけ離れたところにある配列のコピーなどを行うとキャッシュのスラッシングと言われる現象が発生して劇的に性能が低下する。つまり、ロード命令によってキャッシュ上に置かれたメモリ内容を直後のストア命令で置き換えてしまうため、次のロード命令でも再度メモリから読み込む必要が生じるのである。 FPU(R3010)は、以下のような特徴を持つ。 * IEEE 754 浮動小数点数の規格に準拠したフォーマット。 * 32ビット×32本のレジスタ。倍精度演算では 64ビット×16本のレジスタとして使用。 * 6段のパイプライン。実行ユニットは、加減算ユニット、乗算ユニット、除算ユニットの3つ。 * CPUとは異なり、ステータス・レジスタを持っている。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「R3000」の詳細全文を読む スポンサード リンク
|