KR20060083168A - 가상 머신 시스템에서의 물리적 메모리 가상화 - Google Patents

가상 머신 시스템에서의 물리적 메모리 가상화 Download PDF

Info

Publication number
KR20060083168A
KR20060083168A KR1020060004080A KR20060004080A KR20060083168A KR 20060083168 A KR20060083168 A KR 20060083168A KR 1020060004080 A KR1020060004080 A KR 1020060004080A KR 20060004080 A KR20060004080 A KR 20060004080A KR 20060083168 A KR20060083168 A KR 20060083168A
Authority
KR
South Korea
Prior art keywords
guest
memory
physical memory
host
page
Prior art date
Application number
KR1020060004080A
Other languages
English (en)
Other versions
KR100831488B1 (ko
Inventor
스티븐 베네트
앤드류 앤더슨
길버트 니이거
라제쉬 산카란
리차드 울리그
래리 3세 스미스
디온 로저스
Original Assignee
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Publication of KR20060083168A publication Critical patent/KR20060083168A/ko
Application granted granted Critical
Publication of KR100831488B1 publication Critical patent/KR100831488B1/ko

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/151Emulated environment, e.g. virtual machine
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Abstract

프로세서가 동작가능한 호스트 머신에서 실행가능한 가상 머신(virtual machine)에서 실행가능한 게스트 소프트웨어에 의해 이루어지는 게스트-물리적 메모리(guest-physical memory)에 대한 참조를, 호스트 머신의 호스트-물리적 메모리(host-physical memory)에 대한 참조에 매핑(mapping)하기 위해 메모리 가상화 지원 시스템을 갖는 프로세서의 가상화(virtualization) 시스템을 포함하는 프로세서가 제공된다.
가상 머신, 물리적 메모리, 게스트 소프트웨어, 가상 머신 모니터, 프로세서

Description

가상 머신 시스템에서의 물리적 메모리 가상화{VIRTUALIZING PHYSICAL MEMORY IN A VIRTUAL MACHINE SYSTEM}
도 1은 프로세스와 물리적 메모리 사이의 관계를 도시한 도면(종래기술).
도 2는 일 실시예에 있어서 가상 머신들과 호스트 머신 사이의 관계를 추상적으로 도시한 도면.
도 3은 일 실시예에 있어서 가상 머신 환경의 고레벨 구조를 도시한 도면.
도 4a 및 도 4b는 가상 머신 환경의 일 실시예에 있어서의 프로세싱을 예시한 도면.
도 5는 일 실시예에 있어서 확장된 페이징 테이블들을 이용하는 주소 계산을 도시한 도면.
도 6은 일 실시예에 있어서 계층적인 확장된 페이징 테이블들을 이용하는 주소 계산을 도시한 도면.
도 7은 일 실시예에 있어서 확장된 페이징 테이블 기준 주소 포인터(pointer)를 도시한 도면.
도 8은 일 실시예에 있어서 확장된 페이징 테이블을 도시한 도면.
<도면의 주요 부분에 대한 부호의 설명>
303, 313: 게스트 소프트웨어
302, 314: 가상 머신 추상화
312: 가상-머신 모니터(VMM)
326: 물리적 메모리 관리 모듈
318: 프로세서
322: EPT 액세스 로직
328: EPT 테이블들
320: 메모리
316: 베어 플랫폼 하드웨어
가상화(virtualization)는, 가상화를 위한 하드웨어 및 소프트웨어 지원(support)을 갖는 단일 호스트 머신(host machine)이, 호스트의 다수의 추상화(abstraction)를 제공할 수 있도록 하기 때문에, 호스트 머신의 하부 하드웨어가 하나 이상의 독립적으로 동작하는 가상 머신(virtual machine)으로서 보인다. 따라서, 각각의 가상 머신은 자급식(self-contained) 플랫폼으로서 기능할 수 있다. 종종, 가상화 기술을 이용하여, 다수의 게스트 운영 체계(guest operating system) 및 다른 게스트 소프트웨어가 동일한 하드웨어 플랫폼에서 실제로 물리적으로 실행하는 동안에 다수의 가상 머신에 명백하게 동시에 및 명백하게 독립적으로 공존 및 실행할 수 있게 한다. 가상 머신은 호스트 머신의 하드웨어를 모방하거나, 또는 대안적으로 상이한 하드웨어 추상화를 모두 제공할 수 있다.
가상화 시스템은 호스트 머신을 제어하는 가상 머신 모니터(virtual machine monitor: VMM)를 포함할 수 있다. VMM은 자원들(예를 들어, 프로세서들, 메모리, IO 장치들)의 집합을 갖는 가상 머신에서 동작하는 게스트 소프트웨어를 제공한다. VMM은 물리적 호스트 머신의 컴포넌트들의 일부 또는 전부를 가상 머신에 매핑할 수 있고, 가상 머신에 포함되는, VMM에서 소프트웨어로 에뮬레이트(emulate)되는, 완전히 가상의 컴포넌트들(예를 들어, 가상 IO 장치들)을 생성할 수 있다. 따라서, VMM은 게스트 소프트웨어에 "가상 베어 머신(virtual bare machine)" 인터페이스를 제공하기 위한 것이라고 말할 수 있다. VMM은 하드웨어 가상화 아키텍처에서의 설비(facility)들을 이용하여, 가상 머신에 서비스들을 제공하고, 호스트 머신에서 실행하는 다수의 가상 머신으로부터 및 그 사이에 보호를 제공한다.
게스트 소프트웨어가 가상 머신에서 실행할 때, 게스트 소프트웨어에 의해 실행되는 특정 명령들(예를 들어, 주변 장치들을 액세스하는 명령들)은 정상적으로 하드웨어를 직접 액세스하고, 게스트 소프트웨어는 하드웨어 플랫폼에서 직접 실행한다. VMM에 의해 지원되는 가상화 시스템에서, 이 명령들은, 본원에서 가상 머신 종료(virtual machine exit)로서 지칭되는, VMM으로의 전환(transition)을 야기할 수 있다. VMM은, 게스트 소프트웨어가 실행하고 있는 가상 머신들과 일치하는 호스트 머신 하드웨어 및 호스트 머신 주변 장치들에 적합한 방식으로 소프트웨어로 이 명령들을 처리한다. 마찬가지로, 호스트 머신에서 생성된 특정 인터럽트들 및 예외들은, 서비스 제공을 위한 게스트 소프트웨어에 전달되기 전에 VMM에 의해 게 스트 소프트웨어에 대해 적응되거나, VMM에 의해 인터셉트되어 관리될 필요가 있을 수 있다. 다음으로, VMM은 게스트 소프트웨어로 제어를 전환하고, 가상 머신은 동작을 재개한다. VMM으로부터 게스트 소프트웨어로의 전환은, 본원에서 가상 머신 진입(virtual machine entry)으로서 지칭된다.
공지되어 있는 바와 같이, 대부분의 운영 체계에서의 머신에서 실행하는 프로세스는, 하부 물리적 메모리 시스템의 추상화인, 가상 주소 공간을 이용할 수 있다. 이 기술분야에 공지되어 있는 바와 같이, "가상 주소", "가상 주소 공간", "가상 메모리 주소" 또는 "가상 메모리 공간" 등의, 메모리 관리와 관련하여 이용될 때의 가상(virtual)이라는 용어는, 프로세서 기반 시스템에서 실행하는 프로세스에 대해 하부 물리적 메모리의 추상화를 제공하는, 일반적으로 운영 체계와 결합하여, 프로세서 기반 시스템의 공지된 기술을 가리킨다. 예를 들어, 프로세스는 하부 운영 체계에 의해 비-선형 및 비-연속(non-contiguous) 물리적 메모리에 매핑되는 가상, 연속 및 선형화된 주소 공간 추상화를 액세스할 수 있다. 가상의 이러한 이용은, 가상화라는 문맥에서 이용되는 동일한 용어의 이용과 구별가능하고, 여기서, 가상은 일반적으로 "가상 머신", "가상 베어 머신", "가상 하드웨어", "가상 프로세서" 또는 "가상 네트워크 인터페이스"와 같이, 물리적 머신을 시뮬레이트하는 추상화를 지칭한다. 이 용어의 의도된 의미는, 본원에서 이용되는 문맥에 기초하여 이 기술분야의 당업자에게 명백할 것이다.
도 1은 버스에 의해 프로세서에 통신적으로(communicatively) 연결되는 메모리와 프로세서를 통합하는 프로세서 기반 시스템에서 실행하는 프로세스를 도시한 다. 도 1을 참조하면, 프로세스(105)가 그의 가상 주소 공간(115)(프로세스 가상 메모리 공간)에서의 메모리 위치를 참조할 때, (때때로 프로세서(120) 안으로 통합되는) 하드웨어 및 (일반적으로 머신의 운영 체계에서의) 소프트웨어로 구현될 수 있는 메모리 관리(130)에 의해서, 머신(125)의 물리적 메모리(145)(머신 물리적 메모리)에서의 실제 주소(140)에 대한 참조가 발생된다. 다른 기능들 중에서 메모리 관리(130)는, 가상 주소 공간에서의 위치를, 머신의 물리적 메모리에서의 위치에 매핑한다. 도 1에 도시된 바와 같이, 프로세스는 물리적 머신에서 이용가능한 실제 메모리와 상이한 메모리 뷰(view)를 가질 수 있다. 도 1에 도시된 예에서, 프로세스는, 메모리 관리 하드웨어 및 소프트웨어에 의해 그 자체가 10 내지 11 MB의 주소 공간을 갖는 물리적 메모리의 일부로 실제로 매핑되는 0 내지 1 MB의 가상 주소 공간에서 동작하며, 프로세스 공간 주소로부터 물리적 주소를 계산하기 위해서, 프로세스 가상 주소에 오프셋(135)이 추가될 수 있다. 프로세스 가상 메모리 공간으로부터 물리적 메모리로의 보다 복잡한 매핑이 가능하며, 예를 들어, 프로세스 가상 메모리에 대응하는 물리적 메모리는 페이지들(pages)과 같은 부분들로 분할될 수 있고, 물리적 메모리에 다른 프로세스들로부터의 페이지들이 인터리브(interleave)될 수 있다.
메모리는 관용상 페이지들로 분할되며, 각각의 페이지는 구현들에 따라 변하는, 공지된 양의 데이터를 포함하는데, 예를 들어, 페이지는 메모리의 4096 바이트를 포함할 수 있다. 메모리 위치들은, 실행 프로세스에 의해 참조될 때, 페이지 참조들로 변환된다. 통상적인 머신에서, 메모리 관리는 프로세스 가상 메모리에서 의 페이지에 대한 참조를, 머신 물리적 메모리에서의 페이지에 대한 참조에 매핑한다. 일반적으로, 메모리 관리는 프로세스 공간 페이지 위치에 대응하는 물리적 페이지 위치를 특정하기 위해 페이지 테이블을 이용할 수 있다.
가상 머신 환경에서 게스트 소프트웨어를 관리하는 하나의 양상은, 메모리의 관리이다. 가상 머신에서 실행하는 게스트 소프트웨어에 의해 취해지는 메모리 관리 작용들을 처리하는 것은, 가상 머신 모니터와 같은 제어 시스템에 대한 복잡성을 야기한다. 2개의 가상 머신이, IA-32 Intel® Architecture Software Developer's Manual(IA-32 문서화)에 기재되어 있는, 32-bit IA-32 Intel® 아키텍처 플랫폼(IA-32)에서 구현되는 호스트 머신에서 가상화를 통해 실행하는 예시적인 시스템에 대하여 고려한다. IA-32 플랫폼은 IA-32 프로세서의 부분으로서 구현되는 IA-32 페이지 테이블들을 포함할 수 있다. 또한, 각각의 가상 머신 자체는 거기에서 실행하는 게스트 소프트웨어에 IA-32 머신의 추상화를 제공한다는 것을 가정한다. 각각의 가상 머신을 실행하는 게스트 소프트웨어는, 게스트 머신의 메모리 관리 시스템에 의해 게스트-물리적 메모리 주소로 변환되는, 게스트 프로세스 가상 메모리 주소에 대한 참조들을 형성할 수 있다. 그러나, 게스트-물리적 메모리 자체는 호스트 프로세서에서의 하드웨어인 가상화 서브시스템 및 VMM을 통하여 호스트-물리적 메모리에서의 추가 매핑에 의해 구현될 수 있다. 따라서, 예를 들어, 게스트 IA-32 페이지 테이블 제어 레지스터들에 대한 참조들을 포함하는, 게스트 프로세스들 또는 게스트 운영 체계에 의한 게스트 메모리에 대한 참조들은, VMM 에 의해 인터셉트되어야 하는데, 그 이유는, 게스트-물리적 메모리는, 사실상, 호스트-물리적 메모리에 직접 대응하지 않고, 오히려 호스트 머신의 가상화 시스템을 통해 재-매핑되므로, 상기 참조들은 추가적인 재-프로세싱 없이 호스트 머신의 IA-32 페이지 테이블에 직접 전달될 수 없기 때문이다.
도 2: 도 2는 일 실시예에 있어서 게스트 메모리의 매핑에 특히 관련하여, 호스트 머신에서 실행하는 하나 이상의 가상 머신들 사이의 관계를 도시한다. 도 2는 게스트-물리적 메모리가 호스트 머신의 가상화 시스템을 통하여 어떻게 재-매핑되는지를 예시한다. 가상 머신 A(242) 및 가상 머신 B(257)와 같은 각각의 가상 머신은 가상 머신들에서 구동되는 게스트 소프트웨어에 가상 프로세서(245 및 255)를 각각 제공한다. 각각의 머신은 게스트 운영 체계 또는 다른 게스트 소프트웨어, 게스트-물리적 메모리들(240 및 250)에 각각 물리적 메모리의 추상화를 제공한다. 게스트 소프트웨어가 가상 머신들(242 및 257)에서 실행할 때, 게스트 소프트웨어는 실제로는 호스트 머신(267)에 의해 호스트-물리적 메모리(260)를 이용하여 호스트 프로세서(265)에서 실행된다.
도 2에 도시된 바와 같이, 본 실시예에서, 가상 머신 A(242)에서의 주소 0에서 시작하는 물리적 메모리 공간으로서 제공되는 게스트-물리적 메모리(240)는 호스트-물리적 메모리(260)의 일부 연속적인 영역(270)에 매핑된다. 마찬가지로, 가상 머신 B(257)에서의 게스트-물리적 메모리(250)는 호스트-물리적 메모리(260)의 상이한 부분(275)에 매핑된다. 도 2에 도시된 바와 같이, 호스트 머신은 호스트- 물리적 메모리의 1024 MB를 가질 수 있다. 각각의 가상 머신(242 및 257)이 메모리의 256 MB를 할당받은 경우, 가상 머신 A(242)가 범위 128-384 MB를 할당받고, 가상 머신 B(257)가 범위 512-768 MB를 할당받는 하나의 가능한 매핑이 있을 수 있다. 가상 머신들(242 및 257)은 둘다 0-256 MB의 게스트-물리적 주소 공간을 참조한다. 오직 VMM만이, 각각의 가상 머신의 주소 공간이 호스트-물리적 주소 공간의 서로 다른 부분들에 매핑한다는 것을 알고 있다.
도 2에 도시된 가상 머신들 및 메모리 매핑은 일 실시예의 하나의 표현일 뿐이고, 다른 실시예들에 있어서, 호스트 머신에서 실행하는 가상 머신들의 실제 수는 하나에서부터 다수까지 변할 수 있으며, 호스트 머신 및 가상 머신들의 실제 메모리 사이즈는 변할 수 있고, 가상 머신마다 가변적일 수 있다. 이 예는 가상 머신들에 대한 메모리의 간단한, 연속적인 할당을 도시한다. 보다 일반적인 경우에, 가상 머신에 할당된 물리적-메모리 페이지들은 연속적이지 않을 수 있고, 서로 인터리브되고, VMM 및 다른 호스트 프로세스들에 속하는 페이지들이 인터리브된 호스트-물리적 메모리에 분산될 수 있다.
도 2에 도시되어 있는 것과 같은 시스템에서 가상 머신으로서 제공되는 프로세서 기반 시스템은 가상 머신을 온전히 그대로 구현할 수 있다. 따라서 예를 들어, 가상 머신은 게스트 OS에 대해 게스트-물리적 메모리의 전체적인 뷰(full view)를 제공할 수 있고, 게스트 OS 및 가상 프로세서 또는 가상 머신의 다른 가상 하드웨어에 의해 제공되는 메모리 관리를 이용하여, 가상 머신에서 실행하는 게스트 소프트웨어를 위한 메모리 관리를 수행한다. 하나의 예시적인 실시예에서, 가 상 머신은 게스트 OS에 메모리 관리를 위한 페이지 테이블들과 같은 IA-32 하드웨어 지원을 포함하는 IA-32 플랫폼을 제공할 수 있고, 또한 메모리 관리를 위한 IA-32 하드웨어를 포함하는 IA-32 플랫폼인 호스트 플랫폼에서 실제로 실행하고 있을 수 있다. 추가 메커니즘 없이, 본 실시예에서의 가상 시스템은 하나의 가능한 해결책으로서, 물리적 메모리를 재매핑(remapping), 분할 및 보호하기 위해 IA-32 페이지 테이블 섀도잉(shadowing)을 이용하여 VMM에 물리적-메모리 가상화 알고리즘을 구현해야 한다. 따라서, 예를 들어, 게스트 소프트웨어가 가상 머신의 IA-32 페이지 테이블들을 액세스하는 것을 시도할 때, VMM은 게스트 OS에 의해 요구되는 기능에 (예를 들어, 물리적 주소들을 재매핑하는) 추상화를 위해 요구되는 기능을 오버레이해야 한다.
이를 위해, VMM은 게스트 소프트웨어에 의해 페이징 메커니즘의 이용을 포함하는 다양한 이벤트들을 트랩(trap)해야 한다. 이것은, IA-32 문서화에 기재되어 있는 바와 같이, IA-32 메모리 관리 시스템의 제어 레지스터들과 같은 제어 레지스터들(예를 들어, CR0, CR3 및 C4)에의 기입들, 메모리 액세스 및 페이징과 관련된 모델-특정 레지스터들(model-specific registers: MSRs)(예를 들어, 메모리-타입 레인지 레지스터들(memory-type range registers: MTRRs)에의 액세스들, 특정 예외들(exceptions)(예를 들어, 페이지 결함들)의 처리를 포함한다. 이와 같이 물리적 메모리를 가상화하기 위해 IA-32 페이지 테이블들을 이용하는 것은, 복잡하고, 상당한 성능 오버헤드를 요구한다.
도 3: 도 3은 가상-머신 환경(300)의 일 실시예를 예시한다. 본 실시예에 서, 프로세서-기반 플랫폼(316)은 VMM(312)을 실행할 수 있다. VMM은, 비록 통상적으로 소프트웨어로 구현되지만, 보다 높은 레벨의 소프트웨어에 대한 가상 베어 머신 인터페이스를 에뮬레이트 및 익스포트(export)할 수 있다. 이러한 보다 높은 레벨의 소프트웨어는 표준 OS, 실시간 OS를 포함할 수 있거나, 또는 제한된 운영 체계 기능을 갖는, 불필요한 장비를 모두 제거한 환경(stripped-down environment)일 수 있으며, 일부 실시예들에서 표준 OS에서 통상적으로 이용가능한 OS 설비를 포함하지 않을 수 있다. 대안적으로, 예를 들어, VMM(312)은 다른 VMM 내에서, 또는 다른 VMM의 서비스들을 이용하여 구동될 수 있다. VMM들은 예를 들어, 일부 실시예들에서 하드웨어, 소프트웨어, 펌웨어 또는 다양한 기술들의 조합에 의해 구현될 수 있다.
플랫폼 하드웨어(316)는, 퍼스널 컴퓨터(PC), 메인프레임, PDA(personal digital assistant) 또는 "스마트" 모바일 폰과 같은 핸드헬드(handheld) 장치, 휴대용 컴퓨터, 셋톱박스, 또는 다른 프로세서 기반 시스템일 수 있다. 플랫폼 하드웨어(316)는 적어도 프로세서(318) 및 메모리(320)를 포함한다. 프로세서(318)는 마이크로프로세서, 디지털 신호 처리기, 마이크로컨트롤러 등과 같은, 프로그램들을 실행할 수 있는 임의의 유형의 프로세서일 수 있다. 프로세서는 실시예들에서 실행을 위한 마이크로코드(microcode), 프로그램가능 로직 또는 하드 코드 로직(hard coded logic)을 포함할 수 있다. 비록 도 3은 하나의 이러한 프로세서(318)만을 도시하고 있지만, 실시예에 있어서 하나 이상의 프로세서들이 시스템에 존재할 수 있다. 또한, 프로세서(318)는 다수의 코어, 다수의 쓰레드(thread)를 위한 지원 등을 포함할 수 있다. 메모리(320)는 다양한 실시예들에서 하드 디스크, 플로피 디스크, RAM(random access memory), ROM(read only memory), 플래시 메모리, 상기 장치들의 임의의 조합, 또는 프로세서(318)에 의해 판독가능한 임의의 다른 유형의 머신 매체를 포함할 수 있다. 메모리(320)는 프로그램 실행 및 다른 방법 실시예들을 수행하기 위한 명령들 및/또는 데이터를 저장할 수 있다.
VMM(312)은, 다양한 게스트에 동일하거나 상이한 추상화를 제공할 수 있는, 하나 이상의 가상 머신들의 추상화를 게스트 소프트웨어에 제공한다. 도 3은 2개의 가상 머신(302 및 314)을 도시한다. 각각의 가상 머신에서 구동하는 게스트 소프트웨어(303 및 313)와 같은 게스트 소프트웨어는 게스트 OS(304 또는 306)와 같은 게스트 OS 및 다양한 게스트 소프트웨어 애플리케이션(308 및 310)을 포함할 수 있다. 게스트 소프트웨어(303 및 313)는, 다른 기능들을 수행하기 위해 게스트 소프트웨어(303 및 313)가 구동하고 있는 가상 머신들 내의 물리적 자원들(예를 들어, 프로세서 레지스터들, 메모리 및 I/O 장치들)을 액세스할 수 있다. 예를 들어, 게스트 소프트웨어(303 및 313)는 가상 머신(302 및 314)에서의 제공된 프로세서 및 플랫폼의 아키텍처에 따라, 모든 레지스터, 캐시, 구조, I/O 장치, 메모리 등에 액세스하는 것을 기대한다.
일 실시예에서, 프로세서(318)는 가상 머신 제어 구조(virtual machine control structure: VMCS)(324)에 저장된 데이터에 따라 가상 머신들(302 및 314)의 동작을 제어한다. VMCS(324)는 게스트 소프트웨어(303 및 313)의 상태, VMM(312)의 상태, VMM(312)이 게스트 소프트웨어(303 및 313)의 동작을 어떻게 제 어하기를 바라는지를 나타내는 실행 제어 정보, VMM(312)과 가상 머신 사이의 전환들을 제어하는 정보 등을 포함할 수 있는 구조이다. 프로세서(318)는 VMCS(324)로부터 정보를 판독하여, 가상 머신의 실행 환경을 결정하고 그 비헤비어(behavior)를 억제한다. 일 실시예에서, VMCS(324)는 메모리(320)에 저장된다. 일부 실시예들에서, 다수의 가상 머신을 지원하기 위해 다수의 VMCS 구조들이 이용된다.
VMM(312)은 가상 머신들(302 및 314)에서 구동하는 게스트 소프트웨어에 의해 액세스 가능한 물리적 메모리를 관리할 필요가 있을 수 있다. 일 실시예에서 물리적 메모리 관리를 지원하기 위해서, 프로세서(318)는 확장된 페이지 테이블(extended page table: EPT) 메커니즘을 제공한다. 실시예에서, VMM(312)은 가상 머신(302 또는 314)으로의 제어의 전환 전에 제공될 필요가 있을 수 있는 물리적 메모리 가상화와 연관된 필드(field)들을 위한 값들을 제공하는 물리적 메모리 관리 모듈(326)을 포함할 수 있다. 이 필드들은 총체적으로 EPT 제어들로서 지칭된다. EPT 제어들은 예를 들어, EPT 메커니즘이 인에이블(enable) 되어야 하는지를 특정하는 EPT 인에이블 표시자, 및 물리적 메모리 가상화 메커니즘의 형태 및 의미론(semantics)을 나타내는 하나 이상의 EPT 테이블 구성 제어들을 포함할 수 있다. 이것들은 하기에서 상세하게 논의될 것이다. 또한, 일 실시예에서, EPT 테이블들(328)은, VMM(312)이 게스트 소프트웨어(303 및 313) 상에 배치할 수 있는 물리적 주소 변환 및 보호 의미론을 나타낸다.
일 실시예에서, EPT 제어들은 VMCS(324)에 저장된다. 대안적으로, EPT 제어들은 프로세서(318), 메모리(320)와 프로세서(318)의 조합, 또는 임의의 다른 저장 위치 또는 위치들에 존재할 수 있다. 일 실시예에서, 개별적인 EPT 제어들은 가상 머신들(302 및 314)의 각각에 대하여 유지된다. 대안적으로, 동일한 EPT 제어들은 가상 머신들 둘다에 대하여 유지되고 각각의 가상 머신 진입 전에 VMM(312)에 의해 갱신된다.
일 실시예에서, EPT 테이블들(328)은 메모리(320)에 저장된다. 대안적으로, EPT 테이블들(328)은 프로세서(318), 메모리(320)와 프로세서(318)의 조합, 또는 임의의 다른 저장 위치 또는 위치들에 존재할 수 있다. 일 실시예에서, 개별적인 EPT 테이블들(328)은 가상 머신들(302 및 314)의 각각에 대하여 유지된다. 대안적으로, 동일한 EPT 테이블들(328)은 가상 머신들(302 및 314) 둘다에 대하여 유지되고 각각의 가상 머신 진입 전에 VMM(312)에 의해 갱신된다.
일 실시예에서, 프로세서(318)는, EPT 인에이블 표시자에 기초하여 EPT 메커니즘이 인에이블되어 있는지 여부를 결정하는 것을 책임지는 EPT 액세스 로직(322)을 포함한다. EPT 메커니즘이 인에이블된 경우, 프로세서는 게스트-물리적 주소들을 EPT 제어들 및 EPT 테이블들(328)에 기반한 호스트-물리적 주소들로 변환한다.
시스템(300)이 다수의 프로세서 또는 멀티-쓰레드 프로세서(multi-threaded processor)를 포함하는 일 실시예에서, 논리적 프로세서들 각각은 개별적인 EPT 액세스 로직(322)과 결합되고, VMM(312)은 논리적 프로세서들 각각에 대하여 EPT 테이블들(328) 및 EPT 제어들을 구성한다.
게스트 소프트웨어(예를 들어, 게스트 OS(304)와 애플리케이션(308)을 포함하는 303)에 의해 액세스될 수 있는 자원들은 "특권(priviledged)" 또는 "비-특권 (non-privileged)"으로 분류될 수 있다. 특권 자원들의 경우, VMM(312)은 이들 특권 자원들에 대해 최후의 제어를 유지하면서 게스트 소프트웨어가 바라는 기능을 용이하게 한다. 또한, 각각의 게스트 소프트웨어(303 및 313)는 예외들(예를 들어, 페이지 결함들, 일반적인 보호 결함들 등), 인터럽트들(예를 들어, 하드웨어 인터럽트들, 소프트웨어 인터럽트들), 및 플랫폼 이벤트들(예를 들어, 초기화(INIT) 및 시스템 관리 인터럽트들(system management interrupts: SMIs))과 같은 다양한 플랫폼 이벤트들을 처리하는 것을 기대한다. 이들 플랫폼 이벤트들의 일부는, 가상 머신들(302 및 314)의 적절한 동작을 보증하기 위해, 그리고 게스트 소프트웨어로부터의 및 그 사이의 보호를 위해, VMM(312)에 의해 처리되어야 하기 때문에, "특권"이다. 게스트 운영 체계와 게스트 애플리케이션들은 둘다 특권 자원들을 액세스하는 것을 시도할 수 있고, 둘다 특권 이벤트들을 초래하거나 경험할 수 있다. 특권 플랫폼 이벤트들 및 특권 자원들에 대한 액세스 시도들은, 본원에서 총체적으로 "특권 이벤트들" 또는 "가상화 이벤트들(virtualization events)"로서 지칭된다.
도 4a 및 도 4b: 도 3에서 이전에 설명되고 도시된 것과 같은 실시예에서의 가상 머신 환경의 동작이, 도 4a 및 도 4b에 도시된 프로세싱에 의해 도시된다. 도 4a는 게스트 소프트웨어에서 일어나는 특권 이벤트를 처리하기 위한 실시예에서의 VM 환경의 동작; 및 게스트 소프트웨어에 의해 비-특권 이벤트를 처리하기 위한 실시예의 동작을 도시한다. 도 4b는 확장된 페이징 테이블들과 특히 관련되는 실시예에서의 VM 환경의 동작들, 특히 상기 실시예에서의 VMM에 의해 하드웨어에서의 EPT 메커니즘의 관리 및 게스트-물리적 메모리에 대한 게스트 소프트웨어 액세스에 관한 동작들을 도시한다. 도 4a 및 도 4b는 도 3에 도시된 것과 같은 환경에서 일어날 수 있는 모든 컴포넌트 또는 모든 동작들을 도시하지 않는다. 이것은 단지 표시의 명확성을 위한 것이다. 소수 집합의 컴포넌트 및 소수의 특정 동작들이 도 4a 및 도 4b에 나타내어져 있지만, 실시예에서의 VM 환경은 많은 다른 컴포넌트를 포함할 수 있고, 많은 다른 동작들이 이러한 실시예에서 일어날 수 있다.
도 4a가 우선 고려된다. 도 4a는 도 3에서 이전에 설명된 플랫폼 하드웨어(316) 및 가상 머신 추상화(302)에서 실행하는 게스트 소프트웨어(303)의 동작들의 하나의 예시적인 집합을 도시한다. 이 동작들은, 시스템에서(예를 들어, VMM(312)에서, 게스트 소프트웨어(303)에서 등) 동작들이 일어나는 곳을 나타내는 블록들 내에 도시된다. 전술한 VM 환경의 다른 컴포넌트들에 추가하여, VM 추상화(302)는 412에서 가상 머신 상태 및 게스트 소프트웨어(303)에 대한 다른 상태 정보를 저장할 수 있고, 또한 많은 예들 중의 2개를 명명(name)하기 위해서, 가상 네트워크 접속 또는 일반적인 레지스터들의 집합과 같은 다른 자원들을, 게스트들에게 제공할 수 있다. 물론, VM 상태, 게스트 상태 및 다른 VM 자원들을 구현하는 물리적 자원들은, 실제로 VM이 실행하는 플랫폼 하드웨어(316)에 의해 제공된다. 플랫폼 하드웨어는 메모리(320), VMCS(324) 및 프로세서(318)를 포함한다.
440에서, 게스트 소프트웨어(303)는 비-특권 자원(442)을 액세스한다. 비-특권 자원은 VMM(312)에 의해 제어될 필요가 없고, VMM(312)을 호출하지 않고 계속하는 게스트 소프트웨어에 의해 직접 액세스될 수 있어, 게스트가, 비-특권 자원 (442)을 액세스한 후에 445에서 동작을 계속할 수 있게 한다. 비-특권 플랫폼 이벤트는 마찬가지로 VMM(312)의 개입 없이 처리된다(이것은 도 4a에 도시되지 않는다).
405에서, 게스트 소프트웨어(303)는 특권 자원을 액세스하는 것을 시도하고, 및/또는 특권 플랫폼 이벤트를 경험한다. 405에서와 같이 이러한 특권 이벤트가 일어나면, 제어는 VMM(312)으로 전송될 수 있다(407). 게스트 소프트웨어로부터 VMM(312)으로의 제어의 전송(407)은 본원에서 가상 머신 종료로서 지칭된다. 자원 액세스를 용이하게 하거나, 또는 특권 이벤트를 적절하게 처리한 후에, VMM(312)은 432에서와 같이 게스트 소프트웨어로 제어를 복귀하고, 435에서와 같이 동작을 재개한다. VMM(312)으로부터 게스트 소프트웨어로의 제어의 전송(432)은, 가상 머신 진입으로서 지칭된다. 일 실시예에서, VMM(312)은 본원에서 가상 머신 진입 명령으로서 지칭되는, 전환(transition)을 트리거(trigger)하도록 특별히 설계된 명령을 실행함으로써 가상 머신 진입을 개시한다(430).
일 실시예에서, 가상 머신 종료가 일어나면, 게스트 소프트웨어에 의해 이용되는 프로세서 상태의 컴포넌트들이 세이브(save)되고(410), VMM(312)에 의해 요구되는 프로세서 상태의 컴포넌트들이 로드되고, 실행은 VMM(312)에서 재개한다(420). 일 실시예에서, 게스트 소프트웨어에 의해 이용되는 프로세서 상태의 컴포넌트들은 VMCS(324)의 게스트-상태 영역에 저장되고, VMM(312)에 의해 요구되는 프로세서 상태의 컴포넌트들은 VMCS(324)의 모니터-상태 영역에 저장된다. 일 실시예에서, VMM(312)으로부터 게스트 소프트웨어로의 전환이 일어나면, 가상 머신 종 료에서 세이브되었던(그리고 가상 머신 종료를 처리하는 동안 VMM(312)에 의해 변경되었을 수 있는) 프로세서 상태의 컴포넌트들이 재저장되고(425), 가상 머신(302 또는 314)으로 제어가 복귀된다(430).
다음으로, 도 4b가 고려된다. 전술한 바와 같이, 도 4b는 일 실시예에서 VMM에 의한 하드웨어에서의 EPT 메커니즘의 관리, 게스트-물리적 메모리에의 게스트 프로그램 액세스, 및 확장된 페이징 테이블들에 대하여 특히 관련된, 도 4a에서 전술되고 도시된 VM 환경의 동작들을 도시한다. 이전과 같이, 표시의 명확성을 위하여, 도 4b는 실시예에서 VM 환경에서 일어날 수 있는 모든 컴포넌트들 또는 모든 동작들을 도시하지 않는다. 소수 집합의 컴포넌트들 및 소수의 특정 동작들이 도 4b에 나타내어져 있지만, 실시예에서의 VM 환경은 많은 다른 컴포넌트들을 포함할 수 있고, 많은 다른 동작들이 이러한 실시예에서 일어날 수 있다.
도 4b에 도시된 실시예에서의 VM 환경의 컴포넌트들은, 게스트 소프트웨어(303), VM(302), 물리적 메모리 관리 모듈(326)을 갖는 VMM(312), 및 플랫폼 하드웨어 또는 물리적 머신(316)이다. 플랫폼 하드웨어는, 본 실시예에서, EPT 테이블들(328)과 VMCS(324)의 집합; 및 EPT 액세스 로직(322)을 갖는 프로세서(318)를 포함하는, 메모리(320)를 더 포함한다. 일반적으로, 플랫폼 하드웨어에서의 EPT 설비들의 이용은, 도 4의 450에 도시된 바와 같이, 예를 들어, 게스트 소프트웨어(303)에 의해 게스트-물리적 메모리에의 액세스가 이루어지면, 게스트 소프트웨어에 의해 개시될 수 있다. 게스트-물리적 메모리 액세스들은 VM(302)에 의해 제공되는 메모리의 VM 추상화(451)에 참조되고, 메모리의 VM 추상화(451)는 물리적 머 신(316)에 참조된다. EPT 메커니즘이 인에이블된 경우, 플랫폼 하드웨어(316)는 게스트-물리적 메모리에의 액세스를 호스트-물리적 메모리(320)에의 액세스로 변환하기 위해 EPT 테이블들(328) 및 EPT 액세스 로직(322)을 이용하여 게스트-물리적 메모리에 대한 VM 참조를 처리할 수 있다. EPT 동작의 세부사항들은 하기에서 도 5 및 도 6을 참조하여 논의된다.
EPT 메커니즘 자체는 VMCS(324)에 저장될 수 있는 EPT 테이블들(328) 및 EPT 제어들을 구성하는 VMM(312)에 의해 구성될 수 있다. 본 실시예에서, EPT 메커니즘의 구성은 VMM(312)에서의 특권 이벤트(405)의 프로세싱 다음 및 VM 진입(430) 이전에, 물리적 메모리 관리 모듈(326)의 동작의 부분으로서 VMM(312)에 의해 행해질 수 있다. EPT 메커니즘을 구성함에 있어서, VMM(312)은 EPT 메커니즘을 인에이블, 디세이블(disable) 또는 제어하기 위해서, EPT 테이블들(328) 및 EPT 제어들을 갱신할 수 있다.
물론, VM 환경과 결합하여 확장된 페이징 테이블들을 이용하기 위해 많은 다른 형태의 프로세싱, 예를 들어, 많은 다른 것들 중에서, 도 3을 참조하여 앞서 논의된 바와 같은 EPT 제어들 및 EPT 테이블들(328)을 위한 서로 다른 위치들, 다수의 VM, 다수의 프로세서, 다수의 쓰레드, 다수의 게스트, 및 이들 변형들의 조합이 가능하다.
도 5: 도 5는 가상 머신에서의 게스트 소프트웨어가 게스트 가상 주소를 참조할 때 호스트-물리적 주소를 최후에 계산하기 위해 전술한 확장된 페이지 테이블들을 이용하는 프로세싱의 일례를 도시한다. 도시된 예는 간단한 32-bit 가상 어 드레싱 및 간단한 페이지 테이블 포맷들을 이용하여 IA-32 플랫폼에서 구동되는 게스트 소프트웨어를 도시한다. 이 기술분야의 당업자는, 예를 들어, 다른 페이징 모드들(예를 들어, 게스트 소프트웨어에서의 64-bit 어드레싱), 다른 명령 집합 아키텍처들(예를 들어, Intel Corporation으로부터 입수가능한 Intel Itanium Architecture Software Developer's Manual에 특정된 바와 같은, The Intel Itanium® Architecture) 또는 다른 구성들을 이해하기 위해 이 예를 용이하게 확장할 수 있을 것이다.
도 5에서, 게스트 가상 주소(510)에 대한 참조가 가상 머신에서 실행하는 게스트 소프트웨어에 의해 실행된다. 게스트에서 활성인(즉, 게스트 운영 체계에 의해 구성되는) 메모리 관리 메커니즘을 이용하여, 가상 주소를 게스트-물리적 주소로 변환한다. 변환에 이용되는 각각의 게스트-물리적 주소 및 결과로서 생긴 게스트-물리적 주소는, 호스트-물리적 메모리를 액세스하기 전에 EPT를 통해 호스트-물리적 주소들로 변환된다. 이 처리는 다음의 논의에서 상세하게 설명된다.
이 예에서, CR3 레지스터(520)에서의 적절한 비트들(502)은 게스트-물리적 메모리에서 게스트의 페이지 디렉토리 테이블(560)의 기준을 가리킨다. 이 값(502)을, (이 예에서, 테이블들에서의 엔트리들은 각각 4 바이트이기 때문에, 4를 곱함으로써 IA-32 의미론에 따라 적절하게 조정되는) 게스트 가상 주소(510)로부터의 상위 비트와 결합하여, 게스트의 PD 테이블(560)에서의 페이지 디렉토리 엔트리(page directory entry: PDE)의 게스트-물리적 주소(512)를 형성한다. 이 값(512)을 EPT 테이블들(555)을 통해 변환하여, 페이지 디렉토리 엔트리의 호스트-물리적 주소(504)를 형성한다. 프로세서는 이 호스트-물리적 주소(504)를 이용하여 페이지 디렉토리 엔트리를 액세스한다.
PDE로부터의 정보는 게스트의 페이지 테이블(570)의 기준 주소(522)를 포함한다. 이 게스트-물리적 주소(522)를, 적절하게 조정된 게스트 가상 주소(510)의 비트들(21:12)과 결합하여, 게스트의 페이지 테이블(570)에서 페이지 테이블 엔트리의 게스트-물리적 주소(532)를 형성한다. 이 게스트-물리적 주소(532)를 EPT 테이블들(565)을 통해 변환하여, 게스트의 페이지 테이블 엔트리(page table entry: PTE)의 호스트-물리적 주소(514)를 형성한다. 프로세서는 이 호스트-물리적 주소(514)를 이용하여 PTE를 액세스한다.
PTE로부터의 정보는 액세스되고 있는 게스트-물리적 메모리에서의 페이지의 기준 주소(542)를 포함한다. 이 값을 게스트 가상 주소(510)의 하위 비트들(11:0)과 결합하여, 액세스되고 있는 메모리의 게스트-물리적 주소(552)를 형성한다. 이 값(552)을 EPT 테이블들(575)을 통해 변환하여, 액세스되어 있는 메모리의 호스트-물리적 주소(524)를 형성한다.
EPT 테이블들을 이용하여 게스트-물리적 주소를 호스트-물리적 주소로 변환할 때마다, 프로세서는 또한 하기에 설명된 바와 같이, EPT 테이블들에서의 제어들에 따라 액세스가 허용된다는 것을 확인한다. 또한, EPT 테이블들(555, 565 및 575)은, 비록 도 5에서 별개로 나타내어져 있지만, 일 실시예에서, 동일한 집합의 EPT 테이블들일 수 있다(즉, 단일 집합의 EPT 테이블들이 게스트-물리적으로부터 호스트-물리적으로의 모든 주소 변환들에 이용된다)는 것을 이해해야 한다.
도 6: 도 6은 멀티-레벨 EPT 테이블을 이용하여 게스트-물리적 주소를 호스트-물리적 주소로 최종 변환하기 위해 전술한 확장된 페이지 테이블들을 이용하는 프로세싱의 다른 예를 도시한다. 도 6에 도시된 예시적인 실시예에서, EPT 기준 포인터(EPTP)(620)에서의 적절한 비트들(602)은, 본 실시예에서 호스트-물리적 메모리에 저장되는, 제1 레벨 EPT 테이블(650)의 기준의 호스트-물리적 주소를 나타낸다. EPTP는 도 7을 참조하여 하기에서 더욱 상세하게 논의될 것이다. 이 예에서, EPT 테이블들에서의 엔트리들은 각각 8 바이트이다. 게스트-물리적 주소(610)로부터의 비트들 38:30(601)에 8을 곱함으로써(예를 들어, 그 값을 3 비트만큼 좌측으로 시프트함으로써) 적절하게 조정하여, 조정된 상위 게스트-물리적 주소(603)를 획득한다. EPT 테이블 기준 주소 값(602)을 조정된 상위 게스트-물리적 주소 비트들(603)과 결합(추가)하여, 제1 레벨 EPT 테이블(650)에서의 EPT 테이블 엔트리(651)의 호스트-물리적 주소(604)를 형성한다. 제1 레벨 EPT 테이블(650)에서의 651과 같은 엔트리뿐만 아니라 다른 EPT 테이블들(660 및 670)에서의 엔트리들의 예시적인 포맷은 도 8을 참조하여 하기에서 논의될 것이다.
EPT 테이블 엔트리(651)의 부분은 후속 레벨 EPT 테이블(660)의 기준 주소(612)이다. 게스트-물리적 주소(610)의 비트들 29:21(611)로부터 제2 조정된 주소 컴포넌트(613)가 형성된다. 이 조정된 값(613)을 기준 주소(612)와 결합(추가)하여, 후속 레벨 EPT 테이블(660)에서의 EPT 테이블 엔트리(661)의 호스트-물리적 주소(614)를 형성한다. 프로세서는 이 호스트-물리적 주소(614)를 이용하여 EPT 테이블 엔트리(661)를 액세스한다.
EPT 테이블 엔트리(661)로부터의 정보는 최종 EPT 테이블(670)의 기준 주소(622)를 포함한다. 이 기준 주소(622)를, 적절하게 조정한 후 게스트 가상 주소(610)의 조정된 비트들 20:12(623)과 결합하여, 최종 EPT 테이블(670)에서의 EPT 테이블 엔트리(671)의 주소(624)를 형성한다. 프로세서는 이 호스트-물리적 주소(624)를 이용하여 EPT 테이블 엔트리를 액세스한다.
EPT 테이블 엔트리(671)로부터의 정보는 호스트-물리적 메모리(690)에서 액세스되고 있는 페이지의 기준 주소(632)를 포함한다. 이 페이지 주소 값(690)을 게스트-물리적 주소(610)의 하위 비트들(11:0)과 결합하여, 액세스되고 있는 메모리의 최종 호스트-물리적 주소(634)를 형성한다.
도 6에 도시된 예시적인 실시예에서, EPT 테이블들은 계층적이다. 이 EPT 테이블들은 종래의 멀티-레벨 페이지 테이블들과 형태가 유사하다. 또한, 이 예에서, 각각의 EPT 테이블에서의 각각의 EPT 테이블 엔트리는 8 바이트 사이즈이지만, 다른 실시예들에서는 이 사이즈가 상이할 수 있어, 이 기술분야의 당업자에 의해 알 수 있는 바와 같이 테이블들을 액세스하는 메커닉(mechanics)을 변경시킬 수 있다. 이 예에서, 각각의 EPT 테이블은 4KB 사이즈이다. 다른 실시예들에서는, 서로 다른 테이블 사이즈가 이용될 수 있으며, 또한, 도 6에 도시된 것과 같은 계층구조의 모든 테이블이 동일한 사이즈로 되어 있어야 하는 것을 필요로 하지 않는다. 사이즈의 이러한 변경은 후속 레벨의 EPT 테이블을 인덱싱하기 위해 게스트-물리적 주소로부터 이용되는 비트의 수에 영향을 미칠 수 있다. 많은 다른 EPT 테이블 구성이 가능하다는 것이 이 기술분야의 당업자에게 명백할 것이다.
도면에 도시된 계층 구성은 3개의 레벨의 계층구조를 나타내고, 2개의 EPT 테이블들(650 및 660)은 각각 보다 하위 레벨의 EPT 테이블들(660 및 670)에 대한 인덱스들로서 역할을 한다. 다른 실시예들에 있어서, 이러한 계층 테이블에는, 소수의 레벨, 예를 들어, 2개의 레벨, 또는 보다 많은 레벨, 예를 들어, 4개 이상의 레벨의 계층이 존재할 수 있다. 일반적으로, 계층의 레벨 수는 게스트-물리적 주소에서의 비트 수, 각 테이블의 사이즈, 및 각 테이블 엔트리에서의 바이트 수 중 하나 이상에 적어도 부분적으로 의존하여 변할 수 있다. 도 6의 예에서 게스트-물리적 주소는 32 비트 사이즈이다. 다른 실시예들에 있어서, 게스트-물리적 주소는 상이한 사이즈일 수 있고, 사이즈의 이러한 변경은 변환을 수행하기 위해 요구되는 EPT 테이블의 레벨 개수의 변경을 요구할 수 있다. 예를 들어, 게스트-물리적 주소가 48 비트인 경우에는, 변환을 행하기 위해 4 레벨의 EPT 테이블들이 요구된다(각 레벨에서의 4KB EPT 테이블들 및 각 EPT 테이블에서의 8 바이트 EPT 테이블 엔트리들을 가정함).
도 6에 도시된 실시예에서, EPT 제어들은 단일 필드, EPT 포인터(EPTP)를 포함한다. 이 필드는 제1 레벨 EPT 테이블의 기준의 주소를 포함한다. 이 예에서, 각 EPT 테이블은 4KB 사이즈이다.
도 7: 도 7에 도시된 예시적인 실시예에 나타난 바와 같이, EPT 기준 주소 포인터(EPTP)는 도 6에서 전술한 것과 같은 제1 레벨 EPT 테이블의 기준의 (호스트-물리적 메모리에서의) 기준 주소를 형성하기 위해 이용되는 비트들을 포함한다. 도 7에 도시된 예에서, 비트들 59:12는 기준 주소를 형성한다. 비트들 11:0 및 63:60은 0인 것으로 가정한다. 물론, 다양한 비트 필드의 폭은 다른 실시예들에서 변할 수 있으며, 예를 들어, 기준 주소 필드는 특정 아키텍처 또는 구현에서 주소 비트의 수에 따라 변할 것이다. EPTP 레지스터에서의 나머지 비트들은 다른 실시예들에서 다른 목적으로 이용될 수 있다. 일 실시예에서, EPTP 레지스터는 가상 머신 진입 또는 가상 머신 종료를 통해서만 액세스 가능하다. 이러한 실시예에서, 프로세서에서의 EPTP 레지스터는 가상 머신 진입 시에 VMCS에서의 EPTP 필드로부터 로드됨으로써, 게스트 소프트웨어가 동작하는 동안 EPT 메커니즘을 활성화한다. 전술한 바와 같이, 이 활성화(및 EPTP 필드의 로딩)는 VMCS 또는 다른 곳의 내에 있는 다른 제어 비트들에 의해 제어될 수 있다.
도 8: 이 도면은 EPT 테이블에서의 엔트리의 포맷의 예시적인 실시예를 도시한다. 이 예에서, EPT 테이블에서의 각각의 엔트리는 8 바이트 사이즈이다. 일 실시예에서, 각각의 EPT 테이블은 4KB 사이즈이고, 이것은 EPT 테이블 페이지당 512 EPT 테이블 엔트리가 존재한다는 것을 의미한다. 도 8의 예에 도시된 바와 같이, 각각의 EPT 테이블 엔트리는 메모리에서의 후속 레벨 EPT 테이블 또는 페이지의 기준 호스트-물리적 주소(ADDR), 허용(permission) 및 다른 구성 정보를 포함한다. 이전과 같이, 다양한 비트 필드의 폭은, 다른 실시예들에서 변할 수 있으며, 예를 들어, ADDR 폭은 특정 아키텍처 또는 구현에서의 주소 비트의 수에 따라 변할 수 있다. 도 8은 단지 2개의 허용 비트, 즉, 존재(Present) 및 기입가능(Writable)을 도시하고 있다. 다른 실시예들에서는, 다른 허용 및 구성 정보가 각각의 EPT 테이블 엔트리에 존재할 수 있다. 예를 들어, 일 실시예에서, 허용 비트 는, 메모리의 페이지가 실행될 수 있는지(즉, 페이지의 내용이 프로세서에 의해 명령들로서 인출 및 해석될 수 있는지)를 나타낸다.
EPT 테이블들은 다양한 서로 다른 포맷으로 될 수 있다. 예를 들어, EPT 테이블들은 단순한, 계층 테이블들로서 도 6에 도시된 바와 같이 구현될 수 있다. 대안적으로, EPT 테이블들은 단일 레벨 페이지 테이블들일 수 있다(여기서, 제1 레벨 EPT 테이블의 사이즈는 게스트-물리적 주소 공간의 최대 사이즈를 나타낸다). 대안적으로, EPT 테이블들은 어떤 형태의 해시 테이블들(hashed tables)일 수 있다. 다른 실시예들에서 다수의 다른 구성들이 가능하다는 것이 이 기술분야의 당업자에게 명백하다.
EPT 테이블들은 호스트-물리적 메모리에서의 페이지들의 1 이상의 사이즈들을 지원할 수 있다. 일 실시예에서, 각각의 EPT 테이블에서의 각각의 엔트리는, EPT 테이블들의 행동이 그 시점에서 정지해야 한다는 것을 나타내는 수퍼 페이지 비트(super page bit), 및 EPT 테이블 엔트리에서의 주소 정보 및 게스트-물리적 주소에서의 나머지 비트들을 이용하여 형성된 호스트-물리적 주소를 포함한다. 도 6에 도시된 예에서, 예를 들어, 수퍼 페이지 비트가 EPT 테이블들(660)에 설정되었다면, 호스트-물리적 메모리에서의 결과적인 페이지는 2MB 사이즈일 것이고, 결과로 생긴 호스트-물리적 주소는 게스트-물리적 주소(610)의 비트들(20:0)과 EPT 테이블(660)로부터의 주소 비트들을 결합함으로써 형성될 것이다.
일부 실시예들에서, 확장된 페이징 테이블들 및 EPT 주소 변환 메커니즘은 가상 머신 진입에 의해 인에이블되고, 가상 머신 종료에 의해 디세이블될 수 있다. 따라서, 결과로서, EPT 메커니즘은 그 자신의 주소 변환을 관리하기 위해 게스트 소프트웨어 또는 VMM 소프트웨어에 의해 사용하는데에 이용가능하지 않을 수 있다. 또한, 이러한 실시예들에서, EPT 메커니즘은 비록 EPT 동작들이 종래의 페이지 관리 메커니즘의 특징을 이용할 수 있지만, 예를 들어, IA-32 실시예에서의 IA-32 페이징 테이블들과 같은, 게스트 또는 호스트 소프트웨어에 대해 이용가능한 다른 종래의 메모리 페이지 관리 메커니즘들과 별개일 수 있고 이 메커니즘들과 독립적일 수 있다. 따라서, EPT 테이블들의 조직 및 동작은, 호스트 머신의 EPT 메커니즘 및 가상화를 이용하는 게스트 소프트웨어의 시행과 달리, 호스트 머신에서의 직접 동작들 및 프로그램들의 종래의 실행을 위해 프로세서에 의해 제공되는 다른 페이지 변환 설비들과 완전히 별개일 수 있다. 일 실시예에서, EPT 메커니즘은 게스트 및 VMM 소프트웨어에 이용가능한, 실시예의 종래의 페이지 관리 메커니즘에 의해 이용되는 것과 동일한 포맷으로 테이블들을 이용할 수 있다. 그러나, EPT 메커니즘을 제어하는 테이블들은, 여전히 게스트-가상 주소:게스트-물리적 주소 변환을 제어하는 것 및 호스트-가상 주소:호스트-물리적 주소 변환을 제어하는 것과 별개일 수 있다.
비록 제공된 예들은 실행 유닛들 및 로직 회로들의 문맥에서 가상 머신 시스템에서의 물리적 메모리 가상화를 위한 지원을 제공하는 것을 설명할 수 있지만, 다른 실시예들은 소프트웨어에 의해 달성될 수 있다. 일부 실시예들은 머신, 또는 그 머신에 의해 액세스될 때에 그 실시예의 프로세스를 수행하는 명령들이 저장된 머신 판독가능한 매체를 포함할 수 있는 소프트웨어 프로그램 제품 또는 소프트웨 어로서 제공될 수 있다. 다른 실시예들에서, 프로세스들은 그 프로세스들을 수행하기 위한 배선에 의한 로직(hardwired logic)을 포함하는 특정 하드웨어 컴포넌트들에 의해서, 또는 프로그램된 컴포넌트들 및 맞춤(custom) 하드웨어 컴포넌트들의 임의의 조합에 의해서 수행될 수 있다.
전술한 설명에서는, 설명의 목적으로, 설명된 실시예들의 완전한 이해를 제공하기 위하여 다수의 특정 세부사항들이 설명되어 있지만, 이 기술분야의 당업자는, 많은 다른 실시예들이 이러한 특정 세부사항들 없이 실행될 수 있다는 것을 알 것이다.
전술한 상세한 설명의 일부 부분들은 프로세서 기반 시스템 내에서의 데이터 비트들에 대한 연산들의 기호 표현 및 알고리즘에 의하여 제공된다. 이러한 알고리즘 방식의 설명 및 표현은, 이 기술분야의 당업자들에 의해 그들의 연구 내용을 이 기술분야의 다른 사람들에게 가장 효과적으로 전달하기 위해 이용되는 수단이다. 연산들은 물리량들의 물리적 조작들을 필요로 하는 것들이다. 이 물리량들은 저장, 전달, 결합, 비교 및 조작될 수 있는 전기적, 자기적, 광학적 또는 다른 물리적 신호들의 형태를 취할 수 있다. 주로 공통 사용의 이유로, 이 신호들을 비트, 값, 요소, 기호, 문자, 용어, 수 등으로서 나타내는 것이 때때로 편리하다고 판명되었다.
그러나, 이들 및 유사 용어들 모두는 적절한 물리량들과 연관되는 것이고, 단지 이들 물리량들에 적용되는 편리한 라벨들이라는 것을 명심해야 한다. 설명으로부터 명백한 바와 같이 특별히 다르게 언급되지 않으면, "실행" 또는 "처리" 또 는 "계산" 또는 "산출" 또는 "결정" 등과 같은 용어들은, 프로세서 기반 시스템의 저장소 내의 물리량들로서 표현된 데이터를 마찬가지로 표현된 다른 데이터로 조작하고 변환하는, 프로세서 기반 시스템 또는 유사한 전자 컴퓨팅 장치, 또는 다른 이러한 정보 저장, 전송 또는 디스플레이 장치들의 작용 및 프로세스들을 가리킬 수 있다.
실시예들의 설명에 있어서, 첨부 도면들에 대하여 참조가 이루어질 수 있다. 도면들에서, 동일한 부호들은 여러 도면들에 걸쳐서 실질적으로 유사한 컴포넌트들을 나타낸다. 다른 실시예들이 이용될 수 있고, 구조적, 논리적, 및 전기적 변경들이 이루어질 수 있다. 또한, 다양한 실시예들은, 비록 서로 다르더라도, 반드시 서로 배타적일 필요는 없다는 것을 이해해야 한다. 예를 들어, 일 실시예에서 설명된 특정한 특징, 구조, 또는 특성은 다른 실시예들 내에 포함될 수 있다.
또한, 프로세서에 구현되는 실시예의 설계는 생성으로부터 시뮬레이션을 거쳐 제조에 이르기까지, 다양한 단계들을 거칠 수 있다. 설계를 표현하는 데이터는 그 설계를 많은 방식으로 표현할 수 있다. 먼저, 시뮬레이션에서 유용한 바와 같이, 하드웨어는 하드웨어 기술 언어(hardware description language) 또는 다른 기능 기술 언어를 이용하여 표현될 수 있다. 또한, 로직 및/또는 트랜지스터 게이트들을 갖는 회로 레벨 모델은 설계 프로세스의 일부 단계들에서 생산될 수 있다. 또한, 대부분의 설계는, 일부 단계에서, 하드웨어 모델에서의 다양한 장치들의 물리적 배치를 표현하는 데이터의 레벨에 도달한다. 종래의 반도체 제조 기술들이 이용되는 경우, 하드웨어 모델을 표현하는 데이터는 집적회로를 생산하는데 이용되 는 마스크들을 위한 서로 다른 마스크층들에서의 다양한 피쳐(features)의 존재 또는 부재를 특정하는 데이터일 수 있다. 설계의 임의의 표현에서, 데이터는 임의의 형태의 머신 판독가능한 매체에 저장될 수 있다. 정보와 같이 전송을 위해 변조되거나 생성되는 광학적 또는 전기적 파(wave), 메모리, 또는 디스크와 같은 자기적 또는 광학적 저장소가 머신 판독가능한 매체일 수 있다. 이 매체들 중 임의의 것은 설계 또는 소프트웨어 정보를 "운반(carry)" 또는 "표시(indicate)"할 수 있다. 전기적 신호의 카핑(copying), 버퍼링, 또는 재전송이 수행되는 정도까지, 코드 또는 설계를 표시 또는 운반하는 전기적 캐리어파(carrier wave)가 전송될 때, 새로운 카피(copy)가 형성된다. 따라서, 통신 제공자 도는 네트워크 제공자는 실시예를 구성 또는 표현하는 물품(캐리어파)의 카피들을 형성할 수 있다.
실시예들은, 머신에 의해 액세스될 때 그 머신으로 하여금 청구된 요지에 따라 프로세스를 수행하게 할 수 있는 데이터가 저장된 머신 판독가능한 매체를 포함할 수 있는 프로그램 제품으로서 제공될 수 있다. 머신 판독가능한 매체는 플로피 디스켓, 광 디스크, DVD-ROM 디스크, DVD-RAM 디스크, DVD-RW 디스크, DVD+RW 디스크, CD-R 디스크, CD-RW 디스크, CD-ROM 디스크, 및 자기 광(magneto-optical) 디스크, ROM, RAM, EPROM, EEPROM, 자기 또는 광 카드, 플래시 메모리, 또는 전자 명령들을 저장하는데 적합한 다른 유형의 미디어/머신 판독가능한 매체를 포함할 수 있으며, 이것으로 한정되지 않는다. 또한, 실시예들은 프로그램 제품으로서 다운로드될 수 있고, 여기서, 프로그램은 통신 링크(예를 들어, 모뎀 또는 네트워크 접속)를 통해 캐리어파 또는 다른 전달(propagation) 매체에 구현된 데이터 신호에 의하여 원격 데이터 원으로부터 요구 장치로 전송될 수 있다.
많은 방법이 가장 기본적인 형태로 설명되어 있지만, 그 방법들 중 임의의 것에 단계들이 추가 또는 삭제될 수 있고, 청구된 요지의 기본적인 범위로부터 벗어나지 않고 설명된 메시지들의 임의의 것에 정보가 추가되거나 삭제될 수 있다. 많은 다른 변경들 및 변형들이 이루어질 수 있다는 것이 이 기술분야의 당업자에게 명백할 것이다. 특정 실시예들은 청구된 요지를 한정하기 위해 제공되지 않으며 그것을 예시하기 위해서 제공된다. 청구된 요지의 범위는 전술한 특정 예들에 의해 결정되는 것이 아니라, 다음의 특허청구범위에 의해서만 결정된다.
본 발명에 따르면, 프로세서가 동작가능한 호스트 머신에서 실행가능한 가상 머신에서 실행가능한 게스트 소프트웨어에 의해 이루어지는 게스트-물리적 메모리에 대한 참조를, 호스트 머신의 호스트-물리적 메모리에 대한 참조에 매핑하기 위해 확장된 페이징 테이블을 포함하는 메모리 가상화 지원 시스템을 포함하는, 프로세서의 가상화 시스템을 포함하는 프로세서가 제공된다.

Claims (30)

  1. 프로세서로서,
    상기 프로세서의 가상화(virtualization) 시스템을 포함하고,
    상기 가상화 시스템은 상기 프로세서가 동작가능한 호스트 머신에서 실행가능한 가상 머신(virtual machine)에서 실행가능한 게스트 소프트웨어에 의해 이루어지는 게스트-물리적 메모리(guest-physical memory)에 대한 참조를, 상기 호스트 머신의 호스트-물리적 메모리(host-physical memory)에 대한 참조에 매핑(mapping)하기 위해 확장된 페이징 테이블(paging table)을 포함하는 메모리 가상화 지원 시스템을 포함하는 프로세서.
  2. 제1항에 있어서,
    상기 메모리 가상화 지원 시스템은 액세스에 대한 제약들을 특정하고, 그 제약들에 따라 상기 게스트-물리적 메모리의 위치에 대한 액세스를 제어하는 프로세서.
  3. 제1항에 있어서,
    상기 메모리 가상화 지원 시스템은 상기 호스트 머신의 상기 호스트-물리적 메모리를 분할하는 프로세서.
  4. 제2항에 있어서,
    상기 가상화 지원 시스템은 상기 제약들의 위반시에 메모리를 액세스하기 위한 시도에 응답하여 가상 머신 모니터(virtual machine monitor: VMM)로 전환하는 프로세서.
  5. 제1항에 있어서,
    상기 확장된 페이징 테이블은 게스트-물리적 메모리의 페이지에 대한 참조를, 호스트-물리적 메모리의 페이지에 대한 참조에 매핑하는 프로세서.
  6. 제5항에 있어서,
    상기 확장된 페이징 테이블은 게스트-물리적 메모리의 페이지에 대한 액세스 제약을 특정하는 프로세서.
  7. 제6항에 있어서,
    게스트-물리적 메모리의 페이지에 대한 상기 액세스 제약은,
    판독 액세스 제어 정보, 기입 액세스 제어 정보, 및 실행 액세스 제어 정보 중 적어도 하나를 포함하는 프로세서.
  8. 제6항에 있어서,
    상기 가상화 시스템은 게스트-물리적 메모리의 페이지에 대한 상기 액세스 제약의 위반에 응답하여 가상 머신 모니터로 전환하는 프로세서.
  9. 제5항에 있어서,
    상기 확장된 페이징 테이블은 멀티-레벨 확장된 페이징 테이블을 포함하는 프로세서.
  10. 제1항에 있어서,
    상기 메모리 가상화 지원 시스템은 상기 가상화 시스템의 플래그(flag)가 소정값으로 설정된 경우에만 상기 프로세서의 상기 가상화 시스템의 활성화에 응답하여 활성화되는 프로세서.
  11. 프로세서 기반 호스트 머신에서 실행가능한 가상 머신에서 실행가능한 게스트 소프트웨어에 의해 이루어지는 게스트-물리적 메모리에 대한 참조를, 상기 호스트 머신의 확장된 페이징 테이블을 이용하는 상기 호스트 머신의 호스트-물리적 메모리에 대한 참조에 매핑하는 단계
    를 포함하는 방법.
  12. 제11항에 있어서,
    액세스에 대한 제약들을 특정하는 단계, 및 그 제약들에 따라 상기 게스트-물리적 메모리의 위치에 대한 액세스를 제어하는 단계를 더 포함하는 방법.
  13. 제11항에 있어서,
    상기 호스트 머신의 상기 호스트-물리적 메모리를 분할하는 단계를 더 포함하는 방법.
  14. 제12항에 있어서,
    상기 가상화 지원 시스템이 상기 제약들의 위반시에 메모리를 액세스하기 위한 시도에 응답하여 가상 머신 모니터로 전환하는 단계를 더 포함하는 방법.
  15. 제11항에 있어서,
    게스트-물리적 메모리의 페이지에 대한 참조를, 호스트-물리적 메모리의 페이지에 대한 참조에 매핑하는 단계를 더 포함하는 방법.
  16. 제15항에 있어서,
    상기 확장된 페이징 테이블은 게스트-물리적 메모리의 페이지에 대한 액세스 제약을 특정하는 방법.
  17. 제16항에 있어서,
    게스트-물리적 메모리의 페이지에 대한 상기 액세스 제약은,
    판독 액세스 제어 정보, 기입 액세스 제어 정보, 및 실행 액세스 제어 정보 중 적어도 하나를 포함하는 방법.
  18. 제16항에 있어서,
    게스트-물리적 메모리의 페이지에 대한 상기 액세스 제약의 위반에 응답하여 가상 머신 모니터로 전환하는 단계를 더 포함하는 방법.
  19. 제15항에 있어서,
    상기 확장된 페이징 테이블은 멀티-레벨 확장된 페이징 테이블을 포함하는 방법.
  20. 제11항에 있어서,
    상기 가상화 시스템의 플래그가 소정값으로 설정된 경우에만 상기 프로세서의 상기 가상화 시스템의 활성화에 응답하여 상기 메모리 가상화 지원 시스템을 활성화하는 단계를 더 포함하는 방법.
  21. 프로세서 기반 시스템으로서,
    프로세서의 가상화 시스템을 포함하고,
    상기 가상화 시스템은 상기 프로세서가 동작가능한 호스트 머신에서 실행가능한 가상 머신에서 실행가능한 게스트 소프트웨어에 의해 이루어지는 게스트-물리적 메모리에 대한 참조를, 상기 호스트 머신의 호스트-물리적 메모리에 대한 참조 에 매핑하기 위해 확장된 페이징 테이블을 포함하는 메모리 가상화 지원 시스템을 포함하는 프로세서 기반 시스템.
  22. 제21항에 있어서,
    상기 메모리 가상화 지원 시스템은 액세스에 대한 제약들을 특정하고, 그 제약들에 따라 상기 게스트-물리적 메모리의 위치에 대한 액세스를 제어하는 프로세서 기반 시스템.
  23. 제21항에 있어서,
    상기 메모리 가상화 지원 시스템은 상기 호스트 머신의 상기 호스트-물리적 메모리를 분할하는 프로세서 기반 시스템.
  24. 제22항에 있어서,
    상기 가상화 지원 시스템은 상기 제약들의 위반시에 메모리를 액세스하기 위한 시도에 응답하여 가상 머신 모니터로 전환하는 프로세서 기반 시스템.
  25. 제21항에 있어서,
    상기 확장된 페이징 테이블은 게스트-물리적 메모리의 페이지에 대한 참조를, 호스트-물리적 메모리의 페이지에 대한 참조에 매핑하는 프로세서 기반 시스템.
  26. 제25항에 있어서,
    상기 확장된 페이징 테이블은 게스트-물리적 메모리의 페이지에 대한 액세스 제약을 특정하는 프로세서 기반 시스템.
  27. 제26항에 있어서,
    게스트-물리적 메모리의 페이지에 대한 상기 액세스 제약은,
    판독 액세스 제어 정보, 기입 액세스 제어 정보, 및 실행 액세스 제어 정보 중 적어도 하나를 포함하는 프로세서 기반 시스템.
  28. 제26항에 있어서,
    상기 가상화 시스템은 게스트-물리적 메모리의 페이지에 대한 상기 액세스 제약의 위반에 응답하여 가상 머신 모니터로 전환하는 프로세서 기반 시스템.
  29. 제25항에 있어서,
    상기 확장된 페이징 테이블은 멀티-레벨 확장된 페이징 테이블을 포함하는 프로세서 기반 시스템.
  30. 제21항에 있어서,
    상기 메모리 가상화 지원 시스템은 상기 가상화 시스템의 플래그가 소정값으 로 설정된 경우에만 상기 프로세서의 상기 가상화 시스템의 활성화에 응답하여 활성화되는 프로세서 기반 시스템.
KR1020060004080A 2005-01-14 2006-01-13 가상 머신 시스템에서의 물리적 메모리 가상화 KR100831488B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/036,736 2005-01-14
US11/036,736 US7886126B2 (en) 2005-01-14 2005-01-14 Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system

Publications (2)

Publication Number Publication Date
KR20060083168A true KR20060083168A (ko) 2006-07-20
KR100831488B1 KR100831488B1 (ko) 2008-05-22

Family

ID=36175192

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060004080A KR100831488B1 (ko) 2005-01-14 2006-01-13 가상 머신 시스템에서의 물리적 메모리 가상화

Country Status (8)

Country Link
US (5) US7886126B2 (ko)
EP (5) EP1681630A1 (ko)
JP (4) JP2006196005A (ko)
KR (1) KR100831488B1 (ko)
CN (2) CN100501680C (ko)
ES (1) ES2907805T3 (ko)
PL (1) PL3572937T3 (ko)
TW (1) TWI308720B (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100944563B1 (ko) * 2006-08-15 2010-02-25 인텔 코오퍼레이션 변환 색인 버퍼의 확장 페이지 테이블에의 동기화
KR101031409B1 (ko) * 2006-12-29 2011-04-26 인텔 코오퍼레이션 동적으로 가상 머신을 생성하기 위한 방법, 제조물품 및 시스템
WO2013133621A1 (ko) * 2012-03-06 2013-09-12 삼성전자 주식회사 이종의 운영체제를 사용하는 가상화 시스템의 전력 관리 방법 및 장치
US8930672B2 (en) 2010-10-08 2015-01-06 Snu R&Db Foundation Multiprocessor using a shared virtual memory and method of generating a translation table

Families Citing this family (137)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8706942B2 (en) * 2004-12-29 2014-04-22 Intel Corporation Direct memory access (DMA) address translation between peer-to-peer input/output (I/O) devices
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
US8214830B2 (en) * 2005-01-19 2012-07-03 Intel Corporation Performance in a virtualization architecture with a processor abstraction layer
US7428626B2 (en) * 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US20060259896A1 (en) * 2005-05-16 2006-11-16 Microsoft Corporation Maintaining reproducibility across multiple software builds
US8387049B2 (en) 2005-07-15 2013-02-26 International Business Machines Corporation Facilitating processing within computing environments supporting pageable guests
US7926054B2 (en) * 2006-03-03 2011-04-12 Novell, Inc. System, method, and computer-readable medium for virtual machine instantiation from an external peripheral device
US8095931B1 (en) 2006-04-27 2012-01-10 Vmware, Inc. Controlling memory conditions in a virtual machine
US8949295B2 (en) 2006-09-21 2015-02-03 Vmware, Inc. Cooperative memory resource management via application-level balloon
US7882318B2 (en) 2006-09-29 2011-02-01 Intel Corporation Tamper protection of software agents operating in a vitual technology environment methods and apparatuses
US7802050B2 (en) 2006-09-29 2010-09-21 Intel Corporation Monitoring a target agent execution pattern on a VT-enabled system
US8601470B2 (en) * 2007-01-05 2013-12-03 Moka5, Inc. Symbiotic smart peripherals
KR100864834B1 (ko) * 2007-04-30 2008-10-23 한국전자통신연구원 메모리 재할당을 이용한 다중 프로세서 간의 데이터 전송장치 및 방법
JP4897578B2 (ja) * 2007-06-06 2012-03-14 株式会社日立製作所 仮想計算機の制御プログラムおよび仮想計算機システム
US7925802B2 (en) * 2007-06-21 2011-04-12 Seamicro Corp. Hardware-based virtualization of BIOS, disks, network-interfaces, and consoles using a direct interconnect fabric
CN101399830B (zh) * 2007-09-29 2012-06-06 联想(北京)有限公司 虚拟机系统及其共享以太网点对点协议链接的方法
JP2009104555A (ja) * 2007-10-25 2009-05-14 Intel Corp Vt環境で動作するソフトウェアエージェントの改竄防止、方法および装置
US8522236B2 (en) * 2007-12-28 2013-08-27 Intel Corporation Method and system for establishing a robust virtualized environment
US8151032B2 (en) * 2008-06-26 2012-04-03 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8230155B2 (en) * 2008-06-26 2012-07-24 Microsoft Corporation Direct memory access filter for virtualized operating systems
US9740517B2 (en) * 2008-12-29 2017-08-22 Microsoft Technology Licensing, Llc Dynamic virtual machine memory management
JP4769308B2 (ja) * 2009-01-20 2011-09-07 株式会社東芝 仮想計算機管理機構、同管理機構を有する仮想計算機システム及び同システムにおけるページング処理方法
US8271450B2 (en) * 2009-10-01 2012-09-18 Vmware, Inc. Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory
US8583875B1 (en) 2010-07-13 2013-11-12 Vmware, Inc. Efficient readable ballooning of guest memory by backing balloon pages with a shared page
US9134990B2 (en) 2010-05-28 2015-09-15 Dell Products, Lp System and method for implementing a secure client hosted virtualization service layer in an information handling system
US8527761B2 (en) 2010-05-28 2013-09-03 Dell Products, Lp System and method for fuse enablement of a secure client hosted virtualization in an information handling system
US8458490B2 (en) 2010-05-28 2013-06-04 Dell Products, Lp System and method for supporting full volume encryption devices in a client hosted virtualization system
US8639923B2 (en) 2010-05-28 2014-01-28 Dell Products, Lp System and method for component authentication of a secure client hosted virtualization in an information handling system
US8751781B2 (en) 2010-05-28 2014-06-10 Dell Products, Lp System and method for supporting secure subsystems in a client hosted virtualization system
US8990584B2 (en) 2010-05-28 2015-03-24 Dell Products, Lp System and method for supporting task oriented devices in a client hosted virtualization system
US8589702B2 (en) 2010-05-28 2013-11-19 Dell Products, Lp System and method for pre-boot authentication of a secure client hosted virtualization in an information handling system
US8719557B2 (en) 2010-05-28 2014-05-06 Dell Products, Lp System and method for secure client hosted virtualization in an information handling system
US8938774B2 (en) 2010-05-28 2015-01-20 Dell Products, Lp System and method for I/O port assignment and security policy application in a client hosted virtualization system
KR101077904B1 (ko) * 2010-07-12 2011-10-31 (주)이더블유비엠코리아 페이지 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법
CN102075389B (zh) * 2011-01-27 2013-02-20 大唐移动通信设备有限公司 一种调试方法和设备
US8479295B2 (en) * 2011-03-30 2013-07-02 Intel Corporation Method and apparatus for transparently instrumenting an application program
US8966477B2 (en) * 2011-04-18 2015-02-24 Intel Corporation Combined virtual graphics device
CN102999393B (zh) * 2011-09-13 2016-03-02 联想(北京)有限公司 一种数据传输的方法、装置及电子设备
US9146785B2 (en) * 2011-09-14 2015-09-29 Microsoft Technology Licensing, Llc Application acceleration in a virtualized environment
US8782351B2 (en) 2011-10-13 2014-07-15 International Business Machines Corporation Protecting memory of a virtual guest
US8788763B2 (en) 2011-10-13 2014-07-22 International Business Machines Corporation Protecting memory of a virtual guest
US8726404B2 (en) 2011-11-14 2014-05-13 Intel Corporation Regulating access to and protecting portions of applications of virtual machines
WO2013074071A1 (en) * 2011-11-14 2013-05-23 Intel Corporation Regulating access to and protecting portions of applications of virtual machines
EP2605132B1 (de) * 2011-12-13 2018-05-09 Siemens Aktiengesellschaft Verfahren für eine Verwaltung von Speicher eines Computers mit zumindest einer virtuellen Maschine
WO2013089695A1 (en) 2011-12-14 2013-06-20 Intel Corporation Method and system for monitoring calls to an application program interface (api) function
CN102521054B (zh) * 2011-12-15 2013-07-17 中国人民解放军国防科学技术大学 一种sun4v架构下的虚拟机DMA资源分配方法
WO2013103341A1 (en) * 2012-01-04 2013-07-11 Intel Corporation Increasing virtual-memory efficiencies
US8719546B2 (en) * 2012-01-04 2014-05-06 Intel Corporation Substitute virtualized-memory page tables
US9141559B2 (en) 2012-01-04 2015-09-22 Intel Corporation Increasing virtual-memory efficiencies
EP2801026A4 (en) * 2012-01-04 2015-08-12 Intel Corp TABLES OF VIRTUALIZED SUBSTITUTION MEMORY PAGES
US20130219146A1 (en) * 2012-02-16 2013-08-22 Micron Technology, Inc. Method, device and system for a configurable address space for non-volatile memory
JP5981984B2 (ja) 2012-02-22 2016-08-31 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 仮想計算機システム、秘匿情報保護方法及び秘匿情報保護プログラム
JP5862408B2 (ja) * 2012-03-27 2016-02-16 富士通株式会社 エミュレーション装置、及びエミュレーションプログラム
US9852054B2 (en) 2012-04-30 2017-12-26 Vmware, Inc. Elastic caching for Java virtual machines
US10152409B2 (en) 2012-04-30 2018-12-11 Vmware, Inc. Hybrid in-heap out-of-heap ballooning for java virtual machines
US9015203B2 (en) 2012-05-31 2015-04-21 Vmware, Inc. Balloon object feedback for Java Virtual Machines
US9940228B2 (en) 2012-06-14 2018-04-10 Vmware, Inc. Proactive memory reclamation for java virtual machines
US9330013B2 (en) * 2012-06-28 2016-05-03 Industrial Technology Research Institute Method of cloning data in a memory for a virtual machine, product of computer programs and computer system therewith
US9477505B2 (en) * 2012-08-14 2016-10-25 Oracle International Corporation Method for reducing the overhead associated with a virtual machine exit when handling instructions related to descriptor tables
US9191435B2 (en) 2012-08-23 2015-11-17 TidalScale, Inc. Selective data migration or remapping of virtual processors to provide required data accessibility to processor cores
US9769123B2 (en) * 2012-09-06 2017-09-19 Intel Corporation Mitigating unauthorized access to data traffic
US9037823B2 (en) * 2012-09-14 2015-05-19 Intel Corporation Protecting IAT/EAT hooks from rootkit attacks using new CPU assists
US9128843B2 (en) 2012-10-11 2015-09-08 Industrial Technology Research Institute Method and computer system for memory management on virtual machine system
US10310973B2 (en) * 2012-10-25 2019-06-04 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US9015523B2 (en) 2012-12-20 2015-04-21 Intel Corporation Memory allocation for virtual machines using memory map
US9330026B2 (en) * 2013-03-05 2016-05-03 Qualcomm Incorporated Method and apparatus for preventing unauthorized access to contents of a register under certain conditions when performing a hardware table walk (HWTW)
KR102069273B1 (ko) 2013-03-11 2020-01-22 삼성전자주식회사 시스템 온 칩 및 그 동작방법
US10031856B2 (en) * 2013-03-14 2018-07-24 Nvidia Corporation Common pointers in unified virtual memory system
DE102013022169A1 (de) 2013-03-14 2014-09-18 Nvidia Corporation Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem
US20140281366A1 (en) * 2013-03-15 2014-09-18 Cognitive Electronics, Inc. Address translation in a system using memory striping
WO2014209269A1 (en) * 2013-06-24 2014-12-31 Intel Corporation A protected memory view for nested page table access by virtual machine guests
US10055254B2 (en) 2013-07-12 2018-08-21 Bluedata Software, Inc. Accelerated data operations in virtual environments
US9619168B2 (en) * 2013-11-08 2017-04-11 Empire Technology Development Llc Memory deduplication masking
TWI497296B (zh) * 2013-12-04 2015-08-21 Univ Nat Taiwan 記憶體配置與分頁位址轉換系統及方法
US20150261688A1 (en) * 2014-03-14 2015-09-17 International Business Machines Corporation Extended page table for i/o address translation
WO2015145620A1 (ja) * 2014-03-26 2015-10-01 株式会社日立製作所 計算機及びアドレス変換方法
FR3020160B1 (fr) * 2014-04-16 2017-08-11 Commissariat Energie Atomique Systeme d'execution de code avec mecanisme d'hypervision en aveugle
US9501222B2 (en) 2014-05-09 2016-11-22 Micron Technology, Inc. Protection zones in virtualized physical addresses for reconfigurable memory systems using a memory abstraction
US9940458B2 (en) 2014-08-07 2018-04-10 Empire Technology Development Llc Flag based threat detection
US9703703B2 (en) * 2014-12-23 2017-07-11 Intel Corporation Control of entry into protected memory views
US9715410B2 (en) * 2015-01-30 2017-07-25 Red Hat Israel, Ltd. Protected virtual machine function access
CN104657086B (zh) * 2015-02-02 2019-01-04 曙光云计算集团有限公司 云服务器的数据存储方法和系统
US9495303B2 (en) * 2015-02-03 2016-11-15 Intel Corporation Fine grained address remapping for virtualization
US9619401B2 (en) * 2015-02-20 2017-04-11 Wisconsin Alumni Research Foundation Efficient memory management system for computers supporting virtual machines
US20160246715A1 (en) * 2015-02-23 2016-08-25 Advanced Micro Devices, Inc. Memory module with volatile and non-volatile storage arrays
US9710393B2 (en) 2015-06-25 2017-07-18 Intel Corporation Dynamic page table edit control
US9665373B2 (en) 2015-06-26 2017-05-30 Intel Corporation Protecting confidential data with transactional processing in execute-only memory
WO2016205977A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Techniques to run one or more containers on virtual machine
WO2017022014A1 (ja) * 2015-07-31 2017-02-09 株式会社日立製作所 仮想計算機システムの制御方法及び仮想計算機システム
US9946566B2 (en) 2015-09-28 2018-04-17 Intel Corporation Method and apparatus for light-weight virtualization contexts
US10055242B2 (en) 2015-10-16 2018-08-21 Microsoft Technology Licensing, Llc Virtualizing audio decoding hardware
US20170220466A1 (en) * 2016-01-30 2017-08-03 Intel Corporation Sharing a guest physical address space among virtualized contexts
US10515023B2 (en) 2016-02-29 2019-12-24 Intel Corporation System for address mapping and translation protection
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10169244B2 (en) 2016-07-29 2019-01-01 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
US10241931B2 (en) * 2016-07-29 2019-03-26 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
US10620992B2 (en) * 2016-08-29 2020-04-14 TidalScale, Inc. Resource migration negotiation
CN109690505B (zh) * 2016-09-26 2023-08-08 英特尔公司 用于针对虚拟化输入/输出实施方式的混合层地址映射的设备和方法
US11099894B2 (en) 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
US10338135B2 (en) * 2016-09-28 2019-07-02 Amazon Technologies, Inc. Extracting debug information from FPGAs in multi-tenant environments
US10250572B2 (en) 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10282330B2 (en) 2016-09-29 2019-05-07 Amazon Technologies, Inc. Configurable logic platform with multiple reconfigurable regions
US10162921B2 (en) 2016-09-29 2018-12-25 Amazon Technologies, Inc. Logic repository service
US10642492B2 (en) 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
US11115293B2 (en) 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider
US10866909B2 (en) * 2017-06-26 2020-12-15 Intel Corporation Technologies for protecting virtual machine memory
US10579274B2 (en) 2017-06-27 2020-03-03 TidalScale, Inc. Hierarchical stalling strategies for handling stalling events in a virtualized environment
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
CN109426739B (zh) * 2017-09-01 2020-10-30 龙芯中科技术有限公司 处理器和空指针攻击检测方法
US11194735B2 (en) * 2017-09-29 2021-12-07 Intel Corporation Technologies for flexible virtual function queue assignment
US10613990B2 (en) * 2017-12-05 2020-04-07 Red Hat, Inc. Host address space identifier for non-uniform memory access locality in virtual machines
DE112018007268T5 (de) * 2018-03-12 2020-11-26 Intel Corporation Verbesserter speicher-abgebildeter eingabe/ausgabe (mmio) -regionszugriff
WO2019180675A1 (en) * 2018-03-22 2019-09-26 Trulyprotect Oy Systems and methods for hypervisor-based protection of code
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US10915465B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11182507B2 (en) 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
US10915457B2 (en) * 2018-08-30 2021-02-09 Micron Technology, Inc. Memory access control through permissions specified in page table entries for execution domains
US11500665B2 (en) 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
US11481241B2 (en) * 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US10997083B2 (en) * 2018-09-04 2021-05-04 Arm Limited Parallel page table entry access when performing address translations
US11954026B1 (en) * 2018-09-18 2024-04-09 Advanced Micro Devices, Inc. Paging hierarchies for extended page tables and extended page attributes
US10901911B2 (en) 2018-11-21 2021-01-26 Microsoft Technology Licensing, Llc Faster computer memory access by reducing SLAT fragmentation
US10769076B2 (en) 2018-11-21 2020-09-08 Nvidia Corporation Distributed address translation in a multi-node interconnect fabric
US11099874B2 (en) 2019-01-28 2021-08-24 Red Hat Israel, Ltd. Efficient userspace driver isolation by shallow virtual machines
US11640361B2 (en) * 2019-03-08 2023-05-02 International Business Machines Corporation Sharing secure memory across multiple security domains
US11531627B2 (en) 2019-03-08 2022-12-20 International Business Machines Corporation Secure storage isolation
US11226904B2 (en) * 2019-04-26 2022-01-18 Hewlett Packard Enterprise Development Lp Cache data location system
CN110442425B (zh) * 2019-07-19 2022-04-08 南京芯驰半导体科技有限公司 一种虚拟化地址空间隔离系统及方法
US11243801B2 (en) 2020-03-26 2022-02-08 Red Hat, Inc. Transparent huge pages support for encrypted virtual machines
US11556513B2 (en) 2020-06-30 2023-01-17 Hewlett Packard Enterprise Development Lp Generating snapshots of a key-value index
US11461299B2 (en) 2020-06-30 2022-10-04 Hewlett Packard Enterprise Development Lp Key-value index with node buffers
US11461240B2 (en) 2020-10-01 2022-10-04 Hewlett Packard Enterprise Development Lp Metadata cache for storing manifest portion
CN114461536A (zh) * 2020-11-10 2022-05-10 瑞昱半导体股份有限公司 查找表建立及内存地址查询方法
US20220179677A1 (en) * 2020-12-09 2022-06-09 Mediatek Inc. Memory protection for virtual machines
GB2604629B (en) * 2021-03-10 2023-06-07 Imagination Tech Ltd A computer system and method using a first page table and a second page table
US11487451B2 (en) * 2021-03-15 2022-11-01 TidalScale, Inc. Fast restart of large memory systems

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4430705A (en) * 1980-05-23 1984-02-07 International Business Machines Corp. Authorization mechanism for establishing addressability to information in another address space
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
JPS59132483A (ja) * 1983-08-12 1984-07-30 Hitachi Ltd アドレス変換装置
US4695950A (en) * 1984-09-17 1987-09-22 International Business Machines Corporation Fast two-level dynamic address translation method and means
JPS6184754A (ja) * 1984-10-03 1986-04-30 Hitachi Ltd 拡張アドレス変換装置
JPH0731609B2 (ja) * 1985-09-18 1995-04-10 日本電気株式会社 Vmモード変更装置
JP2507756B2 (ja) * 1987-10-05 1996-06-19 株式会社日立製作所 情報処理装置
US5109496A (en) * 1989-09-27 1992-04-28 International Business Machines Corporation Most recently used address translation system with least recently used (LRU) replacement
JPH03192445A (ja) * 1989-12-22 1991-08-22 Hitachi Ltd 仮想計算機システム
US5317705A (en) * 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
JPH04357540A (ja) * 1991-03-28 1992-12-10 Ricoh 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
JPH06110715A (ja) * 1992-09-25 1994-04-22 Hitachi Ltd 仮想計算機システムにおける計算機資源の動的割付け方法
US5765207A (en) 1993-06-22 1998-06-09 International Business Machines Corporation Recursive hardware state machine
US6189074B1 (en) * 1997-03-19 2001-02-13 Advanced Micro Devices, Inc. Mechanism for storing system level attributes in a translation lookaside buffer
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
US6651132B1 (en) * 2000-07-17 2003-11-18 Microsoft Corporation System and method for emulating the operation of a translation look-aside buffer
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
US6671791B1 (en) * 2001-06-15 2003-12-30 Advanced Micro Devices, Inc. Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
US6792521B2 (en) * 2001-10-16 2004-09-14 International Business Machines Corporation Behavioral memory mechanism for a data processing system
DE10208765A1 (de) 2002-02-28 2003-09-18 Infineon Technologies Ag Datenverarbeitungsvorrichtung
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
US7318141B2 (en) * 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
US7900017B2 (en) * 2002-12-27 2011-03-01 Intel Corporation Mechanism for remapping post virtual machine memory pages
US7111145B1 (en) * 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US6981125B2 (en) * 2003-04-22 2005-12-27 International Business Machines Corporation Method and apparatus for managing shared virtual storage in an information handling system
US7409487B1 (en) * 2003-06-30 2008-08-05 Vmware, Inc. Virtualization system for computers that use address space indentifiers
US7451443B2 (en) * 2003-10-01 2008-11-11 Hewlett-Packard Development Company, L.P. Online computer maintenance utilizing a virtual machine monitor
US7376949B2 (en) * 2003-10-01 2008-05-20 Hewlett-Packard Development Company, L.P. Resource allocation and protection in a multi-virtual environment
US7552426B2 (en) * 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US7222221B1 (en) * 2004-02-06 2007-05-22 Vmware, Inc. Maintaining coherency of derived data in a computer system
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
US7886293B2 (en) * 2004-07-07 2011-02-08 Intel Corporation Optimizing system behavior in a virtual machine environment
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
US7281102B1 (en) * 2004-08-12 2007-10-09 Vmware, Inc. Restricting memory access to protect data when sharing a common address space
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
US7810083B2 (en) * 2004-12-30 2010-10-05 Intel Corporation Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
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
US7428626B2 (en) 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US7363463B2 (en) * 2005-05-13 2008-04-22 Microsoft Corporation Method and system for caching address translations from multiple address spaces in virtual machines

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100944563B1 (ko) * 2006-08-15 2010-02-25 인텔 코오퍼레이션 변환 색인 버퍼의 확장 페이지 테이블에의 동기화
KR101031409B1 (ko) * 2006-12-29 2011-04-26 인텔 코오퍼레이션 동적으로 가상 머신을 생성하기 위한 방법, 제조물품 및 시스템
US8930672B2 (en) 2010-10-08 2015-01-06 Snu R&Db Foundation Multiprocessor using a shared virtual memory and method of generating a translation table
WO2013133621A1 (ko) * 2012-03-06 2013-09-12 삼성전자 주식회사 이종의 운영체제를 사용하는 가상화 시스템의 전력 관리 방법 및 장치
US9804897B2 (en) 2012-03-06 2017-10-31 Samsung Electronics Co., Ltd. Method and apparatus for managing power in virtualization system using different operating systems

Also Published As

Publication number Publication date
JP5485249B2 (ja) 2014-05-07
JP2014238850A (ja) 2014-12-18
EP3572937A1 (en) 2019-11-27
US20130219143A1 (en) 2013-08-22
JP2006196005A (ja) 2006-07-27
US20190121751A1 (en) 2019-04-25
JP2012079333A (ja) 2012-04-19
US20150100717A1 (en) 2015-04-09
US20060161719A1 (en) 2006-07-20
US7886126B2 (en) 2011-02-08
EP2988216A1 (en) 2016-02-24
EP3905039A1 (en) 2021-11-03
CN101533358A (zh) 2009-09-16
EP2988216B1 (en) 2019-03-06
US9164920B2 (en) 2015-10-20
US20110087822A1 (en) 2011-04-14
ES2907805T3 (es) 2022-04-26
JP2010123148A (ja) 2010-06-03
PL3572937T3 (pl) 2022-04-04
JP5844434B2 (ja) 2016-01-20
EP2275932A1 (en) 2011-01-19
TWI308720B (en) 2009-04-11
US8533428B2 (en) 2013-09-10
KR100831488B1 (ko) 2008-05-22
CN101533358B (zh) 2013-02-06
CN1811714A (zh) 2006-08-02
EP3572937B1 (en) 2021-12-29
TW200636572A (en) 2006-10-16
JP5611622B2 (ja) 2014-10-22
EP1681630A1 (en) 2006-07-19
US10114767B2 (en) 2018-10-30
CN100501680C (zh) 2009-06-17

Similar Documents

Publication Publication Date Title
KR100831488B1 (ko) 가상 머신 시스템에서의 물리적 메모리 가상화
US9372806B2 (en) Synchronizing a translation lookaside buffer with an extended paging table
US7370160B2 (en) Virtualizing memory type
US9684605B2 (en) Translation lookaside buffer for guest physical addresses in a virtual machine
US8645665B1 (en) Virtualizing physical memory in a virtual machine system utilizing multilevel translation table base registers to map guest virtual addresses to guest physical addresses then to host physical addresses

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130503

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140502

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170504

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 12