ノイマン型

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内, 検索

ノイマン型(-がた、von Neumann architecture)は、計算機の基本的な構成法のひとつである。今日では基本的なコンピュータ・アーキテクチャのひとつとされるが、そもそもコンピュータの要件とされることもありこのあたりの定義は循環的である。

プログラム内蔵方式デジタルコンピュータで、CPU(今日ではCPUにまとめて考えられるが、オリジナルの報告書では制御装置演算装置に分けている)とアドレス付けされた記憶装置とそれらをつなぐバスを要素に構成され、命令プログラム)とデータを区別せず記憶装置に記憶する。プログラムカウンタを構成要素に含め、またより抽象的なモデルにおける命令スケジューラの実装とみる[1]ことがある。オリジナルの報告書では、入出力について特別に扱っているが、今日の視点からではメモリマップドI/Oを考えれば特に必要ない。また、バスは、報告書では明示的に数え上げてはいないが(言及はある)、こんにちではフォン・ノイマン・ボトルネックのように明確に認識される存在である。

ノイマン型の名は、最初にこれを広めたEDVACに関する報告書 w:First Draft of a Report on the EDVAC の著者がジョン・フォン・ノイマン(ひとり)になっていることに由来する。誰がなんのためにそうしたかについては諸説ある。このアイディア、特にプログラム内蔵方式のアイディアは、ジョン・エッカートジョン・モークリーによるENIACのプロジェクト中の検討にその芽があった。ノイマンは(理論的な、とされる)助言役として加わり、執筆者はノイマンであった。誰にどのような功績があったかは諸説あり、ノイマン型の用語を使わない者もいる[2]

目次

[編集] 概要

チューリングマシンを、可能な範囲で実現・具体化(実装)するもので、記憶装置を仮に無限だとすれば、あるいは必要な計算に対し十分であれば、計算模型として(「ノイマンマシン」と呼ばれることがある)みた場合チューリング完全とみなせることになる。また、二進法の採用も、要件に含めることがある(二進法と、二進法の基本的な演算(論理演算)の組み合わせで、あらゆるデジタル処理が可能である)。

プログラムのチューリング完全性は、命令の書き換えをしなくても、インタプリタの原理により可能とわかったり、また一般に自己書き換えコードは特殊な技法とされるため、システムソフトウェアを除いて、特に一般ユーザの通常のプログラミングでは、命令とデータは区別するのが一般的である。また、組み込みシステムなどの専用コンピュータなどで、プログラムを入れ替える必要がないなど、命令とデータを区別するハーバード・アーキテクチャもある。しかし、汎用コンピュータにおけるプログラムの入れ換えなどは、ノイマン型に依っており、システムソフトウェアや性能のため(インタプリタは遅い)などで、依然として重要な原理であることに変わりない。

また性能の点では、バスが細いとそれがボトルネックになってコンピュータ全体の性能がそれで決まってしまう。これをフォン・ノイマン・ボトルネックと言う。

EDVACの開発は遅れ、世界初のプログラム内蔵方式の全電子式コンピュータはSSEM、同じく実用的な実現はEDSACとなった。これらのマシンは「報告書」に影響されたものとされる。EDVACの遅れは、エッカートとモークリーの離脱が大きな理由とされており、離脱の理由は諸説ある。ともあれ、「ノイマンの法則『いつ聞かれても完成は半年後』」などと言われながら、1949年8月に大学から軍の施設に運ばれ、1951年に稼動をはじめた。

21世紀初頭におけるコンピュータのほとんどはノイマン型である。これに対し、データフローマシンなどは非ノイマン型と呼ばれる。この場合、「次に実行すべき命令」をバスを通して記憶装置から次々と取り出してくる、というモデルのことを指しており、ふつうハーバード・アーキテクチャなどは非ノイマン型としない。 たとえばNECから、1984年非ノイマン型の画像処理用LSIとしてμPD7281(ImPP:Image Pipelined Processor)が発表されている[3]

また、次のような要素なども、ノイマン型には含まないが、ノイマン型のモディファイの範囲内とみなし、ふつうノイマン型でないとはしない。

[編集] 各構成要素と実行(参考)

ノイマン型の構成(参考)

