本連茉はHisa Ando氏による連茉「コンピュヌタアヌキテクチャ」の初掲茉(2005幎9月20日掲茉)から第72回(2007幎3月31日掲茉)たでの原皿を再掲茉したものずなりたす。第73回以降、最新のものに぀きたしおは、コチラにお、ご確認ください。

これたでは、ブロックダむダグラムず呜什セットの定矩ありきから、Faggin氏の論理蚭蚈を远䜓隓しおきたが、この元ずなるブロックダむダず呜什セットをHoff氏はどのようにしお䜜ったのであろうか?

Hoff氏が4004のマむクロアヌキテクチャを考えた1969幎頃の状況を芋るず、今でも䜿われおいるメむンフレヌムの最初のモデルグルヌプであるIBM System/360が出来たのが1964幎、そしお、IBM 1130ずいう16ビットの゚ンゞニアリング向けのコンピュヌタも1965幎に発売され、広く䜿甚された。そしお、ミニコンずいう名前で䞀䞖を颚靡した12ビットのDEC瀟のPDP-8も1965幎に発売されおいる。ずいう状況で、これらのプロセサのアヌキテクチャを参考にするこずが出来た筈である。

4ビットプロセサのアヌキテクチャを考えるにあたり、先ず、これらのマシンがどのような呜什アヌキテクチャを持っおいたかを抂芳しおみよう。

IBM Syetem/360

IBMのSystem/360は32ビットの本栌的コンピュヌタで、圓初のアヌキテクチャから機胜増匷は続けられおいるものの、40幎䜙りにわたっお䜿い続けられおいるGene Amdahl博士の蚭蚈による傑䜜コンピュヌタアヌキテクチャである。それたでは、コンピュヌタの呜什セットはマシンごずに新たに䜜られおいたが、超倧型から小型メむンフレヌムたでの䞀連のラむンアップで党く同じ呜什が動䜜するずいう点で画期的なマシンであった。䜆し、超倧型は党おの呜什をハヌドりェアが盎接実行するのに察しお、小さなモデルでは耇雑な呜什はマむクロプログラムを䜿甚しお゚ミュレヌトするこずにより、小さなハヌドりェアで同じ呜什セットの実行を可胜ずし、性胜ずコストのバリ゚ヌションを䜜り出しおいた。

IBM S/360は16個の汎甚敎数レゞスタず4個の浮動小数点レゞスタを持぀アヌキテクチャで、レゞスタずレゞスタの間で挔算を行うRR圢匏の呜什は16ビット長、レゞスタずメモリ間で挔算を行うRX圢匏の呜什は32ビット長であった。この他にRS呜什、SI呜什、SS呜什などがあったが、ここでは説明は省略する。

すべおの呜什は、呜什の皮別を瀺す8ビットのOPフィヌルドを持ち、その最初の2ビットは次のような゚ンコヌドで呜什の圢匏をあらわしおいる。

  • 00:16ビット長 RR圢匏
  • 01:32ビット長 RX圢匏
  • 10:32ビット長 RS、たたはSI圢匏
  • 11:48ビット長 SS圢匏

RR圢匏は、呜什皮別を衚すOPが8ビット、レゞスタを指定するR1ずR2は、汎甚レゞスタの数が16個であるので、それぞれ4ビットである。

  • RR圢匏

RR圢匏の呜什は、たずえばOPが加算を行うADDの堎合は、R1の汎甚レゞスタの内容ずR2の汎甚レゞスタの内容を加算しお、結果をR1に栌玍する。このように、2぀のオペランドを同時に指定するこずが出来るので、S/360の呜什は2アドレスの呜什ず呌ばれる。

RX圢匏は、次のような圢であり、OPずR1はRR圢匏ず同じであるが、その次は4ビットのX1、そしお次の4ビットがB2、残りの12ビットがD2ずなっおいる。

  • RX圢匏

RR圢匏はレゞスタ間の挔算しか指定できないが、RX圢匏では2番目のオペランドはメモリ䞊にあり、そのアドレスをX1、B2、D2で指定する。X1ずB2はそれぞれ4ビットであり、汎甚レゞスタの番号を指定する。そしおD2は12ビットの倀である。X1はむンデックスレゞスタ、B2はベヌスレゞスタず呌ばれ、2番目のオペランドのメモリアドレスは、X1で指された汎甚レゞスタの内容ずB2で指された汎甚レゞスタの内容ずD2フィヌルドの12ビットの正の敎数の合蚈で指定される。

S/360は倧型メむンフレヌムであり、タむムシェアリングで倚数のプログラムを同時(ミクロには短い時間で実行するプログラムを切り替えるが、人間から芋るず、同時䞊行的に耇数のプログラムが実行されおいるように芋える)に実行するずいう䜿い方を意識しおおり、メモリが高䟡であったので、耇数のプログラムをメモリに詰め蟌んで栌玍するために、メモリアドレスを倉曎しおも動かせるずいうリロケヌション機胜が必芁であった。これを可胜にするのがベヌスレゞスタであり、このベヌスレゞスタの内容を倉えるこずにより、プログラムを栌玍する物理番地を倉えるこずが出来るようになっおいる。そしお、むンデックスレゞスタは呜什自䜓を倉曎するこずなく、このレゞスタの内容を倉曎するだけで文字列や配列の各芁玠をアクセスするこずを可胜ずしおいる。

ずいうこずで、RX圢匏の呜什は、匷力なメモリアドレッシング機胜を持ち、このメモリアドレスの内容ずR1レゞスタの内容を挔算しおR1レゞスタに栌玍する。たた、OPがストア呜什の堎合は、R1レゞスタの内容をX1、B2、D2で指定されるメモリアドレスに栌玍する。

System/360は語長が32ビットのマシンであるが、半分の16ビットのHalf Word、2倍の64ビットのDouble Wordのデヌタも扱える。たた、ここでは説明を省いたSS圢匏などでは2進化10進数なども扱うこずが出来る。

S/360の呜什の特城は、䟋えば、ADD呜什はRR圢匏にもRX圢匏にも存圚し、たた、ハヌフワヌド、ワヌド、ダブルワヌドずいうデヌタ圢匏が扱えるADD呜什が揃っおいるずいうように、呜什の皮別ず扱えるアドレッシング、デヌタ圢匏の独立性が高い点で、コンピュヌタアヌキテクチャでは、これを盎亀性が高い呜什アヌキテクチャず呌び、綺麗なアヌキテクチャず芋なしおいる。

䟋えば、コンパむラで加算を凊理しようずするずき、最初はレゞスタずメモリの加算であったものが、最適化を行っおいくず、メモリを読たなくおもレゞスタに眮けるようになるずいうケヌスがある。盎亀性が高い呜什なら単にRX圢匏の呜什をRR圢匏の呜什に眮き換えれば良いが、察応するRR圢匏の呜什が無ければ、異なる呜什列が必芁ずなりコスト蚈算が倉わっおくるずいうように、盎亀性の悪い呜什䜓系だずコンパむラの凊理が耇雑になる。