R4400とは何? わかりやすく解説 Weblio辞書 (original) (raw)

R4000は、MIPS III命令セットアーキテクチャ (ISA) を実装したマイクロプロセッサで、ミップス社が設計した。1991年10月1日に正式発表された[1][2]64ビットのマイクロプロセッサとしては最初期のもので、MIPS III を最初に実装した。1990年代初期、RISCマイクロプロセッサは Intel486 などのCISCマイクロプロセッサに取って代わることが期待され(1991年当時、副社長だったスキップ・ストリッター(英語版)はR4000を製造するNECが486を製造するintelとの価格競争に勝つだろうとの見方を示していた[3])、R4000はRISCプラットフォームの業界共通規格である Advanced Computing Environment(英語版) (ACE) で使用するマイクロプロセッサに選ばれた。ACE自体は様々な要因が重なって失敗に終わったが、R4000 はワークステーションやサーバ市場で成功を収めた。

uPD30400RJ-40
VR4000PC-40(R4000PC-40)

概要

R3000に比較して、以下のような強化がなされている。

R4000はバリエーションとして以下のものがある。

ただし、内蔵キャッシュは命令 8Kバイト、データ 8Kバイトであり、R3000よりも小さくなっている。ほとんど間をおかずに内蔵キャッシュ容量を倍増したR4400をリリースしている。 スーパーパイプラインの割りには動作周波数が低く、スーパースカラも採用していないため、他社CPUに遅れをとるようになった。これは自社工場を持たず、設計と製造が分離されたことによるオーバーヘッドによるものと見るものもある。 その後、R10000などにより、第一線級CPUファミリーへの復帰を図ったが、ある程度先端的なラインと製造技術を要求するため、製造できるメーカが限られる結果となり、競争力をさらに低下させる遠因ともなった。

とは言うものの、R4000/R4400はワークステーションやサーバに広く使われた。また、派生品の R4100、R4300、R4600などは組み込みシステムで多く使われている。

アーキテクチャ

R4000は、パイプラインの段数を8段にしてひとつのステージの処理量を減らし、動作周波数を向上させた(スーパーパイプライン)。プロセッサのアーキテクチャ上の改善は実はそれだけであり、分岐予測アウト・オブ・オーダー実行投機的実行レジスタ・リネーミングもこの段階では全く採用されていない。それよりも、設計上の主眼はマルチプロセッサ対応機能のサポートと64ビット化に置かれている。

細かい機能の改善点としては、以下のような点が上げられる。

64ビット・アーキテクチャ

R4000/R4400の64ビットモードでのメモリマップ

64ビットモードでは、汎用レジスタが全て64ビット幅となり、アドレスに関連する情報を格納するCP0レジスタも64ビット化された。各種演算は64ビット版が用意されている。メモリ管理ユニット (MMU) は48エントリのTLBを使って仮想アドレスから物理アドレスへの変換を行う。仮想アドレス空間は64ビットとなっているが、実はフラットではない(右図参照)。実際には40ビット、すなわち1TBの仮想記憶空間しか実装していない。それ以外のビットはゼロであることを確認するだけとなっている。物理アドレスは36ビットで、物理メモリ空間は64GBまでとなっている。また、特筆すべきは特権モードとしてカーネルモードとユーザモードの中間のスーパーバイザモードが導入された点である。この図の中で xkphys は説明が必要であろう。xkphys は物理空間をTLBを使わずにマップしているが、サイズは物理空間 64GBよりもずっと大きい。これは、従来の kseg0kseg1 を拡張したものであり、キャッシュコヒーレンシ(後述)をどういう方式で保つかによって物理空間を多重にマップしているためである。_xkphys_にカーネルをおく場合、キャッシュコヒーレンシの方式(プロトコル)によってアクセスすべきアドレスが異なる。

マルチプロセッサ対応

マルチプロセッサをサポートするにあたって、重要な点のひとつはキャッシュコヒーレンシである。R4000MC/R4400MCでは、スヌープ方式が採用されており、無効型(MESI)プロトコルも更新型(MOESI)プロトコルも選択できるようになっている(MESIプロトコル参照)。

もうひとつ、マルチプロセッサで重要となるのは、並行して動作するスレッド間の同期をとる機構である。MIPSでは以下のふたつの機構で同期をとる。

sync命令 はメモリアクセスの順序性を保証する。たとえば、あるデータを更新したら、更新完了を示すフラグを立てるとする。その順番がTLBやキャッシュの状態に左右されて期待した順番にならないと更新していないものが更新されたように他のプロセッサから見えてしまう。これを防ぐのがsync命令である。まず、プロセッサXが次のようなコードを実行する。

