(57)【特許請求の範囲】
【請求項１】
コンピュータプログラムを実行しているときの、演算処理部と記憶部との間のキャッシュの状態を記録する記録装置であって、
前記記憶部内に格納された情報のうち前記コンピュータプログラムの実行に関わる関数のアドレスと変数のアドレスを示すアドレステーブルと、
前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレステーブルが示す前記変数のアドレスであれば、該変数についてキャッシュミスがあった旨を、キャッシュミスが発生した際のプログラムカウンタ値が示すアドレスに対応する関数の情報と共に記録するキャッシュミス記録部と、を備える、
記録装置。
【請求項２】
コンピュータプログラムを実行しているときの、演算処理部と記憶部との間のキャッシュの状態を記録する記録方法であって、
前記記憶部内に格納された情報のうち前記コンピュータプログラムの実行に関わる関数のアドレスと変数のアドレスを示すアドレステーブルを生成し、
前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレステーブルが示す前記変数のアドレスであれば、該変数についてキャッシュミスがあった旨を、キャッシュミスが発生した際のプログラムカウンタ値が示すアドレスに対応する関数の情報と共に記録する、
記録方法。
【請求項３】
コンピュータプログラムを実行しているときの、演算処理部と記憶部との間のキャッシュの状態を記録する記録プログラムであって、
コンピュータに、
前記記憶部内に格納された情報のうち前記コンピュータプログラムの実行に関わる関数のアドレスと変数のアドレスを示すアドレステーブルを生成し、
前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレ
ステーブルが示す前記変数のアドレスであれば、該変数についてキャッシュミスがあった旨を、キャッシュミスが発生した際のプログラムカウンタ値が示すアドレスに対応する関数の情報と共に記録する、処理を実行させるための、
記録プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記録装置、記録方法、及び記録プログラムに関する。
【背景技術】
【０００２】
情報処理装置では、処理装置と記憶装置との間にある処理速度の差を埋めるためにキャッシュメモリが用いられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−１４９６６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
キャッシュミスの増大は、情報処理装置の処理性能を劣化させる。そこで、ソフトウェア開発者は、メモリカラーリングやプリロード（フェッチ）等を行なうプログラムとすることでキャッシュミスの低減を図っている。メモリカラーリングやプリロード等を適切に行なうようにするには、キャッシュミスを起こす命令や関数、変数等の関係を把握する必要がある。なお、メモリカラーリングは、例えば、ページ単位ではページカラーリングとも呼ばれる。
【０００５】
キャッシュミスを起こす命令や関数、変数等を把握する手法の一例として、キャッシュミスが生じる度に情報を蓄積しておき、蓄積された情報をソフトウェア開発者が解析するものがある。しかし、キャッシュミスが生じる度に情報を蓄積していくと、情報を蓄積するためのメモリサイズが膨大なものとなるし、得られる情報からキャッシュミスを起こす命令や関数、変数等の関係を把握することは容易でない。例えば、共有変数へアクセスした場合のキャッシュミスに関しては、当該変数へアクセスする部分がプログラムのソースコード上に複数存在し得るからである。
【０００６】
このため、キャッシュミスを起こす命令や関数、変数等を容易に把握できる技術が望まれる。
【課題を解決するための手段】
【０００７】
そこで、本願は、次のような記録装置を開示する。
コンピュータプログラムを実行しているときの、演算処理部と記憶部との間のキャッシュの状態を記録する記録装置であって、
前記記憶部内に格納された情報のうち前記コンピュータプログラムの実行に関わる特定の情報の前記記憶部上のアドレスを示すアドレステーブルと、
前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレステーブルが示す前記特定の情報のアドレスであれば、該特定の情報についてキャッシュミスがあった旨を記録するキャッシュミス記録部と、を備える、
記録装置。
【０００８】
また、本願は、上記記録装置を方法の側面から捉えた記録方法、コンピュータで実行可能なプログラムの側面から捉えた記録プログラム、及びこの記録プログラムを記録した記録媒体を開示する。
【発明の効果】
【０００９】
キャッシュミスを起こす命令や関数、変数等の関係を容易に把握できる。
【図面の簡単な説明】
【００１０】
【図１】記録装置の構成図である。
【図２】記録装置で実現される処理フロー図である。
【図３】変形例に係る記録装置の構成図である。
【図４】変形例に係る記録装置で実現される処理フロー図である。
【発明を実施するための形態】
【００１１】
図１は、記録装置の一例を示す構成図である。記録装置１は、図１に示すように、プロセッサ２とメインメモリ３を備える。記録装置１は、プロセッサ２とメインメモリ３との間に挿置されるキャッシュメモリ４にプロセッサ２が指定するデータが存在しない、いわゆるキャッシュミスが発生した場合に、キャッシュミスの発生とこれに関連する情報を記録する。以下、データという場合は、コンピュータが実行するプログラムなども含めて、プロセッサ２とメインメモリ３との間で転送される全ての情報を指すものとする。なお、図１では、キャッシュメモリ４がプロセッサ２に内置されているが、プロセッサ２の外に設けられていても良い。また、本実施形態では、キャッシュメモリ４とメインメモリ３の２つの記憶階層がある場合を例に説明しているが、メインメモリ３よりも更に下位層の記憶装置類があってもよい。
【００１２】
キャッシュメモリ４は、ＳＲＡＭ（Static Random Access Memory）であり、命令実行
部５に最も近い記憶階層を形成する。命令実行部５は、プログラムカウンタ（ＰＣ）の値に基づいてキャッシュメモリにアクセスし、各種の命令を実行し、或いは関数、変数の処理等を行う、プロセッサ２の中核的部分である。メインメモリ３は、ＤＲＡＭ（Dynamic Random Access Memory）であり、キャッシュメモリ４より一つ下の記憶階層を形成する。上位にあるキャッシュメモリ４は、下位にあるメインメモリ３と比して容量は小さいものの、読み書き速度は速い。メインメモリコントローラ６は、メインメモリ３のデータの読み書きを実行する。図１では、メインメモリコントローラ６をプロセッサ２に内置しているが、プロセッサ２に外部接続してもよい。
【００１３】
キャッシュミス判定部７は、命令実行部５が求めるデータがキャッシュメモリ４に存在しなかった場合にこれを検知し、対応するデータをメインメモリ３からキャッシュメモリ４へ書き込ませると共に、命令実行部５が求めるデータのメインメモリ３上のアドレス（以下、要求アドレスという）の情報を比較器９へ送る。例えば、セットアソシアティブ方式の場合を例に挙げて説明すれば、命令実行部５が出力する要求アドレスに対応するキャッシュメモリ中のセット内の全てのブロックのタグが照会される。キャッシュミス判定部７は、要求アドレスに対応するタグが索出されないか、或いは索出されても索出したタグのブロックの有効ビットがオフであったならば、キャッシュミスが生じたと判定する。そして、キャッシュミス判定部７は、メインメモリコントローラ６に対し、要求アドレスに書き込まれているデータをキャッシュメモリ４へ書き込ませると共に、キャッシュミスが生じた要求アドレスの情報（以下、要求アドレス情報という）を比較器９へ送る。なお、ダイレクトマップ方式やフルアソシアティブ方式の場合もまた然りである。
【００１４】
比較器９は、アドレステーブル１０にアクセスし、キャッシュミス判定部７から送られる要求アドレス情報が示す要求アドレスに対応するデータ項目を索出する。また、加算器８は、比較器９からキャッシュミスがあったデータ項目の情報を受け取ると、キャッシュミス回数テーブル１１にアクセスして当該データ項目のキャッシュミス回数を加算（インクリメント）する。
【００１５】
キャッシュミス判定部７や比較器９、加算器８は、ディジタル回路によるハードウェアとして実現される。例えば、比較器９は、コンパレータを複数組み合わせた回路等により実現される。但し、キャッシュミス判定部７や比較器９、加算器８はこのようなハードウェアとして実現されるもののみならず、次のように実現されるものであってもよい。
【００１６】
例えば、記録装置１を起動すると、図示しない外部記憶装置に記憶された記録プログラムが読み出されてプロセッサ２とメインメモリ３が協働し、アドレステーブル１０やキャッシュミス回数テーブル１１、加算器８、比較器９を記録装置１内に用意する。なお、説明の便宜上、図１では、アドレステーブル１０やキャッシュミス回数テーブル１１、加算器８、比較器９をプロセッサ２内に図示している。しかし、アドレステーブル１０やキャッシュミス回数テーブル１１、加算器８、比較器９は、命令実行部５がキャッシュメモリ４やメインメモリ３、メインメモリコントローラ６と協働して実現すればよい。従って、アドレステーブル１０やキャッシュミス回数テーブル１１、加算器８、比較器９がプロセッサ２の内部で具現化されなくてもよい。アドレステーブル１０やキャッシュミス回数テーブル１１は、プロセッサ２内の記憶領域に保持されるようにしてもよいし、メインメモリ３、或いは図示しない外部記憶装置に保持されるようにしてもよい。
【００１７】
ソフトウェア開発者は、ローダを起動し、開発したプログラム（以下、被験プログラムという）のロードモジュールをメインメモリ３へロードする。ローダは、被験プログラムをメインメモリ３にロードすると共に、この被験プログラムのデータ項目のうち任意のデータ項目、例えば、特定の関数や変数、構造体等のメインメモリ３上の物理アドレスを示す以下のようなアドレステーブル１０を生成する。
【表１】
0005440024.tif 000002
【００１８】
このテーブルは、例えば、ソフトウェア開発者がユーザインターフェースを通じてデータ項目名を入力し、アドレステーブル１０に載せるデータ項目の情報をローダへ引き渡し、この情報に基づいてローダが生成する。この場合、ローダは、ソフトウェア開発者が指定したデータ項目のメインメモリ３上の物理アドレスを求め、アドレステーブル１０に記録する。着目したいデータ項目の指定に際しては、例えば、被験プログラムで用いている関数や変数、構造体等のデータ項目を画面上に一覧表示し、ソフトウェア開発者が任意の項目を選択するとこのデータ項目の開始アドレスと終了アドレスが抽出され、アドレステーブル１０に記録されるようにする。
【００１９】
表１に示されるデータ項目は、ソフトウェア開発者が開発したプログラムの実行に関わる項目であり、ソフトウェア開発者がキャッシュミスの原因を把握するために任意に選んだ項目である。ソフトウェア開発者は、プログラム上に存在する様々な関数や変数、構造体等のデータ項目のうち特にキャッシュミスとの関係で着目したいデータ項目を任意に選ぶ。表１に示される各データ項目の開始アドレスと終了アドレスは、ローダが被験プログ
ラムをメインメモリ３上にロードしたときの各データ項目のメインメモリ３上の物理アドレスである。なお、各データ項目のメインメモリ３上の物理アドレスの抽出やアドレステーブル１０への記録は、ソフトウェア開発者自らが手作業で行なってもよい。
【００２０】
記録装置１は、メインメモリ３の物理アドレス空間にプログラムが割り付けられるシステム、例えば、いわゆる組み込みシステムのようなものを前提としている。従って、本実施形態でアドレステーブル１０に記録される開始アドレスや終了アドレスの他、キャッシュミスが発生したアドレスや命令実行部５からの要求アドレス等は、メインメモリ３の物理アドレスを示している。
【００２１】
図２は、記録装置１で実現される処理のフロー図である。ソフトウェア開発者が開発した被験プログラムがプロセッサ２によって実行可能な形式でメインメモリ３上に展開され、この被験プログラムが命令実行部５において実行されると、記録装置１では次のような処理が実行される。
【００２２】
すなわち、被験プログラムが命令実行部５において実行されると、キャッシュミス判定部７が、キャッシュミスの有無の判定を開始する（Ｓ１０１）。そして、被験プログラムの実行中にキャッシュミスが発生すると、キャッシュミス判定部７は、要求アドレス情報を比較器９へ送る。
【００２３】
キャッシュミス判定部７から送られる要求アドレス情報を受け取った比較器９は、アドレステーブル１０にアクセスして要求アドレス情報が示す要求アドレスに対応するデータ項目を索出する（Ｓ１０２）。具体的には、比較器９は、キャッシュミス判定部７から要求アドレス情報を受け取ると、アドレステーブル１０に示されている各データ項目の開始アドレス及び終了アドレスと要求アドレスとを比較し、要求アドレスが開始アドレスおよび終了アドレスの範囲内となるデータ項目を索出する。比較器９は、要求アドレスに対応するデータ項目を索出したら、このデータ項目の情報（以下、キャッシュミスデータ項目情報という）を加算器８へ送る。
【００２４】
比較器９からキャッシュミスデータ項目情報を受け取った加算器８は、キャッシュミス回数テーブル１１にアクセスし、対応するデータ項目のキャッシュミス回数を加算（インクリメント）する（Ｓ１０３）。
【００２５】
記録装置１では、命令実行部５における被験プログラムの実行が終わるまで、上記一連の処理（Ｓ１０１〜Ｓ１０３）が繰り返される（Ｓ１０４）。命令実行部５における被験プログラムの実行が終わると、以下に示すようなキャッシュミス回数テーブル１１が生成される。
【表２】
0005440024.tif 000003
【００２６】
表２に示されるキャッシュミス回数の情報は、加算器８による加算（インクリメント）処理によって蓄積されたものである。表２に示されるように、キャッシュミス回数がデータ項目毎に集計されている。よって、膨大なメモリサイズを要することなく、ソフトウェア開発者は、被験プログラム中のキャッシュミスを起こす命令や関数、変数等を把握できる。例えば、表２に示される例であれば、「項目Ｂ」に関してキャッシュミスが頻発していることが容易に把握できる。よって、ソフトウェア開発者は、被験プログラムに修正を加えてメモリカラーリングやプリロード（フェッチ）等の見直しを容易に行なうことができ、これにより、キャッシュミスを起こしにくいプログラムを開発することができる。なお、表２に示すようなキャッシュミス回数テーブルは、ソフトウェア開発者の要求によりディスプレイやプリンタなど、出力をソフトウェア開発者が読み取り可能な出力装置へ表示される。
【００２７】
図３は、上記記録装置１の変形例に係る記録装置２１の構成図である。記録装置２１は、上記記録装置２１と同様、プロセッサ２２とメインメモリ２３を備える。以下、変形例に係る記録装置２１について、記録装置１との相違点を中心に説明し、既述の記録装置１と同様の構成要素であるメインメモリ２３、メインメモリコントローラ２６、キャッシュメモリ２４、キャッシュミス判定部２７、命令実行部２５の詳細な説明については省略する。
【００２８】
比較器２９Ａは、変数／構造体アドレステーブル３１にアクセスし、キャッシュミス判定部２７から送られる要求アドレス情報が示す要求アドレスに対応する変数／構造体を索出する。また、比較器２９Ｂは、関数アドレステーブル３２にアクセスし、命令実行部２５から送られるＰＣ（プログラムカウンタ）値が示すアドレスに対応する関数を索出する。加算器２８は、比較器２９Ａからキャッシュミスがあった変数／構造体の情報を受け取り、比較器２９Ｂからキャッシュミスがあったときに実行されていた関数の情報を受け取ると、キャッシュミス回数テーブル３０にアクセスして当該データ項目のキャッシュミス回数を加算（インクリメント）する。
【００２９】
キャッシュミス判定部２７や比較器２９Ａ，Ｂ、加算器２８は、既述した記録装置１と同様、ディジタル回路によるハードウェアとして実現される。但し、既述した記録装置１と同様、キャッシュミス判定部２７や比較器２９Ａ，Ｂ、加算器２８はこのようなハードウェアとして実現されるもののみならず、例えば、図示しない外部記憶装置に記憶された記録プログラムが読み出されてプロセッサ２とメインメモリ３が協働することで実現されるものであってもよい。
【００３０】
ソフトウェア開発者は、ローダを起動し、被験プログラムのロードモジュールをメインメモリ２３へロードする。ローダは、被験プログラムをメインメモリ２３にロードすると共に、この被験プログラムのデータ項目のうち任意の変数／構造体のメインメモリ２３上のアドレスを示す以下のような変数／構造体アドレステーブル３１を生成する。このテーブルは、例えば、ソフトウェア開発者がユーザインターフェースを通じて変数／構造体名を入力し、変数／構造体アドレステーブル３１に載せる変数／構造体の情報をローダへ引き渡し、この情報に基づいてローダが生成する。この場合、ローダは、ソフトウェア開発者が指定した変数／構造体のメインメモリ２３上の物理アドレスを求め、変数／構造体アドレステーブル３１に記録する。
【表３】
0005440024.tif 000004
【００３１】
また、ローダは、被験プログラムのデータ項目のうち関数のメインメモリ２３上の物理アドレスを示す以下のような関数アドレステーブル３２を生成する。ローダは、ソフトウェア開発者が作成した被験プログラムで用いられている関数を抽出し、各関数のメインメモリ２３上の物理アドレスを求め、この物理アドレスの情報を関数アドレステーブル３２に記録する。
【表４】
0005440024.tif 000005
【００３２】
図４は、記録装置２１で実現される処理のフロー図である。被験プログラムがメインメモリ３へロードされ、命令実行部５において実行されると、記録装置２１では次のような処理が実行される。
【００３３】
すなわち、被験プログラムが命令実行部２５において実行されると、キャッシュミス判定部２７が、キャッシュミスの有無の判定を開始する（Ｓ２０１）。そして、被験プログラムの実行中にキャッシュミスが発生すると、キャッシュミス判定部２７は、要求アドレス情報を比較器２９Ａへ送ると共に、キャッシュミスがあった旨の情報であるキャッシュミス発生情報を比較器２９Ｂへ送る。
【００３４】
キャッシュミス判定部２７から送られる要求アドレス情報を受け取った比較器２９Ａは、変数／構造体アドレステーブル３１にアクセスして要求アドレス情報が示す要求アドレスに対応する変数あるいは構造体を索出する（Ｓ２０２）。比較器２９Ａは、要求アドレスに対応する変数あるいは構造体を索出したら、この変数あるいは構造体に関する情報（以下、キャッシュミス変数／構造体情報という）を加算器２８へ送る。
【００３５】
また、比較器２９Ｂは、キャッシュミス判定部２７から送られるキャッシュミス発生情報を受け取ったら、このときのＰＣ値を命令実行部から取得する。そして、比較器２９Ｂは、関数アドレステーブル３２にアクセスし、命令実行部から取得したＰＣ値が示すアド
レスに対応する関数を索出する（Ｓ２０３）。比較器２９Ｂは、ＰＣ値が示すアドレスに対応する関数を索出したら、この関数に関する情報（以下、キャッシュミス関数情報という）を加算器２８へ送る。なお、本ステップＳ２０３および前述したステップＳ２０２は、逆の順序で実行してもよい。
【００３６】
加算器２８は、比較器２９Ａからキャッシュミス変数／構造体情報が送られ、比較器２９Ｂからキャッシュミス関数情報が送られたら、キャッシュミス回数テーブル３０にアクセスし、対応する関数および変数／構造体のキャッシュミス回数を加算（インクリメント）する（Ｓ２０４）。
【００３７】
記録装置２１では、命令実行部２５における被験プログラムの実行が終わるまで、上記一連の処理（Ｓ２０１〜Ｓ２０４）が繰り返される（Ｓ２０５）。命令実行部２５における被験プログラムの実行が終わると、以下に示すようなキャッシュミス回数テーブル３０が生成される。
【表５】
0005440024.tif 000006
【００３８】
表５に示されるキャッシュミス回数の情報は、加算器２８による加算（インクリメント）処理によって蓄積されたものである。表５に示されるように、キャッシュミス回数が関数および変数／構造体毎に集計されている。このキャッシュミス回数の集計結果は、既述した記録装置１と同様、ソフトウェア開発者の要求によりディスプレイやプリンタなど、出力をソフトウェア開発者が読み取り可能な出力装置へ表示される。この記録装置２１によれば、膨大なメモリサイズを要することなく、ソフトウェア開発者は、被験プログラム中のキャッシュミスを起こす命令や関数、変数等を把握できる。特に、様々な関数が特定の変数へアクセスするプログラムにおいて、キャッシュミスが頻発する変数が何れの関数からのアクセスによるものであるのかを容易に把握できる。よって、ソフトウェア開発者は、被験プログラムに修正を加えてメモリカラーリングやプリロード（フェッチ）等の見直しを容易に行なうことができ、これにより、キャッシュミスを起こしにくいプログラムを開発することができる。
【００３９】
なお、本願は、以下の付記的事項を含む。
（付記１）
コンピュータプログラムを実行しているときの、演算処理部と記憶部との間のキャッシュの状態を記録する記録装置であって、
前記記憶部内に格納された情報のうち前記コンピュータプログラムの実行に関わる特定の情報の前記記憶部上のアドレスを示すアドレステーブルと、
前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレステーブルが示す前記特定の情報のアドレスであれば、該特定の情報についてキャッシュミスがあった旨を記録するキャッシュミス記録部と、を備える、
記録装置。
（付記２）
前記アドレステーブルは、前記記憶部内に格納された情報のうち特定の情報の開始アドレスおよび終了アドレスを示し、
前記キャッシュミス記録部は、前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレステーブルが示す前記開始アドレスおよび前記終了アドレスの範囲内であれば、前記特定の情報についてキャッシュミスがあった旨を記録する、
付記１に記載の記録装置。
（付記３）
前記アドレステーブルは、前記記憶部内に格納された情報のうち複数の特定の情報の各アドレスを示し、
前記キャッシュミス記録部は、前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレステーブルが示す前記何れかの特定の情報のアドレスであれば、該特定の情報についてキャッシュミスがあった旨を記録する、
付記１または２に記載の記録装置。
（付記４）
前記アドレステーブルは、前記記憶部内に格納された情報のうち関数のアドレスと変数のアドレスを示し、
前記キャッシュミス記録部は、前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレステーブルが示す前記変数のアドレスであれば、該変数についてキャッシュミスがあった旨を、キャッシュミスが発生した際のプログラムカウンタ値が示すアドレスに対応する関数の情報と共に記録する、
付記１から３の何れか一項に記載の記録装置。
（付記５）
コンピュータプログラムを実行しているときの、演算処理部と記憶部との間のキャッシュの状態を記録する記録方法であって、
前記記憶部内に格納された情報のうち前記コンピュータプログラムの実行に関わる特定の情報の前記記憶部上のアドレスを示すアドレステーブルを生成し、
前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレステーブルが示す前記特定の情報のアドレスであれば、該特定の情報についてキャッシュミスがあった旨を記録する、
記録方法。
（付記６）
前記記憶部内に格納された情報のうち特定の情報の前記記憶部上の開始アドレスおよび終了アドレスを示すアドレステーブルを生成し、
前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレステーブルが示す前記開始アドレスおよび前記終了アドレスの範囲内であれば、前記特定の情報についてキャッシュミスがあった旨を記録する、
付記５に記載の記録方法。
（付記７）
前記記憶部内に格納された情報のうち複数の特定の情報の前記記憶部上の各アドレスを示すアドレステーブルを生成し、
前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレステーブルが示す前記何れかの特定の情報のアドレスであれば、該特定の情報についてキ
ャッシュミスがあった旨を記録する、
付記５または６に記載の記録方法。
（付記８）
前記記憶部内に格納された情報のうち関数に関する情報の前記記憶部上のアドレスと変数に関する情報の前記記憶部上のアドレスを予め取得し、
前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレステーブルが示す前記変数のアドレスであれば、該変数についてキャッシュミスがあった旨を、キャッシュミスが発生した際のプログラムカウンタ値が示すアドレスに対応する関数の情報と共に記録する、
付記５から７の何れか一項に記載の記録方法。
（付記９）
コンピュータプログラムを実行しているときの、演算処理部と記憶部との間のキャッシュの状態を記録する記録プログラムであって、
コンピュータに、
前記記憶部内に格納された情報のうち前記コンピュータプログラムの実行に関わる特定の情報の前記記憶部上のアドレスを示すアドレステーブルを生成し、
前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレステーブルが示す前記特定の情報のアドレスであれば、該特定の情報についてキャッシュミスがあった旨を記録する、処理を実行させるための、
記録プログラム。
（付記１０）
前記コンピュータに、
前記記憶部内に格納された情報のうち特定の情報の前記記憶部上の開始アドレスおよび終了アドレスを示すアドレステーブルを生成し、
前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレステーブルが示す前記開始アドレスおよび前記終了アドレスの範囲内であれば、前記特定の情報についてキャッシュミスがあった旨を記録する、処理を実行させるための、
付記９に記載の記録プログラム。
（付記１１）
前記コンピュータに、
前記記憶部内に格納された情報のうち複数の特定の情報の前記記憶部上の各アドレスを示すアドレステーブルを生成し、
前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレステーブルが示す前記何れかの特定の情報のアドレスであれば、該特定の情報についてキャッシュミスがあった旨を記録する、処理を実行させるための、
付記９または１０に記載の記録プログラム。
（付記１２）
前記コンピュータに、
前記記憶部内に格納された情報のうち関数に関する情報の前記記憶部上のアドレスと変数に関する情報の前記記憶部上のアドレスを予め取得し、
前記演算処理部が前記記憶部と協働して前記コンピュータプログラムを実行中にキャッシュミスが発生し且つ、キャッシュミスした情報の該記憶部上のアドレスが、前記アドレステーブルが示す前記変数のアドレスであれば、該変数についてキャッシュミスがあった旨を、キャッシュミスが発生した際のプログラムカウンタ値が示すアドレスに対応する関数の情報と共に記録する、処理を実行させるための、
付記９から１１の何れか一項に記載の記録プログラム。
【符号の説明】
【００４０】
１，２１・・記録装置
２，２２・・プロセッサ
３，２３・・メインメモリ
４，２４・・キャッシュメモリ
５，２５・・命令実行部
６，２６・・メインメモリコントローラ
７，２７・・キャッシュミス判定部
８，２８・・加算器
９，２９Ａ，Ｂ・・比較器
１０・・アドレステーブル
１１，３０・・キャッシュミス回数テーブル
１２，３１・・変数／構造体アドレステーブル
１３，３２・・関数アドレステーブル
【図１】
0005440024.tif 000007
【図２】
0005440024.tif 000008
【図３】
0005440024.tif 000009
【図４】
0005440024.tif 000010