アムダール氏が11月10日に亡くなられていたらしい。
IBM System/360 の設計主任を務めた方。
IBM の機械は、科学計算用、事務処理用、などとラインナップが分かれていた。
これは当時のコンピューターとしてはごく自然なこと。
科学計算用なら速度が重視されるし、事務処理用なら正確さが重視された。
今でもコンピューターの計算は正確だ、と思っている人がいるけど、正確なんかじゃない。
科学計算なら、宇宙を表現するような大きな数値も扱えないといけない。その一方で、科学の世界には「有効桁数」という概念があり、ある程度の桁数が保証できれば、計算が正確である必要はない。
#むしろ、話は「正確とは何か」という哲学的領域になる。
機械的にただ計算をすることを正確だとは、決して言わない。
正確さは不要で、速度だけが重視されるので、コンピューターが得意な2進数で計算を行う。
その一方で、事務処理用では国家予算を扱えるほどの大きな値も、1セント単位の細かな値も、どちらも正確に扱える必要がある。
話が複雑化するので詳細は省くが、コンピューターは「1セント」を正確に表現できない。
小数点以下を表現する「2進数」は、小数点以下を表現する「10進数」に正確に変換できないためだ。
#1セントは、0.01ドル。
そのため、事務処理機では、コンピューターが苦手な10進数で計算を行うように作ってある。
コンピューターは2進数で計算している、と現代では言われるが、そうではない時代もあったのだ。
とはいえ、コンピューターの苦手な方法で計算をしているので、当然速度は遅い。
でも、事務処理用では、小数点以下の10進数も正確に計算できることのほうが大切だった。
System/360 (1964) は、こうした「専用機」ではなく、汎用の計算機を目指して設計された。
浮動小数点演算も、BCD 演算も両方とも使えるように設計されていた。
それまでのコンピューターは、1バイトが 6bit のものも多かった。英語の文章を記述するには、これで十分だからだ。
しかし、System/360 は1バイトを 8bit とした。
System/360 自体は 32bit を1ワードとして動作し、最大4ワード(128bit)までを一度に計算できた。
System/360 は大ヒットし、それ以降のコンピューターを規定してしまった。
今の PC も、浮動小数点と BCD の演算を両方とも行えるように設計され、8bit を1バイトとしているものが多い。
その意味では、アムダール氏の考案したコンピューターの子孫だ。
どんな世界でも、新しい世界を切り拓くのには予想外の困難が待ち受ける。
この時代、まだコンピューターはハードウェアを直接プログラムして計算を行うものだった。
でも、「なんにでも使える」 System/360 は、非常に幅広い要求にこたえるため、システムを扱いやすくするためのソフトウェアを必要とした。
後の世にいう「OS」、オペレーティング・システムの誕生だ。
アムダール氏とは直接関係ないが、System/360 用の OS である、OS/360 の開発は困難を極めた。
これまでは、コンピューターとはハードウェアを作るものであり、ソフトはおまけのようなもの、簡単に作れるものだと考えられていた。
OS/360 の開発は従来考えられていたものよりも、はるかに困難だった。
ここで初めて、コンピューターにとって一番重要なものは、ハードウェアではなくソフトウェアだ、という認識が生まれる。
OS/360 の開発困難は、後に原因などが整理され、書籍「人月の神話」として刊行される。
これ、今でも役立つ話が多い。
プログラマ向けの話ではなくて、プロジェクトマネージャー向けの話だし、もっと言えばコンピューター業界に限らず、あらゆるプロジェクトにおいて参考になる。
一言でいえば、「知的生産活動は、工場で製品を作るような人月計算で見積もれるものではない」ということを解説している。
なんだ、そんなことわかっているよ、経験しているよ、という人も多いかもしれないけど、当時も「なんとなく肌で感じていた」という人が多くても、理論だってなぜそうなるのかを解説している本はなかった。
いや、今でも少ない。
そして、この本では「じゃぁ、どうやって見積もればよいか」ということもちゃんと解説している。
プロジェクトが見積もり通りに進まずにデスマーチ進行になった、という経験を持っている人は、この本を読むべきだ。
ちなみに、デスマーチプロジェクトから「自分の身を守る」方法を知りたい人は、「デスマーチ」も併せて読むこと。
「デスマーチ」は人月の神話を読んでいることを前提に書かれているのだけど、もう一歩話を踏み込んで、失敗しそうなプロジェクトを立て直す方法と、「巻き込まれて自分がひどい目に合わないように」するための方法を書いている。
さて、話を戻す。
アムダール氏は、System/360 を設計した後にさらに良いコンピューターの提言を IBM に対して行ったのだけど、この提案は却下された。
当時の IBM は、コンピューターを作りたかったわけではない。
IBM はビジネスに役立つサービスを提供する会社で、コンピューターはそのための道具に過ぎなかった。
この考え方は、非常に大切だ。今だって重要だと思うけど、多くのコンピューター会社はコンピューターそのものを目的としている。
それで何をするか、というのはユーザーの責任で、コンピューター会社は知ったこっちゃない。
ともかく、IBM では、コンピューターは道具に過ぎなかった。
コンピューターが安定していることを重視したし、そのためには新製品を矢継ぎ早に出す必要はなかった。
アムダールは IBM をやめ、アムダール社を作る(1970)。
そして、System/360 互換でもっと良いコンピューターを作り始める。互換機ビジネスだ。
そのころ、日本では国策として IBM 互換機を作ろうとしていた。
正確にいえば、コンピューターを作る技術を持った会社6社を、政府主導で3グループに分け、どのようなコンピューターを作るか政府が決めた。
1グループは、独自アーキテクチャのもの。
1グループは、IBM 互換機。
1グループは、IBM に対抗しうる会社の互換機。
IBM 互換機グループは、富士通と日立が割り振られた。
互換機とはいえ、IBM の回路を真似してしまうと IBM との訴訟になる可能性がある。
同じソフトが動くようにしつつ、独自設計をする必要があった。
富士通は、アムダール社と提携する。
アムダール氏は System/360 を設計し、回路が何を目的としているか熟知していた。
そこで、アムダール社では、IBM の回路とは違う形で、全く同じ目的を実現するように設計を行っていた。
そのアムダール社と提携するのであれば、IBM との訴訟問題はおこらない。
後にアムダール社は富士通の子会社になるが、そのずっと前に、アムダールは自ら興した会社を去っている。
アムダール氏は、「アムダールの法則」の提唱者としても知られている(1967年提唱)。
プロセッサの数を2倍に増やしても、性能は2倍にはならない、とする法則。
今なら誰もが当たり前に知っているが、昔は計算装置が増えれば、増えた分だけ性能は増加する、と考えられていた。
これを、論理的に「そうじゃない」と示したのがアムダールの功績。
一時期は過大に評価され、マルチプロセッサ化は全く無駄だ、という主張も聞かれていた。
後にジャック・デニスが超並列を研究し、マルチプロセッサ環境で速度を上げるための方法論を示している(1990年代)。
これを受け、最近ではマルチプロセッサが流行している。
もちろんアムダールの法則は今でも有効だが、性能を上げるための方法論がかなり進み、十分マルチプロセッサを有効活用できるようにはなったようだ。
なんかとりとめのない話になった。
アムダール氏は、名前は知っていても、それほど詳しいわけではないし、どうしても話が散漫としてしまう。
コンピューター業界にとって重要人物の一人ではあった、と認識している。
氏のご冥福をお祈りいたします。
同じテーマの日記(最近の一覧)
関連ページ
デイビッド・パターソン 誕生日(1947)【日記 15/11/16】
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |