ハーバード・マーク1

目次

バベジの夢を継いで

ASCC

ASCC のプログラムASCC の内部動作

「ハーバード・マーク1」

改造


ASCC のプログラム

ASCC は、紙テープにパンチ穴を空けることで、動作を「プログラム」することができました。


パンチ穴は1列に24個開けることができ、8個づつ3つのグループに分かれています。

穴が8個セットですから、今の考えでいえば 8bit 。これが3つ組になって命令を示します。


プログラムに詳しい人なら、命令・ソース・ディストネーションだな、と思うかもしれません。

でも、残念ながらちょっと違います。


ソース(元データ)、ディストネーション(送り先)はあります。

この時、ASCC は「歯車計算機」なので、データは転送されるのではなく、「加算」されます。


もう一つのグループは「修飾語」です。

ソースの符号を反転してから送る、とすれば、加算ではなく「減算」になります。


命令の詳細は、別記事にまとめますが、今のコンピューターとは少し違う考え方でした。




紙テープにパンチされたプログラム4台の紙テープ読み取り機があり、4本の紙テープをセットしておくことができました。


このうち、1台はプログラムを記述した紙テープ専用です。後の3台は、計算用のデータを収めたものでした。


紙テープ読み取り機にセットされたテープ。
(写真のテープはデータ用だが、見た目はプログラムも同じ)
同様の装置が4台あった。




テープの読み取り装置自体は同じなのですが、プログラムとデータの「記述方法」は全く異なります。


先ほど書いた通り、ASCC の「カウンタ」は、23桁+符号でした。

そして、このテープは、横に 24個の穴を空けられました。


そこで、テープの穴を4列分使って、4つの穴で0~9の数字を表すことで、23桁+符号の数値を表現できたのです。


命令を並べたものを「ファンクション(機能)テープ」、データを並べたものを「バリュー(値)テープ」と呼んで区別していました。


余談となりますが、バベジの解析機関は、行列演算では同じ処理を、データを変えながら繰り返す必要がある、という考えから、「プログラム」と「データ指示」の2組のパンチカードを同時に使う方式でした。

2種類のテープにプログラムとデータを入れる、という方法は、バベジの影響を受けている気がします。

もっとも、バベジは「データの置き場所」つまり、現代的に言えば配列の添え字をデータ用の指示にしています。(プログラマなら理解していただけると思うが、そうすれば行列演算がやりやすくなる)

この点、ただデータを入れただけのマーク1は、バベジの意図が正しく理解されていない気がします。


なお、プログラムとデータは全く別のものである、と区別する構造は、後に「ハーバード・アーキテクチャ」と呼ばれるようになります。




十進スイッチASCC には 24桁の十進スイッチが 60組あり、これを使って内部のカウンタに直接値をセットすることも出来ました。


写真はASCCの論文から引用。このようなスイッチが、横に24桁、縦に60組並んでいた。
写真左側に写っているのは、接続のためのリレーボックス。

このスイッチが目立つため、データは必ず手動入力だったと思われがちですが、先に書いたように紙テープから読み取ることも出来ました。

スイッチは、計算の度に変化させたいパラメータを入力したり、手っ取り早く内部カウンタの値を変更するときに使うものです。


ASCC の内部動作

ASCC は機械的に動作するため、プログラムの実行速度は決して早くありません。


1分に 200cycle …今風に言えば、クロック周波数 3.33 Hz で動作します。1cycle で加減算が1回できました。

歯車を回して計算しているのですから、これだってかなり頑張っているほう。


乗除算は、外付けユニットの能力を借ります。

乗算は最大で 20cycle 、除算は最大で 52cycle かかりました。

(条件により速度が異なり、0 の乗算などは 8cycle で終わります)


同じように、外付けユニットには LOG (114~298cycle)、累乗(172~218cycle)、三角関数(sin)(199ycle)がありました。


乗除算は外付けと言っても、取り外せない標準設備です。
それ以外は必要な時だけ接続されました。


72本のカウンタのうち、何本かは特殊な構造になっています。


ペアになっているカウンタがあり、倍精度計算(通常の倍、46桁の精度になる)も出来ました。


また、任意の計算の結果を受けて符号の変わるカウンタや、特定のカウンタの符号によって機械を停止する命令などがありました。

条件分岐はありませんが、これらのカウンタを使うと、条件により計算を少し変えたり(C言語の三項演算子程度のことはできる)、条件停止を行うことができます。


条件停止、または「通常の停止」の後に、人間がプログラムのテープを移動させる使い方が多用されました。

停止位置に応じて、「次のテープの先頭から実行再開」とか、「今のテープを巻き戻して先頭から実行再開」など、プログラム作成中にオペレータ向けの指示書をまとめておくのです。


完全自動ではありませんが、「条件分岐」のあるプログラムを実行できたのです。


本来、計算手順を実行する人を「コンピューター」と呼びます。
計算手順とは、まさに「次にどの命令を実行させるか」を判断する作業であり、ASCC はオペレーターがその作業をしなくてはならない点で、「計算機」にすぎません。


「ハーバード・マーク1」

IBM ASCC は、1944年に完成し、8月7日にハーバード大学に納入されました。


完成直後のASCCすると、あろうことかエイケンは機械の名前を「ハーバード・マーク1」(Harvard Mark I)と変え、彼が独自に発明した機械として世間に発表するのです。

協力者として IBM の技術者の名前を一人挙げましたが、全面的に技術協力を行い、資金も提供した IBM の存在には一切触れられません。


写真は先ほど一度出したもの。完成直後の写真。
近年撮られた写真が、Wikipediaに存在する。


上部のロゴに注目して比較すると、改変されているのがわかる。
IBM が AIKEN-IBM になり、名前の最後に MARK I が付けられている。

エイケンは、IBM の機械を「盗んで」、AIKEN が開発した機械にしたのだ。

IBM 会長のトーマス・J・ワトソンはこれに激怒。

エイケンはこの後も改良された機械の開発を続けるのですが(マーク4まで作られました)、IBM はもう手を貸しませんでした。


そして、IBM は威信にかけて、マーク1を超える性能の機械の開発を開始します。

その話は、また別の記事に。

次ページ: 改造


前ページ 1 2 3 次ページ

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

戻る     次記事:マーク1の詳細
トップページへ

-- share --

7000

-- follow --




- Reverse Link -