SSEC のプログラム方法

SSECはプログラム可能だった、と聞けば、やはり気になるのはプログラム方法について。

いわゆるコンピューターではない機械をプログラムするとは、いったいどういう感じなのか。


もちろん、現代でいえば機械語レベルでプログラムを組みます。

ハードウェアの知識は必須なのですが、このハードウェアが現代と全然違います。


目次

IBM - SSEC(別記事)

高速化のために(別記事)

全体構造

データ表現

周辺機器番号(r)バスの指定(b)そのほかの設定(s)四つ組

実行ユニット

非対称命令フィールド

命令

NOP加減算条件判断乗算除算

ふたつのシフト

half correctionシフト

次回につづく

SSECの周辺装置(別記事)

再訂正・NOP命令の誕生(別記事)


全体構造

既に書いた話の繰り返しになりますが、確認の意味も含めて全体構成をざっと書いていきます。

まず、全体構造図をご覧ください。(クリックで拡大します)

SSECブロック図

中央上にある、A B と書いてある部分は「命令記憶装置」です。詳細後述。

その左側に ES1~ES8 が並んでいるのが、Electoronic Storage。「レジスタ」と呼ぶことにします。


命令記憶装置とレジスタの間の下に縦に書かれているのが、演算回路。IBM 603 相当の部分です。

演算回路は、基本的にレジスタとデータをやり取りします。


レジスタの左側に Pilot Units とあるのは、全体制御部分。主にバスを制御します。

SSEC では、レジスタの準備が整ったことが「次の動作」を起こすタイミングです。いわゆるクロック信号は存在しない、非同期式です。

Pilot Unit は、各所からの信号を受けてレジスタの準備が整ったことを確認し、各所に信号を伝えます。


Pilot Unit の下に縦に並ぶのは、シーケンス制御回路。命令を解釈し、Pilot Unit や演算回路に指示を出します。

下に横方向に書かれたブロックも、その一部です。


再び中央に戻り…中央から右側は、基本的に「周辺機器」。

In/Out 8本づつのバスが並び、各種機器とレジスタ、命令保持回路を繋ぎます。

(In/Out は、演算回路から見た方向ではなく、周辺機器から見た方向を意味します。演算装置から見ると、読出しは Out 、書き込みは In のバスを通ります)


右端上から順に、リレー記憶 150本、プリンタ2台、表引き装置36台(6セット)、プラグ記憶10台、紙テープ装置3バンク(30台)、紙テープ穿孔機3台。そして、中央下に制御卓と、「ダイヤル記憶」が記されています。




改めて説明しましょう。

SSEC の周辺機器は、BCD で10進数20桁を扱います。リレーや紙テープで構成され、遅いです。


一方、演算回路は真空管で構成され、高速です。速度が違いすぎて、そのままでは接続できません。

そこで、真空管で作られたレジスタが間に入り、仲介します。


この際、16本もあるバスを利用して、レジスタ・周辺機器間のアクセスは並行して行われます。

これにより、少しでも演算回路の高速性を活かせるようにしています。


レジスタは、「内部と外部を繋ぐ」のが第一の目的であることを忘れないでください。

現代のレジスタのように、自由にデータ置場として使うことはできません。


ただし、制限を守ったうえでなら、外部アクセスのためのデータの一時保持としてではなく、「高速にアクセスできるデータ置場として」使えます。


外部装置に同時アクセスできるように、バスが8本ありました。


1本のバス「セット」は、20桁の数値を扱うため、80本の電線で構成されます。

これが16本ですから、電線は1280本。

これはデータバスに相当するもので、これとは別にアドレスに相当する「機器選択」のための信号線がありました。


全体図・手前まで見えるものSSEC は IBM のショールームの壁面を使って設置されましたが、SSEC の部屋は数段の階段を上って入るようになっています。

実は、床下に配線を隠すためでした。


右図は、雑誌に掲載されたイラスト。(クリックで拡大)
COMPUTER HISTORY MUSEUM より引用。
初回に紹介したもの(コロンビア大学より引用)と同じだけど、こちらの画像は手前の段差まで描かれている。

床はパネルごとに簡単に持ち上げられるようになっており、必要に応じて配線にアクセスできます。

現代でも使われる、いわゆる「OAフロア」の初期の例です。




SSEC の内の各所には、プラグボードが設置されていました。

たとえば、これで「装置」内の接続を変更できました。

たとえば、リレー記憶の一部をプラグ記憶に変更し、符号のみ書き換え可能にする、という例が特許書面に出てきます。


プラグボード装置番号は3桁ですが、命令を読み込む装置は2桁で設定します(詳細後述)。

この対応付けもプラグボードで行われました。


左図は、命令格納装置を示すプラグボード。
右上に 00~99 の「命令格納装置」プラグがあり、その下にテープ装置、左側にリレー記憶が並んでいる。
プラグで接続することで、命令装置番号 01 / 02 をテープ装置 1 / 10 に、命令装置番号 52 / 53 をリレー記憶 152 / 153 に割り振っている。
SSEC は、基本的に紙テープで命令を与えるが、リレー記憶から命令を読むこともできた。

「プラグ記憶」装置は、プラグそのもので「固定数値」を表現しました。現代の ROM に相当します。

プリンタや表引き装置の設定もプラグで変更しました。


もう、いたるところプラグだらけ。

そして、実はこの「プラグの差し替え」もプログラムの一部なのです。


SSEC は紙テープでプログラムを与えられましたが、そのプログラムは前提として「適切な配線」を必要としていました。

ENIAC の「プラグのみでプログラム」に比べればはるかに扱いやすく、柔軟になっているのですが、「プログラム内蔵型」には程遠い状態でした。


データ表現

プログラム方法の前に、データの表現方法を書いておきましょう。

これは、プログラムをするうえで非常に重要な概念です。


以前の記事で「データは5桁」と書きましたが、この中は3つのフィールドに分かれています。


以下、フィールド説明と共に、r b s というアルファベットを示しています。
SSEC で使われたフィールドの呼び名で、由来は説明されていません。
恐らくは、recive (信号を受け取る機器)、bus、sign/shift のようです。

周辺機器番号(r)

データは、すべてどこかの「周辺機器」に入っています。

周辺機器には番号が与えられています。これは、いまでいえばメモリのアドレスのようなものです。


周辺機器番号は3桁でした。

たとえば、010~159 はリレー記憶装置(150本)を意味しています。


でも、このアドレスだけではデータは表現できません。


次ページ: バスの指定(b)


1 2 3 4 次ページ

(ページ作成 2015-06-11)

前記事:高速化のために     戻る     次記事:SSECの周辺装置
トップページへ

-- share --

2000

-- follow --




- Reverse Link -