KR20050085766A - 가상 기계 동작에서 기계 상태를 관리하는 방법 및 시스템 - Google Patents

가상 기계 동작에서 기계 상태를 관리하는 방법 및 시스템 Download PDF

Info

Publication number
KR20050085766A
KR20050085766A KR1020057011344A KR20057011344A KR20050085766A KR 20050085766 A KR20050085766 A KR 20050085766A KR 1020057011344 A KR1020057011344 A KR 1020057011344A KR 20057011344 A KR20057011344 A KR 20057011344A KR 20050085766 A KR20050085766 A KR 20050085766A
Authority
KR
South Korea
Prior art keywords
state
values
machine
vmcs
machine state
Prior art date
Application number
KR1020057011344A
Other languages
English (en)
Other versions
KR100737666B1 (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 KR20050085766A publication Critical patent/KR20050085766A/ko
Application granted granted Critical
Publication of KR100737666B1 publication Critical patent/KR100737666B1/ko

Links

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

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

Abstract

VM(virtual machine)와 VMM(Virtual Machine Monitor) 사이의 전이를 제어하기 위한 방법 및 시스템이 제공된다. 프로세서는 상태 액션 지시자(state action indicators)를 사용하여, 전이를 완료하기 전에, 기계 상태의 관련 요소를 로드 및/또는 기억한다. 상태 액션 지시자는 VMCS(Virtual Machine Control Structure)에 기억될 수 있고, 선정될 수 있고, 및/또는 다이내믹하게 계산될 수 있다. 소정의 실시예에서, 로드된 값은 VMCS로부터 직접 획득될 수 있고, 선정될 수 있고, 및/또는 다이내믹하게 계산될 수 있다. 소정의 실시예에서, 기억된 값들은 기계 상태로부터 직접 획득될 수 있고, 선정될 수 있고, 및/또는 다이내믹하게 계산될 수 있다.

Description

가상 기계 동작에서 기계 상태를 관리하는 방법 및 시스템{METHODS AND SYSTEMS TO MANAGE MACHINE STATE IN VIRTUAL MACHINE OPERATIONS}
본 발명의 실시예는 일반적으로 컴퓨터 시스템에 관한 것이고, 보다 구체적으로는, 컴퓨터 시스템 내에서 가상 기계 동작의 운용 관리 및/또는 제어에 관한 것이다.
가상 기계 시스템은 물리적 기계가 분할되는(partitioned) 것을 허용하므로, 기계의 하위 하드웨어는 하나 이상의 독립적인 운영 가상 기계(operating virtual machines; VMs)로서 나타난다. VMM(Virtual Machine Monitor)은 컴퓨터에서 실행하고, 그 외의 소프트웨어에 하나 이상의 VM의 추상화를 제시한다. 각 VM은 그 자신의 운영 체계(OS) 및/또는 응용 소프트웨어를 실행하는, 독립 플랫폼(self-contained platform)으로서 기능할 수 있다. VM 내에서 실행하는 소프트웨어는 총괄하여 게스트 소프트웨어라 불린다.
게스트 소프트웨어는 VM보다는 전용 컴퓨터에서 실행중인 것처럼 동작하도록 기대된다. 즉, 게스트 소프트웨어는 다양한 이벤트를 제어하고, 컴퓨터(예컨대, 물리적 기계)의 하드웨어 자원에 액세스하도록 기대된다. 물리적 기계의 하드웨어 자원은 하나 이상의 프로세서, 프로세서(들)에 상주하는 자원들(예컨대, 제어 레지스터들, 캐시들, 및 그 외의 것들), 메모리(및 메모리에 상주하는 구조체들, 예컨대, 설명어 표들(descriptor tables)), 및 물리적 기계에 상주하는 그 외의 자원들(예컨대, 입-출력 디바이스들)을 포함할 수 있다. 이벤트는 인터럽트(interrupts), 예외(exceptions), 플랫폼 이벤트(예컨대, 초기화(INIT) 혹은 시스템 관리 인터럽트(SMIs)) 등을 포함할 수 있다.
VMM은 필요에 따라 물리적 기계의 프로세서(들), 디바이스들, 메모리 및 레지스터들의 내부 및 외부(in and out)의 게스트 소프트웨어 상태를 교환(swap)할 수 있다. 프로세서(들)는 VM과 VMM 사이에서의 전이(transitions)동안 내부 및 외부에서 소정 상태를 교환할 수 있다. VMM은 소정의 상황(situation)에서 하위 물리적 기계로의 직접 액세스를 허용함으로써 VM의 성능을 높일 수 있다. 이는, 물리적 기계로의 액세스를 한정하는, 게스트 소프트웨어 내의 비-특권 모드(non-privileged mode)에서 동작이 수행 중인 경우, 또는 VMM이 계속 제어하기를 희망하는 물리적 기계 내의 하드웨어 자원을 동작들이 이용하지 않는 경우에 특히 적합하다. VMM은 VM의 호스트에 의해 주시된다.
VMM은, 게스트 동작이 VMM의 정확한 실행(correct execution)이나 비-실행 중인 VM들(non-executiong VMs) 중 임의의 것에 영향을 미칠 때마다 제어로 복귀한다. 보통, VMM은, 하위 물리적 기계로 진행하는 동작을 허용하기 전이나 게스트를 대신하여 동작을 에뮬레이트하기 전에 문제가 존재하는지 여부를 판정하는 것과 같은 동작들을 조사한다. 예를 들어, 게스트가 I/O 디바이스를 액세스하는 경우, 기계 구성을 변경하려고 하는 경우(예컨대, 제어 레지스터 값들을 변경함으로써), 메모리의 임의의 영역에 액세스하려고 하는 경우 등에 VMM은 제어로 복귀할 필요가 있다.
VM 동작을 지원하는 현존하는 물리적 기계는 여기서 VMCS(Virtual Machine Control Structure)로 불리는 구조체를 사용하여 VM의 실행 환경(execution environment)을 제어한다. VMCS는 메모리의 영역 내에 기억되고, 예를 들어, 게스트의 상태, VMM의 상태, 및 게스트 실행동안 VMM이 제어로 복귀하기를 희망하는 조건들(conditions) 하에서 나타내는 제어 정보를 포함한다. 물리적 기계 내의 하나 이상의 프로세서는 VMCS로부터 정보를 판독하여, VM 및 VMM의 실행 환경을 판정하고, 게스트 소프트웨어의 행위(behavior)를 적절히 억제한다.
물리적 기계의 프로세서(들)는 VM 내부로의 전이(즉, 진입(entry)) 혹은 그 외부로의 전이(즉, 탈출(exit))가 발생하는 경우에 기계 상태를 로드 및 기억할 것이다. 종래의 아키텍처는 그 외의 시스템 구조체들, 명령어 코딩들 및 기계 행위들과 유사한 방식으로 프로세서 명세에서 정의된 바와 같이, 소정 세트의 상태 로딩 및 기억을 수행한다. VMM은 이러한 명세들로 직접 코드된다. 이러한 구조화는 VMM의 구현 유동성을 한정한다.
따라서, VM에 진입(entering) 및 탈출(exiting)하기 위한 개선된 기술 구현이 필요하다. 이러한 구현 및 기술들은 VM 동작이 보다 잘 관리되고 및 제어되도록 할 것이다.
도 1은 본원의 일 실시예에 따른, VM 아키텍처에 대한 도면.
도 2A는 본원의 일 실시예에 따른, VM 전이 동작을 관리하는 방법에 대한 순서도.
도 2B는 본원의 일 실시예에 따른, VM 전이 동작동안 기계 상태를 로드하는 방법에 대한 순서도.
도 2C는 본원의 일 실시예에 따른, VM 전이 동작동안 기계 상태를 기억하는 방법에 대한 순서도.
도 3은 본원의 일 실시예에 따른, VM 전이 동안 로드 동작을 수행하는 방법에 대한 순서도.
도 4는 본원의 일 실시예에 따른, VM 전이 동안 기억 동작을 수행하는 방법에 대한 순서도.
도 5는 본원의 일 실시예에 따른, VM 전이 동작동안 상태 액션 지시자(state action indicator)의 값을 결정하는 방법에 대한 순서도.
VM 동작동안 전이를 관리하는 신규한 방법, 장치, 및 시스템이 설명된다. 실시예에 대한 다음의 상세한 설명에 있어서, 이에 한정되는 것은 아니지만 실행될 수 있는 본원의 특정한 실시예는 이 문서의 일부를 형성하는 첨부 도면을 참조하여 설명된다. 이러한 실시예들은 당업자가 이들을 이해하고 구현할 수 있도록 충분히 자세하게 설명되며, 그 외의 실시예들이 이용될 수 있고, 본 개시물의 정신 및 범위를 벗어나지 않는 한 구조적, 논리적, 및 전기적 변경이 이루어질 수 있다는 것이 이해될 것이다. 따라서, 다음의 상세한 설명은 의미를 한정하지 않고, 여기 개시된 본원의 실시예의 범위는 단지 첨부된 청구 범위에 의해 규정된다.
도 1은 본 발명이 작동할 수 있는 가상-기계 환경(100)의 일 실시예를 도시한다. 이러한 실시예에서, 물리적 기계(110)는 예를 들어 표준 운영 체계(OS), 혹은 VMM(125)과 같은 VMM(virtual-machine monitor)을 실행할 수 있는 컴퓨팅 플랫폼을 포함한다. VMM(125)은, 통상적으로 소프트웨어로 구현되지만, 기계 인터페이스를 고급(higher-level) 소프트웨어에 에뮬레이트 및 익스포트할 수 있다. 그러한 고급 소프트웨어는 표준 혹은 실시간 OS를 포함할 수 있고, 한정된 OS 기능성을 갖는 상당히 감량된(highly stripped down) 운영 환경일 수 있으며, 전통적인 OS 설비를 포함하지 않을 수 있다. 대안적으로, 예를 들어, VMM(125)은 또 다른 VMM 내부(within), 또는 그 상부(top)에서 실행할 수도 있다. VMM(125)은 예를 들어 하드웨어, 소프트웨어, 및 펌웨어로, 또는 다양한 기술의 조합에 의해 구현될 수 있다. VMM 및 그들의 전통적인 특징 및 기능성은 당업자에게 잘 알려진 것이다.
물리적 기계(110)는 퍼스널 컴퓨터(PC), 메인프레임, 핸드헬드 디바이스, 휴대용 컴퓨터, 셋-톱 박스, 지능형 전기 물품(intelligent appliance), 또는 또 다른 컴퓨팅 시스템이나 디바이스일 수 있다. 물리적 기계(110)는 프로세서(112) 및 메모리(120)를 포함한다. 또한, 물리적 기계(110)는 도시되지는 않았지만 그 외의 다양한 입/출력 디바이스를 포함할 수 있다.
프로세서(112)는 마이크로프로세서, 디지털 신호 프로세서, 마이크로제어기 등과 같은 소프트웨어를 실행할 수 있는 임의의 유형의 프로세서일 수 있다. 프로세서(112)는 본 발명의 방법들에 대한 실시예의 실행을 수행하기 위한 마이크로코드, 매크로코드, 소프트웨어, 프로그램가능 논리 혹은 하드 코드된 논리를 포함할 수 있다. 도 1에는 그러한 프로세서(112) 중 단지 하나가 도시되었지만, 시스템 내에는 하나 이상의 프로세서가 제시될 수도 있다는 것이 이해될 것이다.
메모리(120)는 하드 디스크, 플로피 디스크, RAM(random access memory), ROM(read only memory), 플래시 메모리, 프로세서(112)에 의해 판독가능한 그 외의 유형의 기계 매체, 또는 상기 디바이스들의 임의의 조합일 수 있다. 메모리(120)는 본 발명의 방법 실시예들을 실행하기 위한 명령어 및/또는 데이터를 기억할 수 있다.
VMM(125)은 그 외의 소프트웨어(즉, "게스트" 소프트웨어)에 하나 이상의 가상 기계(VM)의 추상화를 제시하고, 동일한 혹은 상이한 추상화를 여러 게스트에게 제공할 수 있다. 도 1은 3개의 VM(132, 142 및 152)을 도시한다. 각 VM에서 실행하는 게스트 소프트웨어는 게스트 OS(134, 144 혹은 154)와 같은 게스트 OS 및 여러 게스트 소프트웨어 응용(136, 146 및 156)을 포함할 수 있다. 게스트 OS(134, 144 혹은 154) 각각은, 게스트 OS(134, 144 혹은 154)가 실행중인 VM(132, 142 및 152) 내에 있는 물리적 자원(예컨대, 프로세서(112) 레지스터, 메모리(120) 및 I/0 디바이스)에 액세스하고, VM(132, 142 및 152)의 동작 동안 시스템 디바이스에 의해 생성된 인터럽트를 포함하는 다양한 이벤트를 핸들하도록 기대된다.
프로세서(112)는 VMCS(122)에 기억된 데이터에 따라 VM(132, 142 및 152)의 동작을 제어한다. VMCS(122)는, 프로세서(112) 내에서, 메모리(120)(도 1에 도시된 바와 같은), 또 다른 위치 혹은 임의의 조합의 기억 위치에 기억될 수 있다. VMCS(122)는 VMM(125) 및 게스트 소프트웨어의 기계 상태용 스토리지를 제공한다. 또한, VM의 동작을 한정하거나 아니면 제어하고, VM과 VMM(125) 사이에서의 전이를 제어하는 지시자를 포함할 수 있다. VMCS(122)는 VMM(125)에 의해 액세스가능하다. VMCS는 메모리 혹은 스토리지의 연속 구역(contiguous area)을 필요로 하지 않는다. 따라서, 소정의 실시예에서, VMCS는 복수의 메모리 혹은 스토리지 위치로부터 논리적으로 어셈블 및 액세스될 수 있다.
VMM(125)으로부터 게스트 소프트웨어로의 전이는 "VM 진입(VM entry)"이라 불린다. 게스트 소프트웨어로부터 VMM(120)으로의 전이는 "VM 탈출(VM exit)"이라 불린다. VM 진입 및 VM 탈출은 총괄적으로 "VM 전이(VM transitions)"로 불린다. 실시예에서, VMM(125)은 VM 진입을 야기하기 위한 특정한 명령어를 실행함으로써 VM 진입을 시작할 수 있다. 실시예에서, VM 탈출은 VM(예컨대, VM 탈출을 생성하기 위한 특정한 명령어를 실행함으로써)에 의해 명백하게 요구될 수 있다. 소정의 실시예에서, VM은 전이를 직접적으로 요구하지는 않지만, 소정의 이벤트(예컨대, 보호 장애(protection fault), 인터럽트 등) 혹은 VM에서 실행된 명령어는, VMCS(122)에서의 제어들 혹은 가상 기계 시스템의 아키텍처에 의한 판정에 따라 VM 탈출을 요구한다(예컨대, 특정한 제어 비트가 VMCS 내에 설정되어 있다면, INVLPG 명령어의 실행은 VM 탈출을 야기하고; 마스크 불가능 인터럽트(non-maskable interrupts)의 발생 모두는 VM 탈출을 야기함).
VM 전이 동안, 프로세서(112)는 다양한 기계 상태의 요소들(elements)에서 작동할 수 있다. 당업자라면, 기계 상태는 예를 들어 프로세서(들), I/O 디바이스, 칩셋 등 내의 다양한 구조적 컴포넌트(architectural components)와 연관될 수 있다는 것을 이해한다. 따라서, 본 발명의 다양한 실시예에 대한 설명에서는, 전통적으로 구조적인 것으로 보여지지 않는 일부 컴포넌트들에 의해 증대된 그것의 관례적 의미 내에서 "기계 상태(machine state)"라는 문구를 사용한다. 따라서, 기계 상태는, (예컨대, IA-32 ISA, EAX, EDX, ST3 등으로 불리는 Intel의 Pentium Ⅳ의 ISA(Instruction Set Architecture) 내의) 범용 및 부동 소수점 레지스터(floating-point registers), (예컨대, IA-32 ISA, CR0, CR3 등 내의) 제어 레지스터, (예컨대, IA-32 ISA, EIP 내의) 명령어 포인터, (예컨대, IA-32 ISA, EFLAGS 등 내의) 프로세싱 플래그, (예컨대, IS-32 ISA, DEBUGCTL, MTRRs, TSC 등 내의) MSR(model-specific registers), (예컨대, 선택기, 베이스, 리미트, 및 AR 바이트 필드를 포함하는 IS-32 ISA, CS, SS, TR 등 내의) 세그먼트 레지스터, 추가적인 내부(구조적 혹은 비-구조적) 기계 상태(예컨대, 슬립 상태, 인터럽트 정보, 상태-기계 상태), 메모리 관리 관련 상태(예컨대, PDPTR, TLB(translation look aside buffer) 콘텐츠), 칩셋 레지스터, I/O 디바이스 상태 등을 포함할 수 있다. 상응하여, 위에서 제시된 정보 리스트의 예는 소모적인 것으로 의도된 것이 아니고, 그 외의 다른 정보를 갖도록 증대될 수 있다. 또한, 당업자라면 여기 제시된 머리글자(acronyms)를 쉽게 인지할 것이다.
VM 시스템(100)은 게스트 VM(예컨대, 132, 142, 및 152)와 호스트 VMM(125) 사이에서의 전이(예컨대, 진입 및 탈출)동안 기계 상태의 로딩 및/또는 기억을 관리하는 경우에 사용되는 메커니즘을 구현하기 위한 유동적 아키텍처(flexible architecture)를 제공한다.
도 2A는 본원의 일 실시예에 따라, VM 전이 동작을 관리하기 위한 하나의 방법(200)에 대한 순서도를 도시한다. 프로세스는 하드웨어(예컨대, 회로 소자, 전용 논리, 프로그램가능 논리, 마이크로코드 등), 소프트웨어(예컨대, 범용 컴퓨터 시스템 혹은 전용 기계에서 실행하는), 또는 그 둘의 조합을 포함할 수 있는 프로세싱 논리에 의해 수행될 수 있다.
210에서, 프로세서는 VM 전이가 막 시작되려고 한다는 것을 검출한다. VM 전이는 VM 탈출 혹은 VM 진입일 수 있다. 따라서, 220에서, VM 전이가 VM 탈출 동작인지 여부를 판정하도록 체크가 수행된다.
프로세서가 VM 진입을 핸들하고 있다면, 프로세서는 VMM으로부터 VM으로의 제어 전달에 대비하여 다수의 동작을 수행할 수 있다. 예를 들어, 프로세서는 230에서 VMM 기계 상태를 기억할 수 있고, 240에서 VM 기계 상태를 로드할 수 있고, 끝으로, 250에서 VM에 제어를 전달할 수 있다.
프로세서가 VM 탈출을 핸들하고 있다면, 프로세서는 VMM으로부터 VM으로의 제어 전달에 대비하여 다수의 동작을 수행할 수 있다. 예를 들어, 프로세서는 260에서는 VM 기계 상태를 기억할 수 있고, 270에서는 VMM 기계 상태를 로드할 수 있고, 끝으로 280에서는 VMM에 제어를 전달할 수 있다.
VM 전이 동안 기계 상태를 로드(예컨대, 도 2의 240 및/또는 270에서) 및 기억(예컨대, 도 2의 230 및/또는 260에서)하는 방법에 대한 실시예가 도 2B 및 도 2C에서 각각 도시된다.
도 2A, 2B 및 2C에 도시되지 않은 그 외의 액션들이 VM 진입 혹은 VM 탈출 프로세싱동안 발생할 수 있다는 것이 이해된다. 예를 들어, VM 진입 혹은 VM 탈출에서 로드되는 상태의 유효성(validity) 및 무모순(consistency)이 보장될 필요가 있을 수 있다.
도 2B는 VM 전이 동안 상태를 로드하는 방법(202)을 도시한다. 이 방법은 하드웨어(예컨대, 회로 소자, 전용 논리, 프로그램가능 논리, 마이크로코드 등), 소프트웨어(예컨대, 범용 컴퓨터 시스템 혹은 전용 기계에서 실행하는), 혹은 그 둘의 조합을 포함할 수 있는 논리를 프로세싱함으로써 수행될 수 있다.
초기에, 222에서, 프로세싱이 필요한 기계 상태의 임의의 요소들이 남아 있는지 여부를 판정한다. 프로세스될 기계 상태의 요소가 남아있지 않다면, 방법은 종결된다. 그렇지 않으면, 232에서, 제어 비트 값이 결정된다. 이러한 제어 비트 및 그들의 결정은 아래 상세히 논의된다. 242에서, 결정된 것과 같이 비트가 설정되지 않았다면(비트가 0 값을 가짐), 제어는 222로 리턴한다. 그렇지 않으면(비트가 1 값으로 설정됨), 252에서 기계 상태의 대응 요소에 대한 값이 결정된다. 값의 결정은 아래 논의된다. 이러한 값은 262에서 기계 상태에 인스톨된다. 그때, 제어는 222로 리턴하여, 기계 상태의 요소가 더 남아 있는지 여부를 판정한다.
도 2C는 VM 전이 동안 기계 상태를 기억하는 방법(204)을 도시한다. 이 방법은 하드웨어(예컨대, 회로 소자, 전용 논리, 프로그램가능 논리, 마이크로코드 등), 소프트웨어(예컨대, 범용 컴퓨터 시스템 혹은 전용 기계에서 실행하는), 혹은 그 둘의 조합을 포함할 수 있는 논리를 프로세싱함으로써 수행될 수 있다.
초기에, 224에서, 프로세싱을 필요로 하는 기계 상태의 임의의 요소들이 남아있는지 여부를 판정한다. 처리될 기계 상태의 요소가 남아있지 않다면, 방법은 종결된다. 그렇지 않으면, 234에서, 제어 비트 값이 결정된다. 이러한 제어 비트 및 그들의 결정은 아래 상세히 논의된다. 244에서, 결정된 것과 같이 비트가 설정되지 않았다면(비트가 0 값을 가짐), 제어는 224로 리턴한다. 그렇지 않으면(비트가 1 값을 갖도록 설정됨), 254에서 기계 상태의 요소에 대응하는 값이 결정된다. 값의 결정은 아래 논의된다. 264에서 이러한 값이 기억된다. 그때, 제어는 224로 리턴되어, 기계 상태의 요소가 더 남아 있는지 여부를 판정한다.
일 실시예에서, VMCS는 VMM의 제어하에 있는, 2세트의 제어 비트를 포함한다. 이러한 제어 비트는 VM-진입 제어(VM-entry controls) 및 VM-탈출 제어(VM-exit controls)로 불린다. VM-진입 제어는, VM 진입동안 어떤 VMM 기계 상태가 기억되어야 하고, 어떤 VM 기계 상태가 로드되어야 하는지를 프로세서에게 알린다. VM-탈출 제어는, VM 탈출동안 어떤 VM 기계 상태가 기억되어야 하고, 어떤 VMM 기계 상태가 로드되어야 하는지를 프로세서에게 알린다.
단지 예로서, VM-진입 제어는, 길이 6을 갖는 비트열로서 표현될 수 있는데, 여기서, 비트열 내에 있는 각각의 비트 위치는 기계 상태의 특정한 요소에서의 액션(action) 혹은 논-액션(non-action)을 식별 혹은 표시한다. 예를 들어, 열(string) 내에서의 비트 위치, 및 기계 상태의 관련 요소는 다음과 같이 도식될 수 있다.
비트 위치(Bit Location) 프로세서 액션 및 기계 상태의 관련 요소
0 기억-VMM-DR7
1 기억-VMM-CR3
2 기억-VMM-CR4
3 로드-게스트-DR7
4 로드-게스트-CR3
5 로드-게스트-CR4
유사한 방식으로, VM-탈출 제어는 VMCS 내에서 길이 4를 갖는 비트열로 표현될 수 있다. 마찬가지로, 열 내에서의 비트 위치, 및 기계 상태의 요소에 대한 관련 액션은 다음과 같이 도시될 수 있다.
비트 위치 프로세서 액션 및 기계 상태의 관련 요소
0 기억-게스트-CR3
1 기억-게스트-CR4
2 로드-VMM-CR3
3 로드-VMM-CR4
VM 진입에서, VMM이 VM-진입 제어(비트 번호 0)에 "기억-VMM-DR7(store-VMM-DR7)" 비트를 설정한다면, 프로세서는 DR7 레지스터의 현재 값을 기억할 것이다. 일 실시예에서, DR7 레지스터의 값은 VMCS에 기억된다. 반대로, VM-진입 제어에서 "기억-VMM-DR7" 비트가 지워진다면, 프로세서는 DR7 레지스터 값을 기억하지 않는다. "기억-VMM-CR3" 및 "기억-VMM-CR4" VM-진입 제어 비트(예컨대, 비트 번호 1 및 2 각각)는 유사한 방식으로 작동한다.
마찬가지로, VMM이 "로드-게스트-DR7" VM-진입 제어 비트(예컨대, 비트 번호 4)를 설정했다면, 프로세서는 DR7 레지스터를 로드할 것이다. 실시예에서, 로드된 값은 VMCS 내의 게스트 VM의 DR7 필드에 포함된다. "로드-게스트-DR7" VM-진입 제어 비트가 지워진다면, 프로세서는 DR7 레지스터를 로드하지 않는다. 다시, "로드-게스트-CR3" 및 "로드-게스트-CR4" 제어 비트(예컨대, 비트 번호 4 및 5 각각)는 아날로그 방식으로 작동한다. VM-탈출 제어 비트는, VM 탈출에서, 게스트 VM 기계 상태의 기억 및 호스트 VMM 기계 상태의 로드를 제어하는 유사한 방식으로 작동한다.
이러한 예에서, VM-진입 및 VM-탈출 제어는 동일한 기계 상태의 요소를 제어하지 않는데, VM-진입 제어는 DR7을 나타내는 비트를 포함하고 VM-탈출 제어는 그렇지 않기 때문이다. 그러나 당업자라면 쉽게 이해할 수 있듯이, VM-진입 및 VM-탈출 제어는 기계 상태의 동일한 요소들을 제어할 수 있고, 그러한 표현은 본 발명에 대한 다양한 실시예의 범위 내에 있도록 의도된다. 따라서, 이 예에서 표현된 기계 상태의 특정한 선택은 한정적인 것으로 보여져서는 안된다.
상술한 예는 본 발명의 일 실시예를 이해하기 위한 설명을 제공하지만, 본원은 이에 한정되는 것은 아니다. 예를 들어, 로드된 값은 VMCS 내의 값일 필요가 없고, 기억된 값은 (상술한 실시예에서와 같이) 모든 시나리오에서 기계 상태로부터의 직접적인 값일 필요가 없다.
상술한 예에서, 프로세서는 기계 상태의 요소에 대한 값을 VMCS로부터(from) 혹은 VMCS로(to) 로드 혹은 기억할 수 있다. 대안적으로, 프로세서는 기계 상태의 요소에 대한 고정 값을 로드 혹은 기억할 수 있다. 또한, 프로세서는 다이내믹하게 계산되는 값을 로드 혹은 기억할 수 있다. 끝으로, 프로세서는 기계 상태의 요소에 관한 어떠한 액션도 취하지 않을 수 있다(어떠한 값도 로드 혹은 기억되지 않음). 로드되거나 기억될 값을 결정하기 위한 이러한 대안적인 메커니즘은 후술된다.
프로세서는 기계 상태의 요소에 대한 고정(즉, 상수 혹은 소정) 값을 로드 혹은 기억할 수 있다. 예를 들어, 프로세서는 VM 탈출에서 고정 값을 EFLAGS 레지스터에 로드할 수 있다. 즉, VMCS에 어떠한 VMM EFLAGS도 표시되지 않는다. 대신, 프로세서는, VMM에 제어를 전이하기 전에, 프로세서 내의 EFLAGS 레지스터가 고정 혹은 소정 값(예컨대, 0×2, 혹은 그외의 값)을 갖도록 강요한다. 이러한 방식에서, 프로세서는 기계 상태의 요소의 값을 "강요(forcing)"하고 있다. 동일한 방식으로, 프로세서는 VM 진입에서 VMCS에 기억되는 값을 강요할 수 있고, VM 진입에서 기계 상태로 로드되는 값을 강요할 수 있고, 및/또는 VM 탈출에서 VMCS에 기억되는 값을 강요할 수 있다.
이러한 방식에서, 기계 상태의 모든 요소가 VMCS에 명백하게 표현될 필요는 없다. 이러한 기법은, 크거나 혹은 다루기 힘든 VMCS를 작성하지 않고도, 기계 상태의 추가적인 요소들을 커버하기 위한 유동적 메커니즘을 제공하다. 또한, 기계 상태 혹은 기억된 값에 대한 이러한 강요는, VMCS에 필수적인 액세스의 수를 줄이고, VM 진입 및/또는 VM 탈출에서 요구되는 무모순 및 에러 검사를 줄임으로써, VM 탈출 및 VM 진입의 구현 성능을 개선할 수 있다.
또한, 프로세서는 기계 상태에 로드되거나 VMCS에 기억되는 값을 계산할 수 있다. 이렇게 계산 값은 기계 상태의 하나 이상의 요소의 값, VMCS 내에 포함된 값 등에 기초하여 다이내믹하게 결정된다. 예를 들어, VM 탈출에서 EIP 레지스터에 로드된 값은 VMCS로부터 VMM EIP 필드 값을 로드하고, 소정의 계산된 값만큼 증대된 이 EIP 값을 EIP 레지스터에 로드함으로써 계산될 수 있고, 여기서 상기 소정의 계산된 값은 VM 탈출의 원인에 의존한다.
기계 상태의 요소의 다이내믹한 계산은 VMM의 보다 효과적인 구현을 가능하게 한다. 예를 들어, 상술된 예에서, VM 탈출에서의 EIP의 다이내믹한 계산은 VMM으로 하여금 개별 VM 탈출 소스에 대한 핸들러를 구성하도록 하여, VMM 소프트웨어에서 탈출 이유를 디코드할 필요성을 없앤다.
끝으로, 프로세서는 VM 전이 동안 기계 상태의 요소에 관한 어떠한 액션도 취하지 않는다. 예를 들어, 프로세서는 VM으로부터 VMM으로 전이하는 경우에 변경되지 않는 범용 레지스터(예컨대, IA-32 ISA, EAX, EDX 등에서)의 값을 남길 수 있다.
프로세서는 "상태 액션 지시자(state action indicator)"를 계산함으로써 VM 전이 동안 기계 상태의 요소에 관해 취할 적절한 액션을 결정한다. 상태 액션 지시자는 취할 액션을 결정한다. 상태 액션 지시자의 값("상태 액션 지시자 값(state action indicator value)")은 프로세서에게 지시하여, VMCS로부터 상태 정보를 로드하거나 VMCS에 상태 정보를 기억한다. 상태 액션 지시자 값은 프로세서로 하여금 고정 혹은 소정 값이 로드되거나 기억되게 하거나, 고려되고 있는 기계 상태의 특정 요소에 대하여 어떠한 액션도 취하지 않거나, 또는 계산된 값을 로드 혹은 기억하도록 지시할 수 있다.
상술된 VM-진입 및 VM-탈출 제어는 상태 액션 지시자의 예이다. 이러한 예에서, 프로세서는 VMCS의 필드를 상태 액션 지시자로서 이용한다. VM-진입 혹은 VM-탈출 제어 내의 각 비트는 기계 상태의 단일 요소에 대응한다. 비트가 설정되었다면, 기계 상태의 요소는 VMCS로부터/로 로드/기억될 것임을 프로세서에게 나타내고; 그것이 지워졌다면, 기계 상태의 요소는 무시된다. 대안적인 실시예에서, 단일 비트는 기계 상태의 요소가 로드될 것인지 혹은 고정값으로 강요될 것인지를 판정할 수 있다. 또 다른 실시예에서, 상태 액션 지시자는 단일 비트 이상일 수 있고, 보다 복잡한 행위를 인코드할 수 있다. 예를 들어, 상태 액션 지시자는 4개의 값에 대해 2비트씩, 상술한 로드, 강요, 계산 및 무시 메커니즘을 구별하도록 허용할 수 있다.
상태 액션 지시자는 특정한 VM 전이(예컨대, 모든 VM 탈출을 갖는), 기계 상태의 특정 요소(상술한 VM-진입 및 VM-탈출 제어의 실시예에서와 같이) 및/또는 다수의 기계 상태의 요소(예컨대, VM 탈출에서 프로세서 내의 모든 범용 레지스터의 로딩을 제어하는 단일 상태 액션 지시자)와 연관될 수 있다.
상태 액션 지시자 값은 VMCS로부터 획득된 값으로부터 결정될 수 있고(상기 예에서와 같이), 고정(즉, 소정) 값일 수 있고, 또한, 다이내믹하게 계산 값일 수 있다. 이러한 각각의 가능성이 아래 논의된다.
상태 액션 지시자는 VMM의 제어 하에, VMCS에 기억될 수 있다. VMCS에 기억된 상태 액션 지시자의 예는 위에서 상세히 논의되었다.
상태 액션 지시자는 선정될 수 있다. 상태 액션 지시자의 값이 고정 혹은 소정 값이라면, VMM은 VM 전이에서 기계 상태의 대응 요소에 대해 프로세서가 실시하는 액션들에 걸쳐 직접 제어를 갖지 않는다. 예를 들어, 프로세서는 VM 진입(enter) 프로세싱동안 EIP 레지스터의 값을 일관되게 기억할 수 없고, VM 진입 프로세싱동안 VMCS로부터 EIP 레지스터에 대한 게스트 값을 일관되게 로드할 수 없고, 및/또는 VM 탈출 프로세싱동안 EIP 레지스터를 일관되게 로드할 수 없다.
상태 액션 지시자는 다이내믹하게 계산될 수 있다. 상태 액션 지시자가 다이내믹하게 계산 값이라면, 상태 액션 지시자는 기계 상태의 하나 이상의 요소와 연관된 하나 이상의 값, VMCS 내의 하나 이상의 필드 등에 의존할 수 있다.
예를 들어, IA-32 ISA에서, 프로세서가 VM 진입이나 VM 탈출에 뒤따르는 물리적 어드레스 확장(PAE 모드 내에 있음)을 사용한다면, 프로세서는 VMCS로부터 PDPTR(page directory pointer tables)에 대한 엔트리들을 로드한다. 프로세서가 PAE 모드 내에 있지 않다면, 프로세서 내의 PDTR은 0으로 강요된다. 프로세서가 PAE 모드 내에 있는지 여부를 판정하기 위해, 프로세서는 CR4 레지스터 내의 PAE 비트를 조사한다. 따라서, 프로세서는 상태 액션 지시자 값의 다이내믹한 결정 혹은 계산을 실시하는 것으로 말할 수 있다. PAE 비트가 설정된다면, 상태 액션 지시자는 프로세서에게 "VMCS로부터 로드"하도록 지시한다. PAE 비트가 지워진다면, 상태 액션 지시자는 프로세서에게 "값을 강요"(예컨대, 0 값을 강요)할 것을 지시한다. 프로세서가 PAE 모드에 있는지 여부를 판정하기 위해 여기서 설명된 프로세싱은, 본 발명의 다양한 실시예를 명백하게 설명하기 위해 간략화된 것임에 주목한다. 당업자가 쉽게 인지하고 이해하도록, 이러한 결정을 실시하기 위한 프로세싱이 더 요구될 수 있다.
또 다른 예에서, 프로세서는 세그먼트의 선택기의 값이 0이 아니라면, 혹은 프로세서가 V86 모드에 있다면 세그먼트 레지스터에 대한 베이스 및 리미트 필드를 로드할 수 있다. 이러한 결정을 실시하기 위해, 프로세서는 2 피스의 기계 상태 정보, 즉, 고려사항 하에 세그먼트에 대한 선택기의 값 및 EFLAGS 레지스터에서 VM 비트의 값을 조사한다. 선택기가 0이 아니라면, 혹은 EFLAGS 내의 VM 비트가 설정되었다면, 프로세서는 "VMCS로부터 로드"하도록 지시를 받고, 그렇지 않으면, 프로세서는 어떠한 액션도 취하지 않는다. 베이스 및 리미트 필드를 로드하기 위해 필요한지 여부를 판정하기 위해 여기 설명된 프로세싱은 본 발명의 여러 실시예를 명백히 설명하기 위해 간략화된 것임을 주목한다. 당업자가 쉽게 인지하고 이해하도록, 이러한 판정을 실시하기 위한 프로세싱이 더 요구될 수 있다.
당업자에게 명백한 바와 같이, 여기서 설명된 방법들은 VMM과 VM 간의 전이 동안 다이내믹하게 기계 상태의 로드 및 기억을 제어하기 위해 사용될 수 있다. 예를 통해 위에서 제시된 바와 같이, 전이는 VMCS와 유동적 명령어 논리를 갖는 프로세서를 사용하여 VMM의 내부 및 외부에서 발생한다. 또한, 기계 상태의 각 요소와 프로세서에 의해 취해지는 액션은 VMCS 내에서만 긍정적으로 나타나거나 표현될 필요가 없다.
도 3은 본원의 일 실시예에 따라, VM 전이 동안 기계 상태 요소의 로드를 수행하기 위한 하나의 방법(300)에 대한 순서도를 도시한다. 도 3은 기계를 위한 프로세서의 설계 내에서 구현될 수 있다. 방법은 하드웨어(예컨대, 회로 소자, 전용 논리, 프로그램가능 논리, 마이크로코드 등), 소프트웨어(예컨대, 범용 컴퓨터 시스템 혹은 전용 기계에서 실행하는), 혹은 그 둘의 조합을 포함할 수 있는 논리를 프로세싱함으로써 수행될 수 있다.
310에서, 프로세서는 고려사항 하에 기계 상태의 요소에 대한 상태 액션 지시자를 결정한다. 320에서, 프로세서는 상태 액션 지시자를 조사한다. 고려사항 하에 기계 상태의 요소가 VMCS로부터 로드될 것임을 상태 액션 지시자 값이, 나타낸다면, 330에서, 기계 상태의 요소에 대한 값이 로드되고, 335에서, 고려사항 하에 기계 상태의 대응 요소에 인스톨된다. 그러나 340에서 결정되는 것과 같이, 고려사항 하에 기계 상태의 요소가 강요될 것임을 상태 액션 지시자 값이 나타내면, 350에서, 프로세서는 소정 혹은 강요된 값을 기계 상태의 대응 요소에 인스톨한다. 또한, 상태 액션 지시자 값은, 고려사항 하에 기계 상태의 요소에 대하여 프로세서가 어떠한 액션도 취하지 않을 것임을 나타낼 수 있고, 이 경우에 360에서 프로세서는 어떠한 액션도 취하지 않는다(프로세서는 고려사항 하에 기계 상태의 요소를 수정하지 않는다.).
360에서 상태 액션 지시자의 평가가 네거티브(고려사항 하에 기계 상태의 요소에 관하여 어떠한 액션도 요구되지 않음을 나타내지 않는다)라면, 다이내믹한 계산이 요구된다는 것을 추론할 수 있다. 물론, 일부 실시예에서는, 상태 액션 지시자에 대한 어떠한 추론도 하지 않고 상태 액션 지시자에 대한 긍정 체크를 행하여 계산이 필요한지 여부를 판정할 수도 있다. 따라서, 고려사항 하에 기계 상태의 요소에 대한 값이 370에서 계산되어, 380에서 기계 상태의 요소 내에 인스톨된다. 프로세서는 기계 상태의 하나 이상의 요소를 조사하고, VMCS 내의 값을 조사하고, 및/또는 제어 지시자 값을 조사함으로써, 기계 상태의 요소에 대한 값을 다이내믹하게 계산할 수 있다. 또한, 조사가 완료되면, 프로세서는 하나 이상의 변환(transformations)(예컨대, 계산)을 수행하여, 고려사항 하에 기계 상태의 요소에 대한 값을 생성할 수 있다. 따라서, 프로세서는 다양한 데이터를 사용하고, 다양한 액션을 수행하여, 기계 상태의 요소에 대한 값을 생성할 수 있다.
도 3에는 도시되지 않았지만, 방법(300)은 기계 상태의 각 요소에 대해 반복될 것이다. 또한, 상술한 바와 같이, 각 상태 액션 지시자는 기계 상태의 하나 이상의 요소와 관련될 수 있다.
도 4는 본원의 일 실시예에 따라, VM 전이 동안 기계 상태의 요소의 기억을 수행하는 하나의 방법(400)에 대한 순서도를 도시한다. 방법(400)은 프로세서 아키텍처 내에서 구현된다. 방법은 하드웨어(예컨대, 회로 소자, 전용 논리, 프로그램가능 논리, 마이크로코드 등), 소프트웨어(예컨대, 범용 컴퓨터 시스템 혹은 전용 기계에서 실행하는), 혹은 그 둘의 조합을 포함할 수 있는 논리를 프로세싱함으로써 수행될 수 있다.
410에서, 프로세서는 고려사항 하에 기계 상태의 요소에 대한 상태 액션 지시자를 결정한다. 420에서, 프로세서는 상태 액션 지시자를 조사한다. 상태 액션 지시자가 고려사항 하에 기계 상태의 요소를 VMCS에 기억할 것을 요구한다면, 430에서, 고려사항 하에 기계 상태의 요소는 VMCS의 하나 이상의 필드에 기억된다. 그 경우가 아니라면, 440에서, 상태 액션 지시자 값이 점검되어, 고정값이 VMCS에 기억될 것인지 여부를 판정하고, 만약 그렇다면, 450에서, 고정 값은 하나 이상의 VMCS 필드에 기억된다. 소정의 환경에서, 상태 액션 지시자 값은 460에 도시된 바와 같이 프로세서에게 어떠한 액션도 수행하지 않도록 지시할 수 있다.
470에서, 기계 상태의 요소에 대응하는 값은 다이내믹하게 결정된다. 계산 값은 480에서 하나 이상의 VMCS의 필드에 기억된다. 프로세서는 기계 상태의 하나 이상의 요소를 조사하고, VMCS 내의 값을 조사하고, 및/또는 제어 지시자 값을 조사함으로써, 값을 다이내믹하게 계산할 수 있다. 또한, 조사가 완료되면, 프로세서는 하나 이상의 변환(예컨대, 계산)을 수행하여, VMCS의 하나 이상의 필드에 기억되는 계산 값을 생성할 수 있다. 따라서, 프로세서는 계산 값을 생성하기 위해, 많은 데이터를 사용하고, 많은 액션을 수행할 수 있다.
도 4에는 도시되지 않았지만, 방법(400)은 기계 상태의 각 요소에 대해 반복될 수 있다. 또한, 상술한 바와 같이, 각 상태 액션 지시자는 기계 상태의 하나 이상의 요소와 관련된다.
도 5는 본원의 일 실시예에 따라, VM 전이 동작(예컨대, 도 3의 블록 310 및 도 4의 블록 410)동안 상태 액션 지시자의 값을 결정하기 위한 하나의 방법(500)에 대한 순서도를 도시한다. 그 방법은 하드웨어(예컨대, 회로 소자, 전용 논리, 프로그램가능 논리, 마이크로코드 등), 소프트웨어(예컨대, 범용 컴퓨터 시스템 혹은 전용 기계에서 실행하는), 혹은 그 둘의 조합을 포함할 수 있는 논리를 프로세싱함으로써 수행될 수 있다.
505에서, 프로세서는 고려사항 하에 기계 상태의 요소를 결정하고, 프로세스 중인 VM 전이의 유형을 결정하며, 상태 로드가 프로세스 중인지 기억이 프로세스 중인지를 결정한다. 결정된 정보에 기초하여, 507에서, 프로세서는, 기계 상태의 요소와 관련된 상태 액션 지시자가 고정되거나, VMCS로부터 로드되거나 계산된다는 것을 아키텍처가 나타내는지를 판정한다.
510에서, 상태 액션 지시자가 고정된다면, 520에서, 고정 상태 액션 지시자가 결정된다.
530에서, 상태 액션 지시자가 VMCS로부터 획득된다면, 540에서, 상태 액션 지시자 값은 VMCS로부터 로드된다.
550에서, 상태 액션 지시자가 다이내믹하게 결정되거나 계산된다면, 550에서, 계산이 수행되어 상태 액션 지시자 값을 결정한다. 다이내믹한 결정 혹은 계산은 예를 들어, VMCS 내에 다양한 필드를 로드하고(제어 벡터 필드 값들을 포함), 기계 상태의 다양한 요소를 조사하고, VM 및/또는 VMM 상태의 다양한 요소를 조사하고, 하나 이상의 제어 지시자 값을 조사하고, 및/또는 조사된 정보 상에서 변환(계산을 수행함)하는 과정을 포함할 수 있다.
소정의 실시예에서, 상태 액션 지시자 값의 결정 및 평가는 명백하지 않을 수 있다. 프로세서는 특정 상황이 특정한 액션을 요구한다는 지식으로 설계될 수 있다. 예를 들어, 프로세서 내의 논리는 임의의 상태 액션 지시자 값을 명백하게 계산하지 않고, 특정한 값을 기계 상태의 요소에 무조건적으로 강요할 수 있다. 따라서, 도 5에 관해 설명된 명백한 체크는 한정으로서 보여져서는 안된다.
본 발명의 실시예들은 VM 전이의 개선된 프로세싱을 제공한다. 이는 VMCS를 사용하는 프로세서 내에서 프로세싱을 유동적으로 구현함으로써 달성되지만, VM 전이를 수행하기 위해 VMCS 내에 제공된 정보에 전체적으로 의지할 필요는 없다.
당업자라면, 본 발명의 다양한 실시예에 따른 프로세서의 구현이 VM 전이 동안 기계 상태의 로드 및 기억을 관리 및 제어할 수 있다는 것을 이해할 것이다. 특히, 이러한 실시예들은 아키텍처에 의해 허용되는 한에서는, VM 전이 동안 기계 상태의 로드 및 기억의 의미(semantics)를 지시(dictate)하도록, VMM에게 융통성을 제공한다. 이는, 기계 상태 요소의 모든 예를 설명하는 고정(rigid) VMCS로 달성될 필요는 없고, VM 전이에서 기계 상태의 모든 기억 및 로드가 VMCS 내의 제어를 통해 VMM에 의해 명백하게 전달될 필요는 없다.
상기 설명은 예시적인 것으로서, 제한적인 것이 아님이 이해될 것이다. 그 외의 많은 실시예는 상기 설명을 리뷰하는 경우에 당업자에게 명백할 것이다. 따라서, 본원의 실시예의 범위는 첨부된 청구 범위와 함께, 그러한 청구 범위가 청구한 것과 등가물의 전체 범위를 참조하여 결정되어야 한다.
요약서를 요구하는 37 C.F.R. §1.72(b)에 응하여 제공된 요약서는, 독자가 이 기술적 개시물의 본질 및 요점을 신속하게 확인하도록 할 것이다. 청구범위의 범위 혹은 의미를 해석 혹은 한정하기 위해 사용된 것이 아니라는 이해가 수반되어야 한다.
전술한 실시예에 대한 설명에 있어서, 개시물의 합리화를 위해, 다양한 특징들이 하나의 실시예에서 함께 그룹화된다. 개시물의 이러한 방법은 본원의 청구된 실시예들이 각 청구 범위에서 명백히 인용된 것보다 더 많은 특징을 요구하려는 의도를 반영하는 것으로서 해석되지 않을 것이다. 오히려, 다음의 청구 범위들이 반영하는 바와 같이, 발명의 대상(subject matter)은 하나의 개시된 실시예의 모든 특징들보다 적다. 따라서, 다음 청구 범위들은 실시예의 설명에서 구체화되고, 각 청구항은 개별적인 예시적인 실시예로서 그 자신을 실시하고 있다.

Claims (23)

  1. 가상 기계(VM: Virtual Machine) 동작을 관리하는 방법으로서,
    프로세스될 VM 전이 동작을 식별하는 단계;
    하나 이상의 상태-액션 지시자(state-action indicators)를 식별하는 단계; 및
    상기 하나 이상의 상태-액션 지시자의 하나 이상의 값을 사용하여, 필요하다면, 기계 상태의 하나 이상의 관련 요소(associated elements)에 대한 적어도 하나의 액션을 결정하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 식별 단계에서, 상기 하나 이상의 상태-액션 지시자는, VM 전이 동작, 상기 기계 상태의 하나 이상의 관련 요소, 및 상기 기계 상태의 제2 요소 중 적어도 하나와 연관되는 방법.
  3. 제1항에 있어서, 사용 단계에서, 상기 적어도 하나의 액션은, 상기 기계 상태의 하나 이상의 관련 요소를 로드하는 것, 상기 기계 상태의 하나 이상의 관련 요소를 기억시키는 것, 및 어떠한 액션도 취하지 않는 것 중 적어도 하나를 포함하는 방법.
  4. 제1항에 있어서, 식별 단계에서, 상기 하나 이상의 상태 액션 지시자는,
    VMCS(Virtual Machine Control Structure) 내의 하나 이상의 판독 값;
    하나 이상의 고정 값; 및
    상기 기계 상태의 하나 이상의 관련 요소, 상기 기계 상태의 제2 요소, 상기 VM의 상태와 관련된 요소, VMM(Virtual Machine Monitor)의 상태와 관련된 요소, 제어 지시자 값, 및 상기 VMCS 내의 필드 값 중 적어도 하나에 근거한 하나 이상의 계산 값
    중 적어도 하나인 방법.
  5. 제1항에 있어서, 식별 단계에서, 상기 하나 이상의 상태-액션 지시자는, 상기 기계 상태의 적어도 하나의 관련 요소를 설명하는 데이터 구조, 및 제어 벡터 내의 하나 이상의 비트 중 적어도 하나인 방법.
  6. 제1항에 있어서, 사용 단계에서, 적어도 하나의 액션 각각은,
    상기 기계 상태의 하나 이상의 관련 요소를 VMCS 내의 하나 이상의 필드에 기억시키는 것;
    하나 이상의 고정 값을 상기 VMDS 내의 하나 이상의 필드에 기억시키는 것; 및
    하나 이상의 계산 값을 상기 VMCS 내의 하나 이상의 필드에 기억시키는 것
    중 적어도 하나를 수행하는 방법.
  7. 제6항에 있어서, 상기 하나 이상의 계산 값을 기억시키는 단계에서, 상기 하나 이상의 계산 값은,
    상기 기계 상태의 요소, VMCS 내의 값, 및 제어 지시자 중 적어도 하나의 값을 조사하고;
    상기 조사된 값을 변환하여 상기 하나 이상의 계산 값을 형성하는 것에 의해 결정되는 방법.
  8. 제1항에 있어서, 사용 단계에서, 적어도 하나의 액션 각각은,
    VMCS 내의 하나 이상의 필드로부터 상기 기계 상태의 하나 이상의 관련 요소를 로드하는 것;
    상기 기계 상태의 하나 이상의 관련 요소에 하나 이상의 계산된 기계 상태 값을 로드하는 것; 및
    상기 기계 상태의 하나 이상의 관련 요소에 하나 이상의 고정 값을 로드하는 것
    중 적어도 하나를 수행하는 방법.
  9. 제8항에 있어서, 하나 이상의 계산된 기계 상태 값을 로드하는 단계에서, 상기 하나 이상의 계산된 기계 상태 값은,
    상기 기계 상태의 요소, 상기 VMCS 내의 값, 및 제어 지시자 중 적어도 하나의 값을 조사하고;
    상기 조사된 값을 변환하여 상기 하나 이상의 계산된 기계 상태 값을 형성하는 것에 의해 결정되는 방법.
  10. 제1항에 있어서, 상기 VM 전이 동작을 식별하는 단계에서, 상기 VM 전이 동작은 VM 진입(entry) 및 VM 탈출(exit) 중 적어도 하나인 방법.
  11. 가상 기계(VM: Virtual Machine)를 관리하는 시스템으로서,
    VM;
    VMM(Virtual Machine Monitor); 및
    컴퓨팅 디바이스
    를 포함하고,
    VM 전이 시, 상기 컴퓨팅 디바이스는 하나 이상의 상태 액션 지시자를 결정하고, 상기 하나 이상의 상태 지시자는, 상기 컴퓨팅 디바이스에 의해 사용되어, 상기 VM 전이가 완료되기 전에, 필요하다면, 상기 컴퓨팅 디바이스가 상기 컴퓨팅 디바이스 상태의 하나 이상의 관련 요소를 기억 및/또는 로드하도록 하는 적어도 하나의 액션을 결정하는데 사용되는 시스템.
  12. 제11항에 있어서, 상기 컴퓨팅 디바이스는,
    VMCS(Virtual Machine Control Structure)로부터 하나 이상의 필드 값을 획득하는 것;
    하나 이상의 고정 값을 결정하는 것; 및
    하나 이상의 계산 값을 계산하는 것
    중 적어도 하나에 의해 상기 하나 이상의 상태 액션 지시자의 하나 이상의 값을 결정하는 시스템.
  13. 제11항에 있어서, 상기 컴퓨팅 디바이스는 2 세트의 제어 비트를 포함하는 VMCS에 액세스하는데, 여기서, 제1 제어 비트 세트는 상기 컴퓨팅 디바이스에 의해 사용되어, 상기 VM으로의 진입시에, 기억할 상기 컴퓨팅 디바이스 상태의 요소와 로드할 상기 컴퓨팅 디바이스 상태의 요소를 식별하는데 사용되고, 제2 제어 비트 세트는 상기 컴퓨팅 디바이스에 의해 사용되어, 상기 VM으로부터의 탈출시에, 기억할 상기 컴퓨팅 디바이스 상태의 요소와 로드할 상기 컴퓨팅 디바이스 상태의 요소를 식별하는데 사용되는 시스템.
  14. 제11항에 있어서, 상기 컴퓨팅 디바이스 상태의 하나 이상의 관련 요소를 기억시키는 경우에,
    상기 컴퓨팅 디바이스 상태의 하나 이상의 관련 요소를 VMCS 내의 하나 이상의 필드에 기억시키는 것;
    하나 이상의 고정 값을 상기 VMCS 내의 하나 이상의 필드에 기억시키는 것; 및
    하나 이상의 계산 값을 상기 VMCS 내의 하나 이상의 필드에 기억시키는 것
    을 더 포함하는 시스템.
  15. 제14항에 있어서, 상기 하나 이상의 계산 값을 기억시키는 경우에, 상기 하나 이상의 계산 값은,
    상기 컴퓨팅 디바이스 상태의 요소, 상기 VMCS 내의 값, 및 제어 지시자 중 적어도 하나의 값을 조사하고;
    상기 조사된 값을 변환하여 상기 하나 이상의 계산 값을 형성하는 것에 의해 결정되는 시스템.
  16. 제11항에 있어서, 상기 컴퓨팅 디바이스 상태의 하나 이상의 관련 요소를 로드하는 경우에,
    상기 컴퓨팅 디바이스 상태의 하나 이상의 관련 요소를, VMCS 내의 하나 이상의 필드로부터 상기 컴퓨팅 디바이스 상태의 하나 이상의 관련 요소에 로드하는 것;
    하나 이상의 계산 값을 상기 컴퓨팅 디바이스 상태의 하나 이상의 관련 요소에 로드하는 것;
    상기 컴퓨팅 디바이스 상태의 하나 이상의 관련 요소에 하나 이상의 고정 값을 로드하는 것
    을 더 포함하는 시스템.
  17. 제16항에 있어서, 상기 하나 이상의 계산 값을 로드하는 경우에, 상기 하나 이상의 계산 값은,
    상기 컴퓨팅 디바이스 상태의 요소, 상기 VMCS 내의 값, 및 제어 지시자 값 중 적어도 하나의 값을 조사하고;
    상기 조사된 값을 변환하여 상기 하나 이상의 계산 값을 형성하는 것에 의해 결정되는 시스템.
  18. 관련 명령어를 갖는 기계 액세스가능 매체를 갖는 물품(article)으로서,
    상기 명령어는, 실행되는 경우에, 적어도 하나의 컴포넌트를 갖는 기계가,
    VM(Virtual Machine) 전이에 대한 필요성의 검출하는 것과,
    하나 이상의 상태-액션 지시자와 하나 이상의 상태-액션 지시자 값을 분석(resolve)하는 것과,
    상기 하나 이상의 분석된 상태-액션 지시자 값에 근거하여 기계 상태의 하나 이상의 관련 요소에 대해 적어도 하나의 액션을 실행하는 것
    을 수행하는 결과를 얻게 되는 물품.
  19. 제18항에 있어서, 검출하는 경우에, 상기 VM 전이는, VMM(Virtual Machine Monitor)으로부터의 VM 탈출 및 VM으로의 VM 진입 중 적어도 하나인 물품.
  20. 제18항에 있어서, 상기 하나 이상의 상태 액션 지시자를 분석하는 경우에, 상기 적어도 하나의 상태 액션 지시자는,
    VMCS(Virtual Machine Control Structure)로부터 적어도 하나의 지시자 값을 판독하는 것과;
    하나 이상의 고정 값을 결정하는 것과;
    하나 이상의 계산 값을 계산하는 것
    중 적어도 하나를 수행함으로서 분석되는 물품.
  21. 제20항에 있어서, 계산하는 경우에, 상기 하나 이상의 계산 값은,
    상기 기계 상태의 하나 이상의 관련 요소를 사용하는 것과;
    상기 기계 상태의 제2 요소를 사용하는 것과;
    상기 VM의 상태와 관련된 요소를 사용하는 것과;
    상기 VMM의 상태와 관련된 요소를 사용하는 것과;
    제어 지시자 값을 사용하는 것과;
    상기 VMCS 내의 필드 값을 사용하는 것
    중 적어도 하나를 수행함으로써 결정되는 물품.
  22. 제18항에 있어서, 실행하는 경우에, 적어도 하나의 액션은,
    기계 상태의 하나 이상의 관련 요소를 기억시키는 것과;
    하나 이상의 고정 기억 값을 기억시키는 것과;
    하나 이상의 계산 기억 값을 기억시키는 것과;
    VMCS 내의 하나 이상의 필드로부터의 하나 이상의 값을 기계 상태의 하나 이상의 관련 요소로 로드하는 것과;
    하나 이상의 고정 로드 값을 기계 상태의 하나 이상의 관련 요소에 로드하는 것과;
    하나 이상의 계산 로드 값을 기계 상태의 상기 하나 이상의 관련 요소에 로드하는 것
    중 적어도 하나를 수행함으로써 실행되는 물품.
  23. 제18항에 있어서, 적어도 하나의 액션이 실행된 후에, 상기 VM 전이를 완료하는 것을 더 포함하는 물품.
KR1020057011344A 2002-12-19 2003-12-04 가상 기계 동작에서 기계 상태를 관리하는 방법 및 시스템 KR100737666B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/324,591 US7793286B2 (en) 2002-12-19 2002-12-19 Methods and systems to manage machine state in virtual machine operations
US10/324,591 2002-12-19

Publications (2)

Publication Number Publication Date
KR20050085766A true KR20050085766A (ko) 2005-08-29
KR100737666B1 KR100737666B1 (ko) 2007-07-09

Family

ID=32593494

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057011344A KR100737666B1 (ko) 2002-12-19 2003-12-04 가상 기계 동작에서 기계 상태를 관리하는 방법 및 시스템

Country Status (8)

Country Link
US (1) US7793286B2 (ko)
JP (4) JP4937514B2 (ko)
KR (1) KR100737666B1 (ko)
CN (2) CN100472454C (ko)
AU (1) AU2003298951A1 (ko)
DE (1) DE10393679B9 (ko)
TW (1) TWI253585B (ko)
WO (1) WO2004061659A2 (ko)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US7516453B1 (en) 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US7130949B2 (en) * 2003-05-12 2006-10-31 International Business Machines Corporation Managing input/output interruptions in non-dedicated interruption hardware environments
US20050044408A1 (en) * 2003-08-18 2005-02-24 Bajikar Sundeep M. Low pin count docking architecture for a trusted platform
US8079034B2 (en) 2003-09-15 2011-12-13 Intel Corporation Optimizing processor-managed resources based on the behavior of a virtual machine monitor
US20050132122A1 (en) * 2003-12-16 2005-06-16 Rozas Carlos V. Method, apparatus and system for monitoring system integrity in a trusted computing environment
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
US7356735B2 (en) * 2004-03-30 2008-04-08 Intel Corporation Providing support for single stepping a virtual machine in a virtual machine environment
US8127098B1 (en) * 2004-05-11 2012-02-28 Globalfoundries Inc. Virtualization of real mode execution
US7490070B2 (en) * 2004-06-10 2009-02-10 Intel Corporation Apparatus and method for proving the denial of a direct proof signature
WO2006011994A2 (en) * 2004-06-26 2006-02-02 Transvirtual Systems, Llc System for emulating wang vs programs
US20060004667A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for collecting operating system license revenue using an emulated computing environment
US7562179B2 (en) 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
US20060064699A1 (en) * 2004-09-21 2006-03-23 Bonk Ted J Method and system for processing resource allocations
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
WO2006069493A1 (en) * 2004-12-31 2006-07-06 Intel Corporation An apparatus and method for cooperative guest firmware
US7904903B2 (en) * 2005-06-30 2011-03-08 Intel Corporation Selective register save and restore upon context switch using trap
CN100420202C (zh) * 2005-10-20 2008-09-17 联想(北京)有限公司 计算机管理系统以及计算机管理方法
US7877485B2 (en) * 2005-12-02 2011-01-25 International Business Machines Corporation Maintaining session states within virtual machine environments
WO2007065307A2 (en) * 2005-12-10 2007-06-14 Intel Corporation Handling a device related operation in a virtualization environment
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
US8099730B2 (en) * 2006-03-30 2012-01-17 Intel Corporation Heterogeneous virtualization of host and guest OS having different register sizes using translation layer to extract device port numbers for host OS system memory addresses
US8607228B2 (en) 2006-08-08 2013-12-10 Intel Corporation Virtualizing performance counters
CN101154130B (zh) * 2006-09-30 2012-07-04 联想(北京)有限公司 一种虚拟机系统及其电源管理方法
CN101206582B (zh) * 2006-12-22 2010-10-06 联想(北京)有限公司 一种虚拟机系统及其处理方法
US8291410B2 (en) * 2006-12-29 2012-10-16 Intel Corporation Controlling virtual machines based on activity state
US8380987B2 (en) * 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
US7765374B2 (en) * 2007-01-25 2010-07-27 Microsoft Corporation Protecting operating-system resources
US8296775B2 (en) * 2007-01-31 2012-10-23 Microsoft Corporation Efficient context switching of virtual processors by managing physical register states in a virtualized environment
CN101267334B (zh) * 2007-03-13 2011-01-26 联想(北京)有限公司 一种动态分配设备的方法及装置
US7975267B2 (en) * 2007-03-30 2011-07-05 Bennett Steven M Virtual interrupt processing in a layered virtualization architecture
US8099274B2 (en) * 2007-03-30 2012-01-17 International Business Machines Corporation Facilitating input/output processing of one or more guest processing systems
US8046540B2 (en) * 2007-04-26 2011-10-25 Sap Ag Shared closures on demand
US20090007100A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Suspending a Running Operating System to Enable Security Scanning
CN101334751B (zh) * 2007-06-29 2010-04-14 联想(北京)有限公司 虚拟机监视器识别客户操作系统中进程的方法及装置
US8151264B2 (en) * 2007-06-29 2012-04-03 Intel Corporation Injecting virtualization events in a layered virtualization architecture
DE102007053474A1 (de) 2007-11-09 2009-05-14 Giesecke & Devrient Gmbh Datenträger und Verfahren zum Betreiben eines Mikroprozessors eines Datenträgers
US8261028B2 (en) * 2007-12-31 2012-09-04 Intel Corporation Cached dirty bits for context switch consistency checks
US8839237B2 (en) * 2007-12-31 2014-09-16 Intel Corporation Method and apparatus for tamper resistant communication in a virtualization enabled platform
US20100115509A1 (en) * 2008-10-31 2010-05-06 International Business Machines Corporation Power optimization via virtualization opportunity
JP4961459B2 (ja) * 2009-06-26 2012-06-27 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムにおける制御方法
US20110153909A1 (en) * 2009-12-22 2011-06-23 Yao Zu Dong Efficient Nested Virtualization
CN101916207B (zh) * 2010-08-28 2013-10-09 华为技术有限公司 桌面虚拟化环境下的节能方法、装置及系统
US9223611B2 (en) 2010-12-28 2015-12-29 Microsoft Technology Licensing, Llc Storing and resuming application runtime state
CN102609314A (zh) * 2012-01-18 2012-07-25 浪潮(北京)电子信息产业有限公司 一种虚拟机量化管理方法和系统
US9146762B2 (en) * 2012-08-23 2015-09-29 Citrix Systems, Inc. Specialized virtual machine to virtualize hardware resource for guest virtual machines
JP5608797B2 (ja) * 2013-07-31 2014-10-15 株式会社日立製作所 仮想化プログラム、仮想計算機システム及び計算機システム制御方法
DE112015006934T5 (de) * 2015-09-25 2018-06-14 Intel Corporation Verschachtelte Virtualisierung für virtuelle Maschinenexits
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10243746B2 (en) 2017-02-27 2019-03-26 Red Hat, Inc. Systems and methods for providing I/O state protections in a virtualized environment
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11403234B2 (en) 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
CN111273969B (zh) * 2020-01-20 2021-08-10 腾讯科技(深圳)有限公司 状态切换方法、装置、设备和存储介质
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing

Family Cites Families (94)

* 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 仮想計算機システム制御装置
JPS61184644A (ja) * 1985-02-12 1986-08-18 Hitachi Ltd 仮想計算機システム制御方式
US4740893A (en) * 1985-08-07 1988-04-26 International Business Machines Corp. Method for reducing the time for switching between programs
JPH0814795B2 (ja) * 1986-01-14 1996-02-14 株式会社日立製作所 マルチプロセッサ仮想計算機システム
JPH0754470B2 (ja) * 1986-03-24 1995-06-07 株式会社日立製作所 仮想計算機システムの制御方法
JP2523653B2 (ja) * 1987-07-08 1996-08-14 株式会社日立製作所 仮想計算機システム
JPS6474632A (en) * 1987-09-16 1989-03-20 Fujitsu Ltd Control transfer system for virtual computer
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
US5016161A (en) * 1989-04-12 1991-05-14 Sun Microsystems, Inc. Method and apparatus for the flow control of devices
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
JP2902746B2 (ja) * 1990-07-27 1999-06-07 富士通株式会社 仮想計算機制御方式
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
JPH04308940A (ja) * 1991-04-05 1992-10-30 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
JPH0695898A (ja) * 1992-09-16 1994-04-08 Hitachi Ltd 仮想計算機の制御方法および仮想計算機システム
US5293424A (en) * 1992-10-14 1994-03-08 Bull Hn Information Systems Inc. Secure memory card
EP0600112A1 (de) 1992-11-30 1994-06-08 Siemens Nixdorf Informationssysteme Aktiengesellschaft Datenverarbeitungsanlage mit virtueller Speicheradressierung und schlüsselgesteuertem Speicherzugriff
JP2765411B2 (ja) * 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
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 マイクロコンピュータ
JPH0793221A (ja) * 1993-09-28 1995-04-07 Hitachi Ltd 仮想計算機システム及びその制御方法
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
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エレクトロニクス株式会社 フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法
EP0880840A4 (en) * 1996-01-11 2002-10-23 Mrj Inc DEVICE 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
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
US6205550B1 (en) * 1996-06-13 2001-03-20 Intel Corporation Tamper resistant methods and apparatus
US6178509B1 (en) * 1996-06-13 2001-01-23 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
US5953502A (en) * 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
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)
DE19735948C1 (de) * 1997-08-19 1998-10-01 Siemens Nixdorf Inf Syst Verfahren zur Verbesserung der Steuerungsmöglichkeit in Datenverarbeitungsanlagen mit Adreßübersetzung
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
US6085296A (en) * 1997-11-12 2000-07-04 Digital Equipment Corporation Sharing memory pages and page tables among computer processes
US6192455B1 (en) * 1998-03-30 2001-02-20 Intel Corporation Apparatus and method for preventing access to SMRAM space through AGP addressing
US6795966B1 (en) * 1998-05-15 2004-09-21 Vmware, Inc. Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
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
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
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
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
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
US20010027527A1 (en) * 2000-02-25 2001-10-04 Yuri Khidekel Secure transaction system
WO2001065366A1 (en) * 2000-03-02 2001-09-07 Alarity Corporation System and method for process protection
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
US6507904B1 (en) 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
GB0022949D0 (en) * 2000-09-19 2000-11-01 Sgs Thomson Microelectronics Processing instruction words
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

