KR100847613B1 - 가상 기계 제어 방법 및 시스템 - Google Patents

가상 기계 제어 방법 및 시스템 Download PDF

Info

Publication number
KR100847613B1
KR100847613B1 KR1020057011054A KR20057011054A KR100847613B1 KR 100847613 B1 KR100847613 B1 KR 100847613B1 KR 1020057011054 A KR1020057011054 A KR 1020057011054A KR 20057011054 A KR20057011054 A KR 20057011054A KR 100847613 B1 KR100847613 B1 KR 100847613B1
Authority
KR
South Korea
Prior art keywords
vmcs
component
processor
vmm
data
Prior art date
Application number
KR1020057011054A
Other languages
English (en)
Other versions
KR20050085699A (ko
Inventor
길버트 네이거
에릭 코타-로블레스
스탈린셀바라즈 제야싱
알라인 카이
마이클 코즈츠
리차드 유릭
에리츠 볼레인
스코트 로드저스
로우렌스 삼세 스미스
스티븐 벤넷
앤드류 글러우
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 KR20050085699A publication Critical patent/KR20050085699A/ko
Application granted granted Critical
Publication of KR100847613B1 publication Critical patent/KR100847613B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

가상 기계(VM)의 실행을 제어하는 방법 및 시스템이 제공된다. VM 모니터(VMM)는 프로세서로 보내진 접근 명령어를 통해 VM 제어 구조(VMCS)에 간접적으로 접근한다. 일 실시예에서, 접근 명령어는 VMCS 구성요소에 대한 적당한 저장 위치를 결정하기 위하여 프로세서에 의해 이용되는 VMCS 구성요소 식별자를 포함한다. 프로세서는 프로세서 저장 장치 내의 또는 메모리 내의 VMCS 구성요소에 대한 적당한 저장 위치를 식별한다.
가상 기계(VM), 가상 기계 모니터(VMM), 가상 기계 제어 구조(VMCS), 접근 명령어

Description

가상 기계 제어 방법 및 시스템{METHODS AND SYSTEMS TO CONTROL VIRTUAL MACHINES}
본 발명의 실시예는 컴퓨터 시스템에 관한 것으로, 특히 컴퓨터 시스템 내의 가상 기계의 동작 제어에 관한 것이다.
가상 기계 구조(virtual machine architecture)는 기계의 기본적인 하드웨어가 시분할되고(time-shared) 하나 또는 그 이상의 독립적으로 동작하는 가상 기계(VM)로서 나타나도록 물리적 기계를 논리적으로 구획한다. 가상 기계 모니터(VMM)는 컴퓨터상에서 실행되며 다른 소프트웨어에 대해 하나 또는 그 이상의 VM의 추상화를 용이하게 한다. 각 VM은 그 자체로 완비된 플랫폼(self-contained platform)으로 기능할 수 있으며, 자체의 운영 체제(OS)와 응용 소프트웨어를 실행한다. VM에서 실행되는 소프트웨어를 여기서는 총괄적으로 게스트(guest) 소프트웨어라 한다.
게스트 소프트웨어는 이것이 VM에서가 아니라 마치 전용의 컴퓨터에서 실행되는 것처럼 동작하는 것으로 기대된다. 즉, 게스트 컴퓨터는 여러 가지 사건을 제어하고 컴퓨터(예컨대, 물리적 기계) 상의 하드웨어 자원에 접근하는 것으로 생각된다. 물리적 기계의 하드웨어 자원은 하나 또는 그 이상의 프로세서, 프로세서 상에 존재하는 자원(예컨대, 제어 레지스터, 캐시 등), 메모리(그리고 메모리에 존재하는 구조, 예컨대, 디스크립터(descriptor) 테이블), 그리고 물리적 기계에 존재하는 기타 자원들(예컨대, 입출력 장치)을 포함할 수 있다. 사건은 인터럽트(interrupt) 처리, 예외(exception) 처리, 플랫폼 사건(예컨대, 초기화(INIT)나 시스템 관리 인터럽트(SMI) 등)을 포함할 수 있다.
VMM은 필요에 따라 물리적 기계의 장치, 메모리 및 레지스터의 안팎에서 게스트 소프트웨어 상태를 바꿀 수가 있다. VMM은 기본적인 물리적 기계에의 직접적인 접근을 허용함으로써 VM의 성능을 향상시킬 수가 있다. 이것은 어떤 동작이 게스트 소프트웨어에서, 물리적 기계에의 소프트웨어 접근을 제한하는 비특권 모드(non-privileged mode)에서 수행되고 있는 때에 또는 동작이 VMM이 제어를 계속 유지하기를 원하는 물리적 기계에서 하드웨어 자원을 이용하지 않을 것일 때에 특히 적합하다.
VMM은 게스트 동작이 VMM의 올바른 실행이나 비실행 VM의 어느 것에도 영향을 미칠 수 있을 때마다 제어를 되찾는다. 통상적으로 VMM은 그와 같은 동작들을 검사하여, 동작이 기본적인 물리적 기계로 옮아가게 하거나 게스트를 위하여 동작을 에뮬레이트(emulate)하기 전에 어떤 문제가 있는지를 판단한다. 예컨대, VMM은 게스트가 I/O 장치에 접근할 때에, 게스트가 (예컨대, 제어 레지스트 값을 변경함으로써) 장치 구성을 변경하려고 때에, 게스트가 메모리의 특정 영역에 접근하려고 할 때에 등과 같은 때에 제어를 되찾아야 할 필요가 있을 수 있다.
VM 동작을 지원하는 기존 시스템은 소정의 고정 포맷 구조(여기서는 가상 기 계 제어 구조(VMCS)라 함)를 이용하여 VM의 실행 환경을 제어한다. VMCS는 메모리의 소정 영역에 저장되며, 예컨대, 게스트의 상태, VMM의 상태, 그리고, VMM이 게스트 실행 중에 제어를 되찾기를 원하는 상황을 나타내는 제어 정보를 포함한다. 물리적 기계의 프로세서(들)는 VMCS로부터 정보를 읽어내어 VM과 VMM의 실행 환경을 판단하고 VMM의 제어 하에 게스트 소프트웨어의 행동을 구속한다.
종래의 구조들은 VMCS를 물리적 기계의 메모리에 저장하고, 통상의 메모리 읽기 및 쓰기 명령을 이용하여 VMM이 VMCS에 접근할 수 있게 한다. 이 때문에, VMCS의 포맷은 프로세서 명령어 집합 구조로 구조적으로 정의되어야 하며(그리고, 다른 시스템 구조와 명령어 인코딩과 유사한 방식으로 사양과 매뉴얼에 기록되어야 한다). VMM은 이 사양에 코드화된다. 이러한 구조화는 VMM을 지원하는 프로세서(들)의 구현에 있어 유연성을 제한하게 된다. VMCS의 형태는 구조적으로 정의되며, 특정 프로세서 구현의 미세구조는 성능, 확장성, 호환성, 보안성 등의 이유로 VMCS 데이터의 포맷, 내용, 구성, 또는 저장 요건을 변경하지 못할 수가 있으며, VMM 구현의 설치 토대에 대한 변경도 요하지 않는다.
그러므로 물리적 기계의 기본적인 구현에 엄격히 결합되지 않은 가상 기계 구조의 보다 유연한 구현이 필요하다.
도 1은 본 발명의 일 실시예에 따른 VM 구조의 도면.
도 2는 본 발명의 일 실시예에 따른 VM을 제어하는 방법의 흐름도.
도 3은 본 발명의 일 실시예에 따른 VMCS 액세스 명령의 도면.
도 4는 본 발명의 일 실시예에 따른 VMCS로부터 데이터를 읽어내는 방법의 흐름도.
도 5는 본 발명의 일 실시예에 따른 VMCS에 데이터를 써넣는 방법의 흐름도.
신규한 VM 구조에 대해서 설명한다. 실시예에 대한 하기의 상세한 설명에서는, 실시예의 일부를 구성하는 첨부된 도면이 참조 되며, 도면에 대한 참조는 예시적인 것으로 한정적인 것이 아니며, 본 발명의 특정한 실시예가 실시될 수 있다. 실시예는 당업자가 그것을 이해하고 실시할 수 있을 정도로 충분히 상세하게 설명되나, 다른 실시예도 이용될 수 있으며, 본 발명의 본질과 범위에서 벗어남이 없이 구조적, 논리적 및 전기적인 변경이 가해질 수 있음을 잘 알아야 한다. 그러므로 하기의 상세한 설명은 한정적인 의미로 받아들여져는 안 되며, 여기서 공개된 본 발명의 실시예의 범위는 첨부된 청구 범위에 의해서만 정해진다.
VMM은 다른 소프트웨어("게스트 소프트웨어", "게스트들", 또는 단순히 "게스트")에게 하나 또는 그 이상의 VM의 추상화를 제공한다. VMM은 여러 가지 게스트에게 동일한 또는 서로 다른 추상화를 제공할 수 있다. 각 게스트는 VM에 제공된 하드웨어 플랫폼의 설비를 전부 이용할 수 있을 것으로 기대한다. 예컨대, 게스트는 VM에 존재하는 프로세서와 플랫폼의 구조에 따라서 모든 레지스터, 캐시, I/O 장치, 메모리 등에 접근할 것으로 기대한다. 더욱이, 각 게스트는 예외 처리, 인터럽트 처리, 및 플랫폼 사건(예컨대, 초기화(INIT) 및 시스템 관리 인터럽트(SMI))과 같은 여러 가지 사건을 다룰 것으로 기대한다.
이들 자원 및 사건들 중 일부는 VM의 적절한 동작을 보장하고 VMM과 기타 VM을 보호하도록 VMM에 의해 관리되어야 하기 때문에 "특권적이다(privileged)". 이 특권적 자원과 사건에 대해서 VMM은 이들 자원과 사건에 대한 궁극적인 제어를 계속 유지하면서 게스트 소프트웨어가 원하는 기능을 용이하게 한다. 게스트 소프트웨어를 위해 그 기능을 용이하게 하는 행위는 VMM 측에서의 다양한 활동을 포함할 수 있다. VMM의 활동은 그 특성과 마찬가지로 본 발명의 여러 가지 실시예의 범위를 제한하지 않는다.
게스트 소프트웨어가 특권적 자원에 접근하거나 특권적 사건이 발생하는 경우 제어는 VMM으로 이전될 수 있다. 게스트 소프트웨어로부터 VMM으로의 제어의 이전을 VM 퇴장(exit)이라 한다. 자원 접근을 용이하게 하거나 사건을 적절하게 처리한 후에 VMM은 제어를 게스트 소프트웨어로 다시 이전시킬 수 있다. VMM에서 게스트 소프트웨어로의 제어의 이전을 VM 입장(entry)이라 한다.
가상 기계 제어 구조(VMCS)는 예컨대, 게스트 소프트웨어의 상태, VMM의 상태, 그리고, VMM이 게스트가 실행되지 않기를 바라는 상황을 나타내는 제어 정보, 및 가장 최근의 VM 퇴장에 관한 정보를 포함하는 구조적으로 정의된 구조이다. 현재 시스템에서는 그 구조적으로 정의된 구조에 꼭 맞는 VMCS의 표현이 메모리에 저장된다. 물리적 기계의 프로세서는 VMCS로부터 정보를 읽어내어 VM의 실행 환경을 판단하고 그 행동을 구속한다.
게스트 실행 중에 프로세서는 VMCS에서의 제어 정보를 참고하여 어느 게스트 행위(예컨대, 특정 명령어의 실행, 특정 예외 처리의 발생 등)와 사건(예컨대, 외 부로부터의 인터럽트)이 VM 퇴장을 유발할 것인가를 판단한다. VM 퇴장이 발생하면, 게스트 소프트웨어가 이용한 프로세서 상태의 구성요소들은 VMCS에 저장되고 VMM이 필요로 하는 프로세서 상태의 구성요소들은 VMCS로부터 로드된다. VM 퇴장이 발생하면, 제어는 당업자에 알려져 있는 어떤 메커니즘을 이용하여 VMM(120)으로 이전된다.
VMM 입장이 발생하면, VM 퇴장 시에 저장되었던 (그리고 VMM에 의해 변경되었을 수도 있는) 프로세서 상태가 복원되고 제어는 게스트 소프트웨어로 다시 이전된다. 게스트로의 첫 번째 VM 입장을 용이하게 하기 위하여, VMM은 적당한 게스트 상태를 VMCS에 써넣는다. VM 퇴장을 처리하는 동안에 VMM은 VMCS에서의 게스트 상태를 변경할 수 있다. 어떤 실시예에서는 다수의 VM을 지원하는 다수의 VMCS 구조는 단일의 물리적 기계 상의 단일의 VMM에 의해 관리된다. VMCS는 전술한 정보를 모두 다 포함할 필요는 없으며, VM의 제어에 도움을 주는 부가 정보를 포함할 수 있다. 어떤 실시예에서는 VMCS는 상당한 량의 부가 정보를 포함할 수 있다.
도 1은 본 발명의 일 실시예에 따른 VM 구조(100)의 도면이다. VM 구조(100)는 기본 하드웨어 플랫폼(100)(예컨대, 물리적 기계)을 포함한다. 기본 하드웨어 플랫폼(110)은 휘발성 및/또는 불휘발성 메모리(116)에 각각 접근하는 하나 또는 그 이상의 프로세서(112)를 포함한다. 부가적으로, 기본 하드웨어 플랫폼(110)에는 도 1에는 도시되지 않은 다른 요소들(예컨대, 입출력 장치)이 있을 수 있다. VM 구조(100)는 또한 하나 또는 그 이상의 VM(예컨대, 도면부호 130, 140, 150)을 관리하는 VMM(120)을 포함하는데, 여기서, 각 VM(예컨대, 도면부호 130, 140, 150)은 하나 또는 그 이상의 OS(예컨대, 도면부호 150, 160, 170)와 애플리케이션(예컨대, 도면부호 152, 162, 172)를 지원한다. 프로세서(112)는 마이크로프로세서, 디지털 신호 프로세서, 마이크로컨트롤러 등과 같이 소프트웨어를 실행할 수 있는 임의 종류의 프로세서일 수 있다. 프로세서(112)는 본 발명의 방법 실시예를 실행하기 위한 마이크로코드, 프로그래머블 로직 또는 하드코드(hardcoded) 로직을 포함할 수 있다.
메모리(116)는 하드 디스크, 플로피 디스크, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 플래시 메모리, 이들 장치들의 조합, 또는 프로세서(112)에 의해 판독될 수 있는 임의 종류의 기계 매체일 수 있다. 메모리(116)는 본 발명의 방법 실시예를 실행하기 위한 명령어나 데이터를 저장한다. 메모리(116)는 VMCS의 상태를 유지시키는데 있어 프로세서(112)에 의해 이용되는 VMCS 영역(118)을 포함하는데, 이에 대해서는 다음에 더 상세히 설명한다.
프로세서(112)는 마이크로프로세서, 디지털 신호 프로세서, 마이크로컨트롤러 등과 같이 소프트웨어를 실행할 수 있는 임의 종류의 프로세서일 수 있다. 각 프로세서(112)는 VMCS 캐시(114)를 포함할 수 있는데, 이에 대해서는 다음에 더 상세히 설명한다. 프로세서(112)는 본 발명의 방법 실시예를 실행하기 위한 마이크로코드, 프로그래머블 로직 또는 하드코드 로직을 포함할 수 있다.
VMCS 캐시(114)는 만일 존재한다면 VMCS 상태의 일부 또는 전부를 일시적으로 또는 그 수명이 다할 때까지 저장하는데 이용될 수 있다. VMCS 캐시(114)는 레지스터, 캐시 메모리, 또는 기타 저장 수단을 포함할 수 있다. 도 1에서 VMCS 캐 시(114)는 프로세서(112)의 일부분으로서 도시되어 있지만, 프로세서(112) 밖에서 기본 플랫폼 하드웨어(110)의 임의의 구성요소 내에 존재할 수 있다. 하기의 설명에서 VMCS 캐시(114)는 "프로세서상 저장 장치(on-processor storage)" 또는 "프로세서상 자원(on-processor resource)"이라고도 하지만, 이 저장 장치는 프로세서(112) 이외의 다른 플랫폼 구성요소 내에 존재할 수도 있음을 알아야 한다. VMCS 캐시(114)는 본 발명의 방법을 구현하는데 있어 엄격하게 요구되는 것은 아니다.
종래에는 VMM은 보통의 읽기 및 쓰기 명령을 이용하여 메모리 내의 VMCS에 접근하였다. 그러나 도 1의 VM 구조에서는 VMM(120)은 프로세서 제공 VMCS 접근 명령어 집합(119)을 통해 간접적으로 VMCS 영역(118)에 접근한다. VMCS 접근 명령어(119)는 VMCS 영역(118)과 임의의 가용 VMCS 캐시(114)를 이용한다. 일 실시예에서, VMCS 접근 명령어(119)는 접근되고 있는 VMCS 구성요소에 대한 식별자인 오퍼랜드(operand)를 포함한다. 이 식별자는 여기서는 "구성요소 식별자(component identifier)"라 한다. VMM(120)은 어떤 특정한 VMCS 구성요소가 VMCS 영역(118) 또는 VMCS 캐시(114)에 저장되어 있다는 것을 알 필요는 없다. 보통의 읽기 및 쓰기 명령을 이용하여 VMCS 영역(118)에 접근하는 경우에는 VM 구조(100)에서 불측의 결과가 일어날 수 있다. VMCS 접근 명령어(119)를 이용하게 되면, 프로세서(112)는 가용 프로세서상 및 메모리 기반(예컨대, VMCS 영역(118)) 저장 장치를 자유롭게 이용할 수 있게 되며, 다양한 성능 최적화가 가능하게 된다.
어떤 실시예에서는, VMCS 접근 명령어(119)는 VMCD 영역(118)에 있는 메모리를 읽고 씀으로써 프로세서 미세구조에 의해 구현된다. 다른 실시예에서, VMCS 접근 명령어(119)는 프로세서상 자원을 읽고 그리고/또는 쓸 수 있다. VMM(120)은 기본적인 물리적 기계 미세구조가 VMCS를 어떻게 지원하고 있는 가를 알 필요가 없다. 이런 식으로, 기본적인 프로세서 구현은 VMM(120)을 기본적인 프로세서 구현과 양립불가능하게 되도록 하지 않으면서 성능, 보안성, 신뢰성, 또는 기타 고려 사항을 받아들이도록 변경될 수 있으며, 각 프로세서 구현을 위해 맞춤식의(customized) VMCS 구현이 개발될 수 있다.
하기의 예는 VMCS 접근 명령어(119)를 이용하지 않은 VM 구조의 결점을 나타낸 것이다. 프로세서 구현이 프로세서상 저장 장치 내의 VMCS 데이터를 일시적으로 캐시(cache) 할 수 있다면, 특정 사건이 발생할 때에 메모리 VMCS 영역(118)에 데이터를 써넣을 수 있을 뿐이다. VMCS 데이터가 캐시되고 있는 기간 동안에는 VMCS 영역(118)에 대한 보통의 읽기는 무효의(stale) 값(틀린 값)을 내보낼 것이다. VMCS 영역(118)에 대한 보통의 쓰기는 프로세서 구현이 쓰기를 저장 장치에 적당하게 사상시키는(map) 특별한 대책을 강구하지 않으면 프로세서상 저장 장치 내의 데이터를 갱신하지 않을 것이다. VMCS 접근 명령어(119)를 이용하지 않는다면, 프로세서 구현은 VMCS 영역을 프로세서상 자원에 저장된 일시적 또는 캐시된 상태에 맞게 유지시켜야 하는데, 이는 VM 구조의 성능 최적화, 확장 등을 방해할 수 있는데, 이에 대해서는 뒤에 자세히 설명한다. 보통의 메모리 동작과는 달리, VMCS 읽기 명령은 적당하다면 프로세서상에 저장된 값을 내보내며, VMCS 쓰기 명령은 VMCS 상태를 저장될 때마다 적당히 갱신한다. 이들 명령에 대해서는 뒤에 자세히 설명한다.
VMCS 접근 명령어(119)를 용이하게 실행하기 위하여 VMCS의 각 요소는 VMCS의 구성요소를 식별하는 구조적으로 정의된 상수에 의해 식별되는데 이들 상수 값은 여기서는 "구성요소 식별자"라고 한다. 일 실시예에서, 구성요소 식별자는 16비트 값이지만, 다른 실시예에서는 이보다 더 크거나 작을 수가 있다.
하기의 설명에서는 본 발명의 여러 가지 실시예의 설명에서 많은 VMCS 필드가 이용된다. 예컨대, GUSET_EIP은 게스트 소프트웨어에 대한 명령어 포인터를 포함하는 필드이고, VM_CONTROLS는 VM 실행 환경을 제어하는 비트들을 포함하는 필드이다. 이 여러 가지 필드의 구문(syntax)과 의미(semantics)의 이해는 여기서 설명되는 본 발명을 이해하는데 필수적인 것은 아니다. 부가적으로, 필드들은 주어진 특정의 구조적으로 정의된 구성요소 식별자이다. 이들 예에서 사용된 특정의 필드와 구성요소 식별자의 값들은 어떤 식으로도 본 발명의 적용성을 제한해서는 안 된다.
VMCS 접근 명령어(119) 이용의 장점은 다음과 같다. 프로세서 구현이 VMCS 영역(118)에 저장된 데이터의 레이아웃을 프로세서 구현마다 바꿀 수가 있음을 고려한다. 예컨대, 제1 프로세서 구현은 VMCS 영역에의 28번째 바이트에서 시작하는 GUEST_EIP 필드를 저장할 수 있다. 제2 프로세서 구현은 VMCS 영역에서 16번째 바이트에서 동일한 VMCS 필드를 저장할 수 있다. 초기 구현을 위해 쓰여져 VMCS 접근 명령어(119)를 이용하는 VMM(120)은 VMCS 영역의 레이아웃이 바뀌었다 하더라도 프로세서(112)의 나중의 구현에도 여전히 그 기능을 발휘할 것이다. 이와 같은 양립성은 두 개의 프로세서 구현에서의 VMCS 접근 명령어의 구현이 사용된 VMCS 영역 (118)의 레이아웃을 인식하고 필요한 데이터에 적당하게 접근하기 때문에 달성된다.
어떤 실시예에서는, VMCS 접근 명령어(119)의 실행을 용이하게 하기 위하여 VMM(120)은 VMCS를 위해 프로세서(112)가 필요로 하는 저장 장치의 전부 또는 일부를 수용하는 메모리 영역(예컨대, VMCS 영역(118))을 따로 구비할 필요가 있을 수 있다. 본 발명의 다른 실시예에서는, 프로세서 제공 명령어는 VMM(120)가 VMCS 영역(118)의 포인터 또는 어드레스를 프로세서(112)에 제공하는 것을 허용할 것이다. 일 실시예에서 이 어드레스는 물리적 어드레스이다. 다른 실시예는 가상 또는 선형 어드레스를 이용할 수 있다. 이 명령어를 이용하여 프로세서(112)에 제공된 어드레스는 이후로는 VMCS 포인터라(pointer) 한다. 이 명령어는 프로세서(112)에 VMCS 영역(224)의 위치를 알린다. 이 새로운 명령어는 VMCS 포인터가 참조하는 VMCS 영역(118)에서 전부 또는 부분적으로 프로세서(112)에 의해 저장될 수 있는 VMCS를 작동시킨다.
다른 실시예는 VMM(120)이 VMCS 영역(118)을 위해 예약되어야 하는 메모리(116) 량을 알아낼 수 있게 하는 메커니즘을 제공할 수 있다. 예컨대, 인텔 펜티엄 IV의 프로세서 명령어 집합 구조(ISA)(여기서는 IA-32 ISA라 함)에서는 필요한 VMCS 영역 크기를 포함하는 모델 특정 레지스터(Model Specific Register; MSR)가 제공될 수 있다. 다른 실시예는 필요한 VMCS 영역 크기를 다시 내보내는 명령어를 제공한다. 이러한 정보를 VMM에 전달하는 데는 다른 메커니즘이 이용될 수 있다. 이런 식으로 필요한 메모리 영역(118)의 크기는 VMM(120)의 재설계나 재편집을 해 야할 필요없이 프로세서 구현마다 바꿀 수가 있다.
예컨대, 제1 프로세서(112)가 메모리(116) 내의 VMCS 영역(118)을 위해 64 바이트를 필요로 한다고 가정한다. 이 요건은 전술한 바와 같이 VMM(120)에 보고된다. VMM(120)은 VMCS 영역(118)을 위해 할당되어야 하는 메모리(116) 량이 얼마인지를 결정하는 상기 메커니즘을 이용하여 이 프로세서 구현상에서 실행하기 위하여 쓰여진다. 이제는 메모리(116) 내의 VMCS 저장을 위해 128 바이트를 필요로 하는 제2 프로세서가 구현된다. 제1 프로세서 구현을 위해 쓰여진 VMM(120)은 이것이 VMCS 영역(118)을 위한 정확한 저장량을 할당할 것이기 때문에 제2 프로세서 구현에서 올바르게 기능 할 것이다.
VMCS 포인터가 작동하고 있는 동안에는 프로세서(112)는 VMCS 영역(118)에, 또는 프로세서(112) 상에 존재하는 자원에, 또는 임의의 기타 이용가능한 위치(즉, VMCS 캐시(114))에 VMCS의 전부 또는 일부를 저장할 것이다. 부가적으로, 프로세서(112)는 VMCS 영역(118)에 또는 프로세서상 자원에 비구조적(non-architectural) 상태 정보를 저장할 수 있다. 예컨대, 프로세서(112)는 임시 변수, VM(예컨대, 도면부호 130, 140 또는 150)과 연관된 미세구조 상태, VM(예컨대, 도면부호 130, 140 또는 150)의 상태의 표시자 등을 저장할 수 있다. 소프트웨어는 VMCS 포인터가 작동하고 있는 동안에 VMCS 영역(118)에 접근하는데 보통의 메모리 읽기와 쓰기를 이용하지 않는다. 이러한 제한은 VMCS와 연관된 VMM(120) 및 VM(예컨대, 도면부호 130, 140 또는 150)의 동작의 정확성을 보장한다.
다른 프로세서 제공 명령어는 프로세서상 자원에 캐시 된 VMCS 데이터를 VMCS 영역(118)에 쓰며, 프로세서상 저장 장치 내의 적당한 데이터를 무효로 만들고, VMCS 포인터의 작동을 중지시킨다. 일 실시예는 예컨대 구조적으로 또는 비구조적으로 정의된 상태 표시자를 VMCS 영역에 표시해서 VMCS를 비작동 상태인 것으로 표시할 수 있다. 다른 실시예는 프로세서상 저장 장치를 단순히 플러시(flush)하고 VMCS에 대한 프로세서상 상태의 동작을 중지(무효화)시킬 수 있다. 이 명령은 VMM(120)이 VMCS 영역(118)의 내용을 이전시키려고 시도하기 전에 실행된다. VMM(120)이 VMCS 영역(118)을 이전시키려고 시도한다면 VMCS 포맷이 이 프로세서 구현에만 유지되고 알려지기 때문에 단일의 데이터 블록 이전으로서 그렇게 할 수가 있다. 부가적으로, 이 블록 이전은 VMM이 (여기서 설명된 메커니즘에 기초하여 메모리를 할당한) VMCS 영역의 크기를 알기 때문에 가능하다. VMCS의 개별적인 요소들은 VMM(120)에게 인식될 필요는 없다.
어떤 실시예에서, 특정 실시예에 특정된 메커니즘은 VMM(120)이 특정 VMCS를 구축하였던 프로세서 구현을 식별하는 것을 허용할 수 있다. VMM(120)은 이 프로세서 식별을 이용하여 VMCS가 다른 프로세서 구현과 양립하는지를 판단할 수 있다. 일 실시예에서, 이 식별자는 VMCS 영역(118)의 첫 번째 4 바이트에 저장되며, 예컨대 MSR에서 또는 다른 방법을 통해 VMM(120)에 보고된다. VMCS의 첫번째 사용 전에, VMM(120)은 이 식별자를 VMCS 내의 적당한 위치에 써야할 필요가 있을 수 있으며, 따라서 VMCS 영역(118)의 그 부분의 포맷이 구조적으로 정의될 수가 있다. 어떤 실시예에서는, 모든 구현이 VMCS 영역(118)의 구조적으로 정의된 동일 부분들을 정의하는 것이 바람직하다.
다른 실시예는 이전의 실시예가 정의되지 않은 영역을 남겨둔 경우에는 VMCS 영역(118)의 새로이 구조적으로 정의된 부분을 정의할 수 있으며, 이 새로이 정의된 부분은 이 부분을 명시적으로 이용하지 않는 VMM(120)의 동작을 방해하지 않는다. 이런 식으로, 이들 실시예에서 쓰여진 VMM(120)은 더 새로운 구현에서 작동할 것이다.
어떤 실시예에서는 프로세서 제공 명령어(119)는 많은 구별되는 명령어들을 포함한다.
- VMCS 로드 포인터 명령어는 오퍼랜드로서 메모리 어드레스를 갖는다. 이 어드레스는 프로세서(112)가 VMCS를 저장할 수 있는 위치(예컨대, VMCS 영역(118)의 시작부)이다. 이 어드레스에 연관된 VMCS는 이 명령어에 의해 작동하게 된다. 이 명령어는 또한 VMCS와 연관되고 이에 의해 제어되는 VM(예컨대, 도면부호 130, 140 또는 150)의 작동과 후술하는 여러 가지 명령어들의 이용을 가능하게 한다. 일 실시예에서, 이 어드레스는 물리적 어드레스이다. 다른 실시예는 가상 또는 선형 어드레스를 이용할 수 있다.
- VMCS 저장 포인터 명령어는 작동하는 VMCS 영역(118)에 대한 포인터를 (예컨대, 프로세서(112) 상의) 레지스터에 또는 (예컨대, 메모리(116)) 내의) 메모리 위치에 저장하는데, 그와 같은 저장 위치는 그 명령에 대한 오퍼랜드로서 제공될 수 있다.
- VMCS 읽기 명령어는 (예컨대, 프로세서(112) 상의) 레지스터 또는 (예컨대, 메모리(116) 내의) 메모리 위치 내로 VMCS의 구성요소를 읽어 넣는다. 이 명 령어는 VMCS로부터 읽어 내어질 VMCS 구성요소를 나타내는 구성요소 식별자와 VMCS로부터 읽어 내어진 데이터가 저장될 위치(예컨대, 레지스터나 메모리 위치)를 포함하는 많은 파라미터를 포함할 수 있다.
- VMCS 쓰기 명령어는 (예컨대, 프로세서(112) 상의) 레지스터 또는 (예컨대, 메모리(116) 내의) 메모리 위치로부터 VMCS의 구성요소를 로드한다. VMCS 읽기 명령어와 마찬가지로 VMCS 쓰기 명령어는 VMCS 구성요소 식별자를 위한 오퍼랜드를 포함할 수 있다. 부가적으로, 이것은 VMCS에 쓰여질 데이터의 위치(예컨대, 레지스터 또는 메모리 위치)를 기술하는 오퍼랜드를 포함할 수 있다.
- VMCS 클리어(clear) 명령어는 VMCS와 연관된 모든 프로세서상 저장 장치의 내용이 VMCS 영역(118)에 다시 저장되는 것을 보장하며, 프로세서상 자원 내의 데이터를 무효화시키며, VMCS 포인터의 작동을 중지시킨다. 이 명령어는 오퍼랜드 없이 동작할 수 있으며, 현재 작동하고 있는 VMCS 포인터를 플러시하고 그 작동을 중지시키거나, 다른 실시예에서, 이 명령어는 플러싱과 동작 중지가 요구되는 VMCS 포인터를 오퍼랜드로서 택할 수 있다. 일 실시예에서, VMCS 클리어 명령어는 구조적으로 또는 비구조적으로 정의된 상태 표시자를 VMCS 영역에 써서 VMCS를 비작동 상태인 것으로 표시할 수 있다.
- 마지막으로, VMCS 엔터(enter) 명령어는 VM 구조(100)의 의미와 VMCS의 내용에 따라 프로세서 상태를 로드함으로써 작동 중인 VMCS에 의해 정의된 VM(예컨대, 도면부호 130, 140 또는 150)로의 제어의 이전(즉, VM 입장)을 유발한다. 아니면, 이 명령어는 입력될 VMCS 포인터(또는 상기 포인터의 위치)를 가진 변수를 포함할 수 있다.
전술한 프로세서 제공 명령어(119)는 단지 하나의 실시예만을 나타낸 것이며, 다른 다양한 명령어(119)도 제공될 수 있다. 예컨대, 어떤 실시예에서는 VMCS 클리어 명령어는 VMCS 포인터의 동작을 중지시키지 않으면서 VMCS 데이터를 프로세서상 저장 장치로부터 VMCS 영역(118)으로 복사할 수 있다. 오퍼랜드는 명시적이거나 암시적일 수 있다. 프로세서(112)에서 작동하는 모든 VMCS 포인터 등에 작용하는 다른 명령어(119)(전술한 명령어(119)의 변형)도 제공될 수 있다.
당업자라면 이해하고 있는 바와 같이, 종래의 VM 구조는 메모리 내에 VMCS에 대해 정적인 구조적으로 정의된 형태를 가지고 있다. 이것은 VMCS의 크기, 구성, 또는 내용을 확대하거나 변화시킬 수 있는 프로세서 구현의 능력을 제한하게 되는데, 그 이유는 VMCS를 변경하게 되면 그에 따라 VMM 구현도 변경해야 하기 때문이다. 부가적으로, 종래의 VMM은 보통의 메모리 읽기 및 쓰기 동작을 이용하는 종래의 VMCS에 접근하기 때문에, 프로세서 구현은 VMCS 데이터의 저장 장치를 프로세서상 자원에 할당하는데 있어 융통성이 떨어진다. 예컨대, 프로세서는 VMM이 메모리 내의 VMCS의 해당 영역을 변경하였는지를 검출하는 것이 어려울 수 있기 때문에 VMM으로의 VM 퇴장 중에 프로세서상 자원 내의 VMCS의 특정 부분을 캐시 하지 못할 수가 있다. 이와 같이 프로세서상 자원과 메모리 내 VMCS 영상 간의 일관성(coherency)을 확인할 수 없다고 하는 것은 VM 입장에 이어 게스트 소프트웨어를 실행하기 전에 요구될 수 있는 에러와 일관성 체크를 복잡하게 한다.
그러나 본 발명의 여러 가지 실시예에 따르면, VMM(120)은 보통의 메모리 읽 기 및 쓰기 동작을 이용하여 VMCS 메모리 영상에 직접적으로 접근하지 않으며, 메모리(1160 내의 VMCS에 대한 미리 정의된 포맷을 이용하지 않으며, 런 타임(run-time)에서 메모리(116) 내의 VMCS에 대한 요구되는 저장 장치 크기를 판단한다.
도 2에는 VMCS 저장 메모리 요건의 런 타임 구속과 전술한 프로세서 제공 명령어(119)의 이용이 나타나 있다. 도 2는 VMM에서의 여러 가지 동작을 통한 VMCS 포인터의 상태를 나타낸다. 블록(210)에서 프로세싱이 시작된다. 이때, 작동하고 있는 VMCS 포인터는 없다. 블록(210)에서 VMM은 VMCS를 지원하기 위해서 프로세서가 필요로 하는 메모리 영역의 크기를 결정한다. 전술한 바와 같이, 이것은 예컨대 지정된 MSR을 읽음으로써 달성될 수 있다.
블록(220)에서, VMM은 필요한 메모리를 할당하며, VMCS 포인터는 여전히 비동작 상태이다. 이 메모리 영역은 물리적 메모리 내에 최적으로 인접해 있지만. 본 실시예에서는 그와 같은 요건은 반드시 필요한 것이 아니라는 것을 당업자라면 잘 알 것이다. VMM은 VMCS 영역의 어드레스를 전술한 VMCS 로드 포인터 명령어를 이용하여 프로세서에 제공함으로써 VMCS를 작동시킨다(블록(230)으로 들어가는 것). 이때, VMCS 포인터는 작동 VMCS 포인터라 부른다. VMCS 포인터가 작동하고 난 후에는 VMM은 적당한 VMCS 접근 명령어(도 1에서의 도면부호 119, 도 2에서의 도면부호 232 및 234)를 이용하여 VMCS의 구성요소를 읽고 쓸 수 있다. 이러한 읽기 또는 쓰기 동작에 이어서 VMCS 포인터는 작동상태를 유지한다.
VMM은 게스트가 실행되는 것을 원하면, VM 입장 명령어를 이용하여 게스트를 기계에 로드시킨다(블록(240)으로 들어가는 것). VM 입장 후에도 VMCS 포인터는 여전히 작동하기는 하나 이제는 게스트 실행 환경과 행동을 결정하는, 프로세서에 의해 이용되는 제어 VMCS 포인터로서 기능한다.
VM 퇴장이 발생하면, 제어는 VMM으로 복귀된다(블록(240)으로부터 블록(230)으로 되돌아 가는 것). VMCS 포인터는 다시 작동 VMCS 포인터로서 작동 상태를 유지하며, VMM은 VMCS 필드(화살표(232, 234))를 적당하게 읽고 쓸 수 있으며, VM 엔터 명령어를 이용하여 게스트를 다시 입력할 수 있다(블록(240)으로 되돌아 가는 것). 아니면, VMM은 VM 클리어 명령어를 이용하여 VMCS 포인터의 동작을 중지시킬 수 있으며, 그때에는 VMCS 포인터는 비작동 상태가 된다(상태(220)로 되돌아 가는 것).
VMM은 특정 순간에 여러 가지 동작들(예컨대, VM 읽기, VM 쓰기, VM 엔터 등)을 수행할 수 있기 때문에 방법(200)은 특정의 동작 순서로 제한되지 않는다. 부가적으로, 방법(200)을 이용하는 소정의 프로세서 내에서는 특정 순간에 단일의 VMCS 포인터 또는 여러 가지 VMCS 포인터가 작동 또는 비작동될 수 있다. 어떤 실시예에서는 다수의 VMCS가 특정 시점에서 소정의 프로세서 내에서 작동될 수 있다. 이런 식으로, VMM은 VMM 클리어 명령어를 실행함이 없이 VM들 간에 전환될 수 있으며, 따라서 VM 처리 효율을 향상시킬 수가 있다.
일 실시예에서, 부가적인 프로세서 제공 명령어는 특정 시점에서 작동될 수 있는 동시 발생 또는 병렬 VMCS의 수를 질의하고 얻을 수 있는 능력을 VMM에 제공할 수 있다. 다른 실시예는 VMM이 이 정보를 얻기 위하여 읽을 수 있는 MSR을 제공할 수 있다. 다른 실시예에서는 동시에 작동될 수 있는(따라서, 예컨대, 프로세 서상 자원에서 캐시될 수 있는) VMCS 포인터의 수는 VMM 소프트웨어에 직접적으로 보이지 않을 수 있으며, 프로세서 구현은 VMM이 프로세서가 프로세서상 자원에 저장할 수 있는 VMCS 포인터보다 더 많은 VMCS 포인터를 작동시킬 때인 오버플로우 상태를 자동으로 처리한다. 이 경우에, 프로세서는 적당한 VMCS 데이터를 메모리 내의 관련 VMCS 영역으로 자동으로 플러시할 수 있다. 어떤 실시예에서는 도 1을 참조로 전술한 많은 프로세서 제공 명령어 내에 명시적인 VMCS 포인터 변수가 필요할 수 있다.
본 발명의 실시예들은 프로세서상와 VMCS 데이터의 메모리 내 저장을 관리하는 것과 연관된 세부 사항을 관리하는 소프트웨어에 대한 요건들을 제거한다. 따라서, VMM은 더 높은 레벨의 추상화에서의 제어 하에 VM들 각각을 관리한다. 이러한 전략에 따라서, 도 1과 도 2를 참조로 설명된 프로세서 제공 명령어들은, 기존의 VMM 소프트웨어를 변경하지 않고서 프로세서 제공 명령어를 부가하거나 변경함으로써 VM 실행이 더욱 적당하고 최적으로 변경 또는 확장될 수 있도록 VMCS 저장 장치의 세부 사항을 관리할 수가 있다.
도 3은 본 발명의 일 실시예에 따른 VMCS 읽기/쓰기 명령어의 이용을 설명하는 도면이다. 구조적인 VMCS 포맷(305)이 나타나 있으나, 이는 VMM에 의해 명시적으로 이용되는 것은 아니며, 오히려 VMM은, 메모리 내의 VMCS 저장의 포맷의 구조적인 정의가 아닌 VMCS 구성요소 식별자, 필드 크기 및 필드 의미에 대한 정보를 가지고 프로그램된다. VMM이 구조적 VMCS(305)에서 어떤 필드에 접근하고자 할 때에는 VMCS 읽기(또는, 적당한 것으로는 VMCS 쓰기; 도 3에는 예시적인 목적으로 VMCS 읽기만이 나타나 있음)를 수행한다. VMCS 읽기 명령어(310)에 대한 파라미터는 구성요소 식별자인데, 이것은 VMCS의 구성요소를 식별하는 구조적으로 정의된 상수이다. 프로세서는 구성요소 식별자를 이용하여 프로세서상(예컨대, VMCS 캐시(322)) 또는 메모리 내 자원(예컨대, VMCS 영역(324))에 적당하게 사상(map)되어, 맵핑(mapping) 함수(320)를 이용하여 VMM을 위하여 VMCS 데이터에 접근한다. VMCS 영역 또는 VMCS 캐시에 저장된 데이터가 구조적으로 정의된 포맷으로 되어 있지 않으면, 그 데이터는 재포맷(reformatting) 함수(323)를 이용하여 일치하도록 적당히 재포맷된다.
도 3에는 두 가지 예시적인 VMCS 접근 명령어가 나타나 있다. 이들 예들은 모두 VMCS 읽기 명령어에 대한 것이지만, VMCS 쓰기 명령어에 대해서도 유사하게 작동한다. 이에 대해서는 도 5를 참조로 뒤에 자세히 설명된다.
도 3을 참조로 설명하면, 첫 번째 예시적인 VMCS 읽기 명령어(310)는 0x4032의 구조적으로 정의된 인코딩을 가진 GUEST_EIP 구성요소에 접근한다. 프로세서 구현은 맵핑 함수(320)에 의해 결정되는 바와 같이 VMCS 영역(324) 내의 이 구성요소에 대한 데이터를 유지한다. 프로세서는 메모리 읽기 동작(330)을 이용하여 VMCS 영역(324)으로부터 적당한 구성요소 데이터를 읽어낸다. 읽기 동작(330)은 VMCS 영역(324) 내의 구성요소의 위치를 알아낸다(다시, 맵핑 함수(320)에 의해 결정되는 바와 같이, 본 예에서는 이 위치는 VMCS 영역에서 오프셋(12)에 위치해 있다). 그 다음, 프로세서는 데이터 값을 (화살표(331)로 표시된 바와 같이) VMM로 되돌려 보낸다.
두 번째 예시적인 VMCS 읽기 명령어(350)는 0x1076의 구조적으로 정의된 인코딩을 가진 VM_CONTROLS 구성요소에 접근한다. 이 프로세서 구현은 (맵핑 함수(320)에 의해 결정되는 바와 같이) VMCS 캐시(322)에 이 구성요소를 유지한다. 프로세서는 VMCS 캐시(322)에 접근하여 그 데이터를 검색한다. 이 경우에, 데이터는 VM_CONTROLS 구성요소의 구조적 정의에 맞지 않는 형태로 프로세서상에 저장된다(예컨대, 이 데이터는 재정렬된 8 바이트 객체로서 프로세서상에 저장되는 반면에 VM_CONTROLS 필드의 구조적 정의는 4 바이트 객체이다.). 프로세서는 VMM에 데이터를 되돌려 주기 전에 재포맷 함수(323)를 이용하여 그 필드의 구조적 정의에 맞도록 VM_CONTROLS 데이터를 재포맷한다. 이 재포맷된 값(즉, 요구된 구성요소의 구조적 정의에 맞는 값)은 (화살표(326)로 도시된 바와 같이) VMM로 되돌려 진다.
이들 VMCS 접근 명령들을 이용하면, 각자의 VMCS에 의해 각각 식별된 하나 또는 그 이상의 VM을 관리하는 VMM은 메모리로부터 프로세서상 자원으로 캐시 됨에 따라 VMCS와 연관된 저장 장치를 관리하지 않아도 된다. 부가적으로, VMM은 메모리 또는 프로세서상 자원 내의 데이터의 포맷팅과 같이 프로세서 구현의 세부 사항을 변경하는 것을 관리할 필요는 없다. 따라서, 프로세서 개발자는 기존의 VMM 또는 VM의 동작에 악영향을 미치지 않고 VMCS 접근 명령어를 변경 또는 수정하여 VM 성능을 향상시키고 VM 능력을 확장시킬 수가 있다. 기존의 VMM 및 VM은 그와 같은 변경으로부터 이득을 얻을 수 있지만, VM 구조의 새로운 구현에는 성능, 신뢰성, 확장성(scalability) 또는 기타 개선이 이루어진다.
도 4는 본 발명의 일 실시예에 따른 VMCS 읽기 명령어의 실행 방법(400)의 흐름도이다. 단계(410)에서, VMM으로부터 VMCS 읽기 요구가 수신된다. 단계(420)에서는 VMCS 읽기 요구로부터 VMCS 구성요소 식별자가 획득된다. 구성요소 식별자는 VMCS의 원하는 구성요소를 식별하는 구조적 정의 상수이다.
프로세서는 이 구성요소 식별자와 연관된 VMCS 구성요소가 메모리 내에 있는지를 판단하기 위하여 단계(430)에서 구성요소 식별자를 검사한다. 만일 메모리 내에 VMCS 구성요소가 저장되어 있으면, 단계(440)에서 메모리 위치의 어드레스가 계산되고, 단계(450)에서 이 VMCS 구성요소와 연관된 VMCS 데이터가 획득된다. 그러나 메모리 내에 VMCS 구성요소가 저장되어 있지 않으면, 단계(460)에서 프로세서는 VMCS 구성요소와 연관된 VMCS 데이터를 프로세서상 저장 장치로부터 획득한다. 이런 식으로, VMCS 구성요소 저장 장치가 메모리 내에 있든지 아니면 프로세서상 저장 장치 내에 있든지 간에 프로세서는 구성요소 식별자를 이용하여 읽기 요구를 VMCS 구성요소 저장 장치에 사상(map)시킨다.
단계(470)에서, 프로세서는 VMCS 데이터를 VMM에 되돌려 주기 전에 VMCS 데이터의 재포맷팅이 필요한지를 판단하는 검사를 행한다. 만일 VMCS 데이터가 VMCS 구성요소에 대한 구조적 정의 데이터 포맷과는 다른 포맷으로 (VMCS 영역 또는 프로세서상 자원 내에) 저장되어 있다면(즉, VMCS 구성요소가 구조적 정의 포맷과는 다른 구현 특정 데이터 포맷으로 저장되어 있다면), 단계(480)에서 재포맷 함수에 접근하여 구현 특정 VMCS 데이터를 구조적 정의 데이터 포맷으로 변환시킨다. 만일 VMCS 데이터가 VMCS 구성요소에 대한 구조적 정의 데이터 포맷으로 (VMCS 영역 또는 프로세서상 자원 내에) 저장되어 있다면, 재포맷 함수, 즉 VMCS 데이터에 대 한 변환이 일어날 필요가 없다. 마지막으로, 단계(490)에서 (이제는 구조적 정의 데이터 포맷으로 된) VMCS 데이터는 VMM으로 되돌려진다.
도 5는 본 발명의 일 실시예에 따른 VMCS 쓰기 명령어의 실행 방법(500)의 흐름도이다. 단계(505)에서 프로세서는 VMM으로부터 VMCS 쓰기 요구를 수신한다. 프로세서는 단계(510)에 나타낸 바와 같이 구성요소 식별자를 쓰기 요구의 오퍼랜드들 중 하나로서 획득한다. 또한, 단계(515)에서 프로세서는 VMCS에 써 넣고자 하는 쓰기 데이터를 다른 오퍼랜드로서 획득한다. 이 쓰기 데이터는 쓰여지고 있는 VMCS 구성요소에 대한 구조적 정의 데이터 포맷으로 되어 있다.
단계(520)에서 프로세서는 VMCS 구성요소가 (VMCS 영역 내에 또는 프로세서상 자원 내에) 구조적 정의 데이터 포맷으로 저장되어 있는지 여부를 판단하는 검사를 행한다. 따라서, VMCS 구성요소가 구조적 정의 데이터 포맷으로 저장되어 있지 않으면, 단계(525)에서, 데이터가 접근되고 있는 VMCS 구성요소와 연관된 적당한 구현 특정 데이터 포맷으로 되도록 데이터의 적당한 재포맷팅이 수행된다. 데이터 저장 포맷은 크기와 구성에 있어 구조적 정의 포맷과 같거나 아니면 다를 수 있다.
다음, 단계(530)에서 프로세서는 VMCS 구성요소가 저장되어 있는 위치를 판단하는 다른 검사를 수행한다. 프로세서는 구성요소 식별자를 이용하여 VMCS 구성요소의 저장 위치가 어디인가를 판단한다. 저장 위치가 메모리 내이면, 단계(535)에서 메모리 어드레스가 계산되고, 단계(540)에서 쓰기 데이터가 이 메모리 위치에 쓰여진다. 그러나, 저장 위치가 메모리 내에 있지 않으면, 단계(545)에서 프로세 서상 저장 장치 내의 적당한 위치가 결정되고, 쓰기 데이터가 프로세서상 저장 장치에 쓰여진다. 저장 장치에 쓰여진 데이터는 당해 VMCS 구성요소와 프로세서 구현에 따라서, 그리고, 어떤 실시예에서는 당해 구성요소가 현재 프로세서상 자원 내에 또는 VMCS 영역 내에 저장되어 있는지 여부에 따라서 구조적 정의 포맷과 같거나 다를 수 있는 구현 특정 데이터 포맷으로 되어 있다.
특정 VMCS 구성요소에 대한 저장 위치를 판단하거나 프로세서가 이 VMCS 구성요소가 구조적 정의 데이터 포맷으로 저장되어 있는지를 판단하기 위하여 프로세스(400, 500)에서 이용된 메커니즘은 구현 특정적(implementation specific)이다. 일 실시예에서, 프로세서는 구성요소 식별자에 의해 색인 된 탐색표(lookup table)를 이용한다. 부가적으로, 다수의 VMCS 포인터가 동시에 작동될 수 있다면 이러한 판단들은 어느 VMCS에 접근하고 있는 가에 따라서 달라질 수 있다.
당업자라면 발명을 숙독하면 본 발명이 여기에 개시된 방법들을 수행하는 컴퓨터 시스템에서 구현될 수 있는 방식을 이해할 것이다. 본 발명은 (범용 컴퓨터 시스템이나 전용 기계에서 실행되는) 소프트웨어, 하드웨어(예컨대, 회로, 전용 로직, 프로그래머블 로직, 마이크로코드 등), 또는 하드웨어와 소프트웨어의 조합을 이용하여 구현될 수 있다.
상기 설명은 예시적인 것이며 한정적인 것이 아님을 알아야 한다. 당업자라면 상기 설명을 검토하면 다른 많은 실시예들도 가능함을 잘 알 것이다. 그러므로 본 발명의 실시예의 범위는 첨부된 청구범위와 그 등가물에 의해서 결정되어야 한다.
요약서는 기술 공개의 특성과 요점을 신속히 파악할 수 있도록 하는 요약서를 요구하는 37 C.F.R §1.72(b) 조항에 따라서 제공된 것이다. 이 요약서는 청구범위의 범위나 의미를 해석하거나 한정하는데 이용되어서는 안 된다는 것을 전제로 제출된다.
실시예들에 대한 전술한 설명에서는 여러 가지 특성들은 본 발명의 능률화를 위해 하나의 실시예로 묶여진다. 본 발명의 방법은 본 발명의 실시예들이 청구범위의 각 청구항에 기재된 것 이상의 특성을 요하는 의도를 반영하는 것으로 해석되어서는 안 된다. 청구범위에 기재된 바와 같이 청구 대상은 하나의 개시된 실시예의 모든 특성을 다 갖는 것은 아니다. 따라서 청구범위는 실시예에의 설명에 포함되는 것이며, 각 청구항은 예시적인 실시예로서 청구된 하나의 독립된 발명이다.

Claims (30)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 가상 기계 제어 구조(Virtual Machine Control Structure, VMCS)에 접근(access)하는 방법으로서,
    가상 기계 모니터(VMM)가 VMCS 접근 명령어를 실행하는 단계; 및
    소정의 프로세서가 상기 VMCS 접근 명령어와 연관된 VMCS 구성요소 식별자(component identifier)를 이용하여 VMCS 구성요소에 접근하는 단계
    를 포함하고,
    상기 VMCS 접근 명령어를 실행하는 단계 전에,
    상기 VMM이 상기 VMCS에 대해 요구되는 저장 크기를 판단하는 단계; 및
    상기 프로세서에 적어도 상기 VMCS에 대해 상기 요구되는 저장 크기만큼 큰 메모리 영역에 대한 포인터를 제공하는 단계
    를 더 포함하며,
    상기 VMCS에 대해 상기 요구되는 저장 크기를 판단하는 단계에서, 상기 요구되는 저장 크기는 상기 VMCS에 대해 상기 요구되는 저장 크기를 포함하는 프로세서 레지스터에 대한 적어도 하나의 읽기 명령어를 실행하고 상기 VMCS에 대해 상기 요구되는 저장 크기를 제공하는 명령어를 실행하여 판단되는 방법.
  7. 제6항에 있어서, 상기 VMCS 구성요소에 접근하는 단계에서, 상기 VMCS 구성요소 식별자는 상기 VMCS 접근 명령어에 대한 명시적(explicit) 오퍼랜드와 상기 VMCS 접근 명령어에 대한 암시적(implicit) 오퍼랜드 중 적어도 하나인 방법.
  8. 제6항에 있어서, 상기 VMCS 접근 명령어를 실행하는 단계에서, 상기 VMCS 접근 명령어는 상기 VMCS 구성요소로부터의 읽기 명령어와 상기 VMCS 구성요소로의 쓰기 명령어 중 적어도 하나인 방법.
  9. 제8항에 있어서, 상기 VMCS 접근 명령어를 실행하는 단계에서, 상기 VMCS 접근 명령어는 상기 VMCS 구성요소로의 쓰기 명령어이고, 상기 VMCS 접근 명령어는 쓰기 데이터의 값을 오퍼랜드로서 포함하는 방법.
  10. 제9항에 있어서, 상기 VMCS 접근 명령어를 실행하는 단계에서, 상기 쓰기 데이터의 값은 구조적 정의 데이터 포맷(architecturally-defined data format)으로 되어 있는 방법.
  11. 제9항에 있어서, 상기 쓰기 데이터의 값을 상기 VMCS 구성요소에 쓰는 단계를 더 포함하는 방법.
  12. 제6항에 있어서, 상기 VMCS 구성요소에 접근하는 단계는,
    상기 VMCS 구성요소 식별자가 메모리에 존재하는 상기 VMCS 구성요소와 연관되는지를 판단하는 단계;
    메모리에 존재하는 상기 VMCS 구성요소에 대한 메모리 위치를 계산하는 단계; 및
    메모리에 존재하는 상기 VMCS 구성요소에 접근하는 단계
    를 포함하는 방법.
  13. 제6항에 있어서, 상기 VMCS 구성요소에 접근하는 단계는,
    상기 VMCS 구성요소 식별자가 프로세서상 저장 장치(on-processor storage) 에 존재하는 상기 VMCS 구성요소와 연관되는지를 판단하는 단계; 및
    프로세서상 저장 장치에 존재하는 상기 VMCS 구성요소에 접근하는 단계
    를 포함하는 방법.
  14. 제6항에 있어서, 상기 VMCS 접근 명령어를 실행하는 단계에서, 상기 VMCS 접근 명령어는 상기 VMCS 구성요소로부터의 읽기 명령어이고, 상기 VMCS 구성요소 접근 단계는 상기 VMCS 구성요소와 연관된 데이터를 읽는 단계와 상기 VMCS 구성요소와 연관된 상기 데이터를 상기 VMM으로 되돌려 주는 단계를 더 포함하는 방법.
  15. 제14항에 있어서, 상기 VMCS 구성요소와 연관된 상기 데이터를 상기 VMM으로 되돌려 주는 단계에서, 상기 데이터를 되돌려 주는 것은 상기 VMCS 구성요소와 연관된 상기 데이터를 상기 VMCS 구성요소에 대한 구조적 정의 데이터 포맷에 맞도록 재포맷(reformat)하고, 복귀(return) 데이터 값을 생성하고, 상기 복귀 데이터 값을 상기 VMM에 되돌려 주는 것을 포함하는 방법.
  16. 제14항에 있어서, 상기 VMCS 구성요소와 연관된 상기 데이터를 상기 VMM으로 되돌려 주는 단계에서, 상기 데이터는 상기 VMCS 구성요소에 대한 구조적 정의 데이터 포맷과 동일한 포맷과, 상기 VMCS 구성요소에 대한 상기 구조적 정의 데이터 포맷과 다른 포맷 중 적어도 하나인 포맷으로 되어 있는 방법.
  17. 제9항 내지 제11항 중 어느 한 항에 있어서,
    상기 쓰기 데이터를 상기 VMCS 구성요소에 대한 구현 특정 데이터 포맷(implementation-specific data format)에 맞도록 재포맷하여 재포맷된 쓰기 데이터의 값을 도출하는 단계; 및
    상기 재포맷된 쓰기 데이터의 값을 상기 VMCS 구성요소에 쓰는 단계
    를 더 포함하는 방법.
  18. 제17항에 있어서, 상기 쓰기 데이터를 재포맷하는 단계에서, 상기 VMCS 구성요소에 대한 상기 구현 특정 데이터 포맷은 상기 VMCS 구성요소에 대한 상기 구조적 정의 데이터 포맷과 동일한 포맷과, 상기 VMCS 구성요소에 대한 상기 구조적 정의 데이터 포맷과 다른 포맷 중 적어도 하나인 방법.
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 제6항에 있어서, 상기 프로세서에 상기 포인터를 제공하는 단계에서, 상기 포인터는 VMCS 포인터 로드 명령어를 실행하여 제공되는 방법.
  29. 제28항에 있어서, 상기 VMCS 포인터 로드 명령어를 실행하는 단계에서, 상기 VMCS 포인터 로드 명령어는 적어도 상기 VMCS에 대해 상기 요구되는 저장 크기만큼 큰 상기 메모리 영역에 대한 포인터 어드레스를 오퍼랜드(operand)로서 포함하고, 상기 오퍼랜드는 상기 VMCS 포인터 로드 명령어에 대한 명시적 오퍼랜드와 상기 VMCS 포인터 로드 명령어에 대한 암시적 오퍼랜드 중 적어도 하나인 방법.
  30. 제6항에 있어서, 상기 프로세서에 상기 메모리 영역에 대한 상기 포인터를 제공하는 단계 전에 상기 메모리 영역을 할당하는 단계를 더 포함하는 방법.
KR1020057011054A 2002-12-17 2003-11-12 가상 기계 제어 방법 및 시스템 KR100847613B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/322,003 US7318141B2 (en) 2002-12-17 2002-12-17 Methods and systems to control virtual machines
US10/322,003 2002-12-17

Publications (2)

Publication Number Publication Date
KR20050085699A KR20050085699A (ko) 2005-08-29
KR100847613B1 true KR100847613B1 (ko) 2008-07-21

Family

ID=32507184

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057011054A KR100847613B1 (ko) 2002-12-17 2003-11-12 가상 기계 제어 방법 및 시스템

Country Status (8)

Country Link
US (1) US7318141B2 (ko)
JP (2) JP2006516769A (ko)
KR (1) KR100847613B1 (ko)
CN (1) CN100504789C (ko)
AU (1) AU2003290857A1 (ko)
DE (1) DE10393920B4 (ko)
TW (1) TWI273493B (ko)
WO (1) WO2004061645A2 (ko)

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6976162B1 (en) 2000-06-28 2005-12-13 Intel Corporation Platform and method for establishing provable identities while maintaining privacy
US7035963B2 (en) * 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US7818808B1 (en) 2000-12-27 2010-10-19 Intel Corporation Processor mode for limiting the operation of guest software running on a virtual machine supported by a virtual machine monitor
US6907600B2 (en) * 2000-12-27 2005-06-14 Intel Corporation Virtual translation lookaside buffer
US7024555B2 (en) 2001-11-01 2006-04-04 Intel Corporation Apparatus and method for unilaterally loading a secure operating system within a multiprocessor environment
US7631196B2 (en) 2002-02-25 2009-12-08 Intel Corporation Method and apparatus for loading a trustable operating system
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7127548B2 (en) * 2002-04-16 2006-10-24 Intel Corporation Control register access virtualization performance improvement in the virtual-machine architecture
US20030229794A1 (en) * 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
US7142674B2 (en) * 2002-06-18 2006-11-28 Intel Corporation Method of confirming a secure key exchange
US6996748B2 (en) * 2002-06-29 2006-02-07 Intel Corporation Handling faults associated with operation of guest software in the virtual-machine architecture
US7124327B2 (en) * 2002-06-29 2006-10-17 Intel Corporation Control over faults occurring during the operation of guest software in the virtual-machine architecture
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
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
US7424709B2 (en) * 2003-09-15 2008-09-09 Intel Corporation Use of multiple virtual machine monitors to handle privileged events
US8079034B2 (en) 2003-09-15 2011-12-13 Intel Corporation Optimizing processor-managed resources based on the behavior of a virtual machine monitor
US7739521B2 (en) * 2003-09-18 2010-06-15 Intel Corporation Method of obscuring cryptographic computations
US7610611B2 (en) * 2003-09-19 2009-10-27 Moran Douglas R Prioritized address decoder
US7237051B2 (en) * 2003-09-30 2007-06-26 Intel Corporation Mechanism to control hardware interrupt acknowledgement in a virtual machine system
US20050108534A1 (en) * 2003-11-19 2005-05-19 Bajikar Sundeep M. Providing services to an open platform implementing subscriber identity module (SIM) capabilities
US8156343B2 (en) 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
US8037314B2 (en) 2003-12-22 2011-10-11 Intel Corporation Replacing blinded authentication authority
US20050133582A1 (en) * 2003-12-22 2005-06-23 Bajikar Sundeep M. Method and apparatus for providing a trusted time stamp in an open platform
US7802085B2 (en) * 2004-02-18 2010-09-21 Intel Corporation Apparatus and method for distributing private keys to an entity with minimal secret, unique information
US20050216920A1 (en) * 2004-03-24 2005-09-29 Vijay Tewari Use of a virtual machine to emulate a hardware device
US7356735B2 (en) * 2004-03-30 2008-04-08 Intel Corporation Providing support for single stepping a virtual machine in a virtual machine environment
US7620949B2 (en) 2004-03-31 2009-11-17 Intel Corporation Method and apparatus for facilitating recognition of an open event window during operation of guest software in a virtual machine environment
US20050288056A1 (en) * 2004-06-29 2005-12-29 Bajikar Sundeep M System including a wireless wide area network (WWAN) module with an external identity module reader and approach for certifying the WWAN module
US7607011B1 (en) * 2004-07-16 2009-10-20 Rockwell Collins, Inc. System and method for multi-level security on a network
US7840962B2 (en) * 2004-09-30 2010-11-23 Intel Corporation System and method for controlling switching between VMM and VM using enabling value of VMM timer indicator and VMM timer value having a specified time
US8146078B2 (en) 2004-10-29 2012-03-27 Intel Corporation Timer offsetting mechanism in a virtual machine environment
US8924728B2 (en) 2004-11-30 2014-12-30 Intel Corporation Apparatus and method for establishing a secure session with a device without exposing privacy-sensitive information
KR100638476B1 (ko) * 2004-12-22 2006-10-26 삼성전자주식회사 버추얼 플랫폼 기반의 시스템 온 칩 개발 환경 및 개발 방법
US8533777B2 (en) 2004-12-29 2013-09-10 Intel Corporation Mechanism to determine trust of out-of-band management agents
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US7395405B2 (en) 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US7496495B2 (en) * 2005-05-12 2009-02-24 Microsoft Corporation Virtual operating system device communication relying on memory access violations
US20070006178A1 (en) * 2005-05-12 2007-01-04 Microsoft Corporation Function-level just-in-time translation engine with multiple pass optimization
US9785485B2 (en) 2005-07-27 2017-10-10 Intel Corporation Virtualization event processing in a layered virtualization architecture
US8296550B2 (en) 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US20070083735A1 (en) 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US9176741B2 (en) 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US8275976B2 (en) 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US7644258B2 (en) 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US7900204B2 (en) * 2005-12-30 2011-03-01 Bennett Steven M Interrupt processing in a layered virtualization architecture
US8014530B2 (en) 2006-03-22 2011-09-06 Intel Corporation Method and apparatus for authenticated, recoverable key distribution with no database secrets
CN101154130B (zh) * 2006-09-30 2012-07-04 联想(北京)有限公司 一种虚拟机系统及其电源管理方法
US9092250B1 (en) * 2006-10-27 2015-07-28 Hewlett-Packard Development Company, L.P. Selecting one of plural layouts of virtual machines on physical machines
US8732699B1 (en) 2006-10-27 2014-05-20 Hewlett-Packard Development Company, L.P. Migrating virtual machines between physical machines in a define group
US8296760B2 (en) * 2006-10-27 2012-10-23 Hewlett-Packard Development Company, L.P. Migrating a virtual machine from a first physical machine in response to receiving a command to lower a power mode of the first physical machine
US8185893B2 (en) * 2006-10-27 2012-05-22 Hewlett-Packard Development Company, L.P. Starting up at least one virtual machine in a physical machine by a load balancer
JP4780327B2 (ja) * 2006-12-01 2011-09-28 日本電気株式会社 パーティション・コンテキスト制御装置及び方法、並びにコンピュータ
CN101206582B (zh) * 2006-12-22 2010-10-06 联想(北京)有限公司 一种虚拟机系统及其处理方法
US9558019B2 (en) 2007-03-22 2017-01-31 Invention Science Fund I, Llc Coordinating instances of a thread or other service in emulation
US20080235000A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing security control practice omission decisions from service emulation indications
US7984483B2 (en) 2007-04-25 2011-07-19 Acxess, Inc. System and method for working in a virtualized computing environment through secure access
WO2009058042A1 (en) * 2007-10-29 2009-05-07 Intel Corporation A method of external performance monitoring for virtualized environments
US8341626B1 (en) 2007-11-30 2012-12-25 Hewlett-Packard Development Company, L. P. Migration of a virtual machine in response to regional environment effects
CN101470668B (zh) * 2007-12-24 2011-01-26 联想(北京)有限公司 一种计算机及计算机上配置高速缓存控制策略的方法
US8719936B2 (en) * 2008-02-01 2014-05-06 Northeastern University VMM-based intrusion detection system
WO2009126154A1 (en) * 2008-04-10 2009-10-15 Hewlett-Packard Development Company, L.P. Virtual machine migration according to environmental data
EP2297636A1 (en) * 2008-06-27 2011-03-23 Nxp B.V. Method of interruption of meta language program code execution
WO2010023052A2 (en) 2008-08-26 2010-03-04 International Business Machines Corporation A method, apparatus and computer program for provisioning a storage volume to a virtual server
US20100115509A1 (en) * 2008-10-31 2010-05-06 International Business Machines Corporation Power optimization via virtualization opportunity
US20100175108A1 (en) * 2009-01-02 2010-07-08 Andre Protas Method and system for securing virtual machines by restricting access in connection with a vulnerability audit
KR101571880B1 (ko) * 2009-02-02 2015-11-25 삼성전자 주식회사 전자장치와 가상머신 제공장치 및 이를 이용한 가상머신 서비스 이용 방법
JP4961459B2 (ja) * 2009-06-26 2012-06-27 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムにおける制御方法
US8479196B2 (en) * 2009-09-22 2013-07-02 International Business Machines Corporation Nested virtualization performance in a computer system
CN101876954B (zh) * 2009-12-23 2012-08-15 中国科学院计算技术研究所 一种虚拟机控制系统及其工作方法
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9201677B2 (en) * 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
CN103827823A (zh) 2011-07-29 2014-05-28 惠普发展公司,有限责任合伙企业 迁移虚拟机
US20140331237A1 (en) * 2011-12-30 2014-11-06 Reji S. Kumar Platform independent isa emulator as middleware
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US10346095B2 (en) 2012-08-31 2019-07-09 Sandisk Technologies, Llc Systems, methods, and interfaces for adaptive cache persistence
CN103036975B (zh) * 2012-12-13 2016-03-09 深信服网络科技(深圳)有限公司 虚拟机控制方法及装置
US9223602B2 (en) * 2012-12-28 2015-12-29 Intel Corporation Processors, methods, and systems to enforce blacklisted paging structure indication values
US9189411B2 (en) * 2012-12-28 2015-11-17 Intel Corporation Logging in secure enclaves
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US9772867B2 (en) * 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
US9389897B1 (en) 2014-12-18 2016-07-12 International Business Machines Corporation Exiting multiple threads of a simulation environment in a computer
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
CN106293873B (zh) * 2016-07-29 2019-11-05 北京北信源软件股份有限公司 一种准确获取虚拟机控制块(vmcs)中关键数据位置的方法
US10311057B2 (en) * 2016-08-08 2019-06-04 International Business Machines Corporation Attribute value information for a data extent
CN107341115B (zh) * 2017-06-30 2021-07-16 联想(北京)有限公司 虚拟机内存访问方法、系统和电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR890016452A (ko) * 1988-04-15 1989-11-29 세끼모또 다다히로 가상 컴퓨터 시스템의 정보 이송방법
WO2004061645A2 (en) * 2002-12-17 2004-07-22 Intel Corporation Methods and systems to control virtual machines

Family Cites Families (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4037214A (en) 1976-04-30 1977-07-19 International Business Machines Corporation Key register controlled accessing system
US4247905A (en) 1977-08-26 1981-01-27 Sharp Kabushiki Kaisha Memory clear system
US4278837A (en) 1977-10-31 1981-07-14 Best Robert M Crypto microprocessor for executing enciphered programs
JPS5576447A (en) 1978-12-01 1980-06-09 Fujitsu Ltd Address control system for software simulation
US4366537A (en) 1980-05-23 1982-12-28 International Business Machines Corp. Authorization mechanism for transfer of program control or data between different address spaces having different storage protect keys
US4521852A (en) 1982-06-30 1985-06-04 Texas Instruments Incorporated Data processing device formed on a single semiconductor substrate having secure memory
JPS59111561A (ja) 1982-12-17 1984-06-27 Hitachi Ltd 複合プロセツサ・システムのアクセス制御方式
JPS6057438A (ja) * 1983-09-08 1985-04-03 Hitachi Ltd 仮想計算機システム制御装置
US4674038A (en) * 1984-12-28 1987-06-16 International Business Machines Corporation Recovery of guest virtual machines after failure of a host real machine
JPH0833851B2 (ja) * 1986-03-15 1996-03-29 株式会社日立製作所 仮想計算機のモニタリング方式
US4916608A (en) * 1986-05-30 1990-04-10 International Business Machines Corporation Provision of virtual storage resources to an operating system control program
US5079737A (en) 1988-10-25 1992-01-07 United Technologies Corporation Memory management unit for the MIL-STD 1750 bus
US5781753A (en) 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
US5022077A (en) 1989-08-25 1991-06-04 International Business Machines Corp. Apparatus and method for preventing unauthorized access to BIOS in a personal computer system
CA2027799A1 (en) 1989-11-03 1991-05-04 David A. Miller Method and apparatus for independently resetting processors and cache controllers in multiple processor systems
US5075842A (en) 1989-12-22 1991-12-24 Intel Corporation Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism
US5230069A (en) * 1990-10-02 1993-07-20 International Business Machines Corporation Apparatus and method for providing private and shared access to host address and data spaces by guest programs in a virtual machine computer system
US5437033A (en) * 1990-11-16 1995-07-25 Hitachi, Ltd. System for recovery from a virtual machine monitor failure with a continuous guest dispatched to a nonguest mode
US5255379A (en) * 1990-12-28 1993-10-19 Sun Microsystems, Inc. Method for automatically transitioning from V86 mode to protected mode in a computer system using an Intel 80386 or 80486 processor
JPH04348434A (ja) 1991-05-27 1992-12-03 Hitachi Ltd 仮想計算機システム
US5522075A (en) 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US5319760A (en) * 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
US5455909A (en) 1991-07-05 1995-10-03 Chips And Technologies Inc. Microprocessor with operation capture facility
JPH06236284A (ja) 1991-10-21 1994-08-23 Intel Corp コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム
US5627987A (en) 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5421006A (en) 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5293424A (en) 1992-10-14 1994-03-08 Bull Hn Information Systems Inc. Secure memory card
JP2765411B2 (ja) 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
EP0600112A1 (de) 1992-11-30 1994-06-08 Siemens Nixdorf Informationssysteme Aktiengesellschaft Datenverarbeitungsanlage mit virtueller Speicheradressierung und schlüsselgesteuertem Speicherzugriff
FR2703800B1 (fr) 1993-04-06 1995-05-24 Bull Cp8 Procédé de signature d'un fichier informatique, et dispositif pour la mise en Óoeuvre.
JPH06348867A (ja) 1993-06-04 1994-12-22 Hitachi Ltd マイクロコンピュータ
JPH07129419A (ja) * 1993-11-08 1995-05-19 Nec Corp 仮想計算機システム
US5459869A (en) 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
US5684881A (en) 1994-05-23 1997-11-04 Matsushita Electric Industrial Co., Ltd. Sound field and sound image control apparatus and method
US5473692A (en) 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
US5539828A (en) 1994-05-31 1996-07-23 Intel Corporation Apparatus and method for providing secured communications
US5978481A (en) 1994-08-16 1999-11-02 Intel Corporation Modem compatible method and apparatus for encrypting data that is transparent to software applications
US6058478A (en) 1994-09-30 2000-05-02 Intel Corporation Apparatus and method for a vetted field upgrade
US5621912A (en) * 1994-12-29 1997-04-15 International Business Machines Corporation Method and apparatus for enabling monitoring of guests and native operating systems
US5615263A (en) 1995-01-06 1997-03-25 Vlsi Technology, Inc. Dual purpose security architecture with protected internal operating system
US5764969A (en) 1995-02-10 1998-06-09 International Business Machines Corporation Method and system for enhanced management operation utilizing intermixed user level and supervisory level instructions with partial concept synchronization
US5717903A (en) 1995-05-15 1998-02-10 Compaq Computer Corporation Method and appartus for emulating a peripheral device to allow device driver development before availability of the peripheral device
JP3451595B2 (ja) 1995-06-07 2003-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
US5737760A (en) 1995-10-06 1998-04-07 Motorola Inc. Microcontroller with security logic circuit which prevents reading of internal memory by external program
JP3693721B2 (ja) 1995-11-10 2005-09-07 Necエレクトロニクス株式会社 フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法
US6205467B1 (en) * 1995-11-14 2001-03-20 Advanced Micro Devices, Inc. Microprocessor having a context save unit for saving context independent from interrupt requests
WO1997025798A1 (en) 1996-01-11 1997-07-17 Mrj, Inc. System for controlling access and distribution of digital property
US5657445A (en) 1996-01-26 1997-08-12 Dell Usa, L.P. Apparatus and method for limiting access to mass storage devices in a computer system
IL117085A (en) 1996-02-08 2005-07-25 Milsys Ltd Secure computer system
US5835594A (en) 1996-02-09 1998-11-10 Intel Corporation Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
US5978892A (en) 1996-05-03 1999-11-02 Digital Equipment Corporation Virtual memory allocation in a virtual address space having an inaccessible gap
US6175925B1 (en) 1996-06-13 2001-01-16 Intel Corporation Tamper resistant player for scrambled contents
US6178509B1 (en) 1996-06-13 2001-01-23 Intel Corporation Tamper resistant methods and apparatus
US6205550B1 (en) 1996-06-13 2001-03-20 Intel Corporation Tamper resistant methods and apparatus
US5729760A (en) 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
US6055637A (en) 1996-09-27 2000-04-25 Electronic Data Systems Corporation System and method for accessing enterprise-wide resources by presenting to the resource a temporary credential
US5844986A (en) 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US5937063A (en) 1996-09-30 1999-08-10 Intel Corporation Secure boot
JPH10134008A (ja) 1996-11-05 1998-05-22 Mitsubishi Electric Corp 半導体装置およびコンピュータシステム
US5852717A (en) 1996-11-20 1998-12-22 Shiva Corporation Performance optimizations for computer networks utilizing HTTP
US5757919A (en) 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US6148401A (en) 1997-02-05 2000-11-14 At&T Corp. System and method for providing assurance to a host that a piece of software possesses a particular property
US5953502A (en) 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
EP0970411B1 (en) 1997-03-27 2002-05-15 BRITISH TELECOMMUNICATIONS public limited company Copy protection of data
US6802062B1 (en) * 1997-04-01 2004-10-05 Hitachi, Ltd. System with virtual machine movable between virtual machine systems and control method
US6272637B1 (en) 1997-04-14 2001-08-07 Dallas Semiconductor Corporation Systems and methods for protecting access to encrypted information
US6075938A (en) 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US5987557A (en) 1997-06-19 1999-11-16 Sun Microsystems, Inc. Method and apparatus for implementing hardware protection domains in a system with no memory management unit (MMU)
US6014745A (en) 1997-07-17 2000-01-11 Silicon Systems Design Ltd. Protection for customer programs (EPROM)
US6188995B1 (en) 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
DE19735948C1 (de) 1997-08-19 1998-10-01 Siemens Nixdorf Inf Syst Verfahren zur Verbesserung der Steuerungsmöglichkeit in Datenverarbeitungsanlagen mit Adreßübersetzung
US6128641A (en) * 1997-09-12 2000-10-03 Siemens Aktiengesellschaft Data processing unit with hardware assisted context switching capability
US6282657B1 (en) 1997-09-16 2001-08-28 Safenet, Inc. Kernel mode protection
US6148379A (en) 1997-09-19 2000-11-14 Silicon Graphics, Inc. System, method and computer program product for page sharing between fault-isolated cells in a distributed shared memory system
US6182089B1 (en) 1997-09-23 2001-01-30 Silicon Graphics, Inc. Method, system and computer program product for dynamically allocating large memory pages of different sizes
US6134602A (en) * 1997-09-24 2000-10-17 Microsoft Corporation Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system
US6085296A (en) 1997-11-12 2000-07-04 Digital Equipment Corporation Sharing memory pages and page tables among computer processes
US6219787B1 (en) 1997-12-22 2001-04-17 Texas Instruments Incorporated Method and apparatus for extending security model to native code
US6192455B1 (en) 1998-03-30 2001-02-20 Intel Corporation Apparatus and method for preventing access to SMRAM space through AGP addressing
US6339826B2 (en) 1998-05-05 2002-01-15 International Business Machines Corp. Client-server system for maintaining a user desktop consistent with server application user access permissions
US6397242B1 (en) 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6505279B1 (en) 1998-08-14 2003-01-07 Silicon Storage Technology, Inc. Microcontroller system having security circuitry to selectively lock portions of a program memory address space
US6339815B1 (en) 1998-08-14 2002-01-15 Silicon Storage Technology, Inc. Microcontroller system having allocation circuitry to selectively allocate and/or hide portions of a program memory address space
JP2000076139A (ja) 1998-08-28 2000-03-14 Nippon Telegr & Teleph Corp <Ntt> 携帯型情報記憶媒体
US6230248B1 (en) 1998-10-12 2001-05-08 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for pre-validating regions in a virtual addressing scheme
EP1030237A1 (en) 1999-02-15 2000-08-23 Hewlett-Packard Company Trusted hardware device in a computer
US6272533B1 (en) 1999-02-16 2001-08-07 Hendrik A. Browne Secure computer system and method of providing secure access to a computer system including a stand alone switch operable to inhibit data corruption on a storage device
US6732220B2 (en) * 1999-02-17 2004-05-04 Elbrus International Method for emulating hardware features of a foreign architecture in a host operating system environment
JP2004500613A (ja) 1999-04-12 2004-01-08 デジタル メディア オン ディマンド, インコーポレイテッド セキュア電子商取引システム
US6321314B1 (en) 1999-06-09 2001-11-20 Ati International S.R.L. Method and apparatus for restricting memory access
US6158546A (en) 1999-06-25 2000-12-12 Tenneco Automotive Inc. Straight through muffler with conically-ended output passage
US6301646B1 (en) 1999-07-30 2001-10-09 Curl Corporation Pointer verification system and method
US6374317B1 (en) 1999-10-07 2002-04-16 Intel Corporation Method and apparatus for initializing a computer interface
GB9923804D0 (en) 1999-10-08 1999-12-08 Hewlett Packard Co Electronic commerce system
GB9923802D0 (en) 1999-10-08 1999-12-08 Hewlett Packard Co User authentication
US6292874B1 (en) 1999-10-19 2001-09-18 Advanced Technology Materials, Inc. Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges
EP1269425A2 (en) 2000-02-25 2003-01-02 Identix Incorporated Secure transaction system
US20010037450A1 (en) 2000-03-02 2001-11-01 Metlitski Evgueny A. System and method for process protection
CA2341931C (en) 2000-03-24 2006-05-30 Contentguard Holdings, Inc. System and method for protection of digital works
US6507904B1 (en) 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
US6795905B1 (en) 2000-03-31 2004-09-21 Intel Corporation Controlling accesses to isolated memory using a memory controller for isolated execution
US6990579B1 (en) 2000-03-31 2006-01-24 Intel Corporation Platform and method for remote attestation of a platform
US6760815B1 (en) * 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
JP2002041305A (ja) * 2000-07-26 2002-02-08 Hitachi Ltd 仮想計算機システムにおける計算機資源の割当て方法および仮想計算機システム
US20020062452A1 (en) 2000-08-18 2002-05-23 Warwick Ford Countering credentials copying
US7272831B2 (en) * 2001-03-30 2007-09-18 Intel Corporation Method and apparatus for constructing host processor soft devices independent of the host processor operating system
WO2002086684A2 (en) 2001-04-24 2002-10-31 Hewlett-Packard Company An information security system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR890016452A (ko) * 1988-04-15 1989-11-29 세끼모또 다다히로 가상 컴퓨터 시스템의 정보 이송방법
WO2004061645A2 (en) * 2002-12-17 2004-07-22 Intel Corporation Methods and systems to control virtual machines

Also Published As

Publication number Publication date
AU2003290857A8 (en) 2004-07-29
TW200416604A (en) 2004-09-01
DE10393920B4 (de) 2009-02-19
CN1833225A (zh) 2006-09-13
KR20050085699A (ko) 2005-08-29
US7318141B2 (en) 2008-01-08
WO2004061645A3 (en) 2006-03-30
JP4981006B2 (ja) 2012-07-18
AU2003290857A1 (en) 2004-07-29
JP2006516769A (ja) 2006-07-06
CN100504789C (zh) 2009-06-24
DE10393920T5 (de) 2005-12-29
WO2004061645A2 (en) 2004-07-22
TWI273493B (en) 2007-02-11
US20040117539A1 (en) 2004-06-17
JP2009054169A (ja) 2009-03-12

Similar Documents

Publication Publication Date Title
KR100847613B1 (ko) 가상 기계 제어 방법 및 시스템
US9836409B2 (en) Seamless application access to hybrid main memory
CA1304166C (en) Software emulation of bank-switched memory using a virtual dos monitorand paged memory management
US8166276B2 (en) Translate and verify instruction for a processor
US7783838B1 (en) Maintaining coherency of derived data in a computer system
US7111145B1 (en) TLB miss fault handler and method for accessing multiple page tables
US6397242B1 (en) Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US8352670B2 (en) Execute-only memory and mechanism enabling execution from execute-only memory for minivisor
JP4668166B2 (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
EP2955634B1 (en) Paravirtualization-based interface for memory management in virtual machines
US7558724B2 (en) Operation region describing a virtual device
Hajinazar et al. The virtual block interface: A flexible alternative to the conventional virtual memory framework
US9558364B2 (en) Computing machine, access management method, and access management program
JPH06332803A (ja) 仮想計算機システムにおけるtlb制御方法
Bhattacharjee et al. Heterogeneity and Virtualization
KR20240004738A (ko) 캐퍼빌리티를 사용하여 메모리에 대한 액세스를 제약하기 위한 기술

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20130701

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140701

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150630

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160630

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170704

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190627

Year of fee payment: 12