ノイマン型(ノイマンがた、英: von Neumann architecture)、またはフォンノイマン型アーキテクチャ[1]は、コンピュータの基本的な構成法のひとつである。今では基本的なコンピュータ・アーキテクチャのひとつとされるが、そもそもコンピュータの要件とされることもあり、このあたりの定義は循環的である。
概要
構成
プログラム内蔵方式のディジタルコンピュータで、CPUとアドレス付けされた記憶装置とそれらをつなぐバスを要素に構成され、命令(プログラム)とデータを区別せず記憶装置に記憶する。
命名
アイデアをまとめた報告書(『EDVACに関する報告書の第一草稿』、以下単に草稿とする)がジョン・フォン・ノイマンによって書かれたことに由来する。これを、アイデアを草稿としてまとめたノイマンに名誉を与えすぎ、実際にマシンを開発したエッカートとモークリーを軽視している、との見方があるとして、ノイマン型という用語を使わない者もいる[2]。
モーリス・ウィルクスの残したところによれば、自伝では、ENIACに関連する情報が軍機の下にあるのが普通だったのに、草稿がその保護に入らず、多くの人がノイマンを発明者だとみなしたことは不公平な結果だったとし、ノイマンの参加以前に本質的な先進があった[3]とする。一方、チューリング賞講演では、数値データと命令を同じ記憶装置の中に置くのは不自然である、とか、そのために必要な遅延記憶装置は信頼性に欠ける、といった新規技術への疑念[注 1]に対し、物理学者として、また数学者(計算理論)として、ノイマンが計算機の潜在能力を見抜き、信望と影響力を行使したことは重要だった、とも述べている[注 2][4]。
理論
記憶装置を仮に、必要であれば必要なだけ無制限に追加できるものとすれば、計算模型として(「ノイマンマシン」と呼ばれることがある)見た場合チューリング完全とみなせることになる。また、二進法の採用も、要件に含めることがある(二進法と、二進法の基本的な演算(論理演算)の組み合わせで、あらゆるディジタル処理が可能である)。ノイマン型コンピュータを計算模型として定義したものとしてRAMマシン(ランダムアクセスマシン)がある。
また、ノイマンの思考はチューリングマシンを通してのものではなく、ゲーデル数からの直接のものではないだろうか、とする論者もいる(ノイマンは不完全性定理とも深くかかわっている)[5]。
プログラムのチューリング完全性は、命令の書き換えをしなくても、インタプリタの原理により可能とわかったり、また一般に自己書き換えコードは特殊な技法とされるため、システムソフトウェアを除いて、特に一般ユーザの通常のプログラミングでは、命令とデータは区別するのが一般的である。特に近年ではマルウェア対策として、命令を置いたメモリは書き換え禁止に設定されることがある。また、組み込みシステムなどの専用コンピュータなどで、プログラムを入れ替える必要がないなど、命令とデータを区別するハーバード・アーキテクチャ[注 3]もある。しかし、汎用コンピュータにおけるプログラムの入れ換えなどは、ノイマン型に依っており、システムソフトウェアや性能のため(インタプリタは遅い)などで、依然として重要な原理であることに変わりない。
また性能の点では、バスが細いとそれがボトルネックになってコンピュータ全体の性能がそれで決まってしまう。これをフォン・ノイマン・ボトルネックと言う。
経緯と現状
過去
EDVACの開発は遅れ、世界初のプログラム内蔵方式の全電子式コンピュータはSSEM、同じく実用的な実現はEDSACとなった。これらのマシンは「報告書」に影響されたものとされる。EDVACの遅れは、エッカートとモークリーの離脱が大きな理由とされており、離脱の理由は諸説ある。ともあれ、「ノイマンの法則『いつ聞かれても完成は半年後』」などと言われながら、1949年8月に大学から軍の施設に運ばれ、1951年に稼動をはじめた。
ノイマンの草稿の構成に近いマシンとして、EDVACの他に、IASマシンがある。
池田敏雄が1965年にコンピュータについてまとめた報告[6]では、電子計算機の最も基本的な概念はフォン・ノイマンによって確立されたプログラム内蔵方式で、(主)記憶装置にアドレスを付け命令をそれに記憶しシーケンシャルに取り出して実行すること、としている。またノイマンは「コンピュータはすべからく2進法たるべきである」と言っている、としている(この点については十進演算を併用すべき場合とのバランス感覚が必要と、少々辛い見解を池田敏雄は示している)。
現状
21世紀初頭におけるコンピュータのほとんどはノイマン型である。これに対しデータフローマシンなどは非ノイマン型と呼ばれる。この場合の「ノイマン型」とは、次に実行すべき命令が記憶装置に順番に並んでおり(ジャンプ命令等の直後の命令など例外以外は)それをバスを通して記憶装置から順番に次々と取り出してくる、というモデルのことを指している。データフローマシンには、何らかの方法で「必要なデータが揃っているので、今から実行できる命令」を決定できる仕掛けがある(そういった意味ではアウト・オブ・オーダー実行などは部分的に非ノイマン的であるといえる)。普通のハーバード・アーキテクチャなどを非ノイマン型とすることはまずない。さらに、再構成可能コンピューティング、光コンピューティング、量子コンピュータ、ニューロコンピュータ、DNAコンピュータ等のより先進的な、新しい型の計算の実現法を意図して使われていると思われることもあり、「非ノイマン」という語だけでは具体的に何を意図しているかを推し量ることは不可能である。
データフロープロセッサの一例としては、NECのμPD7281(1984年、ImPP:Image Pipelined Processor)[7][8]がある。画像処理などへの応用を意図されており、非ノイマン型として言及がある[9]。後に、μPD7281を通常のメモリに接続するためのLSIとしてμPD9305[7]が製品化されている。
また、次のような要素なども、ノイマン型には含まないが、ノイマン型のモディファイの範囲内とみなし、ふつうノイマン型でないとはしない。
脚注
参考文献
関連項目
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.