アポロと計算機

片山泰男(Yasuo Katayama)
2006年12月24日

戻る∧


≪=BACK TOP∧ NEXT=≫

我々は、1969 年夏にアポロ計画 11 号によって月面に到着した。 ケネディ宇宙センターのライブラリーから Apollo 6-17, Gemini 6-8, Skylab 1-4 の当時のプレスリリースのファイル。

我々が記憶する1969 年の貧弱な白黒画面の TV 中継は、我々の経験した最遠の地からの人間による実況中継であった。 我々は月に立った、しかし、それだけで多くの人がそこにすぐにもできると思っていた月面の恒久基地は、できなかった。 21 世紀の始めに太陽系を広範囲に住処にする生活も始まるという SF 作家の予測は、実現しなかった。 そしていま、我々は月への復帰にさえ、恐らく 50 年間もかかりそうだという現実を知るのである。 月の基地化は、それほど難しかったのだろうか。何が主要な障害だったのだろうか。 それより先に、月にいく必要がどうしてあったのだろうか。 宇宙開発とは一体、何だったのだろうか。そしてそれは、今何なのか。 私は歴史家ではないから、一般人としてただの思考を積み重ねることだけで、たぶん答えのない問に対して考えることにしよう。


≪=BACK TOP∧ NEXT=≫

アポロ計画は、その不吉なアポロ 13 号も奇跡的に悲惨な結果を出さなかった。まだ重大な犠牲者を出さなかった。 しかし、月にゆくアポロ計画は、17 号で打ち切られ、その後のスペースシャトルによる宇宙航行の複数回使用に変わった。

シャトルの周航は、アポロ 11 号から 18 年後の、チャレンジャー号の出発後すぐの爆発 (1986)と、 さらにそれから 17 年後のコロンビア号の帰着時の爆発 (2003)) という 2 回の大事故を経験した。 スペースシャトル計画 それによって、シャトル 5 機のうち 2 機を失い、我々にはエンデバー号、ディスカバリー号、アトランティス号しか残されていない。 それよりも、多くの訓練された宇宙飛行士の人命を失なった。

それによって 1992 年から予定されていたフリーダムという名で開始され米国だけでは巨大な資金を調達できず、 日欧の資金もあてにした日欧米の共同の地球を回る軌道上の実験室、(国際宇宙ステーション ISS) の建設が遅れても、 大きな宇宙開発への上方向修正は行われていない。宇宙開発は、いまそれほど魅力を失った事業になったのだろうか。

おそらく、軌道上に大きな基地を作るのと、月面の基地とは、困難さの度合が違い技術的な差が安全性にも影響することだろう。 そのために地球周回軌道上の基地を設営することが先だったのだろう。ただそれよりも、軌道に上るための方法としての、 国家的事業であったスペースシャトルの就航自体に、規模の巨大さの点、貨物と乗員の同時運航の点に問題があったことが 指摘されている。つまり、貨物は安全性を低めた無人ロケットでよいし、乗員を宇宙に上げるのには小人数、2, 3 人程度の乗員の宇宙船でよかった。 巨大な計画は、単に巨大であるための慣性が大きく、計画の修正が効かないことが最も大きな問題なのである。

原子炉の開発における同様な問題を引いて、シャトル問題の詳細な指摘を "Infinite in all directions" (邦訳、"多様化世界" 鎮目恭夫訳、みすず書房) によって 1988 年に行ったのは、太陽系をすっぽりと覆う球状世界、ダイソンスフィアで有名な学者、 フリーマン・ダイソンであった。我々は 1986 年の大事故の後、この重要な意見を受けてもシステムを改めず、 破滅的な事故をその 17 年後に再現してしまった。

シャトル計画全体を否定はしない。そしてシャトルによって 1990 年に打ち上げられ、1993 年末に補正鏡が取り付けられた ハッブル宇宙望遠鏡 HST は、地上の望遠鏡の 10 倍 〜 100 倍の分解能がもたらした画像によって天文学に大きな貢献をしたと思う。


≪=BACK TOP∧ NEXT=≫

