EDVACに関する報告書の第一草稿

EDVACに関する報告書の第一草稿（エドバックにかんするほうこくしょのだいいちそうこう、英語: First Draft of a Report on the EDVAC）は、ジョン・フォン・ノイマンによって書かれた、電子計算機EDVACプロジェクトに関する全101ページの未完成の文書である。単に第一草稿（First Draft）とも呼ばれる。ENIACプロジェクトのセキュリティ担当者であるハーマン・ゴールドスタインによって1945年6月30日に配布された。この文書には、プログラム内蔵方式の概念を使用したコンピュータの論理設計についての世界初の公開された記述を含んでおり、ここからプログラム内蔵方式のコンピュータがノイマン型と呼ばれるようになった。 フォン・ノイマンは、ニューメキシコ州ロスアラモスまで電車で通勤中に報告書を手書きで書き、フィラデルフィアに送った。ゴールドスタインは、その報告書をタイプし複製した。報告書にタイプされた日付は6月30日であるが、その5日前の6月25日には、第一草案の写し24部がEDVACプロジェクトと密接に関係している人々に配布された。その報告書の内容に関する関心の高さから、その写しが世界中に出回った。ケンブリッジ大学のモーリス・ウィルクスは、1946年夏のムーア・スクール・レクチャー（英語版）のために米国へ渡航するという決断の原動力として、報告書の内容に対する興奮を挙げた。 フォン・ノイマンは、「超高速自動デジタルコンピューティングシステム」(very high speed automatic digital computing system)の詳細設計について記述している。彼はそれを次の6つの主要な装置に細分している。 CA: 中央演算部(central arithmetic part) CC: 中央制御部(central control part) M: 記憶装置(memory) I: 入力装置(input) O: 出力装置(output) R: （低速度の）外部記憶装置((slow) external memory) - パンチカード、紙テープ、磁気ワイヤ、鋼鉄テープなど CAは、加算、減算、乗算、除算、平方根を実行する。対数や三角関数などのその他の数学的演算は、ルックアップテーブルと内挿を使用して行われ、場合によっては四次函数を使用する。彼は、乗算と除算は対数表でも可能であると述べたが、数表を十分に小さく保つためには内挿が必要となり、それには（おそらくより低い精度で良いが）乗算が必要となる。 数値は二進表記で表す。彼は27桁の2進数があれば十分であると推定したが（小数点以下8桁の精度をもたらす）、符号ビットのために数を表すビットは30ビットとし、命令と数字を分けるためのビットを加えて1ワードは32ビットとして、これを「マイナーサイクル」(minor cycle)と呼んだ。減算を簡単にするために、2の補数演算を使用した。乗算と除算のために、彼は2進小数点を符号ビットの後に置くことを提案した。それは全ての数が-1と1の間にあるように扱われることを意味する。 リレーよりも真空管を使用するべきであると主張した。真空管が1マイクロ秒で動作する能力があるのに対し、リレーは10ミリ秒でしか動作しないからである。 フォン・ノイマンは、コンピュータをできるだけ単純にして、演算を重複させることでパフォーマンスを向上させる試みは回避することを提案している（5.6節）。算術演算は一度に1つの二進数のみ行われる。2桁の二進数の加算は1マイクロ秒かかると推定しているため、30ビットの乗算には約302マイクロ秒、つまり約1ミリ秒かかることになる。 フォン・ノイマンの設計は、神経細胞をモデルとした、彼が「E素子」(E element)と呼ぶもので構築されているが、これは1つか2つの真空管を使って構築できるデジタル素子である。現代の用語では、最も単純なE素子は、2入力のANDゲートで1つの入力を反転（抑制入力）したものである。より多くの入力を有するE素子は関連するしきい値を有し、（唯一の）抑制入力がパルス化されない限り、正の入力信号の数がしきい値以上となったときに出力を生成する。彼は、より多くの入力を持つE素子は最も単純なバージョンから構築できると述べているが、必要な真空管の数が減るので、それらを真空管回路として直接構築することを提案している。 より複雑な機能ブロックは、これらのE素子から構築される。彼は、これらのE素子を使って、加算、減算、乗算、除算、平方根、および2状態メモリブロックと制御回路用の回路を構築する方法を示している。彼はブール論理の用語を使っていない。 回路は、真空管発振器（または水晶振動子）により生成されたマスターシステムクロックと同期していなければならない。同期設計では時間遅延を考慮する必要があるため、彼の論理図には単位時間遅延を示すための矢印記号が含まれている。彼は、電気パルスは1マイクロ秒で300メートル移動するので、はるかに高いクロック速度、例えば毎秒108サイクル（100メガヘルツ）までは、ワイヤ長は問題にならないだろうと指摘している。 エラーの検出と修正の必要性については、言及はされているが、詳しくは述べられていない。 第一草稿で発表され、後にノイマン型アーキテクチャと命名されることになる重要な設計コンセプトは、数値（データ）と命令（指示）の両方を含む単一の記憶装置（メモリ）である。 この装置にはかなりの記憶装置が必要である。この記憶装置の様々な部分で、性質や目的が多少異なる機能を実行する必要があるように見えるが、それでも記憶装置全体を1つの器官として扱うのは魅力的である。上に列挙された様々な機能のために可能な限り交換可能な部分でさえ。（2.5節） CCが受信する命令はMから来る。すなわち、数値が格納されているのと同じ場所から来る。（14.0節） フォン・ノイマンは、常微分方程式、偏微分方程式、ソート、確率実験など、いくつかのクラスの数学的問題に基づいて必要なメモリ量を見積もった。これらのうち、二次元と時間の偏微分方程式は最も多くのメモリを必要とし、三次元と時間はそれまで利用可能だった技術を使ってできることを超えている。彼は、メモリがシステムの最大の細分化であると結論を下し、そして設計目標として8,192個のマイナーサイクル（ワード）を提案し、2,048個のマイナーサイクルは依然として有用であるとした。彼は、プログラムを保存するには数百個のマイナーサイクルで十分であろうと推定している。 彼は2種類の高速記憶装置、遅延線とアイコノスコープを提案した。各マイナーサイクルは1つの単位として扱われる（ワードアドレッシング、12.8節）。命令は、メモリ内の異なる点に切り替えるための特別な命令（ジャンプ命令）を用いて順次実行される。 遅延線の二進数は遅延線を通過して先頭にフィードバックされる。遅延線内のデータにアクセスするには、所望のデータが再び現れるのを待つ間に時間的な不利益を強いる。これらのタイミング問題を分析した後、彼は遅延線を256個の遅延線で構成されるDLAに組織化することを提案している。メモリアクセスでは、最初にDLA（8ビット）が選択され、次にDLA（5ビット）内のマイナーサイクルが選択され、合計13アドレスビットになる。 アイコノスコープのメモリについては、彼は、真空管表面の各スキャンポイントがコンデンサであること、およびコンデンサが1ビットを保存できることを認識している。非常に高精度のスキャンが必要とされ、メモリは1秒程度の短い時間しか持続しないため、定期的に再コピー（メモリリフレッシュ（英語版））する必要がある。 14.1節でフォン・ノイマンは命令(order)のフォーマットを提案し、それをコード(code)と呼んでいる。命令の種類には、基本的な算術演算、CAとMの間のマイナーサイクルの移動（現代の単語で言えばロードとストア）、前の演算の符号に基づいて2つの数のうちの1つを選択する命令、入出力、および他の場所のメモリ位置へのCCの移動（ジャンプ）がある。彼は、それぞれの命令タイプに必要なビット数を決定し、次の語がオペランドである即時命令(immediate order)を提案し、将来アドレッシング可能なメモリを将来可能にするためにスペアビットを命令フォーマットに残すことが望ましいと説明している。マイナーサイクルで複数の命令を保存する可能性について説明しているが、そのアプローチにはあまり熱心ではない。命令の一覧表は提示されているが、第一草稿には入力と出力の命令に関する説明は含まれていない。 暫定報告書を出版物として（法的意味で）扱うことは、2つの理由からEDVAC設計チームの派閥間の辛辣な批判の根拠となった。第一に、これが公の開示となり、EDVACが特許を取得することを妨げとなること。第二に、プログラム内蔵方式の概念はペンシルベニア大学ムーア・スクール（電気工学部）での会議の場で発展してきたもので、フォン・ノイマンのそこでの役割は単なるコンサルタントであり、第一草稿は議論された概念をフォン・ノイマンが形式論理の言語に翻訳したものにすぎないとEDVAC設計チームの一部が主張したことである。フォン・ノイマンとゴールドスタインが他の人を第一草稿の作者として挙げていないため、フォン・ノイマン単独の業績とみなされるようになった（マタイ効果やスティグラーの法則も参照）。