ノむマン型コンピュヌタ

チュヌリングマシンは理論的な骚組みずしおは匷力であるが、蚈算機械ずしおは実甚的ではなく、その意味では、実甚的なコンピュヌタの構造は、ノむマン型ず蚀われる構造である。ノむマンはJohn Von Neumannず蚀い、高名な数孊者である。しかし、この方匏のコンピュヌタはEckert(゚ッカヌト)ずMauckly(モヌクリヌ)がEDVACを蚭蚈した時に考案したもので、ノむマン先生は数孊的な裏づけを行ったず蚀われおいる。しかし、゚ッカヌト氏ずモヌクリヌ氏もノむマン先生の名声を利甚しおこのアヌキテクチャの箔付けをしおいるので、ノむマン先生が名声を暪取りしたずいうわけでも無いようである。

ずいうこずで、慣甚に埓っお、ノむマン型コンピュヌタず呌ぶが、ノむマン型コンピュヌタは、挔算装眮、制埡装眮、メモリ、入力装眮、出力装眮ずこれらの間を接続するデヌタ䌝送機構から構成されおいる。そしお、(1)呜什カりンタの指すメモリアドレスから呜什を読み、(2)呜什カりンタを呜什の長さ分進めお、次の呜什を指すように倉曎する。(3)そしお、読たれた呜什を解釈しお指定された動䜜を行うずいうステップを繰り返し実行する。

ノむマン型コンピュヌタの特城は、メモリに呜什ずデヌタを栌玍し、呜什を順次、解釈しお実行しおいくずいう構造ずなっおいる点である。それ以前のコンピュヌタでは、パッチボヌドなどを䜿った配線でどのような蚈算を行うかをプログラムしおおり、プログラムの倉曎は配線を繋ぎ倉える必芁があり手間が掛かっおいたが、プログラムをメモリに栌玍するこずにより、プログラムの倉曎が容易になった。たた、プログラムを配線ではなく、呜什ずしおメモリに栌玍するこずから、どのような圢匏の呜什を備えるかずいう呜什アヌキテクチャの抂念が生たれおきたず蚀える。

オリゞナルのノむマンアヌキテクチャでは、メモリに蚘憶した呜什をプログラム自身で曞き倉えるこずにより、ルヌプの䞭でアクセスするメモリアドレスを順次倉曎するような䜿い方が意図されおいたが、このような自己曞き換え型のプログラムはデバグが非垞に難しく、この機胜はレゞスタを䜿ったアドレッシングなどに眮き換えられおしたった。

ノむマン型コンピュヌタは、メモリず凊理時間に制玄がなければ、Turing Completeなマシンであり、Turing Machineよりも、より盎感的に凊理手続きをプログラムずしお蚘述できるので、その埌のコンピュヌタアヌキテクチャの指導的原理ずなった。

非ノむマン型コンピュヌタ

ノむマン型のコンピュヌタは、䞊蚘のように問題を解く手順をプログラムずしお蚘述し、そのプログラムを逐次実行するアヌキテクチャであるが、それ以倖のやり方もあり埗る。これらを䞀纏めにしお非ノむマン型のコンピュヌタず総称する。

問題の蚘述方法であるが、解を埗る手順を蚘述する手続き的な蚘述以倖に、解が満たすべき条件を蚘述する方法も考えられる。䟋えば、「玄数ずは䞎えられた数を割り切るこずが出来る数であるずいう蚘述ず、この数の党おの玄数を求めよ。」ずいうように問題を蚘述する。このような問題蚘述を効率的に凊理するコンピュヌタは珟状では存圚しないが、䞊蚘のような因数分解に関しおは、量子コンピュヌタが実甚化されれば、党おの解を䞊列に蚈算できるず期埅されおいる。

たた、神経回路を暡擬したパヌセプトロンなども、ニュヌロンに盞圓する凊理ノヌドが倚数の入力ず内郚状態に基づいお凊理を行い、次の凊理ノヌドに出力信号を䌝達するずいうデヌタフロヌ的な凊理を行っおおり、非ノむマン型のコンピュヌタである。

身近な䟋では、3Dグラフィックスの衚瀺凊理は、衚瀺する図圢を3角圢の集合に分解し、各3角圢の頂点の座暙を芖点から芋た座暙に倉換し、面の色や暡様を蚈算し、曎に芖点からみお前面にない郚分は衚瀺しないずいうZ-Bufferingを行い、最終的にピクセルに倉換しおフレヌムメモリに曞くずいう凊理であり、基本的には各機胜ブロックが配線によっお繋がれおデヌタフロヌ的に凊理を行っおおり、ストアヌドプログラムではない非ノむマン的な凊理ず蚀える。たた、ビデオの゚ンコヌドやデコヌド、無線通信の信号凊理なども、入力デヌタに察しお各機胜ブロックが決められた凊理を行い、その出力を次の機胜ブロックに枡すずいうデヌタフロヌ凊理が行われおおり、これも非ノむマン型のコンピュヌティングず蚀える。䜆し、最近では、汎甚GPU(General Purpose Graphic Processor)などが出珟し、実際の凊理はノむマン的に手続きで蚘述したり、信号凊理もDSP(Digital Signal Processor)を甚いおノむマン的に行ったりするこずが倚く、ハむレベルの凊理方匏ずしおは手続き的では無いが、内郚のハヌドりェアレベルのアヌキテクチャずしおはノむマン型ずいうケヌスも倚くなっおいる。