CN101814056A - 将翻译后援缓冲器同步到扩充的分页表 - Google Patents

将翻译后援缓冲器同步到扩充的分页表 Download PDF

Info

Publication number
CN101814056A
CN101814056A CN201010143421A CN201010143421A CN101814056A CN 101814056 A CN101814056 A CN 101814056A CN 201010143421 A CN201010143421 A CN 201010143421A CN 201010143421 A CN201010143421 A CN 201010143421A CN 101814056 A CN101814056 A CN 101814056A
Authority
CN
China
Prior art keywords
mapping
ept
small part
operand
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
Application number
CN201010143421A
Other languages
English (en)
Other versions
CN101814056B (zh
Inventor
S·M·贝内特
A·V·安德森
G·奈格尔
R·乌利希
D·罗杰斯
R·马杜卡鲁穆库马纳
C·拉斯特
S·舍恩贝格
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN101814056A publication Critical patent/CN101814056A/zh
Application granted granted Critical
Publication of CN101814056B publication Critical patent/CN101814056B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Abstract

本发明涉及将翻译后援缓冲器同步到扩充的分页表。一种处理器包括用于执行指令以将从基于虚拟化的系统的访客的物理地址(访客物理地址)到基于虚拟化的系统的主机的物理地址-主机物理地址且存储在翻译后援缓冲器TLB中的映射与存储在基于虚拟化的系统的扩充的分页表EPT中对应的映射同步。

Description

将翻译后援缓冲器同步到扩充的分页表
相关申请的交叉引用
本申请涉及未决的美国专利申请序列号11/036,736(标题为“虚拟机系统中虚拟化物理存储器”,代理人案号P20462,并受让于本发明的受让人(EPT专利申请))。
技术领域
本发明涉及将翻译后援缓冲器同步到扩充的分页表。
背景技术
虚拟化使得对虚拟化具有硬件和软件支持的单个主机呈示主机的抽象,以便主机的底层硬件看上去如同一个或多个独立工作的虚拟机。因此每个虚拟机可以作为自包含的平台。常常,使用虚拟化技术来使多个访客操作系统和/或其他访客软件能够共存,并能够看上去同时地且看上去独立地在多个虚拟机上执行,而实际物理上在相同的硬件平台上执行。虚拟机可以仿真主机的硬件或将不同硬件抽象呈示在一起。
虚拟化系统可以包括控制主机的虚拟机监视器(VMM)。VMM提供在具有一组资源(例如处理器、存储器、I/O装置)的虚拟机中工作的访客软件。VMM可以将物理主机的一些或所有组件映射到虚拟机中,并且可以创建在VMM中的软件中仿真的完全虚拟的组件,这些虚拟组件包括在虚拟机中(例如虚拟I/O装置)。因此VMM可以说是提供至访客软件的“虚拟裸机”接口。VMM使用硬件虚拟化结构体系中的便利来向虚拟机提供服务并提供针对主机上执行的多个虚拟机以及这些多个虚拟机之间的保护。由于访客软件在虚拟机中执行,所以如果访客软件直接在硬件平台上执行,则访客软件执行的某些指令(例如访问外围设备的指令)常常会直接访问硬件。在VMM支持的虚拟化系统中,这些指令可能导致转变到VMM,本文称为虚拟机退出。VMM以适于与访客软件执行所在的虚拟机一致的主机硬件和主机外围设备的方式处理软件中的指令。相似地,主机中生成的某些中断和异常可能需要VMM来解释和管理或由VMM来调整以适于访客软件,之后才传递到访客软件来用于实现服务。VMM然后将控制转移到访客软件,并且虚拟机恢复操作。从VMM到访客软件的转移在本文中称为虚拟机进入。
如本领域中公知的,常常使用页表来提供典型基于处理器的系统中的从线性存储器到物理存储器的映射。页表一般是存储器驻留的结构,并且因此访问页表以确定与线性地址对应的物理地址来促成存储器访问,这可能将处理时间延迟。为了缓解此问题,许多处理器实现在处理器中包括称为翻译后援缓冲器(TLB)的高速存储器或寄存器组,其中基于页表中的值将正在使用中的当前线性至物理存储器映射的一些子集缓存。这使处理器能够比处理器需要访问页表的情况下一般所可能的速度更快速地访问线性地址至对应的物理地址的翻译。处理器实现一般提供用于管理TLB的指令,包括基于存储在页表中的当前翻译来无效或更新TLB中的所有项的指令。
发明内容
本发明涉及一种基于虚拟化的系统的处理器,包括:
处理器总线;
用于存储从访客地址到主机物理地址的映射的缓冲器;
用于接收指令并接收操作数的提取逻辑;
用于将所述指令解码的解码逻辑;以及逻辑电路,用于至少部分响应所述指令的解码来执行将所述缓冲器中存储的从访客地址到主机的物理地址(主机物理地址)的映射与至少部分存储在扩充的分页表(EPT)中的对应的映射的同步,所述同步还至少部分基于所述指令的操作数,所述操作数还包括上下文描述符和EPT指针的至少其中之一。
本发明涉及一种方法,包括:
在包括主机和访客的基于虚拟化的系统中,将至少部分存储在翻译后援缓冲器(TLB)中的且包括访客地址到所述主机的物理地址(主机物理地址)的翻译的映射与至少部分存储在所述基于虚拟化的系统的扩充的分页表(EPT)中的对应的映射同步;以及至少部分基于所述指令的操作数选择至少部分存储在所述EPT中的映射,所述操作数包括上下文描述符和EPT指针的至少其中之一。
本发明涉及一种基于虚拟化的系统,包括:
处理器;
通过总线耦合到所述处理器的存储器;
所述处理器的逻辑电路,所述处理器的逻辑电路用于执行指令来:
将至少部分存储在翻译后援缓冲器(TLB)中的且包括访客地址到主机的物理地址(主机物理地址)的翻译的映射与至少部分存储在所述基于虚拟化的系统的扩充的分页表(EPT)中的对应的映射同步;以及
至少部分基于所述指令的操作数选择至少部分存储在所述EPT中的映射,所述操作数包括上下文描述符和EPT指针的至少其中之一。
附图说明
图1说明进程与物理存储器之间的关系。
图2以抽象方式说明一个实施例中虚拟机与主机之间的关系。
图3说明一个实施例中的虚拟机环境的高层结构。
图3a表示在功能级上一个实施例中的处理器。
图4说明一个实施例中使用扩充的分页表的地址计算。
图5说明一个实施例中指令执行的流程。
具体实施方式
图1示出在基于处理器的系统上执行的进程,该系统集成了处理器和通过总线在通信上耦合到该处理器的存储器。参考图1,当进程105引用其线性地址空间115(线性存储器空间)中的存储器位置110时,由存储器管理130生成对机器125的物理存储器145(机器物理存储器)中的实际地址140的引用,这可以在硬件(有时集成到处理器120中)中实现和在软件中实现(一般在机器的操作系统中实现)。存储器管理130其中的功能是将线性地址空间中的位置映射到机器的物理存储器中的位置。如图1所示,进程可以具有与物理机器中可用的实际存储器不同的存储器视图。在图1说明的示例中,进程在从0至1MB的线性地址空间中工作,实际由存储器管理硬件和软件将该空间映射到物理存储器的一部分中,而物理存储器本身具有从10至11MB的地址空间;为了由进程空间地址计算物理地址,可以将偏移量135加上线性地址。从线性地址空间到物理存储器的更复杂的映射也是可能的,例如可以将与线性存储器对应的物理地址分成例如页的多个部分,并将其与来自物理存储器中其他进程的页交替布置。
将存储器定制地分成多个页,每个页包含在多个实现中变化的已知量的数据,例如页可以按具体应用所期望地包含存储器的4096个字节、存储器的1MB或存储器的任何其他量。因为执行进程引用存储器位置,所以将它们翻译成页引用。在典型的机器中,存储器管理将对线性存储器中的页的引用映射到机器物理存储器中的页。一般来说,存储器管理可以使用页表来指定与进程空间页位置对应的物理页位置。
管理虚拟机环境中的访客软件的一个方面是存储器的管理。虚拟机中执行的访客软件所采取的处理存储器管理动作造成控制例如虚拟机监视器的系统的复杂性。考虑例如两个虚拟机通过虚拟化在x86平台上实现的主机上执行的系统,其中该x86平台包括作为x86处理器的一部分实现的页表。而且假定每个虚拟机本身向其上执行的访客软件提供x86机器的抽象。每个虚拟机上执行的访客软件可以对访客线性存储器地址进行引用,然后由访客机器的存储器管理系统将其翻译成访客物理存储器地址。但是,访客物理存储器本身可以进一步通过VMM和主机处理器上的硬件中的虚拟化子系统由主机物理存储器中的映射来实现。因此,则必须由VMM来截取访客进程或访客操作系统对访客存储器的引用,包括例如对访客x86页表控制寄存器的引用,因为若不进行进一步地处理,则无法将它们直接传递到主机的页表,这是由于访客物理存储器实际不直接对应于主机物理存储器,而是经由主机的虚拟化系统进一步再映射。
图2具体参考一个实施例中的访客存储器的映射来说明主机上执行的一个或多个虚拟机之间的关系。图2图示如何通过主机的虚拟化系统再映射访客物理存储器。每个虚拟机(例如虚拟机A 242和虚拟机B 257)分别向虚拟机上运行的访客软件呈示虚拟处理器245和255。每个机器分别向访客操作系统或其他访客软件提供物理存储器的抽象、访客物理存储器240和250。因为访客软件在虚拟机242和257上执行,所以它实际由主机267利用主机物理存储器260在主机处理器265上执行。
如图2所示,在此实施例中,作为起始于地址0的物理存储器空间呈示的虚拟机A 242中的访客物理存储器240被映射到主机物理存储器260中的一些连续区域270。相似地,虚拟机B 257中的访客物理存储器250被映射到主机物理存储器260的不同部分275。如图2所示,主机可以具有1024MB主机物理存储器。如果对每个虚拟机242和257分配256MB的存储器,则一种可能的映射是对虚拟机A242分配范围128-384MB,而对虚拟机B 257分配范围512-768MB。虚拟机242和257都引用0-256MB的访客物理地址空间。仅VMM知道每个虚拟机的地址空间映射到主机物理地址空间的不同部分。
图2所示的虚拟机和存储器映射仅仅是一个实施例的一种表示,在其他实施例中,主机上执行的虚拟机的实际数量可能为一个到多个;主机和虚拟机的实际存储器大小也会有所不同,并可以随虚拟机的不同而改变。该示例说明将存储器简单且连续地分配到虚拟机。在更一般性情况中,分配给虚拟机的物理存储器页可以不是连续的,并且可以彼此以及与属于VMM和其他主机进程的页交替地分布在主机物理存储器中。
作为系统(如图2所示的系统)中的虚拟机来呈示的基于处理器的系统能以其所能够达到的复杂度实现虚拟机。因此,例如虚拟机可以向访客OS呈示完整的访客物理存储器视图,并使用访客OS和虚拟机的虚拟处理器或其他虚拟硬件提供的存储器管理来执行虚拟机上执行的访客软件的存储器管理。在一个示范实施例中,虚拟机可以向访客OS呈示包括例如用于存储器管理的页表的x86硬件支持的x86平台,然后可以实际地在也是包括用于存储器管理的x86硬件的x86平台的主机平台上执行。在没有附加的机制的情况下,本实施例中的虚拟化系统必须使用(作为一种可能的解决方案)x86页表影子来再映射、分区和保护物理存储器,以便在VMM中实现物理存储器虚拟化算法。因此,例如当访客软件尝试访问虚拟机的x86页表时,VMM必须将虚拟化(例如将物理地址再映射)所需的功能性重叠到访客OS所需的功能性上。
就此而言,VMM必须诱捕围绕访客软件使用分页机制的多种事件。这包括对例如x86存储器管理系统的控制寄存器(例如,CR0、CR3和C4)的控制寄存器的写入、对与分页和存储器访问关联的型号专用寄存器(MSR)(例如存储器型范围寄存器(MTRR))的访问、处理某些异常(例如页故障),如x86文档中所描述的。这种使用x86页表来将物理存储器虚拟化是复杂的且需要相当大的性能开销。
图3图示虚拟机环境300的一个实施例。在该实施例中,基于处理器的平台316可以执行VMM 312。通常以软件实现的VMM可以仿真并导出至更高层软件的虚拟裸机接口。此类更高层软件可以包括标准OS、实时OS或可以是具有有限操作系统功能性的剥离的环境,并且可以不包括一些实施例中标准OS中通常可用的OS设施。或者,例如,VMM 312可以在另一个VMM内运行或使用另一个VMM的服务。在一些实施例中VMM能以例如硬件、软件、固件来实现或通过多种技术的组合来实现。在至少一个实施例中,VMM的一个或多个组件可以在一个或多个虚拟机中执行,以及VMM的一个或多个组件可以在图3说明的裸机平台硬件上执行。裸机平台硬件上直接执行的VMM的组件在本文中称为VMM的主机组件。
平台硬件316可以是个人计算机(PC)、服务器、大型主机、例如个人数字助理(PDA)或“智能”移动电话的手持设备、便携式计算机、机顶盒或另一种基于处理器的系统。平台硬件316至少包括处理器318和存储器320。处理器318可以是能够执行程序的任何类型的处理器,例如微处理器、数字信号处理器微控制器等。处理器可以包含用于在实施例中执行的微码,可编程逻辑或硬编码的逻辑。虽然图3仅示出一个这种处理器318,但是实施例中的系统中可以有一个或多个处理器。此外,处理器318还可以包括支持多线程等的多个核。在多个实施例中,存储器320可以包括硬盘、软盘、随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器、上面这些装置的任何组合或处理器318可读的任何其它类型的机器媒介。存储器320可以存储用于实现程序执行和其他方法实施例的指令和/或数据。在一些实施例中,本发明的一些部件可以在其他系统组件中实现,例如在平台芯片组中或在系统的一个或多个存储器控制器中实现。
VMM 312向访客软件呈示一个或多个虚拟机的抽象,一个或多个虚拟机可以向多个不同访客提供相同或不同的抽象。图3示出两个虚拟机302和314。运行在每个虚拟机上的如访客软件303和313的访客软件可以包括如访客OS 304或306的访客OS和各种访客软件应用程序308和310。访客软件303和313可以访问访客软件303和313运行于其中并执行其他功能的虚拟机内的物理资源(例如处理器寄存器、存储器和I/O装置)。例如,访客软件303和313期望根据虚拟机302和314中呈示的处理器和平台的体系结构具有对所有寄存器、高速缓存、结构、I/O装置、存储器等的访问权。
在一个实施例中,处理器318根据虚拟机控制结构(VMCS)324中存储的数据控制虚拟机302和314的操作。VMCS 324是可以包含访客软件303和313的状态、VMM 312的状态、指示VMM 312期望如何控制访客软件303和313的操作的执行控制信息、控制在VMM312与虚拟机之间转移的信息等的结构。处理器318从VMCS 324中读取信息以确定虚拟机的执行环境并约束它的行为。在一个实施例中,VMCS 324存储在存储器320中。在一些实施例中,使用多个VMCS结构来支持一个或多个虚拟机内的CPU。
VMM 312可能需要管理运行于虚拟机302和314中的访客软件可访问的物理存储器。在一个实施例中,为了支持物理存储器管理,处理器318提供扩充的页表(EPT)机制。在该实施例中,VMM 312可以包括物理存储器管理模块326,该模块提供与将控制转移到虚拟机302或314之前可能需要提供的物理存储器虚拟化关联的字段的值。这些字段统称为EPT控制。EPT控制可以包括例如指定是否应该启用EPT机制的EPT启用指示符、以及指示物理存储器虚拟化机制的形式和语义的一个或多个EPT表配置控制。下文将详细地论述它们。此外在一个实施例中,EPT表328指示VMM 312可以对访客软件303和313设置的物理地址翻译和保护语义。
在一个实施例中,EPT控制被存储在VMCS 324中。或者,EPT控制可以驻留在处理器318中、存储器320和处理器318的组合中、或任何其他一个或多个存储位置中。在一个实施例中,为虚拟机302和314的每一个维护单独的EPT控制。或者,为两个虚拟机维护相同的EPT控制,并在每个虚拟机进入之前由VMM 312更新它们。
在一个实施例中,EPT表328被存储在存储器320中。或者,EPT表328可以驻留在处理器318中、存储器320和处理器318的组合中、或任何其他一个或多个存储位置中。在一个实施例中,为虚拟机302和314的每一个维护单独的EPT表328。或者,为两个虚拟机302和314维护相同的EPT表328,并在每个虚拟机进入之前由VMM 312更新它们。
在一个实施例中,处理器318包括EPT访问逻辑322,它负责基于EPT启用指示符来确定是否启用EPT机制。如果启用EPT机制,则处理器基于EPT控制和EPT表328将访客物理地址翻译成主机物理地址。
在说明的实施例中,处理器还可以包括翻译后援缓冲器(TLB)323,用于缓存线性到访客物理、访客物理到主机物理地址以及线性到主机物理的翻译。线性到访客物理和线性到主机物理的翻译在本文中称为“线性翻译”。访客物理到主机物理和线性到主机物理的翻译在本文中称为“物理翻译”。
在一个实施例中,其中系统300包括多个处理器或多线程处理器,将逻辑处理器的每一个与单独的EPT访问逻辑322关联,以及VMM312为逻辑处理器的每一个配置EPT表328和EPT控制。
可以将访客软件(例如303,包括访客OS 304和应用程序308)能够访问的资源分类成“具有特权的”或“不具有特权的”。对于具有特权的资源,VMM使访客软件期望的功能性便于实现,同时保留对这些具有特权的资源的最终控制。而且每个访客软件303和313期望处理诸如异常(例如页故障、一般性保护故障等)、中断(例如硬件中断、软件中断)的多种平台事件,以及平台事件(例如初始化(INIT)和系统管理中断(SMI))。这些平台事件的其中一些是“具有特权的”,因为它们必须由VMM 312来处理以确保虚拟机302和314的正常操作以及针对访客软件以及访客软件之间的保护。访客操作系统和访客应用程序都可能会尝试访问具有特权的资源并都可能导致或遇到具有特权的事件。具有特权的平台事件和对具有特权的资源的访问尝试在本文中统称为“具有特权的事件”或“虚拟化事件”。
图3a在高层面上说明图3的实施例中处理器318的一些块级特征。一般来说,如图3中318处说明的处理器的处理器可以包括一个或多个处理器总线,例如图3a中337处图示的处理器总线。而且如图3a所示,处理器可以包括一个或多个组中的寄存器350,每个寄存器可以具有如公知的用于存储32、64、128或另一个位数量的数据的容量。每个寄存器组还可以具有多个寄存器,例如8、32、64个寄存器。一些寄存器可以专用于控制和状态使用,例如专用于如在x86实施例中存储CR位。在另一些实施例中,可以如本领域中公知的在处理器中存储其他控制寄存器和标志以便允许不同模式的操作和状态检查。一般来说,例如图3的实施例中说明的处理器的处理器将包括用于从存储器、高速缓存或其他存储装置中提取指令和数据的逻辑或逻辑电路330,用于将指令解码的逻辑或逻辑电路和执行指令的如334的执行单元。对这些功能单元的一些改变是可能的,例如执行单元中的执行可以是流水线化的;或包括推测和分支预测;或具有与具体处理器或应用相关的其他功能特征。处理器中可以存在其他功能逻辑365,例如用于算术、图形处理以及公知的处理器的许多其他特定功能的逻辑。在一些实施例中可以存在板上高速缓存360。该高速缓存可以如公知的具有多种大小,例如128MB、1GB等。如前文参考图3所示的,处理器318包括EPT访问逻辑322和TLB 323。在一个实施例中,EPT访问逻辑可以包括用于填充、控制和管理EPT的逻辑;以及TLB一般是处理器内包含来自页表的映射的缓冲器,这些映射出于效率和其他目的而被缓存。
图4示出使用上文引入的扩充的页表以在虚拟机中的访客软件引用访客虚拟地址时最终计算主机物理地址的处理的一个示例。描绘的示例示出运行于x86平台中的访客软件使用简单的32位虚拟寻址和简单的页表格式。本领域技术人员将能够容易地将理解的该示例扩展到例如其他分页模式(例如访客软件中的64位寻址)、其他指令集体系结构(例如
Figure GSA00000058393500111
体系结构、64位和x86体系结构的其他变化、体系结构等)以及扩展到其他配置。
在图4中,由虚拟机中执行的访客软件执行对访客虚拟地址410的引用。使用访客中活动的存储器管理机制(即由访客操作系统配置的)来将虚拟地址翻译成访客物理地址。通过EPT将翻译中使用的每个访客物理地址和得到的访客物理地址翻译成主机物理地址,然后才访问主机物理地址。下文论述详细描述该过程。
在此示例中,CR3寄存器420中的适当位402指向访客物理存储器中的访客的页目录表460的基地址。将该值402与来自访客虚拟地址410的较高位组合(根据x86语义乘以4来适当地调整,因为在此示例中这些表中的项均为4字节),以形成访客的PD表460中的页目录项(PDE)的访客物理地址412。通过EPT表455翻译该值412以形成页目录项的主机物理地址404。处理器使用该主机物理地址404访问页目录项。
来自PDE的信息包含访客的页表470的基地址422。将该访客物理地址422与适当调整的访客虚拟地址410的位21:12组合以形成访客页表470中的页表项的访客物理地址432。通过EPT页表465翻译该访客物理地址432,以形成访客的页表项(PTE)的主机物理地址414。处理器使用该主机物理地址414访问PTE。
来自PTE的信息包含被访问的访客物理存储器中的页的基地址442。将该值与访客虚拟地址410的低阶位(11:0)组合以形成被访问的存储器的访客物理地址452。通过EPT表475翻译该值452以形成被访问的存储器的主机物理地址424。
每次使用EPT表来将访客物理地址翻译成主机物理地址时,处理器还根据EPT表中的控制来验证该访问是被允许的,正如下文将予以描述的。此外,必须理解虽然图4中将EPT表455、465和475图示为各不相同的,但是在一个实施例中,它们可以是一组相同的EPT表(即对于所有从访客物理到主机物理的地址翻译都使用一组EPT表)。
在基于处理器的系统中的线性存储器支持的典型实现中,出于效率的原因,可能将存储在页表结构中的从线性地址到物理地址的映射缓存在翻译后援缓冲器(TLB)中。可以在处理器指令集中包括指令以管理TLB并使基于处理器的系统中执行的程序能够确保TLB中的具体项与页表项同步。因此,例如在x86体系结构中,MOV CR指令可能导致所有TLB项全局无效,并因此在访问地址时将项重新同步。或者,在x86示例中,可以使用INVLPG指令来使特定线性地址的TLB中存储的映射无效,从而使TLB中的项更新并与页表中的映射同步。
在一个包括结合上文论述的扩充的分页表(EPT)的虚拟系统的实施例中,TLB可以将执行的进程的访客线性到主机物理地址翻译缓存在访客机器存储器中,并且缓存进程(例如直接在主机上执行的VMM)的主机线性到主机物理映射,正如先前参考图3在323处论述的。在前一种情况中,可以从访客中的页表也可以从EPT导出访客线性到主机物理映射;在后一种情况中,可以从主机页表导出映射。还可以在TLB中存储附加类型的映射:基于EPT中存储的映射直接从访客物理到主机物理存储器导出的映射。
在一个实施例中,将新命令添加到处理器指令集。在该实施例中,新命令INVL_EPT为直接在虚拟系统的主机上执行的程序(例如VMM)提供用于管理从访客物理到主机物理映射导出的TLB项的方式。确切地来说,在该实施例中,INVL_EPT指令确保TLB中的访客物理到主机物理映射和线性到主机物理映射与驻留在主机存储器中的EPT表同步,以及指定EPT上下文、相关情况下要同步映射的访客物理存储器地址以及同步的范围。一般来说,上下文定义系统的地址空间的一部分。对于访客物理到主机物理映射,通过当前活动的EPT表来定义EPT上下文,然后在该实施例中由寄存器来引用它,称为EPT指针或EPTP。
在该实施例中,INVL_EPT指令具有三个操作数,第一个操作数是用于指令模式或变化规范的值;第二个操作数是指定EPT指针的值,其等效于INVL_EPT指令执行所在的EPT上下文;以及第三个操作数是指定与要被无效的TLB项关联的访客物理地址的值。在该实施例中,第一个操作数作为8位直接值提供,第二个和第三个操作数作为存储器中的块提供,各占用64位。其他实施例也是可能的。例如,可以显式地或隐含地在寄存器或其他存储器位置中提供操作数。
该实施例中的第一个操作数是具有至少三个定义的值的开关或标志,并因此指定INVL_EPT指令要以三种可能的模式的其中一种来执行:
1.个别地址模式:在此模式中,如上文描述的,基于由第二个操作数中提供的上下文引用的EPT中的单个访客物理地址的映射,将TLB中与该单个访客物理地址关联的物理翻译同步到EPT。
2.上下文模式:在此模式中,忽略访客地址参数(如上文描述的第三个操作数),而将如上文描述的第二个操作数中指定的EPT上下文中的TLB中的那些项与EPT同步。
3.全局模式:在此模式中,忽略访客地址参数和EPT上下文参数,而同步从任何EPT上下文导出的TLB项。
图5的流程图说明一个实施例中INVL_EPT指令的执行。该执行起始于500。首先,在505,处理器可以进行多个测试以确保当前执行环境对于EPT相关的操作是有效的。这些测试其中可以包括确保系统处于操作的虚拟化模式的测试、确保分页被启用的测试、以及确保当前没有错误状态的测试。如果执行环境是无效的,则该指令可以经由555和560退出到未定义的状态,生成一般性保护故障,生成未定义的操作码故障等。如果执行环境是有效的,则在该实施例中,在510处,该指令执行则读取直接的8位操作数。期望称为SYNC_CMD的该操作数表示INVL_EPT指令的有效模式,如上文详细描述的。如果该操作数不是有效的,则在515处,指令如先前描述的退出到555和560。如果该操作数是有效的,则执行进行到从存储器读取第二个和第三个操作数(在520处),并且如先前论述的,期望这些操作数为存储器中的128位块,采用附图中标记为INVLEPT_DESC的引用。该实施例中的前64位是EPT上下文或EPT表指针,并在525处作为EPTPC_TX被提取;后64位是指令的访客物理地址参数,在530处作为GP_ADDR被提取。
指令的执行然后进行到根据535至580说明的执行流程中的SYNC_CMD操作数的值来执行实际的同步。如先前描述的,SYNC_CMD可以是基于所有EPT上下文执行TLB的全局同步的指示;或者可以是执行仅对指令的操作数指定的EPT上下文的同步的指示;或最后是执行仅对作为参数提供的EPT上下文中的作为参数传递的访客物理地址的同步的指示。在此实施例中,如图5的执行流程所示,SYNC_CMD值的检查在535处进行;第二个在540处进行,以及第三个在545处进行。在535处,如果SYNC_CMD的值指示全局同步,则指令执行将所有EPT上下文的所有物理映射同步,并且执行在580处完成。否则,如果在540处SYNC_CMD指示上下文特定的同步,则执行进行到检查提供的EPTP_CTX值是否是有效的。如果因为例如该值中设置了保留位或EPTP中的地址是无效的,所以该值是无效的,则指令的执行终止并附有一般性保护故障(在555和560处)。如果提供的上下文是有效的,则执行继续,在575处将EPTP_CTX引用的EPT上下文的所有物理映射同步,然后在580处完成。
如果SYNC_CMD不是全局的也不是上下文范围的同步,并且还是操作的有效模式,则本实施例中余下的唯一可能是用于将特定访客物理地址同步的命令。执行然后检查545处提供的GP_ADDR参数是否是有效的。如果提供了无效的地址,则执行在555和560处退出并附有一般性保护故障。否则,在550处将与提供的访客物理地址GP_ADDR关联的所有物理映射与EPTP_CTX中提供的上下文引用的EPT同步,然后执行在580处完成。
本领域技术人员将显见到上文描述的实施例可以具有范围广泛的变化。在一些实施例中,可能有与INVL_EPT等效的命令,但是可能具有不同语法,其中包括名称、参数的数量、格式和大小。正如公知的,存在多个不同的指令集体系结构(ISA),并且对于不同的ISA可以提供相似命令且格式和其他特征与ISA保持一致。例如,本领域技术人员可以基于上文提供的这些实施例的描述容易地将基于
Figure GSA00000058393500152
体系结构的用于将TLB无效和/或将TLB与处理器的EPT同步的指令可视化并描述它们;正如可以将任何其他ISA的指令可视化并描述它们那样。
与上文引用的该实施例中的EPT上下文相关的论述不应该视为限制。在另一些实施例中,可能仅有一个EPT的实例,另外,多个实例如x86实例中论述的也是有效的,并且具有与上文论述的EPTP相似的例如引用寄存器或指针的引用机制。
在另一些实施例中,参数的数量和格式可以有所不同。例如,在上文描述的实施例中,INVL_EPT指令具有一个直接操作数和两个基于存储器的操作数。在另一些实施例中,可以使用多个直接操作数;在另一些实施例中,所有操作数可以都是基于存储器的;在再一些实施例中,从处理器内的寄存器或其他存储中读取操作数,其中有许多公知的其他变化。
上文描述的实施例是参考INVL_EPT指令的操作的三种模式来描述的。在另一些实施例中,可能去掉这些模式的其中一些或所有这些模式;在另一些实施例中,可能有更多的模式。例如,在一些实施例中,可能没有个别地址无效的模式,而在此模式中,将所有TLB项同步。在一些实施例中,可能仅有系统中工作的EPT的一个实例,而在此类实施例中,上下文模式可能是不必要的。或者,在一些实施例中,可能仅有个别地址同步;或在另一些实施例中,可能仅使用全局地址同步,这样就无需参考INVL_EPT描述的第一个操作数。
虽然指令及其操作的这些变化是可能的,但是本领域技术人员还可以容易设想到许多其他变化,其中包括通过其他指令的组合来得到INVL_EPT指令的一般性结果。
在本文描述中,出于解释的目的,提出了大量特定的细节以便提供对所述实施例的透彻理解,但是本领域技术人员将认识到可以不利用这些特定细节来实施许多其他实施例。
上文的详细描述的其中一些部分是基于对基于处理器的系统内的数据位的算法和操作的符号表示来给出的。这些算法描述和表示是本领域技术人员用于最有效地向本领域其他技术人员传达工作内容的方式。这些操作需要以物理方式操纵物理量的操作。这些量可能采取能够被存储、传输、组合、比较和以其他方式操纵的电、磁、光或其他物理信号的形式。原理上出于通用的原因,将这些信号称为位、值、元素、符号、字符、术语、数量等,长期以来已证明这是便利的。
但是应该记住所有这些和相似的术语将与相应的物理量关联,并且仅仅是应用于这些量的便利标记。除非描述中显而易见地另行确切说明,否则诸如“执行”或“处理”或“计算”或“运算”等的术语可以指基于处理器的系统或相似的电子计算设备的动作和过程,这些系统或相似的电子计算设备操纵基于处理器的系统的存储器内表示为物理量的数据并将其转换成其他此类信息存储、传输或显示设备上以相似方式表示的其他数据。
在这些实施例的描述中,可能参考附图。在所有这些附图中,相似的编号描述基本相似的组件。可以利用其他实施例,以及可以进行结构、逻辑和电方面的更改。而且,要理解虽然不同,但是多种实施例不一定是互相排斥的。例如,一个实施例中描述的具体功能特征、结构或特征可以被包括在另一些实施例中。
而且,处理器中实现的实施例的设计可以经过不同的阶段,从开发到仿真到制造。表示设计的数据可以采用多种方式来表示该设计。首先,如仿真中有用的,可以使用硬件表示语言或其他功能描述语言来表示硬件。此外,还可以在设计过程的一些阶段制造具有逻辑和/或晶体管门电路的电路级模型。而且,在一些阶段,大多数设计达到表示物理置换硬件模型中的多种不同装置的数据级别。在使用常规半导体制造技术的情况中,表示硬件模型的数据可以是指定用于制造集成电路的掩模的不同掩模层上的多种功能特征的存在与否的数据。在设计的任何表示中,可以采用任何形式的机器可读媒介存储该数据。调制或以其他方式生成来传输此类信息的光或电波、存储器或例如光盘的磁或光存储器都可以是机器可读的媒介。这些媒介的任何一个可以“承载”或“指示”设计或软件信息。当传输指示或承载代码或设计的电载波,范围涉及到执行电信号的复制、缓冲或再传输时,制作新副本。因此,通信提供商或网络提供商可能制作构成或表示实施例的物品(载波)的副本。
实施例可以作为可包括机器可读媒介的程序产品来提供,该机器可读媒介中存储有在被机器访问时可以使机器执行根据要求权利的主题的过程的数据。机器可读媒介可以包括但不限于适于存储电指令的软磁盘、光盘、DVD-ROM盘、DVD-RAM盘、DVD-RW盘、DVD+RW盘、CD-R盘、CD-RW盘、CD-ROM盘以及磁光盘、ROM、RAM、EPROM、EEPROM、磁卡或光卡、闪速存储器或其他类型的媒体/机器可读媒介。而且,还可以作为程序产品下载实施例,其中可以通过载波或其他传播媒介中包含的数据信号的形式经由通信链路(例如调制解调器或网络连接)将该程序从远程数据源传送到请求设备。
这些方法的其中一些是以它们最基本的形式描述的,但是在不背离要求权利的主题的基本范围的前提下,可以对这些方法的任何一个方法添加或删除步骤,以及可以对描述的消息的任何一个消息添加或删除信息。本领域技术人员将认识到还可以进行多种其他修改和调整。这些具体的实施例并非提供来限制要求权利的主题,而是说明要求权利的主题。要求权利的主题的范围不由上文提供的特定示例来确定,而仅由所附权利要求来确定。

Claims (34)

1.一种基于虚拟化的系统的处理器,包括:
处理器总线;
用于存储从访客地址到主机物理地址的映射的缓冲器;
用于接收指令并接收操作数的提取逻辑;
用于将所述指令解码的解码逻辑;以及
逻辑电路,用于至少部分响应所述指令的解码来执行将所述缓冲器中存储的从访客地址到主机的物理地址(主机物理地址)的映射与至少部分存储在扩充的分页表EPT中的对应的映射的同步,所述同步还至少部分基于所述指令的操作数,所述操作数还包括上下文描述符和EPT指针的至少其中之一。
2.如权利要求1所述的处理器,其特征在于,所述缓冲器包括翻译后援缓冲器TLB。
3.如权利要求1所述的处理器,其特征在于,所述逻辑电路包括至少部分基于微码指令工作的逻辑电路。
4.如权利要求1所述的处理器,其特征在于,所述EPT至少部分存储在通过总线与所述处理器耦合的存储器中。
5.如权利要求1所述的处理器,其特征在于,所述逻辑电路还至少部分基于从所述指令的操作数导出的上下文描述符来从所述EPT中选择映射。
6.如权利要求5所述的处理器,其特征在于,所述逻辑电路还至少部分基于从所述上下文描述符导出的EPT指针来从所述EPT中选择映射。
7.如权利要求1所述的处理器,其特征在于,所述逻辑电路还至少部分基于所述指令的操作数选择所述访客地址。
8.如权利要求2所述的处理器,其特征在于,
所述映射的同步还包括至少部分基于所述EPT中存储的映射来更新所述TLB中存储的映射;以及
所述对应的映射还包括所述EPT中存储的且与所述TLB中存储的映射具有相同访客地址的映射。
9.如权利要求2所述的处理器,其特征在于,所述映射的同步还包括刷新所述TLB中存储的映射。
10.如权利要求1所述的处理器,其特征在于,所述逻辑电路还至少部分基于所述指令的操作数来选择所述指令的执行模式。
11.如权利要求2所述的处理器,其特征在于,
所述提取逻辑还接收所述指令的第一操作数、所述指令的第二操作数和所述指令的第三操作数;
所述逻辑电路还
基于从所述指令的第一操作数导出的上下文描述符来选择至少部分存储在所述EPT中的映射;
至少部分基于所述指令的第二操作数来选择所述访客地址;以及
至少部分基于所述指令的第三操作数来选择所述指令的执行模式;以及
所述指令的执行模式是如下模式的其中之一
第一模式,在所述第一模式中,仅将所述TLB中存储的且与所述访客地址关联的单个映射与所述EPT中对应的映射同步;
第二模式,在所述第二模式中,将所述TLB中存储的且与从所述上下文描述符导出的EPT上下文关联的所有映射与所述EPT中对应的映射同步;以及
第三模式,在所述第三模式中,将所述TLB中存储的且与任何EPT上下文关联的所有映射与EPT中对应的映射同步。
12.如权利要求1所述的处理器,其特征在于,所述访客地址还包括访客物理地址。
13.如权利要求1所述的处理器,其特征在于,所述访客地址还包括访客线性地址。
14.一种方法,包括:
在包括主机和访客的基于虚拟化的系统中,将至少部分存储在翻译后援缓冲器TLB中的且包括访客地址到所述主机的物理地址(主机物理地址)的翻译的映射与至少部分存储在所述基于虚拟化的系统的扩充的分页表EPT中的对应的映射同步;以及
至少部分基于所述指令的操作数选择至少部分存储在所述EPT中的映射,所述操作数包括上下文描述符和EPT指针的至少其中之一。
15.如权利要求14所述的方法,还包括:
部分基于从所述指令的操作数导出的上下文描述符从所述EPT选择映射。
16.如权利要求15所述的方法,还包括:
部分基于从所述上下文描述符导出的EPT指针选择至少部分存储在所述EPT中的映射。
17.如权利要求14所述的方法,还包括:
至少部分基于所述指令的操作数来选择所述访客地址。
18.如权利要求14所述的方法,其特征在于,将所述映射同步还包括至少部分基于所述EPT中存储的映射来更新所述TLB中存储的映射;所述对应的映射还包括所述EPT中存储的且与所述TLB中存储的映射具有相同访客地址的映射。
19.如权利要求14所述的方法,其特征在于,将所述映射同步还包括刷新所述TLB中存储的映射。
20.如权利要求14所述的方法,还包括至少部分基于所述指令的操作数来选择所述指令的执行模式。
21.如权利要求14所述的方法,还包括:
基于从所述指令的第一操作数导出的上下文描述符来选择至少部分存储在所述EPT中的映射;
至少部分基于所述指令的第二操作数来选择所述访客地址;以及
至少部分基于所述指令的第三操作数来选择所述指令的执行模式;
其中
所述指令的执行模式是如下模式的其中之一:
第一模式,在所述第一模式中,将所述TLB中存储的且与所述访客地址关联的单个映射与所述EPT中对应的映射同步;
第二模式,在所述第二模式中,将所述TLB中存储的且与从所述上下文描述符导出的EPT上下文关联的所有映射与所述EPT中对应的映射同步;以及
第三模式,在所述第三模式中,将所述TLB中存储的且与任何EPT上下文关联的所有映射与EPT中对应的映射同步。
22.如权利要求14所述的方法,其特征在于,所述访客地址还包括访客物理地址。
23.如权利要求1所述的方法,其特征在于,所述访客地址还包括访客线性地址。
24.一种基于虚拟化的系统,包括:
处理器;
通过总线耦合到所述处理器的存储器;
所述处理器的逻辑电路,所述处理器的逻辑电路用于执行指令来:
将至少部分存储在翻译后援缓冲器TLB中的且包括访客地址到主机的物理地址-主机物理地址的翻译的映射与至少部分存储在所述基于虚拟化的系统的扩充的分页表EPT中的对应的映射同步;以及
至少部分基于所述指令的操作数选择至少部分存储在所述EPT中的映射,所述操作数包括上下文描述符和EPT指针的至少其中之一。
25.如权利要求24所述的系统,其特征在于,所述处理器还:
部分基于从所述指令的操作数导出的上下文描述符从所述EPT选择映射。
26.如权利要求25所述的系统,其特征在于,所述处理器还:
部分基于从所述上下文描述符导出的EPT指针选择至少部分存储在所述EPT中的映射。
27.如权利要求24所述的系统,其特征在于,所述处理器还:
至少部分基于所述指令的操作数来选择所述访客地址。
28.如权利要求24所述的系统,其特征在于,所述逻辑电路还至少部分基于所述EPT中存储的映射来同步所述TLB中存储的映射;所述对应的映射还包括所述EPT中存储的且与所述TLB中存储的映射具有相同访客地址的映射。
29.如权利要求28所述的系统,其特征在于,所述逻辑电路还刷新所述TLB中存储的映射。
30.如权利要求14所述的系统,其特征在于,所述逻辑电路还至少部分基于所述指令的操作数来选择所述指令的执行模式。
31.如权利要求14所述的系统,其特征在于,所述逻辑电路还:
基于从所述指令的第一操作数导出的上下文描述符来选择至少部分存储在所述EPT中的映射;
至少部分基于所述指令的第二操作数来选择所述访客地址;以及
至少部分基于所述指令的第三操作数来选择所述指令的执行模式;
其中
所述指令的执行模式是如下模式的其中之一:
第一模式,在所述第一模式中,将所述TLB中存储的且与所述访客地址关联的单个映射与所述EPT中对应的映射同步;
第二模式,在所述第二模式中,将所述TLB中存储的且与从所述上下文描述符导出的EPT上下文关联的所有映射与所述EPT中对应的映射同步;以及
第三模式,在所述第三模式中,将所述TLB中存储的且与任何EPT上下文关联的所有映射与EPT中对应的映射同步。
32.如权利要求24所述的系统,其特征在于,所述访客地址还包括访客物理地址。
33.如权利要求24所述的系统,其特征在于,所述访客地址还包括访客线性地址。
34.如权利要求24所述的系统,其特征在于,所述存储器还包括动态随机存取存储器DRAM。
CN2010101434211A 2006-08-15 2007-08-14 将翻译后援缓冲器同步到扩充的分页表 Active CN101814056B (zh)

Applications Claiming Priority (3)

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/504964 2006-08-15
US11/504,964 2006-08-15

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN2007101427061A Division CN101149707B (zh) 2006-08-15 2007-08-14 将翻译后援缓冲器同步到扩充的分页表

Publications (2)

Publication Number Publication Date
CN101814056A true CN101814056A (zh) 2010-08-25
CN101814056B CN101814056B (zh) 2013-03-27

Family

ID=38543361

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2007101427061A Active CN101149707B (zh) 2006-08-15 2007-08-14 将翻译后援缓冲器同步到扩充的分页表
CN2010101434211A Active CN101814056B (zh) 2006-08-15 2007-08-14 将翻译后援缓冲器同步到扩充的分页表

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN2007101427061A Active CN101149707B (zh) 2006-08-15 2007-08-14 将翻译后援缓冲器同步到扩充的分页表

Country Status (6)

Country Link
US (18) US7555628B2 (zh)
JP (3) JP4849372B2 (zh)
KR (1) KR100944563B1 (zh)
CN (2) CN101149707B (zh)
DE (3) DE102007063960B3 (zh)
GB (1) GB2441039B (zh)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
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
WO2008126202A1 (ja) * 2007-03-23 2008-10-23 Fujitsu Limited ストレージシステムの負荷分散プログラム、ストレージシステムの負荷分散方法、及びストレージ管理装置
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 (ko) * 2012-11-22 2014-07-17 주식회사 이에프텍 비휘발성 메모리 시스템 및 이를 위한 맵핑 테이블 관리 방법
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
EP2997478B1 (en) * 2014-07-21 2019-03-13 VIA Alliance Semiconductor Co., Ltd. Efficient address translation caching in processor that supports large number of different address spaces
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US9665505B2 (en) 2014-11-14 2017-05-30 Cavium, Inc. Managing buffered communication between sockets
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
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 (zh) * 2015-05-11 2018-10-09 上海兆芯集成电路有限公司 具有载入扩展页表指令的处理器
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
US9898226B2 (en) 2015-10-28 2018-02-20 International Business Machines Corporation Reducing page invalidation broadcasts in virtual storage management
US10942683B2 (en) 2015-10-28 2021-03-09 International Business Machines Corporation Reducing page invalidation broadcasts
US10216643B2 (en) 2015-11-23 2019-02-26 International Business Machines Corporation Optimizing page table manipulations
JP6607798B2 (ja) * 2016-01-29 2019-11-20 株式会社ジャパンディスプレイ 表示装置
US20210026950A1 (en) * 2016-03-07 2021-01-28 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 (zh) * 2018-05-31 2021-02-09 华为技术有限公司 地址转换方法、装置及系统
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
US10970224B2 (en) * 2019-06-28 2021-04-06 International Business Machines Corporation Operational context subspaces
US11074195B2 (en) 2019-06-28 2021-07-27 International Business Machines Corporation Access to dynamic address translation across multiple spaces for operational context subspaces
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
CN112463657A (zh) 2019-09-09 2021-03-09 阿里巴巴集团控股有限公司 一种地址转换缓存清除指令的处理方法和处理装置
US20210406199A1 (en) * 2020-06-25 2021-12-30 Intel Corporation Secure address translation services using cryptographically protected host physical addresses

Family Cites Families (48)

* Cited by examiner, † Cited by third party
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 (ja) 1984-10-03 1986-04-30 Hitachi Ltd 拡張アドレス変換装置
JPS62295147A (ja) * 1986-06-16 1987-12-22 Hitachi Ltd 仮想計算機システム
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 (ja) 1991-03-28 1992-12-10 Ricoh Co Ltd マップドファイル仮想記憶方式
JPH05241965A (ja) * 1992-02-28 1993-09-21 Fuji Xerox Co Ltd メモリ管理装置
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 (de) * 1995-06-28 2006-01-26 Volkswagen Ag Arretiermechanismus für eine Kopfstütze
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 (ja) 1997-02-28 2001-04-09 川崎重工業株式会社 鉄カーバイドの製造方法
JP3607540B2 (ja) 1999-08-18 2005-01-05 エヌイーシーシステムテクノロジー株式会社 プログラム単位メモリアクセス属性管理方式
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 (de) * 2001-06-05 2002-12-19 Infineon Technologies Ag Vorrichtung und Verfahren zum Ermitteln einer physikalischen Adresse aus einer virtuellen Adresse unter Verwendung einer hierarchischen Abbildungsvorschrift mit komprimierten Knoten
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 (de) 2002-02-28 2003-09-18 Infineon Technologies Ag Datenverarbeitungsvorrichtung
US6996748B2 (en) * 2002-06-29 2006-02-07 Intel Corporation Handling faults associated with operation of guest software in the virtual-machine architecture
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
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
US7284100B2 (en) * 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
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
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
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 (de) * 2009-06-10 2010-12-16 Dr. Ing. H.C. F. Porsche Aktiengesellschaft Verstellvorrichtung für einen Kraftfahrzeugsitz sowie Verfahren zur Montage der Verstellvorrichtung

Also Published As

Publication number Publication date
US20180196758A1 (en) 2018-07-12
US20130054935A1 (en) 2013-02-28
JP4849372B2 (ja) 2012-01-11
US20160019162A1 (en) 2016-01-21
US9298640B2 (en) 2016-03-29
JP2012053888A (ja) 2012-03-15
JP2014013615A (ja) 2014-01-23
DE102007063876A1 (de) 2015-06-18
US20160019165A1 (en) 2016-01-21
US20160019163A1 (en) 2016-01-21
KR20080015763A (ko) 2008-02-20
US20150039850A1 (en) 2015-02-05
US8601233B2 (en) 2013-12-03
CN101149707A (zh) 2008-03-26
CN101814056B (zh) 2013-03-27
US20100011186A1 (en) 2010-01-14
US9372806B2 (en) 2016-06-21
KR100944563B1 (ko) 2010-02-25
US20180060247A1 (en) 2018-03-01
US10747682B2 (en) 2020-08-18
US20150205728A1 (en) 2015-07-23
US9251094B2 (en) 2016-02-02
US20150205723A1 (en) 2015-07-23
DE102007037814A1 (de) 2008-03-27
US8949571B2 (en) 2015-02-03
GB2441039A (en) 2008-02-20
US20160019166A1 (en) 2016-01-21
US9678890B2 (en) 2017-06-13
US20140059320A1 (en) 2014-02-27
US9372807B2 (en) 2016-06-21
GB0715604D0 (en) 2007-09-19
US20180196759A1 (en) 2018-07-12
US9330021B2 (en) 2016-05-03
US20160019140A1 (en) 2016-01-21
GB2441039B (en) 2009-01-28
US20080046679A1 (en) 2008-02-21
US20160019164A1 (en) 2016-01-21
CN101149707B (zh) 2010-06-02
US9298641B2 (en) 2016-03-29
US7555628B2 (en) 2009-06-30
US9122624B2 (en) 2015-09-01
DE102007063960B3 (de) 2021-12-16
JP5663069B2 (ja) 2015-02-04
JP2008077642A (ja) 2008-04-03
US10180911B2 (en) 2019-01-15
JP5379203B2 (ja) 2013-12-25
US8296546B2 (en) 2012-10-23
DE102007037814B4 (de) 2021-12-02
US8099581B2 (en) 2012-01-17
US20120110299A1 (en) 2012-05-03
US9141555B2 (en) 2015-09-22
US9262338B1 (en) 2016-02-16

Similar Documents

Publication Publication Date Title
CN101149707B (zh) 将翻译后援缓冲器同步到扩充的分页表
CN100501680C (zh) 虚拟化虚拟机系统中的物理存储器
CN101107593B (zh) 支持虚拟机环境中的地址转换的方法及装置
EP2691857B1 (en) Memory mirroring and redundancy generation for high availability
CN102906721B (zh) 与访问地址空间并行地对地址空间调整大小
CN102906719B (zh) 输入/输出地址到存储器地址的转换
CN102906722B (zh) 将消息信号中断转换为i/o适配器事件通知
CN109690484A (zh) 在虚拟机进入时转换
US9256546B2 (en) Transparent code patching including updating of address translation structures
CN102906716B (zh) 促进计算环境的系统存储器的管理的方法
RU2562372C2 (ru) Активация/деактивация адаптеров вычислительной среды
CN102541619B (zh) 虚拟机管理装置和方法
CN102906702B (zh) 对适配器的地址空间的访客端访问
CN102906705B (zh) 将消息信号中断转换为对客户操作系统的i/o适配器事件通知
CN102906700B (zh) 用于阻止虚拟处理器的多功能指令的指令功能的功能虚拟化工具
US7596677B1 (en) Paging cache optimization for virtual machine
CN102473139A (zh) 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元
CN103975303A (zh) 用于预链接软件以改善虚拟系统中的存储器去重的技术
US20210042138A1 (en) Computing devices
US20060248282A1 (en) Operation region describing a virtual device
CN102906693A (zh) 用于与适配器进行通信的存储/存储块指令
US7694301B1 (en) Method and system for supporting input/output for a virtual machine
WO2022266828A1 (en) Architectural extensions for memory mirroring at page granularity on demand
Ruia Virtualization of non-volatile ram
CN101957775A (zh) 用于支持多处理器虚拟机环境中的地址翻译的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant