パイロットACE | 1950
パイロットACE(自動計算エンジン)は、イギリスで最初に建設されたコンピュータの1つです。1950年代初頭に国立物理研究所(NPL)で建設され、当時の他のUK設計(マンチェスター・マーク1やEDSACなど)と同様に、初期の汎用ストアードプログラムコンピュータの1つでもありました。これは、アラン・チューリングによって設計されたフルACEの予備バージョンであり、チューリングは建設が完了する前にNPLを去りました。
パイロットACEは、チューリングのフルACE設計の簡略版に基づいて建設されました。チューリングがNPLを去った後(主にACEの構築の進展のなさに失望して)、ジェームズ・H・ウィルキンソンがプロジェクトを引き継ぎました。ドナルド・デイビス、ハリー・ハスキー、マイク・ウッドジャーも設計に関与しました。パイロットACEは1950年5月10日に最初のプログラムを実行し、1950年11月にはメディアにデモンストレーションされました。
当初はプロトタイプとして意図されていましたが、当時の他の計算機が不足していたため、この機械が非常に有用な資源であることが明らかになりました。実用的に運用できるようにいくつかのアップグレードが行われた後、1951年末に運用が開始され、次の数年間にわたってかなりの運用実績を上げました。パイロットACEが有用であった理由の1つは、科学計算に必要な浮動小数点演算を実行できたことです。ウィルキンソンは、これがどのように実現されたかの物語を語っています。
最初に構築された時、パイロットACEには他のコンピュータと異なり、乗算や除算のハードウェアはありませんでした(ハードウェアによる乗算は後に追加されました)。パイロットACEは、ソフトウェアで実装された固定小数点の乗算と除算を使用して始まりましたが、固定小数点演算が不適切であることがすぐに明らかになりました。数値がすぐに範囲を超えてしまったのです。新しいソフトウェアを書くのに時間はかからず、パイロットACEは浮動小数点演算ができるようになりました。その後、ジェームズ・ウィルキンソンは専門家となり、浮動小数点計算における丸め誤差についての本を書き、最終的に好評を博しました。
パイロットACEは約800本の真空管を使用していました。主記憶は水銀遅延線で構成され、当初は32ビットの128ワードの容量がありましたが、後に352ワードに拡張されました。1954年には4096ワードのドラムメモリが追加されました。その基本クロック周波数は1メガヘルツで、初期のイギリスのコンピュータの中では最も高速でした。命令の実行時間は、メモリ内の位置によって大きく異なり(遅延線メモリの使用のため)、加算には64から1024マイクロ秒かかることがありました。
この機械は非常に成功したため、商業版のDEUCEがイングリッシュ・エレクトリック社によって製造・販売されました。
パイロットACEは1955年5月にシャットダウンされ、科学博物館に寄贈され、現在もそこに保存されています。
1954年に磁気ドラムが導入されることで、行列処理プログラムを実行するための制御プログラムの開発が可能になりました。イギリス航空機製造会社のJ. M. ハーンの提案を受けて、ブライアン・W・マンデイは一般解釈プログラム(GIP)を開発しました。このプログラムは、プログラムのコレクションを「ブロック」と呼び、実行するためにシンプルなコードワードだけを必要としました。各ブロックは、同時方程式の解法、行列の逆行列計算、行列の乗算など、単一のタスクを実行できました。
この概念自体に新しい点はありませんでしたが、GIPのユニークな点は、行列の境界を指定しないコードワードのシンプルさでした。境界はドラムに格納された行列から取得され、2番目と3番目の要素が境界として用いられました。行列がカードにパンチされた場合、境界は最初の2つの要素として与えられました。したがって、一度プログラムが書かれれば、プログラムを変更することなく異なるサイズの行列を自動的に実行できるようになりました。GIPは1954年に動作を開始し、その後、パイロットACEの後継機であるDEUCE用に再作成されました。
GIPで使用するブロックはM・ウッドジャーによって書かれ、配列要素を格納するためのユニークな方式、すなわち「ブロック浮動小数点」が考案されました。通常の浮動小数点を使用するには、各要素に2ワードが必要でした。そこで、配列のすべての要素に対して1つの指数を使用するという妥協がなされ、各要素には1ワードだけが必要となりました。最大の要素だけが正規化され、より小さな要素はそれに応じてスケーリングされました。小さな要素に関連する精度の損失はありましたが、要素が互いに10倍の範囲内に収まる傾向があったことを考慮すると、それほど大きな問題ではありませんでした。指数は行列とともに格納され、次元情報も含まれていました。
