(57)【要約】【課題】画像データの処理速度を向上する。【解決手段】画像処理装置１００は、画像データを格納する第１のメモリ１０１と、第１のメモリ１０１よりも高速にアクセス可能な第２のメモリ１０２と、第１のメモリ１０１から第２のメモリ１０２に転送された画像データの所定の領域に対し所定のタスクを実行する第１の演算部１０３と、第１の演算部１０３が実行する第１のタスクに対応して実行される画像データの第１の領域と、第１のタスクとは異なる第２のタスクに対応して実行される画像データの第２の領域との重なりを判定する第２の演算部１０４と、第１のメモリ１０１及び第２のメモリ１０２の制御を行うメモリ制御装置１０５を有する。メモリ制御装置１０５は、第２の演算部１０４により重なりがあると判定された場合、第２のメモリ１０２における画像データが再利用されるよう制御を行う。【選択図】図１
2017097066.tif 000002
【特許請求の範囲】
【請求項１】
画像データを格納する第１のメモリと、
前記第１のメモリよりも高速にアクセス可能な第２のメモリと、
前記第１のメモリから前記第２のメモリに転送された前記画像データの所定の領域に対し所定のタスクを実行する第１の演算部と、
前記第１の演算部が実行する第１のタスクに対応して実行される前記画像データの第１の領域と、前記第１のタスクとは異なる第２のタスクに対応して実行される前記画像データの第２の領域との重なりを判定する第２の演算部と、
前記第１のメモリ及び前記第２のメモリの制御を行うメモリ制御装置と
を有し、
前記メモリ制御装置は、前記第２の演算部により重なりがあると判定された場合、前記第２のメモリにおける前記画像データが再利用されるよう制御を行う
画像処理装置。
【請求項２】
前記第２のメモリがキャッシュメモリであり、
前記第２のタスクは、前記第１のタスクよりも後に実行対象となるタスクであり、
前記第１の演算部は、前記第１の領域と前記第２の領域とが重なっていると判定した場合、前記第１のメモリから前記第２のメモリに前記第１の領域部分の前記画像データを転送するための第１のプリフェッチ命令を実行し、前記第１の領域と前記第２の領域とが重なっていないと判定した場合、前記第１のメモリから前記第２のメモリに前記第１の領域部分の前記画像データを転送するための第２のプリフェッチ命令を実行し、
前記メモリ制御装置は、前記第１のプリフェッチ命令が実行された場合、第１のプリフェッチを行い、前記第２のプリフェッチ命令が実行された場合、第２のプリフェッチを行い、
前記第１のプリフェッチは、前記第２のプリフェッチよりも、プリフェッチされた前記画像データの前記第２のメモリにおける保持期間が長い
請求項１に記載の画像処理装置。
【請求項３】
前記第１のプリフェッチ命令及び前記第２のプリフェッチ命令は、それぞれ、プリフェッチ対象の領域の前記画像データを１つの命令でプリフェッチする命令である
請求項２に記載の画像処理装置。
【請求項４】
前記第２のメモリが、ローカルメモリであり、
前記第２のタスクは、既に実行された、前記第１のタスクとは異なるタスクであり、
前記メモリ制御装置は、前記第１の領域のうち前記第２の領域と重なっていると判定された領域について前記ローカルメモリに格納されている前記画像データを再利用するよう制御し、前記第１の領域のうち前記第２の領域と重なっていないと判定された領域についての前記画像データを前記第１のメモリから前記ローカルメモリへと転送する
請求項１に記載の画像処理装置。
【請求項５】
前記メモリ制御装置は、前記第１のタスクが前記第１の演算部により実行される際に、前記第１の領域のうち前記第２の領域と重なっていると判定された重なり領域についての前記画像データの前記ローカルメモリにおけるアドレス空間上の記憶位置を、前記重なり領域と前記第１の領域の前記重なり領域以外の領域との位置関係を維持する位置に修正する
請求項４に記載の画像処理装置。
【請求項６】
前記メモリ制御装置は、前記第１のタスクが前記第１の演算部により実行される際に、前記ローカルメモリにおける前記画像データへのアクセス時に前記第１の演算部が指定する第１のアドレスを第２のアドレスに変換し、
前記第２のアドレスは、前記第１の演算部によるアクセス対象の座標位置の前記画像データの前記ローカルメモリにおけるアドレス空間上の実際の記憶位置を示すアドレスである
請求項４に記載の画像処理装置。
【請求項７】
前記第２の演算部は、前記第１の領域と前記第２の領域の重なりを判定するための処理を１つの命令の実行により行う
請求項１に記載の画像処理装置。
【請求項８】
第１のタスクに対応して実行される画像データの第１の領域と、前記第１のタスクよりも後に実行対象となる第２のタスクに対応して実行される前記画像データの第２の領域との重なりを判定するステップと、
前記第１の領域と前記第２の領域とが重なっていると判定された場合、第１のプリフェッチを行い、前記第１の領域と前記第２の領域とが重なっていないと判定された場合、第２のプリフェッチを行うステップと、
キャッシュメモリにプリフェッチされた前記画像データを用いて、前記第１のタスクを実行するステップと
を有し、
前記第１のプリフェッチは、前記第２のプリフェッチよりも、プリフェッチされた前記画像データの保持期間が長い
画像処理方法。
【請求項９】
第１のタスクに対応して実行される画像データの第１の領域と、前記第１のタスクとは異なる既に実行された第２のタスクに対応して実行された前記画像データの第２の領域との重なりを判定するステップと、
前記第１の領域のうち前記第２の領域と重なっていると判定された領域についてローカルメモリに格納されている前記画像データを再利用するよう制御するステップと、
前記第１の領域のうち前記第２の領域と重なっていないと判定された領域についての前記画像データをメインメモリから前記ローカルメモリへと転送するステップと
を有する画像処理方法。
【請求項１０】
前記制御するステップでは、前記第１のタスクが実行される際に、前記第１の領域のうち前記第２の領域と重なっていると判定された重なり領域についての前記画像データの前記ローカルメモリにおけるアドレス空間上の記憶位置を、前記重なり領域と前記第１の領域の前記重なり領域以外の領域との位置関係を維持する位置に修正する
請求項９に記載の画像処理方法。
【請求項１１】
前記制御するステップでは、前記第１のタスクが実行される際に、前記ローカルメモリにおける前記画像データへのアクセス時に指定される第１のアドレスを第２のアドレスに変換し、
前記第２のアドレスは、アクセス対象の座標位置の前記画像データの前記ローカルメモリにおけるアドレス空間上の実際の記憶位置を示すアドレスである
請求項９に記載の画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置及び画像処理方法に関し、例えばタスク間でアクセス先の画像データが重複する画像処理についての画像処理装置及び画像処理方法に関する。
【背景技術】
【０００２】
例えば車載向けなどの画像認識処理装置においては、リアルタイムに入力される画像データを処理し、物体などを認識する必要がある。このため、限られた時間内に多くの画像データを高速に処理することが求められる。ここで、画像認識処理の多くは、ある座標を起点とし、その座標の近傍データを使って処理を行う。また、各座標に対し同じ処理を並列に実行することが可能である。
【０００３】
複数の座標に対し、それぞれ処理する場合、各座標が隣接しているときには、処理の際にアクセスされる近傍データに重複が生じる。ここで、複数の座標に対する各処理において、重複したデータは、例えばキャッシュなどの上で共有されて再利用されることが可能である。
【０００４】
データ処理の高速化を図る技術として、例えば、特許文献１及び特許文献２が知られている。
【０００５】
特許文献１に開示される装置は、複数のプロセッサが並列に処理を行う装置において、それぞれのプロセッサがデータを使用するタイミングまでに必要なデータを準備しておくものである。この装置では、タスク制御部からメモリ制御部へアクセス指示を出し、データを予めデータ記憶部へ転送させてからタスクの実行を行い、タスクの終了後はデータ記憶部からデータを外部記憶部へ転送させる。
【０００６】
特許文献２では、画像処理を行う際に、処理対象の座標のリストを作成し、座標のリストから利用するデータを予測してプリフェッチを行い、キャッシュミスを削減する技術について開示している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１４−２２５０８８号公報
【特許文献２】特開２００２−３１８６８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１及び特許文献２に記載された技術では、キャッシュメモリ等に転送されたデータの再利用について考慮されていない。再利用可能な画像データについて、より確実に再利用することが求められている。
【０００９】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
一実施の形態によれば、画像処理装置は、第１のタスクに対応して実行される画像データの第１の領域と、第２のタスクに対応して実行される画像データの第２の領域との重なりを判定し、重なりがあると判定された場合、メモリ上の画像データが再利用されるよう制御を行う。
【発明の効果】
【００１１】
前記一実施の形態によれば、画像データの処理速度を向上することができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態に係る画像処理装置の概要構成例を示す模式図である。
【図２】実施の形態に係る画像処理システムの構成を示すブロック図である。
【図３】実施の形態１に係る画像処理装置の構成の一例を示すブロック図である。
【図４】コンパイル装置におけるコンパイル処理の中で行われる命令群の追加処理の動作の一例を示すフローチャートである。
【図５】コンパイル装置によりコンパイルされるソースコードの一例を示す図である。
【図６】第１のタスクの第１の領域と第２のタスクの第２の領域の一例を示す模式図である。
【図７】図４に示されるステップ１０１〜１０３によりオブジェクトコードに追加される命令群の一例を示す図である。
【図８】第１の領域と第２の領域に重なりが生じているか否かを判定する判定文の一例を示す図である。
【図９】第１の領域と第２の領域に重なりが生じているか否かを判定する判定文の一例を示す図である。
【図１０】図４に示されるステップ１０１〜１０３によりオブジェクトコードに追加される命令群の一例を示す図である。
【図１１】図４に示されるステップ１０４〜１０５によりオブジェクトコードに追加される命令群の一例を示す図である。
【図１２】実施の形態１に係る画像処理装置の動作の一例を示すシーケンスチャートである。
【図１３】実施の形態２に係る画像処理装置の構成の一例を示すブロック図である。
【図１４Ａ】第１のタスクの第１の領域と第２のタスクの第２の領域の一例を示す模式図である。
【図１４Ｂ】第１の領域における重なり領域の相対位置を示す図である。
【図１４Ｃ】第２の領域における重なり領域の相対位置を示す図である。
【図１４Ｄ】第２のタスクが実行された直後のローカルメモリのアドレス空間の様子の一例を示す模式図である。
【図１４Ｅ】アドレス空間上の記憶位置が修正された後のローカルメモリのアドレス空間の様子の一例を示す模式図である。
【図１４Ｆ】重なり領域のコピーについて説明する模式図である。
【図１５】実施の形態２に係る画像処理装置の動作の一例を示すフローチャートである。
【図１６】アドレスの変更によりローカルメモリ上のデータを再利用する場合の画像処理装置の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１４】
＜実施の形態の概要＞
実施の形態の概要について説明する。図１は、実施の形態に係る画像処理装置１００の概要構成例を示す模式図である。図１に示されるように、画像処理装置１００は、第１のメモリ１０１と、第２のメモリ１０２と、第１の演算部１０３と、第２の演算部１０４と、メモリ制御装置１０５とを有している。画像処理装置１００は、プログラムを実行することにより、画像データに対し、所定の画像処理を行う。第１の演算部１０３及び第２の演算部１０４は、プロセッサを備え、種々の演算を実行する。
【００１５】
第１のメモリ１０１は、画像データを格納するメモリである。また、第１のメモリ１０１は、上記プログラムを格納してもよい。第２のメモリ１０２は、第１のメモリ１０１よりも高速に第１の演算部１０３がアクセス可能なメモリである。第１の演算部１０３は、画像データに対し、タスクを実行することにより、所定の画像処理を行う。より具体的には、第１の演算部１０３は、第１のメモリ１０１から第２のメモリ１０２に転送された画像データの所定の領域に対し、所定のタスクを実行することにより、所定の画像処理を行う。すなわち、第１の演算部１０３は、第２のメモリ１０２に転送された処理対象の座標の画像データ、及び第２のメモリ１０２に転送されたこの座標の処理のためにアクセスする必要がある所定の範囲の画像データを用いて、所定の画像処理を行う。なお、所定の画像処理には、コンボリュージョンなどを伴うフィルタ処理が含まれるが、これに限定されない。このように、第１の演算部１０３は、第１のメモリ１０１から第２のメモリ１０２に転送された画像データの所定の領域に対し所定のタスクを実行する。第１の演算部１０３は、画像データの複数の座標に対し、順次、所定の画像処理を行う。すなわち、第１の演算部１０３は、処理対象の座標毎のタスクを、順次、実行する。
【００１６】
第２の演算部１０４は、第１の演算部１０３によるタスクの実行の前に、以下の処理を実行する。なお、第２の演算部１０４が、第１の演算部１０３と同じ一つの演算部として構成されてもよい。例えば、演算処理装置が、第１の演算部１０３及び第２の演算部１０４として機能してもよい。まず、第２の演算部１０４は、第１の演算部１０３が実行する第１のタスクに対応して実行される画像データの第１の領域と、第１のタスクとは異なる第２のタスクに対応して実行される画像データの第２の領域との重なりを判定する。次のように言い換えてもよい。すなわち、第２の演算部１０４は、第１のタスクの実行の際にアクセスされる、画像データの第１の領域と、第２のタスクの実行の際にアクセスされる、画像データの第２の領域との重なりを判定する。なお、第１の領域は、第１のタスクによる処理対象の座標を含み、第２の領域は、第２のタスクによる処理対象の座標を含む。
【００１７】
メモリ制御装置１０５は、第１のメモリ１０１及び第２のメモリ１０２の制御を行う。ここで、メモリ制御装置１０５は、第２の演算部１０４により上記の判定において重なりがあると判定された場合、第２のメモリにおける画像データが再利用されるよう制御を行う。例えば、メモリ制御装置１０５は、重なりがあると判定された場合、重なりがないと判定された場合とは異なる制御を行う。
【００１８】
このように、画像処理装置１００によれば、タスク間における画像データのアクセス範囲の重なりが判定され、再利用可能であるかを特定することができる。そして、再利用可能な場合には、再利用されるよう、再利用ができない場合の制御とは別の制御を行うことが可能である。したがって、第２のメモリ１０２上において再利用可能な画像データについて、より確実に再利用することができ、画像データの処理速度を向上することができる。
【００１９】
＜実施の形態１＞
以下、図面を参照して実施の形態１について説明する。図２は、本実施の形態に係る画像処理システム１の構成を示すブロック図である。図２に示すように、本実施の形態に係る画像処理システム１は、画像処理装置１０と、コンパイル装置２０とを備える。
【００２０】
画像処理装置１０は、コンパイル装置２０から提供されたプログラム（オブジェクトコード）に従って、所定の画像処理を実行する。なお、後述するように、画像処理の実行に際し、画像処理装置１０は、コンパイル装置２０から提供されたプログラムにしたがって、プリフェッチ命令を実行する。コンパイル装置２０は、コンピュータとしての機能を備え、コンパイラを実行し、入力されたソースコードをオブジェクトコードに変換する。本実施の形態では、コンパイル装置２０は、所定の画像処理を指示するプログラムをコンパイルする際、オブジェクトコードに、プリフェッチを制御するための命令群を追加する。なお、コンパイル装置２０の具体的な処理については、後述する。
【００２１】
画像処理装置１０は、図３に示されるように、メインメモリ１１と、キャッシュメモリ１２と、メモリ制御装置１３と、演算処理装置１４ａ、１４ｂ、１４ｃ、１４ｄと、タスク制御装置１５とを有する。なお、以下の説明では、演算処理装置１４ａ、１４ｂ、１４ｃ、１４ｄについて、まとめて、演算処理装置１４と総称することがある。図３に示した例では、画像処理装置１０は、４つの演算処理装置１４により並列処理が実現可能な構成となっているが、演算処理装置１４の数は４に限られない。すなわち、演算処理装置１４は、１つであってもよいし、２、３又は５以上であってもよい。
【００２２】
メインメモリ１１は、上述の第１のメモリ１０１に相当し、画像データを格納する。また、メインメモリ１１は、コンパイル装置２０によりコンパイルされたオブジェクトコードを格納する。なお、オブジェクトコードは、メインメモリ１１とは別のメモリに格納されていてもよい。キャッシュメモリ１２は、上述の第２のメモリ１０２に相当し、メインメモリ１１よりも高速に演算処理装置１４がアクセス可能である。メモリ制御装置１３は、上述のメモリ制御装置１０５に相当し、キャッシュメモリ１２及びメモリ制御装置１３のデータの読み出し及び書き込みを制御する。メモリ制御装置１３は、演算処理装置１４からの指示によりデータをメインメモリ１１からキャッシュメモリ１２へ転送する。すなわち、演算処理装置１４がプリフェッチ命令を実行すると、当該プリフェッチ命令に従ったプリフェッチを実現する。
【００２３】
演算処理装置１４は、上述の第１の演算部１０３及び第２の演算部１０４に相当し、タスク制御装置１５から割り当てられたタスクを実行する。上述の通り、本実施の形態では、複数の演算処理装置１４によりタスクを並列に処理する。演算処理装置１４は、それぞれ、キャッシュメモリ１２にアクセス可能であり、メインメモリ１１からキャッシュメモリ１２にプリフェッチされた画像データに対し、タスクを実行し、所定の画像処理を行う。また、演算処理装置１４は、タスクの実行の際、当該タスクによりアクセスするデータについて、メインメモリ１１からキャッシュメモリ１２に転送するようにメモリ制御装置１３に指示するプリフェッチ命令を実行する。なお、プリフェッチ命令の実行は、上記プログラム（オブジェクトコード）に従って行われる。
【００２４】
ここで、演算処理装置１４が実行するプリフェッチ命令は、２種類ある。すなわち、演算処理装置１４が実行するプリフェッチ命令には、データに複数回アクセスを行えるようにするための第１のプリフェッチ命令（以下、複数回利用用プリフェッチ命令と呼ぶ。）と、データに一度のみアクセスするための第２のプリフェッチ命令（以下、一回利用用プリフェッチ命令と呼ぶ）とがある。複数回利用用プリフェッチ命令は、キャッシュメモリ１２からのデータの追い出しが、例えばＬＲＵアルゴリズムにより行われる命令である。また、一回利用用プリフェッチ命令は、プリフェッチされたデータが一旦、演算処理装置１４によりアクセスされた後は、優先的に追い出すようメモリ制御装置１３により制御される命令である。一回利用用プリフェッチ命令及び複数回利用用プリフェッチ命令によってデータのフェッチを行う際、データがどのプリフェッチ命令によってフェッチされたものかを示すフェッチ情報がデータ各々に対し与えられる。例えば、フェッチ情報はメモリ制御装置１３に保持される。このフェッチ情報はキャッシュやその他記憶手段に保持されてもよい。そしてメモリ制御装置１３はフェッチ情報に基づき、データを優先的に追いだすか、または長く保持するかの判断を行いキャッシュからデータの追い出しを行う。したがって、複数回利用用プリフェッチ命令の実行により行われる第１のプリフェッチは、一回利用用プリフェッチ命令の実行により行われる第２のプリフェッチよりも、プリフェッチされた画像データのキャッシュメモリ１２における保持期間が長い。言い換えると、一回利用用プリフェッチ命令の実行により行われる第２のプリフェッチは、複数回利用用プリフェッチ命令の実行により行われる第２のプリフェッチよりも、プリフェッチされた画像データのキャッシュメモリ１２における保持期間が短い。
【００２５】
演算処理装置１４は、第１のタスクに対応して実行される画像データの第１の領域と、第１のタスクよりも後に実行対象となる第２のタスクに対応して実行される画像データの第２の領域との重なりを判定し、２種類のプリフェッチ命令のうち判定結果に応じたプリフェッチ命令を実行する。次のように言い換えてもよい。すなわち、演算処理装置１４は、実行対象の第１のタスクの実行の際にアクセスされる、画像データの第１の領域と、第１のタスクよりも後に実行対象となる第２のタスクの実行の際にアクセスされる、画像データの第２の領域との重なりを判定し、判定結果に応じたプリフェッチ命令を実行する。
【００２６】
具体的には、演算処理装置１４は、第１の領域と第２の領域とが重なっていると判定した場合、メインメモリ１１からキャッシュメモリ１２に第１の領域部分の画像データを転送するための複数回利用用プリフェッチ命令を実行する。また、演算処理装置１４は、第１の領域と第２の領域とが重なっていないと判定した場合、メインメモリ１１からキャッシュメモリ１２に第１の領域部分の画像データを転送するための一回利用用プリフェッチ命令を実行する。
【００２７】
メモリ制御装置１３は、両領域に重なりがあると判定された場合、すなわち演算処理装置１４が複数回利用用プリフェッチ命令を実行した場合、上述の第１のプリフェッチを行う。また、メモリ制御装置１３は、両領域に重なりがないと判定された場合、すなわち演算処理装置１４が一回利用用プリフェッチ命令を実行した場合、上述の第２のプリフェッチを行う。
【００２８】
タスク制御装置１５は、図示しないメモリ等により実現されるキューを備え、タスクをキューに格納する。タスク制御装置１５は、キューに格納されたタスクを、順次、演算処理装置１４へ送る。なお、タスク制御装置１５が保持するタスクは、例えば図示しないタスク分割部から供給される。タスク分割部は、コンパイル装置２０によりコンパイルされたオブジェクトコードと、メインメモリ１１に格納されている画像データと基づいて、所定の画像処理を複数のタスクに分割する。これにより、部分画像単位の画像処理を規定するタスクが複数生成される。なお、タスク制御装置１５が保持するタスクは、当該タスクが画像データ上のどの位置（座標）のデータを用いるかを示す情報を有している。
【００２９】
また、タスク制御装置１５は、複数の演算処理装置１４に対し、所定の割り当て規則のうち、ユーザからの指示に従って選択されたタスクの割り当て規則に従って、タスクキューに格納されたタスクキューを各演算処理装置１４に割り当ててもよい。
【００３０】
ここで、画像処理装置１０が実行するオブジェクトコードには、プリフェッチを制御するための命令群が追加されている。以下、コンパイル装置２０におけるこれら命令群の追加について説明する。図４は、コンパイル装置２０におけるコンパイル処理の中で行われる命令群の追加処理の動作の一例を示すフローチャートである。以下、図４に沿って、コンパイル処理の中で行われる命令群の追加処理について説明する。
【００３１】
ステップ１００（Ｓ１００）において、コンパイル装置２０は、プログラムを解析し、処理対象の座標を処理するためにアクセスが必要とされる画像データの座標範囲を特定する。ステップ１００では、座標範囲は、処理対象の座標からの相対値として特定される。なお、ステップ１００において、必ずしも座標範囲が特定されるとは限らない。例えば、ソースコードにおいて、範囲が定数により指定されている場合には、座標範囲を特定可能であるが、範囲が変数により指定されている場合には、画像処理装置１０による実行時でないと、範囲が確定しない。
【００３２】
例えば、コンパイル装置２０は、プログラムをコンパイルする際に、ソースコードのループの繰り返し範囲を解析することにより、アクセスが必要とされる座標範囲を特定してもよい。また、コンパイル装置２０は、オブジェクトコードのメモリアクセス命令から、アクセス先を解析し、アクセスが必要とされる座標範囲を特定してもよい。
【００３３】
コンパイル装置２０は、例えば図５に示されるソースコードを解析し、処理対象の座標を処理するためにアクセスが必要とされる画像データの座標範囲を特定する。図５に示したプログラム例では、関数ｆｕｎｃは、ＸＹ座標をパラメータとして入力し、画像データｉｍａｇｅへアクセスしている。なお、画像処理装置１０は、ＸＹ座標値を変更してこの関数を並列に動作させることとなる。一般的な最適化機能を持つコンパイラであれば、図５に示されるソースコードから、アクセス範囲が（ｘ：ｘ＋５，ｙ：ｙ＋５）であることが解析可能である。すなわち、（ｘ，ｙ）座標を処理対象とする際、（ｘ，ｙ）座標から(０：５，０：５)の範囲がアクセス範囲であることが特定される。
【００３４】
ステップ１０１（Ｓ１０１）において、コンパイル装置２０は、第１のタスクについての座標情報を取得する第１の取得命令をオブジェクトコードに追加する。
【００３５】
ステップ１０２（Ｓ１０２）において、コンパイル装置２０は、第１のタスクよりも後に演算処理装置１４において実行対象となる第２のタスクについての座標情報を取得する第２の取得命令をオブジェクトコードに追加する。
【００３６】
ステップ１０３（Ｓ１０３）において、コンパイル装置２０は、ステップ１０１で追加された第１の取得命令が演算処理装置１４により実行されることにより特定される第１の領域と、ステップ１０２で追加された第２の取得命令が演算処理装置１４により実行されることにより特定される第２の領域の重なりを判定する命令（条件文）をオブジェクトコードに追加する。なお、第１の領域とは、第１のタスクの実行の際にアクセスされる画像データの領域であり、第２の領域とは、第２のタスクの実行の際にアクセスされる画像データの領域である。すなわち、第１の領域とは、第１のタスクに対応して実行される画像データの領域であり、第２の領域とは、第１のタスクとは異なる第２のタスクに対応して実行される画像データの領域である。
【００３７】
ステップ１０４（Ｓ１０４）及びステップ１０５（Ｓ１０５）において、コンパイル装置２０は、プリフェッチ命令をオブジェクトコードに追加する。具体的には、ステップ１０４において、コンパイル装置２０は、第１の領域と第２の領域とが重なっていると判定された場合に複数回利用用プリフェッチ命令を実行する命令群を追加する。すなわち、コンパイル装置２０は、ステップ１０３で追加された条件文が成立する場合に（つまり、重なりがあると判定された場合に）複数回利用用プリフェッチ命令を実行するよう指示する命令群を追加する。
【００３８】
また、ステップ１０５において、コンパイル装置２０は、第１の領域と第２の領域とが重なっていないと判定された場合に一回利用用プリフェッチ命令を実行する命令群を追加する。すなわち、コンパイル装置２０は、ステップ１０３で追加された条件文が成立しない場合に（つまり、重なりがないと判定された場合に）一回利用用プリフェッチ命令を実行するよう指示する命令群を追加する。
【００３９】
ここで、具体例を交えて、上述のコンパイル装置２０の動作について説明する。図６は、第１のタスクの第１の領域と第２のタスクの第２の領域の一例を示す模式図である。図６に示した例では、第１のタスクの実行の際にアクセスされる、画像データ５０の第１の領域５１と、第２のタスクの実行の際にアクセスされる、画像データ５０の第２の領域５２とが図示されている。なお、図６に示される例において、第１のタスクの処理対象の座標は（ｘ１，ｙ１）であり、第２のタスクの処理対象の座標は（ｘ２，ｙ２）である。また、図６において、第１の領域５１と第２の領域５２との重なり領域が、ハッチングにより示されている。第１の領域５１及び第２の領域５２のｘ方向の幅は、ｄｘであり、第１の領域５１及び第２の領域５２のｙ方向の幅は、ｄｙである。なお、図６に示されるタスクが、図５に示されるプログラムに基づくものであると仮定すると、ｄｘ及びｄｙはいずれも５であることがステップ１００において特定される。
【００４０】
また、図７は、図４に示されるステップ１０１〜１０３によりオブジェクトコードに追加される命令群の一例である。なお、図７に示されるプログラムは、上述のステップ１００において、処理対象の座標を処理するためにアクセスが必要とされる画像データの座標範囲が、処理対象の座標からの相対値として特定されている場合のプログラムの例である。図７において、１行目の関数ｇｅｔＸＹが上述のステップ１０１で追加される第１の取得命令に相当し、２行目の関数ｇｅｔＮｅｘｔＸＹが上述のステップ１０２で追加される第２の取得命令に相当する。また、３行目以降の命令群が、ステップ１０３で追加される、重なりを判定する命令群に相当する。３行目以降の命令群では、図８に示される判定文をプログラムで表現したものである。また、図８に示される判定文は、図９に示される判定文と等価な判定文であり、第１の領域５１と第２の領域５２に重なりが生じているか否かを判定する判定文である。
【００４１】
なお、図７において、ダブルスラッシュ以降は、プログラム上のコメントである。図７に示される例では、第１のタスクの処理対象の座標が、変数Ｒ０、Ｒ１に代入され、第２のタスクの処理対象の座標が、変数Ｒ２、Ｒ３に代入されている。そして、第１の領域５１と第２の領域５２の重なりの有無についての結果が変数Ｒ５に格納される。
【００４２】
なお、処理対象の座標を処理するためにアクセスが必要とされる画像データの座標範囲が上述のステップ１００において特定されない場合には、コンパイル装置２０は、例えば図１０に示されるように、座標範囲を取得する命令（ｇｅｔＤｘＤｙ）がさらに追加される。図１０において、関数ｇｅｔＸＹ及び関数ｇｅｔＤｘＤｙが上述のステップ１０１で追加される第１の取得命令に相当し、関数ｇｅｔＮｅｘｔＸＹ及び関数ｇｅｔＤｘＤｙが上述のステップ１０２で追加される第２の取得命令に相当する。なお、図１０に示した例では、第１の領域５１と第２の領域５２の重なりの有無についての結果が変数Ｒ７に格納される。
【００４３】
図７又は図１０に示される命令列に示される処理を、１命令（例えば、ｄｘ及びｄｙを入力として、重なりの有無を判定する命令「ｃｈｅｃｋｒａｎｇｅ」）で行えるよう画像処理装置１０が構成されてもよい。すなわち、演算処理装置１４が、第１の領域５１と第２の領域５２の重なりを判定するための処理を１つの命令の実行により行ってもよい。これは、当該命令を処理する専用の回路が設けられることにより実現される。
【００４４】
これにより、プログラムサイズが削減されるとともに、アクセス範囲の重なりを調べる処理の高速化も期待できる。また、使用するレジスタ数を減らすことができるので、スピルによる性能低下を減らすこともできる。
【００４５】
また、図１１は、図４に示されるステップ１０４〜１０５によりオブジェクトコードに追加される命令群の一例である。図１１に示されるプログラムにおいて、まず、変数Ｒ５の値が判定される。すなわち、重なりの有無が判定される。なお、図７に示されるプログラムの代わりに図１０のプログラムがコンパイル装置２０により生成される場合には、変数Ｒ７の値が判定される。重なりがある場合、複数回利用用プリフェッチ命令である命令Ｐｒｅｆｅｔｃｈ１が演算処理装置１４により実行され、重なりがない場合、一回利用用プリフェッチ命令である命令Ｐｒｅｆｅｔｃｈ２が演算処理装置１４により実行される。なお、図１１に示した例では、重なりがある場合、行ごとに、命令Ｐｒｅｆｅｔｃｈ１が繰り返し実行される。また、重なりがない場合、行ごとに、命令Ｐｒｅｆｅｔｃｈ２が繰り返し実行される。これにより、所定範囲の画像データが、キャッシュメモリ１２にプリフェッチされる。なお、図１１に示されるプログラムにおいて最後の「＿ＮＥＸＴ：」以降には、画像処理内容を規定するプログラムが記載される。
【００４６】
図１１に示される複数回繰り返されるプリフェッチ命令を、１命令（例えば、処理対象の座標と、ｄｘと、ｄｙとを入力として、プリフェッチ対象の領域の画像データをプリフェッチする命令「Ｐｒｅｆｅｔｃｈ１ｒａｎｇｅ」又は「Ｐｒｅｆｅｔｃｈ２ｒａｎｇｅ」）で行えるよう画像処理装置１０が構成されてもよい。すなわち、重なりがあると判定された場合に実行されるプリフェッチ命令が、プリフェッチ対象の領域の画像データを１つの命令でプリフェッチする命令であってもよい。また、重なりがないと判定された場合に実行されるプリフェッチ命令が、プリフェッチ対象の領域の画像データを１つの命令でプリフェッチする命令であってもよい。これは、当該命令を処理する専用の回路が設けられることにより実現される。これにより、プログラムサイズを減らすことができ、また、プログラムの実行時間を短くすることも可能となる。なお、このようなプリフェッチの一命令化は、上述の判定の一命令化と組み合わせて行われてもよい。
【００４７】
画像処理装置１０は、コンパイル装置２０によりこのようにして生成されたオブジェクトコードを実行する。以下、画像処理装置１０の動作について説明する。図１２は、画像処理装置１０の動作の一例を示すシーケンスチャートである。なお、図１２に示されるシーケンスチャートでは、演算処理装置１４ａにおける処理に着目して説明するが、他の演算処理装置１４に関しても同様に画像処理装置１０は動作する。
【００４８】
ステップ２００（Ｓ２００）において、タスク制御装置１５が、演算処理装置１４ａにタスクを割り当てる。
【００４９】
ステップ２０１（Ｓ２０１）において、演算処理装置１４ａは、上述の第１の取得命令を実行し、ステップ２００で自身に割り当てられたタスクについての座標情報を取得する。
【００５０】
ステップ２０２（Ｓ２０２）において、演算処理装置１４ａは、上述の第２の取得命令を実行し、タスク制御装置１５のキューに格納されているタスク、すなわち実行待ちのタスクについての座標情報を取得する。
【００５１】
ステップ２０３（Ｓ２０３）において、演算処理装置１４ａは、ステップ２０１及びステップ２０２で取得した座標情報に基づいて、ステップ２００で割り当てられた現在処理対象のタスクによるアクセス範囲と、実行待ちのタスクによるアクセス範囲とに重なりについて判定する。
【００５２】
ステップ２０４（Ｓ２０４）において、重なりがあると判定された場合、演算処理装置１４ａは、複数回利用用プリフェッチ命令を実行し、重なりがないと判定された場合、演算処理装置１４ａは、一回利用用プリフェッチ命令を実行する。これにより、ステップ２００で割り当てられたタスクで使用される画像データのプリフェッチ要求が、メモリ制御装置１３に通知される。なお、図１１に示されるプログラムによれば、重なりがあると判定された場合、実行対象のタスクによるアクセス範囲の全てについて、複数回利用用プリフェッチ命令によりプリフェッチされるが、重なり部分のみが複数回利用用プリフェッチ命令によりプリフェッチされ、重なっていない部分については一回利用用プリフェッチ命令によりプリフェッチされてもよい。
【００５３】
ステップ２０５（Ｓ２０５）において、メモリ制御装置１３は、ステップ２０４で指示されたプリフェッチ命令に従って、画像データを転送するよう制御する。すなわち、演算処理装置１４ａにより実行されたプリフェッチ命令が、複数回利用用プリフェッチ命令である場合には、転送対象の画像データを、例えばＬＲＵアルゴリズムによりキャッシュメモリ１２から追い出す対象のデータとして管理する。一方、演算処理装置１４ａにより実行されたプリフェッチ命令が、一回利用用プリフェッチ命令である場合には、転送対象の画像データを、優先的に追い出す対象のデータとして管理する。
【００５４】
ステップ２０６（Ｓ２０６）において、メモリ制御装置１３の制御に従って、メインメモリ１１からキャッシュメモリ１２に画像データの転送が行われ、プリフェッチが完了する。すなわち、ステップ２００で割り当てられたタスクの実行の際にアクセスされる領域の画像データがプリフェッチされる。
【００５５】
ステップ２０７（Ｓ２０７）において、演算処理装置１４ａは、タスクに従って、所定の画像処理を実行する。
【００５６】
本実施の形態によれば、画像処理装置１０の演算処理装置１４は、実行対象のタスクのアクセス範囲と後続の実行待ちのタスクのアクセス範囲の重なりを判定し、判定結果に応じて、２種類のプリフェッチ命令を使い分ける。これにより、実行中のタスクと未実行のタスクとの間におけるデータの再利用性を調べることを可能にし、再利用されるデータがキャッシュメモリ１２から一旦追い出された後に再度、キャッシュメモリ１２に転送されることを減らすことができる。これにより、キャッシュヒット率が上がり画像処理が高速化される。
【００５７】
つまり、画像処理装置１０によれば、現在実行対象のタスクによりアクセスされる画像データと、後続のタスクによりアクセスされる画像データとが重複する場合には、現在実行対象のタスクによりアクセスされる画像データが、複数回利用用プリフェッチ命令により、メインメモリ１１からキャッシュメモリ１２に転送される。また、現在実行対象のタスクによりアクセスされる画像データと、後続のタスクによりアクセスされる画像データとが重複しない場合には、現在実行対象のタスクによりアクセスされる画像データが、一回利用用プリフェッチ命令により、メインメモリ１１からキャッシュメモリ１２に転送される。したがって、後続のタスクによりアクセスされるプリフェッチされた画像データが、後続のタスクによりアクセスされる前にキャッシュメモリ１２から追い出されることを抑制することができる。よって、後続のタスクに利用されるデータを繰り返しプリフェッチすることによる処理速度の低下を抑制することができる。
【００５８】
この点について、具体例を交えて、さらに説明する。一例として、タスクＡがデータαを、タスクＢがデータβを、タスクＣがデータγを、タスクＤがデータαを使う場合を想定する。すなわち、タスクＡとタスクＤは同じデータαを利用する。なお、タスクの処理順序は、Ａ、Ｂ、Ｃ、Ｄの順とする。また、説明のため、キャッシュメモリ１２には２個分のデータしか格納できないとする。
【００５９】
まず、上述の動作が行われない場合の例（比較例）について説明する。比較例にかかる画像処理装置では、タスクＡを処理し、その後タスクＢの処理を終えた時には、データαとデータβがキャッシュメモリ１２上にある。ここで、タスクＣを処理するためには、キャッシュメモリ１２上のデータを追い出す必要がある。通常、ＬＲＵ（Least Recently Used）アルゴリズムに従って、最も最近使われなかったものがキャッシュメモリ１２から追い出されるため、データαが追い出される。したがって、その後、タスクＤがデータαを利用するため、再度、データαをキャッシュメモリ１２へ転送する必要が生じる。したがって、このような比較例にかかる画像処理装置にあっては、転送時間のために性能が低下する。
【００６０】
これに対し、画像処理装置１０は、次のように動作する。まず、タスクＡで用いられるデータαが後続のタスクＤにおいても用いられるため、タスクＡの実行に際し、演算処理装置１４は、データαについて複数回利用用プリフェッチ命令を実行する。次に、タスクＢの実行の際、タスクＢが用いるデータは後続のタスクに用いられないため、演算処理装置１４は、データβについて一回利用用プリフェッチ命令を実行する。次に、タスクＣの実行の際、タスクＣが用いるデータは後続のタスクに用いられないため、演算処理装置１４は、データγについて一回利用用プリフェッチ命令を実行する。これにより、キャッシュメモリ１２上のデータβがデータγに書き換えられる。すなわち、キャッシュメモリ１２上のデータαについては引き続き、キャッシュメモリ１２上に格納されたままとなる。続いて、タスクＤの実行の際、データαが既にキャッシュメモリ１２上に格納されているため、メインメモリ１１からの転送が不要となる。このように、画像処理装置１０によれば、処理速度の低下を抑制することができる。
【００６１】
＜実施の形態２＞
次に、実施の形態２について、説明する。図１３は、実施の形態２にかかる画像処理装置３０の構成の一例を示すブロック図である。図１３に示されるように、画像処理装置３０は、キャッシュメモリ１２がローカルメモリ１６に置き換えられた点で、実施の形態１にかかる画像処理装置１０と異なる。すなわち、実施の形態１では、第２のメモリ１０２に相当するメモリとして、キャッシュメモリ１２が用いられたが、本実施の形態では、ローカルメモリ１６が用いられる。ローカルメモリ１６は、例えばＳＲＡＭ（Static Random Access Memory）などにより構成される、画像処理専用に設けられたメモリであり、メインメモリ１１よりも高速に演算処理装置１４がアクセス可能なメモリである。画像処理装置３０は、メインメモリ１１からローカルメモリ１６に転送された画像データを用いて、所定の画像処理を実行する。
【００６２】
また、実施の形態１では、演算処理装置１４が上述の第１の演算部１０３及び第２の演算部１０４に相当したが、本実施の形態では、演算処理装置１４が第１の演算部１０３に相当し、タスク制御装置１５が第２の演算部１０４に相当する。
【００６３】
実施の形態１では、キャッシュメモリ１２へのプリフェッチによりデータを再利用したが、本実施の形態では、プリフェッチに代えて、以下のようにデータの再利用を行う。
【００６４】
本実施の形態では、タスク制御装置１５が、実施の形態１の演算処理装置１４と同様、第１のタスクに対応して実行される画像データの第１の領域と、第１のタスクとは異なる第２のタスクに対応して実行される画像データの第２の領域との重なりを判定する。なお、これは、次のようにも言い換えられる。本実施の形態では、タスク制御装置１５が、実行対象の第１のタスクの実行の際にアクセスされる、画像データの第１の領域と、第２のタスクの実行の際にアクセスされる、画像データの第２の領域との重なりを判定する。しかし、判定対象が以下のように実施の形態１と異なっている。すなわち、実施の形態１では判定対象である第２のタスクは実行待ちのタスクであったが、本実施の形態では判定対象である第２のタスクは、既に演算処理装置１４において実行されたタスクである。
【００６５】
タスク制御装置１５は、タスクキューに格納されたタスクについての座標情報に加え、既に演算処理装置１４により実行されたタスクの座標情報についてもタスクキュー上で管理する。
【００６６】
そして、本実施の形態におけるメモリ制御装置１３は、第１の領域のうち第２の領域と重なっていると判定された領域についてローカルメモリ１６に格納されている画像データを再利用するよう制御する。また、本実施の形態におけるメモリ制御装置１３は、第１の領域のうち第２の領域と重なっていないと判定された領域についての画像データをメインメモリ１１からローカルメモリ１６へと転送する。
【００６７】
つまり、本実施の形態の画像処理装置３０は、ローカルメモリ１６上に存在する、既に実行されたタスクによりアクセスされた画像データを、再利用するよう制御する。一般的に、メインメモリ１１からローカルメモリ１６への転送には時間がかかるため、タスクの実行に際し、メインメモリ１１からローカルメモリ１６にデータを転送することにより演算処理装置１４が必要なデータにアクセスできるようにするよりも、ローカルメモリ１６内の既存のデータを再利用するよう制御することにより演算処理装置１４が必要なデータにアクセスできるようにするほうが、要する時間が短い。本実施の形態の画像処理装置３０では、重なっていると判定された領域についてローカルメモリ１６に格納されている画像データを再利用するため、再利用しない場合に比べて処理時間を短くすることができる。
【００６８】
ところで、キャッシュメモリ１２へのアクセスの場合、メインメモリ１１のアドレスを利用してアクセスすることが可能であるが、ローカルメモリ１６へのアクセスの場合、ローカルメモリ１６は、メインメモリ１１とは異なるアドレス空間を有するため、演算処理装置１４からのローカルメモリ１６のアクセスについて工夫が必要とされる。つまり、ローカルメモリ１６上に存在する、既に実行されたタスクによりアクセスされた画像データを、現在の実行対象であるタスクの実行時に再利用するために、メモリ制御装置１３は具体的には次のように制御する。
【００６９】
本実施の形態のメモリ制御装置１３は、例えば、第１のタスクが演算処理装置１４により実行される際に、第１の領域のうち第２の領域と重なっていると判定された重なり領域についての画像データのローカルメモリ１６におけるアドレス空間上の記憶位置を、重なり領域と第１の領域の重なり領域以外の領域との位置関係を維持する位置に修正する。
【００７０】
これについて、図を用いて説明する。図１４Ａは、第１のタスクの第１の領域と第２のタスクの第２の領域の一例を示す模式図である。図１４Ａに示した例では、第１のタスクの実行の際にアクセスされる、画像データ６０の第１の領域６１と、第２のタスクの実行の際にアクセスされる、画像データ６０の第２の領域６２とが図示されている。なお、図１４Ａに示される例において、第１のタスクの処理対象の座標は（ｘ１，ｙ１）であり、第２のタスクの処理対象の座標は（ｘ２，ｙ２）である。また、図１４Ａにおいて、第１の領域６１と第２の領域６２との重なり領域６３が、ハッチングにより示されている。第１の領域６１及び第２の領域６２のｘ方向の幅は、ｄｘであり、第１の領域６１及び第２の領域６２のｙ方向の幅は、ｄｙである。ここでは、画像処理装置３０が、第２の領域６２についての第２のタスクを実行後、第１の領域６１についての第１のタスクを実行する場合を想定して説明する。すなわち、ここでは、第２のタスクの後に第１のタスクが実行されるため、第２の領域６２がローカルメモリ１６上に配置された後、第１の領域６１がローカルメモリ１６上に配置されることとなる。
【００７１】
図１４Ｂは、第１の領域６１における重なり領域６３の相対位置を示す図である。また、図１４Ｃは、第２の領域６２における重なり領域６３の相対位置を示す図である。重なり領域６３は、両領域の重なった部分であるため、第１の領域６１における重なり領域６３の値と第２の領域６２における重なり領域６３の値は同じである。しかしながら、図１４Ｂ、図１４Ｃに示されるように、重なり領域６３の第１の領域６１における相対位置と、重なり領域６３の第２の領域６２における相対位置は異なる。
【００７２】
図１４Ｄは、第２のタスクが実行された直後のローカルメモリ１６のアドレス空間６４の様子の一例を示す模式図である。図１４Ｄに示されるように、第２のタスクが実行された直後のローカルメモリ１６のアドレス空間６４上では、再利用される領域、すなわち第１の領域６１と第２の領域６２との重なり領域６３は、左下に位置している。このため、メモリ制御装置１３は、ローカルメモリ１６内で再利用される領域をコピーすることにより、再利用される領域についての画像データのローカルメモリ１６におけるアドレス空間上の記憶位置を、再利用される領域と第１の領域６１における他の領域との位置関係を維持する位置に修正する。図１４Ｅは、アドレス空間上の記憶位置が修正された後のローカルメモリ１６のアドレス空間６４の様子の一例を示す模式図である。図１４Ｅに示されるように、再利用される領域（重なり領域６３）の記憶位置が、右上に移動するよう修正される。なお、図１４Ｅにおいて、塗り潰された領域は、重なり領域６３以外の第１の領域６１の画像データを示す。メモリ制御装置１３は、重なり領域６３以外の第１の領域６１を図１４Ｅに示されるようにメインメモリ１１からローカルメモリ１６に転送する。以上まとめると、図１４Ｆに示されるように、重なり領域６３は、ローカルメモリ１６上において、第２のタスク実行後の記憶位置６５から第１のタスク実行前の記憶位置６６へとコピーされる。
【００７３】
次に、本実施の形態にかかる画像処理装置３０の動作について説明する。図１５は、画像処理装置３０の動作の一例を示すフローチャートである。以下、図１５に沿って、動作を説明する。
【００７４】
ステップ３００（Ｓ３００）において、タスク制御装置１５は、タスクキュー上のタスクについての座標情報を取得する。すなわち、タスク制御装置１５は、第１のタスクすなわちこれから実行しようとする実行対象のタスクについての座標情報と、第２のタスクすなわち既に実行済みのタスクについての座標情報を取得する。
【００７５】
ステップ３０１（Ｓ３０１）において、タスク制御装置１５は、ステップ３００で取得された座標情報から特定されるアクセス範囲についての重複を判定する。すなわち、タスク制御装置１５は、実行対象のタスク（第１のタスク）のアクセス範囲と既に実行済みのタスク（第２のタスク）のアクセス範囲の重なりを判定し、重なり領域を特定する。
【００７６】
ステップ３０２（Ｓ３０２）において、タスク制御装置１５は、ステップ３０１で重なり領域が特定された場合には、当該重なり領域をローカルメモリ内でコピーを行うように、メモリ制御装置１３へ命令を出す。なお、ステップ３０１で重なりがないと判定された場合、タスク制御装置１５は本ステップでは何もしない。これにより、メモリ制御装置１３がローカルメモリ１６内におけるコピーを実行する。
【００７７】
ステップ３０３（Ｓ３０３）において、実行対象のタスク（第１のタスク）のアクセス範囲のうち、既に実行済みのタスク（第２のタスク）のアクセス範囲と重複しない領域について、メインメモリ１１からローカルメモリ１６へ画像データを転送するようにメモリ制御装置１３へ命令を出す。これによりメモリ制御装置１３が、メインメモリ１１からローカルメモリ１６への画像データの転送を行う。
【００７８】
このような動作によれば、ローカルメモリ１６内で再利用可能なデータはローカルメモリ１６内でコピーを実施し、メインメモリ１１からローカルメモリ１６へのデータ転送量を削減することができる。メインメモリ１１からローカルメモリ１６へのデータ転送よりもローカルメモリ１６内でのデータコピーの方が処理時間は短い。このため、データ転送の処理時間を短くすることができ、全体の処理速度を向上させることができる。
【００７９】
また、データを再利用するための他の方法が用いられてもよい。すなわち、メモリ制御装置１３は、第１のタスクが演算処理装置１４により実行される際に、ローカルメモリ１６における画像データへのアクセス時に演算処理装置１４が指定する第１のアドレスを第２のアドレスに変換してもよい。ここで、第２のアドレスは、演算処理装置１４によるアクセス対象の座標位置の画像データのローカルメモリ１６におけるアドレス空間上の実際の記憶位置を示すアドレスである。すなわち、メモリ制御装置１３は、上述のように記憶位置を修正するのではなく、演算処理装置１４により指定されるアドレスを別のアドレスに読み替えることにより、適切に演算処理装置１４が画像データにアクセスできるようにしてもよい。なお、メモリ制御装置１３は、例えば、ローカルメモリ１６の論理アドレスであるベースアドレスを変更する。
【００８０】
図１６は、アドレスの変更によりローカルメモリ１６上のデータを再利用する場合の画像処理装置３０の動作の一例を示すフローチャートである。図１６に示されるフローチャートは、図１５に示されるフローチャートのステップ３０２がステップ４００に置き換えられたものである。
【００８１】
ステップ４００（Ｓ４００）では、タスク制御装置１５は、メモリ制御装置１３に対し、重なり領域についてのローカルメモリ１６のベースアドレスを変更するよう命令を出す。ステップ４００における処理は、ローカルメモリ１６内でデータのコピーを行う代わりに、ローカルメモリ１６の物理アドレスに対する論理アドレスを変更するようにしたものである。
【００８２】
図１４Ｆを参照して説明すると、ステップ４００では、ローカルメモリ１６のアドレス空間６４上の記憶位置６５の先頭位置の論理アドレスを記憶位置６６の先頭位置の論理アドレスに変更する処理が行われる。この処理では、物理アドレスは変わらないので、ローカルメモリ１６に置かれているデータに変更はなく、見かけ上データを転送したように扱うことができる。このため、ローカルメモリ１６内でコピーした場合と同様、演算処理装置１４は、第１のタスクによるアクセス範囲の画像データに適切にアクセスすることができる。
【００８３】
ローカルメモリ１６内でコピーした場合、コピーの時間がかかる。これに対し、図１６に示す方法によれば、アドレスの変更を行うことで、データのコピー処理を省くことができ、さらに処理を高速化することができる。
【００８４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【００８５】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【００８６】
１    画像処理システム
１０、３０、１００    画像処理装置
１１    メインメモリ
１２    キャッシュメモリ
１３    メモリ制御装置
１４ａ、１４ｂ、１４ｃ、１４ｄ    演算処理装置
１５    タスク制御装置
１６    ローカルメモリ
２０    コンパイル装置
１０１    第１のメモリ
１０２    第２のメモリ
１０３    第１の演算部
１０４    第２の演算部
１０５    メモリ制御装置
１１０    キャッシュメモリ
１２０    メインメモリ
【図１】
2017097066.tif 000003
【図２】
2017097066.tif 000004
【図３】
2017097066.tif 000005
【図４】
2017097066.tif 000006
【図５】
2017097066.tif 000007
【図６】
2017097066.tif 000008
【図７】
2017097066.tif 000009
【図８】
2017097066.tif 000010
【図９】
2017097066.tif 000011
【図１０】
2017097066.tif 000012
【図１１】
2017097066.tif 000013
【図１２】
2017097066.tif 000014
【図１３】
2017097066.tif 000015
【図１４Ａ】
2017097066.tif 000016
【図１４Ｂ】
2017097066.tif 000017
【図１４Ｃ】
2017097066.tif 000018
【図１４Ｄ】
2017097066.tif 000019
【図１４Ｅ】
2017097066.tif 000020
【図１４Ｆ】
2017097066.tif 000021
【図１５】
2017097066.tif 000022
【図１６】
2017097066.tif 000023