(57)【要約】【課題】  簡単な構造でデータ転送を良好に実行できる並列演算装置を提供する。【解決手段】  事前に転送仲介回路１０２のマップテーブル１３３に複数のデータ受信ポート１３１と複数種類の転送ＩＤとの組み合わせごとに複数のデータ送信ポート１３２と複数種類の転送ＩＤとの組み合わせをデータ登録しておけば、その転送仲介回路１０２にデータ受信ポート１３１で転送ＩＤとともにデータ受信された転送データを、所定のデータ送信ポート１３２から次段の転送ＩＤとともに次段の転送仲介回路１０２や可変処理回路１０１にデータ送信させることができるので、複数の１０１のデータ転送を簡単な構造で良好に実行することができる。【選択図】  図１
2005078177.tif 000002
【特許請求の範囲】
【請求項１】
複数の可変処理回路が複数の転送仲介回路とともに所定形状に配列されており、前記可変処理回路はオブジェクトコードに対応して可変自在に各種処理を各々実行し、前記転送仲介回路は前記可変処理回路の相互のデータ転送を仲介する並列演算装置であって、
前記可変処理回路は、前記各種処理により任意に転送データの入力や出力を実行する処理実行手段と、前記転送仲介回路に出力する転送データに最終的な送信先の前記可変処理回路に対応して複数種類の転送ＩＤ(Identity)の一つを付与する転送付与手段と、を有しており、
前記転送仲介回路は、前記転送データを前記転送ＩＤとともに周囲の前記可変処理回路か前記転送仲介回路から個々に受信する複数のデータ受信ポートと、前記転送データを前記転送ＩＤとともに周囲の前記可変処理回路か前記転送仲介回路に個々に送信する複数のデータ送信ポートと、複数の前記データ受信ポートと複数種類の前記転送ＩＤとの組み合わせごとに複数の前記データ送信ポートと複数種類の前記転送ＩＤとの組み合わせを可変自在にデータ記憶する経路記憶手段と、前記データ受信ポートで前記転送ＩＤとともにデータ受信された前記転送データを前記経路記憶手段の記憶データに対応して次段の前記転送ＩＤとともに所定の前記データ送信ポートに送信させる転送制御手段と、を有している並列演算装置。
【請求項２】
複数の前記転送仲介回路の各々の前記経路記憶手段に複数の前記データ受信ポートと複数種類の前記転送ＩＤとの組み合わせごとに複数の前記データ送信ポートと複数種類の前記転送ＩＤとの組み合わせをデータ登録するデータ登録手段も有している請求項１に記載の並列演算装置。
【請求項３】
前記可変処理回路の処理実行手段は、２n 個まで前記転送データを出力し、
前記可変処理回路の転送付与手段は、前記転送データに２n 種類のｎビットの前記転送ＩＤの一つを付与する請求項１または２に記載の並列演算装置。
【請求項４】
複数の前記可変処理回路は、各々が矩形に形成されていて行列形状に配列されており、
複数の前記転送仲介回路は、複数の前記可変処理回路の各々に１個ずつ隣接されており、
前記転送仲介回路は、行列方向に位置する周囲の４個の前記転送仲介回路と隣接する前記可変処理回路と個々に通信する５個の前記データ受信ポートと５個の前記データ送信ポートとを有しており、
前記転送仲介回路の経路記憶手段は、５個の前記データ受信ポートと５個の前記データ送信ポートとを３ビットのポートＩＤで個々にデータ記憶する請求項１ないし３の何れか一項に記載の並列演算装置。
【請求項５】
前記可変処理回路の処理実行手段は、任意ビットの処理データを複数の所定ビットの前記転送データに分割して出力する請求項１ないし４の何れか一項に記載の並列演算装置。
【請求項６】
前記可変処理回路の処理実行手段は、複数段階の動作状態を動作サイクルごとに順次遷移させ、所定の動作状態のときに所定の前記転送ＩＤが付与されている前記転送データを受け付ける請求項１ないし５の何れか一項に記載の並列演算装置。
【請求項７】
前記可変処理回路は、個々にデータ設定される動作命令に対応してデータ処理を個々に実行する複数のデータ処理回路と、個々にデータ設定される動作命令に対応して複数の前記データ処理回路の接続関係を個々に切換制御する複数の配線切換回路と、が行列配置されている請求項１ないし６の何れか一項に記載の並列演算装置。
【請求項８】
前記可変処理回路は、前記データ処理回路と前記配線切換回路との動作命令を順次切り換えて複数段階の動作状態を動作サイクルごとに順次遷移させる状態管理回路も有している請求項７に記載の並列演算装置。
【請求項９】
前記可変処理回路は、所定の前記動作命令のときに複数の前記データ処理回路の少なくとも一部から前記転送データと前記転送ＩＤとを出力する請求項７または８に記載の並列演算装置。
【請求項１０】
前記可変処理回路は、所定の前記動作状態のときに複数の前記データ処理回路の少なくとも一部から前記転送データを出力するとともに前記状態管理回路から前記動作状態の状態ＩＤを前記転送ＩＤとしてデータ出力する請求項８に記載の並列演算装置。
【請求項１１】
オブジェクトコードに対応して処理動作を実行する演算処理回路を有しており、前記演算処理回路に処理データを入力して結果データを取得する演算処理装置であって、
前記演算処理回路が請求項１ないし１０の何れか一項に記載の並列演算装置からなる演算処理装置。
【請求項１２】
オブジェクトコードに対応して処理動作を実行する演算処理回路を有しており、前記演算処理回路に処理データを入力して結果データを取得する半導体集積回路であって、
前記演算処理回路が請求項１ないし１０の何れか一項に記載の並列演算装置からなる半導体集積回路。
【請求項１３】
半導体集積回路で各種のデータ処理を実行するコンピュータ装置であって、
請求項１２に記載の半導体集積回路を有しているコンピュータ装置。
【請求項１４】
請求項１ないし１０の何れか一項に記載の並列演算装置のソースコードからオブジェクトコードを生成するデータ処理方法であって、
前記並列演算装置の物理構造と物理特性とに対応した制約条件を事前にデータ登録しておき、一連の前記ソースコードを言語解析してＤＦＧ(Data Flow Graph)をデータ生成し、このＤＦＧから所定の前記制約条件により並列演算装置の順次遷移する複数段階の動作状態をスケジューリングしたＣＤＦＧ(Control DFG)をデータ生成し、このＣＤＦＧから所定の前記制約条件により前記動作状態のＲＴＬ(Register Transfer Level)記述をデータ生成し、このＲＴＬ記述から所定の前記制約条件により前記動作状態ごとのネットリストをデータ生成し、このネットリストに対応して前記ＲＴＬ記述を対応する前記オブジェクトコードにデータ変換するとともに前記動作状態ごとにデータ生成された前記ネットリストを前記オブジェクトコードにデータ変換するデータ処理方法において、
前記ソースコードから前記ネットリストをデータ生成するときに複数のタスクごとに転送データの転送関係を転送情報としてデータ生成し、
複数の前記タスクの転送情報をデータ照合して合計の転送コストが最少となる転送ルートとタスクの配置をデータ生成し、
このデータ生成された転送ルートのテーブル情報を前記ネットリストに統合させるデータ処理方法。
【請求項１５】
請求項１ないし１０の何れか一項に記載の並列演算装置のソースコードからオブジェクトコードを生成するデータ処理装置であって、
前記並列演算装置の物理構造と物理特性とに対応した制約条件を事前にデータ登録しておき、一連の前記ソースコードを言語解析してＤＦＧをデータ生成し、このＤＦＧから所定の前記制約条件により並列演算装置の順次遷移する複数段階の動作状態をスケジューリングしたＣＤＦＧをデータ生成し、このＣＤＦＧから所定の前記制約条件により前記動作状態のＲＴＬ記述をデータ生成し、このＲＴＬ記述から所定の前記制約条件により前記動作状態ごとのネットリストをデータ生成し、このネットリストに対応して前記ＲＴＬ記述を対応する前記オブジェクトコードにデータ変換するとともに前記動作状態ごとにデータ生成された前記ネットリストを前記オブジェクトコードにデータ変換するデータ処理装置において、
前記ソースコードから前記ネットリストをデータ生成するときに複数のタスクごとに転送データの転送関係を転送情報としてデータ生成する転送生成手段と、
複数の前記タスクの転送情報をデータ照合して合計の転送コストが最少となる転送ルートとタスクの配置をデータ生成する配置生成手段と、
このデータ生成された転送ルートのテーブル情報を前記ネットリストに統合させるデータ統合手段と、
を有しているデータ処理装置。
【請求項１６】
請求項１ないし１０の何れか一項に記載の並列演算装置のオブジェクトコードであって、
請求項１４に記載のデータ処理方法により合計の転送コストが最少となる転送ルートとタスクの配置に対応してデータ生成されている、
並列演算装置のオブジェクトコード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の可変処理回路が複数の転送仲介回路とともに所定形状に配列されており、可変処理回路はオブジェクトコードに対応して可変自在に各種処理を各々実行し、転送仲介回路は可変処理回路の相互のデータ転送を仲介する並列演算装置に関する。
【背景技術】
【０００２】
現在、各種のデータ処理を自在に実行できるプロセッサユニットとしては、いわゆるＣＰＵ(Central Processing Unit)やＭＰＵ(Micro Processor Unit)と呼称される製品が実用化されている。
【０００３】
このようなプロセッサユニットを利用したデータ処理システムでは、複数の動作命令が記述された各種のオブジェクトコードと各種の処理データとがメモリデバイスに格納され、プロセッサユニットはメモリデバイスから動作命令や処理データを順番にデータ読出して複数のデータ処理を逐次実行する。
【０００４】
このため、一個のプロセッサユニットで各種のデータ処理を実現できるが、その場合は複数のデータ処理を順番に逐次実行する必要があり、その逐次処理ごとにプロセッサユニットがメモリデバイスから動作命令をデータ読出する必要があるので、複雑なデータ処理を高速に実行することは困難である。
【０００５】
一方、実行するデータ処理が一つに限定されている場合には、そのデータ処理を実行するように論理回路をハードウェアで形成すれば、プロセッサユニットがメモリデバイスから複数の動作命令を順番にデータ読出して複数のデータ処理を順番に逐次実行するような必要はない。このため、複雑なデータ処理を高速に実行することが可能であるが、当然ながら一つのデータ処理しか実行することができない。
【０００６】
つまり、オブジェクトコードを切換自在としたデータ処理システムでは、各種のデータ処理を実行できるが、ハードウェアの構成が固定されているのでデータ処理を高速に実行することが困難である。一方、ハードウェアからなる論理回路では、データ処理を高速に実行することが可能であるが、オブジェクトコードを変更できないので一つのデータ処理しか実行できない。
【０００７】
このような課題を解決するため、本出願人はソフトウェアに対応してハードウェアの構成が変化するプロセッサユニットとして並列演算装置を創案した。この並列演算装置では、小規模の多数のデータ処理回路と配線切換回路とが行列配置されており、このマトリクス回路部に状態管理回路が並設されている。
【０００８】
複数のデータ処理回路は、個々にデータ設定される動作命令に対応してデータ処理を個々に実行し、複数の配線切換回路は、個々にデータ設定される動作命令に対応して複数のデータ処理回路の接続関係を個々に切換制御する。
【０００９】
つまり、並列演算装置は複数のデータ処理回路と複数の配線切換回路との動作命令を切り換えることでハードウェアの構成が変化するので、各種のデータ処理を実行することができ、ハードウェアとして小規模の多数のデータ処理回路が簡単なデータ処理を並列に実行するので、データ処理を高速に実行することができる。
【００１０】
そして、上述のような複数のデータ処理回路と複数の配線切換回路との動作命令からなるコンテキストを状態管理回路がオブジェクトコードに対応して動作サイクルごとに順次切り換えるので、並列演算装置はオブジェクトコードに対応して並列処理を連続的に実行することができる(例えば、特許文献１〜６、非特許文献１，２参照)。
【特許文献１】特開２０００−１３８５７９号
【特許文献２】特開２０００−２２４０２５号
【特許文献３】特開２０００−２３２３５４号
【特許文献４】特開２０００−２３２１６２号
【特許文献５】特開２００３−７６６６８号
【特許文献６】特開２００３−９９４０９号
【非特許文献１】“Introduction to the Configurable, Highly Parallel Computer”、Lawrence Snyder著、Purdue University、“IEEE Computer, vol.15, No.1, Jan. 1982, pp47-56”
【非特許文献２】“Interconnection networks enable fine-grain dynamic multi-tasking on FPGAs”［２００３年０８月１３日検索］インターネット<ＵＲＬ：http://www.imec.be/design/pdf/reconfig/FPL#02#interconnection.pdf >
【発明の開示】
【発明が解決しようとする課題】
【００１１】
現在、上述のような並列演算装置として実用化されているＦＰＧＡ(Field Programmable Gate Array)では、行列配置されている多数のデータ処理回路を自在に接続するために配線切換回路に多数のスイッチング素子とデータ配線とが必要となるため、データ処理回路の個数の増大とともに配線切換回路の回路規模が過大となる。
【００１２】
さらに、ＦＰＧＡはソースコードが複数のタスクとして設計されても、それを結合した一つのタスクに対して回路の配置や配線が決定されるので、その配置配線のオブジェクトコードを生成するために必要な計算時間が膨大である。また、複数のタスクを複数の領域にデータパス回路として構築した場合、特定のタスクのデータパス回路が構築されている領域に他のタスクの配線が形成されることがあるため、領域ごとにタスクのデータパス回路を自在に変更することが困難である。
【００１３】
さらに、最長のデータ転送の経路がクリティカルパスとなるため、データ処理の速度を良好に向上させることが困難である。これはフリップフロップなどの保持回路の追加により解決することは不可能ではないが、この場合は回路規模が増大するとともに回路構造が複雑となる。
【００１４】
上述のような課題を解決するため、前述の非特許文献２に開示された技術では、ＦＰＧＡを複数の処理領域に分割しておき、複数のタスクを処理領域ごとに並列に処理する。さらに、複数の処理領域をネットワークルータで接続しておき、このネットワークルータにより複数のタスクの相互のデータ転送を実行する。
【００１５】
より詳細には、処理領域では転送データをネットワークルータに出力するとき、その転送先のアドレスやデータ長などが記述されたヘッダをデータ生成して転送データに付与する。このようなヘッダは、タスク上で転送データを識別するための付帯情報が記述されている必要があり、少なくとも、転送先、転送データのデータ長、転送先での転送データの識別子、が記述されている必要がある。
【００１６】
ネットワークルータは、ヘッダのデータ内容に対応して転送データを所定の処理領域まで転送するので、同一のデータ配線を時分割に利用することができ、多数のスイッチング素子やデータ配線が無用となる。しかし、これでは転送先のアドレスやデータ長などが記述されたヘッダを処理領域でデータ生成する必要があるので、そのデータ処理が煩雑であり、タスクにヘッダ生成も組み込む必要がある。
【００１７】
ヘッダには転送データのデータ長も記述するので、例えば、転送データが音声や画像などのリアルタイムデータの場合、そのデータ長が判明するまで転送データを蓄積する必要がある。このため、充分なデータ容量の蓄積回路が処理領域ごとに必要で回路規模が増大することになり、転送データの転送タイミングが遅滞することになる。
【００１８】
各種データが記述されているヘッダは長大となるため、転送データが短小であると相対的に転送効率が低下することになる。この転送効率の低下を防止するために転送データを長大とすると、ヘッダと転送データとの合計のデータ長が過大となり、特定のヘッダと転送データとが複数のネットワークルータとデータ配線とを占有してデッドロックが発生することになる。
【００１９】
このデッドロックは、ネットワークルータの内部配線の各々にＦＩＦＯ(First In First Out)メモリを並列に追加し、仮想的に転送経路を複数とすることなどで、防止することは不可能ではないが、この場合はネットワークルータの回路規模が増大するとともに回路構造が複雑となる。
【００２０】
また、上述のような並列演算装置では、ネットワークルータとネットワークルータとが直接に接続された転送ルートで転送される転送データの種類に制限がないため、ある転送ルートで何種類の転送ルートが転送されるか予想できない。このため、実際に並列演算装置を動作させたときに、内部で発生する輻輳を予想できず、最低性能を保証することができない。
【００２１】
本発明は上述のような課題に鑑みてなされたものであり、簡単な構造でデータ転送を良好に実行できる並列演算装置の提供を目的とする。
【課題を解決するための手段】
【００２２】
本発明の並列演算装置は、複数の可変処理回路と複数の転送仲介回路とを有しており、これら複数の可変処理回路と複数の転送仲介回路とが所定形状に配列されている。可変処理回路は、処理実行手段、転送付与手段、を有しており、オブジェクトコードに対応して可変自在に各種処理を各々実行する。転送仲介回路は、複数のデータ受信ポート、複数のデータ送信ポート、経路記憶手段、転送制御手段、を有しており、可変処理回路の相互のデータ転送を仲介する。
【００２３】
可変処理回路の処理実行手段は、各種処理により任意に転送データの入力や出力を実行し、転送付与手段は、転送仲介回路に出力する転送データに最終的な送信先の可変処理回路に対応して複数種類の転送ＩＤの一つを付与する。
【００２４】
転送仲介回路の複数のデータ受信ポートは、転送データを転送ＩＤとともに周囲の可変処理回路か転送仲介回路から個々に受信し、複数のデータ送信ポートは、転送データを転送ＩＤとともに周囲の可変処理回路か転送仲介回路に個々に送信する。経路記憶手段は、複数のデータ受信ポートと複数種類の転送ＩＤとの組み合わせごとに複数のデータ送信ポートと複数種類の転送ＩＤとの組み合わせを可変自在にデータ記憶し、転送制御手段は、データ受信ポートで転送ＩＤとともにデータ受信された転送データを経路記憶手段の記憶データに対応して次段の転送ＩＤとともに所定のデータ送信ポートに送信させる。
【００２５】
従って、本発明の並列演算装置では、事前に転送仲介回路の経路記憶手段に複数のデータ受信ポートと複数種類の転送ＩＤとの組み合わせごとに複数のデータ送信ポートと複数種類の転送ＩＤとの組み合わせをデータ登録しておけば、その転送仲介回路にデータ受信ポートで転送ＩＤとともにデータ受信された転送データは、所定のデータ送信ポートから次段の転送ＩＤとともに次段の転送仲介回路や可変処理回路にデータ送信される。
【００２６】
なお、本発明で云う各種手段は、その機能を実現するように形成されていれば良く、例えば、所定の機能を発揮する専用のハードウェア、所定の機能がコンピュータプログラムにより付与されたデータ処理装置、コンピュータプログラムによりデータ処理装置に実現された所定の機能、これらの組み合わせ、等として実現することができる。
【００２７】
また、本発明で云う各種手段は、かならずしも個々に独立した存在である必要はなく、複数の手段が１個の部材として形成されていること、ある手段が他の手段の一部であること、ある手段の一部と他の手段の一部とが重複していること、等も可能である。
【００２８】
さらに、本発明では前後左右上下の方向を言及しているが、これは方向の相対関係を簡単に説明するために便宜的に規定したものであり、本発明を実施する場合の製造時や使用時の方向を限定するものではない。
【００２９】
また、本発明で云う転送ＩＤとは、転送データを転送ルートに位置する転送仲介回路および可変処理回路で識別するため、各々の転送仲介回路および可変処理回路で局所的に定義されたデジタルデータであれば良く、例えば、転送ルートが４個ならば２ビットで設定可能である。
【００３０】
さらに、本発明で云う“転送データへの転送ＩＤの付与”は、転送データに転送ＩＤを外的に追加することに限定されるものではなく、転送データの一部として転送ＩＤを内的に挿入することも可能である。このような場合、転送仲介回路による転送ＩＤの変更は、転送データの一部または全部の書き換えとして実現することが可能である。
【発明の効果】
【００３１】
本発明の並列演算装置では、事前に転送仲介回路の経路記憶手段に複数のデータ受信ポートと複数種類の転送ＩＤとの組み合わせごとに複数のデータ送信ポートと複数種類の転送ＩＤとの組み合わせをデータ登録しておけば、その転送仲介回路にデータ受信ポートで転送ＩＤとともにデータ受信された転送データを、所定のデータ送信ポートから次段の転送ＩＤとともに次段の転送仲介回路や可変処理回路にデータ送信させることができるので、複数の可変処理回路のデータ転送を簡単な構造で良好に実行することができ、さらに、転送仲介回路で転送される転送データの種類が制限されるので、最低性能を保証することができる。
【発明を実施するための最良の形態】
【００３２】
［実施の形態の構成］
本発明の実施の形態を図面を参照して以下に説明する。なお、以下では説明を簡単とするため、図面の左右方向が行方向で上下方向が列方向とし、各行は列方向に配列されており、各列は行方向に配列されているとする。
【００３３】
まず、本形態の並列演算装置であるアレイ型プロセッサ１００では、図２に示すように、複数の可変処理回路であるエレメント領域１０１が行列形状に配列されており、そのエレメント領域１０１の各々に行方向で転送仲介回路１０２が隣接されている。
【００３４】
エレメント領域１０１は、オブジェクトコードに対応して可変自在に各種処理を各々実行し、転送仲介回路１０２は、エレメント領域１０１の相互のデータ転送を仲介する。本形態のアレイ型プロセッサ１００では、例えば、エレメント領域１０１と転送仲介回路１０２とが４行４列に配列されており、その第２行目と第３行目との中間に１個の構成管理回路１０３が配置されている。
【００３５】
複数のエレメント領域１０１は、１個の状態管理回路１０５と複数のデータ処理回路であるプロセッサエレメント１０６とを有しており、例えば、４行４列に配列されたプロセッサエレメント１０６の第２行目と第３行目との中間に状態管理回路１０５が配置されている。
【００３６】
状態管理回路１０５はプロセッサエレメント１０６を配線切換回路であるスイッチエレメント１０８とともに動作制御するが、本形態のアレイ型プロセッサ１００では、エレメント領域１０１ごとに状態管理回路１０５がプロセッサエレメント１０６に接続されているので、その状態管理回路１０５は接続されているプロセッサエレメント１０６のみ状態管理を実行する。
【００３７】
エレメント領域１０１では、図３(ａ)に示すように、行列配置されている複数のプロセッサエレメント１０６の各々が隣接するスイッチエレメント１０８に接続されており、行列配置されている複数のスイッチエレメント１０８が多数のｍｂ(ｍ-bit)バス１０９と多数のｎｂ(ｎ-bit)バス１１０とでマトリクス接続されている。
【００３８】
また、図３(ｂ)に示すように、プロセッサエレメント１０６は、メモリ制御回路１１１、インストラクションメモリ１１２、インストラクションデコーダ１１３、ｍｂレジスタファイル１１５、ｎｂレジスタファイル１１６、ｍｂＡＬＵ(Arithmetic and Logical Unit)１１７、ｎｂＡＬＵ１１８、内部可変配線（図示せず）、等を各々有しており、スイッチエレメント１０８は、バスコネクタ１２１、入力制御回路１２２、出力制御回路１２３、等を各々有している。
【００３９】
また、本形態のアレイ型プロセッサ１００では、外部から供給されるオブジェクトコードに、エレメント領域１０１の多数のプロセッサエレメント１０６と多数のスイッチエレメント１０８との動作命令が、順次切り換わるコンテキストとしてデータ設定されており、このコンテキストを動作サイクルごとに切り換える状態管理回路１０５の動作命令が、順次遷移する動作状態としてデータ設定されている。
【００４０】
このため、状態管理回路１０５は、上述のような自身の動作命令と、複数の動作状態を順次遷移させる遷移ルールと、がデータ格納されており、その遷移ルールに対応して動作状態を順次遷移させて動作命令によりプロセッサエレメント１０６とスイッチエレメント１０８とのインストラクションポインタを発生する。
【００４１】
図３(ｂ)に示すように、スイッチエレメント１０８は、隣接するプロセッサエレメント１０６のインストラクションメモリ１１２を共用しているので、状態管理回路１０５は、発生したプロセッサエレメント１０６とスイッチエレメント１０８とのインストラクションポインタを対応するプロセッサエレメント１０６のインストラクションメモリ１１２に供給する。
【００４２】
このインストラクションメモリ１１２には、プロセッサエレメント１０６とスイッチエレメント１０８との複数の動作命令がデータ格納されているので、状態管理回路１０５から供給される１つのインストラクションポインタでプロセッサエレメント１０６とスイッチエレメント１０８との動作命令が指定される。
【００４３】
インストラクションデコーダ１１３は、インストラクションポインタで指定された動作命令をデコードし、スイッチエレメント１０８、内部可変配線、ｍ／ｎｂＡＬＵ１１７，１１８、等の動作を制御する。
【００４４】
ｍｂバス１０９はｍｂである“８(bit)”の処理データを転送し、ｎｂバス１１０はｎｂである“１(bit)”の処理データを転送するので、スイッチエレメント１０８は、インストラクションデコーダ１１３の動作制御に対応してｍ／ｎｂバス１０９，１１０による多数のプロセッサエレメント１０６の接続関係を制御する。
【００４５】
より詳細には、スイッチエレメント１０８のバスコネクタ１２１は、ｍｂバス１０９とｎｂバス１１０とが四方から連通しており、このように連通している複数のｍｂバス１０９の互いの接続関係と連通する複数のｎｂバス１１０の互いの接続関係とを制御する。
【００４６】
このため、アレイ型プロセッサ１００は、外部から供給されるオブジェクトコードに対応して、複数のエレメント領域１０１ごとに状態管理回路１０５がプロセッサエレメント１０６のコンテキストを動作サイクルごとに順次切り換え、その段階ごとに多数のプロセッサエレメント１０６は個々に設定自在なデータ処理で並列動作する。
【００４７】
入力制御回路１２２は、図３(ｂ)に示すように、ｍｂバス１０９からｍｂレジスタファイル１１５およびｍｂＡＬＵ１１７へのデータ入力の接続関係と、ｎｂバス１１０からｎｂレジスタファイル１１６およびｎｂＡＬＵ１１８へのデータ入力の接続関係とを制御する。
【００４８】
出力制御回路１２３は、ｍｂレジスタファイル１１５およびｍｂＡＬＵ１１７からｍｂバス１０９へのデータ出力の接続関係と、ｎｂレジスタファイル１１６およびｎｂＡＬＵ１１８からｎｂバス１１０へのデータ出力の接続関係とを制御する。
【００４９】
プロセッサエレメント１０６の内部可変配線は、インストラクションデコーダ１１３の動作制御に対応して、プロセッサエレメント１０６の内部でのｍｂレジスタファイル１１５およびｍｂＡＬＵ１１７の接続関係とｎｂレジスタファイル１１６およびｎｂＡＬＵ１１８の接続関係とを制御する。
【００５０】
ｍｂレジスタファイル１１５は、内部可変配線に制御される接続関係に対応して、ｍｂバス１０９などから入力されるｍｂの処理データを一時保持してｍｂＡＬＵ１１７などに出力する。ｎｂレジスタファイル１１６は、内部可変配線に制御される接続関係に対応して、ｎｂバス１１０などから入力されるｎｂの処理データを一時保持してｎｂＡＬＵ１１８などに出力する。
【００５１】
ｍｂＡＬＵ１１７は、インストラクションデコーダ１１３の動作制御に対応したデータ処理をｍｂの処理データで実行し、ｎｂＡＬＵ１１８は、インストラクションデコーダ１１３の動作制御に対応したデータ処理をｎｂの処理データで実行するので、処理データのビット数に対応してｍ／ｎｂのデータ処理が適宜実行される。
【００５２】
また、本形態のアレイ型プロセッサ１００では、図１に示すように、行列配置されている複数のエレメント領域１０１の各々が隣接する転送仲介回路１０２に個々に接続されており、この行列配置されている複数の転送仲介回路１０２がマトリクス接続されている。
【００５３】
そこで、オブジェクトコードに対応して複数のエレメント領域１０１ごとにタスクがデータ処理され、その複数のタスクの相互でのデータ転送が転送仲介回路１０２により仲介される。その場合、エレメント領域１０１では、図４および図５に示すように、オブジェクトコードに対応して複数のプロセッサエレメント１０６と複数のスイッチエレメント１０８により構築されるデータパス回路１２９が処理実行手段となり、そのデータパス回路１２９が任意に転送データの入力や出力を実行する。
【００５４】
より具体的には、図４に示すように、エレメント領域１０１は、所定の動作状態のときに複数のプロセッサエレメント１０６からなるデータパス回路１２９から転送データを隣接する転送仲介回路１０２に出力するとともに、その動作状態の状態ＩＤを転送付与手段となる状態管理回路１０５が転送ＩＤ(Label信号)として転送仲介回路１０２にデータ出力する。
【００５５】
このようにエレメント領域１０１が転送データとともに出力する転送ＩＤは、最終的な転送先のエレメント領域１０１に対応している。つまり、転送データの送信元の転送ＩＤと受信先の転送ＩＤとは一対一に対応しており、それに対応して転送ルートで転送ＩＤが順次変更されるので、所望の転送ＩＤを付与した転送データは所望の送信先まで転送される。
【００５６】
なお、あるエレメント領域１０１で１個のタスクが処理される場合でも、その送信用の転送ＩＤと受信用の転送ＩＤとは関連しないので、一つの転送ＩＤで相違するデータ送信とデータ受信とを実行することができる。
【００５７】
また、所定の動作状態のときに複数のデータパス回路１２９が並列に転送データやバリッド信号を出力する場合、その転送データやバリッド信号をマルチプレクサなどの論理回路１４１で選択することが好適である。このような論理回路１４１はハードウェアとして実装しておくこともでき、データパス回路１２９と同様にオブジェクトコードによりプロセッサエレメント１０６やスイッチエレメント１０８で動的に構築することもできる。
【００５８】
なお、上述の転送ＩＤは転送データを転送する転送ルートの個数に対応して任意のビット数に規定されるが、本形態のアレイ型プロセッサ１００では、エレメント領域１０１のデータパス回路１２９がタスクごとに４(＝２2 )種類まで転送データを出力し、エレメント領域１０１の状態管理回路１０５が転送データに４(＝２2 )種類の２ビットの転送ＩＤの一つを付与するとする。
【００５９】
ただし、この転送ＩＤは状態管理回路１０５が所定の動作状態のときに出力する状態ＩＤなので、本形態のアレイ型プロセッサ１００では、状態管理回路１０５が動作状態をタスクごとに４個まで管理する。
【００６０】
また、複数のエレメント領域１０１は同期することなく個別にデータ処理を実行しているので、データパス回路１２９は、上述のように転送仲介回路１０２に次段の転送データを出力するときのみ、その転送データが有効であることを示すバリッド信号をアクティブとする。
【００６１】
なお、エレメント領域１０１はタスクごとに転送が必要な各種データを任意ビットで生成するが、その任意ビットの処理データは複数の所定ビットの転送データに分割されて出力される。例えば、エレメント領域１０１の動作サイクルごとの処理単位が３２ビットに設定されている場合、エレメント領域１０１は、動作サイクルごとの３２ビットで転送データを出力し、転送仲介回路１０２は、３２ビットの転送データをパラレルに転送することが可能である。
【００６２】
転送仲介回路１０２は、図６に示すように、５個のデータ受信ポート１３１、５個のデータ送信ポート１３２、経路記憶手段であるマップテーブル１３３、データ登録手段の一部として機能するコンフィギュレーションコントローラ１３６、転送制御手段に相当するポートアービタ１３７、アクノリッジジェネレータ１３８、等を有している。
【００６３】
本形態のアレイ型プロセッサ１００では、前述のように複数のエレメント領域１０１の各々が矩形に形成されていて行列形状に配列されており、複数の転送仲介回路１０２は、複数のエレメント領域１０１の各々に１個ずつ隣接されている。そして、転送仲介回路１０２は、行列方向に位置する周囲の４個の転送仲介回路１０２と隣接するエレメント領域１０１とに接続されているので、５個のデータ受信ポート１３１と５個のデータ送信ポート１３２とを有している。
【００６４】
転送仲介回路１０２のデータ受信ポート１３１は、転送データを転送ＩＤとともに隣接するエレメント領域１０１か四方の転送仲介回路１０２から個々に受信し、５個のデータ送信ポート１３２は、転送データを転送ＩＤとともに四方の転送仲介回路１０２か隣接するエレメント領域１０１に個々に送信する。
【００６５】
マップテーブル１３３は、データ受信ポート１３１ごとに形成されており、複数のデータ受信ポート１３１と複数種類の転送ＩＤとの組み合わせごとに複数のデータ送信ポート１３２と複数種類の転送ＩＤとの組み合わせを可変自在にデータ記憶している。なお、前述のようにデータ受信／送信ポート１３１，１３２の個数は５個なので、そのポートＩＤは３ビットでデータ記憶されており、転送ＩＤは４種類なので２ビットでデータ記憶されている。
【００６６】
ポートアービタ１３７は、その出力信号でデータ送信ポート１３２を動作制御することにより、データ受信ポート１３１で転送ＩＤとともにデータ受信された転送データをマップテーブル１３３の記憶データに対応して次段の転送ＩＤとともに所定のデータ送信ポート１３２に送信させる。
【００６７】
例えば、第１のデータ受信ポート１３１と“０１”なる転送ＩＤとの組み合わせに対して第３のデータ送信ポート１３２と“１１”なる転送ＩＤの組み合わせがデータ登録されている場合、“０１”なる転送ＩＤが付与された転送データが第１のデータ受信ポート１３１でデータ受信されると、その転送データは転送ＩＤが“１１”に変更されて第３のデータ送信ポート１３２からデータ送信される。
【００６８】
なお、前述のように転送データにはバリッド信号も付与されているので、データ受信ポート１３１はバリッド信号がアクティブなときのみ転送データを受信してバッファ回路やレジスタなどの記憶回路(図示せず)で一時保持し、データ送信ポート１３２は転送データを送信するときのみバリッド信号をアクティブとする。
【００６９】
なお、このような記憶回路は、データ受信ポート１３１の内部ではなく、データ送信ポート１３２の内部に配置することも可能であり、データ受信ポート１３１とデータ送信ポート１３２との両方に配置することも可能である。
【００７０】
また、ポートアービタ１３７は、１個のデータ送信ポート１３２に複数の転送データが集中した場合、例えば、ラウンドロビン方式などの既存手法により複数の転送データの競合を解決する。
【００７１】
コンフィギュレーションコントローラ１３６は、複数のデータ受信ポート１３１と複数種類の転送ＩＤとの組み合わせごとの複数のデータ送信ポート１３２と複数種類の転送ＩＤとの組み合わせが、データ登録手段である構成管理回路１０３からデータ供給されると、それをマップテーブル１３３にデータ格納する。
【００７２】
つまり、前述のようにオブジェクトコードに対応してアレイ型プロセッサ１００が動作するとき、エレメント領域１０１ごとに状態管理回路１０５でタスクが設定され、そのタスクの相互のデータ転送に対応した制御データが、構成管理回路１０３により転送仲介回路１０２ごとに設定される。
【００７３】
アクノリッジジェネレータ１３８は、接続先のデータ受信ポート１３１から出力されているレディ信号により、そのデータ受信ポート１３１のデータ受信の可否を判定し、データ受信が可能なデータ受信ポート１３１にはアクティブなアクノリッジ信号を供給する。
【００７４】
なお、アクノリッジジェネレータ１３８は、接続先のデータ受信ポート１３１のレディ信号がアクティブでないときや、ポートアービタ１３７による調停で送信権限を得られなかったときは、アクノリッジ信号をアクティブとしない。
【００７５】
データ受信ポート１３１は、アクノリッジ信号がアクティブとなると保持している転送データを無効とし、データ受信の可否を送信元のデータ送信ポート１３２に通知するレディ信号をアクティブとする。また、アクノリッジ信号がアクティブでないときは転送データの保持を維持し、レディ信号をアクティブとしない。
【００７６】
また、転送仲介回路１０２から最終的に転送データが入力されるエレメント領域１０１でも、図５に示すように、オブジェクトコードに対応して複数のプロセッサエレメント１０６と複数のスイッチエレメント１０８により構築されるデータパス回路１２９により任意に転送データが入力される。
【００７７】
より具体的には、転送仲介回路１０２は、エレメント領域１０１に入力する転送データの転送ＩＤにより、その転送データが状態管理回路１０５のイベントデータか、データパス回路１２９の処理データか、をデータ設定する。
【００７８】
例えば、前述のように転送ＩＤが２ビットならば“０，１，２，３”が表現されるが、図５に例示するエレメント領域１０１では、転送ＩＤが“０，１”の転送データのみ処理対象とし、転送ＩＤが“２，３”の転送データは処理対象としない。
【００７９】
そこで、図５に例示するエレメント領域１０１では、転送ＩＤが“０，１”の場合には、転送仲介回路１０２から入力されるバリッド信号がアクティブな転送データを、データパス回路１２９により転送ＩＤに対応して状態管理回路１０５やＦＩＦＯバッファ１４２に入力する。
【００８０】
なお、エレメント領域１０１が転送仲介回路１０２から転送データを入力しないと、その転送データは転送仲介回路１０２のデータ受信ポート１３１に保持されるため、このデータ受信ポート１３１が次段の転送データを受信できない状態となり、転送データが順次渋滞することとなる。これを防止するため、エレメント領域１０１は転送仲介回路１０２からデータ入力が依頼されると、その転送データが必要ない場合でもデータ入力を実行する。
【００８１】
なお、本形態のアレイ型プロセッサ１００のオブジェクトコードは、例えば、本出願人が特開２００３−９９４０９号に開示したように、データ処理装置(図示せず)によりソースコードから自動的に生成することが可能である。
【００８２】
より具体的には、このようなデータ処理装置は、アレイ型プロセッサ１００の物理構造と物理特性とに対応した制約条件を事前にデータ登録された状態で、Ｃ言語などで記述された一連のソースコードを言語解析してＤＦＧをデータ生成し、このＤＦＧから所定の制約条件によりアレイ型プロセッサ１００の順次遷移する複数段階の動作状態をスケジューリングしたＣＤＦＧをデータ生成する。
【００８３】
このＣＤＦＧから所定の制約条件により複数段階の動作状態のＲＴＬ記述をアレイ型プロセッサ１００のプロセッサ／スイッチエレメント１０６，１０８に対応したデータパスと状態管理回路１０５に対応した有限状態マシンとに分離してデータ生成し、このＲＴＬ記述から所定の制約条件により複数段階の動作状態ごとのプロセッサエレメント１０６のネットリストをｍ／ｎｂＡＬＵ１１７，１１８などのｍ／ｎｂ回路資源ごとにデータ生成する。
【００８４】
このネットリストに対応して状態管理回路１０５のＲＴＬ記述を対応するオブジェクトコードにデータ変換し、複数段階の動作状態ごとにデータ生成されたプロセッサ／スイッチエレメント１０６，１０８のネットリストをマトリクス配列されている複数のプロセッサエレメント１０６に複数サイクルのコンテキストごとに割り付ける。
【００８５】
このプロセッサエレメント１０６に割り付けられたネットリストを対応するオブジェクトコードにデータ変換し、このデータ変換されたプロセッサエレメント１０６のオブジェクトコードに対応してスイッチエレメント１０８のネットリストをオブジェクトコードにデータ変換する。
【００８６】
ただし、本形態のアレイ型プロセッサ１００では、上述のように複数のエレメント領域１０１ごとにタスクが独立に処理され、そのタスクの相互のデータ転送が転送仲介回路１０２で実現されるので、これを実現するようにソースコードからオブジェクトコードを生成することが必要である。
【００８７】
その場合、複数のタスクごとに上述のようにソースコードからネットリストをデータ生成するとき、そのタスクごとにデータ送信／受信を示す“Send, Receive”関数などで記述されている転送関係を転送情報としてデータ生成しておく。なお、このように転送関係を転送情報としてデータ生成することは、データ送信／受信を示すソースコードの各種記述で可能である。
【００８８】
つぎに、その複数のタスクの転送情報をデータ照合し、合計の転送コストが最少となる転送ルートとタスクの配置をデータ生成する。これでデータ生成された転送ルートのテーブル情報を上述のネットリストに統合させ、以下は前述のようにオブジェクトコードをデータ生成する。
【００８９】
これで、複数のエレメント領域１０１ごとにタスクが独立に処理され、そのタスクの相互のデータ転送が転送仲介回路１０２で実現される、アレイ型プロセッサ１００のオブジェクトコードがデータ生成される。
【００９０】
［実施の形態の動作］
上述のような構成において、本実施の形態のアレイ型プロセッサ１００では、外部から供給されるオブジェクトコードに対応して、外部入力される処理データでデータ処理を実行する。その場合、複数のエレメント領域１０１ごとに状態管理回路１０５が動作状態を順次遷移させるとともにプロセッサエレメント１０６のコンテキストを動作サイクルごとに順次切り換える。
【００９１】
このため、その動作サイクルごとに多数のプロセッサエレメント１０６が個々に設定自在なデータ処理で並列動作し、その多数のプロセッサエレメント１０６の接続関係を多数のスイッチエレメント１０８が切換制御する。
【００９２】
このとき、エレメント領域１０１ごとに、プロセッサエレメント１０６での処理結果は必要により状態管理回路１０５にイベントデータとしてフィードバックされるので、この状態管理回路１０５は入力されたイベントデータにより動作状態を次段の動作状態に遷移させるとともにプロセッサエレメント１０６のコンテキストを次段のコンテキストに切り換える。
【００９３】
本形態のアレイ型プロセッサ１００は、上述のように複数のエレメント領域１０１ごとに状態管理回路１０５がプロセッサエレメント１０６のコンテキストを状態遷移させることで複数のタスクのデータ処理が並列に実行されるが、図１(ｂ)に示すように、その複数のデータ処理が処理データの相互転送を必要とする場合がある。
【００９４】
その場合、オブジェクトコードに対応して複数のエレメント領域１０１にタスクがデータ登録されるとき、そのデータ転送に対応して構成管理回路１０３が複数の転送仲介回路１０２のマップテーブル１３３に、データ受信ポート１３１と転送ＩＤとの組み合わせごとにデータ送信ポート１３２と転送ＩＤとの組み合わせをデータ登録する。
【００９５】
このような状態で、図１(ａ)に示すように、エレメント領域１０１から転送データが転送ＩＤ(Label信号)とともに隣接する転送仲介回路１０２のデータ受信ポート１３１に出力されると、この転送仲介回路１０２では、マップテーブル１３３の記憶データに対応して転送ＩＤを変更し、その転送ＩＤとともに転送データを所定のデータ送信ポート１３２から送信する。
【００９６】
このため、エレメント領域１０１から隣接する転送仲介回路１０２に転送ＩＤとともに出力された転送データは、目的のエレメント領域１０１まで任意の転送仲介回路１０２により転送されることになる。
【００９７】
［実施の形態の効果］
本実施の形態のアレイ型プロセッサ１００は、上述のように転送ルートに対応した所定データを複数の転送仲介回路１０２のマップテーブル１３３にデータ登録しておくことにより、複数のエレメント領域１０１が転送ＩＤとともに出力する転送データを目的のエレメント領域１０１まで良好に転送することができる。
【００９８】
しかも、その転送ＩＤは転送ルートの個数に対応したビット数で生成できるので、例えば、エレメント領域１０１ごとに４個の転送ルートを確保できれば良いならば、転送ＩＤは２ビットで生成することができる。このため、長大なヘッダをデータ生成して転送データに付与する必要がなく、転送データが短小でも相対的に転送効率を向上することができる。
【００９９】
特に、エレメント領域１０１は所定の動作状態のときに転送データを出力するが、その動作状態の状態ＩＤを転送ＩＤとするので、専用の処理動作を必要とすることなく特定の動作状態に対応した転送ＩＤを発生させることができ、さらにエレメント領域１０１の処理負担を軽減することができる。
【０１００】
しかも、エレメント領域１０１はタスクごとに転送が必要な各種データを任意ビットで生成するが、その任意ビットの処理データはエレメント領域１０１での動作サイクルごとの処理単位で出力される。このため、エレメント領域１０１は、処理データを複数の短小な転送データに分割する専用の処理動作が必要なく、各種の処理が容易な転送データを簡単に生成することができる。
【０１０１】
また、転送仲介回路１０２は、行列方向に位置する周囲の４個の転送仲介回路１０２と隣接するエレメント領域１０１とに各々５個のデータ受信／送信ポート１３１，１３２で接続されているので、そのポートＩＤは３ビットでマップテーブル１３３にデータ記憶されている。
【０１０２】
このため、マップテーブル１３３は、５個のデータ受信ポート１３１と４種類の転送ＩＤとの組み合わせごとの５個のデータ送信ポート１３２と４種類の転送ＩＤとの組み合わせを、(２＋３)×２＝１０ビットでデータ記憶することができ、極めて小規模な回路でマップテーブル１３３を形成することが可能である。
【０１０３】
さらに、オブジェクトコードに対応して複数のエレメント領域１０１にタスクがデータ設定されるとき、そのタスクに対応した制御データが構成管理回路１０３によりマップテーブル１３３にデータ登録されるので、切換自在なタスクごとに転送データを簡単かつ的確に転送することができる。
【０１０４】
また、エレメント領域１０１や転送仲介回路１０２は新規の転送データを出力するときのみバリッド信号をアクティブとして出力し、エレメント領域１０１や転送仲介回路１０２は入力されるバリッド信号がアクティブなときのみ転送データを入力する。さらに、エレメント領域１０１や転送仲介回路１０２は転送データを受信できないときはレディ信号をアクティブとせず、エレメント領域１０１や転送仲介回路１０２は入力されるレディ信号がアクティブなときのみ転送データを送信する。
【０１０５】
しかも、転送仲介回路１０２の内部で１個のデータ送信ポート１３２に複数の転送データが集中しても、その競合がポートアービタ１３７により解消される。このため、本形態のアレイ型プロセッサ１００では、複数のエレメント領域１０１のデータ処理や複数の転送仲介回路１０２のデータ転送が同期していなくとも、データ転送を良好な効率で実行することができる。このため、複数のエレメント領域１０１の動作を統合制御する必要もなく、複数のエレメント領域１０１が完全に独立して個別にタスクを処理することも可能である。
【０１０６】
さらに、転送仲介回路１０２で転送される転送データの種類が制限されているので、転送仲介回路１０２を通過する転送データの最低の転送バンド幅を一定以上に保証することができる。例えば、前述のように転送ＩＤが２ビットならば転送仲介回路１０２の１個のデータ受信ポート１３１には転送データが４種類までしか通過しないので、転送ルートの転送速度が“８ギガビット／秒”ならば、転送ＩＤごとには“２ギガビット／秒”の転送速度が保証される。
【０１０７】
また、本形態のアレイ型プロセッサ１００では、エレメント領域１０１の４行４列に配列されたプロセッサエレメント１０６の第２行目と第３行目との中間に、その１行と同幅の状態管理回路１０５が配置されているので、エレメント領域１０１の状態管理回路１０５は４行４列のプロセッサエレメント１０６と最短距離で接続されている。
【０１０８】
しかも、行方向に転送仲介回路１０２を介して４行４列に配列されたエレメント領域１０１の第２行目と第３行目との中間に、その１行と同幅の構成管理回路１０３が配置されており、この１個の構成管理回路１０３は多数の転送仲介回路１０２と最短距離で接続されているので、アレイ型プロセッサ１００は無駄なく高速に動作することができる。
【０１０９】
［実施の形態の変形例］
本発明は上述の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で各種の変形が可能である。例えば、上記形態ではエレメント領域１０１やプロセッサエレメント１０６の個数や配置などを具体的に例示したが、当然ながら、その個数や配置などは各種に変更することが可能である。
【０１１０】
例えば、上記形態では、エレメント領域１０１の４行４列に配列されたプロセッサエレメント１０６の第２行目と第３行目との中間に、その１行と同幅の状態管理回路１０５が配置されており、行方向に転送仲介回路１０２を介して４行４列に配列されたエレメント領域１０１の第２行目と第３行目との中間に、その１行と同幅の構成管理回路１０３が配置されていることを例示したが、このような状態管理回路１０５や構成管理回路１０３の形状や配置も各種に変形可能である。
【０１１１】
例えば、上記形態ではエレメント領域１０１が行列形状に最適な矩形に形成されていることを例示したが、エレメント領域１０１を矩形以外の形状に形成することも可能であり、三角形や六角形として充填配置することも不可能ではない(図示せず)。
【０１１２】
また、行列形状に配列されているエレメント領域１０１の行方向の間隙に列形状の転送仲介回路１０２が位置することを例示したが、例えば、この転送仲介回路１０２がエレメント領域１０１の左辺と下辺とに対向するＬ字形状に形成されていることや、４個の転送仲介回路１０２の行列の中央に位置する十字形状に形成されていることなども可能である(図示せず)。
【０１１３】
また、上記形態ではプロセッサエレメント１０６やスイッチエレメント１０８の内部構造なども具体的に例示したが、これも各種構造で実現可能である。例えば、プロセッサエレメント１０６がｍ／ｎｂレジスタファイル１１５，１１６やｍ／ｎｂＡＬＵ１１７，１１８を有することを例示したが、これをｍｂレジスタファイル１１５やｍｂＡＬＵ１１７のみとすることも可能である。また、ｍ／ｎｂＡＬＵ１１７，１１８を複合的な演算処理まで可能な処理回路とすることや、タスクレベルの大規模な演算処理まで可能な大規模な処理回路とすることも可能である。
【０１１４】
さらに、上記形態では転送仲介回路１０２が転送データをパラレルに転送することを例示したが、転送仲介回路１０２のデータ受信ポート１３１にシリアルパラレル変換器を接続するとともにパラレルシリアル変換器をデータ送信ポート１３２に接続することで転送データをシリアルに転送することも可能である。
【０１１５】
また、上記形態では並列演算装置として状態管理回路１０５がプロセッサエレメント１０６やスイッチエレメント１０８から完全に分離されているアレイ型プロセッサ１００を例示したが、例えば、いわゆるＦＰＧＡのように状態管理回路１０５がプロセッサエレメント１０６などと一体に形成されている構造も可能である(図示せず)。
【０１１６】
さらに、上記形態では複数のエレメント領域１０１ごとに状態管理回路１０５が配置されており、複数のエレメント領域１０１が独立に処理動作を実行することを例示したが、例えば、複数のエレメント領域１０１の状態管理回路１０５を１個の中央管理回路(図示せず)により統合制御するようなことも可能である。
【０１１７】
また、上記形態ではアレイ型プロセッサ１００のみを例示したが、このようなアレイ型プロセッサ１００を有しており、アレイ型プロセッサ１００に処理データを入力して結果データを取得する演算処理装置や半導体集積回路も実施可能であり(図示せず)、このような半導体集積回路で各種のデータ処理を実行するコンピュータ装置なども実施可能である(図示せず)。
【０１１８】
ＡＳＩＣ(Application Specific Integrated Circuit)などの一般的な半導体集積回路は、製造後に回路構造を変更することができないが、アレイ型プロセッサ１００を搭載した半導体集積回路や演算処理装置ならば、製造後でも回路構造を変更することが可能である。このため、半導体集積回路などの製造後でも不具合を修正することができ、設計変更などを無用として半導体集積回路などの開発から量産までのコストを大幅に削減することが可能である。
【０１１９】
同様に、このような半導体集積回路を搭載したコンピュータ装置では、その半導体集積回路を交換しなくともソフトウェアの変更で不具合の修正や回路動作の変更が可能なので、その利便性を向上させることができる。
【０１２０】
また、図４および図５に示すように、上記形態では転送データを出力するエレメント領域１０１や入力するエレメント領域１０１の内部に構築される回路構造を具体的に例示したが、当然ながら、このようなエレメント領域１０１の内部構造などは各種に構築可能である。
【０１２１】
例えば、図４では１個のエレメント領域１０１に２個のデータパス回路１２９が形成されている構造を例示しているが、これを１個や３個以上とすることも可能であり、複数のデータパス回路１２９が別個のコンテキストに存在することも可能である。
【０１２２】
さらに、上記形態では１個のエレメント領域１０１に状態管理回路１０５が１個ずつ存在することを例示したが、１個のエレメント領域１０１に複数の状態管理回路１０５が存在することも可能である。
【０１２３】
また、上記形態ではエレメント領域１０１の複数のデータパス回路１２９が所定の動作状態のときに転送データやバリッド信号などを並列に出力する場合、その複数の転送データなどを論理回路１４１で選択することを例示した。しかし、エレメント領域１０１の一つの動作状態に対して複数のデータパス回路１２９の１個からしか転送データなどが出力されないならば、図７(ａ)に示すように、転送データなどを選択する論理回路などは省略することができる。
【０１２４】
さらに、上記形態ではエレメント領域１０１が所定の動作状態のときに発生させる転送ＩＤとして状態管理回路１０５の状態ＩＤを利用することを例示したが、これでは転送ルートの個数の上限が動作状態の個数となり、一つの動作状態に複数の転送ルートを対応させることもできない。
【０１２５】
そこで、これらが問題となる場合には、図７(ｂ)に示すように、データパス回路１２９で専用の転送ＩＤをデータ生成することや、データパス回路１２９で状態ＩＤに識別ビットを追加して転送ＩＤをデータ生成することが好適である(図示せず)。
【０１２６】
また、状態ＩＤを転送ＩＤとして利用することが適切ではない場合、図７(ｃ)に示すように、ＩＤ変換回路１４３などで状態ＩＤを転送ＩＤに変換することが好適である。なお、このようなＩＤ変換回路１４３は、専用のハードウェアで形成することも可能であり、データパス回路としてプロセッサエレメント１０６やスイッチエレメント１０８で構築することも可能である。
【０１２７】
さらに、上記形態では転送データに転送ＩＤを外的に追加することを例示したが、このような転送データの一部として転送ＩＤを内的に挿入することも可能である。このような場合、転送仲介回路による転送ＩＤの変更は、転送データの一部または全部の書き換えとして実現することが可能である。
【０１２８】
また、複数の転送データを一つの転送ＩＤで転送するようなことも可能であり、その場合は、複数の転送データに転送ＩＤを外的に追加することも、複数の転送データの一つに転送ＩＤを内的に挿入することも可能である。
【０１２９】
さらに、上記形態では説明を簡単とするため、動作状態の遷移とコンテキストの切り換えとが単純に一対一に対応している場合を例示したが、例えば、動作状態とコンテキストとが一対一に対応せず、動作状態が遷移してもコンテキストは維持される場合もある。また、動作状態を遷移させる回路がオブジェクトコードによりエレメント領域１０１などに構築された場合も、動作状態が遷移してもコンテキストは維持される。
【０１３０】
また、上記形態ではイベントデータにより状態遷移やコンテキスト切換が流動的に実行されることを例示したが、例えば、状態遷移やコンテキスト切換の順番を事前に固定的に設定しておくようなことも可能である。
【０１３１】
さらに、上記形態ではアレイ型プロセッサ１００が１個の集積回路として形成されていることを想定したが、例えば、複数のエレメント領域１０１と複数の転送仲介回路１０２との各々を独立した集積回路として形成しておき、それを結線してアレイ型プロセッサ１００を形成するようなことも可能である。
【図面の簡単な説明】
【０１３２】
【図１】本発明の並列演算装置の実施の形態であるアレイ型プロセッサによるデータ転送を示す模式図である。
【図２】アレイ型プロセッサの物理構造を示す平面図である。
【図３】アレイ型プロセッサの要部の物理構造を示すブロック図である。
【図４】可変処理回路であるエレメント領域の各種信号の出力構造を示す模式図である。
【図５】エレメント領域の各種信号の入力構造を示す模式図である。
【図６】転送仲介回路の内部構造を示すブロック図である。
【図７】エレメント領域の各種信号の出力構造の変形例を示す模式図である。
【符号の説明】
【０１３３】
１００    並列演算装置であるアレイ型プロセッサ
１０１    可変処理回路であるエレメント領域
１０２    転送仲介回路
１０３    データ登録手段として機能する構成管理回路
１０５    転送付与手段としても機能する状態管理回路
１０６    データ処理回路であるプロセッサエレメント
１０８    配線切換回路であるスイッチエレメント
１２９    処理実行手段に相当するデータパス回路
１３１    データ受信ポート
１３２    データ送信ポート
１３３    経路記憶手段であるマップテーブル
１３６    データ登録手段の一部として機能するコンフィギュレーションコントローラ
１３７    転送制御手段に相当するポートアービタ
【図１】
2005078177.tif 000003
【図２】
2005078177.tif 000004
【図３】
2005078177.tif 000005
【図４】
2005078177.tif 000006
【図５】
2005078177.tif 000007
【図６】
2005078177.tif 000008
【図７】
2005078177.tif 000009