マイクロプログラム方式
マイクロプログラム方式(マイクロプログラムほうしき、マイクロプログラミング、英:microprogramming)は、プロセッサの制御装置の実装手法のひとつであり、CPU内のマイクロプログラム(マイクロコード)を使用して、複雑な命令を比較的容易に実装する。
利点としては、オペレーティングシステムを含めたソフトウェアから見た場合のハードウェア(命令セットアーキテクチャ、ISA)を、容易に追加・拡張したり、あるいはプロセッサ間で標準化して互換性を高める、更には異なる命令セットのCPUのエミュレートにも応用可能である(仮想化技術のひとつともいえる)。
反面、複雑な命令の増加はパイプラインの効果が薄れる結果ともなりやすい。
マイクロコードは一般にROM (Read Only Memory) またはPLA(プログラマブル・ロジック・アレイ(英語版))、またはそれらを組み合わせたものに格納される。
1960年代に入ると、マイクロプログラム方式で複雑な命令を実装するという設計が増えていき、その傾向が1980年代中ごろまで続いた。そしてRISC設計哲学が登場し、盛んになっていった。
マイクロプログラム方式のCPUでは、1命令の実行に数クロックサイクルかかり、1クロックサイクルはマイクロプログラムの各ステップの実行に対応している。一部のCISCプロセッサは実行に非常に多大なクロック数のかかる命令を持っている。そのような性質は割り込みレイテンシやパイプライン処理に悪影響を及ぼす。
新たにプロセッサを設計する際、RISCのワイヤードロジックによる制御装置は、CISCのマイクロプログラム方式に比べて次のような利点がある。
アセンブリ言語でのプログラミングは主流ではなくなったため、複雑な高機能命令を実装して生産性を上げることは重要ではなくなった。
より単純な命令はハードウェアで直接実行でき、マイクロコード実行による性能低下を防ぐことができる。
分析によれば、複雑な命令は滅多に使われず、結果としてハードウェア資源の浪費につながる。
複雑な命令の実装に使われていたハードウェア資源を、単純で一般的な命令の性能向上のために使うことができる。
マイクロコードによる複雑な命令は実行に多大なクロック数を必要とし、しかも命令によって必要なクロック数が異なる場合がある。それにより、性能向上のためのパイプライン処理が難しくなる。