(57)【要約】【課題】  処理性能の限界近くまでマージンを削減したソフトウェア設計を行なうことが可能なデータ駆動型情報処理装置を提供すること。【解決手段】  データパケット状態取得部２２は、データパケット分岐部２１によってデータパケットが、所定の時間間隔で出力することが要求されるデータパケット群に含まれると判定された場合に、データメモリ２３を参照してデータパケット群に含まれる他のデータパケットの履歴情報を取得してデータパケットの待機時間を決定してデータメモリ２３に格納する。出力データパケット生成部２６は、データメモリ２３に記憶された待機時間が経過したときにデータパケットを出力する。したがって、データ駆動型情報処理装置内のデータパケットの処理量のゆらぎが減少し、処理性能の限界近くまでマージンを削減したソフトウェア設計を行なうことが可能となる。【選択図】        図２
2006221226.tif 000002
【特許請求の範囲】
【請求項１】
データパケットを入出力しながら演算処理を行なうデータ駆動型情報処理装置であって、
前記データパケットが、所定の時間間隔で出力することが要求されるデータパケット群に含まれる場合に、前記データパケットに必要となる待機時間を決定し、該待機時間が経過したときに前記データパケットを出力するための制御手段と、
前記データパケットに含まれる演算命令に応じて演算処理を行なうための演算処理手段とを含む、データ駆動型情報処理装置。
【請求項２】
前記制御手段は、前記データパケットが、所定の時間間隔で出力することが要求されるデータパケット群に含まれるか否かを判定し、判定結果に応じて前記データパケットを分岐させるための分岐手段と、
前記データパケットが、所定の時間間隔で出力することが要求されるデータパケット群に含まれる場合に、前記データパケット群に含まれる他のデータパケットの履歴情報を取得して前記データパケットの待機時間を決定するための取得手段と、
前記取得手段によって決定された待機時間を記憶するための記憶手段と、
前記記憶手段に記憶された待機時間が経過したときに前記データパケットを出力するための出力手段と、
前記分岐手段によって所定の時間間隔で出力することが要求されるデータパケット群に含まれないと判定されたデータパケット、前記取得手段によって待機する必要がないと判定されたデータパケットおよび前記出力手段から出力されたデータパケットを合流させるための合流手段とを含む、請求項１記載のデータ駆動型情報処理装置。
【請求項３】
前記データパケット群は、同じ行き先情報を有する複数のデータパケットである、請求項１または２記載のデータ駆動型情報処理装置。
【請求項４】
前記分岐手段は、所定命令のデータパケットに含まれる行き先情報をレジスタに保持し、前記データパケットの行き先情報が前記レジスタに保持される行き先情報と同じであるか否かによって、前記データパケット群に含まれるか否かを判定する、請求項３記載のデータ駆動型情報処理装置。
【請求項５】
前記所定の時間間隔は前記所定命令のデータパケットに含まれる、請求項４記載のデータ駆動型情報処理装置。
【請求項６】
前記所定の時間間隔は一定の時間間隔である、請求項１〜４のいずれかに記載のデータ駆動型情報処理装置。
【請求項７】
前記データパケット群が複数ある場合、前記出力手段は、前記複数のデータパケット群を所定の順序で出力する、請求項２〜６のいずれかに記載のデータ駆動型情報処理装置。
【請求項８】
前記出力手段は、前記データパケット群に含まれるデータパケットを世代番号が小さい順番に出力する、請求項２〜７のいずれかに記載のデータ駆動型情報処理装置。
【請求項９】
前記データパケットは、所定の時間間隔で出力することが要求されるデータパケット群に含まれるか否かを示すフラグを含み、
前記取得手段は、前記フラグを参照して前記データパケットが所定の時間間隔で出力することが要求されるデータパケット群に含まれるか否かを判定する、請求項２〜８のいずれかに記載のデータ駆動型情報処理装置。
【請求項１０】
データパケットを入出力しながら演算処理を行なうデータ駆動型情報処理装置の制御方法であって、
前記データパケットが、所定の時間間隔で出力することが要求されるデータパケット群に含まれる場合に、前記データパケットに必要となる待機時間を決定し、該待機時間が経過したときに前記データパケットを出力するステップと、
前記データパケットに含まれる演算命令に応じて演算処理を行なうステップとを含む、データ駆動型情報処理装置の制御方法。
【請求項１１】
前記データパケットを出力するステップは、前記データパケットが、所定の時間間隔で出力することが要求されるデータパケット群に含まれるか否かを判定し、判定結果に応じて前記データパケットを分岐させるステップと、
前記データパケットが、所定の時間間隔で出力することが要求されるデータパケット群に含まれる場合に、前記データパケット群に含まれる他のデータパケットの履歴情報を取得して前記データパケットの待機時間を決定するステップと、
前記決定された待機時間を記憶するステップと、
前記記憶された待機時間が経過したときに前記データパケットを出力するステップと、
前記所定の時間間隔で出力することが要求されるデータパケット群に含まれないと判定されたデータパケット、待機する必要がないと判定されたデータパケットおよび前記出力されたデータパケットを合流するステップとを含む、請求項１０記載のデータ駆動型情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データパケットを入出力しながら演算処理を行なうことによって並列処理を可能としたデータ駆動型情報処理装置に関し、特に、処理されるデータパケットを一定間隔または指定した間隔で出力することにより演算処理を効率的に、および高速に行なうことが可能なデータ駆動型情報処理装置およびその制御方法に関する。
【背景技術】
【０００２】
近年、マルチメディア処理や高精細画像処理などの大容量データの高速処理が要求される様々な分野で、プロセッサ性能の向上に対する要求が高まっている。しかし、現在のＬＳＩ（Large Scale Integrated circuit）製造技術ではデバイスの高速化にも限度がある。そこで、並列処理が注目を浴びており、並列処理に関する研究、開発が盛んに行なわれている。
【０００３】
並列処理向きのコンピュータ・アーキテクチャの中でも、特にデータ駆動型アーキテクチャが注目されている。データ駆動型処理方式においては、「ある処理に必要な入力データが全て揃い、かつその処理に必要な演算装置などの資源が割当てられたときに処理が行なわれる。」という規則にしたがって、処理が並列に進められる。
【０００４】
図１０は、従来のデータ駆動型情報処理装置の概略構成を示すブロック図である。このデータ駆動型情報処理装置においては、合流部１１６と、プログラム記憶部１１１と、待ち合わせ部１１２と、演算処理部１１３と、分岐部１１４とが周回パイプライン１１７によってループ状に結合されている。
【０００５】
合流部１１６は、データパケット入力部１１８を介して入力されたデータパケットを所定の順序に並べ替え、プログラム記憶部１１１に送出する。プログラム記憶部１１１は、合流部１１６から受けたデータパケットに、必要な演算命令やノード番号を付加し、所定のビットフィールドによって構成されるデータパケットを生成して待ち合わせ部１１２に送出する。
【０００６】
待ち合わせ部１１２は、プログラム記憶部１１１からデータパケットを受けると、演算すべき２つのデータパケットが揃うまで待ち合わせを行ない、データパケットが揃い次第これらのデータパケットを演算処理部１１３に送出する。
【０００７】
演算処理部１１３は、待ち合わせ部１１２から受けたデータパケットに含まれる演算命令に応じて、２つのデータパケットに含まれるデータに算術演算、論理演算などの演算を実行し、送り先ノード番号を付加したデータパケットにその演算結果を格納して分岐部１１４に送出する。
【０００８】
分岐部１１４は、演算処理部１１３から受けたデータパケットに付加された送り先ノード番号によって行き先を決定し、データパケットを振り分ける。すなわち、データパケットの行き先が他のデータ駆動型情報処理装置であれば、データパケット出力部１１９を介してデータパケットを送出する。また、データパケットの行き先が自身のデータ駆動型情報処理装置であれば、パイプライン１１５を介して合流部１１６にデータパケットを送出する。
【０００９】
これに関連する技術として、特開２００２−１８９７１０号公報に開示された発明がある。図１１は、特開２００２−１８９７１０号公報に開示されたデータ駆動型プロセッサのオーバフロー回避装置の概略構成を示すブロック図である。このオーバフロー回避装置は、図１０に示す従来のデータ駆動型情報処理装置の構成に、遅延命令処理ブロック１２７が付加された構成を有している。
【００１０】
遅延命令処理ブロック１２７は、図１０に示す合流部１１６からの周回パイプライン１１７に入力部１２１を介して接続され、さらに、プログラム記憶部１１１およびその出力側の周回パイプライン１１７に出力部１２６を介して接続される。
【００１１】
図１２は、遅延命令処理ブロック１２７の詳細を示すブロック図である。この遅延命令処理ブロック１２７は、プログラム記憶部１１１の周囲に配置される命令フェッチ部１２２と、遅延トークン記憶用メモリ１２３と、遅延処理用タイマ１２４と、遅延命令処理部１２５とを含む。
【００１２】
命令フェッチ部１２２は、遅延命令を有するデータパケットを受けると、この遅延命令の次にフェッチされる命令のデータパケットと共に遅延命令のパラメータである遅延時間データを遅延命令処理部１２５に送出する。
【００１３】
遅延トークン記憶用メモリ１２３は、遅延命令の次にフェッチされる命令を記憶する。また、遅延処理用タイマ１２４は、遅延時間データに基づいて遅延時間を計時する。そして、遅延命令処理部１２５は、遅延処理用タイマ１２４が計時する遅延時間が経過した後に、遅延トークン記憶用メモリ１２３から命令を取出して周回パイプライン１１７に送出する。このようにして、遅延命令の次にフェッチされる命令のデータパケットを所定時間遅らせることによって、周回パイプライン１１７に同時に伝送されるデータパケット数を減らすことができ、周回パイプライン１１７のオーバフローを回避することができる。
【００１４】
図１３は、特開２００２−１８９７１０号公報に開示されたフローグラフの静的解析を説明するための図である。このフローグラフは、プログラムの各命令ノードのうち、同時に実行可能な命令ノードを各ランクにおいて横方向に配列し、実行順に上から下へ並べ替えて実行順にノード番号を付したものである。図１３に示すフローグラフにおいては、ランク３とランク４とのトークン数が上限値４以上である５となっているので、上述した遅延命令によって周回パイプライン１１７に同時に伝送されるデータパケット数を減らし、周回パイプライン１１７のオーバフローを回避する。
【特許文献１】特開２００２−１８９７１０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
上述したフローグラフの静的解析は、データパケットが一定の間隔でデータ駆動型情報処理装置内を巡回することを想定している。しかしながら、実際のデータ駆動型情報処理装置内のデータパケットの出力間隔には、様々な要因によるゆらぎが存在する。この出力間隔のゆらぎの要因には、データパケット同士の待ち合わせ時のミクロな時間差による出力時のタイミングのずれ、データフローグラフにおける条件分岐により、データパケットの動作が変化することによって生じるデータパケットの流れの乱れ、データパケットのコピー、消滅などによって生じるデータパケットの出力間隔の変化などがある。
【００１６】
この時間的な出力間隔のゆらぎは、データ駆動型情報処理装置の処理能力内でまかなえるのであれば問題はない。しかし、データ駆動型情報処理装置をその処理性能の限界付近で動作させるケースが多い。その場合、ゆらぎが大きいと、瞬間的にデータパケットがパイプライン上に増加し、データ駆動型情報処理装置の処理能力を超えて停止に至ることになる。
【００１７】
このような事態をさけるため、フローグラフの静的解析においてはデータ駆動型情報処理装置の最大処理性能に対して、ある程度のマージンを持たせたソフトウエア設計をすることが一般的である。しかし、このような設計ではデータ駆動型情報処理装置の処理性能を十分に活用することができず、性能を低下させるといった問題点があった。
【００１８】
本発明は、上記問題点を解決するためになされたものであり、その目的は、処理性能の限界近くまでマージンを削減したソフトウェア設計を行なうことが可能なデータ駆動型情報処理装置を提供することである。
【課題を解決するための手段】
【００１９】
本発明のある局面に従えば、データパケットを入出力しながら演算処理を行なうデータ駆動型情報処理装置であって、データパケットが、所定の時間間隔で出力することが要求されるデータパケット群に含まれる場合に、データパケットに必要となる待機時間を決定し、待機時間が経過したときにデータパケットを出力するための制御手段と、データパケットに含まれる演算命令に応じて演算処理を行なうための演算処理手段とを含む。
【００２０】
好ましくは、制御手段は、データパケットが、所定の時間間隔で出力することが要求されるデータパケット群に含まれるか否かを判定し、判定結果に応じてデータパケットを分岐させるための分岐手段と、データパケットが、所定の時間間隔で出力することが要求されるデータパケット群に含まれる場合に、データパケット群に含まれる他のデータパケットの履歴情報を取得してデータパケットの待機時間を決定するための取得手段と、取得手段によって決定された待機時間を記憶するための記憶手段と、記憶手段に記憶された待機時間が経過したときにデータパケットを出力するための出力手段と、分岐手段によって所定の時間間隔で出力することが要求されるデータパケット群に含まれないと判定されたデータパケット、取得手段によって待機する必要がないと判定されたデータパケットおよび出力手段から出力されたデータパケットを合流させるための合流手段とを含む。
【００２１】
好ましくは、データパケット群は、同じ行き先情報を有する複数のデータパケットである。
【００２２】
さらに好ましくは、分岐手段は、所定命令のデータパケットに含まれる行き先情報をレジスタに保持し、データパケットの行き先情報がレジスタに保持される行き先情報と同じであるか否かによって、データパケット群に含まれるか否かを判定する。
【００２３】
さらに好ましくは、所定の時間間隔は所定命令のデータパケットに含まれる。
【００２４】
好ましくは、所定の時間間隔は一定の時間間隔である。
【００２５】
好ましくは、データパケット群が複数ある場合、出力手段は、複数のデータパケット群を所定の順序で出力する。
【００２６】
好ましくは、出力手段は、データパケット群に含まれるデータパケットを世代番号が小さい順番に出力する。
【００２７】
好ましくは、データパケットは、所定の時間間隔で出力することが要求されるデータパケット群に含まれるか否かを示すフラグを含み、取得手段は、フラグを参照してデータパケットが所定の時間間隔で出力することが要求されるデータパケット群に含まれるか否かを判定する。
【００２８】
本発明の別の局面に従えば、データパケットを入出力しながら演算処理を行なうデータ駆動型情報処理装置の制御方法であって、データパケットが、所定の時間間隔で出力することが要求されるデータパケット群に含まれる場合に、データパケットに必要となる待機時間を決定し、待機時間が経過したときにデータパケットを出力するステップと、データパケットに含まれる演算命令に応じて演算処理を行なうステップとを含む。
【００２９】
好ましくは、データパケットを出力するステップは、データパケットが、所定の時間間隔で出力することが要求されるデータパケット群に含まれるか否かを判定し、判定結果に応じてデータパケットを分岐させるステップと、データパケットが、所定の時間間隔で出力することが要求されるデータパケット群に含まれる場合に、データパケット群に含まれる他のデータパケットの履歴情報を取得してデータパケットの待機時間を決定するステップと、決定された待機時間を記憶するステップと、記憶された待機時間が経過したときにデータパケットを出力するステップと、所定の時間間隔で出力することが要求されるデータパケット群に含まれないと判定されたデータパケット、待機する必要がないと判定されたデータパケットおよび出力されたデータパケットを合流するステップとを含む。
【発明の効果】
【００３０】
本発明のある局面によれば、制御手段は、データパケットが、所定の時間間隔で出力することが要求されるデータパケット群に含まれる場合に、データパケットに必要となる待機時間を決定し、待機時間が経過したときにデータパケットを出力するので、データ駆動型情報処理装置内のデータパケットの処理量のゆらぎが減少し、処理性能の限界近くまでマージンを削減したソフトウェア設計を行なうことが可能となった。
【００３１】
また、取得手段は、データパケットが、所定の時間間隔で出力することが要求されるデータパケット群に含まれる場合に、データパケット群に含まれる他のデータパケットの履歴情報を取得してデータパケットの待機時間を決定するので、データパケット群に含まれるデータパケットを所定の時間間隔で正確に出力することが可能となった。
【００３２】
また、データパケット群は、同じ行き先情報を有する複数のデータパケットであるので、データパケットの行き先情報を参照することによりデータパケットがデータパケット群に含まれるか否かを容易に判定することが可能となった。
【００３３】
また、分岐手段が、所定命令のデータパケットに含まれる行き先情報をレジスタに保持し、データパケットの行き先情報がレジスタに保持される行き先情報と同じであるか否かによって、データパケット群に含まれるか否かを判定するので、データパケット群の設定を容易に行なうことが可能となった。
【００３４】
また、所定の時間間隔は所定命令のデータパケットに含まれるので、時間間隔を容易に変更することが可能となった。
【００３５】
また、所定の時間間隔は一定の時間間隔であるので、時間間隔を設定する手間を省くことが可能となった。
【００３６】
また、データパケット群が複数ある場合、出力手段は、複数のデータパケット群を所定の順序で出力するので、データの到着順序が決められた命令の実行を容易に行なうことが可能となった。
【００３７】
また、出力手段は、データパケット群に含まれるデータパケットを世代番号が小さい順番に出力するので、命令の実行順序を容易に制御することが可能となった。
【００３８】
また、取得手段は、フラグを参照してデータパケットが所定の時間間隔で出力することが要求されるデータパケット群に含まれるか否かを判定するので、容易に判定を行なうことが可能となった。
【発明を実施するための最良の形態】
【００３９】
図１は、本発明の実施の形態におけるデータ駆動型情報処理装置の概略構成を示すブロック図である。このデータ駆動型情報処理装置は、合流部１６と、プログラム記憶部１１と、パケット制御部２０と、待ち合わせ部１２と、演算処理部１３と、分岐部１４とが周回パイプライン１７によってループ状に結合されている。
【００４０】
合流部１６は、データパケット入力部１８を介して入力されたデータパケットを所定の順序に並べ替え、プログラム記憶部１１に送出する。プログラム記憶部１１は、合流部１６から受けたデータパケットに、必要な演算命令やノード番号を付加し、所定のビットフィールドによって構成されるデータパケットを生成してパケット制御部２０に送出する。
【００４１】
パケット制御部２０は、データパケットの出力間隔を変更して待合わせ部１２に送出する。待ち合わせ部１２は、パケット制御部２０からデータパケットを受けると、演算すべき２つのデータパケットが揃うまで待ち合わせを行ない、データパケットが揃い次第これらのデータパケットを演算処理部１３に送出する。
【００４２】
演算処理部１３は、待ち合わせ部１２から受けたデータパケットに含まれる演算命令に応じて、２つのデータパケットに含まれるデータに算術演算、論理演算などの演算を行ない、送り先ノード番号を付加したデータパケットにその演算結果を格納して分岐部１４に送出する。
【００４３】
分岐部１４は、演算処理部１３から受けたデータパケットに付加された送り先ノード番号によって行き先を決定し、データパケットを振り分ける。すなわち、データパケットの行き先が他のデータ駆動型情報処理装置であれば、データパケット出力部１９を介してデータパケットを送出する。また、データパケットの行き先が自身のデータ駆動型情報処理装置であれば、パイプライン１５を介して合流部１６にデータパケットを送出する。
【００４４】
なお、図１においてはパケット制御部２０がプログラム記憶部１１と待ち合わせ部１２との間に設けられているが、パケット制御部２０はデータ駆動型情報処理装置のパイプラインを構成する回路のどの部分に配置されていてもよい。
【００４５】
図２は、図１に示すパケット制御部２０の詳細を説明するためのブロック図である。パケット制御部２０は、データパケット分岐部２１と、データパケット状態取得部２２と、データメモリ２３と、クロック生成部２４と、待機時間デクリメンタ２５と、出力データパケット生成部２６と、データパケット合流部２７とを含む。なお、各部の機能の説明は後述する。
【００４６】
図３は、本発明の実施の形態におけるデータ駆動型情報処理装置内を流れるデータパケットのフォーマットの一例を示す図である。このデータパケットは、命令コード３１と、ノード番号３２と、世代番号３３と、データ３４とを含む。
【００４７】
命令コード３１は、図１に示すデータ駆動型情報処理装置の演算処理部１３で実行される命令を数値で表現するフィールドである。ノード番号３２は、データパケットの行き先を示すものであり、このノード番号３２をアドレスとして図１に示すプログラム記憶部１１から次の命令が取得される。
【００４８】
世代番号３３は、演算を実施するデータパケットの集まりごとにつけられた番号で、同一の行き先であっても、別々の演算が実施されるときに、それを区別するために付加する番号である。また、データ３４には、実際に周回させるデータ値が格納される。
【００４９】
簡単な例として、図４に示すフローグラフを考える。このフローグラフにおいて、ＳＷＢＩＴＧＥＮ（右入力データ値＝１）４１は、世代番号３３の値によってＴＲＵＥ側およびＦＡＬＳＥ側のいずれかにデータパケットを分岐させる命令である。分岐条件は、世代番号３３の値と右入力データ値（この場合は１）との論理積の結果である。演算結果が０の場合にはＴＲＵＥ側にデータパケットを出力し、１の場合はＦＡＬＳＥ側にデータパケットを出力する。
【００５０】
したがって、世代番号３３が昇順に１ずつ増えるようにデータパケットが入力されれば、１データパケットごとにＴＲＵＥ側、ＦＡＬＳＥ側に交互に出力されることになる。ＦＡＬＳＥ側に出力されたデータパケットは消滅し、ＴＲＵＥ側に出力されたデータパケットはＮＯＰ４２へ流れる。すなわち、ＮＯＰ４２に流れるデータパケットは、入力時のデータパケットに対して１つおきとなる。
【００５１】
次に、ＮＯＰ４２の出力において、データパケットが２つにコピーされる。コピーされたそれぞれのデータパケットのうち、ＡＤＤＧＥＮ（右入力データ値＝０）４３側に流れたデータパケットは世代番号３３の値に０が加算され、すなわち、そのまま出力される。また、ＡＤＤＧＥＮ（右入力データ値＝１）４４側に流れたデータパケットは世代番号３３の値に１が加算されて出力される。これらのデータパケットはＮＯＰ４５で１つにマージされ、最終的に入力時と同じように世代番号３３が昇順に１つずつ増えるようなデータパケット群として出力される。
【００５２】
図５は、図４に示すデータフローグラフ上をデータパケットが流れるときの時間変化を示す図である。図５（ａ）は、ＳＷＢＩＴＧＥＮ４１の入力Ａにおけるデータパケットの時間変化を示している。図５（ｂ）は、ＮＯＰ４２の入力Ｂにおけるデータパケットの時間変化を示している。また、図５（ｃ）は、ＮＯＰ４５の出力Ｃにおけるデータパケットの時間変化を示している。
【００５３】
図５（ａ）においては、規則正しい時間間隔でデータパケットが投入されている。図５（ｂ）においては、ＳＷＢＩＴＧＥＮ命令４１によって、データパケットがＴＲＵＥ側、ＦＡＬＳＥ側に交互に出力されるので、ちょうど、１つおきにデータパケットが出力される。図５（ｃ）においては、２つを１つにしたデータパケットをコピーし、さらに、世代番号３３を元の１つずつの昇順になるように付加して合流させているので、データパケットの世代番号３３は元の通りになるが、ＮＯＰ４５の出力Ｃにおけるデータパケットの時間変化を見ると、データパケットのコピーによって出力間隔が２つずつかたまって出力されるようになる。このようにデータパケットの消滅およびコピーによって、データパケットの出力間隔を意図的に変更することができる。
【００５４】
しかし、図５（ｃ）におけるデータパケットの出力間隔では、図４に示すＮＯＰ４５以降にデータフローグラフの処理が存在する場合、データパケットの出力間隔が一定ではないため、データパケットが連続して出力されている部分において、データ駆動型情報処理装置の処理が集中し、瞬間的にデータパケットがオーバーフローを起こすことが考えられる。すなわち、図１に示すようなプログラム記憶部１１と、待ち合わせ部１２と、演算処理部１３と、分岐部１４と、合流部１６とで構成される周回パイプライン１７上でデータパケットが動けなくなり、システム全体が停止する場合がある。
【００５５】
そこで、本発明の実施の形態においては、図４に示すＮＯＰ命令ノード４５のノード番号を、予め図２に示すデータパケット分岐部２１内のレジスタに登録しておく。
【００５６】
図６は、本発明の実施の形態におけるデータ駆動型情報処理装置の処理を説明するためのデータフローグラフである。入力Ｐから、設定したいデータ出力間隔の値をデータとして持つデータパケットを１つ流しておき、レジスタセット命令４６が予め実行されるようにする。
【００５７】
データパケット分岐部２１は、プログラム記憶部１１から出力されデータパケットがレジスタセット命令４６であるかの判定を行なう。データパケットがレジスタセット命令であれば、データパケット分岐部２１は、そのデータパケットの行き先情報、すなわちノード番号３２の値と、データ出力間隔の値、すなわちデータ３４の値とを内部のレジスタに記憶する。
【００５８】
実際の処理としては、入力Ｑから一定間隔のデータパケットを流す。ＡＤＤＧＥＮ４３の出力Ｅ、ＡＤＤＧＥＮ４４の出力Ｆを流れるデータパケットが、データパケット分岐部２１に入力されると、データパケット分岐部２１は内部のレジスタの値とそのデータパケットのノード番号３２とを比較する。そして、それらのパケットの行き先がＮＯＰ命令４５であれば、データパケット状態取得部２２へデータパケットを流す。なお、データパケット分岐部２１は、それ以外のデータパケットをデータパケット合流部２７に流し、外部へ出力する。
【００５９】
データパケット分岐部２１は、ＡＤＤＧＥＮ４３の出力Ｅのデータパケットを入力すると、このデータパケットをデータパケット状態取得部２２へ流す。データパケット状態取得部２２は、このデータパケットと同じノード番号を持つデータパケットがデータメモリ２３に保存されているか、または何クロックか前に保存若しくは通過したかの情報を取得する。
【００６０】
データメモリ２３は、データパケット待機時間テーブルと、データパケット待ち行列とを含む。図７は、データパケット待機時間テーブルのデータ構造を示す図である。データパケット待機時間テーブルは、ノード番号をアドレスとするテーブルであり、テーブルの内容はそのノード番号を持つデータパケットのその時点における待機時間を示している。このデータパケット待機時間は待機時間デクリメンタ２５によって、クロックごとに値がデクリメントされる。また、データパケット待機時間テーブルは、新たにあるノード番号のアドレスを持つデータパケットが通過または保存される場合に、データパケット待機時間にデータ出力間隔の値を加算した値で更新される。
【００６１】
図８は、データパケット待ち行列のデータ構造を示す図である。データパケット待ち行列は、データパケットの実体を格納する行列であり、そのデータパケットのその時点における待機時間をデータパケットの実体ごとに格納している。このデータパケット待機時間は、待機時間デクリメンタ２５によって、クロックごとに値がデクリメントされる。データパケット待ち行列内のデータパケット待機時間は減少する一方であり、０になった時点でデータパケットの実体が出力データパケット生成部２６へ出力される。
【００６２】
データパケット状態取得部２２は、データパケットのノード番号をアドレスとしてデータパケット待機時間テーブルに格納されるデータパケット待機時間を取得する。このデータパケット待機時間は、そのノード番号を持つデータパケットが、どれだけの時間データメモリ２３で待機する必要があるかを示している。ここではクロックを単位とするが、時間の単位は何でも構わない。
【００６３】
たとえば、データパケット待機時間が０であれば、データパケットをデータメモリ２３に保存する必要がないので、データパケット状態取得部２２はデータパケットをそのままデータパケット合流部２７へ出力する。また、データパケット状態取得部２２は、データパケット合流部２７に出力したデータパケットのノード番号をアドレスとしてデータパケット待機時間テーブルからデータパケット待機時間を取得し、データパケット待機時間にデータ出力間隔の値を合計してデータパケット待機時間テーブルの値を書き換える。
【００６４】
データパケット待機時間が０でない場合、データパケット状態取得部２２は、そのときのデータパケット待機時間とともにデータパケットの実体をデータパケット待ち行列に保存する。また、データパケット待ち行列にデータパケットが保存されるため、そのデータパケットのノード番号をアドレスとしてデータパケット待機時間の値を取得し、データパケット待機時間をレジスタに保存されているデータ出力間隔の値を合計した値で書き換える。
【００６５】
図６のＡＤＤＧＥＮ４３の出力Ｅのデータパケットがデータパケット分岐部２１に到着した後、すぐにＡＤＤＧＥＮ４４の出力Ｆのデータパケットがデータパケット分岐部２１に到着する。これは、図６のＮＯＰ命令ノード４２のコピー操作により、パイプラインの最小間隔でデータパケットがコピーされるからである。
【００６６】
データパケット分岐部２１は、ＡＤＤＧＥＮ４４の出力Ｆのデータパケットを受けると、このデータパケットの行き先がＮＯＰ命令ノード４５であるので、データパケット状態取得部２２にデータパケットを出力する。データパケット状態取得部２２は、データメモリ２３を参照することにより、このデータパケットと同じノード番号を持つデータパケットが現在保存されているか、または何クロックか前に保存若しくは通過したかの情報を取得する。
【００６７】
具体的には、データパケット状態取得部２２は、データパケットのノード番号をアドレスとして、データメモリ２３内のデータパケット待機時間テーブルからデータパケット待機時間を取得する。この場合は、直前にＡＤＤＧＥＮ４３の出力Ｅのデータパケットが通過しているので、データパケット待機時間はｎクロック経過しており、（データ出力間隔の値−ｎ）となっている。この値とともにデータメモリ２３へデータパケットを流す。なお、ｎクロックはコピー操作による最小間隔の時間とする。
【００６８】
そして、データパケット状態取得部２２は、データメモリ２３内のデータパケット待ち行列にデータパケット待機時間として（データ出力間隔の値−ｎ）の値を保存し、同時にデータパケットの実体も保存する。
【００６９】
クロック生成部２４は常にクロックを生成しており、待機時間デクリメンタ２５にそれを供給する。なお、このクロックは任意のクロック幅を設定できるようにしてもよい。
【００７０】
待機時間デクリメンタ２５は、クロック生成部２４から供給されるクロックをトリガとし、データメモリ２３のデータパケット待機時間テーブルのすべての値をデクリメントする。
【００７１】
同様に、待機時間デクリメンタ２５は、データパケット待ち行列のデータパケット待機時間のすべての値もデクリメントする。そして、データパケット待ち行列においては、デクリメントした値が０である場合、出力データパケット生成部２６にそのアドレスを転送する。
【００７２】
出力データパケット生成部２６は、データパケット待ち行列から転送されたアドレスに応じて、データパケット待ち行列からデータパケットの実体を読出す。そして、データパケットの実体をデータパケット合流部２７へ転送すると共に、データパケット待ち行列からデータパケット待機時間とデータパケットの実体とを消去する。
【００７３】
データパケット合流部２７は、データパケット分岐部２１、データパケット状態取得部２２および出力データパケット生成部２６からのデータパケットを合流させて出力する。
【００７４】
図６において、ＡＤＤＧＥＮ４３の出力Ｅのデータパケットと、ＡＤＤＧＥＮ４４の出力Ｆのデータパケットとが最小間隔で入力される。しかし、ＡＤＤＧＥＮ４４の出力Ｆのデータパケットがデータメモリ２３に保存され、データパケット待機時間が（データ出力間隔の値−ｎ）となってからデクリメントされて０になった時点で、データパケットが出力データパケット生成部２６から出力される。そのため、ＡＤＤＧＥＮ４３の出力Ｅのデータパケットと、ＡＤＤＧＥＮ４４の出力Ｆのデータパケットとがデータ出力間隔の値分の間隔で出力される。
【００７５】
同様に、ＡＤＤＧＥＮ４４の出力Ｆのデータパケットと、次の世代番号３３を持つＡＤＤＧＥＮ４３の出力Ｅのデータパケットとの間隔もデータ出力間隔の値となる。このようにして、データパケットの出力間隔は一定となる。
【００７６】
図９は、本発明の実施の形態におけるデータ駆動型情報処理装置のパケット制御部２０から出力されるデータパケットの時間変化を示す図である。図９に示すように、図５（ｃ）に示す間隔で出力されていたデータパケット群が、一定の出力間隔で出力されているのが分かる。
【００７７】
以上の説明は、レジスタセット命令を１つだけ使用した場合についてであったが、レジスタセット命令を複数箇所で使用するようにしてもよい。この場合、複数のレジスタセット命令によって複数のノード番号が指定されることになるが、複数のレジスタセット命令に順序を設定し、同じ世代番号のデータパケットを所定の順序で出力するようにすることも可能である。たとえば、データパケット待ち行列のデータパケット待ち時間が０になった場合でも、所定のノード番号を持ったデータパケットが到着するまでそのデータパケットを出力しないようにする。そして、所定のノード番号を持ったデータパケットが到着して出力されてから所定時間経過した後に、待機していたデータパケットを出力する。
【００７８】
もちろん、複数のレジスタセット命令に順序を設定せずに、データパケット待ち行列のデータパケット待ち時間が０になった時点でノード番号に関係なくデータパケットを出力するようにしてもよい。
【００７９】
また、データパケット待ち行列のデータパケット待ち時間が０になった時点でデータパケット待ち行列を検索し、同じ行き先情報を持ったデータパケットが他にある場合には、同じ行き先情報を持ったデータパケットの中で世代番号が一番小さいデータパケットとデータパケット待機時間が０となったデータパケットとを交換し、世代番号が一番小さいデータパケットを出力するようにしてもよい。この場合、データパケット待機時間が０となったデータパケットの待機時間として、世代番号が一番小さいデータパケットのデータパケット待機時間の値が設定される。
【００８０】
また、レジスタセット命令への入力データパケットのデータ３４にデータ出力間隔の値が設定されているため、この値を異なる値にして異なる出力間隔でデータパケットを出力するようにすることも可能である。
【００８１】
また、命令コード３１の最下位ビットを条件判定のためのフラグフィールドとし、データパケット分岐部２１はこのフラグが１の場合にのみデータパケットをデータパケット状態取得部２２に出力するようにしてもよい。
【００８２】
また、図２に示すデータパケット分岐部２１を削除し、データパケットが全てデータパケット状態取得部２２に入力されるようにしてもよい。この場合、データパケット合流部２７は、データパケット状態取得部２２および出力データパケット生成部２６から出力されるデータパケットを合流させる。
【００８３】
また、パケット制御部２０を演算処理部１３内に設けることも可能である。この場合、データパケット分岐部２１は命令コード３１をデコードし、一定時間滞在命令であればそのデータパケットをデータパケット状態取得部２２へ出力する。
【００８４】
以上説明したように、本発明の実施の形態におけるデータ駆動型情報処理装置においては、同一の行き先情報を持ったデータパケット群が所定の時間間隔で出力されるようにデータパケット待機時間を決定し、このデータパケット待機時間をデータパケットの実体と共にデータパケット待ち行列に格納し、データパケット待機時間をデクリメントして０となったときに出力データパケット生成部２６がデータパケットの実体を出力するようにしたので、データ駆動型情報処理装置内のデータパケットの処理量のゆらぎが減少し、静的解析においてもデータ駆動型情報処理装置の処理性能の限界近くまでマージンを削減したソフトウェア設計を行なうことが可能となり、データ駆動型情報処理装置の処理性能を向上させることが可能となった。
【００８５】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００８６】
【図１】本発明の実施の形態におけるデータ駆動型情報処理装置の概略構成を示すブロック図である。
【図２】図１に示すパケット制御部２０の詳細を説明するためのブロック図である。
【図３】本発明の実施の形態におけるデータ駆動型情報処理装置内を流れるデータパケットのフォーマットの一例を示す図である。
【図４】データフローグラフの一例を示す図である。
【図５】図４に示すデータフローグラフ上をデータパケットが流れるときの時間変化を示す図である。
【図６】本発明の実施の形態におけるデータ駆動型情報処理装置の処理を説明するためのデータフローグラフである。
【図７】データパケット待機時間テーブルのデータ構造を示す図である。
【図８】データパケット待ち行列のデータ構造を示す図である。
【図９】本発明の実施の形態におけるデータ駆動型情報処理装置のパケット制御部２０から出力されるデータパケットの時間変化を示す図である。
【図１０】従来のデータ駆動型情報処理装置の概略構成を示すブロック図である。
【図１１】特開２００２−１８９７１０号公報に開示されたデータ駆動型プロセッサのオーバフロー回避装置の概略構成を示すブロック図である。
【図１２】遅延命令処理ブロック１２７の詳細を示すブロック図である。
【図１３】特開２００２−１８９７１０号公報に開示されたフローグラフの静的解析を説明するための図である。
【符号の説明】
【００８７】
１１  プログラム記憶部、１２  待ち合わせ部、１３  演算処理部、１４  分岐部、１５  パイプライン、１６  合流部、１７  周回パイプライン、２０  パケット制御部、２１  データパケット分岐部、２２  データパケット状態取得部、２３  データメモリ、２４  クロック生成部、２５  待機時間デクリメンタ、２６  出力データパケット生成部、２７  データパケット合流部、３１  命令コード、３２  ノード番号、３３  世代番号、３４  データ。
【図１】
2006221226.tif 000003
【図２】
2006221226.tif 000004
【図３】
2006221226.tif 000005
【図４】
2006221226.tif 000006
【図５】
2006221226.tif 000007
【図６】
2006221226.tif 000008
【図７】
2006221226.tif 000009
【図８】
2006221226.tif 000010
【図９】
2006221226.tif 000011
【図１０】
2006221226.tif 000012
【図１１】
2006221226.tif 000013
【図１２】
2006221226.tif 000014
【図１３】
2006221226.tif 000015