JPWO2007099598A1 - プリフェッチ機能を有するプロセッサ - Google Patents

プリフェッチ機能を有するプロセッサ Download PDF

Info

Publication number
JPWO2007099598A1
JPWO2007099598A1 JP2008502585A JP2008502585A JPWO2007099598A1 JP WO2007099598 A1 JPWO2007099598 A1 JP WO2007099598A1 JP 2008502585 A JP2008502585 A JP 2008502585A JP 2008502585 A JP2008502585 A JP 2008502585A JP WO2007099598 A1 JPWO2007099598 A1 JP WO2007099598A1
Authority
JP
Japan
Prior art keywords
prefetch
cache
address
data
request
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
JP2008502585A
Other languages
English (en)
Other versions
JP4574712B2 (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 JPWO2007099598A1 publication Critical patent/JPWO2007099598A1/ja
Application granted granted Critical
Publication of JP4574712B2 publication Critical patent/JP4574712B2/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
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

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

Abstract

プリフェッチ機能を有するプロセッサは、第1のラインサイズを持つ第1の階層のキャッシュメモリと、当該第1の階層のキャッシュメモリの下位階層で、前記第1のラインサイズとは異なる大きさの第2のラインサイズを持つ第2の階層のキャッシュメモリと、前記第2のラインサイズ毎に、前記第1のラインサイズ分のブロックをプリフェッチするように、前記第1の階層のキャッシュメモリから前記第2の階層のキャッシュに対するプリフェッチ要求を発行するプリフェッチ制御部と、を備えることを特徴とする。

Description

本発明は、お互いにラインサイズが異なる2階層以上のキャッシュメモリを備えるプロセッサに関し、更に詳しくはキャッシュメモリに対するプリフェッチ機能を有するプロセッサについての技術に関する。
従来からHPC(High Performance Computing)など、科学技術計算等で用いられるメモリへの連続アクセスを行うコンピュータでは、キャッシュレジスタに対してプリフェッチの技術が適用されている。
プリフェッチは、近い将来必要とされている命令もしくはデータを予め予測してキャッシュメモリ等に読み込んでおく手法で、キャッシュメモリのキャッシュミスを減らすことが出来る。
特許文献1は、プリフェッチ機能を備えたキャッシュシステムについて開示がある。特許文献1のシステムでは、メモリデータへの連続アクセスする場合において、キャッシュミスを起因として、連続アクセスにおいて次にアクセスするラインサイズ先の予測アドレスをキューに登録しておき、実際にアクセスアドレスがキューにヒットし、予測が当たった場合に、連続アクセスであると判断し、ラインサイズ先の次にアクセスするアドレスに対して、プリフェッチを発行している。
複数階層のキャッシュメモリにおいて、上位階層のキャッシュメモリと下位階層のキャッシュメモリとでラインサイズが異なる場合、最下位階層のキャッシュミスによって、ムーブインされるデータサイズは、上位階層のラインサイズから下位階層のラインサイズまでのいずれかのサイズである。そして、ハードウエアプリフェッチが機能する連続アクセスのケースでは、もっともデータサイズの大きい下位階層のラインサイズであるケースがもっとも性能が高くなるため、上記ケースでは、ムーブインされるデータサイズは、下位階層のキャッシュのラインサイズである可能性が高い。
たとえば、Columbus2メモリシステムでは、キャッシュミスによりムーブインされるデータサイズは、メモリアクセスのケースでは下位階層のキャッシュのラインサイズであるが、コピーバックのケースでは上位階層のキャッシュのラインサイズである。
連続アクセスの多いHPC系JOBでは、コピーバック率が低いため、上記の連続アクセスのケースでは、ムーブインされるデータサイズは、下位階層のキャッシュのラインサイズである可能性が高い。
上位階層のキャッシュメモリと下位階層のキャッシュメモリとでラインサイズが異なるキャッシュメモリシステムにおいてプリフェッチを行うと、以下の問題点が生じる。
下位階層のキャッシュミスでムーブインされるデータサイズが、下位階層のキャッシュのラインサイズである場合、上位階層のキャッシュから下位階層のキャッシュに発行されるハードウエアプリフェッチの要求(下位階層のキャッシュへのムーブイン要求)は、下位階層のキャッシュのラインサイズにつき1回でよい。しかし、従来のキャッシュシステムでは上位階層のキャッシュのラインサイズごとに発行してしまい、無駄な下位階層キャッシュアクセスパイプラインを消費することとなる。
下位階層のキャッシュミスでムーブインされるデータサイズが、下位階層のキャッシュのラインサイズである場合、下位階層のキャッシュに発行されるハードウエアプリフェッチの要求は、下位階層のキャッシュのラインサイズにつき1回でよい。しかし、ハードウエアプリフェッチは、実装上の制約により、プリフェッチ要求をロストしてしまうケースが時々あり、ハードウエアプリフェッチがロストした場合には、プリフェッチ要求の発行が1回のみだと、下位階層のキャッシュへのメモリデータのムーブイン要求が発行されなくなってしまう。
下位階層のキャッシュレジスタで生じたキャッシュミスでムーブインされるデータサイズが、下位階層のキャッシュメモリのラインサイズである場合、下位階層のキャッシュメモリに対して発行されるプリフェッチ要求は、下位階層のキャッシュメモリのラインサイズにつき1回でよい。よって、上位階層のキャッシュレジスタでミスしたアドレスに対して、上位階層のキャッシュメモリのラインサイズ分先のアドレスをプリフェッチ要求のプリフェッチアドレスの初期値としてしまうと、下位階層のキャッシュにとって同一ラインである可能性があるため、無駄なプリフェッチ要求で下位階層キャッシュアクセスパイプラインを消費する。
プリフェッチが機能するメモリへの連続アクセスの場合では、下位階層のキャッシュメモリへムーブインされるデータサイズは、下位階層のキャッシュメモリのラインサイズである可能性が高いが、場合によっては下位階層のキャッシュのラインサイズとは異なるデータサイズであることもある。
特開2004−38345号公報
本発明の課題は、上記問題点を解決したプリフェッチ機能を有するプロセッサを提供することである。
上記課題を解決するため、本発明によるプリフェッチ機能を有するプロセッサは、第1の階層のキャッシュメモリ、第2の階層のキャッシュメモリ、及びプリフェッチ制御部を備える。
第1の階層のキャッシュメモリは、第1のラインサイズを持つ。
第2の階層のキャッシュメモリは、当該第1の階層のキャッシュメモリの下位階層で、前記第1のラインサイズとは異なる大きさの第2のラインサイズを持つ。
プリフェッチ制御部は、前記第2のラインサイズ毎に、前記第1のラインサイズ分のブロックをプリフェッチするように、前記第1の階層のキャッシュメモリから前記第2の階層のキャッシュに対するプリフェッチ要求を発行する。
この構成により、不必要なプリフェッチ要求が発行されるのを防ぐことが出来る。
前記プリフェッチ制御部は、前記第2のラインサイズ毎に1回乃至複数回前記プリフェッチ要求を発行する構成とすることも出来る。
また前記プリフェッチ制御部は、前記第1のラインサイズの2倍以上のブロックをプリフェッチするように、前記プリフェッチ要求を発行する構成とすることも出来る。
この構成により、実装上の制約によって、プリフェッチ要求がロストする場合にも対処することが出来る。
更に前記プリフェッチ制御部は、前記プリフェッチ要求を行うプリフェッチ先のアドレスを、前記第1の階層のキャッシュメモリでミスしたアドレスから前記第2のラインサイズ分先のアドレスとする構成とすることも出来る。

また前記プリフェッチ制御部は、前記第1のラインサイズ毎に前記プリフェッチ要求を発行するのと、前記第2のラインサイズ毎に前記プリフェッチ要求を発行するのとを、ムーブインしたデータの大きさに基づいて切り換える切換部を更に備える構成とすることも出来る。
この構成により、コピーバック等第2のラインの大きさ以外のムーブインにも対処することが出来る。
本発明によれば、第1の階層のキャッシュメモリではなく、第2の階層のキャッシュメモリのラインサイズである第2のラインサイズ毎にプリフェッチ要求が発行されるので、無駄な発行によって、第2の階層のキャッシュメモリのアクセスパイプラインが消費されるのを抑制することが出来る。
また、実装上の制約によって、プリフェッチ要求がロストしても、第2の階層のキャッシュメモリへのメモリデータのムーブイン要求が発行される可能性が高くなるようにすることで、性能向上が図れる。
更に、第1の階層のキャッシュメモリにミスしたアドレスに対して、第1のラインサイズ分先のアドレスではなく、第2の階層のキャッシュメモリのラインサイズ分先のアドレスをハードウエアプリフェッチのプリフェッチアドレスの初期値とすることによって、無駄な要求によって第2の階層のキャッシュアクセスパイプラインが消費されるのを抑制することが出来る。
また最終的にムーブインしたデータサイズに応じて、ハードウエアプリフェッチ要求を発行することによって、第2の階層のキャッシュメモリへムーブインされるデータサイズが、第2の階層のキャッシュメモリのラインサイズと異なる場合でも、必要な要求がもれることなく、正しく要求が発行されるようになる。
本実施形態におけるコンピュータシステムのプロセッサ及びその周辺構成の概略図である。 本実施形態におけるプロセッサのメモリ管理部分を中心に描いた図である。 第1の実施形態のプリフェッチキュー(PFQ)の構成例を示す図である。 加算器の出力アドレスと比較器の出力の関係を示す図である。 手順8、9、10における各状態を示した図である。 第1の実施形態のプリフェッチキュー(PFQ)の動作を示すフローチャートである。 第2の実施形態のプリフェッチキュー(PFQ)の構成例を示す図である。 第3の実施形態のプリフェッチキュー(PFQ)の構成例を示す図である。 第4の実施形態のプリフェッチキュー(PFQ)の構成例を示す図である。
以下に本発明の一実施形態を図面を参照しながら説明する。
図1は本実施形態におけるコンピュータシステムのプロセッサ及びその周辺構成の概略図である。
図1の構成では、プロセッサユニット1、プリフェッチ制御装置2、1次キャッシュ3、2次キャッシュ4及び主記憶装置5を有している。
プロセッサユニット1は、ALU、レジスタ等を含み、実際の計算やデータ処理を司る部分である。また同図の構成では、分岐予測等もプロセッサユニット1内で行われ、予測結果に基いたリクエストを1次キャッシュ3に行う。プリフェッチ制御装置2は、プリフェッチ処理の制御全般を受け持つ装置で、プロセッサユニット1から1次キャッシュ3へのリクエストアドレスを監視ながら、2次キャッシュ4にプリフェッチを要求する。1次キャッシュ3は、1次キャッシュシステムで、アクセス速度の早いメモリと1次キャッシュ制御装置から構成されている。2次キャッシュ4は、2次キャッシュシステムで、主記憶装置5よりはアクセス速度が早く1次キャッシュ3より容量の大きなメモリと2次キャッシュ制御装置から構成されている。また本実施形態では、プリフェッチされたデータはこの2次キャッシュ4に保持される。主記憶装置5は、DRAM等によって構成されるメモリである。
プロセッサユニット1が、主記憶装置5上のデータにアクセスする際は、要求アドレスをリクエストアドレス6から指定し、読み出し時にはフェッチデータ7を読み出し、書き込み時にはストアデータ8として1次キャッシュ3に出力する。
1次キャッシュ3は、プロセッサユニット1からの読み出し要求に対して、要求アドレスのデータを自己が保持していれば、そのデータをフェッチデータ7としてプロセッサユニット1に出力し、保持していない場合には、リクエストバス11からそのデータを含む1ライン分のデータを2次キャッシュ4に対して要求すると共にキャッシュミス9としてプリフェッチ制御装置2に通知する。そして、フェッチデータ12を受け取ると、プロセッサユニット1に要求されたデータをフェッチデータ7として出力する。また1次キャッシュ3は、自己が保持しているキャッシュデータが更新された場合、適当なタイミングでデータバス13からそのデータを2次キャッシュ4にライトバックする。
2次キャッシュ4は、1次キャッシュ3からのデータの要求に対して、そのデータを保持していれば、そのデータを含む1ライン分のデータをフェッチデータ7として1次キャッシュ3に出力し、保持していない場合には、リクエストバス14からそのデータを含む1ライン分のデータを主記憶装置5に対して要求する。そして、フェッチデータ15を受け取ると、1ライン分のデータを1次キャッシュ3に出力する。また2次キャッシュ4は、1次キャッシュ3と同様、自己が保持しているキャッシュデータが更新されると、適当なタイミングでデータバス16からそのデータを主記憶装置5にライトバックする。
プロセッサユニット1が1次キャッシュ3に対してデータを要求する時、アドレスバス6でアドレスを指定するが、このアドレス値をプリフェッチ制御装置2は監視し、自己が備えているプリフェッチアドレスキューをこのアドレス値によって検索する。そしてこのアドレスが、プリフェッチアドエスキューに存在するアドレスを先頭とする1ブロック中にある(以下、ヒットするという)場合、プリフェッチアドレスバス10から2次キャッシュ4にプリフェッチ要求アドレスを出力してプリフェッチ要求を行うと共にアドレスをプリフェッチアドレスキュー25に登録し、またプリフェッチアドレスキュー内に存在しない場合はプリフェッチを要求しない。
なお本実施形態では、1次キャッシュ3と2次キャッシュ4はお互いに異なるラインサイズを持つキャッシュメモリであり、以下の説明では、1次キャッシュ3のラインサイズは64バイト(以下Bと記す)、2次キャッシュ4のラインサイズは256Bであるとする。
図2は本実施形態におけるプロセッサのメモリ管理部分を中心に描いた図である。
同図において、プロセッサは、メモリ管理用の構成要素として、フェッチポート(FP)21、ストアポート(SP)22、1次キャッシュアクセスパイプライン23及び1次キャッシュムーブインバッファ(L1$MIB)24を1次キャッシュ3内に備え、プリフェッチキュー25をプリフェッチ制御装置2内に備え、2次キャッシュムーブインポート(L2$MIP)26、2次キャッシュプリフェッチポート(L2$PFP)、2次キャッシュアクセスパイプライン28及び2次キャッシュムーブインバッファ(L2$MIP)29を2次キャッシュ4内に備え、システムコントローラムーブインポート(SCMIP)30を主記憶装置5内に備えている。
フェッチポート(FP)21は、プロセッサユニット1からのload命令やstore命令等を受け付けるポートである。またストアポート(SP)22は、ストアコミットしたstore命令が、キャッシュにデータを書き込むためのポートである。また2次キャッシュムーブインバッファ(L2$MIP)29及びシステムコントローラムーブインポート(SCMIP)30は、それぞれ2次キャッシュ4及び主記憶装置5に対するムーブイン要求を受け付けるポートである。
1次キャッシュアクセスパイプライン23及び2次キャッシュアクセスパイプライン28は、1次キャッシュ3及び2次キャッシュ4に対するアクセス要求を受け付けるパイプラインである。1次キャッシュアクセスパイプライン23は、P、T、M、B及びRの5つのステージを持ち、Pステージではアドレスを選択してそのアドレスを転送し、Tステージでは転送されたアドレスで1次キャッシュのタグとTLB(トランスレーションルックアップテーブル)を参照し、MステージではTステージの参照結果として得られたデータの比較(マッチング)を行ない、Bステージでは比較結果に基づいて、1次キャッシュのデータを選択して転送し、Rステージでは1次キャッシュミスやTLBミスなどに対して転送したデータが有効かあるいは無効かを示すフラグを計算して送る。2次キャッシュアクセスパイプライン28は、PR1,XP0-14のステージを持ち、各ステージでは、ポートの選択、L2$タグ検索、アドレス比較、L2$ミス時にL2$MIBに登録、L2$ヒット時にL2$データの読み出し、L2$データのL1$MIBへの転送などを行っている。
1次キャッシュムーブインバッファ(L1$MIB)24及び2次キャッシュムーブインバッファ(L2$MIB)29は、1次キャッシュ3及び2次キャッシュ4に対して生じたムーブイン命令をバッファリングするものである。
プリフェッチキュー(PFQ)25は、以前プリフェッチを行ったアドレスの1ライン分先のアドレスを登録しており、1次キャッシュ3でキャッシュミスが生じると、キャッシュミスが生じたアドレスとプリフェッチキュー(PFQ)25内に登録されているアドレスをマッチングし、プリフェッチキュー(PFQ)25に一致するアドレスが登録されていれば、2次キャッシュプリフェッチポート(L2$PFP)27に、プリフェッチ要求を発行する。2次キャッシュプリフェッチポート(L2$PFP)27は、プリフェッチキュー(PFQ)25からのプリフェッチ要求を受け付けるものである。
同図における動作を以下に説明する。
プロセッサユニット1で、load命令等をデコードし、メモリの読み出し要求が発行されると、この要求は、フェッチポート(FP)25から1次キャッシュアクセスパイプライン23に入力される。読む出し要求に対して1次キャッシュ2がヒットすればそのままデータをフェッチポート(FP)25から要求を発行したプロセッサユニット1に返して、データをレジスタ31に書きこむ。
1次キャッシュ2がミスしたときは、2次キャッシュ3からデータを持ってこなければいけないので、1次キャッシュムーブインバッファ(L1$MIB)24に要求を入れる。1次キャッシュムーブインバッファ(L1$MIB)24は、2次キャッシュ3に対して読み出し要求を出す。これは2次キャッシュ3のリクエストを受け取る2次キャッシュムーブインポート(L2$MIP)26を介して2次キャッシュアクセスパイプライン28に入る。
そしてこの読み出し要求が2次キャッシュ3でヒットすれば、そのデータを1次キャッシュムーブインバッファ(L1$MIB)24に入れ、1次キャッシュムーブインバッファ(L1$MIB)24は1次キャッシュラインアクセスパイプラインを獲得して1次キャッシュキャッシュ2にデータを書きにゆく(1次キャッシュミス2次キャッシュヒットの場合)。
次にハードウエアプリフェッチを行う場合について説明する。
1次キャッシュ2でミスして、プリフェッチキュー(PFQ)25にハードウエアプリフェッチとして動作すべきアドレスが登録されていない場合、そのアドレスを一旦プリフェッチキュー(PFQ)27に登録する。このとき特許文献1に示してあるように、64B分先のアドレスを登録する、次に64バイト先のアクセスしに行ったときには1次キャッシュがミスすると同時にプリフェッチキュー(PFQ)25はヒットする。このときプリフェッチキュー(PFQ)25は、更に64Bを足して+128Bのアドレスのプリフェッチのリクエストをプリフェッチポート(L2$PFP)27に出す。
1次キャッシュミスは、2次キャッシュムーブインポート(L2$MIP)26と2次キャッシュプリフェッチポート(L2$PFP)27に登録され、2次キャッシュにアクセスしてヒットすればデータを返す。また、ミスすれば2次キャッシュムーブインバッファ(L2$MIB)29に登録してシステムコントローラムーブインポート(SCMIP)30に出力して主記憶装置5にリクエストを出す。そして主記憶装置5データが帰ってきたら、それを2次キャッシュアクセスパイプライン28を介して2次キャッシュ3に書きこみ、同時にバイパスで1次キャッシュアクセスパイプライン23に返しこれを1次キャッシュ2に書き込む。
図3は、第1の実施形態のプリフェッチキュー(PFQ)25の構成例を示す図である。
同図のプリフェッチ3、選択回路44、加算器45、選択回路46及び47、及び加算器48を備え、各エントリ41−1〜41−nはそれぞれ、エントリ41に登録されるアドレス値等がセットされるレジスタ49、レジスタ49内のアドレスとリクエストアドレスを比較する比較器50及び比較器50の比較結果と後述するレジスタ49内の有効ビットとのANDを求めるAND回路51を有している。
レジスタ49は、アドレス値の他に状態フラグとして働く有効ビット、待機ビット及びL2$PFP登録許可フラグを記録している。
レジスタ49内の有効ビットは、レジスタ48にセットされているアドレス値が有効かどうかを示すもので、アドレス値がレジスタ48に登録される時セットされ、このエントリ41からアドレス値が読み出された時にリセットされる。待機ビットは、有効ビットがセットされているエントリ41において、1次キャッシュアクセスパイプライン23からのリクエストアドレスがレジスタ48内に登録されているアドレス値にマッチした場合セットされる。プリフェッチアドレスキュー(PFQ)25は、この待機ビットの状態から読み出しを行うエントリ41−1〜41−nを決定する。L2$PFP登録許可フラグは、1次キャッシュアクセスパイプライン23からのリクエストアドレスと、このエントリ41に登録されているアドレスがマッチ(ヒット)したときに次の256Bの連続アドレスを2次キャッシュプリフェッチポート(L2$PFP)27に登録するかどうかの判断に用いられるもので、L2$PFP登録許可フラグに1がセットされていれば2次キャッシュプリフェッチポート(L2$PFP)に登録を行ない、0がセットされていれば2次キャッシュプリフェッチポート(L2$PFP)に登録を行わない。
1次キャッシュアクセスパイプライン23からリクエストアドレスが入力され、これが新規登録される場合、有効ビットには1、待機ビットには0、L2$PFP登録許可フラグには1、及びアドレスにはリクエストアドレスに加算器45で64を加えた値が入力される。
またレジスタ49の登録アドレスが更新される場合には、L2$PFP登録許可フラグには、比較器42による加算器45の出力のビット[7:6]が0かどうかの比較結果と新規登録かどうかのORをOR回路43で求めた結果が入力される。このL2$PFP登録許可フラグの内容は、選択回路46及び47の選択信号となっており、L2$PFP登録許可フラグが1のときPFPリクエスト信号として1が出力され、またPFPリクエストアドレスとしてそのエントリ41のレジスタ49に登録されているレジスタ値に加算器48によって256B加算した値が出力される。そしてこれらの出力によって、2次キャッシュPFP(L2$PFP)27にPFPリクエストアドレスが登録される。
図4は、加算器45の出力アドレスと比較器42の出力の関係を示す図である。
加算器45によって、レジスタ49にセットされているアドレス値を64Bインクリメントしてレジスタ49に登録すると、その出力アドレスのビット[7:6]は、4回に一回0となり、よって比較器42からは4回に1回1が出力され、これがOR回路43を介してL2$PFP登録許可フラグにセットされる。なおレジスタ49への登録が新規登録の場合、L2$PFP登録許可フラグには1がセットされる。よって、アドレスの新規登録からアドレスが4回更新されるごとに1回L2$PFP登録許可フラグに1がセットされ、2次キャッシュPFP(L2$PFP)27にPFPリクエストアドレスが登録される。
このL2$PFP登録許可フラグは、プリフェッチキュー(PFQ)25に新規登録を行うとき及び256B境界の先頭64Bアドレスをプリフェッチキュー(PFQ)25に更新登録するときにセットされる。また256B境界の先頭64B以外のアドレスをPFQに更新登録するときリセットされる。
このプリフェッチキュー(PFQ)25は、1次キャッシュアクセスパイプライン23からプリフェッチのリクエストアドレスが入力されると、このアドレス値はレジスタ49内のアドレス値と比較器50によって比較され、この比較結果と有効ビットとのANDをAND回路51で取り、結果をPFQにヒットしたかどうかを示すPFQヒット信号として1次キャッシュアクセスパイプライン23に出力する。したがって、リクエストアドレスとレジスタ49が一致し、且つ有効ビットが1のときPFQヒット信号が1になる。
また1次キャッシュ2のラインの大きさが64Bに対して2次キャッシュ3のラインの大きさが256Bと、上位と下位のキャッシュメモリのラインサイズが異なるときであっても、2次キャッシュプリフェッチポート(L2$PFP)27へのアドレス値の登録は4回に1回(256B/64B)にすることが出来、プリフェッチ要求は2次キャッシュ3のラインサイズに付き1回となる。よって無駄な下位階層キャッシュアクセスパイプラインの消費を抑止し、性能向上を図ることが出来る。
次に、図2、図3を用い、プリフェッチ動作を含む、プロセッサのメモリアクセス命令に対する処理の詳細手順を以下に示す。
以下の説明では、アドレスA、A+8、A+16、...、A+56に対するload命令がプロセッサユニットでデコードされた場合を例として示す。
1:load命令が、フェッチポート(FP)21を介して1次キャッシュアクセスパイプライン23を獲得。
2:1次キャッシュアクセスパイプライン23において、1次キャッシュに対してアドレスAでアクセス。
3:1次キャッシュアクセスパイプライン23において、2の結果、1次キャッシュミスを検出。
4:1次キャッシュムーブインバッファ(L1$MIB)24にミスアドレスを登録。
4.1:1次キャッシュムーブインバッファ(L1$MIB)24は、2次キャッシュ3から1次キャッシュ2へのムーブイン要求を、2次キャッシュムーブインポート(L2$MIP)26に対して発行。
4.2:2次キャッシュムーブインポート(L2$MIP)26は、2次キャッシュアクセスパイプライン28を獲得し、2次キャッシュに対してアドレスAでアクセス。
4.3:2次キャッシュアクセスパイプライン28において、手順4.2の結果、2次キャッシュミスを検出。
4.4:2次キャッシュムーブインバッファ(L2$MIB)29にミスアドレスを登録。
4.5:2次キャッシュムーブインバッファ(L2$MIB)29は、主記憶装置5から2次キャッシュ3へのムーブイン要求を、システムコントローラムーブインポート(SCMIP)30に対して発行。
4.6:システムコントローラムーブインポート(SCMIP)30は、主記憶装置5からミスアドレスAから256B分のデータを取り出し、2次キャッシュムーブインバッファ(L2$MIB)29にムーブイン。
4.7:2次キャッシュムーブインバッファ(L2$MIB)29は、2次キャッシュアクセスパイプライン28を獲得し、2次キャッシュ4に256Bのムーブインデータを書き込む。
4.8:2次キャッシュムーブインバッファ(L2$MIB)29は、1次キャッシュムーブインバッファ(L1$MIB)24に64Bのムーブインデータをバイパス転送。
4.9:アドレスAで1次キャッシュミスしたload命令は、1次キャッシュアクセスパイプライン23を獲得し、1次キャッシュムーブインバッファ(L1$MIB)24に転送されたムーブインデータをバイパスして読み出し、プロセッサユニット1内のレジスタ31にデータを書き込む。
4.10:1次キャッシュムーブインバッファ(L1$MIB)24は、1次キャッシュアクセスパイプライン23を獲得し、1次キャッシュ2に64Bのムーブインデータを書き込む。
5:プリフェッチキュー(PFQ)25がミスを検出。
6:次の連続アドレス(A+64)をプリフェッチキュー(PFQ)25に新規登録。レジスタ49内のL2$PFP登録許可フラグをセット。
7:同様に、連続アドレス(A+8、A+16、...、A+56)にアクセスするload命令が、1次キャッシュアクセスパイプライン23を獲得。
8:このとき2次キャッシュ3からのムーブインデータが到着していなければ、1次キャッシュMIBヒット、データミスを検出し、1次キャッシュアクセスパイプライン23をアボート。アボートされた要求は、フェッチポート(FP)21に戻る。
9:また2次キャッシュ3からのムーブインデータが到着していて、1次キャッシュ2にデータが書き込まれていなければ、1次キャッシュMIBヒット、データヒットを検出し、1次キャッシュムーブインバッファ(L1$MIB)24のデータをバイパスして読み出し、レジスタ31にデータを書き込む。
10:また2次キャッシュ3からのムーブインデータが到着していて、1次キャッシュにデータが書き込まれていれば、1次キャッシュヒットを検出し、1次キャッシュ2からデータを読み出し、レジスタ31にデータを書き込む。
図5は、この手順8、9、10における各状態を示したものである。
手順8の状態では、1次キャッシュムーブインバッファ(L1$MIB)24からアドレスは到着しているがデータは到着しておらず、また1次キャッシュ2にはデータは書き込まれていないので、1次キャッシュアクセスパイプライン23をアボートする。
また手順9の状態では、1次キャッシュムーブインバッファ(L1$MIB)24からアドレス及びデータが到着しているが、1次キャッシュ2にはデータは書き込まれていないので、1次キャッシュムーブインバッファ(L1$MIB)24からデータを読み出してレジスタ31にデータを書き込む。
また手順10の状態では、1次キャッシュムーブインバッファ(L1$MIB)24からアドレス及びデータが到着しており、また1次キャッシュ2にはデータが書き込まれているので、1次キャッシュ2からデータを読み出してレジスタ31にデータを書き込む。
以下に続けて連続アドレス(A+64)にアクセスするload命令についての処理を説明する。
11:手順1と同様に、連続アドレス(A+64)にアクセスするload命令が、1次キャッシュアクセスパイプライン23を獲得。
12:手順11の結果、1次キャッシュミスを検出。
12.1:1次キャッシュムーブインバッファ(L1$MIB)24にミスアドレスを登録し、2次キャッシュ3にアクセス。
12.2:2次キャッシュヒットを検出し、2次キャッシュから64Bのデータを読み出し、1次キャッシュムーブインバッファ(L1$MIB)24に転送。
12.3:アドレス(A+64)で、1次キャッシュミスしたload命令は、1次キャッシュムーブインバッファ(L1$MIB)24のデータをバイパスして読み出し、レジスタ31にデータを書き込む。
12.4:1次キャッシュムーブインバッファ(L1$MIB)24は、1次キャッシュ2に64Bデータを書き込む。
13:プリフェッチキュー(PFQ)25のヒットを検出。レジスタ49内の待機ビットをセット。
14:次の連続アドレス(A+128)をプリフェッチキュー(PFQ)25に登録。レジスタ49内のL2$PFP登録許可フラグをリセット。
15:手順14でリセットされるまでL2$PFP登録許可フラグがセットされていたので、次の256B連続アドレス(A+64+256)を2次キャッシュプリフェッチポート(L2$PFP)27に登録。
15.1:2次キャッシュプリフェッチポート(L2$PFP)27は、2次キャッシュアクセスパイプライン28を獲得し、2次キャッシュ3に対して、アドレス(A+64+256)でアクセス。
15.2:手順15.1の結果、2次キャッシュミスを検出。
15.3:2次キャッシュムーブインバッファ(L2$MIB)29にキャッシュミスアドレスを登録。
15.4:2次キャッシュムーブインバッファ(L2$MIB)29は、主記憶装置5から2次キャッシュ3へのムーブイン要求を、システムコントローラムーブインポート(SCMIP)30に発行。
15.5:システムコントローラムーブインポート(SCMIP)30は、主記憶装置5からミスアドレス(A+64+256)から256B分のデータを取り出し、それを2次キャッシュムーブインバッファ(L2$MIB)29にムーブイン。
15.6:2次キャッシュムーブインバッファ(L2$MIB)29は、2次キャッシュアクセスパイプライン28を獲得し、2次キャッシュ3に256Bのムーブインデータを書き込む。
16:同様に、連続アドレス(A+64+8、A+64+16、...、A+64+56)にアクセスするload命令が、1次キャッシュアクセスパイプライン23を獲得。
17:2次キャッシュ4からのムーブインデータが到着していなければ、1次キャッシュMIBヒット、データミスを検出し1次キャッシュアクセスパイプライン23をアボート。アボートした要求は、フェッチポート(FP)21に戻る。
18:2次キャッシュ3からのムーブインデータが到着していて、1次キャッシュ2にデータが書き込まれていなければ、1次キャッシュMIBヒット、データヒットを検出し、1次キャッシュムーブインバッファ(L1$MIB)24のデータをバイパスして読み出し、それをレジスタ31に書き込む。
19:2次キャッシュ3からのムーブインデータが到着していて、1次キャッシュ2にデータが書き込まれていれば、1次キャッシュヒットを検出し、1次キャッシュ2からデータを読み出し、それをレジスタ41に書き込む。
以下に続けて連続アドレス(A+128)にアクセスするload命令についての処理を説明する。
20:手順1、11と同様に、連続アドレス(A+128)にアクセスするload命令が、1次キャッシュアクセスパイプライン23を獲得。
21:手順20の結果、1次キャッシュミスを検出。
21.1:1次キャッシュムーブインバッファ(L1$MIB)24にキャッシュミスアドレスを登録し、2次キャッシュ3にアクセス。
21.2:手順21.1の結果、2次キャッシュヒットを検出し、2次キャッシュ3から64Bのデータを読み出し、1次キャッシュムーブインバッファ(L1$MIB)24に転送。
21.3:アドレス(A+128)で1次キャッシュミスしたload命令は、1次キャッシュムーブインバッファ(L1$MIB)24からデータをバイパスして読み出し、これをレジスタ31に書き込む。
21.4:1次キャッシュムーブインバッファ(L1$MIB)24は、1次キャッシュ2に64Bデータを書き込む。
22:プリフェッチキュー(PFQ)25のヒットを検出。レジスタ49の待機ビットをセット。
23:次の連続アドレス(A+192)をプリフェッチキュー(PFQ)25に登録。L2$PFP登録許可フラグをリセット。
24:(手順23でリセットされるまでL2$PFP登録許可フラグがセットされていたので、次の256B連続アドレス(A+128+256)は、2次キャッシュプリフェッチポート(L2$PFP)27に登録しない。)
25:同様に、連続アドレス(A+128+8、A+128+16、...、A+128+56)にアクセスするload命令が、1次キャッシュアクセスパイプライン23を獲得。
26:2次キャッシュ3からのムーブインデータが到着していなければ、1次キャッシュムーブインバッファ(L1$MIB)24、データミスを検出し1次キャッシュアクセスパイプライン23をアボート。アボートした要求は、フェッチポート(FP)21に戻る。
27:2次キャッシュ3からのムーブインデータが到着していて、1次キャッシュにデータが書き込まれていなければ、1次キャッシュMIBヒット、データヒットを検出し、1次キャッシュMIBのデータをバイパスして読み出し、レジスタ31にデータを書き込む。
28:2次キャッシュ3からのムーブインデータが到着していて、1次キャッシュ2にデータが書き込まれていれば、1次キャッシュヒットを検出し、1次キャッシュ2からデータを読み出し、レジスタ31にデータを書き込む。
以下に続けて連続アドレス(A+192)にアクセスするload命令についての処理を説明する
29:手順1、11,20と同様に、連続アドレス(A+192)にアクセスするload命令が、1次キャッシュアクセスパイプラインを獲得。
30:手順29の結果、1次キャッシュミスを検出。
30.1:1次キャッシュムーブインバッファ(L1$MIB)24にキャッシュミスアドレスを登録し、2次キャッシュ3にアクセス。
30.2:2次キャッシュヒットを検出し、2次キャッシュから64Bのデータを読み出し、1次キャッシュムーブインバッファ(L1$MIB)24に転送。
30.3:アドレス(A+192)で、1次キャッシュミスしたload命令は、1次キャッシュムーブインバッファ(L1$MIB)24からデータをバイパスして読み出し、これをレジスタ31を書き込む。
30.4:1次キャッシュムーブインバッファ(L1$MIB)24は、1次キャッシュ2に64Bデータを書き込む。
31:プリフェッチキュー(PFQ)25のヒットを検出。レジスタ49の待機ビットをセット。
32:次の連続アドレス(A+256)をプリフェッチキュー(PFQ)25に登録。レジスタ49のL2$PFP登録許可フラグをセット。
33:(手順32でセットされるまでL2$PFP登録許可フラグがリセットされていたので、次の256B連続アドレス(A+192+256)は、2次キャッシュプリフェッチポート(L2$PFP)27に登録しない。)
34:同様に、連続アドレス(A+192+8、A+192+16、...、A+192+56)にアクセスするload命令が、1次キャッシュアクセスパイプライン23を獲得。
35:2次キャッシュ3からのムーブインデータが到着していなければ、1次キャッシュムーブインバッファ(L1$MIB)24ヒット、データミスを検出し1次キャッシュアクセスパイプライン23をアボート。アボートされた要求はフェッチポート(FP)21に戻る。
36:2次キャッシュ3からのムーブインデータが到着していて、1次キャッシュ2にデータが書き込まれていなければ、1次キャッシュムーブインバッファ(L1$MIB)24ヒット、データヒットを検出し、1次キャッシュムーブインバッファ(L1$MIB)24からデータをバイパスして読み出し、これをレジスタ31に書き込む。
37:2次キャッシュ3からのムーブインデータが到着していて、1次キャッシュ2にデータが書き込まれていれば、1次キャッシュヒットを検出し、1次キャッシュ2からデータを読み出し、これをレジスタ31に書き込む。
以下に続けて連続アドレス(A+256)にアクセスするload命令についての処理を説明する。
38:同様に、連続アドレス(A+256)にアクセスするload命令が、1次キャッシュアクセスパイプライン23を獲得。
39:手順38の結果1次キャッシュ2ミスを検出。
39.1:1次キャッシュムーブインバッファ(L1$MIB)24にミスアドレスを登録し、2次キャッシュ3にアクセス。
39.2:2次キャッシュヒットを検出し、2次キャッシュ3から64Bのデータを読み出し、これを1次キャッシュムーブインバッファ(L1$MIB)24に転送。
39.3:アドレス(A+256)で、1次キャッシュミスしたload命令は、1次キャッシュムーブインバッファ(L1$MIB)24からデータをバイパスして読み出し、これをレジスタ31に書き込む。
39.4:1次キャッシュMIBは、1次キャッシュに64Bデータを書き込む。
40:プリフェッチキュー(PFQ)25ヒットを検出。レジスタ49内の待機ビットをセット。
41:次の連続アドレス(A+320)をプリフェッチキュー(PFQ)25に登録。レジスタ49内のL2$PFP登録許可フラグをリセット。
42:手順41でリセットされるまでL2$PFP登録許可フラグがセットされていたので、次の256B連続アドレス(A+256+256)を2次キャッシュプリフェッチポート(L2$PFP)27に登録。
42.1:2次キャッシュプリフェッチポート(L2$PFP)27は、2次キャッシュアクセスパイプライン28を獲得し、2次キャッシュ3に対してアドレス(A+256+256)でアクセス。
42.2:手順42.1の結果、2次キャッシュミスを検出。
42.3:1次キャッシュムーブインバッファ(L1$MIB)24にミスアドレスを登録。
42.4:1次キャッシュムーブインバッファ(L1$MIB)24は、主記憶装置5から2次キャッシュ3へのムーブイン要求を、システムコントローラムーブインポート(SCMIP)30に対して発行。
42.5:システムコントローラムーブインポート(SCMIP)30は、主記憶装置5からキャッシュミスアドレス(A+256+256)から256B分のデータを取り出し、このデータを2次キャッシュムーブインバッファ(L2$MIB)29にムーブイン。
42.6:2次キャッシュムーブインバッファ(L2$MIB)29は、2次キャッシュアクセスパイプライン28を獲得し、2次キャッシュ3に256Bのムーブインデータを書き込む。
以下、連続アドレス(A+320)、(A+384)、・・・にアクセスするload命令について同様の処理を繰り返す。
図6は、図3に示した第1の実施形態のプリフェッチキュー(PFQ)25の動作を示すフローチャートである。
ステップS1において、アドレスAにて1次キャッシュ2にアクセスし、1次キャッシュ2がキャッシュミスし(ステップS2、Y)、且つプリフェッチキュー(PFQ)25もミスしたら(ステップS3、Y)、ステップS4としてプリフェッチキュー(PFQ)25に1次キャッシュ2の1ライン分先のアドレス(A+64)を登録し、またプリフェッチキュー(PFQ)25内のレジスタ49のL2$登録許可フラグをセットして、処理をステップS1に戻す。
またステップS2において、1次キャッシュ2がヒットし(ステップS2、N)、プリフェッチキューがミスしたとき(ステップS3、Y)、処理をステップS1に戻す。
ステップS2において、1次キャッシュ2がミスし(ステップS2、Y)、プリフェッチキュー(PFQ)25はヒットしたとき(ステップS3、N)、及び1次キャッシュ2がヒットし(ステップS2、N)、プリフェッチキュー(PFQ)25はヒットしたとき(ステップS3、N)、処理をステップS6に移し、プリフェッチを行う。
ステップS6では、プリフェッチキュー(PFQ)25のレジスタ49内の待機ビットをセットする。そしてレジスタ49内のL2$登録許可フラグがセットされていたら(ステップS7、Y)、2次キャッシュプリフェッチポート(L2$PFP)27にPFPリクエストアドレス(A+64)でプリフェッチう要求を登録し、L2$登録許可フラグがセットされていなければ(ステップS7、N)、2次キャッシュプリフェッチポート(L2$PFP)27にリクエストを登録しない。
次にステップS9としてプリフェッチキュー(PFQ)25の登録アドレスをA+64に更新した後、(A/64+1)を4で割った余りが0ならばステップS11としてレジスタ49内のL2$登録許可フラグをセットして、処理をステップS1に戻す。またA/64+1)を4で割った余りが0でないのならばステップS12としてL2$登録許可フラグをリセットして、処理をステップS1に戻す。
このように第1の実施形態では、下位層のキャッシュレジスタのラインの大きさ毎にプリフェッチ要求を発行することが出来るので、無駄なプリフェッチ要求がアクセスパイプラインを占めることが無く、性能向上を図ることが出来る。
次に、プリフェッチキュー(PFQ)25の第2の構成例について説明する。
第1の実施形態のプリフェッチキュー(PFQ)25が、下位階層のキャッシュの1ラインの大きさが上位階層のキャッシュの1ラインの大きさのn倍であったとき、n回の連続アクセスに対して1回2次キャッシュプリフェッチポート(L2$PFP)27に対してプリフェッチ要求を登録していたが、第2の実施形態のプリフェッチキュー(PFQ)25は、n回に2回以上プリフェッチ要求を登録する。
下位階層のキャッシュのミスでムーブインされるデータサイズが、下位階層のキャッシュのラインサイズである場合、下位階層のキャッシュに発行されるハードウエアプリフェッチの要求は、第1の実施形態のプリフェッチキュー(PFQ)25のように下位階層のキャッシュのラインサイズにつき1回でよい。
しかし、プリフェッチ要求は、ハードウエア実装上の制約によりロストしてしまうケースが時々あるため、プリフェッチ要求の発行が1回のみだと、ハードウエアプリフェッチがロストした場合に、下位階層のキャッシュへのメモリデータのムーブイン要求が発行されなくなってしまう。この実装上の制約とは、例えば2次キャッシュ3がミスすると2次キャッシュムーブインバッファ(L2$MIB)29に登録されるが、2次キャッシュムーブインバッファ(L2$MIB)29が一杯のときは、再登録を行わずにプリフェッチ要求がロストしてしまうことがある。
この点に対処し、第2の実施形態のプリフェッチキュー(PFQ)25は、下位階層のキャッシュのラインサイズにつき複数回プリフェッチ要求を2次キャッシュプリフェッチポート(L2$PFP)27に発行する。
図7は、第2の実施形態のプリフェッチキュー(PFQ)25の構成例を示す図である。なお同図は、図3の第1の実施形態のプリフェッチキュー(PFQ)25と対比する形で記載されている。
図7を図3の第1の実施形態のプリフェッチキュー(PFQ)25と比較すると、比較器42aの入力が、加算器45aから出力されるアドレスのうちビット[6]のみになっている。よって第1の実施形態ではレジスタ49のアドレスが4回更新されると1回L2$PFP登録許可フラグが1にセットされているが、第2の実施形態のプリフェッチキュー(PFQ)25では、アドレスが4回更新されると2回L2$PFP登録許可フラグに1がセットされ、2次キャッシュプリフェッチポート(L2$PFP)27にリクエストが登録される。
これにより第2の実施形態では、1つのプリフェッチ要求が、ハードウエアの実装上の問題でロストしても、対処することが出来る。
次に、プリフェッチキュー(PFQ)25の第3の実施形態について説明する。
第3の実施形態のプリフェッチキュー(PFQ)25も、第2の実施形態と同様、ハードウエアの実装上の問題で、プリフェッチ要求がロストする場合に対処したものである。
第3の実施形態では、上位階層のキャッシュのラインサイズの2倍以上のブロックをプリフェッチするように2次キャッシュプリフェッチポート(L2$PFP)27にプリフェッチ要求を発行する。これによりプリフェッチ要求は、2次キャッシュプリフェッチポート(L2$PFP)27で2倍以上に展開され、複数のプリフェッチ要求が発行される。
図8は、第3の実施形態のプリフェッチキュー(PFQ)25の構成例を示す図である。なお同図も、図3の第1の実施形態のプリフェッチキュー(PFQ)25と対比する形で記載されている。
図8の第3の実施形態のプリフェッチキュー(PFQ)25の構成を図3の第1の実施形態の構成と比較すると、2次キャッシュプリフェッチポート(L2$PFP)27に出力されるPFPリクエストブロックサイズ61が128Bと、1次キャッシュ2のラインの2倍になっている。なお不図示であるが、図3の第1の実施形態ではこのPFPリクエストブロックサイズは、1次キャッシュ2のラインサイズと同じ64Bとなっている。
この構成により第3の実施形態のプリフェッチキュー(PFQ)25では、1次キャッシュ2のラインサイズの2倍のサイズのブロックサイズを指定して、プリフェッチ要求を2次キャッシュプリフェッチポート(L2$PFP)27に対して発行するので、2次キャッシュプリフェッチポート(L2$PFP)27では2回のプリフェッチ要求が発行されることになる。
これにより第3の実施形態でも、1つのプリフェッチ要求が、ハードウエアの実装上の問題でロストしても、対処することが出来る。
次に、プリフェッチキュー(PFQ)25の第4の実施形態について説明する。
第4の実施形態のプリフェッチキュー(PFQ)25は、本実施形態で行われている下位層キャッシュのラインサイズ(256B)毎のムーブインと、従来のプロセッサで行われている上位層キャッシュのラインサイズ(64B)毎のムーブインを切り換えることが出来るようしたものである。
これにより、コピーバックの際に実行される上位層キャッシュのラインサイズ(64B)毎のムーブインにも対処することが出来る。
図9は、第4の実施形態のプリフェッチキュー(PFQ)25の構成例を示す図である。なお同図も、図3の第1の実施形態のプリフェッチキュー(PFQ)25と対比する形で記載されている。
同図の第4の実施形態のプリフェッチキュー(PFQ)25と図3の第1の実施形態を比較すると、図9の構成では、レジスタ49bにムーブイン(MI)データサイズが記憶されている。このMIデータサイズは、0がセットされるとプリフェッチキュー(PFQ)25は256B毎のムーブインを行ない、1がセットされると64B毎のムーブインを行う。
このMIデータサイズには、初期値として0がセットされ、キャッシュミスしたムーブインアドレスとレジスタ49bにセットされているアドレスを比較器71で比較した結果、両者が一致し、且つムーブインデータサイズが64Bであったとき、AND回路72の出力によって1がセットされる。またこのMIデータサイズは、OR回路73によってL2$PFP登録許可フラグとのORが取られた結果が選択回路46bに入力される。よって、MIデータサイズに0がセットされているときは256Bのムーブインを行ない、1がセットされているときは64Bのムーブインを行なう、というようにムーブインの大きさを切り換えることができる。
以上のように本実施形態によれば、上位層のキャッシュレジスタと下位層のキャッシュレジスタのラインの大きさが異なっても、下位層のキャッシュレジスタのラインの大きさ毎にプリフェッチ要求を発行することが出来るので、無駄なプリフェッチ要求でキャッシュアクセスパイプラインが消費されるのを抑止し、性能向上を図ることが出来る。
また実装上の制約により、プリフェッチ要求がロストしてしまう点にも対処することが出来る。
更には、コピーバックの際に実行される上位層キャッシュのラインサイズのムーブインにも対処することが出来る。
なお上記例では、本発明を2次キャッシュメモリと主記憶装置間のプリフェッチに適用した場合を例として示したが、本発明はこれに限定されるものではなく、システムが3次キャッシュ以上のキャッシュメモリを備えている場合、2次キャッシュと3次キャッシュの間、3次キャッシュと主記憶装置の間等にも適用することが出来る。
また、上記例では、プリフェッチの連続アクセス方向が、昇順であるケースについて適用した場合を例として示したが、本発明はこれに限定されるものではなく、プリフェッチの連続アクセス方向が、降順であるケースについても、適用することができる。

