プロセッサ駆動機能分散型
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/12/05 15:01 UTC 版)
「データフロー」の記事における「プロセッサ駆動機能分散型」の解説
プロセッサ駆動機能分散型のデータフローマシンは、ノード(プロセッサ機能すなわち命令)とトークン(入力データ)とアーク(出力データの出力先ノードを示す一種のポインタ)をパケットとし、メモリに格納しておく。各パケットは必要なトークンが全て揃うと実行可能になる。実行可能なパケットはプロセッサに送られ、プロセッサはそれを解釈実行し、出力トークンをメモリに戻す。その出力トークンは元のアークで示されているノードのパケット内に格納される。これを繰り返すことで処理が行われる。 例えば、2つの整数の加算命令パケットには、加算命令のノード情報と2つの入力トークンと加算結果の出力先情報(複数の場合もある)が格納されており、2つのトークンが揃うと実行可能と判断され、プロセッサに送られる。プロセッサはノードに示された加算命令を実行し、結果のトークンをアークで示されたアドレスに書き込む(正確にはタグによるパターンマッチングを伴うことが多い)。 コンパイラはプログラムを解析してデータの依存関係を明らかにする。これはよりよい最適化を命令列に施すためであるが、一般にコンパイル結果の実行コードにはその依存関係に関する情報は含まれない。データフローマシン向けにコンパイルされたプログラムでは、この依存関係情報を保持する。データフローコンパイラでは各依存関係ごとにユニークなタグを生成する。これにより依存関係のない命令群の並列実行可能性を引き出す。各命令にはタグ付きのオペランドがあり、これが実行コードとして格納される。これは上述のパケットにほぼ相当するが、入力トークンは実行時まで存在しない。 実行コードは、データフローマシンの連想メモリに格納される。ある命令のタグ付きオペランドが全て使用可能となったとき、その命令が実行可能となる。これを命令の「発火」という。実行ユニットが命令を実行すると、その出力データが(タグと共に)連想メモリに送られる。タグのマッチングによってそのデータを必要とする命令の状態が更新され、次の命令が発火する。命令はデータの到着順に発火していき、これはプログラマがプログラムした順番とは異なる可能性がある。
※この「プロセッサ駆動機能分散型」の解説は、「データフロー」の解説の一部です。
「プロセッサ駆動機能分散型」を含む「データフロー」の記事については、「データフロー」の概要を参照ください。
- プロセッサ駆動機能分散型のページへのリンク