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

IBM 1130

メインフレームは高価で大会社に一台という時代であったが、エンジニアが設計に使えるもっと安価なコンピュータが欲しいという要望に応える製品が、1130である。

  • IBM System/360メインフレーム

    IBM System/360メインフレーム(出典:IBM Archive)

  • IBM 1130コンピュータ

    IBM 1130コンピュータ(出典:IBM Archive)

上の2枚の写真はIBM Archiveから転載したメインフレームのSystem/360の写真と1130の写真であるが、System/360は一部屋を占領するマシンであるのに対して、1130は大きめの机であり、事務所の一角にも置くことができるということで、当然、お値段も1桁以上の違いがあった。

1130は、アキュムレータ型の16ビットアーキテクチャであり、以下に述べるように、メモリオペランドとアキュムレータの内容を演算し、結果をアキュムレータに格納する。命令は16ビット長のShort形式と32ビット長のLong形式があり、Short形式の命令は次のようになっている。命令種別を表すOPフィールドが4ビット、 Fフィールドが1ビット、 Tフィールドが2ビット、 Dispフィールドが8ビットという構成である。

  • Short形式の命令

Fフィールドは、命令がShort形式かLong形式かを示すものであり、Short形式では"0"、Long形式では"1"となる。Tフィールドはタグビット、Dispフィールドはディスプレースメント(Displacement)と呼ばれる。オペランドのアドレスは、タグビットの値により、次のように計算される。

  • T=00:IAR+Disp
  • T=01:XR1+Disp
  • T=10:XR2+Disp
  • T=11:XR3+Disp

ここでIARは命令アドレスレジスタ(1130ではプログラムカウンタ PCをIARと呼んでいる)であり、Dispは8ビットの2の補数表示の整数である。従って、T=00の場合は、(IARは次に実行する命令を指しているので)その命令の次の語から-128語、+127語以内のメモリをアクセスすることが出来る。また、1130はXR1、XR2、XR3という3つのインデックスレジスタを持ち、T=01,10,11を使用して、これらのレジスタの内容とDispフィールドの値を加算してメモリアドレスとすることも出来る。

32ビット長のLong命令は、以下のようになっている。

  • 32ビット長のLong命令

Long命令のアドレス計算は、Short命令とほぼ同じであるが、8ビットのDispの代わりに16ビットのAddressフィールドが使われる点と、T=00の場合は、IARが加算されるのではなく、Addressフィールドそのものがアドレスとして使われるという点が異なっている。そして、Dispは2の補数表現であったが、Addressは符号なし整数として扱われる。

また、1ビットのIAフィールドは間接アドレスを示し、このビットが"1"の場合は、計算されたメモリアドレスのメモリの内容を読み出して、それをメモリアドレスとして再度メモリをアクセスして、その内容をオペランドとする。また、ModフィールドはIO命令の場合に用いられ、各IO機器で固有の動作が定義されている。

演算は、例えば加算の場合は、タグビットの値に応じて計算されたアドレスのメモリの内容をアキュムレータに加算する。また、加算は16ビットの語単位で行うものと、32ビットの倍長で行うものが用意されている。通常の演算では、このようにアキュムレータとメモリ間の演算しか行えないが、アキュムレータをインデックスレジスタに格納する命令があり、これによりXR1~XR3にデータ格納領域の先頭アドレスなどを格納しておき、このアドレスをベースとして個々のデータをDispで指定するというような使い方ができる。

IBM 1130の命令も、オペランドアドレスの計算方法、間接アドレス指定などと、計算が16ビットの語単位か、32ビットの2語単位かなどは独立であり、直交性の高い綺麗な命令体系である。