JP2014013615A - Synchronizing translation lookaside buffer to extended paging table - Google Patents
Synchronizing translation lookaside buffer to extended paging table Download PDFInfo
- Publication number
- JP2014013615A JP2014013615A JP2013200085A JP2013200085A JP2014013615A JP 2014013615 A JP2014013615 A JP 2014013615A JP 2013200085 A JP2013200085 A JP 2013200085A JP 2013200085 A JP2013200085 A JP 2013200085A JP 2014013615 A JP2014013615 A JP 2014013615A
- Authority
- JP
- Japan
- Prior art keywords
- ept
- instruction
- guest
- instruction mode
- processor
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
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 Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
本出願は、弁護士事件整理番号P20462、本発明(EPT特許出願)の譲受人に譲渡される「仮想マシンシステムにおける仮想化物理メモリ」と題された係属中のアメリカ特許出願番号第11/036,736号に関する。 This application is a pending US patent application Ser. No. 11/036 entitled “Virtualized Physical Memory in a Virtual Machine System” assigned to the assignee of the present invention (EPT patent application), attorney case serial number P20462. Related to 736.
仮想化は、ホストマシンの下のハードウェアが1つ、または、それ以上の個別に動作する仮想マシンに見えるようなホストの抽象概念を表わす仮想化のためのハードウェアおよびソフトウェア・サポートにより単一のホストマシンを実現する。したがって、それぞれの仮想マシンは、自己内蔵型プラットフォームとして機能することもある。仮想化技術は、複数のゲストオペレーティングシステム、および/または、他のゲストソフトウェアが、同じハードウエアプラットフォームで実際に物理的に実行される一方で、複数の仮想マシンにおいて見かけ上同時にかつ個別に共存し実行されることを実現すべくしばしば用いられる。仮想マシンは、ホストマシンのハードウェアを模倣するか、あるいは、異なるハードウェアの抽象概念を全体として表わすこともできる。 Virtualization is a single piece of hardware and software support for virtualization that represents the host's abstraction so that the hardware under the host machine appears to be one or more independently running virtual machines. Realize the host machine. Thus, each virtual machine may function as a self-contained platform. Virtualization technology allows multiple guest operating systems and / or other guest software to actually run physically on the same hardware platform, while appearing simultaneously and individually in multiple virtual machines. Often used to implement what is done. A virtual machine can mimic the hardware of a host machine or can represent an abstraction of different hardware as a whole.
仮想化システムは、ホストマシンを制御する仮想マシンモニタ(VMM)を含んでよい。
VMMは、仮想マシンにおいて動作するゲストソフトウェアに一組の資源(例えばプロセッサ、メモリ、IOデバイス)を提供する。VMMは、物理ホストマシンのいくつかまたはすべての構成要素を仮想マシンにマッピングし、仮想マシンに含まれる、VMMのソフトウェアにおいて模倣される完全な仮想構成要素(例えば仮想IOデバイス)を生成することもできる。VMMは、このように、ゲストソフトウェアへの「仮想ベアマシン」インターフェースを提供するとも言える。VMMは、仮想マシンにサービスを提供し、ホストマシンで実行する複数の仮想マシンから/間を保護するハードウェア仮想化アーキテクチャにおける設備を使用する。仮想マシンでゲストソフトウェアが実行されるとき、ゲストソフトウェアにより実行される特定の命令(例えば周辺デバイスにアクセスする命令)は、通常、ハードウェアに直接アクセスするものであり、ゲストソフトウェアは、ハードウェアプラットフォームで直接実行されている。VMMにより指示されている仮想化システムでは、これら命令は、本願明細書中では仮想マシン出口と呼ばれるVMMへの移行を生じ得る。VMMは、これらソフトウェアにおける命令を、ゲストソフトウェアが実行される仮想マシンと一致するホストマシンハードウェアおよびホストマシン周辺デバイスに適した方法で処理する。同様に、ホストマシンで生成される特定の割り込みおよび例外は、サービスを提供するためにゲストソフトウェアに渡される前に、VMMにより阻止または管理されるか、あるいは、VMMによりゲストソフトウェアに適応させられる必要があるかもしれない。そして、VMMは、管理をゲストソフトウェアに移行させ、仮想マシンは、動作を再開する。本願明細書中、VMMからヘスとソフトウェアへの移行を仮想マシンエントリと呼ぶ。
The virtualization system may include a virtual machine monitor (VMM) that controls the host machine.
The VMM provides a set of resources (eg, processor, memory, IO device) to guest software that operates in a virtual machine. The VMM may map some or all of the components of the physical host machine to the virtual machine and generate a complete virtual component (eg, virtual IO device) that is mimicked in the VMM software that is included in the virtual machine. it can. The VMM can thus be said to provide a “virtual bare machine” interface to guest software. The VMM uses equipment in a hardware virtualization architecture that provides services to virtual machines and protects against / between multiple virtual machines running on a host machine. When guest software is executed in a virtual machine, certain instructions executed by the guest software (eg, instructions to access peripheral devices) are usually those that directly access the hardware, and the guest software is It is executed directly. In a virtualization system directed by a VMM, these instructions can result in a transition to a VMM, referred to herein as a virtual machine exit. The VMM processes the instructions in these software in a manner suitable for host machine hardware and host machine peripheral devices that are consistent with the virtual machine on which the guest software is executed. Similarly, certain interrupts and exceptions generated on the host machine need to be blocked or managed by the VMM or adapted to the guest software by the VMM before being passed to the guest software to provide service. There may be. Then, the VMM transfers management to the guest software, and the virtual machine resumes operation. In this specification, the migration from VMM to Hess and software is called a virtual machine entry.
技術的に知られているように、典型的なプロセッサに基づくシステムにおいて線形メモリから物理メモリへのマッピングを提供するには、ページテーブルがしばしば用いられる。ページテーブルは、メモリ常駐構造を有し、線形アドレスに対応する物理アドレスを決定すべくページテーブルにアクセスすることがメモリアクセスとなり、これが処理時間の遅延を生じ得る。このような問題を軽減すべく、多くのプロセッサの実装は、ページテーブルの値に基づく、使用中である物理メモリマッピングへの現在の線形のいくつかのサブセットがキャッシュされた翻訳ルックアサイドバッファ(TLB)と呼ばれるプロセッサ内のレジスタの高速メモリまたはバンクを含む。これによって、ページテーブルにアクセスしなければならないとき、プロセッサは、対応する物理アドレスへの線形アドレスの翻訳に、一般的に見込まれるより速くアクセスすることができる。プロセッサ実装は、一般的に、ページテーブルに格納されている現在の翻訳に基づき、TLB内のすべてのエントリを無効にするかまたはアップデートする命令を含む、TLBを管理する命令を提供する。 As is known in the art, page tables are often used to provide linear memory to physical memory mapping in typical processor-based systems. The page table has a memory resident structure, and accessing the page table to determine a physical address corresponding to a linear address becomes a memory access, which may cause a processing time delay. To alleviate this problem, many processor implementations have a translation lookaside buffer (TLB) in which some subset of the current linear to physical memory mapping in use is cached based on page table values. A high speed memory or bank of registers in the processor called). This allows the processor to access the translation of the linear address to the corresponding physical address faster than would normally be expected when the page table must be accessed. The processor implementation generally provides instructions for managing the TLB, including instructions to invalidate or update all entries in the TLB based on the current translation stored in the page table.
図1は、バスによりプロセッサと通信可能に接続されたプロセッサおよびメモリを組み込んだプロセッサに基づくシステムで実行されるプロセスを示す。図1を見ると、プロセス105は、その線形アドレス空間115(線形メモリ空間)内のメモリ位置110を参照するとき、マシン125の物理メモリ145(マシン物理メモリ)における実アドレス140への参照は、ハードウェア(プロセッサ120に組み込まれることもある)およびソフトウェア(一般的にはマシンのオペレーティングシステム内にある)に実装され得るメモリ管理130により生成される。メモリ管理130は、他の機能の中でもとりわけ、線形アドレス空間内の位置をマシンの物理メモリにおける位置にマッピングする。図1に示すように、プロセスは、物理マシンで実際に利用可能なメモリとは異なる概観を有してよい。図1に示す例において、処理は、メモリ管理ハードウェアおよびソフトウェアによりそれ自体が10から11MBまでのアドレス空間を有する物理メモリの一部に実際にマッピングされる0から1MBまでの線形アドレス空間で動作し、プロセス空間アドレスから物理アドレスを計算すべく、線形アドレスにオフセット135が加えられてよい。線形アドレス空間から物理メモリへのより複雑なマッピングが可能であり、例えば、線形メモリに対応する物理メモリは、ページのような部分に分割されて、物理メモリ内で他のプロセスからページによりインタリーブ配置されてよい。
FIG. 1 illustrates a process performed in a processor-based system incorporating a processor and memory communicatively coupled to the processor by a bus. Referring to FIG. 1, when
メモリは習慣的にページに分割され、各ページは、実装全体で変化する既知のデータ量を含み、例えば、1ページは、4096バイトのメモリ、1MBのメモリ、または、特定の用途に望まれるような他のいかなるメモリ量を含んでよい。メモリ位置が実行プロセスにより参照されると、それらは、ページ索引に翻訳される。典型的なマシンでは、メモリ管理は、線形メモリ内の1ページへの参照をマシン物理メモリ内の1ページへとマッピングする。一般的には、メモリ管理は、プロセス空間ページ位置に対応する物理ページ位置を特定するページテーブルを用いてよい。 The memory is customarily divided into pages, each page containing a known amount of data that varies throughout the implementation, for example, one page is 4096 bytes of memory, 1 MB of memory, or as desired for a particular application. Any other amount of memory may be included. When memory locations are referenced by the execution process, they are translated into a page index. In a typical machine, memory management maps a reference to a page in linear memory to a page in machine physical memory. In general, memory management may use a page table that identifies physical page positions corresponding to process space page positions.
仮想マシン環境においてゲストソフトウェアを管理する1つの態様は、メモリの管理である。
仮想マシンで実行されるゲストソフトウェアにより執り行われるメモリ管理動作を取り扱うことにより、仮想マシンモニタのような制御システムが複雑になる。例えば、2つの仮想マシンが、x86プロセッサの一部として実装されるページテーブルを含み得るx86プラットフォームで実装されるホストマシンにおいて仮想化して実行されるシステムと考えてみる。さらに、各仮想マシン自体はそこで実行されるゲストソフトウェアに対し、x86マシンの抽象概念を提示すると仮定する。各仮想マシンで実行されるゲストソフトウェアは、ゲスト線形メモリアドレスを参照し、次に、ゲストマシンのメモリ管理システムによりゲスト−物理メモリアドレスに翻訳されてもよい。しかしながら、ゲスト−物理メモリそれ自体は、VMMおよびホストプロセッサ上のハードウェアにおける仮想サブシステムを介しホスト−物理メモリ内のさらなるマッピングにより実装されることもできる。したがって、例えばx86ページテーブル制御レジスタへの参照を含む、ゲストプロセスまたはゲストオペレーティングシステムによるゲストメモリへの参照は、VMMにより阻止されなければならない。なぜなら、それらは、ゲスト−物理メモリが実際にはホスト−物理メモリと直接対応せず、それどころかホストマシンの仮想システムを介しさらにリマッピングされるというようなさらなる再処理なしにはホストマシンのページテーブルにじかに渡すことができないからである。
One aspect of managing guest software in a virtual machine environment is memory management.
Handling a memory management operation performed by guest software executed in a virtual machine complicates a control system such as a virtual machine monitor. For example, consider a system that is virtualized and executed on a host machine implemented on an x86 platform where two virtual machines may include page tables implemented as part of an x86 processor. Further assume that each virtual machine itself presents an x86 machine abstraction to the guest software running on it. The guest software running on each virtual machine references the guest linear memory address and may then be translated into a guest-physical memory address by the guest machine's memory management system. However, the guest-physical memory itself can also be implemented by further mapping in the host-physical memory via a virtual subsystem in hardware on the VMM and the host processor. Thus, references to guest memory by guest processes or guest operating systems, including references to x86 page table control registers, for example, must be blocked by the VMM. Because they do not correspond directly to the host-physical memory in fact, the host-machine page table without further re-processing, such as further remapping through the host machine's virtual system. It is because it cannot be handed over directly.
図2:図2は、一実施形態における、ゲストメモリのマッピングに特に関連するホストマシンで実行される1つまたはそれ以上の仮想マシン間の関係を示す。図2は、ゲスト−物理メモリがホストマシンの仮想化システムを介しどのように再マッピングされるかを示す。仮想マシンA、242、および、仮想マシンB、257のような各仮想マシンは、仮想マシンにおいて実行されるゲストソフトウェアに対し、仮想プロセッサ245および255をそれぞれ提示する。各マシンは、ゲストオペレーティングシステムまたは他のゲストソフトウェア、ゲスト−物理メモリ240および250それぞれに物理メモリの抽象概念を提供する。ゲストソフトウェアが仮想マシン242および257で実行されるときは、ホスト−物理メモリ260を利用するホストプロセッサ265におけるホストマシン267により実際に実行される。
FIG. 2: FIG. 2 illustrates the relationship between one or more virtual machines running on a host machine that is particularly relevant to guest memory mapping in one embodiment. FIG. 2 shows how guest-physical memory is remapped through the host machine virtualization system. Each virtual machine, such as virtual machine A, 242 and virtual machine B, 257, presents
図2に示すように、本実施形態では、仮想マシンA、242のアドレス0から開始する物理メモリ空間として表わされるゲスト−物理メモリ240は、ホスト−物理メモリ260における一部の連続領域270にマッピングされる。同様に、仮想マシンB、257におけるゲスト−物理メモリ250は、ホスト−物理メモリ260の異なる部分275にマッピングされる。図2に示すように、ホストマシンは、1024MBのホスト−物理メモリを有し得る。各仮想マシン242および257が256MBのメモリを割り当てられている場合、1つの可能性のあるマッピングとしては、仮想マシンA、242が128−384MBの範囲を割り当てられ、仮想マシンB、257は、512−768MBの範囲を割り当てられるというものである。仮想マシン242および257はどちらも0−256MBのゲスト−物理アドレス空間を参照する。VMMのみが各仮想マシンのアドレス空間をホスト−物理アドレス空間の異なる部分にマッピングすることを承知している。
As shown in FIG. 2, in this embodiment, the guest-
図2に示される仮想マシンおよびメモリマッピングは、他の複数の実施形態における一実施形態の1つの表現に過ぎず、ホストマシンで実行される仮想マシンの実際の数は、1つから多くにまで変更してよく、ホストマシンおよび仮想マシンの実際のメモリサイズも変更してよく、仮想マシン間での変更も可能である。例は、仮想マシンへのメモリの単純な連続割り当てを示す。さらなる一般的なケースにおいて、仮想マシンに割り当てられた物理−メモリページは、連続的していなくてもよく、互いに、そして、VMMおよび他のホストプロセッサに属するページとインタリーブ配置されたホスト物理メモリ内に分散される可能性もある。 The virtual machine and memory mapping shown in FIG. 2 is only one representation of one embodiment in other embodiments, and the actual number of virtual machines running on the host machine is from one to many. It may be changed, the actual memory size of the host machine and the virtual machine may be changed, and change between virtual machines is also possible. The example shows a simple sequential allocation of memory to virtual machines. In a more general case, the physical-memory pages allocated to the virtual machine may not be contiguous and in host physical memory interleaved with each other and pages belonging to the VMM and other host processors. May be dispersed.
図2に示されるようなシステム内の仮想マシンとして表わされるプロセッサに基づくシステムは、仮想マシンそれ自体のあらゆる複雑さも実装できる。したがって、例えば、仮想マシンは、ゲスト−物理メモリの全貌をゲストOSに提示し、ゲストOSにより提供されるメモリ管理を用いた仮想マシン、および、仮想マシンの仮想プロセッサまたは他の仮想ハードウェアで実行されるゲストソフトウェアのメモリ管理を実行できる。1つの例示的実施形態では、仮想マシンは、メモリ管理のためのページテーブルのようなx86ハードウェアサポートを含むx86プラットフォームをゲストOSに提示してよく、次に、メモリ管理のためのx86ハードウェアを含むx86プラットフォームでもあるホストプラットフォームで実際に実行されてもよい。本実施形態の仮想化システムは、追加の機構なしに、1つの可能性のあるソリューションとして、物理メモリをリマッピングし、分割し、そして保護するx86ページテーブルのシャドウイングを用いてVMMにおける物理−メモリ仮想化アルゴリズムを実装しなければならない。したがって、例えば、ゲストソフトウェアが仮想マシンのx86ページテーブルにアクセスを試みる場合、VMMは、仮想化に要求される機能(例えば物理アドレスのリマッピング)をゲストOSに要求される機能に重ねる必要がある。 A processor based system represented as a virtual machine in the system as shown in FIG. 2 can implement any complexity of the virtual machine itself. Thus, for example, a virtual machine presents the entire guest-physical memory to the guest OS and runs on the virtual machine using the memory management provided by the guest OS, and the virtual processor or other virtual hardware of the virtual machine Can perform memory management of guest software. In one exemplary embodiment, the virtual machine may present to the guest OS an x86 platform that includes x86 hardware support, such as a page table for memory management, and then x86 hardware for memory management. May actually run on a host platform that is also an x86 platform, including The virtualization system of this embodiment uses the x86 page table shadowing to remap, partition, and protect physical memory as one possible solution without additional mechanisms. A memory virtualization algorithm must be implemented. Thus, for example, when guest software attempts to access the x86 page table of a virtual machine, the VMM needs to overlay the functions required for virtualization (eg physical address remapping) with the functions required for the guest OS. .
そのためには、VMMは、ページング機構の使用にまつわる様々なイベントをゲストソフトウェアによりトラップしなければならない。このことは、x86メモリ管理システムの制御レジスタ(例えばCR0、CR3およびCR4)などの制御レジスタへの書き込み、ページングに関連するモデル特定レジスタ(MSR)へのアクセス、および、x86証拠書類に記載された特定の例外(例えばページフォルト)を取り扱うメモリアクセス(例えばメモリタイプ範囲レジスタ(MTRR))を含む。物理メモリを仮想化するこのx86ページテーブルの使用は、複雑であり、かなりのパフォーマンスオーバーヘッドを強いる。 In order to do so, the VMM must trap various events related to the use of the paging mechanism by the guest software. This has been documented in writes to control registers such as control registers (eg CR0, CR3 and CR4) in x86 memory management systems, access to model specific registers (MSRs) related to paging, and x86 documentation Includes memory accesses (eg, Memory Type Range Register (MTRR)) that handle specific exceptions (eg, page faults). The use of this x86 page table to virtualize physical memory is complex and imposes considerable performance overhead.
図3:図3は、仮想マシン環境300の一実施形態を示す。本実施形態では、プロセッサに基づくプラットフォーム316がVMM312を実行してよい。VMMは、通常はソフトウェアに実装されるが、より高水準のソフトウェアへの仮想ベアマシンインターフェースをまねてエクスポートすることもできる。このようなより高水準なソフトウェアは、標準OS、リアルタイムOSを含んでよく、または、限られたオペレーティングシステム機能を有する余分な装備をいっさい除いた環境であってもよいし、いくつかの実施形態では標準OSで通常利用可能なOS機能を含まなくてもよい。あるいは、例えば、VMM312は、他のVMM内でも実行できるし、または、他のVMMのサービスを使用して実行されてよい。いくつかの実施形態では、VMMは、例えば、ハードウェア、ソフトウェア、ファームウェアにおいて、または、様々な技術の組み合わせにより実装されてよい。少なくとも1つの実施形態では、VMMの1つまたはそれ以上の構成要素は、1つまたはそれ以上の仮想マシンで実行され、VMMの1つまたはそれ以上の構成要素は、図3で示されるようなベアプラットフォームハードウェアにおいて実行されてよい。ベアプラットフォームハードウェアで直接実行されるVMMの構成要素は、本願明細書中ではVMMのホスト構成要素と呼ばれる。
FIG. 3: FIG. 3 illustrates one embodiment of a
プラットフォームハードウェア316は、パーソナルコンピュータ(PC)、サーバ、メインフレーム、パーソナル携帯情報機器(PDA)またはスマートモバイルフォン、ポータブルコンピュータ、セットトップボックスなどのハンドヘルドデバイス、あるいは、他のプロセッサに基づくシステムであってよい。プラットフォームハードウェア316は、少なくともプロセッサ318およびメモリ320を含む。プロセッサ318は、マイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラなどのプログラムを実行できるいかなるタイプのプロセッサであってよい。プロセッサは複数の実施形態において実行するためのマイクロコード、プログラマブル・ロジックまたはハードコードロジックを含んでよい。図3は、そのようなプロセッサ318のみを示すが、一実施形態において、システム内に1つまたはそれ以上のプロセッサがあってもよい。さらに、プロセッサ318は、マルチコア、マルチスレッドのサポートなどを含んでよい。メモリ320は、様々な実施形態において、ハードディスク、フロッピーディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、フラッシュメモリ、前述のデバイスの任意の組み合わせ、または、プロセッサ318により読み取られることができる他のいかなるタイプのマシン可読媒体を含むことができる。メモリ320は、プログラムの実行および他の方法の実施形態を実行するための命令および/またはデータを格納することもできる。いくつかの実施形態では、本発明のいくつかの要素は、例えば、プラットフォームチップセット、または、システムの1つまたはそれ以上のメモリコントローラなどの他のシステム構成要素に実装されてもよい。 Platform hardware 316 is a personal computer (PC), server, mainframe, personal digital assistant (PDA) or handheld device such as a smart mobile phone, portable computer, set-top box, or other processor-based system. It's okay. Platform hardware 316 includes at least a processor 318 and memory 320. The processor 318 may be any type of processor capable of executing programs such as a microprocessor, digital signal processor, microcontroller, and the like. The processor may include microcode, programmable logic, or hard code logic for execution in embodiments. FIG. 3 shows only such a processor 318, but in one embodiment there may be one or more processors in the system. Further, the processor 318 may include multi-core, multi-thread support, and the like. The memory 320 may be read by the hard disk, floppy disk, random access memory (RAM), read only memory (ROM), flash memory, any combination of the aforementioned devices, or the processor 318 in various embodiments. Any other type of machine readable medium may be included. Memory 320 may also store instructions and / or data for executing program execution and other method embodiments. In some embodiments, some elements of the invention may be implemented in other system components such as, for example, a platform chipset or one or more memory controllers of the system.
VMM312は、ゲストソフトウェアに1つまたはそれ以上の仮想マシンの抽象概念を提示し、これは、様々なゲストに同じまたは異なる抽象概念を提供し得る。図3は、2つの仮想マシン302および314を示す。各仮想マシン上で動作するゲストソフトウェア303および313などのゲストソフトウェアは、ゲストOS304および306のようなゲストOSと、様々なゲストソフトウェアアプリケーション308および310を含んでよい。ゲストソフトウェア303および313は、ゲストソフトウェア303および313が動作する仮想マシン内の物理的資源(例えばプロセッサレジスタ、メモリおよびI/Oデバイス)にアクセスし、他の機能を実行してよい。例えば、ゲストソフトウェア303および313は、仮想マシン302および314において表わされるプロセッサおよびプラットフォームのアーキテクチャに従う、レジスタ、キャッシュ、構造、I/Oデバイス、メモリなどのすべてへのアクセスを有していることになっている。
The
一実施形態では、プロセッサ318は、仮想マシン制御構造(VMCS)324に格納されたデータに従い、仮想マシン302および314の動作を制御する。VMCS324は、ゲストソフトウェア303および313の状態、VMM312の状態、VMM312がゲストソフトウェア303および313の動作を制御することをどのように望むかを示す実行制御情報、VMM312と仮想マシンとの間の移行を制御する情報などを含み得る構造である。プロセッサ318は、VMCS324から情報を読み取ることにより、仮想マシンの実行環境を決定し、その行動を制約する。一実施形態では、VMCS324は、メモリ320に格納される。いくつかの実施形態では、複数のVMCS構造が1つまたはそれ以上の仮想多重仮想マシン内でCPUをサポートすべく用いられる。
In one embodiment, processor 318 controls the operation of
VMM312は、仮想マシン302および314で動作するゲストソフトウェアによりアクセスできる物理メモリを管理する必要がある。一実施形態における物理メモリ管理を支持すべく、プロセッサ318は、拡張ページテーブル(EPT)機構を提供する。実施形態においては、VMM312は、仮想マシン302および314へ制御を移行する前に提供される必要があるかもしれない物理メモリ仮想化に関連するフィールドの値を提供する物理メモリ管理モジュール326を含む。これらのフィールドは、まとめてEPT制御と呼ばれる。EPT制御は、例えば、EPT機構が使用可能にされるべきかどうかを特定するEPT使用可能インジケータと、物理メモリ仮想化機構の形式およびセマンティクスを示す1つまたはそれ以上のEPTテーブル構成制御とを含んでよい。これらの詳細については、以下に述べる。さらに、一実施形態では、EPTテーブル328は、VMM312がゲストソフトウェア303および313上にあり得る物理アドレス翻訳およびプロテクションセマンティクスを示す。
The
一実施形態では、EPT制御は、VMCS324に格納される。または、EPT制御は、プロセッサ318、メモリ320およびプロセッサ318の組み合わせ、あるいは、その他のいかなる記憶場所に存在してもよい。一実施形態では、個別のEPT制御は、仮想マシン302および314のそれぞれに対し維持される。一方、同じEPT制御は、両方の仮想マシンに対し維持され、各仮想マシンのエントリの前にVMM312によりアップデートされる。
In one embodiment, the EPT control is stored in
一実施形態では、EPTテーブル328は、メモリ320に格納される。または、EPTテーブル328は、プロセッサ318、メモリ320およびプロセッサ318の組み合わせ、あるいは、その他のいかなる記憶場所に存在してもよい。一実施形態では、個別のEPTテーブル328は、仮想マシン302および314のそれぞれに対し維持される。一方、同じEPTテーブル328は、両方の仮想マシン302および314に対し維持され、各仮想マシンのエントリの前にVMM312によりアップデートされる。
In one embodiment, EPT table 328 is stored in memory 320. Alternatively, EPT table 328 may reside in a combination of processor 318, memory 320 and processor 318, or any other storage location. In one embodiment, a separate EPT table 328 is maintained for each of the
一実施形態では、プロセッサ318は、EPT機構が使用可能インジケータに基づき使用可能であるかどうかを決定する役割を果たすEPTアクセスロジック322を含む。EPT機構が使用可能な場合、プロセッサは、EPT制御およびEPTテーブル328に基づき、ゲスト−物理アドレスをホスト−物理アドレスに翻訳する。
In one embodiment, the processor 318 includes
示される実施形態において、プロセッサは、ゲスト−物理への線形、ゲスト−物理からホスト物理のアドレス、および、ホスト−物理翻訳への線形をキャッシュする翻訳ルックアサイドバッファ(TLB)323をさらに含んでよい。ゲスト−物理の線形、および、ホスト−物理翻訳への線形は、本願明細書中では「線形翻訳」と呼ばれる。ゲスト−物理からホスト−物理、および、ホスト−物理翻訳への線形は、本願明細書中では、「物理翻訳」と呼ばれる。 In the illustrated embodiment, the processor may further include a translation lookaside buffer (TLB) 323 that caches guest-physical linear, guest-physical to host physical address, and host-physical translation linear. . Guest-physical alignment and alignment to host-physical translation are referred to herein as "linear translation". The linearity from guest-physics to host-physics and host-physical translation is referred to herein as “physical translation”.
システム300がマルチプロセッサまたはマルチスレッドプロセッサを含む一実施形態において、論理プロセッサのそれぞれは、個別のEPTアクセスロジック322に関連し、VMM312は、論理プロセッサそれぞれのためのEPTテーブル328およびEPT制御を構成する。
In one embodiment where
ゲストソフトウェア(例えばゲストOS304およびアプリケーション308を含む303)によりアクセスされることができる資源は、「特権付き」または「特権なし」として分類されてもよい。特権付き資源に対し、VMM312は、これら特権付き資源全体の究極の制御を保持する一方で、ゲストソフトウェアに望まれる機能を促進する。さらに、各ゲストソフトウェア303および313は、例外(例えばページフォルト、一般的なプロテクションフォルトなど)、割り込み(例えばハードウェア割り込み、ソフトウェア割り込み)、および、プラットフォームイベント(例えば初期化(INIT)およびシステム管理割り込み(SMI))などの様々なプラットフォームイベントを処理することになっている。これらプラットフォームイベントのいくつかは、仮想マシン302および314の正確な動作を保証し、ゲストソストウェアからの、および、ゲストホストウェア間での保護の目的でVMM312により取り扱われる必要があるという理由から、「特権付き」である。ゲストオペレーティングシステムおよびゲストアプリケーションのどちらも特権付き資源へのアクセスを試みることができ、また、どちらも特権付きイベントを生じるかまたは体験する。本願明細書中、特権付きプラットフォームイベント、および、特権付き資源へアクセスの試みは、ひとまとめに「特権付きイベント」、または、「仮想化イベント」と呼ばれる。
Resources that can be accessed by guest software (eg, 303 including
図3a:図3aは、図3の実施形態におけるプロセッサ318の高レベルにおけるいくつかのブロックレベル特徴を示す。一般的には、図3の318に示されるようなプロセッサは、プロセッサバスまたは図3aの337に示されるようなバスを含んでよい。さらに、図3aに示すように、プロセッサは、1つまたは複数のバンクにレジスタ350を含んでよく、各レジスタは、32、64、128、または、周知のように他のビット数のデータの記憶容量を有し得る。各レジスタバンクは、さらに、例えば8、32、64レジスタなどのいくつかのレジスタを有し得る。いくつかのレジスタは、x86の実施形態での場合のように例えばCRビットを格納するよう、制御およびステータスの使用専用であってよい。他の実施形態では、他の制御レジスタおよびフラッグは、異なる動作モード、および、技術的に周知であるようなステータス検査を許容するようプロセッサに格納されてよい。一般的に図3の実施形態で示されるようなプロセッサは、メモリ、キャッシュ、または、他の記憶装置から命令およびデータを取り出す論理または論理回路330、命令をデコードする論理または論理回路、および、命令を実行する334のような実行ユニットを含んでよい。これら機能ユニットのさまざまなバリエーションが可能であり、例えば、実行ユニットにおける実行がパイプラインで転送されてよく、または、推測、および、分岐予測を含むか、あるいは、特定のプロセッサ、または、アプリケーションに関連しての他の特徴を有してよい。他の関数論理365は、演算、グラフィック処理ロジック、および、周知のようなプロセッサの多くの他の特殊関数などであり、プロセッサ内に存在してよい。
オンボードキャッシュ360は、いくつかの実施形態に存在する可能性がある。このキャッシュは、周知のように、128MB、1GBなど様々なサイズを有し得る。図3を参照して先に示したように、プロセッサ318は、EPTアクセスロジック322およびTLB323を含む。EPTアクセスロジックは、EPTを配置し、制御し、かつ、管理するロジックを一実施形態に含んでよい。また、TLBは、一般的に、プロセッサ内の効率および他の目的でキャッシュされるページテーブルからのマッピングを含むバッファであってよい。
FIG. 3a: FIG. 3a shows some block level features at a high level of the processor 318 in the embodiment of FIG. In general, a processor as shown at 318 in FIG. 3 may include a processor bus or a bus as shown at 337 in FIG. 3a. Further, as shown in FIG. 3a, the processor may include
An
図4:図4は、仮想マシン内のゲストソフトウェアがゲスト仮想アドレスを参照するときのホスト−物理アドレスを最終的に計算すべく、先に導入された拡張ページテーブルを用いた処理の一例を示す。示された例は、単純な32ビット仮想アドレス指定、および、単純なページテーブルフォーマットを用いたx86プラットフォームにおいて動作するゲストソフトウェアを示す。当業者であれば、この例を、例えば、いろいろある中でも、他のページングモード(ゲストソストウェアにおける64ビットアドレス指定など)、他の命令セットアーキテクチャ(インテル・イタニウム(登録商標)アーキテクチャ、x86アーキテクチャの64ビットおよび他のバリエーション、パワーPC(登録商標)アーキテクチャ)、および、他の構成を理解すべく、容易に拡張することができるであろう。 FIG. 4: FIG. 4 shows an example of processing using the extended page table introduced earlier to finally calculate the host-physical address when the guest software in the virtual machine refers to the guest virtual address . The example shown shows guest software running on an x86 platform using simple 32-bit virtual addressing and a simple page table format. One skilled in the art will see examples of this in other paging modes (such as 64-bit addressing in guest software), other instruction set architectures (Intel Titanium® architecture, x86 architecture, among others). 64 bits and other variations, PowerPC® architecture), and other configurations could be easily extended to understand.
図4では、ゲスト仮想アドレス410への参照は、仮想マシンにおいて実行されるゲストソフトウェアにより実行される。ゲスト内でアクティブなメモリ管理機構(すなわちゲストオペレーションシステムにより構成された機構)は、仮想アドレスをゲスト−物理アドレスに翻訳するために用いられる。翻訳中に用いられる各ゲスト−物理アドレス、および、結果として生じたゲスト−物理アドレスは、ホスト−物理メモリにアクセスする前に、EPTを介しホスト−物理アドレスに翻訳される。
このプロセスは、以下に詳しく説明する。
In FIG. 4, reference to the guest virtual address 410 is performed by guest software executed in the virtual machine. A memory management mechanism active within the guest (ie, a mechanism configured by the guest operation system) is used to translate virtual addresses into guest-physical addresses. Each guest-physical address used during translation, and the resulting guest-physical address, is translated into a host-physical address via EPT before accessing the host-physical memory.
This process is described in detail below.
この例では、CR3レジスタ420における適切なビット402は、ゲスト−物理メモリにおけるゲストのページディレクトリテーブル460のベースを示す。この値402は、ゲスト仮想アドレス410から上のビットと組み合わされることにより、(この例ではテーブル内のエントリがそれぞれ4バイトなので、4で乗じることによるx86セマンティクスに従い適切に調整される)、ゲストのPDテーブル460内のページディレクトリエントリ(PDE)のゲスト−物理アドレス412を形成する。この値412は、EPTテーブル455を介し翻訳されてページディレクトリエントリのホスト−物理アドレス404を形成する。プロセッサは、このホスト−物理アドレス404を用いてページディレクトリエントリにアクセスする。
In this example, the
PDEからの情報は、ゲストのページテーブル470のベースアドレス422を含む。このゲスト−物理アドレス422は、ゲストのページテーブル470におけるページテーブルエントリのゲスト−物理アドレス432を形成するよう適切に調整されたゲスト仮想アドレス410のビット21:12と結合される。このゲスト−物理アドレス432は、EPTテーブル465を介し翻訳されることによりゲストのページテーブルエントリ(PTE)のホスト−物理アドレス414を形成する。
プロセッサは、このホスト−物理アドレス414を用いてPTEにアクセスする。
Information from the PDE includes the
The processor uses this host-
PTEからの情報は、アクセスされるゲスト−物理メモリ内のページのベースアドレス442を含む。この値は、ゲスト仮想アドレス410の下位ビット(11:0)と結合されることにより、アクセスされるメモリのゲスト−物理アドレス452を形成する。この値452は、EPTテーブル475を介し翻訳されることにより、アクセスされるメモリのホスト−物理アドレス424を形成する。
Information from the PTE includes the
ゲスト−物理アドレスをホスト−物理アドレスに翻訳するためにEPTテーブルが使用されるたびに、プロセッサは、以下に述べるようなEPTテーブルにおける制御に従いアクセスが許容されることを認証する。したがって、図4に明らかに示されているが、一実施形態においてEPTテーブル455、465および475は、EPTテーブルの同様のセットである(すなわち、EPTテーブルの単一のセットがゲスト−物理からホスト−物理へのすべてのアドレス翻訳に用いられる)と理解されたい。 Each time an EPT table is used to translate a guest-physical address to a host-physical address, the processor authenticates that access is allowed according to the controls in the EPT table as described below. Thus, although clearly shown in FIG. 4, in one embodiment, EPT tables 455, 465, and 475 are similar sets of EPT tables (ie, a single set of EPT tables is a guest-physical to host -Used to translate all addresses to physics).
プロセッサに基づくシステムにおける典型的な線形メモリサポートの実装では、ページテーブル構造に格納される線形アドレスから物理アドレスへのマッピングは、効率のために翻訳ルックアサイドバッファ(TLB)にキャッシュされる。TLBを管理し、かつ、プロセッサに基づくシステムで実行されるプログラムによりTLB内の特定のエントリがページテーブルエントリと確実に同期できるよう、命令は、プロセッサ命令セットに含まれてよい。したがって、例えば、x86アーキテクチャにおいて、MOV CR命令は、すべてのTLBエントリのグローバル無効を生じることもあるので、アドレスとしてのエントリの再同期がアクセスされる。一方、x86の例では、INVLPG命令を使用して、特定の線形アドレスのためのTLBに格納されたマッピングを無効化することにより、TLB内のエントリをアップデートさせ、ページテーブルにおけるマッピングと同期させてよい。 In a typical linear memory support implementation in a processor-based system, the linear to physical address mapping stored in the page table structure is cached in a translation lookaside buffer (TLB) for efficiency. Instructions may be included in the processor instruction set to manage the TLB and ensure that a particular entry in the TLB is synchronized with the page table entry by a program running on a processor-based system. Thus, for example, in the x86 architecture, the MOV CR instruction may result in global invalidation of all TLB entries, so the entry resynchronization as an address is accessed. On the other hand, in the x86 example, the INVLPG instruction is used to invalidate the mapping stored in the TLB for a specific linear address, thereby updating the entry in the TLB and synchronizing it with the mapping in the page table. Good.
一実施形態では、上述のような拡張ページングテーブル(EPT)を組み込む仮想化システムを含め、TLBは、ゲストマシンメモリで実行されるプロセスのためのホスト物理アドレス翻訳へのゲスト線形と、図3の323を参照して先に述べたようなホストマシンで直接実行されるVMMのなどのプロセスのためのホスト物理マッピングへのホスト線形とをキャッシュしてよい。前のケースでは、ホスト物理マッピングへのゲスト線形は、EPT同様、ゲスト内のページテーブルからも導出され得る。後のケースでは、マッピングは、ホストページテーブルから導出され得る。別のタイプのマッピング、すなわち、EPTに格納されたマッピングに基づき、ゲスト物理からホスト物理メモリへと直接導き出されるマッピングも、TLBに格納され得る。 In one embodiment, including a virtualization system that incorporates an extended paging table (EPT) as described above, the TLB is configured with guest alignment to host physical address translation for processes running in guest machine memory, and FIG. The host alignment to host physical mapping for a process such as a VMM running directly on the host machine as described above with reference to H.323 may be cached. In the previous case, the guest alignment to the host physical mapping can be derived from the page table in the guest as well as EPT. In later cases, the mapping may be derived from the host page table. Another type of mapping, that is, a mapping derived directly from guest physical to host physical memory based on the mapping stored in the EPT, can also be stored in the TLB.
一実施形態では、新たなコマンドがプロセッサ命令セットに付加される。この実施形態では、新たなコマンドINVL_EPTは、ゲスト−物理からホスト−物理マッピングへと導き出されるTLBエントリを管理する方法により、VMMなどの仮想化システムのホストマシンで直接実行されるプログラムを提供する。具体的には、この実施形態では、INVL_EPT命令は、TLBにおけるゲスト−物理からホスト−物理、および、ホスト物理マッピングへの線形が、ホストメモリに存在するEPTテーブルと同期することを保証し、同期の存続範囲、EPTコンテキスト、そして、該当する場合は、マッピングが同期化されるゲスト物理メモリアドレスを特定する。コンテキストは、一般的に言ってシステムのアドレス空間の一部を定義する。ゲスト−物理からホスト−物理へのマッピングでは、EPTコンテキストは、現在アクティブなEPTテーブルにより定義され、次に本実施形態ではEPTポインタまたはEPTPと呼ばれるレジスタにより参照される。 In one embodiment, a new command is added to the processor instruction set. In this embodiment, the new command INVL_EPT provides a program that is executed directly on the host machine of the virtualization system, such as a VMM, in a manner that manages TLB entries derived from guest-physical to host-physical mapping. Specifically, in this embodiment, the INVL_EPT instruction ensures that the linear from guest-physical to host-physical and host physical mapping in the TLB is synchronized with the EPT table residing in the host memory. , The EPT context, and, if applicable, the guest physical memory address to which the mapping is synchronized. A context generally defines a portion of the system's address space. In the guest-physical to host-physical mapping, the EPT context is defined by the currently active EPT table and is then referenced by a register called an EPT pointer or EPTP in this embodiment.
本実施形態において、INVL_EPT命令は、3つのオペランドを有する。第1のオペランドは、命令モードまたは異なる仕様の値であり、第2のオペランドは、INVL_EPT命令とは実行することであるEPTコンテキストに等しいEPTポインタを特定する値であり、第3のオペランドは、無効化されるTLBエントリに関連するゲスト物理アドレスを特定する値である。この実施形態では、第1のオペランドは、8ビットのイミディエート値として提供され、第2および第3のオペランドは、それぞれ64ビットを占有するメモリ内のブロックとして提供される。他の実施形態も可能である。
例えば、オペランドは、明示的または暗黙にレジスタまたは他のメモリ位置に設けられてよい。
In the present embodiment, the INVL_EPT instruction has three operands. The first operand is an instruction mode or a value with a different specification, the second operand is a value that identifies an EPT pointer equal to the EPT context that is to be executed with the INVL_EPT instruction, and the third operand is This value specifies the guest physical address associated with the TLB entry to be invalidated. In this embodiment, the first operand is provided as an 8-bit immediate value, and the second and third operands are each provided as a block in memory that occupies 64 bits. Other embodiments are possible.
For example, operands may be provided in registers or other memory locations, either explicitly or implicitly.
本実施形態における第1のオペランドは、少なくとも3つの定義された値を有するスイッチまたはフラグであり、したがって、INVL_EPT命令を特定することは、以下の3つの可能性のあるモードの1つを実行することになる。1.個別アドレスモード:このモードでは、上述の第2のオペランドに設けられたコンテキストにより参照されるEPT内のそのアドレスへのマッピングに基づき、単一のゲスト物理アドレスに関連するTLBにおける物理翻訳がEPTと同期する。2.コンテキストモード:このモードでは、ゲストアドレスパラメータ(前述の第3のオペランド)は無視され、前述の第2のオペランドにおいて特定されたEPT内のTLBのそれらのエントリがEPTと同期する。
3.グローバルモード:このモードでは、ゲストアドレスパラメータおよびEPTコンテキストパラメータのどちらも無視され、いずれかのEPTコンテキストから導出されたTLBエントリが同期化される。
The first operand in this embodiment is a switch or flag having at least three defined values, so identifying the INVL_EPT instruction performs one of the following three possible modes: It will be. 1. Individual address mode: In this mode, the physical translation in the TLB associated with a single guest physical address is based on the mapping to that address in the EPT referenced by the context provided in the second operand above. Synchronize. 2. Context mode: In this mode, the guest address parameter (the third operand described above) is ignored and those entries in the TLB in the EPT identified in the second operand are synchronized with the EPT.
3. Global mode: In this mode, both guest address parameters and EPT context parameters are ignored, and TLB entries derived from either EPT context are synchronized.
図5:図5のフローチャートは、一実施形態におけるINVL_EPT命令の実行を示す。
500から実行開始される。まず、プロセッサは、現在の実行環境がEPT関連動作に関し有効であることを確実にすべく、505において多数のテストを実行する。これらのテストは、とりわけ、システムがオペレーションの仮想化モードにあること、ページングが使用可能であること、現在エラー状態がないことを保証するテストを含んでよい。実行環境が有効でない場合、命令は、555および560を介し、未定義状態に出るか、一般的なプロテクションフォルトを生成するか、未定義オペコードフォルトを生成するかなどのいずれかを実行してよい。実行環境が有効な場合、本実施形態ではその後命令の実行は、510においてイミディエイト8ビットのオペランドを読み取る。SYNC_CMDと呼ばれるこのオペランドは、前述のようなINVL_EPT命令に対する有効モードを表わすとされている。515においてオペランドが有効でない場合、命令は前のように555および560に出る。オペランドが有効な場合、実行は次に進み、520においてメモリから第2および第3のオペランドを読み取り、そして前述したように、オペランドは、図中、INVLEPT_DESCと参照符号が付されたメモリ内の128ビットブロックにあるとされている。本実施形態における第1の64ビットは、EPTコンテキストまたはEPTテーブルポインタであり、525においてEPTP_CTXとして抽出される。次の64ビットは、530においてGP_ADDRとして抽出される命令に対するゲスト−物理アドレスパラメータである。
FIG. 5: The flowchart of FIG. 5 illustrates execution of an INVL_EPT instruction in one embodiment.
Execution starts from 500. First, the processor performs a number of tests at 505 to ensure that the current execution environment is valid for EPT related operations. These tests may include, among other things, tests that ensure that the system is in a virtualized mode of operation, paging is enabled, and that there are currently no error conditions. If the execution environment is not valid, the instruction may either go through an undefined state, generate a general protection fault, generate an undefined opcode fault, etc. via 555 and 560 . If the execution environment is valid, then in this embodiment, subsequent execution of the instruction reads an immediate 8-bit operand at 510. This operand, called SYNC_CMD, is said to represent a valid mode for the INVL_EPT instruction as described above. If the operand is not valid at 515, the instruction exits to 555 and 560 as before. If the operand is valid, execution proceeds to read the second and third operands from memory at 520, and as described above, the operand is 128 in the memory labeled INVLEPT_DESC in the figure. It is supposed to be in a bit block. The first 64 bits in this embodiment are an EPT context or an EPT table pointer, and are extracted as EPTP_CTX at 525. The next 64 bits are the guest-physical address parameter for the instruction extracted at 530 as GP_ADDR.
そして命令の実行は、実行フローの535から580に示されるSYNC_CMDオペランドの値に基づく実際の同期化を実行することに進む。前述のように、SYNC_CMDは、すべてのEPTコンテキストに基づくTLBのグローバル同期化を実行することの指示、または、命令のオペランドにより特定されるEPTコンテキストのみの同期化を実行することの指示、あるいは、最終的に、パラメータとして提供されるEPTコンテキスト内のパラメータとして渡されたゲスト−物理アドレスのみの同期化を実行することの指示のいずれかであってよい。この実施形態では、図5の実行フローに示されるように、SYNC_CMD値が存在することのチェックは、535、第2段階540、第3段階545で行われる。535において、SYNC_CMDの値がグローバル同期を示す場合、命令は、すべてのEPTコンテキストのためのすべての物理マッピングを同期することを実行し、実行は、580で完了する。一方、SYNC_CMDが540においてコンテキスト特定同期を示す場合、実行は、提供されるEPTP_CTX値が有効であるかどうかのチェックに進む。例えば、予約ビットが値にセットされているか、または、EPTPにおけるアドレスが無効であるという理由で有効でない場合、命令の実行は555および560の一般的プロテクションフォルトにより終了する。提供されるコンテキストが有効である場合、実行は、575におけるEPTP_CTXにより参照されるEPTコンテキストのためのすべての物理マッピングを継続して同期化し、580で終了する。
Execution of the instruction then proceeds to perform the actual synchronization based on the value of the SYNC_CMD operand shown at 535 to 580 of the execution flow. As mentioned above, SYNC_CMD is an indication to perform global synchronization of the TLB based on all EPT contexts, or an indication to perform only synchronization of the EPT context specified by the operand of the instruction, or Finally, it may be either an indication to perform synchronization of only the guest-physical address passed as a parameter in the EPT context provided as a parameter. In this embodiment, as shown in the execution flow of FIG. 5, the presence of a SYNC_CMD value is checked at 535, the
SYNC_CMDがグローバルでもコンテキストワイド同期でもなく、有効なオペレーションモードである場合、本実施形態における唯一の残る可能性は、特定のゲスト物理アドレスを同期化するコマンドにある。実行は、545で提供されるGP_ADDRパラメータが有効であるかどうかをチェックする。無効なアドレスが提供されている場合、実行は、一般的なプロテクションフォルトにより555および560を出る。一方、提供されたゲスト物理アドレスGP_ADDRに関連するすべての物理マッピングは、550においてEPTP_CTX内に設けられたコンテキストにより参照されるEPTと同期し、580で実行は終了する。 If SYNC_CMD is not global or context-wide synchronization and is a valid mode of operation, the only remaining possibility in this embodiment is in the command to synchronize a specific guest physical address. Execution checks whether the GP_ADDR parameter provided at 545 is valid. If an invalid address is provided, execution exits 555 and 560 due to a general protection fault. On the other hand, all physical mappings associated with the provided guest physical address GP_ADDR synchronize with the EPT referenced by the context provided in EPTP_CTX at 550 and execution ends at 580.
前述した実施形態が広範囲に変更され得ることは、当業者にとり明らかであろう。いくつかの実施形態では、INVL_EPTと等しいコマンドが利用可能であるが、中でも名前、番号、フォーマット、パラメータの大きさを含む異なるシンタックスを有することもある。周知のように、異なる命令セットアーキテクチャ(ISA)が存在し、同様のコマンドが、異なるISAに、フォーマット、および、そのISAと一致する他の特性と共に提供される。一実施形態では、インテル(登録商標)イタニウムアーキテクチャに基づくプロセッサのための無効化、および/または、TLBとEPTとの同期化のための命令は、一当業者により上記設けられた実施形態の記載に基づき、直ちに仮想化され、記述される。他のいかなるISAのための複数の命令としてでもよい。 It will be apparent to those skilled in the art that the embodiments described above can be varied widely. In some embodiments, a command equal to INVL_EPT is available, but may have a different syntax including, among other things, name, number, format, and parameter size. As is well known, there are different instruction set architectures (ISAs), and similar commands are provided to different ISAs along with the format and other characteristics consistent with that ISA. In one embodiment, instructions for disabling and / or synchronizing TLB and EPT for a processor based on the Intel® Titanium architecture are provided by one of ordinary skill in the art of the embodiment provided above. Based on the description, it is immediately virtualized and described. It may be multiple instructions for any other ISA.
先に参照された実施形態におけるEPTコンテキストに関する説明は、限定としてとられるべきでない。他の実施形態では、EPTの1つの例だけであってもよいし、または、前述のEPTPに類似する参照レジスタまたはポインタなどの参照機構と共に、x86の例で説明されたようにいくつかの例が動作可能であってもよい。 The description of the EPT context in the previously referenced embodiments should not be taken as a limitation. In other embodiments, there may be only one example of EPT, or some examples as described in the x86 example, with reference mechanisms such as reference registers or pointers similar to the aforementioned EPTP. May be operable.
他の実施形態では、パラメータの数およびフォーマットは、変更できる。例えば、前述の実施形態では、INVL_EPT命令は、1つのイミディエイトおよび2つのメモリベースのオペランドを有する。他の実施形態では、より多くのイミディエイトオペランドが用いられてよく、他の実施形態では、すべてのオペランドが、メモリベースであってよく、さらに他の実施形態では、オペランドは、周知のその他たくさんのバリエーションの中でも、プロセッサ内のレジスタまたは他の記憶装置から読み出されてよい。 In other embodiments, the number and format of the parameters can be changed. For example, in the previous embodiment, the INVL_EPT instruction has one immediate and two memory-based operands. In other embodiments, more immediate operands may be used, in other embodiments, all operands may be memory-based, and in yet other embodiments, the operands may be a number of other known Among variations, it may be read from a register in the processor or other storage device.
前述の実施形態は、INVL_EPT命令に対する3つの動作モードに関して記載されている。他の実施形態では、3つのモードのいくつかまたはすべてが抜けていてもよい。また、他の実施形態では、より多くのモードが利用可能であってもよい。例えば、いくつかの実施形態では、個別アドレス無効モードはなくてもよく、そのようなモードでは、すべてのTLBエントリが同期している。いくつかの実施形態では、システムにおいて動作するEPTの1つの例だけしかなくてもよく、このような実施形態では、コンテキストモードは、必要ないであろう。あるいは、いくつかの実施形態では、個別アドレス同期のみが有効であるか、または、他の実施形態では、グローバルアドレス同期のみを用いて、INVL_EPTに関して述べられた第1のオペランドを不要としてもよい。 The foregoing embodiment has been described with respect to three modes of operation for the INVL_EPT instruction. In other embodiments, some or all of the three modes may be missing. In other embodiments, more modes may be available. For example, in some embodiments there may not be an individual address invalid mode, in which all TLB entries are synchronized. In some embodiments, there may be only one example of an EPT operating in the system, and in such embodiments, context mode may not be necessary. Alternatively, in some embodiments, only individual address synchronization may be valid, or in other embodiments, only global address synchronization may be used and the first operand described for INVL_EPT may be unnecessary.
命令およびその動作におけるこれらの変更は可能であるが、中でも、INVL_EPT命令の一般的効果が他の命令の組み合わせにより得られる場合の変更を含む、他の多くの変更も当業者であればたやすく想定できるであろう。 While these changes in the instruction and its operation are possible, many other changes are readily apparent to those skilled in the art, including changes where the general effect of the INVL_EPT instruction is obtained by a combination of other instructions. It can be assumed.
先の説明においては、記載された実施形態の完全なる理解をもたらすべく、数多くの具体的な詳細が記載されているが、これら具体的な詳細の記載なしに多くの他の実施形態を実行できることは当業者にとり明らかであろう。 In the preceding description, numerous specific details are set forth in order to provide a thorough understanding of the described embodiments, although many other embodiments can be practiced without the specific details being set forth. Will be apparent to those skilled in the art.
先の具体的な説明のいくつかの部分は、プロセッサに基づくシステム内のデータビットにおけるアルゴリズム、および、動作の象徴の観点から示されている。これらのアルゴリズム的記述および表現は、それらの作用の実体を他業者に最も効果的に伝える目的で、当業者が手段として用いている。動作は、物理量のそれらが要求している物理的操作である。これらの量は、電気、磁気、光学、または、格納、転送、結合、比較、さもなければ操作されることができる他の物理的信号であってよい。
これらの信号をビット,値,要素,符号,文字,用語,数字等と呼ぶことは、主として一般的な用法という理由からその時々で便利であることがわかっている。
Some portions of the foregoing specific description are presented in terms of algorithms and data symbols in a data bit in a processor-based system. These algorithmic descriptions and representations are used by those skilled in the art as a means to most effectively convey the substance of their action to others. An action is the physical operation that they require of a physical quantity. These quantities may be electrical, magnetic, optical, or other physical signals that can be stored, transferred, combined, compared, or otherwise manipulated.
It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
しかしながら、これらおよび同様の用語のすべては、適切な物理量に関連するものであり、それらの量に適用される便利なラベルにすぎないことは覚えておくべきである。特に説明しない限り、「実行」、「処理」、「計算」、「算出」、または、「決定」などの用語は、プロセッサに基づくシステム、あるいは、プロセッサに基づくシステムの記憶装置内の物理量として表わされたデータを操作し、かつ、同様に表わされた他のデータに変換する同様の電子計算機、または、他のそのような情報記憶、伝送またはディスプレイデバイスの動作およびプロセスに関連してよい。 It should be borne in mind, however, that all of these and similar terms are associated with the appropriate physical quantities and are merely convenient labels applied to those quantities. Unless otherwise stated, terms such as “execution”, “processing”, “calculation”, “calculation”, or “decision” are expressed as physical quantities in a processor-based system or in a storage device of a processor-based system. May be related to the operation and process of a similar electronic computer or other such information storage, transmission or display device that manipulates and converts the transferred data to other similarly represented data .
実施形態の説明において、添付の図面を参照することができる。図面において、同様の数字は、いくつかの図面全体にわたる実質的に同様の構成要素を説明する。他の実施形態も利用可能であり、構造的、論理的、電気的変更もなされてよい。さらに、多くの実施形態に相違点があっても必ずしも互いを排除するわけではないと理解されたい。例えば、一実施形態に記載された特定の特徴、構造、または、特性が他の実施形態内に含まれてもよい。 In the description of the embodiments, reference may be made to the accompanying drawings. In the drawings, like numerals describe substantially similar components throughout the several views. Other embodiments may be utilized and structural, logical, and electrical changes may be made. Further, it should be understood that differences in many embodiments do not necessarily exclude each other. For example, certain features, structures, or characteristics described in one embodiment may be included in other embodiments.
さらに、プロセッサに実装される一実施形態の設計は、作成からシミュレーション、製造まで様々な段階を経てよい。設計を表わすデータは、多くのやり方で設計を表わしてよい。まず、シミュレーションに役立つように、ハードウェア記述言語または他の関数的記述言語を用いてハードウェアが表わされてよい。次に、設計プロセスのいくつかの段階で論理および/またはトランジスタゲートによる回路レベルモデルが生成されてよい。さらに、ほとんどの設計がいくつかの段階でハードウェアモデルにおける様々なデバイスの物理的配置を表わすデータレベルに達してよい。従来の半導体製造技術が用いられる場合、ハードウェアモデルを表わすデータは、集積回路を生成するために使用されるマスクの異なるマスク層における様々な特徴の有無を特定するデータであってよい。設計の任意の表現では、データは、いかなる形式の機械可読媒体に格納されてもよい。機械可読媒体は、そのような情報を伝送すべく変調されるか、さもなくば生成される光または電波、メモリ、あるいは、ディスクのような磁気または光記憶装置であってよい。これらの媒体のいずれも、設計またはソフトウェア情報を「有する」または「示す」ことができる。コードまたは設計を示すかあるいは有する電気キャリアが伝送されると、電気信号のコピー、バッファリング、または、再送が実行される範囲で新たなコピーがなされる。したがって、通信プロバイダまたはネットワークプロバイダは、一実施形態を構成するかまたは表わす物品(キャリア)のコピーを作成できる。 Furthermore, the design of one embodiment implemented on a processor may go through various stages from creation to simulation to manufacturing. The data representing the design may represent the design in many ways. First, the hardware may be represented using a hardware description language or other functional description language to aid in simulation. A circuit level model with logic and / or transistor gates may then be generated at some stages of the design process. In addition, most designs may reach a data level that represents the physical placement of various devices in the hardware model at several stages. When conventional semiconductor manufacturing techniques are used, the data representing the hardware model may be data identifying the presence or absence of various features in different mask layers of the mask used to generate the integrated circuit. In any representation of the design, the data may be stored on any form of machine-readable medium. A machine-readable medium may be a light or radio wave that is modulated or otherwise generated to transmit such information, a memory, or a magnetic or optical storage device such as a disk. Any of these media can “have” or “show” design or software information. When an electrical carrier indicating or having a code or design is transmitted, a new copy is made to the extent that copying, buffering, or retransmission of the electrical signal is performed. Accordingly, a communications provider or network provider can make a copy of an article (carrier) that constitutes or represents an embodiment.
複数の実施形態は、マシンにアクセスされたとき、請求項に記載の内容に従うプロセスをマシンに実行させることができるデータを格納した機械可読媒体を含み得るプログラム製品として提供されてよい。機械可読媒体は、これに限定されないが、フロッピーディスケット、光ディスク、DVD−ROMディスク、DVD−RAMディスク、DVD−RWディスク、DVD+RWディスク、CD−Rディスク、CD−RWディスク、CD−ROMディスク、光磁気ディスク、ROM、RAM、EPROM、EEPROM、磁気または光カード、フラッシュメモリ、あるいは、電子命令を格納するのに適した他のタイプの媒体/機械可読媒体を含んでよい。さらに、複数の実施形態は、プログラム製品としてダウンロードされてよく、プログラムは、キャリアまたは他の伝搬媒質に含まれるデータ信号により、リモート・データ・ソースから要求しているデバイスへと通信リンク(モデムまたはネットワーク接続など)を介し転送されてよい。 Embodiments may be provided as a program product that may include a machine-readable medium having stored thereon data that, when accessed by a machine, causes the machine to perform a process in accordance with the claimed subject matter. Machine-readable media include, but are not limited to, floppy diskettes, optical disks, DVD-ROM disks, DVD-RAM disks, DVD-RW disks, DVD + RW disks, CD-R disks, CD-RW disks, CD-ROM disks, optical It may include magnetic disks, ROM, RAM, EPROM, EEPROM, magnetic or optical cards, flash memory, or other types of media / machine-readable media suitable for storing electronic instructions. In addition, embodiments may be downloaded as a program product, which is a communication link (modem or modem) from a remote data source to a requesting device by means of data signals contained in a carrier or other propagation medium. For example via a network connection).
多くの方法は、最も基本的な形式で記載されているが、請求項に記載された内容の基本的な範囲を逸脱せずに、いずれの方法に/から段階を加えても/削除してもよく、記載された内容のいずれに/から情報を付加しても/抜き取ることもできる。さらに多くの修正および改作がなされてもよいことは、当業者にとって明らかであろう。特定の実施形態は、請求項に記載された内容を制限するものではなく、例示に過ぎない。請求項に記載された内容の範囲は、上述の詳細な説明ではなく、添付の請求項によってのみ決定される。本発明の例を項目として以下に記載する。
[項目1]
仮想化に基づくシステムのプロセッサであって、
プロセッサバスと、
ゲストアドレスからホスト物理アドレスまでのマッピングを含む翻訳ルックアサイドバッファ(TLB)を格納するバッファと、
命令を受信し、かつ、オペランドを受信するフェッチロジックと、
命令をデコードするデコードロジックと、
命令のデコードに少なくとも一部応答し、バッファに格納されたゲストアドレスからホスト物理アドレスまでのマッピングと、拡張ページングテーブル(EPT)に少なくとも一部格納された、ゲスト物理アドレスに対応するホスト物理アドレスの翻訳を含む、対応するマッピングとの同期を実行する論理回路と、
を含み、
同期は、命令のオペランドに少なくとも一部さらに基づき、オペランドは、コンテキストディスクリプタおよびEPTポインタの少なくとも1つをさらに備える、
プロセッサ。
[項目2]
論理回路は、複数のマイクロコード命令に少なくとも一部基づき動作する論理回路を含む、項目1に記載のプロセッサ。
[項目3]
EPTは、プロセッサにバスにより結合されたメモリに少なくとも一部格納される、項目1または項目2に記載のプロセッサ。
[項目4]
論理回路は、命令のオペランドから導かれるコンテキストディスクリプタに少なくとも一部基づき、EPTからマッピングをさらに選択する、項目1から項目3のいずれか1つに記載のプロセッサ。
[項目5]
論理回路は、コンテキストディスクリプタから導かれるEPTポインタに少なくとも一部基づき、EPTからマッピングをさらに選択する、項目4に記載のプロセッサ。
[項目6]
論理回路は、命令のオペランドに少なくとも一部基づき、ゲストアドレスをさらに選択する、項目1から項目5のいずれか1つに記載のプロセッサ。
[項目7]
マッピングの同期は、EPTに格納されたマッピングに少なくとも一部基づきTLBに格納されたマッピングをアップデートすることをさらに含み、
対応するマッピングは、TLBに格納されたマッピングと同じゲストアドレスをもつEPTに格納されたマッピングをさらに含む、
項目1から項目6のいずれか1つに記載のプロセッサ。
[項目8]
マッピングの同期は、TLBに格納されたマッピングをフラッシングすることをさらに含む、項目1から項目7のいずれか1つに記載のプロセッサ。
[項目9]
論理回路は、命令のオペランドに少なくとも一部基づき命令の実行モードをさらに選択する、項目1から項目8のいずれか1つに記載のプロセッサ。
[項目10]
フェッチロジックは、命令の第1のオペランドと、命令の第2のオペランドと、命令の第3のオペランドとをさらに受信し、
論理回路は、さらに、
命令の第1のオペランドから導かれたコンテキストディスクリプタに基づき、EPTに少なくとも一部格納されたマッピングを選択し、
命令の第2のオペランドに少なくとも一部基づきゲストアドレスを選択し、
命令の第3のオペランドに少なくとも一部基づき命令の実行モードを選択し、
命令の実行モードは、
TLBに格納されたゲストアドレスに関連する単一のマッピングのみがEPT内の対応するマッピングと同期する第1のモード、
TLBに格納され、かつ、コンテキストディスクリプタから導かれたEPTコンテキストと関連するすべてのマッピングがEPT内の対応するマッピングと同期する第2のモード、および、
いずれかのEPTコンテキストと関連するTLBに格納されたすべてのマッピングがEPT内の対応するマッピングと同期する第3のモード、
の1つである、項目1から項目9のいずれか1つに記載のプロセッサ。
[項目11]
ゲストアドレスは、ゲスト物理アドレスをさらに含む、項目1から項目10のいずれか1つに記載のプロセッサ。
[項目12]
ゲストアドレスは、ゲスト線形アドレスをさらに含む、項目1から項目11のいずれか1つに記載のプロセッサ。
[項目13]
ホストおよびゲストを含む仮想化に基づくシステムにおいて、
翻訳ルックアサイドバッファ(TLB)に少なくとも一部格納されたホスト物理アドレスへのゲストアドレスの翻訳を含むマッピングと、仮想化に基づくシステムの拡張ページングテーブル(EPT)であってゲスト物理アドレスに対応するホスト物理アドレスの翻訳を含むEPTに少なくとも一部格納された対応するマッピングとを同期させることと、
命令のオペランドに少なくとも一部基づきEPTに少なくとも一部格納されたマッピングを選択することと、
を含み、オペランドは、コンテキストディスクリプタおよびEPTポインタの少なくとも1つを含む方法。
[項目14]
命令のオペランドから導かれるコンテキストディスクリプタに一部基づき、EPTからマッピングを選択することをさらに含む、項目13に記載の方法。
[項目15]
コンテキストディスクリプタから導かれるEPTポインタに一部基づき、EPTに少なくとも一部格納されるマッピングを選択することをさらに含む、項目14に記載の方法。
[項目16]
命令のオペランドに少なくとも一部基づき、ゲストアドレスを選択することをさらに含む、項目13から項目15のいずれか1つに記載の方法。
[項目17]
マッピングを同期することは、EPTに格納されたマッピングに少なくとも一部基づきTLBに格納されたマッピングをアップデートすることをさらに含み、
対応するマッピングは、TLBに格納されたマッピングと同じゲストアドレスを有するEPTに格納されたマッピングをさらに含む、
項目13から項目16のいずれか1つに記載された方法。
[項目18]
マッピングを同期することは、TLBから格納されたマッピングをフラッシングすることをさらに含む、項目13から項目17のいずれか1つに記載の方法。
[項目19]
命令のオペランドに少なくとも一部基づき、命令の実行モードを選択することをさらに含む、項目13から項目18のいずれか1つに記載の方法。
[項目20]
命令の第1のオペランドから導かれるコンテキストディスクリプタに基づき、EPTに少なくとも一部格納されたマッピングを選択することと、
命令の第2のオペランドに少なくとも一部基づき、ゲストアドレスを選択することと、
命令の第3のオペランドに少なくとも一部基づき、命令の実行モードを選択することと、
を含み、
命令の実行モードは、
TLB内に格納され、かつ、ゲストアドレスに関連する単一のマッピングのみがEPT内の対応するマッピングと同期する第1のモード、
TLBに格納され、かつ、コンテキストディスクリプタから導かれるEPTコンテキストに関連するすべてのマッピングがEPT内の対応するマッピングと同期する第2のモード、および、
いずれかのEPTコンテキストに関連するTLBに格納されたすべてのマッピングがEPT内の対応するマッピングと同期する第3のモード、
の1つである、
項目13から項目19のいずれか1つに記載の方法。
[項目21]
ゲストアドレスは、ゲスト物理アドレスをさらに含む、項目13から項目20のいずれか1つに記載の方法。
[項目22]
ゲストアドレスは、ゲスト線形アドレスをさらに含む、項目13から項目21のいずれか1つに記載の方法。
[項目23]
仮想化に基づくシステムであって、
プロセッサと、
プロセッサにバスにより接続されるメモリと、
命令を実行するプロセッサの論理回路であって、命令は、
翻訳ルックアサイドバッファ(TLB)に少なくとも格納されたホスト物理アドレスへのゲストアドレスの翻訳を含むマッピングを、仮想化に基づくシステムの拡張ページングテーブル(EPT)であって、ゲスト物理アドレスに対応するホスト物理アドレスの翻訳を含むEPTに少なくとも一部格納された対応するマッピングと同期させることと、
命令のオペランドに少なくとも一部基づくEPT内に少なくとも一部格納されたマッピングを選択することと、を実行し、
オペランドは、コンテキストディスクリプタおよびEPTポインタの少なくとも1つを含む、
仮想化に基づくシステム。
[項目24]
プロセッサは、さらに、
命令のオペランドから導かれるコンテキストディスクリプタに一部基づき、EPTからマッピングを選択する、
項目23に記載のシステム。
[項目25]
プロセッサは、さらに、
コンテキストディスクリプタから導かれるEPTポインタに一部基づき、該EPTに少なくとも一部格納されるマッピングを選択する、
項目24に記載のシステム。
[項目26]
プロセッサは、さらに、
命令のオペランドに少なくとも一部基づき、ゲストアドレスを選択する、項目23から項目25のいずれか1つに記載のシステム。
[項目27]
論理回路は、さらに、EPT内に格納されたマッピングに少なくとも一部基づき、TLBに格納されたマッピングと、TLBに格納されたマッピングと同じゲストアドレスをもつEPTに格納されたマッピングをさらに含む対応するマッピングとを同期させる、項目23から項目26のいずれか1つに記載のシステム。
[項目28]
論理回路は、さらに、TLBから格納されたマッピングをフラッシングする、項目27に記載のシステム。
[項目29]
論理回路は、命令のオペランドに少なくとも一部基づき、命令の実行モードを選択する、項目23から項目28のいずれか1つに記載のシステム。
[項目30]
論理回路は、さらに、命令の第1のオペランドから導かれるコンテキストディスクリプタに基づき、EPT内に少なくとも一部格納されたマッピングを選択し、
命令の第2のオペランドに少なくとも一部基づき、ゲストアドレスを選択し、
命令の第3のオペランドに少なくとも一部基づき、命令の実行モードを選択し、
命令の実行モードは、
TLBに格納され、ゲストアドレスに関連する単一のマッピングのみがEPT内の対応するマッピングと同期する第1のモード、
TLBに格納され、コンテキストディスクリプタから導かれるEPTコンテキストに関連するすべてのマッピングがEPT内の対応するマッピングと同期する第2のモード、および、
いずれかのEPTコンテキストと関連するTLBに格納されたすべてのマッピングがEPT内の対応するマッピングと同期する第3のモード、
の1つである、項目23から項目29のいずれか1つに記載のシステム。
[項目31]
ゲストアドレスは、ゲスト物理アドレスをさらに含む、項目23から項目30のいずれか1つに記載のシステム。
[項目32]
ゲストアドレスは、ゲスト線形アドレスをさらに含む、項目23から項目31のいずれか1つに記載のシステム。
[項目33]
メモリは、ダイナミックランダムアクセスメモリ(DRAM)をさらに含む、項目23から項目32のいずれか1つに記載のシステム。
Many methods are described in their most basic form, but any method may be added / removed to / from any method without departing from the basic scope of the claimed subject matter. It is also possible to add / extract information to / from any of the described contents. It will be apparent to those skilled in the art that many more modifications and adaptations may be made. The specific embodiments are merely illustrative, not limiting of what is recited in the claims. The scope of the claims is determined by the appended claims only, not by the above detailed description. Examples of the present invention are described below as items.
[Item 1]
A processor of a system based on virtualization,
A processor bus;
A buffer for storing a translation lookaside buffer (TLB) including a mapping from a guest address to a host physical address;
Fetch logic for receiving instructions and receiving operands;
Decode logic to decode instructions;
Respond at least in part to instruction decoding, mapping from guest address to host physical address stored in the buffer, and host physical address corresponding to the guest physical address stored at least in part in the extended paging table (EPT) A logic circuit that performs the synchronization with the corresponding mapping, including the translation;
Including
The synchronization is further based at least in part on an operand of the instruction, the operand further comprising at least one of a context descriptor and an EPT pointer.
Processor.
[Item 2]
The processor of
[Item 3]
[Item 4]
[Item 5]
Item 5. The processor of
[Item 6]
Item 6. The processor according to any one of
[Item 7]
Mapping synchronization further includes updating the mapping stored in the TLB based at least in part on the mapping stored in the EPT;
The corresponding mapping further includes a mapping stored in the EPT having the same guest address as the mapping stored in the TLB,
Item 7. The processor according to any one of
[Item 8]
8. The processor of any one of
[Item 9]
Item 9. The processor according to any one of
[Item 10]
The fetch logic further receives a first operand of the instruction, a second operand of the instruction, and a third operand of the instruction;
The logic circuit further
Selecting a mapping at least partially stored in the EPT based on the context descriptor derived from the first operand of the instruction;
Selecting a guest address based at least in part on the second operand of the instruction;
Selecting an instruction execution mode based at least in part on the third operand of the instruction;
Instruction execution mode is
A first mode in which only a single mapping associated with a guest address stored in the TLB is synchronized with the corresponding mapping in the EPT;
A second mode in which all mappings associated with the EPT context stored in the TLB and derived from the context descriptor are synchronized with the corresponding mapping in the EPT; and
A third mode in which all mappings stored in the TLB associated with any EPT context are synchronized with the corresponding mapping in the EPT;
10. The processor according to any one of
[Item 11]
Item 11. The processor according to any one of
[Item 12]
[Item 13]
In a virtualization-based system that includes hosts and guests,
A mapping that includes the translation of a guest address to a host physical address that is at least partially stored in a translation lookaside buffer (TLB), and a virtualization-based system extended paging table (EPT) that corresponds to the guest physical address Synchronizing the corresponding mapping at least partially stored in the EPT that includes the translation of the physical address;
Selecting a mapping stored at least in part in the EPT based at least in part on operands of the instruction;
And the operand includes at least one of a context descriptor and an EPT pointer.
[Item 14]
14. The method of item 13, further comprising selecting a mapping from the EPT based in part on a context descriptor derived from an operand of the instruction.
[Item 15]
15. The method of item 14, further comprising selecting a mapping that is at least partially stored in the EPT based in part on an EPT pointer derived from the context descriptor.
[Item 16]
16. The method of any one of items 13 to 15, further comprising selecting a guest address based at least in part on an operand of the instruction.
[Item 17]
Synchronizing the mapping further includes updating the mapping stored in the TLB based at least in part on the mapping stored in the EPT;
The corresponding mapping further includes a mapping stored in the EPT having the same guest address as the mapping stored in the TLB,
The method according to any one of items 13 to 16.
[Item 18]
18. The method of any one of items 13 to 17, wherein synchronizing the mapping further comprises flushing a mapping stored from the TLB.
[Item 19]
19. The method of any one of items 13 to 18, further comprising selecting an instruction execution mode based at least in part on an operand of the instruction.
[Item 20]
Selecting a mapping at least partially stored in the EPT based on a context descriptor derived from the first operand of the instruction;
Selecting a guest address based at least in part on the second operand of the instruction;
Selecting an instruction execution mode based at least in part on a third operand of the instruction;
Including
Instruction execution mode is
A first mode in which only a single mapping stored in the TLB and associated with the guest address is synchronized with the corresponding mapping in the EPT;
A second mode in which all mappings associated with the EPT context stored in the TLB and derived from the context descriptor are synchronized with the corresponding mapping in the EPT; and
A third mode in which all mappings stored in the TLB associated with any EPT context are synchronized with the corresponding mapping in the EPT;
One of the
20. The method according to any one of items 13 to 19.
[Item 21]
Item 21. The method according to any one of Items 13 to 20, wherein the guest address further includes a guest physical address.
[Item 22]
The method of any one of items 13 to 21, wherein the guest address further comprises a guest linear address.
[Item 23]
A system based on virtualization,
A processor;
A memory connected to the processor by a bus;
A logic circuit of a processor that executes an instruction, wherein the instruction is
The mapping including the translation of the guest address to the host physical address stored at least in the translation lookaside buffer (TLB) is an extended paging table (EPT) of the system based on virtualization, and the host physical corresponding to the guest physical address Synchronizing with a corresponding mapping stored at least in part in an EPT containing the translation of the address;
Selecting a mapping at least partially stored in an EPT based at least in part on operands of the instruction;
The operand includes at least one of a context descriptor and an EPT pointer.
A system based on virtualization.
[Item 24]
The processor further
Select a mapping from the EPT based in part on the context descriptor derived from the operand of the instruction;
24. The system according to item 23.
[Item 25]
The processor further
Selecting a mapping stored at least in part in the EPT based in part on the EPT pointer derived from the context descriptor;
25. The system according to item 24.
[Item 26]
The processor further
26. A system according to any one of items 23 to 25, wherein a guest address is selected based at least in part on an operand of an instruction.
[Item 27]
The logic circuit further includes a mapping stored in the TLB and a mapping stored in the EPT having the same guest address as the mapping stored in the TLB based at least in part on the mapping stored in the EPT. 27. A system according to any one of items 23 to 26, wherein the system synchronizes with the mapping.
[Item 28]
28. The system of item 27, wherein the logic circuit further flushes the stored mapping from the TLB.
[Item 29]
29. A system according to any one of items 23 to 28, wherein the logic circuit selects an execution mode of the instruction based at least in part on an operand of the instruction.
[Item 30]
The logic circuit further selects a mapping at least partially stored in the EPT based on the context descriptor derived from the first operand of the instruction;
Selecting a guest address based at least in part on the second operand of the instruction;
Selecting an instruction execution mode based at least in part on the third operand of the instruction;
Instruction execution mode is
A first mode in which only a single mapping associated with a guest address stored in the TLB is synchronized with the corresponding mapping in the EPT;
A second mode in which all mappings associated with the EPT context stored in the TLB and derived from the context descriptor are synchronized with the corresponding mapping in the EPT; and
A third mode in which all mappings stored in the TLB associated with any EPT context are synchronized with the corresponding mapping in the EPT;
30. The system according to any one of items 23 to 29, which is one of the following.
[Item 31]
The system according to any one of items 23 to 30, wherein the guest address further includes a guest physical address.
[Item 32]
32. The system of any one of items 23 to 31, wherein the guest address further includes a guest linear address.
[Item 33]
33. A system according to any one of items 23 to 32, wherein the memory further comprises dynamic random access memory (DRAM).
Claims (34)
デコードされた前記命令に応答して、1以上のTLBエントリをEPTからの1つ以上の対応するマッピングに同期させる実行ロジックと、を備える
プロセッサ。 Decode logic for decoding an instruction specifying an instruction mode and either a context descriptor or an extended page table pointer (EPT pointer);
Execution logic that synchronizes one or more TLB entries with one or more corresponding mappings from the EPT in response to the decoded instruction.
請求項1に記載のプロセッサ。 The processor of claim 1, wherein the instructions specify a guest address of a virtualization-based system that is synchronized in a first instruction mode.
請求項2に記載のプロセッサ。 The instructions are synchronized in the first instruction mode based on one or more corresponding mappings of guest physical addresses from the EPT referenced by either the context descriptor or the EPT pointer. The processor according to claim 2.
請求項1から3のいずれか1項に記載のプロセッサ。 4. The processor according to claim 1, wherein the corresponding mapping from the EPT is used to synchronize one or more TLB translations of a guest address with a corresponding host physical address of a virtualization based system.
請求項1から4のいずれか1項に記載のプロセッサ。 The processor of any one of claims 1-4, wherein the execution logic is responsive to the decoded instruction based at least in part on a microcode instruction.
請求項1から5のいずれか1項に記載のプロセッサ。 6. In a second instruction mode, the one or more TLB entries are synchronized based on one or more corresponding mappings from the EPT referenced by either the context descriptor or the EPT pointer. The processor according to any one of the above.
請求項6に記載のプロセッサ。 7. In the second instruction mode, the one or more TLB entries are synchronized based on any corresponding mapping from the EPT referenced by either the context descriptor or the EPT pointer. The processor described.
請求項1から7のいずれか1項に記載のプロセッサ。 The processor according to any one of claims 1 to 7, wherein in the third instruction mode, the one or more TLB entries are synchronized based on any corresponding mapping from the EPT.
請求項1から8のいずれか1項に記載のプロセッサ。 The processor according to any one of claims 1 to 8, wherein the execution logic flushes the one or more TLB entries in response to the decoded instruction.
個別アドレスを同期する第1命令モード、
EPTコンテキストに対応して前記TLBエントリを同期する第2命令モード、および
いずれかのEPTコンテキストから導出される前記TLBエントリを同期する第3命令モードのいずれか1つである
請求項1から9のいずれか1項に記載のプロセッサ。 The instruction mode specified by the instruction is:
A first instruction mode for synchronizing individual addresses;
The second instruction mode for synchronizing the TLB entry corresponding to an EPT context, and the third instruction mode for synchronizing the TLB entry derived from any EPT context. The processor according to any one of the above.
デコードされた前記命令に応答して、1以上のTLBエントリをEPTからの1つ以上の対応するマッピングに同期させることとを含む
方法。 Decoding an instruction specifying an instruction mode and either a context descriptor and an extended page table pointer (EPT pointer);
Synchronizing one or more TLB entries to one or more corresponding mappings from the EPT in response to the decoded instruction.
個別アドレスを同期する第1命令モード、
EPTコンテキストに対応して前記TLBエントリを同期する第2命令モード、および
いずれかのEPTコンテキストから導出される前記TLBエントリを同期する第3命令モードを含む複数の命令モードのいずれかである
請求項11に記載の方法。 The command mode specified by the command is
A first instruction mode for synchronizing individual addresses;
A plurality of instruction modes including a second instruction mode for synchronizing the TLB entry corresponding to an EPT context, and a third instruction mode for synchronizing the TLB entry derived from any EPT context. 11. The method according to 11.
請求項12に記載の方法。 The method of claim 12, wherein the instruction specifies a guest address of a synchronized virtualization-based system in the first instruction mode.
請求項12または13に記載の方法。 The instruction includes the guest physical address synchronized in the first instruction mode based on one or more corresponding mappings of guest physical addresses from the EPT referenced by either the context descriptor or the EPT pointer. The method according to claim 12 or 13.
請求項12から14のいずれか1項に記載の方法。 15. The one or more TLB entries are synchronized based on one or more corresponding mappings from the EPT referenced by either the context descriptor or the EPT pointer. the method of.
請求項12から15のいずれか1項に記載の方法。 16. In the second instruction mode, the one or more TLB entries are synchronized based on any corresponding mapping from the EPT referenced by either the context descriptor or the EPT pointer. The method of any one of these.
請求項12から16のいずれか1項に記載の方法。 The method according to any one of claims 12 to 16, wherein in the third instruction mode, the one or more TLB entries are synchronized based on any corresponding mapping from the EPT.
請求項11から17のいずれか1項に記載の方法。 The method according to any one of claims 11 to 17, further comprising flushing the one or more TLB entries in response to the decoded instruction.
1以上のTLBエントリをEPTからの1つ以上の対応するマッピングに同期させる前記命令を実行するプロセッサとを備える
システム。 A memory for storing an instruction that specifies an instruction mode and any of a context descriptor and an extended page table pointer (EPT pointer);
A processor that executes the instructions to synchronize one or more TLB entries with one or more corresponding mappings from the EPT.
個別アドレスを同期する第1命令モード、
EPTコンテキストに対応して前記TLBエントリを同期する第2命令モード、および
いずれかのEPTコンテキストから導出される前記TLBエントリを同期する第3命令モードを含むグループから選択される
請求項19に記載のシステム。 The command mode specified by the command is
A first instruction mode for synchronizing individual addresses;
The method according to claim 19, wherein the second instruction mode for synchronizing the TLB entry corresponding to an EPT context is selected from a group including a third instruction mode for synchronizing the TLB entry derived from any EPT context. system.
請求項20に記載のシステム。 21. The system of claim 20, wherein the instructions specify a guest address of a system based on synchronized virtualization in the first instruction mode.
請求項20または21に記載のシステム。 The instruction includes the guest physical address synchronized in the first instruction mode based on one or more corresponding mappings of guest physical addresses from the EPT referenced by either the context descriptor or the EPT pointer. The system according to claim 20 or 21, wherein the system is specified.
請求項19から22のいずれか1項に記載のシステム。 23. The one or more TLB entries are synchronized based on one or more corresponding mappings from the EPT referenced by either the context descriptor or the EPT pointer. System.
請求項20から22のいずれか1項に記載のシステム。 23. In the second instruction mode, the one or more TLB entries are synchronized based on any corresponding mapping from the EPT referenced by either the context descriptor or the EPT pointer. The system according to any one of the above.
請求項20から22のいずれか1項に記載のシステム。 23. A system as claimed in any one of claims 20 to 22, wherein in the third instruction mode, the one or more TLB entries are synchronized based on any corresponding mapping from the EPT.
請求項19から25のいずれか1項に記載のシステム。 The system according to any one of claims 19 to 25, wherein the processor flushes the one or more TLB entries in response to the instruction.
命令モードと、コンテキストディスクリプタおよび拡張ページテーブルポインタ(EPTポインタ)のいずれかとを特定する前記同期命令を読み取らせ、
前記同期命令に応答して、1以上のTLBエントリをEPTからの1つ以上の対応するマッピングに同期させる
プログラム。 A program having computer-executable instructions, including synchronization instructions, said instructions on a computer,
Reading the synchronization instruction specifying an instruction mode and either a context descriptor or an extended page table pointer (EPT pointer);
A program that synchronizes one or more TLB entries with one or more corresponding mappings from an EPT in response to the synchronization command.
個別アドレスを同期する第1命令モード、
EPTコンテキストに対応して前記TLBエントリを同期する第2命令モード、および
いずれかのEPTコンテキストから導出される前記TLBエントリを同期する第3命令モード
を含む複数の命令モードの一つである
請求項27に記載のプログラム。 The command mode specified by the synchronous command is
A first instruction mode for synchronizing individual addresses;
5. One of a plurality of instruction modes including a second instruction mode that synchronizes the TLB entry corresponding to an EPT context, and a third instruction mode that synchronizes the TLB entry derived from any EPT context. 27. The program according to 27.
請求項28に記載のプログラム。 The program according to claim 28, wherein the synchronization instruction specifies a guest address of a system based on virtualization to be synchronized in the first instruction mode.
請求項28または29に記載のプログラム。 The synchronization instruction is the guest physical address synchronized in the first instruction mode based on one or more corresponding mappings of the guest physical address from the EPT referenced by either the context descriptor or the EPT pointer The program according to claim 28 or 29.
請求項27から30のいずれか1項に記載のプログラム。 31. The one or more TLB entries are synchronized based on one or more corresponding mappings from the EPT referenced by either the context descriptor or the EPT pointer. Program.
請求項28から30のいずれか1項に記載のプログラム。 31. In the second instruction mode, the one or more TLB entries are synchronized based on any corresponding mapping from the EPT referenced by either the context descriptor or the EPT pointer. The program according to any one of the above.
請求項28から30および32のいずれか1項に記載のプログラム。 The program according to any one of claims 28 to 30 and 32, wherein in the third instruction mode, the one or more TLB entries are synchronized based on any corresponding mapping from the EPT.
請求項27から33のいずれか1項に記載のプログラム。 The program according to any one of claims 27 to 33, wherein the one or more TLB entries to be synchronized are flushed.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US11/504,964 US7555628B2 (en) | 2006-08-15 | 2006-08-15 | Synchronizing a translation lookaside buffer to an extended paging table |
| US11/504,964 | 2006-08-15 |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2011222052A Division JP5379203B2 (en) | 2006-08-15 | 2011-10-06 | Synchronization of translation lookaside buffer with extended paging table |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2014013615A true JP2014013615A (en) | 2014-01-23 |
| JP5663069B2 JP5663069B2 (en) | 2015-02-04 |
Family
ID=38543361
Family Applications (3)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2007211396A Expired - Fee Related JP4849372B2 (en) | 2006-08-15 | 2007-08-14 | Synchronization of translation lookaside buffer with extended paging table |
| JP2011222052A Expired - Fee Related JP5379203B2 (en) | 2006-08-15 | 2011-10-06 | Synchronization of translation lookaside buffer with extended paging table |
| JP2013200085A Expired - Fee Related JP5663069B2 (en) | 2006-08-15 | 2013-09-26 | Synchronization of translation lookaside buffer with extended paging table |
Family Applications Before (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2007211396A Expired - Fee Related JP4849372B2 (en) | 2006-08-15 | 2007-08-14 | Synchronization of translation lookaside buffer with extended paging table |
| JP2011222052A Expired - Fee Related JP5379203B2 (en) | 2006-08-15 | 2011-10-06 | Synchronization of translation lookaside buffer with extended paging table |
Country Status (6)
| Country | Link |
|---|---|
| US (18) | US7555628B2 (en) |
| JP (3) | JP4849372B2 (en) |
| KR (1) | KR100944563B1 (en) |
| CN (2) | CN101149707B (en) |
| DE (3) | DE102007063960B3 (en) |
| GB (1) | GB2441039B (en) |
Families Citing this family (45)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7555628B2 (en) | 2006-08-15 | 2009-06-30 | Intel Corporation | Synchronizing a translation lookaside buffer to an extended paging table |
| JP5104855B2 (en) * | 2007-03-23 | 2012-12-19 | 富士通株式会社 | Load distribution program, load distribution method, and storage management apparatus |
| US8799620B2 (en) * | 2007-06-01 | 2014-08-05 | Intel Corporation | Linear to physical address translation with support for page attributes |
| US9213651B2 (en) | 2009-06-16 | 2015-12-15 | Vmware, Inc. | Synchronizing a translation lookaside buffer with page tables |
| US8479295B2 (en) | 2011-03-30 | 2013-07-02 | Intel Corporation | Method and apparatus for transparently instrumenting an application program |
| US9916257B2 (en) * | 2011-07-26 | 2018-03-13 | Intel Corporation | Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory |
| US20130219146A1 (en) * | 2012-02-16 | 2013-08-22 | Micron Technology, Inc. | Method, device and system for a configurable address space for non-volatile memory |
| US9182984B2 (en) * | 2012-06-15 | 2015-11-10 | International Business Machines Corporation | Local clearing control |
| US9256531B2 (en) * | 2012-06-19 | 2016-02-09 | Samsung Electronics Co., Ltd. | Memory system and SoC including linear addresss remapping logic |
| KR101420754B1 (en) * | 2012-11-22 | 2014-07-17 | 주식회사 이에프텍 | Non-volatile memory system and method of managing a mapping table for the same |
| US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
| US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
| US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
| US9619387B2 (en) * | 2014-02-21 | 2017-04-11 | Arm Limited | Invalidating stored address translations |
| US20150261688A1 (en) * | 2014-03-14 | 2015-09-17 | International Business Machines Corporation | Extended page table for i/o address translation |
| WO2016003646A1 (en) * | 2014-06-30 | 2016-01-07 | Unisys Corporation | Enterprise management for secure network communications over ipsec |
| US9842055B2 (en) * | 2014-07-21 | 2017-12-12 | Via Alliance Semiconductor Co., Ltd. | Address translation cache that supports simultaneous invalidation of common context entries |
| US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
| US9870328B2 (en) * | 2014-11-14 | 2018-01-16 | Cavium, Inc. | Managing buffered communication between cores |
| US9684606B2 (en) * | 2014-11-14 | 2017-06-20 | Cavium, Inc. | Translation lookaside buffer invalidation suppression |
| US9665505B2 (en) | 2014-11-14 | 2017-05-30 | Cavium, Inc. | Managing buffered communication between sockets |
| US9697137B2 (en) | 2014-11-14 | 2017-07-04 | Cavium, Inc. | Filtering translation lookaside buffer invalidations |
| US9727359B2 (en) * | 2015-04-27 | 2017-08-08 | Red Hat Israel, Ltd. | Virtual machine function based sub-page base address register access for peripheral component interconnect device assignment |
| CN105487837B (en) * | 2015-05-11 | 2018-10-09 | 上海兆芯集成电路有限公司 | With the processor for being loaded into extension page table instruction |
| US9792223B2 (en) * | 2015-05-11 | 2017-10-17 | Via Alliance Semiconductor Co., Ltd. | Processor including load EPT instruction |
| US10007435B2 (en) | 2015-05-21 | 2018-06-26 | Micron Technology, Inc. | Translation lookaside buffer in memory |
| US10942683B2 (en) | 2015-10-28 | 2021-03-09 | International Business Machines Corporation | Reducing page invalidation broadcasts |
| US9898226B2 (en) | 2015-10-28 | 2018-02-20 | International Business Machines Corporation | Reducing page invalidation broadcasts in virtual storage management |
| US10216643B2 (en) | 2015-11-23 | 2019-02-26 | International Business Machines Corporation | Optimizing page table manipulations |
| JP6607798B2 (en) * | 2016-01-29 | 2019-11-20 | 株式会社ジャパンディスプレイ | Display device |
| US12339979B2 (en) | 2016-03-07 | 2025-06-24 | Crowdstrike, Inc. | Hypervisor-based interception of memory and register accesses |
| US12248560B2 (en) * | 2016-03-07 | 2025-03-11 | Crowdstrike, Inc. | Hypervisor-based redirection of system calls and interrupt-based task offloading |
| US9779028B1 (en) | 2016-04-01 | 2017-10-03 | Cavium, Inc. | Managing translation invalidation |
| US10725807B2 (en) | 2016-10-13 | 2020-07-28 | Red Hat Israel, Ltd. | Page table entry caching for virtual device emulation |
| US10997066B2 (en) * | 2018-02-20 | 2021-05-04 | Samsung Electronics Co., Ltd. | Storage devices that support cached physical address verification and methods of operating same |
| CN108959127B (en) | 2018-05-31 | 2021-02-09 | 华为技术有限公司 | Address translation method, device and system |
| US11954026B1 (en) * | 2018-09-18 | 2024-04-09 | Advanced Micro Devices, Inc. | Paging hierarchies for extended page tables and extended page attributes |
| US11803468B2 (en) * | 2018-09-19 | 2023-10-31 | Seagate Technology Llc | Data storage system with write back cache |
| US10891238B1 (en) | 2019-06-28 | 2021-01-12 | International Business Machines Corporation | Dynamically joining and splitting dynamic address translation (DAT) tables based on operational context |
| US11074195B2 (en) | 2019-06-28 | 2021-07-27 | International Business Machines Corporation | Access to dynamic address translation across multiple spaces for operational context subspaces |
| US10970224B2 (en) * | 2019-06-28 | 2021-04-06 | International Business Machines Corporation | Operational context subspaces |
| CN112463657B (en) | 2019-09-09 | 2024-06-18 | 阿里巴巴集团控股有限公司 | Processing method and processing device for address translation cache clearing instruction |
| US11175984B1 (en) | 2019-12-09 | 2021-11-16 | Radian Memory Systems, Inc. | Erasure coding techniques for flash memory |
| US20210406199A1 (en) * | 2020-06-25 | 2021-12-30 | Intel Corporation | Secure address translation services using cryptographically protected host physical addresses |
| US20250110893A1 (en) * | 2023-09-29 | 2025-04-03 | Advanced Micro Devices, Inc. | Cache virtualization |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS62295147A (en) * | 1986-06-16 | 1987-12-22 | Hitachi Ltd | Virtual computer system |
| WO2004099997A1 (en) * | 2003-05-12 | 2004-11-18 | International Business Machines Corporation | Invalidating storage, clearing buffer entries |
| JP2006196005A (en) * | 2005-01-14 | 2006-07-27 | Intel Corp | Virtualization of physical memory in virtual machine system |
Family Cites Families (45)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4456954A (en) * | 1981-06-15 | 1984-06-26 | International Business Machines Corporation | Virtual machine system with guest architecture emulation using hardware TLB's for plural level address translations |
| JPS6184754A (en) | 1984-10-03 | 1986-04-30 | Hitachi Ltd | Extended address translation device |
| US5109496A (en) | 1989-09-27 | 1992-04-28 | International Business Machines Corporation | Most recently used address translation system with least recently used (LRU) replacement |
| EP0425077A3 (en) | 1989-10-26 | 1992-07-15 | Westinghouse Electric Corporation | System enabling control information display format changes during on-line control of a plant or process |
| EP0425771A3 (en) | 1989-11-03 | 1992-09-02 | International Business Machines Corporation | An efficient mechanism for providing fine grain storage protection intervals |
| US5293595A (en) | 1990-12-17 | 1994-03-08 | Unisys Corporation | Paging system using extension tables for conflict resolution |
| JPH04357540A (en) | 1991-03-28 | 1992-12-10 | Ricoh Co Ltd | Mapped file virtual storage method |
| JPH05241965A (en) * | 1992-02-28 | 1993-09-21 | Fuji Xerox Co Ltd | Memory managing device |
| US5675762A (en) | 1992-04-03 | 1997-10-07 | International Business Machines Corporation | System for locking down part of portion of memory and updating page directory with entry corresponding to part of portion of the memory locked down |
| DE19523358C8 (en) * | 1995-06-28 | 2006-01-26 | Volkswagen Ag | Locking mechanism for a headrest |
| US5893152A (en) * | 1996-03-08 | 1999-04-06 | Sun Microsystems, Inc. | Method and apparatus that detects and tolerates inconsistencies between the cache and main memory, and the translation lookaside buffer and the virtual memory page table in main memory |
| US5809563A (en) * | 1996-11-12 | 1998-09-15 | Institute For The Development Of Emerging Architectures, Llc | Method and apparatus utilizing a region based page table walk bit |
| JP3154949B2 (en) | 1997-02-28 | 2001-04-09 | 川崎重工業株式会社 | Manufacturing method of iron carbide |
| JP3607540B2 (en) | 1999-08-18 | 2005-01-05 | エヌイーシーシステムテクノロジー株式会社 | Program unit memory access attribute management method |
| US6393544B1 (en) | 1999-10-31 | 2002-05-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for calculating a page table index from a virtual address |
| US6907600B2 (en) | 2000-12-27 | 2005-06-14 | Intel Corporation | Virtual translation lookaside buffer |
| US6643759B2 (en) | 2001-03-30 | 2003-11-04 | Mips Technologies, Inc. | Mechanism to extend computer memory protection schemes |
| DE10127198A1 (en) | 2001-06-05 | 2002-12-19 | Infineon Technologies Ag | Physical address provision method for processor system with virtual addressing uses hierarchy mapping process for conversion of virtual address |
| US8051301B2 (en) * | 2001-11-13 | 2011-11-01 | Advanced Micro Devices, Inc. | Memory management system and method providing linear address based memory access security |
| DE10208765A1 (en) | 2002-02-28 | 2003-09-18 | Infineon Technologies Ag | Data processing device |
| US7124327B2 (en) | 2002-06-29 | 2006-10-17 | Intel Corporation | Control over faults occurring during the operation of guest software in the virtual-machine architecture |
| US6996748B2 (en) | 2002-06-29 | 2006-02-07 | Intel Corporation | Handling faults associated with operation of guest software in the virtual-machine architecture |
| US7953588B2 (en) | 2002-09-17 | 2011-05-31 | International Business Machines Corporation | Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host |
| US6895491B2 (en) | 2002-09-26 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching |
| US6970990B2 (en) | 2002-09-30 | 2005-11-29 | International Business Machines Corporation | Virtual mode virtual memory manager method and apparatus |
| US6915405B2 (en) | 2002-12-04 | 2005-07-05 | Bull Hn Information Systems Inc. | Emulated target associative memory system with a multi-digit incrementable validity counter |
| US7073042B2 (en) | 2002-12-12 | 2006-07-04 | Intel Corporation | Reclaiming existing fields in address translation data structures to extend control over memory accesses |
| US7409487B1 (en) | 2003-06-30 | 2008-08-05 | Vmware, Inc. | Virtualization system for computers that use address space indentifiers |
| US7376949B2 (en) | 2003-10-01 | 2008-05-20 | Hewlett-Packard Development Company, L.P. | Resource allocation and protection in a multi-virtual environment |
| US7451443B2 (en) | 2003-10-01 | 2008-11-11 | Hewlett-Packard Development Company, L.P. | Online computer maintenance utilizing a virtual machine monitor |
| US7552426B2 (en) | 2003-10-14 | 2009-06-23 | Microsoft Corporation | Systems and methods for using synthetic instructions in a virtual machine |
| US7069389B2 (en) * | 2003-11-26 | 2006-06-27 | Microsoft Corporation | Lazy flushing of translation lookaside buffers |
| US7206915B2 (en) | 2004-06-03 | 2007-04-17 | Emc Corp | Virtual space manager for computer having a physical address extension feature |
| US7260702B2 (en) | 2004-06-30 | 2007-08-21 | Microsoft Corporation | Systems and methods for running a legacy 32-bit x86 virtual machine on a 64-bit x86 processor |
| US7562179B2 (en) * | 2004-07-30 | 2009-07-14 | Intel Corporation | Maintaining processor resources during architectural events |
| US7330942B2 (en) | 2004-07-31 | 2008-02-12 | Hewlett-Packard Development Company, L.P. | Method for efficient virtualization of physical memory in a virtual-machine monitor |
| US7340582B2 (en) * | 2004-09-30 | 2008-03-04 | Intel Corporation | Fault processing for direct memory access address translation |
| US9058292B2 (en) | 2004-12-29 | 2015-06-16 | Intel Corporation | System and method for one step address translation of graphics addresses in virtualization |
| US7395405B2 (en) | 2005-01-28 | 2008-07-01 | Intel Corporation | Method and apparatus for supporting address translation in a virtual machine environment |
| US7370160B2 (en) * | 2005-06-29 | 2008-05-06 | Intel Corporation | Virtualizing memory type |
| US7797463B2 (en) * | 2005-06-30 | 2010-09-14 | Intel Corporation | Hardware assisted receive channel frame handling via data offset comparison in SAS SSP wide port applications |
| US7555628B2 (en) * | 2006-08-15 | 2009-06-30 | Intel Corporation | Synchronizing a translation lookaside buffer to an extended paging table |
| US7802050B2 (en) * | 2006-09-29 | 2010-09-21 | Intel Corporation | Monitoring a target agent execution pattern on a VT-enabled system |
| US7882318B2 (en) * | 2006-09-29 | 2011-02-01 | Intel Corporation | Tamper protection of software agents operating in a vitual technology environment methods and apparatuses |
| DE102009024487A1 (en) * | 2009-06-10 | 2010-12-16 | Dr. Ing. H.C. F. Porsche Aktiengesellschaft | Adjustment device for a motor vehicle seat and method for mounting the adjusting device |
-
2006
- 2006-08-15 US US11/504,964 patent/US7555628B2/en active Active
-
2007
- 2007-08-10 DE DE102007063960.2A patent/DE102007063960B3/en active Active
- 2007-08-10 DE DE102007063876.2A patent/DE102007063876A1/en not_active Ceased
- 2007-08-10 DE DE102007037814.0A patent/DE102007037814B4/en active Active
- 2007-08-10 GB GB0715604A patent/GB2441039B/en active Active
- 2007-08-14 JP JP2007211396A patent/JP4849372B2/en not_active Expired - Fee Related
- 2007-08-14 CN CN2007101427061A patent/CN101149707B/en not_active Expired - Fee Related
- 2007-08-14 CN CN2010101434211A patent/CN101814056B/en not_active Expired - Fee Related
- 2007-08-16 KR KR1020070082482A patent/KR100944563B1/en active Active
-
2009
- 2009-06-30 US US12/495,555 patent/US8099581B2/en active Active
-
2011
- 2011-10-06 JP JP2011222052A patent/JP5379203B2/en not_active Expired - Fee Related
-
2012
- 2012-01-11 US US13/348,608 patent/US8296546B2/en active Active
- 2012-10-23 US US13/658,752 patent/US8601233B2/en active Active
-
2013
- 2013-09-26 JP JP2013200085A patent/JP5663069B2/en not_active Expired - Fee Related
- 2013-11-03 US US14/070,561 patent/US8949571B2/en active Active
-
2014
- 2014-10-18 US US14/517,849 patent/US9122624B2/en active Active
-
2015
- 2015-03-31 US US14/675,297 patent/US9141555B2/en active Active
- 2015-03-31 US US14/675,325 patent/US9251094B2/en active Active
- 2015-03-31 US US14/675,292 patent/US9262338B1/en active Active
- 2015-09-28 US US14/867,023 patent/US9298641B2/en active Active
- 2015-09-28 US US14/867,025 patent/US9678890B2/en not_active Expired - Fee Related
- 2015-09-28 US US14/867,027 patent/US9372807B2/en active Active
- 2015-09-28 US US14/867,024 patent/US9372806B2/en active Active
- 2015-09-28 US US14/867,020 patent/US9330021B2/en active Active
- 2015-09-28 US US14/867,018 patent/US9298640B2/en active Active
-
2017
- 2017-06-12 US US15/620,663 patent/US10180911B2/en active Active
-
2018
- 2018-03-05 US US15/912,363 patent/US10747682B2/en active Active
- 2018-03-05 US US15/912,405 patent/US20180196759A1/en not_active Abandoned
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS62295147A (en) * | 1986-06-16 | 1987-12-22 | Hitachi Ltd | Virtual computer system |
| WO2004099997A1 (en) * | 2003-05-12 | 2004-11-18 | International Business Machines Corporation | Invalidating storage, clearing buffer entries |
| JP2006196005A (en) * | 2005-01-14 | 2006-07-27 | Intel Corp | Virtualization of physical memory in virtual machine system |
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5379203B2 (en) | Synchronization of translation lookaside buffer with extended paging table | |
| KR100831488B1 (en) | Virtualizing physical memory in a virtual machine system | |
| US9684605B2 (en) | Translation lookaside buffer for guest physical addresses in a virtual machine | |
| US20080005447A1 (en) | Dynamic mapping of guest addresses by a virtual machine monitor | |
| WO2007002951A1 (en) | Virtualizing memory type |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131025 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20131025 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140428 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140513 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140813 |
|
| 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: 20141007 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20141105 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20141112 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141205 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 5663069 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 |
|
| 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 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| LAPS | Cancellation because of no payment of annual fees |