JP2019527900A - より汎用性の高いキャッシュエントリの持続性を高めるための最長未使用時間データの更新 - Google Patents

より汎用性の高いキャッシュエントリの持続性を高めるための最長未使用時間データの更新 Download PDF

Info

Publication number
JP2019527900A
JP2019527900A JP2019507750A JP2019507750A JP2019527900A JP 2019527900 A JP2019527900 A JP 2019527900A JP 2019507750 A JP2019507750 A JP 2019507750A JP 2019507750 A JP2019507750 A JP 2019507750A JP 2019527900 A JP2019527900 A JP 2019527900A
Authority
JP
Japan
Prior art keywords
cache
entry
way
replacement policy
policy data
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
JP2019507750A
Other languages
English (en)
Other versions
JP7249272B2 (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 JP2019527900A publication Critical patent/JP2019527900A/ja
Application granted granted Critical
Publication of JP7249272B2 publication Critical patent/JP7249272B2/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/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
    • 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
    • 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/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • G06F12/124Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU
    • 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/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • 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/684TLB miss handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

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

変換索引バッファ(TLB)動作を向上させる技術が開示される。TLBの特定のエントリは、大きいページサイズに関連付けられたデータで更新される。TLBは、大きいページサイズのTLBエントリが最長未使用時間のエントリではないことを示すように、大きいページサイズのTLBエントリの置換ポリシーデータを更新する。小さいページが大きいページサイズのTLBエントリをエビクトするのを抑制するために、TLBは、TLBエントリが最長未使用時間のエントリではないことを示すように、小さいページサイズのTLBエントリの置換ポリシーデータも更新する。【選択図】図4

Description

(関連出願の相互参照)
本願は、2016年8月12日に出願された米国特許出願第15/235,214の利益を主張し、その内容は、完全に記載されているかのように、参照により本明細書に組み込まれるものとする。
変換索引バッファ(TLB)は、メモリシステムのアドレスを指定する際に使用される仮想アドレスから物理アドレスへの変換を記憶するキャッシュである。TLBは、仮想アドレスを使用してメモリを参照する動作が多いので、コンピュータ動作を高速化することができる。TLBが無いと、このような動作は、変換を取得するためにメインシステムメモリにアクセスする必要があるので、長いレイテンシが発生する。したがって、TLB動作を改善すると、コンピュータの動作速度を向上させることができる。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解が得られるであろう。
1つ以上の開示された実施形態を実施することができる例示的なデバイスのブロック図である。 一実施例による、プロセッサ−メモリインタフェースシステムのブロック図である。 一実施例による、変換索引バッファのブロック図である。 一実施例による、キャッシュミスの場合に最長未使用時間(least-recently-used)データを変更する動作を示すブロック図である。 一実施例による、変換索引バッファの最長未使用時間データを更新する方法のフロー図である。
本開示は、変換索引バッファ(TLB)の動作を向上させる技術に関する。TLBの特定のエントリが、大きいページサイズに関連付けられたデータを用いて更新される場合、TLBは、当該TLBエントリが最長未使用時間のエントリではないことを示すために、当該大きいページサイズの当該TLBエントリの置換ポリシーデータ(最長未使用時間(LRU)データ等)を更新する。小さいページから大きいページサイズのTLBエントリがエビクトされるのを抑制するために、TLBは、TLBエントリが最長未使用時間のエントリではないことを示すように、小さいページサイズのTLBエントリの置換ポリシーデータも更新する。
変更されたTLBエントリがこれらのページサイズの最長未使用時間のエントリではないことを示すために、小さいページサイズのLRUデータを調整することは、小さいメモリページのTLBエントリが、大きいページサイズのTLBエントリをエビクトすることを抑制するのに役立つ。したがって、大きいページの変換は、小さいページの変換よりも「持続的」である。大きいページの変換は、システムメモリの大部分を使用可能にする。したがって、大きいページの変換の持続性を高めることで、TLGがシステムメモリの大部分をいつでも利用できるようになるので、TLBで発生するミスの量が少なくなり、ページテーブルから変換を取得するのにかかる全体のレイテンシが短縮される。これにより、TLBの全体的な速度及びパフォーマンスと、概して仮想アドレスを用いたメモリ動作の全体的な速度及びパフォーマンスと、が向上する。
図1は、本開示の態様が実施される例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含む。デバイス100は、プロセッサ102と、メモリ104と、ストレージデバイス106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、入力ドライバ112及び出力ドライバ114をオプションで含むことができる。デバイス100は、図1に示されていない追加のコンポーネントを含んでもよいことを理解されたい。
プロセッサ102は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアはCPU又はGPUである。メモリ104は、プロセッサ102と同じダイ上に配置されてもよいし、プロセッサ102とは別に配置されてもよい。メモリ104は、例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM若しくはキャッシュ等の揮発性又は不揮発性メモリを含む。
ストレージデバイス106は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等の固定又は取り外し可能なストレージデバイスを含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/若しくは受信するための無線ローカルエリアネットワークカード)を含む。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバック装置、1つ以上のライト、アンテナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/若しくは受信するための無線ローカルエリアネットワークカード)を含む。
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションのコンポーネントであり、デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合であっても同様に動作することに留意されたい。
図2は、一実施例による、プロセッサ−メモリインタフェースシステム200の態様を示すブロック図である。図示するように、プロセッサ−メモリインタフェースシステム200は、図1のプロセッサ102と、図1のメモリ104と、を含む。
プロセッサ102は、データを処理するための命令を実行するコア202を含む。また、プロセッサ102は、変換索引バッファ(TLB)206に接続されたメモリ管理ユニット(MMU)204を含む。プロセッサ102によって実行される命令は、物理アドレス(通常、オペレーティングシステムの動作に関連する)又は仮想アドレス(通常、ユーザモードのアプリケーションに関連する)を介してメモリを参照することができる。アプリケーションに対して仮想アドレス空間を使用することによって、これらのアプリケーションを隔離することができ、これらのアプリケーションが、他のアプリケーション又はオペレーティングシステムに関連するメモリに書き込みを行って、他のアプリケーションの動作又はオペレーティングシステムに誤って干渉することが抑制される。
プロセッサ102は、仮想アドレスを介したメモリ104のアクセスを容易にするために、MMU204を含む。MMU204は、コア202から受信した仮想アドレスを物理アドレスに変換し、これらの物理アドレスを介してメモリ104にアクセスする。仮想アドレスがどのように物理アドレスに変換されるかを示すデータは、メモリ104内のページテーブル208に記憶される。アドレスは、バイト又はワードに変換されない代わりに、ページ番号に変換される。より具体的には、ページテーブル208は、単一ページを表すのに十分な数のアドレスの最上位ビットを含む仮想ページ番号を、物理ページ番号に変換する。アドレスの最下位ビットは変換されず、物理アドレス及び仮想アドレスの両方で同じである。
TLB206は、ページテーブル208のキャッシュとして機能する。TLB206が無いと、あらゆる仮想メモリアドレスルックアップがシステムメモリ104へのアクセスを必要とするため、メモリアクセスのレイテンシが増大する。TLB206によって提供されるキャッシングは、このレイテンシを短縮するのに役立つ。しかしながら、TLB206は、通常、ページテーブル208内の全ての変換の完全なコピーを含まない。コア202は、動作中、メモリアクセス命令を実行することの一環として、MMU204に対して仮想メモリアドレスの変換を要求する。これに応じて、MMU204は、変換のためにTLB206を検索する。キャッシュヒットの場合(TLB206が変換を含むことを意味する)、MMU204は、この変換から物理アドレスを取得し、取得した物理アドレスを用いて、メモリアクセス要求をメモリ104に送信する。キャッシュミスの場合(TLB206が変換を含まないことを意味する)、MMU204は、ページテーブルウォークを実行して、必要な変換についてページテーブル208を検索する。次に、MMU204は、この変換をTLB206に配置し、TLB206に十分なスペースが存在しない場合には、別のエントリをエビクトする。MMU204は、最近得られた変換に基づいてメモリアクセスを実行する。
アドレス変換における難しさを示す1つの態様は、異なるページサイズの可能性である。より具体的には、異なるサイズのメモリページをメモリ104に記憶させるという選択肢は、異なるサイズのページの変換を、どのようにTLB206にキャッシュするかという課題を提起する。
図3は、一実施例による、変換索引バッファ(TLB)300のブロック図である。図示するように、TLB300は、異なるページサイズのページの変換を記憶するページテーブル208のキャッシュとして高性能用途に適合されたスキュード(skewed)アソシアティブキャッシュとして実装される。図3に示す例示的なTLB300は、4つのウェイ304の7つのセットと、7行の最長未使用時間(LRU)データと、LRUデータの行毎に4つのLRUエントリと、を含む。例示的なアドレス302が示されている。例示的なTLB300は、図2に示すTLB206の一例である。例示的な仮想アドレス302は、インデックス314と、タグ310と、選択ビット312と、を含み、特定のページサイズ308に関連付けられている。ページサイズ308は、仮想アドレス302にデータを記憶するメモリページのサイズを示す。
スキュードアソシアティブキャッシュは、セットアソシアティブキャッシュの変形であり、キャッシュミスの可能性を低減することができる。キャッシュは、ルックアップに応じてペイロードデータを提供する。様々なタイプのキャッシュ(セットアソシアティブキャッシュを含む)では、アドレスのキャッシュインデックス部分を使用して、当該インデックスを有するアドレスのデータを記憶することができるキャッシュ内のエントリを識別する。ダイレクトマッピングキャッシュでは、キャッシュインデックスは、キャッシュ内の単一のエントリを一意に識別する。したがって、ダイレクトマッピングキャッシュでは、特定のアドレスのエントリを、単一のキャッシュエントリにしか記憶することができない。フルアソシアティブキャッシュでは、全てのアドレスを任意のキャッシュエントリに記憶することができる。セットアソシアティブキャッシュでは、特定のキャッシュインデックス値をキャッシュ内のエントリ数nにマッピングすることができる。ここで、nは、1より大きく、キャッシュサイズより小さい(n=1のキャッシュは、ダイレクトマッピングキャッシュであり、n=キャッシュサイズのキャッシュは、フルアソシアティブキャッシュである)。セットアソシアティブキャッシュでは、キャッシュインデックスは、特定のセットにマッピングされ、各セットは、複数のキャッシュエントリを含む。また、キャッシュ全体は、n個の「バンク」(「ウェイ」とも呼ばれる)に分割される。セットアソシアティブキャッシュ内の特定のキャッシュエントリは、セット番号とバンク(ウェイ)番号との特定の組み合わせによって識別される。
スキュードアソシアティブキャッシュは、セットアソシアティブキャッシュの変形であり、セットの選択はウェイによって異なる。TLB300は、スキュードアソシアティブキャッシュとして実装される。したがって、TLB300では、任意の特定のアドレスを異なるウェイの異なるセットにマッピングすることができる。
さらに、スキュードアソシアティブなTLB300は、異なるサイズのページの変換に対応する。より具体的には、あらゆるウェイ304内のあらゆるエントリが、あらゆる可能なページサイズの変換を記憶することができる。各仮想アドレスは、各ウェイ304において、可能性のある一意のマッピング位置を有する。しかしながら、アドレスとページサイズとのあらゆる組み合わせを、あらゆるウェイ304に記憶することはできない。特定のアドレスを記憶することができるウェイ304は、ページサイズ関数により特定される。ページサイズ関数は、次のように定義される。TLB300の所定のウェイI及び所定の仮想アドレスAについて、仮想ページのサイズが、ページサイズ関数であるS(A、I)である場合にのみ、仮想アドレスAを含むページP(A)をウェイIにマッピングすることができる。換言すると、ページサイズ関数は、仮想アドレスとページサイズとの組み合わせ毎に、当該仮想アドレスが何れのウェイにマッピング可能であるかを示している。ページサイズ関数は、仮想アドレス302の選択ビット312に基づいて結果を生成する。技術的に実現可能なページサイズ関数の任意の実装を使用することができる。
ページサイズ関数の機能は、選択関数Sel(A)によって表すこともできる。選択関数は、所定のアドレスに対して単一の数値を生成する。選択関数によって生成された数値は、何れのページサイズが何れのウェイにマッピングされているかを示す。図3のTLB300の例では、TLB300は、4つのウェイを含む。2つのウェイ(ウェイ0及びウェイ1)は、第1グループ316(1)にまとめられ、他の2つのウェイ(ウェイ2及びウェイ3)は、第2グループ316(2)にまとめられている。さらに、TLB300は、2つの異なるサイズのページの変換を記憶するように構成されている。選択関数の値が0である場合、第1ウェイグループ316(1)が第1サイズのページを記憶し、第2ウェイグループ316(2)が第2サイズのページを記憶することを示している。選択関数の値が1である場合、第1ウェイグループ316(1)が第2サイズのページを記憶し、第2ウェイグループ316(2)が第1サイズのページを記憶することを示している。一手法では、ページサイズ関数(したがって、選択関数)は、図3に示すように、仮想アドレス302のマッピングビットに基づいている。1つの例示的な選択関数では、異なる選択ビット312が異なる選択値に割り当てられている。一例では、アドレスは、3つの選択ビット312を有する。値000、001、010、011が選択値0に割り当てられている。値100、101、110、111が選択値1に割り当てられている。他の技術的に実現可能な選択関数(又は、ページサイズ関数)を使用してもよい。
特定のアドレス及びページサイズに適したセットは、インデックス化関数(indexing function)に基づいて特定される。より具体的には、インデックス化関数は、アドレスと、ページサイズと、ページサイズ関数の出力と、を入力として受信し、アドレスとページサイズとの組み合わせを記憶することができるウェイ毎に、特定のセットを出力する。図3の例では、インデックス化関数は、仮想アドレス302のインデックス部分314と、ページサイズ308と、選択関数の出力(仮想アドレス302の選択ビット312に基づいている)と、を入力として受信し、アドレスを記憶することができるウェイの各々に対してセット番号を出力する。一例では、インデックス化関数は、ウェイのグループ316内のセット毎に同じセットを出力する(上述したように、ウェイのグループ316は、ページ選択の目的で共にグループ化されたウェイ304を含む)。
上述したように、MMU204は、TLB300を用いて、仮想アドレス302及びページサイズに基づいてTLB300をインデックス化することによって、仮想アドレス302を物理アドレスに変換する。TLB300のスキュードアソシアティブ性のために、TLB300は、特定の仮想アドレス及びページサイズの組み合わせに対して、仮想アドレス/ページサイズの組み合わせを記憶することができる複数のウェイを含む。したがって、MMU204は、仮想アドレス302の変換を試みるために、インデックス化関数に基づいてセットを識別し、ページサイズ関数に基づいて複数の可能なウェイを識別する。MMU204は、アドレス302のタグ部分310を、識別したセット及びウェイ内の1つのエントリのタグ310と一致させることを試みる。タグ310が1つのエントリにおいて一致する場合にはヒットが発生し、タグ310が一致しない場合にはミスが発生する。
ミスの場合、MMU204は、仮想アドレス302に関連する変換をページテーブル208に要求し、受信した変換をTLB300の1つのTLBエントリ301に配置する。MMU204は、アドレス302、ページサイズ308及び最長未使用時間(LRU)データ306を調べる置換ポリシーに基づいて、何れのTLBエントリ301に変換を配置するかを決定する。
特定のアドレス及びページサイズの組み合わせに対して、当該アドレスのエントリを複数のウェイ304に記憶することができる。MMU204は、フェッチされた変換を記憶するウェイ304を決定するために、LRUデータ306を調べる。LRUデータ306は、選択値/ページサイズの組み合わせ毎にLRUエントリ308を含む。図3の例示的なTLB300では、選択値0/サイズ1の組み合わせに対して1つのLRUエントリ308が存在し、選択値0/サイズ2の組み合わせに対して1つのLRUエントリ308が存在し、選択値1/サイズ1の組み合わせに対して1つのLRUエントリ308が存在し、選択値1/サイズ2の組み合わせに対して1つのLRUエントリ308が存在する。より多くのページサイズを有するTLBでは、追加のLRUエントリを含む。
各LRUエントリ308は、選択値/ページサイズの組み合わせに対して、特定の選択値/ページサイズの組み合わせの変換を記憶することができるウェイのうち何れのウェイ304が最長未使用時間のウェイであるとみなされるかを示す。例えば、選択値0及びサイズ1のページサイズ(及びセット1)に関して、LRUエントリ308(1)は、ウェイ0又はウェイ1の何れが、最長未使用時間のエントリ301とみなされるエントリ301を記憶しているかを示す。同様に、選択値1及びサイズ2のページサイズに関して、LRUエントリ308(4)は、ウェイ0又はウェイ1の何れが、最長未使用時間のエントリ301とみなされるエントリ301を記憶しているかを示す。
上記は、任意の特定のウェイグループ316に関して、インデックス化関数が、任意の特定のアドレスを、当該ウェイグループ316と同じセットにマッピングすることを想定していることに留意されたい。「ウェイグループ」316という用語は、任意の特定の仮想アドレスが同じセットにマッピングされるウェイ304の集合を指す。図3では、2つのウェイグループ316が存在する。第1ウェイグループ316は、ウェイ0及びウェイ1を含み、第2ウェイグループ316は、ウェイ2及びウェイ3を含む。
「ウェイグループ」316の概念は、LRUデータが選択値/ページサイズ毎に記憶されることを可能にする。より具体的には、MMU204が特定のアドレス/ページサイズの組み合わせを何れのウェイグループ316にマッピングすることができるかを決定すると、この概念により、異なるウェイ間で有意義な比較を行うことができる。一例では、特定のアドレス/ページサイズの組み合わせがウェイ0及びウェイ1から構成されたウェイグループ316に属するとMMU204が決定すると、ウェイ304をグループ化することは、対応するLRUエントリ308が、MMU204に対して、ウェイグループ316内のウェイのうち1つのウェイを最長未使用時間のウェイとして識別させるのを可能にすることを意味する。
置換アルゴリズムの一例では、各ウェイグループ316は2つのウェイ304を含む。LRUデータ306は、セット毎に1つのLRUエントリ308と、選択関数値と、ページサイズと、の組み合わせを含む。各LRUエントリ308は1ビットである。このビットは、特定のページサイズについて、特定のウェイグループ316内の2つのウェイのうち何れのウェイが最長未使用時間のTLBエントリを記憶し、これにより、MMU204が新たにフェッチした変換をTLBに書き込む場合に何れが置き換えられるのかを示す。一例では、第1セットと、第1ウェイグループ316(ウェイ0及びウェイ1)と、第1ページサイズと、に関連付けられたエントリは、ウェイ0が最長未使用時間のTLBエントリを記憶することを示す。同じセット及びウェイグループ316(ウェイ0及びウェイ1)と、第2ページサイズと、に関連付けられたエントリは、ウェイ1が最長未使用時間のTLBエントリを記憶することを示す。これらの特定の値は、変換されるアドレスが第1ページサイズ又は第2ページサイズのメモリページ内に存在するか否かに応じて、ウェイグループ316内で異なる置換が行われることを意味する。
本明細書では、特定のLRU置換ポリシーが説明されているが、他の置換ポリシーも可能である。例えば、擬似LRU(PLRU)、ツリー(tree)pLRU等を用いる置換アルゴリズムを使用することができる。さらに、置換アルゴリズムは、ウェイグループ316が3つ以上のウェイ304を含むシナリオで使用されてもよい。このようなシナリオでは、各LRUデータエントリは、複数のビットを記憶することができる。
大きいページ及び小さいページの両方を任意の特定のウェイ304に記憶することができるということは、小さいページが大きいページを置き換えることができることを意味する。さらに、LRUデータがページサイズ毎に記憶されるということは、1つのページサイズの置換データが、特定のTLBエントリが置き換えられることを示し、別のページサイズの置換データが、異なるTLBエントリが置き換えられることを示すことを意味する。この可能性は、小さいページの変換による大きいページの変換のエビクトの発生が有利ではない状況において、かかるエビクトが可能であることを意味する。
一例では、MMU204は、小さいページサイズのTLBエントリをセット1のウェイ0に書き込み、小さいページのセット1ではウェイ0及びウェイ1のうちウェイ1が最長未使用時間のウェイであることを示すように、対応するLRUエントリを更新する。次に、MMU204は、大きいページサイズのTLBエントリをセット1のウェイ1に書き込み、大きいページのセット1では、ウェイ0及びウェイ1のうちウェイ0が最長未使用時間のウェイであることを示すように、対応するLRUエントリを更新する。次いで、MMU204は、小さいページサイズのTLBエントリをセット1に書き込む。MMU204は、LRUデータに基づいて、セット1では、小さいページに関して、ウェイ0及びウェイ1のうちウェイ1が最長未使用時間のウェイであると判別する。したがって、MMU204は、小さいページサイズのTLBエントリをセット1のウェイ1に書き込む。しかしながら、この動作により、セット1のウェイ1に記憶された大きいページの新たに追加されたTLBエントリがエビクトされることになる。
事実上、小さいページの新たな変換は、大きいページの新たな変換をエビクトした。大きいページの変換は、小さいページの変換よりも優先されるべきであるため、この動作は望ましくない。より具体的には、大きいページの変換は、小さいページの変換よりも多くのシステムメモリをカバーするため、小さいページの変換を追加するために大きいページの変換をエビクトすることは、TLBが処理可能なシステムメモリが減少して、TLBにおいてミスが発生する可能性が増大するという影響がある。小さいページの変換をTLBに書き込む場合、この変換を何処かに記憶する必要がある。しかしながら、この変換を、大きいページサイズの最長未使用時間エントリではないTLBエントリに記憶することによって、大きいページサイズの最長未使用時間エントリよりも(少なくとも最長未使用時間の置換セマンティクスの観点から)関連性が高いとみなされる大きいページサイズの変換がエビクトされる。これらの理由により、追加の置換アルゴリズム技術が以下に提供される。
図4は、一実施例による、キャッシュミスの場合にLRUデータを変更する動作を示すブロック図である。図示するように、図4は、第1動作400と、第2動作410と、第3動作420と、第4動作430と、を示す。
第1動作、第2動作、第3動作及び第4動作は、大きいページの変換が、小さいページの変換よりもLRU内でより持続的になることを可能にする方法でLRUデータを変更する技術を示す。全般的に、これらの動作は、大きいサイズのページのLRUデータが更新される場合に、小さいサイズのページのLRUデータを更新することを含む。より具体的には、MMU204は、大きいページの変換がTLBに配置されるべきであると決定すると、当該大きいページのLRUデータエントリ308と、対応する小さいページのLRUデータエントリ308との両方を更新する。より具体的には、大きいサイズのページ内のアドレスに対するキャッシュミスを検出すると、MMU204は、当該大きいページの変換を配置すべき特定のTLBエントリを識別する。このTLBエントリは、特定のセット及びウェイによって定義されることに留意されたい。MMU204は、変換をそのTLBエントリに配置し、最近更新したTLBエントリが最長未使用時間データを含まないことを示すように、対応するLRUデータを更新する。この更新されたLRUデータは、選択値、セット及びページサイズによって定義される。さらに、MMU204は、(セット及び選択値によって定義される)同じTLBエントリが最長未使用時間のエントリではないことを示すように、当該同じTLBエントリ及び小さいページサイズのLRUデータを更新する。小さいページサイズに対するこの追加の更新は、小さいページサイズの同じウェイグループ316へのその後の更新が、最近追加された大きいページサイズの変換をエビクトするのを抑制するという効果を有する。
実際には、この追加の更新動作によって、大きいページサイズの変換が、この追加の更新動作が行われなかった場合よりも持続性が高くなる。大きいページの変換は、システムメモリの大部分を利用する。したがって、大きいページの変換の持続性を高めることは、システムメモリの大部分でTLB300をいつでも利用することを可能にし、これにより、TLB300で発生するミスの数を減らし、ページテーブル208から変換を取得するのにかかる全体のレイテンシを短縮し、TLB300の全体的な速度及びパフォーマンスと、概して仮想アドレスを用いたメモリ動作の全体的な速度及びパフォーマンスとを向上させる。
図4に示す動作は、上記の技術の一例である。図4の各動作は、TLBのいくつかのセットと、2つのウェイグループ316にグループ化された4つのウェイ(0、1及び2、3)と、第1セットのLRUデータと、を示す。各セットが対応するLRUデータを有することを理解されたいが、簡単にするために、LRUデータは、第1セット以外の何れのセットにも示されていない。
第1動作400において、MMU204は、ページサイズ4Kのページ内のアドレスの変換を既に処理し始めている(この例では、4Kが小さいページサイズであり、2MBが大きいページサイズである)。また、MMU204は、TLB内でミスが発生したと判別し、ページテーブル208から変換を受信し、アドレスに基づいて選択値を0として計算し、選択値0及びページサイズ4Kに一致するウェイを識別し、アドレス及びページサイズ関数に基づいてセット(図の最上部のセット)を識別している。さらに、MMU204は、新たに受信した変換を記憶するためのウェイグループ316(0及び1を含む)を識別し、LRUデータ306に基づいて、変換を記憶するための1つのウェイを識別している。識別されたウェイは、ウェイ0である。したがって、MMU204は、新たに受信した変換を、セット1及びウェイ0で見つけられたTLBエントリ(すなわち、数字「1」で示されたTLBエントリ)に記憶すべきであると決定する。この決定に応じて、MMU204は、LRUデータ306を更新する。具体的には、MMU204は、最長未使用時間のTLBエントリがTLBエントリ2であることを示すように、選択値0、ページサイズ4K及びセット1のLRUデータエントリ308を更新する。MMU204は、4Kが最小のページサイズであるため、他のLRUデータを更新しない。
第2動作、すなわち動作410は、選択値が1であることを除いて、動作400と同様である。ページサイズは、依然として4Kである。選択値が1であるため、フェッチされた変換は、ウェイ0及びウェイ1の何れかのTLBエントリではなく、ウェイ2及びウェイ3の何れかのTLBエントリ(具体的には、ウェイ2のTLBエントリ3)を置き換える。動作400のように、MMU204は、ページサイズが4Kであるため、他のLRUデータを更新しない。
第3動作、すなわち動作420は、変換のアドレスが、大きいサイズ(2MB)のページ内のアドレスである場合の動作である。TLBでミスが発生すると、MMU204は、ページテーブル208から変換を取得する。MMU204は、このアドレスを処理して、選択値が0であると判別する。MMU204は、LRUデータ306を調べて、最近受信した変換を記憶するTLBエントリが、3と示されたTLBエントリであると判別する。MMU204は、ページテーブル208から取得した変換を記憶するTLBエントリを判別した後に、選択値とページサイズとの組み合わせのLRUデータ306を更新する。より具体的には、MMU204は、4と示されたTLBエントリが最長未使用時間のエントリであること(エントリ3が書き込まれたばかりであるため)を示すように、選択値0及びページサイズ2Mに対応するLRUデータエントリ308を更新する。さらに、フェッチされたアドレスは、大きいページサイズを有するメモリページ内のアドレスに対するものであるため、MMU204は、同じウェイグループ316に対応するが、小さいページサイズのLRUデータエントリ308を更新する。このLRUデータエントリは、選択値1及びページサイズ4Kのデータエントリである。MMU204は、TLBエントリ4が最長未使用時間のエントリであることも示すように、このLRUデータエントリを更新する。小さいサイズのページのLRUデータエントリを更新することは、ウェイの同じセットのTLBミスによって、書き込まれたばかりの大きいページサイズのTLBエントリがエビクトされるのを抑制することに役立つ。
第4動作430は、第4動作のアドレスが選択値0ではなく選択値1と評価したことを除いて、第3動作420と同様である。したがって、MMU204は、選択値0/2MB及び選択値1/4Kを更新するのではなく、選択値0/4K及び選択値1/2MBを更新する。
インデックス化関数は、単純化のためだけに、各動作において1を設定するように評価するものとして示されている。インデックス化関数は、何れのセットに対しても評価することができる。図3及び図4では、2つのウェイグループと、グループ毎に2つのウェイと、2つのページサイズと、のみが示されているが、本明細書で説明する技術は、異なる数のウェイグループと、異なる数のグループ毎のウェイと、異なる数のページサイズと、を有するTLBに適用することができる。より多くのページサイズの場合、各サイズは、関連するウェイグループを有する。対応するTLBエントリの変換をフェッチすることによってMMU204が特定のページサイズのLRUデータを更新する場合には、MMU204は、新たに取得された変換を受信したTLBエントリが最長未使用時間のエントリではないことを示すように、小さいページサイズ毎のLRUデータも更新する。
図5は、一実施例による、変換索引バッファの最長未使用時間データを更新する方法500のフロー図である。図1〜図4に関連して示され説明されたシステムについて説明が行われたが、技術的に実行可能な順序で方法を実行するように構成された任意のシステムも本開示の範囲内にあることを理解されたい。
図示するように、方法500は、ステップ502から開始し、ステップ502において、MMU204は、仮想アドレスから物理アドレスへの変換がTLB300内に存在しないことに起因するTLB300内のミスを検出する。MMU204は、ページテーブル208から要求された変換をフェッチする。ステップ504において、MMU204は、変換された仮想アドレスのページサイズを判別する。特定のアドレスのページサイズ情報は、ページテーブル208、又は、構成レジスタ(x86アーキテクチャに存在するメモリタイプ範囲レジスタ等が挙げられるが、これに限定されない)のセットから取得することができる。また、MMU204は、ページサイズ関数及びアドレスに基づいて選択値を計算する。選択値は、何れのウェイグループ316が何れのページサイズに割り当てられているかを示す。
ステップ506において、MMU204は、ページサイズ、選択値、アドレス及びLRUデータに基づいて、アドレス変換を記憶するためのTLB内のセット及びウェイを識別する。より具体的には、MMU204は、ページサイズ関数及びページサイズに基づいて、変換を記憶することができる可能性のあるウェイを識別し、識別したウェイについてインデックス化関数に基づいてインデックス化の結果を計算して、変換を配置可能なセットを決定し、LRUデータに基づいて、識別したセット内で変換を記憶する特定のウェイを識別する。例えば、LRUデータが、識別したウェイ及び識別したセットの特定のTLBエントリが最長未使用時間のウェイであることを示す場合、MMU204は、当該TLBエントリを、新たに取得した変換を配置するエントリとして識別する。
ステップ508において、MMU204は、変換を、識別したセット及びウェイに記憶し、識別したセット、選択値及びページサイズのLRUデータを更新する。上述したように、LRUデータは、セット毎に、また、選択値及びページサイズの組み合わせ毎に存在する。LRUデータは、識別したセット内及び適切なウェイグループ316(選択値及びページサイズに基づいて識別されたウェイグループ316)内で何れのTLBエントリが最長未使用時間データを記憶しているかを示す。MMU204は、更新されたTLBエントリ以外の、適切なウェイグループ316内及び識別したセット内のTLBエントリが最長未使用時間データを記憶していることを示すように、セット/選択値/ページサイズのLRUデータを更新する。一例では、各ウェイグループ316は、2つのウェイを含む。ステップ508において、1つのウェイのエントリが更新されると、MMU204は、そのウェイグループ316内の別のウェイが最長未使用時間のウェイであることを示すように、LRUデータを更新する。別の例では、各ウェイグループ316は、3つ以上のウェイを含む。このような場合には、MMU204は、更新されたTLBエントリと同じセット及びウェイグループ316内の他のTLBエントリが、更新されたTLBエントリよりも最長未使用時間のデータを含むことを示すように、LRUデータを更新する。
ステップ510において、MMU204は、特定のセット/選択値/ページサイズの組み合わせのLRUデータの更新に応じて、同じセットではあるが、異なるページサイズ/選択値の組み合わせのLRUデータを更新する。より具体的には、MMU204は、更新されたLRUデータと同じセットのLRUデータであって、ステップ508でLRUデータが更新されたウェイグループ316と一致する各ページサイズ/選択値の組み合わせに関するLRUデータを更新する。MMU204は、このようなLRUデータを更新して、ステップ508でTLBエントリが変更されたページサイズよりも小さいページサイズ毎に、ステップ508で更新されたTLBエントリが最長未使用時間のTLBエントリではないことを示す。このような小さいページサイズのLRUデータを更新することは、大きいページサイズのTLBエントリが、小さいページのTLBエントリよりも持続的になることを容易にする。
本明細書で説明する技術は、TLBの動作を向上させる。より具体的には、変更されたTLBエントリが小さいページサイズの最長未使用時間のエントリではないことを示すために、小さいページサイズのLRUデータを調整することは、小さいメモリページのTLBエントリが、大きいメモリページのTLBエントリをエビクトすることを抑制するのに役立つ。したがって、大きいページの変換は、小さいページの変換よりも「持続的」である。大きいページの変換は、システムメモリの大部分を利用する。したがって、大きいページの変換の持続性を高めることは、システムメモリの大部分でTLB300をいつでも利用することができるのを容易にし、これにより、TLB300内で発生するミスの量を減らし、ページテーブル208から変換を取得するのにかかる全体のレイテンシを短縮し、TLB300の全体的な速度及びパフォーマンスと、概して仮想アドレスを用いるメモリ動作の全体的な速度及びパフォーマンスと、を向上させる。
スキュードアソシアティブキャッシュの文脈で説明したが、上記で提供された技術は、セットアソシアティブキャッシュにも適用することができる。このようなセットアソシアティブキャッシュ内のウェイは、上述したようにウェイグループ316にグループ化され、各ウェイグループ316は、アドレスに依存する選択関数(又は、ページサイズ関数)に基づいて選択される。このようなセットアソシアティブキャッシュは、同じアドレスが異なるウェイグループ316内の異なるセットにマッピングされるというスキュードアソシアティブ特性を示さない。その代わりに、アドレスは、各ウェイグループ316内の同じセットにマッピングされる。セットアソシアティブキャッシュのLRUデータは、上記と同様の方法で記憶される。
さらに、コンピュータシステムの標準MMU内の変換索引バッファの文脈で説明したが、上記で提供された技術は、CPU等のプロセッサではなく、入出力デバイスのアドレス変換サービスを提供する入出力MMU等の他のMMUにおいて使用することができる。さらに、キャッシュが異なるレベルの汎用性のアドレス変換をキャッシュする限り、上述した技術は、TLB以外のキャッシュにも適用することができる。例えば、上記の技術は、インターネットプロトコルアドレスの異なる部分(例えば、XXX.XXX.___対XXX.XXX.XXX.___は、IPアドレスの1つのクラス対IPアドレスの別のクラス(例えばクラスA対クラスB)を表す)に関するインターネットプロトコルアドレス変換を記憶するキャッシュにおいて使用することができる。「汎用性のレベル」という用語は、特定のキャッシュエントリによってカバーされるアドレス空間の部分を指す。TLBの場合、「より高いレベルの汎用性」は、大きいページサイズの変換に対応し、「より小さいレベルの汎用性」(又は、「より具体的なレベルの汎用性」)は、小さいページサイズの変換に対応する。IPアドレス変換では、小さいIPアドレス部分の変換(つまり、より多くの合計IPアドレスをカバーする)は、大きいIPアドレス部分の変換よりも高いレベルの汎用性を有する。任意の実施態様では、上記の教示は、より高いレベルの汎用性を有するキャッシュエントリの置換ポリシーデータを更新する場合に、より小さいレベルの汎用性を有する同じキャッシュエントリの置換ポリシーデータに対して同様の更新が行われることを指示する。TLBではない任意のキャッシュの実施態様では、MMUの動作は、このようなキャッシュを管理するキャッシュコントローラによって実行されるとみなすことができる。
いくつかの例示的なLRUメカニズムが上記のように提供されたが、LRUメカニズムは、技術的に実行可能なLRU技術であってもよい(又は、非LRU置換技術であってもよい)。さらに、技術的に実現可能なページサイズ関数、選択関数及びインデックス化関数を使用することができる。
変換索引バッファを含むキャッシュの置換ポリシーデータを更新する方法が本明細書に開示されている。キャッシュの第1キャッシュエントリに対する更新が検出される。第1キャッシュエントリに対応する第1置換ポリシーデータエントリであって、第1ページサイズに関連する第1置換ポリシーデータエントリに対する第1変更が検出される。第1ページサイズよりも小さい第2ページサイズに関連する第2置換ポリシーデータエントリであって、第1キャッシュエントリに関連する第2置換ポリシーデータエントリが識別される。第1変更は、第2置換ポリシーデータエントリに対して行われる。
いくつかの例では、第1キャッシュエントリは、仮想アドレスから物理アドレスへの変換を記憶するように構成されている。いくつかの例では、キャッシュは、複数のウェイグループにグループ化された複数のウェイを含み、第1置換ポリシーデータエントリは、ウェイグループのうち第1キャッシュエントリを含む第1ウェイグループの置換ポリシーデータを記憶し、第2置換ポリシーデータエントリは、第1ウェイグループの置換ポリシーデータを記憶する。
いくつかの例では、第1キャッシュエントリは、第1メモリページの変換を記憶し、第1メモリページは、第1ウェイグループ内のキャッシュの第1セット、及び、複数のウェイグループのうち第2ウェイグループ内のキャッシュの第2セットにマッピングされており、第2セットは、第1セットとは異なるセットである。いくつかの例では、方法は、キャッシュ内のミスを検出することと、ミスに応じて、キャッシュ内に配置されたアイテムをフェッチすることと、アイテムに関連するアドレス及びアイテムに関連するページサイズに基づいて、アイテムのためのセット及びウェイグループを識別することと、第1置換ポリシーデータエントリに基づいて、ウェイグループ内のウェイを識別することと、を含む。キャッシュの第1キャッシュエントリに対する更新は、識別されたウェイ、セット及びウェイグループに対して実行される。いくつかの例では、ウェイグループ内のウェイを識別することは、アイテムに関連するページサイズの最長未使用時間のキャッシュエントリをウェイグループ内のウェイが記憶していることを第1置換ポリシーデータエントリが示すことを判別することを含む。
いくつかの例では、第1置換ポリシーデータエントリは、ウェイグループ内の何れのウェイが最長未使用時間データを含むかを示す1ビットを含む。いくつかの例では、方法は、キャッシュの第2キャッシュエントリに対する第2更新を検出することと、第2キャッシュエントリに対応する第3置換ポリシーデータエントリであって、第2ページサイズに関連する第3置換ポリシーデータエントリに対する第2変更を検出することと、第2ページサイズがキャッシュ内のデータの最小ページサイズであることを判別することと、を含み、第3置換ポリシーデータエントリがキャッシュ内のデータの最小ページサイズに関連していることに応じて、他の置換データが変更されない。
本明細書では、キャッシュも提供される。キャッシュは、キャッシュデータを記憶するキャッシュメモリであって、変換索引バッファを含むキャッシュメモリと、置換ポリシーデータを記憶する置換ポリシーメモリと、キャッシュコントローラと、を含む。キャッシュコントローラは、キャッシュメモリの第1キャッシュエントリに対する更新を検出し、第1キャッシュエントリに対応する第1置換ポリシーデータエントリであって、第1ページサイズに関連する第1置換ポリシーデータエントリに対する第1変更を検出し、第1ページサイズよりも小さい第2ページサイズに関連する第2置換ポリシーデータエントリであって、第1キャッシュエントリに関連する第2置換ポリシーデータエントリを識別し、第2置換ポリシーデータエントリに対して第1変更を行うように構成されている。
いくつかの例では、第1キャッシュエントリは、仮想アドレスから物理アドレスへの変換を記憶するように構成されている。いくつかの例では、キャッシュは、複数のウェイグループにグループ化された複数のウェイを含み、第1置換ポリシーデータエントリは、ウェイグループのうち第1キャッシュエントリを含む第1ウェイグループの置換ポリシーデータを記憶し、第2置換ポリシーデータエントリは、第1ウェイグループの置換ポリシーデータを記憶する。
いくつかの例では、第1キャッシュエントリは、第1メモリページの変換を記憶し、第1メモリページは、第1ウェイグループ内のキャッシュの第1セット、及び、複数のウェイグループのうち第2ウェイグループ内のキャッシュの第2セットにマッピングされており、第2セットは、第1セットとは異なるセットである。いくつかの例では、キャッシュコントローラは、キャッシュ内のミスを検出し、ミスに応じて、キャッシュ内に配置されたアイテムをフェッチし、アイテムに関連するアドレス及びアイテムに関連するページサイズに基づいて、アイテムのためのセット及びウェイグループを識別し、第1置換ポリシーデータエントリに基づいて、ウェイグループ内のウェイを識別するように構成されている。キャッシュの第1キャッシュエントリに対する更新は、識別されたウェイ、セット及びウェイグループに対して実行される。いくつかの例では、ウェイグループ内のウェイを識別することは、アイテムに関連するページサイズの最長未使用時間のキャッシュエントリをウェイグループ内のウェイが記憶していることを第1置換ポリシーデータエントリが示すことを判別することを含む。
いくつかの例では、第1置換ポリシーデータエントリは、ウェイグループ内の何れのウェイが最長未使用時間データを含むかを示す1ビットを含む。いくつかの例では、キャッシュコントローラは、キャッシュの第2キャッシュエントリに対する第2更新を検出し、第2キャッシュエントリに対応する第3置換ポリシーデータエントリであって、第2ページサイズに関連する第3置換ポリシーデータエントリに対する第2変更を検出し、第2ページサイズがキャッシュ内のデータの最小ページサイズであることを判別するように構成されており、第3置換ポリシーデータエントリがキャッシュ内のデータの最小ページサイズに関連していることに応じて、他の置換データが変更されない。
命令を実行するように構成された実行パイプラインと、キャッシュと、を備えるプロセッサも提供される。キャッシュは、キャッシュデータを記憶するキャッシュメモリであって、命令の仮想メモリアドレスを物理メモリアドレスに変換する変換索引バッファを含むキャッシュメモリと、置換ポリシーデータを記憶する置換ポリシーメモリと、キャッシュコントローラと、を備える。キャッシュコントローラは、キャッシュメモリの第1キャッシュエントリに対する更新を検出し、第1キャッシュエントリに対応する第1置換ポリシーデータエントリであって、第1ページサイズに関連する第1置換ポリシーデータエントリに対する第1変更を検出し、第1ページサイズよりも小さい第2ページサイズに関連する第2置換ポリシーデータエントリであって、第1キャッシュエントリに関連する第2置換ポリシーデータエントリを識別し、第2置換ポリシーデータエントリに対して第1変更を行うように構成されている。
いくつかの例では、第1キャッシュエントリは、仮想アドレスから物理アドレスへの変換を記憶するように構成されている。いくつかの例では、キャッシュは、複数のウェイグループにグループ化された複数のウェイを含み、第1置換ポリシーデータエントリは、ウェイグループのうち第1キャッシュエントリを含む第1ウェイグループの置換ポリシーデータを記憶し、第2置換ポリシーデータエントリは、第1ウェイグループの置換ポリシーデータを記憶する。いくつかの例では、第1キャッシュエントリは、第1メモリページの変換を記憶し、第1メモリページは、第1ウェイグループ内のキャッシュの第1セット、及び、複数のウェイグループのうち第2ウェイグループ内のキャッシュの第2セットにマッピングされており、第2セットは、第1セットとは異なるセットである。
本明細書における開示に基づいて多くの変形が可能であることを理解されたい。上記では、特徴及び要素が特定の組み合わせで説明されているが、各特徴又は要素は、他の特徴及び要素無しに単独で使用されてもよいし、他の特徴及び要素を伴って又は伴わずに様々な組み合わせで使用されてもよい。
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令(このような命令は、コンピュータ可読媒体に記憶することが可能である)の結果及びネットリストを含む他の中間データを用いて製造プロセスを構成することによって製造され得る。このようなプロセスの結果は、実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
本明細書で提供された方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、例えば読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク、リムーバブルディスク等の磁気媒体、光磁気記憶媒体、例えばCD−ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体が含まれる。

