(57)【要約】  並列コンピュータのオーバーヘッドを小さくし、全体としての処理速度を向上させる。  互いに異なる周波数帯域が設定され、データごとに、当該データに対する１つ以上の処理命令を示す命令情報を含む処理情報が付加されたパケットを処理する複数の処理部を備え、前記複数の処理部は、前記パケットのうち、前記処理情報に応じて定まる宛先が当該処理部を示すパケットのみを取得する入出力部と、前記入出力部によって取得された前記パケットの前記処理命令を実行する演算部と、をそれぞれ有し、前記入出力部は、当該処理部に設定された周波数帯域の電磁波のみを受信して、前記パケットを取得する受信部を含む。
2011068018.tif 000002
【特許請求の範囲】
【請求項１】
互いに異なる周波数帯域が設定され、データごとに、当該データに対する１つ以上の処理命令を示す命令情報を含む処理情報が付加されたパケットを処理する複数の処理部を備え、
前記複数の処理部は、
前記パケットのうち、前記処理情報に応じて定まる宛先が当該処理部を示すパケットのみを取得する入出力部と、
前記入出力部によって取得された前記パケットの前記処理命令を実行する演算部と、
をそれぞれ有し、
前記入出力部は、当該処理部に設定された周波数帯域の電磁波のみを受信して、前記パケットを取得する受信部を含むことを特徴とするデータ処理装置。
【請求項２】
前記入出力部は、前記処理情報に応じて定まる宛先の処理部に設定された周波数帯域の電磁波で前記パケットを送信する送信部をさらに含むことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記入出力部は、前記処理情報に応じて、前記パケットの宛先の処理部を示す宛先情報を算出する宛先情報算出部をさらに含み、
前記送信部は、前記宛先情報に対応する周波数帯域の電磁波で前記パケットを送信することを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記宛先情報算出部は、前記処理情報から生成される擬似乱数に応じて前記宛先情報を算出することを特徴とする請求項３に記載のデータ処理装置。
【請求項５】
前記演算部は、前記受信部によって取得された前記パケットの前記処理命令のうち最初に実行されるべき処理命令を実行し、当該実行によって生成されるデータに、実行された前記処理命令の次に実行されるべき処理命令を最初に実行されるべき処理命令とする前記処理情報が付加されたパケットを生成して前記宛先情報算出部に入力することを特徴とする請求項３または請求項４に記載のデータ処理装置。
【請求項６】
前記宛先情報算出部は、前記演算部によって生成された前記パケットのうち、前記宛先情報が当該処理部を示すパケットの前記処理命令を前記演算部に実行させ、前記宛先情報が当該処理部を示さないパケットを前記送信部から送信させることを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
前記入出力部は、当該処理部の前記受信部に対する複数の送信要求を調停することを特徴とする請求項２ないし請求項６の何れかに記載のデータ処理装置。
【請求項８】
前記送信部は、
前記パケットを送信する場合には、当該パケットの宛先の処理部に設定された周波数帯域の電磁波でＲＴＳ（Request to Send：送信要求）パケットを送信して、当該送信したＲＴＳパケットに対するＣＴＳ（Clear to Send：送信許可）パケットを前記受信部が受信した後に前記パケットの送信を開始し、
前記受信部が前記ＲＴＳパケットを受信した場合には、当該受信したＲＴＳパケットの送信元の処理部に設定された周波数帯域の電磁波で前記ＣＴＳパケットを送信することを特徴とする請求項７に記載のデータ処理装置。
【請求項９】
前記電磁波は、紫外線、可視光線、もしくは赤外線、またはそれらの組み合わせの光であり、
前記複数の処理部には、互いに異なる波長域が設定され、
前記受信部は、当該処理部に設定された波長域の光のみを受光して、前記パケットを取得し、
前記送信部は、前記処理情報に応じて定まる宛先の処理部に設定された波長域の光で前記パケットを送信することを特徴とする請求項２ないし請求項８の何れかに記載のデータ処理装置。
【請求項１０】
前記処理情報は、前記データを識別する識別情報をさらに含むことを特徴とする請求項１ないし請求項９の何れかに記載のデータ処理装置。
【請求項１１】
前記パケットを前記複数の処理部の何れかに発行する制御部をさらに備え、
前記制御部は、前記パケットを発行する場合に、前記パケットの宛先の処理部に設定された周波数帯域の電磁波で前記パケットを送信することを特徴とする請求項１０に記載のデータ処理装置。
【請求項１２】
請求項１１に記載のデータ処理装置と、
前記制御部によって前記パケットに変換されるプログラム、前記パケットのうち前記識別情報の少なくとも一部が前記制御部によって付加される中間パケット、または前記パケットが記憶されている記憶装置と、
前記データ、および前記プログラム、前記中間パケット、または前記パケットを含む情報を入出力する入出力装置と、
を備えることを特徴とするデータ処理システム。
【請求項１３】
互いに異なる周波数帯域が設定された複数の処理部が、それぞれ、
当該処理部に設定された周波数帯域の電磁波のみを受信して、データごとに、当該データに対する１つ以上の処理命令を示す命令情報を含む処理情報が付加されたパケットを取得し、当該パケットの前記処理命令を実行することを特徴とするデータ処理方法。
【請求項１４】
前記複数の処理部が、それぞれ、
前記処理情報に応じて定まる宛先の処理部に設定された周波数帯域の電磁波で前記パケットを送信することを特徴とする請求項１３に記載のデータ処理方法。
【請求項１５】
前記複数の処理部が、それぞれ、
前記処理情報から生成される擬似乱数に応じて、前記パケットの宛先の処理部を示す宛先情報を算出し、前記宛先情報に対応する周波数帯域の電磁波で前記パケットを送信することを特徴とする請求項１４に記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理システム、およびデータ処理方法に関する。
【背景技術】
【０００２】
コンピュータアーキテクチャとして、記憶装置（メモリ）から命令を順次読み出して（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）やリング発振器などを用いた光学フィルタによって、設定された波長域の光のみを受光するように構成されている。本実施形態では、一例として、図２に示すように、ＰＥ１００ないし１１５には、それぞれ波長域λ０ないしλ１５が設定され、ＭＣＥ３００ないし３０３には、それぞれ波長域λ１６ないしλ１９が設定されているものとする。
【００３５】
そして、各発光素子ＬＥは、情報伝達先のＰＥまたはＭＣＥに設定された波長域の光信号を出射することによって、選択した１つのＰＥまたはＭＣＥに情報を伝達することができる。なお、発光素子が出射する光の波長を可変とする方法として、例えば特許文献２では、３端子型結晶シリコン素子の制御電極に印加する電位によって波長を制御する方法が開示されている。また、互いに異なる波長域の光を出射する複数の発光素子を切り替えて用いることによっても、波長を可変とすることができる。
【００３６】
ここで、図４を参照して、図３に示した通信路において、光を用いて情報伝達を行う場合における、データ処理装置１の送受信動作の具体例について説明する。以下、各ＰＥおよび各ＭＣＥを、設定されている識別番号ａと対応付けて、ＰＥ（ａ）およびＭＣＥ（ａ）のように称することとする。
【００３７】
本実施形態のデータ処理装置１において、後述するように、ＰＥ間やＰＥおよびＭＣＥ間の情報伝達は、パケットを送受信することによって行われる。また、本実施形態の光を用いた情報伝達においては、１つのＰＥまたはＭＣＥに対して複数のＰＥまたはＭＣＥから同時にパケットが送信される場合、これらは同じ波長域の光で送信される。そのため、データ処理装置１は、競合によって情報が失われたり、変更されたりしないように調停（仲裁）する、アービトレーション機能を備えている。
【００３８】
図４の最初のアービトレーションフェーズにおいて、ＰＥ（２）およびＰＥ（４）から波長域λ０の光でＲＴＳ（Request to Send：送信要求）パケットが送信され、ＰＥ（０）は、ＰＥ（４）からのＲＴＳパケットを先に受信している。この場合、ＰＥ（０）は、ＰＥ（４）に対して波長域λ４の光でＣＴＳ（Clear to Send：送信許可）パケットを送信することとなる。そして、ＰＥ（４）は、ＣＴＳパケットを受信した後、データ転送フェーズにおいて、ＰＥ（０）に対して波長域λ０の光で通常の（データ）パケットを送信する。
【００３９】
さらに、次のアービトレーションフェーズにおいては、ＰＥ（２）およびＰＥ（３）から波長域λ０の光でＲＴＳパケットが送信され、ＰＥ（０）は、ＰＥ（２）からのＲＴＳパケットを先に受信している。この場合、ＰＥ（０）は、ＰＥ（２）に対して波長域λ２の光でＣＴＳパケットを送信することとなる。そして、ＰＥ（２）は、ＣＴＳパケットを受信した後、データ転送フェーズにおいて、ＰＥ（０）に対して波長域λ０の光で通常の（データ）パケットを送信する。
【００４０】
このようにして、各発光素子ＬＥが情報伝達先のＰＥまたはＭＣＥに設定された波長域の光でパケットを送信し、各受光素子ＬＲが設定された波長域の光のみを受光することによって、パケットを取得することができる。以下、ＲＴＳ／ＣＴＳパケット以外の通常の（データ）パケットを、単にパケットと称することとする。
【００４１】
なお、各ＰＥおよび各ＭＣＥに設定される波長域は、紫外領域から赤外領域までのいずれを用いてもよい。しかしながら、透過材５０１および反射材５０２に用いられる材料によっては、紫外線を吸収し、透過率が低下するため、可視光領域から赤外領域までの波長を用いることが望ましい。
【００４２】
また、データ処理装置１における各ＰＥの配置は、タイルプロセッサと同様の行列状の配置に限定されるものではない。例えば図５に示すように、面積が大きいキャッシュメモリ４００を中央に配置し、周囲にＰＥおよびＭＣＥを配置してもよい。この場合、後述するように、パケットは各ＭＣＥから発行されるため、発行元のＭＣＥから発行先のＰＥまでの距離を平均化することができる。
【００４３】
＝＝＝データ処理装置の動作＝＝＝
次に、図６ないし図１１を適宜参照して、本実施形態におけるデータ処理装置の動作について説明する。
【００４４】
キャッシュメモリ４００は、キャッシュを行いつつ、ＭＣＥ３００ないし３０３と記憶装置６との間の入出力を制御する。したがって、記憶装置６に記憶されているプログラムやデータなどは、キャッシュメモリ４００を介してＭＣＥ３００ないし３０３に読み込まれる。
【００４５】
ここで、ソースプログラムとデータ処理装置１で処理されるプログラム（実行コード）との関係の一例を図６に示す。高級言語で記述されたソースプログラムＰ０は、実行コードＰ１に予めコンパイルされたうえで記憶装置６に記憶されており、ＭＣＥ３００ないし３０３には、実行コードＰ１が読み込まれる。なお、図６においては、ソースプログラムＰ０の一例として、Ｃ＋＋言語で記述された、配列ｓｐ［１０２４］の各要素を２で除算した値を配列ｄｐ［１０２４］に格納する処理が示されている。また、実行コードＰ１は、機械語プログラムではなく、機械語と略１対１に対応するアセンブリ言語で記述されたプログラムとしてもよい。
【００４６】
ＭＣＥ３００ないし３０３は、読み込まれた実行コードＰ１から、データフロー図に基づいて、後述するパケット列を生成する。なお、各ＭＣＥは、データフロー図自体を生成する必要はないが、本実施形態においては、説明の便宜上、まずデータフロー図を生成し、次にデータフロー図に基づいてパケット列を生成するものとする。
【００４７】
ここで、データ処理装置１で用いられる命令セットの一例を図７に示す。図７において、各命令は、２入力・１出力命令と１入力・１出力命令とに大別されている。これらのうち、２入力・１出力命令は、入力された２つのデータをそれぞれ左側および右側オペランドとして２項演算を行う命令である。一方、１入力・１出力命令は、入力された１つのデータをオペランドとして単項演算を行う命令である。また、図７に示すように、各命令に対して、オペレータ（演算子）に相当する記号と機械語における１６進表記とが設定されており、これらはデータフロー図やパケット列についての説明で用いられる。
【００４８】
まず、２入力・１出力命令について説明する。
【００４９】
２つのデータ（ＡおよびＢ）の加算結果（Ａ＋ＢまたはＢ＋Ａ）を出力する加算命令に対しては、記号「＋」と１６進表記１０Ｈとが設定されている。一方、２つのデータ（ＬおよびＲ）の減算結果（Ｌ−Ｒ）を出力する減算命令の場合、減算は交換法則が成立しない非可換演算であるため、各データを左側または右側オペランドの何れとするかを示す左右情報（方向情報）を必要とする。そのため、減算命令に対する記号「−」には、さらに左右情報「Ｌ」または「Ｒ」が付加され、それぞれ１６進表記１２Ｈまたは１３Ｈが設定されている。
【００５０】
なお、左右情報「Ｌ」は、左側オペランドとなるデータを示し、左右情報「Ｒ」は、右側オペランドとなるデータを示している。また、当該命令セットにおいては、各命令のＬＳＢ（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：算術論理演算部）２６０をそれぞれ含んで構成されている。
【００７５】
入出力部２１０は、宛先情報算出部２１１、送信部２１２、および受信部２１３を含む。また、送信部２１２および受信部２１３は、それぞれ発光素子ＬＥおよび受光素子ＬＲを備えており、これらを介して、データ転送フェーズにおけるパケットおよびアービトレーションフェーズにおけるＲＴＳ／ＣＴＳパケットを送受信している。さらに、送信部２１２および受信部２１３は、読み出し命令によって記憶装置６から読み出されたデータや、書き込み命令によって記憶装置６に書き込まれるデータなども、データ転送フェーズにおいてパケットとして送受信することとなる。
【００７６】
なお、パケットを送受信する際の光信号の変調方式としては、例えばＯＯＫ（On-Off Keying：オン・オフ変調）などを用いることができる。また、ＰＥおよびＭＣＥ間でパケットの送受信を行うため、ＭＣＥ３００ないし３０３も、入出力部２１０と同様の入出力部を備えている。
【００７７】
また、データ処理装置１の各ＰＥおよび各ＭＣＥは、本実施形態に示したように、１つの発光素子ＬＥを備える構成に限定されるものではない。
【００７８】
例えば図１３に示すように、各ＰＥおよび各ＭＣＥに共通の発光素子ＬＥを備えた構成としてもよい。図１３において、発光素子ＬＥから出射された広い波長域の光が光導波路ＷＧを介して各ＰＥおよび各ＭＣＥに導かれている。また、各ＰＥおよび各ＭＣＥは、光学フィルタＦＬによって情報伝達先のＰＥまたはＭＣＥに設定された波長域のみを透過させ、光スイッチＳＷによってＯＯＫなどの変調を行う。そして、変調された光信号が光導波路ＷＧを介して透過材５０１の領域に導かれる。なお、図１３においては、他のＰＥまたはＭＣＥからの光信号も、光導波路ＷＧを介して受光素子ＬＲに入射する構成となっている。
【００７９】
また、各ＰＥおよび各ＭＣＥが複数の発光素子ＬＥを備え、複数のチャネルを使用して、ＰＥ間やＰＥおよびＭＣＥ間でパケットを送受信する構成としてもよい。この場合、波長可変の発光素子を複数備えるほか、例えば図１４に示すように、各送信部が、設定された波長域λ０ないしλ１９の光を出射する波長固定の発光素子を備え、これらを切り替えて用いる構成とすることもできる。
【００８０】
ここで、図１５を参照して、各ＰＥおよび各ＭＣＥが複数のチャネルを使用して情報伝達を行う場合における、データ処理装置１の送受信動作の具体例について説明する。なお、図１５においては、一例として、各ＰＥおよび各ＭＣＥは、光スイッチなどの変調手段を少なくとも４つ備え、同時に４つのチャネルを使用している。また、アービトレーションフェーズは、ＲＴＳパケットを送受信するＲＴＳフレームとＣＴＳパケットを送受信するＣＴＳフレームとからなり、ＣＴＳフレームは、さらに、各ＰＥおよび各ＭＣＥに対応するタイムスロットに時分割されている。
【００８１】
図１５のＲＴＳフレームにおいて、ＰＥ（０）から波長域λ１ないしλ４の光でＲＴＳパケットが送信され、これらのＲＴＳパケットは、それぞれＰＥ（１）ないしＰＥ（４）によって受信されている。また、ＰＥ（１）ないしＰＥ（４）のうちＰＥ（２）およびＰＥ（４）は、ＣＴＳフレームのそれぞれに対応するタイムスロットにおいて、ＰＥ（０）に対して波長域λ０の光でＣＴＳパケットを送信している。この場合、ＰＥ（０）は、それぞれのＣＴＳパケットを受信した後、データ転送フェーズにおいて、ＰＥ（２）およびＰＥ（４）に対してそれぞれ波長域λ２およびλ４の光でパケットを送信することとなる。
【００８２】
受信部２１３によって取得されたパケットは、比較・選択部２３０に入力されている。また、比較・選択部２３０は、ハッシュ値算出部２３１を含み、記憶部に相当するバッファメモリ２４０との間でパケットを入出力している。さらに、比較・選択部２３０からは、オペランドバッファ２５０ａおよび２５０ｂを介して、それぞれ左側および右側オペランドとなるデータを有するパケットが、演算部に相当するＡＬＵ２６０に入力されている。そして、ＡＬＵ２６０によって新たに生成されたパケットは、宛先情報算出部２１１に入力されている。
【００８３】
宛先情報算出部２１１から送信部２１２には、新たに生成されたパケットとともに、後述する宛先情報に対応する波長域情報ＷＬが入力されている。また、受信部２１３がＲＴＳパケットを受信した場合には、受信部２１３から送信部２１２に、当該ＲＴＳパケットの送信元のＰＥまたはＭＣＥに設定された波長域情報ＷＬが入力されることとなる。さらに、受信部２１３がＣＴＳパケットを受信した場合には、受信部２１３から送信部２１２に、当該ＣＴＳパケットが入力されることとなる。そして、送信部２１２からは、波長域情報ＷＬが示す波長域の光で新たに生成されたパケットやＲＴＳ／ＣＴＳパケットが送信されている。
【００８４】
なお、新たに生成されたパケットの宛先情報が当該ＰＥを示している場合には、当該パケットは、宛先情報算出部２１１から比較・選択部２３０に入力されることとなる。
【００８５】
＝＝＝ＰＥ（処理要素）の動作＝＝＝
次に、図１６ないし図１７を適宜参照して、本実施形態におけるＰＥの動作について説明する。
【００８６】
入出力部２１０の受信部２１３は、当該ＰＥに設定された波長域λｎの光のみを受光して、パケットを取得する。ここで、各パケットは、送信元のＰＥまたはＭＣＥの宛先情報算出部２１１によって算出された宛先情報に対応する波長域の光で送信されており、当該波長域が設定されたＰＥまたはＭＣＥのみが受信することができる。したがって、各ＰＥおよび各ＭＣＥは、宛先情報が示す、各パケットを処理すべきＰＥのみにパケットを伝達することができる。
【００８７】
なお、宛先情報は、各パケットの拡張識別情報部分から求めることができる。ここで、図１６を参照して、図１０においてＭＣＥ  ＩＤ＝１、かつ処理ＩＤ＝１である、最初の５パケットの宛先情報の算出方法について説明する。以下、図１６に示すように、当該５パケットをそれぞれパケットＰ１ないしＰ５とする。
【００８８】
宛先情報算出部２１１は、まず、各パケットから拡張識別情報部分のみを抽出し（図１６中段）、各拡張識別情報のうち、最初に実行されるべき命令の左右情報をマスクする（図１６下段）。前述したように、本実施形態では、最初に実行されるべき命令がパケットの最後尾に配置され、各命令のＬＳＢが左右情報専用に割り当てられている。したがって、拡張識別情報の最後の１ビットを０または１（図１６においては０）でマスクすればよい。なお、拡張識別情報にヌル文字を含めてもよく、この場合には、ヌル文字直前の１ビット以降をマスクすればよい。
【００８９】
宛先情報算出部２１１は、次に、上記のマスクされた拡張識別情報に基づいて擬似（疑似）乱数を生成し、当該擬似乱数に応じて、宛先情報を算出する。例えば、０ないし１５の４ビットの値を宛先情報として算出すると、当該宛先情報は、図２に示した各ＰＥに設定されている識別番号と対応付けることができる。図１６下段においては、当該識別番号をａ１ないしａ３とし、これらと対応付けて宛先情報を表している。
【００９０】
擬似乱数は、物理乱数と異なり、再現性があるため、マスクされた拡張識別情報が同一のパケットからは同一の擬似乱数が生成され、同一の宛先情報が算出される。例えば、図１６下段に示すように、マスクされた拡張識別情報が同一であるパケットＰ１およびＰ２からは、同一の宛先情報ＰＥ（ａ１）が算出されている。また、同様に、パケットＰ３およびＰ４からは、同一の宛先情報ＰＥ（ａ２）が算出されている。
【００９１】
なお、擬似乱数の生成には、公知の方法を用いることができる。宛先情報の算出時間の観点からは、ＬＣＧ（Linear Congruential Generator：線形合同法）やＬＦＳＲ（Linear Feedback Shift Register：線形帰還シフトレジスタ）など、高速な生成方法を用いることが望ましい。
【００９２】
また、宛先情報算出部２１１は、予め生成された擬似乱数テーブルを参照して宛先情報を算出する構成としてもよい。この場合、宛先情報算出部２１１は、パケットごとに擬似乱数を生成する必要がないため、宛先情報の算出時間を短縮することができる。なお、このような構成においては、各ＰＥの宛先情報算出部が同一の擬似乱数テーブルを備えるか、各ＰＥの宛先情報算出部が共通の擬似乱数テーブルを読み出す必要がある。
【００９３】
一方、ＰＥの使用効率の観点からは、パケット分布が一様となるよう、擬似乱数が一様分布に近いほど望ましい。また、確率変数族が予測不可能であることは、一様分布であることと等価であるので、ＣＳＰＲＮＧ（Cryptographically Secure Pseudo-Random Number Generator：暗号論的擬似乱数生成器）を用いることによって、ＰＥの使用効率の向上を図ることができる。しかしながら、命令によっても各パケットの処理時間は異なるため、実際には、擬似乱数が一様分布であっても、パケット分布が一様とはならないこともある。
【００９４】
そのため、宛先情報の算出時間が長くなり過ぎない程度で、一様分布に近い擬似乱数を用いることが望ましい。例えば、宛先情報の算出時間が、後述するハッシュ値の算出時間よりも長くなることは望ましくない。
【００９５】
以上のように、本実施形態のデータ処理装置は、実行ノードに相当するＰＥがタイルプロセッサと同様に行列状に配置されているものの、処理対象のパケットがそのビット列自体に基づいて動的に配置される点で、ＥＤＧＥアーキテクチャと大きく異なっている。
【００９６】
比較・選択部２３０は、受信部２１３によって取得されたパケット（以下、取得パケットと称する）のうち、処理可能なものをＡＬＵ２６０に入力する。また、比較・選択部２３０は、処理可能でないパケットをバッファメモリ２４０に記憶させるとともに、バッファメモリ２４０に記憶されているパケット（以下、記憶パケットと称する）の読み出しを行う。
【００９７】
より具体的には、取得パケットの最初に実行されるべき（最後尾の）命令が１入力・１出力命令である場合、比較・選択部２３０は、取得パケットのみを、オペランドバッファ２５０ａまたは２５０ｂを介してＡＬＵ２６０に入力する。
【００９８】
一方、取得パケットの最初に実行されるべき（最後尾の）命令が２入力・１出力命令である場合、比較・選択部２３０は、前述したマスクされた拡張識別情報が取得パケットと一致するパケットを、記憶パケットから検索する。そして、一致する記憶パケットが存在するときには、比較・選択部２３０は、当該一致する２つのパケットを組にして、オペランドバッファ２５０ａおよび２５０ｂを介してＡＬＵ２６０に入力する。また、一致する記憶パケットが存在しないときには、比較・選択部２３０は、取得パケットをバッファメモリ２４０に記憶させる。
【００９９】
なお、マスクされた拡張識別情報が取得パケットと一致する記憶パケットの検索を効率よく行うため、本実施形態では、バッファメモリ２４０は、ハッシュテーブルを含む。また、比較・選択部２３０は、まず、ハッシュ値算出部２３１が、取得パケットからハッシュ値を算出する。当該ハッシュ値は、宛先情報の場合と同様に、取得パケットのマスクされた拡張識別情報に基づいて算出される。そして、比較・選択部２３０は、取得パケットをバッファメモリ２４０に記憶させる場合には、取得パケットをそのハッシュ値と対応付けてハッシュテーブルに格納する。
【０１００】
なお、ハッシュテーブルには、公知の実装方法を用いることができる。図１７は、バッファメモリ２４０に実装されるハッシュテーブルの一例を示している。当該ハッシュテーブルでは、ハッシュ衝突の解決方法として、オープンアドレス法（open addressing）を用い、再ハッシュ手順として、線形探索法（linear probing）を用いている。
【０１０１】
図１７においては、一例として、ハッシュ値がｎ＋３となるパケット１が格納された後に、ハッシュ値がｎとなるパケット２ないし５が格納された場合を示している。パケット１は、ルート配列［２５６］の要素ｎ＋３の位置に格納され、フラグ「１」およびカウント値「１」が設定されている。また、パケット２ないし５は、それぞれ要素ｎ、ｎ＋１、ｎ＋２、ｎ＋４の位置に格納され、要素ｎの位置にフラグ「１」およびカウント値「４」が設定されている。
【０１０２】
ＡＬＵ２６０は、オペランドバッファ２５０ａおよび２５０ｂを介して入力されるオペランドに対して、算術演算（整数演算および／または浮動小数点演算）や論理演算などを行い、演算結果を出力する。より具体的には、ＡＬＵ２６０は、入力されたパケットのデータに対して、最初に実行されるべき（最後尾の）命令を実行し、実行結果のデータに、実行された命令を除いた拡張識別情報を付加して新たなパケットを生成し、宛先情報算出部２１１に入力する。
【０１０３】
宛先情報算出部２１１は、前述した方法によって、新たに生成されたパケットの宛先情報を算出する。また、宛先情報算出部２１１は、算出された宛先情報が当該ＰＥを示している場合には、新たに生成されたパケットを再び比較・選択部２３０に入力し、比較・選択部２３０は、当該パケットを取得パケットとして処理することとなる。一方、宛先情報算出部２１１は、算出された宛先情報が当該ＰＥを示していない場合には、新たに生成されたパケットとともに、算出された宛先情報に対応する波長域情報ＷＬを送信部２１２に入力する。
【０１０４】
送信部２１２は、新たに生成されたパケットが入力されると、まず、アービトレーションフェーズにおいて、波長域情報ＷＬが示す波長域の光でＲＴＳパケットを送信する。そして、送信部２１２は、当該ＲＴＳパケットに対するＣＴＳパケットを受信部２１３が受信した後のデータ転送フェーズにおいて、当該波長域情報ＷＬが示す波長域の光で新たに生成されたパケットを送信する。
【０１０５】
なお、受信部２１３は、アービトレーションフェーズにおいて、他のＰＥまたはＭＣＥからのＲＴＳパケットを受信した場合、当該ＲＴＳパケットの送信元のＰＥまたはＭＣＥに設定された波長域を示す波長域情報ＷＬを送信部２１２に入力する。そして、送信部２１２は、当該アービトレーションフェーズにおいて、当該波長域情報ＷＬが示す波長域の光でＣＴＳパケットを送信する。
【０１０６】
このようにして、各ＰＥは、当該ＰＥに設定された波長域λｎの光のみを受光してパケットを取得し、取得パケットのデータに対して最初に実行されるべき（最後尾の）命令を実行する。そして、実行結果のデータに実行された命令を除いた拡張識別情報を付加して新たなパケットを生成し、生成されたパケットの宛先情報に対応する波長域の光で送信する。
【０１０７】
なお、本実施形態では、生成されたパケットの宛先情報が当該ＰＥを示している場合には、当該パケットは、送信部２１２から送信されず、取得パケットとして処理される。しかしながら、宛先情報が当該ＰＥを示すパケットも送信部２１２から送信し、当該ＰＥの受信部２１３によって取得されるようにしてもよい。
【０１０８】
また、前述したように、各パケットは適宜符号化され得るが、符号化および復号は、例えば、それぞれ送信部２１２および受信部２１３において行うことができる。すなわち、受信部２１３によって取得されたパケットは、復号されたうえで比較・選択部２３０に入力される。一方、ＡＬＵ２６０によって新たに生成されたパケットは、宛先情報算出部２１１において宛先情報の算出が行われた後、送信部２１２によって符号化されたうえで送信される。
【０１０９】
＝＝＝データ処理装置の動作の具体例＝＝＝
ここで、図１８を参照して、図１６に示したパケットＰ１ないしＰ５に対するデータ処理装置１の動作の具体例について説明する。
【０１１０】
前述したように、パケットＰ１およびＰ２は、同一の宛先情報ＰＥ（ａ１）が算出されているため、識別番号ａ１が設定されているＰＥによって取得され、最後尾の加算命令Ｉ４が実行される。そして、実行結果のデータｄｐ＋０に、加算命令Ｉ４を除いた拡張識別情報が付加され、新たなパケットＰ６が生成される。なお、パケットＰ６から算出される宛先情報をＰＥ（ａ４）とする。
【０１１１】
同様に、パケットＰ３およびＰ４は、同一の宛先情報ＰＥ（ａ２）が算出されているため、識別番号ａ２が設定されているＰＥによって取得され、最後尾の加算命令Ｉ１が実行される。そして、実行結果のデータｓｐ＋０に、加算命令Ｉ１を除いた拡張識別情報が付加され、新たなパケットＰ７が生成される。なお、パケットＰ７から算出される宛先情報をＰＥ（ａ５）とする。
【０１１２】
パケットＰ７は、識別番号ａ５が設定されているＰＥによって取得され、最後尾の読み出し命令Ｉ２（１入力・１出力命令）が実行される。そして、実行結果のデータ＊（ｓｐ＋０）に、読み出し命令Ｉ２を除いた拡張識別情報が付加され、新たなパケットＰ８が生成される。なお、パケットＰ８は、マスクされた拡張識別情報がパケットＰ５と同一になるため、パケットＰ５と同一の宛先情報ＰＥ（ａ３）が算出される。
【０１１３】
パケットＰ８およびＰ５は、識別番号ａ３が設定されているＰＥによって取得され、最後尾の除算命令Ｉ３が実行される。そして、実行結果のデータ＊（ｓｐ＋０）／２に、除算命令Ｉ３を除いた拡張識別情報が付加され、新たなパケットＰ９が生成される。なお、パケットＰ９は、マスクされた拡張識別情報がパケットＰ６と同一になるため、パケットＰ６と同一の宛先情報ＰＥ（ａ４）が算出される。
【０１１４】
パケットＰ６およびＰ９は、識別番号ａ４が設定されているＰＥによって取得され、最後尾の書き込み命令Ｉ５が実行される。そして、実行結果のデータ＊（ｄｐ＋０）＝＊（ｓｐ＋０）／２に、書き込み命令Ｉ５を除いた拡張識別情報が付加され、新たなパケットＰ１０が生成される。なお、パケットＰ１０は、処理命令を含まないため、例外処理を行い、ＭＣＥ  ＩＤが示す識別番号１が設定されているＭＣＥ３０１に送信され、発行元のＭＣＥまで戻される。
【０１１５】
なお、読み出し命令Ｉ２や書き込み命令Ｉ５のように、記憶装置６との間でデータの入出力を行う命令については、ＰＥではなく、キャッシュメモリ４００と接続されているＭＣＥで実行されるようにしてもよい。例えば、最後尾の命令が読み出し命令Ｉ２であるパケットＰ７や、書き込み命令Ｉ５であるパケットＰ６およびＰ９を、処理命令を含まないパケットＰ１０と同様に、ＭＣＥ  ＩＤが示す識別番号１が設定されているＭＣＥ３０１に送信することができる。また、例えば、算出された４ビットの宛先情報の下位２ビットが示す識別番号が設定されているＭＣＥに送信することもできる。この場合、宛先情報とＭＣＥとの対応は、データ処理装置に含まれるＰＥおよびＭＣＥの個数に応じて適宜変更され得る。
【０１１６】
また、各ＰＥにおいて、バッファメモリやオペランドバッファが満杯となり、取得パケットを処理できないビジー状態の場合にも、当該パケットをＭＣＥ  ＩＤが示すＭＣＥまで戻すことが望ましい。この場合の例外処理は、例えば、パケットの命令数情報を最大命令数より大きな値とし、このようなパケットの宛先情報もＭＣＥ（ＭＣＥ  ＩＤ）と算出すればよい。さらに、何れかのＰＥがビジー状態の間、各ＭＣＥは、新たな処理ＩＤのパケットの発行を停止することが望ましい。このようなビジー状態の制御には、例えば、すべてのＰＥおよびＭＣＥに接続された制御信号線を設け、当該制御信号線を介してビジー状態を示すビジー信号を送信すればよい。
【０１１７】
また、本実施形態では、各ＰＥは、新たなパケットを生成する際に、拡張識別情報部分から実行された命令を除いている。しかしながら、未処理の命令数を示す命令数情報によって最初に実行されるべき命令を示すことによって、拡張識別情報部分から実行された命令を除かず、命令数情報から１を減算して、新たなパケットを生成してもよい。この場合、最初に実行されるべき命令が最後尾に配置されない場合もある。
【０１１８】
前述したように、データ処理装置１において、各ＭＣＥは、データごとに、処理情報に相当する拡張識別情報が付加されたパケットを生成し、各ＰＥは、当該ＰＥに設定された周波数帯域の電磁波のみを受信してパケットを取得し、取得パケットの命令を実行することによって、電気配線を用いないで各パケットが伝達されるため、オーバーヘッドを小さくし、全体としての処理速度を向上させることができる。
【０１１９】
また、拡張識別情報に応じて定まる宛先のＰＥに設定された周波数帯域の電磁波でパケットを送信することによって、各パケットを処理すべきＰＥのみにパケットを伝達することができる。
【０１２０】
また、拡張識別情報に応じて宛先情報を算出し、宛先情報に対応する周波数帯域の電磁波でパケットを送信することによって、処理対象のパケットがそのビット列自体に基づいて動的に配置され、処理の並列性をより向上させることができる。
【０１２１】
また、拡張識別情報に基づいて擬似乱数を生成し、当該擬似乱数に応じて宛先情報を算出することによって、パケット分布を一様分布に近づけ、ＰＥの使用効率の向上を図ることができる。
【０１２２】
また、各ＰＥは、取得パケットの最初に実行されるべき命令を実行し、拡張識別情報のうち、実行された命令の次に実行されるべき命令を最初に実行されるべき命令とすることによって、当該拡張識別情報を実行結果のデータに付加して新たなパケットを生成することができる。
【０１２３】
また、生成されたパケットの宛先情報が当該ＰＥを示している場合には、当該パケットを送信することなく、取得パケットとして処理することによって、この場合の送受信に伴うオーバーヘッドを削減することができる。
【０１２４】
また、各パケットを送信する際にアービトレーションを行うことによって、競合によって情報が失われたり、変更されたりするのを防止することができる。特に、データ処理装置全体に共通のアービタ（調停手段）を設けるのではなく、各ＰＥの送信部と受信部との協調機能としてアービトレーション機能を実現することによって、アービタとの通信がボトルネックとなるのを防止することができる。
【０１２５】
また、各パケットを送信する際に、まず、ＲＴＳ／ＣＴＳパケットを送信することによって、アービトレーション機能を実現することができる。
【０１２６】
また、各ＰＥが発光素子ＬＥおよび受光素子ＬＲを備え、各受光素子ＬＲが当該ＰＥに設定された波長域の光のみを受信してパケットを取得し、各受光素子ＬＲが宛先のＰＥに設定された波長域の光でパケットを送信することによって、紫外領域から赤外領域までの光を用いて情報伝達を行うことができる。
【０１２７】
また、拡張識別情報が処理命令および識別情報を含むことによって、処理命令および識別情報の所定の部分が同一のパケットが同一のＰＥによって取得され、当該ＰＥにおいて、２項演算を行う２入力・１出力命令を実行することができる。
【０１２８】
また、各ＭＣＥが各ＰＥと同様の入出力部を備え、宛先のＰＥに設定された周波数帯域の電磁波でパケットを送信することによって、ＰＥおよびＭＣＥ間においても電磁波を用いて情報伝達を行い、各パケットを発行先のＰＥに発行することができる。
【０１２９】
また、データ処理システムにおいて、データ処理装置１の各ＭＣＥが、パケットを逐次生成する、または予め生成されたパケット列を読み込むことによって、インタプリタ型またはコンパイラ型の並列コンピュータシステムを構成することができる。
【０１３０】
また、前述したように、各ＰＥは、当該ＰＥに設定された周波数帯域の電磁波のみを受信して、データごとに、処理情報に相当する拡張識別情報が付加されたパケットを取得し、取得パケットの命令を実行することによって、電気配線を用いないで各パケットが伝達されるため、オーバーヘッドを小さくし、全体としての処理速度を向上させることができる。
【０１３１】
また、各ＰＥは、拡張識別情報に応じて定まる宛先のＰＥに設定された周波数帯域の電磁波でパケットを送信することによって、各パケットを処理すべきＰＥのみにパケットを伝達することができる。
【０１３２】
また、各ＰＥは、拡張識別情報に基づいて生成される擬似乱数に応じて宛先情報を算出し、宛先情報に対応する周波数帯域の電磁波でパケットを送信することによって、処理対象のパケットがそのビット列自体に基づいて動的に配置され、処理の並列性をより向上させることができるとともに、パケット分布を一様分布に近づけ、ＰＥの使用効率の向上を図ることができる。
【０１３３】
なお、上記実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得るとともに、本発明にはその等価物も含まれる。
【符号の説明】
【０１３４】
１          データ処理装置
６          記憶装置
７          入力装置
８          出力装置
９          バス
１００〜１１５  ＰＥ（処理要素）
２１０      入出力部
２１１      宛先情報算出部
２１２      送信部
２１３      受信部
２３０      比較・選択部
２３１      ハッシュ値算出部
２４０      バッファメモリ
２５０ａ、２５０ｂ  オペランドバッファ
２６０      ＡＬＵ（算術論理演算部）
３００〜３０３  ＭＣＥ（メモリ制御要素）
４００      キャッシュメモリ
５０１      透過材（コア）
５０２      反射材（クラッド）
５０３      吸収材
５０４      半導体基板
ＬＥ        発光素子
ＬＲ        受光素子
ＦＬ        光学フィルタ
ＳＷ        光スイッチ
ＷＧ        光導波路
【図１】
2011068018.tif 000003
【図２】
2011068018.tif 000004
【図３】
2011068018.tif 000005
【図４】
2011068018.tif 000006
【図５】
2011068018.tif 000007
【図６】
2011068018.tif 000008
【図７】
2011068018.tif 000009
【図８】
2011068018.tif 000010
【図９】
2011068018.tif 000011
【図１０】
2011068018.tif 000012
【図１１】
2011068018.tif 000013
【図１２】
2011068018.tif 000014
【図１３】
2011068018.tif 000015
【図１４】
2011068018.tif 000016
【図１５】
2011068018.tif 000017
【図１６】
2011068018.tif 000018
【図１７】
2011068018.tif 000019
【図１８】
2011068018.tif 000020
【国際調査報告】
2011068018.tif 000021
2011068018.tif 000022
2011068018.tif 000023
2011068018.tif 000024