JP5056345B2 - データ処理装置およびデータ処理方法 - Google Patents

データ処理装置およびデータ処理方法 Download PDF

Info

Publication number
JP5056345B2
JP5056345B2 JP2007280514A JP2007280514A JP5056345B2 JP 5056345 B2 JP5056345 B2 JP 5056345B2 JP 2007280514 A JP2007280514 A JP 2007280514A JP 2007280514 A JP2007280514 A JP 2007280514A JP 5056345 B2 JP5056345 B2 JP 5056345B2
Authority
JP
Japan
Prior art keywords
accelerator
program
data processing
memory
local memory
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.)
Expired - Fee Related
Application number
JP2007280514A
Other languages
English (en)
Other versions
JP2009110176A (ja
Inventor
貴久 鈴木
敦浩 須賀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2007280514A priority Critical patent/JP5056345B2/ja
Publication of JP2009110176A publication Critical patent/JP2009110176A/ja
Application granted granted Critical
Publication of JP5056345B2 publication Critical patent/JP5056345B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

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

Claims (5)

  1. プロセッサと、メインメモリと、ローカルメモリを有するアクセラレータと、を具備するデータ処理装置であって、
    前記プロセッサで実行されているプログラムの分岐履歴およびメモリアクセス履歴を取るプロファイルユニットを備え、
    前記プログラムの前記分岐履歴および前記メモリアクセス履歴に基づいて、前記アクセラレータが前記ローカルメモリを利用するように、該アクセラレータの合成および前記プログラムの変更を行うことを特徴とするデータ処理装置。
  2. プロセッサと、メインメモリと、ローカルメモリを有するアクセラレータと、を具備する処理装置におけるデータ処理方法であって、
    前記プロセッサで実行されているプログラムの分岐履歴およびメモリアクセス履歴を取り、
    前記プログラムの前記分岐履歴および前記メモリアクセス履歴に基づいて、前記アクセラレータが前記ローカルメモリを利用するように、該アクセラレータの合成および前記プログラムの変更を行うことを特徴とするデータ処理方法。
  3. 請求項2に記載のデータ処理方法において、前記ローカルメモリには、優先度の高いデータから順番に置くことを特徴とするデータ処理方法。
  4. 請求項3に記載のデータ処理方法において、前記優先度は、データ容量が小さくてアクセス回数が多いものを高くし、該データ容量が小さくてアクセス回数が多い領域を前記ローカルメモリに置くことを特徴とするデータ処理方法。
  5. プロセッサと、メインメモリと、ローカルメモリを有するアクセラレータと、を具備するコンピュータに、
    前記プロセッサで実行されているプログラムの分岐履歴およびメモリアクセス履歴を取らせる手順と、
    前記プログラムの前記分岐履歴および前記メモリアクセス履歴に基づいて、前記アクセラレータが前記ローカルメモリを利用するように、該アクセラレータの合成および前記プログラムの変更を行わせる手順と、を実行させることを特徴とするデータ処理プログラム。
JP2007280514A 2007-10-29 2007-10-29 データ処理装置およびデータ処理方法 Expired - Fee Related JP5056345B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007280514A JP5056345B2 (ja) 2007-10-29 2007-10-29 データ処理装置およびデータ処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007280514A JP5056345B2 (ja) 2007-10-29 2007-10-29 データ処理装置およびデータ処理方法

Publications (2)

Publication Number Publication Date
JP2009110176A JP2009110176A (ja) 2009-05-21
JP5056345B2 true JP5056345B2 (ja) 2012-10-24

Family

ID=40778624

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007280514A Expired - Fee Related JP5056345B2 (ja) 2007-10-29 2007-10-29 データ処理装置およびデータ処理方法

Country Status (1)

Country Link
JP (1) JP5056345B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2834837B2 (ja) * 1990-03-30 1998-12-14 松下電工株式会社 プログラマブルコントローラ
JP3425069B2 (ja) * 1996-10-28 2003-07-07 富士通株式会社 バイナリ・プログラム変換装置および方法
WO2000068782A1 (fr) * 1999-05-06 2000-11-16 Hitachi, Ltd. Procede de mise au point d'un circuit integre a semiconducteur

Also Published As

Publication number Publication date
JP2009110176A (ja) 2009-05-21

Similar Documents

Publication Publication Date Title
US9575864B2 (en) Function-level dynamic instrumentation
US10558569B2 (en) Cache controller for non-volatile memory
US8612944B2 (en) Code evaluation for in-order processing
KR102161192B1 (ko) 코어 트레이스로부터 데이터 마이닝을 하기 위한 방법 및 장치
JP6137582B2 (ja) 電子デバイス、メモリコントローラ、装置
CN112650478B (zh) 一种嵌入式软件开发平台动态构建方法、系统及设备
US20170046158A1 (en) Determining prefetch instructions based on instruction encoding
CN102521093B (zh) 内存管理方法和装置
CN114118384B (zh) 神经网络模型的量化方法、可读介质和电子设备
US20150234687A1 (en) Thread migration across cores of a multi-core processor
JP2000039997A (ja) サブクラス及びサブタイプの高速チェックを実現する方法及び装置
WO2004072848A8 (en) Method and apparatus for hazard detection and management in a pipelined digital processor
CN100472469C (zh) 运行日志获取方法
US20120151194A1 (en) Bytecode branch processor and method
JP5056345B2 (ja) データ処理装置およびデータ処理方法
JP5226093B2 (ja) プロセス内コンポーネントのオブジェクト作成方法およびシステム
JP2007094986A (ja) シミュレーション装置およびシミュレーション方法
US8806448B2 (en) Dynamic instrumentation method and apparatus for tracing and analyzing a program
JP2005339204A (ja) 情報処理装置およびプログラムのテスト方法
CN114546488A (zh) 一种向量跨步指令的实现方法、装置、设备及存储介质
US20130085725A1 (en) Method and circuit for calculating sensor modelling coefficients
US20160224258A1 (en) Generating computer programs for use with computers having processors with dedicated memory
CN111314493A (zh) 异构云存储系统的数据处理方法及其可读介质和系统
JP2004038311A (ja) ログ取得方法およびプログラム、記憶媒体
JP4984303B2 (ja) 後処理カーネルのダイナミックリンキングおよびダイナミックローディング

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100616

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120410

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120417

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120613

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120703

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120716

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees