IBM - SSEC

目次

SSEC

SSEC の構造周辺装置

プログラム

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

SSEC にまつわる誤解

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

その後


条件分岐

しかし、頻繁に停止しているようでは、マーク1と大して変わりません。

いや、マーク1よりも計算速度がずっと上がっているからこそ、停止して「人間が作業する」時間の無駄が大きいとも考えられます。


「元に戻る」か、「そのまま続ける」かを自動的に選べたら…

実は、SSEC はそのようなプログラムが組める工夫がありました。


SSEC の特許書面では、ニュートン法で平方根を求めるプログラムが明示されています。

「十分な精度となるまで、繰り返し計算して精度を高めていく」という方法です。


プログラムの最後で、精度が十分か否かを数値に反映して、2つの数値を作り出すようにしています。

1つは「元のテープ装置」の番号、もう1つは「今のテープ装置」の番号になる、巧妙な計算です。


そして、これをリレー記憶に書き込み、そのリレー記憶に処理を移します。


SSEC では、データも命令も 20桁でした。これは、実は巧妙に計算された設計です。

さらに、「次の命令の装置」は、命令の末尾2桁でした。計算で求めた「番号」は、末尾2桁に収まります。


…さて、リレー装置に処理を移したら、SSEC は先ほど計算した2桁を取り出し、その装置に「分岐」します。

これで、条件分岐が実現できました。


ここに上げた例では、サブルーチンがループしていて、そのループから元に戻るか否か、という判断でした。

しかし、テープ装置は30台もあるので、もっと自由な条件分岐も可能、と理解していただけるかと思います。


演算速度

SSEC の目標であったマーク1は、1分間に200cycle で動くことができました。


1cycle で1回の加減算を行い、掛け算には8~20cycle かかっています。

ただ、「掛け算の指示」には3命令が必要なので、実際の掛け算時間は 11~23 cycle でしょう。


SSEC の動作速度は、特許書面上には書かれていません。

細かな部品単位での「速度」は書かれていますが、掛け算が 20ms、リレー記憶へのアクセスが 20ms 、というあたりが最も遅い部類です。


メインプログラムが紙テープに入っていますが、こちらは各種資料を基に計算すると、どうも1秒に120命令を読み込めたようです。

1命令の読み込み時間は 8ms 。電気で動くリレー記憶より、物理的な紙テープの方が速いです。




特許書面によれば、SSEC を使って月軌道の計算を行った際、11,000回の蓄積処理、9,000回の掛け算、2,000回の表引きを行って、大体7分で終了した、と書かれています。


蓄積処理というのは、英語では「accumulations」ね。

これ、訳すの難しいので「蓄積」としたけど、加減算やデータ移動など、基本的な処理のことです。


表引きは「平均1秒」とのことなので、2000回も表引きを行ったら、それだけで7分超えてしまいそうですが…

検索時間は表のサイズにもよるので、小さな表で十分だったのかもしれません。


この計算例だと、高速な基本処理も低速な表引きもあわせて、22,000回の演算を行っています。

これを7分間、420秒で割ると、1秒におよそ 50命令を実行しています。


先に書いた通り、プログラム自体の読み込みは秒間120命令。

実際の実行が 50命令ですから、理論限界よりはかなり遅くなったのでしょう。

(掛け算やリレー記憶へのアクセスが命令読み取りより遅いので、当然とも言えます)


SSEC にまつわる誤解

マーク1に勘違いが多かったように、SSEC もまた、勘違いされることが多い機械です。

ここで、代表的なものを2つと、その他こまごましたものを書いておきます。


SSEC はプログラム内蔵型か?

今挙げた、ニュートン法で平方根を求めるサブルーチンの例を根拠として「SSEC が世界最初のプログラム内蔵型マシンである」という主張があります。


プログラム内蔵型は現代型のコンピューターの要件として重要なものです。

我々が普通に言う「プログラム」というのは、メモリに置かれたものです。メモリ内容にすぎないため、ディスクから読み込んだプログラムを実行したりできます。

ENIAC のように「配線でプログラムをする」などは、現代ではなかなか行われません。


先ほどの例で、SSEC はリレー記憶に「次の命令を取り出す装置」を指定する命令を書き込み、そこにジャンプして、命令を実行しました。


なるほど、これだけを見ると、メモリに置いたプログラムを実行できる、プログラム内蔵型であるかのように見えます。




しかし、SSEC はプログラム内蔵型ではありません。

理由は簡単で、メモリにプログラムを置くことを想定していないためです。


SSEC には、メモリの「どこ」を実行中かを示す、プログラムカウンタがありません。

紙テープの場合、順次送れば次の命令を示すはずなので、プログラムカウンタという概念自体が不要なのです。


連続したメモリを「次の装置」として指定し続ければ実行を続けられるかもしれませんが、その場合、たった 99 命令しか実行できません。

「次の装置」の番号は、2桁しかないためです。


リレー記憶自体は 150本分ありますが、そのすべてを実行することすらできないのです。

メモリ上の「命令」を実行することができた、というのは、メモリ上に「プログラムを置けた」ことを意味しないのです。


次ページ: SSEC は機械式か?


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

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

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

-- share --

3000

-- follow --




- Reverse Link -