(57)【要約】【課題】処理負荷の均一化を効率よく実現する。【解決手段】ＳＩＭＤ型並列計算システムに備えた個々のプロセッシングエレメントは、処理する或いは転送するデータを格納するデータ記憶手段と、前記データのデータ数を格納するデータ数記憶素子と、前記データのうち先頭のデータを格納する先頭データ記憶素子とを有している。さらに、一のプロセッシングエレメントのデータ数と、自プロセッシングエレメントのデータ数とを比較し、前記自プロセッシングエレメントの比較結果と、他のプロセッシングエレメントでの比較結果とで決まるルールに従い、前記データ記憶手段と前記データ数記憶素子と前記先頭データ記憶素子との内容を更新する動作と、一のプロセッシングエレメントのデータを自プロセッシングエレメントに移動させる動作とを指定するデータ分布平準化命令を発する制御プロセッサを有する。【選択図】図１
2009131007.tif 000002
【特許請求の範囲】
【請求項１】
１つの命令ストリームの下で相異なるデータ値に対して、リング状に結合した２以上のプロセッシングエレメントで並列処理を行うＳＩＭＤ型並列計算システムであって、
前記個々のプロセッシングエレメントは、
個々のプロセッシングエレメントが処理するデータを格納するデータ記憶手段と、
前記データのデータ数を格納するデータ数記憶素子と、
前記データ記憶手段に格納されている前記データの一部を格納するデータ記憶素子とを有し、
さらに、前記リング状に結合された２以上のプロセッシングエレメントのうち一のプロセッシングエレメントのデータ数記憶素子に格納されたデータのデータ数と、自プロセッシングエレメントの前記データ数記憶素子が格納する前記データのデータ数とを比較し、前記自プロセッシングエレメントの比較結果と、他のプロセッシングエレメントでの比較結果とで決まるルールに従い、自プロセッシングエレメントの前記データ記憶手段と前記データ数記憶素子と前記データ記憶素子とに格納されているデータの内容を更新する動作と、一のプロセッシングエレメントで格納されているデータを自プロセッシングエレメントに移動させる動作とを指定するデータ分布平準化命令を前記個々のプロセッシングエレメントに発する制御プロセッサを有することを特徴とするＳＩＭＤ型並列計算システム。
【請求項２】
前記制御プロセッサは、前記比較するデータ数のうち前者のデータ数が後者のデータ数よりも大きい場合にキャリーフラッグ情報を算出し、前記キャリーフラッグ情報と隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報とで決まる前記ルールに従って、前記データ分布平準化命令を発するものである請求項１に記載のＳＩＭＤ型並列計算システム。
【請求項３】
前記制御プロセッサは、前記比較するデータ数のうち前者のデータ数が後者のデータ数よりも大きい場合“１”、小さい場合に“０”となるキャリーフラッグ情報を算出し、
前記ルールとして、
(1)自プロセッシングエレメントでのキャリーフラッグ情報が“０”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“０”であるとき、自プロセッシングエレメントの前記データ数記憶素子と前記先頭データ記憶素子との内容を更新しない、
(2)自プロセッシングエレメントでのキャリーフラッグ情報が“０”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“１”であるとき、自プロセッシングエレメントの前記データ数記憶素子のデータ数を１デクリメントし、前記先頭データ記憶素子の内容を先頭データに続く次の処理データまたは次の転送データで更新する、
(3)自プロセッシングエレメントでのキャリーフラッグ情報が“１”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“０”であるとき、自プロセッシングエレメントの前記データ数記憶素子のデータ数を１インクリメントし、前記先頭データ記憶素子の内容を隣接するプロセッシングエレメントの処理データまたは転送データの先頭データの内容で更新する、
(4)自プロセッシングエレメントでのキャリーフラッグ情報が“１”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“１”であるとき、自プロセッシングエレメントの前記データ数記憶素子のデータ数を更新せず、前記先頭データ記憶素子の内容を隣接するプロセッシングエレメントの処理データまたは転送データの先頭データの内容で更新する、
という情報を保有するものである請求項１に記載のＳＩＭＤ型並列計算システム。
【請求項４】
前記制御プロセッサは、前記リング状に結合した全てのプロセッシングエレメントに渡る処理データまたは転送データのデータ数の平均値を求め、前記全てのプロセッシングの処理データまたは転送データのデータ数と前記平均値との差が閾値以下になるまで前記データ分布平準化命令を発するものである請求項１に記載のＳＩＭＤ型並列計算システム。
【請求項５】
１つの命令ストリームの下で相異なるデータ値に対して、リング状に結合した２以上のプロセッシングエレメントで並列処理を行うＳＩＭＤ型並列計算方法であって、
前記リング状に結合された２以上のプロセッシングエレメントのうち隣接する一のプロセッシングエレメントが格納している処理データまたは転送データのデータ数と、自プロセッシングエレメントが格納している処理データまたは転送データのデータ数とを比較し、
前記比較結果と、隣接する他のプロセッシングエレメントでの比較結果とで決まるルールに従い、自プロセッシングエレメントが格納しているデータの内容を更新する動作と、隣接するプロセッシングエレメントが格納している処理データまたは転送データを自プロセッシングエレメントに移動させる動作とを指定するデータ分布平準化命令を個々のプロセッシングエレメントに発することを特徴とするＳＩＭＤ型並列計算方法。
【請求項６】
前記比較するデー多数のうち前者のデータ数が後者のデータ数よりも大きい場合にキャリーフラッグ情報を算出し、前記キャリーフラッグ情報と、隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報とで決まる前記ルールに従って、前記データ分布平準化命令を発する請求項５に記載のＳＩＭＤ型並列計算方法。
【請求項７】
前記比較するデー多数のうち前者のデータ数が後者のデータ数よりも大きい場合“１”、小さい場合に“０”となるキャリーフラッグ情報を算出し、
前記ルールに従って、
(1)自プロセッシングエレメントでのキャリーフラッグ情報が“０”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“０”であるとき、自プロセッシングエレメントの前記データ数と前記データとの内容を更新せず、
(2)自プロセッシングエレメントでのキャリーフラッグ情報が“０”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“１”であるとき、自プロセッシングエレメントの前記データ数を１デクリメントし、前記データの転送データで更新する、
(3)自プロセッシングエレメントでのキャリーフラッグ情報が“１”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“０”であるとき、自プロセッシングエレメントの前記データ数を１インクリメントし、前記隣接するプロセッシングエレメントの処理データまたは転送データに更新する、
(4)自プロセッシングエレメントでのキャリーフラッグ情報が“１”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“１”であるとき、自プロセッシングエレメントの前記データ数を更新せず、前記隣接するプロセッシングエレメントの処理データまたは転送データに更新する、
処理を実行する請求項５に記載のＳＩＭＤ型並列計算方法。
【請求項８】
前記リング状に結合した全てのプロセッシングエレメントに渡る処理データまたは転送データのデータ数の平均値を求め、前記全てのプロセッシングの処理データまたは転送データのデータ数と前記平均値との差が閾値以下になるまで前記データ分布平準化命令を発する請求項５に記載のＳＩＭＤ型並列計算方法。
【請求項９】
１つの命令ストリームの下で相異なるデータ値に対して、ＳＩＭＤ型並列計算システムにおけるリング状に結合した２以上のプロセッシングエレメントで実行する並列処理の制御を行う制御プログラムであって、
前記個々のプロセッシングエレメントは、
個々のプロセッシングエレメントが処理するデータを格納するデータ記憶手段と、
前記データのデータ数を格納するデータ数記憶素子と、
前記データ記憶手段に格納されている前記データの一部を格納するデータ記憶素子とを有しており、
コンピュータに、
前記リング状に結合された２以上のプロセッシングエレメントのうち一のプロセッシングエレメントのデータ数記憶素子に格納されたデータのデータ数と、自プロセッシングエレメントの前記データ数記憶素子が格納する前記データのデータ数とを比較する機能と、
前記自プロセッシングエレメントの比較結果と、他のプロセッシングエレメントでの比較結果とで決まるルールに従い、自プロセッシングエレメントの前記データ記憶手段と前記データ数記憶素子と前記データ記憶素子とに格納されているデータの内容を更新させる指令を個々のプロセッシングエレメントに発する機能と、
一のプロセッシングエレメントで格納されているデータを自プロセッシングエレメントに移動させる指令を個々のプロセッシングエレメントに発する機能とを実行させることを特徴とするＳＩＭＤ型並列計算用制御プログラム。
【請求項１０】
前記コンピュータに、
前記比較するデータ数のうち前者のデータ数が後者のデータ数よりも大きい場合にキャリーフラッグ情報を算出する機能と、
前記キャリーフラッグ情報と、隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報とで決まる前記ルールに従って、データ分布平準化命令を発する機能とを実行させる請求項９に記載のＳＩＭＤ型並列計算用制御プログラム。
【請求項１１】
前記コンピュータに、
前記比較するデータ数のうち前者のデータ数が後者のデータ数よりも大きい場合“１”、小さい場合に“０”となるキャリーフラッグ情報を算出する機能と、
前記ルールに従って、
(1)自プロセッシングエレメントでのキャリーフラッグ情報が“０”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“０”であるとき、自プロセッシングエレメントの前記データ数記憶素子と前記先頭データ記憶素子との内容を更新させない機能と、
(2)自プロセッシングエレメントでのキャリーフラッグ情報が“０”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“１”であるとき、自プロセッシングエレメントの前記データ数記憶素子のデータ数を１デクリメントし、前記先頭データ記憶素子の内容を先頭データに続く次の処理データまたは次の転送データで更新させる機能と、
(3)自プロセッシングエレメントでのキャリーフラッグ情報が“１”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“０”であるとき、自プロセッシングエレメントの前記データ数記憶素子のデータ数を１インクリメントし、前記先頭データ記憶素子の内容を隣接するプロセッシングエレメントの処理データまたは転送データの先頭データの内容で更新させる機能と、
(4)自プロセッシングエレメントでのキャリーフラッグ情報が“１”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“１”であるとき、自プロセッシングエレメントの前記データ数記憶素子のデータ数を更新せず、前記先頭データ記憶素子の内容を隣接するプロセッシングエレメントの処理データまたは転送データの先頭データの内容で更新させる機能と、
を実行させる請求項９に記載のＳＩＭＤ型並列計算用制御プログラム。
【請求項１２】
前記コンピュータに、
前記リング状に結合した全てのプロセッシングエレメントに渡る処理データまたは転送データのデータ数の平均値を求め、前記全てのプロセッシングの処理データまたは転送データのデータ数と前記平均値との差が閾値以下になるまで前記データ分布平準化命令を発する機能を実行させる請求項９に記載のＳＩＭＤ型並列計算用制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＩＭＤ型並列計算機システムに関し、より詳細には、一つの制御プロセッサ（ＣＰ）によって制御される多数結合したプロセッシングエレメント（ＰＥ）で構成されるＳＩＭＤ型並列計算システム、ＳＩＭＤ型並列計算方法及び制御プログラムに関する。
【背景技術】
【０００２】
並列計算システムの一例として、ビデオ信号などの画像処理用に用いられているＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）型並列計算システムが知られている。【０００３】
このようなＳＩＭＤ型並列計算システムの関連技術として、例えば以下に示す非特許文献１などが挙げられる。【０００４】
非特許文献１で提示されるＳＩＭＤ型並列計算システムでは、リング状に各プロセッシングエレメント（ＰＥ）を結合線で結合し、各ＰＥを制御プロセッサ（ＣＰ）によりＳＩＭＤ型制御を行う。このＳＩＭＤ型制御では、各プロセッシングエレメント（ＰＥ）が制御プロセッサ（ＣＰ）から発行される命令を自ローカルメモリ上のデータに適用することにより、複数のプロセッシングエレメント（ＰＥ）による並列処理を実現している。【０００５】
また、非特許文献１には、図１６に示すように、全プロセッシングエレメント（ＰＥ）のメモリ（ＲＡＭ）ブロックを跨るデータ（ライン：Ｏｎｅ  Ｌｉｎｅ）を単位に、外部メモリとの間にラインバッファ（Ｌｉｎｅ  Ｂｕｆｆｅｒ）でメモリ転送を行う構成が開示されている。【０００６】
一方、並列計算システムの他の例として、複数のプロセッサが各々独立して異なるデータを各々処理するＭＩＭＤ（Ｍｕｌｔｉｐｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）型並列計算システムが知られている。このＭＩＭＤ型並列計算システムの関連技術の例として、例えば以下に示す特許文献１などが挙げられる。【０００７】
特許文献１には、ＭＩＭＤ並列計算システム向けの手法として、プロセッサ間でデータ量を示す数値を並行して交信し合って、所定のシミュレーションによるスケジューリングを各プロセッサで並列に実行し、最後にデータを、前記スケジューリングの結果を元にプロセッサ間で送信しあって再分配する構成が開示されている。
また、特許文献１では、所定のシミュレーションによるスケジューリングを行うために、一つのプロセッサが、ＣＰＵと、隣接するＬ個のプロセッサとの送受信を行う通信プロセッサＣＭ１〜ＣＭＬを有している。また、通信プロセッサＣＭ１〜ＣＭＬは、Ｌ個のチャネル（通信路）で隣接プロセッサへ接続される。
【非特許文献１】京  昭倫著「１２８個の４ウェイＶＬＩＷ型ＲＩＳＣコアを集積した車載向け動画認識ＬＳＩ」電子情報通信学会研究会報告、集積回路研究会（ＩＣＤ），２００３年５月、Ｖｏｌ．１０３，Ｎｏ．８９，ｐｐ．１９−２４
【特許文献１】特開昭６３−１４７２５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、非特許文献１のＳＩＭＤ型並列計算システムでは、上記のように一つの命令ストリームの下で相異なるデータ値に対し並列処理を行う構成であるため、プロセッシングエレメント（ＰＥ）間で計算すべきデータの数が異なる場合では、計算すべきデータ数少ないために処理が速く終わったプロセッシングエレメント（ＰＥ）であっても次の処理に移れるのは、全プロセッシングエレメント（ＰＥ）が現処理を終了した時に限る。
そのため、個々の処理の所要時間は、通常、最長の処理時間を要したＰＥによって支配されてしまう。【０００９】
また、非特許文献１のＳＩＭＤ型並列計算システムでは、各プロセッシングエレメント（ＰＥ）毎に転送したいデータ数が各プロセッシングエレメント（ＰＥ）毎に異なる場合では、全プロセッシングエレメント（ＰＥ）の間での転送データ数の最大値（図１５の場合の最大ライン数（maximum  number  of  lines））によって、外部メモリとのデータ転送に要する処理時間が支配されてしまう。
このため、例えば転送データ数が同じである図１５に示すデータ分布状態（ライン分布状態）と図１６に示すデータ分布状態であっても、データのプロセッシングエレメント（ＰＥ）間配置が図１５に示すデータ分布状態（ライン分布状態）に偏りがある場合の方が、図１６に示すデータ分布状態に比して、データ転送に約２倍以上の処理時間がかかってしまうという課題が存在していた。【００１０】
さらに、特許文献１では、各プロセッサにデータを再配分する際に、各プロセッサ間でデータ量を示す数値を並行して交信し合って、所定のシミュレーションによるスケジューリングを行う必要があり、プロセッサ数の増大に伴い処理時間がかかってしまう。
また、特許文献１では、一つのプロセッサにつき通信プロセッサＣＭ１〜ＣＭＬやＬ個のチャネル（通信路）などの煩雑な装備が必要であり、ハードウェアコストが増大する。【００１１】
本発明の目的は、
外部へのメモリ転送に際しての転送対象データ数、或いはプロセッシングエレメント（ＰＥ）を選ばない処理の場合でのプロセッシングエレメント（ＰＥ）毎への割り当て処理数を、プロセッシングエレメント（ＰＥ）相互間で効率よく均一化させることが可能なＳＩＭＤ型並列計算システム、ＳＩＭＤ型並列計算方法及び制御プログラムを提供することにある。
【課題を解決するための手段】
【００１２】
前記目的を達成するため、本発明に係るＳＩＭＤ型並列計算機システムは、１つの命令ストリームの下で相異なるデータ値に対して、リング状に結合した２以上のプロセッシングエレメントで並列処理を行うＳＩＭＤ型並列計算システムであって、
前記個々のプロセッシングエレメントは、
個々のプロセッシングエレメントが処理する或いは転送するデータを格納するデータ記憶手段と、前記処理データまたは前記転送データのデータ数を格納するデータ数記憶素子と、前記データ記憶手段に格納されている前記処理データまたは転送データのうち先頭のデータを格納する先頭データ記憶素子とを有し、
さらに、前記リング状に結合された２以上のプロセッシングエレメントのうち隣接する一のプロセッシングエレメントのデータ数記憶素子に格納された処理データまたは転送データのデータ数と、自プロセッシングエレメントの前記データ数記憶素子が格納する前記処理データまたは転送データのデータ数とを比較し、前記自プロセッシングエレメントの比較結果と、隣接する他のプロセッシングエレメントでの比較結果とで決まるルールに従い、自プロセッシングエレメントの前記データ記憶手段と前記データ数記憶素子と前記先頭データ記憶素子とに格納されているデータの内容を更新する動作と、隣接するプロセッシングエレメントで格納されている処理データまたは転送データを自プロセッシングエレメントの前記データ記憶手段と前記先頭データ記憶素子に移動させる動作とを指定するデータ分布平準化命令を前記個々のプロセッシングエレメントに発する制御プロセッサを有することを特徴とする。【００１３】
本発明に係るＳＩＭＤ型並列計算方法は、１つの命令ストリームの下で相異なるデータ値に対して、リング状に結合した２以上のプロセッシングエレメントで並列処理を行うＳＩＭＤ型並列計算方法であって、
前記リング状に結合された２以上のプロセッシングエレメントのうち隣接する一のプロセッシングエレメントが格納している処理データまたは転送データのデータ数と、自プロセッシングエレメントが格納している処理データまたは転送データのデータ数とを比較し、
前記比較結果と、隣接する他のプロセッシングエレメントでの比較結果とで決まるルールに従い、自プロセッシングエレメントが格納しているデータの内容を更新する動作と、隣接するプロセッシングエレメントが格納している処理データまたは転送データを自プロセッシングエレメントに移動させる動作とを個々のプロセッイングエレメントに実行させることを特徴とする。【００１４】
本発明に係るＳＩＭＤ型並列計算用制御プログラムは、１つの命令ストリームの下で相異なるデータ値に対して、ＳＩＭＤ型並列計算システムにおけるリング状に結合した２以上のプロセッシングエレメントで実行する並列処理の制御を行う制御プログラムであって、
前記個々のプロセッシングエレメントは、
個々のプロセッシングエレメントが処理するデータを格納するデータ記憶手段と、
前記データのデータ数を格納するデータ数記憶素子と、前記データ記憶手段に格納されている前記データの一部を格納するデータ記憶素子とを有しており、
コンピュータに、
前記リング状に結合された２以上のプロセッシングエレメントのうち一のプロセッシングエレメントのデータ数記憶素子に格納されたデータのデータ数と、自プロセッシングエレメントの前記データ数記憶素子が格納する前記データのデータ数とを比較する機能と、
前記自プロセッシングエレメントの比較結果と、他のプロセッシングエレメントでの比較結果とで決まるルールに従い、自プロセッシングエレメントの前記データ記憶手段と前記データ数記憶素子と前記データ記憶素子とに格納されているデータの内容を更新させる指令を個々のプロセッシングエレメントに発する機能と、
一のプロセッシングエレメントで格納されているデータを自プロセッシングエレメントに移動させる指令を個々のプロセッシングエレメントに発する機能とを実行させることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、データ分布平準化命令ＥＱＬを、単純な演算の少ない組み合せで実現できるため、単一マシンサイクルで実装可能であって、少ないハードウェアコストの増加に抑えつつ、データ数を均一化する処理を効率よく実現できる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施形態を図に基づいて詳細に説明する。【００１７】
本発明の実施形態に係るＳＩＭＤ型並列計算システムは図１，図２，図４，図５及び図１２に示すように、１つの命令ストリームの下で相異なるデータ値に対して、リング状に結合した２以上のプロセッシングエレメント２０１（２０１（ｎ−１），２０１（ｎ），２０１（ｎ＋１）：ＰＥアレイ２００）で並列処理を行うＳＩＭＤ型並列計算システムであって、基本的な構成として、前記個々のプロセッシングエレメント２０１は、個々のプロセッシングエレメント２００が処理するデータ（処理データ或いは転送データ）を格納するデータ記憶手段１０１（１０１（ｎ−１），１０１（ｎ），１０１（ｎ＋１））と、前記処理データまたは前記転送データのデータ数を格納するデータ数記憶素子１０２（１０２（ｎ−１），１０２（ｎ），１０２（ｎ＋１））と、前記データ記憶手段１０１に格納されている前記データの一部（例えば先頭のデータ）を格納するデータ記憶素子（１０３（ｎ−１），１０３（ｎ），１０３（ｎ＋１））とを有しており、
さらに、前記リング状に結合された２以上のプロセッシングエレメント２０１のうち一のプロセッシングエレメント２０１のデータ数記憶素子１０２に格納されたデータ（処理データ或いは転送テータ）のデータ数と、自プロセッシングエレメントの前記データ数記憶素子１０２が格納する前記データのデータ数とを比較し、前記自プロセッシングエレメントの比較結果と、他のプロセッシングエレメントでの比較結果とで決まるルールに従い、自プロセッシングエレメント２０１の前記データ記憶手段１０１と前記データ数記憶素子１０２と前記先頭データ記憶素子１０３とに格納されているデータの内容を更新する動作と、隣接するプロセッシングエレメント２０１に格納されている処理データまたは転送データを自プロセッシングエレメント２０１の前記データ記憶手段１０１と前記先頭データ記憶素子１０３に移動させる動作とを指定するデータ分布平準化命令ＥＱＬを個々のプロセッシングエレメント２０１に発する制御プロセッサ２１０（１０４，１０５，１０６，１０７を含む）を有することを特徴とする。【００１８】
本発明の実施形態では、１つの命令ストリームの下で相異なるデータ値に対して、リング状に結合した２以上のプロセッシングエレメントで並列処理を行う際に、前記リング状に結合された２以上のプロセッシングエレメント２０１のうち一のプロセッシングエレメント２００が格納しているデータのデータ数と、自プロセッシングエレメントが格納しているデータのデータ数とを比較する。そして、前記比較結果と、他のプロセッシングエレメント２０１での比較結果とで決まるルールに従い、自プロセッシングエレメント２０１が格納しているデータの内容を更新する動作と、隣接するプロセッシングエレメント２０１が格納しているデータを自プロセッシングエレメント２０１に移動させる動作とを個々のプロセッシングエレメントに実行させる。【００１９】
より具体的に説明すると、本発明の実施形態における前記制御プロセッサ２１０（１０４，１０５，１０６，１０７を含む）は、前記比較するデータ数のうち前者のデータ数ｃｎｔｒ＿ｌｅｆｔ（又はｃｎｔｒ＿ｒｉｇｈｔ）が後者のデータ数ｃｎｔｒよりも大きい場合にキャリーフラッグ情報ｃｆを算出する。前記制御プロセッサ２１０（１０４，１０５，１０６を含む）は、前記キャリーフラッグ情報ｃｆとして、前記比較するデータ数のうち前者のデータ数ｃｎｔｒ＿ｌｅｆｔ（又はｃｎｔｒ＿ｒｉｇｈｔ）が後者のデータ数ｃｎｔｒよりも大きい場合“１”、小さい場合に“０”となるキャリーフラッグ情報を算出する。【００２０】
前記制御プロセッサ２１０（１０４，１０５，１０６，１０７を含む）は、前記ルールとして、
(1)自プロセッシングエレメント２０１でのキャリーフラッグ情報が“０”かつ隣接するプロセッシングエレメント２０１でのキャリーフラッグ情報が“０”であるとき、自プロセッシングエレメント２０１の前記データ数記憶素子１０２と前記先頭データ記憶素子１０３との内容を更新しない、
(2)自プロセッシングエレメント２０１でのキャリーフラッグ情報が“０”かつ隣接するプロセッシングエレメント２０１でのキャリーフラッグ情報が“１”であるとき、自プロセッシングエレメント２０１の前記データ数記憶素子１０２のデータ数を１デクリメントし、前記先頭データ記憶素子１０３の内容を先頭データに続く次の処理データまたは次の転送データで更新する、
(3)自プロセッシングエレメント２０１でのキャリーフラッグ情報が“１”かつ隣接するプロセッシングエレメント２０１でのキャリーフラッグ情報が“０”であるとき、自プロセッシングエレメント２０１の前記データ数記憶素子１０２のデータ数を１インクリメントし、前記先頭データ記憶素子１０３の内容を隣接するプロセッシングエレメント２０１の処理データまたは転送データの先頭データの内容で更新する、
(4)自プロセッシングエレメント２０１でのキャリーフラッグ情報が“１”かつ隣接するプロセッシングエレメント２０１でのキャリーフラッグ情報が“１”であるとき、自プロセッシングエレメント２０１の前記データ数記憶素子１０２のデータ数を更新せず、前記先頭データ記憶素子１０３の内容を隣接するプロセッシングエレメント２０１の処理データまたは転送データの先頭データの内容で更新する、
という情報を保有している。【００２１】
前記制御プロセッサ２１０（１０４，１０５，１０６，１０７を含む）は、前記ルールに基づくデータ分布平準化命令ＥＱＬを発し、前記リング状に結合した全てのプロセッシングエレメント２０１に渡る処理データまたは転送データのデータ数の平均値を求め、前記全てのプロセッシング２０１の処理データまたは転送データのデータ数と前記平均値との差が閾値以下になるまで前記データ分布平準化命令を発する。【００２２】
以上のように、制御プロセッサ２１０が全プロセッシング２０１に渡るデータ数ｃｎｔｒ値の平均値を求め、次に全プロセッシング２０１のデータ数ｃｎｔｒ値と前記平均値との差閾値（例えば１）以下に収まるまで、データ分布平準化命令ＥＱＬを繰り返し発行してＰＥアレイ２００を制御することにより、データ数ｃｎｔｒの最大値と最小値の差と全プロセッシング２０１の数との和に等しい程度の回数だけデータ分布平準化命令を実行すれば、全プロセッシング２０１の処理データまたは転送データをほぼ同一数に均せるようになる。【００２３】
このような構成のＳＩＭＤ型並列計算機システムでは、「データ分布平準化命令ＥＱＬ」は、単純な演算の少ない組み合せで実現できるため単一マシンサイクルで実装可能であるのに対し、ＥＱＬ命令を持たない例えば非特許文献１で開示されているＳＩＭＤ型並列計算システムがＥＱＬ命令相当の処理を行うためには、１０程度のマシンサイクルがかかる。
そのため、本発明の実施形態に係る「データ分布平準化命令ＥＱＬ」を有するＳＩＭＤ型並列計算機システムは、少ないハードウェアコストの増加に抑えつつ、データ数を均一化する処理を効率よく実現できる。【００２４】
以下、このような本発明の実施形態に係る「ＳＩＭＤ型並列計算機システム」のさらに具体例について、図面を参照して説明する。以下の説明では、データ数記憶素子１０２及び先頭データ記憶素子１０３としてレジスタを用い、データ記憶手段１０１としてＲＡＭ（Random  Access  Memory）を用いている。また、自プロセッシングエレメントを図に示すプロセッシングエレメント２０１（ｎ）、隣接するプロセッシングエレメントを図に示すプロセッシングエレメント２０１（ｎ−１）或いはプロセッシングエレメント２０１（ｎ＋１）として説明する。【００２５】
〔第１の実施の形態〕
（ＳＩＭＤ型並列計算機システムの全体構成）
先ず、本実施形態のＳＩＭＤ型並列計算機システムの具体的構成について、全体構成から説明し、続いて各部の詳細構成について説明することとする。図１は、本発明の第１実施形態に係るＳＩＭＤ型並列計算機システムの全体の概略構成の一例を示すブロック図である。【００２６】
図１に示すように、本実施の形態のＳＩＭＤ型並列計算機システム１は、多数個のプロセッシングエレメント（ＰＥ）２０１（ｎ―１），２０１（ｎ），２０１（ｎ＋１）・・・をリング状に結合したプロセッシングエレメントアレイ（ＰＥアレイ）２００と、ＰＥアレイ２００に命令を供給し、ＰＥアレイ２００全体を制御するための制御プロセッサ（ＣＰ）２１０とを有している。
また、隣接する各プロセッシングエレメント２０１（ｎ―１）とプロセッシングエレメント２０１（ｎ）同士、プロセッシングエレメント２０１（ｎ）とプロセッシングエレメント２０１（ｎ＋１）同士は、ネットワークまたはＰＥ間結合線２２０によって双方向でリング状に接続されている。【００２７】
ここで、前記各プロセッシングエレメント２０１は、図の最右端のプロセッシングエレメント２０１が最左端のプロセッシングエレメント２０１に接続してリング状に結合する。また、プロセッシングエレメント２０１間の結合線２２０は、双方向で情報の授受を行う。
本実施の形態では、データ平準化処理における各プロセッシングエレメント２０１間を転送する転送データは、図の左から右に向けて一方向で転送可能である。ただし、後述するキャリーフラグ情報ｃｆなどの他の制御情報及び処理データは、プロセッシングエレメント２０１間で双方に遣り取りされる。このため、ＰＥ間結合線２２０は、データ平準化処理における転送するデータ用の結合線と、他の制御情報を転送する結合線とを有してもよい。【００２８】
各プロセッシングエレメント２０１（ｎ―１）、プロセッシングエレメント２０１（ｎ）、プロセッシングエレメント２０１（ｎ＋１）、・・・は、各々独立にアクセス可能なデータ記憶手段としてのＲＡＭ１０１（ｎ−１）、ＲＡＭ１０１（ｎ）、ＲＡＭ１０１（ｎ＋１）、・・・をそれぞれ有する。【００２９】
制御プロセッサ２１０は、前記各プロセッシングエレメント２０１毎の処理データのデータ数又は外部へのメモリ転送データのデータ数を前記各プロセッシングエレメント２０１間で均一化するための処理動作を実行するデータ分布平準化命令ＥＱＬを生成し出力するデータ分布平準化命令生成部２１２と、前記データ分布平準化命令ＥＱＬを前記各プロセッシングエレメント２０１に対して繰り返し実行する処理動作を制御する実行制御部２１４とを有する。さらに、制御プロセッサ２１０は、各プロセッシングエレメント２０１に組み込んだ、減算演算部（ｓｕｂ）１０４，排他的論理和演算部（ｘｏｒ）１０６及び加減算演算部１０７を有している。【００３０】
（プロセッシングエレメントの詳細構成）
より詳細には、個々のプロセッシングエレメント２０１は、図２に示すように、処理データまたは転送データなどのデータ（データの本体あるいはその関連情報）を格納するＲＡＭ１０１（データ記憶手段）と、前記データのデータ数を格納するレジスタ（ｃｎｔｒ）１０２（データ数記憶素子）と、ＲＡＭ１０１内に格納されているデータのうち先頭データを格納するレジスタ（ｍｄ）１０３（先頭データ記憶素子）とを有している。【００３１】
また、データ分布平準化命令ＥＱＬが発行された際、プロセッシングエレメント２０１（ｎ）は、左隣のプロセッシングエレメント２０１（ｎ−１）のレジスタ１０２（ｎ−１）に格納されているデータ数ｃｎｔｒを左隣のプロセッシングエレメント２０１（ｎ−１）からのデータ数ｃｎｔｒ＿ｌｅｆｔとして受け取る。またプロセッシングエレメント２０１（ｎ）は、左隣のプロセッシングエレメント２０１（ｎ−１）のレジスタ１０３（ｎ−１）に格納されている先頭データｍｄを左隣のプロセッシングエレメント２０１（ｎ−１）からの先頭データｍｄ＿ｌｅｆｔとして受け取る。そして、プロセッシングエレメント２０１（ｎ）は、右隣のプロセッシングエレメント２０１（ｎ−１）のキャリーフラッグ情報ｃｆを右隣のプロセッシングエレメント２０１（ｎ＋１）からのキャリーフラッグ情報ｃｆ＿ｒｉｇｈｔとして結合線２２０を介して入力として受け取る。【００３２】
ここに、キャリーフラッグ情報ｃｆとは、後述する減算演算部１０４が、自プロセッシングエレメント２０１（ｎ）のレジスタ１０２（ｎ）が格納しているデータ数ｃｎｔｒと、左隣のプロセッシングエレメント（ｎ−１）のレジスタ１０２（ｎ−１）が格納しているデータ数ｃｎｔｒ＿ｌｅｆｔとを比較した結果に応じて出力する情報である。【００３３】
また、図２を参照すると、本第１の実施の形態では、データ分布平準化命令ＥＱＬをＳＩＭＤ型並列計算システム１に実行させる制御プロセッサ２１０は、個々のプロセッシングエレメント２０１に、減算演算部（ｓｕｂ）１０４と、排他的論理和演算部（ｘｏｒ）１０６と、論理積演算部（ａｎｄ）１０５と、加減算演算部（ａｄｄ／ｓｕｂ）１０７とを有しており、これらは、前記データ分布平準化命令生成部２１２にて生成発行されたＥＱＬ命令により起動する。【００３４】
ここで、本実施の形態における減算演算部（ｓｕｂ）１０４、排他的論理和演算部（ｘｏｒ）１０６、論理積演算部（ａｎｄ）１０５、加減算演算部（ａｄｄ／ｓｕｂ）１０７により、平準化処理部１１０を構成する。【００３５】
以下の説明では、自プロセッシングエレメント２０１（ｎ）に組み込んだ、減算演算部１０４（ｎ）、排他的論理和演算部１０６（ｎ）、論理積演算部１０５（ｎ）及び加減演算部１０７（ｎ）の構成について説明するが、自プロセッシングエレメント２０１（ｎ）に隣接する左隣のプロセッシングエレメント２０１（ｎ−１）或いは右隣のプロセッシングエレメント２０１（ｎ＋１）がデータ分布平準化命令ＥＱＬを実行する際には、それらのプロセッシングエレメント２０１（ｎ−１），（ｎ＋１）の算演算部１０４（ｎ−１），（ｎ＋１）、排他的論理和演算部１０６（ｎ−１），（ｎ＋１）、論理積演算部１０５（ｎ−１），（ｎ＋１）及び加減演算部１０７（ｎ−１），（ｎ＋１）も同様に構成されている。【００３６】
自プロセッシングエレメント２０１（ｎ）の減算演算部１０４は、自プロセッシングエレメント２０１（ｎ）のレジスタ１０２（ｎ）が格納しているデータ数ｃｎｔｒと、左隣のプロセッシングエレメント２０１（ｎ−１）のレジスタ１０２（ｎ−１）が格納しているデータ数ｃｎｔｒ＿ｌｅｆｔを比較する、具体的にはこれらのデータ数を減算処理して、前者のデータ数ｃｎｔｒ＿ｌｅｆｔが後者のデータ数ｃｎｔｒよりも大きければ“１”、そうでなければ“０”の値となるキャリーフラッグ情報ｃｆを出力する。そして、自プロセッシングエレメント２０１（ｎ）の減算演算部１０４は、キャリーフラグ情報ｃｆの値を自プロセッシングエレメント２０１（ｎ）のレジスタ１０３（ｎ）、論理積演算部１０５（ｎ）、及び排他的論理和演算部１０６（ｎ）へそれぞれ送る。【００３７】
自プロセッシングエレメント２０１（ｎ）のレジスタ（ｍｄ）１０３（ｎ）は、自プロセッシングエレメント２０１（ｎ）のＲＡＭ１０１（ｎ−１）に格納された処理データまたは転送データのうち先頭データｍｄを格納している。そして、レジスタ１０３（ｎ）は、自プロセッシングエレメント２０１（ｎ）の減算演算部１０４（ｎ）からの出力であるキャリーフラグ情報ｃｆが「１」ならば、格納している先頭データｍｄの内容を、左隣のプロセッシングエレメント２０１（ｎ−１）のレジスタ１０３（ｎ−１）が格納している先頭データｍｄ＿ｌｅｆｔの内容に更新する。
また、自プロセッシングエレメント２０１（ｎ）のレジスタ（ｍｄ）１０３（ｎ）は、自プロセッシングエレメント２０１（ｎ）の減算演算部１０４（ｎ）からの出力であるキャリーフラグ情報ｃｆが「０」ならば、自プロセッシングエレメント２０１（ｎ）のＲＡＭ１０１（ｎ）に対する前サイクルでのリードアクセスの出力ｄｏｕｔで先頭データｍｄの内容を更新する。【００３８】
自プロセッシングエレメント２０１（ｎ）の論理積演算部１０５（ｎ）は、右隣のプロセッシングエレメント２０１（ｎ＋１）の減算演算部１０４（ｎ＋１）が出力したキャリーフラグ情報ｃｆを反転させたキャリーフラッグ情報ｃｆ＿ｒｉｇｈｔと自プロセッシングエレメント２０１（ｎ）の減算演算部１０４（ｎ）が出力したキャリーフラグ情報ｃｆとの論理積をとり、その結果を自プロセッシングエレメント２０１（ｎ）のＲＡＭ１０１（ｎ）および加減算演算部１０７（ｎ）へ出力する。
ＲＡＭ１０１（ｎ）は、論理積演算部１０５（ｎ）の出力をライト許可信号（ライトイネーブル信号）ｗｅｎとして用いる。また、加減算演算部１０７（ｎ）は、論理積演算部１０５（ｎ）の出力を、加算を行う（論理積演算部１０５（ｎ）の出力結果が「１」の場合）のか、あるいは減算を行う（論理積演算部１０５（ｎ）の出力結果が０の場合）かの加減算選択信号として用いる。【００３９】
排他的論理和演算部１０６（ｎ）は、自プロセッシングエレメント２０１（ｎ）の減算演算部１０４（ｎ）が出力したキャリーフラグ情報ｃｆと、右隣のプロセッシングエレメント２０１（ｎ＋１）の減算演算部１０４（ｎ＋１）が出力したキャリーフラッグ情報ｃｆを反転させたキャリーフラッグ情報ｃｆ＿ｒｉｇｈｔとの排他的論理和をとり、その結果を加減算演算部１０７（ｎ）へ出力する。【００４０】
加減算演算部１０７（ｎ）は、論理積演算部１０５（ｎ）からの出力を加減算選択信号として加算と減算のいずれの動作を行うかを決定し、加算の場合（論理積演算部１０５（ｎ）の出力結果が「１」の場合）はレジスタ１０２（ｎ）が格納しているデータ数ｃｎｔｒの値と、排他的論理和演算部１０６（ｎ）の出力値との加算処理を行い、減算の場合（論理積演算部１０５（ｎ）の出力結果が「０」の場合）はレジスタ１０２（ｎ）が格納しているデータ数ｃｎｔｒの値と、排他的論理和演算部１０６の出力値との減算処理を行う。そして、加減算演算部１０７（ｎ）は、その出力値をレジスタ１０２（ｎ）及びＲＡＭ１０１（ｎ）に出力する。
レジスタ１０２（ｎ）は、加減算演算部１０７の演算結果を、格納する内容を更新するための更新指令信号として用いる。また、ＲＡＭ１０１（ｎ）は、例えば加減算演算部１０７の演算結果と所定のベースアドレス値とを加算した結果を、データ分布平準化命令ＥＱＬが実行されているサイクルにおけるＲＡＭ１０１へのアクセスアドレスａｄｄｒとして受け取る。【００４１】
図３を参照すると、自プロセッシングエレメント２０１（ｎ）のキャリーフラッグ情報ｃｆの値（“１”または“０”）と、右隣のプロセッシングエレメント２０１（ｎ＋１）のキャリーフラッグ情報ｃｆを論理反転したキャリーフラッグ情報ｃｆ＿ｒｉｇｈｔの値（“１”または“０”）との組み合せに応じて、論理積演算部１０５（ｎ）、排他的論理和演算部１０６（ｎ）、加減算演算部１０７（ｎ）の出力値、およびレジスタ（ｃｎｔｒ）１０２及びレジスタ（ｍｄ）１０３（ｎ）の値がどのように変化するかを、ＲＡＭ１０１（ｎ）へライト許可信号ｗｅｎが入力する場合と、ＲＡＭ１０１（ｎ）へアクセスアドレス信号ａｄｄｒが入力する場合とに分けて示している。【００４２】
（動作について）
次に、制御プロセッサ２１０からデータ分布平準化命令ＥＱＬが発行された際におけるＳＩＭＤ型並列計算機システムの動作について図２及び図３に基づいて説明する。における各部の動作について、図２及び図３を参照しつつ説明する。説明では、上述したように、自プロセッシングエレメントを図に示すプロセッシングエレメント２０１（ｎ）、隣接するプロセッシングエレメントを図に示すプロセッシングエレメント２０１（ｎ−１）或いはプロセッシングエレメント２０１（ｎ＋１）として説明する。【００４３】
プロセッシングエレメント（ｎ−１）は、減算演算部（ｓｕｂ）１０４（ｎ−１）と、排他的論理和演算部（ｘｏｒ）１０６（ｎ−１）と、論理積演算部（ａｎｄ）１０５（ｎ−１）と、加減算演算部（ａｄｄ／ｓｕｂ）１０７（ｎ−１）と、レジスタ（ｃｎｔｒ）１０２（ｎ−１）（データ数格納部）と、レジスタ（ｍｄ）１０３（ｎ−１）（先頭データ格納部）と、ＲＡＭ１０１（ｎ−１）と、を含む。【００４４】
プロセッシングエレメント（ｎ）は、減算演算部（ｓｕｂ）１０４（ｎ）と、排他的論理和演算部（ｘｏｒ）１０６（ｎ）と、論理積演算部（ａｎｄ）１０５（ｎ）と、加減算演算部（ａｄｄ／ｓｕｂ）１０７（ｎ）と、レジスタ（ｃｎｔｒ）１０２（ｎ）（データ数格納部）と、レジスタ（ｍｄ）１０３（ｎ）（先頭データ格納部）と、ＲＡＭ１０１（ｎ）と、を含む。【００４５】
プロセッシングエレメント（ｎ＋１）は、減算演算部（ｓｕｂ）１０４（ｎ＋１）と、排他的論理和演算部（ｘｏｒ）１０６（ｎ＋１）と、論理積演算部（ａｎｄ）１０５（ｎ＋１）と、加減算演算部（ａｄｄ／ｓｕｂ）１０７（ｎ＋１）と、レジスタ（ｃｎｔｒ）１０２（ｎ＋１）（データ数格納部）と、レジスタ（ｍｄ）１０３（ｎ＋１）（先頭データ格納部）と、ＲＡＭ１０１（ｎ＋１）と、を含む。【００４６】
以下の説明では、図の左側のプロセッシングエレメントから右側のプロセッシングエレメントに処理データ或いは転送データが順次移動されて並列処理が行われる場合を想定して、データ分布平準化命令ＥＱＬを実行する場合を説明する。【００４７】
制御プロセッサ２１０（特にデータ分布平準化命令生成部２１２）は、データ分布平準化を行うためのデータ分布平準化命令ＥＱＬを発行する際、プロセッシングエレメント（ｎ−１），（ｎ），（ｎ−１）を含めて、リング状に結合した全てのプロセッシングエレメントのレジスタ１０３に格納されているデータ数ｃｎｔｒの情報を取得する。そして、制御プロセッサ２１０（特にデータ分布平準化命令生成部２１２）は、例えば次の様な処理を行って、データ分布平準化命令ＥＱＬを繰り返して実行するように全てのプロセッシングエレメント２０１を制御する。以下説明する例では、制御プロセッサ２１０のデータ分布平準化命令生成部２１２は、実行制御部２１４の制御の下で、リング状に結合した全てのプロセッシングエレメント２０１のレジスタ１０３に格納されているデータ数ｃｎｔｒの情報を取得し、全てのプロセッシングエレメント２０１のデータ数ｃｎｔｒの値の総和を全てのプロセッシングエレメント２０１の数で除算した結果Ｈ、すなわち、全てのプロセッシングエレメント２０１に渡るデータ数ｃｎｔｒの平均値Ｈを求め、全てのプロセッシングエレメント２０１のデータ数ｃｎｔｒの値と平均値Ｈとの差が閾値（例えば“１”）以下に収まるまで、プロセッシングエレメントアレイ２００を制御する。【００４８】
次に、プロセッシングエレメントアレイ２００のうち、プロセッシングエレメント２０１（ｎ）がデータ分布平準化命令ＥＱＬを繰り返して実行する場合について説明する。なお、データ分布平準化命令ＥＱＬを実行する場合、前記プロセッシングエレメント２０１（ｎ）以外のプロセッシングエレメント２０１も、以下に説明するプロセッシングエレメント２０１（ｎ）と同様にデータ分布平準化命令ＥＱＬを繰り返して実行する。【００４９】
プロセッシングエレメント２０１（ｎ）に組み込んだ制御プロセッサ２１０の減算演算部１０４（ｎ）は、自プロセッシングエレメント（ｎ）のレジスタ（ｃｎｔｒ）１０２（ｎ）が格納しているデータ数ｃｎｔｒの値と、自プロセッシングエレメン（ｎ）に隣接する左隣のプロセッシングエレメント（ｎ−１）のレジスタ（ｃｎｔｒ）１０２（ｎ−１）が格納しているデータ数ｃｎｔｒ＿ｌｅｆｔの値とを比較する。
そして、減算演算部１０４（ｎ）は、例えば前記データ数ｃｎｔｒ＿ｌｅｆｔの値が前記データ数ｃｎｔｒの値より大きい場合、すなわち、（データ数ｃｎｔｒ＿ｌｅｆｔの値―データ数ｃｎｔｒの値）が０より大きい場合、自プロセッシングエレメン（ｎ）におけるキャリーフラグ情報ｃｆを「１」として出力する。
逆に、減算演算部１０４（ｎ）は、例えば前記データ数ｃｎｔｒ＿ｌｅｆｔの値がデータ数ｃｎｔｒの値以下の場合、すなわち、（データ数ｃｎｔｒ＿ｌｅｆｔの値―データ数ｃｎｔｒの値）が０以下の場合、自プロセッシングエレメン（ｎ）におけるキャリーフラグ情報ｃｆを「０」として出力する。【００５０】
続いて、論理積演算部１０５（ｎ）は、自プロセッシングエレメン（ｎ）におけるキャリーフラグ情報ｃｆと、左隣のプロセッシングエレメン（ｎ＋１）におけるキャリーフラグ情報ｃｆを反転させたキャリーフラッグ情報ｃｆ＿ｒｉｇｈｔとを入力し、それらの値に対して論理積の処理を行う。図３に示すように、キャリーフラッグ情報ｃｆが「１」でキャリーフラッグ情報ｃｆ＿ｒｉｇｈｔが「０」のときのみ、論理積演算部１０５（ｎ）の出力は「１」となる。前記論理積演算部１０５（ｎ）は、論理積の処理の結果を加減算演算部１０７（ｎ）とＲＡＭ１０１（ｎ）とに出力する。【００５１】
ＲＡＭ１０１（ｎ）は、論理積演算部１０５（ｎ）からの出力値が「１」のとき、論理積演算部１０５（ｎ）の出力を、ライト許可信号（ライトイネーブル信号）ｗｅｎとして受け入れる。そして、ＲＡＭ１０１（ｎ）は、データの書き込みが許可された状態となる。
したがって、ＲＡＭ１０１（ｎ）は、左隣のプロセッシングエレメント（ｎ―１）のレジスタ（ｍｄ）１０３（ｎ−１）に格納されている先頭データｍｄ＿ｌｅｆｔを、ＲＡＭ１０１（ｎ）の入力データｄｉｎとして書き込む。
この結果、ＲＡＭ１０１（ｎ）内には、現在存在するデータに、左隣のプロセッシングエレメント（ｎ―１）のレジスタ１０３（ｎ−１）が格納している先頭データｍｄ＿ｌｅｆｔが加わった分のデータが存在することになる。【００５２】
排他的論理和演算部１０６（ｎ）は、自プロセッシングエレメント（ｎ）におけるキャリーフラグ情報ｃｆと、右隣のプロセッシングエレメント（ｎ＋１）におけるキャリーフラグ情報ｃｆ＿ｒｉｇｈｔとを入力する。図３に示すように、キャリーフラグ情報ｃｆとキャリーフラグ情報ｃｆ＿ｒｉｇｈｔとが同一の論理のときには、排他的論理和演算部１０６（ｎ）の出力は「０」となり、キャリーフラグ情報ｃｆとキャリーフラグ情報ｃｆ＿ｒｉｇｈｔとが異なる論理のときには、排他的論理和演算部１０６（ｎ）の出力は「１」となる。【００５３】
次に、加減算演算部１０７（ｎ）は、論理積演算部１０５の出力値に基づいて加算演算と減算演算のうちのいずれか一つの演算を行うかを決定する。
例えば、図３に示すように、論理積演算部１０５の出力値が「１」の場合には、加減算演算部１０７（ｎ）は、加算演算「＋」を行うことを決定する。一方、論理積演算部１０５の出力値が「０」の場合には、加減算演算部１０７（ｎ）は、減算演算「―」を行うことを決定する。
このため、図２に示すように、加減算演算部１０７（ｎ）は、論理積演算部１０５の出力値が「１」の場合には、レジスタ（ｃｎｔｒ）１０２（ｎ）が格納しているデータ数ｃｎｔｒの値と、排他的論理和演算部１０６（ｎ）の出力値とを加算処理する。一方、加減算演算部１０７（ｎ）は、論理積演算部１０５の出力値が「０」の場合には、レジスタ（ｃｎｔｒ）１０２（ｎ）が格納しているデータ数ｃｎｔｒの値と、排他的論理和演算部１０６（ｎ）の出力値とを減算処理する。【００５４】
そして、加減算演算部１０７（ｎ）は、演算結果である加減算演算部１０７（ｎ）の出力値をレジスタ（ｃｎｔｒ）１０２（ｎ）に出力する。
また、加減算演算部１０７は、演算結果である加減算演算部１０７（ｎ）の出力値と、所定のベースアドレス値とを加算したメモリアドレス演算結果を、当該サイクルにおけるＲＡＭ１０１（ｎ）へのアクセスアドレスａｄｄｒとしてＲＡＭ１０１（ｎ）へ出力する（メモリアドレス生成機能）。
例えば、論理積演算部１０５の出力値が「１」で排他的論理和演算部１０６（ｎ）の出力値が「１」の場合には、レジスタ１０２（ｎ）は、加減算演算部１０７（ｎ）の出力に基づいて、現在格納しているデータ数ｃｎｔｒの値を１インクリメントして、その格納しているデータ数を「ｃｎｔｒ＋１」に更新する。
論理積演算部１０５の出力値が「０」で排他的論理和演算部１０６（ｎ）の出力値が「１」の場合には、レジスタ１０２（ｎ）は、加減算演算部１０７（ｎ）の出力に基づいて、現在格納しているデータ数ｃｎｔｒの値を１デクリメントして、その格納しているデータ数を「ｃｎｔｒ−１」に更新する。
論理積演算部１０５の出力値が「０」で排他的論理和演算部１０６（ｎ）の出力値が「０」の場合には、レジスタ１０２（ｎ）は、加減算演算部１０７（ｎ）の出力に基づいて、現在格納しているデータ数ｃｎｔｒの値をそのまま維持する。【００５５】
この結果、図３に示すように、レジスタ（ｃｎｔｒ）１０２（ｎ）の値は、「ｃｎｔｒ」、「ｃｎｔｒ―１」、「ｃｎｔｒ＋１」のそれぞれの値となる。【００５６】
すなわち、自プロセッシングエレメント（ｎ）におけるキャリーフラグ情報ｃｆと、右隣のプロセッシングエレメント（ｎ＋１）におけるキャリーフラグ情報ｃｆ＿ｒｉｇｈｔとが異なる論理で、ｃｆが「１」の場合（左隣のプロセッシングエレメント（ｎ―１）におけるデータ数が自プロセッシングエレメント（ｎ）におけるデータ数よりも多い場合）、レジスタ（ｃｎｔｒ）１０２（ｎ）は、そのデータ数を、現在格納しているデータ数ｃｎｔｒに１インクリメントしたデータ数ｃｎｔｒ＋１に更新する。
一方、自プロセッシングエレメント（ｎ）におけるキャリーフラグ情報ｃｆと、右隣のプロセッシングエレメント（ｎ＋１）におけるキャリーフラグ情報ｃｆ＿ｒｉｇｈｔとが異なる論理で、ｃｆが「０」の場合（左隣のプロセッシングエレメント（ｎ―１）におけるデータ数が自プロセッシングエレメント（ｎ）におけるデータ数以下の場合）、レジスタ（ｃｎｔｒ）１０２は、そのデー多数を、現在格納しているデー多数を１デクリメントしたデータ数ｃｎｔｒ−１に更新する。
また、自プロセッシングエレメント（ｎ）におけるキャリーフラグ情報ｃｆと、右隣のプロセッシングエレメント（ｎ＋１）におけるキャリーフラグ情報ｃｆ＿ｒｉｇｈｔとが同一論理の場合、例えば左隣のプロセッシングエレメント（ｎ―１）におけるデータ数＞自プロセッシングエレメント（ｎ）におけるデータ数＞右隣のプロセッシングエレメント（ｎ＋１）におけるデータ数の関係となる場合や、左隣のプロセッシングエレメント（ｎ―１）におけるデータ数≦自プロセッシングエレメント（ｎ）におけるデータ数≦右隣のプロセッシングエレメント（ｎ＋１）におけるデータ数の関係となる場合などには、レジスタ（ｃｎｔｒ）１０２（ｎ）は、そのデータ数として、現在格納してデータ数の値ｃｎｔｒを維持する。【００５７】
さらに、レジスタ（ｍｄ）１０３（ｎ）には、ＰＥ（ｎ）におけるキャリーフラグ情報ｃｆに基づいて、左隣のプロセッシングエレメント（ｎ―１）におけるレジスタ（ｍｄ）１０３（ｎ−１）の先頭データｍｄ＿ｌｅｆｔと、自プロセッシングエレメント（ｎ）におけるＲＡＭ１０１（ｎ）から出力される前サイクルでの先頭データｄｏｕｔ（ｄｉｎよりデータ入力される前のＲＡＭ１０１（ｎ）内のデータにおける先頭データ）とのうちのいずれか一方が入力し、レジスタ１０３（ｎ）は、その入力データに基づいてデータの更新を行う。
すなわち、自プロセッシングエレメント（ｎ）におけるキャリーフラグ情報ｃｆが「１」の場合には、レジスタ（ｍｄ）１０３（ｎ）は、現在格納して先頭データｍｄを、先頭データｍｄ＿ｌｅｆｔに更新する。自プロセッシングエレメント（ｎ）におけるキャリーフラグ情報ｃｆが「０」の場合には、レジスタ（ｍｄ）１０３（ｎ）は、現在格納して先頭データｍｄを、ＲＡＭ１０１（ｎ）に格納されている、前記先頭データに続く次のデータに更新する。
このため、図３に示すように、レジスタ（ｍｄ）１０３（ｎ）の値は、ＰＥ（ｎ）におけるキャリーフラグ情報ｃｆが「１」の場合にはｍｄ＿ｌｅｆｔとなり、ＰＥ（ｎ）におけるキャリーフラグ情報ｃｆが「０」の場合にはｄｏｕｔとなる。【００５８】
また、論理積演算部１０５の出力値が「１」のときには、ライト許可信号（ライトイネーブル信号）ｗｅｎが「１」となるため、左隣のプロセッシングエレメント（ｎ―１）におけるレジスタ（ｍｄ）１０３（ｎ−１）の先頭データｍｄ＿ｌｅｆｔが、ＲＡＭ１０１（ｎ）の入力データｄｉｎとして入力し、アクセスアドレスａｄｄｒ（所定のベースアドレス値＋ｃｎｔｒ＋１）に対応する記憶領域に書き込まれる。
この結果、ＲＡＭ１０１（ｎ）の記憶領域の内に、アクセスアドレスａｄｄｒが所定のベースアドレス値から（所定のベースアドレス値＋ｃｎｔｒ）までの記憶領域には、現在存在するデータが存在し、アクセスアドレスａｄｄｒが（所定のベースアドレス値＋ｃｎｔｒ＋１）の記憶領域には、左隣のプロセッシングエレメント（ｎ―１）における先頭データｍｄ＿ｌｅｆｔが存在することなる。
なお、この際、自プロセッシングエレメント（ｎ）におけるキャリーフラグ情報ｃｆが「１」であるため、レジスタ（ｍｄ）１０３（ｎ）には、ｍｄ＿ｌｅｆｔのみが入力される。【００５９】
一方、論理積演算部１０５の出力値が「０」で排他的論理和演算部１０６（ｎ）の出力値が「１」の場合は、自プロセッシングエレメント（ｎ）におけるキャリーフラグ情報ｃｆが「０」で右隣のプロセッシングエレメント（ｎ＋１）におけるキャリーフラグ情報ｃｆ＿ｒｉｇｈｔが「１」となる場合で、例えば左隣のプロセッシングエレメント（ｎ−１）におけるデータ数＞自プロセッシングエレメント（ｎ）におけるデータ数≦右隣のプロセッシングエレメント（ｎ＋１）におけるデータ数となる場合が想定される。
この場合、レジスタ（ｃｎｔｒ）１０２（ｎ）の値は、「ｃｎｔｒ」から「ｃｎｔｒ−１」に更新される。また、レジスタ（ｍｄ）１０３（ｎ）の値は、ＰＥ（ｎ）におけるキャリーフラグ情報ｃｆが「０」であるため、ＲＡＭ１０１（ｎ）からの先頭データｄｏｕｔが入力され、更新される。
このため、ＲＡＭ１０１（ｎ）内には、現在存在するデータから先頭データが取り除かれたデータ分のデータが格納されることとなる。【００６０】
他方、論理積演算部１０５の出力値が「０」で排他的論理和演算部１０６（ｎ）の出力値が「０」の場合であって、自プロセッシングエレメント（ｎ）におけるキャリーフラグ情報ｃｆが「０」で右隣のプロセッシングエレメント（ｎ＋１）におけるキャリーフラグ情報ｃｆ＿ｒｉｇｈｔが「０」となる場合は、例えば左隣のプロセッシングエレメント（ｎ−１）におけるデータ数≦自プロセッシングエレメント（ｎ）におけるデータ数≦右隣のプロセッシングエレメント（ｎ＋１）におけるデータ数となる場合が想定される。
この場合、レジスタ（ｃｎｔｒ）１０２（ｎ）の値は、「ｃｎｔｒ」のまま更新されない。また、レジスタ（ｍｄ）１０３（ｎ）の値は、ＰＥ（ｎ）におけるキャリーフラグ情報ｃｆが「０」で、更新されない。【００６１】
さらに、論理積演算部１０５の出力値が「０」で排他的論理和演算部１０６（ｎ）の出力値が「０」の場合であって、自プロセッシングエレメント（ｎ）におけるキャリーフラグ情報ｃｆが「１」で右隣のプロセッシングエレメント（ｎ＋１）におけるキャリーフラグ情報ｃｆ＿ｒｉｇｈｔが「１」となる場合は、例えば左隣のプロセッシングエレメント（ｎ―１）におけるデータ数＞自プロセッシングエレメント（ｎ）におけるデータ数＞右隣のプロセッシングエレメント（ｎ＋１）におけるデータ数となる場合が想定される。
この場合、レジスタ（ｃｎｔｒ）１０２（ｎ）の値は、「ｃｎｔｒ」のまま更新されない。また、レジスタ（ｍｄ）１０３（ｎ）の値は、自プロセッシングエレメント（ｎ）におけるキャリーフラグ情報ｃｆが「１」であるため、自左隣のプロセッシングエレメント（ｎ−１）における先頭データｍｄ＿ｌｅｆｔが入力され、更新される。【００６２】
このように、制御プロセッサ２１０は、左隣のプロセッシングエレメントのデータ数ｃｎｔｒ＿ｌｅｆｔの値と自プロセッシングエレメントのデータ数ｃｎｔｒの値とを比較し、前者が後者よりも大きければ1、そうでなければ０の値となるキャリーフラグ情報ｃｆを算出の上、それと右隣のプロセッシングエレメントのキャリーフラッグ情報ｃｆを論理反転させたキャリーフラッグ情報ｃｆ＿ｒｉｇｈｔとで決まる下記制御ルール（ａ）〜（ｄ）に従い、全プロセッシングエレメントに対して、一斉に自プロセッシングエレメントのデータ数ｃｎｔｒ、自プロセッシングエレメントのＲＡＭが記憶しているデータのうち先頭データｍｄ、そして前記ＲＡＭ内に格納されている処理データまたは転送データの内容を更新させることで、同時に自プロセッシングエレメントのデータ数と左隣のプロセッシングエレメントのデータ数とを比較して、左隣のプロセッシングエレメントのデータ数が多ければ、左隣のプロセッシングエレメントの処理データまたは転送データを自プロセッシングエレメントに移動させる処理動作を全てのプロセッシングエレメントに対して実行させる。【００６３】
（ａ）自プロセッシングエレメントのキャリーフラッグ情報ｃｆが０かつ右隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報ｃｆ＿ｒｉｇｈｔが０であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ１０２のデータ数ｃｎｔｒの内容、及びデータ記憶手段であるレジスタ１０３の格納する内容を更新しない。
（ｂ）自プロセッシングエレメントのキャリーフラッグ情報ｃｆが０かつ右隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報ｃｆ＿ｒｉｇｈｔが１であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ１０２のデータ数ｃｎｔｒを１デクリメントし、データ記憶手段であるレジスタ１０３の格納する内容を、前記先頭データに続く次の処理データまたは転送データに更新する。
（ｃ）自プロセッシングエレメントのキャリーフラッグ情報ｃｆが1かつ右隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報ｃｆ＿ｒｉｇｈｔが０であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ１０２のデータ数ｃｎｔｒを１インクリメントし、データ記憶手段であるレジスタ１０３の格納する処理データまたは転送データの先頭データを、左隣のプロセッシングエレメントのデータ記憶手段であるレジスタ１０３が格納する先頭データに更新する。
（ｄ）自プロセッシングエレメントのキャリーフラッグ情報ｃｆが1かつ右隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報ｃｆ＿ｒｉｇｈｔが１であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ１０２のデータ数ｃｎｔｒを更新しない。データ記憶手段であるレジスタ１０３の格納する処理データまたは転送データの先頭データを、左隣のプロセッシングエレメントのデータ記憶手段であるレジスタ１０３が格納する先頭データに更新する。【００６４】
上述したように、制御プロセッサ２１０は、上記ＥＱＬ命令を有することにより、例えば全プロセッシングエレメントが処理すべきデータ数ｃｎｔｒの値の総和を全プロセッシングエレメントの数で除算した結果Ｈ、すなわち全プロセッシングエレメントに渡るデータ数ｃｎｔｒの値の平均値Ｈを求め、全プロセッシングエレメントが処理すべきデータ数ｃｎｔｒの値と前記平均値Ｈの差が閾値より小さい値（例えば“１”）以下に収まるまで、ＥＱＬ命令を繰り返し実行するように、プロセッシングエレメントアレイ２００を制御する。これにより、制御プロセッサ２１０は、プロセッシングエレメントが処理すべきデータ数ｃｎｔｒの最大値とプロセッシングエレメントが処理すべきデータ数ｃｎｔｒの最小値との差と、全プロセッシングエレメントの数との和に等しい程度の回数だけＥＱＬ命令をプロセッシングエレメントアレイ２００に実行させれば、全プロセッシングエレメントの処理データまたは転送データをほぼ同一数に均せるようになる。【００６５】
なお、上記の実施形態では、個々のプロセッシングエレメント２０１に組み込んだ、制御プロセッサ２１０の構成する、減算演算部（ｓｕｂ）１０４と、排他的論理和演算部（ｘｏｒ）１０６と、論理積演算部（ａｎｄ）１０５と、加減算演算部（ａｄｄ／ｓｕｂ）１０７とをハードウェアとして構築した例を説明したが、これに限られるものではない。コンピュータ（マイクロプロセッサ）にアプリケーションソフトを実行させて、上述した減算演算部（ｓｕｂ）１０４の機能と、排他的論理和演算部（ｘｏｒ）１０６の機能と、論理積演算部（ａｎｄ）１０５の機能と、加減算演算部（ａｄｄ／ｓｕｂ）１０７の機能とをソフトウェア上で実現する制御プログラムとして構築しても良いものである。【００６６】
ここで、本実施の形態では、プロセッシングエレメントを平準化処理装置として構成することができる。この場合、平準化処理装置は、制御プロセッサにより制御され、前記制御プロセッサを含む並列計算機システムに用いられる複数のプロセッシングエレメントを構成することができる。【００６７】
データ記憶部であるＲＡＭは、処理データ又は外部メモリ転送データのデータを一時記憶できる。データ数格納部であるレジスタ（ｃｎｔｒ）は、前記データ記憶部におけるデータ数を計数し一時格納することができる。先頭データ格納部であるレジスタ（ｍｄ）は、前記データ記憶部のデータのうち先頭データを一時格納することができる。【００６８】
平準化処理部は、前記制御プロセッサからのデータ分布平準化命令により動作し、自プロセッシングエレメントにおける前記第１のデータ数と前記自プロセッシングエレメントに隣接する一方の第１隣接プロセッシングエレメントにおける第２のデータ数とを比較した第１の比較結果情報と、隣接する他方の第２隣接プロセッシングエレメントにおける比較結果である第２の比較結果情報とに基づいて（あるいは第１、第２の比較結果情報とで決まる前記制御ルール（ａ）〜（ｄ）に従い）、前記データ記憶部と前記データ数格納部と前記先頭データ格納部とをそれぞれ制御し、前記データ記憶部の前記データに対する平準化処理を行うことができる。【００６９】
また、前記平準化処理部は、自プロセッシングエレメントにおける前記第１のデータ数と前記自プロセッシングエレメントに隣接する一方の第１隣接プロセッシングエレメントにおける第２のデータ数とを比較した第１の比較結果情報を算出する比較部と、隣接する他方の第２隣接プロセッシングエレメントにおける比較結果である第２の比較結果情報と、前記第１の比較結果情報との排他的論理和情報を算出する前記排他的論理和演算部と、前記第２の比較結果情報の論理反転情報と、前記第１の比較結果情報との論理積情報を算出する論理積演算部と、前記論理積情報に基づいて、前記第１のデータ数と前記排他的論理和情報とを加算演算、減算演算のうちいずれか一方の演算を選択制御するとともに、前記一方の演算結果である加減算演算情報を算出する加減算演算部と、を含むことができる。【００７０】
以上のように本実施の形態によれば、データ分布平準化命令ＥＱＬは、単純な演算の少ない組み合せで実現できるため単一マシンサイクルで実装可能であり、少ないハードウェアコストの増加に抑えつつ、データ数を均一化する処理を効率よく実現できるようになる。【００７１】
すなわち、「データ分布平準化命令ＥＱＬ」は、単純な演算の少ない組み合せで実現できるため単一マシンサイクルで実装可能であるのに対し、ＥＱＬ命令を持たない例えば非特許文献１で開示されているＳＩＭＤ型並列計算システムがＥＱＬ命令相当の処理を行うためには、１０程度のマシンサイクルがかかる。
そのため、本発明の実施形態に係るデータ分布平準化命令ＥＱＬを有するＳＩＭＤ型並列計算システムでは、少ないハードウェアコストの増加に抑えつつ、データ数を均一化する処理を効率よく実現できるようになる、という効果が得られる。【００７２】
また、プロセッシングエレメント間ではデータ量を示す数値を通信し合わず、また、スケジューリングも行う必要はない。さらに、少ない追加ハードウェアコストのみで、ＰＥ間でのデータ量の均一化処理を効率的に実現できる。【００７３】
［第２の実施の形態］
次に、本発明にかかる第２の実施の形態について、図４乃至図６に基づいて説明する。以下には、前記第１の実施の形態の実質的に同様の構成に関しては説明を省略し、異なる部分についてのみ述べる。【００７４】
本実施の形態におけるＳＩＭＤ型並列計算機システム３００と前記第１の実施の形態との違いは、前記第１の実施の形態ではＥＱＬ命令を実行するたびに、処理データまたは転送データなどのデータは左から右の方向でＰＥ間を移動するのに対し（図１）、本実施の形態ではＥＱＬ命令を実行するたびに、処理データまたは転送データなどのデータは右から左の方向でプロセッシングエレメント間を移動するようになる（図４）点以外に違いはない。【００７５】
図５を参照すると、本第２の実施の形態におけるＳＩＭＤ型並列計算機システム３００では、上記第１の実施の形態において右隣のプロセッシングエレメントのキャリーフラッグ情報ｃｆを論理反転したキャリーフラッグ情報ｃｆ＿ｒｉｇｈｔと、左隣のプロセッシングエレメントのデータ数ｃｎｔｒを示すデータ数ｃｎｔｒ＿ｌｅｆｔ、そして左隣のプロセッシングエレメントのデータ数記憶手段であるレジスタ１０３に格納されている先頭データｍｄを示す先頭データｍｄ＿ｌｅｆｔをＥＱＬ命令実行時に各プロセッシングエレメントが利用していたのを、前記キャリーフラッグ情報ｃｆ＿ｒｉｇｈｔの代わりに左隣のプロセッシングエレメントのキャリーフラッグ情報ｃｆを論理反転したキャリーフラッグ情報ｃｆ＿ｌｅｆｔを用い、左隣のプロセッシングエレメントのデータ数ｃｎｔｒ＿ｌｅｆｔの代わりに右隣プロセッシングエレメントのデータ数ｃｎｔｒを示すデータ数ｃｎｔｒ＿ｒｉｇｈｔを用い、左隣のプロセッシングエレメントのデータ数記憶手段であるレジスタ１０３に格納されている先頭データｍｄを示す先頭データｍｄ＿ｌｅｆｔの代わりに、右隣のプロセッシングエレメントのデータ数記憶手段であるレジスタ１０３に格納されている先頭データｍｄを示す先頭データｍｄ＿ｒｉｇｈｔを利用するようにＥＱＬ命令を実行する。【００７６】
このように、制御プロセッサ２１０は、右隣のプロセッシングエレメントのデータ数ｃｎｔｒ＿ｌｅｆｔの値と自プロセッシングエレメントのデータ数ｃｎｔｒの値とを比較し、前者が後者よりも大きければ1、そうでなければ０の値となるキャリーフラグ情報ｃｆを算出の上、それと左隣のプロセッシングエレメントのキャリーフラッグ情報ｃｆを論理反転させたキャリーフラッグ情報ｃｆ＿ｌｅｆｔとで決まる下記制御ルール（ａ）〜（ｄ）に従い、全プロセッシングエレメントに対して、一斉に自プロセッシングエレメントのデータ数ｃｎｔｒ、自プロセッシングエレメントのＲＡＭが記憶しているデータのうち先頭データｍｄ、そして前記ＲＡＭ内に格納されている処理データまたは転送データの内容を更新させることで、同時に自プロセッシングエレメントのデータ数と左隣のプロセッシングエレメントのデータ数とを比較して、左隣のプロセッシングエレメントのデータ数が多ければ、左隣のプロセッシングエレメントの処理データまたは転送データを自プロセッシングエレメントに移動させる処理動作を全てのプロセッシングエレメントに対して実行させる。【００７７】
（ａ）自プロセッシングエレメントのキャリーフラッグ情報ｃｆが０かつ左隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報ｃｆ＿ｌｅｆｔが０であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ１０２のデータ数ｃｎｔｒの内容、及びデータ記憶手段であるレジスタ１０３の格納する内容を更新しない。
（ｂ）自プロセッシングエレメントのキャリーフラッグ情報ｃｆが０かつ左隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報ｃｆ＿ｌｅｆｔが１であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ１０２のデータ数ｃｎｔｒを１デクリメントし、データ記憶手段であるレジスタ１０３の格納する内容を、前記先頭データに続く次の処理データまたは転送データに更新する。
（ｃ）自プロセッシングエレメントのキャリーフラッグ情報ｃｆが1かつ左隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報ｃｆ＿ｒｉｇｈｔが０であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ１０２のデータ数ｃｎｔｒを１インクリメントし、データ記憶手段であるレジスタ１０３の格納する処理データまたは転送データの先頭データを、右隣のプロセッシングエレメントのデータ記憶手段であるレジスタ１０３が格納する先頭データに更新する。
（ｄ）自プロセッシングエレメントのキャリーフラッグ情報ｃｆが1かつ左隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報ｃｆ＿ｒｉｇｈｔが１であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ１０２のデータ数ｃｎｔｒを更新しない。データ記憶手段であるレジスタ１０３の格納する処理データまたは転送データの先頭データを、右隣のプロセッシングエレメントのデータ記憶手段であるレジスタ１０３が格納する先頭データに更新する。【００７８】
上述したように、制御プロセッサ２１０は、上記ＥＱＬ命令を有することにより、例えば全プロセッシングエレメントが処理すべきデータ数ｃｎｔｒの値の総和を全プロセッシングエレメントの数で除算した結果Ｈ、すなわち全プロセッシングエレメントに渡るデータ数ｃｎｔｒの値の平均値Ｈを求め、全プロセッシングエレメントが処理すべきデータ数ｃｎｔｒの値と前記平均値Ｈの差が閾値より小さい値（例えば“１”）以下に収まるまで、ＥＱＬ命令を繰り返し実行するように、プロセッシングエレメントアレイ２００を制御する。これにより、制御プロセッサ２１０は、プロセッシングエレメントが処理すべきデータ数ｃｎｔｒの最大値とプロセッシングエレメントが処理すべきデータ数ｃｎｔｒの最小値との差と、全プロセッシングエレメントの数との和に等しい程度の回数だけＥＱＬ命令をプロセッシングエレメントアレイ２００に実行させれば、全プロセッシングエレメントの処理データまたは転送データをほぼ同一数に均せるようになる。【００７９】
その他の構成およびその他のステップないしは機能並びにその作用効果については、前述した実施の形態の場合と同一となっている。また、上記の説明において、上述した各ステップの動作内容及び各部の構成要素並びにそれらによる各機能をプログラム化し、コンピュータに実行させてもよい。【００８０】
ここで、上記の本第１の実施形態及び第２の実施形態において、処理データまたは転送データのうちの先頭データを格納するレジスタ（ｍｄ）１０３が必要となるのは、プロセッシング毎が独立にアクセス可能なＲＡＭ１０１に、読み出しアドレス供給サイクルと、読み出しデータ利用可能サイクルが１サイクルずれる同期式ＲＡＭなどを用いた場合である。【００８１】
もし、ＲＡＭ１０１にレジスタを利用した場合では、読み出しアドレス供給サイクルと、読み出しデータ利用可能サイクルを同一サイクルにできるため、レジスタ（ｍｄ）１０３は不要であり、ＲＡＭ１０１の先頭データを保持しているレジスタそのものをレジスタ（ｍｄ）１０３として利用すればよい。【００８２】
［第３の実施の形態］
次に、本発明の第１の実施形態をさらに具体例を用いて説明した例を本発明の第３の実施形態として図７及び図８に基づいて説明する。したがって、本発明の第３の実施形態での構成は、図１及び図２に示すものと同一であるため、その構成についての説明は省略する。【００８３】
本発明の第３の実施形態を説明するため、図７では、プロセッシングエレメントアレイ２００を構成するプロセッシングエレメント２０１の数を８台に設定し、その個々のプロセッシングエレメントを識別するため、そのプロセッシングエレメント２０１にＰＥ０からＰＥ７の符号を付けている。そして、個々のプロセッシングエレメントＰＥ０〜ＰＥ７の初期状態において、プロセッシングエレメントＰＥ〜ＰＥ７のレジスタ１０２が格納しているデータ数ｃｎｔｒの値の初期値が３，２，１，５，０，１，４，１であって、全プロセッシングエレメントＰＥ０〜ＰＥ７のレジスタ１０２が格納しているデータ数ｃｎｔｒの値の総和が１７であるとする。また、全てのプロセッシングエレメントＰＥ０〜ＰＥ７のレジスタ１０３には、個々のＲＡＭ１０１に格納されているデータのうち先頭データｍｄが既に格納されているものとする。【００８４】
以上の設定の下で、制御プロセッサ２１０は、リング状に結合した個々のプロセッシングエレメントＰＥ０〜ＰＥ７のレジスタ１０２が格納しているデー多数の情報を取得して、全てのプロセッシングエレメントＰＥ０〜ＰＥ７のデータ数ｃｎｔｒの値の総和１７を全てのプロセッシングエレメントＰＥ０〜ＰＥ７の数８で除算した結果Ｈ（２．１２５）、すなわち、全てのプロセッシングエレメントＰＥ０〜ＰＥ７に渡るデータ数ｃｎｔｒの平均値Ｈ（２．１２５）を求め、全てのプロセッシングエレメントＰＥ０〜ＰＥ７のデータ数ｃｎｔｒの値と平均値Ｈとの差が閾値（本例では１）以下に収まるまで、プロセッシングエレメントアレイ２００を制御する。【００８５】
本発明の第３の実施形態は、本発明の第１の実施形態に対応するものであるから、ＥＱＬ命令を実行する場合、自プロセッシングエレメント２０１（ｎ）を例えばプロセッシングエレメントＰＥ１とすると、左隣のプロセッシングエレメント２０１（ｎ−１）がプロセッシングエレメントＰＥ０であり、右隣のプロセッシングエレメント２０１（ｎ＋１）がプロセッシングレメントＰＥ２となる。以下では、制御プロセッサ２１０が、図の左隣のプロセッシングエレメントから右隣のプロセッシングエレメントへの方向で処理データの移動を行うＥＱＬ命令を繰り返しプロセッシングアレイに対して発行する場合の動作について説明する。【００８６】
図７に示すｓｔｅｐ０の状態の下で、制御プロセッサ２１０がＥＱＬ命令を実行すると、左隣のプロセッシングエレメントから右隣のプロセッシングエレメントへ処理データの移動が行われ、その結果、左隣のプロセッシングエレメントのレジスタ１０２が格納するデータ数ｃｎｔｒが自プロセッシングエレメントのレジスタ１０２が格納するデータ数の値より大きいプロセッシングエレメント間でデータ移動が発生、すなわち図７の例では、プロセッシングエレメントＰＥ０→プロセッシングエレメントＰＥ１、プロセッシングエレメントＰＥ１→プロセッシングエレメントＰＥ２、プロセッシングエレメントＰＥ３→プロセッシングエレメントＰＥ４、そしてプロセッシングエレメントＰＥ６→プロセッシングエレメントＰＥ７の方向で１個ずつデータ移動が発生し、プロセッシングエレメントＰＥ０〜ＰＥ７のレジスタ１０２が格納するデータ数ｃｎｔｒの値は、それぞれ２，２２，４，１，１，３，２となり、ＥＱＬ命令の実行状態が図７のｓｔｅｐ１の状態に移る。【００８７】
前記制御プロセッサ２１０が、制御プロセッサ２１０は、個々のプロセッシングエレメントＰＥ０〜ＰＥ７のレジスタ１０２が格納しているデータ数ｃｎｔｒの値を取得し、総データ数ｃｎｔｒが全てのプロセッシングエレメントＰＥ０〜ＰＥ７に均一に均されているか否かを判断し、不均一なデータ数の配分の場合には、再度ＥＱＬ命令を発行する。制御プロセッサ２１０が例えば計３回のＥＱＬ命令をプロセッシングアレイに対して発行すると、図７のｓｔｅｐ１で説明したような個々のプロセッシング相互間でのＥＱＬ命令が実行され、そのＥＱＬ命令の実行状態が図７のｓｔｅｐ１→ｓｔｅｐ２→ｓｔｅｐ３と移行する。図７のｓｔｅｐ３の状態では、個々のプロセッシングエレメントＰＥ０〜ＰＥ７のレジスタ１０２が格納しているデータ数ｃｎｔｒの値がそれぞれ３，２，２，２，２，２，２，２となる。【００８８】
前記制御プロセッサ２１０は、図７に示すｓｔｅｐ３における個々のプロセッシングエレメントＰＥ０〜ＰＥ７のレジスタ１０２が格納しているデータ数ｃｎｔｒの値を取得し、総データ数ｃｎｔｒが全てのプロセッシングエレメントＰＥ０〜ＰＥ７に均一に均されているか否かを判断する。図７のｓｔｅｐ３では、総データ数ｃｎｔｒが全てのプロセッシングエレメントＰＥ０〜ＰＥ７に均されているため、制御プロセッサ２１０は、全プロセッシングエレメントＰＥ０〜ＰＥ７のレジスタ１０２が格納しているデータ数ｃｎｔｒと、算出して平均値Ｈとの差が閾値である１以内となったことから、本状況を検知しＥＱＬ命令の発行ループから抜け出すようにプロセッシングエレメントアレイ（ＰＥ０〜ＰＥ７）を制御する。【００８９】
［第４の実施の形態］
以上説明した第１の実施形態〜第３の実施形態では、ＥＱＬ命令を発行する処理を、個々のプロセッシングエレメント２０１に組み込んだ、制御プロセッサ２１０の構成する、減算演算部（ｓｕｂ）１０４と、排他的論理和演算部（ｘｏｒ）１０６と、論理積演算部（ａｎｄ）１０５と、加減算演算部（ａｄｄ／ｓｕｂ）１０７とをハードウェアとして構築したが、これに限られるものではない。すなわち、コンピュータ（マイクロプロセッサ）にアプリケーションソフトを実行させることにより、個々のプロセッシングエレメント２０１に組み込んだ、制御プロセッサ２１０の構成する、減算演算部（ｓｕｂ）１０４の機能と、排他的論理和演算部（ｘｏｒ）１０６の機能と、論理積演算部（ａｎｄ）１０５の機能と、加減算演算部（ａｄｄ／ｓｕｂ）１０７の機能とを、ソフトウェア上で実現する制御プログラムとして構築しても良いものである。
また、制御プロセッサ２１０を構成する構成要素として、ＥＱＬ命令を実行するために必要な構成要素である、減算演算部（ｓｕｂ）１０４と、排他的論理和演算部（ｘｏｒ）１０６と、論理積演算部（ａｎｄ）１０５と、加減算演算部（ａｄｄ／ｓｕｂ）１０７とを図示して説明したが、これに限られるものではない。これらに加えて、関数コール命令ＣＡＬＬＩを実行する関数コール命令生成部、命令ＣＤＩＶを実行する除算動作指定命令生成部、命令ＭＶＣＰを実行するレジスタ値転送命令生成部、命令ＡＳＵＢを実行する減算結果絶対値算出命令生成部、命令ＳＵＢを実行する減算結果算出命令生成部、命令ＳＴＳを実行する条件フラグ論理和算出命令生成部、条件分岐命令ＢＲＭを実行する条件分岐命令生成部を付加した構成としてもよいものである。これらの付加した構成要素は、図１に示す、データ分布平準化命令生成部２１２及び実行制御部２１４を具体化したものである。
以下の説明では、ＥＱＬ命令を実行する前記構成要素（１０４〜１０７）に、前記各種の命令を実行する前記構成要素（２１２，２１４）を付加した制御プロセッサ２１０の機能を、コンピュータ（マイクロプロセッサ）にアプリケーションソフトを実行させることにより、ソフトウェア上で実現する制御プログラムとして構築した場合について説明する。【００９０】
本実施形態に係るＳＩＭＤ型並列計算システムにおける制御プロセッサ２１０の機能を実行する制御プログラムは図８に示すように、データ分布の平準化動作の命令セットの１つである前記ＥＱＬ命令に加えて、
（Ａ）関数コール命令ＣＡＬＬＩ（ハードウェアの場合には関数コール命令生成部として構築する）,
（Ｂ）制御プロセッサ２１０上で除算動作を指定する命令ＣＤＩＶ（ハードウェアの場合には除算動作指定命令生成部として構築する）、
（Ｃ）第１オペランドが指定するＣＰ上のレジスタ値を第２オペランドが指定する全ＰＥ上のレジスタへ転送する命令ＭＶＣＰ（ハードウェアの場合にはレジスタ値転送命令生成部として構築する）、
（Ｄ）ＰＥ上で第１オペランドが指定するレジスタ値と第２オペランドが指定するレジスタ値の減算結果の絶対値を算出し第３オペランドが指定するレジスタに格納する動作を指定する命令ＡＳＵＢ（ハードウェアの場合には減算結果絶対値算出命令生成部として構築する）、
（Ｅ）ＰＥ上で第１オペランドが指定するレジスタの値と第２オペランドが指定するレジスタの値の減算を行い結果を第３オペランドが指定するレジスタに格納する動作を指定する命令ＳＵＢ（ハードウェアの場合には減算結果算出命令生成部として構築する）、
（Ｆ）第１オペランドが指定する種類のＰＥ上の条件フラグの値の全ＰＥに渡る論理和として得られる１ビット情報をＣＰ上のマスクレジスタに格納する動作を指定する命令ＳＴＳ（ハードウェアの場合には条件フラグ論理和算出命令生成部として構築する）、
（Ｇ）ＣＰ上のマスクレジスタの値が１ならば分岐をし、０ならば分岐しない動作を指定する条件分岐命令ＢＲＭ（ハードウェアの場合には条件分岐命令生成部として構築する）、
を含んで構築する。【００９１】
図８における制御プログラムの内容を記述するにあたって、”．．”の記述は、その両隣の命令が同一サイクルに動作することを指定することを意味する。さらに、／＊と＊／で囲まれた部分はコメントである。【００９２】
また：で終わる文字列は、当該文字列の出現位置の番地を示し、分岐命令のオペランドとして同ラベルを指定した場合は、同番地を指定することを意味するものとする。【００９３】
前記制御プログラムにおける関数コール命令ＣＡＬＬＩである「＊番地Ａ＊／    ＣＡＬＬＩ  Ｆａｄｄ＿ａｌｌｐｅ  ｃｎｔｒ」は、関数  ａｄｄ＿ａｌｌｐｅをコールし、全プロセッシング２０１のレジスタ１０２が格納しているデータ数ｃｎｔｒの総和を求め、その総和を関数の戻り値としてレジスタｒ０に格納させる（ステップＳ１０１）＜全ＰＥデータ数総和算出処理ステップないしは全ＰＥデータ数総和算出処理機能＞。【００９４】
前記制御プログラムにおける命令ＣＤＩＶである「＊番地Ａ＋１＊／    ＣＤＩＶ  ｒ０，ＰＥＮＯ，Ｈ」は、プロセッシングエレメントの設置数の情報を表す定数ＰＥＮＯで、前記レジスタｒ０に格納されているデータ数ｃｎｔｒの総和を割り、その結果を平均値ＨとしてレジスタＨに格納させる（ステップＳ１０２）＜全ＰＥデータ数平均値算出処理ステップないしは全ＰＥデータ数平均値算出処理機能＞、。【００９５】
前記制御プログラムにおける命令ＭＶＣＰである「＊番地Ａ＋２＊／  ＭＶＣＰ  Ｈ，ｈ」は、前記データ数の平均値Ｈの値を個々のプロセッシングエレメント２０１のレジスタ１０２に転送させる（ステップＳ１０３）＜平均値転送処理ステップないしは平均値転送処理機能＞。【００９６】
ＥＱＬ命令である「＊番地Ａ＋３＊／  ＥＱＬ」と、ＡＳＵＢ命令である「＊番地Ａ＋４＊／  ＡＳＵＢ  ｈ，ｃｎｔｒ，ｔｍｐ」、ＥＱＬ命令である「＊番地Ａ＋５＊／  ＥＱＬ」と、ＳＵＢ命令である「＊番地Ａ＋６＊／  ＳＵＢ  １，ｔｍｐ，ｔｍｐ」、ＥＱＬ命令である「＊番地Ａ＋７＊／  ＥＱＬ」と、ＳＴＳ命令である「＊番地Ａ＋８＊／  ＳＴＳ  ％Ｓ」がそれぞれ同一サイクルで実行する。【００９７】
／＊番地Ａ＋３＊／〜／＊番地Ａ＋１０＊／のループ（ステップＳ１１０）＜実行制御ステップないしは実行制御機能＞では、繰り返し毎にＥＱＬ命令を計４回発行している中（ステップＳ１１１・ステップＳ１１３・ステップＳ１１５・ステップＳ１１８）で、ステップＳ１１１の第１のＥＱＬ命令を発行と同時に各プロセッシングエレメント上でＡＳＵＢ命令を発行し＜減算結果絶対値算出ステップないしは減算結果絶対値算出機能＞、ステップＳ１１３の第２のＥＱＬ命令を発行と同時に各プロセッシングエレメント上でＳＵＢ命令を発行する＜減算結果算出ステップないしは減算結果算出機能＞ことで、個々のプロセッシングエレメントのレジスタ１０２のデータ数ｃｎｔｒの値と、前記平均値Ｈの値との差が閾値の１以内となったかどうかの判定を行う（ステップＳ１１２、ステップＳ１１４）。【００９８】
また、ステップＳ１１５の第３のＥＱＬ命令を発行すると同時にＳＴＳ命令により、前記判定結果を表す条件フラグＳの値の全プロセッシングエレメントに渡る論理和を制御プロセッサ２１０上のマスクレジスタに格納し（ステップＳ１１６）＜条件フラグ論理和算出ステップないしは条件フラグ論理和算出機能＞、論理和が１すなわちデータ数ｃｎｔｒの値と平均値Ｈの値との差が１を超えるプロセッシングエレメントがまだ存在する場合、／＊番地Ａ＋９＊／のＢＲＭ命令の実行に際し分岐を成立させ（ステップＳ１１７）＜条件分岐命令発行ステップないしは条件分岐命令発行機能＞、次サイクルには／＊番地Ａ＋１１＊／の命令ではなく／＊番地Ａ＋３＊／の命令を実行させる。【００９９】
一方、論理和が０すなわちデータ数ｃｎｔｒの値と平均値Ｈ値との差が１を超えるプロセッシングエレメントが存在しなくなった場合は、分岐を行わずに、／＊番地Ａ＋１１＊／の命令に移行させ、データ分布平準化処理のループから抜け出す。【０１００】
以上のように実施の形態によれば、ループ終了判定を行う間でも、毎サイクルＥＱＬ命令を発行することができるため、ＥＱＬ命令を繰り返すループを抜けるためのＣＰによる終了判定処理は、全体の処理サイクル数に最小限の影響のみしか与えないようにできる。【０１０１】
一方、ＣＰによる逐次的な判定によりデータ分布平準化を実現する場合では、図７の例に関連して説明すると、まずプロセッシングエレメントＰＥ０のデータ数ｃｎｔｒの値を読み出し、これと平均値Ｈの値とを比較し、平均値Ｈよりも大きければさらにプロセッシングエレメントＰＥ１、またはデータ数ｃｎｔｒの値がより小さい他のプロセッシングエレメントＰＥを一つ選び出し、前記プロセッシングエレメントＰＥ０のデータを読み出し、それを前記選択したプロセッシングエレメントＰＥのＲＡＭ１０１に格納した上、このプロセッシングエレメントＰＥのデータ数ｃｎｔｒの値を１インクリメントすると共に前記プロセッシングエレメントＰＥ０のデータ数ｃｎｔｒの値を１デクリメントする、といった一連の動作を、全プロセッシングエレメントに対して逐次に行っていく必要があり、図７に示した実施形態と比較すると、非常に多数の処理サイクルがかかってしまうことは容易に想像できる。【０１０２】
しかし、本実施形態は以下のような効果を有している。すなわち、ＥＱＬ命令を命令セットに持たないＳＩＭＤ型並列計算装置が制御プロセッサによる逐次的な判定を行う手法ではなく、プロセッシングエレメントアレイでの並列処理動作によりデータ分布平準化を実現しようとする場合では、ＥＱＬ命令が指定する動作に相当する動作を既存の命令の組み合せで実現する必要があり、それにはＥＱＬ命令を有する場合と比べると、１０倍以上の処理サイクルがかかってしまう。それに対して、ＥＱＬ命令セットを有することにより、本実施形態では以上のように処理サイクルに時間を有することが想定できるとしても、ＥＱＫ命令セットを有しない関連技術の手法と比べはるかに高速にデータ分布平準化処理を実現できるものである。【０１０３】
さらに、特許文献１では、例えばＰ１〜Ｐ１６のプロセッサを有する場合、Ｐ１とＰ２の平均を求め、Ｐ１とＰ３の平均を求め、Ｐ１とＰ９の平均を求め、Ｐ１とＰ５の平均を求め、・・・のように平均を求めることを繰り返す必要がある。プロセッサ数が増大すると、各プロセッサ相互間の平均をそのたびに計算し、シミュレーションやスケジューリングに時間がかかってしまう。
また、特許文献１では、Ｐ１〜Ｐ１６の平均を、各プロセッサが求める方式で、Ｐ１〜Ｐ１６の全体の制御を司る制御プロセッサが平均を求める方式ではない。このため、各プロセッサの全体を制御できず、Ｐ１〜Ｐ１６の全体の平均を一斉に求めることができない。  
これに対して本実施の形態では、関連技術の手法と比べはるかに高速にデータ分布平準化処理を実現できるようになる。【０１０４】
その他の構成およびその他のステップないしは機能並びにその作用効果については、前述した実施の形態の場合と同一となっている。また、上記の説明において、上述した各ステップの動作内容及び各部の構成要素並びにそれらによる各機能をプログラム化し、コンピュータに実行させてもよい。【０１０５】
［第５の実施の形態］
次に、本発明にかかる第５の実施の形態について、図９に基づいて説明する。以下には、前記第１の実施の形態の実質的に同様の構成に関しては説明を省略し、異なる部分についてのみ述べる。【０１０６】
上述の実施の形態のＳＩＭＤ型並列計算システムにおける各部の処理は、方法としても実現可能であり、方法としての各種の処理手順について、図９及び図１０を参照しつつ説明する。図９、図１０は、ＳＩＭＤ型並列計算システムにおけるにおける処理手順の一例を示すフローチャートである。【０１０７】
本実施の形態に係る制御プロセッサの制御方法は、複数のプロセッシングエレメントと、前記複数の各プロセッシングエレメントの処理動作を制御する制御プロセッサとを含む並列計算機システムにおける前記制御プロセッサが備えたコンピュータが処理するものを対象とするものである。【０１０８】
この制御プロセッサの制御方法は、基本的構成として、制御プロセッサが備えたコンピュータが、全プロセッシングエレメントにわたるデータ数の平均値を算出する処理を行う平均値算出処理ステップ（例えば図９に示すステップＳ２０１など）と、前記平均値を前記全プロセッシングエレメントの各平均値情報一時格納部に転送する処理を行う転送処理ステップ（例えば図９に示すステップＳ２０２など）と、各プロセッシングエレメント上で、前記プロセッシングエレメントにおけるデータ数格納部のデータ数と、前記平均値情報一時格納部の前記平均値との差が１以内となるまで、前記各プロセッシングエレメント毎のデータ数を前記各プロセッシングエレメント間で均一化するデータ分布平準化命令を繰り返し実行する制御処理を行う実行制御ステップ（例えば図９に示すステップＳ２０３など）とを含むことができる。【０１０９】
さらに、本実施の形態に係るプロセッシングエレメントの演算処理方法は、複数のプロセッシングエレメントと、前記複数の各プロセッシングエレメントの処理動作を制御する制御プロセッサとを含む並列計算機システムにおける前記プロセッシングエレメントが備えたコンピュータが処理するものを対象とするものである。  【０１１０】
このプロセッシングエレメントの演算処理方法は、基本的構成として、プロセッシングエレメントが備えたコンピュータが、前記制御プロセッサからのデータ分布平準化命令により、自プロセッシングエレメントにおける第１のデータ数と、自プロセッシングエレメントに隣接する一方の第１隣接プロセッシングエレメントにおける第２のデータ数とを比較した自プロセッシングエレメントにおける第１比較結果情報を算出する処理を行う第１比較結果情報算出処理ステップ（例えば図１０に示すステップＳ３０１など）と、隣接する他方の第２隣接プロセッシングエレメントにおける第２比較結果情報を取得する第２比較結果情報取得ステップ（例えば図１０に示すステップＳ３０２など）と、前記第１比較結果情報と前記第２比較結果情報とで決まる制御ルールに従い、自プロセッシングエレメントにおけるデータ記憶部、データ数格納部、前記データ記憶部のデータのうち先頭データを一時格納する先頭データ格納部を制御し、前記各プロセッシングエレメント毎のデータ数を前記各プロセッシングエレメント間で均一化する平準化処理ステップ（例えば図１０に示すステップＳ３０３など）と、を含むことができる。【０１１１】
この平準化処理ステップでは、さらに、自プロセッシングエレメントにおける前記第１のデータ数と前記自プロセッシングエレメントに隣接する一方の第１隣接プロセッシングエレメントにおける第２のデータ数とを比較した第１の比較結果情報を算出する比較ステップと、隣接する他方の第２隣接プロセッシングエレメントにおける比較結果である第２の比較結果情報と、前記第１の比較結果情報との排他的論理和情報を算出する前記排他的論理和演算ステップと、前記第２の比較結果情報の論理反転情報と、前記第１の比較結果情報との論理積情報を算出する論理積演算ステップと、前記論理積情報に基づいて、前記第１のデータ数と前記排他的論理和情報とを加算演算、減算演算のうちいずれか一方の演算を選択制御するとともに、前記一方の演算結果である加減算演算情報を算出する加減算演算ステップとを有することができる。【０１１２】
その他の構成およびその他のステップないしは機能並びにその作用効果については、前述した実施の形態の場合と同一となっている。また、上記の説明において、上述した各ステップの動作内容及び各部の構成要素並びにそれらによる各機能をプログラム化し、コンピュータに実行させてもよい。【０１１３】
[その他の各種変形例]
また、本発明にかかる装置及び方法は、そのいくつかの特定の実施の形態に従って説明してきたが、本発明の主旨および範囲から逸脱することなく本発明の本文に記述した実施の形態に対して種々の変形が可能である。【０１１４】
例えば、図１１に示すように、Ｓ０ａにおいて、ＰＥ（ｎ−１）のＲＡＭにおける先頭データが、ＰＥ（ｎ）のＲＡＭに転送され、ＰＥ（ｎ）のＲＡＭにおける先頭データが、ＰＥ（ｎ＋１）のＲＡＭに転送されてＳ１ａとなる場合に限らず、Ｓ０ｂにおいて、ＰＥ（ｎ−１）のＲＡＭにおける先頭データが、ＰＥ（ｎ）のＲＡＭに入らずに、レジスタ（ｍｄ）を介してＰＥ（ｎ＋１）のＲＡＭに転送されてＳ１ｂとなる場合であってもよい。【０１１５】
また、図１２に示すように、前記第１の実施の形態と前記第２の実施の形態とを組み合わせることにより、ＳＩＭＤ型並列計算機システム５００では、ＰＥ間結合線２２０ａ、ＰＥ間結合線２２０ｂを設けて、データ平準化処理における転送するデータを、ＰＥ間結合線２２０ａを利用して一方向に、ＰＥ間結合線２２０ｂを利用して逆方向に転送できるように構成してもよい。
この場合、各ＰＥは、前記第１の実施の形態の構成と前記第２の実施の形態の構成の双方を有することもできる。制御プロセッサは、一方向でのモードと、逆方向でのモードと、両方利用するモードとを切り替え制御することもできる。【０１１６】
さらに、前記第１の実施の形態では省略したが、図１３に示すように、複数の各ＰＥを一ブロックとしてラインバッファ５１０を、それぞれ設けてもよい。【０１１７】
またさらに、上記構成部材の数、位置、形状等は上記実施の形態に限定されず、本発明を実施する上で好適な数、位置、形状等にすることができる。すなわち、上記実施の形態では、ＰＥが８個の場合を示したが、本発明は、これらの個数を制限するものではない。【０１１８】
また、上述のようなＳＩＭＤ型並列計算システムは、ワンチップに搭載したマイクロコンピュータとして構成することができ、さらに、図１４に示すように、表示装置６００を構成することができる。この表示装置６００は、画素マトリクス部６１０とこの画素マトリクス部６１０の各画素の各列に各ＰＥが対応するようにマイクロコンピュータとしての集積回路６２０が搭載されている。このような構成によれば、高速な画像処理が可能となる。【０１１９】
また、本発明の上記のような各実施の形態にかかるＳＩＭＤ型並列計算機システムでは、前記データ分布平準化命令生成部は、前記各プロセッシングエレメント間で前記データ数が異なる場合に、前記データ数が多い一方の前記プロセッシングエレメントから前記データ数が少ない他方の前記プロセッシングエレメントへ特定の単位データずつデータを移動させる処理動作を指定することができる。【０１２０】
さらに、前記各プロセッシングエレメントは、並列接続するとともに、最右端の前記プロセッシングエレメントが最左端の前記プロセッシングエレメントに接続するリング状に結合できる。この場合、前記データ分布平準化命令生成部は、前記平準化処理におけるデータの移動を各プロセッシングエレメント間で一方向にて行う処理動作を指定することができる。【０１２１】
また、前記プロセッシングエレメントは、比較部と、排他的論理和演算部と、加減算演算部と、論理積演算部と、を含むことができる。この場合、前記データ分布平準化命令生成部は、前記比較部と、前記排他的論理和演算部と、前記加減算演算部と、前記論理積演算部とを一連に実行する動作を指定することができる。【０１２２】
さらに、前記プロセッシングエレメントは、前記処理データ又は外部メモリ転送データのデータを一時記憶するデータ記憶部と、前記データ記憶部におけるデータ数を計数して一時格納するデータ数格納部と、を含むことができる。【０１２３】
この場合、前記比較部は、自プロセッシングエレメントにおける前記第１のデータ数と前記自プロセッシングエレメントに隣接する一方の第１隣接プロセッシングエレメントにおける第２のデータ数とを比較した第１の比較結果情報を算出することができる。
前記排他的論理和演算部は、隣接する他方の第２隣接プロセッシングエレメントにおける比較結果である第２の比較結果情報と、前記第１の比較結果情報との排他的論理和情報を算出することができる。
前記論理積演算部は、前記第２の比較結果情報の論理反転情報と、前記第１の比較結果情報との論理積情報を算出することができる。【０１２４】
前記加減算演算部は、前記論理積情報に基づいて、前記第１のデータ数と前記排他的論理和情報とを加算演算、減算演算のうちいずれか一方の演算を選択するとともに、前記一方の演算結果である加減算演算情報を算出し、この加減算演算情報により前記データ数格納部のデータ数の更新を行うことができる。【０１２５】
また、プロセッシングエレメントは、前記データ記憶部のデータのうち先頭データを一時格納する先頭データ格納部を有することができる。
この場合、前記論理積演算部は、前記第１隣接プロセッシングエレメントの前記先頭データ格納部における隣接先頭データを前記自プロセッシングエレメントの前記データ記憶部に書き込む処理を許可するライトイネーブル信号として前記論理積情報を前記データ記憶部に入力することができる。【０１２６】
さらにまた、前記加減算演算部は、前記データ記憶部に前記隣接先頭データを書き込む際のアドレスを指定する情報として前記加減算演算情報を前記データ記憶部に入力することができる。【０１２７】
さらに、前記比較部は、前記先頭データ格納部に前記隣接先頭データを入力するか、前記自プロセッシングエレメントの前記データ記憶部における前記先頭データを入力するかを選択する情報として前記第１の比較結果情報を前記先頭データ格納部に入力し、前記先頭データ格納部に入力される前記先頭データを制御することができる。【０１２８】
また、前記比較部は、前記自プロセッシングエレメントの前記第１のデータ数から隣接する一方の前記第１隣接プロセッシングエレメントの前記第２のデータ数を減算し、減算結果を捨て、前記第２のデータ数が前記第１のデータ数より大きいか否かを示すキャリーフラグ情報を出力することができる。【０１２９】
ここで、図２及び図５に示すブロック図における一部の各ブロックは、コンピュータが適宜なメモリに格納された各種プログラムを実行することにより、該プログラムにより機能化された状態を示すソフトウエアモジュール構成であってもよい。【０１３０】
すなわち、物理的構成は例えば一又は複数のＣＰＵ（或いは一又は複数のＣＰＵと一又は複数のメモリ）等ではあるが、各部（回路）によるソフトウェア構成は、プログラムの制御によってＣＰＵが発揮する複数の機能を、それぞれ複数の部（手段）による構成要素として表現したものである。【０１３１】
以上に示した各部の説明は、プログラムにより機能化されたコンピュータをプログラムの機能と共に説明したものと解釈することも出来るし、また、固有のハードウェアにより恒久的に機能化された複数の電子回路ブロックからなる装置を説明したものとも解釈することが出来る。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組み合せによっていろいろな形で実現でき、いずれかに限定されるものではない。  【０１３２】
また、各部は、装置としてそれぞれ構成し、これらの各装置によりシステムを構成してもよい。逆に、各部を単一の装置として構成したシステムであってもよい。  【０１３３】
（プログラム）
また、前述した実施形態の機能を実現する本発明のプログラムは、前述した各実施の形態における各種ブロック図などに示された処理部（処理手段）、機能などに対応したプログラムや、フローチャートなどに示された処理手順、処理手段、機能などに対応したプログラムや、各種データ構造を利用するプログラムなどにおいて各々処理される各処理プログラム、本明細書で全般的に記述される方法（ステップ）、説明された処理、データの全体もしくは各部を含む。【０１３４】
具体的には、本発明の一実施形態における制御プログラムは、複数のプロセッシングエレメントと、前記複数の各プロセッシングエレメントの処理動作を制御する制御プロセッサとを含む並列計算機システムにおける前記制御プロセッサが備えたコンピュータに諸機能を実現させることが可能なものである。【０１３５】
この制御プログラムは、全プロセッシングエレメントにわたるデータ数の平均値を算出する処理を行う平均値算出処理機能と、前記平均値を前記全プロセッシングエレメントの各平均値情報一時格納部に転送する処理を行う転送処理機能と、各プロセッシングエレメント上で、前記プロセッシングエレメントにおけるデータ数格納部のデータ数と、前記平均値情報一時格納部の前記平均値との差が１以内となるまで、前記各プロセッシングエレメント毎のデータ数を前記各プロセッシングエレメント間で均一化するデータ分布平準化命令を繰り返し実行する制御処理を行う実行制御機能とを前記コンピュータに実現させることができる。【０１３６】
また、本発明の一実施形態における演算処理プログラムは、複数のプロセッシングエレメントと、前記複数の各プロセッシングエレメントの処理動作を制御する制御プロセッサとを含む並列計算機システムにおける前記プロセッシングエレメントが備えたコンピュータに諸機能を実現させることが可能なものである。【０１３７】
この演算処理プログラムは、前記制御プロセッサからのデータ分布平準化命令により、自プロセッシングエレメントにおける第１のデータ数と、自プロセッシングエレメントに隣接する一方の第１隣接プロセッシングエレメントにおける第２のデータ数とを比較した自プロセッシングエレメントにおける第１比較結果情報を算出する処理を行う第１比較結果情報算出処理機能と、隣接する他方の第２隣接プロセッシングエレメントにおける第２比較結果情報を取得する第２比較結果情報取得機能と、前記第１比較結果情報と前記第２比較結果情報とで決まる制御ルールに従い、自プロセッシングエレメントにおけるデータ記憶部、データ数格納部、前記データ記憶部のデータのうち先頭データを一時格納する先頭データ格納部を制御し、前記各プロセッシングエレメント毎のデータ数を前記各プロセッシングエレメント間で均一化する平準化処理機能とを前記コンピュータに実現させることができる。【０１３８】
ここで、前記制御ルールは、例えば、前記第１の実施の形態及び第２の実施の形態に示すような以下の（ａ）〜（ｄ）などが挙げられる。【０１３９】
（ａ）ｃｆが０かつｒｉｇｈｔ＿ｃｆ（ｌｅｆｔ＿ｃｆ）が０：自ｃｎｔｒ、自ｍｄの内容を更新しない
（ｂ）ｃｆが０かつｒｉｇｈｔ＿ｃｆ（ｌｅｆｔ＿ｃｆ）が１：自ｃｎｔｒを１デクリメント、自ｍｄの内容を次の処理または転送データで更新
（ｃ）ｃｆが1かつｒｉｇｈｔ＿ｃｆ（ｌｅｆｔ＿ｃｆ）が０：自ｃｎｔｒを１インクリメント、処理または転送データ先頭および自ｍｄの内容を左または右隣のＰＥのｍｄの内容で更新
（ｄ）ｃｆが1かつｒｉｇｈｔ＿ｃｆ（ｌｅｆｔ＿ｃｆ）が１：自ｃｎｔｒを更新しない、処理または転送データ先頭および自ｍｄの内容を左または右隣のＰＥのｍｄの内容で更新【０１４０】
さらに、この演算処理プログラムは、前記平準化処理機能では、自プロセッシングエレメントにおける前記第１のデータ数と前記自プロセッシングエレメントに隣接する一方の第１隣接プロセッシングエレメントにおける第２のデータ数とを比較した第１の比較結果情報を算出する比較機能と、隣接する他方の第２隣接プロセッシングエレメントにおける比較結果である第２の比較結果情報と、前記第１の比較結果情報との排他的論理和情報を算出する前記排他的論理和演算機能と、前記第２の比較結果情報の論理反転情報と、前記第１の比較結果情報との論理積情報を算出する論理積演算機能と、前記論理積情報に基づいて、前記第１のデータ数と前記排他的論理和情報とを加算演算、減算演算のうちいずれか一方の演算を選択制御するとともに、前記一方の演算結果である加減算演算情報を算出する加減算演算機能とを前記コンピュータに実現させることができる。【０１４１】
プログラムは、オブジェクトコード、インタープリタにより実行されるプログラム等、プログラムの形態を問わない。プログラムは、高水準プロシージャ型またはオブジェクト
指向プログラミング言語で、あるいは必要に応じてアセンブリまたはマシン言語で実装することができる。いずれの場合も、言語はコンパイラ型またはインタープリタ型言語であってもよい。【０１４２】
プログラムを供給する手法としては、電気通信回線（有線、無線を問わない）によってコンピュータと通信可能に接続された外部の機器から前記電気通信回線を通じて提供することも可能である。【０１４３】
本発明のプログラムによれば、当該プログラムを格納するＲＯＭ等の記憶媒体から、当該プログラムをコンピュータ（ＣＰＵ）に読み込んで実行させれば、或いは、当該プログラムを、通信手段を介してコンピュータにダウンロードさせた後に実行させれば、上述した本発明に係る装置を比較的簡単に実現できる。発明の思想の具現化例として装置のソフトウェアとなる場合には、かかるソフトウェアを記憶した記憶媒体上においても当然に存在し、利用される。【０１４４】
また、プログラムは、一次複製品、二次複製品などの複製段階については問はない。プログラムの供給方法として通信回線を利用して行なう場合であれば通信回線が伝送媒体となって本発明が利用されることになる。さらに、装置における従属請求項は、方法，プログラムにおいて従属請求項に対応した構成にすることも可能である。【０１４５】
（情報記録媒体）
また、上述のプログラム（制御プログラムを含む）を、情報記録媒体に記録した構成であってもよい。上述のプログラムは、磁気記録媒体、光記録媒体あるいはＲＯＭなどの情報記録媒体に記録してプログラムを提供することができる。そのようなプログラムが記録された情報記録媒体を、コンピュータにおいて使用することは、好都合な情報処理装置を構成する。【０１４６】
プログラムを供給するための情報記録媒体としては、例えばＲＯＭ、ＲＡＭ、フラッシュメモリやＳＲＡＭ等の半導体メモリ並びに集積回路、あるいはそれらを含むＵＳＢメモリやメモリカード、光ディスク、光磁気ディスク、磁気記録媒体等を用いてよく、さらに、フレキシブルディスク、ＣＤ−ＲＯＭ、ＣＤ―Ｒ、ＣＤ―ＲＷ、ＦＤ、ＤＶＤＲＯＭ、ＨＤＤＶＤ（ＨＤＤＶＤ−Ｒ−ＳＬ＜1層＞、 ＨＤＤＶＤ−Ｒ−ＤＬ＜２層＞、ＨＤＤＶＤ−ＲＷ−ＳＬ、ＨＤＤＶＤ−ＲＷ−ＤＬ、ＨＤＤＶＤ−ＲＡＭ−ＳＬ）、ＤＶＤ±Ｒ−ＳＬ、ＤＶＤ±Ｒ−ＤＬ、ＤＶＤ±ＲＷ−ＳＬ、ＤＶＤ±ＲＷ−ＤＬ、ＤＶＤ−ＲＡＭ、Ｂｌｕ−Ｒａｙ  Ｄｉｓｋ＜登録商標＞（ＢＤ−ＲーＳＬ、ＢＤ−Ｒ−ＤＬ、ＢＤ−ＲＥ−ＳＬ、ＢＤ−ＲＥ−ＤＬ）、ＭＯ、ＺＩＰ、磁気カード、磁気テープ、ＳＤカード、メモリスティック、不揮発性メモリカード、ＩＣカード、等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置、等に記録して構成して用いてよい。  【０１４７】
さらに「情報記録媒体」は、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの（伝送媒体ないしは伝送波）、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。【０１４８】
また、「システム」は、複数の装置が論理的に集合した物をいい、各構成の装置が同一筐体中にあるか否かは問わない。このような場合、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。【０１４９】
さらに、本明細書において、フローチャートに示されるステップは、記載された手順に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。また、実装では、プログラム手順（ステップ）が実行される順序を変更することができる。さらに、実装の必要に応じて、本明細書で説明した特定の手順（ステップ）を、組み合わされた手順（ステップ）として実装、除去、追加、または再配置することができる。【０１５０】
さらに、装置の各手段、各機能、各ステップの手順の機能などのプログラムの機能を、専用のハードウェア（例えば専用の半導体回路等）によりその機能を達成してもよく、プログラムの全機能のうち一部の機能をハードウェアで処理し、全機能のうちさらに他の機能をソフトウェアで処理するようにしてもよい。専用のハードウェアの場合、各部を集積回路例えばＬＳＩにて形成されてもよい。これらは個別に１チップ化されても良いし、一部または全部を含むように１チップ化されても良い。また、ＬＳＩには、他の機能ブロックが含まれていても良い。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。【０１５１】
さらに、ＥＱＬ命令による制御手法は、必ずしも実体のある装置に限られる必要はなく、その方法としても機能することは容易に理解できる。このため、方法にかかる発明も、必ずしも実体のある装置に限らず、その方法としても有効であることに相違はない。この場合、方法を実現するための一例としてＳＩＭＤ型並列計算機システム、マイクロコンピュータ、制御プロセッサ、処理装置なども含めることができる。【０１５２】
ところで、このような装置は、単独で存在する場合もあるし、ある機器（例えば表示装置など）に組み込まれた状態で利用されることもあるなど、発明の思想としてはこれに限らず、各種の態様を含むものである。従って、ソフトウェアであったりハードウェアであったりするなど、適宜、変更可能である。発明の思想の具現化例として装置のソフトウェアとなる場合には、かかるソフトウェアを記憶した記憶媒体上においても当然に存在し、利用されるといわざるをえない。【０１５３】
さらに、一部がソフトウェアであって、一部がハードウェアで実現されている場合であってもよく、一部を記憶媒体上に記憶しておいて必要に応じて適宜読み込まれるような形態のものとしてあってもよい。本発明をソフトウェアで実現する場合、ハードウェアやオペレーティングシステムを利用する構成とすることも可能であるし、これらと切り離して実現することもできる。【０１５４】
また、発明の範囲は、図示例に限定されないものとする。
さらに、上記各実施の形態には種々の段階が含まれており、開示される複数の構成要件における適宜な組み合せにより種々の発明が抽出され得る。つまり、上述の各実施の形態同士、あるいはそれらのいずれかと各変形例のいずれかとの組み合せによる例をも含む。この場合において、本実施形態において特に記載しなくとも、各実施の形態及びそれらの変形例に開示した各構成から自明な作用効果については、当然のことながら実施の形態の作用効果として含めることができる。逆に、本実施の形態に記載されたすべての作用効果を奏することのできる構成が、本発明の本質的特徴部分の必須構成要件であるとは限らない。また、実施の形態に示される全構成要件から幾つかの構成要件が削除された構成による実施の形態並びにその構成に基づく技術的範囲も発明になりうる。【０１５５】
そして、各実施の形態及びそれらの変形例を含むこれまでの記述は、本発明の理解を容易にするために、本発明の多様な実施の形態のうちの一例の開示、すなわち、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、例証するものであり、制限するものではなく、適宜変形及び／又は変更が可能である。本発明は、その技術思想、またはその主要な特徴に基づいて、様々な形で実施することができ、各実施の形態及びその変形例によって本発明の技術的範囲が限定的に解釈されてはならないものである。
従って、上記に開示された各要素は、本発明の技術的範囲に属する全ての設計変更や均等物を含む趣旨である。【０１５６】
この出願は２００８年４月２２日に出願された日本出願特願２００８−１１１４４８を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１５７】
本発明は、ＰＥ間で処理あるいは転送データ数が不均衡な場合に、データの分布平準化処理を効率よく実現できるＳＩＭＤ型並列計算システムを低コストで実現できるようになる。
【図面の簡単な説明】
【０１５８】
【図１】本発明の第１の実施の形態によるＳＩＭＤ型並列計算システムの全体の概略構成の一例を示すブロック図である。
【図２】図１に示すＳＩＭＤ型並列計算システムのＰＥの詳細構成の一例を示すブロック図である。
【図３】図１に示すＳＩＭＤ型並列計算システムのＰＥにおける各部の動作の一例を説明するための真理値表である。
【図４】本発明の第２の実施の形態によるＳＩＭＤ型並列計算システムの全体の概略構成の一例を示すブロック図である。
【図５】図４に示すＳＩＭＤ型並列計算システムにおけるＰＥの詳細構成の一例を示すブロック図である。
【図６】図１に示すＳＩＭＤ型並列計算システムのＰＥにおける各部の動作の一例を説明するための真理値表である。
【図７】本発明の第３の実施の形態によるＳＩＭＤ型並列計算システムにおける各ＰＥのサイクル毎の動作の様子および結果を説明するための説明図である。
【図８】本発明の第３の実施の形態によるＳＩＭＤ型並列計算システムにおける制御プロセッサが行うデータ分布平準化が可能なプログラムコードの一例を説明するための説明図である。
【図９】本発明の第４の実施の形態によるＳＩＭＤ型並列計算システムにおける各種の処理手順の一例を示すフローチャートである。
【図１０】本発明の第４の実施の形態によるＳＩＭＤ型並列計算システムにおける各種の処理手順の一例を示すフローチャートである。
【図１１】本発明の他の実施の形態によるＳＩＭＤ型並列計算システムにおける各ＰＥのサイクル毎の動作の様子および結果を説明するための説明図である。
【図１２】本発明の他の実施の形態によるＳＩＭＤ型並列計算システムの全体の概略構成の一例を示すブロック図である。
【図１３】本発明の他の実施の形態によるＳＩＭＤ型並列計算システムの全体の概略構成の一例を示すブロック図である。
【図１４】本発明のＳＩＭＤ型並列計算システムを利用した表示装置の一例を示す説明図である。
【図１５】ＳＩＭＤ型並列計算システムにおいてＰＥ間で処理データ数が平準化されている場合の様子を説明するための説明図である。
【図１６】関連技術のＳＩＭＤ型並列計算システムにおいてＰＥ間で処理データ数が平準化されていない様子を説明するための説明図である。
【符号の説明】
【０１５９】
１      ＳＩＭＤ型並列計算機システム
１０１（ｎ−１）、１０１（ｎ）、１０１（ｎ＋１）    ＲＡＭ（データ記憶部）
１０２（ｎ−１）、１０２（ｎ）  レジスタ（ｃｎｔｒ）（データ数格納部）
１０３（ｎ−１）、１０３（ｎ）  レジスタ（ｍｄ）（先頭データ格納部）
１０４（ｎ−１）、１０４（ｎ）  減算演算部（ｓｕｂ）  
１０５（ｎ−１）、１０５（ｎ）  論理積演算部（ａｎｄ）
１０６（ｎ−１）、１０６（ｎ）  排他的論理和演算部（ｘｏｒ）
１０７（ｎ−１）、１０７（ｎ）  加減算演算部（ａｎｄ／ｓｕｂ）
１１０（ｎ−１）、１１０（ｎ）  平準化処理部
２００  ＰＥアレイ
２０１（ｎ−１）、２０１（ｎ）、２０１（ｎ＋１）
ＰＥ（プロセッシング・エレメント）（平準化処理装置）
２１０  制御プロセッサ（ＣＰ）
２１２  データ分布平準化命令生成部
２１４  実行制御部
２２０  ＰＥ間結合線
【図１】
2009131007.tif 000003
【図２】
2009131007.tif 000004
【図３】
2009131007.tif 000005
【図４】
2009131007.tif 000006
【図５】
2009131007.tif 000007
【図６】
2009131007.tif 000008
【図７】
2009131007.tif 000009
【図８】
2009131007.tif 000010
【図９】
2009131007.tif 000011
【図１０】
2009131007.tif 000012
【図１１】
2009131007.tif 000013
【図１２】
2009131007.tif 000014
【図１３】
2009131007.tif 000015
【図１４】
2009131007.tif 000016
【図１５】
2009131007.tif 000017
【図１６】
2009131007.tif 000018
【国際調査報告】
2009131007.tif 000019
2009131007.tif 000020
2009131007.tif 000021
2009131007.tif 000022