Claims (11)

  1. 第1のラインサイズを持つ第1の階層のキャッシュメモリと、
    当該第1の階層のキャッシュメモリの下位階層で、前記第1のラインサイズとは異なる大きさの第2のラインサイズを持つ第2の階層のキャッシュメモリと、
    前記第2のラインサイズ毎に、前記第1のラインサイズ分のブロックをプリフェッチするように、前記第1の階層のキャッシュメモリから前記第2の階層のキャッシュに対するプリフェッチ要求を発行するプリフェッチ制御部と、
    を備えることを特徴とするプリフェッチ機能を有するプロセッサ。
  2. 前記プリフェッチ制御部は、前記第2のラインサイズ毎に1回前記プリフェッチ要求を発行することを特徴とする請求項1に記載のプリフェッチ機能を有するプロセッサ。
  3. 前記プリフェッチ制御部は、前記第2のラインサイズ毎に複数回前記プリフェッチ要求を発行することを特徴とする請求項1に記載のプリフェッチ機能を有するプロセッサ。
  4. 前記プリフェッチ制御部は、前記第1のラインサイズの2倍以上のブロックをプリフェッチするように、前記プリフェッチ要求を発行することを特徴とする請求項1乃至3のいずれか1つに記載のハードウエアプリフェッチ機能を有するプロセッサ。
  5. 前記プリフェッチ制御部は、前記プリフェッチ要求を行うプリフェッチ先のアドレスを、前記第1の階層のキャッシュメモリでミスしたアドレスから前記第2のラインサイズ分先のアドレスとすることを特徴とする請求項1乃至4のいずれか1つに記載のハードウエアプリフェッチ機能を有するプロセッサ。
  6. 前記プリフェッチ制御部は、前記第1のラインサイズ毎に前記プリフェッチ要求を発行するのと、前記第2のラインサイズ毎に前記プリフェッチ要求を発行するのとを、ムーブインしたデータの大きさに基づいて切り換える切換部を更に備えることを特徴とする請求項1乃至5のいずれか1つに記載のハードウエアプリフェッチ機能を有するプロセッサ。
  7. 前記切換部は、コピーバックの要求が発生したときに、前記前記第1のラインサイズ毎に前記プリフェッチ要求を発行するよう前記プリフェッチ制御部を切り換えることを特徴とする請求項6に記載のハードウエアプリフェッチ機能を有するプロセッサ。
  8. 前記プリフェッチ制御部は、登録アドレス及び当該登録アドレスによって値が決定するL2$PFP登録許可フラグを記憶するレジスタを更に備え、前記L2$PFP登録許可フラグの値に基づいて前記プリフェッチ要求を発行するか否かを決定することを特徴とする請求項1乃至6のいずれか1つに記載のハードウエアプリフェッチ機能を有するプロセッサ。
  9. 前記L2$PFP登録許可フラグの値は、前記登録アドレスの特定の位置のビットが0か否かによって決定されることを特徴とする請求項8に記載のハードウエアプリフェッチ機能を有するプロセッサ。
  10. 前記第1の階層のキャッシュメモリは1次キャッシュメモリであり、前記第2の階層のキャッシュメモリは2次キャッシュメモリであることを特徴とする請求項1乃至9のいずれか1つに記載のハードウエアプリフェッチ機能を有するプロセッサ。
  11. 第1のラインサイズを持つ第1の階層のキャッシュメモリと、当該第1の階層のキャッシュメモリの下位階層で、前記第1のラインサイズとは異なる大きさの第2のラインサイズを持つ第2の階層のキャッシュメモリとを備えたプロセッサにおけるプリフェッチ制御方法であって、
    前記第2の階層のキャッシュメモリでのキャッシュミスを検出し、
    前記第2のラインサイズ毎に、前記第1のラインサイズ分のブロックをプリフェッチするように、前記第1の階層のキャッシュメモリから前記第2の階層のキャッシュに対するプリフェッチ要求を発行する
    ことを特徴とするプリフェッチ制御方法。
