(57)【特許請求の範囲】
【請求項１】
単一命令多重データ方式で制御される複数の処理要素を含む処理要素アレイと、
前記処理要素の各々の内部に備えられるメモリ要素であって、前記処理要素の全ての前記メモリ要素へのデータアクセスが並列に実行されるメモリ要素と、
単一命令多重データ方式で前記処理要素アレイを制御する制御プロセッサと、
全ての前記処理要素を互いに接続し、かつ前記制御プロセッサに接続するバスシステムと、
前記処理要素アレイの前記メモリ要素とデータを交換する単一メモリであって、リード転送に対するデータ送信装置として、かつライト転送に対するデータ受信装置として動作する単一メモリとを備えるデータ転送装置であって、
前記制御プロセッサが、各々が各処理要素に対する対象領域（ＲＯＩ領域）転送パラメータセットの一時的な格納装置である複数のレジスタを有するレジスタセット部であって、前記転送パラメータセットが少なくとも前記単一メモリ内のＲＯＩ開始アドレスと、ＲＯＩの幅と、ＲＯＩの高さとを含む、レジスタセット部と、
最初に１を加えることによって転送されるデータの各ＲＯＩ内の位置を横方向及び縦方向にシフトし、次に前記縦及び横の位置に加えて、前記ＲＯＩの開始アドレスと前記単一メモリのメモリ領域の幅である共通の距離とを使用して、前記単一メモリ内の前記位置のアドレスを計算する要求アドレス計算機とを備える、データ転送装置。
【請求項２】
前記縦位置がデータ転送カウント数を前記ＲＯＩの幅で除算する整数除算によって計算され、前記横位置が前記データ転送カウント数を前記ＲＯＩの幅で除算するモジュラ演算によって計算される、請求項１に記載のデータ転送装置。
【請求項３】
前記単一メモリ内の前記位置の前記アドレスをｒｅｑ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙ、前記単一メモリ内の前記ＲＯＩの前記開始アドレスをｓｔａｒｔ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙ、前記ＲＯＩ内の前記データの前記縦位置をｖｅｒ＿ｐｏｓ、前記ＲＯＩ内の前記データの前記横位置をｈｏｒ＿ｐｏｓ、前記共通の距離をｄｉｓｔとしたとき、前記単一メモリ内の前記位置の前記アドレスが下記の式
ｒｅｑ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙ＝ｓｔａｒｔ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙ＋（ｖｅｒ＿ｐｏｓ×ｄｉｓｔ）＋ｈｏｒ＿ｐｏｓ
を使用して計算される、請求項１又は２に記載のデータ転送装置。
【請求項４】
前記制御プロセッサが転送ゲート部をさらに備え、前記転送ゲート部が、前記データ転送カウント数がＲＯＩの大きさを超えていない場合のみ、メモリアクセス要求を前記単一メモリへ通過させる、請求項２に記載のデータ転送装置。
【請求項５】
前記処理要素アレイからの前記ＲＯＩ領域の大きさが同じである、請求項１から４のいずれかに記載のデータ転送装置。
【請求項６】
前記処理要素アレイからの前記ＲＯＩ領域の大きさが異なる、請求項１から４のいずれかに記載のデータ転送装置。
【請求項７】
前記バスシステムがパイプライン式のリングバスである、請求項１から６のいずれかに記載のデータ転送装置。
【請求項８】
前記単一メモリが外部メモリである、請求項１から７のいずれかに記載のデータ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は単一命令多重データ（ＳＩＭＤ：Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）プロセッサシステムにおける単一メモリとメモリアレイとの間のデータ転送に関する。
詳細には、本発明は、ＳＩＭＤプロセッサシステムの各処理要素（ＰＥ：Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）が該ＰＥに割り当てられたＲＯＩ領域に対するパラメータセットを他のＰＥとは従属関係無く特定し、複数の対象領域（ＲＯＩ：Ｒｅｇｉｏｎｓ  Ｏｆ  Ｉｎｔｅｒｅｓｔ）を同時並列的に転送するにあたって低実施コストで高速にデータ転送するための技術に関する。
【背景技術】
【０００２】
単一命令多重データ（ＳＩＭＤ）処理システムはより効果的な高速並列処理を達成するための大きな可能性を有するので、ＳＩＭＤ方式で動作するプロセッサの開発が進んでいる。ＳＩＭＤプロセッサシステムにおいて歩行者又は白線検出アルゴリズムを処理する場合、第１工程において、可能性のある候補領域が検出され、次の工程において、これらの候補領域が検証される。ＳＩＭＤプロセッサシステムの処理能力を最適に利用するために、可能性のある候補領域の検出する第１工程だけでなく、ＲＯＩ領域の検証のためにもＰＥアレイを利用することができる。したがって、各ＰＥに対して異なった割り当てＲＯＩ領域を有するＰＥアレイ上で同一のアルゴリズムが実行できるように、各ＰＥの内部メモリに各ＲＯＩ領域がロードされなければならない。
【０００３】
しかしながら、処理要素はＳＩＭＤ方式で動作しているので、単一のＰＥに対してＲＯＩ領域をロードしているとき、該単一のＰＥを除く全ての処理要素は待機していなければならず、それは中央プロセッサ（ＣＰ；Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｏｒ）での各ＲＯＩ領域の逐次的処理等に比べた時のＳＩＭＤ方式処理の予想される改善を減少させてしまう。
【０００４】
従来技術の非特許文献１には、ＳＩＭＤプロセッサの１つの例が記載されている。図１３はこのプロセッサのアーキテクチャを示している。このアーキテクチャは処理要素（ＰＥ）のアレイ１０４からなる。このアレイは内部メモリ１０２を有する複数のＰＥ１０１からなり、それらは内部メモリを有するＰＥのグループ１０３にグループ分けされている。データはバス１０５を介して内部メモリアレイと外部メモリ（ＥＭＥＭ：ｅｘｔｅｒｎａｌ  ｍｅｍｏｒｙ）１０８との間で転送される。ラインバッファ１０６は、２つのラインバッファの間でＰＥのグループか制御プロセッサ１０７のどちらかとバス１０５とが接続されるようにバス１０５上に配置される。
【０００５】
図１４はラインバッファの動作を示す。そこにおいて、非特許文献１においてはＳＩＭＤ方式における内部と外部のメモリの間のデータ転送のために自律ＤＭＡ動作が使用される。内部メモリから外部メモリ１０８への転送の場合、例えば、各ＰＥからの１バイトに等しい１つの要素を保持する、１行の要素２０１が最初に内部メモリから並列に読み出され、バス１０５のラインバッファ１０６の内部に格納される。そして、バス１０５のラインバッファ１０６の中身は、次の行２０２が内部メモリから読み出される前に、外部メモリ１０８へシフトアウトされる（シフト動作によって出力される）。
【０００６】
内部メモリと外部メモリ１０８との間のデータ転送の場合、常に要素の行全体が転送される。一部のみを転送する必要がある場合、ＥＭＥＭ１０８への書き込み動作に対してマスク動作が使用される。その場合、データは各ＰＥに対して読み出し及び転送が可能であるが、いくつかのＰＥのデータ要素に対しては書き込み動作が無効にされなければならない。
【０００７】
このようなアーキテクチャにおいて複数のＲＯＩ領域を処理するために、２つの可能性が存在する。第１の可能性は処理を純粋にＣＰで実施することである。この場合、ＰＥアレイは利用されず、複数のＲＯＩ領域は一つずつ順々に転送され、実行される。これには長い処理時間がかかり、ＤＭＡは非効果的であり、ＰＥアレイの処理能力は利用されない。
【０００８】
第２の可能性は処理をＰＥアレイで実施することである。ここで、処理はＳＩＭＤの並行性を利用して並列に実施することができる。しかしながら、ＥＭＥＭにおいて整列されてないデータは既存のライン転送動作によって並列にロードすることができず、このデータ転送は、他の処理要素をマスクしながらデータ要素単位で各処理要素に転送することによって逐次的に実行される。すなわち、割り当てられたＲＯＩデータが単一のＰＥの単一の内部メモリにだけ書き込まれ、他のＰＥがマスクされるように、該単一のＰＥを除く全てのＰＥがマスクされる。しかし、他のＰＥがアクセスされない状態で各ＰＥが要素単位でアクセスされなければならず、全てのＰＥに対してデータを転送するために非常に長い時間がかかる。
【０００９】
ここで、本願の出願人によって出願された特許出願に記載されたもう１つの例を説明する。２０１１年７月２１日に出願された日本特許出願第２０１１−１５９７５２号（特許文献１）はＳＩＭＤプロセッサを使用して、より効果的にデータを転送するための新規なアイデアを記載している。図１５において、ＢＫ１−ＢＫ６が割り当てられた各ＰＥに転送されるべきＲＯＩであり、  ＢＫ１−ＢＫ６が互いに異なった大きさである場合を想定する。この場合、ＤＭＡコントローラは各ＲＯＩパラメータの最大値を転送パラメータとして使用する。図１５においては、ＢＫ２が最大長（Ｌｍａｘ）を有し、ＢＫ５が最大幅（Ｗｍａｘ）を有する。図１６に示されているように、ＣＰがＤＭＡコントローラに各領域の開始アドレスを設定すると、ＤＭＡコントローラによりＬｍａｘ×Ｗｍａｘの大きさの領域を並列処理によって、それぞれ各ＰＥに転送することができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】２０１１年７月２１日に出願された日本特許出願第２０１１−１５９７５２号
【非特許文献】
【００１１】
【非特許文献１】Shorin Kyo,et.al.,「A 51.2GOPS Scalable Video Recognition Processor for Intelligent Cruise Control Based on a Linear Array of 128 4-Way VLIW Processing Elements」,2003 IEEE International Solid-State Circuits Conference,２００３年２月
【発明の概要】
【発明が解決しようとする課題】
【００１２】
ＲＯＩデータ領域に定義された各ＰＥに対する独立のデータ転送は非特許文献１に記載された方法によって機能するが、このデータ転送は、各ＰＥに対するデータが他の全てのＰＥに対する書き込み動作をマスクしながら別々に転送されなければならないので、長い処理時間がかかる。この要素単位でのデータ転送のための時間的なオーバヘッドはＳＩＭＤ方式を、例えば、歩行者又は白線検出アルゴリズムの検証作業等を含む多くの作業に対して実現不可能なものにしている。
【００１３】
非特許文献１に記載の技術を使用した場合、必要なＲＯＩデータであるＢＫ１−ＢＫ６に加え、不必要で冗長なデータをも転送しなければならず、データ転送時間を必要以上に、大幅に長くするとともにデータ格納装置の内部に大きな領域が必要となる。
【課題を解決するための手段】
【００１４】
本発明の目的は、内部メモリアレイと単一メモリとの間で複数のＲＯＩ領域を同時並行的に転送するにあたって低実施コストでかつ高速にデータ転送できるようにすることにあり、このとき、各ＰＥが、転送される領域に対してパラメータセットを他のＰＥとは独立に特定することができるようにする。
【００１５】
本発明のもう１つの目的であるデータ転送に対する処理時間の短縮は、データ転送命令の開始時に各ＲＯＩ領域のパラメータセットを割り当てられたＰＥから制御プロセッサに転送し、このパラメータセットを制御プロセッサに格納することによって達成される。そして、制御プロセッサ内部で、単一メモリへの複数の要求が各ＰＥ及び各ＲＯＩ領域の各要素に対して自律的に生成される。
【００１６】
読み出し転送の場合、これらの要求は、各ＰＥに対して各ＲＯＩ領域の第１要素が最初に単一メモリから要求され、その後に各ＲＯＩ領域の後続の要素が要求されるように生成される。単一メモリから各ＲＯＩ領域からの第１要素が制御プロセッサで受信され、制御プロセッサからバスシステムを介して内部メモリアレイに転送された後、全ての要素は内部メモリアレイに並列に格納される。そして、各ＰＥに対して各ＲＯＩ領域の第２要素が単一メモリから要求される。各ＲＯＩ領域の全ての要素がそれらの割り当てられたＰＥに転送されると、転送は終了する。
【００１７】
書き込み転送の場合、これらの要求は、各ＰＥの内部の各ＲＯＩ領域の第１要素が最初に内部メモリアレイから並列に読み出され、バスシステムのレジスタに転送されるように生成される。そして、データ要素は制御プロセッサにシフトされ、そこにおいて各要素に対して対応する単一メモリのアドレスが計算され、単一メモリに対してデータ転送が要求される。単一メモリに全ての第１要素が送られた後、各ＲＯＩ領域からの第２要素が内部メモリアレイから読み出される。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態１のＳＩＭＤプロセッサの構造を示している。
【図２】レジスタセット３０９をより詳細に示している。
【図３】要求アドレス計算機３１０をより詳細に示している。
【図４】ｖｅｒ＿ｐｏｓ及びｈｏｒ＿ｐｏｓの意味を図示している。
【図５】転送ゲート部３１１を詳細に示している。
【図６Ａ】単一メモリ３０８から内部メモリアレイへのリード方向データ転送に対するフローチャートを示している。
【図６Ｂ】単一メモリ３０８から内部メモリアレイへのリード方向データ転送に対するフローチャートを示している。
【図７】互いに異なる大きさを有し、内部メモリアレイに転送されることになっている多数のＲＯＩ領域を図示している。
【図８】実施形態１のデータ転送動作を概略的に示している。
【図９Ａ】内部メモリアレイから単一メモリ３０８へのライト方向データ転送に対するフローチャートを示している。
【図９Ｂ】内部メモリアレイから単一メモリ３０８へのライト方向データ転送に対するフローチャートを示している。
【図１０】実施形態２のデータ転送動作を概略的に示している。
【図１１】変形例のアドレス計算機１２００を示している。
【図１２】例としてのアーキテクチャを有するＳＩＭＤプロセッサ３００が動作可能な、可能なシステム設計を示している。
【図１３】ＳＩＭＤプロセッサの典型的なアーキテクチャを示している。
【図１４】非特許文献１においては自律ＤＭＡ動作が使用される、ラインバッファの動作を示している。
【図１５】従来技術においてＢＫ１−ＢＫ６が割り当てられた各ＰＥに転送されるべきＲＯＩ領域である場合を示している。
【図１６】従来技術の技術的問題を示している。
【発明を実施するための形態】
【００１９】
付随する図面を参照しながら、本発明の実施形態を説明する。
（実施形態１）
実施形態１として、単一メモリからメモリアレイへのＲＯＩデータの転送を説明する。この状況は、例えば、白線や顔領域に対する、いくつかの可能性のある候補が検出された後に検証が必要な場合に起こる。
【００２０】
図１は本発明の実施形態１のＳＩＭＤプロセッサの構造を示している。ＳＩＭＤプロセッサは、各々がそれ自身の内部メモリ３０２を有するＰＥ３０１のアレイ３０４を有する。以下、ＰＥアレイ３０４の内部メモリを内部メモリアレイと呼ぶ。また、複数のＰＥがＰＥのグループ３０３にグループ分けされている。本実施形態においては、４つのＰＥが１つのグループにグループ化されている。
【００２１】
データはバスシステム３０５を介して内部メモリアレイと単一メモリ３０８との間で転送され、データ転送は制御プロセッサ（ＣＰ）３０７によって制御される。制御プロセッサ（ＣＰ）３０７はＳＩＭＤの並行性を利用するダイレクトメモリーアクセスコントローラとして機能する。ラインバッファ３０６は、２つのラインバッファの間でＰＥのグループ３０３か制御プロセッサ３０７のどちらかとバス３０５とが接続されるようにバスシステム３０５上に配置される。
【００２２】
制御プロセッサ３０７はレジスタセット３０９と、要求アドレス計算機３１０と、転送ゲート部３１１と、バスシフトコントローラ３１２とを有する。
【００２３】
図２はレジスタセット３０９をより詳細に示している。レジスタセット３０９は多数のレジスタＲ０〜ＲＮ−１を有する。１つのＰＥに対して１つのレジスタがある。すなわち、レジスタＲ０はＰＥ０のパラメータセットを保持し、レジスタＲ１はＰＥ１のパラメータセットを保持し、レジスタＲＮ−１はＰＥＮ−１のパラメータセットを保持する。各レジスタＲ０〜ＲＮ−１はＰＥ間で互いに異なる転送パラメータだけを保持する。
これらのパラメータは、
１．単一メモリにおけるＲＯＩ開始アドレス：ｓｔａｒｔ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙ
２．ＲＯＩの幅：ｒｏｉ＿ｗｉｄｔｈ
３．ＲＯＩの高さ：ｒｏｉ＿ｈｅｉｇｈｔ
である。
【００２４】
転送動作中にアクセスされるアドレスは要求アドレス計算機３１０で生成される。図３は要求アドレス計算機３１０をより詳細に示している。要求アドレス計算機３１０は転送カウンタ６０１と、アドレス部６０２と、分割部６０３と、モジュラ演算部６０４と、アドレス計算部６０５とを有する。転送カウンタ６０１はアドレス部６０２を使用して１ずつ増やされる転送の回数（ｔｒａｎｓ＿ｃｎｔ）をカウントする。
【００２５】
分割部６０３は、ｔｒａｎｓ＿ｃｎｔをｒｏｉ＿ｗｉｄｔｈで除算する整数除算を実行し、それの商はアドレス計算部６０５に出力される。図４に示されているように、前記商はデータのＲＯＩ内の縦位置ｖｅｒ＿ｐｏｓを表している。
ｖｅｒ＿ｐｏｓ＝ｔｒａｎｓ＿ｃｎｔ  ｄｉｖ  ｒｏｉ＿ｗ
【００２６】
モジュラ演算部６０４は、ｔｒａｎｓ＿ｃｎｔをｒｏｉ＿ｗｉｄｔｈで除算するモジュラ演算を実行し、それの余りはアドレス計算部６０５に出力される。図４に示されているように、前記余りはデータのＲＯＩ内の横位置ｈｏｒ＿ｐｏｓを表している。
ｈｏｒ＿ｐｏｓ＝ｔｒａｎｓ＿ｃｎｔ  ｍｏｄ  ｒｏｉ＿ｗ
ここで、ｖｅｒ＿ｐｏｓ及びｈｏｒ＿ｐｏｓは転送されるデータのＲＯＩ内の位置を決定する。
【００２７】
アドレス計算部６０５は単一メモリ内の要求アドレスｒｅｑ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙを計算する。前記ｖｅｒ＿ｐｏｓ及びｈｏｒ＿ｐｏｓに加え、開始アドレスｓｔａｒｔ＿ａｄｄ及び共通距離ｄｉｓｔもまたアドレス計算部６０５に与えられる。ここで、開始アドレスｓｔａｒｔ＿ａｄｄは単一メモリ３０８内のＲＯＩの開始アドレスであり、共通距離は単一メモリのメモリ領域の幅である。したがって、アドレス計算部６０５は以下の式を計算する。
【００２８】
ｒｅｑ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙ＝ｓｔａｒｔ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙ＋（ｖｅｒ＿ｐｏｓ×ｄｉｓｔ）＋ｈｏｒ＿ｐｏｓ
【００２９】
図４を参照すると、上記式の意味が明確に理解できる。
【００３０】
図５は転送ゲート部３１１を詳細に示している。転送ゲート部３１１は乗算部７０１と、比較器７０２と、スイッチ７０３とを有する。乗算部７０１はＰＥｘのｒｏｉ＿ｗｉｄｔｈとＰＥｘのｒｏｉ＿ｈｅｉｇｈｔとを乗算して、ＰＥｘのＲＯＩの大きさｒｏｉ＿ｓｉｚｅを求める。前記ｒｏｉ＿ｓｉｚｅは比較器７０２に出力される。
【００３１】
前記ｒｏｉ＿ｓｉｚｅに加え、ｔｒａｎｓ＿ｃｎｔが転送カウンタ６０１から比較器７０２に与えられる。比較器７０２はｔｒａｎｓ＿ｃｎｔを前記ｒｏｉ＿ｓｉｚｅと比較する。比較結果はスイッチ７０３に出力される。
【００３２】
このスイッチはＯＮ／ＯＦＦの２つの状態を有するスイッチであり、比較器による結果に応じて要求アドレスｒｅｑ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙを単一メモリ３０８に転送する。ｔｒａｎｓ＿ｃｎｔ  が  ｒｏｉ＿ｓｉｚｅより小さい場合、すなわち、ｔｒａｎｓ＿ｃｎｔ  ＜ｒｏｉ＿ｓｉｚｅの場合、スイッチ７０３はｒｅｑ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙを単一メモリ３０８へ通過させる。一方、ｔｒａｎｓ＿ｃｎｔ  が  ｒｏｉ＿ｓｉｚｅに達した、又はｒｏｉ＿ｓｉｚｅを超えた場合、すなわち、ｔｒａｎｓ＿ｃｎｔ≧ｒｏｉ＿ｓｉｚｅの場合、スイッチ７０３はｒｅｑ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙを単一メモリ３０８へ通過させない。換言すると、データ転送の回数がＲＯＩ領域の大きさに達する又は、ＲＯＩの大きさを超えるまでは、必要な要求アドレスが単一メモリ３０８に与えられる。しかしながら、不必要な要求アドレスは単一メモリ３０８に与えられない。
【００３３】
バスシフトコントローラ３１２はバスのシフトを制御する。バスシフトコントローラ３１２は転送された要素の数をカウントする内部カウンタを有する。本実施形態において、バスシフトコントローラ３１２はモジュラ４計算（Ｘモード４）を計算し、バスはモジュラ計算の結果に応じて１つシフトされる。本実施形態においては、４つのＰＥがグループ化されており、１つのラインバッファが４つの要素を保持することができる。例えば、１つの要素が４バイトの場合、バスライン３０５及びラインバッファＬＢは１６バイトの容量を有する。したがって、バスシステムは４要素毎にシフトされなければならない。
【００３４】
（リード方向のデータ転送動作）
次に、フローチャートを参照しながら、データ転送動作を説明する。まず、図６Ａ及び６Ｂを参照して、リード方向のデータ転送動作を説明する。
【００３５】
図６Ａ及び６Ｂは単一メモリ３０８から内部メモリアレイへのリード方向のデータ転送に対するフローチャートを示している。図７に示されているように、事前の分析によっていくつかの領域が可能性のある候補として検出されているとする。図７において、ＲＯＩ０，ＲＯＩ１，．．．．ＲＯＩｘ，．．．は可能性のある候補であり、より正確に分析されなければならない。したがって、これらの領域はそれぞれ、内部メモリに転送されなければならない。また、事前の分析においていくつかの領域が可能性のある候補として検出されている場合、各ＲＯＩ領域に対するパラメータセットが特定され、各ＰＥはそれら自身の割り当てられたＲＯＩ領域に対するＲＯＩパラメータセットをそれぞれ保持する。各ＰＥはそれら自身の内部メモリ３０２にＲＯＩパラメータセットを格納してもよい。
【００３６】
ＳＴ１０１において、まず、内部メモリアレイから全てのＲＯＩ領域に対するＲＯＩパラメータセットが並列に読み出され、バスシステム３０５のラインバッファＬＢに格納される。そして、ＳＴ１０２において、パラメータセットは制御プロセッサ３０７にシフトされ、図２に示されているように、レジスタセット部３０９内に格納される。
【００３７】
全てのパラメータセットがレジスタセット部３０９内に格納された後（ＳＴ１０３：ＹＥＳ）、ＲＯＩ転送カウンタ６０１は「０」に初期化される（ｔｒａｎｓ＿ｃｎｔ＝０）  （ＳＴ１０４）。また、バスシフトコントローラ３１２の内部カウンタも「０」に初期化される（ＳＴ１０５）。
【００３８】
次に、ＰＥｘに対して、転送されるデータの要求アドレスが要求アドレス計算機によって計算される（ＳＴ１０６）。「ｘ」はＰＥ又はＲＯＩのインデックス番号であり、「０」から開始される。また、「ｘ」はループ毎にカウントアップされる。
【００３９】
要求アドレス計算については、図３及び図４を参照して既に上述したとおりである。ここでは、式についてだけ再記載する。
【００４０】
ｒｅｑ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙ＝ｓｔａｒｔ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙ＋（ｖｅｒ＿ｐｏｓ×ｄｉｓｔ）＋ｈｏｒ＿ｐｏｓ
ｖｅｒ＿ｐｏｓ＝ｔｒａｎｓ＿ｃｎｔ  ｄｉｖ  ｒｏｉ＿ｗｉｄｔｈ
ｈｏｒ＿ｐｏｓ＝ｔｒａｎｓ＿ｃｎｔ  ｍｏｄ  ｒｏｉ＿ｗｉｄｔｈ
【００４１】
ＰＥｘに対するｒｅｑ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙが計算された後、このＰＥｘに対して計算されたｒｅｑ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙは転送ゲート部３１１を介して単一メモリ３０８に転送される。しかしながら、上述したように、必要な要求アドレスが単一メモリ３０８に与えられるのに対し、不必要な要求アドレスは単一メモリ３０８に転送されない。したがって、要求アドレスを単一メモリに転送する前に（ＳＴ１０８）、ｔｒａｎｓ＿ｃｎｔがｒｏｉ＿ｓｉｚｅより小さいかどうかを決定する（ＳＴ１０６）。
【００４２】
単一メモリ３０８がｒｅｑ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙを受信すると、単一メモリ３０８はｒｅｑ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙに対応するデータ要素を送り返す（ＳＴ１０９）。そして、ＣＰ３０７はデータ要素をラインバッファ３０６に出力する（ＳＴ１１０）。
【００４３】
上述したように、バスシステムは４データ毎にシフトされなければならない（ＳＴ１１１，  ＳＴ１１２）。次に、ＳＴ１１３において、ｘがＰＥインデックスの最後の番号に達したかが決定される。すなわち、各ＰＥ（ＰＥ０  −  ＰＥＮ−１）からの１つの要素に対してアドレス計算（ＳＴ１０６）及び必要なデータ要素のラインバッファへの出力が実行されたかが決定される。「ｘ」をカウントアップした（ＳＴ１１４）ときに「ｘ」が最後の番号に達していない場合、処理はアドレス計算（ＳＴ１０６）に戻り、ＳＴ１０６〜ＳＴ１１３の処理を繰り返す。すなわち、次のＰＥに対するアドレス計算が行われ（ＳＴ１０６）、要求されたデータがラインバッファに出力される。
【００４４】
一方、ＳＴ１１３において「ｘ」が最後の番号に達した場合、全てのＰＥに対するデータがラインバッファに出力されている。例えば、ｔｒａｎｓ＿ｃｎｔ＝０の場合、各ＲＯＩに対する開始アドレスに対応する全ての第１データがラインバッファに出力される。したがって、各ＰＥはラインバッファから割り当てられたデータ要素を取得し、それらをＰＥ自身の内部メモリに格納する（ＳＴ１１５）。この処理は図８を参照することによって理解されるだろう。全ての第１データがラインバッファに格納されると、各ＰＥはラインバッファから割り当てられたデータ要素を取得する。
【００４５】
ＳＴ１０６〜ＳＴ１１５は、全てのＲＯＩの全ての要素が送信されるまで（ＳＴ１１６）、ｔｒａｎｓ＿ｃｎｔをカウントアップしながら（ＳＴ１１７）繰り返される。図４への参照とともに上述したように、ｔｒａｎｓ＿ｃｎｔを１つカウントアップしたときに、ＲＯＩ内における要求アドレスの位置が１つシフトされることは容易に理解されるだろう。したがって、ＳＴ１０５〜ＳＴ１１７を繰り返すことにより、全てのＲＯＩの全ての要素を単一メモリからバスシステムに出力することができ、各ＰＥは割り当てられたＲＯＩデータを逐次的に取得することができる。
【００４６】
さらに、転送ゲート部は各ＰＥｘ（又はＲＯＩｘ）に対してｔｒａｎｓ＿ｃｎｔがｒｏｉ＿ｓｉｚｅより小さいかどうかを決定するので、不必要なデータは単一メモリに送信されない。したがって、ＳＩＭＤプロセッサシステムにおける複数のＲＯＩの並行データ転送を高速かつ効果的に実行することができる。
【００４７】
（実施形態２）
次に、本発明の実施形態２を説明する。この実施形態２として、ライト方向のデータ転送動作を説明する。実施形態１で説明されたシステム構成をこの実施形態２にも適用することができる。
【００４８】
図９Ａ及び９Ｂは内部メモリアレイから単一メモリ３０８へのライト方向のデータ転送に対するフローチャートを示している。図１０は実施形態２のデータ転送動作を概略的に示している。ＳＴ２０１〜ＳＴ２０４はＳＴ１０１〜ＳＴ１０４と同一である。ＳＴ２０５において、内部メモリから各ＲＯＩ領域に対する第１データ要素が読み出され、バスシステムのラインバッファに格納される。この工程において、全てのＰＥは１つの要素データをラインバッファに出力する。内部バスシフトコントローラ３１２が「０」に初期化されると、上述したように、バスシステムは４データ毎にシフトされなければならない（ＳＴ２０７，  ＳＴ２０８）。
【００４９】
ＳＴ２０９において、ＰＥｘに対して、要求アドレス計算機によって書き込むべきデータの要求アドレスが計算される（ＳＴ２０９）。このアーキテクチャは実施形態１のＳＴ１０６と同一である。さらに、ｔｒａｎｓ＿ｃｎｔがｒｏｉ＿ｓｉｚｅより小さいかどうかに応じて（ＳＴ２１０）、ｒｅｑ＿ａｄｄｒｅｓｓ及びＰＥｘから転送されたデータがライト要求とともに単一メモリに送信される（ＳＴ２１１）。それに続いて、単一メモリはＰＥｘから送信されたデータ要素を要求されたアドレスに格納する（ＳＴ２１２）。
【００５０】
「ｘ」がカウントアップされると（ＳＴ２１４）、処理はバスシフトコントロール（ＳＴ２０７，  ＳＴ２０８）及びアドレス計算（ＳＴ２０９）に戻り、ＳＴ２０７〜ＳＴ２１３の処理を繰り返す。
【００５１】
ＳＴ２１３において、各ＰＥ（ＰＥ０  −  ＰＥＮ−１）からの１つの要素に対してアドレス計算（ＳＴ２０９）及びデータ要素の要求されたアドレスへの格納が実行されたかが決定される。「ｘ」が最後の番号に達すると、ＳＴ２０５〜ＳＴ２１５は、全てのＲＯＩの全ての要素が単一メモリに書き戻されるまで、ｔｒａｎｓ＿ｃｎｔをカウントアップしながら（ＳＴ２１６）繰り返される。最終的に、全てのＲＯＩデータが単一メモリに書き戻される。
【００５２】
ＲＯＩの大きさがＲＯＩ毎に異なるにも関わらず、アドレス計算（ＳＴ２０９）によって、ＣＰは単一メモリ内に書き戻されるべきデータを特定することができる。さらに、転送ゲート部は各ＰＥｘ（又はＲＯＩｘ）に対してｔｒａｎｓ＿ｃｎｔがｒｏｉ＿ｓｉｚｅより小さいかどうかを決定するので、不必要なライト要求は単一メモリに送信されない。したがって、ＳＩＭＤプロセッサシステムにおける複数の対象領域の並行データ転送を高速かつ効果的に実行することができる。
【００５３】
（変形実施形態１）
変形された実施形態として、要求アドレス計算機３１０の代替的なアーキテクチャを説明する。図１１は変形例のアドレス計算機１２００を示している。このアドレス計算機１２００は比較器１２０２と、２つのスイッチ１２０３、１２０４と、レジスタセット２０１と、加算部１２０５とを有する。レジスタセット２０１は多数のレジスタ、及び各ＰＥｘに対して備えられた２つのレジスタを有する。レジスタは転送されるデータの現在の横位置ｈｏｒ＿ｐｏｓ及び現在の縦位置ｖｅｒ＿ｐｏｓを一時的に保持することができる。初期状態において、ＰＥｘのｈｏｒ＿ｐｏｓ及びｖｅｒ＿ｐｏｓは「０」に設定される。
【００５４】
各ＰＥｘに対して、比較器１２０２はレジスタセット１２０１からの現在の横位置ｈｏｒ＿ｐｏｓをＰＥｘの「横幅−１」と比較する。比較器１２０２は比較結果をスイッチ１２０４及びスイッチ１２０３に出力する。ＰＥｘのｈｏｒ＿ｐｏｓ及びｖｅｒ＿ｐｏｓはスイッチ１２０４の２つの入力端子にそれぞれ入力され、スイッチ１２０４はＰＥｘのｈｏｒ＿ｐｏｓ及びｖｅｒ＿ｐｏｓのどちらかを出力値として選択する。詳細には、現在のＰＥｘのｈｏｒ＿ｐｏｓがＰＥｘの「横幅−１」に等しくない場合、スイッチ１２０４は現在のＰＥｘのｈｏｒ＿ｐｏｓを出力値として選択する。
【００５５】
スイッチ１２０４からの出力値は加算部１２０５に入力され、スイッチ１２０４からの出力値は１つ増やされる。それに続いて、加算の結果はレジスタセット１２０１のレジスタに書き戻される。換言すると、各工程が進むとともに、ＰＥｘのｈｏｒ＿ｐｏｓの値は１つ増やされる。これは、ＲＯＩ内のデータの位置が横方向に１つシフトされることを意味する。
【００５６】
一方、現在のＰＥｘのｈｏｒ＿ｐｏｓがＰＥｘの「横幅−１」に等しい場合、比較器１２０２は結果をスイッチ１２０３に出力する。このスイッチ１２０３は横位置ｈｏｒ＿ｐｏｓの値をリセットする機能を有する。詳細には、ＰＥｘのｈｏｒ＿ｐｏｓの値は「０」にリセットされ、値「０」がレジスタセット１２０１のレジスタに書き戻される。さらに、比較結果はスイッチ１２０５にも出力される。
【００５７】
現在のＰＥｘのｈｏｒ＿ｐｏｓがＰＥｘの「横幅−１」に等しい場合、このスイッチは縦位置ｖｅｒ＿ｐｏｓを出力値として選択し、その値は加算部１２０５において１つ増やされる。加算の結果はレジスタセット１２０１のレジスタに書き戻される。換言すると、ＲＯＩ内のデータの位置がＲＯＩｘの横方向の端に達すると、データ位置は次の行の先頭にシフトされる。
【００５８】
これによって、データ位置を順序正しくシフトすることができる。したがって、ｖｅｒ＿ｐｏｓ及びｈｏｒ＿ｐｏｓから計算されるｒｅｑ＿ａｄｄｓｉｎｇｌｅ＿ｍｅｍｏｒｙを単一メモリのアドレス空間内で順序正しくシフトすることができる。
【００５９】
（変形実施形態２）
本発明は上述の実施形態に限定されない。図１２は例としてのアーキテクチャを有するＳＩＭＤプロセッサ３００が動作可能な、可能なシステム設計を示している。システム内の他の構成要素は中央処理装置（ＣＰＵ）４０１と単一メモリ３０８であってもよく、それらは全て接続を介してバスシステム４０４に接続されている。
【００６０】
当業者には、請求の範囲によって規定される本発明の範囲や意図から外れずに、形式や詳細に対する多様な変更が可能であることが理解されるだろう。ＲＯＩの大きさは互いに異なってもよいし、互いに等しくてもよい。上述の実施形態においては、ＰＥが４つ毎にグループ化されているので、バスのシフト動作はモジュラ４計算の結果によって制御されている。しかしながら、バスのシフトは１つのグループ内のＰＥの数に応じて適切に制御されるべきである。
【産業上の利用可能性】
【００６１】
本発明は画像処理のための方法及び装置に適用することができ、その画像データはカメラ、レーザープローブ、又はインターネットから取得することができる。
【符号の説明】
【００６２】
１０１            プロセッサ要素（ＰＥ）
１０２            メモリ要素
１０３            ＰＥグループ
１０４            ＰＥアレイ
１０５            バス
１０６            ラインバッファ
１０７            制御プロセッサ（ＣＰ）
１０８            外部メモリ
３０１            プロセッサ要素（ＰＥ）
３０２            メモリ要素
３０３            ＰＥのグループ
３０４            ＰＥアレイ
３０５            バスシステム
３０６            レジスタ
３０７            制御プロセッサ（ＣＰ）
３０８            単一メモリ
３０９            レジスタセット
３１０            要求アドレス計算機
３１１            転送ゲート
４０１            中央処理装置
４０２            ＳＩＭＤプロセッサ
４０３            単一メモリ
４０４            バスシステム
６０１            転送カウンタｔｒａｎｓ＿ｃｎｔ
６０２            加算部
６０３            整数分割部
６０４            モジュラ部
６０５            アドレス計算部
７０１            乗算部
７０２            比較器
７０３            スイッチ
１２０１          レジスタセット
１２０２          比較器
１２０３          スイッチ
１２０４          スイッチ
１２０５          加算部
【図１】
0005829331.tif 000002
【図２】
0005829331.tif 000003
【図３】
0005829331.tif 000004
【図４】
0005829331.tif 000005
【図５】
0005829331.tif 000006
【図６Ａ】
0005829331.tif 000007
【図６Ｂ】
0005829331.tif 000008
【図７】
0005829331.tif 000009
【図８】
0005829331.tif 000010
【図９Ａ】
0005829331.tif 000011
【図９Ｂ】
0005829331.tif 000012
【図１０】
0005829331.tif 000013
【図１１】
0005829331.tif 000014
【図１２】
0005829331.tif 000015
【図１３】
0005829331.tif 000016
【図１４】
0005829331.tif 000017
【図１５】
0005829331.tif 000018
【図１６】
0005829331.tif 000019