(57)【要約】  メモリ帯域の異なる複数のメモリを搭載したシステムで実行されるプログラムの実行時間の効率化を図ることができるデータ配置先決定装置等が開示される。係るデータ配置先決定装置は、対象プログラムのメモリに対する要求帯域と要求サイズを取得するプログラム情報取得手段と、配置先の候補メモリのメモリ帯域とメモリサイズを取得するシステム情報取得手段と、要求帯域に基づく優先度とメモリ帯域に基づく優先度を設定する優先度設定手段と、メモリサイズとメモリ帯域とを超過しない範囲で、設定された優先度に基づいて対象プログラムのデータの配置先を決定する第１の配置先決定手段と、配置先未決定プログラムに対して、メモリサイズを超過しない範囲で、設定された優先度と対象プログラムの要求帯域と候補メモリのメモリ帯域とに基づいて配置先を決定する第２の配置先決定手段とを備える。
2016157826.tif 000002
【特許請求の範囲】
【請求項１】
使用するデータの配置先の決定対象である対象プログラムの各々についての、メモリに対する要求帯域と要求サイズとを取得するプログラム情報取得手段と、
前記対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズとを取得するシステム情報取得手段と、
前記対象プログラムの各々に対して前記要求帯域に基づく優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく優先度を設定する優先度設定手段と、
前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記優先度設定手段が設定した前記優先度に基づいて前記候補メモリの中から前記対象プログラムの各々で使用されるデータの配置先を決定する第１の配置先決定手段と、
前記第１の配置先決定手段によって配置先が決定されていない配置先未決定プログラムの配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定プログラムの前記優先度と前記対象プログラムの要求帯域と前記候補メモリのメモリ帯域とに基づいて、決定する第２の配置先決定手段とを備えた
データ配置先決定装置。
【請求項２】
前記第２の配置先決定手段は、帯域超過による前記対象プログラムの総実行時間の増加を最小化する候補メモリを、前記配置先未決定プログラムの配置先に決定する
請求項１に記載のデータ配置先決定装置。
【請求項３】
前記プログラム情報取得手段は、前記対象プログラムを分割した部分処理の各々についての、前記要求帯域および前記要求サイズに関する情報を少なくとも含むプログラム情報を取得し、
前記優先度設定手段は、前記対象プログラムの前記部分処理の各々に対して前記要求帯域に基づく前記優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく前記優先度を設定し、
前記第１の配置先決定手段は、前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記優先度設定手段が設定した優先度に基づいて、前記対象プログラムの前記部分処理ごとにデータの配置先を決定し、
前記第２の配置先決定手段は、前記第１の配置先決定手段によって配置先が決定されていない配置先未決定の部分処理の配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定の部分処理の前記優先度と前記部分処理の前記要求帯域と前記候補メモリの前記メモリ帯域とに基づいて、決定する
請求項１または請求項２に記載のデータ配置先決定装置。
【請求項４】
前記プログラム情報取得手段は、前記対象プログラムを分割した部分処理の各々についての、前記要求帯域および使用する変数に関する情報を少なくとも含むプログラム情報を取得し、
前記優先度設定手段は、前記対象プログラムの前記部分処理で使用される前記変数の各々に対して前記要求帯域に基づく前記優先度を設定するとともに、前記候補メモリの各々に対してメモリ帯域に基づく前記優先度を設定し、
前記第１の配置先決定手段は、前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記優先度設定手段が設定した前記優先度に基づいて、前記対象プログラムの部分処理で使用される前記変数の各々の配置先を決定し、
前記第２の配置先決定手段は、前記第１の配置先決定手段によって配置先が決定されていない配置先未決定変数の配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定変数の前記優先度と前記変数を使用する前記部分処理の前記要求帯域と前記候補メモリの前記メモリ帯域とに基づいて、決定する
請求項１または請求項２に記載のデータ配置先決定装置。
【請求項５】
前記第２の配置先決定手段は、前記配置先未決定プログラム、前記配置先未決定の部分処理または前記配置先未決定変数を配置可能な前記候補メモリの各々において、配置後の当該候補メモリにおけるメモリ帯域を超過した度合いを示すメモリ帯域超過度に基づいて、前記配置先未決定プログラム、前記配置先未決定の部分処理または前記配置先未決定変数の配置先を決定する
請求項４に記載のデータ配置先決定装置。
【請求項６】
前記第２の配置先決定手段は、前記配置先未決定プログラム、前記配置先未決定の部分処理または前記配置先未決定変数を配置可能な前記候補メモリの各々について、配置後の当該候補メモリにおけるメモリ帯域超過度に応じた当該候補メモリをデータの配置先とする前記対象プログラムの総実行時間の増加割合を算出し、前記増加割合の最も小さい候補メモリを配置先に決定する
請求項５に記載のデータ配置先決定装置。
【請求項７】
前記第２の配置先決定手段は、前記配置先未決定プログラム、前記配置先未決定の部分処理または前記配置先未決定変数を配置可能な前記候補メモリの各々について、配置後の当該候補メモリにおけるメモリ帯域超過度と当該候補メモリをデータの配置先とする前記対象プログラムの実行時間とを用いて、当該候補メモリをデータの配置先とする前記対象プログラムの総実行時間の増加割合を算出し、前記増加割合の最も小さい候補メモリを配置先に決定する
請求項５または請求項６に記載のデータ配置先決定装置。
【請求項８】
決定された配置先を出力する出力手段を備えた
請求項１から請求項７のうちのいずれか１項に記載のデータ配置先決定装置。
【請求項９】
情報処理装置が、
使用するデータの配置先の決定対象である対象プログラムの各々についての、メモリに対する要求帯域と要求サイズ、および、前記対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズとを取得し、
前記対象プログラムの各々に対して前記要求帯域に基づく優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく優先度を設定し、
前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記対象プログラムの優先度と前記候補メモリの前記優先度とに基づいて、前記候補メモリの中から前記対象プログラムの各々で使用されるデータの配置先を決定し、
配置先が決定されていない配置先未決定プログラムの配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定プログラムの前記優先度と前記対象プログラムの要求帯域と前記候補メモリのメモリ帯域とに基づいて、決定する
データ配置先決定方法。
【請求項１０】
コンピュータに、
使用するデータの配置先の決定対象である対象プログラムの各々についての、メモリに対する要求帯域と要求サイズを取得する処理、
前記対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズとを取得する処理、
前記対象プログラムの各々に対して前記要求帯域に基づく優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく優先度を設定する処理、
前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記対象プログラムの前記優先度と前記候補メモリの前記優先度とに基づいて、前記候補メモリの中から前記対象プログラムの各々で使用されるデータの配置先を決定する処理、および
配置先が決定されていない配置先未決定プログラムの配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定プログラムの前記優先度と前記対象プログラムの要求帯域と前記候補メモリのメモリ帯域とに基づいて、決定する処理
を実行させるデータ配置先決定プログラムを記録するプログラム記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムで使用されるデータの配置先メモリを決定するデータ配置先決定装置、データ配置先決定方法およびデータ配置先決定プログラムの記録媒体に関する。
【背景技術】
【０００２】
通常、複数のメモリが接続された計算機システムでは、プログラムで使用されるデータ（変数やオブジェクト等）をいずれのメモリに配置するかを決定する処理が行われている。【０００３】
複数のメモリの中からプログラムで使用されるデータの配置先を決定する技術に関連して、例えば、特許文献１〜特許文献４に記載された技術がある。【０００４】
例えば、特許文献１には、プログラムの優先度を当該プログラムの関数毎や変数毎や定数毎のアクセス回数を基に決定し、決定した優先度に従い、アクセス速度の速いメモリから順にメモリサイズの許す範囲で各プログラムを配置する方法が記載されている。【０００５】
また、例えば特許文献２には、プログラムファイルの機械語コードを機能処理単位でグループ化したオブジェクトファイルに対して、各機能処理の実行頻度を基に配置先メモリを決定する方法が記載されている。【０００６】
また、例えば特許文献３には、タスク優先度に応じたオブジェクトの重み付け優先度と、配置指示情報に基づく各オブジェクトの各配置可能領域に対する配置優先度とに基づいて、ソースコードの各オブジェクトを配置する方法が記載されている。【０００７】
また、例えば特許文献４には、実行プログラムの関数のうち実行回数の多い関数や実行時間の長い関数をメモリ容量が許す限り読み込み速度の速いメモリに配置する方法が記載されている。また、特許文献４には、プロファイラが算出した、分配配置可能な全ての組み合わせに対する総実行時間を基に配置先を決定する方法も記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−００３２６８号公報
【特許文献２】特開２００３−３３０７３０号公報
【特許文献３】特開２０１１−７６５１６号公報
【特許文献４】特開２０１３−１６１１１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
複数種類のメモリを搭載するシステムでは、メモリの性能が異なる場合がある。ここで、メモリの性能としては、例えば、メモリサイズ（容量）やレイテンシやメモリ帯域といった複数種の項目が挙げられる。【００１０】
近年、メモリ帯域の異なる複数種のメモリを搭載するような計算機システムが開発されている。このようなメモリ帯域の異なる複数のメモリと接続されるシステムの場合、同時実行されるプログラムのデータをどのメモリに配置するかによって、同時実行されるプログラムの総実行時間が変わってしまうことがある。【００１１】
このため、プログラムがデータの配置先メモリに対して要求する帯域（以下、要求帯域という）が、データの配置先メモリのメモリ帯域を超過しないように、または超過した場合であっても超過による総実行時間の増加がなるべく小さくなるように、データの配置先を決定することは重要である。【００１２】
しかし、特許文献１〜４に記載された方法のいずれも、同時実行されるプログラムからの要求帯域を考慮してデータの配置先を決定するものではない。【００１３】
例えば、特許文献１〜３に記載の方法は、配置対象とされたプログラムや機能処理やオブジェクトからの要求帯域や同時実行性について何ら考慮していない。例えば、特許文献１〜３に記載されているような、変数等へのアクセス回数が多いプログラムや実行頻度が高い機能単位や優先度が高いタスクオブジェクトから、順に、性能のよいメモリに配置する方法では、要求帯域の高いプログラムで使用されるデータが性能の低いメモリに配置される可能性がある。【００１４】
なお、特許文献４には、関数の総実行時間を最小にするように読み込み速度の異なる２つのメモリに対する関数の分配配置を決定する例が示されている。メモリ帯域が要求帯域を超過したときとしていないときとでは同時実行されるプログラムの総実行時間は変動するが、特許文献４には、要求帯域がメモリ帯域を超過したときの同時実行されるプログラムの総実行時間の増加時間については何ら考慮されていない。なお、要求帯域がメモリ帯域を超過したときの同時実行されるプログラムの総実行時間の増加時間を、読み込み速度の遅いメモリでの実行時間とメモリ間の読み込み速度の比だけで算出するのは困難である。【００１５】
そこで、本発明は、上述した課題に鑑みて、メモリ帯域の異なる複数のメモリを搭載したシステムで実行されるプログラムの実行時間の効率化を図ることを目的とする。
【課題を解決するための手段】
【００１６】
本発明に係る第１のデータ配置先決定装置は、使用するデータの配置先の決定対象である対象プログラムの各々についての、メモリに対する要求帯域と要求サイズとを取得するプログラム情報取得手段と、前記対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズとを取得するシステム情報取得手段と、前記対象プログラムの各々に対して前記要求帯域に基づく優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく優先度を設定する優先度設定手段と、前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、優先度設定手段が設定した前記優先度に基づいて前記候補メモリの中から前記対象プログラムの各々で使用されるデータの配置先を決定する第１の配置先決定手段と、第１の配置先決定手段によって配置先が決定されていない配置先未決定プログラムの配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定プログラムの前記優先度と前記対象プログラムの要求帯域と前記候補メモリのメモリ帯域とに基づいて、決定する第２の配置先決定手段とを備える。【００１７】
本発明に係る第１のデータ配置先決定方法は、情報処理装置が、使用するデータの配置先の決定対象である対象プログラムの各々についての、メモリに対する要求帯域と要求サイズ、および、前記対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズを取得し、前記対象プログラムの各々に対して前記要求帯域に基づく優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく優先度を設定し、前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記対象プログラムの優先度と前記候補メモリの前記優先度とに基づいて、前記候補メモリの中から前記対象プログラムの各々で使用されるデータの配置先を決定し、配置先が決定されていない配置先未決定プログラムの配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定プログラムの前記優先度と前記対象プログラムの要求帯域と前記候補メモリのメモリ帯域とに基づいて、決定する。【００１８】
本発明に係る第１のデータ配置先決定プログラム記録媒体は、コンピュータに、使用するデータの配置先の決定対象である対象プログラムの各々についての、メモリに対する要求帯域と要求サイズを取得する処理、前記対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズとを取得する処理、前記対象プログラムの各々に対して前記要求帯域に基づく優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく優先度を設定する処理、前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記対象プログラムの前記優先度と前記候補メモリの前記優先度とに基づいて、前記候補メモリの中から前記対象プログラムの各々で使用されるデータの配置先を決定する処理、および配置先が決定されていない配置先未決定プログラムの配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定プログラムの前記優先度と前記対象プログラムの要求帯域と前記候補メモリのメモリ帯域とに基づいて、決定する処理を実行させるデータ配置先決定プログラムを記録する。
【発明の効果】
【００１９】
本発明によれば、メモリ帯域の異なる複数のメモリを搭載したシステムで実行されるプログラムの実行時間の効率化を図ることができる。
【図面の簡単な説明】
【００２０】
【図１】対象システムの例を示すシステム構成図である。
【図２】対象システムでのプログラムの動作例を示す説明図である。
【図３】第１の実施形態のデータ配置先決定装置の構成例を示す構成図である。
【図４】システム情報の例を示す説明図である。
【図５】プログラム情報の例を示す説明図である。
【図６】第１の実施形態の全体の動作の例を示すフローチャートである。
【図７】第１の実施形態の帯域内配置先決定処理の処理フローの例を示すフローチャートである。
【図８】第１の実施形態の帯域外配置先決定処理の処理フローの例を示すフローチャートである。
【図９Ａ】第２の実施形態の対象システムでのプログラムの動作例を示す説明図である。
【図９Ｂ】第２の実施形態の対象システムでのプログラムの動作例を示す説明図である。
【図１０Ａ】第２の実施形態のプログラム情報の例を示す説明図である。
【図１０Ｂ】第２の実施形態のプログラム情報の例を示す説明図である。
【図１０Ｃ】第２の実施形態のプログラム情報の例を示す説明図である。
【図１１】第２の実施形態の全体の動作の例を示すフローチャートである。
【図１２】第２の実施形態の帯域内配置先決定処理の処理フローの例を示すフローチャートである。
【図１３】第２の実施形態の帯域外配置先決定処理の処理フローの例を示すフローチャートである。
【図１４Ａ】第３の実施形態のプログラム情報の例を示す説明図である。
【図１４Ｂ】第３の実施形態のプログラム情報の例を示す説明図である。
【図１４Ｃ】第３の実施形態のプログラム情報の例を示す説明図である。
【図１４Ｄ】第３の実施形態のプログラム情報の例を示す説明図である。
【図１４Ｅ】第３の実施形態のプログラム情報の例を示す説明図である。
【図１５】第３の実施形態の全体の動作の例を示すフローチャートである。
【図１６】第３の実施形態の帯域内配置先決定処理の処理フローの例を示すフローチャートである。
【図１７】第３の実施形態の帯域外配置先決定処理の処理フローの例を示すフローチャートである。
【図１８】第４の実施形態のデータ配置先決定装置の構成例を示すブロック図である。
【図１９】第５の実施形態のデータ配置先決定装置の構成例を示すブロック図である。
【図２０】本発明の各実施形態のデータ配置先決定装置を実現するハードウエア構成を例示する図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態を、図面を参照して説明する。なお、以下では、同一の要素には同一の符号を付し、重複する説明を省略する場合がある。
【００２２】
［対象システムの説明］
まず、本発明の実施形態が対象とするシステムについて説明する。図１は、プログラムのデータ配置を決定する対象とするシステムの例を示すシステム構成図である。図１に示すように、本発明の実施形態が対象とするシステム（対象システム）は、プロセッサ１と、複数のメモリ２とを備える。また、プロセッサ１は、メモリ２の各々と接続されている。なお、プロセッサ１と各メモリ２との接続形態は特に問わない。
【００２３】
プロセッサ１は、複数のプログラムを同時実行可能なプロセッサであればよい。本実施形態において、プログラムという用語は、タスクやスレッドやプロセスといったプロセッサの利用単位を表わすものとして用いている。プロセッサ１は、例えば、マルチコアプロセッサ、メニコアプロセッサ、ＧＰＵ（Graphic Processing Unit）などが挙げられるが、これらに限定されない。
【００２４】
メモリ２は、データを記憶する記憶装置である。メモリ２は各々、サイズ、レイテンシ、帯域といった複数のリソース量を有している。図１に示す対象システムは、少なくとも帯域の異なる２以上のメモリを有するものとする。対象システムは、例えば、オンチップメモリと主メモリを持つシステムであって、複数のパイプライン処理が実行されるプロセッサ１を有するシステムであってもよい。
【００２５】
また、図２は、対象システムでのプログラムの動作例を示す説明図である。図２に示すように、対象システムでは、複数のプログラムが同時実行される。図２において、網掛けや白塗りの矢印はプログラム処理の実行の様子を表している。また、矢印を囲うブロックは各々が１つの実行プログラムを表している。図２には、第１のプログラム（図中の”プログラム１”）が３０個同時実行され、かつ第２のプログラム（図中の”プログラム２”）が５０個同時実行される例が示されている。ここで、第１のプログラムおよび第２のプログラムはプログラムの種類を表している。なお、図２によれば、ある期間において合計８０個のプログラムが同時実行されることがわかる。
【００２６】
ここで、データの配置対象とされるプログラムは、実行単位で数えられるプログラムであり、図２の例でいう計８０個のプログラムである。以下、本発明の実施形態において特に断りなく「プログラム」といった場合には、実行単位で数えられるプログラムを指す。
【００２７】
実施形態１．
次に、本発明の第１の実施形態を説明する。
【００２８】
［構成の説明］
図３は、本実施形態のデータ配置先決定装置１０の構成例を示す構成図である。図３に示すデータ配置先決定装置１０は、システム情報取得部１０１と、プログラム情報取得部１０２と、優先度設定部１０３と、帯域内配置先決定部１０４と、帯域外配置先決定部１０５とを備える。
【００２９】
これらはそれぞれ概略つぎのように動作する。システム情報取得部１０１は、対象システムに関する情報であるシステム情報を取得する。システム情報は、対象システムに含まれる少なくともデータ配置先の候補とされるメモリの各々の、メモリサイズとメモリ帯域とを含む。なお、システム情報は、メモリ性能に関連する他の指標を含んでいてもよい。以下、対象システムに含まれる少なくともデータ配置先の候補とされるメモリを、対象メモリという場合がある。
【００３０】
図４は、システム情報の例を示す説明図である。図４に示す例は、対象システムがプログラムのデータ配置用に２種類のメモリ（図中の”メモリ１”と”メモリ２”）を有する場合のシステム情報の例である。図４に示すように、システム情報取得部１０１は、対象メモリの各々についての、識別情報、メモリサイズおよびメモリ帯域を含むシステム情報を取得してもよい。図４によれば、例えば、第１のメモリ（図中の”メモリ１”）は、メモリサイズが１０ＧＢであり、メモリ帯域が３００ＧＢ／ｓであることがわかる。また、例えば、第２のメモリ（図中の”メモリ２”）は、メモリサイズが３００ＧＢであり、メモリ帯域が５０ＧＢ／ｓであることがわかる。ここで、メモリ帯域は、実測値であっても理論値であってもよい。システム情報の取得方法としては、例えばシステム情報の入力用のＧＵＩ（Graphical User Interface）を用意しておき、そのＧＵＩを利用してユーザに入力させてもよいし、対象システムが有するシステム情報の出力機能等を利用して対象システムから直接読み込む等が挙げられる。
【００３１】
なお、図４には、２種類のメモリに関する情報しか示されていないが、システム情報取得部１０１は、対象メモリ全てのメモリサイズとメモリ帯域の情報を少なくとも取得する。
【００３２】
プログラム情報取得部１０２は、対象システムで実行されるプログラムのうち少なくともデータの配置先の決定対象とされるプログラムに関する情報であるプログラム情報を取得する。プログラム情報は、対象システムで実行されるプログラムのうち少なくともデータ配置先を決定するプログラムの各々についての、要求サイズと要求帯域とを含む。なお、プログラム情報は、プログラムの動作、特に実行中のメモリアクセス時間に関連する他の指標を含んでいてもよい。以下、対象システムで実行されるプログラムのうち少なくともデータの配置先の決定対象とされるプログラムを、対象プログラムという場合がある。
【００３３】
図５は、プログラム情報の例を示す説明図である。図５に示す例は、図２に示した実行プログラムについて取得されるプログラム情報の例である。図５に示すように、プログラム情報取得部１０２は、対象プログラムのプログラムコードの各々についての、識別情報、要求サイズ、要求帯域、実行時間および同時実行数を含むプログラム情報を取得してもよい。図５に示す例は、データの配置先の決定対象とされるプログラムの特に動作に関するリソース量を示すプログラム情報の例である。ここで、要求サイズは、プログラムがメモリに対して要求するサイズである。要求サイズには、例えば、プログラムが実行中にメモリにアクセスするデータの総サイズを用いてもよい。要求帯域は、プログラムが配置先メモリに対して要求する帯域である。要求帯域には、例えば、ユーザが指定した値、対象プログラムが実行中にアクセスするデータサイズやその頻度を計測して得られた値を基に求めた値、または対象プログラムの実行中の最大データアクセス量（最大転送量）または許容レイテンシ等を基に求めた値を用いてもよい。また、実行時間は、プログラムの読み出しから終了までにかかる時間である。実行時間には、例えば、要求帯域が満たされていると仮定したときのプログラムの呼び出しから終了までにかかる時間の論理値を用いてもよいし、対象プログラムを単体で動作させたときの実測値を用いてもよい。なお、プログラム情報は、実行時間を含んでいなくてもよい。また、プログラム情報は、各プログラムの実行時間に代えて、各プログラムの実行中のメモリアクセス時間に関連する他の指標を含んでいてもよい。
【００３４】
図５によれば、例えば第１のプログラム（図中の”プログラム１”）は、要求サイズが０．５ＧＢであり、要求帯域が３ＧＢ／ｓであり、実行時間が４００ｓであり、同時実行数が３０であることがわかる。また、例えば第２のプログラム（図中の”プログラム２”）は、要求サイズが０．５ＧＢであり、要求帯域が２ＧＢ／ｓであり、実行時間が１５０ｓであり、同時実行数が５０であることがわかる。プログラム情報の取得方法としては、例えばプログラム情報の入力用のＧＵＩを用意しておき、そのＧＵＩを利用してユーザに入力させてもよいし、コンパイラ等が出力する情報を読み込む等が挙げられる。
【００３５】
優先度設定部１０３は、対象メモリの各々に対してメモリ帯域に基づく優先度を設定する。また、優先度設定部１０３は、対象プログラムの各々に対して要求帯域に基づく優先度を設定する。以下、メモリに対して設定される優先度を「メモリ優先度」という場合がある。また、プログラムに対して設定される優先度を「プログラム優先度」という場合がある。優先度設定部１０３は、例えば、システム情報に含まれるメモリ帯域の大きい順にメモリ優先度を設定してもよい。また、優先度設定部１０３は、例えば、プログラム情報に含まれる要求帯域の大きい順にプログラム優先度を設定してもよい。
【００３６】
帯域内配置先決定部１０４は、配置後の対象プログラムによる利用サイズの和と利用帯域の和が配置先のメモリサイズとメモリ帯域を超過しない範囲で、メモリ優先度とプログラム優先度とに基づき対象プログラムのデータの配置先を決定する。帯域内配置先決定部１０４は、例えば、メモリ優先度の高いメモリから順に、メモリサイズとメモリ帯域が許す範囲でプログラム優先度の高いプログラムのデータを割り当ててもよい。以下、帯域内配置先決定部１０４が行う配置先の決定処理を、帯域内配置先決定処理という場合がある。
【００３７】
帯域外配置先決定部１０５は、帯域内配置先決定処理の結果、配置先が未決定であるプログラムがある場合に、配置先が未決定である当該プログラムについて、各対象メモリのメモリサイズを超過しない範囲で、配置後の対象プログラムの総実行時間の増加が最小となるメモリを配置先に決定する。帯域外配置先決定部１０５は、例えば、配置先未決定のプログラムの各々に対して、配置可能な対象メモリの各々に当該プログラムのデータを配置した時の対象プログラムの実行時間増加値を算出する。そして、帯域外配置先決定部１０５は、実行時間増加値が最小となるメモリをデータ配置先に決定する。
【００３８】
本実施形態において、システム情報取得部１０１およびプログラム情報取得部１０２は、例えば、プログラムに従って動作するＣＰＵ等の情報処理装置と、各種の情報入力装置（ネットワークカードやマウスやキーボードやディスプレイ装置等）とによって実現される。また、優先度設定部１０３、帯域内配置先決定部１０４および帯域外配置先決定部１０５は、例えば、プログラムに従って動作するＣＰＵ等の情報処理装置によって実現される。
【００３９】
［動作の説明］
次に、本実施形態の動作について説明する。図６〜８は、本実施形態の動作の一例を示すフローチャートである。なお、図６は、本実施形態の全体の動作の例を示すフローチャートであり、図７は帯域内配置先決定部１０４が行う帯域内配置先の決定処理の処理フローの例を示すフローチャートであり、図８は帯域外配置先決定部１０５が行う帯域外配置先の決定処理の処理フローの例を示すフローチャートである。
【００４０】
まず、図６を参照して全体の動作を説明する。図６に示す例では、まず、システム情報取得部１０１が、対象メモリのメモリサイズとメモリ帯域とを少なくとも含むシステム情報を取得する（ステップＳ１１）。
【００４１】
次に、プログラム情報取得部１０２が、対象プログラムの要求サイズと要求帯域とを少なくとも含むプログラム情報を取得する（ステップＳ１２）。なお、ステップＳ１１とステップＳ１２は、順番を入れ替えてもよいし、並列で処理されてもよい。
【００４２】
次に、優先度設定部１０３が、システム情報に含まれるメモリ帯域を基に対象メモリの各々にメモリ優先度を設定するとともに、プログラム情報に含まれる要求帯域を基に対象プログラムの各々にプログラム優先度を設定する（ステップＳ１３）。ここで、優先度設定部１０３は、メモリ帯域の大きいメモリほど高い優先度が付与されるようにメモリ優先度を設定する。また、優先度設定部１０３は、要求帯域の大きいプログラムほど高い優先度が付与されるようにプログラム優先度を設定する。
【００４３】
次に、帯域内配置先決定部１０４が、各対象メモリのメモリ優先度、メモリサイズおよびメモリ帯域と、各対象プログラムのプログラム優先度、要求サイズおよび要求帯域とに基づいて、帯域内配置先を決定する処理を行う（ステップＳ１４）。ここで、帯域内配置先決定部１０４は、各対象メモリにおける対象プログラムによる利用サイズ和および利用帯域和が各対象メモリのリソース量（メモリサイズおよびメモリ帯域）を超過しないように、優先度の高いプログラムから順に優先度の高いメモリを割り当てる。なお、帯域内配置先の決定処理の詳細は後述する。
【００４４】
ステップＳ１４の帯域内配置先の決定処理の結果、配置先が未決定のプログラムがある場合には（ステップＳ１５のＹｅｓ）、帯域外配置先決定部１０５が、配置先未決定のプログラムを対象に、帯域外配置先を決定する処理を行う（ステップＳ１６）。帯域外配置先決定部１０５は、例えば、配置先未決定プログラムのうち優先度の高いプログラムから順に、配置可能な対象メモリの中で対象プログラムの実行時間増加値が最小となるメモリを割り当ててもよい。なお、帯域外配置先の決定処理の詳細は後述する。
【００４５】
次に、図７を参照して、帯域内配置先決定部１０４が行う帯域内配置先の決定処理（図６のステップＳ１４）を説明する。図７に示す例では、帯域内配置先決定部１０４は、まずメモリ優先度順に配置先の候補とする対象メモリを選択する（ステップＳ１４１）。以下、ここで選択した対象メモリを候補メモリという。
【００４６】
次に、帯域内配置先決定部１０４は、プログラム優先度順に、配置先未決定の対象プログラムを選択する（ステップＳ１４２）。ここで、帯域内配置先決定部１０４は、プログラム優先度が同じ対象プログラムを複数選択してもよい。以下、ここで選択した対象プログラムを選択プログラムという。
【００４７】
次に、帯域内配置先決定部１０４は、候補メモリへの、選択プログラムによるデータの利用サイズと利用帯域とを算出する（ステップＳ１４３）。ここで、利用サイズには、選択プログラムの要求サイズを用いる。また、利用帯域には、選択プログラムの要求帯域を用いる。なお、選択プログラムが複数の場合には、利用サイズおよび利用帯域には、選択プログラムの要求サイズの和および要求帯域の和を用いればよい。例えば、帯域内配置先決定部１０４は、図５に示す第１のプログラムの実行プログラムを全て選択した場合、選択プログラムの利用サイズとして、第１のプログラムの要求サイズ（＝０．５ＧＢ）に同時実行数（＝３０）を掛けた値を用いればよい。また、選択プログラムの利用帯域として、第１のプログラムの要求帯域（＝３ＧＢ／ｓ）に同時実行数（＝３０）を掛けた値を用いればよい。
【００４８】
次に、帯域内配置先決定部１０４は、候補メモリのメモリサイズとメモリ帯域を超過せずに選択プログラムのデータを配置可能か否かを判定する（ステップＳ１４４）。ここで、帯域内配置先決定部１０４は、候補メモリを選択プログラムの配置先とした場合、当該候補メモリにおける各対象プログラムの利用サイズの和と利用帯域の和とが、候補メモリのメモリサイズとメモリ帯域を超過しないか否かを判定すればよい。利用サイズの和は、より具体的には、候補メモリに現時点で配置が決まっている各対象プログラムの利用サイズの和に選択プログラムの利用サイズを足した値である。また、利用帯域の和は、より具体的には、候補メモリに現時点で配置が決まっている各対象プログラムの利用帯域の和に選択プログラムの利用帯域を足した値である。
【００４９】
データ配置可能と判定した場合、すなわち候補メモリにおける利用サイズの和および利用帯域の和がいずれも当該候補メモリのリソース量（メモリサイズおよびメモリ帯域）を超えない場合（ステップＳ１４４のＹｅｓ）、帯域内配置先決定部１０４は、選択プログラムのデータ配置先を候補メモリに決定する（ステップＳ１４５）。一方、候補メモリにおける利用サイズの和と利用帯域の和のうちどちらかでも候補メモリのリソース量を超えていた場合（ステップＳ１４４のＮｏ）、帯域内配置先決定部１０４は、候補メモリへの選択プログラムのデータ配置を不可と決定する。
【００５０】
なお、帯域内配置先決定部１０４は、ステップＳ１４４の判定でデータ配置を不可に決定した場合であっても、候補メモリのメモリサイズとメモリ帯域の両方を満たす範囲であれば、選択プログラムの一部のデータ配置先を当該候補メモリに決定することが可能である。一例として、同時実行数が１００個のプログラムコードがあった場合に、当該プログラムコードに対応する選択プログラム（計１００個）のうち６０個のプログラムのデータ配置先を候補メモリとするなどが挙げられる。なお、いくつ配置可能かを、候補メモリの許容利用サイズと許容利用帯域から求めてもよい。
【００５１】
配置可否の判定の後、帯域内配置先決定部１０４は、候補メモリに対して配置可否の判定が行われていない対象プログラムがあれば、該対象プログラムの配置可否を判定するためステップＳ１４２に戻る。また、候補メモリに対して全ての対象プログラムの配置可否の判定が終了した場合には、次に優先度の高い対象メモリに対して同様の処理を行うべく、ステップＳ１４１に戻る。なお、全ての対象メモリに対して同様の処理が終了したら、当該帯域内配置先の決定処理を終了する。
【００５２】
次に、図８を参照して、帯域外配置先決定部１０５が行う帯域外配置先の決定処理（図６のステップＳ１６）を説明する。図８に示す例では、まず帯域外配置先決定部１０５は、プログラム優先度順に配置先未決定の対象プログラムを選択する（ステップＳ１６１）。以下、ここで選択されたプログラムを選択プログラムという。
【００５３】
次に、帯域外配置先決定部１０５は、メモリ優先度順に配置先の候補とする対象メモリを選択する（ステップＳ１６２）。以下、ここで選択されたメモリを候補メモリという。
【００５４】
次に、帯域外配置先決定部１０５は、候補メモリへの、選択プログラムによるデータの利用サイズと利用帯域とを算出する（ステップＳ１６３）。なお、利用サイズと利用帯域の算出方法は、上記のステップＳ１４３と同様でよい。
【００５５】
次に、帯域外配置先決定部１０５は、候補メモリのメモリサイズを超過せずに選択プログラムのデータを配置可能か否かを判定する（ステップＳ１６４）。ここで、帯域外配置先決定部１０５は、候補メモリを選択プログラムの配置先とした場合の当該候補メモリにおける各対象プログラムの利用サイズの和が、当該候補メモリのメモリサイズを超過しないか否かを判定すればよい。なお、利用サイズの和の算出方法は、上記のステップＳ１４４と同様でよい。
【００５６】
データ配置可能と判定した場合すなわち候補メモリにおける利用サイズの和が当該候補メモリのリソース量（メモリサイズ）を超えない場合（ステップＳ１６４のＹｅｓ）、帯域外配置先決定部１０５は、候補メモリへの選択プログラムのデータ配置は可能であるとして、ステップＳ１６５に進む。
【００５７】
ステップＳ１６５で、帯域外配置先決定部１０５は、選択プログラムのデータ配置先を候補メモリとした場合の対象プログラムの実行時間の増加値を算出する。対象プログラムの実行時間の増加値は、各対象プログラムの実行時間を用いて算出される、配置先メモリのメモリ帯域超過による同時実行プログラムの総実行時間の増加量を規格化して示す情報である。なお、実行時間増加値の算出方法は後述する。実行時間の増加値の算出後、帯域外配置先決定部１０５は、次の対象メモリへの配置可否を判定するためステップＳ１６２に戻る。
【００５８】
一方、候補メモリにおける各対象プログラムの利用サイズの和が当該候補メモリのリソース量を超えていた場合（ステップＳ１６４のＮｏ）、帯域外配置先決定部１０５は、当該候補メモリへの選択プログラムのデータ配置を不可とし、そのままステップＳ１６２に戻る。なお、帯域外配置先決定部１０５は、候補メモリのリソース量が足りない場合であっても、既に配置先が決定されたプログラムの中に当該選択プログラムよりも優先度の低いプログラムがあった場合には両者のデータ配置先を入れ替えてもよい。すなわち、帯域外配置先決定部１０５は、選択プログラムのデータを候補メモリに配置可能であるとし、交換対象とされた候補メモリ内の優先度の低いプログラムを新たに配置先未決定プログラムに加えてもよい。なお、この場合、帯域外配置先決定部１０５は、選択プログラムのデータ配置先を候補メモリとした場合の実行時間の増加値を算出するため、ステップＳ１６５に進めばよい。
【００５９】
帯域外配置先決定部１０５は、全ての対象メモリに対して配置可能性の判定および可能であれば実行時間の増加値の算出を終えると、ステップＳ１６６に進む。ステップＳ１６６で、帯域外配置先決定部１０５は、配置可能と判断されたうち実行時間の増加値が最小となる対象メモリを、選択プログラムのデータ配置先に決定する。
【００６０】
帯域外配置先決定部１０５は、他に配置先未決定の対象プログラムがあれば、該対象プログラムに対して同様の処理を行うべく、ステップＳ１６１に戻る。そして、全ての配置先未決定の対象プログラムに対して同様の処理が終了したら、帯域外配置先の決定処理を終了する。
【００６１】
次に、実行時間の増加値の算出方法を説明する。本実施形態では、対象プログラムの実行時間の増加値を次のように求める。
【００６２】
実行時間の増加値＝メモリ帯域超過度×（対象メモリをデータ配置先とするプログラムの実行時間の和）  ・・・（１）
【００６３】
メモリ帯域超過度は、対象メモリに対する対象プログラムによるデータの利用帯域の超過度合いを正規化したものであり、例えば、以下の式（２）によって求められる。
【００６４】
メモリ帯域超過度＝（利用帯域和÷メモリ帯域）−１・・・（２）
【００６５】
なお、式（１）の実行時間の増加値は、対象プログラムの各々で実行時間に応じたメモリアクセスが行われることを前提に、対象メモリにデータが配置された対象プログラムの各々がメモリアクセスするごとに帯域超過度に応じた遅延が生じると仮定して、対象メモリを配置先とする対象プログラム群における総実行時間の増加度合いを規格化したものである。
【００６６】
なお、実行時間の増加値は、データの配置先メモリが帯域超過したことにより同時実行されるプログラムの総実行時間の増加量の目安となる情報であればよく、より具体的には、メモリ帯域を超過した総要求帯域に応じた総実行時間の増加割合を示す情報であればよい。実行時間の増加値は、例えば、対象メモリを配置先とするプログラムの実行時間を用いる以外にも、対象メモリを配置先とするプログラムの実行中のメモリアクセス時間に関連する他の指標を用いて算出されるものであってもよい。各プログラムの実行中のメモリアクセス時間に関連する他の指標としては、例えば、対象メモリを配置先とする対象プログラムの数や、実行割合（ある期間において対象プログラムが実行されている割合）や、メモリアクセス回数や、メモリアクセス頻度などが挙げられる。なお、実行時間増加値の算出に、例えば実行割合×メモリアクセス回数といったように上記の指標を複数組み合わせて用いることも可能である。なお、実行時間の増加値と呼んでいるが、例えば、実行時間の増加値は、メモリ帯域超過度と各プログラムの実行中におけるメモリアクセス時間に関連する情報とを用いて算出される情報であって、帯域超過したメモリにおけるプログラムのメモリアクセスの重複度合いを示す情報であってもよい。
【００６７】
また、帯域外配置先決定部１０５は、より簡易に、実行時間の増加値に代えて、メモリ帯域超過度を用いて配置先メモリを決定してもよい。すなわち、帯域外配置先決定部１０５は、メモリ帯域超過度が最も小さいメモリをデータ配置先に決定してもよい。
【００６８】
以上のように、本実施形態によれば、メモリの持つメモリ帯域の情報と、メモリに対するプログラムからの要求帯域の情報とを利用することにより、各メモリに対する要求帯域が当該メモリのメモリ帯域を超過しないようにデータの配置先を決めることができる。また、いずれかのメモリに対して要求帯域がメモリ帯域を超過する場合であっても、同時実行されるプログラムの総実行時間を小さくするようにデータの配置先を決めることができる。このように、本実施形態では、メモリ帯域が異なる複数のメモリを有するシステムに対して、メモリ帯域とプログラムの要求帯域とを利用してデータの配置先を決定している。したがって、メモリ帯域が異なる複数のメモリを有するシステム上で同時実行されるプログラムの実行時間の効率化を図ることができる。
【００６９】
なお、システム情報取得部１０１は、システム情報取得手段の一例であり、プログラム情報取得部１０２は、プログラム情報取得手段の一例であり、優先度設定部１０３は、優先度設定手段の一例である。また、帯域内配置先決定部１０４は、第１の配置先決定手段の一例であり、帯域外配置先決定部１０５は、第２の配置先決定手段の一例である。
【００７０】
実施形態２．
次に、本実施形態の第２の実施形態を説明する。本実施形態は、対象プログラムが複数の部分処理に分割されるような場合に、部分処理単位でデータの配置先を決定する。
【００７１】
図９Ａおよび図９Ｂは、本実施形態における対象システムでのプログラムの動作例を示す説明図である。図９Ａおよび図９Ｂに示すように、本実施形態においても対象システムでは、複数のプログラムが同時実行される。なお、図９Ａは、各実行プログラムに含まれる２つの部分処理の同時実行数がいずれも１の場合の例を示す。図９Ｂは、実行プログラムのうち第１のプログラムに属する実行プログラムに含まれる１つの部分処理（図中の”部分処理２”）の同時実行数が２の場合の例を示す。なお、図９Ａおよび図９Ｂには、各プログラムが２つの部分処理に分割される例が示されているが、部分処理の分割数および各部分処理の同時実行数は上記の例に限られない。
【００７２】
また、本実施形態において、データの配置対象とされる部分処理は、実行単位で数えられる部分処理であり、図９Ｂの例でいう各矢印で示される部分処理である。以下、本発明において特に断りなく「部分処理」といった場合には、実行単位で数えられる部分処理を指す。
【００７３】
［構成の説明］
本実施形態の構成は、基本的には第１の実施形態と同様である。ただし、本実施形態のプログラム情報取得部１０２は、対象プログラムの部分処理ごとの要求サイズと要求帯域とを含むプログラム情報を取得する。
【００７４】
図１０Ａ乃至図１０Ｃは、本実施形態のプログラム情報の例を示す説明図である。なお、図１０Ａ乃至図１０Ｃに示す例は、図９Ａに示した実行プログラムについて取得されるプログラム情報の例である。図１０Ａ乃至図１０Ｃに示すように、本実施形態のプログラム情報取得部１０２は、対象プログラムのプログラムコードの各々についての識別子および同時実行数と、各プログラムコードの部分処理の各々についての識別情報、要求サイズ、要求帯域、実行時間および同時実行数とを含むプログラム情報を取得してもよい。なお、図１０Ａには、プログラム情報のうちの対象プログラムのプログラムコードに関する情報の例が示されている。また、図１０Ｂには、プログラム情報のうち第１のプログラム（図中の”プログラム１”）に属する対象プログラムの部分処理に関する情報の例が示されている。また、図１０Ｃには、プログラム情報のうち第２のプログラム（図中の”プログラム２”）に属する対象プログラムの部分処理に関する情報の例が示されている。
【００７５】
部分処理の要求サイズは、対象の部分処理がメモリに対して要求するサイズである。該要求サイズには、例えば、部分処理が実行中にメモリにアクセスするデータの総サイズを用いてもよい。部分処理の要求帯域は、対象の部分処理が配置先メモリに対して要求する帯域である。該要求帯域には、例えば、ユーザが指定した値や、対象の部分処理が実行中にアクセスするデータサイズやその頻度を計測して得られた値を基に求めた値や、対象の部分処理の実行中の最大データアクセス量（最大転送量）や許容レイテンシ等を基に求めた値を用いてもよい。また、部分処理の実行時間は、対象の部分処理の読み出しから終了までにかかる時間である。該実行時間には、例えば、要求帯域が満たされていると仮定したときの対象の部分処理の呼び出しから終了までにかかる時間の論理値を用いてもよいし、対象の部分処理を単体で動作させたときの実測値を用いてもよい。なお、本実施形態においても、プログラム情報は、部分処理の実行時間を含んでいなくてもよい。また、プログラム情報は、各部分処理の実行時間に代えて、各部分処理の実行中のメモリアクセス時間に関連する他の指標を含んでいてもよい。
【００７６】
例えば、図１０Ａおよび図１０Ｂによれば、次のことがわかる。例えば第１のプログラム（図中の”プログラム１”）は、同時実行数が３０であり、２つの部分処理（図中の”部分処理１”と”部分処理２”）とに分割される。また、第１のプログラムの第１の部分処理（図中の”部分処理１”）は、要求サイズが０．５ＧＢであり、要求帯域が３ＧＢ／ｓであり、実行時間が３００ｓであり、同時実行数が１である。また、第１のプログラムの第２の部分処理（図中の”部分処理２”）は、要求サイズが０．１ＧＢであり、要求帯域が０．５ＧＢ／ｓであり、実行時間が１００ｓであり、同時実行数が１である。また、図１０Ａおよび図１０Ｃによれば、例えば第２のプログラム（図中の”プログラム２”）は、同時実行数が５０であること、および２つの部分処理（図中の”部分処理１”と”部分処理２”）とに分割される。また、第２のプログラムの第１の部分処理（図中の”部分処理１”）は、要求サイズが０．５ＧＢであり、要求帯域が２ＧＢ／ｓであり、実行時間が１００ｓであり、同時実行数が１である。また、第２のプログラムの第２の部分処理（図中の”部分処理２”）は、要求サイズが０．３ＧＢであり、要求帯域が１ＧＢ／ｓであり、実行時間が５０ｓであり、同時実行数が１である。
【００７７】
また、優先度設定部１０３は、対象メモリの各々に対してメモリ帯域に基づく優先度を設定するとともに、各対象プログラムの各部分処理に対して要求帯域に基づく優先度を設定する。以下、部分処理に対して設定される優先度を部分処理優先度という場合がある。
【００７８】
また、帯域内配置先決定部１０４は、配置後の対象プログラムの部分処理による一次利用サイズの和と一次利用帯域の和が配置先のメモリサイズとメモリ帯域を超過しない範囲で、メモリ優先度と部分処理優先度とに基づき、対象プログラムの部分処理のデータの配置先を決定する。帯域内配置先決定部１０４は、例えば、メモリ優先度の高いメモリから順に、メモリサイズとメモリ帯域が許す範囲で部分処理優先度の高い部分処理のデータを割り当ててもよい。
【００７９】
また、帯域外配置先決定部１０５は、帯域内配置先決定処理の結果、配置先が未決定の部分処理がある場合に、当該配置先未決定の部分処理について、配置先を決定する。すなわち、帯域外配置先決定部１０５は、各対象メモリのメモリサイズを超過しない範囲で、配置後の対象プログラムの総実行時間の増加が最小となるメモリへ配置先を決定する。帯域外配置先決定部１０５は、例えば、配置先未決定の部分処理の各々に対して、配置可能な対象メモリの各々に当該部分処理のデータを配置した時の対象プログラムの実行時間の増加値を算出する。そして、帯域外配置先決定部１０５は、実行時間の増加値が最小となるメモリをデータ配置先に決定する。
【００８０】
［動作の説明］
次に、本実施形態の動作について説明する。図１１〜図１３は、本実施形態の動作の一例を示すフローチャートである。なお、図１１は、本実施形態の全体の動作の例を示すフローチャートである。図１２は、帯域内配置先決定部１０４が行う帯域内配置先の決定処理の処理フローの例を示すフローチャートである。図１３は、帯域外配置先決定部１０５が行う帯域外配置先の決定処理の処理フローの例を示すフローチャートである。
【００８１】
なお、本実施形態の動作は、データの配置先を各対象プログラムの部分処理単位で決定する点、部分処理の同時実行数および属する対象プログラムを考慮して対象メモリにおける利用サイズや利用帯域や実行時間の増加値を求める点以外は、基本的に第１の実施形態と同様である。
【００８２】
まず、図１１を参照して全体の動作を説明する。図１１に示す例では、まず、システム情報取得部１０１が、対象メモリのメモリサイズとメモリ帯域とを少なくとも含むシステム情報を取得する（ステップＳ２１）。なお、ステップＳ２１の動作は第１の実施形態のステップＳ１１の動作と同じである。
【００８３】
次に、プログラム情報取得部１０２が、対象プログラムの部分処理ごとの要求サイズと要求帯域とを少なくとも含むプログラム情報を取得する（ステップＳ２２）。なお、ステップＳ１１とステップＳ１２は順番を入れ替えてもよいし、並列で処理されてもよい。
【００８４】
次に、優先度設定部１０３が、システム情報に含まれるメモリ帯域を基に対象メモリの各々にメモリ優先度を設定するとともに、プログラム情報に含まれる部分処理の要求帯域を基に対象プログラムの部分処理の各々に部分処理優先度を設定する（ステップＳ２３）。優先度設定部１０３は、メモリ帯域の大きいメモリほど高い優先度が付与されるようにメモリ優先度を設定する。また、優先度設定部１０３は、要求帯域の大きい部分処理ほど高い優先度が付与されるように部分処理優先度を設定する。
【００８５】
次に、帯域内配置先決定部１０４が、各対象メモリのメモリ優先度、メモリサイズおよびメモリ帯域と、各対象プログラムの各部分処理の部分処理優先度、要求サイズおよび要求帯域とに基づいて、帯域内配置先を決定する処理を行う（ステップＳ２４）。ここで、帯域内配置先決定部１０４は、各対象メモリにおける対象プログラムの部分処理による一次利用サイズ和および一次利用帯域和が各対象メモリのリソース量（メモリサイズおよびメモリ帯域）を超過しないように、優先度の高い部分処理から順に優先度の高いメモリを割り当てる。なお、帯域内配置先の決定処理の詳細は後述する。
【００８６】
ステップＳ１４の帯域内配置先の決定処理の結果、配置先が未決定の部分がある場合には（ステップＳ２５のＹｅｓ）、帯域外配置先決定部１０５が、配置先未決定の部分処理を対象に、帯域外配置先を決定する処理を行う（ステップＳ２６）。帯域外配置先決定部１０５は、例えば、配置先未決定の部分処理のうち優先度の高い部分処理から順に、配置可能な対象メモリの中で対象プログラムの実行時間増加値が最小となるメモリを割り当ててもよい。なお、帯域外配置先の決定処理の詳細は後述する。
【００８７】
次に、図１２を参照して、本実施形態の帯域内配置先決定部１０４が行う帯域内配置先決定処理（図１１のステップＳ２４）を説明する。図１２に示す例では、帯域内配置先決定部１０４は、まずメモリ優先度順に配置先の候補とする対象メモリを選択する（ステップＳ２４１）。以下、ここで選択した対象メモリを候補メモリという。
【００８８】
次に、帯域内配置先決定部１０４は、部分処理の優先度順に、配置先未決定の部分処理を選択する（ステップＳ２４２）。ここで、帯域内配置先決定部１０４は、同時実行される場合は、その各々を１つの部分処理として選択する。例えば、帯域内配置先決定部１０４は、対象プログラムＡの第１の部分処理として実行される、ある１つの部分処理Ａや、対象プログラムＢの第１の部分処理として実行される、ある１つの部分処理Ｂといったように、選択する。なお、帯域内配置先決定部１０４は、例えば、第１のプログラムに属する３０個の対象プログラムの第１の部分処理として実行される部分処理の全てといったように、同じ優先度（すなわち同じ要求帯域）の部分処理を複数選択してもよい。以下、ここで選択した部分処理を選択部分処理という。
【００８９】
次に、帯域内配置先決定部１０４は、候補メモリへの、選択部分処理によるデータの一次利用サイズと一次利用帯域とを算出する（ステップＳ２４３）。ここで、一次利用サイズには、選択部分処理の要求サイズを用いる。また、一次利用帯域には、選択部分処理の要求帯域を用いる。なお、選択部分処理が複数の場合には、一次利用サイズおよび一次利用帯域には、選択部分処理の要求サイズの和および要求帯域の和をそれぞれ用いればよい。例えば、帯域内配置先決定部１０４は、図１０Ａおよび図１０Ｂに示す第１のプログラムの第１の部分処理として実行される部分処理を全て選択した場合、選択部分処理の一次利用サイズとして、第１のプログラムの第１の部分処理の要求サイズ（＝０．５ＧＢ）に第１の部分処理の同時実行数（＝１）と選択した実行プログラム数（＝３０）とを掛けたものを用いればよい。また、一次利用帯域として、第１のプログラムの第１の部分処理の要求帯域（＝３ＧＢ／ｓ）に第１の部分処理の同時実行数（＝１）と選択した実行プログラム数（＝５０）とを掛けたものを用いればよい。
【００９０】
次に、帯域内配置先決定部１０４は、候補メモリのメモリサイズとメモリ帯域を超過せずに選択部分処理のデータを配置可能か否かを判定する（ステップＳ２４４）。ここで、帯域内配置先決定部１０４は、候補メモリを選択部分処理の配置先とした場合の当該候補メモリにおける各部分処理による一次利用サイズの和と一次利用帯域の和とが、候補メモリのメモリサイズとメモリ帯域を超過しないか否かを判定すればよい。一次利用サイズの和は、より具体的には、候補メモリに現時点で配置が決まっている各部分処理の利用サイズの和に選択部分処理の利用サイズを足したものである。また、一次利用帯域の和は、より具体的には、候補メモリに現時点で配置が決まっている各部分処理の一次利用帯域の和に選択部分処理の一次利用帯域を足したものである。ただし、一次利用帯域の和に関しては、候補メモリに同じプログラムの他の部分処理が含まれている場合には、要求帯域が最も大きい部分処理の利用帯域のみを加算対象とする。
【００９１】
例えば、図９Ａに示す第１のプログラムに属するある１つの対象プログラム（対象プログラムＡ）の第１の部分処理（要求帯域＝３．０Ｇｂ／ｓ）と、同じ対象プログラム（対象プログラムＡ）の第２の部分処理（要求帯域＝０．５ＧＢ／ｓ）とが同じメモリに配置されるとした場合、利用帯域として加算されるのは、以下である。すなわち、当該メモリを配置先とする対象プログラムＡの部分処理のうち最も要求帯域の大きい第１の部分処理の利用帯域（ここでは、当該部分処理の要求帯域×当該部分処理の同時実行数）のみが利用帯域として加算される。これは、１つの対象プログラムにおいて第１の部分処理と第２の部分処理とが同時実行されないことによる。
【００９２】
以降の処理はデータの配置先を各対象プログラムの部分処理単位で決定する点を除き、第１の実施形態の帯域内配置先の決定処理と同様である。
【００９３】
次に、図１３を参照して、本実施形態の帯域外配置先決定部１０５が行う帯域外配置先の決定処理を説明する。図１３に示す例では、帯域外配置先決定部１０５は、まず部分処理の優先度順に配置先未決定の部分処理を選択する（ステップＳ２６１）。ここで、帯域外配置先決定部１０５は、例えば、対象プログラムＡの第１の部分処理や、対象プログラムＢの第１の部分処理といったように、各々の対象プログラムの部分処理を、１つの部分処理として選択する。なお、帯域外配置先決定部１０５は、例えば、第１のプログラムに属する３０個の対象プログラムの第１の部分処理といったように、同じ優先度（すなわち同じ要求帯域）の配置先未決定の部分処理を複数選択してもよい。以下、ここで選択した部分処理を選択部分処理という。
【００９４】
次に、帯域外配置先決定部１０５は、メモリ優先度順に配置先の候補とする対象メモリを選択する（ステップＳ２６２）。以下、ここで選択されたメモリを候補メモリという。
【００９５】
次に、帯域外配置先決定部１０５は、候補メモリへの、選択部分処理によるデータの一次利用サイズと一次利用帯域とを算出する（ステップＳ２６３）。なお、一次利用サイズと一次利用帯域の算出方法は、上記のステップＳ２４３と同様である。
【００９６】
次に、帯域外配置先決定部１０５は、候補メモリのメモリサイズを超過せずに選択部分処理のデータを配置可能か否かを判定する（ステップＳ２６４）。ここで、帯域外配置先決定部１０５は、候補メモリを選択部分処理の配置先とした場合に、当該候補メモリにおける各部分処理による一次利用サイズの和が、当該候補メモリのメモリサイズを超過しないか否かを判定すればよい。なお、一次利用サイズの和の算出方法は、上記のステップＳ２４４と同様である。
【００９７】
データ配置可能と判定した場合すなわち候補メモリにおける一次利用サイズの和が当該候補メモリのリソース量（メモリサイズ）を超えない場合（ステップＳ２６４のＹｅｓ）、帯域外配置先決定部１０５は、候補メモリへの選択部分処理のデータ配置は可能であるとして、ステップＳ２６５に進む。
【００９８】
ステップＳ２６５で、帯域外配置先決定部１０５は、選択部分処理のデータ配置先を候補メモリとした場合の対象プログラムの実行時間の増加値を算出する。本実施形態では、対象プログラムの実行時間の増加値を、上述したメモリ帯域超過度と、各部分処理の実行時間を用いて算出する。なお、本実施形態における実行時間の増加値の算出方法については、後述する。
【００９９】
以降の処理はデータの配置先を各対象プログラムの部分処理単位で決定する点を除き、第１の実施形態と同様である。
【０１００】
次に、本実施形態における実行時間の増加値の算出方法について説明する。本実施形態では、対象プログラムの実行時間の増加値を次のように求める。
【０１０１】
実行時間の増加値＝メモリ帯域超過度×（対象メモリをデータ配置先とする部分処理の実行時間の和）  ・・・（３）
【０１０２】
ここで、本実施形態のメモリ帯域超過度は、対象メモリに対する対象プログラムの部分処理によるデータの一次利用帯域の超過度合いを正規化したものであり、以下の式（４）によって求められる。
【０１０３】
メモリ帯域超過度＝（一次利用帯域和÷メモリ帯域）−１・・・（４）
【０１０４】
本実施形態においても、実行時間の増加値の算出に、各部分処理の実行時間以外に、例えば、配置先メモリにおける各部分処理の実行中のメモリアクセス時間に関連する他の指標を用いてもよい。配置先メモリにおける各部分処理の実行中のメモリアクセス時間に関連する他の指標としては、例えば、対象メモリにおいて同時実行される部分処理の最大数や、対象メモリにおける各部分処理の実行割合やメモリアクセス回数やメモリアクセス頻度などが挙げられる。なお、実行時間の増加値の算出に、例えば各部分処理の実行割合×メモリアクセス回数といったように上記の指標を複数組み合わせて用いることも可能である。
【０１０５】
以上のように、本実施形態によれば、プログラムの部分処理ごとの情報を利用することでより詳細な部分処理単位でデータ配置を決定できるので、メモリ帯域が異なる複数のメモリを有するシステムで同時実行されるプログラムの実行時間をより効率化できる。
【０１０６】
実施形態３．
次に、本実施形態の第３の実施形態を説明する。本実施形態は、対象プログラムが複数の部分処理に分割されるような場合に、部分処理単位または部分処理で使用される変数単位でデータの配置先を決定する。
【０１０７】
［構成の説明］
本実施形態の構成は、基本的には第１および第２の実施形態と同様である。ただし、本実施形態のプログラム情報取得部１０２は、対象プログラムの部分処理ごとの要求帯域とアクセスする変数の情報（変数アクセス情報）とを含むプログラム情報を取得する。
【０１０８】
図１４Ａ乃至図１４Ｅは、本実施形態のプログラム情報の例を示す説明図である。本実施形態のプログラム情報取得部１０２は、例えば、図１４Ａ乃至図１４Ｅに示すような、対象プログラムのプログラムコードの各々についての識別子および同時実行数と、各プログラムコードの部分処理の各々についての識別情報、要求帯域、実行時間、同時実行数およびアクセス変数と、各プログラムが使用する変数の各々についての識別情報、サイズとを含むプログラム情報を取得してもよい。
【０１０９】
なお、図１４Ａには、プログラム情報のうちの対象プログラムのプログラムコードに関する情報の例が示されている。また、図１４Ｂには、プログラム情報のうち第１のプログラム（図中の”プログラム１”）に属する対象プログラムの部分処理に関する情報の例が示されている。また、図１４Ｃには、プログラム情報のうち第１のプログラムに属する対象プログラムで使用される変数に関する情報の例が示されている。また、図１４Ｄには、プログラム情報のうち第２のプログラム（図中の”プログラム２”）に属する対象プログラムの部分処理に関する情報の例が示されている。また、図１４Ｅには、プログラム情報のうち第２のプログラムに属する対象プログラムで使用される変数に関する情報の例が示されている。以下、各対象プログラムの部分処理ごとのアクセス変数とそれらの変数サイズとを示す情報を、変数アクセス情報という場合がある。なお、本実施形態においても、プログラム情報は、部分処理の実行時間を含んでいなくてもよい。また、プログラム情報は、各部分処理の実行時間に代えて、各部分処理の実行中のメモリアクセス時間に関連する他の指標を含んでいてもよい。
【０１１０】
例えば、図１４Ｂおよび図１４Ｃによれば、次のことがわかる。例えば第１のプログラム（図中の”プログラム１”）の第１の部分処理（図中の”部分処理１”）では、２つの変数（図中の”変数１”と”変数２”）が使用されることがわかる。また、第１のプログラムの第２の部分処理（図中の”部分処理２”）では、１つの変数（図中の”変数２”）が使用される。そして、第１のプログラムの第１の部分処理および第２の部分処理で使用される変数のうち、第１の変数（図中の”変数１”）のサイズが０．４ＧＢであり、第２の変数（図中の”変数２”）のサイズが０．１ＧＢである。また、図１４Ｄおよび図１４Ｅによれば、次のことが分かる。例えば第２のプログラム（図中の”プログラム２”）の第１の部分処理（図中の”部分処理１”）では、２つの変数（図中の”変数１”と”変数２”）が使用され、第２のプログラムの第２の部分処理（図中の”部分処理２”）では、１つの変数（図中の”変数２”）が使用される。そして、第２のプログラムの第１の部分処理および第２の部分処理で使用される変数のうち、第１の変数（図中の”変数１”）のサイズが０．２ＧＢであり、第２の変数（図中の”変数２”）のサイズが０．３ＧＢである。
【０１１１】
他の点に関しては第２の実施形態と基本的に同様である。
【０１１２】
［動作の説明］
次に、本実施形態の動作について説明する。図１５〜図１７は、本実施形態の動作の一例を示すフローチャートである。なお、図１５は、本実施形態の全体の動作の例を示すフローチャートである。図１６は、帯域内配置先決定部１０４が行う帯域内配置先の決定処理の処理フローの例を示すフローチャートである。図１７は、帯域外配置先決定部１０５が行う帯域外配置先の決定処理の処理フローの例を示すフローチャートである。
【０１１３】
なお、本実施形態の動作は、利用サイズ和の算出方法が異なる点以外は、第２の実施形態と基本的に同様である。
【０１１４】
まず、図１５を参照して全体の動作を説明する。図１５に示す例では、まず、システム情報取得部１０１が、対象メモリのメモリサイズとメモリ帯域とを含むシステム情報を取得する（ステップＳ３１）。なお、ステップＳ３１の動作は第２の実施形態のステップＳ２１の動作と同じである。
【０１１５】
次に、プログラム情報取得部１０２が、対象プログラムの部分処理ごとの要求帯域と変数アクセス情報とを含むプログラム情報を取得する（ステップＳ３２）。なお、ステップＳ３１とステップＳ３２とは順番を入れ替えてもよいし、並列に実行されてもよい。
【０１１６】
次に、優先度設定部１０３が、システム情報に含まれるメモリ帯域を基に対象メモリの各々にメモリ優先度を設定するとともに、プログラム情報に含まれる部分処理の要求帯域を基に対象プログラムの部分処理の各々に部分処理優先度を設定する（ステップＳ３３）。なお、ステップＳ３３の動作は第２の実施形態のステップＳ２３の動作と同じである。
【０１１７】
次に、帯域内配置先決定部１０４が、各対象メモリのメモリ優先度、メモリサイズおよびメモリ帯域と、各対象プログラムの各部分処理の部分処理優先度、要求サイズおよび要求帯域とに基づいて、帯域内配置先を決定する処理を行う（ステップＳ３４）。ここで、帯域内配置先決定部１０４は、各対象メモリにおける対象プログラムの部分処理による一次利用サイズの和および一次利用帯域の和が各対象メモリのリソース量（メモリサイズおよびメモリ帯域）を超過しないように、優先度の高い部分処理から順に優先度の高いメモリを割り当てる。なお、帯域内配置先の決定処理の詳細は後述する。
【０１１８】
ステップＳ１４の帯域内配置先の決定処理の結果、配置先が未決定の部分処理がある場合には（ステップＳ３５のＹｅｓ）、帯域外配置先決定部１０５が、配置先未決定の部分処理を対象に、帯域外配置先を決定する処理を行う（ステップＳ３６）。帯域外配置先決定部１０５は、例えば、配置先未決定の部分処理のうち優先度の高い部分処理から順に、配置可能な対象メモリの中で対象プログラムの実行時間の増加値が最小となるメモリを割り当ててもよい。なお、帯域外配置先の決定処理の詳細は後述する。
【０１１９】
次に、図１６を参照して、本実施形態の帯域内配置先決定部１０４が行う帯域内配置先の決定処理（図１５のステップＳ３４）を説明する。図１６に示す例では、図１２に示す例では、帯域内配置先決定部１０４は、まずメモリ優先度順に配置先の候補とする対象メモリを選択する（ステップＳ３４１）。なお、ステップＳ３４１の動作は第２の実施形態のステップＳ２４１と同様でよい。以下、ここで選択した対象メモリを候補メモリという。
【０１２０】
次に、帯域内配置先決定部１０４は、部分処理優先度順に、配置先未決定の部分処理を選択する（ステップＳ３４２）。なお、ステップＳ３４２の動作は第２の実施形態のステップＳ２４２と同様でよい。以下、ここで選択した部分処理を選択部分処理という。
【０１２１】
次に、帯域内配置先決定部１０４は、候補メモリへの、選択部分処理によるデータの一次利用サイズと一次利用帯域とを算出する（ステップＳ３４３）。ここで、一次利用サイズには、選択部分処理で使用される変数の変数サイズの和を用いる。なお、選択部分処理が複数の場合には、一次利用サイズには、選択部分処理で使用される変数サイズの和を用いればよい。ただし、同じ対象プログラムにおいて重複して使用される変数については変数サイズを１回のみ加算する。なお、一次利用帯域は第２の実施形態と同様でよい。
【０１２２】
次に、帯域内配置先決定部１０４は、候補メモリのメモリサイズとメモリ帯域を超過せずに選択部分処理のデータを配置可能か否かを判定する（ステップＳ３４４）。ここで、帯域内配置先決定部１０４は、候補メモリを選択部分処理の配置先とした場合の当該候補メモリにおける各部分処理による一次利用サイズの和と一次利用帯域の和とが、候補メモリのメモリサイズとメモリ帯域を超過しないか否かを判定すればよい。一次利用サイズの和は、より具体的には、候補メモリに現時点で配置が決まっている各部分処理の利用サイズの和に選択部分処理の利用サイズを足したものである。ただし、一次利用サイズの和に関しては、候補メモリに選択部分処理と変数を共有する同じプログラムの他の部分処理が含まれている場合には、当該変数に対する選択部分処理による一次利用サイズはゼロとして加算する。なお、一次利用帯域の和は第２の実施形態と同様でよい。
【０１２３】
また、帯域内配置先決定部１０４は、ステップＳ３４４の判定でデータ配置を不可にした場合であっても、候補メモリのメモリサイズとメモリ帯域の両方を満たす範囲であれば、選択部分処理で使用される変数の一部についてデータ配置先を当該候補メモリに決定することも可能である。このとき、候補メモリにおける部分処理の一次利用サイズおよび一次利用帯域に代えて、候補メモリにおける各変数の利用サイズおよび利用帯域をそれぞれ用いればよい。なお、変数の利用サイズには変数サイズを用いればよい。また、変数の利用帯域には当該変数を用いる部分処理のうち最も要求帯域が大きい部分処理の要求帯域を用いればよい。なお、この場合も、対象メモリにおける一次利用サイズの和および一次利用帯域の和を求める際に、同じプログラムの他の部分処理の有無に応じて、当該変数の利用サイズをゼロにしたり、利用帯域をゼロとする処理を行えばよい。
【０１２４】
以降の処理は第２の実施形態の帯域内配置先決定処理と同様である。
【０１２５】
次に、図１７を参照して、帯域外配置先決定部１０５が行う帯域外配置先の決定処理を説明する。図１７に示す例では、図１３に示す例では、帯域外配置先決定部１０５は、まず部分処理の優先度順に配置先未決定の部分処理を選択する（ステップＳ３６１）。なお、ステップＳ３６１の動作は第２の実施形態のステップＳ２６１と同様でよい。以下、ここで選択した部分処理を選択部分処理という。
【０１２６】
次に、帯域外配置先決定部１０５は、メモリ優先度順に配置先の候補とする対象メモリを選択する（ステップＳ３６２）。なお、ステップＳ３６２の動作は第２の実施形態のステップＳ２６２と同様でよい。以下、ここで選択されたメモリを候補メモリという。
【０１２７】
次に、帯域外配置先決定部１０５は、候補メモリへの、選択部分処理によるデータの一次利用サイズと一次利用帯域とを算出する（ステップＳ３６３）。なお、一次利用サイズと一次利用帯域の算出方法は、上記のステップＳ３４３と同様である。
【０１２８】
次に、帯域外配置先決定部１０５は、候補メモリのメモリサイズを超過せずに選択部分処理のデータを配置可能か否かを判定する（ステップＳ３６４）。ここで、帯域外配置先決定部１０５は、候補メモリを選択部分処理の配置先とした場合、当該候補メモリにおける各部分処理による一次利用サイズの和が、当該候補メモリのメモリサイズを超過しないか否かを判定すればよい。なお、一次利用サイズ和の算出方法は、上記のステップＳ３４４と同様である。
【０１２９】
以降の処理は第２の実施形態の帯域外配置先の決定処理と同様である。
【０１３０】
なお、上記では対象プログラムの部分処理を単位にデータ配置先を決定する例を示したが、対象プログラムで用いられる変数単位でデータ配置先を決定することも可能である。その場合、図１５〜図１７で示した各動作において部分処理単位で処理している部分を、そのまま変数単位で処理すればよい。このとき、優先度設定部１０３は、変数優先度を、当該変数を用いる部分処理のうち最も要求帯域が大きい部分処理の要求帯域に応じて定めてもよい。また、帯域内配置先決定部１０４および帯域外配置先決定部１０５は、候補メモリにおける選択変数による利用サイズおよび利用帯域を、選択変数の変数サイズおよび当該選択変数を用いる部分処理のうち最も要求帯域が大きい部分処理の要求帯域としてもよい。なお、この場合も、対象メモリにおける一次利用サイズの和および一次利用帯域の和を求める際に、同じプログラムの他の部分処理の有無に応じて、当該変数の利用サイズをゼロにしたり、利用帯域をゼロとする処理を行う。
【０１３１】
以上のように、本実施形態によれば、第１および第２の実施形態の効果に加えて、部分処理ごとの変数アクセス情報と要求帯域とを利用することで、より効率的なデータ配置が可能である。
【０１３２】
なお、上記の各実施形態では図示省略しているが、各実施形態のデータ配置先決定装置は、配置先の決定結果を示す情報を出力する出力装置を有していてもよい。ここで、出力装置は、例えば、配置先の決定結果を示す情報とともに、当該配置を決定した際に対象メモリに対して算出した実行時間増加値を出力してもよい。このとき、出力手段は、帯域超過していない対象メモリについては実行時間増加値をゼロとして出力してもよい。
【０１３３】
例えば、ユーザは、データ配置先決定装置にメモリの追加前後のシステムのシステム情報を与えて、それぞれのシステムにおける配置先の決定結果と、対象メモリに対して算出した実行時間の増加値とを含む結果情報を取得してもよい。各メモリの実行時間の増加値の合計を比較することで、メモリ帯域の異なるメモリを追加する場合のサービスプログラムの実行時間の増減の目安とできる。これにより、例えば、ユーザは、システム環境変更後のユーザシステムの好適な構成を容易に得ることができる。
【０１３４】
実施形態４．
図１８は、本発明の第４の実施形態に係るデータ配置先決定装置５０の構成を示すブロック図である。図１８に示すように、第４の実施形態のデータ配置先決定装置５０は、システム情報取得部５０１と、プログラム情報取得部５０２と、優先度設定部５０３と、第１の配置先決定部５０４と、第２の配置先決定部５０５とを備える。
【０１３５】
システム情報取得部５０１は、対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズとを取得する。
【０１３６】
プログラム情報取得部５０２は、対象プログラムの各々についての、メモリに対する要求帯域と要求サイズとを取得する。
【０１３７】
優先度設定部５０３は、対象プログラムの各々に対して要求帯域に基づく優先度を設定するとともに、候補メモリの各々に対してメモリ帯域に基づく優先度を設定する。
【０１３８】
第１の配置先決定部５０４は、候補メモリの各々のメモリサイズとメモリ帯域とを超過しない範囲で、優先度設定手段５０３が設定した優先度に基づいて候補メモリの中から対象プログラムの各々で使用されるデータの配置先を決定する。
【０１３９】
第２の配置先決定部５０５は、第１の配置先決定部５０４によって配置先が決定されていない配置先未決定プログラムの配置先を、候補メモリの各々のメモリサイズを超過しない範囲で、配置先未決定プログラムの優先度と対象プログラムの要求帯域と候補メモリのメモリ帯域とに基づいて、決定する。
【０１４０】
本発明は、本実施形態の上記構成を少なくとも備えることにより、
メモリ帯域の異なる複数のメモリを搭載したシステムで実行されるプログラムの実行時間の効率化を図ることができる。
【０１４１】
実施形態５．
図１９は、本発明の第５の実施形態に係るデータ配置先決定装置５０の構成例を示すブロック図である。図１９に示すように、データ配置先決定装置５０は、図１８に示したデータ配置先決定装置５０に加えて、出力部５０６を備えている。
【０１４２】
出力部５０６は、第１の配置先決定部５０４および第２の配置先決定部５０５により決定された配置先を出力する。
【０１４３】
上述した各実施形態において図３、図１８及び図１９に示した各部は、専用のＨＷ（ＨａｒｄＷａｒｅ）（電子回路）によって実現することができる。また、各部は、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。ただし、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図２０を参照して説明する。
【０１４４】
図２０は、本発明の模範的な実施形態に係るデータ配置先決定装置を実行可能な情報処理装置９００（コンピュータ）の構成を例示的に説明する図である。すなわち、図２０は、図３、図１８及び図１９に示したデータ配置先決定装置を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【０１４５】
図２０に示した情報処理装置９００は、構成要素として下記を備えている。
・ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０１、
・ＲＯＭ（Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）９０２、
・ＲＡＭ（Ｒａｎｄｏｍ＿Ａｃｃｅｓｓ＿Ｍｅｍｏｒｙ）９０３、
・ハードディスク９０４（記憶装置）、
・外部装置との通信インタフェース９０５（Ｉｎｔｅｒｆａｃｅ：以降、「Ｉ／Ｆ」と称する）、
・ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ＿Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）等の記録媒体９０７に格納されたデータを読み書き可能なリーダライタ９０８、
・入出力インタフェース９０９、
情報処理装置９００は、これらの構成がバス９０６（通信線）を介して接続された一般的なコンピュータである。
【０１４６】
そして、上述した実施形態を例に説明した本発明の実施形態は、図２０に示した情報処理装置９００に対して、次の機能を実現可能なコンピュータプログラムを供給する。その機能とは、その実施形態の説明において参照したブロック構成図における、システム情報取得部１０１、プログラム情報取得部１０２、優先度設定部１０３、帯域内配置先決定部１０４および帯域外配置先決定部１０５、あるいいはフローチャート（図６乃至図８、図１１乃至図１３、図１５乃至図１７）の機能である。本発明は、その後、そのコンピュータプログラムを、当該ハードウェアのＣＰＵ９０１に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性の記憶メモリ（ＲＡＭ９０３）またはハードディスク９０４等の不揮発性の記憶デバイスに格納されれば良い。
【０１４７】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、現在では一般的な手順を採用することができる。その手順としては、例えば、ＣＤ−ＲＯＭ等の各種記録媒体９０７を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等がある。そして、このような場合において、本発明の実施形態は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記録媒体９０７によって構成されると捉えることができる。
【０１４８】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１４９】
また、上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１５０】
（付記１）対象システムで実行されるプログラムのうち少なくともデータの配置先の決定対象とされるプログラムである対象プログラムの各々についての、メモリに対する要求帯域と要求サイズとに関する情報を含むプログラム情報を取得するプログラム情報取得手段と、対象プログラムで使用されるデータの配置先の候補とされるメモリである候補メモリの各々についての、メモリ帯域とメモリサイズとに関する情報を含むシステム情報を取得するシステム情報取得手段と、対象プログラムの各々に対して要求帯域に基づく優先度を設定するとともに、候補メモリの各々に対してメモリ帯域に基づく優先度を設定する優先度設定手段と、候補メモリの各々のメモリサイズとメモリ帯域とを超過しない範囲で、優先度設定手段が設定した優先度に基づいて候補メモリの中から対象プログラムの各々で使用されるデータの配置先を決定する第１の配置先決定手段と、第１の配置先決定手段によって配置先が決定されなかった配置先未決定プログラムがあった場合に、候補メモリの各々のメモリサイズを超過しない範囲で、配置先未決定プログラムの優先度と各対象プログラムの要求帯域と各候補メモリのメモリ帯域とに基づいて、配置先未決定プログラムの配置先を決定する第２の配置先決定手段とを備えたことを特徴とするデータ配置先決定装置。
【０１５１】
（付記２）第２の配置先決定手段は、帯域超過による対象プログラムの総実行時間の増加を最小化する候補メモリへ、配置先未決定プログラムの配置先を決定する付記１に記載のデータ配置先決定装置。
【０１５２】
（付記３）プログラム情報取得手段は、対象プログラムを分割した部分処理の各々についての、要求帯域および要求サイズに関する情報を少なくとも含むプログラム情報を取得し、優先度設定手段は、対象プログラムの部分処理の各々に対して要求帯域に基づく優先度を設定するとともに、候補メモリの各々に対してメモリ帯域に基づく優先度を設定し、第１の配置先決定手段は、候補メモリの各々のメモリサイズとメモリ帯域とを超過しない範囲で、優先度設定手段が設定した優先度に基づいて、対象プログラムの部分処理ごとにデータの配置先を決定し、第２の配置先決定手段は、第１の配置先決定手段によって配置先が決定されなかった配置先未決定の部分処理があった場合に、候補メモリの各々のメモリサイズを超過しない範囲で、配置先未決定の部分処理の優先度と各部分処理の要求帯域と各候補メモリのメモリ帯域とに基づいて、配置先未決定の部分処理の配置先を決定する付記１または付記２に記載のデータ配置先決定装置。
【０１５３】
（付記４）プログラム情報取得手段は、対象プログラムを分割した部分処理の各々についての、要求帯域および使用する変数に関する情報を少なくとも含むプログラム情報を取得し、優先度設定手段は、対象プログラムの部分処理で使用される変数の各々に対して要求帯域に基づく優先度を設定するとともに、候補メモリの各々に対してメモリ帯域に基づく優先度を設定し、第１の配置先決定手段は、候補メモリの各々のメモリサイズとメモリ帯域とを超過しない範囲で、優先度設定手段が設定した優先度に基づいて、対象プログラムの部分処理で使用される変数の各々の配置先を決定し、第２の配置先決定手段は、第１の配置先決定手段によって配置先が決定されなかった配置先未決定変数があった場合に、候補メモリの各々のメモリサイズを超過しない範囲で、配置先未決定変数の優先度と各変数を使用する部分処理の要求帯域と各候補メモリのメモリ帯域とに基づいて、配置先未決定の部分処理の配置先を決定する付記１または付記２に記載のデータ配置先決定装置。
【０１５４】
（付記５）第２の配置先決定手段は、配置先未決定プログラム、配置先未決定の部分処理または配置先未決定変数を配置可能な候補メモリの各々において、配置後の当該候補メモリにおけるメモリ帯域を超過した度合いを示すメモリ帯域超過度に基づいて、配置先未決定プログラム、配置先未決定の部分処理または配置先未決定変数の配置先を決定する付記１から付記４のうちのいずれかに記載のデータ配置先決定装置。
【０１５５】
（付記６）第２の配置先決定手段は、配置先未決定プログラム、配置先未決定の部分処理または配置先未決定変数を配置可能な候補メモリの各々について、配置後の当該候補メモリにおけるメモリ帯域超過度に応じた当該候補メモリをデータ配置先とする対象プログラムの総実行時間の増加割合を算出し、増加割合の最も小さい候補メモリを配置先に決定する付記５に記載のデータ配置先決定装置。
【０１５６】
（付記７）第２の配置先決定手段は、配置先未決定プログラム、配置先未決定の部分処理または配置先未決定変数を配置可能な候補メモリの各々について、配置後の当該候補メモリにおけるメモリ帯域超過度と当該候補メモリをデータの配置先とする対象プログラムの実行時間とを用いて、当該候補メモリをデータの配置先とする対象プログラムの総実行時間の増加割合を算出し、増加割合の最も小さい候補メモリを配置先に決定する付記５または付記６に記載のデータ配置先決定装置。
【０１５７】
（付記８）第２の配置先決定手段は、配置先未決定プログラム、配置先未決定の部分処理または配置先未決定変数を配置可能な候補メモリの各々について、配置後の当該候補メモリにおけるメモリ帯域超過度と当該候補メモリをデータの配置先とする対象プログラムまたは部分処理の実行中のメモリアクセス時間に関連する情報とに基づいて当該候補メモリにおける対象プログラムの実行時間の増加度を算出し、増加度の最も小さい候補メモリを配置先に決定する付記５または付記６に記載のデータ配置先決定装置。
【０１５８】
（付記９）第２の配置先決定手段は、配置先未決定プログラム、配置先未決定の部分処理または配置先未決定変数を配置可能な候補メモリの各々について、配置後の当該候補メモリにおけるメモリ帯域超過度と当該候補メモリをデータの配置先とする対象プログラムまたは部分処理の実行時間とに基づいて当該候補メモリにおける対象プログラムの実行時間の増加値を算出し、増加値の最も小さい候補メモリを配置先に決定する付記５または付記６に記載のデータ配置先決定装置。
【０１５９】
（付記１０）配置先決定結果を出力する出力手段を備えた付記１から付記９のうちのいずれかに記載のデータ配置先決定装置。
【産業上の利用可能性】
【０１６０】
本発明は、例えば、対象メモリで実行されるサービスプログラムのデータの配置先の参考となる情報を取得する用途や、メモリ帯域の異なるメモリを追加する場合のサービスプログラムの実行時間の参考となる情報を取得する用途にも好適に適用可能である。【０１６１】
この出願は、２０１５年３月３０日に出願された日本出願特願２０１５−０６７９７５を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１６２】
１  プロセッサ
２  メモリ
１０  データ配置先決定装置
１０１  システム情報取得部
１０２  プログラム情報取得部
１０３  優先度設定部
１０４  帯域内配置先決定部
１０５  帯域外配置先決定部
５０  データ配置先決定装置
５０１  システム情報取得部
５０２  プログラム情報取得部
５０３  優先度設定部
５０４  第１の配置先決定部
５０５  第２の配置先決定部
５０６  出力部
【図１】
2016157826.tif 000003
【図２】
2016157826.tif 000004
【図３】
2016157826.tif 000005
【図４】
2016157826.tif 000006
【図５】
2016157826.tif 000007
【図６】
2016157826.tif 000008
【図７】
2016157826.tif 000009
【図８】
2016157826.tif 000010
【図９Ａ】
2016157826.tif 000011
【図９Ｂ】
2016157826.tif 000012
【図１０Ａ】
2016157826.tif 000013
【図１０Ｂ】
2016157826.tif 000014
【図１０Ｃ】
2016157826.tif 000015
【図１１】
2016157826.tif 000016
【図１２】
2016157826.tif 000017
【図１３】
2016157826.tif 000018
【図１４Ａ】
2016157826.tif 000019
【図１４Ｂ】
2016157826.tif 000020
【図１４Ｃ】
2016157826.tif 000021
【図１４Ｄ】
2016157826.tif 000022
【図１４Ｅ】
2016157826.tif 000023
【図１５】
2016157826.tif 000024
【図１６】
2016157826.tif 000025
【図１７】
2016157826.tif 000026
【図１８】
2016157826.tif 000027
【図１９】
2016157826.tif 000028
【図２０】
2016157826.tif 000029
【手続補正書】
【提出日】平成29年9月15日(2017.9.15)
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、プログラムで使用されるデータの配置先メモリを決定するデータ配置先決定装置、データ配置先決定方法およびデータ配置先決定プログラムに関する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
本発明に係る第１のデータ配置先決定プログラムは、コンピュータに、使用するデータの配置先の決定対象である対象プログラムの各々についての、メモリに対する要求帯域と要求サイズを取得する処理、前記対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズとを取得する処理、前記対象プログラムの各々に対して前記要求帯域に基づく優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく優先度を設定する処理、前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記対象プログラムの前記優先度と前記候補メモリの前記優先度とに基づいて、前記候補メモリの中から前記対象プログラムの各々で使用されるデータの配置先を決定する処理、および配置先が決定されていない配置先未決定プログラムの配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定プログラムの前記優先度と前記対象プログラムの要求帯域と前記候補メモリのメモリ帯域とに基づいて、決定する処理を実行させる。
【手続補正４】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１０
【補正方法】変更
【補正の内容】
【請求項１０】
コンピュータに、
使用するデータの配置先の決定対象である対象プログラムの各々についての、メモリに対する要求帯域と要求サイズを取得する処理、
前記対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズとを取得する処理、
前記対象プログラムの各々に対して前記要求帯域に基づく優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく優先度を設定する処理、
前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記対象プログラムの前記優先度と前記候補メモリの前記優先度とに基づいて、前記候補メモリの中から前記対象プログラムの各々で使用されるデータの配置先を決定する処理、および
配置先が決定されていない配置先未決定プログラムの配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定プログラムの前記優先度と前記対象プログラムの要求帯域と前記候補メモリのメモリ帯域とに基づいて、決定する処理
を実行させるデータ配置先決定プログラム。
【国際調査報告】
2016157826.tif 000030
2016157826.tif 000031