JP2008502585A 2006-02-28 2006-02-28 演算処理装置、情報処理装置及び制御方法 Expired - Fee Related JP4574712B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/303743 WO2007099598A1 (ja) 2006-02-28 2006-02-28 プリフェッチ機能を有するプロセッサ

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2010057979A Division JP2010176692A (ja) 2010-03-15 2010-03-15 演算処理装置、情報処理装置及び制御方法

Publications (2)

Publication Number Publication Date
JPWO2007099598A1 true JPWO2007099598A1 (ja) 2009-07-16
JP4574712B2 JP4574712B2 (ja) 2010-11-04

Family

ID=38458721

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008502585A Expired - Fee Related JP4574712B2 (ja) 2006-02-28 2006-02-28 演算処理装置、情報処理装置及び制御方法

Country Status (4)

Country Link
US (1) US8074029B2 (ja)
EP (1) EP1990731B1 (ja)
JP (1) JP4574712B2 (ja)
WO (1) WO2007099598A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5293001B2 (ja) * 2008-08-27 2013-09-18 日本電気株式会社 キャッシュメモリ装置及びその制御方法
WO2010116403A1 (ja) * 2009-03-30 2010-10-14 富士通株式会社 プリフェッチ要求回路
JP5482801B2 (ja) * 2009-12-25 2014-05-07 富士通株式会社 演算処理装置
US8909866B2 (en) * 2012-11-06 2014-12-09 Advanced Micro Devices, Inc. Prefetching to a cache based on buffer fullness
US9588886B2 (en) * 2013-03-15 2017-03-07 Seagate Technology Llc Staging sorted data in intermediate storage
US20140281194A1 (en) 2013-03-15 2014-09-18 Seagate Technology Llc Dynamically-sizeable granule storage
US9569361B2 (en) 2014-01-10 2017-02-14 Samsung Electronics Co., Ltd. Pre-fetch chaining
JP6337570B2 (ja) * 2014-03-28 2018-06-06 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2016028319A (ja) * 2014-07-08 2016-02-25 富士通株式会社 アクセス制御プログラム、アクセス制御装置及びアクセス制御方法
CN104503923B (zh) * 2014-11-21 2017-08-11 华中科技大学 一种非对称磁盘阵列高速缓存调度方法
US9594687B2 (en) * 2015-04-14 2017-03-14 Google Inc. Virtualization-aware prefetching

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61169949A (ja) * 1985-01-22 1986-07-31 Fujitsu Ltd バツフアメモリ制御方式
JPH02301843A (ja) * 1989-05-17 1990-12-13 Fujitsu Ltd プリフェッチ制御方法およびプリフェッチ制御装置
JPH06149669A (ja) * 1992-11-04 1994-05-31 Fujitsu Ltd キャッシュデータ転送方式およびキャッシュデータ転送装置
JPH07129464A (ja) * 1993-11-05 1995-05-19 Hitachi Ltd 情報処理装置
JPH09128293A (ja) * 1995-10-27 1997-05-16 Hitachi Ltd 情報処理装置
JP2000339157A (ja) * 1999-05-27 2000-12-08 Fujitsu Ltd キャッシュメモリ制御装置および計算機システム
JP2004038345A (ja) * 2002-06-28 2004-02-05 Fujitsu Ltd プリフェッチ制御装置、情報処理装置及びプリフェッチ制御方法
JP2006040141A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd マルチスレッドプロセッサ
JP2006048181A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 記憶制御装置、ムーブインバッファ制御方法およびプログラム
JP2006048182A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 記憶制御装置、ムーブインバッファ制御方法およびプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195735B1 (en) * 1996-12-31 2001-02-27 Texas Instruments Incorporated Prefetch circuity for prefetching variable size data
JPH11289580A (ja) * 1998-04-01 1999-10-19 Sharp Corp 無線電話装置
JP2001060169A (ja) * 1999-08-24 2001-03-06 Hitachi Ltd キャッシュコントローラ及びコンピュータシステム
US6460115B1 (en) * 1999-11-08 2002-10-01 International Business Machines Corporation System and method for prefetching data to multiple levels of cache including selectively using a software hint to override a hardware prefetch mechanism
US7493480B2 (en) * 2002-07-18 2009-02-17 International Business Machines Corporation Method and apparatus for prefetching branch history information
US7162588B2 (en) * 2002-08-23 2007-01-09 Koninklijke Philips Electronics N.V. Processor prefetch to match memory bus protocol characteristics
TW576977B (en) * 2002-09-11 2004-02-21 Sunplus Technology Co Ltd Structure and method for planning control commands and data access
US7032076B2 (en) * 2002-09-16 2006-04-18 Intel Corporation Prefetching data in a computer system
US7228362B2 (en) * 2004-03-31 2007-06-05 Intel Corporation Out-of-order servicing of read requests with minimal additional storage

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61169949A (ja) * 1985-01-22 1986-07-31 Fujitsu Ltd バツフアメモリ制御方式
JPH02301843A (ja) * 1989-05-17 1990-12-13 Fujitsu Ltd プリフェッチ制御方法およびプリフェッチ制御装置
JPH06149669A (ja) * 1992-11-04 1994-05-31 Fujitsu Ltd キャッシュデータ転送方式およびキャッシュデータ転送装置
JPH07129464A (ja) * 1993-11-05 1995-05-19 Hitachi Ltd 情報処理装置
JPH09128293A (ja) * 1995-10-27 1997-05-16 Hitachi Ltd 情報処理装置
JP2000339157A (ja) * 1999-05-27 2000-12-08 Fujitsu Ltd キャッシュメモリ制御装置および計算機システム
JP2004038345A (ja) * 2002-06-28 2004-02-05 Fujitsu Ltd プリフェッチ制御装置、情報処理装置及びプリフェッチ制御方法
JP2006040141A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd マルチスレッドプロセッサ
JP2006048181A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 記憶制御装置、ムーブインバッファ制御方法およびプログラム
JP2006048182A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 記憶制御装置、ムーブインバッファ制御方法およびプログラム