米国の J.F.ケネディが 60 年代の始めに 10 年以内に月に立つと宣言したのは、ソ連の宇宙開発競争に遅れを取った米国の 名誉挽回のためかもしれないが、もちろん、これが名誉のための無駄づかいだったというつもりはない。60 年代に肥大化し たベトナム戦争費用よりも宇宙開発は、未来への投資であることは明らかである。冷戦の象徴である核による ICBM (大陸間 弾道弾) は、60年代初期にすでに冷戦のなかで配備されたから、宇宙開発のロケット技術の軍事転用も終わっていたと思う。 同様にソ連も米国も宇宙開発が国家規模の技術開発のなかで重要と認識していたと思う。

その後の開発の非継続からみて、米国は、宇宙開発によって宇宙の領土を実際に拡大したわけではないことは、明らかである。 いまさら責めても始まらないが、米国の宇宙開発は、生臭い領土拡張の意図の表れの面が多少はあった。宇宙の領土は国家に よって分断されるべきでないという国際条約があると思うが、米国は、他国の旗も用意して持っていったようだが、 月に人類旗ではなく星条旗を真っ先に立てたのである。

結局、何のための宇宙開発だったのだろうか、宇宙開発は、人類全体の領土の拡大、辺境(フロンティア)開発であると同時に、 宇宙開発によって得られる技術と知識は、近い将来の国家と人類にとって最重要と考えられたのである。それがなぜ、現在では それほど重要でないのか。いや少なくとも、なぜそれの重要性を我々が意識しなくなったか。そこには、当時見えていた技術 と知識が、現在考えるそれとは、かなり違うものであったことがある。


≪=BACK TOP∧ NEXT=≫

その例として挙げるのは、月着陸船をコントロールしていたコンピュータは、何だったかを考えればよい。

電卓に使われるために開発された 4 bit マシン、4004 はあっただろうか。その後の 8 ビットマシン 8008, RCA の cosmac, Fair child の F8, scamp, 6800, 6502 から、東芝の TLC12 という 12bit マシン、そして、16ビットマシン 8080, 68000,8088,80186 になっていく流れのあと、80286, 386, 486, Pentium, PentiumII, PentiumIII, Pentium 4 そして 競争相手の Athlon が現れ現在の PC の姿が産まれてきた。それに伴って CPU の構造が変化してきた。bit 数の変化は、 同時に扱う数値の幅の問題であり、加減算についてはこの bit 数に比例する程度の(乗除算についてはさらに大きな) 複雑さが要求される。

CPU の構造の変化、技術追加については、長年ほぼ独占的な位置を占めた Intel社の公開技術資料を読むことができる。 そこでは、複数命令の同時実行、実行時の命令の順序の変更、ブランチの投機的予測などの投入などがあった。 MMX、SSE、SSE2、SSE3、SSE4 という、マルチメディア対応の並列画素処理、同時に 4 画素、8 画素 etc に対して 同じ命令を実行する SIMD (Single Intruction Multi Data) 構造の継続的追加がどれほどのものであったかと推測できる。 それらは、多少の性能向上と引き換えに、CPU を複雑にしてチップの面積を増やしたと思うが、CPU 能力はやはり クロック速度比より大きく上がった感じがしない、それには外部メモリの速度向上がほとんど伴わなかったという 原因もあるが、その程度の貢献でしかないように見える。

素の 32 bit マシンを作るのには、現在の Pentium 4 の何分の 1 のシリコン面積でよいか考えてみるとそれは大きな 違いになる。32 bit x 32 bit = 64 bit の MAC 命令付きの 32 bit CPU の複雑さは、現実の数億トランジスタではなく、 数 10 万で十分である。この大きな比率は、1 次と 2 次キャッシュを現在の CPU が取り込んでいることを考慮に入れて いないこともあるが、面積と複雑さが年々増加が許容されるパラメタであったためもあると推測される。


≪=BACK TOP∧ NEXT=≫

私は、1975 年に 8008、77 年に cosmac を使ってマイクロコンピュータを動作させていた。アポロ 11 号の 69 年は、 私より 6 年も前である。少なくとも当時、アポロ計画に搭載できるマイクロコンピュータは、どこにも存在しなかったのではないか。