Also Published As

Publication number Publication date
CN101488097B (zh) 2013-12-25
WO2004061659A2 (en) 2004-07-22
JP2009163751A (ja) 2009-07-23
JP5384605B2 (ja) 2014-01-08
TWI253585B (en) 2006-04-21
JP2006510120A (ja) 2006-03-23
DE10393679T5 (de) 2005-10-20
US20040123288A1 (en) 2004-06-24
TW200411537A (en) 2004-07-01
JP2013214325A (ja) 2013-10-17
CN1726470A (zh) 2006-01-25
US7793286B2 (en) 2010-09-07
CN100472454C (zh) 2009-03-25
JP4937514B2 (ja) 2012-05-23
AU2003298951A8 (en) 2004-07-29
JP2012074074A (ja) 2012-04-12
AU2003298951A1 (en) 2004-07-29
DE10393679B9 (de) 2015-12-10
JP5068778B2 (ja) 2012-11-07
CN101488097A (zh) 2009-07-22
WO2004061659A3 (en) 2005-07-28
DE10393679B4 (de) 2008-05-29
JP5746275B2 (ja) 2015-07-08
KR100737666B1 (ko) 2007-07-09

Similar Documents

Publication Publication Date Title
KR100737666B1 (ko) 가상 기계 동작에서 기계 상태를 관리하는 방법 및 시스템
RU2265880C2 (ru) Новый режим процессора для ограничения функционирования гостевого программного обеспечения, выполняющегося на виртуальной машине, поддерживаемой монитором виртуальной машины
US8127098B1 (en) Virtualization of real mode execution
EP1939754B1 (en) Providing protected access to critical memory regions
US6651132B1 (en) System and method for emulating the operation of a translation look-aside buffer
KR100667146B1 (ko) 가상 머신 아키텍처 내에서의 제어 레지스터 액세스가상화 성능 개선
EP0671685B1 (en) Method and apparatus for detecting and executing cross-domain calls in a computer system
US4347565A (en) Address control system for software simulation
US5317754A (en) Method and apparatus for enabling an interpretive execution subset
US7506121B2 (en) Method and apparatus for a guest to access a memory mapped device
US7783867B2 (en) Controlling instruction execution in a processing environment
US5784625A (en) Method and apparatus for effecting a soft reset in a processor device without requiring a dedicated external pin
US8875114B2 (en) Employing identifiers provided by an operating system of a processing environment to optimize the processing environment
TWI790350B (zh) 記憶體存取中的守衛標籤檢查的控制
US11693722B2 (en) Fast memory mapped IO support by register switch
JP7349437B2 (ja) メモリ・アクセスにおける保護タグ・チェックの制御
US8091090B2 (en) Method for providing scratch registers for use by a virtual-machine monitor
US7882336B2 (en) Employing a buffer to facilitate instruction execution
US20210157601A1 (en) Exception interception
JPH0193831A (ja) 仮想計算機のオペランドアクセス制御方式

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: 20100630

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee