IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特許7249272キャッシュ、キャッシュを有するプロセッサ、及び、キャッシュ制御方法
<>
  • 特許-キャッシュ、キャッシュを有するプロセッサ、及び、キャッシュ制御方法 図1
  • 特許-キャッシュ、キャッシュを有するプロセッサ、及び、キャッシュ制御方法 図2
  • 特許-キャッシュ、キャッシュを有するプロセッサ、及び、キャッシュ制御方法 図3
  • 特許-キャッシュ、キャッシュを有するプロセッサ、及び、キャッシュ制御方法 図4
  • 特許-キャッシュ、キャッシュを有するプロセッサ、及び、キャッシュ制御方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-22
(45)【発行日】2023-03-30
(54)【発明の名称】キャッシュ、キャッシュを有するプロセッサ、及び、キャッシュ制御方法
(51)【国際特許分類】
   G06F 12/0895 20160101AFI20230323BHJP
   G06F 12/1027 20160101ALI20230323BHJP
   G06F 12/123 20160101ALI20230323BHJP
【FI】
G06F12/0895 102
G06F12/1027
G06F12/123
【請求項の数】 17
(21)【出願番号】P 2019507750
(86)(22)【出願日】2017-08-03
(65)【公表番号】
(43)【公表日】2019-10-03
(86)【国際出願番号】 US2017045356
(87)【国際公開番号】W WO2018031374
(87)【国際公開日】2018-02-15
【審査請求日】2020-07-31
(31)【優先権主張番号】15/235,214
(32)【優先日】2016-08-12
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】アンソニー ジェイ. バイベル
(72)【発明者】
【氏名】ジョン エム. キング
【審査官】北村 学
(56)【参考文献】
【文献】特開2016-122474(JP,A)
【文献】米国特許出願公開第2013/0254490(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/08 - 12/128
(57)【特許請求の範囲】
【請求項1】
キャッシュコントローラが、第1アドレス空間から第2アドレス空間への変換を記憶するキャッシュであって、複数のウェイグループに分割された複数のウェイをそれぞれ含む複数のセットを有するキャッシュの置換ポリシーデータを更新する方法であって、
前記キャッシュコントローラが、
前記キャッシュの第1キャッシュエントリに対する更新を検出することであって、前記キャッシュの第1キャッシュエントリは、前記複数のセットのうち第1セット及び前記複数のウェイグループのうち第1ウェイグループに関連している、ことと、
前記第1キャッシュエントリに対する更新に応じて、前記第1キャッシュエントリ及び第1ウェイグループに対応する第1置換ポリシーデータエントリを変更することであって、前記第1置換ポリシーデータエントリは第1ページサイズに関連しており、前記変更することは、前記キャッシュの前記第1キャッシュエントリが前記第1ページサイズの最長未使用時間のエントリではないことを前記第1置換ポリシーデータエントリに示させる、ことと、
前記第1置換ポリシーデータエントリを変更したことに応じて、前記第1ページサイズよりも小さい第2ページサイズに関連する第2置換ポリシーデータエントリを識別することであって、前記第2置換ポリシーデータエントリは、前記第1キャッシュエントリ及び前記第1ウェイグループに関連する、ことと、
前記キャッシュの第1キャッシュエントリが前記第2ページサイズの最長未使用時間のエントリではないことを示すように、前記第2置換ポリシーデータエントリを変更することと、を含む、
方法。
【請求項2】
前記第1キャッシュエントリは、仮想アドレスから物理アドレスへの変換を記憶するように構成されている、
請求項1の方法。
【請求項3】
前記第1キャッシュエントリは、第1メモリページの変換を記憶し、
前記第1メモリページは、前記第1ウェイグループ内の前記キャッシュの第1セット、及び、前記複数のウェイグループのうち第2ウェイグループ内の前記キャッシュの第2セットに関連付けられており、前記第2セットは、前記第1セットとは異なるセットであり、前記第1メモリページは、ページサイズに基づいて、前記第1ウェイグループ内の前記キャッシュの第1セット、又は、前記第2ウェイグループ内の前記キャッシュの第2セットにマッピングされている、
請求項1の方法。
【請求項4】
前記キャッシュ内のミスを検出することと、
前記ミスに応じて、前記キャッシュの前記第1キャッシュエントリに配置されたアイテムをフェッチすることと、
前記アイテムに関連するアドレス及び前記アイテムに関連する第1ページサイズに基づいて、前記アイテムの前記第1セット及び前記第1ウェイグループを識別することと、
前記第1置換ポリシーデータエントリに基づいて、前記第1ウェイグループ内のウェイを識別することと、を含み、
前記キャッシュの前記第1キャッシュエントリに対する更新は、識別されたウェイ、セット及びウェイグループに対して実行される、
請求項1の方法。
【請求項5】
前記第1ウェイグループ内のウェイを識別することは、
前記アイテムに関連する前記第1ページサイズの最長未使用時間のキャッシュエントリを前記第1ウェイグループ内の前記ウェイが記憶していることを前記第1置換ポリシーデータエントリが示すことを判別することを含む、
請求項4の方法。
【請求項6】
前記第1置換ポリシーデータエントリは、前記第1ウェイグループ内の何れのウェイが最長未使用時間データを含むかを示す1ビットを含む、
請求項4の方法。
【請求項7】
前記キャッシュの第2キャッシュエントリに対する第2更新を検出することと、
前記第2キャッシュエントリに対応する第3置換ポリシーデータエントリであって、前記第2ページサイズに関連する第3置換ポリシーデータエントリに対する第2変更を検出することと、
前記第2ページサイズが前記キャッシュ内のデータの最小のページサイズであることを判別することと、を含み、
前記第3置換ポリシーデータエントリが前記キャッシュ内のデータの最小のページサイズに関連していることに応じて、他の置換データが変更されない、
請求項1の方法。
【請求項8】
第1アドレス空間から第2アドレス空間への変換を記憶し、複数のウェイグループに分割された複数のウェイをそれぞれ含む複数のセットを有するキャッシュであって、
キャッシュデータを記憶するキャッシュメモリと、
置換ポリシーデータを記憶する置換ポリシーメモリと、
キャッシュコントローラと、を備え、
前記キャッシュコントローラは、
前記キャッシュメモリの第1キャッシュエントリに対する更新を検出することであって、前記キャッシュの第1キャッシュエントリは、前記複数のセットのうち第1セット及び前記複数のウェイグループのうち第1ウェイグループに関連している、ことと、
前記第1キャッシュエントリに対する更新に応じて、前記第1キャッシュエントリ及び第1ウェイグループに対応する第1置換ポリシーデータエントリを変更することであって、前記第1置換ポリシーデータエントリは第1ページサイズに関連しており、前記変更することは、前記キャッシュの前記第1キャッシュエントリが前記第1ページサイズの最長未使用時間のエントリではないことを前記第1置換ポリシーデータエントリに示させる、ことと、
前記第1置換ポリシーデータエントリを変更したことに応じて、前記第1ページサイズよりも小さい第2ページサイズに関連する第2置換ポリシーデータエントリを識別することであって、前記第2置換ポリシーデータエントリは、前記第1キャッシュエントリ及び前記第1ウェイグループに関連する、ことと、
前記キャッシュの第1キャッシュエントリが前記第2ページサイズの最長未使用時間のエントリではないことを示すように、前記第2置換ポリシーデータエントリを変更することと、
を行うように構成されている、
キャッシュ。
【請求項9】
前記第1キャッシュエントリは、仮想アドレスから物理アドレスへの変換を記憶するように構成されている、
請求項8のキャッシュ。
【請求項10】
前記第1キャッシュエントリは、第1メモリページの変換を記憶し、
前記第1メモリページは、前記第1ウェイグループ内の前記キャッシュの第1セット、及び、前記複数のウェイグループのうちの第2ウェイグループ内の前記キャッシュの第2セットに関連付けられており、前記第2セットは、前記第1セットとは異なるセットであり、前記第1メモリページは、ページサイズに基づいて、前記第1ウェイグループ内の前記キャッシュの第1セット、又は、前記第2ウェイグループ内の前記キャッシュの第2セットにマッピングされている、
請求項8のキャッシュ。
【請求項11】
前記キャッシュコントローラは、
前記キャッシュメモリ内のミスを検出し、
前記ミスに応じて、前記キャッシュの前記第1キャッシュエントリに配置されたアイテムをフェッチし、
前記アイテムに関連するアドレス及び前記アイテムに関連する第1ページサイズに基づいて、前記アイテムの前記第1セット及び前記第1ウェイグループを識別し、
前記第1置換ポリシーデータエントリに基づいて、前記第1ウェイグループ内のウェイを識別するように構成されており、
前記キャッシュの前記第1キャッシュエントリに対する更新は、識別されたウェイ、セット及びウェイグループに対して実行される、
請求項8のキャッシュ。
【請求項12】
前記キャッシュコントローラは、
前記アイテムに関連する前記第1ページサイズの最長未使用時間のキャッシュエントリを前記第1ウェイグループ内の前記ウェイが記憶していることを前記第1置換ポリシーデータエントリが示すことを判別することによって、前記第1ウェイグループ内の前記ウェイを識別するように構成されている、
請求項11のキャッシュ。
【請求項13】
前記第1置換ポリシーデータエントリは、前記第1ウェイグループ内の何れのウェイが最長未使用時間データを含むかを示す1ビットを含む、
請求項11のキャッシュ。
【請求項14】
前記キャッシュコントローラは、
前記キャッシュの第2キャッシュエントリに対する第2更新を検出し、
前記第2キャッシュエントリに対応する第3置換ポリシーデータエントリであって、前記第2ページサイズに関連する第3置換ポリシーデータエントリに対する第2変更を検出し、
前記第2ページサイズが前記キャッシュ内のデータの最小のページサイズであることを判別するように構成されており、
前記第3置換ポリシーデータエントリが前記キャッシュ内のデータの最小のページサイズに関連していることに応じて、他の置換データが変更されない、
請求項8のキャッシュ。
【請求項15】
命令を実行するように構成された実行パイプラインと、
第1アドレス空間から第2アドレス空間への変換を記憶するキャッシュであって、複数のウェイグループに分割された複数のウェイをそれぞれ含む複数のセットを有するキャッシュと、を備えるプロセッサであって、
前記キャッシュは、
キャッシュデータを記憶するキャッシュメモリと、
置換ポリシーデータを記憶する置換ポリシーメモリと、
キャッシュコントローラと、を備え、
前記キャッシュコントローラは、
前記キャッシュメモリの第1キャッシュエントリに対する更新を検出することであって、前記キャッシュの第1キャッシュエントリは、前記複数のセットのうち第1セット及び前記複数のウェイグループのうち第1ウェイグループに関連している、ことと、
前記第1キャッシュエントリに対する更新に応じて、前記第1キャッシュエントリ及び第1ウェイグループに対応する第1置換ポリシーデータエントリを変更することであって、前記第1置換ポリシーデータエントリは第1ページサイズに関連しており、前記変更することは、前記キャッシュの前記第1キャッシュエントリが前記第1ページサイズの最長未使用時間のエントリではないことを前記第1置換ポリシーデータエントリに示させる、ことと、
前記第1置換ポリシーデータエントリを変更したことに応じて、前記第1ページサイズよりも小さい第2ページサイズに関連する第2置換ポリシーデータエントリを識別することであって、前記第2置換ポリシーデータエントリは、前記第1キャッシュエントリに関連する、ことと、
前記キャッシュの第1キャッシュエントリが前記第2ページサイズの最長未使用時間のエントリではないことを示すように、前記第2置換ポリシーデータエントリを変更することと、
を実行するように構成されている、
プロセッサ。
【請求項16】
前記第1キャッシュエントリは、仮想アドレスから物理アドレスへの変換を記憶するように構成されている、
請求項15のプロセッサ。
【請求項17】
前記第1キャッシュエントリは、第1メモリページの変換を記憶し、
前記第1メモリページは、前記第1ウェイグループ内の前記キャッシュの第1セット、及び、前記複数のウェイグループのうち第2ウェイグループ内の前記キャッシュの第2セットに関連付けられており、前記第2セットは、前記第1セットとは異なるセットであり、前記第1メモリページは、ページサイズに基づいて、前記第1ウェイグループ内の前記キャッシュの第1セット、又は、前記第2ウェイグループ内の前記キャッシュの第2セットにマッピングされている、
請求項15のプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2016年8月12日に出願された米国特許出願第15/235,214の利益を主張し、その内容は、完全に記載されているかのように、参照により本明細書に組み込まれるものとする。
【背景技術】
【0002】
変換索引バッファ(TLB)は、メモリシステムのアドレスを指定する際に使用される仮想アドレスから物理アドレスへの変換を記憶するキャッシュである。TLBは、仮想アドレスを使用してメモリを参照する動作が多いので、コンピュータ動作を高速化することができる。TLBが無いと、このような動作は、変換を取得するためにメインシステムメモリにアクセスする必要があるので、長いレイテンシが発生する。したがって、TLB動作を改善すると、コンピュータの動作速度を向上させることができる。
【0003】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解が得られるであろう。
【図面の簡単な説明】
【0004】
図1】1つ以上の開示された実施形態を実施することができる例示的なデバイスのブロック図である。
図2】一実施例による、プロセッサ-メモリインタフェースシステムのブロック図である。
図3】一実施例による、変換索引バッファのブロック図である。
図4】一実施例による、キャッシュミスの場合に最長未使用時間(least-recently-used)データを変更する動作を示すブロック図である。
図5】一実施例による、変換索引バッファの最長未使用時間データを更新する方法のフロー図である。
【発明を実施するための形態】
【0005】
本開示は、変換索引バッファ(TLB)の動作を向上させる技術に関する。TLBの特定のエントリが、大きいページサイズに関連付けられたデータを用いて更新される場合、TLBは、当該TLBエントリが最長未使用時間のエントリではないことを示すために、当該大きいページサイズの当該TLBエントリの置換ポリシーデータ(最長未使用時間(LRU)データ等)を更新する。小さいページから大きいページサイズのTLBエントリがエビクトされるのを抑制するために、TLBは、TLBエントリが最長未使用時間のエントリではないことを示すように、小さいページサイズのTLBエントリの置換ポリシーデータも更新する。
【0006】
変更されたTLBエントリがこれらのページサイズの最長未使用時間のエントリではないことを示すために、小さいページサイズのLRUデータを調整することは、小さいメモリページのTLBエントリが、大きいページサイズのTLBエントリをエビクトすることを抑制するのに役立つ。したがって、大きいページの変換は、小さいページの変換よりも「持続的」である。大きいページの変換は、システムメモリの大部分を使用可能にする。したがって、大きいページの変換の持続性を高めることで、TLGがシステムメモリの大部分をいつでも利用できるようになるので、TLBで発生するミスの量が少なくなり、ページテーブルから変換を取得するのにかかる全体のレイテンシが短縮される。これにより、TLBの全体的な速度及びパフォーマンスと、概して仮想アドレスを用いたメモリ動作の全体的な速度及びパフォーマンスと、が向上する。
【0007】
図1は、本開示の態様が実施される例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含む。デバイス100は、プロセッサ102と、メモリ104と、ストレージデバイス106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、入力ドライバ112及び出力ドライバ114をオプションで含むことができる。デバイス100は、図1に示されていない追加のコンポーネントを含んでもよいことを理解されたい。
【0008】
プロセッサ102は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアはCPU又はGPUである。メモリ104は、プロセッサ102と同じダイ上に配置されてもよいし、プロセッサ102とは別に配置されてもよい。メモリ104は、例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM若しくはキャッシュ等の揮発性又は不揮発性メモリを含む。
【0009】
ストレージデバイス106は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等の固定又は取り外し可能なストレージデバイスを含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/若しくは受信するための無線ローカルエリアネットワークカード)を含む。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバック装置、1つ以上のライト、アンテナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/若しくは受信するための無線ローカルエリアネットワークカード)を含む。
【0010】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションのコンポーネントであり、デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合であっても同様に動作することに留意されたい。
【0011】
図2は、一実施例による、プロセッサ-メモリインタフェースシステム200の態様を示すブロック図である。図示するように、プロセッサ-メモリインタフェースシステム200は、図1のプロセッサ102と、図1のメモリ104と、を含む。
【0012】
プロセッサ102は、データを処理するための命令を実行するコア202を含む。また、プロセッサ102は、変換索引バッファ(TLB)206に接続されたメモリ管理ユニット(MMU)204を含む。プロセッサ102によって実行される命令は、物理アドレス(通常、オペレーティングシステムの動作に関連する)又は仮想アドレス(通常、ユーザモードのアプリケーションに関連する)を介してメモリを参照することができる。アプリケーションに対して仮想アドレス空間を使用することによって、これらのアプリケーションを隔離することができ、これらのアプリケーションが、他のアプリケーション又はオペレーティングシステムに関連するメモリに書き込みを行って、他のアプリケーションの動作又はオペレーティングシステムに誤って干渉することが抑制される。
【0013】
プロセッサ102は、仮想アドレスを介したメモリ104のアクセスを容易にするために、MMU204を含む。MMU204は、コア202から受信した仮想アドレスを物理アドレスに変換し、これらの物理アドレスを介してメモリ104にアクセスする。仮想アドレスがどのように物理アドレスに変換されるかを示すデータは、メモリ104内のページテーブル208に記憶される。アドレスは、バイト又はワードに変換されない代わりに、ページ番号に変換される。より具体的には、ページテーブル208は、単一ページを表すのに十分な数のアドレスの最上位ビットを含む仮想ページ番号を、物理ページ番号に変換する。アドレスの最下位ビットは変換されず、物理アドレス及び仮想アドレスの両方で同じである。
【0014】
TLB206は、ページテーブル208のキャッシュとして機能する。TLB206が無いと、あらゆる仮想メモリアドレスルックアップがシステムメモリ104へのアクセスを必要とするため、メモリアクセスのレイテンシが増大する。TLB206によって提供されるキャッシングは、このレイテンシを短縮するのに役立つ。しかしながら、TLB206は、通常、ページテーブル208内の全ての変換の完全なコピーを含まない。コア202は、動作中、メモリアクセス命令を実行することの一環として、MMU204に対して仮想メモリアドレスの変換を要求する。これに応じて、MMU204は、変換のためにTLB206を検索する。キャッシュヒットの場合(TLB206が変換を含むことを意味する)、MMU204は、この変換から物理アドレスを取得し、取得した物理アドレスを用いて、メモリアクセス要求をメモリ104に送信する。キャッシュミスの場合(TLB206が変換を含まないことを意味する)、MMU204は、ページテーブルウォークを実行して、必要な変換についてページテーブル208を検索する。次に、MMU204は、この変換をTLB206に配置し、TLB206に十分なスペースが存在しない場合には、別のエントリをエビクトする。MMU204は、最近得られた変換に基づいてメモリアクセスを実行する。
【0015】
アドレス変換における難しさを示す1つの態様は、異なるページサイズの可能性である。より具体的には、異なるサイズのメモリページをメモリ104に記憶させるという選択肢は、異なるサイズのページの変換を、どのようにTLB206にキャッシュするかという課題を提起する。
【0016】
図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にデータを記憶するメモリページのサイズを示す。
【0017】
スキュードアソシアティブキャッシュは、セットアソシアティブキャッシュの変形であり、キャッシュミスの可能性を低減することができる。キャッシュは、ルックアップに応じてペイロードデータを提供する。様々なタイプのキャッシュ(セットアソシアティブキャッシュを含む)では、アドレスのキャッシュインデックス部分を使用して、当該インデックスを有するアドレスのデータを記憶することができるキャッシュ内のエントリを識別する。ダイレクトマッピングキャッシュでは、キャッシュインデックスは、キャッシュ内の単一のエントリを一意に識別する。したがって、ダイレクトマッピングキャッシュでは、特定のアドレスのエントリを、単一のキャッシュエントリにしか記憶することができない。フルアソシアティブキャッシュでは、全てのアドレスを任意のキャッシュエントリに記憶することができる。セットアソシアティブキャッシュでは、特定のキャッシュインデックス値をキャッシュ内のエントリ数nにマッピングすることができる。ここで、nは、1より大きく、キャッシュサイズより小さい(n=1のキャッシュは、ダイレクトマッピングキャッシュであり、n=キャッシュサイズのキャッシュは、フルアソシアティブキャッシュである)。セットアソシアティブキャッシュでは、キャッシュインデックスは、特定のセットにマッピングされ、各セットは、複数のキャッシュエントリを含む。また、キャッシュ全体は、n個の「バンク」(「ウェイ」とも呼ばれる)に分割される。セットアソシアティブキャッシュ内の特定のキャッシュエントリは、セット番号とバンク(ウェイ)番号との特定の組み合わせによって識別される。
【0018】
スキュードアソシアティブキャッシュは、セットアソシアティブキャッシュの変形であり、セットの選択はウェイによって異なる。TLB300は、スキュードアソシアティブキャッシュとして実装される。したがって、TLB300では、任意の特定のアドレスを異なるウェイの異なるセットにマッピングすることができる。
【0019】
さらに、スキュードアソシアティブなTLB300は、異なるサイズのページの変換に対応する。より具体的には、あらゆるウェイ304内のあらゆるエントリが、あらゆる可能なページサイズの変換を記憶することができる。各仮想アドレスは、各ウェイ304において、可能性のある一意のマッピング位置を有する。しかしながら、アドレスとページサイズとのあらゆる組み合わせを、あらゆるウェイ304に記憶することはできない。特定のアドレスを記憶することができるウェイ304は、ページサイズ関数により特定される。ページサイズ関数は、次のように定義される。TLB300の所定のウェイI及び所定の仮想アドレスAについて、仮想ページのサイズが、ページサイズ関数であるS(A、I)である場合にのみ、仮想アドレスAを含むページP(A)をウェイIにマッピングすることができる。換言すると、ページサイズ関数は、仮想アドレスとページサイズとの組み合わせ毎に、当該仮想アドレスが何れのウェイにマッピング可能であるかを示している。ページサイズ関数は、仮想アドレス302の選択ビット312に基づいて結果を生成する。技術的に実現可能なページサイズ関数の任意の実装を使用することができる。
【0020】
ページサイズ関数の機能は、選択関数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に割り当てられている。他の技術的に実現可能な選択関数(又は、ページサイズ関数)を使用してもよい。
【0021】
特定のアドレス及びページサイズに適したセットは、インデックス化関数(indexing function)に基づいて特定される。より具体的には、インデックス化関数は、アドレスと、ページサイズと、ページサイズ関数の出力と、を入力として受信し、アドレスとページサイズとの組み合わせを記憶することができるウェイ毎に、特定のセットを出力する。図3の例では、インデックス化関数は、仮想アドレス302のインデックス部分314と、ページサイズ308と、選択関数の出力(仮想アドレス302の選択ビット312に基づいている)と、を入力として受信し、アドレスを記憶することができるウェイの各々に対してセット番号を出力する。一例では、インデックス化関数は、ウェイのグループ316内のセット毎に同じセットを出力する(上述したように、ウェイのグループ316は、ページ選択の目的で共にグループ化されたウェイ304を含む)。
【0022】
上述したように、MMU204は、TLB300を用いて、仮想アドレス302及びページサイズに基づいてTLB300をインデックス化することによって、仮想アドレス302を物理アドレスに変換する。TLB300のスキュードアソシアティブ性のために、TLB300は、特定の仮想アドレス及びページサイズの組み合わせに対して、仮想アドレス/ページサイズの組み合わせを記憶することができる複数のウェイを含む。したがって、MMU204は、仮想アドレス302の変換を試みるために、インデックス化関数に基づいてセットを識別し、ページサイズ関数に基づいて複数の可能なウェイを識別する。MMU204は、アドレス302のタグ部分310を、識別したセット及びウェイ内の1つのエントリのタグ310と一致させることを試みる。タグ310が1つのエントリにおいて一致する場合にはヒットが発生し、タグ310が一致しない場合にはミスが発生する。
【0023】
ミスの場合、MMU204は、仮想アドレス302に関連する変換をページテーブル208に要求し、受信した変換をTLB300の1つのTLBエントリ301に配置する。MMU204は、アドレス302、ページサイズ308及び最長未使用時間(LRU)データ306を調べる置換ポリシーに基づいて、何れのTLBエントリ301に変換を配置するかを決定する。
【0024】
特定のアドレス及びページサイズの組み合わせに対して、当該アドレスのエントリを複数のウェイ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エントリを含む。
【0025】
各LRUエントリ308は、選択値/ページサイズの組み合わせに対して、特定の選択値/ページサイズの組み合わせの変換を記憶することができるウェイのうち何れのウェイ304が最長未使用時間のウェイであるとみなされるかを示す。例えば、選択値0及びサイズ1のページサイズ(及びセット1)に関して、LRUエントリ308(1)は、ウェイ0又はウェイ1の何れが、最長未使用時間のエントリ301とみなされるエントリ301を記憶しているかを示す。同様に、選択値1及びサイズ2のページサイズに関して、LRUエントリ308(4)は、ウェイ0又はウェイ1の何れが、最長未使用時間のエントリ301とみなされるエントリ301を記憶しているかを示す。
【0026】
上記は、任意の特定のウェイグループ316に関して、インデックス化関数が、任意の特定のアドレスを、当該ウェイグループ316と同じセットにマッピングすることを想定していることに留意されたい。「ウェイグループ」316という用語は、任意の特定の仮想アドレスが同じセットにマッピングされるウェイ304の集合を指す。図3では、2つのウェイグループ316が存在する。第1ウェイグループ316は、ウェイ0及びウェイ1を含み、第2ウェイグループ316は、ウェイ2及びウェイ3を含む。
【0027】
「ウェイグループ」316の概念は、LRUデータが選択値/ページサイズ毎に記憶されることを可能にする。より具体的には、MMU204が特定のアドレス/ページサイズの組み合わせを何れのウェイグループ316にマッピングすることができるかを決定すると、この概念により、異なるウェイ間で有意義な比較を行うことができる。一例では、特定のアドレス/ページサイズの組み合わせがウェイ0及びウェイ1から構成されたウェイグループ316に属するとMMU204が決定すると、ウェイ304をグループ化することは、対応するLRUエントリ308が、MMU204に対して、ウェイグループ316内のウェイのうち1つのウェイを最長未使用時間のウェイとして識別させるのを可能にすることを意味する。
【0028】
置換アルゴリズムの一例では、各ウェイグループ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内で異なる置換が行われることを意味する。
【0029】
本明細書では、特定のLRU置換ポリシーが説明されているが、他の置換ポリシーも可能である。例えば、擬似LRU(PLRU)、ツリー(tree)pLRU等を用いる置換アルゴリズムを使用することができる。さらに、置換アルゴリズムは、ウェイグループ316が3つ以上のウェイ304を含むシナリオで使用されてもよい。このようなシナリオでは、各LRUデータエントリは、複数のビットを記憶することができる。
【0030】
大きいページ及び小さいページの両方を任意の特定のウェイ304に記憶することができるということは、小さいページが大きいページを置き換えることができることを意味する。さらに、LRUデータがページサイズ毎に記憶されるということは、1つのページサイズの置換データが、特定のTLBエントリが置き換えられることを示し、別のページサイズの置換データが、異なるTLBエントリが置き換えられることを示すことを意味する。この可能性は、小さいページの変換による大きいページの変換のエビクトの発生が有利ではない状況において、かかるエビクトが可能であることを意味する。
【0031】
一例では、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エントリがエビクトされることになる。
【0032】
事実上、小さいページの新たな変換は、大きいページの新たな変換をエビクトした。大きいページの変換は、小さいページの変換よりも優先されるべきであるため、この動作は望ましくない。より具体的には、大きいページの変換は、小さいページの変換よりも多くのシステムメモリをカバーするため、小さいページの変換を追加するために大きいページの変換をエビクトすることは、TLBが処理可能なシステムメモリが減少して、TLBにおいてミスが発生する可能性が増大するという影響がある。小さいページの変換をTLBに書き込む場合、この変換を何処かに記憶する必要がある。しかしながら、この変換を、大きいページサイズの最長未使用時間エントリではないTLBエントリに記憶することによって、大きいページサイズの最長未使用時間エントリよりも(少なくとも最長未使用時間の置換セマンティクスの観点から)関連性が高いとみなされる大きいページサイズの変換がエビクトされる。これらの理由により、追加の置換アルゴリズム技術が以下に提供される。
【0033】
図4は、一実施例による、キャッシュミスの場合にLRUデータを変更する動作を示すブロック図である。図示するように、図4は、第1動作400と、第2動作410と、第3動作420と、第4動作430と、を示す。
【0034】
第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へのその後の更新が、最近追加された大きいページサイズの変換をエビクトするのを抑制するという効果を有する。
【0035】
実際には、この追加の更新動作によって、大きいページサイズの変換が、この追加の更新動作が行われなかった場合よりも持続性が高くなる。大きいページの変換は、システムメモリの大部分を利用する。したがって、大きいページの変換の持続性を高めることは、システムメモリの大部分でTLB300をいつでも利用することを可能にし、これにより、TLB300で発生するミスの数を減らし、ページテーブル208から変換を取得するのにかかる全体のレイテンシを短縮し、TLB300の全体的な速度及びパフォーマンスと、概して仮想アドレスを用いたメモリ動作の全体的な速度及びパフォーマンスとを向上させる。
【0036】
図4に示す動作は、上記の技術の一例である。図4の各動作は、TLBのいくつかのセットと、2つのウェイグループ316にグループ化された4つのウェイ(0、1及び2、3)と、第1セットのLRUデータと、を示す。各セットが対応するLRUデータを有することを理解されたいが、簡単にするために、LRUデータは、第1セット以外の何れのセットにも示されていない。
【0037】
第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データを更新しない。
【0038】
第2動作、すなわち動作410は、選択値が1であることを除いて、動作400と同様である。ページサイズは、依然として4Kである。選択値が1であるため、フェッチされた変換は、ウェイ0及びウェイ1の何れかのTLBエントリではなく、ウェイ2及びウェイ3の何れかのTLBエントリ(具体的には、ウェイ2のTLBエントリ3)を置き換える。動作400のように、MMU204は、ページサイズが4Kであるため、他のLRUデータを更新しない。
【0039】
第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エントリがエビクトされるのを抑制することに役立つ。
【0040】
第4動作430は、第4動作のアドレスが選択値0ではなく選択値1と評価したことを除いて、第3動作420と同様である。したがって、MMU204は、選択値0/2MB及び選択値1/4Kを更新するのではなく、選択値0/4K及び選択値1/2MBを更新する。
【0041】
インデックス化関数は、単純化のためだけに、各動作において1を設定するように評価するものとして示されている。インデックス化関数は、何れのセットに対しても評価することができる。図3及び図4では、2つのウェイグループと、グループ毎に2つのウェイと、2つのページサイズと、のみが示されているが、本明細書で説明する技術は、異なる数のウェイグループと、異なる数のグループ毎のウェイと、異なる数のページサイズと、を有するTLBに適用することができる。より多くのページサイズの場合、各サイズは、関連するウェイグループを有する。対応するTLBエントリの変換をフェッチすることによってMMU204が特定のページサイズのLRUデータを更新する場合には、MMU204は、新たに取得された変換を受信したTLBエントリが最長未使用時間のエントリではないことを示すように、小さいページサイズ毎のLRUデータも更新する。
【0042】
図5は、一実施例による、変換索引バッファの最長未使用時間データを更新する方法500のフロー図である。図1図4に関連して示され説明されたシステムについて説明が行われたが、技術的に実行可能な順序で方法を実行するように構成された任意のシステムも本開示の範囲内にあることを理解されたい。
【0043】
図示するように、方法500は、ステップ502から開始し、ステップ502において、MMU204は、仮想アドレスから物理アドレスへの変換がTLB300内に存在しないことに起因するTLB300内のミスを検出する。MMU204は、ページテーブル208から要求された変換をフェッチする。ステップ504において、MMU204は、変換された仮想アドレスのページサイズを判別する。特定のアドレスのページサイズ情報は、ページテーブル208、又は、構成レジスタ(x86アーキテクチャに存在するメモリタイプ範囲レジスタ等が挙げられるが、これに限定されない)のセットから取得することができる。また、MMU204は、ページサイズ関数及びアドレスに基づいて選択値を計算する。選択値は、何れのウェイグループ316が何れのページサイズに割り当てられているかを示す。
【0044】
ステップ506において、MMU204は、ページサイズ、選択値、アドレス及びLRUデータに基づいて、アドレス変換を記憶するためのTLB内のセット及びウェイを識別する。より具体的には、MMU204は、ページサイズ関数及びページサイズに基づいて、変換を記憶することができる可能性のあるウェイを識別し、識別したウェイについてインデックス化関数に基づいてインデックス化の結果を計算して、変換を配置可能なセットを決定し、LRUデータに基づいて、識別したセット内で変換を記憶する特定のウェイを識別する。例えば、LRUデータが、識別したウェイ及び識別したセットの特定のTLBエントリが最長未使用時間のウェイであることを示す場合、MMU204は、当該TLBエントリを、新たに取得した変換を配置するエントリとして識別する。
【0045】
ステップ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データを更新する。
【0046】
ステップ510において、MMU204は、特定のセット/選択値/ページサイズの組み合わせのLRUデータの更新に応じて、同じセットではあるが、異なるページサイズ/選択値の組み合わせのLRUデータを更新する。より具体的には、MMU204は、更新されたLRUデータと同じセットのLRUデータであって、ステップ508でLRUデータが更新されたウェイグループ316と一致する各ページサイズ/選択値の組み合わせに関するLRUデータを更新する。MMU204は、このようなLRUデータを更新して、ステップ508でTLBエントリが変更されたページサイズよりも小さいページサイズ毎に、ステップ508で更新されたTLBエントリが最長未使用時間のTLBエントリではないことを示す。このような小さいページサイズのLRUデータを更新することは、大きいページサイズのTLBエントリが、小さいページのTLBエントリよりも持続的になることを容易にする。
【0047】
本明細書で説明する技術は、TLBの動作を向上させる。より具体的には、変更されたTLBエントリが小さいページサイズの最長未使用時間のエントリではないことを示すために、小さいページサイズのLRUデータを調整することは、小さいメモリページのTLBエントリが、大きいメモリページのTLBエントリをエビクトすることを抑制するのに役立つ。したがって、大きいページの変換は、小さいページの変換よりも「持続的」である。大きいページの変換は、システムメモリの大部分を利用する。したがって、大きいページの変換の持続性を高めることは、システムメモリの大部分でTLB300をいつでも利用することができるのを容易にし、これにより、TLB300内で発生するミスの量を減らし、ページテーブル208から変換を取得するのにかかる全体のレイテンシを短縮し、TLB300の全体的な速度及びパフォーマンスと、概して仮想アドレスを用いるメモリ動作の全体的な速度及びパフォーマンスと、を向上させる。
【0048】
スキュードアソシアティブキャッシュの文脈で説明したが、上記で提供された技術は、セットアソシアティブキャッシュにも適用することができる。このようなセットアソシアティブキャッシュ内のウェイは、上述したようにウェイグループ316にグループ化され、各ウェイグループ316は、アドレスに依存する選択関数(又は、ページサイズ関数)に基づいて選択される。このようなセットアソシアティブキャッシュは、同じアドレスが異なるウェイグループ316内の異なるセットにマッピングされるというスキュードアソシアティブ特性を示さない。その代わりに、アドレスは、各ウェイグループ316内の同じセットにマッピングされる。セットアソシアティブキャッシュのLRUデータは、上記と同様の方法で記憶される。
【0049】
さらに、コンピュータシステムの標準MMU内の変換索引バッファの文脈で説明したが、上記で提供された技術は、CPU等のプロセッサではなく、入出力デバイスのアドレス変換サービスを提供する入出力MMU等の他のMMUにおいて使用することができる。さらに、キャッシュが異なるレベルの汎用性のアドレス変換をキャッシュする限り、上述した技術は、TLB以外のキャッシュにも適用することができる。例えば、上記の技術は、インターネットプロトコルアドレスの異なる部分(例えば、XXX.XXX.___対XXX.XXX.XXX.___は、IPアドレスの1つのクラス対IPアドレスの別のクラス(例えばクラスA対クラスB)を表す)に関するインターネットプロトコルアドレス変換を記憶するキャッシュにおいて使用することができる。「汎用性のレベル」という用語は、特定のキャッシュエントリによってカバーされるアドレス空間の部分を指す。TLBの場合、「より高いレベルの汎用性」は、大きいページサイズの変換に対応し、「より小さいレベルの汎用性」(又は、「より具体的なレベルの汎用性」)は、小さいページサイズの変換に対応する。IPアドレス変換では、小さいIPアドレス部分の変換(つまり、より多くの合計IPアドレスをカバーする)は、大きいIPアドレス部分の変換よりも高いレベルの汎用性を有する。任意の実施態様では、上記の教示は、より高いレベルの汎用性を有するキャッシュエントリの置換ポリシーデータを更新する場合に、より小さいレベルの汎用性を有する同じキャッシュエントリの置換ポリシーデータに対して同様の更新が行われることを指示する。TLBではない任意のキャッシュの実施態様では、MMUの動作は、このようなキャッシュを管理するキャッシュコントローラによって実行されるとみなすことができる。
【0050】
いくつかの例示的なLRUメカニズムが上記のように提供されたが、LRUメカニズムは、技術的に実行可能なLRU技術であってもよい(又は、非LRU置換技術であってもよい)。さらに、技術的に実現可能なページサイズ関数、選択関数及びインデックス化関数を使用することができる。
【0051】
変換索引バッファを含むキャッシュの置換ポリシーデータを更新する方法が本明細書に開示されている。キャッシュの第1キャッシュエントリに対する更新が検出される。第1キャッシュエントリに対応する第1置換ポリシーデータエントリであって、第1ページサイズに関連する第1置換ポリシーデータエントリに対する第1変更が検出される。第1ページサイズよりも小さい第2ページサイズに関連する第2置換ポリシーデータエントリであって、第1キャッシュエントリに関連する第2置換ポリシーデータエントリが識別される。第1変更は、第2置換ポリシーデータエントリに対して行われる。
【0052】
いくつかの例では、第1キャッシュエントリは、仮想アドレスから物理アドレスへの変換を記憶するように構成されている。いくつかの例では、キャッシュは、複数のウェイグループにグループ化された複数のウェイを含み、第1置換ポリシーデータエントリは、ウェイグループのうち第1キャッシュエントリを含む第1ウェイグループの置換ポリシーデータを記憶し、第2置換ポリシーデータエントリは、第1ウェイグループの置換ポリシーデータを記憶する。
【0053】
いくつかの例では、第1キャッシュエントリは、第1メモリページの変換を記憶し、第1メモリページは、第1ウェイグループ内のキャッシュの第1セット、及び、複数のウェイグループのうち第2ウェイグループ内のキャッシュの第2セットにマッピングされており、第2セットは、第1セットとは異なるセットである。いくつかの例では、方法は、キャッシュ内のミスを検出することと、ミスに応じて、キャッシュ内に配置されたアイテムをフェッチすることと、アイテムに関連するアドレス及びアイテムに関連するページサイズに基づいて、アイテムのためのセット及びウェイグループを識別することと、第1置換ポリシーデータエントリに基づいて、ウェイグループ内のウェイを識別することと、を含む。キャッシュの第1キャッシュエントリに対する更新は、識別されたウェイ、セット及びウェイグループに対して実行される。いくつかの例では、ウェイグループ内のウェイを識別することは、アイテムに関連するページサイズの最長未使用時間のキャッシュエントリをウェイグループ内のウェイが記憶していることを第1置換ポリシーデータエントリが示すことを判別することを含む。
【0054】
いくつかの例では、第1置換ポリシーデータエントリは、ウェイグループ内の何れのウェイが最長未使用時間データを含むかを示す1ビットを含む。いくつかの例では、方法は、キャッシュの第2キャッシュエントリに対する第2更新を検出することと、第2キャッシュエントリに対応する第3置換ポリシーデータエントリであって、第2ページサイズに関連する第3置換ポリシーデータエントリに対する第2変更を検出することと、第2ページサイズがキャッシュ内のデータの最小ページサイズであることを判別することと、を含み、第3置換ポリシーデータエントリがキャッシュ内のデータの最小ページサイズに関連していることに応じて、他の置換データが変更されない。
【0055】
本明細書では、キャッシュも提供される。キャッシュは、キャッシュデータを記憶するキャッシュメモリであって、変換索引バッファを含むキャッシュメモリと、置換ポリシーデータを記憶する置換ポリシーメモリと、キャッシュコントローラと、を含む。キャッシュコントローラは、キャッシュメモリの第1キャッシュエントリに対する更新を検出し、第1キャッシュエントリに対応する第1置換ポリシーデータエントリであって、第1ページサイズに関連する第1置換ポリシーデータエントリに対する第1変更を検出し、第1ページサイズよりも小さい第2ページサイズに関連する第2置換ポリシーデータエントリであって、第1キャッシュエントリに関連する第2置換ポリシーデータエントリを識別し、第2置換ポリシーデータエントリに対して第1変更を行うように構成されている。
【0056】
いくつかの例では、第1キャッシュエントリは、仮想アドレスから物理アドレスへの変換を記憶するように構成されている。いくつかの例では、キャッシュは、複数のウェイグループにグループ化された複数のウェイを含み、第1置換ポリシーデータエントリは、ウェイグループのうち第1キャッシュエントリを含む第1ウェイグループの置換ポリシーデータを記憶し、第2置換ポリシーデータエントリは、第1ウェイグループの置換ポリシーデータを記憶する。
【0057】
いくつかの例では、第1キャッシュエントリは、第1メモリページの変換を記憶し、第1メモリページは、第1ウェイグループ内のキャッシュの第1セット、及び、複数のウェイグループのうち第2ウェイグループ内のキャッシュの第2セットにマッピングされており、第2セットは、第1セットとは異なるセットである。いくつかの例では、キャッシュコントローラは、キャッシュ内のミスを検出し、ミスに応じて、キャッシュ内に配置されたアイテムをフェッチし、アイテムに関連するアドレス及びアイテムに関連するページサイズに基づいて、アイテムのためのセット及びウェイグループを識別し、第1置換ポリシーデータエントリに基づいて、ウェイグループ内のウェイを識別するように構成されている。キャッシュの第1キャッシュエントリに対する更新は、識別されたウェイ、セット及びウェイグループに対して実行される。いくつかの例では、ウェイグループ内のウェイを識別することは、アイテムに関連するページサイズの最長未使用時間のキャッシュエントリをウェイグループ内のウェイが記憶していることを第1置換ポリシーデータエントリが示すことを判別することを含む。
【0058】
いくつかの例では、第1置換ポリシーデータエントリは、ウェイグループ内の何れのウェイが最長未使用時間データを含むかを示す1ビットを含む。いくつかの例では、キャッシュコントローラは、キャッシュの第2キャッシュエントリに対する第2更新を検出し、第2キャッシュエントリに対応する第3置換ポリシーデータエントリであって、第2ページサイズに関連する第3置換ポリシーデータエントリに対する第2変更を検出し、第2ページサイズがキャッシュ内のデータの最小ページサイズであることを判別するように構成されており、第3置換ポリシーデータエントリがキャッシュ内のデータの最小ページサイズに関連していることに応じて、他の置換データが変更されない。
【0059】
命令を実行するように構成された実行パイプラインと、キャッシュと、を備えるプロセッサも提供される。キャッシュは、キャッシュデータを記憶するキャッシュメモリであって、命令の仮想メモリアドレスを物理メモリアドレスに変換する変換索引バッファを含むキャッシュメモリと、置換ポリシーデータを記憶する置換ポリシーメモリと、キャッシュコントローラと、を備える。キャッシュコントローラは、キャッシュメモリの第1キャッシュエントリに対する更新を検出し、第1キャッシュエントリに対応する第1置換ポリシーデータエントリであって、第1ページサイズに関連する第1置換ポリシーデータエントリに対する第1変更を検出し、第1ページサイズよりも小さい第2ページサイズに関連する第2置換ポリシーデータエントリであって、第1キャッシュエントリに関連する第2置換ポリシーデータエントリを識別し、第2置換ポリシーデータエントリに対して第1変更を行うように構成されている。
【0060】
いくつかの例では、第1キャッシュエントリは、仮想アドレスから物理アドレスへの変換を記憶するように構成されている。いくつかの例では、キャッシュは、複数のウェイグループにグループ化された複数のウェイを含み、第1置換ポリシーデータエントリは、ウェイグループのうち第1キャッシュエントリを含む第1ウェイグループの置換ポリシーデータを記憶し、第2置換ポリシーデータエントリは、第1ウェイグループの置換ポリシーデータを記憶する。いくつかの例では、第1キャッシュエントリは、第1メモリページの変換を記憶し、第1メモリページは、第1ウェイグループ内のキャッシュの第1セット、及び、複数のウェイグループのうち第2ウェイグループ内のキャッシュの第2セットにマッピングされており、第2セットは、第1セットとは異なるセットである。
【0061】
本明細書における開示に基づいて多くの変形が可能であることを理解されたい。上記では、特徴及び要素が特定の組み合わせで説明されているが、各特徴又は要素は、他の特徴及び要素無しに単独で使用されてもよいし、他の特徴及び要素を伴って又は伴わずに様々な組み合わせで使用されてもよい。
【0062】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令(このような命令は、コンピュータ可読媒体に記憶することが可能である)の結果及びネットリストを含む他の中間データを用いて製造プロセスを構成することによって製造され得る。このようなプロセスの結果は、実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
【0063】
本明細書で提供された方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、例えば読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク、リムーバブルディスク等の磁気媒体、光磁気記憶媒体、例えばCD-ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体が含まれる。
図1
図2
図3
図4
図5