ノイマン型

出典: Wikipedio


ノイマン型(-がた、von Neumann architecture)は、コンピュータの基本構造であり、論理的にはチューリングマシンをRAM(ランダムアクセスマシン)にして、更に実用性のために工学的な入出力装置を付加した構造になっている。チューリングマシンからの本来のプログラム内蔵方式に入出力装置を付加してストアドプログラムを実現するコンピュータ・アーキテクチャの一つである。主記憶装置(メモリ)上に命令データを区別することなく格納し、データを命令として解釈実行する方式である。もともとのノイマンの提案では命令を書き換えながら実行する構想であったが、後にデータだけを書き換えてデータ値によって分岐する命令で等価なプログラムになることが証明され、命令とデータは区別されるようになった。(命令とデータを区別して配置するアーキテクチャについてはハーバード・アーキテクチャを参照)。

EDVAC開発に加わっていた著名な数学者のジョン・フォン・ノイマンが数学的な論理付けを行い、自分の名義で発表したため、今日では、ノイマンの功績として広く知られている。 しかし、この方式は、ジョン・モークリージョン・エッカートEDVAC設計時に発想したもので、フォン・ノイマンは数学的基礎を与えた。考案者も高名な数学者の名前を利用してこのアーキテクチャーを広めようとしたと言われている。

また、このアーキテクチャの最初のコンピュータは、EDVACではなくEDSACである。これは、EDVACの開発が非常に遅れたため、EDSACに先を越されたからである。


アーキテクチャ

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

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

メモリに命令を格納するので、命令を実行するにはアクセス速度の遅いメモリに必ず触れなければならず、これがコンピュータのパフォーマンスを低下させている最大の原因であるとする、ノイマンズ・ボトルネックという考えも生まれた。

実行

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

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

関連項目

Template:CPU technologiesTemplate:Link FA

ar:هيكلة فون نيومان ast:Arquiteutura von Neumann be:Архітэктура фон Нэймана bs:Von Neumannova arhitektura ca:Arquitectura de von Neumann cs:Von Neumannova architektura de:Von-Neumann-Architektur el:Αρχιτεκτονική φον Νόιμαν en:Von Neumann architecture es:Arquitectura de von Neumann fi:Von Neumannin arkkitehtuuri fr:Architecture de von Neumann he:ארכיטקטורת פון נוימן hr:Von Neumannova arhitektura hu:Neumann-elvek id:Arsitektur von Neumann is:Von Neumann arkitektúr it:Architettura di von Neumann ko:폰 노이만 구조 lv:Fon Neimana arhitektūra nl:Von Neumann-cyclus no:Von Neumann-arkitektur pl:Architektura von Neumanna pt:Arquitetura de von Neumann ru:Архитектура фон Неймана sh:Von Neumannova arhitektura sk:Koncepcia Johna von Neumanna sr:Фон Нојманова архитектура sv:Von Neumann-arkitekturen th:สถาปัตยกรรมฟอนนอยมันน์ tr:Neumann Mimarisi uk:Архітектура фон Неймана zh:冯·诺伊曼结构

個人用ツール