sw t3, DT1 li t4, 1 sync sw t4, FL1

ここで、DT1が更新されたことをFL1で示す。一方プロセッサYは次のようなコードを実行する。

loop: lw t5, FL1 beq t2, zero, loop nop sync lw t6, DT1

これによって順序性を保つ。sync命令はマルチプロセッサでない場合でも、I/Oデバイスへの書き込み(通常キャッシュを使用しないが、プロセッサ内にストアバッファがあるので命令が完了しても書き込まれていないことがある)の完了を保証する目的で使うことができる。

ll/sc命令 ll命令(load linked)はロード命令として動作するが、その際にロードアドレスをCP0のレジスタ LLAddr に格納しておく。その後でロードした内容に変更を加え、sc命令(store conditional)で元のアドレスに書き込む。ただし、sc命令は以下のように動作する。

なお、LLAddr は例外が発生した場合もクリアされる。これを使うと、単純なスピンロックも、リーダー・ライターロックも実現可能である。スピンロックのコードは以下のようになる。

Loop: ll t2, (t1)  ; t1 の指すアドレスからロックワードを読み込む(0:未ロック 1:ロック済み) ori t3, t2, 1  ; 1 を立てる beq t3, t2, Loop  ; 1 が元から立っている場合はスピンする nop sc t3, (t1)  ; 書き戻す beq t3, zero, Loop ; じゃまが入った場合は最初からやり直し nop

詳細

R4000の整数パイプラインは8段となっている。第1段 (IF) で実行すべき命令の仮想アドレスを生成し、TLBで仮想アドレスから物理アドレスへの変換を開始する。第2段 (IS) では変換が完了して8KBの命令キャッシュから命令をフェッチ(読み込み)する。この命令キャッシュはダイレクトマップ方式で仮想インデックス・物理タグ方式である。ラインサイズは16バイトまたは32バイト。アーキテクチャ上は32KBまで拡張可能になっている。

第3段 (RF) では命令が解釈され、レジスタファイルを読み込む。MIPS III ではレジスタファイルが2つ定義されており、1つは整数演算用、もう1つは浮動小数点演算用である。どちらも64ビット幅で32エントリある。整数レジスタファイルには2つの読み込みポートと1つの書き込みポートがあり、浮動小数点レジスタファイルには2つの読み込みポートと2つの書き込みポートがある。命令実行は第4段 (EX) から開始される。レジスタファイルへの書き込みは第8段 (WB) で行われる。

整数演算

R4000の整数演算部には、演算論理装置 (ALU)、シフタ、乗算器、除算器、ロードアドレス生成器がある。ALUには64ビットの桁上げ選択式加算器(英語版)と論理ユニットがあり、パイプライン化されている。シフタは32ビットのバレルシフタで、64ビットのシフト命令を2サイクルで実行するため、1サイクルだけパイプラインをストールさせる。チップサイズを削減するためこのような設計を選択した。乗算器と除算器はパイプライン化されておらず、大きなレイテンシがある。乗算は10サイクル(32ビットの場合)または20サイクル(64ビットの場合)のレイテンシがあり、除算は69サイクル(32ビット)または133サイクル(64ビット)のレイテンシがある。ほとんどの整数演算命令は1サイクルしかかからない。ALUの加算器はメモリのロードまたはストア、分岐先アドレスなどの計算にも使われる。

浮動小数点演算

R4000は IEEE 754-1985 準拠のFPUを同じチップ上に搭載しており、その部分を R4010 と呼ぶこともある。FPUはCP1のコプロセッサとして動作する[4](MIPS ISA ではCP0からCP3まで4つのコプロセッサを利用できるよう定義している)。CPUのステータスレジスタのFRビットの設定により、FPUの32ビットモードと64ビットモードを切り替えることができる。32ビットモードでは32本の浮動小数点レジスタはそれぞれ32ビット幅となり、32個の単精度浮動小数点数を格納するか、2本のレジスタを1組として16個の倍精度浮動小数点数を格納する。

FPUはデータやリソースの依存関係がなければALUと同時に動作可能で、依存関係があればストールが発生する。FPUには3つのサブユニットがあり、それぞれ加算器、乗算器、除算器である。乗算器と除算器は加算器と並行に命令を実行できるが、乗算も除算も最終段で加算器を使用するため、並行実行にも制限がある。したがってFPUでは最大3個の命令(加算、乗算、除算)を並行実行でき、1サイクルに1命令を実行に移すことができる。

