JP2017517040A - 格納されたアドレス変換の無効化 - Google Patents

格納されたアドレス変換の無効化 Download PDF

Info

Publication number
JP2017517040A
JP2017517040A JP2016551713A JP2016551713A JP2017517040A JP 2017517040 A JP2017517040 A JP 2017517040A JP 2016551713 A JP2016551713 A JP 2016551713A JP 2016551713 A JP2016551713 A JP 2016551713A JP 2017517040 A JP2017517040 A JP 2017517040A
Authority
JP
Japan
Prior art keywords
identifier
data processing
address translation
address
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016551713A
Other languages
English (en)
Other versions
JP6509241B2 (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 JP2017517040A publication Critical patent/JP2017517040A/ja
Application granted granted Critical
Publication of JP6509241B2 publication Critical patent/JP6509241B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • 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/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • 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)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

第1のアドレッシング・システムで使用された第1のアドレスと、第2のアドレッシング・システムで使用された第2のアドレスとの間のアドレス変換がローカルに格納される、データを処理するデータ処理装置及び方法が開示される。それぞれの格納されるアドレス変換は、対応する識別子といっしょに格納される。選択され格納されたアドレス変換において無効化プロセスを行うよう命令する無効化コマンドに応じて、選択され格納されたアドレス変換が無効化され、選択され格納されたアドレス変換は、指定の第1のアドレス及び指定の識別子によって、無効化コマンドで特定される。無効化プロセスは、複数の識別子を、識別子グループとして互いに関連付ける識別子グルーピング情報によってさらに構成され、無効化プロセスは、指定の第1のアドレスに一致し、且つ指定の識別子が属する識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換に適用される。

Description

