(57)【要約】【課題】キャッシュメモリを内蔵した演算装置の外部メモリへのアクセス回数を低減する。【解決手段】アプリケーションプログラムの実行時のアドレス履歴を取得することで（ステップ１０８）、実行頻度の高い関数及び使用頻度の高いデータを学習して、履歴データとして記憶しておき（ステップ１１０）、次回の当該アプリケーションプログラムの実行時には、この履歴データに基づいて頻度の高いアドレスを選択して（ステップ１０２）、選択したアドレス、すなわち実行頻度の高い関数及び使用頻度の高いデータをキャッシュメモリにロック（常駐）させる（ステップ１０４）。したがって、アプリケーションプログラムが目的とする本来の処理の実行時には（ステップ１０６）、実行頻度の高い関数及び使用頻度の高いデータについては、外部メモリからではなく、キャッシュメモリから供給を受けることができ、外部メモリへのアクセス回数を低減することができる。【選択図】  図３
2004192403.tif 000002
【特許請求の範囲】
【請求項１】
演算装置に内蔵されたキャッシュメモリへのデータの格納を管理するためのキャッシュメモリのデータ管理方法であって、
前記演算装置で所定のプログラムを実行した際に、当該実行中にアクセスしたデータのアドレスの履歴を取得して記憶しておき、
前記所定のプログラムを実行する際に、前記履歴に含まれるアドレスを選択し、
選択したアドレスに対応するデータを前記キャッシュメモリに常駐させる、
ことを特徴とするキャッシュメモリのデータ管理方法。
【請求項２】
前記履歴中の高頻度のアドレスを選択する、
ことを特徴とする請求項１に記載のキャッシュメモリのデータ管理方法。
【請求項３】
キャッシュメモリが内蔵された演算装置と、
前記演算装置で所定のプログラムを実行した際に、アクセスしたデータのアドレスの履歴を取得する履歴取得手段と、
前記履歴取得手段により取得された前記履歴を記憶する記憶手段と、
前記記憶手段に記憶されている前記履歴に含まれるアドレスを選択する選択手段と、
前記選択手段により選択されたアドレスに対応するデータが前記キャッシュメモリに常駐されるように制御する制御手段と、
を備えた情報処理装置。
【請求項４】
前記アドレスが、所定の実行単位のアドレスである、ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記アドレスが、所定の参照単位のアドレスである、ことを特徴とする請求項３に記載の情報処理装置。
【請求項６】
前記選択手段が、前記履歴中で高頻度のアドレスを選択する、ことを特徴とする請求項３乃至請求項５の何れか１項に記載の情報処理装置。
【請求項７】
前記取得手段が、前記プログラム毎に前記履歴を取得して管理する、ことを特徴とする請求項３乃至請求項６の何れか１項に記載の情報処理装置。
【請求項８】
前記取得手段による前記履歴の取得を中止する中止手段を更に有する、ことを特徴とする請求項３乃至請求項７の何れか１項に記載の情報処理装置。
【請求項９】
前記中止手段が、２回目以降の前記プログラムの実行時に、前記取得手段による履歴の取得を中止する、ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記中止手段が、前記取得手段によって取得した前記履歴において、前記アドレスの頻度順位の変動が無かった場合に、以降の前記プログラムの実行時における前記取得手段による履歴の取得を中止する、ことを特徴とする請求項８に記載の情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュメモリのデータ管理方法及び情報処理装置に係わり、特に、演算処理を行う演算装置に内蔵されたキャッシュメモリへのデータの格納を管理するためのキャッシュメモリのデータ管理方法、及びキャッシュメモリが内蔵された演算装置を備えた情報処理装置に関する。
【０００２】
【従来の技術】
ＣＰＵでは、外部メモリから必要なデータを呼び出して演算処理を行うが、一般に、外部メモリとして用いられるＤＲＡＭ（Dynamic RAM）などの記憶装置は、大容量化が容易だが応答速度が遅いという特徴があり、外部メモリへのアクセス時間のためにＣＰＵの処理能力（パフォーマンス）が低下してしまう。このため、図８に示すように、ＣＰＵ２００には、ＣＰＵコア（本体）２０２から高速アクセス可能なＳＲＡＭ（Static RAM）などがキャッシュメモリ２０４として備えられている。例えば、関数（プログラム）の呼出しを例に説明すると、ＣＰＵ２００では、ＣＰＵコア２０２により外部メモリ２０６から必要な関数２０８を呼び出した際に、キャッシュメモリ２０４にも当該関数２０８を格納しておく（矢印▲１▼参照）。次回、同一の関数２０８を読み込む必要がある場合には、外部メモリ２０６の代わりにキャッシュメモリ２０４からＣＰＵコア２０２に当該関数２０８が供給されるようになっている（矢印▲２▼参照）。
【０００３】
ここで、キャッシュメモリに必要とされるデータを全て格納できれば、格納後は外部メモリへのアクセスは不要となる。しかしながら、キャッシュメモリの大容量化は技術的に難しく、格納可能なデータ量には限界があり、外部メモリへのアクセスを不要にすることは不可能である。このため、従来より、命令アドレスの実行履歴を保持しておき、過去に必要とされたデータがキャッシュメモリに格納されていなかった（キャッシュミス）ときの命令アドレスの実行アドレスが近づいた際に、キャッシュミス時にキャッシュメモリに格納すべきデータを前もって外部メモリよりもアクセス時間の短い場所に設けたバッファに格納しておき、キャッシュミス時の不利を最小限に抑える技術が提案されている。
【０００４】
【特許文献１】
特開２００１−１３４４３９号公報
【０００５】
【発明が解決しようとする課題】
しかしながら、従来技術では、バッファを介在させることで、外部メモリにアクセスするよりもキャッシュミスの１回当たりのアクセス時間を短縮することはできるが、キャッシュミスの発生頻度は変わらないため、キャッシュミス回数が多いほどバッファへのアクセス回数が増えて、ＣＰＵのパフォーマンスが低下してしまうという問題があった。
【０００６】
本発明は上記問題点を解消するためになされたもので、キャッシュメモリを内蔵した演算装置の外部メモリへのアクセス回数を低減することができるキャッシュメモリのデータ管理方法及び情報処理装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記目的を達成するために、請求項１に記載の発明は、演算装置に内蔵されたキャッシュメモリへのデータの格納を管理するためのキャッシュメモリのデータ管理方法であって、前記演算装置で所定のプログラムを実行した際に、当該実行中にアクセスしたデータのアドレスの履歴を取得して記憶しておき、前記所定のプログラムを実行する際に、前記履歴に含まれるアドレスを選択し、選択したアドレスに対応するデータを前記キャッシュメモリに常駐させる、ことを特徴としている。
【０００８】
請求項１に記載の発明によれば、キャッシュメモリを内蔵した演算装置において、過去にプログラムを実行したときにアクセスしたアドレスの履歴を取得して記憶しておき、当該プログラムが再び実行されるときには、この履歴に含まれるアドレスの中から選択したアドレスのデータがキャッシュメモリに常駐される。したがって、演算装置では、当該プログラムの２回目以降の実行中に、選択したアドレスにアクセスする必要が生じた際には、外部のメモリからではなく、キャッシュメモリから当該アドレスに対応するデータの供給を受けることができる。これにより、外部メモリへのアクセス回数を低減することができる。
【０００９】
なお、取得するアドレスは、所定の実行単位のアドレスでもよいし、所定の参照単位のアドレスでもよい。すなわち、キャッシュメモリへは、所定のプログラムの実行時に呼び出されるサブのプログラムである関数やその一部を常駐させてもよいし、所定のプログラムの実行時に参照されるデータを常駐させることもできる。
【００１０】
上記のキャッシュメモリのデータ管理方法においては、請求項２に記載されているように、前記履歴中の高頻度のアドレスを選択するようにすることが好ましい。
【００１１】
上記のキャッシュメモリのデータ管理方法は、以下の情報処理装置により実現可能である。すなわち、この情報処理装置は、請求項３に記載されているように、キャッシュメモリが内蔵された演算装置と、前記演算装置で所定のプログラムを実行した際に、アクセスしたデータのアドレスの履歴を取得する履歴取得手段と、前記履歴取得手段により取得された前記履歴を記憶する記憶手段と、前記記憶手段に記憶されている前記履歴に含まれるアドレスを選択する選択手段と、前記選択手段により選択されたアドレスに対応するデータが前記キャッシュメモリに常駐されるように制御する制御手段と、を備えたことを特徴とする。
【００１２】
なお、上記の情報処理装置において、履歴を取得するアドレスは、請求項４に記載されているように、所定の実行単位のアドレスでもよいし、請求項５に記載されているように、所定の参照単位のアドレスでもよい。また、情報処理装置において、請求項６に記載されているように、前記選択手段が、前記履歴中で高頻度のアドレスを選択するとよい。
【００１３】
また、請求項７に記載されているように、前記取得手段が、前記プログラム毎に前記履歴を取得して管理するとよい。
【００１４】
また、請求項８に記載されているように、前記取得手段による前記履歴の取得を中止する中止手段を更に有するとよい。この場合の中止手段は、請求項９に記載されているように、２回目以降の前記プログラムの実行時に、前記取得手段による履歴の取得を中止するようにしてもよいし、請求項１０に記載されているように、前記取得手段によって取得した前記履歴において、前記アドレスの頻度順位の変動が無かった場合に、以降の前記プログラムの実行時における前記取得手段による履歴の取得を中止するようにしてもよい。
【００１５】
【発明の実施の形態】
次に、図面を参照して本発明に係る実施形態の１例を詳細に説明する。
【００１６】
図１に本発明が適用された情報処理装置を示す。図１に示す情報処理装置１０は、演算装置としてのＣＰＵ１２と、外部メモリとしてのＲＯＭ１４及びＲＡＭ１６と、不揮発メモリ１８とを備え、ＣＰＵ１２、ＲＯＭ１４、ＲＡＭ１６、及び不揮発メモリ１８はバス２０により相互に接続されている。
【００１７】
ＣＰＵ１２は、アプリケーションプログラム２２に従って演算処理を行うＣＰＵコア２４と、ＣＰＵコア２４で演算処理する関数を表すプログラムデータ（以下、「関数」と称す）２６を格納するためのキャッシュメモリ（ＩＣａｃｈｅ）２８と、ＣＰＵコア２４での演算処理時に参照される参照データ（以下、「データ」と称す）３０を格納するためのキャッシュメモリ（ＤＣａｃｈｅ）３２と、キャッシュメモリ２８、３２への関数２６及びデータ３０の格納を制御するキャッシュ制御部３４とが相互に接続されて構成されている。
【００１８】
ＲＯＭ１４には、複数の（１つでもよい）アプリケーションプログラム２２が格納されている。アプリケーションプログラム２２は、当該アプリケーションプログラム２２が目的とする本来の処理を行うための本体プログラム２２Ａ、及び該本体プログラム２２Ａの処理全体に係わる処理時間を短縮するための付加プログラム２２Ｂを含んで構成されている。本体プログラム２２Ａには、当該アプリケーションプログラム２２の本来目的としている処理を行うために、関数の呼出しや関数間での引数の引渡しなど全体の処理を制御するためのメインのプログラムと共に、サブのプログラムである各種の関数２６が含まれている。一般に、この本体プログラム２２Ａがアプリケーションプログラムと称される。すなわち、本実施形態においては、一般的なアプリケーションプログラムに付加プログラム２２Ｂが付加されてパッケージ化されている。
【００１９】
前述のＣＰＵ１２のキャッシュメモリ２８には、アプリケーションプログラム２２の実行時に、当該アプリケーションプログラムの本体プログラム２２Ａの中から必要な関数２６が適宜呼び出されて格納される。
【００２０】
ＲＡＭ１６は、アプリケーションプログラム２２に従った演算処理の処理対象データ、処理結果データ、パラメータ設定値といった各種のデータ３０を格納するために用いられ、前述のキャッシュメモリ３２には、アプリケーションプログラム２２の実行時に、このＲＡＭ１６から必要なデータ３０が適宜呼び出されて格納される。
【００２１】
不揮発メモリ１８には、例えばＥＥＰＲＯＭ、Ｆｌａｓｈメモリ、ハードディスクなどを用いることができる。不揮発メモリ１８は、各アプリケーションプログラム２２毎に後述する履歴データ３６を格納するために用いられる。すなわち不揮発メモリ１８が、記憶手段に対応する。
【００２２】
ここで、本実施形態に係る情報処理装置１０では、ＣＰＵ１２によりＲＯＭ１４に格納されているアプリケーションプログラム２２を実行した場合、当該情報処理装置１０のハードウェア資源を利用して、図２に示す機能が構築されるようになっている。
【００２３】
すなわち、アプリケーションプログラム２２の実行により、情報処理装置１０には、プログラム実行部５０と、プログラム実行部５０でアクセスしたアドレスを管理するアドレス履歴管理部５２と、アドレス選択部５４とが構築される。
【００２４】
プログラム実行部５０は、本体プログラム２２Ａにより構築される機能であり、本体プログラム２２Ａに基づく処理、すなわちアプリケーションプログラム２２が目的とする本来の処理を行う。
【００２５】
アドレス履歴管理部５２は、付加プログラム２２Ｂにより構築される機能であり、プログラム実行部５０の動作中、すなわち本体プログラム２２Ａの実行中にアクセスした所定の実行単位のアドレス履歴、すなわち実行した関数２６の履歴を取得する。また、本体プログラム２２Ａの実行中にアクセスした所定の参照単位のアドレス履歴、すなわちデータ３０のアドレスについても同様に履歴を取得する。すなわち、アドレス履歴管理部５２が、履歴取得手段としての役目を担っている。
【００２６】
また、アドレス履歴管理部５２は、本体プログラム２２Ａの実行中は、取得した関数２６やデータ３０のアドレスの履歴５６をＲＡＭ１６に蓄積していき、本体プログラム２２Ａの処理が終了したら、その結果を履歴データ３６として不揮発メモリ１８に記憶し、電源がＯＦＦされても保持可能にしておく。なお、履歴データ３６は、アプリケーションプログラム２２毎に管理される。
【００２７】
なお、具体的には、本実施形態では、各関数２６や各データ３０の先頭アドレスへのアクセスした履歴５６を取得するようになっている。また、本実施形態では、履歴データ３６として取得した履歴５６そのものを用いるが、履歴５６から各関数２６及び各データ３０のアクセス回数を求めて、各々の求めたアクセス回数を履歴データ３６として用いてもよく、何れにしろ履歴データ３６により、各関数２６の実行頻度及び各データ３０の使用頻度が把握可能である。
【００２８】
アドレス選択部５４は、付加プログラム２２Ｂにより構築される機能であり、特定のアドレスを選択して、キャッシュ制御部３４に通知する。詳しくは、不揮発メモリ１８の履歴データ３６を参照して、実行頻度の高い関数２６や、使用頻度の高いデータ３０を特定して、当該関数２６やデータ３０の実行単位のアドレスを通知する。すなわち、アドレス選択部５４が、選択手段としての役目を担っている。
【００２９】
キャッシュ制御部３４は、通知されたアドレスに基づいて、対応する関数２６やデータ３０をＲＯＭ１４やＲＡＭ１６から呼び出して、キャッシュメモリ２８、３２内に常駐させるようになっている。すなわち、キャッシュ制御部３４が、制御手段としての機能を担っている。
【００３０】
詳しくは、キャッシュ制御部３４では、キャッシュメモリ２８、３２における常駐指示された特定の関数２６やデータ３０の記憶領域については、他の関数２６やデータ３０を新たに呼び出した際にも書き換えが行われないようにロックしておく。特定の関数２６やデータ３０の記憶領域以外のキャッシュメモリ２８、３２の記憶領域については、新たに呼び出された他の関数２６やデータ３０の内容に随時更新する。
【００３１】
したがって、アドレス選択部５４では、キャッシュ制御部３４へアドレス通知することにより、当該アドレスが示す特定の関数２６及びデータ３０をキャッシュメモリ２８、３２内に常駐させることができる。
【００３２】
次に、本実施形態の作用を説明する。本実施形態に係る情報処理装置１０では、アプリケーションプログラム２２の実行により、図３に示す処理が開始される。
【００３３】
すなわち、アプリケーションプログラム２２が実行されると、図３に示すように、まず、ステップ１００において、アドレス履歴管理部５２の機能により、不揮発メモリ１８に履歴データ３６が有るか否かが判断される。当該アプリケーションプログラム２２の初回の実行時には、履歴が取得されたことがないため、不揮発メモリ１８内には履歴データ３６は存在せず、ステップ１００では否定判定されて、ステップ１０６に進む。
【００３４】
ステップ１０６では、プログラム実行部５０の機能により、アプリケーションプログラム２２が目的とする本来の処理、すなわち本体プログラム２２Ａが実行されると共に、ステップ１０８で、アドレス履歴管理部５２の機能により、この本体プログラム２２Ａの実行中にアクセスした関数２６及びデータ３０のアドレス履歴がそれぞれ取得される。そして、最後にステップ１１０で、アドレス履歴管理部５２の機能により、履歴取得結果を履歴データ３６として不揮発メモリ１８に更新記録して、図３の処理は終了される。なお、この場合は、初めて取得された履歴であるため、履歴データ３６は不揮発メモリ１８に新規登録されることになる。
【００３５】
ここで、具体的に、関数２６の履歴取得について説明する。関数２６の履歴を取得するためには、例えば、Ｃ言語であれば、図４に示すプログラム７０を各関数２６の先頭に記述することで、当該関数２６が実行された履歴を履歴データ３６に記録することが可能となる。なお、この場合、このプログラム７０は、付加プログラム２２Ｂの一部を構成するものとみなすことができる。
【００３６】
具体的に、アプリケーションプログラム２２の本体プログラム２２Ａがfunc1、func2、及びfunk3という名称の３つの関数２６Ａ、２６Ｂ、２６Ｃを備えており（図６参照）、アプリケーションプログラム２２（より詳しくは本体プログラム２２Ａ）を実行するとfunk1の関数２６Ａが１０回、funk2の関数２６Ｂが１００回、funk3の関数２６Ｃが５回実行されるとする。
【００３７】
この場合、各関数２６の先頭に図４に示したプログラム７０を記述することで、アプリケーションプログラム２２を実行した際に、履歴データの格納先へのポインタである「record」には、各関数２６が実行されるたびに、当該関数２６の先頭アドレスである関数名が履歴５６として追加記述されていく。すなわち、実行された順番に、各関数２６のアドレスとして関数名が羅列された履歴５６が取得される。そして、最終的には、図５に示すように、funk1のアドレスが１０個、funk2のアドレスが１００個、funk3のアドレスが５個記述された履歴データ３６が不揮発メモリ１８に格納される。このように、簡単なプログラムの記述だけで、アクセスした関数２６のアドレス履歴を取得可能である。なお、例示は省略するが、アクセスしたデータ３０の履歴についても同様に簡単なプログラムで取得可能である。
【００３８】
一方、アプリケーションプログラム２２の２回目以降の実行時には、上記のようにして不揮発メモリ１８内に履歴データ３６が記憶されているので、図３のステップ１００で肯定されてステップ１０２に進む。ステップ１０２では、アドレス選択部５４の機能により、当該アプリケーションプログラム２２の履歴データ３６を参照して、最も頻度の高いアドレス、すなわち最も実行頻度の関数２６及び最も使用頻度の高いデータ３０が選択される。そして、次のステップ１０４で、キャッシュ制御部３４に対して、当該アドレスに対応する関数２６及びデータ３０をキャッシュメモリ２８、３２にロック（常駐）させた後、ステップ１０６に移行するようになっている。これにより、当該アプリケーションプログラム２２の２回目以降の実行時には、キャッシュ制御部３４により、以前にアプリケーションプログラム３０を実行した際に実行頻度が高かった関数２６及び使用頻度が高かったデータ３０が予めキャッシュメモリ２８、３２内にロック（常駐）された状態で、アプリケーションプログラム２２が目的とする本来の処理が行われることになる。
【００３９】
例えば、前述の例では、図５に示した履歴データ３６からfunk2の関数２６Ｂが最も実行頻度が高いことが分かるため、図６（Ａ）に示すように、funk2の関数２６Ｂが外部メモリとしてのＲＯＭ１４から読み出されてキャッシュメモリ２８にロックされる。funk2の関数２６を格納した後のキャッシュメモリ２８の残存容量では、関数２６Ａ又は関数２６Ｃの何れか一方しか格納できないとすると、例えばfunk1の関数２６Ｂが必要となりＲＯＭ１４から呼び出された際には、図６（Ｂ）に示すように、当該funk1の関数２６Ｂがキャッシュメモリ２８の残りの領域に格納される。
【００４０】
その後、funk3の関数２６Ｃが必要となりＲＯＭ１４から呼び出されると、図６（Ｃ）に示すように、funk1の関数２６Ａの代えて、funk3の関数２６Ｃがキャッシュメモリ２８の残りの領域に格納（上書き）される。再び、funk1の関数２６Ａが必要となった際には、図６（Ｄ）に示すように、funk3の関数２６Ｃに代えて、funk1の関数２６Ａがキャッシュメモリ２８の残りの領域に格納される。この間、funk2の関数２６Ｂについてはキャッシュメモリ２８に格納されたままであるので、funk2の関数２６Ｂが必要な場合には、ＲＯＭ１４にアクセスせずとも、常時キャッシュメモリ２８から当該関数２６ＢがＣＰＵコア２４に供給される。
【００４１】
また、２回目以降の実行時においても、図３のステップ１０８で、アプリケーションプログラムが目的とする本来の処理中、すなわち本体プログラム２２Ａの実行中にアクセスした各関数２６及び各データ３０のアドレス履歴が取得されて、ステップ１１０では、その結果を履歴データ３６に加算して、累計データとなるように不揮発メモリ１８内の履歴データ３６が更新される。すなわち、この履歴データ３６の更新により、２回目以降の実行時は、当該アプリケーションプログラム２２の前回の実行までで、最も実行頻度の高かった関数２６及び使用頻度の高かったデータ３０をキャッシュメモリ２８、３２にロック（常駐）させて、アプリケーションプログラム２２が目的とする本来の処理が実行されることになる。
【００４２】
このように、本実施形態によれば、アプリケーションプログラム２２を実行した際のアドレス履歴を取得することで、実行頻度の高い関数２６及び使用頻度の高いデータ３０を学習して、次回の当該アプリケーションプログラム２２の実行時には、当該実行頻度の最も高い関数２６及び使用頻度の最も高いデータ３０をキャッシュメモリ２８、３２にロック（常駐）させるようになっている。これにより、実行頻度の高い関数２６及び使用頻度の高いデータ３０については、ＲＯＭ１４やＲＡＭ１６といった外部メモリからではなく、キャッシュメモリ２８、３２から供給を受けることができ、ＲＯＭ１４やＲＡＭ１６といった外部メモリへのアクセス回数を低減することができる。すなわち、外部メモリへのアクセスによるＣＰＵのパフォーマンス低下を抑えることができ、当該アプリケーションプログラム２２全体の処理に要する時間を短縮することができる。
【００４３】
なお、上記では、アプリケーションプログラム２２が実行されるたびに、毎回、アドレス履歴を取得して、実行頻度の高い関数２６及び使用頻度の高いデータ３０を学習する場合を例に説明したが、本発明はこれに限定されるものではない。例えば、図２に点線で示すように、アプリケーションプログラム２２を実行した際に、付加プログラム２２Ｂにより、情報処理装置１０内に、中止手段として、アドレス履歴管理部５２の動作を制御する履歴取得制御部８０が更に構築されるようにし、当該アプリケーションプログラム２２の実行により、例えば図７に示す処理が開始されるようにしてもよい。なお、図７では、図３と同一の処理ステップについては同一のステップ番号を付与しており、詳細な説明は省略する。
【００４４】
すなわち、図７に示す処理では、ステップ１０６のアプリケーションプログラム２２本来の処理の開始前に、ステップ１２０において、履歴取得制御部８０の機能により、履歴の取得が必要か否かが判断されるようになっている。
【００４５】
なお、このときの判断基準は、アプリケーションプログラム２２が目的とする本来の処理、すなわち本体プログラム２２Ａにより実行される処理により定めればよい。例えば、本体プログラム２２Ａが毎回同じ処理を実行するためのものである場合は、関数２６の実行頻度及びデータ３０の使用頻度の順位に変動はないので、不揮発メモリ１８に履歴データ３６が無い場合にのみ、履歴の取得が必要であると判断し、不揮発メモリ１８に履歴データ３６が格納されている、すなわち過去に１回でも履歴が取得されている場合には、履歴の取得は不要であると判断すればよい。本体プログラム２２Ａが毎回同じ処理を実行するものではない場合は、関数２６の実行頻度及びデータ３０の使用頻度の順位に大きな変動がなくなる（収束する）までは、履歴の取得が必要であると判断し、大きな順位変動が無くなったら、履歴の取得は不要であると判断すればよい。
【００４６】
ステップ１２０で履歴の取得が必要と判断した場合には、図３と同様にステップ１０６で、アプリケーションプログラム２２が目的とする本来の処理を行いながら、ステップ１０８で関数２６及びデータ３０のアドレス履歴を取得して、ステップ１１０で履歴データ３６を更新し、処理を終了する。一方、履歴の取得が不要と判断された場合には、履歴取得制御部８０によりアドレス管理部５２の動作が中止され、ステップ１２０からステップ１２２に進み、アプリケーションプログラム２２が目的とする本来の処理を行ったら、アドレス履歴の取得及び履歴データ３６の更新は行わずに、そのまま処理を終了する。
【００４７】
このように、履歴取得の要否を判断し、必要が無い場合、すなわち関数２６の実行頻度やデータ３０の使用頻度の順位に変動が無く、ロックするための関数２６やデータ３０の選択に変更が無いと見込まれる場合には、無駄な履歴の取得を中止させることで、さらに処理時間の短縮が可能である。
【００４８】
なお、上記では、最も実行頻度の高い関数２６及び使用頻度の高いデータ３０をキャッシュメモリ２８、３０にロックする場合を例に説明したが、本発明はこれに限定されるものではない。実行回数及び使用回数が複数回以上の関数２６及びデータ３０をキャッシュメモリにロックさせれば、当該関数２６及びデータ３９の２回目以降のアクセス時間を短縮でき、外部メモリへのアクセスによるＣＰＵのパフォーマンス低下を防止することができる。ただし、より高いパフォーマンス低下防止効果を得るためには、実行頻度及び使用頻度が高いものをロックすることが好ましい。
【００４９】
また、本発明は、キャッシュメモリにロックする関数２６やデータ３０の個数を特に限定されるものではなく、例えば、実行頻度及び使用頻度の高い順に、複数の関数２６やデータ３０をキャッシュメモリにロックさせてもよい。ロックさせる関数２６やデータ３０の個数は、キャッシュメモリの容量と関数及びデータのデータサイズに応じて適宜定めればよい。また、特に関数２６については、関数２６単位でキャッシュメモリ２８にロックするのではなく、関数２６の一部分のみをロックさせてもよい。言い替えると、履歴を取得する実行単位のアドレスは、各関数の先頭のアドレスではなく、各関数（プログラム）中の任意のアドレスとすることもできる。
【００５０】
また、上記では、アプリケーションプログラム２２毎に、アクセスしたアドレスの履歴を取得して、履歴データ３６を管理する場合を例に説明したが、本発明はこれに限定されるものではなく、アプリケーションプログラム２２を区別せずに、アクセスしたアドレスの履歴をまとめて１つの履歴データ３６としてもよい。ただし、アプリケーションプログラム２２によって、実行する関数２６や参照するデータ３０は異なるため、アプリケーションプログラム２２毎に最適な関数２６やデータ３０を選択してキャッシュメモリ２８、３２に常駐させるためには、上記のように、アプリケーションプログラム２２毎に履歴データ３６を取得して管理することが好ましい。
【００５１】
【発明の効果】
上記に示したように、本発明は、キャッシュメモリを内蔵した演算装置の外部メモリへのアクセス回数を低減することができるという優れた効果を有する。
【図面の簡単な説明】
【図１】本実施形態に係る情報処理装置の構成を示すブロック図である。
【図２】本実施形態に係る情報処理装置の機能構成図である。
【図３】本実施形態に係わる情報処理装置におけるアプリケーションプログラムの実行時の処理を示すフローチャートである。
【図４】履歴取得のためのプログラムの一例である。
【図５】図４のプログラムにより取得された履歴の一例である。
【図６】（Ａ）〜（Ｄ）は、本実施の形態に係わる情報処理装置におけるキャッシュメモリへの関数の格納動作を説明するための概念図である。
【図７】別の実施形態に係わる情報処理装置におけるアプリケーションプログラムの実行時の処理を示すフローチャートである。
【図８】従来のキャッシュメモリへの関数の格納動作を説明するための概念図である。
【符号の説明】
１０ 情報処理装置
１２ ＣＰＵ
１４ ＲＯＭ
１６ ＲＡＭ
１８ 不揮発メモリ
２２ アプリケーションプログラム
２２Ａ      本体プログラム
２２Ｂ      付加プログラム
２４        ＣＰＵコア
２６、２６Ａ、２６Ｂ、２６Ｃ     関数
２８、３２  キャッシュメモリ
３０ データ
３４ キャッシュ制御部
３６ 履歴データ
５０ プログラム実行部
５２ アドレス履歴管理部
５４ アドレス選択部
８０ 履歴取得制御部
【図１】
2004192403.tif 000003
【図２】
2004192403.tif 000004
【図３】
2004192403.tif 000005
【図４】
2004192403.tif 000006
【図５】
2004192403.tif 000007
【図６】
2004192403.tif 000008
【図７】
2004192403.tif 000009
【図８】
2004192403.tif 000010