(57)【要約】【課題】異なる識別番号を持つ入力データに対する演算を効率よく行なうことができるデータ駆動型情報処理装置を提供する。【解決手段】データ駆動型情報処理装置１０００に含まれる発火制御部１５０２は、パイプラインレジスタ４１０と世代番号操作部４３０と指定用レジスタ４３２と設定用レジスタ４３４と待ち合わせ処理部４４０と待ち合わせメモリ４５０とを備える。パイプラインレジスタ４１０は、命令コード４１２、ノード番号４１４、世代番号４１６、データ４１８を含むデータパケットを格納する。世代番号操作部４３０は、ノード番号４１４の値によって、指定用レジスタ４３２により指定される世代番号４１６のビットを設定用レジスタ４３４の設定値に変更する。待ち合わせ処理部４４０は、パイプラインレジスタ４１０のデータパケットと待ち合わせメモリ４５０のデータパケットとの待ち合わせ処理を行なう。【選択図】図４
2010039766.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
複数のパケットを順次受け取るパケット受取部を備え、
各前記パケットは、タグ情報領域とデータ領域とを含み、
前記タグ情報領域は、前記パケットを識別するアドレスを有し、
前記パケット受取部が受け取った前記パケットを格納する第１の記憶部と、
前記第１の記憶部に格納された前記パケットに対し、前記タグ領域に含まれる制御ビットが所定の値であるとき、前記アドレスに含まれる対象ビットを所定の状態に変更するアドレス操作を行なうアドレス操作部と、
前記アドレス操作が行なわれた処理後パケットを格納する第２の記憶部と、
前記処理後パケットの前記アドレスが前記第２の記憶部に格納された待機パケットの前記アドレスに一致する場合、前記処理後パケットと前記待機パケットの前記データ領域とを外部に出力し、前記処理後パケットの前記アドレスが前記待機パケットの前記アドレスに一致しない場合、前記処理後パケットを前記第２の記憶部に格納する待ち合わせ処理部とをさらに備える、情報処理装置。
【請求項２】
前記アドレスは、ノード番号および世代番号を含み、
前記対象ビットは、前記世代番号に含まれるビットである、請求項１に記載の情報処理装置。
【請求項３】
前記制御ビットは、前記ノード番号に含まれるビットである、請求項２に記載の情報処理装置。
【請求項４】
前記パケットは、命令コードをさらに含み、
前記制御ビットは、前記命令コードに含まれるビットである、請求項２に記載の情報処理装置。
【請求項５】
前記対象ビットの位置を指定する値を格納する指定用レジスタをさらに備え、
前記アドレス操作部は、前記制御ビットが前記所定の値であるとき、前記指定用レジスタにより指定された位置にある前記対象ビットを前記所定の状態に変更する、請求項１から４のいずれか１項に記載の情報処理装置。
【請求項６】
前記指定用レジスタは、各々が前記対象ビットの位置を指定する複数の第１の指定値を、前記制御ビットの値に対応付けて格納し、
前記アドレス操作部は、前記制御ビットの値に応じた位置にある前記対象ビットを前記所定の状態に変更する、請求項５に記載の情報処理装置。
【請求項７】
前記アドレス操作部は、前記制御ビットが前記所定の値であるとき、前記対象ビットの値を設定値に置き換える、請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
前記アドレス操作部は、前記制御ビットが前記所定の値であるとき、前記対象ビットを削除する、請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項９】
前記アドレス操作部は、前記制御ビットが前記所定の値であるとき、前記対象ビットの値を、前記パケットの左右属性を指定する左右属性フラグの値に設定する、請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項１０】
ビット値を格納する設定用レジスタをさらに備え、
前記アドレス操作部は、
前記設定用レジスタに格納された前記ビット値と前記対象ビットの値との論理積をとる第１の回路と、
前記制御ビットの値に応じて、前記対象ビットあるいは前記論理積を出力する第２の回路とを含む、請求項１〜９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記データ領域は、複数のデータを含み、
前記待ち合わせ処理部が出力する前記処理後パケットの前記データおよび前記待機パケットの前記データのうち、偶数番目の前記データあるいは奇数番目の前記データを取り出す演算部をさらに備える、請求項１〜１０のいずれか１項に記載の情報処理装置。
【請求項１２】
前記データ領域は、複数のデータを含み、
前記待ち合わせ処理部が出力する前記処理後パケットの前記データおよび前記待機パケットの前記データに対し、偶数番目の前記データおよび奇数番目の前記データの平均を計算する演算部をさらに備える、請求項１〜１０のいずれか１項に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータパケットを組にして出力する情報処理装置に関し、特に、動的データ駆動方式を用いたデータ駆動型情報処理装置に関する。
【背景技術】
【０００２】
近時、たとえば画像処理などの分野で、プロセッサの動作速度を向上させることに対する要求が高まっている。このようなプロセッサの高速化に対する解決の１手段として並列処理が有力視されている。並列処理向きアーキテクチャのうちでも、データ駆動型とよばれるアーキテクチャが特に注目される。
【０００３】
データ駆動型プロセッサでは、「ある処理に必要な入力データがすべて揃い、かつその処理に必要な演算装置などの資源が割当てられたときに処理を行なう」という単純な規則に従って処理が進行する。データ駆動型のアーキテクチャを実現するためには、入力データが揃ったこと（発火）を検出するための機構（発火制御部）が必要である。この発火検出の際に、ある処理に対して１組の入力データセットしか許さないものを静的データ駆動方式、２組以上の入力データセットを許すものを動的データ駆動方式と呼ぶ。
【０００４】
映像信号処理などの時系列データを処理する際には、静的データ駆動方式では十分に対応できず、動的データ駆動方式を採用することが必要であると考えられる。動的データ駆動方式を用いた映像処理向きデータ駆動型情報処理装置の一例が、非特許文献１（「動的データ駆動型プロセッサによる並列処理方式の検討」（情報処理学会、マイクロコンピュータアーキテクチャシンポジューム、１９９１．１１．１２））に示されている。
【０００５】
ここで、データ駆動型情報処理装置の基本動作について説明しておく。まず、データ駆動型情報処理装置は、最初に入力された入力データを待ち合わせメモリに格納する。次に、２番目に入力された入力データと待ち合わせメモリに格納されたデータとが入力データセットを構成するかどうかを、入力データに対して入力順に付与されている識別番号(以下、世代番号とよぶ)および入力データへの演算を示すノード番号を基に判断する。
【０００６】
そして、データ駆動型情報処理装置は、判断結果に基づいて、入力データが待ち合わせメモリに格納されたデータと入力データセットを構成しない場合、入力データを待ち合わせメモリに格納する。一方、データ駆動型情報処理装置は、入力データと待ち合わせメモリに格納されたデータとが入力データセットを構成する場合、入力データと待ち合わせメモリのデータとを組にして出力する。
【０００７】
データ駆動型情報処理装置は、３番目以降に入力された入力データに対しても、上述の処理と同様の処理を繰り返す。すなわち、データ駆動型情報処理装置は、入力データと待ち合わせメモリに格納されたデータとが入力データセットを構成するかどうか判断し、判断結果に基づいて、入力データを待ち合わせメモリに格納、あるいは、外部に出力する。
【０００８】
動的データ駆動方式においては、ある処理に対して複数の入力セットが存在するために、これら複数の入力セットを識別するための世代識別子などの概念を導入する必要がある。以下の説明では、この世代識別子のことを世代番号と呼ぶ。
【０００９】
なお、動作速度の向上に関し、データ駆動型情報処理装置には、複数のデータを１つのパケットにもたせ、並列処理を行うことで処理の高速化を図っているものがある。
【００１０】
また、発火制御部は発火検出以外に用いられることがある。特許文献１（特開昭６３−１４９７３６号公報）には、発火制御部の待ち合わせメモリのビット数に従って、世代番号に対してビットシフト演算を行なうことが開示されている。
【特許文献１】特開昭６３−１４９７３６号公報
【非特許文献１】「動的データ駆動型プロセッサによる並列処理方式の検討」（情報処理学会、「マイクロコンピュータ・アーキテクチャ」シンポジウム、１９９１．１１．１２）
【発明の開示】
【発明が解決しようとする課題】
【００１１】
現状のデータ駆動型情報処理装置では、異なる識別番号を持つ複数の入力データを組にすることができない。したがって、データ駆動型情報処理装置を用いて、異なる識別番号を持つ入力データ間の演算を効率よく行なうことができない。
【００１２】
入力データ間の演算は、例えば、データ駆動型情報処理装置を用いた画像処理の際にしばしば必要である。通常の仕様のＣＣＤ（ｃｈａｒｇｅ−ｃｏｕｐｌｅｄ  ｄｅｖｉｃｅ）などのカメラは、色差信号と輝度信号とを交互に出力する。このようなカメラの出力信号に対して処理を効率よく行なうためには、データ駆動型情報処理装置は、１つのパケットに輝度信号のみ、または色差信号のみを格納する必要がある。
【００１３】
ところが、現状のデータ駆動型情報処理装置は、異なる世代番号を持つデータ同士に対し、直接、演算を行なうことができない。したがって、現状のデータ駆動型情報処理装置は、カメラの出力信号を効率よく処理できない。現状のデータ駆動型情報処理装置を用いる場合、１つのパケットに輝度信号のみ、または色差信号のみを格納するためには、世代番号をあわせるなどの処理が必要となる。
【００１４】
上述のような処理を実現する他の方法として、カメラの出力信号を、一旦メモリに格納し、格納されたデータのうち偶数番目のデータのみ読み出すといった方法もある。しかし、メモリのスループットに処理の速度が影響されるため、この方法による処理効率はよくない。
【００１５】
特許文献１には、世代番号のビットシフト演算を行なうことが開示されている。しかし、この演算は、あくまでも待ち合わせメモリのハッシュアドレス計算に使用するためのものである。また、このビットシフト演算は、待ち合わせメモリを定数メモリとして流用することで実現されている。したがって、特許文献１に記載の方法によっても、異なる世代番号をもつ入力データ間の演算を効率よく行なうことができない。
【００１６】
本発明は、上記のような問題を解決するためになされたものであって、異なる識別番号を持つ入力データに対する演算を効率よく行なうことができるデータ駆動型情報処理装置を提供することを課題とする。
【課題を解決するための手段】
【００１７】
１つの局面に係る本願発明は、情報処理装置であって、複数のパケットを順次受け取るパケット受取部を備え、各パケットは、タグ情報領域とデータ領域とを含み、タグ情報領域は、パケットを識別するアドレスを有し、パケット受取部が受け取ったパケットを格納する第１の記憶部と、第１の記憶部に格納されたパケットに対し、タグ領域に含まれる制御ビットが所定の値であるとき、アドレスに含まれる対象ビットを所定の状態に変更するアドレス操作を行なうアドレス操作部と、アドレス操作が行なわれた処理後パケットを格納する第２の記憶部と、処理後パケットのアドレスが第２の記憶部に格納された待機パケットのアドレスに一致する場合、処理後パケットと待機パケットのデータ領域とを外部に出力し、処理後パケットのアドレスが待機パケットのアドレスに一致しない場合、処理後パケットを第２の記憶部に格納する待ち合わせ処理部とをさらに備える。
【００１８】
好ましくは、アドレスは、ノード番号および世代番号を含み、対象ビットは、世代番号に含まれるビットである。
【００１９】
さらに好ましくは、制御ビットは、ノード番号に含まれるビットである。
さらに好ましくは、パケットは、命令コードをさらに含み、制御ビットは、命令コードに含まれるビットである。
【００２０】
好ましくは、対象ビットの位置を指定する値を格納する指定用レジスタをさらに備え、アドレス操作部は、制御ビットが所定の値であるとき、指定用レジスタにより指定された位置にある対象ビットを所定の状態に変更する。
【００２１】
さらに好ましくは、指定用レジスタは、各々が対象ビットの位置を指定する複数の第１の指定値を、制御ビットの値に対応付けて格納し、アドレス操作部は、制御ビットの値に応じた位置にある対象ビットを所定の状態に変更する。
【００２２】
好ましくは、アドレス操作部は、制御ビットが所定の値であるとき、対象ビットの値を設定値に置き換える。
【００２３】
好ましくは、アドレス操作部は、制御ビットが所定の値であるとき、対象ビットを削除する。
【００２４】
好ましくは、アドレス操作部は、制御ビットが所定の値であるとき、対象ビットの値を、パケットの左右属性を指定する左右属性フラグの値に設定する。
【００２５】
好ましくは、ビット値を格納する設定用レジスタをさらに備え、アドレス操作部は、設定用レジスタに格納されたビット値と対象ビットの値との論理積をとる第１の回路と、制御ビットの値に応じて、対象ビットあるいは論理積を出力する第２の回路とを含む。
【００２６】
好ましくは、データ領域は、複数のデータを含み、待ち合わせ処理部が出力する処理後パケットのデータおよび待機パケットのデータのうち、偶数番目のデータあるいは奇数番目のデータを取り出す演算部をさらに備える。
【００２７】
好ましくは、データ領域は、複数のデータを含み、待ち合わせ処理部が出力する処理後パケットのデータおよび待機パケットのデータに対し、偶数番目のデータおよび奇数番目のデータの平均を計算する演算部をさらに備える。
【発明の効果】
【００２８】
本発明によれば、入力されたパケットの制御ビットの値に応じて、入力されたパケットのうち待ち合わせの判断に用いられるアドレスに含まれる対象ビットを所定の状態に変化させるアドレス操作処理を行なう。アドレス操作処理により、元々対象ビットは異なっていたものの、対象ビットを除くアドレスが同じパケットを、組にして出力することができる。したがって、異なる識別番号を持つ入力データに対する演算を効率よく行なうことができる。
【発明を実施するための最良の形態】
【００２９】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部分には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰り返さない。
【００３０】
（１．情報処理システムの構成）
図１を参照して、データ駆動型情報処理装置を含む情報処理システムの構成について説明する。図１に示すように、この情報処理システムは、データ駆動型情報処理装置１０００と、画像メモリ部１１００とを備える。画像メモリ部１１００は、画像メモリ１２００とメモリインタフェース１３００とを含む。なお、同様の構成のシステムは、非特許文献１に開示されている。
【００３１】
データ駆動型情報処理装置１０００は、データ伝送路１００６、１００８にそれぞれ接続された入力ポート１００２、１００４を有する。また、データ駆動型情報処理装置１０００は、データ伝送路１０１６、１０１８にそれぞれ接続された出力ポート１０１２、１０１４を有する。さらに、データ駆動型情報処理装置１０００は、メモリインタフェース１３００との間のデータ伝送路１０２６に接続された出力ポート１０２２と、メモリインタフェース１３００との間のデータ伝送路１０２８に接続された入力ポート１０２４とを有する。
【００３２】
データ駆動型情報処理装置１０００には、入力ポート１００２、１００４を介して、入力データパケットが入力される。入力データパケットには、入力時間順序に従った識別子である世代番号が付加されており、データ駆動型情報処理装置１０００には、入力データパケットが時系列的に入力される。データ駆動型情報処理装置１０００は、入力データパケットに対して処理を行なう。処理内容は予め定められており、データ駆動型情報処理装置１０００の内部に記憶されている。データ駆動型情報処理装置１０００は、記憶されている内容に基づいて、処理を実行する。
【００３３】
メモリインタフェース１３００は、データ駆動型情報処理装置１０００の出力ポート１０２２から出力される、画像メモリ１２００に対するアクセス要求（画像メモリに記憶されたデータの参照または更新などの要求）をデータ伝送路１０２６を介して受信する。メモリインタフェース１３００は、メモリアクセス制御線を介して、画像メモリ１２００に対してアクセスして、その結果をデータ伝送路１０２８を介して、データ駆動型情報処理装置１０００の入力ポート１０２４に送信する。
【００３４】
データ駆動型情報処理装置１０００は、入力データパケットに対する処理が終了した後に、出力ポート１０１２、１０１４を介して、データ伝送路１０１６、１０１８に出力データパケットを出力する。
【００３５】
（２．データパケットの構成）
図２にデータパケットの構成を示す。データパケットはデータパケットのヘッダに相当する情報を格納するためのタグ情報領域と、データを格納するためのデータ領域とを含む。タグ情報領域は、上位ビットから順に、命令コードと、ノード番号と、世代番号と、左右属性フラグとを含む。
【００３６】
命令コードは、データ駆動型情報処理装置１０００が入力データパケットに対して行なう命令を特定するためのコードである。データ駆動型情報処理装置１０００の演算部は、演算部内部の命令デコーダにより入力データパケットの命令コードをデコードし、その命令コードに対応した特定の処理を入力データパケットに対して実行する。
【００３７】
ノード番号は、プログラムメモリに格納されている命令コードとノード番号とを参照するためのアドレスとして使用される。ノード番号は、演算対象を指定するためのアドレスとして使用される。すなわち、データ駆動型情報処理装置１０００は、命令コードに指定されているノード番号に一致するノード番号をもつ入力データパケットに対して演算を行なう。
【００３８】
世代番号は、入力時間順に各データパケットに付され、入力データパケットを識別するために識別子として使用される。なお、世代番号は、画像アドレスとして使用することもでき、その場合、世代番号は上位ビットから順に、フィールドアドレス、ラインアドレス、ピクセルアドレスを示すことになる。
【００３９】
ノード番号および世代番号は、それぞれ、データパケットを識別するための情報であり、以下では、これらを格納する領域を「アドレス領域」とよぶ。
【００４０】
左右属性フラグは、いわゆる２項演算においてデータが演算の第１項のデータ（以下「左データ」と呼ぶ）であるか、第２項のデータ（以下「右データ」と呼ぶ。）であるかを示すためのフラグである。
【００４１】
（３．データ駆動型処理装置の構成）
図３を参照して、データ駆動型情報処理装置１０００の内部構成について説明する。図３に示すように、データ駆動型情報処理装置１０００は、合流部１５００と、合流部１５００に接続された発火制御部１５０２と、発火制御部１５０２に接続されたメモリ制御部１５０４と、メモリ制御部１５０４に接続された演算部１５０６と、演算部１５０６に接続されたプログラム記憶部１５０８と、プログラム記憶部１５０８に接続された分岐部１５１０とを含む。分岐部１５１０は、合流部１５００にも接続されている。
【００４２】
合流部１５００は、データ伝送路１００６、１００８に接続された入力ポート１００２および入力ポート１００４に入力された入力データパケットを順次受け取る。そして、合流部１５００は、受け取った入力データパケットを発火制御部１５０２に送る。
【００４３】
発火制御部１５０２は、データパケットの待ち合わせ用の待ち合わせメモリを有する。発火制御部１５０２は、入力データパケットを、その入力データパケットと組をなすデータパケットが入力されるまで、待ち合わせメモリに待機させる。発火制御部１５０２は、組をなす入力データパケットが揃ったら、入力データパケットの組を、メモリ制御部１５０４に移動させる。
【００４４】
メモリ制御部１５０４は、入力データパケットに含まれるタグ情報またはデータに基づいて、内蔵されたメモリまたは画像メモリ１２００に対するアクセス要求を実行し、メモリに記憶されたデータを参照したり更新したりする。
【００４５】
演算部１５０６は、入力データパケットに含まれる命令コードに従って処理を選択して、選択された処理に対応する演算を実行する。演算された結果がプログラム記憶部１５０８に送信される。
【００４６】
プログラム記憶部１５０８は、次に実行される命令コードとノード番号とが記憶されたプログラムメモリを含む。このノード番号をアドレスとしてプログラムメモリへのアクセスが実行される。
【００４７】
（４．発火制御部）
すでに記述したように、データ駆動型情報処理装置１０００の発火制御部１５０２は、待ち合わせメモリを用いて、入力されたパケットの組を生成する。発火制御部１５０２は、入力データパケットの世代番号と入力データパケットへの演算を示すノード番号とに基づいた入力データパケットが組をなすかどうかを判断し、判断結果に基づいて入力データパケットを出力、あるいは、待ち合わせメモリに格納する。
【００４８】
なお、現状のデータ駆動型情報処理装置の多くは、ここで説明したのと同様に、世代番号およびノード番号の両方を用いて入力データパケットを組にするものの、発火制御部１５０２が、入力データパケットを組にするかどうかの判断に用いる情報は、世代番号およびノード番号の組み合わせに限られない。発火制御部１５０２は、アドレス領域に含まれる情報を用いて、入力データパケットを組にするべきかどうかを判断できる。つまり、発火制御部１５０２は、世代番号のみあるいはノード番号のみを用いて、入力データパケットを組にするべきかどうか判断してもよい。
【００４９】
例えば、回路規模を節約する必要がある場合や、ある程度規則的にパケットが流れてくるといった特別な条件が満たされている場合には、発火制御部１５０２は、このようにより少ない情報を用いて、入力データパケットを組にするべきかどうかを判断すればよい。
【００５０】
本実施の形態に係る発火制御部１５０２を備えるデータ駆動型情報処理装置１０００によれば、データパケットに対し、柔軟に演算を行なうことができる。以下、発火制御部１５０２の構成および動作について説明する。
【００５１】
図４に、本実施の形態に係る発火制御部１５０２のブロック構成図を示す。図４を参照すると、発火制御部１５０２は、パイプラインレジスタ４１０と、読み書き部４２０と、世代番号操作部４３０と、指定用レジスタ４３２と、設定用レジスタ４３４と、待ち合わせ処理部４４０と、待ち合わせメモリ４５０とを備える。
【００５２】
パイプラインレジスタ４１０は、合流部１５００から発火制御部１５０２に入力されたデータパケットをラッチする。パイプラインレジスタ４１０に格納されるデータパケットは、すでに説明したとおり、命令コード４１２と、ノード番号４１４と、世代番号４１６と、データ４１８とを含む。なお、図４では、データパケットに含まれる左右属性フラグを図示していない。パイプラインレジスタ４１０は、ラッチした入力データパケットに含まれるノード番号４１４と世代番号４１６の内容を示す信号を世代番号操作部４３０に渡す。
【００５３】
読み書き部４２０は、パイプラインレジスタ４１０へのデータパケットの書き込み、および、パイプラインレジスタ４１０からのデータパケットの読出しを行なう。
【００５４】
世代番号操作部４３０は、ノード番号４１４の最上位ビットが所定の値をとるとき、世代番号４１６の特定ビット（対象ビットとよぶ）の値を設定値にする。一方、世代番号操作部４３０は、ノード番号４１４の最上位ビットが所定の値以外の値を取るときは、特定ビットの値を変更しない。ここでは、ノード番号４１４の最上位ビットの「所定の値」とは“１”であるとする。ただし、所定の値は“０”であってもよい。
【００５５】
なお、特定ビットに対し変更処理を行なうかどうかを決めるビット（制御ビットとよぶ）は、ノード番号４１４の最上位ビットに限られない。制御ビットとしては、タグ領域に含まれる他のビット、例えば、ノード番号４１４の最上位以外のビットや、命令コード４１２のビットや、世代番号４１６のビット（対象ビットを除く）を用いてもよい。また、世代番号操作部４３０は、複数のビットに基づいて、特定ビットに対し変更処理を行なうかどうかを決めてもよい。
【００５６】
また、対象ビットは、世代番号４１６のビットでなくてもよい。対象ビットは、発火制御部１５０２（より詳しくは、待ち合わせ処理部４４０）が待ち合わせの判断に用いるアドレス領域に含まれるビットの中から選べばよい。本実施の形態では、ノード番号４１４および世代番号４１６がアドレス領域に含まれるので、ノード番号４１４のビットを対象ビットとしてもよい。どのビットを対象ビットに選ぶかにより、データ４１８に対するどのような演算が容易になるかが変わる。本実施の形態では、世代番号４１６を特定ビットに選ぶことにより、データ駆動型情報処理装置１０００は、世代番号４１６が異なるデータパケット間の演算を行なうことができる。
【００５７】
世代番号操作部４３０の実現例および世代番号操作部４３０が行なう処理の詳細については、後述する。指定用レジスタ４３２および設定用レジスタ４３４についても、世代番号操作部４３０の詳細とあわせて後述する。
【００５８】
待ち合わせメモリ４５０は、世代番号操作部４３０が出力したデータパケットのうち、以下で説明するように、待ち合わせ処理部４４０により選択されたデータパケットを格納する。
【００５９】
待ち合わせ処理部４４０は、世代番号操作部４３０が出力しパイプラインレジスタ４１０に格納されているデータパケットと同じノード番号４１４および世代番号４１６を持つデータを待ち合わせメモリ４５０の中から検索する。
【００６０】
一致するデータパケットが待ち合わせメモリ４５０に存在する場合、待ち合わせ処理部４４０は、一致するデータを取り出す。そして、待ち合わせ処理部４４０は、取りだしたデータを、第２のデータ４１９として、パイプラインレジスタ４１０に格納されている入力データパケットに追加する。そして、待ち合わせ処理部４４０は、第２のデータ４１９が追加されたデータパケットを発火制御部１５０２の外部に出力する。
【００６１】
また、待ち合わせ処理部４４０は、一致するデータが格納されていたメモリ領域をクリアする。待ち合わせメモリの各メモリ空間の有効／無効フラグが存在する場合は、待ち合わせ処理部４４０は、一致するデータが格納されていたメモリ領域に無効フラグを設定する。
【００６２】
入力データパケットの世代番号４１６およびノード番号４１４と一致する世代番号４１６およびノード番号４１４を持つデータが待ち合わせメモリ４５０に存在しない場合、待ち合わせ処理部４４０は、入力データパケットのノード番号４１４、世代番号４１６、および、データ４１８を互いに対応付けて、待ち合わせメモリ４５０の空いているメモリ領域に格納する。また、待ち合わせ処理部４４０は、パイプラインレジスタ４１０から、入力データパケットを消去する。
【００６３】
なお、待ち合わせメモリ４５０に空いている領域がない場合、待ち合わせ処理部４４０は、入力データパケットを、待ち合わせメモリ４５０に格納せずに発火制御部１５０２の外部に出力する。
【００６４】
以上の処理により、発火制御部１５０２から出力されたデータパケットは演算部１５０６に入力される。演算部１５０６が行なう処理の具体例については後述する。
【００６５】
発火制御部１５０２が行なう処理の流れについて、図５を参照して、まとめて説明しておく。図５は、発火制御部１５０２が行なう処理の流れを示すフローチャートである。
【００６６】
ステップＳ５０１において、読み書き部４２０は、発火制御部１５０２に入力されたデータパケットを受け取り、入力データパケットをパイプラインレジスタ４１０に書き込む。
【００６７】
ステップＳ５０３において世代番号操作部４３０は、パイプラインレジスタ４１０に書き込まれた入力データパケットの世代番号４１６を操作する。ステップＳ５０３における処理の詳細は、後述する。
【００６８】
ステップＳ５０５において、待ち合わせ処理部４４０は、待ち合わせメモリ４５０の中から入力データパケットの対となるデータを検索する。
【００６９】
対となるデータが待ち合わせメモリ４５０にある場合（ステップＳ５０５においてＹｅｓ）、待ち合わせ処理部４４０は、ステップＳ５０７において、対データを作成する。ここで、対データとは、待ち合わせメモリ４５０中の対となるデータを第２のデータ４１９として、入力データパケットに追加したものである。
【００７０】
続いて、待ち合わせ処理部４４０は、ステップＳ５０９において、待ち合わせメモリ４５０から、対となるデータを消去する。
【００７１】
続いて、待ち合わせ処理部４４０は、ステップＳ５１１において、対データを、発火制御部１５０２の外部に出力する。発火制御部１５０２は、以上で、入力データパケットに対する処理を終了する。
【００７２】
一方、対となるデータが待ち合わせメモリ４５０にない場合（ステップＳ５０５においてＮｏ）、待ち合わせ処理部４４０は、ステップＳ５１３において、待ち合わせメモリ４５０に空き領域があるかどうかを判断する。
【００７３】
待ち合わせメモリ４５０に空き領域がある場合（ステップＳ５１５においてＹｅｓ）、待ち合わせ処理部４４０は、入力パケットデータのノード番号４１４と、世代番号４１６と、データ４１８とを待ち合わせメモリ４５０に格納する。
【００７４】
続いて、待ち合わせ処理部４４０は、入力パケットデータをパイプラインレジスタ４１０から消去する。発火制御部１５０２は、以上で、入力データパケットに対する処理を終了する。
【００７５】
待ち合わせメモリ４５０に空き領域がない場合（ステップＳ５１５においてＮｏ）、待ち合わせ処理部４４０は、入力データパケットを、発火制御部１５０２の外部に出力する。発火制御部１５０２は、以上で、入力データパケットに対する処理を終了する。
【００７６】
（５．世代番号操作部）
世代番号操作部４３０の実現例を図６に示す。図６を参照して、世代番号操作部４３０は、論理積回路（以下、ＡＮＤ回路６０２とよぶ）とマルチプレクサ６０４を含む。世代番号操作部４３０には、世代番号、ノード番号、設定用レジスタ４２４の設定値、指定用レジスタ４３２の指定値、をそれぞれ示す信号が入力される。設定値は、世代番号操作後の世代番号４１６の特定ビットの値を決める。指定値は、特定ビットの位置を決める。
【００７７】
まず、世代番号操作部４３０は、世代番号を示す信号を２つにコピーし、一方のコピーをマルチプレクサ６０４に渡し、他方のコピーをＡＮＤ回路６０２に渡す。
【００７８】
ＡＮＤ回路６０２には、世代番号４１６を示す信号の他に、設定用レジスタ４２４の設定値が渡される。ＡＮＤ回路６０２は、世代番号４１６と設定値との論理積を出力する。出力された論理積は、マルチプレクサ６０４に渡される。
【００７９】
ここで、設定値は“０”であるとする。この場合、ＡＮＤ回路６０２の出力は、常に、設定値と同じ値である“０”になる。
【００８０】
マルチプレクサ６０４は、選択用信号としてノード番号の最上位ビット（制御ビット）の値を受け取る。マルチプレクサ６０４は、制御ビットの値によって、世代番号４１６そのものを出力するか、世代番号４１６と設定値との論理積を出力するかを選択する。そして、マルチプレクサ６０４は、選択された値を示す信号を出力する。
【００８１】
読み書き部４２０は、世代番号操作部４３０が出力する信号を新たな世代番号４１６として、パイプラインレジスタ４１０の世代番号を示す領域に格納する。読み書き部４２０は、パイプラインレジスタ４１０のその他の領域には、パイプラインレジスタ４１０の値をそのまま格納する。
【００８２】
指定用レジスタ４３２の指定値は、変更可能であるものとする。指定値、すなわち、対象ビットの位置は、データ駆動型情報処理装置１０００が行なうべき演算に応じて設定される。
【００８３】
例えば、１６ｂｉｔのデータを４並列でもつデータ駆動型情報処理装置において、外部メモリに８ｂｉｔのデータを書き込む処理を行なう場合に、外部メモリへのアクセスレートを下げるため、２つのパケットを１つにしてメモリに書き込むことがある。１つのパケットでは１６ｂｉｔのデータのうち下位８ｂｉｔしか使用しないため無駄が生じるためである。この場合、パケットは４並列でデータを持っているので、Ｘ軸方向に隣り合うパケットの世代番号は４違いになる。よって、世代番号の下位から３ｂｉｔ目を指定することで、２つのパケットの世代番号が一致することになる。
【００８４】
さらに、指定用レジスタは、各々が対象ビットの位置を指定する複数の指定値を、制御ビットの値に対応付けて格納していてもよい。このとき、世代番号操作部４３０は、制御ビットの値に応じた位置にある対象ビットを設定値にする。このようにすれば、入力されたデータの種類に応じた位置にあるアドレス領域のビットを変更することができる。
【００８５】
なお、ここでは、世代番号操作部４３０は、制御ビットが所定の値のときに、対象ビットを設定値にする例を示した。しかし、アドレス操作は、異なるアドレスを持つパケットを対にすることを目的とするものであり、世代番号操作部４３０は、制御ビットが所定の値のときに、対象ビットを、設定値に限らず、所定の状態に変更できればよい。例えば、世代番号操作部４３０は、制御ビットが所定の値のときに、対象ビットを削除してもよい。あるいは、世代番号操作部４３０は、対象ビットを左右属性フラグの値に設定してもよい。このようにすれば、左右属性フラグを世代番号の他に定めておく必要がなくなる。
【００８６】
図７を参照して、図５のステップＳ５０３における処理、すなわち、世代番号操作部４３０の行なう処理の流れについて説明しておく。図７は、世代番号操作部４３０の行なう処理の流れを示すフローチャートである。
【００８７】
ステップＳ７０１において、世代番号操作部４３０は、世代番号を示す信号をコピーする。
【００８８】
ステップＳ７０３において、世代番号操作部４３０は、世代番号（厳密には、世代番号のコピー）と設定用レジスタ４３４のレジスタ値との論理積を計算する。
【００８９】
ステップＳ７０５において、世代番号操作部４３０は、世代番号とステップＳ７０３で計算した論理積とのいずれを出力するかを、制御ビットの値に基づいて選択する。
【００９０】
ステップＳ７０７において、世代番号操作部４３０は、ステップＳ７０５において出力することを選択したデータを示す信号を出力する。
【００９１】
（６．演算処理の具体例）
上述のような待ち合わせ処理により、データ駆動型情報処理装置１０００は、データパケットに対し、従来のデータ駆動型情報処理装置に比べて、自由度の高い演算を行なうことができる。以下では、ＣＣＤなどのカメラの出力信号から、輝度信号のみを取り出す演算について説明する。
【００９２】
カメラの出力信号について、図８を参照して説明する。図８は、カメラの出力信号について説明するための図である。図８に示す出力信号８１０は、サンプリングの際に２×２の４ピクセルから輝度情報（Ｙ）を４サンプル、輝度と青色成分の差(Ｕ、ただし図中ではＣｂと記載)、輝度と赤色成分の差(Ｙ、ただし図中ではＣｒと記載)をそれぞれ２サンプル採るＹＵＶ４２２形式のものである。この出力信号の各画素は、フィールド（ＦＤ）、ライン（ＬＮ）およびピクセル（ＰＸ）の値によって記述される。
【００９３】
１画素分の出力信号８１０に対応するデータパケット８２０は、命令領域（図２の命令コードに相当）、行先情報領域（図２のノード番号に相当）、データ属性領域（図２の世代番号に相当）、および、データ領域（図２のデータに相当）からなる。
【００９４】
データ領域は、データＤ０、データＤ１、データＤ２、データＤ３を格納する。データＤ０、データＤ１、データＤ２、データＤ３は、各々、１６ビットである。ここでは、データＤ０、データＤ１、データＤ２、データＤ３は、それぞれ、信号Ｃｂ０，０、Ｙ０，１、Ｃｒ０，２、Ｙ０，２を表わす。なお、他の画素に対応するデータパケットも、データパケット８２０と同様の構成を持つ。
【００９５】
図８の右側に、データパケットに対する演算の模式図を示す。カメラなどのデータ出力装置８３０から出力された各画素に対応するパケットは、順に、プログラム本体８４０に入力される。プログラム本体８４０は、プログラム本体８４０に入力されたパケットに対して所定の処理を行なう。プログラムによる処理結果は、処理結果を利用する装置８５０に出力される。
【００９６】
さて、２つのパケットから輝度信号を取り出して、取り出した輝度信号を格納する１つのパケットにすることを考える。本実施の形態に係るデータ駆動型情報処理装置１０００によれば、この処理を容易に行なうことができる。ユーザは、データ駆動型情報処理装置１０００にこの処理を行なわせるためには、パケットに、２つのパケットの偶数番目のデータのみ取り出して１つのパケットにする命令コードを設ければよい。
【００９７】
この命令に基づく処理を模式的に図９に示す。図９には、データＡ０、データＡ１、データＡ２、データＡ３を格納する第１のパケットと、データＢ０、データＢ１、データＢ２、データＢ３を格納する第２のパケットとを、１つの第３のパケットに統合する処理を示している。この処理では、第１のパケットの偶数番目の（添字が偶数の）データであるデータＡ０およびデータＡ２が抽出され、それぞれ、第３のパケットのデータＯ０、データＯ１とされる。また、第２のパケットの偶数番目のデータであるデータＢ０およびデータＢ２が抽出され、それぞれ、第３のパケットのデータＯ２、データＯ３とされる。
【００９８】
図１０を参照して、データ駆動型情報処理装置１０００により画像信号を含むパケットから輝度信号のみを取り出すためのプログラムについて説明する。図１０において実行したい処理は、２つのパケット；［（ＬＮ，ＰＸ）＝（０，０），Ｄ＝Ｃｂ００，Ｙ０１，Ｖ０２，Ｙ０３］（パケット１とする）、および、［（ＬＮ，ＰＸ）＝（０，４），Ｄ＝Ｃｂ０４，Ｙ０５，Ｖ０６，Ｙ０７］（パケット２とする）から、輝度信号（Ｙｘｘ）のみを取り出すことである。期待値（期待される出力パケットのデータ）は、［（ＬＮ，ＰＸ）＝（０，０），Ｄ＝Ｙ０１，Ｙ０３，Ｙ０５，Ｙ０７］である。
【００９９】
図１０に示すＰＡＣＫという命令は、図９を用いて説明した、２つのパケットからデータを並べ替える命令である。本実施の形態に係るデータ駆動型情報処理装置１０００は、世代番号操作により、世代番号の異なるパケット１とパケット２とを待ち合わせることができる。そのため、演算部１５０６は、ＰＡＣＫ命令のみを実行することで期待値を得ることができる。
【０１００】
従来のデータ駆動型情報処理装置は、同様の処理を行なうために、多くの回数の演算を行なう必要がある。従来のデータ駆動型情報処理装置が、画像信号を含むパケットから輝度信号のみを取り出す手順の一例を図１１に示す。図１１で実行したい処理は、図１０と同様である。
【０１０１】
図１１に示すＳＷＢＩＴＰＸ命令は、ＰＸ番号の指定されたビットが１（真）であれば、パケットを左の分岐の処理に進め、０（偽）であれば偽、パケットを右の分岐の処理に進める。ＳＷＢＩＴＰＸ命令により、パケット１は右へ、パケット２は左へ行く。
【０１０２】
ＡＮＤＰＸ命令は、異なる世代番号（この場合下位から３ｂｉｔ目）を０にする。この命令をプログラムに入れるのは、パケット１とパケット２を待ち合わせるためには世代番号を同じにする必要があるためである。
【０１０３】
ＲＯＤＲ命令はデータ並べ替えの命令で、パケット１に対してはＤ＝［Ｙ０１，Ｙ０３，０，０］、パケット２に対してはＤ＝［０，０，Ｙ０５，Ｙ０７］となるようにデータを並べ替える。この並び替え後の２つのパケットの論理和（ＯＲ）をとると、期待するパケットが得られる。
【０１０４】
図１０および図１１を参照すると、本実施の形態に係る演算のプログラム量は、従来のものと比べ１／６に、処理時間は１／４になっていることが分かる。このように、本発明によれば、世代番号が異なるパケット間でも演算が可能となり、プログラムのステップ数が小さくなる。
【０１０５】
演算部１５０６が行なう演算は、上述のものに限られない。例えば、演算部１５０６は、２つのデータパケットから偶数番目のデータではなく、奇数番目のデータを取り出す演算を行なってもよい。あるいは、２つのパケットの偶数番目のデータと奇数番目のデータの平均値を計算してもよい。
【０１０６】
（７．その他）
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１０７】
【図１】データ駆動型情報処理装置を含む情報処理システムの構成を示す図である。
【図２】データパケットの構成を示す図である。
【図３】データ駆動型情報処理装置１０００の内部構成を示す図である。
【図４】発火制御部１５０２のブロック構成図である。
【図５】発火制御部１５０２が行なう処理の流れを示すフローチャートである。
【図６】世代番号操作部４３０の実現例を示す図である。
【図７】世代番号操作部４３０の行なう処理の流れを示すフローチャートである。
【図８】カメラの出力信号について説明するための図である。
【図９】２つのパケットの偶数番目のデータのみ取り出して１つのパケットにする命令に基づく処理を模式的に説明する図である。
【図１０】データ駆動型情報処理装置１０００により画像信号を含むパケットから輝度信号のみを取り出すためのプログラムを説明するための図である。
【図１１】従来のデータ駆動型情報処理装置により画像信号を含むパケットから輝度信号のみを取り出すためのプログラムを説明するための図である。
【符号の説明】
【０１０８】
４１０  パイプラインレジスタ、４１２  命令コード、４１４  ノード番号、４１６  世代番号、４１８  データ、４１９  第２データ、４２０  読み書き部、４２４  設定用レジスタ、４３０  世代番号操作部、４３２  指定用レジスタ、４３４  設定用レジスタ、４４０  待ち合わせ処理部、４５０  メモリ、６０２  ＡＮＤ回路、６０４  マルチプレクサ、８１０  出力信号、８２０  データパケット、８３０  データ出力装置、８４０  プログラム本体、８５０  装置、１０００  データ駆動型情報処理装置、１００２  入力ポート、１００６  データ伝送路、１０１２  出力ポート、１０１６  データ伝送路、１０２２  出力ポート、１０２４  入力ポート、１０２６  データ伝送路、１０２８  データ伝送路、１１００  画像メモリ部、１２００  画像メモリ、１３００  メモリインタフェース、１５００  合流部、１５０２  発火制御部、１５０４  メモリ制御部、１５０６  演算部、１５０８  プログラム記憶部、１５１０  分岐部。
【図１】
2010039766.tif 000003
【図２】
2010039766.tif 000004
【図３】
2010039766.tif 000005
【図４】
2010039766.tif 000006
【図５】
2010039766.tif 000007
【図６】
2010039766.tif 000008
【図７】
2010039766.tif 000009
【図８】
2010039766.tif 000010
【図９】
2010039766.tif 000011
【図１０】
2010039766.tif 000012
【図１１】
2010039766.tif 000013