本発明は、データ処理に関する。より詳細には、本発明は、アドレス変換回路における格納されたアドレス変換の無効化に関する。
メモリに格納されたデータ値を参照して、データ処理動作を行うデータ処理装置では、第1のアドレッシング・システムのアドレスを、第2のアドレッシング・システムのアドレスに変換するように構成されるアドレス変換回路を提供することが知られている。例えば、この場合、データ処理装置のデータ処理回路(例えば、CPU)は、仮想アドレスを使用して、そのデータ処理動作を行うように構成され、一方、メモリに格納されるデータ値は、物理アドレスを使用して、メモリによって参照される。したがって、この実例では、アドレス変換回路は、仮想アドレスを物理アドレスに変換するように構成される。いくつかのアドレス変換が、繰り返し行われる可能性があるとすれば、アドレス変換プロセスの実行を容易にするために、特にメモリからアドレス変換定義を検索することに関連するレイテンシを回避するために、データ処理回路に密接に関連付けて提供されたストレージに、一連のアドレス変換をキャッシュすることがさらに知られている。このようなアドレス変換回路は、例えば、トランスレーション・ルックアサイド・バッファ(TLB:Translation Lookaside Buffer)によって提供される。
指定のメモリ・アドレスへの必要とされるタイプのアクセスを行うことが許される要求元のみに、対応するアドレス変換が提供されることができるように、特定のアドレス変換が、メモリの特定のセクションに関連付けられ、これによって、通常それらに関連した定義済み許可を有するようになるということにより、例えば、コンテキスト・スイッチ後、アドレス変換が、無効になる可能性があることがさらに知られている。この状態に対処する簡単で、それでいて単刀直入な技術は、このような状態でローカルに格納される(キャッシュされる)全ての格納されたアドレス変換をフラッシュして、その後に要求されるアドレス変換が、メモリに格納されたページ・テーブルなどの限定的な参照元を参照して判断される必要があるようにし、これによって、メモリ・アクセス許可が、確実に正しく守られるようにするというものである。しかし、ローカル・ストレージの内容全部が削除され、それによって、ローカル・ストレージを有することの十分な利益が再び実感されることができないうちに、再配置される必要があるため、この技術は、ローカル・アドレス変換ストレージ(例えば、TLB)のむしろ非効率な使用をもたらす可能性がある。
そのため、特定のメモリ・アドレスを指定し、且つデータ処理装置におけるいずれかのアドレス変換回路に、そのアドレスに対応する格納されたアドレス変換を無効化させる無効化コマンドに応じるように、このようなアドレス変換回路を構成することも知られている。さらに、データ処理回路が、コンテキスト間を効率的に切り替えできるようにするために、又は、例えば、複数の仮想マシンをホストできるようにするために、それぞれのローカルに格納されたアドレス変換に関連付けて識別子(例えば、アドレス空間識別子及び/又は仮想マシン識別子)を格納して、いずれか所定のアドレス変換が、一致する識別子を提供することができる要求元のみに使用可能であるようにすることも知られている。したがって、そのようなデータ処理装置における無効化コマンドも、対応する関連付けられた識別子を有することとなり、それぞれのプロセス及び/又は仮想マシンが、それ自身の格納されたアドレス変換の無効化は制御するが、その他のプロセス/仮想マシンの格納されたアドレス変換の無効化は制御しないようにする。
第1の態様から見ると、本発明は、データ処理のための装置を提供し、この装置は、メモリに格納されたデータ値を参照して、データ処理動作を行うように構成されたデータ処理回路であって、それぞれのデータ処理動作が、それに関連付けられた識別子を有する、データ処理回路と、
データ処理回路によって行われたデータ処理動作に対応する、第1のアドレッシング・システムで使用された第1のアドレスと、メモリによって使用された第2のアドレッシング・システムで使用された第2のアドレスとの間のアドレス変換を格納するように構成されたアドレス変換回路であって、それぞれの格納されるアドレス変換が、対応する識別子といっしょに格納される、アドレス変換回路と
を備え、
アドレス変換回路は、選択され格納されたアドレス変換において無効化プロセスを行うよう命令する無効化コマンドに応じて、選択され格納されたアドレス変換を無効化するように構成され、選択され格納されたアドレス変換は、指定の第1のアドレス及び指定の識別子によって、無効化コマンドで特定され、
アドレス変換回路は、識別子グルーピング情報によってさらに構成された無効化プロセスを行うようにさらに構成され、識別子グルーピング情報は、複数の識別子を、識別子グループとして互いに関連付け、無効化プロセスは、指定の第1のアドレスに一致し、且つ指定の識別子が属する識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換に適用される。
本発明の発明者は、アドレス変換回路での格納されたアドレス変換の無効化における有利なフレキシビリティが、識別子グルーピング情報にさらに応じて、その無効化プロセスを行うようにアドレス変換回路を構成することによって提供されてもよいことを実現した。無効化プロセスは、無効化コマンドで指定されたアドレス及び識別子に既に基づいている。この識別子は、いくつかの形態をとる可能性があることに留意されるべきであり、例えば、指定の識別子は、アドレス空間識別子(ASID:Address Space IDentifier)などのプロセス識別子であってもよく、この場合、指定の識別子は、ASIDであり、指定のアドレスは、ASIDによって特定されたプロセスがアクセスを求めているアドレスを表す。代替えとして、識別子は、例えば、指定のアドレスへのアクセスを求めている、プロセスが実行されている種々のホストに対応してもよい。この実例では、指定の識別子は、装置のデータ処理回路によってホストされる特定の仮想マシンに対応し、これによって、その仮想マシンによって実行されるプロセスは、指定のアドレスへのアクセスを求めている。
装置のアドレス変換回路は、第1のアドレッシング・システムと第2のアドレッシング・システムのアドレス間のアドレス変換を格納するように構成される。これらのアドレッシング・システムは、例えば、仮想アドレス(例えば、CPUで使用されるような)、ゲスト物理アドレス(すなわち、中間物理アドレス)、及び物理アドレス(例えば、メモリで使用されるような)からそれぞれに応じて選択される、いくつかの形態をとる可能性がある。したがって、アドレス変換回路は、仮想アドレスと物理アドレスとの間のアドレス変換をもたらすように構成されてもよく、この変換全体は、それ自体、2つの段階、すなわち仮想アドレスからゲスト物理アドレスへの変換と、ゲスト物理アドレスから物理アドレスへの変換を含んでもよい。したがって、仮想アドレスとゲスト物理アドレスとの両方が、データ処理回路によって行われたデータ処理動作に対応することから、上記の第1のアドレッシング・システムで使用された第1のアドレスは、これらの上記の実例では、仮想アドレス又はゲスト物理アドレスに対応する可能性がある。第2のアドレスは、メモリによって、第2のアドレッシング・システムで使用されたアドレス(すなわち、物理メモリ・アドレス)である。
本発明によって提供されるフレキシビリティは、識別子グルーピング情報の提供から生じる。この識別子グルーピング情報は、複数の識別子を、識別子グループとして互いに関連付け、アドレス変換回路は、無効化コマンドに応じて、無効化コマンドそのものによって与えられた指定の第1のアドレス及び指定の識別子に一致する、格納されたアドレス変換を無効にするだけではなく、指定の第1のアドレスに一致し、且つ指定の識別子(無効化コマンドにおける)が属する識別子グループ内のその他の識別子に一致する、それ以上の格納されたアドレス変換を無効にするように構成される。
したがって、この方法における識別子グループの形態は、アドレス変換回路に格納された複数のアドレス変換が、1回の無効化コマンドに応じて無効化されることができるという利点がある。無効化コマンドそのものが、いくつかのソース、例えば、データ処理回路(それぞれがCPUとTLBの場合の、このスレーブ・アドレス変換回路に対するマスタ・デバイスとして動作する)から来る可能性がある、又は、無効化コマンドが、アドレス変換回路の内部に生成される(すなわち、一種のハウスキーピング作用として)可能性があることに留意されるべきである。
識別子グループは、これによって、例えば、アドレス空間識別子グループ(ASIDなど)に対応してもよく、又は、別の実例としては、仮想マシン識別子グループに対応してもよい。無効化コマンドで指定された第1のアドレスに一致し、且つ識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換において無効化プロセスを行うようにアドレス変換回路を構成することは、いずれかの特定の識別子の発信元(例えば、特定のプロセス又は仮想マシン)が、特定のアドレス(その発信元が、そこへの正当なアクセスを有する)に対する格納されたアドレス変換の全てが、識別子が属するグループの全てに対して無効化されるようにすることができることを意味する。したがって、本発明は、特定の識別子間に関係性を導入し、したがって、それらの識別子の発信元(例えば、プロセス又は仮想マシン)間に関係性を導入し、それらの発信元が、以下でより詳細に説明される有利な方法で、互いに関連付けられることを可能にする。
さらに、アドレス変換回路のこの構成によって、複数の格納されたアドレス変換が素早く無効化されることが可能である。この構成は、例えば、アドレス変換がメモリ管理ユニット(MMU:Memory Management Unit)内のTLBに格納されるコンテキストにおいて、複数のアドレス変換無効化が、かなり遅い可能性がある、全ての作動している仮想マシンの制御全体を維持するハイパバイザを介して、MMUと通信するソフトウェアによって実行されるような代替えの構成と比較されるべきである。
上述のように、識別子は、いくつかの形態をとる可能性があるが、一実施例では、データ処理回路は、データ処理動作を行う複数の仮想マシンをホストするように構成され、それぞれのアドレス変換に関連付けて、アドレス変換回路によって格納された対応する識別子は、仮想マシン識別子である。したがって、このような実施例では、識別子グルーピング情報は、複数の仮想マシン識別子を互いに関連付けて、無効化プロセスが、所定の第1のアドレス、及び関連の仮想マシン識別子グループのいずれかに対する全ての格納されたアドレス変換に適用されるようにする。
識別子グルーピング情報は、それぞれに関連した異なる利点を有する様々な異なる方法で提供されてもよい。例えば、いくつかの実施例では、アドレス変換回路は、識別子グルーピング情報を、それぞれの格納されたアドレス変換に関連付けて格納するように構成される。これによって、特定の識別子グループ定義が、それぞれの格納されたアドレス変換に直接関連付けられることが可能になり、したがって、これらの関連付けの構成における特定のフレキシビリティ(エントリ毎の)が可能になる。
識別子グルーピング情報そのものは、様々な形態をとってもよいが、いくつかの実施例では、識別子グルーピング情報は、無効化プロセスのために、格納されたアドレス変換をマッチングする時に無視されるべき、無効化コマンドにおける指定の識別子の一部を指定する。したがって、指定の識別子の一部を無視することによって、ワイルドカード・タイプのマッチング手順が提供され、アドレス変換回路に格納された複数の識別子は、無効化コマンドにおける指定の識別子に対してマッチングされることができる。この形態はさらに、指定の識別子の無視されるべき一部を特定することが、非常に限定された量の情報だけしか必要とせず(例えば、指定の識別子の無視するべき限定されたビット数を特定する)、それによって、この識別子グルーピング情報は、特に、識別子グルーピング情報がそれぞれの格納されたアドレス変換に関連付けて格納される場合、大きな負担を掛けることなく提供されることができる(したがって、アドレス変換回路において、追加空間を少ししか必要としない)という利点がある。格納されたアドレス変換をマッチングする際に無視されるべき、指定の識別子の一部を指定することは、受信された指定の識別子とのマッチングの際に無視すべき、それぞれの格納された識別子の一部を指定することと同じであると論理的に見なされてもよく、したがって、これらの同等の定義のそれぞれが、本明細書で考慮されることが留意されるべきである。
識別子グルーピング情報は、いくつかの方法で、指定の識別子の無視すべき一部を指定してもよいが、いくつかの実施例では、識別子グルーピング情報は、指定の識別子の一部が、最上位部分であるか、又は最下位部分であるかを指定する。これによって、識別子グルーピング情報は、例えば、指定の識別子の無視すべき最上位ビット数を指定してもよく、又は反対に、指定の識別子の無視すべき最下位ビット数を指定してもよい。これらの可能性のそれぞれに関連した特定の利点があり、例えば、指定の識別子の最下位部分を無視することは、それらの論理的関連付けを容易にしてもよい、識別子のナンバリング体系内で連続する識別子グループをもたらすが、他の状態では、グループとして互いに関連付けられた識別子が、識別子用に使用されるナンバリングシステム内で間隔を空けて置かれ、また「ミラーリングされた」識別子グループがサポートされることができるように、指定の識別子の最上位部分を無視することが好ましい場合がある。
いくつかの実施例では、識別子グルーピング情報は、非ブロードキャスト・マーカを指定するように構成可能で、無効化コマンドがブロードキャスト無効化コマンドとして受信される場合、無効化プロセスが、無効化コマンドに応じて、非ブロードキャスト・マーカで印付けされた、格納されたアドレス変換に対して行われないようにする。したがって、この構成は、特定の格納されたアドレス変換が、ブロードキャスト無効化コマンド、例えば、CPUによって開始され、それ自身のMMU/TLB装備の周辺デバイスによって受信される、分散型仮想メモリ無効化ブロードキャストの結果として、無効化から「保護される」ことができるという、このような形態によってサポートされてもよい有利なさらなる特徴を提供する。この状態では、周辺デバイスは、通常、それを介してCPUが周辺デバイスをプログラムすることができる、より一般的には、周辺デバイスと相互作用する、追加のインタフェースを提供されることとなり、この追加のインタフェースは、TLB内のエントリが無効化されるようにするのに使用されることもできる。
したがって、識別子グルーピング情報は、アドレス変換回路が、無効化コマンドに応じて実行することを求めるブロードキャスト無効化プロセスから、アドレス変換回路における特定の格納されたアドレス変換が保護されるべきであることを特定する、この特定の構成で使用されることができる。これは、追加レベルのフレキシビリティを、本発明によって提供された新しい構成にもたらすが、一般的には、識別子グルーピング情報は、特定の無効化コマンドに応じて、より多くのアドレス変換が無効化されるようにするのに使用され、この特定の構成は、指定のアドレス変換が、ブロードキャスト無効化コマンドによって開始された、その拡張された無効化プロセスから免れることを可能にする。
しかし、識別子グルーピング情報は、それぞれの格納されたアドレス変換に関連付けて直接格納されなくてもよく、例えば、いくつかの実施例では、装置は、アドレス変換回路によって行われた全てのアドレス無効化プロセスに適用するための、アドレス変換回路にとってアクセス可能な識別子グルーピング情報を格納するように構成される。したがって、この識別子グルーピング情報は、一般的に使用可能な方法で、アドレス変換回路の中央に格納されることができ(すなわち、アドレス変換回路そのものの中、又はより一般的には、データ処理装置内)、アドレス変換回路によって行われたいずれの無効化プロセスに対しても、この一般的な識別子グルーピング情報が参照されるようにする。これは、この識別子グルーピング情報を格納することに関連するストレージ・スペースを縮小する。
他の実施例では、アドレス変換回路は、無効化コマンド内の識別子グルーピング情報を特定するように構成される。したがって、この識別子グルーピング情報が、無効化コマンド毎に無効化コマンドに提供されるように、無効化コマンドそのものが、識別子グルーピング情報を含むように拡張されてもよい。これも、アドレス変換回路内のストレージ・スペースを節約し、さらに、識別子グルーピング情報が、それぞれの無効化コマンドに対してどのように定義されるかを定義するフレキシビリティを、無効化コマンドの発信元に提供する。
いくつかのこのような実施例では、データ処理回路は、2つのデータ処理モードのうちの1つのモードで動作するように構成され、第1のデータ処理モードでは、データ処理回路は、識別子グルーピング情報なしで無効化コマンドを発行するように構成され、装置は、識別子グルーピング情報を無効化コマンドに付加するように構成され、また第2のデータ処理モードでは、データ処理回路は、無効化コマンドを発行し、且つ識別子グルーピング情報を、無効化コマンドそのものに付加するように構成される。
これら2つのデータ処理モードは、いくつかの形態をとってもよいが、具体的には、データ処理装置内の様々な特権レベルでの動作に対応してもよい。したがって、第1のデータ処理モードは、低レベルの特権に対応し、ここで、無効化コマンドが、識別子グルーピング情報を定義するための十分な特権を有していない発信元(例えば、プロセス又は仮想マシン)によって発行され、したがって、この識別子グルーピング情報の無効化コマンドへの付加が、装置の別の部分(すなわち、これを行うための十分な特権を有する装置の部分)で取り扱われる。例えば、無効化コマンドを発行する仮想マシンが、識別子グルーピング情報を定義するための十分な特権を有していないという仮想マシン実施例のコンテキストでは、この識別子グルーピング情報は、十分な特権を有するハイパバイザによって付加されてもよい。言い換えれば、この実例では、ハイパバイザは、第2のデータ処理モードで動作しており、それによって、ハイパバイザ自身の無効化コマンドを発行する際には、識別子グルーピング情報を無効化コマンドそのものに付加するための十分な特権を有する。
いくつかの実施例では、データ処理回路は、少なくとも2つのデータ処理デバイスを備え、それぞれの識別子グループに対して、アドレス変換回路は、少なくとも2つのデータ処理デバイスのうちの第1のデータ処理デバイスに、その識別子グループの第1の識別子のみに対してのアドレス変換を提供し、且つ少なくとも2つのデータ処理デバイスのうちの第2のデータ処理デバイスに、その識別子グループのいずれかの識別子に対してのアドレス変換を提供するように構成される。
したがって、識別子グルーピング情報によって、複数の識別子を識別子グループとして互いに関連付けることは、特定の(第2の)データ処理デバイスに利益をもたらすが、別の(第1の)データ処理デバイスには利益をもたらさなくてもよい。これは、また、それによってデータ処理装置内の様々なレベルの特権がサポートされてもよい機構を提供し、ここで、第2のデータ処理デバイスのみが、識別子グループ内の識別子一式に対するアドレス変換が提供されるが、第1のデータ処理デバイスは、グループにおける特定の識別子とその他の識別子との関連付けが見えない。したがって、これは、第2のデータ処理デバイスが、第1のデータ処理デバイスと、第1の識別子を有効に共有することができるとともに、第1のデータ処理デバイスにとってアクセス可能ではない指定のグループ内のその他の識別子にアクセスできることを意味することが重要である。これは、例えば、第2のデータ処理デバイスのみが、識別子グループ内の全ての識別子といっしょに、無効化コマンドを発行することができるが、第1のデータ処理デバイスは、それに関連付けられた第1の識別子といっしょに無効化コマンドを発行するだけしかできないように制約されるという形態によって実施されてもよい。
いくつかの実施例では、アドレス変換回路は、アドレス変換が受信された第1のアドレス及び受信された識別子に対して格納されたかどうかを判断するルックアップ・プロセスを行うように構成され、アドレス変換回路は、それぞれの格納されたアドレス変換に関連付けて、ルックアップ・マッチ修飾子を格納するように構成され、そこでは、ルックアップ・マッチ修飾子が第1の値を有する場合には、ルックアップ・プロセスは、受信された識別子が格納された識別子に完全に一致する場合にのみ、アドレス変換を確認するように構成され、またルックアップ・マッチ修飾子が第2の値を有する場合には、ルックアップ・プロセスは、受信された識別子が、格納された識別子に対して識別子グルーピング情報によって定義されるように、格納された識別子が属する識別子グループ内のいずれかの識別子に一致する場合にアドレス変換を確認するように構成される。
したがって、識別子グループ内の複数の識別子に無効化プロセスを拡張するのに使用される識別子グルーピング情報も、アドレス変換回路によって実行されるルックアップ・プロセス内で使用されることができる。したがって、これは、アドレス変換回路に格納された1つのアドレス変換が、複数の識別子(それらの識別子はグループを形成する)に関連したルックアップ要求に応じて使用されることができ、したがって、指定のアドレス変換が、そのグループの個々の識別子に対して、アドレス変換回路に格納される必要がないことから、アドレス変換回路内のストレージ・スペースが有利に節約されることができる、ことを意味する。ルックアップ・マッチ修飾子は、この特徴が、所定の格納されたアドレス変換に対して、選択的に有効にされる、又は無効にされることを可能にする。
いくつかの実施例では、アドレス変換回路は、ルックアップ・プロセスの結果としてアドレス変換が確認されない場合、メモリからアドレス変換をフェッチする検索プロセスを開始し、またルックアップ・マッチ修飾子が第1の値を有し、検索プロセスが、受信された識別子は一致しなかったが、この受信された識別子が、アドレス変換回路における一致する格納された識別子も属する識別子グループに属することから、ルックアップ・プロセスの結果として、アドレス変換が確認されなかったことを示す場合、アドレス変換回路は、格納された識別子に対するルックアップ・マッチ修飾子を、第2の値を有するように変更するように、さらに構成される。
したがって、ルックアップ・プロセスの結果として、アドレス変換が確認されない状態では(例えば、TLB「ミス」が起こる場合)、メモリからアドレス変換をフェッチする検索プロセスが開始されることができる(例えば、ページ・テーブル・ウォーク)。受信された識別子が一致しなかったが、その受信された識別子が属する識別子グループ内の別の識別子に対して、一致するアドレス変換がアドレス変換回路に格納されることから、ルックアップ・プロセスがミスとなったことが、検索プロセスの結果として確認され、また、検索プロセスが、メモリからフェッチされたアドレス変換が、そうでなければ、格納された識別子に対して格納されたアドレス変換に一致することを示す場合、アドレス変換回路は、格納された識別子に対するルックアップ・マッチ修飾子を、第2の値を有するように変更して、アドレス変換回路における新しいエントリが、ルックアップ・プロセスを開始した、要求されたアドレス変換に対して作られる必要がないようにし、このアドレス及び受信された識別子に関する、さらなるアドレス変換要求が、その後、既存の一致するエントリを利用することができるようにする。したがって、アドレス変換回路内のストレージ・スペースは、それらの識別子が識別子グループに属する場合、それらの関連する識別子のみによって異なる、複数のアドレス変換が格納されるよう求める要求を回避することによって、節約される。
いくつかの実施例では、アドレス変換回路は、第1のアドレッシング・システムにおけるページ・テーブルに対する、第2のアドレッシング・システムにおけるページ・テーブルへのアドレス変換を格納するように構成されたトランスレーション・ルックアサイド・バッファである。
いくつかの実施例では、データ処理回路は、少なくとも2つのデータ処理デバイスを備え、少なくとも2つのデータ処理デバイスのうちの第1のデータ処理デバイスは、汎用中央処理ユニットであり、少なくとも2つのデータ処理デバイスのうちの第2のデータ処理デバイスは、汎用中央処理ユニットの代わりに、データ処理動作の少なくともいくつかを行うように構成されたスレーブ・デバイスである。
第2の態様から見ると、本発明は、データ処理の方法を提供し、方法は、メモリに格納されたデータ値を参照して、データ処理動作を行うステップであって、それぞれのデータ処理動作がそれに関連した識別子を有するステップと、データ処理回路によって行われたデータ処理動作に対応する、第1のアドレッシング・システムで使用された第1のアドレスと、メモリによって使用された、第2のアドレッシング・システムで使用された第2のアドレスとの間のアドレス変換を格納するステップであって、それぞれの格納されるアドレス変換が、対応する識別子といっしょに格納される、ステップと、無効化コマンドに応じて、選択され格納されたアドレス変換に無効化プロセスを行って、選択され格納されたアドレス変換を無効化するステップであって、選択され格納されたアドレス変換が、指定の第1のアドレス及び指定の識別子によって、無効化コマンドで特定される、ステップと、識別子グルーピング情報によってさらに構成された無効化プロセスを行うステップであって、識別子グルーピング情報が、複数の識別子を、識別子グループとして互いに関連付け、無効化プロセスが、指定の第1のアドレスに一致し、且つ指定の識別子が属する識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換に適用される、ステップと、を含む。
第3の態様から見ると、本発明は、データ処理のための装置を提供し、装置は、メモリに格納されたデータ値を参照して、データ処理動作を行う手段であって、それぞれのデータ処理動作が、それに関連した識別子を有する、手段と、データ処理回路によって行われたデータ処理動作に対応する、第1のアドレッシング・システムで使用された第1のアドレスと、メモリによって使用された、第2のアドレッシング・システムで使用された第2のアドレスとの間のアドレス変換を格納する手段であって、それぞれの格納されるアドレス変換が、対応する識別子といっしょに格納される、手段と、無効化コマンドに応じて、選択され格納されたアドレス変換に無効化プロセスを行って、選択され格納されたアドレス変換を無効化する手段であって、選択され格納されたアドレス変換が、指定の第1のアドレス及び指定の識別子によって、無効化コマンドで特定される、手段と、識別子グルーピング情報によってさらに構成された無効化プロセスを行う手段であって、識別子グルーピング情報が、複数の識別子を、識別子グループとして互いに関連付け、無効化プロセスが、指定の第1のアドレスに一致し、且つ指定の識別子が属する識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換に適用される、手段と、を備える。
本発明は、単に例示されるものとして、添付の図面で図示されるその実施例を参照して、さらに説明される。
一実施例におけるデータ処理装置を概略的に図示する図である。 一実施例におけるTLB無効化コマンドのブロードキャスティングを概略的に図示する図である。 一実施例における、CPU及びGPUによって使用された一組のゲスト物理アドレスの、メモリによって使用された物理メモリ・アドレスへのマッピングを概略的に図示する図である。 一実施例におけるアドレス変換回路の例示的な内容を示す図である。 図4Aのアドレス変換回路に格納された無効化ワイルドカード情報のより詳細な定義を示す図である。 一実施例におけるワイルドカード・ルックアップ情報の使用を図示する図である。 一実施例におけるワイルドカード・ルックアップ情報の使用を図示する図である。 一実施例におけるワイルドカード・ルックアップ情報の使用を図示する図である。 一実施例における装置によってとられる一連のステップを概略的に図示する図である。 無効化ワイルドカード情報がどのように提供されるかの3つの異なる構成で、3つの異なる実施例を概略的に図示する図である。 無効化ワイルドカード情報がどのように提供されるかの3つの異なる構成で、3つの異なる実施例を概略的に図示する図である。 無効化ワイルドカード情報がどのように提供されるかの3つの異なる構成で、3つの異なる実施例を概略的に図示する図である。 ハイパバイザが、無効化ワイルドカード情報を、仮想マシンによって発行された無効化コマンドに付加するように構成される一実施例における、データ処理回路を概略的に図示する図である。 一実施例におけるアドレス変換回路を概略的に図示する図である。 一実施例の方法においてとられてもよい一連のステップを概略的に図示する図である。
図1は、一実施例におけるデータ処理装置10を概略的に図示する。データ処理装置は、メモリ26に格納されたデータ値を参照して、データ処理動作を行う、CPU11、CPU12、GPU13及び暗号化−エンジン14を備える。これらのデータ処理ユニットは、システム相互接続25を介して、メモリ26に格納されたデータ値にアクセスする。実際には、図示された2つのCPU11、12よりも多いCPU(それらの間をつなぐ大きな点によって示される)が提供されてもよいが、図1の説明図では、見やすくするためにCPUは2つのみ示される。データ処理ユニット11〜14のそれぞれは、仮想メモリ・アドレスを参照して、そのデータ処理動作を行うように構成され、各データ処理ユニットは、それによって、メモリ26に格納されるページ・テーブルを参照して、メモリ26によって使用された物理メモリ・アドレスに、それぞれのデータ処理ユニットによって使用された仮想メモリ・アドレスを変換するように構成される、メモリ管理ユニット15〜18をそれぞれ備える(すなわち、CPU11、12はそれぞれMMU15、16を備え、GPU13、暗号化−エンジン14はそれぞれ入出力MMU(IOMMU:Input−Output MMU)17、18を備える)。メモリ26からのページ・テーブルの検索に関連したレイテンシを避けるために、それぞれのMMUは、最後に使用された一組のアドレス変換をキャッシュするように構成されるトランスレーション・ルックアサイド・バッファ(TLB)19〜22を備える。
データ処理装置10は、いくつかの仮想マシンをホストするように構成され、これらの仮想マシンは、具体的にはCPU11、12によってホストされる。図1で示されるように、特定の仮想マシンが、特定のCPUに関連付けられてもよいが(例えば、示されるように、VM1はCPU1に、VM2はCPU12に)、例えば、仮想マシンがいくつかのCPUによってホストされる、その他の構成も可能である。ハイパバイザも、CPUによってホストされ、図示された実例では、データ処理装置内の全てのCPUによってホストされるが、これも、単に1つの例示的な構成を表すもので、ハイパバイザは、他の実例では、提供された全てのCPUよりも少ないCPUでホストされる可能性がある。したがって、CPU11、12は、汎用データ処理ユニットであり、一方、GPU13及び暗号化−エンジン14は、CPUに代わって特定のデータ処理タスクを実行するように構成された、より専用的なデバイスであることが理解されよう。例えば、GPU13は、特定のグラフィックス処理動作(例えば、映像の符号化及び復号化)を実行するために提供されてもよく、一方、暗号化−エンジン14は、データの復号化及び暗号化を行うことができる。
一般的に、所定のTLBにおけるエントリは、そのTLBエントリに関連する仮想マシンを特定する識別子VMIDでタグ付けされる。これによって、データ処理装置によってホストされる様々な仮想マシンのデータ処理動作間の切り替え、したがってそれらの仮想マシンに割り当てられたページ・テーブル間の切り替えが、TLBのフラッシュを必要とすることなく、可能になる。所定のCPUが、その関連するTLBにおけるTLBエントリの無効化を望む場合、図2に図示されるように、そのCPU11は、ページの無効化されるべき仮想アドレス(VA:Virtual Address)、アドレス空間識別子(ASID:Address Space IDentifier)及び仮想マシン識別子(VMID:Virtual Machine IDentifier)を指定するTLB無効化命令をブロードキャストすることができる。したがって、無効化は、アドレス、ASID及びVMID固有であり、例えば、VMID14におけるASID3に対するページ0×12000の無効化が、VMID15におけるASID3に対するページ0×12000を無効化しないようにする。
メモリ・システムの分散される性質は、このTLBエントリがローカルTLB19で無効化されるだけではなく、システム相互接続25にわたるブロードキャストによって、いずれかの関連のTLBエントリも、システムにおけるその他のTLB(図2には、説明を簡単にするために、TLB20、21のみが示される)において次いで無効化されるということに反映される。GPU13も、CPUからプログラミング・コマンドを受信するとして、図2に示され、これらのコマンドは、ブロードキャストTLB無効化命令とは別に受信されることに留意されたい。したがって、これは、それを介してCPUがGPUをプログラムすることができる追加のインタフェースを表し、この追加のインタフェースは、その後、TLBにおけるエントリが無効化されるようにするために、CPUによって使用されることができる。これは、GPU TLBにおけるエントリが、ブロードキャスト無効化コマンドを「受け付けない」として印付けされる場合、使用されてもよい(図4Bに関連して以下により詳細に説明されるように)。
図3は、CPUにおける特定の仮想マシン識別子にとって可視のアドレス空間と、GPUにおける対応する仮想マシン識別子及び関連の仮想マシン識別子(以下により詳細に説明される)とに対する、ゲスト物理アドレス(中間物理アドレス)の物理メモリ・アドレスへの変換の概略図を提示する。図3の説明図は、特に、様々なレベルの特権が存在し、それに応じて、システムにおける特権の少ないデバイスからの保護を必要とする、メモリに格納されたデータがあるシステムのコンテキストにおいて理解されるべきである。図3に図示された実例では、GPUは、システム内の特権の多いデバイスであり、一方、CPUによってホストされた仮想マシン(識別子VMID4を有する)は、システムにおいて特権の少ないエージェントである。簡単にするために図示されていないが、ゲスト物理アドレスが、仮想アドレスの変換によって(ステージ1のページ・テーブルを使用して)生成されたであろうことが、図3の説明図で暗に示されることにも留意されたい。
ハイパバイザも、もちろんシステムにおいて特権の多いエージェントであり、メモリにおける保護されたページへのアクセスを仲介するために使用される。したがって、ハイパバイザは、仮想マシンから、それに関連して、特定のデータ処理タスクが実行されるGPUに、指定のページを露出することを求める要求を受信することができる。このために、ハイパバイザは、GPUによって使用されるための仮想マシンのステージ2のページ・テーブルをコピーし、次に、指定のページを仮想マシン自身のステージ2のページ・テーブルから削除する。結果として、これらのページは、GPUにとってはアクセス可能となり(それらの元のメモリ・アドレスで)、一方、発信側仮想マシンそのものにとってはアクセス不可となる。仮想マシン・ソフトウェアは、次に、GPUがそれらの位置に含まれたデータにアクセスできることを通常は除いて、GPUをポインタといっしょに、これらの保護されたページ内のバッファにプログラムする、ジョブを投入する、などのことができる。
通常、仮想マシンに割り当てられたデバイス(GPU13など)は、ステージ2のアドレス変換を共有して、このデバイスと仮想マシンが、同一のゲスト物理アドレス空間を見るようにする可能性がある。この状態では、デバイスMMUが、仮想マシンのCPUステージ2のページ・テーブルを共有すると、MMUは、同じVMIDを、ページ・テーブルから作成されたそのTLBエントリに関連付ける必要がある。これは、CPUからの分散型仮想メモリ(DVM:Distributed Virtual Memory)TLB無効化命令が、これらのエントリが、CPU自身のTLBにおけるエントリと同じ時点で正しく無効化されるようにするデバイスMMU TLBエントリに一致することとなるのを意味する。これは、DVMブロードキャストTLB無効化が、ハイパバイザを通じたデバイスMMUとのソフトウェア通信の代替え方法よりはるかに速くなることができるため、有利である。
しかし、この状態では、特権の少ない仮想マシンが、GPUに与えられた保護されたバッファを制御する場合、CPUのMMUとGPUのMMUは、様々なステージ2のページ・テーブルを使用して、GPUが、CPUがアクセスできる全てにアクセスすることを、しかし、CPUのビューから削除された保護されたバッファにアクセスできることに加えて、可能にする必要がある。
仮想マシンが、GPUに、データの2つの異なるブロック、一方は上記のように(様々なページ・テーブル・マッピングを使用して、バッファを保護する)保護されたブロック、もう一方は非保護で、仮想マシンのステージ2のページ・テーブルを共有するブロックを同時に処理することを要求する場合、問題が生じる。非保護のバッファに関連するデータ処理は、共有されたページ・テーブルに割り当てられた仮想マシン識別子(図3の実例におけるVMID4)を有することとなる。しかし、保護されたバッファは、そうすることによって、いくつかのMMU実施が、2つの異なるソースからのマッピングを混同することによって、保護を無効にすることとなるので、異なるページ・テーブル(保護されたバッファへのアクセスを可能にする)に対して同じVMIDに関連付けられることができない。
したがって、必要なページ・テーブル・マッピングが確実に正しく考慮されるようにするために、保護されたデータが、異なるVMIDによってアクセスされることが必要である。しかし、先行技術のTLB無効化技術によれば、これが元のVMIDに対するCPUからのDVMブロードキャストTLB無効化に適合しないこととなるため、これは、追加のVMIDに関連付けられたエントリの上述の追加の手動ソフトウェア無効化を必要とするであろう。これは、ハイパバイザ・トラップを伴って、動作を低下させる可能性がある。
しかし、本技術は、1回のDVMブロードキャストTLB無効化が、発信側仮想マシンに一致するVMID、及び仮想マシン(すなわち、図3の実例におけるGPU)に割り当てられたデバイス内で割り当てられた「2次的な」VMIDに対するエントリを無効化するために使用されることを可能にし、これによって動作を高める、という修正をMMUに加えることによって、この問題に取り組む。
本技術によって導入される修正は、システムのハイパバイザが、特定の発信側仮想マシンに関連付けられた、関連のVMIDのブロックを割り当てることを可能にする「ワイルドカード」の修正である。例えば、この「ワイルドカード」は、図4Aの例示的な構成で示されるように、TLBエントリに、フィールドとして格納されてもよい。これらのTLBエントリを利用するデータ処理タスク(すなわち、所定のページ・アドレスに対して、このTLBにおいてルックアップを行う)は、TLBエントリを、ページ・アドレス及びVMIDに正確にマッチングさせ、MMUが、2つの異なるページ・テーブルの保護を実施できるようにする。しかし、着信側DVM無効化命令は、ワイルドカードを使用して、TLBエントリに対してマッチングを行うことができ、1回の無効化が、複数のVMID及び両方のページ・テーブルに影響を及ぼすことができるようにする。余談として、図4Aで構成されたTLBエントリも、アドレス空間識別子ASIDを含み、また受信された無効化命令が、ASID固有であるように、又はASID値が、無効化のために無視されるように、構成されることができることに留意されるべきである。
図4Aに示された、TLBエントリにおける無効化ワイルドカード・フィールドは、図4Bで提示されるように構成される。したがって、図4Bで見られるように、無効化ワイルドカード・フィールドの上位ビットは、ワイルドカードが、VMID値の最上位ビット(「トップ」)に適用されるべきであるか、VMID値の最下位ビット(「ボトム」)に適用されるべきであるかを指定する。次に、無効化ワイルドカード・フィールドの下位2ビットは、VMID値において無視されるべきビット数を指定する。示されるように、このワイルドカード値が「00」に設定されると、「ワイルドカーディング」機能が停止され、VMID値の完全一致が、無効化命令に応じて要求される。VMID値の1又は2ビットは、ワイルドカード値に対して、それぞれ「01」と「10」の値を指定することによって、無視されてもよい。ワイルドカーディングが、VMID値の最下位ビットに適用される場合、ハイパバイザは、関連するVMIDを連続するペアで割り当て(例えば、図4Aの実例におけるVMID4とVMID5)、又は代替えとして、ワイルドカードが、VMID値の最上位ビットに適用される場合、これは、ハイパバイザが、VMID空間を、「ミラーリングされた」グループに分割して割り当てることを可能にする。例えば、16−ビットVMIDの場合、仮想マシンは、VMID0×300を使用する可能性があり、その保護されたデバイスMMUデータ処理ストリームは、0×8300を使用する可能性がある。「11」のワイルドカード値の追加の構成も提供され、特定のTLBエントリが、ブロードキャスト無効化命令に対して保護され、それを受け付けないようにすることを可能にする。上述のように、これは、例えば、周辺データ処理ユニット(図1の実例におけるGPU13又は暗号化−エンジン14)のうちの1つのIOMMUに提供されたTLBの特定の内容を「保護」するために使用されて、この内容が、独立したインタフェースを介して、CPUから受信された直接プログラミング命令によってのみ無効化されることができ、ブロードキャスト無効化命令に応じては無効化されることができないようにする。
したがって、この構成は、ハイパバイザが、所定の仮想マシンに対してVMIDグループを割り当てることを可能にして、1つのVMIDが、仮想マシンによって(直接CPUから、又は仮想マシンの制御下のデバイスを介して)開始される「正常な」トランザクションに使用できるようにし、一方、その他のVMIDは、保護を必要とする関連のデータ処理タスクで使用できるようにする。この方法で追加として構成されることができる「保護された」VMIDの数は、このため、提供されたワイルドカードのサイズに応じて変わる可能性があるが、図4A、4Bの実例では、4つのVMIDから成るグループであることが分かる。図4AのTLBにおいて示された例示的なエントリを参照すると、ページ・アドレス<A>及びVMID4を指定する着信側DVM無効化は、テーブルにおける第1のエントリが無効化されるようにするであろうが、ページ・アドレス<A>及びVMID5を指定する着信側DVM無効化は、テーブルにおける第1のエントリに関連した無効化ワイルドカード・フィールドが、VMID値の1最下位ビットが無視されるべきであり、したがって、無効化命令がVMID4を指定するか、又はVMID5を指定するかについて、この無効化命令が、TLBテーブルにおける第1のエントリに対してマッチングを行う、ということを示してから、そのようにするであろう。同様に、図4Aで示されるTLBテーブルにおける第3のエントリも、同じ無効化ワイルドカード値(001)のおかげで、ページ・アドレス<A>及びVMID4か、又はページ・アドレス<A>及びVMID5を指定する着信側DVM無効化命令によって、無効化されるであろう。反対に、図4Aで示されるTLBテーブルにおける第2のエントリは、無効化ワイルドカード・フィールドが、完全一致が必要とされることを示すことから、ページ・アドレス<B>及びVMID5を指定するDMV無効化命令によってのみ無効化されることができる。
次に、図4A、4Bに関連して説明された実施例の変形例が、図5A〜5Cに関連して説明される。2つのTLBエントリが、同じページ・アドレスに対して、しかし異なるVMID、すなわち第1のエントリと第3のエントリで作成されたことは、図4Aの例示的なTLBテーブルにおける第1と第3のエントリの比較によって理解されよう。VMID識別子が一つにグループ化される本発明のコンテキストでは、1つのみのTLBエントリが必要とされ、したがってTLB容量をより有効に使用できるようになる状態が実際にある。図5Aは、ページ・アドレス、VMID値及びワイルドカード無効化フィールド用のフィールドのみが示される図4Aで示されたTLBエントリの簡略形を示す。しかし、この変形例では、TLBエントリ内の追加のフィールド、すなわち、「ワイルドカード・ルックアップ」のフィールドが付加されている。このワイルドカード・ルックアップ値がゼロである場合、「正常な」完全マッチングTLBルックアップ挙動がもたらされる(すなわち、VMID値とページ・アドレスの完全一致が要求される)。したがって、図5Aの上部に示された実例では、着信側アドレス<E>とVMID4とに対してルックアップが行われ、これは、VMID値が一致しないことからTLBミスとなるであろう。これは、次に、メモリにおけるページ・テーブルから要求された変換を検索するページ・テーブル・ウォークをトリガする。この結果として、次にこの実施例では、生成されたエントリが、VMID5の代わりにVMID4をもつのではなく、TLBに既にあるエントリと同じであり、VMID4及びVMID5が、ワイルドカード無効化フィールドによって定義されるように、同じワイルドカード処理されたグループに属する、ということが判断される。この状態では、次に、ワイルドカード・ルックアップ値は、ルックアップにおけるVMIDマッチ動作を緩めることとなる1に更新されることができる。したがって、アドレス<E>及びVMID4に対して、さらなるルックアップが行われると、このルックアップもこのエントリにおいてヒットとなることができる。この状態に対応するアドレス空間ビューは、アドレスEにアクセスするVMID4とVMID5の両方を示す図5Bで概略的に図示される。しかし、VMID4がアクセスしないアドレスFに、VMID5が、さらに追加的にアクセスすることに留意されたい。図5Cを参照すると、VMID5に関連付けられたこのアドレスFに対してルックアップが初めて行われると、図示されたTLBエントリが、アドレスF及びVMID5に対して生成される結果となり、ここで、このアドレスが厳格にVMID5のみに属し、このアドレスに対するVMID4との関連付けはないことから、ワイルドカード無効化値は、完全一致を示すように設定される。したがって、アドレスF及びVMID4に対する次のルックアップが行われる場合、このエントリに対する更新は行われないこととなる(すなわち、ワイルドカード・ルックアップ値は、ゼロのままであり、アドレスF及びVMID4のルックアップは、このエントリに対しては常にミスとなることとなる)。
図6は、ブロードキャスト無効化コマンドがMMUによって受信される場合に、一実施例の方法においてとられる一連のステップを概略的に図示する。フローはステップ50で始まり、このプロセスは、無効化コマンドが受信されるまで待機する。このような無効化コマンドが受信されると、フローはステップ51に進み、ワイルドカード情報が適用可能であるかどうかが判断される。言い換えれば、ワイルドカード情報が、VMID値がマッチングされる方法(TLBエントリそのものに、グローバルに定義された値として、又は無効化コマンドそのものの一部として格納される)を修正するのに使用できるかどうかが判断される。ワイルドカード情報が適用可能でない場合、フローはステップ52に進み、VMID値の完全一致が、TLBヒットの結果となるために要求される。次にステップ53では、指定のアドレス及びVMID値に対して、確かにTLBヒットとなったかどうかが判断される。TLBヒットとなった場合、次にステップ54で、TLBにおける特定されたエントリが無効化される。フローは、次にステップ50に戻り、次の無効化コマンドが受信されるまで待機する。しかし、ステップ53で、指定のアドレス及びVMID値に対してTLBヒットとならない場合、次にフローは、ステップ55(TLB無効化が行われない)を経てステップ50に進む。
しかし、ステップ51で、ワイルドカード情報が適用可能であると判断されると、次にステップ56で、そのワイルドカード情報が、実際にはVMIDの完全一致が要求されることを示す「00」を指定するかどうかが判断され、フローは、52を経て、上記のように進む。しかし、ワイルドカード情報が「00」を指定しない場合、次にステップ57で、無効化ワイルドカード情報が、ブロードキャストTLB無効化がこのエントリに対して無視されるべきであることを示す「11」を指定するかどうかが判断され、フローは、ステップ55を経て進み、TLB無効化は行われない。しかし、無効化ワイルドカード情報が「01」又は「10」を指定する場合、次にフローは、TLBマッチが起こったと判断される場合にVMID値の指定のビットが無視される(図4Bで定義されるように)ステップ58を経て進み、流れは上記のようにステップ53に続く。
図7A、7B及び7Cは、無効化ワイルドカード情報が提供されてもよい複数の方法を示す3つの異なるMMU構成を概略的に図示する。図7Aに示された構成は、図4A及び図5A〜5Cに関連して上に説明された構成に対応し、無効化ワイルドカード情報が、それぞれのTLBエントリに関連付けて個々に格納される、この実施例では、MMU100におけるTLB101の制御ユニット102は、無効化コマンドが受信された時を特定し、アドレス・マッチング回路103をそれに従って制御し、TLBエントリ104から受信された無効化ワイルドカード情報が、無効化コマンドで受信されたVMIDの、TLBエントリに格納されたVMIDとのマッチングを修正するために使用される必要があるようにする。反対に、MMU100内でルックアップが行われると、制御ユニット102は、アドレス・マッチング回路103を、受信されたVMIDと、TLBエントリ104に格納されたVMIDとの間の厳格なマッチングを要求するように制御する。図7Bに示された実施例では、MMU110は、無効化ワイルドカード情報が、TLB111のTLBエントリ114に、それぞれ個々のエントリに関連付けて格納されないが、代わりに、MMU110によって受信された全ての無効化コマンドに関して使用するグローバルにアクセス可能なレジスタ115で定義されることを除いて、図7AのMMU100とほぼ同様に構成される。したがって、この実施例では、制御ユニット112が、無効化コマンドが受信されたことを特定し、アドレス・マッチング回路113を、無効化ワイルドカード情報を利用するように構成すると、アドレス・マッチング回路113は、TLBエントリ114から読み出された特定のTLBエントリに関連付けてではなく、無効化ワイルドカード・レジスタ115から、この無効化ワイルドカード情報を受信する。グローバルにアクセス可能な無効化ワイルドカード・レジスタ115が、図7Bの実施例において、MMU110の形成部分として図示されるが、これは必須ではなく、例えば、無効化ワイルドカード・レジスタ115は、例えば、そのレジスタ115が、例えば複数のMMUにとってより一般的にアクセス可能となるように、様々なその他の位置に、データ処理装置によって提供される可能性があることにも留意されるべきである。最後に、図7Cは、それ自体が、無効化ワイルドカード情報をコマンドの一部として含む無効化コマンドに応じて構成されるMMU120を概略的に図示する。したがって、このような実施例では、TLBエントリ124に対して一致が確認されたかどうかを判断する際に、無効化ワイルドカード情報を利用するようにアドレス・マッチング回路123を適宜構成するために、TLB121の制御ユニット122は、無効化コマンドが受信されたことを特定し、且つその無効化コマンドから無効化ワイルドカード情報を引き出すように、構成される。
図7A〜7Cに図示され、また上で説明されたように、一致(すなわち、TLBヒット)が確認されたか否かを判断するアドレス・マッチングが、VMID値に基づいて行われるが、ASID値に基づいて行われてもよいということに留意することは有意義である。実際には、上述のように、本明細書で明示的に説明された実施例における変形例では、ASID値は、実際、一つにグループ化される「識別子」であってもよく、したがって、1つのASID値を指定する無効化コマンドは、複数のASID値を有するエントリ(しかし、その他の点では同じ)に適用するよう、本技術によって拡張されてもよい。
図8は、関連するVMID値及びワイルドカード情報(図7Cに示された実施例におけるMMU120によって受信されるような)でのTLB無効化コマンドの生成に関連してCPU130を概略的に図示する。CPU130は、仮想マシン(VM:Virtual Machine)131及びハイパバイザ134をホストしている。この実施例では、仮想マシン131は、仮想マシン131が生成するTLB無効化コマンドに関連付けられる必要のある特定のアドレス空間識別子(ASID132)と、仮想マシン131は無効化を望むが、この仮想マシンがデータ処理システムの特権の少ない構成要素であり、代わりにこの情報の付加が、特権のあるハイパバイザ134に任されることから、仮想マシンそのものでは、いずれの仮想マシン識別子(VMID)又はワイルドカード情報も、無効化コマンドの最後に付加しないアドレス133と、を知っている。ハイパバイザ134は、仮想マシン131がアクセスしないシステム・レジスタ135で、VMID情報136及びワイルドカード情報137を保持し、TLB無効化コマンドが仮想マシン131によって生成されると、ハイパバイザ134は、この無効化コマンドを「傍受」し、適切なVMID情報(発信元を仮想マシン131として特定するための)、及び適切なワイルドカード情報137を付加する。したがって、これは、VMID及びワイルドカード情報の提供に関連した高レベルのセキュリティを維持する。
図9は、図5A〜5Cの実施例に関する上記の機能性をサポートする実施例におけるTLB140の構成を概略的に図示する。ルックアップ要求がTLB140によって受信されると、制御ユニット141は、TLB140のTLBエントリ142間でルックアップを開始するよう構成される。ここでは、簡単にするために、ダイレクトマッピングされたTLBの実例のみが説明されるが、当業者であれば、本技術が、同様にうまく適用されてもよいセット−アソシアティブ方式のTLBエントリ・ストレージもよく知っているだろう。しかし、このダイレクトマッピングされた実施例では、保留ルックアップ・アドレス143は、TLBエントリ142にインデックス化するために使用され、次に144で、特定されたTLBエントリが読み出され、一時的に保持される。次に、制御ユニット141の制御下で構成されたエントリ・マッチング・ロジック145は、要求されたルックアップ(ページアドレス、VMIDなど)が、読み出されたTLBエントリ144と一致するかどうかを判断する。要求されたルックアップが、読み出されたTLBエントリ144と一致する場合、次に、このエントリは、単純に返信アドレス変換として返信されることができる。しかし、要求された一致が確立されない場合、次に、メモリにおけるページ・テーブルから要求されたアドレス変換を検索するページ・テーブル・ウォーク・プロセス146が開始される。ページ・テーブル・ウォーク応答が戻ると、制御ユニット141は、エントリ・マッチング・ロジック145を、ページ・テーブル・ウォーク応答から返信されたエントリが、事実、VMID値は異なっているが、それにも関わらず同じVMIDグループに属する(すなわち、上記の方法におけるワイルドカード情報のおかげで、関連するVMID値がある)という以外は、読み出されたTLBエントリ144に一致するかどうかを判断するように制御する。ページ・テーブル・ウォーク応答から返信されたエントリが読み出されたTLBエントリ144に一致すると、次に、制御ユニット141は、図5Aに関連した上記の方法で、TLBエントリ142に、読み出されたTLBエントリに関連付けて格納されたワイルドカード・ルックアップ値を更新するように構成される。次に、読み出されたTLBエントリ144も、返信アドレス変換として返信される。しかし、ページ・テーブル・ウォーク応答が、異なるエントリを、いずれかのその他の方法で返信する場合、次に、このエントリは、保留ルックアップ・アドレス143によって特定されたインデックスにあるTLBエントリに取って代わるようにされ、ページ・テーブル・ウォーク応答そのものから返信されたエントリは、返信アドレス変換として返信される。
図10は、ルックアップがTLBによって受信される時に、一実施例の方法においてとられる一連のステップを概略的に図示する。フローは、ステップ150で始まり、そこでは、フローは、ルックアップが受信されるまで、それ自体でループする。次に、フローは、ステップ151に進み、TLBにおいてルックアップが行われる。次に、ステップ152で、ワイルドカード・ルックアップ・フラグが、TLBにおいて、特定された1つのエントリ(又は複数のエントリ)に対して設定されたかどうかが判断される。ルックアップ・フラグが設定された場合、次に、フローは、マッチング回路を、ルックアップで一致を求める時に、VMIDの指定されたビットを無視するように構成する、ステップ153を経る。次にステップ154で、読み出されたTLBエントリと要求されたルックアップとの間で一致が確認されたかどうかが、マッチング回路によって判断される。一致が確認されると、次に、ステップ155で、一致した変換が返信され、フローはステップ150に戻る。
しかし、ステップ154で一致が確認されない場合、次に、フローはステップ156に進み、ページ・テーブル・ウォーク・プロセスが開始される。次に、ステップ157で、ページ・テーブル・ウォーク応答が返信されると、その応答が、変換が得られないことを示すかどうかが判断される。変換が得られない場合は、次に、対応する「変換なし」応答が、ステップ158で返信され、フローはステップ150に戻る。しかし、要求されたルックアップで変換が可能である場合、次に、フローはステップ159に進み、ページ・テーブル・ウォーク応答が、読み出されたTLBエントリとは、VMID値のみ異なるかどうか、また、それぞれのVMID値が、互いに関連付けられているかどうか、が判断される。このような状態ではない場合、次に、フローは、ページ・テーブル・ウォーク応答によって生成されたエントリが、新しいTLBエントリを作成するために使用されるステップ160を経て、ステップ161で、このエントリは、要求された変換として返信され、次に、フローはステップ150に戻る。しかし、ページ・テーブル・ウォーク応答が、特定されたエントリとは、VMID値のみ異なっており、VMID値が、互いに関連付けられている(すなわち、それらのVMID値が1つのグループに属する)ことが特定される場合、次に、フローはステップ162に進み、ワイルドカード・フラグ・ルックアップが対応するエントリに対して設定され、いずれかのVMID値に関するさらなるルックアップ要求が、格納されたTLBエントリにおいてヒットとなることができるようにする。次に、フローは、このエントリがアドレス変換として返信されるステップ161を経て、フローは、ステップ150に進む。
全体の概要では、本技術は、第1のアドレッシング・システムで使用された第1のアドレスと、第2のアドレッシング・システムで使用された第2のアドレスとの間のアドレス変換がローカルに格納される、データを処理するデータ処理装置及び方法を提供する。それぞれの格納されるアドレス変換は、対応する識別子といっしょに格納される。選択され格納されたアドレス変換において、無効化プロセスを行うよう命令する無効化コマンドに応じて、選択され格納されたアドレス変換が無効化され、ここで、選択され格納されたアドレス変換は、指定の第1のアドレス及び指定の識別子によって、無効化コマンドで特定される。無効化プロセスは、複数の識別子を、識別子グループとして互いに関連付ける識別子グルーピング情報によって、さらに構成され、無効化プロセスは、指定の第1のアドレスに一致し、且つ指定の識別子が属する識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換に適用される。
本発明の特定の実施例が本明細書で説明されたが、本発明は、それらに限定されるものでなく、多くの修正及び追加が、本発明の範囲内で行われてもよいことが明らかであろう。例えば、以下の従属請求項の特徴と独立請求項の特徴との様々な組み合わせが、本発明の範囲を逸脱することなく行われる可能性がある。