しかも、世界中、どこにもないものを国家の特別な任務のためといって無理矢理、LSI 製造することもできないと思われる。 そしてそれが、12 bit マシンだったという話をきいたこともあるが。LSI は大規模な製造施設を必要とする。大規模な需要 があって初めて成立する事業である。LSI のない時代に LSI を作るのは、どれほどの無駄な資金がかかるかを考えたら、 それがあり得ないことに気がつく。

SSI から MSI、LSI という IC の規模を増大させる流れの中で一体化されたモノリシックのマイクロ CPU でなく組み立てた CPU が使われた可能性がある。学生であった私が MSI を組み合わせて cosmac 相当の CPU を製作したのは、 76 年である。 その 7 年前にそれがされた可能性はある。

当時の米国の最大の重要な任務をもった宇宙船が仮に 12 bit とか、たったそれだけの能力で制御されていたかもしれないことは、 当時の計算環境を知らない人には想像できないことであろう。マイクロコンピュータは、能力も本当にマイクロだった。ミニコンは それよりずっとずっと処理をしたし、当時あった大型は、当然のことながら、さらに速かった。しかし、世界にそれしかないとき、 資金を掛けても許される宇宙開発でも小さな宇宙船にはそれを使うしかない。重量は、宇宙へ持ち上げるのに激しいコストになるからである。


≪=BACK TOP∧ NEXT=≫

8 bit や 12 bit マシンが 1 MHz〜数 MHz のクロックで動くとき、テクニックを駆使したアセンブラプログラミングによっても、 クロックが 1 MHzでは、毎秒 100万回の動作であり、それは現在の CPU のクロックの速度の 1000分の1 である。加減算と論理命令 しかない 8 bit マシンは、同時に 8 bit だけを扱い、これで現在の CPU がもつ 32 bit 数を加減算するためには、 最小 4 回の動作を必要とする。

乗算は、さらにひどく、普通の方法では、4 x 4 の 16 倍以上かかる。さらに浮動小数には加算は最初に桁合わせと桁数に比例する減算、 最後に正規化が伴う。浮動小数乗除算は、仮数部の乗除算と正規化、指数部の加減算がいる。 浮動小数演算は、ソフトウエアライブラリとして用意されるしかなく、結局、毎秒 100 万回のクロックに対して浮動小数点演算は、 毎秒千回程度しかできなかった。1000倍に遅くなったのである。それは、最初の真空管式コンピュータといわれた ENIAC と同程度である。 毎秒 100 万回の動作のできるシーケンサは、貴重であるから、マイクロコンピュータを制御用であると理解すれば多少評価が違う かもしれないが、多くの人にとってそれはコンピュータが個人のものになる時代の始まりであった。

現在の普通の PC に使われる CPU は 32 bit 又は 64 bit マシンであり、内部動作クロックは数 GHz である。 浮動小数点演算も数 GFLOPS ある。それは、毎秒数十億回の動作と計算速度である。現在の PC のソフトを書くひとは、 当時のマイクロコンピュータの数千倍から浮動小数点演算では 100 万倍の贅沢をしていると言ってもよい。

このことの意味は、それを職業として体験した多くの人に余りにも明白である。システムにたった数倍の速度差があるとき、 同じことをしようとすることは、天地雲泥の差、どころではなく、天国と地獄の違いになる。 まだ数倍の違いは、プログラマーがもてる知識と技術によってその差を吸収しようとするが、それを超える差のときは諦めるしかない。 どうあがいても達成できないことに挑戦するのは、まさに無駄だからである。


≪=BACK TOP∧ NEXT=≫

この 30 年近く、継続して CPU の機能と速度向上は続いた。ところが、2006 年現在、数年間も CPU の速度向上は、 ほとんど停滞しているように見える。0.13u から 0.09u にかけての世代でリーク電流の問題が浮上し、LSI の速度向上が 期待どうりでないことが示され、これを切り抜けるために CPU は、Dual core という並列化に向かった。

