JP5203358B2 - データをプリフェッチする装置および方法 - Google Patents

データをプリフェッチする装置および方法 Download PDF

Info

Publication number
JP5203358B2
JP5203358B2 JP2009514258A JP2009514258A JP5203358B2 JP 5203358 B2 JP5203358 B2 JP 5203358B2 JP 2009514258 A JP2009514258 A JP 2009514258A JP 2009514258 A JP2009514258 A JP 2009514258A JP 5203358 B2 JP5203358 B2 JP 5203358B2
Authority
JP
Japan
Prior art keywords
information
miss
memory
row
prefetch
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.)
Active
Application number
JP2009514258A
Other languages
English (en)
Other versions
JP2009540429A (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2009540429A publication Critical patent/JP2009540429A/ja
Application granted granted Critical
Publication of JP5203358B2 publication Critical patent/JP5203358B2/ja
Active 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/6024History based prefetching

Landscapes

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

Description

本出願は、データプロセッサの使用のために取得されるデータの決定に関し、より詳細には、データプロセッサのためにプリフェッチされる情報の決定に関する。
プリフェッチとは、データプロセッサを備えたコンピューティングデバイスに広く実装されている手法であり、この手法では、プロセッサが要求するデータおよび命令が、プロセッサが実際に必要としていると予想してプリフェッチされる。プリフェッチの結果、外部記憶装置に関連する低データレートではなく、プロセッサの内部バスアーキテクチャの比較的高いデータレートによって制限されるデータレートで、プロセッサが情報を利用できるようになる。このため、プリフェッチされた情報(データ、命令など)は、要求時にプロセッサがオンチップで利用可能であるため、通常は、プリフェッチによりプロセッサ全体の性能が改善される。
しかし、プリフェッチの実行が適切ではない場合には、結局はプロセッサが必要としない情報をプリフェッチすることによって、プリフェッチによりプロセッサまたはシステムの性能が低下しかねない。このため、特定のプリフェッチ手法は、あるタイプの用途では有利であるが、別のタイプの用途には適さないこともあるということが認められよう。このため、特定のタイプの用途のプリフェッチ効率を改善する、情報をプリフェッチするための方法および装置が有用であろう。
本発明は、添付の図面を参照することによって、より明確に理解することができ、その数多くの特徴および利点が当業者にとって明白となろう。
本開示によれば、実行中にキャッシュミスとなった命令の位置(ロケーション)に基づいて、プリフェッチ情報がアクセスされる。アクセスされるプリフェッチ情報は、以前のキャッシュミスと現在のキャッシュミスの情報に基づいて決定される。例えば、以前のキャッシュミスに基づく情報が、プリフェッチ情報としてデータレコードに記憶される。このプリフェッチ情報は、以前のキャッシュミスを発生させた命令の位置(ロケーション)情報を含んでおり、現在のキャッシュミスのプリフェッチ要求を生成するためにアクセスされる。更に、現在のキャッシュミス情報に基づいて、プリフェッチ情報が更新される。本開示の特定の実施形態は、ここで図1〜19の図面を参照すれば、より明確に理解できるであろう。
本開示の特定の実施形態を、一連の命令を実行した結果記憶されるプリフェッチ情報に関して記載する。図1は、複数の行を有するテーブル110が図示されており、その各行は、データプロセッサによる命令の実行に関連する情報を表している。テーブル110の列111は、対応する命令の実行時間を示す情報を含む。テーブル110の列112は、対応する命令への命令ポインタを特定する情報を含む。テーブル110の列113は、実行された命令を特定する情報を含む。
列111に記憶されている情報は、対応する命令が、テーブル110の他の命令に対して実行される相対順序を示す時間標識である。時間標識の末尾の数字により、INST2は、対応する時間標識T1を有するINST1の後に実行されることが示される点に留意されたい。INST1とINST2の間に別の命令が入らず、INST1とINST2が連続的に実行されるとは限らない点に留意されたい。
列112の命令ポインタは、その対応する命令の位置(ロケーション)を示す。例えば、時間T1に実行される命令INST1は、図1では、hFFFF1234という16進値を有する。命令ポインタは、物理メモリ空間、論理メモリ空間を含む、どのようなタイプのメモリ空間の位置(ロケーション)を表してもよい。
INST1〜INST4は、実行時にキャッシュミスとなる命令である。ここでの説明のため、すべてのキャッシュミスが、ニーモニックLOADxのロード命令の結果発生するものとする。ロード命令のニーモニックの末尾の「x」は、A〜Zの値を有するアルファベット文字であり、特定のレジスタを識別する。このため、ニーモニックLOADAとLOADBは、メモリの情報にアクセスし、それぞれ、レジスタA121とレジスタB122にストアする命令を表す。
命令INST1〜INST4を実行する際には、各種のアドレス指定モードを使用してメモリ位置がアクセスされうる。ここに特に示すアドレス指定モードには、直接アドレス指定モードとレジスタ間接アドレス指定モードが含まれる。命令「LOADB hADDR1」は、直接アドレス指定モードを使用するロード命令の例であり、hADDR1は、レジスタB121においてリードおよびストアされるメモリ位置を特定している16進数である。先頭の文字「h」は、値Addr1が16進数であることを示す点に留意されたい。命令「LOADB <REGA>」は、記号「<>」が示すように、レジスタ間接アドレス指定モードの例であり、記号「<>」で囲んだレジスタにストアされている値は、この位置から情報がレジスタB121にリードおよびストアされるメモリ位置を特定している。
例えば、図1には、INST1が、レジスタ間接アドレス指定モードを使用するLOADB命令であることが示されている。ニーモニック<REG A>は、レジスタA121に、その位置から情報を読み出すアドレス値が含まれることを特定している。レジスタA121の値は、ADDR(T1)であり、レジスタA121にストアされている情報が、命令INST1の実行中の時間T1に存在していたアドレス位置を表すことを示している。
説明のため、メモリ空間の各バイトが32ビット値によってアドレス指定可能であるとする。先頭の文字「h」は、ここでは16進数を表すのに用いられる。このため、図1のレジスタA121にストアされている値は、32ビット値であり、ビット順序を示す参照符号123に示すように、最上位ビット(b31)と最下位ビット(b0)を有する。
特定のニーモニックを、各メモリ位置を表すビットb31〜b0の一部分と関連付ければ、ここでの説明がわかりやすくなるであろう。データプロセッサシステムは、各メモリアクセスによってアクセスされる最小バイト数を有しうることが理解されよう。ここでの説明のため、一度に4バイトずつアクセスされるとする。このため、最小アクセスブロックは、整列された4バイトの領域に関連するバイトを含む。この4バイト領域の各バイトはバイトインデックスによって特定され、本例では、これには、アドレスロケーションの下位2ビット(LSB)が含まれる。図1に更に示すように、「ベースアドレス」との文言は、メモリ内で整列領域を特定するインデックス値を与える、各32ビットメモリロケーションの所定の数の上位ビット(MSB)を指す。図に示すように、図1の22ビットのベースアドレスには、各アドレスロケーションの上位22のMSB(b1〜b10)が含まれる。このため、それぞれが一意である22ビットのベースアドレス値は、アドレス整列されたメモリ領域の先頭バイトを特定する。「アドレス整列されたメモリ領域」との文言は、オフセットを繰り返して整列された(例えば始点など)メモリの整列領域を指し、例えばアドレス値に基づいた、1キロバイト(210)おきのメモリ領域(例えばh0、h400、h800、hC00等)などである。ここに記載する別の整列されたメモリ領域として、中央ブロック整列されたメモリ領域があり、これは、中央にくる特定のメモリブロックに対する参照メモリブロックへの正負のインデックス値を使用する方式である。
オフセットは、整列領域内で特定の1以上のバイトをインデックスするかまたはアドレス指定するために使用される。例えば、1キロバイト領域内で任意の1バイトを特定するために、10ビットのオフセットインデックス(オフセットインデックス1)が使用されうる。別の実施形態では、これより大きな整列領域内のバイトブロックの先頭バイトを特定するために、オフセットインデックスが使用されてもよい。例えば、オフセットインデックス2は、1キロバイト領域内で、特定の最小アクセスブロックを特定するために使用することができる8ビットのオフセットインデックスである。同様に、オフセットインデックス3は、キャッシュラインサイズに対応する1キロバイト領域内で、64バイトメモリブロックの先頭バイトを特定するために使用することができる4ビットのオフセットである。例えば、メモリに対する各データ要求の結果、64バイトのキャッシュラインが埋まるとすると、このキャッシュライン内の特定のバイトを特定するために、ビットb5〜b0(ブロックインデックス)が使用され、オフセットインデックス3の特定の値は、22ビットのベースアドレスによって定義される1キロバイトの整列領域内の16個の64バイトの領域の1つをインデックスしている。
別の実施形態では、同じ命令セットに基づくインデックストレーニングプリフェッチ情報図3〜7に記載され、この方式では、ブロックオフセットは、キャッシュミスとなったブロックを表す中央位置に対するオフセットである。この位置は、正負のオフセットを使用することができるため、中央位置と呼ばれる。
図2は、本開示によるシステム300を示す。システム300は、表221に示す命令を実行するデータプロセッサ310;データプロセッサ310から情報を受信し、プリフェッチ情報を提供するように結合されたプリフェッチトレーニングモジュール320;プリフェッチトレーニングモジュール320からプリフェッチ情報を受信して、これを記憶する記憶場所330;記憶場所330にある情報に基づいてプリフェッチ要求を提供するプリフェッチコントローラ340;データプロセッサ310からメモリアクセス要求情報を、プリフェッチコントローラ340からメモリプリフェッチ要求を受け取り、メモリ370にメモリ要求を、プリフェッチトレーニングモジュール320およびプリフェッチ制御モジュールにキャッシュミス標識を提供するメモリコントローラ350;および、メモリコントローラ350から要求された情報を受け取り、これを提供するキャッシュ360を備える。図2の特定の実施形態では、集積回路装置301と外部コンポーネント302との間に境界が示されている。
データプロセッサ310内にテーブル231が示されており、テーブル311の各行はデータプロセッサ310によって実行される命令を表している。表311の各行において、列312は、命令の位置を示す命令ポインタを特定し、命令ポインタによってポイントされている命令が列313に一覧され、列311には、テーブル231の他の命令に対する各命令の実行の順序を示す時間シーケンス標識が一覧され、列314のアドレスは、一覧された命令によってアクセスされるメモリ位置を示す。
動作時に、データプロセッサ310は、特定の命令の実行を完了するのに必要な情報を含むメモリ位置を特定するアドレス情報を、メモリコントローラ350に提供する。メモリコントローラ350は、要求されたアドレスの情報がキャッシュ360に存在する場合はキャッシュ360から、存在しない場合はメモリ370から情報を提供する。要求された情報がキャッシュ360で利用できない場合、メモリコントローラ350はキャッシュミスを発生させる。データプロセッサ310によって要求された情報は、取得されると、プロセッサ310とキャッシュ360に提供される。メモリコントローラ350は、一般に、データプロセッサ310が必要とする情報を格納しているアドレスの近くのアドレス位置にある情報によって、キャッシュ360のキャッシュライン全体を埋めることが理解されよう。説明のため、キャッシュ360の各キャッシュラインが長さ64バイトであるとする。
プリフェッチコントローラは、メモリコントローラ350からキャッシュミスを受け取ると、記憶場所330にあるプリフェッチ情報に基づいて、キャッシュミスの結果、プリフェッチすべき追加の情報があるかどうかを判定する。ここに記載の特定の実施形態によれば、キャッシュミスを発生させた命令の命令ポインタが使用され、関連するプリフェッチ情報が記憶場所330に存在するどうかが判定される。プリフェッチ要求の生成時のレーテンシを短縮するために、記憶場所330は、通常、プリフェッチコントローラと同じ集積回路装置に存在する点に留意されたい。一実施形態では、テーブル21にあるレコードを格納している記憶場所330の部分は、現在のキャッシュミスを発生させている命令の命令ポインタを使用してアクセスされる連想メモリ(content addressable memory)であってもよい。キャッシュミスを発生させた命令に関連するエントリが、記憶場所330に格納されている場合、プリフェッチコントローラ340は、記憶場所330に記憶されている情報に基づいて、メモリコントローラ350にプリフェッチアドレス情報を提供する。この結果、メモリコントローラ350は、プリフェッチコントローラから要求されている情報が、既にキャッシュ360にあるかどうかを判定する。ない場合、メモリコントローラ350は、メモリ370から情報を取得し、キャッシュ360の追加のキャッシュラインを埋める。プリフェッチトレーニングモジュールの動作と、テーブル311の情報の決定方法について、記憶場所330でのプリフェッチ情報のトレーニングの特定の例を示す図3〜7を参照して説明する。
図3〜7は、それぞれ、データプロセッサ310で実行されている、テーブル221中の命令によりキャッシュミスが発生した際の、記憶場所330でのプリフェッチ情報のトレーニングを示す。図3〜7のそれぞれは、テーブル221の一番下の行には現在のキャッシュミスを発生させている現在の命令が含まれ、列312の命令は現在実行中であり、以前に実行された命令(存在する場合)も含む。更に、図3〜7のそれぞれは、プリフェッチトレーニングモジュール320によって、記憶場所330にあるテーブル331に提供されるプリフェッチ情報を示す。記憶場所330に記憶されるプリフェッチ情報は、テーブル331の表形式で表され、各行は、キャッシュミスに関連する情報を格納している情報のレコードを表している。キャッシュミスを発生させたメモリアドレスは、列411のミスベースアドレスと、列413のミスオフセットによって特定される。説明のため、ミスベースアドレスは、メモリ空間内の1キロバイトの整列領域を特定する22ビットのインデックスであるとする。このため、32ビットアドレスの場合、各ミスベースアドレス値は、ミスを発生させたアドレスの上位22ビットを表す22ビットの16進数(ミスアドレス)によって表される。列413に記憶されるミスオフセット値は、ミスベースアドレスによって特定される1キロビット領域に対するオフセットを表す10ビット数である。命令ポインタ(IP)値は、列412に記憶され、キャッシュミスを発生させた命令の位置を特定する。プリフェッチするメモリロケーションの特定に使用されるプリフェッチ情報は、列414の一致ビット配列に記憶される。列415には一致カウンタが保持される。
プリフェッチ情報を記憶するためのテーブル331のレコード数は、固定数でも可変でもよい。一実施形態では、記憶位置は、図2の301によって表される集積回路装置上のモジュールを含む半導体デバイスの固定記憶位置である。
図3は、時間T1で命令LOADB <REG A>の実行によって発生したキャッシュミスの影響を示している。具体的には、時間T1でのキャッシュミスの結果、新規レコードがテーブル331の行421に作成される。時間T1のキャッシュミスの原因となった命令LOADB <REGA>への命令ポインタを表す情報は、テーブル331の列412/行421に記憶される。キャッシュ360に存在せず、時間T1でミスを発生させたミスアドレスを表す情報は、ミスベースアドレスとして列411に、ミスオフセットとして列413に記憶される。例えば、ミスアドレス(hFEDCB123)の上位22ビットを含む22ビットのミスベースアドレス(h3FB72C)が、テーブル331の列411/行421に記憶される。ミスベースアドレス値は、メモリの1キロバイトの整列領域を特定する。メモリ内での1キロバイト領域の開始点は、ミスベースアドレス(h3FB72C)にh400を掛け、これにより、ベースアドレスに、10個のゼロをLSBとして追加することで求めることができる。例えば、h3FB72C×h400=hFEDCB000となる。
キャッシュミスを発生させたアドレスの残りの10ビットは、ミスオフセットとして列413/行421に記憶される。上で説明したように、ミスオフセットを表すのに必要なビット数が変更されてもよい点に留意されたい。例えば、メモリが一度に4バイトずつアクセスされる場合には、キャッシュミスを発生させたメモリ位置を格納しているメモリの位置を特定するのに、10ビットのうちの8ビットしか必要ではなく、10ビットのオフセットを保持する必要はない。同様に、1キロビットの整列メモリ領域内の16個の可能なキャッシュライン位置の1つを特定するには、4ビットのオフセット値で足りる。例えばミスオフセットの値が0の場合には、1キロバイトの整列領域の先頭バイトでメモリのアクセスが開始され、ミスオフセットの値が1の場合、1キロバイト領域の65番目のバイトでメモリのアクセスが開始される。
時間T1においてキャッシュミスを発生させたメモリ位置を格納している1キロバイトの整列領域の64バイトブロックを特定する(ミスベースアドレスの値によって特定される)ために、列414/行421の一致ビット配列に値が記憶される。一実施形態では一致ビット配列は、16ビットの値を記憶し、16ビット値の各ビット(b15〜b0)は、上で説明したように、1キロバイト領域を構成している16個の64ビットデータブロックの1つに対応している。例えば、列413/行421のミスオフセットh123に対応するビットは、ミスオフセット値を6ビット右シフトすることで求められる。例えば、値h123を6ビットシフトさせると、h0010の16進値が得られ、これは0000 0000 0001 0000の2進値に対応している。この結果、時間T1においてミスを発生させたメモリアドレスが、1キロバイトの整列領域の5番目の64ビットブロックに存在することを示すように、一致ビット配列の第5ビット(b4)がセットされる。
行421の列415のカウンタは、ゼロにセットされている場合、一致ビット配列情報がその後発生したキャッシュミスによって更新されていないことを示す。
図4は、時間T2での命令LOADC hFEDCB1E7の実行に関連するキャッシュミスの発生により、プリフェッチトレーニングモジュール320によってテーブル331に提供される情報を示す。図4の矢印492は、現在のキャッシュミスによって影響されるレコードを表す行をポイントしており、これらのレコードには、行421によって表されるレコードと、行422によって表される新規レコードが含まれる。
時間T2でキャッシュミスの原因となった命令への命令ポインタを表す情報が、列412/行422に記憶される。時間T2においてミスを発生させた命令によってアクセスされているアドレス位置(hFEDCB1E7)を表す情報が、ミスベースアドレス(H3FB72C)として列411/行422に、10ビットのミスオフセット(h1E7)として列413/行422に記憶される。
時間T2においてキャッシュミスを発生させたメモリロケーションを格納している1キロバイトの整列領域の64バイトブロックを示す(ミスベースアドレスの値によって特定される)ために、列414/行422の一致ビット配列に値が記憶される。行42のミスオフセットh1E7に対応する64バイトブロックは、第7ビット(b6)であり、時間T2でのキャッシュミスの結果、列414/行422にh0080の一致ビット配列値が記憶される。
列415/行422のカウンタは、ゼロにセットされている場合、一致ビット配列情報がその後発生したキャッシュミスによって更新されていないことを示す。
新たにキャッシュミスが発生するたびに、テーブル331の既存のレコードのそれぞれが評価され、前に記憶されたレコードのうち、同じ1キロバイトの整列領域に対応するミスベースアドレスを有するものが存在するかどうかがチェックされる。例えば、行421と行422は、同じベースミスアドレス値(hFB72C)を有するため、これらのキャッシュミスの両方を発生させたアクセスのメモリが、同じ1キロバイトの整列領域に記憶されていると判定される。このため、現在の(T2)ミスベースアドレスが以前のミスベースアドレスに一致していると、以前の一致ビット配列が更新される。例えば、現在の一致ビット配列と以前のミスビット配列の論理和を求めることによって、列414/行421の以前のミスベースアドレスに情報が記憶される。例えば、時間T2でのキャッシュミスの結果、プリフェッチトレーニングモジュールから情報が提供され、行421の一致ビット配列の値が、値h0090(h0010 OR h0080)に更新される。
行421の列415のカウンタ値が、現在のミスの結果一致ビット配列情報が更新されたことを示すように1インクリメントされる。
図5は、時間T3での命令LOADB hFEDCC234の実行に関連するキャッシュミスの発生により、プリフェッチトレーニングモジュール320によってテーブル331に提供される情報を示す。図5の矢印493は、現在のキャッシュミスによって影響されるレコードを表す行をポイントしており、このレコードには、行423によって表される新規レコードのみが含まれる。
時間T3でキャッシュミスの原因となった命令への命令ポインタを表す情報が、テーブル331の列412/行423に記憶される。時間T3においてミスを発生させた命令によってアクセスされているアドレスロケーション(hFEDCC234)を表す情報が、ミスベースアドレス(h3FB730)として列411/行423に、10ビットのミスオフセット(h234)として列413/行423に記憶される。
時間T3においてキャッシュミスを発生させたメモリ位置を格納している1キロバイトの整列領域の64バイトブロックを示す(ミスベースアドレスの値によって特定される)ために、列414/行423の一致ビット配列に値が記憶される。行421のミスオフセットh234に対応する64バイトブロックは、第9ビット(b8)であり、時間T3でのキャッシュミスの結果、行423の列414にh0100の一致ビット配列値が記憶される。
行423の列415のカウンタは、ゼロにセットされている場合、一致ビット配列情報がその後発生したキャッシュミスによって更新されていないことを示す。
時間T3でキャッシュミスを発生させたアドレスは、テーブル331の他のレコードと同じミスベースアドレスを持たないため、時間T3のキャッシュミスが、テーブル331の他のレコードに影響することはない。
図6は、時間T4での命令LOADB <REGA>の実行に関連するキャッシュミスの発生により、プリフェッチトレーニングモジュール320によってテーブル331に提供される情報を示す。図6の矢印494は、現在のキャッシュミスによって影響されるレコードをポイントしており、これらのレコードには、行421と行422によって表されるレコードと、行424によって表される新規レコードが含まれる。
時間T4でキャッシュミスの原因となった命令への命令ポインタを表す情報が、列412/行424に記憶される。時間T4においてミスを発生させた命令によってアクセスされているアドレス位置(hFEDCC234)を表す情報が、ミスベースアドレス(h3FB72C)として列411/行424に、10ビットのミスオフセット(h23)として列413/行424に記憶される。
時間T4においてキャッシュミスを発生させたメモリ位置を格納している1キロバイトの整列領域内の64バイトブロックの位置を示すために、列414/行424の一致ビット配列に値が記憶される。ミスオフセットh23を格納している64バイトブロックに対応するビットは、第1ビット(b0)であり、時間T4でのキャッシュミスの結果、列414/行424にh0001の一致ビット配列値が記憶される。
行424の列415のカウンタは、ゼロにセットされている場合、一致ビット配列情報がその後発生したキャッシュミスによって更新されていないことを示す。
また、時間T4でのキャッシュミスの結果、テーブル33の2つの既存のレコードも、これらのレコードが同じ1キロバイトの整列領域のインデックスを有するため、追加のプリフェッチ情報によって更新される。例えば、列414/行421と列414/行422のプリフェッチ情報は、いずれも、現在のキャッシュミスを表す424同じミスアドレス値(h3FB72C)値を有するため、更新する必要がある。このため、列414/行421の一致ビット配列がh0091に更新され、列414/行422の一致ビット配列が0081に更新される。行421および行422のプリフェッチ情報の更新が発生するのは、時間T4で必要とされた情報が、仮に、時間T1または時間T2のいずれかでプリフェッチされていたならば、時間T4でのキャッシュミスを回避できたためであることが理解されよう。この点については、更に別の実施形態に関してここに後述する。
行421と行422の列415のカウンタ値が、現在のミスの結果、それぞれの行の一致ビット配列情報が更新された回数を示すように、1インクリメントされる。
図7は、時間T5での命令LOADC <REGB>の実行に関連するキャッシュミスの発生により、プリフェッチトレーニングモジュール320によってテーブル331に提供される情報を示す。図7の矢印495は、現在のキャッシュミスによって影響されるレコードをポイントしており、これらのレコードには、行421、行422、行424によって表されるレコードと、行425によって表される新規レコードが含まれる。
時間T5でキャッシュミスの原因となった命令への命令ポインタを表す情報が、列412/行425に記憶される。時間T5においてミスを発生させた命令によってアクセスされているアドレス位置(HFEDCB3C5)を表す情報が、ミスベースアドレス(h3FB72C)として列411/行425に、10ビットのミスオフセット(h3C5)として列413/行425に記憶される。
時間T5においてキャッシュミスを発生させたメモリ位置を格納している1キロバイトの整列領域の64バイトブロックを示すために、列414/行424の一致ビット配列に値が記憶される。行421のミスオフセットh3CFに対応する64バイトブロックは、第16ビット(b15)であり、時間T5でのキャッシュミスの結果、列414/行425にh8000の一致ビット配列値が記憶される。
列415/行425のカウンタは、ゼロにセットされている場合、一致ビット配列情報がその後発生したキャッシュミスによって更新されていないことを示す。
また、新たにキャッシュミスが発生するたびに、テーブル33の既存のレコードのそれぞれが評価され、前に記憶されたレコードのうち、同じ1キロバイトの整列領域に対応するミスベースアドレスを有するものが存在するかどうかがチェックされる。本例では、行421、行422および行424のプリフェッチ情報は、いずれも、現在のキャッシュミスを表す行425のミスアドレス値(h3FB72C)と同じ値を有するため、更新する必要がある。このため、行421の一致ビット配列がh8091に更新され、行422の一致ビット配列が8081に更新され、行424の一致ビット配列がh800に更新される。
行421、行422および行424の列415のカウンタ値が、現在のミスの結果、それぞれの行の一致ビット配列情報が更新された回数を示すように、1インクリメントされる。
プリフェッチコントローラ340の動作について、図8を参照して説明する。説明のため、図7に図示したプリフェッチ情報が、新たなキャッシュミスが発生した時点におけるプリフェッチ情報の現在の組であるとする。図8は、キャッシュミス標識511を受け取るプリフェッチコントローラ340、キャッシュミス標識511を発生させた命令に対する命令ポインタ512、およびキャッシュミスを発生させたメモリ位置のミスベースアドレスを示す。
プリフェッチコントローラ340は、キャッシュミス標識を受け取ると、記憶場所330のプリフェッチ情報に、現在のキャッシュミスを発生させた命令ポインタに関連するレコードが含まれているかどうかを判定する。例えば、命令ポインタh8111を有する命令を実行した結果、発生したキャッシュミス標識を受け取った場合、この命令ポインタは、テーブル331に存在しないため、テーブル331でプリフェッチ情報が発見されない。しかし、命令ポインタh8100にある命令を実行した結果、キャッシュミスが発生した場合、プリフェッチコントローラはテーブル331のプリフェッチ情報に2つのエントリ(行421および行424を参照)を発見する。プリフェッチコントローラ340は、最も古いエントリ(すなわち列414/行421によって表されるエントリ)を使用して、メモリコントローラ350にプリフェッチ要求を発行する。
プリフェッチコントローラ340からのプリフェッチ要求には、以前にメモリがアクセスされた特定のメモリブロックに関連するメモリアドレスが提示される。列414/行421の一致ビット配列のセットされたビットのそれぞれは、64ビットメモリブロックに対応しているため、プリフェッチコントローラは、メモリコントローラ350に4つのメモリプリフェッチ要求を提示する。例えば、行41の一致ビット配列値h8091には、以前にデータがアクセスされた4つのメモリブロックに対応する4つのビット(b15、b8、b4およびb0)がセットされている。このため、プリフェッチコントローラは、メモリコントローラ350に4つのメモリアドレス(4つのブロックに対して1つずつ)を提供する。プリフェッチコントローラ340は、対応するブロックの全64バイトをプリフェッチするために、64バイトブロック内の任意のアドレスをメモリコントローラ360に提供することができる。一致ビット配列内のセットされたビットに対応するメモリブロックの先頭バイトは、対応するミスベース配列値を10ビット左シフトし、この結果に、セットされたビットに対応する図8のテーブル530のオフセットを加算して求めることができる。このため、h8091の一致ビット配列値の場合、プリフェッチコントローラは、1キロバイトの境界の先頭バイトから、h000(b0)、h100(b4)、h200(b8)およびh3C0(b15)だけオフセットされたアドレスロケーションを要求しうる。
本発明の一実施形態では、プリフェッチ要求を生成するために使用される1キロバイトの境界は、プリフェッチコントローラ340が受け取る現在のミスベースアドレスである。このため、図8を参照すると、ミスベースアドレス513が、hCFFFFFの22ビット値を有する場合、プリフェッチコントローラ340は、FFFFFC00(b0)、FFFFFD00(b4)、FFFFFDC0(8)、およびFFFFFFC0(b15)の各アドレス値をメモリコントローラ350に提供する。これらのアドレス値により、メモリコントローラ350によって4つのキャッシュラインがプリフェッチされる(これらが現在キャッシュ360に存在しない場合)。連続するメモリブロックを含む大きなメモリ領域をプリフェッチするのではなく、プリフェッチされるメモリブロックが、メモリの不連続な領域であってもよい点に留意されたい。
なお、その後発生したキャッシュミスのうち、共通する1キロバイトのメモリ領域に存在するものを決定するために、プリフェッチトレーニング中にテーブル331の列411にあるミスベースアドレス情報が必要とされるが、プリフェッチコントローラはミスベースアドレス情報を必要とせず、現在のキャッシュミスのミスベースアドレスを使用して、プリフェッチアドレスを生成する。このため、プリフェッチコントローラ340がプリフェッチ要求を生成するために使用する別のテーブルを保持することができる。図9は、記憶場所330に記憶することができるテーブル332を示し、このテーブルはプリフェッチコントローラ340が使用するプリフェッチ情報を格納している。具体的には、テーブル332の列11に命令ポインタ情報が記憶され、列512に一致ビット配列情報が記憶される。テーブル332は、各命令ポインタ値に対して複数のレコードを保持するのではなく、所定の命令ポインタに対して1つのレコードのみを含む。これにより、テーブル332は、キャッシュミスの発生時に、現在のキャッシュミスの原因となった命令ポインタ値を使用して、プリフェッチコントローラによってアクセスされる連想メモリが可能となる。連想メモリに対する要求により、列511に一致する命令ポインタが特定された場合その対応する一致ビット配列がプリフェッチコントローラ340によって使用され、メモリコントローラ350にプリフェッチアドレスが提示される。
図10は、プリフェッチコントローラ340によって使用されるプリフェッチ情報を記憶するために、テーブル332の代わりに使用することができるテーブル333の別の実施形態を示す。列21および列22は、上で説明した列11および列12に対応している。ただし、テーブル333には、キャッシュミスカウンタを保持するための列23が含まれる。キャッシュミスカウンタ値は、プリフェッチコントローラが、キャッシュミスの際に、特定のレコードを使用してプリフェッチ要求を発生させた回数を示す。このため、レコードのキャッシュミスカウンタは、プリフェッチ要求を生成するために、その一致ビット配列情報が使用されるたびにインクリメントされる。
上で説明した以外の別のオフセット方式を使用することができ、上の方式では、ブロックオフセットは、32ビットアドレスの上位22ビットによって定義される1キロバイトのメモリ境界に基づいた整列領域の先頭に対するオフセットであることが理解されよう。例えば、図11〜15は、図3〜7に図示したのと同じ命令セットに基づくトレーニングプリフェッチ情報の別の実施形態を示しており、この方式では、ブロックオフセットは、キャッシュミスとなったブロックを表す中央位置に対するオフセットである。この位置は、正負のオフセットを使用することができるため、中央位置と呼ばれる。
図11〜15を参照すると、記憶場所330に記憶されるプリフェッチ情報は、テーブル341の表形式で表され、各行は、キャッシュミスに関連する情報を格納している情報のレコードを表している。列41〜43および列45は、列341〜343および列345に関して上で説明した情報を記憶する。列444は、キャッシュミスの原因となったアドレスを含むメモリブロックを中心とする整列領域内に、プリフェッチ情報を記憶する。このため、テーブル341の行451の各エントリの8つのMSBは、中央ブロックの前の8つの64バイトデータブロックの1つを表し、行451の各エントリの8つのLSBは、中央の65バイトブロックの後の8つの64バイトデータブロックの1つを表す。
図11を参照すると、時間T1において命令LOADB <REGA>が実行されると、列444/行451の一致ビット配列がクリアされる(例えば、全ビットがゼロにセットされる)。エントリが作成されると、一致ビット配列がクリアされる点に留意されたい。この理由は、ミスを発生させたアドレスを格納している64バイトデータブロック(例えば図11のhFEDCB123)が参照点となり、この点から、プリフェッチ情報を表す他のブロックオフセットが求められるためである。
図12を参照すると、時間T2においてキャッシュミスを発生させた命令が実行されると、行452の一致ビット配列がクリアされ(例えば、全ビットがゼロにセットされ)、テーブル341の行451の情報が評価されて、このプリフェッチ情報を更新すべきかどうかが判定される。本実施形態に関しては、現在のキャッシュミスを発生させたメモリ位置が8つの64バイトメモリブロック内(すなわち、±512バイト)に存在する場合、特定の行のプリフェッチ情報が更新される。この値は、(6ビット右シフトさせた現在のミスアドレス)−(6ビットシフトさせた評価される行のミスアドレス)の式によって求めることができる。このため、図12に関して、現在のキャッシュミスを発生させたメモリ位置(hFEDCB1E7)は、行451のキャッシュミスを発生させたメモリ位置(hFEDCB123)に対し、+h3((6ビット右シフトさせたhFEDCB1E7)−(6ビット右シフトさせたhFEDCB123))のブロックオフセットを有する。このため、行452のキャッシュミスを発生させたアドレスは、行451のキャッシュミスを発生させたアドレスの512バイト以内に存在していたため、行451の一致ビット配列の中央位置の左から3番目のビット(すなわち11番目のMSB(b10))がセットされ、この結果、451にh400の一致ビット配列値がセットされる。
図13を参照すると、時間T3においてキャッシュミスを発生させる命令が実行されると、図12を参照して説明したように、行453の一致ビット配列がクリアされ(例えば、全ビットがゼロにセットされ)、テーブル341の行451および行452の情報が評価されて、更新すべきプリフェッチ情報が存在するかどうかが判定される。行453(hFEDCC234)のミス位置に対して、行451(hFEDCB123)のミス位置を評価した結果、行453のミス位置は行451のミス位置から、−44ブロックオフセットされていることがわかる。このため、行453の一致ビット配列は行451の中央ブロックの8ブロック以内になく、行451の一致ビット配列値が追加のプリフェッチ情報によって更新されることはない。行453(hFEDCC234)のミス位置に対して、行452(hFEDCB1E7)のミス位置を評価した結果、行453のミス位置は行452のミス位置から、+41ブロックオフセットされていることがわかる。このため、行453の一致ビット配列は行452の一致ビット配列の8ブロック以内になく、行452の一致ビット配列値が追加のプリフェッチ情報によって更新されることはない。
図14を参照すると、時間T4においてキャッシュミスを発生させる命令が実行されると、図12を参照して説明したように、行454の一致ビット配列がクリアされ(例えば、全ビットがゼロにセットされ)、テーブル341の行454〜453の情報が評価されて、更新すべきプリフェッチ情報が存在するかどうかが判定される。行454(hFEDCB023)のミス位置に対して、行451(hFEDCB123)のミス位置を評価した結果、行454のミス位置は行451のミス位置から、−h4ブロックオフセットされていることがわかる。ミス位置同士が4ブロック以内にあるため、一致ビット配列の中央位置の右から4番目のビット(b4)をセットすることにより、行451の一致ビット配列が、追加のプリフェッチ情報によって更新される。この結果、行451の一致ビット配列にh410の値が記憶される。行454(hFEDCB023)のミス位置に対して、行452(hFEDCB1E7)のミス位置を評価した結果、行454のミス位置は行452のミス位置から、−h7ブロックオフセットされていることがわかる。ミス位置同士が8ブロック以内にあるため、一致ビット配列の中央位置の右から7番目のビット(b1)をセットすることにより、行452の一致ビット配列が、追加のプリフェッチ情報によって更新される。この結果、行452の一致ビット配列にh0002の値が記憶される。行454(hFEDCB023)のミス位置に対して、行453(hFEDCC234)のミス位置を評価した結果、行454のミス位置は行453のミス位置から、8ブロックを越えるブロック数オフセットされていることがわかり、このため、行453の一致ビット配列値への変更はない。
図15を参照すると、時間T5において命令が実行されると、図12を参照して説明したように、行455の一致ビット配列がクリアされ(例えば、全ビットがゼロにセットされ)、テーブル341の行451〜454の情報が評価されて、更新すべきプリフェッチ情報が存在するかどうかが判定される。行455(hFEDCB3C5)のミス位置に対して、行451(hFEDCB123)のミス位置を評価した結果、行455のミス位置は行451のミス位置から、+hAブロックオフセットされていることがわかり、このため、8ブロック以内にないため、行451の一致ビット配列値への変更はない。行455(hFEDCB3C5)のミス位置に対して、行452(hFEDCB1E7)のミス位置を評価した結果、行454のミス位置は行452のミス位置から、+h7ブロックオフセットされていることがわかる。ミス位置同士が8ブロック以内にあるため、行452の一致ビット配列の中央位置の左から7番目のビット(b14)をセットすることにより、行452の一致ビット配列が、追加のプリフェッチ情報によって更新される。この結果、行452の一致ビット配列にh4002(図15の軽微な変更)の値が記憶される。行455(hFEDCB3C5)のミス位置に対して、行453(hFEDCC234)のミス位置を評価した結果、行455のミス位置は行453のミス位置から、8ブロックを越えるブロック数オフセットされていることがわかり、このため、行453の一致ビット配列値への変更はない。行455(hFEDCB3C5)のミス位置に対して、行453(hFEDCC234)のミス位置を評価した結果、行454のミス位置は行453のミス位置から、8ブロックを越えるブロック数オフセットされていることがわかり、このため、行453の一致ビット配列値への変更はない。行455(hFEDCB3C5)のミス位置に対して、行454(hFEDCB023)のミス位置を評価した結果、行455のミス位置は行451のミス位置から、+hEブロックオフセットされていることがわかり、このため、行454の一致ビット配列値への変更はない。
プリフェッチコントローラ340の動作について、図16を参照して説明する。説明のため、図15のテーブルに図示したプリフェッチ情報が、新たなキャッシュミスが発生した時点におけるプリフェッチ情報の現在の組であるとする。図15は、キャッシュミス標識611を受け取るプリフェッチコントローラ340、キャッシュミス標識511を発生させた命令に対する命令ポインタ612、およびキャッシュミスを発生させたメモリ位置のミスアドレスを示す。
プリフェッチコントローラ340は、キャッシュミス標識を受け取ると、記憶場所330のプリフェッチ情報に、現在のキャッシュミスを発生させた命令ポインタに関連するレコードが含まれているかどうかを判定する。例えば、h8111の命令ポインタ(IP)値を有する命令を実行した結果、発生したキャッシュミス標識を受け取った場合、この命令ポインタは、テーブル341に存在しないため、テーブル341でプリフェッチ情報が発見されない。しかし、命令ポインタh8100にある命令を実行した結果、キャッシュミスが発生した場合、プリフェッチコントローラはテーブル31のプリフェッチ情報に2つのエントリ(行451および行454を参照)を発見する。プリフェッチコントローラ40は、最も古いエントリ(すなわち列44/行421によって表されるエントリ)を使用して、メモリコントローラ350にプリフェッチ要求を発行する。なお、別の実施形態では、図10を参照して上で説明し、下記に更に説明するように、各命令ポインタに対して1つのエントリのみが保持される。
このため、図16を参照すると、h8100の命令ポインタ値を有する命令によって、ミスアドレス613でキャッシュミスが発生すると、プリフェッチコントローラ340は、1つのアドレス値(ミスアドレス613−テーブル630においてビットb4に対応するオフセット(−h100))をメモリコントローラ350に提供し、別のアドレス値(ミスアドレス613−テーブル630においてビットb10に対応するオフセット(hC0))をメモリコントローラ350に提供する。これらのアドレス値により、メモリコントローラ350によって2つのキャッシュラインがプリフェッチされる(これらが現在キャッシュ360に存在しない場合)。
本開示の特定の実施形態によれば、2つのテーブルが記憶場所330に保持される。1つ目のテーブル(例えばテーブル341)は、図11〜15を参照して説明したように、命令履歴バッファとして機能し、実行された一連の命令に対して、キャッシュミスとなったアドレスを相関させる。2つ目のテーブル(例えば図17のテーブル334)は、プリフェッチコントローラ340が必要とする情報を格納しているレコードを有する。図11の列31〜33は、上(図10)で説明した列21〜23に対応している。列34は、テーブル334の所定の行に、プリフェッチ情報を定義している一致回数のカウントを記憶する。
一実施形態では(図17参照)、各命令ポインタ(IP)に対して1つのレコードのみが保持され、同じIP値を有するレコードがテーブル341から除去されると、テーブル334のレコードが更新される。テーブル334のレコードの一致カウンタ情報は、テーブル334の一致カウンタにテーブル341の一致カウンタを加算することで更新され、テーブル334の一致ビット配列は、テーブル341の一致ビット配列とテーブル334の一致ビット配列の論理和を求めることで更新される。
レコードの一致カウンタとキャッシュミスカウンタは、キャッシュミスの結果、テーブル334でIPがヒットした場合に、メモリコントローラにプリフェッチ情報を提示するべきかどうかを判定するために、プリフェッチ制御340によって使用されうる。例えば、プリフェッチ情報を生成するためにテーブル334のレコードが使用された回数(すなわち列33のキャッシュミスカウンタ値)が、一致ビット配列を定義している一致の回数(すなわち列34の一致カウンタ)と比べて十分大きな場合、レコードに記憶されているプリフェッチ情報がおそらく有用であることが一般に示される。一実施形態では、レコードに基づく情報について、(一致カウンタ)×(比率しきい値)>(キャッシュミスカウンタ)が真となる場合にのみ、プリフェッチコントローラ340は、このレコードに基づいてプリフェッチ要求を生成する。ここで、比率しきい値とは、例えば2〜4の範囲の尺度値(scaling value)である。比率しきい値を大きな値に設定すると、帯域幅の消費が大きくなる点に留意されたい。
一実施形態では、テーブル341に保持されるレコード数は、テーブル334よりも少なくてもよい。例えば、テーブル341には、最近の32回のキャッシュミスのそれぞれのレコードが含まれ、テーブル334には、数百〜数千もの命令ポインタのレコードが含まれてもよい。テーブル334は、テーブル341に上書きされている情報によって更新されうる。例えば、テーブル341の各レコードが一杯になると、新規レコードがテーブル341に記憶されるときに、最も古いキャッシュミス情報を含むレコードが削除される。しかし、削除の前に、上で説明したように、テーブル341の最も古いキャッシュミスレコードの情報が、テーブル333に情報を記憶するために使用されうる。テーブル334のエントリが定期的にクリアされうる点に留意されたい。例えば、テーブル334の行に対応するレコードを定期的に(例えば2000サイクル毎など)クリアするために、図2の装置によって1つのポインタが使用されうる。
図18は、本開示による方法を示す。ブロック711において、命令の実行の一環として情報がアクセスされる第1のメモリロケーションがキャッシュにおいて利用可能でない場合、第1のキャッシュミス標識が受信される。ブロック712において、第1のキャッシュミスにより、第1のキャッシュミスに基づく情報が、記憶位置の第1のレコードに記憶される。上で説明したように、この情報には、第1の命令のロケーションを特定する命令情報(命令ポインタなど)、およびブロック711において第1のキャッシュミスとなった命令によってアクセスされているメモリアドレスを特定するメモリ情報が含まれうる。ブロック712において、第1のキャッシュミスに基づく情報を格納しているレコードの例には、テーブル331〜334および341の各行が含まれる。例えば、アクセスされているメモリロケーションを特定するメモリ情報は、メモリロケーションのアドレス、あるいは、整列領域(アドレス整列領域または中央ブロック整列領域など)からのオフセットなどである。メモリ情報が整列領域からのオフセットである場合、オフセット情報により、プリフェッチする情報の個々のバイトまたは全データブロックを特定することができる。上で説明した実施形態では、整列領域に関連する複数のデータブロックの1つに対応する1つのビット位置がアサートされる。別の実施形態では、メモリ情報に、特定の命令のロケーションに関連するアドレス範囲を特定する複数の値が含まれてもよい。
ブロック713において命令の実行の一環として情報がアクセスされる第2のメモリロケーションがキャッシュにおいて利用可能でない場合、第2のキャッシュミス標識が受信される。第2のメモリにアクセスしている命令は、ブロック711の第1の命令のこともあれば、別の命令のこともある。
ブロック714において、第2のキャッシュミスに基づいて情報が記憶される。一実施形態では、第2のキャッシュミスが、以前のキャッシュミスの整列領域内の関連するアドレスの結果発生した場合、その以前のキャッシュミスに関連するレコードが、追加のプリフェッチ情報を記憶することによって更新される。例えば、アドレス領域または中央ブロック整列領域内でキャッシュミスが発生すると、テーブル331〜334および341のエントリが、このように更新される。キャッシュミスが発生すると、テーブル332〜334が、テーブル331および341にある情報によって更新されることに注意されたい。別の実施形態では、例えば、テーブル331〜334のエントリに関して上で説明したように、第2のキャッシュミスが発生すると、情報が記憶されて新規レコードが作成されてもよい。
図19は、本開示による方法のフロー図を示す。ブロック731において、キャッシュミスが受信される。ブロック732において、第1の命令のために第1のメモリ位置へのアクセスが行われると、キャッシュミスが発生するかどうかが判定される。キャッシュミスが発生する場合は、フローはブロック733に進み、第1の命令のメモリ位置に基づいてプリフェッチ情報がアクセスされる。ブロック734において、プリフェッチされた情報に基づいて情報のブロックが記憶される。例えば、キャッシュラインと同じサイズを有する情報のブロックが、キャッシュラインに記憶されうる。
上記の明細書では、本発明の原理を、特定の実施形態に関連して上に記載した。しかし、下記の特許請求の範囲に記載の本発明の範囲内から逸脱することなく、実施形態のいずれか1つ以上に対して、1つ以上の修正または1つ以上の他の変更を加えることができることを、当業者は認めるであろう。例えば、プリフェッチ情報が、プリフェッチする各情報ブロックに対する重み値を含んでもよいことが理解されよう。例えば、頻繁にキャッシュミスとなるデータを含むブロックには、他のデータブロックよりも大きな重みが与えられうる。更に、本開示を一般にキャッシュミスに関して記載したが、本開示は、複数のレベルのキャッシュミスに対応することができることが理解されよう。例えば、L2キャッシュミスに関してトレーニングが行われ、L1キャッシュミスに関してプリフェッチ情報の生成が行われてもよい。また、システム300が、集積回路装置301に変換索引バッファ(translation look-aside buffer:TLB)を備え、仮想メモリのアクセス時に、L2のTLBの電力を低減させ、負荷を軽減してもよい点も理解されよう。記憶場所330のさまざまな構成も考えられる。例えば、1つまたは複数のリードライトポートを有する記憶位置を使用してもよい。例えば、一致ビット配列は、飽和カウンタであってもよい。
本開示の特定の実施形態によれば、第1の命令の実行中に、第1のメモリロケーションへのアクセスが行われると、キャッシュミス標識が受信される。キャッシュミス標識を受けて、第1の命令のロケーションに基づいてプリフェッチ情報がアクセスされる。特定の実施形態は、プリフェッチ情報に基づいて、プリフェッチされた第1のメモリのブロックを第1のキャッシュラインに、プリフェッチされた第2のメモリのブロックを第2のキャッシュラインに記憶するステップを更に有してもよい。プリフェッチ情報は、第1のブロックを表す第1のビット位置、および第2のブロックへのオフセットを表す第2のビット位置を有するエントリを含みうる。また、エントリは、第3のメモリブロックに対するオフセットを表す第3のビット位置を更に含んでもよく、第3のビット位置は、第1のビット位置と第2のビット位置の間にあり、プリフェッチ情報は、複数の連続するアドレス位置を表し、プリフェッチフィールドの各ビットは、連続するアドレスロケーションの一部分に対応するブロックを表し、第1のブロック、第2のブロックおよび第3のブロックは、複数の連続するアドレス位置の異なる部分に対応している。したがって、本明細書および図面は、限定としてではなく例示としてみなすべきであり、あらゆるこのような修正や他の変更のすべてが、発明の範囲内に含まれることが意図される。
1つ以上の利点、1つ以上の他の有利な点、1つ以上の問題に対する1つ以上の解決策、またはこれらの任意の組み合わせについて、1つ以上の特定の実施形態に関して記載した。しかし、利点、有利な点、問題に対する解決策、または想到されるかより明らかとなる何らかの利点、有利な点または解決策を生み出す任意の要素は、特許請求の範囲の重要、必要または本質的な特徴または要素であると解釈されるべきではない。
本開示の特定の実施形態による、命令によってアクセスされているアドレス位置に関連する各種のニーモニックを示す図。 本開示の特定の実施形態による装置を示す図。 本開示による、命令の実行によるプリフェッチ情報への影響を示す図。 本開示による、命令の実行によるプリフェッチ情報への影響を示す図。 本開示による、命令の実行によるプリフェッチ情報への影響を示す図。 本開示による、命令の実行によるプリフェッチ情報への影響を示す図。 本開示による、命令の実行によるプリフェッチ情報への影響を示す図。 図2のプリフェッチコントローラの一実施形態をより詳細に示す図。 データを記憶するための特定の実施形態としてのテーブルを示す図。 データを記憶するための特定の実施形態としてのテーブルを示す図。 本開示による、命令の実行によるプリフェッチ情報への影響を示す図。 本開示による、命令の実行によるプリフェッチ情報への影響を示す図。 本開示による、命令の実行によるプリフェッチ情報への影響を示す図。 本開示による、命令の実行によるプリフェッチ情報への影響を示す図。 本開示による、命令の実行によるプリフェッチ情報への影響を示す図。 図2のプリフェッチコントローラの別の実施形態をより詳細に示す図。 データを記憶するための特定の実施形態としてのテーブルを示す図。 本開示による方法を表すフロー図。 本開示による方法を表すフロー図。

Claims (10)

  1. 第1の命令の実行の一環として情報がアクセスされる第1のメモリロケーションがキャッシュにおいて利用可能でない場合、第1のキャッシュミス標識を受信するステップ(711)と、
    前記第1のキャッシュミス標識を受信すると、第1のテーブルの第1のレコードに情報を記憶するステップ(712)であって、前記情報は、
    前記第1の命令の位置を特定する命令情報(412,421)と、
    前記第1のメモリロケーションを特定するメモリロケーション情報(422,411,413)とを有するステップと、
    第2の命令の実行の一環として情報がアクセスされる第2のメモリロケーションがキャッシュにおいて利用可能でない場合、第2のキャッシュミス標識を受信するステップと、
    前記第2のメモリロケーションが前記第1のエントリに記憶されている前記第1のメモリロケーションから定義された距離内にあると判定されると、前記第1のレコードに第1のプリフェッチ情報(421,414)を記憶するステップとを含み、
    前記第1のプリフェッチ情報は、前記第2のメモリロケーションに基づくメモリ位置情報を含み、前記第1のプリフェッチ情報の記憶後は、前記第1のレコードは、前記第1のメモリロケーションを特定する前記メモリロケーション情報および前記第2のメモリロケーションを特定する前記メモリ位置情報を有する、方法。
  2. 前記第1のプリフェッチ情報は前記第2のメモリアドレスを含むメモリ位置範囲を特定している請求項1記載の方法。
  3. 前記第1のプリフェッチ情報は参照メモリ位置に対するオフセットを含む、請求項2記載の方法。
  4. 前記第1のプリフェッチ情報は前記第2のメモリアドレスを含む、請求項1記載の方法。
  5. 前記第2のキャッシュミス標識を受信すると、前記第1のテーブルの第2のレコードに情報を記憶するステップを更に有し、前記情報は、
    前記第2の命令の位置を特定する命令情報(412,422)と、
    前記第2のメモリ位置を特定するメモリ位置情報(422,411,413)とを有する請求項1に記載の方法。
  6. 前記第2のメモリ位置が、前記第1のエントリに記憶されている前記第1のメモリ位置の定義された距離内にあることが判定されると、前記第1のレコードに記憶されている値(421,415)をインクリメントするステップを更に有する請求項1記載の方法。
  7. 前記第1のテーブル(331)は、連想メモリ(CAM)であり、前記連想メモリ(CAMの命令位置情報をアドレス指定するために内容が使用される請求項1記載の方法。
  8. 前記第1の命令の前記位置で命令を実行すると、第2のキャッシュミス標識を受信するステップ(713)と、
    前記第1のレコードが前記第1の命令の前記位置を特定する命令情報を含むことが判定されると、プリフェッチするメモリを決定するステップ(733)を更に含む、請求項1記載の方法。
  9. プリフェッチする前記メモリは複数の不連続なメモリ領域を含む請求項8に記載の方法。
  10. 前記第2のキャッシュミス標識を受信し、前記第1のレコードが前記第1の命令の前記位置を特定する命令情報を含むことを決定すると、前記第1のレコードに記憶されている値(923)をインクリメントするステップを更に含む、請求項8に記載の方法。
JP2009514258A 2006-06-07 2007-04-05 データをプリフェッチする装置および方法 Active JP5203358B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/448,337 2006-06-07
US11/448,337 US7774578B2 (en) 2006-06-07 2006-06-07 Apparatus and method of prefetching data in response to a cache miss
PCT/US2007/008372 WO2007145700A1 (en) 2006-06-07 2007-04-05 Apparatus and method of prefetching data

Publications (2)

Publication Number Publication Date
JP2009540429A JP2009540429A (ja) 2009-11-19
JP5203358B2 true JP5203358B2 (ja) 2013-06-05

Family

ID=38509069

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009514258A Active JP5203358B2 (ja) 2006-06-07 2007-04-05 データをプリフェッチする装置および方法

Country Status (8)

Country Link
US (1) US7774578B2 (ja)
JP (1) JP5203358B2 (ja)
KR (1) KR101423748B1 (ja)
CN (1) CN101467135A (ja)
DE (1) DE112007001397B4 (ja)
GB (1) GB2453079B (ja)
TW (1) TW200821925A (ja)
WO (1) WO2007145700A1 (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8391309B2 (en) * 2007-02-20 2013-03-05 Arris Group, Inc. Method and system for using mnemonic symbols to provision channel attributes with an attribute mask
GB2466695B (en) * 2007-06-18 2011-11-23 Fujitsu Ltd Processor and prefetch support program
US9274965B2 (en) 2008-12-15 2016-03-01 International Business Machines Corporation Prefetching data
US8195889B2 (en) * 2009-03-25 2012-06-05 Advanced Micro Devices, Inc. Hybrid region CAM for region prefetcher and methods thereof
US8677049B2 (en) * 2009-04-13 2014-03-18 Advanced Micro Devices, Inc. Region prefetcher and methods thereof
US8850123B2 (en) 2010-10-19 2014-09-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Cache prefetch learning
US20120144124A1 (en) * 2010-12-07 2012-06-07 Advanced Micro Devices, Inc. Method and apparatus for memory access units interaction and optimized memory scheduling
CN102156633A (zh) * 2011-04-18 2011-08-17 北京北大众志微系统科技有限责任公司 预执行指导的数据预取方法及系统
US8856452B2 (en) * 2011-05-31 2014-10-07 Illinois Institute Of Technology Timing-aware data prefetching for microprocessors
US9026739B2 (en) 2012-03-07 2015-05-05 Advanced Micro Devices, Inc. Multimode prefetcher
US9176878B2 (en) * 2012-03-15 2015-11-03 Oracle International Corporation Filtering pre-fetch requests to reduce pre-fetching overhead
US9098418B2 (en) * 2012-03-20 2015-08-04 Apple Inc. Coordinated prefetching based on training in hierarchically cached processors
US9311247B1 (en) 2012-03-20 2016-04-12 Marvell International Ltd. Method and apparatus for detecting patterns of memory accesses in a computing system with out-of-order program execution
US9164900B1 (en) 2012-05-23 2015-10-20 Marvell International Ltd. Methods and systems for expanding preload capabilities of a memory to encompass a register file
US9116815B2 (en) * 2012-06-20 2015-08-25 Advanced Micro Devices, Inc. Data cache prefetch throttle
US9390018B2 (en) 2012-08-17 2016-07-12 Advanced Micro Devices, Inc. Data cache prefetch hints
US9348753B2 (en) 2012-10-10 2016-05-24 Advanced Micro Devices, Inc. Controlling prefetch aggressiveness based on thrash events
US9021210B2 (en) 2013-02-12 2015-04-28 International Business Machines Corporation Cache prefetching based on non-sequential lagging cache affinity
US9047173B2 (en) * 2013-02-21 2015-06-02 Advanced Micro Devices, Inc. Tracking and eliminating bad prefetches generated by a stride prefetcher
KR102070136B1 (ko) 2013-05-03 2020-01-28 삼성전자주식회사 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법
US9256541B2 (en) * 2014-06-04 2016-02-09 Oracle International Corporation Dynamically adjusting the hardware stream prefetcher prefetch ahead distance
US9971694B1 (en) 2015-06-24 2018-05-15 Apple Inc. Prefetch circuit for a processor with pointer optimization
US9904624B1 (en) 2016-04-07 2018-02-27 Apple Inc. Prefetch throttling in a multi-core system
US10180905B1 (en) 2016-04-07 2019-01-15 Apple Inc. Unified prefetch circuit for multi-level caches
US10296460B2 (en) * 2016-06-29 2019-05-21 Oracle International Corporation Prefetch bandwidth throttling by dynamically adjusting miss buffer prefetch-dropping thresholds
US10331567B1 (en) 2017-02-17 2019-06-25 Apple Inc. Prefetch circuit with global quality factor to reduce aggressiveness in low power modes
KR102429429B1 (ko) 2017-03-24 2022-08-04 삼성전자주식회사 전자 장치 및 그 동작방법
US11232533B2 (en) * 2019-03-15 2022-01-25 Intel Corporation Memory prefetching in multiple GPU environment
US11726917B2 (en) * 2020-06-26 2023-08-15 Advanced Micro Devices, Inc. Method and apparatus for a page-local delta-based prefetcher
US11561796B2 (en) * 2020-07-15 2023-01-24 International Business Machines Corporation Linked miss-to-miss instruction prefetcher
JP2022097858A (ja) 2020-12-21 2022-07-01 富士通株式会社 計算機および計算方法
US11580032B2 (en) * 2021-01-20 2023-02-14 Arm Limited Technique for training a prediction apparatus
US11630670B2 (en) 2021-07-21 2023-04-18 Apple Inc. Multi-table signature prefetch
US11822922B2 (en) 2021-12-31 2023-11-21 International Business Machines Corporation Miss-driven instruction prefetching
US20240184702A1 (en) * 2022-12-02 2024-06-06 SiFive, Inc. Prefetching Cache Blocks Based on an Address for a Group and a Bit Field

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092149A (en) * 1997-05-28 2000-07-18 Western Digital Corporation Disk drive cache system using a dynamic priority sequential stream of data segments continuously adapted according to prefetched sequential random, and repeating types of accesses
US6047363A (en) 1997-10-14 2000-04-04 Advanced Micro Devices, Inc. Prefetching data using profile of cache misses from earlier code executions
US6584549B2 (en) 2000-12-29 2003-06-24 Intel Corporation System and method for prefetching data into a cache based on miss distance
JP3969009B2 (ja) * 2001-03-29 2007-08-29 株式会社日立製作所 ハードウェアプリフェッチシステム
US6782453B2 (en) 2002-02-12 2004-08-24 Hewlett-Packard Development Company, L.P. Storing data in memory
US7139897B2 (en) 2002-04-01 2006-11-21 Hewlett-Packard Development Company, L.P. Computer instruction dispatch
CN1849591A (zh) * 2002-11-22 2006-10-18 皇家飞利浦电子股份有限公司 使用高速缓存未命中模式来寻址跨距预测表

Also Published As

Publication number Publication date
CN101467135A (zh) 2009-06-24
US7774578B2 (en) 2010-08-10
TW200821925A (en) 2008-05-16
GB0900132D0 (en) 2009-02-11
KR20090026333A (ko) 2009-03-12
US20070288697A1 (en) 2007-12-13
KR101423748B1 (ko) 2014-08-01
WO2007145700A1 (en) 2007-12-21
DE112007001397B4 (de) 2020-10-29
GB2453079B (en) 2011-06-29
JP2009540429A (ja) 2009-11-19
DE112007001397T5 (de) 2009-04-23
GB2453079A (en) 2009-03-25

Similar Documents

Publication Publication Date Title
JP5203358B2 (ja) データをプリフェッチする装置および方法
US11074190B2 (en) Slot/sub-slot prefetch architecture for multiple memory requestors
JP3618385B2 (ja) データをバッファリングする方法およびそのシステム
US6247107B1 (en) Chipset configured to perform data-directed prefetching
US7089370B2 (en) Apparatus and method for pre-fetching page data using segment table data
US10430188B2 (en) Next instruction access intent instruction for indicating usage of a storage operand by one or more instructions subsequent to a next sequential instruction
US7426626B2 (en) TLB lock indicator
US7099999B2 (en) Apparatus and method for pre-fetching data to cached memory using persistent historical page table data
US6513107B1 (en) Vector transfer system generating address error exception when vector to be transferred does not start and end on same memory page
US9817762B2 (en) Facilitating efficient prefetching for scatter/gather operations
US10684857B2 (en) Data prefetching that stores memory addresses in a first table and responsive to the occurrence of loads corresponding to the memory addresses stores the memory addresses in a second table
JP2007293839A (ja) ロックされたキャッシュ内のセットの置換を管理するための方法、コンピュータ・プログラム、キャッシング・システムおよびプロセッサ
JPH07104816B2 (ja) コンピュータシステムを動作する方法及びコンピュータシステムにおけるメモリ管理装置
JP2021534496A (ja) 階層キャッシュシステムにおけるプリフェッチ管理
JP2007048296A (ja) 複数のアドレス・キャッシュ・エントリーを無効にする方法、装置およびシステム
CN113641596A (zh) 缓存管理方法、缓存管理装置、处理器
JP3929872B2 (ja) キャッシュメモリ、プロセッサ及びキャッシュ制御方法
CN114860627A (zh) 基于地址信息动态生成页表的方法
JP3935871B2 (ja) パイプラインを有する計算回路のためのメモリ・システムおよびパイプラインの機能ユニットにデータを提供する方法
JP7376019B2 (ja) 命令キャッシュにおけるプリフェッチの強制終了及び再開
WO1997034229A9 (en) Segment descriptor cache for a processor
US20210081323A1 (en) Method of improving l1 icache performance with large programs
US6625720B1 (en) System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs
US6922767B2 (en) System for allowing only a partial value prediction field/cache size
US7051159B2 (en) Method and system for cache data fetch operations

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20100308

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100402

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120523

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120821

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120828

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120921

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120928

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121023

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121030

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121228

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130213

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5203358

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20160222

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250