マイクロプログラミング - 計算機におけるマイクロプログラム制御方式の歴史

計算機の「装置」的構成要素-「入力」装置,「演算」装置,「記憶」装置,「制御」装置,「出力」装置
馬場敬信(1985)『マイクロプログラミング』昭晃堂,p.1
 
「制御」装置の構成要素-「命令レジスタ」(IR),「プログラムカウンタ」(PC),「デコーダ」
「命令レジスタ」(IR)-命令をおくための記憶装置
「プログラムカウンタ」(PC)-命令のアドレスを保持するための記憶装置
「デコーダ」-与えられた命令の中の操作コード部をデコード(解読)して、命令が指定する動作内容を決定するための装置。また演算処理の対象となるデータのアドレスを決定する装置でもある。
馬場敬信(1985)『マイクロプログラミング』昭晃堂,pp.2-3
 
計算機における「命令」の実行プロセス – 「命令サイクル」
計算機は,下記の各操作の繰り返し(命令サイクル)をおこなっている。

1.命令の取り出し[プログラムカウンタが指定する命令のアドレスを記憶装置に送り,命令を記憶装置から命令レジスタに読み込む]
2.プログラムカウンタの更新[プログラムカウンタを一つ先に進める]
3.命令のデコード[命令レジスタの中の命令の操作コード部をデコードして,計算機がどのような動作をすべきかを決定する。また命令のアドレス部から「演算の対象となるデータ」(オペランドと呼ぶ)のアドレスを決定する.]
4.オペランド(演算処理の対象となるデータ)の取り出し[オペランドのアドレスを主記憶装置に送り,オペランドの読み出しをおこなう]
5.命令の実行

[出典]馬場敬信(1985)『マイクロプログラミング』昭晃堂,p.3

 
マイクロプログラミング方式によるCPU設計
馬場敬信(1985)『マイクロプログラミング』昭晃堂,p4の図1.4「マイクロプログラミング方式」 馬場敬信(1985)『マイクロプログラミング』昭晃堂,p.5の図1.5「機械命令とマイクロプログラムの関係」
「機械語」命令の命令レジスタの操作コード部で,制御記憶アドレスレジスタ(CMAR)を指定する。
制御記憶(control memory)の中の,指定アドレスにあるマイクロプログラムを,制御記憶データレジスタ(CMDR)に読み出す。
制御記憶データレジスタ(CMDR)に読み出されたマイクロプログラム(microprogram)を構成するマイクロ命令(micro instruction)は,デコーダによってデコードされマイクロオーダ(micro-order)に変換される。 マイクロオーダによって制御される操作は,マイクロ操作(micro operation)と呼ばれている。

CMAR:制御記憶アドレスレジスタ(control memory address register)
CMDR:制御記憶データレジスタ(control memory data register)
[図の出典]馬場敬信(1985)『マイクロプログラミング』昭晃堂,p.4の図1.4「マイクロプログラミング方式」およびp.5の図1.5「機械命令とマイクロプログラムの関係」

 
マイクロプログラミング方式のメリット
1) 制御論理の実現に関わるコスト
結線論理方式によるCPU設計では,「制御論理はすべて論理素子,および素子間の結線で実現されるため,論理が複雑になればなるほど,要するコストは著しく増大する」(馬場敬信(1985)『マイクロプログラミング』昭晃堂,p.10)が,マイクロプログラミング方式では制御論理が複雑になっても,マイクロプログラムを格納する制御記憶の容量を増大させるだけで良いため,制御論理が複雑になればなるほどマイクロプログラミング方式の方がコスト的に有利になる。
 
2) 設計コスト
結線論理方式によるCPU設計では,制御論理を実現するハードウェア設計が複雑になりコストがかかるが,ハードウェア設計それ自体は単純である。マイクロプログラミング方式ではソフトウェア設計は複雑になるが,「マクロレベル以上のアーキテクチャの設計, マクロアーキテクチャを実現するためのマイクロプログラムの作成, およびマイクロアーキテクチャを実現するためのハードウェアの論理設計などを並行して進めることができる」というメリットがある。
 
3) システムの柔軟性
ハードウェアを変更しなくても,マイクロプログラムの変更により制御論理の変更や追加が可能である。
 
 
マイクロプログラミング方式の歴史的展開
下記は、馬場敬信(1985)『マイクロプログラミング』昭晃堂,pp.5-10における説明を要約したものである。
 
1.M.V.Wilkesによるマイクロプログラミング方式の発明(1951)

Wilkes, M.V. (1951) “The Best Way to Design an Automatic Calculating Machine,” in Report of the Manchester University Computer Inaugural Conference, 1951. (Not published until 1953), pp. 16-18.

本論文は下記ほかで再録されている。
Wilkes, M. V. (1989). “The best way to design an automatic calculating machine,” in Martin Campbell-Kelly (Ed.). The early British computer conferences, (Charles Babbage Institute Reprint Series For The History Of Computing, Vol. 14.) MIT Press, Cambridge, MA, USA 182-184.
https://dl.acm.org/citation.cfm?id=94938.94976

2.マイクロプログラミング方式の商用機における採用(1964-)
IBM360で採用
 
3.ダイナミック・マイクロプログラミング(1970-)
3-a ダイナミック・マイクロプログラミング
制御記憶にあるマイクロプログラムを「書き換え可能」とすること。その実現には,「実行時に制御記憶の内容を書き換える」方式と「2次記憶または主記憶にあるマイクロプログラムを制御記憶にロードして使用する」方式(リローダブル制御記憶(reloadable control)memory)の2種類がある。
ダイナミック・マイクロプログラミング方式を採用することによる応用の一つは,ユーザーが同方式を利用して「種々の応用プログラムのマイクロプログラム化を図る」こと,すなわち,「ユーザマイクロプログラミングを可能にすること」である。[Andrews,M.(1980) Principles of Firmware Engineering in Microprogram Control,Computer Science Press.]
 
3-b 2レベル・マイクロプログラミング-マイクロプログラムの階層化
制御記憶にあるマイクロプログラムを「書き換え可能」となれば,マイクロプログラムの階層化,すなわち,制御記憶を「マイクロプログラム記憶」と「ナノプログラム」記憶(nanoprogram memory)とに分けて管理することも可能となる。

 
プログラム視点から見た計算機アーキテクチャの階層構成
[図の出典]馬場敬信(1985)『マイクロプログラミング』昭晃堂,p.9
[参考文献]
Salisbury,A.B.(1976) Microprogrammable Computer Architectures,Elsevier Science Inc.

マイクロプログラミングに関する参考資料