CPU が 2 つあれば、もちろん最大で 2 倍までの速度向上が望める。しかし、物事は複雑にして解決するものではないということ も技術の歴史である。単純で高速な CPU が一番よいことは、一言でいうと、昔の並列マシンを操作した誰もが知ることと思う。 我々は、速度が足りないから並列化に頼るだけであって、それが十分なら並列化などしないものなのである。

私は、1988 年から計算機の使える環境にいた。ワークステーションの時代が始まったときに DEC のミニコン VAX 11-78X を最初 1 億円以上で買った会社上層部は、その半年から 1 年後に、技術者の意見に押されて買った 3 台の Sun 3 ワークステーションが 10 倍の値段した VAX 以上の働きをしたことに驚いたと思う。

ワークステーションは、Unix 系の OS で GCT 時代に Sun3(3MIPS), Sony News(1MIPS), Stella(4 CPU), Titan(2CPU), GCL では、DEC Alpha を使ったが、コンピュータは常に処理速度が関心事だった。C 言語は、それらのマシンに依存せず共通に使えた。 言語の変化、環境の変化は、技術の継続性を絶ってしまう。C 言語は寿命が長かったし、十分単純でコンパクトに記述できた。 そのころのプログラムを今も私は動かすことができる。そのころのメールさえ、私は再読することができる。そのようなことが、 このとき初めて可能になった。ここまでいうことができるかもしれない。コンピュータとディジタル記録は、永遠性を確保した。 そして、そのような環境は 2 度と失いたくない。

ワークステーションは LAN によって結ばれ、rlogin, rsh で互いの間を行き来することができるコンピュータ環境である。 十分オフィスの環境の温度で動作する本体は、脇机の下に入るほどの大きさで手近に机のそばにおくことができる。 共通の CPU を使うのではなくそれぞれの人のそれぞれの仕事に合わせて使うことができるという、 人間側の都合にかなり近付いたものになってきていた。Unix の X10 または X11 による X-window 系、つまり ビットマップディスプレイ、キーボードとマウスの環境は、そのころから使われ始めた。


≪=BACK TOP∧ NEXT=≫

C 言語はいまも素晴しく、移植性が高い。それがそのままで高速ならいいが、Stella, Titan ベクトルマシン用には、アセンブラ による最適化が最終的な速度を上げる方法だった。それは、人の行う限界を超えるような複雑な計算を人間に要求するから、 特別に手をかけるプログラムでしかそのようなことはできない。しかも、アセンブラには移植性がない。マシンが変わるだけで 使えないものになる。

また、複数の CPU をもつマシンは、Unix のプロセス単位に使用が割り当てられ、単独のプログラムが動作する単独のプロセスは、 1 CPU しか使用できなかった。複数の CPU は、複数の人の複数のタスクに対応するものであった。 これは、基本的に結果を数倍高速に出す能力はなく、 ネットワークで結んだ複数台のマシンそれがワークステーションの基本的な考え方だが、その複数台に対応するだけである。

GCT のとき、近くで超並列の Transputer を使って H.261 のコーデックを動かすグループがあった。 20 数個の Transputer を動かすプログラムは、並列化 C 言語のサポートのもとでもパイプラインの構成、データの流れを意識した 注意深い設計が必要であった。H.261 は、CIF という画像サイズ 352x288 に対応した TV 電話用の MC-DCT という基本構造は 変わらないが、現在からみると単純な画像符号化の仕組である。現在なら、PC 上のプログラムが何の専用ハードウエアもなしに MPEG-2 (=H.262) のリアルタイムエンコード/デコードを行うことができ、Full HDTV の画像のデコードも不可能でない。 並列化と単純な高速化は、どちらが望まれるかは明白である。

現在の複数の CPU のスレッドも同じ仕事をやはり意識的に並列化するように書く必要がある。それに対応したアプリは 確かに高速になるが、そうでないプログラムは高速にならないという仕組は人間側の努力を期待した高速化であり、 それの全く不要な CPU の高速化の素晴らしさとは、違う種類のものである。だから、並列化など最後の手段であり、 それがどうしても必要な場合以外いらないのである。 (並列化しか方法のない大きな問題を解くことが仕事の方には、 このことは決して当たらないことであるが。)


