MIPSアーキテクチャ
1984年、ヘネシーは、将来商業レベルとなる可能性のあるデザインを確立し、教え子、友人らとミップス・コンピュータシステムズを設立する。1985年、彼らは、最初のデザインであるR2000を完成させた。また、1988年には、それを進化させたR3000を完成させた。これらの32ビットCPUによって、ミップス・コンピュータシステムズは、1980年代に基盤を築くことができた。なお、これらの商用デザインにおいては、スタンフォード大学での学術研究的な設計方針とは異なり、ハードウェアにインターロック機構を装備し、掛け算も割り算もサポートしていた。なぜなら、単にひとつのプログラムを実行するだけなら、上述のディレイスロットの考え方で何とかなるが、商用としてはマルチタスクや割り込みへの対応は必須であり、インターロック機構の付加は必然だったからである。また、半導体プロセス技術の急速な進歩がそれを可能にしていった。インターロック機構を備えたとしても、インターロックをなるべく発生させないコンパイラ技術は高速化に必須である。これらのプロセッサは、SGI、DEC DECstation、ソニー NEWS、NEC EWS4800などに使われた。
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を実現しようという試みだった。
注意:主なプロセッサの仕様のみ掲載。
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の設計上では、すべての命令を単純化して実行処理が1クロックサイクル内で完了するよう計画された。そうできればインターロックをなくすことができる。
このような設計にすることで掛け算や割り算などの複雑な命令が1つの命令では実行できなくなるが、単純な命令だけであれば、プロセッサに与えるクロックを高速にでき早く動作させて、性能が向上すると予想された。また、インターロック回路を加えると半導体チップの面積(ダイサイズ)が増えて、クロックを上げることが困難になるため、クロックの高速化のためにはインターロックを排除することも必要だった。
複雑だが有用だった命令を排除することは議論の中心になった。多くの人が「複雑な掛け算を単純な多くの足し算にして、どうして速度が向上するのか」と、この設計手法、そしてRISC一般の謳い文句に懐疑的で誇大広告だと言った。