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

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

▶ アーム・リミテッドの特許一覧

<>
  • 特表-変換ルックアサイドバッファ無効化 図1
  • 特表-変換ルックアサイドバッファ無効化 図2
  • 特表-変換ルックアサイドバッファ無効化 図3
  • 特表-変換ルックアサイドバッファ無効化 図4
  • 特表-変換ルックアサイドバッファ無効化 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-11-17
(54)【発明の名称】変換ルックアサイドバッファ無効化
(51)【国際特許分類】
   G06F 12/1027 20160101AFI20221110BHJP
   G06F 12/1036 20160101ALI20221110BHJP
【FI】
G06F12/1027 100
G06F12/1027 115
G06F12/1036 100
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022515726
(86)(22)【出願日】2020-08-26
(85)【翻訳文提出日】2022-03-09
(86)【国際出願番号】 GB2020052042
(87)【国際公開番号】W WO2021048523
(87)【国際公開日】2021-03-18
(31)【優先権主張番号】1913044.2
(32)【優先日】2019-09-10
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】スウェイン、アンドリュー ブルックフィールド
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205MM36
5B205MM54
(57)【要約】
変換ルックアサイドバッファ(TLB)の、特に、第1のタイプのTLBをターゲットとする無効化命令の1つのタイプが記述される。第1のタイプのTLBは、ステージ1変換データとステージ2変換データの両方に依存する、ステージ1と2が結合されたエントリを記憶し、中間アドレスのマッチングに依存する、アドレスに基づく無効化条件を含む、1つ以上の無効化条件の第1のセットに基づく無効化を行うTLB無効化コマンドを無視するように構成されている。第1のタイプ以外の第2のタイプのTLBは、第1のタイプのTLB無効化命令によってトリガされる無効化コマンドを無視する。このアプローチは、中間アドレスによって無効化することができない、ステージ1と2が結合されたTLBをサポートするシステムにおいてステージ2の無効化の性能への影響を限定するのに役立つ。
【選択図】図3

【特許請求の範囲】
【請求項1】
命令に応答してデータ処理を実行する処理回路と、
2段階アドレス変換を実行して、仮想アドレスを物理アドレスに変換するアドレス変換回路と
を備える装置であって、
前記仮想アドレスの前記物理アドレスへのマッピングは、
前記仮想アドレスを中間アドレスにマッピングするためのステージ1変換データと、
前記中間アドレスを前記物理アドレスにマッピングするためのステージ2変換データに依存し、
前記処理回路は、第1のタイプの変換ルックアサイドバッファ(TLB)無効化命令がターゲット中間アドレスを指定することに応答して、前記ステージ1変換データ及び前記ステージ2変換データのうちの少なくとも1つから得られた変換エントリを記憶するために第1のTLB無効化コマンドを少なくとも1つのTLBに対して発行するように構成されており、
前記第1のTLB無効化コマンドは前記少なくとも1つのTLBが、1つ以上の無効化条件の第1のセットを満たす変換エントリを無効化することを要求し、
前記第1のセットは、前記変換エントリが前記ターゲット中間アドレスに対応するときに満たされる、中間アドレスに基づく条件を含み、
前記処理回路は、第2のタイプのTLB無効化命令に応答して、第2のTLB無効化コマンドを発行するように構成されており、前記第2のTLB無効化コマンドは、
前記少なくとも1つのTLBが、第1のタイプのTLBを含む場合、前記第1のタイプのTLBに対して1つ以上の無効化条件の第2のセットを満たす1つ以上の変換エントリを無効化することを要求し、前記第1のタイプのTLBは、前記第1のTLB無効化コマンドを無視するように構成され、かつ前記ステージ1変換データと前記ステージ2変換データの両方に依存する、ステージ1と2が結合されたエントリを記憶するように構成されたタイプのTLBであり、
前記少なくとも1つのTLBが、前記第1のタイプのTLB以外の第2のタイプのTLBを含む場合、前記第2のタイプのTLBは、前記1つ以上の無効化条件の第2のセットを満たす1つ以上の変換エントリを保持する必要がある、装置。
【請求項2】
前記第1のタイプのTLBは、前記ステージ1と2が結合されたエントリが前記ターゲット中間アドレスに対応するかどうかを判定することができないタイプのTLBである、請求項1に記載の装置。
【請求項3】
前記第2のタイプのTLBは、
前記変換エントリが前記ステージ1変換データに依存し、前記ステージ2変換データには依存しないステージ1のみのTLB、
前記変換エントリが前記ステージ2変換データに依存し、前記ステージ1変換データには依存しないステージ2のみのTLB、又は
前記ステージ1と2が結合されたエントリを記憶するように構成され、前記ステージ1と2が結合されたエントリが前記ターゲット中間アドレスに対応するかどうかを判定することができるステージ1と2が結合されたTLB、のうち少なくとも1つを含む、請求項1又は2のいずれかに記載の装置。
【請求項4】
前記1つ以上の無効化条件の第2のセットは、変換エントリによって指定された少なくとも1つの変換コンテキスト識別子が少なくとも1つのターゲット変換コンテキスト識別子とマッチする前記変換エントリによって満たされる少なくとも1つのコンテキストに基づく条件を含む、請求項1~3のいずれかに記載の装置。
【請求項5】
前記1つ以上の無効化条件の第2のセットが、アドレスに基づく条件を含まない、請求項4に記載の装置。
【請求項6】
前記少なくとも1つの変換コンテキスト識別子が、
仮想マシン識別子、
セキュリティ状態識別子、及び
例外レベル識別子
のうち1つ以上を含む、請求項4及び5のいずれかに記載の装置。
【請求項7】
ターゲット変換コンテキスト識別子のそれぞれが、
前記第2のタイプのTLB無効化命令のオペランドによって指定された変換コンテキスト識別子、及び
前記第2のタイプのTLB無効化命令を実行するときの前記処理回路の現在の動作状態に依存する変換コンテキスト識別子、
のうち1つを含む、請求項4~6のいずれかに記載の装置。
【請求項8】
前記1つ以上の無効化条件の第1のセットは、変換エントリによって指定された少なくとも1つの変換コンテキスト識別子が少なくとも1つのターゲット変換コンテキスト識別子とマッチする前記変換エントリによって満たされる少なくとも1つのコンテキストに基づく条件を含む、請求項1~7のいずれかに記載の装置。
【請求項9】
第3のタイプのTLB無効化命令に応答して、前記処理回路は、前記ステージ1変換データに依存し少なくとも1つのターゲット変換コンテキスト識別子にマッチする少なくとも1つの変換コンテキスト識別子を指定する、すべての変換エントリを前記少なくとも1つのTLBが無効化することを要求する、第3のTLB無効化コマンドを発行するように構成されている、請求項1~8のいずれかに記載の装置。
【請求項10】
前記ステージ1と2が結合されたエントリを記憶するように構成され、前記ステージ1と2が結合されたエントリが前記ターゲット中間アドレスに対応するかどうかを判定することができる、ステージ1と2が結合された中間アドレス追跡型TLBである前記第2のタイプの少なくとも1つのTLBを含む、請求項1~9のいずれかに記載の装置。
【請求項11】
前記ステージ1と2が結合された中間アドレス追跡型TLBの各変換エントリが、仮想対物理アドレスマッピング及び対応する中間アドレスを指定する、請求項10に記載の装置。
【請求項12】
前記ステージ1と2が結合された中間アドレス追跡型TLBが、前記第1のTLB無効化コマンドに応答して、前記無効化条件の第1のセットを満たす前記1つ以上の変換エントリの無効化をトリガすることによって、前記第1のTLB無効化コマンドを遵守するように構成されている、請求項10及び11のいずれかに記載の装置。
【請求項13】
前記ステージ1と2が結合された中間アドレス追跡型TLBは、
前記第1のTLB無効化コマンドに応答して、前記無効化条件の第1のセットに基づいて追跡情報を更新することと、
前記第2のTLB無効化コマンド又は前記受信された第1のTLB無効化コマンドの数が閾値を超えたことを検出したことに応答して、前記追跡情報によって表される追跡された無効化条件のセットを満たす1つ以上の変換エントリの無効化をトリガすることと、によって前記第1のTLB無効化コマンドを遵守するように構成されている、請求項10及び11のいずれかに記載の装置。
【請求項14】
前記追跡情報が、一連の1つ以上の第1のTLB無効化コマンドによって指定された前記無効化条件の第1のセットを正確に追跡する、請求項13に記載の装置。
【請求項15】
前記追跡情報が、一連の1つ以上の第1のTLB無効化コマンドによって指定された前記無効化条件の第1のセットを曖昧に追跡するフィルタ表現を含み、それによって、前記追跡された無効化条件のセットを満たす前記変換エントリが、前記一連の1つ以上の第1のTLB無効化コマンドのうちのいずれかによって指定された前記無効化条件の第1のセットを満たさなかったであろう少なくとも1つの変換エントリを含むことが可能となる、請求項13に記載の装置。
【請求項16】
前記第1のタイプの少なくとも1つのTLBを含む、請求項1~15のいずれかに記載の装置。
【請求項17】
前記第2のタイプの少なくとも1つのTLBを含む、請求項1~16のいずれかに記載の装置。
【請求項18】
命令に応答してデータ処理を実行する手段と、
2段階アドレス変換によって、仮想アドレスを物理アドレスに変換する手段と
を備える装置であって、
前記仮想アドレスの前記物理アドレスへのマッピングは、
前記仮想アドレスを中間アドレスにマッピングするためのステージ1変換データと、
前記中間アドレスを前記物理アドレスにマッピングするためのステージ2変換データに依存し、
前記データ処理を実行する手段は、第1のタイプの変換ルックアサイドバッファ(TLB)無効化命令がターゲット中間アドレスを指定することに応答して、前記ステージ1変換データ及び前記ステージ2変換データのうちの少なくとも1つから得られた変換エントリを記憶するために第1のTLB無効化コマンドを少なくとも1つのTLBに対して発行するように構成されており、
前記第1のTLB無効化コマンドは前記少なくとも1つのTLBが、1つ以上の無効化条件の第1のセットを満たす変換エントリを無効化することを要求し、
前記第1のセットは、前記変換エントリが前記ターゲット中間アドレスに対応するときに満たされる、中間アドレスに基づく条件を含み、
前記データ処理を実行する手段は、第2のタイプのTLB無効化命令に応答して、第2のTLB無効化コマンドを発行するように構成されており、前記第2のTLB無効化コマンドは、
前記少なくとも1つのTLBが、第1のタイプのTLBを含む場合、前記第1のタイプのTLBに対して1つ以上の無効化条件の第2のセットを満たす1つ以上の変換エントリを無効化することを要求し、前記第1のタイプのTLBは、前記第1のTLB無効化コマンドを無視するように構成され、かつ前記ステージ1変換データと前記ステージ2変換データの両方に依存する、ステージ1と2が結合されたエントリを記憶するように構成されたタイプのTLBであり、
前記少なくとも1つのTLBが、前記第1のタイプのTLB以外の第2のタイプのTLBを含む場合、前記第2のタイプのTLBは、前記1つ以上の無効化条件の第2のセットを満たす1つ以上の変換エントリを保持する必要がある、装置。
【請求項19】
命令に応答してデータ処理を実行する処理回路とアドレス変換回路とを備える装置が、仮想アドレスを物理アドレスに変換するための2段階アドレス変換を実行する方法であって、
前記仮想アドレスの前記物理アドレスへのマッピングは、
前記仮想アドレスを中間アドレスにマッピングするためのステージ1変換データと、
前記中間アドレスを前記物理アドレスにマッピングするためのステージ2変換データに依存し、
方法は、
第1のタイプの変換ルックアサイドバッファ(TLB)無効化命令がターゲット中間アドレスを指定することに応答して、前記ステージ1変換データ及び前記ステージ2変換データのうちの少なくとも1つから得られた変換エントリを記憶するために第1のTLB無効化コマンドを少なくとも1つのTLBに対して発行することと、
前記第1のTLB無効化コマンドは前記少なくとも1つのTLBが、1つ以上の無効化条件の第1のセットを満たす変換エントリを無効化することを要求し、
前記第1のセットは、前記変換エントリが前記ターゲット中間アドレスに対応するときに満たされる、中間アドレスに基づく条件を含み、
第2のタイプのTLB無効化命令に応答して、第2のTLB無効化コマンドを発行することとを含み、
前記第2のTLB無効化コマンドは、
前記少なくとも1つのTLBが、第1のタイプのTLBを含む場合、前記第1のタイプのTLBに対して1つ以上の無効化条件の第2のセットを満たす1つ以上の変換エントリを無効化することを要求し、前記第1のタイプのTLBは、前記第1のTLB無効化コマンドを無視するように構成され、かつ前記ステージ1変換データと前記ステージ2変換データの両方に依存する、ステージ1と2が結合されたエントリを記憶するように構成されたタイプのTLBであり、
前記少なくとも1つのTLBが、前記第1のタイプのTLB以外の第2のタイプのTLBを含む場合、前記第2のタイプのTLBは、前記1つ以上の無効化条件の第2のセットを満たす1つ以上の変換エントリを保持する必要がある、方法。

