(57)【要約】  プロセッサエレメント間で互いに異なる距離に位置するプロセッサエレメントへ効率よくデータを転送可能なＳＩＭＤ型プロセッサアレイシステムを提供する。ＳＩＭＤ型プロセッサアレイシステムは、複数の命令を同時に発行可能な制御プロセッサ（ＣＰ）と、ＣＰにより制御される複数の相互結合したプロセッシングエレメント（ＰＥ）を有するＰＥアレイと、を備える。ＣＰは、各ＰＥに対し、ＰＥ間データシフト命令を発行する。各ＰＥは、ＰＥ間データシフト命令に従い、隣接ＰＥの転送データ記憶部の内容の全部を自ＰＥの転送データ記憶部（ＭＢＦ）にコピーするデータ送出動作と、隣接ＰＥのＭＢＦの内容の一部と自ＰＥのＩＤ記憶部（ＩＤＢ）の内容が一致すれば、隣接ＰＥのＭＢＦの内容の一部または全部を自ＰＥの転送データ取込み記憶部（ＲＢＵＦ）にコピーするデータ取込み動作とを行う。
2009110497.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令を同時に発行可能な制御プロセッサと、
前記制御プロセッサにより制御される複数の相互結合したプロセッシングエレメントを有するプロセッシングエレメントアレイと、を備え、
前記制御プロセッサは、前記複数のプロセッシングエレメントに対し、プロセッシングエレメント間データシフト命令を発行し、
前記複数のプロセッシングエレメントは、転送データ記憶部と、転送データ取込み記憶部と、ＩＤ記憶部とを有し、前記プロセッシングエレメント間データシフト命令に従い、隣接プロセッシングエレメントの転送データ記憶部の内容の全部を自プロセッシングエレメントの転送データ記憶部にコピーするデータ送出動作と、前記隣接プロセッシングエレメントの転送データ記憶部の内容の一部と前記自プロセッシングエレメントのＩＤ記憶部の内容が一致すれば、前記隣接プロセッシングエレメントの転送データ記憶部の内容の一部または全部を自プロセッシングエレメントの転送データ取込み記憶部にコピーするデータ取込み動作とを行うことを特徴とするＳＩＭＤ型プロセッサアレイシステム。
【請求項２】
前記複数のプロセッシングエレメントは、送信データ記憶部を有し、前記プロセッシングエレメント間データシフト命令に従い、前記隣接プロセッシングエレメントの転送データ記憶部の内容の一部と前記自プロセッシングエレメントのＩＤ記憶部の内容が一致するか、または前記隣接プロセッシングエレメントの転送データ記憶部の内容が無効である場合は、前記自プロセッシングエレメントの送信データ記憶部の内容を前記自プロセッシングエレメントの転送データ記憶部にコピーし、一致しなければ前記隣接プロセッシングエレメントの転送データ記憶部の内容の全部を自プロセッシングエレメントの転送データ記憶部にコピーするデータ送出動作を行うことを特徴とする請求項１記載のＳＩＭＤ型プロセッサアレイシステム。
【請求項３】
前記複数のプロセッシングエレメントは、送信成立フラグを有し、前記プロセッシングエレメント間データシフト命令に従い、前記自プロセッシングエレメントの送信データ記憶部の内容を前記自プロセッシングエレメントの転送データ記憶部にコピーした場合は、前記自プロセッシングエレメント上の送信成立フラグをＯＮにする動作を行うことを特徴とする請求項１又は２記載のＳＩＭＤ型プロセッサアレイシステム。
【請求項４】
前記複数のプロセッシングエレメントは、受信回数カウンタを有し、前記プロセッシングエレメント間データシフト命令に従い、前記自プロセッシングエレメントの受信回数カウンタが非ゼロであり、かつ、前記隣接プロセッシングエレメントの転送データ記憶部の内容の一部と前記自プロセッシングエレメントのＩＤ記憶部の内容が一致すれば、前記隣接プロセッシングエレメントの転送データ記憶部の内容の一部または全部を前記自プロセッシングエレメントの転送データ取込み記憶部にコピーし、かつ、受信回数カウンタを１だけデクリメントするデータ取込み動作を行うことを特徴とする請求項１から３のいずれか１項に記載のＳＩＭＤ型プロセッサアレイシステム。
【請求項５】
前記複数のプロセッシングエレメントは、受信成立フラグを有し、前記プロセッシングエレメント間データシフト命令に従い、前記隣接プロセッシングエレメントの転送データ記憶部の内容の一部または全部を前記自プロセッシングエレメントの転送データ取込み記憶部にコピーした場合は、自プロセッシングエレメント上の受信成立フラグをＯＮにする動作を行うことを特徴とする請求項１から４のいずれか１項に記載のＳＩＭＤ型プロセッサアレイシステム。
【請求項６】
前記複数のプロセッシングエレメントは、受信回数カウンタを有し、前記プロセッシングエレメント間データシフト命令に従い、前記データ転送動作に参加するプロセッシングエレメントの受信回数カウンタのうち１つでも非ゼロのものが存在すればＯＮ、存在しなければＯＦＦとなるように、前記制御プロセッサ上に存在するデータ転送中フラグを更新する動作を行うことを特徴とする請求項１から５のいずれか１項に記載のＳＩＭＤ型プロセッサアレイシステム。
【請求項７】
前記複数のプロセッシングエレメントは、送信回数カウンタを有し、前記プロセッシングエレメント間データシフト命令に従い、前記データ転送動作に参加するプロセッシングエレメントの送信回数カウンタのうち１つでも非ゼロのものが存在すればＯＮ、存在しなければＯＦＦとなるように、前記制御プロセッサ上に存在するデータ転送中フラグを更新する動作を行うことを特徴とする請求項１から６のいずれか１項に記載のＳＩＭＤ型プロセッサアレイシステム。
【請求項８】
前記複数のプロセッシングエレメントは、受信回数カウンタおよび送信回数カウンタを有し、前記プロセッシングエレメント間データシフト命令に従い、前記データ転送動作に参加するプロセッシングエレメントの受信回数カウンタおよび送信回数カウンタのうち１つでも非ゼロのものが存在すればＯＮ、存在しなければＯＦＦとなるように、前記制御プロセッサ上に存在するデータ転送中フラグを更新する動作を行うことを特徴とする請求項１から７のいずれか１項に記載のＳＩＭＤ型プロセッサアレイシステム。
【請求項９】
前記複数のプロセッシングエレメントは、モードレジスタと、受信回数カウンタと、受信成立フラグとを有し、前記プロセッシングエレメント間データシフト命令に従い、前記動作モードレジスタの格納値がＯＦＦの場合は、請求項１から８のいずれ１項に記載の動作を行い、前記動作モードレジスタの格納値がＯＮの場合は、前記自プロセッシングエレメントの受信回数カウンタが前記隣接プロセッシングエレメントとの格子距離よりも小さくかつ受信成立フラグがＯＦＦであれば、前記隣接プロセッシングエレメントの転送データ記憶部の内容の一部または全部を前記自プロセッシングエレメントの転送データ取込み記憶部にコピーし、受信成立フラグをＯＦＦかつ受信回数カウンタをゼロに変更し、受信回数カウンタが前記格子距離以上ならば受信回数カウンタを前記格子距離だけデクリメントするデータ取込み動作を行うことを特徴とするＳＩＭＤ型プロセッサアレイシステム。
【請求項１０】
複数の命令を同時に発行可能な制御プロセッサが、前記制御プロセッサにより制御されるプロセッシングエレメントアレイの複数の相互結合したプロセッシングエレメントに対し、プロセッシングエレメント間データシフト命令を発行し、
前記複数のプロセッシングエレメントが、前記プロセッシングエレメント間データシフト命令に従い、隣接プロセッシングエレメントの転送データ記憶部の内容の全部を自プロセッシングエレメントの転送データ記憶部にコピーするデータ送出動作と、前記隣接プロセッシングエレメントの転送データ記憶部の内容の一部と前記自プロセッシングエレメントのＩＤ記憶部の内容が一致すれば、前記隣接プロセッシングエレメントの転送データ記憶部の内容の一部または全部を自プロセッシングエレメントの転送データ取込み記憶部にコピーするデータ取込み動作とを行うことを特徴とするＳＩＭＤ型プロセッサアレイシステムのデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の命令を同時に発行可能な制御プロセッサによって制御される複数の相互結合したプロセッシングエレメントで構成されるＳＩＭＤ型プロセッサアレイシステム及びそのデータ転送方法に関する。
【背景技術】
【０００２】
従来から、ビデオ信号などの画像処理用にＳＩＭＤ（Single Instruction Multiple Data）型プロセッサアレイシステムが用いられている。【０００３】
例えば、非特許文献１で提示されているＳＩＭＤ型プロセッサアレイでは、図１２に示すように一端から順に画像データを入出力させた上、ＳＩＭＤ型制御に基づき、各プロセッシングエレメント（以下「ＰＥ（Processing Unit）」）５１０は、制御プロセッサ（以下「ＣＰ（Control Processor）」）５２０から放送される命令を自ローカルメモリ上のデータに適用することにより、ＰＥ数分だけの並列処理を実現している。また、全ＰＥが一斉に同一方向で同じ距離だけ離れた他ＰＥへデータを送ると同時に、他ＰＥから届けられるデータをも同時に受け取るという、ＳＩＭＤ型プロセッサアレイではもっとも一般的なＰＥ間データ転送技術が開示されている。【０００４】
一方、今後ＳＩＭＤ型プロセッサアレイシステムがより多様で複雑なアプリケーションにも対応できるようにするためには、ＰＥ間でのより自由なデータのやりとりを可能にするための技術が望まれている。これに関し、例えば、特許文献１ではより複雑な転送パタンを実現するための手法が、特許文献２では格子状に結合されたＰＥアレイのＰＥ間結合線のより効果的な利用方法がそれぞれ開示されている。
【特許文献１】特開２００５−２６７６１５号公報
【特許文献２】特開平０６−０７５９８６号公報
【非特許文献１】京  昭倫著、「１２８個の４ウェイＶＬＩＷ型ＲＩＳＣコアを集積した車載向け動画認識ＬＳＩ」、電子情報通信学会研究会報告、集積回路研究会（ＩＣＤ）、２００３年５月、Ｖｏｌ．１０３、Ｎｏ．８９、ｐｐ．１９−２４
【発明の開示】
【発明が解決しようとする課題】
【０００５】
前述した関連技術を用いることで、相異なる距離に位置する他ＰＥからデータを受け取ったり、あるいは相異なる距離に位置する他ＰＥへデータを送ったりする機能を実現することができる。しかし、ＰＥ毎のデータ転送距離が異なると、転送動作の終了タイミングがＰＥ毎で異なってくるため、ＳＩＭＤ型制御の下では、全ＰＥが転送動作を終了するまで次の動作、あるいは次の命令に移行できない。そのため、一度の転送に要する時間あるいはマシンサイクル数は、通常、送受信し合うＰＥ同士の最長格子距離に比例してしまう。【０００６】
これは、例えばサイクル毎に格子距離１を各転送データが移動可能で、かつ最も離れたＰＥ同士の格子距離がＬ（Ｌは１より大きい自然数）のＰＥ間ネットワークを利用する場合に、Ｌの転送距離で送受信し合うＰＥのペアが１つでも存在すれば、全体のデータ転送処理が終了するまでに要するサイクル数がＬに律速されてしまうことを意味する。従って、転送パタンにもよるが、多くのケースでは、ＰＥ間の相互結合線、すなわちＰＥ間ネットワークの稼働率が低くなってしまうという問題点が存在していた。【０００７】
こうした問題点は、ＰＥ間によるデータ転送を例えばＰＥでの演算処理のバックグラウンドで動作させれば、多少処理性能への影響を緩和できる。しかし、この場合には、転送データを一時格納するバッファ類といったハードウェア資源を多く用意する必要が発生したり、各種データ転送方式に柔軟に対応できなくなったりするといった別の問題点が発生する。【０００８】
本発明の目的は、複数の命令を同時に発行可能な制御プロセッサによって制御される複数の相互結合したプロセッシングエレメントで構成されるＳＩＭＤ型プロセッサアレイシステムにおいて、プロセッシングエレメント毎に相異なる格子距離に位置する他プロセッシングエレメントとの間でデータ転送を行う場合、少量の追加ハードウェア資源で実装でき、高いプロセッシングエレメント間ネットワークの稼働率を実現でき、多様なデータ転送方式に対応可能な柔軟性の高いＳＩＭＤ型プロセッサアレイシステム及びそのデータ転送方法を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明に係るＳＩＭＤ型プロセッサアレイシステムは、複数の命令を同時に発行可能な制御プロセッサと、前記制御プロセッサにより制御される複数の相互結合したプロセッシングエレメントを有するプロセッシングエレメントアレイと、を備え、前記制御プロセッサは、前記複数のプロセッシングエレメントに対し、プロセッシングエレメント間データシフト命令を発行し、前記複数のプロセッシングエレメントは、転送データ記憶部と、転送データ取込み記憶部と、ＩＤ記憶部とを有し、前記プロセッシングエレメント間データシフト命令に従い、隣接プロセッシングエレメントの転送データ記憶部の内容の全部を自プロセッシングエレメントの転送データ記憶部にコピーするデータ送出動作と、前記隣接プロセッシングエレメントの転送データ記憶部の内容の一部と前記自プロセッシングエレメントのＩＤ記憶部の内容が一致すれば、前記隣接プロセッシングエレメントの転送データ記憶部の内容の一部または全部を自プロセッシングエレメントの転送データ取込み記憶部にコピーするデータ取込み動作とを行うことを特徴とする。【００１０】
また、本発明に係るＳＩＭＤ型プロセッサアレイシステムのデータ転送方法は、複数の命令を同時に発行可能な制御プロセッサが、前記制御プロセッサにより制御されるプロセッシングエレメントアレイの複数の相互結合したプロセッシングエレメントに対し、プロセッシングエレメント間データシフト命令を発行し、前記複数のプロセッシングエレメントが、前記プロセッシングエレメント間データシフト命令に従い、隣接プロセッシングエレメントの転送データ記憶部の内容の全部を自プロセッシングエレメントの転送データ記憶部にコピーするデータ送出動作と、前記隣接プロセッシングエレメントの転送データ記憶部の内容の一部と前記自プロセッシングエレメントのＩＤ記憶部の内容が一致すれば、前記隣接プロセッシングエレメントの転送データ記憶部の内容の一部または全部を自プロセッシングエレメントの転送データ取込み記憶部にコピーするデータ取込み動作とを行うことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、複数の命令を同時に発行可能な制御プロセッサによって制御される複数の相互結合したプロセッシングエレメントで構成されるＳＩＭＤ型プロセッサアレイシステムにおいて、プロセッシングエレメント毎に相異なる格子距離に位置する他プロセッシングエレメントとの間でデータ転送を行う場合、少量の追加ハードウェア資源で実装でき、高いプロセッシングエレメント間ネットワークの稼働率を実現でき、多様なデータ転送方式に対応可能な柔軟性の高いＳＩＭＤ型プロセッサアレイシステム及びそのデータ転送方法を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１〜第８の実施例に係るＳＩＭＤ型プロセッサアレイシステムの概略構成を示すブロック図である。
【図２】本発明の第１〜第８の実施例に係るＳＩＭＤ型プロセッサアレイシステムの主な構成要素間の結線を示すブロック図である。
【図３】本発明の第１〜第８の実施例に係るＳＩＭＤ型プロセッサアレイシステムの制御回路構成を示すブロック図である。
【図４】本発明の第８の実施例に係るＳＩＭＤ型プロセッサアレイシステムにおいて、相異なる距離に位置するＰＥ間での一回のみのデータ転送を行う場合の動作を説明するプログラムコードを示す図である。
【図５】本発明の第８の実施例に係るＳＩＭＤ型プロセッサアレイシステムで利用する転送データのフォーマットを説明した図である。
【図６】本発明の第８の実施例に係るＳＩＭＤ型プロセッサアレイシステムにおいて、宛先ＩＤ方式を用いて、相異なる距離に位置するＰＥ間での一回のみのデータ転送を行う場合の初期状態と、その後のサイクル毎の動作結果とを説明する図である。
【図７】本発明の第８の実施例に係るＳＩＭＤ型プロセッサアレイシステムにおいて、カウンタ方式を用いて相異なる距離に位置するＰＥ間での一回のみのデータ転送を行う場合の初期状態と、その後のサイクル毎の動作結果とを説明する図である。
【図８】本発明の第８の実施例に係るＳＩＭＤ型プロセッサアレイシステムにおいて、相異なる距離に位置するＰＥ間での連続した複数のデータ転送を行う場合の動作を説明するプログラムコードを示す図である。
【図９】本発明の第８の実施例に係るＳＩＭＤ型プロセッサアレイシステムにおいて、宛先ＩＤ方式を用いて、相異なる距離に位置するＰＥ間での連続した複数のデータ転送を行う場合の初期状態を説明する図である。
【図１０】本発明の第８の実施例に係るＳＩＭＤ型プロセッサアレイシステムにおいて、宛先ＩＤ方式を用いて、相異なる距離に位置するＰＥ間での連続した複数のデータ転送を行う場合のサイクル毎の動作結果を説明する図である。
【図１１】図１０に続いて、本発明の第８の実施例に係るＳＩＭＤ型プロセッサアレイシステムにおいて、宛先ＩＤ方式を用いて、相異なる距離に位置するＰＥ間での連続した複数のデータ転送を行う場合のサイクル毎の動作結果を説明する図である。
【図１２】関連技術のＳＩＭＤ型プロセッサアレイシステムの概略構成を示すブロック図である。
【符号の説明】
【００１３】
１００  ＳＩＭＤ型プロセッサアレイシステム
１０１  プロセッシングエレメント（ＰＥ）
１１０  制御プロセッサ（ＣＰ）
１２０  ＰＥ間結合ネットワーク（結合線）
１２１  転送バッファ（ＭＢＦ）
１２１１  隣接ＰＥの転送バッファ（ＭＢＦ）
２００  転送データ
２０１  ネットワーク制御回路（ＮＣＴＬ）
２０２  送信回数カウンタ（ＳＣＮＴ）
２０３  受信回数カウンタ（ＲＣＮＴ）
２０４  受信バッファ（ＲＢＵＦ）
２０５  送信バッファ（ＳＢＵＦ）
２０６  ステータス値（ＳＴＡＴＵＳ）
２０７  モードレジスタ（ＭＯＤＥ）
２０８  受信成立フラグ（ＲＦＬＧ）
２０９  送信成立フラグ（ＳＦＬＧ）
２１０  ＩＤバッファ（ＩＤＢ）
２１１  データ転送中フラグ（ＦＦＬＧ）
２２０  演算器群
２２１  ローカルメモリ（ＩＭＥＭ）
２２２  汎用レジスタおよび条件フラグ群
３０１  組合せ回路部
３０２  ＳＳＦＴ命令（ＰＥ間データシフト命令）
３０３  ＲＢＵＦ、ＲＦＬＧ、ＳＦＬＧの各更新値
３０４  ＲＣＮＴ、ＳＣＮＴの各更新値
３０５  ＭＢＦの更新値
４１１〜４１５  第１〜第５ＡＮＤ回路
４２０  ＯＲ回路
４２１〜４２４  第１〜第４ＯＲ回路
４３１〜４３５  第１〜第５マルチプレクサ（データセレクタ）、
４４１〜４４４  第１〜第４判定回路
４５１、４５２  第１、第２減算回路
【発明を実施するための最良の形態】
【００１４】
次に、本発明の実施の形態に係るＳＩＭＤ型プロセッサアレイシステム及びそのデータ転送方法について、図面を参照して詳細に説明する。【００１５】
本実施の形態のＳＩＭＤ型プロセッサアレイシステムは、複数の相互結合したプロセッシングエレメント（以下「ＰＥ」）で構成されるプロセッシングエレメントアレイ（以下「ＰＥアレイ」）と、ＰＥアレイ全体へ命令を発行する、複数の命令を同時に発行可能な制御プロセッサ（以下「ＣＰ」）とを有する。【００１６】
ＣＰは、１ビットのデータ転送中フラグ（以下「ＦＦＬＧ」）を備える。また、ＣＰは、命令セット内にＰＥ間データシフト命令（以下「ＳＳＦＴ命令」）を含む。【００１７】
ＰＥアレイ内の各ＰＥは、自ＰＥ内の記憶手段として、転送バッファ（転送データ記憶部）（以下「ＭＢＦ」）、受信バッファ（転送データ取込み記憶部）（以下「ＲＢＵＦ」）、送信バッファ（送信データ記憶部）（以下「ＳＢＵＦ」）、受信回数カウンタ（以下「ＲＣＮＴ」）、送信回数カウンタ（以下「ＳＣＮＴ」）、動作モードレジスタ（以下「ＭＯＤＥ」）、ＩＤバッファ（ＩＤ記憶部）（以下「ＩＤＢ」）を備える。これらの各記憶手段は、ＰＥのデータパス内に通常存在する汎用レジスタ等の既存記憶手段を流用して構成される。【００１８】
また、ＰＥアレイ内の各ＰＥは、自ＰＥ内の記憶手段として、受信成立フラグ（以下「ＲＦＬＧ」）、送信成立フラグ（以下「ＳＦＬＧ」）を備える。これらの各記憶手段は、ＰＥのデータパス内に通常存在する条件フラグ等の既存記憶手段を流用して構成される。【００１９】
さらに、ＰＥアレイ内の各ＰＥは、自ＰＥ内の制御手段として、ネットワーク制御回路（以下「ＮＣＴＬ」）を備える。ＮＣＴＬは、サイクル毎に、自ＰＥ内の前記各記憶手段および隣接ＰＥのＭＢＦ（以降「隣接ＭＢＦ」と呼ぶ。）の内容を入力とし、ＣＰが発行するＳＳＦＴ命令の指定に従い、下記条件に従い、自ＰＥ内に存在するＭＢＦ、ＲＢＵＦ、ＲＣＮＴ、ＳＣＮＴ、ＲＦＬＧ、ＳＦＬＧ、ＦＦＬＧの更新を制御する。なお、ＭＯＤＥで指定されるカウンタ方式と、非カウンタ方式（発信元ＩＤ方式、宛先ＩＤ方式）の詳細については後述する。【００２０】
１）ＭＢＦの更新制御
ＮＣＴＬは、「同サイクルにＳＳＦＴ命令が実行」された場合に限り、「ＭＯＤＥの値が非カウンタ方式を指定し、かつ、ＳＣＮＴの値が非ゼロであり、かつ、隣接ＭＢＦの有効無効を示すフィールドの値が無効を示す値を持つ」場合、あるいは「ＭＯＤＥが非カウンタ方式を指定し、かつ、ＳＣＮＴの値が非ゼロであり、かつ、ＲＢＵＦの内容を隣接ＭＢＦの内容で更新した」場合に、ＭＢＦの内容をＳＢＵＦの内容で更新し、それ以外の場合に、ＭＢＦの内容を隣接ＭＢＦの内容で更新する。【００２１】
２）ＲＢＵＦの更新
ＮＣＴＬは、「同サイクルにＳＳＦＴ命令が実行」された場合に限り、「ＭＯＤＥの値が非カウンタ方式を指定し、かつ、ＲＣＮＴの値が非ゼロであり、かつ、ＩＤＢの値と隣接ＭＢＦのＩＤを表現した部分の値とが一致する」場合、あるいは「ＭＯＤＥがカウンタ方式を指定し、かつ、ＲＣＮＴの値がＰＥ間ネットワークでの最小格子距離（以下「ＤＩＳＴ」）よりも小さい」場合に、ＲＢＵＦの内容を隣接ＭＢＦの内容で更新する。【００２２】
３）ＲＣＮＴの更新
ＮＣＴＬは、「同サイクルにＳＳＦＴ命令が実行」された場合に限り、「ＭＯＤＥの値が非カウンタ方式を指定し、かつ、ＲＢＵＦの内容を隣接ＭＢＦの内容で更新」した場合に、ＲＣＮＴの値から１を減算した値（ＲＣＮＴ−１）で、あるいは、「ＭＯＤＥの値がカウンタ方式を指定し、かつ、ＲＣＮＴの値がＤＩＳＴ以上を示す」場合に、ＲＣＮＴの値からＤＩＳＴの値を減算した値（ＲＣＮＴ−ＤＩＳＴ）で、それぞれＲＣＮＴの値を更新する。【００２３】
４）ＳＣＮＴの更新
ＮＣＴＬは、「同サイクルにＳＳＦＴ命令が実行」された場合に限り、「ＭＢＦの内容をＳＢＵＦの内容で更新」した場合に、ＳＣＮＴの値から１を減算した値（ＳＣＮＴ−１）で、ＳＣＮＴの値を更新する。【００２４】
５）ＲＦＬＧの更新
ＮＣＴＬは、「同サイクルにＳＳＦＴ命令が実行」された場合に限り、「ＲＢＵＦの内容が隣接ＭＢＦの内容で更新された」場合に、ＲＦＬＧの値を「１」、それ以外の場合に、ＲＦＬＧの値を「０」に更新する。【００２５】
６）ＳＦＬＧの更新
ＮＣＴＬは、「同サイクルにＳＳＦＴ命令が実行」された場合に限り、「ＭＢＦの内容がＳＢＵＦの内容で更新された」場合に、ＳＦＬＧの値を「１」、それ以外の場合に、ＳＦＬＧの値を「０」に更新する。【００２６】
７）ＦＦＬＧの更新
ＮＣＴＬは、「同サイクルにＳＳＦＴ命令が実行」された場合に限り、「データ転送動作に参加する全ＰＥのＲＣＮＴの値とＳＣＮＴの値のいずれかが非ゼロである」場合に、ＦＦＬＧの値を「１」、それ以外の場合に、ＦＦＬＧの値を「０」に更新する。【００２７】
以下、上記のカウンタ方式と、非カウンタ方式（発信元ＩＤ方式、宛先ＩＤ方式）とについて説明する。【００２８】
Ａ）カウンタ方式
本実施の形態では、ＰＥ間で転送し合う必要があるのが単一のデータのみ、かつ発信元ＰＥから受信側ＰＥまでの格子距離情報が受信側ＰＥで保持されている場合、以下に述べる「カウンタ方式」でデータ転送を行う。その場合は、関連技術と類似したネットワーク稼動率で、相異なる距離に位置するＰＥ間でのデータ転送を実現できる。【００２９】
まず、ＳＳＦＴ命令の発行に先立ち、データ転送動作に参加するＰＥ毎が自ＰＥ内の各記憶手段の値を次のようにセットする。【００３０】
ａ）ＭＯＤＥの値：「カウンタ方式」指定を表す値である「１」
ｂ）ＲＣＮＴの値：受信したいデータの発信元ＰＥの自ＰＥからみた格子距離値
ｃ）ＳＣＮＴの値：ゼロ
ｄ）ＭＢＦの内容：各ＰＥの送信データ
次に、ＣＰが、ＦＦＬＧが「０」となるまで、すなわちデータ転送動作に参加する全ＰＥのＲＣＮＴの値がゼロになるまで、ＳＳＦＴ命令を繰り返し発行するよう命令制御を行う。こうすることで、当初自ＭＢＦに格納された各ＰＥの送信データは、受信側ＰＥのＲＢＵＦに格納されるようになる。【００３１】
上記により、ＳＳＦＴ命令の繰り返し発行することで、データ転送動作に参加する全ＰＥの元へ、ある相対格子距離に位置する所望の他ＰＥからの送信データが届けられる。【００３２】
Ｂ）非カウンタ方式
本実施の形態では、相異なる距離に位置するＰＥ間で連続した複数のデータ転送を行う必要がある場合、以下に述べる「発信元ＩＤ方式」あるいは「宛先ＩＤ方式」のいずれかの「非カウンタ方式」でデータ転送を行う。これにより、それら複数のデータ転送事象を重畳した形で実施でき、ネットワーク稼動率を高め、結果的に転送終了までに要する総サイクル数を減らすことができるようになる。【００３３】
Ｂ−１）発信元ＩＤ方式
発信元ＰＥのＩＤ情報を受信側ＰＥが保持している場合では、以下に述べる「発信元ＩＤ方式」でデータ転送を行う。【００３４】
まず、ＳＳＦＴ命令の発行に先立ち、データ転送動作に参加するＰＥ毎が自ＰＥ内の各記憶手段の値を次のようにセットする。【００３５】
ａ）ＭＯＤＥの値：「非カウンタ方式」指定を表す値である「０」
ｂ）ＲＣＮＴの値：受信回数
ｃ）ＳＣＮＴの値：送信回数
ｄ）ＩＤＢの値：最初に受信したいデータの発信元ＰＥのＩＤ番号
ｅ）ＭＢＦの内容：最初の送信データ
ｄ）ＳＢＵＦの内容：次送信データ
なお、各送信データは、「データ（ＤＡＴＡ）」フィールド、「ＩＤ」フィールド、そして有効無効を示す「ＶＡＬＩＤ」フィールドで構成される。これらの各フィールドには、次の値が格納される。【００３６】
ｘ）「データ」フィールド：送信データの本体
ｙ）「ＩＤ」フィールド：自ＰＥのＩＤ情報
ｚ）「ＶＡＬＩＤ」フィールド：「有効」を示す値
その他、データ転送動作に参加しないＰＥでも、ＭＢＦの内容を「ＶＡＬＩＤ」フィールドが「無効」を示す送信データにセットしておくものとする。【００３７】
次に、ＣＰが、ＦＦＬＧが「０」となるまで、すなわちデータ転送動作に参加する全ＰＥのＲＣＮＴの値とＳＣＮＴの値が共にゼロになるまで、ＳＳＦＴ命令と共に、次の条件付ストア命令、条件付ロード命令をサイクル毎に繰り返し発行する。【００３８】
各ＰＥのＮＣＴＬは、条件付ストア命令が発行された場合、ＲＦＬＧの値が「１」なら、ＲＢＵＦの内容をＰＥ毎に通常存在する大容量記憶領域（以降、「ＩＭＥＭ」と呼ぶ）へ退避させる。また、各ＰＥのＮＣＴＬは、条件付ロード命令が発行された場合、ＲＦＬＧの値が「１」ならば、ＩＭＥＭから次に受信したいデータの発信元ＰＥのＩＤ情報をＩＤＢにロードし、ＳＦＬＧの値が「１」ならば、ＩＭＥＭから新しい次送信データをＳＢＵＦにロードする。【００３９】
これらにより、当初自ＭＢＦ、ＳＢＵＦ、ＩＭＥＭの所定場所に格納されたＰＥ毎のＳＣＮＴ個の送信データは、受信側ＰＥのＩＭＥＭの所定場所およびＲＢＵＦ内にＰＥ毎のＲＣＮＴ個だけ格納された状態となる。【００４０】
Ｂ−２）宛先ＩＤ方式
次に、宛先ＰＥのＩＤ情報を発信側ＰＥが保持している場合では、以下に述べる「宛先ＩＤ方式」でデータ転送を行う。【００４１】
まず、ＳＳＦＴ命令の発行に先立ち、データ転送動作に参加するＰＥ毎が自ＰＥ内の各記憶手段の値を次のようにセットする。【００４２】
ａ）ＭＯＤＥの値：「非カウンタ方式」指定を表す値である「０」
ｂ）ＲＣＮＴの値：受信回数
ｃ）ＳＣＮＴの値：送信回数
ｄ）ＩＤＢの値：自ＰＥのＩＤ番号
ｅ）ＭＢＦの内容：最初の送信データ
ｆ）ＳＢＵＦの内容：次送信データ
なお、各送信データの各フィールドは、次の値が格納される。【００４３】
ｘ）「データ」フィールド：送信データの本体
ｙ）「ＩＤ」フィールド：宛先ＰＥのＩＤ情報
ｚ）「ＶＡＬＩＤ」フィールド：「有効」を示す値
その他、データ転送動作に参加しないＰＥでも、ＭＢＦの内容を「ＶＡＬＩＤ」フィールドが「無効」を示す送信データにセットしておくものとする。【００４４】
次に、ＣＰが、ＦＦＬＧが０となるまで、すなわちデータ転送動作に参加する全ＰＥのＲＣＮＴの値とＳＣＮＴの値が共にゼロになるまで、ＳＳＦＴ命令と共に、次の条件付ストア命令、条件付ロード命令をサイクル毎繰り返し発行する。【００４５】
各ＰＥのＮＣＴＬは、条件付ストア命令が発行された場合、ＲＦＬＧの値が１ならＲＢＵＦの内容をＩＭＥＭへ退避させる。また、各ＰＥのＮＣＴＬは、条件付ロード命令が発行された場合、ＳＦＬＧの値が「１」であれば、ＩＭＥＭから新しい次送信データをＳＢＵＦにロードする。【００４６】
これらにより、当初自ＭＢＦ、ＳＢＵＦ、そしてＩＭＥＭの所定場所に格納されたＰＥ毎ＳＣＮＴ個の送信データは、受信側ＰＥのＩＭＥＭの所定場所およびＲＢＵＦ内にＰＥ毎ＲＣＮＴ個だけ格納された状態となる。【００４７】
以上のように、本実施の形態に係るＳＩＭＤ型プロセッサアレイシステムは、複数の命令を同時に発行可能なＣＰと、ＣＰにより制御される複数の相互結合したＰＥを有するＰＥアレイと、を備えている。そして、次にようなデータ転送動作を行う。【００４８】
１）ＣＰは、各ＰＥに対し、ＳＳＦＴ命令を発行する。各ＰＥは、ＳＳＦＴ命令に従い、隣接ＰＥのＭＢＦの内容の全部を自ＰＥのＭＢＦにコピーするデータ送出動作と、隣接ＰＥのＭＢＦの内容の一部と自ＰＥのＩＤ記憶部（ＩＤＢ）の内容が一致すれば、隣接ＰＥのＭＢＦの内容の一部または全部を自ＰＥのＲＢＵＦにコピーするデータ取込み動作とを行う。【００４９】
２）各ＰＥは、ＳＳＦＴ命令に従い、隣接ＰＥのＭＢＦの内容の一部と自ＰＥのＩＤＢの内容が一致するか、または隣接ＰＥのＭＢＦの内容が無効である場合は、自ＰＥのＳＢＵＦの内容を自ＰＥのＭＢＦにコピーし、一致しなければ隣接ＰＥのＢＵＦの内容の全部を自ＰＥのＢＵＦにコピーするデータ送出動作を行う。【００５０】
３）各ＰＥは、ＳＳＦＴ命令に従い、自ＰＥのＳＢＵＦの内容を自ＰＥのＭＢＦにコピーした場合は、自ＰＥ上のＳＦＬＧをＯＮにする動作を行う。【００５１】
４）各ＰＥは、ＳＳＦＴ命令に従い、自ＰＥのＲＣＮＴが非ゼロであり、隣接ＰＥのＭＢＦの内容の一部と自ＰＥのＩＤＢの内容が一致すれば隣接ＰＥのＭＢＦの内容の一部または全部を自ＰＥのＲＢＵＦにコピーし、かつ、ＲＣＮＴを１だけデクリメントするデータ取込み動作を制御する。【００５２】
５）各ＰＥは、ＳＳＦＴ命令に従い、隣接ＰＥのＭＢＦの内容の一部または全部を自ＰＥのＲＢＵＦにコピーした場合は、自ＰＥ上のＲＣＮＴをＯＮにする動作を行う。【００５３】
６）各ＰＥは、ＳＳＦＴ命令に従い、データ転送動作に参加するＰＥのＲＣＮＴのうち１つでも非ゼロのものが存在すればＯＮ、存在しなければＯＦＦとなるように、ＣＰ上に存在するＦＦＬＧを更新する動作を行う。【００５４】
７）各ＰＥは、ＳＳＦＴ命令に従い、データ転送動作に参加するＰＥのＳＣＮＴのうち１つでも非ゼロのものが存在すればＯＮ、存在しなければＯＦＦとなるように、ＣＰ上に存在するＦＦＬＧを更新する動作を行う。【００５５】
８）各ＰＥは、ＳＳＦＴ命令に従い、データ転送動作に参加するＰＥのＲＣＮＴおよびＳＣＮＴのうち１つでも非ゼロのものが存在すればＯＮ、存在しなければＯＦＦとなるように、ＣＰ上に存在するＦＦＬＧを更新する動作を行う。【００５６】
９）各ＰＥは、ＳＳＦＴ命令に従い、ＭＯＤＥの格納値がＯＦＦの場合は、上記１）〜８）のいずれかの動作を行い、ＭＯＤＥの格納値がＯＮの場合は、自ＰＥのＲＣＮＴが隣接ＰＥとのＤＩＳＴよりも小さくかつＲＦＬＧがＯＦＦであれば、隣接ＰＥのＭＢＦの内容の一部または全部を自ＰＥのＲＢＵＦにコピーし、ＲＦＬＧをＯＦＦかつＲＣＮＴをゼロに変更し、ＲＣＮＴがＤＩＳＴ以上ならばＲＣＮＴをＤＩＳＴだけデクリメントするデータ取込み動作を行う。【００５７】
従って、本実施の形態によれば、次の効果が得られる。【００５８】
第１の効果は、相異なる距離に位置するＰＥ間で連続した複数のデータ転送を行う必要がある場合に、一回のデータ転送の度にデータ転送動作に参加する全ＰＥによる転送の終了を待ち合わせる必要がある従来方式の場合と比べ、より効率よくネットワークを利用できることである。【００５９】
その理由は、上記の「発信元ＩＤ方式」または「宛先ＩＤ方式」を利用すれば、個々のＰＥは空いているＭＢＦがありかつ自分に転送したいデータがまだあれば、すぐさま有効な送信データを自律的に当該ＭＢＦに投入できるようになるので、受信済みとなった転送データや無効転送データで占められているバッファやＭＢＦ間を繋げるＰＥ間結線のサイクル数を最小限に抑えることができるようになるためである。【００６０】
第２の効果は、第１の効果を有しつつ、相異なる距離に位置するＰＥ間データ転送を１回だけ行う必要がある場合であっても、従来方式と同程度の処理効率を実現できることにある。【００６１】
その理由は、本発明の構成を利用した場合でも、単発のデータ転送にはもっともＭＢＦのビット幅利用効率が高いカウンタ方式を用いた転送を行うことができるためである。【００６２】
第３の効果は、発信側ＰＥが受信側ＰＥのＩＤを保持していれば「宛先ＩＤ方式」、そうではなく受信側ＰＥが発信側ＰＥのＩＤ情報を保持していれば「発信元ＩＤ方式」、そして単発のデータ転送でありかつ受信側ＰＥが発信側ＰＥの自分からみた格子距離情報を保持していれば「カウンタ方式」、というように送受信情報の存在位置状況に合わせたデータ転送方式をプログラム変更により選択できるようになる機能を、少ない追加ハードウェア資源で実現できることである。【００６３】
その理由は、ＳＳＦＴ命令を明示的に発行することで、１単位の転送動作を実施するように構成されており、そのため各記憶手段をＰＥ毎に既存の記憶手段を流用して実現でき、かつそうした場合でも資源利用衝突の回避は容易であり、したがってバックグランド動作で個々の方式をそれぞれ実現した場合と比べ、簡単な制御回路のみの追加で実現できるようになるためである。【００６４】
次に、図面を参照して、具体的な実施例について説明する。
【実施例１】
【００６５】
まず、本発明の第１の実施例について説明する。【００６６】
図１及び図２を参照すると、本実施例に係るＳＩＭＤ型プロセッサアレイシステムは、複数個のプロセッシングエレメント（以下「ＰＥ」）１０１を有するプロセッシングエレメントアレイ（以下「ＰＥアレイ」）１００と、ＰＥアレイ１００にＰＥ間データシフト命令（以下「ＳＳＦＴ命令」）を含む複数の命令を供給する制御プロセッサ（以下「ＣＰ」）１１０とを備える。【００６７】
ＰＥアレイ１００内の各ＰＥ１０１は、互いに隣接する２つのＰＥ１０１同士が、ネットワークまたはＰＥ間結合線１２０によって、ＰＥ１０１毎に存在する転送バッファ（転送データ記憶部）（以下「ＭＢＦ」）１２１を介し、互いに接続されている。【００６８】
図２を参照すると、ＰＥ１０１は、一般的に存在する構成要素として、演算を行う演算器（ＡＬＵ／Ｍｕｌｔ）２２０、汎用レジスタセットや条件フラグ群２２２、データ格納用の数ＫＢ程度の大容量ローカルメモリ（以下「ＩＭＥＭ」）２２１等を備える。【００６９】
これらの構成要素以外に、ＰＥ１０１は、ＳＳＦＴ命令実行の際に用いる記憶手段として、ＭＢＦ１２１のほか、モードレジスタ（以下「ＭＯＤＥ」）２０７、送信カウンタ（以下「ＳＣＮＴ」）２０２、受信カウンタ（以下「ＲＣＮＴ」）２０３、受信バッファ（以下「ＲＢＵＦ」）２０４、送信バッファ（以下「ＳＢＵＦ」）２０５、受信成立フラグ（以下「ＲＦＬＧ」）２０８、送信成立フラグ（以下「ＳＦＬＧ」）２０９、ＩＤバッファ（以下「ＩＤＢ」）２１０を有する。これらの各記憶手段は、前述した既存の汎用レジスタや条件フラグ群２２２を流用して構成される。【００７０】
ＭＢＦ１２１の内容は、図２に示すように、「ＤＡＴＡ」、「ＩＤ」、「ＶＡＬＩＤ」の３つのフィールドに分類される。これら３つのフィールドは、まとめて１つの「ＤＡＴＡ」フィールド（＝「ＡＬＬＤＡＴＡ」フィールド）とみなすことも可能である。図中２の符号１２１１は、隣接ＰＥ１０１のＭＢＦを示している。【００７１】
上記構成要素に加え、ＰＥ１０１は、ネットワーク制御回路（以下「ＮＣＴＬ」）２０１を有する。ＮＣＴＬ２０１は、隣接ＰＥ１０１のＭＢＦ１２１１から入力される転送データ２００と、ＭＯＤＥ２０７、ＲＣＮＴ２０３、ＳＣＮＴ２０２、ＲＢＵＦ２０４、ＳＢＵＦ２０５、ＩＤＢ２１０の各記憶手段の格納値をそれぞれ入力とし、ＣＰ１１０がＳＳＦＴ命令を発行した場合の各記憶手段への更新値と、１ビットの「０」又は「１」のステータス値（以下ＳＴＡＴＵＳ」）２０６とを出力する。【００７２】
ＳＴＡＴＵＳ２０６は、データ転送動作に参加する全ＰＥ１０１から出力され、ＣＰ１１０の前段に配置されたＯＲ回路４２０に入力される。ＯＲ回路４２０は、全ＰＥ１０１からのＳＴＡＴＵＳ２０６の論理和を演算し、ＳＴＡＴＵＳ２０６の値がいずれも「０」のときに「０」、それ以外のときに「１」を出力する。その出力は、ＣＰ１１０に入力され、ＣＰ１１０上のデータ転送中フラグ（以下「ＦＦＬＧ」）２１１の更新値として利用される。【００７３】
ここで、図３を参照して、本実施例の動作を説明する。【００７４】
図３を参照すると、ＮＣＴＬ２０１は、ネットワーク制御信号生成用の組合せ回路部３０１で構成されている。同図に示す組合せ回路部３０１は、第１〜第５ＡＮＤ回路４１１〜４１５、第１〜第４ＯＲ回路４２１〜４２４、第１〜第５マルチプレクサ（データセレクタ）４３１〜４３５、第１〜第４判定回路４４１〜４４４、第１及び第２減算回路４５１、４５２を有している。なお、同図に示す組合せ回路部３０１の構成は、あくまで一例であり、同等の機能を実現可能な構成であれば、いずれのものでも適用可能である。【００７５】
第１判定回路４４１は、隣接ＰＥ１０１の隣接ＭＢＦ１２１１の転送データ２００のうちの「ＩＤ」フィールドの値と、ＩＤＢ２１０の値Ｓ４とをそれぞれ入力とし、両入力の等値性（「ＩＤ」フィールドの値がＩＤＢ２１０の値Ｓ４と等しいか否か）を判定し、その結果、両入力が等しい場合に「１」、等しくない場合に「０」を出力する。その出力は、第１ＡＮＤ回路４１１の入力となる。【００７６】
第２判定回路４４２は、ＲＣＮＴ２０３の値Ｓ２を入力とし、Ｓ２とゼロとの等値性（ＲＣＮＴ２０３の値Ｓ２が非ゼロか否か）を判定し、その結果、Ｓ２が非ゼロの場合に「１」、ゼロの場合に「０」を出力する。その出力は、第２ＡＮＤ回路４１２の入力と、第２ＯＲ回路４２２との入力となる。【００７７】
第３判定回路４４３は、ＲＣＮＴ２０３の値Ｓ２をそれぞれ入力とし、Ｓ２とＤＩＳＴの値との大小関係（ＲＣＮＴ２０３の値Ｓ２がＤＩＳＴの値より小さいか否か）を判定し、その結果、Ｓ２がＤＩＳＴの値より小さい場合に「１」、小さくない場合に「０」を出力する。その出力は、第３ＡＮＤ回路４１３の入力となる。【００７８】
第４判定回路４４４は、ＳＣＮＴ２０２の値Ｓ３をそれぞれ入力とし、Ｓ３とゼロとの等値性（ＳＣＮＴ２０２の値Ｓ３が非ゼロか否か）を判定し、その結果、Ｓ３が非ゼロの場合に「１」、ゼロの場合に「０」を出力する。その出力は、第２ＯＲ回路４２２の入力となる。【００７９】
第１ＡＮＤ回路４１１は、第１判定回路４４１の出力と、ＭＯＤＥ２０７の値Ｓ１を反転させた値とをそれぞれ入力とし、両入力の論理積を演算し、両入力がいずれも「１」のときに「１」、それ以外のときに「０」を出力する。その出力は、第２ＡＮＤ回路４１２の入力となる。【００８０】
第２ＡＮＤ回路４１２は、第２判定回路４４２の出力と、第１ＡＮＤ回路４１１の出力とをそれぞれ入力とし、両入力の論理積を演算し、両入力がいずれも「１」のときに「１」、それ以外のときに「０」を出力する。その出力は、第１、第３、第４ＯＲ回路４２１、４２３、４２４の各入力となる。【００８１】
第３ＡＮＤ回路４１３は、第３判定回路４４３の出力と、ＭＯＤＥ２０７の値Ｓ１とをそれぞれ入力とし、両入力の論理積を演算し、両入力がいずれも「１」のときに「１」、それ以外のときに「０」を出力する。その出力は、第４ＡＮＤ回路４１４の入力と、第４ＯＲ回路４２４の入力となる。【００８２】
第４ＡＮＤ回路４１４は、第３ＡＮＤ回路４１３の出力を反転させた値と、ＭＯＤＥ２０７の値Ｓ１とをそれぞれ入力とし、両入力の論理積を演算し、両入力がいずれも「１」のときに「１」、それ以外のときに「０」を出力する。その出力は、第３ＯＲ回路４２３の入力と、第４マルチプレクサ４３４の選択制御入力となる。【００８３】
第５ＡＮＤ回路４１５は、第４判定回路４４４の出力と、第１ＯＲ回路４２１の出力とをそれぞれ入力とし、両入力の論理積を演算し、両入力がいずれも「１」のときに「１」、それ以外のときに「０」を出力する。その出力は、第１及び第３マルチプレクサ４３１、４３３の各選択制御入力と、ＳＦＬＧ２０９の更新値３０３となる。【００８４】
第１ＯＲ回路４２１は、隣接ＰＥ１０１の隣接ＭＢＦ１２１１の転送データ２００のうちの「ＶＡＬＩＤ」フィールドの値と、第２ＡＮＤ回路４１２の出力とをそれぞれ入力とし、両入力の論理和を演算し、両入力がいずれも「０」のときに「０」を出力し、それ以外のときに「０」を出力する。その出力は、第５ＡＮＤ回路４１５の入力となる。【００８５】
第２ＯＲ回路４２２は、第２判定回路４４２の出力と、第４判定回路４４４の出力とをそれぞれ入力とし、両入力の論理和を演算し、両入力がいずれも「０」のときに「０」を出力し、それ以外のときに「０」を出力する。その出力は、ＳＴＡＴＵＳ２０６となる。【００８６】
第３ＯＲ回路４２３は、第２ＡＮＤ回路４１２の出力と、第４ＡＮＤ回路４１４の出力とをそれぞれ入力とし、両入力の論理和を演算し、両入力がいずれも「０」のときに「０」を出力し、それ以外のときに「０」を出力する。その出力は、マルチプレクサ４３５の選択制御入力となる。【００８７】
第４ＯＲ回路４２４は、第２ＡＮＤ回路４１２の出力と、第３ＡＮＤ回路４１３の出力とをそれぞれ入力とし、両入力の論理和を演算し、両入力がいずれも「０」のときに「０」を出力し、それ以外のときに「０」を出力する。その出力は、第２マルチプレクサ４３２の選択制御入力と、ＲＦＬＧ２０８の更新値３０３となる。【００８８】
第１マルチプレクサ４３１は、隣接ＰＥ１０１の隣接ＭＢＦ１２１１の転送データ２００と、ＳＢＵＦ２０５の値Ｓ５とをそれぞれ入力とし、第５ＡＮＤ回路４１５の出力である選択制御入力の値が「０」のときにＳ５、「１」のときに転送データ２００をそれぞれ選択して出力する。その出力は、ＭＢＦ１２１の更新値３０５となる。【００８９】
第２マルチプレクサ４３２は、隣接ＰＥ１０１の隣接ＭＢＦ１２１１の転送データ２００と、ＲＢＵＦ２０４の値Ｓ５とをそれぞれ入力とし、ＯＲ回路４２４の出力である選択制御入力の値が「０」のときにＳ６、「１」のときに転送データ２００をそれぞれ選択して出力する。その出力は、ＲＢＵＦ２０４の更新値３０３となる。【００９０】
第３マルチプレクサ４３３は、第１減算回路４５１の出力と、ＳＣＮＴ２０２の値Ｓ３とをそれぞれ入力とし、第５ＡＮＤ回路４１５の出力である選択制御入力の値が「０」のときにＳ３、「１」のときに第１減算回路４５１の出力をそれぞれ選択して出力する。その出力は、ＳＣＮＴ２０２の更新値３０５となる。【００９１】
第４マルチプレクサ４３４は、「１」と、ＤＩＳＴの値とをそれぞれ入力とし、第４ＡＮＤ回路４１４の出力である選択制御入力の値が「０」のときに「１」、「１」のときにＤＩＳＴの値をそれぞれ選択して出力する。その出力は、第２減算回路４５２の入力となる。【００９２】
第５マルチプレクサ４３５は、第２減算回路４５２の出力と、ＲＣＮＴ２０３の値Ｓ２とをそれぞれ入力とし、第３ＯＲ回路４２３の出力である選択制御入力の値が「０」のときにＳ２、「１」のときに第２減算回路４５２の出力をそれぞれ選択して出力する。その出力は、ＲＣＮＴ２０３の更新値３０４となる。【００９３】
第１減算回路４５１は、「１」と、ＳＣＮＴ２０２の値Ｓ３とをそれぞれ入力とし、Ｓ３から「１」を減算し、その減算結果を出力する。その出力は、第３マルチプレクサ４３３の入力となる。【００９４】
第２減算回路４５２は、第４マルチプレクサ４３４の出力（「１」又は「ＤＩＳＴ」）と、ＲＣＮＴ２０３の値Ｓ２とをそれぞれ入力とし、Ｓ２から第４マルチプレクサ４３４の出力を減算し、その減算結果を出力する。その出力は、第５マルチプレクサ４３５の入力となる。【００９５】
上記構成により、組合せ回路部３０１は、隣接ＰＥ１０１のＭＢＦ１２１１、および自ＰＥ１０１の幾つかの記憶手段の格納値を入力とし、ＣＰ１１０がＳＳＦＴ命令３０２を発行するサイクル毎にＭＳＢ１２１への更新値３０５と、ＲＢＵＦ２０４、ＲＦＬＧ２０８、ＳＦＬＧ２０９への各更新値３０３と、ＲＣＮＴ２０３、ＳＣＮＴ２０２への各更新値３０４とをそれぞれ生成し、これらの更新値３０３〜３０５により各記憶手段の値を更新する動作を制御する。組合せ回路部３０１により生成される各記憶手段の更新値、並びにその更新タイミングをまとめると、以下の通りとなる。【００９６】
１）ＭＢＦ１２１の更新
組合せ回路３０１は、「ＭＯＤＥ２０７の値Ｓ１が非カウンタ方式を指定し（Ｓ１＝「０」）、かつ、ＳＣＮＴ２０２の値Ｓ３が非ゼロであり（第４判定回路４４４の出力＝「１」）、かつ、隣接ＭＢＦ１２１１の有効無効を示す「ＶＡＬＩＤ」フィールドの値が「無効」を示す値を持つ（第１ＯＲ回路４２１の出力＝「１」）」場合、あるいは「ＭＯＤＥ２０７の値Ｓ１が非カウンタ方式を指定し（Ｓ１＝「０」）、かつ、ＳＣＮＴ２０２の値Ｓ３が非ゼロであり（第４判定回路４４４の出力＝「１」）、かつ、ＲＢＵＦ２０４を隣接ＭＢＦ１２１１の内容２００で更新した」場合（第５ＡＮＤ回路４１５の出力＝第１マルチプレクサ４３１の選択制御入力＝「１」）に、ＳＢＵＦ２０５の内容Ｓ５を更新値３０５、それ以外の場合（第５ＡＮＤ回路４１５の出力＝第１マルチプレクサ４３１の選択制御入力＝「０」）に、隣接ＭＢＦ１２１１の内容２００を更新値３０５として、ＭＢＦ１２１の内容を更新する。【００９７】
２）ＲＢＵＦ２０４の更新
組合せ回路３０１は、「ＭＯＤＥ２０７の値Ｓ１が非カウンタ方式を指定し（Ｓ１＝「０」）、かつ、ＲＣＮＴ２０２の値Ｓ２が非ゼロであり（第２判定回路４４２の出力＝「１」）、かつ、ＩＤＢ２１０の値Ｓ４と隣接ＭＢＦ１２１１の「ＩＤ」フィールドとが一致する（第１判定回路４４１の出力＝「１」、第１ＡＮＤ回路４１１の出力＝「１」）」場合、あるいは「ＭＯＤＥ２０７の値Ｓ１がカウンタ方式を指定し（Ｓ１＝「１」）、かつ、ＲＣＮＴ２０３の値Ｓ２がＰＥ間ネットワークでの最小格子距離（以下「ＤＩＳＴ」）よりも小さい（第３判定回路４４３の出力＝「１」）」場合（第４ＯＲ回路４２４の出力＝第２マルチプレクサ４３２の選択制御入力＝「１」）に、隣接ＭＢＦ１２１１の内容２００を更新値３０３として、ＲＢＵＦ２０４の内容を更新する。【００９８】
３）ＲＣＮＴ２０３の更新
組合せ回路３０１は、「ＭＯＤＥ２０７の値Ｓ１が非カウンタ方式を指定し（Ｓ１＝「０」）、かつ、ＲＢＵＦ２０４の内容を隣接ＭＢＦ１２１１の内容２００で更新」した場合（第４ＯＲ回路４２４の出力＝「１」、第４ＡＮＤ回路４１４の出力＝第５マルチプレクサ４３５の選択制御入力＝「０」）に、ＲＣＮＴ２０３の値Ｓ２から「１」減算した値（ＲＣＮＴ−１：第２減算回路４５２の出力）を更新値３０４、「ＭＯＤＥ２０７の値Ｓ１がカウンタ方式を指定し（Ｓ１＝「１」）、かつ、ＲＣＮＴ２０３の値Ｓ２がＤＩＳＴ以上である（第３判定回路４４３の出力＝「１」」場合（第３ＡＮＤ回路４１３の出力＝「１」、第４ＡＮＤ回路４１４の出力＝第５マルチプレクサ４３５の選択制御入力＝「１」）に、ＲＣＮＴ２０３の値Ｓ２からＤＩＳＴの値を減算した値（ＲＣＮＴ−ＤＩＳＴ：第２減算回路４５２の出力）を更新値３０４として、それぞれＲＣＮＴ２０３の値を更新する。【００９９】
４）ＳＣＮＴ２０２の更新
組合せ回路３０１は、「ＭＢＦ１２１の内容をＳＢＵＦ２０５の内容Ｓ５で更新した」場合（第５ＡＮＤ回路４１５の出力＝第３マルチプレクサ４３３の選択制御入力＝「１」）に、ＳＣＮＴ２０２の値Ｓ３から１減算した値（ＳＣＮＴ−１：第１減算回路４５１の出力）を更新値３０４として、ＳＣＮＴ２０２の値を更新する。【０１００】
５）ＲＦＬＧ２０８の更新
組合せ回路３０１は、「ＲＢＵＦ２０４の内容を隣接ＭＢＦ１２１１の内容２００で更新した」場合（第４ＯＲ回路の出力＝第２マルチプレクサの選択制御入力＝「１」）に「１」を更新値、それ以外の場合（第４ＯＲ回路の出力＝第２マルチプレクサの選択制御入力＝「１」）に「０」を更新値３０３として、ＲＦＬＧ２０８の値を更新する。【０１０１】
６）ＳＦＬＧ２０９の更新
組合せ回路３０１は、「ＭＢＦ１２１の内容をＳＢＵＦ２０５の内容Ｓ５で更新した」場合（第５ＡＮＤ回路４１５の出力＝第１マルチプレクサ４３１の選択制御入力＝「１」）に「１」を更新値、それ以外の場合（第５ＡＮＤ回路４１５の出力＝第１マルチプレクサ４３１の選択制御入力＝「０」）に「０」を更新値３０３として、ＳＦＬＧ２０９の値を更新する。【０１０２】
７）ＦＦＬＧ２１１の更新
組合せ回路３０１は、「データ転送動作に参加する全ＰＥ１０１のＲＣＮＴ２０３の値Ｓ２とＳＣＮＴ２０２の値Ｓ３のいずれかが非ゼロである（第２ＯＲ回路４２２の出力＝ＳＴＡＴＵＳ２０６の値＝「１」）」場合に「１」を更新値、それ以外の場合（第２ＯＲ回路４２２の出力＝ＳＴＡＴＵＳ２０６の値＝「０」）に「０」を更新値として、ＯＲ回路４２０を介して、ＦＦＬＧ２１１の値を更新する。【０１０３】
次に、本実施例の効果について説明する。【０１０４】
本実施例によれば、ＳＩＭＤ型プロセッサアレイシステムにおいて、全ＰＥ１０１が相異なる距離に位置するＰＥ１０１間での一回のみのデータ転送を行う場合であり、かつ、送信元ＰＥ１０１までの格子距離が受信側に既知の場合では、結合線１２０およびＭＢＦ１２１の利用効率のよい「カウンタ方式」を利用できる。それ以外の場合は、ネットワーク稼働率を高められる、つまり、時間方向で結合線１２０およびＭＢＦ１２１の利用効率がよい、「発信元ＩＤ方式」あるいは「宛先ＩＤ方式」を利用した形でのデータ転送を利用できる。【０１０５】
一方、バックグラウンド動作ではなく、明示的にプログラム制御によりＳＳＦＴ命令を繰り返し発行することで前記効果を実現していることから、本実施例で必要な各記憶手段であるバッファ類は、一般的にＰＥ１０１が既に有する汎用レジスタ類の一部を流用して実現できる。そのため、新たに追加すべき構成要素は、これらのバッファ類の更新タイミングの制御および更新値の生成を行う簡単な組合せ回路だけで済む。【０１０６】
以上から、本実施例は、低ハードウェアコストかつ効率的でかつ柔軟性の高い、相異なる距離に位置するＰＥ１０１間でのデータ転送機能を実現できるという効果が期待できる。【０１０７】
なお、各ＰＥ１０１の受信データ数（＝ＲＣＮＴ値）よりも送信データ数（＝ＳＣＮＴ値）が少ない場合は、ＳＣＮＴ２０２に実際よりも大きい値で、ＲＣＮＴ２０３に等しい値をセットしてもよい。この場合、ＲＣＮＴ２０３の値からＳＣＮＴ２０２の値を減算した値（ＲＣＮＴ−ＳＣＮＴ）の分だけ送信データが余分に必要となる。この場合、ＩＭＥＭ２２１に「ＶＡＬＩＤ」フィールドの値が無効を示す送信データを用意すればよい。そうすると、本来送信すべきデータが存在しない場合でも、受信動作が起きると、ＩＭＥＭ２２１に用意した無効送信データが代わりに自ＭＢＦ１２１に格納される。これにより、送信データ数が多い他のＰＥ１０１によるデータ送信機会を増やすことができる。なお、「送信元ＩＤ方式」の場合は、そのような動作を行わないようにすればよい。そうすれば、同じ送信元からの同一データを多数のＰＥ１０１に放送できるようになるという利点も得られる。
【実施例２】
【０１０８】
次に、本発明の第２の実施例について説明する。なお、第１の実施例と同様の構成要素については同一の符号を付し、その説明を省略する。【０１０９】
本実施例では、受信のみしか行わないＰＥ１０１群をハードウェア設計時に特定できる場合、それらのＰＥ１０１に対しては、データ送信を行わない形で実施することができる。この場合、ＳＣＮＴ２０２、ＳＢＵＦ２０５、ＳＦＬＧ２０９は不要となる。ＮＣＴＬ２０１は、ＣＰ１１０によりＳＳＦＴ命令３０２が発行されたサイクルに、下記のようにＭＢＦ１２１、ＲＢＵＦ２０４、ＲＣＮＴ２０３、ＲＦＬＧ２０８、ＦＦＬＧ２１１の更新タイミングの制御および更新値の生成する。【０１１０】
１）ＭＢＦ１２１の更新
ＮＣＴＬ２０１は、隣接ＭＢＦ１２１１の内容を更新値として、ＭＢＦ１２１を更新する。【０１１１】
２）ＲＢＵＦ２０４の更新
ＮＣＴＬ２０１は、「ＭＯＤＥ２０７の値Ｓ１が非カウンタ方式を指定し、かつ、ＲＣＮＴ２０３の値が非ゼロであり、かつ、ＩＤＢ２１０の値と隣接ＭＢＦ１２１１の「ＩＤ」フィールドの値とが一致する」場合、あるいは「ＭＯＤＥ２０７の値Ｓ１がカウンタ方式を指定し、かつ、ＲＣＮＴ２０３の値Ｓ２がＰＥ間ネットワークでの最小格子距離ＤＩＳＴよりも小さい」場合に、隣接ＭＢＦ１２１１の内容２００を更新値３０５として、ＲＢＵＦ２０４の内容Ｓ６を更新する。【０１１２】
３）ＲＣＮＴ２０３の更新
ＮＣＴＬ２０１は、「ＭＯＤＥ２０７の値Ｓ１が非カウンタ方式を指定し、かつ、ＲＢＵＦ２０４の内容を隣接ＭＢＦ１２１１の内容で更新した」場合にＲＣＮＴ２０３の値から１減算した値（ＲＣＮＴ−１）を更新値３０４、「ＭＯＤＥ２０７の値Ｓ１がカウンタ方式を指定し、かつ、ＲＣＮＴ２０３の値Ｓ２がＤＩＳＴ以上」の場合にＲＣＮＴ２０３の値からＤＩＳＴの値を減算した値（ＲＣＮＴ−ＤＩＳＴ）を更新値３０４として、ＲＣＮＴ２０３の値Ｓ３を更新する。【０１１３】
４）ＲＦＬＧ２０８の更新
ＮＣＴＬ２０１は、「ＲＢＵＦ２０４の内容が隣接ＭＢＦ１２１１の内容２００で更新された」場合に「１」を更新値３０３、それ以外の場合に「０」を更新値３０３として、ＲＦＬＧ２０８の値を更新する。【０１１４】
５）ＦＦＬＧ２１１の更新
ＮＣＴＬ２０１は、「データ転送動作に参加する全ＰＥ１０１のＲＣＮＴ２０３とＳＣＮＴ２０２のいずれかが非ゼロである」場合に「１」を更新値、それ以外の場合に「０」を更新値として、ＦＦＬＧ２１１を更新する。
【実施例３】
【０１１５】
次に、本発明の第３の実施例について説明する。なお、第１の実施例と同様の構成要素については同一の符号を付し、その説明を省略する。【０１１６】
本実施例では、ＳＣＮＴ２０２とＲＣＮＴ２０３のいずれかを無くす。例えば、ＲＣＮＴ２０３だけを残し、ＳＣＮＴ２０２をＲＣＮＴ２０３と常に同値と見なして利用する。これにより、ＮＣＴＬ２０１の構成を若干簡略化できる。【０１１７】
ただし、本来の送信したいデータ数が受信データ数よりも少ない場合は、運用上、「ＶＡＬＩＤ」フィールドの値が無効を示す送信データを不足分だけの個数、余分にＩＭＥＭ２２１上に用意しておく必要が発生する場合がある。同様に、本来の受信したいデータ数が送信データ数よりも少ない場合では、余分な受信データを格納しておく場所をＩＭＥＭ２２１上に用意しておく必要が発生する場合がある。
【実施例４】
【０１１８】
次に、本発明の第４の実施例について説明する。なお、第１の実施例と同様の構成要素については同一の符号を付し、その説明を省略する。【０１１９】
本実施例では、ＭＢＦ１２１の更新制御および更新値生成に関するＮＣＴＬ２０１の構成を以下のように変更する。こうすることで、送信したいデータ数が受信データ数よりも少ない場合でも、受信発生すなわちＲＢＵＦ２０４への更新が発生すると、自動的にＭＢＦ１２１に無効送信データが格納されるようになる。これにより、ＩＭＥＭ２２１上に無効送信データを予め格納しておくための場所が不要となる。【０１２０】
１）ＭＢＦ１２１の更新
ＮＣＴＬ２０１は、「ＭＯＤＥ２０７の値Ｓ１が非カウンタ方式を指定し、かつ、ＳＣＮＴ２０２が非ゼロであり、かつ、隣接ＭＢＦ１０１の有効無効を示す「ＶＡＬＩＤ」フィールドの値が無効を示す値を持つ」場合、あるいは「ＭＯＤＥ２０７の値Ｓ１が非カウンタ方式を指定し、かつ、ＳＣＮＴ２０２が非ゼロであり、かつ、ＲＢＵＦ２０４の内容を隣接ＭＢＦ１２１１の内容で更新した」場合に、ＳＢＵＦ２０５の内容を更新値３０５、「ＭＯＤＥ２０７の値Ｓ１が非カウンタ方式を指定し、かつ、ＳＣＮＴ２０２がゼロであり、かつ、ＲＢＵＦ２０４の内容を隣接ＭＢＦ１２１１の内容で更新した」場合に、無効を示す任意の送信データを更新値３０５、それ以外の場合に、隣接ＭＢＦ１２１１の内容を更新値３０５として、ＭＢＦ１２１を更新する。
【実施例５】
【０１２１】
次に、本発明の第５の実施例について説明する。なお、第１の実施例と同様の構成要素については同一の符号を付し、その説明を省略する。【０１２２】
本実施例では、ＲＢＵＦ２０４の更新制御および更新値生成に関するＮＣＴＬ２０１の構成を変更する。こうすることで、送信したいデータ数が受信データ数よりも少ない場合でも、受信の発生すなわちＲＢＵＦ２０４への更新が発生すると、自動的にＭＢＦ１２１に無効送信データが格納されるようになる。これにより、ＩＭＥＭ２２１上に無効送信データを格納しておくための場所を不要にでき、ＩＭＥＭ２２１のメモリ領域の必要サイズを削減できる。
【実施例６】
【０１２３】
次に、本発明の第６の実施例について説明する。なお、第１の実施例と同様の構成要素については同一の符号を付し、その説明を省略する。【０１２４】
本実施例では、ＭＢＦ１２１の全内容ではなく「ＤＡＴＡ」フィールドの内容のみをＲＢＵＦ２０４の更新値として利用することもできるように、ＲＢＵＦ２０４の更新値生成に関するＮＣＴＬ２０１の構成を追加変更する。これにより、受信データを格納するためにとっておくべきＩＭＥＭ２２１のメモリ領域の必要サイズを削減できる。
【実施例７】
【０１２５】
次に、本発明の第７の実施例について説明する。なお、第１の実施例と同様の構成要素については同一の符号を付し、その説明を省略する。【０１２６】
本実施例では、「送信元ＩＤ方式」を利用する場合に好適となるように、送信データの全フィールドではなく、「ＤＡＴＡ」フィールドのみをＩＭＥＭ２２１に格納する。そして、ＳＢＵＦ２０５を更新する際に、ＩＭＥＭ２２１から読み出される「ＤＡＴＡ」フィールド本体に加え、自動的に「ＩＤ」フィールドに自ＰＥのＩＤを、有効を示す値を「ＶＡＬＩＤ」フィールドに充填してから、ＳＢＵＦ２０５に格納することもできるように、ＮＣＴＬ２０１の構成を追加変更する。これにより、「送信元ＩＤ方式」の場合に送信データを格納するために必要となるＩＭＥＭ２２１のメモリ領域のサイズを削減できる。
【実施例８】
【０１２７】
次に、本発明の第８の実施例について説明する。なお、第１の実施例と同様の構成要素については同一の符号を付し、その説明を省略する。【０１２８】
本実施例に係るＳＩＭＤ型プロセッサアレイシステムは、ＣＰ１１０の命令セットとして、前述のＳＳＦＴ命令以外に、条件分岐命令（以下「ＢＲＣ命令」）、条件付ストア命令（以下「ＳＴＣ命令」））、条件付ロード命令（以下「ＬＤＣ命令」）を含む。【０１２９】
以下、相異なる距離に位置するＰＥ１０１間で、１）一回のみのデータ転送を行う場合と、２）連続した複数のデータ転送を行う場合とに分けて説明する。【０１３０】
１）一回のみのデータ転送を行う場合（図４〜図７）
まず、相異なる距離に位置するＰＥ１０１間での一回のみのデータ転送を行う場合では、例えば図４のプログラムコードで示される動作を実行する。図４に示すプログラムコードの記述において、”．．”は、その両隣の命令が同一サイクルに動作することを指定し、”％”は、条件付命令の場合に、どの条件フラグを参照するかを指定し、”：”で終わる文字列は、当該文字列の出現位置の番地を示し、分岐命令のオペランドとして同ラベルを指定した場合は、同番地を指定することを意味する。また、”／＊”と「＊／」で囲まれた部分は、コメントとする。【０１３１】
ＣＰ１１０は、図４に示すプログラムコードで示される動作を実行する場合、１行目の”／＊番地Ａ＊／”に記述されたＳＳＦＴ命令を実行し、その結果、ＦＦＬＧ２１１の値が「１」であれば、２行目の”／＊番地Ａ＋１＊／”に記述されたＢＲＣ命令の実行に際し分岐が成立し、次サイクルには３行目の”／＊番地Ａ＋３＊／”ではなく、１行目の”／＊番地Ａ＊／”へ飛ぶように動作する。一方、ＦＦＬＧ２１１の値が「０」であれば、分岐を行わずに３行目の”／＊番地Ａ＋３＊／”へ進み、ループから抜け出す。また、”．．”で併記されているため、ＢＲＣ命令の実行と共に”／＊番地Ａ＋２＊／”に記述されたＳＳＦＴ命令も実行される。したがって、ループから抜け出すまでの間、サイクル毎にＳＳＦＴ命令が実行されることになる。【０１３２】
次に、図４に示すプログラムコードで示される動作を実行した場合について説明する。【０１３３】
図５は、初期状態に各ＰＥ１０１のＭＢＦ１２１に格納されている内容について表記したものである。図中の例に示すＭＢＦ１２１では、「ＤＡＴＡ」フィールドのビット数をＸビット、「ＩＤ」フィールドのビット数をＰＥ１０１の数が８に対応して３ビット、「ＶＡＬＩＤ」フィールドのビット数を１ビットとしている。この例では、「ＶＡＬＩＤ」フィールドの値が「０」の場合は、黒く塗りつぶして表示し、「１」の場合は空欄のままとしている。【０１３４】
１−１）宛先ＩＤ方式（図６）
図６を参照して、ＰＥ１０１の数が８（ＰＥ＝０〜７）の場合を例に、「宛先ＩＤ方式」を用いて一度だけ相異なる距離に位置するＰＥ１０１間でのデータ転送を行う場合の動作について説明する。【０１３５】
図６中の左側に示す各ＰＥ１０１（ＰＥ＝０〜７）の０サイクル目（ｃｙｃｌｅ＝０）の初期状態では、ＭＢＦ１２１の「ＤＡＴＡ」、「ＩＤ」、「ＶＡＬＩＤ」の各フィールドに格納されている初期値と、ＲＣＮＴ２０３及びＲＢＵＦ２０４にそれぞれ格納されてる初期値（ＲＣＮＴ、ＲＢＵＦ）とをそれぞれ示している。この例では、各ＰＥ１０１は１回だけデータを受信するため、ＲＣＮＴ２０３の初期値は「１」、ＲＢＵＦ２０４の初期値は、任意を意味する「−」となっている。【０１３６】
この初期状態から、図４に示すプログラムコードの記述に従い、ＣＰ１０１がＳＳＦＴ命令を発行して各ＰＥ１０１の動作を制御することで、各ＰＥ１０１のＭＢＦ１２１、ＲＣＮＴ２０３、ＲＢＵＦ２０４の各値は、図６中の右側に示すように０サイクル目〜６サイクル目（ｃｙｃｌｅ＝１〜６）と、１サイクル毎に変化していく。【０１３７】
その結果、６サイクル目の動作後には、全ＰＥ１０１のＲＣＮＴ２０３がゼロとなる。このため、それ以降に図４に示すプログラムコードに従いＢＲＣ命令を実行した際には、番地Ａへ分岐せず、番地Ａ＋３へ実行が移ることでループから抜け出る。その際に各ＰＥ１０１のＲＢＵＦ２０４には、図６中の左側の初期状態において、自分が宛先として指定された各ＰＥ１０１上の、ＭＢＦ１２１の全体（図中の例では、スペース不足のため「ＤＡＴＡ」フィールド内のデータのみを表示している。）が格納されていることがわかる。【０１３８】
例えば、図６中の左側の初期状態（ｃｙｃｌｅ＝０）では、０番のＰＥ１０１（ＰＥ＝０）は、ＭＢＦ１２１の内容（「ＤＡＴＡ」＝「Ａ」、「ＩＤ」＝「２」、「ＶＡＬＩＤ」＝「１」）から、２番のＰＥ１０１（ＰＥ＝２）へデータ「Ａ」を送付する動作が期待されている。これに対し、図６中の右側の６サイクル目（ｃｙｃｌｅ＝６）の時点で、２番のＰＥ１０１（ＰＥ＝２）のＲＢＵＦ２０４の内容をみると、最終的にデータ「Ａ」が格納されていることがわかる。【０１３９】
上記例のように、「宛先ＩＤ方式」を用いて相異なる距離に位置するＰＥ１０１間でのデータを転送した場合、ビット数がＸ＋４ビットのＭＢＦ１２１を用意しても、ＰＥ１０１間で送受信し合えるデータのビット数はＸビットである。一方、「カウンタ方式」を用いて相異なる距離に位置するＰＥ１０１間でのデータ転送を行うことで、図５と同じ転送を行う場合でも、Ｘ＋４ビットではなくＸビットのＭＢＦ１２１を用意すればよい。【０１４０】
１−２）カウンタ方式（図７）
図７は、送信元ＰＥと受信先ＰＥが図６の例と同じ場合で、「カウンタ方式」を用いて同じデータ転送を実施した場合の様子を示す。【０１４１】
この場合、図７中の左側の初期状態（０サイクル目（ｃｙｃｌｅ＝０））に示すように、各ＰＥ１０１がＲＣＮＴ２０３の初期値として、自分からみた送信元ＰＥ１０１の格子距離ＤＩＳＴをセットする。それにより、図７中の右側の最終結果が示すように、図６の「宛先ＩＤ方式」の場合と比べ、１サイクル余分にかかるものの、７サイクル目（ｃｙｃｌｅ＝７）の動作後には、図６中の右側に示す場合と同様の転送結果が得られていることがわかる。【０１４２】
２）連続した複数のデータ転送を行う場合（図８〜図１１）
次に、相異なる距離に位置するＰＥ間での連続した複数のデータ転送を行う場合について説明する。この場合は、図８に示すプログラムコードを利用するものとする。【０１４３】
図８に示すプログラムコードの場合、ＳＳＦＴ命令の実行の度に、ＬＤＣ命令およびＳＴＣ命令がそれぞれ、ＲＦＬＧ２０８およびＳＦＬＧ２０９の条件付きで実行するように指定されている。これにより、前のサイクルに実行されたＳＳＦＴ命令の結果、ＲＦＬＧ２０４の値が「１」にセットされれば、次サイクルではＳＴＣ命令により、ＲＢＵＦ２０４に格納された受信データがＩＭＥＭ２２１の所定場所（図の例では、「ＲＡＤＲ」をＩＭＥＭ２２１のベースアドレス、ＲＣＮＴ２０３をオフセットとするアドレス）にストアされるように動作する。【０１４４】
同様に、ＳＦＬＧ２０９の値が「１」にセットされれば、同一サイクルにＬＤＣ命令が有効となり、それにより、次サイクルには新しい送信データがＩＭＥＭ２２１の所定場所（図の例では、「ＳＡＤＲ」をＩＭＥＭ２２１のベースアドレス、ＳＣＮＴ２０２をオフセットとするアドレス）からＳＢＵＦ２０５にロードされる。また、ＣＰ１１０のＦＦＬＧ２１１の値が「０」となったら、ループから抜け、その結果、”／＊番地Ａ＋７＊／”から始まるＳＴＣ命令が実行される。【０１４５】
このため、最後に受信され、かつ、ＲＢＵＦ２０４に格納されたデータも、ＩＭＥＭ２２１の所定場所（この場合、ＲＣＮＴ２０３の値が「０」であるため、アドレス「ＲＡＤＲ＋０」の位置）にストアされるように動作する。【０１４６】
２−１）宛先ＩＤ方式（図９〜図１１）
図８のプログラムコードに従い、「宛先ＩＤ方式」を用いて、４つのデータ転送を行う場合の動作について説明する。【０１４７】
まず、図９に示す０サイクル目（ｃｙｃｌｅ＝０）の初期状態では、各ＰＥ１０１は、それぞれ４つずつの送信データ（Ａ０〜Ａ３、Ｂ０〜Ｂ３、．．．、Ｈ０〜Ｈ３）と宛先ＩＤのペアを持っている。４つの送信データのうち、１つ目のデータ（Ａ０、Ｂ０、．．．、Ｈ０）は、図９の左側に示すように、ＭＢＦ１２１に、２つ目のデータ（Ａ１、Ｂ１、．．．、Ｈ１）は、図９の右上側に示すように、ＳＢＵＦ２０５に、３つ目のデータ（Ａ２、Ｂ２、．．．、Ｈ２）、４つ目のデータ（Ａ３、Ｂ３、．．．、Ｈ３）は、図９の右下側に示すように、ＩＭＥＭ２２１のアドレス「ＳＡＤＲ＋３」、「ＳＡＤＲ＋２」の位置にそれぞれ格納されている状態にある。また、ＩＭＥＭ２２１のアドレス「ＳＡＤＲ＋１」の位置には、図９の右下側に示すように、「ＶＡＬＩＤ」フィールドの値がＯＮ（無効）を示す無効送信データを格納しておく。また、ＲＣＮＴ２０３とＳＣＮＴ２０２は、図９の左側及び右上側に示すように、それぞれ「４」をセットしておく。【０１４８】
次に、図９に示す初期状態から処理が進むと、図１０及び図１１に示すように、１９サイクル目（ｃｙｃｌｅ＝１９）の動作後には、各ＰＥ１０１で４つずつ、計８×４＝３２個の送信データがそれぞれの宛先ＰＥ１０１に届けられ、もう１サイクル処理が進めば、最後に受信した２番のＰＥ１０１（ＰＥ＝２）のＲＢＵＦ２０４内のデータも、ＩＭＥＭ２２１のアドレス「ＲＡＤＲ＋０」の位置に書き込まれる（図中の例では２０サイクル目は非図示）。【０１４９】
なお、図１０及び図１１の例では更新タイミングを見やすくするため、ＳＢＵＦ２０５の内容でＭＢＦ１２１を更新した場合は、ＭＢＦ１２１を囲う矩形を太枠で、「ＬＤＣ命令」でＳＢＵＦ２０５の内容を更新した場合は、ＳＢＵＦ２０５を囲う矩形を太枠で、ＳＣＮＴ２０２が更新された場合は、ＳＣＮＴ２０２を囲う丸を太枠でそれぞれ表現している。【０１５０】
２−２）カウンタ方式
図１０及び図１１では、宛先ＩＤ方式を用いた場合を説明しているが、これと同様に各ＰＥ１０１が４つの転送すべきデータを有する場合の動作について、例えば「カウンタ方式」を用いて、４回、逐次に転送を実施した場合を考える。この場合は、毎回のデータ転送に先立ち、各バッファに初期値を設定するのに要するサイクル数を無視した場合でも、７＋８＋７＋８＝３０サイクルかかる計算となる。【０１５１】
これに対し、「宛先ＩＤ方式」を用いて４つの転送すべきデータを重畳させた形で転送した場合では、図１０及び図１１に示すように、２０サイクルで転送が終了する。従って、この例でみると、「宛先ＩＤ方式」を用いた場合は、「カウンタ方式」を用いた場合と比べ約３３％の高速化を実現できることになる。このような「宛先ＩＤ方式」を用いた場合のデータ転送の重畳化による高速化の効果は、一般には連続して転送するデータ数が増えれば増えるほど、より顕著になることが予想される。【０１５２】
以上の本発明の実施の形態及び各実施例によれば、相異なる距離に位置するＰＥ間でのデータ転送を効率よく実現できるＳＩＭＤ型プロセッサアレイを提供できるようになる。これにより、ＰＥ間でデータをやりとりする必要がある多様な画像処理や信号処理の処理負荷を、低コストで軽減できるようになる。その結果、これらの処理に対し、もともと低コストで高性能が特徴のＳＩＭＤ型プロセッサアレイの適用を、その低コスト性を維持しつつ、さらに推し進めることができるようになる。【０１５３】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【０１５４】
この出願は、２００８年３月４日に出願された日本出願特願２００８−０５３３４３号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１５５】
本発明は、複数の命令を同時に発行可能な制御プロセッサによって制御される複数の相互結合したプロセッシングエレメントで構成されるＳＩＭＤ型プロセッサアレイシステム及びそのデータ転送方法に利用可能である。
【図１】
2009110497.tif 000003
【図２】
2009110497.tif 000004
【図３】
2009110497.tif 000005
【図４】
2009110497.tif 000006
【図５】
2009110497.tif 000007
【図６】
2009110497.tif 000008
【図７】
2009110497.tif 000009
【図８】
2009110497.tif 000010
【図９】
2009110497.tif 000011
【図１０】
2009110497.tif 000012
【図１１】
2009110497.tif 000013
【図１２】
2009110497.tif 000014
【国際調査報告】
2009110497.tif 000015
2009110497.tif 000016
2009110497.tif 000017