JPWO2008093399A1 - 演算処理装置、情報処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置、情報処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JPWO2008093399A1
JPWO2008093399A1 JP2008555969A JP2008555969A JPWO2008093399A1 JP WO2008093399 A1 JPWO2008093399 A1 JP WO2008093399A1 JP 2008555969 A JP2008555969 A JP 2008555969A JP 2008555969 A JP2008555969 A JP 2008555969A JP WO2008093399 A1 JPWO2008093399 A1 JP WO2008093399A1
Authority
JP
Japan
Prior art keywords
prefetch
instruction
data
usage information
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008555969A
Other languages
English (en)
Other versions
JP4491500B2 (ja
Inventor
隆志 豊島
隆志 豊島
周史 山村
周史 山村
森 敦司
敦司 森
青木 孝
孝 青木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2008093399A1 publication Critical patent/JPWO2008093399A1/ja
Application granted granted Critical
Publication of JP4491500B2 publication Critical patent/JP4491500B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

情報処理システム(1)のキャッシュ(20)は、プリフェッチされたデータがアクセスされたか否かを示す利用情報と、プリフェッチする原因となった命令を一意に識別する命令識別子とを対応付けて格納する利用情報格納部(20a)を備える。このような構成のもと、情報処理システム(1)は、プリフェッチされたデータの利用情報を利用情報格納部(20a)に書き込む。そして、情報処理システム(1)は、CPU(10)からプリフェッチされたデータに対してアクセスが行われた場合には、利用情報をセットする。その後、情報処理システム(1)は、キャッシュ(20)のデータが破棄される際に、破棄されるデータの利用情報を利用情報格納部(20a)から読み出す。具体的には、情報処理システム(1)は、利用情報格納部(20a)から利用情報を読み出し、利用されたか否かを判別してプリフェッチミスを検出する。

Description

この発明は、CPUによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理システムおよび情報処理方法に関する。
従来より、処理速度を上げるために、メインメモリではなくアクセス速度の速いCPU内のキャッシュ領域にデータを確保する方法が実施されている。このキャッシュ領域にどのデータを置くか判定する方法として、事前にCPUによってアクセスされそうなデータを予測し、その予測されたデータをメインメモリから読み出して、予めキャッシュ領域に確保しておくプリフェッチが知られている(例えば、特許文献1)。
ところが、このプリフェッチでは、事前にアクセスされそうなデータを予測し、メインメモリから読み出すので、予測ミスが発生した際には、必要のないデータがキャッシュ領域に載ることになり、本来キャッシュ領域に載っているべきデータが追い出されてしまう。このため、プリフェッチの予測精度が低下すると、メモリの平均的なアクセス速度が低下してしまう。
このため、プリフェッチの予測精度を上げる技術として、例えば特許文献2では、シーケンシャルアクセスであるか否かを判断し、シーケンシャルアクセスであると判定した場合には、所定量のデータをキャッシュ領域にプリフェッチする技術が開示されている。
特開平10−320285号公報 特開平4−340637号公報
ところで、上記した従来の技術では、メインメモリからキャッシュ領域に読み出されたデータが実際に使用されているか否かを検出することができないので、プリフェッチをしていることが有効に働いているか否かを認識することができないという課題があった。
そこで、この発明は、メインメモリからキャッシュ領域に読み出されたデータが実際に使用されているか否かを検出し、プリフェッチをしていることが有効に働いているか否かを認識することを目的とする。
上述した課題を解決し、目的を達成するため、本発明は、CPUによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理システムであって、前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納する利用情報格納手段と、前記プリフェッチされたデータの利用情報を前記利用情報格納手段に書き込む利用情報書込手段と、を備えることを特徴とする。
また、本発明は、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータの利用情報を前記利用情報格納手段から読み出す利用情報読出手段をさらに備えることを特徴とする。
また、本発明は、前記利用情報読出手段によって読み出された利用情報を用いて、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数をカウンタに計上する計上手段をさらに備えることを特徴とする。
また、本発明は、前記計上手段によって計上された前記プリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数に変換する変換手段をさらに備えることを特徴とする。
また、本発明は、前記計上手段によって計上された前記プリフェッチミス回数が所定の閾値を超えたことをプログラムに通知する通知手段をさらに備えることを特徴とする。
また、本発明は、前記利用情報格納手段は、プリフェッチする原因となった命令を一意に識別する命令識別子に、当該命令によってプリフェッチされたデータの利用情報を対応付けて格納し、前記利用情報書込手段は、データを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段に書き込むことを特徴とする。
また、本発明は、前記命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を当該命令の命令識別子ごとに格納するプリフェッチ成功履歴格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報を用いて、前記プリフェッチ成功履歴情報を書き込む成功履歴書込手段とをさらに備えることを特徴とする。
また、本発明は、前記プリフェッチ成功履歴格納手段に格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出する命令検出手段と、前記命令検出手段によって検出された前記命令識別子の命令により実施されるプリフェッチを無効化するプリフェッチ無効化手段とをさらに備えたことを特徴とする。
また、本発明は、前記利用情報格納手段は、前記CPU上で実行される命令のアドレスに応じて振り分けられたグループを一意に特定するグループ識別子に、当該命令によってプリフェッチされたデータの利用情報を対応付けて格納し、前記利用情報書込手段は、データを前記キャッシュ領域に格納する原因となった命令のグループ識別子に対応する前記利用情報を前記利用情報格納手段に書き込むことを特徴とする。
また、本発明は、前記命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を前記グループ識別子ごとに格納するグループ成功履歴格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令が振り分けられた前記グループ識別子の利用情報を前記利用情報格納手段から読み出し、当該利用情報を用いて、前記プリフェッチ成功履歴情報を書き込むグループ履歴書込手段とをさらに備えることを特徴とする。
また、本発明は、前記プリフェッチ成功履歴格納手段に格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下のグループ識別子を検出するグループ識別子検出手段と、前記グループ識別子検出手段によって検出された前記グループ識別子の命令により実施されるプリフェッチを無効化するグループ無効化手段とをさらに備えたことを特徴とする。
また、本発明は、プリフェッチの成否により遷移される遷移情報を前記命令識別子ごとに格納する遷移情報格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報に応じて、前記遷移情報格納手段に格納された前記遷移情報を遷移する遷移手段とをさらに備えることを特徴とする。
また、本発明は、前記遷移情報格納手段に格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ない命令識別子を検出する遷移命令検出手段と、前記遷移命令検出手段によって検出された前記命令識別子の命令により実施されるプリフェッチを無効化するプリフェッチ無効化手段とをさらに備えたことを特徴とする。
また、本発明は、プリフェッチの成否により遷移される遷移情報を前記グループ識別子ごとに格納するグループ遷移情報格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令のグループ識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報に応じて、前記遷移情報格納手段に格納された前記遷移情報を遷移するグループ遷移手段とをさらに備えることを特徴とする。
また、本発明は、前記遷移情報格納手段に格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ないグループ識別子を検出するグループ遷移検出手段と、前記グループ遷移検出手段によって検出された前記グループ識別子の命令により実施されるプリフェッチを無効化するグループ無効化手段とをさらに備えたことを特徴とする。
また、本発明は、前記変換手段によって変換された前記プログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して定期的に読み出す定期読出手段をさらに備えることを特徴とする。
また、本発明は、前記通知手段によって所定の閾値を超えたことが通知されると、前記変換手段によって変換された前記プログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して読み出す通知読出手段とをさらに備えることを特徴とする。
また、本発明は、前記定期読出手段によって前記プロファイラに読み出された前記プログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するプリフェッチ命令変更手段をさらに備えることを特徴とする。
また、本発明は、CPUによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理方法であって、前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を利用情報格納手段に格納する利用情報格納工程と、前記プリフェッチされたデータの利用情報を利用情報格納手段に書き込む利用情報書込工程と、を含んだことを特徴とする。
本発明によれば、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納し、プリフェッチされたデータの利用情報を書き込むので、メインメモリからキャッシュ領域に読み出されたデータが実際に使用されているか否かを判定し、プリフェッチをしていることが有効に働いているか否かを識別することが可能である。
また、本発明によれば、キャッシュ領域のデータが破棄される場合に、破棄されるデータの利用情報を読み出すので、キャッシュ領域のデータが破棄される際に、そのデータがアクセスされたか否かが利用情報から識別できる結果、プリフェッチが無駄であったかを識別することが可能である。
また、本発明によれば、読み出された利用情報を用いて、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数をカウンタに計上するので、プリフェッチミス回数を調べることが可能である。
また、本発明によれば、計上されたプリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数に変換するので、開発者がプログラムを実行した際、どの程度プリフェッチ機能が有効に動作しているか確認することが可能である。
また、本発明によれば、計上されたプリフェッチミス回数が所定の閾値を超えたことをプログラムに通知するので、カウンタのインクリメントが頻繁に発生し、カウンタ溢れが起こるような状況においても、正しくプリフェッチミス回数を計上することが可能である。
また、本発明によれば、プリフェッチする原因となった命令を一意に識別する命令識別子に、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を書き込むので、プリフェッチミスした場合に、そのプリフェッチミスをしたデータを取得させた命令がどの命令なのか一意に判別することが可能である。
また、本発明によれば、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を命令の命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、その利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断することが可能である。
また、本発明によれば、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、無駄なメモリアクセスが減少し、消費電力が削減され、また、バストラフィックの減少により重要なメモリ操作が優先的に行われるようになり、システムとしての性能も向上することが可能である。
また、本発明によれば、CPU上で実行される命令のアドレスに応じて振り分けられたグループを一意に特定するグループ識別子に、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令のグループ識別子に対応する利用情報を書き込むので、グループ識別子で命令をほぼ一意に特定し、利用情報格納手段に格納されるエントリ数を減らす事が可能である。
また、本発明によれば、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報をグループ識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令が振り分けられたグループ識別子の利用情報を読み出し、利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断するとともに、利用情報格納手段に格納されるエントリ数を減らす事が可能である。
また、本発明によれば、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下のグループ識別子を検出し、検出されたグループ識別子の命令により実施されるプリフェッチを無効化するので、システムとしての性能も向上するとともに、利用情報格納手段に格納されるエントリ数を減らす事が可能である。
また、本発明によれば、プリフェッチの成否により遷移される遷移情報を命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、利用情報に応じて、格納された遷移情報を遷移するので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断することが可能である。
また、本発明によれば、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ない命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。
また、本発明によれば、プリフェッチの成否により遷移される遷移情報をグループ識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令のグループ識別子に対応する利用情報を読み出し、利用情報に応じて、遷移情報を遷移するので、遷移情報格納手段に格納されるエントリ数を減らすとともに、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。
また、本発明によれば、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ないグループ識別子を検出し、検出されたグループ識別子の命令により実施されるプリフェッチを無効化するので、命令によるプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断するとともに、利用情報格納手段に格納されるエントリ数を減らす事が可能である。
また、本発明によれば、変換されたプログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して定期的に読み出すので、プログラム中のどの箇所でプリフェッチに失敗しているかを確認することが可能である。
また、本発明によれば、所定の閾値を超えたことが通知されると、変換されたプログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して読み出すので、正しくプリフェッチミス回数を計上するとともに、プログラム中のどの箇所でプリフェッチに失敗しているかを確認することが可能である。
また、本発明によれば、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、例えば、失敗していたソフトウェア・プリフェッチを削除、または失敗しないような位置に再挿入する結果、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能が向上することが可能である。
また、本発明によれば、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、正しくプリフェッチミス回数を計上するとともに、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能を向上することが可能である。
図1は、実施例1に係る情報処理システムの概要および特徴を説明するための図である。 図2は、実施例1に係る情報処理システムの構成を示すブロック図である。 図3は、実施例1に係るキャッシュの構成を示すブロック図である。 図4は、利用情報格納部を説明するための図である。 図5は、キャッシュコントローラの構成を説明するための図である。 図6は、実施例1に係る情報処理システムによる利用情報書込処理動作を示すフローチャートである。 図7は、実施例1に係る情報処理システムによるプリフェッチミス検出処理動作の詳細を示すフローチャートである。 図8は、実施例2における情報処理システム1aのキャッシュ15の構成を説明するための図である。 図9は、情報処理システム1aにおけるキャッシュ15のプリフェッチ無効化処理手順を説明するためのフローチャートである。 図10は、実施例3に係る情報処理システムを説明するための図である。 図11は、実施例3に係る情報処理システムを説明するための図である。 図12は、実施例3に係る情報処理システムを説明するための図である。
符号の説明
1 情報処理システム
10 CPU
11 命令制御部
12 演算部
13 メモリアクセス部
14 性能モニタリング機能部
14a カウンタ
15 一次キャッシュ
15a、20a 利用情報格納部
15a´ タグ情報
15b キャッシュデータ
15c キャッシュコントローラ
15d プリフェッチ成否履歴格納部
150 制御部
151 利用識別部
152 プリフェッチミス検出部
20 2次キャッシュ
30 メインメモリ
以下に添付図面を参照して、この発明に係る情報処理システムの実施例を詳細に説明する。
以下の実施例では、実施例1に係る情報処理システムの概要および特徴、情報処理システムの構成および処理の流れを順に説明し、最後に実施例1による効果を説明する。
[実施例1に係る情報処理システムの概要および特徴]
まず最初に、図1を用いて、実施例1に係る情報処理システムの概要および特徴を説明する。図1は、実施例1に係る情報処理システムの概要および特徴を説明するための図である。
実施例1の情報処理システム1では、CPUによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行うことを概要とする。そして、プリフェッチをしていることが有効に働いているか否かを識別する点に主たる特徴がある。
この主たる特徴について具体的に説明すると、実施例1に係る情報処理システム1は、図1に示すように、階層化されたメモリ構造を持ち、CPU10とキャッシュ20とメインメモリ30とで構成される。そして、キャッシュ20は、プリフェッチされたデータがアクセスされたか否かを示す利用情報と、プリフェッチする原因となった命令を一意に識別する命令識別子とを対応付けて格納する利用情報格納部20aを備える。なお、キャッシュ20は、CPU10内にあってもよいし、後述する図2のようにCPU10の内外両方に複数あってもよい。
このような構成のもと、情報処理システム1は、プリフェッチされたデータの利用情報を利用情報格納部20aに書き込む。具体的には、情報処理システム1は、新たなデータをキャッシュ20に載せる場合に、通常のメモリアクセスであれば利用情報をセット(図1の例では、利用情報「○」)し、プリフェッチによるアクセスであれば利用情報をリセット(図1の例では、利用情報「×」)する。そして、情報処理システム1は、CPU10からプリフェッチされたデータ(つまり、利用情報がリセットであるデータ)に対してアクセスが行われた場合には、利用情報をセットする。
その後、情報処理システム1は、キャッシュ20のデータが破棄される際に、破棄されるデータの利用情報を利用情報格納部20aから読み出す。具体的には、情報処理システム1は、利用情報格納部20aから利用情報を読み出し、利用されたか否かを判別してプリフェッチミスを検出する。
このように、情報処理システム1は、メインメモリ30からキャッシュ領域に読み出されたデータが実際に使用されているか否かを判定し、上記した主たる特徴のごとく、プリフェッチをしていることが有効に働いているか否かを識別することが可能である。
[情報処理システムの構成]
次に、図2を用いて、図1に示した情報処理システム1の構成を説明する。図2は、実施例1に係る情報処理システム1の構成を示すブロック図である。同図に示すように、この情報処理システム1は、CPU10、二次キャッシュ20およびメインメモリ30を備える。
情報処理システム1は、CPU10内の一次キャッシュ15、二次キャッシュ20およびメインメモリ30による階層化されたメモリ構造を持つ。つまり、一次キャッシュ15、二次キャッシュ20、メインメモリ30の順に処理速度が速く、その逆に、メインメモリ30、二次キャッシュ20、一次キャッシュ15の順に格納されているデータ量が多い。
CPU10は、各種命令を制御する命令制御部11、命令制御部11の命令に従って各種演算を行う演算部12、命令制御部11の命令に従ってメモリアクセスを行うメモリアクセス部13、CPU10の動的な実行時情報を、所定の手続きに基づきプログラム側で取得するための機能である性能モニタリング機能部14およびメインメモリ30に格納されたデータの一部を格納する一次キャッシュ15を備える。
性能モニタリング機能部14は、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数が計上されるカウンタ14aを備える。このような構成のもと、性能モニタリング機能部14は、カウンタ14aによって計上されたプリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数情報に変換する。そして、そのプリフェッチミス回数情報をプロファイラが読み出す。
具体的には、性能モニタリング機能部14は、インターフェースに準じて、プログラムから取得する事を可能な形で提供する。つまり、プログラム開発者が自身の開発したプログラムを実行した際、どの程度プリフェッチ機能が有効に動作しているのかを確認することが可能となる。
また、性能モニタリング機能部14は、計上されたプリフェッチミス回数が所定の閾値を超えたことをプログラムに通知する。つまり、性能モニタリング機能部14は、カウンタが溢れた際、割り込みによりCPU10に通達する。
[キャッシュの構成]
次に、図3〜図5を用いて、図1に示した情報処理システム1の構成を説明する。図3は、実施例1に係るキャッシュの構成を示すブロック図であり、図4は、利用情報格納部を説明するための図であり、図5は、キャッシュコントローラの構成を説明するための図である。なお、図3〜図5に示す一次キャッシュ15の構成は、図1に示す二次キャッシュ20と同様の構成である。
図3に示すように、キャッシュ15は、利用情報格納部15a、キャッシュデータ15bおよびキャッシュコントローラ15cを備え、キャッシュコントローラ15cが利用情報格納部15aおよびキャッシュデータ15b内のデータの読み書きを行う。以下にこれらの各部の処理を説明する。
利用情報格納部15aは、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納する。具体的には、利用情報格納部15aは、図4に示すように、命令のデータに係るタグと、命令のデータに係るインデックスと、プリフェッチされたデータがアクセスされたか否かを示す利用情報と、プリフェッチする原因となった命令を一意に識別する命令識別子とを対応付けて記憶する。なお、命令識別子として、命令の格納されているメモリ上のアドレスを用いるようにしてもよい。
キャッシュデータ15bは、メインメモリ30に格納されているデータの一部が格納されおり、メインメモリ30よりアクセス速度が速く、後述するキャッシュコントローラ15cによって読み書きされるデータを格納される。
キャッシュコントローラ15cは、プリフェッチされたデータの利用情報を利用情報格納部15aに書き込み、また、キャッシュ領域のデータが破棄される場合に、破棄されるデータの利用情報を利用情報格納部15aから読み出す。
ここで、キャッシュコントローラ15cの具体的な構成について、図5を用いて説明する。キャッシュコントローラ15cは、制御部150と利用識別部151とプリフェッチミス検出部152とを備える。以下にこれらの各部の処理を説明する。
制御部150は、キャッシュコントローラの各種処理を制御する。具体的には、制御部150は、CPU10からメモリアクセスを受け付けると、キャッシュにヒットしたか否かを判定し、その結果、キャッシュにヒットしたと判定された場合には、利用情報をセットする。
また、制御部150は、キャッシュにヒットしていないと判定された場合には、置換対象となるキャッシュ(つまり、破棄となるデータ)を選定し、その置換対象の利用情報がセットされているか否かの判定を後述する利用識別部151に指示する。その後、制御部150は、利用識別部151によって置換対象の利用情報がセットされたと判定された後、または後に詳述するプリフェッチミス検出部152によってプリフェッチミス検出処理が行われた後、プリフェッチミスによるアクセスかを判定する。
その結果、制御部150は、プリフェッチミスによるアクセスであると判定された場合には、利用情報をリセットし、一方、プリフェッチミスによるアクセスでないと判定された場合には、利用情報をセットする。
利用識別部151は、破棄されるデータの利用情報を利用情報格納部15aから読み出す。具体的には、利用識別部151は、置換対象の利用情報がセットされているか否かの判定をする旨の指示を受け付けた後、その置換対象の利用情報がセットされているか否かを判定する。
その結果、利用識別部151は、置換対象の利用情報がセットされている場合には、その旨を制御部150に通知し、一方、置換対象の利用情報がセットされていない場合には、プリフェッチミスの検出処理を行う旨の指示をプリフェッチミス検出部152に通知する。
プリフェッチミス検出部152は、プリフェッチミスを検出する。具体的には、プリフェッチミス検出部152は、利用識別部151によってプリフェッチミスの検出処理を行う旨の指示を受け付けた場合には、プリフェッチミスの検出処理を行う。つまり、プリフェッチミスを計上するためにCPU10のカウンタ14aにプリフェッチミス回数をインクリメントする旨の指示を通知する。
[情報処理システムによる処理]
次に、図6および図7を用いて、実施例1に係る情報処理システム1による処理を説明する。図6は、実施例1に係る情報処理システムによる利用情報書込処理動作を示すフローチャートであり、図7は、実施例1に係る情報処理システムによるプリフェッチミス検出処理動作の詳細を示すフローチャートである。
情報処理システム1のキャッシュ20は、図6に示すように、CPU10からメモリアクセスを受け付けると(ステップS101肯定)、キャッシュにヒットしたか否かを判定し(ステップS102)、その結果、キャッシュデータ15bにヒットしたと判定された場合には(ステップS102肯定)、利用情報をセットする(ステップS108)。
また、キャッシュ20は、キャッシュデータ15bにヒットしていないと判定された場合には(ステップS102否定)、置換対象となるキャッシュを選定し(ステップS103)、その置換対象の利用情報がセットされているか否かを判定する(ステップS104)。
その結果、キャッシュ20は、置換対象の利用情報がセットされている場合には(ステップS104肯定)、プリフェッチミスによるアクセスかを判定し(ステップS106)、一方、置換対象の利用情報がセットされていない場合には(ステップS104否定)、後に詳述するプリフェッチミスの検出処理を行った後(ステップS105)、プリフェッチミスによるアクセスかを判定する(ステップS106)。
その結果、キャッシュ20は、プリフェッチミスによるアクセスであると判定された場合には(ステップS106肯定)、利用情報をリセットし(ステップS107)、一方、プリフェッチミスによるアクセスでないと判定された場合には(ステップS106否定)、利用情報をセットする(ステップS108)。
続いて、図7を用いて、実施例1に係る情報処理システムによるプリフェッチミス検出処理(S105)を説明する。まず、情報処理システム1のキャッシュ20は、プリフェッチミスが検出されると(ステップS201肯定)、CPU10に通知する。そして、CPU10は、カウンタ14aをカウントアップし(ステップS202)、カウンタ14aがオーバーフローしたか否かを判定する(ステップS203)。
その結果、CPU10は、カウンタ14aがオーバーフローしたと判定した場合には(ステップS203肯定)、カウンタ14aがオーバーフローしたことをプログラムに通知する(ステップS204)。一方、CPU10は、カウンタ14aがオーバーフローしていないと判定した場合には(ステップS203否定)、プリフェッチ検出処理を終了する。
[実施例1の効果]
上述してきたように、実施例1によれば、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納し、プリフェッチされたデータの利用情報を書き込むので、メインメモリ30からキャッシュ領域に読み出されたデータが実際に使用されているか否かを判定し、プリフェッチをしていることが有効に働いているか否かを識別することが可能である。
また、実施例1によれば、キャッシュ領域のデータが破棄される場合に、破棄されるデータの利用情報を読み出すので、キャッシュ領域のデータが破棄される際に、そのデータがアクセスされたか否かが利用情報から識別できる結果、プリフェッチが無駄であったかを識別することが可能である。
また、実施例1によれば、読み出された利用情報を用いて、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数をカウンタに計上するので、プリフェッチミス回数を調べることが可能である。
また、実施例1によれば、計上されたプリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数に変換するので、開発者がプログラムを実行した際、どの程度プリフェッチ機能が有効に動作しているか確認することが可能である。
また、実施例1によれば、計上されたプリフェッチミス回数が所定の閾値を超えたことをプログラムに通知するので、カウンタのインクリメントが頻繁に発生するような状況においても、正しくプリフェッチミス回数を計上することが可能である。
また、実施例1によれば、プリフェッチする原因となった命令を一意に識別する命令識別子に、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を書き込むので、プリフェッチミスした場合に、そのプリフェッチミスをしたデータを取得させた命令がどの命令なのか一意に判別することが可能である。
また、実施例1によれば、変換されたプログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して定期的に読み出すので、プログラム中のどの箇所でプリフェッチに失敗しているかを確認することが可能である。
ところで、上記の実施例1ではプリフェッチミスを検出する場合を説明したが、本発明はこれに限定されるものではなく、検出されたプリフェッチミスを用いて、効果の見込みが少ないプリフェッチに係る命令を無効化するようにしてもよい。
そこで、以下の実施例2では、命令識別子ごとにプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を用いて、効果の見込みが少ないプリフェッチに係る命令を無効化する場合として、図8および図9を用いて、実施例2における情報処理システム1aのキャッシュ15の構成およびプリフェッチ無効化処理について説明する。図8は、実施例2における情報処理システム1aのキャッシュ15の構成を説明するための図であり、図9は、情報処理システム1aにおけるキャッシュ15のプリフェッチ無効化処理手順を説明するためのフローチャートである。
まず最初に、図8を用いて、実施例2に係る情報処理システム1aにおけるキャッシュ15の構成を説明する。実施例2の情報処理システム1aのキャッシュ15は、図5に示した実施例1に係るキャッシュ15と比較して、プリフェッチ成否履歴を備える点が相違する。
プリフェッチ成否履歴15dは、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を命令識別子ごとに格納する。具体的には、プリフェッチ成否履歴15dは、キャッシュコントローラ15cによって読み書きされ、プリフェッチ実行時に、そのプリフェッチを実行するか否かを判定する際に参照される。具体的な例を挙げて説明すると、プリフェッチ成否履歴15dは、命令識別子とプリフェッチ成功回数、プリフェッチ失敗回数とを対応付けて記憶している。
次に、図9を用いて実施例2に係るキャッシュ15のプリフェッチ処理について説明する。このアクセス制御処理は、命令識別子の命令により実施されるプリフェッチを無効化する処理を行う。
情報処理システム1aのキャッシュ15は、プリフェッチの指示を受け付けると(ステップS301)、同じ命令識別子を持つ命令から発行されたプリフェッチについてミスの履歴をプリフェッチ成否履歴15dからプリフェッチ成功履歴情報を読み出して検査する(ステップS302)。
キャッシュ15は、プリフェッチ成否履歴15dから読み出したプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値より高いか低いかを判定する。具体的には、キャッシュ15は、プリフェッチミスが発生する可能性が高いかを判定する(ステップS303)。
その結果、キャッシュ15は、プリフェッチミスが発生する可能性が高くない場合には(ステップS303否定)、プリフェッチを実行し(ステップS304)、一方、プリフェッチミスが発生する可能性が高い場合には(ステップS303肯定)、プリフェッチを無効化する(ステップS305)。
このように、上記の実施例2では、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を命令の命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、その利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断することが可能である。
また、上記の実施例2では、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、無駄なメモリアクセスが減少し、消費電力が削減され、また、バストラフィックの減少により重要なメモリ操作が優先的に行われるようになり、システムとしての性能も向上することが可能である。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例3として本発明に含まれる他の実施例を説明する。
(1)グループID
上記の実施例1では、命令を一意に識別する命令識別子ごとに利用情報を格納する場合を説明したが、本発明はこれに限定されるものではなく、命令識別子をほぼ一意に特定するグループIDごとに利用情報を格納するようにしてもよい。
具体的には、実施例3における情報処理システムの利用情報格納部は、図10に示すように、利用情報とグループIDとを対応付けて記憶されている。このグループIDは、命令のアドレスに応じて振り分けられたグループを一意に特定し、近傍で実行される命令について重複しにくいハッシュ関数により求められる。
また、プリフェッチ成否履歴は、グループIDと成否統計情報とを対応付けて記憶する。そして、プリフェッチ成否履歴は、図11に示すように、プリフェッチ実行時にその命令のグループIDに対応する成否統計情報を読み出され、プリフェッチを実施するか無効化するかの判定に用いられる。
このように、CPU上で実行される命令のアドレスに応じて振り分けられたグループを一意に特定するグループIDに、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令のグループIDに対応する利用情報を書き込むので、グループIDで命令をほぼ一意に特定し、利用情報格納部に格納されるエントリ数を減らす事が可能である。
また、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報をグループIDごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令が振り分けられたグループIDの利用情報を読み出し、利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断するとともに、利用情報格納部に格納されるエントリ数を減らす事が可能である。
また、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下のグループIDを検出し、検出されたグループIDの命令により実施されるプリフェッチを無効化するので、システムとしての性能も向上するとともに、利用情報格納部に格納されるエントリ数を減らす事が可能である。
(2)遷移情報
また、上記の実施例1では、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納する場合を説明したが、本発明はこれに限定されるものではなく、プリフェッチの成否により遷移される遷移情報を格納するようにしてもよい。
具体的には、実施例3における情報処理システムは、プリフェッチの成否により遷移される遷移情報を命令識別子ごとに格納する。例えば、情報処理システムは、図12に示すように、単純な履歴ではなく、プリフェッチの成否に応じて状態を遷移させて管理する。この図12の例ではプリフェッチが成功した際には2ビットの値がインクリメントされ、失敗した際にはデクリメントされる。なお、遷移情報を命令識別子ごとに格納するだけでなく、遷移情報をグループIDごとに格納する。
このように、プリフェッチの成否により遷移される遷移情報を命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、利用情報に応じて、格納された遷移情報を遷移するので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断することが可能である。
また、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ない命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。
また、プリフェッチの成否により遷移される遷移情報をグループIDごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令のグループIDに対応する利用情報を読み出し、利用情報に応じて、遷移情報を遷移するので、遷移情報格納部に格納されるエントリ数を減らすとともに、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。
また、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ないグループIDを検出し、検出されたグループIDの命令により実施されるプリフェッチを無効化するので、命令によるプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断するとともに、利用情報格納部に格納されるエントリ数を減らす事が可能である。
(3)コンパイラ
また、本発明では、コンパイラを用いて、プリフェッチに関する最適化を行うようにしてもよい。具体的には、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化する。例えば、この最適化では、失敗していたソフトウェア・プリフェッチを削除、または失敗しないような位置に再挿入する。
このように、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、例えば、失敗していたソフトウェア・プリフェッチを削除、または失敗しないような位置に再挿入する結果、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能が向上することが可能である。
また、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、正しくプリフェッチミス回数を計上するとともに、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能を向上することが可能である。
(4)システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、利用識別部151とプリフェッチミス検出部152を統合してもよい。
以上のように、本発明に係る情報処理システムおよび情報処理方法は、CPUによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行うことに有用であり、特に、プリフェッチをしていることが有効に働いているか否かを識別する場合に適する。
この発明は、CPUによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理システムに関する。
従来より、処理速度を上げるために、メインメモリではなくアクセス速度の速いCPU内のキャッシュ領域にデータを確保する方法が実施されている。このキャッシュ領域にどのデータを置くか判定する方法として、事前にCPUによってアクセスされそうなデータを予測し、その予測されたデータをメインメモリから読み出して、予めキャッシュ領域に確保しておくプリフェッチが知られている(例えば、特許文献1)。
ところが、このプリフェッチでは、事前にアクセスされそうなデータを予測し、メインメモリから読み出すので、予測ミスが発生した際には、必要のないデータがキャッシュ領域に載ることになり、本来キャッシュ領域に載っているべきデータが追い出されてしまう。このため、プリフェッチの予測精度が低下すると、メモリの平均的なアクセス速度が低下してしまう。
このため、プリフェッチの予測精度を上げる技術として、例えば特許文献2では、シーケンシャルアクセスであるか否かを判断し、シーケンシャルアクセスであると判定した場合には、所定量のデータをキャッシュ領域にプリフェッチする技術が開示されている。
特開平10−320285号公報 特開平4−340637号公報
ところで、上記した従来の技術では、メインメモリからキャッシュ領域に読み出されたデータが実際に使用されているか否かを検出することができないので、プリフェッチをしていることが有効に働いているか否かを認識することができないという課題があった。
そこで、この発明は、メインメモリからキャッシュ領域に読み出されたデータが実際に使用されているか否かを検出し、プリフェッチをしていることが有効に働いているか否かを認識することを目的とする。
上述した課題を解決し、目的を達成するため、本発明は、CPUによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理システムであって、前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納する利用情報格納手段と、前記プリフェッチされたデータの利用情報を前記利用情報格納手段に書き込む利用情報書込手段と、を備えることを特徴とする。
また、本発明は、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータの利用情報を前記利用情報格納手段から読み出す利用情報読出手段をさらに備えることを特徴とする。
また、本発明は、前記利用情報読出手段によって読み出された利用情報を用いて、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数をカウンタに計上する計上手段をさらに備えることを特徴とする。
また、本発明は、前記計上手段によって計上された前記プリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数に変換する変換手段をさらに備えることを特徴とする。
また、本発明は、前記計上手段によって計上された前記プリフェッチミス回数が所定の閾値を超えたことをプログラムに通知する通知手段をさらに備えることを特徴とする。
また、本発明は、前記利用情報格納手段は、プリフェッチする原因となった命令を一意に識別する命令識別子に、当該命令によってプリフェッチされたデータの利用情報を対応付けて格納し、前記利用情報書込手段は、データを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段に書き込むことを特徴とする。
また、本発明は、前記命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を当該命令の命令識別子ごとに格納するプリフェッチ成功履歴格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報を用いて、前記プリフェッチ成功履歴情報を書き込む成功履歴書込手段とをさらに備えることを特徴とする。
また、本発明は、前記プリフェッチ成功履歴格納手段に格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出する命令検出手段と、前記命令検出手段によって検出された前記命令識別子の命令により実施されるプリフェッチを無効化するプリフェッチ無効化手段とをさらに備えたことを特徴とする。
また、本発明は、前記利用情報格納手段は、前記CPU上で実行される命令のアドレスに応じて振り分けられたグループを一意に特定するグループ識別子に、当該命令によってプリフェッチされたデータの利用情報を対応付けて格納し、前記利用情報書込手段は、データを前記キャッシュ領域に格納する原因となった命令のグループ識別子に対応する前記利用情報を前記利用情報格納手段に書き込むことを特徴とする。
また、本発明は、前記命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を前記グループ識別子ごとに格納するグループ成功履歴格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令が振り分けられた前記グループ識別子の利用情報を前記利用情報格納手段から読み出し、当該利用情報を用いて、前記プリフェッチ成功履歴情報を書き込むグループ履歴書込手段とをさらに備えることを特徴とする。
また、本発明は、前記プリフェッチ成功履歴格納手段に格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下のグループ識別子を検出するグループ識別子検出手段と、前記グループ識別子検出手段によって検出された前記グループ識別子の命令により実施されるプリフェッチを無効化するグループ無効化手段とをさらに備えたことを特徴とする。
また、本発明は、プリフェッチの成否により遷移される遷移情報を前記命令識別子ごとに格納する遷移情報格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報に応じて、前記遷移情報格納手段に格納された前記遷移情報を遷移する遷移手段とをさらに備えることを特徴とする。
また、本発明は、前記遷移情報格納手段に格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ない命令識別子を検出する遷移命令検出手段と、前記遷移命令検出手段によって検出された前記命令識別子の命令により実施されるプリフェッチを無効化するプリフェッチ無効化手段とをさらに備えたことを特徴とする。
また、本発明は、プリフェッチの成否により遷移される遷移情報を前記グループ識別子ごとに格納するグループ遷移情報格納手段と、前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令のグループ識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報に応じて、前記遷移情報格納手段に格納された前記遷移情報を遷移するグループ遷移手段とをさらに備えることを特徴とする。
また、本発明は、前記遷移情報格納手段に格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ないグループ識別子を検出するグループ遷移検出手段と、前記グループ遷移検出手段によって検出された前記グループ識別子の命令により実施されるプリフェッチを無効化するグループ無効化手段とをさらに備えたことを特徴とする。
また、本発明は、前記変換手段によって変換された前記プログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して定期的に読み出す定期読出手段をさらに備えることを特徴とする。
また、本発明は、前記通知手段によって所定の閾値を超えたことが通知されると、前記変換手段によって変換された前記プログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して読み出す通知読出手段とをさらに備えることを特徴とする。
また、本発明は、前記定期読出手段によって前記プロファイラに読み出された前記プログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するプリフェッチ命令変更手段をさらに備えることを特徴とする。
また、本発明は、CPUによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理方法であって、前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を利用情報格納手段に格納する利用情報格納工程と、前記プリフェッチされたデータの利用情報を利用情報格納手段に書き込む利用情報書込工程と、を含んだことを特徴とする。
本発明によれば、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納し、プリフェッチされたデータの利用情報を書き込むので、メインメモリからキャッシュ領域に読み出されたデータが実際に使用されているか否かを判定し、プリフェッチをしていることが有効に働いているか否かを識別することが可能である。
また、本発明によれば、キャッシュ領域のデータが破棄される場合に、破棄されるデータの利用情報を読み出すので、キャッシュ領域のデータが破棄される際に、そのデータがアクセスされたか否かが利用情報から識別できる結果、プリフェッチが無駄であったかを識別することが可能である。
また、本発明によれば、読み出された利用情報を用いて、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数をカウンタに計上するので、プリフェッチミス回数を調べることが可能である。
また、本発明によれば、計上されたプリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数に変換するので、開発者がプログラムを実行した際、どの程度プリフェッチ機能が有効に動作しているか確認することが可能である。
また、本発明によれば、計上されたプリフェッチミス回数が所定の閾値を超えたことをプログラムに通知するので、カウンタのインクリメントが頻繁に発生し、カウンタ溢れが起こるような状況においても、正しくプリフェッチミス回数を計上することが可能である。
また、本発明によれば、プリフェッチする原因となった命令を一意に識別する命令識別子に、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を書き込むので、プリフェッチミスした場合に、そのプリフェッチミスをしたデータを取得させた命令がどの命令なのか一意に判別することが可能である。
また、本発明によれば、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を命令の命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、その利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断することが可能である。
また、本発明によれば、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、無駄なメモリアクセスが減少し、消費電力が削減され、また、バストラフィックの減少により重要なメモリ操作が優先的に行われるようになり、システムとしての性能も向上することが可能である。
また、本発明によれば、CPU上で実行される命令のアドレスに応じて振り分けられたグループを一意に特定するグループ識別子に、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令のグループ識別子に対応する利用情報を書き込むので、グループ識別子で命令をほぼ一意に特定し、利用情報格納手段に格納されるエントリ数を減らす事が可能である。
また、本発明によれば、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報をグループ識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令が振り分けられたグループ識別子の利用情報を読み出し、利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断するとともに、利用情報格納手段に格納されるエントリ数を減らす事が可能である。
また、本発明によれば、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下のグループ識別子を検出し、検出されたグループ識別子の命令により実施されるプリフェッチを無効化するので、システムとしての性能も向上するとともに、利用情報格納手段に格納されるエントリ数を減らす事が可能である。
また、本発明によれば、プリフェッチの成否により遷移される遷移情報を命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、利用情報に応じて、格納された遷移情報を遷移するので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断することが可能である。
また、本発明によれば、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ない命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。
また、本発明によれば、プリフェッチの成否により遷移される遷移情報をグループ識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令のグループ識別子に対応する利用情報を読み出し、利用情報に応じて、遷移情報を遷移するので、遷移情報格納手段に格納されるエントリ数を減らすとともに、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。
また、本発明によれば、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ないグループ識別子を検出し、検出されたグループ識別子の命令により実施されるプリフェッチを無効化するので、命令によるプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断するとともに、利用情報格納手段に格納されるエントリ数を減らす事が可能である。
また、本発明によれば、変換されたプログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して定期的に読み出すので、プログラム中のどの箇所でプリフェッチに失敗しているかを確認することが可能である。
また、本発明によれば、所定の閾値を超えたことが通知されると、変換されたプログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して読み出すので、正しくプリフェッチミス回数を計上するとともに、プログラム中のどの箇所でプリフェッチに失敗しているかを確認することが可能である。
また、本発明によれば、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、例えば、失敗していたソフトウェア・プリフェッチを削除、または失敗しないような位置に再挿入する結果、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能が向上することが可能である。
また、本発明によれば、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、正しくプリフェッチミス回数を計上するとともに、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能を向上することが可能である。
以下に添付図面を参照して、この発明に係る情報処理システムの実施例を詳細に説明する。
以下の実施例では、実施例1に係る情報処理システムの概要および特徴、情報処理システムの構成および処理の流れを順に説明し、最後に実施例1による効果を説明する。
[実施例1に係る情報処理システムの概要および特徴]
まず最初に、図1を用いて、実施例1に係る情報処理システムの概要および特徴を説明する。図1は、実施例1に係る情報処理システムの概要および特徴を説明するための図である。
実施例1の情報処理システム1では、CPUによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行うことを概要とする。そして、プリフェッチをしていることが有効に働いているか否かを識別する点に主たる特徴がある。
この主たる特徴について具体的に説明すると、実施例1に係る情報処理システム1は、図1に示すように、階層化されたメモリ構造を持ち、CPU10とキャッシュ20とメインメモリ30とで構成される。そして、キャッシュ20は、プリフェッチされたデータがアクセスされたか否かを示す利用情報と、プリフェッチする原因となった命令を一意に識別する命令識別子とを対応付けて格納する利用情報格納部20aを備える。なお、キャッシュ20は、CPU10内にあってもよいし、後述する図2のようにCPU10の内外両方に複数あってもよい。
このような構成のもと、情報処理システム1は、プリフェッチされたデータの利用情報を利用情報格納部20aに書き込む。具体的には、情報処理システム1は、新たなデータをキャッシュ20に載せる場合に、通常のメモリアクセスであれば利用情報をセット(図1の例では、利用情報「○」)し、プリフェッチによるアクセスであれば利用情報をリセット(図1の例では、利用情報「×」)する。そして、情報処理システム1は、CPU10からプリフェッチされたデータ(つまり、利用情報がリセットであるデータ)に対してアクセスが行われた場合には、利用情報をセットする。
その後、情報処理システム1は、キャッシュ20のデータが破棄される際に、破棄されるデータの利用情報を利用情報格納部20aから読み出す。具体的には、情報処理システム1は、利用情報格納部20aから利用情報を読み出し、利用されたか否かを判別してプリフェッチミスを検出する。
このように、情報処理システム1は、メインメモリ30からキャッシュ領域に読み出されたデータが実際に使用されているか否かを判定し、上記した主たる特徴のごとく、プリフェッチをしていることが有効に働いているか否かを識別することが可能である。
[情報処理システムの構成]
次に、図2を用いて、図1に示した情報処理システム1の構成を説明する。図2は、実施例1に係る情報処理システム1の構成を示すブロック図である。同図に示すように、この情報処理システム1は、CPU10、二次キャッシュ20およびメインメモリ30を備える。
情報処理システム1は、CPU10内の一次キャッシュ15、二次キャッシュ20およびメインメモリ30による階層化されたメモリ構造を持つ。つまり、一次キャッシュ15、二次キャッシュ20、メインメモリ30の順に処理速度が速く、その逆に、メインメモリ30、二次キャッシュ20、一次キャッシュ15の順に格納されているデータ量が多い。
CPU10は、各種命令を制御する命令制御部11、命令制御部11の命令に従って各種演算を行う演算部12、命令制御部11の命令に従ってメモリアクセスを行うメモリアクセス部13、CPU10の動的な実行時情報を、所定の手続きに基づきプログラム側で取得するための機能である性能モニタリング機能部14およびメインメモリ30に格納されたデータの一部を格納する一次キャッシュ15を備える。
性能モニタリング機能部14は、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数が計上されるカウンタ14aを備える。このような構成のもと、性能モニタリング機能部14は、カウンタ14aによって計上されたプリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数情報に変換する。そして、そのプリフェッチミス回数情報をプロファイラが読み出す。
具体的には、性能モニタリング機能部14は、インターフェースに準じて、プログラムから取得する事を可能な形で提供する。つまり、プログラム開発者が自身の開発したプログラムを実行した際、どの程度プリフェッチ機能が有効に動作しているのかを確認することが可能となる。
また、性能モニタリング機能部14は、計上されたプリフェッチミス回数が所定の閾値を超えたことをプログラムに通知する。つまり、性能モニタリング機能部14は、カウンタが溢れた際、割り込みによりCPU10に通達する。
[キャッシュの構成]
次に、図3〜図5を用いて、図1に示した情報処理システム1の構成を説明する。図3は、実施例1に係るキャッシュの構成を示すブロック図であり、図4は、利用情報格納部を説明するための図であり、図5は、キャッシュコントローラの構成を説明するための図である。なお、図3〜図5に示す一次キャッシュ15の構成は、図1に示す二次キャッシュ20と同様の構成である。
図3に示すように、キャッシュ15は、利用情報格納部15a、キャッシュデータ15bおよびキャッシュコントローラ15cを備え、キャッシュコントローラ15cが利用情報格納部15aおよびキャッシュデータ15b内のデータの読み書きを行う。以下にこれらの各部の処理を説明する。
利用情報格納部15aは、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納する。具体的には、利用情報格納部15aは、図4に示すように、命令のデータに係るタグと、命令のデータに係るインデックスと、プリフェッチされたデータがアクセスされたか否かを示す利用情報と、プリフェッチする原因となった命令を一意に識別する命令識別子とを対応付けて記憶する。なお、命令識別子として、命令の格納されているメモリ上のアドレスを用いるようにしてもよい。
キャッシュデータ15bは、メインメモリ30に格納されているデータの一部が格納されおり、メインメモリ30よりアクセス速度が速く、後述するキャッシュコントローラ15cによって読み書きされるデータを格納される。
キャッシュコントローラ15cは、プリフェッチされたデータの利用情報を利用情報格納部15aに書き込み、また、キャッシュ領域のデータが破棄される場合に、破棄されるデータの利用情報を利用情報格納部15aから読み出す。
ここで、キャッシュコントローラ15cの具体的な構成について、図5を用いて説明する。キャッシュコントローラ15cは、制御部150と利用識別部151とプリフェッチミス検出部152とを備える。以下にこれらの各部の処理を説明する。
制御部150は、キャッシュコントローラの各種処理を制御する。具体的には、制御部150は、CPU10からメモリアクセスを受け付けると、キャッシュにヒットしたか否かを判定し、その結果、キャッシュにヒットしたと判定された場合には、利用情報をセットする。
また、制御部150は、キャッシュにヒットしていないと判定された場合には、置換対象となるキャッシュ(つまり、破棄となるデータ)を選定し、その置換対象の利用情報がセットされているか否かの判定を後述する利用識別部151に指示する。その後、制御部150は、利用識別部151によって置換対象の利用情報がセットされたと判定された後、または後に詳述するプリフェッチミス検出部152によってプリフェッチミス検出処理が行われた後、プリフェッチミスによるアクセスかを判定する。
その結果、制御部150は、プリフェッチミスによるアクセスであると判定された場合には、利用情報をリセットし、一方、プリフェッチミスによるアクセスでないと判定された場合には、利用情報をセットする。
利用識別部151は、破棄されるデータの利用情報を利用情報格納部15aから読み出す。具体的には、利用識別部151は、置換対象の利用情報がセットされているか否かの判定をする旨の指示を受け付けた後、その置換対象の利用情報がセットされているか否かを判定する。
その結果、利用識別部151は、置換対象の利用情報がセットされている場合には、その旨を制御部150に通知し、一方、置換対象の利用情報がセットされていない場合には、プリフェッチミスの検出処理を行う旨の指示をプリフェッチミス検出部152に通知する。
プリフェッチミス検出部152は、プリフェッチミスを検出する。具体的には、プリフェッチミス検出部152は、利用識別部151によってプリフェッチミスの検出処理を行う旨の指示を受け付けた場合には、プリフェッチミスの検出処理を行う。つまり、プリフェッチミスを計上するためにCPU10のカウンタ14aにプリフェッチミス回数をインクリメントする旨の指示を通知する。
[情報処理システムによる処理]
次に、図6および図7を用いて、実施例1に係る情報処理システム1による処理を説明する。図6は、実施例1に係る情報処理システムによる利用情報書込処理動作を示すフローチャートであり、図7は、実施例1に係る情報処理システムによるプリフェッチミス検出処理動作の詳細を示すフローチャートである。
情報処理システム1のキャッシュ20は、図6に示すように、CPU10からメモリアクセスを受け付けると(ステップS101肯定)、キャッシュにヒットしたか否かを判定し(ステップS102)、その結果、キャッシュデータ15bにヒットしたと判定された場合には(ステップS102肯定)、利用情報をセットする(ステップS108)。
また、キャッシュ20は、キャッシュデータ15bにヒットしていないと判定された場合には(ステップS102否定)、置換対象となるキャッシュを選定し(ステップS103)、その置換対象の利用情報がセットされているか否かを判定する(ステップS104)。
その結果、キャッシュ20は、置換対象の利用情報がセットされている場合には(ステップS104肯定)、プリフェッチミスによるアクセスかを判定し(ステップS106)、一方、置換対象の利用情報がセットされていない場合には(ステップS104否定)、後に詳述するプリフェッチミスの検出処理を行った後(ステップS105)、プリフェッチミスによるアクセスかを判定する(ステップS106)。
その結果、キャッシュ20は、プリフェッチミスによるアクセスであると判定された場合には(ステップS106肯定)、利用情報をリセットし(ステップS107)、一方、プリフェッチミスによるアクセスでないと判定された場合には(ステップS106否定)、利用情報をセットする(ステップS108)。
続いて、図7を用いて、実施例1に係る情報処理システムによるプリフェッチミス検出処理(S105)を説明する。まず、情報処理システム1のキャッシュ20は、プリフェッチミスが検出されると(ステップS201肯定)、CPU10に通知する。そして、CPU10は、カウンタ14aをカウントアップし(ステップS202)、カウンタ14aがオーバーフローしたか否かを判定する(ステップS203)。
その結果、CPU10は、カウンタ14aがオーバーフローしたと判定した場合には(ステップS203肯定)、カウンタ14aがオーバーフローしたことをプログラムに通知する(ステップS204)。一方、CPU10は、カウンタ14aがオーバーフローしていないと判定した場合には(ステップS203否定)、プリフェッチ検出処理を終了する。
[実施例1の効果]
上述してきたように、実施例1によれば、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納し、プリフェッチされたデータの利用情報を書き込むので、メインメモリ30からキャッシュ領域に読み出されたデータが実際に使用されているか否かを判定し、プリフェッチをしていることが有効に働いているか否かを識別することが可能である。
また、実施例1によれば、キャッシュ領域のデータが破棄される場合に、破棄されるデータの利用情報を読み出すので、キャッシュ領域のデータが破棄される際に、そのデータがアクセスされたか否かが利用情報から識別できる結果、プリフェッチが無駄であったかを識別することが可能である。
また、実施例1によれば、読み出された利用情報を用いて、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数をカウンタに計上するので、プリフェッチミス回数を調べることが可能である。
また、実施例1によれば、計上されたプリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数に変換するので、開発者がプログラムを実行した際、どの程度プリフェッチ機能が有効に動作しているか確認することが可能である。
また、実施例1によれば、計上されたプリフェッチミス回数が所定の閾値を超えたことをプログラムに通知するので、カウンタのインクリメントが頻繁に発生するような状況においても、正しくプリフェッチミス回数を計上することが可能である。
また、実施例1によれば、プリフェッチする原因となった命令を一意に識別する命令識別子に、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を書き込むので、プリフェッチミスした場合に、そのプリフェッチミスをしたデータを取得させた命令がどの命令なのか一意に判別することが可能である。
また、実施例1によれば、変換されたプログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して定期的に読み出すので、プログラム中のどの箇所でプリフェッチに失敗しているかを確認することが可能である。
ところで、上記の実施例1ではプリフェッチミスを検出する場合を説明したが、本発明はこれに限定されるものではなく、検出されたプリフェッチミスを用いて、効果の見込みが少ないプリフェッチに係る命令を無効化するようにしてもよい。
そこで、以下の実施例2では、命令識別子ごとにプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を用いて、効果の見込みが少ないプリフェッチに係る命令を無効化する場合として、図8および図9を用いて、実施例2における情報処理システム1aのキャッシュ15の構成およびプリフェッチ無効化処理について説明する。図8は、実施例2における情報処理システム1aのキャッシュ15の構成を説明するための図であり、図9は、情報処理システム1aにおけるキャッシュ15のプリフェッチ無効化処理手順を説明するためのフローチャートである。
まず最初に、図8を用いて、実施例2に係る情報処理システム1aにおけるキャッシュ15の構成を説明する。実施例2の情報処理システム1aのキャッシュ15は、図5に示した実施例1に係るキャッシュ15と比較して、プリフェッチ成否履歴を備える点が相違する。
プリフェッチ成否履歴15dは、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を命令識別子ごとに格納する。具体的には、プリフェッチ成否履歴15dは、キャッシュコントローラ15cによって読み書きされ、プリフェッチ実行時に、そのプリフェッチを実行するか否かを判定する際に参照される。具体的な例を挙げて説明すると、プリフェッチ成否履歴15dは、命令識別子とプリフェッチ成功回数、プリフェッチ失敗回数とを対応付けて記憶している。
次に、図9を用いて実施例2に係るキャッシュ15のプリフェッチ処理について説明する。このアクセス制御処理は、命令識別子の命令により実施されるプリフェッチを無効化する処理を行う。
情報処理システム1aのキャッシュ15は、プリフェッチの指示を受け付けると(ステップS301)、同じ命令識別子を持つ命令から発行されたプリフェッチについてミスの履歴をプリフェッチ成否履歴15dからプリフェッチ成功履歴情報を読み出して検査する(ステップS302)。
キャッシュ15は、プリフェッチ成否履歴15dから読み出したプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値より高いか低いかを判定する。具体的には、キャッシュ15は、プリフェッチミスが発生する可能性が高いかを判定する(ステップS303)。
その結果、キャッシュ15は、プリフェッチミスが発生する可能性が高くない場合には(ステップS303否定)、プリフェッチを実行し(ステップS304)、一方、プリフェッチミスが発生する可能性が高い場合には(ステップS303肯定)、プリフェッチを無効化する(ステップS305)。
このように、上記の実施例2では、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を命令の命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、その利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断することが可能である。
また、上記の実施例2では、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、無駄なメモリアクセスが減少し、消費電力が削減され、また、バストラフィックの減少により重要なメモリ操作が優先的に行われるようになり、システムとしての性能も向上することが可能である。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例3として本発明に含まれる他の実施例を説明する。
(1)グループID
上記の実施例1では、命令を一意に識別する命令識別子ごとに利用情報を格納する場合を説明したが、本発明はこれに限定されるものではなく、命令識別子をほぼ一意に特定するグループIDごとに利用情報を格納するようにしてもよい。
具体的には、実施例3における情報処理システムの利用情報格納部は、図10に示すように、利用情報とグループIDとを対応付けて記憶されている。このグループIDは、命令のアドレスに応じて振り分けられたグループを一意に特定し、近傍で実行される命令について重複しにくいハッシュ関数により求められる。
また、プリフェッチ成否履歴は、グループIDと成否統計情報とを対応付けて記憶する。そして、プリフェッチ成否履歴は、図11に示すように、プリフェッチ実行時にその命令のグループIDに対応する成否統計情報を読み出され、プリフェッチを実施するか無効化するかの判定に用いられる。
このように、CPU上で実行される命令のアドレスに応じて振り分けられたグループを一意に特定するグループIDに、命令によってプリフェッチされたデータの利用情報を対応付けて格納し、データをキャッシュ領域に格納する原因となった命令のグループIDに対応する利用情報を書き込むので、グループIDで命令をほぼ一意に特定し、利用情報格納部に格納されるエントリ数を減らす事が可能である。
また、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報をグループIDごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令が振り分けられたグループIDの利用情報を読み出し、利用情報を用いて、プリフェッチ成功履歴情報を書き込むので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを判断するとともに、利用情報格納部に格納されるエントリ数を減らす事が可能である。
また、格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下のグループIDを検出し、検出されたグループIDの命令により実施されるプリフェッチを無効化するので、システムとしての性能も向上するとともに、利用情報格納部に格納されるエントリ数を減らす事が可能である。
(2)遷移情報
また、上記の実施例1では、プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納する場合を説明したが、本発明はこれに限定されるものではなく、プリフェッチの成否により遷移される遷移情報を格納するようにしてもよい。
具体的には、実施例3における情報処理システムは、プリフェッチの成否により遷移される遷移情報を命令識別子ごとに格納する。例えば、情報処理システムは、図12に示すように、単純な履歴ではなく、プリフェッチの成否に応じて状態を遷移させて管理する。この図12の例ではプリフェッチが成功した際には2ビットの値がインクリメントされ、失敗した際にはデクリメントされる。なお、遷移情報を命令識別子ごとに格納するだけでなく、遷移情報をグループIDごとに格納する。
このように、プリフェッチの成否により遷移される遷移情報を命令識別子ごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を読み出し、利用情報に応じて、格納された遷移情報を遷移するので、命令識別子が持つプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断することが可能である。
また、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ない命令識別子を検出し、検出された命令識別子の命令により実施されるプリフェッチを無効化するので、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。
また、プリフェッチの成否により遷移される遷移情報をグループIDごとに格納し、キャッシュ領域のデータが破棄される場合に、破棄されるデータをキャッシュ領域に格納する原因となった命令のグループIDに対応する利用情報を読み出し、利用情報に応じて、遷移情報を遷移するので、遷移情報格納部に格納されるエントリ数を減らすとともに、高い確度で無駄なプリフェッチを検出し、無駄なメモリアクセスが減少することが可能である。
また、格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ないグループIDを検出し、検出されたグループIDの命令により実施されるプリフェッチを無効化するので、命令によるプリフェッチ要求が効果のあるプリフェッチであるか否かを高い確度で判断するとともに、利用情報格納部に格納されるエントリ数を減らす事が可能である。
(3)コンパイラ
また、本発明では、コンパイラを用いて、プリフェッチに関する最適化を行うようにしてもよい。具体的には、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化する。例えば、この最適化では、失敗していたソフトウェア・プリフェッチを削除、または失敗しないような位置に再挿入する。
このように、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、例えば、失敗していたソフトウェア・プリフェッチを削除、または失敗しないような位置に再挿入する結果、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能が向上することが可能である。
また、プロファイラに読み出されたプログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するので、正しくプリフェッチミス回数を計上するとともに、無駄なバストラフィックの削減、またはキャッシュミスの削減によりプログラムの性能を向上することが可能である。
(4)システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、利用識別部151とプリフェッチミス検出部152を統合してもよい。
以上のように、本発明に係る情報処理システムは、CPUによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行うことに有用であり、特に、プリフェッチをしていることが有効に働いているか否かを識別する場合に適する。
実施例1に係る情報処理システムの概要および特徴を説明するための図である。 実施例1に係る情報処理システムの構成を示すブロック図である。 実施例1に係るキャッシュの構成を示すブロック図である。 利用情報格納部を説明するための図である。 キャッシュコントローラの構成を説明するための図である。 実施例1に係る情報処理システムによる利用情報書込処理動作を示すフローチャートである。 実施例1に係る情報処理システムによるプリフェッチミス検出処理動作の詳細を示すフローチャートである。 実施例2における情報処理システム1aのキャッシュ15の構成を説明するための図である。 情報処理システム1aにおけるキャッシュ15のプリフェッチ無効化処理手順を説明するためのフローチャートである。 実施例3に係る情報処理システムを説明するための図である。 実施例3に係る情報処理システムを説明するための図である。 実施例3に係る情報処理システムを説明するための図である。
1 情報処理システム
10 CPU
11 命令制御部
12 演算部
13 メモリアクセス部
14 性能モニタリング機能部
14a カウンタ
15 一次キャッシュ
15a、20a 利用情報格納部
15a タグ情報
15b キャッシュデータ
15c キャッシュコントローラ
15d プリフェッチ成否履歴格納部
150 制御部
151 利用識別部
152 プリフェッチミス検出部
20 2次キャッシュ
30 メインメモリ
まず最初に、図8を用いて、実施例2に係る情報処理システム1aにおけるキャッシュ15の構成を説明する。実施例2の情報処理システム1aのキャッシュ15は、図5に示した実施例1に係るキャッシュ15と比較して、プリフェッチ成功履歴格納部15dを備える点が相違する。
プリフェッチ成否履歴格納部15dは、命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を命令識別子ごとに格納する。具体的には、プリフェッチ成否履歴格納部15dは、キャッシュコントローラ15cによって読み書きされ、プリフェッチ実行時に、そのプリフェッチを実行するか否かを判定する際に参照される。具体的な例を挙げて説明すると、プリフェッチ成否履歴格納部15dは、命令識別子とプリフェッチ成功回数、プリフェッチ失敗回数とを対応付けて記憶している。
情報処理システム1aのキャッシュ15は、プリフェッチの指示を受け付けると(ステップS301)、同じ命令識別子を持つ命令から発行されたプリフェッチについてミスの履歴をプリフェッチ成否履歴格納部15dからプリフェッチ成功履歴情報を読み出して検査する(ステップS302)。
キャッシュ15は、プリフェッチ成否履歴格納部15dから読み出したプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値より高いか低いかを判定する。具体的には、キャッシュ15は、プリフェッチミスが発生する可能性が高いかを判定する(ステップS303)。

Claims (20)

  1. CPUによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理システムであって、
    前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を格納する利用情報格納手段と、
    前記プリフェッチされたデータの利用情報を前記利用情報格納手段に書き込む利用情報書込手段と、
    を備えることを特徴とする情報処理システム。
  2. 前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータの利用情報を前記利用情報格納手段から読み出す利用情報読出手段をさらに備えることを特徴とする請求項1に記載の情報処理システム。
  3. 前記利用情報読出手段によって読み出された利用情報を用いて、プリフェッチされたデータがアクセスされなかったプリフェッチミス回数をカウンタに計上する計上手段をさらに備えることを特徴とする請求項2に記載の情報処理システム。
  4. 前記計上手段によって計上された前記プリフェッチミス回数をプログラムが利用可能な形式のプリフェッチミス回数に変換する変換手段をさらに備えることを特徴とする請求項3に記載の情報処理システム。
  5. 前記計上手段によって計上された前記プリフェッチミス回数が所定の閾値を超えたことをプログラムに通知する通知手段をさらに備えることを特徴とする請求項3に記載の情報処理システム。
  6. 前記利用情報格納手段は、プリフェッチする原因となった命令を一意に識別する命令識別子に、当該命令によってプリフェッチされたデータの利用情報を対応付けて格納し、
    前記利用情報書込手段は、データを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段に書き込むことを特徴とする請求項1に記載の情報処理システム。
  7. 前記命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を当該命令の命令識別子ごとに格納するプリフェッチ成功履歴格納手段と、
    前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報を用いて、前記プリフェッチ成功履歴情報を書き込む成功履歴書込手段とをさらに備えることを特徴とする請求項6に記載の情報処理システム。
  8. 前記プリフェッチ成功履歴格納手段に格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下である命令識別子を検出する命令検出手段と、
    前記命令検出手段によって検出された前記命令識別子の命令により実施されるプリフェッチを無効化するプリフェッチ無効化手段とをさらに備えたことを特徴とする請求項7に記載の情報処理システム。
  9. 前記利用情報格納手段は、前記CPU上で実行される命令のアドレスに応じて振り分けられたグループを一意に特定するグループ識別子に、当該命令によってプリフェッチされたデータの利用情報を対応付けて格納し、
    前記利用情報書込手段は、データを前記キャッシュ領域に格納する原因となった命令のグループ識別子に対応する前記利用情報を前記利用情報格納手段に書き込むことを特徴とする請求項1に記載の情報処理システム。
  10. 前記命令によってプリフェッチされたデータがアクセスされたか否かを示すプリフェッチ成功履歴情報を前記グループ識別子ごとに格納するグループ成功履歴格納手段と、
    前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令が振り分けられた前記グループ識別子の利用情報を前記利用情報格納手段から読み出し、当該利用情報を用いて、前記プリフェッチ成功履歴情報を書き込むグループ履歴書込手段とをさらに備えることを特徴とする請求項9に記載の情報処理システム。
  11. 前記プリフェッチ成功履歴格納手段に格納されたプリフェッチ成功履歴情報を用いて、プリフェッチされたデータがアクセスされる確率が所定の閾値以下のグループ識別子を検出するグループ識別子検出手段と、
    前記グループ識別子検出手段によって検出された前記グループ識別子の命令により実施されるプリフェッチを無効化するグループ無効化手段とをさらに備えたことを特徴とする請求項10に記載の情報処理システム。
  12. プリフェッチの成否により遷移される遷移情報を前記命令識別子ごとに格納する遷移情報格納手段と、
    前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令の命令識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報に応じて、前記遷移情報格納手段に格納された前記遷移情報を遷移する遷移手段とをさらに備えることを特徴とする請求項6に記載の情報処理システム。
  13. 前記遷移情報格納手段に格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ない命令識別子を検出する遷移命令検出手段と、
    前記遷移命令検出手段によって検出された前記命令識別子の命令により実施されるプリフェッチを無効化するプリフェッチ無効化手段とをさらに備えたことを特徴とする請求項12に記載の情報処理システム。
  14. プリフェッチの成否により遷移される遷移情報を前記グループ識別子ごとに格納するグループ遷移情報格納手段と、
    前記キャッシュ領域のデータが破棄される場合に、当該破棄されるデータを前記キャッシュ領域に格納する原因となった命令のグループ識別子に対応する利用情報を前記利用情報格納手段から読み出し、当該利用情報に応じて、前記遷移情報格納手段に格納された前記遷移情報を遷移するグループ遷移手段とをさらに備えることを特徴とする請求項9に記載の情報処理システム。
  15. 前記遷移情報格納手段に格納された遷移情報を用いて、プリフェッチされたデータがアクセスされる見込みが少ないグループ識別子を検出するグループ遷移検出手段と、
    前記グループ遷移検出手段によって検出された前記グループ識別子の命令により実施されるプリフェッチを無効化するグループ無効化手段とをさらに備えたことを特徴とする請求項14に記載の情報処理システム。
  16. 前記変換手段によって変換された前記プログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して定期的に読み出す定期読出手段をさらに備えることを特徴とする請求項4に記載の情報処理システム。
  17. 前記通知手段によって所定の閾値を超えたことが通知されると、前記変換手段によって変換された前記プログラムが利用可能な形式のプリフェッチミス回数をプロファイラに対して読み出す通知読出手段とをさらに備えることを特徴とする請求項5に記載の情報処理システム。
  18. 前記定期読出手段によって前記プロファイラに読み出された前記プログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するプリフェッチ命令変更手段をさらに備えることを特徴とする請求項16に記載の情報処理システム。
  19. 前記通知読出手段によって前記プロファイラに読み出された前記プログラムが利用可能な形式のプリフェッチミス回数を用いて、プログラム中のプリフェッチ命令を最適化するプリフェッチ命令変更手段をさらに備えることを特徴とする請求項17に記載の情報処理システム。
  20. CPUによってアクセスされそうなデータを事前に予測し、当該予測されたデータをメインメモリから読み出して、予めキャッシュ領域に格納しておくプリフェッチを行う情報処理方法であって、
    前記プリフェッチされたデータがアクセスされたか否かを示す利用情報を利用情報格納手段に格納する利用情報格納工程と、
    前記プリフェッチされたデータの利用情報を前記利用情報格納手段に書き込む利用情報書込工程と、
    を含んだことを特徴とする情報処理方法。
JP2008555969A 2007-01-30 2007-01-30 演算処理装置、情報処理装置及び演算処理装置の制御方法 Expired - Fee Related JP4491500B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/051457 WO2008093399A1 (ja) 2007-01-30 2007-01-30 情報処理システムおよび情報処理方法

Publications (2)

Publication Number Publication Date
JPWO2008093399A1 true JPWO2008093399A1 (ja) 2010-05-20
JP4491500B2 JP4491500B2 (ja) 2010-06-30

Family

ID=39673719

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008555969A Expired - Fee Related JP4491500B2 (ja) 2007-01-30 2007-01-30 演算処理装置、情報処理装置及び演算処理装置の制御方法

Country Status (3)

Country Link
US (1) US8671246B2 (ja)
JP (1) JP4491500B2 (ja)
WO (1) WO2008093399A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8583894B2 (en) * 2010-09-09 2013-11-12 Advanced Micro Devices Hybrid prefetch method and apparatus
US8949579B2 (en) * 2010-10-04 2015-02-03 International Business Machines Corporation Ineffective prefetch determination and latency optimization
CN102566936B (zh) * 2010-12-28 2015-04-29 联想(北京)有限公司 一种磁盘数据读取方法、装置及磁盘驱动装置
JP5724981B2 (ja) * 2012-09-26 2015-05-27 日本電気株式会社 メモリアクセス制御装置、メモリアクセス制御システム、及び、メモリアクセス制御方法
US20150286571A1 (en) * 2014-04-04 2015-10-08 Qualcomm Incorporated Adaptive cache prefetching based on competing dedicated prefetch policies in dedicated cache sets to reduce cache pollution
JP6252348B2 (ja) * 2014-05-14 2017-12-27 富士通株式会社 演算処理装置および演算処理装置の制御方法
US9910880B2 (en) 2014-07-16 2018-03-06 Wipro Limited System and method for managing enterprise user group
JP6488711B2 (ja) * 2015-01-14 2019-03-27 富士通株式会社 演算処理装置および演算処理装置の制御方法
US10310981B2 (en) * 2016-04-07 2019-06-04 Advanced Micro Devices, Inc. Method and apparatus for performing memory prefetching
JP7131156B2 (ja) 2018-07-19 2022-09-06 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US20210390053A1 (en) * 2020-06-15 2021-12-16 Micron Technology, Inc. Host-Assisted Memory-Side Prefetcher
US11080283B1 (en) * 2020-09-29 2021-08-03 Atlassian Pty Ltd. Systems and methods for selectively prefetching data
US11366749B2 (en) * 2020-11-10 2022-06-21 Western Digital Technologies, Inc. Storage system and method for performing random read

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5263038A (en) * 1975-10-01 1977-05-25 Hitachi Ltd Data processing device
JPS63318654A (ja) * 1987-06-23 1988-12-27 Fujitsu Ltd 中間バッファリプレ−ス決定方式
JPH0573421A (ja) * 1991-09-17 1993-03-26 Hitachi Ltd デイスクキヤツシユ制御方式
JPH07253926A (ja) * 1994-02-14 1995-10-03 Hewlett Packard Co <Hp> キャッシュ・ミスによる時間ペナルティ減少方法
JPH08292913A (ja) * 1995-04-11 1996-11-05 Lg Semicon Co Ltd 未参照先取りキャッシュを利用した命令語先取り方法およびその回路
JPH09319652A (ja) * 1996-03-28 1997-12-12 Hitachi Ltd 先読み制御方法
JPH10207772A (ja) * 1997-01-23 1998-08-07 Hitachi Ltd キャッシュミス予測方法
JPH10320212A (ja) * 1997-05-21 1998-12-04 Hitachi Ltd キャッシュ向け最適化方法
JPH10333916A (ja) * 1997-06-04 1998-12-18 Nec Corp ノンブロッキングキャッシュ対応のコードスケジューリング方式及びそのプログラムを記録した記憶媒体
JP2000035894A (ja) * 1998-06-26 2000-02-02 Internatl Business Mach Corp <Ibm> 長時間キャッシュ・ミスの影響を最小化するための適応方法及びシステム
JP2001195263A (ja) * 2000-01-17 2001-07-19 Nec Ic Microcomput Syst Ltd コンパイル装置、コンパイル方法、および、コンパイル用プログラムを記録した記録媒体
JP2001331793A (ja) * 2000-05-22 2001-11-30 Fuji Xerox Co Ltd 画像処理装置及びキャッシュメモリ
JP2001344152A (ja) * 2000-06-05 2001-12-14 Matsushita Electric Ind Co Ltd キャッシュメモリ装置
JP2002215456A (ja) * 2001-01-23 2002-08-02 Nec Corp 情報処理装置
JP2003044357A (ja) * 2001-07-27 2003-02-14 Nec Computertechno Ltd キャッシュ先取り方式
JP2003223359A (ja) * 2002-01-29 2003-08-08 Fujitsu Ltd 演算処理装置
JP2006524375A (ja) * 2003-05-27 2006-10-26 インテル・コーポレーション ソフトウェアアプリケーションのストライドプロファイリング方法および装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04340637A (ja) 1991-05-17 1992-11-27 Mitsubishi Electric Corp キャッシュ制御方式
US5983324A (en) 1996-03-28 1999-11-09 Hitachi, Ltd. Data prefetch control method for main storage cache for protecting prefetched data from replacement before utilization thereof
JPH10320285A (ja) 1997-05-20 1998-12-04 Toshiba Corp キャッシュメモリ及び情報処理システム
US6438673B1 (en) * 1999-12-30 2002-08-20 Intel Corporation Correlated address prediction
US6990558B2 (en) * 2002-06-18 2006-01-24 Ip-First, Llc Microprocessor, apparatus and method for selective prefetch retire
JP5263038B2 (ja) 2009-07-08 2013-08-14 パナソニック株式会社 食器洗い機

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5263038A (en) * 1975-10-01 1977-05-25 Hitachi Ltd Data processing device
JPS63318654A (ja) * 1987-06-23 1988-12-27 Fujitsu Ltd 中間バッファリプレ−ス決定方式
JPH0573421A (ja) * 1991-09-17 1993-03-26 Hitachi Ltd デイスクキヤツシユ制御方式
JPH07253926A (ja) * 1994-02-14 1995-10-03 Hewlett Packard Co <Hp> キャッシュ・ミスによる時間ペナルティ減少方法
JPH08292913A (ja) * 1995-04-11 1996-11-05 Lg Semicon Co Ltd 未参照先取りキャッシュを利用した命令語先取り方法およびその回路
JPH09319652A (ja) * 1996-03-28 1997-12-12 Hitachi Ltd 先読み制御方法
JPH10207772A (ja) * 1997-01-23 1998-08-07 Hitachi Ltd キャッシュミス予測方法
JPH10320212A (ja) * 1997-05-21 1998-12-04 Hitachi Ltd キャッシュ向け最適化方法
JPH10333916A (ja) * 1997-06-04 1998-12-18 Nec Corp ノンブロッキングキャッシュ対応のコードスケジューリング方式及びそのプログラムを記録した記憶媒体
JP2000035894A (ja) * 1998-06-26 2000-02-02 Internatl Business Mach Corp <Ibm> 長時間キャッシュ・ミスの影響を最小化するための適応方法及びシステム
JP2001195263A (ja) * 2000-01-17 2001-07-19 Nec Ic Microcomput Syst Ltd コンパイル装置、コンパイル方法、および、コンパイル用プログラムを記録した記録媒体
JP2001331793A (ja) * 2000-05-22 2001-11-30 Fuji Xerox Co Ltd 画像処理装置及びキャッシュメモリ
JP2001344152A (ja) * 2000-06-05 2001-12-14 Matsushita Electric Ind Co Ltd キャッシュメモリ装置
JP2002215456A (ja) * 2001-01-23 2002-08-02 Nec Corp 情報処理装置
JP2003044357A (ja) * 2001-07-27 2003-02-14 Nec Computertechno Ltd キャッシュ先取り方式
JP2003223359A (ja) * 2002-01-29 2003-08-08 Fujitsu Ltd 演算処理装置
JP2006524375A (ja) * 2003-05-27 2006-10-26 インテル・コーポレーション ソフトウェアアプリケーションのストライドプロファイリング方法および装置

Also Published As

Publication number Publication date
US20090287884A1 (en) 2009-11-19
WO2008093399A1 (ja) 2008-08-07
US8671246B2 (en) 2014-03-11
JP4491500B2 (ja) 2010-06-30

Similar Documents

Publication Publication Date Title
JP4491500B2 (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
TWI564719B (zh) 具有多個資料預取器的處理器、所述處理器的操作方法及所述處理器操作的電腦程式產品
US8255631B2 (en) Priority-based prefetch requests scheduling and throttling
JP4837456B2 (ja) 情報処理装置
TWI596479B (zh) 具有資料預取器的處理器及其運作方法
US8843707B2 (en) Dynamic inclusive policy in a hybrid cache hierarchy using bandwidth
US8688915B2 (en) Weighted history allocation predictor algorithm in a hybrid cache
JP4829191B2 (ja) キャッシュシステム
US20090119470A1 (en) Probabilistic Method for Performing Memory Prefetching
CN103109276B (zh) 系统测试方法
TW201928683A (zh) 使用記憶體位址定位冷熱存取區間之方法
CN104335175A (zh) 基于系统性能度量在系统节点之间标识和迁移线程的方法和系统
JP6149595B2 (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
Kim et al. Application-aware swapping for mobile systems
US20230315627A1 (en) Cache line compression prediction and adaptive compression
JP6135392B2 (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
US20140053012A1 (en) System and detection mode
US8271711B2 (en) Program status detecting apparatus and method
JP5298826B2 (ja) キャッシュメモリ及びプリフェッチ方法
US20230297382A1 (en) Cache line compression prediction and adaptive compression
CN109478163B (zh) 用于在高速缓存条目处标识存储器访问请求的待决的系统和方法
CN118140214A (zh) 用于重新引用间隔预测高速缓存替换策略的重新引用指示符
CN105706049A (zh) 操作系统例行程序的预测历程储存器的部分使用
JP2006048422A (ja) ローディング装置、ローディング方法、ローディングプログラム及びローディングプログラムを記録したコンピュータ読み取り可能な記録媒体
WO2014155228A1 (en) A primary memory module with a record of usage history and applications of the primary memory module to a computer system

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100305

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100330

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100405

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140409

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees