CN103597451A - 用于高可用性的存储器镜像和冗余生成 - Google Patents
用于高可用性的存储器镜像和冗余生成 Download PDFInfo
- Publication number
- CN103597451A CN103597451A CN201180069728.4A CN201180069728A CN103597451A CN 103597451 A CN103597451 A CN 103597451A CN 201180069728 A CN201180069728 A CN 201180069728A CN 103597451 A CN103597451 A CN 103597451A
- Authority
- CN
- China
- Prior art keywords
- memory
- page
- guest
- address
- transcode
- 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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
- G06F11/1484—Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
基于虚拟化的系统包括主机和可各自包括访客存储器的多个虚拟机。虚拟机监视器(VMM)对系统中的底层平台硬件具有访问权并可控制平台中的物理资源。平台硬件包括处理器和耦合到所述处理器的存储器。此外,VMM可以管理包括虚拟机上运行的访客操作系统的访客软件。二进制转换逻辑可以用经转换代码来替换与访客应用中的热点对应的访客存储器写指令以生成访客存储器的镜像内容。二进制转换逻辑可以组合区域中的一个或多个访客存储器写指令并保持所述区域的原子性。处理器可以一起执行原子区域中的经转换代码以便在访客存储器中写入内容并且在镜像存储器中写入镜像内容。VMM可以为镜像存储器分配主机存储器中的存储器区域。访客存储器包括一个或多个访客存储器页面,并且镜像存储器可以包括一个或多个镜像存储器页面。VMM可以将偏移加到访客存储器页面的虚拟地址以获得镜像存储器页面的虚拟地址。VMM可以管理或仿真访客页面表,所述访客页面表包括访客存储器的虚拟地址到访客物理地址的映射。VMM可以将影子页面表与访客页面表中的映射同步。所述影子页面表包括访客存储器的虚拟地址到主机物理地址的映射以及镜像页面的虚拟地址到主机物理地址的映射。一旦访客存储器页面中发生存储器故障,VMM可以从镜像存储器页面恢复已损坏访客存储器页面的内容。
Description
背景技术
虚拟化使得具有对于虚拟化的硬件支持和软件支持的单个主机能够呈现机器接口的抽象,使得主机的底层硬件表现为一个或多个独立操作的虚拟机。因此,每个虚拟机可用作自足的平台。虚拟化技术可用于允许多个访客操作系统和/或其它访客软件共存并且表面上同时且表面上独立地在多个虚拟机上执行,而实际在物理上是在同一硬件平台上执行。虚拟机可以模仿主机的硬件,或备选地完全呈现不同的硬件抽象。
虚拟化系统可以包括可以控制主机的虚拟机监视器(VMM)。VMM向虚拟机中操作的访客软件提供一组资源(例如处理器、存储器、10装置)。VMM可使用硬件虚拟化辅助的设施来向虚拟机提供服务并且提供保护免受来自主机上执行的多个虚拟机的影响,以及在主机上执行的多个虚拟机之间提供保护。VMM可以创建包括在虚拟机中并在VMM中用软件仿真的虚拟装置(例如虚拟IO装置)。VMM以适合针对访客软件在其上运行的虚拟机来共享主机硬件的方式在软件中操纵/仿真指令。VMM的示例可以包括混合VMM、基于主机的VMM和管理程序VMM。在管理程序架构中,VMM可以具有对平台硬件的访问权并且可以控制底层平台中的物理资源。
附图说明
本文描述的本发明是以示例的方式而不是以限制的方式在附图中图示。为了图示的简单和清楚起见,附图中图示的元件未必是按照比例绘制的。例如,为了清楚起见,一些元件的尺寸可相对其它元件被放大。此外,在认为适合的情况下,在附图之间重复了附图标记以指示对应的部件或相似的部件。
图1是根据本发明的实施例的示例性虚拟机环境的高级结构的示意图。
图2是一个实施例中的虚拟机和主机之间关系的示意图。
图3是根据本发明的实施例的页面表机制的示意图。
图4是用于提供镜像页面的代码中的变化的示意图。
图5图示了基于处理器的系统的示意性框图。
图6图示了根据本发明的实施例的方法的示意图。
图7图示了根据本发明另一实施例的方法的示意图。
具体实施方式
下面的描述可涉及用于存储器故障恢复的技术。所述技术的实现不限于计算系统中;它可以为了相似目的而由任何执行环境所使用,诸如,例如任何其它数字/电子装置。在下面的描述中,对众多特定细节(例如逻辑实现、操作码、用于指定操作数的方式、资源分割/共享/复制的实现、系统部件的类型和相互关系以及逻辑分割/集成选择进行阐述,以便提供对本发明的更全面理解。然而,可以在没有此类特定细节的情况下实践本发明。在其它实例中,控制结构和完整的软件指令序列没有详细示出,以免使本发明变得模糊。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的提及指示所描述的实施例可以包括具体特征、结构或特性,但可能不一定每个实施例都包括所述具体特征、结构或特性。此外,这样的短语并不一定指同一实施例。此外,当结合实施例描述具体特征、结构或特性时,认为结合无论是否被明确描述的其它实施例来实现这样的特征、结构或特性是在本领域技术人员的知识范围内。
本发明的实施例可以用硬件、固件、软件或其任何组合来实现。本发明的实施例还可以作为存储在机器可读介质中可由一个或多个处理器读取并执行的指令来实现。机器可读介质可以包括用于存储或传送以可由机器(例如,计算装置)所读取形式的信息的任何机构。例如,机器可读介质可包括:只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪速存储器装置;电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等),以及其它。
下面的描述可包括诸如第一、第二等的术语,这些术语仅用于描述目的而不解释为限制性的。
图1图示了虚拟机环境100的一个实施例。在这个实施例中,基于处理器的平台116可以执行VMM114或任何其它虚拟机控制逻辑。尽管用软件来实现,VMM可以仿真虚拟机接口并将虚拟机接口导出到较高级软件。在一些实施例中,此类较高级软件可以包括标准OS、实时OS或可以是具有有限操作系统功能性的精减环境,并且可以不包括标准OS中可用的OS设施。备选地,例如,VMM114可以在另一个VMM内运行或使用另一个VMM的服务来运行。例如,在一些实施例中,VMM可以例如用硬件、软件、固件或通过各种技术的组合来实现。在平台硬件上直接执行的VMM的部件在本文中被称为VMM的主机部件。在另一个实施例中,VMM114的示例可以是混合虚拟机监视器、主机虚拟机监视器或管理程序虚拟机监视器。
平台硬件116可以是个人计算机(PC)、服务器、大型机、例如个人数字助理(PDA)或“智能”移动电话等手持装置、因特网协议装置、数字照相机、便携式计算机、例如上网本或笔记本或平板计算机等手持PC或例如微控制器等嵌入式应用、数字信号处理器(DSP)、芯片上系统(SoC)、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或其它基于处理器的系统。
平台硬件116至少包括处理器126和存储器120。处理器126可以是能够执行程序的任何类型的处理器,诸如微处理器、数字信号处理器、微控制器或类似的。在实施例中,处理器可以包括用于执行的微代码、可编程逻辑或硬编码逻辑。虽然图1只示出一个这样的处理器126,但是在实施例中,系统中可以存在一个或多个处理器。此外,处理器126可以包括多个核,支持多个线程等。处理器126可以包括微代码、可编程逻辑或硬编码逻辑,用于实施与本文描述的各种实施例相关联的操作。
在各种实施例中,存储器120可以包括随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器、任何其它类型的易失性存储器装置或非易失性存储器装置、或上述装置的任何组合、或可由处理器126读取的任何其它类型的机器介质。存储器120可以存储用于实施程序执行和其它方法实施例的指令和/或数据。在一些实施例中,本发明的一些元件可以在其它系统部件中实现,例如,在平台芯片组中或在系统的一个或多个存储器控制器中。
VMM114可向访客软件呈现一个或多个虚拟机的抽象。VMM114可以向各种访客软件呈现VM的相同抽象或不同抽象。图1示出了两个虚拟机102和112。在每个虚拟机上运行的访客软件(例如访客软件103和113)可以包括访客0S(例如访客OS104或106)以及各种访客软件应用108和110。访客软件103和113可以访问访客软件103和113在其上运行的虚拟机内的资源(例如处理器寄存器、存储器和I/O装置)并实施其它功能。例如,根据虚拟机102和112中呈现的处理器和平台的架构,访客软件103和113可以具有对所有寄存器、高速缓存、结构、I/O装置、存储器等的访问权。
在一个实施例中,响应于虚拟处理器102引用其虚拟地址空间中的存储单元,可以由存储器虚拟化管理逻辑130生成对主机116的物理存储器(或机器物理存储器)中实际地址的引用,所述存储器虚拟化管理逻辑130可以用硬件(有时结合到处理器126(例如,存储器管理单元(MMU))中)和/或软件和/或固件实现。例如,存储器虚拟化管理逻辑130可以将存储器页面的虚拟地址转换成物理地址。除了其它功能之外,存储器虚拟化管理逻辑130还可以将访客机器的虚拟存储器空间中的位置映射到主机的物理存储器地址空间中的位置。在图1的示例中,除了其它功能之外,存储器虚拟化管理逻辑130还可以从虚拟存储器空间映射到物理存储器空间。物理存储器可被分成各部分,例如可以与来自物理存储器中其它过程的页面交织的页面。虽然图1的示例包括存储器虚拟化管理逻辑130,但是在一些实施例中,一个或多个控制逻辑可以被用来实现存储器虚拟化管理逻辑130。
基于例如分页(paging)的任何存储器管理技术,存储器虚拟化管理逻辑130可实施地址转换,例如,虚拟地址到物理地址的转换。存储器虚拟化管理逻辑130可以引用处理器126、存储器120、平台硬件116中的任何其它存储器装置或任何其它存储位置和/或这些部件和位置的任何组合中存储的一个或多个数据结构。例如,数据结构可以包括页面目录和页面表。存储器虚拟化管理逻辑130可以利用例如用于存储器页面、包括从第一地址到第二地址的映射的页面表。例如,存储器虚拟化管理逻辑130可以从访客机的虚拟存储器地址转换成线性存储器地址(例如,在Intel x86架构中),线性存储器地址还可以例如基于物理页面表被转换成主机的物理存储器地址。在另一个实施例中,基于物理页面表,存储器虚拟化管理逻辑130可以直接从虚拟存储器地址转换成主机的物理存储器地址,例如用于可能不具有分段机制的Intel架构或禁用了分段的x86架构。本文所使用的术语“虚拟存储器地址”可以包括可以被用作将要被转换成第二地址主机物理存储器地址的输入地址的、被称为第一地址的任何地址。例如,取决于例如处理器架构,“虚拟存储器地址”可以包括被称为逻辑或线性地址的任何地址。
图2描绘了在一个实施例中在主机上执行的一个或多个虚拟机之间关于访客存储器的映射的关系。图2图示了访客物理存储器是如何通过主机的虚拟化系统被重新映射的。虚拟机(例如虚拟机202)可以呈现虚拟处理器206给虚拟机202上运行的访客软件。虚拟机202可以提供物理存储器的抽象给访客操作系统或其它访客软件、访客物理存储器204。当访客软件在虚拟机202上执行时,它实际上是由主机212利用主机物理存储器214在主机处理器216上执行的。
如图2示出,在一个实施例中,访客物理存储器204(在虚拟机202中,访客物理存储器204可以被呈现为在地址0开始的物理存储器空间)被映射到主机物理存储器214中的某个连续区域218。如果向虚拟机202分配了存储器的256MB,一个可能的映射可以是向虚拟机202分配128MB-384MB的范围。尽管图2图示了一个虚拟机的示例,一些实施例可具有一个或多个虚拟机。例如,每个虚拟机中的访客物理存储器可被映射到主机物理存储器214的不同部分并且每个虚拟机可引用0MB-256MB的访客物理地址空间。如图2示出,主机212可具有1024MB的主机物理存储器。VMM可以知道每个虚拟机的映射到主机物理地址空间的不同部分的地址空间。
在更一般的实施例中,存储器可以被分段或者分成若干部分,例如页面。每个页面可以包含已知数量的存储空间,例如基于处理器架构要求,跨实现变化,例如一个页面可以包含4096字节的存储空间、1MB的存储空间,或可能针对应用期望的任何其它数量的存储空间。例如,诸如图1的130等存储器虚拟化管理可支持将访客物理存储器204或主机物理存储器214分段成各4096(“4k”)字节的若干页面。存储器虚拟化管理逻辑130可以将虚拟存储器中的页面映射到主机物理存储器中的页面。存储器虚拟化管理逻辑130可使用页面表或其它数据结构来指定与访客空间物理页面位置对应的物理页面位置。
图2中示出的虚拟机和存储器映射仅是一个实施例的一种表示,在其它实施例中,在主机上执行的虚拟机的实际数量可以在一个到多个之间变化;主机和虚拟机的实际存储空间大小可以变化并且可以是在虚拟机之间可变的。该示例描绘了存储空间到虚拟机的连续分配;然而,在一些实施例中,访客物理存储器的视图可不一定限制为连续的。在另一个实施例中,访客物理地址可能不总是从地址0MB开始。本发明的实施例可以与含有更多或更少存储空间的系统一起使用,并且配置成在更大页面或更小页面上操作。分配给虚拟机的物理存储器页面可以是不连续的并且可能分布在主机物理存储器214中彼此交织,以及与属于VMM的页面以及属于其它主机过程的页面交织。
在一个实施例中,平台硬件上的运行时间存储器故障可以影响例如平台的可靠性、可服务性和可用性(RAS)。通过用每个单元(例如每个高速缓存行)n+1位冗余的存储器冗余来校正n位错误,存储器架构的硬件增强可以提供某一等级的增强RAS。然而,存储器故障可发生于存储器块或若干群集块或在一个单元中发生等于或大于n+1位错误,所述存储器故障不能通过硬件本身恢复。此外,在虚拟化环境中,虽然存储器故障(例如硬件不可恢复)可以被引导到访客OS用于进一步的处理(例如在有限过程内包含故障),然而,在访客中运行的服务可能不得不被中止。
如果发生硬件故障,基于软件的虚拟机(VM)级容错(例如VM日志和回放或VM检查点)可以通过生成备份VM来增强RAS。VM日志和回放以及VM检查点可能要求复制平台资源(例如处理器、存储器、I/O)用于VM备份以及VMM干预VM的执行。
参考图2,在实施例中,管理程序(例如图1的VMM114)可以分配主机物理存储器214中的连续区域用于镜像存储器220,所述镜像存储器220镜像被映射到访客物理存储器204的物理存储器218。镜像存储器220可以包括与被映射的物理存储器218中的对应页面相同的一个或多个存储器页面或具有与所述对应页面相同内容的一个或多个存储器页面。例如,对于访客物理存储器204,镜像存储器220可以具有一对一冗余配置。在另一个实施例中,系统可实现n对1冗余配置(用于增加的可用性),例如通过为一个字节的访客存储空间生成n字节冗余或生成n字节的镜像存储空间,其中n为大于或等于1的正整数。在另一个实施例中,系统可以为1个页面的访客存储空间实现n个页面的镜像存储器,或在任何块的单元中来为每1块访客存储器生成n块镜像存储器。在一些实施例中,VMM114可以向在虚拟机202上执行的访客OS发送协同分配冗余存储器的请求以镜像访客物理存储器204,例如通过准虚拟化。访客OS可以分配冗余存储器,例如通过使用存储器气球驱动器。该示例描绘了镜像存储器的连续分配的实施例。本发明的实施例可以与包含更多或更少存储器的系统一起使用,并且配置成在更大页面或更小页面上操作。分配给镜像存储器的物理存储器页面可以不是连续的并且可能分布在主机物理存储器214中,彼此交织,以及与属于VMM的页面和属于其它主机过程的页面交织。
图3示出了用于从虚拟地址转换物理地址或根据虚拟地址计算物理地址的页面表机制的一个示例。除了许多其它的之外,页面表格式的示例还可以包括指令集架构(例如Intel Itanium架构、x86架构的32位、64位和例如物理地址扩展(PAE)/页面大小扩展(PSE)等其它变化,以及到其它配置。在一些实施例中,页面表机制可以包括用于整个系统的一个页面表、用于每个应用的单独页面表、用于每个段的单独页面表或这些的某种组合。页面表可以实现为树状页面表,群集哈希页面表或甚至线性阵列等。在一些实施例中,页面表可以包括一个或多个等级。
在每个虚拟机上执行的访客软件可引用访客虚拟地址,所述访客虚拟地址例如在访客中可基于访客页面表被转换成访客物理存储器地址。在另一个实施例中,通过使用由VMM管理的页面表,主机中的处理器可以将访客虚拟地址转换成主机物理存储器地址。在一个示例中,为了转换,VMM可以使用主机物理页面表,例如影子页面表。所述影子页面表可以与用于VMM中的语义的访客页面表同步。在另一个实施例中,通过与访客OS协同工作以保持真实的转换信息(例如,从虚拟地址到主机物理地址),VMM可以在例如Xen准虚拟化中使用诸如直接页面表等单个主机物理页面表。在这个实施例中,在访客物理存储器(例如302)中,虚拟机可以不具有访客页面表。基于主机物理页面表或直接页面表,VMM可以为访客OS仿真访客页面表。在这个实施例中,访客OS可获得具有附加数据结构(例如机器到访客物理和访客物理到机器页面映射)的仿真的访客页面表的知识。
参考图3,访客物理存储器302可以存储访客页面表结构350。访客页面表结构350可以包括访客物理地址和访客物理地址之间的映射。在图3的示例中,访客页面表结构350可以包括访客目录表304和访客页面表306。在一些实施例中,任何其它格式的数据结构可以由例如在访客中活动的存储器管理机制的(例如,由访客OS配置的)访客软件利用,以便将访客虚拟地址转换成访客物理地址。例如,在一个实施例中,目录表304可以存储可指向页面表306的基准(base)的目录条目330。来自访客页面目录表330的信息可以包括页面表306的基地址。页面表306可以包括页面表条目332。来自页面表条目332的信息可以包括正由访客软件访问的访客物理页面(未示出)的基地址。在一个实施例中,响应于访客软件执行过程以引用例如由访客物理地址X0表示的访客虚拟地址,访客软件可以使用访客页面表结构350来将访客物理地址X0转换成在正被访问的对应的访客物理页面(例如,由GPN0表示)内的访客物理地址(例如,GPX0)。例如,从页面表条目332推导的访客物理页面的基地址可以与访客物理地址X0的适当位组合以形成访客物理地址GPX0。
参考图3,管理程序312可以维护作为访客页面表结构350的影子版本的影子页面表结构360。影子页面表结构360可以存储访客虚拟地址与主机物理地址之间的映射。在图3的实施例中,影子页面表结构360包括可指向第一影子页面表316以及第二影子页面表318的影子页面目录表314,所述第一影子页面表316可以与访客页面表306同步,所述第二影子页面表318可以包括用于镜像存储器308的映射。影子页面目录表314可以包括第一目录表条目340,其包括第一影子页面表316的基地址。第一影子页面表316包括第一影子页面表条目346用于指向响应于访客机引用对应的访客虚拟地址X0而正被访问的主机物理页面(例如,由HPN0表示的)的基准(例如,基地址)。管理程序312可以利用目录表314和第一页面表316来将访客虚拟地址X0转换成主机物理页面HPN0的主机物理地址(例如,HPX0)。例如,管理程序312可以将主机物理页面HPN0的基地址和访客虚拟地址X0的适当位用于转换。
图3图示了一个或多个镜像页面308(例如,由MHPN0,1...n表示)的实施例,在一对一的镜像配置或多对一的镜像配置中,所述镜像页面308镜像原始被映射用于访客页面GPN0的物理页面HPN0。管理程序可以保存用于从GPN0映射到HPN0和MHPN0的关系。所述一个或多个镜像页面308可以由管理程序312在主机物理存储器中分配,或与访客机上运行的访客软件(例如,访客OS)合作而在主机物理存储器中分配。管理程序312可以将一个或多个镜像页面308的访客虚拟地址与主机物理地址之间的映射存储在影子页面表结构360中。
在一个实施例中,所述一个或多个镜像页面308可以具有作为访客虚拟地址X0的偏移的访客虚拟地址X1,例如X1=X0+mirror_offset,在这里mirror_offset是用来形成镜像页面308的访客虚拟地址X1的偏移值。在一个实施例中,mirror_offset可以具有固定值;然而,在一些实施方案中,管理程序312和/或二进制转换代理(其将关于图4和图5被提及)可利用预定策略来生成可以是可变的mirror_offset。在一些实施例中,其它策略可以被用来定位镜像页面。在n对1镜像的实施例中,以上可以被实施多次以对于每第k个镜像(k=1...n)生成一个或多个转换。
影子页面表结构360还可包括镜像存储器空间中镜像页面的访客虚拟地址与主机物理地址之间的映射。例如,影子页面目录表314可以包括影子目录表条目342。影子页面表条目342的内容包括用于镜像存储器的第二影子页面表318的基地址。第二影子页面表318可以包括可指向镜像页面308中页面的基准的影子页面表条目348。来自影子页面表条目348的信息可以包括镜像页面308的基地址。在一个实施例中,管理程序312可以使用镜像页面308中页面的基地址和镜像页面308中页面的访客虚拟地址X1中合适的位来获得实际上正由主机或对应的主机处理器访问的镜像页面308中页面的主机物理地址。
图3中示出的页面表机制350和影子页面表机制360仅是一个实施例的一种表示。虽然图3示出了分别用于映射的主机物理页面和镜像页面的两个单独的影子页面表316和318,在一些实施例中,影子页面表316和318可以集成在相同的影子页面表中。在另一个实施例中,访客页面表和影子页面表可以是2、3或4级的页面表或具有更多级。在一些实施例中,如上面提及的,页面表机制和影子页面表机制可以具有不同的层级或结构。例如,访客页面表可以是2级页面表,而影子页面表316和318可以配置为3级页面表或4级页面表。
虽然图3图示了影子页面表的实施例;然而,在一些实施例中,可以利用直接页面表,其中,例如访客可以不具有访客页面表的实例。在直接页面表的实施例中,访客可以仍然具有它的页面表的“视图”(例如,通过对页面表内容的读/写API操作),其可以由VMM312基于直接页面表仿真。例如,访客页面表的“视图”可以关于图3中的访客页面表350引用。
图4是用于提供镜像页面的代码或指令中的变化的示意图。图4的实施例图示了访客机上的访客软件的原始代码412。原始代码412可以存储在访客存储器中。管理程序中的二进制转换(BT)层或任何其它转换逻辑(例如,图5的BT层512)可以在原始代码412上实施转换。在一些实施例中,BT转换层512可以在原始代码412上实施各种转换(诸如二进制转换)和优化;在一些实施例中,由BT转换层512做出的转换可以不改变一些原始代码。在图4的示例中,原始代码412可以被组合成一个或多个代码块,例如代码块414和416;然而,在一些实施例中,原始代码412可以不被组合。在一个实施例中,代码块414可包括一个或多个指令。
附图标记418可以指访客存储器写指令418。在一个实施例中,写指令418可以指存储器存储指令,例如64和IA-32架构中的“mov”指令。在另一个实施例中,写指令418的示例可以包括用于存储器存储和/或处理器内部状态改变的任何指令,例如64和IA-32架构中的“push”、“call”、“ret”、“iret”、“stosb”、“smovsb”指令,或可修改存储器的内容的任何其它架构中的类似指令。在又一实施例中,写指令418的示例可以包括可以使用例如浮点寄存器来修改存储器状态和/或处理器内部状态的指令。指令418′和/或428可使用由所述架构的任何写指令支持。在另一个实施例中,指令428、418′和418可以使用相同的写指令或不同的写指令。
在1对1镜像的实施例中,BT层512可以将访客存储器写指令418转换成两个经转换写指令418′和428,并且在n对1镜像的实施例中,可以将访客存储器写指令418转换成多个经转换写指令(例如,n个经转换写指令)。经转换写指令418′可以访问与原始访客存储器写指令418相同的访客存储单元或地址。例如,如图4中示出,经转换代码418′可以在地址“[addr]”(例如图3的实施例中的X0)中写入“D0”。在图2的实施例中,内容“D0”可被写到映射的主机物理存储器空间218中的地址232。
参考图4,用于访客存储器写指令418的经转换代码还可以包括附加的写指令428以在地址“[addr+R]”(例如图3的实施例中的X1)中写入内容“D0”,其中“R”表示到原始地址“[addr]”的偏移。响应于经转换代码428,被写入或将要被写入地址“[addr]”中的内容“D0”可被镜像到地址“[addr+R]”。在另一个实施例中,内容“D0”可被镜像到一个或多个镜像地址,例如通过使用多个镜像数据写指令428。在一个实施例中,偏移“R”可以具有固定的值;然而,在一些实施例中,偏移可以不是固定的和/或其它策略可以被用来形成镜像存储器。在图2的实施例中,内容“D0”被示出为写入镜像存储器空间220的地址234中。在一些实施例中,内容“D0”可以被写入主机物理存储器214中的镜像存储器空间220的多个地址中。
BT层可以将用于一个或多个访客存储器写指令的经转换代码组合到一起来形成经转换代码(TC)块,例如TC块424和426。在一个实施例中,响应于TC块中的每个访客存储器写,BT层可以镜像存储器。在另一个实施例中,响应于每个TC块,BT层可以更新镜像存储器。在任一实施例中,BT层512可以保持每个TC块的原子性并且可以在整个TC块中撤销一个或多个写操作。在响应于执行TC块而更新镜像存储器和访客存储器两者之前,当TC块内发生存储器故障时,管理程序510可以通知BT层512从TC块的开头重新执行TC块的整个操作。经转换代码可以存储在转换高速缓存(例如图5的转换高速缓存516)中;在一些实施例中,经转换代码可以存储在处理器126、存储器120、任何其它存储器装置或平台硬件116中的任何其它存储位置和/或这些部件和位置的任何组合中。在一些实施例中,经转换代码可以包括可以基于由BT层512做出的转换而改变的代码和/或在由BT层512做出转换后可能未改变的代码。在一些实施例中,BT层可以仅将与写指令对应的经转换指令组合成一个或多个TC块;在一些实施例中,组合成TC块的指令可以不是写指令。
在另一个实施例中,BT层可以修改经转换代码以在执行存储器写指令和镜像存储器写指令之后对原始访客存储器和镜像存储器的存储器地址中的内容实施比较以验证这些写已被正确执行;然而,在一些实施例中,所述比较可能不是必需的。
在如图4中示出的示例中,为了简单描述,相比执行用于写镜像存储器的经转换代码,用于原始访客存储器写指令的经转换代码可更早执行;然而,在一些实施例中,可以实现不同的顺序,例如经转换代码写访客存储器可以不早于写镜像存储器。
图5图示了基于处理器的系统的实施例的框图。系统500包括系统存储器502,系统存储器502中可以存储访客OS504和应用506或在虚拟机上运行的其它访客软件和应用。系统500还可以包括VMM(例如管理程序510)或可以驻留在系统存储器502或任何其它位置中的任何其它虚拟机控制逻辑。管理程序510可以包括二进制转换(BT)层或逻辑512。虽然图5图示了使用管理程序510中的BT层512的实施例,然而,在一些实施例中,可以由管理程序510利用任何其它转换层或逻辑。管理程序510可包括存储器虚拟化控制逻辑513。例如,对存储器虚拟化控制逻辑513的描述可以参考上文关于存储器虚拟化管理逻辑130提及的实施例。
BT层512可以包括区域形成器514和转换器516。转换器516可以在原始代码上实施二进制转换或任何其它转换和/或优化,以生成经转换代码540。在一个实施例中,转换器516还可以生成经转换代码或一个或多个存储器写指令来将对于每个访客存储器写被写或将要被写的数据镜像到镜像存储器。经转换代码可以通过区域形成器514形成一个或多个经转换代码块或以任何其它组合格式。经转换代码块可以存储在转换高速缓存中。区域形成器514可以将经转换代码块保持为原子区域。在另一个实施例中,用于镜像存储器写的经转换代码还可以被存储在平台硬件520的处理器中的一个或多个内部缓冲器(未示出)中并且对系统存储器502和/或用于二进制转换522的硬件加速而言可以是不可见的。在一些实施例中,硬件加速可以不是必需的或者以任何其它格式,二进制转换或其它转换支持可以在管理程序中实现。
转换代码(例如一个或多个经转换代码块)可以(例如,由管理程序)存储在管理程序510中的转换高速缓存516中或系统中的任何其它位置中。平台硬件520可以包括跳转表524。响应于经转换代码被存储在例如转换高速缓存516中,跳转表524可包括与原始代码对应的原始存储器地址和用于经转换代码的转换高速缓存地址之间的映射。响应于平台硬件520(例如处理器或任何其它执行逻辑)执行由跳转表中的原始存储器地址指向的原始代码,处理器或任何其它执行逻辑可以基于跳转表跳转到对应的转换高速缓存地址并执行转换高速缓存地址中的经转换代码。在一个实施例中,平台硬件520可以包括微代码生成逻辑526,微代码生成逻辑526还可以将经转换代码540转换成任何其它格式的微代码以支持各种指令微代码后端;然而,在一些实施例中,从经转换代码540转换成其它微代码可能不是必需的。在一个实施例中,来自微代码生成逻辑526的微代码可由平台硬件520中的处理器或任何其它执行逻辑来执行。
参考图5,平台硬件520可以包括自修改代码(SMC)逻辑528以在平台硬件中提供自代码修改功能;然而,在一些实施例中,SMC逻辑530可以不是必需的。平台硬件520还可以包括提交缓冲器530。每个原子区域中所有存储器写的提交可能发生在原子区域执行结束时。例如,响应于处理器执行原子区域中的存储器写指令,所述原子区域中的所有写指令可以存储在处理器中的一个或多个内部缓冲器中并且在所有写指令被存储在缓冲器中之后,所述处理器可一起或基本上同时执行这些写指令。响应于原子区域中的存储器写指令被执行,对应的执行结果可以被提供给处理器中的一个或多个状态寄存器或控制寄存器,例如RAX、RBX、RCX等。在一个实施例中,BT层512可以除了其它方式之外还利用下部的硬件520中的受限事务存储器的硬件特征来确保经转换代码块作为原子区域。
响应于存储器故障,处理器可以通知VMM(512或510,取决于实现)中的机器检查异常(MCE)处理机(未示出)。基于由处理器提供的信息(例如错误物理地址(例如,EHPN1)),MCE处理机可采取控制并识别已损坏存储器页面。如果已损坏页面在访客页面内,则管理程序510可以使已损坏页面离线或禁用已损坏页面并分配新的页面来做已损坏存储器页面的备份。管理程序510可以修改用于该访客的映射(例如指向新页面的影子页面表或直接页面表),和/或任何其它机器到访客物理页面映射数据结构、访客物理到机器页面映射数据结构和/或机器到镜像页面映射数据结构。管理程序510可以查找机器到访客物理页面映射数据结构来确定错误访客物理页面(例如,EGPN1),或者它可以在访客物理到机器页面映射数据结构中搜索来确定EGPN1。管理程序510可以使用访客物理到镜像页面映射数据结构来确定用于EGPN1的镜像主机页面号(MHPN1)。在另一个实施例中,管理程序可以直接使用机器到镜像页面映射数据结构来确定镜像主机页面号(MHPN1)。响应于确定MHPN1,管理程序510可以从镜像页面(MHPN1)恢复访客存储器的内容,并且如果用最新的数据来更新了镜像存储器,则通知BT层512继续执行。在另一个实施例中,管理程序510可以在镜像存储器未被更新的情况下丢弃当前TC块操作以重新执行TC块,或者BT层512可以撤销先前的一个或多个写操作。如果已损坏页面在镜像页面内,则管理程序510可以使用新页面来替换已损坏镜像页面并从原始经映射物理页面(例如218)恢复镜像页面的内容。虽然图5的管理程序由多个单独的逻辑实现,然而,在一些实施例中,所述多个逻辑可以不被集成到一个或多个逻辑或模块中。在一些实施例中,图5的管理程序中的逻辑可以通过软件、硬件、固件和/或它们的任何组合来实现,或者可以由硬件平台实现。
图6的流程图描绘了一个实施例中访客应用的执行。该执行开始于604。处理器可将访客应用中原始代码中的一个或多个写组合到代码块中,例如经由二进制转换层中的区域形成器。处理器可以利用在二进制转换层下方的受限事务存储器的硬件特征来形成代码块作为原子区域。在块606中,处理器可以例如经由转换器516将原始代码转换成可以被存储在转换高速缓存中的二进制转换代码。在另一个实施例中,处理器可以在原始代码上实施任何其它转换或优化。
参考图6,在块606中,例如经由转换器516,处理器还可以转换原子区域中的每个写指令以生成经二进制转换的第一经转换写指令和写镜像存储器的第二经转换写指令。第一经转换写指令和第二镜像存储器写指令可以分别在访客存储器(例如,访客存储器页面)和镜像存储器(例如,镜像存储器页面)中写入相同的内容,或者在镜像存储器中复制被写到或将要被写到访客存储器的内容。第二经转换写指令本身可以是由处理器二进制转换的。在一些实施例中,响应于原始代码在块606中被转换,可以形成原子区域。
在块608中,处理器可生成跳转表,所述跳转表包括与原始代码对应的原始访客存储器地址和用于经转换代码的转换高速缓存地址之间的映射。该跳转表可包括一个或多个记录或条目,所述一个或多个记录或条目可以各自将原始访客存储器地址映射到转换高速缓存地址。在一个实施例中,跳转表可为跳转表中的每个记录提供索引。响应于访客应用的执行到达跳转表中的访客存储器地址,处理器可以跳转到转换高速缓存并访问对应的转换高速缓存地址以获得与转换高速缓存地址有关的经转换代码(块610)。在块612中,经由例如微代码生成逻辑,处理器还可以将所获得的经转换代码转换成具有由处理器所支持格式的微代码。在块614中,处理器或任何其它执行逻辑可以执行所述微代码。在块616中,处理器可以将执行结果返回给访客应用。该结果可以包括与经转换代码的执行有关的状态信息和/或控制信息。例如,状态信息和控制信息可存储在一个或多个控制/状态寄存器中。在一个实施例中,基于状态信息和控制信息,该流程可以继续执行访客应用。
图7的流程图描绘了在一个实施例中恢复已损坏存储器页面的执行。在块702中,处理器可以基于访客OS中的一个或多个访客应用来执行访客代码。在一个实施例中,处理器可以基于跳转表中的转换代码地址跳转到执行经转换访客代码。响应于在执行经转换代码期间的存储器故障,处理器可检测存储器故障(块704)。处理器可将与存储器故障有关的信息发送到MCE处理机或者在VMM或管理程序中可提供的任何其它控制逻辑。在一个实施例中,MCE处理机可以通过软件、硬件、固件或其任何组合来实现。响应于从处理器接收存储器故障相关的信息,MCE处理机可以采取控制(块706)。所述信息可以指示存储器故障发生在访客代码中。所述信息可以指示已损坏存储器页面,例如已损坏页面的存储单元。在一个实施例中,MCE处理机可以根据所述信息来识别已损坏存储器页面。在块708中,例如经由VMM中的存储器虚拟化管理逻辑,VMM可以使已损坏存储器页面离线或禁用已损坏存储器页面并分配新的存储器页面来替换已损坏存储器页面。
在块710中,如果在访客存储器中发生故障,则VMM可从镜像存储器恢复已损坏页面的内容。在一个实施例中,VMM可通知BT层撤销当前TC块的执行、将来自镜像页面的内容复制到新的存储器页面以恢复已损坏访客存储器页面的内容,并重新执行当前TC块。再次参考图4,在另一个实施例中,如果TC块的执行已经更新了访客存储器页面和镜像页面,例如指令418′和428两者已被执行,或者如果TC块的执行还没有更新访客存储器或镜像存储器,例如在执行指令418′或428之前,VMM可将来自镜像页面的内容复制到新的存储器页面,并且继续该TC块的执行。在又一个实施例中,如果TC块的执行已经更新了访客存储器地址,但是还未更新镜像地址(例如指令418′已经被执行,但指令428还未被执行),VMM可将来自镜像页面的内容复制到新的存储器页面、重新执行指令418′并执行428。在又一实施例中,如果TC块的执行已经更新了访客存储器地址,但还未更新镜像存储器地址,例如指令418′已经被执行,但指令428还未被执行,VMM可完成当前TC块(例如指令428)的执行,并且响应于当前TC块的完成,将来自已更新镜像页面的内容复制到新的存储器页面。在另一个实施例中,如果TC块的执行已更新一个存储器地址,但还未更新第二存储器地址(例如,指令418′和428中的一个已经被执行),VMM和/或BT层可以确定哪个地址已经被更新,以及哪个地址还未被更新。如果镜像地址已经被更新,VMM可将来自镜像页面的内容复制到新的存储器页面并继续执行。
在块712中,处理器可以继续执行下一个转换代码块或随后的经转换代码(块712)。然后,处理器可以继续访客OS的执行。类似地,响应于确定镜像存储器具有已损坏页面,VMM可以为已损坏镜像页面分配新页面并从对应的访客页面恢复已损坏镜像页面的内容。恢复访客存储器故障的流程和恢复镜像存储器故障的流程可以参考上面关于块710提到的实施例。例如,如果TC块的执行已更新一个存储器地址,但还未更新第二存储器地址(例如指令418′已经被执行,但指令428还未被执行),则VMM和BT层可以确定哪个地址已经被更新,以及哪个地址还未被更新。如果访客存储器地址已经被更新,则VMM可以将来自访客页面的内容复制到新的存储器页面以恢复镜像存储器中的故障并继续执行。
虽然图6和图7的方法被图示为包括过程的序列,然而,在一些实施例中,这些方法可以按不同的顺序实施图示的过程。虽然图6和图7的方法是基于一个镜像页面映射到一个访客页面的配置来描述的,但是图6和图7的精神可以用于n个镜像页面映射到一个访客页面的配置。例如,VMM可使用来自经映射镜像页面中的一个经映射镜像页面的内容来恢复访客页面中的存储器故障。在另一个实施例中,在n对1配置中,VMM可以利用访客页面的内容来恢复一个或多个镜像页面中的存储器故障。
虽然图7的实施例图示了TC块的示例,其中,例如指令418′在指令428之前被执行,然而,在一些实施例中,图7的流程可以类似地被应用到TC块,其中,例如指令418′在指令428之后被执行。如果存储器故障发生在访客存储器中,VMM可类似地为已损坏访客存储器页面分配新的访客存储器页面。在一个实施例中,VMM可通知BT层撤销当前TC块的执行、将来自镜像页面的内容复制到新存储器页面以恢复已损坏访客存储器页面的内容,并重新执行当前TC块。在另一个实施例中,如果指令418’和指令428都已被执行,或如果指令418’和指令428都未被执行,则VMM可将来自镜像页面的内容复制到新存储器页面,并且继续该TC块的执行。在又一实施例中,如果指令428已被执行但418′还没有被执行,则VMM可将来自镜像页面的内容复制到新存储器页面并且根据418′继续TC块的执行。在又一实施例中,如果指令428已被执行但指令418′还未被执行,则VMM可完成当前TC块的执行(例如根据418′),并且响应于当前TC块的完成,将来自已更新镜像页面的内容复制到新存储器页面。在另一个实施例中,如果TC块的执行已更新了访客存储器地址和镜像存储器地址中的一个(例如,指令418’和428中的一个已经被执行),则VMM和/或BT层可以确定哪个地址已被更新以及哪个地址还未被更新。如果镜像地址已经被更新,则VMM可将来自镜像页面的内容复制到新存储器页面并继续执行。
虽然已经关于实施例描述本发明的某些特征,然而所述描述并不意图以限制的意义来解释。对于本发明所属领域的技术人员显而易见的所述实施例以及本发明的其它实施例的各种修改都被视为落入本发明的精神和范围之内。
Claims (20)
1.一种设备,包括:
存储器虚拟化控制逻辑,用于从第一访客存储器写指令中指示的访客的虚拟地址空间中的第一虚拟存储器地址转换成主机的主机地址空间中的第一物理存储器地址;以及
转换逻辑,用于将所述第一访客存储器写指令转换成第一组经转换代码,所述第一组经转换代码将要在所述第一物理存储器地址中存储第一内容,并将要在所述主机中作为所述第一物理存储器地址的镜像地址的第二物理存储器地址中存储所述第一内容。
2.如权利要求1所述的设备,其中所述存储器虚拟化控制逻辑还将要基于访客页面表将所述第一虚拟存储器地址转换成访客物理地址。
3.如权利要求2所述的设备,其中所述存储器虚拟化控制逻辑还将要:
基于与所述访客页面表同步的物理页面表,将所述第一虚拟存储器地址转换成所述第一主机物理存储器地址;
在所述第一虚拟存储器地址上添加偏移以生成第二虚拟存储器地址;以及
基于所述物理页面表,将所述第二虚拟存储器地址转换成第二主机物理存储器地址。
4.如权利要求3所述的设备,其中所述存储器虚拟化控制逻辑还将要:
基于所述物理页面表,对于所述访客仿真所述访客页面表。
5.如权利要求1所述的设备,其中所述转换逻辑还将要:
将与所述访客的第二虚拟存储器地址有关的第二访客存储器写指令转换成第二组经转换代码,所述第二组经转换代码将要在与所述第二虚拟存储器地址对应的第三物理存储器地址中存储所述第二内容,并将要在所述主机的作为第三物理存储器地址的镜像地址的第四物理存储器地址中存储所述第二内容;以及
形成包括所述第一组转换代码和所述第二组转换代码的原子区域。
6.如权利要求1所述的设备,其中所述经转换代码还将要将所述内容复制到所述主机中的多个镜像存储器地址中。
7.如权利要求5所述的设备,其中响应于所述原子区域中所述经转换代码的执行期间所述第一物理存储器地址中的存储器故障,所述转换逻辑还将要撤消所述经转换代码的执行。
8.如权利要求5所述的设备,其中响应于所述原子区域中所述经转换代码的执行期间所述第一物理存储器地址中的存储器故障,所述VMM还将要为已损坏第一物理存储器页面分配新的物理存储器页面,以便从所述第二物理存储器页面恢复所述已损坏第一物理存储器页面的内容,并还继续执行所述原子区域中的所述转换代码。
9.如权利要求1所述的设备,其中响应于所述第一组经转换代码的所述执行期间所述第一物理存储器地址中的存储器故障,所述转换逻辑还将要完成所述转换代码的执行并将所述第二物理存储器地址的内容复制到所述第一物理存储器地址。
10.如权利要求9所述的设备,其中所述VMM还将要使与所述第一物理存储器地址对应的已损坏存储器页面离线并分配新的页面来替换所述已损坏存储器页面。
11.一种方法,包括:
将用于写访客存储器的原始代码形成到原子区域中;
将所述原始代码转换成经转换代码,所述经转换代码将要写所述访客存储器和用于所述访客存储器的主机镜像存储器;以及
执行所述原子区域中的所述经转换代码来将相同的内容写入所述访客存储器和所述主机镜像存储器中。
12.如权利要求10所述的方法,还包括:
生成映射,所述映射包括从所述访客存储器的虚拟存储器地址到主机物理存储器地址的转换;以及
将偏移添加到所述虚拟存储器地址以生成用于所述主机镜像存储器的偏移虚拟地址;以及
更新所述映射以生成从所述主机镜像存储器的所述偏移虚拟地址到所述主机镜像存储器的物理存储器地址的转换。
13.如权利要求10所述的方法,还包括:
响应于执行所述经转换代码期间所述访客存储器中的存储器故障,在所述访客存储器和所述主机镜像存储器被更新之前继续执行所述经转换代码;
将已更新主机镜像存储器的内容复制到所述已损坏访客存储器,以恢复所述已损坏访客存储器的内容。
14.如权利要求10所述的方法,还包括:
响应于执行所述经转换代码期间所述访客存储器中的存储器故障,完成所述原子区域中所述经转换代码的执行;
将基于所述转换代码更新的所述主机镜像存储器的内容复制到已损坏访客存储器,以恢复所述已损坏访客存储器的内容。
15.一种系统,包括:
存储器;
虚拟机控制逻辑,用于将访客存储器更新指令转换成第一指令以及转换成第二更新指令,所述第一指令用于更新访客的访客存储器页面,所述第二更新指令用于更新主机中与所述访客存储器页面对应的镜像存储器页面;以及
处理器,用于执行所述第一指令和所述第二指令以将相同内容存储到所述访客存储器页面和所述镜像存储器页面。
16.如权利要求15所述的系统,其中所述虚拟机控制逻辑包括区域形成逻辑,所述区域形成逻辑组合所述访客存储器更新指令和其它访客存储器更新指令以形成将要由所述处理器一起执行的原子区域。
17.如权利要求16所述的系统,其中所述虚拟机控制逻辑还将要响应于所述访客存储器页面中的存储器故障以及响应于所述镜像存储器页面还未被更新而撤销所述原子区域中的操作,并且分配新的访客存储器页面来替换所述已损坏访客存储器页面并从所述镜像存储器页面恢复所述新的访客存储器页面的内容。
18.如权利要求17所述的系统,其中所述虚拟机控制逻辑还将要响应于所述已损坏访客存储器页面由所述新的访客存储器页面替换而更新访客物理到机器页面映射数据结构和机器到访客物理页面映射数据结构。
19.如权利要求15所述的系统,其中所述虚拟机控制逻辑还将要响应于所述访客存储器页面中的存储器故障而完成所述第一更新指令和所述第二更新指令的执行;并响应于所述第一更新指令和所述第二更新指令的完成而将所述主机镜像页面的内容复制到为所述已损坏访客存储器页面分配的新的访客存储器页面,以恢复所述已损坏访客存储器页面的内容。
20.如权利要求15所述的系统,其中所述虚拟机控制逻辑还将要响应于所述第一更新指令和所述第二更新指令的所述执行期间所述访客存储器页面中的存储器故障而为所述访客存储器页面分配新的存储器页面、将所述主机镜像页面的内容复制到新的访客存储器页面,并继续执行所述第一更新指令和所述第二更新指令的执行。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2011/000555 WO2012129729A1 (en) | 2011-03-31 | 2011-03-31 | Memory mirroring and redundancy generation for high availability |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103597451A true CN103597451A (zh) | 2014-02-19 |
CN103597451B CN103597451B (zh) | 2017-06-13 |
Family
ID=46929287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180069728.4A Active CN103597451B (zh) | 2011-03-31 | 2011-03-31 | 用于高可用性的存储器镜像和冗余生成 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9336036B2 (zh) |
EP (1) | EP2691857B1 (zh) |
CN (1) | CN103597451B (zh) |
WO (1) | WO2012129729A1 (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107430521A (zh) * | 2015-03-27 | 2017-12-01 | 英特尔公司 | 高效地址转换 |
CN108701047A (zh) * | 2016-03-31 | 2018-10-23 | 英特尔公司 | 具有dma写时复制的高密度虚拟机容器 |
CN109597677A (zh) * | 2018-12-07 | 2019-04-09 | 北京百度网讯科技有限公司 | 用于处理信息的方法和装置 |
CN109643277A (zh) * | 2016-09-26 | 2019-04-16 | 英特尔公司 | 用于中介传递和共享存储器页合并的装置和方法 |
CN109783188A (zh) * | 2017-11-10 | 2019-05-21 | 英特尔公司 | 用于安全公共云的密码存储器所有权表 |
WO2019106491A1 (en) * | 2017-11-28 | 2019-06-06 | International Business Machines Corporation | Dynamic address translation for a virtual machine |
CN110018881A (zh) * | 2019-03-28 | 2019-07-16 | 西安交通大学 | 一种虚拟机故障快速恢复方法及系统 |
CN110865945A (zh) * | 2018-08-28 | 2020-03-06 | 上海天王星智能科技有限公司 | 存储设备的扩展地址空间 |
CN110990191A (zh) * | 2019-11-01 | 2020-04-10 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 一种基于镜像存储的数据恢复方法及系统 |
WO2020155005A1 (en) * | 2019-01-31 | 2020-08-06 | Intel Corporation | Shared memory mechanism to support fast transport of sq/cq pair communication between ssd device driver in virtualization environment and physical ssd |
CN111638943A (zh) * | 2017-02-28 | 2020-09-08 | 英特尔公司 | 具有受保护的访客机验证主机控制的安全公共云 |
CN113168379A (zh) * | 2018-11-21 | 2021-07-23 | 微软技术许可有限责任公司 | 由主机计算机的虚拟存储器支持的虚拟机存储器的快速访问 |
CN114201269A (zh) * | 2022-02-18 | 2022-03-18 | 阿里云计算有限公司 | 内存换页方法、系统及存储介质 |
WO2023024977A1 (en) * | 2021-08-24 | 2023-03-02 | International Business Machines Corporation | Transport control word architecture for virtual port mirroring |
US11722436B2 (en) | 2021-08-24 | 2023-08-08 | International Business Machines Corporation | Transport control word architecture for physical port mirroring |
US11989332B2 (en) | 2016-08-11 | 2024-05-21 | Intel Corporation | Secure public cloud with protected guest-verified host control |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012098633A1 (ja) * | 2011-01-17 | 2012-07-26 | 富士通株式会社 | メモリ管理方法、メモリ管理装置およびメモリ管理回路 |
CN103597451B (zh) | 2011-03-31 | 2017-06-13 | 英特尔公司 | 用于高可用性的存储器镜像和冗余生成 |
US9619263B2 (en) * | 2011-06-11 | 2017-04-11 | Microsoft Technology Licensing, Llc | Using cooperative greedy ballooning to reduce second level paging activity |
US9348757B2 (en) | 2012-10-08 | 2016-05-24 | International Business Machines Corporation | System supporting multiple partitions with differing translation formats |
US9355032B2 (en) | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Supporting multiple types of guests by a hypervisor |
US9600419B2 (en) | 2012-10-08 | 2017-03-21 | International Business Machines Corporation | Selectable address translation mechanisms |
US9355040B2 (en) | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Adjunct component to provide full virtualization using paravirtualized hypervisors |
US9280488B2 (en) | 2012-10-08 | 2016-03-08 | International Business Machines Corporation | Asymmetric co-existent address translation structure formats |
US9740624B2 (en) | 2012-10-08 | 2017-08-22 | International Business Machines Corporation | Selectable address translation mechanisms within a partition |
US9990216B2 (en) | 2013-06-27 | 2018-06-05 | Red Hat Israel, Ltd. | Providing hypercall interface for virtual machines |
US9459900B2 (en) * | 2014-01-13 | 2016-10-04 | Red Hat Israel, Ltd. | Hypervisor-based balloon page initialization |
US9052938B1 (en) | 2014-04-15 | 2015-06-09 | Splunk Inc. | Correlation and associated display of virtual machine data and storage performance data |
WO2016205976A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Apparatus and method for efficient communication between virtual machines |
CN106909437B (zh) * | 2015-12-23 | 2021-01-29 | 华为技术有限公司 | 虚拟机内核的保护方法及装置 |
US10528476B2 (en) * | 2016-05-24 | 2020-01-07 | International Business Machines Corporation | Embedded page size hint for page fault resolution |
US9858151B1 (en) * | 2016-10-03 | 2018-01-02 | International Business Machines Corporation | Replaying processing of a restarted application |
EP3559806B1 (en) * | 2016-12-22 | 2022-08-31 | INTEL Corporation | Accelerating para-virtualization network interface using direct memory access (dma) remapping |
US9785519B1 (en) * | 2017-02-16 | 2017-10-10 | Red Hat Israel, Ltd. | Driver switch for device error recovery for assigned devices |
US10733112B2 (en) | 2017-06-16 | 2020-08-04 | Alibaba Group Holding Limited | Method and apparatus for hardware virtualization |
US10445009B2 (en) * | 2017-06-30 | 2019-10-15 | Intel Corporation | Systems and methods of controlling memory footprint |
US10613951B2 (en) | 2017-09-13 | 2020-04-07 | International Business Machines Corporation | Memory mirror invocation upon detecting a correctable error |
US20190163642A1 (en) | 2017-11-27 | 2019-05-30 | Intel Corporation | Management of the untranslated to translated code steering logic in a dynamic binary translation based processor |
CN113490924A (zh) | 2019-02-22 | 2021-10-08 | 英特尔公司 | 用于运行时处理器验证的ept和影子页表之间的动态切换 |
US11394614B2 (en) | 2020-05-05 | 2022-07-19 | Arista Networks, Inc. | Network device supporting multiple operating systems to enable optimized use of network device hardware |
CN116501387B (zh) * | 2023-06-16 | 2023-09-12 | 龙芯中科技术股份有限公司 | 一种指令跳转方法、装置、电子设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060259732A1 (en) * | 2005-05-12 | 2006-11-16 | Microsoft Corporation | Enhanced shadow page table algorithms |
CN101398768A (zh) * | 2008-10-28 | 2009-04-01 | 北京航空航天大学 | 一种分布式虚拟机监视器系统的构建方法 |
CN101632128A (zh) * | 2007-02-22 | 2010-01-20 | 莫塞德技术公司 | 具有数据镜像备份的存储器装置的页面编程操作的设备和方法 |
CN101866307A (zh) * | 2010-06-24 | 2010-10-20 | 杭州华三通信技术有限公司 | 一种基于镜像技术的数据存储方法及装置 |
US20110072430A1 (en) * | 2009-09-24 | 2011-03-24 | Avaya Inc. | Enhanced solid-state drive management in high availability and virtualization contexts |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7093086B1 (en) * | 2002-03-28 | 2006-08-15 | Veritas Operating Corporation | Disaster recovery and backup using virtual machines |
US8078827B2 (en) * | 2007-07-05 | 2011-12-13 | International Business Machines Corporation | Method and apparatus for caching of page translations for virtual machines |
US9032397B2 (en) * | 2008-05-28 | 2015-05-12 | Hewlett-Packard Development Company, L.P. | Virtual machine migration with direct physical access control |
JP5146174B2 (ja) * | 2008-07-28 | 2013-02-20 | 富士通株式会社 | 仮想マシンモニタ装置およびプログラム,ならびに仮想マシン間メモリ共有管理方法 |
US8234655B2 (en) * | 2008-07-29 | 2012-07-31 | International Business Machines Corporation | Detection of duplicate memory pages across guest operating systems on a shared host |
CN103597451B (zh) | 2011-03-31 | 2017-06-13 | 英特尔公司 | 用于高可用性的存储器镜像和冗余生成 |
US9128769B2 (en) * | 2011-10-13 | 2015-09-08 | Cavium, Inc. | Processor with dedicated virtual functions and dynamic assignment of functional resources |
-
2011
- 2011-03-31 CN CN201180069728.4A patent/CN103597451B/zh active Active
- 2011-03-31 EP EP11862809.8A patent/EP2691857B1/en not_active Not-in-force
- 2011-03-31 US US13/976,671 patent/US9336036B2/en not_active Expired - Fee Related
- 2011-03-31 WO PCT/CN2011/000555 patent/WO2012129729A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060259732A1 (en) * | 2005-05-12 | 2006-11-16 | Microsoft Corporation | Enhanced shadow page table algorithms |
CN101632128A (zh) * | 2007-02-22 | 2010-01-20 | 莫塞德技术公司 | 具有数据镜像备份的存储器装置的页面编程操作的设备和方法 |
CN101398768A (zh) * | 2008-10-28 | 2009-04-01 | 北京航空航天大学 | 一种分布式虚拟机监视器系统的构建方法 |
US20110072430A1 (en) * | 2009-09-24 | 2011-03-24 | Avaya Inc. | Enhanced solid-state drive management in high availability and virtualization contexts |
CN101866307A (zh) * | 2010-06-24 | 2010-10-20 | 杭州华三通信技术有限公司 | 一种基于镜像技术的数据存储方法及装置 |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11422943B2 (en) | 2015-03-27 | 2022-08-23 | Intel Corporation | Efficient address translation |
CN107430521A (zh) * | 2015-03-27 | 2017-12-01 | 英特尔公司 | 高效地址转换 |
CN108701047A (zh) * | 2016-03-31 | 2018-10-23 | 英特尔公司 | 具有dma写时复制的高密度虚拟机容器 |
CN108701047B (zh) * | 2016-03-31 | 2023-08-01 | 英特尔公司 | 具有dma写时复制的高密度虚拟机容器 |
US11989332B2 (en) | 2016-08-11 | 2024-05-21 | Intel Corporation | Secure public cloud with protected guest-verified host control |
CN109643277A (zh) * | 2016-09-26 | 2019-04-16 | 英特尔公司 | 用于中介传递和共享存储器页合并的装置和方法 |
CN109643277B (zh) * | 2016-09-26 | 2024-02-20 | 英特尔公司 | 用于中介传递和共享存储器页合并的装置和方法 |
CN111638943A (zh) * | 2017-02-28 | 2020-09-08 | 英特尔公司 | 具有受保护的访客机验证主机控制的安全公共云 |
CN111638943B (zh) * | 2017-02-28 | 2023-08-15 | 英特尔公司 | 具有受保护的访客机验证主机控制的装置和方法 |
CN109783188A (zh) * | 2017-11-10 | 2019-05-21 | 英特尔公司 | 用于安全公共云的密码存储器所有权表 |
CN109783188B (zh) * | 2017-11-10 | 2024-04-09 | 英特尔公司 | 用于安全公共云的密码存储器所有权表 |
GB2581113A (en) * | 2017-11-28 | 2020-08-05 | Ibm | Dynamic address translation for a virtual machine |
GB2581113B (en) * | 2017-11-28 | 2020-12-23 | Ibm | Dynamic address translation for a virtual machine |
WO2019106491A1 (en) * | 2017-11-28 | 2019-06-06 | International Business Machines Corporation | Dynamic address translation for a virtual machine |
CN110865945A (zh) * | 2018-08-28 | 2020-03-06 | 上海天王星智能科技有限公司 | 存储设备的扩展地址空间 |
CN113168379A (zh) * | 2018-11-21 | 2021-07-23 | 微软技术许可有限责任公司 | 由主机计算机的虚拟存储器支持的虚拟机存储器的快速访问 |
CN109597677A (zh) * | 2018-12-07 | 2019-04-09 | 北京百度网讯科技有限公司 | 用于处理信息的方法和装置 |
WO2020155005A1 (en) * | 2019-01-31 | 2020-08-06 | Intel Corporation | Shared memory mechanism to support fast transport of sq/cq pair communication between ssd device driver in virtualization environment and physical ssd |
CN110018881A (zh) * | 2019-03-28 | 2019-07-16 | 西安交通大学 | 一种虚拟机故障快速恢复方法及系统 |
CN110018881B (zh) * | 2019-03-28 | 2021-04-13 | 西安交通大学 | 一种虚拟机故障快速恢复方法及系统 |
CN110990191B (zh) * | 2019-11-01 | 2022-06-17 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 一种基于镜像存储的数据恢复方法及系统 |
CN110990191A (zh) * | 2019-11-01 | 2020-04-10 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 一种基于镜像存储的数据恢复方法及系统 |
WO2023024977A1 (en) * | 2021-08-24 | 2023-03-02 | International Business Machines Corporation | Transport control word architecture for virtual port mirroring |
US11722436B2 (en) | 2021-08-24 | 2023-08-08 | International Business Machines Corporation | Transport control word architecture for physical port mirroring |
WO2023155694A1 (zh) * | 2022-02-18 | 2023-08-24 | 阿里云计算有限公司 | 内存换页方法、系统及存储介质 |
CN114201269A (zh) * | 2022-02-18 | 2022-03-18 | 阿里云计算有限公司 | 内存换页方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP2691857A4 (en) | 2014-08-27 |
EP2691857B1 (en) | 2016-11-30 |
WO2012129729A1 (en) | 2012-10-04 |
US9336036B2 (en) | 2016-05-10 |
US20140379955A1 (en) | 2014-12-25 |
CN103597451B (zh) | 2017-06-13 |
EP2691857A1 (en) | 2014-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103597451A (zh) | 用于高可用性的存储器镜像和冗余生成 | |
CN101149707B (zh) | 将翻译后援缓冲器同步到扩充的分页表 | |
US11994974B2 (en) | Recording a trace of code execution using reference bits in a processor cache | |
US9244854B2 (en) | Transparent code patching including updating of address translation structures | |
CN102460400B (zh) | 基于管理程序的本地和远程虚拟内存页面管理 | |
CN109690484A (zh) | 在虚拟机进入时转换 | |
US11126536B2 (en) | Facilitating recording a trace file of code execution using index bits in a processor cache | |
US9785352B2 (en) | Transparent code patching | |
CN103098043B (zh) | 随需虚拟机映像流式传输的方法和系统 | |
CN103562857B (zh) | 在计算环境中执行启动子通道指令的方法和系统 | |
US7596677B1 (en) | Paging cache optimization for virtual machine | |
CN103562874B (zh) | 解除配置存储级内存命令 | |
CN103975303A (zh) | 用于预链接软件以改善虚拟系统中的存储器去重的技术 | |
CN102473139A (zh) | 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元 | |
US7506096B1 (en) | Memory segment emulation model for virtual machine | |
CN111742302A (zh) | 通过基于上层缓存中的条目来日志记录对下层缓存的流入量进行跟踪记录 | |
CN101620573B (zh) | X86体系结构内存管理单元虚拟化方法 | |
CN111727425A (zh) | 通过日志记录对上层共享缓存的流入量以及下层缓存之间的缓存一致性协议转换来进行跟踪记录 | |
WO2022266828A1 (en) | Architectural extensions for memory mirroring at page granularity on demand | |
CN104049905A (zh) | 在异构处理器之间迁移不同尺寸的页 | |
CN117827380A (zh) | 一种去老化硬件式构建虚拟化vax的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |