IBM - SSEC

目次

SSEC

SSEC の構造周辺装置

プログラム

サブルーチン条件停止条件分岐演算速度

SSEC にまつわる誤解

SSEC はプログラム内蔵型か?SSEC は機械式か?他の機械との混同

その後


周辺装置

SSEC には、非常に多くの周辺装置が接続されていました。


しかし、当時の周辺装置は非常に遅いものです。

IBM 603 の内部は真空管なので高速ですが、SSEC の記憶装置はリレーでした。真空管と比べると10倍以上遅いです。

さらに、紙テープ、パンチカード、タイプライタ…遅いものばかり。


マーク1では、計算装置が歯車で、紙テープやパンチカードからデータを読み込めました。

しかし、実はこれすらも「速度の違い」が問題となり、データを直接扱えません。


マーク1ではこのため、命令の組み合わせに制限があり、周辺機器から直接乗除算器にデータを送ったりはできませんでした。


SSEC は、この点が改良されています。

IBM 603 にデータを入出力する「バス」には、一度データを蓄えるための、真空管による記憶装置が付けられていたのです。


データは必ず真空管に蓄えられ、IBM 603 は高速な真空管しか相手にしない。これで、速度の違い問題は解決です。


この真空管記憶装置は、一時記憶としても使えました。

演算中の一時的な数値などは、わざわざ遅いリレー記憶に置く必要はないのです。




さて、これで速度の問題は解消されるため、SSEC には非常に多くの「周辺装置」がつなげられていました。

すべての装置は「10進数で20桁」に揃えられています。


既に書いている「リレー記憶」が150本。


固定値の指示用の、「プラグ記憶」。

配線を差し替えて、固定値を表現できます。10本あります。


マーク1にも存在した「ダイヤル」もあります。ただし、こちらは20桁分を2つだけ。


紙テープ装置紙テープ装置は、なんと30台も。10台がセットになっていて、そのセットごとに「テープパンチャ(穿孔機)」もあります(計3台)。


紙テープ装置(写真を元にしたイラスト)
COPMUTER HISTORY MUSEUMのアーカイブから引用。

右側に縦にセットされているのが紙テープ。ループにしたものを、10本セットできる。
左側の開いた扉の中に見えるのが、テープパンチャ。上にロール紙が用意されている。

IBM ですから、パンチカードもあります。カードリーダーは2台、パンチャは4台。

出力用にプリンタが2台。


そして、特徴的なのが「表引き装置」。

マーク1の、対数、累乗、三角関数の装置を、もっと汎用的にしたものです。


SSECの表引き装置紙テープに「表」をパンチしておき、表引きして結果を返せます。

全部で 100,000 桁のデータを記録し、平均1秒で検索を完了した、と資料にあります。


表引き装置。こちらもCOPMUTER HISTORY MUSEUMから引用。
先ほどの紙テープ装置と読み取り部は同じだが、36台が並んでいる。
ここに、三角関数などの「表」を入れて置き、検索して答えを出す。



とにかく、どんな計算にでも対応してみせる。

そのために、考えうる限りの装置を全部取り付けた感じです。


マーク1には、いくつか特殊な記憶装置がありました。

倍精度演算とか、符号によって条件停止、などが実現できる特殊なものです。


SSEC では、そのような特殊な記憶装置は用意されていません。

しかし、プラグボードで少し配線を変えるだけで、すぐにそのような「特殊な記憶装置」に出来るように設計されていました。


マーク1を超えて、IBM の威信を示す必要がありました。


ENIAC の技術担当だったエッカートは、SSEC を「向こうにあるなんだか大きな怪物。とても正しく動くとは思えない」と言っています。

とにかく、つぎはぎだらけの巨大マシンでした。


プログラム

さて、これでやっと、SSEC の名前の由来である「手順選択」の説明ができます。

プログラムの命令20桁のうち、最後の2桁は「次に命令を読み込む装置の番号」でした。


先に書いたように、紙テープの読み取り装置は30台もあります。

セットする紙テープは、必ず「先頭と末尾を糊付けし、ループさせる」ようになっていました。


マーク1では、紙テープが許す限り、いくらでも長いプログラムが作れます。

しかし、SSEC ではこの「ループ」のサイズがある程度決められていたため、1本のプログラムのサイズにも制限があります。


その制限の回避のために、30台もの読み取り装置が用意されているのです。


もちろん、紙テープは「データ用」としても使えます。

サブルーチン

ループしたプログラムテープは、1つの「サブルーチン」を意味します。


現代的には、サブルーチンを呼び出す際は、現在実行している命令の位置をスタックに記憶します。

しかし、SSEC では物理的に「紙テープの読み取り位置」が決まるため、記憶の必要はありません。


メインプログラムからサブルーチンが呼び出され、実行されます。

サブルーチンの最後では、「メインプログラムのテープ装置に戻る」ように指示されます。

これで、問題なく先ほどの続きからメインプログラムが実行されます。


もう一度同じサブルーチンを呼び出した場合、テープはループしているため、またサブルーチンの最初から実行が行われます。

ちゃんと、繰り返し呼び出し可能なサブルーチンとして機能しているのです。


条件停止

さて、サブルーチンの最後に「元のテープ装置に戻る」指示が無かったらどうなるでしょう?


紙テープは物理的に先頭に戻り、プログラムは永久ループに入ります。

これで、一応繰り返し処理も作れることにはなりますが…どこかで繰り返しから抜けないと、正常な処理とは言えませんね。


SSEC には、「条件停止命令」がありました。

2つの値を比較し、大きい場合、または小さい場合に、処理を停止します。


ループの終わりにこの命令を入れて置き、ループが終了するときには「停止」してしまう、というのがループを抜け出す、もっとも簡単な方法です。


プログラマは、実行中はマシンの傍で待機していて、停止したら「命令読み取り装置をメインルーチンに手動で変更」したのちに、実行を再開する必要がありました。


SSEC の初期プログラマの一人であった、ジョン・バッカスは、「SSEC は3分に一度止まった」と証言しています。


この言葉は、SSEC が不安定なマシンだったという意味ではなく、条件停止が多用されたという意味でしょう。


次ページ: 条件分岐


前ページ 1 2 3 4 次ページ

(ページ作成 2015-06-05)
(最終更新 2015-06-18)

戻る     次記事:高速化のために
トップページへ

-- share --

3000

-- follow --




- Reverse Link -