制御部はシークエンス回路(sequential logic circuit)であるが,まだまだそのサイズは巨大である。 そこでさらなる改良を試みよう。 前節に示した方法で, 図 10.6に示した状態遷移図をプログラム化してみよう。 その結果は図 10.8のようになる。 なお,outは制御線への出力命令,jpはこのプログラム内でのジャンプとする。
このように,制御部のシークエンス回路の動作をプログラムの形式で書いたものを
マイクロプログラム(micro program),略してμ P(micro program)と言う。
以下,
Pとはマイクロプログラムの省略形である。
この
Pをプログラムとして実行すると,
その出力は元のシークエンス回路の出力とまったく同じになるはずである。
そのためには,制御部の中にコンピュータのようなものを作る必要がある。
なお,
Pは外部メモリーとは別の制御部内のμ Pメモリー(micro program memory)に記憶しておくこととする。
このような, コンピュータの中のコンピュータといった二重構造にすると何が得なのだろうか。 まず,シークエンス回路の場合には, AND-OR回路のAND側は, フラグビット数と命令ビット数と内部状態ビット数の合計のビット幅という 非常に大きなビット幅を必要とするため, すべてのビットパターンに対応させることは不可能であり, 通常のメモリーに置き換えることはできないことに注意して欲しい。 しかし,これをプログラム化すると, その中で起こりうるパターン数だけの μ Pアドレス(micro program address)を持つメモリーを用意するだけでよい。
メモリー化できるということは,
Pメモリーを書き込み可能なROM(PROM)化するとか,
別のメモリーとすることにより,
複雑な詳細設計を最後まで遅らせることができるという利点がある。
また,その内容を変えることにより,
容易にいろいろな命令セットに対応できる中央処理装置を作成することができる。
さらに,
設計者にとって,状態遷移図を描くよりもプログラムを書く方がやさしいので,
設計が楽になるという特長も無視できない。
μ P制御回路(micro program control circuit)は,さすがに純粋なシークエンス回路で構成する。
その状態遷移図を図 10.9に示す。
図 10.8に示した
Pからわかるように,
P命令にはoutとjpしかないので,
状態遷移図は極めて簡単である。
outの場合には,その行に書かれた制御線に送るコードを直接出力する。
jpの場合には,jp命令コード後半に書かれたアドレスを,
Pのアドレスカウンタであるμ PC(micro program counter)に入れる。
out命令は
Pアドレスを持たず,jp命令は制御コードを持たない。
こうした処理のできるためのCPUの構造を図 10.10に示す。
その場合,図中破線で囲った制御回路と書かれた部分は,
Pメモリーに記憶された
Pを順次解析して
実行していく必要があるので,
ちょうどコンピュータのCPUと同じような作業をすることになる。
つまり,破線で囲った部分はコンピュータそのものと同じような構造であり,
コンピュータと同様なμ Pデータ処理回路(micro program data processing circuit)とμ P制御回路(micro program control circuit)を持つことになる。
P制御回路は,プログラム化された
Pの命令を格納している
Pメモリーそのものである。
この例では命令は2種類,つまり1bitで表現できるが,
もっと複雑な間接アドレス指定や関数呼び出しなどのジャンプ命令を加えても,
4bitもあれば十分である。
また,
Pアドレスの幅は12bitもあれば十分である。
一方,制御コードのビット幅は20から50bit程度必要である。
本書の例では46bitを出力し,その後の回路で,半分を
,
残る半分を
のタイミングで,
データ処理部への制御線として出力するようにしている。
Pデータ処理回路はジャンプの際,
PCの計算を行う。
しかし,ほとんどの場合,処理すべき計算は
PCを1増やすことだけである。
ときに,ジャンプ命令として,
「5番地先へジャンプ」のような相対的番地で指定できるものも含む場合がある。
こうした場合には,任意の数との加算器が必要である。
こうした相対的な番地指定を,通常の直接アドレス指定(direct addressing)に対し
間接アドレス指定(indirect addressing)と言う。
こうした回路によって,マイクロプログラム方式の制御回路は, 外部メモリー上のプログラムを解釈していき, あたかも通常の制御回路のような制御コードを作成していくのである。