(57)【要約】      （修正有）【課題】所定のメモリアクセス毎に採取されたメモリアクセス履歴情報の精度を向上させる技術を提供する。【解決手段】情報処理装置１１は、メモリに対する所定のアクセス数毎の、メモリに対するアクセスの履歴を示すアクセス履歴情報と、アクセスによるメモリからの情報の取得にかかるアクセス時間についての情報と、を取得する取得部１２と、アクセス時間が閾値より短い場合、アクセス時間に対応するアクセス履歴情報に基づいて、所定のアクセス数間のアクセス履歴情報について補間処理を行う補間処理部１３と、を備える。【選択図】図３
2017033262.tif 000002
【特許請求の範囲】
【請求項１】
メモリに対する所定のアクセス数毎の、該メモリに対するアクセスの履歴を示すアクセス履歴情報と、該アクセスによる該メモリからの情報の取得にかかるアクセス時間についての情報と、を取得する取得部と、
前記アクセス時間が閾値より短い場合、該アクセス時間に対応する該アクセス履歴情報に基づいて、前記所定のアクセス数間のアクセス履歴情報について補間処理を行う補間処理部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記補間処理部は、前記アクセス時間が閾値より短い場合、該アクセス時間に対応する該アクセス履歴情報に基づいて、該アクセス履歴情報の直前にアクセス履歴情報を追加する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記補間処理部は、前記アクセス時間が閾値より短い場合、該アクセス時間に対応する該アクセス履歴情報に含まれるアクセスしたデータのサイズに、所定のサイズを設定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記補間処理部は、前記アクセス時間が閾値より短い場合、該アクセス時間に対応する該アクセス履歴情報に補間対象であることを特定する特定情報を付与する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
コンピュータに、
メモリに対する所定のアクセス数毎の、該メモリに対するアクセスの履歴を示すアクセス履歴情報と、該アクセスによる該メモリからの情報の取得にかかるアクセス時間についての情報と、を取得し、
前記アクセス時間が閾値より短い場合、該アクセス時間に対応する該アクセス履歴情報に基づいて、前記所定のアクセス数間のアクセス履歴情報について補間処理を行う、
処理を実行させるアクセス情報管理プログラム。
【請求項６】
コンピュータが、
メモリに対する所定のアクセス数毎の、該メモリに対するアクセスの履歴を示すアクセス履歴情報と、該アクセスによる該メモリからの情報の取得にかかるアクセス時間についての情報と、を取得し、
前記アクセス時間が閾値より短い場合、該アクセス時間に対応する該アクセス履歴情報に基づいて、前記所定のアクセス数間のアクセス履歴情報について補間処理を行う、
処理を実行するアクセス情報管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、情報処理装置、アクセス情報管理プログラム、及びアクセス情報管理方法に関する。
【背景技術】
【０００２】
中央演算処理装置（ＣＰＵ）は、プログラムの実行に応じてメモリ装置（以下、「メモリ」と称する）へアクセスし、データを取得する。このとき、メモリへアクセスした情報は、メモリアクセス履歴情報として蓄積される。このようにして蓄積されたメモリアクセス履歴情報は、一度メモリ上に保持され、ディスク装置（以下、「ディスク」と称する）へ書き込まれる。メモリアクセス履歴情報は、コードチューニング、デバッグ、メモリ階層のシミュレーション、高性能メモリへのデータ割当て決定等に利用することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開１０−２５４７３９号公報
【特許文献２】特開１１−２７２５１８号公報
【特許文献３】特表２００６−５２４３７５号公報
【特許文献４】特開平０７−１９１８８２号公報
【特許文献５】特開２０１３−１１７８００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
１命令の実行時間に対して、メモリ及びディスクへの書込み時間が長い。例えば、全てのメモリアクセス履歴情報をメモリから取得してディスク装置に書き込む場合、通常のアプリケーションプログラムの実行時間の１，０００〜１０,０００倍の時間を要する。このようなことから、実行時間が１０秒程度のプログラムでもそのプログラムについてのメモリアクセス履歴情報を取得しようとすると、その取得に１日以上を要することになる。
【０００５】
このようなことから、取得するメモリアクセス履歴情報量を絞ることが考えられる。取得するメモリアクセス履歴情報量を絞る第１の方法として、重要な一部の期間のみのメモリアクセス履歴情報を採取することが考えられる。
【０００６】
第１の方法を採用した場合、高精度で重要な期間のメモリアクセス履歴情報の採取が可能となる。しかしながら、第１の方法では、メモリアクセス履歴情報から、重要な期間に係る情報を見極めなければならない。そのため、アプリケーションプログラムに対する深い知識が必要で、そのアプリケーションプログラムの設定に手間がかかる。また、重要な期間が長い場合は、メモリアクセス履歴情報の採取時間は長いままとなる。
【０００７】
そこで、取得するメモリアクセス履歴情報量を絞る第２の方法として、全てのメモリアクセスの履歴情報ではなく、一定メモリアクセス毎にメモリアクセス履歴情報を採取することが考えられる。
【０００８】
第２の方法を採用した場合、手間をかけずに、短時間でメモリアクセス履歴情報の採取が可能となる。しかしながら、メモリアクセス履歴情報の採取間隔を広げるほど、メモリアクセス履歴情報の精度が低下する。
【０００９】
このように一定メモリアクセス毎にメモリアクセス履歴情報を採取する場合、メモリアクセス履歴情報の採取間隔に応じてメモリアクセス履歴情報の精度が低下する。
【００１０】
本発明の一側面として、所定のメモリアクセス毎に採取されたメモリアクセス履歴情報の精度を向上させる技術を提供する。
【課題を解決するための手段】
【００１１】
本発明の一側面に係る情報処理装置は、取得部と、補間処理部とを含む。取得部は、メモリに対する所定のアクセス数毎の、メモリに対するアクセスの履歴を示すアクセス履歴情報と、アクセスによるメモリからの情報の取得にかかるアクセス時間についての情報とを取得する。補間処理部は、アクセス時間が閾値より短い場合、アクセス時間に対応するアクセス履歴情報に基づいて、所定のアクセス数間のアクセス履歴情報について補間処理を行う。
【発明の効果】
【００１２】
本発明の一側面によれば、所定のメモリアクセス毎に採取されたメモリアクセス履歴情報の精度を向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】メモリアクセス時間について説明するための図である。
【図２】（Ａ）メモリアクセス履歴情報の間欠的採取についてのメモリアクセス時刻とアクセスしたデータアドレスの関係図であり、（Ｂ）間欠的に採取されたメモリアクセス履歴情報を、メモリアクセス時間に応じて補間したことを説明するための図である。
【図３】本実施形態における情報処理装置の一例を示す。
【図４】本実施形態におけるメモリアクセス履歴情報出力装置の一例を示す。
【図５】本実施形態におけるメモリアクセス履歴関係情報の一例を示す。
【図６】本実施形態における補間後のメモリアクセス履歴情報の出力例を示す。
【図７】本実施形態（実施例１）におけるメモリアクセス履歴情報の補間処理フローを示す。
【図８】本実施形態（実施例２）におけるメモリアクセス履歴情報の補間処理フローを示す。
【図９】本実施形態における補間後のメモリアクセス履歴情報の他の出力例（変形例１）を示す。
【図１０】本実施形態（変形例１）におけるメモリアクセス履歴情報の補間処理フローを示す。
【図１１】本実施形態における補間後のメモリアクセス履歴情報の他の出力例（変形例２）を示す。
【図１２】本実施形態（変形例２）におけるメモリアクセス履歴情報の補間処理フローを示す。
【図１３】本実施形態におけるプログラムを実行するコンピュータのハードウェア環境の構成ブロック図の一例である。
【発明を実施するための形態】
【００１４】
図１は、メモリアクセス時間について説明するための図である。情報処理装置１は、ＣＰＵ２、メモリコントローラ３、メモリ４を含む。ＣＰＵ２は、処理装置と記憶装置の性能差を埋めるために用いる高速小容量メモリを含む。
【００１５】
メモリコントローラ３は、メモリ４からのデータの読み出し、メモリ４へのデータの書き込み、メモリ４のリフレッシュなど、メモリデバイスを制御する。
【００１６】
メモリ４には、アクセス単位に複数のバンクに分割され、複数のバンクにまたがって連続したアドレスを割り当て、各バンクを並列にアクセスすることにより、メモリへのアクセス効率を向上させるメモリインタリーブ技術が用いられている。メモリ４は、例えば、複数のＤＲＡＭチップを基板上に搭載したメモリモジュール（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ：ＤＩＭＭ）である。各バンクが保持する情報は、Ｒｏｗ  ｂｕｆｆｅｒを介して、読み出される。
【００１７】
まず、ＣＰＵ２がデータリクエストをメモリコントローラ３に送信する。メモリコントローラ３は、ｒｏｗ  ｂｕｆｆｅｒのヒット率を高めるためにリクエストするデータを並び替え、メモリ４へ送信する。
【００１８】
メモリ４は、Ｒｏｗ  ｂｕｆｆｅｒにリクエストされたデータがある場合、そのままそのデータをＣＰＵ２へ供給する。したがって、メモリに対してデータへのアクセス要求がされてから、それに対する応答までの時間（メモリアクセス時間）は短くなる。
【００１９】
メモリ４は、Ｒｏｗ  ｂｕｆｆｅｒにリクエストされたデータがない場合、リクエストされたデータを、対応するＤＲＡＭチップから読み出してＲｏｗ  ｂｕｆｆｅｒへ書き込んでから、ＣＰＵ２へ供給する。したがって、Ｒｏｗ  ｂｕｆｆｅｒにてデータがヒットした場合と比べて、メモリアクセス時間は、長くなる。
【００２０】
このように、Ｒｏｗ  ｂｕｆｆｅｒにおけるデータのヒットまたはミスに応じて、メモリアクセス時間のレイテンシが変わる。
【００２１】
また、連続したアドレスへのメモリアクセス（連続アクセス、すなわちシーケンシャルアクセス）の場合、各バンクのＲｏｗ  ｂｕｆｆｅｒに連続したアドレスのデータが保持されている可能性が高い。その結果、連続したアドレスへのメモリアクセス（連続アクセス）の場合、ｒｏｗ  ｂｕｆｆｅｒでのデータのヒット率が上がるため、メインメモリへのアクセス時間が短くなる。
【００２２】
そこで、本実施形態では、アクセス時間が短いメモリアクセスは連続アクセス中であったとみなす。そして、アクセス時間が短い採取したアドレスの前のメモリアクセスは連続アクセスとして、採取データに追加する（アクセス時間の長さに応じて、連続アクセスとみなす期間を変更する）。
【００２３】
図２（Ａ）は、メモリアクセス履歴情報の間欠的採取についてのメモリアクセス時刻とアクセスしたデータアドレスの関係を示す。図２（Ａ）内のドットは、その時刻にアクセスされたデータアドレスを示す。図２（Ａ）に示すように、全てのメモリアクセスのメモリアクセス履歴情報ではなく、所定のメモリアクセス毎にメモリアクセス履歴情報等の情報を採取する。このとき、採取する情報は、そのタイミングで行われたメモリアクセスに応じて得られたメモリアクセス履歴情報と、アクセス要求がされてそのアクセス要求に応じてメモリから供給されてＣＰＵが取得するまでの時間（データのメモリアクセス時間）を含む。
【００２４】
図２（Ｂ）は、図２（Ａ）において間欠的に採取されたメモリアクセス履歴情報を、メモリアクセス時間に応じて補間したことを説明するための図である。図２（Ｂ）内のドットに示す数値は、ドットに対応するメモリアクセスにかかった平均メモリアクセス時間を示す。
【００２５】
例えば、４０ｎｓ＜閾値［ナノ秒］＜６０ｎｓであるとする。閾値平均メモリアクセス時間が４０ｎｓの場合、閾値＞４０なので、平均メモリアクセス時間は短いと判定される。この場合、メモリアクセスは連続アクセス、すなわちシーケンシャルアクセスであると判定される。そして、図２（Ｂ）内にて、ドットから引き出された線分で示すように、メモリアクセス履歴情報の間欠部分が補間される。具体的には、メモリアクセス履歴情報の直前に、本来その位置に存在したであろうと推定される間欠している過去分のｎ個のメモリアクセス履歴情報が追加される。
【００２６】
また、閾値平均メモリアクセス時間が６０ｎｓの場合、閾値＜６０なので、平均メモリアクセス時間は長いと判定される。この場合、メモリアクセスは連続アクセス、すなわちシーケンシャルアクセスではないと判定され、メモリアクセス履歴情報の補間は行われない。
【００２７】
図３は、本実施形態における情報処理装置の一例を示す。情報処理装置１１は、取得部１２、補間処理部１３を含む。
【００２８】
取得部１２は、メモリに対する所定のアクセス数毎の、メモリに対するアクセスの履歴を示すアクセス履歴情報と、アクセスによるメモリからの情報の取得にかかるアクセス時間についての情報と、を取得する。取得部１２の一例として、後述する収集部２が挙げられる。
【００２９】
補間処理部１３は、アクセス時間が閾値より短い場合、アクセス時間に対応する該アクセス履歴情報に基づいて、所定のアクセス数間のアクセス履歴情報について補間処理を行う。補間処理部１３の一例として、後述する補間処理部２９が挙げられる。
【００３０】
このように構成することにより、所定のメモリアクセス毎に採取されたメモリアクセス履歴情報の精度を向上させることができる。
【００３１】
補間処理部１３は、アクセス時間が閾値より短い場合、アクセス時間に対応するアクセス履歴情報に基づいて、そのアクセス履歴情報の直前に１以上のアクセス履歴情報を追加する。
【００３２】
このように構成することにより、アクセス時間が閾値より短い場合、すなわち連続アクセスとみなされる場合、アクセス履歴情報間の間欠しているアクセス履歴情報を補間することができる。
【００３３】
補間処理部１３は、アクセス時間が閾値より短い場合、アクセス時間に対応するアクセス履歴情報に含まれるアクセスしたデータのサイズに、所定のサイズを設定する。
【００３４】
このように構成することにより、アクセス時間が閾値より短い場合、すなわち連続アクセスとみなされる場合、アクセス時間に対応するアクセス履歴情報に含まれるアクセスしたデータのサイズを、連続アクセスであったように変更することができる。
【００３５】
補間処理部１２は、アクセス時間が閾値より短い場合、アクセス時間に対応するアクセス履歴情報に補間対象であることを特定する特定情報を付与する。
【００３６】
このように構成することにより、アクセス時間が閾値より短い場合、すなわち連続アクセスとみなされる場合、連続アクセス部分にフラグを付けることができる。これにより、後に解析するときに、そのフラグに基づいて、アクセス履歴情報を補間することができる。
【００３７】
以下に本実施形態の詳細について説明する。
図４は、本実施形態におけるメモリアクセス履歴情報出力装置の一例を示す。メモリアクセス履歴情報出力装置２１は、メモリアクセス履歴情報を出力する情報処理装置である。
【００３８】
メモリアクセス履歴情報出力装置２１は、ＣＰＵ２２、メモリ３０、ディスク３１を含む。ＣＰＵ２２は、メモリアクセス履歴情報出力装置２１全体の動作を制御する演算装置である。メモリ３０は、情報を一時的に記憶する記憶装置であり、例えば、ＤＩＭＭである。ディスク３１は、メモリ３０に比べて低速で大容量の情報を記憶する記憶装置であり、例えば、ハードディスクドライブである。
【００３９】
ＣＰＵ２２は、性能監視回路２７、アクセス情報取得回路２８を含む。例えば、Ｉｎｔｅｌ社製のＣＰＵの場合、性能監視回路２７としてLoad Latency Performance Monitoring Facility（ＬＬＰＭＦ）と、アクセス情報取得回路２８として性能カウンタを用いる。この場合、後述するように、ＬＬＰＭＦと性能カウンタとがメモリアクセス履歴情報の採取向けに予め設定されている。
【００４０】
性能監視回路２７は、ＣＰＵ２２がメモリへアクセス要求してからメモリ３０からその応答を受け取るまでの時間（メモリアクセス時間）を計算する。性能監視回路２７は、計算したメモリアクセス時間についての情報（メモリアクセス時間情報）２５を、収集部２４へ渡す。例えば、ＬＬＰＭＦを用いて、メモリ３０からのデータ採取毎のロード命令のメモリアクセス時間を取得するように設定することにより、ＬＬＰＭＦを性能監視回路２７として機能させる。
【００４１】
所定のメモリアクセス数毎にメモリアクセス履歴情報を取得する場合、性能監視回路２７によって計算されるメモリアクセス時間は、所定のメモリアクセス数分の平均メモリアクセス時間でもよいし、メモリへアクセスした場合のそのメモリアクセス時間でもよい。本実施形態では、メモリアクセス時間として、平均メモリアクセス時間を用いて説明する。
【００４２】
なお、性能監視回路２７は、本実施形態では、ＬＬＰＭＦを用いたが、これに限定されず、例えば、上述した性能監視回路２７の機能を組み込んだプログラムであってもよい。この場合、性能監視回路２７の機能を組み込んだプログラムは、ＯＳ２３の一部であってもよいし、ＯＳ２３とは独立したプログラムであってもよい。
【００４３】
アクセス情報取得回路２８は、所定のメモリアクセス毎の命令アドレス、データアドレス、データサイズなど、メモリアクセスのトレースに用いるメモリアクセス履歴情報を取得する。アクセス情報取得回路２８は、取得したメモリアクセス履歴情報２６を、収集部２４へ渡す。例えば、所定のロード命令数毎にメモリアクセス履歴情報２６を取得するように、性能カウンタを設定することにより、性能カウンタをアクセス情報取得回路２８として機能させる。
【００４４】
なお、アクセス情報取得回路２８は、本実施形態では、性能カウンタを用いたが、これに限定されず、例えば、上述したアクセス情報取得回路２８の機能を組み込んだプログラムであってもよい。この場合、アクセス情報取得回路２８の機能を組み込んだプログラムは、ＯＳ２３の一部であってもよいし、ＯＳ２３とは独立したプログラムであってもよい。
【００４５】
ＣＰＵ２２上では、Operating System（ＯＳ）２３と、補間処理部２９として機能するプログラムとが稼動する。ＯＳ２３は、システム全体を管理する基本ソフトウェアである。ＯＳ２３は、収集部２４を含む。
【００４６】
収集部２４は、ＯＳ２３が稼働中において、発生したメモリアクセスに伴い、性能監視回路２７により計算された平均メモリアクセス時間を、性能監視回路２７より収集し、蓄積する。
【００４７】
また、収集部２４は、ＯＳ２３が稼働中において発生したメモリアクセスに伴い、アクセス情報取得回路２８により所定のメモリアクセス毎に取得されたメモリアクセス履歴情報を、アクセス情報取得回路２８より収集し、蓄積する。このとき、収集部２４は、アクセスしたタイミングで得られた平均メモリアクセス時間とメモリアクセス履歴情報とを関係付けてメモリアクセス履歴関係情報３２として蓄積する。
【００４８】
なお、収集部２４は、本実施形態ではＯＳ２３に含まれているが、これに限定されず、ＯＳ２３とは独立したプログラムであってもよい。
【００４９】
補間処理部２９は、収集部２４からメモリアクセス履歴関係情報３２を取得する。補間処理部２９は、メモリアクセス履歴関係情報３２に含まれるメモリアクセス時間に基づいて、連続アクセスされているメモリアクセス履歴情報であるかを判定する。連続アクセスされているメモリアクセス履歴情報であると判定した場合、補間処理部２９は、間欠的に取得されているメモリアクセス履歴情報を補間し、または補間可能な形式に加工する。補間処理部２９は、補間処理したメモリアクセス履歴情報をディスク３１に出力する。
【００５０】
メモリアクセス履歴情報の補間とは、連続アクセスされていると判定されたメモリアクセス履歴情報から所定バイト数分間欠していると推定されるメモリアクセス履歴情報を生成し、生成した情報を既存のメモリアクセス履歴情報に追加することをいう。以下で、間欠していると推定されるメモリアクセス履歴情報を推定メモリアクセス履歴情報と記す場合がある。
【００５１】
メモリアクセス履歴情報を補間可能な形式に加工するとは、連続アクセスされていると判定されたメモリアクセス履歴情報に所定フラグを付与し、またはそのメモリアクセス履歴情報のデータサイズを所定サイズに変更することをいう。
【００５２】
ここで、メモリアクセス履歴情報に所定のフラグが付与された場合には、その所定のフラグに基づいて、連続アクセスされたメモリアクセス履歴情報であることを判定したり、上記の補間を行うことができる。また、メモリアクセス履歴情報のデータサイズが所定サイズに変更された場合には、その所定サイズ分、連続アクセスされたと判定することができる。
【００５３】
なお、補間処理部２９として機能するプログラムは、ＯＳ２３内のモジュールであってもよいし、ＯＳ２３上で稼動するアプリケーションプログラムであってもよい。また、補間処理部２９は、収集部２４として機能するプログラムを含んでいてもよい。さらに、補間処理部２９は、上述した性能監視回路２７の機能を組み込んだプログラム、及びアクセス情報取得回路２８の機能を組み込んだプログラムを含んでいてもよい。
【００５４】
また、補間処理部２９は、一例として図７で説明するように、実行情報を記録する実行情報記録プログラムに含まれていてもよい。また、補間処理部２９は、一例として図８で説明するように、メモリアクセスについての情報の解析を行うメモリ情報解析プログラムに含まれていてもよい。
【００５５】
図５は、本実施形態におけるメモリアクセス履歴関係情報の一例を示す。補間処理部２９は、一例として、図５に示すメモリアクセス履歴関係情報３２を入力情報として取得する。
【００５６】
メモリアクセス履歴関係情報３２には、メモリアクセス履歴情報２６と平均メモリアクセス時間情報２５とを関係付けた情報が時系列（メモリアクセス順）に登録されている。具体的には、メモリアクセス履歴関係情報３２は、「命令アドレス」、「データアドレス」、「サイズ」、「平均メモリアクセス時間」の項目を含む。項目「命令アドレス」には、次に実行すべき命令を記憶したメモリ３０上のアドレスが格納される。項目「データアドレス」には、項目「命令アドレス」に格納された命令にて処理されるデータのアドレスが格納されている。項目「サイズ」には、項目「データアドレス」に格納されているデータのサイズが格納されている。
【００５７】
図６は、本実施形態における補間後のメモリアクセス履歴情報の出力例を示す。メモリアクセス履歴情報は、時系列（メモリアクセス順）に出力される。図６では、平均メモリアクセス時間が閾値より短い場合に、補間処理部２９により、図５のメモリアクセス履歴情報２６の間欠部分に、メモリアクセス履歴情報が補間されている。具体的には、補間処理部２９は、平均メモリアクセス時間が閾値以上の行、すなわち連続アクセスとみなした行の前に、過去分のメモリアクセス履歴情報を所定行数分追加する。
【００５８】
図６の例では、補間処理部２９は、平均メモリアクセス時間が４０［ｎｓ］（＜閾値）の対象行を連続アクセスとみなし、対象行の前に過去分の２行のメモリアクセス履歴情報を補間情報として追加する。
【００５９】
図７は、本実施形態（実施例１）におけるメモリアクセス履歴情報の補間処理フローを示す。図７のフローは、メモリアクセス履歴情報と平均メモリアクセス時間との取得中に、随時メモリアクセス履歴情報の補間処理を行うフローである。この場合、補間処理部２９は、メモリアクセス履歴関係情報の収集中に、実行情報記録プログラムの一部として、以下の動作を行う。
【００６０】
補間処理部２９は、収集部２４から、１行のメモリアクセス履歴関係情報３２（メモリアクセス履歴情報と平均メモリアクセス時間）を受け取る（Ｓ１）。
【００６１】
補間処理部２９は、受け取った平均メモリアクセス時間が閾値Ｌ以下であるか否かを判定する（Ｓ２）。ここで、閾値Ｌは、予め設定された値（実数）である。
【００６２】
平均メモリアクセス時間が閾値Ｌ以下である場合（Ｓ２で「Ｙｅｓ」）、補間処理部２９は、１行分のメモリアクセス履歴情報だけでなく、予め設定された所定のバイト（ｘバイト）分の連続アクセスとなるように結果をディスク３１に出力する（Ｓ３）。ここでは、補間処理部２９は、受け取ったメモリアクセス履歴関係情報（生成元メモリアクセス履歴関係情報）から所定のバイト数分連続アクセスとなるように、推定メモリアクセス履歴情報をｙ行分生成する。ここで、ｙ＝｛ｘ／（生成元メモリアクセス履歴関係情報に含まれるデータサイズｚ）−１｝である。推定メモリアクセス履歴情報のそれぞれには、データサイズｚ（バイト）と、生成元メモリアクセス履歴関係情報のデータアドレスから順次ｚ（バイト）を減算したデータアドレスが含まれる。なお、命令アドレスは空白となる。補間処理部２９は、生成元メモリアクセス履歴情報に、生成したｙ行分の推定メモリアクセス履歴情報を追加したものを結果として出力する。
【００６３】
例えば、データサイズが８バイトで、ｘ＝２４（バイト）のとき、連続アドレスが発生したと判定された場合には、３回の連続アクセスが発生するように、結果が出力される。図６に示すように、例えば、受け取った１行の番目のメモリアクセス履歴関係情報に含まれるデータアドレスが「０ｘ１０００＿１０００＿００００」（１６進数表記）であるとする。連続アドレスが発生したと判定された場合には、この1行のメモリアクセス履歴関係情報で特定されるメモリアクセスで用いられるデータサイズが８（バイト）なので、このメモリアクセスの直前に、連続するデータアドレスに対する２回のメモリアクセスが発生したと推定される。そこで、補間処理部２９は、この1行のメモリアクセス履歴情報に対して、データアドレスを８バイトずつずらした過去２行分のメモリアクセス履歴情報を追加する。この例では、データアドレス＝「０ｘ１０００＿０ＦＦＦ＿ＦＦＦ８」及び「０ｘ１０００＿０ＦＦＦ＿ＦＦＦ０」）で示される２行分のメモリアクセス履歴情報が追加される。
【００６４】
これにより、補間処理部２９は、データアドレス＝「０ｘ１０００＿０ＦＦＦ＿ＦＦＦ０」、「０ｘ１０００＿０ＦＦＦ＿ＦＦＦ８」、「０ｘ１０００＿１０００＿００００」のデータへ連続アクセスが発生したことを示す履歴情報を出力することができる。
【００６５】
平均メモリアクセス時間が閾値Ｌより長い場合（Ｓ２で「Ｎｏ」）、補間処理部２９は、Ｓ１で取得したメモリアクセス履歴情報（命令アドレス、データアドレス、サイズ）をディスク３１に出力する（Ｓ４）。
【００６６】
Ｓ３またはＳ４の処理終了後、収集部２４から次のメモリアクセス履歴情報が来るまで、補間処理部２９は待つ（Ｓ５）。一定期間内に、収集部２４からメモリアクセス履歴情報が来た場合（Ｓ６で「Ｎｏ」）、Ｓ１の処理へ戻る。
【００６７】
一定期間内に、収集部２４からメモリアクセス履歴情報が来ない場合（Ｓ６で「Ｙｅｓ」）、本フローチャートの処理は終了する。
【００６８】
図８は、本実施形態（実施例２）におけるメモリアクセス履歴情報の補間処理フローを示す。図８のフローは、メモリアクセス履歴情報と平均メモリアクセス時間との取得後に、メモリアクセス履歴情報の補間処理を行うフローである。この場合、補間処理部２９は、メモリアクセス履歴関係情報の収集後に、メモリ情報解析プログラムの一部として、以下の動作を行う。
【００６９】
補間処理部２９は、カウンタ変数ｉを「１」で初期化する（Ｓ１１）。
補間処理部２９は、収集部２４から、ｉ行目のメモリアクセス履歴関係情報３２（メモリアクセス履歴情報と平均メモリアクセス時間）を受け取る（Ｓ１２）。
【００７０】
補間処理部２９は、取得した平均メモリアクセス時間が閾値Ｌ以下であるか否かを判定する（Ｓ１３）。
【００７１】
平均メモリアクセス時間が閾値Ｌ以下である場合（Ｓ１３で「Ｙｅｓ」）、補間処理部２９は、ｉ行目のメモリアクセス履歴情報だけでなく、予め設定された所定のバイト（ｘバイト）分の連続アクセスとなるように結果をディスク３１に出力する（Ｓ１４）。Ｓ１４の処理は、図７のＳ３の処理と同様である。
【００７２】
図６に示すように、例えば、データサイズが８バイト、ｘ＝２４で、ｉ番目のメモリアクセス履歴関係情報に含まれるデータアドレスが「０ｘ１０００＿１０００＿００００」であるとする。この場合、補間処理部２９は、図７のＳ３にて説明したように、ｉ番目のメモリアクセス履歴関係情報に対して、データアドレスを８バイトずつずらした過去２行分のメモリアクセス履歴情報を追加する（図６参照）。
【００７３】
取得したメモリアクセス履歴情報に対応する平均メモリアクセス時間が閾値Ｌより長い場合（Ｓ１３で「Ｎｏ」）、補間処理部２９は、ｉ行目のメモリアクセス履歴情報（命令アドレス、データアドレス、サイズ）をディスク３１に出力する（Ｓ１５）。
【００７４】
Ｓ１４またはＳ１５の処理終了後、補間処理部２９は、ｉの値をインクリメントする（Ｓ１６）。
【００７５】
メモリアクセス履歴関係情報３２にｉ行目が存在する場合（Ｓ１７で「Ｎｏ」）、補間処理部２９は、Ｓ１２の処理以降の処理を行う。
【００７６】
メモリアクセス履歴関係情報３２にｉ行目が存在しない場合（Ｓ１７で「Ｙｅｓ」）、本フローチャートの処理は終了する。
【００７７】
図９は、本実施形態における補間後のメモリアクセス履歴情報の他の出力例（変形例１）を示す。図９は、メモリアクセス履歴情報に対応する平均メモリアクセス時間が閾値Ｌ以下、すなわち連続アクセス部分であると判定された場合に、連続アクセス部分であることを示すフラグを付与した例である。
【００７８】
図１０は、本実施形態（変形例１）におけるメモリアクセス履歴情報の補間処理フローを示す。図１０のフローは、図７のフローのＳ３をＳ３ａに置き換えたものである。
【００７９】
補間処理部２９は、平均メモリアクセス時間が閾値Ｌ以下、すなわち連続アクセス部分であると判定した場合（Ｓ２で「Ｙｅｓ」）、受け取ったメモリアクセス履歴情報に連続アクセス部分であることを示すフラグ（連続アクセスフラグ）を付与する（Ｓ３ａ）。
【００８０】
なお、メモリアクセス履歴情報と平均メモリアクセス時間との取得後に、メモリアクセス履歴情報の補間処理を行う場合には、図８のフローのＳ１４をＳ３ａに置き換えてよい。
【００８１】
これにより、補間処理部２９は、連続アクセスフラグに基づいて、その後の任意のタイミングで、推定メモリアクセス履歴情報の生成（図７のＳ３の処理、または図８のＳ１４の処理）を行うことができる。
【００８２】
図１１は、本実施形態における補間後のメモリアクセス履歴情報の他の出力例（変形例２）を示す。図１１は、メモリアクセス履歴情報に対応する平均メモリアクセス時間が閾値Ｌ以下、すなわち連続アクセス部分であると判定された場合に、連続アクセスが発生したようにデータサイズを変更した例である。
【００８３】
図１２は、本実施形態（変形例２）におけるメモリアクセス履歴情報の補間処理フローを示す。図１２のフローは、図８のフローのＳ３をＳ３ｂに置き換えたものである。
【００８４】
補間処理部２９は、平均メモリアクセス時間が閾値Ｌ以下、すなわち連続アクセス部分であると判定した場合（Ｓ２で「Ｙｅｓ」）、連続アクセスが発生したようにデータサイズを所定値ｋ（バイト）に変更する（Ｓ３ｂ）。ここで、所定値ｋは、メモリアクセス履歴情報に含まれるデータサイズ×ｎ（ｎは整数）で示される。
【００８５】
図１１の場合、例えば、命令アドレス「０ｘ００００００」の行について、図５に示す補間前のメモリアクセス履歴情報と比べると、データサイズが「８バイト」から「２５６バイト」に変更されている。これにより、２５６バイト分のデータが連続してアクセスされたようにみせることができる。なお、この実施例では、変更するサイズを２５６バイトに設定したが、これに限定されず、パラメータとして任意の値を設定することができる。
【００８６】
なお、メモリアクセス履歴情報と平均メモリアクセス時間との取得後に、メモリアクセス履歴情報の補間処理を行う場合には、図８のフローのＳ１４をＳ３ｂに置き換えてよい。
【００８７】
図１２は、本実施形態におけるプログラムを実行するコンピュータのハードウェア環境の構成ブロック図の一例である。コンピュータ４０は、情報処理装置１１またはメモリアクセス履歴情報出力装置２１として機能する。コンピュータ４０は、ＣＰＵ４２、ＲＯＭ４３、ＲＡＭ４６、通信Ｉ／Ｆ４４、記憶装置４７、出力Ｉ／Ｆ４１、入力Ｉ／Ｆ４５、読取装置４８、バス４９、出力装置５１、入力装置５２によって構成されている。
【００８８】
ここで、ＣＰＵは、中央演算装置を示す。ＲＯＭは、リードオンリメモリを示す。ＲＡＭは、ランダムアクセスメモリを示す。Ｉ／Ｆは、インターフェースを示す。バス４９には、ＣＰＵ４２、ＲＯＭ４３、ＲＡＭ４６、通信Ｉ／Ｆ４４、記憶装置４７、出力Ｉ／Ｆ４１、入力Ｉ／Ｆ４５、及び読取装置４８が接続されている。読取装置４８は、可搬型記録媒体を読み出す装置である。出力装置５１は、出力Ｉ／Ｆ４１に接続されている。入力装置５２は、入力Ｉ／Ｆ４５に接続にされている。
【００８９】
記憶装置４７としては、ハードディスク、フラッシュメモリ、磁気ディスクなど様々な形式の記憶装置を使用することができる。記憶装置４７またはＲＯＭ４３には、ＣＰＵ４２を取得部１２、補間処理部１３として機能させる本実施形態に係るプログラムが格納されている。より具体的には、記憶装置４７またはＲＯＭ４３には、収集部２４、補間処理部２９として機能させる本実施形態に係るプログラムが格納されている。また、記憶装置４７またはＲＯＭ４３には、性能監視回路に相当するプログラム及びアクセス情報取得回路２８に相当するプログラムが格納されていてもよい。記憶装置４７は、本実施形態におけるディスク３１に相当する。
【００９０】
ＲＡＭ４６には、情報が一時的に記憶される。ＲＡＭ４６は、本実施形態におけるメモリ３０に相当する。
【００９１】
ＣＰＵ４２は、記憶装置４７またはＲＯＭ４３から本実施形態に係るプログラムを読み出し、当該プログラムを実行する。
【００９２】
通信Ｉ／Ｆ４４は、ネットワークと接続して他の装置と通信するためのポート等のインターフェースである。
【００９３】
上記実施形態で説明した処理を実現するプログラムは、プログラム提供者側から通信ネットワーク５０、および通信Ｉ／Ｆ４４を介して、例えば記憶装置４７に格納されてもよい。また、上記実施形態で説明した処理を実現するプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体は読取装置４８にセットされて、ＣＰＵ４２によってそのプログラムが読み出されて、実行されてもよい。可搬型記憶媒体としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスク、ＩＣカード、ＵＳＢメモリ装置、半導体メモリカードなど様々な形式の記憶媒体を使用することができる。このような記憶媒体に格納されたプログラムが読取装置４８によって読み取られる。
【００９４】
入力装置５２には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレット、タッチパネルなどを用いることが可能である。また、出力装置５１には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。
【００９５】
ネットワーク５０は、インターネット、ＬＡＮ、ＷＡＮ、専用線、有線、無線等の通信網であってよい。
【００９６】
本実施形態によれば、上述した第２の方法による一定期間ごとにメモリアクセス履歴情報を取得する手法と同程度の時間で、より高精度にメモリアクセス履歴情報を取得できる。
【００９７】
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【００９８】
１１    情報処理装置
１２    取得部
１３    補間処理部
２１    メモリアクセス履歴情報出力装置
２２    ＣＰＵ
２３    ＯＳ
２４    収集部
２５    メモリアクセス時間情報
２６    メモリアクセス履歴情報
２７    性能監視回路
２８    アクセス情報取得回路
２９    補間処理部
３０    メモリ
３１    ディスク
３２    メモリアクセス履歴関係情報
【図１】
2017033262.tif 000003
【図２】
2017033262.tif 000004
【図３】
2017033262.tif 000005
【図４】
2017033262.tif 000006
【図５】
2017033262.tif 000007
【図６】
2017033262.tif 000008
【図７】
2017033262.tif 000009
【図８】
2017033262.tif 000010
【図９】
2017033262.tif 000011
【図１０】
2017033262.tif 000012
【図１１】
2017033262.tif 000013
【図１２】
2017033262.tif 000014
【図１３】
2017033262.tif 000015