(57)【特許請求の範囲】
【請求項１】
データに対して行なわれる演算と、演算結果の行先を特定するための行先情報とを含む複数個のノード情報を含むデータフロープログラムを記憶し、入力されるデータパケットに含まれる行先情報に基づいて、前記データフロープログラム中で連鎖的に実行可能な、１入力１出力の一連の命令、または２入力１出力命令とそれに後続する１入力１出力の一連の演算を検出し、前記一連の演算を特定するための演算情報と、前記一連の演算の演算結果の行先情報とを含む一連のデータパケットを連続して出力するためのデータパケット出力手段と、
前記データパケット出力手段により出力される前記一連のデータパケットに対し、先行する演算に対する演算結果を後続する演算の入力に用いることにより、前記一連の演算を実行し、前記一連の演算の演算結果を含むデータパケットを前記一連のデータパケットに含まれる前記行先情報により特定されるノードに向けて出力するための演算手段とを含む、データフロー型情報処理装置。
【請求項２】
前記データパケット出力手段は、
前記データフロープログラムを記憶するための手段と、入力されるデータパケットに含まれる行先情報により特定されるノードに含まれる演算を特定する演算情報と、演算に必要なデータとを含むデータパケットを出力するための手段と、出力されるデータパケットに含まれる演算情報が１入力で実行開始可能であってかつ前記ノードに含まれる行先情報がただ１つの行先ノードを特定する限り、かつ前記行先ノードに含まれる演算情報が１入力で実行開始可能である限り、前記行先ノードに含まれる演算情報を含むデータパケットを出力することを繰返すための手段とを含むプログラム記憶手段と、
前記プログラム記憶手段に接続され、前記プログラム記憶手段から出力されるデータパケットに対する演算が実行開始可能であるかどうかを検出し、実行可能なデータパケットを順次前記演算手段に向けて出力するための対データ検出部とを含む、請求項１に記載のデータフロー型情報処理装置。
【請求項３】
前記対データ検出部は、さらに、前記対データ検出部から前記演算手段に向けて出力される実行可能なデータパケットに含まれる演算情報が複数入力演算であって、かつ行先情報が単一のノードを示すときに限り所定の第１の値をとり、それ以外のときには前記第１の値と異なる所定の第２の値をとる検出信号と、前記行先情報を表わす行先情報信号とを出力する機能を有し、
前記プログラム記憶手段はさらに、前記検出信号が前記第１の値となったことに応答して、前記行先情報信号により特定されるノードに含まれる演算情報が１入力で実行開始可能であるときに、当該ノードに基づいてデータパケットを生成して出力するための手段を含む、請求項２に記載のデータフロー型情報処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明はデータフロー型情報処理装置に関し、特に、データパケットの数を少なくすることにより高速演算が可能なデータフロー型情報処理装置に関する。
【０００２】
【従来の技術】
計算機は、大別してノイマン型計算機と非ノイマン型計算機とに分類される。
【０００３】
ノイマン型計算機においては、種々の命令がプログラムとして予めプログラムメモリに記憶されている。プログラムカウンタと呼ばれる特別なカウンタによってプログラムメモリのアドレスが逐次指定されることにより、順次プログラムメモリから命令が読出される。その命令を実行するとともに、次に実行される命令の、プログラムメモリ中のアドレスをプログラムカウンタにセットすることにより、多様な処理が実行される。
【０００４】
一方、非ノイマン型計算機は、プログラムカウンタによる逐次的な命令の実行という概念を持たない。データフロー型情報処理装置はそのような非ノイマン型計算機の一種である。データフロー型情報処理装置のアーキテクチャとしては、ノイマン型計算機のような逐次処理ではなく、命令の並列処理を基本としたものが採用される。
【０００５】
データフロー型情報処理装置においては、各演算の実行に必要なデータが揃い次第、その演算を含む命令の実行が可能となる。データが揃い次第複数の命令が同時に実行されるために、データの自然な流れに従って並列的にプログラムが実行される。そのため、演算の所要時間が大巾に短縮するものとされている。
【０００６】
図１２は、従来のデータフロー型情報処理装置の構成を示すブロック図である。図１２を参照して、従来のデータフロー型情報処理装置は、プログラム記憶部（ＰＳ）１１０と、対データ検出部（ＦＣ）１１２と、演算処理部（ＦＰ）１１４とを含む。プログラム記憶部１１０と対データ検出部１１２との間にはデータパケットの流路１１６が２本設けられている。対データ検出部１１２と演算処理部１１４との間はデータパケットの流路１１８で接続されている。演算処理部１１４とプログラム記憶部１１０との間はデータパケットの流路１２０によって接続されている。
【０００７】
図１２に示されるデータフロー型情報処理装置においては、図５に示されるようなフォーマットのデータパケットが流路１１６、１１８、１２０を流れていくことにより演算が行なわれる。図５を参照して、データパケットには命令フィールドと、行先フィールドと、データ第１フィールドと、データ第２フィールドと、タグフィールドとが設けられている。命令フィールドは、データ第１フィールドまたはデータ第２フィールドに格納されているデータに対して行なわれる命令（演算）を特定する命令情報を格納する。行先フィールドには、このデータパケットに対する演算結果を格納したデータパケットが、プログラム記憶部１１０内に格納されているデータフロープログラムのどのノードに与えられるかを示す行先情報が格納されている。演算対象のデータはデータ第１フィールドまたはデータ第２フィールドに格納されている。タグフィールドには、命令フィールドに格納されている命令が１入力命令であるか、２入力命令であるかを示す２入力命令情報などが格納されている。
【０００８】
図１２を参照して、プログラム記憶部１１０にはデータフロープログラムが記憶されている。データフロープログラムの各行（ノードと呼ぶ）には、命令情報と、その命令による演算結果が供給されるノード名を示す行先情報と、タグフィールドに格納される情報とが含まれている。
【０００９】
プログラム記憶部１１０は、演算処理部１１４から流路１２０を通ってデータパケットが入力されると、そのデータパケットの行先フィールドによって示されるノードの情報を読出す。そしてそのノードに格納されている命令情報、行先情報、タグ情報などと、入力されたデータパケットのデータとからデータパケットを生成し、流路１１６を介して対データ検出部１１２に与える。このとき、データパケットの演算が２入力命令であればそのデータパケットが２つの入力のいずれのものであるか（右、左と呼ぶ）に従って、２本の流路１１６のいずれか一方にパケットを出力する。
【００１０】
対データ検出部１１２は、入力されるデータパケットの命令情報が１入力命令を示している場合には、そのまま流路１１８を介して演算処理部１１４に与える。データパケットの命令情報が２入力命令を示している場合には、対データ検出部１１２は待合せ処理を行なう。待合せ処理とは、同じ行先情報、同じ命令情報を有する異なる２つのパケットを検出し、その行先情報、命令情報を用い、かつ１つで前述の２つのデータを持つパケットを作成して演算処理部１１４に出力する処理である。このような２つのパケットが揃うまで、先に到着したデータパケットは対データ検出部１１２に一時格納されている。
【００１１】
演算処理部１１４に与えられたデータパケットに対しては、演算処理部１１４においてデータパケットの命令情報にしたがって演算が行なわれる。演算結果はデータパケットのデータフィールド１に格納される。演算結果を含むデータパケットは流路１２０を介してプログラム記憶部１１０に与えられる。このとき、データパケットの行先情報には、プログラム記憶部１１０から出力されたときの行先情報が格納されている。
【００１２】
プログラム記憶部１１０は、入力されたデータパケットの行先情報の指すノードに格納されている情報に従って次のデータパケットを生成して出力する。
【００１３】
このようにデータパケットがプログラム記憶部１１０と対データ検出部１１２と演算処理部１１４とを順次循環していくことによりデータフロープログラムが実行される。
【００１４】
【発明が解決しようとする課題】
以上のように従来のデータフロー型情報処理装置では、演算に必要なデータが揃うと即時にその演算が実行される。この演算処理は並列的なものとなる。したがって、データフロー型情報処理装置では従来の逐次処理型計算機よりも処理を高速化できると考えられる。
【００１５】
しかし、従来のデータフロー型情報処理装置には次のような改善すべき点が存在する。プログラム記憶部１１０から出力される命令が１入力命令であって、かつその演算結果がただ１つのノードに与えられる場合を考える。この場合には、プログラム記憶部１１０からそのデータパケットが出力された時点で、そのデータパケットの次アドレスのノードが出力されたデータパケットの行先情報を調べるだけで簡単に知ることができる。次アドレスのノードを知ることにより、出力されたデータパケットの演算結果を用いて連続して実行可能である。しかしこの場合でも、従来のデータフロー型情報処理装置では、そのデータパケットが演算処理部１１４による演算を経て、演算結果を含むデータパケットがプログラム記憶部１１０まで到達しなければ次の命令の実行を開始することができなかった。演算結果を含むデータパケットが到着する前にも、次の命令を含むデータパケットを送出することは可能であるから、何らかの改良を行なうことによりデータフロープログラムの実行に必要なデータパケットの数を減らし、より処理を高速化することが可能であると考えられる。同様に対データ検出部１１２で待合せ処理が完了しデータパケットが出力される場合にも、そのデータパケットの行先情報が１箇所のノードを示すものであれば、次に実行可能となるノードを簡単に識別できる。この場合にもより処理を高速化することが可能であると考えられる。
【００１６】
それゆえに請求項１に記載の発明の目的は、データパケットの数を減らし、それによってより高速に処理を行なうことができるデータフロー型情報処理装置を提供することである。
【００１７】
請求項２に記載の発明の目的は、１つのデータが供給されることにより実行可能となる一連の処理を、データパケットをすべての処理について循環させることなく実行することにより、より高速に処理を行なうことができるデータフロー型情報処理装置を提供することである。
【００１８】
請求項３に記載の発明の目的は、複数入力命令を含む演算に必要なデータが供給された時点で実行可能となる一連の処理を、すべての処理についてデータパケットを循環させることなく実行することにより、処理を高速化できるデータフロー型情報処理装置を提供することである。
【００１９】
【課題を解決するための手段】
請求項１に記載のデータフロー型情報処理装置は、データに対して行なわれる演算と、演算結果の供給先ノードを特定するための行先情報とを含む複数個のノード情報を含むデータフロープログラムを記憶し、入力されるデータパケットに含まれる行先情報に基づいて、前記データフロープログラム中で連鎖的に即時に実行可能な、１入力１出力の一連の命令、または２入力１出力命令とそれに後続する１入力１出力の一連の演算を検出し、それら演算を特定する演算情報と、それら演算の演算結果の行先情報とを含む一連のデータパケットを連続して出力するためのデータパケット出力手段と、データパケット出力手段により出力される一連のデータパケットに対し、先行する演算に対する演算結果を後続する演算の入力に用いることにより、一連の演算を実行し、演算結果を含むデータパケットを、一連のデータパケットに含まれる行先情報により特定されるノードに向けて出力するための演算手段とを含む。
【００２０】
請求項２に記載のデータフロー型情報処理装置は、請求項１に記載の装置であって、そのデータパケット出力手段は、データフロープログラムを記憶するための手段と、入力されるデータパケットに含まれる行先情報により特定されるノードに含まれる演算を特定するための演算情報と、演算に必要なデータとを含むデータパケットを出力するための手段と、出力されるデータパケットに含まれる演算情報が１入力で実行開始可能であって、かつ行先情報がただ１つの行先ノードを特定する限り、かつその行先ノードに含まれる演算情報が１入力で実行開始可能である限り、その行先ノードに含まれる演算情報を含むデータパケットを出力することを繰返すための手段とを含むプログラム記憶手段と、プログラム記憶手段に接続され、プログラム記憶手段から出力されるデータパケットに対する演算の実行開始が可能かどうかを検出し、実行可能なデータパケットを順次演算手段に向けて出力するための対データ検出部とを含む。
【００２１】
請求項３に記載のデータフロー型情報処理装置は、請求項２に記載の装置であって、対データ検出部はさらに、対データ検出部から演算手段に向けて出力される実行可能なデータパケットに含まれる演算情報が複数入力演算であって、かつ行先情報が単一のノードを示すときに限り所定の第１の値をとり、それ以外の場合には第１の値と異なる所定の第２の値をとる検出信号と、行先情報を表わす行先情報信号とを出力する機能を有し、プログラム記憶手段はさらに、検出信号が第１の値となったことに応答して、行先情報信号により特定されるノードに含まれる演算情報が１入力で実行開始可能であるときに、当該ノードに基づいてデータパケットを生成して出力するための手段とを含む。
【００２２】
【作用】
請求項１に記載のデータフロー型情報処理装置では、入力されるデータパケットに含まれる行先情報に基づき、連鎖的に実行可能な一連のノードが検出され、それら一連のノードと行先情報とを含む一連のデータパケットがデータパケット出力手段から演算手段に連続して出力される。演算手段は、一連のデータパケットに対し、先行する演算に対する演算結果を後続する演算の入力に用いることによって一連の演算を実行する。演算結果は、一連のデータパケットに含まれる行先情報により特定されるノードに向けてデータパケットとして出力される。連鎖的に実行可能な演算に対しては、その一連の演算の演算結果のデータパケットのみが演算手段から出力され、途中の演算の演算結果のデータパケットの出力は行なわれない。
【００２３】
請求項２に記載のデータフロー型情報処理装置では、プログラム記憶手段にデータパケットが入力されると、そのデータパケットの行先情報によって特定されるノードに含まれる情報に従ってデータパケットが対データ検出部に出力される。出力されるデータパケットに含まれる演算情報が１データで実行開始可能であって、かつ行先情報がただ１つの行先ノードを特定する場合には、さらに行先ノードに含まれる演算情報を持ったデータパケットが出力され、この処理は上述の条件が満たされる限り繰返して行なわれる。対データ検出部は入力されるデータパケットのうち、１データで実行可能なデータパケットを順次演算手段に向けて出力する。したがって、１データで実行開始可能であってかつ行先情報がただ１つの行先ノードを特定する演算は、その一連の演算の先頭に必要なデータが供給されることによって次々と対データ検出部から演算手段に向けて一連のデータパケットとして与えられる。演算手段では、この一連のデータパケットのうち、先行する演算の演算結果を後続する演算の入力に用いて処理を行なう。演算結果は、一連のデータパケットに含まれる行先情報により特定されるノードに向けてデータパケットとして出力される。一連の１入力、１出力命令は、先頭の演算に必要なデータが供給されることにより、次々と演算手段に与えられる。演算手段では、途中の演算結果のデータパケットを出力することなく、この一連の演算を行ない、最終の演算結果のみをデータパケットとして出力する。
【００２４】
請求項３に記載のデータフロー型情報処理装置では、請求項２と同じく、一連の１入力、１出力の命令は、先頭の演算開始に必要なデータが供給されると同時にプログラム記憶手段、対データ検出部を経て一連のデータパケットとして演算手段に与えられる。さらに、２入力命令がプログラム記憶手段から対データ検出部に与えられ、対データ検出部においてこのデータパケットに対する演算の実行開始が可能であることが検出されると、そのデータパケットがコピー出力を持たず、行先情報が１入力のノードであるときに限り、検出信号が第１の値となり、そのデータパケットに含まれる行先情報が行先情報信号として出力される。プログラム記憶手段では、この検出信号が第１の値となったことに応答して、行先情報信号により特定されるノード情報に含まれる演算情報が単一入力演算であれば、そのノード情報に基づいて次のデータパケットがプログラム記憶手段からデータパケット出力手段に出力される。このとき、プログラム記憶手段は、請求項２と同様に、出力されるデータパケットに含まれる演算情報が一連の１入力、１出力命令である限り、出力されるデータバケットに含まれる行先情報によって特定される行先ノードに含まれる演算情報を含むデータパケットを出力することを繰返す。これら一連のデータパケットは対データ検出部を経て演算手段に与えられ、前述のようにその演算結果のみのデータパケットが演算手段から出力される。
【００２５】
【実施例】
図１は、本発明の一実施例のデータフロー型情報処理装置のブロック図である。図１を参照して、このデータフロー型情報処理装置は、入力されるデータパケットに含まれるデータによって演算が可能となる一連のデータパケットをデータパケットの流路６２に出力するためのデータパケット出力手段の一例のデータパケット出力部６６と、流路６２を介してデータパケット出力部６６に接続され、一連のデータパケットのうち、先行するデータパケットによる演算結果を後続するデータパケットの演算の入力に用いて一連の演算を実行し、演算結果を最終のデータパケットに含まれる行先情報に従って生成するデータパケットに格納して流路６４に出力するための演算手段の一例の演算処理部５４とを含む。演算処理部５４の出力とデータパケット出力部６６の入力とは流路６４により接続されている。
【００２６】
このデータフロー型情報処理装置において使用されるデータパケットのフォーマットとしては、図５に示す２種類がある。流路６２には２データを必要とすることがあるので、図５（ａ）のように２データのフォーマットが用いられ、流路６０，６４には図５（ｂ）に示すデータのフォーマットが用いられる。ただし、タグフィールドには、従来技術でも用いられていた２入力命令情報に加え、この命令の演算結果を与えられるノードが１つであるかどうかを示す１出力情報が格納される。
【００２７】
再び図１を参照して、データパケット出力部６６は、プログラム記憶手段の一例のプログラム記憶部５０と対データ検出部５２とを含む。プログラム記憶部５０の入力はデータパケットの流路６４に接続されている。プログラム記憶部５０と対データ検出部５２とは、２本のデータパケット流路６０によって接続されている。データパケットの命令情報が２入力命令を示すものである場合、データがその２入力の左右いずれに供給されるかに従って、流路６０のいずれかが選択される。さらに本発明のデータフロー型情報処理装置においては、対データ検出部５２からプログラム記憶部５０に対して帰還するマッチング線５６とマッチングデータ線５８とを含む。マッチング線５６には、対データ検出部５２において待合せ処理が行なわれ、待合せが完了して出力されるデータパケットの出力先が１箇所のみであるときにハイレベルとなり、他の場合にはローレベルとなるマッチング検出信号が出力される。マッチングデータ線５８には、このときの、対データ検出部５２から出力されるデータパケットの行先情報を示すデータがプログラム記憶部５０に対して与えられる。
【００２８】
図２を参照して、プログラム記憶部５０は、流路６４に接続された入力パケットバッファ６８と、データフロープログラムを記憶し、入力パケットバッファ６８から行先情報を受取り、対応するノードの情報を出力するためのプログラムメモリ７２と、入力パケットバッファ６８とプログラムメモリ７２とにそれぞれ接続され、プログラムメモリ７２から与えられる命令情報、行先情報、タグ情報などと、入力パケットバッファ６８から与えられるデータとからデータパケットを生成して出力するための第１のパケット生成回路７４および第２のパケット生成回路７６と、入力パケットバッファ６８に接続され、対データ検出部５２からのマッチングデータ線５８およびマッチング線５６が接続され、マッチング線およびマッチングデータ線の信号と、入力パケットバッファ６８からの行先情報とに基づいてプログラムメモリ７２を制御し、行先情報またはマッチングデータ線５８によって特定されるノードの情報を出力させるためのコントローラ７０とを含む。
【００２９】
図３を参照して、対データ検出部５２は、データパケット流路６０に接続された入力パケットバッファ７８、８０と、２入力命令のデータの待合せを行なうために、データパケットの情報を一旦格納するための待合せメモリ８４と、入力パケットバッファ７８、８０と待合せメモリ８４とに接続され、入力されるパケットと待合せメモリ８４に格納されているデータパケットの情報とに基づき、演算開始に必要なデータが揃ったデータパケットを生成するための情報を出力するためのマッチングコントロール回路８２と、マッチングコントロール回路８２から与えられるデータに基づいてデータパケットを生成し、流路６２を介して演算処理部５４に出力するためのパケット生成回路８６とを含む。マッチングコントロール回路８２はまた、２入力命令の実行開始のためのデータが２つ揃った時点で、この命令の行先情報がただ１つのノードを示す場合にマッチング線５６をハイレベルとし、マッチングデータ線５８に行先情報を表わす情報を出力する。
【００３０】
図４を参照して、演算処理部５４は、データパケット流路６２に接続された入力データバッファ９０と、それぞれ入力データバッファ９０に接続されたデータ１レジスタ９２、データ２レジスタ９４と、入力データバッファ９０に接続された命令情報レジスタ９８と、命令情報レジスタ９８とデータ１レジスタ９２とデータ２レジスタ９４とに接続され、命令情報レジスタ９８に格納された命令に従って、レジスタ９２、９４に格納されたデータ間に演算を行なって出力するための算術論理ユニット（ＡＬＵ）９６と、ＡＬＵ９６の出力に接続された出力データバッファ１００と、出力データバッファ１００の出力に基づいてパケットを生成して流路６４に出力するためのパケット生成回路１０２とを含む。演算処理部５４はさらに、出力データバッファ１００の格納内容を、所定の条件の成立時にデータ１レジスタ９２に帰還させるための帰還用ゲート１０４、ＡＮＤゲート１０８を含む。帰還用ゲート１０４の入力は出力データバッファ１００に、出力はデータ１レジスタ９２にそれぞれ接続されている。ＡＮＤゲート１０８の一方の入力が命令情報レジスタ９８に、他方の入力は入力データバッファ９０に対するタイミング信号生成回路１０６ａの出力にそれぞれ接続されている。ＡＮＤゲート１０８の出力は帰還用ゲート１０４の制御端子に接続されている。命令情報レジスタ９８には、入力されたデータパケットの行先情報が１出力を表わすものかどうかを示す情報が格納されており、この情報はＡＮＤゲート１０８および出力データバッファ１００に与えられる。入力データバッファ９０、データレジスタ９２、９４、ＡＬＵ９６、出力データバッファ１００、パケット生成回路１０２にはそれぞれタイミング信号生成回路１０６ａ〜１０６ｅが接続されている。タイミング信号生成回路１０６ａ〜１０６ｅは、タイミング信号線１０９によって相互に接続され、データの送受信のタイミングを管理する信号を各部に与える。タイミング信号生成回路は、プログラム記憶部５０，対データ検出部５２にも存在する。
【００３１】
この実施例のデータフロー型情報処理装置は、従来の技術の問題点を解決するために、次のような思想に基づいて構成されている。図１２を参照して従来のデータフロー型情報処理装置におけるデータフロープログラムの実行において、命令情報が１入力を示している場合を考える。この場合、この命令は１データで演算を実行することが可能である。しかしこの場合にも、演算処理部１１４から出力されたデータパケットは、プログラム記憶部１１０で命令情報・行先情報が交換された後、対データ検出部１１２を経由して再び演算処理部１１４に到達する。この場合、演算結果については演算処理部１１４から送出されたときと演算処理部１１４に再び到達したときとで何ら変わりはない。単に命令情報と行先情報がプログラム記憶部１１０によって交換されているだけである。
【００３２】
そこで、何らかの方法を用いてデータパケットの命令情報・行先情報だけを交換可能とすることを考える。この場合、演算処理部１１４、プログラム記憶部１１０、対データ検出部１１２をパケットが巡回する必要がなくなる。パケットの巡回自体には比較的長時間が必要なために、パケットを減少させ、データパケットの巡回に必要な時間をなくすことでデータフロープログラムの実行を早くすることが可能となる。
【００３３】
本実施例のデータフロー型情報処理装置では、次のような機能をプログラム記憶部１１０、対データ検出部１１２、演算処理部１１４に加えることで、従来技術の問題点を解決する。
１．データフロープログラムにおける設定（変更）
図６は、プログラム記憶部５０に格納されるデータフロープログラムのフォーマットである。このデータフロープログラムの各ノードはそれぞれアドレスＡ、Ａ＋１、…、Ｂ、Ｂ＋１などに格納されている。各ノードは、命令情報と、行先情報と、コピー情報と、定数情報と、２入力命令情報とを含む。さらに、本発明に係るデータフロー型情報処理装置で実行するデータフロープログラムには次のような変更が施されている。
【００３４】
（１）  図６に示されるように、データフロープログラム内の各行に、従来の２入力命令情報に加え、１出力情報のフィールドを設ける。１出力情報とは、この命令の演算結果の行先ノードがただ１つであるかどうかを示すためのものである。１出力情報が“１”のときには行先ノードがただ１つであることを表わす。
“０”のときはこれが成立たないことを示す。
【００３５】
同様に２入力命令情報は、従来の場合と同様に“１”のときにはこの演算に必要なデータが２つであることを示し、“０”のときには１つであることを示す。
【００３６】
（２）  上述の２入力命令情報と並んで１出力情報についても、データフロープログラム作成時に処理に応じた情報を作成しておく。
２．本実施例装置の特別な動作
図１を参照して、本実施例に係る装置のプログラム記憶部５０と、対データ検出部５２と、演算処理部５４にはそれぞれ、以下のような機能を行なう機構が付与されている。
【００３７】
（１）  プログラム記憶部５０
プログラム記憶部５０は、読出されたデータフロープログラムのノードの２入力情報および１出力情報を、出力パケットのタグフィールドに格納してパケットの出力を行なう。プログラム記憶部５０はこのとき、２入力情報が２入力を示していない場合つまり命令情報が１データで処理できる命令（１入力命令）である場合には、連続して出力パケットの行先情報で特定されるノードのデータフロープログラムを読出し、そこに格納されている情報に従ってデータパケットを出力する。プログラム記憶部５０は、このような方法でデータパケットを出力する。
【００３８】
（２）  対データ検出部５２は、入力されるデータパケットのうち、２入力命令情報が２入力を示しているパケットについてのみ待合せ処理を行なう。１入力命令のパケットについては直ちに演算処理部５４に向けて出力する。
【００３９】
２入力命令の待合せ処理が完了し、２入力命令のデータパケットが出力されるとき、対データ検出部５２は次のような動作を行なう。出力されるデータパケットの１出力情報が１出力を示す値となっている場合には、対データ検出部５２はその出力されるデータパケットの行先情報をマッチングデータ線５８（図１参照）に出力し、同時にマッチング線５６（図１参照）をハイレベルとする。マッチング線５６がハイレベルとなることにより、出力されるデータパケットの１出力情報が１出力を示しているということを示す検出信号がプログラム記憶部５０に与えられる。対データ検出部５２は、このようにしてプログラム記憶部５０に対して行先情報を帰還させた後、プログラム記憶部５０から送られてくる２入力命令情報が２入力を示す値ではないパケットを、前述のパケットに連続して演算処理部５４に向けて出力する。
【００４０】
また、プログラム記憶部５０から与えられるデータパケットのうち、２入力命令情報が２入力を示す値ではなく、かつ１出力情報が１出力を示す値となっているパケットは演算処理部５４にそのまま出力するとともに、後に送られてくるパケットのうち、２入力命令情報が２入力を示していない連続するパケットを同様に連続して演算処理部５４に出力する。
【００４１】
（３）  プログラム記憶部５０では、前述のように１入力命令のデータパケットを連続して出力するのと別に、マッチング線５６がハイレベルとなったときには次のような動作を行なう。プログラム記憶部５０は、マッチング線５６がハイレベルとなれば、マッチングデータ線５８に対データ検出部５２から出力される行先情報を読込み、その行先情報に対応するデータフロープログラムのノードの情報を読出す。そしてこのノードに格納されている２入力命令情報が２入力を示す値ではないとき、すなわち単一入力を示す値であるときには、読み出されたノードに格納されている情報に基づき、対データ検出部５２にデータパケットを送出する。このデータパケット送出時にも、出力されるデータパケットが１入力・１出力命令である場合には、前述のようにその行先情報のノードに従って次々と連続してデータパケットを出力する。
【００４２】
（４）  演算処理部５４は、入力パケットの１出力情報が１出力を示す値となっている場合には、演算結果をデータレジスタに保持する。この演算結果は、連続して入力される後のパケットの演算に対して入力として使用される。この場合演算結果を含むデータパケットの出力は行なわれない。次にパケットが入力された場合、データレジスタに保存されている演算結果をデータとして演算が行なわれる。そして一連のデータパケットの入力が終了した時点で、一連の演算の演算結果を含むデータパケットが、最終のデータパケットに含まれる行先情報に従ってプログラム記憶部５０に向けて出力される。
【００４３】
以上のようにすることにより、データフロープログラム中の１入力１出力パケットからなる一連の演算処理および２入力１出力命令とその命令の後に続く１入力１出力命令からなる一連の演算処理についてはパケットが連続して演算処理部に送られる。演算処理部では次々と入力されるデータパケットに対して、先行するデータパケットの演算結果を後続するデータパケットに対する演算の入力として使用し、一連の演算を行なう。そして一連の演算が終了した時点で、その結果を最終のデータパケットに含まれる行先情報とともに出力する。したがって全体としてデータパケットの数を減らすことができ、データフロープログラムの実行速度を上げることができる。
【００４４】
以下、図１〜図６に示される本実施例のデータフロー型情報処理装置の動作をより詳細に説明する。
【００４５】
図２を参照して、プログラム記憶部５０は以下のように動作する。
（１）  基本的な動作として、入力パケットがあれば、入力パケットに含まれる行先情報に対応するノードの情報をプログラムメモリ７２から読出し、その内容に対応するパケットをパケット生成回路７４、７６を用いて対データ検出部５２に出力する。
【００４６】
（２）  入力パケットに含まれる行先情報に基づいて読出したノード情報のコピー情報が“１”であれば、（１）の動作とともに、読出したノードの直後のアドレスに格納されたノード情報に基づいてデータパケットを出力する。
【００４７】
（３）  入力パケットの行先情報に基づいて読出したノード情報に含まれる定数情報が“１”であれば、（１）と同時に、読出したノードの直後のアドレスに格納されている情報をデータとし、データ交換を行なったパケットを（１）と同様に出力する。
【００４８】
（４）  入力パケットの行先情報に対応するノードから読出した情報に含まれる２入力命令情報が“０”でかつ１出力情報が“１”であれば、読出したノードに含まれる行先情報に基づいてさらにその行先情報に対応するノード情報を読出す。そして、新たに読出されたノードに含まれる情報に対応するデータパケットを、直前のデータパケットに続いて出力する。さらに、このときの新たに読出された情報に含まれる２入力命令情報が“０”でかつ１出力情報が“１”であれば、同様に新たに読出された行先情報に対応するノードを読出し、そのノードに含まれる情報に対応するデータパケットも出力する。そして、上述のような条件が満たされなくなるまでこのような処理を繰返し行なう。
【００４９】
（５）  コントローラ７０は、対データ検出部５２からのマッチング線５６がハイレベル（ＯＮ）となった場合、マッチングデータ線５８の内容を読込む。マッチングデータ線５８には、対データ検出部５２でマッチングが検出された２入力１出力命令の行先情報が出力されている。コントローラ７０は、読込んだ行先情報をプログラムメモリ７２に与える。プログラムメモリ７２は、与えられた行先情報に対応するノード情報を読出し、その２入力命令情報が“０”であれば、そのノード情報に基づいてデータパケットを出力し、以下上述の（４）と同様に、出力されるデータパケットのノード情報に含まれる２入力命令情報が“０”でかつ１出力情報が“１”であれば、そのデータパケットに含まれる行先情報にしたがって次のノード情報を読出してそれに対応するデータパケットの出力を行なう。この条件が満たされなくなるまでこの処理を繰返し行なう。
【００５０】
図３を参照して、対データ検出部５２は以下のような動作を行なう。
（６）  マッチングコントロール回路８２は、入力パケットバッファ７８、８０に一旦格納された入力パケットに含まれる２入力命令情報が“０”であれば、そのままそのデータパケットをパケット生成回路８６から流路６２を介して演算処理部５４に向けて出力する。
【００５１】
（７）  マッチングコントロール回路８２は、入力パケットバッファ７８、８０に一旦格納された入力パケットの２入力命令情報が“１”であれば、次のような処理を行なう。マッチングコントロール回路８２は、まず待合せメモリ８４内に、入力パケットとマッチングするデータパケットが待避されているかどうかをチェックする。その結果により以下のような動作を行なう。
【００５２】
（ａ）  待合せメモリ８４にマッチングするデータパケットが待避されていない場合には、入力パケット７８または８０内の入力パケットを待合せメモリ８４に一旦待避させる。
【００５３】
（ｂ）  マッチングするデータパケットが待合せメモリ８４に待避されていれば、入力パケットとこの待避されているデータパケットとのマッチングを行ない、新たなデータパケットを生成してパケット生成回路８６から流路６２を介して演算処理部５４に向けて出力する。このとき、出力されるデータパケットの１出力情報が“１”であればマッチング線５６をＯＮとし、マッチングデータ線５８に、出力されるデータパケットに含まれる行先情報を出力する。
【００５４】
図４を参照して、演算処理部５４は次のような動作を行なう。対データ検出部５２より送られてくるデータパケットは入力データバッファ９０に一旦格納される。このうち命令情報は命令情報レジスタ９８に格納される。データ１、データ２は、それぞれデータ１レジスタ９２、データ２レジスタ９４に格納される。データ１レジスタ９２には、後述するように出力データバッファ１００の値が帰還される場合がある。
【００５５】
ＡＬＵ９６は、命令情報レジスタ９８とデータ１レジスタ９２、データ２レジスタ９４から必要な情報を読込み、演算を行なって出力データバッファ１００に出力する。出力データバッファ１００は、命令情報レジスタ９８の一部に格納された１出力情報の値により、ＡＬＵ９６の出力をパケット生成回路１０２または帰還用ゲート１０４のいずれかに与える。この場合１出力情報が“１”である場合には出力データバッファ１００はデータを帰還用ゲート１０４に与え、それ以外の場合にはパケット生成回路１０２に与える。
【００５６】
１出力情報が“１”である場合には、入力データバッファ９０に与えられるタイミング信号がＯＮとなるとともに帰還用ゲート１０４からデータ１レジスタ９２に出力データバッファ１００の値が帰還される。
【００５７】
このようにして１出力情報が“１”であれば、先行するデータパケットに対する演算の結果を、後続するデータパケットの演算の入力として用いて一連の演算が次々と実行される。そして１出力情報が“１”でなくなった時点でパケット生成回路１０２から、演算結果を持ったパケットが出力される。
【００５８】
このようにすることにより、演算処理部５４からプログラム記憶部５０に向けて出力されるデータパケットの数が減少するとともに、１入力１出力からなる一連の命令、または２入力１出力の命令から始まる、後続する１入力１出力の一連の命令がすべて演算処理部５４で連続して処理される。そのために、各命令を実行するために各データパケットを演算処理部からプログラム記憶部、さらに対データ検出部から再び演算処理部に循環させる必要がなく、パケット送信に必要な時間を節約でき、処理を高速化することができる。
【００５９】
以下、図７に示されるデータフローダイヤグラムに対応するデータフロープログラムを、本実施例のデータフロー型情報処理装置で実行する場合の装置の動作について説明する。
【００６０】
図７を参照して、以下で例として説明するデータフロープログラムは、ノードｎ３〜ｎ６の処理を含む。各ノードは矢印（アーク）で連結されている。ノードｎ３は２入力１出力の乗算（ｍｕｌ）である。ノードｎ４は演算「＋＋」（１加算）である。ノードｎ５の演算は絶対値を取る演算である。ノードｎ６の演算は浮動小数点演算である。ノードｎ６の出力は２入力のノードｎ７に与えられる。
【００６１】
図８を参照して、プログラム記憶部５０内に表形式で示されているのは、図７に示されるデータフローダイヤグラムに対応するデータフロープログラムを模式的に表わしたものである。このような情報がプログラムメモリ内に格納されている。符号ｎ１〜ｎ６はノード番号を示す。枠内の各列は左から順に命令情報、行先情報、定数情報、コピー情報、２入力命令情報、１出力命令情報を表わす。
【００６２】
今、プログラム記憶部５０に、第１のデータパケットＮ１（ｏｐｃ，ｎ１）が入力されたものとする。この場合プログラム記憶部５０内のノードｎ１の情報が読出され、その情報に従ってデータパケットＮ３ａが対データ検出部５２に対して出力される。データパケットＮ３ａは２入力１出力命令である。
【００６３】
この場合対データ検出部５２内には、データパケットＮ３ａとマッチングするデータパケットが待避されていないものとする。データパケットＮ３ａは対データ検出部５２内の待合せメモリ８４（図３参照）に待避される。
【００６４】
さらに第２のデータパケットＮ２（ｏｐｃ，ｎ２）がプログラム記憶部５０に入力されたものとする。同様にノードｎ２の情報が読出され、データパケットＮ３ｂが対データ検出部５２に与えられる。
対データ検出部５２は、データパケットＮ３ｂを受けると待合せメモリ８４内をチェックし、マッチングするデータパケットが待避されていないかどうかを確認する。この場合すでにデータパケットＮ３ａが待避されているために、マッチングが発生し、対データ検出部５２は２つのデータパケットＮ３ａ、Ｎ３ｂから１つのデータパケットを生成し、演算処理部５４に与える。このデータパケットの生成は、データパケットＮ３ａ，Ｎ３ｂのデータから生成される。
【００６５】
対データ検出部５２は、このデータパケットの出力の際に、その１出力情報をチェックする。この場合１出力情報の値は“１”である。そのために、図９に示されるように対データ検出部５２は、マッチング線５６のマッチング信号をＯＮとする。また対データ検出部５２は、マッチングデータ線５８上にマッチングデータとして行先情報ｎ３を出力する。
【００６６】
プログラム記憶部５０は、このマッチング信号がＯＮとなったことに応答して、マッチングデータ（ｎ３）を読込む。そしてプログラム記憶部５０は、読込まれた行先情報ｎ３に対応するノードの情報を読出し、このときの２入力情報が“０”であるので、対応するデータパケットＮ４（＋＋，ｎ４，データ，０，１）を対データ検出部５２に出力する。このとき、プログラム記憶部５０は、前述の動作（４）（５）に従って、出力されるデータパケットＮ４の２入力命令情報と１出力命令情報とをチェックする。この場合２入力命令情報が“０”、１出力情報が“１”であるために、プログラム記憶部５０は前述の（４）（５）に従って、出力されたデータパケットに含まれる行先情報（ｎ４）に従って、データフロープログラムのノードｎ４の情報を読出す。そして同様にデータパケットＮ５（ａｂｓ，ｎ５，データ，０，１）を、読出した情報に従って対データ検出部５２に向けて出力する。この場合に出力されるデータパケットの２入力命令情報、１出力情報も“０”、“１”であるために、プログラム記憶部５０はさらに、出力されるデータパケット中の行先情報ｎ５に従ってノードｎ５の情報を読出す。そして、読出されたノードｎ５の情報に従ってさらにデータパケットＮ６（ｆｌｏａｔ，ｎ６，データ，０，０）を対データ検出部５２に向けて出力する。データパケットＮ６の出力の際には、１出力情報が“０”である。したがってプログラム記憶部５０は、これ以上繰返してデータパケットを出力することは行なわない。
【００６７】
図１０を参照して、データパケットＮ３は演算処理部５４に送られ、そこで演算ｍｕｌが行なわれる。データパケットの１出力情報が“１”であるために、演算結果を含むデータパケットは出力されず、演算結果はデータ１レジスタ９２に帰還して保存される。一方対データ検出部５２は、順に入力されるデータパケットＮ４、Ｎ５、Ｎ６がいずれも１入力命令である（２入力命令情報が“０”）ために、これらのデータパケットをそのまま順に演算処理部５４に向けて出力する。
【００６８】
図１１を参照して、データパケットＮ４、Ｎ５、Ｎ６に対する演算は、レジスタ９２に一時格納されていた、データパケットＮ３の演算結果を入力として順に行なわれる。この場合、データパケットＮ４、Ｎ５の１出力情報はともに“１”であるために、その演算結果は後続するデータパケットの演算に対する入力として用いられる。しかし、データパケットＮ６の１出力情報は、“０”であるために、この繰返し演算は終了され、一連の演算結果を含むデータパケットがプログラム記憶部５０に向けて出力される。このときの行先情報は、データパケットＮ６に格納されていた行先情報ｎ６となっている。
【００６９】
プログラム記憶部５０は、入力されたデータパケットの行先情報ｎ６に従って、データフロープログラムの該当ノードの情報を読出し、さらに上述したような処理を繰返し行なってデータフロープログラムの実行を行なう。
【００７０】
以上のようにこの実施例のデータフロー型情報処理装置では、１入力１出力命令からなる一連の命令、または２入力１出力命令と、その命令に後続する１入力１出力命令からなる一連の命令に関するデータパケットを流路を循環させることなく、演算処理部で連続して処理することができる。一連の演算結果のデータパケットのみを演算処理部からプログラム記憶部に出力すればよいために、循環させるデータパケットの数が減少し、一連の処理を完結するのに要する時間も減少させることができる。
【００７１】
【発明の効果】
以上のように請求項１に記載の発明によれば、データフロープログラム中で連鎖的に実行可能な一連の演算を含む一連のデータパケットがデータパケット出力手段から演算手段に向けて連続して与えられる。演算手段は、データパケット出力手段から与えられるこの一連のデータパケットに対して、先行する演算に対する演算結果を後続する演算の入力に用いることにより、一連の演算を実行し、その演算結果を持ったデータパケットを所定の行先情報に従って出力する。一連の演算を構成する各演算毎にデータパケットを循環させる必要がなく、一連の演算を演算手段で連続して実行することができるために、データパケットの数が減少し、演算速度を向上させることが可能なデータフロー型情報処理装置を提供できる。
【００７２】
請求項２に記載の発明によれば、入力データパケットに基づいて出力されるデータパケットに含まれる演算情報が１データで実行開始可能な演算を示すものであり、かつその行先情報がただ１つの行先ノードを特定するものであれば、その行先ノードに含まれる演算情報に従ったデータパケットを出力することが繰返し行なわれる。繰返し出力されたデータパケットは、対データ検出部によって演算手段に向けて一連のデータパケットとして送られる。そして演算手段により、この一連のデータパケットに対し、先行する演算の演算結果を後続する演算の入力に用いることにより、一連の演算が連続的に実行される。そして一連の演算の演算結果を、所定の行先情報に従ってデータパケットとして出力する。１入力１出力命令のデータパケットを、データパケットの流路を循環させることなく演算手段によって連続して実行し、一連の演算の演算結果のみをデータパケットとして出力すればよいために、出力するデータパケットの数が減少するとともに、一連の演算の実行に必要な時間も減少し、演算の実行速度を向上させることができる。
【００７３】
請求項３に記載の発明に係るデータフロー型情報処理装置では、演算手段に向けて出力された実行可能なデータパケットに含まれる演算情報が複数入力演算を示すものであって、かつその行先情報が単一のノードを示すときには、その行先情報により特定されるノードから読出された情報に基づいて、そのノードに対応する演算が単一入力演算であればそれに対応するデータパケットが出力される。したがって、２入力命令であっても１出力であれば、後続する演算が可能なときにはそのためのデータパケットも連続して演算手段に与えられ、演算手段でこの一連の処理を連続して実行することができる。さらにプログラム記憶手段から出力されるデータパケットの演算情報が１入力で実行可能でありかつその行先がただ１つのノードを指定するものであれば、その行先ノードに含まれる演算情報に基づいてデータパケットを出力する処理が繰返し行なわれる。そのために、請求項２に記載のデータフロー型情報処理装置と同様にさらにこの後に続く１入力１出力の命令からなる一連の演算も演算手段で連続して行なうことができる。その一連の演算結果を１つのデータパケットとして出力すればよいために、流路を循環させるデータパケットの数を減らすことができ、しかも一連の演算を行なうときにデータパケットが循環する時間を節約でき、処理を高速化することができる。その結果、データパケットの数をより少なくし、より多くの演算を一連の演算として演算手段で連続して実行することができ、処理をより高速化することができるデータフロー型情報処理装置を提供できる。
【図面の簡単な説明】
【図１】本発明に係るデータフロー型情報処理装置のブロック図である。
【図２】プログラム記憶部のブロック図である。
【図３】対データ検出部のブロック図である。
【図４】演算処理部のブロック図である。
【図５】データパケットの構成を示す模式図である。
【図６】データフロープログラムの構成を示す模式図である。
【図７】データフローダイヤグラムである。
【図８】データフロー型情報処理装置の動作を説明するための模式図である。
【図９】データフロー型情報処理装置の動作を説明するための模式図である。
【図１０】データフロー型情報処理装置の動作を説明するための模式図である。
【図１１】データフロー型情報処理装置の動作を説明するための模式図である。
【図１２】従来のデータフロー型情報処理装置の構成を示すブロック図である。
【符号の説明】
５０  プログラム記憶部
５２  対データ検出部
５４  演算処理部
５６  マッチング線
５８  マッチングデータ線
６６  データパケット出力部
７０  コントローラ
７２  プログラムメモリ
８２  マッチングコントロール回路
８４  待合せメモリ
９２  データ１レジスタ
９４  データ２レジスタ
９６  ＡＬＵ
９８  命令情報レジスタ
１０４  帰還用ゲート
１０８  ＡＮＤゲート
【図１】
0003708560.tif 000002
【図２】
0003708560.tif 000003
【図３】
0003708560.tif 000004
【図４】
0003708560.tif 000005
【図５】
0003708560.tif 000006
【図６】
0003708560.tif 000007
【図７】
0003708560.tif 000008
【図８】
0003708560.tif 000009
【図９】
0003708560.tif 000010
【図１０】
0003708560.tif 000011
【図１１】
0003708560.tif 000012
【図１２】
0003708560.tif 000013