KR20070090047A - 가상 머신 환경에서의 주소 변환 지원 방법 및 장치 - Google Patents
가상 머신 환경에서의 주소 변환 지원 방법 및 장치 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory 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
본 발명의 실시예들은 일반적으로 가상 머신에 관한 것으로서, 더 구체적으로는 가상 머신 환경에서의 주소 변환을 지원하는 것에 관한 것이다.
종래의 가상 머신 모니터(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) 계층구조 등의 변환 데이터 구조에 기초할 수 있다.
인텔 펜티엄 4 프로세서의 아키텍처는 다수의 페이징 모드를 지원한다. 가장 통상적으로 사용되는 페이징 모드는, 2-레벨 계층적 페이징 구조(본 명세서에서 2-레벨 계층구조 페이징 모드라고 함)를 사용하여 32-비트 선형 주소 공간을 지원한다. 본 발명의 실시예들은 이 페이징 모드로 제한되지 않으며, 그 대신에 다른 페이징 모드(예를 들어, 물리 주소 확장(Physical Address Extension: PAE) 모드, 인텔 확장 메모리 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)에 명령어를 발행함으로써 이러한 불일치를 해결할 수 있게 될 수 있다. 예를 들어, 인텔 펜티엄 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)
- TLB(translation-lookaside buffer)에 관한 특권 이벤트(privileged event)로 인해 가상 머신(virtual machine: VM)으로부터 이전된 제어를 받는 단계,가상 머신 모니터(virtual machine monitor: VMM)에 의해 유지되는 섀도 변환 데이터 구조(shadow translation data structure)로부터 추출된 메타데이터 및 상기 섀도 변환 데이터 구조 내의 엔트리들과 연관된 속성들에 기초하여, 게스트 변환 데이터 구조(guest translation data structure) 내의 어느 엔트리들이 상기 VM에 의해 수정되었는지를 판정하는 단계, 및상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들에 대응하는 상기 섀도 변환 데이터 구조 내의 엔트리들을, 상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들과 동기화시키는 단계를 포함하는 방법.
- 제1항에 있어서,상기 게스트 변환 데이터 구조는 주소 변환 동작들을 위해 상기 VM에 의해 사용되고,상기 섀도 변환 데이터 구조의 내용은 상기 TLB에 주소 변환들을 캐싱하기 위해 프로세서에 의해 사용되는 방법.
- 제1항에 있어서,섀도 변환 데이터 구조들의 작업 세트(working set)를 유지하는 단계 - 상기 작업 세트 내의 각각의 섀도 변환 데이터 구조는 상기 VM의 복수의 활성 프로세스 중 하나와 연관되어 있음 -, 및상기 복수의 활성 프로세스 중 하나와 연관된 게스트 변환 데이터 구조가 인에이블(enable)되어 있을 때 상기 복수의 활성 프로세스 중 상기 하나와 연관되는 상기 작업 세트로부터의 섀도 변환 데이터 구조의 내용을 재사용하는 단계를 더 포함하는 방법.
- 제3항에 있어서,상기 특권 이벤트는 다른 게스트 변환 데이터 구조를 인에이블하라는 상기 VM의 요청, 상기 게스트 변환 데이터 구조의 엔트리들과 상기 섀도 변환 데이터 구조의 엔트리들 간의 하나 이상의 불일치(inconsistency)에 의해 야기되는 페이지 결함(page fault), 및 TLB 내의 하나 이상의 주소 변환을 무효화시키라는 상기 VM의 요청 중 임의의 하나인 방법.
- 제3항에 있어서,상기 특권 이벤트가 페이지 결함, INVLPG 명령어, 및 새로운 게스트 변환 데이터 구조를 인에이블하라는 요청 중 임의의 하나임을 판정하는 단계,상기 새로운 게스트 변환 데이터 구조에 기초하여 새로운 섀도 변환 데이터 구조를 생성하는 단계, 및상기 새로운 섀도 변환 데이터 구조로부터 메타데이터를 도출하는 단계를 더 포함하는 방법.
- 제3항에 있어서,상기 VM의 상기 복수의 활성 프로세스 중 하나가 비활성화되어 있음을 판정하는 단계, 및상기 작업 세트로부터, 비활성화되어 있는 상기 활성 프로세스와 연관된 섀도 변환 데이터 구조를 제거하는 단계를 더 포함하는 방법.
- 제3항에 있어서,상기 섀도 변환 데이터 구조들 중 하나가 더 이상 사용되지 않음을 판정하는 단계, 및상기 작업 세트로부터 상기 섀도 변환 데이터 구조들 중 상기 하나를 제거하는 단계를 더 포함하는 방법.
- 제1항에 있어서,상기 메타데이터는 벡터들의 세트, 활성 엔트리 리스트, 및 하나 이상의 활 성 디렉토리 리스트를 포함하는 방법.
- 제8항에 있어서,상기 세트 내의 각각의 벡터는 상기 게스트 변환 데이터 구조의 대응하는 레벨에서 페이지들로서 사용되는 프레임들을 식별하고,상기 활성 엔트리 리스트는, 섀도 변환 데이터 구조가 존재하는 상기 게스트 변환 데이터 구조를 형성하는 데 사용되는 페이지들을 매핑하는 매핑들을 식별하며,상기 하나 이상의 활성 디렉토리 리스트는, 상기 섀도 변환 데이터 구조가 액세스될 수 있는 하위 레벨 구조를 참조하는 상위 레벨 매핑 구조들을 식별하는 방법.
- 제9항에 있어서,상기 활성 엔트리 리스트는 활성 페이지 테이블(page table: PT) 엔트리 리스트이고, 상기 활성 PT 엔트리(PT entry: PTE) 리스트는 상기 게스트 변환 데이터 구조로부터의 PT 페이지들 및 PD 페이지들을 매핑하는 상기 섀도 변환 데이터 구조 내의 PTE들을 식별하며,상기 하나 이상의 활성 디렉토리 리스트는 활성 페이지 디렉토리(page directory: PD) 엔트리 리스트를 포함하고, 상기 활성 PD 엔트리(PD entry: PDE) 리스트는 상기 활성 PTE 리스트로부터의 상기 PTE들을 갖는 PT들을 가리키는 상기 섀도 변환 데이터 구조 내의 PDE들을 식별하는 방법.
- 제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) 리스트를 포함하는 방법.
- 제10항에 있어서,상기 섀도 변환 데이터 구조 내의 엔트리들과 연관된 상기 속성들은, 상기 섀도 변환 데이터 구조 내의 PDE들과 연관된 액세스 속성들 및 상기 섀도 변환 데이터 구조 내의 PTE들과 연관된 갱신 속성들을 포함하는 방법.
- 제12항에 있어서,상기 게스트 변환 데이터 구조 내의 어느 엔트리들이 상기 VM에 의해 수정되 었는지를 판정하는 단계는,액세스 값으로 설정된 액세스 속성들을 갖는, 동기화되어 있는 상기 활성 PT 계층구조에 대응하는 상기 활성 PDE 리스트로부터 하나 이상의 PDE를 식별하는 단계, 및상기 식별된 PDE들 각각에 대해, 갱신 값으로 설정된 갱신 속성들을 갖는 상기 활성 PTE 리스트로부터 대응하는 PTE들을 찾는 단계를 포함하는 방법.
- 제13항에 있어서,상기 액세스 속성들을 초기화하는 단계, 및상기 갱신 속성들을 초기화하는 단계를 더 포함하는 방법.
- 주소 변환 동작들을 위해 게스트 운영 체제에 의해 사용되는 게스트 PT 계층구조에 기초하여 섀도 페이지 테이블(PT) 계층구조를 생성하는 단계, 및상기 섀도 PT 계층구조 내에 표현되어 있는 상기 게스트 PT 계층구조의 어느 엔트리들이 수정되었는지를 차후에 판정하기 위해 상기 섀도 PT 계층구조로부터 메타데이터를 도출하는 단계를 포함하며,상기 메타데이터는 상기 게스트 운영 체제에 의해 상기 게스트 PT 계층구조 를 형성하는 데 사용되는 페이지들을 매핑하는 맵핑들을 식별하는 활성 엔트리 리스트, 및 상기 섀도 PT 계층구조가 액세스되는 하위 레벨 구조를 참조하는 상위 레벨 매핑 구조들을 식별하는 하나 이상의 활성 디렉토리 리스트를 포함하는 방법.
- 제15항에 있어서,상기 활성 엔트리 리스트는 상기 게스트 PT 계층구조로부터의 PT 페이지들 및 페이지 디렉토리(PD) 페이지들을 매핑하는, 상기 섀도 PT 계층구조 내의 PTE들을 식별하는 활성 PT 엔트리(PTE) 리스트이고,상기 하나 이상의 활성 디렉토리 리스트는 상기 식별된 PTE들을 갖는 PT들을 가리키는, 상기 섀도 PT 계층구조 내의 PDE들을 식별하는 활성 PD 엔트리(PDE) 리스트를 포함하는 방법.
- 제15항에 있어서,상기 활성 엔트리 리스트는 페이지 맵 레벨 4(PML4) 페이지들, 페이지 디렉토리 포인터(PDP) 페이지들, 페이지 디렉토리(PD) 페이지들, 및 PT 페이지들 중 임의의 것을 매핑하는, 상기 섀도 PT 계층구조 내의 PTE들을 식별하는 활성 PT 엔트리(PTE) 리스트이고,상기 하나 이상의 활성 디렉토리 리스트는 활성 PTE 리스트 엔트리들을 갖는 페이지를 참조하는 PDE들을 포함하는 활성 PD 엔트리(PDE) 리스트, 활성 PDE 리스트 엔트리를 갖는 PD를 참조하는 활성 PDPE 엔트리들을 포함하는 활성 PDP 엔트 리(PDPE) 리스트, 및 상기 활성 PDPE 리스트로부터의 요소들을 갖는 PDP를 매핑하는 엔트리들을 포함하는 활성 PML4E 엔트리(PML4E) 리스트를 포함하는 방법.
- 제16항에 있어서,상기 게스트 운영 체제에 의해 상기 게스트 PT 계층구조를 형성하는 데 사용되는 페이지들을 추적하는 단계, 및임의의 동적 랜덤 액세스 메모리(DRAM) 백업된 페이지 프레임에의 매핑들을 추적하는 단계를 더 포함하는 방법.
- 제15항에 있어서,상기 게스트 PT 계층구조 내의 하나 이상의 대규모 페이지를 식별하는 단계, 및상기 하나 이상의 대규모 페이지 각각에 대해 상기 섀도 PT 계층구조에 PT 테이블을 생성하는 단계를 더 포함하는 방법.
- 제15항에 있어서,상기 게스트 PT 계층구조의 구조에서의 변경을 검출하는 단계, 및상기 변경을 반영하기 위해 상기 메타데이터를 수정하는 단계를 더 포함하는 방법.
- 제15항에 있어서,상기 섀도 PT 계층구조의 내용은 상기 TLB에 주소 변환들을 캐싱하기 위해 프로세서에 의해 사용되는 방법.
- 주소 변환 동작들을 위해 가상 머신(VM)에 의해 사용되는 게스트 변환 데이터 구조,가상 머신 모니터(VMM)에 의해 유지되는 섀도 변환 데이터 구조 - 상기 섀도 변환 데이터 구조는 상기 게스트 변환 데이터 구조로부터 포맷 및 구조를 도출함 -, 및상기 섀도 변환 데이터 구조로부터 추출된 메타데이터에 기초하여, 상기 게스트 변환 데이터 구조 내의 어느 엔트리들이 상기 VM에 의해 수정되었는지를 판정하고, 상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들에 대응하는 상기 섀도 변환 데이터 구조 내의 엔트리들을 상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들과 동기화시키는 주소 변환 모듈을 포함하는 장치.
- 제22항에 있어서,상기 주소 변환 모듈은 또한 섀도 변환 데이터 구조들의 작업 세트 - 상기 작업 세트 내의 각각의 섀도 변환 데이터 구조는 상기 VM의 복수의 활성 프로세스 중 하나와 연관되어 있음 - 를 유지하고, 상기 복수의 활성 프로세스 중 하나와 연관된 게스트 변환 데이터 구조가 인에이블되어 있을 때 상기 복수의 활성 프로세스 중 상기 하나와 연관되는 상기 작업 세트로부터의 섀도 변환 데이터 구조의 내용을 재사용하는 장치.
- 제23항에 있어서,상기 특권 이벤트는 다른 게스트 변환 데이터 구조를 인에이블하라는 상기 VM의 요청, 상기 게스트 변환 데이터 구조의 엔트리들과 상기 섀도 변환 데이터 구조의 엔트리들 간의 하나 이상의 불일치에 의해 야기되는 페이지 결함, 및 TLB 내의 하나 이상의 주소 변환을 무효화시키라는 상기 VM의 요청 중 임의의 하나인 장치.
- 주소 변환 동작들을 위해 가상 머신(VM)에 의해 사용되는 게스트 변환 데이터 구조 및 상기 게스트 변환 데이터 구조로부터 포맷 및 구조를 도출하는 섀도 변환 데이터 구조를 저장하는 동적 랜덤 액세스 메모리(DRAM), 및상기 DRAM에 연결되어, 상기 섀도 변환 데이터 구조로부터 추출된 메타데이터에 기초하여, 상기 게스트 변환 데이터 구조 내의 어느 엔트리들이 상기 VM에 의해 수정되었는지를 판정하고, 상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들에 대응하는 상기 섀도 변환 데이터 구조 내의 엔트리들을 상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들과 동기화시키는 프로세서를 포함하는 시스템.
- 제25항에 있어서,상기 프로세서는 또한 섀도 변환 데이터 구조들의 작업 세트 - 상기 작업 세트 내의 각각의 섀도 변환 데이터 구조는 상기 VM의 복수의 활성 프로세스 중 하나와 연관되어 있음 - 를 유지하고, 상기 복수의 활성 프로세스 중 하나와 연관된 게스트 변환 데이터 구조가 인에이블되어 있을 때 상기 복수의 활성 프로세스 중 상기 하나와 연관되는 상기 작업 세트로부터의 섀도 변환 데이터 구조의 내용을 재사용하는 시스템.
- 제26항에 있어서, 상기 특권 이벤트는 다른 게스트 변환 데이터 구조를 인에이블하라는 상기 VM의 요청, 상기 게스트 변환 데이터 구조의 엔트리들과 상기 섀도 변환 데이터 구조의 엔트리들 간의 하나 이상의 불일치에 의해 야기되는 페이지 결함, 및 TLB 내의 하나 이상의 주소 변환을 무효화시키라는 상기 VM의 요청 중 임의의 하나인 시스템.
- 프로세싱 시스템에 의해 실행될 때, 상기 프로세싱 시스템으로 하여금 방법을 수행하게 하는 명령어들을 포함하는 머신 판독가능 매체로서,상기 방법은,TLB에 관한 특권 이벤트로 인해 가상 머신(VM)으로부터 이전된 제어를 받는 단계,가상 머신 모니터(VMM)에 의해 유지되는 섀도 변환 데이터 구조로부터 추출된 메타데이터 및 상기 섀도 변환 데이터 구조 내의 엔트리들과 연관된 속성들에 기초하여, 게스트 변환 데이터 구조 내의 어느 엔트리들이 상기 VM에 의해 수정되었는지를 판정하는 단계, 및상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들에 대응하는 상기 섀도 변환 데이터 구조 내의 엔트리들을 상기 게스트 변환 데이터 구조 내의 상기 수정된 엔트리들과 동기화시키는 단계를 포함하는 머신 판독가능 매체.
- 제28항에 있어서,상기 방법은,섀도 변환 데이터 구조들의 작업 세트를 유지하는 단계 - 상기 작업 세트 내의 각각의 섀도 변환 데이터 구조는 상기 VM의 복수의 활성 프로세스 중 하나와 연관되어 있음 -, 및상기 복수의 활성 프로세스 중 하나와 연관된 게스트 변환 데이터 구조가 인에이블되어 있을 때 상기 복수의 활성 프로세스 중 상기 하나와 연관되는 상기 작업 세트로부터의 섀도 변환 데이터 구조의 내용을 재사용하는 단계를 더 포함하는 머신 판독가능 매체.
- 제29항에 있어서,상기 특권 이벤트는 다른 게스트 변환 데이터 구조를 인에이블하라는 상기 VM의 요청, 상기 게스트 변환 데이터 구조의 엔트리들과 상기 섀도 변환 데이터 구조의 엔트리들 간의 하나 이상의 불일치에 의해 야기되는 페이지 결함, 및 TLB 내의 하나 이상의 주소 변환을 무효화시키라는 상기 VM의 요청 중 임의의 하나인 머신 판독가능 매체.
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)
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)
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)
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 |
-
2005
- 2005-01-28 US US11/045,524 patent/US7395405B2/en active Active
-
2006
- 2006-01-27 JP JP2007553378A patent/JP5038907B2/ja not_active Expired - Fee Related
- 2006-01-27 WO PCT/US2006/003587 patent/WO2006081582A2/en active Application Filing
- 2006-01-27 CN CN2006800031107A patent/CN101107593B/zh not_active Expired - Fee Related
- 2006-01-27 KR KR1020077017491A patent/KR100928353B1/ko not_active IP Right Cessation
- 2006-01-27 EP EP06720101.2A patent/EP1856606B1/en not_active Not-in-force
-
2008
- 2008-05-22 US US12/154,627 patent/US7836275B2/en not_active Expired - Fee Related
Cited By (2)
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 |