(57)【要約】【課題】  データパケットの伝送路を介した転送タイミングを確実に調整する。【解決手段】  データ駆動型情報処理装置は、データフロープログラムに従う処理のためのデータを格納するデータフィールドを含むデータパケットの周回パイプラインでプログラム記憶部、待ち合わせ部および演算処理部１３をループ状に結合する。演算処理部１３に入力したデータパケットＰＡは該パケット中の滞在時間データで指示される期間、滞在用データメモリ１０４に滞在する。その後に演算実行部１２１に入力する。演算実行部１２１は、入力データパケットＰＡについて演算を実行し、実行結果をデータパケットＰＡに格納して周回パイプラインに出力する。したがって、データパケットＰＡに予め滞在時間データを格納しておくことで、演算処理部１１３においてデータパケットＰＡ入力からの演算実行結果出力までの遅延時間を正確にコントロールできる。【選択図】        図１
2005250547.tif 000002
【特許請求の範囲】
【請求項１】
データフロープログラムに従う処理のためのデータを格納するデータフィールドを含むデータパケットが周回する伝送路で、ループ状に結合した複数の処理部を備えるデータ駆動型情報処理装置であって、
前記複数の処理部の少なくとも１つの処理部は、
データパケットを入力して、入力したデータパケットの内容に基づき所定処理を実行し、実行結果を示すデータパケットを前記伝送路に出力する処理実行部と、
データパケットを入力して、入力したデータパケットの前記データフィールドに予め格納された滞在時間データで指示される期間、該入力データパケットを滞在させた後に、該入力データパケットを前記処理実行部に出力する滞在部と、
前記伝送路からデータパケットを入力して、入力したデータパケットの前記データフィールドに前記滞在時間データが格納されているとき該入力データパケットを前記滞在部に出力し、格納されていないとき前記処理実行部に出力する分岐部とを含む、データ駆動型情報処理装置。
【請求項２】
データフロープログラムに従う処理のためのデータを格納するデータフィールドを含むデータパケットが周回する伝送路で、ループ状に結合した複数の処理部を備えるデータ駆動型情報処理装置であって、
前記複数の処理部の少なくとも１つの処理部は、
データパケットを入力して、入力したデータパケットの前記データフィールドに予め格納された滞在時間データで指示される期間、該入力データパケットを滞在させた後に、該入力データパケットを前記伝送路に出力する滞在部と、
前記伝送路からデータパケットを入力して、入力したデータパケットの内容に基づき所定処理を実行し、実行結果を示すデータパケットを出力する処理実行部と、
前記処理実行部からデータパケットを入力して、入力したデータパケットの前記データフィールドに前記滞在時間データが格納されているとき該入力データパケットを前記滞在部に出力し、格納されていないとき前記伝送路に出力する分岐部とを含む、データ駆動型情報処理装置。
【請求項３】
前記データパケットは命令コードを格納する命令フィールドをさらに含み、
前記処理実行部は、
データパケットを入力して、入力したデータパケットの前記命令フィールドの前記命令コードをデコードし、デコード結果に基づき該入力データパケットの内容を用いて前記所定処理を実行し、前記実行結果を該入力データパケットの前記データフィールドに格納して該入力データパケットを出力する命令実行部である、請求項１または２に記載のデータ駆動型情報処理装置。
【請求項４】
前記滞在部は、
入力したデータパケットを順次記憶するための滞在用記憶部と、
前記滞在用記憶部に格納されているデータパケットの前記滞在時間データをカウント値として、所定周期で順次減じるカウント値減少部と、
前記カウント値減少部による前記カウント値の減少の結果、該カウント値が０となったデータパケットを前記滞在用記憶部から読出して、読出したデータパケットを出力する出力部とを有する、請求項３に記載のデータ駆動型情報処理装置。
【請求項５】
前記所定周期は任意に変更可能であることを特徴とする、請求項４に記載のデータ駆動型情報処理装置。
【請求項６】
前記カウント値減少部は、変更可能な任意周期のクロックを生成して出力するクロック生成部を有し、
前記所定周期は前記クロック生成部が出力する前記任意周期のクロックに同期することを特徴とする、請求項５に記載のデータ駆動型情報処理装置。
【請求項７】
データパケットは行先情報を格納する行先フィールドをさらに含み、
前記複数処理部には、
前記伝送路から入力したデータパケットの前記行先フィールドの内容に基づくアドレス指定により、予め格納したデータフロープログラムから次位の行先情報と次位の命令コードとを読出して該入力データパケットの前記行先フィールドと前記命令フィールドにそれぞれ格納して、該入力データパケットを前記伝送路に出力するプログラム記憶部が含まれて、
前記データフロープログラムには、前記滞在時間データ付き前記命令コードが含まれることを特徴とする、請求項３に記載のデータ駆動型情報処理装置。
【請求項８】
前記命令実行部はデータメモリを有し、前記所定処理は前記データメモリの読み書き処理を含み、
前記滞在時間データ付き前記命令コードは、前記データメモリから所定データを読出すための命令コードであり、前記滞在時間データは前記命令実行部が前記読み書き処理を実行して前記データメモリに書込んだ該所定データを読出すことが可能となるタイミングに従い決定されることを特徴とする、請求項７に記載のデータ駆動型情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はデータ駆動型情報処理装置に関し、特に、データ駆動型情報処理装置内においてデータパケットの処理のタイミングを調整するデータ駆動型情報処理装置に関する。
【背景技術】
【０００２】
データ駆動型情報処理の方式では、プログラムカウンタという概念はない。したがって、演算はデータを格納したデータパケットが揃いさえすればいつでも実行できるので、データ駆動型情報処理装置では複数の演算を同時に実行できるという特徴がある。
【０００３】
しかしながら、複数の演算を同時に実行する際に同一資源（メモリや回路など）について複数の演算による使用要求が競合した場合には、ある演算について優先的に該資源が使用されて、他の演算は待ち状態となる。その結果、待ち状態となった他の演算に用いられるデータパケットは資源が使用できる状態となるまでデータ駆動型情報処理装置内を周回することになる。また、データ駆動型情報処理装置の各部をデータパケットが周回する周回パイプラインを介してループ状に結合しているが、周回パイプラインにおいて同時に伝送可能なデータパケット個数には限界がある。それゆえに、待ち状態となって周回するデータパケットを含んで周回パイプラインを周回するデータパケットの数が限界を超えるとオーバーフローが生じる。
【０００４】
周回パイプラインにおけるオーバーフローを回避するために、オーバーフローを引き起こすような演算処理を所定時間だけ遅延させることで、該演算処理結果のデータパケットを所定時間遅らせて出力する方法および装置が、たとえば特許文献１および特許文献２に開示されている。両文献は類似の技術を記載しているので、ここでは特許文献２を代表して示す。
【０００５】
従来のデータ駆動型情報処理装置の構成として、特許文献２で示される例を図８に示す。図８の従来のデータ駆動型情報処理装置１５０は、データフロープログラムを予め記憶するプログラム記憶部１１１、待ち合わせ部１１２、演算処理部１１３、分岐部１４および合流部１６を含み、これら各部は周回パイプライン１７でループ状に結合されている。合流部１６はデータパケット入力部１８またはデータパケット出力部１５からデータパケットを入力し所定の順序に並べ替えてプログラム記憶部１１１に出力する。プログラム記憶部１１１は、合流部１６からデータパケットを入力して、必要な演算命令やノード番号などデータフロープログラムから読み出して入力したデータパケット内に格納して、その後、該データパケットを待ち合わせ部１１２へ出力する。待ち合わせ部１１２はデータパケットを入力すると、演算処理すべき２つのデータパケットが揃うまで、該入力データパケットを待機させて、２つのデータパケットが揃い次第、該入力データパケットに演算処理のためのデータを格納して、該入力データパケットを演算処理部１１３に出力する。
【０００６】
演算処理部１１３は、待ち合わせ部１１２から入力したデータパケット中の演算命令に基づき、該データパケットの内容について算術演算、論理演算、図示のないデータメモリのアクセスなどを実行し、その演算結果を該入力データパケットに格納して、該入力データパケットを分岐部１４へ出力する。分岐部１４はデータパケットを入力すると、該入力データパケットの内容に基づいて該入力データパケットをデータ出力部１９および１５のいずれかに選択的に出力する。データ出力部１９に出力されたデータパケットはデータ駆動型情報処理装置１５０の外部に出力される。データ出力部１５に出力されたデータパケットは合流部１６に出力される。
【０００７】
データ駆動型情報処理装置１５０においてオーバーフローを回避するために、特許文献２では、図９および図１０に示すようにデータ駆動型情報処理装置１５０全体に対して作用するように、プログラム記憶部１１１に遅延命令処理ブロック７が付加される。
【０００８】
図１０のデータ駆動型情報処理装置１５０では、オーバーフローを回避するために、たとえばプログラム記憶部１１１に関して予め設けられたプログラム開発ツールによって、データフロープログラムを記述するデータフローグラフにおいてオーバーフローが生じる直前の命令の前に遅延命令を挿入する。そして、遅延命令処理ブロック７では、命令フェッチ部２は入力部１を介して、遅延命令を格納したデータパケットを入力すると、該データパケットを遅延命令処理部５に出力する。遅延命令処理部５は入力したデータパケットのデータを遅延処理用タイマ４および遅延トークン記憶用メモリ３に格納する。
【０００９】
データフローグラフの遅延命令の次位の命令を格納したデータパケットは、命令フェッチ部２を経由して遅延命令処理部５に与えられる。遅延命令処理部５は該データパケットを入力すると、遅延処理用タイマ４および遅延トークン記憶用メモリ３により、所定時間だけ遅延させてから、該データパケットを出力部６を介して周回パイプライン１７に出力する。これにより、周回パイプライン１７において同時伝送されるデータパケット数を、周回パイプライン１７の上限個数を超えないように制御できる。
【００１０】
特許文献２では周回パイプラインでのオーバーフローを回避するために、データパケットを一定時間遅らせて出力するようにしているが、次のような目的の下にデータパケットを一定時間遅らせて出力することが望まれている。
【００１１】
つまり、データ駆動型情報処理装置１５０において演算処理部１１３内の図示のないデータメモリに演算の処理結果が書込まれた後に、該処理結果の読出を確実に可能にすることが望まれている。このような要求を達成するためには、データメモリにおける処理結果の書込／読出の処理において、データパケットを一定時間遅らせて出力する必要がある。
【００１２】
この目的を達成するための一番簡単な方法としては、図１１のデータフローグラフに従うデータフロープログラムを実行すればよい。つまり、図１１のノードＮ１の任意の演算処理の結果を次位のノードＮ２の書込命令でデータメモリに書込み後、次位のノードＮ３の読出命令で該データメモリに書込んだ該処理結果を読出す。つまり、データフローグラフにおいて図１１のように順次に命令が実行される同一パスにおいて書込命令の直後に読出命令を記述すればよい。こうすることにより、データメモリに演算処理結果が書込まれた後に確実に該演算処理結果を読出すことができる。
【００１３】
また、図１２のようにデータメモリへの書込命令と読出命令が別のパスに分かれて実行される場合もある。図１２ではノードＮ４で任意の演算処理が実行されると、その実行結果を格納したデータパケットはノードＮ４からノードＮ５とＮ６にそれぞれ出力される。ノードＮ５とＮ６では入力したデータパケットを用いて任意の演算処理が並行して実行される。ノードＮ５の演算処理結果を格納したデータパケットはノードＮ５の直後のノードＮ７に与えられるので、ノードＮ７の書込命令によりノードＮ５の演算処理結果はデータメモリに書込まれる。ノードＮ７から出力されたデータパケットはノードＮ９に与えられ、ノードＮ６の演算処理結果を格納したデータパケットもノードＮ９に与えられる。ノードＮ９ではノードＮ６とＮ７から出力されたデータデータパケットが揃うための待合わせが実行される。待合わせに成功してノードＮ９から出力されるデータパケットはノードＮ１０に出力されて、ノードＮ１０ではノードＮ９から入力したデータパケットを用いてデータメモリからノードＮ７で書込まれた演算処理結果の読出を実行する。
【００１４】
図１２では、データメモリの書込処理および読出処理はノードＮ７とＮ１０のそれぞれ１回であるけれども、データメモリの書込処理がデータフローグラフ中の複数ノードで行なわれ、また読出処理も複数ノードで行なわれるような場合などは、図１２のノードＮ９に示す待ち合わせの回数が多くなり、その結果データフローグラフが複雑になってしまう。待ち合わせ回数が多くなるとデータ駆動型情報処理装置において処理すべきデータ量が増えてしまう。
【００１５】
このような課題を解消するために、図１２のノードＮ９のような待ち合わせを行なうのではなくて、図１３のように、ノードＮ７におけるデータメモリの書込処理が終了するまでは、ノードＮ５とＮ７のパスの処理に並行して、ノードＮ１１およびＮ１２のように１つまたは複数個のダミー命令を実行し、その後にノードＮ１０で読出命令を実行することが提案されている。また、特許文献２では、上述の待ち合わせが必要とされる場合には図１４のように、ノードＮ７のデータメモリの書込処理が終了するまでは、ノードＮ５とＮ７のパスの処理に並行してノードＮ１３において遅延命令を実行する。これによりノードＮ７のデータメモリの書込処理が終了するまでに要する時間を所定遅延時間としてノードＮ１３において設定することができるので、ノードＮ１０の読出命令をノードＮ７の書込処理終了の直後に実行することができる。
【特許文献１】特開平２−１７１９７５号公報
【特許文献２】特開２００２−１８９７１０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
図１４の遅延命令を用いる方法では、図１０において、遅延命令処理ブロック７から遅延命令に従い処理された後に出力されたデータパケットはプログラム記憶部１１１と待ち合わせ部１１２を経由して演算処理部１１３に入力する。そして、演算処理部１１３ではノードＮ１０の読出命令を実行することができる。しかしながら、周回パイプライン１７を周回するデータパケットの混み具合によっては、データパケットが遅延命令処理ブロック７から演算処理部１１３に移動するまでの所要時間が短くなったりまたは長くなったりすることに因り、ノードＮ１３の遅延命令で設定した所定遅延時間は変化してしまう。このように正確に遅延時間をコントロールすることが困難であったので、演算処理部１１３は書込み後の所定時間遅延後に読出命令を格納したデータパケットを入力することが出来ず、それゆえ、ノードＮ７で書込まれたデータを書込み直後に読出すことはできなかった。
【００１７】
また、特許文献２の方法に従いフローグラフを記述した場合、図１４に示すように、遅延命令のために１つのノードを必要とする。プログラム記憶部１１１のデータフロープログラムの記憶領域では１ノードについて１アドレスが当てられるので、プログラム記憶部１１１の消費メモリ容量は大きかった。
【００１８】
それゆえにこの発明の目的は、データパケットの伝送路を介した転送タイミングを確実に調整することのできるデータ駆動型情報処理装置を提供することである。
【課題を解決するための手段】
【００１９】
この発明のある局面に従うデータ駆動型情報処理装置は、データフロープログラムに従う処理のためのデータを格納するデータフィールドを含むデータパケットが周回する伝送路で、ループ状に結合した複数の処理部を備える。
【００２０】
複数の処理部の少なくとも１つの処理部は、データパケットを入力して、入力したデータパケットの内容に基づき所定処理を実行し、実行結果を示すデータパケットを伝送路に出力する処理実行部と、データパケットを入力して、入力したデータパケットのデータフィールドに予め格納された滞在時間データで指示される期間、該入力データパケットを滞在させた後に、該入力データパケットを処理実行部に出力する滞在部と、伝送路からデータパケットを入力して、入力したデータパケットのデータフィールドに滞在時間データが格納されているとき該入力データパケットを滞在部に出力し、格納されていないとき処理実行部に出力する分岐部とを含む。
【００２１】
したがって、処理部においては入力データパケットを滞在時間データが示す期間経過後に所定処理を実行して実行結果を格納したデータパケットを伝送路に出力できる。つまり、該入力データパケットに予め滞在時間データを格納しておくことで、伝送路におけるデータパケットの込み具合などに関係なく、処理部においてデータパケットを入力してから所定処理の開始タイミングまたは所定処理の実行結果出力までの遅延時間を正確にコントロールできる。
【００２２】
この発明の他の局面に従うデータ駆動型情報処理装置は、データフロープログラムに従う処理のためのデータを格納するデータフィールドを含むデータパケットが周回する伝送路で、ループ状に結合した複数の処理部を備える。複数の処理部の少なくとも１つの処理部は、データパケットを入力して、入力したデータパケットのデータフィールドに予め格納された滞在時間データで指示される期間、該入力データパケットを滞在させた後に、該入力データパケットを伝送路に出力する滞在部と、伝送路からデータパケットを入力して、入力したデータパケットの内容に基づき所定処理を実行し、実行結果を示すデータパケットを出力する処理実行部と、処理実行部からデータパケットを入力して、入力したデータパケットのデータフィールドに滞在時間データが格納されているとき該入力データパケットを滞在部に出力し、格納されていないとき伝送路に出力する分岐部とを含む。
【００２３】
したがって、処理部においては入力データパケットの内容に基づく所定処理の実行結果を格納したデータパケットを、該データパケット中の滞在時間データが示す期間が経過後に伝送路に出力することができる。つまり、該入力データパケットに予め滞在時間データを格納しておくことで、伝送路におけるデータパケットの込み具合などに関係なく、処理部においてデータパケット入力から所定処理の実行結果のデータパケット出力までの遅延時間を正確にコントロールできる。
【００２４】
したがって、上述の発明により処理部からの伝送路にデータパケットを出力するタイミングを正確に調整できる。
【００２５】
好ましくは、データパケットは命令コードを格納する命令フィールドをさらに含む。処理実行部は、データパケットを入力して、入力したデータパケットの命令フィールドの命令コードをデコードし、デコード結果に基づき該入力データパケットの内容を用いて所定処理を実行し、実行結果を該入力データパケットのデータフィールドに格納して該入力データパケットを出力する命令実行部である。
【００２６】
したがって、遅延時間調整のための滞在時間データと処理実行部のための命令コードとを同一のデータデータパケットで処理部に供給できる。それゆえに、遅延時間を調整するための特別なデータパケットが伝送路を周回することはないから、伝送路の効率の低下は回避できる。
【００２７】
また、遅延時間調整のための特別な命令コードをデータフロープログラム中に記載する必要はないから、プログラム開発が効率的となる。またデータフロープログラムの容量増加は回避できて、データ駆動型情報処理装置では該データフロープログラムを記憶するための容量を節約できる。
【００２８】
好ましくは、滞在部は、入力したデータパケットを順次記憶するための滞在用記憶部と、滞在用記憶部に格納されているデータパケットの滞在時間データをカウント値として、所定周期で順次減じるカウント値減少部と、カウント値減少部によるカウント値の減少の結果、該カウント値が０となったデータパケットを滞在用記憶部から読出して、読出したデータパケットを出力する出力部とを有する。
【００２９】
したがって、遅延時間調整のために滞在部の滞在用記憶部に滞在時間データが示す期間をカウント値減少部で所定周期でカウントして計時し、結果、カウント値が０となり滞在期間が満了したデータパケットから順に滞在部から出力される。
【００３０】
それゆえに、遅延時間の調整を滞在用記憶部とカウント値減少部とを用いて簡単に実現できる。
【００３１】
好ましくは、所定周期は任意に変更可能であるから、データパケット中の滞在時間データを書換えしなくても、プログラム実行中に簡単に滞在記憶部に記憶してから読出すまでの期間、言換えると遅延時間を変更できる。
【００３２】
好ましくは、カウント値減少部は、変更可能な任意周期のクロックを生成して出力するクロック生成部を有し、所定周期はクロック生成部が出力する任意周期のクロックに同期する。
【００３３】
したがって、クロック生成部のクロック生成の周期を任意に変更することで、データパケットに格納した滞在時間データを変更せずとも所望するように遅延時間を調整できる。
【００３４】
好ましくは、データパケットは行先情報を格納する行先フィールドをさらに含む。複数処理部には、伝送路から入力したデータパケットの行先フィールドの内容に基づくアドレス指定により、予め格納したデータフロープログラムから次位の行先情報と次位の命令コードとを読出して該入力データパケットの行先フィールドと命令フィールドにそれぞれ格納して、該入力データパケットを伝送路に出力するプログラム記憶部が含まれて、データフロープログラムには、滞在時間データ付き命令コードが含まれる。
【００３５】
したがって、プログラム記憶部に滞在時間付き命令コードを記述したデータフロープログラムを格納しておくことで、１回のアドレス指定で次位の命令コードとして滞在時間データ付き命令コードを読出すことができる、すなわち命令コードと処理部で該命令コードの所定処理の実行結果を格納したデータパケットを出力するまでの遅延時間のデータとを同時に読出すことができる。それゆえに、遅延時間調整がされるとしてもプログラム読出しの速度が低下することはない。
【００３６】
好ましくは、命令実行部はデータメモリを有し、所定処理はデータメモリの読み書き処理を含む。滞在時間データ付き命令コードは、データメモリから所定データを読出すための命令コードであり、滞在時間データは命令実行部が読み書き処理を実行してデータメモリに書込んだ該所定データを読出すことが可能となるタイミングに従い決定。
【００３７】
したがって、データメモリに書込んだ所定データを、その後に読出命令に従う読み書き処理を実行して読み出す場合に、滞在時間データ付き読出し命令を用いることで、データメモリに書込んだ該所定データを読出すことが可能となるタイミングまで読出しの開始を遅延させることが可能となる。
【発明を実施するための最良の形態】
【００３８】
以下、この発明の実施の形態について図面を参照して説明する。この実施の形態ではデータパケットの遅延に関する時間は１クロックを１単位時間としているが、数クロックを１単位時間としてもよい。また、後述のクロック生成部１０５によりクロックを分周するなどして、１クロックの実際の時間を変更するようにしてもよい。
【００３９】
また本実施の形態に係る遅延処理は、データメモリに関して書込命令を実行した後の読出命令の実行開始までの時間差を調整するのに適用されるが、適用される命令コードの種類はこれらに限定されない。
【００４０】
図１には本実施の形態に係る演算処理部の構成が示されて、図２には本実施の形態に係るデータ駆動型情報処理装置の構成が示される。
【００４１】
図２を参照してデータ駆動型情報処理装置１０と図８に示した従来のデータ駆動型情報処理装置１５０とを比較して異なる点は、データ駆動型情報処理装置１０はデータ駆動型情報処理装置１５０のプログラム記憶部１１１、待ち合わせ部１１２および演算処理部１１３に代替してプログラム記憶部１１、待ち合わせ部１２および演算処理部１３を備える点にある。データパケットは、データ駆動型情報処理装置１０の図示のない外部装置に接続された入力部１８、または出力部１５のいずれかから合流部１６を経由してプログラム記憶部１１に与えられる。データ駆動型情報処理装置１０の他の各部の構成と機能は従来のデータ駆動型情報処理装置１５０と同様であり、説明を簡単にする。図２のデータパケットの内容に基づき個々に所定の処理をする処理部に対応のプログラム記憶部１１、待ち合わせ部１２および演算処理部１３、ならびにデータパケットの転送を制御する分岐部１４および合流部１６はデータパケットの伝送路である周回パイプライン１７でループ状に結合される。周回パイプライン１７をデータパケットが流れる（転送する）わけであるが、演算処理部１３の上流側（データパケットが転送される方向）に待ち合わせ部１２、その上流側にプログラム記憶部１１が位置している。
【００４２】
図３（Ａ）の本実施の形態に係るデータパケットＰＡは、該データパケットＰＡの内容を識別するためのフラグまたは該データパケットＰＡの転送を制御するためのフラグなどを含むヘッダ情報ＨＡを格納するフィールドＦ１、命令コードＣＣを格納するフィールドＦ２、該データパケットＰＡのデータフローグラフ上での行先を示す行先情報に対応のノード番号ＮＤを格納するフィールドＦ３、該データパケットＰＡがデータ駆動型情報処理装置１０に時系列に入力する場合に入力時間順序を識別するための世代番号ＧＥを格納するフィールドＦ４およびデータＤを格納するフィールドＦ５を含む。ヘッダ情報ＨＤはフィールドＦ２の命令コードＣＣが単項演算、２項演算、メモリアクセスの別を示すフラグを含む。データＤ５は該データパケットＰＡのフィールドＦ２の命令コードＣＣに従う演算処理の対象データを含む。
【００４３】
図３（Ｂ）は本発明の特徴であるＷＡＩＴ付き読出命令を格納した場合のデータパケットＰＡの内容例が示される。ＷＡＩＴ付き読出命令の命令コード‘ＲＷＡ’は通常の読出命令の命令コード‘ＲＥ’と該データパケットＰＡを演算処理部１３で滞在させる（ＷＡＩＴさせる）期間を指示する滞在時間データＳＴとを含み、図３（Ｂ）では、命令コード‘ＲＷＡ’のうち読出命令コード‘ＲＥ’はフィールドＦ２に、滞在時間データＳＴはフィールドＦ５にそれぞれ格納されている。
【００４４】
図１を参照して演算処理部１３はデコーダ部１１０を有するデータパケット分岐部１０１、滞在処理部１００、データパケット合流部１０８および従来からの一般のデータ駆動型情報処理装置で提供されている演算処理部の機能を有する演算部１１３を備える。合流部１０８は滞在処理部１００とデータデータパケット分岐部１０から出力されるデータパケットＰＡを順次入力して演算部１１３に出力する。
【００４５】
演算部１１３はデータメモリ１２０とデータメモリ１２０を必要に応じてアクセスしながら各種の演算を実行する演算実行部１２１を有する。データメモリ１２０は、演算実行部１２１で演算が実行されるときに演算実行部１２１により書込命令コード‘ＷＲ’に基づきデータが書込まれたり、読出命令コード‘ＲＥ’に基づきデータが読出されたりする。演算実行部１２１は従来と同様に算術演算および論理演算なども実行する。
【００４６】
滞在処理部１００は、カウント値セット部１０２、格納部１０３、滞在用データメモリ１０４、クロック生成部１０５、カウント値デクリメント部１０６および出力データパケット生成部１０７を含む。滞在処理部１００の動作については後述する。
【００４７】
図４を参照してプログラム記憶部１１について説明する。プログラム記憶部１１はデータフロープログラムを格納するプログラムメモリ３１、プログラムメモリ３１からプログラムデータ３４を読出すプログラム読出部３２および読出したプログラムデータ３４を格納したデータパケットＰＡを出力するプログラム出力部３３を有する。
【００４８】
プログラムメモリ１３１にはデータフロープログラムとして、複数の次位の行先情報であるノード番号ＮＤと複数の次位の命令コードＣＣとを対応付けて格納する。合流部１６から出力されたデータパケットＰＡはプログラム読出部３２とプログラム出力部３３とに並行して与えられる。プログラム読出部３２は与えられるデータパケットＰＡを入力し、入力したデータパケットＰＡのノード番号ＮＤに基づくアドレス指定によりプログラムメモリ３１から次位の行先情報であるノード番号ＮＤと次位の命令コードＣＣとを読出して、これらをプログラムデータ３４としてプログラム出力部３３に与える。
【００４９】
プログラム出力部３３は、合流部１６から入力したデータパケットＰＡのフィールドＦ２とＦ３に、プログラム読出部３２から与えられるプログラムデータ３４の次位の命令コードＣＣと次位のノード番号ＮＤをそれぞれ格納し、その後該入力データパケットを待ち合わせ部１２に出力する。
【００５０】
なお、プログラム記憶部１１で入力データパケットＰＡに基づきＷＡＩＴ付き読出命令が読出されたとき、該入力データパケットＰＡのフィールドＦ５にはデータメモリ１２０の読出し先を指示するアドレスデータが格納されている。
【００５１】
図５を参照して待ち合わせ部１２は、ヘッダ解析部４５を有する分岐部４１、待ち合わせメモリ４３、待ち合わせメモリ４３をアクセスする対データ検出部４２および合流部４４を備える。
【００５２】
分岐部４１は、プログラム記憶部１１から出力されたデータパケットＰＡを入力し、入力データパケットＰＡのヘッダ情報ＨＤをヘッダ解析部４５により解析する。解析結果、入力データパケットＰＡが対となるデータの待ち合わせを必要としない種類のデータパケットＰＡであると判別すると、たとえばヘッダ情報ＨＤにより該入力データパケットＰＡは単項演算または演算処理部１３のデータメモリ１２０のアクセスのためのものと判別すると、該入力データパケットＰＡをそのまま合流部４４に出力するが、そうでないと判別すると入力データパケットＰＡを対データ検出部４２に出力する。
【００５３】
対データ検出部４２は同一の行先情報を示すノード番号ＮＤと同一の命令コードＣＣを格納した異なる２つのデータパケットＰＡ、すなわち対となる２つのデータパケットＰＡが入力したことを検知すると一方のデータパケットＰＡのフィールドＦ５に他方のデータパケットＰＡのフィールドＦ５のデータＤを追加して格納し、一方のデータパケットＰＡを合流部４４に出力する。これを発火という。このとき他方のデータパケットＰＡは破棄される。上述の対となる２つのデータパケットを検出するために、あるデータパケットＰＡは対となる他方のデータパケットＰＡが入力するまで、その待ち合わせのために、待ち合わせメモリ４３に書込まれる。
【００５４】
合流部４４は分岐部４１または対データ検出部４２から出力されたデータパケットＰＡを入力して、順次、演算処理部１３に出力する。
【００５５】
図６のデータフローグラフに従うデータフロープログラムを想定する。図６のデータフローグラフではノードＮ２０で演算実行部１２１により任意の命令コードＣＣに従う任意の演算処理が実行された後に、処理ルートが２つに分岐する。分岐した一方ルートの各ノードの処理と他方ルートの各ノードの処理とはデータ駆動型情報処理装置１０では並行して実行される。図６では、一方ルートのノードＮ２１では、演算実行部１２１により、データメモリ１２０の所定アドレスに対する書込の命令コードＣＣが実行されて、他方のルートのノードＮ２２では、演算実行部１２１により、データメモリ１２０の該所定アドレスについての読出の命令コードＣＣが実行されるとする。その場合に、ノードＮ２１の書込命令が演算処理部１３で実行されるタイミングはノードＮ２２の読出命令が演算処理部１３で実行されるタイミングより早ければ、たとえば５クロック分読出が書込より遅延して実行されれば、ノードＮ２２の読出によりノードＮ２１で書込まれたデータをデータメモリ１２０から正常に読出せることができると想定する。ここで‘データを正常に読出す’とは次のような状態をいう。つまり、書込命令でデータメモリの所定アドレスにデータを書込み、その後に該所定アドレスについての読出命令が実行される場合に、書込み終了から読出し開始までの期間において該所定アドレスの内容が他の命令により書換えられることがない状態を指す。
【００５６】
上述の５クロックの遅延時間は予め検出すると想定する。たとえばパーソナルコンピュータ上でデータ駆動型情報処理装置１０のモデルを構築して、該モデル上で図６のデータフローグラフに従うデータフロープログラムをシミュレートすることにより、ノードＮ２１の書込命令を実行してデータメモリ１２０にデータが書込まれた後に、ノードＮ２２の読出命令で該データを正常に読出すためには、ノードＮ２２の読出命令を格納したデータパケットＰＡが演算処理部１３に入力した時点から該入力データパケットＰＡを用いた読出実行開始まで何クロック遅延させるべきかを検出する。その後、検出結果の遅延時間を滞在時間データＳＴを含むＷＡＩＴ付き読出命令‘ＷＲＥ’を含むデータフロープログラムが作成されてプログラムメモリ３１にダウンロードされる。ここでは、データ駆動型情報処理装置１０でのプログラムの実行に先立ってプログラムメモリ１３１に滞在時間データＳＴを、プログラム実行中に書換え用のデータパケットＰＡを用いて、処理内容に応じて動的に変更するようにしてもよい。
【００５７】
図６の処理を実行する場合に、本実施の形態のデータ駆動型情報処理装置１０では図７のデータフローグラフに従うデータフロープログラムを実行する。図７と図６とのフローグラフを参照して異なる点は、図７のフローグラフは図６のノードＮ２２に代替してノードＮ２３を有する点にある。他は図６のそれと同じである。
【００５８】
図７のノードＮ２３には従来の読出命令ではなく、ＷＡＩＴ付き読出命令の命令コード‘ＲＷＡ’を割当てる。このＷＡＩＴ付き読出命令により、従来の読出命令に比べて、演算処理部１３ではノードＮ２３の命令の右入力である定数データ３０で示されたクロック分だけ遅れてデータメモリ１２１からの読出を実行開始することができる。図７では５クロック分だけ遅延させることができる。
【００５９】
このようなＷＡＩＴ付き読出命令を準備することにより遅延時間を増減させる場合であっても、該命令の右入力データである定数データ３０の値を増減させるだけでよく、余分な命令を実行する必要はないから、データ駆動型情報処理装置１０の処理データ量も実行すべき命令数も増やすことなくデータメモリ１２１の読出タイミングを調整できる。
【００６０】
図７のデータフローグラフに従うデータ駆動型情報処理装置１０の動作を説明する。プログラムメモリ３１には図７に従う図４のデータフロープログラムがダウンロードされていると想定する。
【００６１】
まず、プログラム記憶部１１にフィールドＦ３に“Ｎ２０”のノード番号ＮＤを格納したデータパケットＰＡが入力したとする。プログラム記憶部１１では該入力データパケットＰＡのノード番号ＮＤに基づくアドレス指定により図４のプログラムメモリ３１から次位のノード番号ＮＤと次位の命令コードＣＣを読出して、該入力データパケットＰＡに読出された情報を格納し、その後該入力データパケットＰＡを待ち合わせ部１２に出力する。このとき読出された次位の命令コードＣＣはたとえば加算命令“ＡＤＤ”を示しているとする。
【００６２】
待ち合わせ部１２では、プログラム記憶部１１から入力したデータパケットＰＡについて加算命令“ＡＤＤ”について発火し、加算命令“ＡＤＤ”のオペランドデータデータである対データをフィールドＦ５に格納したデータパケットＰＡが演算処理部１３に出力される。
【００６３】
演算処理部１３ではデコーダ部１１０は待ち合わせ部１２から入力したデータパケットＰＡの命令コードＣＣをデコードする。デコード結果、該命令コードＣＣがＷＡＩＴ付き読出命令の“ＲＷＡ”を示せば、すなわち命令コードＣＣが命令コード‘ＲＥ’であり、かつ滞在時間データＳＴの値が０より大きければ、データパケット分岐部１０１は該入力データパケットＰＡを滞在処理部１００に出力するが、示さなければデータパケット合流部１０８に出力する。現在入力したデータパケットＰＡの命令コードＣＣは“ＡＤＤ”を示すので該入力データパケットＰＡはデータパケット合流部１０８を介して演算部１１３に与えられる。なお、分岐部１０１はデコード結果が示す滞在時間データＳＴの値が０より大きいか否かに基づいてデータパケットＰＡを分岐させるようにすれば、速やかな分岐が可能となる。
【００６４】
演算部１１３では演算実行部１２１は、入力データパケットＰＡの内容を命令コードＣＣ（加算命令“ＡＤＤ”）のデコード結果に基づき演算して、演算結果を該入力データパケットＰＡのフィールドＦ５に格納し、その後該入力データパケットＰＡを分岐部１４に出力する。その後、このデータパケットＰＡはヘッダ情報ＨＤの転送制御のフラグに基づく分岐部１４および合流部１６の動作によりプログラム記憶部１１に出力される。
【００６５】
次に、プログラム記憶部１１のプログラム読出部３２は、合流部１６から入力したデータパケットＰＡのノード番号ＮＤに基づくアドレス指定によりプログラムメモリ３１から次位のノード番号ＮＤと次位の命令コードＣＣを読出し、プログラムデータ３４としてプログラム出力部３３に出力する。プログラム出力部３３は、該入力データパケットＰＡに次位のプログラムデータ３４を格納した後に、該データパケットＰＡを待ち合わせ部１２に出力する。ここでは図７に示すようにノードＮ２０の演算処理結果を格納したデータパケットＰＡが分岐した２つの処理ルートそれぞれに与えられるように、プログラム記憶部１１からは２個のデータパケットＰＡが待ち合わせ部１２に出力される。このように１回のアドレス指定で２個のデータデータパケットＰＡを出力する機能は周知の機能であるから説明は略す。
【００６６】
待ち合わせ部１２で処理されて出力されたデータパケットＰＡは、以降、各部を周回しながら処理が施されて、プログラムメモリ３１のデータフロープログラムに従う処理が進行する。
【００６７】
ノードＮ２０の任意の演算処理を実行後のあるタイミングにおいて、プログラム記憶部１１にフィールドＦ３に“Ｎ２１”およびフィールドＦ５にデータメモリ１２０の所定アドレスを示す所定アドレスデータを格納したデータパケットＰＡが入力したとする。プログラム記憶部１１は、該入力データパケットＰＡに、該入力データパケットＰＡのノード番号ＮＤに基づく基づくアドレス指定により図４のプログラムメモリ３１から読出した次位のノード番号ＮＤと次位の命令コードＣＣを格納して、その後、該入力データパケットＰＡを待ち合わせ部１２に出力する。このアドレス指定で読出される次位の命令コードＣＣはデータメモリ１２０への書込命令“ＷＲ”であったとする。
【００６８】
待ち合わせ部１２では、ヘッダ解析部４５は入力データパケットＰＡのヘッダ情報ＨＤを解析して、待ち合わせの必要なしと判定する。したがって、該入力データパケットＰＡは待ち合わせすることなく合流部４４を介して演算処理部１３に出力される。
【００６９】
演算処理部１３では、デコーダ部１１０は入力データパケットＰＡの命令コード“ＷＲ”をデコードして、そのデコード結果に基づきデータパケット分岐部１０１は該入力データパケットＰＡをデータパケット合流部１０８に出力する。データパケット合流部１０８は入力したデータパケットＰＡを演算部１１３に出力する。
【００７０】
演算部１１３では、演算実行部１２１は入力データパケットＰＡの命令コードＣＣ（“ＷＲ”）をデコードして、デコード結果に従い、該入力データパケットＰＡのフィールドＦ５の所定アドレスデータに基づきデータメモリ１２０の所定アドレスに該データパケットＰＡのフィールドＦ５の内容（書込み用のデータ）を書込む。その後、該データパケットＰＡを分岐部１４に出力する。
【００７１】
その後は、データパケットＰＡはデータ駆動型情報処理装置１０内の各部を前述と同様に処理を受けながら周回する。
【００７２】
ノードＮ２０の任意の演算処理を実行後のあるタイミングにおいて、ノード番号ＮＤが“Ｎ２３”を示すデータパケットＰＡがプログラム記憶部１１に入力して、ノード番号ＮＤの“Ｎ２３”に基づくアドレス指定により図４のプログラムメモリ３１から次位のノード番号ＮＤと対応する次位の命令コード“ＲＷＡ”が読出される。読出されたこれらはプログラムデータ３４としてプログラム出力部３３に与えられる。
【００７３】
プログラム出力部３３は、合流部１６から入力したデータパケットＰＡのフィールドＦ２およびＦ３に、プログラム読出部３２から与えられたプログラムデータ３４の滞在時間データＳＴ、次位の命令コードＣＣすなわち読出命令コード‘ＲＷＡ’および次位のノード番号ＮＤをそれぞれ格納し、その後該入力データパケットＰＡを待ち合わせ部１２に出力する。
【００７４】
待ち合わせ部１２では、ヘッダ解析部４５はプログラム記憶部１１から入力したデータパケットＰＡのヘッダ情報ＨＤに基づき、該入力データパケットＰＡの待ち合わせは不要と判断するので、分岐部４１は該入力データパケットＰＡをそのまま演算処理部１３に出力する。
【００７５】
演算処理部１３では、データパケット分岐部１０１は待ち合わせ部１２から入力したデータパケットＰＡの内容についてのデコーダ部１１０によるデコード結果に基づき、該入力データパケットＰＡを滞在処理部１００に出力する。
【００７６】
滞在処理部１００では、カウント値セット部１０２はデータパケット分岐部１０１から入力したデータパケットＰＡを格納部１０３に出力する。格納部１０３はカウント値セット部１０２から入力したデータパケットＰＡのフィールドＦ２のＷＡＩＴ付き読出命令‘ＲＷＡ’の滞在時間データＳＴを、フィールドＦ２から該入力データパケットＰＡのフィールドＦ５に移動する。これにより該入力データパケットＰＡはフィールドＦ２に読出命令‘ＲＥ’を、フィールドＦ５に滞在時間データＳＴをそれぞれ格納した図３（Ｂ）のようになる。その後、該入力データパケットＰＡを滞在用データメモリ１０４に格納する。
【００７７】
滞在用データメモリ１０４は各アドレスに該アドレスの先頭にフラグ（以下、先頭フラグという）１０４１とデータパケットＰＡとを対応付けて記憶する。先頭フラグ１０４１は該アドレスにデータパケットＰＡを記憶することを禁止するときには例えば‘１’を、許可するときには‘０’を示す。格納部１０３は先頭フラグ１０４１が‘０’を示す任意のアドレスにデータパケットＰＡを格納後、対応の先頭フラグを１０４１を‘１’にセットし、該入力データパケットＰＡを消去する。
【００７８】
一方、クロック生成部１０５は常にパルス状のクロックを生成してカウント値デクリメント部１０６に対して出力する。なお、このクロックは任意のパルス幅（周期）が設定できるように実現することも可能である。滞在時間データＳＴはクロック生成部１０５が出力するクロックによりカウント可能な値を示す。パルス幅の変更はたとえば次のように行われる。つまり、クロック生成部１０５はパルス幅を設定するレジスタを有し、そのレジスタ値をデータパケットＰＡの命令コードＣＣを用いて書換えるようにしてもよく、または外部のスイッチ操作により変更するようにしてもよい。
【００７９】
カウント値デクリメント部１０６はクロック生成部１０５から出力されるクロックに同期した所定周期で次の動作をする。たとえば、クロックのパルスの立ち上がりをトリガとして、滞在用データメモリ１０４中に対応の先頭フラグ１０４１が‘１’であるアドレスに格納された全てのデータパケットＰＡの滞在時間データＳＴを読出し、読出した滞在時間データＳＴそれぞれの値を所定値だけデクリメントして、その後、デクリメントされた滞在時間データＳＴそれぞれをデータメモリ１０４の対応のアドレスにそれぞれ書き戻す。なお、デクリメントした結果、滞在時間データＳＴの値が０となった場合、カウント値デクリメント部１０６は、値が０となった滞在時間データＳＴが格納されていたアドレスを示すデータ１０６１を出力データパケット生成１０７に出力する。
【００８０】
出力データパケット生成部１０７はカウント値デクリメント部１０６からデータ１０６１を入力したとき、該入力データ１０６１に基づくアドレス指定により滞在用データメモリ１０４からデータパケットＰＡを読出し、読出したデータパケットＰＡをデータパケット合流１０８へ出力する。この読出が完了すると、出力データパケット生成部１０７は、指定されたアドレスのデータパケットＰＡを消去する。消去は、該アドレスの先頭フラグ１０４１を‘０’にセットすることをいう。
【００８１】
データパケット合流部１０８は出力データパケット生成部１０７から入力したデータパケットＰＡとデータパケット分岐部１０１から入力したデータパケットＰＡとを合流させて演算部１１３に出力する。
【００８２】
ここでは、ノードＮ２３において滞在用データメモリ１０４に格納されたＷＡＩＴ付き読出命令を含むデータパケットＰＡは、滞在時間データＳＴの値として‘５’がセットされるので、カウント値デクリメント部１０６によって、この値が１クロックごと減らされていき０となった時点で、出力データパケット生成部１０７から出力される。結果として、ＷＡＩＴ付き読出命令で指定した滞在時間データＳＴ分、滞在用データメモリ１０４に滞在した後にデータパケットＰＡが演算部１１３に出力される。
【００８３】
続いて、演算部１１３では、演算実行部１１２はデータパケット合流部１０８から入力したデータパケットＰＡの読出命令の命令コード‘ＲＥ’の解読結果に基づき、該入力データパケットＰＡのフィールドＦ５のデータＤに基づく所定アドレス指定により、データメモリ１２０からデータを読出すと、読出したデータを該入力データパケットＰＡのフィールドＦ５に格納して、該入力データパケットＰＡを分岐部１４に出力する。この結果、時間調整のための余分な周回データパケットＰＡを発生させることなく、また読出命令とは異なる余分な命令を実行することなく、図７のノードＮ２１においてデータメモリ１２０の所定アドレスに書込まれたデータについて、１個の命令コード‘ＲＷＡ’を実行するだけで正常な読出しが可能となる。
【００８４】
本実施の形態の図７のフローグラフでは、従来の図１３のダミー命令のノードの挿入の必要はない。また、演算処理部１３にて遅延処理を行うようにしているので、遅延後に演算部１３１で実行する命令（読出命令‘ＲＥ’）と組み合わせた一つの命令（ＷＡＩＴ付き読出命令‘ＷＲＥ’）で遅延処理が実行可能となり、その分、プログラムノード数を低減できる。それゆえに、少ないプログラムコード量でデータパケットＰＡに対する演算部１１３での処理の開始タイミングを一定時間遅延させることができる。その結果、データ駆動型情報処理装置１０においては従来に比較してプログラムメモリ３１のメモリ消費量を低減できる。
【００８５】
本実施の形態では、滞在処理部１００を演算部１１３の直前に設けたが、滞在処理部１００は演算部１１３の直後に設けるようにしても、演算処理部１３における正確な遅延時間の設定は可能となる。
【００８６】
また、本実施の形態ではデータパケットＰＡの処理開始タイミングを調整するために滞在処理部１００を演算処理部１３に設けているが、演算処理部１３の限定されずデータ駆動型情報処理装置１０のデータパケットＰＡについて何らかの処理を行う処理部分であれば適用できる。例えばプログラム記憶部に設けるようにしてもよく、その場合には図１の演算処理部１１３を従来のプログラム記憶部に代替すればよい。また待ち合わせ部に設けるようにしてもよく、その場合には図１の演算処理部１１３を従来の待ち合わせ部に代替すればよい。またデータ駆動型情報処理装置１０において滞在処理部１００を設ける処理部は１箇所に限定されず、２箇所以上に設けてもよい。
【００８７】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００８８】
【図１】本実施の形態に係る演算処理部の構成図である。
【図２】本実施の形態に係るデータ駆動型情報処理装置の構成図である。
【図３】（Ａ）と（Ｂ）は本実施の形態に係るデータパケットの構成例を示す図である。
【図４】本発明の実施の形態に係るプログラム記憶部の構成図である。
【図５】本発明の実施の形態に係る待ち合わせ部の構成図である。
【図６】本実施の形態を説明するためのデータフローグラフを示す図である。
【図７】図６のデータフローグラフを本実施の形態に適用されるデータフローグラフに書換えた例を示す図である。
【図８】従来のデータ駆動型情報処理装置の構成図である。
【図９】従来のオーバーフロー回避の詳細構成図である。
【図１０】従来のオーバーフロー回避の全体構成図である。
【図１１】従来のデータフローグラフの１例を示す図である。
【図１２】従来のデータフローグラフの他の例を示す図である。
【図１３】従来のデータフローグラフのさらなる他の例を示す図である。
【図１４】従来のデータフローグラフのさらなる他の例を示す図である。
【符号の説明】
【００８９】
１０  データ駆動型情報処理装置、１１  プログラム記憶部、１２  待ち合わせ部、１３  演算処理部、１００  滞在処理部、１０１  データパケット分岐部、１０２  カウント値セット部、１０３  格納部、１０４  滞在用データメモリ、１０５  ブロック生成部、１０６  カウント値デクリメント部、１０７  出力データパケット生成部、１１３  演算処理部、１２１  演算実行部、１２０  データメモリ、ＰＡ  データパケット。
【図１】
2005250547.tif 000003
【図２】
2005250547.tif 000004
【図３】
2005250547.tif 000005
【図４】
2005250547.tif 000006
【図５】
2005250547.tif 000007
【図６】
2005250547.tif 000008
【図７】
2005250547.tif 000009
【図８】
2005250547.tif 000010
【図９】
2005250547.tif 000011
【図１０】
2005250547.tif 000012
【図１１】
2005250547.tif 000013
【図１２】
2005250547.tif 000014
【図１３】
2005250547.tif 000015
【図１４】
2005250547.tif 000016