このページの本文へ

ソフトウェア工学の先駆者が明かす、手作り計算機時代の「創意工夫」体験

“日本初のハッカー”和田英一氏、黎明期のコンピュータ研究を語る

2014年04月04日 09時00分更新

文● 大森秀行

  • この記事をはてなブックマークに追加
  • 本文印刷

小さなメモリ空間を最大限に生かす「PC-1」のハック

 続いて紹介されたのは、1958年に高橋研究室が開発したパラメトロン計算機「PC-1」におけるハックである。

高橋研究室が1958年に完成させたパラメトロン計算機「PC-1」(出典:一般社団法人 情報処理学会Web サイト「コンピュータ博物館」)

 パラメトロンを4300個用いたPC-1は、前述の試作加減乗算機よりもずっと本格的な計算機に進化していた。メモリや紙テープリーダ、割り算を実行するための「Rレジスタ」なども最初から備えている。ただし、メモリの容量は18ビット×512ワードと非常に少ない。512行のデータを読み込むとメモリがいっぱいになってしまう。

 この非常に小さなメモリ空間を最大限に生かそうと、和田氏はPC-1でもハックを行った。紙テープから読み込んだ数字の文字コードを変換する「イニシアルオーダー」プログラムの改良である。

 このプログラムの説明をする前に、紙テープの記録方式について補足しておこう。紙テープでは、複数の穴の空いている位置(穿孔パターン)の違いによって個々の文字を表すが、そのパターンは人間にとって非常にわかりにくいものだった。

 特に、当時一般的に使われていた「ITA2」と呼ばれるコード表(下の写真左側)では、数字を表すコードが飛び飛びに並んでいる。これでは計算結果を出力した紙テープを見てもわかりづらい。そこで、たとえば世界初の実用的なプログラム内蔵型計算機「EDSAC」の開発では、テレタイプを改造し、数字がきれいに並ぶようにコード表を改めている(写真右側)。

テレタイプの出力で使われていた紙テープのコード表

 だが、高橋研究室では「買ってきた市販品をそのまま使うのがポリシー」(和田氏)であり、テレタイプを改造する代わりにコード変換プログラムを開発する方針となった。紙テープの穿孔パターンを数字に置き換える、これが前述した「イニシアルオーダー」プログラムである。

 「(イニシアルオーダーの)最初のバージョンは高橋先生が作った。コード表を参照しながら、読み込んだ穿孔パターンをループで探すという構造で、『普通に作ればこうなる』というお手本のようなプログラムだった」(和田氏)

 ところがこの方式だと、1文字を読み取るために7命令が必要で、28クロックかかる。ループで回すので、平均試行回数が5回だと140クロックも時間がとられてしまう計算になる。そこで和田氏がプログラムの改良に着手する。

 「コード表には32文字があり、貴重な512ワードのメモリのうち16分の1を消費してしまう。それはいやなので、『変換プログラム自体にコード表を埋め込めないか』と考えた。プログラムの命令に与えるメモリ番地の値に、変換結果の数値の意味も持たせれば、別途コード表を持たなくて済むという発想」(和田氏)

 その発想を基に和田氏が開発したのが、「イニシアルオーダーR0」だ(下の写真)。68ワードのプログラムの中に、コード表が埋め込まれている。読み込んだコード番号を数値演算して飛び先のメモリ番地を決め、そのメモリ番地に書かれている命令が真ならば、そこに書かれている数値が変換後の値となり、偽ならその数値のメモリ番地に飛ぶという仕組みになっている。

和田氏が開発した「イニシアルオーダーR0」プログラム。プログラムの中にコード表(の機能)を埋め込むという画期的なアイデアで、小さなメモリ容量をフル活用している

 「コード表を埋め込んでメモリ消費が小さくなっただけでなく、6命令、24クロックで1文字が読める。140クロックが24クロックに短縮されたので、圧倒的に処理が速くなった」(和田氏)

 このイニシアルオーダーR0について、高橋秀俊教授は著書「電子計算機の誕生」の中で「おそらく、プログラム史上、前にも後にもこれほどみごとな『文学的』作品はあらわれないであろう」と賛辞を贈っている。

(→次ページ、ついには計算機に音楽演奏までさせてみた)

カテゴリートップへ