(57)【要約】【課題】複数の１次キャッシュ間におけるデータ転送を効率よく行なうことができるデータ処理装置を提供する。【解決手段】本発明のデータ処理装置１は、複数の演算器１１、２１、３２、４１と、複数の１次キャッシュ１２、２２、３２、４２と、２次キャッシュ５０と、順次連続的に接続された複数のバッファキャッシュ１３、２３、３３、４３とを備えている。第１段目のバッファキャッシュ１３には２次キャッシュ５０からデータが転送されており、複数のバッファキャッシュ１３、２３、３３、４３は、各バッファキャッシュ１３、２３、３３、４３のデータの一部を後段側に順次転送すると共に、各バッファキャッシュ１３、２３、３３、４３のデータの一部を各バッファキャッシュ１３、２３、３３、４３に対応する１次キャッシュ１２、２２、３２、４２に転送する。【選択図】図１
2011008485.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算器と、
前記複数の演算器の各々に設けられ、対応する演算器にデータを転送する複数の第１キャッシュと、
前記複数の演算器に共有化され、前記複数の演算器の各処理に利用されるデータを格納する第２キャッシュと、
前記複数の第１キャッシュの各々に設けられ、対応する第１キャッシュにデータを転送する複数のバッファキャッシュと
を備え、
前記複数のバッファキャッシュは、前記第２キャッシュに接続され、前記第２キャッシュからデータが転送される第１段目のバッファキャッシュを含み、
前記複数のバッファキャッシュの各々は、前記第１段目のバッファキャッシュから順次連続的に接続されており、
前記複数のバッファキャッシュの各々は、前記第２キャッシュから前記第１段目のバッファキャッシュに転送されたデータの一部を、各バッファキャッシュの後段側に順次転送すると共に、各バッファキャッシュに格納されているデータの一部を、各バッファキャッシュに対応する第１キャッシュに転送すること特徴とするデータ処理装置。
【請求項２】
前記複数のバッファキャッシュの各々は、各バッファキャッシュに対応する演算器の処理に必要なデータを、各バッファキャッシュに対応する第１キャッシュに転送することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記複数の第１キャッシュの各々は、各第１キャッシュの記憶領域のうち、対応するバッファキャッシュから転送されるデータの格納に不要となる記憶不要領域の記憶動作を停止させることを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記複数のバッファキャッシュの各々は、各バッファキャッシュの後段側のバッファキャッシュに対応する演算器の処理に必要なデータを、各バッファキャッシュの後段側のバッファキャッシュに転送することを特徴とする請求項１〜３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記複数のバッファキャッシュの各々は、各バッファキャッシュの記憶領域のうち、前段のバッファキャッシュから転送されるデータの格納に不要となる記憶不要領域の記憶動作を停止させることを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記データ処理装置は、自身が処理すべきプログラムの実行に基づくデータアクセスパターンを解析し、その解析結果を用いてプログラムを処理するものであり、
前記複数の演算器の各処理に必要なデータは、前記データ処理装置が処理するプログラムのデータアクセスパターンの解析結果に基づいて特定されることを特徴とする請求項３または５に記載のデータ処理装置。
【請求項７】
前記プログラムのデータアクセスパターンの解析結果に基づいて前記複数の演算器の各処理に必要なデータを特定する特定部と、
前記複数の第１キャッシュの各々に設けられ、前記特定部による特定結果に基づいて、対応する第１キャッシュの記憶不要領域の記憶動作を停止させる第１実行部と、
前記複数のバッファキャッシュの各々に設けられ、前記特定部による特定結果に基づいて、対応するバッファキャッシュの記憶不要領域の記憶動作を停止させる第２実行部と
をさらに備えていることを特徴とする請求項６に記載のデータ処理装置。
【請求項８】
前記データ処理装置が処理するプログラムは、あらかじめデータアクセスパターンの解析が行なわれており、
前記複数の演算器の各処理に必要なデータは、前記プログラムのデータアクセスパターンの解析内容に基づいてあらかじめ特定されており、
前記複数の第１キャッシュの各々は、前記複数の演算器の各処理に必要なデータを格納すべく、各第１キャッシュの記憶領域があらかじめ設定されており、
前記複数のバッファキャッシュの各々は、前記複数の演算器の各処理に必要なデータを、対応する第１キャッシュに転送すべく、各バッファキャッシュの記憶領域があらかじめ設定されていることを特徴とする請求項１に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
複数のプロセッサを接続し、複数のプロセッサの各々による処理を同期して行なうことができるマルチプロセッサシステムに好適なキャッシュ方式に関する。特に、本発明は、このキャッシュ方式を用いたデータ供給によりデータ処理するデータ処理装置に関する。
【背景技術】
【０００２】
近年、組み込み機器が取り扱う情報量が増大し、低消費電力、且つ、最低性能保証可能なプロセッサの需要が急速に高まっている。これまで、最低性能の保証は専用ハードウェア化による実現が一般的であった。
【０００３】
最近では、次々に策定される画像や無線等の新規格に追随したり、製品差別化のためのフィルタ微調整や出荷後の機能更新に対応したりするには、時間的及び経済的コストが大きい専用ハードウェアの採用が難しくなって来ている。
【０００４】
ところで、デジタルシネマ等に用いられる高解像度の画像処理の需要が、近年、高まって来ている。デジタルシネマ等の高解像度の画像を補正するためのフィルタ処理の計算量は膨大であり、既存のプロセッサによるリアルタイム処理は不可能である。また、定常的に１サイクルごとに１画素を生成できるような専用ハードウェアに匹敵する性能を有し、且つ、汎用的な機械語命令を実行可能な、高性能、且つ、柔軟なアーキテクチャは、現在のところ皆無である。
【０００５】
このようなこのような状況を考慮して、マルチコアやメニイコア（例えば、非特許文献１〜３を参照）及び、リコンフィギャラブルデータパス（例えば、非特許文献４を参照）が現在有望視されている。
【０００６】
マルチコアやメニイコアは、様々な粒度に分割したアプリケーションプログラムを複数コアにより並列実行するアーキテクチャである。これらマルチコアやメニイコアは一般的な並列プログラミング手法を利用することができるという有利な点を持っている。
【０００７】
また、ソフトウェアが制御可能な局所メモリを備えることにより、予測不能なキャッシュミスによる性能低下をある程度抑制できる。このため、柔軟性と拡張性に優れるだけでなく、コア数増加による最低性能保証も視野に入れることが可能である。
【０００８】
一方、リコンフィギャラブルデータパスは、プロセッサコアよりも粒度の小さい演算器を多数配置し、機能の柔軟性と高速性の両立を図るアーキテクチャである。このリコンフィギャラブルデータパスは、膨大な演算器を配置することにより、専用ハードウェアと同様、比較的低い動作周波数でも高性能プロセッサに匹敵する性能を達成し得るという有利な点を持っている。
【０００９】
ところで、上述したマルチコアや、メニイコア、リコンフィギャラブルデータパスのいずれのアーキテクチャにあっても、プロセッサにスパースカラ型やＶＬＩＷ（Very Long Instruction Word）型を採用するのが一般的である。
【００１０】
このようなプロセッサにおいては、キャッシュ方式の採用が性能向上に大きく寄与する。そのキャッシュ方式としては、複数のプロセッサの各々に１次キャッシュを内蔵させると同時に、外部の主記憶との間に２次キャッシュを設ける方式が挙げられる。この方式では、２次キャッシュのヒット率を高め、主記憶へのアクセスを低減し、プロセッサの性能向上を図っている。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】Vangal, S. et al.: An 80-Tile 1.28TFLOPS Network-on-Chip in 65nm CMOS, ISSCC, pp.98-99 (2007).
【非特許文献２】Bell, S. et al.: Tile64 Processor: A 64-Core SoC with Mesh Interconnect, ISSCC, pp.88-89 (2008).
【非特許文献３】Kyo, S., Okazaki, S. and Arai, T.: An Integrated Memory Array Processor for Embedded Image Recognition Systems, IEEE Transactions on Computers, Vol.56, No.5, pp.622-634 (2007).
【非特許文献４】Becker, J. and Hubner, M.: Run-time reconfigurabilility and other future trends, the 19th annual symposium on Integrated circuits and systems design, pp.9-11 (2006).
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上述したキャッシュ方式を採用する場合では、同時に多数のプロセッサにデータを供給するために、複数のプロセッサの各々に設けられた１次キャッシュ間における内容の転送が必要となる。
【００１３】
しかしながら、上述したアーキテクチャのいずれにおいても、このような複数の１次キャッシュ間における内容転送を効率よく行なうことが困難であるといった課題があった。
【００１４】
上記課題に鑑み、本発明の目的は、複数の１次キャッシュ間におけるデータ転送を効率よく行なうことができるデータ処理装置を提供することにある。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、本発明に係るデータ処理装置は、複数の演算器と、前記複数の演算器の各々に設けられ、対応する演算器にデータを転送する複数の第１キャッシュと、前記複数の演算器に共有化され、前記複数の演算器の各処理に利用されるデータを格納する第２キャッシュと、前記複数の第１キャッシュの各々に設けられ、対応する第１キャッシュにデータを転送する複数のバッファキャッシュとを備え、前記複数のバッファキャッシュは、前記第２キャッシュに接続され、前記第２キャッシュからデータが転送される第１段目のバッファキャッシュを含み、前記複数のバッファキャッシュの各々は、前記第１段目のバッファキャッシュから順次連続的に接続されており、前記複数のバッファキャッシュの各々は、前記第２キャッシュから前記第１段目のバッファキャッシュに転送されたデータの一部を、各バッファキャッシュの後段側に順次転送すると共に、各バッファキャッシュに格納されているデータの一部を、各バッファキャッシュに対応する第１キャッシュに転送する。
【００１６】
上記のデータ処理装置では、各バッファキャッシュは、第２キャッシュから第１段目のバッファキャッシュに転送されるデータの一部を、各バッファキャッシュの後段側に順次転送すると共に、各バッファキャッシュに格納されているデータの一部を各バッファキャッシュに対応する第１キャッシュに転送する。
【００１７】
このため、各第１キャッシュは、各第１キャッシュが格納するデータを、他の第１キャッシュと互いに転送しなうことなく、第２キャッシュに格納されたデータを各第１キャッシュに対応する演算器に転送することができる。
【００１８】
したがって、複数の第１キャッシュ間におけるデータ転送を効率よく行なうことができるデータ処理装置を実現することができる。
【００１９】
前記複数のバッファキャッシュの各々は、各バッファキャッシュに対応する演算器の処理に必要なデータを、各バッファキャッシュに対応する第１キャッシュに転送することが好ましい。
【００２０】
この場合、各バッファキャッシュは、各演算器の処理に必要なデータを各演算器に効率よく転送することができる。
【００２１】
このため、各バッファキャッシュと各演算器との間の不要なデータ転送が低減されるので、データ処理装置の消費電力を削減することができる。
【００２２】
前記複数の第１キャッシュの各々は、各第１キャッシュの記憶領域のうち、対応するバッファキャッシュから転送されるデータの格納に不要となる記憶不要領域の記憶動作を停止させることが好ましい。
【００２３】
この場合、各第１キャッシュの記憶領域のうち、データを格納しない記憶領域の記憶動作を停止させることができる。
【００２４】
このため、各第１キャッシュの不要な記憶領域の記憶動作による消費電力を削減することができ、その結果、データ処理装置の消費電力が削減される。
【００２５】
前記複数のバッファキャッシュの各々は、各バッファキャッシュの後段側のバッファキャッシュに対応する演算器の処理に必要なデータを、各バッファキャッシュの後段側のバッファキャッシュに転送することが好ましい。
【００２６】
この場合、各バッファキャッシュは、各バッファキャッシュの後段側のバッファキャッシュに対応する演算器の処理に必要なデータを後段側のバッファキャッシュに効率よく転送することができる。
【００２７】
このため、各バッファキャッシュと他のバッファキャッシュとの間の不要なデータ転送が低減されるので、データ処理装置の消費電力を削減することができる。
【００２８】
前記複数のバッファキャッシュの各々は、各バッファキャッシュの記憶領域のうち、前段のバッファキャッシュから転送されるデータの格納に不要となる記憶不要領域の記憶動作を停止させることが好ましい。
【００２９】
この場合、各バッファキャッシュの記憶領域のうち、データを格納しない記憶領域の記憶動作を停止させることができる。
【００３０】
このため、各バッファキャッシュの不要な記憶領域の記憶動作による消費電力を削減することができ、その結果、データ処理装置の消費電力が削減される。
【００３１】
前記データ処理装置は、自身が処理すべきプログラムの実行に基づくデータアクセスパターンを解析し、その解析結果を用いてプログラムを処理するものであり、前記複数の演算器の各処理に必要なデータは、前記データ処理装置が処理するプログラムのデータアクセスパターンの解析結果に基づいて特定されることが好ましい。
【００３２】
この場合、データ処理装置が処理するプログラムのデータアクセスパターンがあらかじめ解析されていない場合でも、上記の効果を実現することができる。
【００３３】
前記プログラムのデータアクセスパターンの解析結果に基づいて前記複数の演算器の各処理に必要なデータを特定する特定部と、前記複数の第１キャッシュの各々に設けられ、前記特定部による特定結果に基づいて、対応する第１キャッシュの記憶不要領域の記憶動作を停止させる第１実行部と、前記複数のバッファキャッシュの各々に設けられ、前記特定部による特定結果に基づいて、対応するバッファキャッシュの記憶不要領域の記憶動作を停止させる第２実行部とをさらに備えていることが好ましい。
【００３４】
この場合、各第１キャッシュの記憶領域のうち、データを格納しない記憶領域の記憶動作の停止及び、各バッファキャッシュの記憶領域のうち、データを格納しない記憶領域の記憶動作の停止を、簡単な装置構成で制御することができる。
【００３５】
このため、データ処理装置の製造コストを削減することができる。
【００３６】
前記データ処理装置が処理するプログラムは、あらかじめデータアクセスパターンの解析が行なわれており、前記複数の演算器の各処理に必要なデータは、前記プログラムのデータアクセスパターンの解析内容に基づいてあらかじめ特定されており、前記複数の第１キャッシュの各々は、前記複数の演算器の各処理に必要なデータを格納すべく、各第１キャッシュの記憶領域があらかじめ設定されており、前記複数のバッファキャッシュの各々は、前記複数の演算器の各処理に必要なデータを、対応する第１キャッシュに転送すべく、各バッファキャッシュの記憶領域があらかじめ設定されていることが好ましい。
【００３７】
この場合、各演算器の処理に必要なデータをあらかじめ特定することができるので、各第１キャッシュに必要とされる記憶領域及び、各バッファキャッシュに必要とされる記憶領域をあらかじめ設定することができる。
【００３８】
このため、データ処理装置の装置構成をより簡略化し、消費電力をより削減することができる。
【発明の効果】
【００３９】
本発明のデータ処理装置は、以上のように、複数の演算器と、前記複数の演算器の各々に設けられ、対応する演算器にデータを転送する複数の第１キャッシュと、前記複数の演算器に共有化され、前記複数の演算器の各処理に利用されるデータを格納する第２キャッシュと、前記複数の第１キャッシュの各々に設けられ、対応する第１キャッシュにデータを転送する複数のバッファキャッシュとを備え、前記複数のバッファキャッシュは、前記第２キャッシュに接続され、前記第２キャッシュからデータが転送される第１段目のバッファキャッシュを含み、前記複数のバッファキャッシュの各々は、前記第１段目のバッファキャッシュから順次連続的に接続されており、前記複数のバッファキャッシュの各々は、前記第２キャッシュから前記第１段目のバッファキャッシュに転送されたデータの一部を、各バッファキャッシュの後段側に順次転送すると共に、各バッファキャッシュに格納されているデータの一部を、各バッファキャッシュに対応する第１キャッシュに転送する。
【００４０】
それゆえ、複数の１次キャッシュ間におけるデータ転送を効率よく行なうことができるという効果を奏する。
【図面の簡単な説明】
【００４１】
【図１】本発明の実施の形態１に係るデータ処理装置の概略構成を示すブロック図である。
【図２】一般的なぼかし処理を行なうためのプログラムを説明するための説明図である。
【図３】図２のプログラムを用いた従来の並列処理の手順を説明するための説明図である（その１）。
【図４】図２のプログラムを用いた従来の並列処理の手順を説明するための説明図である（その２）。
【図５】図２のプログラムを用いた従来の並列処理の手順を説明するための説明図である（その３）。
【図６】図２のプログラムを用いた本発明の実施の形態１に係る並列処理の手順を説明するための説明図である（その１）。
【図７】図２のプログラムを用いた本発明の実施の形態１に係る並列処理の手順を説明するための説明図である（その２）。
【図８】図２のプログラムを用いた本発明の実施の形態１に係る並列処理の手順を説明するための説明図である（その３）。
【図９】図２のプログラムを用いた本発明の実施の形態１に係る並列処理の手順を説明するための説明図である（その４）。
【図１０】本発明の実施の形態２に係るデータ処理装置の概略構成を示すブロック図である。
【図１１】図１０のキャッシュ方式を説明するための説明図である。
【発明を実施するための形態】
【００４２】
以下、図面を参照しつつ本発明の実施の形態について説明する。以下の説明に用いる図面では、同一の部品に同一の符号を付してある。それらの名称及び機能も同一である。したがって、それらについての詳細な説明は繰り返さない。
【００４３】
（実施の形態１）
図１は、本発明の実施の形態１に係るデータ処理装置の概略構成を示すブロック図である。
【００４４】
本発明の実施の形態１に係るデータ処理装置１は、図１に示すように、第１段演算部１０と、第２段演算部２０と、第３段演算部３０と、第４段演算部４０と、２次キャッシュ（第２キャッシュ）５０と、メインメモリ６０と、を備えている。
【００４５】
そして、第１段演算部１０は、演算器１１と、１次キャッシュ（第１キャッシュ）１２と、バッファキャッシュ１３と、転送制御部（特定部）１４と、第１の転送実行部（第１実行部）１５と、第２の転送実行部（第２実行部）１６と、を有している。同様に、第２段演算部２０は、演算器２１と、１次キャッシュ２２と、バッファキャッシュ２３と、転送制御部２４と、第１の転送実行部２５と、第２の転送実行部２６と、を有している。第３段演算部３０は、演算器３１と、１次キャッシュ３２と、バッファキャッシュ３３と、転送制御部３４と、第１の転送実行部３５と、第２の転送実行部３６と、を有している。第４段演算部４０は、演算器４１と、１次キャッシュ４２と、バッファキャッシュ４３と、転送制御部４４と、第１の転送実行部４５と、第２の転送実行部４６と、を有している。
【００４６】
本実施の形態に係るデータ処理装置１は、自身が処理するプログラム（命令）及びデータ（以下、このプログラム（命令）及びデータを単に「データ」と呼ぶ場合もある。）を長期的に格納するメインメモリ６０と、メインメモリ６０に格納されているプログラム（命令）及びデータの一部を短期的に格納する２次キャッシュ５０と、２次キャッシュ５０に格納されているプログラム（命令）及びデータの一部を一時的に格納する複数の１次キャッシュ１２、２２、３２、４２及び複数のバッファキャッシュ１３、２３、３３、４３と、から構成されたメモリ方式を持っている。
【００４７】
メインメモリ６０は、第１〜４段演算部１０、２０、３０、４０により使用されるプログラム（命令）及びデータを格納する。メインメモリ６０は、第１〜４段演算部１０、２０、３０、４０が実際に使用中及び使用中でない、のいずれのプログラム（命令）及びデータも長期的に格納する。このため、メインメモリ６０は、アクセス機能よりも格納機能が重視されており、低速でも大容量であることが要求される。
【００４８】
また、メインメモリ６０は、公知の磁気ディスク、光磁気ディスク、磁気テープを用いることができる。
【００４９】
さらに、メインメモリ６０は、第１〜４段演算部１０、２０、３０、４０からは一種の入出力装置という位置づけとなる。したがって、本実施の形態に係るデータ処理装置１は、メインメモリ６０に代えて、データ処理装置１がデータ処理をするのに必要なプログラム（命令）及びデータを収集する入力装置と、データ処理装置１によるデータ処理の結果をユーザーが使えるようにするための出力装置と、からなる外部Ｉ／Ｏを用いても構わない。
【００５０】
２次キャッシュ５０は、第１〜４段演算部１０、２０、３０、４０が実際に使用中のプログラム（命令）及びデータを格納する。この２次キャッシュ５０は、第１〜４段演算部１０、２０、３０、４０の各々の演算器１１、２１、３１、４１による直接アクセスが可能である。すなわち、２次キャッシュ５０は、演算器１１、２１、３１、４１により共有化されている。
【００５１】
このため、２次キャッシュ５０は、アクセス機能よりも格納機能が重視されているメインメモリ６０に対し、格納機能よりもアクセス機能が重視されている。そして、２次キャッシュ５０には、小容量でも高速性が要求される。
【００５２】
また、２次キャッシュ５０は、公知のＤＲＡＭ、ＳＲＡＭ等の半導体メモリを用いることができる。
【００５３】
１次キャッシュ１２、２２、３２、４２及びバッファキャッシュ１３、２３、３３、４３は、各演算器１１、２１、３１、４１との間において直接データ転送を行なう。そして、これら１次キャッシュ１２、２２、３２、４２及びバッファキャッシュ１３、２３、３３、４３は、２次キャッシュ５０に格納されている、各演算器１１、２１、３１、４１が実際に使用中のプログラム（命令）及びデータを順次、２次キャッシュ５０から取得しつつ、各演算器１１、２１、３１、４１に転送する。
【００５４】
第１段演算部１０のバッファキャッシュ（第１段目のバッファキャッシュ）１３は、２次キャッシュ５０に接続するように配置されており、２次キャッシュ５０との間において直接のデータ転送を行なう。第１段演算部１０のバッファキャッシュ１３は、自身と２次キャッシュ５０との間において取り交わすデータの最小単位（以下、「ブロック」と呼ぶ場合もある。）を格納可能な容量を持っている。第１段演算部１０のバッファキャッシュ１３と２次キャッシュ５０との間におけるデータ転送は、このブロック単位で行なわれる。
【００５５】
一方、第２段演算部２０のバッファキャッシュ２３、第３段演算部３０のバッファキャッシュ３３及び第４段演算部４０のバッファキャッシュ４３は、２次キャッシュ５０との間においては直接のデータ転送を行なわない。
【００５６】
すなわち、バッファキャッシュ１３、２３、３３、４３は、バッファキャッシュ１３を第１段目とし、バッファキャッシュ１３から順次連続的に接続された配置構成を有している。そして、バッファキャッシュ１３、２３、３３、４３は、２次キャッシュ５０からバッファキャッシュ１３に転送されたデータを、各々の後段側に順次転送することができる。
【００５７】
具体的には、第２段演算部２０のバッファキャッシュ２３は、第１段演算部１０のバッファキャッシュ１３に接続するように配置されており、第１段演算部１０のバッファキャッシュ１３との間において直接のデータ転送を行なう。第３段演算部３０のバッファキャッシュ３３は、第２段演算部２０のバッファキャッシュ２３に接続するように配置されており、第２段演算部２０のバッファキャッシュ２３との間において直接のデータ転送を行なう。そして、第４段演算部４０のバッファキャッシュ４３は、第３段演算部３０のバッファキャッシュ３３に接続するように配置されており、第３段演算部３０のバッファキャッシュ３３との間において直接のデータ転送を行なう。上記のいずれのデータ転送も、上記のブロック単位で行なわれる。
【００５８】
第１段演算部１０のバッファキャッシュ１３は、２次キャッシュ５０から１ブロックのデータ転送が行なわれると、そのデータ転送が行なわれる直前までに格納していたデータを第１段演算部１０の１次キャッシュ１２に転送する。そして、この１次キャッシュ１２は、バッファキャッシュ１３から１ブロック毎のデータが転送される度に、自身が格納する数ブロックのデータを更新する。
【００５９】
また、このバッファキャッシュ１３は、１次キャッシュ１２へのデータ転送にあわせて、１次キャッシュ１２に転送したデータと同一のデータを第２段演算部２０のバッファキャッシュ２３に転送する。
【００６０】
なお、バッファキャッシュ１３から１次キャッシュ１２へのデータ転送及び、バッファキャッシュ１３から第２段演算部２０のバッファキャッシュ２３へのデータ転送においては、バッファキャッシュ１３に格納されている１ブロックのすべてのデータがデータ転送の対象となるものではない。データ転送を受ける１次キャッシュ１２及び、バッファキャッシュ２３が要求するデータのみが転送されてもよい。
【００６１】
第２段演算部２０のバッファキャッシュ２３は、第１段演算部１０のバッファキャッシュ１３から１ブロックのデータ転送が行なわれると、そのデータ転送が行なわれる直前までに格納していたデータを第２段演算部２０の１次キャッシュ２２に転送する。そして、この１次キャッシュ２２は、バッファキャッシュ２３から１ブロック毎のデータが転送される度に、自身が格納する数ブロックのデータを更新する。
【００６２】
なお、バッファキャッシュ２３から１次キャッシュ２２へのデータ転送及び、バッファキャッシュ２３から第３段演算部３０のバッファキャッシュ３３へのデータ転送においては、バッファキャッシュ２３に格納されている１ブロックのすべてのデータがデータ転送の対象となるものではない。データ転送を受ける１次キャッシュ２２及び、バッファキャッシュ３３が要求するデータのみが転送されてもよい。
【００６３】
第３段演算部３０のバッファキャッシュ３３は、第２段演算部２０のバッファキャッシュ２３から１ブロックのデータ転送が行なわれると、そのデータ転送が行なわれる直前までに格納していたデータを第３段演算部３０の１次キャッシュ３２に転送する。そして、この１次キャッシュ３２は、バッファキャッシュ３３から１ブロック毎のデータが転送される度に、自身が格納する数ブロックのデータを更新する。
【００６４】
なお、バッファキャッシュ３３から１次キャッシュ３２へのデータ転送及び、バッファキャッシュ３３から第４段演算部４０のバッファキャッシュ４３へのデータ転送においては、バッファキャッシュ３３に格納されている１ブロックのすべてのデータがデータ転送の対象となるものではない。データ転送を受ける１次キャッシュ３２及び、バッファキャッシュ４３が要求するデータのみが転送されてもよい。
【００６５】
第４段演算部４０のバッファキャッシュ４３は、第３段演算部３０のバッファキャッシュ３３から１ブロックのデータ転送が行なわれると、そのデータ転送が行なわれる直前までに格納していたデータを第４段演算部４０の１次キャッシュ４２に転送する。そして、この１次キャッシュ４２は、バッファキャッシュ４３から１ブロック毎のデータが転送される度に、自身が格納する数ブロックのデータを更新する。
【００６６】
なお、バッファキャッシュ４３から１次キャッシュ４２へのデータ転送においては、バッファキャッシュ４３に格納されている１ブロックのすべてのデータがデータ転送の対象となるものではない。データ転送を受ける１次キャッシュ４２が要求するデータのみが転送されてもよい。
【００６７】
１次キャッシュ１２、２２、３２、４２及びバッファキャッシュ１３、２３、３３、４３はいずれも、低容量でも高速な半導体メモリである、公知のＥＣＬ／ＢｉＣＭＯＳのＳＲＡＭ、ＥＣＬ等の高速ＳＲＡＭを用いて実現することができる。
【００６８】
第１段演算部１０の転送制御部１４は、第１の転送実行部１５及び第２の転送実行部１６の各データ転送実行処理を制御する。第１の転送実行部１５は、転送制御部１４からの制御内容に従って、バッファキャッシュ１３と１次キャッシュ１２との間におけるデータ転送を実行する。第２の転送実行部１６は、転送制御部１４からの制御内容に従って、バッファキャッシュ１３とバッファキャッシュ２３との間におけるデータ転送を実行する。
【００６９】
第２段演算部２０の転送制御部２４は、第１の転送実行部２５及び第２の転送実行部２６の各データ転送実行処理を制御する。第１の転送実行部２５は、転送制御部２４からの制御内容に従って、バッファキャッシュ２３と１次キャッシュ２２との間におけるデータ転送を実行する。第２の転送実行部２６は、転送制御部２４からの制御内容に従って、バッファキャッシュ２３とバッファキャッシュ３３との間におけるデータ転送を実行する。
【００７０】
第３段演算部３０の転送制御部３４は、第１の転送実行部３５及び第２の転送実行部３６の各データ転送実行処理を制御する。第１の転送実行部３５は、転送制御部３４からの制御内容に従って、バッファキャッシュ３３と１次キャッシュ３２との間におけるデータ転送を実行する。第２の転送実行部３６は、転送制御部３４からの制御内容に従って、バッファキャッシュ３３とバッファキャッシュ４３との間におけるデータ転送を実行する。
【００７１】
第４段演算部４０の転送制御部４４は、第１の転送実行部４５及び第２の転送実行部４６の各データ転送実行処理を制御する。第１の転送実行部４５は、転送制御部４４からの制御内容に従って、バッファキャッシュ４３と１次キャッシュ４２との間におけるデータ転送を実行する。第２の転送実行部４６は、転送制御部４４からの制御内容に従って、バッファキャッシュ４３と後段のバッファキャッシュ（図示省略）との間におけるデータ転送を実行する。
【００７２】
次に、本実施の形態に係るデータ処理装置１のキャッシュ方式について説明する。以下では、３×３の画素からぼかし処理を行なう例を用いて、データ処理装置１のキャッシュ方式について説明する。図２に、このぼかし処理を行なうためのプログラムを示す。
【００７３】
図２のプログラム（命令）２は、ぼかし処理の対象となる３×３画素に対し、その中心画素の上下左右の画素を用いて、ぼかし処理を実行するためのプログラム（命令）である。なお、上記のような３×３画素からぼかし処理を行なう場合、３×３画素を構成する９画素すべての画素値を用いるのが一般的である。ここでは、データ処理装置１のキャッシュ方式の説明の容易化を図るために、上記のように上下左右の４つの画素を用いるぼかし処理を例としている。もちろん、本発明は、３×３画素を構成する９つの画素すべての画素値を用いるぼかし処理にも適用可能であることは言うまでもない。
【００７４】
一般に、画像処理においては、対象となる画素群を少しずつ一定方向にずらしつつ、１行毎に演算を行なう処理が多い。このため、次の処理に必要となるデータは予測可能である。上記のプログラム（命令）２を用いるぼかし処理においては、３×３の画素に対してぼかし処理が繰り返される。例えば、対象となる画素群が例えば水平方向に１画素分ずつ移動するとすれば、垂直方向の２行分は再利用することができ、新たに必要となるのは垂直方向の１行分のみである。
【００７５】
そこで、データ処理装置１のキャッシュ方式においては、第１段演算部１０のバッファキャッシュ１３に、第１段演算部１０の演算器１１が新たに必要とする垂直方向の１行分のデータが２次キャッシュ５０から供給される。
【００７６】
第２段演算部２０のバッファキャッシュ２３に、第２段演算部２０の演算器２１が新たに必要とする垂直方向の１行分のデータが第１段演算部１０のバッファキャッシュ１３から供給される。
【００７７】
第３段演算部３０のバッファキャッシュ３３に、第３段演算部３０の演算器３１が新たに必要とする垂直方向の１行分のデータが第２段演算部２０のバッファキャッシュ２３から供給される。
【００７８】
第４段演算部４０のバッファキャッシュ４３に、第４段演算部４０の演算器４１が新たに必要とする垂直方向の１行分のデータが第３段演算部３０のバッファキャッシュ３３から供給される。
【００７９】
このようなデータ転送の結果、例えば、第２段演算部２０のバッファキャッシュ２３には、第１段演算部１０のバッファキャッシュ１３の１世代前のデータが格納され、第３段演算部３０のバッファキャッシュ３３には、第２段演算部２０のバッファキャッシュ２３の１世代前のデータが格納されることになる。
【００８０】
ここで、データ処理装置１の第１〜４段演算部１０、２０、３０、４０の各々が２次キャッシュ５０の内容を直接参照する構成を採用することは現実的ではない。２次キャッシュ５０に必要なポート数が大幅に増大してしまうからである。
【００８１】
そこで、データ処理装置１では、第１〜４段演算部１０、２０、３０、４０の各々が２次キャッシュ５０の内容を直接参照せず、第１〜４段演算部１０、２０、３０、４０の各々に対応する１次キャッシュ１２、２２、３２、４２及びバッファキャッシュ１３、２３、３３、４３を直接参照する構成を採用する。
【００８２】
このようにデータ処理装置１は、第１〜４段演算部１０、２０、３０、４０の各々が、プログラム（命令）２を用い、第１〜４段演算部１０、２０、３０、４０の各演算器１１、２１、３１、４１が並列的にぼかし処理する。そして、データ処理装置１は、第１〜４段演算部１０、２０、３０、４０の各々の処理結果を用いて、１つの画面全体のぼかし処理を実行する。
【００８３】
次に、データ処理装置１のキャッシュ方式の動作について説明する。
【００８４】
先ず、図３を用いて、図２のプログラム（命令）２の並列処理について、従来の手法を用いた場合に予想される処理手順を説明する。図３において、４つの演算器１１ａ、２１ａ、３１ａ、４１ａの各々が、１次キャッシュ１２ａ、２２ａ、３２ａ、４２ａを持っているとする。
【００８５】
この場合、演算器１１ａは、３×３の同一の画素群Ａにおける、中心画素の上側に位置する画素のデータを用いた処理を実行する。演算器２１ａは、その中心画素の下側に位置する画素のデータを用いた処理を実行する。演算器３１ａは、その中心画素の右側に位置する画素のデータを用いた処理を実行する。演算器４１ａは、その中心画素の左側に位置する画素のデータを用いた処理を実行する。
【００８６】
より具体的には、図４に示すように、時刻ｔ＝１において、外部より供給されるデータが１次キャッシュ１２ａに格納される。そして、この１次キャッシュ１２ａに格納されたデータを用いて、演算器１１ａは、３×３の同一の画素群Ａにおける、中心画素の上側に位置する画素のデータを用いた処理を実行する。
【００８７】
次に、時刻ｔ＝２において、１次キャッシュ２２ａに格納されたデータを用いて、演算器２１ａは、その中心画素の下側に位置する画素のデータを用いた処理を実行する。この時、原則的には、１次キャッシュ１２ａに格納されているデータのすべてが１次キャッシュ２２ａに転送される必要がある。
【００８８】
同様に、時刻ｔ＝３において、１次キャッシュ３２ａに格納されたデータを用いて、演算器３１ａは、その中心画素の右側に位置する画素のデータを用いた処理を実行する。この時も、原則的には、１次キャッシュ２２ａに格納されているデータのすべてが１次キャッシュ３２ａに転送される必要がある。
【００８９】
さらに同様に、時刻ｔ＝４において、１次キャッシュ４２ａに格納されたデータを用いて、演算器４１ａは、その中心画素の左側に位置する画素のデータを用いた処理を実行する。この時も、原則的には、１次キャッシュ３２ａに格納されているデータのすべてが１次キャッシュ４２ａに転送される必要がある。
【００９０】
ここで、上記の時刻ｔ＝４において、演算器１１ａ、２１ａ、３１ａの各処理の状態について説明する。
【００９１】
図５に示すように、演算器３１ａの処理対象は、演算器４１ａの処理対象である３×３の画素群Ａを水平方向に１画素分だけずらした３×３の画素群Ｂである。
【００９２】
また、演算器３１ａの処理対象は、演算器４１ａの処理対象である３×３の画素群Ａを水平方向に１画素分だけずらした３×３の画素群Ｂである。
【００９３】
同様に、演算器２１ａの処理対象は、演算器４１ａの処理対象である３×３の画素群Ａを水平方向に２画素分だけずらした３×３の画素群Ｃである。言いかえれば、演算器２１ａの処理対象は、演算器３１ａの処理対象である３×３の画素群Ｂを水平方向に１画素分だけずらした３×３の画素群Ｃである。
【００９４】
さらに同様に、演算器１１ａの処理対象は、演算器４１ａの処理対象である３×３の画素群Ａを水平方向に３画素分だけずらした３×３の画素群Ｄである。言いかえれば、演算器１１ａの処理対象は、演算器２１ａの処理対象である３×３の画素群Ｃを水平方向に１画素分だけずらした３×３の画素群Ｄである。
【００９５】
このことから分かるように、１次キャッシュ１２ａのうち毎サイクル更新されるデータは、２次キャッシュ５０ａから送り込まれるデータのみである。このため、実際には、１次キャッシュ１２ａに格納されているデータのすべてを１次キャッシュ２２ａに転送する必要はない。すなわち、１次キャッシュ１２ａは、２次キャッシュ５０ａから送り込まれたデータのみを、１次キャッシュ２２ａに転送すれば良い。
【００９６】
そして、このことは、１次キャッシュ２２ａから１次キャッシュ３２ａへのデータ転送及び、１次キャッシュ３２ａから１次キャッシュ４２ａへのデータ転送についても同様である。
【００９７】
そこで、本実施の形態に係るデータ処理装置１においては、図６に示すように、１次キャッシュ１２及びバッファキャッシュ１３が、演算器１１にとっての本来の１次キャッシュとしての役割を担っている。同様に、１次キャッシュ２２及びバッファキャッシュ２３が、演算器２１にとっての本来の１次キャッシュとしての役割を、１次キャッシュ３２及びバッファキャッシュ３３が、演算器３１にとっての本来の１次キャッシュとしての役割を、１次キャッシュ４２及びバッファキャッシュ４３が、演算器４１にとって本来の１次キャッシュとしての役割を、それぞれが担っている。
【００９８】
そして、図１に示したように、第１段演算部１０から第２段演算部２０へのデータ転送はバッファキャッシュ１３とバッファキャッシュ２３との間において実行される。同様に、第２段演算部２０から第３段演算部３０へのデータ転送はバッファキャッシュ２３とバッファキャッシュ３３との間において実行され、第３段演算部３０から第４段演算部４０へのデータ転送はバッファキャッシュ３３とバッファキャッシュ４３との間において実行される。
【００９９】
具体的には、図６に示したように、例えば３×３の画素における、垂直方向の１行分の画素データ「１７、２７、３７」が２次キャッシュ５０から第１段演算部１０のバッファキャッシュ１３に送り込まれると、それまでのバッファキャッシュ１３に格納されていた垂直方向の１行分の画素データ「１６、２６、３６」が第１段演算部１０の１次キャッシュ１２に転送されると共に、第２段演算部２０のバッファキャッシュ２３に転送される。
【０１００】
同様に、垂直方向の１行分の画素データ「１６、２６、３６」が第１段演算部１０のバッファキャッシュ１３から第２段演算部２０のバッファキャッシュ２３に送り込まれると、それまでのバッファキャッシュ２３に格納されていた垂直方向の１行分の画素データ「１５、２５、３５」が第２段演算部２０の１次キャッシュ２２に転送されると共に、第３段演算部３０のバッファキャッシュ３３に転送される。
【０１０１】
また、垂直方向の１行分の画素データ「１５、２５、３５」が第２段演算部２０のバッファキャッシュ２３から第３段演算部３０のバッファキャッシュ３３に送り込まれると、それまでのバッファキャッシュ３３に格納されていた垂直方向の１行分の画素データ「１４、２４、３４」が第３段演算部３０の１次キャッシュ３２に転送されると共に、第４段演算部４０のバッファキャッシュ４３に転送される。
【０１０２】
さらに、垂直方向の１行分の画素データ「１４、２４、３４」が第３段演算部３０のバッファキャッシュ３３から第４段演算部４０のバッファキャッシュ４３に送り込まれると、それまでのバッファキャッシュ４３に格納されていた垂直方向の１行分の画素データ「１３、２３、３３」が第４段演算部４０の１次キャッシュ４２に転送されると共に、例えば後段の演算部（図示省略）のバッファキャッシュ（図示省略）に転送される。
【０１０３】
次に、本発明の実施の形態に係るデータ処理装置１のキャッシュ方式の動作に特徴部分について説明する。
【０１０４】
上述したように、データ処理装置１は、第１〜４段演算部１０、２０、３０、４０の各々が転送制御部１４、２４、３４、４４、第１の転送実行部１５、２５、３５、４５、及び、第２の転送実行部１６、２６、３６、４６を有している。データ処理装置１においては、転送制御部１４、２４、３４、４４及び、第１の転送実行部１５、２５、３５、４５の各々の動作により、バッファキャッシュ１３、２３、３３、４３と１次キャッシュ１２、２２、３２、４２との間におけるデータ転送を制御する。また、転送制御部１４、２４、３４、４４及び、第２の転送実行部１６、２６、３６、４６の各々の動作により、バッファキャッシュ１３、２３、３３、４３間におけるデータ転送を制御する。
【０１０５】
以下では、３つの実施例を用いて、この動作について具体的に説明する。
【０１０６】
（実施例１）
この実施例１は、バッファキャッシュ１３、２３、３３、４３と１次キャッシュ１２、２２、３２、４２との間におけるデータ転送を制御する実施例である。
【０１０７】
図７において、演算器１１は、３×３の同一の画素群における、中心画素の上側に位置する画素のデータを用いた処理を実行する。演算器２１は、その中心画素の下側に位置する画素のデータを用いた処理を実行する。演算器３１は、その中心画素の右側に位置する画素のデータを用いた処理を実行する。演算器４１は、その中心画素の左側に位置する画素のデータを用いた処理を実行する。
【０１０８】
この場合、第１段演算部１０においては、１次キャッシュ１２に格納されるべきデータのうち、演算器１１が必要とするデータは、水平方向に１行分の画素データ「１２、１３、１４、１５、１６、１７」である。一方、図６に示した他の画素データ「２２、２３、２４、２５、２６、２７、３２、３３、３４、３５、３６、３７」は不要となる。
【０１０９】
このため、転送制御部１４は、バッファキャッシュ１３から送り込まれる１ブロック分の画素データのうち、３×３の画素群における、中心画素の上側に位置する画素のデータのみが１次キャッシュ１２に格納されるよう、第１の転送実行部１５を制御する。
【０１１０】
第１の転送実行部１５は、転送制御部１４からの制御内容に従って、１次キャッシュ１２の全記憶領域のうち、不要となる記憶領域（記憶不要領域）の記憶動作を停止させる。
【０１１１】
そうすることにより、バッファキャッシュ１３から送り込まれる１ブロック分の画素データのうち、演算器１１が必要とするデータのみが、１次キャッシュ１２に格納されることになる。
【０１１２】
同様に、第２段演算部２０においては、１次キャッシュ２２に格納されるべきデータのうち、演算器２１が必要とするデータは、水平方向に１行分の画素データ「３２、３３、３４、３５、３６」である。一方、図６に示した他の画素データ「１２、１３、１４、１５、１６、２２、２３、２４、２５、２６」は不要となる。
【０１１３】
このため、転送制御部２４は、バッファキャッシュ２３から送り込まれる１ブロック分の画素データのうち、３×３の画素群における、中心画素の下側に位置する画素のデータのみが１次キャッシュ２２に格納されるよう、第１の転送実行部２５を制御する。
【０１１４】
第１の転送実行部２５は、転送制御部２４からの制御内容に従って、１次キャッシュ２２の全記憶領域のうち、不要となる記憶領域（記憶不要領域）の記憶動作を停止させる。
【０１１５】
そうすることにより、バッファキャッシュ２３から送り込まれる１ブロック分の画素データのうち、演算器２１が必要とするデータのみが、１次キャッシュ２２に格納されることになる。
【０１１６】
また、第３段演算部３０においては、１次キャッシュ３２に格納されるべきデータのうち、演算器３１が必要とするデータは、水平方向に１行分の画素データ「２２、２３、２４、２５」である。一方、図６に示した他の画素データ「１２、１３、１４、１５、３２、３３、３４、３５」は不要となる。
【０１１７】
このため、転送制御部３４は、バッファキャッシュ３３から送り込まれる１ブロック分の画素データのうち、３×３の画素群における、中心画素の右側に位置する画素のデータのみが１次キャッシュ３２に格納されるよう、第１の転送実行部３５を制御する。
【０１１８】
第１の転送実行部３５は、転送制御部３４からの制御内容に従って、１次キャッシュ３２の全記憶領域のうち、不要となる記憶領域（記憶不要領域）の記憶動作を停止させる。
【０１１９】
そうすることにより、バッファキャッシュ３３から送り込まれる１ブロック分の画素データのうち、演算器３１が必要とするデータのみが、１次キャッシュ３２に格納されることになる。
【０１２０】
さらに、第４段演算部４０においては、１次キャッシュ４２に格納されるべきデータのうち、演算器４１が必要とするデータは、水平方向に１行分の画素データ「２２、２３、２４」である。一方、図６に示した他の画素データ「１２、１３、１４、３２、３３、３４」は不要となる。
【０１２１】
このため、転送制御部４４は、バッファキャッシュ４３から送り込まれる１ブロック分の画素データのうち、３×３の画素群における、中心画素の左側に位置する画素のデータのみが１次キャッシュ４２に格納されるよう、第１の転送実行部４５を制御する。
【０１２２】
第１の転送実行部４５は、転送制御部４４からの制御内容に従って、１次キャッシュ４２の全記憶領域のうち、不要となる記憶領域（記憶不要領域）の記憶動作を停止させる。
【０１２３】
そうすることにより、バッファキャッシュ４３から送り込まれる１ブロック分の画素データのうち、演算器４１が必要とするデータのみが、１次キャッシュ４２に格納されることになる。
【０１２４】
このようにして、１次キャッシュ１２、２２、３２、４２の各々における不要な記憶領域の記憶動作を停止させることができる。このため、１次キャッシュ１２、２２、３２、４２の各々の消費電力を、各々の全記憶領域を動作させる場合と比較して、大幅に削減することができる。
【０１２５】
また、バッファキャッシュ１３、２３、３３、４３と１次キャッシュ１２、２２、３２、４２との間におけるデータ転送量自体も減らすことができ、その結果、各データ転送に要する消費電力も削減することができる。
【０１２６】
したがって、この実施例１によれば、データ処理装置１の消費電力を大幅に削減することができる。
【０１２７】
（実施例２）
この実施例２は、バッファキャッシュ１３、２３、３３、４３と１次キャッシュ１２、２２、３２、４２との間におけるデータ転送を制御する他の実施例である。
【０１２８】
この実施例２では、図８に示すように、上記の実施例１において、１次キャッシュ１２、２２、３２、４２の各々における記憶動作を停止させる記憶領域をさらに増加させたものである。
【０１２９】
この実施例２では、図８において、上記の実施例１と同様、演算器１１は、３×３の同一の画素群における、中心画素の上側に位置する画素のデータを用いた処理を実行する。演算器２１は、その中心画素の下側に位置する画素のデータを用いた処理を実行する。演算器３１は、その中心画素の右側に位置する画素のデータを用いた処理を実行する。演算器４１は、その中心画素の左側に位置する画素のデータを用いた処理を実行する。
【０１３０】
ここで、本実施例２が上記の実施例１と異なる点は、例えば、第１段演算部１０であれば、演算器１１が実際に用いるデータを１次キャッシュ１２内の画素データ「１６」に絞っている点である。
【０１３１】
この場合、第１段演算部１０においては、上記の実施例１とは異なり、図７に示した画素データ「１６」のみ、格納できればよい。
【０１３２】
このため、転送制御部１４は、バッファキャッシュ１３から送り込まれる１ブロック分の画素データのうち、３×３の画素群における、中心画素の上側に位置する画素のデータのみが１次キャッシュ１２に格納されるよう、第１の転送実行部１５を制御する。
【０１３３】
さらに、転送制御部１４は、バッファキャッシュ１３から順次送り込まれるデータが、そのデータの送り込み直後のみにおいて１次キャッシュ１２に格納されるよう、第１の転送実行部１５を制御する。
【０１３４】
第１の転送実行部１５は、転送制御部１４からの制御内容に従って、１次キャッシュ１２の全記憶領域のうち、不要となる記憶領域（記憶不要領域）の記憶動作を停止させる。
【０１３５】
そうすることにより、バッファキャッシュ１３から送り込まれる１ブロック分の画素データのうち、演算器１１が実際に用いるデータのみが、１次キャッシュ１２に格納されることになる。
【０１３６】
同様に、第２段演算部２０であれば、演算器２１が実際に用いるデータを１次キャッシュ２２内の画素データ「３５」に絞っている点である。
【０１３７】
この場合、第２段演算部２０においては、上記の実施例１とは異なり、図７に示した画素データ「３５」のみ、格納できればよい。
【０１３８】
このため、転送制御部２４は、バッファキャッシュ２３から送り込まれる１ブロック分の画素データのうち、３×３の画素群における、中心画素の下側に位置する画素のデータのみが１次キャッシュ２２に格納されるよう、第１の転送実行部２５を制御する。
【０１３９】
さらに、転送制御部２４は、バッファキャッシュ２３から順次送り込まれるデータが、そのデータの送り込み直後のみにおいて１次キャッシュ２２に格納されるよう、第１の転送実行部２５を制御する。
【０１４０】
第１の転送実行部２５は、転送制御部２４からの制御内容に従って、１次キャッシュ２２の全記憶領域のうち、不要となる記憶領域（記憶不要領域）の記憶動作を停止させる。
【０１４１】
そうすることにより、バッファキャッシュ２３から送り込まれる１ブロック分の画素データのうち、演算器２１が実際に用いるデータのみが、１次キャッシュ２２に格納されることになる。
【０１４２】
第３段演算部３０であれば、演算器３１が実際に用いるデータをバッファキャッシュ３３内の画素データ「２５」に絞っている点である。
【０１４３】
この場合、第３段演算部３０においては、上記の実施例１とは異なり、１次キャッシュ２２による画素データの格納は不要となる。
【０１４４】
このため、転送制御部３４は、バッファキャッシュ３３から送り込まれる１ブロック分の画素データが１次キャッシュ３２に格納されないよう、第１の転送実行部３５を制御する。
【０１４５】
第１の転送実行部３５は、転送制御部３４からの制御内容に従って、１次キャッシュ３２の全記憶領域のうち、不要となる記憶領域（記憶不要領域）、すなわち、全記憶領域の記憶動作を停止させる。
【０１４６】
バッファキャッシュ３３から送り込まれる１ブロック分の画素データはいずれも、１次キャッシュ３２に格納されない。
【０１４７】
第４段演算部４０であれば、演算器４１が実際に用いるデータを１次キャッシュ４２内の画素データ「２２」に絞っている点である。
【０１４８】
この場合、第４段演算部４０においては、上記の実施例１とは異なり、図７に示した画素データ「２２、２３」のみ、格納できればよい。
【０１４９】
このため、転送制御部４４は、バッファキャッシュ４３から送り込まれる１ブロック分の画素データのうち、３×３の画素群における、中心画素の左側に位置する画素のデータのみが１次キャッシュ４２に格納されるよう、第１の転送実行部４５を制御する。
【０１５０】
さらに、転送制御部４４は、バッファキャッシュ４３から順次送り込まれるデータが、そのデータの送り込み直後から、その中心画素の左側に位置するまで、１次キャッシュ４２に格納されるよう、第１の転送実行部４５を制御する。
【０１５１】
第１の転送実行部４５は、転送制御部４４からの制御内容に従って、１次キャッシュ４２の全記憶領域のうち、不要となる記憶領域（記憶不要領域）の記憶動作を停止させる。
【０１５２】
そうすることにより、バッファキャッシュ４３から送り込まれる１ブロック分の画素データのうち、演算器４１が実際に用いるデータのみが、１次キャッシュ４２に格納されることになる。
【０１５３】
このようにして、１次キャッシュ１２、２２、３２、４２の各々における不要な記憶領域の記憶動作を停止させることができる。このため、１次キャッシュ１２、２２、３２、４２の各々の消費電力を、各々の全記憶領域を動作させる場合と比較して、大幅に削減することができる。
【０１５４】
また、バッファキャッシュ１３、２３、３３、４３と１次キャッシュ１２、２２、３２、４２との間におけるデータ転送量自体も減らすことができ、その結果、各データ転送に要する消費電力も削減することができる。
【０１５５】
したがって、この実施例２によれば、データ処理装置１の消費電力を大幅に削減することができる。
【０１５６】
（実施例３）
この実施例３は、上記の実施例１及び２とは異なり、バッファキャッシュ１３、２３、３３、４３間におけるデータ転送を制御する実施例である。
【０１５７】
図９において、演算器１１は、３×３の同一の画素群における、中心画素の上側に位置する画素のデータを用いた処理を実行する。演算器２１は、その中心画素の下側に位置する画素のデータを用いた処理を実行する。演算器３１は、その中心画素の右側に位置する画素のデータを用いた処理を実行する。演算器４１は、その中心画素の左側に位置する画素のデータを用いた処理を実行する。
【０１５８】
したがって、バッファキャッシュ１３からバッファキャッシュ２３へのデータ転送においては、演算器１１が必要とする、３×３の画素群における、中心画素の上側に位置する画素のデータ「１７」を、バッファキャッシュ２３に転送する必要はない。言いかえれば、演算器２１、３１、４１が必要とする、その中心画素の下側及び左右側に位置する画素のデータ「２７、３７」を転送しなければならない。
【０１５９】
このため、転送制御部１４は、バッファキャッシュ１３からバッファキャッシュ２３に送り込まれるデータとして、３×３の画素群における、中心画素の上側に位置する画素のデータを除くデータが設定されるよう、第２の転送実行部１６を制御する。
【０１６０】
第２の転送実行部１６は、転送制御部１４からの制御内容に従って、バッファキャッシュ１３に送り込まれた１ブロック分のデータのうち、バッファキャッシュ１３がバッファキャッシュ２３に送り込むべきデータを設定する。
【０１６１】
そうすることにより、バッファキャッシュ１３に送り込まれた１ブロック分の画素データのうち、演算器２１、３１、４１が必要とするデータのみが、バッファキャッシュ２３に転送されることになる。
【０１６２】
同様に、バッファキャッシュ２３からバッファキャッシュ３３へのデータ転送においては、演算器２１が必要とする、３×３の画素群における、中心画素の下側に位置する画素のデータ「３６」を、バッファキャッシュ３３に転送する必要はない。言いかえれば、演算器３１、４１が必要とする、その中心画素の左右側に位置する画素のデータ「２６」を転送しなければならない。
【０１６３】
このため、転送制御部２４は、バッファキャッシュ２３からバッファキャッシュ３３に送り込まれるデータとして、３×３の画素群における、中心画素の上下側に位置する画素のデータを除くデータが設定されるよう、第２の転送実行部２６を制御する。
【０１６４】
第２の転送実行部２６は、転送制御部２４からの制御内容に従って、バッファキャッシュ２３に送り込まれたデータのうち、バッファキャッシュ２３がバッファキャッシュ３３に送り込むべきデータを設定する。
【０１６５】
そうすることにより、バッファキャッシュ２３に送り込まれた画素データのうち、演算器３１、４１が必要とするデータのみが、バッファキャッシュ３３に転送されることになる。
【０１６６】
また、バッファキャッシュ３３からバッファキャッシュ４３へのデータ転送においては、演算器４１が必要とする、その中心画素の左側に位置する画素のデータ「２５」を転送しなければならない。
【０１６７】
このため、転送制御部３４は、バッファキャッシュ３３からバッファキャッシュ４３に送り込まれるデータとして、３×３の画素群における、中心画素の左側に位置する画素のデータが設定されるよう、第２の転送実行部３６を制御する。
【０１６８】
第２の転送実行部３６は、転送制御部３４からの制御内容に従って、バッファキャッシュ３３に送り込まれたデータのうち、バッファキャッシュ３３がバッファキャッシュ４３に送り込むべきデータを設定する。
【０１６９】
そうすることにより、バッファキャッシュ３３に送り込まれた画素データのうち、演算器４１が必要とするデータのみが、バッファキャッシュ４３に転送されることになる。
【０１７０】
このようにして、バッファキャッシュ１３、２３、３３、４３間におけるデータ転送量を減らすことができ、その結果、各データ転送に要する消費電力を削減することができる。
【０１７１】
したがって、この実施例３によれば、データ処理装置１の消費電力を大幅に削減することができる。
【０１７２】
上記の実施例１〜３においては、上述したように、第１〜４段演算部１０、２０、３０、４０の各々において、転送制御部１４、２４、３４、４４及び、第１の転送実行部１５、２５、３５、４５の各々の動作により、バッファキャッシュ１３、２３、３３、４３と１次キャッシュ１２、２２、３２、４２との間におけるデータ転送を制御する。また、転送制御部１４、２４、３４、４４及び、第２の転送実行部１６、２６、３６、４６の各々の動作により、バッファキャッシュ１３、２３、３３、４３間におけるデータ転送を制御する。
【０１７３】
ここで、転送制御部１４、２４、３４、４４による、第１の転送実行部１５、２５、３５、４５及び、第２の転送実行部１６、２６、３６、４６の各動作の制御は、例えば、データ処理装置１が処理するプログラム（命令）に公知の自動並列化を行なう際に用いられるデータアクセスパターン解析の結果に基づいて実行すればよい。ここで、このデータアクセスパターン解析とは、そのプログラム実行に基づくデータアクセスの規則性を解析することを意味する。
【０１７４】
一般に、１つのプログラムの処理を並列処理しようとする場合、その並列化のための作業として、プログラムのタスクへの分割、タスク間のデータアクセスパターンの解析に基づく並列性の検出及び指示、各タスクのプロセッサへの配置、及び、プロセッサ間のデータ通信コード及び同期コードの挿入、が必要となる。
【０１７５】
これらの作業のうち、データアクセスパターンの解析が、例えば、データ処理装置１により自動的に実行される。並列性が意識されずにプログラミングされたプログラムのデータアクセスパターンの解析が実行され、その解析結果を用いてプログラムの処理がデータ処理装置１により実行される。
【０１７６】
転送制御部１４、２４、３４、４４は、プログラムの解析の後、プログラムの解析の結果を参照し、演算器１１、２１、３１、４１の各々による処理内容を検出する。そして、転送制御部１４、２４、３４、４４は、その検出結果を用いて、１次キャッシュ１２、２２、３２、４２及びバッファキャッシュ１３、２３、３３、４３の各々に格納すべきデータを特定する。
【０１７７】
転送制御部１４、２４、３４、４４は、その特定結果に従って、第１の転送実行部１５、２５、３５、４５及び、第２の転送実行部１６、２６、３６、４６の各動作を制御する。
【０１７８】
一方、上記のアクセスパターンの解析のための作業は、プログラマーがプログラミングする際に、あらかじめ実行されている場合もある。つまり、プログラマーが、例えばデータ処理装置１のために定められた記述方法によって、明示的にアクセスパターンの記述を行なった場合である。言い換えれば、データ処理装置１が処理するプログラムのデータアクセスパターンの解析が、あらかじめ行なわれている場合である。
【０１７９】
この場合では、プログラムのアクセスパターンの解析内容をあらかじめ取得することができるので、その解析内容に基づき、１次キャッシュ１２、２２、３２、４２及びバッファキャッシュ１３、２３、３３、４３の記憶領域をあらかじめ減らしておくことができる。
【０１８０】
さらに、転送制御部１４、２４、３４、４４、第１の転送実行部１５、２５、３５、４５及び、第２の転送実行部１６、２６、３６、４６は不要となる。
【０１８１】
このため、データ処理装置１の装置構成の簡略化、消費電力のさらなる削減が可能となる。
【０１８２】
上述したデータアクセスパターンの解析を含むプログラムの並列化については、例えば、本田弘樹、「並列処理のためのシステムソフトウェア―３．自動並列化コンパイラ―」、情報処理、Vol. 34、No.9、pp．1150―1157に記載されている。
【０１８３】
（実施の形態２）
次に、本発明の実施の形態２について説明する。本発明の実施の形態２は、上記の実施の形態１に係るデータ処理装置１の具体的な構成に係る実施の形態である。
【０１８４】
本実施の形態に係るデータ処理装置は、公知のＶＬＩＷ命令を実行できるｎ個のＶＬＩＷプロセッサを直列に配置し、それらｎ個のＶＬＩＷプロセッサの各々にレジスタファイル、演算器、キャッシュを連結するＬｉｎｅａｒ  Ａｒｒａｙ  Ｐｉｐｅｌｉｎｅ  Ｐｒｏｃｅｓｓｏｒである。
【０１８５】
本実施の形態に係るデータ処理装置は、２つの動作状態、すなわち、通常動作状態（非アレイ動作状態）及びアレイ動作状態を持つ。既存プログラム資産を利用できるように、通常動作時には、初段のみが動作し、既存のＶＬＩＷプロセッサと同様に動作する。そのため、初段のレジスタは、初段の演算器及びＬＤ／ＳＴユニットからのフィードバックを備える。
【０１８６】
一方、アレイ動作時には、ｎ段全体にＶＬＩＷ命令がマッピングされ、終了条件を満たすまで同じ命令列を繰り返し実行する。
【０１８７】
このようにして単体の演算器に比べ、最大ｎ倍の並列処理を実行することができる。
【０１８８】
図１０は、本発明の実施の形態２に係るデータ処理装置の概略構成を示すブロック図である。
【０１８９】
図１０に示すように、本実施の形態に係るデータ処理装置３は、命令フェッチ部７０と、命令デコード部８０と、ｒｅｇ（レジスタファイル部）１〜ｒｅｇｎと、演算器１〜演算器ｎと、ＬＤ／ＳＴ（ロード／ストア部）１〜ＬＤ／ＳＴｎと、１次キャッシュ１〜１次キャッシュｎと、バッファキャッシュ１〜バッファキャッシュｎと、２次キャッシュ５０と、メインメモリ６０と、を備えている。
【０１９０】
命令フェッチ部７０は、命令メモリ部（図示省略）から必要な命令をフェッチして、命令デコード部８０は、そのフェッチした命令をデコードする。命令デコード部８０によるデコード結果により、演算器１〜演算器ｎにおける処理内容が決定する。
【０１９１】
このデータ処理装置３では、公知のＶＬＩＷ方式によるプロセッサアーキテクチャを前提としており、命令フェッチ部７０により例えば３２ビット幅の命令が例えば４個同時にフェッチされ、命令デコード部８０によりそれらフェッチされた命令が同時にデコードされるものと想定する。
【０１９２】
このデータ処理装置３において、第１段演算部は、ｒｅｇ１、演算器１、ＬＤ／ＳＴ１、１次キャッシュ１及び、バッファキャッシュ１を含んでいる。また、この第１段演算部は、上記の実施の形態１の転送制御部、第１の転送実行部及び、第２の転送実行部も含んでいる。なお、図面の見易さを図るため、図１０には、これら転送制御部、第１の転送実行部及び、第２の転送実行部は表示されていない。以下の他の演算部においても同様である。
【０１９３】
同様に、第２段演算部は、ｒｅｇ２、演算器２、ＬＤ／ＳＴ２、１次キャッシュ２及び、バッファキャッシュ２を含んでいる。また、この第２段演算部は、上記の実施の形態１の転送制御部、第１の転送実行部及び、第２の転送実行部も含んでいる。
【０１９４】
第３段演算部は、ｒｅｇ３、演算器３、ＬＤ／ＳＴ３、１次キャッシュ３及び、バッファキャッシュ３を含んでいる。また、この第３段演算部は、上記の実施の形態１の転送制御部、第１の転送実行部及び、第２の転送実行部も含んでいる。
【０１９５】
第４段演算部は、ｒｅｇ４、演算器４、ＬＤ／ＳＴ４、１次キャッシュ４及び、バッファキャッシュ４を含んでいる。また、この第４段演算部は、上記の実施の形態１の転送制御部、第１の転送実行部及び、第２の転送実行部も含んでいる。
【０１９６】
第ｎ段演算部は、ｒｅｇｎ、演算器ｎ、ＬＤ／ＳＴｎ、１次キャッシュｎ及び、バッファキャッシュｎを含んでいる。また、この第ｎ段演算部は、上記の実施の形態１の転送制御部、第１の転送実行部及び、第２の転送実行部も含んでいる。
【０１９７】
なお、図面の見易さを図るため、図１０には、第１〜ｎ段演算部の各々の転送制御部、第１の転送実行部及び、第２の転送実行部は表示していない。
【０１９８】
ｒｅｇ１〜ｒｅｇｎは、各々が対応する演算器１〜演算器ｎにおける演算処理に必要なデータを保持するものである。ｒｅｇ１〜ｒｅｇｎの各々は、複数のレジスタからなるレジスタ群（図示省略）と、そのレジスタ群の各レジスタの読み出しデータを外部に転送するための転送器（図示省略）と、を有している。
【０１９９】
レジスタ群の各レジスタに対する読み出しや書き込みは、命令デコード部８０によるデコード結果に基づいて実行される。レジスタ群の各レジスタは、自身のレジスタ番号をアクセスのキーとして読み出しや書き込みがされる。
【０２００】
ｒｅｇ１〜ｒｅｇｎの転送器は、読み出しレジスタ番号が指定されると、その指定された番号が付されたレジスタに保持されているデータを外部に転送する。
【０２０１】
ｒｅｇ１〜ｒｅｇｎの各レジスタ群のレジスタ同士は一対一に対応している。具体的には、ｒｅｇ１〜ｒｅｇｎの各レジスタ群の各レジスタ間においてレジスタ番号が同一のもの同士が対応付けられている。
【０２０２】
演算器１〜演算器ｎの各々は、データ処理装置３における実体的な処理を行なうものである。演算器１〜演算器ｎの各々は、上記の実施の形態１の演算器の各々に相当するものである。
【０２０３】
演算器１〜演算器ｎの各々は、複数の演算器からなる演算器群（図示省略）と、複数の保持器からなる保持器群（図示省略）と、転送器（図示省略）と、を有している。
【０２０４】
ｒｅｇ１〜ｒｅｇｎの各々の転送器は、各レジスタ群のレジスタの読み出しデータを対応する演算器１〜演算器ｎに転送可能である。そして、演算器１〜演算器ｎの演算器群の各演算器は、ｒｅｇ１〜ｒｅｇｎの各レジスタのうちから２つの読み出しデータを取得し、それらデータを用いて四則演算や論理演算等各種の演算処理を実行する。各演算器の演算処理は同時に実行される。
【０２０５】
演算器１〜演算器ｎの保持器群の各保持器は、各々に対応する演算器の演算結果を格納する。各保持器は、各演算器と一対一に対応している。
【０２０６】
演算器１〜演算器ｎの転送器は、対応する各保持器に格納されている、各演算器の演算結果を外部に転送する。
【０２０７】
ＬＤ／ＳＴ１〜ＬＤ／ＳＴｎの各々は、複数のＬＤ（ロード部）からなるロード部群（図示省略）と、複数のＳＴ（ストア部）からなるストア部群と、を有している。
【０２０８】
１次キャッシュ１〜１次キャッシュｎの各々は、各々が対応するＬＤ／ＳＴ１〜ＬＤ／ＳＴｎに接続されており、ＬＤ／ＳＴ１〜ＬＤ／ＳＴｎによるロード、ストア動作に従って読み出し及び書き込みが高速に実行される。１次キャッシュ１〜１次キャッシュｎの各々はは、大容量の２次キャッシュ５０とは別の小容量のキャッシュメモリを用いて構成されている。
【０２０９】
バッファキャッシュ１〜バッファキャッシュｎの各々は、最大で全内容を次段以降に伝搬させるために容量を極めて小さくする必要がある。このため、バッファキャッシュ１〜バッファキャッシュｎの各々は、１次キャッシュ１〜１次キャッシュｎの各々と同様、大容量の２次キャッシュ５０とは別の小容量のキャッシュメモリを用いて構成されている。
【０２１０】
このデータ処理装置３は、公知のＶＬＩＷ方式によるプロセッサアーキテクチャを前提としており、このため、ＶＬＩＷ形式の機械語命令は通常、第１段演算部を構成する、ｒｅｇ１、演算器１、ＬＤ／ＳＴ１、１次キャッシュ１及び、バッファキャッシュ１により実行される。すなわち、ＶＬＩＷ方式による演算処理の動作（非アレイ動作）は、第１段演算部により実行される。
【０２１１】
したがって、上記の実施の形態１における、複数の演算器による演算処理の同時動作（アレイ動作）を開始するために必要となるレジスタ情報は、常時、ｒｅｇ１に格納されている。
【０２１２】
そして、命令デコード部８０によるデコード結果によりアレイ動作開始命令が検出された場合、演算器１〜演算器ｎに対して、各演算器１〜演算器ｎによる演算処理に必要なデータを格納するレジスタのレジスタ番号を表わすソースレジスタ番号、各演算器１〜演算器ｎによる演算処理の演算種別、及び、各演算器１〜演算器ｎの演算結果の格納先であるレジスタのレジスタ番号を表わすデスティネーションレジスタ番号、からなる制御情報Ａが第１〜ｎ段演算部の各々に設定される。
【０２１３】
この制御情報Ａは、アレイ動作開始命令の付加情報として配置すればよい。この場合、アレイ動作開始命令のデコード時に制御情報Ａを一度に獲得することができる。
【０２１４】
また、この制御情報Ａは、後続のＶＬＩＷ命令列自身として供給してもよい。この場合、アレイ動作開始命令をデコードした後、引き続き後続するＶＬＩＷ命令を順にデコードし、ループの繰り返しを意味する後方分岐命令、すなわちアレイ動作の最終段に対応する命令をデコードするまでの間に、ループからの脱出を意味する前方分岐命令、すなわちアレイ動作の終結条件に対応する命令を検出して、休止条件としてセットできる。このため、既存命令列に付加すべき制御情報を削減することができる。
【０２１５】
この際、各演算器１〜演算器ｎによる演算処理に必要なデータは、前段から順次伝搬されてくることを前提にすれば、演算器１〜演算器ｎのすべてに対して一斉に制御情報を放送する必要はなく、各演算器１〜演算器ｎに最初のデータが到着すると同時に制御情報が到着する構成とすることができる。
【０２１６】
アレイ動作開始後は、例えばループ構造の１イタレーションが演算器ネットワークに写像されており、データを順次流し込むことにより大量のデータ処理を行なう。
【０２１７】
すなわち、アレイ動作開始後は、該アレイ動作が終了するまでの間、各演算器１〜演算器ｎに対する制御情報を変更する必要がなく、また、非アレイ動作時に必要であった命令デコード部８０によるデコード動作を実行する必要がなくなる。このため、命令デコード部８０は停止し、さらに、命令フェッチ部７０によるフェッチ動作も同様に停止することができる。
【０２１８】
また、制御情報Ａに、各演算器１〜演算器ｎのアレイ動作を停止させるためのアレイ動作終結条件を付加しておき、アレイ動作中にあらかじめ指示した条件が満たされた場合に、自動的に非アレイ動作に復帰する構成とする。
【０２１９】
このアレイ動作終結条件とは、具体的には、各演算器１〜演算器ｎの実行サイクル数等である。
【０２２０】
２次キャッシュ５０は、ＬＤ／ＳＴ１が保有するバッファキャッシュ１のみに接続されている。そして、第２段以降については、バッファキャッシュ１のデータが順次伝搬されている。
【０２２１】
ロード命令は、ｒｅｇ１に格納されたアドレス情報を演算器１において加減算して得られるアドレスに従って１次キャッシュ１及びバッファキャッシュ１を参照し、得られたデータをＬＤ／ＳＴ１のストア部群のストア部に格納される。
【０２２２】
このストア部に格納されたデータは、次のサイクルにおいて、後段の演算器２またはｒｅｇ２の入力となる。
【０２２３】
次に、データ処理装置３のキャッシュ方式の動作について説明する。図１１は、データ処理装置３のキャッシュ方式を説明するための説明図である。
【０２２４】
図１１に示すように、データ処理装置３のキャッシュ方式４では、第１段演算部が１次キャッシュ１０３及びバッファキャッシュ１０４を含み、第２段演算部が１次キャッシュ２０３及びバッファキャッシュ２０４を含み、第３段演算部が１次キャッシュ３０３及びバッファキャッシュ３０４を含み、第４段演算部が１次キャッシュ４０３及びバッファキャッシュ４０４を含み、第５段演算部が１次キャッシュ５０３及びバッファキャッシュ５０４を含み、第６段演算部が１次キャッシュ６０３及びバッファキャッシュ６０４を含み、第７段演算部が１次キャッシュ７０３及びバッファキャッシュ７０４を含み、第８段演算部が１次キャッシュ８０３及びバッファキャッシュ８０４を含み、第９段演算部が１次キャッシュ９０３及びバッファキャッシュ９０４を含んでいる。
【０２２５】
そして、１次キャッシュ１０３がＬＤ／ＳＴ１０１、１０２に接続され、１次キャッシュ２０３がＬＤ／ＳＴ２０１、２０２に接続され、１次キャッシュ３０３がＬＤ／ＳＴ３０１、３０２に接続され、１次キャッシュ４０３がＬＤ／ＳＴ４０１、４０２に接続され、１次キャッシュ５０３がＬＤ／ＳＴ５０１、５０２に接続され、１次キャッシュ６０３がＬＤ／ＳＴ６０１、６０２に接続され、１次キャッシュ７０３がＬＤ／ＳＴ７０１、７０２に接続され、１次キャッシュ８０３がＬＤ／ＳＴ８０１、８０２に接続され、１次キャッシュ９０３がＬＤ／ＳＴ９０１、９０２に接続されている。
【０２２６】
２次キャッシュ５０のバンク数は４ウェイ（Ｗａｙ０、Ｗａｙ１、Ｗａｙ２、Ｗａｙ３）であり、Ｗａｙ０、Ｗａｙ１、Ｗａｙ２の各データからなるブロックがバッファキャッシュ１０４に送り込まれる。
【０２２７】
このキャッシュ方式４では、例えば３×３の画素における、垂直方向の１行分の画素データ「０６、１６、２６」が２次キャッシュ５０から第１段演算部のバッファキャッシュ１０４に送り込まれると、それまでのバッファキャッシュ１０４に格納されていた垂直方向の１行分の画素データ「０５、１５、２５」が第１段演算部の１次キャッシュ１０３に転送されると共に、第２段演算部のバッファキャッシュ２０４に転送される。
【０２２８】
同様に、垂直方向の１行分の画素データ「０５、１５、２５」が第１段演算部のバッファキャッシュ１０４から第２段演算部のバッファキャッシュ２０４に送り込まれると、それまでのバッファキャッシュ２０４に格納されていた垂直方向の１行分の画素データ「０４、１４、２４」が第２段演算部の１次キャッシュ２０３に転送されると共に、第３段演算部のバッファキャッシュ３０４に転送される。
【０２２９】
垂直方向の１行分の画素データ「０４、１４、２４」が第２段演算部のバッファキャッシュ２０４から第３段演算部のバッファキャッシュ３０４に送り込まれると、それまでのバッファキャッシュ３０４に格納されていた垂直方向の１行分の画素データ「０３、１３、２３」が第３段演算部の１次キャッシュ３０３に転送されると共に、第４段演算部のバッファキャッシュ４０４に転送される。
【０２３０】
垂直方向の１行分の画素データ「０３、１３、２３」が第３段演算部のバッファキャッシュ３０４から第４段演算部のバッファキャッシュ４０４に送り込まれると、それまでのバッファキャッシュ４０４に格納されていた垂直方向の１行分の画素データ「０２、１２、２２」が第４段演算部の１次キャッシュ４０３に転送されると共に、第５段演算部のバッファキャッシュ５０４に転送される。
【０２３１】
垂直方向の１行分の画素データ「０２、１２、２２」が第４段演算部のバッファキャッシュ４０４から第５段演算部のバッファキャッシュ５０４に送り込まれると、それまでのバッファキャッシュ５０４に格納されていた垂直方向の１行分の画素データ「０１、１１、２１」が第５段演算部の１次キャッシュ５０３に転送されると共に、第６段演算部のバッファキャッシュ６０４に転送される。
【０２３２】
垂直方向の１行分の画素データ「０１、１１、２１」が第５段演算部のバッファキャッシュ５０４から第６段演算部のバッファキャッシュ６０４に送り込まれると、それまでのバッファキャッシュ６０４に格納されていた垂直方向の１行分の画素データ「００、１０、２０」が第６段演算部の１次キャッシュ６０３に転送されると共に、第７段演算部のバッファキャッシュ７０４に転送される。
【０２３３】
本実施の形態２においても、上記の実施の形態１と同様、第１〜９段演算部の各々の転送制御部、第１の転送実行部及び第２の転送実行部の各動作により、バッファキャッシュ１０４、２０４、３０４、４０４、５０４、６０４、７０４、８０４、９０４と１次キャッシュ１０３、２０３、３０３、４０３、５０３、６０３、７０３、８０３、９０３との間におけるデータ転送を制御し、バッファキャッシュ１０４、２０４、３０４、４０４、５０４、６０４、７０４、８０４、９０４間におけるデータ転送を制御する。
【０２３４】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【０２３５】
本発明は、複数の機械語命令を高速に同時実行するデータ処理装置に好適に利用することができる。
【符号の説明】
【０２３６】
１、３、    データ処理装置
２    ぼかし処理用プログラム
４    キャッシュ方式
１０    第１段演算部
１１、１１ａ、２１、２１ａ、３１、３１ａ、４１、４１ａ    演算器
１２、１２ａ、２２、２２ａ、３２、３２ａ、４２、４２ａ、１０３、２０３、３０３、４０３、５０３、６０３、７０３、８０３、９０３    １次キャッシュ（第１キャッシュ）
１３、２３、３３、４３、１０４、２０４、３０４、４０４、５０４、６０４、７０４、８０４、９０４    バッファキャッシュ
１４、２４、３４、４４    転送制御部（特定部）
１５、２５、３５、４５    第１の転送実行部（第１実行部）
１６、２６、３６、４６    第２の転送実行部（第２実行部）
２０    第２段演算部
３０    第３段演算部
４０    第４段演算部
５０、５０ａ    ２次キャッシュ（第２キャッシュ）
６０    メインメモリ
７０    命令フェッチ部
８０    命令デコード部
１０１、１０２、２０１、２０２、３０１、３０２、４０１、４０２、５０１、５０２、６０１、６０２、７０１、７０２、８０１、８０２、９０１、９０２    ＬＤ／ＳＴ
【図１】
2011008485.tif 000003
【図２】
2011008485.tif 000004
【図３】
2011008485.tif 000005
【図４】
2011008485.tif 000006
【図５】
2011008485.tif 000007
【図６】
2011008485.tif 000008
【図７】
2011008485.tif 000009
【図８】
2011008485.tif 000010
【図９】
2011008485.tif 000011
【図１０】
2011008485.tif 000012
【図１１】
2011008485.tif 000013