Claims (16)

  1. データ処理のための装置であって、
    メモリに格納されたデータ値を参照して、データ処理動作を行うように構成されたデータ処理回路であって、それぞれのデータ処理動作が、それに関連付けられた識別子を有する、データ処理回路と、
    前記データ処理回路によって行われた前記データ処理動作に対応する、第1のアドレッシング・システムで使用された第1のアドレスと、前記メモリによって使用された、第2のアドレッシング・システムで使用された第2のアドレスとの間のアドレス変換を格納するように構成されたアドレス変換回路であって、それぞれの格納されるアドレス変換が、対応する識別子といっしょに格納される、アドレス変換回路と
    を備え、
    前記アドレス変換回路は、選択され格納されたアドレス変換において無効化プロセスを行うよう命令する無効化コマンドに応じて、前記選択され格納されたアドレス変換を無効化するように構成され、前記選択され格納されたアドレス変換が、指定の第1のアドレス及び指定の識別子によって、前記無効化コマンドで特定され、
    前記アドレス変換回路は、識別子グルーピング情報によってさらに構成された前記無効化プロセスを行うようにさらに構成され、前記識別子グルーピング情報が、複数の識別子を、識別子グループとして互いに関連付け、前記無効化プロセスが、前記指定の第1のアドレスに一致し、且つ前記指定の識別子が属する前記識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換に適用される、データ処理のための装置。
  2. 前記データ処理回路が、前記データ処理動作を行う複数の仮想マシンをホストするように構成され、それぞれのアドレス変換に関連付けて、前記アドレス変換回路によって格納された前記対応する識別子が、仮想マシン識別子である、請求項1に記載の装置。
  3. 前記アドレス変換回路が、それぞれの格納されたアドレス変換に関連付けて、前記識別子グルーピング情報を格納するように構成される、請求項1又は請求項2に記載の装置。
  4. 前記識別子グルーピング情報が、前記無効化プロセスで、格納されたアドレス変換をマッチングする際に無視されるべき、前記指定の識別子の一部を前記無効化コマンドで指定する、請求項1から3までのいずれかに記載の装置。
  5. 前記識別子グルーピング情報が、前記指定の識別子の前記一部が、最上位部分であるか、又は最下位部分であるかを指定する、請求項4に記載の装置。
  6. 前記識別子グルーピング情報が、非ブロードキャスト・マーカを指定するように構成され、前記無効化コマンドがブロードキャスト無効化コマンドとして受信される場合、前記無効化コマンドに応じて、前記非ブロードキャスト・マーカで印付けされた、格納されたアドレス変換に対して、前記無効化プロセスが行われないようにする、請求項3から5までのいずれかに記載の装置。
  7. 前記装置が、前記アドレス変換回路によって行われた全てのアドレス無効化プロセスに適用するための、前記アドレス変換回路にとってアクセス可能な前記識別子グルーピング情報を格納するように構成される、請求項1から6までのいずれかに記載の装置。
  8. 前記アドレス変換回路が、前記無効化コマンド内の前記識別子グルーピング情報を特定するように構成される、請求項1から7までのいずれかに記載の装置。
  9. 前記データ処理回路が、2つのデータ処理モードのうちの1つで動作するように構成され、第1のデータ処理モードでは、前記データ処理回路が、前記無効化コマンドを、前記識別子グルーピング情報なしで発行するように構成され、且つ前記装置が、前記識別子グルーピング情報を、前記無効化コマンドに付加するように構成され、第2のデータ処理モードでは、前記データ処理回路が、前記無効化コマンドを発行し、且つ前記識別子グルーピング情報を、前記無効化コマンドそのものに付加するように構成される、請求項8に記載の装置。
  10. 前記データ処理回路が、少なくとも2つのデータ処理デバイスを備え、それぞれの識別子グループに対して、前記アドレス変換回路が、前記少なくとも2つのデータ処理デバイスのうちの第1のデータ処理デバイスに、その識別子グルーブの第1の識別子のみに対するアドレス変換を提供し、且つ前記少なくとも2つのデータ処理デバイスのうちの第2のデータ処理デバイスに、その識別子グルーブのいずれかの識別子に対するアドレス変換を提供するように構成される、請求項1から9までのいずれかに記載の装置。
  11. 前記アドレス変換回路が、受信された第1のアドレス及び受信された識別子に対して、アドレス変換が格納されるかどうかを判断するルックアップ・プロセスを行うように構成され、前記アドレス変換回路が、それぞれの格納されたアドレス変換に関連付けて、ルックアップ・マッチ修飾子を格納するように構成され、前記ルックアップ・マッチ修飾子が第1の値を有する場合、前記ルックアップ・プロセスが、前記受信された識別子が格納された識別子に完全に一致する場合にのみ、前記アドレス変換を確認するように構成され、前記ルックアップ・マッチ修飾子が第2の値を有する場合、前記ルックアップ・プロセスが、前記受信された識別子が、前記格納された識別子用の識別子グルーピング情報によって定義されるように、前記格納された識別子が属する識別子グループ内のいずれかの識別子に一致する場合に、前記アドレス変換を確認するように構成される、請求項1から10までのいずれかに記載の装置。
  12. 前記アドレス変換回路が、前記ルックアップ・プロセスの結果としてアドレス変換が確認されない場合には、メモリから前記アドレス変換をフェッチする検索プロセスを開始するように構成され、前記ルックアップ・マッチ修飾子が前記第1の値を有し、前記検索プロセスが、前記受信された識別子は一致しなかったが、前記受信された識別子が、前記アドレス変換回路における一致する格納された識別子も属する識別子グループに属することから、前記ルックアップ・プロセスの結果として、アドレス変換が確認されなかったことを示し、且つ、前記検索プロセスが、メモリからフェッチされた前記アドレス変換が、そうでなければ、前記格納された識別子に対して格納された前記アドレス変換に一致することを示す場合、前記アドレス変換回路が、前記格納された識別子に対する前記ルックアップ・マッチ修飾子が前記第2の値を有するよう変更するように、さらに構成される、請求項11に記載の装置。
  13. 前記アドレス変換回路が、前記第1のアドレッシング・システムにおけるページ・テーブルに対する、前記第2のアドレッシング・システムにおけるページ・テーブルへのアドレス変換を格納するように構成される、トランスレーション・ルックアサイド・バッファである、請求項1から12までのいずれかに記載の装置。
  14. 前記データ処理回路が、少なくとも2つのデータ処置デバイスを備え、前記少なくとも2つのデータ処置デバイスのうちの第1のデータ処理デバイスが、汎用中央処理ユニットであり、前記少なくとも2つのデータ処置デバイスのうちの第2のデータ処理デバイスが、前記汎用中央処理ユニットに代わって、前記データ処理動作の少なくともいくつかを行うように構成されたスレーブ・デバイスである、請求項1から13までのいずれかに記載の装置。
  15. データ処理の方法であって、
    メモリに格納されたデータ値を参照して、データ処理動作を行うステップであって、それぞれのデータ処理動作が、それに関連付けられた識別子を有する、ステップと、
    前記データ処理回路によって行われた前記データ処理動作に対応する、第1のアドレッシング・システムで使用された第1のアドレスと、前記メモリによって使用された、第2のアドレッシング・システムで使用された第2のアドレスとの間のアドレス変換を格納するステップであって、それぞれの格納されるアドレス変換が、対応する識別子といっしょに格納される、ステップと、
    無効化コマンドに応じて、選択され格納されたアドレス変換に無効化プロセスを行って、前記選択され格納されたアドレス変換を無効化するステップであって、前記選択され格納されたアドレス変換が、指定の第1のアドレス及び指定の識別子によって、無効化コマンドで特定される、ステップと、
    識別子グルーピング情報によってさらに構成された前記無効化プロセスを行うステップであって、前記識別子グルーピング情報が、複数の識別子を、識別子グループとして互いに関連付け、前記無効化プロセスが、前記指定の第1のアドレスに一致し、且つ前記指定の識別子が属する前記識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換に適用される、ステップと
    を含む、データ処理の方法。
  16. データ処理のための装置であって、
    メモリに格納されたデータ値を参照して、データ処理動作を行う手段であって、それぞれのデータ処理動作が、それに関連付けられた識別子を有する、手段と、
    前記データ処理回路によって行われた前記データ処理動作に対応する、第1のアドレッシング・システムで使用された第1のアドレスと、前記メモリによって使用された、第2のアドレッシング・システムで使用された第2のアドレスとの間のアドレス変換を格納する手段であって、それぞれの格納されるアドレス変換が、対応する識別子といっしょに格納される、手段と、
    無効化コマンドに応じて、選択され格納されたアドレス変換に無効化プロセスを行って、前記選択され格納されたアドレス変換を無効化する手段であって、前記選択され格納されたアドレス変換が、指定の第1のアドレス及び指定の識別子によって、前記無効化コマンドで特定される、手段と、
    識別子グルーピング情報によってさらに構成された前記無効化プロセスを行う手段であって、前記識別子グルーピング情報が、複数の識別子を、識別子グループとして互いに関連付け、前記無効化プロセスが、前記指定の第1のアドレスに一致し、且つ前記指定の識別子が属する前記識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換に適用される、手段と
    を備える、データ処理のための装置。
