LINEスタンプ制作代行サービス・LINEスタンプの作り方!

お電話でのお問い合わせ:03-6869-8600

stampfactory大百科事典

MIPSアーキテクチャ

MIPSアーキテクチャは、ミップス・コンピュータシステムズ(現ミップス・テクノロジーズ)が開発したRISCマイクロプロセッサの命令セット・アーキテクチャ (ISA) である。MIPSは "Microprocessor without Interlocked Pipeline Stages"((命令)パイプラインのステージに「インターロックされたステージ」がないマイクロプロセッサ)に由来しており、R2000の頃のマイクロアーキテクチャの特徴からの命名である(が、その後そのような特徴が薄れていったのも、他のRISCと同様である)。MIPS値にも掛けている。当初は32ビット幅のレジスタとデータパスを持つ32ビットの構成だったが、後に64ビットに拡張された。MIPSアーキテクチャには下位互換のある複数の命令セットが存在する。それぞれ、MIPS I、MIPS II、MIPS III、MIPS IV、MIPS 32、MIPS 64 と称する。現行版は MIPS 32(32ビット実装)と MIPS 64(64ビット実装)である。MIPS 32 と MIPS 64では命令セットだけでなく制御レジスタについても定義している。いくつかのアドオン拡張も用意されている。例えば、MIPS-3D は3Dタスクで一般的な処理を行うための浮動小数点SIMD命令のシンプルなセットである。MDMX (MaDMaX) は、より広範な整数SIMD命令セットで、64ビット浮動小数点レジスタを流用する。MIPS16e は命令列を圧縮してプログラム格納域を小さくするための拡張である (ARMアーキテクチャのThumbエンコーディングに対抗したもの) 。MIPS MT は、米インテル社がハイパースレッディング・テクノロジーとして普及させた技術と同等の、マルチスレッディングに適した拡張である。命令セットが非常にきれいなので、アメリカ合衆国ではコンピュータ・アーキテクチャを学校で教えるときに教材としてMIPSアーキテクチャを使うことが多い。MIPSのデザインは、もうひとつの初期のRISCであるバークレーRISC()と共に、後発のRISCに影響を及ぼした。MIPSプロセッサはSGIのコンピュータ製品群に使われていた。日本では、ソニーのNEWSや日本電気 (NEC) のEWS4800で使われた。また、米DEC社はごく短期間だけMIPSを使ったワークステーションを製品化していた。また、機器組み込み分野で成功し、Windows CE製品、シスコシステムズのルーター、プリンタのエンジンなどに使われた。ゲーム機分野でも成功を収め、NINTENDO64、ソニー・コンピュータエンタテインメントのPlayStation、PlayStation 2、PlayStation PortableでもMIPSアーキテクチャのプロセッサが使われた。1990年代後半、RISCマイクロプロセッサの出荷個数ベースで3分の1がMIPSアーキテクチャの製品だったと見積もられている。1981年、スタンフォード大学のジョン・L・ヘネシー率いるチームは後に最初のMIPSプロセッサを生むプロジェクトを開始した。基本コンセプトは、命令パイプラインを深くすることで劇的に性能を向上させることである。この手法はよく知られていたが(IBM 801 など)、その可能性が完全に解明されていなかった。CPUは命令デコーダ、演算論理装置 (ALU)、メモリとやりとりするロード/ストア・ユニットといった部分で構成されている。パイプライン化されていない古い設計では、1つの命令を(ほぼ)完了させないと次の命令を処理できず、CPU内部ではほとんどの時間を実行処理に関与せずに待機するだけの回路が多くなる。パイプライン方式では、1つの命令の実行過程を複数に分割し、各段階ではサブユニット各部が並行しオーバラップして動作可能にしておき、1つ目の命令の最初の段階の処理が終わると次の段階の処理へ引き継がれると同時に2つ目の命令の最初の段階の処理が同時平行して実行され、3つ目の命令が入ると1つ目の命令は3段階先、2つ目の命令は2段階先、の処理がそれぞれ同時に行われる。すべてが最も効率的に動けば、複数に分割した実行過程の間でどれほど複雑な処理を行っても、1段階の処理ごとに1つの命令が完了できることになる。命令パイプラインでは、除算命令のように命令の処理完了に長い時間がかかる場合、パイプラインに次の命令を取り込むのを待つ必要がある。この問題の解決策としてパイプラインの各段階が忙しいことを示せるようにして、パイプラインをインターロックして次の命令がステップを進まないように止めなければならない。これがストールであり、分岐のように中断以前の処理が無駄になる場合にはストールに加えて無駄となった処理時間分も加わり、これらがインターロックのロスとなる。ストールが発生しインターロックがかかると命令パイプラインは足踏みするため、性能向上は望めないと考えられていた。MIPSの設計上では、すべての命令を単純化することで命令ごとの実行処理が1クロックサイクル内で完了するよう計画された。そうできればインターロックを無くすことができる。このような設計にすることで掛け算や割り算などの複雑な命令がいくつか1つの命令では実行できなくなるが、単純な命令だけであれば、プロセッサに高速クロックを与え早く動作させることが可能になって、性能が向上すると予想された。また、インターロック回路を加えると半導体チップの面積(ダイサイズ)が増えて、クロックを上げることが困難になるため、クロックの高速化のためにはインターロックを排除することも必要だった。複雑だが有用だった命令を排除することは議論の中心になった。「複雑な掛け算を単純な多くの足し算にして、どうして速度が向上するのか?」と、多くの人がこの設計手法、そしてRISC一般の謳い文句は誇大広告だと言った。このような過度の単純化はこの設計における速度向上のポイントが命令にあるのではなくパイプラインにあるということを無視したものだった。この問題はディレイスロットで一応解決された。例えば、2クロックサイクルかかる命令があった場合、次の命令をディレイスロットとし、前の命令が完了していないことを前提として全く関係のない、つまり前の命令の結果を必要としない、かつ前の命令に関わっているレジスタを使用しない命令を順番を変え移動してくることでパイプラインを止めないようにした。これを実現するためには、プロセッサに与える命令列をあらかじめ用意しておくコンパイラが、各命令ごとのクロックサイクル数を把握して、可能な限りディレイスロットを有効な命令で埋めるようにする必要があった。それでも大部分の命令は1クロックサイクルで実行できた。また、コンパイラ技術の進展はディレイスロットの活用頻度を向上させた。初期MIPSと並び、RISCの典型であり代表とされるバークレーRISC(、SPARCへの影響が大きい)と比べると、サブルーチンコールの扱い方が大きく異なる。バークレーRISCは大きなレジスタファイルを持つと同時にレジスタ・ウィンドウというメカニズムにより、サブルーチンコール(頻繁に行われるため性能への影響が大きい)の性能向上を図っているが、それによって対応可能なサブルーチンコールの入れ子段数が制限されている。サブルーチンコールはそれぞれが自前のレジスタ群を必要とし、それをハードウェアでサポートするということはCPU上にさらなるリソースを必要とし、設計も複雑化することを意味する。ヘネシーは賢いコンパイラであればハードウェアでの実装に頼らずに使っていないレジスタを見つけ出すことができ、単にレジスタを有効利用できるだけでなく、あらゆるタスクの性能向上にも寄与すると考えた。MIPSの設計は最も典型的なRISC設計だということができる。命令語のビット数を節約するため、RISC設計では命令数を抑えることでオペコードのビット数を抑えている。MIPSの設計では基本オペコードは命令語32ビットの中の6ビットを使用する。命令語の残りの部分は、26ビットの分岐先アドレスの場合や、5ビットのフィールド4個で3つのレジスタとシフト値を指定し残り6ビットを追加のオペコードとしたものなどがある。また、2つのレジスタと16ビットの即値を指定する形式などもある。このような設計でCPUは実行すべき命令と必要なデータ(オペランド)を1サイクルでロードできるようになった。MOS 6502 などのRISC以前の設計ではオペコードとオペランドのロードにはそれぞれ別々のサイクルを必要とした。これもRISCによる主な性能改善点の1つである。しかし、最近のRISCでない設計では他の手段で速度向上を図っている(CPU内にキューを持つなど)。1984年、ヘネシーは将来商業レベルとなる可能性のあるデザインを確立し、教え子、友人らとミップス・コンピュータシステムズを設立する。彼らは1985年、最初のデザインであるR2000を完成させ、1988年にそれを進化させたR3000を完成させた。これらの32ビットCPUによってミップス・コンピュータシステムズは1980年代に基盤を築くことが出来た。これらの商用デザインはスタンフォード大学での学術研究的なものとは方針を変更し、ハードウェアにインターロック機構を装備し、掛け算も割り算もサポートしていた。単にひとつのプログラムを実行するだけなら上述のディレイスロットの考え方で何とかなるが、商用としてはマルチタスクや割り込みへの対応は必須であり、インターロック機構の付加は必然だった。また、半導体プロセス技術の急速な進歩がそれを可能にしていった。インターロック機構を備えたとしても、インターロックをなるべく発生させないコンパイラ技術は高速化に必須である。これらのプロセッサはSGI、DEC DECstation、ソニー NEWS、NEC EWS4800などに使われた。これらの設計にはソフトウェアアーキテクトのアール・キリアンも参加している。彼は後に MIPS III 64ビット命令セットを設計し、R4000のマイクロアーキテクチャ開発にも関わった。1991年、ミップス・コンピュータシステムズ社は最初の64ビットマイクロプロセッサR4000をリリースした。R4000は仮想アドレスだけでなく仮想空間IDを格納できる進んだTLBを採用していた。それによって頻繁なコンテキストスイッチの度にTLBをフラッシュする必要性をなくし、他の競合するアーキテクチャ(Pentium、PowerPC、Alpha)に対して劣っていたマイクロカーネル実装時の大きな性能問題を低減させることができた。しかし、ミップス社はR4000を市場にもたらそうとしたころに財政危機に陥った。そのデザインは当時のミップス社の最大の顧客である米SGI社にとって非常に重要だったため、SGI社は1992年にミップス社を買い取って、MIPSアーキテクチャが存続することを保証した。こうしてミップス・コンピュータシステムズ社はSGIの子会社となり、社名もミップス・テクノロジーズと変更された。1990年初頭、ミップス・テクノロジーズ社はプロセッサの設計をサードパーティーにライセンス供与しはじめた。プロセッサ・コア、つまり主要な演算部分の単純さによって、これは「MIPSコア」として成功を収め、従来は同等のゲート数と価格のCISCプロセッサが占めていた様々な分野でMIPSコアが使われるようになった。ゲート数と価格は密接な関係があり、CPUの価格はキャッシュメモリ領域を除けば、ゲート数とピン数でほぼ決まっていた。サン・マイクロシステムズも追随してSPARCコアのライセンス供与を開始したが、成功したとは言い難い。1990年代後半にはMIPSは機器組み込み用プロセッサ分野の勝者となっていた。1997年、4800万個目のMIPSベースのチップが出荷され、MIPS CPUファミリはモトローラのMC68000ファミリを出荷個数で抜いた。この成功により、SGI社はミップス・テクノロジーズを1998年にスピンオフさせた。ミップス・テクノロジーズの収入の半分はライセンス料であり、残りはサードパーティーが生産するコアの設計から来ている。1999年、ミップス・テクノロジーズ社はライセンス体系を整理し、32ビットのMIPS32(MIPS II にそれ以降の新規機能を追加したもの)と64ビットのMIPS64(MIPS V ベース)に分けた。このアナウンスと同時に、NEC、東芝、SiByte(後にブロードコムが買収)がMIPS64のライセンス供与を受けた。フィリップス、LSIロジック、IDTもすでに参加している。成功に成功が続き、MIPSはコンピュータに近い機器(ハンドヘルドコンピュータやセットトップボックスなど)の市場で最も使われているヘビー級CPUコアとなっている。モトローラ社もセットトップボックスに自社のPowerPCではなくMIPSコアを採用した。MIPSアーキテクチャはライセンス供与を受けることが出来るため、いくつかのベンチャー企業も参入してきた。最初にMIPSプロセッサを設計したベンチャー企業はQuantum Effect Devicesだった。MIPS社でR4300iを設計したチームはSandCraft社を設立し、NEC向けにR5432を設計し、後にSR7100を作った。これは、組み込み分野向けの最初のアウト・オブ・オーダー実行プロセッサである。DECで最初にStrongARMを設計したチームはふたつのMIPS関連ベンチャーを設立した。ひとつはSiByteでSB-1250というMIPSベースで最初のSystem-on-a-chip (SOC) を実現した製品を作った。もうひとつのAlchemy SemiconductorはAu-1000という低電力のSOCを作った。SiByteはブロードコムに買収された。AlchemyはAMDに買収されたが、後にAMDはAlchemyをRaza Microelectronics (RMI) に売却した。LexraはMIPSに似たアーキテクチャをベースにDSP機能を付加したチップをオーディオ機器市場向けに、マルチスレッド機能を付加したチップをネットワーク機器市場向けに出している。LexraはMIPSからライセンス供与を受けていなかったため、MIPSとの間で2件の訴訟となった。1件はLexraがMIPS互換であることを宣伝しないという条件ですぐさま解決した。2件目は長引き、両社を疲弊させた。結局、ミップス・テクノロジーズがLexraに対してフリーライセンスと賠償金を払うことで決着した。MIPSアーキテクチャを使ったマルチコアデバイスを構築することに特化した企業も2社登場している。 は低迷していたSandCraftから製品ラインを買い取り、通信およびネットワーク市場向けに8コアの製品を提供した。 は元々はセキュリティ・プロセッサのベンダーだったが、こちらも同じ市場向けに8CPUコアを集積したデバイスを開発し、後に最大32コア版を開発している。両社ともに社内でコアを設計しており、MIPSからコア設計を買うのではなくアーキテクチャのライセンス供与だけを受けている。MIPSプロセッサを使ったワークステーションシステムを製造していた企業として、SGI、ミップス・コンピュータシステムズ、、オリベッティ、、エイサー、DEC、NEC、ソニー、 があった。またMIPSアーキテクチャ上に移植されたオペレーティングシステムとして、SGIのIRIX、マイクロソフトのWindows NT(v4.0まで)、Windows CE、Linux、BSD、UNIX System V、QNX、ミップス自身のRISC/osなどがある。1990年代初頭、インテルプロセッサベースのPCに対抗してMIPSプロセッサベースのコンピューティング環境を作るために、コンパック他多数の企業によって (ACE) というコンソーシアムが設立された。当時、MIPSなどの強力なRISCプロセッサがインテルのIA-32アーキテクチャに取って代わるだろうという予測がなされていた。マイクロソフトの Windows NT が当初、Alpha、MIPS、PowerPCなどのRISCアーキテクチャに対応したこともその予測を裏付ける形となった。しかしインテルがPentiumクラスのCPUをリリースすると、マイクロソフトの Windows NT v4.0 では対応するアーキテクチャをIA-32とAlphaのみに絞った。後にSGIがItaniumやIA-32アーキテクチャへの移行を決定すると、デスクトップ市場ではMIPSプロセッサがほぼ完全に消えてしまった。1990年代を通して、MIPSアーキテクチャはコンピュータネットワーク、電気通信、アーケードゲーム、ゲーム機、プリンター、デジタルセットトップボックス、デジタルテレビ、DSLモデムやケーブルモデム、携帯情報端末といった組み込み市場で広く採用された。MIPSの組み込み向け実装は低消費電力と低発熱を特徴とし、組み込み向けの開発ツールも充実しており、知識の蓄積もあることから、今も組み込み市場で人気を保っている。最近ではMIPSアーキテクチャはIPコアとして、組み込み用プロセッサの設計に使える形で利用されることが多い。1999年の時点で、32ビットと64ビットの基本コアが提供されており、それぞれ MIPS32 4K と MIPS64 5K と呼ばれている。それらのコアとFPU、SIMDシステム、各種I/Oデバイスなどを組み合わせてチップを設計できる。MIPSコアは商業的に成功を収め、様々な機器で利用されている。例えば、シスコシステムズやリンクシスなどのルーター、ケーブルモデム、ADSLモデム、ICカード、レーザープリンター、セットトップボックス、ロボット、ソニー・コンピュータエンタテインメントのPlayStation 2やPlayStation Portableなどで使われている。携帯電話やPDAの分野では競合するARMアーキテクチャの座を奪うことはできなかった。MIPSアーキテクチャの組み込み用プロセッサとしてなどがある。2008年の時点で、MIPSはデジタルテレビで68%、DVDレコーダーで72%、Blu-Rayレコーダーで77%、ケーブルテレビのセットトップボックスで70%、IPテレビのセットトップボックスで77%のシェアがあり、動画のデコーダ・エンコーダを必要とする映像関係で広く使われている。MIPSアーキテクチャは超並列型のスーパーコンピュータにも採用された。シリコングラフィックス (SGI) は1990年代前半からデスクトップ型のグラフィック・ワークステーションだけでなく高性能計算市場にも注力するようになった。R4400やR8000を使った Challenge シリーズというサーバシステムで成功を収め、後にR10000も採用している。その後SGIはさらに強力なシステムの開発に注力するようになる。R10000を採用した Origin 2000 はNUMA型で最大1024個のプロセッサを相互接続するものだった。さらにそこからR14000やR16000を最大1024個構成できる Origin 3000 を開発。しかし、SGIは2005年にIA-64アーキテクチャへの移行を決定し、MIPSベースのスーパーコンピュータの開発をやめた。高性能計算のベンチャー企業SiCortexは、2007年にMIPSベースの超並列マシンを発表した。MIPS64アーキテクチャをベースとし、カウツグラフのトポロジーを使って高性能インターコネクトでノードを相互接続する。消費電力が小さく計算能力が高い。計算ノードはMIPS64コアを8個集積したマルチコアであり、メモリコントローラ、DMAエンジン、ギガビット・イーサネット、PCI Express コントローラなどがシングルチップに集積されていて、消費電力はわずか10ワットでありながら、浮動小数点演算性能はピークで6GFLOPSとされている。最大構成のSC5832はそのようなノードチップ972個で構成されており、MIPS64コアが5832個ある。ピーク性能は8.2テラFLOPSとされている。龍芯は中国科学院が設計したMIPS互換のマイクロプロセッサである。そのマイクロアーキテクチャは中国が独自に設計したもので、初期の設計ではMIPSアーキテクチャにある4つの命令が実装されていなかった。2009年6月、中国科学院はミップス・テクノロジーズから直接、MIPS32およびMIPS64アーキテクチャのライセンス供与を受けた。2006年から各社が龍芯をベースとしたコンピュータをリリースしており、低消費電力のネットブックやネットトップもある。MIPS IV は4番目のアーキテクチャである。MIPS III のスーパーセットであり、それまでの全てのアーキテクチャと互換性がある。MIPS IV は1994年のR8000で初めて実装された。MIPS IV で追加された点は次の通りである。MIPS V は5番目のアーキテクチャで、1996年10月21日の Microprocessor Forum 1996 で発表された。主に3次元グラフィックスの性能向上を目的としている。1990年代中ごろ、組み込み用途以外では主にSGIがグラフィックス・ワークステーションにMIPSマイクロプロセッサを使っていたためである。MIPS V と同時にそれを補完する MIPS Digital Media Extensions (MDMX) というマルチメディア拡張(整数のみ)も発表された。MIPS V を実装した製品は結局登場しなかった。1997年、SGIはコード名 "H1" または "Beast" と、"H2" または "Capitan" というマイクロプロセッサを発表した。前者は最初の MIPS V 実装で、1999年に出荷予定とされた。"H1" と "H2" のプロジェクトは後に統合され、最終的に1998年に中止となった。MIPS V は pair-single (PS) と呼ばれる新たなデータ型を追加していた。これは単精度(32ビット)浮動小数点数のペアを64ビットのFPUレジスタに格納するものである。算術演算命令、比較命令、条件転送命令ではPSデータをSIMD風に扱う。またPSデータのロード、配置変更、変換などの命令が追加されている。既存リソースで浮動小数点SIMDを実現しようという試みだった。初の商用モデルR2000は1985年に発表された。複数サイクルを要する乗算と除算命令の処理部をチップ上にやや独立したユニットとして追加した。乗除算の結果は汎用レジスタには出力されないため、それを汎用レジスタに持ってくる命令も追加された。その命令を乗除算の完了前に発行するとパイプラインがインターロックする。R2000はビッグエンディアンとリトルエンディアンのどちらかで立ち上げることができる。32ビット汎用レジスタを32本持つが、コンディションコードレジスタを持たず(設計者はそれがボトルネックになる可能性を考慮した)、AMD Am29000 や DEC Alpha とよく似ている。なお、プログラムカウンタには直接アクセスできない。R2000は最大4個のコプロセッサをサポートしており、そのうち1つは主CPUに組み込まれていて、例外処理、トラップ処理、メモリ管理などを行う。したがって、実際に外付けできるコプロセッサは3個までである。オプションの R2010 FPUをコプロセッサとして接続できる。R2010は32ビットの浮動小数点レジスタを32本持ち、倍精度演算では64ビットレジスタ16本として使用できる。R2000の後継としてR3000が1988年に登場した。命令およびデータ向けにそれぞれ32KB(間もなく64KBに拡大)のキャッシュを追加し、マルチプロセッシングのためのキャッシュコヒーレンシにも配慮していた。そのマルチプロセッササポートには欠陥があったが、R3000で何とかマルチプロセッサ構成にした製品がいくつか存在した。R3000には当時の他のマイクロプロセッサと同様にメモリ管理ユニット (MMU) も組み込まれていた。R3000にもR2000のときと同様に R3010 FPUが存在した。MIPSアーキテクチャのプロセッサとしては初めて市場で成功を収め、累計100万個以上が生産された。改良によって最高40MHzで動作するR3000Aが登場し、32VUPs (VAX Unit of Performance)の性能を発揮した。R3000A互換の R3051 はソニー・コンピュータエンタテインメントのPlayStationに採用され、33.8688MHzで動作した。サードパーティはR3000AとR3010をワンチップ化したものを設計しており、Performance Semiconductor のPR3400、IDTのR3500、NECのVR3600がある。東芝のTX3900はSoCであり、Windows CE の動作するハンドヘルドPC向けに開発された。航空宇宙分野向けに電磁波耐性を強化したもR3000とR3010をワンチップ化していた。R4000シリーズは1991年に登場した。命令セットを完全な64ビット対応に拡張し、FPUをCPUチップに統合し、従来よりずっと高いクロック周波数で動作した(当初は100MHz)。しかし、クロック周波数を上げるために一次キャッシュは命令とデータそれぞれ8KBに減らされ、キャッシュアクセスに3サイクルかかるようになった。動作周波数を上げるため、スーパーパイプラインと呼ばれるパイプライン段数を増やす工夫を行っている。改良版のR4400は1993年に登場。一次キャッシュが16KBに倍増され、64ビット関連のバグ(エラッタ)が一掃され、より大きな二次キャッシュをサポートしている。SGIの一部門となったミップスは外部バスを32ビットに縮小した低価格のR4200を設計し、さらに安価なR4300iのベースとなった。R4300iをベースとしてNECが開発したVR4300はゲーム機のNINTENDO64に採用された。ミップスの元従業員が創業した Quantum Effect Devices (QED) は、R4600 "Orion"、R4700 "Orion"、R4650、R5000を設計した。R4000がクロック周波数を上げるためにキャッシュ容量を犠牲にしたのに対して、QEDは2サイクルでアクセスできる大きなキャッシュを搭載し、シリコンの面積の効率的利用を達成した。R4600とR4700は SGI Indy の低価格版で採用され、シスコのルーター(36x0、7x00など)でもMIPSアーキテクチャとして初めて採用された。R4650はWebTVのセットトップボックスで採用された。R5000は単精度浮動小数点演算性能を向上させており、同クロック周波数のR4400を搭載した同型機(SGI Indy)よりもグラフィックス描画が高速になった。SGIは同じグラフィックスボードでもR5000向けは名称を変更し、性能が高いことを強調した。QEDはその後、ネットワーク機器やレーザープリンターなどの組み込み市場向けにRM7000とRM9000というファミリーを設計した。RM7000は256KBの二次キャッシュをチップ上に搭載し、三次キャッシュのコントローラも備えていた。RM9xx0はSOCファミリーで、CPUにメモリコントローラ、PCIコントローラ、ギガビット・イーサネットのコントローラ、HyperTransportポートなどの高速I/Oといったノースブリッジ機能を集積している。QEDは2000年8月、半導体企業 PMC-Sierra に買収され、PMC-SierraがMIPSアーキテクチャのプロセッサ開発を継続している。R8000(1994年)はミップスの設計による初のスーパースケーラ方式で、複数の命令を同時に実行可能となった。ワンチップではなく、CPU+一次キャッシュ(命令・データそれぞれ16KB)、FPU、二次キャッシュのタグRAMチップ×3(2個はキャッシュアクセス用、1つはバススヌープ用)、キャッシュコントローラの6個のチップで構成されている。完全にパイプライン化された加算・乗算ユニットを2つ持ち、外付けの4MBの二次キャッシュからFPUが直接データを取ってくる設計である。SGIの POWER Challenge サーバで採用され、後に POWER Indigo2 ワークステーションでも採用された。しかし浮動小数点演算性能は高いが整数演算性能はあまり高くないため科学技術計算などにしか向かず、また複数チップで構成されるためコストが高く、SGI以外では採用例がない。1995年R10000がリリースされた。シングルチップでR8000よりも高いクロック周波数で動作し、一次キャッシュは命令・データ共に32KBと大きい。スーパースケーラ設計だが、最大の改良点はアウト・オブ・オーダー実行を採用した点である。メモリ・パイプラインは1つしかなく、FPUもR8000より単純だが、整数演算性能が大幅に強化されており、低コストでもあったため、市場で成功を収めた。その後の設計は全てR1000コアをベースとしている。R12000は0.25μmプロセスを採用してチップを縮小し、クロック周波数を高めている。それを改良したR14000でもクロック周波数を向上させると共に、外付けの二次キャッシュに DDR SRAM を利用可能にした。その後もクロック周波数を向上させ内蔵キャッシュ容量を増加させたR16000とR16000Aがリリースされた。他にもMIPSファミリーにはR6000(1991年)がある。ECLで実装したもので、Bipolar Integrated Technology が製造した。R6000では MIPS II 命令セットが初めて採用された。TLBとキャッシュのアーキテクチャが他のMIPSファミリーとは大きく異なる。発表したとおりの性能を発揮できなかったが、CDCがサーバに採用した。しかし、すぐに市場から姿を消した。注意:主なプロセッサの仕様のみ掲載。命令は R、I、Jの3種類に分類される。どの命令も先頭に6ビットのオペコードがある。Rタイプではオペコードの次に3本のレジスタを指定するフィールドがあり、シフト量を指定するフィールド、機能を指定するフィールドが続く。Iタイプでは2つのレジスタを指定するフィールドと16ビットの即値のフィールドがある。Jタイプでは、オペコードに続いて26ビットで分岐先アドレスを指定する。次表は主要な命令セットの3種類の形式を示したものである。アセンブリ言語には、直接ハードウェア実装に対応した命令以外に複数命令の列に変換される「擬似命令」が存在する。MIPSアーキテクチャは32本の整数レジスタを持つ。算術処理を行うにはデータがレジスタ上になければならない。レジスタ$0は常に0であり、レジスタ$1はアセンブラが一時的に使用する(擬似命令や大きな定数を扱う場合)。エンコーディングは命令語の各ビットが命令のどの部分と対応しているかを示している。ハイフン (-) はそのビットが無視されることを意味する。注: MIPSのアセンブリ言語のコード上、分岐命令での分岐先アドレスはラベルで表現される。注: "load lower immediate" 命令は存在しない。これは addi 命令や ori 命令でレジスタ $0 を使うことで実現される。例えば、codice_1 も codice_2 もレジスタ$1に100という値が格納される。注: 即値を減算するには、その値の否定を即値として加算すればよい。MIPSアーキテクチャには32本の浮動小数点レジスタがある。2本のレジスタで倍精度の数値を表す。奇数番目のレジスタで倍精度の数値を指定することはできない。MIPSアセンブラは以下の命令を受け付けるが、これらは実際にはMIPSの命令セットに存在しない。アセンブラが同等の命令列に変換し、その際に $1 ($at) レジスタを一時的に使用することがある。ハードウェアのアーキテクチャにより、以下のことが定められている。汎用レジスタを使う際のハードウェア上の制限はこれだけである。各種MIPSツールチェーンでは、レジスタをどのように使うかについて呼出規約を定めている。これはツールチェーンのソフトウェアが定めているもので、ハードウェアにそのような制限があるわけではない。呼び出された側が保存すると定められているレジスタは、サブルーチンや関数の呼び出しやシステムコールでも保持される。例えば、$s-レジスタをルーチン内で使うときは、その内容をスタックに一時的に退避させなければならない。$sp と $fp はルーチンに入ってきたときにセーブされ、それぞれルーチン固有の固定値でインクリメントされる。そして、そのルーチンから戻るときに元の値に戻す。一方 $ra は jal 命令でルーチンに飛び込むときに自動的に変更される。$t-レジスタはサブルーチンを呼び出すと内容が破壊されるので、必要なら呼び出す側がセーブしておかなければならない。Open Virtual Platforms (OVP) では、非商用利用に限って無料で使えるシミュレータ 、プロセッサや周辺機器やプラットフォームのモデルのライブラリ、ユーザーが独自のモデルを開発できるAPIなどを提供している。ライブラリに含まれるモデルはオープンソースでC言語で書かれており、MIPSの 4K, 24K, 34K, 74K, 1004K, 1074K, M14K といったコアが揃っている。それらのモデルの開発と保守は Imperas が行っており、ミップス・テクノロジーズの協力の下で評価し MIPS-Verified (tm) というマークをもらっている。MIPSベースのプラットフォームのモデルとしては、非常に単純なものとLinuxのバイナリイメージをブートできるものが用意されている。それらのプラットフォーム・エミュレータはソースとバイナリの形で提供されており、高速で使いやすい。また、教育向けのMIPS32(当初はR2000/R3000をシミュレートしていた)のフリーなシミュレータ SPIM がある。EduMIPS64 は、GPLライセンスのグラフィカルなMIPS64シミュレータで、Java/Swingで書かれている。MIPS64 ISA の大部分をカバーするサブセットをサポートしており、アセンブリ言語で書かれたプログラムを実行したときCPU内のパイプラインで何が起きているかをグラフィカルに表示する。こちらも教育向けで、世界各地の大学で利用されている。MARS もGUIベースのMIPSエミュレータで教育向けに作られており、特にヘネシーの『コンピュータの構成と設計』を教科書として使う際に役立つよう設計されている。より実用的なフリーなエミュレータとしてやQEMUプロジェクトのものがある。MIPS III および IV のプロセッサをエミュレートでき、コンピュータシステム全体のエミュレートも可能である。商用のシミュレータは主に組み込み用MIPSプロセッサを対象としたものが存在する。例えば、Virtutech (MIPS 4Kc and 5Kc, PMC RM9000, QED RM7000)、VaST Systems (R3000, R4000)、 (MIPS4KE, MIPS24K, MIPS25Kf, MIPS34K) がある。

出典:wikipedia

LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。