KR102435949B1 - 컴퓨팅 장치의 메모리 내 페이지 접근 제어 - Google Patents

컴퓨팅 장치의 메모리 내 페이지 접근 제어 Download PDF

Info

Publication number
KR102435949B1
KR102435949B1 KR1020197004317A KR20197004317A KR102435949B1 KR 102435949 B1 KR102435949 B1 KR 102435949B1 KR 1020197004317 A KR1020197004317 A KR 1020197004317A KR 20197004317 A KR20197004317 A KR 20197004317A KR 102435949 B1 KR102435949 B1 KR 102435949B1
Authority
KR
South Korea
Prior art keywords
page
access
rmt
entry
virtual machine
Prior art date
Application number
KR1020197004317A
Other languages
English (en)
Other versions
KR20190026909A (ko
Inventor
데이비드 에이. 카플란
제레미 더블유. 파웰
토마스 알. 워렐
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/224,302 external-priority patent/US10169244B2/en
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20190026909A publication Critical patent/KR20190026909A/ko
Application granted granted Critical
Publication of KR102435949B1 publication Critical patent/KR102435949B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables

Landscapes

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

Abstract

테이블 워크는 요청 개체로부터, 제1 주소를 메모리의 페이지와 연관된 제2 주소로 변환하기 위한 요청을 수신한다. 대응하는 테이블 워크 중에, 페이지에 대한 역방향 맵 테이블(RMT) 내 엔트리의 잠금 표시자가 RMT 내 엔트리를 잠겨진 것으로 표시하도록 설정될 때, 테이블 워커는 요청 처리를 중지하고 수정 작업을 수행한다. 또한, 요청이 페이지의 쓰기 액세스와 연관되어 있고 RMT 내 엔트리의 변경 불가의 표시자가 페이지를 변경 불가로 표시하도록 설정될 때, 테이블 워커는 요청 처리를 중지하고 수정 작업을 수행한다. 그 외, RMT 내 엔트리가 잠기지 않고 쓰기 액세스에 대해 페이지가 변경 불가로 표시되지 않으면, 테이블 워커는 요청 처리를 계속한다.

Description

컴퓨팅 장치의 메모리 내 페이지 접근 제어
본 발명은 컴퓨팅 장치의 메모리 내 페이지 접근 제어에 관한 것이다.
일부 컴퓨팅 장치는 소프트웨어 프로그램들의 실행을 지원하기 위해 컴퓨팅 장치들의 하드웨어와 에뮬레이팅하거나 그 외 인터페이스싱하는 소프트웨어 개체들인 가상 기계들을 실행한다. 예를 들어, 가상 기계는 "게스트" 운영 체제들이라고 불리우는, 하나 이상의 운영 체제 인스턴스 실행을 지원하기 위해 컴퓨팅 장치(프로세서들, 메모리들, 네트워크 인터페이스들 등)의 하드웨어 요소들을 사용할 수 있다. 게스트 운영 체제들은 차례로 응용 프로그램들, 데이터베이스들 등과 같은 다른 소프트웨어 프로그램들의 실행을 지원한다.
일부 컴퓨팅 장치는 두 개 이상의 가상 기계를 동시에(예를 들어, 대응하는 기간 구획들에, 하나 이상의 프로세서 코어 상에서 병렬적으로 등) 실행한다. 그러한 컴퓨팅 장치들에서, 각각의 가상 기계는 가상 기계의 사용을 위해 배타적으로 할당되는 하드웨어 자원들에 액세스할 수 있을 수 있다. 예를 들어, 각각의 가상 기계는 가상 기계의 배타적인 사용을 위해 컴퓨팅 장치 내 메모리의 대응하는 영역에 할당될 수 있다. 이러한 컴퓨팅 장치들에서, 제1 가상 기계는 제2 가상 기계에 할당된 메모리의 영역에 액세스하는 것이 금지될 수 있으며 그 반대도 가능할 수 있다. 이러한 컴퓨팅 장치 중 일부에서는, 하이퍼바이저가 각 가상 기계에 대한 액세스 제어를 시행한다. 하이퍼바이저들은 컴퓨팅 장치들 상에서 작동/실행하고 컴퓨팅 장치 상에서 실행되는 가상 기계들에 대한 관리기 또는 제어기로 기능하는 소프트웨어 개체들이다. 예를 들어, 하이퍼바이저들은 가상 기계들을 시작 또는 초기화하고, 가상 기계들에 의해 컴퓨팅 장치 하드웨어의 액세스를 제어하고, 가상 기계들을 종료하거나 닫는 등을 할 수 있다.
하이퍼바이저들이 가상 기계들 대한 액세스를 제어하는 것으로 가정되지만, 하이퍼바이저가 액세스 제어를 항상 적절하게 시행하지 않을 수 있다. 예를 들어, 하이퍼바이저의 일부 또는 전체 프로그램 코드가 악성 프로그램 코드로 대체되거나, 하이퍼바이저의 프로그램 코드가 손상되거나 오류를 포함할 수 있는 등이다. 그러한 경우, 하이퍼바이저는 의도적 또는 비의도적으로 가상 기계가 다른 가상 기계에 할당된 컴퓨팅 하드웨어에 액세스하게 할 수 있다. 예를 들어, 일부 컴퓨팅 장치에서, 하이퍼바이저는 가상 기계가 메모리의 대응하는 영역들의 데이터에 액세스할 수 있게 하기 위해 주소 정보를 제공하는 것에 책임이 있다. 이러한 컴퓨팅 장치들에서, 하이퍼바이저는 가상 기계(또는 그것 상에서 실행되는 소프트웨어)가 사용하는 로컬 주소들과 메모리 내 데이터가 실제로 위치한 물리 주소들 사이에서 변환한다. 하이퍼바이저가 정확하게 기능하지 않을 때, 하이퍼바이저는 부정확한 어레스 정보를 제공할 수 있고, 그에 의해 가상 기계가 예기치 않은 또는 원치 않는 메모리의 영역들(예를 들어, 다른 가상 기계들에 할당된 메모리의 영역들)의 데이터에 액세스하도록 지시할 수 있다. 설명된 바와 같이 부정확한 주소 정보를 제공하면, 하이퍼바이저는 데이터가 하나 이상의 액세스 제어 또는 규칙을 위반하여 액세스되게 할 수 있는 것이다.
도 1은 일부 실시 예에 따른 가상 기계들 및 하이퍼바이저를 도시한 블록도를 나타낸다.
도 2는 일부 실시 예에 따른 컴퓨팅 장치를 도시한 블록도를 나타낸다.
도 3은 일부 실시 예에 따라 게스트 페이지 테이블을 구현하는데 사용되는 테이블 세트를 도시한 블록도를 나타낸다.
도 4는 일부 실시 예에 따른 역방향 맵 테이블을 도시한 블록도를 나타낸다.
도 5는 일부 실시 예에 따른 게스트 액세스 페이지 테이블을 도시한 블록도를 나타낸다.
도 6은 일부 실시 예에 따라 역방향 맵 테이블을 업데이트하기 위한 방법을 도시한 블록도를 나타낸다.
도 7은 일부 실시 예에 따라 게스트 액세스 페이지 테이블에서 표시자를 소거하기 위한 방법을 도시한 블록도를 나타낸다.
도 8은 일부 실시 예에 따라 역방향 맵 테이블 및 게스트 액세스 페이지 테이블을 사용하기 위한 방법을 도시한 블록도를 나타낸다.
도 9는 일부 실시 예에 따라 가상 기계가 대응하는 페이지에 액세스할 수 있는지 여부를 결정하기 위한 방법을 도시한 블록도를 나타낸다.
도 10은 일부 실시 예에 따라 역방향 맵 테이블을 초기화하기 위한 방법을 도시한 블록도를 나타낸다.
도면들 및 설명 전체에 걸쳐, 동일한 참조 부호들은 동일한 도면 요소들을 나타낸다.
이하의 설명은 당업자가 설명된 실시 예들을 만들고 사용할 수 있게 하기 위해 제시되며, 특정 적용 예 및 그 요건의 상황에서 제공된다. 설명된 실시 예들에 대한 다양한 변형이 당업자들에게 용이하게 명백할 것이고, 여기에 정의된 일반적인 원리들은 다른 실시 예들 및 적용 예들에 적용될 수 있다. 따라서, 설명된 실시 예들은 도시된 실시 예들에 제한되지 않고, 본 출원에 개시된 원리들 및 특징들과 일치하는 가장 넓은 범위에 따른다.
가상 메모리
설명된 실시 예들에서, 컴퓨팅 장치는 컴퓨팅 장치에서 실행되는 프로그램들에 의한 데이터 액세스를 처리하기 위해 가상 메모리 기술을 사용한다. 예를 들어, 프로그램들은 응용 프로그램들, 운영 체제들, 장치 드라이버들, 가상 기계들, 주변 장치들에 의해 실행되는 소프트웨어 등을 포함할 수 있다. 일반적으로, 컴퓨팅 장치 내의 프로그램에 의해 데이터가 액세스될 때, 데이터를 포함하는 소정의 크기(예를 들어, 4 kB, 2 MB 등)의 블록 또는 "페이지"가 대용량 저장 장치(예를 들어, 디스크 드라이브 또는 반도체 메모리)로부터 컴퓨팅 장치 내 메모리에서의 이용 가능한 물리적 위치로 복사되거나 메모리에 새롭게 생성된다. 프로그램들이 메모리에서의 페이지들의 물리적 위치들을 추적하도록 요구받는 것을 피하기 위해, 컴퓨팅 장치가 프로그램들에 대한 페이지들의 물리적 위치들을 추적한다. 프로그램들은 페이지들의 물리적 위치들에 기초한 주소들(또는 "물리 주소들")을 사용하여 메모리에 액세스하는 대신, 대응하는 프로그램들에 특정한 로컬 주소 공간들인 "가상 주소 공간들"의 "가상 주소들"을 사용하여 메모리에 액세스한다. 프로그램의 관점에서, 가상 주소들은 데이터가 메모리에 저장되는 실제 물리적 위치들을 나타내고, 그에 따라 가상 주소들을 사용하여 프로그램들이 메모리 액세스를 수행한다. 그러나, 가상 주소들은 메모리의 페이지들에 데이터가 저장되는 실제 위치들의 물리 주소들에 직접 매핑되지 않을 수 있다. 컴퓨팅 장치는 페이지들의 물리적 위치들을 추적하는 일환으로, 메모리 액세스 요청들에서의 프로그램들에 의해 사용되는 가상 주소들을 데이터가 실제로 위치한 물리 주소들로 변환한다. 그 다음 컴퓨팅 장치는 물리 주소들을 사용하여 프로그램들에 대한 메모리 액세스를 수행한다.
전술한 가상 주소를 물리 주소 변환할 수 있게 하기 위해, 컴퓨팅 장치는 "페이지 테이블"을 포함한다. 페이지 테이블은 엔트리 또는 "페이지 테이블 엔트리(page table entry)"를 메모리에 저장된 데이터의 페이지들에 대한 가상 주소 대 물리 주소 변환 정보와 포함하는 컴퓨팅 장치의 메모리에 저장된 레코드이다. 즉, 페이지 테이블은 가상 주소들의 대응하는 물리 주소들로의 "매핑들"을 포함한다. 소정의 가상 주소의 메모리에 액세스하기 위한 요청을 프로그램으로부터 수신하면, 컴퓨팅 장치는 "페이지 테이블 워크(page table walk)"를 수행함으로써 페이지 테이블로부터 대응하는 물리 주소 정보를 획득하며, 이 동안 페이지 테이블은 가상 주소와 연관된 물리 주소를 제공하는 페이지 테이블 엔트리가 검색된다.
전술한 페이지 테이블 워크들이 상대적으로 느리기 때문에, 페이지 테이블 워크들을 수행하는 것을 피하는 것이 바람직하다. 따라서, 컴퓨팅 장치는 페이지 테이블 워크들 동안 획득된 페이지 테이블 엔트리들(또는 페이지 테이블 엔트리들에 기초한 정보)의 제한된 수의 카피를 저장하기 위해 사용되는 로컬 캐시들인 변환 색인 버퍼("TLB(translation lookaside buffer)")들을 포함한다. 동작 동안, 컴퓨팅 장치는 먼저 가상 주소 대 물리 주소 변환을 수행하기 위해 대응하는 TLB로부터 캐싱된 페이지 테이블 엔트리들을 획득하려고 시도한다. 대응하는 페이지 테이블 엔트리의 카피가 TLB에 존재하지 않을 때(즉, "미스"가 발생할 때), 컴퓨팅 장치는 페이지 테이블 워크를 수행하여 원하는 페이지 테이블 엔트리를 획득하고 - 획득된 페이지 테이블 엔트리의 카피를 TLB에 캐싱한다.
가상 기계들, 하이퍼바이저들 및 계층적 페이지 테이블들
바람직한 실시 예들에서, 컴퓨팅 장치는 소프트웨어 프로그램들의 실행을 지원하기 위해 컴퓨팅 장치들의 하드웨어와 에뮬레이팅하거나 그 외 인터페이스싱하는 소프트웨어 개체들인 가상 기계들을 실행한다. 예를 들어, 가상 기계는 "게스트" 운영 체제들이라고 불리우는, 하나 이상의 운영 체제 인스턴스 실행을 지원하기 위해 컴퓨팅 장치(프로세서들, 메모리들, 네트워크 인터페이스들 등)의 하드웨어 요소들을 사용할 수 있다. 게스트 운영 체제들은 차례로 응용 프로그램들, 데이터베이스들 등과 같은 다른 소프트웨어 프로그램들의 실행을 지원한다.
바람직한 실시 예들에서, 컴퓨팅 장치는 두 개 이상의 가상 기계를 동시에(예를 들어, 대응하는 기간 구획들에, 하나 이상의 프로세서 코어 상에서 병렬적으로 등) 실행한다. 이러한 실시 예들에서, 각각의 가상 기계는 가상 기계의 사용을 위해 할당되는 다양한 하드웨어 자원과 연관될 수 있다. 예를 들어, 각각의 가상 기계는 할당된 메모리의 영역(들)(예를 들어, 연속적 또는 비연속적인 메모리의 블록들)에 대해 배타적으로 액세스하게 될 수 있다. 즉, 제1 가상 기계는 제2 가상 기계에 할당된 메모리의 영역들 내 데이터의 페이지들에 액세스하는 것이 금지될 수 있으며 그 반대도 가능할 수 있다. 바람직한 실시 예들에서는, 하이퍼바이저가 각 가상 기계에 대한 액세스 제어를 시행한다. 하이퍼바이저는 컴퓨팅 장치 상에서 작동 또는 실행되고 컴퓨팅 장치 상에서 실행되는 가상 기계들에 대한 관리기 또는 제어기로 기능하는 소프트웨어 개체이다. 예를 들어, 하이퍼바이저는 가상 기계들을 시작 또는 초기화하고, 가상 기계들에 의해 컴퓨팅 장치 하드웨어의 액세스를 제어하고, 가상 기계들을 종료하거나 닫는 등을 할 수 있다.
도 1은 일부 실시 예에 따른 가상 기계들 및 하이퍼바이저를 도시한 블록도를 나타낸다. 도 1에서 알 수 있는 바와 같이, 게스트 운영 체제("게스트 OS")(102) 및 데이터베이스들, 소프트웨어 응용 프로그램들 등과 같은 하나 이상의 프로그램("PRGRMS")(104)을 각각 실행하는 세 개의 가상 기계("VM")(100)이 있다. 가상 기계들(100)은 호스트 운영 체제("호스트 OS")(108)와 가상 기계들(100) 사이를 인터페이싱하는 하이퍼바이저(106)와 통신한다. 호스트 운영 체제(108)는 컴퓨팅 장치 하드웨어(110)와 하이퍼바이저(106) 사이의 인터페이스를 제공한다. 다양한 요소가 도 1에 제시되어 있지만, 일부 실시 예에서, 요소들의 상이한 배열들이 존재한다. 예를 들어, 일부 실시 예에서는, 호스트 운영 체제(108)가 존재하지 않고 하이퍼바이저(106)가 컴퓨팅 장치 하드웨어(110)와 보다 직접적으로 통신한다. 다른 예로서, 상이한 수의 가상 기계(100)가 존재할 수 있다.
설명된 실시 예들에서, 게스트 운영 체제들 및 하이퍼바이저 모두는 상술한 가상 메모리 기술을 사용한다. 따라서 페이지 테이블들의 계층 구조가 컴퓨팅 장치에서 유지된다. 페이지 테이블들의 계층 구조 내에서, 각각의 게스트 운영 체제는 로컬 페이지 테이블(게스트 페이지 테이블)과 연결되고 하이퍼바이저는 내포 페이지 테이블과 연관된다. 일반적으로, 게스트 운영 체제 하에서 실행되는 프로그램에 의해 사용되는 가상 주소로부터 시스템 물리 주소로의 변환 요청을 프로세서로부터 수신하면, 하드웨어 테이블 워커(즉, 페이지 테이블 워크들을 수행하도록 구성된 회로)는 게스트 페이지 테이블 및 내포 페이지 테이블을 사용하여 변환을 수행한다. 보다 구체적으로, 테이블 워커는 게스트 페이지 테이블을 사용하여 프로그램에 의해 사용되는 가상 주소를 게스트 운영 체제의 로컬 주소인 게스트 물리 주소로 변환한다. 게스트 물리 주소는 프로그램에 의해 액세스될 데이터(또는 명령 등)가 저장되는 메모리의 위치에 직접 매핑되지 않을 수 있기 때문에, 테이블 워커는 내포 페이지 테이블을 사용하여 게스트 물리 주소를 데이터가 저장된 메모리의 실제 위치를 나타내는 주소인 시스템 물리 주소로 변환한다. 시스템 물리 주소를 획득하면, 테이블 워커는 데이터 액세스에 사용할 시스템 물리 주소를 제공하고, 시스템 물리 주소를 TLB에 캐싱할 수도 있다.
설명된 실시 예들에서, 하이퍼바이저는 내포 페이지 테이블 내 정보에 관해 다양한 동작을 수행할 수 있다. 예를 들어, 하이퍼바이저는 게스트 물리 주소들로부터 시스템 물리 주소들로의 매핑들을 업데이트(즉, 덮어 쓰기) 등을 할 수 있다. 후술하는 바와 같이, 설명된 실시 예들은 하이퍼바이저에 의해 부정확한 매핑/변환이 제공되는 것과 같은 방식으로 하이퍼바이저에 의해 내포 페이지 테이블 내 정보가 변경되지 않았음(악의적으로, 잘못하여 등으로)을 보장하는 동작들을 수행한다.
개요
설명된 실시 예들은 컴퓨팅 장치의 메모리 내 페이지들에 대한 가상 기계들에 의한 액세스를 제어하기 위한 메커니즘들을 포함한다. 보다 구체적으로, 설명된 실시 예들은 다른 것들 중에서도, 하이퍼바이저(및/또는 컴퓨팅 장치 내의 다른 개체)가 내포 페이지 테이블로 게스트 물리 주소들로부터 시스템 물리 주소들로의 변환을 재매핑하지 않았음을 보장하는데 사용되는 한 쌍의 테이블을 포함한다. 한 쌍의 테이블은: (1) 역방향 맵 테이블 및(2) 게스트 액세스 페이지 테이블을 포함한다. 역방향 맵 테이블은 다른 것들 중에서도, 게스트 물리 주소에 대한 내포 페이지 테이블의 테이블 워크 동안 획득된 시스템 물리 주소가 이전에 사용된 시스템 물리 주소와 매칭하는지 여부를 결정하는데 사용될 수 있는 정보를 포함한다. 즉, 역방향 맵 테이블을 사용하여 메모리의 소정의 페이지에 대한 시스템 물리 주소가 한 번에 단지 하나의 게스트 물리 주소에만 매칭됨을 보장할 수 있다. 게스트 액세스 페이지 테이블에는 가상 기계가 메모리의 영역의 페이지들에 이전에 액세스한 것으로 기록되는지 여부를 결정하는데 사용할 수 있는 정보가 포함된다.
일부 실시 예에서, 게스트 물리 주소를 시스템 물리 주소로 변환할 때(예를 들어, 대응하는 가상 기계 대신 프로세서 내의 로드/저장 유닛으로부터의 요청에 기초하여), 하드웨어 테이블 워커(예를 들어, 메모리 관리 유닛 내)은 내포 페이지 테이블 내 대응하는 엔트리로부터, 시스템 물리 주소를 획득하기 위해 내포 페이지 테이블의 테이블 워크를 수행한다. 내포 페이지 테이블, 그리고 그에 따라 대응하는 엔트리가 수정되었는지 여부를 알 수 없으므로 대응하는 엔트리의 매핑/변환이 대응하는 규칙들을 위반하는지 여부(예를 들어, 대응하는 페이지가 다수의 게스트 물리 주소와 연관되어 있음 등)를 알 수 없다. 이러한 이유로, 테이블 워커는 내포 페이지 테이블로부터 시스템 물리 주소를 획득할 때, 가상 기계가 컴퓨팅 장치 내 메모리의 대응하는 페이지에 액세스할 수 있는지 여부를 결정하기 위해 역방향 맵 테이블 및 대응하는 게스트 액세스 페이지 테이블 중 적어도 하나를 검사한다. 보다 구체적으로, 테이블 워커는 다른 것들 중에서도(예를 들어, 대응하는 페이지가 변경 불가임, 시스템 물리 주소에 대응하는 역방향 맵 테이블 내 엔트리가 잠겨 있지 않음 등), 시스템 물리 주소에 대응하는 엔트리가 유효하고 요청으로부터의 게스트 물리 주소와 매칭하는 기록된 게스트 물리 주소를 가짐을 보장하기 위해 역방향 맵 테이블을 검사한다. 이것이 참일 때, 시스템 물리 주소가 게스트 물리 주소와 매칭한다(즉, 시스템 물리 주소가 게스트 물리 주소에만 매핑한다)고 결정될 수 있다. 그 다음 테이블 워커는 역방향 맵 테이블 내 엔트리에서 페이지 액세스 정보를 검사하여 페이지 액세스 정보가 가상 기계가 이미 메모리의 페이지에 액세스했음을 나타내는지를 결정한다. 만약 그렇다면, 테이블 워커는 시스템 물리 주소를 로드/저장 유닛에 리턴한다. 그 외, 페이지 액세스 정보가 가상 기계가 아직 메모리 페이지에 액세스하지 않았 음을 나타낼 때, 테이블 워커는 게스트 액세스 페이지 테이블에서 색인을 수행하여 게스트 액세스 페이지 테이블의 페이지 액세스 정보가 매칭되는지 또는 그 외 일치하는지(즉, 액세스되지 않았음을 나타내는지)를 결정한다. 역방향 맵 테이블의 검사 또는 게스트 액세스 페이지 테이블의 검사가 미스매치 또는 그 외 불일치를 리턴할 때, 테이블 워커는 변환에 실패하고 하이퍼바이저에 에러 메시지를 리턴할 수 있다. 에러를 수신하면, 하이퍼바이저는 개선 조치를 수행(예를 들어, 에러 처리 코드, 폴트 등을 실행)할 수 있다. 그에 반해, 역방향 맵 테이블 및 게스트 액세스 페이지 테이블 양자의 검사 모두 매치 또는 그 외 일치(즉, 대응하는 페이지가 가상 기계에 의해 액세스되었든 아니었든 일치)를 리턴할 때, 테이블 워커는 시스템 물리 주소를 로드/저장 유닛에 리턴하여, 로드/저장 유닛이 시스템 물리 주소를 사용하여 메모리 액세스를 수행할 수 있게(그리고 가능한 시스템 물리 주소 및/또는 TLB의 테이블 워크로부터의 다른 정보를 캐싱할 수 있게 등) 한다.
설명된 실시 예들은 역방향 맵 테이블 및 게스트 액세스 페이지 테이블을 사용함으로써, 잠재적으로 내포 페이지 테이블의 악의적인 또는 잘못된 수정을 검출할 수 있게 한다. 내포 페이지 테이블의 그러한 수정들을 피하면 하이퍼바이저(및/또는 다른 개체)가 게스트 물리 주소들을 시스템 물리 주소들에 부적절하게 재매핑하여 가상 기계들에 메모리의 알려지지 않은, 원치 않는 또는 부정확한 영역들(다른 가상 기계들에 할당된 메모리의 영역들을 포함함)의 데이터에 액세스(예를 들어, 덮어 쓰기, 실행 등)하도록 지시하는 것을 피함으로써 컴퓨팅 장치 내의 가상 기계들에 대한 데이터의 보안을 향상시킬 수 있다. 즉, 설명된 실시 예들은 본 출원에 설명되는 바와 같이 메모리 내의 각 페이지가 단일/고유 게스트 물리 주소와만 연관되도록 허가되고(게스트 물리 주소 앨리어싱이 허용되지 않음), 사용 비공개 게스트 페이지들이 대응하는 가상 기계를 수반하지 않고는 재매핑될 수 없는 것과 같은 규칙들을 강제함으로써 데이터 보안을 향상시킬 수 있다. 또한, 설명된 실시 예들은 단독으로 또는 가상 기계 메모리 영역들의 암호화 및 가상 기계 프로세서 상태(예를 들어, 레지스터 등)에 대한 보호와 같은 다른 기술들과 조합하여, 하이퍼바이저들에 대한 절대적인 신뢰의 필요를 피할 수 있으며, 이는 컴퓨팅 장치들에 대한 관리를 단순화하고, 보안을 향상시키는 등을 할 수 있다. 예를 들어, 설명된 실시 예들은 변경 불가 페이지들을 사용하여(이하에서 보다 상세하게 설명되는 바와 같이), 하이퍼바이저가 메모리의 페이지들의 현재 버전의 데이터(암호화된 데이터를 포함함)를 이전 버전의 데이터로 악의적으로 덮어 쓰지 못하게 함으로써, 하이퍼바이저가 "재전송(replay)" 공격을 수행하는 것을 피할 수 있다. 따라서, 설명된 실시 예들은 컴퓨팅 장치들의 소비자들에 대한 보안, 동작 안정성 및 가치를 향상시킬 수 있다.
컴퓨팅 장치
도 2는 일부 실시 예에 따른 컴퓨팅 장치(200)를 도시한 블록도를 나타낸다. 도 2에서 알 수 있는 바와 같이, 컴퓨팅 장치(200)는 프로세서(202), 메모리(206), 대용향 저장 장치(216), 및 직접 메모리 액세스 메커니즘("DMA(direct memory access mechanism)")(218)을 포함한다. 프로세서(202)는 컴퓨팅 장치(200)에서 컴퓨터 동작들을 수행하는 장치이다. 프로세서(202)는 두 개의 코어, 즉 코어들(208 및 209)를 포함하며, 이들 각각은 중앙 처리 장치들(CPU), 그래픽 처리 장치들(GPU), 내장형 프로세서들, 주문형 집적 회로들(ASIC) 및/또는 다른 컴퓨터 메커니즘들과 같은 하나 이상의 컴퓨터 메커니즘을 포함한다.
프로세서(202)는 또한 컴퓨터 동작들을 수행하기 위해 코어들(208 및 209)에 의해 사용되는 데이터 및 명령어들을 로컬에 저장하기 위해 사용되는 캐시 메모리들(또는 "캐시들")을 포함한다. 도 2에서 알 수 있는 바와 같이, 프로세서(202) 내의 캐시들은 각각의 코어들(208 및 209)에 레벨 1(L1) 캐시들(210 및 211)("L1(210)" 및 "L1(211)")을 포함한다. 각각의 L1 캐시는 정적 랜덤 액세스 메모리(SRAM, static random access memory), 동적 랜덤 액세스 메모리(DRAM, dynamic random access memory), 더블 데이터 레이트 동기식 DRAM(DDR SDRAM) 및/또는 대응하는 코어(208 및 209)에 의해 사용할 데이터 및 명령어들을 저장하기 위한 다른 유형들의 메모리 회로들 중 하나 이상과 같은 메모리 회로들, 뿐만 아니라, 메모리 회로들에 저장된 데이터 및 명령어들의 액세스를 처리하기 위한 제어 회로들을 포함한다. 프로세서(202)는 SRAM, DRAM, DDR SDRAM 및/또는 코어들 양자(208 및 209)에 의해 사용할 데이터 및 명령어들을 저장하기 위한 다른 유형들의 메모리 회로들 중 하나 이상과 같은 메모리 회로들, 뿐만 아니라, 메모리 회로들에 저장된 데이터 및 명령어들의 액세스를 처리하기 위한 제어 회로들을 포함하는 공유된 레벨-2(L2) 캐시(212)를 추가로 포함한다. 프로세서(202)는 SRAM, DRAM, DDR SDRAM 및/또는 코어들 양자(208 및 209)에 의해 사용할 데이터 및 명령어들을 저장하기 위한 다른 유형들의 메모리 회로들 중 하나 이상과 같은 메모리 회로들, 뿐만 아니라, 메모리 회로들에 저장된 데이터 및 명령어들의 액세스를 처리하기 위한 제어 회로들을 포함하는 공유된 레벨-3(L3) 캐시(204)를 더 포함한다.
프로세서(202)는 플랫폼 보안 프로세서("PSP(platform security processor)")(232)를 더 포함한다. 플랫폼 보안 프로세서(232)는 컴퓨팅 장치(200)에서 보안 동작들을 수행하기 위한 프로세서 코어, ASIC 및/또는 다른 기능 블록(들)을 포함한다. 일반적으로, 플랫폼 보안 프로세서(232)는 하드웨어 및 소프트웨어 개체들의 악의적인 또는 잘못된 거동에 안전하다고 알려져 있고, 그에 따라 이러한 거동에 취약한 동작들을 보안하기 위해 컴퓨팅 장치(200) 내에서 사용될 수 있다. 예를 들어, 플랫폼 보안 프로세서(232)는 암호화 동작들(예를 들어, 키 생성, 데이터의 암호화/복호화 등), 하드웨어 및 소프트웨어 개체들의 등록 및/또는 인증 수행과 같이, 컴퓨팅 장치(200)에서 신뢰된 실행 환경을 인에이블하는 것과 연관된 동작들을 수행할 수 있다. 일부 실시 예에서, 플랫폼 보안 프로세서(232)는 컴퓨팅 장치(200)의 메모리(206) 내의 페이지들에 대한 가상 기계들에 의한 액세스를 제어하기 위해 본 출원에 설명된 동작들 중 적어도 일부를 수행한다.
메모리(206)는 컴퓨팅 장치(200)의 "메인 메모리"이고, DRAM, DDR SDRAM, 비휘발성 랜덤 액세스 메모리(NVRAM) 및/또는 컴퓨팅 장치(200)에서의 기능 블록들에 의해 사용할 데이터 및 명령어들을 저장하기 위한 다른 유형들의 메모리 회로들 중 하나 이상과 같은 메모리 회로들, 뿐만 아니라, 메모리 회로들에 저장된 데이터 및 명령어들의 액세스를 처리하기 위한 제어 회로들을 포함한다. 컴퓨팅 장치에 의해 실행되는 가상 기계들은 가상 기계들의 배타적인 사용을 위해 할당된 메모리의 대응하는 영역들을 가질 수 있으며, 그에 따라 소정의 가상 기계가 대응하는 영역의 데이터에 액세스해야 하는 유일한 가상 기계가 된다.
대용량 저장 장치(216)는 컴퓨팅 장치(200)에서 사용하기위한 데이터 및 명령어들을 저장하는 대용량 반도체 메모리(플래시 메모리, NVRAM 등과 같은 비휘발성 반도체 메모리), 디스크 드라이브(하드 드라이브 등), 광 드라이브 등과 같은 대용량 저장 장치를 포함한다. 설명된 실시 예들에서, 대용량 저장 장치(216)는 컴퓨팅 장치(200)에서의 기능 블록들에 의한 차후 사용을 위해 메모리(206)에 저장되도록 획득된 데이터 및 명령어들을 유지한다. 예를 들어, 데이터 및/또는 명령어들은 대용량 저장 장치(216)로부터 소정의 크기(예를 들어, 4 kB, 2 MB, 1 GB 등)의 블록들 또는 "페이지들"로 검색될 수 있고 페이지들은 메모리(206)에 저장될 수 있다. 또한, 페이지들은 메모리(206)에서의 이용 가능한 물리적 위치에 새롭게 생성될 수 있다(예를 들어, 컴퓨터 결과들 등을 저장하기 위해). 메모리(206)에 저장하기 위해 대용량 저장 장치(216)로부터 검색된 페이지들은 특정 가상 기계의 배타적 액세스를 위해 예비 할당될 수 있거나 가상 기계들 간에 공유될 수 있다.
메모리 관리 유닛(214)은 프로세서(202)에서의 메모리 액세스 요청들을 처리하는 기능 블록이다. 데이터 및 명령어들이 프로세서(202)의 기능 블록에 의해 액세스될(즉, 코어(208) 또는 다른 기능 블록에 의해 판독, 기입, 검사/검증, 삭제, 무효화되는 등) 때, 기능 블록은 메모리 액세스 요청을 메모리 관리 유닛(214)으로 전송한다. 그 다음 메모리 관리 유닛(214)은 메모리 액세스 요청의 만족/해결을 위해 L2 캐시(212), L3 캐시(204) 및 메모리(206) 중 하나 이상에 대응하는 요청을 전송한다. 예를 들어, 메모리 액세스 요청에 기초하여 데이터가 검색될 경우, 메모리 관리 유닛(214)은 L2 캐시(212), L3 캐시(204) 또는 메모리(206)(또는 데이터가 L2 캐시(212), L3 캐시(204) 또는 메모리(206) 중 하나에 존재하지 않는다면, 대용량 저장 장치(216))로부터 데이터를 획득하고 데이터를 요청한 기능 블록으로 전송할 수 있다.
전술한 바와 같이, 컴퓨팅 장치(200)는 가상 메모리를 사용하여 소프트웨어 프로그램들(예를 들어, 코어들(208 및 209)에 의해 실행되는)이 물리 주소들로 변환되어야 하는 가상 주소들을 사용하여 메모리에 액세스할 수 있게 한다. 메모리 관리 유닛(214), 예를 들어, 메모리 관리 유닛(214)에서의 테이블 워커 기능 블록은 가상 주소과 프로그램으로부터 메모리 액세스 요청을 수신하면, 가상 주소를 메모리(206)에 데이터가 위치한 페이지들에 대한 물리 주소로 변환하기 위한 동작들을 수행한다.
일부 실시 예에서, 메모리 관리 유닛(214)은 가상 주소 대 물리 주소 변환을 수행하기 위해 두 개의 메커니즘을 사용한다. 첫 번째 메커니즘은 각 게스트 운영 체제와 연관된 페이지 테이블 및 하이퍼바이저와 연관된 페이지 테이블을 포함하는 페이지 테이블들의 계층 구조이다. 페이지 테이블들의 예들은 도 2에 각각, 게스트 운영 체제 및 하이퍼바이저와 연관되는, 게스트 페이지 테이블(222) 및 내포 페이지 테이블(224)로서 도시된다. 각 페이지 테이블은 메모리(206)에 저장된 데이터 구조(예를 들어, 하나 이상의 테이블, 어레이, 리스트 등)이다. 예를 들어, 게스트 페이지 테이블(222)은 대응하는 가상 기계의 배타적 액세스를 위해 할당된 예비 할당된 메모리 영역(226)과 같은 메모리 영역에 저장될 수 있다. 일부 실시 예에서, 소정의 페이지 테이블은 대응하는 프로그램, 가상 기계 등에 의해 메모리(206)에 저장된 메모리(206)에 존재하는 각각의 페이지에 대한 적어도 하나의 변환을 저장한다. 그에 따라, 이러한 실시 예들에서, 페이지가 대용량 저장 장치(216)로부터 메모리(206)로 복사되거나 메모리(206)에 새로 생성되고 메모리(206)에 이용 가능하게 유지되면, 관련 가상 주소 대 물리 주소 변환이 대응하는 페이지 테이블에 존재해야 한다. 전술한 바와 같이, 테이블 워커는 게스트 페이지 테이블(222) 및 내포 페이지 테이블(224)을 사용하여 가상 주소 대 물리 주소 변환을 수행한다.
가상 주소 대 물리 주소 변환을 수행하기 위한 두 번재 메커니즘은 변환 색인 버퍼들(220 및 221)("TLB(220)" 및 "TLB(221)")이며, 이들은 페이지 테이블 워크들 동안 획득된 가상 주소 대 물리 주소 변환 정보를 저장/캐싱하도록 구성된 각각의 코어(208 및 209) 내 캐시들이다. 코어들(208 및 209)은 가능하면, 페이지 테이블 워크를 수행하는 것을 피하기 위해, 대응하는 TLB(220 및 221)로부터 가상 주소 대 물리 주소 변환 정보를 획득한다.
직접 메모리 액세스 메카니즘(218)은 대용량 저장 장치(216)로부터 메모리(206)로 그리고 그 반대로 데이터의 전달을 수행하도록 구성된 기능 블록이다. 일반적으로, 직접 메모리 액세스 메커니즘(218)은 데이터 전달 동작들을 프로세서(202)로부터 분담시키며, 이는 프로세서(202)가 메모리 전달을 수행하는 것과 관련된 컴퓨터 작업의 일부를 수행하는 것을 피할 수 있게 한다.
컴퓨팅 장치(200)는 메모리(206)에 저장된 역방향 맵 테이블(228)을 포함한다. 역방향 맵 테이블(228)은 하나의 엔트리가 하나 이상의 가상 기계의 사용을 위해 할당될 수 있는 메모리(206) 내 메모리의 각 페이지에 대한 것인, 다수의 엔트리를 포함하는 데이터 구조(예를 들어, 테이블, 리스트 등)이다. 예를 들어, 메모리(206)가 가상 기계들에 4 kB 페이지들로 할당될 수 있는 32 GB의 메모리를 포함하면, 역방향 맵 테이블은 8,388,608개의 엔트리를 포함한다. 역방향 맵 테이블(228)은 시스템 물리 주소들과 연관된 게스트 물리 주소들을 나타내는 정보를 포함하는 기록들을 유지하기 위해, 변경 불가 페이지들의 기록들을 유지하기 위해 그리고 대응하는 페이지들과 연관된 다른 정보의 기록들을 유지하기 위해 하이퍼바이저 및 다른 개체들에 의해 사용된다. 이러한 방식으로, 컴퓨팅 장치(200)는 내포 페이지 테이블에 변경이 이루어질 때를 검출하는데 사용될 수 있는 기록을 유지한다. 역방향 맵 테이블(228)은 이하에서 보다 상세하게 설명된다.
컴퓨팅 장치(200)는 메모리(206)에 저장된 게스트 액세스 페이지 테이블(230)을 포함한다. 게스트 액세스 페이지 테이블(230)은 하나가 대응하는 가상 기계의 액세스를 위해 할당되는 메모리의 각 페이지에 대한 것인, 다수의 표시자를 포함하는 데이터 구조(예를 들어, 비트 마스크, 문자열, 테이블, 리스트 등)이다. 예를 들어, 4 GB 메모리의 영역이 대응하는 가상 기계의 배타적인 액세스를 위해 할당되고 페이지들의 크기가 4 kB인 경우, 게스트 액세스 페이지 테이블(230)이 비트 마스크인 실시 예에서, 게스트 액세스 페이지 테이블(230)의 크기는 1,048,576 비트이다. 가상 기계(및/또는 테이블 워커 등과 같은 다른 개체)는 대응하는 가상 기계가 대응하는 페이지에 액세스하고 있을 때(즉, 판독, 기입 및/또는 그 외 상호 작용될 때), 대응하는 표시자를 1과 같은 미리 결정된 값으로 설정한다. 그 외에는 가상 기계가 표시자를 소거하거나 표시자를 0과 같은 값으로 설정할 수 있다. 예를 들어, 게스트 액세스 페이지 테이블(230)이 비트 마스크인 실시 예들에서, 메모리의 소정의 위치의 페이지가 액세스되고 있을 때, 대응하는 비트는 1로 설정될 수 있고, 가상 기계가 페이지에 액세스하고 있지 않을 때 0으로 설정될 수 있다. 이러한 방식으로, 가상 기계는 가상 기계가 액세스하고 있는 페이지들의 기록을 유지한다. 게스트 액세스 페이지 테이블(230)은 이하에서 보다 상세하게 설명된다.
일부 실시 예에서, 하이퍼바이저는 역방향 맵 테이블(228) 및 게스트 액세스 페이지 테이블(230)에 직접 액세스하는 것이 차단된다. 예를 들어, 역방향 맵 테이블(228) 및 게스트 액세스 페이지 테이블(230) 중 하나 또는 양자는 하이퍼바이저가 직접 액세스하지 않은 메모리 영역(들)에 저장될 수 있고/거나 역방향 맵 테이블(228)에 변경 불가로 마킹될 수 있다(즉, 역방향 맵 테이블(228) 및 게스트 액세스 페이지 테이블(230)이 저장된 페이지들 자체가 변경 불가로 표시될 수 있다). 예를 들어, 도 2에 도시된 바와 같이, 게스트 액세스 페이지 테이블(230)은 대응하는 가상 기계의 배타적인 사용을 위해 할당된 예비 할당된 메모리 영역(226)에 저장될 수 있다. 다른 예로서, 역방향 맵 테이블(228) 및 게스트 액세스 페이지 테이블(230) 중 하나 또는 양자는 하이퍼바이저에 의해 직접 복호화되지 않는 형태로 암호화될 수 있다. 일부 실시 예에서, 역방향 맵 테이블(228) 및 게스트 액세스 페이지 테이블(230) 중 하나 또는 양자는 하이퍼바이저에 의해 직접 액세스 가능하지 않는 메모리의 영역에 저장되고 암호화된다. 예를 들어, 일부 실시 예에서, 예비 할당된 메모리 영역(226)이 대응하는 가상 기계의 배타적인 사용을 위해 예비 할당되고 암호화된다. 하이퍼바이저에 의한 역방향 맵 테이블(228) 및 게스트 액세스 페이지 테이블(230)에 대한 "직접적인" 액세스는 허가되지 않지만, 하이퍼바이저는 컴퓨팅 장치(200) 내의 다른 요소들 또는 개체들(프로세서 등과 같은)이 테이블들에 관한 동작들을 수행하고 테이블들에 있는 정보를 사용하게 할 수 있다. 그러한 동작들은 이하에서 설명된다.
일부 실시 예에서, 컴퓨팅 장치(200)에서의 다양한 기능 블록(프로세서 코어들(208 및 209), 메모리 관리 유닛(214), 메모리(206) 등) 사이에는 요소들 사이에 화살표가 있는 선들로 도시된 바와 같이, 통신 경로들(하나 이상의 버스, 와이어, 가이드 및/또는 다른 연결)이 연결된다. 통신 경로들은 기능 블록들 사이에서 명령들, 데이터, 제어 신호들 및/또는 다른 정보를 전송하는데 사용된다.
실시 예들이 코어들의 특정 배열로 설명되었지만, 일부 실시 예는 상이한 수 및/또는 배열의 코어를 포함한다. 예를 들어, 일부 실시 예는 단지 하나의 코어를 가지는 한편, 다른 실시 예들은 2, 5, 8 또는 다른 수의 코어를 갖는다. 일반적으로, 설명된 실시 예들은 본 출원에 설명된 동작들을 수행할 수 있는 코어들의 임의의 배열을 사용할 수 있다.
실시 예들이 캐시들의 특정 배열로 설명되었지만, 일부 실시 예는 상이한 수 및/또는 배열의 캐시를 포함한다. 예를 들어, 캐시들(예를 들어, L1 캐시(210 및 211) 등)의 일부 또는 전부는 별도의 명령어 및 데이터 캐시들로 분할될 수 있다. 또한, L2 캐시(212)는 공유되지 않을 수 있고, 그로 인해 단일 코어에 의해서만 사용될 수 있다(즉, 프로세서(202)에 두 개의 L2 캐시가 있을 수 있다). 다른 예로서, 일부 실시 예는 단지 하나의 캐시 레벨에서부터 다수의 캐시 레벨에 이르는 상이한 레벨들의 캐시들을 포함하고, 이러한 캐시들은 프로세서(202)에 그리고/또는 프로세서(202) 외부에 위치할 수 있다. 일반적으로, 설명된 실시 예들은 본 출원에 설명된 동작들을 수행할 수 있는 캐시들의 임의의 배열을 사용할 수 있다.
컴퓨팅 장치(200) 및 프로세서(202)는 도 2에서 설명의 목적으로 단순화되었지만, 일부 실시 예에서, 컴퓨팅 장치(200) 및/또는 프로세서(202)는 본 출원에서 설명된 동작들 및 다른 동작들을 수행하기 위한 추가의 또는 상이한 요소들 및 메커니즘들을 포함한다. 예를 들어, 컴퓨팅 장치(200) 및/또는 프로세서(202)는 전력 제어기들, 배터리들, 미디어 프로세서들, 입출력 메커니즘들, 통신 메커니즘들, 네트워킹 메커니즘들, 디스플레이 메커니즘들 등을 포함할 수 있다.
프로세서(202), 메모리(206), 대용향 저장 장치(216), 및 직접 메모리 액세스 메커니즘(218)은 도 1의 컴퓨팅 장치 하드웨어로 표현될 수 있는 "하드웨어"의 일부 예이다. 그에 따라, 일부 실시 예에서, 호스트 운영 체제(108) 및/또는 하이퍼바이저(106)는 프로세서(202), 메모리(206), 대용량 저장 장치(216) 및 직접 메모리 액세스 메커니즘(218)과 게스트 운영 체제(102) 및 프로그램들(104) 사이를 인터페이싱한다. 이러한 실시 예들에서, 컴퓨팅 장치(200)(예를 들어, 코어들(208-209) 등)는 호스트 운영 체제(108)가 있는 실시 예에서, 하이퍼바이저(106), 가상 기계(100), 게스트 운영 체제(102) 및 프로그램들(104) 뿐만 아니라, 호스트 운영 체제(108)를 실행한다. 또한, 본 설명에서 "컴퓨팅 장치" 및 컴퓨팅 장치 내의 요소들에 대한 언급은 컴퓨팅 장치(200) 및 관련 요소들을 나타낼 수 있다.
컴퓨팅 장치(200)는 컴퓨터 동작들을 수행하는 임의의 전자 장치일 수 있거나, 이에 포함될 수 있다. 예를 들어, 컴퓨팅 장치(200)는 데스크탑 컴퓨터들, 랩톱 컴퓨터들, 웨어러블 컴퓨팅 장치들, 태블릿 컴퓨터들, 스마트 폰들, 서버들, 가상 또는 증강 현실 장비, 네트워크 장치들, 장난감들, 청각-시각 장비, 가전 제품들, 제어기들, 차량들 등, 및/또는 이들의 조합과 같은 전자 장치들일 수 있거나, 이들에 포함될 수 있다.
페이지 테이블
전술한 바와 같이, 컴퓨팅 장치는 주소 변환을 수행하기 위해 페이지 테이블들의 계층 구조를 사용한다. 도 3은 일부 실시 예에 따라 게스트 페이지 테이블을 구현하는데 사용되는 테이블 세트를 도시한 블록도를 나타낸다. 내포 페이지 테이블은 도 3에 도시된 테이블들의 배열과 유사한 방식으로 구현될 수 있다.
도 3에서 알 수 있는 바와 같이, 도 3에서 알 수 있는 바와 같이, 게스트 페이지 테이블(300)은 페이지 맵 레벨 4 테이블(302), 페이지 디렉토리 포인터 테이블("페이지 DIR PTR 테이블")(304), 페이지 디렉토리 테이블("페이지 DIR 테이블")(306), 페이지 테이블(308) 및 메모리 페이지(310)를 포함한다. 페이지 맵 레벨 4 테이블(302), 페이지 디렉토리 포인터 테이블(304), 페이지 디렉토리 테이블(306) 및 페이지 테이블(308)은 메모리에 저장된 데이터 구조들(예를 들어, 테이블들, 링크 리스트들 등)이다. 페이지 맵 레벨 4 테이블(302), 페이지 디렉토리 포인터 테이블(304) 및 페이지 디렉토리 테이블(306) 각각은 가상 주소(314)에 대응하는 물리 주소를 찾기 위해 테이블 워크의 다음 단계 동안 탐색될(또는 "워크될") 후속 테이블에 대한 정보를 포함한다. 예를 들어, 페이지 맵 레벨 4 테이블(302)은 다수의 엔트리를 포함하며, 이들 각각은 대응하는 주소 비트들의 서브 세트들을 가상 주소들(314)로부터 페이지 디렉토리 포인터 테이블들(도 3에 도시된 바와 같은, 페이지 디렉토리 포인터 테이블(304))로 매핑하는 정보를 포함한다. 게스트 페이지 테이블(300)은 가상 주소들의 대응하는 부분들과 연관된 특정 메모리 페이지들을 나타내는 물리 주소들을 포함한다. 메모리 페이지(310)는 가상 주소(314)에 의해 지시되는 데이터가 위치한 메모리 내의 특정 페이지이다.
일부 실시 예에서, 가상 주소(314)와 연관된 물리 주소를 획득하기 위해 게스트 페이지 테이블(300)에서 테이블 워크를 수행 할 때, 테이블 워커는 제어 레지스터("CR(control register)")(312)를 판독하여 메모리에서, 대응하는 가상 기계와 연관된 페이지 맵 레벨 테이블(예를 들어, 페이지 맵 레벨 4 테이블(302))의 위치를 결정한다. 그 다음 테이블 워커는 다음에 워크될 페이지 디렉토리 포인터 테이블(예를 들어, 페이지 디렉토리 포인터 테이블(304))의 위치를 나타내는 엔트리("PML4E"로 도시됨)에 대한 가상 주소(314)로부터의 비트들의서브 세트(예를 들어, 64- 비트 가상 주소의 비트들 39-47)를 사용하여 페이지 맵 레벨 4 테이블(302)을 검색(또는 "워크")한다. 그 다음 테이블 워커는 각 테이블을 워크하고 워크될 다음 테이블을 나타내는 테이블 내 엔트리("PDPE" 및 "PDE"로 도시됨)의 위치를 찾기 위해 가상 주소(314)로부터 대응하는 비트들의서브 세트들을 사용하여, 나머지 테이블, 즉, 페이지 디렉토리 포인터 테이블(304), 페이지 디렉토리 테이블(예를 들어, 페이지 디렉토리 테이블(306)) 및 페이지 테이블(예를 들어, 페이지 테이블(308))로 진행한다. 결과적으로, 페이지 테이블(308)(페이지 테이블 엔트리 또는 "PTE")로부터 획득된 물리 주소를 사용하여, 테이블 워커는 특정 메모리 페이지(예를 들어, 메모리 페이지(310))에 도달한다. 테이블 워커는 가상 주소(314)의 대응하는 비트들의 부분(예를 들어, 64 비트 가상 주소의 비트들 0-11)을 사용하여, 가상 주소(314)에 의해 지시된 데이터를 포함하는 메모리 페이지(310) 내 엔트리(DATA)를 결정한다. 테이블 워커가 가상 주소(314)에 대한 주소 변환을 찾을 수 없는 경우, 에러 핸들링 동작(예를 들어, 페이지 폴트가 발행되고 이어서 처리되는 등)이 수행된다.
본 출원에 설명된 바와 같이, 주소 변환 정보는 게스트 페이지 테이블(300)에 추가된 후에 수정/변경, 업데이트 등이 될 수 있다. 예를 들어, 페이지가 메모리의 제1 위치로부터 제2 위치로 이동되어, 제1 가상 기계로부터 제2 가상 기계로 재할당될 때, 테이블 세트에서의 하나 이상의 테이블이 그에 따라 업데이트될 수 있다. 다른 예로서, 하이퍼바이저는 이를테면 테이블 세트에서의 하나 이상의 테이블에 부정확한 정보 또는 이전/구식 정보를 기입함으로써, 게스트 페이지 테이블(300)에서의 주소 매핑을 부적절하게(악의적으로, 잘못하여 등) 업데이트할 수 있다. 설명된 실시 예들은 게스트 페이지 테이블(300)로부터의 부적절하게 업데이트된 정보의 사용을 피하기 위해 역방향 맵 테이블(228) 및 게스트 액세스 페이지 테이블(230)을 사용한다. 즉, 설명된 실시 예들은 본 출원에 설명되는 바와 같이 메모리 내의 각 페이지가 단일/고유 게스트 물리 주소와만 연관되도록 허가되고(게스트 물리 주소 앨리어싱이 허용되지 않음), 사용 비공개 게스트 페이지들이 대응하는 가상 기계를 수반하지 않고는 재매핑될 수 없으며, 하이퍼바이저 및/또는 코어(208-209) 상에서 실행되는 다른 소프트웨어 개체에 의해 변경 불가 페이지들이 기입될 수 없는 것과 같은 규칙들을 강제한다.
테이블들의 특정 배열이 도 3에 도시되어 있지만, 일부 실시 예에서는 상이한 수 및/또는 배열의 테이블이 사용된다. 예를 들어, 일부 실시 예에서는, 단일 테이블만이 사용되며, 단일 테이블은 가상 주소들을 물리 주소들로(또는, 예를 들어, 가상 주소들을 게스트 물리 주소들 등으로) 매핑한다.
역방향 맵 테이블
도 4는 일부 실시 예에 따른 역방향 맵 테이블(228)을 도시한 블록도를 나타낸다. 전술한 바와 같이, 역방향 맵 테이블(228)은 다른 것들 중에서도, 게스트 물리 주소에 대한 내포 페이지 테이블(224)의 테이블 워크가 이전에 사용된 시스템 물리 주소와 매칭하는 시스템 물리 주소를 리턴하는지 여부를 결정하는데 사용되는 정보를 포함한다.
도 4에서 알 수 있는 바와 같이, 역방향 맵 테이블(228)은 다수의 엔트리(400)를 포함한다(엔트리(400)는 도 4에서 점선을 사용하여 강조 표시된다). 역방향 맵 테이블(228) 내 각 엔트리는 메모리(206) 내 대응하는 페이지에 대한 정보(예를 들어, 하나 이상의 가상 기계에 의한 사용을 위해 할당될 수 있는 메모리 내 각 4 kB 페이지)를 포함한다. 역방향 맵 테이블(228) 내 엔트리들은 각 페이지와 연관된 시스템 물리 주소들을 사용하여 인덱싱되며, 그에 따라 각 엔트리는 특정 시스템 물리 주소와 연관되게 된다. 예를 들어, 4 kB 페이지들에 대해, 역방향 맵 테이블(228) 내 제1 엔트리는 제1 또는 최저 할당 가능 시스템 물리 주소(주소 A)와 연관될 수 있고, 제2 엔트리는 제2 할당 가능 시스템 물리 주소(주소 A + 4kB)와 연관될 수 있는 등이다. 이러한 방식으로, 특정 시스템 물리 주소가 역방향 맵 테이블(228)에서 색인될 때, 역방향 맵 테이블(228) 내 대응하는 오프셋의 엔트리가 색인될 수 있다. 일부 실시 예에서, 역방향 맵 테이블(228)의 기준 주소는 오프셋 기반 색인을 가능하게하기 위해 컴퓨팅 장치(200) 내 지정된, 가능한 안전한, 위치에 기록된다.
역방향 맵 테이블(228)에서, 각 엔트리(400)는 전역에 공유된 페이지 표시자("GSP")(402), 게스트 식별자("게스트 ID")(404), 게스트 물리 주소( "게스트 PHY ADDR")(406), 서브 페이지 카운트 408), 액세스 표시자(410), 크기 표시자(412), 유효 표시자(414), 잠금 표시자(416) 및 변경 불가 표시자("IMMT")(418)를 저장하도록 구성된다. 전역에 공유된 페이지 표시자(402)는 대응하는 페이지가 둘 이상의 가상 기계에 의해 공유되는지 여부에 대한 표시자이다. 공유된 페이지들은 이하에서 보다 상세하게 설명된다.
게스트 식별자(404)는 대응하는 페이지가 할당되는 가상 기계과 연관된 식별자이다. 예를 들어, 대응하는 페이지가 특정 가상 기계의 사용을 위해 할당될 때, 특정 가상 기계에 대한 식별자가 게스트 식별자(404)에 기록된다. 게스트 식별자(404)는 주소 공간 식별자("ASID"), ID 문자열, 이름 및/또는 가상 기계를 구체적으로 식별하는 다른 값을 유지할 수 있다.
게스트 물리 주소(406)는 엔트리에 대한 시스템 물리 주소와 연관된 게스트 물리 주소를 나타내는 값이다. 예를 들어, 소정의 시스템 물리 주소의 페이지가 가상 기계의 사용을 위해 할당될 때, 페이지를 어드레싱하기 위해 가상 기계에 의해 사용될 게스트 물리 주소는 역방향 맵 테이블(228) 내 대응하는 엔트리(400)에 기록된다. 이러한 방식으로, 각 페이지가 할당된 가상 기계에 의해 사용될 특정 게스트 실제 주소의 레코드가 만들어진다. 이하에 설명되는 바와 같이, 이러한 정보를 기록하면 테이블 워커가 내포 페이지 테이블의 워크 동안 획득된 시스템 물리 주소를 검사할 때, 시스템 물리 주소가 예상되는 게스트 물리 주소에 매핑되는지 여부, 즉, 시스템 물리 주소가 동시에 두 개의 상이한 게스트 물리 주소에 매핑되었는지 여부를 결정할 수 있게 한다. 이렇게 하면 매핑이 하이퍼바이저 또는 다른 개체에 의해 악의적으로 또는 잘못 변경되었는지 여부를 검출할 수 있다.
서브 페이지 카운트(408)는 보다 큰 크기의 페이지 내에 가상 기계(들)을 위해 할당된 보다 작은 크기의 페이지들의 카운트이다. 예를 들어, 2 MB 페이지와 4 KB 페이지를 지원하는 시스템에서, 2 MB 경계 상의 페이지(예를 들어, 주소 A, A+2 MB, A+4 MB 등의 페이지들)는 가상 기계에 의한 사용을 위해 할당된 2 MB 페이지 내 4 kB 페이지들의 카운트를 가질 수 있다. 서브 페이지 카운트 값은 보다 큰 크기의 페이지 내 보다 작은 페이지들이 할당되었다는 가정하에, 즉, 부적절한 페이지 크기를 사용하여 허가되지 않는 액세스가 발생하는 것을 피하기 위해, 보다 큰 크기의 페이지에 대한 액세스가 허가되지 않는지 여부를 결정하는데 사용될 수 있다.
액세스 표시자(410)는 대응하는 페이지가 할당된 가상 기계에 의해 대응하는 페이지가 액세스(판독, 기입, 업데이트 및/또는 그 외 액세스)되었는지 여부에 대한 표시자이다. 소정의 액세스 표시자(410)는 대응하는 페이지가 할당된 가상 기계에 의해 적어도 한 번 대응하는 페이지가 액세스될 때 설정된다. 액세스 표시자(410)는 역방향 맵 테이블(228) 내 엔트리가 하이퍼바이저에 의해 업데이트될 때 소거된다. 게스트 액세스 페이지 테이블(230) 내 정보와 함께, 소거된 액세스 비트(410)는 하이퍼바이저가 대응 페이지가 최종 액세스된 이후에 역방향 맵 테이블(228)을 업데이트했다고 결정하기 위해 사용될 수 있다.
크기 표시자(412)는 대응하는 페이지의 액세스에 대해 예상되는 크기이다. 예를 들어, 컴퓨팅 장치(200)에서 4 kB 페이지 및 2 MB 페이지가 사용된다고 가정하면, 크기 표시자(412)는 액세스의 어느 크기가 요청되었는지를 나타낼 수 있다. 크기 표시자(412)는 실제로 4 kB 페이지인 것의 2 MB 액세스와 같이 허가되지 않는 크기의 액세스를 검출할 수 있게 한다.
유효 표시자(414)는 엔트리(400)가 현재 유효한 정보를 유지하고 있는지 여부, 즉 엔트리(400)에 현재 있는 정보가 오래되었거나 구식인지 등 또는 사용 가능한지 여부에 대한 표시자이다. 유효 표시자(414)는 오래된 역방향 맵 테이블(228) 내 엔트리들(400)로부터의 정보의 사용을 막기 위해 사용되지만, 초기화되지만 실제 정보를 포함하지 않는 이전 정보(삭제되지 않은 정보, 랜덤 비트 패턴 등) 등을 여전히 포함할 수 있다. 일부 실시 예에서, 페이지가 가상 기계(또는 그것 상에서 실행되는 게스트 운영 체제)에 의해 소유될 때 유효 표시자(414)가 설정되고 그에 따라 하이퍼바이저와 같은 소프트웨어 개체들이 페이지에 대해 변환된 주소들을 제공받지 못한다(즉, 가능한 한, 테이블 워커에 의해 페이지에 액세스하는 것이 금지된다).
잠금 표시자(416)는 엔트리(400)가 잠겨 있는지 여부에 대한 표시자이다. 잠금 표시자(416)가 설정될 때, 엔트리(400)는 "잠겨져" 있는 것으로 고려되고, 잠금 표시자(416)가 소거될 때 엔트리(400)는 "자유" 또는 "이용 가능"한 것으로 고려된다. 엔트리(400)가 소정의 하드웨어 또는 소프트웨어 개체에 의해 잠금되면, 컴퓨팅 장치(200) 내 다른 하드웨어 및 소프트웨어 개체들이 엔트리(400)에 액세스하는(예를 들어, 엔트리(400)를 판독, 기입/업데이트하는 등) 것이 금지된다. 그에 반해, 임의의 하드웨어 및 소프트웨어 개체는 자유/이용 가능한 엔트리에 액세스하도록 허가될 수 있다(가능한 잠금 표시자(416)를 설정한 후). 예를 들어, 잠금 표시자(416)가 단일 비트이고 처음에 소거(예를 들어, 0으로 설정)되는 실시 예에서, 개체는 잠금 표시자(416)를 설정하고(예를 들어, 1로), 엔트리(400)에 한 번 이상 액세스한 다음, 엔트리(400)에 액세스가 끝날 때 잠금 표시자(416)를 소거할 수 있다. 잠금 표시자(416)를 사용하여, 설명된 실시 예들은 경합 상황들 및 동시 판독들 및/또는 기입들이 엔트리(400)에 대해 발생할 수 있는 다른 상황들을 피할 수 있다.
변경 불가 표시자(418)는 대응하는 페이지가 변경 불가인지 여부에 대한 표시자가다. 페이지가 변경 불가일 때(즉, 대응하는 변경 불가 표시자(418)를 사용하여 변경 불가로 표시되는 경우), 코어들(208-209) 상에서 실행되는 소프트웨어 개체들에 의해 페이지가 기입될 수 없다. 또한, 그 페이지는 임의의 코어(208-209)에 의해 할당 해제가 허가되지 않고, 대신 플랫폼 보안 프로세서(232)에 의해 할당이 해제된다. 변경 불가 페이지들은 이하에서 보다 상세하게 설명된다.
역방향 맵 테이블(228)은 각 엔트리의 다양한 정보로 설명되지만, 일부 실시 예에서는, 상이한 배열 또는 유형의 정보가 각 엔트리에 존재할 수 있다. 일반적으로, 역방향 맵 테이블(228) 내 엔트리들(400)은 본 출원에서 설명된 동작들을 수행하기에 충분한 정보를 포함한다.
게스트 액세스 페이지 테이블
도 5는 일부 실시 예에 따른 게스트 액세스 페이지 테이블(230)을 도시한 블록도를 나타낸다. 전술한 바와 같이, 게스트 액세스 페이지 테이블(230)에는 대응하는 가상 기계가 가상 기계의 사용을 위해 할당된 메모리의 영역의 페이지들에 이전에 액세스한 것으로 기록되는지 여부를 결정하는데 사용되는 정보가 포함된다.
도 5에서 알 수 있는 바와 같이, 게스트 액세스 페이지 테이블(230)은 다수의 표시자(500)를 포함한다(표시자(500)는 도 5에서 점선을 사용하여 강조 표시된다). 설명된 실시 예들에서, 각 게스트 액세스 페이지 테이블(230)은 대응하는 가상 기계의 사용을 위해 할당되는 메모리의 각 페이지(예를 들어, 4 kB 페이지)에 대한 표시자(500)를 포함한다. 각각의 표시자(500)는 가상 기계가 대응하는 페이지에 액세스했는지 여부를 결정하기 위해 사용될 정보를 포함한다. 예를 들어, 표시자들은 대응하는 페이지가 액세스되지 않았음을 나타내기 위해 0으로 설정되고, 대응하는 페이지가 액세스되었음을 나타내기 위해 1로 설정되는 단일 비트를 포함할 수 있다.
게스트 액세스 페이지 테이블(230)은 다수의 표시자(500)를 갖는 것으로 설명되지만, 일부 실시 예에서는, 상이한 배열 또는 유형의 정보가 게스트 액세스 페이지 테이블(230)에 존재한다. 일반적으로, 게스트 액세스 페이지 테이블(230)은 가상 기계가 특정 페이지들에 액세스했는지 여부를 결정할 수 있게 하기에 충분한 정보를 포함한다.
변경 불가 페이지들
설명된 실시 예들에서, 메모리의 페이지들은 변경 불가인 것으로 취급될 수 있다. 변경 불가 페이지들은 코어(예를 들어, 코어들(208-209)) 상에서 실행되는 소프트웨어 개체(예를 들어, 하이퍼바이저, 게스트 운영 체제, 응용 프로그램 등)가 기입될 수 없는 페이지들이다. 즉, 변경 불가 페이지는 임의의 소프트웨어 개체들에 의해 전체적으로 또는 부분적으로 재 기입, 업데이트 또는 수정, 추가 또는 제거되는 등이 금지된다. 또한, 변경 불가 페이지는 플랫폼 보안 프로세서(예를 들어, 플랫폼 보안 프로세서(232))에 의해 할당 해제되어야 하고, 그것 상에서 실행되는 소프트웨어 개체(예를 들어, 하이퍼바이저 등)를 대신하거나 제어를 받아 행동하는 코어를 포함하여, 코어(예를 들어, 코어들(208-209))에 의해 할당 해제될 수 없다.
일부 실시 예에서, 페이지는 소프트웨어 개체들에 의한 원치 않는 기입 또는 다른 변경으로부터 페이지를 보호하기 위해 변경 불가인 것으로 표시될 수 있다. 예를 들어, 하드웨어를 통해(예를 들어, 플랫폼 보안 프로세서(232)를 통해)서만 통상적으로 액세스되는 페이지들이 변경 불가인 것으로 표시될 수 있다. 그러한 페이지들은 메모리(106)에서 게스트 액세스 페이지 테이블(230)이 저장되는 페이지 또는 페이지들 및/또는 보존된 가상 기계 레지스터 상태 등과 같은 민감한 정보를 저장하는데 사용되는 페이지들을 포함할 수 있다. 페이지를 설명대로 변경 불가인 것으로 표시하면 이전 및 가능한 구식 버전의 페이지(암호화된 페이지를 포함함)가 원하는/현재 페이지 대신 악의적으로 또는 잘못하여 대체되는 "재전송" 공격을 막을 수 있다.
일부 실시 예에서, 전술한 변경 불가 표시자(즉, 변경 불가 표시자(418))는 액세스하고 있는 가상 기계(즉, 그것 상에서 실행되는 게스트 운영 체제)가 페이지의 판독 전용(RO) 액세스 또는 판독/기입(R/W) 액세스하도록 허가될지 여부를 결정하기 위해 페이지의 액세스의 공유/비공개 유형에 대한 표시 및 유효 표시자(즉, 유효 표시자(414))와 함께 사용될 수 있다. 예를 들어, 액세스를 위해 물리 주소 내에 포함되거나 그 외 액세스와 연관된 "c-비트"는 게스트 운영 체제에 대한 액세스의 공유/비공개 유형의 표시(예를 들어, 공유 액세스의 경우 c-bit = 0, 비공개 액세스의 경우 c-bit = 1)로서 사용될 수 있다. 예를 들어, 유효한 표시자 및 변경 불가 표시자가 모두 소거(예를 들어, 0으로 설정)될 때, 페이지가 게스트 운영 체제의 소유가 아니기 때문에(즉, 게스트 운영 체제에 의해 액세스되지 않기 때문에) 페이지는 "하이퍼바이저 소유"인 것으로 간주될 수 있다. 이 경우, 하이퍼바이저는 페이지에 대한 R/W 액세스 권한을 갖고 게스트 운영 체제는 공유된 페이지(예를 들어, c-bit = 0)에 대한 액세스일 때 R/W 액세스 권한을 가지며 비공개 페이지(예를 들어, c-bit = 1)에 대한 액세스일 때 RO 액세스 권한을 갖는다. 다른 예로서, 유효 표시자가 설정되고 변경 불가 표시자가 소거될 때, 페이지는 게스트 소유인(즉, 특정 게스트 운영 체제에 의해 소유되는) 것으로 간주될 수 있다. 이 경우, 하이퍼바이저는 RO 액세스 권한을 갖고 게스트 운영 체제는 공유된 페이지(예를 들어, c-bit = 0)에 대한 액세스일 때 R/W 액세스 권한을 가지며, 비공개 페이지(예를 들어, c-bit = 1)에 대한 액세스이고 본 출원에 설명된 대로 게스트 액세스 페이지 테이블의 검사가 게스트가 페이지에 액세스했음을 나타낼 때 R/W 액세스 권한을 갖는다. 다른 예로서, 유효 표시자 및 변경 불가 표시자 양자 모두 설정될 때, 페이지는 변경 불가인 것으로 간주된다. 이 경우, 하이퍼바이저 및 게스트 운영 체제들은 모두 공유/비공개 유형의 액세스에 관계없이 RO 액세스 권한을 갖는다.
역방향 맵 테이블 초기화
일부 실시 예에서, 컴퓨팅 장치가 초기화될 때(예를 들어, 부팅 동작 중에), 역방향 맵 테이블(228)이 초기화된다. 도 10은 일부 실시 예에 따라 역방향 맵 테이블(228)을 초기화하기 위한 방법을 도시한 블록도를 나타낸다. 도 10에 도시된 동작들은 일부 실시 예에 의해 수행되는 동작들의 일반적인 예로서 제공된다. 다른 실시 예들에 의해 수행되는 동작들은 상이한 순서로 수행되는 상이한 동작들 및/또는 동작들을 포함한다. 또한, 특정 메커니즘들/요소들이 동작들(예를 들어, 플랫폼 보안 프로세서 등)을 설명하는데 사용되지만, 일부 실시 예에서는, 다른 메커니즘들이 동작들을 수행하고/거나 동작들이 다른 메커니즘들/요소들에 관해 수행된다.
도 10에 도시된 방법은 소프트웨어 개체(예를 들어, 운영 체제, 하이퍼바이저 등)가 리버스 맵 테이블(228)을 저장하기 위해 메모리 내 영역을 할당할 때 시작한다(단계 1000). 예를 들어, 소프트웨어 개체는 역방향 맵 테이블(228)에 대해, 지정된 크기의 메모리의 블록 또는 부분을 찾고 예비 할당하기 위한 하나 이상의 동작을 수행할 수 있다.
그 다음 소프트웨어 개체는 역방향 맵 테이블(228) 내 엔트리들을 초기 값으로 설정한다(단계 1002). 예를 들어, 소프트웨어 개체는 메모리 내 할당된 영역에서의 역방향 맵 테이블(228) 내 각 엔트리에 0들을 기입할 수 있다. 이러한 방식으로 엔트리들을 설정함으로써, 소프트웨어 개체는 리버스 맵 테이블(228)이 리버스 맵 테이블(228)에 의존하는 후속 동작들에 영향을 줄 수 있는 악의적인 또는 잘못된 정보를 초기에 포함하지 않음을 보장한다. 즉, 이러한 동작 동안, 소프트웨어 개체는 초기 값들만을 포함하는 메모리에 역방향 맵 테이블(228)을 생성한다.
그 다음 소프트웨어 개체는 메모리에서의 역방향 맵 테이블(228)의 위치(예를 들어, 시작 주소 및 크기)의 표시로 각 코어(예를 들어, 코어들(208-209))상의 대응하는 레지스터(또는 다른 메모리 위치)를 업데이트한다(단계 1004). 일부 실시 예에서, 레지스터(또는 다른 메모리 위치)는 컴퓨팅 장치의 후속 동작 동안 업데이트들에 대해 보안된다. 예를 들어, 각각의 코어에서 기계 상태 레지스터(예를 들어, 잠금 비트를 갖는 레지스터 등)와 같은 전용 레지스터는 역방향 맵 테이블(228)의 위치의 표시를 유지하는데 사용될 수 있다.
그 다음 소프트웨어 개체는 하나 이상의 지정된 페이지들에 대한 역방향 맵 테이블 엔트리에 변경 불가 표시자를 설정한다(단계 1006). 예를 들어, 변경 불가 표시자는 리버스 맵 테이블(228) 자체가 메모리에 저장되는 페이지(들)와 관련된 엔트리들에 대해, 게스트 액세스 페이지 테이블이 저장될 페이지(들)에 대해, 가상 기계 레지스터 상태가 저장될 페이지(들) 등에 대해 설정될 수 있다(예를 들어, 1 또는 다른 값으로). 이러한 동작 동안, 소프트웨어 개체는 하나 이상의 RMT_업데이트 명령을 실행하여 역방향 맵 테이블(228)에서 지정된 변경 불가 표시자들이 설정설정되게 할 수 있다. 설명된 바와 같이 변경 불가 표시자를 설정하면 소프트웨어 개체들(하이퍼바이저 등을 포함함)이 이후에 대응하는 페이지들을 업데이트하는 것을 금지한다는 것을 상기하자.
그 다음 소프트웨어 개체들은 플랫폼 보안 프로세서가 역방향 맵 테이블 내 엔트리들의 내용의 검증을 수행하게 한다(단계 1008). 예를 들어, 소프트웨어 개체는 역방향 맵 테이블(228)을 초기화한 후 어느 시점에서, 플랫폼 보안 프로세서의 INIT 기능을 호출할 수 있으며, 이는 플랫폼 보안 프로세서가 역방향 맵 테이블(228)을 검사하여 변경 불가 표시자가 지정된 페이지들에 대한 엔트리들에 설정되고 역방향 맵 테이블(228) 내 다른 엔트리들(즉, 지정된 페이지들에 대한 엔트리들 이외)는 초기 값을 포함함을 검증하게 한다. 그렇다면, 플랫폼 보안 프로세서는 개선 조치를 수행하지 않고 INIT 동작을 완료 할 수 있고, 그에 의해 역방향 맵 테이블(228)을 본 출원에 설명된 바와 같이 자유롭게 사용하게 할 수 있다. 그렇지 않으면, 플랫폼 보안 프로세서는 하나 이상의 엔트리가 부정확한 초기 값들로 설정될 때 개선 조치(예를 들어, 폴트 또는 에러 어써트, 게스트 운영 체제들의 시작 금지 등)를 수행할 수 있다. 이러한 방식으로, 플랫폼 보안 프로세서는 역방향 맵 테이블(228)이 역방향 맵 테이블(228)의 사용을 허용하기 전에 정확한 상태에 있음을 보장한다.
일부 실시 예에서, 플랫폼 보안 프로세서는 역방향 맵 테이블(228)의 초기화에 대한 상술한 검사에 추가하여 다른 의무들을 갖는다. 예를 들어, 일부 실시 예에서, 플랫폼 보안 프로세서는 게스트 운영 체제들(또는 가상 기계들) 간의 페이지들의 이동 및 역방향 맵 테이블(228) 내의 대응하는 엔트리들의 게스트 운영 체제들에 대한 역방향 맵 테이블들(228) 간의 상태 전달과 관련된 동작들(예를 들어, 암호화, 패키징 등)을 수행한다. 다른 예로서, 일부 실시 예에서, 플랫폼 보안 프로세서는 변경 불가인 것으로 표시된 페이지들을 할당 해제하는 것에 책임이 있고 -- 그러한 페이지들의 할당 해제가 허가되는 유일한 개체일 수 있다.
역방향 맵 테이블 업데이트
도 6은 일부 실시 예에 따라 역방향 맵 테이블(228)을 업데이트하기 위한 방법을 도시한 블록도를 나타낸다. 도 6에 도시된 동작들은 일부 실시 예에 의해 수행되는 동작들의 일반적인 예로서 제공된다. 다른 실시 예들에 의해 수행되는 동작들은 상이한 순서로 수행되는 상이한 동작들 및/또는 동작들을 포함한다. 또한, 특정 메커니즘들/요소들이 동작들(예를 들어, 하이퍼바이저 등)을 설명하는데 사용되지만, 일부 실시 예에서는, 다른 메커니즘들이 동작들을 수행하고/거나 동작들이 다른 메커니즘들/요소들에 관해 수행된다.
도 6에 도시된 방법은 컴퓨팅 장치 내의 하이퍼바이저가 가상 기계에, 메모리 내의 페이지를 할당할 때 시작한다(단계 600). 예를 들어, 하이퍼바이저는 가상 기계의 사용을 위해 메모리의 영역을 할당할 때 특정 페이지를 메모리의 영역 내의 다른 페이지들과 함께 할당할 수 있다. 할당은 가상 기계가 새롭게 초기화될 때, 가상 기계가 하나 이상의 페이지의 할당을 요청할 때 가상 기계의 동작 동안 등에 수행될 수 있다. 할당 동안, 하이퍼바이저는 또한 대응하는 게스트 물리 주소 대 시스템 물리 주소 정보로 내포 페이지 테이블을 업데이트할 수도 있다.
페이지를 할당 할 때, 하이퍼바이저는 컴퓨팅 장치 내의 프로세서로, 페이지와 연관된 RMT_업데이트 요청을 전송한다(단계 602). RMT_업데이트 요청을 프로세서로 전송할 때, 하이퍼바이저는 대응하는 명령(예를 들어, 특수 CPU 명령 등)을 실행하고/거나, 전용 레지스터(예를 들어, 모델 특정 레지스터 등)에 액세스하고/거나 다른 메커니즘을 사용할 수 있다. RMT_업데이트 요청은 프로세서가 메모리의 페이지와 연관된 역방향 맵 테이블(228) 내 엔트리를 업데이트하는 동작들을 수행하게 한다. 일부 실시 예에서, RMT_업데이트 요청은 다른 소스들로부터(예를 들어, 가상 기계 등으로부터) 정보를 획득하지 않고 역방향 맵 테이블(228) 내 엔트리의 업데이트를 가능하게 하기에 충분한 정보를 포함한다. 예를 들어, RMT_업데이트 요청은 페이지가 위치하는 시스템 물리 주소, 페이지를 어드레싱하기 위해 가상 기계에 의해 사용될 게스트 물리 주소, 가상 기계에 대한 식별자, 페이지 크기, 페이지가 공유되는지 여부에 대한 표시, 페이지를 변경 불가인 것으로 표시하기 위한 요청, 역방향 맵 테이블(228) 내 엔트리를 잠금하기 위한 요청, 및/또는 다른 정보를 포함할 수 있다. 다른 실시 예들에서, 프로세서는 다른 소스로부터 정보의 일부 또는 전부를 획득한다. 예를 들어, 하이퍼바이저 및/또는 가상 기계는 페이지에 관한 정보를 지정된 메모리 요소(예를 들어, 메모리(206), 전용 레지스터 등)에 기입할 수 있고, 프로세서는 정보를 획득하기 위해 메모리 요소를 판독할 수 있다. 다른 예로서, 프로세서는 하이퍼바이저 및/또는 가상 기계로부터 정보를 요청할 수 있다.
그 다음 프로세서는 역방향 맵 테이블(228) 내 엔트리에 대한 잠금을 설정한다(단계 604). 이러한 동작 동안, 프로세서는 엔트리 내의 잠금 표시자를 엔트리가 잠겨져 있음을 나타내는 값, 예를 들어, 1 또는 다른 값으로 설정한다. 이러한 방식으로 잠금 표시자를 설정함으로써, 프로세서는 엔트리를 다른 하드웨어 또는 소프트웨어 개체가 역방향 맵 테이블(228) 내 엔트리를 업데이트하거나 그 외 수정할 수 없도록 구성한다. 이러한 방식으로, 이를테면 개체들 간에 경합 상황이 발생할 때, 두 개 이상의 개체에 의한 엔트리의 동시 발생 그리고 가능성이 있는 에러 수정을 피할 수 있다.
그 다음 프로세서는 그 페이지가 변경 불가가 아니라고 결정한다(단계 606). 이러한 동작 동안, 프로세서는 역방향 맵 테이블(228) 내 엔트리로부터 변경 불가 표시자의 값을 획득하고 변경 불가 표시자가 페이지가 변경 불가임을 나타내는 값으로 설정되는지 여부를 결정한다. 이러한 예에서는, 페이지가 변경 가능하지 않고, 그에 따라 전술한대로 기입될 수 없다고 가정한다. 엔트리가 변경 불가인 경우, 프로세서는 엔트리에 대한 잠금을 해제(예를 들어, 잠금 표시자를 0으로 설정)하고 RMT_업데이트 동작에 실패할 수 있으며, 이는 개선 조치 수행을 수반할 수 있다.
그 다음 프로세서는 페이지에 대한 정보에 기초한 역방향 맵 테이블(228) 내 엔트리의 업데이트가 역방향 맵 테이블에 이미 존재하는 정보와 충돌하지 않을 것이라고 결정한다(단계 608). 예를 들어, 프로세서는 하나 이상의 다른 엔트리에서의 페이지 크기들과 페이지의 크기를 비교하여 페이지에 대한 정보가 하나 이상의 기존 페이지와 겹치는 페이지를 설명하지 않음을 보장할 수 있다. 예를 들어, 프로세서는, 더 작은 페이지(예를 들면, 4 kB)에 관한 정보가, 시스템 물리 주소가 역방향 맵 테이블(228)에서의 다른 위치의 더 큰 페이지(예를 들어, 2MB)에 대해 사용 중인 시스템 물리 주소들의 세트 내에 속하는 역방향 맵 테이블(228) 내 엔트리에 기입되지 않을 것이라고 결정한다. 즉, 프로세서는 더 작은 페이지가 더 큰 페이지와 겹치지 않는다고 결정한다. 유사하게, 프로세서는 더 큰 페이지가 하나 이상의 더 작은 페이지와 내포되지 않는다고 결정할 수 있다. 충돌이 검출되었으면, 프로세서는 폴트를 제기하고/거나, 하이퍼바이저 및/또는 가상 기계에 에러를 시그널링하는 등과 같은 개선 조치를 수행할 수 있다.
그 다음 프로세서는 페이지에 대한 역방향 맵 테이블의 업데이트를 수행한다(단계 610). 역방향 맵 테이블(228)의 업데이트 동안, 프로세서는 페이지에 대한 상술한 정보(즉, 시스템 물리 주소, 게스트 물리 주소, 가상 기계에 대한 식별자, 페이지 크기 등)의 일부 또는 전부를 역방향 맵 테이블(228) 내 엔트리에서의 대응하는 필드들에 기입한다. 업데이트가 완료될 때, 역방향 맵 테이블(228)은 엔트리에 대한 시스템 물리 주소가 매핑되는 게스트 물리 주소, 페이지에 액세스한 특정 가상 기계 등을 결정하기 위해 컴퓨팅 장치(예를 들어, 테이블 워커 등) 내의 정보의 소비자들에 대한 엔트리에 충분한 정보를 포함한다.
역방향 맵 테이블(228)을 업데이트할 때, 프로세서는 엔트리가 대응하는 가상 기계에 의해 아직 액세스되지 않았음을 나타내는 값(예를 들어, 0)으로 엔트리에 대한 액세스 표시자를 설정한다. 이러한 방식으로, 프로세서는 역방향 맵 테이블(228) 내 엔트리가 하이퍼바이저에 의해 업데이트되었다는 정보를 소비자들에게 표시하도록 엔트리를 구성한다. 이는 하이퍼바이저가 악의적으로, 잘못하여 등으로 역방향 맵 테이블(228)을 변경시키는 경우를 피하는 것을 도울 수 있다.
일부 실시 예에서, 엔트리가 이전에 유효했다면, 즉, 업데이트가 역방향 맵 테이블(228)에 이미 존재했던 정보를 덮어 쓰는 경우, 프로세서는 컴퓨팅 장치 내의 TLB들로부터 관련 정보를 플러싱할 수 있다(그리고 간단히 TLB들로부터의 모든 정보를 플러싱할 수 있다). 이러한 방식으로, 프로세서는 TLB들에서 덮어 쓰기되고 있는 시스템 물리 주소 및/또는 게스트 물리 주소와 연관된 변환 정보의 오래된 카피들을 제거한다.
일부 실시 예에서, 프로세서는 역방향 맵 테이블(228)내 엔트리를 업데이트할 때 하나 이상의 엔트리에 대한 서브 페이지 카운트를 업데이트한다. 예를 들어, 소정의 더 작은 페이지에 대해, 프로세서는 더 작은 페이지가 존재할 수 있는 하나 이상의 더 큰 페이지에 대한 엔트리를 찾아 업데이트한다. 예를 들어, 엔트리가 4 kB 페이지에 대한 정보로 업데이트될 때, 프로세서는 더 큰 페이지의 영역이 더 작은 페이지를 포함한다는 것을 반영하기 위해, 자체적으로 할당될 수 없는 더 큰 페이지에 대한 엔트리에 대한 정보를 업데이트한다. 이러한 방식으로, 프로세서는 단계 604에서 페이지에 대한 정보에 기초한 역방향 맵 테이블(228)의 업데이트가 역방향 맵 테이블에 이미 존재하는 정보와 충돌하지 않을 것이라는 결정을 단순화하기 위한 정보를 테이블에 추가한다. 즉, 프로세서는 서브 페이지 카운트를 역방향 맵 테이블(228) 내의 각각의 대응하는 더 작은 페이지 엔트리를 검사하지 않고도, 서브 페이지 카운트로부터의 정보만을 사용하여 더 큰 페이지에 대한 엔트리에 대한 업데이트가 중지될 수 있도록 설정한다.
역방향 맵 테이블(228)의 업데이트를 완료한 후, 프로세서는 역방향 맵 테이블(228) 내 엔트리에 대한 잠금을 소거한다(단계 612). 이러한 동작 동안, 프로세서는 엔트리 내의 잠금 표시자를 엔트리가 잠겨져 있지 않음을 나타내는 값, 예를 들어, 0 또는 다른 값으로 소거한다. 업데이트 이후 이러한 방식으로 잠금 표시자를 소거함으로써, 프로세서는 엔트리를 다른 하드웨어 또는 소프트웨어 개체들이 엔트리를 업데이트하거나 그 외 변경할 수 있게 하기 위한 잠금을 획득할 수 있도록 재구성한다.
후속 동작 동안, 하이퍼바이저는 페이지에 대한 매핑이 업데이트되어야 하는지 여부를 결정한다(단계 614). 예를 들어, 하이퍼바이저는 대응하는 가상 기계가 더 이상 페이지를 사용하지 않기 때문에 페이지를 상이한 가상 기계에 할당함으로써, 기존 시스템 물리 주소와 연관된 게스트 물리 주소의 업데이트가 필요하다. 결정을 내릴 때, 하이퍼바이저는 단계 602-612가 수행되어 역방향 맵 테이블(228) 내 대응하는 엔트리를 업데이트하게 한다. 전술한 바와 같이, 업데이트 동안, 프로세서는 페이지에 대한 상술한 정보(즉, 시스템 물리 주소, 게스트 물리 주소, 가상 기계에 대한 식별자, 페이지 크기 등)의 일부 또는 전부를 역방향 맵 테이블 내 엔트리에서의 대응하는 필드들에 기입한다. 프로세서는 또한 역방향 맵 테이블(228) 내 엔트리가 업데이트되었음을 표시하도록 액세스 표시자를 0으로 설정한다. 페이지에 대한 매핑이 업데이트되지 않아야 할 때(단계 614), 방법이 종료된다.
RMT_업데이트 동작은 대응하는 페이지의 할당과 연관되어 설명되었지만, RMT_업데이트 동작은 페이지들이 할당될 때에만 사용되는 것으로 제한되지 않는다. 일반적으로, 역방향 맵 테이블 내 엔트리가 하이퍼바이저(또는 컴퓨팅 장치의 다른 소프트웨어 개체)에 의해 업데이트되어야 할 때마다 RMT_업데이트 동작이 수행될 수 있다. 즉, 단계들 602-612의 동작들은 대응하는 페이지의 할당 이외의 이유로 역방향 맵 테이블 내 엔트리를 업데이트할 때 수행될 수 있다. 이는 단순히 역방향 맵 테이블(228)에 대한 일반적인 "업데이트"인 단계(614)에 의해 도시된다.
도 6에 도시된 바와 같이, 하이퍼바이저(및 다른 소프트웨어 개체들)는 역방향 맵 테이블(228)에 "직접" 액세스할 수 없다. 대신, 하이퍼바이저는 RMT_업데이트 요청을 전송하고 프로세서는 전술한대로 업데이트를 처리한다(액세스 표시자 소거를 포함하여). 설명된 바와 같이 역방향 맵 테이블(228)에 대한 하이퍼바이저의 액세스를 RMT_업데이트 동작으로 제한함으로써, 설명된 실시 예들은 하이퍼바이저가 악의적으로, 잘못하여 등으로 내포 페이지 테이블 및 역방향 맵 테이블(228) 양자를 업데이트하는 상황을 피함으로써, 내포 페이지 테이블의 업데이트를 가능한 숨긴다.
일부 실시 예에서, 하이퍼바이저가 특정 가상 기계를 종료해야 할 때, 하이퍼바이저는 가상 기계에 할당된 페이지들을 회수하고, 이어서 내포 페이지 테이블 및 리버스 맵 테이블(228)을 수정함으로써 페이지들을 재할당한다. 변경 불가한 페이지들의 할당 해제는 플랫폼 보안 프로세서를 통해 수행된다는 것을 주의하자. 플랫폼 보안 프로세서는 하이퍼바이저와 같은 소프트웨어 개체들에 인터페이스를 제공하여 소프트웨어 개체들이 플랫폼 보안 프로세서에 페이지들의 할당 해제를 요청할 수 있게한다.
게스트 액세스 페이지 테이블 내 표시자 소거
도 7은 일부 실시 예에 따라 게스트 액세스 페이지 테이블(230)에서 표시자를 소거하기 위한 방법을 도시한 블록도를 나타낸다. 도 7에 도시된 동작들은 일부 실시 예에 의해 수행되는 동작들의 일반적인 예로서 제공된다. 다른 실시 예들에 의해 수행되는 동작들은 상이한 순서로 수행되는 상이한 동작들 및/또는 동작들을 포함한다. 또한, 특정 메커니즘들/요소들이 동작들(예를 들어, 가상 기계 등)을 설명하는데 사용되지만, 일부 실시 예에서는, 다른 메커니즘들이 동작들을 수행하고/거나 동작들이 다른 메커니즘들/요소들에 관해 수행된다.
예를 들어 도 7에서, 도 8 및 도 9의 동작이 수행되었다고 가정된다. 즉, 메모리의 페이지가 이미 테이블 워커에 의해 액세스된 것으로 표시되었다.
도 7에 도시된 방법은 가상 기계가 메모리의 페이지가 해제되어야 할 것으로 결정할 때 시작한다(단계 700). 예를 들어, 가상 기계는 할당된 페이지가 더 이상 사용되지 않으므로 하이퍼바이저에 의한 재할당을 위해 반환될 수 있다고 결정할 수 있다.
그 다음, 가상 기계는 페이지와 연관된 GAP_자유 요청을 프로세서로 전송한다(단계 702). GAP_자유 요청은 프로세서가 가상 기계와 연관된 게스트 액세스 페이지 테이블(230) 내 엔트리를 업데이트하는 동작들을 수행하게 한다. 일부 실시 예에서, GAP_자유 요청은 페이지를 식별하는 정보(예를 들어, 게스트 물리 주소), 페이지의 크기, 및/또는 요청하는 가상 기계(예를 들어, 가상 기계에 대한 주소 공간 식별자와 같은 게스트 ID)를 포함한다.
그 다음, 프로세서는 가상 기계가 역방향 맵 테이블(228)에서의 페이지에 액세스한 것으로 도시된다고 결정한다(단계 704). 예를 들어, 프로세서는 역방향 맵 테이블(228) 내의 대응하는 엔트리로부터 정보를 획득하고 엔트리가 유효하다는 것, 엔트리로부터의 게스트 물리 주소가 요청으로부터의 페이지를 식별하는 정보와 매칭한다는 것, 역방향 맵 테이블(228)이 페이지가 액세스되었음을 제시한다는 것(예를 들어, 엔트리 내 액세스 표시자를 검사하는 것을 통해), 게스트 ID가 요청하는 가상 기계의 게스트 ID와 매칭한다는 것, 엔트리로부터의 페이지 크기가 GAP_자유에 표시된 페이지의 크기와 매칭한다는 것을 검증하고/거나 다른 검사들을 수행할 수 있다. 가상 기계가 페이지에 액세스하는 것으로 제시되지 않으면, 프로세서는 폴트 제기, 가상 시스템 및/또는 하이퍼바이저에 에러를 시그널링하는 등의 개선 조치를 수행한다.
그 다음 프로세서는 페이지에 대한 게스트 액세스 페이지 테이블(230)의 업데이트를 수행한다(단계 706). 게스트 액세스 페이지 테이블(230)의 업데이트 동안, 프로세서는 페이지가 가상 기계에 의해 액세스되고 있지 않음을 나타내기 위해 페이지에 대한 표시자를 지정된 값(예를 들어, 0)으로 설정한다. 업데이트가 완료될 때, 게스트 액세스 페이지 테이블(230)은 가상 기계가 대응하는 페이지에 액세스하고 있지 않는다고 결정하기 위해 컴퓨팅 장치(예를 들어, 테이블 워커 등) 내의 정보의 소비자들에 대한 대응하는 표시자에 충분한 정보를 포함한다.
설명된 바와 같이 게스트 액세스 페이지 테이블(230)을 업데이트할 때, 프로세서는 또한 페이지가 가상 기계에 의해 액세스되고 있지 않음을 나타내기 위해 역방향 맵 테이블(228) 내 대응하는 엔트리를 업데이트한다. 예를 들어, RMT_업데이트 동작을 통해, 프로세서는 역방향 맵 테이블(228) 내의 대응하는 엔트리에, 페이지가 액세스되고 있지 않음을 나타내는 값(예를 들어, 0)으로 액세스 표시자를 설정할 수 있다. 이러한 방식으로, 프로세서는 페이지에 대한 게스트 액세스 페이지 테이블(230)에서의 표시자 및 역방향 맵 테이블(228)에서의 액세스 표시자가 페이지가 액세스되고 있지 않는지 여부에 관해 서로 일치함을 보장한다. 일부 실시 예에서, 역방향 맵 테이블(228)의 업데이트가 실패하거나 거부되면(예를 들어, 역방향 맵 테이블(228) 내 잠겨진 엔트리로 인해), 게스트 액세스 페이지 테이블 업데이트 또한 실패한다.
일부 실시 예에서, GAP_자유 동작은 가상 기계가 게스트 액세스 페이지 테이블(230)에 액세스하기 위해 이용 가능한 유일한 메커니즘이다. 즉, 이러한 실시 예들에서, 가상 기계는 게스트 액세스 페이지 테이블(230)에 직접 액세스하는 것이 차단되므로, 단순히 값들을 기입할 수 없다. 가상 기계가 GAP_자유 동작을 사용하도록 하면, 예를 들어, 가상 기계가 게스트 액세스 페이지 테이블(230)을 업데이트 할 때 역방향 맵 테이블(228)이 상술된 바와 같이 검사되고 업데이트됨이 보장된다.
역방향 맵 테이블 및 게스트 액세스 페이지 테이블 사용
도 8은 일부 실시 예에 따라 역방향 맵 테이블 및 게스트 액세스 페이지 테이블을 사용하기 위한 방법을 도시한 블록도를 나타낸다. 도 8에 도시된 동작들은 일부 실시 예에 의해 수행되는 동작들의 일반적인 예로서 제공된다. 다른 실시 예들에 의해 수행되는 동작들은 상이한 순서로 수행되는 상이한 동작들 및/또는 동작들을 포함한다. 또한, 특정 메커니즘들/요소들이 동작들(예를 들어, 프로세서 등)을 설명하는데 사용되지만, 일부 실시 예에서는, 다른 메커니즘들이 동작들을 수행하고/거나 동작들이 다른 메커니즘들/요소들에 관해 수행된다.
도 8에 도시된 방법은 테이블 워커(예를 들어, 메모리 관리 유닛 내의 하드웨어 테이블 워커)가 소정의 가상 주소로부터 시스템 물리 주소로의 변환을 위해 프로세서로부터(예를 들어, 프로세서 내의 로드/저장 유닛으로부터) 요청을 수신할 때 시작한다(단계 800). 예를 들어, 프로세서는 가상 기계 및/또는 대응하는 게스트 운영 시스템을 실행하는 동안, 가상 기계에 대한 소정의 가상 주소에서 메모리 액세스를 수행하기 위한 요청에 직면할 수 있다. 그 다음, 프로세서는 소정의 가상 주소로부터 시스템 물리 주소로의 변환을 위한 요청을 테이블 워커로 전송할 수 있다.
그 다음 테이블 워커는 대응하는 게스트 페이지 테이블 및 내포 페이지 테이블에서 테이블 워크들을 수행하여, 결과적으로 가상 주소와 연관된 시스템 물리 주소를 획득한다(단계 802). 페이지 테이블 워크 중에 시스템 물리 주소를 획득하는 동안, 테이블 워커는 또한 페이지의 크기 등과 같이 내포 페이지 테이블(또는 다른 곳)에서 다른 정보를 획득할 수도 있다. 프로세서는 또한 테이블 워크들을 수행하는 것을 피하려는 시도로, 변환의 캐킹된 카피를 찾으려는 시도로 하나 이상의 TLB를 검사할 수도 있다. 그러나, 이러한 예에서는, 변환의 캐시 카피가 이용 가능하지 않다고 가정된다.
시스템 물리 주소를 획득할 때, 테이블 워커는 가상 기계가 대응하는 페이지에 액세스할 수 있는지 여부를 결정하기 위해 역방향 맵 테이블 및 대응하는 게스트 액세스 페이지 테이블 중 적어도 하나를 검사한다(단계 804). 도 9는 일부 실시 예에 따라 가상 기계가 대응하는 페이지에 액세스할 수 있는지 여부를 결정하기 위해 역방향 맵 테이블 및 대응하는 게스트 액세스 페이지 테이블 중 적어도 하나를 검사하기 위한 방법을 도시한 블록도를 나타낸다. 도 9에 도시된 동작들은 일부 실시 예에 의해 수행되는 동작들의 일반적인 예로서 제공된다. 다른 실시 예들에 의해 수행되는 동작들은 상이한 순서로 수행되는 상이한 동작들 및/또는 동작들을 포함한다. 또한, 특정 메커니즘들/요소들이 동작들(예를 들어, 테이블 워커 등)을 설명하는데 사용되지만, 일부 실시 예에서는, 다른 메커니즘들이 동작들을 수행하고/거나 동작들이 다른 메커니즘들/요소들에 관해 수행된다.
도 9에 도시된 바와 같이, 방법은 테이블 워커가 역방향 맵 테이블(228)로부터, 시스템 물리 주소와 연관된 엔트리 내의 정보를 획득할 때 시작한다(단계 900). 예를 들어, 테이블 워커는 역방향 맵 테이블(228) 내 엔트리로부터 시스템 물리 주소에 비례하거나 그 외로 기초한 역방향 맵 테이블(228)의 기준 주소로부터의 오프셋에서 정보를 획득할 수 있다. 전술한 바와 같이, 일부 실시 예에서, 엔트리로부터의 정보는 기록된 게스트 ID, 기록된 게스트 물리 주소, 기록된 서브 페이지 카운트, 기록된 액세스 표시자, 기록된 크기 및 유효한 표시자의 일부 또는 전부를 포함한다.
그 다음 테이블 워커는 획득된 정보에 기초하여, 가상 기계가 페이지에 액세스할 수 있는지를 결정한다(단계 902). 예를 들어, 테이블 워커는 유효 표시자에 의해 표시된 대로, 엔트리가 유효한지 여부를 결정할 수 있다. 다른 예로서, 테이블 워커는 엔트리로부터의 기록된 게스트 물리 주소가 가상 기계로부터의 요청과 연관된(즉, 대응하는 테이블 워크 동안 게스트 페이지 테이블로부터 획득된) 게스트 물리 주소와 매칭하는지를 결정할 수 있다. 다른 예로, 테이블 워커는 내포 페이지 테이블로부터 획득된 페이지 크기가 엔트리로부터 기록된 페이지 크기와 매칭하는지를 결정할 수 있다. 다른 예로, 테이블 워커는 엔트리로부터 기록된 게스트 ID가 요청하는 가상 기계와 연관된 식별자와 매칭하는지를 결정할 수 있다. 다른 예로, 테이블 워커는 엔트리에 대한 읽기/쓰기 권한(또는 읽기/쓰기 권한을 나타내는 값)이 메모리 액세스의 유형과 매칭하는지를 결정할 수 있다. 다른 예로서, 액세스가 기입 액세스(즉, 읽기 전용 액세스가 아닌)일 때, 테이블 워커는 엔트리가 변경 불가인 것으로 표시되어 있는지를 결정할 수 있다. 다른 예로, 테이블 워커는 엔트리가 잠긴 것으로 표시되어 있는지(그리고 그에 따라 업데이트 또는 수정되는 중일 수 있는지)를 결정할 수 있다. 획득된 정보가 가상 기계가 페이지에 액세스할 수 없음을 나타낼 때(단계 904), 테이블 워커는 가상 기계가 페이지에 액세스할 수 없다고 결정한다(단계 906).
획득된 정보가 가상 기계가 페이지에 액세스할 수 있음을 나타낼 때(단계 904), 테이블 워커는 획득된 정보가 페이지가 액세스되었음을 나타내는지 결정한다(단계 908). 예를 들어, 테이블 워커는 획득된 정보로부터의 액세스 표시자가 페이지에 액세스되었음을 나타내는 지정된 값(이를테면 1)으로 설정되는지를 결정할 수 있다. 페이지가 액세스되었을 때(예를 들어, 메모리 동작이 가상 기계에 의한 대응하는 페이지의 최초 액세스가 아닐 때), 테이블 워커는 가상 기계가 페이지에 액세스 할 수 있다고 결정한다(단계 910). 즉, 역방향 맵 테이블(228) 내 엔트리로부터의 정보가 가상 기계에 의해 페이지의 적어도 하나의 이전 액세스가 이루어진 것을 나타내는 경우, 테이블 워커는 가상 기계가 페이지에 액세스할 수 있다고 결정한다. 하이퍼바이저가 엔트리를 업데이트 할 때마다(RMT_업데이트 동작을 통해) 페이지가 액세스되지 않았음을 나타내는 값으로 액세스 표시자가 설정됨으로써, 게스트 물리 주소로부터 시스템 물리 주소로의 매핑이 변경되었음을 나타낸다는 것을 상기하자. 액세스 표시자가 페이지에 액세스했음을 나타내므로, 하이퍼바이저가 엔트리를 변경하지 않았다는 것이 알려진다. 가상 기계는 액세스 권한을 갖는다는 것이 또한 알려지기 때문에(단계 904로부터), 게스트 물리 주소로부터 시스템 물리 주소로의 변환이 사용되게 하는 것이 안전한 것으로 알려져 있다.
획득된 정보가 페이지가 액세스되지 않았음을 나타낼 때, 테이블 워커는 페이지에 대한 게스트 액세스 페이지 테이블 표시자가 매칭하는 액세스 정보를 갖는지를 결정한다(단계 912). 보다 구체적으로, 테이블 워커는 역방향 맵 테이블 및 게스트 액세스 페이지 테이블 양자가 페이지가 액세스되지 않았음을 표시하는지를 검증한다. 전술한 바와 같이, 이러한 값들의 미스매치는 하이퍼바이저(및/또는 다른 개체)가 역방향 맵 테이블(228)에서 엔트리를 업데이트하였다는 것 그리고 매핑을 더 오래 신뢰할 수 있다는 것을 나타낸다. 그에 따라, 미스매치 또는 다른 불일치가 발생할 때, 테이블 워커는 가상 기계가 페이지에 액세스할 수 없다고 결정한다(단계 906).
페이지에 대한 게스트 액세스 페이지 테이블 표시자가 페이지가 액세스되지 않았음을 나타냄에 있어서 엔트리로부터의 액세스 표시자와 매칭될 때(또는 그 외 일치될 때)(단계 912), 테이블 워크는 가상 기계가 페이지에 액세스할 수 있다고 결정한다(단계 910).
설명된 실시 예들에서, 페이지에 대한 게스트 액세스 페이지 테이블 표시자 및 엔트리로부터의 액세스 표시자가 모두 페이지가 액세스되지 않았음을 나타내고, 페이지의 액세스가 가상 기계에 대한 프로세서에 의해 수행될 때(즉, 도 8 내지 도 9에서의 동작들과 함께), 테이블 워커(및/또는 다른 개체)는 페이지에 대한 게스트 액세스 페이지 테이블 표시자 및 역방향 맵 테이블(228) 내 엔트리에서의 액세스 표시자를 값(예를 들어, 1)으로 설정하여 페이지가 액세스되었음을 나타낸다. 이러한 방식으로, 테이블 워커(또는 다른 개체)는 페이지가 액세스되었음을 기록한다.
도 8을 참조하면, 가상 기계가 대응하는 페이지에 액세스할 수 없을 때(단계 806), 테이블 워커는 게스트 물리 주소로부터 시스템 물리 주소로의 변환을 종료한다(단계 808). 예를 들어, 테이블 워커는 폴트를 어써트하거나 다른 개선 조치를 수행하고/거나, 그렇지 않으면 변환을 종료할 수 있고 시스템 물리 주소를 프로세서에 제공하지 않을 수 있다. 그렇지 않으면, 가상 기계가 대응하는 페이지에 액세스할 수 있을 때(단계 806), 테이블 워커는 게스트 물리 주소로부터 시스템 물리 주소로의 변환을 완료한다(단계 810). 변환을 완료하는 것은 시스템 물리 주소를 프로세서에 제공하는 것을 포함하는데, 여기서 시스템 물리 주소는 메모리 액세스 등에 사용될 수 있다. 프로세서는 또한 차후 색인를 위해 TLB에서 반환된 가상 주소 대 물리 주소 변환(즉, 가상 주소 대 시스템 물리 주소 변환)을 캐싱할 수도 있다.
전술한 검사 동작들은 특정 가상 기계에 할당되는(예를 들어, 공유되지 않는) 페이지들에 대해 두 개의 규칙을 따름을 보장한다. 첫 번째 규칙은 메모리의 각 페이지가 한 번에 하나의 게스트 주소에만 연관된다는 것이다. 이러한 규칙은 상기한 902-904 단계들 동안 시행된다. 두 번째 규칙은 특정 가상 기계에만 할당된 사용 페이지가 가상 기계가 수반되지 않고 하이퍼바이저에 의해 재매핑되지 않아야 한다는 것이다. 이러한 규칙은 전술한 도 6의 RMT_업데이트 동작 및 908-912 단계들에서 역방향 맵 테이블(228) 및 게스트 액세스 페이지 테이블(230)의 검사들을 사용함으로써 시행된다.
일부 실시 예에서, 호스트 액세스(예를 들어, 하이퍼바이저)를 위해 수행되는 테이블 워크들은 가상 기계들 및/또는 게스트 운영 체제들에 대한 테이블 워크들과 상이하게 처리될 수 있다. 예를 들어, 요청을 하이퍼바이저/호스트로부터 인 곳으로 식별하고 액세스가 쓰기를 위한(즉, 읽기 전용이 아니거나 명령 인출을 위한) 것이 아니라는 것을 나타내는 식별자와 가상 주소 대 물리 주소 변환 요청을 수신하면, 테이블 워커는 역방향 맵 테이블(228) 내의 대응하는 엔트리에 대한 유효 표시자가 엔트리에 잠금 표시자가 설정될 때, 게스트 운영 체제가 페이지를 소유한다는 것을 표시하도록 설정될 때, 더 작은 페이지거 하이퍼바이저에 의해 액세스 가능/기입 가능한 더 큰 페이지 내에 있지 않을 때, 그리고/또는 더 큰 페이지가 하이퍼바이저에 의해 액세스 가능/기입 가능하지 않은 하나 이상의 더 작은 페이지를 포함할 때 페이지 폴트를 어써트하거나 다른 개선 조치를 수행할 수 있다. 이러한 검사들 중 첫 번째, 즉, 역방향 맵 테이블(228) 내의 유효 표시자의 검사는 하이퍼바이저가 쓰기 액세스를 갖는 비공개 게스트 운영 체제 페이지들에 액세스하지 않음을 보장하기 위해 사용된다는 것에 주의하자. 즉, 하이퍼바이저는 유효 비트(변경 불가 비트가 설정될 수도 있음)를 사용하여, 게스트 운영 체제가 소유한 페이지에 대한 쓰기 액세스를 수행하는 것이 금지된다.
공유된 페이지들
일부 실시 예에서, 메모리 내의 페이지들은 두 개 이상의 가상 기계에 의해 공유될 수 있다. 즉, 두 개 이상의 가상 기계가 개별 페이지들에 액세스 가능할 수 있다. 예를 들어, 공통 라이브러리들(stdlib.h 등), 응용 프로그램들, 커널 루틴들 등의 프로그램 코드가 포함하는 페이지들이 공유될 수 있다. 다른 예로서, 가상 기계들에 의해 판독될 데이터의 페이지들이 공유될 수 있다. 일부 실시 예에서, 공유된 페이지들은 페이지들이 공통적으로 사용되고 그에 따라 적어도 일부, 그리고 가능한 모든, 가상 기계에 의해 공유 가능하다는 점에서, 전역에서 공유된 페이지들일 수 있다. 이러한 실시 예들에서, 컴퓨팅 장치는 공유된 페이지들에 대한 액세스를 제어하기 위해 다양한 메커니즘을 사용한다. 예를 들어, 일부 실시 예에서, 역방향 맵 테이블(228) 내의 페이지에 대한 엔트리 내의 전역에 공유된 페이지 표시자는 페이지가 공유됨을 나타내기 위해 지정된 값(예를 들어, 1)으로 설정될 수 있으고, 변경 불가 표시자는 페이지가 변경 불가능하다는 것을 나타내도록 설정될 수 있는 등이다. 일부 실시 예에서, 공유된 페이지들은 모든 가상 기계 간에(또는 적어도 페이지에 대한 공유된 액세스가 허가되는 가상 기계들 간에) 공유되는 키로 암호화된다.
일부 실시 예에서, 단지 특정 유형들의 액세스들 만이 공유된 페이지들에 허가된다. 예를 들어, 공유된 페이지들의 경우 쓰기가 허가되지 않을 수 있다. 전술한 역방향 맵 테이블(228) 및 게스트 액세스 페이지 테이블(230)의 검사 동안(단계 806), 일부 실시 예에서, 시스템은 허가되지 않는 메모리 액세스(이를테면 쓰기)가 수행되고 있지 않음을 보장하기 위해 하나 이상의 검사를 수행한다. 이러한 실시 예들에서, 테이블 워커는 메모리 액세스가 공유된 페이지에 대해 허가되지 않을 때 가상 기계가 페이지에 액세스할 수 없다고 결정할 수 있다.
암호화된 페이지들
일부 실시 예에서, 소정의 가상 기계에 할당된 메모리 내의 페이지들은 소정의 가상 기계에 특정한 키를 사용하여(보안 수단으로서) 암호화된다. 이러한 실시 예들에서, 가상 기계들은 대응하는 페이지가 암호화되는지 여부를 나타내는 각 페이지와 관련된 표시자를 포함할 수 있다. 일부 실시 예에서, 역방향 맵 테이블(228) 및 게스트 액세스 페이지 테이블(230)의 전술한 검사들은 암호화되지 않은 페이지들에 대해서는 수행되지 않는다(이러한 페이지들은 일반적으로 안전하지 않은 것/신뢰할 수 없는 것으로 추정될 수 있다). 공유된 페이지들은 암호화되지 않고/거나 모든 가상 기계 알려진 키를 사용하여 암호화될 수 있다.
역방향 맵 테이블 및 게스트 액세스 페이지 테이블의 인에이블/디스에이블 검사
일부 실시 예에서, 하드웨어 또는 소프트웨어 전환이 역방향 맵 테이블(228) 및 게스트 액세스 페이지 테이블(230)의 전술한 검사들을 인에이블 및 디스에이블하기 위해 이용 가능하다. 예를 들어, 각 가상 기계는 플래그, 레지스터 등에 기입된 특정 값(예를 들어, 1)을 가질 수 있는 소프트웨어, 레지스터 등에 플래그를 제공하여 전술한 검사들을 가능하게 할 수 있다. 이러한 실시 예들에서, 플래그, 레지스터 등이 다른 값(예를 들어, 0)으로 설정될 때, 검사들은 수행되지 않는다.
가상 기계들 이외의 개체들에 대한 검사
가상 기계가 페이지들로 할당되는 실시 예들이 위에서 설명되었지만, 일부 실시 예에서, 가상 기계 이외의 개체들은 유사한 방식들로 악성 페이지 재매핑으로부터 보호된다. 예를 들어, 입출력 메모리 관리 유닛은 주변 장치들과 연관된 테이블들(즉, 역방향 맵 테이블 및 게스트 액세스 페이지들과 동일하지만 IOMMU에 대한 테이블들)에 대해 유사한 검사들을 수행할 수 있다. 일반적으로, 설명된 실시 예들은 메모리 내의 페이지들에 액세스할 수 있는 컴퓨팅 장치의 임의의 개체로 동작 가능하다.
페이지 이동 및 분할
일부 실시 예에서, 하이퍼바이저는 메모리 내에서 메모리의 페이지들을 마이그레이션시키거나 그 외 이동시키는 이유를 가질 수 있다. 예를 들어, 페이지들은 페이지 워런트의 액세스와 같이 고속, 저용량 메모리로부터 저속, 대용량 메모리로 마이그레이션/이동될 수 있으며, 페이지들은 메모리에서 비균일 메모리 액세스(NUMA, non-uniform memory access) 시스템 등에서의 액세스 코어에 더 가깝게 이동될 수 있다. 메모리 내의 페이지들을 마이그레이션/이동시키기위한 동작들의 일부로서, 컴퓨팅 장치의 프로세서는 역방향 맵 테이블(228) 엔트리들이 이동을 반영하도록 업데이트되는 동안 발신 및 수신 페이들지에 대한 역방향 맵 테이블(228) 엔트리들을 잠금하기 위해 전술한 잠금 표시자를 사용할 수 있다. 또한, 프로세서는 엔트리들 내의 정보(페이지 카운트, 크기 등)가 매칭됨 그리고/또는 호환됨을 보장하기 위해 다양한 검사를 수행함으로써, 수신 페이지에 대한 엔트리가 마이그레이션된 페이지에 적합함을 보장할 수 있다.
일부 실시 예에서, 하이퍼바이저는 큰 크기의 페이지를 가상 기계에 할당 할 수 있지만(예를 들어, 2MB), 이후에 더 큰 페이지를 다수의 더 작은 페이지(예를 들어, 4 kB)로 분할함으로써 더 큰 페이지를 분할하는 이유를 갖는다. 예를 들어, 하이퍼바이저는 더 큰 2 MB 페이지 내에서 보다 작은 4KB 페이지들을 개별적으로 마이그레이션하고/거나 더 작은 페이지들에 대한 페이지 속성들을 수정하는 이유가 있을 수 있다. 페이지들을 분할하기 위한 동작들의 일부로서, 컴퓨팅 장치의 프로세서는 역방향 맵 테이블(228) 엔트리들이 분할을 반영하도록 업데이트되는 동안(즉, 더 큰 그리고 더 작은 페이지들에 대한 크기 정보가 업데이트되는 동안) 역방향 맵 테이블(228) 엔트리를 잠금하기 위해 전술한 잠금 표시자를 사용할 수 있다. 또한, 프로세서는 더 큰 페이지가 분할될 수 있음, 즉, 더 큰 페이지가 유효한 것으로, 큰 페이지인 것으로 표시됨, 변경 불가하지 않음, 전역에 공유되지 않음 등을 보장하기 위해 검사들을 수행할 수 있다.
일부 실시 예에서, 컴퓨팅 장치(예를 들어,도 2의 컴퓨팅 장치(200) 및/또는 그 일부)는 비일시적인 컴퓨터 판독 가능 저장 매체에 저장된 코드 및/또는 데이터를 사용하여 본 출원에 설명된 동작들 중 일부 또는 전부를 수행한다. 보다 구체적으로, 컴퓨팅 장치는 컴퓨터 판독 가능 저장 매체로부터 코드 및/또는 데이터를 판독하고 설명된 동작들을 수행할 때 코드를 실행하고/거나 데이터를 사용한다.
컴퓨터 판독 가능 저장 매체는 컴퓨팅 장치에 의한 사용을 위한 코드 및/또는 데이터를 저장하는 임의의 장치 또는 매체 또는 이들의 조합일 수 있다. 예를 들어, 컴퓨터 판독 가능 저장 매체는 플래시 메모리, 랜덤 액세스 메모리(eDRAM, RAM, SRAM, DRAM, DDR, DDR2/DDR3/DDR4 SDRAM 등), 판독 전용 메모리(ROM) 및/또는 자기 또는 광 저장 매체들(예를 들어, 디스크 드라이브들, 자기 테이프, CD, DVD들)을 포함하여, 휘발성 메모리 또는 비휘발성 메모리를 포함할 수 있지만, 이에 제한되지는 않는다.
일부 실시 예에서, 하나 이상의 하드웨어 모듈은 본 출원에서 설명된 동작들을 수행하도록 구성된다. 예를 들어, 하드웨어 모듈들은 하나 이상의 프로세서/코어/중앙 처리 장치들(CPU), 주문형 반도체(ASIC) 칩들, 필드 프로그래밍 가능 게이트 어레이들(FPGA), 캐시들/캐시 제어기들, 메모리 관리 유닛들, 컴퓨터 유닛들, 임베디드 프로세서들, 그래픽 프로세서들(GPU)/그래픽 코어들, 파이프 라인들, 가속 처리 장치들(APU, Accelerated Processing Units) 및/또는 기타 프로그램 가능 로직 장치들을 포함할 수 있지만, 이에 제한되지는 않는다. 그러한 하드웨어 모듈들이 활성화될 때, 하드웨어 모듈들이 일부 또는 모든 동작을 수행한다. 일부 실시 예에서, 하드웨어 모듈들은 동작들을 수행하기 위한 명령어들(프로그램 코드, 펌웨어 등)을 실행함으로써 구성되는 하나 이상의 범용 회로를 포함한다.
일부 실시 예에서, 본 출원에 설명된 구조들 및 메커니즘들의 일부 또는 전부를 나타내는 데이터 구조(예를 들어, 컴퓨팅 장치(100) 및/또는 그 일부)는 데이터베이스 또는 컴퓨팅 장치에 의해 판독되고 구조들 및 메커니즘들을 포함하는 하드웨어를 제조하기 위해, 직접 또는 간접적으로 사용될 수 있는 다른 데이터 구조를 포함하는 비일시적인 컴퓨터 판독 가능 저장 매체 상에 저장된다. 예를 들어, 데이터 구조는 Verilog 또는 VHDL과 같은 상위 수준 설계 언어(HDL)의 하드웨어 기능에 대한 동작 수준 기술 또는 레지스터 전송 수준(RTL) 기술일 수 있다. 기술은 전술한 구조들 및 메커니즘들을 포함하는 하드웨어의 기능을 나타내는 합성 라이브러리로부터 게이트들/회로 요소들의 리스트를 포함하는 네트리스트를 생성하기 위해 설명을 합성할 수 있는 합성 툴에 의해 판독될 수 있다. 그 다음 네트리스트를 배치하고 라우팅하여 마스크들에 적용할 기하학적 모양들을 기술하는 데이터 세트를 생성할 수 있다. 그 다음 마스크들은 전술한 구조들 및 메커니즘들에 대응하는 반도체 회로 또는 회로들을 생산하기 위해 다양한 반도체 제조 단계에서 사용될 수 있다. 대안적으로, 컴퓨터 액세스 가능 저장 매체 상의 데이터베이스는 네트리스트(합성 라이브러리가 있거나 없는) 또는 필요 시, 데이터 세트, 또는 그래픽 데이터 시스템(GDS) II 데이터 일 수 있다.
본 설명에서, 기능 블록들은 일부 실시 예를 설명할 때 언급될 수 있다. 일반적으로, 기능 블록들은 설명된 동작들을 수행하는 하나 이상의 상호 관련된 회로를 포함한다. 일부 실시 예에서, 기능 블록에서의 회로들은 설명된 동작들을 수행하기 위한 프로그램 코드(예를 들어, 마이크로 코드, 펌웨어, 응용 프로그램들 등)를 실행하는 회로들을 포함한다. 또한, 개체들이 일부 실시 예를 설명할 때 언급될 수 있다. 일반적으로, 개체는 하드웨어 기능 블록들(예를 들어, 개별 회로들 또는 회로 요소들, 복합 회로들, ASIC들, 프로세서들 등) 및/또는 개체에 할당되거나 그 외 연관된 동작들을 수행 할 수 있는 소프트웨어 프로그램들(예를 들어, 루틴, 응용 프로그램들, 기능들 등)을 포함할 수 있다.
실시 예들에 대한 앞에서의 설명들은 단지 예시 및 설명의 목적들로 제시되었다. 그것들은 철저하거나 본 실시 예들을 개시된 형태들로 제한하는 것으로 의도되지 않는다. 따라서, 많은 수정 및 변형이 당업자에게 명백할 것이다. 또한, 상기한 개시 내용은 실시 예들을 제한하려는 것이 아니다. 실시 예들의 범위는 첨부된 청구범위에 의해 한정된다.

