ノイマン型

提供: miniwiki
2018/8/19/ (日) 17:44時点におけるAdmin (トーク | 投稿記録)による版 (1版 をインポートしました)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先:案内検索

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

プログラム内蔵方式ディジタルコンピュータで、CPU(中心となるプロセッサ、今日では一つの部品としてまとめて考えることが多いが、オリジナルの報告書では制御装置演算装置に分けている)とアドレス付けされた記憶装置とそれらをつなぐバスを要素に構成され、命令プログラム)とデータを区別せず記憶装置に記憶する。

プログラムカウンタを構成要素に含め、またより抽象的なモデルにおける命令スケジューラの実装とみる[1]ことがある。また、今日では、演算などの命令の実行は演算装置を含む実行ユニットで行われる、というように考えられることもある。

オリジナルの報告書では、入出力について特別に扱っているが、今日の視点からではメモリマップドI/Oを考えれば特に必要ない。また、バスは、報告書では明示的に数え上げてはいないが(言及はある)、今日ではフォン・ノイマン・ボトルネックのように明確に認識される存在である。

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

この方式について、以後のコンピュータ研究開発に大きな影響を与えた1946年夏のムーアスクールで講義したのは、ノイマンではなくモークリーとエッカートであったし[2]、ノイマン型という用語は不当だとして、使わない者もいる[3]。一方で、EDSACの設計・建造者であるモーリス・ウィルクスは、ENIACが軍事機密の下にあった時に、ノイマンの草稿がその保護に入らず、多くの人がノイマンを発明者だとみなしたことは不公平な結果だったとし、ノイマンの参加以前に本質的な先進があった[4]、としながらも、数値データと命令を同じ記憶装置の中に置くのは不自然である、とか、そのために必要な遅延記憶装置は信頼性に欠ける、といった、新規技術への疑念[5]に対し、物理学者として、また数学者(計算理論)として、ノイマンが計算機の潜在能力を見抜き、信望と影響力を行使したことは重要だった[6]、とも述べている。

概要

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

また、ノイマンの思考はチューリングマシンを通してのものではなく、ゲーデル数からの直接のものではないだろうか、とする論者もいる(ノイマンは不完全性定理とも深くかかわっている)[7]

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

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

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

ノイマンの草稿の構成に近いマシンとして、EDVACの他に、IASマシンがある。

21世紀初頭におけるコンピュータのほとんどはノイマン型である。これに対しデータフローマシンなどは非ノイマン型と呼ばれる。この場合の「ノイマン型」とは、次に実行すべき命令が記憶装置に順番に並んでおり(ジャンプ命令等の直後の命令など例外以外は)それをバスを通して記憶装置から順番に次々と取り出してくる、というモデルのことを指している。データフローマシンには、何らかの方法で「必要なデータが揃っているので、今から実行できる命令」を決定できる仕掛けがある(そういった意味ではアウト・オブ・オーダー実行などは部分的に非ノイマン的であるといえる)。普通のハーバード・アーキテクチャなどを非ノイマン型とすることはまずない。さらに、再構成可能コンピューティング光コンピューティング量子コンピュータニューロコンピュータDNAコンピュータ等のより先進的な、新しい型の計算の実現法を意図して使われていると思われることもあり、「非ノイマン」という語だけでは具体的に何を意図しているかを推し量ることは不可能である。

データフロープロセッサの一例としては、NECのμPD7281(1984年、ImPP:Image Pipelined Processor)がある。画像処理などへの応用を意図されており、非ノイマン型として言及がある[8]

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

池田敏雄が1965年にコンピュータについてまとめた報告[9]では、電子計算機の最も基本的な概念はフォン・ノイマンによって確立されたプログラム内蔵方式で、(主)記憶装置にアドレスを付け命令をそれに記憶しシーケンシャルに取り出して実行すること、としている。またノイマンは「コンピュータはすべからく2進法たるべきである」と言っている、としている(この点については十進演算を併用すべき場合とのバランス感覚が必要と、少々辛い見解を池田敏雄は示している)。

参考文献

  • ノイマンによる原稿は(列車の中で書かれたと伝えられる)手書きであり、タイプライタにより清書されたものはノイマンによるチェックを経ていない。スタンフォード大の Michael D. Godfrey によりプルーフリーディングされたバージョンがメンテナンスされており http://sites.google.com/site/michaeldgodfrey/other から参照できる。このページからタイプライタ版をスキャンしたものも取得できる

脚注

  1. 曽和『コンピュータアーキテクチャ原理』1993, §3.2
  2. ウィルクスのチューリング賞授賞講演から引用:「以後の開発は,1946年にエッカートとモークリの講義した方式が正しかったことを(略)」。西村恕彦訳 モーリス V. ウィルクス「電子計算機の過去と現在」(赤攝也ほか『ACMチューリング賞講演集』 p. 234 )より
  3. パタヘネ第3版別冊 歴史展望 p. 10
  4. 『ウィルクス自伝』 p. 141
  5. 『ウィルクス自伝』では、そういった主張をした人物としてハワード・エイケンを挙げている。
  6. 『ACMチューリング賞講演集』 p. 234
  7. ノーマン・マクレイ 『フォン・ノイマンの生涯』、紀華彦『計算機科学の発想』16章「ゲーデル数とプログラム内蔵方式」
  8. “非ノイマン型データ駆動プロセッサImPPの開発 (NEC)”. ssis.or.jp. (2010年10月16日). http://www.ssis.or.jp/museum2010/exhibi704.htm . 2011閲覧. 
  9. 『電子計算機の発展過程』FUJITSU Vol. 16, No. 1, pp. 95~105(1965), 『池田記念論文集』pp. 170~182に再録

関連項目

テンプレート:CPU technologies