真空管式コンピュータ

アイオワ州立大学のアタナソフ&ベリー・コンピュータのレプリカ
1946年に製作されたENIAC。17,468本の真空管を使用した。
真空管式コンピュータ（しんくうかんしきコンピュータ、vacuum tube computer）または第一世代コンピュータ（だいいちせだいコンピュータ、first-generation computer）とは、論理回路に真空管を使用したコンピュータである。
多くは後に登場したトランジスタ・コンピュータ（第二世代コンピュータ）に置き換えられたが、真空管式コンピュータは1960年代に入ってからも製造され続けた。これらのコンピュータは、ほとんどが一点ものだった。

**開発の歴史**
クロスカップル真空管アンプによりパルス列が生成されることが、1918年にウィリアム・エクルズとF・W・ジョーダンによって発見された。この回路がフリップフロップの基礎となり、2つの状態を持つ回路が電子式デジタルコンピュータの基本要素となった。
アタナソフ&ベリー・コンピュータは、1939年に最初にデモンストレーションされたプロトタイプで、現在では世界初の真空管式コンピュータとして記録されている。しかし、線型方程式系を解くことができるだけで、汎用的なコンピュータではなく、信頼性もあまり高くなかった。
ブレッチリー・パークのColossus
第二次世界大戦中、イギリスでは、Colossusなどの特殊用途の真空管式コンピュータを使用して、ドイツと日本の暗号を解読していた。これらのシステムによって収集された軍事情報は、連合国の戦争遂行に不可欠なものだった。1台のColossusには1,600から2,400本の真空管が使用されていた。この機械の存在は秘密にされており、1970年代まで一般の人々はその用途を知らなかった。
アメリカでは、第二次世界大戦末期にENIACの開発が開始され、1945年の戦争終了後に完成した。開発のきっかけとなったのは大砲の射表の計算だったが、ENIACの最初の用途の一つには、水爆開発に関連した計算もあった。ENIACは電子的に保存されたプログラムではなく、プラグボードとスイッチでプログラムされていた。戦後、ENIACの設計を公開した一連の講演会や、ジョン・フォン・ノイマンによるENIACの後継機の予見可能性についての報告書「EDVACに関する報告書の第一草稿」が広く配布され、戦後の真空管式コンピュータの設計に大きな影響を与えた。
1951年に世界初の商業用真空管式コンピュータ・Ferranti Mark 1が開発された。最初の量産型コンピュータは、1953年のIBM 650だった。

**設計**
真空管は大量の電気を必要とした。1946年のENIACには17,000本以上の真空管が使用されており、平均して2日に1度は真空管の故障（場所を特定するのに15分かかる）に見舞われていた。ENIACの稼働時には150キロワットの電力が消費され、そのうち80キロワットが加熱管に、45キロワットが直流電源に、20キロワットが換気用送風機に、5キロワットがパンチカードの補助装置に使用されていた。
テキサスA&M大学のIBM 650
コンピュータ内にある数千本の真空管のうち、どれか1本でも故障するとエラーになるため、真空管の信頼性が非常に重要視されていた。コンピュータ用に、標準的な受信管よりも高い基準の材料を使用し、検査と試験が行われた特別な品質の真空管が製作された。
真空管式コンピュータの構築には、大きく分けて2つのタイプの論理回路が使用された。非同期型（直接DC結合型）と同期型（ダイナミックパルス型）である。非同期は、ロジックゲート間とゲート内の接続に抵抗のみを使用していた。論理レベルは、大きく分離された2つの電圧で表現されていた。同期型では、各段がトランスやコンデンサなどのパルスネットワークで結合されている。各論理素子にはクロックパルスが印加される。論理状態は、各クロック間隔の間のパルスの有無で表される。非同期設計は高速に動作する可能性があったが、入力から安定した出力までの論理パスの伝搬時間が異なるため、論理の競合から保護するための回路が必要だった。同期システムではこの問題を回避できたが、クロック信号を分配するための回路が必要となった。直接結合型論理ステージは、部品値のドリフトや小さなリーク電流に対して多少敏感だった、動作が離散的であるため、ドリフトによる誤動作に対してはかなりの余裕があった。同期式の例としては、MITのWhirlwindがある。IASマシン（ILLIACなど）では、非同期の直接結合型論理ステージが使用されていた。
真空管式コンピュータは主に、スイッチングおよび増幅素子として三極管やpentodesを使用した。特別に設計されたゲート用真空管は、類似した特性を持つ2つの制御グリッドを備えており、2入力ANDゲートを直接実装することができた。I/Oデバイスを駆動したり、ラッチや保持レジスタの設計を簡略化するためにサイラトロンが使用されることもあった。多くの場合、真空管式コンピュータは、AND・OR論理機能を実現するために固体素子ダイオードを多用し、ステージ間の信号を増幅したり、フリップフロップ、カウンタ、レジスタなどの要素を構築するためにのみ真空管を使用していた。固体素子ダイオードにより、マシン全体のサイズと消費電力が削減された。

