(57)【要約】【課題】キャッシュメモリのキャッシュセット毎のプロファイルデータを取得する。【解決手段】配列Ｘのバイトアドレスを求め、ｍ０に代入する（９２）。アドレスｍ０のキャッシュセット番号を求め、ｅ０に代入する（９２）。キャッシュセット番号ｅ０がプロファイルデータ取得処理が担当するセット番号ｓであるか否かを判断する（９４）。キャッシュセット番号ｅ０がプロファイルデータ取得処理が担当するセット番号ｓである場合には、配列Ｘのバイトアドレスに対応するタグ情報が、記憶部に記憶されているか否か判断し、当該タグ情報が記憶部に記憶されている場合（ヒット）、ヒット変数を１カウントアップし、当該タグ情報が記憶部に記憶されていない場合（ミス）には、ミス変数を１カウントアップしかつ当該タグ情報を記憶部に記憶して、次の配列Ｘの次のデータに対して同様の処理を実行する。ヒット変数及びミス変数から、プロファイルデータが得られる。【選択図】図５
2014232369.tif 000002
【特許請求の範囲】
【請求項１】
記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータの各データを判定対象データとして、当該判定対象データに対応するキャッシュセットが、予め選択されたキャッシュセットであるか否かを判定する判定部と、
前記予め選択されたキャッシュセットに対応して設けられ、当該選択されたキャッシュセットに対応するメモリ領域のアドレス情報を記憶する記憶部と、
前記判定部により前記対応するキャッシュセットが前記予め選択されたキャッシュセットであると判定された場合、（１）前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていることを示すヒット、及び、（２）前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていないことを示すミス、の何れが生じたかを判断する判断部と、
前記判断部によりミスが生じたと判断された場合に、ミスの回数を示すミス変数を更新しかつ前記記憶部に前記アドレス情報を記憶させる第１の処理、及び、前記ヒットが生じたと判断された場合に、ヒットの回数を示すヒット変数を更新する第２の処理の少なくとも一方を行う処理部と、
を備えた変数更新装置。
【請求項２】
各々が前記記憶部に対応して設けられかつ前記アドレス情報を記憶する複数の対応記憶部を更に備え、
前記ミスが生じたと判断された場合に、前記複数の対応記憶部の何れかに、前記アドレス情報が記憶されているか否かを判断する記憶判断部を更に備え、
前記処理部は、前記記憶判断部により、前記複数の対応記憶部の何れかに前記アドレス情報が記憶されていると判断された場合に、当該判断がされた回数を示す対応ヒット変数を更新する第３の処理、及び、前記複数の対応記憶部の全てに前記アドレス情報が記憶されていないと判断された場合に、当該判断がされた回数を示す対応ミス変数を更新する第４の処理の少なくとも一方を行う
請求項１に記載の変数更新装置。
【請求項３】
前記複数のデータは、複数の配列のデータを含み、
前記複数の配列の各々に対応して、ヒットの回数を示す配列ヒット変数と、ミスの回数を示す配列ミス変数とが定められ、
前記処理部は、前記複数の配列の何れかでヒットが生じた場合、当該配列に対応する配列ヒット変数を更新し、前記複数の配列の何れかでミスが生じた場合、当該配列に対応する配列ミス変数を更新する
請求項１又は請求項２に記載の変数更新装置。
【請求項４】
前記複数のデータは、複数の配列のデータを含み、
前記判定部は、前記複数の配列各々の各データについて所定の順番に前記判定をすると共に、前記複数の配列の内の選択された配列について、前記順番では前記判定されない各非判定データについて予め前記判定を行い、
前記処理部は、前記選択された配列について、前記ミスが生じた場合、前記非判定データデータに対応する前記アドレス情報を前記記憶部に予め記憶させる、
請求項１又は請求項２に記載の変数更新装置。
【請求項５】
前記ヒットが生じたと判断された場合、前記記憶部に予め記憶されかつ前記非判定データに対応する前記アドレス情報に基づいて前記ヒットが生じたか否かを判断するヒット判断部を更に備え、
前記記憶部に予め記憶されかつ前記非判定データに対応する前記アドレス情報に基づいて前記ヒットが生じた回数を示す予め記憶ヒット変数が定められ、
前記処理部は、前記ヒット判断部により前記非判定データに対応する前記アドレス情報に基づいて前記ヒットが生じたと判断された場合に、前記予め記憶ヒット変数を更新する
請求項４に記載の変数更新装置。
【請求項６】
前記キャッシュセットの個数分の請求項１〜請求項５０の何れか１項に記載の複数の変数更新装置を備え、
前記複数の変数更新装置の各々は、各キャッシュセットに対応して設けられ、
前記複数の変数更新装置の各々の前記判定部は、自装置に対応するキャッシュセットを前記予め選択されたキャッシュセットとして前記判定を行い、
前記複数の変数更新装置の各々の前記判定部が前記判定を行う少なくとも一部の期間が重なる
変数更新システム。
【請求項７】
記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータの各データを判定対象データとして、当該判定対象データに対応するキャッシュセットが、予め選択されたキャッシュセットであるか否かを判定し、
前記対応するキャッシュセットが前記予め選択されたキャッシュセットであると判定された場合、（１）前記判定対象データに対応する前記メモリ領域のアドレス情報が、前記予め選択されたキャッシュセットに対応して設けられた記憶部に記憶されていることを示すヒット、及び、（２）前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていないことを示すミス、の何れが生じたかを判断し、
前記判断部によりミスが生じたと判断された場合に、ミスの回数を示すミス変数を更新しかつ前記記憶部に前記アドレス情報を記憶させる第１の処理、及び、前記ヒットが生じたと判断された場合に、ヒットの回数を示すヒット変数を更新する第２の処理の少なくとも一方を行う
ことを含む変数更新方法。
【請求項８】
コンピュータに、
記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータの各データを判定対象データとして、当該判定対象データに対応するキャッシュセットが、予め選択されたキャッシュセットであるか否かを判定し、
前記対応するキャッシュセットが前記予め選択されたキャッシュセットであると判定された場合、（１）前記判定対象データに対応する前記メモリ領域のアドレス情報が、前記予め選択されたキャッシュセットに対応して設けられた記憶部に記憶されていることを示すヒット、及び、（２）前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていないことを示すミス、の何れが生じたかを判断し、
前記判断部によりミスが生じたと判断された場合に、ミスの回数を示すミス変数を更新しかつ前記記憶部に前記アドレス情報を記憶させる第１の処理、及び、前記ヒットが生じたと判断された場合に、ヒットの回数を示すヒット変数を更新する第２の処理の少なくとも一方を行う
ことを含む処理を実行させるための変数更新プログラム。
【請求項９】
前記複数のデータは、複数の配列のデータであり、
前記コンピュータに、
前記複数の配列各々の各データについて所定の順番に前記判定をすると共に、前記複数の配列の内の選択された配列について、前記順番では前記判定されない各非判定データについて予め前記判定を行い、
前記選択された配列について、前記ミスが生じた場合、前記非判定データに対応する前記アドレス情報を前記記憶部に予め記憶させる
ことを含む処理を更に実行させるための請求項８に記載の変数更新プログラム。
【請求項１０】
コンピュータに、
記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータを用いる元のプログラムを、請求項８に記載の変数更新プログラムに変換することを含む処理を実行させるための変換プログラム。
【請求項１１】
コンピュータに、
記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータを用いる元のプログラムを、請求項９に記載の変数更新プログラムに変換することを含む処理を実行させるための変換プログラム。
【請求項１２】
キャッシュセットの個数分設けられた請求項１〜請求項３の何れか１項に記載の複数の変数更新装置であって、前記複数の変数更新装置各々は、各キャッシュセットに対応して設けられ、前記複数の変数更新装置各々の前記判定部は、自装置に対応するキャッシュセットを前記予め選択されたキャッシュセットとして前記判定をする、前記複数の変数更新装置と、
前記複数の変数更新装置各々により得られたミス変数又はヒット変数の値に基づいて、前記ミスが所定の割合以上生じているキャッシュセットを検出し、
前記検出された前記キャッシュセットに対応する前記ミス変数の第１の総数を計算し、
どのくらい先のデータを前記記憶部に予め記憶するかを定める各々異なる複数の候補の内の選択された候補について、当該候補に基づく前記先のデータについて予め前記判定がされるように、前記複数のデータに対応する元のプログラムを変更し、
前記変更されたプログラムを、請求項１１に記載の変換プログラムにより変数更新プログラムに変換し、
前記検出されたキャッシュセットに対応する前記変数更新装置に対し、前記変換により得られた前記変数更新プログラムを実行させて、前記ヒット変数及び前記ミス変数の少なくとも一方の値を取得し、
前記取得された前記値の第２の総数を計算し、
前記計算された前記第２の総数が前記計算された前記第１の総数以上か否かを判断し、
前記第２の総数が前記第１の総数以上かであると判断された場合には、前記複数の候補の内の前記選択された候補とは異なる別の候補について、前記変更を行う管理装置と、
を備えたプログラム変更検証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システムに関する。
【背景技術】
【０００２】
複数の変数により定まる配列に基づいて主メモリのメモリ領域に記憶されたデータを取得すると共に、取得したデータについて一定の計算をする処理をコンピュータに実行させるプログラムを作成する態様には種々の態様がある。例えば、変化させる変数の順番を変える等である。ある態様で作成されたプログラムを実行する場合、主メモリのメモリ領域へのアクセスが必要となる。主メモリのメモリ領域へのアクセスは、時間がかかるので、プログラム実行完了までの時間も長時間必要となる。
【０００３】
従来、主メモリへのアクセス時間を改善するため、キャッシュメモリが用いられている。キャッシュメモリでは、記憶容量は主メモリの記憶容量より小さいが、アクセス時間は主メモリのアクセス時間より短い。よって、プロセッサは、主メモリにアクセスして得たデータをキャッシュメモリに記憶しておき、次にこのデータにアクセスする必要がある場合には、最初にキャッシュメモリにアクセスして、データを取得する。このように、主メモリにアクセスしないで、キャッシュメモリにアクセスすることにより、アクセス時間が改善される。
【０００４】
このように、キャッシュメモリを活用してプログラム実行完了までの時間を短縮できるが、上記態様で作成されたプログラムの上記態様を別の態様に変えることで、プログラム実行完了までの時間を更に短縮することができる場合がある。
【０００５】
ところで、変数の順番を変えると、主メモリのメモリ領域にアクセスする順番が変わり、よって、キャッシュメモリのキャッシュセットにアクセスする順番も変わる。このように、キャッシュセットにアクセスする順番が変わると、あるキャッシュセットには前の順番であれば、必要なデータが記憶されている（ヒット）が、順番が変わることにより必要なデータが記憶されなくなる（ミス）場合がある。
【０００６】
よって、変数の順番をどのように変えれば、プログラム実行完了までの時間を短縮できるのかを知るためには、キャッシュメモリのキャッシュセット毎のヒット及びミスの情報（プロファイルデータ）を知る必要がある。
【０００７】
従来、キャッシュメモリのキャッシュセット全体のプロファイルデータを取得することは行われていた。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−２０６９６号公報
【特許文献２】特開２００５−１２２４８１号公報
【特許文献３】特開２００１−５１９６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、キャッシュメモリのキャッシュセット毎のプロファイルデータを取得することは行われていない。
【００１０】
開示の技術は、１つの側面として、キャッシュセット毎のプロファイルデータを取得することが目的である。
【課題を解決するための手段】
【００１１】
開示の技術において、記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに、主メモリの複数のメモリ領域の各々が対応する。複数のメモリ領域の何れかに、複数のデータの各々が対応付けられている。判定部は、複数のデータの各データを判定対象データとして、当該判定対象データに対応するキャッシュセットが、予め選択されたキャッシュセットであるか否かを判定する。記憶部は、予め選択されたキャッシュセットに対応して設けられ、当該選択されたキャッシュセットに対応するメモリ領域のアドレス情報を記憶する。判断部は、判定部により、上記対応するキャッシュセットが上記予め選択されたキャッシュセットであると判定された場合、（１）ヒット、及び、（２）ミスの何れが生じたかを判断する。ヒットは、判定対象データに対応するメモリ領域のアドレス情報が記憶部に記憶されていることを示す。ミスは、判定対象データに対応するメモリ領域のアドレス情報が記憶部に記憶されていないことを示す。処理部は、判断部によりミスが生じたと判断された場合に、第１の処理及び第２の処理の少なくとも一方を行う。第１の処理は、ミスの回数を示すミス変数を更新しかつ記憶部にアドレス情報を記憶させる処理である。第２の処理は、ヒットが生じたと判断された場合に、ヒットの回数を示すヒット変数を更新する処理である。
【発明の効果】
【００１２】
開示の技術は、１つの側面として、キャッシュセット毎のプロファイルデータを取得することができる、という効果を有する。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態における、プロファイルデータ取得システムのブロック図である。
【図２】（Ａ）は、第１の実施の形態における、プロファイルデータを取得したい元のプログラム、（Ｂ）は、元のプログラムをプロファイルデータ取得プログラムに変換する処理を示す図、（Ｃ）は、プロファイルデータ取得プログラムを示す図である。
【図３】第１の実施の形態における、元のプログラムによる加算処理の一例を示すフローチャートである。
【図４】第１の実施の形態における、元のプログラムをプロファイルデータ取得プログラムに変換する処理の一例を示すフローチャートである。
【図５】第１の実施の形態における、プロファイルデータ取得処理の一例を示すフローチャートである。
【図６】図５のプロファイルデータ取得処理中のカウント処理の一例を示すフローチャートである。
【図７】記録領域のタグ情報の書き換えの様子を示す図であり、（Ａ）は、すべてのブロックでミスが生じた場合の書き換えの様子、（Ｂ）は、第１のブロックでヒットが生じた場合の書き換えの様子、（Ｃ）は、第２のブロックでヒットが生じた場合の書き換えの様子、（Ｄ）は、第３のブロックでヒットが生じた場合の書き換えの様子を示す図である。
【図８】（Ａ）は、第２の実施の形態における、プロファイルデータを取得したい元のプログラム、（Ｂ）は、元のプログラムをプロファイルデータ取得プログラムに変換する処理、（Ｃ）は、プロファイルデータ取得プログラムを示す図である。
【図９】第２の実施の形態における、元のプログラムによる加算処理の一例を示すフローチャートである。
【図１０】第２の実施の形態における、プロファイルデータ取得処理の一例を示すフローチャートである。
【図１１】２段のキャッシュメモリの一例を示す図である。
【図１２】第３の実施の形態における、プロファイルデータ取得処理の一例を示すフローチャートである。
【図１３】図１２のプロファイルデータ取得処理における、第２段目のキャッシュメモリのカウント処理の一例を示すフローチャートである。
【図１４】キャッシュメモリにおけるｇ＝０グループのキャッシュセットでのカウント処理の一例を示すフローチャートである。
【図１５】キャッシュメモリにおけるｇ＝１グループのキャッシュセットでのカウント処理の一例を示すフローチャートである。
【図１６】キャッシュメモリにおけるｇ＝２グループのキャッシュセットでのカウント処理の一例を示すフローチャートである。
【図１７】キャッシュメモリにおけるｇ＝３グループのキャッシュセットでのカウント処理の一例を示すフローチャートである。
【図１８】第４の実施の形態における、プロファイルデータ取得処理の一例を示すフローチャートである。
【図１９】図１８のプロファイルデータ取得処理中のカウント処理の一例を示すフローチャートである。
【図２０】（Ａ）は、第５の実施の形態における、プリフェッチ命令が挿入された元のプログラム、（Ｂ）は元のプログラムをプロファイルデータ取得プログラムに変換する処理、（Ｃ）はプロファイルデータ取得プログラムを示す図である。
【図２１】第５の実施の形態における、プリフェッチ命令が挿入された元のプログラムによる加算処理の一例を示すフローチャートである。
【図２２】第５の実施の形態における、プロファイルデータ取得処理の一例を示すフローチャートである。
【図２３】図２２のプロファイルデータ取得処理中のカウント処理の一例を示すフローチャートである。
【図２４】第６の実施の形態における、元のプログラムにプリフェッチ命令が挿入されることによる実行時間の改善の効果を検証するプリフェッチ検証システムを示すブロック図である。
【図２５】（Ａ）は、プリフェッチ検証プログラムの一例を示し、（Ｂ）は、プリフェッチ検証プロセスの一例を示す図である。
【図２６】第６の実施の形態における、プリフェッチ検証処理の一例を示すフローチャートである。
【図２７】（Ａ）は、第１の実施の形態〜第５の実施の形態における、プログラム変換プログラムの一例を示し、（Ｂ）は、プログラム変換プロセスの一例を示す図である。
【図２８】（Ａ）は、第１の実施の形態〜第５の実施の形態における、プロファイルデータ取得プログラムの一例を示し、（Ｂ）は、プロファイルデータ取得プロセスの一例を示す図である。
【図２９】（Ａ）は、主メモリのインデックス及びアドレスとキャッシュメモリのキャッシュセット及びアドレスとの関係を示す図であり、（Ｂ）は、主メモリのアドレスとキャッシュメモリのセット番号との関係を示す図であり、（Ｃ）は、主メモリのインデックス０、８、１６、２４のメモリ領域が、キャッシュメモリのセット番号０のセットに対応することを示す図であり、（Ｄ）は、タグ情報を示す図である。
【図３０】連想数が４のキャッシュセットの様子を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して開示の技術の実施の形態の一例を詳細に説明する。
［第１実施形態］
第１の実施の形態の構成を説明する。
図１に示すように、第１の実施の形態に係るプロファイルデータ取得システムは、複数の計算機１０ｓ０、１０ｓ１、…１０ｓＮを備えている。これらの計算機は互いに独立して稼働する。これらの計算機１０ｓ０、１０ｓ１、…１０ｓＮは、ネットワーク１４を介してデータベース１２に接続されている。計算機１０ｓ０、１０ｓ１、…１０ｓＮは同一の構成であるので、以下計算機１０ｓ０のみを説明する。
プロファイルデータ取得システムは、開示の技術の変数更新システムの一例である。計算機１０ｓ０、１０ｓ１、…１０ｓＮは、開示の技術の変数更新装置の一例である。
【００１５】
計算機１０ｓ０は、ＣＰＵ（中央処理装置：Central Processing Unit）２２、ＲＯＭ（Read Only Memory）２４、及びＲＡＭ（Random Access Memory）２６が、バス２０を介して相互に接続されている。バス２０には更に、入力部２８、表示部３０、インターフェイス３２、及びメモリ３４が接続されている。なお、インターフェイス３２には、ネットワーク１４を介してデータベース１２、及び他の計算機１０ｓ１、…１０ｓＮが接続されている。
【００１６】
データベース１２には、キャッシュメモリのキャッシュセット毎のヒット及びミスの情報であるプロファイルデータを取得したい対象のプログラムである元のプログラムＰ００１が記憶されている。ここで、ヒット及びミスを説明する。前述したように、主メモリへのアクセス時間の改善のためキャッシュメモリが用いられている。即ち、主メモリのメモリ領域に記憶されたデータへのアクセスのためには比較的長い時間が必要となる。一方、キャッシュメモリのキャッシュセットに記憶されたデータへのアクセスのためには比較的短い時間で済む。主メモリのあるメモリ領域のデータを読み出す場合に、主メモリの当該メモリ領域のデータがキャッシュメモリの当該メモリ領域に対応するキャッシュセットに記憶されている場合がある。この場合には、主メモリの当該メモリ領域のデータを読み出す代わりに、キャッシュメモリのキャッシュセットに記憶されたデータを読み出すことができる。これにより、データを読み出す時間を短くすることができる。このように、主メモリのメモリ領域のデータが当メモリ領域に対応するキャッシュメモリのキャッシュセットに記憶されている場合のことを、ヒットという。逆に、主メモリのメモリ領域のデータが当該メモリ領域に対応するキャッシュメモリのキャッシュセットに記憶されていない場合のことをミスという。
【００１７】
例えば、計算機１０ｓ０は、元のプログラムＰ００１を、詳細には後述するプログラム変換プログラムＰＴＰに従って、合計キャッシュメモリのキャッシュセット数分のプロファイルデータ取得プログラムＰ０〜ＰＮに変換する。データベース１２には、変換されたプロファイルデータ取得プログラムＰ０〜ＰＮ、及びプログラム変換プログラムＰＴＰが記憶されている。なお、計算機１０ｓ０でなく、他の計算機１０ｓ１・・・１０ｓＮの何れか、更には、図示しない別の計算機がプログラム変換プログラムＰＴＰで元のプログラムＰ００１をプロファイルデータ取得プログラムＰ０〜ＰＮに変換してもよい。
【００１８】
計算機１０ｓ０は、キャッシュメモリのセット番号ｓ＝０のキャッシュセットのプロファイルデータを取得するため、ｓ＝０のプロファイルデータ取得プログラムＰ０を、データベース１２からＲＡＭ２６にダウンロードする。そして、計算機１０ｓ０は、当該プロファイルデータ取得プログラムＰ０に従って、セット番号ｓ＝０のキャッシュセットのプロファイルデータを取得する。その他の計算機も同様である。
【００１９】
次に、図２７（Ａ）を参照して、プログラム変換プログラムＰＴＰを説明する。プログラム変換プログラムＰＴＰは、集合作成部６１Ａ、ソースコード分類部６２Ａ、及びプログラム文作成部６３Ａを有する。また、図２７（Ｂ）に示すように、プログラム変換処理は、集合作成プロセス６１Ｂ、ソースコード分類プロセス６２Ｂ、及びプログラム文作成プロセス６３Ｂを有する。なお、ＣＰＵ２２は、上記プロセス６１Ｂ〜６３Ｂの各々を実行することにより、図２７（Ａ）の上記各部６１Ａ〜６３Ａとして動作する。
【００２０】
次に、図２８（Ａ）を参照して、プロファイルデータ取得プログラムＰ０を説明する。プロファイルデータ取得プログラムＰ０は、アドレス計算部９１Ａ、セット番号計算部９２Ａ、セット番号判断部９３Ａ、及びＡＣＣＥＳＳプログラム実行部９４Ａを有する。また、図２８（Ｂ）に示すように、プロファイルデータ取得処理は、アドレス計算プロセス９１Ｂ、セット番号計算プロセス９２Ｂ、セット番号判断プロセス９３Ｂ、及びＡＣＣＥＳＳプログラム実行プロセス９４Ｂを有する。なお、ＣＰＵ２２は、上記プロセス９１Ｂ〜９４Ｂの各々を実行することにより、図２８（Ａ）の上記各部９１Ａ〜９４Ａとして動作する。
【００２１】
次に、第１の実施の形態の作用を説明する。
第１の実施の形態の技術では、主メモリ及びキャッシュメモリへのアクセスをシミュレーションする。即ち、第１の実施の形態の技術は、主メモリ及びキャッシュメモリに現実にアクセスすると共にヒット又はミスを計算することにより、プロファイルデータを取得する技術ではない。
【００２２】
図２９には、主メモリ４００の各記憶領域のインデックス及びアドレスとキャッシュメモリのキャッシュセットのセット番号及びアドレスとの関係が示されている。図２９（Ａ）に示す例では、主メモリ４００は、３２個のメモリ領域を有する。各メモリ領域にはインデックス０〜３１が付与されている。メモリ領域のアドレスは、０００００〜１１１１１が付与されている。一方、キャッシュメモリは、メモリ領域４０２としての８個のキャッシュセットを有し、キャッシュセットのセット番号として０〜７が付与されている。８個のキャッシュセットのアドレスは、０００〜１１１が付与されている。また、キャッシュメモリは、タグ情報を記憶するタグ記憶領域４０４を備えている。
【００２３】
上記のように、主メモリ４００は３２個のメモリ領域を有する。しかし、キャッシュメモリは、８個のキャッシュセットを有する。よって、主メモリ４００の異なる４つのメモリ領域に対応して、キャッシュメモリの１つのセットが対応づけられている。図２９（Ｂ）には、主メモリのアドレスとキャッシュメモリのセット番号との対応関係が示されている。図２９（Ｂ）に示すように、主メモリのアドレスをキャッシュメモリのセット数（８）で割った余りがセット番号となっている。例えば、主メモリのインデックス０のアドレスは０００００である。０００００を８で割った余りは０であるので、セット番号は０であり、そのキャッシュのアドレスは０００である。同様に、主メモリのインデックス７に対応するアドレスは００１１１である。００１１１を８で割ると余りが７となる。よってセット番号は７であり、そのキャッシュアドレスは１１１である。そして、主メモリのインデックス８、１６、２４の各々について同様に余りを求めると０となりキャッシュセット番号は０である。よって、図２９（Ｃ）に示すように、主メモリのインデックス０、８、１６、２４のメモリ領域は、キャッシュメモリのセット番号０のキャッシュセットに対応する。プロセッサは、インデックス０のメモリ領域にアクセスした場合や、インデックス８のメモリ領域にアクセスした場合には、各々のデータをキャッシュメモリのセット番号０に対応するキャッシュセットに記憶する。キャッシュメモリの各キャッシュセットのアドレスは、０００である。よって、当該領域に記憶されたデータが主メモリのインデックス０、８、１６、２４の何れのメモリ領域に記憶されたデータなのかは不明である。この点、図２９（Ｄ）に示すように、インデックス０の主メモリのメモリ領域のアドレスは０００００であり、インデックス８のメモリ領域のアドレスは、０１０００であり、以下同様に、１６、２４のインデックスのアドレスは、１００００、１１０００である。これらのアドレスの下位の３ビットは、キャッシュセット番号のアドレスの３ビットに対応する。そこで、主メモリのアドレスの上位の上から２つのビットの内容を、タグ情報として当該セットに対応するタグ領域４０４に記憶する。キャッシュメモリのセットのアドレスとタグ情報とから、主メモリのアドレスが得られる。よって、キャッシュメモリのセットのデータが主メモリのどのアドレスに対応するデータなのかも、キャッシュメモリのセットのアドレスとタグ情報とから得られる。
【００２４】
第１の実施の形態では、図２９に示すように、上記シミュレーションにおいて３２個のメモリ領域を有する主メモリ４００と、８個のキャッシュセットを有するキャッシュメモリとが想定されている。第１の実施の形態では、メモリ３４にタグ記憶領域４０４のキャッシュセットｓに対応する１つの記憶領域４０４ｓが設けられている。また、図３０に示すように、キャッシュセットの連想数Ａが４であることが想定されている。よって、タグ記憶領域４０４の各記憶領域も４つのブロックを有する。よって、１つの記憶領域４０４ｓも、４つのブロック１７０Ａ０〜１７０Ａ３を有する。
記憶領域４０４ｓは、開示の技術の記憶部の一例である。４つのブロック１７０Ａ０〜１７０Ａ３は、開示の技術の記憶ブロックの一例である。
【００２５】
主メモリのメモリ領域にアクセスする場合、当該メモリ領域のアドレス情報が、タグ記憶領域４０４に記憶されたタグ情報と等しい場合に、主メモリに代えてキャッシュメモリがアクセスされる。第１の実施の形態では、プロファイルデータを取得できれば十分である。よって、上記メモリ領域のアドレス情報に基づくタグ情報が、当該メモリ領域に対応するキャッシュセットに対応する記憶領域４０４ｓに記憶されたタグ情報と等しいのか否かが分かれば十分である。そこで、メモリ３４には、主メモリのメモリ領域のアドレス、及びキャッシュメモリの各キャッシュセットのアドレスが記憶されている。
【００２６】
プロファイルデータを取得したい対象の元のプログラムＰ００１の一例が図２（Ａ）に示されている。元のプログラムＰ００１は、各々変数ｉ、ｊで識別される配列Ｘの各値と配列Ｙの各値とを加算して、変数ｉ、ｊで識別される配列Ｚのメモリ領域に書き込む加算処理を実行するためのプログラムである。
【００２７】
ここで、Ｘ［ｉ］[ｊ]により、Ｘ［ｉ］[ｊ]の値が記憶されている主メモリのメモリ領域のアドレスが識別され、Ｙ［ｊ］[ｉ] により、Ｙ［ｊ］[ｉ]の値が記憶されている主メモリのメモリ領域のアドレスが識別される。Ｚ［ｉ］[ｊ]により、Ｚ［ｉ］[ｊ]の値を記憶する主メモリのメモリ領域のアドレスが識別される。Ｘ［ｉ］[ｊ]、 Ｙ［ｊ］[ｉ] 、Ｚ［ｉ］[ｊ]と各メモリ領域のアドレスとの関係がメモリ３４に記憶されている。
【００２８】
元のプログラムＰ００１の加算処理の流れの一例が図３に示されている。
【００２９】
図３に示すように、加算処理がスタートすると、ステップ４２で、実行部は、変数ｉを０に初期化し、ステップ４４で、実行部は、変数ｉが、変数ｉの総数Ｎより小さいか否かを判断する。変数ｉがＮより小さい場合に、ステップ４６で、実行部は、変数ｊを０に初期化する。ステップ４８で、実行部は、変数ｊがｊの総数でもある総数Ｎより小さいか否かを判断する。変数ｊが総数Ｎより小さいと判断された場合には、加算処理はステップ５２に移行される。変数ｊがＮより小さくないと判断された場合には、ステップ５０に進み、実行部は変数ｉを１インクリメントして、加算処理はステップ４４に進む。
【００３０】
ステップ５２で、実行部は、配列Ｘ［ｉ］[ｊ]の値を主メモリのＸ［ｉ］[ｊ]で定まるメモリ領域から読み出して、ｔ１に代入（ロード）する。ステップ５４で、実行部は、配列Ｙ [ｊ] ［ｉ］の値を主メモリのＹ[ｊ]［ｉ］で定まるメモリ領域から読み出して、ｔ２に代入（ロード）する。ステップ５６で、実行部は、ｔ１＋ｔ２を計算して、得られた値をｔ３に代入（ロード）する。ステップ５８で、実行部は、ｔ３の値を、配列Ｚ［ｉ］[ｊ]により識別される主メモリのアドレスのメモリ領域に記憶する。ステップ６０で、実行部は、変数ｊを１インクリメントする。ステップ６０の後は、加算処理は、ステップ４８に移行される。
【００３１】
図４には、元のプログラムをプロファイルデータ取得プログラムに変換するプログラム変換処理の流れの一例が示されている。ステップ６１で、集合作成部６１Ａは、変更対象とする元のプログラムＰ００１（図２（Ａ）参照）のソースコードを取得し、各ソースコードを、例えば、４種類（Ｙ１〜Ｙ４）に分類した集合Ｚを作成する。
【００３２】
ここで、Ｙ１は、制御フローに関連するコードの分類である。Ｙ２は、計算するコードの分類である。Ｙ３は、条件分岐の判定に関連するコードの分類である。Ｙ４は、プリフェッチ命令のコードの分類である。
【００３３】
ステップ６２で、ソースコード分類部６２Ａは、集合Ｚから１つのソースコードを元のプログラムのソースコードの配置順に取り出し、集合Ｚから消去する。ステップ６３で、プログラム文作成部６３Ａは、取り出したソースコードがＹ１に分類されたか否かを判断する。ステップ６３で、取り出したソースコードがＹ１に分類されたと判断された場合には、ステップ６４で、プログラム文作成部６３Ａは、取り出したソースコードを、プロファイルデータ取得プログラムのソースコードとして使用する。ステップ６４の後、プログラム変換処理はステップ７８に移行される。
【００３４】
ステップ６３の判定結果が否定判定の場合には、ステップ６５で、プログラム文作成部６３Ａは、取り出したソースコードがＹ２に分類されたか否かを判断する。ステップ６５の判定結果が肯定判定である場合には、ステップ６６で、プログラム文作成部６３Ａは、プログラム文を作成する。即ち、「配列参照Ｒに基づく主メモリのバイトアドレスｍＲを求める」及び「バイトアドレスｍＲに対応するキャッシュメモリのキャッシュセット番号ｓＲを求める」という内容のプログラム文が作成される。ステップ６７で、プログラム文作成部６３Ａは、「キャッシュセット番号ｓＲがキャッシュセットを表す変数ｓと等しい場合に、キャッシュアクセス状況を記憶するＡＣＣＥＳＳプログラムを実行する」という内容のプログラム文を作成する。ステップ６８で、プログラム文作成部６３Ａは、全ての配列について、以上のプログラム文の作成が終了したか否かを判断し、全ての配列について以上の文の作成が終了していない場合には、ステップ６６に戻る。これにより、別の配列について、以上の処理（ステップ６６及びステップ６７）が実行される。全ての配列について、以上の文の作成が終了した場合には、プログラム変換処理はステップ７８に移行される。
【００３５】
ステップ６５の判定結果が否定判定の場合には、ステップ６９で、プログラム文作成部６３Ａは、取り出したソースコードがＹ３に分類されたか否かを判断する。ソースコードがＹ３に分類されたと判断された場合、プログラム文作成部６３Ａは、ステップ７０〜ステップ７２でそれぞれ、ステップ６６〜ステップ６８と同様の処理を実行する。ステップ７３で、プログラム文作成部６３Ａは、「条件判定結果をファイルから読み込む」という内容のプログラム文を作成する。ステップ７４で、プログラム文作成部６３Ａは、「条件を判定する」という内容のプログラム文を作成する。ステップ７４の後、プログラム変換処理はステップ７８に移行される。
【００３６】
ステップ６９の判定結果が否定判定の場合は、取り出したソースコードはＹ４に分類されている。ステップ７５で、プログラム文作成部６３Ａは、ステップ６６と同様の処理を実行する。ステップ７６で、プログラム文作成部６３Ａは、「ｓＲがキャッシュセットを表す変数ｓと等しい場合に、プリフェッチ用のＡＣＣＥＳＳプログラムを実行する」という内容の文を作成する。
【００３７】
なお、ＡＣＣＥＳＳプログラムは予め作成されており、ステップ６７、ステップ７１、及びステップ７６では予め作成された同一のＡＣＣＥＳＳプログラムが用いられるように、プログラム文が作成される。ステップ７６の後、プログラム変換処理はステップ７８に移行される。
【００３８】
ステップ７８で、プログラム文作成部６３Ａは、集合Ｚが空になったか否かを判断する。ステップ７８の判定結果が否定判定の場合には、プロファイルデータ取得プログラムに変換されていないソースコードがある。そこで、プログラム変換処理はステップ６２に戻って、以上の処理（ステップ６２〜７８）が実行される。ステップ７８の判定結果が肯定判定の場合には、全てのソースコードをプロファイルデータ取得プログラムに変換したので、プログラム変換処理は終了する。
【００３９】
図２（Ａ）に示された元プログラムＰ００１は、図４のプログラム変換処理によって、図２（Ｃ）に示すプロファイルデータ取得プログラムＰｉ（ｉ＝ｓ（０〜Ｎ））に変換される。具体的には次の通りである。図２（Ａ）に示す元のプログラムＰ００１のソースコードＣ１及びＣ２は、Ｙ１に分類される。よって、ステップ６４の処理により、図２（Ｃ）に示すように、プロファイルデータ取得プログラムＰｉにおいて、ソースコードＣ１及びＣ２はそのまま使用される。しかし、ソースコードＣ３は、Ｙ２に分類される。図２（Ａ）におけるソースコードＣ３は、配列として、配列Ｘ、Ｙ、及びＺがある。よって、各配列Ｘ、Ｙ、及びＺについて、ステップ６６（図２（Ｂ）も参照）の処理により、プロファイルデータ取得プログラムＰｉにおいて次のプログラム文が作成される。即ち、プログラム文Ｃ３−１（Ｘ）、Ｃ３−２（Ｘ）、Ｃ３−１（Ｙ）、Ｃ３−２（Ｙ）、Ｃ３−１（Ｚ）、及びＣ３−２（Ｚ）が作成される。また、各配列Ｘ、Ｙ、及びＺについて、ステップ６７（図２（Ｂ）も参照）の処理により、プロファイルデータ取得プログラムＰｉにおいて、プログラム文Ｃ３−３（Ｘ）、Ｃ３−３（Ｙ）、及びＣ３−３（Ｚ）が作成される。なお、元プログラムＰ００１のソースコードＣ４、Ｃ５はＹ１に分類される。よって、ステップ６４の処理により、図２（Ｃ）に示すように、プロファイルデータ取得プログラムＰｉにおいて、ソースコードＣ４及びＣ５は、そのまま使用される。
【００４０】
プロファイルデータ取得プログラムＰｉは、キャッシュメモリのキャッシュセット数分作成される。各プロファイルデータ取得プログラムＰｉは、ほぼ同じ内容であるが、図２（Ｃ）に示すように、キャッシュセットを表す変数ｓが相違する。例えば、図１に示すようにｓ＝０用のプロファイルデータ取得プログラムＰ０では、ｓ＝０であり、ｓ＝１用のプロファイルデータ取得プログラムＰ１では、ｓ＝１であり、ｓ＝Ｎ用のプロファイルデータ取得プログラムＰＮでは、ｓ＝Ｎである。
【００４１】
図２（Ｃ）に示すプロファイルデータ取得プログラムの処理の一例は、図５及び図６に示されている。なお、以下、当該処理の一例がｓ＝１のプロファイルデータ取得プログラムＰ１のプロファイルデータ取得処理であるとして、当該処理の一例を説明する。よって、当該処理は計算機１０ｓ１によって行われる。図５におけるステップ８２〜９０、及びステップ１１０は、図２（Ｃ）のコードＣ１、Ｃ２、Ｃ４、及びＣ５に対応すると共に、図３のステップ４２〜５０、及びステップ６０に対応する。なお、図５におけるステップ８２〜９０は、アドレス計算部９１Ａによって行われる。
【００４２】
ステップ９２〜９６は、図２（Ｃ）のプログラム文Ｃ３−１（Ｘ）〜Ｃ３−３（Ｘ）に対応する。即ち、ステップ９２で、アドレス計算部９１Ａは、変数ｉ及び変数ｊで識別される配列Ｘのアドレス（バイトアドレス）を求め、ｍ０に代入する。ここで、配列Ｘ［ｉ］[ｊ]の先頭Ｘ［0］[0］により識別される主メモリのアドレスを０ｘ０８０００、配列Ｘのデータの１つを８バイト、変数ｉの総数をＤ２（＝Ｎ）とすると、ｍ０に代入されるアドレスは、０ｘ０８０００＋（Ｄ２＊ｉ＋ｊ）＊８である。ステップ９２では更に、セット番号計算部９２Ａは、アドレスｍ０のキャッシュセット番号を求め、ｅ０に代入する。なお、キャッシュセット１つ当たりのバイト数をＢとし、キャッシュセットの総数をＳとすると、キャッシュセット番号ｅ０は、ｍ０／Ｂの商をＳで割った余りとして得られる。
【００４３】
ステップ９４で、セット番号判断部９３Ａは、キャッシュセット番号ｅ０がプロファイルデータ取得処理が担当するセット番号ｓであるか否かを判断する。上記のように、例えば、ｓ＝１のプロファイルデータ取得プログラムＰ１のプロファイルデータ取得処理を計算機１０ｓ１が実行する。よって、キャッシュセット番号ｅ０が、１の場合には、当該配列Ｘのプロファイルデータを取得する必要があるので、プロファイルデータ取得処理は、ステップ９６に進む。ステップ９４の判定結果が否定判定の場合は、別の計算機が当該配列Ｘのプロファイルデータを取得するので、計算機１０ｓ１が実行するプロファイルデータ取得処理ではプロファイルデータが取得されない。よって、ステップ９４の判定結果が否定判定の場合には、ステップ９６がスキップされて、プロファイルデータ取得処理はステップ９８に移行される。
【００４４】
ステップ９８〜１０２は、図２（Ｃ）のプログラム文Ｃ３−１（Ｙ）〜Ｃ３−３（Ｙ）に対応する。ステップ９８〜１０２は、配列Ｙに基づくアクセスである点で、配列Ｘに基づくアクセスと異なる以外は、ステップ９２〜９６と同様であるので、その説明を省略する。なお、プログラム文Ｃ３−1（Ｙ）では、変数ｊの総数をＤ２（＝Ｎ）としている。
【００４５】
ステップ１０４〜１０８は、図２（Ｃ）のプログラム文Ｃ３−１（Ｚ）〜Ｃ３−３（Ｚ）に対応する。ステップ１０４〜１０８は、配列Ｚに基づくアクセスの点で、配列Ｘに基づくアクセスと異なる以外は、ステップ９２〜９６と、同様であるので、その説明を省略する。
ステップ９４、１００、１０６の処理は、開示の技術における判定部が実行する判定の内容の一例である。
【００４６】
次に、図６を参照して図５のステップ９６、１０２、１０８の各々で実行されるヒット又はミスをカウントするカウント処理の一例（ＡＣＣＥＳＳプログラムの処理の一例）を説明する。ステップ９６、１０２、１０８では、同じＡＣＣＥＳＳプログラムが実行される。なお、キャッシュセットが異なると、異なるＡＣＣＥＳＳプログラムが実行されるが、同じキャッシュセット内であれば、同じＡＣＣＥＳＳプログラムが実行される。ここで、ステップ９６、１０２、１０８で同じＡＣＣＥＳＳプログラムが実行されるのに、ステップ９６、１０２、１０８ではそれぞれ、ＡＣＣＥＳＳ（ｍ０）、ＡＣＣＥＳＳ（ｍ１）、及びＡＣＣＥＳＳ（ｍ２）と表記している理由は、次の通りである。即ち、ステップ９６では、アドレスｍ０のデータのヒット又はミスを判断し、ステップ１０２では、アドレスｍ１のデータのヒット又はミスを判断し、ステップ１０８では、アドレスｍ２のデータのヒット又はミスを判断するからである。
【００４７】
図６のステップ１１２で、ＡＣＣＥＳＳプログラム実行部９４Ａは、キャッシュセットｓのどのブロックでヒットしているか、及び全てのブロックでミスしているのかを示す変数ＨＩＴ＿Ｐを−１に初期化する。
【００４８】
ステップ１１４で、ＡＣＣＥＳＳプログラム実行部９４Ａは、変数ｉ、ｊで識別される配列に基づいて参照する主メモリのメモリ領域のアドレス（ａｄｄｒｅｓｓ）からキャッシュメモリのタグ記憶領域４０４ｓに記憶するタグ情報を求めて、Ａに代入する。Ａに代入されたタグ情報をタグ情報Ａとする。
【００４９】
ステップ１１６〜１２４で、ＡＣＣＥＳＳプログラム実行部９４Ａは、キャッシュセットｓにおける４つのブロック１７０Ａ０〜１７０Ａ３の何れかに上記タグ情報Ａが記憶されているか否かを判断する。上記のように、第１の実施の形態では、連想数を４としている。なお、連想数は４に限られず、例えば、５、３、６、２の何れかとしてもよい。
【００５０】
ステップ１１６で、ＡＣＣＥＳＳプログラム実行部９４Ａは、タグ情報Ａが第１のブロック１７０Ａ０に記憶されているタグ情報Ａ＿０に等しいか否かを判断する。タグ情報Ａが第１のブロック１７０Ａ０に記憶されているタグ情報Ａ＿０に等しい場合には、ヒットとなる。そこで、ステップ１２６で、実行部は、ヒットのカウント数であるＨＩＴ＿Ｃを１インクリメントすると共に、変数ＨＩＴ＿Ｐに０を代入する。０は、第１のブロック１７０Ａ０でヒットしていることを示す。
【００５１】
ステップ１１６の判定結果が否定判定の場合には、ステップ１１８で、ＡＣＣＥＳＳプログラム実行部９４Ａは、タグ情報Ａが第２のブロック１７０Ａ１に記憶されているタグ情報Ａ＿１に等しいか否かを判断する。タグ情報Ａが第２のブロック１７０Ａ１に記憶されているタグ情報Ａ＿１に等しいと判断された場合には、ヒットとなる。そこで、ステップ１２８で、ＡＣＣＥＳＳプログラム実行部９４Ａは、変数ＨＩＴ＿Ｃを１インクリメントすると共に、変数ＨＩＴ＿Ｐに、第２のブロック１７０Ａ１でヒットしたことを示す１を代入する。
【００５２】
ステップ１１８の判定結果が否定判定の場合には、ステップ１２０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、タグ情報Ａが第３のブロック１７０Ａ２に記憶されているタグ情報Ａ＿２に等しいか否かを判断する。タグ情報Ａが第３のブロック１７０Ａ２に記憶されているタグ情報Ａ＿２に等しい場合には、ヒットとなる。そこで、ステップ１３０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、変数ＨＩＴ＿Ｃを1インクリメントすると共に、変数ＨＩＴ＿Ｐに、第３のブロック１７０Ａ２でヒットしたことを示す２を代入する。
【００５３】
ステップ１２０の判定結果が否定判定の場合には、ステップ１２４で、ＡＣＣＥＳＳプログラム実行部９４Ａは、タグ情報Ａが、第４のブロック１７０Ａ３に記憶されているタグ情報Ａ＿３に等しいか否かを判断する。タグ情報Ａが第４のブロック１７０Ａ３に記憶されているタグ情報Ａ＿３に等しい場合には、ヒットとなる。そこで、ステップ１３２で、ＡＣＣＥＳＳプログラム実行部９４Ａは、変数ＨＩＴ＿Ｃを、１インクリメントすると共に、変数ＨＩＴ＿Ｐに、第４のブロック１７０Ａ３でヒットしたことを示す３を代入する。
【００５４】
ステップ１２４の判定結果が否定判定の場合は、全てのブロック１７０Ａ１〜１７０Ａ３で、ミスしているので、ステップ１３４で、ＡＣＣＥＳＳプログラム実行部９４Ａは、ミスをカウントする変数ＭＩＳＳ＿Ｃを１インクリメントする。
ステップ１１６〜１２４の処理は、開示の技術の判断部の判断の内容の一例である。ステップ１２６〜１３２の処理は、開示の技術の第２の処理の一例である。ステップ１３４の処理は、開示の技術の第１の処理の一例である。
【００５５】
ステップ１２６〜１３４の何れかが実行されると、プロファイルデータ取得処理はステップ１３６に移行される。ステップ１３６で、ＡＣＣＥＳＳプログラム実行部９４Ａは、変数ＨＩＴ＿Ｐが−１か否かを判断する。ＨＩＴ＿Ｐが−１である場合は、変数ＨＩＴ＿Ｐが初期状態のまま、即ち、全てのブロックでミスが生じている場合である。そこで、ステップ１３６の判定結果が肯定判定の場合には、プロファイルデータ取得処理は、ステップ１４４に進む。ステップ１３６の判定結果が否定判定の場合には、プロファイルデータ取得処理はステップ１３８に移行される。ステップ１３８で、ＡＣＣＥＳＳプログラム実行部９４Ａは、変数ＨＩＴ＿Ｐが０か否か、即ち、第１のブロック１７０Ａ０でヒットが生じているのか否かを判断する。第１のブロック１７０Ａ０でヒットが生じたと判断された場合には、プロファイルデータ取得処理はステップ１４６に移行される。
【００５６】
ステップ１３８の判定結果が否定判定の場合には、ステップ１４０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、変数ＨＩＴ＿Ｐが１か否か、即ち、第２のブロック１７０Ａ１でヒットが生じているのか否かを判断する。第２のブロック１７０Ａ１でヒットが生じたと判断された場合には、プロファイルデータ取得処理はステップ１４８に移行される。
【００５７】
ステップ１４０の判定結果が否定判定の場合には、ステップ１４２で、ＡＣＣＥＳＳプログラム実行部９４Ａは、変数ＨＩＴ＿Ｐが２か否か、即ち、第３のブロック１７０Ａ２がヒットが生じたか否かを判断する。第３のブロック１７０Ａ２でヒットが生じた場合には、プロファイルデータ取得処理はステップ１５０に移行される。
【００５８】
ステップ１４４〜ステップ１５０では、ミスした場合又はヒットが生じたブロックの位置に応じて、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）に従ったブロックのタグ情報の書き換えを行っている。
【００５９】
ここで、ＬＲＵに従ったブロックの書き換えを説明する。上記のように記憶領域４０４ｓには、４つのブロック１７０Ａ０〜１７０Ａ３が設けられている。そして、例えば、図７（Ａ）に示すように第１のブロック１７０Ａ０、第２のブロック１７０Ａ１、第３のブロック１７０Ａ２、第４のブロック１７０Ａ３の順により古いアドレス情報が記憶されるように定められている。即ち、第４のブロック１７０Ａ３に最新のアドレス情報が記憶されるように、定められている。
【００６０】
ステップ１３６の判定結果が肯定判定の場合は、全てのブロックでミスされているので、実行部は、図７（Ａ）に示すように、まず、第２のブロック１７０Ａ１のタグ情報Ａ＿１を第１のブロック１７０Ａ０に記憶（上書き）する。即ち、第１のブロック１７０Ａ０に記憶されていた最も古いタグ情報Ａ＿０はタグ情報Ａ＿１に書き換えられる。次に、ＡＣＣＥＳＳプログラム実行部９４Ａは、第３のブロック１７０Ａ２のタグ情報Ａ＿２を第２のブロック１７０Ａ１に上書きする。実行部は、第４のブロック１７０Ａ３のタグ情報Ａ＿３を第３のブロック１７０Ａ２に上書きする。そして、ＡＣＣＥＳＳプログラム実行部９４Ａは、今回のアクセスにおける主メモリのメモリ領域のタグ情報Ａを第４のブロック１７０Ａ３に上書きする。
【００６１】
ステップ１３８の判定結果が肯定判定の場合は、第１のブロック１７０Ａ０でヒットが生じている。即ち、図７（Ｂ）に示すように、第１のブロック１７０Ａ０がヒットしている。そこでＡＣＣＥＳＳプログラム実行部９４Ａは、第１のブロック１７０Ａ０のタグ情報Ａ＿０を一次的に保持するためｔｍｐに保持させる。ＡＣＣＥＳＳプログラム実行部９４Ａは次のように上書きする。即ち、第２のブロック１７０Ａ１のタグ情報Ａ＿１が第１のブロック１７０Ａ０に、第３のブロック１７０Ａ２のタグ情報Ａ＿２が第２のブロック１７０Ａ１に、第４のブロック１７０Ａ３のタグ情報Ａ＿３が第３のブロック１７０Ａ２に上書される。ところで、タグ情報Ａ＿０〜Ａ＿３の中で最も古いタグ情報はタグ情報Ａ＿０である。しかし、今回、第１のブロック１７０Ａ０でヒットが生じているので、タグ情報Ａ＿０は、最新のタグ情報Ａに等しい。そこで、ｔｍｐに保持されたタグ情報Ａを第４のブロック１７０Ａ３に上書きする。
【００６２】
ステップ１４０の判定結果が肯定判定の場合は、第２のブロック１７０Ａ１でヒットが生じている。即ち、図７（Ｃ）に示すように、ＡＣＣＥＳＳプログラム実行部９４Ａは、第２のブロック１７０Ａ１に記録されているタグ情報Ａ＿１を、ｔｍｐに保持させる。また、ＡＣＣＥＳＳプログラム実行部９４Ａは次のように上書きする。即ち、第３のブロック１７０Ａ２に記録されているタグ情報Ａ＿２が第２のブロック１７０Ａ１に上書きされる。また、第４のブロック１７０Ａ３に記録されているタグ情報Ａ＿３が第３のブロック１７０Ａ２に上書きされる。ｔｍｐに保持された最新のタグ情報Ａが第４のブロック１７０Ａ３に上書きされる。なお、第２のブロック１７０Ａ１に記憶されたタグ情報Ａ＿１は最新のタグ情報である。一方、第１のブロック１７０Ａ０に記憶されたタグ情報Ａ＿０は最も古いタグ情報である。よって、第１のブロック１７０Ａ０に記憶されたタグ情報Ａ＿０は書き換える必要はない。よって、第１のブロック１７０Ａ０に記憶されたタグ情報Ａ＿０は第１のブロック１７０Ａ０に記憶されたままにされる。
【００６３】
ステップ１４２の判定結果が肯定判定の場合は、第３のブロック１７０Ａ２でヒットが生じている。即ち、図７（Ｄ）に示すように、ＡＣＣＥＳＳプログラム実行部９４Ａは、第３のブロック１７０Ａ２に記録されたタグ情報Ａ＿２をｔｍｐに保持させる。また、ＡＣＣＥＳＳプログラム実行部９４Ａは次のように上書きする。即ち、第４のブロック１７０Ａ３に記録されたタグ情報Ａ＿３が第３のブロック１７０Ａ２に、ｔｍｐに保持された最新のデータが、第４のブロック１７０Ａ３に上書きされる。なお、第３のブロック１７０Ａ２に記憶されたタグ情報Ａ＿２は最新のタグ情報である。一方、第１のブロック１７０Ａ０及び第２のブロック１７０Ａ１に記憶されたタグ情報はそれぞれ、最も古いタグ情報、その次に古いタグ情報である。よって、第１のブロック１７０Ａ０及び第２のブロック１７０Ａ１に記憶されたタグ情報は書き換える必要はない。よって、第１のブロック１７０Ａ０及び第２のブロック１７０Ａ１に記憶されたタグ情報は第１のブロック１７０Ａ０及び第２のブロック１７０Ａ１に記憶されたままにされる。
【００６４】
なお、ステップ１４２の判定結果が否定判定の場合には、第４のブロック１７０Ａ３でヒットが生じている。第４のブロック１７０Ａ３と記憶されているタグ情報は、最新のタグ情報である。第１のブロック１７０Ａ０〜第４のブロック１７０Ａ３のタグ情報は古い順に並んでいるので、第１のブロック１７０Ａ０〜第４のブロック１７０Ａ３のタグ情報の書き換えは必要ない。よって、ステップ１４２の判定結果が否定判定の場合には、ブロックのタグ情報の書き換えは行われない。
ステップ１４４〜１５０の処理は、開示の技術の記憶ブロックを書き換える内容の一例である。
【００６５】
配列Ｘ、Ｙ、Ｚの各値は、変数ｉ、ｊで識別される。プロファイルデータ取得処理は、変数ｉが０〜Ｎ−１（＝Ｄ２）、及び変数ｊが０〜Ｎ−１（＝Ｄ２）についてステップ９２〜１０８の各処理が実行されることにより、終了する。
【００６６】
計算機１０ｓ０は、キャッシュセットｓ＝０用に、プロファイルデータ取得処理を実行する。計算機１０ｓ１は、キャッシュセットｓ＝１用に、プロファイルデータ取得処理を実行する。計算機１０ｓＮは、キャッシュセットｓ＝Ｎ用に、プロファイルデータ取得処理を実行する。従って、各計算機１０ｓ０〜１０ｓＮは、キャッシュセット毎のプロファイルデータを取得する。なお、各計算機１０ｓ０〜１０ｓＮは、並列して、プロファイルデータ取得処理を実行する。
【００６７】
以上のプロファイルデータ取得処理が終了すると、各計算機は、次の表示処理（ＤＵＭＰ）を実行する。即ち、各計算機は、自機に対応するキャッシュセットのプロファイルデータを取得できるので、ヒットの総数及びミスの総数を表示部３０に表示する。そして、例えば、計算機１０ｓ０に、その他の計算機１０ｓ１〜１０ｓＮで識別されたプロファイルデータを送信する。計算機１０ｓ０は、キャッシュセット毎にヒットの総数及びミスの総数を表示すると共に、全体のヒットの総数及びミスの総数を表示する。
【００６８】
次に、第１の実施の形態の効果を説明する。
【００６９】
第１に、プログラム変換プログラムが、プロファイルデータを取得したい元のプログラムを、キャッシュメモリのキャッシュセット毎に、プロファイルデータを取得するためのプロファイルデータ取得プログラムに変換する。よって、キャッシュメモリのキャッシュセット毎に、プロファイルデータを取得するためのプロファイルデータ取得プログラムを作成することができる。
【００７０】
第２に、キャッシュメモリのキャッシュセット毎のプロファイルデータ取得プログラムを実行するので、キャッシュメモリのキャッシュセット毎に、プロファイルデータを取得することができる。具体的には、キャッシュセット毎にミスの総数及びヒットの総数を取得することができる。なお、主メモリからデータを読み出す場合（図５のステップ９２〜１０２）ばかりでなく、主メモリにデータを書き込む場合（図５のステップ１０４〜１０８）にも、プロファイルデータを取得することができる。
【００７１】
第３に、キャッシュメモリのキャッシュセット毎のプロファイルデータ取得プログラムを各プロファイルデータ取得プログラムに対応する計算機が並列してプロファイルデータ取得処理を実行する。よって、例えば、１つの計算機で、キャッシュメモリのキャッシュセット毎のプロファイルデータ取得プログラムを順に実行する場合と比較すると、短時間にキャッシュセット毎のプロファイルデータを取得することができる。例えば、キャッシュセット数が１００個以上〜数千個以上の場合には、１００倍〜数千倍以上高速にキャッシュセット毎のプロファイルデータを取得することができる。
【００７２】
第４に、主メモリのメモリ領域のアドレス情報に基づくタグ情報がキャッシュセットの各ブロックのタグ情報と等しいか否かを判断するだけであるので、元のプログラムが計算するプログラムであっても、浮動小数点演算を必要としない。
【００７３】
第５に、プロファイルデータ取得処理は、具体的計算をすることなく単にプロファイルデータを取得するためだけの処理であるので、キャッシュセット毎のプロファイルデータを高速に取得することができる。
【００７４】
第６に、主メモリやキャッシュメモリへのアクセスを現実に行うものではなく、主メモリやキャッシュメモリへのアクセスをシミュレーションする。よって、主メモリやキャッシュメモリを用いる計算システム（実機）を用いずに、キャッシュセット毎のプロファイルデータを取得することができる。これにより、次の効果も得られる。即ち、実機を用いる場合には、当該実機のキャッシュメモリの構成（キャッシュセット数や、ブロック数）に限定されたプロファイルデータしか得られない。しかし、種々のキャッシュメモリの構成に対応して、計算機の数及び計算機のメモリ内のタグ記憶領域のブロックの数を変更すれば、種々のキャッシュメモリの構成のキャッシュセット毎のプロファイルデータを取得することができる。
【００７５】
次に、第１の実施の形態の変形例を説明する。
第１に、キャッシュメモリのキャッシュセット数分の計算機を使用することに限定されずに、例えば、次のようにしてもよい。１つの計算機で、キャッシュメモリのキャッシュセット毎のプロファイルデータ取得処理を実行してもよい。また、例えば、２つの計算機を用いて、一方の計算機で、セット番号が奇数のキャッシュセットのプロファイルデータ取得処理を実行し、他方の計算機で、セット番号が偶数のキャッシュセットのプロファイルデータ取得処理を実行してもよい。このような変形例が可能な理由は次の通りである。即ち、各キャッシュセットに対応する各プロファイルデータ取得プログラムは、キャッシュセット番号ｓで識別される。よって、あるキャッシュセットのプロファイルデータを取得したい場合には、当該キャッシュセット番号ｓにより識別されるプロファイルデータ取得プログラムのみが選択されることが可能である。選択されたプロファイルデータ取得プログラムを実行することにより、当該キャッシュセットのプロファイルデータを取得することができる。
【００７６】
第２に、種々の構成のキャッシュメモリのキャッシュセット毎のプロファイルデータを取得するようにしてもよい。即ち、キャッシュセット数を変えたり、各セットのブロック数を変えたり、これに応じて、計算機の数を変えたり、計算機のメモリ内のタグ記憶領域のブロック数を変えたり、してもよい。
【００７７】
第３に、ヒットの総数及びミスの総数の双方をカウントすることに限定されず、例えば、ヒットの総数及びミスの総数の何れか一方をカウントしてもよい。そして、図５のステップ９４の判定結果が肯定判定であった肯定判定回数を計数する。更に、例えば、ヒットの総数のみがカウントされた場合には、肯定判定回数からヒットの総数を減算して、ミスの総数を計算する。また、ミスの総数のみがカウントされた場合には、肯定判定回数からミスの総数を減算して、ヒットの総数を計算する。
【００７８】
第４に、タグ情報に代えて、アドレス自体を用いるようにしてもよい。また、主メモリにデータを読み出す場合や書き込む場合の各場合について、各場合に対応するヒット変数及びミス変数を更新してもよい。変数を１インクリメントしているが、予め定めた値からヒット又はミスに応じて１減算してもよい。
以上の変形例はすべて後述する他の全ての実施の形態にも適用される。
【００７９】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
第２の実施の形態の構成は、第１の実施の形態の構成と同様であるのでその説明を省略する。なお、第２の実施の形態では、データベース１２に、後述する条件判定の結果を保存したファイルが記憶されている点で第１の実施の形態の構成と相違する。
次に、第２の実施の形態の作用を説明する。第２の実施の形態の作用は、第１の実施の形態の作用とほぼ同様であるので、異なる部分のみ説明する。
【００８０】
第２の実施の形態では、データの値によって実行する内容が変化するプログラムを、プロファイルデータを取得したい元のプログラムＰ００２（図８（Ａ）参照）としている。この元のプログラムＰ００２による処理の一例は、図９にフローチャートで示されている。図８及び図３を比較して理解されるように、第２の実施の形態の元のプログラムＰ００２の処理の一例は、第１の実施の形態の元のプログラムＰ００１の処理の一例とほぼ同様であるので、異なる部分について説明する。即ち、第２の実施の形態の元のプログラムＰ００２の処理の一例では、実行部がステップ４２〜５４を実行した後、ステップ１５２で、実行部は、ｔ１がｔ２より小さいか否かを判断する。ステップ１５２の判定結果が肯定判定の場合、ステップ１５４で、実行部は、条件判定の結果である値０を、変数ｉ及び変数ｊで識別される配列Ｚに対応する主メモリのアドレスに記録する。このように、ステップ１５２の判断結果に応じて、値０を主メモリに記憶するかしないかのように、実行する内容が変化する。
【００８１】
このような元のプログラムＰ００２が第１の実施の形態のプログラム変換プログラム（図４）と同じプログラム変換プログラムによって変換されると、図８（Ｃ）に示すプロファイルデータ取得プログラムＰｉが生成される。以下、プログラム変換処理の一例を説明する。元のプログラムＰ００２（図８（Ａ））のソースコードＣ１、Ｃ２、Ｃ４、及びＣ５はそれぞれ、図２（Ａ）の元のプログラムＰ００１のソースコードＣ１、Ｃ２、Ｃ４、及びＣ５と同様である。よって、元のプログラムＰ００２（図８（Ａ））のソースコードＣ１、Ｃ２、Ｃ４、及びＣ５が変換される処理は、第１の実施の形態と同様であるので、その説明を省略する。なお、元のプログラムＰ００２（図８（Ａ））のソースコードＣ８はＹ１に分類されるので、プロファイルデータ取得プログラムＰｉには、そのコードＣ８が使用される。
【００８２】
次に、元のプログラムＰ００２（図８（Ａ））のソースコードＣ６の変換処理を説明する。ソースコードＣ６はＹ３に分類される。よって、まず、ステップ７０〜７１（図８（Ｂ）も参照）の処理により、ソースコードＣ６は次のように変換される。ソースコードＣ６における配列参照Ｒは、配列Ｘ及び配列Ｙに基づく。配列Ｘについて、ステップ７０の処理により、図８（Ｃ）のプログラム文Ｃ６−１（Ｘ）及びＣ６−２（Ｘ）が作成され、ステップ７１の処理により、プログラム文Ｃ６−３（Ｘ）が作成される。同様に、配列Ｙについて、ステップ７０の処理によりプログラム文Ｃ６−１（Ｙ）及びＣ６−２（Ｙ）が作成され、ステップ７１の処理によりプログラム文Ｃ６−３（Ｙ）が作成される。次に、ステップ７３（図８（Ｂ）も参照）の「条件判定結果をファイルから読み込む」というプログラム文の作成処理が実行されることにより、プログラム文Ｃ６−４１が作成される。ステップ７４の「条件を判定する」というプログラム文の作成処理が実行されることにより、プログラム文Ｃ６−４２が作成される。
【００８３】
なお、ソースコードＣ７（図８（Ａ））はＹ２に分類され、ステップ６６〜６８の処理により、プログラム文Ｃ７−１（Ｚ）〜Ｃ７−３（Ｚ）が作成される。
【００８４】
元のプログラムＰ００２（図８（Ａ））が上記のように変換されることにより得られたプロファイルデータ取得プログラムＰｉ（図８（Ｃ））のプロファイルデ―タ取得処理の一例は、図１０に示されている。当該処理の一例は、図５とほぼ同様であるので、異なる部分のみ説明する。即ち、ＡＣＣＥＳＳプログラム実行部９４Ａは、ステップ８２〜１０２を実行した後、ステップ１６０で、条件分岐の結果をファイルから読み込み、ｃに代入する。ステップ１６２で、ＡＣＣＥＳＳプログラム実行部９４Ａは、ｃが０でないか否か、即ち、Ｘの値（ｔ１）がＹの値（ｔ２）よりも小さいか否かを判断する。ｃが０でない場合、即ち、Ｘの値（ｔ１）がＹの値（ｔ２）よりも小さい場合には、プロファイルデータ取得処理は、ステップ１０４に進む。一方、ｃが０である場合、即ち、Ｘの値（ｔ１）がＹの値（ｔ２）よりも小さくない場合には、プロファイルデータ取得処理は、ステップ１０４〜１０８をスキップして、ステップ１１０に進む。
【００８５】
第２の実施の形態の効果として、元のプログラムがデータの値によって実行する内容が変化するプログラムであっても、第１の実施の形態と同様の効果が得られる。
【００８６】
［第３の実施の形態］
次に、第３の実施の形態を説明する。
第３の実施の形態の構成は、第１の実施の形態の構成とほぼ同様であるので、異なる部分のみ説明する。
第３の実施の形態では、複数段、例えば、２段のキャッシュを用いることを想定する点で第１の実施の形態及び第２の実施の形態と異なる。即ち、図１１に示すように、第３の実施の形態は、２段のキャッシュメモリ１７０（Ｌ１）、１７２（Ｌ２）を備えることを想定する。第１のキャッシュメモリ１７０のセットは４個であるのに対し、第２のセットは１６個である。従って、第３の実施の形態では、タグ記憶領域も複数段、即ち、２段となっている。よって、あるキャッシュセットに対応する計算機のメモリ３４には、１段のキャッシュセットに対応して１個の記憶領域が、２段のキャッシュセットに対応して４つの記憶領域が設けられている。
【００８７】
第１段のキャッシュメモリ１７０のセット番号と、第２段のキャッシュメモリ１７２のセット番号とは次の関係を有する。第２段のキャッシュメモリ１７２の各キャッシュセットには、当該キャッシュセットのセット番号を４（第１段のキャッシュメモリ１７０のセット数）で割った余りに対応するセット番号の第１段のキャッシュメモリ１７０のセットが対応する。例えば、第２段のキャッシュメモリ１７２のセット番号０は、０を４で割った余りは０であるので、第１段のキャッシュメモリ１７０のセット番号０のキャッシュセットに対応する。以下、同様に、第２段のキャッシュメモリ１７２のセット番号１、２、３は第１段目のキャッシュメモリ１７０のセット番号１、２、３に対応する。同様に、第２段のキャッシュメモリ１７２のセット番号４〜７、８〜１１、及び１２〜１５はそれぞれ、第１段目のキャッシュメモリ１７０のセット番号０〜３に対応する。よって、第２段のキャッシュメモリ１７２のキャッシュセットは、第１段のキャッシュメモリ１７０のキャッシュセットのセット番号０、１、２、３にそれぞれ対する４つのグループ、即ち、ｇ＝０グループ〜ｇ＝３グループに分けられる。
【００８８】
なお、第１段のキャッシュメモリ１７０及び第２段のキャッシュメモリ１７２の各々の連想数は４である。図１１に示すように、第１段のキャッシュメモリ１７０のキャッシュセットに対応するタグ記憶領域は、４つのブロック１７０Ａ０〜１７０Ａ３を有する。また、第２段のキャッシュメモリ１７２のキャッシュセットに対応する４個のタグ記憶領域の各々は、４つのブロック１７２Ａ００〜１７２Ａ３０を有する。
４つのブロック１７２Ａ００〜１７２Ａ３０の処理は、開示の技術の対応記憶部の一例である。
【００８９】
次に、第３の実施の形態の作用を説明する。なお、第３の実施の形態の作用は、第１の実施の形態の作用とほぼ同様なので、異なる部分のみ説明する。
第３の実施の形態におけるプロファイルデータを取得したい元のプログラムは、第１の実施の形態の元のプログラム（図２（Ａ）参照）と同じであるので、その説明を省略する。第３の実施の形態のプロファイルデータ取得プログラムも、第１の実施の形態のプログラムプロファイルデータ取得プログラム（図５及び図６参照）とほぼ同様であるので、異なる部分のみを説明する。第３の実施の形態のプロファイルデータ取得処理の一例は、図１２に示されているように、プロファイルデータ取得処理（図６）のステップ１３４の後に次の処理が実行される。即ち、ステップ１６４で、ＡＣＣＥＳＳプログラム実行部９４Ａは、主要メモリのアドレス（ａｄｄｒｅｓｓ）を用いて、第２段のキャッシュメモリ１７２（Ｌ２）についてヒット又はミスをカウントするカウント処理を実行する。
【００９０】
ステップ１６４の処理の一例は、具体的には、図１３に示されている。図１３のステップ１８０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、アドレスから第２段のキャッシュメモリ１７２のキャッシュセットのグループ番号ｇを求める。即ち、主メモリのアドレスに対応して、第１段のキャッシュメモリ１７０のセット番号が求められる。また、前述したように、第１段のキャッシュメモリ１７０の各セット番号には、第２段のキャッシュメモリ１７２のセット番号が対応している。そこで、本ステップ１８０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、次のようにして、第２段のキャッシュメモリ１７２のキャッシュセットのグループ番号ｇを求める。即ち、主メモリのアドレス、第１段のキャッシュメモリ１７０のキャッシュセット、及び第２段のキャッシュメモリ１７２のキャッシュセットの対応関係から当該グループ番号ｇを求める。
【００９１】
ステップ１８２で、ＡＣＣＥＳＳプログラム実行部９４Ａは、上記グループ番号ｇが、自装置がヒット又はミスのカウント処理を担当するグループｇ＝０か否かを判断する。ステップ１８２の判定結果が肯定判定の場合には、ステップ１８８で、ＡＣＣＥＳＳプログラム実行部９４Ａは、主メモリのアドレスでグループｇ＝０のキャッシュセットにおけるヒット又はミスのカウント処理を行う。一方、ステップ１８２の判定結果が否定判定の場合には、ステップ１８４で、ＡＣＣＥＳＳプログラム実行部９４Ａは、上記グループ番号ｇが、自装置が、ヒット又はミスのカウント処理を担当するグループｇ＝０１か否かを判断する。ステップ１８４の判定結果が肯定判定の場合には、ステップ１９０で、上記アドレスで、ｇ＝１グループのヒット又はミスのカウント処理を行う。
【００９２】
ステップ１８４の判定結果が否定判定の場合には、ステップ１８６で、ＡＣＣＥＳＳプログラム実行部９４Ａは、上記グループ番号ｇが、自装置がヒット又はミスのカウント処理を担当するグループｇ＝２か否かを判断する。ステップ１８６の判定結果が肯定判定の場合には、ステップ１９２で、ＡＣＣＥＳＳプログラム実行部９４Ａは、上記アドレスでｇ＝２グループのヒット又はミスのカウント処理をする。
【００９３】
ステップ１８６の判定結果が否定判定の場合には、上記グループ番号ｇは自装置がヒット又はミスのカウント処理を担当するグループｇ＝３である。よって、この場合には、ステップ１９４で、ＡＣＣＥＳＳプログラム実行部９４Ａは、上記アドレスで、グループｇ＝３のヒット又はミスのカウント処理を行う。
【００９４】
ここで、例えば、計算機１０ｓ０は、主メモリのアドレスでグループｇ＝０のキャッシュセットにおけるヒット又はミスのカウント処理を担当する。よって、計算機１０ｓ０では、ステップ１８２の判定結果が肯定判定となって、ステップ１８８の処理が行われる。
【００９５】
図１４（Ｂ）に示すように、第１段のキャッシュメモリ１７０のセット番号が０のキャッシュセットには、第２段のキャッシュメモリ１７２のｇ＝０グループのキャッシュセット０、４、８、１２が対応する。ステップ１８８の処理として、このキャッシュセット０、４、８、１２の各々について、次のカウント処理が実行される。以下では、キャッシュセット０を例にとり、カウント処理を説明する。なお、キャッシュセット０の第１のブロック１７２Ａ００〜第４のブロック１７２Ａ３０には、タグ情報Ａ＿０＿Ｌ２０〜Ａ＿３＿Ｌ２０が記憶されている。
【００９６】
ステップ１８８の処理がスタートすると、図１４（Ａ）におけるステップ２０２ｇ０で、変数ＨＩＴ＿Ｐ＿Ｌ２０を−１に初期化する。尚、変数ＨＩＴ＿Ｐ＿Ｌ２０は、第２段のキャッシュメモリ１７２のキャッシュセットｓのどのブロックでヒットしているか、及び全てのブロックでミスしているかを示す変数である。
【００９７】
ステップ２０４ｇ０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、上記アドレスからキャッシュメモリ１７２のタグ記憶領域に記憶するデータ情報（タグ情報）を求めてＡに代入する。
【００９８】
ステップ２０６ｇ０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、タグ情報Ａが、第２段目のキャッシュメモリ１７２における第１のブロック１７２Ａ００に記録されたタグ情報Ａ＿０＿Ｌ２０と等しいか否かを判断する。タグ情報Ａが当該タグ情報Ａ＿０＿Ｌ２０と等しい場合には、第１のブロック１７２Ａ００でヒットしている。そこで、ステップ２１４ｇ０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、第２段のキャッシュメモリ１７２においてヒットしている回数を示す変数ＨＩＴ＿Ｃ＿Ｌ２０を１インクリメントする。また、ＡＣＣＥＳＳプログラム実行部９４Ａは、変数ＨＩＴ＿Ｐ＿Ｌ２０に、第１のブロック１７２Ａ００でヒットしたことを示す「０」を代入する。
【００９９】
ステップ２０６ｇ０の判定結果が否定判定の場合には、ステップ２０８ｇ０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、タグ情報Ａが第２のブロック１７２Ａ１０に記憶されたタグ情報Ａ＿１＿Ｌ２０と等しいか否かを判断する。ステップ２０８ｇ０の判定結果が肯定判定の場合には、第２のブロック１７２Ａ１０でヒットしている。そこで、ステップ２１６ｇ０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、変数ＨＩＴ＿Ｃ＿Ｌ２０を１インクリメントし、変数ＨＩＴ＿Ｐ＿Ｌ２０に、第２のブロック１７２Ａ１０でヒットしていることを示す「１」を代入する。
【０１００】
ステップ２０８ｇ０の判定結果が否定判定の場合には、ステップ２１０ｇ０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、タグ情報Ａが第３のブロック１７２Ａ２０に記憶されたタグ情報Ａ＿２＿Ｌ２０と等しいか否かを判断する。ステップ２１０ｇ０の判定結果が肯定判定の場合には、第３のブロック１７２Ａ２０でヒットしている。そこで、ステップ２１８ｇ０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、変数ＨＩＴ＿Ｃ＿Ｌ２０を１インクリメントし、変数ＨＩＴ＿Ｐ＿Ｌ２０に、第３のブロック１７２Ａ２０でヒットしていることを示す「２」を代入する。
【０１０１】
ステップ２１０ｇ０の判定結果が否定判定の場合には、ステップ２１２ｇ０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、タグ情報Ａが第４のブロック１７２Ａ３０に記憶されたタグ情報Ａ＿３＿Ｌ２０と等しいか否かを判断する。ステップ２１２ｇ０の判定結果が肯定判定の場合には、第４のブロック１７２Ａ３０でヒットしている。そこで、ステップ２２０ｇ０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、変数ＨＩＴ＿Ｃ＿Ｌ２０を１インクリメントし、変数ＨＩＴ＿Ｐ＿Ｌ２０に、第４のブロック１７２Ａ３０でヒットしていることを示す「３」を代入する。
【０１０２】
ステップ２１２ｇ０の判定結果が否定判定の場合は、何れのブロック１７２Ａ００〜１７２Ａ３０においてもヒットしなかった場合である。よって、ステップ２２２ｇ０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、第２段のキャッシュメモリにおけるミスをカウントするための変数ＭＩＳＳ＿Ｃ＿Ｌ２０を１インクリメントする。
ステップ２０６ｇ０〜２１２ｇ０の処理は、開示の技術の記憶判断部の判断の一例である。ステップ２１４ｇ０〜２２２ｇ０の処理は、開示の技術の第３の処理の一例である。ステップ２２２ｇ０の処理は、開示の技術の第４の処理の一例である。
【０１０３】
なお、ステップ２２４ｇ０〜２３８ｇ０の処理は、第２段のキャッシュメモリの第１のブロック〜第４のブロックのタグ情報のＬＲＵに基づくタグ情報の書き換えである。ステップ２２４ｇ０〜２３８ｇ０の処理は、第２段のキャッシュメモリを対象にする点で、第１の実施の形態における図６のステップ１３６〜１５０と異なるが、その具体的処理は同様であるので、その説明を省略する。
【０１０４】
図１４（Ａ）に示した処理は、更にｇ＝０グループの他の３つのキャッシュセット４、８、１２の各々の各ブロックに対しても行われる。
【０１０５】
図１４（Ａ）に示すプログラムは、ｇ＝０グループに対するものである。本実施の形態では、他のグループとして、グループｇ＝１〜ｇ＝３がある。ｇ＝１グループに対して、図１５に示すカウント処理が別の計算機で実行される。ｇ＝２グループに対して図１６に示すカウント処理が更に別の計算機で実行される。ｇ＝３グループに対して図１７に示すカウント処理が更に別の計算機で実行される。
【０１０６】
ステップ１６４の処理、即ち、図１３の処理と図１４〜図１７のグループに応じた何れかの処理とが実行されると、プロファイルデータ取得処理は図１２のステップ１３６に移行される。
第２段のキャッシュメモリの全てのブロックでミスが生じた場合、ＨＩＴ＿Ｐは−１のままであるので、図１２のステップ１３６が肯定され、ステップ１４４で、第１段のキャッシュメモリのブロックのタグ情報の書き換えが行われる。
【０１０７】
以上のプロファイルデータ取得処理が終了すると、各計算機は、次の表示処理（ＤＵＭＰ）を実行する。即ち、各計算機は、自機に対応する第１段のキャッシュメモリのキャッシュセットにおけるヒットの総数（ＨＩＴ＿Ｃの最終値）及びミスの総数（ＭＩＳＳ＿Ｃの最終値）を表示部３０に表示する。また、各計算機は、自機に対応する、第２段のキャッシュメモリの各キャッシュセットにおけるヒットの総数（例えば、ＨＩＴ＿Ｃ＿Ｌ２０の最終値）及びミスの総数（例えば、ＭＩＳＳ＿Ｃ＿Ｌ２０の最終値）を表示する。
【０１０８】
そして、例えば、計算機１０ｓ０に、他の計算機１０ｓ１〜１０ｓＮのプロファイルデータを送信する。計算機１０ｓ０は、受信したプロファイルデータに基づいて、次のようにプロファイルデータを表示する。計算機１０ｓ０は、第１段のキャッシュメモリのキャッシュセット毎のヒットの総数及びミスの総数を一覧表示すると共に第２段のキャッシュメモリの各グループのヒットの総数及びミスの総数を一覧表示する。更に、計算機は、第２段のヒットの総数の総数及びミスの総数の総数と、第２段のキャッシュメモリの各グループのヒットの総数の総数及びミスの総数の総数とを表示する。
【０１０９】
なお、上記例では、第２段のキャッシュメモリの同じグループに属するキャッシュセット全体におけるヒットの総数及びミスの総数を求めている。しかし、第２段のキャッシュメモリの同じグループに属する各キャッシュセットのヒットの総数及びミスの総数を個別に求めて、表示してもよい。よって、上記一覧表示の際も、第２段のキャッシュメモリの同じグループに属する各キャッシュセットのヒットの総数及びミスの総数を個別に一覧表示してもよい。
【０１１０】
次に、第３の実施の形態の効果を説明する。
まず、第３の実施の形態は、第１の実施の形態の効果を有する。
【０１１１】
また、第３の実施の形態は、第１段のキャッシュメモリのキャッシュセット毎のプロファイルデータを取得することができる。また、第３の実施の形態は、第２段のキャッシュメモリの、第１段のキャッシュメモリのキャッシュセットに対応するヒット及びミスの回数を計数するので、第２段のキャッシュメモリのヒットの総数及びミスの総数を取得することができる。
【０１１２】
次に、第３の実施の形態の変形例を説明する。
変数ＨＩＴ＿Ｃ＿Ｌ２０及び変数ＭＩＳＳ＿Ｃ＿Ｌ２０の双方をインクリメントすることに限定されず、例えば、変数ＨＩＴ＿Ｃ＿Ｌ２０及び変数ＭＩＳＳ＿Ｃ＿Ｌ２０の何れか一方をカウントしてもよい。そして、例えば、変数ＨＩＴ＿Ｃ＿Ｌ２０のみインクリメントされた場合には、図１２のステップ１３４に基づく変数ＭＩＳＳ＿Ｃの最終値から、変数ＨＩＴ＿Ｃ＿Ｌ２０の最終値を減算して、変数ＭＩＳＳ＿Ｃ＿Ｌ２０の最終値を計算する。また、変数ＭＩＳＳ＿Ｃ＿Ｌ２０のみインクリメントされた場合には、図１２のステップ１３４に基づく変数ＭＩＳＳ＿Ｃの最終値から、変数ＭＩＳＳ＿Ｃ＿Ｌ２０の最終値を減算して変数ＨＩＴ＿Ｃ＿Ｌ２０の最終値を計算する。
【０１１３】
［第４の実施の形態］
次に、第４の実施の形態を説明する。
第４の実施の形態の構成は、第１の実施の形態の構成と同様であるので、その説明を省略する。
次に、第４の実施の形態の作用を説明する。第４の実施の形態は、各配列毎にヒットミスがカウントされて、プロファイルデータが取得される。
第４の実施の形態のプロファイルデータを取得したい元のプログラムは第１の実施の形態（図２（Ａ））と同じである。第４の実施の形態のプロファイルデータ取得プログラムも、第１の実施の形態のプロファイルデータ取得プログラム（図２（Ｃ）参照）とほぼ同様である。第４の実施の形態のプロファイルデータ取得処理の一例は、図１８及び図１９にフローチャートで示されている。図１８及び図１９に示されている処理は、第１の実施の形態のプロファイルデータ取得処理（図５と図６）とほぼ同様であるので、異なる部分のみを説明する。
【０１１４】
図１８のステップ９４の判定結果が肯定判定の場合には、ステップ２４０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、図１９に示すヒット又はミスをカウントするカウント処理を実行する。図１９に示すように、カウント処理は、第１の実施の形態のカウント処理（図６）とほぼ同様であるので、異なる部分のみを説明する。図１９におけるステップ１３４で変数ＭＩＳＳ＿Ｃが１インクリメントされた後、ステップ２５２で、ＡＣＣＥＳＳプログラム実行部９４Ａは、今回のミスが配列Ｘで生じたか否かを判断する。配列Ｘでミスが生じた場合には、ステップ２５４で、ＡＣＣＥＳＳプログラム実行部９４Ａは、配列Ｘでミスが生じた回数を示す変数Ｘ＿ＭＩＳＳを１インクリメントする。一方、配列Ｘでミスしていない場合には、ステップ２５２の判定結果は否定判定であるのでステップ２５４の処理がスキップされて、カウント処理はステップ２５６に進む。
【０１１５】
ステップ２５６で、ＡＣＣＥＳＳプログラム実行部９４Ａは、配列Ｙでミスが生じたか否かを判断する。配列Ｙでミスが生じたと判断した場合には、ステップ２５８で、ＡＣＣＥＳＳプログラム実行部９４Ａは、配列Ｙでミスした回数を示す変数Ｙ＿ＭＩＳＳを１インクリメントする。一方、配列Ｙでミスが生じていない場合には、ステップ２５６の判定結果は否定判定であるので、ステップ２５８の処理がスキップされて、カウント処理はステップ２６０に進む。
【０１１６】
ステップ２６０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、配列Ｚでミスが生じたか否かを判断する。配列Ｚでミスが生じた場合には、ステップ２６２で、ＡＣＣＥＳＳプログラム実行部９４Ａは、配列Ｚでミスが生じた回数を示す変数Ｚ＿ＭＩＳＳを１インクリメントする。配列Ｚでミスが生じていない場合には、ステップ２６０の判定結果は否定判定であるので、ステップ２６２の処理がスキップされ、カウント処理は、ステップ１３６に進む。
ステップ２５４、２５８、２６２の処理は、開示の技術の配列ミス変数を更新する内容の一例である。
【０１１７】
上記のようにステップ２４０（図１８）の処理が実行された後、前述したステップ９８及びステップ１００の各処理が実行され、カウント処理はステップ２４２に進む。ステップ２４２の処理は、ステップ２４０の処理と同様であるので、その説明を省略する。
【０１１８】
上記のようにステップ２４２の処理が実行された後、前述したステップ１０４及びステップ１０６の各処理が実行され、カウント処理はステップ２４４に進む。ステップ２４４の処理は、ステップ２４０の処理と同様であるので、その説明を省略する。
【０１１９】
ここで、図１８におけるステップ２４０、ステップ２４２、及びステップ２４４の各処理が同じであるのに、図１８で、ＡＣＣＥＳＳ（″Ｘ″、ｍ０）、ＡＣＣＥＳＳ（″Ｙ″、ｍ１）、及びＡＣＣＳＥＳＳ（″Ｚ″、ｍ２）と表記している理由は次の通りである。
【０１２０】
ステップ９２の処理により、ステップ２４０では、配列Ｘについてミスが判定される。また、ステップ９８の処理により、ステップ２４２では、配列Ｙについてミスが判定される。更に、ステップ１０４の処理により、ステップ２４４では配列Ｚについてミスが判定される。このように、ミスが生じた配列に応じて計数する点で異なるので、上記のように表記している。
【０１２１】
以上のようにプロファイルデータ取得処理が終了すると、各計算機は次のように表示処理（ＤＵＭＰ）を実行する。即ち、各計算機は、第１の実施の形態と同様にヒットの総数及びミスの総数を表示する。また、第４の実施の形態では、配列毎にミスの総数を取得するので、各計算機は、自機に対応するキャッシュセットにおける配列毎のミスの総数を表示する。更に、計算機１０ｓ０は、他の計算機１０ｓ１〜１０ｓＮから受信したプロファイルデータに基づいて、キャッシュメモリ全体での配列毎のミスの総数を表示する。
【０１２２】
次に第４の実施の形態の効果を説明する。
まず、第４の実施は、第１の実施の形態の効果を有する。
【０１２３】
更に、第４の実施の形態は、キャッシュセット毎において更に、配列毎にミスの回数を計数するので、配列毎にミスの総数を取得することができる。
【０１２４】
なお、各配列についてヒットの総数をカウントし、ミスの総数の表示と同様に表示してもよい。
【０１２５】
［第５の実施の形態］
次に、第５の実施の形態を説明する。
第５の実施の形態の構成は、第１の実施の形態の構成と同様であるので、その説明を省略する。なお、第５の実施の形態のデータベース１２には、例えば、配列Ｘにおいていくつか先のデータを読み出すプリフェッチ（ｐｒｅｆｅｔｃｈ）命令を配置する位置及びそのパラメータの情報が記憶されている。ここで、プリフェッチ命令を配置する位置としては、図２０（Ａ）における元のプログラムＰ００５に示すように、例えば、第３番目のデータソースの位置である。また、パラメータとしては、どの位先のデータを主メモリから読み出すのかを示す。例えば、６４個先のメモリ領域のデータである。
【０１２６】
第５の実施の形態では、実行部は、プリフェッチ命令をプログラムに挿入した場合のプリフェッチの効果を検証する。即ち、予め６４個先の主メモリのメモリ領域のデータを読み出してキャッシュメモリに記憶しておくことにより、プログラムの実行により、当該データを読み出す必要がある場合に、当該データをキャッシュメモリから読み出すことができるのかが検証される。
【０１２７】
プロファイルデータを取得したい元のプログラムＰ００５は、図２０（Ａ）に示すように、第１の実施の形態の元のプログラムＰ００１（図２（Ａ）参照）とほぼ同様であるので、異なる部分のみを説明する。元のプログラムＰ００５は、ソースコードＣ２とソースコードＣ３との間に、配列Ｘにおいて、変数ｉ及び変数ｊ＋６４に識別される主メモリのメモリ領域のデータを読み出すことを命令するソースコードＣ１０が配置されている。この点で、元のプログラムＰ００５は、第１の実施の形態の元のプログラムＰ００１と相違する。第５の実施の形態の元のプログラムＰ００５の加算処理の一例が図２１に示されている。第５の実施の形態の加算処理（図２１）は、第１の実施の形態の加算処理（図３）とは、第１の実施の形態の加算処理のステップ４８の判定結果が肯定判定の場合、ステップ５２の処理の前に、ステップ２７０の処理が実行される点で相違する。即ち、ステップ２７０で、実行部は、変数ｉ及び変数ｊ＋６４で識別される配列Ｘのアドレスの値を読み出す。
【０１２８】
元のプログラムＰ００５は、第１の実施の形態のプログラム変換プログラムと同じプログラム変換プログラムによって、変換される。元のプログラムＰ００５が変換されることにより得られたプログラムプロファイルデータ取得プログラムが図２０（Ｃ）に示されている。第５の実施の形態の元のプログラムＰ００５のソースコードＣ１、Ｃ２、Ｃ３、Ｃ４、及びＣ５は、第１の実施の形態の元のプログラムＰ００１のソースコードＣ１、Ｃ２、Ｃ３、Ｃ４、及びＣ５と同様である。よって、第１の実施の形態と同様に、図２０（Ｃ）に示すようにプログラム文Ｃ１、Ｃ２、Ｃ３−１（Ｘ）〜Ｃ３−３（Ｚ）、Ｃ４、及びＣ５が生成される。第５の実施の形態の元のプログラムＰ００５のソースコードＣ１０は、Ｙ４に分類されるので、ステップ７５（図２０（Ｂ）を参照）で、プログラム文Ｃ１０−１及びＣ１０−２が生成される。そしてステップ７６（図２０（Ｂ）を参照）でプログラム文Ｃ１０-３が生成される。
【０１２９】
第５の実施の形態のプロファイルデータ取得処理の一例が図２２及び図２３に示されている。図２２及び図２３に示すプロファイルデータ取得処理は、第１の実施の形態のプロファイルデータ取得処理の一例（図５及び図６）とほぼ同様であるので、異なる部分のみを説明する。ステップ８８の判定結果が肯定判定の場合には、ステップ２７２で、アドレス計算部９１Ａは、変数ｉ及びｊ＋６４で識別される配列Ｘの主メモリ上のメモリ領域のアドレスを求め、ｍｐに代入する。セット番号計算部９２Ａは、ｍｐに代入されたアドレスｍｐに対応するキャッシュメモリのキャッシュセット番号を求め、ｅｐに代入する。
【０１３０】
ステップ２７４で、セット番号判断部９３Ａは、キャッシュセット番号ｅｐが、プロファイルデータ取得処理が担当するキャッシュセットのセット番号ｓか否かを判断する。キャッシュセット番号ｅｐがｓである場合に、ステップ２７６で、ＡＣＣＥＳＳプログラム実行部９４Ａは、後述するヒット又はミスをカウントするカウント処理を実行する。ステップ２７６の処理の後、または、ステップ２７４の判定結果が否定判定の場合、プロファイルデータ取得処理はステップ９２に進む。ステップ９２の処理が実行され、ステップ９４の判定結果が肯定判定の場合には、ステップ２７８で、ＡＣＣＥＳＳプログラム実行部９４Ａは、変数ｉ及び変数ｊで識別される配列Ｘのヒット又はミスのカウント処理を実行する。なお、ステップ２７８の処理は、ステップ２７６の処理と同様である。
ステップ２７４の処理は、本開示の技術における非判定データについて予め判定を行うことの一例である。
【０１３１】
ステップ２７８の処理の後、プロファイルデータ取得処理はステップ９８に進む。ステップ１００の判定結果が肯定判定の場合、ステップ２８０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、変数ｊ及び変数ｉで識別される配列Ｙのヒット又はミスをカウントするカウント処理を実行する。ステップ２８０の処理は、ステップ２７６の処理と同様である。
【０１３２】
ステップ２８０の処理の後、プロファイルデータ取得処理はステップ１０４に進み、ステップ１０６の判定結果が肯定判定の場合、ＡＣＣＥＳＳプログラム実行部９４Ａは、ステップ２８２の処理を実行する。ステップ２８２の処理は、ステップ２７６の処理と同様である。
【０１３３】
ここで、図２２におけるステップ２７６、２７８、２８０、ステップ２８２の各処理が同じであるのに、図２２で、ＡＣＣＥＳＳ（ｍｐ、１）、ＡＣＣＥＳＳ（ｍ０、０）、ＡＣＣＥＳＳ（ｍ１、０）、及びＡＣＣＥＳＳ（ｍ２、０）と表記している。これは次の理由からである。
【０１３４】
ステップ２７２の処理により、プリフェッチされた配列Ｘについてヒット又はミスが判定される。ステップ９２の処理により、ステップ２７８では、配列Ｘについて、ヒット又はミスが判定される。また、ステップ９８の処理により、ステップ２８０では、配列Ｙについてヒット又はミスが判定される。更に、ステップ１０４の処理により、ステップ２８２では配列Ｚについてヒット又はミスが判定される。このように、プリフェッチされた配列Ｘ、配列Ｘ〜Ｚに応じてカウント処理を行うので、上記のように表示している。
【０１３５】
次に、図２３を参照して、第５の実施の形態のカウント処理を説明する。ステップ１２６の処理が実行されると、ＡＣＣＥＳＳプログラム実行部９４Ａは、ステップ３０２で、次の２つの条件が満足されているか否かを判断する。第１の条件は、今回のアクセスはプリフェッチ命令に基づくアクセスでない（ｐ＝０）という条件である。第２の条件は、今回ヒットしたタグ情報が、プリフェッチ命令に基づいてアクセスすることにより第１のブロック１７０Ａ０に記憶されたアドレス情報である（Ｐ＿０が０でない）という条件である。
【０１３６】
第１の条件及び第２の条件の双方が満足されている場合には、以前にプリフェッチすることにより第１のブロック１７０Ａ０に記録されたタグ情報で今回のアクセスでヒットが生じた場合である。この場合は、ステップ３０２が肯定され、カウント処理はステップ３１０に移行される。ステップ３１０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、プリフェッチ命令によって取得したデータでヒットしたことを示す変数Ｐ＿ＨＩＴ＿Ｃを１インクリメントする。なお、第１の条件及び第２の条件の少なくとも一方が満足されていないと判断された場合には、カウント処理はステップ３１０の処理をスキップする。ステップ３１０の処理が実行された後、または、ステップ３０２が否定判定の場合には、カウント処理はステップ１３６に移行される。
【０１３７】
ステップ１２８の処理が実行されると、ステップ３０４で、ＡＣＣＥＳＳプログラム実行部９４Ａは、次の２つの条件が満足されているか否かを判断する。第１の条件は、今回のアクセスは、プリフェッチ命令に基づくアクセスでない（ｐ＝０）という条件である。第２の条件は、今回ヒットしたタグ情報が、プリフェッチ命令に基づいてアクセスすることにより第２のブロック１７０Ａ１に記憶されたタグ情報である（Ｐ＿１が０でない）という条件である。
【０１３８】
第１の条件及び第２の条件の双方が満足されている場合には、ステップ３０４が肯定され、カウント処理はステップ３１２に移行される。ステップ３１２で、ＡＣＣＥＳＳプログラム実行部９４Ａは、プリフェッチ命令によって取得したデータでヒットしたことを示す変数Ｐ＿ＨＩＴ＿Ｃを１インクリメントする処理を実行する。なお、第１の条件及び第２の条件の少なくとも一方が満足されていないと判断された場合には、カウント処理はステップ３１２の処理をスキップする。ステップ３１２の処理が実行された後、または、ステップ３０４が否定判定の場合には、カウント処理はステップ１３６に移行される。
【０１３９】
ステップ１３０の処理が実行されると、ＡＣＣＥＳＳプログラム実行部９４Ａは、ステップ３０６で次の２つの条件が満足されているか否かを判断する。第１の条件は、今回のアクセスは、プリフェッチ命令に基づくアクセスでない（ｐ＝０）であるという条件である。第２の条件は、今回ヒットしたタグ情報が、プリフェッチ命令に基づいてアクセスすることにより、第３のブロック１７０Ａ２に記憶されたタグ情報である（Ｐ＿２が０でない）という条件である。
【０１４０】
第１の条件及び第２の条件の双方が満足されている場合には、ステップ３０６が肯定され、カウント処理はステップ３１４に移行される。ステップ３１４の処理は、ステップ３１０と同様である。なお、第１の条件及び第２の条件の少なくとも一方が満足されていないと判断された場合には、カウント処理はステップ３１４の処理をスキップする。ステップ３１４の処理が実行された後、または、ステップ３０６が否定判定の場合には、カウント処理はステップ１３６に移行される。
【０１４１】
ステップ１３２の処理が実行されると、ＡＣＣＥＳＳプログラム実行部９４Ａは、ステップ３０８で、次の２つの条件が満足されているか否かを判断する。第１の条件は、今回のアクセスは、プリフェッチ命令に基づくアクセスでない（ｐ＝０）であるという条件である。第２の条件は、今回ヒットしたアドレス情報が、プリフェッチ命令に基づいてアクセスすることにより第４のブロック１７０Ａ３に記憶されたアドレス情報である（Ｐ＿３が０でない）という条件である。
【０１４２】
第１の条件及び第２の条件の双方が満足されている場合には、ステップ３０８が肯定され、カウント処理はステップ３１６に移行される。ステップ３１６の処理は、ステップ３１０の処理と同様である。なお、第１の条件及び第２の条件の少なくとも一方が満足されていないと判断された場合には、カウント処理はステップ３１６の処理をスキップする。ステップ３１６の処理が実行された後、または、ステップ３０８が否定判定の場合には、カウント処理はステップ１３６に移行される。
ステップ３０２〜３０８の処理は、開示の技術のヒット判断部の判断の内容の一例である。ステップ３１０〜３１６の処理は、開示の技術の予め記憶ヒット変数を更新することの一例である。
【０１４３】
ステップ１３６で肯定判定がされると、ＡＣＣＥＳＳプログラム実行部９４Ａは、ステップ３１８で、第１の処理及び第２の処理を実行する。ここで、第１の処理は、ステップ１４４（図６参照）と同様である。即ち、図７（Ａ）に示すように、第２のブロック１７０Ａ１〜第４のブロック１７０Ａ３のタグ情報が第１のブロック１７０Ａ０〜第３のブロックＡ２のタグ情報に置き換えられる。また、今回アクセスして得たタグ情報が第４のブロック１７０Ａ３のタグ情報に置き換えられる。第２の処理は、各ブロックに記憶されたデータの書き換えにともなって、各ブロックに記憶されたタグ情報がプリフェッチ命令に基づいて取得されたのかを示す値ｐを書き換える処理である。第１のブロック１７０Ａ０〜第４のブロック１７０Ａ３には、タグ情報が記憶される。第５の実施の形態では、プリフェッチ命令に基づいて得られたタグ情報もタグ記憶領域に記憶する。そこで、第５の実施の形態では、タグ記憶領域に記憶されたタグ情報がプリフェッチ命令に基づいて得たデータか否かを表す値ｐが各ブロック１７０Ａ０〜１７０Ａ３に記憶されている。例えば、第１のブロック１７０Ａ０に記憶されたタグ情報がプリフェッチ命令に基づいて取得されたデータである場合には、第１のブロック１７０Ａ０には、次のデータが記憶されている。即ち、上記タグ情報の他に更にプリフェッチ命令に基づいて取得されたデータであることを示す１が記憶されている。なお、第１のブロック１７０Ａ０に記憶されたタグ情報がプリフェッチ命令に基づいて取得されたデータでない場合には、第１のブロック１７０Ａ０には、次のデータが記憶されている。即ち、上記タグ情報の他に更にプリフェッチ命令に基づいて取得されたデータでないことを示す０が記憶されている。第１の処理によって各ブロックのタグ情報の置き換えが行われた場合には、当該置き換え後の第１のブロック１７０Ａ０〜第４のブロック１７０Ａ３のタグ情報がプリフェッチ命令に基づいて取得されたものなのかを示す値ｐも置き換える必要がある。そこで、第２の処理として、ＡＣＣＥＳＳプログラム実行部９４Ａは、ブロックのタグ情報の置き換えにともなって、当該タグ情報がプリフェッチ命令に基づいて取得されたものなのかを示す値も置き換えられる。
【０１４４】
第１のブロック１７０Ａ０のタグ情報に置き換えられる第２のブロック１７０Ａ１のタグ情報がプリフェッチ命令に基づいて取得されたものなのかは、Ｐ＿１で示される。第２のブロック１７０Ａ１のタグ情報が第１のブロック１７０Ａ０のタグ情報に置き換えられる。よって、実行部は、第２の処理として第１のブロック１７０Ａ０のタグ情報がプリフェッチ命令に基づいて取得されたものなのかを示すＰ＿１の値をＰ＿０の代わりに置き換える。
【０１４５】
以下、同様に、Ｐ＿２及びＰ＿３がＰ＿１及びＰ＿２の代わりに置き換えられ、今回アクセスして得たアドレス情報がプリフェッチ命令に基づくアドレス情報か否かを表す値ｐが、Ｐ＿３の代わりに置き換えられる。
ステップ３１８の処理は、開示の技術の非判定データに対応するアドレス情報を記憶部に予め記憶させる内容の一例である。
【０１４６】
ステップ１３８の判定結果が肯定判定の場合、ステップ３２０で、ＡＣＣＥＳＳプログラム実行部９４Ａは、第３の処理及び第４の処理を実行する。第３の処理として、ステップ１４６の処理（図６参照）が実行される。第４の処理として、第３の処理による各ブロック１７０Ａ０〜１７０Ａ３のタグ情報の書き換えに伴って、ＡＣＣＥＳＳプログラム実行部９４Ａは次のように置き換えを行う。即ち、第２のブロック１７０Ａ１〜第４のブロック１７０Ａ３における値Ｐ＿１〜Ｐ＿３のそれぞれが第１のブロック１７０Ａ０〜第３ブロック１７０Ａ２の値Ｐ＿０〜Ｐ＿２の代わりに置き換えられる。また、今回取得したデータに対応する値ｐが第４のブロック１７０Ａ３の値Ｐ＿３に置き換えられる。
【０１４７】
ステップ１４０の判定結果が肯定判定の場合、ステップ３２２で、第５の処理及び第６の処理が実行される。第５の処理として、ステップ１４８の処理（図６参照）が実行される。第６の処理として、第５の処理による第２のブロック１７０Ａ１〜第４のブロック１７０Ａ３のデータの書き換えに伴って、ＡＣＣＥＳＳプログラム実行部９４Ａは、次のように置き換えを行う。即ち、第３のブロック１７０Ａ２及び第４のブロック１７０Ａ３における値Ｐ＿２及び値Ｐ＿３のそれぞれが第２のブロック１７０Ａ１及び第３のブロック１７０Ａ２の値Ｐ＿１及び値Ｐ＿２の代わりに置き換えられる。また、今回取得したアドレス情報に対応する値ｐが第４のブロック１７０Ａ３の値Ｐ＿３の代わりに置き換えられる。
【０１４８】
ステップ１４２の判定結果が肯定判定の場合、ステップ３２４で、第７の処理及び第８の処理が実行される。第７の処理として、ステップ１５０の処理（図６参照）が実行される。第８の処理として、第７の処理による第４ブロック１７０Ａ３のアドレス情報の書き換えに伴って、ＡＣＣＥＳＳプログラム実行部９４Ａは、次のように置き換えを行う。即ち、第４のブロック１７０Ａ３における値Ｐ＿３が第３のブロック１７０Ａ２の値Ｐ＿２の代わりに置き換えられる。また、今回取得したデータに対応する値ｐが第４のブロック１７０Ａ３の値Ｐ＿３の代わりに置き換えられる。ステップ１４２の判定結果が否定判定の場合、ＨＩＴ＿Ｐ＝３である。この場合、ステップ３２６で、今回取得したデータに対応する値ｐが第４のブロック１７０Ａ３の値Ｐ＿３に置き換えられる。
【０１４９】
以上のプロファイルデータ取得処理が終了すると、各計算機は、次の表示処理（ＤＵＭＰ）を実行する。即ち、各計算機は、自機に対応するキャッシュセットのヒットの総数（ＨＩＴ＿Ｃの最終値）、ミスの総数（ＭＩＳＳ＿Ｃの最終値）、及びプリフェッチによってヒットが生じた総数（Ｐ＿ＨＩＴ＿Ｃの最終値）を表示する。
【０１５０】
また、例えば、計算機１０ｓ０に、他の計算機１０ｓ１〜１０ｓＮのプロファイルデータを送信する。計算機１０ｓ０は、受信したプロファイルデータに基づいて、キャッシュセット毎のヒットの総数、ミスの総数、及びプリフェッチによってヒットが生じた総数を一覧表示する。
【０１５１】
次に、第５の実施の形態の効果を説明する。
まず、第５の実施の形態は、第１の実施の形態の効果を有する。
また、第５の実施の形態は、プリフェッチによって、ヒットが生じた総数をキャッシュセット毎に取得するので、プリフェッチ命令を配置する位置やパラメータを指定した結果、ヒットの総数が向上したのか等のプリフェッチの検証をすることができる。
【０１５２】
なお、上記例では、配列Ｘについて、６４個先のメモリ領域のデータをプリフェッチしているが、他の配列、例えば、配列Ｙについて、例えば、５０個先、１００個先のメモリ領域のデータをプリフェッチしてもよい。
【０１５３】
［第６の実施の形態］
次に、第６の実施の形態を説明する。
第６の実施の形態は、第１の実施の形態とほぼ同様であるので、図２４を参照して、異なる部分のみ説明する。第６の実施の形態では、各計算機１０ｓ０〜１０ｓＮを管理する管理装置６００がネットワーク１４を介して各計算機１０ｓ０〜１０ｓＮに接続されている。管理装置６００の構成は各計算機１０ｓ０〜１０ｓＮと同様である。
なお、第６の実施の形態のシステムは、開示の技術のプログラム変更検証システムの一例である。管理装置６００は、開示の技術の管理装置の一例である。
【０１５４】
図２５（Ａ）に示すように、プリフェッチ検証プログラムは、プロファイルデータ取得部３３１Ａ、計算部３３３Ａ、集合生成部３３５Ａ、プログラム作成部３３７Ａ、第１の判断部３３９Ａ、第２の判断部３４１Ａ、及び候補絞り込み部３４３Ａを有する。また、図２５（Ｂ）に示すように、プリフェッチ検証処理は、プロファイルデータ取得プロセス３３１Ｂ、計算プロセス３３３Ｂ、集合生成プロセス３３５Ｂを有する。また、プリフェッチ検証処理は、プログラム作成プロセス３３７Ｂ、第１の判断プロセス３３９Ｂ、第２の判断プロセス３４１Ｂ、及び候補絞り込みプロセス３４３Ｂを有する。なお、ＣＰＵ２２が、上記プロセス３３１Ｂ〜３４３Ｂの各々を実行することにより、図２５（Ａ）の上記各部３３１Ａ〜３４３Ａとして動作する。
【０１５５】
次に、第６の実施の形態の作用を、プリフェッチ検証処理の一例を示す図２６を参照して説明する。
ステップ３３０で、管理装置は各計算機１０ｓ０〜１０ｓＮに指示することにより、前述した第１の実施の形態〜第４の実施の形態の何れかにおけるプロファイルデータ取得処理を実行させることにより、プロファイルデータを取得する。ステップ３３２で、計算部３３３Ａは、取得したプロファイルデータに基づいて、キャッシュメモリのキャッシュセットの全体のキャッシュミスの総数Ｓの計算をする。ステップ３３４で、集合生成部３３５Ａは、取得したプロファイルデータに基づいて、キャッシュミスが頻繁に、例えば３０パーセント（その他、３５パーセント、４０パーセントでもよい）以上発生しているキャッシュセットの集合Ｐを生成する。ステップ３３６で、計算部３３３Ａは、取得したプロファイルデータに基づいて、集合Ｐにおけるキャッシュミスの総数Ｍｐを計算する。
【０１５６】
ステップ３３８で、集合生成部３３５Ａは、元のプログラムにプリフェッチ命令を挿入する位置とプリフェッチするアドレスのパラメータの候補の集合Ｃを生成する。ステップ３４０で、プログラム作成部３３７Ａは、最良のプリフェッチ命令の使用方法を示す変数Ｒを０に初期化する。ステップ３４２で、プログラム作成部３３７Ａは、集合ｃ中の候補を識別する変数ｃを０に初期化する。ステップ３４４で、プログラム作成部３３７Ａは、変数ｃを１インクリメントする。実行部は、ステップ３４６で、プログラム作成部３３７Ａは、変数ｃで識別される候補ｃに従って、プリフェッチ命令を元のプログラムに挿入する。ステップ３４８で、プログラム作成部３３７Ａは、プリフェッチ命令が挿入されたプログラムを、第１の実施の形態におけるプログラム変換プログラムと同様のプログラムにより、プロファイルデータ取得プログラムに変換する。
【０１５７】
ステップ３５０で、プロファイルデータ取得部３３１Ａは、集合Ｐに属するキャッシュセットに対応する計算機に対して、当該計算機に対応するプロファイルデータ取得プログラムを実行させる。これにより、集合Ｐに属するキャッシュセットのプロファイルデータが取得される。ステップ３５２で、計算部３３３Ａは、集合Ｐに属するキャッシュセットのキャッシュミスの総数Ｎｐを計算する。ステップ３５４で、第１の判断部３３９Ａは、総数Ｎｐが総数Ｍｐ以上か否かを判断する。総数Ｎｐが総数Ｍｐ以上の場合には、候補ｃではプリフェッチ命令を挿入したことによるキャッシュミスの回数の削減を期待できない。この場合、ステップ３５４の判定結果は肯定判定であり、次の候補を試すために、改善処理は、ステップ３６４に進む。一方、総数Ｎｐが総数Ｍｐより小さい場合は、プリフェッチ命令を挿入したことによるキャッシュミスの回数の削減を期待できる。この場合は、改善処理は、ステップ３５６に進む。
【０１５８】
ステップ３５６で、プロファイルデータ取得部３３１Ａは、集合Ｐ以外のキャッシュセットに対応する計算機に対して、当該計算機に対応するプロファイルデータ取得プログラムを実行させる。これにより、集合Ｐ以外のキャッシュセットのプロファイルデータが取得される。
【０１５９】
ステップ３５８で、計算部３３３Ａは、キャッシュメモリのキャッシュセットの全体のキャッシュミスの総数Ｓｃを計算する。
【０１６０】
ステップ３６０で、第２の判断部３４１Ａは、総数Ｓｃが総数Ｓ以上か否かを判断する。総数Ｓｃが総数Ｓ以上の場合には、プリフェッチ命令を挿入してもキャッシュミスの回数が減らないことを意味する。この場合は、ステップ３６０の判定結果が肯定判定であり、次の候補を試すため、改善処理はステップ３６４に進む。一方、総数Ｓｃが総数Ｓより小さい場合は、キャッシュ操作命令を挿入したことによりキャッシュミスの回数が減ることを意味する。この場合は、ステップ３５８の判定結果は、否定判定であり、改善処理はステップ３６２に進む。
【０１６１】
ステップ３６２で、候補絞り込み部３４３Ａは、変数Ｒに候補ｃを代入し、総数Ｍｐに総数Ｎｐを代入し、総数Ｓに総数Ｓｃを代入する。ステップ３６４で、候補絞り込み部３４３Ａは、候補の数ｃが、候補の総数Ｃ１と等しいか否かを判断する。候補の数ｃが候補の総数Ｃ１と等しくない場合は、ミスが改善する可能性のある候補が存在するので、改善処理はステップ３４４に戻り、以上の処理（ステップ３４４〜３６４）が実行される。候補の数ｃが候補の総数Ｃ１と等しい場合には、ヒットミスが改善する可能性のある候補が存在しないので、改善処理は終了する。
ステップ３３４、３３６、３４６、３４８、３５０、３５２、３５４は、開示の技術の管理装置の行う内容の一例である。
【０１６２】
次に、第６の実施の形態の効果を説明する。
第６の実施の形態では、プリフェッチ命令の挿入する位置及びパラメータを種々変えて各々の場合のプロファイルデータを、上記第１〜第４の実施の形態の何れかの方法で、取得している。従って、どの位置にどのくらいのパラメータでプリフェッチ命令を挿入するとミスが改善するのかを検証することができる。よって、プリフェッチ命令の挿入する位置及びパラメータの候補が多数存在しても、候補のしぼり込みにかかる時間を大幅に短縮することができる。
【０１６３】
上記例では、キャッシュミスが頻繁に発生しているキャッシュセットの場合についてだけプロファイルデータを取得し（ステップ３５０）、ミスが改善しているのか検証（ステップ３５４）している。この段階でミスが改善していると検証された場合には、ステップ３５６〜３６０をスキップして、改善処理がステップ３６２に移行するようにしてもよい。このようにステップ３５６〜３６０をスキップするので候補のしぼり込みにかかる時間をより短縮することができる。
【０１６４】
本明細書に記載された全ての文献、特許出願及び技術規格は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
【０１６５】
以上の実施形態に関し、更に以下の付記を開示する。
【０１６６】
（付記１）
記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータの各データを判定対象データとして、当該判定対象データに対応するキャッシュセットが、予め選択されたキャッシュセットであるか否かを判定する判定部と、
前記予め選択されたキャッシュセットに対応して設けられ、当該選択されたキャッシュセットに対応するメモリ領域のアドレス情報を記憶する記憶部と、
前記判定部により前記対応するキャッシュセットが前記予め選択されたキャッシュセットであると判定された場合、（１）前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていることを示すヒット、及び、（２）前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていないことを示すミス、の何れが生じたかを判断する判断部と、
前記判断部によりミスが生じたと判断された場合に、ミスの回数を示すミス変数を更新しかつ前記記憶部に前記アドレス情報を記憶させる第１の処理、及び、前記ヒットが生じたと判断された場合に、ヒットの回数を示すヒット変数を更新する第２の処理の少なくとも一方を行う処理部と、
を備えた変数更新装置。
【０１６７】
（付記２）
前記複数のデータは、少なくとも１つの配列のデータである、付記１に記載の変数更新装置。
【０１６８】
（付記３）
前記キャッシュセットは複数のブロックを有し、
前記記憶部は、前記複数のブロックに対応する複数の記憶ブロックを有し、
前記処理部は、前記判定対象データに対応する前記メモリ領域のアドレス情報を含めて、前記記憶ブロックの個数分のアドレス情報が古い順に記憶されるように、前記複数の記憶ブロックを書き換える
付記１に記載の変数更新装置。
【０１６９】
（付記４）
前記複数のデータは、複数の配列のデータであり、
前記判定部は、前記複数の配列各々の各データを前記判定対象データとして、前記判定を行う付記１〜付記３の何れか１項に記載の変数更新装置。
【０１７０】
（付記５）
前記判定部は、前記複数の配列の内の１つの配列の判定対象データの値が他の配列の判定対象データの値より大きい場合に、更に他の配列の前記判定対象データについて前記判定をする付記４に記載の変数更新装置。
【０１７１】
（付記６）
各々が前記記憶部に対応して設けられかつ前記アドレス情報を記憶する複数の対応記憶部を更に備え、
前記ミスが生じたと判断された場合に、前記複数の対応記憶部の何れかに、前記アドレス情報が記憶されているか否かを判断する記憶判断部を更に備え、
前記処理部は、前記記憶判断部により、前記複数の対応記憶部の何れかに前記アドレス情報が記憶されていると判断された場合に、当該判断がされた回数を示す対応ヒット変数を更新する第３の処理、及び、前記複数の対応記憶部の全てに前記アドレス情報が記憶されていないと判断された場合に、当該判断がされた回数を示す対応ミス変数を更新する第４の処理の少なくとも一方を行う
付記２〜付記５の何れか１項に記載の変数更新装置。
【０１７２】
（付記７）
前記複数の配列の各々に対応して、ヒットの回数を示す配列ヒット変数と、ミスの回数を示す配列ミス変数とが定められ、
前記処理部は、前記複数の配列の何れかでヒットが生じた場合、当該配列に対応する配列ヒット変数を更新し、前記複数の配列の何れかでミスが生じた場合、当該配列に対応する配列ミス変数を更新する
付記４〜付記６の何れか１項に記載の変数更新装置。
【０１７３】
（付記８）
前記判定部は、前記複数の配列各々の各データについて所定の順番に前記判定をすると共に、前記複数の配列の内の選択された配列について、前記順番では前記判定されない各非判定データについて予め前記判定を行い、
前記処理部は、前記選択された配列について、前記ミスが生じた場合、前記非判定データデータに対応する前記アドレス情報を前記記憶部に予め記憶させる、
付記４〜付記７の何れか１項に記載の変数更新装置。
【０１７４】
（付記９）
前記ヒットが生じたと判断された場合、前記記憶部に予め記憶されかつ前記非判定データに対応する前記アドレス情報に基づいて前記ヒットが生じたか否かを判断するヒット判断部を更に備え、
前記記憶部に予め記憶されかつ前記非判定データに対応する前記アドレス情報に基づいて前記ヒットが生じた回数を示す予め記憶ヒット変数が定められ、
前記処理部は、前記ヒット判断部により前記非判定データに対応する前記アドレス情報に基づいて前記ヒットが生じたと判断された場合に、前記予め記憶ヒット変数を更新する
付記８に記載の変数更新装置。
【０１７５】
（付記１０）
前記ミス変数の値を表示する表示部を更に備えた付記１〜付記９に記載の変数更新装置。
【０１７６】
（付記１１）
前記キャッシュセットの個数分の付記１〜付記１０の何れか１項に記載の複数の変数更新装置を備え、
前記複数の変数更新装置の各々は、各キャッシュセットに対応して設けられ、
前記複数の変数更新装置の各々の前記判定部は、自装置に対応するキャッシュセットを前記予め選択されたキャッシュセットとして前記判定を行い、
前記複数の変数更新装置の各々の前記判定部が前記判定を行う少なくとも一部の期間が重なる
変数更新システム。
【０１７７】
（付記１２）
記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータの各データを判定対象データとして、当該判定対象データに対応するキャッシュセットが、予め選択されたキャッシュセットであるか否かを判定し、
前記対応するキャッシュセットが前記予め選択されたキャッシュセットであると判定された場合、（１）前記判定対象データに対応する前記メモリ領域のアドレス情報が、前記予め選択されたキャッシュセットに対応して設けられた記憶部に記憶されていることを示すヒット、及び、（２）前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていないことを示すミス、の何れが生じたかを判断し、
前記判断部によりミスが生じたと判断された場合に、ミスの回数を示すミス変数を更新しかつ前記記憶部に前記アドレス情報を記憶させる第１の処理、及び、前記ヒットが生じたと判断された場合に、ヒットの回数を示すヒット変数を更新する第２の処理の少なくとも一方を行う
ことを含む変数更新方法。
【０１７８】
（付記１３）
コンピュータに、
記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータの各データを判定対象データとして、当該判定対象データに対応するキャッシュセットが、予め選択されたキャッシュセットであるか否かを判定し、
前記対応するキャッシュセットが前記予め選択されたキャッシュセットであると判定された場合、（１）前記判定対象データに対応する前記メモリ領域のアドレス情報が、前記予め選択されたキャッシュセットに対応して設けられた記憶部に記憶されていることを示すヒット、及び、（２）前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていないことを示すミス、の何れが生じたかを判断し、
前記判断部によりミスが生じたと判断された場合に、ミスの回数を示すミス変数を更新しかつ前記記憶部に前記アドレス情報を記憶させる第１の処理、及び、前記ヒットが生じたと判断された場合に、ヒットの回数を示すヒット変数を更新する第２の処理の少なくとも一方を行う
ことを含む処理を実行させるための変数更新プログラム。
【０１７９】
（付記１４）
前記複数のデータは、複数の配列のデータであり、
前記コンピュータに、
前記複数の配列各々の各データについて所定の順番に前記判定をすると共に、前記複数の配列の内の選択された配列について、前記順番では前記判定されない各非判定データについて予め前記判定を行い、
前記選択された配列について、前記ミスが生じた場合、前記非判定データに対応する前記アドレス情報を前記記憶部に予め記憶させる
ことを含む処理を更に実行させるための付記１３に記載の変数更新プログラム。
【０１８０】
（付記１５）
コンピュータに、
記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータを用いる元のプログラムを、付記１３に記載の変数更新プログラムに変換することを含む処理を実行させるための変換プログラム。
【０１８１】
（付記１６）
コンピュータに、
記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータを用いる元のプログラムを、付記１４に記載の変数更新プログラムに変換することを含む処理を実行させるための変換プログラム。
【０１８２】
（付記１７）
キャッシュセットの個数分設けられた付記１〜付記７の何れか１項に記載の複数の変数更新装置であって、前記複数の変数更新装置各々は、各キャッシュセットに対応して設けられ、前記複数の変数更新装置各々の前記判定部は、自装置に対応するキャッシュセットを前記予め選択されたキャッシュセットとして前記判定をする、前記複数の変数更新装置と、
前記複数の変数更新装置各々により得られたミス変数又はヒット変数の値に基づいて、前記ミスが所定の割合以上生じているキャッシュセットを検出し、
前記検出された前記キャッシュセットに対応する前記ミス変数の第１の総数を計算し、
どのくらい先のデータを前記記憶部に予め記憶するかを定める各々異なる複数の候補の内の選択された候補について、当該候補に基づく前記先のデータについて予め前記判定がされるように、前記複数のデータに対応する元のプログラムを変更し、
前記変更されたプログラムを、付記１６に記載の変換プログラムにより変数更新プログラムに変換し、
前記検出されたキャッシュセットに対応する前記変数更新装置に対し、前記変換により得られた前記変数更新プログラムを実行させて、前記ヒット変数及び前記ミス変数の少なくとも一方の値を取得し、
前記取得された前記値の第２の総数を計算し、
前記計算された前記第２の総数が前記計算された前記第１の総数以上か否かを判断し、
前記第２の総数が前記第１の総数以上かであると判断された場合には、前記複数の候補の内の前記選択された候補とは異なる別の候補について、前記変更を行う管理装置と、
を備えたプログラム変更検証システム。
【符号の説明】
【０１８３】
１０ｓ０、１０ｓ１・・・１０ｓＮ  計算機
６１Ａ  集合作成部
６２Ａ  ソースコード分類部
６３Ａ  プログラム文作成部
９１Ａ  アドレス計算部
９２Ａ  セット番号計算部
９３Ａ  セット番号判断部
９４Ａ  ＡＣＣＥＳＳプログラム実行部
【図１】
2014232369.tif 000003
【図２】
2014232369.tif 000004
【図３】
2014232369.tif 000005
【図４】
2014232369.tif 000006
【図５】
2014232369.tif 000007
【図６】
2014232369.tif 000008
【図７】
2014232369.tif 000009
【図８】
2014232369.tif 000010
【図９】
2014232369.tif 000011
【図１０】
2014232369.tif 000012
【図１１】
2014232369.tif 000013
【図１２】
2014232369.tif 000014
【図１３】
2014232369.tif 000015
【図１４】
2014232369.tif 000016
【図１５】
2014232369.tif 000017
【図１６】
2014232369.tif 000018
【図１７】
2014232369.tif 000019
【図１８】
2014232369.tif 000020
【図１９】
2014232369.tif 000021
【図２０】
2014232369.tif 000022
【図２１】
2014232369.tif 000023
【図２２】
2014232369.tif 000024
【図２３】
2014232369.tif 000025
【図２４】
2014232369.tif 000026
【図２５】
2014232369.tif 000027
【図２６】
2014232369.tif 000028
【図２７】
2014232369.tif 000029
【図２８】
2014232369.tif 000030
【図２９】
2014232369.tif 000031
【図３０】
2014232369.tif 000032