JP7133615B2 - アドレス変換キャッシュ - Google Patents

アドレス変換キャッシュ Download PDF

Info

Publication number
JP7133615B2
JP7133615B2 JP2020503733A JP2020503733A JP7133615B2 JP 7133615 B2 JP7133615 B2 JP 7133615B2 JP 2020503733 A JP2020503733 A JP 2020503733A JP 2020503733 A JP2020503733 A JP 2020503733A JP 7133615 B2 JP7133615 B2 JP 7133615B2
Authority
JP
Japan
Prior art keywords
address
cache
invalidation
page table
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020503733A
Other languages
English (en)
Other versions
JP2020529656A (ja
Inventor
ブルックフィールド スウェイン、アンドリュー
Original Assignee
アーム・リミテッド
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 アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2020529656A publication Critical patent/JP2020529656A/ja
Application granted granted Critical
Publication of JP7133615B2 publication Critical patent/JP7133615B2/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
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

Landscapes

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

Description

本技術はデータ処理の分野に関する。より詳細には、アドレス変換データのキャッシングに関する。
データ処理システムは、メモリシステムアクセス用にアドレスを変換するために使用されるアドレス変換データをキャッシュするための少なくとも1つのアドレス変換キャッシュを有し得る。キャッシュ内のアドレス変換データは、メモリシステム自体に格納されている1つまたは複数のページテーブルのページテーブルエントリに依存し得る。アドレス変換データをアドレス変換キャッシュにキャッシュすることにより、アドレス変換が必要になるたびにメモリからページテーブルを検索する必要がある場合よりも、アドレスをより速く変換できる。ページテーブルに変更が加えられた場合(例えば、オペレーティングシステムが所与のソフトウェアプロセスまたはコンテキストに使用されているメモリマッピングを変更することができる場合)、無効化要求がアドレス変換キャッシュに送信され、変更されたページテーブルエントリに依存するアドレス変換データを提供するアドレス変換キャッシュの少なくとも1つのターゲットキャッシュエントリが無効化され得る。
少なくともいくつかの例では、
複数のキャッシュエントリを含むアドレス変換キャッシュであって、各キャッシュエントリは、メモリシステムに格納された1つまたは複数のページテーブルの1つまたは複数のページテーブルエントリに依存するアドレス変換データを格納する、アドレス変換キャッシュと、
少なくとも1つのターゲットページテーブルエントリに対応するアドレス情報を指定する無効化要求に応答して、無効化ルックアップ操作を実行して、アドレス変換データが前記少なくとも1つのターゲットページテーブルエントリに依存しているアドレス変換キャッシュの少なくとも1つのターゲットキャッシュエントリを識別して、前記少なくとも1つのターゲットキャッシュエントリに格納されているアドレス変換データの無効化をトリガする、制御回路と、
を備える装置が提供され、
制御回路は、前記少なくとも1つのターゲットページテーブルエントリのページサイズを示すページサイズ情報に応じて、無効化ルックアップ操作に使用する複数の無効化ルックアップモードのいずれかを選択するように構成され、複数の無効化ルックアップモードは、アドレス情報に応じて前記少なくとも1つのターゲットキャッシュエントリを識別するさまざまな方法に対応する。
少なくともいくつかの例は、複数のキャッシュエントリを含むアドレス変換キャッシュからのアドレス変換データを無効化するための方法を提供し、各キャッシュエントリは、メモリシステムに格納された1つまたは複数のページテーブルの1つまたは複数のページテーブルエントリに依存してアドレス変換データを格納し、方法は:
少なくとも1つのターゲットページテーブルエントリに対応するアドレス情報を指定する無効化要求に応答して:
アドレス変換データが前記少なくとも1つのターゲットページテーブルエントリに依存するアドレス変換キャッシュの少なくとも1つのターゲットキャッシュエントリを識別するために、無効化ルックアップ操作を実行するステップであって、複数の無効化ルックアップモードのいずれが無効化ルックアップ操作に使用されるかは、前記少なくとも1つのターゲットページテーブルエントリのページサイズを示すページサイズ情報に応じて選択され、複数の無効化ルックアップモードは、アドレス情報に応じて前記少なくとも1つのターゲットキャッシュエントリを識別するさまざまな方法に対応する、ステップと、
前記少なくとも1つのターゲットエントリに格納されたアドレス変換データの無効化をトリガするステップと
を含む。
少なくともいくつかので例は、
複数のキャッシュエントリを含むアドレス変換キャッシュであって、各キャッシュエントリは、メモリシステムに格納された1つまたは複数のページテーブルの1つまたは複数のページテーブルエントリに依存するアドレス変換データを格納し、
各ページテーブルエントリは、
次のレベルのページテーブルエントリのアドレスを指定する中間ページテーブルエントリ、および、
アドレス変換マッピングを指定するリーフページテーブルエントリ
のいずれかを備える、アドレス変換キャッシュと、
アドレス変換データが少なくとも1つのターゲットページテーブルエントリに依存するアドレス変換キャッシュの少なくとも1つのターゲットキャッシュエントリの無効化をトリガするために、アドレスの無効化範囲を示す範囲情報を識別するリーフおよび中間の排他的範囲指定無効化要求に応答する制御回路であって、前記少なくとも1つのターゲットページテーブルエントリは、完全に前記無効化範囲内にある所与のページテーブルの任意のリーフページテーブルエントリおよびアドレスグループに対応する前記所与のページテーブルの任意の中間ページテーブルエントリを含む、制御回路と
を備える装置が提供される。
少なくともいくつかの例では、
複数のキャッシュエントリを含むアドレス変換キャッシュであって、各キャッシュエントリはアドレス変換データを格納する、アドレス変換キャッシュと、
無効化ルックアップ操作を実行して、単一アドレスとページサイズ情報に応じてアドレス変換キャッシュの少なくとも1つのターゲットキャッシュエントリを識別し、前記少なくとも1つのターゲットキャッシュエントリに格納されているアドレス変換データの無効化をトリガするために、単一アドレスと、前記単一アドレスに対応するページテーブルエントリに関連付けられたページサイズを示すページサイズ情報とを指定する無効化要求に応答する、制御回路と
を備える装置が提供される。
本技術のさらなる態様、特徴および利点は、添付の図面と併せて読まれるべきである以下の例の説明から明らかとされよう。
少なくとも1つのアドレス変換キャッシュを有するデータ処理システムの例を概略的に示す図である。 所与のアドレスを変換するためのアドレスマッピングを見つけるためのマルチレベルページテーブルウォーク操作の例を示す図である。 2ステージのアドレス変換プロセスの例を示す図である。 アドレス変換キャッシュのエントリの例を示す図である。 仮想アドレスのさまざまな部分を使用してアドレス変換キャッシュにインデックスを付ける例を示す図である。 無効化要求を処理する方法を示すフロー図である。 ページサイズ情報を提供する4つの異なる例を示す図である。 ページサイズ情報に基づいて無効化ルックアップモードを選択する方法を示すフロー図である。 ページサイズ情報に基づいて無効化ルックアップモードを選択する第2の例示的な方法を示す図である。 範囲指定無効化要求の対象となるページテーブルエントリを選択するためのさまざまなオプションを示す図である。
アドレス変換キャッシュにはいくつかのキャッシュエントリがあり得、各キャッシュエントリには、メモリシステムに格納された1つまたは複数のページテーブルからの1つまたは複数のページテーブルエントリに依存するアドレス変換データが格納され得る。一部のアドレス変換キャッシュでは、各エントリがメモリ内のページテーブルの1つのページテーブルエントリにのみ対応する場合がある。ただし、所与のキャッシュエントリが、ページテーブルの2つ以上のページテーブルエントリに依存するアドレス変換データを提供することも可能である。例えば、これは、1つのキャッシュエントリが、アドレス変換の複数のステージに対応する結合アドレス変換を格納する可能性があるためである。それらのキャッシュエントリが依存する対応するページテーブルエントリが変更された場合、無効化要求を使用してアドレス変換キャッシュからアドレス変換データを削除できる。無効化要求は、少なくとも1つのターゲットページテーブルエントリに対応するアドレス情報を指定することができ、これにより、アドレス変換キャッシュの制御回路がトリガされ、無効化ルックアップ操作が実行され、アドレス変換データが少なくとも1つのターゲットページテーブルエントリに依存する少なくとも1つのターゲットキャッシュエントリが識別され、少なくとも1つのターゲットキャッシュエントリに格納されているアドレス変換データを無効化することができる。無効化ルックアップ情報はアドレス情報に依存するが、特定の実装によって異なり得る他の情報にも依存する可能性がある。例えば、キャッシュエントリには、そのエントリに対応するアドレスブロックのサイズの表示などの追加情報、および/または仮想マシン識別子やストリーム識別子などのコンテキスト識別子を格納するこができ、これを使用して、無効化要求に応答して、所与のキャッシュエントリを無効化すべきかどうかを決定することができる。
一部のアドレス変換キャッシュでは、無効化ルックアップ操作を実行して無効化される必要なターゲットキャッシュエントリを見つけるさまざまな方法に対応するいくつかの無効化ルックアップモードが存在する場合がある。場合によっては、同じ無効化要求に対して2つ以上の無効化ルックアップモードを実行できる。一部の無効化ルックアップモードは、他の無効化ルックアップモードよりも待機時間と消費電力の点で実行コストが高くなる場合がある。発明者は、所与の無効化ルックアップモードが必要かどうかは、所与の無効化要求の対象となるページテーブルエントリのページサイズに依存する可能性があることがわかった。一部のページサイズでは、すべての無効化ルックアップモードが必要なわけではない。したがって、制御回路は、少なくとも1つのターゲットページテーブルエントリのページサイズを示す無効化要求に関連付けられたページサイズ情報に基づいて、無効化ルックアップ操作に使用する複数の無効化ルックアップモードのいずれかを選択することができる。ページサイズ情報を考慮することにより、不要な無効化ルックアップモードを省略したり、より高価なルックアップモードを使用するか、より安価なルックアップモードを使用するかについて、より多くの情報に基づいた決定を行ったりすることができる。これにより、アドレス変換キャッシュからの無効化の処理のパフォーマンスを改善できる。
一例では、無効化ルックアップモードは、キャッシュインデックスモードとキャッシュウォークモードを備えてもよい。キャッシュインデックスモードでは、無効化ルックアップ操作は、アドレス情報に基づいて選択されたアドレス変換キャッシュの少なくとも1つの選択されたキャッシュエントリにインデックスを付けること、および各選択されたキャッシュエントリが少なくとも1つのターゲットキャッシュエントリの1つであるかどうかを判断することを含む。キャッシュウォークモードでは、無効化ルックアップ操作は、アドレス情報とは無関係に選択されたアドレス変換キャッシュのキャッシュエントリの少なくともサブセットにアクセスすること、およびアクセスされた各キャッシュエントリが前記少なくとも1つのターゲットキャッシュエントリの1つであるかどうかを判断することを含んでもよい。制御回路は、ページサイズ情報に基づいて、キャッシュインデックスモードおよびキャッシュウォークモードのどちらを使用するかを選択してもよい。
無効化要求の形式によっては、通常はアドレス変換キャッシュの1つのエントリにマッピングされると予想される単一のターゲットアドレスを指定する場合があるため、無効化ルックアップに応答して1つのヒットのみが予想され得る。キャッシュインデックスモードは、このような無効化要求に使用して、アドレス情報に基づいて選択された1つまたは複数のエントリのセットにアクセスし、キャッシュ内のすべてのエントリをチェックする必要なしに、選択した各キャッシュエントリが必要なターゲットキャッシュエントリであるかどうかを判断できる。例えば、少なくとも1つの選択されたキャッシュエントリは、セットアソシアティブキャッシュ実装の複数のエントリのセットに対応し得るか、直接マッピングされたキャッシュ構造の1つのエントリに対応する可能性がある。
ただし、一部のキャッシュは、同じページテーブルエントリに依存して複数のキャッシュエントリをサポートすることがある(例えば、アドレス変換のさまざまなステージによるエントリが単一のキャッシュエントリに結合される場合)。所与の無効化要求のアドレス情報に複数のエントリがヒットできる場合、キャッシュウォークモードを使用してキャッシュの一部をステップスルーし、無効化が必要な可能性のあるすべての可能なエントリを識別できる。場合によっては、キャッシュウォークモードがキャッシュストレージ全体のすべてのエントリをウォークスルーすることがある。ただし、キャッシュの他の部分が必要なデータを格納できないことがわかっている場合、キャッシュウォークモードでキャッシュエントリのサブセットのみを対象とすることもできる。キャッシュウォークモードは、指定されたアドレス情報に基づいて特定のエントリにインデックスを付けるのではなく、アドレスに関係なくキャッシュのすべての部分にアクセスすることが可能であり、したがってより多くのキャッシュエントリにアクセスする必要があるため、キャッシュインデックスモードよりもパフォーマンスおよび消費電力の点でコストが高くなる場合がある。通常、同じ無効化要求に対してヒットする複数のキャッシュエントリをサポートするキャッシュでは、そのようなエントリが存在し得るリスクがあるとすぐに、制御回路はキャッシュウォークモードに切り替わる。ただし、これは、すべての無効化要求が特に大きなアドレス変換キャッシュでは非常に遅くなる可能性があるキャッシュウォークモードを使用して処理され得ることを意味することができる。
以下の例では、キャッシュウォークモードが実際に必要かどうかは、無効化要求の対象となるページテーブルエントリのサイズに依存する可能性があることがわかった。例えば、ページサイズが閾値サイズよりも小さい場合、複数のエントリが同じアドレスにマッピングされるリスクがない場合があるため、キャッシュインデックスモードが選択され得、ページサイズが閾値サイズより大きいことをページサイズ情報が示している場合は、キャッシュウォークモードが選択され得る。ページサイズが閾値サイズに等しい場合、閾値が設定されている特定のレベルに依存して、キャッシュインデックスモードまたはキャッシュウォークモードのいずれかを選択できる。したがって、ページサイズ情報に基づいてキャッシュ無効化ルックアップモードを選択することにより、不必要なフルキャッシュウォークを回避できる。
システムによっては、複数のステージのアドレス変換を提供する場合があり、第1ステージは第1アドレスから第2アドレスに変換し、第2ステージは第2アドレスから第3アドレスに変換する。処理回路は、第1アドレスの第2アドレスへの変換を制御するためのステージ1ページテーブルを構成し、第2アドレスの第3アドレスへの変換を制御するためのステージ2ページテーブルを構成し得る。例えば、第1のアドレスは、処理回路によって実行されるプログラム命令によって指定される仮想アドレスであってもよく、これは、ステージ1ページテーブルの制御下で中間物理アドレスにマッピングされてもよい。ステージ1ページテーブルは、例えばオペレーティングシステムによって構成され得る。ただし、仮想化をサポートするために、ハイパーバイザは、中間物理アドレスをメモリシステムで実際に使用される物理アドレスにマッピングするステージ2ページテーブルで、さらなるアドレス変換を提供できる。
一部の実装形態では、ステージ1およびステージ2に個別のキャッシュエントリ(共有キャッシュまたは個別のキャッシュ)をそれぞれ提供する場合があるが、アドレス変換ルックアップのパフォーマンスは、第1アドレス(仮想アドレス)を、第2アドレスをバイパスして第3アドレス(物理アドレス)に直接変換するために結合アドレス変換データをキャッシュに格納することで改善できる。ただし、この場合、結合された各エントリは、少なくとも1つのステージ1ページテーブルエントリと少なくとも1つのステージ2ページテーブルエントリに依存し得る。ステージ1およびステージ2のページテーブルは異なるページサイズで定義され得、これは、複数のキャッシュエントリがそれぞれ同じステージ1ページテーブルエントリまたはステージ2ページテーブルエントリに対応し得ることを意味することができる。これは、より大きなサイズの所与のページテーブルエントリに対応するエントリを対象とする無効化が、より小さなアドレスブロックにそれぞれ対応する複数のキャッシュエントリを無効化する必要があり得ることを意味することができる。
ステージ1/ステージ2を組み合わせたアドレス変換データのキャッシングをサポートするキャッシュの場合、上記の手法は特に有用であり得、これは、ステージ1とステージ2を組み合わせたアドレス変換データを格納するキャッシュを対象とするすべての無効化要求にキャッシュウォークモードを要求するのではなく、ページテーブルのサイズが十分に大きいため、対応するターゲットページテーブルエントリが複数のキャッシュエントリにわたって断片化されるリスクがある場合にキャッシュウォークモードを使用できるからである。ページサイズが、複数のキャッシュエントリにわたって大きなページの断片化を開始する閾値よりも小さい場合、キャッシュインデックスモードを選択できる。したがって、不要なフルキャッシュウォークを回避することにより、無効化のパフォーマンスを改善できる。
複数のキャッシュルックアップモードを使用できる別の例は、アドレス変換キャッシュでサポートされるさまざまなブロックサイズのいずれかを有するアドレスのブロックを変換するためのアドレス変換データを格納するアドレス変換キャッシュであってもよい。例えば、一部のページテーブルは可変ページサイズで定義され得るため、異なるページテーブルエントリが異なるサイズのアドレスブロックに対応する場合がある。また、一部のアドレス変換キャッシュは、マルチレベルページテーブルの複数レベルのエントリをキャッシュする場合があり、この場合、異なるレベルに対応するエントリは、アドレスの異なるサイズのブロックに対応し得る。異なるキャッシュエントリが異なるサイズのアドレスブロックに対応する可能性がある場合、キャッシュは、異なるブロックサイズにそれぞれ対応する異なる無効化ルックアップモードを使用して、同じ無効化要求に対して複数の無効化ルックアップ操作を実行できる。例えば、異なるルックアップモードでは、入力アドレスの異なるビット数を使用して、キャッシュにアクセスするためのインデックスを生成できる。各キャッシュエントリに格納されているサイズ情報を使用して、所与のキャッシュエントリが所与のルックアップモードのターゲットアドレスと一致するかどうかを判断できる。
さまざまなブロックサイズに対してさまざまな無効化ルックアップモードを実行すると、パフォーマンスと消費電力の点でコストがかかり、無効化要求の処理が遅れる可能性がある。以下で説明する例では、ページサイズ情報がわかっている場合、無効化要求の対象となるページテーブルエントリのサイズを推定できるため、これを使用して実際に必要なキャッシュインデックスモードを制限できる。例えば、ページサイズ情報が所与の閾値よりも小さい場合、そのページサイズより大きいブロックサイズに関連付けられたキャッシュインデックスモードを提供する必要はない場合がある。したがって、無効化要求に応答して、制御回路はページサイズ情報に基づいてキャッシュインデックスモードのサブセットを選択し、キャッシュインデックスモードの選択されたサブセットに対応する1つまたは複数の無効化ルックアップ操作を実行してもよい。不要な無効化ルックアップモードを回避することにより、アドレス変換キャッシュからの無効化のパフォーマンスを改善できる。
ページサイズ情報は、いくつかのさまざまな方法で表すことができる。一般に、ページサイズ情報は、例えば、要求のエンコード内にページサイズ情報を識別するパラメータを含めることにより、無効化要求によって指定され得る。例えば、ページサイズ情報は、ページサイズの明示的な表示;ページサイズの上限;ページサイズの下限;ページサイズが閾値サイズより小さいかどうかの表示;ページサイズが閾値サイズより大きいかどうかの表示;アドレス情報で指定されたアドレス変換範囲の開始アドレスおよび終了アドレス;複数のページサイズから選択された適用可能なページサイズのサブセットを識別する情報;および無効化要求に関連付けられたアドレス変換の複数のステージのうちの1つの表示;のうちの少なくとも1つを含んでもよい。
したがって、ページサイズを明示的に識別する必要はない。例えば、実際のページサイズを明示的に指定するのではなく、単にページサイズが閾値サイズよりも大きいか小さいかを示す情報や、ページサイズの上限または下限を提供する情報で、ページサイズを不正確に識別できれば十分であり得る。
また、場合によっては、ページサイズ情報が他の情報から暗黙的である場合がある。例えば、一部の無効化要求では、アドレスが少なくとも部分的に範囲内にある1つまたは複数のページに対応するキャッシュエントリの無効化をトリガするためのアドレス範囲を指定できる。範囲ベースの無効化の一部の形式(排他的範囲指定無効化要求など)では、ページサイズの上限が範囲のサイズから暗黙的になる場合があるため、ページサイズ情報を個別に指定する必要はない。
別のオプションは、無効化要求が、サポートされている複数のページサイズから選択されたページサイズの特定のサブセットに設定されたビットでビットマップを指定することであってもよい。設定されているビットマップのビットに依存して、制御回路はどのページサイズが適用され得るかを決定し、それに応じて無効化ルックアップモードを制限できる。例えば、一般にページテーブルは複数の異なるページサイズで定義できるが、所与のページサイズがどのページテーブルでも使用されていないことがわかっている場合、対応するビットをクリアのままにしておくことができ、アドレス変換キャッシュから無効化を実行するときに、そのページサイズに基づいてルックアップ操作を実行する必要はないことを示している。
別の例では、ページサイズ情報は、アドレス変換のどのステージが無効化要求に関連付けられているかを指定する情報から暗黙的であってもよい。例えば、アドレス変換の複数のステージでは、各ステージを固定ページサイズに関連付けることができるため、無効化がステージ1を対象とする場合、これは対応するページサイズを効果的に示す可能性があり、ステージ2も同様である。所与のステージのページテーブルが可変ページサイズをサポートしている場合でも、一部のページサイズはステージ1およびステージ2のいずれかでのみサポートされている可能性があり、そのため、無効化の影響を受けるステージを指定することで、いくつかの可能なページサイズを排除できる。
上記の手法は、いくつかのさまざまなタイプの無効化要求に使用できる。一例では、アドレス指定無効化要求は、無効化されるアドレス変換データに対応する少なくとも1つのターゲットページテーブルエントリを識別する単一アドレスを指定してもよい。単一アドレス指定無効化要求では、通常、そのページサイズに関係なく、暗黙的に、そのアドレスに対応するページテーブルエントリが無効化されるため、ページサイズ情報を識別する必要はないことが想定される(一致する変換コンテキスト識別子など、追加の非アドレスベースの基準も満たしていると仮定する)。通常、アドレスは、ページテーブル内の単一のページテーブルエントリにマッピングされるアドレス空間の対応するページを識別できるだけであり、これにより、アドレス変換キャッシュ内の関連データの対応する無効化をトリガできる。したがって、当業者は無効化されるページのサイズを指定する必要がない。しかし、発明者は、単一アドレス指定無効化要求のページサイズ情報を指定すると、例えば前述のようにキャッシュウォークモードの使用を排除したり、キャッシュインデックスモードのサブセットを省略したりすることで、キャッシュルックアップをより効率的に実行できることがわかった。例えば、ページサイズ情報を、ページサイズの明示的な表示、または複数のオプションの1つからのページサイズを表すコードとすることができる。ただし、効率的なエンコードは、ページサイズが特定の閾値サイズよりも大きいか小さいかを示し得る単一ビットフラグを単に提供できる(実装の選択に依存して、ページサイズがビットフラグのいずれかの値で表される閾値サイズと等しい場合)。ページサイズが閾値サイズより大きいか小さいかを単に示すだけで、上記のキャッシュウォークモードおよびキャッシュインデックスモードの選択を可能にするのに十分であり得る。したがって、ページサイズ情報は、無効化要求に関連するビット数の大幅な拡張を必要としない。
無効化要求の別の形式は、アドレスの無効化範囲を指定し、無効化範囲内に少なくとも部分的に存在するアドレスグループに対応する少なくとも1つのターゲットページテーブルエントリを対象とし得る範囲指定無効化要求である。範囲指定無効化要求は、包括的範囲指定無効化要求である場合があり、制御回路は、アドレスグループのいずれかの部分が無効化範囲内にあるアドレスグループに対応する少なくとも1つのターゲットページテーブルエントリに依存するキャッシュエントリの無効化をトリガする。包括的範囲ベースの無効化の場合、ページテーブルエントリは、指定された範囲に部分的にしかマッピングされていなくても対象にされる。
あるいは、範囲指定無効化要求は排他的範囲指定無効化要求である場合があり、制御回路は無効化をトリガし、対象のキャッシュエントリが完全に無効化範囲内にあるアドレスグループに対応するページテーブルエントリに依存するエントリになるようにする。したがって、このオプションでは、範囲内に部分的にしか存在しないページテーブルエントリは影響を受けない。制御回路は、各キャッシュエントリ内のタグ情報を使用して、対応するエントリが完全にまたは部分的にクレーム範囲にマッピングされるかどうかを識別することができ、例えば、各キャッシュエントリ内のアドレスタグとサイズフィールドの組み合わせを使用できる。範囲ベースの無効化の場合、無効化するかどうかを決定するために使用される基準は、範囲へのマッピングだけではない場合があり、例えば、他の基準には、無効化要求を発行した現在のプロセスに関連付けられたコンテキスト識別子に一致するコンテキスト識別子が含まれる場合があり、または無効化要求は、無効化の影響を受けるページテーブル構造の特定のレベルを指定でき、他のレベルは無効化から除外される。同様に、一部の無効化要求は、マルチステージ変換のステージ1またはステージ2に関連付けられているエントリのみを対象とすることができる。範囲指定無効化要求に関連付けられた範囲は、さまざまな方法で、例えば、明示的な開始アドレスと終了アドレス、または開始アドレスと無効化範囲のサイズを指定するサイズフィールドを識別することができる。
一部の無効化要求は、マルチレベルのページテーブル構造の特定のレベルのページテーブルエントリを対象とする場合がある。ただし、リーフページテーブルエントリと中間ページテーブルエントリ(または非リーフページテーブルエントリ)を区別することが望ましい場合が多い。リーフページテーブルエントリは、あるタイプのアドレスを別のタイプのアドレスに変換するために使用される実際のアドレス変換マッピングを指定するページテーブルの最終レベルを参照する場合がある。ページテーブルがステージ1、ステージ2、またはステージ1/ステージ2の組み合わせに対応するかどうかに依存して、リーフページテーブルエントリは、仮想アドレスから中間物理アドレスへ、中間物理アドレスから物理アドレスへ、または仮想アドレスから直接物理アドレスへ、のマッピングを提供してもよい。一方、中間ページテーブルエントリは実際のアドレスマッピングを提供しない場合があるが、ページテーブル構造内の次のレベルのページテーブルエントリのアドレスを単に指定してもよい。リーフページテーブルエントリのみを対象とすることにより、実際の最終アドレスマッピングを無効化することができるが、これらを変更する必要がない場合、ページテーブル構造の上位レベルをそのまま残す。他の無効化は、中間またはリーフページテーブルエントリであるかどうかに関係なく、ページテーブルのすべてのレベルを対象としてもよい。
しかしながら、一例では、無効化要求は、完全に無効化範囲内にあるアドレスグループに対応するリーフおよび中間ページテーブルエントリの両方を対象とする排他的範囲指定無効化要求であってもよい。リーフおよび中間の排他的範囲指定無効化要求に応答して、制御回路は、ターゲットキャッシュエントリとして、完全に無効化範囲内にあるアドレスブロックのリーフまたは中間ページテーブルエントリに依存するキャッシュエントリを検出できる。このタイプの無効化要求は、1つの要求でページテーブル構造のブランチ全体を無効化し、ページテーブル構造の他のブランチをそのまま残す場合に非常に役立つことができる。したがって、少なくとも部分的に無効化範囲外にあるアドレスグループに対応する少なくとも1つの中間ページテーブルエントリは、アドレス変換データがアドレス変換キャッシュから無効化される少なくとも1つのターゲットページテーブルエントリから除外され得る。このアプローチは、複数レベルのウォークキャッシングが採用され、アドレス変換キャッシュの異なるエントリが異なるレベルのページテーブルに対応する可能性があるシステムメモリ管理ユニットまたはアドレス変換キャッシュに特に役立つことができる。
図1は、1つまたは複数のアドレス変換キャッシュを含むデータ処理装置2の例を概略的に示している。装置2は、この例では2つの中央処理装置(CPU)4と、周辺デバイスへの/からのデータの入力または出力を制御するための入出力ユニット6とを含むいくつかのマスタデバイス4,6を含む。グラフィック処理ユニット(GPU)、モニタ上のデータの表示を制御するディスプレイコントローラ、メモリへのアクセスを制御するダイレクトメモリアクセスコントローラなど、他の多くのタイプのマスタデバイスも提供できることが理解されよう。マスタデバイスの少なくともいくつかは、デバイスにローカルな命令またはデータをキャッシュするための内部データまたは命令キャッシュ8を備えていてもよい。入出力インタフェース6などの他のマスタは、キャッシュされていないマスタであってもよい。各キャッシュ内のデータと各マスタがアクセスするデータとの間のコヒーレンシは、コヒーレント相互接続10によって管理されてもよく、コヒーレント相互接続10は、所与のアドレスからのデータへのアクセスのための要求を追跡し、コヒーレンシを維持するために必要なときに他のマスタのキャッシュ内のデータのスヌーピングを制御する。他の実施形態では、そのようなコヒーレンシ操作をソフトウェアで管理できるが、そのようなコヒーレンシを追跡するためのハードウェア相互接続10を提供する利点は、システムによって実行されるソフトウェアのプログラマがコヒーレンシを考慮する必要がないことであることが理解されよう。
図1に示すように、一部のマスタには、ソフトウェアによって指定されたアドレスをメモリ14の特定の位置を参照する物理アドレスに変換するために使用されるアドレス変換データをキャッシュするための少なくとも1つのアドレス変換キャッシュを含み得るメモリ管理ユニット(MMU)12が含まれてもよい。所与のマスタデバイス内には提供されないが、組み込みのMMUを用いて設計されていない単純なマスタデバイスでアドレス変換機能を使用できるようにするために、特定のマスタ6とコヒーレント相互接続10との間の追加コンポーネントとして提供されるシステムメモリ管理ユニット(SMMU)16を設けることも可能である。他の例では、SMMU16は相互接続10の一部と見なすことができる。
ページテーブルは、所与のアドレス空間にわたるアドレスブロックのアドレス変換マッピングを格納するためにメモリ14内で定義されてもよい。図2に示すように、ページテーブルは、特定のターゲットアドレスのアドレスマッピングを識別するためにページテーブルウォーク操作でトラバースされ得る複数レベルのページテーブルで実装できる。図2に示すように、インデックスビットL0Iの所与のセットを使用して、メモリ内の位置がレベルゼロ(L0)ベースアドレス22によって識別されるレベルゼロページテーブル20にインデックスを付けることができる。L0ベースアドレス22は、例えば(S)MMU12,16のレジスタに格納されてもよい。L0テーブル20のインデックス付きエントリは、L1ページテーブル22のメモリ内の位置を識別するL1ベースアドレスを識別する。ターゲットアドレスからのインデックスビットL1Iの異なるサブセットは、L1ページテーブル22のエントリの1つを選択し、それにより、L2ページテーブル24のメモリ位置を識別するL2ベースアドレスを識別する。L3ページテーブル26の位置を識別するL3ベースアドレスを識別するために、ターゲットアドレスからのインデックスビットL2Iの別のサブセットがL2ページテーブル24にインデックスを付ける。次に、ターゲットアドレスのビットL3Iのさらに別のサブセットは、ターゲットアドレスを物理アドレスなどの変換済みアドレスにマッピングするための実際のアドレスマッピングを提供するL3ページテーブル26の特定のエントリを選択する。したがって、L3ページテーブル26は、実際のアドレスマッピング情報を提供するリーフページテーブルエントリを提供する最終ページテーブルであり、高レベルページテーブル20,22,24は、次のレベルのページテーブルのベースアドレスを識別する中間エントリを提供する。4つのレベルのページテーブルを提供することは一例に過ぎず、他のものは異なる数のページテーブルを使用できることが理解されよう。この方法でページテーブルを異なるレベルに分割することにより、ページテーブル構造全体を格納するために必要なメモリストレージの総量を削減することができ、これは、領域内の所与の量のアドレス空間またはマッピングされるアドレスサイズと同等のサイズを有するメモリを変換するためのアドレスマッピングを見つける必要がないためであり、多くの場合、アドレス空間の大きなチャンクには、オペレーティングシステムまたはアドレス変換データを設定する他のプロセスによってまだマッピングが定義されていないという事実を利用する。図2は、インデックスビットL0I,L1Iなどが、対応するページテーブルエントリを選択するためのインデックスとして直接使用される例を示しているが、インデックスはインデックスビットに適用されたハッシュ関数の結果であってもよい。
一部のシステムでは、(S)MMU12,16は、ページテーブルの異なるレベルからのエントリを変換するための完全に独立したアドレス変換キャッシュを有する場合がある。通常、最終レベルのページテーブル26からエントリをキャッシュするキャッシュは、変換ルックアサイドバッファと呼ばれてもよく、ページテーブル20,22,24からより高いレベルのページテーブルエントリをキャッシュするキャッシュは、ウォークキャッシュと呼ばれてもよい。一方、他の実施形態は、ページテーブルの複数のレベルからのアドレス変換データをキャッシュできる共有アドレス変換キャッシュを提供してもよい。どちらのアプローチも本手法で使用できる。以下に1つのキャッシュについて説明するが、一部の(S)MMUにはキャッシュ階層に複数レベルのアドレス変換キャッシュが含まれ、アクセス待機時間に対して容量をトレードオフする場合がある(例えば、高速アクセスのためにレベル0アドレス変換キャッシュに格納されるエントリ数が少ない場合、およびレベル0アドレス変換キャッシュでミスが発生した場合のアクセスを遅くするために、レベル1アドレス変換キャッシュに格納されたエントリ数が多い場合)。
図3に示すように、アドレス変換プロセスには、異なるアドレス空間の間にアドレス変換の複数のステージが含まれることもある。例えば、CPU4で実行されるアプリケーションまたはオペレーティングシステムによって実行される命令によってメモリ位置を識別するために使用される仮想アドレス(第1アドレス)は、ステージ1変換で中間物理アドレス(第2アドレス)に変換され得る。ステージ1アドレスを制御するための構成データは、例えばオペレーティングシステムによって設定され得る。オペレーティングシステムの観点からは、ステージ1のアドレス変換で生成された中間物理アドレスは、アクセスされている実際のメモリアドレスの物理アドレスであると見なされてもよい。ただし、仮想化をサポートし、同じデバイス上に共存する異なるオペレーティングシステムで使用される同一の中間物理アドレスが競合するのを防ぐために、ハイパーバイザは、メモリ14で読み書きされるメモリ位置を実際に参照する中間物理アドレス(第2アドレス)と物理アドレス(第3アドレス)との間のさらなる第2のステージアドレス変換を提供する場合がある。したがって、ステージ2アドレス変換に対応するハイパーバイザによって定義されたページテーブルの第2のセットがある場合がある。
図2に示すように、アドレス変換の2つのステージではそれぞれ、複数レベルのページテーブルを使用できることに留意されたい。したがって、ターゲット仮想アドレスによって識別されるアドレスの所与のブロックのアドレスマッピングを識別するためのフルページテーブルウォークでは、ステージ1アドレス変換で使用されるページテーブルの各ベースアドレスがステージ1ページテーブルの対応するレベルにアクセスする前に、ステージ2アドレス変換を経る必要があり得る。つまり、フルページテーブルウォークプロセスには、次の順序で複数レベルのページテーブルにアクセスすることが含まれ得る。
・ステージ1レベル0ページテーブルのベースアドレスの物理アドレスへのステージ2変換(ステージ1変換はオペレーティングシステムによって設定されるため、ステージ1レベル0ベースアドレスは通常、中間物理アドレスである)。ステージ2変換は、4回のルックアップ(ステージ2,レベル0;ステージ2,レベル1;ステージ2,レベル2;ステージ2,レベル3)を含む。
・ステージ1レベル1ベースアドレス(中間物理アドレス)を識別するための、ターゲット仮想アドレスのレベル0インデックス部分L0Iに基づくステージ1レベル0ルックアップ。
・ステージ1レベル1ベースアドレスの物理アドレスへのステージ2変換(これも、4回のルックアップを含む)。
・ステージ1レベル2ベースアドレス(中間物理アドレス)を識別するための、ターゲット仮想アドレスのレベル1インデックス部分L1Iに基づくステージ1レベル1ルックアップ。
・ステージ1レベル2ベースアドレスの物理アドレスへのステージ2変換(これも、4回のルックアップを含む)。
・ステージ1レベル3ベースアドレス(中間物理アドレス)を識別するための、ターゲット仮想アドレスのレベル2インデックス部分L2Iに基づくステージ1レベル2ルックアップ。
・ステージ1レベル3ベースアドレスの物理アドレスへのステージ2変換(これも、4回のルックアップを含む)。
・ターゲット仮想アドレスに対応するターゲット中間物理アドレスを識別するための、ターゲット仮想アドレスのレベル3インデックス部分L3Iに基づくステージ1レベル3ルックアップ。
・元のターゲット仮想アドレスに対応してアクセスするためにメモリ内の位置を表すターゲット物理アドレスへのターゲット中間物理アドレスのステージ2変換(これも、4回のルックアップを含む)。
したがって、キャッシュを使用しない場合、変換は合計24のルックアップを含むことになる。上記の順序からわかるように、ページテーブルウォークプロセス全体の実行は、アドレス変換の各ステージでページテーブルの各レベルをステップスルーするためにメモリへの多数のアクセスを必要とし得るため、非常に遅くなる可能性がある。これが、最終レベルのアドレスマッピングだけでなく、(S)MMU12,16内のステージ1およびステージ2テーブルのより高いレベルのページテーブルからのエントリもキャッシュすることがしばしば望ましい理由である。これにより、所与のターゲットアドレスの最終レベルのアドレスマッピングが現在アドレス変換キャッシュにない場合でも、フルページテーブルウォークの少なくともいくつかのステップをバイパスできる。
図3に示すように、ステージ1およびステージ2のアドレス変換では、異なるサイズのアドレスブロックにマッピングするページテーブルエントリを提供できる。例えば、ステージ1のアドレス変換は2MBのブロックサイズで動作し、ステージ2のアドレス変換は4kBのブロックサイズで動作し得る(明らかに、特定のサイズ4kBと2MBは単なる例であるが、理解を容易にするために、以下のサイズを参照し、より一般的には、ステージ1とステージ2のテーブルで異なるページサイズを使用できる)。ステージ1およびステージ2のアドレス変換が、別個のアドレス変換キャッシュを使用して、または共有キャッシュの別個のステージ1およびステージ2エントリで実装されている場合、ステージ1とステージ2の両方についてページテーブルエントリとアドレス変換キャッシュエントリとの間に1対1のマッピングが存在し得る。ただし、仮想アドレスを物理アドレスに直接変換するために、ステージ1およびステージ2のアドレス変換を単一の結合キャッシュエントリに結合するシステムでは、ステージ2よりもステージ1のページサイズが大きいため、ステージ2の4kBページアドレス変換ではそれぞれ、異なるキャッシュエントリを割り当てる必要があるが、同じ2MBブロック内の4kBページはすべて、同じステージ1ページテーブルエントリに対応し得る。したがって、ステージ1変換の単一ページは、ステージ1/ステージ2を組み合わせたキャッシュの複数のエントリ間でフラグメント化され得る。つまり、ステージ1ページテーブルエントリに変更が加えられた場合、対応するキャッシュ無効化では、2MBページ内の異なる4kBブロックにそれぞれ対応するステージ1/ステージ2を組み合わせた複数のキャッシュエントリを無効化する必要があり得る。これは、キャッシュインデックスモードを使用して無効化を実行できないことを意味し、このモードでは、選択されたエントリのセットは、ターゲットアドレスと、エントリのセット内のタグに基づいて識別され、ターゲットアドレスに関連付けられたタグと比較されて、無効化するエントリが決定される。代わりに、複数のエントリがターゲットアドレスにヒットする可能性があるため、キャッシュの少なくとも一部内のすべてのエントリがアドレスに関係なくアクセスされるキャッシュウォークモードが必要になる場合があり、アクセスされたエントリの各タグはそのエントリを無効化すべきかどうかを決定するターゲットアドレスのタグと比較される。このようなキャッシュウォークモードは、キャッシュインデックスモードよりも待機時間と消費電力の点で高価になる場合がある。
図4は、ステージ1/ステージ2を組み合わせたアドレス変換をサポートするアドレス変換キャッシュの例を示している。キャッシュ12,16は、アドレス変換データを格納するためのいくつかのエントリ40を含む。各エントリには、エントリに有効なアドレス変換データが含まれるかどうかを指定する有効ビット42、アドレス変換データが適用されるアドレスブロックに対応する仮想アドレスの一部を指定する仮想タグ44、および対応する物理アドレス46が含まれる。非リーフ変換エントリの場合、物理アドレス46はページテーブル構造内の次のレベルのページテーブルエントリのアドレスを指定できるが、リーフエントリ(レベル3ページテーブルなど)の場合、物理アドレスは、仮想ページアドレスが変換される実際の変換済みアドレスを識別できる。
この例では、キャッシュは可変ページサイズをサポートするため、変換サイズフィールド48は、対応するアドレス変換マッピングが適用されるアドレスブロックのサイズを指定する。また、これは、仮想アドレスを物理アドレスに直接マッピングする(中間物理アドレスを経由せずに)ステージ1/ステージ2を組み合わせたキャッシュであるため、エントリ40は、アドレスグループのサイズを表す無効化サイズ50も指定し、無効化ターゲットアドレスがそのアドレスの無効化グループに含まれる場合、ターゲットアドレスが変換サイズ48で指定された範囲内にない場合でも、エントリ40内の対応するアドレス変換データは無効化されるべきである。これにより、例えば、アドレスがそのエントリの4KBの範囲外にある場合でも、ステージ1/ステージ2を組み合わせたエントリが無効化され、これは、ターゲットアドレスが、仮想タグ44から物理アドレス46へのアドレス変換マッピングが依存するステージ1ページテーブルエントリに関連付けられた同じ2MBページ内に収まるためである。また、ステージ1とステージ2の両方のページテーブルは、アドレス空間内の異なるページの可変ページサイズを有することができる。
図4に示すように、制御回路50は、アドレス変換キャッシュ12,16へのアクセスを制御し、またアドレス変換データの無効化を制御するために設けられる。仮想アドレスの一部は、キャッシュインデックスルックアップモードでアクセスされる対応するセットのキャッシュエントリを選択するためのインデックスを生成するために制御回路50によって使用される。図5に示すように、インデックスの形成に使用される仮想アドレスのビットは、アクセスされるページテーブルエントリのレベルによって異なる。また、複数の異なる変換ブロックサイズ48をサポートする実施形態では、所与のレベルにアクセスするために使用されるビットの特定のサブセットはブロックサイズに依存して異なり得るため、所与のアドレスのアドレス変換データにアクセスするには、それぞれ異なるブロックサイズに対応し、したがって仮想アドレスからのインデックスビットの異なる選択に対応する複数のルックアップモードを試みる必要があり得る。所与のルックアップモードでは、インデックス52が生成され、1つまたは複数のキャッシュエントリ40の対応するセットがアクセスされると、制御回路50は、アクセスされた各エントリに格納されたタグ44と仮想アドレスのタグ部分(通常はインデックスに使用される部分よりも重要な仮想アドレスのビット)を比較する。タグが一致しない場合、エントリ40は現在のターゲットアドレスの相対アドレス変換データを格納しない。比較されるタグのサイズは、アドレス変換ルックアップの変換サイズ48および無効化ルックアップの無効化サイズ50に依存し得る。図4には示されていないが、アドレスルックアップは、アドレス変換データに関連付けられた特定の変換連絡先を識別するコンテキスト識別子など、各エントリに格納されている他の情報にも依存し得る。キャッシュルックアップは、一致するキャッシュエントリ内のコンテキスト識別子がアドレスルックアップまたは無効化要求に関連付けられたコンテキスト識別子と同じ場合にのみヒットすると見なされる。
図4の例は、物理アドレスに直接変換される、仮想的にインデックス付けされタグ付けされたアドレス変換キャッシュを示している。他の例は、専用のステージ1アドレス変換キャッシュを提供する場合があり、その場合、変換済みアドレスフィールド46は物理アドレスの代わりに中間物理アドレスを提供してもよく、専用のステージ2アドレス変換キャッシュを提供する場合には、仮想アドレスの代わりに中間物理アドレスでインデックス付けされタグ付けされてもよい。
図6は、無効化要求に応答してアドレス変換キャッシュの無効化ルックアップを実行する方法を示すフロー図を示している。ステップ70で、制御回路50は無効化要求を受信する。例えば、無効化要求は、CPU4の1つによって実行された無効化命令によってトリガされ得る。無効化要求は、無効化される少なくとも1つのターゲットページテーブルエントリに対応するアドレス情報を指定する。例えば、アドレス情報は、無効化される1つのページの開始アドレスを単に指定することも、アドレスの範囲に対応してその範囲内のいくつかのページを無効化することもできる。無効化要求は、無効化される各ページのサイズを明示的または暗黙的に識別するページサイズ情報も指定する。
図7は、ページサイズ情報の表示方法のさまざまな例を示している。例Aでは、無効化要求は、ページサイズ情報を提供するサイズヒントフラグ82とともに、無効化されるページテーブルのターゲットページの単一のターゲットアドレス80を指定する。サイズヒントフラグは、ターゲットページのページサイズが所与の閾値より大きいか小さいかを示す。例えば、閾値を、より大きなページサイズを有するステージ1またはステージ2のページテーブルのいずれかのページのサイズとすることができ、例えば、上記の例では2MBである。例えば、フラグのサイズは、ページサイズが閾値以上の場合は1、ページサイズが閾値より小さい場合は0になる。
図7の例Bは、範囲指定無効化要求が、ページテーブルエントリが無効化される範囲の開始点と終了点を識別する範囲開始アドレスと範囲終了アドレスを指定する別の例を示している。排他的範囲指定無効化要求(指定された範囲内に完全にあるページを対象とする)の場合、可能な最大ページサイズが範囲のサイズ以下であると判断できるため、ページサイズ情報は暗黙的であり得る。同様に、例Cは無効化要求を指定する範囲を示し、終了アドレスの代わりに範囲サイズが指定され、この場合、ページサイズは範囲サイズ以下であると判断され得る。
あるいは、対応するアドレスグループの一部が範囲と重複するページテーブルのエントリを対象とする包括的範囲指定無効化要求の場合、ページサイズは範囲サイズのみから暗黙的ではない場合があり、この場合、例Bおよび例Cの無効化要求を指定する範囲には、例Aに示すのと同様のサイズヒントフラグ82を追加するか、ページサイズの別の表現を使用できる。
図7の例Dは、無効化要求が無効化されるページの単一のターゲットアドレス80を指定し、また無効化がステージ1とステージ2のどちらに関連するかを指定する別の例を示している。一部のページサイズがステージ1とステージ2のいずれかのページテーブルでのみ使用される実施形態では、無効化がステージ1とステージ2のどちらに関連するかを指定する単純な1ビットフラグが、適用可能なページサイズを制限するのに十分であり得る。ステージ1およびステージ2の変換が図7に示されていない例A~Cの場合でも、これらの要求では、適切な無効化を実行できるように、どのステージに変換が関連するかを指定できることを理解されよう。
ページサイズ情報を表すために、他の多くの例も使用できる。例えば、ページサイズは、ページサイズを識別する実際の数値、またはページサイズの複数のオプションのいずれかを表すコードとして明示的に指定され得る。また、所与の無効化に適用できるページサイズに依存して、1つまたは複数のビットが設定またはクリアされたビットマップを提供できる。ページサイズは、ページサイズの上限または下限で表すことができるため、実際のページサイズを明示的に表す必要はない。少なくともいくつかの潜在的なページサイズを排除できる一部の情報を指定するだけで十分である。
図6に戻ると、ステップ72で、制御回路50は、ページサイズ情報に基づいて無効化要求に使用する無効化ルックアップモードを選択する。図8は、無効化ルックアップモードの選択の一例を示している。ステップ90において、制御回路は、ページサイズが所与の閾値以上であるかどうかをページサイズ情報から決定する。例えば、これは、上述のサイズヒントフラグ82が1に設定されているか0に設定されているかに基づいていてもよい。ページサイズが閾値以上である場合、ステップ92でキャッシュウォークモードが選択され、これは、キャッシュエントリの所与のサブセット(またはすべてのキャッシュエントリ40)が、無効化要求の現在のターゲットアドレス情報に関係なくアクセスのために選択されるモードであり、選択された各エントリにアクセスし、エントリ40のタグ44またはその他の情報を無効化要求のアドレス情報または他のパラメータと比較して、そのエントリがターゲットアドレスにヒットするかどうかを判断する。ステージ1/ステージ2を組み合わせたアドレス変換キャッシュのページサイズが閾値よりも大きい場合、1つのページテーブルエントリが複数のキャッシュエントリにわたって断片化され得るリスクがあるため、キャッシュインデックスモードでは無効化する必要があるすべてのエントリを識別するのに十分ではない場合がある。対照的に、無効化要求に関連付けられたページサイズが閾値よりも小さい場合、これは、ページサイズが十分に小さいため、複数のキャッシュエントリにわたるターゲットページテーブルエントリの断片化のリスクがないことを示している可能性があり、このため、ステップ94でキャッシュインデックスモードが選択される。キャッシュインデックスモードでは、エントリのセットがターゲットアドレスに基づいて選択され、選択された(インデックス52に基づいて選択された)セット内のエントリのみがアクセスされる。図9で後述するように、場合によっては、ステップ94で異なるブロックサイズの複数のキャッシュインデックスモードが選択され得る。通常、キャッシュインデックスモードは、キャッシュウォークモードよりも効率的である。したがって、キャッシュ4内にステージ1とステージ2を組み合わせたエントリがある場合でも、ページサイズ情報を考慮することにより、ステージ1/ステージ2を組み合わせた変換キャッシュのすべての無効化についてキャッシュウォークモード92を使用する必要はなく、また、キャッシュインデックスモード94は、無効化が小さいページサイズにのみ影響する場合に使用できる。
図8の例は、ステージ1/ステージ2を組み合わせたキャッシュに役立つ。すべての無効化に対して、図8に示す方法を使用する必要はない。例えば、制御回路15は、ステージ1/ステージ2を組み合わせた任意のエントリがキャッシュに割り当てられているかどうかを指定し得るステータスレジスタを維持することができる。別個のキャッシュエントリ40に別個のステージ1およびステージ2エントリのみが割り当てられている場合、キャッシュインデックスモード94を常に使用できる。ただし、仮想アドレスから物理アドレスに直接マッピングされる少なくとも1つのステージ1/ステージ2を組み合わせたエントリがキャッシュに割り当てられているので、制御回路50は図8の方法を使用して、キャッシュウォークモードの使用を、無効化が閾値より大きいページサイズに影響する場合に限定することができる。
図9は、無効化ルックアップモードを選択する第2の例を示している。この方法は、図6のステップ72で(図8の方法も実行せずに)実行することができ、または、図8のステップ94でキャッシュインデックスモードを選択する一部であってもよい。ステップ100で、制御回路は、無効化要求のページサイズ情報に基づいて、適用可能なブロックサイズのセットを決定する。例えば、システムは、例えば4kB、8kB、16kB、32kBなど、ページテーブルの複数の異なるサイズのページをサポートできる。制御回路は、ページサイズ情報から、キャッシュ内のエントリの特定のブロックサイズが可能でないことを判断できる。例えば、ページサイズ情報が、ページサイズが2MB未満であると識別した場合、これよりも大きいブロックサイズは考慮されない。同様に、無効化要求を指定する排他的範囲の場合、特定のブロックサイズが可能でないことは範囲のサイズから暗黙的である場合がある。通常、アドレス変換キャッシュに複数のサイズのエントリが同時に含まれている場合、すべてのアクティブなサイズに対して複数のルックアップが実行される。ページサイズ情報を使用すると、これらのルックアップの一部を不要なものとして排除して、電力および待機時間を削減できる。したがって、ステップ102で、ステップ100で決定された適用可能なブロックサイズに対応するキャッシュインデックスモードのサブセットが無効化ルックアップのために選択される。
したがって、図6に戻ると、ステップ74で、図8および図9の方法のいずれかを使用して、ステップ72で決定された選択されたルックアップモードに対して1つまたは複数の無効化ルックアップ操作が実行される。無効化ルックアップ操作に基づいて少なくとも1つのターゲットエントリが識別され、ステップ76で、少なくとも1つのターゲットエントリ内のアドレス変換データが無効化される。
範囲指定無効化要求の場合、ページテーブルのどのターゲットエントリが無効化の影響を受けるか、したがってどのキャッシュエントリ40が無効化されるかを制御するためのいくつかのオプションが利用可能である。図10は、ページテーブルのさまざまなレベルによるページテーブルエントリが仮想アドレス空間のさまざまな領域にどのように対応するかを説明する例を示している。例えば、単一のレベル0ページテーブルエントリAは、レベル0のエントリがカバーする範囲内で、いくつかのレベル1ページテーブルエントリC,Dよりも大きいアドレス空間の領域にマッピングできる。簡潔にするために、図10はレベル0ページテーブルの1つのエントリに対応するレベル1ページテーブルの2つのエントリのみを示しているが、実際には1つのレベル0エントリがより多くのレベル1エントリに対応し得ることが理解されよう。同様に、1つのレベル1ページテーブルエントリCで表されるアドレスデータの部分は、いくつかのレベル2ページテーブルエントリF,Gにマッピングでき、1つのレベル2ページテーブルエントリFは、いくつかのレベル3ページテーブルエントリK,L,Mにマッピングできる。アドレス空間のすべての部分をマッピングする必要はない。例えば、図10に示すように、アドレスマッピングが定義されていない領域120がいくつかある。CPU4またはマスタ6がこれらのアドレスの1つにアクセスしようとすると、例外がトリガされ得、オペレーティングシステムまたは他のソフトウェアがアドレスを割り当ててから、操作を再試行する。図10でアスタリスクが付いているエントリは、実際のアドレス変換マッピングを提供するリーフエントリである。リーフエントリが異なるレベルにある可能性があることに留意されたい。例えば、図10のレベル2ページテーブルエントリGは、特定のアドレスブロックの実際のアドレスマッピングを提供するが、レベル3ページテーブルエントリは、アドレス空間の他の部分のリーフエントリを提供する。例えば、レベル2のページサイズに対応するアドレス空間の特定のブロックがすべて同じアドレスマッピングを必要とする場合、いくつかの同一のレベル3エントリを割り当てるよりも、レベル2エントリを使用してリーフエントリを提供する方が効率的である。アスタリスクでマークされていない他のエントリは、アドレスマッピングを提供しないが、代わりに次のレベルのページテーブルエントリのアドレスを提供する中間リーフエントリまたは非リーフエントリである。
図10に示すように、さまざまなサイズのアドレスブロックにさまざまなページテーブルエントリが対応する場合がある。例えば、レベル3エントリPは4kBに対応し、レベル3エントリQは16kBに対応する。これが、図4に示すようにキャッシュ内で変換サイズを指定することが有用な理由であり、また所与の仮想アドレスにマッピングできる変換範囲のさまざまな可能なサイズに対応するさまざまなサイズのインデックスとタグ部分を使用して、いくつかのさまざまな無効化ルックアップモードを必要とする理由である。
範囲指定無効化の場合、範囲の影響を受けるエントリを識別するために利用できるいくつかのオプションがある。例えば、図10は、範囲指定無効化要求によって指定された特定の無効化範囲の例を示している。異なるタイプの無効化要求は、例えば次のように異なるページテーブルエントリのセットを対象とする場合がある:
・排他的範囲指定無効化要求は、指定された範囲内に完全に存在するエントリのみを対象とする場合があり、範囲内に部分的にのみ存在するエントリを対象としない場合がある;
・排他的範囲指定無効化要求は、範囲内に部分的または完全に存在するエントリを対象とする場合があり、範囲内に部分的にのみ存在するエントリでも無効化の対象となる;
・リーフ無効化要求は、リーフエントリのみを対象とする場合があり、ページテーブルの中間エントリには影響しない場合がある;
・リーフおよび中間の無効化は、リーフおよび非リーフ(中間)エントリの両方に影響する場合がある。
これらのオプションのさまざまな組み合わせを定義できる。例えば、図10では、示された範囲内の排他的リーフ無効化は、指定された範囲内に完全にリーフエントリであるエントリN,O,P,Qを対象とするが、エントリRは範囲内に部分的にしか存在しないため無効化されず、また、エントリHは、リーフエントリではなく中間エントリであるため、無効化されない。包括的範囲無効化も、例えばエントリRを対象とする。
提供できる無効化の特定のタイプの1つは、排他的なリーフおよび中間の無効化であり、これは指定された範囲内に完全にあり、リーフエントリまたは非リーフエントリのいずれかとすることができるページテーブルエントリを対象とする。例えば、図10に示す範囲を使用して排他的なリーフおよび中間の無効化が実行される場合、すべて完全に無効化範囲内にありかつリーフまたは非リーフエントリのいずれかであるエントリH,N,O,P,Qを対象とする。このような無効化は、ページテーブルツリーのブランチ全体を1回の操作で無効化するのに非常に役立ち得るが、指定された無効化範囲外に少なくとも部分的に拡張されるため、ツリーの上位レベルをそのまま残す。
要約すると、上記で説明した手法により、アドレス変換キャッシュ、例えば変換ルックアサイドバッファ(TLB)からの無効化のパフォーマンスを改善できる。ステージ1+2の組み合わせたTLBでは、ステージ1変換はステージ2変換よりも大きくなる可能性があり、例えば多くのTLBロケーション間で断片化されているページにつながる。仮想アドレスによる単一の無効化命令は、通常、単一のTLBエントリを無効化することが期待されるが、この場合、多くのエントリを無効化する必要がある。そのようなエントリがTLBに存在する場合、キャッシュはすべての無効化操作がTLBコンテンツ全体をウォークする必要があるモードに切り替えることができる。特に大きなTLBの場合、これは非常に遅くなる。前述のように、ソフトウェアは無効化要求に対して無効化されるページのサイズを示すことができ、キャッシュハードウェアはこの情報を使用して小さなエントリの場合は完全なTLBのウォークを回避し、TLBの断片化されたエントリのステージ1ブロックサイズと少なくとも同じ大きさ以上のエントリの場合はTLBのみをウォークする。例えば、ブロックがステージ1で2MBであるが、ステージ2で4KBページにマッピングする場合、2MB以上の無効化のみが完全なTLBのウォークを引き起こし、他の無効化は、通常どおりキャッシュインデックスルックアップモードを使用して「高速」無効化として進行する可能性がある。
ページサイズの知識により、TLBでのルックアップの数を実装で最適化することもでき、これにより、いくつかのさまざまなブロックサイズとページサイズを同時に格納できる。TLBに複数のサイズのエントリが同時に含まれている場合、いくつかのルックアップが実行される。通常のルックアップはヒット後に停止できるが、無効化にはすべてのアクティブなサイズのルックアップが必要である。したがって、検索スペースを削減すると、無効化が高速化される。
範囲を指定すると、中間ウォークキャッシュをインテリジェントに無効化できる。範囲の無効化は「リーフ」または「非リーフ」として定義することができ、非リーフの無効化では、存在する場合L0、L1、およびL2ウォークキャッシュエントリを無効化する必要があり、リーフは最終レベルのL3エントリのみを対象とする場合がある。特にSMMUで見られるように、多くの変換シナリオの断片的な性質により、複数レベルのウォークキャッシュが実装される。したがって、無効化操作は範囲によって指定され得、各ウォークキャッシュレベルは、範囲がそのレベルのエントリを包含するのに十分な大きさである場合にのみ無効化され得る。
ブロックの範囲、例えばページグラニュルが4KBである16個の2MBブロックの範囲が無効化される場合がある。TLBとの通信時間を最小限に抑えるために、一連のコマンドを発行する代わりに、無効化するページの範囲を指定できると便利である。リアルタイムユーザのTLBまたは他のTLBへの影響のため、すべて無効化コマンドを使用した過剰な無効化は望ましくない。範囲ごとの無効化操作が提供され、これには最小ページサイズのパラメータもあり、そのサイズ以下のキャッシュエントリを調べる必要がない。例えば、前の例では、16個の2MBブロックエントリを検索することができ、可能な4KBエントリをすべて検索する必要がないため、TLB帯域幅と時間を節約できる。
本発明の例示的な実施形態を添付の図面を参照しながら本明細書で詳細に説明してきたが、本発明はそれらの正確な実施形態に限定されず、添付の特許請求の範囲によって規定されるような本発明の範囲および趣旨から逸脱することなく、当業者によってさまざまな変更および修正がなされ得る。

Claims (17)

  1. 複数のキャッシュエントリを含むアドレス変換キャッシュであって、各キャッシュエントリは、メモリシステムに格納された1つまたは複数のページテーブルの1つまたは複数のページテーブルエントリに依存するアドレス変換データを格納する、アドレス変換キャッシュと、
    少なくとも1つのターゲットページテーブルエントリに対応するアドレス情報を指定する無効化要求に応答して、無効化ルックアップ操作を実行して、前記アドレス変換データが前記少なくとも1つのターゲットページテーブルエントリに依存している前記アドレス変換キャッシュの少なくとも1つのターゲットキャッシュエントリを識別して、前記少なくとも1つのターゲットキャッシュエントリに格納されている前記アドレス変換データの無効化をトリガする、制御回路と、
    を備える装置であって、
    前記制御回路は、前記少なくとも1つのターゲットページテーブルエントリのページサイズを示すページサイズ情報に応じて、前記無効化ルックアップ操作に使用する複数の無効化ルックアップモードのいずれかを選択するように構成され、前記複数の無効化ルックアップモードは、前記アドレス情報に応じて前記少なくとも1つのターゲットキャッシュエントリを識別するさまざまな方法に対応する、
    装置。
  2. 前記無効化ルックアップモードが、
    前記無効化ルックアップ操作が、前記アドレス情報に基づいて選択された前記アドレス変換キャッシュの少なくとも1つの選択されたキャッシュエントリにインデックスを付けること、および各選択されたキャッシュエントリが前記少なくとも1つのターゲットキャッシュエントリの1つであるかどうかの判断することを含む、キャッシュインデックスモードと、
    前記無効化ルックアップ操作が、前記アドレス情報とは無関係に選択された前記アドレス変換キャッシュのキャッシュエントリの少なくともサブセットにアクセスすること、およびアクセスされた各キャッシュエントリが前記少なくとも1つのターゲットキャッシュエントリの1つであるかどうかを判断することを含む、キャッシュウォークモードと
    を含む、請求項1に記載の装置。
  3. 前記制御回路は、前記ページサイズが閾値サイズよりも小さいことを前記ページサイズ情報が示すとき、前記キャッシュインデックスモードを選択し、前記ページサイズが前記閾値サイズよりも大きいことを前記ページサイズ情報が示すとき、前記キャッシュウォークモードを選択するように構成される、請求項2に記載の装置。
  4. 第1アドレスの第2アドレスへの変換を制御するためのステージ1ページテーブルを構成し、かつ前記第2アドレスの第3アドレスへの変換を制御するためのステージ2ページテーブルを構成する処理回路を備え、
    前記アドレス変換キャッシュは、前記第1アドレスの前記第3アドレスへの直接変換を制御するための結合アドレス変換データを格納するように構成される、
    請求項1から3のいずれか一項に記載の装置。
  5. 各キャッシュエントリが、前記アドレス変換キャッシュによってサポートされる複数の異なるブロックサイズの1つを有するアドレスのブロックを変換するためのアドレス変換データを格納するように構成される、請求項1から4のいずれか一項に記載の装置。
  6. 前記複数の無効化ルックアップモードが、前記無効化要求によって指定された前記アドレス情報に応じてアクセスされるキャッシュエントリを選択するための複数のキャッシュインデックスモードを含み、各インデックスモードは異なるブロックサイズに対応し、
    前記無効化要求に応答して、前記制御回路は、前記ページサイズ情報に応じて前記複数のキャッシュインデックスモードのサブセットを選択し、かつ前記複数のキャッシュインデックスモードの前記選択されたサブセットに対応する1つまたは複数の無効化ルックアップ操作をトリガするように構成される、請求項5に記載の装置。
  7. 前記ページサイズ情報が、
    前記ページサイズの明示的な表示、
    前記ページサイズの上限、
    前記ページサイズの下限、
    前記ページサイズが閾値サイズより小さいかどうかの表示、
    前記ページサイズが閾値サイズより大きいかどうかの表示、
    前記アドレス情報で指定されたアドレス変換範囲の開始アドレスおよび終了アドレス、
    複数のページサイズから選択された適用可能なページサイズのサブセットを識別する情報、および
    前記無効化要求に関連付けられたアドレス変換の複数のステージのうちの1つの表示、
    のうちの少なくとも1つを含む、請求項1から6のいずれか一項に記載の装置。
  8. 前記ページサイズ情報が、前記無効化要求によって指定される、請求項1から7のいずれか一項に記載の装置。
  9. 前記無効化要求は、前記アドレス情報が前記少なくとも1つのターゲットページテーブルエントリを識別するための単一アドレスを指定するアドレス指定無効化要求を含む、請求項1から8のいずれか一項に記載の装置。
  10. 前記無効化要求は、前記アドレス情報がアドレスの無効化範囲を指定する範囲指定無効化要求を含み、前記少なくとも1つのターゲットページテーブルエントリは、前記無効化範囲内に少なくとも部分的に存在するアドレスグループに対応する少なくとも1つのページテーブルエントリを含む、請求項1から8のいずれか一項に記載の装置。
  11. 包括的範囲指定無効化要求に応答して、前記少なくとも1つのターゲットページテーブルエントリが、前記アドレスグループのいずれかの部分が前記無効化範囲内にあるアドレスグループに対応する1つまたは複数のページテーブルエントリを含む、請求項10に記載の装置。
  12. 排他的範囲指定無効化要求に応答して、前記少なくとも1つのターゲットページテーブルエントリが、完全に前記無効化範囲内にあるアドレスグループに対応する1つまたは複数のページテーブルエントリを含む、請求項10または11に記載の装置。
  13. 各ページテーブルエントリが、
    次のレベルのページテーブルエントリのアドレスを指定する中間ページテーブルエントリ、および、
    アドレス変換マッピングを指定するリーフページテーブルエントリ、
    のいずれかを含む、請求項1から12のいずれか一項に記載の装置。
  14. 各ページテーブルエントリが、
    次のレベルのページテーブルエントリのアドレスを指定する中間ページテーブルエントリ、および、
    アドレス変換マッピングを指定するリーフページテーブルエントリ
    のいずれかを含み、
    リーフおよび中間の排他的範囲指定無効化要求に応答して、前記少なくとも1つのターゲットページテーブルエントリは、完全に前記無効化範囲内にあるアドレスグループに対応する所与のページテーブルの任意のリーフページテーブルエントリおよび前記所与のページテーブルの任意の中間ページテーブルエントリを含む、
    請求項12に記載の装置。
  15. 前記リーフおよび中間の排他的範囲指定無効化要求に応答して、前記少なくとも1つのターゲットページテーブルエントリが、少なくとも部分的に前記無効化範囲外にあるアドレスグループに対応する前記所与のページテーブルの中間ページテーブルエントリを除外する、請求項14に記載の装置。
  16. 複数のキャッシュエントリを含むアドレス変換キャッシュからのアドレス変換データを無効化するための方法であって、各キャッシュエントリは、メモリシステムに格納された1つまたは複数のページテーブルの1つまたは複数のページテーブルエントリに依存してアドレス変換データを格納し、前記方法は、
    少なくとも1つのターゲットページテーブルエントリに対応するアドレス情報を指定する無効化要求に応答して、
    前記アドレス変換データが前記少なくとも1つのターゲットページテーブルエントリに依存する前記アドレス変換キャッシュの少なくとも1つのターゲットキャッシュエントリを識別するために、無効化ルックアップ操作を実行するステップであって、複数の無効化ルックアップモードのいずれが前記無効化ルックアップ操作に使用されるかは、前記少なくとも1つのターゲットページテーブルエントリのページサイズを示すページサイズ情報に応じて選択され、前記複数の無効化ルックアップモードは、前記アドレス情報に応じて前記少なくとも1つのターゲットキャッシュエントリを識別するさまざまな方法に対応する、ステップと、
    前記少なくとも1つのターゲットエントリに格納された前記アドレス変換データの無効化をトリガするステップと
    を含む、方法。
  17. 複数のキャッシュエントリを含むアドレス変換キャッシュであって、各キャッシュエントリは、メモリシステムに格納された1つまたは複数のページテーブルの1つまたは複数のページテーブルエントリに依存するアドレス変換データを格納し、
    各ページテーブルエントリは、
    次のレベルのページテーブルエントリのアドレスを指定する中間ページテーブルエントリ、および、
    アドレス変換マッピングを指定するリーフページテーブルエントリ
    のいずれかを含む、アドレス変換キャッシュと、
    前記アドレス変換データが少なくとも1つのターゲットページテーブルエントリに依存する前記アドレス変換キャッシュの少なくとも1つのターゲットキャッシュエントリの無効化をトリガするために、アドレスの無効化範囲を示す範囲情報を識別するリーフおよび中間の排他的範囲指定無効化要求に応答する制御回路であって、前記少なくとも1つのターゲットページテーブルエントリは、完全に前記無効化範囲内にあるアドレスグループに対応する、所与のページテーブルの任意のリーフページテーブルエントリ、および前記所与のページテーブルの任意の中間ページテーブルエントリを含む、制御回路と
    を備える、装置。
JP2020503733A 2017-07-31 2018-05-15 アドレス変換キャッシュ Active JP7133615B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1712251.6 2017-07-31
GB1712251.6A GB2565069B (en) 2017-07-31 2017-07-31 Address translation cache
PCT/GB2018/051314 WO2019025748A1 (en) 2017-07-31 2018-05-15 ADDRESS TRANSLATION CACHE

Publications (2)

Publication Number Publication Date
JP2020529656A JP2020529656A (ja) 2020-10-08
JP7133615B2 true JP7133615B2 (ja) 2022-09-08

Family

ID=59778735

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020503733A Active JP7133615B2 (ja) 2017-07-31 2018-05-15 アドレス変換キャッシュ

Country Status (7)

Country Link
US (1) US11853226B2 (ja)
EP (1) EP3662378B1 (ja)
JP (1) JP7133615B2 (ja)
KR (1) KR102663356B1 (ja)
CN (1) CN110998549B (ja)
GB (1) GB2565069B (ja)
WO (1) WO2019025748A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11379592B2 (en) * 2018-12-20 2022-07-05 Intel Corporation Write-back invalidate by key identifier
KR20200116372A (ko) * 2019-04-01 2020-10-12 에스케이하이닉스 주식회사 저장 장치, 컨트롤러 및 컨트롤러의 동작 방법
US10817433B2 (en) * 2019-06-28 2020-10-27 Intel Corporation Page tables for granular allocation of memory pages
GB2586984B (en) 2019-09-10 2021-12-29 Advanced Risc Mach Ltd Translation lookaside buffer invalidation
US11200175B2 (en) * 2020-03-20 2021-12-14 Arm Limited Memory accessor invailidation
US11615033B2 (en) * 2020-09-09 2023-03-28 Apple Inc. Reducing translation lookaside buffer searches for splintered pages
US11675710B2 (en) * 2020-09-09 2023-06-13 Apple Inc. Limiting translation lookaside buffer searches using active page size
GB2603489B (en) * 2021-02-04 2023-02-22 Advanced Risc Mach Ltd A data processing apparatus and method for address translation
CN115237585A (zh) * 2021-04-23 2022-10-25 超聚变数字技术有限公司 一种内存控制器、数据读取方法以及内存系统
CN113297105B (zh) * 2021-05-08 2024-01-09 阿里巴巴新加坡控股有限公司 一种转换地址的缓存处理方法及装置
US20230169013A1 (en) * 2021-12-01 2023-06-01 Samsung Electronics Co., Ltd. Address translation cache and system including the same
CN114281720B (zh) * 2021-12-14 2022-09-02 海光信息技术股份有限公司 处理器、用于处理器的地址翻译方法、电子设备
US11853228B1 (en) * 2022-06-10 2023-12-26 Arm Limited Partial-address-translation-invalidation request

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130212313A1 (en) 2003-09-30 2013-08-15 Eric C. Cota-Robles Invalidating translation lookaside buffer entries in a virtual machine system
JP2017517040A (ja) 2014-02-21 2017-06-22 エイアールエム リミテッド 格納されたアドレス変換の無効化

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06139149A (ja) 1992-10-29 1994-05-20 Mitsubishi Electric Corp 多重仮想空間制御装置
US5764944A (en) * 1995-09-08 1998-06-09 United Microelectronics Corp. Method and apparatus for TLB invalidation mechanism for protective page fault
US6493812B1 (en) * 1999-12-17 2002-12-10 Hewlett-Packard Company Apparatus and method for virtual address aliasing and multiple page size support in a computer system having a prevalidated cache
US9454490B2 (en) * 2003-05-12 2016-09-27 International Business Machines Corporation Invalidating a range of two or more translation table entries and instruction therefore
US7116569B2 (en) * 2005-02-11 2006-10-03 International Business Machines Corporation Method and apparatus for selecting operating characteristics of a content addressable memory by using a compare mask
US7389400B2 (en) * 2005-12-15 2008-06-17 International Business Machines Corporation Apparatus and method for selectively invalidating entries in an address translation cache
US10380030B2 (en) * 2012-12-05 2019-08-13 Arm Limited Caching of virtual to physical address translations
KR101502827B1 (ko) * 2014-03-20 2015-03-17 주식회사 에이디칩스 컴퓨터 시스템에서의 캐시 무효화 방법
US20160140042A1 (en) * 2014-11-14 2016-05-19 Cavium, Inc. Instruction cache translation management
US9836410B2 (en) 2015-04-15 2017-12-05 Qualcomm Incorporated Burst translation look-aside buffer
US9898418B2 (en) 2015-05-21 2018-02-20 Via Alliance Semiconductor Co., Ltd. Processor including single invalidate page instruction
US9892060B2 (en) * 2015-12-02 2018-02-13 International Business Machines Corporation Identifying stale entries in address translation cache
US10599569B2 (en) * 2016-06-23 2020-03-24 International Business Machines Corporation Maintaining consistency between address translations in a data processing system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130212313A1 (en) 2003-09-30 2013-08-15 Eric C. Cota-Robles Invalidating translation lookaside buffer entries in a virtual machine system
JP2017517040A (ja) 2014-02-21 2017-06-22 エイアールエム リミテッド 格納されたアドレス変換の無効化

Also Published As

Publication number Publication date
EP3662378B1 (en) 2022-04-06
KR102663356B1 (ko) 2024-05-07
JP2020529656A (ja) 2020-10-08
US20200218665A1 (en) 2020-07-09
US11853226B2 (en) 2023-12-26
GB2565069B (en) 2021-01-06
EP3662378A1 (en) 2020-06-10
KR20200035061A (ko) 2020-04-01
GB2565069A (en) 2019-02-06
GB201712251D0 (en) 2017-09-13
CN110998549A (zh) 2020-04-10
WO2019025748A1 (en) 2019-02-07
CN110998549B (zh) 2023-11-17

Similar Documents

Publication Publication Date Title
JP7133615B2 (ja) アドレス変換キャッシュ
US10042778B2 (en) Collapsed address translation with multiple page sizes
US9208103B2 (en) Translation bypass in multi-stage address translation
US9639476B2 (en) Merged TLB structure for multiple sequential address translations
US9268694B2 (en) Maintenance of cache and tags in a translation lookaside buffer
US7793070B2 (en) Processing system implementing multiple page size memory organization with multiple translation lookaside buffers having differing characteristics
EP3857388B1 (en) External memory based translation lookaside buffer
US10380030B2 (en) Caching of virtual to physical address translations
CN108459975B (zh) 用于有效使用地址转换缓存的技术
US20160140042A1 (en) Instruction cache translation management
CN105446898B (zh) 用于数据处理的装置及方法
US10489306B2 (en) Apparatus and method for processing data, including cache entry replacement performed based upon content data read from candidates selected using victim selection
US20230102891A1 (en) Re-reference interval prediction (rrip) with pseudo-lru supplemental age information
CN117349197A (zh) 内存管理单元和内存访问方法
US10102143B2 (en) Eviction control for an address translation cache
JPS63284649A (ja) キャッシュメモリ制御方法
CN114365102A (zh) 转译后备缓冲器失效

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220427

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220428

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220727

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220829

R150 Certificate of patent or registration of utility model

Ref document number: 7133615

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150