(57)【要約】  情報処理システム（１）のキャッシュ（２０）は、プリフェッチされたデータがアクセスされたか否かを示す利用情報と、プリフェッチする原因となった命令を一意に識別する命令識別子とを対応付けて格納する利用情報格納部（２０ａ）を備える。このような構成のもと、情報処理システム（１）は、プリフェッチされたデータの利用情報を利用情報格納部（２０ａ）に書き込む。そして、情報処理システム（１）は、ＣＰＵ（１０）からプリフェッチされたデータに対してアクセスが行われた場合には、利用情報をセットする。その後、情報処理システム（１）は、キャッシュ（２０）のデータが破棄される際に、破棄されるデータの利用情報を利用情報格納部（２０ａ）から読み出す。具体的には、情報処理システム（１）は、利用情報格納部（２０ａ）から利用情報を読み出し、利用されたか否かを判別してプリフェッチミスを検出する。
2008093399.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理システムであって、
前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納する利用情報格納手段と、
前記プリフェッチされたデータの利用情報を前記利用情報格納手段に書き込む利用情報書込手段と、
を備えることを特徴とする情報処理システム。
【請求項２】
前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータの利用情報を前記利用情報格納手段から読み出す利用情報読出手段をさらに備えることを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記利用情報読出手段によって読み出された利用情報を用いて、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数をカウンタに計上する計上手段をさらに備えることを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記計上手段によって計上された前記プリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数に変換する変換手段をさらに備えることを特徴とする請求項３に記載の情報処理システム。
【請求項５】
前記計上手段によって計上された前記プリフェッチミス回数が所定の閾値を超えたことをプログラムに通知する通知手段をさらに備えることを特徴とする請求項３に記載の情報処理システム。
【請求項６】
前記利用情報格納手段は、プリフェッチする原因となった命令を一意に識別する命令識別子に、当該命令によってプリフェッチされたデータの利用情報を対応付けて格納し、
前記利用情報書込手段は、データを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段に書き込むことを特徴とする請求項１に記載の情報処理システム。
【請求項７】
前記命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を当該命令の命令識別子ごとに格納するプリフェッチ成功履歴格納手段と、
前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報を用いて、前記プリフェッチ成功履歴情報を書き込む成功履歴書込手段とをさらに備えることを特徴とする請求項６に記載の情報処理システム。
【請求項８】
前記プリフェッチ成功履歴格納手段に格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出する命令検出手段と、
前記命令検出手段によって検出された前記命令識別子の命令により実施されるプリフェッチを無効化するプリフェッチ無効化手段とをさらに備えたことを特徴とする請求項７に記載の情報処理システム。
【請求項９】
前記利用情報格納手段は、前記ＣＰＵ上で実行される命令のアドレスに応じて振り分けられたグループを一意に特定するグループ識別子に、当該命令によってプリフェッチされたデータの利用情報を対応付けて格納し、
前記利用情報書込手段は、データを前記キャッシュ領域に格納する原因となった命令のグループ識別子に対応する前記利用情報を前記利用情報格納手段に書き込むことを特徴とする請求項１に記載の情報処理システム。
【請求項１０】
前記命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を前記グループ識別子ごとに格納するグループ成功履歴格納手段と、
前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令が振り分けられた前記グループ識別子の利用情報を前記利用情報格納手段から読み出し、当該利用情報を用いて、前記プリフェッチ成功履歴情報を書き込むグループ履歴書込手段とをさらに備えることを特徴とする請求項９に記載の情報処理システム。
【請求項１１】
前記プリフェッチ成功履歴格納手段に格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下のグループ識別子を検出するグループ識別子検出手段と、
前記グループ識別子検出手段によって検出された前記グループ識別子の命令により実施されるプリフェッチを無効化するグループ無効化手段とをさらに備えたことを特徴とする請求項１０に記載の情報処理システム。
【請求項１２】
プリフェッチの成否により遷移される遷移情報を前記命令識別子ごとに格納する遷移情報格納手段と、
前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報に応じて、前記遷移情報格納手段に格納された前記遷移情報を遷移する遷移手段とをさらに備えることを特徴とする請求項６に記載の情報処理システム。
【請求項１３】
前記遷移情報格納手段に格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ない命令識別子を検出する遷移命令検出手段と、
前記遷移命令検出手段によって検出された前記命令識別子の命令により実施されるプリフェッチを無効化するプリフェッチ無効化手段とをさらに備えたことを特徴とする請求項１２に記載の情報処理システム。
【請求項１４】
プリフェッチの成否により遷移される遷移情報を前記グループ識別子ごとに格納するグループ遷移情報格納手段と、
前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令のグループ識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報に応じて、前記遷移情報格納手段に格納された前記遷移情報を遷移するグループ遷移手段とをさらに備えることを特徴とする請求項９に記載の情報処理システム。
【請求項１５】
前記遷移情報格納手段に格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ないグループ識別子を検出するグループ遷移検出手段と、
前記グループ遷移検出手段によって検出された前記グループ識別子の命令により実施されるプリフェッチを無効化するグループ無効化手段とをさらに備えたことを特徴とする請求項１４に記載の情報処理システム。
【請求項１６】
前記変換手段によって変換された前記プログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して定期的に読み出す定期読出手段をさらに備えることを特徴とする請求項４に記載の情報処理システム。
【請求項１７】
前記通知手段によって所定の閾値を超えたことが通知されると、前記変換手段によって変換された前記プログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して読み出す通知読出手段とをさらに備えることを特徴とする請求項５に記載の情報処理システム。
【請求項１８】
前記定期読出手段によって前記プロファイラに読み出された前記プログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するプリフェッチ命令変更手段をさらに備えることを特徴とする請求項１６に記載の情報処理システム。
【請求項１９】
前記通知読出手段によって前記プロファイラに読み出された前記プログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するプリフェッチ命令変更手段をさらに備えることを特徴とする請求項１７に記載の情報処理システム。
【請求項２０】
ＣＰＵによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理方法であって、
前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を利用情報格納手段に格納する利用情報格納工程と、
前記プリフェッチされたデータの利用情報を前記利用情報格納手段に書き込む利用情報書込工程と、
を含んだことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＣＰＵによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理システムおよび情報処理方法に関する。
【背景技術】
【０００２】
従来より、処理速度を上げるために、メインメモリではなくアクセス速度の速いＣＰＵ内のキャッシュ領域にデータを確保する方法が実施されている。このキャッシュ領域にどのデータを置くか判定する方法として、事前にＣＰＵによってアクセスされそうなデータを予測し、その予測されたデータをメインメモリから読み出して、予めキャッシュ領域に確保しておくプリフェッチが知られている（例えば、特許文献１）。【０００３】
ところが、このプリフェッチでは、事前にアクセスされそうなデータを予測し、メインメモリから読み出すので、予測ミスが発生した際には、必要のないデータがキャッシュ領域に載ることになり、本来キャッシュ領域に載っているべきデータが追い出されてしまう。このため、プリフェッチの予測精度が低下すると、メモリの平均的なアクセス速度が低下してしまう。【０００４】
このため、プリフェッチの予測精度を上げる技術として、例えば特許文献２では、シーケンシャルアクセスであるか否かを判断し、シーケンシャルアクセスであると判定した場合には、所定量のデータをキャッシュ領域にプリフェッチする技術が開示されている。【０００５】
【特許文献１】特開平１０−３２０２８５号公報
【特許文献２】特開平４−３４０６３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、上記した従来の技術では、メインメモリからキャッシュ領域に読み出されたデータが実際に使用されているか否かを検出することができないので、プリフェッチをしていることが有効に働いているか否かを認識することができないという課題があった。【０００７】
そこで、この発明は、メインメモリからキャッシュ領域に読み出されたデータが実際に使用されているか否かを検出し、プリフェッチをしていることが有効に働いているか否かを認識することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、本発明は、ＣＰＵによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理システムであって、前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納する利用情報格納手段と、前記プリフェッチされたデータの利用情報を前記利用情報格納手段に書き込む利用情報書込手段と、を備えることを特徴とする。【０００９】
また、本発明は、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータの利用情報を前記利用情報格納手段から読み出す利用情報読出手段をさらに備えることを特徴とする。【００１０】
また、本発明は、前記利用情報読出手段によって読み出された利用情報を用いて、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数をカウンタに計上する計上手段をさらに備えることを特徴とする。【００１１】
また、本発明は、前記計上手段によって計上された前記プリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数に変換する変換手段をさらに備えることを特徴とする。【００１２】
また、本発明は、前記計上手段によって計上された前記プリフェッチミス回数が所定の閾値を超えたことをプログラムに通知する通知手段をさらに備えることを特徴とする。【００１３】
また、本発明は、前記利用情報格納手段は、プリフェッチする原因となった命令を一意に識別する命令識別子に、当該命令によってプリフェッチされたデータの利用情報を対応付けて格納し、前記利用情報書込手段は、データを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段に書き込むことを特徴とする。【００１４】
また、本発明は、前記命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を当該命令の命令識別子ごとに格納するプリフェッチ成功履歴格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報を用いて、前記プリフェッチ成功履歴情報を書き込む成功履歴書込手段とをさらに備えることを特徴とする。【００１５】
また、本発明は、前記プリフェッチ成功履歴格納手段に格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出する命令検出手段と、前記命令検出手段によって検出された前記命令識別子の命令により実施されるプリフェッチを無効化するプリフェッチ無効化手段とをさらに備えたことを特徴とする。【００１６】
また、本発明は、前記利用情報格納手段は、前記ＣＰＵ上で実行される命令のアドレスに応じて振り分けられたグループを一意に特定するグループ識別子に、当該命令によってプリフェッチされたデータの利用情報を対応付けて格納し、前記利用情報書込手段は、データを前記キャッシュ領域に格納する原因となった命令のグループ識別子に対応する前記利用情報を前記利用情報格納手段に書き込むことを特徴とする。【００１７】
また、本発明は、前記命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を前記グループ識別子ごとに格納するグループ成功履歴格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令が振り分けられた前記グループ識別子の利用情報を前記利用情報格納手段から読み出し、当該利用情報を用いて、前記プリフェッチ成功履歴情報を書き込むグループ履歴書込手段とをさらに備えることを特徴とする。【００１８】
また、本発明は、前記プリフェッチ成功履歴格納手段に格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下のグループ識別子を検出するグループ識別子検出手段と、前記グループ識別子検出手段によって検出された前記グループ識別子の命令により実施されるプリフェッチを無効化するグループ無効化手段とをさらに備えたことを特徴とする。【００１９】
また、本発明は、プリフェッチの成否により遷移される遷移情報を前記命令識別子ごとに格納する遷移情報格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報に応じて、前記遷移情報格納手段に格納された前記遷移情報を遷移する遷移手段とをさらに備えることを特徴とする。【００２０】
また、本発明は、前記遷移情報格納手段に格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ない命令識別子を検出する遷移命令検出手段と、前記遷移命令検出手段によって検出された前記命令識別子の命令により実施されるプリフェッチを無効化するプリフェッチ無効化手段とをさらに備えたことを特徴とする。【００２１】
また、本発明は、プリフェッチの成否により遷移される遷移情報を前記グループ識別子ごとに格納するグループ遷移情報格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令のグループ識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報に応じて、前記遷移情報格納手段に格納された前記遷移情報を遷移するグループ遷移手段とをさらに備えることを特徴とする。【００２２】
また、本発明は、前記遷移情報格納手段に格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ないグループ識別子を検出するグループ遷移検出手段と、前記グループ遷移検出手段によって検出された前記グループ識別子の命令により実施されるプリフェッチを無効化するグループ無効化手段とをさらに備えたことを特徴とする。【００２３】
また、本発明は、前記変換手段によって変換された前記プログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して定期的に読み出す定期読出手段をさらに備えることを特徴とする。【００２４】
また、本発明は、前記通知手段によって所定の閾値を超えたことが通知されると、前記変換手段によって変換された前記プログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して読み出す通知読出手段とをさらに備えることを特徴とする。【００２５】
また、本発明は、前記定期読出手段によって前記プロファイラに読み出された前記プログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するプリフェッチ命令変更手段をさらに備えることを特徴とする。【００２６】
また、本発明は、ＣＰＵによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理方法であって、前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を利用情報格納手段に格納する利用情報格納工程と、前記プリフェッチされたデータの利用情報を利用情報格納手段に書き込む利用情報書込工程と、を含んだことを特徴とする。
【発明の効果】
【００２７】
本発明によれば、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納し、プリフェッチされたデータの利用情報を書き込むので、メインメモリからキャッシュ領域に読み出されたデータが実際に使用されているか否かを判定し、プリフェッチをしていることが有効に働いているか否かを識別することが可能である。【００２８】
また、本発明によれば、キャッシュ領域のデータが破棄される場合に、破棄されるデータの利用情報を読み出すので、キャッシュ領域のデータが破棄される際に、そのデータがアクセスされたか否かが利用情報から識別できる結果、プリフェッチが無駄であったかを識別することが可能である。【００２９】
また、本発明によれば、読み出された利用情報を用いて、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数をカウンタに計上するので、プリフェッチミス回数を調べることが可能である。【００３０】
また、本発明によれば、計上されたプリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数に変換するので、開発者がプログラムを実行した際、どの程度プリフェッチ機能が有効に動作しているか確認することが可能である。【００３１】
また、本発明によれば、計上されたプリフェッチミス回数が所定の閾値を超えたことをプログラムに通知するので、カウンタのインクリメントが頻繁に発生し、カウンタ溢れが起こるような状況においても、正しくプリフェッチミス回数を計上することが可能である。【００３２】
また、本発明によれば、プリフェッチする原因となった命令を一意に識別する命令識別子に、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を書き込むので、プリフェッチミスした場合に、そのプリフェッチミスをしたデータを取得させた命令がどの命令なのか一意に判別することが可能である。【００３３】
また、本発明によれば、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を命令の命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、その利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断することが可能である。【００３４】
また、本発明によれば、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、無駄なメモリアクセスが減少し、消費電力が削減され、また、バストラフィックの減少により重要なメモリ操作が優先的に行われるようになり、システムとしての性能も向上することが可能である。【００３５】
また、本発明によれば、ＣＰＵ上で実行される命令のアドレスに応じて振り分けられたグループを一意に特定するグループ識別子に、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令のグループ識別子に対応する利用情報を書き込むので、グループ識別子で命令をほぼ一意に特定し、利用情報格納手段に格納されるエントリ数を減らす事が可能である。【００３６】
また、本発明によれば、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報をグループ識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令が振り分けられたグループ識別子の利用情報を読み出し、利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断するとともに、利用情報格納手段に格納されるエントリ数を減らす事が可能である。【００３７】
また、本発明によれば、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下のグループ識別子を検出し、検出されたグループ識別子の命令により実施されるプリフェッチを無効化するので、システムとしての性能も向上するとともに、利用情報格納手段に格納されるエントリ数を減らす事が可能である。【００３８】
また、本発明によれば、プリフェッチの成否により遷移される遷移情報を命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、利用情報に応じて、格納された遷移情報を遷移するので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断することが可能である。【００３９】
また、本発明によれば、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ない命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。【００４０】
また、本発明によれば、プリフェッチの成否により遷移される遷移情報をグループ識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令のグループ識別子に対応する利用情報を読み出し、利用情報に応じて、遷移情報を遷移するので、遷移情報格納手段に格納されるエントリ数を減らすとともに、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。【００４１】
また、本発明によれば、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ないグループ識別子を検出し、検出されたグループ識別子の命令により実施されるプリフェッチを無効化するので、命令によるプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断するとともに、利用情報格納手段に格納されるエントリ数を減らす事が可能である。【００４２】
また、本発明によれば、変換されたプログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して定期的に読み出すので、プログラム中のどの箇所でプリフェッチに失敗しているかを確認することが可能である。【００４３】
また、本発明によれば、所定の閾値を超えたことが通知されると、変換されたプログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して読み出すので、正しくプリフェッチミス回数を計上するとともに、プログラム中のどの箇所でプリフェッチに失敗しているかを確認することが可能である。【００４４】
また、本発明によれば、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、例えば、失敗していたソフトウェア・プリフェッチを削除、または失敗しないような位置に再挿入する結果、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能が向上することが可能である。【００４５】
また、本発明によれば、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、正しくプリフェッチミス回数を計上するとともに、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能を向上することが可能である。
【図面の簡単な説明】
【００４６】
【図１】図１は、実施例１に係る情報処理システムの概要および特徴を説明するための図である。
【図２】図２は、実施例１に係る情報処理システムの構成を示すブロック図である。
【図３】図３は、実施例１に係るキャッシュの構成を示すブロック図である。
【図４】図４は、利用情報格納部を説明するための図である。
【図５】図５は、キャッシュコントローラの構成を説明するための図である。
【図６】図６は、実施例１に係る情報処理システムによる利用情報書込処理動作を示すフローチャートである。
【図７】図７は、実施例１に係る情報処理システムによるプリフェッチミス検出処理動作の詳細を示すフローチャートである。
【図８】図８は、実施例２における情報処理システム１ａのキャッシュ１５の構成を説明するための図である。
【図９】図９は、情報処理システム１ａにおけるキャッシュ１５のプリフェッチ無効化処理手順を説明するためのフローチャートである。
【図１０】図１０は、実施例３に係る情報処理システムを説明するための図である。
【図１１】図１１は、実施例３に係る情報処理システムを説明するための図である。
【図１２】図１２は、実施例３に係る情報処理システムを説明するための図である。
【符号の説明】
【００４７】
１  情報処理システム
１０  ＣＰＵ
１１  命令制御部
１２  演算部
１３  メモリアクセス部
１４  性能モニタリング機能部
１４ａ  カウンタ
１５  一次キャッシュ
１５ａ、２０ａ  利用情報格納部
１５ａ´  タグ情報
１５ｂ  キャッシュデータ
１５ｃ  キャッシュコントローラ
１５ｄ  プリフェッチ成否履歴格納部
１５０  制御部
１５１  利用識別部
１５２  プリフェッチミス検出部
２０  ２次キャッシュ
３０  メインメモリ
【発明を実施するための最良の形態】
【００４８】
以下に添付図面を参照して、この発明に係る情報処理システムの実施例を詳細に説明する。
【実施例１】
【００４９】
以下の実施例では、実施例１に係る情報処理システムの概要および特徴、情報処理システムの構成および処理の流れを順に説明し、最後に実施例１による効果を説明する。【００５０】
［実施例１に係る情報処理システムの概要および特徴］
まず最初に、図１を用いて、実施例１に係る情報処理システムの概要および特徴を説明する。図１は、実施例１に係る情報処理システムの概要および特徴を説明するための図である。【００５１】
実施例１の情報処理システム１では、ＣＰＵによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行うことを概要とする。そして、プリフェッチをしていることが有効に働いているか否かを識別する点に主たる特徴がある。【００５２】
この主たる特徴について具体的に説明すると、実施例１に係る情報処理システム１は、図１に示すように、階層化されたメモリ構造を持ち、ＣＰＵ１０とキャッシュ２０とメインメモリ３０とで構成される。そして、キャッシュ２０は、プリフェッチされたデータがアクセスされたか否かを示す利用情報と、プリフェッチする原因となった命令を一意に識別する命令識別子とを対応付けて格納する利用情報格納部２０ａを備える。なお、キャッシュ２０は、ＣＰＵ１０内にあってもよいし、後述する図２のようにＣＰＵ１０の内外両方に複数あってもよい。【００５３】
このような構成のもと、情報処理システム１は、プリフェッチされたデータの利用情報を利用情報格納部２０ａに書き込む。具体的には、情報処理システム１は、新たなデータをキャッシュ２０に載せる場合に、通常のメモリアクセスであれば利用情報をセット（図１の例では、利用情報「○」）し、プリフェッチによるアクセスであれば利用情報をリセット（図１の例では、利用情報「×」）する。そして、情報処理システム１は、ＣＰＵ１０からプリフェッチされたデータ（つまり、利用情報がリセットであるデータ）に対してアクセスが行われた場合には、利用情報をセットする。【００５４】
その後、情報処理システム１は、キャッシュ２０のデータが破棄される際に、破棄されるデータの利用情報を利用情報格納部２０ａから読み出す。具体的には、情報処理システム１は、利用情報格納部２０ａから利用情報を読み出し、利用されたか否かを判別してプリフェッチミスを検出する。【００５５】
このように、情報処理システム１は、メインメモリ３０からキャッシュ領域に読み出されたデータが実際に使用されているか否かを判定し、上記した主たる特徴のごとく、プリフェッチをしていることが有効に働いているか否かを識別することが可能である。【００５６】
［情報処理システムの構成］
次に、図２を用いて、図１に示した情報処理システム１の構成を説明する。図２は、実施例１に係る情報処理システム１の構成を示すブロック図である。同図に示すように、この情報処理システム１は、ＣＰＵ１０、二次キャッシュ２０およびメインメモリ３０を備える。【００５７】
情報処理システム１は、ＣＰＵ１０内の一次キャッシュ１５、二次キャッシュ２０およびメインメモリ３０による階層化されたメモリ構造を持つ。つまり、一次キャッシュ１５、二次キャッシュ２０、メインメモリ３０の順に処理速度が速く、その逆に、メインメモリ３０、二次キャッシュ２０、一次キャッシュ１５の順に格納されているデータ量が多い。【００５８】
ＣＰＵ１０は、各種命令を制御する命令制御部１１、命令制御部１１の命令に従って各種演算を行う演算部１２、命令制御部１１の命令に従ってメモリアクセスを行うメモリアクセス部１３、ＣＰＵ１０の動的な実行時情報を、所定の手続きに基づきプログラム側で取得するための機能である性能モニタリング機能部１４およびメインメモリ３０に格納されたデータの一部を格納する一次キャッシュ１５を備える。【００５９】
性能モニタリング機能部１４は、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数が計上されるカウンタ１４ａを備える。このような構成のもと、性能モニタリング機能部１４は、カウンタ１４ａによって計上されたプリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数情報に変換する。そして、そのプリフェッチミス回数情報をプロファイラが読み出す。【００６０】
具体的には、性能モニタリング機能部１４は、インターフェースに準じて、プログラムから取得する事を可能な形で提供する。つまり、プログラム開発者が自身の開発したプログラムを実行した際、どの程度プリフェッチ機能が有効に動作しているのかを確認することが可能となる。【００６１】
また、性能モニタリング機能部１４は、計上されたプリフェッチミス回数が所定の閾値を超えたことをプログラムに通知する。つまり、性能モニタリング機能部１４は、カウンタが溢れた際、割り込みによりＣＰＵ１０に通達する。【００６２】
［キャッシュの構成］
次に、図３〜図５を用いて、図１に示した情報処理システム１の構成を説明する。図３は、実施例１に係るキャッシュの構成を示すブロック図であり、図４は、利用情報格納部を説明するための図であり、図５は、キャッシュコントローラの構成を説明するための図である。なお、図３〜図５に示す一次キャッシュ１５の構成は、図１に示す二次キャッシュ２０と同様の構成である。【００６３】
図３に示すように、キャッシュ１５は、利用情報格納部１５ａ、キャッシュデータ１５ｂおよびキャッシュコントローラ１５ｃを備え、キャッシュコントローラ１５ｃが利用情報格納部１５ａおよびキャッシュデータ１５ｂ内のデータの読み書きを行う。以下にこれらの各部の処理を説明する。【００６４】
利用情報格納部１５ａは、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納する。具体的には、利用情報格納部１５ａは、図４に示すように、命令のデータに係るタグと、命令のデータに係るインデックスと、プリフェッチされたデータがアクセスされたか否かを示す利用情報と、プリフェッチする原因となった命令を一意に識別する命令識別子とを対応付けて記憶する。なお、命令識別子として、命令の格納されているメモリ上のアドレスを用いるようにしてもよい。【００６５】
キャッシュデータ１５ｂは、メインメモリ３０に格納されているデータの一部が格納されおり、メインメモリ３０よりアクセス速度が速く、後述するキャッシュコントローラ１５ｃによって読み書きされるデータを格納される。【００６６】
キャッシュコントローラ１５ｃは、プリフェッチされたデータの利用情報を利用情報格納部１５ａに書き込み、また、キャッシュ領域のデータが破棄される場合に、破棄されるデータの利用情報を利用情報格納部１５ａから読み出す。【００６７】
ここで、キャッシュコントローラ１５ｃの具体的な構成について、図５を用いて説明する。キャッシュコントローラ１５ｃは、制御部１５０と利用識別部１５１とプリフェッチミス検出部１５２とを備える。以下にこれらの各部の処理を説明する。【００６８】
制御部１５０は、キャッシュコントローラの各種処理を制御する。具体的には、制御部１５０は、ＣＰＵ１０からメモリアクセスを受け付けると、キャッシュにヒットしたか否かを判定し、その結果、キャッシュにヒットしたと判定された場合には、利用情報をセットする。【００６９】
また、制御部１５０は、キャッシュにヒットしていないと判定された場合には、置換対象となるキャッシュ（つまり、破棄となるデータ）を選定し、その置換対象の利用情報がセットされているか否かの判定を後述する利用識別部１５１に指示する。その後、制御部１５０は、利用識別部１５１によって置換対象の利用情報がセットされたと判定された後、または後に詳述するプリフェッチミス検出部１５２によってプリフェッチミス検出処理が行われた後、プリフェッチミスによるアクセスかを判定する。【００７０】
その結果、制御部１５０は、プリフェッチミスによるアクセスであると判定された場合には、利用情報をリセットし、一方、プリフェッチミスによるアクセスでないと判定された場合には、利用情報をセットする。【００７１】
利用識別部１５１は、破棄されるデータの利用情報を利用情報格納部１５ａから読み出す。具体的には、利用識別部１５１は、置換対象の利用情報がセットされているか否かの判定をする旨の指示を受け付けた後、その置換対象の利用情報がセットされているか否かを判定する。【００７２】
その結果、利用識別部１５１は、置換対象の利用情報がセットされている場合には、その旨を制御部１５０に通知し、一方、置換対象の利用情報がセットされていない場合には、プリフェッチミスの検出処理を行う旨の指示をプリフェッチミス検出部１５２に通知する。【００７３】
プリフェッチミス検出部１５２は、プリフェッチミスを検出する。具体的には、プリフェッチミス検出部１５２は、利用識別部１５１によってプリフェッチミスの検出処理を行う旨の指示を受け付けた場合には、プリフェッチミスの検出処理を行う。つまり、プリフェッチミスを計上するためにＣＰＵ１０のカウンタ１４ａにプリフェッチミス回数をインクリメントする旨の指示を通知する。【００７４】
［情報処理システムによる処理］
次に、図６および図７を用いて、実施例１に係る情報処理システム１による処理を説明する。図６は、実施例１に係る情報処理システムによる利用情報書込処理動作を示すフローチャートであり、図７は、実施例１に係る情報処理システムによるプリフェッチミス検出処理動作の詳細を示すフローチャートである。【００７５】
情報処理システム１のキャッシュ２０は、図６に示すように、ＣＰＵ１０からメモリアクセスを受け付けると（ステップＳ１０１肯定）、キャッシュにヒットしたか否かを判定し（ステップＳ１０２）、その結果、キャッシュデータ１５ｂにヒットしたと判定された場合には（ステップＳ１０２肯定）、利用情報をセットする（ステップＳ１０８）。【００７６】
また、キャッシュ２０は、キャッシュデータ１５ｂにヒットしていないと判定された場合には（ステップＳ１０２否定）、置換対象となるキャッシュを選定し（ステップＳ１０３）、その置換対象の利用情報がセットされているか否かを判定する（ステップＳ１０４）。【００７７】
その結果、キャッシュ２０は、置換対象の利用情報がセットされている場合には（ステップＳ１０４肯定）、プリフェッチミスによるアクセスかを判定し（ステップＳ１０６）、一方、置換対象の利用情報がセットされていない場合には（ステップＳ１０４否定）、後に詳述するプリフェッチミスの検出処理を行った後（ステップＳ１０５）、プリフェッチミスによるアクセスかを判定する（ステップＳ１０６）。【００７８】
その結果、キャッシュ２０は、プリフェッチミスによるアクセスであると判定された場合には（ステップＳ１０６肯定）、利用情報をリセットし（ステップＳ１０７）、一方、プリフェッチミスによるアクセスでないと判定された場合には（ステップＳ１０６否定）、利用情報をセットする（ステップＳ１０８）。【００７９】
続いて、図７を用いて、実施例１に係る情報処理システムによるプリフェッチミス検出処理（Ｓ１０５）を説明する。まず、情報処理システム１のキャッシュ２０は、プリフェッチミスが検出されると（ステップＳ２０１肯定）、ＣＰＵ１０に通知する。そして、ＣＰＵ１０は、カウンタ１４ａをカウントアップし（ステップＳ２０２）、カウンタ１４ａがオーバーフローしたか否かを判定する（ステップＳ２０３）。【００８０】
その結果、ＣＰＵ１０は、カウンタ１４ａがオーバーフローしたと判定した場合には（ステップＳ２０３肯定）、カウンタ１４ａがオーバーフローしたことをプログラムに通知する（ステップＳ２０４）。一方、ＣＰＵ１０は、カウンタ１４ａがオーバーフローしていないと判定した場合には（ステップＳ２０３否定）、プリフェッチ検出処理を終了する。【００８１】
[実施例１の効果]
上述してきたように、実施例１によれば、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納し、プリフェッチされたデータの利用情報を書き込むので、メインメモリ３０からキャッシュ領域に読み出されたデータが実際に使用されているか否かを判定し、プリフェッチをしていることが有効に働いているか否かを識別することが可能である。【００８２】
また、実施例１によれば、キャッシュ領域のデータが破棄される場合に、破棄されるデータの利用情報を読み出すので、キャッシュ領域のデータが破棄される際に、そのデータがアクセスされたか否かが利用情報から識別できる結果、プリフェッチが無駄であったかを識別することが可能である。【００８３】
また、実施例１によれば、読み出された利用情報を用いて、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数をカウンタに計上するので、プリフェッチミス回数を調べることが可能である。【００８４】
また、実施例１によれば、計上されたプリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数に変換するので、開発者がプログラムを実行した際、どの程度プリフェッチ機能が有効に動作しているか確認することが可能である。【００８５】
また、実施例１によれば、計上されたプリフェッチミス回数が所定の閾値を超えたことをプログラムに通知するので、カウンタのインクリメントが頻繁に発生するような状況においても、正しくプリフェッチミス回数を計上することが可能である。【００８６】
また、実施例１によれば、プリフェッチする原因となった命令を一意に識別する命令識別子に、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を書き込むので、プリフェッチミスした場合に、そのプリフェッチミスをしたデータを取得させた命令がどの命令なのか一意に判別することが可能である。【００８７】
また、実施例１によれば、変換されたプログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して定期的に読み出すので、プログラム中のどの箇所でプリフェッチに失敗しているかを確認することが可能である。
【実施例２】
【００８８】
ところで、上記の実施例１ではプリフェッチミスを検出する場合を説明したが、本発明はこれに限定されるものではなく、検出されたプリフェッチミスを用いて、効果の見込みが少ないプリフェッチに係る命令を無効化するようにしてもよい。【００８９】
そこで、以下の実施例２では、命令識別子ごとにプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を用いて、効果の見込みが少ないプリフェッチに係る命令を無効化する場合として、図８および図９を用いて、実施例２における情報処理システム１ａのキャッシュ１５の構成およびプリフェッチ無効化処理について説明する。図８は、実施例２における情報処理システム１ａのキャッシュ１５の構成を説明するための図であり、図９は、情報処理システム１ａにおけるキャッシュ１５のプリフェッチ無効化処理手順を説明するためのフローチャートである。【００９０】
まず最初に、図８を用いて、実施例２に係る情報処理システム１ａにおけるキャッシュ１５の構成を説明する。実施例２の情報処理システム１ａのキャッシュ１５は、図５に示した実施例１に係るキャッシュ１５と比較して、プリフェッチ成否履歴を備える点が相違する。【００９１】
プリフェッチ成否履歴１５ｄは、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を命令識別子ごとに格納する。具体的には、プリフェッチ成否履歴１５ｄは、キャッシュコントローラ１５ｃによって読み書きされ、プリフェッチ実行時に、そのプリフェッチを実行するか否かを判定する際に参照される。具体的な例を挙げて説明すると、プリフェッチ成否履歴１５ｄは、命令識別子とプリフェッチ成功回数、プリフェッチ失敗回数とを対応付けて記憶している。【００９２】
次に、図９を用いて実施例２に係るキャッシュ１５のプリフェッチ処理について説明する。このアクセス制御処理は、命令識別子の命令により実施されるプリフェッチを無効化する処理を行う。【００９３】
情報処理システム１ａのキャッシュ１５は、プリフェッチの指示を受け付けると（ステップＳ３０１）、同じ命令識別子を持つ命令から発行されたプリフェッチについてミスの履歴をプリフェッチ成否履歴１５ｄからプリフェッチ成功履歴情報を読み出して検査する（ステップＳ３０２）。【００９４】
キャッシュ１５は、プリフェッチ成否履歴１５ｄから読み出したプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値より高いか低いかを判定する。具体的には、キャッシュ１５は、プリフェッチミスが発生する可能性が高いかを判定する（ステップＳ３０３）。【００９５】
その結果、キャッシュ１５は、プリフェッチミスが発生する可能性が高くない場合には（ステップＳ３０３否定）、プリフェッチを実行し（ステップＳ３０４）、一方、プリフェッチミスが発生する可能性が高い場合には（ステップＳ３０３肯定）、プリフェッチを無効化する（ステップＳ３０５）。【００９６】
このように、上記の実施例２では、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を命令の命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、その利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断することが可能である。【００９７】
また、上記の実施例２では、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、無駄なメモリアクセスが減少し、消費電力が削減され、また、バストラフィックの減少により重要なメモリ操作が優先的に行われるようになり、システムとしての性能も向上することが可能である。
【実施例３】
【００９８】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例３として本発明に含まれる他の実施例を説明する。【００９９】
（１）グループＩＤ
上記の実施例１では、命令を一意に識別する命令識別子ごとに利用情報を格納する場合を説明したが、本発明はこれに限定されるものではなく、命令識別子をほぼ一意に特定するグループＩＤごとに利用情報を格納するようにしてもよい。【０１００】
具体的には、実施例３における情報処理システムの利用情報格納部は、図１０に示すように、利用情報とグループＩＤとを対応付けて記憶されている。このグループＩＤは、命令のアドレスに応じて振り分けられたグループを一意に特定し、近傍で実行される命令について重複しにくいハッシュ関数により求められる。【０１０１】
また、プリフェッチ成否履歴は、グループＩＤと成否統計情報とを対応付けて記憶する。そして、プリフェッチ成否履歴は、図１１に示すように、プリフェッチ実行時にその命令のグループＩＤに対応する成否統計情報を読み出され、プリフェッチを実施するか無効化するかの判定に用いられる。【０１０２】
このように、ＣＰＵ上で実行される命令のアドレスに応じて振り分けられたグループを一意に特定するグループＩＤに、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令のグループＩＤに対応する利用情報を書き込むので、グループＩＤで命令をほぼ一意に特定し、利用情報格納部に格納されるエントリ数を減らす事が可能である。【０１０３】
また、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報をグループＩＤごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令が振り分けられたグループＩＤの利用情報を読み出し、利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断するとともに、利用情報格納部に格納されるエントリ数を減らす事が可能である。【０１０４】
また、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下のグループＩＤを検出し、検出されたグループＩＤの命令により実施されるプリフェッチを無効化するので、システムとしての性能も向上するとともに、利用情報格納部に格納されるエントリ数を減らす事が可能である。【０１０５】
（２）遷移情報
また、上記の実施例１では、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納する場合を説明したが、本発明はこれに限定されるものではなく、プリフェッチの成否により遷移される遷移情報を格納するようにしてもよい。【０１０６】
具体的には、実施例３における情報処理システムは、プリフェッチの成否により遷移される遷移情報を命令識別子ごとに格納する。例えば、情報処理システムは、図１２に示すように、単純な履歴ではなく、プリフェッチの成否に応じて状態を遷移させて管理する。この図１２の例ではプリフェッチが成功した際には２ビットの値がインクリメントされ、失敗した際にはデクリメントされる。なお、遷移情報を命令識別子ごとに格納するだけでなく、遷移情報をグループＩＤごとに格納する。【０１０７】
このように、プリフェッチの成否により遷移される遷移情報を命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、利用情報に応じて、格納された遷移情報を遷移するので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断することが可能である。【０１０８】
また、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ない命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。【０１０９】
また、プリフェッチの成否により遷移される遷移情報をグループＩＤごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令のグループＩＤに対応する利用情報を読み出し、利用情報に応じて、遷移情報を遷移するので、遷移情報格納部に格納されるエントリ数を減らすとともに、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。【０１１０】
また、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ないグループＩＤを検出し、検出されたグループＩＤの命令により実施されるプリフェッチを無効化するので、命令によるプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断するとともに、利用情報格納部に格納されるエントリ数を減らす事が可能である。【０１１１】
（３）コンパイラ
また、本発明では、コンパイラを用いて、プリフェッチに関する最適化を行うようにしてもよい。具体的には、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化する。例えば、この最適化では、失敗していたソフトウェア・プリフェッチを削除、または失敗しないような位置に再挿入する。【０１１２】
このように、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、例えば、失敗していたソフトウェア・プリフェッチを削除、または失敗しないような位置に再挿入する結果、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能が向上することが可能である。【０１１３】
また、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、正しくプリフェッチミス回数を計上するとともに、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能を向上することが可能である。【０１１４】
（４）システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、利用識別部１５１とプリフェッチミス検出部１５２を統合してもよい。
【産業上の利用可能性】
【０１１５】
以上のように、本発明に係る情報処理システムおよび情報処理方法は、ＣＰＵによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行うことに有用であり、特に、プリフェッチをしていることが有効に働いているか否かを識別する場合に適する。
【図１】
2008093399.tif 000003
【図２】
2008093399.tif 000004
【図３】
2008093399.tif 000005
【図４】
2008093399.tif 000006
【図５】
2008093399.tif 000007
【図６】
2008093399.tif 000008
【図７】
2008093399.tif 000009
【図８】
2008093399.tif 000010
【図９】
2008093399.tif 000011
【図１０】
2008093399.tif 000012
【図１１】
2008093399.tif 000013
【図１２】
2008093399.tif 000014
【手続補正書】
【提出日】平成21年3月13日(2009.3.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＣＰＵによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理システムであって、
前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納する利用情報格納手段と、
前記プリフェッチされたデータの利用情報を前記利用情報格納手段に書き込む利用情報書込手段と、
を備えることを特徴とする情報処理システム。
【請求項２】
前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータの利用情報を前記利用情報格納手段から読み出す利用情報読出手段をさらに備えることを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記利用情報読出手段によって読み出された利用情報を用いて、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数をカウンタに計上する計上手段をさらに備えることを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記計上手段によって計上された前記プリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数に変換する変換手段をさらに備えることを特徴とする請求項３に記載の情報処理システム。
【請求項５】
前記計上手段によって計上された前記プリフェッチミス回数が所定の閾値を超えたことをプログラムに通知する通知手段をさらに備えることを特徴とする請求項３に記載の情報処理システム。
【請求項６】
前記利用情報格納手段は、プリフェッチする原因となった命令を一意に識別する命令識別子に、当該命令によってプリフェッチされたデータの利用情報を対応付けて格納し、
前記利用情報書込手段は、データを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段に書き込むことを特徴とする請求項１に記載の情報処理システム。
【請求項７】
前記命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を当該命令の命令識別子ごとに格納するプリフェッチ成功履歴格納手段と、
前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報を用いて、前記プリフェッチ成功履歴情報を書き込む成功履歴書込手段とをさらに備えることを特徴とする請求項６に記載の情報処理システム。
【請求項８】
前記プリフェッチ成功履歴格納手段に格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出する命令検出手段と、
前記命令検出手段によって検出された前記命令識別子の命令により実施されるプリフェッチを無効化するプリフェッチ無効化手段とをさらに備えたことを特徴とする請求項７に記載の情報処理システム。
【請求項９】
前記利用情報格納手段は、前記ＣＰＵ上で実行される命令のアドレスに応じて振り分けられたグループを一意に特定するグループ識別子に、当該命令によってプリフェッチされたデータの利用情報を対応付けて格納し、
前記利用情報書込手段は、データを前記キャッシュ領域に格納する原因となった命令のグループ識別子に対応する前記利用情報を前記利用情報格納手段に書き込むことを特徴とする請求項１に記載の情報処理システム。
【請求項１０】
前記命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を前記グループ識別子ごとに格納するグループ成功履歴格納手段と、
前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令が振り分けられた前記グループ識別子の利用情報を前記利用情報格納手段から読み出し、当該利用情報を用いて、前記プリフェッチ成功履歴情報を書き込むグループ履歴書込手段とをさらに備えることを特徴とする請求項９に記載の情報処理システム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＣＰＵによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理システムに関する。
【背景技術】
【０００２】
従来より、処理速度を上げるために、メインメモリではなくアクセス速度の速いＣＰＵ内のキャッシュ領域にデータを確保する方法が実施されている。このキャッシュ領域にどのデータを置くか判定する方法として、事前にＣＰＵによってアクセスされそうなデータを予測し、その予測されたデータをメインメモリから読み出して、予めキャッシュ領域に確保しておくプリフェッチが知られている（例えば、特許文献１）。
【０００３】
ところが、このプリフェッチでは、事前にアクセスされそうなデータを予測し、メインメモリから読み出すので、予測ミスが発生した際には、必要のないデータがキャッシュ領域に載ることになり、本来キャッシュ領域に載っているべきデータが追い出されてしまう。このため、プリフェッチの予測精度が低下すると、メモリの平均的なアクセス速度が低下してしまう。
【０００４】
このため、プリフェッチの予測精度を上げる技術として、例えば特許文献２では、シーケンシャルアクセスであるか否かを判断し、シーケンシャルアクセスであると判定した場合には、所定量のデータをキャッシュ領域にプリフェッチする技術が開示されている。
【０００５】
【特許文献１】特開平１０−３２０２８５号公報
【特許文献２】特開平４−３４０６３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、上記した従来の技術では、メインメモリからキャッシュ領域に読み出されたデータが実際に使用されているか否かを検出することができないので、プリフェッチをしていることが有効に働いているか否かを認識することができないという課題があった。
【０００７】
そこで、この発明は、メインメモリからキャッシュ領域に読み出されたデータが実際に使用されているか否かを検出し、プリフェッチをしていることが有効に働いているか否かを認識することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、本発明は、ＣＰＵによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理システムであって、前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納する利用情報格納手段と、前記プリフェッチされたデータの利用情報を前記利用情報格納手段に書き込む利用情報書込手段と、を備えることを特徴とする。
【０００９】
また、本発明は、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータの利用情報を前記利用情報格納手段から読み出す利用情報読出手段をさらに備えることを特徴とする。
【００１０】
また、本発明は、前記利用情報読出手段によって読み出された利用情報を用いて、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数をカウンタに計上する計上手段をさらに備えることを特徴とする。
【００１１】
また、本発明は、前記計上手段によって計上された前記プリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数に変換する変換手段をさらに備えることを特徴とする。
【００１２】
また、本発明は、前記計上手段によって計上された前記プリフェッチミス回数が所定の閾値を超えたことをプログラムに通知する通知手段をさらに備えることを特徴とする。
【００１３】
また、本発明は、前記利用情報格納手段は、プリフェッチする原因となった命令を一意に識別する命令識別子に、当該命令によってプリフェッチされたデータの利用情報を対応付けて格納し、前記利用情報書込手段は、データを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段に書き込むことを特徴とする。
【００１４】
また、本発明は、前記命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を当該命令の命令識別子ごとに格納するプリフェッチ成功履歴格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報を用いて、前記プリフェッチ成功履歴情報を書き込む成功履歴書込手段とをさらに備えることを特徴とする。
【００１５】
また、本発明は、前記プリフェッチ成功履歴格納手段に格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出する命令検出手段と、前記命令検出手段によって検出された前記命令識別子の命令により実施されるプリフェッチを無効化するプリフェッチ無効化手段とをさらに備えたことを特徴とする。
【００１６】
また、本発明は、前記利用情報格納手段は、前記ＣＰＵ上で実行される命令のアドレスに応じて振り分けられたグループを一意に特定するグループ識別子に、当該命令によってプリフェッチされたデータの利用情報を対応付けて格納し、前記利用情報書込手段は、データを前記キャッシュ領域に格納する原因となった命令のグループ識別子に対応する前記利用情報を前記利用情報格納手段に書き込むことを特徴とする。
【００１７】
また、本発明は、前記命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を前記グループ識別子ごとに格納するグループ成功履歴格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令が振り分けられた前記グループ識別子の利用情報を前記利用情報格納手段から読み出し、当該利用情報を用いて、前記プリフェッチ成功履歴情報を書き込むグループ履歴書込手段とをさらに備えることを特徴とする。
【００１８】
また、本発明は、前記プリフェッチ成功履歴格納手段に格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下のグループ識別子を検出するグループ識別子検出手段と、前記グループ識別子検出手段によって検出された前記グループ識別子の命令により実施されるプリフェッチを無効化するグループ無効化手段とをさらに備えたことを特徴とする。
【００１９】
また、本発明は、プリフェッチの成否により遷移される遷移情報を前記命令識別子ごとに格納する遷移情報格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報に応じて、前記遷移情報格納手段に格納された前記遷移情報を遷移する遷移手段とをさらに備えることを特徴とする。
【００２０】
また、本発明は、前記遷移情報格納手段に格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ない命令識別子を検出する遷移命令検出手段と、前記遷移命令検出手段によって検出された前記命令識別子の命令により実施されるプリフェッチを無効化するプリフェッチ無効化手段とをさらに備えたことを特徴とする。
【００２１】
また、本発明は、プリフェッチの成否により遷移される遷移情報を前記グループ識別子ごとに格納するグループ遷移情報格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令のグループ識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報に応じて、前記遷移情報格納手段に格納された前記遷移情報を遷移するグループ遷移手段とをさらに備えることを特徴とする。
【００２２】
また、本発明は、前記遷移情報格納手段に格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ないグループ識別子を検出するグループ遷移検出手段と、前記グループ遷移検出手段によって検出された前記グループ識別子の命令により実施されるプリフェッチを無効化するグループ無効化手段とをさらに備えたことを特徴とする。
【００２３】
また、本発明は、前記変換手段によって変換された前記プログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して定期的に読み出す定期読出手段をさらに備えることを特徴とする。
【００２４】
また、本発明は、前記通知手段によって所定の閾値を超えたことが通知されると、前記変換手段によって変換された前記プログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して読み出す通知読出手段とをさらに備えることを特徴とする。
【００２５】
また、本発明は、前記定期読出手段によって前記プロファイラに読み出された前記プログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するプリフェッチ命令変更手段をさらに備えることを特徴とする。
【００２６】
また、本発明は、ＣＰＵによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理方法であって、前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を利用情報格納手段に格納する利用情報格納工程と、前記プリフェッチされたデータの利用情報を利用情報格納手段に書き込む利用情報書込工程と、を含んだことを特徴とする。
【発明の効果】
【００２７】
本発明によれば、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納し、プリフェッチされたデータの利用情報を書き込むので、メインメモリからキャッシュ領域に読み出されたデータが実際に使用されているか否かを判定し、プリフェッチをしていることが有効に働いているか否かを識別することが可能である。
【００２８】
また、本発明によれば、キャッシュ領域のデータが破棄される場合に、破棄されるデータの利用情報を読み出すので、キャッシュ領域のデータが破棄される際に、そのデータがアクセスされたか否かが利用情報から識別できる結果、プリフェッチが無駄であったかを識別することが可能である。
【００２９】
また、本発明によれば、読み出された利用情報を用いて、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数をカウンタに計上するので、プリフェッチミス回数を調べることが可能である。
【００３０】
また、本発明によれば、計上されたプリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数に変換するので、開発者がプログラムを実行した際、どの程度プリフェッチ機能が有効に動作しているか確認することが可能である。
【００３１】
また、本発明によれば、計上されたプリフェッチミス回数が所定の閾値を超えたことをプログラムに通知するので、カウンタのインクリメントが頻繁に発生し、カウンタ溢れが起こるような状況においても、正しくプリフェッチミス回数を計上することが可能である。
【００３２】
また、本発明によれば、プリフェッチする原因となった命令を一意に識別する命令識別子に、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を書き込むので、プリフェッチミスした場合に、そのプリフェッチミスをしたデータを取得させた命令がどの命令なのか一意に判別することが可能である。
【００３３】
また、本発明によれば、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を命令の命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、その利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断することが可能である。
【００３４】
また、本発明によれば、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、無駄なメモリアクセスが減少し、消費電力が削減され、また、バストラフィックの減少により重要なメモリ操作が優先的に行われるようになり、システムとしての性能も向上することが可能である。
【００３５】
また、本発明によれば、ＣＰＵ上で実行される命令のアドレスに応じて振り分けられたグループを一意に特定するグループ識別子に、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令のグループ識別子に対応する利用情報を書き込むので、グループ識別子で命令をほぼ一意に特定し、利用情報格納手段に格納されるエントリ数を減らす事が可能である。
【００３６】
また、本発明によれば、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報をグループ識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令が振り分けられたグループ識別子の利用情報を読み出し、利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断するとともに、利用情報格納手段に格納されるエントリ数を減らす事が可能である。
【００３７】
また、本発明によれば、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下のグループ識別子を検出し、検出されたグループ識別子の命令により実施されるプリフェッチを無効化するので、システムとしての性能も向上するとともに、利用情報格納手段に格納されるエントリ数を減らす事が可能である。
【００３８】
また、本発明によれば、プリフェッチの成否により遷移される遷移情報を命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、利用情報に応じて、格納された遷移情報を遷移するので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断することが可能である。
【００３９】
また、本発明によれば、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ない命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。
【００４０】
また、本発明によれば、プリフェッチの成否により遷移される遷移情報をグループ識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令のグループ識別子に対応する利用情報を読み出し、利用情報に応じて、遷移情報を遷移するので、遷移情報格納手段に格納されるエントリ数を減らすとともに、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。
【００４１】
また、本発明によれば、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ないグループ識別子を検出し、検出されたグループ識別子の命令により実施されるプリフェッチを無効化するので、命令によるプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断するとともに、利用情報格納手段に格納されるエントリ数を減らす事が可能である。
【００４２】
また、本発明によれば、変換されたプログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して定期的に読み出すので、プログラム中のどの箇所でプリフェッチに失敗しているかを確認することが可能である。
【００４３】
また、本発明によれば、所定の閾値を超えたことが通知されると、変換されたプログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して読み出すので、正しくプリフェッチミス回数を計上するとともに、プログラム中のどの箇所でプリフェッチに失敗しているかを確認することが可能である。
【００４４】
また、本発明によれば、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、例えば、失敗していたソフトウェア・プリフェッチを削除、または失敗しないような位置に再挿入する結果、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能が向上することが可能である。
【００４５】
また、本発明によれば、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、正しくプリフェッチミス回数を計上するとともに、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能を向上することが可能である。
【発明を実施するための最良の形態】
【００４６】
以下に添付図面を参照して、この発明に係る情報処理システムの実施例を詳細に説明する。
【実施例１】
【００４７】
以下の実施例では、実施例１に係る情報処理システムの概要および特徴、情報処理システムの構成および処理の流れを順に説明し、最後に実施例１による効果を説明する。
【００４８】
［実施例１に係る情報処理システムの概要および特徴］
まず最初に、図１を用いて、実施例１に係る情報処理システムの概要および特徴を説明する。図１は、実施例１に係る情報処理システムの概要および特徴を説明するための図である。
【００４９】
実施例１の情報処理システム１では、ＣＰＵによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行うことを概要とする。そして、プリフェッチをしていることが有効に働いているか否かを識別する点に主たる特徴がある。
【００５０】
この主たる特徴について具体的に説明すると、実施例１に係る情報処理システム１は、図１に示すように、階層化されたメモリ構造を持ち、ＣＰＵ１０とキャッシュ２０とメインメモリ３０とで構成される。そして、キャッシュ２０は、プリフェッチされたデータがアクセスされたか否かを示す利用情報と、プリフェッチする原因となった命令を一意に識別する命令識別子とを対応付けて格納する利用情報格納部２０ａを備える。なお、キャッシュ２０は、ＣＰＵ１０内にあってもよいし、後述する図２のようにＣＰＵ１０の内外両方に複数あってもよい。
【００５１】
このような構成のもと、情報処理システム１は、プリフェッチされたデータの利用情報を利用情報格納部２０ａに書き込む。具体的には、情報処理システム１は、新たなデータをキャッシュ２０に載せる場合に、通常のメモリアクセスであれば利用情報をセット（図１の例では、利用情報「○」）し、プリフェッチによるアクセスであれば利用情報をリセット（図１の例では、利用情報「×」）する。そして、情報処理システム１は、ＣＰＵ１０からプリフェッチされたデータ（つまり、利用情報がリセットであるデータ）に対してアクセスが行われた場合には、利用情報をセットする。
【００５２】
その後、情報処理システム１は、キャッシュ２０のデータが破棄される際に、破棄されるデータの利用情報を利用情報格納部２０ａから読み出す。具体的には、情報処理システム１は、利用情報格納部２０ａから利用情報を読み出し、利用されたか否かを判別してプリフェッチミスを検出する。
【００５３】
このように、情報処理システム１は、メインメモリ３０からキャッシュ領域に読み出されたデータが実際に使用されているか否かを判定し、上記した主たる特徴のごとく、プリフェッチをしていることが有効に働いているか否かを識別することが可能である。
【００５４】
［情報処理システムの構成］
次に、図２を用いて、図１に示した情報処理システム１の構成を説明する。図２は、実施例１に係る情報処理システム１の構成を示すブロック図である。同図に示すように、この情報処理システム１は、ＣＰＵ１０、二次キャッシュ２０およびメインメモリ３０を備える。
【００５５】
情報処理システム１は、ＣＰＵ１０内の一次キャッシュ１５、二次キャッシュ２０およびメインメモリ３０による階層化されたメモリ構造を持つ。つまり、一次キャッシュ１５、二次キャッシュ２０、メインメモリ３０の順に処理速度が速く、その逆に、メインメモリ３０、二次キャッシュ２０、一次キャッシュ１５の順に格納されているデータ量が多い。
【００５６】
ＣＰＵ１０は、各種命令を制御する命令制御部１１、命令制御部１１の命令に従って各種演算を行う演算部１２、命令制御部１１の命令に従ってメモリアクセスを行うメモリアクセス部１３、ＣＰＵ１０の動的な実行時情報を、所定の手続きに基づきプログラム側で取得するための機能である性能モニタリング機能部１４およびメインメモリ３０に格納されたデータの一部を格納する一次キャッシュ１５を備える。
【００５７】
性能モニタリング機能部１４は、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数が計上されるカウンタ１４ａを備える。このような構成のもと、性能モニタリング機能部１４は、カウンタ１４ａによって計上されたプリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数情報に変換する。そして、そのプリフェッチミス回数情報をプロファイラが読み出す。
【００５８】
具体的には、性能モニタリング機能部１４は、インターフェースに準じて、プログラムから取得する事を可能な形で提供する。つまり、プログラム開発者が自身の開発したプログラムを実行した際、どの程度プリフェッチ機能が有効に動作しているのかを確認することが可能となる。
【００５９】
また、性能モニタリング機能部１４は、計上されたプリフェッチミス回数が所定の閾値を超えたことをプログラムに通知する。つまり、性能モニタリング機能部１４は、カウンタが溢れた際、割り込みによりＣＰＵ１０に通達する。
【００６０】
［キャッシュの構成］
次に、図３〜図５を用いて、図１に示した情報処理システム１の構成を説明する。図３は、実施例１に係るキャッシュの構成を示すブロック図であり、図４は、利用情報格納部を説明するための図であり、図５は、キャッシュコントローラの構成を説明するための図である。なお、図３〜図５に示す一次キャッシュ１５の構成は、図１に示す二次キャッシュ２０と同様の構成である。
【００６１】
図３に示すように、キャッシュ１５は、利用情報格納部１５ａ、キャッシュデータ１５ｂおよびキャッシュコントローラ１５ｃを備え、キャッシュコントローラ１５ｃが利用情報格納部１５ａおよびキャッシュデータ１５ｂ内のデータの読み書きを行う。以下にこれらの各部の処理を説明する。
【００６２】
利用情報格納部１５ａは、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納する。具体的には、利用情報格納部１５ａは、図４に示すように、命令のデータに係るタグと、命令のデータに係るインデックスと、プリフェッチされたデータがアクセスされたか否かを示す利用情報と、プリフェッチする原因となった命令を一意に識別する命令識別子とを対応付けて記憶する。なお、命令識別子として、命令の格納されているメモリ上のアドレスを用いるようにしてもよい。
【００６３】
キャッシュデータ１５ｂは、メインメモリ３０に格納されているデータの一部が格納されおり、メインメモリ３０よりアクセス速度が速く、後述するキャッシュコントローラ１５ｃによって読み書きされるデータを格納される。
【００６４】
キャッシュコントローラ１５ｃは、プリフェッチされたデータの利用情報を利用情報格納部１５ａに書き込み、また、キャッシュ領域のデータが破棄される場合に、破棄されるデータの利用情報を利用情報格納部１５ａから読み出す。
【００６５】
ここで、キャッシュコントローラ１５ｃの具体的な構成について、図５を用いて説明する。キャッシュコントローラ１５ｃは、制御部１５０と利用識別部１５１とプリフェッチミス検出部１５２とを備える。以下にこれらの各部の処理を説明する。
【００６６】
制御部１５０は、キャッシュコントローラの各種処理を制御する。具体的には、制御部１５０は、ＣＰＵ１０からメモリアクセスを受け付けると、キャッシュにヒットしたか否かを判定し、その結果、キャッシュにヒットしたと判定された場合には、利用情報をセットする。
【００６７】
また、制御部１５０は、キャッシュにヒットしていないと判定された場合には、置換対象となるキャッシュ（つまり、破棄となるデータ）を選定し、その置換対象の利用情報がセットされているか否かの判定を後述する利用識別部１５１に指示する。その後、制御部１５０は、利用識別部１５１によって置換対象の利用情報がセットされたと判定された後、または後に詳述するプリフェッチミス検出部１５２によってプリフェッチミス検出処理が行われた後、プリフェッチミスによるアクセスかを判定する。
【００６８】
その結果、制御部１５０は、プリフェッチミスによるアクセスであると判定された場合には、利用情報をリセットし、一方、プリフェッチミスによるアクセスでないと判定された場合には、利用情報をセットする。
【００６９】
利用識別部１５１は、破棄されるデータの利用情報を利用情報格納部１５ａから読み出す。具体的には、利用識別部１５１は、置換対象の利用情報がセットされているか否かの判定をする旨の指示を受け付けた後、その置換対象の利用情報がセットされているか否かを判定する。
【００７０】
その結果、利用識別部１５１は、置換対象の利用情報がセットされている場合には、その旨を制御部１５０に通知し、一方、置換対象の利用情報がセットされていない場合には、プリフェッチミスの検出処理を行う旨の指示をプリフェッチミス検出部１５２に通知する。
【００７１】
プリフェッチミス検出部１５２は、プリフェッチミスを検出する。具体的には、プリフェッチミス検出部１５２は、利用識別部１５１によってプリフェッチミスの検出処理を行う旨の指示を受け付けた場合には、プリフェッチミスの検出処理を行う。つまり、プリフェッチミスを計上するためにＣＰＵ１０のカウンタ１４ａにプリフェッチミス回数をインクリメントする旨の指示を通知する。
【００７２】
［情報処理システムによる処理］
次に、図６および図７を用いて、実施例１に係る情報処理システム１による処理を説明する。図６は、実施例１に係る情報処理システムによる利用情報書込処理動作を示すフローチャートであり、図７は、実施例１に係る情報処理システムによるプリフェッチミス検出処理動作の詳細を示すフローチャートである。
【００７３】
情報処理システム１のキャッシュ２０は、図６に示すように、ＣＰＵ１０からメモリアクセスを受け付けると（ステップＳ１０１肯定）、キャッシュにヒットしたか否かを判定し（ステップＳ１０２）、その結果、キャッシュデータ１５ｂにヒットしたと判定された場合には（ステップＳ１０２肯定）、利用情報をセットする（ステップＳ１０８）。
【００７４】
また、キャッシュ２０は、キャッシュデータ１５ｂにヒットしていないと判定された場合には（ステップＳ１０２否定）、置換対象となるキャッシュを選定し（ステップＳ１０３）、その置換対象の利用情報がセットされているか否かを判定する（ステップＳ１０４）。
【００７５】
その結果、キャッシュ２０は、置換対象の利用情報がセットされている場合には（ステップＳ１０４肯定）、プリフェッチミスによるアクセスかを判定し（ステップＳ１０６）、一方、置換対象の利用情報がセットされていない場合には（ステップＳ１０４否定）、後に詳述するプリフェッチミスの検出処理を行った後（ステップＳ１０５）、プリフェッチミスによるアクセスかを判定する（ステップＳ１０６）。
【００７６】
その結果、キャッシュ２０は、プリフェッチミスによるアクセスであると判定された場合には（ステップＳ１０６肯定）、利用情報をリセットし（ステップＳ１０７）、一方、プリフェッチミスによるアクセスでないと判定された場合には（ステップＳ１０６否定）、利用情報をセットする（ステップＳ１０８）。
【００７７】
続いて、図７を用いて、実施例１に係る情報処理システムによるプリフェッチミス検出処理（Ｓ１０５）を説明する。まず、情報処理システム１のキャッシュ２０は、プリフェッチミスが検出されると（ステップＳ２０１肯定）、ＣＰＵ１０に通知する。そして、ＣＰＵ１０は、カウンタ１４ａをカウントアップし（ステップＳ２０２）、カウンタ１４ａがオーバーフローしたか否かを判定する（ステップＳ２０３）。
【００７８】
その結果、ＣＰＵ１０は、カウンタ１４ａがオーバーフローしたと判定した場合には（ステップＳ２０３肯定）、カウンタ１４ａがオーバーフローしたことをプログラムに通知する（ステップＳ２０４）。一方、ＣＰＵ１０は、カウンタ１４ａがオーバーフローしていないと判定した場合には（ステップＳ２０３否定）、プリフェッチ検出処理を終了する。
【００７９】
[実施例１の効果]
上述してきたように、実施例１によれば、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納し、プリフェッチされたデータの利用情報を書き込むので、メインメモリ３０からキャッシュ領域に読み出されたデータが実際に使用されているか否かを判定し、プリフェッチをしていることが有効に働いているか否かを識別することが可能である。
【００８０】
また、実施例１によれば、キャッシュ領域のデータが破棄される場合に、破棄されるデータの利用情報を読み出すので、キャッシュ領域のデータが破棄される際に、そのデータがアクセスされたか否かが利用情報から識別できる結果、プリフェッチが無駄であったかを識別することが可能である。
【００８１】
また、実施例１によれば、読み出された利用情報を用いて、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数をカウンタに計上するので、プリフェッチミス回数を調べることが可能である。
【００８２】
また、実施例１によれば、計上されたプリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数に変換するので、開発者がプログラムを実行した際、どの程度プリフェッチ機能が有効に動作しているか確認することが可能である。
【００８３】
また、実施例１によれば、計上されたプリフェッチミス回数が所定の閾値を超えたことをプログラムに通知するので、カウンタのインクリメントが頻繁に発生するような状況においても、正しくプリフェッチミス回数を計上することが可能である。
【００８４】
また、実施例１によれば、プリフェッチする原因となった命令を一意に識別する命令識別子に、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を書き込むので、プリフェッチミスした場合に、そのプリフェッチミスをしたデータを取得させた命令がどの命令なのか一意に判別することが可能である。
【００８５】
また、実施例１によれば、変換されたプログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して定期的に読み出すので、プログラム中のどの箇所でプリフェッチに失敗しているかを確認することが可能である。
【実施例２】
【００８６】
ところで、上記の実施例１ではプリフェッチミスを検出する場合を説明したが、本発明はこれに限定されるものではなく、検出されたプリフェッチミスを用いて、効果の見込みが少ないプリフェッチに係る命令を無効化するようにしてもよい。
【００８７】
そこで、以下の実施例２では、命令識別子ごとにプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を用いて、効果の見込みが少ないプリフェッチに係る命令を無効化する場合として、図８および図９を用いて、実施例２における情報処理システム１ａのキャッシュ１５の構成およびプリフェッチ無効化処理について説明する。図８は、実施例２における情報処理システム１ａのキャッシュ１５の構成を説明するための図であり、図９は、情報処理システム１ａにおけるキャッシュ１５のプリフェッチ無効化処理手順を説明するためのフローチャートである。
【００８８】
まず最初に、図８を用いて、実施例２に係る情報処理システム１ａにおけるキャッシュ１５の構成を説明する。実施例２の情報処理システム１ａのキャッシュ１５は、図５に示した実施例１に係るキャッシュ１５と比較して、プリフェッチ成否履歴を備える点が相違する。
【００８９】
プリフェッチ成否履歴１５ｄは、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を命令識別子ごとに格納する。具体的には、プリフェッチ成否履歴１５ｄは、キャッシュコントローラ１５ｃによって読み書きされ、プリフェッチ実行時に、そのプリフェッチを実行するか否かを判定する際に参照される。具体的な例を挙げて説明すると、プリフェッチ成否履歴１５ｄは、命令識別子とプリフェッチ成功回数、プリフェッチ失敗回数とを対応付けて記憶している。
【００９０】
次に、図９を用いて実施例２に係るキャッシュ１５のプリフェッチ処理について説明する。このアクセス制御処理は、命令識別子の命令により実施されるプリフェッチを無効化する処理を行う。
【００９１】
情報処理システム１ａのキャッシュ１５は、プリフェッチの指示を受け付けると（ステップＳ３０１）、同じ命令識別子を持つ命令から発行されたプリフェッチについてミスの履歴をプリフェッチ成否履歴１５ｄからプリフェッチ成功履歴情報を読み出して検査する（ステップＳ３０２）。
【００９２】
キャッシュ１５は、プリフェッチ成否履歴１５ｄから読み出したプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値より高いか低いかを判定する。具体的には、キャッシュ１５は、プリフェッチミスが発生する可能性が高いかを判定する（ステップＳ３０３）。
【００９３】
その結果、キャッシュ１５は、プリフェッチミスが発生する可能性が高くない場合には（ステップＳ３０３否定）、プリフェッチを実行し（ステップＳ３０４）、一方、プリフェッチミスが発生する可能性が高い場合には（ステップＳ３０３肯定）、プリフェッチを無効化する（ステップＳ３０５）。
【００９４】
このように、上記の実施例２では、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を命令の命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、その利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断することが可能である。
【００９５】
また、上記の実施例２では、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、無駄なメモリアクセスが減少し、消費電力が削減され、また、バストラフィックの減少により重要なメモリ操作が優先的に行われるようになり、システムとしての性能も向上することが可能である。
【実施例３】
【００９６】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例３として本発明に含まれる他の実施例を説明する。
【００９７】
（１）グループＩＤ
上記の実施例１では、命令を一意に識別する命令識別子ごとに利用情報を格納する場合を説明したが、本発明はこれに限定されるものではなく、命令識別子をほぼ一意に特定するグループＩＤごとに利用情報を格納するようにしてもよい。
【００９８】
具体的には、実施例３における情報処理システムの利用情報格納部は、図１０に示すように、利用情報とグループＩＤとを対応付けて記憶されている。このグループＩＤは、命令のアドレスに応じて振り分けられたグループを一意に特定し、近傍で実行される命令について重複しにくいハッシュ関数により求められる。
【００９９】
また、プリフェッチ成否履歴は、グループＩＤと成否統計情報とを対応付けて記憶する。そして、プリフェッチ成否履歴は、図１１に示すように、プリフェッチ実行時にその命令のグループＩＤに対応する成否統計情報を読み出され、プリフェッチを実施するか無効化するかの判定に用いられる。
【０１００】
このように、ＣＰＵ上で実行される命令のアドレスに応じて振り分けられたグループを一意に特定するグループＩＤに、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令のグループＩＤに対応する利用情報を書き込むので、グループＩＤで命令をほぼ一意に特定し、利用情報格納部に格納されるエントリ数を減らす事が可能である。
【０１０１】
また、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報をグループＩＤごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令が振り分けられたグループＩＤの利用情報を読み出し、利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断するとともに、利用情報格納部に格納されるエントリ数を減らす事が可能である。
【０１０２】
また、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下のグループＩＤを検出し、検出されたグループＩＤの命令により実施されるプリフェッチを無効化するので、システムとしての性能も向上するとともに、利用情報格納部に格納されるエントリ数を減らす事が可能である。
【０１０３】
（２）遷移情報
また、上記の実施例１では、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納する場合を説明したが、本発明はこれに限定されるものではなく、プリフェッチの成否により遷移される遷移情報を格納するようにしてもよい。
【０１０４】
具体的には、実施例３における情報処理システムは、プリフェッチの成否により遷移される遷移情報を命令識別子ごとに格納する。例えば、情報処理システムは、図１２に示すように、単純な履歴ではなく、プリフェッチの成否に応じて状態を遷移させて管理する。この図１２の例ではプリフェッチが成功した際には２ビットの値がインクリメントされ、失敗した際にはデクリメントされる。なお、遷移情報を命令識別子ごとに格納するだけでなく、遷移情報をグループＩＤごとに格納する。
【０１０５】
このように、プリフェッチの成否により遷移される遷移情報を命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、利用情報に応じて、格納された遷移情報を遷移するので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断することが可能である。
【０１０６】
また、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ない命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。
【０１０７】
また、プリフェッチの成否により遷移される遷移情報をグループＩＤごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令のグループＩＤに対応する利用情報を読み出し、利用情報に応じて、遷移情報を遷移するので、遷移情報格納部に格納されるエントリ数を減らすとともに、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。
【０１０８】
また、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ないグループＩＤを検出し、検出されたグループＩＤの命令により実施されるプリフェッチを無効化するので、命令によるプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断するとともに、利用情報格納部に格納されるエントリ数を減らす事が可能である。
【０１０９】
（３）コンパイラ
また、本発明では、コンパイラを用いて、プリフェッチに関する最適化を行うようにしてもよい。具体的には、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化する。例えば、この最適化では、失敗していたソフトウェア・プリフェッチを削除、または失敗しないような位置に再挿入する。
【０１１０】
このように、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、例えば、失敗していたソフトウェア・プリフェッチを削除、または失敗しないような位置に再挿入する結果、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能が向上することが可能である。
【０１１１】
また、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、正しくプリフェッチミス回数を計上するとともに、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能を向上することが可能である。
【０１１２】
（４）システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、利用識別部１５１とプリフェッチミス検出部１５２を統合してもよい。
【産業上の利用可能性】
【０１１３】
以上のように、本発明に係る情報処理システムは、ＣＰＵによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行うことに有用であり、特に、プリフェッチをしていることが有効に働いているか否かを識別する場合に適する。
【図面の簡単な説明】
【０１１４】
【図１】実施例１に係る情報処理システムの概要および特徴を説明するための図である。
【図２】実施例１に係る情報処理システムの構成を示すブロック図である。
【図３】実施例１に係るキャッシュの構成を示すブロック図である。
【図４】利用情報格納部を説明するための図である。
【図５】キャッシュコントローラの構成を説明するための図である。
【図６】実施例１に係る情報処理システムによる利用情報書込処理動作を示すフローチャートである。
【図７】実施例１に係る情報処理システムによるプリフェッチミス検出処理動作の詳細を示すフローチャートである。
【図８】実施例２における情報処理システム１ａのキャッシュ１５の構成を説明するための図である。
【図９】情報処理システム１ａにおけるキャッシュ１５のプリフェッチ無効化処理手順を説明するためのフローチャートである。
【図１０】実施例３に係る情報処理システムを説明するための図である。
【図１１】実施例３に係る情報処理システムを説明するための図である。
【図１２】実施例３に係る情報処理システムを説明するための図である。
【符号の説明】
【０１１５】
１  情報処理システム
１０  ＣＰＵ
１１  命令制御部
１２  演算部
１３  メモリアクセス部
１４  性能モニタリング機能部
１４ａ  カウンタ
１５  一次キャッシュ
１５ａ、２０ａ  利用情報格納部
１５ａ  タグ情報
１５ｂ  キャッシュデータ
１５ｃ  キャッシュコントローラ
１５ｄ  プリフェッチ成否履歴格納部
１５０  制御部
１５１  利用識別部
１５２  プリフェッチミス検出部
２０  ２次キャッシュ
３０  メインメモリ
【手続補正書】
【提出日】平成22年1月12日(2010.1.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを格納する主記憶装置に接続される演算処理装置であって、
前記主記憶装置に格納されるデータの一部を保持するキャッシュメモリと、
アクセスが予測されるデータを前記主記憶装置から読み出して、前記キャッシュメモリに保持させるプリフェッチを実行するプリフェッチ制御部と、
前記プリフェッチ制御部が前記プリフェッチを実行する原因となった命令を一意に識別する命令識別子に、前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を対応付けて格納する利用情報格納部と、
前記キャッシュメモリにプリフェッチされたデータの利用情報を前記利用情報格納部に書き込む利用情報書込部を有することを特徴とする演算処理装置。
【請求項２】
前記演算処理装置はさらに、
前記キャッシュメモリに保持されたデータが破棄される場合に、前記破棄されるデータの利用情報を前記利用情報格納部から読み出す利用情報読出部を有することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記演算処理装置はさらに、
前記利用情報読出部が読み出した利用情報を用いて、プリフェッチされたデータがアクセスされなかった回数を表すプリフェッチミス回数を計数する計数部を有することを特徴とする請求項２記載の演算処理装置。
【請求項４】
前記演算処理装置はさらに、
前記計数部が計数したプリフェッチミス回数をプログラムが利用可能な形式に変換する変換部を有することを特徴とする請求項３記載の演算処理装置。
【請求項５】
前記演算処理装置はさらに、
前記計数部が計数したプリフェッチミス回数が所定の閾値を超えた場合、プログラムに通知する通知部を有することを特徴とする請求項３記載の演算処理装置。
【請求項６】
前記演算処理装置はさらに、
前記プリフェッチ制御部がプリフェッチを実行する原因となった命令を一意に識別する命令識別子ごとに、前記プリフェッチされたデータがアクセスされたか否かの履歴を示すプリフェッチ履歴情報を対応付けて格納する履歴格納部と、
前記キャッシュメモリに保持されたデータが破棄される場合に、前記破棄されるデータをプリフェッチする原因となった命令の命令識別子に対応する利用情報を前記利用情報格納部から読み出すとともに、前記読み出した利用情報を用いて、前記プリフェッチ履歴情報を前記履歴格納部に書き込む履歴書込部を有することを特徴とする請求項１記載の演算処理装置。
【請求項７】
前記演算処理装置はさらに、
前記履歴格納部に格納されたプリフェッチ履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出する命令検出部と、
前記命令検出部が検出した前記命令識別子に対応する命令を原因として実行されるプリフェッチを無効化するプリフェッチ無効化部を有することを特徴とする請求項６記載の演算処理装置。
【請求項８】
前記演算処理装置において、
前記利用情報格納部は、
前記演算処理装置で実行させる命令のアドレスに応じて振り分けられたグループを一意に特定するグループ識別子に、前記命令を原因としてプリフェッチされたデータの利用情報を対応付けて格納し、
前記利用情報書込部は、
前記データがプリフェッチされる原因となった命令のグループ識別子に対応する利用情報を前記利用情報格納部に書き込むことを特徴とする請求項６記載の演算処理装置。
【請求項９】
前記演算処理装置はさらに、
プリフェッチ履歴情報を前記グループ識別子ごとに格納するグループ履歴格納部と、
前記キャッシュメモリに保持されたデータが破棄される場合に、前記破棄されるデータをプリフェッチする原因となった命令が振り分けられたグループに対応するグループ識別子の利用情報を前記利用情報格納部から読み出すとともに、前記読み出した利用情報を用いて、プリフェッチ履歴情報を前記グループ履歴格納部に書き込むグループ履歴書込部を有することを特徴とする請求項８記載の演算処理装置。
【請求項１０】
前記演算処理装置はさらに、
前記グループ履歴格納部に格納されたプリフェッチ履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下のグループ識別子を検出するグループ識別子検出部と、
前記グループ識別子検出部が検出した前記グループ識別子に対応するグループに振り分けられた命令を原因として実行されるプリフェッチを無効化するグループ無効化部を有する事を特徴とする請求項９記載の演算処理装置。
【請求項１１】
前記演算処理装置はさらに、
前記プリフェッチされたデータがアクセスされたか否かの成否により遷移される遷移情報を前記命令識別子ごとに格納する遷移情報格納部と、
前記キャッシュメモリに保持されたデータが破棄される場合に、前記破棄されるデータをプリフェッチする原因となった命令の命令識別子に対応する利用情報を前記利用情報格納部から読み出し、前記読み出した利用情報に応じて、前記遷移情報格納部に格納された遷移情報を遷移する遷移部を有することを特徴とする請求項１記載の演算処理装置。
【請求項１２】
前記演算処理装置はさらに、
前記遷移情報格納部に格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ない命令識別子を検出する遷移命令検出部と、前記遷移命令検出部が検出した命令識別子に対応する命令を原因として実行されるプリフェッチを無効化するプリフェッチ無効化部を有することを特徴とする請求項１１記載の演算処理装置。
【請求項１３】
前記演算処理装置はさらに、
前記プリフェッチされたデータがアクセスされたか否かの成否により遷移される遷移情報を前記グループ識別子ごとに格納するグループ遷移情報格納部と、
前記キャッシュメモリに保持されたデータが破棄される場合に、前記破棄されるデータをプリフェッチする原因となった命令のグループ識別子に対応する利用情報を前記利用情報格納部から読み出し、前記読み出した利用情報に応じて、前記グループ遷移情報格納部に格納された遷移情報を遷移するグループ遷移部を有することを特徴とする請求項８記載の演算処理装置。
【請求項１４】
前記演算処理装置はさらに、
前記グループ遷移情報格納部に格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ないグループ識別子を検出する遷移グループ検出部と、
前記遷移グループ検出部が検出したグループ識別子に対応するグループに振り分けられた命令を原因として実行されるプリフェッチを無効化するグループ無効化部を有することを特徴とする請求項１３記載の演算処理装置。
【請求項１５】
データを格納する主記憶装置と、前記主記憶装置に接続される演算処理装置を有する情報処理装置であって、
前記演算処理装置は、
前記主記憶装置に格納されるデータの一部を保持するキャッシュメモリと、
アクセスが予測されるデータを前記主記憶装置から読み出して、前記キャッシュメモリに保持させるプリフェッチを実行するプリフェッチ制御部と、
前記プリフェッチ制御部が前記プリフェッチを実行する原因となった命令を一意に識別する命令識別子に、前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を対応付けて格納する利用情報格納部と、
前記キャッシュメモリにプリフェッチされたデータの利用情報を前記利用情報格納部に書き込む利用情報書込部を有することを特徴とする情報処理装置。
【請求項１６】
データを格納する主記憶装置に接続される演算処理装置の制御方法であって、
前記演算処理装置が有するプリフェッチ制御部が、アクセスが予測されるデータを前記主記憶装置から読み出して、前記主記憶装置に格納されるデータの一部を保持するキャッシュメモリに保持させるプリフェッチを実行するステップと、
前記演算処理装置が有する利用情報書込部が、前記プリフェッチ制御部が前記プリフェッチを実行する原因となった命令を一意に識別する命令識別子に、前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を、前記演算処理装置が有する利用情報格納部に対応付けて書き込むステップを有することを特徴とする演算処理装置の制御方法。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００８８
【補正方法】変更
【補正の内容】
【００８８】
まず最初に、図８を用いて、実施例２に係る情報処理システム１ａにおけるキャッシュ１５の構成を説明する。実施例２の情報処理システム１ａのキャッシュ１５は、図５に示した実施例１に係るキャッシュ１５と比較して、プリフェッチ成功履歴格納部１５ｄを備える点が相違する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００８９
【補正方法】変更
【補正の内容】
【００８９】
プリフェッチ成否履歴格納部１５ｄは、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を命令識別子ごとに格納する。具体的には、プリフェッチ成否履歴格納部１５ｄは、キャッシュコントローラ１５ｃによって読み書きされ、プリフェッチ実行時に、そのプリフェッチを実行するか否かを判定する際に参照される。具体的な例を挙げて説明すると、プリフェッチ成否履歴格納部１５ｄは、命令識別子とプリフェッチ成功回数、プリフェッチ失敗回数とを対応付けて記憶している。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００９１
【補正方法】変更
【補正の内容】
【００９１】
情報処理システム１ａのキャッシュ１５は、プリフェッチの指示を受け付けると（ステップＳ３０１）、同じ命令識別子を持つ命令から発行されたプリフェッチについてミスの履歴をプリフェッチ成否履歴格納部１５ｄからプリフェッチ成功履歴情報を読み出して検査する（ステップＳ３０２）。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００９２
【補正方法】変更
【補正の内容】
【００９２】
キャッシュ１５は、プリフェッチ成否履歴格納部１５ｄから読み出したプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値より高いか低いかを判定する。具体的には、キャッシュ１５は、プリフェッチミスが発生する可能性が高いかを判定する（ステップＳ３０３）。
【国際調査報告】
2008093399.tif 000015
2008093399.tif 000016
2008093399.tif 000017
2008093399.tif 000018