Claims (20)

  1. 変換索引バッファを含むキャッシュの置換ポリシーデータを更新する方法であって、
    前記キャッシュの第1キャッシュエントリに対する更新を検出することと、
    前記第1キャッシュエントリに対応する第1置換ポリシーデータエントリであって、第1ページサイズに関連する第1置換ポリシーデータエントリに対する第1変更を検出することと、
    前記第1ページサイズよりも小さい第2ページサイズに関連する第2置換ポリシーデータエントリであって、前記第1キャッシュエントリに関連する第2置換ポリシーデータエントリを識別することと、
    前記第2置換ポリシーデータエントリに対して前記第1変更を実行することと、を含む、
    方法。
  2. 前記第1キャッシュエントリは、仮想アドレスから物理アドレスへの変換を記憶するように構成されている、
    請求項1の方法。
  3. 前記キャッシュは、複数のウェイグループにグループ化された複数のウェイを含み、
    前記第1置換ポリシーデータエントリは、前記ウェイグループのうち前記第1キャッシュエントリを含む第1ウェイグループの置換ポリシーデータを記憶し、
    前記第2置換ポリシーデータエントリは、前記第1ウェイグループの置換ポリシーデータを記憶する、
    請求項1の方法。
  4. 前記第1キャッシュエントリは、第1メモリページの変換を記憶し、
    前記第1メモリページは、前記第1ウェイグループ内の前記キャッシュの第1セット、及び、前記複数のウェイグループのうち第2ウェイグループ内の前記キャッシュの第2セットにマッピングされており、前記第2セットは、前記第1セットとは異なるセットである、
    請求項3の方法。
  5. 前記キャッシュ内のミスを検出することと、
    前記ミスに応じて、前記キャッシュ内に配置されたアイテムをフェッチすることと、
    前記アイテムに関連するアドレス及び前記アイテムに関連するページサイズに基づいて、前記アイテムのためのセット及びウェイグループを識別することと、
    前記第1置換ポリシーデータエントリに基づいて、前記ウェイグループ内のウェイを識別することと、を含み、
    前記キャッシュの前記第1キャッシュエントリに対する更新は、識別されたウェイ、セット及びウェイグループに対して実行される、
    請求項3の方法。
  6. 前記ウェイグループ内のウェイを識別することは、
    前記アイテムに関連するページサイズの最長未使用時間のキャッシュエントリを前記ウェイグループ内の前記ウェイが記憶していることを前記第1置換ポリシーデータエントリが示すことを判別することを含む、
    請求項5の方法。
  7. 前記第1置換ポリシーデータエントリは、前記ウェイグループ内の何れのウェイが最長未使用時間データを含むかを示す1ビットを含む、
    請求項5の方法。
  8. 前記キャッシュの第2キャッシュエントリに対する第2更新を検出することと、
    前記第2キャッシュエントリに対応する第3置換ポリシーデータエントリであって、前記第2ページサイズに関連する第3置換ポリシーデータエントリに対する第2変更を検出することと、
    前記第2ページサイズが前記キャッシュ内のデータの最小ページサイズであることを判別することと、を含み、
    前記第3置換ポリシーデータエントリが前記キャッシュ内のデータの最小ページサイズに関連していることに応じて、他の置換データが変更されない、
    請求項1の方法。
  9. キャッシュデータを記憶するキャッシュメモリであって、変換索引バッファを含むキャッシュメモリと、
    置換ポリシーデータを記憶する置換ポリシーメモリと、
    キャッシュコントローラと、を備えるキャッシュであって、
    前記キャッシュコントローラは、
    前記キャッシュメモリの第1キャッシュエントリに対する更新を検出し、
    前記第1キャッシュエントリに対応する第1置換ポリシーデータエントリであって、第1ページサイズに関連する第1置換ポリシーデータエントリに対する第1変更を検出し、
    前記第1ページサイズよりも小さい第2ページサイズに関連する第2置換ポリシーデータエントリであって、前記第1キャッシュエントリに関連する第2置換ポリシーデータエントリを識別し、
    前記第2置換ポリシーデータエントリに対して前記第1変更を実行する、
    ように構成されている、
    キャッシュ。
  10. 前記第1キャッシュエントリは、仮想アドレスから物理アドレスへの変換を記憶するように構成されている、
    請求項9のキャッシュ。
  11. 前記キャッシュは、複数のウェイグループにグループ化された複数のウェイを含み、
    前記第1置換ポリシーデータエントリは、前記ウェイグループのうち前記第1キャッシュエントリを含む第1ウェイグループの置換ポリシーデータを記憶し、
    前記第2置換ポリシーデータエントリは、前記第1ウェイグループの置換ポリシーデータを記憶する、
    請求項9のキャッシュ。
  12. 前記第1キャッシュエントリは、第1メモリページの変換を記憶し、
    前記第1メモリページは、前記第1ウェイグループ内の前記キャッシュの第1セット、及び、前記複数のウェイグループのうちの第2ウェイグループ内の前記キャッシュの第2セットにマッピングされており、前記第2セットは、前記第1セットとは異なるセットである、
    請求項11のキャッシュ。
  13. 前記キャッシュコントローラは、
    前記キャッシュメモリ内のミスを検出し、
    前記ミスに応じて、前記キャッシュ内に配置されたアイテムをフェッチし、
    前記アイテムに関連するアドレス及び前記アイテムに関連するページサイズに基づいて、前記アイテムのためのセット及びウェイグループを識別し、
    前記第1置換ポリシーデータエントリに基づいて、前記ウェイグループ内のウェイを識別するように構成されており、
    前記キャッシュの前記第1キャッシュエントリに対する更新は、識別されたウェイ、セット及びウェイグループに対して実行される、
    請求項11のキャッシュ。
  14. 前記キャッシュコントローラは、
    前記アイテムに関連する前記ページサイズの最長未使用時間のキャッシュエントリを前記ウェイグループ内の前記ウェイが記憶していることを前記第1置換ポリシーデータエントリが示すことを判別することによって、前記ウェイグループ内の前記ウェイを識別するように構成されている、
    請求項13のキャッシュ。
  15. 前記第1置換ポリシーデータエントリは、前記ウェイグループ内の何れのウェイが最長未使用時間データを含むかを示す1ビットを含む、
    請求項13のキャッシュ。
  16. 前記キャッシュコントローラは、
    前記キャッシュの第2キャッシュエントリに対する第2更新を検出し、
    前記第2キャッシュエントリに対応する第3置換ポリシーデータエントリであって、前記第2ページサイズに関連する第3置換ポリシーデータエントリに対する第2変更を検出し、
    前記第2ページサイズが前記キャッシュ内のデータの最小ページサイズであることを判別するように構成されており、
    前記第3置換ポリシーデータエントリが前記キャッシュ内のデータの前記最小ページサイズに関連していることに応じて、他の置換データが変更されない、
    請求項9のキャッシュ。
  17. 命令を実行するように構成された実行パイプラインと、
    キャッシュと、を備えるプロセッサであって、
    前記キャッシュは、
    キャッシュデータを記憶するキャッシュメモリであって、前記命令の仮想メモリアドレスを物理メモリアドレスに変換する変換索引バッファを含むキャッシュメモリと、
    置換ポリシーデータを記憶する置換ポリシーメモリと、
    キャッシュコントローラと、を備え、
    前記キャッシュコントローラは、
    前記キャッシュメモリの第1キャッシュエントリに対する更新を検出し、
    前記第1キャッシュエントリに対応する第1置換ポリシーデータエントリであって、かつ第1ページサイズに関連する第1置換ポリシーデータエントリに対する第1変更を検出し、
    前記第1ページサイズよりも小さい第2ページサイズに関連する第2置換ポリシーデータエントリであって、前記第1キャッシュエントリに関連する第2置換ポリシーデータエントリを識別し、
    前記第2置換ポリシーデータエントリに対して前記第1変更を実行するように構成されている、
    プロセッサ。
  18. 前記第1キャッシュエントリは、仮想アドレスから物理アドレスへの変換を記憶するように構成されている、
    請求項17のプロセッサ。
  19. 前記キャッシュは、複数のウェイグループにグループ化された複数のウェイを含み、
    前記第1置換ポリシーデータエントリは、前記ウェイグループのうち前記第1キャッシュエントリを含む第1ウェイグループの置換ポリシーデータを記憶し、
    前記第2置換ポリシーデータエントリは、前記第1ウェイグループの置換ポリシーデータを記憶する、
    請求項17のプロセッサ。
  20. 前記第1キャッシュエントリは、第1メモリページの変換を記憶し、
    前記第1メモリページは、前記第1ウェイグループ内の前記キャッシュの第1セット、及び、前記複数のウェイグループのうち第2ウェイグループ内の前記キャッシュの第2セットにマッピングされており、前記第2セットは、前記第1セットとは異なるセットである、
    請求項19のプロセッサ。
