説明

データ処理装置

【課題】複数の1次キャッシュ間におけるデータ転送を効率よく行なうことができるデータ処理装置を提供する。
【解決手段】本発明のデータ処理装置1は、複数の演算器11、21、32、41と、複数の1次キャッシュ12、22、32、42と、2次キャッシュ50と、順次連続的に接続された複数のバッファキャッシュ13、23、33、43とを備えている。第1段目のバッファキャッシュ13には2次キャッシュ50からデータが転送されており、複数のバッファキャッシュ13、23、33、43は、各バッファキャッシュ13、23、33、43のデータの一部を後段側に順次転送すると共に、各バッファキャッシュ13、23、33、43のデータの一部を各バッファキャッシュ13、23、33、43に対応する1次キャッシュ12、22、32、42に転送する。

【発明の詳細な説明】
【技術分野】
【0001】
複数のプロセッサを接続し、複数のプロセッサの各々による処理を同期して行なうことができるマルチプロセッサシステムに好適なキャッシュ方式に関する。特に、本発明は、このキャッシュ方式を用いたデータ供給によりデータ処理するデータ処理装置に関する。
【背景技術】
【0002】
近年、組み込み機器が取り扱う情報量が増大し、低消費電力、且つ、最低性能保証可能なプロセッサの需要が急速に高まっている。これまで、最低性能の保証は専用ハードウェア化による実現が一般的であった。
【0003】
最近では、次々に策定される画像や無線等の新規格に追随したり、製品差別化のためのフィルタ微調整や出荷後の機能更新に対応したりするには、時間的及び経済的コストが大きい専用ハードウェアの採用が難しくなって来ている。
【0004】
ところで、デジタルシネマ等に用いられる高解像度の画像処理の需要が、近年、高まって来ている。デジタルシネマ等の高解像度の画像を補正するためのフィルタ処理の計算量は膨大であり、既存のプロセッサによるリアルタイム処理は不可能である。また、定常的に1サイクルごとに1画素を生成できるような専用ハードウェアに匹敵する性能を有し、且つ、汎用的な機械語命令を実行可能な、高性能、且つ、柔軟なアーキテクチャは、現在のところ皆無である。
【0005】
このようなこのような状況を考慮して、マルチコアやメニイコア(例えば、非特許文献1〜3を参照)及び、リコンフィギャラブルデータパス(例えば、非特許文献4を参照)が現在有望視されている。
【0006】
マルチコアやメニイコアは、様々な粒度に分割したアプリケーションプログラムを複数コアにより並列実行するアーキテクチャである。これらマルチコアやメニイコアは一般的な並列プログラミング手法を利用することができるという有利な点を持っている。
【0007】
また、ソフトウェアが制御可能な局所メモリを備えることにより、予測不能なキャッシュミスによる性能低下をある程度抑制できる。このため、柔軟性と拡張性に優れるだけでなく、コア数増加による最低性能保証も視野に入れることが可能である。
【0008】
一方、リコンフィギャラブルデータパスは、プロセッサコアよりも粒度の小さい演算器を多数配置し、機能の柔軟性と高速性の両立を図るアーキテクチャである。このリコンフィギャラブルデータパスは、膨大な演算器を配置することにより、専用ハードウェアと同様、比較的低い動作周波数でも高性能プロセッサに匹敵する性能を達成し得るという有利な点を持っている。
【0009】
ところで、上述したマルチコアや、メニイコア、リコンフィギャラブルデータパスのいずれのアーキテクチャにあっても、プロセッサにスパースカラ型やVLIW(Very Long Instruction Word)型を採用するのが一般的である。
【0010】
このようなプロセッサにおいては、キャッシュ方式の採用が性能向上に大きく寄与する。そのキャッシュ方式としては、複数のプロセッサの各々に1次キャッシュを内蔵させると同時に、外部の主記憶との間に2次キャッシュを設ける方式が挙げられる。この方式では、2次キャッシュのヒット率を高め、主記憶へのアクセスを低減し、プロセッサの性能向上を図っている。
【先行技術文献】
【非特許文献】
【0011】
【非特許文献1】Vangal, S. et al.: An 80-Tile 1.28TFLOPS Network-on-Chip in 65nm CMOS, ISSCC, pp.98-99 (2007).
【非特許文献2】Bell, S. et al.: Tile64 Processor: A 64-Core SoC with Mesh Interconnect, ISSCC, pp.88-89 (2008).
【非特許文献3】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).
【非特許文献4】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).
【発明の概要】
【発明が解決しようとする課題】
【0012】
上述したキャッシュ方式を採用する場合では、同時に多数のプロセッサにデータを供給するために、複数のプロセッサの各々に設けられた1次キャッシュ間における内容の転送が必要となる。
【0013】
しかしながら、上述したアーキテクチャのいずれにおいても、このような複数の1次キャッシュ間における内容転送を効率よく行なうことが困難であるといった課題があった。
【0014】
上記課題に鑑み、本発明の目的は、複数の1次キャッシュ間におけるデータ転送を効率よく行なうことができるデータ処理装置を提供することにある。
【課題を解決するための手段】
【0015】
上記目的を達成するために、本発明に係るデータ処理装置は、複数の演算器と、前記複数の演算器の各々に設けられ、対応する演算器にデータを転送する複数の第1キャッシュと、前記複数の演算器に共有化され、前記複数の演算器の各処理に利用されるデータを格納する第2キャッシュと、前記複数の第1キャッシュの各々に設けられ、対応する第1キャッシュにデータを転送する複数のバッファキャッシュとを備え、前記複数のバッファキャッシュは、前記第2キャッシュに接続され、前記第2キャッシュからデータが転送される第1段目のバッファキャッシュを含み、前記複数のバッファキャッシュの各々は、前記第1段目のバッファキャッシュから順次連続的に接続されており、前記複数のバッファキャッシュの各々は、前記第2キャッシュから前記第1段目のバッファキャッシュに転送されたデータの一部を、各バッファキャッシュの後段側に順次転送すると共に、各バッファキャッシュに格納されているデータの一部を、各バッファキャッシュに対応する第1キャッシュに転送する。
【0016】
上記のデータ処理装置では、各バッファキャッシュは、第2キャッシュから第1段目のバッファキャッシュに転送されるデータの一部を、各バッファキャッシュの後段側に順次転送すると共に、各バッファキャッシュに格納されているデータの一部を各バッファキャッシュに対応する第1キャッシュに転送する。
【0017】
このため、各第1キャッシュは、各第1キャッシュが格納するデータを、他の第1キャッシュと互いに転送しなうことなく、第2キャッシュに格納されたデータを各第1キャッシュに対応する演算器に転送することができる。
【0018】
したがって、複数の第1キャッシュ間におけるデータ転送を効率よく行なうことができるデータ処理装置を実現することができる。
【0019】
前記複数のバッファキャッシュの各々は、各バッファキャッシュに対応する演算器の処理に必要なデータを、各バッファキャッシュに対応する第1キャッシュに転送することが好ましい。
【0020】
この場合、各バッファキャッシュは、各演算器の処理に必要なデータを各演算器に効率よく転送することができる。
【0021】
このため、各バッファキャッシュと各演算器との間の不要なデータ転送が低減されるので、データ処理装置の消費電力を削減することができる。
【0022】
前記複数の第1キャッシュの各々は、各第1キャッシュの記憶領域のうち、対応するバッファキャッシュから転送されるデータの格納に不要となる記憶不要領域の記憶動作を停止させることが好ましい。
【0023】
この場合、各第1キャッシュの記憶領域のうち、データを格納しない記憶領域の記憶動作を停止させることができる。
【0024】
このため、各第1キャッシュの不要な記憶領域の記憶動作による消費電力を削減することができ、その結果、データ処理装置の消費電力が削減される。
【0025】
前記複数のバッファキャッシュの各々は、各バッファキャッシュの後段側のバッファキャッシュに対応する演算器の処理に必要なデータを、各バッファキャッシュの後段側のバッファキャッシュに転送することが好ましい。
【0026】
この場合、各バッファキャッシュは、各バッファキャッシュの後段側のバッファキャッシュに対応する演算器の処理に必要なデータを後段側のバッファキャッシュに効率よく転送することができる。
【0027】
このため、各バッファキャッシュと他のバッファキャッシュとの間の不要なデータ転送が低減されるので、データ処理装置の消費電力を削減することができる。
【0028】
前記複数のバッファキャッシュの各々は、各バッファキャッシュの記憶領域のうち、前段のバッファキャッシュから転送されるデータの格納に不要となる記憶不要領域の記憶動作を停止させることが好ましい。
【0029】
この場合、各バッファキャッシュの記憶領域のうち、データを格納しない記憶領域の記憶動作を停止させることができる。
【0030】
このため、各バッファキャッシュの不要な記憶領域の記憶動作による消費電力を削減することができ、その結果、データ処理装置の消費電力が削減される。
【0031】
前記データ処理装置は、自身が処理すべきプログラムの実行に基づくデータアクセスパターンを解析し、その解析結果を用いてプログラムを処理するものであり、前記複数の演算器の各処理に必要なデータは、前記データ処理装置が処理するプログラムのデータアクセスパターンの解析結果に基づいて特定されることが好ましい。
【0032】
この場合、データ処理装置が処理するプログラムのデータアクセスパターンがあらかじめ解析されていない場合でも、上記の効果を実現することができる。
【0033】
前記プログラムのデータアクセスパターンの解析結果に基づいて前記複数の演算器の各処理に必要なデータを特定する特定部と、前記複数の第1キャッシュの各々に設けられ、前記特定部による特定結果に基づいて、対応する第1キャッシュの記憶不要領域の記憶動作を停止させる第1実行部と、前記複数のバッファキャッシュの各々に設けられ、前記特定部による特定結果に基づいて、対応するバッファキャッシュの記憶不要領域の記憶動作を停止させる第2実行部とをさらに備えていることが好ましい。
【0034】
この場合、各第1キャッシュの記憶領域のうち、データを格納しない記憶領域の記憶動作の停止及び、各バッファキャッシュの記憶領域のうち、データを格納しない記憶領域の記憶動作の停止を、簡単な装置構成で制御することができる。
【0035】
このため、データ処理装置の製造コストを削減することができる。
【0036】
前記データ処理装置が処理するプログラムは、あらかじめデータアクセスパターンの解析が行なわれており、前記複数の演算器の各処理に必要なデータは、前記プログラムのデータアクセスパターンの解析内容に基づいてあらかじめ特定されており、前記複数の第1キャッシュの各々は、前記複数の演算器の各処理に必要なデータを格納すべく、各第1キャッシュの記憶領域があらかじめ設定されており、前記複数のバッファキャッシュの各々は、前記複数の演算器の各処理に必要なデータを、対応する第1キャッシュに転送すべく、各バッファキャッシュの記憶領域があらかじめ設定されていることが好ましい。
【0037】
この場合、各演算器の処理に必要なデータをあらかじめ特定することができるので、各第1キャッシュに必要とされる記憶領域及び、各バッファキャッシュに必要とされる記憶領域をあらかじめ設定することができる。
【0038】
このため、データ処理装置の装置構成をより簡略化し、消費電力をより削減することができる。
【発明の効果】
【0039】
本発明のデータ処理装置は、以上のように、複数の演算器と、前記複数の演算器の各々に設けられ、対応する演算器にデータを転送する複数の第1キャッシュと、前記複数の演算器に共有化され、前記複数の演算器の各処理に利用されるデータを格納する第2キャッシュと、前記複数の第1キャッシュの各々に設けられ、対応する第1キャッシュにデータを転送する複数のバッファキャッシュとを備え、前記複数のバッファキャッシュは、前記第2キャッシュに接続され、前記第2キャッシュからデータが転送される第1段目のバッファキャッシュを含み、前記複数のバッファキャッシュの各々は、前記第1段目のバッファキャッシュから順次連続的に接続されており、前記複数のバッファキャッシュの各々は、前記第2キャッシュから前記第1段目のバッファキャッシュに転送されたデータの一部を、各バッファキャッシュの後段側に順次転送すると共に、各バッファキャッシュに格納されているデータの一部を、各バッファキャッシュに対応する第1キャッシュに転送する。
【0040】
それゆえ、複数の1次キャッシュ間におけるデータ転送を効率よく行なうことができるという効果を奏する。
【図面の簡単な説明】
【0041】
【図1】本発明の実施の形態1に係るデータ処理装置の概略構成を示すブロック図である。
【図2】一般的なぼかし処理を行なうためのプログラムを説明するための説明図である。
【図3】図2のプログラムを用いた従来の並列処理の手順を説明するための説明図である(その1)。
【図4】図2のプログラムを用いた従来の並列処理の手順を説明するための説明図である(その2)。
【図5】図2のプログラムを用いた従来の並列処理の手順を説明するための説明図である(その3)。
【図6】図2のプログラムを用いた本発明の実施の形態1に係る並列処理の手順を説明するための説明図である(その1)。
【図7】図2のプログラムを用いた本発明の実施の形態1に係る並列処理の手順を説明するための説明図である(その2)。
【図8】図2のプログラムを用いた本発明の実施の形態1に係る並列処理の手順を説明するための説明図である(その3)。
【図9】図2のプログラムを用いた本発明の実施の形態1に係る並列処理の手順を説明するための説明図である(その4)。
【図10】本発明の実施の形態2に係るデータ処理装置の概略構成を示すブロック図である。
【図11】図10のキャッシュ方式を説明するための説明図である。
【発明を実施するための形態】
【0042】
以下、図面を参照しつつ本発明の実施の形態について説明する。以下の説明に用いる図面では、同一の部品に同一の符号を付してある。それらの名称及び機能も同一である。したがって、それらについての詳細な説明は繰り返さない。
【0043】
(実施の形態1)
図1は、本発明の実施の形態1に係るデータ処理装置の概略構成を示すブロック図である。
【0044】
本発明の実施の形態1に係るデータ処理装置1は、図1に示すように、第1段演算部10と、第2段演算部20と、第3段演算部30と、第4段演算部40と、2次キャッシュ(第2キャッシュ)50と、メインメモリ60と、を備えている。
【0045】
そして、第1段演算部10は、演算器11と、1次キャッシュ(第1キャッシュ)12と、バッファキャッシュ13と、転送制御部(特定部)14と、第1の転送実行部(第1実行部)15と、第2の転送実行部(第2実行部)16と、を有している。同様に、第2段演算部20は、演算器21と、1次キャッシュ22と、バッファキャッシュ23と、転送制御部24と、第1の転送実行部25と、第2の転送実行部26と、を有している。第3段演算部30は、演算器31と、1次キャッシュ32と、バッファキャッシュ33と、転送制御部34と、第1の転送実行部35と、第2の転送実行部36と、を有している。第4段演算部40は、演算器41と、1次キャッシュ42と、バッファキャッシュ43と、転送制御部44と、第1の転送実行部45と、第2の転送実行部46と、を有している。
【0046】
本実施の形態に係るデータ処理装置1は、自身が処理するプログラム(命令)及びデータ(以下、このプログラム(命令)及びデータを単に「データ」と呼ぶ場合もある。)を長期的に格納するメインメモリ60と、メインメモリ60に格納されているプログラム(命令)及びデータの一部を短期的に格納する2次キャッシュ50と、2次キャッシュ50に格納されているプログラム(命令)及びデータの一部を一時的に格納する複数の1次キャッシュ12、22、32、42及び複数のバッファキャッシュ13、23、33、43と、から構成されたメモリ方式を持っている。
【0047】
メインメモリ60は、第1〜4段演算部10、20、30、40により使用されるプログラム(命令)及びデータを格納する。メインメモリ60は、第1〜4段演算部10、20、30、40が実際に使用中及び使用中でない、のいずれのプログラム(命令)及びデータも長期的に格納する。このため、メインメモリ60は、アクセス機能よりも格納機能が重視されており、低速でも大容量であることが要求される。
【0048】
また、メインメモリ60は、公知の磁気ディスク、光磁気ディスク、磁気テープを用いることができる。
【0049】
さらに、メインメモリ60は、第1〜4段演算部10、20、30、40からは一種の入出力装置という位置づけとなる。したがって、本実施の形態に係るデータ処理装置1は、メインメモリ60に代えて、データ処理装置1がデータ処理をするのに必要なプログラム(命令)及びデータを収集する入力装置と、データ処理装置1によるデータ処理の結果をユーザーが使えるようにするための出力装置と、からなる外部I/Oを用いても構わない。
【0050】
2次キャッシュ50は、第1〜4段演算部10、20、30、40が実際に使用中のプログラム(命令)及びデータを格納する。この2次キャッシュ50は、第1〜4段演算部10、20、30、40の各々の演算器11、21、31、41による直接アクセスが可能である。すなわち、2次キャッシュ50は、演算器11、21、31、41により共有化されている。
【0051】
このため、2次キャッシュ50は、アクセス機能よりも格納機能が重視されているメインメモリ60に対し、格納機能よりもアクセス機能が重視されている。そして、2次キャッシュ50には、小容量でも高速性が要求される。
【0052】
また、2次キャッシュ50は、公知のDRAM、SRAM等の半導体メモリを用いることができる。
【0053】
1次キャッシュ12、22、32、42及びバッファキャッシュ13、23、33、43は、各演算器11、21、31、41との間において直接データ転送を行なう。そして、これら1次キャッシュ12、22、32、42及びバッファキャッシュ13、23、33、43は、2次キャッシュ50に格納されている、各演算器11、21、31、41が実際に使用中のプログラム(命令)及びデータを順次、2次キャッシュ50から取得しつつ、各演算器11、21、31、41に転送する。
【0054】
第1段演算部10のバッファキャッシュ(第1段目のバッファキャッシュ)13は、2次キャッシュ50に接続するように配置されており、2次キャッシュ50との間において直接のデータ転送を行なう。第1段演算部10のバッファキャッシュ13は、自身と2次キャッシュ50との間において取り交わすデータの最小単位(以下、「ブロック」と呼ぶ場合もある。)を格納可能な容量を持っている。第1段演算部10のバッファキャッシュ13と2次キャッシュ50との間におけるデータ転送は、このブロック単位で行なわれる。
【0055】
一方、第2段演算部20のバッファキャッシュ23、第3段演算部30のバッファキャッシュ33及び第4段演算部40のバッファキャッシュ43は、2次キャッシュ50との間においては直接のデータ転送を行なわない。
【0056】
すなわち、バッファキャッシュ13、23、33、43は、バッファキャッシュ13を第1段目とし、バッファキャッシュ13から順次連続的に接続された配置構成を有している。そして、バッファキャッシュ13、23、33、43は、2次キャッシュ50からバッファキャッシュ13に転送されたデータを、各々の後段側に順次転送することができる。
【0057】
具体的には、第2段演算部20のバッファキャッシュ23は、第1段演算部10のバッファキャッシュ13に接続するように配置されており、第1段演算部10のバッファキャッシュ13との間において直接のデータ転送を行なう。第3段演算部30のバッファキャッシュ33は、第2段演算部20のバッファキャッシュ23に接続するように配置されており、第2段演算部20のバッファキャッシュ23との間において直接のデータ転送を行なう。そして、第4段演算部40のバッファキャッシュ43は、第3段演算部30のバッファキャッシュ33に接続するように配置されており、第3段演算部30のバッファキャッシュ33との間において直接のデータ転送を行なう。上記のいずれのデータ転送も、上記のブロック単位で行なわれる。
【0058】
第1段演算部10のバッファキャッシュ13は、2次キャッシュ50から1ブロックのデータ転送が行なわれると、そのデータ転送が行なわれる直前までに格納していたデータを第1段演算部10の1次キャッシュ12に転送する。そして、この1次キャッシュ12は、バッファキャッシュ13から1ブロック毎のデータが転送される度に、自身が格納する数ブロックのデータを更新する。
【0059】
また、このバッファキャッシュ13は、1次キャッシュ12へのデータ転送にあわせて、1次キャッシュ12に転送したデータと同一のデータを第2段演算部20のバッファキャッシュ23に転送する。
【0060】
なお、バッファキャッシュ13から1次キャッシュ12へのデータ転送及び、バッファキャッシュ13から第2段演算部20のバッファキャッシュ23へのデータ転送においては、バッファキャッシュ13に格納されている1ブロックのすべてのデータがデータ転送の対象となるものではない。データ転送を受ける1次キャッシュ12及び、バッファキャッシュ23が要求するデータのみが転送されてもよい。
【0061】
第2段演算部20のバッファキャッシュ23は、第1段演算部10のバッファキャッシュ13から1ブロックのデータ転送が行なわれると、そのデータ転送が行なわれる直前までに格納していたデータを第2段演算部20の1次キャッシュ22に転送する。そして、この1次キャッシュ22は、バッファキャッシュ23から1ブロック毎のデータが転送される度に、自身が格納する数ブロックのデータを更新する。
【0062】
なお、バッファキャッシュ23から1次キャッシュ22へのデータ転送及び、バッファキャッシュ23から第3段演算部30のバッファキャッシュ33へのデータ転送においては、バッファキャッシュ23に格納されている1ブロックのすべてのデータがデータ転送の対象となるものではない。データ転送を受ける1次キャッシュ22及び、バッファキャッシュ33が要求するデータのみが転送されてもよい。
【0063】
第3段演算部30のバッファキャッシュ33は、第2段演算部20のバッファキャッシュ23から1ブロックのデータ転送が行なわれると、そのデータ転送が行なわれる直前までに格納していたデータを第3段演算部30の1次キャッシュ32に転送する。そして、この1次キャッシュ32は、バッファキャッシュ33から1ブロック毎のデータが転送される度に、自身が格納する数ブロックのデータを更新する。
【0064】
なお、バッファキャッシュ33から1次キャッシュ32へのデータ転送及び、バッファキャッシュ33から第4段演算部40のバッファキャッシュ43へのデータ転送においては、バッファキャッシュ33に格納されている1ブロックのすべてのデータがデータ転送の対象となるものではない。データ転送を受ける1次キャッシュ32及び、バッファキャッシュ43が要求するデータのみが転送されてもよい。
【0065】
第4段演算部40のバッファキャッシュ43は、第3段演算部30のバッファキャッシュ33から1ブロックのデータ転送が行なわれると、そのデータ転送が行なわれる直前までに格納していたデータを第4段演算部40の1次キャッシュ42に転送する。そして、この1次キャッシュ42は、バッファキャッシュ43から1ブロック毎のデータが転送される度に、自身が格納する数ブロックのデータを更新する。
【0066】
なお、バッファキャッシュ43から1次キャッシュ42へのデータ転送においては、バッファキャッシュ43に格納されている1ブロックのすべてのデータがデータ転送の対象となるものではない。データ転送を受ける1次キャッシュ42が要求するデータのみが転送されてもよい。
【0067】
1次キャッシュ12、22、32、42及びバッファキャッシュ13、23、33、43はいずれも、低容量でも高速な半導体メモリである、公知のECL/BiCMOSのSRAM、ECL等の高速SRAMを用いて実現することができる。
【0068】
第1段演算部10の転送制御部14は、第1の転送実行部15及び第2の転送実行部16の各データ転送実行処理を制御する。第1の転送実行部15は、転送制御部14からの制御内容に従って、バッファキャッシュ13と1次キャッシュ12との間におけるデータ転送を実行する。第2の転送実行部16は、転送制御部14からの制御内容に従って、バッファキャッシュ13とバッファキャッシュ23との間におけるデータ転送を実行する。
【0069】
第2段演算部20の転送制御部24は、第1の転送実行部25及び第2の転送実行部26の各データ転送実行処理を制御する。第1の転送実行部25は、転送制御部24からの制御内容に従って、バッファキャッシュ23と1次キャッシュ22との間におけるデータ転送を実行する。第2の転送実行部26は、転送制御部24からの制御内容に従って、バッファキャッシュ23とバッファキャッシュ33との間におけるデータ転送を実行する。
【0070】
第3段演算部30の転送制御部34は、第1の転送実行部35及び第2の転送実行部36の各データ転送実行処理を制御する。第1の転送実行部35は、転送制御部34からの制御内容に従って、バッファキャッシュ33と1次キャッシュ32との間におけるデータ転送を実行する。第2の転送実行部36は、転送制御部34からの制御内容に従って、バッファキャッシュ33とバッファキャッシュ43との間におけるデータ転送を実行する。
【0071】
第4段演算部40の転送制御部44は、第1の転送実行部45及び第2の転送実行部46の各データ転送実行処理を制御する。第1の転送実行部45は、転送制御部44からの制御内容に従って、バッファキャッシュ43と1次キャッシュ42との間におけるデータ転送を実行する。第2の転送実行部46は、転送制御部44からの制御内容に従って、バッファキャッシュ43と後段のバッファキャッシュ(図示省略)との間におけるデータ転送を実行する。
【0072】
次に、本実施の形態に係るデータ処理装置1のキャッシュ方式について説明する。以下では、3×3の画素からぼかし処理を行なう例を用いて、データ処理装置1のキャッシュ方式について説明する。図2に、このぼかし処理を行なうためのプログラムを示す。
【0073】
図2のプログラム(命令)2は、ぼかし処理の対象となる3×3画素に対し、その中心画素の上下左右の画素を用いて、ぼかし処理を実行するためのプログラム(命令)である。なお、上記のような3×3画素からぼかし処理を行なう場合、3×3画素を構成する9画素すべての画素値を用いるのが一般的である。ここでは、データ処理装置1のキャッシュ方式の説明の容易化を図るために、上記のように上下左右の4つの画素を用いるぼかし処理を例としている。もちろん、本発明は、3×3画素を構成する9つの画素すべての画素値を用いるぼかし処理にも適用可能であることは言うまでもない。
【0074】
一般に、画像処理においては、対象となる画素群を少しずつ一定方向にずらしつつ、1行毎に演算を行なう処理が多い。このため、次の処理に必要となるデータは予測可能である。上記のプログラム(命令)2を用いるぼかし処理においては、3×3の画素に対してぼかし処理が繰り返される。例えば、対象となる画素群が例えば水平方向に1画素分ずつ移動するとすれば、垂直方向の2行分は再利用することができ、新たに必要となるのは垂直方向の1行分のみである。
【0075】
そこで、データ処理装置1のキャッシュ方式においては、第1段演算部10のバッファキャッシュ13に、第1段演算部10の演算器11が新たに必要とする垂直方向の1行分のデータが2次キャッシュ50から供給される。
【0076】
第2段演算部20のバッファキャッシュ23に、第2段演算部20の演算器21が新たに必要とする垂直方向の1行分のデータが第1段演算部10のバッファキャッシュ13から供給される。
【0077】
第3段演算部30のバッファキャッシュ33に、第3段演算部30の演算器31が新たに必要とする垂直方向の1行分のデータが第2段演算部20のバッファキャッシュ23から供給される。
【0078】
第4段演算部40のバッファキャッシュ43に、第4段演算部40の演算器41が新たに必要とする垂直方向の1行分のデータが第3段演算部30のバッファキャッシュ33から供給される。
【0079】
このようなデータ転送の結果、例えば、第2段演算部20のバッファキャッシュ23には、第1段演算部10のバッファキャッシュ13の1世代前のデータが格納され、第3段演算部30のバッファキャッシュ33には、第2段演算部20のバッファキャッシュ23の1世代前のデータが格納されることになる。
【0080】
ここで、データ処理装置1の第1〜4段演算部10、20、30、40の各々が2次キャッシュ50の内容を直接参照する構成を採用することは現実的ではない。2次キャッシュ50に必要なポート数が大幅に増大してしまうからである。
【0081】
そこで、データ処理装置1では、第1〜4段演算部10、20、30、40の各々が2次キャッシュ50の内容を直接参照せず、第1〜4段演算部10、20、30、40の各々に対応する1次キャッシュ12、22、32、42及びバッファキャッシュ13、23、33、43を直接参照する構成を採用する。
【0082】
このようにデータ処理装置1は、第1〜4段演算部10、20、30、40の各々が、プログラム(命令)2を用い、第1〜4段演算部10、20、30、40の各演算器11、21、31、41が並列的にぼかし処理する。そして、データ処理装置1は、第1〜4段演算部10、20、30、40の各々の処理結果を用いて、1つの画面全体のぼかし処理を実行する。
【0083】
次に、データ処理装置1のキャッシュ方式の動作について説明する。
【0084】
先ず、図3を用いて、図2のプログラム(命令)2の並列処理について、従来の手法を用いた場合に予想される処理手順を説明する。図3において、4つの演算器11a、21a、31a、41aの各々が、1次キャッシュ12a、22a、32a、42aを持っているとする。
【0085】
この場合、演算器11aは、3×3の同一の画素群Aにおける、中心画素の上側に位置する画素のデータを用いた処理を実行する。演算器21aは、その中心画素の下側に位置する画素のデータを用いた処理を実行する。演算器31aは、その中心画素の右側に位置する画素のデータを用いた処理を実行する。演算器41aは、その中心画素の左側に位置する画素のデータを用いた処理を実行する。
【0086】
より具体的には、図4に示すように、時刻t=1において、外部より供給されるデータが1次キャッシュ12aに格納される。そして、この1次キャッシュ12aに格納されたデータを用いて、演算器11aは、3×3の同一の画素群Aにおける、中心画素の上側に位置する画素のデータを用いた処理を実行する。
【0087】
次に、時刻t=2において、1次キャッシュ22aに格納されたデータを用いて、演算器21aは、その中心画素の下側に位置する画素のデータを用いた処理を実行する。この時、原則的には、1次キャッシュ12aに格納されているデータのすべてが1次キャッシュ22aに転送される必要がある。
【0088】
同様に、時刻t=3において、1次キャッシュ32aに格納されたデータを用いて、演算器31aは、その中心画素の右側に位置する画素のデータを用いた処理を実行する。この時も、原則的には、1次キャッシュ22aに格納されているデータのすべてが1次キャッシュ32aに転送される必要がある。
【0089】
さらに同様に、時刻t=4において、1次キャッシュ42aに格納されたデータを用いて、演算器41aは、その中心画素の左側に位置する画素のデータを用いた処理を実行する。この時も、原則的には、1次キャッシュ32aに格納されているデータのすべてが1次キャッシュ42aに転送される必要がある。
【0090】
ここで、上記の時刻t=4において、演算器11a、21a、31aの各処理の状態について説明する。
【0091】
図5に示すように、演算器31aの処理対象は、演算器41aの処理対象である3×3の画素群Aを水平方向に1画素分だけずらした3×3の画素群Bである。
【0092】
また、演算器31aの処理対象は、演算器41aの処理対象である3×3の画素群Aを水平方向に1画素分だけずらした3×3の画素群Bである。
【0093】
同様に、演算器21aの処理対象は、演算器41aの処理対象である3×3の画素群Aを水平方向に2画素分だけずらした3×3の画素群Cである。言いかえれば、演算器21aの処理対象は、演算器31aの処理対象である3×3の画素群Bを水平方向に1画素分だけずらした3×3の画素群Cである。
【0094】
さらに同様に、演算器11aの処理対象は、演算器41aの処理対象である3×3の画素群Aを水平方向に3画素分だけずらした3×3の画素群Dである。言いかえれば、演算器11aの処理対象は、演算器21aの処理対象である3×3の画素群Cを水平方向に1画素分だけずらした3×3の画素群Dである。
【0095】
このことから分かるように、1次キャッシュ12aのうち毎サイクル更新されるデータは、2次キャッシュ50aから送り込まれるデータのみである。このため、実際には、1次キャッシュ12aに格納されているデータのすべてを1次キャッシュ22aに転送する必要はない。すなわち、1次キャッシュ12aは、2次キャッシュ50aから送り込まれたデータのみを、1次キャッシュ22aに転送すれば良い。
【0096】
そして、このことは、1次キャッシュ22aから1次キャッシュ32aへのデータ転送及び、1次キャッシュ32aから1次キャッシュ42aへのデータ転送についても同様である。
【0097】
そこで、本実施の形態に係るデータ処理装置1においては、図6に示すように、1次キャッシュ12及びバッファキャッシュ13が、演算器11にとっての本来の1次キャッシュとしての役割を担っている。同様に、1次キャッシュ22及びバッファキャッシュ23が、演算器21にとっての本来の1次キャッシュとしての役割を、1次キャッシュ32及びバッファキャッシュ33が、演算器31にとっての本来の1次キャッシュとしての役割を、1次キャッシュ42及びバッファキャッシュ43が、演算器41にとって本来の1次キャッシュとしての役割を、それぞれが担っている。
【0098】
そして、図1に示したように、第1段演算部10から第2段演算部20へのデータ転送はバッファキャッシュ13とバッファキャッシュ23との間において実行される。同様に、第2段演算部20から第3段演算部30へのデータ転送はバッファキャッシュ23とバッファキャッシュ33との間において実行され、第3段演算部30から第4段演算部40へのデータ転送はバッファキャッシュ33とバッファキャッシュ43との間において実行される。
【0099】
具体的には、図6に示したように、例えば3×3の画素における、垂直方向の1行分の画素データ「17、27、37」が2次キャッシュ50から第1段演算部10のバッファキャッシュ13に送り込まれると、それまでのバッファキャッシュ13に格納されていた垂直方向の1行分の画素データ「16、26、36」が第1段演算部10の1次キャッシュ12に転送されると共に、第2段演算部20のバッファキャッシュ23に転送される。
【0100】
同様に、垂直方向の1行分の画素データ「16、26、36」が第1段演算部10のバッファキャッシュ13から第2段演算部20のバッファキャッシュ23に送り込まれると、それまでのバッファキャッシュ23に格納されていた垂直方向の1行分の画素データ「15、25、35」が第2段演算部20の1次キャッシュ22に転送されると共に、第3段演算部30のバッファキャッシュ33に転送される。
【0101】
また、垂直方向の1行分の画素データ「15、25、35」が第2段演算部20のバッファキャッシュ23から第3段演算部30のバッファキャッシュ33に送り込まれると、それまでのバッファキャッシュ33に格納されていた垂直方向の1行分の画素データ「14、24、34」が第3段演算部30の1次キャッシュ32に転送されると共に、第4段演算部40のバッファキャッシュ43に転送される。
【0102】
さらに、垂直方向の1行分の画素データ「14、24、34」が第3段演算部30のバッファキャッシュ33から第4段演算部40のバッファキャッシュ43に送り込まれると、それまでのバッファキャッシュ43に格納されていた垂直方向の1行分の画素データ「13、23、33」が第4段演算部40の1次キャッシュ42に転送されると共に、例えば後段の演算部(図示省略)のバッファキャッシュ(図示省略)に転送される。
【0103】
次に、本発明の実施の形態に係るデータ処理装置1のキャッシュ方式の動作に特徴部分について説明する。
【0104】
上述したように、データ処理装置1は、第1〜4段演算部10、20、30、40の各々が転送制御部14、24、34、44、第1の転送実行部15、25、35、45、及び、第2の転送実行部16、26、36、46を有している。データ処理装置1においては、転送制御部14、24、34、44及び、第1の転送実行部15、25、35、45の各々の動作により、バッファキャッシュ13、23、33、43と1次キャッシュ12、22、32、42との間におけるデータ転送を制御する。また、転送制御部14、24、34、44及び、第2の転送実行部16、26、36、46の各々の動作により、バッファキャッシュ13、23、33、43間におけるデータ転送を制御する。
【0105】
以下では、3つの実施例を用いて、この動作について具体的に説明する。
【0106】
(実施例1)
この実施例1は、バッファキャッシュ13、23、33、43と1次キャッシュ12、22、32、42との間におけるデータ転送を制御する実施例である。
【0107】
図7において、演算器11は、3×3の同一の画素群における、中心画素の上側に位置する画素のデータを用いた処理を実行する。演算器21は、その中心画素の下側に位置する画素のデータを用いた処理を実行する。演算器31は、その中心画素の右側に位置する画素のデータを用いた処理を実行する。演算器41は、その中心画素の左側に位置する画素のデータを用いた処理を実行する。
【0108】
この場合、第1段演算部10においては、1次キャッシュ12に格納されるべきデータのうち、演算器11が必要とするデータは、水平方向に1行分の画素データ「12、13、14、15、16、17」である。一方、図6に示した他の画素データ「22、23、24、25、26、27、32、33、34、35、36、37」は不要となる。
【0109】
このため、転送制御部14は、バッファキャッシュ13から送り込まれる1ブロック分の画素データのうち、3×3の画素群における、中心画素の上側に位置する画素のデータのみが1次キャッシュ12に格納されるよう、第1の転送実行部15を制御する。
【0110】
第1の転送実行部15は、転送制御部14からの制御内容に従って、1次キャッシュ12の全記憶領域のうち、不要となる記憶領域(記憶不要領域)の記憶動作を停止させる。
【0111】
そうすることにより、バッファキャッシュ13から送り込まれる1ブロック分の画素データのうち、演算器11が必要とするデータのみが、1次キャッシュ12に格納されることになる。
【0112】
同様に、第2段演算部20においては、1次キャッシュ22に格納されるべきデータのうち、演算器21が必要とするデータは、水平方向に1行分の画素データ「32、33、34、35、36」である。一方、図6に示した他の画素データ「12、13、14、15、16、22、23、24、25、26」は不要となる。
【0113】
このため、転送制御部24は、バッファキャッシュ23から送り込まれる1ブロック分の画素データのうち、3×3の画素群における、中心画素の下側に位置する画素のデータのみが1次キャッシュ22に格納されるよう、第1の転送実行部25を制御する。
【0114】
第1の転送実行部25は、転送制御部24からの制御内容に従って、1次キャッシュ22の全記憶領域のうち、不要となる記憶領域(記憶不要領域)の記憶動作を停止させる。
【0115】
そうすることにより、バッファキャッシュ23から送り込まれる1ブロック分の画素データのうち、演算器21が必要とするデータのみが、1次キャッシュ22に格納されることになる。
【0116】
また、第3段演算部30においては、1次キャッシュ32に格納されるべきデータのうち、演算器31が必要とするデータは、水平方向に1行分の画素データ「22、23、24、25」である。一方、図6に示した他の画素データ「12、13、14、15、32、33、34、35」は不要となる。
【0117】
このため、転送制御部34は、バッファキャッシュ33から送り込まれる1ブロック分の画素データのうち、3×3の画素群における、中心画素の右側に位置する画素のデータのみが1次キャッシュ32に格納されるよう、第1の転送実行部35を制御する。
【0118】
第1の転送実行部35は、転送制御部34からの制御内容に従って、1次キャッシュ32の全記憶領域のうち、不要となる記憶領域(記憶不要領域)の記憶動作を停止させる。
【0119】
そうすることにより、バッファキャッシュ33から送り込まれる1ブロック分の画素データのうち、演算器31が必要とするデータのみが、1次キャッシュ32に格納されることになる。
【0120】
さらに、第4段演算部40においては、1次キャッシュ42に格納されるべきデータのうち、演算器41が必要とするデータは、水平方向に1行分の画素データ「22、23、24」である。一方、図6に示した他の画素データ「12、13、14、32、33、34」は不要となる。
【0121】
このため、転送制御部44は、バッファキャッシュ43から送り込まれる1ブロック分の画素データのうち、3×3の画素群における、中心画素の左側に位置する画素のデータのみが1次キャッシュ42に格納されるよう、第1の転送実行部45を制御する。
【0122】
第1の転送実行部45は、転送制御部44からの制御内容に従って、1次キャッシュ42の全記憶領域のうち、不要となる記憶領域(記憶不要領域)の記憶動作を停止させる。
【0123】
そうすることにより、バッファキャッシュ43から送り込まれる1ブロック分の画素データのうち、演算器41が必要とするデータのみが、1次キャッシュ42に格納されることになる。
【0124】
このようにして、1次キャッシュ12、22、32、42の各々における不要な記憶領域の記憶動作を停止させることができる。このため、1次キャッシュ12、22、32、42の各々の消費電力を、各々の全記憶領域を動作させる場合と比較して、大幅に削減することができる。
【0125】
また、バッファキャッシュ13、23、33、43と1次キャッシュ12、22、32、42との間におけるデータ転送量自体も減らすことができ、その結果、各データ転送に要する消費電力も削減することができる。
【0126】
したがって、この実施例1によれば、データ処理装置1の消費電力を大幅に削減することができる。
【0127】
(実施例2)
この実施例2は、バッファキャッシュ13、23、33、43と1次キャッシュ12、22、32、42との間におけるデータ転送を制御する他の実施例である。
【0128】
この実施例2では、図8に示すように、上記の実施例1において、1次キャッシュ12、22、32、42の各々における記憶動作を停止させる記憶領域をさらに増加させたものである。
【0129】
この実施例2では、図8において、上記の実施例1と同様、演算器11は、3×3の同一の画素群における、中心画素の上側に位置する画素のデータを用いた処理を実行する。演算器21は、その中心画素の下側に位置する画素のデータを用いた処理を実行する。演算器31は、その中心画素の右側に位置する画素のデータを用いた処理を実行する。演算器41は、その中心画素の左側に位置する画素のデータを用いた処理を実行する。
【0130】
ここで、本実施例2が上記の実施例1と異なる点は、例えば、第1段演算部10であれば、演算器11が実際に用いるデータを1次キャッシュ12内の画素データ「16」に絞っている点である。
【0131】
この場合、第1段演算部10においては、上記の実施例1とは異なり、図7に示した画素データ「16」のみ、格納できればよい。
【0132】
このため、転送制御部14は、バッファキャッシュ13から送り込まれる1ブロック分の画素データのうち、3×3の画素群における、中心画素の上側に位置する画素のデータのみが1次キャッシュ12に格納されるよう、第1の転送実行部15を制御する。
【0133】
さらに、転送制御部14は、バッファキャッシュ13から順次送り込まれるデータが、そのデータの送り込み直後のみにおいて1次キャッシュ12に格納されるよう、第1の転送実行部15を制御する。
【0134】
第1の転送実行部15は、転送制御部14からの制御内容に従って、1次キャッシュ12の全記憶領域のうち、不要となる記憶領域(記憶不要領域)の記憶動作を停止させる。
【0135】
そうすることにより、バッファキャッシュ13から送り込まれる1ブロック分の画素データのうち、演算器11が実際に用いるデータのみが、1次キャッシュ12に格納されることになる。
【0136】
同様に、第2段演算部20であれば、演算器21が実際に用いるデータを1次キャッシュ22内の画素データ「35」に絞っている点である。
【0137】
この場合、第2段演算部20においては、上記の実施例1とは異なり、図7に示した画素データ「35」のみ、格納できればよい。
【0138】
このため、転送制御部24は、バッファキャッシュ23から送り込まれる1ブロック分の画素データのうち、3×3の画素群における、中心画素の下側に位置する画素のデータのみが1次キャッシュ22に格納されるよう、第1の転送実行部25を制御する。
【0139】
さらに、転送制御部24は、バッファキャッシュ23から順次送り込まれるデータが、そのデータの送り込み直後のみにおいて1次キャッシュ22に格納されるよう、第1の転送実行部25を制御する。
【0140】
第1の転送実行部25は、転送制御部24からの制御内容に従って、1次キャッシュ22の全記憶領域のうち、不要となる記憶領域(記憶不要領域)の記憶動作を停止させる。
【0141】
そうすることにより、バッファキャッシュ23から送り込まれる1ブロック分の画素データのうち、演算器21が実際に用いるデータのみが、1次キャッシュ22に格納されることになる。
【0142】
第3段演算部30であれば、演算器31が実際に用いるデータをバッファキャッシュ33内の画素データ「25」に絞っている点である。
【0143】
この場合、第3段演算部30においては、上記の実施例1とは異なり、1次キャッシュ22による画素データの格納は不要となる。
【0144】
このため、転送制御部34は、バッファキャッシュ33から送り込まれる1ブロック分の画素データが1次キャッシュ32に格納されないよう、第1の転送実行部35を制御する。
【0145】
第1の転送実行部35は、転送制御部34からの制御内容に従って、1次キャッシュ32の全記憶領域のうち、不要となる記憶領域(記憶不要領域)、すなわち、全記憶領域の記憶動作を停止させる。
【0146】
バッファキャッシュ33から送り込まれる1ブロック分の画素データはいずれも、1次キャッシュ32に格納されない。
【0147】
第4段演算部40であれば、演算器41が実際に用いるデータを1次キャッシュ42内の画素データ「22」に絞っている点である。
【0148】
この場合、第4段演算部40においては、上記の実施例1とは異なり、図7に示した画素データ「22、23」のみ、格納できればよい。
【0149】
このため、転送制御部44は、バッファキャッシュ43から送り込まれる1ブロック分の画素データのうち、3×3の画素群における、中心画素の左側に位置する画素のデータのみが1次キャッシュ42に格納されるよう、第1の転送実行部45を制御する。
【0150】
さらに、転送制御部44は、バッファキャッシュ43から順次送り込まれるデータが、そのデータの送り込み直後から、その中心画素の左側に位置するまで、1次キャッシュ42に格納されるよう、第1の転送実行部45を制御する。
【0151】
第1の転送実行部45は、転送制御部44からの制御内容に従って、1次キャッシュ42の全記憶領域のうち、不要となる記憶領域(記憶不要領域)の記憶動作を停止させる。
【0152】
そうすることにより、バッファキャッシュ43から送り込まれる1ブロック分の画素データのうち、演算器41が実際に用いるデータのみが、1次キャッシュ42に格納されることになる。
【0153】
このようにして、1次キャッシュ12、22、32、42の各々における不要な記憶領域の記憶動作を停止させることができる。このため、1次キャッシュ12、22、32、42の各々の消費電力を、各々の全記憶領域を動作させる場合と比較して、大幅に削減することができる。
【0154】
また、バッファキャッシュ13、23、33、43と1次キャッシュ12、22、32、42との間におけるデータ転送量自体も減らすことができ、その結果、各データ転送に要する消費電力も削減することができる。
【0155】
したがって、この実施例2によれば、データ処理装置1の消費電力を大幅に削減することができる。
【0156】
(実施例3)
この実施例3は、上記の実施例1及び2とは異なり、バッファキャッシュ13、23、33、43間におけるデータ転送を制御する実施例である。
【0157】
図9において、演算器11は、3×3の同一の画素群における、中心画素の上側に位置する画素のデータを用いた処理を実行する。演算器21は、その中心画素の下側に位置する画素のデータを用いた処理を実行する。演算器31は、その中心画素の右側に位置する画素のデータを用いた処理を実行する。演算器41は、その中心画素の左側に位置する画素のデータを用いた処理を実行する。
【0158】
したがって、バッファキャッシュ13からバッファキャッシュ23へのデータ転送においては、演算器11が必要とする、3×3の画素群における、中心画素の上側に位置する画素のデータ「17」を、バッファキャッシュ23に転送する必要はない。言いかえれば、演算器21、31、41が必要とする、その中心画素の下側及び左右側に位置する画素のデータ「27、37」を転送しなければならない。
【0159】
このため、転送制御部14は、バッファキャッシュ13からバッファキャッシュ23に送り込まれるデータとして、3×3の画素群における、中心画素の上側に位置する画素のデータを除くデータが設定されるよう、第2の転送実行部16を制御する。
【0160】
第2の転送実行部16は、転送制御部14からの制御内容に従って、バッファキャッシュ13に送り込まれた1ブロック分のデータのうち、バッファキャッシュ13がバッファキャッシュ23に送り込むべきデータを設定する。
【0161】
そうすることにより、バッファキャッシュ13に送り込まれた1ブロック分の画素データのうち、演算器21、31、41が必要とするデータのみが、バッファキャッシュ23に転送されることになる。
【0162】
同様に、バッファキャッシュ23からバッファキャッシュ33へのデータ転送においては、演算器21が必要とする、3×3の画素群における、中心画素の下側に位置する画素のデータ「36」を、バッファキャッシュ33に転送する必要はない。言いかえれば、演算器31、41が必要とする、その中心画素の左右側に位置する画素のデータ「26」を転送しなければならない。
【0163】
このため、転送制御部24は、バッファキャッシュ23からバッファキャッシュ33に送り込まれるデータとして、3×3の画素群における、中心画素の上下側に位置する画素のデータを除くデータが設定されるよう、第2の転送実行部26を制御する。
【0164】
第2の転送実行部26は、転送制御部24からの制御内容に従って、バッファキャッシュ23に送り込まれたデータのうち、バッファキャッシュ23がバッファキャッシュ33に送り込むべきデータを設定する。
【0165】
そうすることにより、バッファキャッシュ23に送り込まれた画素データのうち、演算器31、41が必要とするデータのみが、バッファキャッシュ33に転送されることになる。
【0166】
また、バッファキャッシュ33からバッファキャッシュ43へのデータ転送においては、演算器41が必要とする、その中心画素の左側に位置する画素のデータ「25」を転送しなければならない。
【0167】
このため、転送制御部34は、バッファキャッシュ33からバッファキャッシュ43に送り込まれるデータとして、3×3の画素群における、中心画素の左側に位置する画素のデータが設定されるよう、第2の転送実行部36を制御する。
【0168】
第2の転送実行部36は、転送制御部34からの制御内容に従って、バッファキャッシュ33に送り込まれたデータのうち、バッファキャッシュ33がバッファキャッシュ43に送り込むべきデータを設定する。
【0169】
そうすることにより、バッファキャッシュ33に送り込まれた画素データのうち、演算器41が必要とするデータのみが、バッファキャッシュ43に転送されることになる。
【0170】
このようにして、バッファキャッシュ13、23、33、43間におけるデータ転送量を減らすことができ、その結果、各データ転送に要する消費電力を削減することができる。
【0171】
したがって、この実施例3によれば、データ処理装置1の消費電力を大幅に削減することができる。
【0172】
上記の実施例1〜3においては、上述したように、第1〜4段演算部10、20、30、40の各々において、転送制御部14、24、34、44及び、第1の転送実行部15、25、35、45の各々の動作により、バッファキャッシュ13、23、33、43と1次キャッシュ12、22、32、42との間におけるデータ転送を制御する。また、転送制御部14、24、34、44及び、第2の転送実行部16、26、36、46の各々の動作により、バッファキャッシュ13、23、33、43間におけるデータ転送を制御する。
【0173】
ここで、転送制御部14、24、34、44による、第1の転送実行部15、25、35、45及び、第2の転送実行部16、26、36、46の各動作の制御は、例えば、データ処理装置1が処理するプログラム(命令)に公知の自動並列化を行なう際に用いられるデータアクセスパターン解析の結果に基づいて実行すればよい。ここで、このデータアクセスパターン解析とは、そのプログラム実行に基づくデータアクセスの規則性を解析することを意味する。
【0174】
一般に、1つのプログラムの処理を並列処理しようとする場合、その並列化のための作業として、プログラムのタスクへの分割、タスク間のデータアクセスパターンの解析に基づく並列性の検出及び指示、各タスクのプロセッサへの配置、及び、プロセッサ間のデータ通信コード及び同期コードの挿入、が必要となる。
【0175】
これらの作業のうち、データアクセスパターンの解析が、例えば、データ処理装置1により自動的に実行される。並列性が意識されずにプログラミングされたプログラムのデータアクセスパターンの解析が実行され、その解析結果を用いてプログラムの処理がデータ処理装置1により実行される。
【0176】
転送制御部14、24、34、44は、プログラムの解析の後、プログラムの解析の結果を参照し、演算器11、21、31、41の各々による処理内容を検出する。そして、転送制御部14、24、34、44は、その検出結果を用いて、1次キャッシュ12、22、32、42及びバッファキャッシュ13、23、33、43の各々に格納すべきデータを特定する。
【0177】
転送制御部14、24、34、44は、その特定結果に従って、第1の転送実行部15、25、35、45及び、第2の転送実行部16、26、36、46の各動作を制御する。
【0178】
一方、上記のアクセスパターンの解析のための作業は、プログラマーがプログラミングする際に、あらかじめ実行されている場合もある。つまり、プログラマーが、例えばデータ処理装置1のために定められた記述方法によって、明示的にアクセスパターンの記述を行なった場合である。言い換えれば、データ処理装置1が処理するプログラムのデータアクセスパターンの解析が、あらかじめ行なわれている場合である。
【0179】
この場合では、プログラムのアクセスパターンの解析内容をあらかじめ取得することができるので、その解析内容に基づき、1次キャッシュ12、22、32、42及びバッファキャッシュ13、23、33、43の記憶領域をあらかじめ減らしておくことができる。
【0180】
さらに、転送制御部14、24、34、44、第1の転送実行部15、25、35、45及び、第2の転送実行部16、26、36、46は不要となる。
【0181】
このため、データ処理装置1の装置構成の簡略化、消費電力のさらなる削減が可能となる。
【0182】
上述したデータアクセスパターンの解析を含むプログラムの並列化については、例えば、本田弘樹、「並列処理のためのシステムソフトウェア―3.自動並列化コンパイラ―」、情報処理、Vol. 34、No.9、pp.1150―1157に記載されている。
【0183】
(実施の形態2)
次に、本発明の実施の形態2について説明する。本発明の実施の形態2は、上記の実施の形態1に係るデータ処理装置1の具体的な構成に係る実施の形態である。
【0184】
本実施の形態に係るデータ処理装置は、公知のVLIW命令を実行できるn個のVLIWプロセッサを直列に配置し、それらn個のVLIWプロセッサの各々にレジスタファイル、演算器、キャッシュを連結するLinear Array Pipeline Processorである。
【0185】
本実施の形態に係るデータ処理装置は、2つの動作状態、すなわち、通常動作状態(非アレイ動作状態)及びアレイ動作状態を持つ。既存プログラム資産を利用できるように、通常動作時には、初段のみが動作し、既存のVLIWプロセッサと同様に動作する。そのため、初段のレジスタは、初段の演算器及びLD/STユニットからのフィードバックを備える。
【0186】
一方、アレイ動作時には、n段全体にVLIW命令がマッピングされ、終了条件を満たすまで同じ命令列を繰り返し実行する。
【0187】
このようにして単体の演算器に比べ、最大n倍の並列処理を実行することができる。
【0188】
図10は、本発明の実施の形態2に係るデータ処理装置の概略構成を示すブロック図である。
【0189】
図10に示すように、本実施の形態に係るデータ処理装置3は、命令フェッチ部70と、命令デコード部80と、reg(レジスタファイル部)〜regと、演算器〜演算器と、LD/ST(ロード/ストア部)〜LD/STと、1次キャッシュ〜1次キャッシュと、バッファキャッシュ〜バッファキャッシュと、2次キャッシュ50と、メインメモリ60と、を備えている。
【0190】
命令フェッチ部70は、命令メモリ部(図示省略)から必要な命令をフェッチして、命令デコード部80は、そのフェッチした命令をデコードする。命令デコード部80によるデコード結果により、演算器〜演算器における処理内容が決定する。
【0191】
このデータ処理装置3では、公知のVLIW方式によるプロセッサアーキテクチャを前提としており、命令フェッチ部70により例えば32ビット幅の命令が例えば4個同時にフェッチされ、命令デコード部80によりそれらフェッチされた命令が同時にデコードされるものと想定する。
【0192】
このデータ処理装置3において、第1段演算部は、reg、演算器、LD/ST、1次キャッシュ及び、バッファキャッシュを含んでいる。また、この第1段演算部は、上記の実施の形態1の転送制御部、第1の転送実行部及び、第2の転送実行部も含んでいる。なお、図面の見易さを図るため、図10には、これら転送制御部、第1の転送実行部及び、第2の転送実行部は表示されていない。以下の他の演算部においても同様である。
【0193】
同様に、第2段演算部は、reg、演算器、LD/ST、1次キャッシュ及び、バッファキャッシュを含んでいる。また、この第2段演算部は、上記の実施の形態1の転送制御部、第1の転送実行部及び、第2の転送実行部も含んでいる。
【0194】
第3段演算部は、reg、演算器、LD/ST、1次キャッシュ及び、バッファキャッシュを含んでいる。また、この第3段演算部は、上記の実施の形態1の転送制御部、第1の転送実行部及び、第2の転送実行部も含んでいる。
【0195】
第4段演算部は、reg、演算器、LD/ST、1次キャッシュ及び、バッファキャッシュを含んでいる。また、この第4段演算部は、上記の実施の形態1の転送制御部、第1の転送実行部及び、第2の転送実行部も含んでいる。
【0196】
第n段演算部は、reg、演算器、LD/ST、1次キャッシュ及び、バッファキャッシュを含んでいる。また、この第n段演算部は、上記の実施の形態1の転送制御部、第1の転送実行部及び、第2の転送実行部も含んでいる。
【0197】
なお、図面の見易さを図るため、図10には、第1〜n段演算部の各々の転送制御部、第1の転送実行部及び、第2の転送実行部は表示していない。
【0198】
reg〜regは、各々が対応する演算器〜演算器における演算処理に必要なデータを保持するものである。reg〜regの各々は、複数のレジスタからなるレジスタ群(図示省略)と、そのレジスタ群の各レジスタの読み出しデータを外部に転送するための転送器(図示省略)と、を有している。
【0199】
レジスタ群の各レジスタに対する読み出しや書き込みは、命令デコード部80によるデコード結果に基づいて実行される。レジスタ群の各レジスタは、自身のレジスタ番号をアクセスのキーとして読み出しや書き込みがされる。
【0200】
reg〜regの転送器は、読み出しレジスタ番号が指定されると、その指定された番号が付されたレジスタに保持されているデータを外部に転送する。
【0201】
reg〜regの各レジスタ群のレジスタ同士は一対一に対応している。具体的には、reg〜regの各レジスタ群の各レジスタ間においてレジスタ番号が同一のもの同士が対応付けられている。
【0202】
演算器〜演算器の各々は、データ処理装置3における実体的な処理を行なうものである。演算器〜演算器の各々は、上記の実施の形態1の演算器の各々に相当するものである。
【0203】
演算器〜演算器の各々は、複数の演算器からなる演算器群(図示省略)と、複数の保持器からなる保持器群(図示省略)と、転送器(図示省略)と、を有している。
【0204】
reg〜regの各々の転送器は、各レジスタ群のレジスタの読み出しデータを対応する演算器〜演算器に転送可能である。そして、演算器〜演算器の演算器群の各演算器は、reg〜regの各レジスタのうちから2つの読み出しデータを取得し、それらデータを用いて四則演算や論理演算等各種の演算処理を実行する。各演算器の演算処理は同時に実行される。
【0205】
演算器〜演算器の保持器群の各保持器は、各々に対応する演算器の演算結果を格納する。各保持器は、各演算器と一対一に対応している。
【0206】
演算器〜演算器の転送器は、対応する各保持器に格納されている、各演算器の演算結果を外部に転送する。
【0207】
LD/ST〜LD/STの各々は、複数のLD(ロード部)からなるロード部群(図示省略)と、複数のST(ストア部)からなるストア部群と、を有している。
【0208】
1次キャッシュ〜1次キャッシュの各々は、各々が対応するLD/ST〜LD/STに接続されており、LD/ST〜LD/STによるロード、ストア動作に従って読み出し及び書き込みが高速に実行される。1次キャッシュ〜1次キャッシュの各々はは、大容量の2次キャッシュ50とは別の小容量のキャッシュメモリを用いて構成されている。
【0209】
バッファキャッシュ〜バッファキャッシュの各々は、最大で全内容を次段以降に伝搬させるために容量を極めて小さくする必要がある。このため、バッファキャッシュ〜バッファキャッシュの各々は、1次キャッシュ〜1次キャッシュの各々と同様、大容量の2次キャッシュ50とは別の小容量のキャッシュメモリを用いて構成されている。
【0210】
このデータ処理装置3は、公知のVLIW方式によるプロセッサアーキテクチャを前提としており、このため、VLIW形式の機械語命令は通常、第1段演算部を構成する、reg、演算器、LD/ST、1次キャッシュ及び、バッファキャッシュにより実行される。すなわち、VLIW方式による演算処理の動作(非アレイ動作)は、第1段演算部により実行される。
【0211】
したがって、上記の実施の形態1における、複数の演算器による演算処理の同時動作(アレイ動作)を開始するために必要となるレジスタ情報は、常時、regに格納されている。
【0212】
そして、命令デコード部80によるデコード結果によりアレイ動作開始命令が検出された場合、演算器〜演算器に対して、各演算器〜演算器による演算処理に必要なデータを格納するレジスタのレジスタ番号を表わすソースレジスタ番号、各演算器〜演算器による演算処理の演算種別、及び、各演算器〜演算器の演算結果の格納先であるレジスタのレジスタ番号を表わすデスティネーションレジスタ番号、からなる制御情報Aが第1〜n段演算部の各々に設定される。
【0213】
この制御情報Aは、アレイ動作開始命令の付加情報として配置すればよい。この場合、アレイ動作開始命令のデコード時に制御情報Aを一度に獲得することができる。
【0214】
また、この制御情報Aは、後続のVLIW命令列自身として供給してもよい。この場合、アレイ動作開始命令をデコードした後、引き続き後続するVLIW命令を順にデコードし、ループの繰り返しを意味する後方分岐命令、すなわちアレイ動作の最終段に対応する命令をデコードするまでの間に、ループからの脱出を意味する前方分岐命令、すなわちアレイ動作の終結条件に対応する命令を検出して、休止条件としてセットできる。このため、既存命令列に付加すべき制御情報を削減することができる。
【0215】
この際、各演算器〜演算器による演算処理に必要なデータは、前段から順次伝搬されてくることを前提にすれば、演算器〜演算器のすべてに対して一斉に制御情報を放送する必要はなく、各演算器〜演算器に最初のデータが到着すると同時に制御情報が到着する構成とすることができる。
【0216】
アレイ動作開始後は、例えばループ構造の1イタレーションが演算器ネットワークに写像されており、データを順次流し込むことにより大量のデータ処理を行なう。
【0217】
すなわち、アレイ動作開始後は、該アレイ動作が終了するまでの間、各演算器〜演算器に対する制御情報を変更する必要がなく、また、非アレイ動作時に必要であった命令デコード部80によるデコード動作を実行する必要がなくなる。このため、命令デコード部80は停止し、さらに、命令フェッチ部70によるフェッチ動作も同様に停止することができる。
【0218】
また、制御情報Aに、各演算器〜演算器のアレイ動作を停止させるためのアレイ動作終結条件を付加しておき、アレイ動作中にあらかじめ指示した条件が満たされた場合に、自動的に非アレイ動作に復帰する構成とする。
【0219】
このアレイ動作終結条件とは、具体的には、各演算器〜演算器の実行サイクル数等である。
【0220】
2次キャッシュ50は、LD/STが保有するバッファキャッシュのみに接続されている。そして、第2段以降については、バッファキャッシュのデータが順次伝搬されている。
【0221】
ロード命令は、regに格納されたアドレス情報を演算器において加減算して得られるアドレスに従って1次キャッシュ及びバッファキャッシュを参照し、得られたデータをLD/STのストア部群のストア部に格納される。
【0222】
このストア部に格納されたデータは、次のサイクルにおいて、後段の演算器またはregの入力となる。
【0223】
次に、データ処理装置3のキャッシュ方式の動作について説明する。図11は、データ処理装置3のキャッシュ方式を説明するための説明図である。
【0224】
図11に示すように、データ処理装置3のキャッシュ方式4では、第1段演算部が1次キャッシュ103及びバッファキャッシュ104を含み、第2段演算部が1次キャッシュ203及びバッファキャッシュ204を含み、第3段演算部が1次キャッシュ303及びバッファキャッシュ304を含み、第4段演算部が1次キャッシュ403及びバッファキャッシュ404を含み、第5段演算部が1次キャッシュ503及びバッファキャッシュ504を含み、第6段演算部が1次キャッシュ603及びバッファキャッシュ604を含み、第7段演算部が1次キャッシュ703及びバッファキャッシュ704を含み、第8段演算部が1次キャッシュ803及びバッファキャッシュ804を含み、第9段演算部が1次キャッシュ903及びバッファキャッシュ904を含んでいる。
【0225】
そして、1次キャッシュ103がLD/ST101、102に接続され、1次キャッシュ203がLD/ST201、202に接続され、1次キャッシュ303がLD/ST301、302に接続され、1次キャッシュ403がLD/ST401、402に接続され、1次キャッシュ503がLD/ST501、502に接続され、1次キャッシュ603がLD/ST601、602に接続され、1次キャッシュ703がLD/ST701、702に接続され、1次キャッシュ803がLD/ST801、802に接続され、1次キャッシュ903がLD/ST901、902に接続されている。
【0226】
2次キャッシュ50のバンク数は4ウェイ(Way0、Way1、Way2、Way3)であり、Way0、Way1、Way2の各データからなるブロックがバッファキャッシュ104に送り込まれる。
【0227】
このキャッシュ方式4では、例えば3×3の画素における、垂直方向の1行分の画素データ「06、16、26」が2次キャッシュ50から第1段演算部のバッファキャッシュ104に送り込まれると、それまでのバッファキャッシュ104に格納されていた垂直方向の1行分の画素データ「05、15、25」が第1段演算部の1次キャッシュ103に転送されると共に、第2段演算部のバッファキャッシュ204に転送される。
【0228】
同様に、垂直方向の1行分の画素データ「05、15、25」が第1段演算部のバッファキャッシュ104から第2段演算部のバッファキャッシュ204に送り込まれると、それまでのバッファキャッシュ204に格納されていた垂直方向の1行分の画素データ「04、14、24」が第2段演算部の1次キャッシュ203に転送されると共に、第3段演算部のバッファキャッシュ304に転送される。
【0229】
垂直方向の1行分の画素データ「04、14、24」が第2段演算部のバッファキャッシュ204から第3段演算部のバッファキャッシュ304に送り込まれると、それまでのバッファキャッシュ304に格納されていた垂直方向の1行分の画素データ「03、13、23」が第3段演算部の1次キャッシュ303に転送されると共に、第4段演算部のバッファキャッシュ404に転送される。
【0230】
垂直方向の1行分の画素データ「03、13、23」が第3段演算部のバッファキャッシュ304から第4段演算部のバッファキャッシュ404に送り込まれると、それまでのバッファキャッシュ404に格納されていた垂直方向の1行分の画素データ「02、12、22」が第4段演算部の1次キャッシュ403に転送されると共に、第5段演算部のバッファキャッシュ504に転送される。
【0231】
垂直方向の1行分の画素データ「02、12、22」が第4段演算部のバッファキャッシュ404から第5段演算部のバッファキャッシュ504に送り込まれると、それまでのバッファキャッシュ504に格納されていた垂直方向の1行分の画素データ「01、11、21」が第5段演算部の1次キャッシュ503に転送されると共に、第6段演算部のバッファキャッシュ604に転送される。
【0232】
垂直方向の1行分の画素データ「01、11、21」が第5段演算部のバッファキャッシュ504から第6段演算部のバッファキャッシュ604に送り込まれると、それまでのバッファキャッシュ604に格納されていた垂直方向の1行分の画素データ「00、10、20」が第6段演算部の1次キャッシュ603に転送されると共に、第7段演算部のバッファキャッシュ704に転送される。
【0233】
本実施の形態2においても、上記の実施の形態1と同様、第1〜9段演算部の各々の転送制御部、第1の転送実行部及び第2の転送実行部の各動作により、バッファキャッシュ104、204、304、404、504、604、704、804、904と1次キャッシュ103、203、303、403、503、603、703、803、903との間におけるデータ転送を制御し、バッファキャッシュ104、204、304、404、504、604、704、804、904間におけるデータ転送を制御する。
【0234】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【0235】
本発明は、複数の機械語命令を高速に同時実行するデータ処理装置に好適に利用することができる。
【符号の説明】
【0236】
1、3、 データ処理装置
2 ぼかし処理用プログラム
4 キャッシュ方式
10 第1段演算部
11、11a、21、21a、31、31a、41、41a 演算器
12、12a、22、22a、32、32a、42、42a、103、203、303、403、503、603、703、803、903 1次キャッシュ(第1キャッシュ)
13、23、33、43、104、204、304、404、504、604、704、804、904 バッファキャッシュ
14、24、34、44 転送制御部(特定部)
15、25、35、45 第1の転送実行部(第1実行部)
16、26、36、46 第2の転送実行部(第2実行部)
20 第2段演算部
30 第3段演算部
40 第4段演算部
50、50a 2次キャッシュ(第2キャッシュ)
60 メインメモリ
70 命令フェッチ部
80 命令デコード部
101、102、201、202、301、302、401、402、501、502、601、602、701、702、801、802、901、902 LD/ST

