KR20070090047A - 가상 머신 환경에서의 주소 변환 지원 방법 및 장치 - Google Patents

가상 머신 환경에서의 주소 변환 지원 방법 및 장치 Download PDF

Info

Publication number
KR20070090047A
KR20070090047A KR1020077017491A KR20077017491A KR20070090047A KR 20070090047 A KR20070090047 A KR 20070090047A KR 1020077017491 A KR1020077017491 A KR 1020077017491A KR 20077017491 A KR20077017491 A KR 20077017491A KR 20070090047 A KR20070090047 A KR 20070090047A
Authority
KR
South Korea
Prior art keywords
data structure
shadow
guest
active
entries
Prior art date
Application number
KR1020077017491A
Other languages
English (en)
Other versions
KR100928353B1 (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 KR20070090047A publication Critical patent/KR20070090047A/ko
Application granted granted Critical
Publication of KR100928353B1 publication Critical patent/KR100928353B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Abstract

일 실시예에서, 방법은 TLB(translation-lookaside buffer)에 관한 특권 이벤트(privileged event)로 인해 가상 머신(VM)으로부터 이전된 제어를 받는 단계, 게스트 변환 데이터 구조(guest translation data structure) 내의 어느 엔트리들이 VM에 의해 수정되었는지를 판정하는 단계를 포함한다. 이 판정은 가상 머신 모니터(VMM)에 의해 유지되는 섀도 변환 데이터 구조(shadow translation data structure)로부터 추출된 메타데이터 및 섀도 변환 데이터 구조 내의 엔트리들과 연관된 속성들에 기초하여 행해진다. 이 방법은 게스트 변환 데이터 구조 내의 수정된 엔트리들에 대응하는 섀도 변환 데이터 구조 내의 엔트리들을, 게스트 변환 데이터 구조 내의 수정된 엔트리들과 동기화시키는 단계를 더 포함한다.
가상 머신, 게스트 변환 데이터 구조, 섀도 변환 데이터 구조, 가상 머신 모니터

Description

가상 머신 환경에서의 주소 변환 지원 방법 및 장치{A METHOD AND APPARATUS FOR SUPPORTING ADDRESS TRANSLATION IN A VIRTUAL MACHINE ENVIRONMENT}
본 발명의 실시예들은 일반적으로 가상 머신에 관한 것으로서, 더 구체적으로는 가상 머신 환경에서의 주소 변환을 지원하는 것에 관한 것이다.
종래의 가상 머신 모니터(virtual machine monitor: VMM)는 컴퓨터 상에서 실행되며, 다른 소프트웨어에 하나 이상의 가상 머신의 추상화(abstraction)를 제공한다. 각각의 가상 머신은 그 자신의 "게스트 운영 체제"(즉, VMM에 의해 호스트되는 운영 체제(OS)) 및 다른 소프트웨어(이들을 총괄하여 게스트 소프트웨어(guest software)라고 함)를 실행하는 독립적 플랫폼(self-contained platform)으로서 기능할 수 있다. 게스트 소프트웨어는 가상 머신보다는 전용의 컴퓨터 상에서 실행되고 있는 것처럼 동작하게 된다. 즉, 게스트 소프트웨어는 여러가지 이벤트를 제어하고 물리적 메모리 및 메모리-매핑(memory-mapped) 입/출력(I/O) 장치들과 같은 하드웨어 자원들에 액세스하는 것을 기대한다. 예를 들어, 게스트 소프트웨어는 주소-변환 동작에 대한 제어를 유지하고 물리적 메모리를 할당하는 능력을 가지며 게스트 애플리케이션으로부터의 그리고 이들 간의 보호를 제공하고, 다양한 페이징 기술을 사용할 수 있게 된다. 그렇지만, 가상-머신 환경에서, VMM은 가상 머신으로부터의 그리고 이들 간의 보호를 제공하기 위해 컴퓨터의 자원에 대한 궁극적인 제어를 할 수 있어야만 한다.
본 발명은 제한이 아닌 예로서 첨부 도면에 도시되어 있으며, 도면에서 유사한 참조 번호는 유사한 구성요소를 나타낸다.
도 1은 본 발명이 동작할 수 있는 가상-머신 환경의 일 실시예를 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 가상 TLB의 동작을 나타낸 도면이다.
도 3a 및 도 3b는 본 발명의 2개의 대안적인 실시예에 따른, 섀도(shadow) PT 계층구조에 대한 메타데이터를 생성 및 유지하는 프로세스를 나타낸 도면이다.
도 4는 게스트 변환 데이터 구조와 섀도 변환 데이터 구조를 동기화시키는 프로세스의 일 실시예의 흐름도이다.
도 5는 섀도 변환 데이터 구조에 대한 메타데이터를 유지하는 프로세스의 일 실시예의 흐름도이다.
도 6은 주소 공간의 변경을 용이하게 해주는 프로세스의 일 실시예의 흐름도이다.
도 7은 지정된 주소에 대한 2개의 변환 데이터 구조의 엔트리를 동기화시키는 프로세스의 일 실시예의 흐름도이다.
도 8은 VMM에 의해 유지되는 섀도 PT 계층구조의 작업 세트로부터 섀도 PT 계층구조를 제거하는 프로세스의 일 실시예의 흐름도이다.
도 9는 섀도 PT 계층구조의 PD에 엔트리를 추가하는 프로세스의 일 실시예의 흐름도이다.
도 10은 섀도 PT 계층구조의 PD로부터 엔트리를 제거하는 프로세스의 일 실시예의 흐름도이다.
도 11은 섀도 PT 계층구조의 PT에 엔트리를 추가하는 프로세스의 일 실시예의 흐름도이다.
도 12는 섀도 PT 계층구조의 PT로부터 엔트리를 제거하는 프로세스의 일 실시예의 흐름도이다.
도 13은 섀도 PT 계층구조의 PTE를 모니터링하는 프로세스의 일 실시예의 흐름도이다.
도 14는 섀도 PT 계층구조의 PTE로부터 모니터링을 제거하는 프로세스의 일 실시예의 흐름도이다.
가상 머신 환경에서 주소 변환을 지원하는 방법 및 장치가 기술되어 있다. 이하의 설명에서, 설명의 목적상, 본 발명의 철저한 이해를 제공하기 위해 수많은 구체적인 상세가 기재되어 있다. 그렇지만, 이 기술분야의 당업자에게는 본 발명이 이들 구체적인 상세 없이 실시될 수 있음은 명백할 것이다.
이하의 상세한 설명의 일부 부분들은 컴퓨터 시스템의 레지스터 또는 메모리 내에서의 데이터 비트에 대한 연산의 알고리즘 및 심볼 표현으로 제공되어 있다. 이들 알고리즘 설명 및 표현은 데이터 처리 분야의 당업자가 그의 연구의 내용을 다른 당업자에게 가장 효과적으로 전달하기 위해 사용되는 수단이다. 알고리즘은 여기서 일반적으로 원하는 결과를 가져오는 일관성있는 연산 시퀀스인 것으로 생각된다. 이들 연산은 물리적 양의 물리적 처리를 필요로 하는 것들이다. 반드시 그러한 것은 아니지만, 보통 이들 양은 저장, 전송, 결합, 비교 및 다른 방식으로 처리될 수 있는 전기 또는 자기 신호의 형태를 갖는다. 주로 통상적인 사용으로 인해, 이들 신호를 비트, 값, 요소, 심볼, 문자, 항, 숫자 등으로 언급하는 것이 때로는 편리한 것으로 밝혀졌다.
그렇지만, 유의할 점은 이들 및 유사한 용어의 전부가 적절한 물리적 양과 연관되어 있으며 이들 양에 적용되는 편리한 라벨에 불과하다는 것이다. 이하의 설명으로부터 명백한 바와 같이 다른 방식으로 구체적으로 언급되지 않는 한, 본 발명 전반에 걸쳐, "처리" 또는 "컴퓨팅" 또는 "계산" 또는 "결정" 등의 용어를 이용하는 설명은, 컴퓨터 시스템의 레지스터 및 메모리 내에서 물리적(전자적) 양으로 표현된 데이터를 처리하여 컴퓨터-시스템 메모리 또는 레지스터 또는 다른 이러한 정보 저장, 전송 또는 디스플레이 장치 내에서 물리적 양으로 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 동작 및 프로세스를 지칭할 수 있다는 것을 잘 알 것이다.
실시예들에 대한 이하의 상세한 설명에서는, 본 발명이 실시될 수 있는 구체적인 실시예들을 예로서 도시하고 있는 첨부 도면들을 참조한다. 도면들에서, 유사한 참조 번호들은 몇개의 도면에 걸쳐 실질적으로 유사한 구성요소들을 나타낸다. 이들 실시예는 당업자가 본 발명을 실시할 수 있을 정도로 충분히 상세히 기술되어 있다. 다른 실시예들이 이용될 수 있고, 본 발명의 범위를 벗어나지 않고 구조적, 논리적 및 전기적 변경이 행해질 수 있다. 게다가, 본 발명의 여러가지 실시예들이, 비록 서로 다르지만, 반드시 상호 배타적인 것은 아니라는 것을 잘 알 것이다. 예를 들어, 한 실시예에 기술된 특정의 특징, 구조 또는 특성이 다른 실시예들 내에 포함되어 있을 수 있다. 따라서, 이하의 상세한 설명은 제한적인 의미로 보아서는 안되며, 본 발명의 범위는 첨부된 청구항들 및 이러한 청구항과 동등한 자격이 있는 전범위의 등가물에 의해서만 정의된다.
이하의 예들이 실행 유닛 및 논리 회로와 관련하여 가상 머신 환경에서 주소 변환에 대한 지원을 제공하는 것을 기술할 수 있지만, 본 발명의 다른 실시예들은 소프트웨어에 의해 달성될 수 있다. 예를 들어, 어떤 실시예들에서, 본 발명은 본 발명에 따른 프로세스를 수행하도록 컴퓨터(또는 다른 전자 장치)를 프로그램하는 데 사용될 수 있는 명령어들을 저장하고 있는 머신 또는 컴퓨터 판독 가능한 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 다른 실시예들에서, 본 발명의 프로세스는 프로세스를 수행하기 위한 하드와이어드 논리(hardwired logic)를 포함하는 특정의 하드웨어 구성요소에 의해 또는 프로그램된 컴퓨터 구성요소 및 커스텀(custom) 하드웨어 구성요소의 임의의 조합에 의해 수행될 수 있다.
따라서, 머신 판독가능 매체는 머신(예를 들어, 컴퓨터)에 의해 판독가능한 형태로 정보를 저장 또는 전송하는 임의의 메커니즘을 포함할 수 있지만, 플로피 디스켓, 광디스크, CD-ROM(Compact Disc Read Only Memory), 및 광자기 디스크, ROM(Read Only Memory), RAM(Random Access Memory), EPROM(Erasable Programmable Read Only Memory), EEPROM(Electrically Erasable Programmable Read Only Memory), 자기 또는 광학 카드, 플래시 메모리, 인터넷을 통한 전송, 전기, 광학, 음향 또는 다른 형태의 전파 신호(예를 들어, 반송파, 적외선 신호, 디지털 신호 등) 등등으로 제한되지 않는다.
게다가, 설계는 생성에서 시뮬레이션, 제조까지 다양한 단계들을 거칠 수 있다. 설계를 표현하는 데이터는 다수의 방식으로 그 설계를 표현할 수 있다. 먼저, 시뮬레이션에서 유용한 바와 같이, 하드웨어는 하드웨어 기술 언어(hardware description language) 또는 다른 기능 기술 언어(functional description language)를 사용하여 표현될 수 있다. 게다가, 논리 및/또는 트랜지스터 게이트를 갖는 회로 레벨 모델이 설계 프로세스의 어떤 단계들에서 생성될 수 있다. 게다가, 대부분의 설계는, 어떤 단계에서, 하드웨어 모델에서의 여러가지 장치의 물리적 배치를 표현하는 데이터 레벨에 이른다. 종래의 반도체 제조 기술이 사용되는 경우에, 하드웨어 모델을 표현하는 데이터는 집적 회로를 생산하는 데 사용되는 마스크에 대한 서로 다른 마스크층 상의 여러가지 특징부의 존재 또는 부재를 규정하는 데이터일 수 있다. 임의의 설계 표현에서, 데이터는 임의의 형태의 머신 판독가능 매체에 저장될 수 있다. 이러한 정보를 전송하기 위해 변조되거나 다른 방식으로 생성된 광파 또는 전기파, 메모리, 디스크 등의 자기 또는 광학 저장장치는 머신 판독가능 매체일 수 있다. 이들 매체 중 임의의 것은 설계 또는 소프트웨어 정보를 "전달" 또는 "표시"할 수 있다. 코드 또는 설계를 표시 또는 전달하는 전기 반송파가 전송될 때, 그 전기 신호의 복사, 버퍼링 또는 재전송이 수행되는 경우, 새로운 복사본이 만들어진다. 따라서, 통신 제공업자 또는 네트워크 제공업자는 본 발명의 기술을 구현하는 물품(반송파)의 복사본을 만들 수 있다.
도 1은 본 발명이 동작할 수 있는 가상-머신 환경(100)의 일 실시예를 나타낸 것이다. 이 실시예에서, 베어 플랫폼 하드웨어(bare platform hardware)(116)는, 예를 들어, 표준 운영 체제(OS) 또는 가상 머신 모니터(VMM)(112)와 같은 VMM을 실행시킬 수 있는 컴퓨팅 플랫폼을 포함한다.
VMM(112)(일반적으로 소프트웨어로 구현됨)은 베어 머신 인터페이스(bare machine interface)를 에뮬레이트하여 상위 레벨 소프트웨어로 내보내기(export)할 수 있다. 이러한 상위 레벨 소프트웨어는 표준 또는 실시간 OS를 포함할 수 있거나, 제한된 운영 체제 기능을 갖는 고도로 축소된 운영 환경일 수 있거나, 전통적인 OS 기능을 포함하지 않을 수 있는 등일 수 있다. 다른 대안으로서, 예를 들어, VMM(112)은 다른 VMM 내에서 또는 그의 상부에서 실행될 수 있다. VMM은, 예를 들어, 하드웨어로, 소프트웨어로, 펌웨어로, 또는 여러가지 기술의 조합에 의해 구현될 수 있다.
플랫폼 하드웨어(116)는 퍼스널 컴퓨터(PC), 메인프레임, 핸드헬드 장치, 휴대형 컴퓨터, 셋톱 박스, 또는 임의의 다른 컴퓨팅 시스템일 수 있다. 플랫폼 하드웨어(116)는 프로세서(118) 및 메모리(120)를 포함한다.
프로세서(118)는, 마이크로프로세서, 디지털 신호 처리기, 마이크로컨트롤러 등과 같은, 소프트웨어를 실행할 수 있는 임의의 유형의 프로세서일 수 있다. 프로세서(118)는 본 발명의 방법 실시예의 실행을 수행하는 마이크로코드, 프로그램가능 논리 또는 하드코딩된 논리(hardcoded logic)를 포함할 수 있다. 도 1은 단지 하나의 이러한 프로세서(118)를 도시하고 있지만, 시스템 내에 하나 이상의 프로세서가 있을 수 있다.
메모리(120)는 하드 디스크, 플로피 디스크, RAM(예를 들어, 동적 RAM(DRAM) 또는 정적 RAM(SRAM)), ROM, 플래시 메모리, 상기 장치들의 임의의 조합, 또는 프로세서(118)에 의해 판독가능한 임의의 다른 유형의 머신 매체일 수 있다. 메모리(120)는 본 발명의 방법 실시예의 실행을 수행하는 명령어 및/또는 데이터를 저장할 수 있다.
VMM(112)은 하나 이상의 가상 머신(VM)의 추상화를 다른 소프트웨어(즉, "게스트" 소프트웨어)에 제공하며, 이는 여러가지 게스트에 동일한 또는 상이한 추상화를 제공할 수 있다. 도 1은 2개의 VM(102, 114)을 나타내고 있다. 각각의 VM 상에서 실행되는 게스트 소프트웨어는 게스트 OS(104 또는 106)와 같은 게스트 OS 및 여러가지 게스트 소프트웨어 애플리케이션(108, 110)을 포함할 수 있다. 게스트 OS(104, 106) 각각은, 게스트 OS(104 또는 106)가 실행되고 있는 VM(102, 114) 내의 물리적 자원(예를 들어, 프로세서 레지스터, 메모리 및 I/O 장치)에 액세스하고 다른 기능을 수행하게 된다. 예를 들어, 게스트 OS(104 또는 106)는, VM(102, 114)에 제공된 프로세서 및 플랫폼의 아키텍처에 따라, 모든 레지스터, 캐시, 구조, I/O 장치, 메모리 등에 액세스하게 된다. 게스트 소프트웨어에 의해 액세스될 수 있는 자원은 "특권(privileged)" 자원 또는 "비특권(non-privileged)" 자원으로 분류될 수 있다. 특권 자원에 있어서, VMM(112)은 이들 특권 자원에 대한 궁극적인 제어를 유지하면서 게스트 소프트웨어가 원하는 기능을 용이하게 해준다. 비특권 자원은 VMM(112)에 의해 제어될 필요가 없으며 게스트 소프트웨어에 의해 직접 액세스될 수 있다.
게다가, 각각의 게스트 OS는 예외(예를 들어, 페이지 결함(page fault), 일반 보호 결함(general protection fault) 등), 인터럽트(예를 들어, 하드웨어 인터럽트, 소프트웨어 인터럽트), 및 플랫폼 이벤트(예를 들어, 초기화(INIT) 및 시스템 관리 인터럽트(system management interrupt: SMI)) 등의 여러 가지 결함 이벤트를 처리하게 된다. 이들 결함 이벤트 중 일부는 "특권" 이벤트인데, 그 이유는 VM(102, 114)의 적절한 동작을 보장하기 위해 및 게스트 소프트웨어로부터의 그리고 이들 간의 보호를 위해 이들 이벤트가 VMM(112)에 의해 처리되어야만 하기 때문이다.
특권 결함 이벤트가 일어나거나 게스트 소프트웨어가 특권 자원에 액세스하려고 시도할 때, 제어가 VMM(112)으로 이전될 수 있다. 게스트 소프트웨어로부터 VMM(112)으로의 제어의 이전은 본 명세서에서 VM 이탈(VM exit)이라고 한다. 자원 액세스를 용이하게 해주거나 이벤트를 적절히 처리한 후에, VMM(112)은 제어를 게스트 소프트웨어로 반환할 수 있다. VMM(112)으로부터 게스트 소프트웨어로의 제어의 이전은 VM 진입(VM entry)이라고 한다.
일 실시예에서, 프로세서(118)는 가상 머신 제어 구조(virtual machine control structure: VMCS)(125)에 저장된 데이터에 따라 VM(102, 114)의 동작을 제어한다. VMCS(125)는 게스트 소프트웨어의 상태, VMM(112)의 상태, VMM(112)이 게스트 소프트웨어의 동작을 어떻게 제어하고자 하는지를 나타내는 실행 제어 정보, VMM(112)과 VM 간의 천이를 제어하는 정보 등을 포함할 수 있는 구조이다. 프로세서(118)는 VMCS(125)로부터 정보를 판독하여 VM의 실행 환경을 결정하고 그의 거동(behavior)을 제약한다. 일 실시예에서, VMCS는 메모리(120)에 저장되어 있다. 어떤 실시예들에서, 다수의 VM을 지원하기 위해 다수의 VMCS 구조가 사용된다.
주소 변환 동작 동안에, VM(102 또는 114)은 물리적 메모리를 할당하고, 게스트 소프트웨어 애플리케이션(예를 들어, 애플리케이션(108 또는 110))으로부터의 그리고 이들 간의 보호를 제공하며, 다양한 페이징 기술을 사용하는 등을 하게 된다. 비가상 머신 환경에서, OS에 의해 기대되는 주소 변환 메커니즘은 프로세서(118)에 의해 제어되는 변환 참조 버퍼(translation lookaside buffer: TLB)(122) 및 OS에 의해 제어되고 페이징이 인에이블(enable)되어 있을 때 가상 메모리 주소를 물리 메모리 주소로 변환하는 데 사용되는 페이지 테이블(page-table: PT) 계층구조 등의 변환 데이터 구조에 기초할 수 있다.
인텔
Figure 112007055063280-PCT00001
펜티엄
Figure 112007055063280-PCT00002
4 프로세서의 아키텍처는 다수의 페이징 모드를 지원한다. 가장 통상적으로 사용되는 페이징 모드는, 2-레벨 계층적 페이징 구조(본 명세서에서 2-레벨 계층구조 페이징 모드라고 함)를 사용하여 32-비트 선형 주소 공간을 지원한다. 본 발명의 실시예들은 이 페이징 모드로 제한되지 않으며, 그 대신에 다른 페이징 모드(예를 들어, 물리 주소 확장(Physical Address Extension: PAE) 모드, 인텔
Figure 112007055063280-PCT00003
확장 메모리 64 기술(Extended Memory 64 Technology: EM64T) 모드 등) 및 구현(예를 들어, 해쉬 페이지 테이블)을 가상화하기 위해 당업자에 의해 이용될 수 있다. TLB에 기초한 일 실시예에서, 가상 메모리 주소의 물리 메모리 주소로의 변환은 가상 주소의 상위 20 비트(4 KB 페이지 프레임의 경우) 또는 상위 10 비트(4 MB 페이지 프레임의 경우)를 사용하여 TLB(122)를 검색하는 것으로 시작한다. 일치가 발견되는 경우(TLB 히트), TLB(122)에 포함되어 있는 물리 페이지 프레임의 상위 비트는 가상 주소의 하위 비트와 결합되어 물리 주소를 형성한다. TLB는 또한 매핑과 연관된 액세스 및 퍼미션(permission) 속성도 포함하고 있다. 일치가 발견되지 않는 경우(TLB 미스), 프로세서는, (이어서, TLB(122)에 캐싱되는) 가상-물리 변환을 결정하기 위해 PT 계층구조를 조회한다. PT 계층구조 내의 엔트리는 어떤 액세스 시에 프로세서에 의해 자동적으로 설정되는 어떤 속성을 포함할 수 있다.
PT 계층구조가 수정되는 경우, 대응하는 주소 변환이 TLB(122)에 존재한다면 TLB(122)가 PT 계층구조와 부합하지 않게 될 수 있다. OS는 프로세서(118)에 명령어를 발행함으로써 이러한 불일치를 해결할 수 있게 될 수 있다. 예를 들어, 인텔
Figure 112007055063280-PCT00004
펜티엄
Figure 112007055063280-PCT00005
4의 명령어 세트 아키텍처(본 명세서에서 IA-32 ISA라고 함)에서, 프로세서는 INVLPG 명령어를 발행함으로써 소프트웨어로 하여금 TLB에서의 캐싱된 변환을 무효화할 수 있게 해준다. 게다가, OS는 주소 공간을 완전히 변경하도록 프로세서(118)에 요청할 수 있게 될 수 있으며, 그 결과 모든 변환이 TLB(122)로부터 제거된다. 예를 들어, IA-32 ISA에서, OS는 CR3(PT 계층구조의 기본 주소(base address)를 포함하고 있음)를 로드하도록 프로세서에 요청하기 위해 MOV 명령어 또는 작업 스위치(task switch)를 사용할 수 있으며, 그에 의해 모든 변환을 TLB로부터 제거할 수 있다. 페이지 테이블 계층구조의 서로 다른 레벨들은 모드 및 구현에 기초한 서로 다른 이름을 가질 수 있다. 2-레벨 계층구조 페이징 모드에서, 2개 레벨의 페이징 구조가 있다. CR3 레지스터는 페이지 디렉토리 페이지의 베이스를 가리킨다. 페이지 디렉토리 내의 엔트리는 대규모 페이지(예를 들어, 4MB 수퍼페이지, 2MB 수퍼페이지, 1GB 수퍼페이지 등)로의 매핑 또는 페이지 테이블에 대한 참조를 규정할 수 있다. 페이지 테이블은 소규모 페이지로의 매핑을 포함할 수 있다.
상기한 바와 같이, 가상-머신 환경에서, VMM(112)은 TLB(122)를 포함한 물리 자원에 대한 궁극적인 제어를 가질 수 있어야만 한다. 본 발명의 실시예들은 프로세서의 물리적 TLB의 기능을 에뮬레이트하는 가상 TLB를 사용함으로써 VM(102, 114)의 예상(expectation)과 VMM(122)의 역할 간의 충돌을 해결한다.
가상 TLB는 TLB(122), 및 VMM(112)에 의해 제어되는 섀도 PT 계층구조들의 세트를 포함한다. 섀도 PT 계층구조들의 세트는 그의 포맷 및 내용을, 현재 VM(102 또는 114)에 의해 사용될 수 있거나 사용될 수 없는 게스트 PT 계층구조로부터 도출한다. VM(102 또는 114)이 게스트 PT 계층구조의 내용을 수정하는 경우, 이 내용은 섀도 PT 계층구조의 내용과 불일치하게 된다. 게스트 PT 계층구조와 섀도 PT 계층구조 간의 불일치는 TLB(122)를 관리하는 데 프로세서(118)에 의해 이용되는 것과 유사한 기술들을 사용하여 해결된다. 이들 기술 중 일부는, VM(102 또는 114)이, TLB를 처리하려는 시도를 나타내는 이벤트(예를 들어, INVLPG, 페이지 결함, 및 CR3 로드)를 강제적으로 발행하게 한다. 이러한 이벤트는 특권 이벤트이며, 따라서 결과적으로 VMM(112)으로의 VM 이탈이 일어난다. VMM은 이어서 이벤트를 평가하고 필요한 경우 모든 유지된 섀도 PT 계층구조를 현재의 게스트 상태와 동기화시킨다. 유지된 섀도 PT 계층구조들의 세트를 작업 세트(working set)라고 부른다. 다수의 프로세스가 동일한 게스트 페이지 테이블을 사용할 수 있기 때문에, 동일한 섀도 PT가 다수의 게스트 PT 계층구조의 일부일 수 있다. 대응하는 섀도 PT는 다수의 섀도 PT 계층구조의 멤버가 된다.
유의할 점은 VMM에 의해 수행되는 동기화는 현재 사용 중이 아닌 섀도 PT 계층구조에 대한 섀도 페이지 테이블 또는 페이지 디렉토리 엔트리를 갱신할 수 있다는 것이다. 이와 마찬가지로, 사용 중인 게스트 PT 계층구조의 일부가 아닌 게스트 페이지에 대해 동기화가 요구될 수 있다.
일 실시예에서, VMM(112)은 가상 TLB(VTLB) 데이터 저장소(124) 내의 VM(102, 114) 각각에 대한 섀도 PT 계층구조의 작업 세트를 생성 및 유지하는 일을 맡고 있는 주소 변환 모듈(126)을 포함한다. VM(102 또는 114)의 대응하는 활성 프로세스(즉, 가까운 장래에 VM(102 또는 114)에 의해 활성화될 가능성이 있는 프로세스)에 대해 섀도 PT 계층구조의 작업 세트가 유지된다. IA32 ISA에 있어서, 유일한 명시적으로 정의된 게스트 계층 구조는 현재 사용되는 페이징 구조에 의해 정의되는 것이다. 실제로, 게스트 프로세스 및 그의 주소 공간에 상당한 시간적 집약성(temporal locality)이 있다. VMM은 일련의 활성 프로세스를 결정하기 위해 발견적 방법(heuristics) 또는 명확한 정보를 이용할 수 있다.
VM(102 또는 114)이 VM(102 또는 114)의 활성 프로세스 중 하나에 대해 게스트 PT 계층구조를 인에이블시킬 때, 주소 변환 모듈(126)은 작업 세트에서 대응하는 섀도 PT 계층구조를 식별하고 프로세서(118)에 그의 기본 주소를 로드하도록 요청한다. 적용가능한 경우, 주소 변환 모듈(126)은 이어서 섀도 PT 계층구조에 저장되어 있는 이전에 계산된 매핑을 재사용할 수 있다.
VM(102 또는 114)이 새로운 프로세스를 활성화시키는 경우, 주소 변환 모듈(126)은 대응하는 게스트 PT 계층구조로부터 새로운 섀도 PT 계층구조를 도출하고 이를 작업 세트에 추가한다. 다른 대안으로서, VM(102 또는 114)이 기존의 프로세스를 비활성화시키는 경우, 주소 변환 모듈(126)은 게스트 PT 계층구조에 대응하는 정보를 작업 세트로부터 제거한다.
일 실시예에서, 주소 변환 모듈(126)은 각각의 새로운 섀도 PT 계층구조로부터 메타데이터를 추출하는 일, 이 메타데이터를 VTLB 데이터 저장소(124)에 저장하는 일, 및 섀도 PT 계층구조가 수정될 때 메타데이터를 갱신하는 일을 맡고 있다. 일 실시예에서, 메타데이터는 PT 벡터(PTV), PD 벡터(PDV), 활성 PTE 리스트, 및 활성 PDE 리스트를 포함한다.
PTV 및 PDV는 PT 및 PD로서 사용되는 게스트 프레임을 추적한다. 일 실시예에서, 이 정보는 비트 벡터로 인코딩된다. PTV는 페이지 프레임 번호(page frame number: PFN)에 의해 색인될 수 있으며, 각각의 엔트리 비트는 대응하는 PFN이 PT인 경우에 세트된다. PDV는 페이지 프레임 번호(PFN)에 의해 색인될 수 있으며, 각각의 엔트리 비트는 대응하는 PFN이 PD인 경우에 세트된다.
활성 PTE 리스트는 PT 및 PD를 보유하는 프레임을 가리키는 섀도 PT 계층구조 내의 PT 엔트리(PTE)의 리스트이다. 활성 PDE 리스트는 활성 PTE 리스트에서 식별된 PT 엔트리를 포함하는 PT를 가리키는 섀도 PT 계층구조 내의 PD 엔트리(PDE)를 식별한다.
일 실시예에서, 활성 PDE 및 PTE 리스트는 그 매핑이 PD 또는 PT 프레임에 대한 것인지를 기술하는 부가적인 메타데이터를 포함한다.
당업자라면, 본 발명의 실시예들이 본 명세서에 기술된 것보다 더 공간 또는 시간 효율적일 수 있거나 그보다 덜 공간 또는 시간 효율적일 수 있는 다양한 데이터 구조를 사용할 수 있다는 것을 잘 알 것이다. 또한, 당업자라면, 부가적인 페이징 모드를 지원하기 위해 구조를 추적하는 것을 확장하는 것도 잘 알 것이다. 예를 들어, EM64T 페이지 모드는 4-레벨 계층구조 페이징 구조를 통해 64-비트 가상 주소를 물리 주소로 매핑한다. 가상 또는 물리 주소 공간에서 지원되는 실제 비트 수는 구현 의존적일 수 있으며 특정의 구현에서 64 비트보다 적을 수 있다. 이하에서 보다 상세히 기술하게 되는 바와 같이, EM64T 구현은 EM64T 페이징 구조에서 사용되는 부가적인 페이지 테이블을 추적하기 위해 페이지-맵 레벨 4(PML4) 페이지 벡터 및 페이지 디렉토리 포인터(page directory pointer: PDP) 페이지 벡터의 추가를 요구할 수 있다. 이와 마찬가지로, 당업자라면, 활성 PTE 리스트가 페이징 구조 내에서 사용되는 임의의 페이지(예를 들어, EM64T의 경우 PML4 또는 PDP 페이지)를 매핑하는 엔트리를 포함하도록 확장될 수 있다는 것을 잘 알 것이다.
일 실시예에서, 페이지 테이블을 통해 매핑되는 PD 및 PT 프레임의 수를 추적하기 위해 활성 PTE/PDE 리스트 메타데이터가 유지된다. 페이지당 매핑의 수가 0부터 증가되면, PT를 매핑하는 PDE가 활성 PDE 리스트에 추가되어야만 하고, 매핑의 수가 0으로 감소되면, 이 PT를 매핑하는 PDE가 활성 PDE 리스트로부터 제거되어야만 한다.
일 실시예에서, 주소 변환 모듈(126)은 이러한 동기화가 필요할 때 현재의 섀도 PT 계층구조를 현재의 게스트 PT 계층구조와 동기화시키는 일을 맡고 있다. 주소 변환 모듈(126)은 게스트 PT 계층구조 내의 어느 엔트리가 최근에 수정되었는지를 판정하고 이어서 그에 따라 섀도 PT 계층구조 내의 대응하는 엔트리를 갱신함으로써 동기화를 수행한다. 주소 변환 모듈(126)은 섀도 PT 계층구조로부터 추출된 메타데이터 및 섀도 PT 계층구조의 엔트리와 연관된 속성에 기초하여 게스트 PT 계층구조 내의 어느 엔트리가 최근에 수정되었는지를 판정한다. 일 실시예에서, 속성은 섀도 PT 계층구조 내의 PD 엔트리와 연관된 액세스 속성 및 섀도 PT 계층구조 내의 PT 엔트리와 연관된 갱신 속성을 포함한다.
도 2는 본 발명의 일 실시예에 따른 가상 TLB(204)의 동작을 나타낸 것이다. 가상 TLB(204)는 섀도 PT 계층구조(206) 및 물리적 TLB(208)로 표현된 섀도 변환 데이터 구조를 포함한다. 섀도 PT 계층구조(206)는 게스트 PT 계층구조(202)로 표현된 게스트 변환 데이터 구조로부터 그의 구조 및 내용을 도출한다. 일 실시예에서, VMM은 VM의 활성 프로세스에 대한 섀도 PT 계층구조의 작업 세트를 유지한다.
일 실시예에서, VM이 (예를 들어, IA-32 ISA에서 CR3 또는 작업 스위치에 MOV를 발행함으로써) 프로세서에 다른 게스트 PT 계층구조를 인에이블하라고 요청할 때, VMM으로 제어가 이전되고, VMM은 요청된 게스트 PT 계층구조(202)에 대응하는 섀도 PT 계층구조(206)의 기본 주소(214)를 로드하라고 프로세서에 명령한다. 어떤 실시예에서, 이 섀도 PT 계층구조(206)는, 이하에서 보다 상세히 기술하는 바와 같이, 관련 메타데이터 및 속성을 사용하여 게스트 PT 계층구조(202)와 동기화된다.
일 실시예에서, 가상 TLB는 섀도 PD 및 PT의 엔트리에 액세스 및 갱신 속성을 유지한다. 이들 속성은 또한 액세스드(accessed)(A) 비트 및 더티(dirty)(D) 비트라고도 한다. 일 실시예에서, 페이지 프레임이 게스트 소프트웨어에 의해 처음으로 액세스될 때, 프로세서는 섀도 PT 계층구조(206) 내의 대응하는 PT 엔트리 또는 PD 엔트리에 액세스드(A) 속성을 세트한다. 게스트 소프트웨어가 페이지 프레임을 기록하려고 시도할 때, 프로세서는 대응하는 섀도 PT 엔트리에 더티(D) 속성을 세트시킨다.
게스트 소프트웨어는 가상-물리 매핑의 변경, 퍼미션 등을 비롯하여 게스트 PT 계층구조(202)를 자유롭게 수정할 수 있다. 그에 따라, 섀도 PT 계층구조(206)가 게스트 PT 계층구조(202)와 항상 일치하는 것은 아닐 수 있다. 계층구조들(202, 206) 간의 불일치로 인해 문제가 발생하는 경우, 가상 TLB(204)를 물리 TLB로서 취급하는 게스트 OS는 관련 ISA에 의해 정의되는 동작을 수행하도록 프로세서에 요청함으로써 가상 TLB(204)를 변경하려고 시도한다. 예를 들어, IA-32 ISA에서, 이러한 동작은 INVLPG 명령어, CR3 로드, 페이징 활성화(CR0.PG의 수정), 전역적 페이징의 수정(CR4.PGE 비트의 토글링(toggling)) 등을 포함한다. 가상 TLB(204)를 변경하려고 시도하는 동작은 VMM에 의해 특권(예를 들어, VMCS에 저장된 대응하는 실행 제어를 사용함) 동작으로서 구성되고, 따라서 VMM으로의 VM 이탈이 일어난다. 그 다음에, VMM은 VM 이탈의 원인을 결정하고 필요한 경우 섀도 PT 계층구조(206)의 내용을 수정한다. 예를 들어, 게스트 OS에 의해 처리되어야만 하는 페이지 결함(예를 들어, 게스트 PT 계층구조(202)에 의해 허용되지 않는 액세스에 의해 야기되는 페이지 결함)으로 인해 VM 이탈이 일어나는 경우, 이 페이지 결함은 처리를 위해 게스트 OS로 주입된다. 다른 대안으로서, 계층구조들(202, 206)의 엔트리들 간의 불일치로부터 발생되는 페이지 결함(또는 INVLPG 등의 임의의 다른 동작들)으로 인해 VM 이탈이 일어나는 경우, 이하에서 보다 상세히 기술되는 바와 같이, VMM은 오래된 엔트리를 제거하거나, 새로운 엔트리를 추가하거나, 기존의 엔트리를 수정할 필요가 있을 수 있다. 게스트 PT 계층구조에 의해 야기되는 페이지 결함은 본 명세서에서 "실제(real)" 페이지 결함이라고 하고, 게스트 페이지 테이블의 직접적인 사용으로 인해 일어나지 않는 페이지 결함은 본 명세서에서 "유도된(induced)" 페이지 결함이라고 한다.
도 3a는 본 발명의 일 실시예에 따른, 2-레벨 계층구조 페이징 모드에서 섀도 PT 계층구조에 대한 메타데이터를 생성 및 유지하는 프로세스를 나타낸 것이다.
도 3a를 참조하면, 별개의 문자(문자 A 내지 W)로 식별되는 다수의 물리 페이지 프레임이 도시되어 있다. 어떤 게스트 페이지 프레임은 PD를 포함할 수 있다(예를 들어, 프레임 A). 다른 게스트 페이지 프레임은 PT를 포함할 수 있다(예를 들어, 프레임 A, B, C, L). 계층구조(302)는 게스트 PT 계층구조이다.
도 3a는 게스트 PT 계층구조(302)에 기초하여 생성된 섀도 PT 계층구조(304)를 나타낸 것이다. 게스트 PT 계층구조(302)에서의 각각의 PD 또는 PT는 섀도 PT 계층구조(304) 내에 대응하는 PD 또는 PT를 포함한다. 유의할 점은, 일반적으로 게스트 PT 내의 각각의 페이지에 대해 섀도 페이지가 필요하지 않다는 것이다. 어떤 실시예는, 사용 통계에 따라(예를 들어, 사용된 게스트 PT 페이지에 대한 섀도 페이지만을 생성함) 또는 자원 제약에 따라(예를 들어, 이용가능한 메모리에 기초하여 섀도 페이지들의 세트만을 유지함), 섀도 페이지를 제한하는 것으로 선택할 수 있다. 동일한 물리 프레임으로부터 도출된 PD 및 PT 테이블에 대해 개별적인 섀도 테이블이 유지된다. 예를 들어, 동일한 물리 프레임(314)으로부터 도출되는 PD(306) 및 PT(308)에 대해 개별적인 테이블(330, 332)이 유지된다. 섀도 PT 계층구조(304) 내의 PD 및 PT 엔트리는 게스트 프레임(314 내지 324)에 대한 변환된 매핑을 포함한다.
게스트 PT 계층구조(302)에서, 프레임(316, 318)은 PT(310, 312)로서 사용되고, 프레임(314)은 PD(306) 및 PT(308) 둘다로서 사용된다. 이러한 사용은 섀도 PT 계층구조(304) 아래에 도시된 페이지 프레임(314 내지 316) 내에 "PT" 및 "PD/PT"로 나타내어져 있다.
섀도 PT 계층구조(304)는 활성 PTE 리스트(342) 및 활성 PDE 리스트(344)와 연관되어 있다. 일 실시예에서, 활성 PTE 리스트(342)는 게스트 PT 계층구조(302)로부터의 PT 및 PD 페이지 프레임을 매핑하는 섀도 PT 계층구조(304) 내의 PT 엔트리를 식별한다. 상세하게는, 활성 PTE 리스트(342)는 페이지 프레임(314 내지 318)을 매핑하는 PT(332) 내의 엔트리를 식별한다. 일 실시예에서, 활성 PDE 리스트(344)는 활성 PTE 리스트(342)에서 식별되는 엔트리를 갖는 PT를 가리키는 섀도 PT 계층구조 내의 PD 엔트리를 식별한다. 상세하게는, 활성 PDE 리스트(344)는 PT(332)를 가리키는 PD(330) 내의 엔트리를 포함한다. 활성 PTE 리스트(342) 및 활성 PDE 리스트(344)는 섀도 PT 계층구조(304)의 메타데이터의 구성요소이다.
섀도 PT 계층구조(304)는 PT 비트 벡터(PTV)(362) 및 PD 비트 벡터(PDV)(364)와 연관되어 있다. 일 실시예에서, PTV(362)는 PT로서 사용되는 게스트 페이지 프레임을 추적한다. 상세하게는, PTV(362)는 게스트 PT 계층구조(302)에서 PT로서 사용되는 페이지 프레임(314 내지 318)을 포함한다. 일 실시예에서, PDV(364)는 PD로서 사용되는 게스트 페이지 프레임을 추적한다. 상세하게는, PDV(364)는 게스트 PT 계층구조(302)에서 PD로서 사용되는 페이지 프레임(314)을 포함한다. 일 실시예에서, PTV(362) 및 PDV(364)는 작업 세트 내의 모든 섀도 PT 계층구조를 나타내며, 작업 세트에서 섀도 페이지가 이용되는 용량을 추적한다(예를 들어, 게스트 PT에 대해 섀도 페이지가 할당되지 않은 경우, 게스트 PT 페이지가 게스트 페이징 구조에 나타나더라도, PTV는 게스트 PT 페이지를 반영하지 않는다).
일 실시예에서, 게스트 OS가 새로운 PT를 게스트 PT 계층구조(302)에 추가하는 경우, VMM은 (TLB 처리와 관계된 그 다음의 또는 차후의 VM 이탈 시에) 이 추가를 검출하고 대응하는 PT를 섀도 PT 계층구조(304)에 추가할 수 있다. 예를 들어, 프레임(319)으로부터 도출된 새로운 PT(352)가 게스트 PT 계층구조(302)에 추가되는 경우, 새로운 프레임(354)에 대한 매핑에 있어서, VMM은 변환된 매핑을 갖는 대응하는 PT(360)를 섀도 PT 계층구조(304)에 추가하고 이 변경을 반영하기 위해 메타데이터를 갱신할 수 있다. 상세하게는, VMM은 PT(332) 내의 엔트리 매핑 프레임(319)을 활성 PTE 리스트(342)에 추가하고 PD(330) 내의 PT(360)를 가리키는 엔트리를 활성 PDE 리스트(344)에 추가한다. 또한, VMM은 프레임(319)을 PTV(362)에 추가하고, 이 PTV(362)는 PT로서 사용되는 게스트 프레임(즉, 여기서 프레임(319))을 추적한다.
도 3b는 본 발명의 일 실시예에 따른, EM64T 페이징 모드에서 섀도 PT 계층구조에 대한 메타데이터를 생성 및 유지하는 프로세스를 나타낸 것이다.
도 3b를 참조하면, 페이징 구조의 베이스는 PML4 페이지(예를 들어, 프레임 A)이다. PML4 페이지에서의 각각의 엔트리는 PDP 페이지(예를 들어, 프레임 B 및 C)를 참조할 수 있다. PDP 페이지에서의 각각의 엔트리는 페이지 디렉토리(PD) 페이지(예를 들어, 프레임 D 또는 E)를 참조할 수 있고, 그의 각각의 엔트리는 페이지 테이블(PT) 페이지(예를 들어, 프레임 F, G, H 또는 I) 내의 페이지를 참조할 수 있다.
각각의 PML4, PDP, PD 또는 PT 페이지는 크기가 4KB일 수 있다. 32비트보다 큰 물리 주소 공간을 지원하기 위해, 32-비트 페이징 모드에 대해 엔트리 크기가 증가될 수 있다. 구체적으로는, 페이지당 512개 엔트리가 있을 수 있으며, 이는 적절한 엔트리를 선택하기 위해 각각의 레벨에서 9 비트의 가상 주소가 사용되어야 함을 요구한다. 이 선택자 크기는 앞서 기술된 4MB 대신에 2MB의 큰 페이지 크기를 가져올 수 있다.
일 실시예에서, EM64T 페이징 모드에서의 메타데이터의 생성은 몇개의 벡터, 활성 엔트리 리스트, 및 몇개의 활성 디렉토리 리스트의 발생을 포함한다. 이들 벡터는 PML4 페이지로서 사용되는 프레임을 식별하는 PML4V 벡터, PDP 페이지로서 사용되는 프레임을 식별하는 PDPV 벡터, PD 페이지로서 사용되는 프레임을 식별하는 PDV 벡터, 및 PT 페이지로서 사용되는 프레임을 식별하는 PTV 벡터를 포함한다. 활성 엔트리 리스트는 PML4, PDP, PD 또는 PT 페이지를 매핑하는 모든 매핑을 포함하는 활성 PTE 리스트이다. 활성 디렉토리 리스트는 섀도 구조에 대응하는 게스트 페이지가 액세스될 수 있는 하위 레벨 구조를 참조하는 상위 레벨 매핑 구조를 식별하는 리스트를 포함한다. 상세하게는, 활성 디렉토리 리스트는 활성 PTE 리스트 엔트리를 포함하는 페이지를 참조하는 그 PDE를 포함하는 활성 PDE 리스트, 활성 PDE 리스트 엔트리를 포함하는 PD를 참조하는 활성 PDPE 엔트리를 포함하는 활성 PDPE 리스트, 및 활성 PDPE 리스트 내의 요소들을 포함하는 PDP를 매핑하는 엔트리를 포함하는 활성 PML4E 리스트로 이루어져 있다.
일 실시예에서, 섀도 페이지 테이블의 동기화는 사용된 섀도 PT 계층구조와 연관된 활성 PML4E 리스트 내의 각각의 엔트리를 검사하는 것으로 시작한다. 엔트리가 액세스된 경우, 액세스된 PML4 엔트리에 대응하는 활성 PDPE 리스트 내의 각각의 요소가 검사되고, 이어서 처리는 앞서 기술된 바와 같이 계속된다.
대안적인 실시예에서, 계층구조의 상위 레벨 중 하나 이상에 대해 활성 리스트가 유지 및/또는 처리되지 않는다. 예를 들어, 최상위 페이징 구조에 단일의 엔트리만이 채워져 있는 시스템에서, 계층구조의 각각의 레벨에 대한 활성 리스트의 사용은 이 단일의 엔트리가 항상 액세스되게 하며, 그에 의해 계층구조 내의 하위 레벨에 요구되는 처리의 양을 감소시킬 수 없게 된다. 이 사용 모델을 수용하기 위해, 동기화는 그 대신에 계층구조에서 보다 아래에 있는 활성 리스트를 처리하는 것으로 시작할 수 있다. 예를 들어, 일 실시예에서, 활성 PDPE 리스트 요소가 먼저 처리되고, 이어서 사용된 섀도 PT 계층구조와 연관된 활성 PDE 리스트 요소 또는 활성 PTE 리스트 요소가 처리된다. 일 실시예에서, 동기화 시에 처리되는 초기 계층이 사전 결정되어 있을 수 있다. 다른 실시예에서, 처리될 초기 계층이 게스트의 페이지 테이블 사용의 동적 프로파일링에 의해 결정될 수 있다.
본 발명의 실시예들에서 여러가지 다른 페이징 모드가 사용될 수 있다. 예를 들어, IA-32는 32-비트 가상 주소가 더 큰 물리 주소로 매핑되는 부가적인 페이징 모드를 지원한다. 이 부가적인 동작 모드에서, 페이지 테이블 베이스 레지스터는 4개의 요소를 포함하는 PDP 페이지를 가리키도록 구성된다. 이 부가적인 동작 모드에서의 엔트리 크기 및 거동은 64-비트 가상 주소 모드에 대해 상기한 것과 유사하다. 이 부가적인 모드가 PML4 페이지를 사용하지 않기 때문에, PML4V 및 활성 PML4E 리스트가 필요하지 않다.
도 4는 게스트 변환 데이터 구조 및 섀도 변환 데이터 구조를 동기화시키는 프로세스(400)의 일 실시예의 흐름도이다. 이 프로세스는 하드웨어(예를 들어, 전용 로직, 프로그램가능 로직, 마이크로코드 등), 소프트웨어(범용 컴퓨터 시스템 또는 전용 머신 상에서 실행되는 것 등), 또는 이 둘의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일 실시예에서, 이 프로세스는 도 1의 주소 변환 모듈(126)에 의해 수행된다.
도 4를 참조하면, 프로세스(400)는 프로세싱 로직이 TLB의 처리에 관한 이벤트로 인해 VM으로부터 이전되는 제어를 받는 것으로 시작한다(처리 블록(402)). 이러한 이벤트의 예는 현재의 주소 공간을 변경하라는 요청(예를 들어, CR3 로드), TLB 내의 지정된 가상 주소에 대한 일관성없는 변환을 조정하라는 요청(예를 들어, INVLPG), 페이지 결함 등을 포함할 수 있다.
처리 블록(404)에서, 프로세싱 로직은 TLB의 처리에 관한 이벤트가 VM에 의해 처리되어야만 하는지 여부를 판정한다. 그러한 경우(예를 들어, 이벤트가 게스트 변환 데이터 구조에서의 잘못된 매핑으로 인해 야기된 페이지 결함인 경우), 그 이벤트를 처리하기 위해 제어가 VM으로 반환된다(처리 블록(406)). 그렇지 않은 경우, 프로세싱 로직은 그 이벤트가 지정된 잘못된 주소와 연관되어 있는지 여부를 판정한다(처리 블록(408)).
이벤트가 VM에 의해 처리될 필요가 없는 경우, 이는 지정된 잘못된 주소와 연관되어 있을 수 있다. 이러한 이벤트의 예는 잘못된 주소를 피연산자로 받는 INVLPG 명령어에 의해 야기되는 이벤트, 유도된 페이지 결함(예를 들어, 특정의 매핑과 관련하여 2개의 변환 데이터 구조 간의 불일치로 인해 발생되는 페이지 결함, 게스트 변환 데이터 구조에서 A/D 비트를 가상화할 필요에 의해 야기되는 페이지 결함 등)에 의해 야기된 이벤트 등을 포함할 수 있다. 이벤트가 지정된 잘못된 주소와 연관되어 있는 경우, 프로세싱 로직은 게스트 변환 데이터 구조와 부합하도록 하기 위해 지정된 주소에 대한 섀도 변환 데이터 구조에서 정정을 행한다(예를 들어, 지정된 주소에 대한 오래된 매핑을 제거하거나 지정된 주소에 대한 새로운 매핑을 추가한다)(처리 블록(410)). 지정된 주소에 대한 2개의 변환 데이터 구조의 엔트리들을 동기화시키는 프로세스의 일 실시예가 도 7과 관련하여 이하에서 보다 상세히 기술된다.
이벤트가 임의의 특정 주소와 연관되어 있지 않은 경우(예를 들어, 이벤트가 IA32에서의 모든 TLB 엔트리를 플러쉬하는 주소 공간을 변경하라는 VM의 요청에 의해 야기되는 경우), 프로세싱 로직은 게스트 변환 데이터 구조의 어느 엔트리가 수정되었는지를 판정한다(처리 블록(412)). 이 판정은 섀도 변환 데이터 구조로부터 추출된 메타데이터 및 섀도 변환 데이터 구조의 엔트리와 연관된 속성을 사용하여 행해진다(처리 블록(412)). 메타데이터는 섀도 변환 데이터 구조의 여러가지 레벨에 대한 벡터 및 활성 리스트를 포함한다. 섀도 변환 데이터 구조의 특정의 레벨에 대한 벡터는 게스트 변환 데이터 구조의 이 레벨에서 페이지로서 사용되는 프레임을 식별한다. 활성 리스트는 활성 엔트리 리스트 및 하나 이상의 활성 디렉토리 리스트를 포함한다. 활성 엔트리 리스트는 게스트 변환 데이터 구조를 형성하는 데 게스트에 의해 사용되는 페이지를 매핑하는 매핑을 포함한다. 활성 디렉토리 리스트는 섀도된 페이징 구조에 대응하는 게스트 페이지가 액세스될 수 있는 하위 레벨 구조를 참조하는 상위 레벨 매핑 구조를 식별한다. 상기한 바와 같이, 2-레벨 계층구조 페이징 모드에서, 일 실시예에서, 메타데이터는 벡터(PTV, PDV), 활성 엔트리 리스트(PTE 리스트), 및 활성 디렉토리 리스트(PDE 리스트)를 포함한다. EM64T 페이징 모드에서, 일 실시예에서, 메타데이터는 벡터(PTV, PDV, PDPV, PML4V), 활성 엔트리 리스트(PTE 리스트), 및 활성 디렉토리 리스트(활성 PDE 리스트, 활성 PDPE 리스트 및 활성 PML4E 리스트)를 포함한다.
메타데이터를 사용하여 게스트 변환 데이터 구조의 최근에 수정된 엔트리를 식별하는 프로세스의 일 실시예가 도 6과 관련하여 이하에서 보다 상세히 기술한다.
처리 블록(414)에서, 프로세싱 로직은 섀도 변환 데이터 구조 내의 대응하는 엔트리를 게스트 변환 데이터 구조의 수정된 엔트리와 동기화시킨다. 그에 따라, 프로세싱 로직은 섀도 변환 데이터 구조의 전체 내용을 다시 채우기보다는, 수정된 엔트리를 동기화시키기만 하면 된다.
일 실시예에서, 어떤 게스트 PD 및/또는 PT 내용을 마지막으로 동기화된 대로 유지하기 위해 추가의 저장 장치가 사용된다. 이것은 VMM으로 하여금 부가적인 재배치 또는 퍼미션 정보를 계산 또는 탐색하지 않고 어디에서 수정이 행해졌는지를 판정할 수 있게 해준다.
유의할 점은, 게스트 페이지 테이블에 대한 어떤 수정이 섀도 페이지 테이블에 대한 수정을 필요로 하지 않는다는 것이다. 예를 들어, 게스트 PT가 차후에 수정되는 매핑을 제공하지 않는 경우, 대응하는 섀도 PT에 대한 변경이 필요없다.
도 5 내지 도 14는 본 발명의 서로 다른 실시예에 따른 2-레벨 계층구조 페이징 모드를 사용하여 가상 머신 환경에서의 주소 변환을 지원하기 위해 수행되는 여러가지 프로세스를 나타낸 것이다. 이들 프로세스는 하드웨어(예를 들어, 전용 로직, 프로그램가능 로직, 마이크로코드 등), 소프트웨어(범용 컴퓨터 시스템 또는 전용 머신 상에서 실행되는 것 등), 또는 이 둘의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일 실시예에서, 이들 프로세스 각각은 도 1의 주소 변환 모듈(126)에 의해 수행된다.
도 5는 섀도 PT 계층구조 등의 섀도 변환 데이터 구조에 대한 메타데이터를 유지하는 프로세스(500)의 일 실시예의 흐름도이다.
도 5를 참조하면, 프로세스(500)는 프로세싱 로직이 게스트 PT 계층구조로부터 각각의 PD 또는 PT 페이지에 대한 섀도 페이지를 생성하는 것으로 시작한다(처리 블록(502)).
처리 블록(504)에서, 프로세싱 로직은 게스트 PT 계층구조에서 PD 또는 PT로서 사용되는 페이지 프레임을 추적한다. 일 실시예에서, 프로세싱 로직은 대응하는 PFN이 게스트 PT 계층구조 내의 PD인 경우 PDV 내의 엔트리를 세트시킨다. 이와 유사하게, 프로세싱 로직은 대응하는 PFN이 게스트 PT 계층구조 내의 PT인 경우 PTV 내의 엔트리를 세트시킨다.
처리 블록(506)에서, 프로세싱 로직은 (PD 또는 PT일 가능성이 있는 페이지를 식별하기 위해) DRAM 백업 페이지에 대한 매핑을 추적한다. 일 실시예에서, 프로세싱 로직은 반전 페이지 테이블(inverted page table, IPT) 및 반전 페이지 디렉토리(inverted page directory, IPD)를 사용하여 DRAM 기반 페이지에 대한 매핑을 추적한다. IPT는 데이터 페이지 프레임의 PFN에 의해 색인되며, 각각의 엔트리는 데이터 페이지 프레임을 매핑하는 PTE의 주소의 리스트를 포함한다. IPD는 페이지 테이블의 PFN에 의해 색인되고, 각각의 엔트리는 페이지 테이블로서 PFN을 참조하는 PDE의 주소의 리스트를 포함한다.
일 실시예에서, 처리 블록(508)에서, 프로세싱 로직은 게스트 PT 계층구조에서 4MB 페이지를 식별하고 대규모 페이지 매핑을 회피함으로써 장래의 동기화 시간을 감소시키기 위해 각각의 4MB 페이지에 대한 섀도 PT 계층구조에 페이지 테이블을 생성한다. 그렇지 않으면, 4MB 페이지의 갱신은 4MB 내의 모든 PD 및 PT 페이지의 동기화를 야기시킨다. 일 실시예에서, 반전 확장 테이블(inverted expansion table, IET)은 게스트 PT 계층구조 내의 어느 PDE가 4MB 페이지를 가리키는지를 추적하는 데 사용된다. IET는 PFN 및 속성 비트에 의해 색인되고, 모든 엔트리는 분해된 4MB 페이지를 가리키는 PDE를 열거하고 있다.
본 발명의 일 실시예에서, IPD는 요구되는 주소 변환 단계들을 최소화하기 위해 섀도 PFN의 주소에 의해 색인될 수 있다.
IA32에서, 메모리 유형 정보(예를 들어, 캐시가능성 정보)는 페이지를 매핑하는 PDE/PTE 내의 PAT 비트에 저장될 수 있다. 이 유형 정보는 페이지-테이블 포인터인 PDE에 포착되지 않는다. 따라서, 2개의 4MB 페이지가 서로 다른 PAT 속성을 갖는 동일한 페이지를 매핑했다면, 개별적인 페이지 테이블이 정확한 PAT 속성을 전달해야만 한다. 각각의 속성 세트에 대해 개별적인 확장 테이블을 사용함으로써 이 문제를 해결한다.
처리 블록(510)에서, 프로세싱 로직은 게스트 PT 계층구조에서 PD 또는 PT로서 사용되는 페이지를 매핑하는 섀도 PT 계층구조 내의 PTE를 식별하고 활성 PTE 리스트를 생성한다.
처리 블록(512)에서, 프로세싱 로직은 활성 PTE 리스트에서 식별된 PTE를 갖는 PT를 가리키는 섀도 PT 계층구조 내의 PDE를 식별하고 활성 PDE 리스트를 생성한다.
그 다음에, 처리 블록(514)에서, 게스트 OS가 게스트 PT 계층구조의 구조를 수정하는 경우(예를 들어, PD 또는 PT를 추가 또는 제거하는 경우), 프로세싱 로직은 그에 따라 상기 활성 PTE 및 PDE를 변경한다.
도 6은 주소 공간의 변경을 용이하게 해주는 프로세스(600)의 일 실시예의 흐름도이다. 유의할 점은, IA32에서 오래된 TLB 매핑을 강제로 플러쉬하기 위해 동일한 CR3 값이 재로드될 수도 있다는 것이다. CR3의 변경 또는 CR3 재로드를 위해 유사한 처리 단계들이 취해진다.
도 6을 참조하면, 프로세스(600)는 프로세싱 로직이 (예를 들어, CR3 로드 요청을 발행함으로써) 다른 게스트 PT 계층구조를 인에이블하라는 VM의 요청으로 인해 VM 이탈이 일어났는지를 판정하는 것으로 시작한다(처리 블록(602)).
그에 응답하여, 프로세싱 로직은 이들 PDE 중 어느 것이 액세스되었는지(액세스 값으로 설정된 액세스 속성을 갖는지)를 알아내기 위해 메타데이터의 활성 PDE 리스트에서 식별된 현재 사용 중인 섀도 PT 계층구조에 대응하는 모든 활성 PDE를 스캔하고(처리 블록(604)), 이어서 액세스된 PDE의 액세스 속성을 초기화한다(처리 블록(606)). IA32에서, 비-리프 페이징 테이블(non-leaf paging table)은 더티 비트를 지원하지 않는다. 액세스드 비트가 클리어(clear)인 경우, 4MB 영역 내의 어떤 페이지도 판독 또는 기록되지 않으며, 따라서 임의의 게스트 페이지 테이블 또는 페이지 디렉토리가 수정될 수 없다. 그렇지만, 액세스드 비트가 판독과 기록을 구분하지 않으며, 따라서 아무것도 수정되지 않는 것이 가능할지라도 액세스된 4MB 영역이 추가로 처리되어야만 한다. 비-리프 페이지 테이블에 대한 더티 비트를 지원하는 아키텍처에서, 그 대신에 더티 비트가 검사되고, 기록된 영역만이 추가적인 처리를 필요로 한다.
그 다음에, 각각의 액세스된 PDE에 대해, 프로세싱 로직은 이들 PTE 중 어느 것이 갱신된 페이지에 대한 매핑을 포함하고 있는지(갱신 값으로 설정된 갱신 속성을 갖는지)를 알아내기 위해 메타데이터의 활성 PTE 리스트 내의 액세스된 활성 PDE에 대응하는 모든 섀도 PTE를 스캔한다(처리 블록(608)).
게다가, 각각의 갱신된 페이지에 대해, 프로세싱 로직은 게스트 PT 계층구조 내의 PD/PT 엔트리를 섀도 PT 계층구조 내의 대응하는 엔트리와 비교하고(처리 블록(610)), (예를 들어, 게스트 PT 계층구조에 없는 PTE/PDE를 섀도 PT 계층구조로부터 제거, 게스트 PT 계층구조에 최근에 추가된 새로운 PTE/PDE를 섀도 PT 계층구조에 추가 등에 의해) 게스트 PT 계층구조의 수정된 엔트리와 부합하도록 섀도 PT 계층구조의 대응하는 엔트리를 변경한다(처리 블록(612)). 유의할 점은, PDE를 추가하는 것이 부가적인 섀도 PT의 할당 및 초기화를 필요로 할 수 있다는 것이다. 이것은 주소 변환 모듈(126)에 의해 유지되는 여러가지 메타데이터 구조에 대한 갱신을 필요로 할 수 있다.
처리 블록(614)에서, 프로세싱 로직은 갱신 값으로 설정된 갱신 속성을 초기화한다. 갱신된 매핑은 게스트 OS에 의해 수정된 페이지를 식별한다.
처리 블록(616)에서, 프로세싱 로직은 수정된 게스트 페이지에 기초하여 섀도 매핑을 동기화하고 상기한 수정으로 인해 필요한 경우 메타데이터를 갱신한다.
처리 블록(618)에서, 프로세싱 로직은 VMM에 의해 유지되는 작업 세트가 VM에 의해 요청되는 새로운 게스트 PD에 대응하는 섀도 PD를 포함하는지 여부를 판정한다. 그러한 경우, 프로세싱 로직은 이 섀도 PT 계층구조의 기본 주소를 로드하도록 프로세서에 요청한다(처리 블록(620)). 그렇지 않은 경우, 프로세싱 로직은 요청된 게스트 PT 계층구조에 대응하는 새로운 섀도 PT 계층구조를 할당하고(처리 블록(622)), 새로운 섀도 PT 계층구조의 PD를 PDV에 추가하며(처리 블록(624)), 각각의 유효한 PDE를 새로운 섀도 PT 계층구조의 PD에 추가하고(처리 블록(626)), PD 커버리지(coverage)를 위해 이 PD를 매핑하는 PTE를 모니터링하도록 활성 PDE 및 PTE 리스트를 구성하며(처리 블록(628)), 이어서 이 섀도 PT 계층구조의 기본 주소를 로드하도록 프로세서에 요청한다(처리 블록(620)). PTE를 모니터링하는 프로세스의 일 실시예가 도 13과 관련하여 이하에서 보다 상세히 기술된다.
도 7은 지정된 주소에 대한 2개의 변환 데이터 구조의 엔트리를 동기화시키는 프로세스(700)의 일 실시예의 흐름도이다. 프로세스(700)는, 예를 들어, VM에 의해 발행된 INVLPG 명령어의 결과로서 또는 유도된 페이지 결함의 결과로서 수행될 수 있다.
도 7을 참조하면, 프로세스(700)는 프로세싱 로직이 지정된 주소에 대한 섀도 PT 계층구조에서의 매핑이 오래된 것인지(즉, 게스트 페이지 테이블의 현재의 내용에 대응하지 않는 유효한 매핑이 있는지)를 판정하는 것으로 시작한다(처리 블록(702)). 그렇지 않은 경우, 프로세싱 로직은 처리 블록(712)으로 진행한다. 그러한 경우, 프로세싱 로직은 오래된 엔트리가 PD 또는 PT 페이지를 매핑하였는지를 판정한다(처리 블록(704)). 오래된 엔트리가 PD 또는 PT 페이지를 매핑하지 않은 경우, 프로세싱 로직은 오래된 엔트리를 제거하고(처리 블록(710)) 처리 블록(712)으로 진행한다.
오래된 엔트리가 PD 또는 PT 페이지를 매핑한 경우, 프로세싱 로직은 또한 매핑된 페이지가 갱신되었는지 여부를 판정한다(처리 블록(706)). 그렇지 않은 경우, 프로세싱 로직은 처리 블록(710)으로 진행한다. 그러한 경우, 프로세싱 로직은 수정된 PD 또는 PT 섀도(들)를 갱신, 동기화, 또는 제거하고(처리 블록(708)) 처리 블록(710)으로 진행한다. 일 실시예에서, 페이지는 장래의 동기화를 위해 마킹된다.
처리 블록(712)에서, 프로세싱 로직은 게스트 PT 계층구조가 지정된 주소에 대한 새로운 매핑을 포함하고 있는지 여부를 판정한다. 그렇지 않은 경우, 프로세스(700)가 종료된다. 그러한 경우, 프로세싱 로직은 새로운 매핑을 대응하는 PTE 또는 PDE로서 추가하고, 필요한 경우, 섀도 페이지를 생성하며 그 추가에 따라 메타데이터를 갱신한다(처리 블록(714)).
도 8은 VMM에 의해 유지되는 섀도 PT 계층구조의 작업 세트로부터 섀도 PT 계층구조를 제거하는 프로세스(800)의 일 실시예의 흐름도이다.
섀도 PT 계층구조는 VM에 의한 대응하는 프로세스의 비활성화를 검출할 시에 작업 세트로부터 제거될 수 있다. 이 비활성화는 관련 OS에 대해 정의된 발견적 방법을 사용하여 또는 현재의 주소 공간과 관련하여 게스트 VM의 거동에 의해 제공되는 단서에 기초한 일련의 검사를 이용하여 검출될 수 있다. VM이 OS 또는 드라이버가 VMM에 비활성화를 통지하는 인터페이스를 지원하는 경우, 발견적 방법이 회피될 수 있다. 섀도 PT 계층구조는 또한 자원 제약으로 인해, 예를 들어, 섀도 구조에 사용되는 메모리의 양이 목표 문턱값을 초과하기 때문에, 제거될 수 있다.
도 8을 참조하면, 프로세싱 로직은 섀도 PT 계층구조 내의 PD로부터 각각의 유효한 PDE를 제거하는 것으로 시작한다(처리 블록(802)).
처리 블록(804)에서, 프로세싱 로직은 PDV 내의 대응하는 엔트리를 클리어시킨다.
처리 블록(806)에서, 프로세싱 로직은 PD 페이지를 할당 해제하고 PD 변환 테이블(PDTT)로부터 변환을 제거한다. PDTT는 페이지의 주소 및 유형(예를 들어, PD 또는 PT)을 추적하는 데 사용된다. PDTT는 게스트 PFN에 의해 색인되고, 각각의 엔트리는 물리적 PFN 및 메타데이터를 포함하고 있다.
처리 블록(808)에서, 프로세싱 로직은 PD를 매핑하는 PTE로부터 모니터링을 제거한다. PTE로부터 모니터링을 제거하는 프로세스의 일 실시예가 도 14와 관련하여 이하에서 보다 상세히 기술된다.
도 9는 섀도 PT 계층구조의 PD에 엔트리를 추가하는 프로세스(900)의 일 실시예의 흐름도이다. 설명을 위해, 페이지 테이블을 매핑하는 현재의 엔트리를 고려하기로 한다.
도 9를 참조하면, 프로세싱 로직은 PDE에 대한 엔트리를 IPD에 추가하는 것으로 시작한다(처리 블록(902)).
처리 블록(904)에서, 프로세싱 로직은 이 PDE에 의해 매핑되는 PT가 PTV에 세트되어 있는지를 판정한다. 그러한 경우, 적절한 섀도 PT가 PTTT에서 탐색되고(처리 블록(916)), 새로운 섀도 PDE가 생성되며(처리 블록(914)), 프로세스(900)가 종료된다. 그렇지 않은 경우, 프로세싱 로직은 PTV 내의 대응하는 벡터를 세트시키고(처리 블록(906)), 섀도 페이지를 할당하고 변환을 초기화하며(처리 블록(908)), 새로운 섀도 페이지 테이블을 채우고(처리 블록(910)), 현재의 게스트 PDE에 의해 페이지 테이블로서 사용되는 게스트 페이지가 모니터링되는 것을 반영하기 위해 활성 PTE/PDE 리스트들 및 메타데이터를 갱신하며(처리 블록(912)), 새로운 PDE를 추가하여, 섀도 페이지 테이블이 임의의 활성 PTE 리스트 요소를 포함하는 경우 이를 활성 PDE 리스트에 추가한다(처리 블록(914)). PTE를 모니터링하는 프로세스의 일 실시예가 도 13과 관련하여 이하에서 보다 상세히 기술된다.
도 10은 섀도 PT 계층구조의 PD로부터 엔트리를 제거하는 프로세스(1000)의 일 실시예의 흐름도이다.
도 10을 참조하면, 프로세싱 로직은 IPD PDE 리스트로부터 이 PDE에 대한 엔트리를 제거하는 것으로 시작한다(처리 블록(1002)). PDE가 활성 PDE 리스트에 있는 경우, 활성 PDE 리스트는 갱신되어야만 한다.
처리 블록(1004)에서, 프로세싱 로직은 PDE가 대응하는 PT를 매핑하는 마지막 엔트리이었는지를 판정한다. 그렇지 않은 경우, 프로세스(1000)는 종료한다. 그러한 경우, 프로세싱 로직은 PTV 내의 PT에 대한 엔트리를 클리어시키고(처리 블록(1006)), 각각의 유효한 PTE를 제거하며(처리 블록(1008)), PT 커버리지를 위해 이 PT를 매핑하는 활성 PTE/PDE 리스트를 갱신하고(처리 블록(1010)), 섀도 페이지 변환을 제거하며 PT 섀도 페이지를 저장하는 데 사용된 메모리를 해제시킨다(처리 블록(1012)).
도 11은 섀도 PT 계층구조의 PT에 엔트리를 추가하는 프로세스(1100)의 일 실시예의 흐름도이다.
도 11을 참조하면, 프로세싱 로직은 IPT에 이 PTE에 대한 엔트리를 추가하는 것으로 시작한다(처리 블록(1102)).
처리 블록(1106)에서, 프로세싱 로직은 섀도 매핑을 생성하고 처리 블록(1108)으로 진행한다.
처리 블록(1108)에서, 프로세싱 로직은 PDV 또는 PTV 내의 대응하는 엔트리가 세트되어 있는지 여부를 판정한다. 그렇지 않은 경우, 프로세스(1100)는 종료된다. 그러한 경우, 프로세싱 로직은 이 엔트리를 활성 PTE 리스트에 추가하고, 그것이 PD 및/또는 PT 페이지를 매핑하는지를 나타내는 연관된 메타데이터를 갱신한다(처리 블록(1110)). 이제 막 생성된 활성 PTE 엔트리가 이 페이지 테이블에 대한 첫번째 것인 경우, IPD가 고려(consult)되어야 하고, 이 페이지 테이블 페이지를 매핑하는 각각의 PDE가 활성 PDE 리스트에 추가되어야만 한다.
도 12는 섀도 PT 계층구조의 PT로부터 엔트리를 제거하는 프로세스(1200)의 일 실시예의 흐름도이다.
도 12를 참조하면, 프로세싱 로직은 이 PTE가 PDV 또는 PTV에 세트된 페이지를 매핑하는지를 판정하는 것으로 시작한다(처리 블록(1202)). 그렇지 않은 경우, 프로세싱 로직은 처리 블록(1206)으로 진행한다. 그러한 경우, 프로세싱 로직은 활성 PTE 리스트로부터 PTE를 제거한다. 이것이 PT 내의 마지막 활성 PTE 리스트 요소인 경우, 이 PT를 참조하는 PDE는 활성 PDE 리스트로부터 제거되고(처리 블록(1204)), 처리 블록(1206)으로 진행한다.
처리 블록(1206)에서, 프로세싱 로직은 IPT로부터 대응하는 엔트리를 제거한다.
도 13은 섀도 PT 계층구조의 PTE를 모니터링하는 프로세스(1300)의 일 실시예의 흐름도이다. 도 13에 나타낸 단계들은 데이터 페이지로서 매핑된 페이지가 페이지 디렉토리 또는 페이지 테이블 페이지로서 사용되고 있음을 모니터가 인식할 때 요구될 수 있는 처리를 나타낸 것이다. 따라서, 이 프로세스는 PTE에 의해 매핑되는 페이지에 대한 상태 변화에 의해 트리거(trigger)된다.
도 13을 참조하면, 프로세싱 로직은 PTE가 활성 PTE 리스트에서 식별되었는지를 판정하는 것으로 시작한다(처리 블록(1302)). 그러한 경우, 프로세싱 로직은 이전에 없었던 커버리지를 추가한다(처리 블록(1304)). 이 흐름은 매핑된 페이지의 상태 변화에 의해 트리거된다. 이 PTE가 이미 활성 PTE 리스트에 있기 때문에, 이 PTE가 PT 또는 PD로서 이전에 사용 중에 있었음이 분명하며, 이제는 다른 용량에서도 사용된다. 이러한 정보는 엔트리와 함께 또는 관련 메타데이터에 명시적으로 저장될 수 있다. PTE가 활성 PTE 리스트에 없는 경우, 프로세싱 로직은 PTE를 활성 PTE 리스트에 추가하고 그에 따라 메타데이터를 갱신한다(처리 블록(1306)).
그 다음에, 처리 블록(1308)에서, 프로세싱 로직은 PTE가 이 PT에 대한 첫번째 활성 PTE 리스트 엔트리인지 여부를 판정한다. 그렇지 않은 경우, 프로세스(1300)는 종료한다. 그러한 경우, 프로세싱 로직은 (IPD를 통해 발견되는 바와 같이) 이 PT를 매핑하는 엔트리들을 활성 PDE 리스트에 추가한다(처리 블록(1310)).
도 14는 섀도 PT 계층구조의 PTE에 의해 제공되는 모니터링 커버리지를 감소시키는 프로세스(1400)의 일 실시예의 흐름도이다. 이 프로세스는, 프로세스가 작업 세트로부터 제거되거나 페이지 테이블을 참조하는 마지막 PDE가 제거될 때 호출될 수 있으며, 그 결과 이전에 모니터링된 페이지 디렉토리 또는 페이지 테이블 페이지의 상태 변화가 있게 된다.
도 14를 참조하면, 프로세싱 로직은 이 PTE가 페이지 테이블 및 페이지 디렉토리 페이지 둘다이었던 페이지를 모니터링했는지를 판정하는 것으로 시작한다(처리 블록(1402)). 그러한 경우, 프로세싱 로직은 커버리지 레벨을 감소시켜 PTE가 지금 페이지를 PT 또는 PD의 둘다가 아닌 어느 하나로서 모니터링하고 있음을 나타낸다(처리 블록(1404)). 그렇지 않은 경우, 프로세싱 로직은 활성 PTE 리스트로부터 PTE를 제거한다(처리 블록(1406)). 유의할 점은, PTE가 단일의 용량에서의 그의 사용에 대해 추적된 페이지에 대한 요소였다면, 페이지가 더 이상 모니터링을 필요로 하지 않음에 틀림없다.
그 다음에, PT 내의 마지막 활성 PTE 리스트 요소가 제거된 경우(처리 블록(1408)), 프로세싱 로직은 (IPD를 통해 발견되는 바와 같이) 이 페이지 테이블을 매핑한 대응하는 엔트리들을 활성 PDE 리스트로부터 제거한다(처리 블록(1410)).
상기한 바와 같이, 물리 또는 가상 플랫폼은 다수의 프로세서를 포함할 수 있다. 각각의 프로세서는 하나 이상의 쓰레드(thread) 또는 논리 프로세서를 포함할 수 있다. 전술한 프로세스는, 단일-쓰레드 VM을 지원하는 단일-쓰레드 시스템에서, 또는 각각이 단일의 가상 논리 프로세서를 포함하는 하나 이상의 VM을 지원하는 다수의 논리 프로세서를 갖는 물리적 시스템에서 사용될 수 있다. 유의할 점은, 각각의 VM이 그 자신의 일련의 메타데이터, 섀도 페이지 테이블 등을 가지며 동기화 단계들이 주어진 VM으로 제한된다는 것이다.
따라서, 가상 머신 환경에서 주소 변환을 지원하는 방법 및 장치가 기술되어 있다. 이상의 설명이 제한이 아닌 예시적인 것임을 잘 알 것이다. 이상의 설명을 읽고 이해한 이 기술분야의 당업자에게는 많은 다른 실시예들이 명백할 것이다. 따라서, 본 발명의 범위는 첨부된 청구항들 및 이러한 청구항과 동등한 자격이 있는 전범위의 등가물에 의해 결정되어야만 한다.

Claims (30)

  1. TLB(translation-lookaside buffer)에 관한 특권 이벤트(privileged event)로 인해 가상 머신(virtual machine: VM)으로부터 이전된 제어를 받는 단계,
    가상 머신 모니터(virtual machine monitor: VMM)에 의해 유지되는 섀도 변환 데이터 구조(shadow translation data structure)로부터 추출된 메타데이터 및 상기 섀도 변환 데이터 구조 내의 엔트리들과 연관된 속성들에 기초하여, 게스트 변환 데이터 구조(guest translation data structure) 내의 어느 엔트리들이 상기 VM에 의해 수정되었는지를 판정하는 단계, 및
    상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들에 대응하는 상기 섀도 변환 데이터 구조 내의 엔트리들을, 상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들과 동기화시키는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 게스트 변환 데이터 구조는 주소 변환 동작들을 위해 상기 VM에 의해 사용되고,
    상기 섀도 변환 데이터 구조의 내용은 상기 TLB에 주소 변환들을 캐싱하기 위해 프로세서에 의해 사용되는 방법.
  3. 제1항에 있어서,
    섀도 변환 데이터 구조들의 작업 세트(working set)를 유지하는 단계 - 상기 작업 세트 내의 각각의 섀도 변환 데이터 구조는 상기 VM의 복수의 활성 프로세스 중 하나와 연관되어 있음 -, 및
    상기 복수의 활성 프로세스 중 하나와 연관된 게스트 변환 데이터 구조가 인에이블(enable)되어 있을 때 상기 복수의 활성 프로세스 중 상기 하나와 연관되는 상기 작업 세트로부터의 섀도 변환 데이터 구조의 내용을 재사용하는 단계
    를 더 포함하는 방법.
  4. 제3항에 있어서,
    상기 특권 이벤트는 다른 게스트 변환 데이터 구조를 인에이블하라는 상기 VM의 요청, 상기 게스트 변환 데이터 구조의 엔트리들과 상기 섀도 변환 데이터 구조의 엔트리들 간의 하나 이상의 불일치(inconsistency)에 의해 야기되는 페이지 결함(page fault), 및 TLB 내의 하나 이상의 주소 변환을 무효화시키라는 상기 VM의 요청 중 임의의 하나인 방법.
  5. 제3항에 있어서,
    상기 특권 이벤트가 페이지 결함, INVLPG 명령어, 및 새로운 게스트 변환 데이터 구조를 인에이블하라는 요청 중 임의의 하나임을 판정하는 단계,
    상기 새로운 게스트 변환 데이터 구조에 기초하여 새로운 섀도 변환 데이터 구조를 생성하는 단계, 및
    상기 새로운 섀도 변환 데이터 구조로부터 메타데이터를 도출하는 단계
    를 더 포함하는 방법.
  6. 제3항에 있어서,
    상기 VM의 상기 복수의 활성 프로세스 중 하나가 비활성화되어 있음을 판정하는 단계, 및
    상기 작업 세트로부터, 비활성화되어 있는 상기 활성 프로세스와 연관된 섀도 변환 데이터 구조를 제거하는 단계
    를 더 포함하는 방법.
  7. 제3항에 있어서,
    상기 섀도 변환 데이터 구조들 중 하나가 더 이상 사용되지 않음을 판정하는 단계, 및
    상기 작업 세트로부터 상기 섀도 변환 데이터 구조들 중 상기 하나를 제거하는 단계
    를 더 포함하는 방법.
  8. 제1항에 있어서,
    상기 메타데이터는 벡터들의 세트, 활성 엔트리 리스트, 및 하나 이상의 활 성 디렉토리 리스트를 포함하는 방법.
  9. 제8항에 있어서,
    상기 세트 내의 각각의 벡터는 상기 게스트 변환 데이터 구조의 대응하는 레벨에서 페이지들로서 사용되는 프레임들을 식별하고,
    상기 활성 엔트리 리스트는, 섀도 변환 데이터 구조가 존재하는 상기 게스트 변환 데이터 구조를 형성하는 데 사용되는 페이지들을 매핑하는 매핑들을 식별하며,
    상기 하나 이상의 활성 디렉토리 리스트는, 상기 섀도 변환 데이터 구조가 액세스될 수 있는 하위 레벨 구조를 참조하는 상위 레벨 매핑 구조들을 식별하는 방법.
  10. 제9항에 있어서,
    상기 활성 엔트리 리스트는 활성 페이지 테이블(page table: PT) 엔트리 리스트이고, 상기 활성 PT 엔트리(PT entry: PTE) 리스트는 상기 게스트 변환 데이터 구조로부터의 PT 페이지들 및 PD 페이지들을 매핑하는 상기 섀도 변환 데이터 구조 내의 PTE들을 식별하며,
    상기 하나 이상의 활성 디렉토리 리스트는 활성 페이지 디렉토리(page directory: PD) 엔트리 리스트를 포함하고, 상기 활성 PD 엔트리(PD entry: PDE) 리스트는 상기 활성 PTE 리스트로부터의 상기 PTE들을 갖는 PT들을 가리키는 상기 섀도 변환 데이터 구조 내의 PDE들을 식별하는 방법.
  11. 제9항에 있어서,
    상기 활성 엔트리 리스트는 활성 페이지 테이블(PT) 엔트리 리스트이고, 상기 활성 PT 엔트리(PTE) 리스트는 페이지 맵 레벨 4(page map level 4: PML4) 페이지들, 페이지 디렉토리 포인터(page directory pointer: PDP) 페이지들, 페이지 디렉토리(PD) 페이지들 및 PT 페이지들 중 임의의 것을 매핑하는 매핑들을 식별하며,
    상기 하나 이상의 활성 디렉토리 리스트는 활성 PTE 리스트 엔트리들을 갖는 페이지를 참조하는 PDE들을 포함하는 활성 PD 엔트리(PDE) 리스트, 활성 PDE 리스트 엔트리를 갖는 PD를 참조하는 활성 PDPE 엔트리들을 포함하는 활성 PDP 엔트리(PDPE) 리스트, 및 상기 활성 PDPE 리스트로부터의 요소들을 갖는 PDP를 매핑하는 엔트리들을 포함하는 활성 PML4E 엔트리(PML4E) 리스트를 포함하는 방법.
  12. 제10항에 있어서,
    상기 섀도 변환 데이터 구조 내의 엔트리들과 연관된 상기 속성들은, 상기 섀도 변환 데이터 구조 내의 PDE들과 연관된 액세스 속성들 및 상기 섀도 변환 데이터 구조 내의 PTE들과 연관된 갱신 속성들을 포함하는 방법.
  13. 제12항에 있어서,
    상기 게스트 변환 데이터 구조 내의 어느 엔트리들이 상기 VM에 의해 수정되 었는지를 판정하는 단계는,
    액세스 값으로 설정된 액세스 속성들을 갖는, 동기화되어 있는 상기 활성 PT 계층구조에 대응하는 상기 활성 PDE 리스트로부터 하나 이상의 PDE를 식별하는 단계, 및
    상기 식별된 PDE들 각각에 대해, 갱신 값으로 설정된 갱신 속성들을 갖는 상기 활성 PTE 리스트로부터 대응하는 PTE들을 찾는 단계
    를 포함하는 방법.
  14. 제13항에 있어서,
    상기 액세스 속성들을 초기화하는 단계, 및
    상기 갱신 속성들을 초기화하는 단계
    를 더 포함하는 방법.
  15. 주소 변환 동작들을 위해 게스트 운영 체제에 의해 사용되는 게스트 PT 계층구조에 기초하여 섀도 페이지 테이블(PT) 계층구조를 생성하는 단계, 및
    상기 섀도 PT 계층구조 내에 표현되어 있는 상기 게스트 PT 계층구조의 어느 엔트리들이 수정되었는지를 차후에 판정하기 위해 상기 섀도 PT 계층구조로부터 메타데이터를 도출하는 단계
    를 포함하며,
    상기 메타데이터는 상기 게스트 운영 체제에 의해 상기 게스트 PT 계층구조 를 형성하는 데 사용되는 페이지들을 매핑하는 맵핑들을 식별하는 활성 엔트리 리스트, 및 상기 섀도 PT 계층구조가 액세스되는 하위 레벨 구조를 참조하는 상위 레벨 매핑 구조들을 식별하는 하나 이상의 활성 디렉토리 리스트를 포함하는 방법.
  16. 제15항에 있어서,
    상기 활성 엔트리 리스트는 상기 게스트 PT 계층구조로부터의 PT 페이지들 및 페이지 디렉토리(PD) 페이지들을 매핑하는, 상기 섀도 PT 계층구조 내의 PTE들을 식별하는 활성 PT 엔트리(PTE) 리스트이고,
    상기 하나 이상의 활성 디렉토리 리스트는 상기 식별된 PTE들을 갖는 PT들을 가리키는, 상기 섀도 PT 계층구조 내의 PDE들을 식별하는 활성 PD 엔트리(PDE) 리스트를 포함하는 방법.
  17. 제15항에 있어서,
    상기 활성 엔트리 리스트는 페이지 맵 레벨 4(PML4) 페이지들, 페이지 디렉토리 포인터(PDP) 페이지들, 페이지 디렉토리(PD) 페이지들, 및 PT 페이지들 중 임의의 것을 매핑하는, 상기 섀도 PT 계층구조 내의 PTE들을 식별하는 활성 PT 엔트리(PTE) 리스트이고,
    상기 하나 이상의 활성 디렉토리 리스트는 활성 PTE 리스트 엔트리들을 갖는 페이지를 참조하는 PDE들을 포함하는 활성 PD 엔트리(PDE) 리스트, 활성 PDE 리스트 엔트리를 갖는 PD를 참조하는 활성 PDPE 엔트리들을 포함하는 활성 PDP 엔트 리(PDPE) 리스트, 및 상기 활성 PDPE 리스트로부터의 요소들을 갖는 PDP를 매핑하는 엔트리들을 포함하는 활성 PML4E 엔트리(PML4E) 리스트를 포함하는 방법.
  18. 제16항에 있어서,
    상기 게스트 운영 체제에 의해 상기 게스트 PT 계층구조를 형성하는 데 사용되는 페이지들을 추적하는 단계, 및
    임의의 동적 랜덤 액세스 메모리(DRAM) 백업된 페이지 프레임에의 매핑들을 추적하는 단계
    를 더 포함하는 방법.
  19. 제15항에 있어서,
    상기 게스트 PT 계층구조 내의 하나 이상의 대규모 페이지를 식별하는 단계, 및
    상기 하나 이상의 대규모 페이지 각각에 대해 상기 섀도 PT 계층구조에 PT 테이블을 생성하는 단계
    를 더 포함하는 방법.
  20. 제15항에 있어서,
    상기 게스트 PT 계층구조의 구조에서의 변경을 검출하는 단계, 및
    상기 변경을 반영하기 위해 상기 메타데이터를 수정하는 단계
    를 더 포함하는 방법.
  21. 제15항에 있어서,
    상기 섀도 PT 계층구조의 내용은 상기 TLB에 주소 변환들을 캐싱하기 위해 프로세서에 의해 사용되는 방법.
  22. 주소 변환 동작들을 위해 가상 머신(VM)에 의해 사용되는 게스트 변환 데이터 구조,
    가상 머신 모니터(VMM)에 의해 유지되는 섀도 변환 데이터 구조 - 상기 섀도 변환 데이터 구조는 상기 게스트 변환 데이터 구조로부터 포맷 및 구조를 도출함 -, 및
    상기 섀도 변환 데이터 구조로부터 추출된 메타데이터에 기초하여, 상기 게스트 변환 데이터 구조 내의 어느 엔트리들이 상기 VM에 의해 수정되었는지를 판정하고, 상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들에 대응하는 상기 섀도 변환 데이터 구조 내의 엔트리들을 상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들과 동기화시키는 주소 변환 모듈
    을 포함하는 장치.
  23. 제22항에 있어서,
    상기 주소 변환 모듈은 또한 섀도 변환 데이터 구조들의 작업 세트 - 상기 작업 세트 내의 각각의 섀도 변환 데이터 구조는 상기 VM의 복수의 활성 프로세스 중 하나와 연관되어 있음 - 를 유지하고, 상기 복수의 활성 프로세스 중 하나와 연관된 게스트 변환 데이터 구조가 인에이블되어 있을 때 상기 복수의 활성 프로세스 중 상기 하나와 연관되는 상기 작업 세트로부터의 섀도 변환 데이터 구조의 내용을 재사용하는 장치.
  24. 제23항에 있어서,
    상기 특권 이벤트는 다른 게스트 변환 데이터 구조를 인에이블하라는 상기 VM의 요청, 상기 게스트 변환 데이터 구조의 엔트리들과 상기 섀도 변환 데이터 구조의 엔트리들 간의 하나 이상의 불일치에 의해 야기되는 페이지 결함, 및 TLB 내의 하나 이상의 주소 변환을 무효화시키라는 상기 VM의 요청 중 임의의 하나인 장치.
  25. 주소 변환 동작들을 위해 가상 머신(VM)에 의해 사용되는 게스트 변환 데이터 구조 및 상기 게스트 변환 데이터 구조로부터 포맷 및 구조를 도출하는 섀도 변환 데이터 구조를 저장하는 동적 랜덤 액세스 메모리(DRAM), 및
    상기 DRAM에 연결되어, 상기 섀도 변환 데이터 구조로부터 추출된 메타데이터에 기초하여, 상기 게스트 변환 데이터 구조 내의 어느 엔트리들이 상기 VM에 의해 수정되었는지를 판정하고, 상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들에 대응하는 상기 섀도 변환 데이터 구조 내의 엔트리들을 상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들과 동기화시키는 프로세서
    를 포함하는 시스템.
  26. 제25항에 있어서,
    상기 프로세서는 또한 섀도 변환 데이터 구조들의 작업 세트 - 상기 작업 세트 내의 각각의 섀도 변환 데이터 구조는 상기 VM의 복수의 활성 프로세스 중 하나와 연관되어 있음 - 를 유지하고, 상기 복수의 활성 프로세스 중 하나와 연관된 게스트 변환 데이터 구조가 인에이블되어 있을 때 상기 복수의 활성 프로세스 중 상기 하나와 연관되는 상기 작업 세트로부터의 섀도 변환 데이터 구조의 내용을 재사용하는 시스템.
  27. 제26항에 있어서, 상기 특권 이벤트는 다른 게스트 변환 데이터 구조를 인에이블하라는 상기 VM의 요청, 상기 게스트 변환 데이터 구조의 엔트리들과 상기 섀도 변환 데이터 구조의 엔트리들 간의 하나 이상의 불일치에 의해 야기되는 페이지 결함, 및 TLB 내의 하나 이상의 주소 변환을 무효화시키라는 상기 VM의 요청 중 임의의 하나인 시스템.
  28. 프로세싱 시스템에 의해 실행될 때, 상기 프로세싱 시스템으로 하여금 방법을 수행하게 하는 명령어들을 포함하는 머신 판독가능 매체로서,
    상기 방법은,
    TLB에 관한 특권 이벤트로 인해 가상 머신(VM)으로부터 이전된 제어를 받는 단계,
    가상 머신 모니터(VMM)에 의해 유지되는 섀도 변환 데이터 구조로부터 추출된 메타데이터 및 상기 섀도 변환 데이터 구조 내의 엔트리들과 연관된 속성들에 기초하여, 게스트 변환 데이터 구조 내의 어느 엔트리들이 상기 VM에 의해 수정되었는지를 판정하는 단계, 및
    상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들에 대응하는 상기 섀도 변환 데이터 구조 내의 엔트리들을 상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들과 동기화시키는 단계
    를 포함하는 머신 판독가능 매체.
  29. 제28항에 있어서,
    상기 방법은,
    섀도 변환 데이터 구조들의 작업 세트를 유지하는 단계 - 상기 작업 세트 내의 각각의 섀도 변환 데이터 구조는 상기 VM의 복수의 활성 프로세스 중 하나와 연관되어 있음 -, 및
    상기 복수의 활성 프로세스 중 하나와 연관된 게스트 변환 데이터 구조가 인에이블되어 있을 때 상기 복수의 활성 프로세스 중 상기 하나와 연관되는 상기 작업 세트로부터의 섀도 변환 데이터 구조의 내용을 재사용하는 단계
    를 더 포함하는 머신 판독가능 매체.
  30. 제29항에 있어서,
    상기 특권 이벤트는 다른 게스트 변환 데이터 구조를 인에이블하라는 상기 VM의 요청, 상기 게스트 변환 데이터 구조의 엔트리들과 상기 섀도 변환 데이터 구조의 엔트리들 간의 하나 이상의 불일치에 의해 야기되는 페이지 결함, 및 TLB 내의 하나 이상의 주소 변환을 무효화시키라는 상기 VM의 요청 중 임의의 하나인 머신 판독가능 매체.
KR1020077017491A 2005-01-28 2006-01-27 가상 머신 환경에서의 주소 변환 지원 방법 및 장치 KR100928353B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/045,524 US7395405B2 (en) 2005-01-28 2005-01-28 Method and apparatus for supporting address translation in a virtual machine environment
US11/045,524 2005-01-28
PCT/US2006/003587 WO2006081582A2 (en) 2005-01-28 2006-01-27 A method and apparatus for supporting address translation in a virtual machine environment

Publications (2)

Publication Number Publication Date
KR20070090047A true KR20070090047A (ko) 2007-09-04
KR100928353B1 KR100928353B1 (ko) 2009-11-23

Family

ID=36603334

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077017491A KR100928353B1 (ko) 2005-01-28 2006-01-27 가상 머신 환경에서의 주소 변환 지원 방법 및 장치

Country Status (6)

Country Link
US (2) US7395405B2 (ko)
EP (1) EP1856606B1 (ko)
JP (1) JP5038907B2 (ko)
KR (1) KR100928353B1 (ko)
CN (1) CN101107593B (ko)
WO (1) WO2006081582A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8930672B2 (en) 2010-10-08 2015-01-06 Snu R&Db Foundation Multiprocessor using a shared virtual memory and method of generating a translation table
US9619860B2 (en) 2014-12-24 2017-04-11 Inte Corporation Hybrid on-demand graphics translation table shadowing

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7299337B2 (en) * 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
US7363463B2 (en) * 2005-05-13 2008-04-22 Microsoft Corporation Method and system for caching address translations from multiple address spaces in virtual machines
US8423747B2 (en) 2008-06-30 2013-04-16 Intel Corporation Copy equivalent protection using secure page flipping for software components within an execution environment
US9785485B2 (en) * 2005-07-27 2017-10-10 Intel Corporation Virtualization event processing in a layered virtualization architecture
US8909946B2 (en) 2005-11-15 2014-12-09 Microsoft Corporation Efficient power management of a system with virtual machines
US7475183B2 (en) * 2005-12-12 2009-01-06 Microsoft Corporation Large page optimizations in a virtual machine environment
US7555628B2 (en) 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US8615643B2 (en) * 2006-12-05 2013-12-24 Microsoft Corporation Operational efficiency of virtual TLBs
US8694712B2 (en) * 2006-12-05 2014-04-08 Microsoft Corporation Reduction of operational costs of virtual TLBs
US9098347B2 (en) 2006-12-21 2015-08-04 Vmware Implementation of virtual machine operations using storage system functionality
US9354927B2 (en) * 2006-12-21 2016-05-31 Vmware, Inc. Securing virtual machine data
US9189265B2 (en) 2006-12-21 2015-11-17 Vmware, Inc. Storage architecture for virtual machines
US7788464B2 (en) * 2006-12-22 2010-08-31 Microsoft Corporation Scalability of virtual TLBs for multi-processor virtual machines
US7685401B2 (en) 2006-12-27 2010-03-23 Intel Corporation Guest to host address translation for devices to access memory in a partitioned system
JP4897578B2 (ja) * 2007-06-06 2012-03-14 株式会社日立製作所 仮想計算機の制御プログラムおよび仮想計算機システム
WO2009001153A1 (en) * 2007-06-28 2008-12-31 Nokia Corporation Memory protection unit in a virtual processing environment
US8078827B2 (en) * 2007-07-05 2011-12-13 International Business Machines Corporation Method and apparatus for caching of page translations for virtual machines
US8739156B2 (en) * 2007-07-24 2014-05-27 Red Hat Israel, Ltd. Method for securing the execution of virtual machines
US8032897B2 (en) * 2007-07-31 2011-10-04 Globalfoundries Inc. Placing virtual machine monitor (VMM) code in guest context to speed memory mapped input/output virtualization
US8515075B1 (en) 2008-01-31 2013-08-20 Mcafee, Inc. Method of and system for malicious software detection using critical address space protection
GB2460393B (en) * 2008-02-29 2012-03-28 Advanced Risc Mach Ltd A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry
US8296547B2 (en) * 2008-08-27 2012-10-23 International Business Machines Corporation Loading entries into a TLB in hardware via indirect TLB entries
US10802990B2 (en) * 2008-10-06 2020-10-13 International Business Machines Corporation Hardware based mandatory access control
US8135937B2 (en) * 2008-11-17 2012-03-13 International Business Machines Corporation Logical partition memory
US8301863B2 (en) * 2008-11-17 2012-10-30 International Business Machines Corporation Recursive logical partition real memory map
US10255463B2 (en) 2008-11-17 2019-04-09 International Business Machines Corporation Secure computer architecture
JP4769308B2 (ja) * 2009-01-20 2011-09-07 株式会社東芝 仮想計算機管理機構、同管理機構を有する仮想計算機システム及び同システムにおけるページング処理方法
CN101882113B (zh) * 2009-05-05 2012-02-22 北京大学 一种基于客户操作系统内核代码替换的内存虚拟化方法
JP4961459B2 (ja) * 2009-06-26 2012-06-27 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムにおける制御方法
US8234407B2 (en) * 2009-06-30 2012-07-31 Oracle America, Inc. Network use of virtual addresses without pinning or registration
US8195917B2 (en) * 2009-07-01 2012-06-05 Advanced Micro Devices, Inc. Extended page size using aggregated small pages
US20110016290A1 (en) * 2009-07-14 2011-01-20 Arie Chobotaro Method and Apparatus for Supporting Address Translation in a Multiprocessor Virtual Machine Environment
US8560758B2 (en) * 2009-08-24 2013-10-15 Red Hat Israel, Ltd. Mechanism for out-of-synch virtual machine memory management optimization
US20110061050A1 (en) * 2009-09-04 2011-03-10 Sahita Ravi L Methods and systems to provide platform extensions for trusted virtual machines
US8327059B2 (en) * 2009-09-30 2012-12-04 Vmware, Inc. System and method to enhance memory protection for programs in a virtual machine environment
US9069592B2 (en) * 2009-11-02 2015-06-30 International Business Machines Corporation Generic transport layer mechanism for firmware communication
US8347290B2 (en) * 2009-11-16 2013-01-01 Novell, Inc. Monitoring spin locks in virtual machines in a computing system environment
US8656397B2 (en) 2010-03-30 2014-02-18 Red Hat Israel, Ltd. Migrating groups of threads across NUMA nodes based on remote page access frequency
US8364915B2 (en) * 2010-06-23 2013-01-29 Intel Corporation Method, apparatus and system for generating access information from an LRU tracking list
US8838935B2 (en) * 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
KR20120071554A (ko) * 2010-12-23 2012-07-03 한국전자통신연구원 완전가상화를 위한 주소공간 전환 방법 및 장치
US9767039B2 (en) 2011-07-18 2017-09-19 Vmware, Inc. Increasing granularity of dirty bit information in hardware assisted memory management systems
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US8973144B2 (en) 2011-10-13 2015-03-03 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US9069586B2 (en) * 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US9804870B2 (en) 2011-10-28 2017-10-31 Intel Corporation Instruction-set support for invocation of VMM-configured services without VMM intervention
CN104081346B (zh) * 2012-02-07 2018-02-27 英特尔公司 用于使用跟踪数据消除处理器间中断来支持多处理器虚拟机环境中的地址转换的方法和设备
US9355032B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Supporting multiple types of guests by a hypervisor
US9348757B2 (en) 2012-10-08 2016-05-24 International Business Machines Corporation System supporting multiple partitions with differing translation formats
US9740624B2 (en) 2012-10-08 2017-08-22 International Business Machines Corporation Selectable address translation mechanisms within a partition
US9355040B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Adjunct component to provide full virtualization using paravirtualized hypervisors
US9280488B2 (en) 2012-10-08 2016-03-08 International Business Machines Corporation Asymmetric co-existent address translation structure formats
US9600419B2 (en) 2012-10-08 2017-03-21 International Business Machines Corporation Selectable address translation mechanisms
US9075789B2 (en) 2012-12-11 2015-07-07 General Dynamics C4 Systems, Inc. Methods and apparatus for interleaving priorities of a plurality of virtual processors
US9223602B2 (en) * 2012-12-28 2015-12-29 Intel Corporation Processors, methods, and systems to enforce blacklisted paging structure indication values
US10061622B2 (en) 2013-02-26 2018-08-28 Red Hat Israel, Ltd. Updating memory topology information for virtual machines
US10114662B2 (en) 2013-02-26 2018-10-30 Red Hat Israel, Ltd. Updating processor topology information for virtual machines
WO2014174580A1 (ja) * 2013-04-22 2014-10-30 富士通株式会社 情報処理装置、方法、及びプログラム
CN105814547B (zh) * 2013-10-27 2019-12-03 超威半导体公司 输入/输出内存映射单元和北桥
US9772867B2 (en) * 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
US9696933B2 (en) 2014-08-15 2017-07-04 International Business Machines Corporation Virtual machine manager initiated page-in of kernel pages
US9389897B1 (en) 2014-12-18 2016-07-12 International Business Machines Corporation Exiting multiple threads of a simulation environment in a computer
US9805194B2 (en) * 2015-03-27 2017-10-31 Intel Corporation Memory scanning methods and apparatus
US9892060B2 (en) 2015-12-02 2018-02-13 International Business Machines Corporation Identifying stale entries in address translation cache
US10963280B2 (en) 2016-02-03 2021-03-30 Advanced Micro Devices, Inc. Hypervisor post-write notification of control and debug register updates
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10241925B2 (en) 2017-02-15 2019-03-26 Ati Technologies Ulc Selecting a default page size in a variable page size TLB
US10282309B2 (en) 2017-02-24 2019-05-07 Advanced Micro Devices, Inc. Per-page control of physical address space distribution among memory modules
US10339068B2 (en) 2017-04-24 2019-07-02 Advanced Micro Devices, Inc. Fully virtualized TLBs
EP3688583A1 (en) * 2017-09-26 2020-08-05 INTEL Corporation Methods and apparatus to process commands from virtual machines
US10768968B2 (en) * 2018-09-28 2020-09-08 Intel Corporation Split-control of page attributes between virtual machines and a virtual machine monitor

Family Cites Families (233)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4319223A (en) * 1965-07-01 1982-03-09 The Bendix Corporation Full code means for electromechanical decoder
US3699532A (en) 1970-04-21 1972-10-17 Singer Co Multiprogramming control for a data handling system
US3996449A (en) 1975-08-25 1976-12-07 International Business Machines Corporation Operating system authenticator
US4162536A (en) 1976-01-02 1979-07-24 Gould Inc., Modicon Div. Digital input/output system and method
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
US4276594A (en) 1978-01-27 1981-06-30 Gould Inc. Modicon Division Digital computer with multi-processor capability utilizing intelligent composite memory and input/output modules and method for performing the same
US4207609A (en) 1978-05-08 1980-06-10 International Business Machines Corporation Method and means for path independent device reservation and reconnection in a multi-CPU and shared device access system
JPS5823570B2 (ja) 1978-11-30 1983-05-16 国産電機株式会社 液面検出装置
JPS5576447A (en) 1978-12-01 1980-06-09 Fujitsu Ltd Address control system for software simulation
US4307447A (en) 1979-06-19 1981-12-22 Gould Inc. Programmable controller
US4319323A (en) 1980-04-04 1982-03-09 Digital Equipment Corporation Communications device for data processing system
US4419724A (en) 1980-04-14 1983-12-06 Sperry Corporation Main bus interface package
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
US4403283A (en) 1980-07-28 1983-09-06 Ncr Corporation Extended memory system and method
DE3034581A1 (de) 1980-09-13 1982-04-22 Robert Bosch Gmbh, 7000 Stuttgart Auslesesicherung bei einchip-mikroprozessoren
JPS58140862A (ja) 1982-02-16 1983-08-20 Toshiba Corp 相互排他方式
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 複合プロセツサ・システムのアクセス制御方式
US4759064A (en) 1985-10-07 1988-07-19 Chaum David L Blind unanticipated signature systems
US4975836A (en) * 1984-12-19 1990-12-04 Hitachi, Ltd. Virtual computer system
JPS61206057A (ja) 1985-03-11 1986-09-12 Hitachi Ltd アドレス変換装置
FR2592510B1 (fr) 1985-12-31 1988-02-12 Bull Cp8 Procede et appareil pour certifier des services obtenus a l'aide d'un support portatif tel qu'une carte a memoire
FR2601535B1 (fr) * 1986-07-11 1988-10-21 Bull Cp8 Procede pour certifier l'authenticite d'une donnee echangee entre deux dispositifs connectes en local ou a distance par une ligne de transmission
FR2601525B1 (fr) 1986-07-11 1988-10-21 Bull Cp8 Dispositif de securite interdisant le fonctionnement d'un ensemble electronique apres une premiere coupure de son alimentation electrique
FR2601476B1 (fr) * 1986-07-11 1988-10-21 Bull Cp8 Procede pour authentifier une donnee d'habilitation externe par un objet portatif tel qu'une carte a memoire
FR2618002B1 (fr) * 1987-07-10 1991-07-05 Schlumberger Ind Sa Procede et systeme d'authentification de cartes a memoire electronique
US5007082A (en) 1988-08-03 1991-04-09 Kelly Services, Inc. Computer software encryption apparatus
US5079737A (en) * 1988-10-25 1992-01-07 United Technologies Corporation Memory management unit for the MIL-STD 1750 bus
US5434999A (en) 1988-11-09 1995-07-18 Bull Cp8 Safeguarded remote loading of service programs by authorizing loading in protected memory zones in a terminal
FR2640798B1 (fr) 1988-12-20 1993-01-08 Bull Cp8 Dispositif de traitement de donnees comportant une memoire non volatile electriquement effacable et reprogrammable
JPH02171934A (ja) 1988-12-26 1990-07-03 Hitachi Ltd 仮想計算機システム
JPH02208740A (ja) 1989-02-09 1990-08-20 Fujitsu Ltd 仮想計算機制御方式
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
US5442645A (en) 1989-06-06 1995-08-15 Bull Cp8 Method for checking the integrity of a program or data, and apparatus for implementing this method
JP2590267B2 (ja) 1989-06-30 1997-03-12 株式会社日立製作所 仮想計算機における表示制御方式
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
JP2825550B2 (ja) 1989-09-21 1998-11-18 株式会社日立製作所 多重仮想空間アドレス制御方法および計算機システム
CA2010591C (en) 1989-10-20 1999-01-26 Phillip M. Adams Kernels, description tables and device drivers
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
EP0473913A3 (en) 1990-09-04 1992-12-16 International Business Machines Corporation Method and apparatus for providing a service pool of virtual machines for a plurality of vm users
US5108590A (en) 1990-09-12 1992-04-28 Disanto Dennis Water dispenser
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
US5317705A (en) 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
US5287363A (en) 1991-07-01 1994-02-15 Disk Technician Corporation System for locating and anticipating data storage media failures
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
US5453003A (en) 1991-01-09 1995-09-26 Pfefferle; William C. Catalytic method
US5551033A (en) * 1991-05-17 1996-08-27 Zenith Data Systems Corporation Apparatus for maintaining one interrupt mask register in conformity with another in a manner invisible to an executing program
JPH04348434A (ja) 1991-05-27 1992-12-03 Hitachi Ltd 仮想計算機システム
US5319760A (en) * 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
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
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
US5574936A (en) 1992-01-02 1996-11-12 Amdahl Corporation Access control mechanism controlling access to and logical purging of access register translation lookaside buffer (ALB) in a computer system
US5486529A (en) 1992-04-16 1996-01-23 Zeneca Limited Certain pyridyl ketones for treating diseases involving leukocyte elastase
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5237616A (en) 1992-09-21 1993-08-17 International Business Machines Corporation Secure computer system having privileged and unprivileged memories
US5293424A (en) 1992-10-14 1994-03-08 Bull Hn Information Systems Inc. Secure memory card
US5796835A (en) 1992-10-27 1998-08-18 Bull Cp8 Method and system for writing information in a data carrier making it possible to later certify the originality of this information
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
US5668971A (en) 1992-12-01 1997-09-16 Compaq Computer Corporation Posted disk read operations performed by signalling a disk read complete to the system prior to completion of data transfer
EP0602867A1 (en) 1992-12-17 1994-06-22 NCR International, Inc. An apparatus for securing a system platform
JPH06187178A (ja) * 1992-12-18 1994-07-08 Hitachi Ltd 仮想計算機システムの入出力割込み制御方法
US5483656A (en) 1993-01-14 1996-01-09 Apple Computer, Inc. System for managing power consumption of devices coupled to a common bus
US5469557A (en) * 1993-03-05 1995-11-21 Microchip Technology Incorporated Code protection in microcontroller with EEPROM fuses
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.
FR2704341B1 (fr) 1993-04-22 1995-06-02 Bull Cp8 Dispositif de protection des clés d'une carte à puce.
JPH06348867A (ja) 1993-06-04 1994-12-22 Hitachi Ltd マイクロコンピュータ
FR2706210B1 (fr) * 1993-06-08 1995-07-21 Bull Cp8 Procédé d'authentification d'un objet portatif par un terminal hors ligne, objet portatif et terminal correspondants.
US5555385A (en) 1993-10-27 1996-09-10 International Business Machines Corporation Allocation of address spaces within virtual machine compute system
US5825880A (en) 1994-01-13 1998-10-20 Sudia; Frank W. Multi-step digital signature method and system
US5459869A (en) 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
US5604805A (en) 1994-02-28 1997-02-18 Brands; Stefanus A. Privacy-protected transfer of electronic information
FR2717286B1 (fr) 1994-03-09 1996-04-05 Bull Cp8 Procédé et dispositif pour authentifier un support de données destiné à permettre une transaction ou l'accès à un service ou à un lieu, et support correspondant.
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
US5533123A (en) 1994-06-28 1996-07-02 National Semiconductor Corporation Programmable distributed personal security
US5978481A (en) 1994-08-16 1999-11-02 Intel Corporation Modem compatible method and apparatus for encrypting data that is transparent to software applications
JPH0883211A (ja) 1994-09-12 1996-03-26 Mitsubishi Electric Corp データ処理装置
DE69534757T2 (de) 1994-09-15 2006-08-31 International Business Machines Corp. System und Verfahren zur sicheren Speicherung und Verteilung von Daten unter Verwendung digitaler Unterschriften
US6058478A (en) * 1994-09-30 2000-05-02 Intel Corporation Apparatus and method for a vetted field upgrade
FR2725537B1 (fr) 1994-10-11 1996-11-22 Bull Cp8 Procede de chargement d'une zone memoire protegee d'un dispositif de traitement de l'information et dispositif associe
US5903752A (en) * 1994-10-13 1999-05-11 Intel Corporation Method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system
US5606617A (en) 1994-10-14 1997-02-25 Brands; Stefanus A. Secret-key certificates
US5564040A (en) 1994-11-08 1996-10-08 International Business Machines Corporation Method and apparatus for providing a server function in a logically partitioned hardware machine
US6269392B1 (en) 1994-11-15 2001-07-31 Christian Cotichini Method and apparatus to monitor and locate an electronic device using a secured intelligent agent
US5560013A (en) 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5555414A (en) 1994-12-14 1996-09-10 International Business Machines Corporation Multiprocessing system including gating of host I/O and external enablement to guest enablement at polling intervals
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
FR2731536B1 (fr) 1995-03-10 1997-04-18 Schlumberger Ind Sa Procede d'inscription securisee d'informations dans un support portable
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 インターナショナル・ビジネス・マシーンズ・コーポレーション 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
US5684948A (en) 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US5633929A (en) 1995-09-15 1997-05-27 Rsa Data Security, Inc Cryptographic key escrow system having reduced vulnerability to harvesting attacks
US6093213A (en) 1995-10-06 2000-07-25 Advanced Micro Devices, Inc. Flexible implementation of a system management mode (SMM) in a processor
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エレクトロニクス株式会社 フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法
IL116708A (en) 1996-01-08 2000-12-06 Smart Link Ltd Real-time task manager for a personal computer
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
US5809546A (en) 1996-05-23 1998-09-15 International Business Machines Corporation Method for managing I/O buffers in shared storage by structuring buffer table having entries including storage keys for controlling accesses to the buffers
US6205550B1 (en) * 1996-06-13 2001-03-20 Intel Corporation Tamper resistant methods and apparatus
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
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
US5944821A (en) 1996-07-11 1999-08-31 Compaq Computer Corporation Secure software registration and integrity assessment in a computer system
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US5740178A (en) 1996-08-29 1998-04-14 Lucent Technologies Inc. Software for controlling a reliable backup memory
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
US5937063A (en) 1996-09-30 1999-08-10 Intel Corporation Secure boot
US5844986A (en) 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US5935242A (en) 1996-10-28 1999-08-10 Sun Microsystems, Inc. Method and apparatus for initializing a device
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
DE19649292A1 (de) * 1996-11-28 1998-06-04 Deutsche Telekom Ag Verfahren zum Sichern eines durch eine Schlüsselhierarchie geschützten Systems
US5901225A (en) * 1996-12-05 1999-05-04 Advanced Micro Devices, Inc. System and method for performing software patches in embedded systems
US5757919A (en) 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US5818939A (en) 1996-12-18 1998-10-06 Intel Corporation Optimized security functionality in an electronic system
US6412035B1 (en) 1997-02-03 2002-06-25 Real Time, Inc. Apparatus and method for decreasing the response times of interrupt service routines
US5953502A (en) 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
JP4000654B2 (ja) 1997-02-27 2007-10-31 セイコーエプソン株式会社 半導体装置及び電子機器
US6272637B1 (en) 1997-04-14 2001-08-07 Dallas Semiconductor Corporation Systems and methods for protecting access to encrypted information
US6557104B2 (en) * 1997-05-02 2003-04-29 Phoenix Technologies Ltd. Method and apparatus for secure processing of cryptographic keys
US6044478A (en) * 1997-05-30 2000-03-28 National Semiconductor Corporation Cache with finely granular locked-down regions
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)
US6175924B1 (en) * 1997-06-20 2001-01-16 International Business Machines Corp. Method and apparatus for protecting application data in secure storage areas
US6035374A (en) * 1997-06-25 2000-03-07 Sun Microsystems, Inc. Method of executing coded instructions in a multiprocessor having shared execution resources including active, nap, and sleep states in accordance with cache miss latency
US6584565B1 (en) 1997-07-15 2003-06-24 Hewlett-Packard Development Company, L.P. Method and apparatus for long term verification of digital signatures
US6014745A (en) * 1997-07-17 2000-01-11 Silicon Systems Design Ltd. Protection for customer programs (EPROM)
US6212635B1 (en) * 1997-07-18 2001-04-03 David C. Reardon Network security system allowing access and modification to a security subsystem after initial installation when a master token is in place
US5978475A (en) 1997-07-18 1999-11-02 Counterpane Internet Security, Inc. Event auditing system
US5919257A (en) 1997-08-08 1999-07-06 Novell, Inc. Networked workstation intrusion detection system
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
US5935247A (en) 1997-09-18 1999-08-10 Geneticware Co., Ltd. Computer system having a genetic code that cannot be directly accessed and a method of maintaining the same
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
US5970147A (en) 1997-09-30 1999-10-19 Intel Corporation System and method for configuring and registering a cryptographic device
US6061794A (en) * 1997-09-30 2000-05-09 Compaq Computer Corp. System and method for performing secure device communications in a peer-to-peer bus architecture
US6357004B1 (en) * 1997-09-30 2002-03-12 Intel Corporation System and method for ensuring integrity throughout post-processing
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
US6378072B1 (en) * 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US6308270B1 (en) 1998-02-13 2001-10-23 Schlumberger Technologies, Inc. Validating and certifying execution of a software program with a smart card
US6108644A (en) 1998-02-19 2000-08-22 At&T Corp. System and method for electronic transactions
US6131166A (en) 1998-03-13 2000-10-10 Sun Microsystems, Inc. System and method for cross-platform application level power management
US6192455B1 (en) * 1998-03-30 2001-02-20 Intel Corporation Apparatus and method for preventing access to SMRAM space through AGP addressing
US6374286B1 (en) * 1998-04-06 2002-04-16 Rockwell Collins, Inc. Real time processor capable of concurrently running multiple independent JAVA machines
US6173417B1 (en) * 1998-04-30 2001-01-09 Intel Corporation Initializing and restarting operating systems
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
FR2778998B1 (fr) 1998-05-20 2000-06-30 Schlumberger Ind Sa Procede d'authentification d'un code personnel d'un utilisateur d'une carte a circuit integre
EP0961193B1 (en) 1998-05-29 2010-09-01 Texas Instruments Incorporated Secure computing device
US6421702B1 (en) 1998-06-09 2002-07-16 Advanced Micro Devices, Inc. Interrupt driven isochronous task scheduler system
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> 携帯型情報記憶媒体
US6363485B1 (en) * 1998-09-09 2002-03-26 Entrust Technologies Limited Multi-factor biometric authenticating device and method
US6463535B1 (en) 1998-10-05 2002-10-08 Intel Corporation System and method for verifying the integrity and authorization of software before execution in a local platform
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
US7194092B1 (en) 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
US6327652B1 (en) 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US6330670B1 (en) 1998-10-26 2001-12-11 Microsoft Corporation Digital rights management operating system
US6609199B1 (en) 1998-10-26 2003-08-19 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
US6445797B1 (en) 1998-12-16 2002-09-03 Secure Choice Llc Method and system for performing secure electronic digital streaming
US6463537B1 (en) 1999-01-04 2002-10-08 Codex Technologies, Inc. Modified computer motherboard security and identification system
US6282650B1 (en) 1999-01-25 2001-08-28 Intel Corporation Secure public digital watermark
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6560627B1 (en) * 1999-01-28 2003-05-06 Cisco Technology, Inc. Mutual exclusion at the record level with priority inheritance for embedded systems using one semaphore
US6188257B1 (en) * 1999-02-01 2001-02-13 Vlsi Technology, Inc. Power-on-reset logic with secure power down capability
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
US7225333B2 (en) * 1999-03-27 2007-05-29 Microsoft Corporation Secure processor architecture for use with a digital rights management (DRM) system on a computing device
US6615278B1 (en) 1999-03-29 2003-09-02 International Business Machines Corporation Cross-platform program, system, and method having a global registry object for mapping registry equivalent functions in an OS/2 operating system environment
US6684326B1 (en) * 1999-03-31 2004-01-27 International Business Machines Corporation Method and system for authenticated boot operations in a computer system of a networked computing environment
US6651171B1 (en) 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
US6389537B1 (en) * 1999-04-23 2002-05-14 Intel Corporation Platform and method for assuring integrity of trusted agent communications
US6275933B1 (en) 1999-04-30 2001-08-14 3Com Corporation Security system for a computerized apparatus
EP1055989A1 (en) 1999-05-28 2000-11-29 Hewlett-Packard Company System for digitally signing a document
EP1056014A1 (en) 1999-05-28 2000-11-29 Hewlett-Packard Company System for providing a trustworthy user interface
US6321314B1 (en) 1999-06-09 2001-11-20 Ati International S.R.L. Method and apparatus for restricting memory access
US6633981B1 (en) 1999-06-18 2003-10-14 Intel Corporation Electronic system and method for controlling access through user authentication
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
US6529909B1 (en) * 1999-08-31 2003-03-04 Accenture Llp Method for translating an object attribute converter in an information services patterns environment
JP2001148344A (ja) 1999-09-09 2001-05-29 Nikon Corp 露光装置、エネルギ源の出力制御方法、該方法を用いるレーザ装置、及びデバイス製造方法
EP1085396A1 (en) 1999-09-17 2001-03-21 Hewlett-Packard Company Operation of trusted state in computing platform
US6535988B1 (en) * 1999-09-29 2003-03-18 Intel Corporation System for detecting over-clocking uses a reference signal thereafter preventing over-clocking by reducing clock rate
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
EP1269425A2 (en) 2000-02-25 2003-01-02 Identix Incorporated Secure transaction system
AU2001243365A1 (en) 2000-03-02 2001-09-12 Alarity Corporation System and method for process protection
JP3710671B2 (ja) 2000-03-14 2005-10-26 シャープ株式会社 1チップマイクロコンピュータ及びそれを用いたicカード、並びに1チップマイクロコンピュータのアクセス制御方法
CA2341931C (en) 2000-03-24 2006-05-30 Contentguard Holdings, Inc. System and method for protection of digital works
US6633963B1 (en) 2000-03-31 2003-10-14 Intel Corporation Controlling access to multiple memory zones in an isolated execution environment
US6678825B1 (en) * 2000-03-31 2004-01-13 Intel Corporation Controlling access to multiple isolated memories in an isolated execution environment
US6507904B1 (en) * 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
US6921939B2 (en) * 2000-07-20 2005-07-26 Fairchild Semiconductor Corporation Power MOSFET and method for forming same using a self-aligned body implant
GB0020416D0 (en) * 2000-08-18 2000-10-04 Hewlett Packard Co Trusted system
US6715057B1 (en) * 2000-08-31 2004-03-30 Hewlett-Packard Development Company, L.P. Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes
US6938164B1 (en) 2000-11-22 2005-08-30 Microsoft Corporation Method and system for allowing code to be securely initialized in a computer
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
US6907600B2 (en) 2000-12-27 2005-06-14 Intel Corporation Virtual translation lookaside buffer
US7631160B2 (en) 2001-04-04 2009-12-08 Advanced Micro Devices, Inc. Method and apparatus for securing portions of memory
US6976136B2 (en) 2001-05-07 2005-12-13 National Semiconductor Corporation Flash memory protection scheme for secured shared BIOS implementation in personal computers with an embedded controller
US7676430B2 (en) 2001-05-09 2010-03-09 Lenovo (Singapore) Ptd. Ltd. System and method for installing a remote credit card authorization on a system with a TCPA complaint chipset
EP1271277A3 (en) 2001-06-26 2003-02-05 Redstrike B.V. Security system and software to prevent unauthorized use of a computing device
US6523245B2 (en) * 2001-07-10 2003-02-25 Great Dane Limited Partnership Automated drill and rivet machine
US20030018892A1 (en) * 2001-07-19 2003-01-23 Jose Tello Computer with a modified north bridge, security engine and smart card having a secure boot capability and method for secure booting a computer
US7191464B2 (en) * 2001-10-16 2007-03-13 Lenovo Pte. Ltd. Method and system for tracking a secure boot in a trusted computing environment
US6961806B1 (en) * 2001-12-10 2005-11-01 Vmware, Inc. System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems
US7103771B2 (en) 2001-12-17 2006-09-05 Intel Corporation Connecting a virtual token to a physical token
US7308576B2 (en) 2001-12-31 2007-12-11 Intel Corporation Authenticated code module
US20030126453A1 (en) 2001-12-31 2003-07-03 Glew Andrew F. Processor supporting execution of an authenticated code instruction
US7107460B2 (en) 2002-02-15 2006-09-12 International Business Machines Corporation Method and system for securing enablement access to a data security device
US7343493B2 (en) 2002-03-28 2008-03-11 Lenovo (Singapore) Pte. Ltd. Encrypted file system using TCPA
US7136867B1 (en) * 2002-04-08 2006-11-14 Oracle International Corporation Metadata format for hierarchical data storage on a raw storage device
US6895491B2 (en) * 2002-09-26 2005-05-17 Hewlett-Packard Development Company, L.P. Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching
US7318141B2 (en) 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
US7389308B2 (en) * 2003-05-30 2008-06-17 Microsoft Corporation Shadow paging
US7310721B2 (en) * 2003-10-30 2007-12-18 Microsoft Corporation Shadow page tables for address translation control
US7562179B2 (en) * 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
US7281102B1 (en) * 2004-08-12 2007-10-09 Vmware, Inc. Restricting memory access to protect data when sharing a common address space
US7363463B2 (en) * 2005-05-13 2008-04-22 Microsoft Corporation Method and system for caching address translations from multiple address spaces in virtual machines

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8930672B2 (en) 2010-10-08 2015-01-06 Snu R&Db Foundation Multiprocessor using a shared virtual memory and method of generating a translation table
US9619860B2 (en) 2014-12-24 2017-04-11 Inte Corporation Hybrid on-demand graphics translation table shadowing

