マイクロプログラム方式
すなわち同時にふたつのレジスタを読んで、ひとつのレジスタに書き込むのである(レジスタ間の基本的な演算命令を想起されたい:add r1,r2,r3 (r1 ← r2 + r3))。
ALUは計算を行う。加算、論理否定、右シフト、論理積、論理和などである。ALUでさらに他の機能を実現することもある。
これらは全て実行ユニットの構成要素である。最近のCPUは複数の実行ユニットを持つ。単純なコンピュータでもひとつの実行ユニットをメモリの読み書きに使用し、もうひとつの実行ユニットをユーザコードの実行に使用する。
これらの要素をひとつのチップに組み込むこともある。このチップが実行ユニットのスライスを構成し、これをビットスライスチップと呼ぶ。例えば AMD Am2900 ファミリがある。同ファミリのマイクロシーケンサAm2909は一つのチップで4-bit分のアドレスを生成することが可能であり、n 個用いることで 4n-bit分のアドレスを生成する。
実行ユニットの各構成要素や実行ユニット同士は複数のワイヤで結線される。これをバスと呼ぶ。
プログラマはマイクロプログラムを作成する。その際の基本ツールもソフトウェアであり、マイクロアセンブラを使ってビットテーブルをシンボリックに定義する。シミュレータでそのビットを電気回路と同じように実行してみてマイクロプログラムをデバッグする。
マイクロプログラムカウンタにしたがって次のマイクロ命令にマイクロジャンプを行う
このような処理を並列して行うため、マイクロ命令は非常に大きな幅となることが多い。例えば56ビット(8ビットx7命令)やそれ以上になる。
マイクロプログラムはCPUのマイクロコードとしても知られている。マイクロコードはCPUの各マイクロ命令を1つの状態とした、状態遷移表をメモリであらわしたものと捉えることができる。
マイクロコードは(ファームウェアの一部として)ROMに格納されていることもあるし、CPUの初期化の一環としてRAMにロードされることもある。このため広義には、CPU以外を含むファームウェア全般をマイクロコードと呼ぶ場合もある。
コンピュータの電源投入時に、マイクロコードをロードする過程をIML(イニシャル・マイクロコード・ローダー)とも呼ぶ。またマイクロコードが格納されているメモリをコントロールストアと呼ぶ。