JP2019507750A 2016-08-12 2017-08-03 キャッシュ、キャッシュを有するプロセッサ、及び、キャッシュ制御方法 Active JP7249272B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/235,214 2016-08-12
US15/235,214 US10037283B2 (en) 2016-08-12 2016-08-12 Updating least-recently-used data for greater persistence of higher generality cache entries
PCT/US2017/045356 WO2018031374A1 (en) 2016-08-12 2017-08-03 Updating least-recently-used data for greater persistence of higher-generality cache entries

Publications (2)

Publication Number Publication Date
JP2019527900A true JP2019527900A (ja) 2019-10-03
JP7249272B2 JP7249272B2 (ja) 2023-03-30

Family

ID=61159053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019507750A Active JP7249272B2 (ja) 2016-08-12 2017-08-03 キャッシュ、キャッシュを有するプロセッサ、及び、キャッシュ制御方法

Country Status (6)

Country Link
US (1) US10037283B2 (ja)
EP (1) EP3497577B1 (ja)
JP (1) JP7249272B2 (ja)
KR (1) KR102427774B1 (ja)
CN (1) CN109564550B (ja)
WO (1) WO2018031374A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9984004B1 (en) * 2016-07-19 2018-05-29 Nutanix, Inc. Dynamic cache balancing
US11106596B2 (en) * 2016-12-23 2021-08-31 Advanced Micro Devices, Inc. Configurable skewed associativity in a translation lookaside buffer
US10719451B2 (en) * 2017-01-13 2020-07-21 Optimum Semiconductor Technologies Inc. Variable translation-lookaside buffer (TLB) indexing
US10241925B2 (en) * 2017-02-15 2019-03-26 Ati Technologies Ulc Selecting a default page size in a variable page size TLB
US10282309B2 (en) 2017-02-24 2019-05-07 Advanced Micro Devices, Inc. Per-page control of physical address space distribution among memory modules
US10339068B2 (en) 2017-04-24 2019-07-02 Advanced Micro Devices, Inc. Fully virtualized TLBs
US10915459B2 (en) * 2018-10-29 2021-02-09 International Business Machines Corporation Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes
US10838659B2 (en) 2019-02-08 2020-11-17 International Business Machines Corporation Controlling write access to a memory structure based on write request priority
US11422947B2 (en) * 2020-08-12 2022-08-23 International Business Machines Corporation Determining page size via page table cache

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130254490A1 (en) * 2009-12-22 2013-09-26 International Business Machines Corporation Delayed replacement of tlb entries
JP2016122474A (ja) * 2016-04-05 2016-07-07 ルネサスエレクトロニクス株式会社 データ処理装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4731740A (en) * 1984-06-30 1988-03-15 Kabushiki Kaisha Toshiba Translation lookaside buffer control system in computer or virtual memory control scheme
US5539892A (en) * 1994-08-02 1996-07-23 Motorola, Inc. Address translation lookaside buffer replacement apparatus and method with user override
US6345352B1 (en) * 1998-09-30 2002-02-05 Apple Computer, Inc. Method and system for supporting multiprocessor TLB-purge instructions using directed write transactions
US6370622B1 (en) * 1998-11-20 2002-04-09 Massachusetts Institute Of Technology Method and apparatus for curious and column caching
US6748492B1 (en) * 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6523092B1 (en) * 2000-09-29 2003-02-18 Intel Corporation Cache line replacement policy enhancement to avoid memory page thrashing
US6823427B1 (en) * 2001-05-16 2004-11-23 Advanced Micro Devices, Inc. Sectored least-recently-used cache replacement
US6732238B1 (en) * 2001-06-08 2004-05-04 Tensilica, Inc. Set-associative cache memory having variable time decay rewriting algorithm
WO2006038258A1 (ja) 2004-09-30 2006-04-13 Renesas Technology Corp. データプロセッサ
US7689776B2 (en) * 2005-06-06 2010-03-30 Kabushiki Kaisha Toshiba Method and system for efficient cache locking mechanism
US7353361B2 (en) * 2005-06-06 2008-04-01 International Business Machines Corporation Page replacement policy for systems having multiple page sizes
US7426626B2 (en) * 2005-08-23 2008-09-16 Qualcomm Incorporated TLB lock indicator
US8250332B2 (en) 2009-06-11 2012-08-21 Qualcomm Incorporated Partitioned replacement for cache memory
US8392658B2 (en) * 2009-07-10 2013-03-05 Apple Inc. Cache implementing multiple replacement policies
US9952977B2 (en) * 2009-09-25 2018-04-24 Nvidia Corporation Cache operations and policies for a multi-threaded client
US8719507B2 (en) * 2012-01-04 2014-05-06 International Business Machines Corporation Near neighbor data cache sharing
US8874852B2 (en) * 2012-03-28 2014-10-28 International Business Machines Corporation Data cache block deallocate requests in a multi-level cache hierarchy
US8984254B2 (en) * 2012-09-28 2015-03-17 Freescale Semiconductor, Inc. Techniques for utilizing translation lookaside buffer entry numbers to improve processor performance
US20140189192A1 (en) 2012-12-28 2014-07-03 Shlomo Raikin Apparatus and method for a multiple page size translation lookaside buffer (tlb)
WO2014142969A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Object liveness tracking for use in processing device cache
US9652400B2 (en) * 2014-12-14 2017-05-16 Via Alliance Semiconductor Co., Ltd. Fully associative cache memory budgeted by memory access type
US20170046278A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Method and apparatus for updating replacement policy information for a fully associative buffer cache

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130254490A1 (en) * 2009-12-22 2013-09-26 International Business Machines Corporation Delayed replacement of tlb entries
JP2016122474A (ja) * 2016-04-05 2016-07-07 ルネサスエレクトロニクス株式会社 データ処理装置

