JP7337173B2 - トランスレーションルックアサイドバッファエビクションに基づくキャッシュ置換 - Google Patents

トランスレーションルックアサイドバッファエビクションに基づくキャッシュ置換 Download PDF

Info

Publication number
JP7337173B2
JP7337173B2 JP2021538797A JP2021538797A JP7337173B2 JP 7337173 B2 JP7337173 B2 JP 7337173B2 JP 2021538797 A JP2021538797 A JP 2021538797A JP 2021538797 A JP2021538797 A JP 2021538797A JP 7337173 B2 JP7337173 B2 JP 7337173B2
Authority
JP
Japan
Prior art keywords
cache
tlb
entry
address
lines
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
JP2021538797A
Other languages
English (en)
Other versions
JPWO2020154166A5 (ja
JP2022517318A (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 JP2022517318A publication Critical patent/JP2022517318A/ja
Publication of JPWO2020154166A5 publication Critical patent/JPWO2020154166A5/ja
Application granted granted Critical
Publication of JP7337173B2 publication Critical patent/JP7337173B2/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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

命令の実行をサポートするために、プロセッシングシステムは、通常、1つ以上の計算コンプレックスを実装し、各計算コンプレックスは、1つ以上のプロセッサコアと、命令と命令を実行することによってアクセスされるデータとを記憶するためのメモリモジュールを有するメモリ階層と、を有する。各プロセッサコアは、対応するプロセッサコアにおいて命令を実行することによってアクセス可能な大量のデータを記憶する、階層の最上部におけるメインメモリと、メインメモリに記憶されたデータのサブセットを記憶する、メモリ階層の下位レベルの1つ以上のローカルレベルのキャッシュに関連付けられている。プロセッサコアは、命令を実行している過程において、プロセッサコアによって開始されるアクセスが比較的高速且つ低エネルギー消費で実行されるローカルキャッシュに記憶されているデータ、又は、プロセッサコアによって開始されるアクセスが比較的低速且つ高エネルギー消費で実行されるメインメモリに記憶されたデータにアクセスすることができる。
一般的に、メモリ階層に記憶されたデータがプロセッサに近いほど、プロセッサは、当該データに高速且つエネルギー効率良くアクセスすることができる。処理効率を高めるために、プロセッシングシステムは、メモリ階層の各レベルに記憶された特定のデータのセットを管理するメモリ管理プロトコルを実装することができる。例えば、プロセッシングシステムは、最近アクセス要求されたデータを、近い将来にプロセッサコアによって再度アクセスされることを想定して、メモリ階層のプロセッサコアにより近いレベルに移動させ、最近アクセスされたなかったデータを、メモリ階層のより遠いレベルに移動させる、メモリ管理プロトコルを実装することができる。しかしながら、メモリ管理プロトコルは、近い将来にプロセッサコアによってアクセスされる可能性が低いデータをローカルキャッシュに記憶したままにしておくという点で、最適ではない。
1つの態様では、方法は、プロセッサのトランスレーションルックアサイドバッファ(TLB)において、TLBエントリがTLBからエビクトされることに応じて、TLBエントリに対応するメモリページアドレスをキャッシュのキャッシュロジックに通信することと、メモリページアドレスに対応するキャッシュの1つ以上のキャッシュラインを、置換のために選択することと、を含む。いくつかの実施形態では、選択することは、メモリページアドレスに対応する1つ以上のキャッシュラインを識別するために、キャッシュをウォークすることと、キャッシュロジックにおいて、1つ以上のキャッシュラインの有効状態を無効状態に設定することと、無効状態を有する1つ以上のキャッシュラインに記憶されたデータをエビクトすることと、を含む。いくつかの実施形態では、ウォークすることは、TLBエントリに対応するメモリページアドレスに潜在的にマッピングするキャッシュラインを含むキャッシュのサブセットを識別することと、メモリページアドレスに対応する1つ以上のキャッシュラインを識別するために、キャッシュのサブセットをウォークすることと、を含む。これは、キャッシュロジックが他の要求を処理していないサイクルの間のみ、メモリページアドレスに対応する1つ以上のキャッシュラインを識別するために、キャッシュをウォークすることを含んでもよい。選択することは、キャッシュに実装されたキャッシュ置換ポリシーに従って、1つ以上のキャッシュラインの保持優先度を下げることを更に含んでもよい。いくつかの態様では、方法は、プロセッサの性能特性を測定することを更に含み、選択することは、測定された性能特性に基づいて、キャッシュロジックにおいて、1つ以上のキャッシュラインの有効状態を無効状態に設定すること、又は、キャッシュに実装されたキャッシュ置換ポリシーに従って1つ以上のキャッシュラインの保持優先度を下げること、を選択的に行うことを含む。いくつかの態様では、通信することは、TLBエントリのエビクトの通知をプロセッサのコヒーレンスディレクトリに通信することを含み、選択することは、コヒーレンスディレクトリにおいて、メモリページアドレスに対応するページをデッドとしてマーク付けすることを含む。いくつかの態様では、方法は、メモリページアドレスをバッファに記憶することと、キャッシュラインのセットにアクセスしたことに応じて、当該セットのキャッシュラインのアドレスを、バッファに記憶されたメモリページアドレスと比較することと、を更に含み、選択することは、バッファに記憶されたメモリページアドレスに一致する当該セットのキャッシュラインを、置換のために選択することを含む。
別の態様では、方法は、プロセッサのトランスレーションルックアサイドバッファ(TLB)からの仮想アドレスから物理アドレスへの変換を示すTLBエントリのエビクトに応じて、キャッシュに対して、TLBエントリの物理アドレス又は仮想アドレスに対応するアドレスを有するデータ又は命令を記憶するキャッシュラインのキャッシュ置換優先度を調整することを含む。いくつかの実施形態では、方法は、TLBエントリの物理アドレス又は仮想アドレスに対応するキャッシュラインを識別するために、キャッシュをウォークすることを更に含み、調整することは、キャッシュラインの有効状態を無効状態に設定することと、無効状態を有するキャッシュラインに記憶されたデータ又は命令をエビクトすることと、を含む。ウォークすることは、TLBエントリに対応する物理アドレス又は仮想アドレスに潜在的にマッピングするキャッシュラインのサブセットを識別することと、物理アドレスまたは仮想アドレスに対応するキャッシュラインを識別するために、キャッシュラインのサブセットをウォークすることと、を更に含んでもよい。ウォークすることは、キャッシュのキャッシュロジックが他の要求を処理していないサイクルの間のみ、物理アドレス又は仮想アドレスに対応するキャッシュラインを識別するために、キャッシュをウォークすることを含んでもよい。いくつかの態様では、調整することは、キャッシュに実装されたキャッシュ置換ポリシーに従って、キャッシュラインの保持優先度を下げることを含む。いくつかの態様では、方法は、プロセッサの性能特性を測定することを更に含み、調整することは、性能特性に基づいて、キャッシュラインの有効状態を無効状態に調整すること、又は、キャッシュに実装されたキャッシュ置換ポリシーに従ってキャッシュラインの保持優先度を下げること、を選択的に行うことを含む。方法は、物理アドレス又は仮想アドレスをバッファに記憶することと、キャッシュラインのセット内のキャッシュラインにアクセスしたことに応じて、当該セットのキャッシュラインに記憶されたデータ又は命令のアドレスを、バッファに記憶された物理アドレス又は仮想アドレスと比較することと、を更に含んでもよく、調整することは、バッファに記憶された物理アドレス又は仮想アドレスに一致する当該セットのキャッシュラインのキャッシュ置換優先度を調節することを含む。
更なる別の態様では、プロセッサは、トランスレーションルックアサイドバッファ(TLB)と、キャッシュと、TLBのエントリがエビクトされたという通信をTLBから受信したことに応じて、TLBのエントリの物理アドレス又は仮想アドレスに対応するアドレスを有するデータ又は命令を記憶するキャッシュの1つ以上のキャッシュラインのキャッシュ置換優先度を調整するように構成されたキャッシュロジックと、を備える。いくつかの実施形態では、キャッシュロジックは、キャッシュロジックが他の要求を処理していないサイクルの間にのみキャッシュをウォークすることによって、物理アドレス又は仮想アドレスに対応するキャッシュラインを識別するように構成されている。プロセッサは、プロセッサの性能特性を測定するように構成された性能モニタを更に備えてもよく、キャッシュロジックは、性能特性に基づいて、1つ以上のキャッシュラインの有効状態を無効状態に調整すること、又は、キャッシュに実装されたキャッシュ置換ポリシーに従って1つ以上のキャッシュラインの保持優先度を下げること、を選択的に行うように更に構成されている。プロセッサは、物理アドレス又は仮想アドレスを記憶するように構成されたバッファを更に備えてもよく、キャッシュロジックは、キャッシュラインのセットにアクセスしたことに応じて、当該セットのキャッシュラインに記憶されたデータ又は命令のアドレスを、バッファに記憶された物理アドレス又は仮想アドレスと比較し、バッファに記憶された物理アドレス又は仮想アドレスに一致する当該セットのキャッシュラインのキャッシュ置換優先度を調整する、ように更に構成されている。いくつかの態様では、キャッシュロジックは、TLBのエントリがエビクトされたという通信をTLBから受信したことに応じて、物理アドレス又は仮想アドレスに対応するページをデッドとしてマーク付けするように構成されたコヒーレンシディレクトリを備える。
添付図面を参照することによって、本開示をより良好に理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面において同じ符号を使用することは、類似又は同一の要素を示す。
いくつかの実施形態による、トランスレーションルックアサイドバッファ(TLB)からのエントリのエビクトに基づくキャッシュ置換ポリシーを採用するメモリ階層を有するプロセッシングシステムのブロック図である。 いくつかの実施形態による、エビクトされたTLBエントリのアドレスに対応するキャッシュラインを識別する、図1のプロセッシングシステムの一例のブロック図である。 いくつかの実施形態による、エビクトされたTLBエントリのアドレスに対応するキャッシュラインの置換優先度のエビクト又は調整を選択的に行う、図1のプロセッシングシステムの一例のブロック図である。 いくつかの実施形態による、TLBエントリのエビクトに基づくキャッシュ置換ポリシーを実施する方法を示すフローチャートである。 いくつかの実施形態による、対応するキャッシュラインを識別するためにエビクトされたTLBエントリのアドレスを記憶するバッファを採用する、図1のプロセッシングシステムの一例のブロック図である。 いくつかの実施形態による、TLBエントリのエビクトに基づくキャッシュ置換ポリシーを実施する方法を示すフローチャートである。 いくつかの実施形態による、エビクトされたTLBエントリのアドレスに対応するキャッシュラインを識別するために、キャッシュコヒーレンスディレクトリを有するキャッシュ階層を採用するプロセッシングシステムのブロック図である。
多くのプロセッシングシステムは、プログラム(例えば、アプリケーション、オペレーティングシステム、デバイスドライバ等)を実行することによってデータアクセスを処理するために、仮想メモリを使用している。このようなプロセッシングシステムでは、プログラムは、メモリのブロック(又は、「ページ」)の物理位置(又は、「物理アドレス」)に基づくアドレスを使用してメモリにアクセスする代わりに、対応するプログラムに固有のローカルアドレス空間である「仮想アドレス空間」内の「仮想アドレス」を使用してメモリにアクセスする。よって、プロセッシングシステムでは、メモリアクセスをサポートするために、通常、仮想アドレスを対応する物理アドレスに変換するアドレス変換回路を使用する。
プロセッシングシステムのプロセッサコアは、プログラムがメモリ内のページの物理位置を管理する必要がないように、プログラムのページの物理位置を管理する。ページの物理位置を管理するために、プロセッサコアは、メモリアクセス要求においてプログラムによって使用される仮想アドレスを、データが実際に位置する物理アドレスに変換する。次に、プロセッサコアは、物理アドレスを使用して、プログラムのためのメモリアクセスを実行する。
仮想アドレスから物理アドレスへの変換を可能にするために、コンピューティングデバイスは、ページテーブルを含み、ページテーブルは、メインメモリに記憶されたデータのページの仮想アドレスから物理アドレスへの変換情報と共に、エントリ又は「ページテーブルエントリ」を含むコンピューティングデバイスのメモリに記憶されたレコードである。プロセッサは、所定の仮想アドレスにおいてメモリにアクセスする要求をプログラムから受信すると、ページテーブルウォークを実行することによって、ページテーブルから対応する物理アドレス情報を取得する。ページテーブルウォークの間、ページテーブルは、仮想アドレスに関連する物理アドレスを提供するページテーブルエントリがエントリ毎に検索される。
上述したページテーブルウォークは比較的遅いので、プロセッシングシステムは、1つ以上のトランスレーションルックアサイドバッファ(TLB)を含み、1つ以上のTLBは、ページテーブルウォークの間に取得されたページテーブルエントリの限られた数のコピー(又は、ページテーブルエントリに基づく情報)を記憶するためにプロセッサコアによって使用される、各プロセッサ内のローカルキャッシュである。動作中、プロセッサコアは、先ず、仮想アドレスから物理アドレスへの変換を実行するために、対応するTLBからキャッシュされたページテーブルエントリを取得しようとする。対応するページテーブルエントリのコピーがTLBに存在しない場合(すなわち、「ミス」が発生した場合)、プロセッサコアは、所望のページテーブルエントリを取得するためにページテーブルウォークを実行し、取得されたページテーブルエントリのコピーをTLBにキャッシュする。
TLBは、限られた記憶容量を有しており、メモリ管理プロトコルを使用して、TLBが満杯になると、新たに取得されたTLBエントリをキャッシュするためのスペースを確保するために、何れのTLBエントリがエビクトされるかを決定する。例えば、メモリ管理プロトコルは、LRU(Least Recently Used)ポリシーに基づいてTLBエントリをエビクトするように指定することができる。LRUポリシーに基づくTLBエントリのエビクトは、TLBエントリのページアドレスに対応するキャッシュラインが最近アクセスされていないことを示す。例えば、4キロバイトページは、64個の64バイトキャッシュラインを含むので、TLBエビクトは、対応する64個のキャッシュラインの何れもプロセッサコアによって最近アクセスされていないことを意味する。対応するキャッシュラインの何れも最近アクセスされていない場合、対応するキャッシュラインが近い将来にプロセッサコアによって必要とされなくなる可能性が高い。
図1~図7は、プロセッシングシステムが、トランスレーションルックアサイドバッファ(TLB)から仮想物理アドレス変換をマッピングするエントリのエビクトに基づいて、キャッシュにおけるキャッシュラインのキャッシュ置換優先度を調整する技術を示している。TLBエントリがエビクトされると、プロセッシングシステムは、エビクトされたTLBエントリの物理アドレスに対応するキャッシュラインを識別し、キャッシュラインをエビクトするか、キャッシュラインのキャッシュ置換優先度を調整して、キャッシュからのエビクトを加速化する。いくつかの実施形態では、キャッシュのキャッシュコントローラは、エビクトされたTLBエントリの物理アドレスに一致するアドレスを有するキャッシュライン(すなわち、TLBエントリに対応するキャッシュライン)を識別するために、キャッシュ又はキャッシュのサブセットをウォークする。キャッシュコントローラは、識別されたキャッシュラインを無効にするか、識別されたキャッシュラインの保持優先度を低下させる。リソースを節約するために、いくつかの実施形態では、キャッシュコントローラは、キャッシュコントローラが他のキャッシュアクセスを実行していないサイクルの間、TLBエントリに対応するキャッシュラインを識別するために、キャッシュのウォークのみ行う。
他の実施形態では、キャッシュをウォークして、エビクトされたTLBエントリの物理アドレスに一致するアドレスを有するキャッシュラインを識別する代わりに、キャッシュコントローラは、エビクトされたTLBエントリの物理ページアドレスをバッファに記憶し、キャッシュのセットへのアクセスの間、セット内の全てのキャッシュラインのアドレスを、バッファに記憶されたページアドレスと比較する。セットへのアクセスの間に、バッファを使用し、セット内のキャッシュラインを記憶されたページアドレスと比較することによって、キャッシュコントローラは、エビクトされたTLBエントリに対応するキャッシュラインを検索するために、キャッシュへの追加のアクセスを実行しない。いくつかの実施形態では、異なるプロセッサコアにキャッシュされたキャッシュラインを追跡するために、複数のプロセッサコア及びコヒーレンスディレクトリを使用し、TLBは、コヒーレンスディレクトリにTLBエントリのエビクトを通知し、コヒーレンスディレクトリは、対応するページを「デッド」としてマーク付けし、これにより、ページに対応するキャッシュラインを無効化させるか、各プロセッサコアに関連する全てのキャッシュからフラッシュさせる。TLBエビクトに基づいてプロセッシングシステムのキャッシュ置換ポリシーをバイアスすることによって、プロセッシングシステムは、キャッシュ置換ポリシーを改善し、その結果、処理効率を向上させる。
図1は、いくつかの実施形態による、トランスレーションルックアサイドバッファ(TLB)からのエントリのエビクトに少なくとも部分的に基づくキャッシュ置換ポリシーを採用するメモリ階層を有するプロセッシングシステム100を示す図である。プロセッシングシステム100は、TLB105を有するプロセッサコア110と、キャッシュ階層170と、メモリコントローラ150と、システムメモリ160と、を含む。様々な実施形態では、プロセッシングシステム100は、パーソナルコンピュータ、ワークステーション、スマートフォン等のモバイルデバイス、ビデオゲームコンソール、スマートTV等のいくつかのデバイスのうち何れかに採用される。
プロセッサコア110は、中央プロセッサユニットコア(CPU)、グラフィックプロセッサユニットコア(GPU)、特殊プロセッサコア又はアクセラレータ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)等として実装される。プロセッサコア110は、命令を実行するための1つ以上の命令パイプラインを含み、それによって、電子デバイスの代わりにタスクを実行する。プロセッサコア110は、例えば、レジスタファイルの形式で或る程度の内部メモリを有してもよいが、そのようなメモリは、通常、記憶容量が限られている。したがって、命令を実行するために、プロセッサコア110は、キャッシュ階層104及びシステムメモリ160を含む、プロセッシングシステム100のメモリ階層にデータを記憶し、メモリ階層からデータを取り出す。特に、命令を実行する過程で、プロセッサコア110は、メモリ階層にデータを記憶し(ストアオペレーション)、又は、メモリ階層からデータをロードする(ロードオペレーション)、メモリアクセス要求と呼ばれるオペレーションを生成する。キャッシュ階層170及びシステムメモリ160は、本明細書で更に説明するように、メモリアクセス要求を満たすように協働する。
メモリコントローラ150は、キャッシュ階層170とシステムメモリ160との間のインタフェースとして動作する。よって、キャッシュ階層170にキャッシュされるデータは、典型的には「キャッシュライン」と呼ばれ、システムメモリ160の物理アドレスを使用してメモリ階層にアドレス指定され又は他の方法でメモリ階層に配置されるデータのブロックとして操作される。キャッシュラインは、キャッシュ階層170からのメモリ要求に応じて、メモリコントローラ150によってシステムメモリ160からアクセスされ、キャッシュラインは、キャッシュ階層170の1つ以上のキャッシュに記憶又はキャッシュされる。同様に、変更されたデータを含むキャッシュラインがキャッシュ階層170からエビクトされ、よって、システムメモリ160内で更新される必要がある場合、メモリコントローラ150は、このライトバック処理を管理する。
キャッシュ階層104は、第1のレベル(L1)キャッシュ120及びL1キャッシュコントローラ125と、第2のレベル(L2)キャッシュ130及びL2キャッシュコントローラ135と、第3のレベル(L3)キャッシュ140及びL3キャッシュコントローラ145等のように、1つ以上のレベルのキャッシュを含む。図示した例は3つのレベルを含むが、他の実施形態では、キャッシュ階層は、3つよりも少ないレベル又は3つよりも多いレベルを含む。キャッシュ階層170のキャッシュは、プロセッサコア110によるアクセス及び操作のためにデータをキャッシュするために使用される。典型的には、下位レベル(例えば、L1)のキャッシュは、記憶容量が少なく、アクセスレイテンシが短い傾向があり、上位レベル(例えば、L3)のキャッシュは、記憶容量が多く、アクセスレイテンシが長い傾向がある。したがって、データのキャッシュラインは、キャッシュの記憶容量と、キャッシュ階層170の個々のキャッシュのキャッシュコントローラ125,135,145のキャッシュロジックによって管理されるキャッシュラインエビクト処理及びキャッシュラインインストール処理によるアクセスレイテンシと、を考慮して、キャッシュデータの利用をより良好に最適化するように、異なるキャッシュレベルのキャッシュ間で転送される。
L1キャッシュコントローラ125は、プロセッサコア110からデータのメモリアクセス要求を受信し、L1キャッシュ120を検索して、何れかのキャッシュエントリが、メモリアクセス要求の対象となるメモリアドレスに関連するキャッシュラインを記憶しているかどうかを判別する。要求されたキャッシュラインがL1キャッシュ120内で発見された場合、キャッシュヒットが発生したことになる。キャッシュヒットの場合、L1キャッシュコントローラ125は、読み出しオペレーションの場合に、要求されたキャッシュラインをL1キャッシュ120からプロセッサコア110に提供することによってメモリアクセス要求を満たし、書き込みオペレーションの場合に、書き込みデータをキャッシュエントリに記憶することによって、メモリアクセス要求を満たす。要求されたキャッシュラインがL1キャッシュ120内で発見されなかった場合、キャッシュミスが発生したことになる。L1キャッシュ120でキャッシュミスが発生した場合、L1キャッシュコントローラ125は、メモリアクセス要求をL2キャッシュ130に提供する。
L1キャッシュ120と同様に、L2キャッシュ130は、エントリのセットを含むメモリであり、エントリのセット内の各エントリは、関連するキャッシュラインを記憶する。L2キャッシュコントローラ135は、L1キャッシュ120でのキャッシュミスに応じて、L1キャッシュコントローラ125からメモリアクセス要求を受信する。メモリアクセス要求を受信したことに応じて、L2キャッシュコントローラ135は、L2キャッシュ130の何れかのキャッシュエントリが、メモリアクセス要求の対象となるメモリアドレスに関連するデータを記憶しているかどうかを識別する。記憶している場合、L2キャッシュコントローラ135は、キャッシュヒットを識別し、要求されたデータをL2キャッシュ130からL1キャッシュ120に提供する。要求されたデータがL2キャッシュ130内で発見されなかった場合、L2キャッシュコントローラ135は、キャッシュミスを識別し、メモリアクセス要求をL3キャッシュ140に提供する。
L1キャッシュ120及びL2キャッシュ130と同様に、L3キャッシュ140は、エントリのセットを含むメモリであり、各エントリは、キャッシュラインを記憶するように構成されている。L3キャッシュコントローラ145は、L2キャッシュコントローラ135からメモリアクセス要求を受信する。メモリアクセス要求を受信したことに応じて、L3キャッシュコントローラ145は、L3キャッシュ140のエントリが、メモリアクセス要求の対象となるメモリアドレスに関連するデータを記憶しているかどうかを識別する。キャッシュヒットの場合、L3キャッシュコントローラ145は、要求されたデータをL3キャッシュ140からL2キャッシュ130に提供し、L2キャッシュ130は、データを記憶し、次いで、データをL1キャッシュ120に提供し、L1キャッシュ120は、上述したようにメモリアクセス要求を満たす。L3キャッシュ140でキャッシュミスが発生した場合、L3キャッシュコントローラ145は、メモリアクセス要求をシステムメモリ160に提供する。システムメモリ160は、要求の対象となるメモリアドレスにおいてキャッシュラインを取り出し、そのキャッシュラインをL3キャッシュ140に提供し、L3キャッシュ140は、キャッシュラインを、メモリアクセス要求が満たされるようにL1キャッシュ120に提供するために、L2キャッシュ130に提供する。よって、上述したように、メモリアクセス要求は、要求されたデータが発見されるまで、メモリ階層をトラバースする。そして、要求されたデータがL1キャッシュ120に転送され、そこでメモリアクセス要求が満たされる。
いくつかの実施形態では、L1キャッシュ120、L2キャッシュ130及びL3キャッシュ140の各々は、各キャッシュがいくつかのセットに分割されているセットアソシアティブキャッシュである。各セットは、いくつかのウェイを含み、各ウェイは、キャッシュラインを記憶するキャッシュエントリに対応している。各セットは、メモリアドレスのサブセットに関連するキャッシュラインのみを記憶し、セットに関連するサブセットは、インデックスと呼ばれるメモリアドレスの一部に基づいて、対応するキャッシュコントローラによって識別される。セットアソシアティビィティを採用することによって、キャッシュ120,130,140は、キャッシュミス及びキャッシュヒットの比較的高速な識別を容易にする。更に、いくつかの実施形態では、L3キャッシュ140はL2キャッシュ130よりも大きく、そのセット毎により大きなインデックスサイズを採用するようになっている。
いくつかの実施形態では、キャッシュ120,130,140は、通常、所定の時点で、プロセッサコア110によって要求され、又は、プロセッサコア110に要求される可能性のある全てのデータを記憶することができないようなサイズになっており、それによって、上述したようにメモリ階層を介してデータを転送する必要がある。データコヒーレンシ及びメモリ階層を介してデータの効率的な転送を保証するために、キャッシュコントローラ125,135,145の各々は、受信したキャッシュラインを記憶するために利用可能なセット内にエントリが存在するどうかを識別し、そうでない場合には、置換のためにセット内の1つのエントリを選択するための置換ポリシーを実装する。キャッシュエントリの有効性は、エントリの有効状態と呼ばれる、エントリに関連する状態情報によって示される。特に、無効な有効状態(本明細書では無効キャッシュラインと呼ぶ)を有するキャッシュラインは、データを記憶するために利用可能なものであり、有効な有効状態(本明細書では有効キャッシュラインと呼ぶ)を有するキャッシュラインは、置換されない限りデータの記憶に利用できないものである。エントリの有効なキャッシュラインを着信キャッシュラインと置き換えるために、キャッシュのキャッシュコントローラは、先ず、有効なキャッシュラインをメモリ階層の1つ以上の他のレベルに転送することによってエビクトし、次に、着信キャッシュラインをエントリに記憶する。
例示すると、プロセッシングシステム100のリセットに応じて、L1キャッシュ120、L2キャッシュ130及びL3キャッシュ140の各々の全てのキャッシュラインが、各々のキャッシュコントローラによって無効な状態に設定される。システムメモリ160から取得されたキャッシュラインがキャッシュエントリに入力されると、対応するキャッシュコントローラは、キャッシュエントリを有効な状態に設定する。無効状態に設定されたキャッシュラインを含むキャッシュウェイは、入力されたキャッシュラインを受信してもよく、入力されたキャッシュラインは、無効なキャッシュラインを置換又は上書きする。キャッシュは、記憶されるキャッシュラインを受信すると、キャッシュラインが記憶されるキャッシュウェイを選択する必要がある。入力されたキャッシュラインに関連するキャッシュセットが利用可能なスペースを有する場合(すなわち、無効なキャッシュラインを含むと示された1つ以上のキャッシュウェイを有する場合)、入力されたキャッシュラインは、無効なウェイのうち何れかに記憶される。しかしながら、入力されたキャッシュラインに関連するセット内の全てのキャッシュウェイが有効であると示されている場合、キャッシュコントローラは、入力されたキャッシュラインのためのスペースを確保するために、新たなキャッシュラインに関連するセットのキャッシュラインを、エビクトするために選択する。
置換されるキャッシュラインを選択するためにキャッシュコントローラによって採用される特定の基準は、置換ポリシーと呼ばれる。例えば、いくつかの実施形態では、キャッシュコントローラ125は、キャッシュ120において置換ポリシーを実装し、置換ポリシーは、エビクトするために、入力されたキャッシュラインに関連するキャッシュセット内で最近最も使用されていないキャッシュライン(すなわち、最近最もメモリアクセスオペレーションの対象にならなかったキャッシュライン)を選択する。他の実施形態では、キャッシュコントローラ125は、キャッシュ120において置換ポリシーを実装し、置換ポリシーは、エビクトするために、入力されたキャッシュラインに関連するキャッシュセット内で最も使用頻度の低いキャッシュライン(すなわち、履歴的に特定の期間の間に最もメモリアクセスオペレーションの対象とされなかったキャッシュライン)を選択する。他の置換ポリシーは、再参照間隔予測(re-reference interval prediction)を含む。
プロセッサコア110は、システムメモリ160内の物理アドレスにマッピングされた仮想アドレスに基づいて、システムメモリ160にアクセスする。仮想アドレスの物理アドレスへの変換は、1つ以上のページテーブル155に記憶される。プロセッシングシステム100において実行されている各のプロセスは、対応するページテーブル155を有する。あるプロセス用のページテーブル155は、プロセスによって使用されている仮想アドレスをシステムメモリ160内の物理アドレスに変換する。いくつかの実施形態では、プロセス用のページテーブルの全体がシステムメモリ160に記憶される。
プロセッサコア110によって頻繁に使用される変換は、プロセッサコア110に実装されたTLB105に記憶される。TLB105は、頻繁に要求される仮想物理アドレス変換をキャッシュするために使用される。頻繁に使用されるアドレス変換を含むエントリは、ページテーブル155からTLB105に書き込まれる。したがって、プロセッサコア110は、ページテーブル155内で変換を検索するオーバヘッドなしに、TLB105からアドレス変換を取得することが可能である。TLB置換ポリシーに従って新たなエントリのためのスペースを確保するために、エントリがTLB105からエビクトされる。各TLBエントリが64個の64バイトキャッシュラインを含む4キロバイトページを表し、TLB置換ポリシーが最近最も使用されていないTLBエントリをエビクトする場合、TLBエントリのエビクトは、64個のキャッシュラインの何れもがプロセッサコア110によって最近アクセスされていないことを示す。それにも関わらず、既存のキャッシュ置換ポリシーにおける非効率性のために、エビクトされたTLBエントリに対応する64個のキャッシュラインのうち少なくとも一部が、有効なエントリとしてL1キャッシュ120、L2キャッシュ130又はL3キャッシュ140のうち1つ以上に依然として記憶されている可能性が高い。説明を容易にするために、4キロバイトページサイズを説明したが、TLB105は4キロバイトページに限定されず、いくつかの実施形態では、2メガバイト、1ギガバイト等の他のページサイズや、ページサイズの組み合わせを記憶する。
処理効率を改善するために、TLB105は、エビクトされたTLBエントリ115のメモリページアドレスを、L1キャッシュコントローラ125、L2キャッシュコントローラ135及びL3キャッシュコントローラ145のうち1つ以上等のキャッシュロジックに通信する。いくつかの実施形態では、TLB105は、エビクトされたTLBエントリ115の物理アドレスをキャッシュロジックに通信し、他の実施形態では、TLB105は、エビクトされたページの仮想アドレス及び物理アドレスの両方をキャッシュロジックに通信する。エビクトされたTLBエントリ115のアドレスを受信したことに応じて、キャッシュロジックは、対応するキャッシュにおいて、エビクトされたTLBエントリ115のメモリページアドレスに対応するキャッシュラインを識別する。キャッシュロジックは、それらの状態を無効に変更するか、キャッシュ置換ポリシーの下での置換のための優先度を調整するかの何れかによって、対応するキャッシュラインを置換のために選択する。このようにして、対応するキャッシュラインは、対応するTLBエントリが依然としてアクティブに使用されている他のキャッシュラインよりも迅速に、L1キャッシュ120、L2キャッシュ130及びL3キャッシュ140からエビクトされる可能性が高くなる。
動作中、TLB105からエビクトされると、エビクトされたTLBエントリ115に対応する物理ページアドレスは、TLB105によって、L1キャッシュコントローラ125、L2キャッシュコントローラ135及びL3キャッシュコントローラ145のうち1つ以上のキャッシュロジックに送信される。TLB105が命令TLB(ITLB)である実施形態では、ITLBからエビクトされると、ITLBは、ページアドレスをレベル1命令キャッシュ(IL1)ロジック(図示省略)に送信する。いくつかの実施形態では、TLB105からエビクトされたTLBエントリ115の物理ページアドレスを受信したことに応じて、L1キャッシュコントローラ125、L2キャッシュコントローラ135又はL3キャッシュコントローラ145等のキャッシュロジックは、対応するL1キャッシュ120、L2キャッシュ130又はL3キャッシュ140をウォークし、エビクトされたページに属する全てのキャッシュラインを無効化する。よって、4キロバイトページの場合、キャッシュをウォークするには、最大で64回のキャッシュアクセスを必要とする。数メガバイトの容量を有するL3キャッシュ等の大きなキャッシュの場合、L3キャッシュコントローラ145は、64個のキャッシュラインが潜在的に記憶されるL3キャッシュ140のサブセットのみをウォークする。
いくつかの実施形態では、TLB105は、エビクトされたTLBエントリ115のアドレスをL1キャッシュコントローラ125に通知し、他の実施形態では、TLB105は、L1キャッシュコントローラ125をスキップして、エビクトされたTLBエントリ115のアドレスを、L2キャッシュコントローラ135又はL3キャッシュコントローラ145に直接通知する。例えば、いくつかの実施形態では、L1キャッシュ120のタイミング及び/又はエリアがセンシティブ(sensitive)であるため、TLBエビクト情報を処理するための追加のルーティング及びロジックを含むことができず、又は、L1キャッシュ120が十分に小さいため、TLBエントリがエビクトされた時点で、対応するラインもL1キャッシュ120からエビクトされている可能性が高いと考えられる。
いくつかの実施形態では、プロセッシングシステム100は、単一のTLBエントリがN個の連続したページテーブルエントリについての変換情報を含む、結合されたTLBエントリを採用する。例えば、4個の連続したページの結合がサポートされる場合、結合されたTLBエントリがエビクトされると、TLB105は、単一の結合された通知をキャッシュロジックに送信する(例えば、16キロバイトページがTLB105からエビクトされたことをキャッシュロジックに通知する)か、4個の別個の通知を、対応する結合されたTLBエントリ内の4個の元のページの各々に対応するキャッシュロジックに送信する。
図2は、いくつかの実施形態による、エビクトされたTLBエントリ115のアドレスに対応するキャッシュラインを識別する図1のプロセッシングシステム100の例を示す図である。プロセッサコア110は、頻繁に要求される仮想アドレスから物理アドレスへの変換を記憶するためにTLB105を維持する。物理ページアドレス115の仮想アドレスから物理アドレスへの変換を示すエントリがエビクトされると、TLB105は、エビクトされたTLBエントリ115の物理ページアドレスを、L1キャッシュ120のL1キャッシュコントローラ125のキャッシュロジックに通信し、その結果、L1キャッシュコントローラ125は、エビクトされたTLBエントリ115の物理ページアドレスに対応するアドレスを有するL1キャッシュ120に記憶された何れかのキャッシュラインを、置換のために選択することができる。L1キャッシュ120のコンテキストで説明されるが、他の実施形態では、キャッシュコントローラ125は、L1キャッシュコントローラ125、L2キャッシュコントローラ135及びL3キャッシュコントローラ145のうち何れかに対応し、キャッシュ120は、L1キャッシュ120、L2キャッシュ130又はL3キャッシュ140に対応する。
図示した例では、キャッシュアクセス帯域幅を節約するために、キャッシュロジックは、他のメモリアクセス要求が処理されていないサイクルの間、エビクトされたTLBエントリ115の物理ページアドレスに対応するキャッシュラインを識別するために、対応するキャッシュのウォークのみ行う。例えば、いくつかの実施形態では、キャッシュコントローラ125は、キャッシュアクセスアービトレーションを採用し、キャッシュアクセスアービトレーションは、最低優先度を、TLBエビクト関連のキャッシュの無効化に割り当てる。このようにして、キャッシュコントローラ125は、エビクトされたTLBエントリに対応するキャッシュラインを置換のために識別し、これにより、他の性能に重要なキャッシュ要求の処理を遅延させることなく、キャッシュヒット率を潜在的に改善する。
図3は、いくつかの実施形態による、エビクトされたTLBエントリ115のアドレスに対応するキャッシュラインの置換優先度を選択的にエビクト又は調整する、図1のプロセッシングシステム100の例を示す図である。いくつかの例では、キャッシュラインを無効化するのではなく、キャッシュ120においてキャッシュコントローラ125によって実装されたキャッシュ置換ポリシーの下で、エビクトされたTLBエントリ115の物理ページアドレスに対応するキャッシュラインのレベルを下げることは、追加のコヒーレンストラフィックを回避する(又は、延ばす)。例えば、影響を受けたキャッシュラインが変更された場合には、変更されたデータを、キャッシュ階層の次のレベルに書き戻す必要がある。キャッシュ階層の包含特性によっては、クリーンなキャッシュラインであってもエビクトをシステムに通知するために、追加のコヒーレンストラフィックが必要になる場合がある。一方で、キャッシュラインが何れかのイベントにおいて最終的にエビクトされることになる場合、コヒーレンスアクションを早期に実行することは、キャッシュ階層のトラフィックが減少している時間帯にスケジュールされる可能性があるため、有益な場合がある。したがって、いくつかの実施形態では、エビクトされたTLBエントリ115の物理ページアドレスに対応するキャッシュラインを無効化するのではなく、キャッシュコントローラ125は、対応するキャッシュラインのキャッシュ置換優先度を調整する。例えば、いくつかの実施形態では、キャッシュコントローラ125は、エビクトされたTLBエントリ115の物理ページアドレスに対応するキャッシュラインの保持優先度を下げる。
例示すると、キャッシュコントローラ125が最長時間未使用(LRU)置換ポリシーを利用する実施形態では、キャッシュコントローラ125は、TLBエントリ115がエビクトされたという通信をTLB105から受信したことに応じて、置換スタック内で、エビクトされたTLBエントリ115のページアドレスに対応するアドレスを有する何れかのキャッシュラインのレベルをLRU位置に下げる。キャッシュコントローラ125が最小使用頻度(LFU)置換ポリシーを利用する実施形態では、TLBエントリ115がエビクトされたという通信をTLB105から受信したことに応じて、キャッシュコントローラ125は、最も頻繁に使用されていないラインと同等のものを示すように、エビクトされたTLBエントリ115のページアドレスに対応するアドレスを有する何れかのキャッシュラインのアクセス頻度カウンタを0に設定する。キャッシュコントローラ125が再参照間隔予測(RRIP)置換ポリシーを利用する実施形態では、TLBエントリ115がエビクトされたという通信をTLB105から受信したことに応じて、キャッシュコントローラ125は、保持のための優先度が最も低いことを示すように、エビクトされたTLBエントリのページアドレスに対応するアドレスを有するキャッシュラインの置換優先度カウンタを0に設定する。キャッシュコントローラ125がRRIP置換ポリシーを利用する他の実施形態では、キャッシュコントローラは、エビクトされたTLBエントリ115のページアドレスに対応するアドレスを有しない他のキャッシュラインのカウンタをインクリメントする。
図示した例では、プロセッシングシステム100は、性能モニタ330を含む。性能モニタ330は、プロセッシングシステム100のハードコードされたロジックとして、プロセッシングシステム100のファームウェア若しくはプログラム可能ロジックとして、又は、これらの組み合わせとして実装される。性能モニタ330は、キャッシュコントローラ125が、エビクトされたTLBエントリ115の物理ページアドレスに対応するキャッシュラインを選択的に無効化する又はレベルを下げることに基づいて、プロセッシングシステム100の1つ以上の性能特性を測定する。例えば、キャッシュ120におけるトラフィックのレベルが閾値よりも高いと性能モニタ330が判別した場合、キャッシュコントローラ125は、追加のライトバック又はコヒーレンストラフィックを回避するために、エビクトされたTLBエントリ115の物理ページアドレスに対応するキャッシュラインの保持優先度のレベルを選択的に下げる。一方、キャッシュ120におけるトラフィックのレベルが閾値未満であると性能モニタ330が判別した場合、キャッシュコントローラ125は、エビクトされたTLBエントリ115の物理ページアドレスに対応するアドレスを有するキャッシュラインを選択的に無効化する。L1キャッシュコントローラ125のコンテキストで説明したが、他の実施形態では、キャッシュコントローラ125は、L1キャッシュコントローラ125、L2キャッシュコントローラ135及びL3キャッシュコントローラ145のうち何れかに対応し、キャッシュ120は、L1キャッシュ120、L2キャッシュ130又はL3キャッシュ140に対応する。
図4は、いくつかの実施形態による、TLBエントリのエビクトに基づくキャッシュ置換ポリシーを実施する方法400を示す。方法400は、図1~図3に示すプロセッシングシステム100のいくつかの実施形態において実施される。
ブロック402において、TLB105は、最長時間未使用ポリシー等のように、TLB105において実装された置換ポリシーに従って、エントリをエビクトする。ブロック404において、TLB105は、エビクトされたTLBエントリ115の物理ページアドレス又は仮想ページアドレスを、プロセッシングシステム100のキャッシュ120のキャッシュコントローラ125等のキャッシュロジックに通信する。ブロック406において、キャッシュコントローラ125は、エビクトされたTLBエントリ115のページアドレスに一致するアドレスを有する何れかのキャッシュラインを識別するために、キャッシュ120又はキャッシュ120のサブセットをウォークする。ブロック408において、性能モニタ330は、プロセッシングシステム100のトラフィック又は他の性能特性を測定する。ブロック410において、性能モニタ330は、キャッシュ120におけるトラフィックが閾値を超えているかどうかを判別する。ブロック410において、キャッシュ120におけるトラフィックが閾値を超えていると性能モニタ330が判別した場合、方法のフローは、ブロック412に続く。ブロック412において、キャッシュコントローラ125は、エビクトされたTLBエントリ115のページアドレスに対応するアドレスを有するキャッシュ120におけるキャッシュラインの保持優先度のレベルを下げる。ブロック410において、キャッシュ120におけるトラフィックが閾値を超えていないと性能モニタ330が判別した場合、方法のフローは、ブロック414に続く。ブロック414において、キャッシュコントローラ125は、エビクトされたTLBエントリ115のページアドレスに対応するアドレスを有するキャッシュ120におけるキャッシュラインを無効化する。
図5は、いくつかの実施形態による、対応するキャッシュラインの識別のために、エビクトされたTLBエントリ115のアドレスを記憶するバッファ515を採用する、図1のプロセッシングシステム100の例を示す図である。図示した例では、キャッシュ120をウォークして、エビクトされたTLBエントリ115のページアドレスに対応するキャッシュラインを識別する代わりに、キャッシュコントローラ125は、エビクトされたTLBエントリ115が通知されると、エビクトされたTLBエントリ115の物理ページアドレスをバッファ515に挿入する。いくつかの実施形態では、バッファ515は、ファーストインファーストアウト(FIFO)バッファとして実装される。キャッシュ120のキャッシュセット(例えば、キャッシュセット525)の各アクセスに対して、キャッシュコントローラ125は、セット525内の全てのキャッシュラインのアドレスを、バッファ515内のページアドレスと比較する。キャッシュコントローラ125は、上述したメカニズムの何れかを使用して、一致するアドレスを無効化し又はレベルを下げる。このようにして、キャッシュコントローラ125は、エビクトされたTLBページ(複数可)115に対応するキャッシュラインを検索するために、キャッシュへの追加のアクセスを行わない。
バッファ515のサイズは、設計上の選択の問題である。バッファ515を最新の状態に維持するために、エントリがTLB105に挿入される毎に、TLB105は、TLB105に挿入されるエントリに一致するエントリをバッファ515でチェックする。一致するエントリがバッファ515で発見された場合、TLB105は、バッファ515で一致するエントリを無効化する。このようにして、バッファ515は、有効なTLBエントリを記憶せず、キャッシュコントローラ125は、キャッシュ120からのエビクトのために、TLB105に挿入されるエントリに対応するキャッシュラインを優先させない。
いくつかの実施形態では、最近エビクトされたTLBエントリのバッファ515は、最近エビクトされたTLBエントリのビクティムキャッシュとして動作する。プロセッサコア110が、ページテーブル155で変換を検索する前に、TLB105に記憶されていない仮想アドレスから物理アドレスへの変換についてTLB105を検索する場合(すなわち、プロセッサコア110がTLBミスを経験する場合)、TLB105は、ミスした仮想アドレスについてバッファ515をチェックする。ミスした仮想アドレスが、バッファ515に記憶されているエビクトされたTLBエントリの中に存在する場合、バッファ515は、仮想アドレスから物理アドレスへの変換を直接供給し、それによって、ページテーブルウォーク動作を実行するためにリソース及び帯域幅を費やすことを回避する。
図6は、いくつかの実施形態による、TLBエントリのエビクトに基づくキャッシュ置換ポリシーを実施する方法600を示す図である。方法600は、図1及び図5に示すプロセッシングシステム100のいくつかの実施形態において実施される。
ブロック602において、TLB105は、最長時間未使用ポリシー等のように、TLB105において実装された置換ポリシーに従って、エントリをエビクトする。ブロック604において、TLB105は、エビクトされたTLBエントリ115の物理ページアドレスをバッファ515に記憶する。いくつかの実施形態では、TLB105は、仮想アドレスから物理アドレスへの変換を含む、エビクトされたTLBエントリ115をバッファ515に記憶する。ブロック606において、例えば、セット525へのメモリアクセス要求を実行する過程でキャッシュコントローラ125がセット525にアクセスしている間に、キャッシュコントローラ125は、バッファ515に記憶されているエビクトされたTLBエントリ115のアドレスに一致するアドレスについて、セット525のキャッシュラインをチェックする。ブロック608において、キャッシュコントローラ125は、バッファ515に記憶されたアドレスに一致するセット525のキャッシュラインの保持優先度を無効化、又は、保持優先度のレベルを下げることを選択的に行う。ブロック610において、TLB105は、新たなエントリがTLB105に挿入されたかどうかを判別する。ブロック610において、新たなエントリがTLB105に記憶された場合、方法フローは、ブロック612に続く。ブロック612において、TLB105は、新たなTLBエントリに一致するアドレスを有するエントリについてバッファ515をチェックし、バッファ515において一致するエントリを無効化する。ブロック610において、新たなエントリがTLB105に記憶されていない場合、方法フローは、ブロック602に戻る。
図7は、いくつかの実施形態による、エビクトされたTLBエントリ715のアドレスに対応するキャッシュラインを識別するためのキャッシュコヒーレンスディレクトリ780を有するキャッシュ階層770を採用するプロセッシングシステム700のブロック図である。図示した例では、プロセッシングシステム700は、複数のプロセッサコア710a,710b,710c,710dを含み、これらの各々は、プライベートキャッシュと、1つ以上の共有キャッシュと、を含む。TLBエビクトを特定のキャッシュのキャッシュロジックに直接通信するのではなく、TLB705a,705b,705c又は705dは、代わりに、エビクト通知をプロセッサシステムのコヒーレンスディレクトリ780、プローブフィルタ、又は、同様の構造に送信する。キャッシュコヒーレンスディレクトリ780は、以下に説明するように、異なるプロセッサコアに現在キャッシュされているキャッシュラインを追跡する。
キャッシュ階層770は、第1のレベル(L1)のキャッシュ、第2のレベル(L2)のキャッシュ、及び、第3のレベル(L3)のキャッシュ等のように、1つ以上のレベルのキャッシュを含む。図示した例は3つのレベルを含むが、他の実施形態では、キャッシュ階層770は、3つより少ないレベル又は3つより多くのレベルを含む。各キャッシュレベルは、そのレベルにおいて1つ以上のキャッシュを含む。例示すると、各プロセッサコア710a,710b,710c,710dは、L1キャッシュ720a,720b,720c,720dとして表される、L1における小さなプライベートキャッシュを実装し、L1キャッシュ720a,720b,720c,720dの各々は、プロセッサコア710a,710b,710c,710dのうち対応するプロセッサコアに関連付けられている。更に、L2について、各プロセッサコア710は、プロセッサコア710a,710b,710c,710dにそれぞれ対応するL2キャッシュ730a,730b,730c,730dとして表される、より大きなプライベートキャッシュを実装する。L2キャッシュ730a,730b,730c,730dの各々は、その対応するプロセッサコアに対してプライベートであるが、キャッシュ階層770は、L2キャッシュ730a,730b,730c,730dの間でコヒーレンシを維持するように動作する。他の実施形態では、2つ以上のL1キャッシュは、単一のL2キャッシュを共有してもよい。L3キャッシュレベルについて、キャッシュ階層770は、L3キャッシュ740を実装しており、L3キャッシュ740は、プロセッシングシステム700のプロセッサコア710によって共有され、よって、少なくともL2キャッシュ730a,730b,730c,730dによって共有される。他の実施形態では、L3キャッシュレベルは、様々な組み合わせでL2キャッシュ730によって共有される複数のL3キャッシュを含んでもよい。L1キャッシュ720a,720b,720c,720d、L2キャッシュ730a,730b,730c,730d、及び、L3キャッシュ740は、いくつかの実施形態では、直接マッピングされてもよいし、N個のウェイのセットアソシアティブキャッシュであってもよい。
キャッシュ階層770のキャッシュは、プロセッサコア710a,710b,710c,710dによるアクセス及び操作のためにデータをキャッシュするために使用される。一般的に、下位レベル(例えば、L1)におけるキャッシュは、記憶容量が少なく、アクセスレイテンシが短い傾向があり、上位レベル(例えば、L3)におけるキャッシュは、記憶容量が多く、アクセスレイテンシが長い傾向がある。したがって、データのキャッシュラインは、キャッシュの記憶容量と、キャッシュ階層770の個々のキャッシュのキャッシュロジックによって管理されるキャッシュラインエビクト処理及びキャッシュラインインストール処理によるアクセスレイテンシと、を考慮して、キャッシュデータの利用をより良好に最適化するように、異なるキャッシュレベルのキャッシュ間で転送される。
キャッシュ階層770は、MESI(Modified-Exclusive-Shared-Invalid)プロトコル又はMOESI(Modified-Owned-Exclusive-Shared-Invalid)プロトコル等の1つ以上のコヒーレンシプロトコルを実装する。キャッシュ階層104は、ディレクトリに基づくコヒーレンシを実装しており、これにより、キャッシュ階層770内でコヒーレンシを維持するために、キャッシュコヒーレンスディレクトリ(CCD)780を実装する。
少なくとも1つの実施形態では、CCD780は、ページに基づくキャッシュコヒーレンスディレクトリであり、すなわち、CCD780は、「キャッシュページ」又は単に「ページ」と呼ばれる連続したキャッシュラインのグループに基づいて、キャッシュラインを追跡する。この目標を達成するために、CCD780は、複数のページエントリを含み、各ページエントリは、ページエントリが割り当てられた対応するキャッシュページのキャッシュラインのコヒーレンシ状態に関する情報を記憶する。CCD780のディレクトリ構造は、キャッシュ階層704のキャッシュを実装するメモリとは別のメモリ(例えば、スタティックランダムアクセスメモリ(SRAM)や動的RAM(DRAM))によって実装されてもよいし、CCD780のディレクトリ構造は、1つ以上のキャッシュによって利用されるメモリに少なくとも部分的に実装されてもよい。例示すると、いくつかの実施形態では、CCD780のディレクトリ構造を実装するために、L3キャッシュ140が使用するためのメモリの一部が代わりに使用される。CCD780コントローラ785は、ディレクトリ構造を維持し、プロセッシングシステム700を実装する1つ以上の集積回路(IC)チップ上でハードコードされたロジックとして、プログラム可能ロジックとして、構成可能ロジック(例えば、ヒューズ構成可能ロジック)として、命令のプログラムを実行する1つ以上のプロセッサとして、又は、これらの組み合わせとして、実装される。
動作中、キャッシュラインがインストールされたり、エビクトされたり、又は、そのコヒーレンシ状態が他の方法で変更される毎に、そのアクションに関連するキャッシュは、コントローラ785によって受信されるプローブメッセージを送信し、コントローラ785は、示されたキャッシュラインを含むキャッシュページに割り当てられたディレクトリ構造内のページエントリを更新する。さらに、キャッシュラインの変更、無効化又はエビクト等の特定の更新は、方向付けられた(directed)プローブメッセージ、マルチキャストプローブメッセージ、又は、ブロードキャストプローブメッセージを他のキャッシュに送信するようにコントローラ785をトリガし、他のキャッシュは、キャッシュラインのローカルコピーに対するローカルコヒーレンシ状態指標を更新するように、そのキャッシュラインのコピーを含んでもよい。このように、ディレクトリ構造は、プロセッシングシステム700によって現在使用されているキャッシュページのキャッシュラインの現在のコヒーレンシ及びキャッシュされた状態を維持する。
CCD780によって追跡されるキャッシュページのサイズは、各プロセッサコア710のTLB705a,705b,705c又は705dにおいて追跡されるページのサイズと同じであってもよいし、異なっていてもよい。例えば、いくつかの実施形態では、TLB705a,705b,705c又は705dは、4キロバイトページを追跡し、CCD780は、1キロバイトページを追跡する。TLB705a,705b,705c又は705dのエントリがエビクトされることに応じて、TLB705a,705b,705c又は705dは、エビクトをCCD780に通知する。次に、コントローラ785は、ディレクトリ構造における対応するページを「デッド」としてマーク付けする。その後、コントローラ785がCCD780のディレクトリ構造からページをエビクトすると、コントローラ785は、デッドとマーク付けされた何れかのページを選択する。包括的なポリシー(プロセッサコア710a,710b,710c,710dのうち何れかによってキャッシュされたラインがCCD780によって追跡される必要があり、したがって、CCD780からエビクトされたページが、キャッシュ720a,720b,720c,720d,730a,730b,730c,730d,740の全てからエビクトされたその構成ラインを有する必要があることを意味する)を実装するCCD780の実施形態では、デッドページをエビクトすることは、CCD780の既存のメカニズムを自動的に起動して、プロセッサコア710a,710b,710c,710dの全てにおいてキャッシュ720a,720b,720c,720d,730a,730b,730c,730d,740の全ての対応するページから全てのキャッシュラインを無効化又はフラッシュする。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (20)

  1. プロセッサのトランスレーションルックアサイドバッファ(TLB)において、TLBエントリが前記TLBからエビクトされることに応じて、前記TLBエントリに対応するメモリページアドレスをキャッシュのキャッシュロジックに通信することと、
    前記プロセッサの性能特性を測定することと、
    測定された性能特性に基づいて、前記メモリページアドレスに対応する前記キャッシュの1つ以上のキャッシュラインを無効にすること、又は、前記1つ以上のキャッシュラインの保持優先度を下げることと、を含む、
    方法。
  2. 前記無効にすることは、
    前記メモリページアドレスに対応する1つ以上のキャッシュラインを識別するために、前記キャッシュをウォークすることと、
    前記キャッシュロジックにおいて、前記1つ以上のキャッシュラインの有効状態を無効状態に設定することと、
    無効状態を有する前記1つ以上のキャッシュラインに記憶されたデータをエビクトすることと、を含む、
    請求項1の方法。
  3. 前記ウォークすることは、
    前記TLBエントリに対応する前記メモリページアドレスに潜在的にマッピングするキャッシュラインを含む前記キャッシュのサブセットを識別することと、
    前記メモリページアドレスに対応する1つ以上のキャッシュラインを識別するために、前記キャッシュのサブセットをウォークすることと、を含む、
    請求項2の方法。
  4. 前記ウォークすることは、前記キャッシュロジックが他の要求を処理していないサイクルの間のみ、前記メモリページアドレスに対応する1つ以上のキャッシュラインを識別するために、前記キャッシュをウォークすることを含む、
    請求項2の方法。
  5. 前記1つ以上のキャッシュラインの保持優先度は、前記キャッシュに実装されたキャッシュ置換ポリシーに従って下げられる、
    請求項1の方法。
  6. 前記1つ以上のキャッシュラインを無効にすることは、前記キャッシュロジックにおいて、前記1つ以上のキャッシュラインの有効状態を無効状態に設定することを含む、
    請求項1の方法。
  7. 前記メモリページアドレスをバッファに記憶することと、
    キャッシュラインのセットにアクセスしたことに応じて、前記セットのキャッシュラインのアドレスを、前記バッファに記憶された前記メモリページアドレスと比較することと、を更に含み、
    前記1つ以上のキャッシュラインが無効にされるか、前記保持優先度が下げられることは、前記1つ以上のキャッシュラインが前記バッファに記憶された前記メモリページアドレスと一致することに基づいている、
    請求項1の方法。
  8. 前記通信することは、前記TLBエントリのエビクトの通知を前記プロセッサのコヒーレンスディレクトリに通信することを含み、
    前記無効にすることは、前記コヒーレンスディレクトリにおいて、前記メモリページアドレスに対応するページをデッドとしてマーク付けすることを含む、
    請求項1の方法。
  9. プロセッサのトランスレーションルックアサイドバッファ(TLB)からの仮想アドレスから物理アドレスへの変換を示すTLBエントリのエビクトに応じて、キャッシュに対して、前記TLBエントリの物理アドレス又は前記TLBエントリの仮想アドレスに対応するキャッシュラインのキャッシュ置換優先度を調整することであって、前記キャッシュ置換優先度を調整することは、前記キャッシュラインの1つ以上を有効状態に維持する、ことを含む、
    方法。
  10. 前記TLBエントリの前記物理アドレス又は前記TLBエントリの前記仮想アドレスに対応するキャッシュラインを識別するために、前記キャッシュをウォークすることを更に含み、
    前記調整することは、
    前記キャッシュラインの有効状態を無効状態に設定することと、
    無効状態を有する前記キャッシュラインに記憶されたデータ又は命令をエビクトすることと、を含む、
    請求項9の方法。
  11. 前記ウォークすることは、
    前記TLBエントリ前記物理アドレス又は前記TLBエントリの前記仮想アドレスに潜在的にマッピングするキャッシュラインのサブセットを識別することと、
    前記TLBエントリの前記物理アドレス又は前記TLBエントリの前記仮想アドレスに対応するキャッシュラインを識別するために、前記キャッシュラインのサブセットをウォークすることと、を含む、
    請求項10の方法。
  12. 前記ウォークすることは、前記キャッシュのキャッシュロジックが他の要求を処理していないサイクルの間のみ、前記TLBエントリの前記物理アドレス又は前記TLBエントリの前記仮想アドレスに対応するキャッシュラインを識別するために、前記キャッシュをウォークすることを含む、
    請求項10の方法。
  13. 前記調整することは、前記キャッシュに実装されたキャッシュ置換ポリシーに従って、前記キャッシュラインの保持優先度を下げることを含む、
    請求項9の方法。
  14. 前記プロセッサの性能特性を測定することを更に含み、
    前記調整することは、前記性能特性に基づいて、前記キャッシュラインの有効状態を無効状態に調整すること、又は、前記キャッシュに実装されたキャッシュ置換ポリシーに従って前記キャッシュラインの保持優先度を下げること、を選択的に行うことを含む、
    請求項9の方法。
  15. 前記TLBエントリの前記物理アドレス又は前記TLBエントリの前記仮想アドレスをバッファに記憶することと、
    キャッシュラインのセット内のキャッシュラインにアクセスしたことに応じて、前記セットのキャッシュラインのアドレスを、前記バッファに記憶された前記TLBエントリの前記物理アドレス又は前記TLBエントリの前記仮想アドレスと比較することと、を更に含み、
    前記調整することは、前記バッファに記憶された前記物理アドレス又は前記仮想アドレスに一致する前記セットのキャッシュラインの前記キャッシュ置換優先度を調整することを含む、
    請求項9の方法。
  16. トランスレーションルックアサイドバッファ(TLB)と、
    キャッシュと、
    前記TLBのエントリがエビクトされたという通信を前記TLBから受信したことに応じて、前記TLBの前記エントリの物理アドレス又は前記TLBの前記エントリの仮想アドレスに対応する前記キャッシュの1つ以上のキャッシュラインのキャッシュ置換優先度を調整することであって、前記キャッシュ置換優先度を調整することは、前記キャッシュラインの1つ以上を有効状態に維持する、ことを行うように構成されたキャッシュロジックと、を備える、
    プロセッサ。
  17. 前記キャッシュロジックは、前記キャッシュロジックが他の要求を処理していないサイクルの間にのみ前記キャッシュをウォークすることによって、前記TLBの前記エントリの前記物理アドレス又は前記TLBの前記エントリの前記仮想アドレスに対応するキャッシュラインを識別するように構成されている、
    請求項16のプロセッサ。
  18. 前記プロセッサの性能特性を測定するように構成された性能モニタを更に備え、
    前記キャッシュロジックは、前記性能特性に基づいて、前記1つ以上のキャッシュラインの有効状態を無効状態に調整すること、又は、前記キャッシュに実装されたキャッシュ置換ポリシーに従って前記1つ以上のキャッシュラインの保持優先度を下げること、を選択的に行うように構成されている、
    請求項16のプロセッサ。
  19. 前記TLBの前記エントリの前記物理アドレス又は前記TLBの前記エントリの前記仮想アドレスを記憶するように構成されたバッファを更に備え、
    前記キャッシュロジックは、キャッシュラインのセットにアクセスしたことに応じて、前記セットのキャッシュラインのアドレスを、前記バッファに記憶された前記TLBの前記エントリの前記物理アドレス又は前記TLBの前記エントリの前記仮想アドレスと比較し、前記バッファに記憶された前記TLBの前記エントリの前記物理アドレス又は前記TLBの前記エントリの前記仮想アドレスに一致する前記セットのキャッシュラインのキャッシュ置換優先度を調整するように構成されている、
    請求項16のプロセッサ。
  20. 前記キャッシュロジックは、前記TLBのエントリがエビクトされたという通信を前記TLBから受信したことに応じて、前記TLBの前記エントリの前記物理アドレス又は前記TLBの前記エントリの前記仮想アドレスに対応するページをデッドとしてマーク付けするように構成されたコヒーレンシディレクトリを備える、
    請求項16のプロセッサ。
JP2021538797A 2019-01-24 2020-01-16 トランスレーションルックアサイドバッファエビクションに基づくキャッシュ置換 Active JP7337173B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/256,634 2019-01-24
US16/256,634 US11106600B2 (en) 2019-01-24 2019-01-24 Cache replacement based on translation lookaside buffer evictions
PCT/US2020/013856 WO2020154166A1 (en) 2019-01-24 2020-01-16 Cache replacement based on translation lookaside buffer evictions

Publications (3)

Publication Number Publication Date
JP2022517318A JP2022517318A (ja) 2022-03-08
JPWO2020154166A5 JPWO2020154166A5 (ja) 2023-01-27
JP7337173B2 true JP7337173B2 (ja) 2023-09-01

Family

ID=71732624

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021538797A Active JP7337173B2 (ja) 2019-01-24 2020-01-16 トランスレーションルックアサイドバッファエビクションに基づくキャッシュ置換

Country Status (6)

Country Link
US (1) US11106600B2 (ja)
EP (1) EP3915019A4 (ja)
JP (1) JP7337173B2 (ja)
KR (1) KR102665339B1 (ja)
CN (1) CN113646750A (ja)
WO (1) WO2020154166A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
EP4130988A1 (en) 2019-03-15 2023-02-08 INTEL Corporation Systems and methods for cache optimization
EP3938890A1 (en) 2019-03-15 2022-01-19 Intel Corporation Architecture for block sparse operations on a systolic array
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
JP7107482B2 (ja) 2019-03-15 2022-07-27 インテル・コーポレーション ハイブリッド浮動小数点フォーマットのドット積累算命令を有するグラフィックスプロセッサ及びグラフィックス処理ユニット
CN112347134B (zh) * 2020-11-05 2023-05-30 平安科技(深圳)有限公司 Redis缓存管理的方法、装置、计算机设备及存储介质
US11467972B2 (en) * 2020-12-01 2022-10-11 Centaur Technology, Inc. L1D to L2 eviction
CN112965921B (zh) * 2021-02-07 2024-04-02 中国人民解放军军事科学院国防科技创新研究院 一种多任务gpu中tlb管理方法及系统
US20230012880A1 (en) * 2021-07-14 2023-01-19 Nuvia, Inc. Level-aware cache replacement
US11768778B2 (en) * 2021-09-30 2023-09-26 Advanced Micro Devices, Inc. Re-reference indicator for re-reference interval prediction cache replacement policy
WO2023168835A1 (en) * 2022-03-09 2023-09-14 Intel Corporation Improving spinlock performance with cache line demote in operating system kernel
CN117971719B (zh) * 2024-03-28 2024-06-28 北京微核芯科技有限公司 一种提前传递数据的方法及其装置
CN117971718B (zh) * 2024-03-28 2024-06-28 北京微核芯科技有限公司 一种多核处理器的缓存替换方法及其装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006038258A1 (ja) 2004-09-30 2006-04-13 Renesas Technology Corp. データプロセッサ
JP2009009571A (ja) 2007-06-28 2009-01-15 Internatl Business Mach Corp <Ibm> レベル2キャッシュ/ネスト・アドレスを変換する方法および装置
JP2010097558A (ja) 2008-10-20 2010-04-30 Toshiba Corp 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
WO2017218026A1 (en) 2016-06-13 2017-12-21 Advanced Micro Devices, Inc. Scaled set dueling for cache replacement policies

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03232034A (ja) * 1990-02-08 1991-10-16 Oki Electric Ind Co Ltd キャッシュ制御装置
US5930832A (en) * 1996-06-07 1999-07-27 International Business Machines Corporation Apparatus to guarantee TLB inclusion for store operations
US8195886B2 (en) 2007-03-16 2012-06-05 Arm Limited Data processing apparatus and method for implementing a replacement scheme for entries of a storage unit
US7921276B2 (en) * 2007-03-21 2011-04-05 Intel Corporation Applying quality of service (QoS) to a translation lookaside buffer (TLB)
US20090006803A1 (en) 2007-06-28 2009-01-01 David Arnold Luick L2 Cache/Nest Address Translation
US8782374B2 (en) 2008-12-02 2014-07-15 Intel Corporation Method and apparatus for inclusion of TLB entries in a micro-op cache of a processor
US20120137079A1 (en) 2010-11-26 2012-05-31 International Business Machines Corporation Cache coherency control method, system, and program
US9740623B2 (en) 2013-03-15 2017-08-22 Intel Corporation Object liveness tracking for use in processing device cache
CN104239237B (zh) * 2013-06-20 2017-07-14 华为技术有限公司 一种tlb管理方法及装置
US20180089094A1 (en) * 2016-09-23 2018-03-29 Qualcomm Incorporated Precise invalidation of virtually tagged caches
US10318436B2 (en) * 2017-07-25 2019-06-11 Qualcomm Incorporated Precise invalidation of virtually tagged caches

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006038258A1 (ja) 2004-09-30 2006-04-13 Renesas Technology Corp. データプロセッサ
JP2009009571A (ja) 2007-06-28 2009-01-15 Internatl Business Mach Corp <Ibm> レベル2キャッシュ/ネスト・アドレスを変換する方法および装置
JP2010097558A (ja) 2008-10-20 2010-04-30 Toshiba Corp 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
WO2017218026A1 (en) 2016-06-13 2017-12-21 Advanced Micro Devices, Inc. Scaled set dueling for cache replacement policies

Also Published As

Publication number Publication date
US20200242049A1 (en) 2020-07-30
EP3915019A1 (en) 2021-12-01
KR102665339B1 (ko) 2024-05-16
WO2020154166A1 (en) 2020-07-30
CN113646750A (zh) 2021-11-12
EP3915019A4 (en) 2022-10-26
US11106600B2 (en) 2021-08-31
KR20210108492A (ko) 2021-09-02
JP2022517318A (ja) 2022-03-08

Similar Documents

Publication Publication Date Title
JP7337173B2 (ja) トランスレーションルックアサイドバッファエビクションに基づくキャッシュ置換
KR102273622B1 (ko) 거대한 페이지들을 지원하는 메모리 관리
EP3427154B1 (en) Self-healing coarse-grained snoop filter
KR102407782B1 (ko) 변환 색인 버퍼의 엔트리들에 대한 리스의 적응 확장
US10725923B1 (en) Cache access detection and prediction
US11507519B2 (en) Data compression and encryption based on translation lookaside buffer evictions
US9378153B2 (en) Early write-back of modified data in a cache memory
US8700863B2 (en) Computer system having a cache memory and control method of the same
US20110161597A1 (en) Combined Memory Including a Logical Partition in a Storage Memory Accessed Through an IO Controller
US11392508B2 (en) Lightweight address translation for page migration and duplication
US20160140042A1 (en) Instruction cache translation management
CN109154912B (zh) 根据另一个高速缓存中条目的可用性替换高速缓存条目
US7197605B2 (en) Allocating cache lines
US10877890B2 (en) Providing dead-block prediction for determining whether to cache data in cache devices
US10282295B1 (en) Reducing cache footprint in cache coherence directory
US8473686B2 (en) Computer cache system with stratified replacement
EP3850490B1 (en) Accelerating accesses to private regions in a region-based cache directory scheme
US9442856B2 (en) Data processing apparatus and method for handling performance of a cache maintenance operation
US8176254B2 (en) Specifying an access hint for prefetching limited use data in a cache hierarchy
Vasudevan No inclusion in multi level caches

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210902

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230116

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230116

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20230116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230509

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230822

R150 Certificate of patent or registration of utility model

Ref document number: 7337173

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150