Also Published As

Publication number Publication date
WO2007099598A1 (ja) 2007-09-07
US8074029B2 (en) 2011-12-06
EP1990731A1 (en) 2008-11-12
JP4574712B2 (ja) 2010-11-04
US20090037663A1 (en) 2009-02-05
EP1990731A4 (en) 2009-08-26
EP1990731B1 (en) 2015-05-27

Similar Documents

Publication Publication Date Title
JP4574712B2 (ja) 演算処理装置、情報処理装置及び制御方法
US10877901B2 (en) Method and apparatus for utilizing proxy identifiers for merging of store operations
US7284112B2 (en) Multiple page size address translation incorporating page size prediction
KR102448124B1 (ko) 가상 주소들을 사용하여 액세스된 캐시
US7958317B2 (en) Cache directed sequential prefetch
TWI534621B (zh) 預取單元、資料預取方法、電腦程式產品以及微處理器
US10083126B2 (en) Apparatus and method for avoiding conflicting entries in a storage structure
US9131899B2 (en) Efficient handling of misaligned loads and stores
JPH1074166A (ja) 多重レベル・ダイナミック・セット予測方法および装置
US20170091097A1 (en) Hazard checking
JPH0619793A (ja) キャッシュ・アクセスのための仮想アドレス変換予測の履歴テーブル
US9690707B2 (en) Correlation-based instruction prefetching
JPH07295886A (ja) 階層メモリ、階層メモリを有するコンピュータ・システムおよび階層メモリ管理方法
JP2009512943A (ja) 多階層の変換索引緩衝機構(TLBs)フィールドの更新
JP2010170266A (ja) 半導体集積回路及びアドレス変換方法
US20140164712A1 (en) Data processing apparatus and control method thereof
US20070186046A1 (en) Pseudo LRU algorithm for hint-locking during software and hardware address translation cache miss handling modes
US6643743B1 (en) Stream-down prefetching cache
US20010032297A1 (en) Cache memory apparatus and data processing system
US7076635B1 (en) Method and apparatus for reducing instruction TLB accesses
JP2010176692A (ja) 演算処理装置、情報処理装置及び制御方法
JP7311959B2 (ja) 複数のデータ・タイプのためのデータ・ストレージ
JP2017191564A (ja) 演算処理装置及び演算処理装置の制御方法
JP2001344152A (ja) キャッシュメモリ装置
CN111198827A (zh) 页表预取方法及装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090414

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090615

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20091215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100315

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100722

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: 20100817

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: 20100818

R150 Certificate of patent or registration of utility model

Ref document number: 4574712

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130827

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees