(57)【特許請求の範囲】
【請求項１】
プログラムを実行した第１メモリのメモリアクセスに関するトレース情報に、メモリアクセスが行われたアドレスが昇順または降順になるように連続してメモリアクセスが行われたことを示す連続アクセス情報が含まれている場合、前記トレース情報から、連続してメモリアクセスが行われた連続するアドレスに格納されたデータを含む、メモリアクセスが行われた各データが格納された領域を示すアドレスと、メモリアクセスが行われた各データが格納された領域を示す前記アドレスに対するメモリアクセスの頻度情報とを対応付けた対応情報を作成する対応情報作成部と、
前記対応情報に基づき、前記第１メモリに格納されたデータを前記第１メモリよりバンド幅が大きいメモリである第２メモリに格納した場合におけるデータのメモリアクセスの削減時間を、前記アドレス毎に算出する削減時間算出部と、
前記削減時間が大きい前記アドレスに格納されたデータを優先して、前記第２メモリに格納すべきことを決定するデータ配置決定部と、を有する、
データ配置決定装置。
【請求項２】
請求項１において、
前記対応情報作成部は、前記アドレス及び前記頻度情報に、メモリアクセスが行われたデータのサイズを対応付けて前記対応情報を作成する、
データ配置決定装置。
【請求項３】
請求項１において、
前記対応情報作成部は、前記トレース情報に、連続するアドレスに格納されたデータのそれぞれに対して連続してメモリアクセスが行われた旨を示す連続アクセス情報が含まれている場合、前記連続するアドレスと、前記連続するアドレス毎の前記連続してメモリアクセスが行われた頻度情報とを対応付けて前記対応情報を作成し、
前記削減時間算出部は、前記第１メモリに格納されたデータを、前記第１メモリよりバンド幅が大きいメモリである第２メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記連続するアドレス毎に算出する、
データ配置決定装置。
【請求項４】
請求項１において、
前記第１及び第２メモリは、メモリアクセスが行われたデータのアドレスを含む所定領域に格納されたデータを保持するバッファ領域を有し、
前記第１及び第２メモリは、メモリアクセスが行われた場合において、前記メモリアクセスの対象であるデータが前記バッファ領域に保持されている場合、前記保持されているデータを返信し、前記メモリアクセスの対象であるデータが前記バッファ領域に保持されていない場合、前記メモリアクセスの対象であるデータのアドレスを含む所定領域に格納されたデータを前記バッファ領域に格納し、前記バッファ領域に格納したデータを返信し、
前記対応情報作成部は、前記トレース情報に、同一の前記所定領域に格納されたデータに対する複数のメモリアクセスがあった旨を示す複数アクセス情報が含まれている場合、前記複数のメモリアクセスが連続して行われたように前記トレース情報に含まれる情報を並び替え、前記並び替えたトレース情報から、前記所定領域に格納されたデータのアドレスと、前記所定領域に格納されたデータのアドレス毎のメモリアクセスの頻度情報とを対応付けて前記対応情報を作成し、
前記削減時間算出部は、前記第１メモリに格納されたデータを、前記第１メモリよりバンド幅が大きいメモリである第２メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記所定領域に格納されたデータのアドレス毎に算出する、
データ配置決定装置。
【請求項５】
請求項１において、
前記データ配置決定部は、前記削減時間と該削減時間に対応する前記頻度情報とを乗算した値が大きい前記アドレスに格納されたデータを優先して、前記第２メモリに格納すべきことを決定する、
データ配置決定装置。
【請求項６】
プログラムを実行した第１メモリのメモリアクセスに関するトレース情報に、メモリアクセスが行われたアドレスが昇順または降順になるように連続してメモリアクセスが行われたことを示す連続アクセス情報が含まれている場合、前記トレース情報から、連続してメモリアクセスが行われた連続するアドレスに格納されたデータを含む、メモリアクセスが行われた各データが格納された領域を示すアドレスと、メモリアクセスが行われた各データが格納された領域を示す前記アドレスに対するメモリアクセスの頻度情報とを対応付けた対応情報を作成し、
前記対応情報に基づき、前記第１メモリに格納されたデータを前記第１メモリよりバンド幅が大きいメモリである第２メモリに格納した場合におけるデータのメモリアクセスの削減時間を、前記アドレス毎に算出し、
前記削減時間が大きい前記アドレスに格納されたデータを優先して、前記第２メモリに格納すべきことを決定する、
データ配置決定プログラム。
【請求項７】
プログラムを実行した第１メモリのメモリアクセスに関するトレース情報に、メモリアクセスが行われたアドレスが昇順または降順になるように連続してメモリアクセスが行われたことを示す連続アクセス情報が含まれている場合、前記トレース情報から、連続してメモリアクセスが行われた連続するアドレスに格納されたデータを含む、メモリアクセスが行われた各データが格納された領域を示すアドレスと、メモリアクセスが行われた各データが格納された領域を示す前記アドレスに対するメモリアクセスの頻度情報とを対応付けた対応情報を作成し、
前記対応情報に基づき、前記第１メモリに格納されたデータを前記第１メモリよりバンド幅が大きいメモリである第２メモリに格納した場合におけるデータのメモリアクセスの削減時間を、前記アドレス毎に算出し、
前記削減時間が大きい前記アドレスに格納されたデータを優先して、前記第２メモリに格納すべきことを決定する、
データ配置決定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法に関する。
【背景技術】
【０００２】
物理マシンが採用するアーキテクチャとして、プロセッサがアクセス速度の異なる複数のメモリに対してメモリアクセスを行うＮＵＭＡ（Ｎｏｎ  Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）アーキテクチャが採用される場合がある。
【０００３】
このＮＵＭＡアーキテクチャを採用した物理マシンでは、一般的に、プロセッサによるアクセス頻度が高いデータを、メモリアクセスの要求に対する応答時間が短いメモリに配置する。これにより、ＮＵＭＡアーキテクチャを採用した物理マシンは、物理マシン全体としてのメモリアクセスの効率化（メモリアクセスの要求に対する応答時間の短縮化）を図ることが可能になる（例えば、特許文献１及び２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２４７８２７号公報
【特許文献２】特開平７−１９１８８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のような応答時間は、例えば、メモリアクセス対象のデータのサイズをメモリのバンド幅（データ転送速度または単位時間あたりのデータ転送量）で除算した値に、プロセッサからメモリまでの物理的な距離等に基づくレイテンシの値を加算することにより算出される。そして、上記の応答時間は、メモリアクセス対象のデータのサイズが小さい程、メモリアクセス対象のデータのサイズをメモリのバンド幅で除算した値が小さくなるため、レイテンシに依存する。したがって、物理マシンは、この場合、レイテンシが低いメモリにアクセス頻度の高いデータを記憶することにより、メモリアクセスの効率化を図ることが可能になる。
【０００６】
一方、上記の応答時間は、メモリアクセス対象のデータのサイズが大きい程、メモリアクセス対象のデータのサイズをメモリのバンド幅で除算した値が大きくなるため、レイテンシよりもバンド幅に依存する。したがって、メモリアクセス対象のデータのサイズによっては、レイテンシのみに基づいて決定したデータ配置と、データのサイズをバンド幅で除算した値も考慮して決定したデータ配置とで内容が異なる場合がある。すなわち、物理マシンは、各メモリが実際にメモリアクセスを行うデータのサイズに基づいて、応答時間の算出を行う必要がある場合がある。
【０００７】
ここで、例えば、複数のメモリアクセスの要求を纏めてメモリアクセスを行う場合、プログラムの実行に伴ってプロセッサが出力するトレースは、複数のメモリアクセスの要求を纏めることなく行ったものとして出力される場合がある。そのため、トレースの情報に基づいて複数のメモリ間におけるデータ配置が決定される場合、複数のメモリアクセスの要求を纏めて行ったメモリアクセスの情報は、データ配置の決定に反映されない場合がある。したがって、この場合、物理マシンは、実際にメモリアクセスが行われるデータのサイズに基づいてデータ配置の決定を行うことができず、メモリアクセスの効率化を図ることができない。
【０００８】
そこで、一つの実施の形態の目的は、よりメモリアクセスの効率を高めることができるデータ配置決定装置、データ配置決定プログラム及びデータ配置決定方法を提供することにある。
【課題を解決するための手段】
【０００９】
実施の形態の一つの側面によれば、プログラムを実行した第１メモリのメモリアクセスに関するトレース情報から、メモリアクセスが行われたデータが格納された領域を示すアドレスと、前記アドレス毎のメモリアクセスの頻度情報とを対応付けた対応情報を作成する対応情報作成部と、
前記対応情報に基づき、前記第１メモリに格納されたデータを前記第１メモリよりバンド幅が大きいメモリである第２メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記アドレス毎に算出する削減時間算出部と、
前記削減時間が大きい前記アドレスに格納されたデータを優先して、前記第２メモリに格納すべきことを決定するデータ配置決定部と、を有する。
【発明の効果】
【００１０】
一つの側面によれば、よりメモリアクセスの効率を高めることができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置１０の全体構成を示す図である。
【図２】情報処理装置１０の全体構成を示す図である。
【図３】トレース情報の具体例を説明する図である。
【図４】対応情報の具体例を説明する図である。
【図５】情報処理装置１０のハードウエア構成を示す図である。
【図６】図５の情報処理装置１０の機能ブロック図である。
【図７】第１の実施の形態におけるデータ配置決定処理の概略を説明するフローチャート図である。
【図８】第１の実施の形態におけるデータ配置決定処理の詳細を説明するフローチャート図である。
【図９】第１の実施の形態におけるデータ配置決定処理の詳細を説明するフローチャート図である。
【図１０】第１の実施の形態におけるデータ配置決定処理の詳細を説明するフローチャート図である。
【図１１】第１の実施の形態におけるデータ配置決定処理の詳細を説明するフローチャート図である。
【図１２】第１の実施の形態におけるデータ配置決定処理の詳細を説明するフローチャート図である。
【図１３】第１の実施の形態におけるデータ配置決定処理の詳細を説明する図である。
【図１４】第１の実施の形態におけるデータ配置決定処理の詳細を説明する図である。
【図１５】第１の実施の形態におけるデータ配置決定処理の詳細を説明する図である。
【図１６】第１の実施の形態におけるデータ配置決定処理の詳細を説明する図である。
【図１７】第１の実施の形態におけるデータ配置決定処理の詳細を説明する図である。
【図１８】第１の実施の形態におけるデータ配置決定処理の詳細を説明する図である。
【図１９】第１の実施の形態におけるデータ配置決定処理の詳細を説明する図である。
【図２０】第１の実施の形態におけるデータ配置決定処理の詳細を説明する図である。
【図２１】第２の実施の形態におけるＲｏｗｂｕｆｆｅｒ領域を説明する図である。
【図２２】第２の実施の形態におけるメモリアドレスの具体例を説明する図である。
【図２３】第２の実施の形態におけるデータ配置決定処理を説明するフローチャート図である。
【図２４】第２の実施の形態におけるデータ配置決定処理を説明するフローチャート図である。
【図２５】第２の実施の形態におけるデータ配置決定処理を説明するフローチャート図である。
【図２６】第２の実施の形態におけるデータ配置決定処理を説明するフローチャート図である。
【図２７】第２の実施の形態におけるデータ配置決定処理を説明する図である。
【図２８】第２の実施の形態におけるデータ配置決定処理を説明する図である。
【図２９】第２の実施の形態におけるデータ配置決定処理を説明する図である。
【図３０】第２の実施の形態におけるデータ配置決定処理を説明する図である。
【図３１】第２の実施の形態におけるデータ配置決定処理を説明する図である。
【図３２】第２の実施の形態におけるデータ配置決定処理を説明する図である。
【発明を実施するための形態】
【００１２】
［情報処理システムの構成］
図１は、情報処理装置１０の全体構成を示す図である。図１に示す情報処理装置１０（以下、データ配置決定装置１０とも呼ぶ）は、例えば、利用者にサービスを提供するための業務システムを構築する物理マシンである。そして、情報処理装置１０は、プロセッサであるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３と、ＣＰＵ３がアクセス可能な第１メモリ１及び第２メモリ２とを有する。
【００１３】
図１に示す例において、第２メモリ２は、例えば、第１メモリ１よりもバンド幅の大きいメモリである。具体的に、第１メモリ１は、例えば、ＤＤＲＳＤＲＡＭ（Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ  Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、第２メモリ２は、例えば、３次元積層メモリである。
【００１４】
図１に示す情報処理装置１０は、例えば、上記のＮＵＭＡアーキテクチャを採用する。この場合、図示しない情報処理装置１０のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）は、例えば、図２に示すように、各データのアクセス頻度が高いデータから優先して、メモリアクセスの応答時間が短いメモリ（第２メモリ２）に記憶する。
【００１５】
このメモリアクセスの応答時間は、例えば、以下の式（１）によって算出される
Ｔ＝ｘ／Ｂ＋Ｌ  ・・・  式（１）
式（１）において、「ｘ」は、メモリアクセス対象のデータのサイズである。また、「Ｂ」は、メモリ（第１メモリ１または第２メモリ２）のバンド幅であり、「Ｌ」は、ＣＰＵ３とメモリとの間で通信を行う場合におけるレイテンシの値である。また、「Ｔ」は、ＣＰＵ３がメモリに対してメモリアクセスを行った場合に要する応答時間である。
【００１６】
上記の式（１）において、「ｘ」の値が小さい場合、「ｘ」の値を「Ｂ」の値で除算した値が小さくなり、「Ｔ」は、「Ｌ」の値に大きく依存する。そのため、この場合、情報処理装置１０は、レイテンシが低いメモリにアクセス頻度の高いデータを記憶することにより、メモリアクセスの効率化を図ることが可能になる。
【００１７】
一方、上記の式（１）において、「ｘ」の値が大きい場合、「ｘ」の値を「Ｂ」の値で除算した値が大きくなり、例えば「Ｔ」は、「Ｌ」の値よりも「ｘ」の値を「Ｂ」の値で除算した値に依存する。そのため、この場合、情報処理装置１０は、レイテンシのみではなく、メモリのバンド幅をも考慮した形で各データを記憶するメモリを決定する必要がある。すなわち、情報処理装置１０は、各データを記憶するメモリを決定する場合、メモリが実際に行ったメモリアクセス対象のデータのサイズに基づく必要がある。
【００１８】
［トレース情報の具体例］
次に、情報処理装置１０がアクセス頻度を算出する際に参照するトレース情報について説明する。  
【００１９】
情報処理装置１０は、例えば、情報処理装置１０の本番稼働（利用者に対してサービスを提供するための稼働）を開始する前に試験データによる試験稼働を行い、この試験稼働に伴って発生したメモリアクセスに関する情報をトレース情報として出力する。そして、情報処理装置１０は、出力されたトレース情報に基づいて、アクセス頻度を算出する。
【００２０】
図３は、トレース情報の具体例を説明する図である。図３に示すトレース情報は、トレース情報に含まれる各情報を識別する「番号」と、メモリアクセスがあった時刻を示す「時刻」と、メモリアクセスがあったデータが格納されたアドレスを示す「アドレス」とを項目として有する。また、図３に示すトレース情報は、メモリアクセスがあったデータのサイズを示す「サイズ」を項目として有する。なお、「アドレス」に設定される情報は、１６進数の表記である。また、以下、「時刻」に設定される情報の単位は、ｍｓｅｃ（ミリセック）であり、「サイズ」に設定される情報の単位は、Ｂ（バイト）であるものとして説明を行う。
【００２１】
具体的に、図３に示すトレース情報において、「番号」が「１」である行には、「時刻」として「０００１」が設定され、「アドレス」として「０ｘ００００１０００」が設定され、「サイズ」として「８（バイト）」が設定されている。すなわち、「番号」が「１」である行は、「時刻」が「０００１」であるときに、「０ｘ００００１０００」から「８（バイト）」の領域に記憶されているデータに対して、メモリアクセスがあったことを示している。図３の他の情報については説明を省略する。
【００２２】
次に、図４は、対応情報の具体例を説明する図である。対応情報は、図３に示すトレース情報に基づき、メモリ内の所定範囲毎にメモリアクセスが行われた回数（頻度）を集計した情報である。以下、所定範囲が３２（バイト）であるものとして説明を行う。
【００２３】
図４に示す対応情報は、対応情報に含まれる各情報を識別する「番号」と、メモリアクセスがあったデータが格納されたアドレスの範囲を示す「アドレス」と、メモリアクセスが行われた回数を示す「アクセス頻度」とを項目として有する。
【００２４】
具体的に、情報処理装置１０は、例えば、図３に示すトレース情報に含まれる情報のうち、「アドレス」が「０ｘ００００００００」から３２（バイト）の領域に格納されているデータに対するメモリアクセスに関する情報を特定する。すなわち、情報処理装置１０は、「アドレス」が「０ｘ００００００００」から３２（バイト）の領域に格納されているデータに対するメモリアクセスに関する情報として、「アドレス」が「０ｘ００００００１０」及び「０ｘ００００００１８」である情報を特定する。そして、情報処理装置１０は、図４に示すように、例えば、「番号」が「２」である情報の「アドレス」に「０ｘ００００００００」を設定し、「番号」が「２」である情報の「アクセス頻度」に「２」を設定する。
【００２５】
その後、情報処理装置１０は、図４に示す対応情報を参照し、アクセス頻度が多い領域に格納されたデータから優先して、応答時間が短いメモリ（図２に示す例では第２メモリ２）に配置する。これにより、情報処理装置１０は、アクセス効率を高めるためのデータ配置を行うことが可能になる。図４の他の情報については説明を省略する。
【００２６】
ここで、例えば、メモリアクセスを制御するメモリコントローラが複数のメモリアクセスの要求を纏めてメモリアクセスを行う場合であっても、図３に示すようなトレース情報には、メモリアクセスの要求が纏められることなく行われたものとして出力される場合がある。そのため、この場合、実際に行われたメモリアクセスのデータのサイズは、データ配置の決定に反映されない。したがって、この場合、情報処理装置１０は、メモリアクセスの効率化を図ることができない場合がある。
【００２７】
そこで、本実施の形態における情報処理装置１０は、第１メモリ１に格納されたデータのうち、メモリアクセスされたデータのアドレスとメモリアクセスの頻度に基づき、第１メモリ１に格納された各データを第２メモリ２に格納した場合における削減時間を算出する。そして、情報処理装置１０は、削減時間が大きいデータを優先して第２メモリ２に格納する。
【００２８】
これにより、情報処理装置１０は、各データに対するメモリアクセスの頻度のみでなく、メモリアクセスされたデータのアドレスを参照して第２メモリ２に格納するデータを決定することができる。そのため、例えば、メモリコントローラが複数のメモリアクセスの要求を纏めてメモリアクセスを行う場合であっても、実際に行われたメモリアクセスの情報を反映させた形で、アクセス効率を高めるためのデータの配置を行うことが可能になる。
【００２９】
なお、以下、情報処理装置１０が第１メモリ１及び第２メモリ２を有する場合について説明するが、情報処理装置１０は、他の物理マシンが有する複数のメモリに対するデータ配置を決定するものであってもよい。
【００３０】
［情報処理装置のハードウエア構成］
次に、情報処理装置１０のハードウエア構成について説明する。図５は、情報処理装置１０のハードウエア構成を示す図である。情報処理装置１０は、プロセッサであるＣＰＵ１０３と、第１メモリ１０１（以下、低速メモリ１０１とも呼ぶ）と、第１メモリ１０１よりもバンド幅が大きいメモリである第２メモリ１０２（以下、高速メモリ１０２とも呼ぶ）とを有する。また、情報処理装置１０は、外部の機器とアクセスするための外部インターフェース（Ｉ／Ｏユニット）１０４を有する。各部は、バス１０５を介して互いに接続される。ＣＰＵ１０３、第１メモリ１０１及び第２メモリ１０２は、それぞれ図１で説明したＣＰＵ３、第１メモリ１及び第２メモリ２に対応するものであってよい。
【００３１】
図５に示す第２メモリ１０２は、第２メモリ１０２内のプログラム格納領域１２０に、データ配置を決定する処理（以下、データ配置決定処理とも呼ぶ）を実行するためのプログラム１１０（以下、データ配置決定プログラムとも呼ぶ）を記憶する。ＣＰＵ１０３は、図５に示すように、プログラム１１０の実行時に、プログラム１１０を第２メモリ１０２から第１メモリ１０１にロードし、プログラム１１０と協働してデータ配置決定処理を行う。また、第２メモリ１０２は、例えば、データ配置決定処理を行う際に用いられる情報を記憶する情報格納領域１３０（以下、記憶部１３０とも呼ぶ）を有する。
【００３２】
なお、プログラム格納領域１２０及び情報格納領域１３０は、第２メモリ１０２以外の記憶領域（第１メモリ１０１を含む）に記憶されるものであってもよい。
【００３３】
［情報処理装置の機能］
図６は、図５の情報処理装置の機能ブロック図である。情報処理装置１０のＣＰＵ１０３は、プログラム１１０と協働することにより、コンパイル実行部１１１と、プログラム実行部１１２と、トレース情報取得部１１３と、対応情報作成部１１４として機能する。また、情報処理装置１０のＣＰＵ１０３は、プログラム１１０と協働することにより、削減時間算出部１１５と、データ配置決定部１１６と、ソースコード変換部１１７と、データ配置部１１８として機能する。また、情報処理装置１０の情報格納領域１３０には、ソースコード１３１、トレース情報１３２、環境情報１３３、対応情報１３４及び指示情報１３５が記憶される。
【００３４】
コンパイル実行部１１１は、情報格納領域１３０に記憶されたソースコード１３１のうち、例えば、ソースコードの開発者等（以下、単に開発者とも呼ぶ）によって指定されたソースコードを取得する。ソースコード１３１は、コンパイル後の実行プログラムが、第１メモリ１０１に記憶されたデータに対してのみメモリアクセスを行うことを前提としたソースコードである。そして、コンパイル実行部１１１は、情報格納領域１３０から取得したソースコードのコンパイルを行い、プログラム実行部１１２（ＣＰＵ１０３）が実行可能な実行プログラムを作成する。
【００３５】
プログラム実行部１１２は、例えば、開発者から指示があった場合に、コンパイル実行部１１１が作成した実行プログラムの実行を行う。
【００３６】
トレース情報取得部１１３は、プログラム実行部１１２による実行プログラムの実行中に、予め定められた動作が行われたことに応じてトレース情報１３２の取得を行う。具体的に、トレース情報取得部１１３は、例えば、第１メモリ１０１に記憶されたデータに対してメモリアクセスが行われる毎に、トレース情報１３２の取得を行う。そして、トレース情報取得部１１３は、取得したトレース情報１３２を情報格納領域１３０に記憶する。トレース情報１３２は、例えば、図３で説明したトレース情報に対応する。
【００３７】
対応情報作成部１１４は、情報格納領域１３０に記憶されたトレース情報１３２から、プログラム実行部１１２によってメモリアクセスが行われたデータが格納された領域を示すアドレスと、アドレス毎のメモリアクセスの頻度情報とを取得する。そして、対応情報作成部１１４は、取得したアドレスと頻度情報とを対応付けることにより対応情報１３４を作成し、情報格納領域１３０に記憶する。
【００３８】
なお、対応情報作成部１１４は、アドレス及び頻度情報に加えて、メモリアクセスが行われたデータのサイズを取得し、アドレスと頻度情報とサイズとを対応付けることにより対応情報１３４を作成するものであってもよい。また、対応情報作成部１１４は、頻度情報を所定範囲（例えば、３２（バイト））のアドレス毎に集計するものであってもよい。本実施の形態における対応情報１３４の具体例については後述する。
【００３９】
削減時間算出部１１５は、対応情報作成部１１４が作成した対応情報１３４に基づき、第１メモリ１０１に格納されたデータを、第１メモリ１０１よりバンド幅の大きいメモリである第２メモリ１０２に格納した場合におけるメモリアクセスの削減時間をアドレス毎に算出する。具体的に、削減時間算出部１１５は、予め情報格納領域１３０に記憶された第１メモリ１０１及び第２メモリ１０２に対するメモリアクセスの速度等を算出するための各種情報である環境情報１３３に基づき、アドレス毎のメモリアクセスの削減時間を算出する。
【００４０】
なお、削減時間算出部１１５は、メモリアクセスの削減時間を所定範囲（例えば、３２（バイト））のアドレス毎に集計するものであってもよい。メモリアクセスの削減時間を算出する際の具体例については後述する。また、環境情報１３３の具体例については後述する。
【００４１】
データ配置決定部１１６は、第２メモリ１０２に記憶すべきデータを決定する。具体的に、データ配置決定部１１６は、削減時間算出部１１５が算出したアドレス毎のメモリアクセスの削減時間が大きいデータを、第２メモリ１０２に記憶すべきデータとして優先的に決定する。そして、データ配置決定部１１６は、第２メモリ１０２に記憶することができないデータを第１メモリ１０１に記憶すべきことを決定する。これにより、データ配置決定部１１６は、アクセス効率を高めるためのデータ配置を決定することが可能になる。
【００４２】
また、データ配置決定部１１６は、例えば、決定したデータ配置が行われた場合に対応したソースコードを作成するための情報を、指示情報１３５として作成する。第２メモリ１０２に移行すべきデータを決定する際の具体例については後述する。また、指示情報１３５の具体例については後述する。
【００４３】
ソースコード変換部１１７は、指示情報１３５に基づき、データ配置決定部１１６が決定したデータ配置が行われた場合に対応したソースコードを作成する。具体的に、ソースコード変換部１１７は、情報格納領域１３０に記憶されたソースコードを変換することによって、データ配置決定部１１６が決定したデータ配置が行われた場合に対応したソースコードを作成するものであってよい。
【００４４】
データ配置部１１８は、データ配置決定部１１６が決定したデータ配置に基づいて、第１メモリ１０１及び第２メモリ１０２に対してデータの記憶を行う。これにより、データ配置部１１８は、ソースコード変換部１１７が作成（変換）したソースコードの内容と、各データが実際に記憶されているメモリとの整合性を合わせることが可能になる。
【００４５】
［第１の実施の形態］
次に、第１の実施の形態について説明する。図７は、第１の実施の形態におけるデータ配置決定処理の概略を説明するフローチャート図である。
【００４６】
初めに、情報処理装置１０は、データ配置決定タイミングまで待機する（Ｓ１のＮＯ）。データ配置決定タイミングは、例えば、開発者から指示があったタイミングであったよい。具体的に、データ配置決定タイミングは、例えば、開発者がソースコードを作成した後であって、そのソースコードをコンパイルしたプログラムを本番稼働させる前である。
【００４７】
次に、データ配置決定タイミングになった場合（Ｓ１のＹＥＳ）、情報処理装置１０は、情報格納領域１３０に記憶されたソースコードのうち、データ配置の決定を行う必要があるソースコードをコンパイルして実行プログラムを作成する（Ｓ２）。コンパイルを行うソースコードは、例えば、開発者によって入力された情報に基づいて決定されるものであってよい。
【００４８】
そして、情報処理装置１０は、作成した実行プログラムを実行することにより、トレース情報１３２を取得する（Ｓ２）。トレース情報１３２は、例えば、実行プログラムの実行時において第１メモリ１０１に記憶されたデータに対するメモリアクセスが発生した場合に、情報処理装置１０によって取得されるものであってよい。なお、実行プログラムは、メモリアクセスが行われたことに応じて、トレース情報１３２を自動的に出力する処理を含んでいるものであってよい。
【００４９】
その後、情報処理装置１０は、情報格納領域１３０に記憶されたトレース情報１３２から、アドレスとメモリアクセスの頻度情報とを対応付けた対応情報１３４を作成する（Ｓ３）。対応情報１３４の具体例については後述する。
【００５０】
そして、情報処理装置１０は、第１メモリ１０１に格納されたデータを第２メモリ１０２に格納した場合におけるアドレス毎のメモリアクセスの削減時間を算出する（Ｓ４）。
【００５１】
すなわち、本実施の形態における情報処理装置１０は、各データを記憶すべきメモリを決定する際に、各データに対するメモリアクセスの頻度情報だけでなく、メモリアクセスが行われたデータのアドレスを取得する。これにより、情報処理装置１０は、メモリアクセスの要求が纏めて行われた場合に、メモリアクセスの頻度情報及びアドレスに基づいて計算を行うことで、実際に行われたメモリアクセスの情報（メモリアクセス対象のデータのサイズ等）を取得することが可能になる。
【００５２】
また、本実施の形態における情報処理装置１０は、取得した各情報に基づき、第１メモリ１０１に格納されたデータを第２メモリ１０２に格納した場合におけるメモリアクセスの削減時間を算出する。これにより、情報処理装置１０は、実際に行われたメモリアクセスの情報を考慮した形で、各データを第２メモリ１０２に記憶するか否かを決定する場合における優先順位を定めることが可能になる。
【００５３】
そして、情報処理装置１０は、Ｓ４で算出した削減時間が最も大きいデータを優先して、第２メモリ１０２に記憶すべきデータとして決定する（Ｓ５）。すなわち、情報処理装置１０は、第２メモリ１０２に記憶可能である限り、Ｓ４で算出した削減時間が大きいデータから順に、第２メモリ１０２への記憶を行う。
【００５４】
このように、第１の実施の形態によれば、情報処理装置１０は、ソースコードをコンパイルして実行したプログラムから得た第１メモリ１０１のトレース情報１３２から、メモリアクセスが行われたデータが格納された領域を示すアドレスを取得する。さらに、情報処理装置１０は、アドレス毎の頻度情報を取得する。そして、情報処理装置１０は、取得したアドレスと頻度情報とを対応付けた対応情報１３４を作成する。
【００５５】
次に、情報処理装置１０は、作成した対応情報１３４に基づき、第１メモリ１０１に格納されたデータを、第１メモリ１０１より高速なメモリである第２メモリ１０２に格納した場合におけるメモリアクセスの削減時間をアドレス毎に算出する。そして、情報処理装置１０は、削減時間が大きいアドレスに格納されたデータを優先して、第２メモリ１０２に記憶すべきデータとして決定する。
【００５６】
これにより、情報処理装置１０は、実際に行われたメモリアクセスの情報に基づく形で、各データを記憶すべきメモリを決定することが可能になる。
【００５７】
［第１の実施の形態の詳細］
次に、第１の実施の形態の詳細について説明する。図８から図１２は、第１の実施の形態におけるデータ配置決定処理の詳細を説明するフローチャート図である。また、図１３から図２０は、第１の実施の形態におけるデータ配置決定処理の詳細を説明する図である。図３、図７及び図１３から図２０を参照しながら、図８から図１２のデータ配置決定処理の詳細を説明する。
【００５８】
第１の実施の形態の詳細における情報処理装置１０は、連続するアドレスに格納された複数のデータに対して連続してメモリアクセスが行われた旨（以下、これを連続アクセスとも呼ぶ）を示す情報が、トレース情報１３２に含まれているか否かを判定する。そして、情報処理装置１０は、トレース情報１３２に連続アクセスが行われた旨を示す情報（以下、連続アクセス情報とも呼ぶ）が含まれている場合、連続するアドレス全体に対するメモリアクセスがまとめて行われたものとして、対応情報１３４を作成する。さらに、情報処理装置１０は、連続アクセスが行われたアドレス毎に、メモリアクセスの削減時間の算出を行う。
【００５９】
［Ｓ１及びＳ２の処理の詳細］
初めに、図７で説明したＳ１及びＳ２の処理の詳細について説明する。
【００６０】
情報処理装置１０のコンパイル実行部１１１は、データ配置決定タイミングまで待機する（図７のＳ１のＮＯ）。そして、データ配置決定タイミングになった場合（図７のＳ１のＹＥＳ）、情報処理装置１０のコンパイル実行部１１１は、図８に示すように、情報格納領域１３０から、データ配置の決定を行うソースコードを取得する（Ｓ１１）、その後、コンパイル実行部１１１は、取得したソースコードをコンパイルして実行プログラムを取得する（Ｓ１１）。
【００６１】
その後、情報処理装置１０のプログラム実行部１１２は、Ｓ１１で取得された実行プログラムを実行する（Ｓ１２）。そして、情報処理装置１０のトレース情報取得部１１３は、Ｓ１２における実行プログラムの実行に伴って、トレース情報１３２を取得する（Ｓ１３）。
【００６２】
Ｓ１２及びＳ１３において、開発者は、例えば、プログラム実行部１１２が実行プログラムを実行するための試験環境を用意するものであってもよい。これにより、開発者は、実行プログラムを本番環境（利用者にサービスを提供するために実行プログラムを動作させる環境）にリリースする前に、トレース情報１３２を取得し、データ配置決定処理を実行することが可能になる。すなわち、開発者は、本番環境に影響を与えることなく、データ配置決定処理を実行することが可能になる。
【００６３】
［Ｓ３の処理の詳細］
次に、図７で説明したＳ３の処理の詳細について説明する。
【００６４】
情報処理装置１０の対応情報作成部１１４は、図９に示すように、各変数に初期値を設定する（Ｓ２１）。具体的に、対応情報作成部１１４は、トレース情報１３２の行を示す「ｉ」に「１」を設定する。また、アドレスが増加する方向の連続アクセスが発生していることを示す「ｆｌａｇＡ」と、アドレスが減少する方向の連続アクセスが発生していることを示す「ｆｌａｇＢ」とに、連続アクセスが発生していないことを示す「０」を設定する。また、メモリアクセスが行われたデータの合計サイズである「ｓｉｚｅＡ」に「０」を設定する。また、連続アクセスが発生している間におけるメモリアクセスが行われたデータの合計サイズである「ｓｉｚｅＢ」に「０」を設定する。さらに、アクセス対象のデータのアドレスを格納する「ａｄｄｒＡ」に、トレース情報１３２の「アドレス」に設定される可能性がある値よりも大きい値（以下、単に十分に大きい値とも呼ぶ）を設定する。
【００６５】
（「ｉ」が「１」の場合の処理）
次に、対応情報作成部１１４は、トレース情報１３２の「ｉ」行目の「アドレス」に設定された情報（以下、「ａｄｄｒ＿ｉ」とも呼ぶ）と、トレース情報１３２の「ｉ」行目の「サイズ」に設定された情報（以下、「ｓｉｚｅ＿ｉ」とも呼ぶ）とを取得する（Ｓ２２）。また、対応情報作成部１１４は、トレース情報１３２の「ｉ＋１」行目の「アドレス」に設定された情報（以下、「ａｄｄｒ＿ｉ＋１」とも呼ぶ）と、「サイズ」に設定された情報（以下、「ｓｉｚｅ＿ｉ＋１」とも呼ぶ）とを取得する（Ｓ２２）。なお、「ａｄｄｒ＿ｉ」、「ｓｉｚｅ＿ｉ」、「ａｄｄｒ＿ｉ＋１」及び「ｓｉｚｅ＿ｉ＋１」に含まれる「ｉ」は、Ｓ２１で説明した変数である「ｉ」に対応する。
【００６６】
具体的に、対応情報作成部１１４は、例えば、図３に示すトレース情報１３２において、「ａｄｄｒ＿１」として、「番号」が「１」である行に対応して設定された「アドレス」である「０ｘ００００１０００（１０進数表記で４０９６）」を取得する。また、対応情報作成部１１４は、「ｓｉｚｅ＿１」として、「番号」が「１」である行に対応して設定された「サイズ」である「８」を取得する。同様に、対応情報作成部１１４は、「ａｄｄｒ＿２」として、「番号」が「２」である行に対応して設定された「アドレス」である「０ｘ００００００１０（１０進数表記で１６）」を取得する。また、対応情報作成部１１４は、「ｓｉｚｅ＿２」として、「番号」が「２」である行に対応して設定された「サイズ」である「８」を取得する。
【００６７】
そして、対応情報作成部１１４は、「ｓｉｚｅＡ」に設定された値及び「ｓｉｚｅＢ」に設定された値に、それぞれ「ｓｉｚｅ＿ｉ」を加算する更新を行う（Ｓ２３）。
【００６８】
具体的に、対応情報作成部１１４は、図３に示すトレース情報１３２の例において、「ｓｉｚｅＡ」の値である「０」に、「ｓｉｚｅ＿１」の値である「８」を加算し、「ｓｉｚｅＡ」の値として新たに「８」を設定する。同様に、対応情報作成部１１４は、「ｓｉｚｅＢ」の値である「０」に、「ｓｉｚｅ＿１」の値である「８」を加算し、「ｓｉｚｅＢ」の値として新たに「８」を設定する。
【００６９】
次に、対応情報作成部１１４は、トレース情報１３２から取得した情報に対応するメモリアクセスが、アドレスが増加する方向（昇順になる方向）の連続アクセス（以下、増加方向の連続アクセスとも呼ぶ）に含まれるメモリアクセスであるか否かを判定する（Ｓ２４）。
【００７０】
具体的に、対応情報作成部１１４は、例えば、「ａｄｄｒ＿ｉ」の値に「ｓｉｚｅ＿ｉ」の値を加算した値が、「ａｄｄｒ＿ｉ＋１」の値と等しい場合に、増加方向の連続アクセスが発生していると判定するものであってよい。すなわち、この場合、対応情報作成部１１４は、トレース情報１３２の「ｉ」行目の情報に対応するデータと「ｉ＋１」行目の情報に対応するデータとが、連続した領域に記憶されていると判定することが可能になる。
【００７１】
さらに、対応情報作成部１１４は、「ｆｌａｇＢ」が「０」である場合に、増加方向の連続アクセスが発生していると判定するものであってよい。すなわち、この場合、対応情報作成部１１４は、「ｉ」行目の情報に対応するメモリアクセスが、アドレスが減少する方向（降順になる方向）の連続アクセス（以下、減少方向の連続アクセスとも呼ぶ）に含まれるメモリアクセスではないと判定することが可能になる。
【００７２】
そして、増加方向の連続アクセスが発生していると判定した場合（Ｓ２４のＹＥＳ）、対応情報作成部１１４は、「ｆｌａｇＡ」に、増加方向の連続アクセスが発生していることを示す「１」を設定する（Ｓ２５）。
【００７３】
一方、増加方向の連続アクセスが発生していないと判定した場合（Ｓ２４のＮＯ）、対応情報作成部１１４は、トレース情報１３２から取得した情報に対応するメモリアクセスが、減少方向の連続アクセスに含まれるか否かを判定する（Ｓ２６）。
【００７４】
具体的に、対応情報作成部１１４は、例えば、「ａｄｄｒ＿ｉ」の値から「ｓｉｚｅ＿ｉ」の値を減算した値が、「ａｄｄｒ＿ｉ＋１」の値と等しい場合に、減少方向の連続アクセスが発生しているものと判定するものであってよい。さらに、対応情報作成部１１４は、例えば、「ｆｌａｇＡ」が「０」である場合に、減少方向の連続アクセスが発生しているものと判定するものであってよい。
【００７５】
そして、減少方向の連続アクセスが発生していると判定した場合（Ｓ２６のＹＥＳ）、対応情報作成部１１４は、「ｆｌａｇＢ」に、減少方向の連続アクセスが発生していることを示す「１」を設定する（Ｓ２７）。
【００７６】
図３に示すトレース情報の例において、「ａｄｄｒ＿１」の値の１０進数表記である「４０９６」に、「ｓｉｚｅ＿１」の値である「８」を加算した値は「４１０４」である。また、「ａｄｄｒ＿１」の値の１０進数表記である「４０９６」から、「ｓｉｚｅ＿１」の値である「８」を減算した値は「４０８８」である。そのため、いずれの値も「ａｄｄｒ＿２」の値の２進法表記である「１６」と一致しない。したがって、対応情報作成部１１４は、この場合、Ｓ２２においてトレース情報１３２から取得した情報に対応するメモリアクセスが、増加方向または減少方向の連続アクセスに含まれるメモリアクセスではないと判定する（Ｓ２４のＮＯ、Ｓ２６のＮＯ）。
【００７７】
次に、対応情報作成部１１４は、図１０に示すように、「ａｄｄｒＡ」に設定された値と、「ａｄｄｒ＿ｉ」に設定された値とを比較する（Ｓ３１）。そして、「ａｄｄｒＡ」に設定された値が「ａｄｄｒ＿ｉ」に設定された値よりも大きい場合（Ｓ３１のＹＥＳ）、対応情報作成部１１４は、「ａｄｄｒＡ」に、「ａｄｄｒ＿ｉ」に設定されている値を設定する（Ｓ３２）。一方、「ａｄｄｒＡ」に設定された値が「ａｄｄｒ＿ｉ」に設定された値よりも小さい場合（Ｓ３１のＮＯ）、対応情報作成部１１４は、「ａｄｄｒＡ」に、新たな値を設定しない。
【００７８】
すなわち、詳細については後述するが、増加方向または減少方向の連続アクセスが発生している場合（Ｓ２４のＹＥＳまたはＳ２６のＹＥＳ）、Ｓ３４において「ａｄｄｒＡ」に設定された値は初期化されない。したがって、対応情報作成部１１４は、「ａｄｄｒＡ」に、増加方向または減少方向の連続アクセスにおいてメモリアクセスされるアドレスのうち、先頭のアドレスが設定する。
【００７９】
なお、連続アクセスに含まれないメモリアクセスが発生した場合（Ｓ２４のＮＯ、Ｓ２６のＮＯ）、「ａｄｄｒＡ」には、十分に大きい値が設定されている（Ｓ２１、Ｓ３４）。そのため、対応情報作成部１１４は、この場合、「ａｄｄｒ＿ｉ」に設定されている値を「ａｄｄｒＡ」に設定することになる（Ｓ３１のＹＥＳ、Ｓ３２）。
【００８０】
具体的に、図３に示すトレース情報１３２の例において、「ａｄｄｒＡ」には、十分に大きい値が設定されている（Ｓ３１のＹＥＳ）。そのため、対応情報作成部１１４は、「ａｄｄｒＡ」に、「ａｄｄｒ＿１」に設定されている値である「０ｘ００００１０００」を設定する（Ｓ３２）。
【００８１】
次に、対応情報作成部１１４は、「ａｄｄｒＡ」に設定された値と、「ｓｉｚｅＢ」に設定された値とを対応付けて対応情報１３４として設定する（Ｓ３３）。
【００８２】
図１３は、「ｉ」に設定されている値が「１」である場合において、Ｓ３３の処理が行われた後の対応情報１３４の具体例である。図１３に示す対応情報１３４は、図４で説明した対応情報に含まれる項目に加えて、メモリアクセスされたデータのサイズを示す「サイズ」を項目として有する。
【００８３】
具体的に、図３に示すトレース情報１３２の例において、対応情報作成部１１４は、図１３に示すように、「ａｄｄｒ＿１」の値である「０ｘ００００１０００」を「アドレス」に設定する。同様に、対応情報作成部１１４は、「ｓｉｚｅＢ」の値である「８」を「サイズ」に設定する。また、対応情報作成部１１４は、「０ｘ００００１０００」を含む領域に対するメモリアクセスが１回行われたことを示す「１」を「アクセス頻度」に設定する。
【００８４】
その後、対応情報作成部１１４は、各変数の値を更新する（Ｓ３４）。具体的に、対応情報作成部１１４は、Ｓ２１の場合と同様に、「ｆｌａｇＡ」及び「ｆｌａｇＢ」に「０」を設定する。また、対応情報作成部１１４は、「ｓｉｚｅＢ」に「０」を設定する。また、対応情報作成部１１４は、「ａｄｄｒＡ」に十分に大きい値を設定する。すなわち、対応情報作成部１１４は、トレース情報１３２から取得した情報を対応情報１３４に反映させた場合、各変数の初期化を行う。
【００８５】
一方、図９のＳ２５またはＳ２７の処理が行われた場合、対応情報作成部１１４は、Ｓ３１の場合と同様に、「ａｄｄｒＡ」に設定された値と、「ａｄｄｒ＿ｉ」に設定された値とを比較する（Ｓ３５）。そして、「ａｄｄｒＡ」に設定された値が「ａｄｄｒ＿ｉ」に設定された値よりも大きい場合（Ｓ３５のＹＥＳ）、対応情報作成部１１４は、「ａｄｄｒ＿ｉ」に設定されている値を「ａｄｄｒＡ」に設定する（Ｓ３６）。また、「ａｄｄｒＡ」に設定された値が「ａｄｄｒ＿ｉ」に設定された値よりも小さい場合（Ｓ３５のＮＯ）、対応情報作成部１１４は、「ａｄｄｒＡ」に新たな値を設定しない。
【００８６】
次に、対応情報作成部１１４は、トレース情報１３２の「ｉ」行目が最終行であるか否かを判定する（Ｓ３７）。そして、「ｉ」行目が最終行でないと判定した場合（Ｓ３７のＮＯ）、対応情報作成部１１４は、「ｉ」に設定されている値に「１」を加算する（Ｓ３８）。一方、「ｉ」行目が最終行であると判定した場合（Ｓ３７のＹＥＳ）、対応情報作成部１１４は、Ｓ２２以降の処理を再度実行する。
【００８７】
具体的に、上記の図３に示す例において、「ｉ」行目が最終行（１１行目）でないため（Ｓ３７のＮＯ）、対応情報作成部１１４は、「ｉ」に設定されている値である「１」に「１」を加算した「２」を、新たな「ｉ」として設定する（Ｓ３８）。
【００８８】
（「ｉ」が「２」の場合の処理）
図９に戻り、対応情報作成部１１４は、トレース情報１３２の２行目の「アドレス」に設定された値である「０ｘ００００００１０」を「ａｄｄｒ＿２」として取得する（Ｓ２２）。また、対応情報作成部１１４は、トレース情報１３２の２行目の「サイズ」に設定された値である「８」を「ｓｉｚｅ＿２」として取得する（Ｓ２２）。同様に、対応情報作成部１１４は、トレース情報１３２の３行目の「アドレス」に設定された値である「０ｘ００００００１８（１０進数表記で２４）」を「ａｄｄｒ＿３」として取得する（Ｓ２２）。また、対応情報作成部１１４は、トレース情報１３２の３行目の「サイズ」に設定された値である「８」を「ｓｉｚｅ＿３」として取得する（Ｓ２２）。
【００８９】
そして、対応情報作成部１１４は、「ｓｉｚｅＡ」に設定された値である「８」に、「ｓｉｚｅ＿２」の値である「８」を加算した「１６」を、新たな「ｓｉｚｅＡ」の値として設定する（Ｓ２３）。同様に、対応情報作成部１１４は、「ｓｉｚｅＢ」に設定された値である「０」に、「ｓｉｚｅ＿２」の値である「８」を加算した「８」を、新たな「ｓｉｚｅＢ」の値として設定する（Ｓ２３）。
【００９０】
次に、対応情報作成部１１４は、トレース情報１３２から取得した情報に対応するメモリアクセスが、連続アクセスに含まれるか否かの判定を行う（Ｓ２４、Ｓ２６）。具体的に、「ａｄｄｒ＿２」の値の１０進数表記である「１６」に、「ｓｉｚｅ＿２」の値である「８」を加算した値である「２４」は、「ａｄｄｒ＿３」の値の２進法表記である「２４」と一致する。したがって、対応情報作成部１１４は、トレース情報１３２から取得した情報に対応するメモリアクセスは、増加方向の連続アクセスに含まれるメモリアクセスであると判定する（Ｓ２４のＹＥＳ）。そのため、対応情報作成部１１４は、「ｆｌａｇＡ」の値を「１」に設定する（Ｓ２５）。
【００９１】
そして、「ａｄｄｒＡ」には、十分に大きい値が設定されているため（Ｓ３５のＹＥＳ）、対応情報作成部１１４は、「ａｄｄｒ＿２」の値である「０ｘ００００００１０」を「ａｄｄｒＡ」に設定する（Ｓ３６）。その後、トレース情報１３２の２行目が最終行ではないため（Ｓ３７のＮＯ）、対応情報作成部１１４は、「ｉ」の値を「３」に更新する（Ｓ３８）。
【００９２】
すなわち、「ｉ」の値が「２」である場合、対応情報作成部１１４は、Ｓ３３の処理を行わない。そのため、対応情報作成部１１４は、ここでは対応情報１３４に情報の設定を行わない。
【００９３】
（「ｉ」が「３」の場合の処理）
図９に戻り、対応情報作成部１１４は、トレース情報１３２の３行目の「アドレス」に設定された値である「０ｘ００００００１８」を「ａｄｄｒ＿３」として取得する（Ｓ２２）。また、対応情報作成部１１４は、トレース情報１３２の３行目の「サイズ」に設定された値である「８」を「ｓｉｚｅ＿３」として取得する（Ｓ２２）。同様に、対応情報作成部１１４は、トレース情報１３２の４行目の「アドレス」に設定された値である「０ｘ００００００２０（１０進数表記で３２）」を「ａｄｄｒ＿４」として取得する（Ｓ２２）。また、対応情報作成部１１４は、トレース情報１３２の４行目の「サイズ」に設定された値である「８」を「ｓｉｚｅ＿４」として取得する（Ｓ２２）。
【００９４】
次に、対応情報作成部１１４は、「ｓｉｚｅＡ」に設定された値である「８」に「ｓｉｚｅ＿３」の値である「８」を加算した「２４」を、新たな「ｓｉｚｅＡ」の値として設定する（Ｓ２３）。同様に、対応情報作成部１１４は、「ｓｉｚｅＢ」に設定された値である「８」に「ｓｉｚｅ＿３」の値である「８」を加算した「１６」を、新たな「ｓｉｚｅＢ」の値として設定する（Ｓ２３）。
【００９５】
すなわち、Ｓ２４またはＳ２６の処理において、増加方向または減少方向の連続アクセスが発生していると判定された場合、対応情報作成部１１４は、「ｓｉｚｅＢ」及び「ａｄｄｒＡ」等の変数の初期化を行わない（Ｓ２４のＹＥＳ、Ｓ２６のＹＥＳ、Ｓ３４）。そのため、「ｓｉｚｅＢ」には、連続アクセスが発生している間にメモリアクセスが行われたデータの合計サイズが設定される。また、「ａｄｄｒＡ」には、連続アクセスが発生している間にメモリアクセスが行われたアドレスのうち、先頭のアドレスが設定される。
【００９６】
そして、「ａｄｄｒ＿３」の値の２進法表記である「２４」に、「ｓｉｚｅ＿３」の値である「８」を加算した値である「３２」は、「ａｄｄｒ＿４」の値の２進法表記である「３２」と一致する。したがって、対応情報作成部１１４は、トレース情報１３２から取得した情報に対応するメモリアクセスは、増加方向の連続アクセスに含まれるメモリアクセスであると判定する（Ｓ２４のＹＥＳ）。そのため、対応情報作成部１１４は、「ｆｌａｇＡ」の値として「１」を維持する（Ｓ２５）。
【００９７】
次に、「ａｄｄｒＡ」には、「ａｄｄｒ＿２」の値である「０ｘ００００００１０」が設定されている。そのため、「ａｄｄｒＡ」の値である「０ｘ００００００１０」は、「ａｄｄｒ＿３」の値である「０ｘ００００００１８」よりも小さい（Ｓ３５のＮＯ）。したがって、対応情報作成部１１４は、「ａｄｄｒＡ」の値の設定を行わない。すなわち、この場合、「ａｄｄｒＡ」は、「ａｄｄｒ＿２」の情報を維持する。
【００９８】
そして、トレース情報１３２の３行目が最終行ではないため（Ｓ３７のＮＯ）、対応情報作成部１１４は、「ｉ」の値を「４」に更新する（Ｓ３８）。
【００９９】
なお、「ｉ」の値が「４」の場合における対応情報作成部１１４の処理は、「ｉ」が「３」の場合における対応情報作成部１１４の処理と同じ内容であるため、説明を省略する。
【０１００】
（「ｉ」が「５」の場合の処理）
そして、「ｉ」の値が「５」に更新された場合（Ｓ３８）、対応情報作成部１１４は、トレース情報１３２の５行目の「アドレス」に設定された値である「０ｘ００００００２８（１０進数表記で４０）」を「ａｄｄｒ＿５」として取得する（Ｓ２２）。そして、対応情報作成部１１４は、トレース情報１３２の５行目の「サイズ」に設定された値である「８」を「ｓｉｚｅ＿５」として取得する（Ｓ２２）。さらに、対応情報作成部１１４は、トレース情報１３２の６行目の「アドレス」に設定された値である「０ｘ００００００７８（１０進数表記で１２０）」を「ａｄｄｒ＿６」として取得する（Ｓ２２）。そして、対応情報作成部１１４は、トレース情報１３２の６行目の「サイズ」に設定された値である「８」を「ｓｉｚｅ＿６」として取得する（Ｓ２２）。
【０１０１】
そして、対応情報作成部１１４は、「ｓｉｚｅＡ」に設定された値である「３２」に、「ｓｉｚｅ＿５」の値である「８」を加算した「４０」を、新たな「ｓｉｚｅＡ」の値として設定する（Ｓ２３）。同様に、対応情報作成部１１４は、「ｓｉｚｅＢ」に設定された値である「２４」に、「ｓｉｚｅ＿５」の値である「８」を加算した「３２」を、新たな「ｓｉｚｅＢ」の値として設定する（Ｓ２３）。
【０１０２】
ここで、「ａｄｄｒ＿５」の値である「４０」に、「ｓｉｚｅ＿５」の値である「８」を加算した値である「４８」は、「ａｄｄｒ＿５」の値の２進法表記である「１２０」と一致しない。また、「ａｄｄｒ＿５」の値である「４０」から、「ｓｉｚｅ＿５」の値である「８」を減算した値である「３２」は、「ａｄｄｒ＿５」の値の２進法表記である「１２０」と一致しない。したがって、対応情報作成部１１４は、トレース情報１３２から取得した情報に対応するメモリアクセスが、連続アクセスに含まれるメモリアクセスではないと判定する（Ｓ２４のＮＯ、Ｓ２６のＮＯ）。
【０１０３】
次に、「ａｄｄｒＡ」には、「ａｄｄｒ＿２」の値である「０ｘ００００００１０」が設定されている。そのため、「ａｄｄｒＡ」の値である「０ｘ００００００１０」は、「ａｄｄｒ＿５」の値である「０ｘ００００００２８」よりも小さい（Ｓ３５のＮＯ）。したがって、対応情報作成部１１４は、「ａｄｄｒＡ」に設定されている値を維持する。
【０１０４】
そして、対応情報作成部１１４は、「ａｄｄｒＡ」に設定された値と、「ｓｉｚｅＢ」に設定された値とを対応付けて対応情報１３４に設定する（Ｓ３３）。
【０１０５】
図１４は、「ｉ」に設定されている値が「５」である場合において、Ｓ３３の処理が行われた後の対応情報１３４の具体例である。対応情報作成部１１４は、図１４に示すように、「ａｄｄｒＡ」の値である「０ｘ００００００１０」を「アドレス」に設定する。同様に、対応情報作成部１１４は、「ｓｉｚｅＢ」の値である「３２」を「サイズ」に設定する。また、対応情報作成部１１４は、「０ｘ００００００１０」を含む領域に対するメモリアクセスが１回行われたことを示す「１」を「アクセス頻度」に設定する。
【０１０６】
図１０に戻り、対応情報作成部１１４は、各変数の値を更新する（Ｓ３４）。具体的に、対応情報作成部１１４は、「ｆｌａｇＡ」及び「ｆｌａｇＢ」に「０」を設定する。また、対応情報作成部１１４は、「ｓｉｚｅＢ」に「０」を設定する。さらに、対応情報作成部１１４は、「ａｄｄｒＡ」に十分に大きい値を設定する。
【０１０７】
そして、トレース情報１３２の５行目が最終行ではないため（Ｓ３７のＮＯ）、対応情報作成部１１４は、「ｉ」の値を「６」に更新する（Ｓ３８）。以降のＳ３の処理については、既に説明した場合と同じであるため省略する。
【０１０８】
図１５は、図３に示すトレース情報１３２に含まれる全ての情報を反映させた後の対応情報１３４の具体例である。図３に示すトレース情報１３２の例において、「番号」が「７」及び「１１」である情報の内容は、「番号」が「１」である情報の内容と同じである。すなわち、図３に示すトレース情報１３２は、「アドレス」が「０ｘ００００１０００」から「８（バイト）」の領域に対するメモリアクセスが３回発生したことを示している。したがって、対応情報作成部１１４は、「番号」が「７」及び「１１」である情報について新たな行を追加することなく、図１５に示すように、「番号」が「１」である行の「アクセス頻度」を「３」に更新するものであってよい。図１５の他の情報については説明を省略する。
【０１０９】
［Ｓ４の処理の詳細］
次に、図７で説明したＳ４の処理の詳細について説明する。
【０１１０】
情報処理装置１０の削減時間算出部１１５は、図１１に示すように、各変数に初期値を設定する（Ｓ５１）。具体的に、削減時間算出部１１５は、「ｉ」に「１」を設定する。
【０１１１】
そして、削減時間算出部１１５は、対応情報１３４の「ｉ」行目に対応するデータが、第１メモリ１０１に格納されている場合におけるメモリアクセスに要する時間を算出する。また、削減時間算出部１１５は、対応情報１３４の「ｉ」行目に対応するデータが、第２メモリ１０２に格納されている場合におけるメモリアクセスに要する時間を算出する。そして、削減時間算出部１１５は、それぞれ算出したメモリアクセスに要する時間の差を算出する（Ｓ５２）。
【０１１２】
具体的に、削減時間算出部１１５は、例えば、以下の式（２）及び式（３）を用いることにより、各メモリアクセスに要する時間の算出を行う。
【０１１３】
Ｔ１＝ｍａｘ（０，（ｘ−Ｌｉｎｅｓｉｚｅ）／Ｂ１）＋Ｌ１  ・・・  式（２）
Ｔ２＝ｍａｘ（０，（ｘ−Ｌｉｎｅｓｉｚｅ）／Ｂ２）＋Ｌ２  ・・・  式（３）
式（２）及び式（３）において、「ｘ」は、メモリアクセス対象のデータのサイズである。また、「Ｂ１」は、第１メモリ１０１のバンド幅（メモリが単位時間あたりに転送可能なデータのサイズ）であり、「Ｂ２」は、第２メモリ１０２のバンド幅である。そして、「Ｌ１」は、ＣＰＵ１０３と第１メモリ１０１との間で通信を行う場合におけるレイテンシの値であり、「Ｌ２」は、ＣＰＵ１０３と第２メモリ１０２との間で通信を行う場合におけるレイテンシの値である。さらに、「Ｌｉｎｅｓｉｚｅ」は、メモリが１回に読み出すデータのサイズである。また、「Ｔ１」は、ＣＰＵ１０３が第１メモリ１０１に対してメモリアクセスを行った場合に要する時間であり、「Ｔ２」は、ＣＰＵ１０３が第２メモリ１０２に対してメモリアクセスを行った場合に要する時間である。
【０１１４】
なお、ｍａｘ（０，（ｘ−Ｌｉｎｅｓｉｚｅ）／Ｂ１）は、「０」及び「（ｘ−Ｌｉｎｅｓｉｚｅ）／Ｂ１」の値のうち、大きい方の値を示す関数である。また、以下、「Ｂ１」が「４」であり、「Ｌ１」が「４０」であり、「Ｂ２」が「１６」であり、「Ｌ２」が「４０」であり、「Ｌｉｎｅｓｉｚｅ」が「８」であるものとして説明を行う。さらに、「Ｌｉｎｅｓｉｚｅ」の単位は、例えば、Ｂ（バイト）であり、「Ｔ１」、「Ｔ２」、「Ｌ１」及び「Ｌ２」の単位は、例えば、ｍｓｅｃ（ミリセック）であり、「Ｂ１」及び「Ｂ２」の単位は、例えば、Ｂ（バイト）／ｍｓｅｃ（ミリセック）である。
【０１１５】
以下、図１５の対応情報１３４に含まれる情報に基づいて、メモリアクセスに要する時間を算出する具体例を説明する。
【０１１６】
図１５の対応情報１３４において、「番号」が「１」である情報に対応する「サイズ」は「８」である。したがって、削減時間算出部１１５は、式（２）に基づき、「番号」が「１」である情報に対応する「サイズ」に設定された値である「８」から「Ｌｉｎｅｓｉｚｅ」に設定された値である「８」を減算した値を、「Ｂ１」の値である「４」で除算した値である「０」を算出する。そして、「０」と「０」とは等しいため、削減時間算出部１１５は、ｍａｘ（０，（ｘ−Ｌｉｎｅｓｉｚｅ）／Ｂ１）の値として「０」を算出する。さらに、削減時間算出部１１５は、算出した「０」に、「Ｌ１」の値である「４０」を加算した「４０」を「Ｔ１」の値として算出する。
【０１１７】
次に、削減時間算出部１１５は、式（３）に基づき、「番号」が「１」である情報に対応する「サイズ」に設定された値である「８」から「Ｌｉｎｅｓｉｚｅ」に設定された値である「８」を減算した値を、「Ｂ２」の値である「１６」で除算した値である「０」を算出する。そして、「０」と「０」とは等しいため、削減時間算出部１１５は、ｍａｘ（０，（ｘ−Ｌｉｎｅｓｉｚｅ）／Ｂ２）の値として「０」を算出する。さらに、削減時間算出部１１５は、算出した「０」に、「Ｌ２」の値である「４０」を加算した「４０」を「Ｔ２」の値として算出する。
【０１１８】
そして、削除時間算出部１１５は、「番号」が「１」である情報に対応するデータを第１メモリ１０１から第２メモリ１０２に移行した場合におけるメモリアクセスの削減時間として、「Ｔ１」の値である「４０」から「Ｔ２」の値である「４０」を減算した「０」を算出する。
【０１１９】
さらに、「アクセス頻度」に「３」が設定されているため、削減時間算出部１１５は、算出した「０」に「３」を乗算した「０」を算出する。これにより、削減時間算出部１１５は、「番号」が「１」である情報に対応するデータを第１メモリ１０１から第２メモリ１０２に移行した場合におけるメモリアクセスの総削減時間として、「０」を算出することが可能になる。
【０１２０】
図１１に戻り、削減時間算出部１１５は、Ｓ５２で算出した総削減時間を対応情報１３４に設定する（Ｓ５３）。
【０１２１】
図１６は、Ｓ５２で算出した総削減時間を設定した場合における対応情報１３４の具体例である。図１６に示す対応情報１３４は、図１５で説明した対応情報１３４が有する項目に加え、Ｓ５２で算出した総削減時間を設定する「削減時間」の項目を有する。具体的に、削減時間算出部１１５は、図１６に示すように、「アドレス」が「０ｘ００００１０００」に対応する「削減時間」に、Ｓ５２で算出した総削減時間である「０」を設定する。なお、「削減時間」の単位は、例えば、ｍｓｅｃである。
【０１２２】
図１１に戻り、削減時間算出部１１５は、「ｉ」行目が最終行であるか否かを判定する（Ｓ５４）。そして、「ｉ」行目が最終行である場合（Ｓ５４のＹＥＳ）、削減時間算出部１１５は、Ｓ４の処理を終了する。一方、「ｉ」行目が最終行でない場合（Ｓ５４のＮＯ）、削減時間算出部１１５は、「ｉ」に設定された値に「１」を加算し（Ｓ５５）、Ｓ５２以降の処理を再度実行する。
【０１２３】
具体的に、「ｉ」に設定された値が「１」である場合、「ｉ」行目は最終行（５行目）でない。そのため、削減時間算出部１１５は、「ｉ」の値である「１」に「１」を加算した「２」を、新たな「ｉ」の値として設定する。
【０１２４】
次に、「ｉ」に設定された値が「２」である場合におけるＳ５２の処理の具体例を説明する。
【０１２５】
図１５の対応情報１３４において、「番号」が「２」である情報に対応する「サイズ」は「３２」である。したがって、削減時間算出部１１５は、式（２）に基づき、「番号」が「２」である情報に対応する「サイズ」に設定された値である「３２」から「Ｌｉｎｅｓｉｚｅ」に設定された値である「８」を減算した値を、「Ｂ１」の値である「４」で除算した値である「６」を算出する。そして、「６」は「０」よりも大きいため、削減時間算出部１１５は、ｍａｘ（０，（ｘ−Ｌｉｎｅｓｉｚｅ）／Ｂ１）の値として「６」を算出する。さらに、削減時間算出部１１５は、算出した「６」に、「Ｌ１」の値である「４０」を加算した「４６」を「Ｔ１」の値として算出する。
【０１２６】
次に、削減時間算出部１１５は、式（３）に基づき、「番号」が「１」である情報に対応する「サイズ」に設定された値である「３２」から「Ｌｉｎｅｓｉｚｅ」に設定された値である「８」を減算した値を、「Ｂ２」の値である「１６」で除算した値である「１．５」を算出する。そして、「１．５」は「０」よりも大きいため、削減時間算出部１１５は、ｍａｘ（０，（ｘ−Ｌｉｎｅｓｉｚｅ）／Ｂ２）の値として「１．５」を算出する。さらに、削減時間算出部１１５は、算出した「１．５」に、「Ｌ２」の値である「４０」を加算した「４１．５」を「Ｔ２」の値として算出する。
【０１２７】
そして、削減時間算出部１１５は、「番号」が「１」である情報に対応するデータを第１メモリ１０１から第２メモリ１０２に移行した場合におけるメモリアクセスの削減時間として、「Ｔ１」の値である「４６」から「Ｔ２」の値である「４１．５」を減算した「４．５」を算出する。
【０１２８】
さらに、「アクセス頻度」に「１」が設定されているため、削減時間算出部１１５は、算出した「４．５」に「１」を乗算した「４．５」を算出する。これにより、削減時間算出部１１５は、「番号」が「２」である情報に対応するデータを第１メモリ１０１から第２メモリ１０２に移行した場合におけるメモリアクセスの総削減時間として、「４．５」を算出することが可能になる。
【０１２９】
図１１に戻り、削減時間算出部１１５は、Ｓ５２で算出した総削減時間を対応情報１３４に設定する（Ｓ５３）。
【０１３０】
図１７は、Ｓ５２で算出した総削減時間を設定した場合における対応情報１３４の具体例である。具体的に、削減時間算出部１１５は、図１７に示すように、「アドレス」が「０ｘ００００００１０」に対応する「削減時間」に、Ｓ５２で算出した総削減時間である「４．５」を設定する。
【０１３１】
その後、削減時間算出部１１５は、図１８に示すように、対応情報１３４に含まれる全ての情報に基づいてメモリアクセスの総削減時間を算出し、「削減時間」に設定する。図１８の他の情報については説明を省略する。
【０１３２】
［Ｓ５の処理の詳細］
次に、図７で説明したＳ５の処理の詳細について説明する。
【０１３３】
情報処理装置１０のデータ配置決定部１１６は、図１２に示すように、各変数に初期値を設定する（Ｓ６１）。
【０１３４】
具体的に、データ配置決定部１１６は、「ＲｅｓｔＭｅｍ」に、第２メモリ１０２のうち、新たなデータの割り当てが可能な領域（以下、割当可能領域）のサイズを設定する。以下、第２メモリ１０２の割当可能領域が４８（バイト）であり、データ配置決定部１１６は、Ｓ６１において、「ＲｅｓｔＭｅｍ」に「４８」を設定したものとして説明を行う。
【０１３５】
続いて、データ配置決定部１１６は、対応情報１３４から、１バイトあたりの「削減時間」が最も大きい情報の「サイズ」を抽出し、「ＤａｔａＭｅｍ」に設定する（Ｓ６２）。
【０１３６】
具体的に、図１８に示す対応情報１３４の場合においては、「番号」が「２」の情報に対応する「削減時間」が「４．５」であり、「サイズ」が「３２」である。そのため、「番号」が「２」の情報に対応する１バイトあたりの「削減時間」は、「削減時間」である「４．５」を「サイズ」である「３２」で除算した「０．１４（有効数字２桁）」である。
【０１３７】
また、図１８に示す対応情報１３４の場合においては、「番号」が「４」の情報に対応する「削減時間」が「１．５」であり、「サイズ」が「１６」である。そのため、「番号」が「４」の情報に対応する１バイトあたりの「削減時間」は、「削減時間」である「１．５」を「サイズ」である「１６」で除算した「０．０９３（有効数字２桁）」である。
【０１３８】
さらに、図１８に示す対応情報１３４の場合において、「番号」が「１」、「３」及び「５」の情報に対応する「削減時間」は「０」であるため、それぞれの情報に対応する１バイトあたりの「削減時間」は、「０」である。したがって、データ配置決定部１１６は、「番号」が「２」である情報に対応する「サイズ」である「３２」を「ＤａｔａＭｅｍ」に設定する。
【０１３９】
次に、データ配置決定部１１６は、「ＲｅｓｔＭｅｎ」に設定された値と「ＤａｔａＭｅｍ」に設定された値とを比較する（Ｓ６３）。そして、「ＲｅｓｔＭｅｎ」に設定された値が「ＤａｔａＭｅｍ」に設定された値よりも大きい場合（Ｓ６３のＹＥＳ）、データ配置決定部１１６は、Ｓ６２で抽出した情報に対応するデータを、指示情報１３５として情報格納領域１３０に記憶する（Ｓ６４）。
【０１４０】
図１９は、Ｓ６４の処理を実行した場合における指示情報１３５の具体例である。図１９に示す指示情報１３５は、対応情報１３４と同じ項目を有している。具体的に、データ配置決定部１１６は、図１９に示すように、図１８に示す対応情報１３４における「番号」が「２」である情報と同じ情報を、指示情報１３５として設定する。すなわち、データ配置決定部１１６は、この場合、図１８に示す対応情報１３４における「番号」が「２」である情報に対応するデータを、第２メモリ１０２に記憶すべきデータとして決定する。
【０１４１】
図１２に戻り、データ配置決定部１１６は、「ＲｅｓｔＭｅｍ」に設定された値から「ＤａｔａＭｅｍ」に設定された値を減算して取得した値を、新たな「ＲｅｓｔＭｅｍ」の値として設定する（Ｓ６５）。
【０１４２】
具体的に、図１９に示す指示情報１３５の例においては、「ＲｅｓｔＭｅｍ」に設定された値である「４８」から「ＤａｔａＭｅｍ」に設定された値である「３２」を減算して取得した値である「１６」を、新たな「ＲｅｓｔＭｅｍ」として設定する。
【０１４３】
一方、「ＲｅｓｔＭｅｎ」に設定された値が「ＤａｔａＭｅｍ」に設定された値よりも小さい場合（Ｓ６３のＮＯ）、データ配置決定部１１６は、Ｓ６４及びＳ６５の処理を実行しない。すなわち、データ配置決定部１１６は、この場合、第２メモリ１０２における記憶可能領域が不足しているため、第２メモリ２が「ＲｅｓｔＭｅｍ」に設定された情報に対応するデータを記憶することができないと判定する。
【０１４４】
続いて、データ配置決定部１１６は、対応情報１３４からＳ５２で抽出した情報を削除する（Ｓ６６）。そして、データ配置決定部１１６は、Ｓ６６において情報の削除を行った後、対応情報１３４に情報が存在しない場合（Ｓ６７のＹＥＳ）、Ｓ５の処理を終了する。一方、Ｓ６６において情報の削除を行った後において、対応情報１３４に情報が存在する場合（Ｓ６７のＮＯ）、データ配置決定部１１６は、Ｓ６２以降の処理を再度実行する。
【０１４５】
次に、データ配置決定部１１６は、Ｓ６６において情報が削除された対応情報１３４から、「削減時間」が最も大きい情報を抽出して「ＤａｔａＭｅｍ」に設定する（Ｓ６２）。具体的に、図１８に示す対応情報１３４の場合において、「番号」が「２」である情報は既に削除されている。そのため、データ配置決定部１１６は、１バイトあたりの「削減時間」が「０．０９３（有効数字２桁）」である情報（「番号」が「４」である情報）に対応する「サイズ」である「１６」を「ＤａｔａＭｅｍ」に設定する。
【０１４６】
そして、「ＲｅｓｔＭｅｎ」に設定された値である「１６」が「ＤａｔａＭｅｍ」に設定された値である「１６」と等しいため（Ｓ６３のＹＥＳ）、データ配置決定部１１６は、Ｓ６２で抽出した情報に対応するデータを指示情報１３５として情報格納領域１３０に記憶する（Ｓ６４）。
【０１４７】
図２０は、図１９に示す状態の後、Ｓ６４の処理が実行された場合における指示情報１３５の具体例である。図２０に示すように、データ配置決定部１１６は、図１８に示す対応情報１３４における「番号」が「４」である情報を指示情報１３５として設定する。
【０１４８】
図１２に戻り、データ配置決定部１１６は、「ＲｅｓｔＭｅｍ」に設定された値から「ＤａｔａＭｅｍ」に設定された値を減算して取得した値を、新たな「ＲｅｓｔＭｅｍ」の値として設定する（Ｓ６５）。
【０１４９】
具体的に、図１９に示す指示情報１３５の例において、データ配置決定部１１６は、「ＲｅｓｔＭｅｍ」に設定された値である「１６」から「ＤａｔａＭｅｍ」に設定された値である「１６」を減算して取得した値である「０」を、新たな「ＲｅｓｔＭｅｍ」として設定する。
【０１５０】
ここで、「ＲｅｓｔＭｅｍ」に「０」が設定されたため、データ配置決定部１１６は、新たなデータを第２メモリ１０２に移行すべきデータとして決定することができない（Ｓ６３のＮＯ）。したがって、データ配置決定部１１６は、対応情報１３４から全ての情報が削除した後、Ｓ５の処理を終了する（Ｓ６６、Ｓ６７）。すなわち、データ配置決定部１１６は、図１８に示す対応情報１３４のうち、「番号」が「１」、「３」及び「５」の情報に対応するデータを、第１メモリ１０１に記憶すべきと決定する。
【０１５１】
このように、第１の実施の形態において、情報処理装置１０は、トレース情報１３２において連続アクセスが発生した場合、その連続するアドレス全体に対するメモリアクセスが纏めて行われたものとして、トレース情報１３２から情報を取得する。そして、第１の実施の形態における情報処理装置１０は、取得した情報に基づき、第１メモリ１０１に記憶したデータを第２メモリ１０２に移行した場合におけるメモリアクセスの削減時間を算出する。その後、第１の実施の形態における情報処理装置１０は、メモリアクセスの削減時間（例えば、１バイトあたりの削減時間）が大きいものを優先して、第２メモリ１０２に記憶すべきデータを決定する。
【０１５２】
これにより、情報処理装置１０は、連続アクセスが発生した場合においても、メモリアクセスの効率化を図ることができるデータ配置を決定することが可能になる。
【０１５３】
［第２の実施の形態］
次に、第２の実施の形態について説明する。図２３から図２６は、第２の実施の形態におけるデータ配置決定処理の詳細を説明するフローチャート図である。また、図２１、図２２及び図２７から図３５は、第２の実施の形態におけるデータ配置決定処理の詳細を説明する図である。図１２、図２１、図２２及び図２７から図３５を参照しながら、図２３から図２６のデータ配置決定処理の詳細を説明する。
【０１５４】
第２の実施の形態では、第１メモリ１０１及び第２メモリ１０２内の各バンクが、Ｒｏｗｂｕｆｆｅｒ領域（以下、単にバッファ領域とも呼ぶ）を有する場合を想定している。Ｒｏｗｂｕｆｆｅｒ領域は、前回メモリアクセスされた各バンク内のデータを記憶（保持）する領域である。
【０１５５】
図２１は、第２の実施の形態における第１メモリ１０１の具体例を説明する図である。図２３２における第１メモリ１０１は、バンク１０２ａ、バンク１０２ｂ、バンク１０２ｃ及びバンク１０２ｄを有する。そして、それぞれのバンクは、上記のＲｏｗｂｕｆｆｅｒ領域を有する。
【０１５６】
具体的に、図２１に示す例において、ＣＰＵ１０３からバンク１０２ａに記憶されたデータに対するメモリアクセスの要求があった場合、第１メモリ１０１は、バンク１０２ａ内のＲｏｗｂｕｆｆｅｒ領域を参照する。そして、第１メモリ１０１は、メモリアクセス対象のデータがバンク１０２ａ内のＲｏｗｂｕｆｆｅｒ領域に記憶されているか否かを判定する。
【０１５７】
その結果、メモリアクセス対象のデータがバンク１０２ａ内のＲｏｗｂｕｆｆｅｒ領域に記憶されている場合、第１メモリ１０１は、バンク１０２ａ内の他の領域（以下、メモリセル領域とも呼ぶ）に記憶されたデータに対してメモリアクセスを行わない。そして、第１メモリ１０１は、バンク１０２ａ内のＲｏｗｂｕｆｆｅｒ領域に記憶されているメモリアクセス対象のデータをＣＰＵ１０３に返す。一方、メモリアクセス対象のデータがバンク１０２ａ内のＲｏｗｂｕｆｆｅｒ領域に記憶されていない場合、第１メモリ１０１は、バンク１０２ａ内の他の領域に記憶されたデータに対してメモリアクセスを行う。そして、第１メモリ１０１は、この場合、メモリアクセス対象のデータをバンク１０２ａ内のＲｏｗｂｕｆｆｅｒ領域に書き込んでから、メモリアクセス対象のデータをＣＰＵ１０３に返す。
【０１５８】
すなわち、第１メモリ１０１は、メモリアクセス対象のデータがＲｏｗｂｕｆｆｅｒ領域に記憶されている確率が高いほど、効率的なメモリアクセスを行うことが可能になる。そのため、メモリアクセスの要求元（ＣＰＵ１０３）は、一般的に、第１メモリ１０１に対するメモリアクセスの要求が蓄積された場合、Ｒｏｗｂｕｆｆｅｒ領域に格納されたデータに対するメモリアクセスが増えるように、メモリアクセスの要求順序の並び替えを行う。
【０１５９】
そこで、第２の実施の形態における情報処理装置１０は、メモリアクセスの要求元において行われるメモリアクセスの要求順序の並び替えを考慮に入れた形で、第２メモリ１０２に記憶すべきデータを決定する。これにより、情報処理装置１０は、実際に行われるメモリアクセスの状態に沿った形で、データの配置を決定することが可能になる。なお、以下、第１メモリ１０１は、メモリアクセスされたデータをＲｏｗｂｕｆｆｅｒ領域に記憶する際に、メモリアクセスされたデータとアドレスの一部分が同じであるデータ全てについて記憶を行うものとして説明を行う。
【０１６０】
図２２は、ＣＰＵ１０３がメモリアクセスを行う際に指定するアドレスの具体例である。図２２に示すアドレスは、データが格納されているメモリセルの行を示す「Ｒｏｗ  ｎｕｍｂｅｒ」と、データが格納されているバンクを示す「Ｂａｎｋ」とを有する。また、図２２に示すアドレスは、データが格納されているバンクにアクセスするための「Ｃｈａｎｎｅｌ」と、カラムの指定を行う「Ｂｙｔｅ  ｉｎ  ａ  ｐａｇｅ」とを有する。なお、図２２に示すアドレスにおいて、「Ｒｏｗ  ｎｕｍｂｅｒ」及び「Ｂｙｔｅ  ｉｎ  ａ  ｐａｇｅ」が１２ビットであり、「Ｂａｎｋ」及び「Ｃｈａｎｎｅｌ」が４ビットである。そして、第１メモリ１０１は、例えば、メモリアクセスされたデータをＲｏｗｂｕｆｆｅｒ領域に記憶する際に、メモリアクセスされたデータと、「Ｒｏｗ  ｎｕｍｂｅｒ」、「Ｂａｎｋ」及び「Ｃｈａｎｎｅｌ」が同じであるデータ全てについて記憶を行う。
【０１６１】
なお、以下、図７におけるＳ１、Ｓ２及びＳ５の処理については、第１の実施の形態における処理を同じ内容であるため、説明を省略する。また、「Ｒｏｗ  ｎｕｍｂｅｒ」、「Ｂａｎｋ」及び「Ｃｈａｎｎｅｌ」が同じであるデータに対して複数のメモリアクセスが発生することを、単に複数アクセスとも呼び、トレース情報１３２における複数アクセスが発生した旨を示す情報を複数アクセス情報とも呼ぶ。
【０１６２】
［Ｓ３の処理の詳細］
（トレース情報１３２に含まれる情報の並び替えを行う処理）
初めに、図７で説明したＳ３の処理の詳細について説明する。
【０１６３】
情報処理装置１０の対応情報作成部１１４は、図２３に示すように、各変数に初期値を設定する（Ｓ７１）。具体的に、対応情報作成部１１４は、トレース情報１３２の行を示す「ｉ」に「１」を設定する。
【０１６４】
次に、対応情報作成部１１４は、トレース情報１３２の「ｉ」行目の「時刻」に設定された時刻から、時間Ｔが経過するまでの「時刻」が格納された情報を取得する（Ｓ７２）。以下、時間Ｔは１０（ｍｓｅｃ）であるものとして説明を行う。
【０１６５】
図３に示すトレース情報１３２の例において、１行目の「時刻」に設定された時刻は「０００１」である。したがって、対応情報作成部１１４は、「０００１」から「００１１」までの「時刻」を有する情報（「番号」が「１」から「７」である情報）を取得する。
【０１６６】
そして、対応情報作成部１１４は、トレース情報１３２の「アドレス」に設定された情報のうち、所定の情報が一致する情報が連続するように、Ｓ７２で取得した情報の並べ替えを行う（Ｓ７３）。所定の情報は、例えば、トレース情報１３２の「アドレス」のうち、１３ビットから３２ビット（１６進数表記の場合における上５桁）であってよい。以下、所定の情報が１３ビットから３２ビットであるものとして説明を行う。
【０１６７】
図２７は、Ｓ７３の処理を実行した場合のトレース情報１３２を説明する具体例である。図３に示すトレース情報１３２の例において、「番号」が「１」から「７」である情報のうち、「番号」が「１」及び「７」である情報の上５桁は「００００１」であり、「番号」が「２」から「６」である情報の上５桁は「０００００」である。
【０１６８】
したがって、対応情報作成部１１４は、図２７に示すように、「番号」が「２」から「６」である情報が連続し、「番号」が「１」及び「７」である情報が連続するように、図３に示すトレース情報１３２に含まれる情報を並び替える。これにより、対応情報作成部１１４は、メモリアクセスの要求順序の並び替えを考慮した形で、第２メモリ１０２に記憶すべきデータを決定することが可能になる。
【０１６９】
図２３に戻り、対応情報作成部１１４は、Ｓ７２においてトレース情報１３２に含まれる全ての情報について取得を行ったか否かを判定する（Ｓ７４）。そして、全ての情報について取得を行っていないと判定した場合（Ｓ７４のＮＯ）、対応情報作成部１１４は、Ｓ７２において取得されていない情報の「番号」を「ｉ」に設定する（Ｓ７５）。その後、対応情報作成部１１４は、Ｓ７２以降の処理を再度実行する。
【０１７０】
具体的に、図２７の例においては、対応情報作成部１１４は、「番号」が「７」である情報の取得までを行っている。そのため、対応情報作成部１１４は、Ｓ７２において、トレース情報１３２に含まれる全ての情報の取得を行っていない（Ｓ７４のＮＯ）。したがって、対応情報作成部１１４は、この場合、「ｉ」に「８」を設定する（Ｓ７５）。以降の図２３の処理については、既に説明した処理と同じ内容であるため説明を省略する。
【０１７１】
図２８は、Ｓ７２において全ての情報の取得が完了した場合におけるトレース情報１３２の具体例である。図２８に示すトレース情報１３２では、図２７に示すトレース情報１３２と比較して、「番号」が「９」、「１０」及び「１１」である情報が並び替わっている（図２８の下線部分）。すなわち、対応情報作成部１１４は、「アドレス」の上５桁が「００００１」である情報が連続し、「アドレス」の上５桁が「２００００」である情報が連続するように、図２７に示すトレース情報１３２に含まれる情報をそれぞれ並び替える。
【０１７２】
（対応情報１３４を作成する処理）
一方、トレース情報１３２に含まれる全ての情報の取得が完了した場合（Ｓ７４のＹＥＳ）、対応情報作成部１１４は、図２４に示すように、各変数に初期値を設定する（Ｓ８１）。
【０１７３】
具体的に、対応情報作成部１１４は、トレース情報１３２の行を示す「ｉ」に「１」を設定し、メモリアクセスの頻度情報である「ｋ」に「０」を設定する。また、「アドレス」の上５桁が一致する領域内のデータに対する連続アクセスが発生している間に、メモリアクセスが行われたデータの合計サイズである「ｓｉｚｅ」に「０」を設定する。
【０１７４】
（「ｉ」が「１」の場合の処理）
次に、対応情報作成部１１４は、トレース情報１３２から、「ａｄｄｒ＿ｉ」と「ｓｉｚｅ＿ｉ」とを取得する（Ｓ８２）。また、対応情報作成部１１４は、トレース情報１３２から、「ａｄｄｒ＿ｉ＋１」と「ｓｉｚｅ＿ｉ＋１」とを取得する（Ｓ８２）。
【０１７５】
具体的に、図２８に示すトレース情報１３２において、対応情報作成部１１４は、「ａｄｄｒ＿１」として、「番号」が「２」である行に対応して設定された「アドレス」である「０ｘ００００００１０」を取得する。また、図２８に示すトレース情報１３２において、対応情報作成部１１４は、「ｓｉｚｅ＿１」として、「番号」が「２」である行に対応して設定された「サイズ」である「８」を取得する。同様に、対応情報作成部１１４は、「ａｄｄｒ＿２」として、「番号」が「３」である行に対応して設定された「アドレス」である「０ｘ００００００１８」を取得する。また、図２８に示すトレース情報１３２において、対応情報作成部１１４は、「ｓｉｚｅ＿２」として、「番号」が「３」である行に対応して設定された「サイズ」である「８」を取得する。
【０１７６】
そして、対応情報作成部１１４は、「ｓｉｚｅ」に設定された値に、「ｓｉｚｅ＿ｉ」を加算する更新を行う（Ｓ８３）。また、対応情報作成部１１４は、「ｋ」に設定された値に、「１」を加算する更新を行う（Ｓ８３）。
【０１７７】
具体的に、図２８に示すトレース情報の１行目の情報を取得した場合、対応情報作成部１１４は、「ｓｉｚｅ」の値である「０」に、「ｓｉｚｅ＿１」の値である「８」を加算し、「ｓｉｚｅ」の値として新たに「８」を設定する。また、図２８に示すトレース情報の１行目の情報を取得した場合、対応情報作成部１１４は、「ｋ」の値である「０」に、「１」を加算し、「ｋ」の値として新たに「１」を設定する。
【０１７８】
次に、対応情報作成部１１４は、Ｓ８２においてトレース情報１３２から取得した「ａｄｄｒ＿ｉ」の上５桁と「ａｄｄｒ＿ｉ＋１」の上５桁とが一致するか否かを判定する（Ｓ８４）。そして、Ｓ８２においてトレース情報１３２から取得した「ａｄｄｒ＿ｉ」の上５桁と「ａｄｄｒ＿ｉ＋１」の上５桁とが一致していないと判定した場合（Ｓ８４のＮＯ）、対応情報作成部１１４は、図２５に示すように、対応情報１３４の設定を行う（Ｓ９１）。この場合、対応情報作成部１１４は、「ａｄｄｒ＿ｉ」に設定されたアドレスの下３桁を「０」にしたアドレスと、「ｓｉｚｅ」に設定された値と、「ｋ」に設定された値とを対応付けて、対応情報１３４として情報格納領域１３０に設定する。
【０１７９】
その後、対応情報作成部１１４は、各変数の値を更新する（Ｓ９２）。具体的に、対応情報作成部１１４は、「ｋ」に「０」を設定し、「ｓｉｚｅ」に「０」を設定する。すなわち、対応情報作成部１１４は、トレース情報１３２から取得した情報を対応情報１３４に反映させた場合、各変数の初期化を行う。
【０１８０】
一方、「ａｄｄｒ＿ｉ」の上５桁と「ａｄｄｒ＿ｉ＋１」の上５桁とが一致すると判定した場合（Ｓ８４のＹＥＳ）、対応情報作成部１１４は、Ｓ９１及びＳ９２の処理は実行しない。
【０１８１】
具体的に、図２８の例において、「ａｄｄｒ＿１」の値である「０ｘ００００００１０」と「ａｄｄｒ＿２」の値である「０ｘ００００００１８」とは、上５桁が共に「０００００」である。したがって、対応情報作成部１１４は、「ａｄｄｒ＿ｉ」の上５桁と「ａｄｄｒ＿ｉ＋１」の上５桁とが一致すると判定する（Ｓ８４のＹＥＳ）。
【０１８２】
次に、対応情報作成部１１４は、トレース情報１３２における「ｉ」行目が最終行であるか否かを判定する（Ｓ９３）。そして、「ｉ」行目が最終行でないと判定した場合（Ｓ９３のＮＯ）、対応情報作成部１１４は、「ｉ」に「１」を加算する（Ｓ９４）。
【０１８３】
具体的に、図２８に示すトレース情報１３２は、１１行目まで情報が存在する。そのため、対応情報作成部１１４は、「ｉ」行目が最終行ではないと判定し（Ｓ９３のＮＯ）、「ｉ」の値を「２」に更新する（Ｓ９４）。
【０１８４】
一方、「ｉ」行目が最終行であると判定した場合（Ｓ９３のＹＥＳ）、対応情報作成部１１４は、Ｓ３の処理を終了する。なお、「ｉ」が「２」から「４」までの場合における処理は、「ｉ」が「１」の場合の処理と同じ内容であるため説明を省略する。
【０１８５】
（「ｉ」が「５」の場合の処理）
次に、「ｉ」が「５」の場合における処理について説明を行う。
【０１８６】
この場合、対応情報作成部１１４は、「ａｄｄｒ＿５」として「０ｘ００００００７８」を取得し、「ａｄｄｒ＿６」として「０ｘ００００１０００」を取得する（Ｓ８２）。ここで、「０ｘ００００００７８」の上５桁である「０００００」と、「０ｘ００００１０００」の上５桁である「００００１」とは一致しない（Ｓ８４のＮＯ）。
【０１８７】
そのため、対応情報作成部１１４は、「ａｄｄｒ＿５」の値である「０ｘ００００００７８」の下３桁が「０００」である「０ｘ００００００００」と、「ｓｉｚｅ」の値である「４０」と、「ｋ」の値である「５」とを対応付けて対応情報１３２として設定する（Ｓ９１）。
【０１８８】
具体的に、対応情報作成部１１４は、図２９に示すように、「番号」が「１」である情報に対応付けて、「アドレス」として「０ｘ００００００００」を設定し、「アクセス頻度」として「ｋ」の値である「５」を設定し、「サイズ」として「ｓｉｚｅ」の値である「４０」を設定する。
【０１８９】
そして、対応情報作成部１１４は、「ｋ」に「０」を設定し、「ｓｉｚｅ」に「０」を設定する（Ｓ９２）。以降のＳ３の処理については、既に説明した処理と同じ内容であるため説明を省略する。
【０１９０】
図３０は、図２９に示すトレース情報に含まれる全ての情報の基づく対応情報１３４の具体例である。図２８に示すトレース情報１３２において、「番号」が「１」及び「７」である情報に対応する「アドレス」のうちの上５桁と、「番号」が「８」及び「１１」である情報に対応する「アドレス」のうちの上５桁は、共に「００００１」である。しかし、「番号」が「８」及び「１１」である情報に対応する「時刻」は、「番号」が「１」である「時刻」よりも、時間Ｔ（１０（ｍｓ））以上後の時刻である。そのため、対応情報作成部１１４は、図３０に示す対応情報１３４において、「番号」が「１」である情報と「番号」が「４」である情報とを別々の情報として集計している。
【０１９１】
［Ｓ４の処理の詳細］
次に、図７で説明したＳ４の処理の詳細について説明する。
【０１９２】
情報処理装置１０の削減時間算出部１１５は、図２６に示すように、各変数に初期値を設定する（Ｓ１０１）。具体的に、削減時間算出部１１５は、「ｉ」に「１」を設定する。
【０１９３】
そして、削減時間算出部１１５は、対応情報１３４の「ｉ」行目に対応するデータが第１メモリ１０１に格納されている場合におけるメモリアクセスに要する時間を算出する。また、削減時間算出部１１５は、対応情報１３４の「ｉ」行目に対応するデータが第２メモリ１０２に格納されている場合におけるメモリアクセスに要する時間を算出する。そして、削減時間算出部１１５は、それぞれ算出したメモリアクセスに要する時間の差分（削減時間）を算出する（Ｓ１０２）。すなわち、第２の実施の形態におけるＳ４では、Ｒｏｗｂｕｆｆｅｒ領域に格納されるデータ毎（「Ｒｏｗ  ｎｕｍｂｅｒ」、「Ｂａｎｋ」及び「Ｃｈａｎｎｅｌ」が同じであるデータ毎）に、削減時間の算出を行う。
【０１９４】
以下、第１メモリ１０１のＲｏｗｂｕｆｆｅｒ領域にメモリアクセス対象のデータが存在した場合のメモリアクセスに要する時間を２０（ｍｓ）として説明する。また、第１メモリ１０１のＲｏｗｂｕｆｆｅｒ領域にメモリアクセス対象のデータが存在しなかった場合のメモリアクセスに要する時間を４０（ｍｓ）として説明する。また、第２メモリ１０２のＲｏｗｂｕｆｆｅｒ領域にメモリアクセス対象のデータが存在した場合のメモリアクセスに要する時間を８（ｍｓ）として説明する。さらに、第２メモリ１０２のＲｏｗｂｕｆｆｅｒ領域にメモリアクセス対象のデータが存在しなかった場合のメモリアクセスに要する時間を３０（ｍｓ）として説明する。なお、これらのメモリアクセスに要する時間は、例えば、上記の式（２）及び式（３）に基づいて算出するものであってよい。
【０１９５】
具体的に、図３０の対応情報１３４の「番号」が「１」である情報に対応する「アクセス頻度」は「５」である。そのため、削減時間算出部１１５は、５回のメモリアクセスのうち、最初のメモリアクセスにおけるメモリアクセス対象のデータがＲｏｗｂｕｆｆｅｒ領域に存在しないものとして削減時間の算出を行う。一方、削減時間算出部１１５は、５回のメモリアクセスのうち、最初以外のメモリアクセス（４回）におけるメモリアクセス対象のデータがＲｏｗｂｕｆｆｅｒ領域に存在するものとして削減時間の算出を行う。
【０１９６】
したがって、削減時間算出部１１５は、図３０の対応情報１３４の「番号」が「１」である情報に対応するデータへのメモリアクセスに要する合計時間は、このデータが第１メモリ１０１に格納されている場合、４０、２０、２０、２０及び２０を加算した値である１２０であると判定する。また、削減時間算出部１１５は、このデータが第２メモリ１０２に格納されている場合、３０、８、８、８及び８を加算した値である６２であると判定する。さらに、削減時間算出部１１５は、「番号」が「１」である情報に対応するデータを第１メモリ１０１から第２メモリ１０２に移行した場合におけるメモリアクセスの差分を、１２０から６２を減算した５８と判定する。
【０１９７】
そして、削減時間算出部１１５は、図３１に示すように、「番号」が「１」である情報に対応する「削減時間」に「５８」を設定する（Ｓ１０３）。また、削減時間算出部１１５は、例えば、「削減時間」に設定された値である「５８」を、「サイズ」に設定された値である「４０」で除算した値である「１．４５」を「１バイトあたりの削減時間」として設定するものであってよい。
【０１９８】
図２６に戻り、削減時間算出部１１５は、「ｉ」行目が最終行であるか否かを判定する（Ｓ１０４）。そして、「ｉ」行目が最終行である場合（Ｓ１０４のＹＥＳ）、削減時間算出部１１５は、Ｓ４の処理を終了する。一方、「ｉ」行目が最終行でない場合（Ｓ１０４のＮＯ）、削減時間算出部１１５は、「ｉ」に設定された値に「１」を加算し（Ｓ１０５）、Ｓ１０２以降の処理を再度実行する。
【０１９９】
具体的に、上記のように「ｉ」に設定された値が「１」である場合、「ｉ」行目は最終行でない。そのため、削減時間算出部１１５は、「ｉ」の値である「１」に「１」を加算した「２」を、新たな「ｉ」の値として設定する。
【０２００】
その後、削減時間算出部１１５は、図３２に示すように、対応情報１３４に含まれる全ての情報についてメモリアクセスの削減時間を算出し、「削減時間」に設定する。図３２の情報についての説明は省略する。
【０２０１】
このように、第２の実施の形態において、情報処理装置１０は、メモリアクセスの対象のデータがＲｏｗｂｕｆｆｅｒ領域に記憶されている確率を高めるために、トレース情報１３２に含まれる情報の並び替えを行う。これにより、情報処理装置１０は、第１メモリ１０１及び第２メモリ１０２がＲｏｗｂｕｆｆｅｒ領域を有するメモリである場合であっても、メモリアクセスの効率化を図ることが可能なデータ配置を決定することが可能になる。
【０２０２】
以上の実施の形態をまとめると、以下の付記のとおりである。
【０２０３】
（付記１）
プログラムを実行した第１メモリのメモリアクセスに関するトレース情報から、メモリアクセスが行われたデータが格納された領域を示すアドレスと、前記アドレス毎のメモリアクセスの頻度情報とを対応付けた対応情報を作成する対応情報作成部と、
前記対応情報に基づき、前記第１メモリに格納されたデータを前記第１メモリよりバンド幅が大きいメモリである第２メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記アドレス毎に算出する削減時間算出部と、
前記削減時間が大きい前記アドレスに格納されたデータを優先して、前記第２メモリに格納すべきことを決定するデータ配置決定部と、を有する、
データ配置決定装置。
【０２０４】
（付記２）
付記１において、
前記対応情報作成部は、前記アドレス及び前記頻度情報に、メモリアクセスが行われたデータのサイズを対応付けて前記対応情報を作成する、
データ配置決定装置。
【０２０５】
（付記３）
付記１において、
前記対応情報作成部は、前記トレース情報に、連続するアドレスに格納されたデータのそれぞれに対して連続してメモリアクセスが行われた旨を示す連続アクセス情報が含まれている場合、前記連続するアドレスと、前記連続するアドレス毎の前記連続してメモリアクセスが行われた頻度情報とを対応付けて前記対応情報を作成し、
前記削減時間算出部は、前記第１メモリに格納されたデータを、前記第１メモリよりバンド幅が大きいメモリである第２メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記連続するアドレス毎に算出する、
データ配置決定装置。
【０２０６】
（付記４）
付記３において、
前記連続アクセス情報は、メモリアクセスが行われたアドレスが昇順または降順になるように連続してメモリアクセスが行われた旨の情報である、
データ配置決定装置。
【０２０７】
（付記５）
付記１において、
前記第１及び第２メモリは、メモリアクセスが行われたデータのアドレスを含む所定領域に格納されたデータを保持するバッファ領域を有し、
前記第１及び第２メモリは、メモリアクセスが行われた場合において、前記メモリアクセスの対象であるデータが前記バッファ領域に保持されている場合、前記保持されているデータを返信し、前記メモリアクセスの対象であるデータが前記バッファ領域に保持されていない場合、前記メモリアクセスの対象であるデータのアドレスを含む所定領域に格納されたデータを前記バッファ領域に格納し、前記バッファ領域に格納したデータを返信し、
前記対応情報作成部は、前記トレース情報に、同一の前記所定領域に格納されたデータに対する複数のメモリアクセスがあった旨を示す複数アクセス情報が含まれている場合、前記複数のメモリアクセスが連続して行われたように前記トレース情報に含まれる情報を並び替え、前記並び替えたトレース情報から、前記所定領域に格納されたデータのアドレスと、前記所定領域に格納されたデータのアドレス毎のメモリアクセスの頻度情報とを対応付けて前記対応情報を作成し、
前記削減時間算出部は、前記第１メモリに格納されたデータを、前記第１メモリよりバンド幅が大きいメモリである第２メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記所定領域に格納されたデータのアドレス毎に算出する、
データ配置決定装置。
【０２０８】
（付記６）
付記５において、
前記複数アクセス情報は、所定期間内に、同一の前記所定領域に格納されたデータに対する複数のメモリアクセスがあった旨の情報である、
データ配置決定装置。
【０２０９】
（付記７）
付記１において、
前記データ配置決定部は、前記削減時間と該削減時間に対応する前記頻度情報とを乗算した値が大きい前記アドレスに格納されたデータを優先して、前記第２メモリに格納すべきことを決定する、
データ配置決定装置。
【０２１０】
（付記８）
プログラムを実行した第１メモリのメモリアクセスに関するトレース情報から、メモリアクセスが行われたデータが格納された領域を示すアドレスと、前記アドレス毎のメモリアクセスの頻度情報とを対応付けた対応情報を作成し、
前記対応情報に基づき、前記第１メモリに格納されたデータを前記第１メモリよりバンド幅が大きいメモリである第２メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記アドレス毎に算出し、
前記削減時間が大きい前記アドレスに格納されたデータを優先して、前記第２メモリに格納すべきことを決定する、
処理をコンピュータに実行させるデータ配置決定プログラム。
【０２１１】
（付記９）
プログラムを実行した第１メモリのメモリアクセスに関するトレース情報から、メモリアクセスが行われたデータが格納された領域を示すアドレスと、前記アドレス毎のメモリアクセスの頻度情報とを対応付けた対応情報を作成し、
前記対応情報に基づき、前記第１メモリに格納されたデータを前記第１メモリよりバンド幅が大きいメモリである第２メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記アドレス毎に算出し、
前記削減時間が大きい前記アドレスに格納されたデータを優先して、前記第２メモリに格納すべきことを決定する、
データ配置決定方法。
【符号の説明】
【０２１２】
１：第１メモリ            ２：第２メモリ
３：ＣＰＵ                １０：情報処理装置
１０１：第１メモリ        １０２：第２メモリ
１０３：ＣＰＵ
【図１】
0006519228.tif 000002
【図２】
0006519228.tif 000003
【図３】
0006519228.tif 000004
【図４】
0006519228.tif 000005
【図５】
0006519228.tif 000006
【図６】
0006519228.tif 000007
【図７】
0006519228.tif 000008
【図８】
0006519228.tif 000009
【図９】
0006519228.tif 000010
【図１０】
0006519228.tif 000011
【図１１】
0006519228.tif 000012
【図１２】
0006519228.tif 000013
【図１３】
0006519228.tif 000014
【図１４】
0006519228.tif 000015
【図１５】
0006519228.tif 000016
【図１６】
0006519228.tif 000017
【図１７】
0006519228.tif 000018
【図１８】
0006519228.tif 000019
【図１９】
0006519228.tif 000020
【図２０】
0006519228.tif 000021
【図２１】
0006519228.tif 000022
【図２２】
0006519228.tif 000023
【図２３】
0006519228.tif 000024
【図２４】
0006519228.tif 000025
【図２５】
0006519228.tif 000026
【図２６】
0006519228.tif 000027
【図２７】
0006519228.tif 000028
【図２８】
0006519228.tif 000029
【図２９】
0006519228.tif 000030
【図３０】
0006519228.tif 000031
【図３１】
0006519228.tif 000032
【図３２】
0006519228.tif 000033