(57)【要約】【課題】  キャッシュされたデータへのヒット率を従来にも増して上げることができる、情報処理装置を提供する。【解決手段】  命令実行手段からインスタンス生成指示命令を受け、インスタンスを生成し、そのインスタンスの生成に用いられたインスタンス生成指示命令がアプリケーションプログラムにおいて記述されている記述位置をと、そのインスタンス生成指示命令によって生成されたインスタンスへのアクセス回数とを対応付けて記録する。そして、トレース結果記録手段の記録する情報が十分となる所定の時間後に生成するインスタンスについては、インスタンスへのアクセス回数に基づいて、当該アクセス回数の頻度別にヒープに生成して記憶する。【選択図】    図１
2005332050.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムの命令を実行する命令実行手段と、
前記命令実行手段からインスタンス生成指示命令を受け、インスタンスを生成するインスタンス生成手段と、
インスタンス生成手段によるインスタンスの生成に用いられたインスタンス生成指示命令が前記アプリケーションプログラムにおいて記述されている記述位置と、そのインスタンス生成指示命令によって生成されたインスタンスへのアクセス回数とを対応付けて記録するトレース結果記録手段と、
生成されたインスタンスを記憶する複数のインスタンス記憶手段と、
を備え、
前記トレース結果記録手段の記録する情報が十分となる所定の時間後に生成するインスタンスについては、前記インスタンス生成手段が、前記インスタンスへのアクセス回数に基づいて、当該アクセス回数の頻度別に前記インスタンス記憶手段に記憶する
ことを特徴とする情報処理装置。
【請求項２】
前記複数のインスタンス記憶手段を管理するメモリ管理手段を備え、
前記メモリ管理手段は、前記インスタンス記憶手段の記憶領域が所定の閾値以下の場合には、そのインスタンス記憶手段に記録されている不要となったインスタンスを解放する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記トレース結果記録手段の記録する情報が十分となる所定の時間後に生成したインスタンスについては、前記インスタンス生成手段が、前記インスタンスへのアクセス回数に基づいて、高頻度にアクセスされるインスタンスの生成に用いられるインスタンス生成指示命令によって生成されたインスタンスと、低頻度にアクセスされるインスタンスの生成に用いられるインスタンス生成指示命令によって生成されたインスタンスと、を分けて前記複数のインスタンス記憶手段の何れかに記憶する
ことを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記インスタンスへのアクセス回数に基づいて、高頻度にアクセスされるインスタンスの生成に用いられるインスタンス生成指示命令を特定するインスタンス生成指示命令特定手段と、
当該特定されたインスタンス生成指示命令を記憶する特定インスタンス生成指示命令記憶手段と、
を備え、
前記インスタンス生成手段は、前記トレース結果記録手段の記録する情報が十分となる所定の時間後には、前記命令実行手段から受けたインスタンス生成指示命令と、前記特定インスタンス生成指示命令記憶手段で記憶するインスタンス生成指示命令と、を比較し、前記命令実行手段から受けたインスタンス生成指示命令が前記特定インスタンス生成指示命令記憶手段に記録されている場合にのみ、前記高頻度にアクセスされるインスタンスの生成に用いられるインスタンス生成指示命令によって生成されたインスタンスを、前記高頻度にアクセスされるインスタンス専用の前記インスタンス記憶手段に記憶する
ことを特徴とする請求項１から請求項３のいずれかに記載の情報処理装置。
【請求項５】
生成されたインスタンスを記憶する複数のインスタンス記憶手段を備えた情報処理装置における情報処理方法であって、
命令実行手段が、アプリケーションプログラムの命令を実行し、
インスタンス生成手段が、前記命令実行手段からインスタンス生成指示命令を受け、インスタンスを生成し、
トレース結果記録手段が、インスタンス生成手段によるインスタンスの生成に用いられたインスタンス生成指示命令が前記アプリケーションプログラムにおいて記述されている記述位置と、そのインスタンス生成指示命令によって生成されたインスタンスへのアクセス回数とを対応付けて記録し、
前記トレース結果記録手段の記録する情報が十分となる所定の時間後に生成したインスタンスについては、前記インスタンス生成手段が、前記インスタンスへのアクセス回数に基づいて、当該アクセス回数の頻度別に前記インスタンス記憶手段に記憶する
ことを特徴とする情報処理方法。
【請求項６】
生成されたインスタンスを記憶する複数のインスタンス記憶手段を備えた情報処理装置に実行させるプログラムであって、
アプリケーションプログラムの命令を実行する命令実行処理と、
前記命令実行処理によりインスタンス生成指示命令を受け、インスタンスを生成するインスタンス生成処理と、
インスタンス生成処理においてインスタンスの生成に用いられたインスタンス生成指示命令が前記アプリケーションプログラムにおいて記述されている記述位置と、そのインスタンス生成指示命令によって生成されたインスタンスへのアクセス回数とを対応付けてトレース結果記録手段に記録するトレース結果記録処理と、
前記トレース結果記録処理において記録された情報が十分となる所定の時間後に生成したインスタンスについては、前記インスタンスへのアクセス回数に基づいて、当該アクセス回数の頻度別に前記インスタンス記憶手段に記憶するアクセス頻度別記憶処理と、
を前記コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラムの実行環境において生成されるインスタンスへのアクセス頻度に基づいて、適切なメモリ空間（ヒープ）へ動的にインスタンスを記憶させる情報処理装置及び情報処理方法ならびにそのプログラムに関する。
【背景技術】
【０００２】
従来Ｊａｖａ（登録商標）技術を利用したコンピュータにおいて、インスタンス生成機能は、生成要求があった順に、生成したインスタンスをヒープ配置している。そしてそのヒープに配置されたインスタンスをコピーする際には、上記コンピュータにおける自動メモリ管理機能が、コピーする順にインスタンスを他のヒープに再配置していた。つまり、インスタンスの配置はインスタンスへのアクセス頻度とは無関係に決定されており、キャッシュの利用が最適化されているとはいうことができない。ここで、インスタンスへのアクセスの偏りを利用して、キャッシュされたデータへのヒット率を上げる為に、インスタンスの分割と、フィールドの並び替えを行なっている。
【非特許文献１】Trishul M.Chilimbi,Bob Davidson,James R.Larus“Cache-conscious structuer definition”,pp.13-pp.24,ACM SIGPLAN`99 Conference on Programming Language Design and Implementation,May 1999.
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら上述の文献の技術では、インスタンス自体の配置は最適化されていないので、十分に、キャッシュされたデータへのヒット率を上げることができなかった。
【０００４】
そこでこの発明は、キャッシュされたデータへのヒット率を従来にも増して上げることができる、情報処理装置及び情報処理方法並びにそのプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００５】
本発明は、上述の課題を解決すべくなされたもので、アプリケーションプログラムの命令を実行する命令実行手段と、前記命令実行手段からインスタンス生成指示命令を受け、インスタンスを生成するインスタンス生成手段と、インスタンス生成手段によるインスタンスの生成に用いられたインスタンス生成指示命令が前記アプリケーションプログラムにおいて記述されている記述位置と、そのインスタンス生成指示命令によって生成されたインスタンスへのアクセス回数とを対応付けて記録するトレース結果記録手段と、生成されたインスタンスを記憶する複数のインスタンス記憶手段と、を備え、前記トレース結果記録手段の記録する情報が十分となる所定の時間後に生成するインスタンスについては、前記インスタンス生成手段が、前記インスタンスへのアクセス回数に基づいて、当該アクセス回数の頻度別に前記インスタンス記憶手段に記憶することを特徴とする情報処理装置である。
【０００６】
また本発明は、前記複数のインスタンス記憶手段を管理するメモリ管理手段を備え、前記メモリ管理手段は、前記インスタンス記憶手段の記憶領域が所定の閾値以下の場合には、そのインスタンス記憶手段に記録されている不要となったインスタンスを解放することを特徴とする。
【０００７】
また本発明は、前記トレース結果記録手段の記録する情報が十分となる所定の時間後に生成したインスタンスについては、前記インスタンス生成手段が、前記インスタンスへのアクセス回数に基づいて、高頻度にアクセスされるインスタンスの生成に用いられるインスタンス生成指示命令によって生成されたインスタンスと、低頻度にアクセスされるインスタンスの生成に用いられるインスタンス生成指示命令によって生成されたインスタンスと、を分けて前記複数のインスタンス記憶手段の何れかに記憶することを特徴とする。
【０００８】
また本発明は、前記インスタンスへのアクセス回数に基づいて、高頻度にアクセスされるインスタンスの生成に用いられるインスタンス生成指示命令を特定するインスタンス生成指示命令特定手段と、当該特定されたインスタンス生成指示命令を記憶する特定インスタンス生成指示命令記憶手段と、を備え、前記インスタンス生成手段は、前記トレース結果記録手段の記録する情報が十分となる所定の時間後には、前記命令実行手段から受けたインスタンス生成指示命令と、前記特定インスタンス生成指示命令記憶手段で記憶するインスタンス生成指示命令と、を比較し、前記命令実行手段から受けたインスタンス生成指示命令が前記特定インスタンス生成指示命令記憶手段に記録されている場合にのみ、前記高頻度にアクセスされるインスタンスの生成に用いられるインスタンス生成指示命令によって生成されたインスタンスを、前記高頻度にアクセスされるインスタンス専用の前記インスタンス記憶手段に記憶することを特徴とする。
【０００９】
また本発明は、生成されたインスタンスを記憶する複数のインスタンス記憶手段を備えた情報処理装置における情報処理方法であって、命令実行手段が、アプリケーションプログラムの命令を実行し、インスタンス生成手段が、前記命令実行手段からインスタンス生成指示命令を受け、インスタンスを生成し、トレース結果記録手段が、インスタンス生成手段によるインスタンスの生成に用いられたインスタンス生成指示命令が前記アプリケーションプログラムにおいて記述されている記述位置と、そのインスタンス生成指示命令によって生成されたインスタンスへのアクセス回数とを対応付けて記録し、前記トレース結果記録手段の記録する情報が十分となる所定の時間後に生成したインスタンスについては、前記インスタンス生成手段が、前記インスタンスへのアクセス回数に基づいて、当該アクセス回数の頻度別に前記インスタンス記憶手段に記憶することを特徴とする情報処理方法である。
【００１０】
また本発明は、生成されたインスタンスを記憶する複数のインスタンス記憶手段を備えた情報処理装置に実行させるプログラムであって、アプリケーションプログラムの命令を実行する命令実行処理と、前記命令実行処理によりインスタンス生成指示命令を受け、インスタンスを生成するインスタンス生成処理と、インスタンス生成処理においてインスタンスの生成に用いられたインスタンス生成指示命令が前記アプリケーションプログラムにおいて記述されている記述位置と、そのインスタンス生成指示命令によって生成されたインスタンスへのアクセス回数とを対応付けてトレース結果記録手段に記録するトレース結果記録処理と、前記トレース結果記録処理において記録された情報が十分となる所定の時間後に生成したインスタンスについては、前記インスタンスへのアクセス回数に基づいて、当該アクセス回数の頻度別に前記インスタンス記憶手段に記憶するアクセス頻度別記憶処理とを前記コンピュータに実行させるプログラムである。
【発明の効果】
【００１１】
本発明によれば、ヒープに記録されたインスタンスへのアクセスの履歴に基づいて、高頻度にアクセスされるインスタンスを生成するインスタンス生成指示命令のアプリケーションプログラムにおける記述位置を記憶することができるので、これにより、インスタンス生成の際に、そのインスタンスが高頻度にアクセスされるインスタンスか否かを判断することができ、これにより高頻度にアクセスされるインスタンスと低頻度にアクセスされるインスタンスを別々のヒープに記憶しておくことができる。これにより特定のヒープにアクセス頻度の高いインスタンスが集中して記憶されるので、各種データキャッシュヒット率が向上し、情報処理装置の性能が向上するという効果が得られる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の一実施形態による情報処理装置を図面を参照して説明する。
図１は同実施形態による情報処理装置の構成を示すブロック図である。この図において、符号１は情報処理装置である。そして情報処理装置１において、符号１１はアプリケーションプログラム処理部であり、各種アプリケーションプログラムの処理を実行する。また１２は命令実行機能部（命令実行手段、インスタンス生成指示命令特定手段）であり、アプリケーションプログラム処理部からの命令を実行する。また１３はインスタンス生成機能部（インスタンス生成手段）であり、命令実行機能部１２から通知を受けたインスタンス生成指示命令に基づいてインスタンスを生成する。また１４は分類結果記録部（特定インスタンス生成指示命令記憶手段）であり高頻度にアクセスされるインスタンスの前記アプリケーションプログラムにおける記述位置を記憶する。また１５は高頻度にアクセスされるインスタンスを記憶する高頻度ヒープ（インスタンス記憶手段）、１６は低頻度にアクセスされるインスタンスを記憶する低頻度ヒープ（インスタンス記憶手段）である。また１７は高頻度ヒープや低頻度ヒープを管理するメモリ管理機能部（メモリ管理手段）である。また１８は生成されたインスタンスごとに、そのインスタンスの生成用のインスタンス生成指示命令がアプリケーションプログラムにおいて記述されている位置とアクセスされた回数とを対応付けてファイルなどに記録するトレース結果記録部（トレース結果記録手段）である。
【００１３】
そして、情報処理装置１においては、命令実行機能部１２がアプリケーションプログラムの命令を実行し、命令実行機能部１２からインスタンス生成指示命令を受け、インスタンス生成機能部１３がインスタンスを生成する。そしてインスタンス生成機能部１３によるインスタンスの生成に用いられたインスタンス生成指示命令がアプリケーションプログラムにおいて記述されている記述位置と、そのインスタンス生成指示命令によって生成されたインスタンスへのアクセス回数とを対応付けてトレース結果記録部１８がファイルなどに記録する。そして、トレース結果記録部１８の記録する情報が十分となる所定の時間後（実行モード）に生成するインスタンスについては、インスタンス生成機能部１３が、インスタンスへのアクセス回数に基づいて、高頻度にアクセスされるインスタンスについては高頻度ヒープ１５へ、また低頻度にアクセスされるインスタンスについては低頻度ヒープ１６へ記録する。ここで、インスタンスとは、オブジェクト指向プログラミングで、クラスを基にした実際の値としてのデータのことをいう。またヒープとは、ＯＳ（Operating System）やアプリケーションソフトが使用するメモリ領域のことをいう。
【００１４】
次に、本実施形態による情報処理装置の処理フローについて図２〜図６を用いて説明する。
図２は、アプリケーションの動作時にインスタンス生成とそのインスタンス生成のトレースを取得する処理を示す図である。
まず情報処理装置１が、トレースモードである時に後述する各処理を行なう。
図２より、最初に、アプリケーションプログラム処理部１１が命令実行機能部１２にインスタンス生成を指示すると、命令実行機能部１２はインスタンス生成機能部１３にそのインスタンス生成の指示を通知する（ステップＳ１）。この時、アプリケーションプログラム処理部１１は、アプリケーションにおけるインスタンスの生成指示命令のコード上の位置情報（クラス名、メソッド名、メソッドの先頭からのオフセット）を通知する。次に、インスタンス生成機能部１３は、トレース結果記録部１８に、生成するインスタンスの型と、アプリケーションにおける生成指示命令のコード上の位置情報（クラス名、メソッド名、メソッドの先頭からのオフセット）の記録を指示する。そしてトレース結果記録部１８は、記録の指示を受けた情報を、例えば、メモリ上や特定のファイルに保存する（ステップＳ２）。
【００１５】
次に、インスタンス生成機能部１３が、ヒープ上にインスタンスを生成し、そのインスタンスの中にそのインスタンスを生成したアプリケーションにおける生成指示命令のコード上の位置情報を記録する（ステップＳ３）。
【００１６】
図３は、アプリケーションが、インスタンスに含まれる情報のフィールドを参照または／および更新した場合のトレースを取得する処理を示す図である。
図３より、情報処理システム１がトレースモードである時に、アプリケーションプログラム処理部１１が、既に生成されてヒープに記録されているインスタンスが保持する情報のフィールドを参照または／および更新（アクセス）する指示を、命令実行機能部１２に行なう（ステップＳ４）。
【００１７】
次に、命令実行機能部１２は、参照または／および更新の対象となったインスタンスが保持する、当該インスタンスの型、アプリケーションにおける生成命令のコード上の位置情報を、そのインスタンスから読み取り、トレース結果記録部１８に、その読み取ったインスタンスの型とアプリケーションにおける生成命令のコード上の位置情報の組み合わせに対応するカウンタ（アクセス回数）を１増加するよう指示する。するとトレース結果記録部１８は、指示を受けたカウンタを１増加させる（ステップＳ５）。
【００１８】
次に、命令実行機能部１２は、アプリケーションプログラム処理部１１からの指示に基づいて、ヒープ上のインスタンスが保持する情報を参照または／および更新する（ステップＳ６）。
【００１９】
以上、トレースモード時において、トレース結果記録部１８は、アプリケーションプログラム処理１１からの指示により命令実行機能部１２が参照または／および更新したインスタンスの回数を、カウンタにおいて記録することとなる。
【００２０】
図４は、情報処理装置がトレースモードから実行モードに遷移し、インスタンスの生成指示命令を受けた際の当該インスタンスが高頻度で参照・更新されるか、低頻度で参照・更新されるかを判断する処理のフローを示す図である。
【００２１】
まず、例えばユーザからの指示やタイマの設定による実行モード遷移シグナルに基づいて、情報処理装置１がトレースモードから実行モードに遷移する（ステップＳ８）。次に、トレース結果記録部１８が記録した情報（インスタンスの型、アプリケーションにおけるインスタンス生成指示命令のコード上の位置情報、カウンタ）に基づいて、命令実行機能部１２が、アプリケーションプログラムにおけるインスタンス生成指示命令の記述位置が、高頻度で参照・更新されるインスタンスの生成指示命令の記述位置であるか否かを判断する（ステップＳ９）。判断基準としては、例えば、「トレース結果記録部１８が記録したカウンタの値の並び替えにより、上位から所定の順位までのカウンタを特定し、そのカウンタに対応するインスタンス生成指示命令のコード上の位置情報によって示される、アプリケーションプログラムにおけるインスタンス生成指示命令の記述位置を、高頻度で参照・更新されるインスタンスの生成指示命令の記述位置と判断する」方法などがある。
【００２２】
次に、命令実行機能部１２が、高頻度で参照・更新されるインスタンスの生成指示命令の記述位置を示す、インスタンスの型、アプリケーションにおけるインスタンス生成指示命令のコード上の位置情報を、トレース結果記録部１８が記録した情報から読み取って、分類結果記録部１４に通知する（ステップＳ１０）。そして、分類結果記録部１４は、例えばメモリ上や特定のファイルに、高頻度で参照・更新されるインスタンスの生成指示命令の記述位置を示す、インスタンスの型、アプリケーションにおけるインスタンス生成指示命令のコード上の位置情報を記録する。
【００２３】
図５は、実行モードにおいて、インスタンス生成が行なわれる際に、高頻度で参照・更新されるインスタンスと、低頻度で参照・更新されるインスタンスの記録先のヒープを別にする処理を示す図である。
図５より、情報処理装置１が実行モードである時に、アプリケーションプログラム処理部１１が命令実行機能部１２にインスタンス生成を指示し、命令実行機能部１２がインスタンス生成機能部１３にそのインスタンス生成指示命令を通知する（ステップＳ１１）。この時、アプリケーションプログラム処理部１１から命令実行機能部１２を介してインスタンス生成機能部１３には、アプリケーションにおけるインスタンスの生成指示命令のコード上の位置情報（クラス名、メソッド名、メソッドの先頭からのオフセット）が通知される。
【００２４】
次にインスタンス生成機能部１３は、インスタンスの生成指示命令のコード上の位置情報を分類結果記録部１４に通知する。そして分類結果記録部１４は、記録した情報の中に通知を受けたインスタンスの生成指示命令のコード上の位置情報が存在するか否かを確認し、存在していれば、そのインスタンスの生成指示命令のコード上の位置情報で示される、アプリケーションプログラムにおけるインスタンス生成指示命令の記述位置が、高頻度で参照・更新されるインスタンスの生成指示命令の記述位置である旨をインスタンス生成機能部１３に通知し、存在していなければ、アプリケーションプログラムにおけるインスタンス生成指示命令の記述位置が、低頻度で参照・更新されるインスタンスの生成指示命令の記述位置である旨をインスタンス生成機能部１３に通知する（ステップＳ１２）。
【００２５】
そして、インスタンス生成機能部１３は、命令実行機能部１２から受けたインスタンス生成指示命令が、高頻度で参照・更新されるインスタンスの生成指示命令である場合には、高頻度ヒープ上にインスタンスを生成し、そうでない場合には、低頻度ヒープ上にインスタンスを生成して記録する（ステップＳ１３）。
【００２６】
図６は、メモリ管理機能部によるメモリ管理の処理を示す図である。
図６より、情報処理装置１が実行モードである時に、メモリ管理機能部１７が高頻度ヒープ１５や低頻度ヒープ１６で利用されていないインスタンスを消去する為に、メモリを管理する場合、高頻度ヒープ１５と低頻度ヒープ１６をそれぞれ独立にメモリ管理し、ヒープ間でインスタンスを移動することはしない。そして、メモリ管理機能部１７は、ヒープの記憶領域が所定の閾値以下の場合には、そのヒープに記録されている不要となったインスタンスを解放する（ステップＳ１４）。
【００２７】
なお上述の情報処理装置は内部に、コンピュータシステムを有している。そして、上述した処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【００２８】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【図面の簡単な説明】
【００２９】
【図１】本発明の実施形態による情報処理装置の構成を示すブロック図である。
【図２】アプリケーションの動作時にインスタンス生成とそのインスタンス生成のトレースを取得する処理を示す図である。
【図３】アプリケーションが、インスタンスに含まれる情報のフィールドを参照または／および更新した場合のトレースを取得する処理を示す図である。
【図４】情報処理装置がトレースモードから実行モードに遷移し、インスタンスの生成指示命令を受けた際の当該インスタンスが高頻度で参照・更新されるか、低頻度で参照・更新されるかを判断する処理のフローを示す図である。
【図５】実行モードにおいて、インスタンス生成が行なわれる際に、高頻度で参照・更新されるインスタンスと、低頻度で参照・更新されるインスタンスの記録先のヒープを別にする処理を示す図である。
【図６】メモリ管理機能部によるメモリ管理の処理を示す図である。
【符号の説明】
【００３０】
１・・・情報処理装置、１１・・・アプリケーションプログラム処理部、１２・・・命令実行機能部、１３・・・インスタンス生成機能部、１４・・・分類結果記録部、１５・・・高頻度ヒープ、１６・・・低頻度ヒープ、１７・・・メモリ管理機能部、１８・・・トレース結果記録部
【図１】
2005332050.tif 000003
【図２】
2005332050.tif 000004
【図３】
2005332050.tif 000005
【図４】
2005332050.tif 000006
【図５】
2005332050.tif 000007
【図６】
2005332050.tif 000008