JP5057256B2 - データ処理装置、データ処理システムおよびデータ処理方法 - Google Patents

データ処理装置、データ処理システムおよびデータ処理方法 Download PDF

Info

Publication number
JP5057256B2
JP5057256B2 JP2010199711A JP2010199711A JP5057256B2 JP 5057256 B2 JP5057256 B2 JP 5057256B2 JP 2010199711 A JP2010199711 A JP 2010199711A JP 2010199711 A JP2010199711 A JP 2010199711A JP 5057256 B2 JP5057256 B2 JP 5057256B2
Authority
JP
Japan
Prior art keywords
packet
processing
instruction
data
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010199711A
Other languages
English (en)
Other versions
JP2011138479A (ja
Inventor
満 武者野
Original Assignee
株式会社Mush−A
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to JP2010199711A priority Critical patent/JP5057256B2/ja
Application filed by 株式会社Mush−A filed Critical 株式会社Mush−A
Priority to KR1020127014546A priority patent/KR101450675B1/ko
Priority to EP10834352.6A priority patent/EP2507718A4/en
Priority to PCT/JP2010/006593 priority patent/WO2011067896A1/en
Priority to CN201080055008.8A priority patent/CN102770855B/zh
Priority to TW099139208A priority patent/TWI533208B/zh
Publication of JP2011138479A publication Critical patent/JP2011138479A/ja
Priority to US13/486,876 priority patent/US9535671B2/en
Application granted granted Critical
Publication of JP5057256B2 publication Critical patent/JP5057256B2/ja
Priority to US15/359,127 priority patent/US10025594B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Description

本発明は、データ処理装置、データ処理システム、およびデータ処理方法に関する。
コンピュータアーキテクチャとして、記憶装置(メモリ)から命令を順次読み出して(fetch)、解読し(decode)、実行する(execute)、ノイマン型アーキテクチャが一般に知られている。当該ノイマン型アーキテクチャは、命令の実行順序を予め定め、オペランド(演算対象のデータ)をその都度集めながら処理を行う、命令中心の処理体系となっている。
また、ノイマン型コンピュータにおいて、複数の命令を並列処理するCPU(Central Processing Unit:中央処理装置)アーキテクチャとして、スーパースカラ・プロセッサが知られている。当該スーパースカラ・プロセッサは、オペランドの到着順に、実行ノードに対して命令を発行し(issue)、実行する、アウト・オブ・オーダ処理が可能となっている。しかしながら、スーパースカラ・プロセッサにおいては、スケジューラがデータ依存性を検査しながら実行結果を正しい順序に並べ替えるため、同時に実行可能な命令数の増加は、スケジューラの複雑化を招くこととなる。
一方、非ノイマン型アーキテクチャとして、データ依存性に着目し、データフロー(データの流れ)に従って処理を行う、データ駆動型アーキテクチャが知られている。当該データ駆動型アーキテクチャは、実行ノードにオペランドが揃った時点で発火し(fire)、次の実行ノードに命令の実行結果を転送することによって、多くの命令を並列処理することができる。
例えば、特許文献1では、プロセッサ間の制御にデータ駆動型(特許文献1においてはデータフローマシン型)アーキテクチャを、プロセッサ内の制御にノイマン型アーキテクチャを、それぞれ用いるマルチプロセッサシステムが開示されている。当該マルチプロセッサシステムは、データ駆動型およびノイマン型アーキテクチャを組み合わせて用いることによって、複雑なハードウェア構成を用いることなく、スレッドに分割されて生成された実行コードに基づいて並列処理を行うことができる。
また、例えば、非特許文献1では、TRIPS(Tera-op Reliable Intelligently advanced Processing System)アーキテクチャが開示されている。当該TRIPSアーキテクチャは、タイルプロセッサと呼ばれるチップアーキテクチャと、EDGE(Explicit Data Graph Execution)と呼ばれるISA(Instruction Set Architecture:命令セットアーキテクチャ)とを組み合わせたものとなっている。これらのうち、タイルプロセッサは、隣接するコア間のみを配線することによって、配線遅延の問題を回避し、コア数が増加しても動作速度を高速に保つことができる。一方、EDGEアーキテクチャは、命令を実行ノードに静的に配置し、データフロー型アーキテクチャと同様に、実行ノードにオペランドが揃った時点で実行することによって、処理の並列性を最大限に高めることを目指している。
このようにして、上記のようなコンピュータアーキテクチャを単独で、または組み合わせて用いることによって、複数の命令を並列処理することができる。
特開2007−193430号公報
Doug Burger, et al., "Scaling to the End of Silicon with EDGE Architectures," IEEE Computer, vol. 37, no. 7, pp. 44-55, July 2004
並列コンピュータは、上記のデータ駆動型アーキテクチャを用いることによって、多くの命令を並列処理することができる。しかしながら、データ駆動型アーキテクチャでは、ノイマン型アーキテクチャとは異なる命令セットを用いるため、既存のノイマン型コンピュータ用のソフトウェア資産をそのまま利用することはできない。
既存のソフトウェア資産を並列コンピュータで利用するためには、例えば、ノイマン型コンピュータ用のソースプログラムから並列コンピュータ用の実行コードを生成するコンパイラ技術を必要とする。しかしながら、当該コンパイラ技術を用いた場合の処理の並列性は、コンパイラの性能に左右され、並列性の向上にはコンパイラの複雑化を伴い、コンパイル時間の増加を招く場合もある。また、上記特許文献1では、プログラム処理装置によってマルチプロセッサシステムのための実行コードを生成するため、C言語などの高級言語で記述されたソースプログラムに予めスレッド記述を追加する必要がある。
また、例えば、ノイマン型コンピュータ用のソースプログラムを逐次解釈しながら実行するインタプリタ技術を必要とする。しかしながら、コンパイラ技術の場合と同様に、処理の並列性の向上にはインタプリタの複雑化を伴い、インタプリタの動作速度の低下を招く場合もある。さらに、コンパイラやインタプリタの複雑化を伴わないものの、並列コンピュータ自体の複雑化や動作速度の低下を招く場合もある。
そのため、並列コンピュータにおける並列性の向上は、既存のソフトウェア資産を並列コンピュータで利用するためのコストの上昇を招く、トレードオフの関係となる。
前述した課題を解決する主たる本発明は、データごとに、当該データを識別する識別情報および当該データに対する1つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理する複数の処理部と、前記拡張識別情報の少なくとも前記命令情報のビット列に基づいて、前記パケットの宛先情報を算出する宛先情報算出部と、を備え、前記複数の処理部は、前記パケットのうち、前記宛先情報が当該処理部を示すパケットのみを取得する入出力部と、前記入出力部によって取得された前記パケットの前記処理命令を実行する演算部と、をそれぞれ有し、前記宛先情報算出部は、前記命令情報が複数の処理命令を示す場合には、少なくとも当該複数の処理命令を示すビット列に基づいて前記宛先情報を算出することを特徴とするデータ処理装置である。
また、前述した課題を解決するその他の主たる本発明は、データごとに、当該データを識別する識別情報および当該データに対する1つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理する複数の処理部と、前記拡張識別情報の少なくとも前記命令情報のビット列に基づいて、前記パケットの宛先情報を算出する宛先情報算出部と、を備え、前記複数の処理部は、前記パケットのうち、前記宛先情報が当該処理部を示すパケットのみを取得する入出力部と、前記入出力部によって取得された前記パケットの前記処理命令を実行する演算部と、前記パケットを記憶する記憶部と、前記入出力部によって取得された前記パケットの前記拡張識別情報と前記記憶部に記憶されている前記パケットの前記拡張識別情報とを比較して、当該取得されたパケットおよび当該記憶されているパケットから前記演算部に入力するパケットを選択する比較・選択部と、をそれぞれ有し、前記処理命令は、2つのパケットの前記データをそれぞれ左側および右側オペランドとする2項演算を行う処理命令を含み、前記比較・選択部は、前記入出力部によって取得された前記パケットの最初に実行されるべき処理命令が前記2項演算を行う処理命令である場合に、前記命令情報の所定の部分および前記識別情報が当該取得されたパケットと一致するパケットが前記記憶部に記憶されているときには、当該所定の部分および識別情報が一致する2つのパケットの前記データをそれぞれ前記左側および右側オペランドとして前記演算部に入力し、前記命令情報の前記所定の部分および前記識別情報が当該取得されたパケットと一致するパケットが前記記憶部に記憶されていないときには、当該取得されたパケットを前記記憶部に記憶させることを特徴とするデータ処理装置である。
本発明の他の特徴については、添付図面及び本明細書の記載により明らかとなる。
本発明によれば、既存のソフトウェア資産を略そのまま利用して、処理の並列性を向上させることができる。
本発明の一実施形態におけるPE(処理要素)の構成を示すブロック図である。 データ処理装置を備えたデータ処理システム全体の構成の概略を示すブロック図である。 本発明の一実施形態におけるデータ処理装置の構成を示すブロック図である。 ソースプログラムとデータ処理装置で処理されるプログラム(実行コード)との関係の一例を示す図である。 データ処理装置で用いられる命令セットの一例を示す図である。 MCE(メモリ制御要素)によって生成されるデータフロー図の一例を示す図である。 MCE(メモリ制御要素)によって生成される基本パケット列の一例を示す図である。 MCE(メモリ制御要素)によって生成される展開後のパケット列の一例を示す図である。 本発明の一実施形態における宛先情報の算出方法を説明する図である。 入出力部の動作の一例を説明するフローチャートである。 バッファメモリに実装されるハッシュテーブルの一例を示す図である。 本発明の一実施形態におけるデータ処理装置の動作を説明する図である。 電磁波(光)を用いて情報伝達を行う場合の通信路の構成の一例を示す図である。 ソースプログラムとデータ処理装置で処理されるプログラム(実行コード)との関係の他の例を示す図である。 各入出力ポートが複数のチャネルを備えたPE(処理要素)の構成の概略を示すブロック図である。 命令追加命令の実行を含むデータフロー図の一例を示す図である。 命令追加命令の実行を含む展開後のパケット列の一例を示す図である。 命令追加命令の実行を含むデータ処理装置の動作を説明する図である。 データ処理装置によって処理されるパケットの他の構成例を示す図である。 命令追加処理を含むデータフロー図の一例を示す図である。 命令追加処理を含むデータ処理装置の動作を説明する図である。
本明細書および添付図面の記載により、少なくとも以下の事項が明らかとなる。
===データ処理システム全体の構成の概略===
以下、図2を参照して、データ処理装置を備えたデータ処理システム全体の構成の概略について説明する。
図2に示されているデータ処理システムは、データ処理装置1を備えた並列コンピュータシステムであり、データ処理装置1以外に、記憶装置6、入力装置7、出力装置8、およびバス9を含んで構成されている。また、データ処理装置1、記憶装置6、入力装置7、および出力装置8は、バス9を介して互いに接続されている。なお、データ処理装置1の構成についての詳細な説明は後述する。
===データ処理システム全体の動作の概略===
次に、データ処理システム全体の動作の概略について説明する。
記憶装置6は、RAM(Random Access Memory)やROM(Read Only Memory)などで構成され、プログラム(実行コード)や当該プログラムの実行に用いられるデータなどを記憶している。また、データ処理装置1は、コンピュータシステムのCPUに相当し、記憶装置6に記憶されているプログラムを実行する。なお、データ処理装置1の動作についての詳細な説明は後述する。
入力装置7は、キーボードやマウスなどで構成され、データやプログラム(ソースプログラムまたは実行コード)を含む情報を外部から当該データ処理システムに入力する。一方、出力装置8は、ディスプレイやプリンタなどで構成され、情報を文字や画像などとして外部に出力する。
なお、上記データ処理装置1、記憶装置6、入力装置7、および出力装置8の分類は、固定的なものではない。例えば、ハードディスクドライブや光ディスクドライブなどの補助記憶装置は、記憶装置6として用いられるが、外部との間で情報を入出力する入力装置7および出力装置8に分類してもよい。
===データ処理装置の構成===
以下、図3を参照して、本発明の一実施形態におけるデータ処理装置の構成について説明する。
図3に示されているデータ処理装置1は、PE(Processor/Processing Element:処理要素/処理素子)100ないし115、MCE(Memory Control/Controlling Element:メモリ制御要素/メモリ制御素子)300ないし303、キャッシュメモリ400、および通信路(伝送路)500を含んで構成されている。
データ処理装置1は、処理部に相当するPEを複数備え、各PEが通信路500を介して互いに接続されている。本実施形態では、一例として、データ処理装置1は、4行4列の行列状に配置された16個のPE100ないし115を備えているものとする。また、前述したタイルプロセッサと同様に、PE100ないし115は、隣接するPE間のみが互いに接続されているものとする。なお、各PEの構成についての詳細な説明は後述する。
ここで、PE100ないし115の座標(X,Y)を、図3に示すように、それぞれ(0,0)ないし(3,3)と表すこととすると、各PEに対して、X座標を上位2ビット、Y座標を下位2ビットとする識別番号を設定することができる。また、このように設定された識別番号は、図3に示されている各PEの3桁の符号の下2桁と一致している。例えば、座標(0,3)に位置するPE103の識別番号は、3(2進表記で0011)となり、座標(3,0)に位置するPE112の識別番号は、12(2進表記で1100)となる。
データ処理装置1は、制御部に相当するMCEを少なくとも1つ備え、各MCEが通信路500を介してPE100ないし115の何れかと接続されている。本実施形態では、一例として、データ処理装置1は、4個のMCE300ないし303を備えているものとする。また、MCE300ないし303は、それぞれ隣接するPE100ないし103と接続されているものとする。なお、図3に示すように、MCE300ないし303に対して、それぞれ0ないし3の識別番号が設定されている。
キャッシュメモリ400は、MCE300ないし303と接続されている。また、キャッシュメモリ400は、前述したバス9(不図示)を介して、データ処理装置1外の記憶装置6と接続されている。
===通信路の構成および動作の一例===
通信路500は、PE間やPEおよびMCE間の情報伝達媒体であり、当該情報伝達には、電気配線による電気信号の伝達以外に、光ファイバによる光信号の伝達や、自由空間における電磁波の伝達も含まれる。ここで、電磁波、特に光を用いて情報伝達を行う場合の通信路500の構成の一例を図13に示す。この場合、各PEは、発光素子を備えた少なくとも1つの送信部、および受光素子を備えた少なくとも1つの受信部を含む。また、図13において、発光素子212は情報伝達元のPEに含まれ、受光素子213は情報伝達先のPEに含まれる。
図13に示されている通信路500は、光を透過する透過材501、光を反射する反射材502、および光を吸収する吸収材503からなる。透過材501および反射材502は、それぞれ光ファイバにおけるコア(core)およびクラッド(cladding)に相当し、石英ガラスやプラスチックなどが用いられる。また、透過材501の屈折率を反射材502の屈折率より高くし、光信号が反射材502によって全反射されながら透過材501中を伝達されるように構成されている。
受光素子213は、OCF(On-chip Color Filter)などを用いて、PEごとに設定された波長の光を受光するように構成されている。この場合、発光素子212が発光する光の波長を可変とし、伝達先のPEに設定された波長と一致させることによって、パケットを伝達することができる。また、異なる波長の光を発光する複数の発光素子を切り替えて用いることによっても、伝達元および伝達先のPEに設定された波長を一致させ、パケットを伝達することができる。
なお、各PEに設定される波長は、紫外領域から赤外領域までのいずれを用いてもよい。しかしながら、透過材501および反射材502に用いられる材料によっては、紫外線を吸収し、透過率が低下するため、可視光領域から赤外領域までの波長を用いることが望ましい。
===データ処理装置の動作===
次に、図4ないし図8を適宜参照して、本実施形態におけるデータ処理装置の動作について説明する。
キャッシュメモリ400は、キャッシュを行いつつ、MCE300ないし303と記憶装置6との間の入出力を制御する。したがって、記憶装置6に記憶されているプログラムやデータなどは、キャッシュメモリ400を介してMCE300ないし303に読み込まれる。
ここで、ソースプログラムとデータ処理装置1で処理されるプログラム(実行コード)との関係の一例を図4に示す。高級言語で記述されたソースプログラムP0は、実行コードP1に予めコンパイルされたうえで記憶装置6に記憶されており、MCE300ないし303には、実行コードP1が読み込まれる。なお、図4においては、ソースプログラムP0の一例として、C++言語で記述された、配列sp[1024]の各要素を2で除算した値を配列dp[1024]に格納する処理が示されている。また、実行コードP1は、機械語プログラムではなく、機械語と略1対1に対応するアセンブリ言語で記述されたプログラムとしてもよい。
MCE300ないし303は、読み込まれた実行コードP1から、データフロー図に基づいて、後述するパケット列を生成する。なお、各MCEは、データフロー図自体を生成する必要はないが、本実施形態においては、説明の便宜上、まずデータフロー図を生成し、次にデータフロー図に基づいてパケット列を生成するものとする。
ここで、データ処理装置1で用いられる命令セットの一例を図5に示す。図5において、各命令は、2入力・1出力命令と1入力・1出力命令とに大別されている。これらのうち、2入力・1出力命令は、入力された2つのデータをそれぞれ左側および右側オペランドとして2項演算を行う命令である。一方、1入力・1出力命令は、入力された1つのデータをオペランドとして単項演算を行う命令である。また、図5に示すように、各命令に対して、オペレータ(演算子)に相当する記号と機械語における16進表記とが設定されており、これらはデータフロー図やパケット列についての説明で用いられる。
まず、2入力・1出力命令について説明する。
2つのデータ(AおよびB)の加算結果(A+BまたはB+A)を出力する加算命令に対しては、記号「+」と16進表記10Hとが設定されている。一方、2つのデータ(LおよびR)の減算結果(L−R)を出力する減算命令の場合、減算は交換法則が成立しない非可換演算であるため、各データを左側または右側オペランドの何れとするかを示す左右情報(方向情報)を必要とする。そのため、減算命令に対する記号「−」には、さらに左右情報「L」または「R」が付加され、それぞれ16進表記12Hまたは13Hが設定されている。
なお、左右情報「L」は、左側オペランドとなるデータを示し、左右情報「R」は、右側オペランドとなるデータを示している。また、当該命令セットにおいては、各命令のLSB(Least Significant Bit:最下位ビット)が左右情報専用に割り当てられている。したがって、以下の命令(ヌル文字を除く)においても、左右情報「L」を有する命令および左右情報を有しない命令のLSBは0、左右情報「R」を有する命令のLSBは1となっている。
2つのデータ(AおよびB)の乗算結果(A×BまたはB×A)を出力する乗算命令に対しては、左右情報を有しない記号「×」と16進表記14Hとが設定されている。一方、2つのデータ(LおよびR)の除算結果(L÷R)を出力する除算命令に対しては、左右情報が付加された記号「÷L」および「÷R」と、16進表記16Hおよび17Hとが設定されている。
左右情報が付加された記号「writeL」および「writeR」と、16進表記18Hおよび19Hとが設定されている書き込み命令は、データ(L)が示す記憶装置6のアドレスに記憶されているデータ(*L)にデータ(R)を書き込む命令である。なお、「*」は間接参照演算子である。
左右情報が付加された記号「app1L」および「app1R」と、16進表記50Hおよび51Hとが設定されているデータ追加命令は、後述するパケット(L)のデータ部分にパケット(R)のデータ部分を追加する命令である。また、左右情報が付加された記号「app2L」および「app2R」と、16進表記52Hおよび53Hとが設定されている命令追加命令は、後述するパケット(L)の処理命令部分にパケット(R)のデータ部分を追加する命令である。
次に、1入力・1出力命令について説明する。なお、1入力・1出力命令は、1つのデータのみをオペランドとするため、いずれも左右情報を有しない。
記号「NOP」と16進表記00Hとが設定されているNOP命令は、何もしない命令である。また、記号「read」と16進表記02Hとが設定されている読み出し命令は、データ(A)が示す記憶装置6のアドレスに記憶されているデータ(*A)を読み出す命令である。なお、命令ではないが、パケットの終端を示すヌル文字として、例えば16進表記FFHが設定されている。
各MCEは、図5に示した命令セットを用いて、一般的なデータ駆動型アーキテクチャの場合と同様に、データフロー図を生成する。図6は、実行コードP1から生成されたデータフロー図を示しており、図4に示したソースプログラムP0のforループ内の処理に対応している。
図6において、D1ないしD5はデータを示しており、I1ないしI5は命令を示している。加算命令I4は、データD1(dp)およびデータD2(ii)を加算し、データdp+iiを出力し、加算命令I1は、データD3(sp)およびデータD4(ii)を加算し、データsp+iiを出力する。また、読み出し命令I2は、記憶装置6からデータ*(sp+ii)を読み出す。さらに、除算命令I3は、データ*(sp+ii)をデータD5(2)で除算し、データ*(sp+ii)/2を出力する。そして、書き込み命令I5は、記憶装置6のデータ*(dp+ii)にデータ*(sp+ii)/2を書き込む。
以上のデータフローによって、配列sp[1024]の1つの要素を2で除算した値が配列dp[1024]に格納される。図7は、図6に示したデータフロー図に基づいて生成された基本パケット列を示している。
各パケットは、データ部分(data section)と拡張識別情報部分(extended identification information section)とからなる。また、拡張識別情報部分は、識別情報部分(identification information section)と処理命令部分(processing instructions section)とからなる。なお、各パケットは、暗号化や圧縮などの目的で適宜符号化されていてもよい。
データ部分は、データ本体のほか、当該データのデータ長情報を含む。また、データ長情報は、例えばデータのバイト数を示すが、データ処理装置1が固定長データのみを扱う場合には、不要となる。
識別情報部分は、例えばMCE IDおよび処理IDを含む。これらのうち、処理IDは、基本パケット列ごとに設定されるため、図7においては空(ヌル文字)であり、forループを展開する際に設定される。一方、MCE IDは、当該基本パケット列を生成したMCEを示す発行元情報に相当し、例えば、図3に示した0ないし3の識別番号が用いられる。また、基本パケット列においては、図7に示すように、MCE IDを空とし、forループを展開する際に、MCE IDを処理IDとともに設定するようにしてもよい。
本実施形態では、一例として、処理命令部分は、5個までの命令1ないし5のほか、命令数情報を含む。また、各命令は、実行順序とは逆順に配列されており、最初に実行されるべき命令が最後尾に配置され、以降は空となっている。さらに、命令数情報は、未処理の命令数を示すが、その都度計数するようにしてもよい。
図7から明らかなように、当該基本パケット列は、図6に示したデータフロー図を5個のデータD1ないしD5ごとに再構成したものであり、各パケットは、当該データに識別情報および処理命令を付加して生成される。さらに、各MCEは、繰り返し処理などの基本パケット列に対する制御命令を展開したうえで、各パケットを隣接するPEに発行する。図8は、図7に示した基本パケット列に対して、forループを展開した後のパケット列を示している。
図4に示したように、当該forループは、ii=0からii=1023までの繰り返し処理であるので、展開することによって、5×1024パケットが生成されることとなる。また、図8に示すように、5パケットごとに1から1024までの同一の処理IDを含んでおり、当該5パケットがそれぞれ図7に示した基本パケット列に対応している。なお、図8においては、一例として、MCE IDは1となっており、各パケットがMCE301によって生成されたことを示している。
MCE301から発行された各パケットは、PE100ないし115のうち、後述する宛先情報が示すPEまで、通信路500を介して伝達される。また、各PEは、パケットに含まれる処理命令を実行する実行ノードに相当する。なお、各PEの動作についての詳細な説明は後述する。
以上のように、本実施形態のデータ処理装置は、オペランドとなるデータとオペレータとなる命令とが一体となったパケットを処理対象としている点で、前述した従来のコンピュータアーキテクチャと大きく異なっている。
なお、本発明のデータ処理装置は、本実施形態に示したように、機械語やアセンブリ言語で記述された実行コードP1からパケット列を生成するMCEを備える構成に限定されるものではない。
例えば、記憶装置6には、ソースプログラムP0から実行コードP1にコンパイルする際の中間の段階で生成される中間コードとして、構文木(syntax tree)で表現されたプログラムが記憶されていてもよい。構文木では、オペランドが葉ノード(leaf node)に配置され、オペレータが内部ノード(internal node)に配置された木構造となっているため、機械語やアセンブリ言語の場合に比べて、データフロー図の生成が容易となる。
また、例えば、記憶装置6には、コンパイラを備える外部装置によって予め生成された基本パケット列(sequences of base packets)や展開後のパケット列(sequences of expanded packets)が記憶されていてもよい。基本パケット列が記憶されている場合には、各MCEは、読み込まれた基本パケット列に対する制御命令を展開し、MCE IDや処理IDを設定したうえで、各パケットを隣接するPEに発行する。一方、展開後のパケット列が記憶されている場合には、各MCEは、各パケットをそのまま隣接するPEに発行することができる。
また、例えば、記憶装置6には、展開後のパケット列のうち、識別情報部分の一部または全部を省略した、またはヌル文字とした中間パケット列(sequences of interim packets)が記憶されていてもよい。この場合には、各MCEは、省略されたMCE IDや処理IDを設定したうえで、各パケットを隣接するPEに発行する。
さらに、例えば、展開後のパケット列が外部装置からデータ処理装置に直接入力されてもよい。この場合の外部装置には、並列に動作している他のデータ処理装置も含まれ得る。
ここで、ソースプログラムとデータ処理装置1で処理されるプログラム(実行コード)との関係の他の例を図14に示す。この場合、コンパイラは、高級言語で記述されたソースプログラムP0から、データフロー図に基づいて基本パケット列を生成し、さらに、当該基本パケット列に対する制御命令を展開する。また、記憶装置6には、当該展開後のパケット列が適宜符号化されたうえで、実行コードP2として記憶される。そして、MCE300ないし303には、実行コードP2が読み込まれる。
===PE(処理要素)の構成===
以下、図1を参照して、本実施形態におけるPEの構成について説明する。
図1に示されているPE100ないし115は、入出力部210、比較・選択部230、バッファメモリ240、オペランドバッファ250a、250b、およびALU(Arithmetic Logic Unit:算術論理演算部)260をそれぞれ含んで構成されている。
入出力部210は、宛先情報算出部211、出力ポート214aないし214d、および入力ポート215aないし215dを含む。また、入出力部210には、各入力ポートを介して、パケットや、記憶装置6から読み出されたデータなどが入力されている。さらに、入出力部210からは、各出力ポートを介して、パケットや、記憶装置6に書き込まれるデータなどが出力されている。そして、各入出力ポート(入力ポートおよび出力ポート)は、前述した通信路500(不図示)を介して、隣接するPEやMCEと接続されている。
例えば、図3のPE110の場合、4組の入出力ポートは、それぞれPE109、106、111、および114と接続されている。また、例えばPE100の場合、2組の入出力ポートは、それぞれPE101および104と接続され、1組の入出力ポートは、MCE300と接続され、そして、1組の入出力ポートは、使用されない。
また、例えば図15に示すように、各入出力ポートが複数のチャネルを備え、当該複数のチャネルを使用して、隣接するPE間やPEおよびMCE間でパケットやデータなどを入出力する構成としてもよい。
なお、光を用いて情報伝達を行う場合には、例えば、図13の発光素子212は、各出力ポートに設けられ、受光素子213は、各入力ポートに設けられる。
比較・選択部230には、入出力部210からパケットが入力されている。また、比較・選択部230は、ハッシュ値算出部231を含み、記憶部に相当するバッファメモリ240との間でパケットを入出力している。さらに、比較・選択部230からは、オペランドバッファ250aおよび250bを介して、それぞれ左側および右側オペランドとなるデータを有するパケットが、演算部に相当するALU260に入力されている。そして、ALU260によって新たに生成されたパケットは、再び入出力部210に入力されている。
===PE(処理要素)の動作===
次に、図9ないし図11を適宜参照して、本実施形態におけるPEの動作について説明する。
入出力部210は、まず、宛先情報算出部211が入力されたパケットの宛先情報を算出する。宛先情報は、パケットを処理すべきPEを示す情報であり、当該パケットの拡張識別情報部分から求めることができる。ここで、図9を参照して、図8においてMCE ID=1、かつ処理ID=1である、最初の5パケットの宛先情報の算出方法について説明する。以下、図9に示すように、当該5パケットをそれぞれパケットP1ないしP5とする。
宛先情報算出部211は、まず、各パケットから拡張識別情報部分のみを抽出し(図9中段)、各拡張識別情報のうち、最初に実行されるべき命令の左右情報をマスクする(図9下段)。前述したように、本実施形態では、最初に実行されるべき命令がパケットの最後尾に配置され、各命令のLSBが左右情報専用に割り当てられている。したがって、拡張識別情報の最後の1ビットを0または1(図9においては0)でマスクすればよい。なお、拡張識別情報にヌル文字を含めてもよく、この場合には、ヌル文字直前の1ビット以降をマスクすればよい。
宛先情報算出部211は、次に、上記のマスクされた拡張識別情報に基づいて擬似(疑似)乱数を生成し、当該擬似乱数に応じて、宛先情報を算出する。例えば、0ないし15(2進表記で0000ないし1111)の4ビットの値を宛先情報として算出すると、当該宛先情報は、図3の各PEの座標と同様に、上位2ビットをX座標、下位2ビットをY座標とする座標(X,Y)の形式で表すこともできる。図9下段においては、宛先情報を当該座標の形式で表している。
擬似乱数は、物理乱数と異なり、再現性があるため、マスクされた拡張識別情報が同一のパケットからは同一の擬似乱数が生成され、同一の宛先情報が算出される。例えば、図9下段に示すように、マスクされた拡張識別情報が同一であるパケットP1およびP2からは、同一の宛先情報(x1,y1)が算出されている。また、同様に、パケットP3およびP4からは、同一の宛先情報(x2,y2)が算出されている。
なお、前述したように、各パケットは適宜符号化され得るが、宛先情報を算出する度に復号する必要がないよう、データ部分と拡張識別情報部分とを個別に符号化することが望ましい。同様に、処理命令部分単独で、または拡張識別情報部分全体で符号化する場合には、復号することなく、最初に実行されるべき命令の左右情報をマスクすることができる符号化を用いることが望ましい。
また、擬似乱数の生成には、公知の方法を用いることができる。宛先情報の算出時間の観点からは、LCG(Linear Congruential Generator:線形合同法)やLFSR(Linear Feedback Shift Register:線形帰還シフトレジスタ)など、高速な生成方法を用いることが望ましい。
さらに、宛先情報算出部211は、予め生成された擬似乱数テーブルを参照して宛先情報を算出する構成としてもよい。この場合、宛先情報算出部211は、パケットごとに擬似乱数を生成する必要がないため、宛先情報の算出時間を短縮することができる。なお、このような構成においては、各PEの宛先情報算出部が同一の擬似乱数テーブルを備えるか、各PEの宛先情報算出部が共通の擬似乱数テーブルを読み出す必要がある。
一方、PEの使用効率の観点からは、パケット分布が一様となるよう、擬似乱数が一様分布に近いほど望ましい。また、確率変数族が予測不可能であることは、一様分布であることと等価であるので、CSPRNG(Cryptographically Secure Pseudo-Random Number Generator:暗号論的擬似乱数生成器)を用いることによって、PEの使用効率の向上を図ることができる。しかしながら、命令によっても各パケットの処理時間は異なるため、実際には、擬似乱数が一様分布であっても、パケット分布が一様とはならないこともある。
そのため、宛先情報の算出時間が長くなり過ぎない程度で、一様分布に近い擬似乱数を用いることが望ましい。例えば、宛先情報の算出時間が、後述するハッシュ値の算出時間よりも長くなることは望ましくない。
入出力部210は、次に、パケットの宛先情報が当該PEを示しているか否かを判定し、当該PEを示している場合には、当該パケットを取得して比較・選択部230に入力する。一方、パケットの宛先情報が当該PEを示していない場合には、宛先情報が示すPEに近づく方向に隣接するPEに当該パケットを転送する。ここで、図10を参照して、このようなパケットの取得および転送を実現する、入出力部210の具体的な動作の一例について説明する。なお、図10においては、現在位置、すなわち、当該PEの座標を(x0,y0)とし、宛先情報が示すPEの座標を(x1,y1)とする。
入出力部210は、隣接するPEやMCEからパケットが入力されると(S1)、まず、現在位置のY座標y0と宛先情報のY座標y1とを比較する(S2)。
S2において、両者のY座標が一致している場合(S2:=)には、現在位置のX座標x0と宛先情報のX座標x1とを比較する(S3)。
また、y0がy1より大きい場合(S2:>)には、宛先情報が示すPEは現在位置よりY座標が小さい方向にあるため、y0−1方向に隣接するPE、すなわち、座標(x0,y0−1)に位置するPEにパケットを転送し(S31)、処理を終了する(S5)。一方、y0がy1より小さい場合(S2:<)には、宛先情報が示すPEは現在位置よりY座標が大きい方向にあるため、y0+1方向に隣接するPE、すなわち、座標(x0,y0+1)に位置するPEにパケットを転送し(S32)、処理を終了する(S5)。
S3において、両者のX座標が一致している場合(S3:=)には、宛先情報が当該PEを示しているため、パケットを取得して比較・選択部230に入力し(S4)、処理を終了する(S5)。
また、x0がx1より大きい場合(S3:>)には、宛先情報が示すPEは現在位置よりX座標が小さい方向にあるため、x0−1方向に隣接するPE、すなわち、座標(x0−1,y0)に位置するPEにパケットを転送し(S41)、処理を終了する(S5)。一方、x0がx1より小さい場合(S3:<)には、宛先情報が示すPEは現在位置よりX座標が大きい方向にあるため、x0+1方向に隣接するPE、すなわち、座標(x0+1,y0)に位置するPEにパケットを転送し(S42)、処理を終了する(S5)。
以上の動作を各PEの入出力部が行うことによって、各パケットは宛先情報が示すPEまで伝達され、取得される。例えば、図3において、MCE301からPE101に発行されたパケットの宛先情報がPE115を示す場合には、当該パケットは、PE102、PE103、PE107、およびPE111を経由して、PE115まで伝達される。また、例えば、PE115によって処理され、新たに生成されたパケットの宛先情報がPE104を示す場合には、当該パケットは、PE114、PE113、PE112、およびPE108を経由して、PE104まで伝達される。
すなわち、各パケットは、まず、宛先情報が示すPEとY座標が一致するまで、図3の上下方向に移動し、次に、X座標が一致するまで、図3の左右方向に移動する。このような移動規則を採用することによって、パケットの移動経路は常に最短となる。また、移動中の方向転換は1回または0回となり、各PE間における通信路500の使用頻度を平均化することができる。
以上のように、本実施形態のデータ処理装置は、実行ノードに相当するPEがタイルプロセッサと同様に行列状に配置されているものの、処理対象のパケットがそのビット列自体に基づいて動的に配置される点で、EDGEアーキテクチャと大きく異なっている。
なお、本発明のデータ処理装置は、本実施形態に示した行列状の配置および接続に限定されるものではない。例えば、図3において、各PE間における通信路500の一部を省略することによって、リング型の接続となる。また、例えば、すべてのPE間やPEおよびMCE間を直接接続することもできる。この場合、電気配線による電気信号の伝達では、PEやMCEの個数が増加するほど、配線が困難となる。一方、前述した電磁波を用いた情報伝達では、容易に通信路500を追加することができる。
比較・選択部230は、入出力部210によって取得されたパケット(以下、取得パケットと称する)のうち、処理可能なものをALU260に入力する。また、比較・選択部230は、処理可能でないパケットをバッファメモリ240に記憶させるとともに、バッファメモリ240に記憶されているパケット(以下、記憶パケットと称する)の読み出しを行う。
より具体的には、取得パケットの最初に実行されるべき(最後尾の)命令が1入力・1出力命令である場合、比較・選択部230は、取得パケットのみを、オペランドバッファ250aまたは250bを介してALU260に入力する。
一方、取得パケットの最初に実行されるべき(最後尾の)命令が2入力・1出力命令である場合、比較・選択部230は、前述したマスクされた拡張識別情報が取得パケットと一致するパケットを、記憶パケットから検索する。そして、一致する記憶パケットが存在するときには、比較・選択部230は、当該一致する2つのパケットを組にして、オペランドバッファ250aおよび250bを介してALU260に入力する。また、一致する記憶パケットが存在しないときには、比較・選択部230は、取得パケットをバッファメモリ240に記憶させる。
なお、マスクされた拡張識別情報が取得パケットと一致する記憶パケットの検索を効率よく行うため、本実施形態では、バッファメモリ240は、ハッシュテーブルを含む。
また、比較・選択部230は、まず、ハッシュ値算出部231が、取得パケットからハッシュ値を算出する。当該ハッシュ値は、宛先情報の場合と同様に、取得パケットのマスクされた拡張識別情報に基づいて算出される。そして、比較・選択部230は、取得パケットをバッファメモリ240に記憶させる場合には、取得パケットをそのハッシュ値と対応付けてハッシュテーブルに格納する。
なお、ハッシュテーブルには、公知の実装方法を用いることができる。図11は、バッファメモリ240に実装されるハッシュテーブルの一例を示している。当該ハッシュテーブルでは、ハッシュ衝突の解決方法として、オープンアドレス法(open addressing)を用い、再ハッシュ手順として、線形探索法(linear probing)を用いている。
図11においては、一例として、ハッシュ値がn+3となるパケット1が格納された後に、ハッシュ値がnとなるパケット2ないし5が格納された場合を示している。パケット1は、ルート配列[256]の要素n+3の位置に格納され、フラグ「1」およびカウント値「1」が設定されている。また、パケット2ないし5は、それぞれ要素n、n+1、n+2、n+4の位置に格納され、要素nの位置にフラグ「1」およびカウント値「4」が設定されている。
ALU260は、オペランドバッファ250aおよび250bを介して入力されるオペランドに対して、算術演算(整数演算および/または浮動小数点演算)や論理演算などを行い、演算結果を出力する。より具体的には、ALU260は、入力されたパケットのデータに対して、最初に実行されるべき(最後尾の)命令を実行し、実行結果のデータに、実行された命令を除いた拡張識別情報を付加して新たなパケットを生成し、再び入出力部210に入力する。
このようにして、各PEは、入力されたパケットの拡張識別情報部分から宛先情報を求め、宛先情報が当該PEを示すパケットのみを取得し、宛先情報が当該PEを示さないパケットを他のPEに転送する。そして、取得パケットのデータに対して最初に実行されるべき(最後尾の)命令を実行するとともに、実行結果のデータに実行された命令を除いた拡張識別情報を付加して新たなパケットを生成し、生成されたパケットをその宛先情報に応じて転送または取得する。
なお、パケットが入力される度に各PEが宛先情報を算出する代わりに、算出した宛先情報をパケットに付加し、当該宛先情報を再利用してもよい。例えば、MCEがパケットをPEに発行する場合、およびPEが新たなパケットを生成する場合に宛先情報を付加することによって、それ以外の場合には付加されている宛先情報をそのまま利用することができる。この場合、宛先情報が付加されているパケットに対して宛先情報を算出する必要はなく、各PEで取得されるパケットに付加されている宛先情報は同一となるため、宛先情報をデータ部分および拡張識別情報部分のいずれに付加してもよい。
また、光を用いて情報伝達を行う場合、情報伝達元のPEの発光素子は、宛先情報が示す情報伝達先のPEに設定された波長の光を発光することによって、転送を繰り返すことなく、宛先情報が示すPEにパケットを直接伝達することができる。この場合、各PEは、他のPEやMCEから入力されるパケットの宛先情報が当該PEを示しているか否かを判定することなく、宛先情報が当該PEを示すパケットのみを取得することができる。
さらに、各PEによって新たに生成されたパケットについても、宛先情報が当該PEを示しているか否かを判定することなく、宛先情報が示す情報伝達先のPEに設定された波長の光を発光する構成としてもよい。この場合、情報伝達元と同一のPEを含めた何れかのPEの受光素子が当該波長の光を受光し、宛先情報が示すPEにパケットを伝達することができる。
===データ処理装置の動作の具体例===
ここで、図12を参照して、図9に示したパケットP1ないしP5に対するデータ処理装置1の動作の具体例について説明する。
前述したように、パケットP1およびP2は、同一の宛先情報(x1,y1)が算出されているため、座標(x1,y1)に位置するPEまで伝達され、最後尾の加算命令I4が実行される。そして、実行結果のデータdp+0に、加算命令I4を除いた拡張識別情報が付加され、新たなパケットP6が生成される。なお、パケットP6から算出される宛先情報を(x4,y4)とする。
同様に、パケットP3およびP4は、同一の宛先情報(x2,y2)が算出されているため、座標(x2,y2)に位置するPEまで伝達され、最後尾の加算命令I1が実行される。そして、実行結果のデータsp+0に、加算命令I1を除いた拡張識別情報が付加され、新たなパケットP7が生成される。なお、パケットP7から算出される宛先情報を(x5,y5)とする。
パケットP7は、座標(x5,y5)に位置するPEまで伝達され、最後尾の読み出し命令I2(1入力・1出力命令)が実行される。そして、実行結果のデータ*(sp+0)に、読み出し命令I2を除いた拡張識別情報が付加され、新たなパケットP8が生成される。なお、パケットP8は、マスクされた拡張識別情報がパケットP5と同一になるため、パケットP5と同一の宛先情報(x3,y3)が算出される。
パケットP8およびP5は、座標(x3,y3)に位置するPEまで伝達され、最後尾の除算命令I3が実行される。そして、実行結果のデータ*(sp+0)/2に、除算命令I3を除いた拡張識別情報が付加され、新たなパケットP9が生成される。なお、パケットP9は、マスクされた拡張識別情報がパケットP6と同一になるため、パケットP6と同一の宛先情報(x4,y4)が算出される。
パケットP6およびP9は、座標(x4,y4)に位置するPEまで伝達され、最後尾の書き込み命令I5が実行される。そして、実行結果のデータ*(dp+0)=*(sp+0)/2に、書き込み命令I5を除いた拡張識別情報が付加され、新たなパケットP10が生成される。
パケットP10は、処理命令を含まないため、MCE IDが示すMCE301まで戻される。パケットP10をMCE301まで戻すため、各PEの入出力部は、例外処理を行う必要がある。図12においては、一例として、宛先情報算出部211が処理命令を含まないパケットの宛先情報を(−1,m)と算出している。ここで、MCE ID=mとする。この場合、パケットP10の宛先情報は、(−1,1)となる。例えば、図3において、PE115がパケットP10を生成した場合には、パケットP10は、PE114、PE113、PE109、PE105、およびPE101を経由して、MCE301まで伝達される。
なお、各PEにおいて、バッファメモリやオペランドバッファが満杯となり、取得パケットを処理できないビジー状態の場合にも、当該パケットをMCE IDが示すMCEまで戻すことが望ましい。この場合の例外処理は、例えば、パケットの命令数情報を最大命令数より大きな値とし、このようなパケットの宛先情報も(−1,m)と算出すればよい。さらに、何れかのPEがビジー状態の間、各MCEは、新たな処理IDのパケットの発行を停止することが望ましい。このようなビジー状態の制御には、例えば、すべてのPEおよびMCEに接続された制御信号線を設け、当該制御信号線を介してビジー状態を示すビジー信号を送信すればよい。
===データ処理装置の動作の他の具体例===
図7に示したパケットの構成は、処理命令部分に5個までの命令しか含むことができない。そのため、より複雑な処理を行うためには、パケットの処理命令部分に命令を追加する必要がある。
図5に示した命令追加命令(記号/16進表記:「app2L」/52H、「app2R」/53H)は、このような命令の追加機能を実現することができる。以下、図16ないし18を適宜参照して、命令追加命令の実行を含むデータ処理装置1の動作の具体例について説明する。ここでは、一例として、配列sp[1024]の各要素に4を乗算したうえで1を加算し、さらに2で除算した値を配列dp[1024]に格納する処理について説明する。
図16は、このような処理のforループ内の処理に対応するデータフロー図を示している。
図16において、D11ないしD18はデータを示しており、Iaは、命令追加命令を示しており、I11ないしI17は命令追加命令以外の命令を示している。加算命令I16は、データD11(dp)およびデータD12(ii)を加算し、データdp+iiを出力し、加算命令I11は、データD13(sp)およびデータD14(ii)を加算し、データsp+iiを出力する。
データD15は、命令列(sequence of instructions)であり、命令追加命令Iaは、データsp+iiのパケットの処理命令部分にデータD15を追加する。なお、データD15の命令列は、データsp+iiのパケットに対する命令追加命令Ia以降の処理に対応しており、具体的には、命令I12ないしI15、およびI17に相当する。
命令追加命令Iaによって追加された命令のうち、まず、読み出し命令I12は、記憶装置6からデータ*(sp+ii)を読み出す。
次に、乗算命令I13は、データ*(sp+ii)にデータD16(4)を乗算し、データ*(sp+ii)*4を出力する。
次に、加算命令I14は、データ*(sp+ii)*4にデータD17(1)を加算し、データ*(sp+ii)*4+1を出力する。
次に、除算命令I15は、データ*(sp+ii)*4+1をデータD18(2)で除算し、データ[*(sp+ii)*4+1]/2を出力する。
最後に、書き込み命令I17は、記憶装置6のデータ*(dp+ii)にデータ[*(sp+ii)*4+1]/2を書き込む。
以上のデータフローによって、配列sp[1024]の1つの要素に4を乗算したうえで1を加算し、さらに2で除算した値が配列dp[1024]に格納される。図17は、図16に示したデータフロー図に基づいて生成された基本パケット列に対して、forループを展開した後のパケット列のうち、MCE ID=1、かつ処理ID=1である、最初の8パケットP11ないしP18を示している。
ここで、図18を参照して、図17に示したパケットP11ないしP18に対するデータ処理装置1の動作の具体例について説明する。
パケットP11およびP12は、同一の宛先情報が算出されるため、当該同一の宛先情報が示すPEまで伝達され、最後尾の加算命令I16が実行される。そして、実行結果のデータdp+0に、加算命令I16を除いた拡張識別情報が付加され、新たなパケットP19が生成される。
同様に、パケットP13およびP14は、同一の宛先情報が算出されるため、当該同一の宛先情報が示すPEまで伝達され、最後尾の加算命令I11が実行される。そして、実行結果のデータsp+0に、加算命令I11を除いた拡張識別情報が付加され、新たなパケットP20が生成される。なお、パケットP20は、マスクされた拡張識別情報がパケットP15と同一になるため、パケットP15と同一の宛先情報が算出される。
パケットP20およびP15は、同一の宛先情報が示すPEまで伝達され、最後尾の命令追加命令Iaが実行される。そして、パケットP20のデータsp+0に、処理命令部分から命令追加命令Iaを除いたうえでデータD15が追加された拡張識別情報が付加され、新たなパケットP21が生成される。
パケットP21は、算出された宛先情報が示すPEまで伝達され、最後尾の読み出し命令I12(1入力・1出力命令)が実行される。そして、実行結果のデータ*(sp+0)に、読み出し命令I12を除いた拡張識別情報が付加され、新たなパケットP22が生成される。なお、パケットP22は、マスクされた拡張識別情報がパケットP16と同一になるため、パケットP16と同一の宛先情報が算出される。
パケットP22およびP16は、同一の宛先情報が示すPEまで伝達され、最後尾の乗算命令I13が実行される。そして、実行結果のデータ*(sp+0)*4に、乗算命令I13を除いた拡張識別情報が付加され、新たなパケットP23が生成される。なお、パケットP23は、マスクされた拡張識別情報がパケットP17と同一になるため、パケットP17と同一の宛先情報が算出される。
パケットP23およびP17は、同一の宛先情報が示すPEまで伝達され、最後尾の加算命令I14が実行される。そして、実行結果のデータ*(sp+0)*4+1に、加算命令I14を除いた拡張識別情報が付加され、新たなパケットP24が生成される。なお、パケットP24は、マスクされた拡張識別情報がパケットP18と同一になるため、パケットP18と同一の宛先情報が算出される。
パケットP24およびP18は、同一の宛先情報が示すPEまで伝達され、最後尾の除算命令I15が実行される。そして、実行結果のデータ[*(sp+0)*4+1]/2に、除算命令I15を除いた拡張識別情報が付加され、新たなパケットP25が生成される。なお、パケットP25は、マスクされた拡張識別情報がパケットP19と同一になるため、パケットP19と同一の宛先情報が算出される。
パケットP19およびP25は、同一の宛先情報が示すPEまで伝達され、最後尾の書き込み命令I17が実行される。そして、実行結果のデータ*(dp+0)=[*(sp+0)*4+1]/2に、書き込み命令I17を除いた拡張識別情報が付加され、新たなパケットP26が生成される。なお、パケットP26は、処理命令を含まないため、MCE IDが示すMCE301まで戻される。
ところで、書き込み命令I17の実行によって、具体的には、パケットP19のデータdp+0が示す記憶装置6のアドレスに記憶されているデータ*(dp+0)に、パケットP25のデータ[*(sp+0)*4+1]/2が書き込まれる。したがって、パケットP26のデータ*(dp+0)=[*(sp+0)*4+1]/2は、書き込み命令I17の実行自体を示している。そのため、書き込み命令I17の実行後は、パケットP26をMCE301まで戻すことなく消滅させてもよい。
このようにして、図5に示した命令追加命令を実行することによって、パケットの処理命令部分に命令を追加することができる。また、同様に、図5に示したデータ追加命令(記号/16進表記:「app1L」/50H、「app1R」/51H)を実行することによって、パケットのデータ部分にデータを追加することもできる。
===パケットの他の構成例===
図7において、データ処理装置1によって処理されるパケットの構成を示したが、これに限定されるものではない。ここで、データ処理装置1によって処理されるパケットの他の構成例を図19に示す。なお、図19においては、図17に示したパケットP11ないしP18と同じ実行結果を得られるパケットP31ないしP38が示されている。
図19において、拡張識別情報部分は、図7と同様の構成となっている。しかしながら、各PEは、新たなパケットを生成する際に、拡張識別情報部分から実行された命令を除かないものとする。この場合、最初に実行されるべき命令が最後尾に配置されない場合もあり、命令数情報は、未処理の命令数や最初に実行されるべき命令を示すために必須の情報となる。
一方、データ部分は、データ本体のほか、当該データのデータタイプ情報および延長フラグを含む。また、データタイプ情報は、例えば「整数型」や「浮動小数点型」などのデータタイプを示し、データタイプごとに予めデータ長を設定しておくことによって、データ長情報の機能も実現することができる。さらに、データタイプとして、「命令型」を備えることによって、後述するように、命令の追加機能を実現することができる。図20は、当該パケットの構成におけるデータフロー図を示しており、命令追加命令Iaを用いることなく、命令追加処理Paによって命令の追加機能を実現している。なお、延長フラグは、命令追加処理Paにおいて用いられる。
また、図19において、パケットP31、P32、およびP36ないしP38は、データ本体および拡張識別情報部分が、図17に示したパケットP11、P12、およびP16ないしP18と一致している。なお、これらのパケットは、いずれも、データタイプ情報が「整数型」、延長フラグが「0」となっている。
パケットP33およびP34は、パケットP13およびP14から命令追加命令IaLが除かれ、命令数情報が「1」となっている。また、命令追加命令IaLの代わりに、命令追加処理Paにおいて処理命令部分に命令が追加される側であることを示すため、延長フラグが「1」となっている。なお、これらのパケットは、いずれもデータタイプ情報が「整数型」となっている。
パケットP35は、命令追加命令IaRの代わりに、パケットP33およびP34と同一の処理命令を含み、命令追加処理Paにおいて命令を追加する側であることを示すため、データタイプ情報が「命令型」となっている。しかしながら、パケットP33およびP34と同一の処理命令は、パケットP35のデータD15に対して処理されるべきものではないため、命令数情報が「0」となっている。なお、パケットP35は、延長フラグが「0」となっている。
なお、図19においては、宛先情報を算出する際、および取得パケットと記憶パケットとを比較する際に用いられる部分を、各パケットに対して矢印の範囲で示している。例えば、パケットP31ないしP34、およびP36ないしP38においては、識別情報部分、および処理命令部分のうち命令数情報が示す未処理の命令のみが抽出され、最初に実行されるべき命令の左右情報がマスクされて、宛先情報の算出などが行われる。したがって、これらのパケットにおいては、新たなパケットを生成する際に拡張識別情報部分から実行された命令を除く場合と同様に、宛先情報の算出などが行われる。
しかしながら、データタイプ情報が「命令型」であるパケットP35、および延長フラグが「1」であるパケットにおいては、命令数情報が「0」である場合に、拡張識別情報部分全体に基づいて、宛先情報の算出などが行われる。
ここで、図21を参照して、図19に示したパケットP31ないしP38に対するデータ処理装置1の動作の具体例について説明する。
パケットP31およびP32は、同一の宛先情報が算出されるため、当該同一の宛先情報が示すPEまで伝達され、命令数情報が示す最初に実行されるべき加算命令I16が実行される。そして、実行結果のデータdp+0に、命令数情報から1を減算した拡張識別情報が付加され、新たなパケットP39が生成される。なお、パケットP39は、命令数情報が「1」となるため、残存している加算命令I16は、宛先情報の算出に用いられない。
同様に、パケットP33およびP34は、同一の宛先情報が算出されるため、当該同一の宛先情報が示すPEまで伝達され、命令数情報が示す最初に実行されるべき加算命令I11が実行される。そして、実行結果のデータsp+0に、命令数情報から1を減算した拡張識別情報が付加され、新たなパケットP40が生成される。なお、パケットP40は、延長フラグが「1」であり、命令数情報が「0」となるため、拡張識別情報部分全体に基づいて、パケットP35と同一の宛先情報が算出される。
いずれも命令数情報が「0」であるパケットP40およびP35は、同一の宛先情報が示すPEまで伝達され、命令追加処理Paが行われる。そして、延長フラグが「1」であるパケットP40のデータsp+0に、処理命令部分をデータタイプ情報が「命令型」であるパケットP35のデータD15とした拡張識別情報が付加され、新たなパケットP41が生成される。
なお、パケットP41の命令数情報は、データD15に含まれていた命令数「5」となる。また、パケットP41の延長フラグは、パケットP35の延長フラグ「0」を継承する(inheritance)。一方、データタイプ情報が「命令型」であるパケットの延長フラグを「1」とすることによって、命令追加処理によって新たに生成されるパケットに対しても命令追加処理を行うことができる。
パケットP41は、算出された宛先情報が示すPEまで伝達され、命令数情報が示す最初に実行されるべき読み出し命令I12(1入力・1出力命令)が実行される。そして、実行結果のデータ*(sp+0)に、命令数情報から1を減算した拡張識別情報が付加され、新たなパケットP42が生成される。なお、パケットP42は、命令数情報が「4」となるため、残存している読み出し命令I12は、宛先情報の算出に用いられず、パケットP36と同一の宛先情報が算出される。
パケットP42およびP36は、同一の宛先情報が示すPEまで伝達され、命令数情報が示す最初に実行されるべき乗算命令I13が実行される。そして、実行結果のデータ*(sp+0)*4に、命令数情報から1を減算した拡張識別情報が付加され、新たなパケットP43が生成される。なお、パケットP43は、命令数情報が「3」となるため、残存している乗算命令I13および読み出し命令I12は、宛先情報の算出に用いられず、パケットP37と同一の宛先情報が算出される。
パケットP43およびP37は、同一の宛先情報が示すPEまで伝達され、命令数情報が示す最初に実行されるべき加算命令I14が実行される。そして、実行結果のデータ*(sp+0)*4+1に、命令数情報から1を減算した拡張識別情報が付加され、新たなパケットP44が生成される。なお、パケットP44は、命令数情報が「2」となるため、残存している加算命令I14、乗算命令I13、および読み出し命令I12は、宛先情報の算出に用いられず、パケットP38と同一の宛先情報が算出される。
パケットP44およびP38は、同一の宛先情報が示すPEまで伝達され、命令数情報が示す最初に実行されるべき除算命令I15が実行される。そして、実行結果のデータ[*(sp+0)*4+1]/2に、命令数情報から1を減算した拡張識別情報が付加され、新たなパケットP45が生成される。なお、パケットP45は、命令数情報が「1」となるため、残存している除算命令I15、加算命令I14、乗算命令I13、および読み出し命令I12は、宛先情報の算出に用いられず、パケットP39と同一の宛先情報が算出される。
パケットP39およびP45は、同一の宛先情報が示すPEまで伝達され、命令数情報が示す最初に実行されるべき書き込み命令I17が実行される。そして、実行結果のデータ*(dp+0)=[*(sp+0)*4+1]/2に、命令数情報から1を減算した拡張識別情報が付加され、新たなパケットP46が生成される。なお、パケットP46は、データタイプ情報が「命令型」でも、延長フラグが「1」でもなく、命令数情報が「0」となる。したがって、パケットP46は、処理されるべき処理命令を含まないため、MCE IDが示すMCE301まで戻されるか、または消滅する。
このようにして、命令追加命令を用いることなく、命令追加処理Paを行うことによって、パケットの処理命令部分に命令を追加することができる。なお、さらに命令追加命令を実行することによって、パケットの処理命令部分に命令を追加することもできる。
前述したように、データ処理装置1において、各MCEは、データごとに、処理命令を含む拡張識別情報が付加されたパケットを生成し、各パケットは、拡張識別情報に応じて定まる宛先情報が示すPEによって取得され、当該PEがパケットの命令を実行することによって、処理対象のパケットがそのビット列自体に基づいて配置され、既存のソフトウェア資産を略そのまま利用して、処理の並列性を向上させることができる。
また、宛先情報が拡張識別情報に応じて動的に定まることによって、処理対象のパケットがそのビット列自体に基づいて動的に配置され、処理の並列性をより向上させることができる。
また、拡張識別情報に基づいて擬似乱数を生成し、当該擬似乱数に応じて宛先情報を算出することによって、パケット分布を一様分布に近づけ、PEの使用効率の向上を図ることができる。
また、宛先情報が当該PEを示さないパケットを他のPEに転送することによって、宛先情報が示すPEまでパケットを伝達することができる。
また、各PEは、取得パケットの最初に実行されるべき命令を実行し、拡張識別情報のうち、実行された命令の次に実行されるべき命令を最初に実行されるべき命令とすることによって、当該拡張識別情報を実行結果のデータに付加して新たなパケットを生成することができる。
また、各PEは、取得パケットの最初に実行されるべき命令を実行し、拡張識別情報から実行された命令を除くことによって、当該拡張識別情報を実行結果のデータに付加して新たなパケットを生成することができる。
また、マスクされた拡張識別情報が取得パケットと一致する記憶パケットが存在するときには、当該一致する2つのパケットを組にしてALU260に入力し、一致する記憶パケットが存在しないときには、取得パケットをバッファメモリ240に記憶させることによって、2項演算を行う2入力・1出力命令を実行することができる。
また、取得パケットの最初に実行されるべき命令が1入力・1出力命令である場合には、取得パケットのみをALU260に入力することによって、単項演算を行う1入力・1出力命令を実行することができる。
また、取得パケットの拡張識別情報と記憶パケットの拡張識別情報との比較において、最初に実行されるべき命令の左右情報をマスクすることによって、非可換演算である2項演算を行う2入力・1出力命令を実行することができる。
また、取得パケットのマスクされた拡張識別情報に基づいてハッシュ値を算出し、取得パケットをそのハッシュ値と対応付けてハッシュテーブルに格納することによって、マスクされた拡張識別情報が取得パケットと一致する記憶パケットの検索を効率よく行うことができる。
また、マスクされた拡張識別情報に基づいて擬似乱数を生成し、当該擬似乱数に応じて宛先情報を算出することによって、マスクされた拡張識別情報が同一のパケットをPEまで伝達するとともに、PEの使用効率の向上を図ることができる。
また、隣接するPE間のみを互いに接続することによって、配線遅延の問題を回避することができる。
また、タイルプロセッサと同様にPEを行列状に配置し、各PEは、宛先情報が示すPEに近づく方向に隣接するPEに当該パケットを転送することによって、パケットの移動経路を最短とし、PE数が増加しても動作速度を高速に保つことができる。
また、各MCEが記憶装置6に記憶されている実行コードや中間コードからパケット列を逐次生成することによって、インタプリタ型の処理系を構築することができる。
また、処理されるべき処理命令を含まないパケットをMCE IDが示すMCEまで戻すことによって、各MCEは、当該パケットの処理IDの処理が完了し、当該処理IDを再び使用することができる。
また、各MCEがパケットを逐次生成するデータ処理装置1を備えたデータ処理システムを構成することによって、インタプリタ型の並列コンピュータシステムにおける処理の並列性を向上させることができる。
また、前述したように、図7または図19に示したパケットの構成において、各パケットは、拡張識別情報に応じて定まる宛先情報が示すPEによって取得されて、命令が実行されることによって、処理対象のパケットがそのビット列自体に基づいて配置され、既存のソフトウェア資産を略そのまま利用して、処理の並列性を向上させることができる。
また、ソースプログラムP0から予め生成されたパケット列を実行コードP2として記録媒体に記録することによって、当該実行コードP2をコンパイラ型の処理系において利用することができる。
また、ソースプログラムP0から予め生成されたパケット列を実行コードP2として記憶装置6に記憶させることによって、各MCEは、当該実行コードP2を読み込んで利用することができる。
また、展開後のパケット列のうち、識別情報部分の少なくとも一部を省略した(ヌル文字とした)中間パケット列を記録媒体に記録することによって、当該中間パケット列に省略されたMCE IDや処理IDを設定したうえで、コンパイラ型の処理系において利用することができる。
また、展開後のパケット列のうち、識別情報部分の少なくとも一部を省略した(ヌル文字とした)中間パケット列を記憶装置6に記憶させることによって、各MCEは、当該中間パケット列を読み込んで、省略されたMCE IDや処理IDを設定したうえで利用することができる。
また、各MCEが予め生成されたパケット列を読み込むデータ処理装置1を備えたデータ処理システムを構成することによって、コンパイラ型の並列コンピュータシステムにおける処理の並列性を向上させることができる。
また、前述したように、各PEは、データごとに、処理命令を含む拡張識別情報が付加されたパケットのうち、拡張識別情報に応じて定まる宛先情報が当該PEを示すパケットを取得して命令を実行することによって、処理対象のパケットがそのビット列自体に基づいて配置され、既存のソフトウェア資産を略そのまま利用して、処理の並列性を向上させることができる。
また、各PEは、宛先情報が当該PEを示さないパケットを他のPEに転送することによって、宛先情報が示すPEまでパケットを伝達することができる。
また、各PEは、取得パケットの最初に実行されるべき命令を実行し、実行結果のデータに、実行された命令の次に実行されるべき命令を最初に実行されるべき命令とする拡張識別情報を付加して新たなパケットを生成することによって、当該新たなパケットについても動的に配置して命令を実行することができる。
なお、上記実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得るとともに、本発明にはその等価物も含まれる。
1 データ処理装置
6 記憶装置
7 入力装置
8 出力装置
9 バス
100〜115 PE(処理要素)
210 入出力部
211 宛先情報算出部
212 発光素子
213 受光素子
214a〜214d 出力ポート
215a〜215d 入力ポート
230 比較・選択部
231 ハッシュ値算出部
240 バッファメモリ
250a、250b オペランドバッファ
260 ALU(算術論理演算部)
300〜303 MCE(メモリ制御要素)
400 キャッシュメモリ
500 通信路(伝送路)
501 透過材(コア)
502 反射材(クラッド)
503 吸収材

Claims (23)

  1. データごとに、当該データを識別する識別情報および当該データに対する1つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理する複数の処理部と、
    前記拡張識別情報の少なくとも前記命令情報のビット列に基づいて、前記パケットの宛先情報を算出する宛先情報算出部と、
    を備え、
    前記複数の処理部は、
    前記パケットのうち、前記宛先情報が当該処理部を示すパケットのみを取得する入出力部と、
    前記入出力部によって取得された前記パケットの前記処理命令を実行する演算部と、
    をそれぞれ有し、
    前記宛先情報算出部は、前記命令情報が複数の処理命令を示す場合には、少なくとも当該複数の処理命令を示すビット列に基づいて前記宛先情報を算出することを特徴とするデータ処理装置。
  2. データごとに、当該データを識別する識別情報および当該データに対する1つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理する複数の処理部と、
    前記拡張識別情報の少なくとも前記命令情報のビット列に基づいて、前記パケットの宛先情報を算出する宛先情報算出部と、
    を備え、
    前記複数の処理部は、
    前記パケットのうち、前記宛先情報が当該処理部を示すパケットのみを取得する入出力部と、
    前記入出力部によって取得された前記パケットの前記処理命令を実行する演算部と、
    前記パケットを記憶する記憶部と、
    前記入出力部によって取得された前記パケットの前記拡張識別情報と前記記憶部に記憶されている前記パケットの前記拡張識別情報とを比較して、当該取得されたパケットおよび当該記憶されているパケットから前記演算部に入力するパケットを選択する比較・選択部と、
    をそれぞれ有し、
    前記処理命令は、2つのパケットの前記データをそれぞれ左側および右側オペランドとする2項演算を行う処理命令を含み、
    前記比較・選択部は、前記入出力部によって取得された前記パケットの最初に実行されるべき処理命令が前記2項演算を行う処理命令である場合に、
    前記命令情報の所定の部分および前記識別情報が当該取得されたパケットと一致するパケットが前記記憶部に記憶されているときには、当該所定の部分および識別情報が一致する2つのパケットの前記データをそれぞれ前記左側および右側オペランドとして前記演算部に入力し、
    前記命令情報の前記所定の部分および前記識別情報が当該取得されたパケットと一致するパケットが前記記憶部に記憶されていないときには、当該取得されたパケットを前記記憶部に記憶させることを特徴とするデータ処理装置。
  3. 前記宛先情報算出部は、前記拡張識別情報の少なくとも前記命令情報のビット列から生成される擬似乱数に応じて前記宛先情報を算出することを特徴とする請求項1または請求項2に記載のデータ処理装置。
  4. 前記宛先情報算出部は、前記命令情報の前記所定の部分および前記識別情報のビット列から生成される擬似乱数に応じて前記宛先情報を算出することを特徴とする請求項2に記載のデータ処理装置。
  5. 前記宛先情報算出部は、予め生成された擬似乱数テーブルを参照して前記宛先情報を算出することを特徴とする請求項3または請求項4に記載のデータ処理装置。
  6. 前記複数の処理部は、前記宛先情報算出部をそれぞれ有することを特徴とする請求項1ないし請求項5の何れかに記載のデータ処理装置。
  7. 前記演算部は、前記入出力部によって取得された前記パケットの前記処理命令のうち最初に実行されるべき処理命令を実行し、当該実行によって生成されるデータに、実行された前記処理命令の次に実行されるべき処理命令を最初に実行されるべき処理命令とする前記拡張識別情報が付加されたパケットを生成して前記入出力部に入力することを特徴とする請求項1ないし請求項6の何れかに記載のデータ処理装置。
  8. 前記演算部は、前記入出力部によって取得された前記パケットの前記処理命令のうち最初に実行されるべき処理命令を実行し、当該実行によって生成されるデータに、実行された前記処理命令を除く前記拡張識別情報が付加されたパケットを生成して前記入出力部に入力することを特徴とする請求項7に記載のデータ処理装置。
  9. 前記処理命令は、2つのパケットの前記データをそれぞれ左側および右側オペランドとする2項演算を行う処理命令を含み、
    前記複数の処理部は、
    前記パケットを記憶する記憶部と、
    前記入出力部によって取得された前記パケットの前記拡張識別情報と前記記憶部に記憶されている前記パケットの前記拡張識別情報とを比較して、当該取得されたパケットおよび当該記憶されているパケットから前記演算部に入力するパケットを選択する比較・選択部と、
    をそれぞれさらに有し、
    前記比較・選択部は、前記入出力部によって取得された前記パケットの最初に実行されるべき処理命令が前記2項演算を行う処理命令である場合に、
    前記命令情報の所定の部分および前記識別情報が当該取得されたパケットと一致するパケットが前記記憶部に記憶されているときには、当該所定の部分および識別情報が一致する2つのパケットの前記データをそれぞれ前記左側および右側オペランドとして前記演算部に入力し、
    前記命令情報の前記所定の部分および前記識別情報が当該取得されたパケットと一致するパケットが前記記憶部に記憶されていないときには、当該取得されたパケットを前記記憶部に記憶させることを特徴とする請求項1に記載のデータ処理装置。
  10. 前記処理命令は、1つのパケットの前記データをオペランドとする単項演算を行う処理命令を含み、
    前記比較・選択部は、前記入出力部によって取得された前記パケットの最初に実行されるべき処理命令が前記単項演算を行う処理命令である場合には、当該取得されたパケットを前記演算部に入力することを特徴とする請求項2または請求項9に記載のデータ処理装置。
  11. 前記処理命令は、前記2項演算が非可換演算である場合に前記データを前記左側または右側オペランドの何れとするかを示す左右情報を含み、
    前記命令情報の前記所定の部分は、当該命令情報のうち最初に実行されるべき処理命令の前記左右情報以外の部分であることを特徴とする請求項2、請求項9および請求項10の何れかに記載のデータ処理装置。
  12. 前記記憶部は、前記パケットが格納されるハッシュテーブルを含み、
    前記比較・選択部は、前記入出力部によって取得された前記パケットの前記命令情報の前記所定の部分および前記識別情報に基づいてハッシュ値を算出するハッシュ値算出部を含み、当該取得されたパケットを前記記憶部に記憶させる場合には、当該取得されたパケットを前記ハッシュ値と対応付けて前記ハッシュテーブルに格納することを特徴とする請求項2、請求項9、請求項10および請求項11の何れかに記載のデータ処理装置。
  13. 前記入出力部は、前記パケットのうち前記宛先情報が当該処理部を示さないパケットを他の処理部に転送することを特徴とする請求項1ないし請求項12の何れかに記載のデータ処理装置。
  14. 前記入出力部は、前記パケットのうち前記宛先情報が当該処理部を示さないパケットを、当該処理部に隣接する処理部に転送することを特徴とする請求項13に記載のデータ処理装置。
  15. 前記複数の処理部は、行列状に配置され、
    前記入出力部は、前記パケットのうち前記宛先情報が当該処理部を示さないパケットを、前記宛先情報が示す処理部に近づく方向に隣接する処理部に転送することを特徴とする請求項14に記載のデータ処理装置。
  16. 記憶装置に記憶されているプログラムから前記パケットを生成する制御部をさらに備えることを特徴とする請求項1ないし請求項15の何れかに記載のデータ処理装置。
  17. 前記制御部は、前記識別情報が当該制御部を示す発行元情報を含む前記パケットを生成して、前記複数の処理部の何れかに発行し、
    前記入出力部は、前記パケットが、処理されるべき前記処理命令を含まない場合には、当該パケットを前記発行元情報が示す制御部に戻すように転送することを特徴とする請求項16に記載のデータ処理装置。
  18. 請求項16または請求項17に記載のデータ処理装置と、
    前記プログラムが記憶されている前記記憶装置と、
    前記データおよび前記プログラムを含む情報を入出力する入出力装置と、
    を備えることを特徴とするデータ処理システム。
  19. データごとに、当該データを識別する識別情報および当該データに対する1つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理するデータ処理方法であって、
    前記命令情報が複数の処理命令を示す場合には、少なくとも当該複数の処理命令を示すビット列に基づいて、前記パケットの宛先情報を算出し、
    複数の処理部が、それぞれ、
    前記パケットのうち、前記宛先情報が当該処理部を示すパケットのみを取得し、
    当該パケットの前記処理命令を実行することを特徴とするデータ処理方法。
  20. データごとに、当該データを識別する識別情報および当該データに対する1つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理するデータ処理方法であって、
    前記拡張識別情報の少なくとも前記命令情報のビット列に基づいて、前記パケットの宛先情報を算出し、
    複数の処理部が、それぞれ、
    前記パケットのうち、前記宛先情報が当該処理部を示すパケットのみを取得し、
    当該パケットの最初に実行されるべき処理命令が2つのパケットの前記データをそれぞれ左側および右側オペランドとする2項演算を行う処理命令である場合には、前記命令情報の所定の部分および前記識別情報が一致する2つのパケットの前記データをそれぞれ前記左側および右側オペランドとして、当該2項演算を行う処理命令を実行することを特徴とするデータ処理方法。
  21. 前記拡張識別情報の少なくとも前記命令情報のビット列から生成される擬似乱数に応じて前記宛先情報を算出することを特徴とする請求項19または請求項2に記載のデータ処理方法。
  22. 前記命令情報の前記所定の部分および前記識別情報のビット列から生成される擬似乱数に応じて前記宛先情報を算出することを特徴とする請求項2に記載のデータ処理方法。
  23. 前記複数の処理部が、それぞれ、前記パケットのうち、前記宛先情報が当該処理部を示すパケットのみを取得し、当該パケットの少なくとも1つの処理命令を実行し、前記命令情報が当該実行された残りの処理命令を示すパケットを生成し、
    前記複数の処理部によってそれぞれ生成されたパケットの前記残りの処理命令が複数存在する場合には、少なくとも当該複数の残りの処理命令を示すビット列に基づいて、当該パケットの前記残りの処理命令を実行する処理部を示す前記宛先情報を算出することによって、
    前記複数の処理部によってそれぞれ生成されたパケットのうち、少なくとも前記残りの処理命令を示すビット列の所定の部分が一致する2つのパケットが同一の処理部によって取得され、前記残りの処理命令が実行されることを特徴とする請求項19に記載のデータ処理方法。
JP2010199711A 2009-12-02 2010-09-07 データ処理装置、データ処理システムおよびデータ処理方法 Active JP5057256B2 (ja)

Priority Applications (8)

Application Number Priority Date Filing Date Title
JP2010199711A JP5057256B2 (ja) 2009-12-02 2010-09-07 データ処理装置、データ処理システムおよびデータ処理方法
EP10834352.6A EP2507718A4 (en) 2009-12-02 2010-11-10 Data processing apparatus, data processing system, packet, recording medium, storage device, and data processing method
PCT/JP2010/006593 WO2011067896A1 (en) 2009-12-02 2010-11-10 Data processing apparatus, data processing system, packet, recording medium, storage device, and data processing method
CN201080055008.8A CN102770855B (zh) 2009-12-02 2010-11-10 数据处理设备、数据处理系统、包、记录介质、存储装置和数据处理方法
KR1020127014546A KR101450675B1 (ko) 2009-12-02 2010-11-10 데이터 처리 장치, 데이터 처리 시스템, 패킷, 기록 매체, 기억 장치, 및 데이터 처리 방법
TW099139208A TWI533208B (zh) 2009-12-02 2010-11-15 Data processing device, data processing system, packet, recording medium, memory device and data processing method
US13/486,876 US9535671B2 (en) 2009-12-02 2012-06-01 Parallel data processing apparatus and method
US15/359,127 US10025594B2 (en) 2009-12-02 2016-11-22 Parallel data processing apparatus, system, and method

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2009274033 2009-12-02
JP2009274033 2009-12-02
JP2010199711A JP5057256B2 (ja) 2009-12-02 2010-09-07 データ処理装置、データ処理システムおよびデータ処理方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012132973A Division JP2012194992A (ja) 2009-12-02 2012-06-12 データ処理装置、データ処理システム、パケット、記録媒体、記憶装置およびデータ処理方法

Publications (2)

Publication Number Publication Date
JP2011138479A JP2011138479A (ja) 2011-07-14
JP5057256B2 true JP5057256B2 (ja) 2012-10-24

Family

ID=44114874

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2010199711A Active JP5057256B2 (ja) 2009-12-02 2010-09-07 データ処理装置、データ処理システムおよびデータ処理方法
JP2011544227A Pending JPWO2011068018A1 (ja) 2009-12-02 2010-11-11 データ処理装置、データ処理システムおよびデータ処理方法
JP2012132973A Pending JP2012194992A (ja) 2009-12-02 2012-06-12 データ処理装置、データ処理システム、パケット、記録媒体、記憶装置およびデータ処理方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2011544227A Pending JPWO2011068018A1 (ja) 2009-12-02 2010-11-11 データ処理装置、データ処理システムおよびデータ処理方法
JP2012132973A Pending JP2012194992A (ja) 2009-12-02 2012-06-12 データ処理装置、データ処理システム、パケット、記録媒体、記憶装置およびデータ処理方法

Country Status (7)

Country Link
US (1) US8817793B2 (ja)
EP (2) EP2507718A4 (ja)
JP (3) JP5057256B2 (ja)
KR (1) KR101450675B1 (ja)
CN (1) CN102770855B (ja)
TW (2) TWI533208B (ja)
WO (1) WO2011068018A1 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
US9021241B2 (en) 2010-06-18 2015-04-28 The Board Of Regents Of The University Of Texas System Combined branch target and predicate prediction for instruction blocks
TW201346749A (zh) * 2012-02-08 2013-11-16 Mush A Co Ltd 資料處理裝置、資料處理系統、資料結構、記錄媒體、記憶裝置及資料處理方法
WO2013141290A1 (ja) * 2012-03-23 2013-09-26 株式会社Mush-A データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法
US9792252B2 (en) 2013-05-31 2017-10-17 Microsoft Technology Licensing, Llc Incorporating a spatial array into one or more programmable processor cores
JP6298937B2 (ja) * 2013-10-14 2018-03-20 武者野 満 データ処理装置
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US9720693B2 (en) 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US9940136B2 (en) 2015-06-26 2018-04-10 Microsoft Technology Licensing, Llc Reuse of decoded instructions
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
KR102182198B1 (ko) * 2015-08-11 2020-11-24 아브 이니티오 테크놀로지 엘엘시 데이터 처리 그래프 컴파일
US10095519B2 (en) 2015-09-19 2018-10-09 Microsoft Technology Licensing, Llc Instruction block address register
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US10031756B2 (en) 2015-09-19 2018-07-24 Microsoft Technology Licensing, Llc Multi-nullification
US10061584B2 (en) 2015-09-19 2018-08-28 Microsoft Technology Licensing, Llc Store nullification in the target field
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US20170083327A1 (en) 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Implicit program order
US10936316B2 (en) 2015-09-19 2021-03-02 Microsoft Technology Licensing, Llc Dense read encoding for dataflow ISA
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US10198263B2 (en) 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
MA44821A (fr) * 2016-02-27 2019-01-02 Kinzinger Automation Gmbh Procédé d'allocation d'une pile de registres virtuels dans une machine à pile
US11106467B2 (en) 2016-04-28 2021-08-31 Microsoft Technology Licensing, Llc Incremental scheduler for out-of-order block ISA processors
US11531552B2 (en) 2017-02-06 2022-12-20 Microsoft Technology Licensing, Llc Executing multiple programs simultaneously on a processor core
US10963379B2 (en) 2018-01-30 2021-03-30 Microsoft Technology Licensing, Llc Coupling wide memory interface to wide write back paths
US10824429B2 (en) 2018-09-19 2020-11-03 Microsoft Technology Licensing, Llc Commit logic and precise exceptions in explicit dataflow graph execution architectures
WO2020251170A1 (ko) * 2019-06-13 2020-12-17 엘지전자 주식회사 무선랜 시스템에서 무선 광통신을 통한 상향 링크 전송 기법

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689647A (en) * 1989-03-14 1997-11-18 Sanyo Electric Co., Ltd. Parallel computing system with processing element number setting mode and shortest route determination with matrix size information
JP2568452B2 (ja) * 1990-02-27 1997-01-08 シャープ株式会社 データフロー型情報処理装置
JP2003162514A (ja) * 2001-11-27 2003-06-06 Nec Corp 複数プロセッサによる並列分散制御方式
US7590397B2 (en) * 2003-09-10 2009-09-15 Sony Corporation Signal processing apparatus and signal processing method, program, and recording medium
JP2005108086A (ja) * 2003-10-01 2005-04-21 Handotai Rikougaku Kenkyu Center:Kk データ処理装置
JP2005198267A (ja) * 2003-12-10 2005-07-21 Japan Telecom Co Ltd 中央演算処理装置、制御センタ装置、それらを用いたネットワークシステム、及びその通信制御方法
US7324605B2 (en) * 2004-01-12 2008-01-29 Intel Corporation High-throughput multicarrier communication systems and methods for exchanging channel state information
JP2005202873A (ja) 2004-01-19 2005-07-28 Sony Corp 分散処理システム、分散処理制御端末、分散処理方法、及び分散処理プログラム
JP2005259030A (ja) * 2004-03-15 2005-09-22 Sharp Corp 性能評価装置、性能評価方法、プログラムおよびコンピュータ読取可能記録媒体
JP2006053662A (ja) 2004-08-10 2006-02-23 Matsushita Electric Ind Co Ltd 多重プロセッサ
JP4923240B2 (ja) 2006-01-17 2012-04-25 国立大学法人東京工業大学 プログラム処理装置、並列処理プログラム、プログラム処理方法、並列処理コンパイラ、並列処理コンパイラを格納した記録媒体およびマルチプロセッサシステム
KR101399361B1 (ko) * 2006-08-25 2014-05-26 삼성전자주식회사 무선 통신 방법 및 장치
US7441099B2 (en) * 2006-10-03 2008-10-21 Hong Kong Applied Science and Technology Research Institute Company Limited Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit
JP2008130712A (ja) 2006-11-20 2008-06-05 Hitachi Maxell Ltd 3端子型結晶シリコン素子

Also Published As

Publication number Publication date
CN102770855B (zh) 2015-06-17
KR101450675B1 (ko) 2014-10-14
TW201131381A (en) 2011-09-16
WO2011068018A1 (ja) 2011-06-09
EP2507718A1 (en) 2012-10-10
CN102770855A (zh) 2012-11-07
KR20120101433A (ko) 2012-09-13
JP2011138479A (ja) 2011-07-14
EP2509002A1 (en) 2012-10-10
US20130028260A1 (en) 2013-01-31
US8817793B2 (en) 2014-08-26
JP2012194992A (ja) 2012-10-11
TWI533208B (zh) 2016-05-11
JPWO2011068018A1 (ja) 2013-04-18
TW201120745A (en) 2011-06-16
EP2507718A4 (en) 2017-12-27

Similar Documents

Publication Publication Date Title
JP5057256B2 (ja) データ処理装置、データ処理システムおよびデータ処理方法
US10025594B2 (en) Parallel data processing apparatus, system, and method
JP5512803B2 (ja) ベクトル命令を取り扱うためのデータ処理装置および方法
KR101851439B1 (ko) 충돌 검출을 수행하고, 레지스터의 콘텐츠를 다른 레지스터의 데이터 구성요소 위치들로 브로드캐스트하기 위한 시스템들, 장치들 및 방법들
JP2006509306A (ja) 関係アプリケーションへのデータ処理システム相互参照用セルエンジン
JP6066423B2 (ja) データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法
US20140351563A1 (en) Advanced processor architecture
CN107851013B (zh) 数据处理装置和方法
JP6807073B2 (ja) 高速ベクトルによる動的なメモリ競合検出
JP3835764B2 (ja) プロセッサおよび記録媒体
JP3692793B2 (ja) コンパイラ、プロセッサおよび記録媒体
JP4444305B2 (ja) 半導体装置
EP0545927B1 (en) System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
JP6353359B2 (ja) データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法
US20140365751A1 (en) Operand generation in at least one processing pipeline
CN112947999B (zh) 一种精简指令集计算机指令功能扩展的方法及装置
JP6347629B2 (ja) 命令処理方法及び命令処理装置
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JP4703735B2 (ja) コンパイラ、コード生成方法、コード生成プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110415

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110415

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20110415

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20110502

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110808

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120612

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120703

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120719

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5057256

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250