Claims (21)

  1. 컴퓨팅 장치에서 가상 기계들에 의한 메모리 액세스를 처리하기 위한 방법으로서, 상기 컴퓨팅 장치는 역방향 맵 테이블(RMT, reverse map table) 및 각각의 가상 기계에 대한 별도의 게스트 액세스 페이지 테이블(GAPT, guest accessed pages table)을 포함하고, 상기 RMT는 복수의 엔트리를 포함하며, 각각의 엔트리는 메모리 내 데이터의 관련 페이지에 액세스하도록 허가된 가상 기계를 식별하기 위한 정보를 포함하고, 각각의 GAPT는 대응하는 가상 기계에 의해 액세스되는 페이지들의 레코드를 포함하며, 상기 방법은:
    테이블 워커(table walker)에서, 가상 주소를 시스템 물리 주소로 변환하기 위한 요청을 수신하는 단계로서, 상기 요청은 소정의 가상 기계로부터 생기는, 상기 변환하기 위한 요청을 수신하는 단계;
    대응하는 게스트 페이지 테이블로부터, 상기 가상 주소와 연관된 게스트 물리 주소를, 그리고 내포 페이지 테이블(nested page table)로부터, 상기 가상 주소와 연관된 시스템 물리 주소를 획득하는 단계;
    상기 소정의 가상 기계가 대응하는 페이지에 액세스할 수 있는지 여부를 결정하기 위해 상기 게스트 물리 주소 및 상기 시스템 물리 주소에 기초하여, 상기 RMT 및 대응하는 GAPT 중 적어도 하나를 검사하는 단계; 및
    상기 가상 기계가 상기 대응하는 페이지에 액세스할 수 없는 경우, 상기 가상 주소를 상기 시스템 물리 주소로 변환하는 단계를 종료하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서, 상기 RMT 및 상기 대응하는 GAPT 중 적어도 하나를 검사하는 단계는:
    상기 시스템 물리 주소에 대응하는 상기 RMT 내의 엔트리가 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 없음을 나타내는 정보를 포함하는 경우, 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 없다고 결정하는 단계; 및
    상기 RMT 내 상기 엔트리가 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 있음을 나타내는 정보를 포함하는 경우,
    상기 RMT 내 상기 엔트리의 페이지 액세스 정보가 상기 대응하는 페이지가 액세스되지 않았음을 나타내고, 상기 대응하는 GAPT의 상기 대응하는 페이지에 대한 페이지 액세스 정보가 상기 대응하는 페이지가 액세스되었음을 나타낼 때, 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 없다고 결정하는 단계; 및
    상기 RMT 내 상기 엔트리의 그리고 상기 대응하는 GAPT의 상기 대응하는 페이지에 대한 양 페이지 액세스 정보가 상기 대응하는 페이지가 액세스되지 않았음을 나타낼 때, 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 있다고 결정하는 단계를 포함하는, 방법.
  3. 청구항 2에 있어서,
    상기 RMT 내 상기 엔트리가 유효한 것으로 표시되지 않는 것; 그리고 상기 RMT 내 엔트리에 기록된 게스트 물리 주소가 상기 게스트 물리 주소와 매칭하지 않는 것 중 적어도 하나가 참일 때,
    상기 RMT 내 상기 엔트리는 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 없음을 나타내는 정보를 포함하는, 방법.
  4. 청구항 3에 있어서,
    상기 RMT 내 상기 엔트리에 기록된 가상 기계 식별자가 상기 소정의 가상 기계에 대한 식별자와 매칭하지 않는 것;
    상기 RMT 내 상기 엔트리에 기록된 페이지 크기가 상기 시스템 물리 주소와 연관된 페이지 크기와 매칭하지 않는 것; 그리고
    상기 RMT 내 상기 엔트리에 기록된 읽기/쓰기 권한이 상기 메모리 액세스의 읽기/쓰기 유형과 매칭하지 않는 것 중 적어도 하나가 참일 때,
    상기 RMT 내 상기 엔트리는 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 없음을 나타내는 정보를 더 포함하는, 방법.
  5. 청구항 2에 있어서,
    상기 RMT 내 엔트리를 업데이트하기 위한 요청을 수신하는 단계;
    상기 RMT 내 다른 엔트리의 정보와 충돌이 발생할 때 상기 요청을 종료하는 단계;
    상기 RMT 내 상기 엔트리가 유효한 것으로 표시될 때, 하나 이상의 대응하는 변환 색인 버퍼를 플러싱(flushing)하는 단계; 및
    상기 RMT 내 상기 엔트리를 업데이트하는 단계로서, 상기 대응하는 페이지가 액세스되지 않았음을 나타내도록 상기 RMT 내 상기 엔트리의 페이지 액세스 정보를 설정하는 단계를 포함하는, 상기 엔트리를 업데이트하는 단계를 더 포함하는, 방법.
  6. 청구항 2에 있어서,
    상기 대응하는 GAPT에서, 소정의 게스트 물리 주소의 소정의 페이지에 대한 페이지 액세스 정보를 소거하기 위한 요청을 상기 소정의 가상 기계로부터 수신하는 단계;
    상기 RMT에 대응하는 레코드가 존재하고 페이지 액세스 정보를 소거할 후보인 것을 확인하는 단계; 및
    상기 대응하는 GAPT 및 상기 RMT에서 상기 소정의 페이지에 대한 페이지 액세스 정보를 소거하는 단계를 더 포함하는, 방법.
  7. 청구항 2에 있어서,
    하나 이상의 페이지가 두 개 이상의 가상 기계 간에 액세스가 공유될 수 있는 전역에서 공유되는 페이지들이고, 상기 대응하는 페이지가 전역에서 공유되는 페이지이며; 그리고
    상기 RMT 내 상기 엔트리는 상기 RMT 내 상기 엔트리가 상기 대응하는 페이지가 전역에서 공유되고 상기 메모리 액세스가 공유된 페이지에 대해 허가되지 않은 메모리 액세스임을 나타낼 때 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 없음을 나타내는 정보를 포함하는, 방법.
  8. 청구항 1에 있어서,
    상기 컴퓨팅 장치에 의해 실행되는 하이퍼바이저에 대해, 상기 RMT 및 상기 GAPT들에 대한 직접 액세스를 차단하는 단계를 더 포함하되;
    상기 차단하는 단계는:
    상기 RMT 및 상기 GAPT들 중 하나 또는 양자를 암호화하는 단계; 및
    상기 RMT 및 상기 GAPT들 중 하나 또는 양자를 상기 하이퍼바이저가 직접 액세스 가능하지 않은 메모리의 대응하는 영역들에 저장하는 단계 중 적어도 하나를 포함하는, 방법.
  9. 청구항 1에 있어서,
    상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 있을 때, 상기 가상 주소를 상기 시스템 물리 주소로 변환하는 단계를 완료하는 단계를 더 포함하며, 상기 완료하는 단계는 상기 요청에 응답하여 상기 시스템 물리 주소를 리턴하는 단계를 포함하는, 방법.
  10. 청구항 9에 있어서,
    상기 RMT 및 상기 대응하는 GAPT 중 적어도 하나를 검사하지 않고, 상기 대응하는 페이지가 공유될 때 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 있다고 결정하는 단계를 더 포함하는, 방법.
  11. 가상 기계들에 의한 메모리 액세스를 처리하는 컴퓨팅 장치로서,
    프로세서;
    하드웨어 테이블 워커; 및
    역방향 맵 테이블(RMT, reverse map table) 및 각각의 가상 기계에 대한 별도의 게스트 액세스 페이지 테이블(GAPT, guest accessed pages table)을 저장한 메모리로서, 상기 RMT는 복수의 엔트리를 포함하며, 각각의 엔트리는 메모리 내 데이터의 관련 페이지에 액세스하도록 허가된 가상 기계를 식별하기 위한 정보를 포함하고, 각각의 GAPT는 대응하는 가상 기계에 의해 액세스되는 페이지들의 레코드를 포함하는, 상기 메모리를 포함하되;
    상기 테이블 워커는:
    가상 주소를 시스템 물리 주소로 변환하기 위한 요청을 수신하되, 상기 요청은 소정의 가상 기계로부터 생기는, 상기 변환하기 위한 요청을 수신하도록;
    대응하는 게스트 페이지 테이블로부터, 상기 가상 주소와 연관된 게스트 물리 주소를, 그리고 내포 페이지 테이블로부터, 상기 가상 주소와 연관된 시스템 물리 주소를 획득하도록;
    상기 소정의 가상 기계가 대응하는 페이지에 액세스할 수 있는지 여부를 결정하기 위해 상기 게스트 물리 주소 및 상기 시스템 물리 주소에 기초하여, 상기 RMT 및 대응하는 GAPT 중 적어도 하나를 검사하도록; 그리고
    상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 없는 경우, 상기 가상 주소를 상기 시스템 물리 주소로 변환하는 것을 종료하도록 구성되는, 컴퓨팅 장치.
  12. 청구항 11에 있어서, 상기 RMT 및 상기 대응하는 GAPT 중 적어도 하나를 검사하는 것은:
    상기 시스템 물리 주소에 대응하는 상기 RMT 내의 엔트리가 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 없음을 나타내는 정보를 포함하는 경우, 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 없다고 결정하는 것; 그리고
    상기 RMT 내 상기 엔트리가 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 있음을 나타내는 정보를 포함하는 경우,
    상기 RMT 내 상기 엔트리의 페이지 액세스 정보가 상기 대응하는 페이지가 액세스되지 않았음을 나타내고, 상기 대응하는 GAPT의 상기 대응하는 페이지에 대한 페이지 액세스 정보가 상기 대응하는 페이지가 액세스되었음을 나타낼 때, 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 없다고 결정하는 것; 그리고
    상기 RMT 내 상기 엔트리의 그리고 상기 대응하는 GAPT의 상기 대응하는 페이지에 대한 양 페이지 액세스 정보가 상기 대응하는 페이지가 액세스되지 않았음을 나타낼 때, 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 있다고 결정하는 것을 포함하는, 컴퓨팅 장치.
  13. 청구항 12에 있어서,
    상기 RMT 내 상기 엔트리가 유효한 것으로 표시되지 않는 것; 그리고
    상기 RMT 내 엔트리에 기록된 게스트 물리 주소가 상기 게스트 물리 주소와 매칭하지 않는 것 중 적어도 하나가 참일 때,
    상기 RMT 내 상기 엔트리는 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 없음을 나타내는 정보를 포함하는, 컴퓨팅 장치.
  14. 청구항 13에 있어서,
    상기 RMT 내 상기 엔트리에 기록된 가상 기계 식별자가 상기 소정의 가상 기계에 대한 식별자와 매칭하지 않는 것;
    상기 RMT 내 상기 엔트리에 기록된 페이지 크기가 상기 시스템 물리 주소와 연관된 페이지 크기와 매칭하지 않는 것; 그리고
    상기 RMT 내 상기 엔트리에 기록된 읽기/쓰기 권한이 상기 메모리 액세스의 읽기/쓰기 유형과 매칭하지 않는 것 중 적어도 하나가 참일 때,
    상기 RMT 내 상기 엔트리는 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 없음을 나타내는 정보를 더 포함하는, 컴퓨팅 장치.
  15. 청구항 12에 있어서, 상기 프로세서는:
    상기 RMT 내 엔트리를 업데이트하기 위한 요청을 수신하도록;
    상기 RMT 내 다른 엔트리의 정보와 충돌이 발생할 때 상기 요청을 종료하도록;
    상기 RMT 내 상기 엔트리가 유효한 것으로 표시될 때, 하나 이상의 대응하는 변환 색인 버퍼를 플러싱(flushing)하도록; 그리고
    상기 RMT 내 상기 엔트리를 업데이트하되, 상기 대응하는 페이지가 액세스되지 않았음을 나타내도록 상기 RMT 내 상기 엔트리의 페이지 액세스 정보를 설정하는 것을 포함하여, 상기 업데이트하도록 구성되는, 컴퓨팅 장치.
  16. 청구항 12에 있어서, 상기 프로세서는:
    상기 대응하는 GAPT에서, 소정의 게스트 물리 주소의 소정의 페이지에 대한 페이지 액세스 정보를 소거하기 위한 요청을 상기 소정의 가상 기계로부터 수신하도록;
    상기 RMT에 대응하는 레코드가 존재하고 페이지 액세스 정보를 소거할 후보인 것을 확인하도록; 그리고
    상기 대응하는 GAPT 및 상기 RMT에서 상기 소정의 페이지에 대한 페이지 액세스 정보를 소거하도록 구성되는, 컴퓨팅 장치.
  17. 청구항 12에 있어서, 하나 이상의 페이지가 두 개 이상의 가상 기계 간에 공유되는 전역에서 공유되는 페이지들이되, 상기 대응하는 페이지가 전역에서 공유되는 페이지이며; 그리고
    상기 RMT 내 상기 엔트리는 상기 RMT 내 상기 엔트리가 상기 대응하는 페이지가 전역에서 공유되고 상기 메모리 액세스가 공유된 페이지에 대해 허가되지 않은 메모리 액세스임을 나타낼 때 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 없음을 나타내는 정보를 포함하는, 컴퓨팅 장치.
  18. 청구항 11에 있어서, 상기 테이블 워커는 또한:
    상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 있을 때, 상기 요청에 응답하여 상기 시스템 물리 주소를 리턴하는 것을 포함하여, 상기 가상 주소를 상기 시스템 물리 주소로 변환하는 것을 완료하도록 구성되는, 컴퓨팅 장치.
  19. 청구항 18에 있어서, 상기 테이블 워커는 또한:
    상기 RMT 및 상기 대응하는 GAPT 중 상기 적어도 하나를 검사하지 않고, 상기 대응하는 페이지가 공유될 때 상기 소정의 가상 기계가 상기 대응하는 페이지에 액세스할 수 있다고 결정하도록 구성되는, 컴퓨팅 장치.
  20. 삭제
  21. 청구항 11에 있어서,
    상기 컴퓨팅 장치는,
    상기 컴퓨팅 장치에 의해 실행되는 하이퍼바이저에 대해, 상기 RMT 및 상기 GAPT들에 대한 직접 액세스를 차단하도록 구성되고,
    상기 차단하는 것은:
    상기 RMT 및 상기 GAPT들 중 하나 또는 양자를 암호화하는 것; 및
    상기 RMT 및 상기 GAPT들 중 하나 또는 양자를 상기 하이퍼바이저가 직접 액세스 가능하지 않은 메모리의 대응하는 영역들에 저장하는 것 중 적어도 하나를 포함하는, 컴퓨팅 장치.