Also Published As

Publication number Publication date
WO2018031374A1 (en) 2018-02-15
CN109564550B (zh) 2023-06-13
US20180046583A1 (en) 2018-02-15
EP3497577B1 (en) 2023-05-31
JP7249272B2 (ja) 2023-03-30
CN109564550A (zh) 2019-04-02
US10037283B2 (en) 2018-07-31
KR20190030227A (ko) 2019-03-21
EP3497577A4 (en) 2020-04-08
EP3497577A1 (en) 2019-06-19
KR102427774B1 (ko) 2022-08-01

Similar Documents

Publication Publication Date Title
JP7249272B2 (ja) キャッシュ、キャッシュを有するプロセッサ、及び、キャッシュ制御方法
KR102448124B1 (ko) 가상 주소들을 사용하여 액세스된 캐시
US9405702B2 (en) Caching TLB translations using a unified page table walker cache
KR102663356B1 (ko) 어드레스 변환 캐시
US9864694B2 (en) Tracking the content of a cache using a way tracker having entries with a cache miss indicator
US10282308B2 (en) Method and apparatus for reducing TLB shootdown overheads in accelerator-based systems
JP7443344B2 (ja) 外部メモリベースのトランスレーションルックアサイドバッファ
TW201617886A (zh) 指令快取記憶體轉譯管理
US20230102891A1 (en) Re-reference interval prediction (rrip) with pseudo-lru supplemental age information
JP7449694B2 (ja) 変換索引バッファにおける構成可能なスキューアソシエイティビティ
JP2013097671A (ja) アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置
JP7155629B2 (ja) 演算処理装置、情報処理装置、及び演算処理装置の制御方法
US20090049272A1 (en) Method for improving the performance of software-managed tlb
KR20210037216A (ko) 이종 메모리를 이용하여 메모리 주소 변환 테이블을 관리하는 메모리 관리 유닛 및 이의 메모리 주소 관리 방법
US20220100653A1 (en) Page table walker with page table entry (pte) physical address prediction
US11704250B2 (en) Using request class and reuse recording in one cache for insertion policies of another cache
US11397691B2 (en) Latency hiding for caches
CN115794681B (zh) 适用于risc-v的多级可扩展tlb系统及其地址转换方法
JP2019096307A (ja) 複数のデータ・タイプのためのデータ・ストレージ

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190425

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200731

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210609

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220222

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220520

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220706

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220920

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230120

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20230120

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20230131

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20230207

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230317

R150 Certificate of patent or registration of utility model

Ref document number: 7249272

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150