(57)【要約】【課題】データ転送レートを高くする。【解決手段】参照データ記憶部にある複数の参照領域を参照する第１のプログラムを受け取る受取部２０１と、第１のプログラムを用いてそれぞれが先頭と末尾とのアドレスを含む複数の参照領域を表す複数の参照領域情報を生成する生成部２０１と、複数の参照領域情報を用いて複数の参照領域にあるデータをどのような単位で参照データ記憶部から一時記憶部へ転送するかを示す第１の転送単位情報と第１の転送単位情報とは単位が異なる第２の転送単位情報とを含む複数の転送単位情報を生成する生成部２０２と、複数の転送単位情報のそれぞれについて参照データ記憶部から一時記憶部への転送時間を計算する計算部２０３と、複数の転送単位情報のうち転送時間が最小の転送単位情報を選択する選択部２０３と、転送単位情報にしたがう転送命令を含む第２のプログラムを生成する生成部２０４として機能させる。【選択図】図２
2008009730.tif 000002
【特許請求の範囲】
【請求項１】
第１のプログラムを、一時記憶手段と参照データ記憶手段として機能するコンピュータに実行させる第２のプログラムへと変換する手段としてコンピュータを機能させるためのプログラムであって、
前記参照データ記憶手段にある複数の参照領域を参照する前記第１のプログラムを受け取る受取手段と、
前記第１のプログラムを記憶する第１の記憶手段と、
前記第１の記憶手段に記憶された前記第１のプログラムを用いて、それぞれが先頭アドレスと末尾アドレスとを含む複数の参照領域を表す複数の参照領域情報を生成する第１の生成手段と、
前記生成された前記複数の参照領域情報を記憶する第２の記憶手段と、
前記第２の記憶手段に記憶された前記複数の参照領域情報を用いて、前記複数の参照領域にあるデータをどのような単位で前記参照データ記憶手段から前記一時記憶手段へ転送するかを示す第１の転送単位情報と、前記第１の転送単位情報とは単位が異なる第２の転送単位情報と、を含む複数の転送単位情報を生成する第２の生成手段と、
前記生成された前記複数の転送単位情報を記憶する第３の記憶手段と、
前記第３の記憶手段に記憶された前記複数の転送単位情報のそれぞれについて、前記参照データ記憶手段から前記一時記憶手段への転送時間を計算する計算手段と、
前記複数の転送単位情報のうち、前記転送時間が最小の転送単位情報を選択する選択手段と、
前記選択された転送単位情報を記憶する第４の記憶手段と、
前記第４の記憶手段に記憶された転送領単位情報にしたがう転送命令を含む前記第２のプログラムを生成する第３の生成手段と、
前記転送命令が挿入された前記第２のプログラムを記憶する第５の記憶手段として機能させるためのプログラム。
【請求項２】
前記複数の転送単位情報に係る単位は、参照領域単位と、処理対象である参照領域の先頭アドレスと該参照領域より一つ前の参照領域の末尾アドレスとの差が閾値以下の領域をまとめた領域単位と、全ての参照領域をまとめた単位と、を含むことを特徴とする請求項１に記載のプログラム。
【請求項３】
前記一時記憶手段はキャッシュを含み、前記転送命令はプリフェッチ命令であることを特徴とする請求項１または請求項２に記載のプログラム。
【請求項４】
前記一時記憶手段は、ローカルメモリと、該ローカルメモリと前記参照データ記憶手段とのデータ転送を制御するＤＭＡ（Direct Memory Access）コントローラを含み、
前記転送命令はＤＭＡ転送命令であることを特徴とする請求項１または請求項２に記載のプログラム。
【請求項５】
第１のプログラムを、一時記憶手段と参照データ記憶手段として機能するコンピュータに実行させる第２のプログラムへと変換するプログラム変換装置であって、
前記参照データ記憶手段にある複数の参照領域を参照する前記第１のプログラムを受け取る受取手段と、
前記第１のプログラムを記憶する第１の記憶手段と、
前記第１の記憶手段に記憶された前記第１のプログラムを用いて、前記複数の参照領域それぞれの先頭アドレスと末尾アドレスとを含む複数の参照領域情報を生成する第１の生成手段と、
前記生成された前記複数の参照領域情報を記憶する第２の記憶手段と、
前記第２の記憶手段に記憶された前記複数の参照領域を用いて、前記複数の参照領域にあるデータをどのような単位で前記参照データ記憶手段から前記一時記憶手段へ転送するかを示す第１の転送単位情報と、前記第１の転送単位情報とは単位が異なる第２の転送単位情報と、を含む複数の転送単位情報を生成する第２の生成手段と、
前記生成された前記複数の転送単位情報を記憶する第３の記憶手段と、
前記第３の記憶手段に記憶された前記複数の転送単位情報のそれぞれについて、前記参照データ記憶手段から前記一時記憶手段への転送時間を計算する計算手段と、
前記複数の転送単位情報のうち、前記転送時間が最小の転送単位情報を選択する選択手段と、
前記選択された転送単位情報を記憶する第４の記憶手段と、
前記第４の記憶手段に記憶された転送単位情報にしたがう転送命令を含む前記第２のプログラムを生成する第３の生成手段と、
前記転送命令が挿入された前記第２のプログラムを記憶する第５の記憶手段と、を具備することを特徴とするプログラム変換装置。
【請求項６】
前記複数の転送単位情報に係る単位は、参照領域単位と、処理対象である参照領域の先頭アドレスと該参照領域より一つ前の参照領域の末尾アドレスとの差が閾値以下の領域をまとめた領域単位と、全ての参照領域をまとめた単位と、を含むことを特徴とする請求項５に記載のプログラム変換装置。
【請求項７】
前記参照データ記憶手段はキャッシュであり、前記転送命令はプリフェッチ命令であることを特徴とする請求項５または請求項６に記載のプログラム変換装置。
【請求項８】
前記参照データ記憶手段は、ローカルメモリと、該ローカルメモリと前記一時記憶手段とのデータ転送を制御するＤＭＡ（Direct Memory Access）コントローラとで構成され、
前記転送命令はＤＭＡ転送命令であることを特徴とする請求項５または請求項６に記載のプログラム変換装置。
【請求項９】
第１のプログラムを、一時記憶手段と参照データ記憶手段として機能するコンピュータに実行させる第２のプログラムへと変換するプログラム変換方法であって、
前記参照データ記憶手段にある複数の参照領域を参照する第１の受取手段が、前記第１のプログラムを受け取り、
第１の記憶手段が、前記第１のプログラムを記憶し、
第１の生成手段が、前記第１の記憶手段に記憶された前記第１のプログラムを用いて、前記複数の参照領域それぞれの先頭アドレスと末尾アドレスとを含む複数の参照領域情報を生成し、
第２の記憶手段が、前記生成された前記複数の参照領域情報を記憶し、
第２の生成手段が、前記第２の記憶手段に記憶された前記複数の参照領域情報を用いて、前記複数の参照領域にあるデータをどのような単位で前記参照データ記憶手段から前記一時記憶手段へ転送するかを示す第１の転送単位情報と、前記第１の転送単位情報とは単位が異なる第２の転送単位情報と、を含む複数の転送単位情報を生成し、
第３の記憶手段が、前記生成された前記複数の転送単位情報を記憶し、
計算手段が、前記第３の記憶手段に記憶された前記複数の転送単位情報のそれぞれについて、前記参照データ記憶手段から前記一時記憶手段への転送時間を計算し、
選択手段が、前記複数の転送単位情報のうち、前記転送時間が最小の転送単位情報を選択し、
第４の記憶手段が、前記選択された転送単位情報を記憶し、
第３の生成手段が、前記第４の記憶手段に記憶された転送単位情報にしたがう転送命令を含む前記第２のプログラムを生成し、
第５の記憶手段が、前記転送命令が挿入された前記第２のプログラムを記憶することを特徴とする転送命令生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム変換ソフトウェアにおいて、一時記憶装置と主記憶装置との間の転送命令を生成するプログラム変換装置、方法およびプログラムに関する。
【背景技術】
【０００２】
近年の計算機システムでは、プロセッサのデータ処理性能と主記憶装置のデータ供給性能との差を埋めるために、プロセッサと主記憶装置との間に、主記憶装置より少量ではあるがデータ供給性能が高い、キャッシュやローカルメモリなどの一時記憶装置を用意することが多い。このような計算機システムでは、一時記憶装置上に主記憶装置上のデータを一時的に記憶することで、データ供給性能を高め、プロセッサのデータ処理性能を活かすことができるが、一方で、一時記憶装置と主記憶装置との間でデータ転送を行う必要がある。
【０００３】
キャッシュにおいては、キャッシュと主記憶装置との間のデータ転送は自動的に行われるが、プログラムから明示的にデータ転送を指示するプリフェッチ（prefetch）命令を備えることも多い。一方、ローカルメモリにおいては、ローカルメモリと主記憶装置との間のデータ転送は、ＤＭＡ（Direct Memory Access）コントローラなどのデータ転送装置を用いて行う必要があり、プログラムからＤＭＡ転送命令を用いて明示的にデータ転送を指示しなければならない。
【０００４】
しかし、このようなデータ転送には処理時間を要するため、プロセッサがデータを参照する際にデータ転送を開始した場合、プロセッサはデータ転送の処理時間だけ待機する必要がある。その結果、プロセッサの性能が低下するという問題が発生する。そのため、プロセッサが参照するデータを予測し、プロセッサがデータを参照する前に、データ転送を開始し完了する必要がある。
【０００５】
そこで、このような計算機システム用のコンパイラなどのプログラム変換ソフトウェアでは、プロセッサのデータ参照に先立ち、プログラム中に転送命令を挿入する。プログラム変換ソフトウェアは、転送命令を挿入するため、入力プログラムからプロセッサが参照する参照領域を解析する。一般に、データ参照は配列データの参照による部分が大きいため、入力プログラムの解析では、配列データや関連するループの解析が行われる。例えば、データ転送時間とループの処理時間とから、ループを分割し転送命令を挿入する手法がある（例えば、特許文献１参照）。
【０００６】
一方、データ転送の処理時間は、初期遅延時間と、一時記憶装置と主記憶装置との間のデータ転送レートから、
データ転送処理時間 ＝ 初期遅延時間＋（データ転送サイズ ／ データ転送レート）  
で表されることが広く知られている。データ転送サイズが小さい場合には、データ転送処理時間の多くは初期遅延時間で占められるため、実際のデータ転送レートは、一時記憶装置と主記憶装置との間のデータ転送レートよりも大きく低下してしまう。
【特許文献１】特開平１０−２８３１９２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来の転送命令生成方式では、データ転送サイズの変化による実際のデータ転送レートの変化を考慮しておらず、データ転送サイズが小さい場合、データ転送処理時間中の初期遅延時間が占める割合が大きくなり、実際のデータ転送レートが低下するという問題がある。
【０００８】
この発明は、上述した事情を考慮してなされたものであり、実際のデータ転送レートを高くするプログラム変換装置、方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述の課題を解決するため、本発明の転送命令プログラムは、第１のプログラムを、一時記憶手段と参照データ記憶手段として機能するコンピュータに実行させる第２のプログラムへと変換する手段としてコンピュータを機能させるためのプログラムであって、前記参照データ記憶手段にある複数の参照領域を参照する前記第１のプログラムを受け取る受取手段と、前記第１のプログラムを記憶する第１の記憶手段と、前記第１の記憶手段に記憶された前記第１のプログラムを用いて、それぞれが先頭アドレスと末尾アドレスとを含む複数の参照領域を表す複数の参照領域情報を生成する第１の生成手段と、前記生成された前記複数の参照領域情報を記憶する第２の記憶手段と、前記第２の記憶手段に記憶された前記複数の参照領域情報を用いて、前記複数の参照領域にあるデータをどのような単位で前記参照データ記憶手段から前記一時記憶手段へ転送するかを示す第１の転送単位情報と、前記第１の転送単位情報とは単位が異なる第２の転送単位情報と、を含む複数の転送単位情報を生成する第２の生成手段と、前記生成された前記複数の転送単位情報を記憶する第３の記憶手段と、前記第３の記憶手段に記憶された前記複数の転送単位情報のそれぞれについて、前記参照データ記憶手段から前記一時記憶手段への転送時間を計算する計算手段と、前記複数の転送単位情報のうち、前記転送時間が最小の転送単位情報を選択する選択手段と、前記選択された転送単位情報を記憶する第４の記憶手段と、前記第４の記憶手段に記憶された転送領単位情報にしたがう転送命令を含む前記第２のプログラムを生成する第３の生成手段と、前記転送命令が挿入された前記第２のプログラムを記憶する第５の記憶手段として機能させるためのものである。
【発明の効果】
【００１０】
本発明のプログラム変換装置、方法およびプログラムによれば、実際のデータ転送レートを高くすることができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照しながら本発明の実施形態に係るプログラム変換装置、方法およびプログラムについて詳細に説明する。  
本実施形態では、プロセッサ、一時記憶装置、データ転送装置、主記憶装置で構成される計算機システム用のプログラムを生成するプログラム変換ソフトウェアの、データ転送命令生成方式について説明する。プログラム変換ソフトウェアとは、例えば、コンパイラである。本実施形態では、コンパイラが生成プログラム中に挿入する転送命令の内容に特徴がある。
【００１２】
本実施形態の特徴的な点は、簡潔に言えば以下の２点である。  
１．複数のデータ転送方式を自動生成する。  
２．生成した複数のデータ転送方式の処理時間を予測し、処理時間が最小であるものを選択する。
【００１３】
また、自動生成するデータ転送方式には、例えば、以下の種類がある。  
１．参照領域（参照するデータが記憶されている領域）ごとに転送する。  
２．参照領域間の間隔が閾値以下のものは、ひとつにまとめて転送する。  
３．全ての参照領域を、ひとつにまとめて転送する。  
４．全ての参照領域を半分ずつ転送する。
【００１４】
一般に、データ転送サイズの大きさによって転送性能が変化し、サイズが大きいほど性能が良くなる。そのため、使用しない部分があっても、まとめて転送したほうが速い場合がある。例えば、参照領域がばらばらに散っている場合には「１．参照領域ごとに転送する」方式が、参照領域間の間隔が全体的に小さい場合には「３．全ての参照領域を、ひとつにまとめて転送する」方式が、間隔が小さいところと散っているところが混在している場合には「２．参照領域間の間隔が閾値以下のものは、ひとつにまとめて転送する」方式が速くなる。
【００１５】
本実施形態は、従来の転送命令生成方式では考慮されていなかった実際のデータ転送レートの変化を考慮し、処理時間が最も小さいデータ転送方式に基づいた転送命令を挿入する方式を提供する。
【００１６】
まず、本実施例のプログラム変換ソフトウェアが対象とする計算機について図１を参照して説明する。図１は、本実施形態のプログラム変換装置が生成した転送命令を受け取り、この転送命令にしたがってデータ転送を実行する計算機のブロック図である。  
計算機は、例えば、プロセッサ１０１、一時記憶装置１０２、データ転送装置１０３、主記憶装置１０４、バス１０５、入出力装置１０６を備えている。  
プロセッサ１０１は、入出力装置１０６から主記憶装置１０４に入力したデータを、一時記憶装置１０２、データ転送装置１０３、バス１０５を介して受け取り、データに含まれる命令に従って演算操作を実行する。
【００１７】
一時記憶装置１０２は、一時的な、過渡的なデータを記憶するための装置である。一時記憶装置１０２は、プロセッサ１０１と主記憶装置１０４との間に配置される。一時記憶装置１０２は、主記憶装置１０４からプロセッサ１０１へのデータの読み込みを高速化する。一時記憶装置１０２は、具体的には、例えば、キャッシュやローカルメモリである。
【００１８】
データ転送装置１０３は、一時記憶装置１０２と主記憶装置１０４との間でデータ転送を行う。データ転送装置１０３は、プログラムに明示的にデータ転送を指示するプリフェッチ命令が含まれている場合には、この命令にしたがってデータを転送する。この場合、一時記憶装置１０２はキャッシュである。また、データ転送装置１０３がＤＭＡコントローラである場合には、データ転送装置１０３はプログラムからＤＭＡ転送命令を用いて明示的にデータ転送を指示する。この場合、一時記憶装置１０２はローカルメモリである。
【００１９】
主記憶装置１０４は、計算機に搭載されている記憶装置の中で、プロセッサ１０１から直接データを読み書きすることができる装置である。主記憶装置１０４は、例えば、ＯＳ（オペレーティングシステム）、アプリケーション、データ、周辺機器を制御するドライバなどを読み込む。
【００２０】
バス１０５は、計算機の各構成装置間で命令やデータを転送するための伝送路である。バス１０５は、データ転送装置１０３、主記憶装置１０４、入出力装置１０６の間で命令やデータの転送を行う。
【００２１】
入出力装置１０６は、本実施形態のプログラム変換装置（後に図２に示す）が出力するプログラムを受け取る。また、入出力装置１０６は、転送命令に基づいて計算機で実行したプログラムの実行結果を出力する。
【００２２】
次に、図１の計算機で実行されるプログラムに組み込む転送命令を生成する、プログラム変換装置について図２を参照して説明する。  
プログラム変換装置２００は、参照領域解析部２０１、データ転送方式解析部２０２、データ転送方式選択部２０３、転送命令挿入部２０４を備えている。
【００２３】
参照領域解析部２０１は、図１の計算機で実行される入力プログラムを受け取り、このプログラムを記憶し、記憶されたプログラムを解析し、複数の参照領域情報を生成し、記憶する。参照領域情報は、複数の参照領域からなる。参照領域は、先頭アドレスと末尾アドレスとで指定される領域である。参照領域情報は、プロセッサがデータをどのような単位でアクセスするかを示すものである。参照領域解析部２０１が受け取る入力プログラムについては後に図３を参照して説明する。参照領域情報については後に図４を参照して説明する。
【００２４】
データ転送方式解析部２０２は、参照領域解析部２０１で生成され記憶されている参照領域情報を解析し、複数の転送単位情報を生成し記憶する。転送単位情報は、複数の参照領域にあるデータをどのような単位で一時記憶装置１０２からプロセッサ１０１へ転送するかを示すものである。データ転送方式解析部２０２の動作の詳細については後に図５、図６を参照して説明する。転送単位情報については後に図７を参照して説明する。
【００２５】
データ転送方式選択部２０３は、データ転送方式解析部２０２で生成された複数の転送単位情報に１対１に対応する複数のデータ転送方式の性能を予測し、処理時間が最も小さいデータ転送方式を選択する。データ転送方式選択部２０３は、データ転送方式解析部２０２で生成され記憶されている複数の転送単位情報のそれぞれについて、一時記憶装置１０２からプロセッサ１０１への転送時間を計算し、これら複数の転送単位情報のうち、転送時間が最小の転送単位情報を選択し記憶する。データ転送方式選択部２０３の動作の詳細については後に図８を参照して説明する。データ転送方式選択部２０３が計算するデータ転送処理時間については後に図１３を参照して説明する。
【００２６】
転送命令挿入部２０４は、データ転送方式選択部２０３で選択され記憶されたデータ転送方式に対応する転送命令を入力プログラムに挿入しプログラムを生成して記憶し、出力プログラムとして出力する。この出力プログラムは、図１の入出力装置１０６が受け取る。転送命令が挿入された出力プログラムについては後に図１４を参照して説明する。
【００２７】
次に、参照領域解析部２０１が受け取る入力プログラムの一例について図３を参照して説明する。図３の入力プログラム３０１は、Ｃ言語で書かれているが、他のプログラミング言語や、オブジェクトコードであっても良い。  
入力プログラム３０１は、多重ループ３０３、３０４を含み、各多重ループ３０３、３０４内では、配列変数Ａを参照している。また、転送命令挿入部２０４によって挿入される転送命令は、転送命令挿入箇所３０２に示される位置に挿入される。
【００２８】
入力プログラム３０１は、配列変数Ａの各次元の配列要素数をＳＩＺＥ、各ループの繰り返し回数をＮ、多重ループ３０４における参照配列要素のインデックス加算値をＳＫＩＰと表現し、図３でのそれらの値は、ＳＩＺＥ＝１００、Ｎ＝４、ＳＫＩＰ＝８である。
【００２９】
次に、参照領域解析部２０１が解析した結果得られる参照領域情報の一例について図４を参照して説明する。  
参照領域情報４０１の各参照領域には、参照領域の先頭アドレスと末尾アドレスが記録される。参照領域情報４０１は入力プログラム３０１の配列変数Ａの先頭アドレスが１００００番地である場合の例を示しており、多重ループ３０３にて参照される参照領域は、参照領域４０２，４０３，４０４，４０５に、多重ループ３０４にて参照される参照領域は、参照領域４０６，４０７，４０８，４０９に、順に記録される。
【００３０】
次に、データ転送方式解析部２０２の動作の一例について図５、図６、図７を参照して説明する。  
図５は、参照領域情報４０１に基づいて複数のデータ転送方式を生成する、データ転送方式解析部２０２の処理の一例を示すフローチャートである。  
始めに、参照領域ごとにデータ転送を行うデータ転送方式の転送単位情報を生成する（ステップＳ５０１）。次に、参照領域間の間隔がある閾値以下の領域をまとめてデータ転送を行うデータ転送方式の転送単位情報を生成する（ステップＳ５０２）。最後に、全ての参照領域をまとめてデータ転送を行うデータ転送方式の転送単位情報を生成する（ステップＳ５０３）。生成する転送単位情報は、参照領域情報４０１と同じ形式であり、先頭アドレスと末尾アドレスの組で表されるデータ転送単位を複数保持する。
【００３１】
参照領域ごとにデータ転送を行うデータ転送方式では、生成する転送単位情報は、参照領域情報４０１と同一内容である。また、全ての参照領域をまとめてデータ転送を行うデータ転送方式では、生成する転送単位情報は、参照領域情報４０１に含まれる最小の先頭アドレスと最大の末尾アドレスの組で表される１つのデータ転送単位であり、例えば、図４の例では、その先頭アドレスは１１０１０、末尾アドレスは１１３２１である。
【００３２】
データ転送方式解析部２０２が生成する、参照領域間の間隔がある閾値以下の領域をまとめてデータ転送を行うデータ転送方式では、次の図６に示す処理フローを用いて転送単位情報を生成する。
【００３３】
次に、参照領域間の間隔がある閾値以下の領域をまとめてデータ転送を行うデータ転送方式を生成する処理の一例について図６を参照して説明する。  
始めに、参照領域情報に含まれる参照領域を先頭アドレスの昇順でソートする（ステップＳ６０１）。次に、参照領域情報に含まれる全ての参照領域を処理したかどうかを確認し（ステップＳ６０２）、処理が完了した場合には終了する。処理が完了していない場合には、処理対象の参照領域と一つ前の参照領域の、２つの参照領域間の間隔がある閾値以下であるか確認し、閾値以下でない場合にはステップＳ６０２に進み、次の参照領域の処理に進む（ステップＳ６０３）。
【００３４】
２つの参照領域間の間隔は、一つ前の参照領域の末尾アドレスと処理対象の参照領域の先頭アドレスとの差で表すことができる。また、閾値には、例えば、処理対象の参照領域の先頭アドレスと末尾アドレスとの差である参照サイズの２倍など、参照領域の参照サイズに係数をかけたものを用いることができる。
【００３５】
２つの参照領域間の間隔がある閾値以下である場合には、２つの参照領域を融合し、融合した参照領域の先頭アドレスには、一つ前の参照領域の先頭アドレスを、末尾アドレスには、処理対象の参照領域の末尾アドレスを設定する（ステップＳ６０４）。この様に融合された参照領域情報を、転送単位情報として用いる。
【００３６】
次に、参照領域情報４０１から、参照領域間の間隔がある閾値以下の領域をまとめてデータ転送を行うデータ転送方式に対応して生成された、転送単位情報について図７を参照して説明する。  
図７の転送単位情報７０１は、参照領域情報４０２と参照領域情報４０６とを融合したデータ転送単位７０２と、参照領域情報４０３と参照領域情報４０７とを融合したデータ転送単位７０３と、参照領域情報４０４と参照領域情報４０８とを融合したデータ転送単位７０４と、参照領域情報４０５と４０９を融合したデータ転送単位７０５を含む。
【００３７】
次に、図２のデータ転送方式選択部２０３の動作の一例について図８を参照して説明する。  
始めに、最小処理時間を無限大に、選択データ転送方式を無選択に初期化する（ステップＳ８０１）。次に、全てのデータ転送方式を処理したかどうかを確認し（ステップＳ８０２）、処理が完了した場合には終了する。処理が完了していない場合には、処理対象のデータ転送方式の処理時間を計算する（ステップＳ８０３）。  
データ転送方式の処理時間は、処理対象のデータ転送方式の転送単位情報に含まれるデータ転送単位から計算することができる。すなわち、データ転送方式の処理時間は、各データ転送単位から、
データ転送処理時間 
＝ 初期遅延時間＋（（末尾アドレス−先頭アドレス＋１） ／ データ転送レート）
により求めることができる。データ転送方式の処理時間は、含まれる全データ転送単位のデータ転送処理時間の総和となる。
【００３８】
続いて、計算された処理対象のデータ転送方式の処理時間が、最小処理時間よりも小さいかどうかを確認し（ステップＳ８０４）、小さくない場合には、ステップＳ８０２に戻り、次のデータ転送方式の処理に進む。計算された処理時間が最小処理時間よりも小さい場合には、最小処理時間に、計算された処理対象のデータ転送方式の処理時間を代入し、選択データ転送方式として、処理対象のデータ転送方式を設定する（ステップＳ８０５）。
【００３９】
次に、参照領域情報、転送単位情報のいくつかの具体例を図９から図１２に示す。  
図９は、図３の入力プログラム３０１をＳＩＺＥ＝５０、Ｎ＝４、ＳＫＩＰ＝８と変更した場合の参照領域解析部２０１が生成する参照領域情報９０１を示す。  
図１０は、図９の参照領域情報９０１から、参照領域間の間隔がある閾値以下の領域をまとめてデータ転送を行うデータ転送方式にて生成された、転送単位情報１００１を示す。
【００４０】
図１１は、入力プログラム３０１をＳＩＺＥ＝３００、Ｎ＝６４、ＳＫＩＰ＝１２８と変更した場合の参照領域情報１１０１を示す。  
図１２は、図１１の参照領域情報１１０１から、参照領域間の間隔がある閾値以下の領域をまとめてデータ転送を行うデータ転送方式にて生成された、転送単位情報１２０１を示す。
【００４１】
次に、具体例として図３、図９、図１１に示した各種入力プログラムにおける、データ転送方式選択部２０３が計算するデータ転送処理時間について図１３を参照して説明する。図１３のデータ転送処理時間表１３０１では、参照領域ごとにデータ転送を行うデータ転送方式を「個別」、参照領域間の間隔がある閾値以下の領域をまとめてデータ転送を行うデータ転送方式を「閾値融合」、全てのデータ転送単位をまとめてデータ転送を行うデータ転送方式を「全融合」と表す。  
また、図３の入力プログラム３０１がＳＩＺＥ＝１００、Ｎ＝４、ＳＫＩＰ＝８である場合のデータ転送処理時間１３０２、入力プログラムがＳＩＺＥ＝５０、Ｎ＝４、ＳＫＩＰ＝８である場合（図９）のデータ転送処理時間１３０３、入力プログラムがＳＩＺＥ＝３００、Ｎ＝６４、ＳＫＩＰ＝１２８である場合（図１１）のデータ転送処理時間１３０４の各々に対して、各データ転送方式における処理時間を示す。さらに、データ転送方式選択部２０３が行う図８に示した処理フローによって選択されたデータ転送方式をアンダーラインで示す。各データ転送方式の処理時間は、データ転送の初期遅延時間が１００［ｎｓ］、データ転送レートが０．５×１０９［Ｂ／ｓ］として計算した値である。
【００４２】
データ転送処理時間表１３０１で示される様に、各種入力プログラムによってデータ転送処理時間が最も小さいデータ転送方式が変化し、データ転送処理時間１３０２では、参照領域間の間隔がある閾値以下の領域をまとめてデータ転送を行うデータ転送方式が選択される。また、データ転送処理時間１３０３では、全てのデータ転送単位をまとめてデータ転送を行うデータ転送方式が選択される。そして、データ転送処理時間１３０４では、参照領域ごとにデータ転送を行うデータ転送方式が選択される。
【００４３】
この様に選択されたデータ転送方式の転送単位情報に基づき、転送命令挿入部２０４は、プログラム中に転送命令を挿入し、出力プログラムを生成する。
【００４４】
次に、データ転送方式として参照領域間の間隔がある閾値以下の領域をまとめてデータ転送を行うデータ転送方式が選択された場合の、出力プログラムの例について図１４を参照して説明する。図１４の出力プログラム１４０１は、Ｃ言語で書かれているが、他のプログラミング言語や、オブジェクトコードであっても良い。
【００４５】
出力プログラム１４０１には、図７の転送単位情報７０１にしたがって、転送命令群１４０２が挿入される。転送命令群１４０２中の転送命令であるprefetch命令は、第一引数の先頭アドレスから第二引数の末尾アドレスまでを一時記憶装置に転送する命令である。一時記憶装置がローカルメモリで、データ転送装置がＤＭＡコントローラの場合には、prefetch命令の代わりに、ＤＭＡ転送命令を用いれば良い。
【００４６】
以上に示した実施形態によれば、実際のデータ転送レートの変化を考慮し、処理時間が最も小さいデータ転送方式に基づいた転送命令を挿入することで、実際のデータ転送レートを高くすることができる。例えば、複数のデータ転送単位のデータ転送サイズが小さい場合であっても、転送領域単位間の間隔が小さい場合には、転送領域単位を融合し、より大きいデータ転送サイズでデータ転送を行うことで、実際のデータ転送レートを高くすることができる。
【００４７】
また、複数のデータ転送方式の処理時間を比較し、処理時間が最も小さいデータ転送方式を選択することにより、入力プログラムの参照領域に応じて、適切なデータ転送方式に基づいてデータ転送を行うことができる。
【００４８】
また、上述の実施形態の中で示した処理手順に示された指示は、ソフトウェアであるプログラムに基づいて実行されることが可能である。汎用の計算機システムが、このプログラムを予め記憶しておき、このプログラムを読み込むことにより、上述した実施形態のプログラム変換装置による効果と同様な効果を得ることも可能である。上述の実施形態で記述された指示は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フレキシブルディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ±Ｒ、ＤＶＤ±ＲＷなど）、半導体メモリ、又はこれに類する記録媒体に記録される。コンピュータまたは組み込みシステムが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。コンピュータは、この記録媒体からプログラムを読み込み、このプログラムに基づいてプログラムに記述されている指示をＣＰＵで実行させれば、上述した実施形態のプログラム変換装置と同様な動作を実現することができる。もちろん、コンピュータがプログラムを取得する場合又は読み込む場合はネットワークを通じて取得又は読み込んでもよい。  
また、記憶媒体からコンピュータや組み込みシステムにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳや、データベース管理ソフト、ネットワーク等のＭＷ（ミドルウェア）等が本実施形態を実現するための各処理の一部を実行してもよい。  
さらに、本願発明における記憶媒体は、コンピュータあるいは組み込みシステムと独立した媒体に限らず、ＬＡＮやインターネット等により伝達されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。  
また、記憶媒体は１つに限られず、複数の媒体から本実施形態における処理が実行される場合も、本発明における記憶媒体に含まれ、媒体の構成は何れの構成であってもよい。
【００４９】
なお、本願発明におけるコンピュータまたは組み込みシステムは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するためのものであって、パソコン、マイコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であってもよい。  
また、本願発明の実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の実施形態における機能を実現することが可能な機器、装置を総称している。
【００５０】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００５１】
【図１】本実施形態のプログラム変換装置が生成した転送命令を受け取る計算装置のブロック図。
【図２】本実施形態のプログラム変換装置のブロック図。
【図３】図２の参照領域解析部が受け取る入力プログラムの一例を示す図。
【図４】図２の参照領域解析部の解析結果である参照領域情報の一例を示す図。
【図５】図２のデータ転送方式解析部の動作の一例を示すフローチャート。
【図６】図２のデータ転送方式解析部の動作の一例を示すフローチャート。
【図７】図４の参照領域情報から図２のデータ転送方式解析部が生成した転送単位情報を示す図。
【図８】図２のデータ転送方式選択部の動作の一例を示すフローチャート。
【図９】参照領域情報の一例を示す図。
【図１０】転送単位情報の一例を示す図。
【図１１】参照領域情報の一例を示す図。
【図１２】転送単位情報の一例を示す図。
【図１３】プログラムに応じて図２のデータ転送方式選択部が計算するデータ転送処理時間を示す図。
【図１４】出力プログラムの一例を示す図。
【符号の説明】
【００５２】
１０１・・・プロセッサ、１０２・・・一時記憶装置、１０３・・・データ転送装置、１０４・・・主記憶装置、１０５・・・バス、１０６・・・入出力装置、２００・・・プログラム変換装置、２０１・・・参照領域解析部、２０２・・・データ転送方式解析部、２０３・・・データ転送方式選択部、２０４・・・転送命令挿入部、３０１・・・入力プログラム、３０２・・・転送命令挿入箇所、３０３、３０４・・・多重ループ、４０１、９０１、１１０１・・・参照領域情報、４０２、４０３、４０４、４０５、４０６、４０７、４０８、４０９・・・参照領域、７０１、１２０１・・・転送単位情報、７０２、７０３、７０４、７０５、１００１・・・データ転送単位、１３０１・・・データ転送処理時間表、１３０２、１３０３、１３０４・・・データ転送処理時間、１４０１・・・出力プログラム、１４０２・・・転送命令群。
【図１】
2008009730.tif 000003
【図２】
2008009730.tif 000004
【図３】
2008009730.tif 000005
【図４】
2008009730.tif 000006
【図５】
2008009730.tif 000007
【図６】
2008009730.tif 000008
【図７】
2008009730.tif 000009
【図８】
2008009730.tif 000010
【図９】
2008009730.tif 000011
【図１０】
2008009730.tif 000012
【図１１】
2008009730.tif 000013
【図１２】
2008009730.tif 000014
【図１３】
2008009730.tif 000015
【図１４】
2008009730.tif 000016