(57)【特許請求の範囲】
【請求項１】
少なくとも行先フィールド、命令フィールドおよびデータフィールドからなるデータパケットを用いてデータフロープログラムを実行するデータ駆動型情報処理装置において、
命令情報および行先情報を含むプログラムデータを格納するための複数のプログラム部と、前記各プログラム部の前記プログラムデータに対応した待合せデータを含む１つ以上のオペランドデータを格納するためのオペランド部と、前記プログラムデータおよびオペランドデータに関するコピー有無の指示を含む所定情報を格納するための情報部とを含む複数の領域を有する記憶手段と、
前記データパケットを入力し、応じて該入力データパケットの行先フィールドの内容に基づいて前記記憶手段中の領域をアドレス指定し、該指定領域中の前記所定情報にかかわらず該指定領域中の各プログラム部に対応した複数のデータパケットを生成し、該指定領域中の前記情報部の前記所定情報に基づいて複数生成データパケットを出力しないまたは複数生成データパケットのうちから１つ以上を出力し残りがあれば消去する制御手段と、
前記制御手段より出力されるデータパケットを入力し、必要に応じて該入力データパケットの命令フィールドの内容に従って、該入力データパケットのデータフィールドの内容に対して所定演算処理を施し、その結果を該入力データパケットのデータフィールドに格納して出力する演算手段とを備え、
前記制御手段により前記生成データパケットが出力されないとき、前記制御手段により前記指定領域中の前記所定情報に基づいて前記入力データパケットのデータフィールドの内容は該指定領域の前記オペランド部に前記待合せデータとして書込まれ、
前記制御手段により前記複数生成データパケットのうちから１つ以上が出力され残りがあれば消去されるとき、出力される各データパケットにおいては、前記制御手段により行先フィールドおよび命令フィールドには、該データパケットに対応の前記プログラム部の前記プログラムデータに含まれる行先情報および命令情報がそれぞれ書込まれるとともに、データフィールドには前記入力データパケットのデータフィールドの内容が書込まれ、さらに該指定領域の前記オペランド部に前記オペランドデータが格納されていることに応じて、該オペランドデータがデータフィールドの内容に付加して書込まれることを特徴とする、データ駆動型情報処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明はデータ駆動型情報処理装置に関し、特に、該情報処理装置におけるプログラム記憶機能と、２入力命令に関するオペランドデータ対の生成機能との改良に関する。
【０００２】
【従来の技術】
従来のノイマン型計算機においてはプログラムとして種々の命令が予めプログラムメモリに記憶され、プログラムカウンタによってプログラムメモリのアドレスが逐次指定されることにより順次命令が読出され、その命令が実行される。
【０００３】
一方、データ駆動型情報処理装置は、プログラムカウンタによる逐次的な命令の実行という概念を持たない非ノイマン型計算機の一種である。このようなデータ駆動型情報処理装置には、命令の並列処理を基本としたアーキテクチャが採用される。データ駆動型情報処理装置においては、演算の対象となるデータが揃い次第、命令の実行が可能となり、データによって複数の命令が同時に駆動されるため、データの自然な流れに従って並列的にプログラムが実行される。そのため、演算の所要時間が大幅に短縮するとみなされている。
【０００４】
図１１は、従来のデータ駆動型情報処理装置のブロック構成の一例を示す図である。
【０００５】
図１２は、従来および本発明の実施例に適用されるデータ駆動型情報処理装置を巡回するデータパケットのフィールド構成図である。
【０００６】
図１２において、データパケットＰＡは第１ワードおよび第２ワードからなる。第１ワードはフラグフィールドＦ１、命令フィールドＦ２、世代番号フィールドＦ３、ノード番号フィールドＦ４および識別コードフィールドＦ５を含む。第２ワードは左データフィールドＦ６および右データフィールドＦ７を含む。フィールドＦ１には後述するスルーフラグＳＦが格納され、フィールドＦ２には命令コードが、フィールドＦ３にはアドレス部および非アドレス部からなる世代番号が、フィールドＦ４にはノード番号がそれぞれ格納される。また、フィールドＦ５には左／右識別コードＬ／Ｒが格納される。フィールドＦ６には左オペランドデータが、フィールドＦ７には右オペランドデータがそれぞれ格納される。フィールドＦ６およびＦ７には、該パケットＰＡのフィールドＦ２に格納された命令コードに関連したデータが格納される。命令コードが左右２つのオペランドデータを必要とするような２項演算命令である場合、フィールドＦ６およびＦ７には該命令コードに関する左オペランドデータおよび右オペランドデータがそれぞれ格納される。一方、フィールドＦ２に格納された命令コードが１つのオペランドデータを用いた単項演算命令である場合、フィールドＦ６にのみ、該命令コードに関する１つのオペランドデータが格納される。なお、世代番号のアドレス部および非アドレス部、ならびに左／右識別コードＬ／Ｒの詳細については後述する。
【０００７】
図１１においてデータ駆動型情報処理装置３０は、演算部２、分岐部３、合流部４、プログラム記憶部５および発火制御部６を含む。
【０００８】
図１３は、図１１のプログラム記憶部５の記憶内容の一部を示す図である。
図１４は、図１１の発火制御部６の待合せメモリの記憶内容の一部を示す図である。
【０００９】
図１５は、図１１のプログラム記憶部のプログラム読出機構を示すブロック図である。
【００１０】
図１１のプログラム記憶部５には図１３に示されるようなデータフロープログラムが予め記憶される。図１３を参照してデータフロープログラムは、コピーフラグＣＰＹ、定数フラグＣＮＴ、次位の命令コード、次位のノード番号および左／右識別コードＬ／Ｒを格納した組を複数個含む。プログラム記憶部５は入力パケットＰＡのノード番号に基づくアドレス指定によって次位の命令コードおよび次位のノード番号をフェッチする（読出す）。プログラム記憶部５に記憶されている命令は、図１３に示されるようにコピーフラグＣＰＹと定数フラグＣＮＴの値によって、「通常の命令」、「パケットコピーがある命令」、および「定数データを有する命令」の３通りに分類される。プログラム記憶部１の出力パケットの構成は、図１２に示されたデータパケットＰＡの構成と同様である。
【００１１】
プログラム記憶部５が入力パケットに格納されたノード番号に基づくアドレス指定により、「通常命令」をフェッチした場合は、フェッチされた命令コード、ノード番号およびフラグＬ／Ｒを入力パケットのフィールドＦ２、Ｆ４およびＦ５のそれぞれに格納し、該パケットを出力する。
【００１２】
プログラム記憶部５が入力パケットに格納されたノード番号に基づくアドレス指定により、「パケットコピーがある命令」をフェッチした場合、前述した「通常命令」の場合と同様の処理を行なった後、該指定アドレス領域に格納されたコピーフラグＣＰＹが“１”であることを検出し、応じて、次位のアドレスの内容を連続してフェッチする。次位のアドレス領域に格納されたプログラムデータは、「通常命令」の場合と同様に、フェッチされた次位の命令コード、次位のノード番号および識別コードＬ／Ｒを入力パケットのフィールドＦ２、Ｆ４およびＦ５のそれぞれに書込んで、該パケットを出力する。このように、プログラム記憶部５において「パケットコピーがある命令」がフェッチされた場合は、１個の入力パケットに対して、一般的に、異なる命令コード、ノード番号および左／右識別コードＬ／Ｒを格納した２個のパケットがプログラム記憶部５から出力される。
【００１３】
プログラム記憶部５が入力パケットに格納されたノード番号に基づくアドレス指定により「定数データを有する命令」をフェッチした場合、前述した「通常命令」の場合と同様の処理を行なった後、該指定アドレス領域に格納された定数フラグＣＮＴが１であることを検出し、応じて、次位のアドレスの内容をフェッチする。引き続いてフェッチされた内容は、定数データである。入力パケットのフィールドＦ６またはＦ７にフェッチされた定数データが書込まれた後、該入力パケットのコードＬ／Ｒが反転されて、該パケットは出力される。このように、プログラム記憶部５において「定数データを有する命令」がフェッチされた場合は、１個の入力パケットに対して、一般的に、異なるデータおよび識別コードＬ／Ｒを格納したデータパケットが２個、プログラム記憶部５から出力される。
【００１４】
図１１において、発火制御部６はプログラム記憶部５から出力されるデータパケットの待合せ、すなわち世代番号およびノード番号が一致する異なる２つのデータパケットの検出を行ない、データ対を生成する機能を有する。発火制御部６の主要な構成要素である待合せメモリ（図１１には示されず）の記憶内容の一部が図１４に示される。図１４において、待合せメモリは、プログラム記憶部５からの入力パケットに格納されたノード番号と世代番号のアドレス部とに基づいてアドレス指定される。アドレス指定され得る各領域には世代番号の非アドレス部、待合せデータおよび発火制御フラグＶＬＤが格納される。
【００１５】
発火制御部６は、入力パケットに格納された命令コードが１入力命令を表わす場合は、該入力パケットをそのまま出力する。一方、入力パケットの命令コードが２入力命令である場合は、該入力パケットのノード番号と世代番号のアドレス部とをアドレスとして、待合せメモリをアクセスする。アクセスされた待合せメモリ中の指定アドレス領域に格納されたフラグＶＬＤが０である場合、入力パケットのフィールドＦ６またはＦ７に格納されたデータが待合せデータとして該指定アドレス領域に書込まれるとともに、該入力パケットの世代番号の非アドレス部が同様に書込まれる。その後、該指定アドレス領域のフラグＶＬＤを“１”に設定する。この場合、発火制御部６からはパケットは出力されない。
【００１６】
待合せメモリの指定アドレス領域に格納されたフラグＶＬＤが“１”である場合、入力パケットの世代番号の非アドレス部が、該指定アドレス領域に書込まれている世代番号の非アドレス部と一致するか否かが検出される。一致検出されれば、入力パケット中のフィールドＦ６またはＦ７に格納されたデータと待合せメモリの指定アドレス領域から読出されたデータとでデータ対が生成され、生成されたデータ対を格納したデータパケットが出力される。このとき、出力パケット中のフィールドＦ６およびＦ７に格納されるデータは次のように決定される。つまり、入力パケットの識別コードＬ／Ｒがコード“Ｌ”である場合は、入力パケット中のデータを出力パケットの左オペランドデータに、待合せメモリから読出された待合せデータを出力パケットの右オペランドデータにそれぞれ設定する。一方、識別コードＬ／Ｒがコード“Ｒ”である場合は、出力パケット中の左／右オペランドデータの設定内容を、前述した入力パケットのコードＬ／Ｒが“Ｌ”の場合と逆にする。また、入力パケットの命令コード、世代番号およびノード番号は、そのまま出力パケットのフィールドＦ２、Ｆ３およびＦ４にそれぞれ設定される。このとき、待合せメモリ中の該指定アドレス領域に格納されたフラグＶＬＤを“０”に設定する。
【００１７】
待合せメモリ中の指定アドレス領域に格納されたフラグＶＬＤが“１”であるが、入力パケットに格納された世代番号の非アドレス部が待合せメモリの該指定アドレス領域に書込まれている世代番号の非アドレス部と一致検出されなければ、入力パケットのスルーフラグＳＦが“１”に設定され、該入力パケットはそのまま出力される。
【００１８】
データパケットＰＡ中のスルーフラグＳＦは、通常の場合“０”に設定されているが、上述したように発火制御部６において入力パケットの世代番号の非アドレス部と待合せデータのそれとが一致しなければ、“１”に設定されることがある。図１１に示される情報処理装置３０の発火制御部６を除くすべての機能部では、フラグＳＦが“１”に設定されたデータパケットを入力した場合、該入力パケットに対しては何ら処理を行なわず、そのまま送出する。したがって、データパケットに格納されたスルーフラグＳＦが“１”に設定された後、“０”に設定（リセット）される場合は、発火制御部６においてデータ対が生成され、図１２に示されるような左／右オペランドデータを格納したパケット構成にて発火制御部６から該パケットが出力される場合である。以下、この場合を発火と呼ぶ。
【００１９】
図１１において、発火制御部６から出力されたデータパケットは、演算部２に与えられる。演算部２はデータパケットを入力し、該入力パケットの命令コードを解読し、その解読結果に従って該入力データパケットに格納された左オペランドデータまたは右オペランドデータに対して所定の演算処理を施し、その演算結果を該入力データパケットのフィールドＦ６に書込んで、該入力パケットを送出する。演算部２から出力されたデータパケットは、分岐部３に与えられる。分岐部３は入力パケットのノード番号に基づいて該入力データパケットを情報処理装置３０の外部または合流部４のいずれか一方に選択的に送出する。合流部４は情報処理装置３０の外部または分岐部３から与えられるデータパケットを入力し、該入力パケットを先着順にプログラム記憶部５に送出する。
【００２０】
このように、図１２に示されるようなデータパケットがプログラム記憶部５→発火制御部６→演算部２→分岐部３→合流部４→プログラム記憶部５→…と巡回し続けることにより、プログラム記憶部５に記憶されたデータフロープログラムに基づく演算処理が進行する。
【００２１】
【発明が解決しようとする課題】
上述した従来のプログラム記憶部５を用いたプログラムの実行制御方式では、コピーフラグＣＰＹによるコピー処理動作、または定数フラグＣＮＴによる定数データ処理動作があるか否かによってプログラムデータのフェッチ回数が異なるので、プログラム記憶部５のハードウェア回路を構成するうえでその機構（メカニズム）が煩雑になるという問題があった。この点を、図１５を参照して説明する。
【００２２】
図１５に示されるようにプログラム記憶部５は、転送制御部５１および５２、入力および出力レジスタ５３および５４、メモリ制御部５５、データフロープログラムを記憶するメモリ５６、メモリ５６から読出されたコピーフラグＣＰＹおよび定数フラグＣＮＴの状態を検出するフラグ検出部５７を含む。転送制御部５１は、合流部４からデータパケットが送出されたことを指示する転送パルスを受けると、入力レジスタ５３に対して、合流部４からのデータを格納し同時に送出させるような制御パルスを与えるとともに、転送制御部５２に対して転送パルスを与える。制御部５２は転送パルスを入力すると、出力レジスタ５４に対して、入力レジスタ５３およびメモリ５６からのデータを格納し同時に出力させるような制御パルスを与える。したがって、合流部４から送出されたデータパケットがプログラム記憶部５の入力レジスタ５３に記憶されるとき、その直前に記憶されていたデータは次段以降の回路に送出されるとともに、出力レジスタ５４に記憶されていたデータは、データパケットにして対データ検出部６へ送出される。
【００２３】
合流部４から送出されたデータパケットは、入力レジスタ５３に入力され、ここに一旦記憶された後、出力レジスタ５４に与えられ、ここに記憶される。また、メモリ制御部５５には、入力パケットのノード番号に基づくアドレス指定によりメモリ５６から次位のプログラムデータを読出すように動作する。読出されたプログラムデータのうちフラグＣＰＹおよびＣＮＴはフラグ検出部５７に与えられ、その他のデータは出力レジスタ５４に与えられる。出力レジスタ５４中に格納された入力パケットのデータのうち、命令コード、ノード番号および識別コードＬ／Ｒがメモリ５６から読出された次のプログラムデータを用いて更新される。フラグ検出部５７のフラグ検出の結果、メモリ５６に対して２回目のフェッチ動作が必要ないと判定された場合は、出力レジスタ５４中に格納されたデータパケットはそのまま発火制御部６へ送出される。
【００２４】
フラグ検出部５７のフラグ検出の結果、メモリ５６に対して２回目のフェッチ動作が必要と判定された場合は、出力レジスタ５４から１個目のデータパケットを発火制御部６へ出力すると同時に、転送制御部５１に対しさらなる１つのデータパケットの生成を指示し、かつメモリ制御部５５に対しメモリ５６へのさらなる１回のメモリアクセスサイクルの生成を指示するフィードバック制御が行なわれる。このとき転送制御部５１は合流部４から送出され入力レジスタ５３に格納されたデータパケットを再度出力レジスタ５４へ転送させる。これに並行してメモリ制御部５５は直前の指定アドレスに続く次のアドレスからデータを読出すので、読出されたデータは出力レジスタ５４に与えられ、ここで２個目のデータパケットが生成される。生成された２個目のデータパケットは転送制御部５２の制御により、１個目のデータパケットに続いて発火制御部６へ送出される。このとき、プログラム記憶部５の出力側からみて、データパケットが淀みなく出力されるような構成にするためには、転送制御部５１および５２、ならびにメモリ制御部５５のメカニズムが非常に複雑となる。
【００２５】
また、前述したコピー処理動作または定数データ処理動作のため、プログラム記憶部５のプログラムメモリに格納されるデータフロープログラムのステップ数が最悪の場合、このメモリにおいて記憶可能な最大プログラムステップ数の半分に減少してしまう。このように、プログラムの内容に応じて格納可能なプログラムステップ数が変化するので、予め所望のプログラムデータのすべてがプログラムメモリに格納可能か否かを判別し、この判別結果に応じてプログラムデータを適宜分割するなどして処理せねばならず、実用性に劣るという問題があった。
【００２６】
たとえば、今、プログラム記憶部５のプログラムメモリに格納可能な最大プログラムステップ数が２５６であったと想定する。
【００２７】
Ｙ＝ａｉ＊Ｘ（ただし、ａｉ：定数データ、Ｙ：結果データ、Ｘ：入力変数データ）…（１）
上述の（１）の演算式を複数個用意しておき、入力変数データＸに付加するノード番号を適宜変えることにより、複数個の演算式（１）のうち、いずれか１つの演算式が選択され結果が得られるといった演算手法がある。この場合、１つの式当りプログラムステップ数に関して演算命令＊のために１ステップ、定数データａｉのために１ステップの合計２ステップが必要なので、このプログラムメモリには式（１）を１２８個しか格納できない（最悪の事例）。
【００２８】
一方、
Ｙ＝Ｘ＊Ｚ（ただし、Ｙ、ＸおよびＺ：結果データ）…（２）のように乗算の他に加算、減算などを複数種用意しておき、入力変数データＸ，Ｚに付加するノード番号を適宜変えることにより、複数種の演算の中から１つが選択され演算されるといった手法がある。この場合は、各式（２）に対して１ステップ必要とされるので、プログラムメモリには式（２）を２５６個格納できる（最良の事例）。
【００２９】
したがって、上述の式（１）および（２）を混在したデータフロープログラムをプログラムメモリに記憶させる場合、定数データを有する式、すなわち上述の式（１）が幾つ含まれているかによりプログラムメモリに格納可能な式（１）および（２）の数が１２８〜２５６個の範囲で変動する。言い換えれば、上述の式（１）および（２）を含む複数個の式が記述されたデータフロープログラムをプログラムメモリに格納しようとする場合、該プログラム中に記述された各式について定数データを有するか否か調べないと、このプログラムがプログラムメモリに格納可能か否かを判別できないので、従来の情報処理装置は実用性に劣るという問題があった。
【００３０】
さらに、２入力命令コードが格納されたパケットは、すべて発火制御部６の待合せメモリにおいて対となる一方のオペランドデータの待合せを行なわねばならず、無駄な手続となる場合があった。詳細には、２入力命令コードのうち、一方のオペランドデータが定数データである場合は、前述したように定数データを格納したデータパケットが、この定数データと対になるオペランドデータを格納したデータパケットに連続してプログラム記憶部５から読出されているにもかかわらず、待合せメモリに一旦は、オペランドデータを書込んで、直後に入力される定数データを待合せるよう処理されているので、言わば冗長な処理手続のために処理速度の高速化が妨げられるという問題があった。
【００３１】
それゆえに、この発明の目的は、装置構成が簡単化されるとともにプログラムの実行速度向上を図ることが可能なデータ駆動型情報処理装置を提供することである。
【００３２】
【課題を解決するための手段】
この発明に係るデータ駆動型情報処理装置は、少なくとも行先フィールド、命令フィールドおよびデータフィールドからなるデータパケットを用いてデータフロープログラムを実行する装置であり、記憶手段と、制御手段と、演算手段とを備えて構成される。
【００３３】
記憶手段は、命令情報および行先情報を含むプログラムデータを格納するための複数のプログラム部と、各プログラム部のプログラムデータに対応した待合せデータを含む１つ以上のオペランドデータを格納するためのオペランド部と、プログラムデータおよびオペランドデータに関するコピー有無の指示を含む所定情報を格納するための情報部とを含む複数の領域を有する。
【００３４】
制御手段は、前述のデータパケットを入力し、入力データパケットの行先フィールドの内容に基づいて記憶手段中の領域をアドレス指定し、該指定領域中の所定情報にかかわらず該指定領域中の各プログラム部に対応した複数のデータパケットを生成し、該指定領域中の情報部の所定情報に基づいて複数生成データパケットを出力しないまたは複数生成データパケットのうちから１つ以上を出力し残りがあれば消去する。制御手段により複数生成データパケットのうちから１つ以上が出力され残りがあれば消去されるとき、出力される各データパケットにおいては、制御手段により行先フィールドおよび命令フィールドには、該データパケットに対応のプログラム部のプログラムデータに含まれる行先情報および命令情報がそれぞれ書込まれるとともに、データフィールドには入力データパケットのデータフィールドの内容が書込まれ、さらに該指定領域のオペランド部にオペランドデータが格納されていることに応じて、該オペランドデータがデータフィールドの内容に付加して書込まれる。
【００３５】
演算手段は、前述の制御手段より出力されるデータパケットを入力し、必要に応じて該入力データパケットの命令フィールドの内容に従って、該入力データパケットのデータフィールドの内容に対して所定演算処理を施し、その結果を該入力データパケットのデータフィールドに格納して出力するよう構成される。
【００３６】
【作用】
この発明に係るデータ駆動型情報処理装置におけるプログラム実行時、制御手段は入力データパケットの行先フィールドの内容に基づくアドレス指定により記憶手段の対応の領域を指定して、この指定領域に格納される次位の複数のプログラムデータとこれらのプログラムデータにより処理されるべきオペランドデータを読出し、オペランドデータ対を格納した複数のデータパケットを生成し演算手段に与える。したがってこの１回の読出動作により従来の次位のプログラムを得るためのアクセス動作と待合せデータを得るためのアクセス動作とが単一化される。また、記憶手段の１回のアドレス指定によりオペランドデータ対を格納した複数のデータパケットを得ることができる、言い換えると従来の複数回のアドレス指定と複数回のオペランドデータ対検出のための待合せ処理とからなるコピー処理が、１回のアドレス指定によるプログラムフェッチで終了する。それゆえに、プログラム実行時の処理段数が大幅に減少してプログラム実行速度は向上する。
【００３７】
さらに、記憶手段により従来のプログラムを記憶するための領域とオペランドデータを待合せるための領域が共有されるとともに、これらの記憶領域に関する周辺回路も単一化が可能となるので、該情報処理装置の構成が簡単化される。
【００３８】
【実施例】
以下、この発明の第１ないし第３の実施例について図面を参照して詳細に説明する。
【００３９】
各実施例に適用されるデータ駆動型情報処理装置においては従来のプログラム記憶部と発火制御部の機能が１つに統合されたプログラムの実行制御方式が採用される。
【００４０】
図１は、この発明の第１ないし第３の実施例に適用されるデータ駆動型情報処理装置のブロック構成図である。
【００４１】
図２は、この発明の第１ないし第３の実施例に適用される発火制御／プログラム記憶部のブロック構成図である。
【００４２】
図１においてデータ駆動型情報処理装置１０は発火制御／プログラム記憶部（以下、ＦＣＰ制御部と呼ぶ）１、演算部２、分岐部３および合流部４を含む。
【００４３】
演算部２、分岐部３および合流部４は、前述した図１１の従来のそれらと同様の構成および機能を有するので、その詳細な説明は省略する。なお、このデータ駆動型情報処理装置１０におけるデータパケットのフィールド構成も、図１２に示されたものと同様であるので説明は省略する。
【００４４】
ＦＣＰ制御部１は、従来のデータフロープログラムを格納したプログラム記憶部および対となるオペランドデータを待合せるためのメモリを有する発火制御部の機能を備えるように構成され、さらに両機能によって共有される１つのメモリ空間を有する。
【００４５】
図２にＦＣＰ制御部１のブロック構成が示される。ＦＣＰ制御部１は転送制御部１１〜１３、ＦＣＰメモリ１４、パケット消去部１５、合流制御部１６、セレクタ１７、レジスタ１８〜２１を含む。
【００４６】
レジスタ１８〜２１のそれぞれは、複数ビット幅のフリップフロップ回路からなる。転送制御部１１〜１３のそれぞれは、対応のレジスタ１８〜２１のそれぞれに対してその入力動作をクロックパルスＣＰ１〜ＣＰ３のそれぞれを用いて制御するとともに、対応のレジスタに格納されているデータを次段以降の各回路に転送するための転送パルスＴＰ１〜ＴＰ３のそれぞれを送出する。
【００４７】
ＦＣＰメモリ１４は、プログラムのための記憶領域と対となるオペランドデータを待合せるための待合せのための記憶領域とが共有されたメモリである。その詳細は後述するが、ＦＣＰメモリ１４においては前述のコピー処理または定数データ処理があるか否かにかかわらずプログラムデータのフェッチ回数が常に１回であるように構成されている。１回のフェッチで、各々が有効か無効かに関わらず、常に２つのプログラムデータが読出される。読出されたプログラムデータの１つはレジスタ１９に送出され、他の１つはレジスタ２０に送出される。
【００４８】
転送制御部１２および１３は対応のレジスタ１９および２０に対してクロックパルスＣＰ２およびＣＰ３をそれぞれ供給して与えられるデータを入力するよう制御する。転送制御部１２および１３はクロックパルスＣＰ２およびＣＰ３の送出と共に、転送パルスＴＰ２およびＴＰ３をそれぞれ送出する。
【００４９】
レジスタ１８に格納された入力データＸ、世代番号ＧＮ♯はレジスタ１９および２０にそのまま送出される。また、レジスタ１８に格納されたノード番号ＮＤ♯と世代番号ＧＮ♯のアドレス部とに基づくアドレス指定によりＦＣＰメモリ１４から読出された次位の命令コードおよびノード番号は命令コードｏｐｃおよびノード番号ＮＤ♯にして格納される。また、メモリ１４から読出された待合せデータは定数または待合せデータＺにしてレジスタ１９および２０に記憶される。また、メモリ１４から読出されたコピーフラグＣＰＹはレジスタ１９にのみ送出される。
【００５０】
転送制御部１２および１３は転送制御部１１から与えられる転送パルスＴＰ１の入力に応答してクロックパルスＣＰ２およびＣＰ３をレジスタ１９および２０のそれぞれに与えるので、レジスタ１９および２０はレジスタ１８およびメモリ１４から与えられるデータを入力する。
【００５１】
パケット消去部１５は転送制御部１２から与えられる転送パルスＴＰ２を、レジスタ１９にストアされたコピーフラグＣＰＹのフラグの状態に応答して合流制御部１６に与えるか否かを制御する。
【００５２】
合流制御部１６は非同期に与えられる転送パルスＴＰ３およびＴＰ２を入力し、応じて時系列に整序し、演算部２へ出力するとともにクロックパルスＣＰ４をレジスタ２１に送出する。この時、合流制御部１６は演算部２およびレジスタ２１へ出力された各パルスが、転送パルスＴＰ２に応じたものか、転送パルスＴＰ３に応じたものかの識別信号ＳＬをセレクタ１７に出力する。
【００５３】
セレクタ１７は、識別信号ＳＬの状態に応じて、パルスＴＰ３に対応した状態の場合はレジスタ２０の出力データを選択しレジスタ２１に出力する。パルスＴＰ２に対応した状態の場合には、レジスタ１９の出力データを選択しレジスタ２１に出力する。
【００５４】
合流制御部１６は転送パルスＴＰ３の入力に応答してクロックパルスＣＰ４をレジスタ２１に与える。レジスタ２１はセレクタ１７から送出されるレジスタ１９または２０にストアされていたデータを入力して送出するので、ＦＣＰ制御部１からはレジスタ２１に格納されたデータのそれぞれが所定のフィールドに格納されたデータパケットが出力される。
【００５５】
このように本実施例によるＦＣＰ制御部１においては、ＦＣＰメモリ１４（プログラムメモリ）に対する１回のフェッチ動作により、２個分のデータパケットが読出されるので、従来行なっていた１個目のデータパケットに引き続いて２個目のデータパケットを連続してフェッチするためのフィードバック制御は不要となる。また、データパケットのコピー有無の制御は、読出された２個のデータパケットのうち一方を、読出されたコピーフラグＣＰＹに従って消去しない／消去するのフォアード制御で行なわれているので、ＦＣＰメモリ１４からプログラムフェッチするためのメカニズムの実現は従来に比べ極めて容易となる。
【００５６】
図３（ａ）〜（ｆ）は、この発明の第１の実施例によるＦＣＰメモリ１４に記憶される内容の一部を示す図である。
【００５７】
図３を参照して、ＦＣＰメモリ１４には複数のプログラムワードが格納され、各プログラムワードは１組目のデータ、２組目のデータおよび世代番号の非アドレス部を格納する。１組目のデータは発火制御フラグＶＬＤ、コピーフラグＣＰＹ、定数フラグＣＮＴ、命令コード、ノード番号、左／右識別コードＬ／Ｒおよび定数データまたは待合せデータを格納する。２組目のデータは定数フラグＣＮＴ、命令コード、ノード番号、左／右識別コードＬ／Ｒおよび定数データまたは待合せデータを格納する。なお、各プログラムワード中“−”は無効データを意味する。
【００５８】
第１の実施例においてＦＣＰメモリ１４に格納されるプログラムワードの内容は、該プログラムワードに格納されるコピーフラグＣＰＹの状態、２個の定数フラグＣＮＴの状態、および１個または２個の命令コードのそれぞれが１入力命令であるか２入力命令であるかにより分類される。これら分類のうち、図３（ａ）〜（ｆ）には代表的な６種類のプログラムワードが示される。
【００５９】
図３（ａ）は、「１入力命令」のプログラムワードであり、コピーフラグＣＰＹと１組目の定数フラグＣＮＴが共に“０”であり、１組目の命令コードが１入力命令の場合である。ＦＣＰ制御部１に入力されるデータパケットの世代番号のアドレス部とノード番号とに基づいてＦＣＰメモリ１４をアドレス指定し、指定アドレスから該命令をフェッチした場合は、フェッチされた１組目のデータの命令コード、ノード番号および識別コードＬ／Ｒが該入力パケットのフィールドＦ２、Ｆ４およびＦ５のそれぞれに書込まれ、該入力パケットはＦＣＰ制御部１から送出される。このように、「１入力命令」の場合は、対オペランドデータを待合せる必要がないので、待合せ処理は行なわれない。
【００６０】
図３（ｂ）の「定数あり２入力命令」は、コピーフラグＣＰＹが“０”であり、かつ１組目のデータの定数フラグＣＮＴが“１”の場合である。この場合、１組目のデータの命令コードは、２入力命令に限られる。ＦＣＰ制御部１に入力されたデータパケットの世代番号のアドレス部とノード番号とに基づくアドレス指定によりＦＣＰメモリ１４から該命令をフェッチした場合は、入力パケット中のオペランドデータとＦＣＰメモリ１４から読出された定数データとでオペランドデータ対が生成され、生成されたオペランドデータ対は入力パケット中のフィールドＦ６およびＦ７に書込まれて、該入力パケットが送出される。このとき、出力されるパケット中の左／右オペランドデータの値は、該入力パケット中の左／右識別コードＬ／Ｒが“Ｌ”である場合は、入力パケット中のオペランドデータを左オペランドデータにしてフィールドＦ６に格納し、ＦＣＰメモリ１４から読出された定数データを右オペランドデータにしてフィールドＦ７に格納する。一方、入力パケットの識別コードＬ／Ｒが“Ｒ”の場合は、出力パケット中の左オペランドデータと右オペランドデータの設定を前述した“Ｌ”の場合と逆にする。また、出力パケット中の命令コード、ノード番号および左／右識別コードＬ／Ｒには、ＦＣＰメモリ１４からフェッチされた１組目のデータ中の命令コード、ノード番号および左／右識別コードＬ／Ｒがそれぞれ設定される。なお、出力パケット中の世代番号は、入力パケット中の世代番号がそのまま設定される。
【００６１】
このように、ＦＣＰメモリ１４から「定数あり２入力命令」をフェッチするだけで、定数データを用いて発火したデータパケットが得られるので、従来行なわれていた定数データ処理のための２回のフェッチ動作、およびオペランドデータ対となる定数データを待合せメモリを介して待合せる動作が省略されることになる。
【００６２】
図３（ｃ）の「コピーあり命令」は、コピーフラグＣＰＹが“１”であり、かついずれか一方の定数フラグＣＮＴが“１”の場合である。この命令では、定数フラグＣＮＴが“１”の組の命令コードは２入力命令に限られる。また、定数フラグＣＮＴが“０”の組の命令コードは１入力命令に限られる。ＦＣＰ制御部１に入力されるデータパケットの世代番号のアドレス部とノード番号とに基づくアドレス指定により、ＦＣＰメモリ１４から該命令をフェッチした場合は、定数フラグＣＮＴが“１”の組のデータに対しては、前述した図３（ｂ）の「定数あり２入力命令」と同様の処理が行なわれる。また、定数フラグＣＮＴが“０”の組のデータに対しては、前述した図３（ａ）の「１入力命令」と同様の処理が行なわれる。
【００６３】
したがって、ＦＣＰメモリ１４から該命令をフェッチするだけで、１入力命令を格納したデータパケットと定数データを用いて発火したデータパケットとの２つのデータパケットが同時に得られることになる。
【００６４】
図３（ｄ）の「定数なし２入力命令」は、コピーフラグＣＰＹおよび１組目の定数フラグＣＮＴが共に０の場合であり、かつ１組目の命令コードが２入力命令の場合である。この場合は、発火制御フラグＶＬＤの状態により、ＦＣＰ制御部１の処理内容が異なる。ＦＣＰ制御部１に入力されるパケットの世代番号のアドレス部とノード番号とに基づくアドレス指定により、ＦＣＰメモリ１４から読出されたフラグＶＬＤが“０”の場合、入力パケット中のオペランドデータおよび世代番号の非アドレス部を、ＦＣＰメモリ１４の該指定アドレス領域の１組目の待合せデータおよび世代番号の非アドレス部としてそれぞれ書込んだ後、対応のフラグＶＬＤを“１”に設定する。このとき、ＦＣＰ制御部１からはデータパケットは出力されない。
【００６５】
ＦＣＰメモリ１４中の該指定アドレス領域のフラグＶＬＤが“１”である場合、入力パケットの世代番号の非アドレス部が該指定アドレス領域に書込まれている世代番号の非アドレス部と一致するかどうか判定する。一致すれば、入力パケット中のオペランドデータと該指定アドレス領域から読出された待合せデータとでデータ対が生成され、生成されたデータ対を格納したデータパケットが出力される。このとき、出力パケット中の左／右オペランドデータの値は、入力パケットの識別コードＬ／Ｒが“Ｌ”の場合は、入力パケット中のオペランドデータが出力パケット中のフィールドＦ６に左オペランドデータとして、ＦＣＰメモリ１４から読出された待合せデータは出力パケットのデータフィールドＦ７に右オペランドデータとしてそれぞれ設定される。一方、入力パケット中の識別コードＬ／Ｒが“Ｒ”である場合は、出力パケット中の左／右オペランドデータの設定が前述した“Ｌ”の場合と逆に行なわれる。
【００６６】
また、出力パケット中の命令コード、ノード番号および左／右識別コードＬ／Ｒは、フェッチされた１組目の命令コード、ノード番号および左／右識別コードＬ／Ｒを用いてそれぞれ書換えられる。また、出力パケット中の世代番号は、入力パケット中の世代番号がそのまま設定される。このとき、パケット出力と共に、ＦＣＰメモリ１４の該指定アドレス領域のフラグＶＬＤを０に設定する。
【００６７】
一方、入力パケットの世代番号の非アドレス部がＦＣＰメモリ１４の該指定アドレス領域に格納された世代番号の非アドレス部と一致しなければ、該入力パケットのスルーフラグＳＦを１に設定し、該入力パケットをそのまま出力する。スルーフラグＳＦが“１”に設定されたデータパケットは、従来と同様に、ＦＣＰ制御部１を除くすべての機能部では何ら処理されず、再びＦＣＰ制御部１に入力される。スルーフラグＳＦが“１”に設定されたデータパケットは、ＦＣＰ制御部１においてデータ対が検出されると“０”にセット（リセット）されるが、それまではそのフラグ状態が維持されて各機能部を巡回する。
【００６８】
したがって、ＦＣＰメモリ１４から該命令をフェッチした場合には、まず該命令に格納されたフラグＶＬＤの状態が判別されて、該判別結果に応じて発火したデータパケットが得られるか、または該メモリ１４において発火パケットを生成するために対となるオペランドデータの入力を待合せるような処理が行なわれるので、ＦＣＰ制御部１は従来のプログラム記憶部と発火制御部の両機能を兼ね備えることになる。
【００６９】
図３（ｅ）の「２入力命令（コピーあり）」は、コピーフラグＣＰＹが“１”であり、かついずれの定数フラグＣＮＴも“０”の場合である。この場合、２組の命令コードは共に２入力命令に限られる。ＦＣＰ制御部１は入力パケットの世代番号のアドレス部とノード番号とに基づくアドレス指定によりＦＣＰメモリ１４から該命令をフェッチした場合、該命令に格納されたフラグＶＬＤの状態をまず判別する。フラグＶＬＤが“０”の場合、入力パケット中のオペランドデータおよび世代番号の非アドレス部を、ＦＣＰメモリ１４の該指定アドレス領域に１組目の待合せデータおよび世代番号の非アドレス部として書込み、対応のフラグＶＬＤを“１”に設定する。このとき制御部１からはデータパケットは出力されない。
【００７０】
読出されたＦＣＰメモリ１４中のフラグＶＬＤが“１”の場合、入力パケットの世代番号の非アドレス部がＦＣＰメモリ１４の該指定アドレス領域に書込まれている世代番号の非アドレス部と一致するか否かを判定する。一致すれば、入力パケット中のオペランドデータとＦＣＰメモリ１４から読出された待合せデータとからなるデータ対を格納した２個のデータパケットを出力する。このとき、両出力パケット中の左／右オペランドデータの値は、入力パケットの識別コードＬ／Ｒが“Ｌ”の場合は、入力パケット中のオペランドデータを出力パケットのフィールドＦ６に左オペランドデータにして、ＦＣＰメモリ１４から読出された待合せデータを出力パケットのフィールドＦ７に右オペランドデータにしてそれぞれ設定する。一方、入力パケットの識別コードＬ／Ｒが“Ｒ”の場合は、出力パケットの左／右オペランドデータの設定が前述した“Ｌ”の場合と逆に行なわれる。
また、両出力パケット中の命令コード、ノード番号および識別コードＬ／Ｒには、フェッチされた１組目のデータおよび２組目のデータに格納された命令コード、ノード番号および識別コードＬ／Ｒがそれぞれ設定される。この２個のパケット出力時、ＦＣＰメモリ１４中の該指定アドレス領域に対応のフラグＶＬＤは“０”に設定される。
【００７１】
一方、入力パケット中の世代番号の非アドレス部がＦＣＰメモリ１４の該指定アドレス領域に書込まれている世代番号の非アドレス部と一致しなければ、入力パケットのスルーフラグＳＦが“１”に設定されて、該入力パケットはそのまま出力される。以降の各処理部におけるスルーフラグＳＦが“１”に設定されたデータパケットの取扱いは、前述した図３（ｄ）の場合と同様である。
【００７２】
したがって、ＦＣＰメモリ１４から該命令をフェッチした場合には、まず該命令に格納された発火制御フラグＶＬＤの状態が判別されて、該判別結果に応じて発火検出され、同じオペランドデータ対を格納した異なる２つのデータパケットが同時に得られるか、または該メモリ１４においてこの２つの発火パケットを生成するために対となるオペランドデータの入力を待合せるような処理が行なわれる。
【００７３】
図３（ｆ）の「定数なし２入力命令／定数あり命令混在」は、コピーフラグＣＰＹが“１”であり、かついずれか一方の定数フラグＣＮＴが“１”の場合である。２組の命令コードは共に２入力命令に限られる。ＦＣＰ制御部１が入力パケットの世代番号のアドレス部とノード番号に基づくアドレス指定によりＦＣＰメモリ１４から該命令をフェッチした場合、まず該メモリに格納される発火制御フラグＶＬＤが判別される。発火制御フラグＶＬＤが“０”の場合、入力パケット中の世代番号の非アドレス部とオペランドデータとをＦＣＰメモリ１４の該指定アドレス領域の世代番号の非アドレス部と定数フラグＣＮＴが０のデータ組の待合せデータとしてそれぞれ書込んだ後、対応のフラグＶＬＤを“１”に設定する。このときＦＣＰ制御部１からはデータパケットは出力されない。
【００７４】
ＦＣＰメモリ１４の該指定アドレス領域に格納されたフラグＶＬＤが“１”の場合、入力データパケットの非アドレス部は該指定アドレス領域に書込まれている世代番号の非アドレス部と一致するかどうか判定される。一致すれば、入力パケット中のオペランドデータとＦＣＰメモリ１４の該指定アドレス領域から読出された定数フラグＣＮＴが“０”の組の待合せデータとで生成されたデータ対を格納したデータパケットが出力されるとともに、入力パケット中のオペランドデータとＦＣＰメモリ１４の該指定アドレス領域から読出された定数フラグＣＮＴが“１”の組の定数データとで生成されたデータ対を格納したデータパケットが出力される。このとき、両出力パケット中の左／右オペランドデータの値は、入力パケットのコードＬ／Ｒが“Ｌ”の場合は、入力パケット中のオペランドデータは出力パケットのフィールドＦ６に左オペランドデータにして、ＦＣＰメモリ１４の該指定アドレス領域から読出されたデータ（待合せデータまたは定数データ）を出力パケットのフィールドＦ７に右オペランドデータにしてそれぞれ設定する。一方、入力パケット中の識別コードＬ／Ｒが“Ｒ”の場合は、出力データパケットの左／右オペランドデータの設定を前述した“Ｌ”の場合と逆に行なう。
【００７５】
また、両出力パケット中の命令コード、ノード番号および左／右識別コードＬ／Ｒのそれぞれは、フェッチされた対応の組のデータに格納された命令コード、ノード番号およびコードＬ／Ｒがそれぞれ設定される。また、両出力パケット中の世代番号は、入力パケット中の世代番号がそのまま設定される。この両出力パケットが生成されると、ＦＣＰメモリ１４中の該指定アドレス領域に対応のフラグＶＬＤは“０”に設定される。
【００７６】
入力パケットの世代番号の非アドレス部がＦＣＰメモリ１４の該指定アドレス領域に書込まれている世代番号の非アドレス部と一致しなければ、入力パケットのスルーフラグＳＦが“１”に設定されて、出力される。スルーフラグＳＦが“１”に設定されたデータパケットに対する取扱いは、前述した「定数なし２入力命令」の場合と同様である。
【００７７】
このようにＦＣＰ制御部１から出力されたデータパケットは演算部３に与えられ以降各処理部において処理される。
【００７８】
このようにＦＣＰ制御部１を設けることにより従来のプログラム記憶機能とオペランドデータ対を待合せるための待合せ機能とがＦＣＰメモリ１４を介して統合されるので、従来のコピー処理動作または定数データ処理動作の有無にかかわらず、ＦＣＰメモリ１４からのプログラムワードのフェッチ回数は常に１回でよい。また、このことは、プログラム内容（定数データ処理の有無、コピー処理の有無）にかかわらず、ＦＣＰメモリ１４に格納可能なプログラムワード数、すなわちプログラムステップ数を常に一定とする。
【００７９】
図４（ａ）〜（ｃ）は、ＦＣＰメモリ１４のアドレス指定方法とメモリにおけるプログラムの記憶形式を説明する図である。
【００８０】
図５は、ＦＣＰ制御部１に入力するデータパケットに格納された左／右識別コードＬ／Ｒを反転させるフラグを含むプログラムワード構成の１例を示す図である。
【００８１】
図６（ａ）〜（ｄ）は、この発明の第１の実施例において新たにサポートされる命令を説明する図である。
【００８２】
上述した第１の実施例では、入力パケットの世代番号のアドレス部とノード番号とに基づくアドレス指定によりＦＣＰメモリ１４をアクセスしている。これは、データ駆動型情報処理装置に複数の異なる世代番号を格納したデータパケットを並列、かつ個別に処理するような場合において、データパケットに格納された世代番号の一部をこのメモリアクセスのためのアドレス部として用い、ＦＣＰメモリ１４において消費されるプログラムワード記憶のための記憶領域を小さくするためである。仮に、ＦＣＰメモリ１４の容量として、データフロープログラムの総ステップ（ワード）数と同時に実行される異なる世代番号の数の積の値よりも大きな容量を用意できれば、世代番号の一部を用いたアドレス指定を行なう必要はない。この場合は、図３に示された各プログラムワードから世代番号の非アドレス部を格納する領域を取り除くことができるので、１プログラムワード当りのサイズ（幅）を小さくできるとともに、ＦＣＰメモリ１４の各プログラムワードに入力パケットの世代番号の非アドレス部を書込む必要がなく、さらにオペランドデータ対を検出するための世代番号の非アドレス部を用いた一致検出を行なう必要がなくなり、ＦＣＰ制御部１の実行制御方式はさらに容易となる。
【００８３】
たとえばＦＣＰ制御部１の入力パケットに格納されたノード番号のビット幅が４ビット、世代番号のビット幅が２ビットの場合を考える。図４（ａ）に示されるようにＦＣＰメモリ１４アクセスのためのアドレスとして、入力パケットのノード番号と世代番号すべてが用いられた場合、ＦＣＰメモリ１４には、異なる世代番号のそれぞれについて４ビットのノード番号を用いてアクセス可能な１６プログラムワードからなるプログラムデータを個別に記憶する必要がある。この場合は、ＦＣＰメモリ１４において少なくとも６４プログラムワード分の記憶容量を準備する必要があるが、世代番号の一部（非アドレス部）を用いた対データ検出処理は不要なので、各プログラムワードサイズ（幅）は図３に示されたそれよりも小さくすることができる。
【００８４】
図４（ｂ）に示されるように、ＦＣＰメモリアクセスのためのアドレスとして入力パケットのノード番号と世代番号のアドレス部（１ビット）を用いた場合は、異なる世代番号のアドレス部のそれぞれについて１６ワードからなるプログラムデータを個別に記憶するので、ＦＣＰメモリ１４においては少なくとも３２プログラムワード分の記憶容量を備える必要がある。この場合に記憶されるプログラムワード数は、前述した図４（ａ）に示されたそれの半分に縮小される。
【００８５】
また、図４（ｃ）に示されるように、ＦＣＰメモリ１４アクセスのためのアドレスとして入力データパケットのノード番号のみが用いられた場合、複数の異なる世代番号のそれぞれについてノード番号（４ビット）を用いてアクセスされるプログラムのみを記憶すればよい。このような場合は、ＦＣＰメモリ１４はプログラム記憶容量として図４（ａ）のそれの１／４倍を備えるだけでよい。ただし、異なる世代番号を有した複数のデータパケット同士で同一ノード番号のプログラムデータに関する処理が要求されても、１パケットずつ順に処理されることになる。
【００８６】
図３（ａ）〜（ｆ）に示されたプログラムワードの１組目または２組目の命令コード、ノード番号、識別コードＬ／Ｒ、定数／待合せデータに対して入力パケットのオペランドデータの左右属性を反転させるか否かを示すフラグＳＷＰを図５に示すように設けることもできる。このフラグＳＷＰにより、対データ検出されて生成される出力パケットのうち、ＳＷＰフラグの値が“１”に対応の出力パケットの左オペランドデータと右オペランドデータが交換される。フラグＳＷＰの値が“０”の場合は、フラグＳＷＰを設けていない場合と全く同様に動作する。
【００８７】
図６（ａ）〜（ｄ）を参照し、この発明の第１の実施例により新たにサポートされる命令を、従来の対応の命令と比較して説明する。
【００８８】
図６（ａ）に示されるようにオペランドデータ対が共通である異なる２つの命令コードを実行する場合は、従来は命令コード“ＮＯＰ”、命令コード“＋”および命令コード“−”の３つの命令コードを用いるためにプログラム記憶部を３回フェッチする必要があったが、本実施例では命令コード“＋”および命令コード“−”が１プログラムワードに格納されているので、１回のフェッチで該命令コードを実行することができる。
【００８９】
また、図６（ｂ）および（ｃ）に示されるように一方のオペランドデータのみが共通である異なる２つの命令コードを実行する場合、従来は３回の命令フェッチが必要であったが、本実施例では１回の命令フェッチでよい。また、図６（ｄ）に示されるように、一方のオペランドデータの左右属性を反転する際は、従来は３回の命令フェッチが必要であったが、本実施例では左右属性反転フラグＳＷＰを設けることにより１回の命令フェッチですむ。
【００９０】
以上のように図６（ａ）〜（ｄ）に示されるように従来は同じ処理内容を実行する際に少なくとも３プログラムステップ数必要であったものが、本実施例によれば１プログラムステップ数に短縮される。
【００９１】
次に、第２の実施例について説明する。
第２の実施例によるデータ駆動型情報処理装置は、ＦＣＰメモリ１４に格納されるプログラムワードの構成が第１の実施例のそれとは異なるだけであり、その他の構成および動作は第１の実施例のそれと同様である。
【００９２】
図７（ａ）〜（ｆ）は、この発明の第２の実施例によるＦＣＰメモリ１４に格納される記憶内容の一部を示す図である。
【００９３】
図８（ａ）〜（ｅ）は、この発明の第３の実施例によるＦＣＰメモリ１４に格納される記憶内容の一部を示す図である。
【００９４】
図７を参照し、ＦＣＰメモリ１４には複数のプログラムワードが格納される。各プログラムワードは１組目のデータ、２組目のデータ、定数データまたは待合せデータ、発火制御フラグＶＬＤおよび世代番号の非アドレス部を含む。１組目のデータはさらに定数フラグＣＮＴ、コピーフラグＣＰＹ、命令コード、ノード番号および左／右識別コードＬ／Ｒを含む。２組目のデータはさらに命令コード、ノード番号および左／右識別コードＬ／Ｒを含む。ＦＣＰメモリ１４に格納されるプログラムワードの内容は、定数フラグＣＮＴ、コピーフラグＣＰＹおよび命令コードによって複数種類に分類されるが、図７（ａ）〜（ｆ）にはその代表的なプログラムワードが記される。なお、図中、“−”は無効データを示す。
【００９５】
図７（ａ）の「１入力命令」は、定数フラグＣＮＴ、コピーフラグＣＰＹが共に“０”であり、かつ命令コードが１入力命令の場合である。ＦＣＰ制御部１に入力されるデータパケットの世代番号のアドレス部とノード番号とに基づくアドレス指定によりＦＣＰメモリ１４から該命令をフェッチした場合は、フェッチされた命令コード、ノード番号および識別コードＬ／Ｒを該入力パケットの所定フィールドに書込み、該入力パケットを出力する。
【００９６】
図７（ｂ）の「コピーあり１入力命令」は、定数フラグＣＮＴが“０”であり、コピーフラグＣＰＹが“１”であり、かつ１組目および２組目のデータに格納された命令コードが共に１入力命令の場合である。ＦＣＰ制御部１に入力されるデータパケットの世代番号のアドレス部とノード番号とに基づくアドレス指定によりＦＣＰメモリ１４から該命令をフェッチした場合は、２個のパケットが出力される。出力パケットのうち一方のパケットは、フェッチされた１組目の命令コード、ノード番号およびコードＬ／Ｒを入力パケットの対応のフィールドにそれぞれ格納したものであり、他方の出力パケットはフェッチされた２組目の命令コード、ノード番号およびコードＬ／Ｒを入力パケットの対応のフィールドにそれぞれ格納したものである。
【００９７】
これにより、同じオペランドデータを有した異なる２つのデータパケットを、ＦＣＰメモリ１４の１回のフェッチ動作により同時に得ることができる。
【００９８】
図７（ｃ）の「定数あり２入力命令」は、定数フラグＣＮＴが“１”、コピーフラグＣＰＹが“０”の場合である。この場合の命令コードは２入力命令に限られる。ＦＣＰ制御部１に入力されるデータパケット中の世代番号のアドレス部とノード番号とに基づくアドレス指定により、ＦＣＰメモリ１４から該命令をフェッチした場合は、入力パケット中のオペランドデータとＦＣＰメモリ１４から読出された定数データとでデータ対を生成し、生成されたデータ対を格納したデータパケットを出力する。このとき、出力パケット中の左／右オペランドデータの値は、入力パケットの識別コードＬ／Ｒが“Ｌ”の場合は、入力パケット中のオペランドデータを出力パケットのフィールドＦ６に左オペランドデータにして、ＦＣＰメモリ１４から読出された定数データを出力パケットのフィールドＦ７に右オペランドデータにしてそれぞれ設定する。入力パケット中のコードＬ／Ｒが“Ｒ”の場合は、出力パケットの左／右オペランドデータの設定を前述した“Ｌ”の場合と逆にする。また、出力パケット中の命令コード、ノード番号および識別コードＬ／Ｒは、フェッチされた命令コード、ノード番号および識別コードＬ／Ｒが設定され、また出力パケットの世代番号は入力パケット中の世代番号がそのまま設定される。
【００９９】
このように定数データを用いた２入力命令がＦＣＰメモリ１４から読出されるとき、１回のプログラムフェッチにより、発火が検出されて、対オペランドデータを格納したデータパケットを得ることができる。
【０１００】
図７（ｄ）の「定数あり２入力命令（コピーあり）」は、定数フラグＣＮＴおよびコピーフラグＣＰＹが“１”の場合である。この場合の命令コードは、２組の命令コードのうち少なくとも一方が２入力命令に限られる。ＦＣＰ制御部１に入力されるデータパケットに格納された世代番号のアドレス部とノード番号とに基づくアドレス指定により、ＦＣＰメモリ１４から該命令をフェッチした場合は、入力パケット中のオペランドデータとＦＣＰメモリ１４の該指定アドレス領域から読出された定数データとでオペランドデータ対が生成され、生成されたオペランドデータ対を格納した２つのデータパケットが出力される。このとき、両出力パケット中の左／右オペランドデータの値は、入力パケットの識別コードＬ／Ｒが“Ｌ”の場合は、入力パケット中のオペランドデータを各出力パケットのフィールドＦ６に左オペランドデータとして、ＦＣＰメモリ１４の該指定アドレス領域から読出された定数データを各出力パケットのフィールドＦ７に右オペランドデータとしてそれぞれ設定する。一方、入力パケット中のコードＬ／Ｒが“Ｒ”の場合は、各出力パケットの左／右オペランドデータの設定を前述した“Ｌ”の場合と逆に行なう。また、両出力パケットのうち、一方の出力パケットの命令コード、ノード番号およびコードＬ／Ｒにはフェッチされた一方の組の命令コード、ノード番号およびコードＬ／Ｒをそれぞれ設定し、他方の出力パケットの命令コード、ノード番号およびコードＬ／Ｒにはフェッチされた他方の組の命令コード、ノード番号およびコードＬ／Ｒをそれぞれ設定する。また、両出力パケットの世代番号は入力パケット中の世代番号がそのまま設定される。
【０１０１】
このように、同じオペランドデータ対（定数データを含む）を有する異なる２つのデータパケットが、ＦＣＰメモリ１４の１回のフェッチ動作により同時に得ることができる。
【０１０２】
図７（ｅ）の「定数なし２入力命令」は、定数フラグＣＮＴおよびコピーフラグＣＰＹが共に“０”の場合であり、かつ命令コードが２入力命令の場合である。ＦＣＰ制御部１に入力されるデータパケットの世代番号のアドレス部とノード番号とに基づくアドレス指定によりＦＣＰメモリ１４から該メモリがフェッチされた場合、まずフラグＶＬＤの状態が判定される。フラグＶＬＤが“０”の場合、入力パケット中のオペランドデータと世代番号の非アドレス部がＦＣＰメモリ１４の該指定アドレス領域に待合せデータおよび世代番号の非アドレス部としてそれぞれ書込まれた後、対応のフラグＶＬＤは“１”に設定される。このとき、ＦＣＰ制御部１からはデータパケットは出力されない。
【０１０３】
ＦＣＰメモリ１４の該指定アドレス領域のフラグＶＬＤが“１”の場合は、まず、入力パケットの世代番号の非アドレス部が該指定アドレス領域に書込まれている世代番号の非アドレス部と一致するかどうか判定される。一致すれば、入力パケット中に格納されていたオペランドデータと該指定アドレス領域から読出された待合せデータとでデータ対が生成され、生成されたデータ対を格納したデータパケットが出力される。このとき、出力パケット中の左／右オペランドデータの値は、入力パケットのコードＬ／Ｒが“Ｌ”の場合は、入力パケット中のオペランドデータを出力パケットのフィールドＦ６に左オペランドデータとして、ＦＣＰメモリ１４の該指定アドレス領域から読出された待合せデータを出力パケットのフィールドＦ７に右オペランドデータとしてそれぞれ設定する。一方、入力パケットのコードＬ／Ｒが“Ｒ”の場合は、出力パケットの左／右オペランドデータの設定を前述した“Ｌ”の場合と逆に行なう。また、出力パケット中の命令コード、ノード番号および識別コードＬ／Ｒは、ＦＣＰメモリ１４からフェッチされた命令コード、ノード番号および識別コードＬ／Ｒがそれぞれ設定される。
また、出力パケットの世代番号には入力パケット中の世代番号がそのまま設定される。この出力パケット送出時、ＦＣＰメモリ１４中の該指定アドレス領域に格納されたフラグＶＬＤは“０”に設定される。
【０１０４】
入力パケットの世代番号の非アドレス部がＦＣＰメモリ１４の該指定アドレス領域に書込まれている世代番号の非アドレス部と一致しなければ、入力パケットのスルーフラグＳＦを“１”に設定して該入力パケットをそのまま出力する。スルーフラグＳＦが“１”に設定されたデータパケットは、以降の各処理部では何ら処理されず、再びＦＣＰ制御部１に入力する。スルーフラグＳＦが“１”に設定されたデータパケットは、ＦＣＰ制御部１において対となるオペランドデータが検出されると“０”にセット（リセット）されるが、それまで、そのスルーフラグは“１”のままデータ駆動型情報処理装置を巡回することになる。
【０１０５】
このように、ＦＣＰメモリ１４の１プログラムワードのための領域を従来の１プログラムデータを記憶するための領域と対となるオペランドデータを待合せるための領域とに兼用して、ＦＣＰメモリ１４からのプログラムデータのフェッチ動作は１回で済まされる。
【０１０６】
図７（ｆ）の「コピーあり２入力命令」は、定数フラグＣＮＴが“０”で、コピーフラグＣＰＹが“１”の場合であり、かつ格納される２組の命令コードのうち少なくとも一方が２入力命令の場合である。ＦＣＰ制御部１は入力パケットの世代番号のアドレス部とノード番号とに基づくアドレス指定によりＦＣＰメモリ１４からプログラムワードをフェッチする。フェッチされたプログラムワード中のフラグＶＬＤが“０”の場合、入力パケット中のオペランドデータと世代番号の非アドレス部がＦＣＰメモリ１４の該指定アドレス領域に待合せデータおよび世代番号の非アドレス部としてそれぞれ書込まれた後、対応のフラグＶＬＤが“１”に設定される。このとき、ＦＣＰ制御部１からはデータパケットは出力されない。
【０１０７】
フェッチされたプログラムワードに格納されるフラグＶＬＤが“１”の場合、入力パケット中の世代番号の非アドレス部がフェッチされたプログラムワードに含まれる世代番号の非アドレス部と一致するか否か判定される。一致すれば、入力パケット中のオペランドデータとフェッチされたプログラムワードに格納される待合せデータとでデータ対が生成され、生成されたオペランドデータ対を格納した異なる２つのデータパケットが出力される。このとき、両出力パケット中の左／右オペランドデータの値は、入力パケット中のコードＬ／Ｒが“Ｌ”の場合は、入力パケット中のオペランドデータが各出力パケットのフィールドＦ６に左オペランドデータとして、フェッチされたプログラムワードに格納される待合せデータが各出力パケットのフィールドＦ７に右オペランドデータとしてそれぞれ設定される。一方、入力パケット中のコードＬ／Ｒが“Ｒ”の場合は、各出力パケットにおける左／右オペランドデータの設定が前述した“Ｌ”の場合と逆に行なわれる。また、両出力パケットのうち一方の出力パケット中の命令コード、ノード番号および識別コードＬ／Ｒは、フェッチされたプログラムワードの１組目のデータに格納された命令コード、ノード番号およびコードＬ／Ｒがそれぞれ設定され、他方の出力パケットの命令コード、ノード番号およびコードＬ／Ｒには、フェッチされたプログラムワードの２組目のデータに格納された命令コード、ノード番号およびコードＬ／Ｒがそれぞれ設定される。また、両出力パケットの世代番号は、入力パケット中の世代番号がそのまま設定される。両出力パケット送出時、ＦＣＰメモリ１４中の該指定アドレス領域に格納されたフラグＶＬＤは“０”に設定される。
【０１０８】
入力パケットの世代番号の非アドレス部がフェッチされたプログラムワードに格納される世代番号の非アドレス部と一致しなければ、入力パケットのスルーフラグＳＦは“１”に設定されて、該入力パケットはそのまま出力される。スルーフラグＳＦが“１”に設定されたデータパケットに対する処理は、前述した「定数なし２入力命令」と同様である。
【０１０９】
このように、第２の実施例に従うプログラム実行制御方式によれば、前述した第１の実施例と同様に従来のプログラム記憶部と発火制御部の機能が統合され、プログラム記憶のための記憶領域とオペランドデータ対を待合せるための記憶領域とがＦＣＰメモリ１４を用いて共有される。
【０１１０】
この実施例においても、前述した第１の実施例と同様に入力パケットの世代番号のアドレス部とノード番号とに基づくアドレス指定によりＦＣＰメモリ１４はアクセスしている。これは、データ駆動型情報処理装置に複数の異なる世代番号を格納したデータパケットを同時にかつ個別に処理するような場合に、世代番号の非アドレス部を用いてメモリ１４におけるプログラムワードの記憶容量を節約するためである。仮に、ＦＣＰメモリ１４のサイズとしてプログラムの総ステップ数と同時に実行され得る世代番号の数の積よりも大きな記憶容量を用意できれば、世代番号の非アドレス部を用いた一致検出を行なう必要はない。したがって、図７の各プログラムワードから世代番号の非アドレス部を格納するための領域を取り除いたようなプログラムワードとすることも可能である。この場合は、ＦＣＰメモリ１４の１プログラムワード当りのサイズ（幅）を小さくできるとともに、ＦＣＰメモリ１４に入力パケットの世代番号の非アドレス部を書込む必要はなく、さらに世代番号の非アドレス部を用いてデータ対を検出するための処理を行なう必要がなくなり、ＦＣＰ制御部１における実行制御方式はより簡単になる（図４参照）。
【０１１１】
また、この実施例に示された実行制御方式に従ってプログラムを処理すると、図６（ａ）に示されたような２つの異なる命令コードに対して同じ定数データを用いた演算を行なう場合、従来は３プログラムワード必要とされていたが、本実施例では１プログラムワードにてプログラムを処理することができるようになる。さらに、ＦＣＰメモリ１４に格納される各プログラムワードの１組目または２組目の命令コード／ノード番号の対に対して、入力パケットに格納されるオペランドデータの左右属性を反転させるか否かを示すフラグＳＷＰを設けることも可能である。このフラグＳＷＰは、たとえば図７に示される１プログラムワードの１組目の命令コードの先頭１ビットまたは２組目の命令コードの先頭１ビットに格納される。
【０１１２】
図９には、第２の実施例において、左右属性反転フラグＳＷＰを用いることにより実現される命令の一例が示される。図７（ｄ）の「定数あり２入力命令（コピーあり）」あるいは、図７（ｆ）の「コピーあり２入力命令」の場合において、該プログラムワードの２組目のデータに対して設けられたフラグＳＷＰの値が“１”である場合、生成される２個の出力パケットのうち、該プログラムワードの２組目のデータに関して出力されるデータパケットのオペランドデータ対に関して、左オペランドデータと右オペランドデータが交換される。一方、フラグＳＷＰが“０”の場合は、フラグＳＷＰを設けていない場合と全く同様に動作する。図９では、フェッチされたプログラムワードの２組目のデータに対するフラグＳＷＰを例示したが、該プログラムワードの１組目のデータに関するフラグＳＷＰについても同様のことがいえる。
【０１１３】
次に第３の実施例について説明する。
第３の実施例によるデータ駆動型情報処理装置は、そのＦＣＰメモリ１４に格納されるプログラムワードの構成が第１および第２の実施例のそれとは異なるだけであり、その他の構成および動作は第１および第２の実施例のそれと同様である。
【０１１４】
図８を参照して、第３の実施例に係るＦＣＰメモリ１４に格納される各プログラムワードは、１組目のデータ、２組目のデータ、定数データまたは待合せデータ、発火制御フラグＶＬＤおよび世代番号の非アドレス部を含む。１組目のデータは定数フラグＣＮＴ、コピーフラグＣＰＹ、命令コード、ノード番号および左／右識別コードＬ／Ｒを含み、２組目のデータはノード番号および左／右識別コードＬ／Ｒを含む。各プログラムワードに格納される内容は、定数フラグＣＮＴの状態、コピーフラグＣＰＹの状態および命令コードが１入力命令であるか２入力命令であるかによって複数種類に分類される。図８（ａ）〜（ｅ）には、各種組合せのうち、代表的な５種類の場合が示される。なお、図中、“−”は無効データを示す。
【０１１５】
図８（ａ）の「１入力命令」は、定数フラグＣＮＴおよびコピーフラグＣＰＹが共に“０”であり、かつ命令コードが１入力命令の場合である。ＦＣＰ制御部１は入力パケットの世代番号のアドレス部とノード番号とに基づくアドレス指定によりＦＣＰメモリ１４から該メモリをフェッチした場合は、該命令の１組目のデータに格納された命令コード、ノード番号および識別コードＬ／Ｒを入力パケットの所定フィールドにそれぞれ書込み、該パケットを出力する。
【０１１６】
図８（ｂ）の「コピーあり１入力命令」は、定数フラグＣＮＴが“０”であり、かつコピーフラグＣＰＹが“１”であり、命令コードが１入力命令の場合である。ＦＣＰ制御部１は入力パケットの世代番号のアドレス部とノード番号とに基づくアドレス指定によりＦＣＰメモリ１４から該命令をフェッチした場合は、２個の出力パケットが生成された後送出される。両出力パケットにはフェッチされた命令コード、入力パケット中の世代番号および入力パケット中のオペランドデータがそれぞれ書込まれる。また、両出力パケットのうち一方の出力パケットにはフェッチされた命令の１組目のデータに格納されたノード番号およびコードＬ／Ｒが書込まれ、他方の出力パケットにはフェッチされた命令の２組目のデータに格納されたノード番号およびコードＬ／Ｒが書込まれる。
【０１１７】
図８（ｃ）の「定数あり２入力命令」は、定数フラグＣＮＴが“１”であり、かつコピーフラグＣＰＹが“０”の場合である。この場合の命令コードは２入力命令に限られる。ＦＣＰ制御部１が入力パケットの世代番号のアドレス部とノード番号とに基づくアドレス指定によりＦＣＰメモリ１４から該命令をフェッチした場合は、入力パケット中のオペランドデータとフェッチされた定数データとでオペランドデータ対が生成され、生成されたオペランドデータ対を格納したデータパケットが送出される。このとき、出力パケット中の左／右オペランドデータの値は、入力パケット中のコードＬ／Ｒが“Ｌ”の場合は、入力パケット中のオペランドデータが出力パケットのフィールドＦ６に左オペランドデータとして、ＦＣＰメモリ１４からフェッチされた定数データを出力パケットのフィールドＦ７に右オペランドデータとしてそれぞれ設定する。一方、入力パケットのコードＬ／Ｒが“Ｒ”の場合は、出力パケットの左／右オペランドデータの設定は前述した“Ｌ”の場合と逆に行なわれる。また、出力パケット中の命令コード、ノード番号および識別コードＬ／Ｒは、フェッチされた１組目のデータの命令コード、ノード番号および識別コードＬ／Ｒが設定され、出力パケット中の世代番号には入力パケット中の世代番号がそのまま設定される。
【０１１８】
このように入力パケットを用いて該命令をフェッチすれば、次位の命令がフェッチされると同時に、フェッチされた定数データと入力パケットのオペランドデータとのオペランドデータ対も検出されるので、従来のように定数データ処理のために２回のフェッチ動作を行なう必要はない。
【０１１９】
図８（ｃ）の「定数あり２入力命令（コピーあり）」は、定数フラグＣＮＴおよびコピーフラグＣＰＹが“１”である。この場合の命令コードは２入力命令に限られる。ＦＣＰ制御部１は入力パケットの世代番号のアドレス部とノード番号とに基づくアドレス指定によりＦＣＰメモリ１４から該命令をフェッチした場合は、入力パケット中のオペランドデータとＦＣＰメモリ１４からフェッチされた定数データとでオペランドデータ対が生成され、生成されたオペランドデータ対を格納した２つのデータパケットがＦＣＰ制御部１から出力される。このとき、両出力パケット中の左／右オペランドデータの値は、入力パケット中のコードＬ／Ｒが“Ｌ”の場合は、入力パケット中のオペランドデータが両出力パケットのフィールドＦ６に左オペランドデータとして、ＦＣＰメモリ１４からフェッチされた定数データが両出力パケットのフィールドＦ７に右オペランドデータとしてそれぞれ設定される。入力パケットのコードＬ／Ｒが“Ｒ”の場合は、両出力パケットの左／右オペランドデータの設定は前述した“Ｌ”の場合とは逆に行なわれる。また、両出力パケットの命令コードには、フェッチされた命令コードが書込まれる。また、両出力パケットのうち一方の出力パケットにはフェッチされた命令の１組目のデータに格納されたノード番号および識別コードＬ／Ｒが書込まれ、他方の出力パケットにはフェッチされた命令の２組目のデータに格納されたノード番号および識別コードＬ／Ｒが書込まれる。また、両出力パケットの世代番号は入力パケット中の世代番号がそのまま設定される。
【０１２０】
このように該命令をフェッチすることにより、定数データを含む同じオペランドデータ対を格納した異なる２つのデータパケットを同時に生成し出力することができる。したがって、従来のような定数データ処理のための２回のフェッチ動作およびコピー処理のための２回のフェッチ動作は行なわれない。
【０１２１】
図８（ｅ）の「２入力命令」は、定数フラグＣＮＴおよびコピーフラグＣＰＹが“０”であり、かつ命令コードが２入力命令の場合である。ＦＣＰ制御部１は入力パケットの世代番号のアドレス部とノード番号とに基づくアドレス指定によりＦＣＰメモリ１４から該命令をフェッチした場合、まず発火制御フラグＶＬＤの状態を判定する。フェッチされた発火制御フラグＶＬＤが“０”の場合、入力パケット中のオペランドデータと世代番号の非アドレス部がＦＣＰメモリ１４中の該指定アドレス領域の待合せデータおよび世代番号の非アドレス部としてそれぞれ書込まれ、対応の発火制御フラグＶＬＤが“１”に設定される。このとき、ＦＣＰ制御部１からはデータパケットは出力されない。
【０１２２】
ＦＣＰメモリ１４からフェッチされたフラグＶＬＤが“１”の場合、入力パケット中の世代番号の非アドレス部がフェッチされた世代番号の非アドレス部と一致するかどうか判定される。一致すれば、入力パケット中のオペランドデータとフェッチされた待合せデータとでオペランドデータ対が生成され、生成されたオペランドデータ対を格納したデータパケットが出力される。このとき、出力データパケット中の左／右オペランドデータの値は、入力パケット中の識別コードＬ／Ｒが“Ｌ”の場合は、入力パケット中のオペランドデータが出力パケットのフィールドＦ６に左オペランドデータとして、フェッチされた待合せデータが出力パケットのフィールドＦ７に右オペランドデータとしてそれぞれ設定される。一方、入力パケット中のコードＬ／Ｒが“Ｒ”の場合は、出力パケット中の左／右オペランドデータの設定が前述した“Ｌ”の場合と逆に行なわれる。また、出力パケット中の命令コード、ノード番号および識別コードＬ／Ｒは、フェッチされた１組目のデータに格納された命令コード、ノード番号および識別コードＬ／Ｒがそれぞれ設定され、出力パケット中の世代番号は入力パケット中の世代番号がそのまま設定される。このとき、パケット出力と共にＦＣＰメモリ１４中の該指定アドレス領域に格納されるフラグＶＬＤを“０”に設定する。
【０１２３】
入力パケットの世代番号の非アドレス部がフェッチされた世代番号の非アドレス部と一致しなければ、入力パケットのスルーフラグＳＦを“１”に設定して、該入力パケットをそのまま出力する。スルーフラグＳＦが“１”に設定されたデータパケットは、ＦＣＰ制御部１を除くすべての処理部では処理されず、再びＦＣＰ制御部１に入力する。ＦＣＰ制御部１においてオペランドデータ対が生成されると、該入力パケットのスルーフラグＳＦは“１”から“０”に設定されるが、ＦＣＰ制御部１においてオペランドデータ対が生成されない間は、該入力パケットはそのスルーフラグＳＦが“１”に設定されたまま該装置の各処理部を巡回し続ける。
【０１２４】
このように該命令を記憶した領域をそのままオペランドデータ対を待合せるための領域として用いることができる。
【０１２５】
また、この実施例においても、前述した図４（ａ）〜（ｃ）と同様のことが指摘され、仮に、ＦＣＰメモリ１４の記憶容量としてデータフロープログラムのプログラムワード数と同時に実行され得る世代番号の数の積よりも大きな記憶容量を準備することができれば、図８に示された各プログラムワードから世代番号の非アドレス部を格納するための領域を取り除いたワード構成となる。この場合は、ＦＣＰメモリ１４中の各プログラムワードのサイズを小さくできるとともに、ＦＣＰメモリ１４に入力パケットの世代番号の非アドレス部を書込む必要がなく、しかもオペランドデータ対を検出するための世代番号の非アドレス部を用いた一致検出を行なう必要がなくなり、ＦＣＰ制御部１の実行制御方式はさらに簡単になる。
【０１２６】
図１０は、第３の実施例において左右属性反転フラグＳＷＰを用いることにより実現される命令の１例を示す図である。
【０１２７】
図８に示された各プログラムワードの１組目のデータまたは２組目のデータに対して、入力データパケットに格納されたオペランドデータの左右属性を反転させるか否かを示すフラグＳＷＰのためのビットを設けることにより、図１０に示されるような命令を実行することも可能である。図１０には図８（ｄ）の「定数あり２入力命令（コピーあり）」の場合が示される。図１０において２組目のデータに格納されたノード番号および識別コードＬ／Ｒに対して設けられたフラグＳＷＰの値が“１”の場合、該命令をフェッチすることにより生成される２個の出力パケットのうち、一方の出力パケットのオペランドデータ対の左オペランドデータと右オペランドデータが交換される。フラグＳＷＰの値が“０”の場合は、フラグＳＷＰを設けていない場合と全く同様に動作する。このフラグＳＷＰのためのビットは、たとえば図８の各プログラムワードの１組目または２組目のノード番号の上位１ビットに設定されるようにすればよい。図１０では、出力パケットの一方のデータパケットに関するオペランドデータの交換が行なわれるようにしたが、両出力パケットの左オペランドデータと右オペランドデータが交換されるようにフラグＳＷＰを設定してもよい。
【０１２８】
上述した第１ないし第３の実施例のそれぞれにおける各プログラムワード構成は、サポート可能な命令の種類と、各プログラムワードの幅に依存して決定される。図６に示された命令をサポート（処理）できるか否かに着目して、各実施例のプログラムワード構成を比較した場合、第１の実施例（図３参照）のそれは、これら命令をすべてサポートでき、第２の実施例（図７参照）のそれは図６（ａ）に示された命令のみサポートでき、さらに第３の実施例（図８参照）のそれによれば、１回の命令フェッチで２つの異なる命令コードを処理することは不可能なので、図６に示された命令は全くサポートできない。したがって、この点に着目すれば、第１の実施例のプログラムワード構成が最良であり、第３の実施例のそれが最悪となる。
【０１２９】
一方、プログラムワード幅に着目すれば、第１の実施例のプログラムワード構成が最大ワード幅を必要とするのに対し、第３の実施例のそれが最小ワード幅でよいので、第１の実施例のそれが最悪であり、第３の実施例のそれが最良となる。
【０１３０】
したがって、これら２つの着目点は各実施例に示されたプログラム実行制御方式のいずれを採用するかを決定する際の１つの目安となり得る。
【０１３１】
【発明の効果】
この発明に係るデータ駆動型情報処理装置によれば記憶手段においてデータフロープログラム記憶用のメモリ空間とオペランドデータ待合せ用のメモリ空間とが併合されるとともに、これら各メモリ空間をアクセスするための周辺回路も単一化されるので、該装置の構成が簡単化されるとともに、該装置におけるプログラム実行処理段数を減少させてプログラムの実行速度を高速化できる。
また、制御手段によりアドレス指定され得る記憶手段の各領域からは複数のプログラムデータが読出され、制御手段は読出された各プログラムデータに対応してデータパケットを生成し出力するので、記憶手段の１回のアドレス指定領域から複数のプログラムデータを読出すことができる、言い換えると従来の複数回のアドレス指定と複数回のオペランドデータ対検出のための待合せの処理とからなるコピー処理が、１回のアドレス指定によるプログラムデータ読出により終了するから、プログラムデータの読出回数が低減され、その分解装置におけるプログラム実行時間を短縮できるという効果がある。
【図面の簡単な説明】
【図１】この発明の第１ないし第３の実施例に適用されるデータ駆動型情報処理装置のブロック構成図である。
【図２】この発明の第１ないし第３の実施例に適用される発火制御／プログラム記憶部のブロック構成図である。
【図３】（ａ）〜（ｆ）は、この発明の第１の実施例によるＦＣＰメモリに記憶される内容の一部を示す図である。
【図４】（ａ）〜（ｃ）は、ＦＣＰメモリのアドレス指定方法とメモリにおけるプログラムの記憶形式を説明する図である。
【図５】ＦＣＰ制御部に入力するデータパケットに格納された左／右識別コードＬ／Ｒを反転させるフラグを含むプログラムワード構成の一例を示す図である。
【図６】（ａ）〜（ｄ）は、この発明の第１の実施例において新たにサポートされる命令を説明する図である。
【図７】（ａ）〜（ｆ）は、この発明の第２の実施例によるＦＣＰメモリに格納される記憶内容の一部を示す図である。
【図８】（ａ）〜（ｅ）は、この発明の第３の実施例においてＦＣＰメモリに格納される記憶内容の一部を示す図である。
【図９】第２の実施例において左右属性反転フラグＳＷＰを用いることにより実現される命令の一例を示す図である。
【図１０】第３の実施例において左右属性反転フラグＳＷＰを用いることにより実現される命令の一例を示す図である。
【図１１】従来のデータ駆動型情報処理装置のブロック構成の一例を示す図である。
【図１２】従来およびこの発明の実施例に適用される情報処理装置を巡回するデータパケットのフィールド構成図である。
【図１３】図１１のプログラム記憶部の記憶内容の一部を示す図である。
【図１４】図１１の発火制御部の待合せメモリの記憶内容の一部を示す図である。
【図１５】図１１のプログラム記憶部のプログラム読出のための機構を示すブロック図である。
【符号の説明】
１  発火制御／プログラム記憶部（ＦＣＰ制御部）
２  演算部
３  分岐部
４  合流部
１０  データ駆動型情報処理装置
ＰＡ  データパケット
ＳＦ  スルーフラグ
Ｌ／Ｒ  左／右識別コード
ＳＷＰ  左右属性反転フラグ
なお、各図中、同一符号は同一または相当部分を示す。
【図１】
0003696625.tif 000002
【図２】
0003696625.tif 000003
【図３】
0003696625.tif 000004
【図４】
0003696625.tif 000005
【図５】
0003696625.tif 000006
【図６】
0003696625.tif 000007
【図７】
0003696625.tif 000008
【図８】
0003696625.tif 000009
【図９】
0003696625.tif 000010
【図１０】
0003696625.tif 000011
【図１１】
0003696625.tif 000012
【図１２】
0003696625.tif 000013
【図１３】
0003696625.tif 000014
【図１４】
0003696625.tif 000015
【図１５】
0003696625.tif 000016