Manchester Mark I
Manchester Mark I(マンチェスター・マークワン)は、黎明期のコンピュータのひとつで、1949年にイギリスのマンチェスター・ビクトリア大学で製作された。Manchester Automatic Digital Machine(MADM)とも呼ばれる。1948年6月に稼働開始した Small-Scale Experimental Machine(SSEM、またの名を "Baby")をベースとして開発された。1948年8月に開発が始まり、1949年4月に稼働開始した。メルセンヌ数を探すプログラムがエラーとなることなく9時間動作したのは、1949年6月16日から17日にかけてのことである。
このマシンの稼働成功は "electronic brain"(電子頭脳)という呼称を使ってイギリスの報道機関が広く取り上げた。そういった扱いにマンチェスター大学の神経外科部門のトップが反応を示し、電子計算機は真の創造性を獲得することができるのか、という長い議論が始まることになった。
当初 Mark 1 は大学内の計算資源を提供するために開発され、研究者らにコンピュータの利用を体験させる役に立ったが、まもなくフェランティが商用版を設計する際のプロトタイプとして利用されることになった。開発は1949年末に終り、1950年末にはマシンが廃棄され、1951年2月には世界初の商用汎用電子計算機 Ferranti Mark 1 に置き換えられた。
歴史上重要な特徴として、初めて一種のインデックスレジスタをアーキテクチャ上採用し、メモリ上のワードの配列を順次アクセスするプログラムを容易に書けるようになった。このマシンを開発したことで34件の特許が成立し、設計上のアイデアはその後の商用機である IBM 701/702 や Ferranti Mark 1 に取り入れられた。設計主任はフレデリック・C・ウィリアムスとトム・キルバーンで、Mark 1 を開発し使ってみた経験から彼らはコンピュータが純粋数学よりも科学技術計算でよく使われるだろうと確信した。1951年、彼らは Mark 1 の後継機としてFPUを搭載した Meg の開発を開始する。
1936年、数学者アラン・チューリングは、その中で「チューリングマシン」を提示した論文を発表した。チューリングマシンは後に「チャーチ=チューリングのテーゼ」と呼ばれるテーゼ(それ自体は何かを証明するものではない(ので、テーゼと呼ばれている))により「計算可能」という概念と結び付けられた。1940年代には、チューリングやコンラート・ツーゼといった人々が、チューリングマシンにおける理論的なテープの具体化として計算機械のメモリにプログラムとデータの両方を格納するというアイデアを考案している。プログラム内蔵方式、特にノイマン型の発案者とされるのはその名の通りジョン・フォン・ノイマンであるが、功績をノイマン一人に帰すのは不当だとする見方も多い(詳細はノイマン型の記事を参照)。ともあれ、Manchester Mark 1 もその方式をベースとしている。
ノイマン型のコンピュータを実際に製作する際の最大の問題は、適当なメモリデバイスが入手できるかであった(当時のコンピュータ本体は一般的な真空管で作られていたが、プログラム内蔵方式でプログラムとデータ両方に必要な量のメモリは、同様にして真空管で作るには多過ぎた)。マンチェスター大学の Manchester Small-Scale Experimental Machine (SSEM) は世界初のプログラム内蔵方式のコンピュータであり、プログラム内蔵方式とウィリアムス管の実用性を示すことに成功した。ウィリアムス管は普通のブラウン管 (CRT) を使った初期の記憶装置であり、SSEMは1948年6月にプログラムを動作させることに成功している。プログラム内蔵方式以前の計算機械、例えばENIACは、パッチパネルやプラグボードで配線を変更することでプログラミングされており、ある問題用に構成されているものを、別の問題用に構成するには多大な手間が必要だった。具体的にはENIACの場合、数日かかっていたという。プログラム内蔵方式のコンピュータは他の研究者も開発しており、例えばイギリス国立物理学研究所のパイロットACE、ケンブリッジ大学のEDSAC、アメリカ陸軍のEDVACなどがある。それらはメモリとして水銀遅延線を使っているが、SSEMと Mark 1 はウィリアムス管を採用している点が異なる。
1948年8月ごろから、当初大学に現実的な計算施設を提供することを目標とした Manchester Mark 1 を開発すべく、SSEM をベースとしたプロトタイプの開発が始まった。1948年10月、イギリス政府の主任科学者ベン・ロックスパイザーがマンチェスター大学を訪問した際、Mark 1 のプロトタイプを実演してみせた。ロックスパイザーはこれに感銘を受け、すぐさまフェランティと政府との契約を結び、このマシンの商用版である Ferranti Mark 1 を開発させることにした。1948年10月26日付で彼が同社に出した手紙の中で、ロックスパイザーは同社に「我々が議論した線に沿って進める、すなわちF・C・ウィリアムス教授の指示に従って電子計算機を組み立てる」権限を与えると記している。それ以降、Mark 1 の開発はフェランティに対して商用機のベースとなる設計を与えるという追加の目的を負わされることになった。政府とフェランティの契約は1948年11月から5年間継続し、毎年約35,000ポンドの補助金が提供されたと見られる。
SSEMはフレデリック・C・ウィリアムスとトム・キルバーンとジェフ・トゥーティルのチームが設計した。Mark 1 開発のため、2人の学生D・B・G・エドワーズとG・E・トーマスがチームに加えられた。開発は1948年8月に始まった。間もなくプロジェクトにはフェランティが商用機 Ferranti Mark 1 のベースとして使える設計を提供するという目的も追加され、当初からの大学内の研究者らにコンピュータ利用を経験させることのできるマシンを構築するという目的と並行して達成することになった。最初のマシンは中間バージョンとして1949年4月に動作開始した。このバージョンはほとんど完成していたが、入出力命令がなく、磁気ドラムからウィリアムス管、紙テープから磁気ドラムへのデータ転送機能が完成していなかった。そのため、マシンを一時的に停止させ、手動でデータ転送を開始する必要があった。それらの機能は1949年10月に動作開始した最終版で組み込まれている。4,050本の真空管を使っており、消費電力は25kWである。信頼性向上のため、SSEMで使っていた普通のCRTの代わりとしてGECがウィリアムス管専用のCRTを開発し、それを利用した。
SSEMはワード長が32ビットだったが、それを40ビットに拡張している。1ワードには40ビットの数か20ビットの命令2個が格納される。主記憶は2本のウィリアムス管で、それぞれ32×40ビットワードの容量があり、この32ワードを1ページと称する。さらに二次記憶として磁気ドラムメモリがあり、中間版では32ページの容量で、最終版では128ページに拡張された。磁気ドラムの直径は300mmで、当初「磁気ホイール」と呼ばれていた。表面に磁気トラックが並んでいて、トラック毎に読み書き用ヘッドがある。各トラックは2,560ビットの容量で、2ページ(2×32×40ビット)に相当する。磁気ドラムメモリから主記憶の2つのCRTへの2ページのデータ転送にかかる時間は30ミリ秒だが、実際にはヘッドが当該ページの先頭の位置に来るまでのレイテンシが発生する。磁気ドラムへのページの書き込みは読み取りの約2倍の時間がかかる。ドラムの回転速度は本体のクロック周波数に同期しており、それによって磁気ドラムメモリを追加することが可能となっている。ドラムへのデータ記録は位相変調方式であり、今ではマンチェスタ符号と呼ばれている。
命令セットはSSEMでは7種類だったが、ハードウェアの変更に伴った部分も含めて26種類に増えている。さらに最終版では30命令となった。各ワードの10ビットの部分に命令コードが格納される。標準的な命令処理時間は1.8ミリ秒だが、乗算はオペランドのサイズに応じてもっと時間がかかる。
最大の改良点はインデックスレジスタの導入であり、現代のコンピュータでは一般的な機能である。SSEMには、アキュムレータ (A) とプログラムカウンタ (C) という2つのレジスタがウィリアムス管で実装されていた。AとCが既に割り当てられていたので、2つのインデックスレジスタを保持するウィリアムス管はBラインと呼ばれ、インデックスレジスタは B と呼ばれるようになった。インデックスレジスタの内容は命令を修飾するのに使われ、メモリ上の配列を順次アクセスする際に便利である。Mark 1 には4番目のウィリアムス管 (M) があり、乗算命令の被乗数と乗数を保持するのに使う。
各命令は20ビットであり、そのうち10ビットは命令コードで、最大1,024 (210) 種類の命令を表現できる。ただし実際に実装した命令は当初は26種類で、磁気ドラムと主記憶CRT間のデータ転送をプログラムから制御できるようにした時点で30種類に増えている。中間版ではプログラムをキースイッチ群で入力し、出力デバイスとして使われているCRTに結果をドットとダッシュで表示した。出力方式はSSEMと Mark 1 で共通である。しかし1949年10月に完成した最終版では、紙テープのリーダおよびパンチ機を備えたテレプリンタが入出力装置として追加されている。
数学者アラン・チューリングは1948年9月、マンチェスター大学計算機研究所の副所長職を提供され、ITA2のテレタイプ用5ビットコードを基に底を32とする符号化方式を考案し、紙テープでプログラムやデータを供給し、処理結果を紙テープに記録することができるようにした。ITA2の符号体系は、5ビット (25) の32種類の2進数それぞれに1つの文字を割り当てている。例えば "10010" は "D"、"10001" は "Z" などとなる。チューリングはこの符号化規格を若干変更して、00000 は "no effect"、01000 は "linefeed" を意味することにし、テレタイプ端末ではそれらを "/" と "@" という文字に対応させた。2進数のゼロがスラッシュで表されるので、プログラムやデータを文字で表現すると "///////////////" といった文字列が先頭に置かれることが多い。チューリングがこのような文字を割り当てた理由として、初期のユーザーの1人はマンチェスターが雨が多いことで有名であることから、無意識にそれを表現したのではないかと示唆している。
Mark 1 のワード長は40ビットであるため、テレプリンタの5ビットキャラクタ8文字で1ワードを表現できる。例えば、2進数で 10001 10010 10100 01001 10001 11001 01010 10110 となるワードは、紙テープ上では ZDSLZWRF と表現される。記憶装置内の任意のワードの内容をテレプリンタのキーボードから設定でき、処理結果はテレプリンタに出力される。マシン内部は2進数だが、十進から2進、2進から十進への変換をそれぞれ入力と出力で行うことができた。
Mark 1 にはアセンブリ言語が定義されなかった。プログラムは2進数形式で書き、転送する必要があり、各40ビットワードを8文字の5ビットキャラクタに符号化して入力する。プログラマは仕事を容易にするために、ITA2符号体系の修正版を暗記する必要があった。データはプログラムの制御下で紙テープ装置から読み書きされた。Mark 1 には割り込みが存在しない。プログラムはリードまたはライト操作を開始した後も実行を続け、別の入出力命令に遭遇すると、以前の入出力の完了を待ち合わせるようになっていた。
Mark 1 にはオペレーティングシステムがない。システムソフトウェアと呼べるものはいくつかの基本的な入出力ルーチンしかない。SSEMと同様、記憶装置上は最下位の桁が左に来るように格納されており、通常の数学での表現とは逆である。例えば1を5ビットで表すと、"00001" ではなく "10000" となる。負数は2の補数で表現されており、これは現代のコンピュータと同じである。この表現方式では最上位ビットがその数の符号を表しており、正数はそれが0となり、負数ではそれが1になる。したがって、40ビットワードで表せる数の範囲は  −239 から +239 − 1(-549,755,813,888 から +549,755,813,887)となる。
最初の実用的プログラムが動作したのは1949年4月の早い時期で、メルセンヌ数を探すプログラムであった。1949年6月の16日から17日にかけてエラーを起こさずに9時間連続で動作した。アルゴリズムはマンチェスター大学の数学科学科長マックス・ニューマンが考案し、キルバーンとトゥーティルがプログラムを書いた。チューリングはさらに最適化したプログラムを書き、Mersenne Express(メルセンヌ急行)と名付けた。
1949年から1950年にかけて、他にも数学的な問題を解くのに使われており、リーマン予想の研究などにも使われた。
トゥーティルは1949年8月、マンチェスター大学からフェランティに出向して Ferranti Mark 1 の設計に従事し、同社で4カ月を過ごした。Manchester Mark 1 は1950年末までに分解され廃棄され、数カ月後には世界初の商用汎用コンピュータ Ferranti Mark 1 の1号機が納入された。
1946年から1949年まで、SSEMと Manchester Mark 1 の設計チームの人数はおおよそ4人だった。その間に34件の特許を取得しており、特許権者は軍需省かその後継であるイギリス国立研究開発公社 (NRDC) である。1949年7月、IBMは旅費を提供してウィリアムスをアメリカに招き、Mark 1 の設計について聞き出した。その後同社はウィリアムス管など Mark 1 に関連する特許のいくつかのライセンスを取得し、701 および 702 の設計に活用した。Manchester Mark 1 関連で最重要な特許はインデックスレジスタについてのもので、ウィリアムス、キルバーン、トゥーティル、ニューマンの連名になっている。
キルバーンとウィリアムスは、コンピュータは純粋数学よりも科学技術計算で使うべきだと考え、浮動小数点演算装置を備えた新しいマシンの開発を開始した。開発は1951年に始まった。1954年5月に稼働開始したマシンは Meg または "megacycle machine" と呼ばれた。Mark Iよりも小さく単純で数値演算は高速だった。フェランティは、Meg のウィリアムス管を磁気コアメモリに置換したマシンを作り、Ferranti Mercury として販売した。
SSEMと Manchester Mark 1 の稼働成功は "electronic brain"(電子頭脳)という呼称を使ってイギリスの報道機関が広く取り上げた。この言葉は1946年10月31日、ルイス・マウントバッテンがイギリス・ラジオ技師協会での講演で使ったもので、生まれたばかりのコンピュータが将来どう発展するかを推測して述べたものである。最初のコンピュータと認識されるものが登場したという1949年の報道は一種の熱狂を引き起こし、開発者が予想もしなかった反応を引き起こした。マンチェスター大学神経外科の教授ジェフリー・ジェファーソンはイングランド王立外科医師会からリスターメダルを授与され、1949年6月9日に受賞記念講演をする際に "The Mind of Mechanical Man"(機械人間の心)と題して Manchester Mark 1 の実態を暴露した。その講演で次のように述べている。
タイムズ紙は翌日ジェファーソンの講演について報道し、「王立協会の上品な部屋がこれらの新たなフェローを収納するためにガレージに改造される日は決して来ないだろう」というジェファーソンの予測を付記した。これは、チームが開発を継続するために王立協会から資金援助を獲得したニューマンへのあからさまな軽蔑と解釈された。彼はタイムズ紙に反論を書き、Mark 1 と人間の脳の構造には類似性があることを主張した。ニューマンの記事はチューリングとのインタビューも含んでおり、チューリングの言として以下の文章が掲載されていた。