加算器と乗算器はパイプライン化されている。乗算器は4段のパイプラインになっており、性能向上のため dynamic logic を使ってマイクロプロセッサのクロックの2倍の周波数で駆動される。除算には23サイクル(単精度)または36サイクル(倍精度)かかり、平方根の計算にはそれぞれ54サイクルまたは112サイクルのレイテンシが生じる。除算と平方根計算には、SRT除算アルゴリズムを使っている。

二次キャッシュ

R4000SC/MCは128KBから4MBまでの二次キャッシュをサポートしている。二次キャッシュには専用の128ビットのデータバスでアクセスする。二次キャッシュは命令用とデータ用を分離して実装することもできるし、統合して実装することもできる。後に命令キャッシュとデータキャッシュをそれぞれ128KBから2MBの範囲で実装可能となった[5]。二次キャッシュは物理インデックス・物理タグ方式で、ラインサイズは128/256/512/1024バイトのいずれかを選択できる。キャッシュコントローラはR4000本体内にある。二次キャッシュには普通のSRAMを使える。データバスとタグバスはECCで保護されている。

システムバス

R4000のシステムバスは64ビット幅で、SysADバスと呼ばれる。SysADバスはアドレスとデータを多重化しており、同じ線をアドレス転送とデータ転送で共用する。そのため帯域幅が狭くなるが、アドレスとデータに別々のバスを用意するより安価で構築でき、システムの複雑さも低減できる。SysADバスの駆動周波数はプロセッサの内部周波数の半分、3分の1、4分の1のいずれかに設定可能である。SysADバスはシステムクロックを分周することで駆動クロックを生成する。

トランジスタ数、チップサイズ、プロセス

R4000は120万個のトランジスタを集積している[6]。1.0μmCMOSプロセスで製造することを意図して設計された。ミップス社はファブレス企業であるため、パートナー半導体企業にライセンス提供することで製造され、中には0.8μmプロセスで製造した企業もある[7]

クロック

R4000は外部から供給される主クロック信号を元にして様々なクロック信号を生成する。動作周波数のクロック信号を生成するため、R4000は内蔵の位相同期回路 (PLL) を使って主クロック信号の2倍のクロック信号を生成している。

パッケージ

R4000PCのパッケージは179ピンのCPGA (ceramic pin grid array) である。R4000SC/MCは447ピンのSPGA (staggered pin grid array) である。R4000MCのピン配置とR4000SCのピン配置は異なり、R4000SCでは使われていないピンがR4000MCではキャッシュコヒーレンシの実装に使われている。R4000PCのピン配置は同じPGAパッケージのR4200R4600とほぼ同じである。そのためこの3種のマイクロプロセッサを使ったシステムは設計を共通化しやすい。

R4400

TC86R4400MC-200(R4400MC)

R4400は、R4000の改良版である。1992年11月初めに発表された。一部の主要顧客にサンプル出荷した後、1993年1月に一般に出荷し始めた。動作周波数が高くなり、100MHz、133MHz、150MHz、200MHz、250MHz という版が出荷された。R4000からの強化は一次キャッシュ容量増だけで、命令・データともに16KBとなった。230万個のトランジスタを集積している。

R4400は、IDTLSI LogicNEC、Performance Semiconductor、シーメンス東芝がライセンス生産した。IDT、NEC、シーメンス、東芝は自社ブランドでも販売している。LSI Logic はカスタム製品に使った。Performance Semiconductor はR4400を製造していた部門を Cypress Semiconductor に売却し、そちらではMIPSのマイクロプロセッサ生産をしなくなった。

NECはこれをVR4400として発売。最初の150MHz版は1992年11月に発表した。当初は0.6μmプロセスで製造していた[8]。1995年中ごろには250MHz版のサンプル出荷を開始。こちらは0.35μmプロセスで製造している[9]。NECはまた、MR4401というマルチチップモジュール (MCM) を開発している。これはVR4400SCと1MビットSRAM10個を集積したもので、SRAMは1MBの二次キャッシュとなっている。このMCMはR4400PCとピン配置が同じになっていた(つまりR4x00PC用のシステム設計で二次キャッシュによる高速化が可能)。150MHz版が1994年に発表され、1995年には200MHz版が発表された。

東芝は TC86R4400 として発売。1994年中ごろに0.3μmプロセスで製造した200MHz版を発売した。1万個単位で購入した場合の価格は、R4400PCが1600ドル、R4400SCが1950ドル、R4400MCが2150ドルだった[10]

採用例

コアロジック・チップセット

R4000/R4400はシステムとのインタフェースにコアロジックを外付けする必要がある。一般にも販売されたが、各社が独自開発したものもある。例えばSGIは独自開発したものを使っていた。一般に販売されたチップセットとしてはエイサー、NEC、東芝などのものがある。エイサーのチップセットは PICA、東芝のチップセットは Tiger Shark と称した。Tiger Shark はSysADバスをi486互換バスに変換する方式だった[16]