JP2016551713A 2014-02-21 2015-02-03 格納されたアドレス変換の無効化 Active JP6509241B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/186,091 US9619387B2 (en) 2014-02-21 2014-02-21 Invalidating stored address translations
US14/186,091 2014-02-21
PCT/GB2015/050282 WO2015124899A1 (en) 2014-02-21 2015-02-03 Invalidating stored address translations

Publications (2)

Publication Number Publication Date
JP2017517040A true JP2017517040A (ja) 2017-06-22
JP6509241B2 JP6509241B2 (ja) 2019-05-08

Family

ID=52484511

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016551713A Active JP6509241B2 (ja) 2014-02-21 2015-02-03 格納されたアドレス変換の無効化

Country Status (7)

Country Link
US (1) US9619387B2 (ja)
EP (1) EP3108372B1 (ja)
JP (1) JP6509241B2 (ja)
KR (1) KR102317332B1 (ja)
CN (1) CN105980994B (ja)
IL (1) IL246850B (ja)
WO (1) WO2015124899A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019096309A (ja) * 2017-11-22 2019-06-20 エイアールエム リミテッド メンテナンス動作の実行
JP2019517052A (ja) * 2016-03-31 2019-06-20 クアルコム,インコーポレイテッド メモリ管理ユニットおよび分散仮想メモリネットワークのためのハードウェア管理電力コラプスおよびクロックウェイクアップ
JP2020525905A (ja) * 2017-06-28 2020-08-27 エイアールエム リミテッド アドレス変換データの無効化
JP2020529656A (ja) * 2017-07-31 2020-10-08 エイアールエム リミテッド アドレス変換キャッシュ
JP7470112B2 (ja) 2018-11-02 2024-04-17 アーム・リミテッド 持続性メモリクリーニング

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9232959B2 (en) 2007-01-02 2016-01-12 Aquabeam, Llc Multi fluid tissue resection methods and devices
EP2259742B1 (en) 2008-03-06 2020-01-01 AquaBeam LLC Tissue ablation and cautery with optical energy carried in fluid stream
EP2819599B1 (en) 2012-02-29 2018-05-23 Procept Biorobotics Corporation Automated image-guided tissue resection and treatment
GB2529394A (en) * 2014-08-14 2016-02-24 Ibm Multiprocessor computer system
US9697137B2 (en) * 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations
US9684606B2 (en) * 2014-11-14 2017-06-20 Cavium, Inc. Translation lookaside buffer invalidation suppression
US9898418B2 (en) * 2015-05-21 2018-02-20 Via Alliance Semiconductor Co., Ltd. Processor including single invalidate page instruction
GB2579721B (en) * 2015-12-02 2020-09-16 Imagination Tech Ltd GPU virtualisation
GB2545170B (en) 2015-12-02 2020-01-08 Imagination Tech Ltd GPU virtualisation
US10042777B2 (en) * 2016-03-30 2018-08-07 Qualcomm Incorporated Hardware-based translation lookaside buffer (TLB) invalidation
US9910799B2 (en) 2016-04-04 2018-03-06 Qualcomm Incorporated Interconnect distributed virtual memory (DVM) message preemptive responding
US10540292B2 (en) * 2016-06-08 2020-01-21 Google Llc TLB shootdowns for low overhead
EP3255550B1 (en) * 2016-06-08 2019-04-03 Google LLC Tlb shootdowns for low overhead
US10599569B2 (en) 2016-06-23 2020-03-24 International Business Machines Corporation Maintaining consistency between address translations in a data processing system
CN107562514B (zh) * 2017-08-03 2020-11-24 致象尔微电子科技(上海)有限公司 一种物理内存访问控制与隔离方法
US10599461B2 (en) 2017-09-19 2020-03-24 Microsoft Technology Licensing, Llc Nested hypervisor memory virtualization
US10649907B2 (en) * 2018-03-22 2020-05-12 Arm Limited Apparatus and method for handling page invalidate requests in an address translation cache
US11249918B2 (en) * 2018-10-30 2022-02-15 Hewlett Packard Enterprise Development Lp Mapping entry invalidation
US11836091B2 (en) 2018-10-31 2023-12-05 Advanced Micro Devices, Inc. Secure memory access in a virtualized computing environment
US10942853B2 (en) * 2018-12-20 2021-03-09 International Business Machines Corporation System and method including broadcasting an address translation invalidation instruction with a return marker to indentify the location of data in a computing system having mutiple processors
US10915456B2 (en) * 2019-05-21 2021-02-09 International Business Machines Corporation Address translation cache invalidation in a microprocessor
US20210064528A1 (en) * 2019-08-26 2021-03-04 Arm Limited Filtering invalidation requests
CN112463657B (zh) * 2019-09-09 2024-06-18 阿里巴巴集团控股有限公司 一种地址转换缓存清除指令的处理方法和处理装置
US11243864B2 (en) 2019-09-17 2022-02-08 International Business Machines Corporation Identifying translation errors
US11853225B2 (en) * 2019-10-11 2023-12-26 Texas Instruments Incorporated Software-hardware memory management modes
CN111338987B (zh) * 2020-02-13 2023-12-12 江苏华创微系统有限公司 快速无效组相联tlb的方法
US11200175B2 (en) * 2020-03-20 2021-12-14 Arm Limited Memory accessor invailidation
US11288207B2 (en) * 2020-03-30 2022-03-29 Arm Limited Apparatus and method for processing address translation and invalidation transactions
US11507515B1 (en) * 2021-06-29 2022-11-22 Arm Limited Memory management unit with address translation cache
WO2023034662A1 (en) * 2021-09-02 2023-03-09 Nuvia, Inc. System and methods for invalidating translation information in caches
US20230064603A1 (en) * 2021-09-02 2023-03-02 Nuvia, Inc. System and methods for invalidating translation information in caches
CN114064517A (zh) 2021-11-19 2022-02-18 上海兆芯集成电路有限公司 指定密钥进行高速缓存写回且无效的计算机系统及方法
CN114064518A (zh) 2021-11-19 2022-02-18 上海兆芯集成电路有限公司 指定密钥辨识码进行转译后备缓冲区清除的处理器和方法
US11853228B1 (en) * 2022-06-10 2023-12-26 Arm Limited Partial-address-translation-invalidation request

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61292761A (ja) * 1985-06-20 1986-12-23 Mitsubishi Electric Corp アドレス変換方式
JPH07134658A (ja) * 1993-11-09 1995-05-23 Hitachi Ltd 仮想計算機システムのアドレス変換バッファ制御方式
US6957315B2 (en) * 2000-08-21 2005-10-18 Texas Instruments Incorporated TLB lock and unlock operation

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4885680A (en) 1986-07-25 1989-12-05 International Business Machines Corporation Method and apparatus for efficiently handling temporarily cacheable data
JP2510605B2 (ja) 1987-07-24 1996-06-26 株式会社日立製作所 仮想計算機システム
JPH0784883A (ja) 1993-09-17 1995-03-31 Hitachi Ltd 仮想計算機システムのアドレス変換バッファパージ方法
US6314492B1 (en) 1998-05-27 2001-11-06 International Business Machines Corporation System and method for server control of client cache
US6854033B2 (en) 2001-06-29 2005-02-08 Intel Corporation Using linked list for caches with variable length data
US6826671B2 (en) * 2001-10-09 2004-11-30 Sun Microsystems, Inc. Method and device for a context-based memory management system
US7346757B2 (en) 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US7284100B2 (en) * 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
CN100382034C (zh) * 2004-09-29 2008-04-16 索尼株式会社 信息处理设备和处理控制方法
US7334107B2 (en) * 2004-09-30 2008-02-19 Intel Corporation Caching support for direct memory access address translation
US7386670B2 (en) * 2004-10-19 2008-06-10 Platform Solutions, Inc. Processing of self-modifying code in multi-address-space and multi-processor systems
US7734892B1 (en) 2005-03-31 2010-06-08 Rozas Guillermo J Memory protection and address translation hardware support for virtual machines
US7447869B2 (en) 2005-04-07 2008-11-04 Ati Technologies, Inc. Method and apparatus for fragment processing in a virtual memory system
US7546420B1 (en) * 2005-09-28 2009-06-09 Sun Microsystems, Inc. Efficient trace cache management during self-modifying code processing
US7802055B2 (en) 2006-04-19 2010-09-21 Qualcomm Incorporated Virtually-tagged instruction cache with physically-tagged behavior
US7555628B2 (en) * 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US7590817B2 (en) * 2006-10-17 2009-09-15 International Business Machines Corporation Communicating with an I/O device using a queue data structure and pre-translated addresses
US8112174B2 (en) 2008-02-25 2012-02-07 International Business Machines Corporation Processor, method and computer program product for fast selective invalidation of translation lookaside buffer
US8464000B2 (en) * 2008-02-29 2013-06-11 Qualcomm Incorporated Systems and methods for cache line replacements
US8166276B2 (en) * 2009-02-27 2012-04-24 Advanced Micro Devices, Inc. Translate and verify instruction for a processor
US8635430B2 (en) * 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US9465748B2 (en) 2011-12-30 2016-10-11 Advanced Micro Devices, Inc. Instruction fetch translation lookaside buffer management to support host and guest O/S translations
US8964735B2 (en) * 2012-05-18 2015-02-24 Rackspace Us, Inc. Translating media access control (MAC) addresses in a network hierarchy
US9116793B2 (en) * 2012-06-12 2015-08-25 International Business Machines Corporation Maintaining versions of data in solid state memory
US20140006681A1 (en) * 2012-06-29 2014-01-02 Broadcom Corporation Memory management in a virtualization environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61292761A (ja) * 1985-06-20 1986-12-23 Mitsubishi Electric Corp アドレス変換方式
JPH07134658A (ja) * 1993-11-09 1995-05-23 Hitachi Ltd 仮想計算機システムのアドレス変換バッファ制御方式
US6957315B2 (en) * 2000-08-21 2005-10-18 Texas Instruments Incorporated TLB lock and unlock operation

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019517052A (ja) * 2016-03-31 2019-06-20 クアルコム,インコーポレイテッド メモリ管理ユニットおよび分散仮想メモリネットワークのためのハードウェア管理電力コラプスおよびクロックウェイクアップ
JP2020525905A (ja) * 2017-06-28 2020-08-27 エイアールエム リミテッド アドレス変換データの無効化
US11615032B2 (en) 2017-06-28 2023-03-28 Arm Limited Address translation data invalidation
JP2020529656A (ja) * 2017-07-31 2020-10-08 エイアールエム リミテッド アドレス変換キャッシュ
JP7133615B2 (ja) 2017-07-31 2022-09-08 アーム・リミテッド アドレス変換キャッシュ
US11853226B2 (en) 2017-07-31 2023-12-26 Arm Limited Address translation cache with use of page size information to select an invalidation lookup mode, or use of leaf-and-intermediate exclusive range-specifying invalidation request, or use of invalidation request specifying single address and page size information
JP2019096309A (ja) * 2017-11-22 2019-06-20 エイアールエム リミテッド メンテナンス動作の実行
JP7340326B2 (ja) 2017-11-22 2023-09-07 アーム・リミテッド メンテナンス動作の実行
JP7470112B2 (ja) 2018-11-02 2024-04-17 アーム・リミテッド 持続性メモリクリーニング