KR1020197004317A 2016-07-29 2017-05-24 컴퓨팅 장치의 메모리 내 페이지 접근 제어 KR102435949B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/224,302 US10169244B2 (en) 2016-07-29 2016-07-29 Controlling access to pages in a memory in a computing device
US15/224,302 2016-07-29
US15/417,632 US10241931B2 (en) 2016-07-29 2017-01-27 Controlling access to pages in a memory in a computing device
US15/417,632 2017-01-27
PCT/US2017/034196 WO2018022178A1 (en) 2016-07-29 2017-05-24 Controlling Access to Pages in a Memory in a Computing Device

Publications (2)

Publication Number Publication Date
KR20190026909A KR20190026909A (ko) 2019-03-13
KR102435949B1 true KR102435949B1 (ko) 2022-08-25

Family

ID=61009960

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197004317A KR102435949B1 (ko) 2016-07-29 2017-05-24 컴퓨팅 장치의 메모리 내 페이지 접근 제어

Country Status (6)

Country Link
US (1) US10241931B2 (ko)
EP (1) EP3491520B1 (ko)
JP (1) JP7177038B2 (ko)
KR (1) KR102435949B1 (ko)
CN (1) CN109564522B (ko)
WO (1) WO2018022178A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10083129B2 (en) * 2016-08-29 2018-09-25 Red Hat Israel, Ltd. Code loading hardening by hypervisor page table switching
US10509733B2 (en) 2017-03-24 2019-12-17 Red Hat, Inc. Kernel same-page merging for encrypted memory
CN108733311B (zh) * 2017-04-17 2021-09-10 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
US10209917B2 (en) 2017-04-20 2019-02-19 Red Hat, Inc. Physical memory migration for secure encrypted virtual machines
US10379764B2 (en) * 2017-05-11 2019-08-13 Red Hat, Inc. Virtual machine page movement for encrypted memory
US11783064B2 (en) * 2017-07-10 2023-10-10 Intel Corporation Techniques to provide hardware enforced protection environment for a system management mode
US11354420B2 (en) 2017-07-21 2022-06-07 Red Hat, Inc. Re-duplication of de-duplicated encrypted memory
US10318435B2 (en) * 2017-08-22 2019-06-11 International Business Machines Corporation Ensuring forward progress for nested translations in a memory management unit
CN111133416A (zh) 2017-09-26 2020-05-08 英特尔公司 处理来自虚拟机命令的方法和装置
US10686605B2 (en) * 2017-09-29 2020-06-16 Intel Corporation Technologies for implementing mutually distrusting domains
US10613990B2 (en) 2017-12-05 2020-04-07 Red Hat, Inc. Host address space identifier for non-uniform memory access locality in virtual machines
US10838637B2 (en) 2018-02-08 2020-11-17 Micron Technology, Inc. Status management in storage backed memory package
CN110489052B (zh) * 2018-05-14 2022-11-25 慧荣科技股份有限公司 数据储存装置
US11030112B2 (en) * 2018-05-25 2021-06-08 Red Hat, Inc. Enhanced address space layout randomization
US11144468B2 (en) * 2018-06-29 2021-10-12 Intel Corporation Hardware based technique to prevent critical fine-grained cache side-channel attacks
US11573904B2 (en) * 2018-10-12 2023-02-07 Vmware, Inc. Transparent self-replicating page tables in computing systems
US11099874B2 (en) * 2019-01-28 2021-08-24 Red Hat Israel, Ltd. Efficient userspace driver isolation by shallow virtual machines
US20200285501A1 (en) * 2019-03-08 2020-09-10 International Business Machines Corporation Communication interface of a secure interface control
CN110442425B (zh) * 2019-07-19 2022-04-08 南京芯驰半导体科技有限公司 一种虚拟化地址空间隔离系统及方法
US11061711B2 (en) 2019-09-23 2021-07-13 Red Hat, Inc. Storage deduplication for virtual machines with encrypted storage
US11232030B2 (en) * 2019-09-27 2022-01-25 Red Hat Inc. Storage deduplication for virtual machines with encrypted storage
US11656891B2 (en) 2019-09-27 2023-05-23 Red Hat, Inc. Copy-on-write for virtual machines with encrypted storage
US11614956B2 (en) 2019-12-06 2023-03-28 Red Hat, Inc. Multicast live migration for encrypted virtual machines
CN115516438A (zh) * 2020-05-15 2022-12-23 华为技术有限公司 内存管理装置及方法
CN113342711B (zh) * 2021-06-28 2024-02-09 海光信息技术股份有限公司 页表更新方法、装置及相关设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110276741A1 (en) 2006-03-31 2011-11-10 Vmware, Inc. Maintaining reverse mappings in a virtualized computer system
US20160110291A1 (en) 2014-10-19 2016-04-21 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111145B1 (en) * 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US8443156B2 (en) * 2009-03-27 2013-05-14 Vmware, Inc. Virtualization system using hardware assistance for shadow page table coherence
US9535849B2 (en) * 2009-07-24 2017-01-03 Advanced Micro Devices, Inc. IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect
US8601310B2 (en) * 2010-08-26 2013-12-03 Cisco Technology, Inc. Partial memory mirroring and error containment
WO2012117465A1 (ja) * 2011-03-02 2012-09-07 パナソニック株式会社 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路
KR101323858B1 (ko) * 2011-06-22 2013-11-21 한국과학기술원 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법
US9703723B2 (en) * 2011-08-29 2017-07-11 International Business Machines Corporation Method and apparatus for performing mapping within a data processing system having virtual machines
US8719546B2 (en) * 2012-01-04 2014-05-06 Intel Corporation Substitute virtualized-memory page tables
US9336158B2 (en) * 2013-02-26 2016-05-10 Oracle International Corporation Method and system for simplified address translation support for static infiniband host channel adaptor structures
US9639476B2 (en) * 2013-09-26 2017-05-02 Cavium, Inc. Merged TLB structure for multiple sequential address translations
CN103955399B (zh) * 2014-04-30 2017-06-20 华为技术有限公司 一种虚拟机迁移方法和装置及物理主机
JP6584823B2 (ja) * 2014-06-20 2019-10-02 株式会社東芝 メモリ管理装置、プログラム、及び方法
US9335943B2 (en) * 2014-06-30 2016-05-10 Intel Corporation Method and apparatus for fine grain memory protection
US9875047B2 (en) * 2015-05-27 2018-01-23 Red Hat Israel, Ltd. Exit-less host memory locking in a virtualized environment
CN105354155A (zh) * 2015-12-03 2016-02-24 上海高性能集成电路设计中心 一种基于页表检查机制的存储器访问权限控制方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110276741A1 (en) 2006-03-31 2011-11-10 Vmware, Inc. Maintaining reverse mappings in a virtualized computer system
US20160110291A1 (en) 2014-10-19 2016-04-21 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
공개특허공보 제10-2013-0000253호(2013.01.02.) 1부*

