Selective Sequence Electronic Calculator (SSEC)
先日、「社会の歯車」のコーナーで、歯車計算機時代の集大成ともいえる「ハーバード・マーク1」を紹介しました。
この機械、本来は「IBM ASCC」という機械です。IBM が作成したもの。
でも、ハーバード大学のハワード・エイケンが「独自に」作った、と発表してしまった。
今回紹介する SSEC は、コケにされた IBM が威信をかけて、ASCC を超えようとして作り上げた機械です。
最初に書いておきますが、コンピューターではありません。少なくとも IBM の公式見解ではそうです。
でも、IBM が…いや、IBM だけでなく、時代が「歯車計算機」から「コンピューター」に向かう途中で作られた機械で、コンピューターの特徴を数多く備えています。
目次
高速化のために(別記事)
SSECのプログラム方法(別記事)
SSECの周辺装置(別記事)
再訂正・NOP命令の誕生(別記事)
SSEC
今回は、まず最初に映画の1シーンを見てもらいましょう。1952年に公開された、「Walk East on Beacon」です。
なんだか騒がしい機械音のする部屋の中のシーンです。実はこの部屋の壁を全て覆い尽くしているのが、今回紹介する機械、SSECです。
正式名は、IBM Selective Sequence Electronic Calculator。…手順選択可能な電気計算機、と訳せばいいでしょうか。設計開始は 1944年。
既に書いた通り、IBM が作成した ASCC…ハーバード・マーク1の名誉をエイケンに奪われたため、マーク1を超える機械として設計が開始されています。
ENIAC の公表は 1946年。
ENIAC は公表される前にすでに次世代機である EDVAC の検討が始まっていて、それをフォン・ノイマンが勝手に公表しています。(EDVAC レポート。1945年)
SSEC はこれよりも前に設計が始まっているのです。
ただし、その段階ではまだ細かな部品単位の設計…歯車ではなく、リレーなどで計算する方法を確認していただけのようで、本格的な全体設計は1946年から。
設計者は、コロンビア大学教授のウォレス・エッカートです。(ENIAC のジョン・エッカートとは別人)
明らかに、EDVAC レポートや ENIAC の影響を受けています。
結果、SSEC 自体は公式にはコンピューターではないものの、「ノイマン型」の影響を受けた、非常にコンピューターらしい機械になっています。
アメリカに次いで、ソ連が原爆を製造するのですが、実はこれはスパイによって製造法がソ連に伝えられたため。
最高機密が漏れてしまった軍事スパイ事件として有名で、この経緯を、FBIのフーバー長官がまとめた実録があり、それに着想を得て作られた映画が冒頭のもの。
原爆開発時には計算機が多用され、ハーバード・マーク1も利用されました。
どうも、そのイメージを SSEC で再現したシーンのようです。
名前に「Selective Sequence」「Electronic Calculator」とありますが、これが SSEC の最大の特徴です。
Selective Sequence は手順選択の意味。つまり、プログラムを機械が自分で選んで実行できるのです。
今の言葉で言えば「条件分岐」。
マーク1で出来た唯一の「条件実行」は、停止することでした。
停止した後、人間が停止個所を確認して、停止個所に応じた「続きのプログラム」から実行を再開する。
これによって、条件によってプログラムを変えていました。
でも、SSEC は条件分岐を自ら行うのです。
そして、Electronic Calculator は「電子計算機」。マーク1では歯車を使って計算しますが、SSEC は真空管を使っていました。
周辺回路などにははリレーが残りますが、それは ENIAC だって同じこと。SSEC は、プログラム可能な計算機としては ENIAC の次の真空管式で、そのプログラムの柔軟性は ENIAC 以上でした。
後で書きますが、SSEC は掛算や複雑な関数を含む計算を秒間50回程度。加算だけなら120回程度できたと思われますが、ENIAC の方が圧倒的に速いです。
ただし、ENIAC には並列で動作する加算器が複数ありました。
後にENIACがプログラム可能に改造された際、逐次動作になって処理速度は 1/6 になったそうですが、まだ速い。
ENIAC は条件分岐ができず、計算できる内容は SSEC に比べて限られていました。この点は SSEC の方が上です。
SSEC の構造
SSEC は、当時最新鋭の計算機だった IBM 603 を「演算部分」に使用し、それをプログラム制御するためのリレー回路や機械部品を周辺に組み上げたものです。
IBM 603 は、1946年に作られたパンチカード集計機です。
ただ、通常の集計機は加減算しかできないところ、603 では乗除算も可能でした。
さらに言えば、IBM の機械としては初めて真空管で内部回路が作られ、非常に高速に動作しました。
602 では、割り算にも対応したリレー式。12桁。
602 は 603 と同じ 1946年発売ですが、手ごろな値段の 602 の方が売れたようです。
SSEC はマーク1を超えることを目標に作られているため、マーク1では「不可能だった」計算が可能になるように工夫されています。
しかし、計算機の設計技法がまだ確立していなかった時代に、無理やりつぎはぎだらけで作った、お化けのような構造物でもあります。
マーク1は、10進数で 24桁を扱えました。
それに対し、IBM 603 は、BCD で10進数28桁の計算が出来る集計機でした。
詳細は別記事、「BCD(二進化十進)とは」をお読みください。
ただし、SSEC としては、この性能を全て使い切らず、BCD で 19桁と少し、という使い方をしています。
「少し」というのは、2bit 余るため。この 2bit の扱いは場合により異なります。
少し制限はありますが「20桁」とする場合もありますし、「19桁+符号」とする場合もあります。
なぜ IBM 603 の性能を活かしきらないかと言えば、IBM のパンチカードと同じ「幅」の紙テープを利用するためです。
IBM パンチカードは、80のカラムが並んでいます。横方向に 80の穴が空けられる、ということです。
紙テープでは、歯車の歯を通して紙テープを正確に「送り出す」必要があります。このための穴を両端に確保します。
すると、残りの穴スペースは 78個分。78bit とすると、BCD では 19桁と 2bit です。
これが、SSEC が符号付19桁、または20桁を処理単位とする理由です。
コロンビア大学の SSECのページから引用。
引用元に、もっと高精細な画像があります。
この紙テープは、「製品として印刷・裁断する前のパンチカードのロール紙」が使われたそうです。
IBM 603 は集計機ですから、足し算ができます。符号を反転すると引き算にもなります。
さらに、14桁同士の乗除算(結果は 28桁)ができます。
これを、紙テープに記録したプログラムで自動制御してやろう、というのが基本的な考え方です。
紙テープは20桁ありますから、1命令を20桁で示します。
このうち、「データ」を1つ5桁で表します。
マーク1は歯車計算機だったので、データの「送信」が「加算」に相当しました。
しかし、SSEC ではデータを内部の IBM 603 に送り、計算後再び取り出して記憶装置に格納します。
このため、データは入力2つに出力1つの、3つが必要でした。
データ1つが5桁で表現されるので、これで15桁。
データをどのように扱うか、命令を2桁で示します。これで17桁。
固定小数点を扱うために、桁を「ずらす」仕組みもありました。1桁で、ずらしたい桁数を指定します。
実は、9桁以上もずらせますし、ずらす方向も左右切り替えられますが、詳細は別記事に。
これで18桁。
さて、残り2桁です。
これが、SSEC の特徴である「分岐」命令になるのですが、その説明の前に、周辺装置の理解が必要です。