http://pcweb.mycom.co.jp/articles/2006/01/01/dataflow/
非ノイマン型アーキテクチャの計算機に関する話。
単純な処理をする演算器をタイル型に配置することによって、
配線による遅延を回避するぜ、というネタ。
(アウトオブオーダー処理とは)
プログラム順の処理(インオーダー処理)ではなく、
いわばデータの到着順に命令を組み替え、
処理を実行していく。
この、データの到着順に処理を行っていくロジックが、
データフローアーキテクチャの一つの具現となっている
データフローマシンの最も革新的な部分の一つは、
処理の並列性を最大限に高めることができること。
タイルプロセッサとは、配線遅延を回避するために考えられた
チップアーキテクチャ。
タイルプロセッサでは、隣接するコア間のみの近接配線を採用し、
メッシュネットワーク的な通信網で情報処理を行う。
このため、コア数を増やし、回路規模を大きくしていっても、
動作速度を高速に保つことができるのである。
へー。面白いしすごいな。
一方、独自のアーキテクチャとなるため、
命令セットは既存のものと互換性がないものとなる。
でもこれが問題だよな。
VLIW なんかでもそうだったけど、
コンパイラに負担がかかりそうだ。
というかどういう風に変換すりゃ良いんだろ?
全然思いつかない。
まあコンピュータというのは、そもそも、
何らかのINPUTを元に計算しOUTPUTする、
というだけの機械なので、アーキテクチャは、
今動いているもの以外にもいっぱい考えられるんだよね。
ちなみに「ノイマン型」というのはわりとあいまいな定義で、
ノイマン・アーキテクチャ : 命令とデータの区別をしない
ハーバード・アーキテクチャ : 命令とデータを区別して配置
こんなふうに定義されることもあるし、
以下の5つの要素から成るもの、と定義されることもある。
- 演算論理装置
- 制御装置
- メモリ
- 入出力
- バス
かと思えば、
プログラム内蔵=ノイマン型
みたいな、言いかたをしてる場合もあるし、
読み込み --> デコード --> 処理 --> 読みこみ
こういう逐次処理をするのがノイマン型である、
という言いかたをしてる場合もある。
で、非ノイマン型というのは、ノイマン型を
上のどれかだと定義して、それとは違うんだよ、
と言っているアーキテクチャのことなのよね。
なので非ノイマン型の研究をやっている人同士が、
全然違うことをやってる、ということは良くある話だと思う。
ちなみに、素朴なノイマン型プロセッサというのは多分
今は存在しなくて、(しないよね???)、
だいたいどのプロセッサもなんらかの工夫をして
ノイマン型の限界(ノイマンズ・ボトルネック)を回避している。
フォン・ノイマン・アーキテクチャ - wikipedia
http://en.wikipedia.org/wiki/Von_Neumann_architecture
http://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%88%E3%82%A2%E3%83%BC%E3%83%89%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E6%96%B9%E5%BC%8F