マイクロプログラム方式
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/08/22 10:18 UTC 版)
利点
仮想化
マイクロプログラム方式のプロセッサのハードウェアの実装は一般のプログラマから見えるものとは違っていて、よりシンプルである。このシンプルなアーキテクチャ(マイクロアーキテクチャ)上で、プログラマに見せるアーキテクチャをエミュレートするマイクロプログラムが実行される。このマイクロアーキテクチャはプログラマに見えているアーキテクチャと固定的な関係である必要は全くない。これを利用すれば、様々なマイクロアーキテクチャのハードウェア上に任意の(プログラマから見える)アーキテクチャを実装することができる。
例えば、IBMのSystem/360は32ビットアーキテクチャで16本の汎用レジスタを持っている。しかしSystem/360の実際のハードウェアの実装ではもっと単純なマイクロアーキテクチャが実装されている。最も下位の機種である360 Model 30は8ビットのマイクロアーキテクチャでハードウェアのレジスタも少ない。プログラマが見ているものは全てマイクロプログラムがエミュレートしたものである。より上位の機種は16ビットや32ビットのマイクロアーキテクチャになっていて、プログラマから見えるアーキテクチャに近くなっているため、より高速に動作できる。
この方法により、IBMは様々なハードウェアを使用してコストと性能を勘案しバラエティに富んだSystem/360の機種をそろえ、それらを全て命令セット互換にすることができる。これにより機種別に書かなければならないシステムソフトウェア(OSなど)を劇的に減らすことが出来る。
全く同じ方法がDECのVAXコンピュータファミリでも採用された。下位機種では4ビットの2901ビットスライスプロセッサを膨大なマイクロコードとともに使用している。上位機種では大きな浮動小数点数を直接扱えるように128ビットデータパスを採用している。
マイクロプログラミングはプロセッサのバグの修正も容易にする。多くのバグはマイクロプログラムの修正で間に合い、ハードウェアのロジックや配線を修正する必要がない。
性能
マイクロプログラム方式は原理的に1命令の実行にクロック数が多く必要になるために、ワイヤードロジック方式に比べて実行速度は遅い。 一方で、コンピュータの初期から主記憶装置はCPUに比べて相対的に遅く、複雑な処理(例えば浮動小数点数演算や文字列処理、多項式の計算)は、主記憶に記憶させた命令の組み合わせで実現するよりも、複雑な処理をする命令をCPU内部でマイクロプログラムで実現したほうがメモリへのアクセスが少なくなる分だけ短時間で処理できた。
半導体技術の進歩によって主記憶装置のビット単位の単価が劇的に下がるまでは、主記憶装置は高価であり、大型のメインフレームでも主記憶装置の容量は限られていた。そのため、より少ないビット数でより多くの機能を実行する命令セットが必要とされた。また、コンパイラ技術が未発達の段階では、高級言語の命令を単純な命令の組み合わせに置き換える事よりも、高級言語の命令に直接対応するような命令が必要とされた。
これらの多機能な命令を実装するにはマイクロプログラム方式が適していた。
マイクロプログラム方式により、のちにCISCと呼ばれるような複雑な命令(セット)が可能になった。IBMのSystem/360やDECのVAXファミリーは複雑なマイクロプログラムを使用している。
その後、キャッシュメモリの活用や、複雑な命令を排除してその分をレジスタに充てることでより高性能にできるという考えが生まれ、マイクロプログラムによる複雑な命令を廃したRISCにつながる。
IBM 801など初期のRISCではコンパイラは複雑な命令を活用できない、という観察から命令の単純化、という発想が生まれ、後にコンパイラ技術の進歩によりコンパイラがより高性能な、単純な命令を組み合わせたコードを生成できるように命令セットも工夫された。一方でTRONCHIPなど、コンパイラが活用しやすいような複雑な命令を揃えるという方向もあった。
ただし、CISCであるインテルのx86系CPUも、i486以後でワイヤードロジックなどRISCの技術を徐々に取り入れた。またRISCであるサン・マイクロシステムズのSPARC、IBMのPOWERも必要に応じて命令セットの追加を繰り返しているため、現在ではCISC、RISCという分類の意義は薄れている。
- ^ Manning, B.M.; Mitby, J.S; Nicholson, J.O. (1979-11). “Microprogrammed Processor Having PLA Control Store”. IBM Technical Disclosure Bulletin 22 (6) .
- ^ “J-11: DEC's fourth and last PDP-11 microprocessor design ... features ... ROM/PLA control store”. 2013年2月7日閲覧。
- ^ "Microcode Update for SCSI Hard Disk"
- ^ Everett, R.R., and Swain, F.E. (1947) (PDF). Whirlwind I Computer Block Diagrams. Report R-127. MIT Servomechanisms Laboratory. オリジナルの2012年6月17日時点におけるアーカイブ。 2006年6月21日閲覧。.
- ^ Visual6502.org project にあるダイ写真の上端の格子状パターンがPLAである。
- ^ “EMIDEC 1100 computer”. Emidec.org.uk. 2010年4月26日閲覧。
- ^ Daniel P. Siewiorek, C. Gordon Bell, Allen Newell (1982). Computer Structures: Principles and Examples. New York, NY: McGraw-Hill Book Company. ISBN 0-07-057302-6
- ^ P.HAYES 1978, p. 309-314.
- ^ P.HAYES 1978, p. 300.
- ^ P.HAYES 1978, p. 301-302.
- ^ "Writable instruction set, stack oriented computers: The WISC Concept" article by Philip Koopman Jr. 1987
- ^ http://pdp10.nocrew.org/cpu/kl10-ucode.txt
- ^ Mark Smotherman. “CPSC 330 / The Soul of a New Machine”. 2013年2月7日閲覧。 “4096 x 75-bit SRAM writeable control store: 74-bit microinstruction with 1 parity bit (18 fields)”
- ^ P.HAYES 1978, p. 302-309.
- ^ IBM (September 1974), IBM System/370 Principles of Operation (Fourth Edition ed.), pp. 98, 245, GA22-7000-4
- ^ IBM (June, 1968), IBM System/360 Model 85 Functional Characteristics (SECOND EDITION ed.), A22-6916-1
- ^ IBM (March 1969), IBM System/360 Special Feature Description 709/7090/7094 Compatability Feature for IBM System/360 Model 85 (First Edition ed.), GA27-2733-0
- ^ "Intel(R) 64 and IA-32 Architectures Software Developer’s Manual", Volume 3A: System Programming Guide, Part 1, chapter 9.11: "Microcode update facilities", December 2009.
- マイクロプログラム方式のページへのリンク