(57)【要約】【課題】  プロセッサから付加ハードウェアに対して互いに重なり合う複数組の要素データを転送する際、それら要素データを包括する領域を一括して転送する。【解決手段】  メインメモリ１２０からグラフィックアクセラレータのローカルメモリ１５０に複数組の要素データを転送するにあたり、包括領域算出部１８１はメインメモリ１２０上の一括転送情報を用いて要素データを囲む包括領域を算出する。この算出結果は、内部レジスタ１９０および転送方法判断情報６１０に反映される。転送方法判断部１８２は内部レジスタ１９０や転送方法判断情報６１０および転送方法規定テーブル６２０に基づいて要素データを一括転送すべきか逐次転送すべきかを判断する。一括転送された場合、転送先アドレス生成部１８３は各要素データのローカルメモリ１５０における転送先アドレスを生成する。【選択図】      図２
2006139529.tif 000002
【特許請求の範囲】
【請求項１】
所定の構造を有する要素データを第１のメモリから第２のメモリに転送する際の転送制御を行うデータ転送制御装置であって、
前記第１のメモリにおいて前記要素データを少なくとも１つ含む包括領域を算出する包括領域算出手段と、
前記包括領域全体を一括して前記第１のメモリから前記第２のメモリに転送させる一括転送制御手段と
を具備することを特徴とするデータ転送制御装置。
【請求項２】
所定の２次元領域において矩形構造を有する要素データを第１のメモリから第２のメモリに転送する際の転送制御を行うデータ転送制御装置であって、
前記第１のメモリにおいて前記要素データを少なくとも２つ含む包括領域を算出する包括領域算出手段と、
前記包括領域全体を一括して前記第１のメモリから前記第２のメモリに転送させる一括転送制御手段と
を具備することを特徴とするデータ転送制御装置。
【請求項３】
前記包括領域算出手段は、前記２次元領域における前記要素データの所定方向の座標を比較して前記座標の前記要素データにおける最大値および最小値を求めることにより前記包括領域を算出することを特徴とする請求項２記載のデータ転送制御装置
【請求項４】
所定の２次元領域において矩形構造を有する要素データを第１のメモリから第２のメモリに転送する際の転送制御を行うデータ転送制御装置であって、
前記第１のメモリにおいて前記要素データを少なくとも２つ含む包括領域を算出する包括領域算出手段と、
前記包括領域全体を一括して転送すべきか逐次に転送すべきかを規定する転送方法規定手段と、
前記転送方法規定手段に基づいて前記包括領域全体を一括して転送すべきか逐次に転送すべきかの転送方法を判断する転送方法判断手段と、
前記転送方法によって前記要素データを前記第１のメモリから前記第２のメモリに転送させる一括転送制御手段と
を具備することを特徴とするデータ転送制御装置。
【請求項５】
前記転送方法規定手段は、前記包括領域に含まれる要素データの数に対応してそれぞれ所定のインデックスにより位置付けられる値を保持する転送方法規定テーブルであって、前記値が前記包括領域全体を一括して転送すべきか逐次に転送すべきかを規定するものであり、前記インデックスは前記包括領域の大きさに依存するものであることを特徴とする請求項４記載のデータ転送制御装置。
【請求項６】
前記包括領域全体が一括して転送された場合に前記要素データの各々の前記第２のメモリにおけるアドレスを生成する転送先アドレス生成手段をさらに具備することを特徴とする請求項４記載のデータ転送制御装置。
【請求項７】
所定の処理を行う第１の処理手段と、前記第１の処理手段による作業領域を保持する第１のメモリと、前記第１の処理手段から指示された処理を行う第２の処理手段と、前記第２の処理手段による作業領域を保持する第２のメモリとを具備するデータ転送システムであって、
前記第２の処理手段は、前記第１のメモリにおける所定の２次元領域において矩形構造を有する要素データを少なくとも２つ含む包括領域を算出する包括領域算出手段と、前記包括領域全体を一括して前記第１のメモリから前記第２のメモリに転送させる一括転送制御手段とを備えることを特徴とするデータ転送システム。
【請求項８】
所定の処理を行うプロセッサと、前記プロセッサによる作業領域を保持するメインメモリと、前記プロセッサから指示された処理を行うグラフィックアクセラレータと、前記グラフィックアクセラレータによる作業領域を保持するローカルメモリとを具備するデータ転送システムであって、
前記グラフィックアクセラレータは、前記メインメモリにおける所定の画像領域において矩形構造を有する画像データを少なくとも２つ含む包括領域を算出する包括領域算出手段と、前記包括領域全体を一括して前記メインメモリから前記ローカルメモリに転送させる一括転送制御手段とを備えることを特徴とするデータ転送システム。
【請求項９】
所定の２次元領域において矩形構造を有する要素データを第１のメモリから第２のメモリに転送するためのデータ転送制御方法であって、
前記第１のメモリにおいて前記要素データを少なくとも２つ含む包括領域を算出する手順と、
前記包括領域全体を一括して転送すべきか逐次に転送すべきかの転送方法を前記包括領域の大きさによって判断する手順と、
前記転送方法によって前記要素データを前記第１のメモリから前記第２のメモリに転送させる手順と
を具備することを特徴とするデータ転送制御方法。
【請求項１０】
第１のメモリにおける所定の２次元領域において矩形構造を有する要素データを少なくとも２つ含む包括領域を算出する手順と、
前記包括領域全体を一括して転送すべきか逐次に転送すべきかの転送方法を前記包括領域の大きさによって判断する手順と、
前記転送方法によって前記要素データを前記第１のメモリから第２のメモリに転送させる手順と
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送制御装置に関し、特にプロセッサと付加ハードウェアとの間のデータ転送に関する制御を行うデータ転送制御装置ならびにそれを使用したコンピュータシステム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
近年、一般的な機能を有するプロセッサに専用のハードウェアを付加することにより、より高い機能を提供するコンピュータシステムが増えている。そのような専用ハードウェアの一例として、グラフィック処理専用として設けられたグラフィックアクセラレータがある。このグラフィックアクセラレータは、プロセッサから主記憶上の画像データを受け取り、所定の処理を施して表示部に描画を行う。
【０００３】
このような付加ハードウェアとプロセッサとの間では大量のデータが転送される可能性があるが、近年高速化の著しいプロセッサの演算処理速度と比較すると、データ転送速度は十分とはいえない。
【０００４】
これに対して、ワークステーションやパーソナルコンピュータのウィンドウを描画するためのデータ（以下、ウィンドウ情報という。）をグラフィックアクセラレータへ転送する際、データ量が多い場合にはそのウィンドウ情報そのものを逐一グラフィックアクセラレータへ転送するのではなく、プロセッサにおけるアドレスを通知しておいてＤＭＡ（Direct Memory Access）によりウィンドウ情報を転送する転送方式が提案されている（例えば、特許文献１参照。）。
【特許文献１】特開平１０−１８７１２５号公報（図１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述の従来技術においては、ある処理を複数組のデータに対して順次行う場合には、それらデータを１組ずつプロセッサ側のメインメモリから付加ハードウェアの専用メモリに転送することになる。このとき、データ同士が互いに重なり合う場合には、その重なり合った部分を重複して転送することになるため、同じデータを複数回転送するという無駄が生じ得る。
【０００６】
そこで、本発明は、プロセッサから付加ハードウェアに対して複数組のデータを転送する際、データ同士が互いに重なり合う場合にはそれらデータを包括する領域を一括して転送することにより、効率の良いデータ転送を実現することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記課題を解決するためになされたものであり、その第１の側面は、所定の構造を有する要素データを第１のメモリから第２のメモリに転送する際の転送制御を行うデータ転送制御装置であって、上記第１のメモリにおいて上記要素データを少なくとも１つ含む包括領域を算出する包括領域算出手段と、上記包括領域全体を一括して上記第１のメモリから上記第２のメモリに転送させる一括転送制御手段とを具備することを特徴とするデータ転送制御装置である。これにより、所定の構造を有する要素データを少なくとも１つ含む包括領域全体を一括して転送させるという作用をもたらす。すなわち、要素データ同士が重なり合うような場合であっても重複することなく効率の良いデータ転送を行わせるとともに、バースト転送によるデータ転送とデータ転送以外の本来の処理とを並行して行わせるという作用をもたらす。
【０００８】
また、本発明の第２の側面は、所定の２次元領域において矩形構造を有する要素データを第１のメモリから第２のメモリに転送する際の転送制御を行うデータ転送制御装置であって、上記第１のメモリにおいて上記要素データを少なくとも２つ含む包括領域を算出する包括領域算出手段と、上記包括領域全体を一括して上記第１のメモリから上記第２のメモリに転送させる一括転送制御手段とを具備することを特徴とするデータ転送制御装置である。これにより、矩形構造を有する要素データを少なくとも２つ含む包括領域全体を一括して転送させるという作用をもたらす。
【０００９】
また、この第２の側面において、上記包括領域算出手段は、上記２次元領域における上記要素データの所定方向の座標を比較して上記座標の上記要素データにおける最大値および最小値を求めることにより上記包括領域を算出することができる。
【００１０】
また、本発明の第３の側面は、所定の２次元領域において矩形構造を有する要素データを第１のメモリから第２のメモリに転送する際の転送制御を行うデータ転送制御装置であって、上記第１のメモリにおいて上記要素データを少なくとも２つ含む包括領域を算出する包括領域算出手段と、上記包括領域全体を一括して転送すべきか逐次に転送すべきかを規定する転送方法規定手段と、上記転送方法規定手段に基づいて上記包括領域全体を一括して転送すべきか逐次に転送すべきかの転送方法を判断する転送方法判断手段と、上記転送方法によって上記要素データを上記第１のメモリから上記第２のメモリに転送させる一括転送制御手段とを具備することを特徴とするデータ転送制御装置である。これにより、矩形構造を有する要素データを転送するに際して、要素データを逐次転送すべきかもしくは要素データを含む包括領域全体を一括して転送すべきかを判断し、最適な転送方法により転送させるという作用をもたらす。
【００１１】
また、この第３の側面において、上記転送方法規定手段は前記包括領域に含まれる要素データの数に対応してそれぞれ所定のインデックスにより位置付けられる値を保持する転送方法規定テーブルにより実現することができる。その際、そこに保持される値は上記包括領域全体を一括して転送すべきか逐次に転送すべきかを規定できる。そして、上記インデックスは上記包括領域の大きさに依存するものとすることができる。
【００１２】
また、この第３の側面において、上記包括領域全体が一括して転送された場合に上記要素データの各々の上記第２のメモリにおけるアドレスを生成する転送先アドレス生成手段をさらに具備するようにしてもよい。これにより、第２のメモリに転送された要素データの処理を適切に遂行させるという作用をもたらす。
【００１３】
また、本発明の第４の側面は、所定の処理を行う第１の処理手段と、上記第１の処理手段による作業領域を保持する第１のメモリと、上記第１の処理手段から指示された処理を行う第２の処理手段と、上記第２の処理手段による作業領域を保持する第２のメモリとを具備するデータ転送システムであって、上記第２の処理手段は、上記第１のメモリにおける所定の２次元領域において矩形構造を有する要素データを少なくとも２つ含む包括領域を算出する包括領域算出手段と、上記包括領域全体を一括して上記第１のメモリから上記第２のメモリに転送させる一括転送制御手段とを備えることを特徴とするデータ転送システムである。これにより、矩形構造を有する要素データを少なくとも２つ含む包括領域全体を第１のメモリから第２のメモリへ一括して転送させるという作用をもたらす。
【００１４】
また、本発明の第５の側面は、所定の処理を行うプロセッサと、上記プロセッサによる作業領域を保持するメインメモリと、上記プロセッサから指示された処理を行うグラフィックアクセラレータと、上記グラフィックアクセラレータによる作業領域を保持するローカルメモリとを具備するデータ転送システムであって、上記グラフィックアクセラレータは、上記メインメモリにおける所定の画像領域において矩形構造を有する画像データを少なくとも２つ含む包括領域を算出する包括領域算出手段と、上記包括領域全体を一括して上記メインメモリから上記ローカルメモリに転送させる一括転送制御手段とを備えることを特徴とするデータ転送システム。これにより、矩形構造を有する画像データを少なくとも２つ含む包括領域全体をプロセッサ側のメインメモリからグラフィックアクセラレータ側のローカルメモリへ一括して転送させるという作用をもたらす。
【００１５】
また、本発明の第６の側面は、所定の２次元領域において矩形構造を有する要素データを第１のメモリから第２のメモリに転送するためのデータ転送制御方法であって、上記第１のメモリにおいて上記要素データを少なくとも２つ含む包括領域を算出する手順と、上記包括領域全体を一括して転送すべきか逐次に転送すべきかの転送方法を上記包括領域の大きさによって判断する手順と、上記転送方法によって上記要素データを上記第１のメモリから上記第２のメモリに転送させる手順とを具備することを特徴とするデータ転送制御方法である。これにより、矩形構造を有する要素データを最適な転送方法により転送させるという作用をもたらす。
【００１６】
また、本発明の第７の側面は、第１のメモリにおける所定の２次元領域において矩形構造を有する要素データを少なくとも２つ含む包括領域を算出する手順と、上記包括領域全体を一括して転送すべきか逐次に転送すべきかの転送方法を上記包括領域の大きさによって判断する手順と、上記転送方法によって上記要素データを上記第１のメモリから第２のメモリに転送させる手順とをコンピュータに実行させることを特徴とするプログラムである。これにより、矩形構造を有する要素データを最適な転送方法により転送させるという作用をもたらす。
【発明の効果】
【００１７】
本発明によれば、プロセッサから付加ハードウェアに対して複数組のデータを転送する際、データ同士が互いに重なり合う場合にはそれらデータを包括する領域を一括して転送することにより、効率の良いデータ転送を実現するという優れた効果を奏し得る。
【発明を実施するための最良の形態】
【００１８】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【００１９】
図１は、本発明の実施の形態におけるデータ転送制御装置を実現するコンピュータシステム１００の一例を示す図である。このコンピュータシステム１００は、プロセッサ１１０と、そのメインメモリ１２０と、付加ハードウェアとしてのグラフィックアクセラレータ１３０を備える。
【００２０】
そして、グラフィックアクセラレータ１３０は、グラフィック処理のための演算を行う演算器群１４０と、画像データを保持するためのローカルメモリ１５０と、これらを制御する制御部１６０とを備える。このグラフィックアクセラレータ１３０は、ローカルメモリ１５０に保持された画像データに対して演算器群１４０が処理を行うように構成されている。従って、メインメモリ１２０に保持されている画像データに対する処理を行う場合には、メインメモリ１２０からローカルメモリ１５０に一旦転送を行う必要がある。
【００２１】
プロセッサ１１０は、グラフィックアクセラレータ１３０に処理を行わせるに際して、まずメインメモリ１２０からローカルメモリ１５０に画像データを転送しておいて、その後、演算器群１４０に対してローカルメモリ１５０内の画像データに所定の処理を施すよう指示する。これら一連の処理において画像データの流れを制御するのが制御部１６０である。
【００２２】
図２は、本発明の実施の形態における制御部１６０の内部構成例を示す図である。この制御部１６０は、一括転送制御ブロック１７０と、一括転送処理部１８０と、内部レジスタ１９０と、一括転送制御レジスタ４００とを含んで構成されている。
【００２３】
一括転送制御ブロック１７０は、プロセッサ１１０側とのインターフェースを司るものであり、必要に応じてメインメモリ１２０とローカルメモリ１５０との間でＤＭＡ転送の制御を行う。このとき、プロセッサ１１０との間で必要な制御情報のやりとりを行う際に、一括転送制御レジスタ４００が用いられる。この一括転送制御レジスタ４００の詳細については後述する。
【００２４】
一括転送処理部１８０は、一括転送のために必要な処理を行うものであり、包括領域算出部１８１と、転送方法判断部１８２と、転送先アドレス生成部１８３とを備える。包括領域算出部１８１は、複数組の画像データを包括する領域（以下、包括領域という。）を算出するものである。転送方法判断部１８２は、包括領域における画像データを一括転送すべきかもしくは逐次転送すべきかという転送方法を判断するものである。転送先アドレス生成部１８３は、一括転送された画像データの各々についてローカルメモリ１５０における転送先アドレスを生成するものである。
【００２５】
この一括転送処理部１８０における各部の処理は内部レジスタ１９０を用いて行われる。また、包括領域算出部１８１はメインメモリ１２０に保持されている一括転送情報５００（図６）を用いて包括領域を算出して、転送方法判断情報６１０をローカルメモリ１５０に生成する。転送方法判断部１８２は、ローカルメモリ１５０における転送方法判断情報６１０および転送方法規定テーブル６２０を用いて転送方法の判断を行う。また、転送先アドレス生成部１８３は、生成したローカルメモリ１５０の転送先アドレスをメインメモリ１２０における一括転送情報５００（図６）に書き込む。
【００２６】
図３は、本発明の実施の形態におけるプロセッサ１１０から見たメモリマップの一例を示す図である。メインメモリ１２０には画像データの他、プロセッサ１１０とグラフィックアクセラレータ１３０との間で一括転送に関する情報をやりとりするための一括転送情報５００が保持される。この一括転送情報５００の開始アドレスは情報開始アドレスとして、後述の情報開始アドレスレジスタ４２０に保持される。
【００２７】
メモリマップ上の所定の領域（例えば、０ｘｆｆｆｆ００００を先頭とする領域）には、一括転送制御インターフェースとして、一括転送制御レジスタ４００が割り当てられている。この一括転送制御レジスタ４００は、指示レジスタ４１０と、情報開始アドレスレジスタ４２０と、状態レジスタ４３０と、転送サイズレジスタ４４０の４つのレジスタを含み得る。
【００２８】
なお、メモリマップ上の他の領域には、その他のインターフェースとして、例えば周辺機器とのインターフェース等を割り当てるようにすることができる。
【００２９】
図４は、本発明の実施の形態における一括転送制御レジスタ４００の構成例を示す図である。この一括転送制御レジスタ４００に含まれる各レジスタは、例えばそれぞれ３２ビット幅レジスタとして構成され得る。
【００３０】
図４（ａ）は、指示レジスタ４１０の構成例を示す図である。指示レジスタ４１０は、転送開始指示４１１、終了報告モード４１２および最大バースト長４１３の各フィールドを備える。転送開始指示４１１は、プロセッサ１１０からグラフィックアクセラレータ１３０に対してデータ転送開始の指示を伝えるためのフィールドであり、例えば６ビットのうち最下位の１ビットをプロセッサ１１０が"１"にセットすることにより、グラフィックアクセラレータ１３０におけるデータ転送の処理が開始する。
【００３１】
終了報告モード４１２は、データ転送が終了した際のグラフィックアクセラレータ１３０からプロセッサ１１０への報告方式を定義するフィールドである。例えば１０ビットのうち最下位の１ビットが"１"であれば、ポーリングモードであり、プロセッサ１１０は状態レジスタ４３０をチェックすることにより転送の終了を検出する。一方、例えば１０ビットのうち最下位の１ビットが"０"であれば、割込みモードであり、転送終了時にはプロセッサ１１０に対する割込み信号が発生する。
【００３２】
最大バースト長４１３は、連続して入出力できるデータ数を表すフィールドである。例えば１６ビットの値によりワードを単位とした定義が行われる。この最大バースト長４１３は、システムに依存する値であり、一括転送を開始する際にデータ量の限界を超えているか否かを判断するために用いられる。
【００３３】
図４（ｂ）は、情報開始アドレスレジスタ４２０の構成例を示す図である。情報開始アドレスレジスタ４２０は情報開始アドレス４２１を保持する。この情報開始アドレス４２１は、メインメモリ１２０における一括転送情報５００の開始アドレスを示すようになっている。この情報開始アドレス４２１は、プロセッサ１１０によって設定される。
【００３４】
図４（ｃ）は、状態レジスタ４３０の構成例を示す図である。状態レジスタ４３０は、転送モード４３１および転送状態４３２の各フィールドを備える。転送モード４３１は、直前にされたデータ転送の転送方法として一括転送であったかもしくは逐次転送であったかを示すフィールドである。例えば、１６ビットの最下位ビットが"１"であれば一括転送で、"０"であれば逐次転送であったことを意味するものとすることができる。この転送方法によってプロセッサ１１０における処理内容が変わるため、その結果をプロセッサ１１０に提供するために用いられる。
【００３５】
転送状態４３２は、データ転送が実行中であるか否かを示すフィールドである。例えば、１６ビットの最下位ビットが"１"であれば転送中であり、"０"であれば転送中でないことを示すものとすることができる。この転送状態４３２は、終了報告モード４１２がポーリングモードである場合にプロセッサ１１０によって転送終了判断のために読み出される。
【００３６】
図４（ｄ）は、転送サイズレジスタ４４０の構成例を示す図である。転送サイズレジスタ４４０は、最大横幅４４１、最大縦幅４４２、転送横幅４４３および転送縦幅４４４の各フィールドを備える。最大横幅４４１および最大縦幅４４２は、一括転送を行う場合の横幅および縦幅のそれぞれの最大サイズを示すフィールドであり、例えばそれぞれ８バイト幅のフィールドによってバイト単位でその最大サイズを示す。これら最大横幅４４１および最大縦幅４４２は、システムに依存する値であり、転送方法規定テーブル６２０（図９）のサイズを規定することになる。
【００３７】
転送横幅４４３および転送縦幅４４４は、実際に行う転送の横幅および縦幅のそれぞれのサイズを示すフィールドであり、例えばそれぞれ８バイト幅のフィールドによってバイト単位でそのサイズを示す。すなわち、これら転送横幅４４３および転送縦幅４４４は、画像データのぞれぞれのサイズを示す。
【００３８】
図５は、本発明の実施の形態における画像データの配置例を示す図である。図５（ａ）は、画像領域における画像データの配置例である。ここでは、画像領域として、横幅ｋバイト、縦幅ｌバイトのｋ×ｌバイトの２次元領域を想定している。この画像領域の横幅ｋおよび縦幅ｌは一括転送情報５００に含まれる。
【００３９】
この画像領域において、画像データは、横幅ｍバイト、縦幅ｎバイトのｍ×ｎバイトの２次元領域を占める矩形構造データを想定している。このような構造を有するデータを要素データと呼ぶ。この要素データの横幅ｍおよび縦幅ｎは一括転送情報５００に含まれる。図における左上の画像領域の開始位置の座標を（０，０）として、要素データの開始位置の座標を位置情報（ｉ，ｊ）として表す。各要素データの位置情報は一括転送情報５００に含まれる。
【００４０】
図５（ｂ）は、メインメモリ１２０における画像データの配置例である。メインメモリ１２０において、画像領域は所定の先頭アドレスからｋ×ｌバイトの領域に確保される。この画像領域の先頭アドレスは一括転送情報５００に含まれる。
【００４１】
このメインメモリ１２０においては、要素データはｍバイトずつ連続したデータがｎ個、ｋバイトのピッチで配置される。従って、要素データの先頭に相当する位置情報（ｉ，ｊ）のメインメモリ１２０におけるアドレスは、
位置情報（ｉ，ｊ）のアドレス＝画像領域の先頭アドレス＋ｋ×ｊ＋ｉ
により表される。
【００４２】
なお、ここでは、図５（ｂ）においてメインメモリ１２０における要素データの配置例を示したが、ローカルメモリ１５０においても要素データが同様の配置により保持される。
【００４３】
図６は、本発明の実施の形態における一括転送情報５００の内容を示す図である。この一括転送情報５００は一括転送を行う際の包括領域を算出するために必要な情報およびその算出結果を保持するものであり、基本情報５１０と、要素データ位置情報５２０と、要素データ転送先アドレス５３０とを備える。
【００４４】
基本情報５１０は、包括領域を算出するための基本的な情報であり、画像領域先頭アドレス５１１と、転送先開始アドレス５１２と、ロード最大サイズ５１３と、画像領域横幅５１４と、画像領域縦幅５１５と、要素データ数５１６と、要素データ横幅５１７と、要素データ縦幅５１８とを含む。画像領域先頭アドレス５１１は、転送元であるメインメモリ１２０における画像領域の先頭アドレス（図５（ｂ）参照）を示す。転送先開始アドレス５１２は、転送先であるローカルメモリ１５０における画像領域の開始アドレスを示す。ロード最大サイズ５１３は、データ転送可能な最大サイズを示すものであり、転送開始の際の容量チェックに使用される。
【００４５】
画像領域横幅５１４および画像領域縦幅５１５は、画像領域の横幅および縦幅（図５（ａ）参照）をそれぞれ示す。要素データ数５１６は、画像領域における要素データの数を示す。要素データ横幅５１７および要素データ縦幅５１８は、各要素データの横幅および縦幅（図５（ａ）参照）をそれぞれ示す。
【００４６】
要素データ位置情報５２０は、各要素データの位置情報を示す。ここで、要素データ数５１６に規定される数をＮとすると、Ｎ個の要素データの各々について位置情報ＤＢ［０］からＤＢ［Ｎ−１］を規定することになる。各位置情報は、座標（ｘ，ｙ）に対応して、ｘ座標５２１およびｙ座標５２２により表現される。
【００４７】
要素データ転送先アドレス５３０は、Ｎ個の要素データの各々について要素データ転送先アドレス［０］から［Ｎ−１］を示す。基本情報５１０および要素データ位置情報５２０がプロセッサ１１０からグラフィックアクセラレータ１３０に対して提供される情報であるのに対し、この要素データ転送先アドレス５３０はグラフィックアクセラレータ１３０からプロセッサ１１０に対する戻り値である点で異なる。すなわち、グラフィックアクセラレータ１３０は、データ転送の結果として各要素データの転送先アドレスをこのフィールド（要素データ転送先アドレス５３０）を用いてプロセッサ１１０に報告する。
【００４８】
グラフィックアクセラレータの仕様によっては、ローカルメモリ１５０におけるデータ配置が変わるとそのデータに対する処理を行うための制御も変わってくる場合が多い。この制御についてプロセッサ１１０が関与する場合に、この要素データ転送先アドレス５３０が必要になる。
【００４９】
図７は、本発明の実施の形態における包括領域算出部１８１による各要素データの包括領域の算出方法を示す図である。ここでは、ｋ×ｌバイトの画像領域にｍ×ｎバイトの要素データが複数存在する場合を想定している。これら重なり合う複数の要素データの全体を含む包括領域は、以下の手順により求められる。
【００５０】
すなわち、各要素データの位置情報を比較することにより、ｘ座標およびｙ座標のそれぞれの最小値および最大値を求める。これにより、ｘ座標の最小値ｘminおよび最大値ｘmax、ならびに、ｙ座標の最小値ｙminおよび最大値ｙmaxが得られる。その結果、包括領域を囲む４点の座標は、Ｐ0（ｘmin，ｙmin）、Ｐ1（ｘmax＋ｍ，ｙmin）、Ｐ2（ｘmin，ｙmax＋ｎ）、および、Ｐ3（ｘmax＋ｍ，ｙmax＋ｎ）により表される。
【００５１】
このとき、包括領域の横方向の幅ｘrangeおよび縦方向の幅ｙrangeは、
ｘrange＝ｘmax−ｘmin＋ｍ
ｙrange＝ｙmax−ｙmin＋ｎ
により求められる。
【００５２】
また、これらの結果を利用して、上述の位置情報（ｘ，ｙ）の要素データ転送先アドレス５３０は次式により求められる。
転送先アドレス＝転送先開始アドレス＋ｘrange×（ｙ−ｙmin）＋（ｘ−ｘmin）
【００５３】
図８は、本発明の実施の形態における包括領域算出部１８１により生成される転送方法判断情報６１０の内容を示す図である。この転送方法判断情報６１０は、転送方法規定テーブル内インデックス６１１と、要素データ横幅６１２と、要素データ縦幅６１３と、要素データ数６１４とを備える。
【００５４】
転送方法規定テーブル内インデックス６１１は、転送方法規定テーブル６２０におけるインデックスを示す。この転送方法規定テーブル６２０は、ローカルメモリ１５０に保持されるテーブルであり、このテーブルにおける所定位置の値によって、逐次転送すべきか一括転送すべきかを判断できるようになっている。
【００５５】
要素データ横幅６１２および要素データ縦幅６１３は、要素データの横幅ｍおよび縦幅ｎを示すものであり、一括転送情報５００における要素データ横幅５１７および要素データ縦幅５１８が用いられる。要素データ数６１４は、要素データの数Ｎを示すものであり、一括転送情報５００における要素データ数５１６が用いられる。
【００５６】
図９は、本発明の実施の形態における転送方法規定テーブル６２０の構成を示す図である。この転送方法規定テーブル６２０は、上述のようにローカルメモリ１５０に保持されるテーブルであり、このテーブルにおける所定位置の値によって、逐次転送すべきか一括転送すべきかを判断できるようになっている。各位置には、例えば"０"または"１"の値が保持されている。
【００５７】
この転送方法規定テーブル６２０のサイズは、一括転送を行う場合の横幅および縦幅のそれぞれの最大サイズにより規定される。この最大サイズは、転送サイズレジスタ４４０の最大横幅４４１および最大縦幅４４２を利用することができる。すなわち、最大横幅４４１の範囲内および最大縦幅４４２の範囲内で選択された位置における値が何れであるかによって、例えば"０"であれば逐次転送をすべき旨を示し、"１"であれば一括転送をすべき旨を示すものとする。この転送方法規定テーブル６２０は、包括領域に含まれる要素データの数に対応してそれぞれ存在し、一括転送をすべきか否かの判断の際には包括領域に含まれる要素データの数に対応する転送方法規定テーブル６２０が参照される。
【００５８】
この転送方法規定テーブル６２０において何れの位置を参照すべきかは、転送方法判断情報６１０における転送方法規定テーブル内インデックス６１１に示される。包括領域算出部１８１は、次式によって、この転送方法規定テーブル内インデックス６１１を生成する。ここで、Ｍmaxは最大横幅４４１、ｘrangeは包括領域の横方向の幅、ｙrangeは包括領域の縦方向の幅をそれぞれ表すものとする。
インデックス＝Ｍmax×ｙrange＋ｘrange
【００５９】
この転送方法規定テーブル６２０は、予めローカルメモリ１５０において設定される必要がある。この設定のための指針としては、例えば、以下の項目が考えられる。すなわち、（ａ）一括転送した場合と逐次転送した場合の転送時間の差分、（ｂ）ローカルメモリ１５０内の配置の違いによる処理時間の差分、（ｃ）ローカルメモリ１５０内の配置の違いによるアクセラレータの制御に要する時間の差分、（ｄ）一括転送を行った場合のローカルメモリ１５０内アドレス算出に要する時間、などが挙げられる。
【００６０】
（ａ）において、逐次転送の転送時間は一つの要素データを転送する時間に要素データ数を掛けた値であり、一括転送の転送時間は包括領域に対する転送時間である。（ｂ）における差分としては、例えばローカルメモリ１５０内でのアドレッシングが変わることによる処理サイクル数の変化などが挙げられる。（ｃ）における差分としては、例えばローカルメモリ１５０内でのアドレッシングの違いを吸収するために必要な処理に要する時間が挙げられる。（ｄ）のアドレス算出については後述する。
【００６１】
これら処理速度の差分を、発生し得る要素データの数と、起こり得る包括領域の分布との全ての組み合わせに対して予め計算しておいて、転送方法判断情報６１０における要素データ数６１４に基づいて該当する転送方法規定テーブル６２０を選択することになる。その転送方法規定テーブル６２０において、転送方法判断情報６１０における転送方法規定テーブル内インデックス６１１に示される位置を参照することにより、転送方法の判断を行うことができる。
【００６２】
次に本発明の実施の形態におけるデータ転送制御装置の動作について図面を参照して説明する。ここで、データ転送制御装置の動作を説明するにあたり、利用されるレジスタの構成について説明する。
【００６３】
図１０は、本発明の実施の形態における制御部１６０において用いられる内部レジスタ１９０の内容を示す図である。Ｘ＿ＭＩＮ（１９１）およびＹ＿ＭＩＮ（１９２）は、包括領域におけるｘ座標およびｙ座標の最小値を保持するレジスタである。また、Ｘ＿ＭＡＸ（１９３）およびＹ＿ＭＡＸ（１９４）は、包括領域におけるｘ座標およびｙ座標の最大値を保持するレジスタである。これらは、それぞれ図７におけるｘmin、ｙmin、ｘmax、および、ｙmaxに相当する。
【００６４】
また、Ｘ＿ＬＯＡＤ＿ＲＡＮＧＥ（１９５）およびＹ＿ＬＯＡＤ＿ＲＡＮＧＥ（１９６５）は、それぞれ包括領域の横方向および縦方向の幅を保持するレジスタである。これらは、それぞれ図７におけるｘrangeおよびｙrangeに相当する。
【００６５】
図１１は、本発明の実施の形態におけるデータ転送制御方法の全体手順の一例を示す流れ図である。プロセッサ１１０からデータ転送要求が発生すると（ステップＳ９１１）、ステップＳ９１２以降の処理を開始する。具体的には、指示レジスタ４１０の転送開始指示４１１の所定のビットをプロセッサ１１０が有効にすることにより、グラフィックアクセラレータ１３０はデータ転送要求の発生を検知する。
【００６６】
情報開始アドレスレジスタ４２０に保持された情報開始アドレス４２１の示す一括転送情報５００において、要素データ数５１６が２以上を示していればステップＳ９１２以降の処理に進む（ステップＳ９１２）。一方、要素データ数５１６が２未満であればその要素データは逐次転送されることになる（ステップＳ９５２）。
【００６７】
包括領域算出部１８１は、一括転送情報５００に含まれる要素データについてそれらを含む包括領域を算出する（ステップＳ９２０）。その結果、内部レジスタ１９０には所定の内容が設定され、また、転送方法判断情報６１０が生成される。なお、この算出の詳細手順については、図１２および図１３により後述する。
【００６８】
転送方法判断部１８２は、転送方法判断情報６１０および転送方法規定テーブル６２０に基づいて、包括領域における要素データを一括転送すべきかもしくは逐次転送すべきかという転送方法を判断する（ステップＳ９４１）。この転送方法を判断するに際して、転送方法規定テーブル６２０において転送方法規定テーブル内インデックス６１１の示す位置の値が参照される。また、包括領域のサイズ（ｘrange×ｙrange）がロード最大サイズ５１３を越える場合には、一括転送できないため逐次転送が選択される。
【００６９】
そして、ステップＳ９４１において、一括転送すべきとの判断がされた場合には包括領域における要素データがＤＭＡ転送により一括転送され（ステップＳ９５１）、逐次転送すべきとの判断がされた場合には包括領域における要素データはそれぞれ逐次転送される（ステップＳ９５２）。
【００７０】
一括転送が行われた場合、転送先アドレス生成部１８３は、一括転送された要素データの各々についてローカルメモリ１５０における転送先アドレスを生成する（ステップＳ９６１）。この転送先アドレスの生成の内容については上述したとおりであり、一括転送情報５００における転送先開始アドレス５１２、および、内部レジスタ１９０の値が使用される。そして、その結果、一括転送情報５００における要素データ転送先アドレス５３０にその転送先アドレスが設定される。
【００７１】
データ転送（ステップＳ９５１またはＳ９５２）の終了後、そのデータ転送の転送方法（一括転送または逐次転送）が、状態レジスタ４３０の転送モード４３１に記録される（ステップＳ９７１）。また、転送終了処理として、状態レジスタ４３０の転送状態４３２が「転送中でない」状態に設定され、また、指示レジスタ４１０の終了報告モード４１２が割込みモードを示していればプロセッサ１１０に対する割込みが行われる（ステップＳ９７２）。
【００７２】
図１２および図１３は、本発明の実施の形態における包括領域算出処理の手順の一例を示す流れ図である。この包括領域算出に先立って、内部レジスタ１９０の初期化が行われる（ステップＳ９２１）。すなわち、Ｘ＿ＭＩＮおよびＸ＿ＭＡＸに最初の要素データの横幅を表す"ＤＢ［０］．ｘ"、Ｘ＿ＭＩＮおよびＹ＿ＭＡＸに最初の要素データの縦幅を表す"ＤＢ［０］．ｙ"がそれぞれ設定される。また、インデックス変数ｉには"１"が設定される（ステップＳ９２２）。
【００７３】
そして、それぞれの要素データの位置情報のｘ座標値およびｙ座標値について最大値および最小値が検索される。すなわち、インデックス変数ｉにおけるｘ座標値がこれまでの最小値よりも小さければ（ステップＳ９２３）、新たな最小値としてＸ＿ＭＩＮにそのｘ座標値が保持される（ステップＳ９２４）。また、インデックス変数ｉにおけるｙ座標値がこれまでの最小値よりも小さければ（ステップＳ９２５）、新たな最小値としてＹ＿ＭＩＮにそのｙ座標値が保持される（ステップＳ９２６）。また、インデックス変数ｉにおけるｘ座標値がこれまでの最大値よりも大きければ（ステップＳ９２７）、新たな最大値としてＸ＿ＭＡＸにそのｘ座標値が保持される（ステップＳ９２８）。さらに、インデックス変数ｉにおけるｙ座標値がこれまでの最大値よりも大きければ（ステップＳ９２９）、新たな最大値としてＹ＿ＭＡＸにそのｙ座標値が保持される（ステップＳ９３１）。
【００７４】
その後、インデックス変数ｉが１つ増加され（ステップＳ９３２）、その値が要素データの数Ｎに達していなければステップＳ９２３以降の処理に戻り（ステップＳ９３３）、そうでなければ次のステップＳ９３４に進む。
【００７５】
位置情報について最大値および最小値の検索が終了すると、これを使用して包括領域の横方向および縦報告の幅が算出される（ステップＳ９３４）。また、転送方法規定テーブル６２０におけるインデックスが算出され、転送方法判断情報６１０における転送方法規定テーブル内インデックス６１１に格納される（ステップＳ９３５）。転送方法規定テーブル６２０のアクセスの際には、この転送方法規定テーブル内インデックス６１１および要素データ数６１４が用いられる。
【００７６】
図１４は、本発明の実施の形態におけるプロセッサおよびグラフィックアクセラレータの全体の動作の流れを示す図である。プロセッサ１１０は、一括転送情報５００に所定の情報を設定して（ステップＳ９９１）、指示レジスタ４１０の転送開始指示４１１の所定のビットを有効にすることによりデータ転送を要求する（ステップＳ９９２）。
【００７７】
プロセッサ１１０によるデータ転送要求をトリガーとして、グラフィックアクセラレータ１３０では、包括領域算出処理（ステップＳ９９３）および転送方法判断処理（ステップＳ９９４）が行われる。そして、これら処理による結果に基づいてメインメモリ１２０からローカルメモリ１５０へのデータ転送処理（ステップＳ９９５）が行われる。このとき、一括転送が行われた場合には各要素データのローカルメモリ１５０における転送先アドレス生成が（ステップＳ９９６）が行われる。
【００７８】
このようなデータ転送が行われている間、プロセッサ１１０ではこれと並行して別処理＃１乃至＃Ｘ（ステップＳ９９７）が行われる。プロセッサ１１０は、データ転送が終了したことを割込みまたはポーリングにより検知して、その後のデータ処理（ステップＳ９９８）を行う。例えば、プロセッサ１１０は、グラフィックアクセラレータ１３０に対して、ローカルメモリ１５０におけるデータについて所定の演算を行うようコマンドを発行することができる。
【００７９】
このように、本発明の実施の形態によれば、メインメモリ１２０における要素データをグラフィックアクセラレータ１３０のローカルメモリ１５０に転送するに際して、プロセッサ１１０によって設定された一括転送情報５００に基づいて包括領域算出部１８１が包括領域を算出してその包括領域全体を転送することにより、要素データ同士が重なり合うような場合であっても重複することなく効率の良いデータ転送を行うことができる。このデータ転送はプロセッサ１１０における処理とは独立しており、プロセッサ１１０と並行して行うことができる。また、要素データを包括領域として一括転送すべきか否かを転送方法判断部１８２が判断することにより、条件に合致した転送方法を選択することができる。
【００８０】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、以下に示すように特許請求の範囲における発明特定事項とそれぞれ対応関係を有するが、これに限定されるものではなく本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
【００８１】
すなわち、請求項１乃至３において、包括領域算出手段は例えば包括領域算出部１８１に対応する。また、一括転送制御手段は例えば一括転送制御ブロック１７０に対応する。また、第１のメモリは例えばメインメモリ１２０に対応する。また、第２のメモリは例えばローカルメモリ１５０に対応する。
【００８２】
また、請求項４乃至６において、包括領域算出手段は例えば包括領域算出部１８１に対応する。また、転送方法規定手段は例えば転送方法規定テーブル６２０に対応する。また、転送方法判断手段は例えば転送方法判断部１８２に対応する。また、一括転送制御手段は例えば一括転送制御ブロック１７０に対応する。また、第１のメモリは例えばメインメモリ１２０に対応する。また、第２のメモリは例えばローカルメモリ１５０に対応する。
【００８３】
また、請求項６において、転送先アドレス生成手段は例えば転送先アドレス生成部１８３に対応する。
【００８４】
また、請求項７において、第１の処理手段は例えばプロセッサ１１０に対応する。また、第１のメモリは例えばメインメモリ１２０に対応する。また、第２の処理手段は例えばグラフィックアクセラレータ１３０に対応する。また、第２のメモリは例えばローカルメモリ１５０に対応する。包括領域算出手段は例えば包括領域算出部１８１に対応する。また、一括転送制御手段は例えば一括転送制御ブロック１７０に対応する。また、第１のメモリは例えばメインメモリ１２０に対応する。また、第２のメモリは例えばローカルメモリ１５０に対応する。
【００８５】
また、請求項９または１０において、第１のメモリにおいて要素データを少なくとも２つ含む包括領域を算出する手順は例えばステップＳ９２０に対応する。また、包括領域全体を一括して転送すべきか逐次に転送すべきかの転送方法を包括領域の大きさによって判断する手順は例えばステップＳ９４１に対応する。また、転送方法によって要素データを第１のメモリから第２のメモリに転送させる手順は例えばステップＳ９５１またはＳ９５２に対応する。
【００８６】
なお、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。
【産業上の利用可能性】
【００８７】
本発明の活用例として、例えばプロセッサと付加ハードウェア（例えば、グラフィックアクセラレータ）との間で多量のデータを転送する際のデータ転送制御に本発明を適用することができる。
【図面の簡単な説明】
【００８８】
【図１】本発明の実施の形態におけるデータ転送制御装置を実現するコンピュータシステム１００の一例を示す図である。
【図２】本発明の実施の形態における制御部１６０の内部構成例を示す図である。
【図３】本発明の実施の形態におけるプロセッサ１１０から見たメモリマップの一例を示す図である。
【図４】本発明の実施の形態における一括転送制御レジスタ４００の構成例を示す図である。
【図５】本発明の実施の形態における要素データの配置例を示す図である。
【図６】本発明の実施の形態における一括転送情報５００の内容を示す図である。
【図７】本発明の実施の形態における包括領域算出部１８１による各要素データの包括領域の算出方法を示す図である。
【図８】本発明の実施の形態における包括領域算出部１８１により生成される転送方法判断情報６１０の内容を示す図である。
【図９】本発明の実施の形態における転送方法規定テーブル６２０の構成を示す図である。
【図１０】本発明の実施の形態における制御部１６０において用いられる内部レジスタ１９０の内容を示す図である。
【図１１】本発明の実施の形態におけるデータ転送制御方法の全体手順の一例を示す流れ図である。
【図１２】本発明の実施の形態における包括領域算出処理手順の一例の前半部分を示す流れ図である。
【図１３】本発明の実施の形態における包括領域算出処理手順の一例の後半部分を示す流れ図である。
【図１４】本発明の実施の形態におけるプロセッサおよびグラフィックアクセラレータの全体の動作の流れを示す図である。
【符号の説明】
【００８９】
１００  コンピュータシステム
１１０  プロセッサ
１２０  メインメモリ
１３０  グラフィックアクセラレータ
１４０  演算器群
１５０  ローカルメモリ
１６０  制御部
１７０  一括転送制御ブロック
１８０  一括転送処理部
１８１  包括領域算出部
１８２  転送方法判断部
１８３  転送先アドレス生成部
１９０  内部レジスタ
４００  一括転送制御レジスタ
４１０  指示レジスタ
４２０  情報開始アドレスレジスタ
４３０  状態レジスタ
４４０  転送サイズレジスタ
５００  一括転送情報
６１０  転送方法判断情報
６２０  転送方法規定テーブル
【図１】
2006139529.tif 000003
【図２】
2006139529.tif 000004
【図３】
2006139529.tif 000005
【図４】
2006139529.tif 000006
【図５】
2006139529.tif 000007
【図６】
2006139529.tif 000008
【図７】
2006139529.tif 000009
【図８】
2006139529.tif 000010
【図９】
2006139529.tif 000011
【図１０】
2006139529.tif 000012
【図１１】
2006139529.tif 000013
【図１２】
2006139529.tif 000014
【図１３】
2006139529.tif 000015
【図１４】
2006139529.tif 000016