(57)【要約】【課題】  既存のソフトウェア資産を略そのまま利用して、処理の並列性を向上させる。【解決手段】  データごとに、当該データを識別する識別情報および当該データに対する１つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理する複数の処理部を備え、前記複数の処理部は、前記パケットのうち、前記拡張識別情報に応じて定まる宛先情報が当該処理部を示すパケットのみを取得する入出力部と、前記入出力部によって取得された前記パケットの前記処理命令を実行する演算部と、をそれぞれ有する。【選択図】  図１
2011138479.tif 000002
【特許請求の範囲】
【請求項１】
データごとに、当該データを識別する識別情報および当該データに対する１つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理する複数の処理部を備え、
前記複数の処理部は、
前記パケットのうち、前記拡張識別情報に応じて定まる宛先情報が当該処理部を示すパケットのみを取得する入出力部と、
前記入出力部によって取得された前記パケットの前記処理命令を実行する演算部と、
をそれぞれ有することを特徴とするデータ処理装置。
【請求項２】
前記入出力部は、前記パケットのうち、前記拡張識別情報に応じて動的に定まる前記宛先情報が当該処理部を示すパケットのみを取得することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記入出力部は、前記拡張識別情報から生成される擬似乱数に応じて前記宛先情報を算出する宛先情報算出部を含むことを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記入出力部は、前記パケットのうち前記宛先情報が当該処理部を示さないパケットを他の処理部に転送することを特徴とする請求項３に記載のデータ処理装置。
【請求項５】
前記演算部は、前記入出力部によって取得された前記パケットの前記処理命令のうち最初に実行されるべき処理命令を実行し、当該実行によって生成されるデータに、実行された前記処理命令の次に実行されるべき処理命令を最初に実行されるべき処理命令とする前記拡張識別情報が付加されたパケットを生成して前記入出力部に入力することを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記演算部は、前記入出力部によって取得された前記パケットの前記処理命令のうち最初に実行されるべき処理命令を実行し、当該実行によって生成されるデータに、実行された前記処理命令を除く前記拡張識別情報が付加されたパケットを生成して前記入出力部に入力することを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
前記処理命令は、２つのパケットの前記データをそれぞれ左側および右側オペランドとする２項演算を行う処理命令を含み、
前記複数の処理部は、
前記パケットを記憶する記憶部と、
前記入出力部によって取得された前記パケットの前記拡張識別情報と前記記憶部に記憶されている前記パケットの前記拡張識別情報とを比較して、当該取得されたパケットおよび当該記憶されているパケットから前記演算部に入力するパケットを選択する比較・選択部と、
をそれぞれさらに有し、
前記比較・選択部は、前記入出力部によって取得された前記パケットの最初に実行されるべき処理命令が前記２項演算を行う処理命令である場合に、前記拡張識別情報の所定の部分が当該取得されたパケットと一致するパケットが前記記憶部に記憶されているときには、当該所定の部分が一致する２つのパケットを組にして前記演算部に入力し、前記拡張識別情報の前記所定の部分が当該取得されたパケットと一致するパケットが前記記憶部に記憶されていないときには、当該取得されたパケットを前記記憶部に記憶させることを特徴とする請求項５または請求項６に記載のデータ処理装置。
【請求項８】
前記処理命令は、１つのパケットの前記データをオペランドとする単項演算を行う処理命令を含み、
前記比較・選択部は、前記入出力部によって取得された前記パケットの最初に実行されるべき処理命令が前記単項演算を行う処理命令である場合には、当該取得されたパケットを前記演算部に入力することを特徴とする請求項７に記載のデータ処理装置。
【請求項９】
前記処理命令は、前記２項演算が非可換演算である場合に前記データを前記左側または右側オペランドの何れとするかを示す左右情報を含み、
前記拡張識別情報の前記所定の部分は、当該拡張識別情報のうち最初に実行されるべき処理命令の前記左右情報以外の部分であることを特徴とする請求項７または請求項８に記載のデータ処理装置。
【請求項１０】
前記記憶部は、前記パケットが格納されるハッシュテーブルを含み、
前記比較・選択部は、前記入出力部によって取得された前記パケットの前記拡張識別情報の前記所定の部分に基づいてハッシュ値を算出するハッシュ値算出部を含み、当該取得されたパケットを前記記憶部に記憶させる場合には、当該取得されたパケットを前記ハッシュ値と対応付けて前記ハッシュテーブルに格納することを特徴とする請求項７ないし請求項９の何れかに記載のデータ処理装置。
【請求項１１】
前記宛先情報算出部は、前記拡張識別情報の前記所定の部分に基づいて前記擬似乱数を生成することを特徴とする請求項７ないし請求項１０の何れかに記載のデータ処理装置。
【請求項１２】
前記入出力部は、前記パケットのうち前記宛先情報が当該処理部を示さないパケットを、当該処理部に隣接する処理部に転送することを特徴とする請求項４ないし請求項１１の何れかに記載のデータ処理装置。
【請求項１３】
前記複数の処理部は、行列状に配置され、
前記入出力部は、前記パケットのうち前記宛先情報が当該処理部を示さないパケットを、前記宛先情報が示す処理部に近づく方向に隣接する処理部に転送することを特徴とする請求項１２に記載のデータ処理装置。
【請求項１４】
記憶装置に記憶されているプログラムから前記パケットを生成する制御部をさらに備えることを特徴とする請求項１ないし請求項１３の何れかに記載のデータ処理装置。
【請求項１５】
前記制御部は、前記識別情報が当該制御部を示す発行元情報を含む前記パケットを生成して、前記複数の処理部の何れかに発行し、
前記入出力部は、前記パケットが、処理されるべき前記処理命令を含まない場合には、当該パケットを前記発行元情報が示す制御部に戻すように転送することを特徴とする請求項１４に記載のデータ処理装置。
【請求項１６】
請求項１ないし請求項１５の何れかに記載のデータ処理装置と、
前記プログラムが記憶されている記憶装置と、
前記データおよび前記プログラムを含む情報を入出力する入出力装置と、
を備えることを特徴とするデータ処理システム。
【請求項１７】
データごとに、当該データを識別する識別情報および当該データに対する１つ以上の処理命令を示す命令情報を含む拡張識別情報が付加され、
データ処理装置の複数の処理部のうち、前記拡張識別情報に応じて定まる宛先情報が示す処理部によって取得されて前記処理命令が実行されることを特徴とするパケット。
【請求項１８】
請求項１７に記載のパケットが記録された記録媒体。
【請求項１９】
請求項１７に記載のパケットが記憶されている記憶装置。
【請求項２０】
請求項１７に記載のパケットのうち、前記識別情報の少なくとも一部が前記データ処理装置の制御部によって付加される中間パケットが記録された記録媒体。
【請求項２１】
請求項１７に記載のパケットのうち、前記識別情報の少なくとも一部が前記データ処理装置の制御部によって付加される中間パケットが記憶されている記憶装置。
【請求項２２】
請求項１９または請求項２１に記載の記憶装置と、
前記データ処理装置と、
前記データを含む情報を入出力する入出力装置と、
を備えることを特徴とするデータ処理システム。
【請求項２３】
複数の処理部が、それぞれ、
データごとに、当該データを識別する識別情報および当該データに対する１つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットのうち、
前記拡張識別情報に応じて定まる宛先情報が当該処理部を示すパケットのみを取得し、当該パケットの前記処理命令を実行することを特徴とするデータ処理方法。
【請求項２４】
前記複数の処理部が、それぞれ、
前記パケットのうち、
前記宛先情報が当該処理部を示さないパケットを他の処理部に転送することを特徴とする請求項２３に記載のデータ処理方法。
【請求項２５】
前記複数の処理部が、それぞれ、
前記宛先情報が当該処理部を示すパケットを取得した場合には、当該パケットの前記処理命令のうち最初に実行されるべき処理命令を実行するとともに、当該実行によって生成されるデータに、実行された前記処理命令の次に実行されるべき処理命令を最初に実行されるべき処理命令とする前記拡張識別情報が付加されたパケットを生成し、当該生成されたパケットの前記宛先情報に応じて当該生成されたパケットを転送または取得することを特徴とする請求項２４に記載のデータ処理方法。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理システム、パケット、記録媒体、記憶装置、およびデータ処理方法に関する。
【背景技術】
【０００２】
コンピュータアーキテクチャとして、記憶装置（メモリ）から命令を順次読み出して（fetch）、解読し（decode）、実行する（execute）、ノイマン型アーキテクチャが一般に知られている。当該ノイマン型アーキテクチャは、命令の実行順序を予め定め、オペランド（演算対象のデータ）をその都度集めながら処理を行う、命令中心の処理体系となっている。
【０００３】
また、ノイマン型コンピュータにおいて、複数の命令を並列処理するＣＰＵ（Central Processing Unit：中央処理装置）アーキテクチャとして、スーパースカラ・プロセッサが知られている。当該スーパースカラ・プロセッサは、オペランドの到着順に、実行ノードに対して命令を発行し（issue）、実行する、アウト・オブ・オーダ処理が可能となっている。しかしながら、スーパースカラ・プロセッサにおいては、スケジューラがデータ依存性を検査しながら実行結果を正しい順序に並べ替えるため、同時に実行可能な命令数の増加は、スケジューラの複雑化を招くこととなる。
【０００４】
一方、非ノイマン型アーキテクチャとして、データ依存性に着目し、データフロー（データの流れ）に従って処理を行う、データ駆動型アーキテクチャが知られている。当該データ駆動型アーキテクチャは、実行ノードにオペランドが揃った時点で発火し（fire）、次の実行ノードに命令の実行結果を転送することによって、多くの命令を並列処理することができる。
【０００５】
例えば、特許文献１では、プロセッサ間の制御にデータ駆動型（特許文献１においてはデータフローマシン型）アーキテクチャを、プロセッサ内の制御にノイマン型アーキテクチャを、それぞれ用いるマルチプロセッサシステムが開示されている。当該マルチプロセッサシステムは、データ駆動型およびノイマン型アーキテクチャを組み合わせて用いることによって、複雑なハードウェア構成を用いることなく、スレッドに分割されて生成された実行コードに基づいて並列処理を行うことができる。
【０００６】
また、例えば、非特許文献１では、ＴＲＩＰＳ（Tera-op Reliable Intelligently advanced Processing System）アーキテクチャが開示されている。当該ＴＲＩＰＳアーキテクチャは、タイルプロセッサと呼ばれるチップアーキテクチャと、ＥＤＧＥ（Explicit Data Graph Execution）と呼ばれるＩＳＡ（Instruction Set Architecture：命令セットアーキテクチャ）とを組み合わせたものとなっている。これらのうち、タイルプロセッサは、隣接するコア間のみを配線することによって、配線遅延の問題を回避し、コア数が増加しても動作速度を高速に保つことができる。一方、ＥＤＧＥアーキテクチャは、命令を実行ノードに静的に配置し、データフロー型アーキテクチャと同様に、実行ノードにオペランドが揃った時点で実行することによって、処理の並列性を最大限に高めることを目指している。
【０００７】
このようにして、上記のようなコンピュータアーキテクチャを単独で、または組み合わせて用いることによって、複数の命令を並列処理することができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−１９３４３０号公報
【非特許文献】
【０００９】
【非特許文献１】Doug Burger, et al., "Scaling to the End of Silicon with EDGE Architectures," IEEE Computer, vol. 37, no. 7, pp. 44-55, July 2004
【発明の概要】
【発明が解決しようとする課題】
【００１０】
並列コンピュータは、上記のデータ駆動型アーキテクチャを用いることによって、多くの命令を並列処理することができる。しかしながら、データ駆動型アーキテクチャでは、ノイマン型アーキテクチャとは異なる命令セットを用いるため、既存のノイマン型コンピュータ用のソフトウェア資産をそのまま利用することはできない。
【００１１】
既存のソフトウェア資産を並列コンピュータで利用するためには、例えば、ノイマン型コンピュータ用のソースプログラムから並列コンピュータ用の実行コードを生成するコンパイラ技術を必要とする。しかしながら、当該コンパイラ技術を用いた場合の処理の並列性は、コンパイラの性能に左右され、並列性の向上にはコンパイラの複雑化を伴い、コンパイル時間の増加を招く場合もある。また、上記特許文献１では、プログラム処理装置によってマルチプロセッサシステムのための実行コードを生成するため、Ｃ言語などの高級言語で記述されたソースプログラムに予めスレッド記述を追加する必要がある。
【００１２】
また、例えば、ノイマン型コンピュータ用のソースプログラムを逐次解釈しながら実行するインタプリタ技術を必要とする。しかしながら、コンパイラ技術の場合と同様に、処理の並列性の向上にはインタプリタの複雑化を伴い、インタプリタの動作速度の低下を招く場合もある。さらに、コンパイラやインタプリタの複雑化を伴わないものの、並列コンピュータ自体の複雑化や動作速度の低下を招く場合もある。
【００１３】
そのため、並列コンピュータにおける並列性の向上は、既存のソフトウェア資産を並列コンピュータで利用するためのコストの上昇を招く、トレードオフの関係となる。
【課題を解決するための手段】
【００１４】
前述した課題を解決する主たる本発明は、データごとに、当該データを識別する識別情報および当該データに対する１つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理する複数の処理部を備え、前記複数の処理部は、前記パケットのうち、前記拡張識別情報に応じて定まる宛先情報が当該処理部を示すパケットのみを取得する入出力部と、前記入出力部によって取得された前記パケットの前記処理命令を実行する演算部と、をそれぞれ有することを特徴とするデータ処理装置である。
【００１５】
本発明の他の特徴については、添付図面及び本明細書の記載により明らかとなる。
【発明の効果】
【００１６】
本発明によれば、既存のソフトウェア資産を略そのまま利用して、処理の並列性を向上させることができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態におけるＰＥ（処理要素）の構成を示すブロック図である。
【図２】データ処理装置を備えたデータ処理システム全体の構成の概略を示すブロック図である。
【図３】本発明の一実施形態におけるデータ処理装置の構成を示すブロック図である。
【図４】ソースプログラムとデータ処理装置で処理されるプログラム（実行コード）との関係の一例を示す図である。
【図５】データ処理装置で用いられる命令セットの一例を示す図である。
【図６】ＭＣＥ（メモリ制御要素）によって生成されるデータフロー図の一例を示す図である。
【図７】ＭＣＥ（メモリ制御要素）によって生成される基本パケット列の一例を示す図である。
【図８】ＭＣＥ（メモリ制御要素）によって生成される展開後のパケット列の一例を示す図である。
【図９】本発明の一実施形態における宛先情報の算出方法を説明する図である。
【図１０】入出力部の動作の一例を説明するフローチャートである。
【図１１】バッファメモリに実装されるハッシュテーブルの一例を示す図である。
【図１２】本発明の一実施形態におけるデータ処理装置の動作を説明する図である。
【図１３】電磁波（光）を用いて情報伝達を行う場合の通信路の構成の一例を示す図である。
【図１４】ソースプログラムとデータ処理装置で処理されるプログラム（実行コード）との関係の他の例を示す図である。
【図１５】各入出力ポートが複数のチャネルを備えたＰＥ（処理要素）の構成の概略を示すブロック図である。
【図１６】命令追加命令の実行を含むデータフロー図の一例を示す図である。
【図１７】命令追加命令の実行を含む展開後のパケット列の一例を示す図である。
【図１８】命令追加命令の実行を含むデータ処理装置の動作を説明する図である。
【図１９】データ処理装置によって処理されるパケットの他の構成例を示す図である。
【図２０】命令追加処理を含むデータフロー図の一例を示す図である。
【図２１】命令追加処理を含むデータ処理装置の動作を説明する図である。
【発明を実施するための形態】
【００１８】
本明細書および添付図面の記載により、少なくとも以下の事項が明らかとなる。
【００１９】
＝＝＝データ処理システム全体の構成の概略＝＝＝
以下、図２を参照して、データ処理装置を備えたデータ処理システム全体の構成の概略について説明する。  
図２に示されているデータ処理システムは、データ処理装置１を備えた並列コンピュータシステムであり、データ処理装置１以外に、記憶装置６、入力装置７、出力装置８、およびバス９を含んで構成されている。また、データ処理装置１、記憶装置６、入力装置７、および出力装置８は、バス９を介して互いに接続されている。なお、データ処理装置１の構成についての詳細な説明は後述する。
【００２０】
＝＝＝データ処理システム全体の動作の概略＝＝＝
次に、データ処理システム全体の動作の概略について説明する。  
記憶装置６は、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）などで構成され、プログラム（実行コード）や当該プログラムの実行に用いられるデータなどを記憶している。また、データ処理装置１は、コンピュータシステムのＣＰＵに相当し、記憶装置６に記憶されているプログラムを実行する。なお、データ処理装置１の動作についての詳細な説明は後述する。  
入力装置７は、キーボードやマウスなどで構成され、データやプログラム（ソースプログラムまたは実行コード）を含む情報を外部から当該データ処理システムに入力する。一方、出力装置８は、ディスプレイやプリンタなどで構成され、情報を文字や画像などとして外部に出力する。  
なお、上記データ処理装置１、記憶装置６、入力装置７、および出力装置８の分類は、固定的なものではない。例えば、ハードディスクドライブや光ディスクドライブなどの補助記憶装置は、記憶装置６として用いられるが、外部との間で情報を入出力する入力装置７および出力装置８に分類してもよい。
【００２１】
＝＝＝データ処理装置の構成＝＝＝
以下、図３を参照して、本発明の一実施形態におけるデータ処理装置の構成について説明する。  
図３に示されているデータ処理装置１は、ＰＥ（Processor/Processing Element：処理要素／処理素子）１００ないし１１５、ＭＣＥ（Memory Control/Controlling Element：メモリ制御要素／メモリ制御素子）３００ないし３０３、キャッシュメモリ４００、および通信路（伝送路）５００を含んで構成されている。
【００２２】
データ処理装置１は、処理部に相当するＰＥを複数備え、各ＰＥが通信路５００を介して互いに接続されている。本実施形態では、一例として、データ処理装置１は、４行４列の行列状に配置された１６個のＰＥ１００ないし１１５を備えているものとする。また、前述したタイルプロセッサと同様に、ＰＥ１００ないし１１５は、隣接するＰＥ間のみが互いに接続されているものとする。なお、各ＰＥの構成についての詳細な説明は後述する。
【００２３】
ここで、ＰＥ１００ないし１１５の座標（Ｘ，Ｙ）を、図３に示すように、それぞれ（０，０）ないし（３，３）と表すこととすると、各ＰＥに対して、Ｘ座標を上位２ビット、Ｙ座標を下位２ビットとする識別番号を設定することができる。また、このように設定された識別番号は、図３に示されている各ＰＥの３桁の符号の下２桁と一致している。例えば、座標（０，３）に位置するＰＥ１０３の識別番号は、３（２進表記で００１１）となり、座標（３，０）に位置するＰＥ１１２の識別番号は、１２（２進表記で１１００）となる。
【００２４】
データ処理装置１は、制御部に相当するＭＣＥを少なくとも１つ備え、各ＭＣＥが通信路５００を介してＰＥ１００ないし１１５の何れかと接続されている。本実施形態では、一例として、データ処理装置１は、４個のＭＣＥ３００ないし３０３を備えているものとする。また、ＭＣＥ３００ないし３０３は、それぞれ隣接するＰＥ１００ないし１０３と接続されているものとする。なお、図３に示すように、ＭＣＥ３００ないし３０３に対して、それぞれ０ないし３の識別番号が設定されている。
【００２５】
キャッシュメモリ４００は、ＭＣＥ３００ないし３０３と接続されている。また、キャッシュメモリ４００は、前述したバス９（不図示）を介して、データ処理装置１外の記憶装置６と接続されている。
【００２６】
＝＝＝通信路の構成および動作の一例＝＝＝
通信路５００は、ＰＥ間やＰＥおよびＭＣＥ間の情報伝達媒体であり、当該情報伝達には、電気配線による電気信号の伝達以外に、光ファイバによる光信号の伝達や、自由空間における電磁波の伝達も含まれる。ここで、電磁波、特に光を用いて情報伝達を行う場合の通信路５００の構成の一例を図１３に示す。この場合、各ＰＥは、発光素子を備えた少なくとも１つの送信部、および受光素子を備えた少なくとも１つの受信部を含む。また、図１３において、発光素子２１２は情報伝達元のＰＥに含まれ、受光素子２１３は情報伝達先のＰＥに含まれる。
【００２７】
図１３に示されている通信路５００は、光を透過する透過材５０１、光を反射する反射材５０２、および光を吸収する吸収材５０３からなる。透過材５０１および反射材５０２は、それぞれ光ファイバにおけるコア（core）およびクラッド（cladding）に相当し、石英ガラスやプラスチックなどが用いられる。また、透過材５０１の屈折率を反射材５０２の屈折率より高くし、光信号が反射材５０２によって全反射されながら透過材５０１中を伝達されるように構成されている。
【００２８】
受光素子２１３は、ＯＣＦ（On-chip Color Filter）などを用いて、ＰＥごとに設定された波長の光を受光するように構成されている。この場合、発光素子２１２が発光する光の波長を可変とし、伝達先のＰＥに設定された波長と一致させることによって、パケットを伝達することができる。また、異なる波長の光を発光する複数の発光素子を切り替えて用いることによっても、伝達元および伝達先のＰＥに設定された波長を一致させ、パケットを伝達することができる。
【００２９】
なお、各ＰＥに設定される波長は、紫外領域から赤外領域までのいずれを用いてもよい。しかしながら、透過材５０１および反射材５０２に用いられる材料によっては、紫外線を吸収し、透過率が低下するため、可視光領域から赤外領域までの波長を用いることが望ましい。
【００３０】
＝＝＝データ処理装置の動作＝＝＝
次に、図４ないし図８を適宜参照して、本実施形態におけるデータ処理装置の動作について説明する。  
キャッシュメモリ４００は、キャッシュを行いつつ、ＭＣＥ３００ないし３０３と記憶装置６との間の入出力を制御する。したがって、記憶装置６に記憶されているプログラムやデータなどは、キャッシュメモリ４００を介してＭＣＥ３００ないし３０３に読み込まれる。
【００３１】
ここで、ソースプログラムとデータ処理装置１で処理されるプログラム（実行コード）との関係の一例を図４に示す。高級言語で記述されたソースプログラムＰ０は、実行コードＰ１に予めコンパイルされたうえで記憶装置６に記憶されており、ＭＣＥ３００ないし３０３には、実行コードＰ１が読み込まれる。なお、図４においては、ソースプログラムＰ０の一例として、Ｃ＋＋言語で記述された、配列ｓｐ［１０２４］の各要素を２で除算した値を配列ｄｐ［１０２４］に格納する処理が示されている。また、実行コードＰ１は、機械語プログラムではなく、機械語と略１対１に対応するアセンブリ言語で記述されたプログラムとしてもよい。
【００３２】
ＭＣＥ３００ないし３０３は、読み込まれた実行コードＰ１から、データフロー図に基づいて、後述するパケット列を生成する。なお、各ＭＣＥは、データフロー図自体を生成する必要はないが、本実施形態においては、説明の便宜上、まずデータフロー図を生成し、次にデータフロー図に基づいてパケット列を生成するものとする。
【００３３】
ここで、データ処理装置１で用いられる命令セットの一例を図５に示す。図５において、各命令は、２入力・１出力命令と１入力・１出力命令とに大別されている。これらのうち、２入力・１出力命令は、入力された２つのデータをそれぞれ左側および右側オペランドとして２項演算を行う命令である。一方、１入力・１出力命令は、入力された１つのデータをオペランドとして単項演算を行う命令である。また、図５に示すように、各命令に対して、オペレータ（演算子）に相当する記号と機械語における１６進表記とが設定されており、これらはデータフロー図やパケット列についての説明で用いられる。
【００３４】
まず、２入力・１出力命令について説明する。  
２つのデータ（ＡおよびＢ）の加算結果（Ａ＋ＢまたはＢ＋Ａ）を出力する加算命令に対しては、記号「＋」と１６進表記１０Ｈとが設定されている。一方、２つのデータ（ＬおよびＲ）の減算結果（Ｌ−Ｒ）を出力する減算命令の場合、減算は交換法則が成立しない非可換演算であるため、各データを左側または右側オペランドの何れとするかを示す左右情報（方向情報）を必要とする。そのため、減算命令に対する記号「−」には、さらに左右情報「Ｌ」または「Ｒ」が付加され、それぞれ１６進表記１２Ｈまたは１３Ｈが設定されている。
【００３５】
なお、左右情報「Ｌ」は、左側オペランドとなるデータを示し、左右情報「Ｒ」は、右側オペランドとなるデータを示している。また、当該命令セットにおいては、各命令のＬＳＢ（Least Significant Bit：最下位ビット）が左右情報専用に割り当てられている。したがって、以下の命令（ヌル文字を除く）においても、左右情報「Ｌ」を有する命令および左右情報を有しない命令のＬＳＢは０、左右情報「Ｒ」を有する命令のＬＳＢは１となっている。
【００３６】
２つのデータ（ＡおよびＢ）の乗算結果（Ａ×ＢまたはＢ×Ａ）を出力する乗算命令に対しては、左右情報を有しない記号「×」と１６進表記１４Ｈとが設定されている。一方、２つのデータ（ＬおよびＲ）の除算結果（Ｌ÷Ｒ）を出力する除算命令に対しては、左右情報が付加された記号「÷Ｌ」および「÷Ｒ」と、１６進表記１６Ｈおよび１７Ｈとが設定されている。
【００３７】
左右情報が付加された記号「ｗｒｉｔｅＬ」および「ｗｒｉｔｅＲ」と、１６進表記１８Ｈおよび１９Ｈとが設定されている書き込み命令は、データ（Ｌ）が示す記憶装置６のアドレスに記憶されているデータ（＊Ｌ）にデータ（Ｒ）を書き込む命令である。なお、「＊」は間接参照演算子である。
【００３８】
左右情報が付加された記号「ａｐｐ１Ｌ」および「ａｐｐ１Ｒ」と、１６進表記５０Ｈおよび５１Ｈとが設定されているデータ追加命令は、後述するパケット（Ｌ）のデータ部分にパケット（Ｒ）のデータ部分を追加する命令である。また、左右情報が付加された記号「ａｐｐ２Ｌ」および「ａｐｐ２Ｒ」と、１６進表記５２Ｈおよび５３Ｈとが設定されている命令追加命令は、後述するパケット（Ｌ）の処理命令部分にパケット（Ｒ）のデータ部分を追加する命令である。
【００３９】
次に、１入力・１出力命令について説明する。なお、１入力・１出力命令は、１つのデータのみをオペランドとするため、いずれも左右情報を有しない。  
記号「ＮＯＰ」と１６進表記００Ｈとが設定されているＮＯＰ命令は、何もしない命令である。また、記号「ｒｅａｄ」と１６進表記０２Ｈとが設定されている読み出し命令は、データ（Ａ）が示す記憶装置６のアドレスに記憶されているデータ（＊Ａ）を読み出す命令である。なお、命令ではないが、パケットの終端を示すヌル文字として、例えば１６進表記ＦＦＨが設定されている。
【００４０】
各ＭＣＥは、図５に示した命令セットを用いて、一般的なデータ駆動型アーキテクチャの場合と同様に、データフロー図を生成する。図６は、実行コードＰ１から生成されたデータフロー図を示しており、図４に示したソースプログラムＰ０のｆｏｒループ内の処理に対応している。
【００４１】
図６において、Ｄ１ないしＤ５はデータを示しており、Ｉ１ないしＩ５は命令を示している。加算命令Ｉ４は、データＤ１（ｄｐ）およびデータＤ２（ｉｉ）を加算し、データｄｐ＋ｉｉを出力し、加算命令Ｉ１は、データＤ３（ｓｐ）およびデータＤ４（ｉｉ）を加算し、データｓｐ＋ｉｉを出力する。また、読み出し命令Ｉ２は、記憶装置６からデータ＊（ｓｐ＋ｉｉ）を読み出す。さらに、除算命令Ｉ３は、データ＊（ｓｐ＋ｉｉ）をデータＤ５（２）で除算し、データ＊（ｓｐ＋ｉｉ）／２を出力する。そして、書き込み命令Ｉ５は、記憶装置６のデータ＊（ｄｐ＋ｉｉ）にデータ＊（ｓｐ＋ｉｉ）／２を書き込む。
【００４２】
以上のデータフローによって、配列ｓｐ［１０２４］の１つの要素を２で除算した値が配列ｄｐ［１０２４］に格納される。図７は、図６に示したデータフロー図に基づいて生成された基本パケット列を示している。
【００４３】
各パケットは、データ部分（data section）と拡張識別情報部分（extended identification information section）とからなる。また、拡張識別情報部分は、識別情報部分（identification information section）と処理命令部分（processing instructions section）とからなる。なお、各パケットは、暗号化や圧縮などの目的で適宜符号化されていてもよい。
【００４４】
データ部分は、データ本体のほか、当該データのデータ長情報を含む。また、データ長情報は、例えばデータのバイト数を示すが、データ処理装置１が固定長データのみを扱う場合には、不要となる。
【００４５】
識別情報部分は、例えばＭＣＥ  ＩＤおよび処理ＩＤを含む。これらのうち、処理ＩＤは、基本パケット列ごとに設定されるため、図７においては空（ヌル文字）であり、ｆｏｒループを展開する際に設定される。一方、ＭＣＥ  ＩＤは、当該基本パケット列を生成したＭＣＥを示す発行元情報に相当し、例えば、図３に示した０ないし３の識別番号が用いられる。また、基本パケット列においては、図７に示すように、ＭＣＥ  ＩＤを空とし、ｆｏｒループを展開する際に、ＭＣＥ  ＩＤを処理ＩＤとともに設定するようにしてもよい。
【００４６】
本実施形態では、一例として、処理命令部分は、５個までの命令１ないし５のほか、命令数情報を含む。また、各命令は、実行順序とは逆順に配列されており、最初に実行されるべき命令が最後尾に配置され、以降は空となっている。さらに、命令数情報は、未処理の命令数を示すが、その都度計数するようにしてもよい。
【００４７】
図７から明らかなように、当該基本パケット列は、図６に示したデータフロー図を５個のデータＤ１ないしＤ５ごとに再構成したものであり、各パケットは、当該データに識別情報および処理命令を付加して生成される。さらに、各ＭＣＥは、繰り返し処理などの基本パケット列に対する制御命令を展開したうえで、各パケットを隣接するＰＥに発行する。図８は、図７に示した基本パケット列に対して、ｆｏｒループを展開した後のパケット列を示している。
【００４８】
図４に示したように、当該ｆｏｒループは、ｉｉ＝０からｉｉ＝１０２３までの繰り返し処理であるので、展開することによって、５×１０２４パケットが生成されることとなる。また、図８に示すように、５パケットごとに１から１０２４までの同一の処理ＩＤを含んでおり、当該５パケットがそれぞれ図７に示した基本パケット列に対応している。なお、図８においては、一例として、ＭＣＥ  ＩＤは１となっており、各パケットがＭＣＥ３０１によって生成されたことを示している。
【００４９】
ＭＣＥ３０１から発行された各パケットは、ＰＥ１００ないし１１５のうち、後述する宛先情報が示すＰＥまで、通信路５００を介して伝達される。また、各ＰＥは、パケットに含まれる処理命令を実行する実行ノードに相当する。なお、各ＰＥの動作についての詳細な説明は後述する。
【００５０】
以上のように、本実施形態のデータ処理装置は、オペランドとなるデータとオペレータとなる命令とが一体となったパケットを処理対象としている点で、前述した従来のコンピュータアーキテクチャと大きく異なっている。
【００５１】
なお、本発明のデータ処理装置は、本実施形態に示したように、機械語やアセンブリ言語で記述された実行コードＰ１からパケット列を生成するＭＣＥを備える構成に限定されるものではない。
【００５２】
例えば、記憶装置６には、ソースプログラムＰ０から実行コードＰ１にコンパイルする際の中間の段階で生成される中間コードとして、構文木（syntax tree）で表現されたプログラムが記憶されていてもよい。構文木では、オペランドが葉ノード（leaf node）に配置され、オペレータが内部ノード（internal node）に配置された木構造となっているため、機械語やアセンブリ言語の場合に比べて、データフロー図の生成が容易となる。
【００５３】
また、例えば、記憶装置６には、コンパイラを備える外部装置によって予め生成された基本パケット列（sequences of base packets）や展開後のパケット列（sequences of expanded packets）が記憶されていてもよい。基本パケット列が記憶されている場合には、各ＭＣＥは、読み込まれた基本パケット列に対する制御命令を展開し、ＭＣＥ  ＩＤや処理ＩＤを設定したうえで、各パケットを隣接するＰＥに発行する。一方、展開後のパケット列が記憶されている場合には、各ＭＣＥは、各パケットをそのまま隣接するＰＥに発行することができる。
【００５４】
また、例えば、記憶装置６には、展開後のパケット列のうち、識別情報部分の一部または全部を省略した、またはヌル文字とした中間パケット列（sequences of interim packets）が記憶されていてもよい。この場合には、各ＭＣＥは、省略されたＭＣＥ  ＩＤや処理ＩＤを設定したうえで、各パケットを隣接するＰＥに発行する。
【００５５】
さらに、例えば、展開後のパケット列が外部装置からデータ処理装置に直接入力されてもよい。この場合の外部装置には、並列に動作している他のデータ処理装置も含まれ得る。
【００５６】
ここで、ソースプログラムとデータ処理装置１で処理されるプログラム（実行コード）との関係の他の例を図１４に示す。この場合、コンパイラは、高級言語で記述されたソースプログラムＰ０から、データフロー図に基づいて基本パケット列を生成し、さらに、当該基本パケット列に対する制御命令を展開する。また、記憶装置６には、当該展開後のパケット列が適宜符号化されたうえで、実行コードＰ２として記憶される。そして、ＭＣＥ３００ないし３０３には、実行コードＰ２が読み込まれる。
【００５７】
＝＝＝ＰＥ（処理要素）の構成＝＝＝
以下、図１を参照して、本実施形態におけるＰＥの構成について説明する。  
図１に示されているＰＥ１００ないし１１５は、入出力部２１０、比較・選択部２３０、バッファメモリ２４０、オペランドバッファ２５０ａ、２５０ｂ、およびＡＬＵ（Arithmetic Logic Unit：算術論理演算部）２６０をそれぞれ含んで構成されている。
【００５８】
入出力部２１０は、宛先情報算出部２１１、出力ポート２１４ａないし２１４ｄ、および入力ポート２１５ａないし２１５ｄを含む。また、入出力部２１０には、各入力ポートを介して、パケットや、記憶装置６から読み出されたデータなどが入力されている。さらに、入出力部２１０からは、各出力ポートを介して、パケットや、記憶装置６に書き込まれるデータなどが出力されている。そして、各入出力ポート（入力ポートおよび出力ポート）は、前述した通信路５００（不図示）を介して、隣接するＰＥやＭＣＥと接続されている。
【００５９】
例えば、図３のＰＥ１１０の場合、４組の入出力ポートは、それぞれＰＥ１０９、１０６、１１１、および１１４と接続されている。また、例えばＰＥ１００の場合、２組の入出力ポートは、それぞれＰＥ１０１および１０４と接続され、１組の入出力ポートは、ＭＣＥ３００と接続され、そして、１組の入出力ポートは、使用されない。
【００６０】
また、例えば図１５に示すように、各入出力ポートが複数のチャネルを備え、当該複数のチャネルを使用して、隣接するＰＥ間やＰＥおよびＭＣＥ間でパケットやデータなどを入出力する構成としてもよい。  
なお、光を用いて情報伝達を行う場合には、例えば、図１３の発光素子２１２は、各出力ポートに設けられ、受光素子２１３は、各入力ポートに設けられる。
【００６１】
比較・選択部２３０には、入出力部２１０からパケットが入力されている。また、比較・選択部２３０は、ハッシュ値算出部２３１を含み、記憶部に相当するバッファメモリ２４０との間でパケットを入出力している。さらに、比較・選択部２３０からは、オペランドバッファ２５０ａおよび２５０ｂを介して、それぞれ左側および右側オペランドとなるデータを有するパケットが、演算部に相当するＡＬＵ２６０に入力されている。そして、ＡＬＵ２６０によって新たに生成されたパケットは、再び入出力部２１０に入力されている。
【００６２】
＝＝＝ＰＥ（処理要素）の動作＝＝＝
次に、図９ないし図１１を適宜参照して、本実施形態におけるＰＥの動作について説明する。  
入出力部２１０は、まず、宛先情報算出部２１１が入力されたパケットの宛先情報を算出する。宛先情報は、パケットを処理すべきＰＥを示す情報であり、当該パケットの拡張識別情報部分から求めることができる。ここで、図９を参照して、図８においてＭＣＥ  ＩＤ＝１、かつ処理ＩＤ＝１である、最初の５パケットの宛先情報の算出方法について説明する。以下、図９に示すように、当該５パケットをそれぞれパケットＰ１ないしＰ５とする。
【００６３】
宛先情報算出部２１１は、まず、各パケットから拡張識別情報部分のみを抽出し（図９中段）、各拡張識別情報のうち、最初に実行されるべき命令の左右情報をマスクする（図９下段）。前述したように、本実施形態では、最初に実行されるべき命令がパケットの最後尾に配置され、各命令のＬＳＢが左右情報専用に割り当てられている。したがって、拡張識別情報の最後の１ビットを０または１（図９においては０）でマスクすればよい。なお、拡張識別情報にヌル文字を含めてもよく、この場合には、ヌル文字直前の１ビット以降をマスクすればよい。
【００６４】
宛先情報算出部２１１は、次に、上記のマスクされた拡張識別情報に基づいて擬似（疑似）乱数を生成し、当該擬似乱数に応じて、宛先情報を算出する。例えば、０ないし１５（２進表記で００００ないし１１１１）の４ビットの値を宛先情報として算出すると、当該宛先情報は、図３の各ＰＥの座標と同様に、上位２ビットをＸ座標、下位２ビットをＹ座標とする座標（Ｘ，Ｙ）の形式で表すこともできる。図９下段においては、宛先情報を当該座標の形式で表している。
【００６５】
擬似乱数は、物理乱数と異なり、再現性があるため、マスクされた拡張識別情報が同一のパケットからは同一の擬似乱数が生成され、同一の宛先情報が算出される。例えば、図９下段に示すように、マスクされた拡張識別情報が同一であるパケットＰ１およびＰ２からは、同一の宛先情報（ｘ１，ｙ１）が算出されている。また、同様に、パケットＰ３およびＰ４からは、同一の宛先情報（ｘ２，ｙ２）が算出されている。
【００６６】
なお、前述したように、各パケットは適宜符号化され得るが、宛先情報を算出する度に復号する必要がないよう、データ部分と拡張識別情報部分とを個別に符号化することが望ましい。同様に、処理命令部分単独で、または拡張識別情報部分全体で符号化する場合には、復号することなく、最初に実行されるべき命令の左右情報をマスクすることができる符号化を用いることが望ましい。
【００６７】
また、擬似乱数の生成には、公知の方法を用いることができる。宛先情報の算出時間の観点からは、ＬＣＧ（Linear Congruential Generator：線形合同法）やＬＦＳＲ（Linear Feedback Shift Register：線形帰還シフトレジスタ）など、高速な生成方法を用いることが望ましい。
【００６８】
さらに、宛先情報算出部２１１は、予め生成された擬似乱数テーブルを参照して宛先情報を算出する構成としてもよい。この場合、宛先情報算出部２１１は、パケットごとに擬似乱数を生成する必要がないため、宛先情報の算出時間を短縮することができる。なお、このような構成においては、各ＰＥの宛先情報算出部が同一の擬似乱数テーブルを備えるか、各ＰＥの宛先情報算出部が共通の擬似乱数テーブルを読み出す必要がある。
【００６９】
一方、ＰＥの使用効率の観点からは、パケット分布が一様となるよう、擬似乱数が一様分布に近いほど望ましい。また、確率変数族が予測不可能であることは、一様分布であることと等価であるので、ＣＳＰＲＮＧ（Cryptographically Secure Pseudo-Random Number Generator：暗号論的擬似乱数生成器）を用いることによって、ＰＥの使用効率の向上を図ることができる。しかしながら、命令によっても各パケットの処理時間は異なるため、実際には、擬似乱数が一様分布であっても、パケット分布が一様とはならないこともある。
【００７０】
そのため、宛先情報の算出時間が長くなり過ぎない程度で、一様分布に近い擬似乱数を用いることが望ましい。例えば、宛先情報の算出時間が、後述するハッシュ値の算出時間よりも長くなることは望ましくない。
【００７１】
入出力部２１０は、次に、パケットの宛先情報が当該ＰＥを示しているか否かを判定し、当該ＰＥを示している場合には、当該パケットを取得して比較・選択部２３０に入力する。一方、パケットの宛先情報が当該ＰＥを示していない場合には、宛先情報が示すＰＥに近づく方向に隣接するＰＥに当該パケットを転送する。ここで、図１０を参照して、このようなパケットの取得および転送を実現する、入出力部２１０の具体的な動作の一例について説明する。なお、図１０においては、現在位置、すなわち、当該ＰＥの座標を（ｘ０，ｙ０）とし、宛先情報が示すＰＥの座標を（ｘ１，ｙ１）とする。
【００７２】
入出力部２１０は、隣接するＰＥやＭＣＥからパケットが入力されると（Ｓ１）、まず、現在位置のＹ座標ｙ０と宛先情報のＹ座標ｙ１とを比較する（Ｓ２）。
【００７３】
Ｓ２において、両者のＹ座標が一致している場合（Ｓ２：＝）には、現在位置のＸ座標ｘ０と宛先情報のＸ座標ｘ１とを比較する（Ｓ３）。
【００７４】
また、ｙ０がｙ１より大きい場合（Ｓ２：＞）には、宛先情報が示すＰＥは現在位置よりＹ座標が小さい方向にあるため、ｙ０−１方向に隣接するＰＥ、すなわち、座標（ｘ０，ｙ０−１）に位置するＰＥにパケットを転送し（Ｓ３１）、処理を終了する（Ｓ５）。一方、ｙ０がｙ１より小さい場合（Ｓ２：＜）には、宛先情報が示すＰＥは現在位置よりＹ座標が大きい方向にあるため、ｙ０＋１方向に隣接するＰＥ、すなわち、座標（ｘ０，ｙ０＋１）に位置するＰＥにパケットを転送し（Ｓ３２）、処理を終了する（Ｓ５）。
【００７５】
Ｓ３において、両者のＸ座標が一致している場合（Ｓ３：＝）には、宛先情報が当該ＰＥを示しているため、パケットを取得して比較・選択部２３０に入力し（Ｓ４）、処理を終了する（Ｓ５）。
【００７６】
また、ｘ０がｘ１より大きい場合（Ｓ３：＞）には、宛先情報が示すＰＥは現在位置よりＸ座標が小さい方向にあるため、ｘ０−１方向に隣接するＰＥ、すなわち、座標（ｘ０−１，ｙ０）に位置するＰＥにパケットを転送し（Ｓ４１）、処理を終了する（Ｓ５）。一方、ｘ０がｘ１より小さい場合（Ｓ３：＜）には、宛先情報が示すＰＥは現在位置よりＸ座標が大きい方向にあるため、ｘ０＋１方向に隣接するＰＥ、すなわち、座標（ｘ０＋１，ｙ０）に位置するＰＥにパケットを転送し（Ｓ４２）、処理を終了する（Ｓ５）。
【００７７】
以上の動作を各ＰＥの入出力部が行うことによって、各パケットは宛先情報が示すＰＥまで伝達され、取得される。例えば、図３において、ＭＣＥ３０１からＰＥ１０１に発行されたパケットの宛先情報がＰＥ１１５を示す場合には、当該パケットは、ＰＥ１０２、ＰＥ１０３、ＰＥ１０７、およびＰＥ１１１を経由して、ＰＥ１１５まで伝達される。また、例えば、ＰＥ１１５によって処理され、新たに生成されたパケットの宛先情報がＰＥ１０４を示す場合には、当該パケットは、ＰＥ１１４、ＰＥ１１３、ＰＥ１１２、およびＰＥ１０８を経由して、ＰＥ１０４まで伝達される。
【００７８】
すなわち、各パケットは、まず、宛先情報が示すＰＥとＹ座標が一致するまで、図３の上下方向に移動し、次に、Ｘ座標が一致するまで、図３の左右方向に移動する。このような移動規則を採用することによって、パケットの移動経路は常に最短となる。また、移動中の方向転換は１回または０回となり、各ＰＥ間における通信路５００の使用頻度を平均化することができる。
【００７９】
以上のように、本実施形態のデータ処理装置は、実行ノードに相当するＰＥがタイルプロセッサと同様に行列状に配置されているものの、処理対象のパケットがそのビット列自体に基づいて動的に配置される点で、ＥＤＧＥアーキテクチャと大きく異なっている。
【００８０】
なお、本発明のデータ処理装置は、本実施形態に示した行列状の配置および接続に限定されるものではない。例えば、図３において、各ＰＥ間における通信路５００の一部を省略することによって、リング型の接続となる。また、例えば、すべてのＰＥ間やＰＥおよびＭＣＥ間を直接接続することもできる。この場合、電気配線による電気信号の伝達では、ＰＥやＭＣＥの個数が増加するほど、配線が困難となる。一方、前述した電磁波を用いた情報伝達では、容易に通信路５００を追加することができる。
【００８１】
比較・選択部２３０は、入出力部２１０によって取得されたパケット（以下、取得パケットと称する）のうち、処理可能なものをＡＬＵ２６０に入力する。また、比較・選択部２３０は、処理可能でないパケットをバッファメモリ２４０に記憶させるとともに、バッファメモリ２４０に記憶されているパケット（以下、記憶パケットと称する）の読み出しを行う。
【００８２】
より具体的には、取得パケットの最初に実行されるべき（最後尾の）命令が１入力・１出力命令である場合、比較・選択部２３０は、取得パケットのみを、オペランドバッファ２５０ａまたは２５０ｂを介してＡＬＵ２６０に入力する。
【００８３】
一方、取得パケットの最初に実行されるべき（最後尾の）命令が２入力・１出力命令である場合、比較・選択部２３０は、前述したマスクされた拡張識別情報が取得パケットと一致するパケットを、記憶パケットから検索する。そして、一致する記憶パケットが存在するときには、比較・選択部２３０は、当該一致する２つのパケットを組にして、オペランドバッファ２５０ａおよび２５０ｂを介してＡＬＵ２６０に入力する。また、一致する記憶パケットが存在しないときには、比較・選択部２３０は、取得パケットをバッファメモリ２４０に記憶させる。
【００８４】
なお、マスクされた拡張識別情報が取得パケットと一致する記憶パケットの検索を効率よく行うため、本実施形態では、バッファメモリ２４０は、ハッシュテーブルを含む。
【００８５】
また、比較・選択部２３０は、まず、ハッシュ値算出部２３１が、取得パケットからハッシュ値を算出する。当該ハッシュ値は、宛先情報の場合と同様に、取得パケットのマスクされた拡張識別情報に基づいて算出される。そして、比較・選択部２３０は、取得パケットをバッファメモリ２４０に記憶させる場合には、取得パケットをそのハッシュ値と対応付けてハッシュテーブルに格納する。
【００８６】
なお、ハッシュテーブルには、公知の実装方法を用いることができる。図１１は、バッファメモリ２４０に実装されるハッシュテーブルの一例を示している。当該ハッシュテーブルでは、ハッシュ衝突の解決方法として、オープンアドレス法（open addressing）を用い、再ハッシュ手順として、線形探索法（linear probing）を用いている。
【００８７】
図１１においては、一例として、ハッシュ値がｎ＋３となるパケット１が格納された後に、ハッシュ値がｎとなるパケット２ないし５が格納された場合を示している。パケット１は、ルート配列［２５６］の要素ｎ＋３の位置に格納され、フラグ「１」およびカウント値「１」が設定されている。また、パケット２ないし５は、それぞれ要素ｎ、ｎ＋１、ｎ＋２、ｎ＋４の位置に格納され、要素ｎの位置にフラグ「１」およびカウント値「４」が設定されている。
【００８８】
ＡＬＵ２６０は、オペランドバッファ２５０ａおよび２５０ｂを介して入力されるオペランドに対して、算術演算（整数演算および／または浮動小数点演算）や論理演算などを行い、演算結果を出力する。より具体的には、ＡＬＵ２６０は、入力されたパケットのデータに対して、最初に実行されるべき（最後尾の）命令を実行し、実行結果のデータに、実行された命令を除いた拡張識別情報を付加して新たなパケットを生成し、再び入出力部２１０に入力する。
【００８９】
このようにして、各ＰＥは、入力されたパケットの拡張識別情報部分から宛先情報を求め、宛先情報が当該ＰＥを示すパケットのみを取得し、宛先情報が当該ＰＥを示さないパケットを他のＰＥに転送する。そして、取得パケットのデータに対して最初に実行されるべき（最後尾の）命令を実行するとともに、実行結果のデータに実行された命令を除いた拡張識別情報を付加して新たなパケットを生成し、生成されたパケットをその宛先情報に応じて転送または取得する。
【００９０】
なお、パケットが入力される度に各ＰＥが宛先情報を算出する代わりに、算出した宛先情報をパケットに付加し、当該宛先情報を再利用してもよい。例えば、ＭＣＥがパケットをＰＥに発行する場合、およびＰＥが新たなパケットを生成する場合に宛先情報を付加することによって、それ以外の場合には付加されている宛先情報をそのまま利用することができる。この場合、宛先情報が付加されているパケットに対して宛先情報を算出する必要はなく、各ＰＥで取得されるパケットに付加されている宛先情報は同一となるため、宛先情報をデータ部分および拡張識別情報部分のいずれに付加してもよい。
【００９１】
また、光を用いて情報伝達を行う場合、情報伝達元のＰＥの発光素子は、宛先情報が示す情報伝達先のＰＥに設定された波長の光を発光することによって、転送を繰り返すことなく、宛先情報が示すＰＥにパケットを直接伝達することができる。この場合、各ＰＥは、他のＰＥやＭＣＥから入力されるパケットの宛先情報が当該ＰＥを示しているか否かを判定することなく、宛先情報が当該ＰＥを示すパケットのみを取得することができる。
【００９２】
さらに、各ＰＥによって新たに生成されたパケットについても、宛先情報が当該ＰＥを示しているか否かを判定することなく、宛先情報が示す情報伝達先のＰＥに設定された波長の光を発光する構成としてもよい。この場合、情報伝達元と同一のＰＥを含めた何れかのＰＥの受光素子が当該波長の光を受光し、宛先情報が示すＰＥにパケットを伝達することができる。
【００９３】
＝＝＝データ処理装置の動作の具体例＝＝＝
ここで、図１２を参照して、図９に示したパケットＰ１ないしＰ５に対するデータ処理装置１の動作の具体例について説明する。
【００９４】
前述したように、パケットＰ１およびＰ２は、同一の宛先情報（ｘ１，ｙ１）が算出されているため、座標（ｘ１，ｙ１）に位置するＰＥまで伝達され、最後尾の加算命令Ｉ４が実行される。そして、実行結果のデータｄｐ＋０に、加算命令Ｉ４を除いた拡張識別情報が付加され、新たなパケットＰ６が生成される。なお、パケットＰ６から算出される宛先情報を（ｘ４，ｙ４）とする。
【００９５】
同様に、パケットＰ３およびＰ４は、同一の宛先情報（ｘ２，ｙ２）が算出されているため、座標（ｘ２，ｙ２）に位置するＰＥまで伝達され、最後尾の加算命令Ｉ１が実行される。そして、実行結果のデータｓｐ＋０に、加算命令Ｉ１を除いた拡張識別情報が付加され、新たなパケットＰ７が生成される。なお、パケットＰ７から算出される宛先情報を（ｘ５，ｙ５）とする。
【００９６】
パケットＰ７は、座標（ｘ５，ｙ５）に位置するＰＥまで伝達され、最後尾の読み出し命令Ｉ２（１入力・１出力命令）が実行される。そして、実行結果のデータ＊（ｓｐ＋０）に、読み出し命令Ｉ２を除いた拡張識別情報が付加され、新たなパケットＰ８が生成される。なお、パケットＰ８は、マスクされた拡張識別情報がパケットＰ５と同一になるため、パケットＰ５と同一の宛先情報（ｘ３，ｙ３）が算出される。
【００９７】
パケットＰ８およびＰ５は、座標（ｘ３，ｙ３）に位置するＰＥまで伝達され、最後尾の除算命令Ｉ３が実行される。そして、実行結果のデータ＊（ｓｐ＋０）／２に、除算命令Ｉ３を除いた拡張識別情報が付加され、新たなパケットＰ９が生成される。なお、パケットＰ９は、マスクされた拡張識別情報がパケットＰ６と同一になるため、パケットＰ６と同一の宛先情報（ｘ４，ｙ４）が算出される。
【００９８】
パケットＰ６およびＰ９は、座標（ｘ４，ｙ４）に位置するＰＥまで伝達され、最後尾の書き込み命令Ｉ５が実行される。そして、実行結果のデータ＊（ｄｐ＋０）＝＊（ｓｐ＋０）／２に、書き込み命令Ｉ５を除いた拡張識別情報が付加され、新たなパケットＰ１０が生成される。
【００９９】
パケットＰ１０は、処理命令を含まないため、ＭＣＥ  ＩＤが示すＭＣＥ３０１まで戻される。パケットＰ１０をＭＣＥ３０１まで戻すため、各ＰＥの入出力部は、例外処理を行う必要がある。図１２においては、一例として、宛先情報算出部２１１が処理命令を含まないパケットの宛先情報を（−１，ｍ）と算出している。ここで、ＭＣＥ  ＩＤ＝ｍとする。この場合、パケットＰ１０の宛先情報は、（−１，１）となる。例えば、図３において、ＰＥ１１５がパケットＰ１０を生成した場合には、パケットＰ１０は、ＰＥ１１４、ＰＥ１１３、ＰＥ１０９、ＰＥ１０５、およびＰＥ１０１を経由して、ＭＣＥ３０１まで伝達される。
【０１００】
なお、各ＰＥにおいて、バッファメモリやオペランドバッファが満杯となり、取得パケットを処理できないビジー状態の場合にも、当該パケットをＭＣＥ  ＩＤが示すＭＣＥまで戻すことが望ましい。この場合の例外処理は、例えば、パケットの命令数情報を最大命令数より大きな値とし、このようなパケットの宛先情報も（−１，ｍ）と算出すればよい。さらに、何れかのＰＥがビジー状態の間、各ＭＣＥは、新たな処理ＩＤのパケットの発行を停止することが望ましい。このようなビジー状態の制御には、例えば、すべてのＰＥおよびＭＣＥに接続された制御信号線を設け、当該制御信号線を介してビジー状態を示すビジー信号を送信すればよい。
【０１０１】
＝＝＝データ処理装置の動作の他の具体例＝＝＝
図７に示したパケットの構成は、処理命令部分に５個までの命令しか含むことができない。そのため、より複雑な処理を行うためには、パケットの処理命令部分に命令を追加する必要がある。
【０１０２】
図５に示した命令追加命令（記号／１６進表記：「ａｐｐ２Ｌ」／５２Ｈ、「ａｐｐ２Ｒ」／５３Ｈ）は、このような命令の追加機能を実現することができる。以下、図１６ないし１８を適宜参照して、命令追加命令の実行を含むデータ処理装置１の動作の具体例について説明する。ここでは、一例として、配列ｓｐ［１０２４］の各要素に４を乗算したうえで１を加算し、さらに２で除算した値を配列ｄｐ［１０２４］に格納する処理について説明する。
【０１０３】
図１６は、このような処理のｆｏｒループ内の処理に対応するデータフロー図を示している。  
図１６において、Ｄ１１ないしＤ１８はデータを示しており、Ｉａは、命令追加命令を示しており、Ｉ１１ないしＩ１７は命令追加命令以外の命令を示している。加算命令Ｉ１６は、データＤ１１（ｄｐ）およびデータＤ１２（ｉｉ）を加算し、データｄｐ＋ｉｉを出力し、加算命令Ｉ１１は、データＤ１３（ｓｐ）およびデータＤ１４（ｉｉ）を加算し、データｓｐ＋ｉｉを出力する。
【０１０４】
データＤ１５は、命令列（sequence of instructions）であり、命令追加命令Ｉａは、データｓｐ＋ｉｉのパケットの処理命令部分にデータＤ１５を追加する。なお、データＤ１５の命令列は、データｓｐ＋ｉｉのパケットに対する命令追加命令Ｉａ以降の処理に対応しており、具体的には、命令Ｉ１２ないしＩ１５、およびＩ１７に相当する。
【０１０５】
命令追加命令Ｉａによって追加された命令のうち、まず、読み出し命令Ｉ１２は、記憶装置６からデータ＊（ｓｐ＋ｉｉ）を読み出す。  
次に、乗算命令Ｉ１３は、データ＊（ｓｐ＋ｉｉ）にデータＤ１６（４）を乗算し、データ＊（ｓｐ＋ｉｉ）＊４を出力する。  
次に、加算命令Ｉ１４は、データ＊（ｓｐ＋ｉｉ）＊４にデータＤ１７（１）を加算し、データ＊（ｓｐ＋ｉｉ）＊４＋１を出力する。  
次に、除算命令Ｉ１５は、データ＊（ｓｐ＋ｉｉ）＊４＋１をデータＤ１８（２）で除算し、データ［＊（ｓｐ＋ｉｉ）＊４＋１］／２を出力する。
【０１０６】
最後に、書き込み命令Ｉ１７は、記憶装置６のデータ＊（ｄｐ＋ｉｉ）にデータ［＊（ｓｐ＋ｉｉ）＊４＋１］／２を書き込む。  
以上のデータフローによって、配列ｓｐ［１０２４］の１つの要素に４を乗算したうえで１を加算し、さらに２で除算した値が配列ｄｐ［１０２４］に格納される。図１７は、図１６に示したデータフロー図に基づいて生成された基本パケット列に対して、ｆｏｒループを展開した後のパケット列のうち、ＭＣＥ  ＩＤ＝１、かつ処理ＩＤ＝１である、最初の８パケットＰ１１ないしＰ１８を示している。
【０１０７】
ここで、図１８を参照して、図１７に示したパケットＰ１１ないしＰ１８に対するデータ処理装置１の動作の具体例について説明する。
【０１０８】
パケットＰ１１およびＰ１２は、同一の宛先情報が算出されるため、当該同一の宛先情報が示すＰＥまで伝達され、最後尾の加算命令Ｉ１６が実行される。そして、実行結果のデータｄｐ＋０に、加算命令Ｉ１６を除いた拡張識別情報が付加され、新たなパケットＰ１９が生成される。
【０１０９】
同様に、パケットＰ１３およびＰ１４は、同一の宛先情報が算出されるため、当該同一の宛先情報が示すＰＥまで伝達され、最後尾の加算命令Ｉ１１が実行される。そして、実行結果のデータｓｐ＋０に、加算命令Ｉ１１を除いた拡張識別情報が付加され、新たなパケットＰ２０が生成される。なお、パケットＰ２０は、マスクされた拡張識別情報がパケットＰ１５と同一になるため、パケットＰ１５と同一の宛先情報が算出される。
【０１１０】
パケットＰ２０およびＰ１５は、同一の宛先情報が示すＰＥまで伝達され、最後尾の命令追加命令Ｉａが実行される。そして、パケットＰ２０のデータｓｐ＋０に、処理命令部分から命令追加命令Ｉａを除いたうえでデータＤ１５が追加された拡張識別情報が付加され、新たなパケットＰ２１が生成される。
【０１１１】
パケットＰ２１は、算出された宛先情報が示すＰＥまで伝達され、最後尾の読み出し命令Ｉ１２（１入力・１出力命令）が実行される。そして、実行結果のデータ＊（ｓｐ＋０）に、読み出し命令Ｉ１２を除いた拡張識別情報が付加され、新たなパケットＰ２２が生成される。なお、パケットＰ２２は、マスクされた拡張識別情報がパケットＰ１６と同一になるため、パケットＰ１６と同一の宛先情報が算出される。
【０１１２】
パケットＰ２２およびＰ１６は、同一の宛先情報が示すＰＥまで伝達され、最後尾の乗算命令Ｉ１３が実行される。そして、実行結果のデータ＊（ｓｐ＋０）＊４に、乗算命令Ｉ１３を除いた拡張識別情報が付加され、新たなパケットＰ２３が生成される。なお、パケットＰ２３は、マスクされた拡張識別情報がパケットＰ１７と同一になるため、パケットＰ１７と同一の宛先情報が算出される。
【０１１３】
パケットＰ２３およびＰ１７は、同一の宛先情報が示すＰＥまで伝達され、最後尾の加算命令Ｉ１４が実行される。そして、実行結果のデータ＊（ｓｐ＋０）＊４＋１に、加算命令Ｉ１４を除いた拡張識別情報が付加され、新たなパケットＰ２４が生成される。なお、パケットＰ２４は、マスクされた拡張識別情報がパケットＰ１８と同一になるため、パケットＰ１８と同一の宛先情報が算出される。
【０１１４】
パケットＰ２４およびＰ１８は、同一の宛先情報が示すＰＥまで伝達され、最後尾の除算命令Ｉ１５が実行される。そして、実行結果のデータ［＊（ｓｐ＋０）＊４＋１］／２に、除算命令Ｉ１５を除いた拡張識別情報が付加され、新たなパケットＰ２５が生成される。なお、パケットＰ２５は、マスクされた拡張識別情報がパケットＰ１９と同一になるため、パケットＰ１９と同一の宛先情報が算出される。
【０１１５】
パケットＰ１９およびＰ２５は、同一の宛先情報が示すＰＥまで伝達され、最後尾の書き込み命令Ｉ１７が実行される。そして、実行結果のデータ＊（ｄｐ＋０）＝［＊（ｓｐ＋０）＊４＋１］／２に、書き込み命令Ｉ１７を除いた拡張識別情報が付加され、新たなパケットＰ２６が生成される。なお、パケットＰ２６は、処理命令を含まないため、ＭＣＥ  ＩＤが示すＭＣＥ３０１まで戻される。
【０１１６】
ところで、書き込み命令Ｉ１７の実行によって、具体的には、パケットＰ１９のデータｄｐ＋０が示す記憶装置６のアドレスに記憶されているデータ＊（ｄｐ＋０）に、パケットＰ２５のデータ［＊（ｓｐ＋０）＊４＋１］／２が書き込まれる。したがって、パケットＰ２６のデータ＊（ｄｐ＋０）＝［＊（ｓｐ＋０）＊４＋１］／２は、書き込み命令Ｉ１７の実行自体を示している。そのため、書き込み命令Ｉ１７の実行後は、パケットＰ２６をＭＣＥ３０１まで戻すことなく消滅させてもよい。
【０１１７】
このようにして、図５に示した命令追加命令を実行することによって、パケットの処理命令部分に命令を追加することができる。また、同様に、図５に示したデータ追加命令（記号／１６進表記：「ａｐｐ１Ｌ」／５０Ｈ、「ａｐｐ１Ｒ」／５１Ｈ）を実行することによって、パケットのデータ部分にデータを追加することもできる。
【０１１８】
＝＝＝パケットの他の構成例＝＝＝
図７において、データ処理装置１によって処理されるパケットの構成を示したが、これに限定されるものではない。ここで、データ処理装置１によって処理されるパケットの他の構成例を図１９に示す。なお、図１９においては、図１７に示したパケットＰ１１ないしＰ１８と同じ実行結果を得られるパケットＰ３１ないしＰ３８が示されている。
【０１１９】
図１９において、拡張識別情報部分は、図７と同様の構成となっている。しかしながら、各ＰＥは、新たなパケットを生成する際に、拡張識別情報部分から実行された命令を除かないものとする。この場合、最初に実行されるべき命令が最後尾に配置されない場合もあり、命令数情報は、未処理の命令数や最初に実行されるべき命令を示すために必須の情報となる。
【０１２０】
一方、データ部分は、データ本体のほか、当該データのデータタイプ情報および延長フラグを含む。また、データタイプ情報は、例えば「整数型」や「浮動小数点型」などのデータタイプを示し、データタイプごとに予めデータ長を設定しておくことによって、データ長情報の機能も実現することができる。さらに、データタイプとして、「命令型」を備えることによって、後述するように、命令の追加機能を実現することができる。図２０は、当該パケットの構成におけるデータフロー図を示しており、命令追加命令Ｉａを用いることなく、命令追加処理Ｐａによって命令の追加機能を実現している。なお、延長フラグは、命令追加処理Ｐａにおいて用いられる。
【０１２１】
また、図１９において、パケットＰ３１、Ｐ３２、およびＰ３６ないしＰ３８は、データ本体および拡張識別情報部分が、図１７に示したパケットＰ１１、Ｐ１２、およびＰ１６ないしＰ１８と一致している。なお、これらのパケットは、いずれも、データタイプ情報が「整数型」、延長フラグが「０」となっている。
【０１２２】
パケットＰ３３およびＰ３４は、パケットＰ１３およびＰ１４から命令追加命令ＩａＬが除かれ、命令数情報が「１」となっている。また、命令追加命令ＩａＬの代わりに、命令追加処理Ｐａにおいて処理命令部分に命令が追加される側であることを示すため、延長フラグが「１」となっている。なお、これらのパケットは、いずれもデータタイプ情報が「整数型」となっている。
【０１２３】
パケットＰ３５は、命令追加命令ＩａＲの代わりに、パケットＰ３３およびＰ３４と同一の処理命令を含み、命令追加処理Ｐａにおいて命令を追加する側であることを示すため、データタイプ情報が「命令型」となっている。しかしながら、パケットＰ３３およびＰ３４と同一の処理命令は、パケットＰ３５のデータＤ１５に対して処理されるべきものではないため、命令数情報が「０」となっている。なお、パケットＰ３５は、延長フラグが「０」となっている。
【０１２４】
なお、図１９においては、宛先情報を算出する際、および取得パケットと記憶パケットとを比較する際に用いられる部分を、各パケットに対して矢印の範囲で示している。例えば、パケットＰ３１ないしＰ３４、およびＰ３６ないしＰ３８においては、識別情報部分、および処理命令部分のうち命令数情報が示す未処理の命令のみが抽出され、最初に実行されるべき命令の左右情報がマスクされて、宛先情報の算出などが行われる。したがって、これらのパケットにおいては、新たなパケットを生成する際に拡張識別情報部分から実行された命令を除く場合と同様に、宛先情報の算出などが行われる。
【０１２５】
しかしながら、データタイプ情報が「命令型」であるパケットＰ３５、および延長フラグが「１」であるパケットにおいては、命令数情報が「０」である場合に、拡張識別情報部分全体に基づいて、宛先情報の算出などが行われる。
【０１２６】
ここで、図２１を参照して、図１９に示したパケットＰ３１ないしＰ３８に対するデータ処理装置１の動作の具体例について説明する。  
パケットＰ３１およびＰ３２は、同一の宛先情報が算出されるため、当該同一の宛先情報が示すＰＥまで伝達され、命令数情報が示す最初に実行されるべき加算命令Ｉ１６が実行される。そして、実行結果のデータｄｐ＋０に、命令数情報から１を減算した拡張識別情報が付加され、新たなパケットＰ３９が生成される。なお、パケットＰ３９は、命令数情報が「１」となるため、残存している加算命令Ｉ１６は、宛先情報の算出に用いられない。
【０１２７】
同様に、パケットＰ３３およびＰ３４は、同一の宛先情報が算出されるため、当該同一の宛先情報が示すＰＥまで伝達され、命令数情報が示す最初に実行されるべき加算命令Ｉ１１が実行される。そして、実行結果のデータｓｐ＋０に、命令数情報から１を減算した拡張識別情報が付加され、新たなパケットＰ４０が生成される。なお、パケットＰ４０は、延長フラグが「１」であり、命令数情報が「０」となるため、拡張識別情報部分全体に基づいて、パケットＰ３５と同一の宛先情報が算出される。
【０１２８】
いずれも命令数情報が「０」であるパケットＰ４０およびＰ３５は、同一の宛先情報が示すＰＥまで伝達され、命令追加処理Ｐａが行われる。そして、延長フラグが「１」であるパケットＰ４０のデータｓｐ＋０に、処理命令部分をデータタイプ情報が「命令型」であるパケットＰ３５のデータＤ１５とした拡張識別情報が付加され、新たなパケットＰ４１が生成される。
【０１２９】
なお、パケットＰ４１の命令数情報は、データＤ１５に含まれていた命令数「５」となる。また、パケットＰ４１の延長フラグは、パケットＰ３５の延長フラグ「０」を継承する（inheritance）。一方、データタイプ情報が「命令型」であるパケットの延長フラグを「１」とすることによって、命令追加処理によって新たに生成されるパケットに対しても命令追加処理を行うことができる。
【０１３０】
パケットＰ４１は、算出された宛先情報が示すＰＥまで伝達され、命令数情報が示す最初に実行されるべき読み出し命令Ｉ１２（１入力・１出力命令）が実行される。そして、実行結果のデータ＊（ｓｐ＋０）に、命令数情報から１を減算した拡張識別情報が付加され、新たなパケットＰ４２が生成される。なお、パケットＰ４２は、命令数情報が「４」となるため、残存している読み出し命令Ｉ１２は、宛先情報の算出に用いられず、パケットＰ３６と同一の宛先情報が算出される。
【０１３１】
パケットＰ４２およびＰ３６は、同一の宛先情報が示すＰＥまで伝達され、命令数情報が示す最初に実行されるべき乗算命令Ｉ１３が実行される。そして、実行結果のデータ＊（ｓｐ＋０）＊４に、命令数情報から１を減算した拡張識別情報が付加され、新たなパケットＰ４３が生成される。なお、パケットＰ４３は、命令数情報が「３」となるため、残存している乗算命令Ｉ１３および読み出し命令Ｉ１２は、宛先情報の算出に用いられず、パケットＰ３７と同一の宛先情報が算出される。
【０１３２】
パケットＰ４３およびＰ３７は、同一の宛先情報が示すＰＥまで伝達され、命令数情報が示す最初に実行されるべき加算命令Ｉ１４が実行される。そして、実行結果のデータ＊（ｓｐ＋０）＊４＋１に、命令数情報から１を減算した拡張識別情報が付加され、新たなパケットＰ４４が生成される。なお、パケットＰ４４は、命令数情報が「２」となるため、残存している加算命令Ｉ１４、乗算命令Ｉ１３、および読み出し命令Ｉ１２は、宛先情報の算出に用いられず、パケットＰ３８と同一の宛先情報が算出される。
【０１３３】
パケットＰ４４およびＰ３８は、同一の宛先情報が示すＰＥまで伝達され、命令数情報が示す最初に実行されるべき除算命令Ｉ１５が実行される。そして、実行結果のデータ［＊（ｓｐ＋０）＊４＋１］／２に、命令数情報から１を減算した拡張識別情報が付加され、新たなパケットＰ４５が生成される。なお、パケットＰ４５は、命令数情報が「１」となるため、残存している除算命令Ｉ１５、加算命令Ｉ１４、乗算命令Ｉ１３、および読み出し命令Ｉ１２は、宛先情報の算出に用いられず、パケットＰ３９と同一の宛先情報が算出される。
【０１３４】
パケットＰ３９およびＰ４５は、同一の宛先情報が示すＰＥまで伝達され、命令数情報が示す最初に実行されるべき書き込み命令Ｉ１７が実行される。そして、実行結果のデータ＊（ｄｐ＋０）＝［＊（ｓｐ＋０）＊４＋１］／２に、命令数情報から１を減算した拡張識別情報が付加され、新たなパケットＰ４６が生成される。なお、パケットＰ４６は、データタイプ情報が「命令型」でも、延長フラグが「１」でもなく、命令数情報が「０」となる。したがって、パケットＰ４６は、処理されるべき処理命令を含まないため、ＭＣＥ  ＩＤが示すＭＣＥ３０１まで戻されるか、または消滅する。
【０１３５】
このようにして、命令追加命令を用いることなく、命令追加処理Ｐａを行うことによって、パケットの処理命令部分に命令を追加することができる。なお、さらに命令追加命令を実行することによって、パケットの処理命令部分に命令を追加することもできる。
【０１３６】
前述したように、データ処理装置１において、各ＭＣＥは、データごとに、処理命令を含む拡張識別情報が付加されたパケットを生成し、各パケットは、拡張識別情報に応じて定まる宛先情報が示すＰＥによって取得され、当該ＰＥがパケットの命令を実行することによって、処理対象のパケットがそのビット列自体に基づいて配置され、既存のソフトウェア資産を略そのまま利用して、処理の並列性を向上させることができる。
【０１３７】
また、宛先情報が拡張識別情報に応じて動的に定まることによって、処理対象のパケットがそのビット列自体に基づいて動的に配置され、処理の並列性をより向上させることができる。
【０１３８】
また、拡張識別情報に基づいて擬似乱数を生成し、当該擬似乱数に応じて宛先情報を算出することによって、パケット分布を一様分布に近づけ、ＰＥの使用効率の向上を図ることができる。
【０１３９】
また、宛先情報が当該ＰＥを示さないパケットを他のＰＥに転送することによって、宛先情報が示すＰＥまでパケットを伝達することができる。
【０１４０】
また、各ＰＥは、取得パケットの最初に実行されるべき命令を実行し、拡張識別情報のうち、実行された命令の次に実行されるべき命令を最初に実行されるべき命令とすることによって、当該拡張識別情報を実行結果のデータに付加して新たなパケットを生成することができる。
【０１４１】
また、各ＰＥは、取得パケットの最初に実行されるべき命令を実行し、拡張識別情報から実行された命令を除くことによって、当該拡張識別情報を実行結果のデータに付加して新たなパケットを生成することができる。
【０１４２】
また、マスクされた拡張識別情報が取得パケットと一致する記憶パケットが存在するときには、当該一致する２つのパケットを組にしてＡＬＵ２６０に入力し、一致する記憶パケットが存在しないときには、取得パケットをバッファメモリ２４０に記憶させることによって、２項演算を行う２入力・１出力命令を実行することができる。
【０１４３】
また、取得パケットの最初に実行されるべき命令が１入力・１出力命令である場合には、取得パケットのみをＡＬＵ２６０に入力することによって、単項演算を行う１入力・１出力命令を実行することができる。
【０１４４】
また、取得パケットの拡張識別情報と記憶パケットの拡張識別情報との比較において、最初に実行されるべき命令の左右情報をマスクすることによって、非可換演算である２項演算を行う２入力・１出力命令を実行することができる。
【０１４５】
また、取得パケットのマスクされた拡張識別情報に基づいてハッシュ値を算出し、取得パケットをそのハッシュ値と対応付けてハッシュテーブルに格納することによって、マスクされた拡張識別情報が取得パケットと一致する記憶パケットの検索を効率よく行うことができる。
【０１４６】
また、マスクされた拡張識別情報に基づいて擬似乱数を生成し、当該擬似乱数に応じて宛先情報を算出することによって、マスクされた拡張識別情報が同一のパケットをＰＥまで伝達するとともに、ＰＥの使用効率の向上を図ることができる。
【０１４７】
また、隣接するＰＥ間のみを互いに接続することによって、配線遅延の問題を回避することができる。
【０１４８】
また、タイルプロセッサと同様にＰＥを行列状に配置し、各ＰＥは、宛先情報が示すＰＥに近づく方向に隣接するＰＥに当該パケットを転送することによって、パケットの移動経路を最短とし、ＰＥ数が増加しても動作速度を高速に保つことができる。
【０１４９】
また、各ＭＣＥが記憶装置６に記憶されている実行コードや中間コードからパケット列を逐次生成することによって、インタプリタ型の処理系を構築することができる。
【０１５０】
また、処理されるべき処理命令を含まないパケットをＭＣＥ  ＩＤが示すＭＣＥまで戻すことによって、各ＭＣＥは、当該パケットの処理ＩＤの処理が完了し、当該処理ＩＤを再び使用することができる。
【０１５１】
また、各ＭＣＥがパケットを逐次生成するデータ処理装置１を備えたデータ処理システムを構成することによって、インタプリタ型の並列コンピュータシステムにおける処理の並列性を向上させることができる。
【０１５２】
また、前述したように、図７または図１９に示したパケットの構成において、各パケットは、拡張識別情報に応じて定まる宛先情報が示すＰＥによって取得されて、命令が実行されることによって、処理対象のパケットがそのビット列自体に基づいて配置され、既存のソフトウェア資産を略そのまま利用して、処理の並列性を向上させることができる。
【０１５３】
また、ソースプログラムＰ０から予め生成されたパケット列を実行コードＰ２として記録媒体に記録することによって、当該実行コードＰ２をコンパイラ型の処理系において利用することができる。
【０１５４】
また、ソースプログラムＰ０から予め生成されたパケット列を実行コードＰ２として記憶装置６に記憶させることによって、各ＭＣＥは、当該実行コードＰ２を読み込んで利用することができる。
【０１５５】
また、展開後のパケット列のうち、識別情報部分の少なくとも一部を省略した（ヌル文字とした）中間パケット列を記録媒体に記録することによって、当該中間パケット列に省略されたＭＣＥ  ＩＤや処理ＩＤを設定したうえで、コンパイラ型の処理系において利用することができる。
【０１５６】
また、展開後のパケット列のうち、識別情報部分の少なくとも一部を省略した（ヌル文字とした）中間パケット列を記憶装置６に記憶させることによって、各ＭＣＥは、当該中間パケット列を読み込んで、省略されたＭＣＥ  ＩＤや処理ＩＤを設定したうえで利用することができる。
【０１５７】
また、各ＭＣＥが予め生成されたパケット列を読み込むデータ処理装置１を備えたデータ処理システムを構成することによって、コンパイラ型の並列コンピュータシステムにおける処理の並列性を向上させることができる。
【０１５８】
また、前述したように、各ＰＥは、データごとに、処理命令を含む拡張識別情報が付加されたパケットのうち、拡張識別情報に応じて定まる宛先情報が当該ＰＥを示すパケットを取得して命令を実行することによって、処理対象のパケットがそのビット列自体に基づいて配置され、既存のソフトウェア資産を略そのまま利用して、処理の並列性を向上させることができる。
【０１５９】
また、各ＰＥは、宛先情報が当該ＰＥを示さないパケットを他のＰＥに転送することによって、宛先情報が示すＰＥまでパケットを伝達することができる。
【０１６０】
また、各ＰＥは、取得パケットの最初に実行されるべき命令を実行し、実行結果のデータに、実行された命令の次に実行されるべき命令を最初に実行されるべき命令とする拡張識別情報を付加して新たなパケットを生成することによって、当該新たなパケットについても動的に配置して命令を実行することができる。
【０１６１】
なお、上記実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得るとともに、本発明にはその等価物も含まれる。
【符号の説明】
【０１６２】
１          データ処理装置
６          記憶装置
７          入力装置
８          出力装置
９          バス
１００〜１１５  ＰＥ（処理要素）
２１０      入出力部
２１１      宛先情報算出部
２１２      発光素子
２１３      受光素子
２１４ａ〜２１４ｄ  出力ポート
２１５ａ〜２１５ｄ  入力ポート
２３０      比較・選択部
２３１      ハッシュ値算出部
２４０      バッファメモリ
２５０ａ、２５０ｂ  オペランドバッファ
２６０      ＡＬＵ（算術論理演算部）
３００〜３０３  ＭＣＥ（メモリ制御要素）
４００      キャッシュメモリ
５００      通信路（伝送路）
５０１      透過材（コア）
５０２      反射材（クラッド）
５０３      吸収材
【図１】
2011138479.tif 000003
【図２】
2011138479.tif 000004
【図３】
2011138479.tif 000005
【図４】
2011138479.tif 000006
【図５】
2011138479.tif 000007
【図６】
2011138479.tif 000008
【図７】
2011138479.tif 000009
【図８】
2011138479.tif 000010
【図９】
2011138479.tif 000011
【図１０】
2011138479.tif 000012
【図１１】
2011138479.tif 000013
【図１２】
2011138479.tif 000014
【図１３】
2011138479.tif 000015
【図１４】
2011138479.tif 000016
【図１５】
2011138479.tif 000017
【図１６】
2011138479.tif 000018
【図１７】
2011138479.tif 000019
【図１８】
2011138479.tif 000020
【図１９】
2011138479.tif 000021
【図２０】
2011138479.tif 000022
【図２１】
2011138479.tif 000023
【手続補正書】
【提出日】平成23年4月15日(2011.4.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データごとに、当該データを識別する識別情報および当該データに対する１つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理する複数の処理部を備え、
前記複数の処理部は、
前記パケットのうち、前記拡張識別情報に応じて定まる宛先情報が当該処理部を示すパケットのみを取得する入出力部と、
前記入出力部によって取得された前記パケットの前記処理命令を実行する演算部と、
をそれぞれ有することを特徴とするデータ処理装置。
【請求項２】
前記入出力部は、前記パケットのうち、前記拡張識別情報のビット列に応じて定まる前記宛先情報が当該処理部を示すパケットのみを取得することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記入出力部は、前記パケットのうち、前記拡張識別情報のビット列に応じて動的に定まる前記宛先情報が当該処理部を示すパケットのみを取得することを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記入出力部は、前記拡張識別情報から生成される擬似乱数に応じて前記宛先情報を算出する宛先情報算出部を含むことを特徴とする請求項３に記載のデータ処理装置。
【請求項５】
前記入出力部は、前記パケットのうち前記宛先情報が当該処理部を示さないパケットを他の処理部に転送することを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記演算部は、前記入出力部によって取得された前記パケットの前記処理命令のうち最初に実行されるべき処理命令を実行し、当該実行によって生成されるデータに、実行された前記処理命令の次に実行されるべき処理命令を最初に実行されるべき処理命令とする前記拡張識別情報が付加されたパケットを生成して前記入出力部に入力することを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
前記演算部は、前記入出力部によって取得された前記パケットの前記処理命令のうち最初に実行されるべき処理命令を実行し、当該実行によって生成されるデータに、実行された前記処理命令を除く前記拡張識別情報が付加されたパケットを生成して前記入出力部に入力することを特徴とする請求項６に記載のデータ処理装置。
【請求項８】
前記処理命令は、２つのパケットの前記データをそれぞれ左側および右側オペランドとする２項演算を行う処理命令を含み、
前記複数の処理部は、
前記パケットを記憶する記憶部と、
前記入出力部によって取得された前記パケットの前記拡張識別情報と前記記憶部に記憶されている前記パケットの前記拡張識別情報とを比較して、当該取得されたパケットおよび当該記憶されているパケットから前記演算部に入力するパケットを選択する比較・選択部と、
をそれぞれさらに有し、
前記比較・選択部は、前記入出力部によって取得された前記パケットの最初に実行されるべき処理命令が前記２項演算を行う処理命令である場合に、前記拡張識別情報の所定の部分が当該取得されたパケットと一致するパケットが前記記憶部に記憶されているときには、当該所定の部分が一致する２つのパケットを組にして前記演算部に入力し、前記拡張識別情報の前記所定の部分が当該取得されたパケットと一致するパケットが前記記憶部に記憶されていないときには、当該取得されたパケットを前記記憶部に記憶させることを特徴とする請求項６または請求項７に記載のデータ処理装置。
【請求項９】
前記処理命令は、１つのパケットの前記データをオペランドとする単項演算を行う処理命令を含み、
前記比較・選択部は、前記入出力部によって取得された前記パケットの最初に実行されるべき処理命令が前記単項演算を行う処理命令である場合には、当該取得されたパケットを前記演算部に入力することを特徴とする請求項８に記載のデータ処理装置。
【請求項１０】
前記処理命令は、前記２項演算が非可換演算である場合に前記データを前記左側または右側オペランドの何れとするかを示す左右情報を含み、
前記拡張識別情報の前記所定の部分は、当該拡張識別情報のうち最初に実行されるべき処理命令の前記左右情報以外の部分であることを特徴とする請求項８または請求項９に記載のデータ処理装置。
【請求項１１】
前記記憶部は、前記パケットが格納されるハッシュテーブルを含み、
前記比較・選択部は、前記入出力部によって取得された前記パケットの前記拡張識別情報の前記所定の部分に基づいてハッシュ値を算出するハッシュ値算出部を含み、当該取得されたパケットを前記記憶部に記憶させる場合には、当該取得されたパケットを前記ハッシュ値と対応付けて前記ハッシュテーブルに格納することを特徴とする請求項８ないし請求項１０の何れかに記載のデータ処理装置。
【請求項１２】
前記宛先情報算出部は、前記拡張識別情報の前記所定の部分に基づいて前記擬似乱数を生成することを特徴とする請求項８ないし請求項１１の何れかに記載のデータ処理装置。
【請求項１３】
前記入出力部は、前記パケットのうち前記宛先情報が当該処理部を示さないパケットを、当該処理部に隣接する処理部に転送することを特徴とする請求項５ないし請求項１２の何れかに記載のデータ処理装置。
【請求項１４】
前記複数の処理部は、行列状に配置され、
前記入出力部は、前記パケットのうち前記宛先情報が当該処理部を示さないパケットを、前記宛先情報が示す処理部に近づく方向に隣接する処理部に転送することを特徴とする請求項１３に記載のデータ処理装置。
【請求項１５】
記憶装置に記憶されているプログラムから前記パケットを生成する制御部をさらに備えることを特徴とする請求項１ないし請求項１４の何れかに記載のデータ処理装置。
【請求項１６】
前記制御部は、前記識別情報が当該制御部を示す発行元情報を含む前記パケットを生成して、前記複数の処理部の何れかに発行し、
前記入出力部は、前記パケットが、処理されるべき前記処理命令を含まない場合には、当該パケットを前記発行元情報が示す制御部に戻すように転送することを特徴とする請求項１５に記載のデータ処理装置。
【請求項１７】
請求項１５または請求項１６に記載のデータ処理装置と、
前記プログラムが記憶されている前記記憶装置と、
前記データおよび前記プログラムを含む情報を入出力する入出力装置と、
を備えることを特徴とするデータ処理システム。
【請求項１８】
データごとに、当該データを識別する識別情報および当該データに対する１つ以上の処理命令を示す命令情報を含む拡張識別情報が付加され、
データ処理装置の複数の処理部のうち、前記拡張識別情報に応じて定まる宛先情報が示す処理部によって取得されて前記処理命令が実行されることを特徴とするパケット。
【請求項１９】
前記データ処理装置の前記複数の処理部のうち、前記拡張識別情報のビット列に応じて定まる前記宛先情報が示す処理部によって取得されて前記処理命令が実行されることを特徴とする請求項１８に記載のパケット。
【請求項２０】
請求項１８または請求項１９に記載のパケットが記録された記録媒体。
【請求項２１】
請求項１８または請求項１９に記載のパケットが記憶されている記憶装置。
【請求項２２】
請求項１８または請求項１９に記載のパケットのうち、前記識別情報の少なくとも一部が前記データ処理装置の制御部によって付加される中間パケットが記録された記録媒体。
【請求項２３】
請求項１８または請求項１９に記載のパケットのうち、前記識別情報の少なくとも一部が前記データ処理装置の制御部によって付加される中間パケットが記憶されている記憶装置。
【請求項２４】
請求項２１または請求項２３に記載の記憶装置と、
前記データ処理装置と、
前記データを含む情報を入出力する入出力装置と、
を備えることを特徴とするデータ処理システム。
【請求項２５】
複数の処理部が、それぞれ、
データごとに、当該データを識別する識別情報および当該データに対する１つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットのうち、
前記拡張識別情報に応じて定まる宛先情報が当該処理部を示すパケットのみを取得し、当該パケットの前記処理命令を実行することを特徴とするデータ処理方法。
【請求項２６】
前記複数の処理部が、それぞれ、
前記パケットのうち、
前記拡張識別情報のビット列に応じて定まる前記宛先情報が当該処理部を示すパケットのみを取得し、当該パケットの前記処理命令を実行することを特徴とする請求項２５に記載のデータ処理方法。
【請求項２７】
前記複数の処理部が、それぞれ、
前記パケットのうち、
前記宛先情報が当該処理部を示さないパケットを他の処理部に転送することを特徴とする請求項２６に記載のデータ処理方法。
【請求項２８】
前記複数の処理部が、それぞれ、
前記宛先情報が当該処理部を示すパケットを取得した場合には、当該パケットの前記処理命令のうち最初に実行されるべき処理命令を実行するとともに、当該実行によって生成されるデータに、実行された前記処理命令の次に実行されるべき処理命令を最初に実行されるべき処理命令とする前記拡張識別情報が付加されたパケットを生成し、当該生成されたパケットの前記宛先情報に応じて当該生成されたパケットを転送または取得することを特徴とする請求項２７に記載のデータ処理方法。