ノイマン型アーキテクチャの計算機は5つの部分からなる。演算論理装置(ALU)、制御装置メモリ入出力と、これらを接続する情報経路である。

  1. コンピュータの計算能力とはチューリングマシンの計算可能性として算術演算を含むあらゆる計算が可能であるが、多用する算術演算はプログラミングで実現するのではなく専用演算器を用いて高速化する目的でALUは設けられた。ALUも当初は加算器だけだったが論理素子の集積度の向上に伴って四則演算すべてを実行するものになり、整数型から浮動小数点演算器(FPU)を含むものに発展し、更にベクトル演算装置に発展している。
  2. 制御装置はチューリングマシンのヘッドと有限状態制御部に当たるコンピュータの心臓部である。一般的なCPUに相当する。
  3. メモリはチューリングマシンの無限長のテープ記憶域に相当するが、アドレス付きのランダムアクセス可能な有限長の記憶域にされた点が異なる。無矛盾なプログラムとは有限ステップで作られ、有限時間内に停止するので、実用上、十分な長さがあれば、メモリが有限長であることは問題でない。チューリングマシンの1つずつシーケンシャルアクセルするテープ記憶に対して、ランダムアクセスによって実効性能を向上させる目的で実装された。
  4. 入出力装置は計算を開始する準備のためにプログラムとデータを外部からメモリに入力し、計算結果を利用するためにメモリから外部にデータを出力する。チューリングマシンは数理論理学上の証明のためだけのモデルなので、プログラムとデータの初期状態が用意されたところから始まり、計算が終了するまでに必要な最小限の要素を含むだけである。実用上のコンピュータは計算の準備と結果の利用まで含めなければならないためノイマン型では入出力装置を追加している。入出力装置からプログラムをメモリに配置して実行する形態をストアードプログラムと呼ぶ。チューリングマシンのあらゆる計算可能性を実現するには「あらゆる計算プログラム」を用意しておく必要がある。用途別のコンピュータプログラムを次々にメモリに入れ替えて実行させ、汎用コンピュータを実現する。
  5. 情報経路はコンピュータの各部分の間でデータの受け渡しを行うための通信線である。上図では個々のデバイスを専用の情報経路で接続しているが、このような構造は高価になるため、多くのコンピュータでは複数のデバイスが情報経路を共有する形で接続されており、そのように共有される情報経路はバスと呼ばれる。入出力装置とメモリとの情報交換は制御装置(CPU)で行うこともできるが、それではCPUの利用効率が悪くなるため、CPUを介さずにデータの移動を直接行う機能をバスに持たせ、計算効率を上げる方式(DMA)も一般的である。

[編集] 実行

ノイマン型アーキテクチャの計算機は以下のようなステップを繰り返すことで計算を行う。

  1. プログラムカウンタのさすアドレスから次の命令を読み込む
  2. 命令長さの分だけプログラムカウンタを増やす
  3. 制御装置で命令をデコードする。制御装置は計算機の他の部分に対して命令を出したり、繰り返しを行うためにプログラムカウンタの値を替えたり、条件分岐のためにALUの状態によってプログラムカウンタの値を替えたりすることができる。
  4. ステップ1へ戻る

[編集] Further reading

  • ノイマンによる原稿は(列車の中で書かれたと伝えられる)手書きであり、タイプライタにより清書されたものはノイマンによるチェックを経ていない。スタンフォード大の Michael D. Godfrey によりプルーフリーディングされたバージョンがメンテナンスされており http://sites.google.com/site/michaeldgodfrey/other から参照できる。このページからタイプライタ版をスキャンしたものも取得できる
  • 城憲三・牧之内三郎『計算機械』(共立出版、1953年)日本で最初のコンピュータの本である。ノイマンの報告書の一部を紹介、と『計算機屋かく戦えり』にあるが、Goldstineらと共著のPlanning and Coding of the Problems for an Electronic Computing Instrumentのほうである可能性もある

[編集] 脚注

  1. ^ 曽和『コンピュータアーキテクチャ原理』1993, §3.2
  2. ^ パタヘネ第3版別冊 歴史展望 p. 10
  3. ^ “非ノイマン型データ駆動プロセッサImPPの開発 (NEC)”. ssis.or.jp. (2010年10月16日). http://www.ssis.or.jp/museum2010/exhibi704.htm 2011年3月13日閲覧。 

個人用ツール
名前空間
変種
操作
案内
ヘルプ
ツールボックス
他の言語