バリエーション

脚注・出典

  1. ^ "MIPS To Show Off Three R4000 RISC Chips This Week".
  2. ^ "MIPS And Its Partners Launch The 64-Bit R4000 RISC".
  3. ^ SuperASCII 1991年8月号, p. 37.
  4. ^ MIPS R4000 Microprocessor User's Manual, Second Edition, p. 152.
  5. ^ Heinrich, "MIPS R4000 Microprocessor User's Manual", p. 248.
  6. ^ Mirapuri, "The Mips R4000 Processor", p. 10.
  7. ^ Mirapuri, "The Mips R4000 Processor", p. 21.
  8. ^ "NEC VR4400 Clock-Doubling RISC Has 2m Transistors".
  9. ^ "NEC Ready With 250MHz Version Of The 64-Bit MIPS R4400 RISC".
  10. ^ "Toshiba Has 200MHz MIPS R4400".
  11. ^ "...And From Carrera Computers"
  12. ^ "Concurrent Multiprocessors Feature New Bus Architecture"
  13. ^ "MIPS R-Based Windows NT Personal Computers From Deskstation..."
  14. ^ "NEC Goes After The Business Market With Its Latest Line Of RISC UNIX Workstations"
  15. ^ "Pyramid Technology Aims To Crash The Mainframe With Nile Series"
  16. ^ "Toshiba Samples 80486-Bus Chip Set For R-Series".

参考文献

外部リンク

MIPSマイクロプロセッサ
MIPSアーキテクチャ
全般プロセッサー MIPS64適合 龙芯3号系列 デスクトップ/産業機器 LS3A1000/LS3A1000-I(LS3A1000-i) LS3A2000/LS3A1500-I LS3A3000/LS3A3000-I(LS3A3000-i) LS3A4000/LS3A4000-I(LS3A4000-i) サーバ LS3B1000 LS3B1500 LS3B2000 LS3B3000 LS3B4000
応用プロセッサー MIPS32適合 Ingenic XBurst JZ4720 Ben NanoNote JZ4730 (Skytone Alpha-400) JZ4740 (Dingoo A320) JZ4750 (Game Gadget) JZ4760 Velocity Micro T103 Cruz Velocity Micro T301 Cruz JZ4770 Ainol Novo7 Paladin NEOGEO-X GCW-Zero JZ4780 MIPS64適合 龙芯2号系列 LS2H LS2K1000/LS2K2000
マイクロコントローラ(組み込み機器) M4K Microchip Technology PIC32MX 4Kc/4KEc ATI/AMD/Broadcom Xilleon MIPS32適合 龙芯1号系列 LS1A0300 LS1B LS1C300 LS1C101 LS1D LS1G LS1H
ネットワーキング 4Kc/4KEc Qualcomm Atheros AR2313 AR2318 MediaTek RT2880 Texas Instruments/Infineon/Lantiq AR7 Lantiq AMAZON 5Kc Marvell 88E6318 "Link Street" 24Kc/24KEc Qualcomm Atheros AR7240 AR7161 AR9132 AR9331 MediaTek RT3050 RT3052 RT3350 RT5350 RT6856 MT7620 Lantiq DANUBE VINAX 34Kc Lantiq AR188 VRX288 GRX388 Ikanos Fusiv Vx175/173 Fusiv Vx180 Fusiv Vx185/183 74Kc Qualcomm Atheros AR9344 QCA9558 MediaTek RT3662 RT3883 Broadcom BCM4706 1004Kc MediaTek MT7621 1074Kc Realtek RTL8198C MIPS32適合 Broadcom various Cavium various Alchemy Semiconductor Alchemy RMI Corporation XLR MIPS64適合 Broadcom various Cavium Octeon
ゲーミング various PlayStation 1 MIPS R3000A-compatible Nintendo 64 NEC VR4300 PlayStation Portable R4000-based PlayStation 2 Emotion Engine
スーパーコンピュータ 龍芯 LS2F/LS2F1000 LS3A1000 LS3B1000 SiCortex
航空宇宙 MIPS64適合 龙芯1号系列 LS1E0300/LS1E1000 MIPS32適合 龙芯1号系列 LS1E04 LS1F04/LS1F0300 LS1J
クラシックプロセッサー MIPS I R2000 R3000 MIPS II R6000 MIPS III R4000 R4400 R4200 R4300i R4600 R4700 MIPS IV R5000 R8000 R10000 R12000 R12000A R14000 R14000A R16000 R16000A R18000 MIPS V
カテゴリ