【発明の詳細な説明】
【技術分野】
【0001】
本技術は、データ処理分野に関する。
【0002】
データ処理システムは、命令によって指定された仮想アドレスがメモリシステム内の位置を特定する物理アドレスに変換されるアドレス変換をサポートすることができる。いくつかのシステムは、仮想アドレスの物理アドレスへのマッピングが、仮想アドレスを中間アドレスにマッピングするためのステージ1変換データと、中間アドレスを物理アドレスにマッピングするためのステージ2変換データに依存する、2段階アドレス変換をサポートすることができる。2段階アドレス変換は、仮想化をサポートするシステムに有用であり得る。それは、各仮想マシン又はオペレーティングシステムが、それぞれのステージ1変換データのセットを使用してそれら自身の仮想アドレスから中間アドレスへのマッピングを定義できる状態で複数のオペレーティングシステム又は仮想マシンが同一の物理的プラットフォーム上に共存することを2段階アドレス変換が可能とするためである。各仮想マシン又はオペレーティングシステムは、それがシステム上で実行されている唯一の仮想マシン又はオペレーティングシステムである場合と同じように、あたかも中間アドレスが実際の物理アドレスであるかのようにふるまうことができる。しかしながら、異なる仮想マシン又はオペレーティングシステムを制御するハイパーバイザが、所与のオペレーティングシステム又は仮想マシンによって使用される中間アドレスのセットを、メモリシステム内の場所を実際に参照する物理アドレスに対してマッピングするステージ2変換データを定義することができる(異なるオペレーティングシステム又は仮想マシンに対して、ステージ2変換データの異なるセットを定義することができる)。
【0003】
少なくともいくつかの実施例は、
命令に応答してデータ処理を実行する処理回路と、
2段階アドレス変換を実行して、仮想アドレスを物理アドレスに変換するアドレス変換回路と
を備える装置であって、
仮想アドレスの物理アドレスへのマッピングは、
仮想アドレスを中間アドレスにマッピングするためのステージ1変換データと、
中間アドレスを物理アドレスにマッピングするためのステージ2変換データに依存し、
処理回路は、第1のタイプの変換ルックアサイドバッファ(TLB)無効化命令がターゲット中間アドレスを指定することに応答して、ステージ1変換データ及びステージ2変換データのうちの少なくとも1つから得られた変換エントリを記憶するために第1のTLB無効化コマンドを少なくとも1つのTLBに対して発行するように構成されており、
第1のTLB無効化コマンドは少なくとも1つのTLBが、1つ以上の無効化条件の第1のセットを満たす変換エントリを無効化することを要求し、
第1のセットは、変換エントリがターゲット中間アドレスに対応するときに満たされる、中間アドレスに基づく条件を含み、
処理回路は、第2のタイプのTLB無効化命令に応答して、第2のTLB無効化コマンドを発行するように構成されており、第2のTLB無効化コマンドは、
少なくとも1つのTLBが、第1のタイプのTLBを含む場合、第1のタイプのTLBに対して1つ以上の無効化条件の第2のセットを満たす1つ以上の変換エントリを無効化することを要求し、上記第1のタイプのTLBは、第1のTLB無効化コマンドを無視するように構成され、かつステージ1変換データとステージ2変換データの両方に依存する、ステージ1と2が結合されたエントリを記憶するように構成されたタイプのTLBであり、
上記少なくとも1つのTLBが、第1のタイプのTLB以外の第2のタイプのTLBを含む場合、第2のタイプのTLBは、1つ以上の無効化条件の第2のセットを満たす1つ以上の変換エントリを保持する必要がある、装置を提供する。
【0004】
少なくともいくつかの実施例は、
命令に応答してデータ処理を実行する手段と、
2段階アドレス変換によって、仮想アドレスを物理アドレスに変換する手段と
を備える装置であって、
仮想アドレスの物理アドレスへのマッピングは、
仮想アドレスを中間アドレスにマッピングするためのステージ1変換データと、
中間アドレスを物理アドレスにマッピングするためのステージ2変換データに依存し、
データ処理を実行する手段は、第1のタイプの変換ルックアサイドバッファ(TLB)無効化命令がターゲット中間アドレスを指定することに応答して、ステージ1変換データ及びステージ2変換データのうちの少なくとも1つから得られた変換エントリを記憶するために第1のTLB無効化コマンドを少なくとも1つのTLBに対して発行するように構成されており、
第1のTLB無効化コマンドは少なくとも1つのTLBが、1つ以上の無効化条件の第1のセットを満たす変換エントリを無効化することを要求し、
第1のセットは、変換エントリがターゲット中間アドレスに対応するときに満たされる、中間アドレスに基づく条件を含み、
データを処理するための手段は、第2のタイプのTLB無効化命令に応答して、第2のTLB無効化コマンドを発行するように構成されており、第2のTLB無効化コマンドは、
少なくとも1つのTLBが、第1のタイプのTLBを含む場合、第1のタイプのTLBに対して1つ以上の無効化条件の第2のセットを満たす1つ以上の変換エントリを無効化することを要求し、上記第1のタイプのTLBは、第1のTLB無効化コマンドを無視するように構成され、かつステージ1変換データとステージ2変換データの両方に依存する、ステージ1と2が結合されたエントリを記憶するように構成されたタイプのTLBであり、
少なくとも1つのTLBが、上記第1のタイプのTLB以外の第2のタイプのTLBを含む場合、第2のタイプのTLBは、1つ以上の無効化条件の第2のセットを満たす1つ以上の変換エントリを保持する必要がある、装置を提供する。
【0005】
少なくともいくつかの例は、
命令に応答してデータ処理を実行する処理回路と
アドレス変換回路とを備える装置が、仮想アドレスを物理アドレスに変換するための2段階アドレス変換を実行する方法であって、
仮想アドレスの物理アドレスへのマッピングは、
仮想アドレスを中間アドレスにマッピングするためのステージ1変換データと、
中間アドレスを物理アドレスにマッピングするためのステージ2変換データに依存し、
方法は、
第1のタイプの変換ルックアサイドバッファ(TLB)無効化命令がターゲット中間アドレスを指定することに応答して、ステージ1変換データ及びステージ2変換データのうちの少なくとも1つから得られた変換エントリを記憶するために第1のTLB無効化コマンドを少なくとも1つのTLBに対して発行することと、
第1のTLB無効化コマンドは上記少なくとも1つのTLBが、1つ以上の無効化条件の第1のセットを満たす変換エントリを無効化することを要求し、
第1のセットは、変換エントリがターゲット中間アドレスに対応するときに満たされる、中間アドレスに基づく条件を含み、
第2のタイプのTLB無効化命令に応答して、第2のTLB無効化コマンドを発行することとを含み、
第2のTLB無効化コマンドは、
上記少なくとも1つのTLBが、第1のタイプのTLBを含む場合、第1のタイプのTLBに対して1つ以上の無効化条件の第2のセットを満たす1つ以上の変換エントリを無効化することを要求し、上記第1のタイプのTLBは、第1のTLB無効化コマンドを無視するように構成され、かつステージ1変換データとステージ2変換データの両方に依存する、ステージ1と2が結合されたエントリを記憶するように構成されたタイプのTLBであり、
上記少なくとも1つのTLBが、上記第1のタイプのTLB以外の第2のタイプのTLBを含む場合、第2のタイプのTLBは、1つ以上の無効化条件の第2のセットを満たす1つ以上の変換エントリを保持する必要がある、方法を提供する。
【図面の簡単な説明】
【0006】
本技術のさらなる態様、特徴、及び利点は、添付の図面と併せて読まれる以下の例の説明から明らかとなる。
図1】1つ以上の変換ルックアサイドバッファを有するデータ処理システムの例を概略的に示す。
図2図2は、異なるタイプの変換ルックアサイドバッファを概略的に示す。
図3】異なるタイプの変換ルックアサイドバッファ無効化命令の特性を要約する表である。
図4】追跡構造内の一連の変換ルックアサイドバッファ無効化命令から無効化条件を追跡し、それにより、変換ルックアサイドバッファを通る1回のウォークによって一連の命令に対する無効化条件のそれぞれのセットのすべてを満たすことができる例を概略的に示す。
図5】変換ルックアサイドバッファ無効化命令を処理する方法を示すフロー図である。
【0007】
アドレス変換回路が2段階アドレス変換をサポートするシステムでは、最終的に、メモリシステム内に記憶されたページテーブル構造内にステージ1変換データ及びステージ2変換データが記憶され得る。しかしながら、それらのページテーブル構造にアクセスすることは、複数のレベルのページテーブル構造を介するページテーブルウォークにおいて複数のメモリアクセスを必要とする可能性があるために遅く、そのため、ページテーブル構造からのステージ1又はステージ2変換データに依存する変換エントリをキャッシュするための変換ルックアサイドバッファ(TLB)を設けることが一般的である。TLBは、アドレス変換回路が位置する点に対してローカルに提供され得、ページテーブル構造自体よりも速くアクセスされ得る。TLBは、最近アクセスされた又は将来アクセスされると予測されるアドレスのサブセットの変換エントリをキャッシュすることができ、これは性能を改善するのに役立つ。
【0008】
しかしながら、メモリ内のページテーブル構造をソフトウェアが更新するとき、これは、TLB内にいくつかの陳腐化した変換エントリがまだ存在し得ることを意味する。したがって、命令に応答してデータ処理を実行する処理回路は、少なくとも1つのタイプのTLB無効化命令をサポートすることができ、これは、少なくとも1つのTLBに無効化コマンドを発行して、無効化条件の所与のセットを満たす変換エントリがTLBから無効化されることを要求するように処理回路をトリガし得る。異なるタイプのTLB無効化命令は、異なる無効化条件を課し得る。
【0009】
第1のタイプのTLB無効化命令は、ターゲット中間アドレスを指定し、処理回路は第1のタイプのTLB無効化命令に応答して、少なくとも1つのTLBに対して第1のTLB無効化コマンドを発行し得る。第1のTLB無効化コマンドは、少なくとも変換エントリが第1のタイプのTLB無効化命令によって指定されたターゲット中間アドレスに対応するときに満たされる、中間アドレスに基づく条件を含む、1つ以上の無効化条件の第1のセットを満たす変換エントリを、少なくとも1つのTLBが無効化することを要求することができる。そのような命令は、ソフトウェアがステージ2変換データ内の特定のアドレスのアドレスマッピングを更新するシナリオを扱うために有用であり得る。TLBエントリが無効化されるべきである特定のターゲット中間アドレスを指定することができる命令の形態を提供することは、すべてのステージ2変換エントリを無効化する必要はないことを意味し、これは、無効化による性能への影響を限定する。
【0010】
しかしながら、TLBは、アドレス変換回路が2段階アドレス変換をサポートするシステムにおいて異なる方法で実装されてもよく、すべてのタイプのTLBがそれらの変換エントリをターゲット中間アドレスに基づいてルックアップすることができ得るわけではない。したがって、第1のタイプのTLB無効化命令は、ターゲット中間アドレスに関連するステージ2変換データに依存する任意のエントリをすべてのTLBが無効化することを確実にすることができない場合がある。例えば、TLBは、ステージ1変換データ及びステージ2変換データの両方に依存するステージ1と2が結合されたエントリを記憶するタイプのTLBであり得る。そのようなステージ1と2が結合されたエントリは、対応する中間アドレスを指定することなく仮想アドレスを物理アドレスに直接マッピングすることができ、したがって、そのようなエントリを中間アドレスに基づいてクエリすることはできない。しかし、仮想アドレスから物理アドレスへのマッピングはそのステージ2変換データに依存するため、中間アドレスに関連付けられたステージ2変換データが変化するとき、そのようなエントリは無効化される必要がある。したがって、この第1のタイプのTLBは、第1のTLB無効化コマンドを無視するように構成され得る。
【0011】
これに対処するために、1つの代替アプローチは、ターゲット中間アドレスによる無効化を行う第1のタイプのTLB無効化命令の発行に続けて、単にある特定のセットの無効化条件を満たすすべてのTLBエントリを無効化すべきことを指定する第2のTLB無効化命令を発行することであり得、そのタイプのTLB無効化命令の無効化条件は、アドレスに全く依存しない。例えば、これは、特定の変換コンテキストに関連付けられたステージ1変換データに依存する任意のエントリが無効化されるべきであることを指定する命令であり得る。これにより、先行する第1のタイプのTLB無効化命令によって指定されたターゲット中間アドレスに関して変化した関連するステージ2変換データに依存する、ステージ1と2が結合された任意のエントリを第1のタイプのTLBが無効化することが可能となる。ただし、これには、ステージ1変換データに依存するTLBの他の多くのエントリが、ステージ2変換データが変更されたアドレスに実際には関連しない場合であっても無効化されるマイナス面がある。この過剰な無効化は機能的な正確さに影響を及ぼさないが、不必要に無効化された変換エントリに依存するメモリアクセスは、その後、関連する変換データがページテーブル構造から再フェッチされるのを待機する必要があり、再フェッチは遅いため性能に影響を及ぼし得る。
【0012】
いくつかのTLBでは、この過剰な無効化は問題とみなされない場合がある。例えば、中央処理ユニット(CPU)内に設けられるTLBの場合、ステージ2での無効化は非常に稀であり得るため、ステージ2の無効化が必要な場合の過剰な無効化の性能への影響は許容できると考えられる。このようなCPUでは、通常、一定期間の平均性能が許容できる場合、性能が低下する時折のインスタンスが容認され得ると想定される場合がある。これは、一部のメモリアクセスの性能が悪くても、他のアクセスの性能がはるかに速いことで償われ得るためである。
【0013】
しかしながら、本発明者は、この想定がTLBを使用するすべてのデバイスには当てはまらないことを認識した。いくつかのデバイスについて、平均性能よりも重要な基準は、任意のメモリアクセスについて達成されるワーストケース性能であり得る。例えば、フレームがディスプレイをリフレッシュするためのリフレッシュ期間終了までにフレームの表示が準備されるために十分な速さで画像データの各フレームを処理する必要があるディスプレイコントローラの場合、フレームの表示はどのみち次のリフレッシュ期間の終了を待つ必要があるため、平均性能を時々超えることに利点はほとんどない可能性がある。しかしながら、ワーストケース性能に遭遇し、このワーストケース性能が遅すぎる場合、画像データがリフレッシュ期間が終了する前に表示されるために十分に速い処理がなされず、ディスプレイがブランクになるサイクルをもたらす可能性がある。そのようなデバイスの場合、ステージ2の無効化が非常に稀である場合でも、ステージ1のTLBエントリの極端な過剰無効化が、上述の代替アプローチによって引き起こされることは重大な問題であり得る。
【0014】
以下に論じられる技術では、ターゲット中間アドレスによって無効化を行う第1のタイプのTLB無効化命令に加えて、第2のタイプのTLB無効化命令も提供される。第2のタイプのTLB無効化命令に応答して、処理回路は、第2のTLB無効化コマンドを発行し、第2のTLB無効化コマンドは、
少なくとも1つのTLBが第1のタイプのTLBを含む場合、第1のタイプのTLBが、1つ以上の無効化条件の第2のセットを満たす1つ以上の変換エントリを無効化することを要求する。第1のタイプのTLBは、第1のTLB無効化コマンドを無視し、ステージ1変換データ及びステージ2変換データの両方に依存するステージ1と2が結合されたエントリを記憶するタイプのTLBであり、かつ
少なくとも1つのTLBが、第1のタイプのTLB以外の第2のタイプのTLBを含む場合、第2のタイプのTLBが、1つ以上の無効化条件の第2のセットを満たす1つ以上の変換エントリを保持するべきである。
【0015】
したがって、ステージ1と2が結合されたエントリを記憶する特定の第1のタイプのTLBをターゲットとするが、ターゲット中間アドレスによってクエリすることができないため、第1のタイプのTLB無効化コマンドは無視するタイプのTLB無効化命令が提供される。したがって、第1のタイプの任意のTLBについて、第2のタイプのTLB無効化命令は、第1のタイプのTLBが、1つ以上の無効化条件の第2のセットにマッチする任意のエントリを無効化することを必要とする。しかしながら、第1のタイプ以外の第2のタイプのTLBについて、第2のタイプのTLBは、その変換エントリが1つ以上の無効化条件の第2のセットを満たしている場合でも、第2のTLB無効化コマンドの受信に引続き、その変換エントリを保持し得る。
【0016】
したがって、第1のタイプのTLB無効化命令を遵守することができる、又は分割されたステージ1及びステージ2変換データを記憶し、それにより、指定されたターゲット中間アドレスとは無関係な他のエントリを過剰に無効化する必要なく、ステージ2の無効化に正確に対処することができるこれらのTLBは、第2のタイプのTLB無効化命令を無視することができ、したがって、ステージ2変換データの更新によって影響を受けるすべてのエントリが無効化されることを確実にすることの性能への影響を限定する。第1のタイプのTLBのみが、第1のタイプのTLB無効化コマンドを遵守することができないが、それにもかかわらず、1つ以上の無効化条件の第2のセットに基づいて無効化する必要があるステージ1と2が結合されたエントリを有する。
【0017】
性能を改善するのを助けることとあわせ、第2のタイプのTLB無効化命令のサポートはまた、システム設計者たちに、特定のデバイスに提供されるTLBのタイプを変えて、ステージ2の無効化においてより良好な性能を提供するが面積効率で劣るTLBの設計を選択するかどうか、又は、ステージ2の無効化に関し性能が劣る原因となるが、より面積効率の高いTLBの形態を選好し得るかどうかをバランスさせる柔軟性を提供している。例えば、ディスプレイコントローラ又は他の性能に敏感なデバイスと共に使用されることが見込まれるメモリ管理ユニット内のTLBは、第1のタイプのTLB無効化命令を遵守することができるタイプのTLBを実装してもよく、ワーストケースシナリオにおいて性能を維持するため、第2のタイプのTLB無効化命令に応答して無効化を行う必要はない。しかしながら、CPUのメモリ管理ユニット内のTLBは、第1のタイプのTLBを実装することを選択することができる。このタイプのTLBは第1のタイプの無効化コマンドを遵守することはできないが、それに対して、第2のTLB無効化コマンドに応答することで起こり得る過剰無効化の性能への影響を容認することは許容され得る。このアプローチの利点は、第1のタイプのTLBは、回路領域を費やす必要がなく、より面積効率的であることと、どのステージ1と2が結合されたエントリが所与のターゲット中間アドレスに対応するかを検出することができる回路ロジック上の電力バジェットである。したがって、プロセッサにおけるアーキテクチャ上のサポートを第1及び第2の両方のタイプのTLB無効化命令のために提供することは、それらのTLBの設計選択においてシステム設計者がはるかに大きな柔軟性を有することを可能にする利点を有する。
【0018】
異なるタイプのTLB無効化命令は、異なる方法で区別することができる。いくつかの実装では、第1及び第2のタイプのTLB無効化命令は、異なる命令コードを有し得る。あるいは、異なるタイプのTLB無効化命令は、同じ命令コードを有することができるが、TLB無効化命令のタイプを特定する別のパラメータ、又はタイプを集合的に特定する2つ以上のパラメータのセットを指定することができる。別の選択肢では、第1及び第2のタイプのTLB無効化命令の命令符号化は実際には完全に同じであるが、これらの命令を復号化するときに処理回路は制御レジスタ内の制御データを参照し、実行されることが意図されている特定のタイプのTLB無効化命令を制御データが特定する。この制御データは、TLB無効化命令の前に実行された、以前の命令によって設定され得る。
【0019】
第2のTLB無効化コマンドによりターゲットとされる第1のタイプのTLBは、所与のステージ1と2が結合されたエントリがターゲットの媒介物に対応するかどうかを判定することができないタイプのTLBであり得る。
【0020】
一方、第2のTLB無効化コマンドを無視する第2のタイプのTLBは、
変換エントリがステージ1変換データに依存し、ステージ2変換データに依存しない、ステージ1のみのTLB、
変換エントリがステージ2変換データに依存し、ステージ1変換データに依存しない、ステージ2のみのTLB、又は
上記ステージ1と2が結合されたエントリを記憶するように構成され、上記ステージ1と2が結合されたエントリがターゲット中間アドレスに対応するかどうかを判定することができる、ステージ1と2が結合されたTLB
のうちの少なくとも1つであり得る。
【0021】
ステージ1のみのTLBについて、このTLBは第2のタイプのTLB無効化コマンドを無視することができる。これは、第2のタイプのTLB無効化命令はステージ2変換エントリの無効化に使用されることが見込まれ、ステージ1のみのTLBはステージ2変換データに依存するいかなるエントリも記憶しないため第2のTLB無効化コマンドを遵守する必要がないことによる。一方、ステージ2のみのTLB、又は結合されたエントリがターゲット中間アドレスに対応するかどうかを判定することができるステージ1と2が結合されたTLBは、第2のTLB無効化コマンドを遵守する必要がない。これは、それらのTLBは、第1のタイプのTLB無効化命令に応答して、ターゲット中間アドレスに対応する任意の必要なエントリを既に無効化できたはずであるためである。
【0022】
したがって、一般に、ステージ1と2が結合された任意のTLBは、第1のタイプ又は第2のタイプのいずれかとすることで、任意の結合されたTLBが(第2のタイプのTLBのための)第1のTLB無効化命令、又は(第1のタイプのTLBのための)第2のタイプのTLB無効化命令のいずれかに応答するようにシステム設計者によって設計され得る。どちらでも、少なくとも第1のタイプの1つのTLB無効化命令と第2のタイプの1つのTLB無効化とを含む命令のシーケンスは、その結果、更新されたステージ2変換データに依存するすべての変換エントリが無効化されるのを確実とするのに十分であり得る。
【0023】
第2のタイプのTLB無効化命令について、1つ以上の無効化条件の第2のセットは、変換エントリによって指定された少なくとも1つの変換コンテキスト識別子が、少なくとも1つのターゲット変換コンテキスト識別子とマッチする変換エントリによって満たされる、少なくとも1つのコンテキストに基づく条件を含み得る。例えば、変換エントリは変換コンテキスト識別子を指定することができ、これを用いて、異なるソフトウェアプロセスに使用されるページテーブルデータの異なるセット間を区別することにより、あるプロセスからのエントリは、アクセスが別のプロセスからなされたときにはルックアップされないことを確実にすることができる。例えば、変換コンテキスト識別子は、仮想マシン識別子、セキュリティ状態識別子、及び例外レベル識別子のうちの1つ以上であり得る。したがって、第2のタイプのTLB無効化命令は、1つ以上の変換コンテキスト識別子の何らかの組み合わせを指定することができ、それに対してエントリが無効化されることとなる。指定される変換コンテキスト識別子は、第2のタイプのTLB無効化命令によって指定されるオペランドにより定義されてもよく、又は第2のタイプのTLB無効化命令実行時点での処理回路の現在の動作状態に依存してもよい(この場合、第2のタイプのTLB無効化命令で指定される変換コンテキスト識別子は、命令のオペランド内の明示的な識別を用いるのではなく、処理回路の現在の動作状態に関連する変換コンテキスト識別子であることが暗黙であり得る)。これらのオプションのうちのどれが使用されるかにかかわらず、第2のタイプのTLB無効化命令についての1つ以上の無効化条件の第2のセットにコンテキストに基づく条件を含めることにより、これは、(ステージ2の無効化が関連するすべてのエントリに確実に及ぶよう努める際に)エントリが過剰に無効化される可能性の性能への影響は、ステージ2変換データが更新された、関連する変換コンテキストに関連付けられたエントリに限定されることを意味する。
【0024】
1つ以上の無効化条件の第2のセットは、アドレスに基づく条件を含まなくてもよい。したがって、所与のTLBの変換エントリが1つ以上の無効化条件の第2のセットを満たすかどうかのチェックは、TLB内の仮想又は中間アドレスを指定するためのアドレスフィールドとは無関係であり得る。これは、第2のタイプのTLB無効化命令は、第1のタイプのTLB無効化命令に応答するアドレスに基づく無効化クエリを行うことができなかったTLBの捕捉を意図しており、したがって、無効化しようとする関連TLBエントリは、アドレスによって特定できないためである。代わりに、変換コンテキストなどの他のパラメータにより限定され得るがアドレスには依存しない、キャッチオール無効化を実行し得る。
【0025】
他方、第1のタイプのTLB無効化命令については、1つ以上の無効化条件の第1のセットは、少なくともターゲット中間アドレスに基づく、アドレスに基づく条件を上述のように含む。しかしながら、1つ以上の無効化条件の第1のセットはまた、変換エントリによって指定された少なくとも1つの変換コンテキスト識別子が少なくとも1つのターゲット変換コンテキスト識別子とマッチする変換エントリによって満たされる、少なくとも1つのコンテキストに基づく条件を含むように拡張され得る。変換コンテキスト識別子は、上述の変換コンテキスト識別子のタイプのうちのいずれかであり得、命令のオペランドによって指定されてもよく、又は第1のタイプのTLB無効化命令実行時の処理回路の現在の動作状態に基づいて暗黙的に決定されてもよい。
【0026】
第1及び第2のタイプのTLB無効化命令の両方について、それぞれの第1及び第2のセットの無効化条件もまた、他の条件を含むように拡張され得ることが理解されよう。また、これらのタイプのTLB無効化命令のそれぞれについて、異なるセットの無効化条件を有する命令の多くの変形を提供することが可能である。
【0027】
上述の第1及び第2のタイプのTLB無効化命令に加えて、処理回路はまた、第3のタイプのTLB無効化命令に応答してもよい。この第3のタイプのTLB無効化命令は処理回路を制御して、少なくとも1つのTLBが、ステージ1変換データに依存する変換エントリであって、少なくとも1つのターゲット変換識別子にマッチする少なくとも1つの変換コンテキスト識別子を指定する、すべての変換エントリを無効化することを要求する第3のTLB無効化コマンドを発行させる。この場合もやはり、第3のタイプのTLB無効化命令について、無効化条件はアドレスとは無関係であり得る。1つ以上の変換コンテキスト識別子の特定のセットに関連するすべてのステージ1変換データを無効化するキャッチオールTLB無効化が、所与の変換コンテキストのためのステージ1ページテーブルが更新されるときに実行されるステージ1での無効化をサポートすることを目的としてサポートされ得るように、第1のタイプのTLB無効化命令に従うために変換コンテキスト識別子によるキャッチオール無効化を用いて既に記述済みであり得るレガシーコードをサポートすることも、所与の中間アドレスに対するすべてのステージ2に関連するエントリが、中間アドレスによるルックアップをサポートしないTLBにおいても無効化されることを確実とするためにサポートされ得る。しかしながら、第2のタイプのTLB無効化命令を使用するように記述されたより新しいコードの場合、第3のタイプのTLB無効化命令を使用する必要はなく、このことは、中間アドレスによるルックアップができるステージ1のみのTLB又はステージ1と2が結合されたTLBにおける過剰な無効化を回避することによって性能を改善することに役立つ。
【0028】
上述のように、第2のタイプのTLBの1つの形態は、ステージ1と2が結合されたエントリを記憶し、ステージ1と2が結合されたエントリがターゲット中間アドレスに対応するかどうかを判定することができる、ステージ1と2が結合された中間アドレス追跡型TLBであり得る。例えば、ステージ1と2が結合された中間アドレス追跡型TLBの各変換エントリは、仮想対物理アドレスマッピング及び対応する中間アドレスの両方を指定することができる。例えば、各エントリは、仮想アドレス、中間アドレス、及び物理アドレスのすべてのフィールドを有し得る。したがって、そのようなTLBは、仮想アドレスを指定する変換要求に応答して、中間アドレスから物理アドレスへのステージ2TLBにおける第2のルックアップを必要とせずに仮想アドレスを物理アドレスに直接マッピングすることができる一方、中間アドレスに基づいてそのエントリをクエリすることができるため、第1のタイプのTLB無効化コマンドを遵守することもまたできる。
【0029】
そのようなステージ1と2が結合された中間アドレス追跡型TLBは、異なる方法で第1の無効化コマンドを遵守することができ得る。1つの比較的単純なアプローチは、第1のTLB無効化コマンドのそれぞれが、第1のTLB無効化コマンド自体を受信した時点で、無効化条件の第1のセットを満たすエントリの関連する無効化をトリガすることであり得る。したがって、中間アドレスを指定する第1のTLB無効化コマンドを受信するたびに、ステージ1と2が結合された中間アドレス追跡型TLBは、その変換エントリのそれぞれを通ってウォークし、各エントリが無効化条件の第1のセットを満たしているかどうかをチェックし、無効化条件の第1のセットを満たすエントリを無効化し得る。
【0030】
しかしながら、無効化が実行されるべき異なる中間アドレスを指定する第1のTLB無効化命令が、いくつか連続して実行されることが比較的一般的であり得る。もし、第1のタイプのTLB無効化命令のそれぞれが、対応する命令の無効化条件の第1のセットを満たすエントリを見つけるためにそのエントリを通る別個のウォークを、ステージ1と2が結合された中間アドレス追跡型TLBに実行させると、TLB無効化命令シーケンスの全体に応答してTLBを通る複数のウォークが存在し得るため、比較的重大な性能及び電力消費への影響を有し得る。
【0031】
別のアプローチは、ステージ1と2が結合された中間アドレス追跡型TLBは、最終的に多くの第1のタイプの無効化コマンドの後に第2のタイプのTLB無効化コマンドが続くことを見込む、レイジーな無効化を実行することによって第1の無効化コマンドを遵守することができる。この場合、第1のTLB無効化コマンドに応答して、ステージ1と2が結合された中間アドレス追跡型TLBは、第1のTLB無効化コマンドによって指定された無効化条件の第1のセットに基づいて追跡情報を更新することができる。複数の第1のTLB無効化コマンドがある場合、各コマンドを受信するたびに、受信した最新のTLB無効化コマンドに対する無効化命令の第1のセットに基づき、追跡情報をさらに更新することができ、それにより、受信した第1のTLB無効化コマンドのそれぞれに対する無効化条件の第1のセットを追跡情報が経時的に追跡する。次いで、第2のTLB無効化コマンドに応答して、そのコマンド自体は(第2のTLB無効化コマンドは、第1のTLB無効化コマンドを遵守できなかった、ステージ1と2が結合されたTLBをターゲットとすることを意図しているため)、ステージ1と2が結合された中間アドレス追跡型TLBによって遵守される必要がない無効化を命令するものであるにもかかわらず、ステージ1と2が結合された中間アドレス追跡型TLBは、それでも第2のTLB無効化コマンドを、第1のTLB無効化コマンドのシーケンスが完了したことのシグナルとして用い、次いで、追跡情報によって表される無効化条件の追跡されたセットを満たす結合された変換エントリのうちの1つ以上の無効化をトリガすることによって応答することができる。一連の第1のTLB無効化コマンドによって命令された実際の無効化を、第2のTLB無効化コマンドを受信した時点で実行されるように遅らせることにより、第1のTLB無効化コマンドによって必要とされる無効化が、ステージ1と2が結合された中間アドレス追跡型TLBの変換エントリを通る1回のウォークのみによって実施されることが可能となる。これにより、ウォークが各エントリを通るときにそのエントリが追跡情報内の追跡された無効化条件によって表される任意の無効化条件のセットを満たすかどうかをチェックすることができる。これは、TLBを通る多くの冗長なウォークをなくし、したがって、TLBをその後のルックアップにより早く利用可能にすることによって電力を節約し、性能を改善する。
【0032】
したがって、上記で、あるタイプのTLBが第1のタイプのTLB無効化コマンドを遵守することができると述べられている場合、これは、いくつかのタイプのTLBは追跡情報を記憶し、第2のTLB無効化コマンドを受領するときまで無効化の実行を遅らせることができるため、必ずしもそのコマンドに応答してその無効化を実際にトリガしなければならないことを意味しない。
【0033】
いくつかの例では、第2のTLB無効化コマンドが受信されない場合であっても、追跡構造は容量限界を有し得、したがって受信された第1のTLB無効化コマンドの数が閾値を超える場合、追跡構造によって表される無効化もTLBに適用され得る。
【0034】
そのようなアプローチのための追跡情報は、異なる方法で維持することができる。場合によっては、追跡情報は、一連の1つ以上の第1のTLB無効化コマンドによって指定された無効化条件の第1のセットを正確に追跡することができる。例えば、追跡情報は、一連の第1のTLB無効化コマンドのそれぞれによって指定されたすべてのターゲット中間アドレスを追跡するアドレスリストを維持することができる。追跡情報はまた、それらの第1のTLB無効化コマンドと関連付けられた1つ以上の変換コンテキスト識別子を追跡することができる。しばしば、第2のTLB無効化コマンドに先行する一連の1つ以上の第1のTLB無効化コマンドにおいて、それらの第1のTLB無効化コマンドのすべてが、1つ以上の変換コンテキスト識別子の同じセットを指定する無効化条件を有するべきであることが見込まれ得るため、追跡情報は、1つ以上の変換コンテキスト識別子のセットを記録する必要がない場合がある。一連の第1のTLB無効化コマンドの無効化条件を正確に追跡することにより、受信された一連の第1のTLB無効化コマンドのいずれかによって指定された無効化条件の第1のセットを満たさなかったであろうエントリの過剰な無効化がないことが確実になる。
【0035】
別のアプローチでは、追跡情報は、一連の1つ以上のTLB無効化コマンドの無効化条件の第1のセットを曖昧に追跡するフィルタ表現を含み得る。これは、追跡された無効化条件のセットを満たす変換エントリが、追跡情報を更新するのに用いられた、受信された一連の1つ以上の第1のTLB無効化コマンドのうちのいずれかによって指定された無効化条件の第1のセットを満たさなかったであろう少なくとも1つの変換エントリを含むことが可能となることを意味し得る。これは、いくらかの過剰な無効化を可能にし得るが、追跡情報を記憶かつ更新するためのロジックのより効率的な回路実装を可能にする。例えば、ブルームフィルタを使用して、受信された第1のTLB無効化コマンドのそれぞれについて中間アドレスを追跡することができ、これにより、アドレスをより少ないビットの追跡情報を使用して記録することができる。
【0036】
上記で定義された第1及び第2のタイプのTLB無効化命令は、処理回路に実装される命令セットアーキテクチャによってサポートされるアーキテクチャ命令であり得る。これらは、処理回路によって処理される命令を復号化する命令デコーダによってサポートされるネイティブ命令であり得る。そのようなアーキテクチャをサポートする処理回路は、第1及び第2のタイプの無効化命令を実行できるように、第2のタイプのTLBを実際には有しないシステムにおいても提供され得ることが理解されよう。同じソフトウェアは、異なるタイプのTLBを使用するシステム設計範囲にわたって実行され得るため、処理回路は、第1のタイプのTLBを有するシステム上又は第1のタイプのTLBを有しないシステム上のいずれでも正しく機能することを確保するために使用される特定のタイプのTLB無効化命令をサポートすることが有用である。したがって、少なくとも1つの第1のタイプのTLBが存在することは、上述のように、第1及び第2のタイプのTLB無効化命令をサポートする処理回路を有するプロセッサを実装する上で必須ではない。同様に、第2のタイプの特定のTLBの存在も必要とされない。一般に、システムは一定範囲のタイプのTLBを有することができ、選択される特定のタイプは、システム設計者にとっての設計上の選択であり得る。第1及び第2のタイプのTLB無効化命令のためのアーキテクチャ上のサポートにより、システム設計者が、TLBを使用する所与のデバイス又はメモリ管理ユニットの性能及び面積要件に基づいてTLBのタイプを選ぶ上での、選択の柔軟性が可能となる。
【0037】
図1は、プログラム命令を復号化するための命令デコーダ6と、命令デコーダ6によって復号化された命令に応答して処理動作を実行するように制御される処理回路8とを有する、少なくとも1つのCPU(中央処理ユニット)4を有するデータ処理システム2の例を概略的に示す。CPU4は、CPUによるより速いアクセスのためにメモリからデータをキャッシュするためのキャッシュ10を有し、かつCPU4によって実行された命令によって指定された仮想アドレスを、メモリシステム内の位置を特定する物理アドレスに変換するためのアドレス変換回路として機能するメモリ管理ユニット(MMU)12を有する。MMUは、メモリシステムに記憶されたページテーブル構造からのページテーブルデータに依存する変換エントリを記憶するための少なくとも1つのTLB14を有し得る。ページテーブル構造は、仮想アドレスと物理アドレスとの間のアドレスマッピングを定義し、また、CPU4上で実行される特定のソフトウェアプロセスが特定のアドレスにアクセスできるかどうかを定義し得るメモリアクセス許可も定義し得る。MMU12は、仮想アドレスの物理アドレスへのマッピングが、仮想アドレス(VA)を中間物理アドレス(IPA)にマッピングするステージ1アドレス変換データと、IPAを物理アドレス(PA)にマッピングするステージ2変換データとの両方に依存する、2段階のアドレス変換をサポートすることができる。ステージ1のアドレス変換データは、オペレーティングシステム又は仮想マシンによって設定され得る。ステージ2変換データは、ハイパーバイザによって設定され得る。
【0038】
CPU4は、プログラム命令を実行することができるマスターデバイスの一例である。図1は、1つのそのようなマスターデバイスのみを示しているが、システム2は、さらなるCPUを含み得るか、又はグラフィック処理ユニット(GPU)などの他のタイプの命令実行デバイスを含み得る、2つ以上のそのようなデバイスを有し得ることが理解されよう。
【0039】
それら自身の内部MMU12を有する命令実行が可能なCPU4又は他のデバイスに加えて、システムはまた、マスターデバイス20を有し得る。マスターデバイス20は内部MMUを有しなくてもよく、メモリにアクセスし、アドレス変換機能を提供するために、そのようなデバイスは、メモリ内のページテーブル構造内で定義された変換データに基づいてアドレス変換及びメモリ許可を制御するアドレス変換回路を含むシステムメモリ管理ユニット(SMMU)22を介してシステムのその他の部分と通信することができる。この場合も、SMMU22は、CPU4のMMU12内のTLB14と同様の機能を有する1つ以上のTLB24を有し得る。SMMU22を介してメモリにアクセスするデバイス20は、内部キャッシュ26を含むキャッシュデバイスと、いかなるキャッシュも有しない非キャッシュデバイスと、を含むことができる。例えば、デバイス20は、ディスプレイ上の画像フレームの表示を制御するためのディスプレイコントローラ、ネットワークを介したデータの入力又は出力を制御するためのネットワークコントローラ、CPU4などの一般的なプロセッサで実行されるソフトウェアを使用して達成できるよりも効率的な方法で特定の専用処理機能を実行するためのハードウェアアクセラレータ、などを含むことができる。
【0040】
マスターデバイス4、20のすべては、マスターデバイスとメモリシステム32との間のトランザクションのルーティングに関与する相互接続30を介して互いに通信する。相互接続30はまた、システムのそれぞれのキャッシュ10、26にキャッシュされたデータ間のコヒーレンシの管理に関与し得る。図1は簡略図であり、システム2は簡潔さのために図1に示されていない他の多くの構成要素を有し得ることが理解されよう。
【0041】
図1に示すように、システム2は、いくつかのTLB14、24を含み得る。これらのTLBは、異なるタイプのTLBを含み得る。システム2の任意の1つの実装形態は、これらのタイプのTLBをすべて有していなくてもよく、そのタイプは、システム設計者によって行われた設計選択に依存し得る。図2は、いくつかの異なるタイプのTLBを要約する。
【0042】
図2の上部に示されるように、2段階アドレス変換をサポートするTLBの1つの選択肢は、TLB14、24を2つの別個のTLB、すなわち1つのステージ1のみのTLB40及び1つのステージ2のみのTLB42に分割することであり得る。ステージ1のみのTLB40は、供給された仮想アドレスに基づいてルックアップされ得、その仮想アドレスにマッチするエントリを含むとき、仮想アドレスを対応する中間アドレス(IPA)にマッピングする。ステージ2のみのTLB42は、入力IPAに基づいてそのエントリをルックアップすることができ、TLBがそのIPAにマッチするエントリを含むとき、そのIPAに対応する物理アドレス(PA)を出力することができる。したがって、そのような分割されたTLB14、24を以って、仮想アドレスを物理的アドレスに変換することは、ステージ1のみのTLB40で1回、ステージ2のみのTLB42で1回、すなわち2つの別個のルックアップを必要とする。ステージ1のみのTLB40及びステージ2のみのTLB42の両方に示されるように、各エントリは、対応するアドレスマッピングが記憶される変換コンテキストを表すコンテキスト識別子のセットによって限定され得る。変換コンテキストのそれぞれは、アドレスマッピングを定義するメモリに記憶された別個のページテーブル構造を有し得、用いられるコンテキストは、メモリアクセストランザクションを発行しているときのCPU4又は他のマスターの現在の動作状態に依存し得る。例えば、異なるアプリケーションは、それらのそれぞれのアクセス許可及びアドレスマッピングを区別するために、異なるアドレス空間識別子(ASID)と関連付けられ得る。同様に、異なる仮想マシン又はオペレーティングシステムは、それぞれのページテーブル構造にアクセス可能とするために、それぞれの仮想マシン識別子(VMID)と関連付けられ得る。したがって、TLBをルックアップするとき、コンテキスト識別子(又はいくつかのそのような識別子)がTLBへの入力として提供され得、供給されたコンテキスト識別子のセットとマッチするエントリのみがヒットとして返され得る。ステージ1のみのTLBの場合、各エントリがASID50及びVMID52の両方でタグ付けされ得るのに対し、ステージ2のみのTLB42の場合は、ステージ2変換では関連するページテーブルが個々のアプリケーションと関連付けられておらず、したがってASIDは関連しない(同じ仮想マシンによって制御された異なるASIDを有するすべてのプロセスは同じステージ2変換データを共有し得る)ため、VMID52のみが記録され得る。図2には示されていないが、TLBルックアップが、要求マスターの現在の例外(特権)レベル又はセキュリティ状態などの他の変換コンテキスト識別子によって限定されることも可能である。
【0043】
図2の中央部分に示されるように、別のアプローチは、仮想アドレスが物理アドレスに直接マッピングされることを2つの別個のTLBルックアップを行う必要なしに可能にする、ステージ1と2が結合されたTLB60を提供することであり得る。図2に示されるステージ1と2が結合されたTLB60では、仮想アドレスから物理アドレスへの変換で経由したIPAは、実際には各変換エントリに記録されない。したがって、各変換エントリは、ASID50及びVMID52と対応するアドレスマッピングのVA及びPAを記憶することができるが、IPAのいかなる表示も記憶され得ない。そのような結合されたTLBに、その変換エントリを読み込ませるとき、VAからPAへのマッピングを導出するためのページテーブルウォークが、ページテーブルの第1のセット内のステージ1変換データとページテーブルの第2のセット内のステージ2変換データの両方から必要である。いったん変換データの両方のセットがアクセスされると、関連するPAが特定可能であり、次いで、VAからPAへのマッピングが結合されたTLBに記録され、次に同じVAのアクセスがあると再びページテーブルにアクセスする必要なしにPAを直接取得できる。このタイプのTLBは、TLB60にヒットがある場合、PAを得るために1回のTLBルックアップのみ必要とするため、ハードウェア及び性能においてより効率的である。しかしながら、このタイプのTLBは、特定のIPAに関するエントリを含むかどうかを知るためのTLBルックアップを行えないことも意味し、それにより、ステージ2のページテーブルの更新と関連するTLBの無効化に影響する。
【0044】
図2の下部は、ステージ1と2が結合されIPAによるルックアップが可能な、第3のタイプのTLBであるTLB70を示す。ステージ1と2が結合されたTLB60の例と同様に、各エントリは、ASID50、VMID52、VA及びPAを追跡するが、ここではIPAのフィールドが追加されている。VAをPAに変換する通常のTLBルックアップでは、VAとPAのフィールドを使用してVAをPAに直接マッピングできるため、IPAフィールドは使用されない。しかしながら、特定のIPA又はIPAのセットにマッチするエントリの無効化を必要とする無効化コマンドをサポートすることが望まれる場合、いくつかのシナリオで、所与のエントリが特定のIPAにマッチするかをクエリするためのIPAと追加のルックアップ制御ロジックを記憶するための追加の回路ロジックが正当化され得る。
【0045】
図3は、命令デコーダ6とCPU4の処理回路8によってサポートされ得る3つの異なるタイプのTLB無効化命令を要約する。これらのTLB無効化命令(TLBI)のいずれかが実行される場合、処理回路8は、処理システム2内の1つ以上のTLB14、24のセットに対してTLB無効化コマンドを発行するように制御される。いくつかのシステムでは、TLBが無効化される必要がある処理システム内の異なる部分を定義する、異なる特徴のTLB無効化命令が定義され得るため、すべてのTLB無効化命令により、システム内のすべてのTLBに無効化コマンドを送信する必要はない。それにもかかわらず、TLB無効化命令が実行されるときにTLB無効化コマンドが送信されるTLBのセットが存在してもよく、これは、他のマスターデバイス内のTLB又はSMMU22内のTLBを含み得る。
【0046】
そのようなTLB無効化命令は、メモリ内のページテーブル内のステージ1又はステージ2のアドレス変換データが更新された後、既に更新され陳腐化した変換データをTLBは保持し続けることができないことを確実にするために有用であり得る。
【0047】
時に、ステージ2変換データを制御するハイパーバイザが、中間アドレス空間の一部分のみについてアドレスマッピングを更新する可能性がある。TLBが陳腐化したデータを記憶し続けないことを確実にするための1つのアプローチは、単に、ステージ2のコンテキストID50、52の特定のセットに関連付けられたページテーブルに依存する変換データを無効化することをTLBに要求するステージ2の一括無効化をブロードキャストすることであり得る一方、これは、実際にはアドレスマッピング更新の対象となった中間アドレスに関連しない多くの不要なエントリを過剰に無効化し得る。
【0048】
更新されたステージ2変換データに依存するTLB内の変換エントリのよりターゲットを絞った無効化を可能にするために、無効化されるエントリを、指定された中間アドレス(IPA)に基づいて限定するTLB命令が提供される。図3に示す第1のタイプのTLB命令は、そのような中間アドレスに基づく無効化条件を提供する。このタイプのTLB無効化命令は、例えば、中間アドレスを記憶するレジスタXtを指定することによって、ターゲット中間アドレスを指定する。この実施例では、この命令の無効化条件は、変換エントリが、指定されたターゲット中間アドレスと関連付けられたアドレスマッピングに関連する、アドレスに基づく条件と、無効化されるべき変換エントリと関連付けられた任意の変換コンテキスト識別子が、仮想マシン識別子、例外レベル、及びセキュリティ状態のうちのいずれか1つ以上を含み得るいくつかの指定された変換コンテキスト識別子とマッチするときに満たされる、コンテキストに基づく条件とを含む。TLB内で無効化されるエントリの対応する識別子に対してマッチングされる指定されたターゲット変換コンテキスト識別子は、TLB無効化命令のオペランド内のいずれかで指定され得るか、又はCPU4が命令を実行するときの現在の動作状態に基づいて暗黙的であり得る。したがって、第1のタイプのTLB無効化命令が実行されると、この命令は、処理回路8を制御して、第1のTLB無効化コマンドを1つ以上のTLB14、24のセットに対して発行する。この第1のTLB無効化コマンドは、TLBが、命令によって指定された中間アドレスのマッチングに基づくアドレスに基づく条件と、様々なターゲット変換コンテキスト識別子に基づくコンテキストに基づく条件にマッチすること、の両方を含む、無効化条件の第1のセットとマッチする任意のエントリを無効化することを要求する。
【0049】
このタイプのTLB無効化命令は、特定の中間アドレスに対応するステージ2関連エントリの無効化を可能にするのに有用であり得るが、すべてのタイプのTLBがこのタイプの無効化を遵守でき得なくてもよい。ステージ1のみのTLB40は、それらのエントリはステージ1変換データにのみ依存しステージ2変換データに依存せず、したがって、ステージ2変換データに対する任意の更新は、ステージ1のみのTLB40にキャッシュされた任意の変換エントリの有効性に影響を与えないため、このタイプのTLB無効化コマンドを無視することができる。ステージ2のみのTLB42及びステージ1と2が結合されたTLB60、70の両タイプは、ステージ2変換データに依存するエントリを含み得るため、そのようなTLBは、基礎となるステージ2変換データが更新された場合、そのエントリのいくつかを無効化することが必要とされる。ステージ2のみのTLB42及び中間アドレスによってルックアップ可能なタイプの結合されたTLB70の場合、これらのTLB42、70のどのエントリがターゲット中間アドレスにマッピングされるかは特定可能であるため、これらのTLBは第1のTLB無効化コマンドを遵守し得る。したがって、ステージ2のみのTLB42及び中間アドレス70によってルックアップ可能な結合されたTLBは、第1のTLB無効化コマンドに応答し、無効化条件の第1のセット(アドレスに基づく条件とコンテキストに基づく条件の両方を含む)にマッチする任意の他のエントリを無効化する。なお、中間アドレス70によってルックアップ可能な結合されたTLBは、第1のTLB無効化コマンドの遵守をレイジーに行うことができるため、このコマンドを受信した時点で無効化を行う必要は必ずしもなく、図4を参照してさらに論じられるように、第1のTLB無効化コマンドに関連する追跡情報を記憶し、次いでその後、さらなるTLB無効化コマンドに応答してその後の段階で無効化を行うことによって遵守できることに留意されたい。
【0050】
しかしながら、中間アドレスに基づいてそのエントリをルックアップできないステージ1と2が結合されたタイプのTLB60については、そのようなTLBが、第1のタイプのTLB無効化命令によって指定されたターゲット中間アドレスに関連する任意のエントリを有するかどうかを判定することは不可能である。したがって、実際には、第1のタイプのTLB無効化命令のみでは、いずれのTLBにも陳腐化したステージ2変換データに依存するTLBエントリが含まれないことを確実にするのに十分ではない場合がある。
【0051】
図3に示されるように、命令デコーダ6及び処理回路8はまた、第3のタイプのTLB無効化命令であるVmallをサポートすることができる。この命令は、ステージ1変換データに依存するTLBエントリを保持できる任意のTLBが、変換コンテキスト識別子(VMID及び任意選択でセキュリティ状態又は例外レベルなど他の識別子を含む)のマッチングに基づいて、コンテキストに基づく無効化条件とマッチする任意のエントリを無効化することを必要とするが、その無効化条件は、アドレスに基づく無効化条件のいずれにも依存しないため、アドレスに対するチェックを行う必要はない。第3のタイプのTLB無効化命令は、ステージ1のみのTLB40と、結合されたTLB60、70の両タイプによって遵守され得る。この第3のタイプのTLB無効化命令は、処理回路8に第3の無効化コマンドを発行させるが、ステージ1変換データに関連するいかなるエントリも記憶しないステージ2のみのTLB42によって遵守される必要はない。
【0052】
したがって、特定のIPAに関連するステージ2変換データに依存する任意のTLBエントリがステージ2の無効化によって正しく無効化されることを確実にするための1つのアプローチは、第1のタイプのTLB無効化命令(又は一連のそのような第1のタイプのTLB無効化命令)を、第3のタイプの後続のTLB無効化命令によって追従し得ることである。第3のタイプのTLB命令は、ステージ1と2が結合されたTLB60内の任意のエントリであって、中間アドレスによるルックアップができず、陳腐化したステージ2ページテーブルからの変換データに依存している可能性があるエントリを捕捉することを意図し得る。しかしながら、この第3のタイプのTLB無効化命令の副作用はまた、多数のステージ1TLBエントリが第1のタイプのTLBI命令が実行された対象であるIPAと無関係であっても無効化され得ることである。
【0053】
第1及び第3のタイプのTLB無効化命令のみをサポートするシステムでは、ステージ2の無効化が非常に稀であり、一定期間にわたる平均性能はそれでも許容可能であり得るため、ステージ2の無効化をIPAによって実行するときの、第3のタイプのTLB無効化命令による性能への影響は、いくつかのシナリオでは許容可能であり得ると考えられ得る。アプリケーションCPU4の場合、ほとんどの場合に性能が良好であれば、TLBのステージ1関連エントリをフラッシングすることに起因して時折性能悪化を被り、したがって、エントリをフェッチバックする際に再び性能悪化の影響を受けることは許容可能であり得る。
【0054】
しかしながら、これは、SMMU22と相互作用するデバイス20のいくつかにとって特に重要であり得るリアルタイム性能に対する効果を無視している。リアルタイムクリティカルなデバイスの場合、ワーストケース性能が平均性能よりも重要な要素であり得る。非リアルタイムデバイスの場合でさえも、いくつかのデバイスはやはり性能に敏感であり得る。そのようなデバイスの例は、ディスプレイコントローラが使用中のフレームリフレッシュレートにペースを合わせることを可能とするため、サイクル終了前に画像データフレームの表示が準備できているよう、各フレーム表示サイクルで達成される性能レベルが十分であることが重要であるディスプレイコントローラであってもよい。したがって、たとえステージ2の無効化が稀であっても、そのような性能に敏感なデバイスの場合、第3のタイプのTLB無効化命令により、多くのステージ1関連エントリの不必要なフラッシングが時折行われることは重大な性能への影響を有し得る。これは、そのような性能に敏感なデバイスでは、これらの変換がデバイスによって実際にメモリアクセスのための実際のアドレス変換のために必要とされるのに先立って、ページテーブル情報のプレフェッチングを事前に行うなどの戦略を用い得ることから、特に該当する。もし、第3のタイプのTLB無効化命令に応答するなどによる、ステージ1アドレスの、仮想マシンIDによる一括変換があると、そのようなプレフェッチングの利点は大きく限定され得る。それは、ディスプレイコントローラがフレームリフレッシュレートにより課せられた性能要求を満たせないことを示すのに十分であり得、したがってユーザはいくつかの遅延サイクルの間、ブランクスクリーンを見る結果となり得る。
【0055】
これらの問題に対処するために、図3に示されるように、命令デコーダ6と処理回路8はまた、第2のタイプのTLB無効化命令VMALLCOMBをサポートすることができる。この命令は、無効化条件のセットを指定し、無効化条件はアドレスに基づくいずれの条件にも依存しないが、指定された変換コンテキスト識別子のセットを有するTLB内の所与の変換エントリと関連付けられた変換コンテキスト識別子のセットとのマッチングを必要とするコンテキストに基づく条件を含む。再び、これらの変換コンテキスト識別子は、CPU4の仮想マシンID、例外レベル、及び/又はセキュリティ状態であり得る。ターゲット変換コンテキスト識別子は、TLBエントリに対するマッチングを命令のオペランドで指定され得る、又は命令を実行するときにCPU4の現在の動作状態に基づいて暗黙的であり得るときに捜し求められる。したがって、第2のタイプの命令によって指定された無効化条件自体は、実際に第3のタイプのTLB無効化命令によって指定されたそれらの無効化条件と同じであり得る。しかしながら、第2のタイプのTLB無効化命令は、TLBのタイプのより限定されたサブセットをターゲットとするという点で異なる。第2のタイプのTLB無効化命令に応答して、命令デコーダ6は、処理回路8を制御して、無効化の対象であり得るTLB14、24の関連するセットに第2のTLB無効化コマンドを発行する。これらのTLBのいずれかが、ステージ1のみのタイプ40、ステージ2のみのタイプ42、又は中間アドレスによってルックアップ可能なステージ1と2が結合されたタイプ70のいずれかである場合、第2の無効化コマンドは無視され得る。第2の無効化コマンドは、中間アドレスに基づいてそのエントリをルックアップできない、ステージ1と2が結合されたタイプのTLB60によってのみ遵守される必要がある。第2のタイプのTLB無効化命令の効果を、第1のタイプのTLB無効化命令に応答することができないステージ1と2が結合されたタイプのTLB60のみに限定することにより、第3のタイプのTLB無効化命令が用いられれば実行されていたであろう、ステージ1のみのタイプのTLB40又は中間物理アドレスによりルックアップ可能な結合されたタイプのTLB70内の多数のステージ1関連エントリの一括無効化を回避するため、過剰な無効化の可能性を大幅に低減する。したがって、第2のタイプのTLB無効化命令をサポートするシステムにおいてステージ2の無効化を実行するために、プログラマ又はコンパイラは、第1のタイプ(TLBIIPAS2)の1つ以上のTLB無効化命令を含む一連の命令を定義し、第2のタイプのTLB無効化命令(TLBIVMALLCOMB)をそれに続けることによって、第1のタイプのTLB無効化命令によって無効化できなかった、IPAによるルックアップができないステージ1と2が結合されたTLB60内の残存するステージ2関連エントリを一掃し得る。これにより、特にリアルタイムクリティカル又は性能に敏感なデバイスの性能への影響を大幅に低減する。
【0056】
したがって、システム設計者は、結合されたステージ1及び2のTLBを設計するとき、関連付けられたマスターデバイスの必要性に応じて、結合されたタイプのTLB60、70のいずれを使用するかを選択することができる。第3のタイプのTLB無効化命令による過剰無効化の性能への影響がそれほどの問題ではない可能性があるCPU4内のTLB14の場合、中間アドレスを追跡するための記憶セル及びルックアップロジックをなくすことで回路領域を節約するため、中間アドレスによるルックアップができないタイプのTLB60の使用が選好され得る。しかしながら、SMMU22内のTLB24では、設計者は、より広い回路面積を要するが中間アドレスによるルックアップ可能なタイプであるTLB70の使用を選好することができる。それにより、ステージ2の無効化は第1のタイプのTLB無効化命令に応答することができ、したがって、第2のタイプのTLB無効化命令が実行されるときにエントリが過剰に無効化される必要がない。
【0057】
ステージ1と2が結合されたエントリを記憶し、中間アドレスによってそのエントリをルックアップすることができるTLB70のタイプについて、第1のTLB無効化コマンドの遵守は、異なる方法で達成することができる。1つの選択肢は、第1のTLB無効化動作が、CPU4からTLB無効化コマンドを受信した時点で必要なTLBエントリを正確に無効化することであり、この場合、第2のTLB無効化命令VMALLCOMBによってトリガされた第2のタイプのTLB無効化コマンドは、完全に無視され得る。このアプローチは、実施するのが比較的簡単であり得るが、無効化動作のそれぞれが無効化条件とマッチするかどうかをチェックするためのTLBの全エントリを通るウォークを要する。そのため、プログラムが異なる中間アドレスを指定する一連の2つ以上の第1のタイプのTLB無効化命令を実行する場合、TLBの多数の別個のウォークが必要であり得、性能と電力への影響を有し得る。
【0058】
第2のアプローチは、第1のTLB無効化命令による無効化を、第2のタイプの命令によってトリガされる後続のTLB無効化コマンドがTLBによって受信されるまで、遅らせることであり得る。図4に示されるように、追跡構造100を、IPAによりルックアップ可能なタイプのTLB70と関連して提供することができる。このタイプのTLB70によって遵守されなければならない第1のTLB無効化コマンドが受信されると、無効化をすぐに行うのではなく、中間アドレスの表示を含む、その第1のTLB無効化コマンドと関連付けられた無効化条件の表示を記録するために追跡構造が単に更新される。複数の第1のタイプのTLB命令が実行される場合、対応する第1のTLB無効化コマンドが結合されたTLB70によって受信されるたびに、それは、受信されたTLB無効化コマンドの無効化条件の最新セットに基づいて、その追跡構造100を更新する。続いて、第2のタイプのTLB無効化命令が実行され、対応する第2のTLB無効化コマンドを結合されたTLB70が受信すると、これをトリガとして使用して、TLB70の全エントリを通るウォークを行い、これらのエントリのそれぞれが追跡構造100内で追跡された無効化条件のセットのうちのいずれかとマッチするかどうかをチェックし、そして、それらの無効化条件のセットのうちの1つにマッチするエントリを無効化することができる。これは、実行された第1のタイプのTLB無効化命令のそれぞれについてのすべての無効化が、TLB70を通る1回のウォークで実施され得ることを意味する。
【0059】
追跡構造100は、異なる方法で実装することができる。一般に、一連の連続した第1のタイプのTLB無効化命令において、それらはすべて、変換コンテキストIDの同じセットに関連する可能性があり、したがって、無効化命令の各セットのコンテキスト識別子を追跡するために単一の変換コンテキスト記憶エントリのみが必要であり得るが、一連の命令によって指定されたそれぞれの中間アドレスを追跡するためには別個のエントリが必要とされ得ると見込まれる。場合によっては、追跡構造は、単に受信された無効化動作についての中間アドレスのリストであってもよく、すべて、第2のタイプのTLB無効化コマンドが受信されると各エントリに対してチェックされ得る。場合によっては、追跡構造100で追跡することができるアドレスの数は、何らかの最大数に限定されており、したがって、たとえ、第2のタイプのTLB無効化命令がまだ実行されていなくても、最大数が最終的に到達又は超過されると、これをトリガとして使用して、追跡構造によって追跡されている無効化を結合されたタイプのTLB70に適用し、中間物理アドレスと、以前の無効化動作によって指定された変換コンテキスト識別子のセットのいずれかとマッチする、関連エントリを無効化し得る。
【0060】
他方で、追跡構造100は、ブルームフィルタなどの曖昧なフィルタを使用して、保留中の第1のTLB無効化コマンドについての中間アドレスを追跡し、次いで、第2のTLB無効化コマンド(VMALLCOMB)が受信される、又は第1のTLB無効化コマンドの最大数が到達されると、結合されたTLB70は、フィルタに記憶された表現とマッチする中間アドレスを有するそのエントリのいずれかを無効化することができる。このアプローチは、エントリを過剰に無効化する可能性がある。これは、フィルタ表現は、偽陰性を提供することは不可能(フィルタを更新するのに用いられたいずれのアドレスのTLBエントリもフィルタ表現とマッチするとみなされる)である一方、追跡フィルタ構造を更新するために使用された中間アドレスの1つ以外のアドレスがフィルタに対しマッチするとフィルタがみなし、フィルタが偽陽性の特定を行う可能性があるためである。したがって、受信された第1のTLB無効化コマンドによって厳密には必要とされなかった追加のTLBエントリの不必要な無効化が実行され得る。エントリのいくらかの過剰無効化があり得るものの、第3のタイプのTLB無効化命令が実行された場合よりも少ないエントリが関わり得る。フィルタの使用により、追跡構造のオーバーヘッドを低減することができる(正確な追跡構造よりも回路領域と電力の負担が少ない)。
【0061】
IPA70によってルックアップ可能な他のタイプのステージ1と2が結合されたTLB70は、この追跡アプローチを使用しないことを選好し、代わりに、第1のTLB無効化コマンドが受信されるたびに単にTLBをウォークし、必要な中間アドレスにマッチする任意のエントリを見つけてもよい。
【0062】
図5は、CPU4におけるTLB無効化命令を処理する方法を示すフロー図である。ステップ150で、命令デコーダ6はTLB無効化命令を復号化する。ステップ152で、命令デコーダ6は、実行されるTLB無効化命令のタイプを識別する。タイプは、命令の命令コードに基づいて、又は命令の符号化において指定された別のパラメータに基づいて、又はCPU4の制御レジスタに記憶されたパラメータに基づいて識別することができ、これは、例えば、ソフトウェアによって制御される以前の命令に応答して更新され得る。別の例は、TLB無効化命令のタイプが、TLB命令の前に置かれその後のTLB無効化命令のタイプを修正する先行する命令によって影響されることであり得る。
【0063】
命令デコーダ6が、TLB無効化命令が図3に示されるような第1のタイプであることを識別する場合、ステップ154で、命令デコーダ6は、処理回路8を制御して、TLB14、24に第1のTLB無効化コマンドを発行する。第1のTLB無効化コマンドは、TLBが、無効化されるエントリに対応する中間アドレスが、命令のオペランド内で、例えばターゲットアドレスを含むレジスタXtを参照することによって特定される、指定されたターゲット中間アドレスに対応するという条件を含む、無効化条件の第1のセットを満たすエントリを無効化することを要求する。第1のTLB無効化コマンドがTLBに発行されても、すべてのTLBがコマンドを遵守することはできない場合があり、例えば中間アドレスによるルックアップができない結合されたTLB60は、応答できない可能性があるため、第1のTLB無効化コマンドを無視することが許容される。
【0064】
TLB無効化命令が第2のタイプ(VMALLCOMB)であると識別された場合、ステップ156で、命令デコーダ6は、処理回路8を制御して、第2のTLB無効化コマンドをTLB14、24に発行する。第2のTLB無効化コマンドは、第1のTLB無効化コマンドを遵守しない、ステージ1と2が結合されたTLB60に、無効化条件の第2のセットを満たすエントリを無効化することを要求するコマンドである。この無効化条件の第2のセットは、コンテキスト識別子マッチングに基づき得、いずれのアドレスに基づく比較とも無関係であり得る。したがって、この第2のタイプのTLB無効化コマンドは、第1のTLB無効化コマンドを遵守できなかったTLBが、ステージ2変換データの更新対象であったかも知れない関連エントリを無効化することを可能にする。
【0065】
ステップ152で、命令デコーダ6が、TLB無効化命令が第3のタイプであることを識別した場合、ステップ158で、命令デコーダ6は、処理回路8を制御して、第3のTLB無効化コマンドTLB14、24を発行する。第3のTLB無効化コマンドは、ステージ1のみのTLB40又はステージ1及び2が結合されたTLB60及び70が、アドレスにかかわらず、特定のターゲット変換コンテキスト識別子のセットと、TLBエントリと関連付けられた変換コンテキスト識別子のセットとの間の変換コンテキスト識別子比較に依存する無効化条件の第3のセットを満たすすべてのエントリを無効化することを要求する。第3のTLB無効化コマンドは、より多くのタイプのTLBがそれによって影響を受けるため、第2のTLB無効化コマンドよりも性能へのより大きな影響をもたらす。
【0066】
命令デコーダはまた、図3に具体的に示されていない他のタイプのTLB無効化命令をサポートすることもできる。任意の他のタイプのTLB命令について、ステップ160で、命令デコーダ6は、処理回路8を制御して、どのエントリを無効化する必要があるかを決定する無効化条件のいくつかの他のセットを適用するための、TLBを制御する別のタイプのTLB無効化コマンドを送信する。
【0067】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することができる構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配置又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスが、機能を行うようにプログラムされてもよい。「ように構成された」は、装置要素が、定義された動作を提供するために任意の方法で変更される必要があることを意味しない。
【0068】
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されてきたが、本発明はそれらの正確な実施形態に限定されず、添付の特許請求の範囲によって定義される本発明の範囲及び精神から逸脱することなく、当業者によって様々な変更及び修正を行うことができることを理解されたい。

図1
図2
図3
図4
図5
【国際調査報告】