Also Published As

Publication number Publication date
KR100928353B1 (ko) 2009-11-23
US7395405B2 (en) 2008-07-01
CN101107593B (zh) 2013-02-06
US20060174053A1 (en) 2006-08-03
CN101107593A (zh) 2008-01-16
EP1856606B1 (en) 2016-05-11
WO2006081582A3 (en) 2007-04-12
JP2008529176A (ja) 2008-07-31
US7836275B2 (en) 2010-11-16
US20090006805A1 (en) 2009-01-01
EP1856606A2 (en) 2007-11-21
WO2006081582A2 (en) 2006-08-03
JP5038907B2 (ja) 2012-10-03

Similar Documents

Publication Publication Date Title
KR100928353B1 (ko) 가상 머신 환경에서의 주소 변환 지원 방법 및 장치
EP2812795B1 (en) A method and apparatus for supporting address translation in a multiprocessor virtual machine environment using tracking data to eliminate interprocessor interrupts
JP5214670B2 (ja) マルチプロセッサ仮想マシン環境においてアドレス変換をサポートする方法及び装置
US11074191B2 (en) Linear to physical address translation with support for page attributes
US7363463B2 (en) Method and system for caching address translations from multiple address spaces in virtual machines
US8661181B2 (en) Memory protection unit in a virtual processing environment
US9304915B2 (en) Virtualization system using hardware assistance for page table coherence
US10324863B2 (en) Protected memory view for nested page table access by virtual machine guests
US8762684B2 (en) Hardware assistance for page table coherence with guest page mappings
US7383374B2 (en) Method and apparatus for managing virtual addresses
US20140108701A1 (en) Memory protection unit in a virtual processing environment
US20130036291A1 (en) Generating multiple address space identifiers per virtual machine to switch between protected micro-contexts
Alverti Hardware and Software Co-design for Efficient Memory Access

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131101

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141031

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151030

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee