JP7177038B2 - コンピューティングデバイスのメモリ内のページに対するアクセス制御 - Google Patents
コンピューティングデバイスのメモリ内のページに対するアクセス制御 Download PDFInfo
- Publication number
- JP7177038B2 JP7177038B2 JP2019504712A JP2019504712A JP7177038B2 JP 7177038 B2 JP7177038 B2 JP 7177038B2 JP 2019504712 A JP2019504712 A JP 2019504712A JP 2019504712 A JP2019504712 A JP 2019504712A JP 7177038 B2 JP7177038 B2 JP 7177038B2
- Authority
- JP
- Japan
- Prior art keywords
- page
- rmt
- virtual machine
- entry
- accessed
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Description
説明する実施形態では、コンピューティングデバイスは、コンピューティングデバイス内で実行されているプログラムによるデータアクセスを処理するために仮想メモリ技術を用いている。例えば、プログラムは、アプリケーション、オペレーティングシステム、デバイスドライバ、仮想マシン、周辺機器によって実行されるソフトウェア等を含んでもよい。概して、データがコンピューティングデバイス内のプログラムによってアクセスされると、当該データを含む所定のサイズ(例えば、4kB、2MB等)のメモリのブロック又は「ページ」が、大容量ストレージ(例えば、ディスクドライブ若しくは半導体メモリ)からコンピューティングデバイスのメモリ内の利用可能な物理的位置にコピーされるか、メモリ内に新たに生成される。メモリ内のページの物理的位置を管理するためにプログラムが必要とされるのを回避するために、コンピューティングデバイスは、プログラムに関するページの物理的位置を管理する。プログラムは、ページの物理的位置に基づくアドレス(又は「物理アドレス」)を用いてメモリにアクセスする代わりに、対応するプログラムに固有のローカルアドレス空間である「仮想アドレス空間」内の「仮想アドレス」を用いてメモリにアクセスする。プログラムの観点からは、仮想アドレスは、データがメモリに記憶されている実際の物理的位置を示し、メモリアクセスは、これに従って仮想アドレスを用いてプログラムによって行われる。しかしながら、仮想アドレスは、メモリ内のページにデータが記憶されている物理的位置の物理アドレスに直接マッピングすることができない。ページの物理的位置を管理することの一部として、コンピューティングデバイスは、メモリアクセス要求においてプログラムが用いる仮想アドレスを、データが実際に配置されている物理アドレスに変換する。次に、コンピューティングデバイスは、物理アドレスを用いて、プログラムに対するメモリアクセスを実行する。
説明する実施形態では、コンピューティングデバイスは、ソフトウェアプログラムを実行するためのサポートを提供するために、コンピューティングデバイスのハードウェアをエミュレートするかインタフェースするソフトウェアエンティティである仮想マシンを実行する。例えば、仮想マシンは、コンピューティングデバイス内のハードウェア要素(プロセッサ、メモリ、ネットワークインタフェース等)を用いて、オペレーティングシステムのうち1つ以上のインスタンス(「ゲスト」オペレーティングシステムと呼ばれる)を実行するためのサポートを提供することができる。ゲストオペレーティングシステムは、他のソフトウェアプログラム(例えば、アプリケーション、データベース等)の実行をサポートする。
説明する実施形態は、コンピューティングデバイスのメモリ内のページへの仮想マシンによるアクセスを制御するためのメカニズムを含む。より具体的には、説明する実施形態は、とりわけ、ハイパーバイザ(及び/又はコンピューティングデバイス内の別のエンティティ)が、ネストページテーブル内のゲスト物理アドレスからシステム物理アドレスへの変換を再マッピングしないようにするために使用される一対のテーブルを含む。一対のテーブルは、(1)リバースマップテーブルと、(2)ゲストアクセスページテーブルと、を含む。リバースマップテーブルは、とりわけ、ゲスト物理アドレスについてのネストページテーブルのテーブルウォークの間に取得したシステム物理アドレスが以前に使用されたシステム物理アドレスと一致するか否かを判別するのに使用可能な情報を含む。換言すれば、リバースマップテーブルを使用して、メモリ内の所定のページのシステム物理アドレスが一度に1つのゲスト物理アドレスのみに一致するようにすることができる。ゲストアクセスページテーブルは、仮想マシンがメモリ領域内のページに以前にアクセスしたと記録されているか否かを判別するのに使用可能な情報を含む。
図2は、いくつかの実施形態による、コンピューティングデバイス200を示すブロック図である。図2に示すように、コンピューティングデバイス200は、プロセッサ202と、メモリ206と、大容量ストレージ216と、ダイレクトメモリアクセスメカニズム(DMA)218と、を含む。プロセッサ202は、コンピューティングデバイス200において計算動作を実行するデバイスである。プロセッサ202は、2つのコア(コア208,209)を含む。各コアは、1つ以上の計算メカニズム(例えば、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、組み込みプロセッサ、特定用途向け集積回路(ASIC)、及び/又は、他の計算メカニズム等)を含む。
上述したように、コンピューティングデバイスは、アドレス変換を実行するためにページテーブルの階層を使用する。図3は、いくつかの実施形態による、ゲストページテーブルを実装するために用いられるテーブルのセットを示すブロック図である。ネストページテーブルは、図3に示す構成のテーブルと同様にして実施することができる。
図4は、いくつかの実施形態による、リバースマップテーブル228を示すブロック図である。上述したように、リバースマップテーブル228は、とりわけ、ゲスト物理アドレスに対するネストページテーブル224のテーブルウォークが、以前用いられたシステム物理アドレスと一致するシステム物理アドレスを返すか否かを判別するために使用される情報を含む。
図5は、いくつかの実施形態による、ゲストアクセスページテーブル230を示すブロック図である。上述したように、ゲストアクセスページテーブル230は、対応する仮想マシンが、当該仮想マシンの使用のために割り当てられたメモリ領域に以前アクセスされたページを有するとして記憶されているか否かを判別するために用いられる情報を含む。
説明する実施形態では、メモリのページを不変であるとして処理することができる。不変ページは、コア(例えば、コア208~209)上で実行されているソフトウェアエンティティ(例えば、ハイパーバイザ、ゲストオペレーティングシステム、アプリケーションプログラム等)によって書き込むことができないページである。換言すれば、不変ページは、何れかのソフトウェアエンティティによって全体的又は部分的に書き換えられ、更新され、修正され、追加され又は削除される等が抑制される。また、不変ページは、プラットフォームセキュリティプロセッサ(例えば、プラットフォームセキュリティプロセッサ232)によって割り当て解除され、例えば、コア208~209等のコア(例えば、実行されているソフトウェアエンティティ(例えば、ハイパーバイザ等)の代わりに又はソフトウェアエンティティの制御下で動作するコア)によって割り当て解除することができない。
いくつかの実施形態では、コンピューティングデバイスが初期化されているときに(例えば、起動動作中に)、リバースマップテーブル228が初期化される。図10は、いくつかの実施形態による、リバースマップテーブル228を初期化するプロセスを示すブロック図である。図10に示す動作を、いくつかの実施形態で実行される動作の一般的な例として示す。他の実施形態によって実行される動作は、異なる動作、及び/又は、異なる順序で実行される動作を含む。さらに、動作を説明する際に特定のメカニズム/要素(例えば、プラットフォームセキュリティプロセッサ等)を用いているが、いくつかの実施形態では、他のメカニズムが動作を実行し、及び/又は、動作が他のメカニズム/要素上で実行される。
図6は、いくつかの実施形態による、リバースマップテーブル228を更新するプロセスを示すブロック図である。図6に示す動作を、いくつかの実施形態で実行される動作の一般的な例として示す。他の実施形態によって実行される動作は、異なる動作、及び/又は、異なる順序で実行される動作を含む。さらに、動作を説明する際に特定のメカニズム/要素(例えば、ハイパーバイザ等)を用いているが、いくつかの実施形態では、他のメカニズムが動作を実行し、及び/又は、動作が他のメカニズム/要素上で実行される。
図7は、いくつかの実施形態による、ゲストアクセスページテーブル230内のインジケータをクリアするプロセスを示すブロック図である。図7に示す動作を、いくつかの実施形態で実行される動作の一般的な例として示す。他の実施形態によって実行される動作は、異なる動作、及び/又は、異なる順序で実行される動作を含む。さらに、動作を説明する際に特定のメカニズム/要素(例えば、仮想マシン等)を用いているが、いくつかの実施形態では、他のメカニズムが動作を実行し、及び/又は、動作が他のメカニズム/要素上で実行される。
図8は、いくつかの実施形態による、リバースマップテーブル及びゲストアクセスページテーブルを用いるプロセスを示すブロック図である。図8に示す動作を、いくつかの実施形態で実行される動作の一般的な例として示す。他の実施形態によって実行される動作は、異なる動作、及び/又は、異なる順序で実行される動作を含む。さらに、動作を説明する際に特定のメカニズム/要素(例えば、プロセッサ等)を用いているが、いくつかの実施形態では、他のメカニズムが動作を実行し、及び/又は、動作が他のメカニズム/要素上で実行される。
いくつかの実施形態では、メモリ内のページを2つ以上の仮想マシンによって共有することができる。換言すれば、個々のページは、2つ以上の仮想マシンによってアクセス可能であってもよい。例えば、共通ライブラリ(stdlib.h等)からのプログラムコード、アプリケーション、カーネルルーチン等を含むページを共有することができる。別の例として、仮想マシンによって読み出されるデータのページを共有することができる。いくつかの実施形態では、ページが共通に使用され、したがって少なくともいくつかの及びおそらく全ての仮想マシンによって共有可能であるという点で、共有ページはグローバルに共有されたページであってもよい。これらの実施形態では、コンピューティングデバイスは、共有ページへのアクセスを制御するための様々なメカニズムを使用する。例えば、いくつかの実施形態では、リバースマップテーブル228内のページのエントリ内のグローバル共有ページインジケータは、ページが共有されていることを示すために特定の値(例えば、1)に設定され、不変インジケータは、ページが不変であることを示すように設定され得る。いくつかの実施形態では、共有ページは、全ての仮想マシン間で(又は、少なくともページへの共有アクセスが許可された仮想マシン間で)共有されるキーを用いて暗号化される。
いくつかの実施形態では、所定の仮想マシンに割り当てられたメモリ内のページは、(セキュリティ対策として)所定の仮想マシンに固有のキーを用いて暗号化される。これらの実施形態では、仮想マシンは、対応するページが暗号化されているか否かを示す各ページに関連するインジケータを含んでもよい。いくつかの実施形態では、リバースマップテーブル228及びゲストアクセスページテーブル230の上述したチェックは、暗号化されていないページに対して実行されない(これらのページは、全体的に安全でない/信頼できないと推定されるため)。共有ページは、暗号化されていなくてもよいし、及び/又は、全ての仮想マシンに認識されているキーを用いて暗号化されていてもよい。
いくつかの実施形態では、リバースマップテーブル228及びゲストアクセスページテーブル230の上述したチェックを有効化及び無効化するために、ハードウェア又はソフトウェアスイッチが利用可能である。例えば、各仮想マシンには、上述したチェックを有効にするためにフラグ、レジスタ等に特定の値(例えば、1)を書き込むことができるソフトウェア内のフラグ、レジスタ等が設けられてもよい。これらの実施形態では、フラグ、レジスタ等が別の値(例えば、0)に設定されている場合、チェックが実行されない。
仮想マシンにページが割り当てられる実施形態について上述したが、いくつかの実施形態では、仮想マシン以外のエンティティは、不正なページの再マッピングから同様の方法で保護される。例えば、入出力メモリ管理ユニットは、同様のチェックを、周辺デバイスに関連するテーブル(すなわち、リバースマップテーブル及びゲストアクセスページと同等であるがIOMMU以外のテーブル)について同様のチェックを実行することができる。概して、説明する実施形態は、メモリ内のページにアクセスすることができるコンピューティングデバイス内の任意のエンティティを用いて実施可能である。
いくつかの実施形態では、ハイパーバイザは、メモリ内のメモリのページを移動する理由を有することがある。例えば、ページは、ページ保証のアクセスとして、より高速で小容量のメモリからより低速で大容量のメモリに移動されてもよいし、不均一メモリアクセス(NUMA)システム等においてアクセスコアに近づくようにメモリ内で移動されてもよい。メモリ内のページを移動させるための動作の一部として、コンピューティングデバイス内のプロセッサは、リバースマップテーブル228のエントリが移動を反映するように更新されている間、上述したロックインジケータを用いて、移動元及び移動先のページのリバースマップテーブル228のエントリをロックしてもよい。また、プロセッサは、様々なチェックを行って、エントリ内の情報(ページカウント、サイズ等)が一致し及び/又は互換性があることを確実にし、その結果、移動先のページのエントリが、移動後のページに適していることを確実にしてもよい。
Claims (19)
- コンピューティングデバイス内の仮想マシンによってメモリアクセスを処理する方法であって、前記コンピューティングデバイスは、リバースマップテーブル(RMT)及び仮想マシン毎に個別のゲストアクセスページテーブル(GAPT)を含み、前記RMTは、複数のエントリを含み、各エントリは、メモリ内のデータの関連するページにアクセスすることが許可された仮想マシンを識別するための情報を含み、各GAPTは、対応する仮想マシンによってアクセスされているページのレコードを含み、
前記方法は、
テーブルウォーカにおいて、仮想アドレスをシステム物理アドレスに変換する要求を受信することであって、前記要求は、所定の仮想マシンから発せられたものである、ことと、
対応するゲストページテーブルから前記仮想アドレスに関連するゲスト物理アドレスを取得し、ネストページテーブルから前記仮想アドレスに関連するシステム物理アドレスを取得することと、
前記ゲスト物理アドレス及び前記システム物理アドレスに基づいて、前記RMT及び対応するGAPTのうち少なくとも一方をチェックして、前記所定の仮想マシンが対応するページにアクセスしたか否かを判別することと、
前記所定の仮想マシンが前記対応するページにアクセスしていない場合に、前記仮想アドレスから前記システム物理アドレスへの変換を終了することと、を含む、
方法。 - 前記RMT及び対応するGAPTのうち少なくとも一方をチェックすることは、
前記システム物理アドレスに対応する前記RMT内のエントリが、前記所定の仮想マシンが前記対応するページにアクセスしていないことを示す情報を含む場合に、前記所定の仮想マシンが前記対応するページにアクセスしていないと判別することと、
前記RMT内の前記エントリが、前記所定の仮想マシンが前記対応するページにアクセスしたことを示す情報を含む場合に、
前記RMT内の前記エントリ内のページアクセス情報が、前記対応するページがアクセスされていないことを示し、且つ、前記対応するGAPT内の前記対応するページに対するページアクセス情報が、前記対応するページがアクセスされたことを示す場合に、前記所定の仮想マシンが前記対応するページにアクセスしていないと判別し、
前記RMT内の前記エントリ内のページアクセス情報、及び、前記対応するGAPT内の前記対応するページに対するページアクセス情報の両方が、前記対応するページがアクセスされていないことを示す場合に、前記所定の仮想マシンが前記対応するページにアクセスしたと判別することと、を含む、
請求項1の方法。 - 前記RMT内の前記エントリが有効であるとマークされていないことと、前記RMT内の前記エントリ内に記憶されたゲスト物理アドレスが、前記ゲスト物理アドレスと一致していないことと、のうち少なくとも1つが真である場合に、
前記RMT内の前記エントリは、前記所定の仮想マシンが前記対応するページにアクセスしていないことを示す情報を含む、
請求項2の方法。 - 前記RMT内の前記エントリ内に記憶された仮想マシン識別子が、前記所定の仮想マシンの識別子と一致していないことと、前記RMT内の前記エントリ内に記憶されたページサイズが、前記システム物理アドレスに関連するページサイズと一致していないことと、前記RMT内の前記エントリ内に記憶された読み出し/書き込み許可が、前記メモリアクセスの読み出し/書き込みタイプと一致していないことと、のうち少なくとも1つが真である場合に、
前記RMT内の前記エントリは、前記所定の仮想マシンが前記対応するページにアクセスしていないことを示す情報をさらに含む、
請求項3の方法。 - 前記RMT内のエントリを更新する要求を受信することと、
前記RMT内の別のエントリ内の情報との間で競合が生じる場合に前記要求を終了することと、
前記RMT内の前記エントリが有効であるとマークされている場合に、1つ以上の対応する変換索引バッファをフラッシュすることと、
前記RMT内の前記エントリを更新することであって、前記RMT内の前記エントリ内のページアクセス情報を、前記対応するページがアクセスされていないことを示すように設定することを含む、ことと、をさらに含む、
請求項2の方法。 - 所定のゲスト物理アドレスにおける所定のページに対するページアクセス情報を前記対応するGAPT内でクリアする要求を、前記所定の仮想マシンから受信することと、
前記RMT内の対応するレコードが存在し、当該レコードがページアクセス情報をクリアするための候補であることを確認することと、
前記対応するGAPT及び前記RMT内の前記所定のページに対するページアクセス情報をクリアすることと、をさらに含む、
請求項2の方法。 - 1つ以上のページは、2つ以上の仮想マシン間でアクセスを共有することができるグローバルな共有ページであり、前記対応するページは、グローバルな共有ページであり、
前記RMT内の前記エントリが、前記対応するページがグローバルに共有されており、前記メモリアクセスが共有ページに対して許可されないメモリアクセスであることを示す場合に、
前記RMT内の前記エントリは、前記所定の仮想マシンが前記対応するページにアクセスしていないことを示す情報を含む、
請求項2の方法。 - 前記コンピューティングデバイスによって実行されるハイパーバイザに対して、前記RMT及び前記GAPTに対する直接アクセスをブロックすることをさらに含み、
前記ブロックすることは、
前記RMT及び前記GAPTの一方又は両方を暗号化することと、
前記RMT及び前記GAPTの一方又は両方を、前記ハイパーバイザが直接アクセスできない対応するメモリ領域に記憶することと、
のうち少なくとも一方を含む、
請求項1の方法。 - 前記所定の仮想マシンが前記対応するページにアクセスした場合に、前記仮想アドレスを前記システム物理アドレスに変換することを完了することであって、前記要求に応じて前記システム物理アドレスを返すことを含む、ことをさらに含む、
請求項1の方法。 - 前記対応するページが共有されている場合に、前記RMT及び前記対応するGAPTのうち少なくとも一方をチェックすることなく、前記所定の仮想マシンが前記対応するページにアクセスしたと判別することをさらに含む、
請求項9の方法。 - 仮想マシンによるメモリアクセスを処理するコンピューティングデバイスであって、
プロセッサと、
ハードウェアテーブルウォーカと、
リバースマップテーブル(RMT)及び仮想マシン毎に個別のゲストアクセスページテーブル(GAPT)を記憶するメモリであって、前記RMTは、複数のエントリを含み、各エントリは、メモリ内のデータの関連するページにアクセスすることが許可された仮想マシンを識別するための情報を含み、各GAPTは、対応する仮想マシンによってアクセスされているページのレコードを含む、メモリと、を備え、
前記ハードウェアテーブルウォーカは、
仮想アドレスをシステム物理アドレスに変換する要求を受信することであって、前記要求は、所定の仮想マシンから発せられたものである、ことと、
対応するゲストページテーブルから前記仮想アドレスに関連するゲスト物理アドレスを取得し、ネストページテーブルから前記仮想アドレスに関連するシステム物理アドレスを取得することと、
前記ゲスト物理アドレス及び前記システム物理アドレスに基づいて、前記RMT及び対応するGAPTのうち少なくとも一方をチェックして、前記所定の仮想マシンが対応するページにアクセスしたか否かを判別することと、
前記所定の仮想マシンが前記対応するページにアクセスしていない場合に、前記仮想アドレスから前記システム物理アドレスへの変換を終了することと、
を行うように構成されている、
コンピューティングデバイス。 - 前記RMT及び対応するGAPTのうち少なくとも一方をチェックすることは、
前記システム物理アドレスに対応する前記RMT内のエントリが、前記所定の仮想マシンが前記対応するページにアクセスしていないことを示す情報を含む場合に、前記所定の仮想マシンが前記対応するページにアクセスしていないと判別することと、
前記RMT内の前記エントリが、前記所定の仮想マシンが前記対応するページにアクセスしたことを示す情報を含む場合に、
前記RMT内の前記エントリ内のページアクセス情報が、前記対応するページがアクセスされていないことを示し、且つ、前記対応するGAPT内の前記対応するページに対するページアクセス情報が、前記対応するページがアクセスされたことを示す場合に、前記所定の仮想マシンが前記対応するページにアクセスしていないと判別し、
前記RMT内の前記エントリ内のページアクセス情報、及び、前記対応するGAPT内の前記対応するページに対するページアクセス情報の両方が、前記対応するページがアクセスされていないことを示す場合に、前記所定の仮想マシンが前記対応するページにアクセスしたと判別することと、を含む、
請求項11のコンピューティングデバイス。 - 前記RMT内の前記エントリが有効であるとマーキングされていないことと、前記RMT内の前記エントリ内に記憶されたゲスト物理アドレスが、前記ゲスト物理アドレスと一致していないことと、のうち少なくとも1つが真である場合に、
前記RMT内の前記エントリは、前記所定の仮想マシンが前記対応するページにアクセスしていないことを示す情報を含む、
請求項12のコンピューティングデバイス。 - 前記RMT内の前記エントリ内に記憶された仮想マシン識別子が、前記所定の仮想マシンの識別子と一致していないことと、前記RMT内の前記エントリ内に記憶されたページサイズが、前記システム物理アドレスに関連するページサイズと一致していないことと、前記RMT内の前記エントリ内に記憶された読み出し/書き込み許可が、前記メモリアクセスの読み出し/書き込みタイプと一致していないことと、のうち少なくとも1つが真である場合に、
前記RMT内の前記エントリは、前記所定の仮想マシンが前記対応するページにアクセスしていないことを示す情報をさらに含む、
請求項13のコンピューティングデバイス。 - 前記プロセッサは、
前記RMT内のエントリを更新する要求を受信することと、
前記RMT内の別のエントリ内の情報との間で競合が生じる場合に前記要求を終了することと、
前記RMT内の前記エントリが有効であるとマークされている場合に、1つ以上の対応する変換索引バッファをフラッシュすることと、
前記RMT内の前記エントリを更新することであって、前記RMT内の前記エントリ内のページアクセス情報を、前記対応するページがアクセスされていないことを示すように設定することを含む、ことと、
を行うように構成されている、
請求項12のコンピューティングデバイス。 - 前記プロセッサは、
所定のゲスト物理アドレスにおける所定のページに対するページアクセス情報を前記対応するGAPT内でクリアする要求を、前記所定の仮想マシンから受信することと、
前記RMT内の対応するレコードが存在し、当該レコードがページアクセス情報をクリアするための候補であることを確認することと、
前記対応するGAPT及び前記RMT内の前記所定のページに対するページアクセス情報をクリアすることと、
を行うように構成されている、
請求項12のコンピューティングデバイス。 - 1つ以上のページは、2つ以上の仮想マシン間で共有されるグローバルな共有ページであり、前記対応するページは、グローバルな共有ページであり、
前記RMT内の前記エントリが、前記対応するページがグローバルに共有されており、前記メモリアクセスが共有ページに対して許可されないメモリアクセスであることを示す場合に、
前記RMT内の前記エントリは、前記所定の仮想マシンが前記対応するページにアクセスしていないことを示す情報を含む、
請求項12のコンピューティングデバイス。 - 前記テーブルウォーカは、
前記所定の仮想マシンが前記対応するページにアクセスした場合に、前記仮想アドレスを前記システム物理アドレスに変換することを完了することであって、前記要求に応じて前記システム物理アドレスを返すことを含む、ことを行うように構成されている、
請求項11のコンピューティングデバイス。 - 前記テーブルウォーカは、
前記対応するページが共有されている場合に、前記RMT及び前記対応するGAPTのうち少なくとも一方をチェックすることなく、前記所定の仮想マシンが前記対応するページにアクセスしたと判別するように構成されている、
請求項18のコンピューティングデバイス。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/224,302 US10169244B2 (en) | 2016-07-29 | 2016-07-29 | Controlling access to pages in a memory in a computing device |
US15/224,302 | 2016-07-29 | ||
US15/417,632 US10241931B2 (en) | 2016-07-29 | 2017-01-27 | Controlling access to pages in a memory in a computing device |
US15/417,632 | 2017-01-27 | ||
PCT/US2017/034196 WO2018022178A1 (en) | 2016-07-29 | 2017-05-24 | Controlling Access to Pages in a Memory in a Computing Device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019522298A JP2019522298A (ja) | 2019-08-08 |
JP7177038B2 true JP7177038B2 (ja) | 2022-11-22 |
Family
ID=61009960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019504712A Active JP7177038B2 (ja) | 2016-07-29 | 2017-05-24 | コンピューティングデバイスのメモリ内のページに対するアクセス制御 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10241931B2 (ja) |
EP (1) | EP3491520B1 (ja) |
JP (1) | JP7177038B2 (ja) |
KR (1) | KR102435949B1 (ja) |
CN (1) | CN109564522B (ja) |
WO (1) | WO2018022178A1 (ja) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10083129B2 (en) * | 2016-08-29 | 2018-09-25 | Red Hat Israel, Ltd. | Code loading hardening by hypervisor page table switching |
US10509733B2 (en) | 2017-03-24 | 2019-12-17 | Red Hat, Inc. | Kernel same-page merging for encrypted memory |
CN108733311B (zh) * | 2017-04-17 | 2021-09-10 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和设备 |
US10209917B2 (en) | 2017-04-20 | 2019-02-19 | Red Hat, Inc. | Physical memory migration for secure encrypted virtual machines |
US10379764B2 (en) * | 2017-05-11 | 2019-08-13 | Red Hat, Inc. | Virtual machine page movement for encrypted memory |
US11783064B2 (en) * | 2017-07-10 | 2023-10-10 | Intel Corporation | Techniques to provide hardware enforced protection environment for a system management mode |
US11354420B2 (en) | 2017-07-21 | 2022-06-07 | Red Hat, Inc. | Re-duplication of de-duplicated encrypted memory |
US10318435B2 (en) * | 2017-08-22 | 2019-06-11 | International Business Machines Corporation | Ensuring forward progress for nested translations in a memory management unit |
CN111133416A (zh) | 2017-09-26 | 2020-05-08 | 英特尔公司 | 处理来自虚拟机命令的方法和装置 |
US10686605B2 (en) * | 2017-09-29 | 2020-06-16 | Intel Corporation | Technologies for implementing mutually distrusting domains |
US10613990B2 (en) | 2017-12-05 | 2020-04-07 | Red Hat, Inc. | Host address space identifier for non-uniform memory access locality in virtual machines |
US10838637B2 (en) | 2018-02-08 | 2020-11-17 | Micron Technology, Inc. | Status management in storage backed memory package |
CN110489052B (zh) * | 2018-05-14 | 2022-11-25 | 慧荣科技股份有限公司 | 数据储存装置 |
US11030112B2 (en) * | 2018-05-25 | 2021-06-08 | Red Hat, Inc. | Enhanced address space layout randomization |
US11144468B2 (en) * | 2018-06-29 | 2021-10-12 | Intel Corporation | Hardware based technique to prevent critical fine-grained cache side-channel attacks |
US11573904B2 (en) * | 2018-10-12 | 2023-02-07 | Vmware, Inc. | Transparent self-replicating page tables in computing systems |
US11099874B2 (en) * | 2019-01-28 | 2021-08-24 | Red Hat Israel, Ltd. | Efficient userspace driver isolation by shallow virtual machines |
US20200285501A1 (en) * | 2019-03-08 | 2020-09-10 | International Business Machines Corporation | Communication interface of a secure interface control |
CN110442425B (zh) * | 2019-07-19 | 2022-04-08 | 南京芯驰半导体科技有限公司 | 一种虚拟化地址空间隔离系统及方法 |
US11061711B2 (en) | 2019-09-23 | 2021-07-13 | Red Hat, Inc. | Storage deduplication for virtual machines with encrypted storage |
US11232030B2 (en) * | 2019-09-27 | 2022-01-25 | Red Hat Inc. | Storage deduplication for virtual machines with encrypted storage |
US11656891B2 (en) | 2019-09-27 | 2023-05-23 | Red Hat, Inc. | Copy-on-write for virtual machines with encrypted storage |
US11614956B2 (en) | 2019-12-06 | 2023-03-28 | Red Hat, Inc. | Multicast live migration for encrypted virtual machines |
CN115516438A (zh) * | 2020-05-15 | 2022-12-23 | 华为技术有限公司 | 内存管理装置及方法 |
CN113342711B (zh) * | 2021-06-28 | 2024-02-09 | 海光信息技术股份有限公司 | 页表更新方法、装置及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011011768A1 (en) | 2009-07-24 | 2011-01-27 | Advanced Micro Devices, Inc. | Iommu using two-level address translation for i/o and computation offload devices on a peripheral interconnect |
WO2012117465A1 (ja) | 2011-03-02 | 2012-09-07 | パナソニック株式会社 | 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路 |
WO2013031446A1 (ja) | 2011-08-29 | 2013-03-07 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 論理アドレスを物理アドレスに変換する装置及び方法 |
US20150370727A1 (en) | 2014-06-20 | 2015-12-24 | Kabushiki Kaisha Toshiba | Memory management device and non-transitory computer readable storage medium |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7111145B1 (en) * | 2003-03-25 | 2006-09-19 | Vmware, Inc. | TLB miss fault handler and method for accessing multiple page tables |
US7886126B2 (en) * | 2005-01-14 | 2011-02-08 | Intel Corporation | Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system |
US7334076B2 (en) * | 2005-03-08 | 2008-02-19 | Microsoft Corporation | Method and system for a guest physical address virtualization in a virtual machine environment |
US7636831B1 (en) * | 2006-03-31 | 2009-12-22 | Vmware, Inc. | Optimization of reverse mappings for immutable guest physical pages of virtual memories in a virtualized computer system |
US8443156B2 (en) * | 2009-03-27 | 2013-05-14 | Vmware, Inc. | Virtualization system using hardware assistance for shadow page table coherence |
US8601310B2 (en) * | 2010-08-26 | 2013-12-03 | Cisco Technology, Inc. | Partial memory mirroring and error containment |
KR101323858B1 (ko) * | 2011-06-22 | 2013-11-21 | 한국과학기술원 | 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법 |
US8719546B2 (en) * | 2012-01-04 | 2014-05-06 | Intel Corporation | Substitute virtualized-memory page tables |
US9336158B2 (en) * | 2013-02-26 | 2016-05-10 | Oracle International Corporation | Method and system for simplified address translation support for static infiniband host channel adaptor structures |
US9639476B2 (en) * | 2013-09-26 | 2017-05-02 | Cavium, Inc. | Merged TLB structure for multiple sequential address translations |
CN103955399B (zh) * | 2014-04-30 | 2017-06-20 | 华为技术有限公司 | 一种虚拟机迁移方法和装置及物理主机 |
US9335943B2 (en) * | 2014-06-30 | 2016-05-10 | Intel Corporation | Method and apparatus for fine grain memory protection |
US9390028B2 (en) * | 2014-10-19 | 2016-07-12 | Strato Scale Ltd. | Coordination between memory-saving mechanisms in computers that run virtual machines |
US9875047B2 (en) * | 2015-05-27 | 2018-01-23 | Red Hat Israel, Ltd. | Exit-less host memory locking in a virtualized environment |
CN105354155A (zh) * | 2015-12-03 | 2016-02-24 | 上海高性能集成电路设计中心 | 一种基于页表检查机制的存储器访问权限控制方法 |
-
2017
- 2017-01-27 US US15/417,632 patent/US10241931B2/en active Active
- 2017-05-24 KR KR1020197004317A patent/KR102435949B1/ko active IP Right Grant
- 2017-05-24 JP JP2019504712A patent/JP7177038B2/ja active Active
- 2017-05-24 WO PCT/US2017/034196 patent/WO2018022178A1/en unknown
- 2017-05-24 CN CN201780047299.8A patent/CN109564522B/zh active Active
- 2017-05-24 EP EP17834903.1A patent/EP3491520B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011011768A1 (en) | 2009-07-24 | 2011-01-27 | Advanced Micro Devices, Inc. | Iommu using two-level address translation for i/o and computation offload devices on a peripheral interconnect |
WO2012117465A1 (ja) | 2011-03-02 | 2012-09-07 | パナソニック株式会社 | 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路 |
WO2013031446A1 (ja) | 2011-08-29 | 2013-03-07 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 論理アドレスを物理アドレスに変換する装置及び方法 |
US20150370727A1 (en) | 2014-06-20 | 2015-12-24 | Kabushiki Kaisha Toshiba | Memory management device and non-transitory computer readable storage medium |
JP2016021224A (ja) | 2014-06-20 | 2016-02-04 | 株式会社東芝 | メモリ管理装置、プログラム、及び方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3491520B1 (en) | 2021-06-23 |
CN109564522B (zh) | 2023-08-04 |
US20180032447A1 (en) | 2018-02-01 |
US10241931B2 (en) | 2019-03-26 |
WO2018022178A1 (en) | 2018-02-01 |
CN109564522A (zh) | 2019-04-02 |
KR102435949B1 (ko) | 2022-08-25 |
EP3491520A1 (en) | 2019-06-05 |
EP3491520A4 (en) | 2020-04-01 |
JP2019522298A (ja) | 2019-08-08 |
KR20190026909A (ko) | 2019-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7177038B2 (ja) | コンピューティングデバイスのメモリ内のページに対するアクセス制御 | |
US10509736B2 (en) | Controlling access by IO devices to pages in a memory in a computing device | |
US10585805B2 (en) | Controlling access to pages in a memory in a computing device | |
US10169244B2 (en) | Controlling access to pages in a memory in a computing device | |
US7739466B2 (en) | Method and apparatus for supporting immutable memory | |
JP6893479B2 (ja) | 所有権テーブルを用いたデータ処理装置及び方法 | |
JP5581403B2 (ja) | メモリのセキュア領域および非セキュア領域へのセキュアモードページテーブルデータの格納 | |
JP4237190B2 (ja) | 仮想マシン環境内でのゲスト物理アドレスの仮想化の方法およびシステム | |
US7516247B2 (en) | Avoiding silent data corruption and data leakage in a virtual environment with multiple guests | |
US7480784B2 (en) | Ensuring deadlock free operation for peer to peer traffic in an input/output memory management unit (IOMMU) | |
US10733111B2 (en) | Memory management | |
US20220308756A1 (en) | Performing Memory Accesses for Input-Output Devices using Encryption Keys Associated with Owners of Pages of Memory | |
JP2023518482A (ja) | 複数の物理アドレス空間を使用する装置及び方法 | |
EP4315079A1 (en) | Migrating pages of memory accessible by input-output devices | |
US11726693B2 (en) | Migrating pages of memory accessible by input-output devices | |
US20200192825A1 (en) | Security for virtualized device | |
JP2023526000A (ja) | 変換テーブルアドレス記憶回路 | |
US11188477B2 (en) | Page protection layer | |
JP2023519322A (ja) | 装置及び方法 | |
JP2023518481A (ja) | 複数の物理アドレス空間を使用する装置及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200511 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210331 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210601 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20210901 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211029 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220329 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220617 |
|
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: 20221025 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20221110 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7177038 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |