ハーバード・マーク1(ASCC)の詳細
ハーバード・マーク1ことASCCの概要については、すでに本文ページで紹介しています。
しかし、ここは「歯車」のページです。この歯車計算機がどんな仕組みで動いているのか、どのようにプログラムするのか、詳細を明らかにしましょう。
計算の仕組み
すでに書いたように、計算自体は歯車によって行われまます。
ただし、歯車の「歯」は直接かみ合っておらず、電気パルスと、モーターによって動かされる「軸」で動かされる機構になっています。
難しいことはありません。歯車の位置により、1~9 の特定の電極と、GND の間が接続する様になっているだけです。
個別部品も、半組立状態も一緒に置かれているが、歯車で計算していることがわかってもらえればよい。
Jの部品内の電極を通じ、0~9の状態を読み出せるようになっている。
全ての歯車が、1~9 の電線を共有しています。
GND は歯車ごとに異なっていて、各歯車がどの値にセットされているかを検出できます。
ここで、9~1 に向けて、順次電線に電流を流します。
GND から電流が出てきた時点で、その歯車の数字がわかります。
電流が出てこなかった場合は 0 です。
次に、ここで読みだした数字が、別の歯車と「足される」仕組みを説明しましょう。
23桁の歯車が 72 本分…1656 枚の歯車は、すべて同じ速度で回る軸に接続されています。
5馬力の巨大なモーターに繋がれて、同期して回っていました。
強力なモーターによって回される主軸に対し、いくつもの軸が「枝分かれ」していて、さらに先の枝にカウンタが付けられていた。
軸と歯車の間には、接続と開放を物理的に切り替えられる、「電磁クラッチ」があります。
このクラッチは、パルスを送ることで接続・開放を切り替えられます。
先に、歯車は 9~1 に向けて読み出す、と書きました。
この、読出したパルスは、足し合わせたい歯車の「クラッチ接続」に繋がっています。
つまり、数字に対するパルスが出た時点で、クラッチが接続します。
9~1 まで順次読みだした次、「0」にあたるタイミングで、今度はすべての歯車のクラッチが「解放」されます。
これにより、送られてきた 9~1 の数字パルスに応じた時間、回転軸に接続されて歯車が回ることになります。
数字の数だけ歯車が回る、というのは、歯車計算機にとっての「加算」にほかなりません。
この歯車が 9 から 0 に変わるとき、物理的な凹凸によって、「繰上り」スイッチを押します。
このスイッチは、リセットするまで押されたままになっていて、計算が終了するまで繰上りがあったことを覚えています。
この「繰上り」は、計算が一旦終了した後に読み出され、上の桁をさらに1、加算します。
また、繰り上がる直前、「9」の位置に歯車があることも、繰上りスイッチで検出できるようになっています。
この状態の時、下の桁からくる繰上り信号は、上の桁にも送られるように、並列に接続されます。
つまり、「9」の桁に繰上りが来ると、その上の桁まで連続繰上りするのです。
通常の歯車計算機では、連続繰上りには遅延があるのですが、遅延なく連続繰上りを行えることになります。
計算1回は、1cycle で行われました。
1分間に 200cycle でしたから、1cycle は 300ms です。
9~1の電線に送られる「パルス」は、この 300ms を 16分割した時間で流されました。
18ms ほどですが、この時間単位は「ポイント」と呼ばれました。
上図の左側に、IMPULSE とある行は「読出し信号」、KNOCK OFF とある行は「リセット信号」だと考えてください。
9~1を読み出すのに、9ポイント使います。その次のポイントではクラッチのリセット(解放)信号が送られます。
ここまでの10ポイントで、繰上りなしの半加算が終了します。
11ポイント目はなにも信号が送られていませんが、この間に「繰上り」に向けて準備しているようです。具体的には、現在9のカウンタは、連続繰上りに備えて、上の桁に繰上り信号を接続します。
そして、12ポイント目は、キャリー(繰上り)の読出し信号、13ポイント目はクラッチのリセットです。
最後、14ポイント目でキャリースイッチのリセットが行われ、15、16ポイント目で次の計算に備えます。
歯車計算機の動作を、上手に「電気パルス」に置き換えているのがわかります。
歯車式計算機では難しい連続繰上りの処理も、電気であることを活かして高速に処理する、見事な方法です。
9~1のタイミングで出される「パルス」自体も、9枚の回転するカムによって作り出されていたようです。
クロックを作り出す仕組みなどもない時代、どこまでも「歯車的」な電気回路です。
マーク1は電気で動いていて、多数のリレーが使われていたことから「リレー計算機だった」という誤解があるようです。
手元にある本では、「コンピューターが計算機と呼ばれた時代」(アスキー)にリレー計算機だったという記述があります。
特殊なカウンタ
72本のカウンタ(歯車計算機)のうち、いくつか特殊なものがあります。
倍精度演算
64と65,68と69 の2ペア4本は、倍精度演算(HIGH ACCURACY COMPUTATION)ができるようになっていました。
64の最上位の数字が繰り上がると、65の最下位の桁に伝えられます。
また、符号も共有していました。(68,69も同様)
プログラム上の多少の制約はあるのですが、ASCC の限界は 23桁ではなく、46桁の計算が可能だったことになります。
コンピューターが登場する以前に、大きな数を表す際の方法として「リトルエンディアン」が存在したことになります。