Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

マイクロプログラム(マイクロプログラム)とは | 意味や読み方など丁寧でわかりやすい用語解説

マイクロプログラム(マイクロプログラム)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

マイクロプログラム (マイクロプログラム)

英語表記

microprogram (マイクロプログラム)

用語解説

マイクロプログラムとは、CPU(中央演算処理装置)がプログラムの命令を実行する際に、その命令をさらに細かい、CPU内部で直接実行可能な基本動作の並び(マイクロ命令)に分解し、それらのマイクロ命令のシーケンスとして実現する手法、またはその命令列自体を指す。これは、CPUの命令セットアーキテクチャ(ISA)と実際のハードウェア制御回路を結びつける中間層として機能する。つまり、CPUが「加算命令」や「データをメモリから読み出す命令」といった機械語命令を受け取ったとき、それをどのように実行するかという具体的な手順を定義した内部的な命令シーケンスである。この方式を採用することで、CPUは複雑な命令であっても、それを単純な基本動作の組み合わせとして処理できるため、設計の柔軟性が高まる。

CPUがプログラムを実行するサイクルは、大きく分けて命令の読み込み(フェッチ)、命令の解釈(デコード)、命令の実行という段階を経る。このうち、マイクロプログラムは主に命令のデコードと実行の段階でその役割を果たす。まず、CPUがメモリから機械語命令をフェッチした後、制御ユニット内のマイクロプログラム制御回路がその命令をデコードする。デコードされた機械語命令は、それに対応するマイクロプログラムの開始アドレスを特定し、そこから格納されているマイクロ命令を順次読み出し、実行していく。

マイクロ命令とは、CPU内部の各構成要素(例えば、演算論理ユニット(ALU)、レジスタ、内部バスなど)を直接制御するための、非常に低レベルかつ単一のサイクルで完了するような基本操作の指示である。具体的には、「ALUにレジスタAとレジスタBの値を入力し、加算を実行せよ」「レジスタR1の値を内部バスに出力せよ」「メモリの指定アドレスからデータを読み込み、レジスタR2に格納せよ」といった、CPUの微細な動作を直接指示する命令群で構成される。これらのマイクロ命令のまとまりがマイクロプログラムであり、それらが格納されている専用の高速メモリを「制御メモリ」または「コントロールストア」と呼ぶ。制御メモリは通常、プロセッサの製造時に書き込まれるROM(リードオンリーメモリ)やEPROM(電気的に消去可能な読み出し専用メモリ)などの不揮発性メモリで実装される。

マイクロプログラム方式の主な利点は、CPUの命令セットアーキテクチャを柔軟に設計できる点にある。複雑な機械語命令も、複数の簡単なマイクロ命令の組み合わせで実現できるため、その命令をハードウェア回路だけで直接実装する「ハードワイヤード方式」に比べて、設計が容易になり、開発期間を短縮できる。また、プロセッサの設計段階でマイクロプログラムにミスやバグが見つかった場合でも、マイクロプログラム自体を修正するだけで対応できる可能性が高く、物理的なハードウェア配線を変更するよりもはるかに容易である。さらに、製造後であっても、特定のプロセッサモデルのファームウェアアップデートとしてマイクロプログラムを更新することで、機能改善やバグ修正を行うことが可能になる場合もある。これは、固定配線で構成されるハードワイヤード方式では実現が困難な、プロセッサの柔軟性を大きく向上させる要素である。

しかし、マイクロプログラム方式にはいくつかのデメリットも存在する。最も顕著なのは、命令の実行速度がハードワイヤード方式に比べて遅くなる可能性がある点だ。機械語命令を実行するために、さらにマイクロ命令をフェッチし、デコードし、実行するという追加のステップが必要となるため、これに伴うオーバーヘッドが発生する。また、マイクロプログラムを格納するための制御メモリが必要となるため、CPU全体のコストが増加したり、チップ上の占有面積が大きくなったりする傾向がある。

現代のCPUにおけるマイクロプログラムの役割は進化し多様化している。初期のCISC(Complex Instruction Set Computer)プロセッサでは、非常に複雑な命令セットを効率的に実装するためにマイクロプログラムが広く採用された。これは、複雑な機械語命令を複数の単純なマイクロ命令に分解して実行することで、ハードウェア設計の複雑さを軽減できるためである。一方、RISC(Reduced Instruction Set Computer)プロセッサでは、命令セットが最初から単純化されているため、多くの命令はハードワイヤードで直接実行されるが、それでも一部の特殊な命令や、システム管理機能、セキュリティ関連の機能の実装、あるいはプロセッサの初期化ルーチンなどにマイクロコードが利用されることがある。

また、現代のプロセッサでは、マイクロコードはプロセッサのファームウェアの一部として捉えられ、重要な役割を担っている。システムの起動時やオペレーティングシステムからの要求に応じてロードされ、プロセッサの動作を微調整したり、発見されたバグを修正したりするために用いられる。これにより、プロセッサの基本的なハードウェアは製造後も変更することなく、マイクロコードの更新を通じて機能の追加、性能の最適化、セキュリティ脆弱性の対策などを行うことが可能になる。このように、マイクロプログラムは単なる命令実行の仕組みに留まらず、現代のプロセッサが持つ柔軟性、信頼性、および長期的な保守性を支える基盤技術の一つとして、その重要性を保ち続けている。

関連コンテンツ

関連IT用語