**メモリ技術**
EDSACの水銀遅延線
初期のシステムでは、最終的に磁気コアメモリに落ち着くまでに、様々なメモリ技術が使用されていた。
1942年のアタナソフ&ベリー・コンピュータは、数値を2進数として回転する機械式ドラムに格納し、1回転ごとにこの「動的な」メモリを更新するための特別な回路を備えていた。戦時中のENIACは20個の数字を記憶することができたが、使用されていた真空管レジスタは高価すぎて、それ以上の数字を記憶できるような機械を構築することができなかった。もっと経済的なメモリが開発されるまでは、プログラム内蔵方式は実現不可能だった。
IBM 701のウィリアムス管（コンピュータ歴史博物館所蔵）
モーリス・ウィルクスは1947年にEDSACを開発したが、これは水銀遅延線メモリを搭載しており、それぞれ17ビットの32ワードを記憶することができた。遅延線メモリは本質的に直列に構成されていたため、マシンロジックも同様にビット直列になっていた。水銀遅延線メモリは、プレス・エッカートがEDVACやUNIVAC Iで使用していたもので、エッカートとジョン・モークリーは1953年に遅延線メモリの特許を取得した。遅延線のビットは、一定の速度で移動する媒体中の音波として記憶される。1951年のUNIVAC Iは、7つのメモリユニットを使用しており、それぞれが18列の水銀遅延線を含み、120ビットが格納できた。これにより、平均アクセス時間300マイクロ秒で、1000ワード（1ワードは12キャラクタ）のメモリが提供された。
ウィリアムス管は、世界初の真のランダムアクセス可能な記憶装置（ランダムアクセスメモリ）だった。ウィリアムス管は、陰極線管(CRT)上にドットのグリッドを表示し、各ドット上に静電気の電荷を発生させる。各ドットの位置の電荷は、ディスプレイのすぐ前にある薄い金属シートによって読み取られる。1946年にフレデリック・カーランド・ウィリアムスとトム・キルバーンがウィリアムス管の特許を申請した。ウィリアムス管は水銀遅延線よりもはるかに高速だったが、信頼性に問題があった。UNIVAC 1103は、それぞれ1024ビットの容量を持つ36個のウィリアムス管を使用し、全体で1024ワード（1ワードは36ビット）のランダムアクセスメモリを実現した。IBM 701のウィリアムス管メモリのアクセス時間は30マイクロ秒だった。
磁気ドラムメモリは、1932年にオーストリアのグスタフ・タウシェクによって発明された。磁気ドラムメモリは、強磁性の記録材料でコーティングされた、高速回転する大きな金属製のシリンダーで構成されていた。読み書きを行う一列の磁気ヘッドがドラムに付属していて、各ヘッドに対応してトラックが存在した。ドラムコントローラは適切なヘッドを選択し、ドラムを回転させてデータを読み書きした。IBM 650の磁気ドラムメモリは、1000から4000ワード（1ワードは10桁）で、平均アクセス時間は2.5ミリ秒だった。
18×24ビットの磁気コアメモリ。右下は大きさの比較のために置かれたクォーター硬貨
磁気コアメモリは、1951年にアン・ワングが特許を取得した。フェライトコアに情報を記録し、中に通した電線で情報を読み書きした。各コアは1ビットを記録する。コアは2つの異なる方法（時計回りまたは反時計回り）で磁化することができ、コアに格納されているビットは、そのコアの磁化方向に応じて0か1かを表す。電線は、個々のコアを1または0に設定し、選択された電線を通して適切な電流パルスを送ることで磁化を変更することができる。磁気コアメモリは、それまでよりもはるかに高い信頼性に加え、ランダムアクセスと高速化を提供した。磁気コアメモリは、登場してすぐにコンピュータで使用されるようになった。MIT/IBMのWhirlwindでは、当初のウィリアムス管を磁気コアメモリに置き換えて、1024ワード（1ワードは16ビット）のメモリが提供された。同様に、UNIVAC 1103も1956年に1103Aにアップグレードされ、ウィリアムス管に代わってコアメモリが搭載された。1103で使用されたコアメモリのアクセス時間は10マイクロ秒だった。

**脚注**

**関連項目**
 計算機の歴史- 真空管式コンピュータ一覧- プログラム内蔵方式