(57)【特許請求の範囲】
【請求項１】
プロセッサと、メインメモリと、ローカルメモリを有するアクセラレータと、を具備するデータ処理装置であって、
前記プロセッサで実行されているプログラムの分岐履歴およびメモリアクセス履歴を取るプロファイルユニットを備え、
前記プログラムの前記分岐履歴および前記メモリアクセス履歴に基づいて、前記アクセラレータが前記ローカルメモリを利用するように、該アクセラレータの合成および前記プログラムの変更を行うことを特徴とするデータ処理装置。
【請求項２】
プロセッサと、メインメモリと、ローカルメモリを有するアクセラレータと、を具備する処理装置におけるデータ処理方法であって、
前記プロセッサで実行されているプログラムの分岐履歴およびメモリアクセス履歴を取り、
前記プログラムの前記分岐履歴および前記メモリアクセス履歴に基づいて、前記アクセラレータが前記ローカルメモリを利用するように、該アクセラレータの合成および前記プログラムの変更を行うことを特徴とするデータ処理方法。
【請求項３】
請求項２に記載のデータ処理方法において、前記ローカルメモリには、優先度の高いデータから順番に置くことを特徴とするデータ処理方法。
【請求項４】
請求項３に記載のデータ処理方法において、前記優先度は、データ容量が小さくてアクセス回数が多いものを高くし、該データ容量が小さくてアクセス回数が多い領域を前記ローカルメモリに置くことを特徴とするデータ処理方法。
【請求項５】
プロセッサと、メインメモリと、ローカルメモリを有するアクセラレータと、を具備するコンピュータに、
前記プロセッサで実行されているプログラムの分岐履歴およびメモリアクセス履歴を取らせる手順と、
前記プログラムの前記分岐履歴および前記メモリアクセス履歴に基づいて、前記アクセラレータが前記ローカルメモリを利用するように、該アクセラレータの合成および前記プログラムの変更を行わせる手順と、を実行させることを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置およびデータ処理方法に関し、特に、プロセッサ，メインメモリ，ローカルメモリを有するアクセラレータを備えたデータ処理装置およびデータ処理方法に関する。
【背景技術】
【０００２】
従来、組み込みシステムにおけるソフトウェア高速化手法の一つとして、ソフトウェア中の負荷の高い処理を専用のアクセラレータを用意して加速実行する手法が古くから知られている。
【０００３】
そして、プロセッサ，および，ローカルメモリを有するアクセラレータを備えたデータ処理装置（例えば、マルチコアＳｏＣ）として、プロセッサで実行中のプログラム中の処理の重い部分を動的に抽出し、その抽出した処理を自動的にアクセラレータ向けに合成してアクセラレータで実行するものが提供されている。ここで、アクセラレータとしては、例えば、処理を動的に合成することが可能なリコンフィグ（リコンフィギャラブル回路）やＤＳＰ（Digital Signal Processor）が考えられる。
【０００４】
ところで、近年、組み込みシステムが複雑化するのに従ってソフトウェアも複雑化しており、ソフトウェア開発工数の削減が重要になってきている。このため、プロファイラ（プロファイルユニット）を設けてソフトウェア中の負荷の高い部分を実行時に抽出し、自動的にアクセラレータで実行させる技術が研究されている（例えば、非特許文献１および２参照）。
【０００５】
図１はデータ処理装置の一構成例を概略的に示すブロック図である。図１において、参照符号１はプロセッサ、２はアクセラレータ、３はメインメモリ、４はバス、５はプロファイルユニット、６はプログラム、そして、７は合成ルーチンを示している。
【０００６】
ここで、プロセッサ１，アクセラレータ２，メインメモリ３，バス４およびプロファイルユニット５は、ハードウェア（ＨＷ）を構成し、プログラム６および合成ルーチン７は、ソフトウェア（ＳＷ）を構成している。
【０００７】
図１に示されるように、プロセッサ１，アクセラレータ２およびメインメモリ３はバス４を介して接続され、また、プロセッサ１にはプロファイルユニット５が取り付けられ、そして、アクセラレータ２にはローカルメモリ２１が設けられている。
【０００８】
図１に示されるように、非特許文献１に開示されたデータ処理装置は、プロセッサ１にプロファイルユニット５を取り付け、プロファイルユニット５によりプロセッサ１で実行しているプログラム負荷の大きな部分を自動的に検出するようになっている。
【０００９】
具体的に、例えば、プロセッサ１で実行中のプログラム６の分岐履歴をトレースし、逆方向の分岐（ループになっている部分）が一定回数以上検出されると、分岐履歴からそのループ内でもっとも通過する頻度の高いパスを求め、これを負荷の大きな部分として検出する。
【００１０】
この検出したパスをプログラマブルなアクセラレータ２で処理するのに適した合成ルーチン７として合成することによりプログラムの高速実行を行うようになっている。ここで、合成ルーチン７では、元のプログラム６で負荷の大きな処理を行うコードをアクセラレータ２が使用するコードに置き換えられ、さらに、たとえ頻度の低い方に分岐してしまった場合でも正しい結果が得られるように、アクセラレータ２での処理の過不足を補う処理を行う補償コードも挿入されるようになっている。
【００１１】
すなわち、ソフトウェアＳＷはプロセッサ１上で動作しており、プログラム６とアクセラレータ向けに合成を行う合成ルーチン７が載っている。通常は、プログラム６が動作しており、プロファイルユニット５が負荷の重い処理を検出すると、プロセッサ１に割り込みが入り合成ルーチン７が実行される。
【００１２】
また、アクセラレータ２はローカルメモリ２１を有し、低速なメインメモリ３の代わりに高速なローカルメモリ２１を使用することで、アクセラレータ２での実行速度を高速化するようになっている。
【００１３】
【非特許文献１】藤井洋輔他著，”動的システム最適化技術 SysteMorph の位置実装例 動的トレースベースド・ソフトウェアパイプライニングの実装”，電子情報通信学会，信学技報，２００５年１２月
【非特許文献２】M YOSHIDA et al., "SysteMorph Prototyping on DAP/DNA", IEEE Asia-Pacific Conference on Advanced System Integrated Circuits, August, 2004
【発明の開示】
【発明が解決しようとする課題】
【００１４】
上述したように、従来、アクセラレータ２にローカルメモリ２１を持たせて、低速なメインメモリ３の代わりに高速なローカルメモリ２１を使用することで、アクセラレータ２での実行を高速化するデータ処理装置が提案されている。
【００１５】
しかしながら、従来のデータ処理装置では、アクセラレータ２の合成（合成ルーチン７）は、オペレータがプログラムを解析し、アクセラレータ２で実行させる処理で使用するデータを特定し、これをローカルメモリ２１に置くことでローカルメモリ２１を使用するようになっていた。
【００１６】
そのため、自動的にアクセラレータ２の合成が行われると、どこがアクセラレータ２で実行されるか分からないため、人手でローカルメモリ２１を使うように変更することは困難であった。
【００１７】
また、たとえアクセラレータ２で実行される個所を確認することができたとしても、ローカルメモリ２１を使用するようにプログラム６を解析して変更するのは非常に手間が掛かるため、自動的にアクセラレータ２の合成を行うときに、一緒に自動でローカルメモリを使用するように合成できるようになるのが望ましい。
【００１８】
本発明は、上述した従来技術が有する課題に鑑み、アクセラレータでの実行速度を高速化したデータ処理装置およびデータ処理方法の提供を目的とする。
【課題を解決するための手段】
【００１９】
本発明の第１の形態によれば、プロセッサと、メインメモリと、ローカルメモリを有するアクセラレータと、を具備するデータ処理装置であって、前記プロセッサで実行されているプログラムの分岐履歴およびメモリアクセス履歴を取るプロファイルユニットを備え、前記プログラムの前記分岐履歴および前記メモリアクセス履歴に基づいて、前記アクセラレータが前記ローカルメモリを利用するように、該アクセラレータの合成および前記プログラムの変更を行うことを特徴とするデータ処理装置が提供される。
【００２０】
本発明の第２の形態によれば、プロセッサと、メインメモリと、ローカルメモリを有するアクセラレータと、を具備する処理装置におけるデータ処理方法であって、前記プロセッサで実行されているプログラムの分岐履歴およびメモリアクセス履歴を取り、前記プログラムの前記分岐履歴および前記メモリアクセス履歴に基づいて、前記アクセラレータが前記ローカルメモリを利用するように、該アクセラレータの合成および前記プログラムの変更を行うことを特徴とするデータ処理方法が提供される。
【００２１】
本発明の第３の形態によれば、プロセッサと、メインメモリと、ローカルメモリを有するアクセラレータと、を具備するコンピュータに、前記プロセッサで実行されているプログラムの分岐履歴およびメモリアクセス履歴を取らせる手順と、前記プログラムの前記分岐履歴および前記メモリアクセス履歴に基づいて、前記アクセラレータが前記ローカルメモリを利用するように、該アクセラレータの合成および前記プログラムの変更を行わせる手順と、を実行させることを特徴とするデータ処理プログラムが提供される。
【発明の効果】
【００２２】
本発明によれば、アクセラレータでの実行速度を高速化したデータ処理装置およびデータ処理方法を提供することができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明に係るデータ処理装置およびデータ処理方法の実施例を、添付図面を参照して詳述する。
【実施例】
【００２４】
本実施例のデータ処理装置では、図１を参照して説明したデータ処理装置において、プロファイルユニット５に対して機能を追加し、プログラムの分岐履歴だけでなくメモリアクセスの履歴もトレースするようになっている。
【００２５】
具体的に、例えば、プログラム６中にロード／ストア命令があると、そのロード／ストア命令でどのアドレスにアクセスしたかの履歴を取っておく。さらに、本実施例では、単にメモリアクセスの履歴を取るだけではなく、自動的にローカルメモリ２１を使用するために、このメモリアクセス履歴からどのデータをローカルメモリ２１に置くかを決定するためのフロー（処理）が必要になる。
【００２６】
この処理は、以下の５つのステップから構成され、前述したプログラム６中の負荷の大きな部分を検出してからアクセラレータ２の合成を行うときに実行される。
【００２７】
処理１．メモリアクセス履歴からプログラム中の負荷の大きな部分が使用するデータ領域を求める。
処理２．前記で求めたデータ領域をアクセラレータのローカルメモリにマッピングする。
処理３．アクセラレータ合成時に、ロードストア命令のアドレスを、ローカルメモリを使用するように変更する。
処理４．アクセラレータ起動時、終了時にローカルメモリとメインメモリの間でデータ転送を行うようにする。
【００２８】
図２は本発明に係るデータ処理装置における処理の一例を説明するためのフローチャートである。
【００２９】
図２に示されるように、まず、ステップＳＴ１において、実行中のプログラムのコンテキストを退避させて、ステップＳＴ２に進み、プロファイルユニット５から分岐履歴を読んで処理の大きなパスを求め、さらに、ステップＳＴ３に進んで、プロファイルユニット５からメモリアクセス履歴を読んで処理の大きなパスで使用する領域を推定する。
【００３０】
すなわち、ステップＳＴ３において、メモリアクセス履歴からプログラム６中の負荷の大きな部分が使用するデータ領域を求める（処理１）。ここで、プログラム６中の負荷の大きな部分が分かれば、メモリアクセス履歴から過去にその部分でアクセスした領域を求めることが可能になる。
【００３１】
負荷の多い部分において、個別のロードストア命令ごとにアクセス領域の性質を解析することで、将来使用するデータ領域を推定する。なお、領域の性質は、例えば、以下の（ａ）〜（ｄ）ように分類することができる。
【００３２】
（ａ）常に固定のアドレスにアクセスする。
将来も同じアドレスにアクセスすると推定する。
【００３３】
（ｂ）特定の範囲内に繰り返しアクセスを行う。
検出できた範囲を将来も使用すると推定する。
【００３４】
（ｃ）特定の間隔でアドレスが変化する（例えば、アクセスのたびにアドレスが＋４とされる）。
配列アクセスと推定する。
【００３５】
（ｄ）アクセス先が不規則に変化する。
推定不可能なので、ローカルメモリ化の対象にはしない。
【００３６】
次に、ステップＳＴ４に進んで、推定した領域をローカルメモリ２１にマッピングする。すなわち、ステップＳＴ３で求めたデータ領域をアクセラレータ２のローカルメモリ２１にマッピングする。
【００３７】
一般にローカルメモリ２１の容量は小さいため、ステップＳＴ３で求めた全ての領域をローカルメモリ２１に置くことができるとは限らない。そこで、例えば、優先度をつけて優先度の高いものから順番にローカルメモリ２１に置くようにする。なお、優先度は、データ容量が小さくてアクセス回数が多いものを高くし、そのデータ容量が小さくてアクセス回数が多い領域をローカルメモリ２１に置くことにより効率を向上させることができる。
【００３８】
具体的に、上記の分類（ａ）〜（ｄ）において、優先度は、領域（ａ），（ｂ），（ｃ），（ｄ）の順に低くなるため、その順番でマッピングするのが好ましい。同じ分類中に複数の領域がある場合、容量とアクセス回数から優先度をつけてマッピングする。なお、ローカルメモリ２１に収まりきらないデータは、メインメモリ３に置くことになる。
【００３９】
さらに、ステップＳＴ５において、メモリアクセスアドレスを変更してアクセラレータを合成する。
【００４０】
ここで、アクセラレータ合成時には、例えば、ロードストア命令のアドレスを、ローカルメモリを使用するように変更する。すなわち、アクセラレータ２がローカルメモリ２１を使用するには、ロードストア命令（または、ロードストア命令に相当する処理）でのアドレスをローカルメモリ２１のものに変更する必要がある。
【００４１】
このアドレスの変更方法としては何通りかあるが、代表的なものでは、ＭＭＵ（Memory Management Unit：メモリ管理ユニット）のようなハードウェア（ＨＷ）のアドレス変換の機構を利用する方法、或いは、ロードストアの際にメインメモリにおけるアドレスとローカルメモリにおけるアドレスの差分を加えてアクセスする方法などが挙げられる。
【００４２】
また、アクセス領域の推定が外れた場合に備えて、アクセス領域の推定が外れたことを検出して外れた場合はメインメモリにアクセスするようにしておく必要がある。この場合においても、ＭＭＵのようなＨＷ機構を利用する方法、或いは、アクセスアドレスが推定範囲内か検出するコードをロードストア命令の前に挿入しておく方法がある。
【００４３】
なお、後者の方法は、検出のためのオーバーヘッドが存在するが、それを加えてもメインメモリを使用するよりもローカルメモリを使用した方が一般的には高速になる。
【００４４】
また、アクセラレータの構造上メインメモリにアクセスできないといったものもあるが、この場合でも推定が外れたときにアクセラレータでの処理を終了して、元のプロセッサに戻って補償コードを実行することで処理の正しさを保つことができる。この場合の補償コードでは、アクセス領域の推定が外れた個所から残りの処理を元のプロセッサ側で行うことになる。
【００４５】
さらに、ステップＳＴ６に進んで、データ転送付きのアクセラレータ呼出コードおよび補償コードを生成し、そして、ステップＳＴ７において、実行中プログラムのコンテキストを復元して処理を終了する。
【００４６】
なお、ステップＳＴ６では、アクセラレータ２の起動時および終了時等にローカルメモリ２１とメインメモリ３との間でデータ転送を行うようにする。さらに、元のプログラム６側でアクセラレータ２を呼び出す際に、呼び出す直前にメインメモリ３からローカルメモリ２１へデータを転送し、アクセラレータ２での実行が完了すると、ローカルメモリ２１からメインメモリ３へデータを転送するコードを挿入する。
【００４７】
図３は本発明に係るデータ処理装置におけるアクセラレータの起動コードの一例を概略的に示す図である。
【００４８】
図３に示されるように、アクセラレータの起動コードは、例えば、オリジナルのプログラムを変更し、負荷の重い部分の先頭のコードをこの関数の呼び出しに変更することでアクセラレータを使用することになる。
【００４９】
図４は本発明が適用されるデータ処理プログラムを記録した媒体の例を説明するための図である。図４において、参照符号１０はデータ処理装置（コンピュータ）、２０はプログラム（データ）提供者、そして、３０は可搬型記録媒体を示している。
【００５０】
本発明は、例えば、図４に示すような処理装置１０に対するプログラム（データ）として与えられ、処理装置１０により実行される。処理装置１０は、プロセッサを含む演算処理装置本体１１、および、演算処理装置本体１１に対してプログラム（データ）を与え或いは処理された結果を格納する処理装置側メモリ（例えば、ＲＡＭ（Random Access Memory）やハードディスク）１２等を備える。処理装置１０に提供されたプログラムは、ローディングされて処理装置１０のメインメモリ上で実行される。
【００５１】
プログラム提供者２０は、プログラムを格納する手段（回線先メモリ：例えば、ＤＡＳＤ（Direct Access Storage Device））２１を有し、例えば、インターネット等の回線を介してプログラムを処理装置１０に提供し、或いは、ＣＤ−ＲＯＭやＤＶＤ等の光ディスクまたは磁気ディスクや磁気テープといった可搬型記録媒体３０を介して処理装置１０に提供する。本発明に係るデータ処理プログラムを記録した媒体は、上記の処理装置側メモリ１２、回線先メモリ２１、および、可搬型記録媒体３０等の様々なものを含むのはいうまでもない。
【産業上の利用可能性】
【００５２】
本発明は、データ処理装置およびデータ処理方法に関するものであり、特に、プロセッサ、および、ローカルメモリを有するアクセラレータを備えたマルチコアＳｏＣにより構成されたデータ処理装置に対して適用することができるが、このようなマルチコアＳｏＣを備えたデータ処理装置に限定されず、様々な規模のプロセッサ，メインメモリ，ローカルメモリを有するアクセラレータを備えたデータ処理装置に対して幅広く適用することができる。
【図面の簡単な説明】
【００５３】
【図１】データ処理装置の一構成例を概略的に示すブロック図である。
【図２】本発明に係るデータ処理装置における処理の一例を説明するためのフローチャートである。
【図３】本発明に係るデータ処理装置におけるアクセラレータの起動コードの一例を概略的に示す図である。
【図４】本発明が適用されるデータ処理プログラムを記録した媒体の例を説明するための図である。
【符号の説明】
【００５４】
１    プロセッサ
２    アクセラレータ
３    メインメモリ
４    バス
５    プロファイルユニット
６    プログラム
７    合成ルーチン
２１    ローカルメモリ
１０    処理装置
１１    演算処理装置本体
１２    処理装置側メモリ
２０    プログラム（データ）提供者
２１    プログラムを格納する手段（回線先メモリ）
３０    可搬型記録媒体
【図１】
0005056345.tif 000002
【図２】
0005056345.tif 000003
【図３】
0005056345.tif 000004
【図４】
0005056345.tif 000005