Also Published As

Publication number Publication date
IL246850B (en) 2019-02-28
CN105980994A (zh) 2016-09-28
US9619387B2 (en) 2017-04-11
CN105980994B (zh) 2019-08-16
KR102317332B1 (ko) 2021-10-26
WO2015124899A1 (en) 2015-08-27
JP6509241B2 (ja) 2019-05-08
EP3108372B1 (en) 2018-07-11
KR20160124792A (ko) 2016-10-28
EP3108372A1 (en) 2016-12-28
US20150242319A1 (en) 2015-08-27

Similar Documents

Publication Publication Date Title
JP6509241B2 (ja) 格納されたアドレス変換の無効化
US20210365386A1 (en) Handling address translation requests
JP6106765B2 (ja) メモリ保護ユニットを使用して、仮想化をサポートするゲスト・オペレーティング・システム
US20130013889A1 (en) Memory management unit using stream identifiers
EP3329378B1 (en) Address caching in switches
JP6133896B2 (ja) 物理アドレスを用いる非割当てメモリアクセス
JP5914145B2 (ja) メモリ保護回路、処理装置、およびメモリ保護方法
US10649907B2 (en) Apparatus and method for handling page invalidate requests in an address translation cache
KR20130048191A (ko) 가상 처리 시스템에서 어드레스 맵핑
US20170344492A1 (en) Address translation within a virtualised system background
US20180157601A1 (en) Apparatus and method for avoiding conflicting entries in a storage structure
CN117349197A (zh) 内存管理单元和内存访问方法
US20230109295A1 (en) Controlling memory access in a data processing systems with multiple subsystems
US11009841B2 (en) Initialising control data for a device
CN112585590A (zh) 存储器访问控制
US20240070071A1 (en) Context information translation cache
US11934320B2 (en) Translation lookaside buffer invalidation
WO2023064590A1 (en) Software indirection level for address translation sharing
US20170004091A1 (en) Translation buffer unit management
JP2012119012A (ja) プロセッサ、バスインターフェース装置、およびコンピュータシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190221

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190402

R150 Certificate of patent or registration of utility model

Ref document number: 6509241

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250