【特許請求の範囲】
【請求項1】
複数の演算器と、
前記複数の演算器の各々に設けられ、対応する演算器にデータを転送する複数の第1キャッシュと、
前記複数の演算器に共有化され、前記複数の演算器の各処理に利用されるデータを格納する第2キャッシュと、
前記複数の第1キャッシュの各々に設けられ、対応する第1キャッシュにデータを転送する複数のバッファキャッシュと
を備え、
前記複数のバッファキャッシュは、前記第2キャッシュに接続され、前記第2キャッシュからデータが転送される第1段目のバッファキャッシュを含み、
前記複数のバッファキャッシュの各々は、前記第1段目のバッファキャッシュから順次連続的に接続されており、
前記複数のバッファキャッシュの各々は、前記第2キャッシュから前記第1段目のバッファキャッシュに転送されたデータの一部を、各バッファキャッシュの後段側に順次転送すると共に、各バッファキャッシュに格納されているデータの一部を、各バッファキャッシュに対応する第1キャッシュに転送すること特徴とするデータ処理装置。
【請求項2】
前記複数のバッファキャッシュの各々は、各バッファキャッシュに対応する演算器の処理に必要なデータを、各バッファキャッシュに対応する第1キャッシュに転送することを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記複数の第1キャッシュの各々は、各第1キャッシュの記憶領域のうち、対応するバッファキャッシュから転送されるデータの格納に不要となる記憶不要領域の記憶動作を停止させることを特徴とする請求項2に記載のデータ処理装置。
【請求項4】
前記複数のバッファキャッシュの各々は、各バッファキャッシュの後段側のバッファキャッシュに対応する演算器の処理に必要なデータを、各バッファキャッシュの後段側のバッファキャッシュに転送することを特徴とする請求項1〜3のいずれか1項に記載のデータ処理装置。
【請求項5】
前記複数のバッファキャッシュの各々は、各バッファキャッシュの記憶領域のうち、前段のバッファキャッシュから転送されるデータの格納に不要となる記憶不要領域の記憶動作を停止させることを特徴とする請求項4に記載のデータ処理装置。
【請求項6】
前記データ処理装置は、自身が処理すべきプログラムの実行に基づくデータアクセスパターンを解析し、その解析結果を用いてプログラムを処理するものであり、
前記複数の演算器の各処理に必要なデータは、前記データ処理装置が処理するプログラムのデータアクセスパターンの解析結果に基づいて特定されることを特徴とする請求項3または5に記載のデータ処理装置。
【請求項7】
前記プログラムのデータアクセスパターンの解析結果に基づいて前記複数の演算器の各処理に必要なデータを特定する特定部と、
前記複数の第1キャッシュの各々に設けられ、前記特定部による特定結果に基づいて、対応する第1キャッシュの記憶不要領域の記憶動作を停止させる第1実行部と、
前記複数のバッファキャッシュの各々に設けられ、前記特定部による特定結果に基づいて、対応するバッファキャッシュの記憶不要領域の記憶動作を停止させる第2実行部と
をさらに備えていることを特徴とする請求項6に記載のデータ処理装置。
【請求項8】
前記データ処理装置が処理するプログラムは、あらかじめデータアクセスパターンの解析が行なわれており、
前記複数の演算器の各処理に必要なデータは、前記プログラムのデータアクセスパターンの解析内容に基づいてあらかじめ特定されており、
前記複数の第1キャッシュの各々は、前記複数の演算器の各処理に必要なデータを格納すべく、各第1キャッシュの記憶領域があらかじめ設定されており、
前記複数のバッファキャッシュの各々は、前記複数の演算器の各処理に必要なデータを、対応する第1キャッシュに転送すべく、各バッファキャッシュの記憶領域があらかじめ設定されていることを特徴とする請求項1に記載のデータ処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2011−8485(P2011−8485A)
【公開日】平成23年1月13日(2011.1.13)
【国際特許分類】
【出願番号】特願2009−150788(P2009−150788)
【出願日】平成21年6月25日(2009.6.25)
【出願人】(504143441)国立大学法人 奈良先端科学技術大学院大学 (226)
【Fターム(参考)】