≪=BACK TOP∧ NEXT=≫

月着陸船 (Lunar Lander) を制御したのは人間の頭脳と目とが関係する制御能力だけだったに違いない。 Lunar Landing がその後のゲームマシンの面白い線画のゲーム(現在のビットマップディスプレイでなく、 2 つの DA変換器出力をオシロの X-Y 表示に入力したような細い線のベクトル表示だった。) になったことも思い出すが、その月着陸船は、奇跡的な人間の能力に頼って着陸を果たしたのである。 そういう時代のなかでは、大事なことがどういうことであるかが、現在と全くといっていいほど違うのである。 そこでは、そのときは、そういうものしか見えないし、考えられないということがある。 その後の数十年のコンピュータの速度向上は、機器の自動制御を可能にするが、 そのことは当時、予想はしても、想像できないことだった。

機械化できる算術、論理思考は、余りにも容易に複雑な計算を最終的な判断に使うことができる。 考え方をプログラムすると、それは、すぐさまコンパイルし、実行をさせて、以前のアルゴリズムと比較し 全く同一の動作をするかどうかによって論理の誤りのないことをテストをすることができる。その目的が、 アルゴリズムの改良とか動作高速化である場合、殆んどの作業が思い付きと動作確認だけによって終わる。

そのような方法は、自らの論理的な内容のチェックよりも、はるかに容易にプログラムの蓄積を可能にする。 なぜなら、人間は、論理的思考とか、さらに算術的思考には全く向かないからである。アルゴリズム、 論理的なプログラムは、それが必要な場合にそれ自身を利用してそれを構築するのである。

どうして、そのような技術が誰にでも使えるようになったか。それは、それが誰にでも必要であることが 明らかだからである。確かな機械を作成するには、論理的、算術的能力のない不確かな人間に任せるわけにいかない。 必要とされるプログラム、論理的機械が作成できる能力だけに依存し、要求される規模は、膨大になっていくのに、 人間側には早急な進化が期待できない。そのため、人間が機械に共同作業をさせる。論理機械を作成するのに代理、 補助をする論理機械を必要とすることは、道具を作るのに道具を使うという昔からの現象である。 我々は、ブルドーザを手では作らない。工具も手では作らない。工具はより原始的な工具から作るのである。 ブルドーザは、筋肉の延長、コンピュータは、脳の延長であって、それらの間には何も変わったことはない。


≪=BACK TOP∧ NEXT=≫

そのような重要な技術、計算機の小型化と速度向上の進展と変遷があった。ソフトウエアの技術において も、当時は想像もできない量の計算を我々はいま使っているのであるが、それはあまり大した違いでは ないのかもしれない。60年代に C 言語はスタートしているし、それ以前からもそして今も健在ときく FORTRAN、COBOL は存在した。コンパイラとアセンブラの技術は、当時以前から十分な理解と進展があった。

アポロ 11 号の時代になくていまある技術とは、はっきりいえるものは計算環境である。 人の活動仕事のほとんどが計算機上でなされ、書類はディジタル記録される。 思考は計算機の助けを借りて確認をする。ほとんどのアルゴリズムはそうして作られたものであると私は思う。 そのような技術を宇宙開発は、招来させなかった。宇宙開発なしに、それは開発されたのである。

なぜ月にいったか、そしてなぜ、恒久基地が必要と考えたか。それは、第 1 に真空の環境で生きる生活 をするための準備であろう。どうしてそのような必要があるのか。まだ差し迫った宇宙戦争の危機がある わけではないのだが、すでに地球には、人類がひしめいている。人類がとにかく多い。それが原因で、 資源の分配の争いが生じる。つまり、地球の資源が限られているからかもしれない。太平洋戦争は、石油 というエネルギー問題から起きたという考え方がある。石油が豊富なら戦争など起きないのかもしれない。 石油依存のエネルギー問題が解決するだけで、戦争の悲劇を絶つこともできるかもしれないのである。 (私はそれに詳しくないが、それは月の上にある 3He かもしれない。)

