JP2011008485A - Data processing apparatus - Google Patents
Data processing apparatus Download PDFInfo
- Publication number
- JP2011008485A JP2011008485A JP2009150788A JP2009150788A JP2011008485A JP 2011008485 A JP2011008485 A JP 2011008485A JP 2009150788 A JP2009150788 A JP 2009150788A JP 2009150788 A JP2009150788 A JP 2009150788A JP 2011008485 A JP2011008485 A JP 2011008485A
- Authority
- JP
- Japan
- Prior art keywords
- data
- cache
- buffer
- unit
- caches
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
Description
複数のプロセッサを接続し、複数のプロセッサの各々による処理を同期して行なうことができるマルチプロセッサシステムに好適なキャッシュ方式に関する。特に、本発明は、このキャッシュ方式を用いたデータ供給によりデータ処理するデータ処理装置に関する。 The present invention relates to a cache system suitable for a multiprocessor system in which a plurality of processors are connected and processing by each of the plurality of processors can be performed synchronously. In particular, the present invention relates to a data processing apparatus that processes data by supplying data using this cache system.
近年、組み込み機器が取り扱う情報量が増大し、低消費電力、且つ、最低性能保証可能なプロセッサの需要が急速に高まっている。これまで、最低性能の保証は専用ハードウェア化による実現が一般的であった。 In recent years, the amount of information handled by embedded devices has increased, and the demand for processors with low power consumption and guaranteed minimum performance has increased rapidly. Until now, the guarantee of minimum performance has been generally realized by using dedicated hardware.
最近では、次々に策定される画像や無線等の新規格に追随したり、製品差別化のためのフィルタ微調整や出荷後の機能更新に対応したりするには、時間的及び経済的コストが大きい専用ハードウェアの採用が難しくなって来ている。 Recently, time and economic costs are required to follow new standards such as image and wireless, which are being developed one after another, and to fine-tune filters for product differentiation and to update functions after shipment. Adopting large dedicated hardware is becoming difficult.
ところで、デジタルシネマ等に用いられる高解像度の画像処理の需要が、近年、高まって来ている。デジタルシネマ等の高解像度の画像を補正するためのフィルタ処理の計算量は膨大であり、既存のプロセッサによるリアルタイム処理は不可能である。また、定常的に1サイクルごとに1画素を生成できるような専用ハードウェアに匹敵する性能を有し、且つ、汎用的な機械語命令を実行可能な、高性能、且つ、柔軟なアーキテクチャは、現在のところ皆無である。 Meanwhile, the demand for high-resolution image processing used in digital cinema and the like has been increasing in recent years. The amount of calculation of filter processing for correcting high-resolution images such as digital cinema is enormous, and real-time processing by an existing processor is impossible. In addition, a high-performance and flexible architecture that has a performance comparable to that of dedicated hardware that can generate one pixel per cycle on a regular basis and that can execute general-purpose machine language instructions. There is nothing at present.
このようなこのような状況を考慮して、マルチコアやメニイコア(例えば、非特許文献1〜3を参照)及び、リコンフィギャラブルデータパス(例えば、非特許文献4を参照)が現在有望視されている。
In consideration of such a situation, multi-cores and many-cores (for example, see Non-Patent
マルチコアやメニイコアは、様々な粒度に分割したアプリケーションプログラムを複数コアにより並列実行するアーキテクチャである。これらマルチコアやメニイコアは一般的な並列プログラミング手法を利用することができるという有利な点を持っている。 Multi-core and many-core are architectures in which application programs divided into various granularities are executed in parallel by a plurality of cores. These multi-cores and many-cores have the advantage of being able to use common parallel programming techniques.
また、ソフトウェアが制御可能な局所メモリを備えることにより、予測不能なキャッシュミスによる性能低下をある程度抑制できる。このため、柔軟性と拡張性に優れるだけでなく、コア数増加による最低性能保証も視野に入れることが可能である。 In addition, by providing a local memory that can be controlled by software, performance degradation due to an unpredictable cache miss can be suppressed to some extent. For this reason, not only is it excellent in flexibility and expandability, but it is also possible to consider the minimum performance guarantee by increasing the number of cores.
一方、リコンフィギャラブルデータパスは、プロセッサコアよりも粒度の小さい演算器を多数配置し、機能の柔軟性と高速性の両立を図るアーキテクチャである。このリコンフィギャラブルデータパスは、膨大な演算器を配置することにより、専用ハードウェアと同様、比較的低い動作周波数でも高性能プロセッサに匹敵する性能を達成し得るという有利な点を持っている。 On the other hand, the reconfigurable data path is an architecture in which a large number of arithmetic units having a smaller granularity than the processor core are arranged to achieve both functional flexibility and high speed. This reconfigurable data path has the advantage that, by arranging a large number of arithmetic units, a performance comparable to that of a high-performance processor can be achieved even at a relatively low operating frequency, as in the case of dedicated hardware.
ところで、上述したマルチコアや、メニイコア、リコンフィギャラブルデータパスのいずれのアーキテクチャにあっても、プロセッサにスパースカラ型やVLIW(Very Long Instruction Word)型を採用するのが一般的である。 By the way, a sparse scalar type or a VLIW (Very Long Instruction Word) type is generally adopted as a processor in any of the above-described multi-core, many-core, and reconfigurable data path architectures.
このようなプロセッサにおいては、キャッシュ方式の採用が性能向上に大きく寄与する。そのキャッシュ方式としては、複数のプロセッサの各々に1次キャッシュを内蔵させると同時に、外部の主記憶との間に2次キャッシュを設ける方式が挙げられる。この方式では、2次キャッシュのヒット率を高め、主記憶へのアクセスを低減し、プロセッサの性能向上を図っている。 In such a processor, the adoption of the cache method greatly contributes to the performance improvement. As the cache system, there is a system in which a primary cache is built in each of a plurality of processors and at the same time a secondary cache is provided between the external main memory. In this method, the hit rate of the secondary cache is increased, access to the main memory is reduced, and the performance of the processor is improved.
上述したキャッシュ方式を採用する場合では、同時に多数のプロセッサにデータを供給するために、複数のプロセッサの各々に設けられた1次キャッシュ間における内容の転送が必要となる。 In the case of adopting the cache method described above, in order to supply data to a large number of processors at the same time, it is necessary to transfer contents between primary caches provided in each of the plurality of processors.
しかしながら、上述したアーキテクチャのいずれにおいても、このような複数の1次キャッシュ間における内容転送を効率よく行なうことが困難であるといった課題があった。 However, in any of the above-described architectures, there is a problem that it is difficult to efficiently transfer contents between the plurality of primary caches.
上記課題に鑑み、本発明の目的は、複数の1次キャッシュ間におけるデータ転送を効率よく行なうことができるデータ処理装置を提供することにある。 In view of the above problems, an object of the present invention is to provide a data processing apparatus that can efficiently perform data transfer between a plurality of primary caches.
上記目的を達成するために、本発明に係るデータ処理装置は、複数の演算器と、前記複数の演算器の各々に設けられ、対応する演算器にデータを転送する複数の第1キャッシュと、前記複数の演算器に共有化され、前記複数の演算器の各処理に利用されるデータを格納する第2キャッシュと、前記複数の第1キャッシュの各々に設けられ、対応する第1キャッシュにデータを転送する複数のバッファキャッシュとを備え、前記複数のバッファキャッシュは、前記第2キャッシュに接続され、前記第2キャッシュからデータが転送される第1段目のバッファキャッシュを含み、前記複数のバッファキャッシュの各々は、前記第1段目のバッファキャッシュから順次連続的に接続されており、前記複数のバッファキャッシュの各々は、前記第2キャッシュから前記第1段目のバッファキャッシュに転送されたデータの一部を、各バッファキャッシュの後段側に順次転送すると共に、各バッファキャッシュに格納されているデータの一部を、各バッファキャッシュに対応する第1キャッシュに転送する。 In order to achieve the above object, a data processing apparatus according to the present invention includes a plurality of arithmetic units, a plurality of first caches provided in each of the plurality of arithmetic units and transferring data to the corresponding arithmetic units, A second cache that is shared by the plurality of computing units and stores data used for each processing of the plurality of computing units, and a data that is provided in each of the plurality of first caches and that corresponds to the first cache. A plurality of buffer caches, wherein the plurality of buffer caches are connected to the second cache and include a first-stage buffer cache to which data is transferred from the second cache, and the plurality of buffers Each of the caches is sequentially connected sequentially from the first stage buffer cache, and each of the plurality of buffer caches is connected to the second key cache. A part of the data transferred from the cache to the first stage buffer cache is sequentially transferred to the subsequent stage of each buffer cache, and a part of the data stored in each buffer cache is transferred to each buffer cache. Transfer to the corresponding first cache.
上記のデータ処理装置では、各バッファキャッシュは、第2キャッシュから第1段目のバッファキャッシュに転送されるデータの一部を、各バッファキャッシュの後段側に順次転送すると共に、各バッファキャッシュに格納されているデータの一部を各バッファキャッシュに対応する第1キャッシュに転送する。 In the above data processing apparatus, each buffer cache sequentially transfers a part of the data transferred from the second cache to the first stage buffer cache to the subsequent stage side of each buffer cache, and stores it in each buffer cache. A part of the stored data is transferred to the first cache corresponding to each buffer cache.
このため、各第1キャッシュは、各第1キャッシュが格納するデータを、他の第1キャッシュと互いに転送しなうことなく、第2キャッシュに格納されたデータを各第1キャッシュに対応する演算器に転送することができる。 For this reason, each first cache transfers the data stored in the second cache to the computing unit corresponding to each first cache without transferring the data stored in each first cache to each other. Can be transferred.
したがって、複数の第1キャッシュ間におけるデータ転送を効率よく行なうことができるデータ処理装置を実現することができる。 Therefore, it is possible to realize a data processing apparatus that can efficiently transfer data between a plurality of first caches.
前記複数のバッファキャッシュの各々は、各バッファキャッシュに対応する演算器の処理に必要なデータを、各バッファキャッシュに対応する第1キャッシュに転送することが好ましい。 Each of the plurality of buffer caches preferably transfers data necessary for processing of an arithmetic unit corresponding to each buffer cache to a first cache corresponding to each buffer cache.
この場合、各バッファキャッシュは、各演算器の処理に必要なデータを各演算器に効率よく転送することができる。 In this case, each buffer cache can efficiently transfer data necessary for processing of each arithmetic unit to each arithmetic unit.
このため、各バッファキャッシュと各演算器との間の不要なデータ転送が低減されるので、データ処理装置の消費電力を削減することができる。 For this reason, unnecessary data transfer between each buffer cache and each arithmetic unit is reduced, so that the power consumption of the data processing apparatus can be reduced.
前記複数の第1キャッシュの各々は、各第1キャッシュの記憶領域のうち、対応するバッファキャッシュから転送されるデータの格納に不要となる記憶不要領域の記憶動作を停止させることが好ましい。 Each of the plurality of first caches preferably stops a storage operation of a storage unnecessary area that is unnecessary for storing data transferred from the corresponding buffer cache among the storage areas of each first cache.
この場合、各第1キャッシュの記憶領域のうち、データを格納しない記憶領域の記憶動作を停止させることができる。 In this case, it is possible to stop the storage operation of a storage area that does not store data among the storage areas of each first cache.
このため、各第1キャッシュの不要な記憶領域の記憶動作による消費電力を削減することができ、その結果、データ処理装置の消費電力が削減される。 Therefore, it is possible to reduce the power consumption due to the storage operation of the unnecessary storage area of each first cache, and as a result, the power consumption of the data processing device is reduced.
前記複数のバッファキャッシュの各々は、各バッファキャッシュの後段側のバッファキャッシュに対応する演算器の処理に必要なデータを、各バッファキャッシュの後段側のバッファキャッシュに転送することが好ましい。 Each of the plurality of buffer caches preferably transfers data necessary for processing of an arithmetic unit corresponding to the buffer cache on the subsequent stage of each buffer cache to the buffer cache on the subsequent stage of each buffer cache.
この場合、各バッファキャッシュは、各バッファキャッシュの後段側のバッファキャッシュに対応する演算器の処理に必要なデータを後段側のバッファキャッシュに効率よく転送することができる。 In this case, each buffer cache can efficiently transfer data necessary for processing of the arithmetic unit corresponding to the buffer cache on the subsequent stage of each buffer cache to the buffer cache on the subsequent stage.
このため、各バッファキャッシュと他のバッファキャッシュとの間の不要なデータ転送が低減されるので、データ処理装置の消費電力を削減することができる。 For this reason, unnecessary data transfer between each buffer cache and another buffer cache is reduced, so that the power consumption of the data processing apparatus can be reduced.
前記複数のバッファキャッシュの各々は、各バッファキャッシュの記憶領域のうち、前段のバッファキャッシュから転送されるデータの格納に不要となる記憶不要領域の記憶動作を停止させることが好ましい。 Each of the plurality of buffer caches preferably stops a storage operation of a storage unnecessary area that is unnecessary for storing data transferred from the preceding buffer cache among the storage areas of each buffer cache.
この場合、各バッファキャッシュの記憶領域のうち、データを格納しない記憶領域の記憶動作を停止させることができる。 In this case, it is possible to stop the storage operation of a storage area that does not store data among the storage areas of each buffer cache.
このため、各バッファキャッシュの不要な記憶領域の記憶動作による消費電力を削減することができ、その結果、データ処理装置の消費電力が削減される。 For this reason, it is possible to reduce the power consumption due to the storage operation of the unnecessary storage area of each buffer cache, and as a result, the power consumption of the data processing device is reduced.
前記データ処理装置は、自身が処理すべきプログラムの実行に基づくデータアクセスパターンを解析し、その解析結果を用いてプログラムを処理するものであり、前記複数の演算器の各処理に必要なデータは、前記データ処理装置が処理するプログラムのデータアクセスパターンの解析結果に基づいて特定されることが好ましい。 The data processing device analyzes a data access pattern based on execution of a program to be processed by itself, processes the program using the analysis result, and data necessary for each processing of the plurality of arithmetic units is: Preferably, the data processing device is specified based on the analysis result of the data access pattern of the program processed by the data processing device.
この場合、データ処理装置が処理するプログラムのデータアクセスパターンがあらかじめ解析されていない場合でも、上記の効果を実現することができる。 In this case, even when the data access pattern of the program processed by the data processing device has not been analyzed in advance, the above effect can be realized.
前記プログラムのデータアクセスパターンの解析結果に基づいて前記複数の演算器の各処理に必要なデータを特定する特定部と、前記複数の第1キャッシュの各々に設けられ、前記特定部による特定結果に基づいて、対応する第1キャッシュの記憶不要領域の記憶動作を停止させる第1実行部と、前記複数のバッファキャッシュの各々に設けられ、前記特定部による特定結果に基づいて、対応するバッファキャッシュの記憶不要領域の記憶動作を停止させる第2実行部とをさらに備えていることが好ましい。 Provided in each of the plurality of first caches, a specifying unit for specifying data necessary for each processing of the plurality of arithmetic units based on the analysis result of the data access pattern of the program, Based on the first execution unit for stopping the storage operation of the storage unnecessary area of the corresponding first cache, and each of the plurality of buffer caches, and based on the identification result by the identification unit, It is preferable to further include a second execution unit that stops the storage operation of the storage unnecessary area.
この場合、各第1キャッシュの記憶領域のうち、データを格納しない記憶領域の記憶動作の停止及び、各バッファキャッシュの記憶領域のうち、データを格納しない記憶領域の記憶動作の停止を、簡単な装置構成で制御することができる。 In this case, it is possible to simply stop the storage operation of the storage area that does not store data among the storage areas of each first cache and stop the storage operation of the storage area that does not store data among the storage areas of each buffer cache. It can be controlled by the device configuration.
このため、データ処理装置の製造コストを削減することができる。 For this reason, the manufacturing cost of a data processor can be reduced.
前記データ処理装置が処理するプログラムは、あらかじめデータアクセスパターンの解析が行なわれており、前記複数の演算器の各処理に必要なデータは、前記プログラムのデータアクセスパターンの解析内容に基づいてあらかじめ特定されており、前記複数の第1キャッシュの各々は、前記複数の演算器の各処理に必要なデータを格納すべく、各第1キャッシュの記憶領域があらかじめ設定されており、前記複数のバッファキャッシュの各々は、前記複数の演算器の各処理に必要なデータを、対応する第1キャッシュに転送すべく、各バッファキャッシュの記憶領域があらかじめ設定されていることが好ましい。 The program processed by the data processing apparatus is analyzed in advance for data access patterns, and the data required for each processing of the plurality of computing units is specified in advance based on the analysis contents of the data access patterns of the programs. In each of the plurality of first caches, a storage area of each first cache is set in advance in order to store data necessary for each process of the plurality of arithmetic units. It is preferable that a storage area of each buffer cache is preset in order to transfer data necessary for each process of the plurality of arithmetic units to the corresponding first cache.
この場合、各演算器の処理に必要なデータをあらかじめ特定することができるので、各第1キャッシュに必要とされる記憶領域及び、各バッファキャッシュに必要とされる記憶領域をあらかじめ設定することができる。 In this case, since the data necessary for the processing of each computing unit can be specified in advance, the storage area required for each first cache and the storage area required for each buffer cache can be set in advance. it can.
このため、データ処理装置の装置構成をより簡略化し、消費電力をより削減することができる。 For this reason, the apparatus configuration of the data processing apparatus can be further simplified, and the power consumption can be further reduced.
本発明のデータ処理装置は、以上のように、複数の演算器と、前記複数の演算器の各々に設けられ、対応する演算器にデータを転送する複数の第1キャッシュと、前記複数の演算器に共有化され、前記複数の演算器の各処理に利用されるデータを格納する第2キャッシュと、前記複数の第1キャッシュの各々に設けられ、対応する第1キャッシュにデータを転送する複数のバッファキャッシュとを備え、前記複数のバッファキャッシュは、前記第2キャッシュに接続され、前記第2キャッシュからデータが転送される第1段目のバッファキャッシュを含み、前記複数のバッファキャッシュの各々は、前記第1段目のバッファキャッシュから順次連続的に接続されており、前記複数のバッファキャッシュの各々は、前記第2キャッシュから前記第1段目のバッファキャッシュに転送されたデータの一部を、各バッファキャッシュの後段側に順次転送すると共に、各バッファキャッシュに格納されているデータの一部を、各バッファキャッシュに対応する第1キャッシュに転送する。 As described above, the data processing device of the present invention includes a plurality of arithmetic units, a plurality of first caches that are provided in each of the plurality of arithmetic units and transfer data to the corresponding arithmetic units, and the plurality of arithmetic units. A second cache that stores data used for each process of the plurality of computing units and a plurality of first caches that are provided in each of the plurality of first caches and that transfer data to the corresponding first cache A plurality of buffer caches, wherein the plurality of buffer caches are connected to the second cache and include a first-stage buffer cache to which data is transferred from the second cache, each of the plurality of buffer caches being , Sequentially connected from the first stage buffer cache, and each of the plurality of buffer caches is connected to the second cache from the second cache. A part of the data transferred to the first-stage buffer cache is sequentially transferred to the subsequent stage side of each buffer cache, and a part of the data stored in each buffer cache is transferred to the first corresponding to each buffer cache. Transfer to cache.
それゆえ、複数の1次キャッシュ間におけるデータ転送を効率よく行なうことができるという効果を奏する。 Therefore, there is an effect that data transfer between a plurality of primary caches can be performed efficiently.
以下、図面を参照しつつ本発明の実施の形態について説明する。以下の説明に用いる図面では、同一の部品に同一の符号を付してある。それらの名称及び機能も同一である。したがって、それらについての詳細な説明は繰り返さない。 Hereinafter, embodiments of the present invention will be described with reference to the drawings. In the drawings used for the following description, the same parts are denoted by the same reference numerals. Their names and functions are also the same. Therefore, detailed description thereof will not be repeated.
(実施の形態1)
図1は、本発明の実施の形態1に係るデータ処理装置の概略構成を示すブロック図である。
(Embodiment 1)
FIG. 1 is a block diagram showing a schematic configuration of a data processing apparatus according to
本発明の実施の形態1に係るデータ処理装置1は、図1に示すように、第1段演算部10と、第2段演算部20と、第3段演算部30と、第4段演算部40と、2次キャッシュ(第2キャッシュ)50と、メインメモリ60と、を備えている。
As shown in FIG. 1, the
そして、第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と、を有している。
The first
本実施の形態に係るデータ処理装置1は、自身が処理するプログラム(命令)及びデータ(以下、このプログラム(命令)及びデータを単に「データ」と呼ぶ場合もある。)を長期的に格納するメインメモリ60と、メインメモリ60に格納されているプログラム(命令)及びデータの一部を短期的に格納する2次キャッシュ50と、2次キャッシュ50に格納されているプログラム(命令)及びデータの一部を一時的に格納する複数の1次キャッシュ12、22、32、42及び複数のバッファキャッシュ13、23、33、43と、から構成されたメモリ方式を持っている。
The
メインメモリ60は、第1〜4段演算部10、20、30、40により使用されるプログラム(命令)及びデータを格納する。メインメモリ60は、第1〜4段演算部10、20、30、40が実際に使用中及び使用中でない、のいずれのプログラム(命令)及びデータも長期的に格納する。このため、メインメモリ60は、アクセス機能よりも格納機能が重視されており、低速でも大容量であることが要求される。
The
また、メインメモリ60は、公知の磁気ディスク、光磁気ディスク、磁気テープを用いることができる。
The
さらに、メインメモリ60は、第1〜4段演算部10、20、30、40からは一種の入出力装置という位置づけとなる。したがって、本実施の形態に係るデータ処理装置1は、メインメモリ60に代えて、データ処理装置1がデータ処理をするのに必要なプログラム(命令)及びデータを収集する入力装置と、データ処理装置1によるデータ処理の結果をユーザーが使えるようにするための出力装置と、からなる外部I/Oを用いても構わない。
Furthermore, the
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により共有化されている。
The
このため、2次キャッシュ50は、アクセス機能よりも格納機能が重視されているメインメモリ60に対し、格納機能よりもアクセス機能が重視されている。そして、2次キャッシュ50には、小容量でも高速性が要求される。
For this reason, the
また、2次キャッシュ50は、公知のDRAM、SRAM等の半導体メモリを用いることができる。
As the
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に転送する。
The
第1段演算部10のバッファキャッシュ(第1段目のバッファキャッシュ)13は、2次キャッシュ50に接続するように配置されており、2次キャッシュ50との間において直接のデータ転送を行なう。第1段演算部10のバッファキャッシュ13は、自身と2次キャッシュ50との間において取り交わすデータの最小単位(以下、「ブロック」と呼ぶ場合もある。)を格納可能な容量を持っている。第1段演算部10のバッファキャッシュ13と2次キャッシュ50との間におけるデータ転送は、このブロック単位で行なわれる。
The buffer cache (first stage buffer cache) 13 of the first
一方、第2段演算部20のバッファキャッシュ23、第3段演算部30のバッファキャッシュ33及び第4段演算部40のバッファキャッシュ43は、2次キャッシュ50との間においては直接のデータ転送を行なわない。
On the other hand, the
すなわち、バッファキャッシュ13、23、33、43は、バッファキャッシュ13を第1段目とし、バッファキャッシュ13から順次連続的に接続された配置構成を有している。そして、バッファキャッシュ13、23、33、43は、2次キャッシュ50からバッファキャッシュ13に転送されたデータを、各々の後段側に順次転送することができる。
That is, the
具体的には、第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との間において直接のデータ転送を行なう。上記のいずれのデータ転送も、上記のブロック単位で行なわれる。
Specifically, the
第1段演算部10のバッファキャッシュ13は、2次キャッシュ50から1ブロックのデータ転送が行なわれると、そのデータ転送が行なわれる直前までに格納していたデータを第1段演算部10の1次キャッシュ12に転送する。そして、この1次キャッシュ12は、バッファキャッシュ13から1ブロック毎のデータが転送される度に、自身が格納する数ブロックのデータを更新する。
When one block of data is transferred from the
また、このバッファキャッシュ13は、1次キャッシュ12へのデータ転送にあわせて、1次キャッシュ12に転送したデータと同一のデータを第2段演算部20のバッファキャッシュ23に転送する。
The
なお、バッファキャッシュ13から1次キャッシュ12へのデータ転送及び、バッファキャッシュ13から第2段演算部20のバッファキャッシュ23へのデータ転送においては、バッファキャッシュ13に格納されている1ブロックのすべてのデータがデータ転送の対象となるものではない。データ転送を受ける1次キャッシュ12及び、バッファキャッシュ23が要求するデータのみが転送されてもよい。
In the data transfer from the
第2段演算部20のバッファキャッシュ23は、第1段演算部10のバッファキャッシュ13から1ブロックのデータ転送が行なわれると、そのデータ転送が行なわれる直前までに格納していたデータを第2段演算部20の1次キャッシュ22に転送する。そして、この1次キャッシュ22は、バッファキャッシュ23から1ブロック毎のデータが転送される度に、自身が格納する数ブロックのデータを更新する。
When one block of data is transferred from the
なお、バッファキャッシュ23から1次キャッシュ22へのデータ転送及び、バッファキャッシュ23から第3段演算部30のバッファキャッシュ33へのデータ転送においては、バッファキャッシュ23に格納されている1ブロックのすべてのデータがデータ転送の対象となるものではない。データ転送を受ける1次キャッシュ22及び、バッファキャッシュ33が要求するデータのみが転送されてもよい。
In the data transfer from the
第3段演算部30のバッファキャッシュ33は、第2段演算部20のバッファキャッシュ23から1ブロックのデータ転送が行なわれると、そのデータ転送が行なわれる直前までに格納していたデータを第3段演算部30の1次キャッシュ32に転送する。そして、この1次キャッシュ32は、バッファキャッシュ33から1ブロック毎のデータが転送される度に、自身が格納する数ブロックのデータを更新する。
When one block of data is transferred from the
なお、バッファキャッシュ33から1次キャッシュ32へのデータ転送及び、バッファキャッシュ33から第4段演算部40のバッファキャッシュ43へのデータ転送においては、バッファキャッシュ33に格納されている1ブロックのすべてのデータがデータ転送の対象となるものではない。データ転送を受ける1次キャッシュ32及び、バッファキャッシュ43が要求するデータのみが転送されてもよい。
In the data transfer from the
第4段演算部40のバッファキャッシュ43は、第3段演算部30のバッファキャッシュ33から1ブロックのデータ転送が行なわれると、そのデータ転送が行なわれる直前までに格納していたデータを第4段演算部40の1次キャッシュ42に転送する。そして、この1次キャッシュ42は、バッファキャッシュ43から1ブロック毎のデータが転送される度に、自身が格納する数ブロックのデータを更新する。
When one block of data is transferred from the
なお、バッファキャッシュ43から1次キャッシュ42へのデータ転送においては、バッファキャッシュ43に格納されている1ブロックのすべてのデータがデータ転送の対象となるものではない。データ転送を受ける1次キャッシュ42が要求するデータのみが転送されてもよい。
In the data transfer from the
1次キャッシュ12、22、32、42及びバッファキャッシュ13、23、33、43はいずれも、低容量でも高速な半導体メモリである、公知のECL/BiCMOSのSRAM、ECL等の高速SRAMを用いて実現することができる。
The
第1段演算部10の転送制御部14は、第1の転送実行部15及び第2の転送実行部16の各データ転送実行処理を制御する。第1の転送実行部15は、転送制御部14からの制御内容に従って、バッファキャッシュ13と1次キャッシュ12との間におけるデータ転送を実行する。第2の転送実行部16は、転送制御部14からの制御内容に従って、バッファキャッシュ13とバッファキャッシュ23との間におけるデータ転送を実行する。
The
第2段演算部20の転送制御部24は、第1の転送実行部25及び第2の転送実行部26の各データ転送実行処理を制御する。第1の転送実行部25は、転送制御部24からの制御内容に従って、バッファキャッシュ23と1次キャッシュ22との間におけるデータ転送を実行する。第2の転送実行部26は、転送制御部24からの制御内容に従って、バッファキャッシュ23とバッファキャッシュ33との間におけるデータ転送を実行する。
The
第3段演算部30の転送制御部34は、第1の転送実行部35及び第2の転送実行部36の各データ転送実行処理を制御する。第1の転送実行部35は、転送制御部34からの制御内容に従って、バッファキャッシュ33と1次キャッシュ32との間におけるデータ転送を実行する。第2の転送実行部36は、転送制御部34からの制御内容に従って、バッファキャッシュ33とバッファキャッシュ43との間におけるデータ転送を実行する。
The
第4段演算部40の転送制御部44は、第1の転送実行部45及び第2の転送実行部46の各データ転送実行処理を制御する。第1の転送実行部45は、転送制御部44からの制御内容に従って、バッファキャッシュ43と1次キャッシュ42との間におけるデータ転送を実行する。第2の転送実行部46は、転送制御部44からの制御内容に従って、バッファキャッシュ43と後段のバッファキャッシュ(図示省略)との間におけるデータ転送を実行する。
The
次に、本実施の形態に係るデータ処理装置1のキャッシュ方式について説明する。以下では、3×3の画素からぼかし処理を行なう例を用いて、データ処理装置1のキャッシュ方式について説明する。図2に、このぼかし処理を行なうためのプログラムを示す。
Next, the cache method of the
図2のプログラム(命令)2は、ぼかし処理の対象となる3×3画素に対し、その中心画素の上下左右の画素を用いて、ぼかし処理を実行するためのプログラム(命令)である。なお、上記のような3×3画素からぼかし処理を行なう場合、3×3画素を構成する9画素すべての画素値を用いるのが一般的である。ここでは、データ処理装置1のキャッシュ方式の説明の容易化を図るために、上記のように上下左右の4つの画素を用いるぼかし処理を例としている。もちろん、本発明は、3×3画素を構成する9つの画素すべての画素値を用いるぼかし処理にも適用可能であることは言うまでもない。
The program (instruction) 2 in FIG. 2 is a program (instruction) for executing the blurring process on the 3 × 3 pixels to be subjected to the blurring process using the upper, lower, left, and right pixels of the center pixel. When blurring processing is performed from 3 × 3 pixels as described above, it is common to use the pixel values of all nine pixels constituting the 3 × 3 pixels. Here, in order to facilitate the description of the cache method of the
一般に、画像処理においては、対象となる画素群を少しずつ一定方向にずらしつつ、1行毎に演算を行なう処理が多い。このため、次の処理に必要となるデータは予測可能である。上記のプログラム(命令)2を用いるぼかし処理においては、3×3の画素に対してぼかし処理が繰り返される。例えば、対象となる画素群が例えば水平方向に1画素分ずつ移動するとすれば、垂直方向の2行分は再利用することができ、新たに必要となるのは垂直方向の1行分のみである。 In general, in image processing, there are many processes in which calculation is performed for each row while a target pixel group is gradually shifted in a certain direction. For this reason, the data required for the next process can be predicted. In the blurring process using the program (instruction) 2 described above, the blurring process is repeated for 3 × 3 pixels. For example, if the target pixel group moves, for example, by one pixel in the horizontal direction, two vertical rows can be reused, and only one vertical row is required. is there.
そこで、データ処理装置1のキャッシュ方式においては、第1段演算部10のバッファキャッシュ13に、第1段演算部10の演算器11が新たに必要とする垂直方向の1行分のデータが2次キャッシュ50から供給される。
Therefore, in the cache system of the
第2段演算部20のバッファキャッシュ23に、第2段演算部20の演算器21が新たに必要とする垂直方向の1行分のデータが第1段演算部10のバッファキャッシュ13から供給される。
Data for one line in the vertical direction newly required by the
第3段演算部30のバッファキャッシュ33に、第3段演算部30の演算器31が新たに必要とする垂直方向の1行分のデータが第2段演算部20のバッファキャッシュ23から供給される。
Data for one line in the vertical direction newly required by the
第4段演算部40のバッファキャッシュ43に、第4段演算部40の演算器41が新たに必要とする垂直方向の1行分のデータが第3段演算部30のバッファキャッシュ33から供給される。
Data for one line in the vertical direction newly required by the
このようなデータ転送の結果、例えば、第2段演算部20のバッファキャッシュ23には、第1段演算部10のバッファキャッシュ13の1世代前のデータが格納され、第3段演算部30のバッファキャッシュ33には、第2段演算部20のバッファキャッシュ23の1世代前のデータが格納されることになる。
As a result of such data transfer, for example, the
ここで、データ処理装置1の第1〜4段演算部10、20、30、40の各々が2次キャッシュ50の内容を直接参照する構成を採用することは現実的ではない。2次キャッシュ50に必要なポート数が大幅に増大してしまうからである。
Here, it is not realistic that each of the first to fourth stage
そこで、データ処理装置1では、第1〜4段演算部10、20、30、40の各々が2次キャッシュ50の内容を直接参照せず、第1〜4段演算部10、20、30、40の各々に対応する1次キャッシュ12、22、32、42及びバッファキャッシュ13、23、33、43を直接参照する構成を採用する。
Therefore, in the
このようにデータ処理装置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つの画面全体のぼかし処理を実行する。
As described above, in the
次に、データ処理装置1のキャッシュ方式の動作について説明する。
Next, the operation of the cache method of the
先ず、図3を用いて、図2のプログラム(命令)2の並列処理について、従来の手法を用いた場合に予想される処理手順を説明する。図3において、4つの演算器11a、21a、31a、41aの各々が、1次キャッシュ12a、22a、32a、42aを持っているとする。
First, with reference to FIG. 3, the processing procedure expected when the conventional method is used for the parallel processing of the program (instruction) 2 in FIG. 2 will be described. In FIG. 3, it is assumed that each of the four
この場合、演算器11aは、3×3の同一の画素群Aにおける、中心画素の上側に位置する画素のデータを用いた処理を実行する。演算器21aは、その中心画素の下側に位置する画素のデータを用いた処理を実行する。演算器31aは、その中心画素の右側に位置する画素のデータを用いた処理を実行する。演算器41aは、その中心画素の左側に位置する画素のデータを用いた処理を実行する。
In this case, the
より具体的には、図4に示すように、時刻t=1において、外部より供給されるデータが1次キャッシュ12aに格納される。そして、この1次キャッシュ12aに格納されたデータを用いて、演算器11aは、3×3の同一の画素群Aにおける、中心画素の上側に位置する画素のデータを用いた処理を実行する。
More specifically, as shown in FIG. 4, at time t = 1, data supplied from the outside is stored in the
次に、時刻t=2において、1次キャッシュ22aに格納されたデータを用いて、演算器21aは、その中心画素の下側に位置する画素のデータを用いた処理を実行する。この時、原則的には、1次キャッシュ12aに格納されているデータのすべてが1次キャッシュ22aに転送される必要がある。
Next, at time t = 2, using the data stored in the
同様に、時刻t=3において、1次キャッシュ32aに格納されたデータを用いて、演算器31aは、その中心画素の右側に位置する画素のデータを用いた処理を実行する。この時も、原則的には、1次キャッシュ22aに格納されているデータのすべてが1次キャッシュ32aに転送される必要がある。
Similarly, at time t = 3, using the data stored in the
さらに同様に、時刻t=4において、1次キャッシュ42aに格納されたデータを用いて、演算器41aは、その中心画素の左側に位置する画素のデータを用いた処理を実行する。この時も、原則的には、1次キャッシュ32aに格納されているデータのすべてが1次キャッシュ42aに転送される必要がある。
Further, similarly, at time t = 4, using the data stored in the
ここで、上記の時刻t=4において、演算器11a、21a、31aの各処理の状態について説明する。
Here, the state of each process of the
図5に示すように、演算器31aの処理対象は、演算器41aの処理対象である3×3の画素群Aを水平方向に1画素分だけずらした3×3の画素群Bである。
As shown in FIG. 5, the processing target of the
また、演算器31aの処理対象は、演算器41aの処理対象である3×3の画素群Aを水平方向に1画素分だけずらした3×3の画素群Bである。
The processing target of the
同様に、演算器21aの処理対象は、演算器41aの処理対象である3×3の画素群Aを水平方向に2画素分だけずらした3×3の画素群Cである。言いかえれば、演算器21aの処理対象は、演算器31aの処理対象である3×3の画素群Bを水平方向に1画素分だけずらした3×3の画素群Cである。
Similarly, the processing target of the
さらに同様に、演算器11aの処理対象は、演算器41aの処理対象である3×3の画素群Aを水平方向に3画素分だけずらした3×3の画素群Dである。言いかえれば、演算器11aの処理対象は、演算器21aの処理対象である3×3の画素群Cを水平方向に1画素分だけずらした3×3の画素群Dである。
Similarly, the processing target of the
このことから分かるように、1次キャッシュ12aのうち毎サイクル更新されるデータは、2次キャッシュ50aから送り込まれるデータのみである。このため、実際には、1次キャッシュ12aに格納されているデータのすべてを1次キャッシュ22aに転送する必要はない。すなわち、1次キャッシュ12aは、2次キャッシュ50aから送り込まれたデータのみを、1次キャッシュ22aに転送すれば良い。
As can be seen from this, the data updated every cycle in the
そして、このことは、1次キャッシュ22aから1次キャッシュ32aへのデータ転送及び、1次キャッシュ32aから1次キャッシュ42aへのデータ転送についても同様である。
This also applies to data transfer from the
そこで、本実施の形態に係るデータ処理装置1においては、図6に示すように、1次キャッシュ12及びバッファキャッシュ13が、演算器11にとっての本来の1次キャッシュとしての役割を担っている。同様に、1次キャッシュ22及びバッファキャッシュ23が、演算器21にとっての本来の1次キャッシュとしての役割を、1次キャッシュ32及びバッファキャッシュ33が、演算器31にとっての本来の1次キャッシュとしての役割を、1次キャッシュ42及びバッファキャッシュ43が、演算器41にとって本来の1次キャッシュとしての役割を、それぞれが担っている。
Therefore, in the
そして、図1に示したように、第1段演算部10から第2段演算部20へのデータ転送はバッファキャッシュ13とバッファキャッシュ23との間において実行される。同様に、第2段演算部20から第3段演算部30へのデータ転送はバッファキャッシュ23とバッファキャッシュ33との間において実行され、第3段演算部30から第4段演算部40へのデータ転送はバッファキャッシュ33とバッファキャッシュ43との間において実行される。
As shown in FIG. 1, data transfer from the first
具体的には、図6に示したように、例えば3×3の画素における、垂直方向の1行分の画素データ「17、27、37」が2次キャッシュ50から第1段演算部10のバッファキャッシュ13に送り込まれると、それまでのバッファキャッシュ13に格納されていた垂直方向の1行分の画素データ「16、26、36」が第1段演算部10の1次キャッシュ12に転送されると共に、第2段演算部20のバッファキャッシュ23に転送される。
Specifically, as shown in FIG. 6, for example, pixel data “17, 27, 37” for one line in the vertical direction in 3 × 3 pixels is transferred from the
同様に、垂直方向の1行分の画素データ「16、26、36」が第1段演算部10のバッファキャッシュ13から第2段演算部20のバッファキャッシュ23に送り込まれると、それまでのバッファキャッシュ23に格納されていた垂直方向の1行分の画素データ「15、25、35」が第2段演算部20の1次キャッシュ22に転送されると共に、第3段演算部30のバッファキャッシュ33に転送される。
Similarly, when pixel data “16, 26, 36” for one line in the vertical direction is sent from the
また、垂直方向の1行分の画素データ「15、25、35」が第2段演算部20のバッファキャッシュ23から第3段演算部30のバッファキャッシュ33に送り込まれると、それまでのバッファキャッシュ33に格納されていた垂直方向の1行分の画素データ「14、24、34」が第3段演算部30の1次キャッシュ32に転送されると共に、第4段演算部40のバッファキャッシュ43に転送される。
Further, when pixel data “15, 25, 35” for one line in the vertical direction is sent from the
さらに、垂直方向の1行分の画素データ「14、24、34」が第3段演算部30のバッファキャッシュ33から第4段演算部40のバッファキャッシュ43に送り込まれると、それまでのバッファキャッシュ43に格納されていた垂直方向の1行分の画素データ「13、23、33」が第4段演算部40の1次キャッシュ42に転送されると共に、例えば後段の演算部(図示省略)のバッファキャッシュ(図示省略)に転送される。
Further, when pixel data “14, 24, 34” for one line in the vertical direction is sent from the
次に、本発明の実施の形態に係るデータ処理装置1のキャッシュ方式の動作に特徴部分について説明する。
Next, a characteristic part of the operation of the cache method of the
上述したように、データ処理装置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間におけるデータ転送を制御する。
As described above, in the
以下では、3つの実施例を用いて、この動作について具体的に説明する。 Hereinafter, this operation will be described in detail using three examples.
(実施例1)
この実施例1は、バッファキャッシュ13、23、33、43と1次キャッシュ12、22、32、42との間におけるデータ転送を制御する実施例である。
Example 1
In the first embodiment, data transfer between the
図7において、演算器11は、3×3の同一の画素群における、中心画素の上側に位置する画素のデータを用いた処理を実行する。演算器21は、その中心画素の下側に位置する画素のデータを用いた処理を実行する。演算器31は、その中心画素の右側に位置する画素のデータを用いた処理を実行する。演算器41は、その中心画素の左側に位置する画素のデータを用いた処理を実行する。
In FIG. 7, the
この場合、第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」は不要となる。
In this case, in the first
このため、転送制御部14は、バッファキャッシュ13から送り込まれる1ブロック分の画素データのうち、3×3の画素群における、中心画素の上側に位置する画素のデータのみが1次キャッシュ12に格納されるよう、第1の転送実行部15を制御する。
For this reason, the
第1の転送実行部15は、転送制御部14からの制御内容に従って、1次キャッシュ12の全記憶領域のうち、不要となる記憶領域(記憶不要領域)の記憶動作を停止させる。
The first
そうすることにより、バッファキャッシュ13から送り込まれる1ブロック分の画素データのうち、演算器11が必要とするデータのみが、1次キャッシュ12に格納されることになる。
By doing so, only the data required by the
同様に、第2段演算部20においては、1次キャッシュ22に格納されるべきデータのうち、演算器21が必要とするデータは、水平方向に1行分の画素データ「32、33、34、35、36」である。一方、図6に示した他の画素データ「12、13、14、15、16、22、23、24、25、26」は不要となる。
Similarly, in the second
このため、転送制御部24は、バッファキャッシュ23から送り込まれる1ブロック分の画素データのうち、3×3の画素群における、中心画素の下側に位置する画素のデータのみが1次キャッシュ22に格納されるよう、第1の転送実行部25を制御する。
For this reason, the
第1の転送実行部25は、転送制御部24からの制御内容に従って、1次キャッシュ22の全記憶領域のうち、不要となる記憶領域(記憶不要領域)の記憶動作を停止させる。
The first
そうすることにより、バッファキャッシュ23から送り込まれる1ブロック分の画素データのうち、演算器21が必要とするデータのみが、1次キャッシュ22に格納されることになる。
By doing so, only the data required by the
また、第3段演算部30においては、1次キャッシュ32に格納されるべきデータのうち、演算器31が必要とするデータは、水平方向に1行分の画素データ「22、23、24、25」である。一方、図6に示した他の画素データ「12、13、14、15、32、33、34、35」は不要となる。
Further, in the third-
このため、転送制御部34は、バッファキャッシュ33から送り込まれる1ブロック分の画素データのうち、3×3の画素群における、中心画素の右側に位置する画素のデータのみが1次キャッシュ32に格納されるよう、第1の転送実行部35を制御する。
For this reason, the
第1の転送実行部35は、転送制御部34からの制御内容に従って、1次キャッシュ32の全記憶領域のうち、不要となる記憶領域(記憶不要領域)の記憶動作を停止させる。
The first
そうすることにより、バッファキャッシュ33から送り込まれる1ブロック分の画素データのうち、演算器31が必要とするデータのみが、1次キャッシュ32に格納されることになる。
By doing so, only the data required by the
さらに、第4段演算部40においては、1次キャッシュ42に格納されるべきデータのうち、演算器41が必要とするデータは、水平方向に1行分の画素データ「22、23、24」である。一方、図6に示した他の画素データ「12、13、14、32、33、34」は不要となる。
Further, in the fourth-
このため、転送制御部44は、バッファキャッシュ43から送り込まれる1ブロック分の画素データのうち、3×3の画素群における、中心画素の左側に位置する画素のデータのみが1次キャッシュ42に格納されるよう、第1の転送実行部45を制御する。
For this reason, the
第1の転送実行部45は、転送制御部44からの制御内容に従って、1次キャッシュ42の全記憶領域のうち、不要となる記憶領域(記憶不要領域)の記憶動作を停止させる。
The first
そうすることにより、バッファキャッシュ43から送り込まれる1ブロック分の画素データのうち、演算器41が必要とするデータのみが、1次キャッシュ42に格納されることになる。
By doing so, only the data necessary for the
このようにして、1次キャッシュ12、22、32、42の各々における不要な記憶領域の記憶動作を停止させることができる。このため、1次キャッシュ12、22、32、42の各々の消費電力を、各々の全記憶領域を動作させる場合と比較して、大幅に削減することができる。
In this manner, the storage operation of unnecessary storage areas in each of the
また、バッファキャッシュ13、23、33、43と1次キャッシュ12、22、32、42との間におけるデータ転送量自体も減らすことができ、その結果、各データ転送に要する消費電力も削減することができる。
In addition, the data transfer amount itself between the
したがって、この実施例1によれば、データ処理装置1の消費電力を大幅に削減することができる。
Therefore, according to the first embodiment, the power consumption of the
(実施例2)
この実施例2は、バッファキャッシュ13、23、33、43と1次キャッシュ12、22、32、42との間におけるデータ転送を制御する他の実施例である。
(Example 2)
The second embodiment is another embodiment for controlling data transfer between the
この実施例2では、図8に示すように、上記の実施例1において、1次キャッシュ12、22、32、42の各々における記憶動作を停止させる記憶領域をさらに増加させたものである。
In the second embodiment, as shown in FIG. 8, the storage area for stopping the storage operation in each of the
この実施例2では、図8において、上記の実施例1と同様、演算器11は、3×3の同一の画素群における、中心画素の上側に位置する画素のデータを用いた処理を実行する。演算器21は、その中心画素の下側に位置する画素のデータを用いた処理を実行する。演算器31は、その中心画素の右側に位置する画素のデータを用いた処理を実行する。演算器41は、その中心画素の左側に位置する画素のデータを用いた処理を実行する。
In the second embodiment, in FIG. 8, as in the first embodiment, the
ここで、本実施例2が上記の実施例1と異なる点は、例えば、第1段演算部10であれば、演算器11が実際に用いるデータを1次キャッシュ12内の画素データ「16」に絞っている点である。
Here, the second embodiment is different from the first embodiment in that, for example, in the case of the first
この場合、第1段演算部10においては、上記の実施例1とは異なり、図7に示した画素データ「16」のみ、格納できればよい。
In this case, unlike the first embodiment, the first-
このため、転送制御部14は、バッファキャッシュ13から送り込まれる1ブロック分の画素データのうち、3×3の画素群における、中心画素の上側に位置する画素のデータのみが1次キャッシュ12に格納されるよう、第1の転送実行部15を制御する。
For this reason, the
さらに、転送制御部14は、バッファキャッシュ13から順次送り込まれるデータが、そのデータの送り込み直後のみにおいて1次キャッシュ12に格納されるよう、第1の転送実行部15を制御する。
Furthermore, the
第1の転送実行部15は、転送制御部14からの制御内容に従って、1次キャッシュ12の全記憶領域のうち、不要となる記憶領域(記憶不要領域)の記憶動作を停止させる。
The first
そうすることにより、バッファキャッシュ13から送り込まれる1ブロック分の画素データのうち、演算器11が実際に用いるデータのみが、1次キャッシュ12に格納されることになる。
By doing so, only the data actually used by the
同様に、第2段演算部20であれば、演算器21が実際に用いるデータを1次キャッシュ22内の画素データ「35」に絞っている点である。
Similarly, in the case of the second
この場合、第2段演算部20においては、上記の実施例1とは異なり、図7に示した画素データ「35」のみ、格納できればよい。 In this case, unlike the first embodiment, only the pixel data “35” shown in FIG.
このため、転送制御部24は、バッファキャッシュ23から送り込まれる1ブロック分の画素データのうち、3×3の画素群における、中心画素の下側に位置する画素のデータのみが1次キャッシュ22に格納されるよう、第1の転送実行部25を制御する。
For this reason, the
さらに、転送制御部24は、バッファキャッシュ23から順次送り込まれるデータが、そのデータの送り込み直後のみにおいて1次キャッシュ22に格納されるよう、第1の転送実行部25を制御する。
Furthermore, the
第1の転送実行部25は、転送制御部24からの制御内容に従って、1次キャッシュ22の全記憶領域のうち、不要となる記憶領域(記憶不要領域)の記憶動作を停止させる。
The first
そうすることにより、バッファキャッシュ23から送り込まれる1ブロック分の画素データのうち、演算器21が実際に用いるデータのみが、1次キャッシュ22に格納されることになる。
By doing so, only the data actually used by the
第3段演算部30であれば、演算器31が実際に用いるデータをバッファキャッシュ33内の画素データ「25」に絞っている点である。
In the third stage
この場合、第3段演算部30においては、上記の実施例1とは異なり、1次キャッシュ22による画素データの格納は不要となる。
In this case, unlike the first embodiment, the third-
このため、転送制御部34は、バッファキャッシュ33から送り込まれる1ブロック分の画素データが1次キャッシュ32に格納されないよう、第1の転送実行部35を制御する。
Therefore, the
第1の転送実行部35は、転送制御部34からの制御内容に従って、1次キャッシュ32の全記憶領域のうち、不要となる記憶領域(記憶不要領域)、すなわち、全記憶領域の記憶動作を停止させる。
The first
バッファキャッシュ33から送り込まれる1ブロック分の画素データはいずれも、1次キャッシュ32に格納されない。
None of the pixel data for one block sent from the
第4段演算部40であれば、演算器41が実際に用いるデータを1次キャッシュ42内の画素データ「22」に絞っている点である。
In the case of the fourth
この場合、第4段演算部40においては、上記の実施例1とは異なり、図7に示した画素データ「22、23」のみ、格納できればよい。 In this case, unlike the first embodiment, only the pixel data “22, 23” shown in FIG.
このため、転送制御部44は、バッファキャッシュ43から送り込まれる1ブロック分の画素データのうち、3×3の画素群における、中心画素の左側に位置する画素のデータのみが1次キャッシュ42に格納されるよう、第1の転送実行部45を制御する。
For this reason, the
さらに、転送制御部44は、バッファキャッシュ43から順次送り込まれるデータが、そのデータの送り込み直後から、その中心画素の左側に位置するまで、1次キャッシュ42に格納されるよう、第1の転送実行部45を制御する。
Further, the
第1の転送実行部45は、転送制御部44からの制御内容に従って、1次キャッシュ42の全記憶領域のうち、不要となる記憶領域(記憶不要領域)の記憶動作を停止させる。
The first
そうすることにより、バッファキャッシュ43から送り込まれる1ブロック分の画素データのうち、演算器41が実際に用いるデータのみが、1次キャッシュ42に格納されることになる。
By doing so, only the data actually used by the
このようにして、1次キャッシュ12、22、32、42の各々における不要な記憶領域の記憶動作を停止させることができる。このため、1次キャッシュ12、22、32、42の各々の消費電力を、各々の全記憶領域を動作させる場合と比較して、大幅に削減することができる。
In this manner, the storage operation of unnecessary storage areas in each of the
また、バッファキャッシュ13、23、33、43と1次キャッシュ12、22、32、42との間におけるデータ転送量自体も減らすことができ、その結果、各データ転送に要する消費電力も削減することができる。
In addition, the data transfer amount itself between the
したがって、この実施例2によれば、データ処理装置1の消費電力を大幅に削減することができる。
Therefore, according to the second embodiment, the power consumption of the
(実施例3)
この実施例3は、上記の実施例1及び2とは異なり、バッファキャッシュ13、23、33、43間におけるデータ転送を制御する実施例である。
(Example 3)
In the third embodiment, unlike the first and second embodiments, data transfer between the
図9において、演算器11は、3×3の同一の画素群における、中心画素の上側に位置する画素のデータを用いた処理を実行する。演算器21は、その中心画素の下側に位置する画素のデータを用いた処理を実行する。演算器31は、その中心画素の右側に位置する画素のデータを用いた処理を実行する。演算器41は、その中心画素の左側に位置する画素のデータを用いた処理を実行する。
In FIG. 9, the
したがって、バッファキャッシュ13からバッファキャッシュ23へのデータ転送においては、演算器11が必要とする、3×3の画素群における、中心画素の上側に位置する画素のデータ「17」を、バッファキャッシュ23に転送する必要はない。言いかえれば、演算器21、31、41が必要とする、その中心画素の下側及び左右側に位置する画素のデータ「27、37」を転送しなければならない。
Therefore, in the data transfer from the
このため、転送制御部14は、バッファキャッシュ13からバッファキャッシュ23に送り込まれるデータとして、3×3の画素群における、中心画素の上側に位置する画素のデータを除くデータが設定されるよう、第2の転送実行部16を制御する。
Therefore, the
第2の転送実行部16は、転送制御部14からの制御内容に従って、バッファキャッシュ13に送り込まれた1ブロック分のデータのうち、バッファキャッシュ13がバッファキャッシュ23に送り込むべきデータを設定する。
The second
そうすることにより、バッファキャッシュ13に送り込まれた1ブロック分の画素データのうち、演算器21、31、41が必要とするデータのみが、バッファキャッシュ23に転送されることになる。
By doing so, only the data required by the
同様に、バッファキャッシュ23からバッファキャッシュ33へのデータ転送においては、演算器21が必要とする、3×3の画素群における、中心画素の下側に位置する画素のデータ「36」を、バッファキャッシュ33に転送する必要はない。言いかえれば、演算器31、41が必要とする、その中心画素の左右側に位置する画素のデータ「26」を転送しなければならない。
Similarly, in the data transfer from the
このため、転送制御部24は、バッファキャッシュ23からバッファキャッシュ33に送り込まれるデータとして、3×3の画素群における、中心画素の上下側に位置する画素のデータを除くデータが設定されるよう、第2の転送実行部26を制御する。
For this reason, the
第2の転送実行部26は、転送制御部24からの制御内容に従って、バッファキャッシュ23に送り込まれたデータのうち、バッファキャッシュ23がバッファキャッシュ33に送り込むべきデータを設定する。
The second
そうすることにより、バッファキャッシュ23に送り込まれた画素データのうち、演算器31、41が必要とするデータのみが、バッファキャッシュ33に転送されることになる。
By doing so, only the data required by the
また、バッファキャッシュ33からバッファキャッシュ43へのデータ転送においては、演算器41が必要とする、その中心画素の左側に位置する画素のデータ「25」を転送しなければならない。
Further, in the data transfer from the
このため、転送制御部34は、バッファキャッシュ33からバッファキャッシュ43に送り込まれるデータとして、3×3の画素群における、中心画素の左側に位置する画素のデータが設定されるよう、第2の転送実行部36を制御する。
For this reason, the
第2の転送実行部36は、転送制御部34からの制御内容に従って、バッファキャッシュ33に送り込まれたデータのうち、バッファキャッシュ33がバッファキャッシュ43に送り込むべきデータを設定する。
The second
そうすることにより、バッファキャッシュ33に送り込まれた画素データのうち、演算器41が必要とするデータのみが、バッファキャッシュ43に転送されることになる。
By doing so, only the data required by the
このようにして、バッファキャッシュ13、23、33、43間におけるデータ転送量を減らすことができ、その結果、各データ転送に要する消費電力を削減することができる。
In this way, the data transfer amount between the
したがって、この実施例3によれば、データ処理装置1の消費電力を大幅に削減することができる。
Therefore, according to the third embodiment, the power consumption of the
上記の実施例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間におけるデータ転送を制御する。
In the first to third embodiments, as described above, in each of the first to fourth stage
ここで、転送制御部14、24、34、44による、第1の転送実行部15、25、35、45及び、第2の転送実行部16、26、36、46の各動作の制御は、例えば、データ処理装置1が処理するプログラム(命令)に公知の自動並列化を行なう際に用いられるデータアクセスパターン解析の結果に基づいて実行すればよい。ここで、このデータアクセスパターン解析とは、そのプログラム実行に基づくデータアクセスの規則性を解析することを意味する。
Here, the control of each operation of the first
一般に、1つのプログラムの処理を並列処理しようとする場合、その並列化のための作業として、プログラムのタスクへの分割、タスク間のデータアクセスパターンの解析に基づく並列性の検出及び指示、各タスクのプロセッサへの配置、及び、プロセッサ間のデータ通信コード及び同期コードの挿入、が必要となる。 In general, when processing of one program is to be performed in parallel, the tasks for parallelization are divided into program tasks, parallelism detection and instruction based on analysis of data access patterns between tasks, each task Need to be arranged in the processor and to insert a data communication code and a synchronization code between the processors.
これらの作業のうち、データアクセスパターンの解析が、例えば、データ処理装置1により自動的に実行される。並列性が意識されずにプログラミングされたプログラムのデータアクセスパターンの解析が実行され、その解析結果を用いてプログラムの処理がデータ処理装置1により実行される。
Of these operations, analysis of the data access pattern is automatically executed by the
転送制御部14、24、34、44は、プログラムの解析の後、プログラムの解析の結果を参照し、演算器11、21、31、41の各々による処理内容を検出する。そして、転送制御部14、24、34、44は、その検出結果を用いて、1次キャッシュ12、22、32、42及びバッファキャッシュ13、23、33、43の各々に格納すべきデータを特定する。
The
転送制御部14、24、34、44は、その特定結果に従って、第1の転送実行部15、25、35、45及び、第2の転送実行部16、26、36、46の各動作を制御する。
The
一方、上記のアクセスパターンの解析のための作業は、プログラマーがプログラミングする際に、あらかじめ実行されている場合もある。つまり、プログラマーが、例えばデータ処理装置1のために定められた記述方法によって、明示的にアクセスパターンの記述を行なった場合である。言い換えれば、データ処理装置1が処理するプログラムのデータアクセスパターンの解析が、あらかじめ行なわれている場合である。
On the other hand, the above-described work for analyzing the access pattern may be executed in advance when a programmer performs programming. That is, this is a case where the programmer explicitly describes the access pattern by a description method defined for the
この場合では、プログラムのアクセスパターンの解析内容をあらかじめ取得することができるので、その解析内容に基づき、1次キャッシュ12、22、32、42及びバッファキャッシュ13、23、33、43の記憶領域をあらかじめ減らしておくことができる。
In this case, since the analysis contents of the access pattern of the program can be acquired in advance, the storage areas of the
さらに、転送制御部14、24、34、44、第1の転送実行部15、25、35、45及び、第2の転送実行部16、26、36、46は不要となる。
Furthermore, the
このため、データ処理装置1の装置構成の簡略化、消費電力のさらなる削減が可能となる。
For this reason, the apparatus configuration of the
上述したデータアクセスパターンの解析を含むプログラムの並列化については、例えば、本田弘樹、「並列処理のためのシステムソフトウェア―3.自動並列化コンパイラ―」、情報処理、Vol. 34、No.9、pp.1150―1157に記載されている。 For the parallelization of the program including the analysis of the data access pattern described above, for example, Hiroki Honda, “System Software for Parallel Processing—3. Automatic Parallelizing Compiler”, Information Processing, Vol. 34, No. 9, pp. 1150-1157.
(実施の形態2)
次に、本発明の実施の形態2について説明する。本発明の実施の形態2は、上記の実施の形態1に係るデータ処理装置1の具体的な構成に係る実施の形態である。
(Embodiment 2)
Next, a second embodiment of the present invention will be described. The second embodiment of the present invention is an embodiment according to a specific configuration of the
本実施の形態に係るデータ処理装置は、公知のVLIW命令を実行できるn個のVLIWプロセッサを直列に配置し、それらn個のVLIWプロセッサの各々にレジスタファイル、演算器、キャッシュを連結するLinear Array Pipeline Processorである。 In the data processing apparatus according to the present embodiment, n VLIW processors that can execute known VLIW instructions are arranged in series, and a linear array that connects a register file, an arithmetic unit, and a cache to each of the n VLIW processors. Pipeline Processor.
本実施の形態に係るデータ処理装置は、2つの動作状態、すなわち、通常動作状態(非アレイ動作状態)及びアレイ動作状態を持つ。既存プログラム資産を利用できるように、通常動作時には、初段のみが動作し、既存のVLIWプロセッサと同様に動作する。そのため、初段のレジスタは、初段の演算器及びLD/STユニットからのフィードバックを備える。 The data processing apparatus according to the present embodiment has two operation states, that is, a normal operation state (non-array operation state) and an array operation state. In normal operation, only the first stage operates so that the existing program assets can be used, and operates in the same manner as the existing VLIW processor. Therefore, the first-stage register includes feedback from the first-stage arithmetic unit and the LD / ST unit.
一方、アレイ動作時には、n段全体にVLIW命令がマッピングされ、終了条件を満たすまで同じ命令列を繰り返し実行する。 On the other hand, during the array operation, the VLIW instruction is mapped to the entire n stages, and the same instruction sequence is repeatedly executed until the end condition is satisfied.
このようにして単体の演算器に比べ、最大n倍の並列処理を実行することができる。 In this way, a maximum of n times parallel processing can be executed as compared with a single arithmetic unit.
図10は、本発明の実施の形態2に係るデータ処理装置の概略構成を示すブロック図である。
FIG. 10 is a block diagram showing a schematic configuration of the data processing apparatus according to
図10に示すように、本実施の形態に係るデータ処理装置3は、命令フェッチ部70と、命令デコード部80と、reg(レジスタファイル部)1〜regnと、演算器1〜演算器nと、LD/ST(ロード/ストア部)1〜LD/STnと、1次キャッシュ1〜1次キャッシュnと、バッファキャッシュ1〜バッファキャッシュnと、2次キャッシュ50と、メインメモリ60と、を備えている。
As shown in FIG. 10, the
命令フェッチ部70は、命令メモリ部(図示省略)から必要な命令をフェッチして、命令デコード部80は、そのフェッチした命令をデコードする。命令デコード部80によるデコード結果により、演算器1〜演算器nにおける処理内容が決定する。
The instruction fetch unit 70 fetches a necessary instruction from an instruction memory unit (not shown), and the
このデータ処理装置3では、公知のVLIW方式によるプロセッサアーキテクチャを前提としており、命令フェッチ部70により例えば32ビット幅の命令が例えば4個同時にフェッチされ、命令デコード部80によりそれらフェッチされた命令が同時にデコードされるものと想定する。
This
このデータ処理装置3において、第1段演算部は、reg1、演算器1、LD/ST1、1次キャッシュ1及び、バッファキャッシュ1を含んでいる。また、この第1段演算部は、上記の実施の形態1の転送制御部、第1の転送実行部及び、第2の転送実行部も含んでいる。なお、図面の見易さを図るため、図10には、これら転送制御部、第1の転送実行部及び、第2の転送実行部は表示されていない。以下の他の演算部においても同様である。
In the
同様に、第2段演算部は、reg2、演算器2、LD/ST2、1次キャッシュ2及び、バッファキャッシュ2を含んでいる。また、この第2段演算部は、上記の実施の形態1の転送制御部、第1の転送実行部及び、第2の転送実行部も含んでいる。 Similarly, the second stage computing unit includes reg 2 , computing unit 2 , LD / ST 2 , primary cache 2, and buffer cache 2 . The second-stage arithmetic unit also includes the transfer control unit, the first transfer execution unit, and the second transfer execution unit of the first embodiment.
第3段演算部は、reg3、演算器3、LD/ST3、1次キャッシュ3及び、バッファキャッシュ3を含んでいる。また、この第3段演算部は、上記の実施の形態1の転送制御部、第1の転送実行部及び、第2の転送実行部も含んでいる。 The third stage computing unit includes reg 3 , computing unit 3 , LD / ST 3 , primary cache 3, and buffer cache 3 . The third-stage arithmetic unit also includes the transfer control unit, the first transfer execution unit, and the second transfer execution unit of the first embodiment.
第4段演算部は、reg4、演算器4、LD/ST4、1次キャッシュ4及び、バッファキャッシュ4を含んでいる。また、この第4段演算部は、上記の実施の形態1の転送制御部、第1の転送実行部及び、第2の転送実行部も含んでいる。 The fourth stage computing unit includes reg 4 , computing unit 4 , LD / ST 4 , primary cache 4, and buffer cache 4 . The fourth-stage arithmetic unit also includes the transfer control unit, the first transfer execution unit, and the second transfer execution unit of the first embodiment.
第n段演算部は、regn、演算器n、LD/STn、1次キャッシュn及び、バッファキャッシュnを含んでいる。また、この第n段演算部は、上記の実施の形態1の転送制御部、第1の転送実行部及び、第2の転送実行部も含んでいる。 The n-th stage arithmetic unit includes reg n , arithmetic unit n , LD / ST n , primary cache n, and buffer cache n . The n-th stage arithmetic unit also includes the transfer control unit, the first transfer execution unit, and the second transfer execution unit of the first embodiment.
なお、図面の見易さを図るため、図10には、第1〜n段演算部の各々の転送制御部、第1の転送実行部及び、第2の転送実行部は表示していない。 For ease of viewing the drawing, FIG. 10 does not show the transfer control unit, the first transfer execution unit, and the second transfer execution unit of the first to n-th stage calculation units.
reg1〜regnは、各々が対応する演算器1〜演算器nにおける演算処理に必要なデータを保持するものである。reg1〜regnの各々は、複数のレジスタからなるレジスタ群(図示省略)と、そのレジスタ群の各レジスタの読み出しデータを外部に転送するための転送器(図示省略)と、を有している。 Reg 1 to reg n hold data necessary for the arithmetic processing in the arithmetic units 1 to n corresponding to each of them. Each of reg 1 to reg n includes a register group (not shown) including a plurality of registers, and a transfer unit (not shown) for transferring read data of each register of the register group to the outside. Yes.
レジスタ群の各レジスタに対する読み出しや書き込みは、命令デコード部80によるデコード結果に基づいて実行される。レジスタ群の各レジスタは、自身のレジスタ番号をアクセスのキーとして読み出しや書き込みがされる。
Reading and writing to each register of the register group is executed based on the decoding result by the
reg1〜regnの転送器は、読み出しレジスタ番号が指定されると、その指定された番号が付されたレジスタに保持されているデータを外部に転送する。 When the read register number is specified, the transfer units reg 1 to reg n transfer the data held in the register with the specified number to the outside.
reg1〜regnの各レジスタ群のレジスタ同士は一対一に対応している。具体的には、reg1〜regnの各レジスタ群の各レジスタ間においてレジスタ番号が同一のもの同士が対応付けられている。 The registers in each register group of reg 1 to reg n have a one-to-one correspondence. Specifically, registers having the same register number are associated with each other in each register group of reg 1 to reg n .
演算器1〜演算器nの各々は、データ処理装置3における実体的な処理を行なうものである。演算器1〜演算器nの各々は、上記の実施の形態1の演算器の各々に相当するものである。
Each of the arithmetic units 1 to n performs substantial processing in the
演算器1〜演算器nの各々は、複数の演算器からなる演算器群(図示省略)と、複数の保持器からなる保持器群(図示省略)と、転送器(図示省略)と、を有している。 Each of the computing units 1 to n includes a computing unit group (not shown) composed of a plurality of computing units, a cage group (not shown) consisting of a plurality of cages, and a transfer unit (not shown). Have.
reg1〜regnの各々の転送器は、各レジスタ群のレジスタの読み出しデータを対応する演算器1〜演算器nに転送可能である。そして、演算器1〜演算器nの演算器群の各演算器は、reg1〜regnの各レジスタのうちから2つの読み出しデータを取得し、それらデータを用いて四則演算や論理演算等各種の演算処理を実行する。各演算器の演算処理は同時に実行される。 Each transfer unit of reg 1 to reg n can transfer the read data of the registers of each register group to the corresponding calculation units 1 to n . Then, the arithmetic unit 1 to each calculator arithmetic unit group of the arithmetic unit n gets the two read data from among the registers reg 1 through REG n, arithmetic and logical operations such as various using those data The calculation process is executed. The arithmetic processing of each arithmetic unit is executed simultaneously.
演算器1〜演算器nの保持器群の各保持器は、各々に対応する演算器の演算結果を格納する。各保持器は、各演算器と一対一に対応している。 Each holder of the holder group of the calculators 1 to n stores the calculation results of the calculators corresponding to the holders. Each retainer has a one-to-one correspondence with each arithmetic unit.
演算器1〜演算器nの転送器は、対応する各保持器に格納されている、各演算器の演算結果を外部に転送する。 The transfer units of the calculation units 1 to n transfer the calculation results of the calculation units stored in the corresponding holding units to the outside.
LD/ST1〜LD/STnの各々は、複数のLD(ロード部)からなるロード部群(図示省略)と、複数のST(ストア部)からなるストア部群と、を有している。 Each of LD / ST 1 to LD / ST n includes a load unit group (not shown) composed of a plurality of LDs (load units) and a store unit group composed of a plurality of STs (store units). .
1次キャッシュ1〜1次キャッシュnの各々は、各々が対応するLD/ST1〜LD/STnに接続されており、LD/ST1〜LD/STnによるロード、ストア動作に従って読み出し及び書き込みが高速に実行される。1次キャッシュ1〜1次キャッシュnの各々はは、大容量の2次キャッシュ50とは別の小容量のキャッシュメモリを用いて構成されている。
Each of the primary cache 1 to primary cache n is connected to the corresponding LD / ST 1 to LD / ST n , and reads and writes in accordance with load and store operations by LD / ST 1 to LD / ST n Is executed at high speed. Each of the primary cache 1 to primary cache n is configured using a small-capacity cache memory different from the large-capacity
バッファキャッシュ1〜バッファキャッシュnの各々は、最大で全内容を次段以降に伝搬させるために容量を極めて小さくする必要がある。このため、バッファキャッシュ1〜バッファキャッシュnの各々は、1次キャッシュ1〜1次キャッシュnの各々と同様、大容量の2次キャッシュ50とは別の小容量のキャッシュメモリを用いて構成されている。
Each of the buffer cache 1 to the buffer cache n needs to have a very small capacity in order to propagate the entire contents to the next and subsequent stages at the maximum. For this reason, each of the buffer cache 1 to the buffer cache n is configured by using a small-capacity cache memory different from the large-capacity
このデータ処理装置3は、公知のVLIW方式によるプロセッサアーキテクチャを前提としており、このため、VLIW形式の機械語命令は通常、第1段演算部を構成する、reg1、演算器1、LD/ST1、1次キャッシュ1及び、バッファキャッシュ1により実行される。すなわち、VLIW方式による演算処理の動作(非アレイ動作)は、第1段演算部により実行される。
The
したがって、上記の実施の形態1における、複数の演算器による演算処理の同時動作(アレイ動作)を開始するために必要となるレジスタ情報は、常時、reg1に格納されている。 Accordingly, register information necessary for starting the simultaneous operation (array operation) of the arithmetic processing by the plurality of arithmetic units in the first embodiment is always stored in reg 1 .
そして、命令デコード部80によるデコード結果によりアレイ動作開始命令が検出された場合、演算器1〜演算器nに対して、各演算器1〜演算器nによる演算処理に必要なデータを格納するレジスタのレジスタ番号を表わすソースレジスタ番号、各演算器1〜演算器nによる演算処理の演算種別、及び、各演算器1〜演算器nの演算結果の格納先であるレジスタのレジスタ番号を表わすデスティネーションレジスタ番号、からなる制御情報Aが第1〜n段演算部の各々に設定される。
When the array operation start instruction is detected by the decoding result of the
この制御情報Aは、アレイ動作開始命令の付加情報として配置すればよい。この場合、アレイ動作開始命令のデコード時に制御情報Aを一度に獲得することができる。 This control information A may be arranged as additional information of the array operation start command. In this case, the control information A can be obtained at a time when the array operation start instruction is decoded.
また、この制御情報Aは、後続のVLIW命令列自身として供給してもよい。この場合、アレイ動作開始命令をデコードした後、引き続き後続するVLIW命令を順にデコードし、ループの繰り返しを意味する後方分岐命令、すなわちアレイ動作の最終段に対応する命令をデコードするまでの間に、ループからの脱出を意味する前方分岐命令、すなわちアレイ動作の終結条件に対応する命令を検出して、休止条件としてセットできる。このため、既存命令列に付加すべき制御情報を削減することができる。 The control information A may be supplied as a subsequent VLIW instruction sequence itself. In this case, after the array operation start instruction is decoded, the subsequent VLIW instructions are successively decoded in order, and the backward branch instruction meaning loop repetition, that is, the instruction corresponding to the final stage of the array operation is decoded. A forward branch instruction meaning exit from the loop, that is, an instruction corresponding to the termination condition of the array operation can be detected and set as a pause condition. For this reason, control information to be added to the existing instruction sequence can be reduced.
この際、各演算器1〜演算器nによる演算処理に必要なデータは、前段から順次伝搬されてくることを前提にすれば、演算器1〜演算器nのすべてに対して一斉に制御情報を放送する必要はなく、各演算器1〜演算器nに最初のデータが到着すると同時に制御情報が到着する構成とすることができる。 At this time, if it is assumed that the data necessary for the arithmetic processing by each of the arithmetic units 1 to n is sequentially transmitted from the previous stage, the control information for all of the arithmetic units 1 to n is simultaneously controlled. The control information can be configured to arrive at the same time as the first data arrives at each of the computing units 1 to n .
アレイ動作開始後は、例えばループ構造の1イタレーションが演算器ネットワークに写像されており、データを順次流し込むことにより大量のデータ処理を行なう。 After the array operation starts, for example, one iteration of the loop structure is mapped to the arithmetic unit network, and a large amount of data processing is performed by sequentially flowing data.
すなわち、アレイ動作開始後は、該アレイ動作が終了するまでの間、各演算器1〜演算器nに対する制御情報を変更する必要がなく、また、非アレイ動作時に必要であった命令デコード部80によるデコード動作を実行する必要がなくなる。このため、命令デコード部80は停止し、さらに、命令フェッチ部70によるフェッチ動作も同様に停止することができる。
That is, after the array operation is started, it is not necessary to change the control information for each of the arithmetic units 1 to n until the end of the array operation, and the
また、制御情報Aに、各演算器1〜演算器nのアレイ動作を停止させるためのアレイ動作終結条件を付加しておき、アレイ動作中にあらかじめ指示した条件が満たされた場合に、自動的に非アレイ動作に復帰する構成とする。 In addition, an array operation termination condition for stopping the array operation of each of the arithmetic units 1 to n is added to the control information A, and when the conditions specified in advance during the array operation are satisfied, In this case, the non-array operation is restored.
このアレイ動作終結条件とは、具体的には、各演算器1〜演算器nの実行サイクル数等である。 The array operation termination condition is specifically the number of execution cycles of each of the arithmetic units 1 to n .
2次キャッシュ50は、LD/ST1が保有するバッファキャッシュ1のみに接続されている。そして、第2段以降については、バッファキャッシュ1のデータが順次伝搬されている。
The
ロード命令は、reg1に格納されたアドレス情報を演算器1において加減算して得られるアドレスに従って1次キャッシュ1及びバッファキャッシュ1を参照し、得られたデータをLD/ST1のストア部群のストア部に格納される。 The load instruction refers to the primary cache 1 and the buffer cache 1 according to the address obtained by adding / subtracting the address information stored in reg 1 in the arithmetic unit 1 , and the obtained data is stored in the store unit group of the LD / ST 1. Stored in the store.
このストア部に格納されたデータは、次のサイクルにおいて、後段の演算器2またはreg2の入力となる。 The data stored in the store unit becomes the input of the subsequent arithmetic unit 2 or reg 2 in the next cycle.
次に、データ処理装置3のキャッシュ方式の動作について説明する。図11は、データ処理装置3のキャッシュ方式を説明するための説明図である。
Next, the operation of the cache method of the
図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を含んでいる。
As shown in FIG. 11, in the
そして、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に接続されている。
The
2次キャッシュ50のバンク数は4ウェイ(Way0、Way1、Way2、Way3)であり、Way0、Way1、Way2の各データからなるブロックがバッファキャッシュ104に送り込まれる。
The number of banks of the
このキャッシュ方式4では、例えば3×3の画素における、垂直方向の1行分の画素データ「06、16、26」が2次キャッシュ50から第1段演算部のバッファキャッシュ104に送り込まれると、それまでのバッファキャッシュ104に格納されていた垂直方向の1行分の画素データ「05、15、25」が第1段演算部の1次キャッシュ103に転送されると共に、第2段演算部のバッファキャッシュ204に転送される。
In this
同様に、垂直方向の1行分の画素データ「05、15、25」が第1段演算部のバッファキャッシュ104から第2段演算部のバッファキャッシュ204に送り込まれると、それまでのバッファキャッシュ204に格納されていた垂直方向の1行分の画素データ「04、14、24」が第2段演算部の1次キャッシュ203に転送されると共に、第3段演算部のバッファキャッシュ304に転送される。
Similarly, when pixel data “05, 15, 25” for one line in the vertical direction is sent from the
垂直方向の1行分の画素データ「04、14、24」が第2段演算部のバッファキャッシュ204から第3段演算部のバッファキャッシュ304に送り込まれると、それまでのバッファキャッシュ304に格納されていた垂直方向の1行分の画素データ「03、13、23」が第3段演算部の1次キャッシュ303に転送されると共に、第4段演算部のバッファキャッシュ404に転送される。
When pixel data “04, 14, 24” for one line in the vertical direction is sent from the
垂直方向の1行分の画素データ「03、13、23」が第3段演算部のバッファキャッシュ304から第4段演算部のバッファキャッシュ404に送り込まれると、それまでのバッファキャッシュ404に格納されていた垂直方向の1行分の画素データ「02、12、22」が第4段演算部の1次キャッシュ403に転送されると共に、第5段演算部のバッファキャッシュ504に転送される。
When pixel data “03, 13, 23” for one line in the vertical direction is sent from the
垂直方向の1行分の画素データ「02、12、22」が第4段演算部のバッファキャッシュ404から第5段演算部のバッファキャッシュ504に送り込まれると、それまでのバッファキャッシュ504に格納されていた垂直方向の1行分の画素データ「01、11、21」が第5段演算部の1次キャッシュ503に転送されると共に、第6段演算部のバッファキャッシュ604に転送される。
When pixel data “02, 12, 22” for one line in the vertical direction is sent from the
垂直方向の1行分の画素データ「01、11、21」が第5段演算部のバッファキャッシュ504から第6段演算部のバッファキャッシュ604に送り込まれると、それまでのバッファキャッシュ604に格納されていた垂直方向の1行分の画素データ「00、10、20」が第6段演算部の1次キャッシュ603に転送されると共に、第7段演算部のバッファキャッシュ704に転送される。
When pixel data “01, 11, 21” for one line in the vertical direction is sent from the
本実施の形態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間におけるデータ転送を制御する。
Also in the second embodiment, as in the first embodiment, each operation of the transfer control unit, the first transfer execution unit, and the second transfer execution unit of the first to ninth stage arithmetic units performs buffering. Controls data transfer between the
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。 The present invention is not limited to the above-described embodiments, and various modifications are possible within the scope shown in the claims, and embodiments obtained by appropriately combining technical means disclosed in different embodiments. Is also included in the technical scope of the present invention.
本発明は、複数の機械語命令を高速に同時実行するデータ処理装置に好適に利用することができる。 The present invention can be suitably used for a data processing apparatus that simultaneously executes a plurality of machine language instructions at high speed.
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, 3,
13, 23, 33, 43, 104, 204, 304, 404, 504, 604, 704, 804, 904
15, 25, 35, 45 First transfer execution unit (first execution unit)
16, 26, 36, 46 Second transfer execution unit (second execution unit)
20 Second stage
60 Main memory 70 Instruction fetch
Claims (8)
前記複数の演算器の各々に設けられ、対応する演算器にデータを転送する複数の第1キャッシュと、
前記複数の演算器に共有化され、前記複数の演算器の各処理に利用されるデータを格納する第2キャッシュと、
前記複数の第1キャッシュの各々に設けられ、対応する第1キャッシュにデータを転送する複数のバッファキャッシュと
を備え、
前記複数のバッファキャッシュは、前記第2キャッシュに接続され、前記第2キャッシュからデータが転送される第1段目のバッファキャッシュを含み、
前記複数のバッファキャッシュの各々は、前記第1段目のバッファキャッシュから順次連続的に接続されており、
前記複数のバッファキャッシュの各々は、前記第2キャッシュから前記第1段目のバッファキャッシュに転送されたデータの一部を、各バッファキャッシュの後段側に順次転送すると共に、各バッファキャッシュに格納されているデータの一部を、各バッファキャッシュに対応する第1キャッシュに転送すること特徴とするデータ処理装置。 A plurality of arithmetic units;
A plurality of first caches provided in each of the plurality of computing units and transferring data to the corresponding computing units;
A second cache for storing data shared by the plurality of computing units and used for each processing of the plurality of computing units;
A plurality of buffer caches provided in each of the plurality of first caches for transferring data to the corresponding first caches;
The plurality of buffer caches include a first-stage buffer cache connected to the second cache and to which data is transferred from the second cache;
Each of the plurality of buffer caches is sequentially connected sequentially from the first stage buffer cache,
Each of the plurality of buffer caches sequentially transfers a part of the data transferred from the second cache to the first-stage buffer cache to the subsequent stage of each buffer cache and is stored in each buffer cache. A data processing apparatus for transferring a part of stored data to a first cache corresponding to each buffer cache.
前記複数の演算器の各処理に必要なデータは、前記データ処理装置が処理するプログラムのデータアクセスパターンの解析結果に基づいて特定されることを特徴とする請求項3または5に記載のデータ処理装置。 The data processing apparatus analyzes a data access pattern based on execution of a program to be processed by itself, and processes the program using the analysis result.
6. The data processing according to claim 3, wherein data necessary for each processing of the plurality of computing units is specified based on an analysis result of a data access pattern of a program processed by the data processing device. apparatus.
前記複数の第1キャッシュの各々に設けられ、前記特定部による特定結果に基づいて、対応する第1キャッシュの記憶不要領域の記憶動作を停止させる第1実行部と、
前記複数のバッファキャッシュの各々に設けられ、前記特定部による特定結果に基づいて、対応するバッファキャッシュの記憶不要領域の記憶動作を停止させる第2実行部と
をさらに備えていることを特徴とする請求項6に記載のデータ処理装置。 A specifying unit for specifying data necessary for each processing of the plurality of arithmetic units based on the analysis result of the data access pattern of the program;
A first execution unit that is provided in each of the plurality of first caches and stops a storage operation of a storage unnecessary area of the corresponding first cache based on a specification result by the specification unit;
And a second execution unit that is provided in each of the plurality of buffer caches and stops the storage operation of the storage unnecessary area of the corresponding buffer cache based on the identification result by the identification unit. The data processing apparatus according to claim 6.
前記複数の演算器の各処理に必要なデータは、前記プログラムのデータアクセスパターンの解析内容に基づいてあらかじめ特定されており、
前記複数の第1キャッシュの各々は、前記複数の演算器の各処理に必要なデータを格納すべく、各第1キャッシュの記憶領域があらかじめ設定されており、
前記複数のバッファキャッシュの各々は、前記複数の演算器の各処理に必要なデータを、対応する第1キャッシュに転送すべく、各バッファキャッシュの記憶領域があらかじめ設定されていることを特徴とする請求項1に記載のデータ処理装置。 The program processed by the data processing device has been previously analyzed for data access patterns,
Data necessary for each processing of the plurality of arithmetic units is specified in advance based on the analysis contents of the data access pattern of the program,
In each of the plurality of first caches, a storage area of each first cache is set in advance in order to store data necessary for each processing of the plurality of arithmetic units.
In each of the plurality of buffer caches, a storage area of each buffer cache is set in advance so as to transfer data necessary for each process of the plurality of arithmetic units to a corresponding first cache. The data processing apparatus according to claim 1.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009150788A JP2011008485A (en) | 2009-06-25 | 2009-06-25 | Data processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009150788A JP2011008485A (en) | 2009-06-25 | 2009-06-25 | Data processing apparatus |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011008485A true JP2011008485A (en) | 2011-01-13 |
Family
ID=43565074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009150788A Pending JP2011008485A (en) | 2009-06-25 | 2009-06-25 | Data processing apparatus |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011008485A (en) |
-
2009
- 2009-06-25 JP JP2009150788A patent/JP2011008485A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210049126A1 (en) | Reconfigurable parallel processing | |
TWI628594B (en) | User-level fork and join processors, methods, systems, and instructions | |
JP2021192257A (en) | Memory-network processor with programmable optimization | |
US20210216318A1 (en) | Vector Processor Architectures | |
JP4234925B2 (en) | Data processing apparatus, control method and recording medium therefor | |
CN109074260A (en) | Out-of-order block-based processor and instruction scheduler | |
JP6006247B2 (en) | Processor, method, system, and program for relaxing synchronization of access to shared memory | |
JP5987233B2 (en) | Apparatus, method, and system | |
JP6373425B2 (en) | Instruction to shift multiple bits to the left and pull multiple 1s into multiple lower bits | |
CN108027767A (en) | Register read/write-in sequence | |
CN108027769A (en) | Instructed using register access and initiate instruction block execution | |
JP2014501007A (en) | Method and apparatus for moving data from a general purpose register file to a SIMD register file | |
CN107810478A (en) | The block-based framework of parallel execution with continuous blocks | |
JP2017107579A (en) | Vector move instruction controlled by read and write masks | |
CN108027773A (en) | The generation and use of memory reference instruction sequential encoding | |
US10268519B2 (en) | Scheduling method and processing device for thread groups execution in a computing system | |
WO2017185393A1 (en) | Apparatus and method for executing inner product operation of vectors | |
WO2017185392A1 (en) | Device and method for performing four fundamental operations of arithmetic of vectors | |
JP5279046B2 (en) | Data processing device | |
TWI546736B (en) | Multi-threaded gpu pipeline | |
JP6551751B2 (en) | Multiprocessor device | |
JP2011008485A (en) | Data processing apparatus | |
JP2004503872A (en) | Shared use computer system | |
KR20230082621A (en) | Highly parallel processing architecture with shallow pipelines | |
KR20230159596A (en) | Parallel processing architecture using speculative encoding |