(57)【特許請求の範囲】
【請求項１】
処理対象のデータを生成するプロセッサと、
前記プロセッサにより生成されたデータを記憶する第１の記憶部と、
前記プロセッサにより生成されたデータを処理する処理部と、
前記第１の記憶部から前記処理部へデータをバースト転送する転送部と、
前記処理部がデータ処理を行うのに要する時間に関する情報を記憶している第２の記憶部と、
前記プロセッサが前記第１の記憶部にアクセスする際の前記プロセッサの転送性能および前記転送部のデータ転送性能に基づいて設定されたバースト幅の所定値を記憶している第３の記憶部と、
前記第２の記憶部に記憶されている前記時間に関する情報に基づいて前記転送部がデータを転送するのに許容される時間を算出する算出部と、
前記転送部がデータを転送する際のバースト幅を、前記転送部が前記データを転送するのに要すると見積られる時間に基づいて、前記第３の記憶部に記憶されている前記バースト幅の所定値以上で前記データの転送が前記算出部により算出された前記データの転送に許容される時間以下でかつ前記バースト幅の所定値に最も近い値に決定し、決定したバースト幅に基づき、前記転送部が該データを転送する際のバースト転送間隔を、該データの転送が該データの転送に許容される時間内で終了する範囲で最も大きくなるように決定する決定部と、
を備えることを特徴とするデータ転送装置。
【請求項２】
前記バースト幅の所定値は、前記プロセッサと前記転送部とが前記第１の記憶部にアクセスする環境において予め求められた、前記プロセッサが前記第１の記憶部にアクセスしたときの性能と前記転送部が前記第１の記憶部に対してデータのバースト転送を行ったときの性能とを足し合わせた値が最大となるバースト幅であることを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記算出部は、前記転送部がデータの転送を開始する時刻から前記処理部で該データの処理が完了するタイミングのデッドラインまでの期間から、前記第２の記憶部に記憶されている前記時間に関する情報に基づいて前記処理部が該データを処理するのに要すると推測される期間を引いた時間を、前記転送部がデータを転送するのに許容される時間として算出することを特徴とする請求項１に記載のデータ転送装置。
【請求項４】
前記転送部が競合する複数のデータ転送を行う場合、前記算出部は、
該競合するデータ転送のそれぞれについてデータ転送が完了するタイミングのデッドラインの早い順に優先順位を高く設定し、
前記転送部がデータの転送を開始する時刻から前記処理部で該データの処理が完了するタイミングのデッドラインまでの期間から、前記第２の記憶部に記憶されている前記時間に関する情報に基づいて前記処理部が該データを処理するのに要すると推測される期間と、より優先順位の高いデータ転送が完了するまでの残り時間と、を引いた時間を、前記転送部がデータを転送するのに許容される時間として算出することを特徴とする請求項１に記載のデータ転送装置。
【請求項５】
前記決定部は、前記転送部がデータを転送するのに要する時間を、前記第１の記憶部の設計情報および転送対象のデータ量に基づいて見積ることを特徴とする請求項１に記載のデータ転送装置。
【請求項６】
前記決定部は、前記転送部がデータを転送するのに要する時間を、過去に実際に前記転送部がデータを転送するのに要した時間の平均値に基づいて見積ることを特徴とする請求項１に記載のデータ転送装置。
【請求項７】
プロセッサにより生成されたデータを、該データを記憶した記憶部から該データを処理する処理部へ転送部によりバースト転送するデータ転送方法において、
前記プロセッサが前記記憶部にアクセスする際の前記プロセッサの転送性能および前記転送部のデータ転送性能に基づいて前記転送部がバースト転送する際のバースト幅の所定値を設定するバースト幅設定ステップと、
前記処理部がデータ処理を行うのに要する時間に関する情報を設定する処理時間設定ステップと、
前記処理時間設定ステップで設定された処理時間の情報に基づいて前記転送部のデータ転送に許容される時間を算出する算出ステップと、
該データを転送する際のバースト幅を、前記データを転送するのに要すると見積られる時間に基づいて、前記バースト幅設定ステップで設定されたバースト幅の所定値以上で前記データの転送が前記算出ステップで算出された前記データの転送に許容される時間以下でかつ前記バースト幅の所定値に最も近い値に決定し、決定したバースト幅に基づき、該データを転送する際のバースト転送間隔を、該データの転送が該データの転送に許容される時間内で終了する範囲で最も大きくなるように決定する決定ステップと、
を含むことを特徴とするデータ転送方法。
【請求項８】
前記バースト幅設定ステップでは、前記バースト幅の所定値を、前記プロセッサと前記転送部とが前記記憶部にアクセスする環境において前記プロセッサが前記記憶部にアクセスしたときの性能と前記転送部が前記記憶部に対してデータのバースト転送を行ったときの性能とを足し合わせた値が最大になるように求めることを特徴とする請求項７に記載のデータ転送方法。
【請求項９】
前記算出ステップでは、データの転送を開始する時刻から前記処理部で該データの処理が完了するタイミングのデッドラインまでの期間から、前記処理部がデータ処理を行うのに要する時間に関する情報に基づいて前記処理部が該データを処理するのに要すると推測される期間を引いた時間を、前記データの転送に許容される時間として算出することを特徴とする請求項７に記載のデータ転送方法。
【請求項１０】
競合する複数のデータ転送を行う場合、前記算出ステップでは、該競合するデータ転送のそれぞれについてデータ転送が完了するタイミングのデッドラインの早い順に優先順位を高く設定し、データの転送を開始する時刻から前記処理部で該データの処理が完了するタイミングのデッドラインまでの期間から、前記処理部がデータ処理を行うのに要する時間に関する情報に基づいて前記処理部が該データを処理するのに要すると推測される期間と、より優先順位の高いデータ転送が完了するまでの残り時間と、を引いた時間を、前記データの転送に許容される時間として算出することを特徴とする請求項７に記載のデータ転送方法。
【請求項１１】
前記決定ステップでは、前記データの転送に要する時間を、前記記憶部の設計情報および転送対象のデータ量に基づいて見積ることを特徴とする請求項７に記載のデータ転送方法。
【請求項１２】
前記決定ステップでは、前記データの転送に要する時間を、過去に実際にデータを転送するのに要した時間の平均値に基づいて見積ることを特徴とする請求項７に記載のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ転送装置およびデータ転送方法に関する。
【背景技術】
【０００２】
従来、データ処理装置においてデータを高速に転送する技術の一つに、バースト転送がある。このバースト転送技術において、データ転送中に優先度の高い別のデータの転送要求が出力された場合、転送中のデータのバースト幅を、この優先度の高い別のデータの転送が開始されるまでの間に転送できる幅に設定する技術が知られている。また、複数のデータ転送を時分割により並行して行う際に、データ転送を完了すべきと予想される時間と、そのデータの転送に要すると予想される時間とを算出し、この算出結果に基づいてデータ転送の時分割の割合をダイナミックに調整する技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−３０４９０８号公報
【特許文献２】特開２００６−２０９５００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のバースト転送技術では、バースト転送中のメモリは、他のアクセスを受け付けることができない状態となる。そのため、バースト転送中のメモリに対してプロセッサがアクセスしても、バースト転送が終了するまでプロセッサは待機しなければならない。転送対象のデータ量が大きい場合、メモリに対するバースト転送が繰り返し行われる。そのため、プロセッサのアクセスのタイミングによってはプロセッサの待機時間がさらに長くなることがあり、プロセッサの実効性能が低下するという問題点がある。【０００５】
一回のバースト転送で転送されるデータのサイズであるバースト幅を小さくすると、一回のバースト転送に要する時間が短くなる。従って、バースト転送が繰り返し行われている間、メモリが他のアクセスを受け付けることができる状態に復帰する回数が増えるので、メモリに対するプロセッサのアクセスが受け付けられやすくなる。しかし、バースト幅が小さくなるほど、転送対象のデータの転送が完了するまでのバースト転送回数が増える。その分、メモリからデータが出力されるまでの遅延時間やプレチャージに要する時間が増えるため、プロセッサがメモリにアクセスする性能が低下してしまう。【０００６】
一方、バースト転送の間隔を広げると、バースト転送とその次のバースト転送との間でメモリが他のアクセスを受け付けることができる状態に復帰している時間が長くなる。従って、メモリに対するプロセッサのアクセスが受け付けられやすくなる。しかし、プロセッサがバースト転送中のメモリにアクセスした場合には、プロセッサはバースト転送の終了まで待たされるため、プロセッサの実効性能の低下を防ぐことはできない。【０００７】
バースト転送によるプロセッサの実効性能の低下を防ぐことができるデータ転送装置およびデータ転送方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、プロセッサ、第１、第２および第３の各記憶部、算出部、決定部、転送部並びに処理部を備えている。プロセッサは、処理対象のデータを生成する。第１の記憶部は、プロセッサにより生成されたデータを記憶する。第２の記憶部は、処理部がデータ処理を行うのに要する時間に関する情報を記憶している。算出部は、第２の記憶部に記憶されている時間に関する情報に基づいて転送部がデータを転送するのに許容される時間を算出する。第３の記憶部は、プロセッサが第１の記憶部にアクセスする際のアクセス性能に基づいて設定されたバースト幅の所定値を記憶している。決定部は、転送部がデータを転送する際のバースト幅を、転送部がそのデータを転送するのに要すると見積られる時間に基づいて決定する。決定部は、バースト幅を、第３の記憶部に記憶されているバースト幅の所定値以上で、かつデータの転送が算出部により算出されたデータの転送に許容される時間内に終了する範囲でできるだけバースト幅の所定値に近い値に決定する。転送部は、決定部により決定されたバースト幅でもって第１の記憶部から処理部へデータをバースト転送する。処理部は、プロセッサにより生成されたデータを処理する。
【発明の効果】
【０００９】
開示のデータ転送装置およびデータ転送方法によれば、バースト転送によるプロセッサの実効性能の低下を防ぐことができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】実施例１にかかるデータ転送装置を示すブロック図である。
【図２】実施例１にかかるデータ転送方法を示すフローチャートである。
【図３】実施例２においてバースト幅の下限値を決定する装置の構成を示すブロック図である。
【図４】実施例２においてデータ転送性能を測定するプログラムの一例を示す図である。
【図５】実施例２においてデータ転送性能の測定結果の一例を示す図表である。
【図６】実施例２においてデータ転送性能の測定結果の一例を示す特性図である。
【図７】実施例２においてバースト幅の下限値を決定する方法を示すフローチャートである。
【図８】実施例２において画像処理部によるデータ処理時間に関する情報を収集する装置の構成を示すブロック図である。
【図９】実施例２において画像処理部によるデータ処理時間に関する情報を収集するプログラムの一例を示す図である。
【図１０】実施例２において画像処理部によるデータ処理時間に関する情報の収集結果の一例を示す図表である。
【図１１】実施例２において画像処理部によるデータ処理時間に関する情報を収集する方法を示すフローチャートである。
【図１２】実施例２にかかるデータ転送装置を示すブロック図である。
【図１３】実施例２にかかるデータ転送装置の動作を示すシーケンス図である。
【図１４】実施例２にかかるデータ転送方法における転送許容時間の算出方法を示すフローチャートである。
【図１５】実施例２にかかるデータ転送方法におけるデータ転送モードの決定方法を示すフローチャートである。
【図１６】図１５の続きを示すフローチャートである。
【図１７】実施例２にかかるデータ転送方法におけるデータ転送時間の算出方法を説明する図である。
【図１８】実施例２にかかるデータ転送方法において複数の転送を行う場合のデータ転送モードの決定方法を示すフローチャートである。
【図１９】実施例３にかかるデータ転送装置を示すブロック図である。
【図２０】実施例３にかかるデータ転送方法におけるデバイスドライバによる統計情報収集動作を示すフローチャートである。
【図２１】実施例３にかかるデータ転送方法における統計情報収集部の動作を示すフローチャートである。
【図２２】実施例３においてデータ転送部統計情報の一例を示す図表である。
【図２３】実施例３にかかるデータ転送方法におけるデータ転送時間の算出方法を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、この発明にかかるデータ転送装置およびデータ転送方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【００１２】
（実施例１）
実施例１は、データをバースト転送する際のバースト幅を、プロセッサのアクセス性能に基づいて予め設定されているバースト幅の所定値以上で、かつ許容時間内にデータ転送が終了する範囲でできるだけバースト幅の所定値に近い値に決定するものである。
【００１３】
・データ転送装置の説明
図１は、実施例１にかかるデータ転送装置を示すブロック図である。図１に示すように、データ転送装置は、プロセッサ１、第１の記憶部２、第２の記憶部３、算出部４、第３の記憶部５、決定部６、転送部７および処理部８を備えている。
【００１４】
プロセッサ１は、処理対象のデータを生成する。第１の記憶部２は、プロセッサ１により生成されたデータを記憶する。第２の記憶部３は、処理部８がデータ処理を行うのに要する時間に関する情報を記憶している。処理部８がデータ処理を行うのに要する時間に関する情報は、予め設定されている。算出部４は、第２の記憶部３に記憶されている時間に関する情報に基づいて転送部７がデータを転送するのに許容される時間を算出する。第３の記憶部５は、バースト幅の所定値を記憶している。バースト幅の所定値は、プロセッサ１が第１の記憶部２にアクセスする際のアクセス性能に基づいて予め設定されている。
【００１５】
決定部６は、転送部７がデータを転送する際のバースト幅を、転送部７がそのデータを転送するのに要すると見積られる時間に基づいて決定する。決定部６は、バースト幅を、第３の記憶部５に記憶されているバースト幅の所定値以上で、かつデータの転送が算出部４により算出されたデータの転送に許容される時間内に終了する範囲でできるだけバースト幅の所定値に近い値に決定する。転送部７は、決定部６により決定されたバースト幅でもって第１の記憶部２から処理部８へデータをバースト転送する。処理部８は、プロセッサ１により生成されたデータを処理する。
【００１６】
・データ転送方法の説明
図２は、実施例１にかかるデータ転送方法を示すフローチャートである。図２に示すように、予めプロセッサ１が第１の記憶部２にアクセスする際のアクセス性能に基づいて、転送部７が第１の記憶部２から処理部８へデータをバースト転送する際のバースト幅の所定値が求められる。バースト幅の所定値は、第３の記憶部５に格納される（ステップＳ１）。また、処理部８がデータ処理を行うのに要する時間に関する情報が第２の記憶部３に格納される（ステップＳ２）。ステップＳ１およびステップＳ２は、いずれが先に処理されてもよい。
【００１７】
プロセッサ１により生成されたデータは、第１の記憶部２に格納される。第１の記憶部２に記憶されているデータを処理部８へバースト転送する処理が開始されると、まず、算出部４により、第２の記憶部３に格納されているデータ処理に要する時間の情報に基づいてデータの転送に許容される時間が算出される（ステップＳ３）。
【００１８】
次いで、決定部６により、転送部７が第１の記憶部２から処理部８へデータを転送する際のバースト幅が決定される。バースト幅は、転送部７が当該データを転送するのに要すると見積られる時間に基づいて決定される。バースト幅は、第３の記憶部５に格納されているバースト幅の所定値以上で、かつ当該データの転送がステップＳ３で算出されたデータの転送に許容される時間内で終了可能な範囲でできるだけバースト幅の所定値に近い値に決定される（ステップＳ４）。ステップＳ４で決定されたバースト幅でもって、転送部７により第１の記憶部２から処理部８へデータが転送される。そして、処理部８でデータ処理が行われると、一連の処理が終了する。
【００１９】
実施例１によれば、バースト幅が、第１の記憶部２に対するプロセッサ１のアクセス性能に基づいて設定された所定値以上で、かつできるだけバースト幅の所定値に近い値に決定される。バースト幅が大きいほどバースト転送によるデータ転送性能が高くなるが、第１の記憶部２に対するプロセッサ１のアクセス性能は低くなる。バースト幅が小さい場合は、その逆となる。従って、実施例１のようにバースト幅が決定されることによって、第１の記憶部２に対するプロセッサ１のアクセス性能と転送部７のデータ転送性能とのバランスが取れるので、プロセッサの実効性能が低下するのを防ぐことができる。
【００２０】
（実施例２）
実施例２は、実施例１にかかるデータ転送装置およびデータ転送方法を例えば画像処理を行う装置および方法に適用したものである。まず、バースト幅の所定値としてのバースト幅の下限値の決定方法について説明する。その次に、処理部としての画像処理部がデータ処理を行うのに要する時間に関する情報を収集する方法について説明する。その後、実施例２にかかるデータ転送装置の構成およびデータ転送方法について説明する。実施例２では、バースト幅として複数のサイズが用意されている。
【００２１】
・バースト幅の下限値の決定方法の説明
図３は、バースト幅の下限値を決定する装置の構成を示すブロック図である。図４は、データ転送性能を測定するプログラムの一例を示す図である。図５は、データ転送性能の測定結果の一例を示す図表である。図６は、データ転送性能の測定結果の一例を示す特性図である。
【００２２】
図３に示すように、設計装置１１および実機（またはシミュレータ）１２が用意される。実機（またはシミュレータ）１２が実機である場合には、実機（またはシミュレータ）１２は、プロセッサ、第１の記憶部としてのメモリ、転送部としてのデータ転送部および処理部としての画像処理部を備えている（図１２参照）。実機（またはシミュレータ）１２がシミュレータである場合には、実機（またはシミュレータ）１２は、プロセッサ、第１の記憶部としてのメモリ、転送部としてのデータ転送部および処理部としての画像処理部のそれぞれを模した構成を備えている。
【００２３】
測定用プログラム１３は、設計装置１１を用いて設計者により作成される。測定用プログラム１３は、例えば図４に示すように、実機（またはシミュレータ）１２においてデータ転送部がメモリから画像処理部へデータを種々のバースト幅でバースト転送している間にプロセッサがメモリに対して大量のアクセスを行うように作成されている。実機（またはシミュレータ）１２は、測定用プログラム１３を実行し、その結果取得した測定データ１４を設計装置１１へ返す。
【００２４】
測定データ１４は、プロセッサの転送性能を表すデータおよびデータ転送部の転送性能を表すデータを含んでいる。例えばデータ転送部の転送性能は、データ転送部が任意の量のデータをメモリから読み出すのに要した時間で評価されてもよい。例えば図５に示すように、データ転送部の転送性能を表すデータとして、データ転送部が任意の量のデータをメモリから読み出すのに要した時間のデータが、バースト幅ごとに得られる。例えばプロセッサの転送性能は、プロセッサが任意の量のデータをメモリに対して読み書きするのに要した時間で評価されてもよい。例えばプロセッサの転送性能を表すデータとして、プロセッサが任意の量のデータをメモリに対して読み書きするのに要した時間のデータが、バースト幅ごとに得られる。いずれも、データの読み書きや読み出しに要した時間が短いほど、性能が優れていることになる。
【００２５】
設計装置１１は、バースト幅の下限値決定部１５を備えている。バースト幅の下限値決定部１５は、測定データ１４に基づいて、例えば図７に示すフローチャートに従ってバースト幅の下限値を決定する。例えばバースト幅の下限値決定部１５は、バースト幅ごとに、プロセッサの転送性能およびデータ転送部の転送性能を算出し、それらの和を算出してもよい。例えば図６に示すように、通常、データ転送部がメモリから画像処理部へデータをバースト転送している間にプロセッサがメモリに対して大量のアクセスを行う環境では、バースト幅が大きくなるに従って、データ転送部の転送性能が良くなる。これは、バースト幅が大きいと一度のバースト転送でメモリから出力されるデータ量が大きくなるので、その分バースト転送の回数が減る。バースト転送の回数が減ると、バースト転送の最初にメモリからデータが出力されるまでの遅延時間や、データ出力後のプリチャージの時間が全体として減るからである。その一方で、データ転送部によるバスおよびメモリの占有時間が長くなるため、プロセッサの転送性能は悪くなる。
【００２６】
従って、プロセッサの転送性能とデータ転送部の転送性能との和を算出すると、図６に示すように、その和には最大値が存在する。この和が最大となる状態のときに、プロセッサの転送性能とデータ転送部の転送性能とのバランスが取れていることになる。そこで、バースト幅の下限値決定部１５は、プロセッサの転送性能とデータ転送部の転送性能との和が最大となるバースト幅をバースト幅の下限値に決定してもよい。バースト幅の下限値決定部１５により決定されたバースト幅の下限値は、製品となる実機１６に記録される。
【００２７】
図７は、バースト幅の下限値を決定する方法を示すフローチャートである。図７に示すように、設計者は、まず設計装置１１を用いて測定用プログラム１３を作成する（ステップＳ１１）。次いで、設計者は、実機（またはシミュレータ）１２で測定用プログラム１３を実行する（ステップＳ１２）。それによって、設計装置１１は、実機（またはシミュレータ）１２から測定結果として測定データ１４を取得する（ステップＳ１３）。次いで、バースト幅の下限値決定部１５により、バースト幅ごとに、プロセッサの転送性能およびデータ転送部の転送性能が算出される（ステップＳ１４）。
【００２８】
次いで、バースト幅の下限値決定部１５により、例えばバースト幅ごとにプロセッサの転送性能とデータ転送部の転送性能との和が算出される。バースト幅の下限値決定部１５は、例えば転送性能の和が最大となるバースト幅をバースト幅の下限値に決定する（ステップＳ１５）。これによって、バースト幅の下限値を決定する一連の処理が終了する。
【００２９】
・画像処理部によるデータ処理時間に関する情報を収集する方法の説明
図８は、画像処理部によるデータ処理時間に関する情報を収集する装置の構成を示すブロック図である。図９は、画像処理部によるデータ処理時間に関する情報を収集するプログラムの一例を示す図である。図１０は、画像処理部によるデータ処理時間に関する情報の収集結果の一例を示す図表である。
【００３０】
図８に示すように、設計装置２１および実機（またはシミュレータ）２２が用意される。実機（またはシミュレータ）２２については、上述した「・バースト幅の下限値の決定方法の説明」において説明したとおりである。測定用プログラム２３は、設計装置２１を用いて設計者により作成される。測定用プログラム２３は、例えば図９に示すように、実機（またはシミュレータ）２２において種々の画面サイズ（描画サイズ）および描画モードの組み合わせで描画の処理を行うように作成されている。描画モードには、例えば２次元表示（２Ｄ）や３次元表示（３Ｄ）などのモードがある。実機（またはシミュレータ）２２は、測定用プログラム２３を実行し、画像処理部が種々の画面サイズ（描画サイズ）および描画モードの組み合わせで描画処理を開始してから終了するまでの時間を計測する。実機（またはシミュレータ）２２は、その結果収集した処理時間の情報を統計情報２４として設計装置２１へ返す。
【００３１】
統計情報２４は、例えば図１０に示すように、種々の画面サイズ（描画サイズ）および描画モードの組み合わせごとに、画像処理部が描画処理を行うのに要する時間を統計的に処理したデータを含んでいる。例えば統計的に処理したデータとして、種々の画面サイズ（描画サイズ）および描画モードの組み合わせごとに、画像処理部が複数回の描画処理を行い、複数回の描画処理に要した時間を平均したデータであってもよい。統計情報２４は、製品となる実機２５に記録される。画像処理部がデータ処理を行うのに要する時間に関する情報を画像処理部の設計情報から得ることができる場合には、統計情報２４を画像処理部の設計情報から取得してもよい。
【００３２】
図１１は、画像処理部によるデータ処理時間に関する情報を収集する方法を示すフローチャートである。図１１に示すように、設計者は、まず設計装置２１を用いて測定用プログラム２３を作成する（ステップＳ２１）。次いで、設計者は、実機（またはシミュレータ）２２で測定用プログラム２３を実行する（ステップＳ２２）。それによって、設計装置２１は、実機（またはシミュレータ）２２から測定結果として統計情報２４を取得する（ステップＳ２３）。これによって、画像処理部によるデータ処理時間に関する情報を収集する一連の処理が終了する。
【００３３】
・データ転送装置の説明
図１２は、実施例２にかかるデータ転送装置を示すブロック図である。図１２に示すように、データ転送装置は、プロセッサ３１、第１、第２および第３の記憶部としてのメモリ３２、算出部としての転送許容時間算出部３３、決定部としてのデータ転送モード決定部３４、転送部としてのデータ転送部３５並びに処理部としての画像処理部３６を備えている。プロセッサ３１、メモリ３２、データ転送部３５および画像処理部３６は、バス３７に接続されている。
【００３４】
プロセッサ３１は、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置）であり、オペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ、ＯＳ）３８を実行する。プロセッサ３１がオペレーティングシステム３８を実行することによって、転送許容時間算出部３３、データ転送モード決定部３４およびデバイスドライバ３９が実現される。デバイスドライバ３９は、データ転送部３５および画像処理部３６を制御する。プロセッサ３１は、図示しない画像処理や画像の表示などを行うアプリケーションソフトウェアを実行し、描画データを生成する。
【００３５】
メモリ３２は、プロセッサ３１により生成された描画データ４０を記憶する。メモリ３２は、上述した「・バースト幅の下限値の決定方法の説明」において説明したバースト幅の下限値４１を記憶している。メモリ３２は、上述した「・画像処理部によるデータ処理時間に関する情報を収集する方法の説明」において説明した統計情報２４を記憶している。メモリ３２において、描画データ４０、統計情報２４およびバースト幅の下限値４１が格納される領域がそれぞれ第１の記憶部、第２の記憶部および第３の記憶部に相当する。メモリ３２は、描画データ４０を記憶する例えば読み書き可能なＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、およびバースト幅の下限値４１や統計情報２４を格納する例えば読み出し専用のＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）を備えていてもよい。
【００３６】
転送許容時間算出部３３は、統計情報２４に基づいてデータ転送部３５がデータを転送するのに許容される時間を算出する。算出の仕方については後述する。データ転送モード決定部３４は、転送許容時間算出部３３により算出された許容時間に基づいて、データ転送部３５がデータを転送する際のモード（データ転送モード）を決定する。バースト幅およびバースト転送間隔の組み合わせに応じて複数のデータ転送モードが用意されている。決定の仕方については後述する。データ転送部３５は、例えばＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラである。データ転送部３５は、データ転送モード決定部３４により決定されたデータ転送モードでもってメモリ３２から画像処理部３６へ描画データ４０をバースト転送する。
【００３７】
画像処理部３６は、メモリ３２から転送されてきた描画データに対して描画処理を行う。画像処理部３６は、図示しないフレームメモリを備えており、このフレームメモリに描画済みの画像データを格納する。フレームメモリに格納された画像データは、図示しない液晶パネルなどの表示装置へ送られる。特に限定しないが、例えば携帯電話機が実施例２にかかるデータ転送装置を備えていてもよい。
【００３８】
・データ転送装置の動作の説明
図１３は、実施例２にかかるデータ転送装置の動作を示すシーケンス図である。図１３に示すように、アプリケーションソフトウェア４６は、画像処理または画像の表示を行う際にオペレーティングシステム３８に対して画像処理部３６などのデバイスの起動を指示する（ステップＳ３１）。その際、アプリケーションソフトウェア４６からオペレーティングシステム３８に、転送対象のデータ、画像処理部３６の起動パラメータ、画像処理部３６での処理が完了するタイミングのデッドラインがオペレーティングシステム３８に渡される。画像処理部３６の起動パラメータには、画面サイズ（描画サイズ）や描画モードなどのパラメータが含まれている。
【００３９】
次いで、オペレーティングシステム３８は、転送許容時間算出部３３により統計情報２４に基づいてデータ転送部３５によるデータ転送に許容される時間（転送許容時間）を算出する（ステップＳ３２）。次いで、オペレーティングシステム３８は、データ転送モード決定部３４により転送許容時間に基づいてデータ転送モードを決定する（ステップＳ３３）。次いで、オペレーティングシステム３８は、デバイスドライバ３９によりデータ転送部３５を起動する（ステップＳ３４）。
【００４０】
次いで、データ転送部３５は、ステップＳ３３で決定されたデータ転送モードでもってメモリ３２から画像処理部３６へ描画データをバースト転送する（ステップＳ３５）。画像処理部３６は、転送されてきた描画データに対して描画処理を行う（ステップＳ３６）。その間、アプリケーションソフトウェア４６は処理を継続する（ステップＳ３９）。画像処理部３６で描画処理が終了すると、オペレーティングシステム３８は終了処理を行い（ステップＳ３８）、一連の動作を終了する。
【００４１】
・転送許容時間の算出方法
図１４は、実施例２にかかるデータ転送方法における転送許容時間の算出方法を示すフローチャートである。図１４に示すように、転送許容時間算出部３３は、まず統計情報２４を検索し、画像処理部３６の起動パラメータに近い情報が統計情報２４に含まれているか否かを調べる（ステップＳ４１）。統計情報２４に画像処理部３６の起動パラメータに一致する情報がある場合（ステップＳ４２：Ｙｅｓ）、転送許容時間算出部３３は、統計情報２４から起動パラメータに一致する情報に対応する処理時間を、画像処理部３６の処理時間として取得する（ステップＳ４５）。
【００４２】
統計情報２４に起動パラメータに一致する情報はないが（ステップＳ４２：Ｎｏ）、近似可能な近い情報があることがある。近似可能な近い情報がある場合（ステップＳ４３：Ｙｅｓ）、転送許容時間算出部３３は、統計情報２４から近似可能な近い情報に対応する処理時間を取得する。そして、転送許容時間算出部３３は、近似可能な近い情報に対応する処理時間を用いて、例えば定式化できる部分（特定のパラメータに対して比例や反比例で変化する部分）については、定式化して画像処理部３６の処理時間を推定する。転送許容時間算出部３３は、例えば定式化できない部分については、パラメータの組み合わせが近い情報の中から最大の時間のものを画像処理部３６の処理時間の推定値として選択する（ステップＳ４６）。
【００４３】
ステップＳ４５またはステップＳ４６で画像処理部３６の処理時間を推定できたら、転送許容時間算出部３３は転送許容時間を算出する。転送許容時間は、現在の時刻から画像処理部３６での処理が完了するタイミングのデッドラインの時刻までの時間から、画像処理部３６の処理時間を引いた時間である（ステップＳ４７）。現在の時刻は、例えばプロセッサ３１が画像処理部３６への転送対象のデータを生成した時点の時刻である。画像処理部３６での処理が完了するタイミングのデッドラインの時刻は、画像の表示間隔によって決まる。例えば画像の表示を毎秒３０回行う装置の場合には、画像の表示間隔は１／３０秒となる。この場合、画像処理部３６での処理が完了するタイミングのデッドラインは、１／３０秒ごとに訪れる。
【００４４】
一方、統計情報２４に起動パラメータに一致する情報も近似可能な近い情報もない場合には（ステップＳ４３：Ｎｏ）、転送許容時間算出部３３は転送許容時間をゼロとする（ステップＳ４４）。転送許容時間がゼロであるということは、直ちにデータの転送を開始するということであり、すなわち最速でデータを転送するということである。
【００４５】
・データ転送モードの決定方法
図１５は、実施例２にかかるデータ転送方法におけるデータ転送モードの決定方法を示すフローチャートである。図１６は、図１５の続きである。図１７は、データ転送部によるデータの転送時間の算出方法を説明する図である。図１５に示すように、上述した「・転送許容時間の算出方法」において説明したとおりに転送許容時間算出部３３により転送許容時間が算出されると（ステップＳ５１）、データ転送モード決定部３４は、データ転送モードを決定する処理を開始する。データ転送モード決定部３４は、まずバースト幅を最大に設定し、バースト転送間隔を最小に設定する。この条件でデータ転送モード決定部３４は、データ転送部３５が描画データ４０をメモリ３２から画像処理部３６へ転送するのに要する時間（転送時間）を次の式に従って算出する（ステップＳ５２）。
転送時間＝（［遅延時間］＋［１データの出力時間］×［バースト幅］＋［ｘ］）×［転送回数］
【００４６】
図１７に示すように、遅延時間は、データ転送部３５がメモリ３２に対してアドレスを指定してデータの読み込みを要求してから実際にメモリ３２からデータが出力されるまでの時間である。１データの出力時間は、メモリ３２が１データを出力するのに要する時間である。ｘは、アクセス間隔とプリチャージ時間のうちの大きい方の時間である。プリチャージ時間は、プリチャージに要する時間である。遅延時間、１データの出力時間およびプリチャージ時間は、メモリ３２の設計情報として取得することができる。アクセス間隔は、バースト転送が終了した時点から次にデータ転送部３５がメモリ３２に対してデータの読み込みを要求するまでの時間である。アクセス間隔は、データ転送部３５の設計情報として取得することができる。転送回数は、転送対象のデータ量をバースト幅で除した値である。
【００４７】
データ転送モード決定部３４は、ステップＳ５２で算出した転送時間がステップＳ５１で算出された転送許容時間に収まらない場合（ステップＳ５３：Ｎｏ）、データ転送モードを決定する処理を終了する。この場合は、例えば動画像がいわゆるコマ落ちで再現されるので、画像が滑らかに表示されなくなってしまう。データ転送モード決定部３４は、ステップＳ５２で算出した転送時間がステップＳ５１で算出された転送許容時間に収まる場合（ステップＳ５３：Ｙｅｓ）、一段小さいバースト幅を設定する（ステップＳ５４）。一段小さくしたバースト幅がバースト幅の下限値よりも小さくない場合（ステップＳ５５：Ｎｏ）、データ転送モード決定部３４は、一段小さくしたバースト幅と最小のバースト転送間隔の条件で再び転送時間を算出する（ステップＳ５６）。
【００４８】
データ転送モード決定部３４は、ステップＳ５６で算出した転送時間がステップＳ５１で算出された転送許容時間に収まる場合（ステップＳ５７：Ｙｅｓ）、バースト幅を一段小さくしながらステップＳ５４からステップＳ５７までを繰り返す。繰り返している途中で、やがて一段小さくしたバースト幅がバースト幅の下限値よりも小さくなるか（ステップＳ５５：Ｙｅｓ）、転送時間が転送許容時間に収まらなくなる（ステップＳ５７：Ｎｏ）。その場合、図１６に示すように、データ転送モード決定部３４は、その時点のバースト幅よりも一段大きいバースト幅を設定する（ステップＳ５８）。
【００４９】
次いで、バースト転送間隔を変更することができない場合（ステップＳ５９：Ｎｏ）、データ転送モード決定部３４は、データ転送モードを決定する処理を終了する。バースト転送間隔を変更することができる場合（ステップＳ５９：Ｙｅｓ）、データ転送モード決定部３４は、一段大きいバースト転送間隔を設定する（ステップＳ６０）。データ転送モード決定部３４は、ステップＳ５８で設定したバースト幅と一段大きくしたバースト転送間隔の条件で再び転送時間を算出する（ステップＳ６１）。
【００５０】
データ転送モード決定部３４は、ステップＳ６１で算出した転送時間がステップＳ５１で算出された転送許容時間に収まる場合（ステップＳ６２：Ｙｅｓ）、バースト転送間隔を一段大きくしながらステップＳ６０からステップＳ６２までを繰り返す。繰り返している途中で転送時間が転送許容時間に収まらなくなったら（ステップＳ６２：Ｎｏ）、データ転送モード決定部３４は、その時点のバースト転送間隔よりも一段小さいバースト転送間隔を設定する（ステップＳ６３）。そして、データ転送モード決定部３４は一連の処理を終了する。
【００５１】
・複数の転送を行う場合のデータ転送モードの決定方法
バス３７を共有するデータ転送部が複数あり、またバス３７を共有するデータ処理部が複数ある場合、それらの間でのデータ転送が競合する場合がある。そのような場合には、次のようにしてバースト幅およびバースト転送間隔を決定すればよい。
【００５２】
図１８は、実施例２にかかるデータ転送方法において複数の転送を行う場合のデータ転送モードの決定方法を示すフローチャートである。データ転送モード決定部３４は、これから行うデータ転送に時間の制約（デッドライン）が設定されており（ステップＳ７１：Ｙｅｓ）、他のデータ転送が実行されている場合（ステップＳ７２：Ｙｅｓ）、データ転送モード決定部３４は、現在実行中の他のデータ転送のデッドラインを取得する（ステップＳ７３）。
【００５３】
次いで、データ転送モード決定部３４は、転送が早く完了しなければならないデータ転送から順に高い優先順位を付ける。デッドラインのないデータ転送の優先順位は最も低くなる。データ転送モード決定部３４は、これから行うデータ転送よりも優先順位の高いデータ転送、すなわちデッドラインにより近いデータ転送について、未転送のデータ量とデータ転送部に設定されているバースト幅およびバースト転送間隔を取得する。そして、データ転送モード決定部３４は、デッドラインにより近いデータ転送について、未転送のデータ量、バースト幅およびバースト転送間隔に基づいて残りの転送時間を算出する（ステップＳ７４）。
【００５４】
次いで、データ転送モード決定部３４は、これから行うデータ転送の転送許容時間からステップＳ７４で算出したデッドラインにより近いデータ転送の残りの転送時間を差し引いて、これから行うデータ転送の新たな転送許容時間とする。データ転送モード決定部３４は、これから行うデータ転送について、新たな転送許容時間に基づいてバースト幅およびバースト転送間隔を決定する（ステップＳ７５）。
【００５５】
データ転送モード決定部３４は、これから行うデータ転送にデッドラインが設定されており（ステップＳ７１：Ｙｅｓ）、他のデータ転送が実行されていない場合（ステップＳ７２：Ｎｏ）、上述した「・データ転送モードの決定方法」において説明したとおりに、これから行うデータ転送についてバースト幅およびバースト転送間隔を決定する（ステップＳ７５）。一方、データ転送モード決定部３４は、これから行うデータ転送にデッドラインが設定されていない場合（ステップＳ７１：Ｎｏ）、これから行うデータ転送について、バースト幅をバースト幅の下限値に決定し、バースト転送間隔を最大に決定する（ステップＳ７６）。
【００５６】
実施例２によれば、バースト幅が、バースト幅の下限値以上で、かつできるだけバースト幅の下限値に近い値に決定される。また、バースト転送間隔が、データの転送がその転送に許容される時間内で終了する範囲でできるだけ大きくなるように決定される。つまり、画像処理部３６でのデータ処理がその処理のデッドラインまでに終了する範囲でできるだけメモリ３２およびバス３７が解放されるように、データ転送部３５がバースト転送を行う。従って、プロセッサの実効性能が低下するのを防ぐことができる。なお、画像処理を行う装置および方法に限らず、音声データやその他のデータの処理を行う装置および方法に適用することができる。
【００５７】
（実施例３）
実施例３は、実施例２において、データ転送装置の動作中にデータ転送部および画像処理部の統計情報を収集するようにしたものである。データ転送装置の動作中に収集したデータ転送部の統計情報に基づいてデータ転送部によるデータの転送時間を見積ることができる。この転送時間の見積り方は、例えば上述した転送時間の式に基づいて転送時間を見積ると、例えば外乱などの何らかの要因により実際の転送時間との誤差が大きいような場合に適用することができる。以下、実施例２と異なる構成について説明する。実施例２と同様の構成については、実施例２と同じ符号を付して重複する説明を省略する。
【００５８】
・データ転送装置の説明
図１９は、実施例３にかかるデータ転送装置を示すブロック図である。図１９に示すように、プロセッサ３１がオペレーティングシステム３８を実行することによって、統計情報収集部５１が実現される。統計情報収集部５１は、データ転送装置の動作中にデバイスドライバ３９からデータ転送部３５の動作情報および画像処理部３６の動作情報を収集し、データ転送部３５の統計情報および画像処理部３６の統計情報を作成する。統計情報収集部５１の動作については後述する。デバイスドライバ３９は、データ転送装置の動作中にデータ転送部３５の動作情報および画像処理部３６の動作情報を記録する。デバイスドライバ３９の動作については後述する。
【００５９】
メモリ３２は、データ転送部統計情報５２および画像処理部統計情報５３を記憶する。データ転送部統計情報５２および画像処理部統計情報５３は、データ転送装置の動作中に統計情報収集部５１により随時更新される。なお、メモリ３２には、実施例２における統計情報２４や画像処理部３６の設計情報から得られる処理時間の情報は格納されていない。転送許容時間算出部３３は、データ転送部３５がデータを転送するのに許容される転送許容時間を算出する際に画像処理部統計情報５３を用いる。
【００６０】
データ転送モード決定部３４は、データ転送モードを決定する際にバースト幅の下限値４１およびデータ転送部統計情報５２を用いる。データ転送モード決定部３４は、データ転送モードを決定する際にデータ転送部統計情報５２を用いてデータ転送部３５のデータ転送時間を取得する。その他の構成は実施例２と同様である。なお、データ転送装置の動作中に画像処理部３６の統計情報を作成する代わりに、実施例２と同様に画像処理部３６の設計情報から取得した統計情報や、予め実機やシミュレータにより取得した統計情報を用いてもよい。
【００６１】
・統計情報を収集する際のデバイスドライバの動作
図２０は、デバイスドライバによる統計情報収集動作を示すフローチャートである。図２０に示すように、データ転送装置の動作中にデバイスドライバ３９は、データ転送部３５の起動パラメータおよび起動時刻を記録する（ステップＳ８１）。次いで、デバイスドライバ３９はデータ転送部３５を起動する（ステップＳ８２）。データ転送部３５によるデータ転送が終了すると、デバイスドライバ３９はデータ転送部３５によるデータ転送の終了時刻を記録する（ステップＳ８３）。
【００６２】
次いで、画像処理部３６の統計情報を作成する場合には、デバイスドライバ３９は、画像処理部３６の起動パラメータおよび起動時刻を記録する（ステップＳ８４）。次いで、デバイスドライバ３９は画像処理部３６を起動する（ステップＳ８５）。画像処理部３６によるデータ処理が終了すると、画像処理部３６の統計情報を作成する場合には、デバイスドライバ３９は画像処理部３６によるデータ処理の終了時刻を記録する（ステップＳ８６）。次いで、デバイスドライバ３９は、記録した情報を統計情報収集部５１へ送付する（ステップＳ８７）。
【００６３】
なお、実施例２と同様に画像処理部３６の設計情報から取得した統計情報や、予め実機やシミュレータにより取得した統計情報を用いる場合には、画像処理部３６の統計情報を作成しなくてもよい。画像処理部３６の統計情報を作成しない場合には、ステップＳ８４およびステップＳ８６を省略してもよい。
【００６４】
・統計情報収集部の動作
図２１は、統計情報収集部の動作を示すフローチャートである。図２２は、データ転送部統計情報の一例を示す図表である。図２１に示すように、統計情報収集部５１は、デバイスドライバ３９から送付された情報に基づいて、データ転送部３５の動作時間を算出する（ステップＳ９１）。次いで、統計情報収集部５１は、この時点でのデータ転送部統計情報５２に、一致する起動パラメータがある場合（ステップＳ９２：Ｙｅｓ）、データ転送部統計情報５２のこのパラメータに対応する転送時間を過去数回分の転送時間の平均値に更新する（ステップＳ９３）。統計情報収集部５１は、データ転送部統計情報５２に、一致する起動パラメータがない場合（ステップＳ９２：Ｎｏ）、データ転送部統計情報５２にこのパラメータと転送時間とを対応づけて追加する（ステップＳ９７）。それによって、例えば図２２に示すように、バースト幅、バースト転送間隔、転送されたデータのサイズおよび転送時間のデータが得られる。
【００６５】
次いで、統計情報収集部５１は、デバイスドライバ３９から送付された情報に基づいて、画像処理部３６の動作時間を算出する（ステップＳ９４）。次いで、統計情報収集部５１は、この時点での画像処理部統計情報５３に、一致する起動パラメータがある場合（ステップＳ９５：Ｙｅｓ）、画像処理部統計情報５３のこのパラメータに対応する処理時間を過去数回分の処理時間の平均値に更新する（ステップＳ９６）。統計情報収集部５１は、画像処理部統計情報５３に、一致する起動パラメータがない場合（ステップＳ９５：Ｎｏ）、画像処理部統計情報５３にこのパラメータと処理時間とを対応づけて追加する（ステップＳ９８）。
【００６６】
・データ転送時間の算出方法
図２３は、実施例３にかかるデータ転送方法におけるデータ転送時間の算出方法を示すフローチャートである。図２３に示すように、データ転送モード決定部３４は、まずデータ転送部統計情報５２を検索し、データ転送部３５の起動パラメータに近い情報がデータ転送部統計情報５２に含まれているか否かを調べる（ステップＳ１０１）。データ転送部統計情報５２にデータ転送部３５の起動パラメータに一致する情報がある場合（ステップＳ１０２：Ｙｅｓ）、データ転送モード決定部３４は、データ転送部統計情報５２から起動パラメータに一致する情報に対応する転送時間を、データ転送部３５の転送時間として取得する（ステップＳ１０５）。
【００６７】
データ転送部統計情報５２に起動パラメータに一致する情報はないが（ステップＳ１０２：Ｎｏ）、近似可能な近い情報があることがある。近似可能な近い情報がある場合（ステップＳ１０３：Ｙｅｓ）、データ転送モード決定部３４は、データ転送部統計情報５２から近似可能な近い情報に対応する転送時間を取得する。そして、データ転送モード決定部３４は、近似可能な近い情報に対応する転送時間を用いてデータ転送部３５の転送時間を推定する（ステップＳ１０６）。
【００６８】
一方、データ転送部統計情報５２に起動パラメータに一致する情報も近似可能な近い情報もない場合には（ステップＳ１０３：Ｎｏ）、データ転送モード決定部３４は、メモリ３２の設計情報やバス３７の設計情報に基づいてデータ転送部３５の転送時間を算出する（ステップＳ１０４）。すなわち、実施例２と同様である。なお、データ転送部統計情報５２に蓄積された転送時間の実測値と、上述した転送時間の式に基づいて算出された転送時間との比を求め、この比の過去数回分の平均値を補正係数としてもよい。この補正係数を、上述した転送時間の式に基づいて算出された転送時間に乗算することにより、転送時間を算出するようにしてもよい。
【００６９】
実施例３によれば、実施例２と同様の効果が得られる。例えば上述した転送時間の式を用いて転送時間をある程度正確に見積ることができないような場合でも、実施例２と同様の効果が得られる。
【符号の説明】
【００７０】
１  プロセッサ
２  第１の記憶部
３  第２の記憶部
４  算出部
５  第３の記憶部
６  決定部
７  転送部
８  処理部
【図１】
0005573943.tif 000002
【図２】
0005573943.tif 000003
【図３】
0005573943.tif 000004
【図４】
0005573943.tif 000005
【図５】
0005573943.tif 000006
【図６】
0005573943.tif 000007
【図７】
0005573943.tif 000008
【図８】
0005573943.tif 000009
【図９】
0005573943.tif 000010
【図１０】
0005573943.tif 000011
【図１１】
0005573943.tif 000012
【図１２】
0005573943.tif 000013
【図１３】
0005573943.tif 000014
【図１４】
0005573943.tif 000015
【図１５】
0005573943.tif 000016
【図１６】
0005573943.tif 000017
【図１７】
0005573943.tif 000018
【図１８】
0005573943.tif 000019
【図１９】
0005573943.tif 000020
【図２０】
0005573943.tif 000021
【図２１】
0005573943.tif 000022
【図２２】
0005573943.tif 000023
【図２３】
0005573943.tif 000024