ノイマン型

ノイマン型（ノイマンがた、）、またはフォンノイマン型アーキテクチャは、コンピュータの基本的な構成法のひとつである。今では基本的なコンピュータ・アーキテクチャのひとつとされるが、そもそもコンピュータの要件とされることもあり、このあたりの定義は循環的である。名前の由来はジョン・フォン・ノイマン。

構成 
プログラム内蔵方式のディジタルコンピュータで、CPUとアドレス付けされた記憶装置とそれらをつなぐバスを要素に構成され、命令（プログラム）とデータを区別せず記憶装置に記憶する。

中心となるプロセッサは、今では一つの部品としてまとめて考えることが多いが、オリジナルの報告書では制御装置となっている。ノイマンの草稿がその保護に入らず、多くの人がノイマンを発明者だとみなしたことは不公平な結果だったとし、ノイマンの参加以前に本質的な先進があったとしながらも、「数値データと命令を同じ記憶装置の中に置くのは不自然である」「そのために必要な遅延記憶装置は信頼性に欠ける」といった新規技術への疑念に対し「物理学者として、また数学者（計算理論）として、ノイマンが計算機の潜在能力を見抜き、信望と影響力を行使したことはマタイ効果として重要だった」とも述べている。

概要

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

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

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

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

経緯と現状

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

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

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

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

データフロープロセッサの一例としては、NECのμPD7281(1984年、ImPP:Image Pipelined Processor)がある。画像処理などへの応用を意図されており、非ノイマン型として言及がある。後に、μPD7281を通常のメモリに接続するためのLSIとしてμPD9305が製品化されている。

また、次のような要素なども、ノイマン型には含まないが、ノイマン型のモディファイの範囲内とみなし、ふつうノイマン型でないとはしない。
 キャッシュ、主記憶と補助記憶のような、記憶階層
 外部から直接、命令の実行順を変える割り込み
 チャネル・コントローラ・DMA・バスマスタリングなどによる、CPUを介さない、周辺機器や記憶装置の間の直接入出力

脚注

注釈

出典

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

関連項目 
 プログラム内蔵方式
 フォン・ノイマン・ボトルネック

フリンの分類
コンピュータの仕組み
コンピュータアーキテクチャ
数学に関する記事
ジョン・フォン・ノイマン
エポニム