Also Published As

Publication number Publication date
EP3491520B1 (en) 2021-06-23
CN109564522B (zh) 2023-08-04
US20180032447A1 (en) 2018-02-01
US10241931B2 (en) 2019-03-26
JP7177038B2 (ja) 2022-11-22
WO2018022178A1 (en) 2018-02-01
CN109564522A (zh) 2019-04-02
EP3491520A1 (en) 2019-06-05
EP3491520A4 (en) 2020-04-01
JP2019522298A (ja) 2019-08-08
KR20190026909A (ko) 2019-03-13

Similar Documents

Publication Publication Date Title
KR102435949B1 (ko) 컴퓨팅 장치의 메모리 내 페이지 접근 제어
US10509736B2 (en) Controlling access by IO devices to pages in a memory in a computing device
US10585805B2 (en) Controlling access to pages in a memory in a computing device
US10169244B2 (en) Controlling access to pages in a memory in a computing device
US7739466B2 (en) Method and apparatus for supporting immutable memory
US7673345B2 (en) Providing extended memory protection
JP5581403B2 (ja) メモリのセキュア領域および非セキュア領域へのセキュアモードページテーブルデータの格納
JP4237190B2 (ja) 仮想マシン環境内でのゲスト物理アドレスの仮想化の方法およびシステム
US7516247B2 (en) Avoiding silent data corruption and data leakage in a virtual environment with multiple guests
US20110016290A1 (en) Method and Apparatus for Supporting Address Translation in a Multiprocessor Virtual Machine Environment
US20220308756A1 (en) Performing Memory Accesses for Input-Output Devices using Encryption Keys Associated with Owners of Pages of Memory
JP2023518482A (ja) 複数の物理アドレス空間を使用する装置及び方法
CN108491716B (zh) 一种基于物理页地址分析的虚拟机内存隔离性检测方法
WO2022200962A1 (en) Migrating pages of memory accessible by input-output devices
US11726693B2 (en) Migrating pages of memory accessible by input-output devices
JP2023526000A (ja) 変換テーブルアドレス記憶回路
US11188477B2 (en) Page protection layer
JP2023519322A (ja) 装置及び方法
JP2023518481A (ja) 複数の物理アドレス空間を使用する装置及び方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right