2 コンピューターのモデル

この辺の話は、「Interface 2002年9月号」と「ファインマン 計算機科学」、 「数学セミナー 2003年12月号」を参考にしています。

2.1 チューリング機械

コンピューターとは、「メモリ中のデータとコンピューターの内部状態に従い、 メモリーのデータを逐次的に書き換える計算機」と定義できる。こういうもの を世界で最初に提案したのは、当時、ケンブリッジ大学の大学院生であったア ラン・チューリングということらしい。1930年代の半ばのことである。

現在、コンピューターの理論的モデルと言われるのが、図 1に示すチューリング機械である。その特徴は、次の 通りである。

図 1: チューリング機械
\includegraphics[keepaspectratio, scale=1.0]{figure/Turing_machine.eps}

これが、コンピューターそのものであると理解できる人は、よく勉強してきた 人です。書き換え可能なテープはメモリーに、オートマトンはCPUに相当しま す。テープに書かれた記号は、プログラムであったりデータであったりします。 内部状態はレジスタの値に対応します。

あるときチューリング機械が、図1の状態であったとします。テープの内容を 読むあるいは書き直す、内部状態を変える、移動することのどれかが次の動作 になります。次の動作を決めるのは、テープの内容と内部状態により一意に決 まります。要するに、テープの上を行ったり来たりして、内部状態を変えたり、 テープの内容を読み書きしている自動機械がチューリング機械です。

このような動作をするチューリング機械で、どんなことができるのしょうか?。 このような単純な機械で、ありとあらゆる計算ができるのです。今まで、学習 してきた計算は、記号の操作の繰り返しになっています。人間の脳で計算する ときも、計算と言えば記号の操作の繰り返しのはずです。要するに、チューリ ング機械ではこの種の計算が、可能なわけです。ただ、チューリング機械で計 算できないものもあります。この問題は、込み入って複雑なので、ここでは取 り扱いません。

チューリング機械の概要が分かったと思います。要するに言いたいことは、計 算するという動作は、チューリング機械で表現できると言うことです。計算す るという一見、知的な作業が、おもちゃのようなチューリング機械で表せこと は驚きです。

2.2 ノイマン型コンピューター

ここで、少しコンピューターの発明されたころの話をします。1940年頃、ベル研 にコンプレックスカリキュレータというものがあり、それはプログラムは人間 が手で入れるもので、電卓と同じようなんものです。つまり、プログラム は、それを操作する人の頭にあり、人の手がインターフェースです。これでは、 とても高速にプログラムが実行できるとはいえません。

次の進歩は、プログラムが自動で計算機に送り込まれ、それに従い実行される 機械の発明でです。ドイツのZ3とハーバード大学のマークIである。これらの 機械は、計算はリレーで行われました。プログラムは、Z3の場合はフィルムに、マー クIの場合は紙テープに書かれていました。プログラムの実行速度は、フィルムや 紙テープの読み取り速度で制限されます。これは、高速に計算する上で非常 に大きな問題でした。

1946年、砲弾の弾道計算用にENIACと名づけられた真空管式の電子計算機が開 発されました。当時としては、とてつもない速度で計算することができる機械 でしたが、大きな問題がありました。計算の内容、現在でいうプログラムを変 えるとき、それはプログラムボード呼ばれる配線板上の配線を組み替える必要 がありました。この作業は大変で、1日程度の時間が必要であったようである。 当然、次のコンピューターを作るとき、この点の改良が議論されたのは言うま でも無い。プログラムの変更が大変ですが、先の紙テープのように外部からプ ログラムを送るのではなく、本体に内蔵していた点では大きな進歩です。これ により、高速に計算ができたわけです。

次のEDVACというコンピューターの開発では、プログラムを配線ではなく、メ モリーの中に入れることが議論されました。こうすることにより、プログラム の変更が容易でかつ高速で計算するコンピューターが出来上がります。この開 発の中に、天才数学者ノイマンがおり、以降、このようにプログラムを内蔵し たものをノイマン式コンピューターと言われるようになりました。ただし、こ のアイディアを出したのがノイマンかと言われると、定かではありません。こ のコンピューターを実現するためのメモリーの開発は大変だったようです。

紆余曲折の後、プログラムと計算処理の対象であるデータは、同じメモリー上 に置かれるようになりました。このように、同じメモリー上に命令とデータが あるようなものをノイマン型コンピューターと言います。世界中のほとんどの コンピューターがこのノイマン型のコンピューターで、

の特徴をもっています。チューリング機械そのものです。

2.3 COMET IIのモデル

COMET IIは非常に簡単なコンピューターです。もちろん、チューリング機械で あるし、ノイマン型コンピューターになっています。もう一度、COMET IIのモ デルは、図2のようになっています2

それでは、チューリング機械とCOMET IIの対応を考えましょう。それは次のよ うになります。



                 書き換え可能な紙テープ メモリー
  読み書きヘッド データバス
  内部状態 レジスターの値
  オートマトンの移動 データバスの変化


このことから、COMET IIはチューリング機械であることが分かります。という ことは計算ができることになります。

さらに、ノイマン型コンピューターの最初の特徴、「1次元的に並んだメモリー があり、そこにプログラム(命令)もデータも格納される。メモリーの内容は、 自然数の番地で参照できる」もすぐに分かります。2番目の特徴「メモリーに 格納されたプログラム(命令)とデータの見かけ上の区別はない」も、チューリ ング機械であればそうなっているはずですが、これは次の章の実際のプログラ ムで確認します。

図 2: COMET IIのモデル
\includegraphics[keepaspectratio, scale=0.7]{figure/COMETII.eps}



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年8月21日


no counter