「マイクロコード」は、コンピュータのCPU(プロセッサ)に関連する専門用語です。
現代のコンピュータを支える重要な技術ですが、一般にはあまり知られていません。
CPUの内部で動作し、ソフトウェアとハードウェアを結びつける重要な役割を果たしています。
マイクロコードの意味
マイクロコード(microcode)とは、CPUの命令をプロセッサ内部でさらに分割した、より単純な低レベルの命令のことです。
CPUは外部から受け取った複雑な機械語命令を、マイクロコードと呼ばれる単純な命令の組み合わせに分解してから実行します。
マイクロコードは、プログラマーが見る命令セット(ISA: Instruction Set Architecture)と、実際のハードウェア回路の間に位置する中間層として機能します。
別の言い方をすれば、マイクロコードは「CPUのファームウェア」とも表現できます。
CPU内部に格納され、CPUの動作を制御する基本的なプログラムとして働きます。
語源・由来
「マイクロコード」は英語の”microcode”に由来します。
“micro-“(マイクロ)
ギリシャ語の”mikros”(小さい)から来た接頭辞で、「小さい」「微小な」という意味です。
“code”(コード)
「符号」「暗号」「プログラムコード」を意味する言葉です。
合わせて「小さいコード」という意味になります。
これは、通常の機械語命令よりもさらに細かく、基本的な命令であることを表しています。
注意点として、「マイクロプロセッサ」や「マイクロコンピュータ」といった用語の「マイクロ」とは直接の関連性はありません。
いずれも「小さい」という一般的な意味で「マイクロ」という接頭辞が使われています。
歴史的背景
マイクロコードの概念は、1951年にイギリスのケンブリッジ大学でモーリス・ウィルクス(Maurice Wilkes)によって考案されました。
ウィルクスは、世界初の実用的なストアドプログラム方式コンピュータの一つであるEDSACの設計に携わっていました。
当時のコンピュータは制御回路が複雑になっており、設計やデバッグが困難でした。
この問題を解決するため、ウィルクスは制御回路を複雑な論理ゲートで構成する代わりに、別の小さなプログラム(マイクロコード)で制御するという画期的なアイデアを提案しました。
同時に、このアプローチを「マイクロプログラミング(microprogramming)」と名付けました。
この技術は1958年にEDSAC 2で初めて実装され、1964年にIBM System/360シリーズで商業的に主流となりました。
マイクロコードの役割と利点
複雑な命令の実装を簡素化
マイクロコードを使うことで、複雑な命令を比較的簡単に実装できます。
すべてを電子回路(ハードウェア)で実装するよりも、マイクロコードで記述する方が設計が容易になります。
互換性の維持
異なる内部構造を持つプロセッサでも、同じマイクロコードを実装することで命令セットの互換性を保つことができます。
これにより、新世代のCPUが過去の製品との互換性(後方互換性)を維持することが可能になります。
出荷後の修正・更新が可能
マイクロコードは更新可能なため、製品出荷後にバグ修正や機能拡張を行うことができます。
これは純粋なハードウェア実装では困難な柔軟性です。
近年では、SpectreやMeltdownといったCPUの脆弱性に対する対策として、マイクロコードの更新が重要な役割を果たしています。
マイクロコードが使われる場所
CISCプロセッサ
マイクロコードは、特にCISC(Complex Instruction Set Computer)型のプロセッサで広く採用されています。
CISCプロセッサは複雑で高機能な命令を多く含むため、すべてをハードウェアで実装するのは困難です。
Intel x86シリーズやAMD64などの現代のプロセッサでも、複雑な命令の処理にマイクロコードが使用されています。
マイクロコードの格納場所
マイクロコードは通常、以下の場所に格納されます。
- CPU内部のROM(Read-Only Memory)
- PLA(Programmable Logic Array)
- CPU起動時にRAMにロードされる形式
最近のCPUでは、BIOS/UEFIアップデートやオペレーティングシステムを通じて、外部からマイクロコードを更新できます。
関連用語
マイクロプログラミング(microprogramming)
マイクロコードを使ってCPUの制御装置を実装する手法のことです。
モーリス・ウィルクスが1951年に提唱した概念です。
ワイヤードロジック(布線論理)
マイクロコード方式に対する用語で、論理ゲートとフリップフロップを配線で接続して直接実装する方式です。
RISCプロセッサでは、原則としてこの方式が採用されます。
CISC と RISC
CISC(Complex Instruction Set Computer)は複雑な命令セットを持つコンピュータで、マイクロコードを多用します。
RISC(Reduced Instruction Set Computer)は限られた単純な命令セットを持ち、主にワイヤードロジックで実装されます。
ファームウェア
ハードウェアを制御するソフトウェアの総称です。
マイクロコードは「CPUのファームウェア」と考えることができます。
まとめ
マイクロコードとは、CPUの命令をプロセッサ内部でさらに分割した低レベルの命令のことです。
1951年にイギリスのモーリス・ウィルクスが考案し、「マイクロプログラミング」という用語も彼が作りました。
語源は「小さいコード」という意味で、通常の機械語命令よりもさらに基本的な命令であることを表しています。
マイクロコードは複雑な命令の実装を簡素化し、CPUの互換性維持や出荷後の修正を可能にします。
現代のCISCプロセッサでは必須の技術であり、セキュリティ対策にも重要な役割を果たしています。

コメント