人類が多すぎることは、生物の自己調節機能によって、人類が戦争をして人口を減らす隠れた理由かも知れないし、 それらすべてを解決するには、よりよい天地を求めて、地球を出て行くのがよいのは確かである。 しかし、いま、エネルギー問題の解決ができず、地上を出て行くエネルギーさえ得られないという矛盾した事態 のようにも見える。核分裂は、もはや汚いことが明確で、将来に渡って使うには犠牲が多すぎる。 核融合は、いつまで待っても成功しない。そのことは、我々の技術と宇宙生活への悲観的な見方の根底にある事実である。 そのようなとき、新天地を目指した冒険に時間を費さず、保守的な生活に戻るほうを選ぶのである。

月は、地球と違ってすでに核が冷めてしまって、地殻の動きに伴う地震がほとんどないという事実は、 アポロ計画で知られた事実である。アポロ計画が月に残して来た地震計は、アポロ月着陸船の出発の 振動以外の振動をほとんど検知しなかった。月は、黒板よりも黒い。月の土は、不思議にも正面に光を返す。 満月は半月の数 10 倍も明るい。そのような科学的な知識は、何の役にたつのだろうかと不思議である。 しかし、何かをするとき、そのもののことに少しでも間違った知識に基づくと、大きなしっぺ返しを受けるという経験がある。


≪=BACK TOP∧ NEXT=≫

月面望遠鏡の計画も進行している。地上の望遠鏡と比べて100倍の分解能を達成した HST も幾多の困難を経験したが、 それ以上に望ましい環境、月に巨大望遠鏡を設置することのほうがずっとよいのである。 地震がない月の上では天体望遠鏡の絶好の設置場所である。 月面望遠鏡は、安定できるから、姿勢制御に依存したふわふわしたハッブル宇宙望遠鏡(HST) より、 遠方をみる天体観測に適している。アポロ宇宙船が残した排気以外大気はほとんどない、おそらく HST の軌道上よりも良好な真空の環境である。

月の裏側は、地球からの雑音が遮断できるから、電波天文台に適している。太陽系の他の部分と同程度の 雑音環境にまで下がるのである。それと比べると、地上で電波天文台を運営するのは、地獄ではないだろうか。 地球から人々を惑星に送り込むには、その前に、研究と観測のための基地の運営が必須である。 月は、その足掛かりとして適した位置にある。

しかし、 月は、γ線源としては、太陽より明るい という。 これ は、γ線での地球の像である。 もし、一般的に宇宙の観測に適した場所はどこかと考えれば、太陽からの地球の影に常にいるラグランジェ点 L2 だろう。 地球の大気が光ること以外は恒星間の明るさという、地球の近くで最も暗い環境を提供するだろう。

我々は、ほんの隣りの恒星、α-ケンタウリという最も近い恒星、(太陽地球間の 20 万倍の距離)に行く ための技術をいま持たない。核融合があるではないかと考えるかもしれないが、その近い将来の核融合 推進を使っても、数百年もかかる旅行は、存在しない冷凍睡眠が必要だけではない。数百年も先の政治、 言語、文化の変化を考えると、それは危険以外の何ものでもない。恒星間の旅行を普通に行うには数光年 の距離に数年で行ける、光速に近い速度、物質をすべてエネルギーに変えるような技術が必要であり、 それはまだ、空想の世界にしかない。

隣りの恒星に行くのはまだ手始めである。銀河系のなかには多くの、数1000億の恒星があり、恒星の大多数 には惑星が存在し、地球のような惑星が存在すると思われている。そのような銀河系内の惑星への移民は、 光速の近くに達する速度を得たとしても数百年かかる旅行になるため、帰ったときの言語文化の同じ問題がでる。 そのためであるが、それなりの用意と準備、覚悟が必要であろう。

銀河系の大きさ、直径 10 万光年を踏破するには、少なくとも 10 万年が必要だが、人類は知能を得てから 10 万年を経過していない。人類史上重要などのようなことがその間に起きても不思議ではない。その間に きっと予想も出来ないことが起きるだろう。人類が人類でないものに変わる、ついに肉体を放棄し、 機械と共存し、戦争し最後に融合するとか、考えられる遠い未来は、危険に満ちているだろう。