KR20180017093A - 공유 페이지 - Google Patents

공유 페이지 Download PDF

Info

Publication number
KR20180017093A
KR20180017093A KR1020187000520A KR20187000520A KR20180017093A KR 20180017093 A KR20180017093 A KR 20180017093A KR 1020187000520 A KR1020187000520 A KR 1020187000520A KR 20187000520 A KR20187000520 A KR 20187000520A KR 20180017093 A KR20180017093 A KR 20180017093A
Authority
KR
South Korea
Prior art keywords
given
page
ownership
memory
access
Prior art date
Application number
KR1020187000520A
Other languages
English (en)
Other versions
KR102517506B1 (ko
Inventor
제이슨 파커
리차드 로이 그리센드와이트
앤드류 크리스토퍼 로즈
Original Assignee
에이알엠 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에이알엠 리미티드 filed Critical 에이알엠 리미티드
Publication of KR20180017093A publication Critical patent/KR20180017093A/ko
Application granted granted Critical
Publication of KR102517506B1 publication Critical patent/KR102517506B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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/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
    • G06F12/1433Protection 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 for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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

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)
  • Human Computer Interaction (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

물리 메모리 어드레스 공간내의 메모리 영역들의 소유권 권한을 시행하는 소유권 회로를 구비하는 데이터 처리장치로서, 주어진 메모리 영역이 복수의 프로세스 중에서 또한 특권 레벨에 상관없이 특정된 주어진 소유 프로세스를 갖고, 상기 주어진 소유 프로세스가 상기 주어진 메모리 영역들에의 액세스를 제어하는 배타적 권한을 갖고, 상기 주어진 소유 프로세스가 상기 주어진 메모리 영역을, 상기 주어진 소유 프로세스에 대한 전용; 및 상기 주어진 소유 프로세스와, 메모리 액세스 요구들의 적어도 하나의 또 다른 소스와의 사이에서, 공유 중, 하나로서 지정하는, 데이터 처리장치.

Description

공유 페이지
본 발명은, 데이터 처리 시스템의 분야에 관한 것이다.
데이터 처리 시스템이 하나 이상의 게스트 실행 환경의 가상화를 지원하는 것이 알려져 있다. 일례로서, 게스트 운영체계와 하나 이상의 게스트 애플리케이션 프로그램으로 이루어질 수도 있는 하나 이상의 게스트 실행 환경 자신의 실행을 제어 및 예정하는 하이퍼바이저를 데이터 처리 시스템이 사용하는 것이 알려져 있다. 상기 시스템들의 적어도 일부의 이용 내에서는, 상기 시스템내의 그 밖의 프로세스들에 의한 액세스로부터 주어진 게스트 실행 환경의 데이터(잠재적 비밀 데이터)를 보호해야 하는 것이 바람직하다.
본 발명의 적어도 일부의 실시예들은,
물리 메모리 어드레스 공간내의 메모리 영역들의 소유권 권한을 시행하는 소유권 회로를 구비하는 데이터 처리장치로서, 주어진 메모리 영역이 복수의 프로세스 중에서 또한 특권 레벨에 상관없이 특정된 주어진 소유 프로세스를 갖고, 상기 주어진 소유 프로세스가 상기 주어진 메모리 영역들에의 액세스를 제어하는 배타적 권한을 갖고, 상기 주어진 소유 프로세스가 상기 주어진 메모리 영역을,
상기 주어진 소유 프로세스에 대한 전용; 및
상기 주어진 소유 프로세스와, 메모리 액세스 요구들의 적어도 하나의 또 다른 소스와의 사이에서, 공유 중,
하나로서 지정하는, 상기 데이터 처리장치를 제공한다.
본 발명의 적어도 일부의 다른 실시예들은,
물리 메모리 어드레스 공간내의 메모리 영역들의 소유권 권한을 시행하는 소유권 수단을 구비하는 데이터 처리장치로서, 주어진 메모리 영역이 복수의 프로세스 중에서 또한 특권 레벨에 상관없이 특정된 주어진 소유 프로세스를 갖고, 상기 주어진 소유 프로세스가 상기 주어진 메모리 영역들에의 액세스를 제어하는 배타적 권한을 갖고, 상기 주어진 소유 프로세스가 상기 주어진 메모리 영역을,
상기 주어진 소유 프로세스에 대한 전용; 및
상기 주어진 소유 프로세스와, 메모리 액세스 요구들의 적어도 하나의 또 다른 소스와의 사이에서, 공유 중,
하나로서 지정하는, 상기 데이터 처리장치를 제공한다.
본 발명의 적어도 일부의 또 다른 실시예들은,
물리 메모리 어드레스 공간내의 메모리 영역들의 소유권 권한을 시행하는 단계를 포함하는 데이터 처리방법으로서, 주어진 메모리 영역이 복수의 프로세스 중에서 또한 특권 레벨에 상관없이 특정된 주어진 소유 프로세스를 갖고, 상기 주어진 소유 프로세스가 상기 주어진 메모리 영역들에의 액세스를 제어하는 배타적 권한을 갖고, 상기 주어진 소유 프로세스가 상기 주어진 메모리 영역을,
상기 주어진 소유 프로세스에 대한 전용; 및
상기 주어진 소유 프로세스와, 메모리 액세스 요구들의 적어도 하나의 또 다른 소스와의 사이에서, 공유 중,
하나로서 지정하는, 상기 데이터 처리방법을 제공한다.
본 기술의 또 다른 측면들, 특징들 및 이점들은, 아래의 첨부도면과 관련지어 읽혀질 다음 예들의 설명으로부터 명백할 것이다:
도 1은 처리장치에서 실행한 프로세스들의 일례를 개략적으로 도시한 것이고,
도 2a, 2b는 데이터 처리장치의 일례를 도시한 것이고,
도 3은 데이터 스토어에서 액세스 데이터에 대한 액세스 요구들의 검증(validation)의 일례를 개략적으로 도시한 것이고,
도 4는 데이터 처리장치의 상이점들에서의 트랜잭션들의 일례를 도시한 것이고,
도 5는 액세스 요구들의 검사 방법의 일례를 도시한 것이고,
도 6은 물리 어드레스들의 대응한 페이지의 소유권(ownership)을 요구하는 요구 프로세스의 방법의 일례를 도시한 것이고,
도 7은 겹쳐쓰기 프로세스의 일례를 도시한 것이고,
도 8은 소유권 테이블에서의 속성들을 갱신하는 일례를 도시한 것이고,
도 9는 색인(lookaside) 버퍼에서의 엔트리들을 무효화하는 명령어들의 일례를 도시한 것이고,
도 10은 게스트 실행 환경의 보안 초기화를 개략적으로 도시한 것이고,
도 11은 물리 메모리 어드레스 공간의 페이지의 소유권을 파괴적으로 청구하는 프로세스를 개략적으로 도시하는 흐름도이고,
도 12는 하이퍼바이저와, 다수의 게스트 실행 환경들을 지원하는 하드웨어 시스템을 개략적으로 도시한 것이고,
도 13은 하이퍼바이저와, 보안 제어기 및 다수의 게스트 실행 환경들간의 관계를 개략적으로 도시한 것이고,
도 14는 물리 메모리 어드레스 공간의 페이지의 여러가지의 공유 상태들을 개략적으로 도시한 것이고,
도 15는 공유 허가를 변경하는 요구의 처리를 개략적으로 도시하는 흐름도이고,
도 16a 및 16b는 실행 콘택스트의 전환을 개략적으로 도시하는 흐름도이고,
도 17은 프로세스 디스크립터 엔트리의 일례를 개략적으로 도시한 것이고,
도 18은 프로세스 스테이터스 상태들을 개략적으로 도시한 것이다.
이하, 본 기술의 일부의 구체적인 예들을 설명한다.
도 1은 데이터 처리장치에서 실행 가능한 프로세스들의 일례를 개략적으로 도시한 것이다. 하이퍼바이저(2)는, 다수의 가상 머신(게스트 운영체계 또는 게스트 OS로서도 알려진, VM들)(4)을 관리하여도 된다. 각 VM(4)은, 하나 이상의 애플리케이션(6)을 관리하여도 된다. 예를 들면, 상기 하이퍼바이저(2)는, 각 가상 머신(4)에 어드레스 공간의 어느 영역을 할당하는지를 제어하여도 되고, 가상 머신(4)간의 전환, 예를 들면, 각각의 가상 머신(4)간의 시간 공유 처리 자원에 대한 인터럽트들의 예정을 제어하여도 된다. 마찬가지로, 각 VM(4)은, 그 VM(4)하에서 실행하는 각 애플리케이션(4)에 상기 어드레스 공간의 어느 영역을 할당하는지를 제어하여도 되고, 필요에 따라 상기 애플리케이션간의 전환을 제어하여도 된다.
도 1에 도시된 것처럼, 각 프로세스는, 주어진 특권 레벨 EL0, EL1, EL2, EL3과 관련되어 있다. 본 예에서는, 상위 번호의 특권 레벨이 하위 번호의 특권 레벨보다 많은 특권이 주어지긴 하지만, 다른 예들에서는 다른 방식의 라운드로 번호가 매겨질 수 있다. 본 예에서는, 상기 애플리케이션들(6)은 특권 레벨 EL0에서 실행하고, 상기 VM들(4)은 특권 레벨 EL1에서 실행하며, 상기 하이퍼바이저(2)는 특권 레벨 EL2에서 실행한다. 전형적으로, 상위 특권 레벨에서 실행하는 프로세스의 권한은, 하위 특권 레벨에서 실행하는 프로세스에 대해 이용 가능하지 않다.
도 1에 도시된 것처럼, 상기 하이퍼바이저(2), VM들(4) 및 장치(6)는, 통상 도메인에서 작동할 수도 있다. 추가로, 상기 장치는, 그 통상 도메인에서 실행하는 프로세스들이 보안 도메인과 관련된 데이터나 명령어들에 액세스할 수 없도록 그 통상 도메인으로부터 분할된 보안 도메인을 지원할 수도 있다. 따라서, 보안 도메인에서 작동하는 프로세스들, 이를테면 보안 운영체계(OS)(10)와 이 보안 OS(10)의 제어하에 상기 보안 도메인에서 실행하는 신뢰된 애플리케이션들(12)도 있을 수도 있다. 상기 보안 OS(10)와 신뢰된 애플리케이션들(12)은, 특권 레벨 S-EL1, S-EL0 각각에서 실행한다. 또한, 보안 모니터 프로세스(14)는, 특권 레벨 EL3에서 통상 도메인과 보안 도메인간의 천이를 관리하도록 제공된다. 그 보안 모니터 프로세스(14)는, 예를 들면, 상기 어드레스 공간의 어느 영역이 상기 보안 도메인이나 비보안 도메인과 관련되는지를 관리하여도 되고, 이때 일부의 보호용 하드웨어는 상기 통상 도메인에서 비보안 프로세스들이 상기 보안 영역들내의 데이터나 명령어들에 액세스하는 것을 방지하도록 제공된다. 상기 통상 도메인과 보안 도메인을 분할하기 위한 기술의 일례는, 영국 캠브리지 ARM®사에서 제공한 Trustzone® 기술이긴 하지만, 그 밖의 예들도 사용될 수 있다. 도 1에 도시된 같은 보안 도메인의 제공은 선택사항이고, 그 밖의 실시예들은 예를 들면, 상기 보안 모니터(14), 보안 OS(10) 및 신뢰된 애플리케이션들(12)을 지원할 수 없을 수도 있다.
상기 프로세스들(2, 4, 6, 10, 12, 14) 각각은, 가상 어드레스들(VA들)을 사용하여 메모리와 같은 데이터 스토어에서 액세스되는 위치들을 식별한다. 이 VA들은, 대응한 저장 위치들을 직접 식별하는 물리 어드레스들(PA들)로 변환된다. 애플리케이션(6) 또는 가상 머신(4)에 대해서, 먼저 상기 VA들이 중간의 물리 어드레스들(IPA들)로 변환되고 나서, 그 IPA들이 PA들로 변환된다. 2개의 레벨의 어드레스 변환을 제공함으로써, 예를 들면, 상기 가상 머신(4)은 각 애플리케이션(6)에 상기 어드레스 공간의 어느 부분을 할당할지를 제어하기 위해 VA 대 IPA 변환을 위한 페이지 테이블들을 제어할 수도 있고, 상기 하이퍼바이저(2)는 각 가상 머신(4)에 상기 어드레스 공간의 어느 부분을 할당할지를 제어하기 위해 IPA 대 PA 변환을 위한 페이지 테이블들을 제어할 수도 있다. 그 밖의 프로세스들(2, 14, 10, 12)에 대해서, 상기 VA들은, (통상 도메인에서) 상기 하이퍼바이저(2) 또는 (보안 도메인에서) 상기 보안 OS(10)가 예를 들면 상기 어드레스 공간의 어느 부분을 각 프로세스가 액세스할 수 있는지를 제어하는 상기 페이지 테이블들을 제어하면서 PA들로 직접 변환된다.
따라서, 데이터 처리장치가 실행할 수 있는 프로세스들이 다수 있을 수도 있다. 전형적인 시스템에서는, 상위 특권 레벨들에서의 프로세스들이 하위 특권 레벨들에서 무슨 어드레스들을 액세스할 수 있는지를 제어하면서 상기 어드레스 공간에의 액세스에 대한 제어를 "하향식(top down)"으로 관리한다. 예를 들면, EL2에서 상기 하이퍼바이저(2)는, EL1에서 상기 가상 머신들(4)이 어느 어드레스들에 액세스할 수 있는지를 규정하는 액세스 허가를 설정한다. 그렇지만, 전형적으로, 상기 고위 특권 레벨에서의 작동하는 프로세스는, 하위 특권 레벨에서 그 프로세스하에 작동하는 각 프로세스와 관련된 어드레스들 모두에 대해 판독 또는 기록할 수 있다. 이에 따라 하위 특권 레벨들에서 작동하는 프로세스들의 개발자에 대한 보안 과제를 초래할 수 있다. 예를 들면, 상이한 파티들이 제공한 다수의 가상 머신(4)을 구현하는 클라우드 플랫폼에 있어서, 그 파티들 중 하나는, 상기 클라우드 조작자와 같은 상이한 파티에 의해 제공될 수도 있는, 상기 가상 머신(4)과 관련된 데이터나 코드가 상기 하이퍼바이저(2)에 노출되지 않기를 바랄 수도 있다.
본 애플리케이션에서는, 상기 가상 머신들(4)을 관리하고 그들이 상기 어드레스 공간의 어느 부분에 액세스할 수 있는지를 제어하지만, 반드시 주어진 가상 머신(4)과 관련된 데이터 전부를 알 수 없는, "블라인드 하이퍼바이저"의 개념을 도입한다. 마찬가지로, 그 밖의 특권 레벨들에서 동작하는 프로세스들에 대해서, 상위 특권 레벨에서 작동하는 프로세스는, 하위 특권 레벨에서 작동하는 프로세스에서 사용하는 어드레스들에 액세스하는 것으로부터 방지될 수 있다.
도 2a, 2b는 명령어들에 응답하여 데이터를 처리하기 위한 몇몇의 처리회로들로 이루어진 다수의 버스 마스터를 구비하는 데이터 처리장치(20)의 일례를 도시한 것이다. 본 예에서, 그 처리회로들은, 2개의 중앙처리유닛들(CPU들)(24), 그래픽 처리 유닛(GPU)(25) 및 후술하는 것처럼 특정한 보안 기능들을 관리하는 전용 처리 유닛인 보안 콤플렉스(28)를 구비한다. 버스 마스터들은, 예를 들면 외부 디바이스에 대한 데이터의 입력 또는 출력을 제어하기 위한 직접 메모리 액세스(DMA) 제어기(26) 또는 입/출력(I/0) 인터페이스(도 2a, 2b에 미도시됨) 등의 상기 처리회로들 중 하나를 대신하여 처리 태스크들을 실행할 수 있는 그 밖의 디바이스도 구비한다. 그 밖의 종류의 마스터 디바이스도 제공될 수 있다는 것을 알 것이다. 시스템 버스(30)는, 메모리(34)에의 액세스를 제어하는 메모리 제어기(DMC)(32)에 각 버스 마스터에 결합한다. 본 예에서, 상기 메모리는, 동적 랜덤 액세스 메모리(DRAM)를 사용하여 구현되지만, 그 밖의 형태의 메모리나 그 밖의 종류의 데이터 스토어도 제공될 수 있다는 것을 알 것이다. 각 버스 마스터(24, 25, 26, 28)는 상기 버스(30)를 거쳐 데이터 액세스 트랜잭션들(판독들 또는 기록들)을 상기 메모리 제어기(32)에 발행하고, 상기 제어기는 상기 트랜잭션들을 서비스하기 위해 상기 메모리(34)를 제어한다.
다수의 캐시(36)는 상기 처리회로들(24, 25)에 국한된 데이터나 명령어들을 캐시하도록 제공된다. 상기 CPU들(24)은, 각각 자신의 레벨1 명령어 캐시와 레벨1 데이터 캐시를 갖지만 레벨2 캐시를 공유한다. 상기 GPU(25)는, 데이터나 명령어들을 캐시하는 캐시(36)를 갖는다. 이것이 사용될 수 있는 가능한 캐시 계층의 일례일 뿐이고 다른 배치들이 가능한 것을 알 것이다. 각 처리회로(CPU 또는 GPU)(24, 25)는, 아래에 보다 상세히 설명하는 것처럼, 가상 어드레스(VA), 중간의 물리 어드레스(IPA)와 물리 어드레스(PA)간에 변환하고, 페이지 테이블들을 사용한 특정한 프로세스들에 의해 설정된 액세스 허가들을 시행하기 위한 메모리 관리부(40)도 갖는다.
상기 CPU들(24)과 GPU(25)는, 도 1에 대하여 상술한 임의의 종류의 프로세스로부터의 명령어들을 실행할 수 있다. 도 1의 각 프로세스(2, 4, 6, 10, 12, 14)는 "블라인드 도메인"(BD)이라고도 하고, 대응한 블라인드 도메인 식별자(BDID)를 갖는다. 일부의 프로세스에 대해서, BDID들은, 임의로 각각의 프로세스에 할당될 수 있다. 예를 들면, 상기 하이퍼바이저(2), 보안 모니터(14) 또는 보안 OS(10)에는, 단순히 대응한 BDID값이 할당될 수 있다. 그렇지만, 그 밖의 프로세스들에 대해서, 상기 BDID는 이미 개개의 프로세스들에 할당된 기존의 식별자들의 연결일 수 있다. 예를 들면, 특별한 가상 머신(4)하에서 실행하는 주어진 애플리케이션(5)의 BDID는, 이 애플리케이션과 관련된 애플리케이션 공간 식별자(ASID)와, 가상 머신 식별자(VMID)로부터 적어도 일부에 형성되어도 된다. 상기 보안 도메인이나 상기 통상 도메인과 상기 프로세스가 관련되는지를 가리키는 보안 비트 S는 상기 BDID에도 포함될 수 있다. 요약하면, 각 프로세스는 이 프로세스의 대응한 BDID를 사용하여 독특하게 식별 가능하다.
블라인드 도메인 디스크립터 테이블(BDDT)(42)은, 상기 메모리(34)내에서 각 BD(2, 4, 6, 10, 12, 14)의 상태를 추적하도록 구성된다. 예를 들면, BDID마다, 상기 BDDT(42)는 상기 블라인드 도메인의 상태를 다음 중 하나로서 특정하여도 된다:
· 무효(invalid): 블라인드 도메인이 그 BDID에 대해 아직 확립되어 있지 않다;
· 스크럽(scrub): 상기 보안 콤플렉스(28)가 상기 BDID를 청구중이다(아래에 설명된 것처럼, 이것은, 이전에 동일 BDID를 사용한 프로세스와 관련된 메모리(34)에 임의의 데이터를 겹쳐쓰는 겹쳐쓰기 과정을 행하는 것을 포함하여도 된다;
· 준비(prepare): 상기 보안 콤플렉스(28)가 BD를 준비하여 실행하기 위해 상기 BDID와 관련된 BD를 초기화중이다;
· 실행(execute): 상기 BD는 초기화되어 있고 실행 가능하거나 실행중이다.
예를 들면, 상기 BDDT(42)는, 대응한 블라인드 도메인의 상태를 식별하기 위해 BDID마다 2비트 상태 필드를 특정하여도 된다. 블라인드 도메인의 상태들의 라이프 사이클은 아래에 보다 상세히 설명한다. ASID에 의해 식별된 애플리케이션들의 BDDT 엔트리들은, 주어진 가상 머신(4)의 VMID를 상기 가상 머신(6)하에 실행하는 상기 애플리케이션들(6)의 ASID들에 매핑하는 VMID 대 ASID 간접 테이블을 사용하여 추적되어도 된다. 또한, 상기 BDDT(42)는 주어진 BD와 관련된 그 밖의 정보도 포함하고, 상술한 상태 식별자만을 포함하지 않을 수도 있다.
각 블라인드 도메인(BD)은, 그것의 데이터나 명령어들을 임의의 다른 블라인드 도메인으로부터 보호할 수도 있다. 임의의 BD는, 물리 어드레스 공간의 선택 페이지에 대해 소유자 BD가 되도록 요구할 수도 있다. 페이지 소유권 테이블(POT)(50)에는, (만약에 있다면) BD가 메모리의 물리 페이지마다 상기 소유자 BD인지를 추적하는 것이, 메모리(34)에 기억된다. 주어진 메모리의 페이지에 대한 상기 소유자 BD(소유자 프로세스라고도 함)는, 그 페이지에의 액세스를 제어하는 배타적 권한이 있다. 예를 들면, 상기 소유자 BD는, 그 밖의 BD들에 대해 상기 페이지를 액세스시킬지를 제어하는 상기 페이지 소유권 테이블(50)에서의 속성들을 설정할 수 있다. 각 버스 마스터에는, 그 밖의 BD들로부터 주어진 페이지를 대상으로 하는 액세스 요구들이 상기 소유자 BD에서 제어한 제약들을 위반하면 그 액세스 요구들이 상기 버스(30)에 출력되는 것을 방지하도록, 주어진 페이지의 소유자 BD에서 설정한 허가 속성들을 시행하는 보호 하드웨어(60, 62)가 구비되어 있다. 이렇게 하여, 어떠한 프로세스도, (상위 특권 레벨 프로세스들을 포함하는) 그 밖의 프로세스들이 그 데이터나 명령어들에 액세스하는 것을 방지할 수 있다.
도 2a, 2b에 도시된 것처럼, 상기 페이지 소유권 테이블(POT)(50)은, 상기 물리 어드레스 공간의 다른 페이지에 각각 해당한 다수의 엔트리들(52)을 포함한다. 상기 POT(50)는, 물리 어드레스별로 지수가 만들어진다. 상기 POT(50)의 각 엔트리(52)는, 다음의 정보를 포함한다:
· 대응한 물리 페이지를 소유하는 상기 BD의 BDID를 특정하는 소유자 BDID 필드(54);
· 대응한 물리 페이지에의 액세스를 제어하기 위한 하나 이상의 속성들을 특정하는 속성 필드(56). 이 속성들은 상기 BDID필드(54)에 식별된 상기 소유자 BD에 의해 설정된다;
· 어드레스 필드(58): 가상 어드레스들이나 중간 물리 어드레스들(예를 들면, 애플리케이션들 6, 12, 또는 가상 머신들 4)을 사용하는 소유자 BD를 갖는 페이지들에 대해서는, 상기 어드레스 필드(58)는 상기 소유자 BD가 상기 페이지를 청구할 때에 상기 대응한 물리 페이지의 물리 어드레스에 매핑된 상기 VA 또는 IPA를 특정한다;
· 페이지 상태 필드(도 2a, 2b에 미도시됨): 상기 대응한 페이지의 상태를 나타냄. 예를 들면, 각 물리 페이지는, 아래의 상태들 중 하나에 있어도 된다:
ㅇ 무효: 어떠한 BD도 소유하지 않음;
ㅇ 청구중: 상기 BDID 필드(54)에 나타낸 상기 BD가 청구중이지만 아직 유효하게 소유되지 않은 프로세스에 있어서;
ㅇ 유효: 상기 BDID 필드(54)에 나타낸 상기 BD가 유효하게 소유함.
· 선택사항으로, 페이지의 소유권을 청구할 때 행해진 겹쳐쓰기 프로세스 동안에 겹쳐써져 있는 상기 페이지의 라인들의 수를 추적하는 클레임(claim) 카운트 필드(60)(이것의 보다 많은 상세는 후술한다). 상기 클레임 카운터(60)를, CPU(24) 또는 GPU(25)의 레지스터들내 등의 다른 위치에, 또는 메모리(34)에서 스택 구조로, 기억하는 것도 가능하여, 상기 클레임 카운트 필드(60)는 원하는 경우 상기 POT(50)로부터 생략될 수 있다.
주어진 페이지에 대한 POT 엔트리(52)의 속성 필드(56)는, 그 밖의 BD들이 상기 페이지를 액세스하는 방식상 배타적 제어를 상기 소유자 BD에 제공하기 위해, 그 페이지를 위해 상기 소유자 BD에 의해 설정된다. 상기 속성 필드(56)는, 상기 대응한 페이지들에의 액세스를 제어하기 위한 속성들의 범위를 포함할 수도 있다, 예를 들면:
· 상기 소유자 BDID이외의 어느 프로세스들이 상기 페이지에 액세스 가능한지를 나타내는 공유 속성. 예를 들면, 이 공유 속성은, 아래의 페이지의 종류 중 하나를 특정하여도 된다:
ㅇ 전용(private): 이 페이지는 BDID필드(54)에서 식별된 상기 소유자 BD에 의해서만 액세스될 수 있다;
ㅇ IO: 이 페이지는, BDID필드(54)에서 식별된 상기 소유자 BD와, 이 소유자 BD가 청구하고 있는 임의의 디바이스(26)에 의해서만 액세스될 수 있다(아래에 디바이스 소유권을 청구하는 설명을 참조);
ㅇ 공유: 이 페이지는, 상기 소유자 BD와, 하나 이상의 선택된 그 밖의 BD들에 의해서 선택될 수 있지만, 임의의 그 밖의 BD들에 의해서는 선택될 수 없다. 그 선택된 그 밖의 BD들은, 상기 속성 필드(56)의 또 다른 속성들에 의해, 또는 상기 페이지 소유권 테이블(50)로부터 따로따로 기억된 제어 데이터에 의해, 식별될 수 있었다.
ㅇ 전체(global): 이 페이지는 어떠한 BD에 의해서도 액세스될 수 있다.
· 상기 소유자 BD이외의 BD에 대해 상기 페이지를 액세스시킬 때, 그 BD가 상기 페이지에 대해, 판독전용으로 액세스를 하거나 판독/기록 양쪽으로 액세스를 하는지를 나타내는 판독/기록 속성.
· 데이터가 상기 대응한 물리 페이지에 기록되도록 적용되는 암호화의 레벨을 나타내는 암호화 속성.
도 2a, 2b에 도시된 것처럼, 상기 메모리 제어기(32)는, 메모리(34)에 기록된 데이터를 암호화하고 상기 메모리(34)로부터 판독된 데이터를 복호화하는 암호화 회로(56)를 구비하여도 된다. 상기 암호화 회로(56)는, 다수의 비밀 암호화 키들을 유지할 수도 있고, 각 BDID는 자신의 키를 가질 수도 있다. 상기 암호화 회로(56)는, 전혀 암호화하지 않은 것(데이터가 깨끗해진 상기 메모리에 기록된다)으로부터 연속적으로 보다 강한 암호화의 형태까지에 걸쳐서, 다수의 상이한 암호화의 레벨을 지원한다. 일반적으로, 그 암호화가 강할수록, 보안이 더 강화되지만, 그 데이터를 암호화 및 복호화할 때 보다 큰 자원이 소모된다.
일부의 구현에 있어서, 주어진 BD는, 자신이 소유한 모든 페이지들에 대해 동일한 암호화 레벨을 특정하여도 된다. 그 암호화의 레벨이 하나의 BD가 소유한 모든 페이지들에 대해 같으면, 대안은, 그 BD가 소유한 모든 페이지들에 대한 각 POT 엔트리(52) 대신에, 상기 BDDT(42)에서 그 BD의 엔트리에서 암호화의 레벨을 특정하는 것이다. 그렇지만, 상기 페이지 테이블에서의 암호화의 레벨을 특정하는 것은, 상기 암호화 회로(56)가, 상기 POT(50)와 상기 BDDT(42)를 판독하는 것이라기 보다는, 하나의 테이블(50)을 판독하여 상기 페이지에 대한 상기 소유자 BD와 상기 암호화 레벨 양쪽을 식별하기만 하면 되기 때문에 보다 빠른 성능을 고려한다.
그렇지만, 그 밖의 실시예에서, 소유자 BD는 자신이 소유하는 다른 페이지들에 대해 상이한 암호화의 레벨을 특정하여도 된다. 상기 소유자 BD가 페이지 단위로 필요한 암호화의 레벨을 선택하게 함으로써, 최강의 암호화는 정말로 필요한 상기 페이지들을 위해 보류될 수 있고, 덜 민감한 정보를 기억하는 페이지들은 에너지를 절약하기 위해 보다 약한 암호화 레벨을 사용할 수 있다. 이에 따라, 보안과 에너지 소모간의 균형이 보다 좋을 수 있다.
따라서, 기록시에, 상기 암호화 회로(56)는, 대응한 페이지에 적용된 암호화의 레벨을 결정하기 위해 타겟 어드레스에 대한 POT 엔트리(52)를 확인한다. 상기 암호화 회로(56)는, 상기 암호화된 데이터를 메모리(34)에 기록하기 전에, 그 POT 엔트리(52)의 상기 BDID(54) 필드에 나타낸 소유자 BD에 대해 적절한 암호화 키를 선택하고, 그 키와 상기 특정된 암호화의 레벨을 사용한 데이터를 암호화한다. 마찬가지로, 판독 액세스시에, 상기 암호화 회로(56)는, 필요한 복호화의 레벨을 결정하기 위해 대응한 페이지에 대한 상기 POT 엔트리(52)와, 소유자 BD의 키가 복호화를 위해 사용되어야 하는지를 확인하고 나서, 상기 버스(30)상에서 상기 복호화된 데이터를 그 데이터를 요구한 마스터에게 출력한다.
따라서, 각 프로세스는, 물리 어드레스의 대응한 페이지에 대한 소유자가 될 수 있고, 상위 특권레벨에서 프로세스들상의 제어를 비롯한, 그 밖의 프로세스들이 상기 페이지에 액세스할 수 있는지에 대해 배타적 제어를 갖는다. 이에 따라, 가상 머신(4)은 예를 들면, 상술한 과제를 해결하기 위해서, 그 데이터나 명령어들에 하이퍼바이저(2)가 액세스하는 것을 방지할 수 있다.
상기 페이지 소유권 테이블(50)에 설정된 정책의 시행은, 각 처리회로(24, 25, 28)와 관련된 블라인드 도메인 관리 유닛(BDMU)(60)에 의해 실행된다. 도 3에 도시된 것처럼, 상기 BDMU(6)은, 상기 메모리 관리 유닛(MMU)(40)에서 행한 어떠한 체크들도 통과한 트랜잭션들에 관해 동작하는 트랜잭션 검증의 또 다른 스테이지로서 작동하여도 된다.
도 3에 도시된 것처럼, 상기 MMU(40)는, 각각 어드레스 변환의 2개의 스테이지를 제공하는 스테이지 1 MMU(S1MMU) 40-1과 스테이지 2 MMU(S2MMU) 40-2를 구비하여도 된다. 상기 MMU에 입력된 트랜잭션들은, 액세스되는 가상 어드레스(70)와, 그 트랜잭션이 판독 또는 기록의 트랜잭션인가를 특정하는 트랜잭션 타입 속성(72)과, 그 트랜잭션을 발행한 상기 애플리케이션(6)을 식별하는 ASID(73)와, 그 애플리케이션(6)을 실행중인 가상 머신(4)을 식별하는 VMID(74)를 포함한다. 상기 ASID와 VMID는, 그 트랜잭션이 실행되었던 콘택스트를 식별하는 콘택스트 식별자를 형성하기 위해 함께 고려되어도 된다.
상기 S1MMU 40-1은, 메모리(34)에 기억된 스테이지 1(S1) 페이지 테이블들(80)로부터 일부분의 엔트리들을 캐시하는 상기 S1MMU내의 로컬 캐시인 스테이지 1 변환 색인 버퍼(S1TLB)에 있는 상기 가상 어드레스(70)와 ASID(73)를 검색한다. 통상 도메인에 있어서, 상기 S1 페이지 테이블들(80)은 상기 애플리케이션(6)을 제어하는 가상 머신(4)에 의해 설정되고, 보안 도메인에 있어서, 상기 S1 페이지 테이블들(80)은 상기 보안 OS(10)에 의해 설정된다. 각 S1 페이지 테이블 엔트리는, 상기 대응한 ASID가 대응한 페이지에 대한 판독 또는 기록 허가를 갖는지를 특정하는 속성들과 함께 상기 가상 어드레스 공간의 대응한 페이지에 대한 VA-PA 매핑이나 VA-IPA 매핑을 특정한다. 상기 S1TLB가 상기 VA(70)와 ASID(73)에 대한 대응한 엔트리를 포함하지 않으면, 상기 S1 페이지 테이블들(80)로부터 필요한 엔트리를 인출(fetch)하기 위해 페이지 테이블 워크(walk)를 행한다. 그 필요한 엔트리가 상기 S1TLB에 있으면, 상기 S1MMU 40-1은, 상기 판독/기록 속성(72)에서 특정한 타입의 액세스가 상기 특정된 ASID(73)와 가상 어드레스(70)에 대해 허가되는지를 확인한다. 그 액세스가 허가되지 않으면, 상기 트랜잭션은 거부되어 스테이지 1 액세스 위반을 신호로 알릴 수도 있다. 한편, 그 허가가 충족되면, 상기 입력된 VA(70)에 대응한 변환된 PA 또는 IPA(75)가 출력된다.
예외 레벨들 S-EL0, S-EL1, EL2 또는 EL3에서 상기 입력 트랜잭션을 발행하였을 경우, 상기 S1MMU 40-1의 출력은 PA이고, 상기 스테이지 2 MMU 40-2는 우회될 수 있다.
그렇지만, EL0 또는 EL1에서 실행하는 애플리케이션(6)이나 가상 머신(4)에 의해 입력 트랜잭션을 발행하였을 경우, 상기 S2MMU 40-2는 또 다른 어드레스 변환과 액세스 허가 확인을 행한다. 상기 S2MMU 40-2는 메모리(34)에서 스테이지 2(S2) 페이지 테이블들(82)로부터 일부분의 엔트리들을 캐시하는 스테이지 2 TLB(S2TLB)를 구비한다. 상기 S2 페이지 테이블들(82)은, (상기 통상 도메인용) 하이퍼바이저(2) 또는 (상기 보안 도메인용) 상기 보안 OS(10)에 의해 설정된다. 상기 S2MMU 40-2는, 상기 S2TLB를 검색하여 상기 특정된 IPA(75)와 VMID(74)에 대한 엔트리가 있는가를 확인하여, 엔트리가 없을 경우 상기 S2 페이지 테이블들(82)로부터 필요한 엔트리를 인출하기 위해 페이지 테이블 워크를 행한다. 그 필요한 엔트리가 상기 S2TLB에 있을 때, 상기 S2MMU 40-2는, 상기 속성들(72)에 특정된 타입의 트랜잭션이 허가되는지를 확인하여, 허가될 경우, 상기 IPA(75)에 대응한 변환된 PA(76)를 출력한다. 그 트랜잭션이 허가되지 않을 경우, 스테이지 2 액세스 위반의 표시를 해놓고 그 트랜잭션을 거부한다.
따라서, 상기 MMU 40-1, 40-2의 각 스테이지는, 주어진 특권 레벨에서 소정의 프로세스로 설정한 액세스 허가를 액세스 요구가 충족하는지를 확인하기 위한 액세스 제어회로라고 생각될 수 있다(예를 들면, 상기 S1MMU 40-1은 상기 가상 머신(4)이나 상기 보안 OS(10)로 설정한 허가들을 시행하고, 상기 S2MMU 40-2는 상기 하이퍼바이저(2)로 설정한 허가들을 시행한다).
그리고, 물리 어드레스(76)는, 상기 물리 어드레스 공간의 대응한 페이지에 대한 상기 POT(50)에서의 소유자 BD에 의해 설정된 어떠한 액세스 제어도 시행하기 위해 상기 BDMU(60)에 건네진다. 상기 MMU(40)의 각 스테이지내의 상기 TLB들과 유사한 방식으로, 상기 BDMU(60)는, 메모리(34)로부터 상기 POT(50)와 BDDT(42)의 부분들을 캐시하기 위한 색인 버퍼들을 구비하여도 된다. 따라서, 물리 어드레스(76)가 수신될 때(EL2, EL3 또는 S-EL1으로부터 물리적으로 어드레싱된 트랜잭션으로부터, 또는 상기 MMU(40)에 의해 VA 또는 IPA로부터 변환되었는지의 여부), 상기 BDMU(60)는 상기 필요한 POT엔트리(52)와 BDDT 엔트리가 각각의 색인 버퍼에 있는지를 확인하여, 없을 경우, 메모리(34)로부터 그 필요한 엔트리들을 인출한다. 그 필요한 엔트리들이 이용 가능하면, 상기 물리 어드레스는 다음과 같은 일련의 확인(check)을 이용하여 검증된다:
· 상기 BDMU(60)는, 현재의 콘택스트 BD(상기 트랜잭션을 발생하였던 BD)가 상기 BDDT(42)에서의 유효 콘택스트인지를 확인한다. 예를 들면, 상기 BDMU(60)는, 상기 VMID(74)와 ASID(73)로부터 현재의 콘택스트 BD의 BDID를 형성하고, 상기 BDDT(42)에서의 "실행"상태와 같이 대응한 BDID가 표시되는지를 확인하여도 된다.
· 상기 BDMU(60)는, 현재의 콘택스트 BD가 물리 어드레스(76)에 대응한 POT 엔트리(52)에서의 소유자 BD(54)로서 도시되어 있는지를 확인한다.
· 현재의 콘택스트 BD가 그 소유자 BD가 아닐 경우, 상기 BDMU(60)는, (상술한 공유 속성을 사용하여) 상기 페이지에 액세스하기 위해 상기 소유자 BD가 그 현재의 콘택스트 BD를 허가하는지를 확인한다.
· 현재의 콘택스트 BD가 그 소유자 BD가 아닐 경우, 상기 BDMU(60)는, 상기 속성(72)에서 특정된 타입의 트랜잭션이 상기 소유자 BD에 의해 허가되는지를 판정하기 위해 상기 대응한 POT 엔트리의 판독/기록 속성을 확인한다.
· 현재의 콘택스트 BD가 그 소유자 BD일 경우, 상기 BDMU(60)는, 입력 트랜잭션에 제공된 VA(70) 또는 IPA(75)가, 상기 대응한 POT엔트리(52)의 상기 어드레스 필드(58)에서의 상기 VA/IPA와 일치하는지를 확인한다.
· 상기 BDMU(60)는, 그 현재의 액세스에 대한 상기 S1 페이지 테이블 엔트리에서 특정된 예상 공유 속성이 대응한 POT 엔트리에서 특정된 실제의 공유 속성과 일치하는지를 확인한다.
이 확인들 중 어느 하나가 실패할 경우, 그 액세스는 거부되고, 액세스 위반이 기동된다. 그렇지 않을 경우에는, 상기 물리적 어드레스 트랜잭션이 검증되어 상기 시스템 버스(30)상에 출력된다. 상술한 확인들은 임의의 순서로 행해질 수 있거나 적어도 부분적으로 병렬로 행해질 수 있다는 것을 알 것이다.
마찬가지로, 상기 BD 필터(62)는, 상기 물리 어드레스 공간의 특별한 페이지의 소유자가 상기 대응한 POT 엔트리(52)의 속성 필드(56)에서의 "IO" 타입으로서 그 페이지를 표시하였는지에 근거하여 상기 특별한 페이지를 대상으로 하는 트랜잭션이 상기 시스템 버스(30)상에 출력되는지를 제어하여도 된다.
따라서, 도 4에 도시된 것처럼, 상기 시스템 버스(30)에 연결된 각 버스 마스터(24, 25, 26, 28)에는, 물리적으로 어드레싱된 트랜잭션을 검증하기 위한 BDMU(60) 또는 BD 필터(62)가 구비되어도 되어, 그 시스템 버스상에 출력된 모든 트랜잭션들은 물리 어드레스들을 특정하는 검증된 트랜잭션들이므로 상기 메모리 제어기(32)에서 이후의 어떠한 검증도 필요하지 않다. 대안은, 상기 MMU(40)가 검증하였지만 상기 POT(50)에서 상기 페이지 소유자에 의해 설정된 어떠한 허가에 대해서도 아직 비교되지 않은 트랜잭션들이, 상기 버스상에 출력되고, 그 후, 상기 메모리 제어기(32)에 도달할 때 상기 POT(50)에 대해 확인되도록, 상기 BDMU 기능성(60)을 상기 메모리 제어기(32)에 이동하는 것이다. 그렇지만, 상기 BDMU(60)를 제공하는 것은, 상기 POT(50) 확인들을 실패하는 트랜잭션이 상기 버스상에서 출력되는 것을 방지함으로써, 또한 상기 버스 마스터로부터 각 트랜잭션과 관련된 현재의 콘택스트 BD를 식별하는 상기 메모리 제어기에 추가의 태그들이 송신될 필요를 없앰으로써, 버스 트래픽을 감소하기 때문에, 이롭다. 반대로, 상기 암호화/복호화 회로(56)는 메모리에 기록된 데이터가 암호화되어 하드웨어 공격들을 방지할 수 있도록 상기 메모리 제어기(32)에 설치되지만, 버스 마스터들(24, 25, 26, 28) 자신들이 어떠한 암호화 능력도 가질 필요가 없다.
도 5는 상기 처리회로들(24) 중 하나에서 발행한 데이터 액세스 트랜잭션(액세스 요구)이 허가되는지를 확인하는 방법을 도시한 것이다. 단계 100에서는, VA(70)를 특정하는 입력 트랜잭션을 수신한다. 단계 102에서는, 상기 S1MMU 40-1은 입력 VA(70)와 현재의 콘택스트(VMID, ASID)에 대응한 엔트리에 대한 상기 S1TLB를 검색한다. 상기 S1MMU 40-1은, 그 엔트리에서 설정된 상기 액세스 허가들의 위반이 있는지를 확인한다. S1 액세스 위반이 있을 경우, 단계 104에서는 상기 트랜잭션 요구를 거부한다. S1 액세스 위반이 없을 경우, 변환된 IPA 또는 PA가 출력된다. 또한, 상기 페이지에 대한 PISG상태(예상된 공유 속성)가, 보다 상세히 후술하는 것처럼, 상기 S1MMU 40-1에 의해 출력된다. 상기 트랜잭션이 EL2, EL3, S-EL0 또는 S-EL1에서 발행되었을 경우, 상기 변환된 어드레스는 PA이고, 상기 S2MMU 40-2는 우회된다. 상기 트랜잭션이 EL0 또는 EL1에서 발행되었을 경우, 상기 출력 어드레스는 IPA이고 어드레스 변환의 제2 스테이지가 행해진다. 이 경우에, 상기 S2MMU MMU 40-2도 마찬가지로, IPA(75)에 대응한 엔트리와 현재의 콘택스트(VMID)를 위한 상기 S2TLB를 검색한다. 그 엔트리에서의 액세스 허가들이 확인되고, 액세스 위반이 있을 경우, 단계 104에서는 상기 트랜잭션 요구를 다시 거부한다. 그 액세스가 상기 S2MMU 40-2에 의해 허가되는 경우, 상기 IPA는 상기 BDMU(60)에 출력된 PA(76)로 변환된다.
따라서, 상기 스테이지 1 또는 스테이지 2 어드레스 변환 중 어느 한쪽에서 액세스 위반이 없으면, 물리 어드레스가 얻어진다. 단계 112에서, 상기 물리 어드레스는, 상기 "실행"상태에 있는 것으로서 상기 BDDT(42)에 현재의 콘택스트의 BDID가 도시되어 있는지를 확인하는 상기 BDMU(60)에 제공된다. 도시되어 있지 않을 경우, 단계 114에서는 상기 트랜잭션 요구를 거부한다. 상기 실행 상태에 진행하기 위해서, 그 BDID는, 먼저, 후술하는 것처럼 상기 "스크럽(Scrub)" 상태와 "준비(Prepare)" 상태를 통해 진행될 필요가 있을 것이다. 상기 BDID를 검증하는 이 단계는, 아직 보안상 초기화되지 않은 BDID들에 대한 액세스들을 발행함으로써 상기 보안 초기화 프로세스가 회피되는 것을 방지한다. 또, 상기 BDDT(42)의 최근 보여진 일부의 엔트리들을 캐시하는 로컬 색인 버퍼는, BDDT 엔트리들의 확인의 속도를 높이기 위해 상기 BDMU(60)내에 유지되어도 된다.
상기 현재의 콘택스트의 BDID가 상기 "실행"상태에서와 같이 검증될 경우, 단계 116에서 상기 BDMU(60)는 필요한 물리 어드레스(76)에 대응한 상기 POT 엔트리(52)를 확인한다(상기 표기법 POT[PA]는 대응한 POT엔트리(52)라고 함). 또, 이것은, 보다 빠른 액세스를 위해 최근 접한 POT엔트리들의 일부분을 캐시하기 위해 상기 BDMU(60)내에 설치된 로컬 POT 색인 버퍼내에서 액세스되어도 된다. 상기 BDMU는, 상기 대응한 POT 엔트리(52)가 상기 타겟 페이지에 대한 소유자 BD로서 현재의 콘택스트의 BDID를 식별하는지를 확인한다. 그렇지 않을 경우, 단계 118에서 상기 BDMU는, 상기 대응한 POT 엔트리(52)에 대한 공유 속성이 현재의 콘택스트의 상기 특정한 BDID로 "전체(Global)" 또는 "공유(Shared)" 중 어느 한쪽으로서 표시되는지를 확인한다. 상기 BDMU(60)는, 상기 액세스 요구의 판독/기록 타입이 상기 대응한 POT 엔트리(52)의 속성 필드(56)에서의 소유자이외의 BD에 대해 규정된 허가된 타입들과 일치하는지도 확인하여도 된다. 이 확인들을 통과하면, 단계 120에서 상기 BDMU는 상기 트랜잭션을 검증하여 상기 시스템 버스(30)상에 출력한다. 한편, 상기 페이지가 상기 현재의 콘택스트의 BDID와 공유되지 않았으면(예를 들면, 상기 페이지가 전용이었거나 다른 BD와만 공유이었으면) 또는, 상기 액세스 요구가 기록을 특정하였지만 상기 페이지가 판독전용으로 표시되면, 상기 요구는 단계 114에서 거부된다.
한편, 단계 116에서 상기 현재의 콘택스트가 대응한 페이지에 대한 소유자 BD일 경우, 그 소유자 BD가 그 자신의 페이지에 액세스하도록 허가되므로 상기 공유 속성들(56)을 확인할 필요가 없다. 그렇지만, 단계 122에서, 상기 트랜잭션의 소스가 특권 레벨 EL0, EL1, 또는 S-EL0에 있을 경우, 상기 BDMU(60)는, 상기 트랜잭션의 상기 VA 또는 IPA가 대응한 POT 엔트리(52)의 어드레스 필드(58)에 기억된 VA 또는 IPA와 일치하는지를 확인한다. EL0 또는 S-EL0에서 발행된 트랜잭션들에 대해서, 상기 BDMU(60)는, 상기 트랜잭션의 VA가 상기 어드레스 필드(58)에서의 VA와 일치하는지를 확인하고, EL1에서 발행된 트랜잭션들에 대해서, 상기 BDMU(60)는 상기 트랜잭션의 상기 IPA가 어드레스 필드(58)에서의 상기 IPA와 일치하는지를 확인한다. 일치할 경우, 단계 120에서, 상기 트랜잭션이 검증되어 상기 버스(30)상에 출력된다. 상기 어드레스들이 일치하지 않는 경우, 단계 114에서 상기 요구가 거부된다.
왜 상기 POT(50)에 기록된 상기 VA 또는 IPA에 대해 상기 VA 또는 IPA의 이러한 최종 확인이 이용 가능한지 즉시 명백해지지 않을 수도 있다. 다음의 상황을 생각해본다:
하이퍼바이저(2)는, 예를 들면, 2개의 물리적으로 어드레싱된 페이지들 PA0, PA1을, 다음과 같이 상기 S2 페이지 테이블들(82)에서의 어드레스 매핑들로 특별한 가상 머신(4)에 할당하여도 된다:
IPA PA
IPA4 PA1
IPA9 PA0
그리고, 가상 머신(4)은, 이 페이지들의 양쪽의 소유권을 취하고 다음과 같이 공유 속성을 설정할 수 있다:
PA 공유?
PA0 전체(Global)
PA1 전용(Private)
그리고, 가상 머신(4)은, 예를 들면, 민감한 데이터를 그 밖의 프로세스들이 액세스하는 것을 방지하기 위해, 그 민감한 데이터를 (상기 VM(4)이 상기 POT(50)에서의 전용으로서 표시되어 있었다고 예상하는) IPA4에 기록하는 일부의 코드를 포함할 수 있다.
그렇지만, 상기 VM(4)이 그 민감한 데이터를 기록하기 위한 코드의 보안 부분을 시작하기 전에, 상기 하이퍼바이저(2)는 다음과 같이 상기 S2 페이지 테이블들(82)을 수정할 수 있다:
IPA PA
IPA4 PA0
IPA9 PA8
이제 상기 VM(4)이 중간의 물리 어드레스 IPA4를 사용하여 상기 코드의 보안 부분을 실행하는 경우, 이제 이것은 "전체"페이지로서 상기 POT(50)에 표시된 상이한 물리 어드레스 PA0에 매핑될 것이다. 상기 VM(4)이 그 민감한 데이터를 상기 "전체" 페이지에 기록하여, 이 정보를 상기 하이퍼바이저(2) 자체를 포함하는 임의의 다른 프로세스에 노출시킬 것이다.
이러한 문제를, 소유된 페이지에 대한 어드레스 매핑을 "잠그기" 위해 상기 POT(50)에서의 정보(58)를 특정한 매핑에 제공함으로써 피할 수 있어서, 상기 소유권 속성 정보가 상기 POT(50)에 설정된 후, 다른 프로세스가 상기 페이지 테이블들(80, 82)에서의 상기 어드레스 매핑들을 변경하는 경우 액세스 위반이 기동될 수 있다. 예를 들면, 소유자 BD가 일 페이지를 청구할 때, 그 페이지를 청구할 때 매핑하는 현재의 VA-PA 또는 IPA-PA는, 그 물리적으로 어드레싱된 페이지에 대응한 상기 POT 엔트리(52)의 어드레스 필드(58)를 사용하여 기록되어도 된다. 상기 예에서, 상기 POT(50)는 다음과 같을 수도 있다:
PA 공유? IPA
PA0 전체 IPA9
PA1 전용 IPA4
나중에, 상기 VM(4)이 중간 어드레스 IPA4를 사용하여 상기 전용 페이지에 액세스하려고 시도할 때, 한편, 상기 하이퍼바이저(2)가 IPA4를 PA0에 대한 포인트에 재매핑하였을 경우, 이것은, 그 액세스의 상기 중간 어드레스, IPA4가 이제 물리 페이지 PA0에 대한 상기 POT 엔트리(52)에서의 중간 어드레스 IPA9와 일치할 것이기 때문에 검출될 것이다. 이 때문에, 에러의 표시를 해둘 수 있고, 상기 VM(4)이 민감한 정보를 그 밖의 프로세스들에 노출시키는 것을 피하기 위해 그것의 보안 처리를 정지시킬 수 있다. 이것은 상술한 타입의 공격들을 피한다. 그리고, 상기 VM(4)은, 이제 이들 IPA들에 매핑되는 물리 페이지들 PA0, PA8에 대한 상기 필요한 액세스 제어 허가들을 설정하기 위해 IPA4와 IPA9의 소유권을 다시 요구할 수 있다.
따라서, 상기 POT(50)에서 매핑하는 역 어드레스 변환을 포함하는 것은, 상기 페이지 테이블에서의 변화에 의해 생긴 상술한 타입의 공격들을 피하는데 도움이 될 수 있다. 상기 예에서는 가상 머신(4)이 소유한 페이지에 대한 페이지 테이블 매핑들을 수정하는 하이퍼바이저를 설명하였지만, 유사한 기술을 사용하여 애플리케이션 6 또는 신뢰된 애플리케이션 12가 소유한 페이지에 대한 상기 페이지 테이블 매핑들을 가상 머신(4)이 수정하는 것을 방지할 수 있고, 이 경우에 VA는 상기 IPA라기 보다는 어드레스 필드(58)가 기억될 것이다.
비록 도 5에 도시되지 않았지만, 상기 트랜잭션의 검증 방법은, 상기 타겟 PA에 대응한 상기 POT 엔트리(52)의 "공유" 속성이 그 대응한 VA에 대한 S1 페이지 테이블 엔트리에 특정된 예상된 속성에 일치하는지를 검증하는 추가의 단계도 포함할 수도 있다. 페이지 소유자가 (상기 페이지가 상술한 것처럼 전용, IO, 공유 또는 전체인지를 나타내는) 주어진 페이지에 대한 상기 공유 속성을 설정할 때, 이것은, 대응한 페이지 테이블 엔트리가 대응한 속성을 특정하도록 상기 S1 페이지 테이블들의 갱신도 기동할 수도 있다. 일부의 경우에, 상기 페이지 테이블 엔트리는 상기 S1 TLB에만 초기에 갱신될 수 있고, 그 후 메모리에서 S1 페이지 테이블들(80)은 상기 S1 TLB로부터 상기 대응한 페이지 테이블 엔트리를 퇴거시킬 때 나중에 갱신될 수 있다. 나중에, 액세스 요구가 상기 페이지에 발행될 때, 상기 S1 MMU(80)는 상기 대응한 S1 페이지 테이블 엔트리에 특정된 상기 예상된 공유 속성(PISG 타입)을 출력하여도 되고, 상기 BDMU(60)는 상기 예상된 공유 속성이 상기 PA에 대응한 상기 POT 엔트리(52)에 특정된 상기 공유 속성과 일치하는지를 확인하여도 된다. 일치할 경우, 상기 액세스 요구는, (상술한 그 밖의 확인들에 따라) 검증될 수 있다. 그렇지만, 실제의 공유 속성이 상기 S1 페이지 테이블 엔트리에 특정된 상기 예상된 공유 속성과 일치하지 않을 경우, 상기 액세스 요구가 거부된다. 이것은 다음과 같이 잠재적 공격들에 대해 보호한다.
예를 들면, 주어진 BD는, 주어진 물리 페이지의 소유권을 청구하여 민감한 정보를 그 페이지에 기록하기 위한 준비시에 전용으로서 표시하여도 된다. 그렇지만, 상기 BD가 상기 민감한 정보의 기록을 시작하기 전에, 다른 BD는, 동일한 페이지의 소유권을 청구할 수 있고 그 페이지를 전체로서 표시할 수 있다. 그리고, 이전의 소유자 BD가 상기 민감한 정보를 상기 페이지에 기록하려고 시도할 때, 상기 페이지가 현재의 소유자에 의해 전체로서 표시되므로, 상기 요구는 검증될 수 있어서, 이에 따라 잠재적으로 그 민감한 정보가 그 밖의 프로세스들에 노출될 수 있다. 이것을, 그 페이지에 대해 예상된 페이지 공유 타입을 나타내는 대응한 페이지 테이블 엔트리에 정보를 기록하고, 이것이 그 페이지에 액세스할 때 상기 POT에 기록된 실제의 공유 타입에 일치하는지를 확인함으로써, 피할 수 있다.
상기 예들에서, 상기 예상된 공유 속성(PISG타입)은 상기 S1 페이지 테이블들에 특정되지만, 그 밖의 예들은, 이것을 상기 S2 페이지 테이블들에 특정할 수 있었다. 또한, 어느 프로세스가 상기 공유 속성을 설정하느냐에 따라, 일부의 경우에, 일부의 페이지들은 상기 S1 페이지 테이블들에 특정된 상기 예상된 공유 속성들을 가져도 되고, 그 밖의 페이지들은 상기 S2 페이지 테이블들에 특정된 상기 공유 속성들을 갖는다.
요약하면, 상기 BDMU(60)는 상기 MMU(40)의 상부에 관해 확인하는 액세스 허가의 추가의 층을 제공하여, 트랜잭션들의 검증은 상기 MMU(40)와 BDMU(60) 양쪽에서 건네지는 확인들을 필요로 한다. 반면에, 상기 MMU(40)는 특정한 특권 레벨들(예를 들면, EL1이 상기 S1 페이지 테이블들을 제어하고, EL2는 상기 S2 페이지 테이블들을 제어한다)에서 프로세스들에 의해 설정된 허가들을 확인하고, 상기 BDMU(60)는 임의의 특권 레벨에서 실행하는 소유자 프로세스들에 의해 특별한 페이지들에 적용될 수 있는 허가들을 시행한다. 따라서, 상기 하이퍼바이저(2)가 예를 들면 상기 어드레스 공간의 특별한 영역들을 특별한 가상 머신(4)에도 할당하여 상기 S2MMU 40-2와 S2 페이지 테이블들을 사용하여 그 밖의 VM들(4)이 그 영역들에 액세스하는 것을 방지할 수 있고, 상기 가상 머신(4) 자체는 상기 BDMU(60)를 제어하여 일부의 페이지들을 위한 상기 하이퍼바이저(2)로부터의 어떠한 요구들도 거부하기 위해 적절한 허가들을 상기 POT(50)에 설정함으로써 상기 하이퍼바이저(2)가 페이지들의 그 할당된 "풀(pool)"내의 일부의 페이지들에 액세스하는 것을 방지할 수 있다. 이것은, 각 "블라인드 도메인"이 본 시스템내의 어떠한 다른 도메인으로부터의 데이터도 숨길 수 있도록 그 보안을 시행할 수 있는 상기 시스템을 가능하게 한다.
도 6은 기록 액세스를 갖는 상기 물리 어드레스 공간의 임의의 페이지의 소유권을 BD가 요구하는 방법의 일례를 도시한 것이다. 페이지의 소유권을 요구할 때, 동일한 물리 페이지의 이전 소유자가 보안 데이터를 그 페이지에 이전에 기록하였을 수도 있는 것이 가능하다. 상이한 BD간에 페이지의 소유권이 전송할 때 데이터의 누설을 방지하기 위해서, 그 페이지의 유효 소유자가 되기 전에 상기 요구된 페이지의 각 위치에 상기 데이터를 겹쳐쓰기 위한 겹쳐쓰기 프로세스(150)를 완료하기 위해 새로운 소유자를 필요로 할 수도 있다. 각 위치에 기록된 특별한 데이터 값은, 상기 이전의 데이터가 겹쳐써지는 한은 - 예를 들면, 각 위치가 0 또는 임의의 다른 더미 값으로 기록될 수 있는 한은 문제가 안된다. 그 새로운 소유자가 유효하게 소유권을 청구할 수 있기 전에 일 페이지내에 임의의 기존의 데이터를 겹쳐쓰기 위해 파괴적 클레임 시퀀스를 행하기를 요구함으로써, 데이터의 보안은, 이전에 주어진 페이지를 소유한 특별한 BD가 한번도 더 이상 존재하지 않으면 시행될 수 있다(예를 들면, 하이퍼바이저(2)는 주어진 VM(4)의 실행을 종료하였을 수도 있다). 일부의 예들에서, 일부의 전용 하드웨어는, 페이지 소유권이 요구될 때 상기 겹쳐쓰기 시퀀스를 행하기 위해 상기 처리회로들(24, 25, 28)내에 설치될 수 있었다. 그렇지만, 아래에 주어진 예에 있어서, 상기 새로운 소유자 BD와 관련된 소프트웨어는, 청구중인 상기 페이지의 각 위치에의 일련의 기록을 기동하여서 상기 겹쳐쓰기를 행하지만, 그 소프트웨어를 실행하는 상기 처리회로(24, 25, 28)에서의 일부의 제어용 하드웨어는 그 새로운 소유자 BD가 그 겹쳐쓰기 프로세스를 성공적으로 완료하였는지를 확인하고, 이것이 확인될 때까지 상기 POT(50)에 유효로서 그 페이지가 표시되는 것을 방지한다.
그 소유권 요구는, 예를 들면, 청구되는 상기 페이지에 대응한 어드레스를 특정하는 소유권 클레임 명령어를 실행하는 장래의 소유자 BD에 대응하여도 된다. 단계 130에서는, 소유권을 요구하는 상기 페이지를 식별하기 위해 VA를 특정하는 소유권 요구를 수신한다. 단계 132에서는, 상기 MMU(40)는, 상기 특정된 페이지에 대한 기록 액세스를 허가하는지를 판정하고, 그 MMU(40)의 스테이지 1이나 스테이지 2가 기록 액세스가 허가되지 않는다고 판정한 경우, 단계 134에서는 상기 요구를 거부한다. 따라서, BD는, 자체가 데이터를 기록하면 안되는 페이지의 소유권을 청구하는 것으로부터 방지된다. 기록 액세스가 허가되는 경우, 상기 VA는 (직접 또는 IPA를 거쳐) PA로 변환되고, 그 PA는 출력된다.
그리고, 그 방법은, 타겟 PA에 대응한 페이지의 각 위치에 상기 데이터를 겹쳐쓰기 위한 겹쳐쓰기 과정(150)으로 진행된다. 상기 클레임 카운터(60)는, 상기 제어용 하드웨어에 의해 상기 겹쳐쓰기 프로세스의 진행을 추적하고 지금까지 겹쳐써진 상기 페이지의 라인들의 수를 카운트하는데 사용된다. 단계 152에서는, 상기 페이지의 제1 어드레스, 예를 들면 상기 페이지의 기본 어드레스로부터 제로의 오프셋을 갖는 상기 어드레스를 가리키도록 상기 겹쳐쓰기 카운터(60)를 초기화한다. 단계 154에서, 상기 제어용 하드웨어는, 요구자(requester) BD(소유권을 요구한 상기 BD)가 기록을 기동하기를 기다린다. 기록이 행해질 때, 단계 156에서, 상기 제어용 하드웨어는, 상기 요구자 BD가 상기 페이지의 각 라인을 통해 고정된 순서로 반복하는 것을 필요로 할 수 있어서, 다음 어드레스가 기록되어 있는지(예를 들면, 기록 오프셋이 증분 카운터와 일치하는지)를 단순히 확인하여도 된다. 그 어드레스가 정확하지 않을 경우, 단계 158에서는, 상기 소유권 요구를 거부하고, 상기 페이지를 상기 POT에 무효로서 표시하여, 예를 들면, 그 페이지가 아닌 그 밖의 어드레스들에 기록하거나, 반복적으로 동일한 어드레스에 기록함으로써 요구중 BD가 상기 겹쳐쓰기 과정을 회피하는 것을 방지한다. 상기 소유권 요구를 거부할 때, 상기 요구자 BD가 소유권을 다시 요구하고 싶은 경우, 그들은 새로운 소유권 요구로 다시 시작하고 상기 겹쳐쓰기 과정(150)을 정확히 완료해야 할 것이다.
상기 타겟 어드레스가 단계 156에서 정확하지 않았을 경우, 단계 159에서, 상기 제어용 하드웨어가 상기 겹쳐쓰기 카운터를 증분시킨다. 단계 160에서, 상기 제어용 하드웨어는, 상기 소유권 클레임 프로세스의 끝에 도달하였다는 것을 상기 요구중 BD가 선언하였는지를 확인한다. 예를 들면, 상기 요구중 BD는, 상기 겹쳐쓰기 과정(50)을 마무리한 것의 표시를 해두기 위해서, 소유권 클레임 종료 명령어를 실행하여도 된다. 상기 소유권 클레임 종료에 도달하지 않았을 경우, 그 방법은 단계 154에 역으로 되돌아가 겹쳐써지는 상기 페이지의 다음 라인을 확인한다. 이 프로세스는, 상기 페이지의 라인마다 단계 154 내지 160을 다수회 순환한다. 결국, 상기 요구중 프로세스는 그 겹쳐쓰기 과정(50)의 종료에 도달하였다는 것을 선언하고, 단계 162에서, 상기 제어용 하드웨어는, 전체 페이지가 기록되었는지(예를 들면, 상기 겹쳐쓰기 카운터가 상기 페이지에서 라인의 수와 일치하는지)를 확인한다. 전체 페이지가 기록되지 않았을 경우, 단계 158에서 상기 소유권 요구를 다시 거부하고 상기 페이지를 상기 POT(50)에 무효로서 표시한다. 그 전체 페이지가 기록되었을 경우, 단계 164에서는, 상기 요구자 BD가 그 페이지의 유효 소유자가 되어서 그 페이지에의 액세스를 배타적으로 제어할 수 있도록, 상기 페이지를 유효로서 표시한다. 또한, 그 페이지에 대한 상기 PISG타입(공유 속성)은, 상기 대응한 POT 엔트리(52)에 기록된다. 일부의 경우에, 새롭게 청구된 페이지들은, 디폴트에 의해 전용으로서 초기에 표시되어도 되고, 이때 이후의 속성의 변경은, 새로운 소유자가 그 페이지를 IO, 공유 또는 전체로 변경하고 싶은 경우 (예를 들면, 아래의 도 8 또는 도 14에 도시된 것처럼) 필요해진다. 이와는 달리, 그 페이지에 대해 상기 공유 속성의 무슨 값을 특정해야 할지를 초기의 소유권 요구에서 특정하는 것이 가능할 수도 있다. 그 공유 속성을 갱신하는 것은, 메모리에의 나중의 액세스들의 상기 POT 공유 속성에 대해 검증될 수 있도록 상기 예상된 공유 타입을 인코딩하기 위해서, 상기 S1 TLB 및/또는 S1 페이지 테이블들(80)에서의 대응한 페이지 테이블 엔트리에 대한 갱신도 기동할 수도 있다.
단계 166에서, 상기 요구자 BD가 EL0 또는 S-EL0에서의 프로세스일 경우, 상기 소유권 요구에서 특정된 상기 VA는 상기 청구된 페이지에 대한 상기 POT 엔트리(52)의 어드레스 필드(58)에 기록되는 한편, 상기 요구자 BD가 EL1에서의 프로세스일 경우, 상기 MMU에서 얻은 IPA는, 상술한 타입의 공격들을 막기 위해서 상기 POT에의 상기 역 PA-VA 또는 PA-IPA 매핑을 잠그기 위해서, 상기 어드레스 필드(58)에 기록된다. 그 밖의 실시예에서는 단계166을 보다 일찍, 예를 들면, 상기 소유권 요구가 접수되자마자 행해질 수 있다는 것을 알 것이다. 마찬가지로, 상기 요구자 프로세스의 상기 BDID도, 상기 POT 엔트리(52)가 단계 164까지 유효해지지 않는 한, 도 6에 도시된 방법동안에 언제라도 상기 POT(50)에 기록될 수 있다.
상기 요구자 BD가 상기 소유권 요구와 상기 겹쳐쓰기 과정(150)을 실행하는 일부의 의사코드의 일례가 아래에 보여져 있다:
Figure pct00001
도 7은 상기 의사코드를 설명하는 흐름도다. 예를 들면, 애플리케이션이 가상 어드레스 "VA1"에 대응한 페이지의 소유권을 청구하기를 바란다. 소유권을 요구하기 전에, 상기 요구자 BD는 상기 BDMU들(60)내의 임의의 색인 버퍼들로부터 어드레스 VA1과 관련된 임의의 POT 엔트리들을 무효화하기 위해 무효화 명령어(BD.Page.Invalidate)를 실행한다. 이것은, 상기 소유권 청구 후, 오래된 데이터가 상기 색인 버퍼들에 상주하지 않도록 보장한다. 따라서, 도 7의 단계 190에서, 상기 페이지가 초기에 무효 상태에 있다. 그후, 상기 요구자 BD는, 소유권 요구를 발행하기 위해 페이지 클레임 시작 명령어(BD.Page.Claim.Start)를 실행한다. 이것에 의해, (상기 MMU(40)를 사용하여 VA1을 변환시켜서 얻어진 어드레스를 갖는) 물리적으로 어드레싱된 페이지 PA1은 "청구중(Claiming)" 상태로 천이한다. 상기 요구자(호출자) BD의 BDID는, 페이지 PA1에 대해 상기 POT엔트리(52)의 BDID필드(54)에 기록된다. PA1에 현재 매핑하는 가상 어드레스 VA1은, 상기 어드레스 필드(58)에 기록된다. 상기 클레임 카운터는, 제로로 초기화된다.
그 후, 상기 요구중 프로세스는, 제1 겹쳐쓰기 동작을 시작하기 위해 데이터 제로잉(zeroing) 명령어(DCZ.WT)를 실행한다. 본 예에서는, 상기 데이터 제로인 명령어가 한번에 상기 페이지의 64바이트를 제로로 만들지만, 그 밖의 예에는 그 밖의 사이즈들을 갖는 데이터의 블록들에 작용할 수 있다는 것을 알 것이다. 단계196에서, 상기 제어용 하드웨어는, 그 명령어의 상기 기록 오프셋이 상기 클레임 카운트와 일치하는지를 확인한다. 일치하지 않을 경우, 단계 190에서 상기 요구가 거부되고 상기 페이지는 "무효"상태로 역으로 천이하여서, 상기 요구자 BD는 청구중 소유권에서 다른 시도를 하기를 원하는 경우 다른 BD.Page.Claim.Start 명령어를 실행해야 할 것이다. 한편, 상기 기록 오프셋이 상기 클레임 카운트와 일치하는 경우, 단계 198에서는 상기 클레임 카운터(60)를 증분시키고, 단계 194에서는 상기 요구자 BD가 다른 데이터 제로잉 명령어 DCZ.WT를 실행한다. 단계 196, 198, 194는, 상기 요구자 BD가 모든 겹쳐쓰기 동작을 마무리한 것의 신호를 보내기 위해 상기 페이지 클레임 종료 명령어(BD.Page.Claim.End)를 실행할 때까지 순환한다. 단계198에서, 상기 제어용 하드웨어는, 상기 클레임 카운터가 상기 페이지에서의 어드레스들의 수와 일치하는 것을 확인한다. 상기 클레임 카운터의 비트들의 수가 상기 페이지 사이즈에 대응하게 선택되는 경우, 상기 클레임 카운터는 대응한 페이지에서의 모든 위치들이 기록되어 있을 때 오버플로우하여서, 상기 제어용 하드웨어는, 1일 경우 상기 겹쳐쓰기 과정이 완료되었다는 것을 나타내는 상기 클레임 카운터의 오버플로우 비트만을 확인할 수 있다. 상기 클레임 카운터가 단계 198에서 오버플로우되지 않은 경우, 상기 페이지는 단계 190에서 역으로 무효 상태로 다시 천이하고 상기 요구자 BD는 다시 소유권을 청구하기 위해 시작해야 할 것이다. 상기 클레임 카운터가 단계 198에서 오버플로우되었을 경우, 단계 200에서 상기 페이지 PA1은 유효해지고, 이제 그 소유자는 이 페이지에 대한 속성들을 설정할 수 있다.
유사한 파괴적 겹쳐쓰기 과정(150)은, 새로운 프로세스에서 사용하기 위한 특별한 BDID를 재활용할 때만 행해질 수 있다. 예를 들면, 주어진 BDID를 상기 "무효" 상태로부터 "준비"상태로 천이하기 위해서는, 먼저, 상기 BDID를 상기 "스크럽" 상태로 천이한다. 상기 "스크럽" 상태에 있는 동안, 상기 하드웨어는, 상기 주어진 BDID가 상기 POT(50)에서 현재 상기 소유자로서 보여진 각 페이지내에 각 어드레스를 겹쳐쓰도록 상기 겹쳐쓰기 과정(150)이 행해지는 것을 확인하여도 된다. 상기 하드웨어는, 그 BDID와 관련된 각 POT 엔트리(52)가 무효화되는 것도 필요로 할 수도 있다. 실제의 겹쳐쓰기 동작들은 상기 하이퍼바이저(2)에 의해 또는, 새로운 BD가 확립되는 것을 요구하는 다른 프로세스에 의해, 소프트웨어로 행해져도 되지만, 상기 하드웨어는 상기 겹쳐쓰기 과정이 성공적으로 완료된 것을 확인하고, 성공적으로 완료되었을 때까지 상기 BDID가 "준비"상태로 천이하는 것을 방지하여도 된다. 이것은, 그 BDID를 갖는 오래된 프로세스와 관련된 민감한 정보가, 동일한 BDID를 공유하는 새로운 프로세스에 누설되는 것을 방지한다.
그 밖의 실시예들은 상기 "스크럽"상태를 생략할 수 있지만, 상기 "무효"상태로부터 상기 "준비"상태로의 천이는, 상기 대응한 BDID가 소유하고 있기 때문에 상기 POT(50)에 기록된 각 페이지에 상기 데이터를 겹쳐쓰고 그 BDID와 관련된 각 POT 엔트리(52)를 무효화시키도록 상기 겹쳐쓰기 프로세스를 성공적으로 완료할 때까지 금지될 수 있다.
도 8은 주어진 페이지의 소유자 BD가 상기 POT(50)에서의 속성들을 갱신하는 방법을 도시한 것이다. 단계 210에서는, 상기 타겟 페이지와 그 페이지에 대한 POT 엔트리(52)에 기록될 하나 이상의 속성들을 식별하는 VA를 특정하는 POT갱신 요구를 발행한다. 단계 212에서, 상기 MMU 40은 그 페이지에의 기록 액세스가 허가되는지를 확인하고, 상기 S1 MMU 40-1 또는 S2 MMU 40-2 중 어느 한쪽이 액세스 위반의 신호를 보내는 경우, 상기 요구가 거부된다. 기록 액세스가 허가될 경우, 변환된 PA는 (상기 VA로부터 직접 또는 IPA를 거쳐) 얻어진다.
단계 222에서는, 상기 갱신 요구를 발행한 현재의 콘택스트 BD가 상기 필요한 페이지에 대한 소유자 BD인지를 판정하기 위해 상기 물리 어드레스를 사용하여 상기 POT(50)를 검색한다. 소유자 BD가 아닐 경우, 단계 224에서는 상기 요구를 거부한다.
현재의 콘택스트 BDID가 상기 필요한 페이지에 대한 상기 소유자일 경우, 단계 226에서는, 상기 어드레스 매핑이 상기 POT 엔트리(52)가 할당되었을 때와도 같은지를 확인하기 위해서, (EL0, EL1 또는 S-EL0로부터 발신하는 요구들을 위해) 상기 갱신 요구의 상기 VA/IPA에 대해 어드레스 필드(58)를 확인한다. 같지 않을 경우, 단계 228에서는 상기 갱신 요구를 거부한다. 상기 어드레스들이 일치하는 경우, 단계 230에서는, 상기 갱신 요구에 특정된 속성들에 근거하여 대응한 페이지 소유권 테이블 엔트리의 속성들을 갱신한다. 예를 들면, 상기 페이지의 소유자는, 이제 전용 페이지를 공유로 만들거나 공유 페이지를 전용으로 만들도록 상기 속성들을 변경할 수 있거나, 그 페이지에 대해 판독 또는 기록이 허가되는지를 변경할 수 있다. 공유 속성으로 변경이 있을 경우, 이것은 상기 S1 TLB나 페이지 테이블들(80)에서의 상기 S1 페이지 테이블 엔트리에 기록된 상기 예상된 공유 속성(PISG 상태)으로 대응한 갱신도 기동할 수도 있다.
단계 226은 선택사항이고, 다른 실시예는 단계 222로부터 직접 단계 230으로 진행되는데, 그 이유는 어드레스 매핑의 변경이 어떠한 경우에도 메모리 액세스가 상기 도 5에 도시된 것처럼 나중에 발행될 때 검출될 수 있기 때문이다. 그럼에도 불구하고, 상기 POT 속성들을 갱신할 때 어드레스 매핑의 변경의 표시를 해두면, 이것은, 문제가 될 가능성이 있는 소유자 BD에 대해 보다 일찍 표시를 해둘 수 있다.
도 9에 도시된 것처럼, 상기 BDMU(60)는, 상기 POT(50)의 최근에 액세스된 엔트리들을 캐시하기 위한 페이지 소유권 테이블 색인 버퍼(POTLB)(302)와, 상기 BDDT(42)의 최근에 액세스된 엔트리들을 캐시하기 위한 BDDT 색인 버퍼(BDDTLB)를 가질 수도 있다. 이것들은, 상기 MMU(40)내의 상기 TLB들(300)과 유사한 방식으로 동작한다. 도 9의 하부에 도시된 것처럼, 상기 시스템 버스(30)와 처리 유닛들(24, 25, 28)은 상기 POTLB(302) 또는 BDDTLB(304)의 엔트리들을 무효화시키는 무효화 명령어들을 지원할 수도 있다. 처리 유닛(24, 25, 28)이 이 명령어들 중 하나를 실행할 때, 각 BDMU(60)를 기동하여 상기 TLB(302, 304)로부터의 엔트리들을 무효화시키기 위해, 상기 버스(30)상에서 상기 시스템내의 각 BDMU(60)에 코맨드가 방송된다. 명령어들(310, 312)은, 상기 POTLB(302)의 엔트리들을 무효화시키기 위한 명령어다. 이 명령어들은, 예를 들면, 하나의 페이지의 소유권을 청구하거나 상기 POT(50)에서의 속성들을 갱신하기 전에만 사용될 수 있다. 명령어 310은 BDMU(60)를 기동하여 상기 POTLB(302)로부터의 모든 엔트리들을 무화시킨다. 명령어 312는, BDMU(60)를 기동하여 특정된 페이지 어드레스에 대응하는 상기 POTLB(302)의 엔트리들만을 무효화시킨다(그 명령어가 VA 또는 IPA를 특정하는 경우, 그 명령어는 상기 MMU에 의해 PA로 변환되고, 물리적으로 어드레싱된 무효화 트랜잭션은 상기 대응한 POT 엔트리들을 무효화시키기 위해 상기 BDMU들(60)에 방송된다). 마찬가지로, 명령어 314, 316도 상기 BDDTLB(304)의 엔트리들을 무효화시키기 위한 명령어이고, 이때 상기 명령어 314는 상기 BDDTLB들(304)의 모든 엔트리들의 무효화를 기동하고 명령어 316은 특정된 BDID와 관련된 엔트리들만을 무효화시킨다. 무효화 후, 특별한 BDID나 페이지를 필요로 하는 이후의 액세스 요구에 접할 때, 대응한 엔트리들은 메모리(34)에서의 메인 BDDT(42) 또는 POT(50)로부터 인출될 필요가 있을 것이다.
일부의 경우에, 유사한 무효화 코맨드들은, 주어진 BD에 의해 실행된 그 밖의 명령어들의 결과로서 자동으로 생성될 수 있다. 예를 들면, 프로세스가 상기 POT(50)의 엔트리를 무효화시키기 위해 무효화 명령어를 실행할 때, 이에 따라, 상기 BDMU들(60)에서의 엔트리들의 대응한 무효화를 기동하기 위해 상기 처리 회로(24, 25), BDMU(60) 또는 메모리 제어기(32)내의 하드웨어에 의해 방송 무효화 코맨드를 자동으로 생성하게 될 수 있다. 마찬가지로, POT 엔트리에 대한 갱신, 또는 BD의 상태에서 라이프사이클 갱신 또는 변경에 의해서도, 상기 BDMU들(60)에서의 POT 또는 BDDT 엔트리들이 무효화될 수 있다.
이상, 일부의 특정한 예들을 설명하였다. 그렇지만, 상기 기술은 이들의 구체적인 예들에 한정되지 않는다. 예를 들면, 상기 예들은 페이지 단위로 메모리의 블록들의 소유권을 관리하지만, 상기 POT(50)는 (다수의 페이지일 수 있거나, 상기 MMU(40)에서 사용한 동일한 크기 페이지에 반드시 대응할 필요가 없는 어드레스들의 보다 많은 임의의 블록들에 대응할 수 있는) 일부의 다른 사이즈의 물리 어드레스들의 블록들에 대응한 엔트리들을 가질 수 있다.
상기 예들이 하나의 페이지 소유권 테이블(50)을 포함하는 시스템을 나타내지만, 일부의 경우에는, 동일한 시스템에서 POT(50)가 다수일 수 있다. 예를 들면, 물리 메모리에서 해체되는 상이한 DRAM들을 제어하기 위해 다수의 메모리 제어기가 있을 경우, 메모리 제어기/DRAM마다 별도의 POT(50)를 제공하는데 유용할 수 있다.
또한, 상기 예들은 상기 소유자 프로세스에서 발행하고 있는 상기 POT를 제어 및 갱신하기 위한 코맨드들을 나타내는 한편, 다른 예에서 이 코맨드들은 상기 소유자 프로세스에서 신뢰한 다른 프로세스에서 나올 수 있다. 예를 들면, 일부의 시스템에서, 상기 POT(50)는, 상기 소유자 도메인들을 대신하여 상기 보안 제어기(28)상에서 동작하는 프로세스에 의해 관리될 수 있다. 따라서, 상기 소유자 프로세스가 요구되는 페이지의 소유권이나, 상기 POT(50)에 대한 갱신을 필요로 할 때, 그 소유자 프로세스는 상기 신뢰된 프로세스를 기동하여 소유권 요구나 갱신 요구를 발행하는 상기 신뢰된 프로세스(예를 들면, 상기 보안 제어기(28)상에서 동작하는 프로세스)에 코맨드를 보낼 수 있다. 마찬가지로, 상술한 상기 겹쳐쓰기(파괴적 청구) 프로세스도, 반드시 상기 소유자 프로세스가 아닌 신뢰된 프로세스에 의해 행해질 수 있다.
또한, 상기 예들에서는 명령어를 실행하여 소유권 요구나 POT 갱신 요구를 기동하였지만, 그 밖의 예에서는 소유권 또는 테이블 갱신을 위한 요구는 그 밖의 형태의 코맨드들에 의해 기동될 수 있다. 예를 들면, 그 코맨드들은, 명령어들, 상기 POT를 제어하는 하드웨어용 제어기에 대한 직접 I/0 연산, 또는 (신뢰된) 함수 호출일 수 있다. 마찬가지로, 상기 소유권 클레임 시작 및 종료 코맨드들도, 반드시 명령어들일 필요가 없고, 그 밖의 형태의 코맨드일 수 있다.
도 10은 게스트 실행 환경(GEE)의 보안 초기화를 개략적으로 도시한 것이다. 상기 게스트 실행 환경은, 다수의 상이한 형태, 예를 들면, 스탠드 얼론 애플리케이션, 하나 이상의 애플리케이션 프로그램들의 실행을 지원하는 운영체계, 또는 심지어 또 다른 가상화 시스템도 취할 수 있다. 상기 보안 초기화는, 그 게스트 실행 환경에 대한 실행 가능 코드의 소스로부터 게스트 실행 환경을 개시하기 위한 요구를 보내는 것에 의해 시작된다. 개시하기 위한 요구는, 하이퍼바이저에 보내진다. 그 요구는, 예를 들면, 상기 하이퍼바이저에 의해 제어된 가상화 컴퓨터 시스템(클라우드 기반 컴퓨팅 시스템)으로 유저가 일부의 원하는 처리를 개시하고 싶은 결과이어도 된다. 상기 게스트 실행 환경을 개시하기 위한 요구는, 적어도 상기 게스트 실행 환경의 상기 실행의 제1 부분을 위한 암호화 버전의 실행 가능 코드에 의해 동시에(또는, 잠재적으로 나중에) 수반된다. 이 암호화된 실행 가능 코드는, 다양한 상이한 방식으로 의도된 수신자에 전송시에 그것의 보안을 보호하는데 도움이 되도록 암호화되어도 된다. 본 예에서, 상기 암호화된 실행 가능 코드는, 공개/전용 키 쌍의 공개 키로 암호화된다. 전용 키 쌍은, (후술한) 보안 제어기에 의해 보유되고, 보안 제어기에 대해 비밀이다.
하이퍼바이저는, 하이퍼바이저의 액션에서 통상적인 것처럼, 새로운 가상 머신(VM)을 작성하고, 상기 게스트 실행 환경과 관련된 그 밖의 파라미터들을 설정하는 것 뿐만 아니라 상기 게스트 실행 환경에서 사용하는 페이지들을 상기 물리 메모리 어드레스 공간과 함께 할당하는, 상기 게스트 실행 환경을 개시하기 위해, 상기 요구를 수신한다. 그 후, 상기 하이퍼바이저는, 상기 게스트 실행 환경의 초기화를 위한 상기 요구, 상기 암호화된 실행 가능 코드, 상기 하이퍼바이저에 의해 상기 게스트 실행 환경에 할당되어 있던 물리 메모리 어드레스 공간의 페이지들을 가리키는 페이지 식별자들, 및 상기 게스트 실행 환경에서 이용하는 블라인드 도메인 식별자를, 상기 보안 제어기에 전송한다. 전형적인 시스템에 있어서 상기 하이퍼바이저는, 대량의 물리 메모리 어드레스 공간을, 그 동작에 있어서 할당된 어드레스 공간의 일부 또는 전부를 사용하여도 되는 게스트 실행 환경에 할당할 것이라는 것을 알 것이다. 본 실시예에서, 먼저, 상기 보안 제어기(및 나중에 상기 게스트 실행 환경 자체)는, 상기 보안 제어기에서 소유한 것처럼 상기 게스트 실행 환경에서 사용하기 위해 이용 가능한 것으로서 상기 하이퍼바이저와 이후 상기 게스트 실행 환경에 의해 이미 할당된 것들 중에서, 사용하고 싶은 상기 물리 메모리 어드레스 공간의 어떠한 페이지들도 파괴적으로 청구한다.
상기 보안 제어기는, 상기 하이퍼바이저로부터 전송된 상기 요구를 수신하고, 상기 암호화된 실행된 코드를 설치하고 싶은 모든 페이지들을 파괴적으로 청구한다. 상기 보안 제어기는, 청구되어 취소(scrub)중인 동안에 상기 요구된 프로세스에 대한 프로세스 디스크립터 엔트리에 나타낸 것처럼 "스크럽"의 상태로 청구되어 취소중인 프로세스를 표시한다. 그 후, 그 프로세스는 그 실행 가능 코드가 설치될 때 "준비중(preparing)"으로서 표시된다. 상기 보안 제어기는, 전용 키를 사용하여 수신되었던 상기 실행 가능 코드를 복호화한다. 그 복호화된 코드는, 상기 보안 제어기에서 소유한 본 스테이지에 있는 상기 청구된 페이지들에 기억된다. 그 후, 상기 복호화된 실행 가능 코드를 기억하는 상기 페이지들은, 닫혀 실행 가능한 것을 나타내는 "실행중(executing)"으로서 표시된다. 그 후, 상기 보안 제어기는, 청구받은 상기 페이지들의 소유권을, 디폴트, 초기화중인 상기 게스트 실행 환경에 전송한다. 관련된 상기 블라인드 도메인내의 빈 CPU 실행 콘택스트 구조는 이때에도 개시된다. 본 실시예에서는, 상기 보안 제어기가, 전용 키를 적용하여 상기 실행 가능 코드를 복호화함으로써 보안 초기화를 행하였다. 그 밖의 실시예에서, 상기 보안 초기화는, 상기 보안 제어기에 의한 상기 실행 가능 코드의 검증 및/또는 보안 인스톨 증거를 추가로 또는 양자택일로 포함하여도 된다.
이 스테이지에서, 상기 보안 제어기는, 상기 하이퍼바이저에, 이제 상기 게스트 실행 환경이 "실행" 가능하다는 것을 통지한다. 이것이 "제1" 실행인 것을 나타내는 상태에는, 관련된 상기 프로세스에 대한 CPU 콘택스트 테이블 엔트리가 따로따로 기억되어도 된다.
상기 하이퍼바이저는, 실행을 위한 프로세스들을 예정한다. 새롭게 초기화된 게스트 실행 환경이 처음으로 실행되기 위한 시간에 도달하였을 때, 상기 하이퍼바이저는 이 실행을 시작한다. 그리고, 상기 게스트 실행 환경은, 상기 보안 제어기에 의해 상기 게스트 실행 환경의 소유권에 있어서 전송되어 있던 상기 물리 페이지들에 기억되었던 상기 복호화된 실행 가능 코드를 실행한다. 상기 게스트 실행 환경에서 실행하는 코드는, 상기 하이퍼바이저에 의해 이 환경에 이용 가능한 것으로서 표시된 그 페이지들중에서 연산을 위해 필요한 임의의 또 다른 페이지들을 파괴적으로 청구한다.
상기 게스트 실행 환경은 다양한 상이한 형태를 취하여도 된다는 것을 알 것이다. 일부의 실시예에서, 상기 게스트 실행 환경은 다수의 게스트 애플리케이션 프로그램들을 지원하는 풀(full) 운영체계이어도 된다. 그 밖의 실시예에서, 상기 게스트 실행 환경은, 그 자신의 메모리 페이지들을 사용하고 별도의 운영체계나 그 밖의 관련 시스템들 없이 실행하는 단일의 가장 기본적인 애플리케이션이어도 된다. 본 기술들은, 이들 및 그 밖의 환경에서 사용되어도 된다. 상기 하이퍼바이저의 제어하에 동작하는 상기 게스트 실행 환경은, 서로 이격하여 별도의 프로세스들이 실행할 능력을 제공한다. 또한, 상기 보안 제어기와, 상기 페이지 소유권 테이블들과 그 페이지들의 소유권의 파괴적 청구의 메커니즘들과의 제공은, (어떠한 형태의) 게스트 실행 환경의 데이터가 그 밖의 상기 게스트 실행 환경들과 상기 하이퍼바이저 자체에 의한 액세스로부터 보호될 수도 있는 시스템을 제공하려고 시도한다.
본 실시예에서, 상기 보안 제어기는, 별도의 프로세서의 형태를 취한다. 그 밖의 실시예들에서, 상기 보안 제어기는, 동일 프로세서상에서 동작하는 신뢰된 프로세스(예를 들면, ARM 리미티드 TrustZone를 지원하는 프로세서상에서 보안 모드로 동작하는 신뢰된 프로세스) 또는 필요한/원하는 특별한 보안 정도에 의존하는 신뢰된 하이퍼바이저의 형태를 취할 수 있었다.
도 11은 파괴적 페이지 청구의 프로세스를 개략적으로 나타내는 흐름도다. 단계 700에서는, 상기 페이지의 소유권을 취하기 위한 요구가 수신될 때까지 처리를 대기한다. 이러한 요구가 수신되면, 단계 702에서는, 통상의 메모리 관리부가 상기 요구중 프로세스에 관련된 상기 페이지에 대한 기록 허가를 제공하는지를 판정한다. 이 메모리 관리부는, 상기 하이퍼바이저에 의해 제어되어도 된다. 그 메모리 관리부가 기록 허가를 제공하지 않으면, 상기 요구를 거부하고 단계 700의 처리로 되돌아간다. 상기 메모리 관리부가 기록 허가를 제공하면, 단계 704의 처리로 진행되어, 겹쳐쓰기 카운터가 개시된다. 단계 706에서는, 소유권을 요구하는 상기 페이지의 라인이 겹쳐써져 있는 것으로서 검출될 때까지 대기한다. 단계 708에서는, 이것이 겹쳐써지는 다음의 예상된 라인이었는지를 판정한다. 본 실시예에서는, 메모리의 페이지를 형성하는 라인들이 순서대로 기록되는 것이 예상된다고 가정한다. 그 예상된 라인이 겹쳐써지지 않았을 경우, 상기 소유권을 청구하는 요구는 다시 실패하고 단계 700의 처리로 되돌아간다. 단계 708에서 상기 예상된 다음 라인이 겹쳐써졌다고 판정했을 경우는, 단계 710의 처리로 진행되어 상기 겹쳐쓰기 카운터를 증분한다. 단계 712에서는, 소정값에 도달하는 상기 겹쳐쓰기 카운터에 의해 나타낸 것처럼 상기 전체 페이지가 아직 겹쳐써지지 않았는가 아닌가를 판정한다. 그 겹쳐쓰기 카운터가 상기 전체 페이지가 겹쳐써졌다는 것을 나타내는 값에 아직 도달하지 않은 경우, 단계 706의 처리로 되돌아가 그 시스템은 그 페이지의 다음 라인이 겹쳐써지기를 대기한다. 그 전체 페이지가 겹쳐써졌을 경우, 단계 714에서는, 지금 상기 페이지 소유권 테이블에서 상기 요구자가 소유한 것처럼 그 페이지를 표시한다.
도 12는 여기서 설명된 시스템을 제공하기 위한 하드웨어 환경(800)을 개략적으로 도시한 것이다. 본 예에서, 하드웨어 환경(800)에는, 인터커넥트(812)를 거쳐 모두 접속된, 복수의 프로세서(802, 804)와, 보안 제어기(806)와, 물리적 메인 메모리(808)와, 메모리 매핑된 입출력 디바이스 등의 버스 마스터링 디바이스가 설치되어 있다. 상기 하드웨어 환경(800)은 아주 다양한 상이한 형태를 취할 수 있다는 것을 알 것이다. 본 기술들은, 예를 들면, 테넌트(tenant)(클라우드 고객)가 행해지기를 원하는 처리 태스크를 갖는 클라우드 컴퓨팅의 상황에서 사용하는데 아주 적합하다. 그들 자신의 처리 하드웨어가 상기 필요한 태스크를 행하게 하는 대신에, 그들은 클라우드 서비스 제공자에 의해 제공된 게스트 실행 환경내에서 실행될 상기 필요한 태스크를 보낸다. 그 클라우드 서비스 제공자는, 하이퍼바이저 프로그램을 갖는 상기 게스트 실행 환경에 대한 상기 요구를 수신하고 나서, 이전에 설명된 것처럼 그 게스트 실행 환경의 실행을 개시한다. 상기 게스트 실행 환경의 실행 자체는, 제공되는 클라우드 실행 지원의 타입에 따라, 다수의 프로세스들 또는 심지어 다수의 사이트들에 걸쳐 분배되어도 된다. 여기서 설명된 메커니즘들은, 게스트 실행 환경들간에 증가된 보안 레벨을 제공하려고 시도함으로써, 게스트 실행 환경들은 서로 보호되어도 되고, 상기 하이퍼바이저 자체에 대해서도 보호되어도 된다.
도 12의 하드웨어 실행 환경(800)은, 여기서 설명된 것처럼 페이지 소유권 테이블들을 지원한다. 상기 프로세서(802, 804)와 상기 보안 제어기(806)에는 각각, 여기에 다른 곳에서 설명된 것처럼 상기 물리 메모리 어드레스 공간의 페이지의 소유권을 취득하는 프로세스와, 상기 청구중 프로세스의 일부로서 그 페이지의 겹쳐쓰기를, 관리하는 소유권 및 겹쳐쓰기 추적 하드웨어(OTH)가 구비되어 있다. 또한, 콘택스트 전환을 지원하는 적어도 상기 프로세서 802와 804내에는, 콘택스트 전환 프로세스의 일부로서 상기 메인 메모리(808)내의 콘택스트 데이터 메모리(814)에 콘택스트 데이터를 보존하는 콘택스트 전환회로(CS)가 구비되어 있다. 상기 콘택스트 전환회로는, 예외 핸들링 회로의 일 형태다. 각 콘택스트에 관해 상기 콘택스트 데이터 메모리(814)를 형성하는 영역들은, 관련된 연관 프로세스에 의해 소유되고, 이에 따라서, 이것을 원하는 경우 전용을 유지하는 것을 보장하도록 그 콘택스트 데이터에의 액세스를 제어할 수 있다.
도 13은 현재의 기술들을 사용한 소프트웨어 층 모델을 개략적으로 도시한 것이다. 이 소프트웨어 층 모델은, 자체가 하나의 게스트 운영체계와 게스트 애플리케이션들을 포함하여도 되는 하나의 하이퍼바이저와 하나의 게스트 실행 환경 아래의 최상위 레벨에서 보안 제어기로부터 연장되는 다수의 특권 레벨을 포함한다. 새로운 게스트 실행 환경은, 상기 하이퍼바이저보다 낮은 특권 레벨에서 초기화된다.
일 실시예에서, 상기 특권 레벨들은, 상기 게스트 애플리케이션 프로그램들에 대응한 최하위 레벨로부터 연장될 수 있다. 다음의 상위 레벨은, 상기 하이퍼바이저가 후속하는 상기 게스트 운영체계이고, 상기 보안 제어기에 의해 실행된 모니터 프로그램이나 펌웨어일 것이다. 최상위의 특권 레벨은, 상기 시스템에서 사용된 암호 키들의 분배와 검증에의 액세스를 관리하는 상기 보안 콤플렉스와 관련될 수 있다. 그 밖의 특권 레벨 모델들이 채용되어도 된다는 것을 알 것이다.
본 기술들의 특징은, 게스트 실행 환경이 소유하는 페이지들에의 액세스를 제어하는 반면에, 예를 들면, 상위의 특권 레벨을 갖는 하이퍼바이저가 상기 게스트 실행 환경에 의해 그 페이지들에 액세스하는 것으로부터 방지되어도 되도록 동작하게 상기 페이지 소유권 메커니즘들이 상기 시스템을 허가하는 것이다. 이것은, 상위의 특권 레벨들이 보다 많은 액세스 권한을 제공하고 액세스 권한에 대해서 제어하는 통상의 예상과는 반대이다. 도 12에 도시된 소유권 및 겹쳐쓰기 추적회로는, 그 페이지에 대한 소유 프로세스에 의해 제어된 액세스 구성에 따라, 상기 물리 메모리 어드레스 공간내의 메모리 영역들의 소유권 권한을 시행할 수도 있다. (상기 페이지 소유권 테이블에 나타낸 것처럼) 상기 소유 프로세스는, 그 소유 프로세스에 대해 전용으로서, 또는 상기 소유 프로세스와, 메모리 액세스 요구들의 하나 이상의 또 다른 소스들간에 공유로서, 상기 페이지 소유권을 표시하여도 된다. 페이지는, 통상, 그것의 파괴적 청구 후 전용 상태로 초기화될 것이다. 상기 소유 프로세스에 의한 액세스의 공유는, 도 14에 도시된 것처럼, 다양한 상이한 형태를 취하여도 된다. 일 페이지에 대한 소유 프로세스는, 그 페이지의 소유권을 상기 소유 프로세스("부모" 프로세스)에 의해 초기화되는 "자식" 프로세스에 전송하여도 된다. 이와 같은 부모 프로세스가 자식 프로세스를 초기화하였고 그 자식 프로세스가 여전히 "준비" 상태에 있을 때, 그것은, 상기 부모가 소유하는 상기 페이지들의 하나 이상의 소유권을 그 자식 프로세스에 전송할 수 있다. 상기 자식 프로세스는, 그 자식 프로세스에 대해 전용으로서 표시된 페이지들을 초기에 수신할 것이다. 그후, 상기 자식 프로세스는, 너무 원할 경우, 부모 프로세스와 공유된 공유 스테이터스를 나타내기 위해 그것이 소유하는 페이지들 중 어느 하나에 대해 상기 공유된 액세스 제어 스테이터스를 변경하여도 된다. 상기 자식 프로세스는, 부모 프로세스로부터 새로운 페이지들을 수신할 때 이 자식 프로세스에 할당된 새로운 페이지들을 파괴적으로 청구한다. 조상(ancestor) 프로세스, 이를테면 조상 계층에서 할아버지 프로세스나 임의의 연상의 프로세스와도 공유할 수 있다.
하나의 프로세스가 하나의 페이지를 액세스할 때, 그것은, 일부의 실시예에서, 그 페이지에 대한 그 공유된 액세스 제어 데이터가 그 프로세스가 예상중인 것과 같은 것을 확인하여도 된다. 일례로서, 하나의 프로세스가 하나의 페이지를 소유하고 공유 액세스 제어 "전용"을 갖는 것으로서 설정한 경우, 이렇게 임의의 민감한 데이터를 그 페이지에 기억하기 전에 상기 페이지 소유권 테이블들내에 그 페이지가 구성되는 것을 확인하여도 된다.
소유 프로세스에서 선택하여도 되는 다른 공유의 형태는, 관련된 상기 메모리 맵 디바이스가 상기 액세스 제어를 변경하는 상기 프로세스에 의해 소유된 메모리의 하나의 페이지에 매핑되는 메모리 매핑된 디바이스와 하나의 페이지를 공유하는 형태다. 이에 따라, 하나의 프로세스에서 소유한 메모리 어드레스 공간내에 놓이는 메모리 매핑된 디바이스들은, 그 동일한 프로세스에서 소유한 메모리의 상기 일부의 페이지 또는 다른 페이지에 액세스하는 권한을 부여받을 수도 있다.
소유 프로세스에서 특정하여도 되는 공유 액세스의 또 다른 형태는 전체적으로 공유된 스테이터스임에 따라서, 그 물리 어드레스 메모리의 페이지는, 임의의 다른 프로세스에 의해 액세스되도록 허가되고, 임의의 개개의 프로세스에 의해 더 이상 소유되지 않는다(일부의 실시예들에서, 독특한 BDID는, 모든 전체 페이지들과 관련되게 제공되어도 된다). 상기 소유 프로세스는, 그 소유 프로세스의 민감한 데이터가 상기 전체적으로 공유된 페이지에 기록되지 않도록 보장할 수도 있다.
도 15는 소유권 회로로서의 역할을 하는 상기 소유권 및 겹쳐쓰기 추적 하드웨어가 하나의 프로세스로부터 수신된 공유 허가들의 변경을 위한 요구를 처리하는 모양을 개략적으로 도시한 것이다. 단계 900에서, 처리는, 공유 허가들을 변경하기 위한 요구가 수신될 때까지 대기한다. 이러한 요구가 수신될 때, 단계 902에서는, 액세스 허가를 변경하기 위한 요구가, 관련된 페이지를 소유하는 것으로서 상기 페이지 소유권 테이블에 나타낸 상기 프로세스로부터 수신되었는가 아닌가를 판정한다. 그 소유 프로세스로부터 상기 요구를 수신하였을 경우, 단계 904에서는, 액세스 허가에서의 그 요구된 변경을 확인 조치하고(예를 들면, 도 14에 나타낸 액세스 제어 스테이터스 옵션들 중 하나를 채용하고) 나서, 단계 900의 처리로 되돌아간다. 단계 902에서 상기 요구가 관련된 페이지를 소유하지 않은 프로세스로부터의 것이라고 판정한 경우, 단계 906에서는, 그 요구받은 변경을 무시하고, 선택사항으로, 변경을 위한 부정확 및/또는 부적절한 요구가 처리가 다시 단계 900에 되돌아가기 전에 수신되었다는 경보를 발령한다.
도 10과 관련지어 설명된 것처럼, 상기 하이퍼바이저는, 상이한 실행 환경들의 실행을 예정할 수도 있다. 이 상이한 실행 환경들은, 물리 메모리 어드레스 공간의 그들 자신의 페이지들을 각각 소유한다. 상기 하이퍼바이저가 하나의 게스트 실행 환경의 처리를 정지하고 상이한 게스트 실행 환경의 처리를 시작할 때, 이것은, 실행 콘택스트의 전환이고 프로세스가 액티브인 전환이다. 이 콘택스트 전환은, 보호된 예외 핸들링에 의해 행해져도 된다. 콘택스트의 변경시에 상기 프로세서 또는 광범위 시스템의 상태 데이터는, 많은 상태 파라미터들, 예를 들면, 레지스터 콘텐츠, 구성 변수들, 프로그램 상태 값들 등을 포함할 수도 있다. 이 상태 데이터는, 콘택스트 데이터이고, 그 밖의 게스트 실행 환경들 또는 상기 하이퍼바이저 자체에 대해 이용 가능하게 허용되지 않는 것이 바람직한 전용 정보를 나타낼 수도 있다. 도 16a 및 16b는, 실행 콘택스트를 보호하는 방법을 나타내는 흐름도다.
단계 1000에서는, 상이한 프로세스에의 비자발적 나가기(exit) 등과 같은 콘택스트 전환 인터럽트를 수신할 때까지 처리를 대기한다. 단계 1002에서는, 재시작 데이터를, 상기 인터럽트가 시행되는 상기 프로세스(게스트 실행 환경)가 소유한 콘택스트 데이터 메모리(814)의 일부에 보존한다. 이 재시작 데이터는, 일부의 실시예에서, 그 중단된 프로세스를 재시작하기에 충분한 상태 데이터일 수도 있지만, 그 중단된 프로세스에 의존하는 모든 상태 데이터를 포함할 필요는 없다. 일례로서, 상기 재시작 데이터는, 범용 레지스터 콘텐츠를 포함하여도 되지만, 캐시 콘텐츠, 변환 색인 버퍼 콘텐츠 등등의 미세 구조 상태를 포함할 필요는 없다. 단계 1002에서 중단중인 상기 프로세스가 소유한 콘택스트 데이터 메모리(814)의 일부분에 상기 재시작 데이터를 보존한 후, 단계 1004는, 현재의 프로세스에 의존하며 다른 프로세스에의 전환 후 임의의 다른 프로세스에 액세스 가능할 상태 데이터를 파괴적으로 겹쳐쓴다. 이 겹쳐써진 데이터는, 상기 재시작 데이터의 상위 집합이어도 된다. 또한, 그 겹쳐써진 데이터는, 미세 구조 데이터와, 새롭게 시작된 프로세스에 액세스 가능하지 않은 그 밖의 데이터, 예를 들면, 중단중이지만, 상기 페이지 소유권 테이블들의 액션과 그 밖의 메커니즘들에 의해 새롭게 시작된 프로세스에 액세스 가능하지 않을, 상기 프로세스가 소유한 메모리 영역들내의 데이터를, 제외하여도 된다. 상기 겹쳐쓰기는, 예를 들면, 현재의 프로세스에 의존한 상기 액세스 가능한 상태의 전부를, 중단중인 상기 프로세스에서 실제로 행하였던 상기 처리에 의존하지 않는 제로 값들 또는 일부의 다른 소정값으로 설정하여도 된다. 그 후, 상기 시스템은, 다음의 콘택스트 전환 인터럽트를 대기하기 위해 단계 1000으로 되돌아간다. 일 프로세스로부터의 자발적 나가기, 예를 들면, 상위 예외 레벨까지의 프로세스 호출일 경우에, 일부분의 레지스터 콘텐츠, 예를 들면 RO-R7은, 나가기와 재진입에 관해 그 밖의 레지스터들/상태가 기억 및 복원되면서 상기 호출 타겟에 건네져도 된다.
도 16b에 도시된 것처럼, 단계 1005에서, 상기 시스템은, 새로운 프로세스가 시작될 때까지 대기한다. 단계 1006에서는, 그 시작되는 새로운 프로세스가 상기 관련된 스테이터스가 상기 CPU 콘택스트 데이터에서 "레디(ready)" 상태의 프로세스인가 아닌가를 판정한다. 그 프로세스가 레디 상태에 있지 않을 경우, 이것은, 실행을 위해 이미 예정되어 있고 적어도 한번 실행되어 있음에 따라서 그 실행이 재시작되기 전에 복원되어야 하는 그 자신의 콘택스트 데이터를 가질 것이라는 것을 나타낸다. 상기 시작되는 프로세스가 상기 "레디 상태"에 있지 않을 경우, 단계 1008에서는, 그 프로세스가 상기 콘택스트 데이터 메모리(814)내에 소유하는 메모리의 페이지들로부터의 재시작 데이터를 복원한다. 상기 시작되는 프로세스가 "레디" 상태에 있을 경우, 예를 들면, "제1의 실행을 위한 레디" 상태에 있을 경우, 단계 1008이 우회된다. 끝으로, 단계 1010에서는, 다른 새로운 프로세스를 대기하기 위해 단계 1005의 처리로 되돌아가기 전에, 새로운 프로세스의 실행을 시작한다.
도 17은 프로세스 디스크립터 테이블내의 복수의 프로세스 디스크립터 엔트리들 중 하나이어도 되는 프로세스 디스크립터 엔트리를 나타낸다. 상기 프로세스 디스크립터 엔트리는, 예를 들면, 상기 블라인드 도메인 식별자(BDID)를 포함한다. 상기 페이지 디스크립터 엔트리는, 관련된 프로세스가 스위치 아웃될 때 상기 관련된 프로세스를 위한 콘택스트 데이터가 보존되는(복원되는) 상기 콘택스트 데이터 메모리(814)내의 위치에 포인터(핸들)도 포함한다. 이 포인터는, 상기 관련된 프로세스가 소유한 메모리의 영역을 가리킨다. 상기 페이지 디스크립터 엔트리는 한층 더 후술하는 것처럼 현재의 프로세스 스테이터스도 포함한다.
도 18은 일 프로세스를 위한 프로세스 스테이터스 상태들의 예를 개략적으로 도시한 것이다. 사용되게 중단된 프로세스는 무효로서 표시되고, 그것의 BDID는 새로운 프로세스에 의해 재청구되는데 이용 가능할 것이다. 상기 하이퍼바이저는, 프로세스를 작성하고 그 프로세스 디스크립터 엔트리를 설정하는 역할을 하여도 된다. 그 프로세스의 초기화는, 이전에 상술한 것처럼 상기 보안 제어기와 관련지어 행해져도 된다. 순서대로 상기 프로세스에서 채용하여도 되는 다음 상태는 "스크럽" 상태다. 이것은, 그 관련된 프로세스 BDID가 청구되고, 상기 프로세스에 의한 소유권을 위한 관련된 페이지들에 대해 스크러빙이 행해지고 있다, 예를 들면, 상기 관련된 BDID의 조기 사용을 위해 페이지 소유권 테이블들에서의 기존의 엔트리들은 제거되고 나서, 그 BDID를 위한 새로운 페이지들은 (파괴적 겹쳐쓰기에 따라) 청구되어 취소된다. 스크러빙이 완료되었을 때, 상기 관련된 프로세스는, 이것이 상기 관련된 프로세스가 개방되고 그 페이지들을 덧붙일 수 있는 것을 나타내는, "준비"상태로 전환된다. 그 페이지들의 덧붙이기가 완료되었을 때, 상기 프로세스는 닫혀 실행 가능한 "실행중" 상태로 변경된다. 상기 도메인내 CPU 실행 콘택스트의 스테이터스 필드에 기억되고, 상기 프로세스의 실행을 시작할 때 재시작 데이터가 복원되는가 아닌가를 제어하는데 사용되는 제1의 실행 상태를 위한 레디가 있다. 도 18은 실행을 위한 준비 후 순서대로 상기 프로세스가 이동되는 복수의 처리 상태들을 포함하는 프로세스의 "라이프사이클"을 도시한 것이다. 이 상태들의 수와 특별한 형태는 달라질 수도 있다.
적어도 일부의 실시예들은, 그 프로세스를 실행에 들어가게 하고 실행을 벗어나게 전환할 때 프로세스의 상태 데이터를 기억하는데 사용되어도 되는 블라인드 도메인 실행 콘택스트(또는 프레임) BDEC를 포함한다. 이 상태 데이터에는, 관련된 상기 프로세스가 이미 일부 실행이 시행되었는가 아닌가의 표시가 포함되어 있다. 그 프로세스가 이미 실행되지 않았을 경우, 그것은, 본 예에서 "새로운"(이전에 설명된 "레디"상태 참조)으로서 표시된다. 또한, 상기 실행 콘택스트 데이터는, 상기 프로세스를 나갔을 때에 상기 범용 레지스터 콘텐츠와 같은 상태 데이터를 포함하여도 된다. 이 레지스터 콘텐츠는, 상기 프로세스에 다시 들어갈 때 복원되어도 된다. 일 프로세스가 자발적으로(예를 들면, 소프트웨어 함수 호출 후) 또는 비자발적으로(예를 들면, 하드웨어 인터럽트 후) 나갔는지를 한층 더 특정하는 스테이터스 파라미터들이 있고; 이 정보는, 상기 프로세스로서 행해진 액션들이 어떻게 나가는지 뿐만 아니라 상기 프로세스가 어떻게 재시작되는지도 제어하는데 사용되어도 된다. 상기 콘택스트 데이터는, 상기 관련된 프로세스에 대해 전용이 되도록 기억되어도 된다.
각 BDEC는, New, Voluntary_Exit, Involuntary_Exit, Voluntary_Complete, Involuntary_Complete 및 Invalid와 같은 상태의 표시를 포함할 수도 있다. 상기 BDEC는, 상기 도메인, 그 도메인을 위한 범용 레지스터의 콘텐츠(예를 들면, R0-R30, PC, P-State, 등) 및 상기 도메인을 위한 예외 레벨 레지스터들의 콘텐트(예를 들면, TTBR_ELx 등)를 소유하는 상기 예외 레벨의 표시도 포함할 수도 있다.
일반적으로, 물리 어드레스들의 대응한 블록에 대해서, 복수의 프로세스들 중 어느 프로세스가 상기 물리 어드레스들의 대응한 블록에의 액세스를 배타적으로 제어하는 소유자 프로세스인지를 각각 나타내는 하나 이상의 엔트리들을 포함하는 소유권 테이블을 제공할 수도 있다. 이것에 의해, 복수의 프로세스들 중 어느 하나가, 상기 물리 어드레스 공간의 주어진 영역에서 다른 프로세스에 의해 이 영역에의 액세스를 제한하도록 배타적 제어를 취하는데 이용 가능할 수 있다. 이것은, 하위 특권 레벨에서의 프로세스가 전형적인 시스템에서 가능하지 않은 보다 많은 특권이 있는 프로세스에 의해 데이터에의 액세스를 제어 또는 제한하게 할 때 특히 유용하다.
일반적으로, 요구중 프로세스가 물리 어드레스들의 타겟 블록의 소유권을 요구하는 수단이 일부 존재할 수도 있다. 물리 어드레스들의 타겟 블록은, 그 요구에서 직접, 또는 가상 어드레스나 중간 어드레스를 특정하여서 간접적으로, 또는 일부의 다른 방식으로 식별될 수 있다. 예를 들면, 상기 소유권 요구는, (상술한 클레임 시작 명령어와 같은) 전용 소유권 요구 명령어, 또는 주어진 페이지에 대해 소유권을 요구하는 것을 나타내는 파라미터를 갖는 다른 종류의 명령어일 수 있거나, 상기 소유권 요구는, 예를 들면 일부의 다른 프로세스를 기동하여 상기 소유권 요구를 개시하는 일부의 제어정보를 설정함으로써 다른 종류의 소유권 코맨드(반드시 명령어는 아님)에 대응할 수 있다. 상기 소유권 요구에 응답하여, 처리회로는, 상기 요구중 프로세스가 이제 상기 타겟 페이지에 대한 소유자인 것을 나타내는데 상기 소유권 테이블을 갱신할 수 있다. 따라서, 요구중 프로세스는, 예를 들면, 민감한 데이터를 메모리에 기록하기 전에 상기 대응한 어드레스들의 블록들의 소유권을 요구함으로써 상기 민감한 데이터를 보호할 수 있다.
어드레스들의 주어진 블록의 소유권이 일 프로세스에서 다른 프로세스로 변경할 때, 다수의 기술들은, 민감한 정보가 오래된 소유자로부터 새로운 소유자에 누설되는 것을 방지하는데 사용될 수 있다. 상기 예들에서 설명된 것처럼, 소유권을 요구하는 상기 프로세스가 유효하게 그 블록을 위한 소유자 프로세스가 될 수 있기 전에 상기 타겟 블록에서 각 어드레스를 겹쳐쓰기 위해 겹쳐쓰기 과정의 성공적인 완료를 필요로 하는 방식이 하나 있다. 이것은, 실제로 상기 겹쳐쓰기 과정을 행하는 하드웨어에 의해, 또는 상기 겹쳐쓰기 과정을 실행하는 상기 요구중 프로세스 자체나 다른 신뢰된 프로세스이지만 성공적으로 완료하였는지를 확인하는 하드웨어에 의해, 시행될 수 있다. 상기 겹쳐쓰기 과정이 성공적으로 완료하였는지를 하드웨어가 확인하는 일 방식은, 소유권 클레임 시작 코맨드와 소유권 클레임 종료 코맨드간에 행해진 하나 이상의 기록 연산에서 겹쳐써진 물리 어드레스들이 상기 타겟 블록의 모든 물리 어드레스를 포함하는 것을 확인하는 방식이어도 된다. 상기 소유권 클레임 시작 코맨드와 소유권 클레임 종료 코맨드간에 행해진 상기 기록들이 어드레스들의 전체 블록을 인접하게 커버하지 않는 경우, 상기 겹쳐쓰기 과정은 실패할 수도 있고, 상기 요구자는 유효하게 상기 소유자가 될 수 없다. 예를 들면, 이 확인들은, 상술한 것처럼 완료된 기록들의 수와 그들의 어드레스 오프셋들을 추적하는 클레임 카운트 값을 사용하여 행해질 수 있다. 상기 겹쳐쓰기 과정이 상기 타겟 블록의 각 물리 어드레스에 상기 데이터를 성공적으로 겹쳐쓴 것을 결정하는 다른 기술들이 존재할 수도 있다는 것을 알 것이다.
일부의 실시예는, 메모리에 기록된 데이터를 암호화하고 메모리로부터 판독된 데이터를 복호화하는 암호화 회로를 제공할 수도 있다. 각 프로세스는 하나 이상의 관련된 키들을 가질 수도 있고, 어드레스들의 특별한 블록에 기록된 데이터는, 그 블록의 소유자와 관련된 키를 사용하여 암호화될 수도 있고, 그 메모리로부터 역으로 상기 데이터를 판독할 때 복호화될 수도 있다. 암호화를 포함하는 시스템들에 있어서, 상기 겹쳐쓰기 과정은, 하나의 프로세스와 관련된 데이터가 어드레스들의 블록을 다른 소유자에 전송 후 메모리에 유지되어 있는 경우에도, 새로운 소유자가 오래된 소유자의 키를 사용하여 암호화되므로 상기 데이터를 판독할 수 없기 때문에, 필요하지 않을 수도 있다.
그럼에도 불구하고, 보안을 강화하기 위해서, 암호화 능력이 있을 경우에도, 상기 블록의 소유권을 전송할 때 어드레스들의 블록에 대해 상기 겹쳐쓰기 과정을 행하는 것도 필요로 하는 것이 바람직하기도 하다. 암호화와 상기 겹쳐쓰기 과정을 조합하면, 상기 소유자 프로세스가 블록의 소유권이 전송될 때 데이터를 잃어버릴 위험 없이 소유하는 어드레스들의 상기 블록들의 각각에 대해 필요한 암호화의 레벨을 달라지게 할 수 있는 이점도 있다. 상이한 암호화 모드들은, 예를 들면, 암호화의 상이한 레벨들 또는 강도들을 포함할 수도 있다.
일반적으로, 소유권 보호회로는, 현재의 프로세스가 상기 소유자 프로세스에 의해 타겟 물리 어드레스에 액세스하게 허가되지 않은 것을 상기 소유권 테이블의 대응한 엔트리가 나타낼 때 상기 타겟 물리 어드레스에서의 데이터에 액세스하기 위해 상기 현재의 프로세스로부터의 액세스 요구들을 거부하도록 구성되어도 된다. 예를 들면, 상기 소유권 보호회로는, 상술한 BDMU를 구비하여도 되거나, 또는 이와는 달리, 메모리 제어기내에 설치된 일부의 회로일 수 있다. 소유자의 허가를 충족시키지 않는 요구들을 거부함으로써, 상기 소유자 프로세스는, 상기 소유된 어드레스들의 블록에의 액세스에 대해 배타적으로 제어할 수 있다.
소유권 보호회로와 아울러, 특별한 프로세스들, 이를테면 하이퍼바이저, 가상 머신 또는 운영체계에 의해 설정된 액세스 허가들을 시행하는 액세스 제어회로도 존재할 수도 있다. 예를 들면, 상기 액세스 제어회로는, 상술한 것처럼 MMU에 대응할 수 있다. 상기 액세스 제어회로가 (예를 들면, 상기 하이퍼바이저가 예를 들면 상이한 가상 머신간에 어드레스 공간을 분할하도록) 특별한 특권 레벨들에서 특별한 프로세스들에 의해 설정된 허가들을 시행하는 한편, 상기 소유권 보호회로는, 상기 허가들을 필요로 하는 상기 페이지들의 소유권을 요구함으로써 그들의 특권 레벨에 상관없이 다른 프로세스들에 관한 허가들을 임의의 프로세스에 의해 시행할 수 있다.
상기 기술은, 하이퍼바이저, 하나 이상의 가상 머신들, 하나 이상의 게스트 운영체계들 및 하나 이상의 애플리케이션들 중 2개 이상을 지원하는 시스템들에 특히 유용할 수 있다. 그렇지만, 보다 일반적으로 상기 기술은, 다수의 프로세스가 공존하고 하나의 프로세스가 다른 액세스가 데이터에 액세스하는 것을 방지할 수도 있는, 임의의 시스템에 적용될 수 있다.
상술한 것처럼, 상기 POT(50)는, 상기 POT엔트리(52)와 관련된 상기 PA로부터, 제시간에 일부의 기준점에서 상기 PA가 변환되었던 VA 또는 IPA에의 "역변환 매핑"을 효과적으로 나타내는 상기 어드레스 필드(58)를 포함하여도 된다.
그렇지만, 유사한 기술은, 어드레스 변환 회로에 의해 대응한 물리 어드레스가 변환되었던 제1 어드레스를 적어도 하나의 엔트리가 식별할 수도 있는 물리 어드레스별로 지수가 만들어진 임의의 테이블에도, 보다 일반적으로 적용될 수 있었다. 물리 어드레스로부터, 이 물리 어드레스가 변환되었던 제1 어드레스에의 역매핑의 스냅숏을 유지함으로써, 그 매핑이 여전히 같은지를 나중에 확인하는 것이 가능하여, 상기 테이블의 콘텐츠의 유효성에 영향을 미칠지도 모르는 상기 어드레스 매핑에 있어서의 이후의 변경을 검출하는데 유용할 수 있다.
일반적으로, 처리회로는, 레퍼런스 이벤트의 발생에 응답하여, 주어진 물리 어드레스에 대응한 상기 테이블의 엔트리에, 상기 어드레스 변환회로에 의해 현재 상기 주어진 물리 어드레스로 변환된 상기 제1 어드레스를 기록할 수도 있다. 상기 레퍼런스 이벤트는, 예를 들면, 새로운 엔트리의 상기 주어진 물리 어드레스에 대한 상기 테이블에의 할당, 상기 주어진 물리 어드레스에 대한 상기 테이블의 기존의 엔트리에 있는 정보의 갱신, 소정의 타입의 명령어(예를 들면 상기 주어진 제1 어드레스를 특정하는 명령어)의 실행, 또는 상기 데이터 처리장치의 동작 모드의 소정의 변경(예를 들면, 보안 모드로의 변경)일 수 있다. 따라서, 상기 테이블에 기록된 상기 제1 어드레스는, 상기 레퍼런스 이벤트시에 존재했던 상기 제1 어드레스와 상기 대응한 물리 어드레스간의 상기 매핑을 나타낼 수도 있다.
나중에, 상기 어드레스 변환 회로에 의해 타겟 물리 어드레스로 변환되도록 타겟 제1 어드레스를 특정하는 액세스 요구를 수신할 때, 제어회로는, 상기 타겟 제1 어드레스와, 상기 타겟 물리 어드레스에 대응한 상기 테이블의 엔트리에 의해 특정된 상기 제1 어드레스간에, 불일치하는지를 판정할 수 있다. 예를 들면, 이것은, 상기 어드레스 매핑이, 상기 테이블에 상기 제1 어드레스가 기억되게 하는 상기 레퍼런스 이벤트의 시간과 여전히 같은지를 효과적으로 판정한다. 이 어드레스들간에 불일치하면, 상기 요구가 거부될 수 있거나, 에러의 신호가 보내질 수 있다.
일부의 경우에, 상기 물리적으로 인덱싱된 테이블은, 과거 어드레스 매핑들을 추적하고 그것들이 여전히 나중에 같은지를 검출하기 위해서만 제공되어서, 그 물리적으로 인덱싱된 테이블이 상기 제1 어드레스 자체외에 어떠한 정보도 포함하는 것이 불필요하다.
이러한 기술은, 임의의 물리적으로 인덱싱된 테이블에 사용될 수 있지만, 물리 어드레스들의 대응한 블록들에 대한 소유자들을 가리키고 상기 소유자가 그 어드레스들에의 액세스를 배타적으로 제어하는 상술한 형태의 상기 소유권 테이블에 특히 유용하다. 물리 어드레스의 제1 어드레스로의 역매핑을 상기 테이블에 기록하는 것은, 어드레스 매핑의 변경으로 민감한 정보가 손실되는 상술한 타입의 공격들을 방지하는데 도움이 될 수 있다.
일부의 경우에, 상기 제1 어드레스는 가상 어드레스이어도 된다. 그 밖의 경우에는, 상기 제1 어드레스는 중간 물리 어드레스이어도 된다. 또한, 하나의 테이블은, 상기 제1 어드레스가 가상 어드레스인 일부의 엔트리들과 상기 제1 어드레스가 중간 어드레스인 그 밖의 엔트리들을 갖는 것이 가능하다.
본 출원에서, "...하도록 구성된"의 단어는, 장치의 요소가 상기 규정된 연산을 실시할 수 있는 구성을 갖는다는 것을 의미하는데 사용된다. 본 문맥에서, "구성"은, 하드웨어 또는 소프트웨어의 상호연결의 배치 또는 방식을 의미한다. 예를 들면, 상기 장치는 상기 규정된 연산을 제공하는 전용 하드웨어를 가져도 되거나, 프로세서 또는 다른 처리 디바이스는 그 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은, 상기 장치 요소가 임의의 방식으로 상기 규정된 연산을 제공하기 위해서 변경될 필요가 있다는 것을 암시하지는 않는다.
여기에서는 본 발명의 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위 및 사상으로부터 벗어나지 않고 당업자가 변경 및 변형을 여러 가지로 실시할 수 있다는 것을 알 수 있다.

Claims (8)

  1. 물리 메모리 어드레스 공간내의 메모리 영역들의 소유권 권한을 시행하는 소유권 회로를 구비하는 데이터 처리장치로서, 주어진 메모리 영역이 복수의 프로세스 중에서 또한 특권 레벨에 상관없이 특정된 주어진 소유 프로세스를 갖고, 상기 주어진 소유 프로세스가 상기 주어진 메모리 영역들에의 액세스를 제어하는 배타적 권한을 갖고, 상기 주어진 소유 프로세스가 상기 주어진 메모리 영역을,
    상기 주어진 소유 프로세스에 대한 전용; 및
    상기 주어진 소유 프로세스와, 메모리 액세스 요구들의 적어도 하나의 또 다른 소스와의 사이에서, 공유 중,
    하나로서 지정하는, 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기 주어진 소유 프로세스는,
    상기 주어진 소유 프로세스와,
    상기 주어진 소유 프로세스도 소유한 메모리 영역들내에 매핑된 하나 이상의 버스 마스터링 디바이스들;
    상기 주어진 메모리 영역의 소유권을 상기 주어진 소유 프로세스에 전송한 부모 프로세스;
    상기 주어진 소유 프로세스에 의해 상기 주어진 메모리 영역의 소유권에 앞서 상기 주어진 메모리 영역의 소유권을 전송한 상기 주어진 소유 프로세스의 조상 프로세스; 및
    임의의 그 밖의 프로세스 중,
    하나와의 사이에서,
    공유의 하나로서 공유될 때 상기 주어진 메모리 영역을 지정하는, 데이터 처리장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 소유권 회로는, 특권 레벨이 상기 주어진 소유 프로세스보다 큰 프로세스에 대한 상기 주어진 메모리 영역에의 액세스를 상기 주어진 소유 프로세스가 거부하게 허가하는, 데이터 처리장치.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 주어진 메모리 영역의 새로운 주어진 소유 프로세스에의 할당은, 상기 새로운 주어진 소유 프로세스가 상기 배타적 권한을 얻기 전에 상기 주어진 메모리 영역내에 기억된 데이터의 파괴적 겹쳐쓰기를 포함하는, 데이터 처리장치.
  5. 제 4 항에 있어서,
    상기 파괴적 겹쳐쓰기는 상기 새로운 주어진 소유 프로세스에 의해 행해지고, 상기 겹쳐쓰기의 완료는, 상기 새로운 소유자가 상기 배타적 권한을 얻기 전에 상기 겹쳐쓰기의 완료를 보장하도록 겹쳐쓰기 추적 하드웨어에 의해 추적되는, 데이터 처리장치.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    상기 복수의 프로세스 중 어느 프로세스가 메모리의 어느 영역을 제어하기 위한 배타적 권한을 갖는지를 나타내는 소유권 데이터를 기억하는 소유권 테이블을 포함하는, 데이터 처리장치.
  7. 물리 메모리 어드레스 공간내의 메모리 영역들의 소유권 권한을 시행하는 소유권 수단을 구비하는 데이터 처리장치로서, 주어진 메모리 영역이 복수의 프로세스 중에서 또한 특권 레벨에 상관없이 특정된 주어진 소유 프로세스를 갖고, 상기 주어진 소유 프로세스가 상기 주어진 메모리 영역들에의 액세스를 제어하는 배타적 권한을 갖고, 상기 주어진 소유 프로세스가 상기 주어진 메모리 영역을,
    상기 주어진 소유 프로세스에 대한 전용; 및
    상기 주어진 소유 프로세스와, 메모리 액세스 요구들의 적어도 하나의 또 다른 소스와의 사이에서, 공유 중,
    하나로서 지정하는, 데이터 처리장치.
  8. 물리 메모리 어드레스 공간내의 메모리 영역들의 소유권 권한을 시행하는 단계를 포함하는 데이터 처리방법으로서, 주어진 메모리 영역이 복수의 프로세스 중에서 또한 특권 레벨에 상관없이 특정된 주어진 소유 프로세스를 갖고, 상기 주어진 소유 프로세스가 상기 주어진 메모리 영역들에의 액세스를 제어하는 배타적 권한을 갖고, 상기 주어진 소유 프로세스가 상기 주어진 메모리 영역을,
    상기 주어진 소유 프로세스에 대한 전용; 및
    상기 주어진 소유 프로세스와, 메모리 액세스 요구들의 적어도 하나의 또 다른 소스와의 사이에서, 공유 중,
    하나로서 지정하는, 데이터 처리방법.
KR1020187000520A 2015-06-16 2016-04-26 공유 페이지 KR102517506B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1510533.1A GB2539435B8 (en) 2015-06-16 2015-06-16 Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
GB1510533.1 2015-06-16
PCT/GB2016/051168 WO2016203190A1 (en) 2015-06-16 2016-04-26 Shared pages

Publications (2)

Publication Number Publication Date
KR20180017093A true KR20180017093A (ko) 2018-02-20
KR102517506B1 KR102517506B1 (ko) 2023-04-04

Family

ID=53784799

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187000520A KR102517506B1 (ko) 2015-06-16 2016-04-26 공유 페이지

Country Status (9)

Country Link
US (1) US10802729B2 (ko)
EP (1) EP3311282A1 (ko)
JP (1) JP6913636B2 (ko)
KR (1) KR102517506B1 (ko)
CN (1) CN107771323B (ko)
GB (1) GB2539435B8 (ko)
IL (1) IL255546B (ko)
TW (1) TWI740825B (ko)
WO (1) WO2016203190A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10394454B2 (en) 2017-01-13 2019-08-27 Arm Limited Partitioning of memory system resources or performance monitoring
US10268379B2 (en) 2017-01-13 2019-04-23 Arm Limited Partitioning of memory system resources or performance monitoring
US10664306B2 (en) 2017-01-13 2020-05-26 Arm Limited Memory partitioning
US10649678B2 (en) 2017-01-13 2020-05-12 Arm Limited Partitioning of memory system resources or performance monitoring
US20180203807A1 (en) 2017-01-13 2018-07-19 Arm Limited Partitioning tlb or cache allocation
GB2563881B (en) * 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Realm execution context masking and saving
GB2563883B (en) 2017-06-28 2019-10-09 Advanced Risc Mach Ltd Invalidation of a target realm in a realm hierarchy
GB2563888B (en) * 2017-06-28 2020-03-18 Advanced Risc Mach Ltd Sub-realms
GB2563887B (en) * 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Masking of architectural state associated with a realm
GB2563886B (en) * 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Realm management unit-private memory regions
US10445009B2 (en) * 2017-06-30 2019-10-15 Intel Corporation Systems and methods of controlling memory footprint
US10664400B2 (en) 2017-07-11 2020-05-26 Arm Limited Address translation cache partitioning
US11687654B2 (en) * 2017-09-15 2023-06-27 Intel Corporation Providing isolation in virtualized systems using trust domains
GB2569358B (en) * 2017-12-15 2020-01-29 Advanced Risc Mach Ltd Code realms
GB2570474B (en) * 2018-01-26 2020-04-15 Advanced Risc Mach Ltd Region fusing
GB2578297B (en) * 2018-10-19 2021-07-14 Advanced Risc Mach Ltd Trusted intermediary realm
GB2578158B (en) * 2018-10-19 2021-02-17 Advanced Risc Mach Ltd Parameter signature for realm security configuration parameters
US11461244B2 (en) * 2018-12-20 2022-10-04 Intel Corporation Co-existence of trust domain architecture with multi-key total memory encryption technology in servers
US11487906B2 (en) 2019-03-08 2022-11-01 International Business Machines Corporation Storage sharing between a secure domain and a non-secure entity
US11531627B2 (en) 2019-03-08 2022-12-20 International Business Machines Corporation Secure storage isolation
US11640361B2 (en) 2019-03-08 2023-05-02 International Business Machines Corporation Sharing secure memory across multiple security domains
US11256625B2 (en) 2019-09-10 2022-02-22 Arm Limited Partition identifiers for page table walk memory transactions
WO2021142612A1 (zh) * 2020-01-14 2021-07-22 华为技术有限公司 安全隔离方法、装置以及计算机系统
US20240106824A1 (en) * 2022-09-23 2024-03-28 Qualcomm Incorporated Hardware identity impersonation for target access control

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090228673A1 (en) * 2008-03-04 2009-09-10 Microsoft Corporation Fine Granularity Hierarchiacal Memory Protection
US20110314224A1 (en) * 2010-06-16 2011-12-22 Arm Limited Apparatus and method for handling access operations issued to local cache structures within a data processing apparatus
US20120079254A1 (en) * 2010-09-24 2012-03-29 Arm Limited Debugging of a data processing apparatus
US20140230077A1 (en) * 2013-02-14 2014-08-14 International Business Machines Corporation Instruction set architecture with secure clear instructions for protecting processing unit architected state information
JP2014532201A (ja) * 2011-10-13 2014-12-04 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 仮想ゲストのメモリ保護の方法、システムおよびコンピュータプログラム

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3454854B2 (ja) 1992-01-16 2003-10-06 株式会社東芝 メモリ管理装置及び方法
JP2007280421A (ja) 1994-09-09 2007-10-25 Renesas Technology Corp データ処理装置
US5623632A (en) 1995-05-17 1997-04-22 International Business Machines Corporation System and method for improving multilevel cache performance in a multiprocessing system
US5815701A (en) 1995-06-29 1998-09-29 Philips Electronics North America Corporation Computer method and apparatus which maintains context switching speed with a large number of registers and which improves interrupt processing time
US5754762A (en) 1997-01-13 1998-05-19 Kuo; Chih-Cheng Secure multiple application IC card using interrupt instruction issued by operating system or application program to control operation flag that determines the operational mode of bi-modal CPU
US6085296A (en) * 1997-11-12 2000-07-04 Digital Equipment Corporation Sharing memory pages and page tables among computer processes
JP2000276405A (ja) 1999-01-19 2000-10-06 Matsushita Electric Ind Co Ltd アドレス変換装置及びこのアドレス変換装置を有するコンピュータシステム
JP2001297035A (ja) 2000-04-11 2001-10-26 Hitachi Ltd 情報処理装置
US6886085B1 (en) 2000-04-19 2005-04-26 International Business Machines Corporation Method and apparatus for efficient virtual memory management
US6751710B2 (en) * 2000-06-10 2004-06-15 Hewlett-Packard Development Company, L.P. Scalable multiprocessor system and cache coherence method
US6789156B1 (en) * 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
US6745307B2 (en) 2001-10-31 2004-06-01 Hewlett-Packard Development Company, L.P. Method and system for privilege-level-access to memory within a computer
US7284061B2 (en) * 2001-11-13 2007-10-16 Canon Kabushiki Kaisha Obtaining temporary exclusive control of a device
US6854039B1 (en) 2001-12-05 2005-02-08 Advanced Micro Devices, Inc. Memory management system and method providing increased memory access security
US7149857B2 (en) * 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
US6829762B2 (en) * 2002-10-10 2004-12-07 International Business Machnies Corporation Method, apparatus and system for allocating and accessing memory-mapped facilities within a data processing system
US7278030B1 (en) * 2003-03-03 2007-10-02 Vmware, Inc. Virtualization system for computers having multiple protection mechanisms
US7503049B2 (en) 2003-05-29 2009-03-10 Panasonic Corporation Information processing apparatus operable to switch operating systems
US7356665B2 (en) * 2003-12-17 2008-04-08 International Business Machines Corporation Method and system for machine memory power and availability management in a processing system supporting multiple virtual machines
US9152785B2 (en) * 2004-01-30 2015-10-06 Hewlett-Packard Development Company, L.P. Providing a flexible protection model in a computer system by decoupling protection from computer privilege level
CA2536610C (en) * 2004-02-05 2013-04-30 Research In Motion Limited Debugging port security interface
TWI258662B (en) 2004-03-03 2006-07-21 Faraday Tech Corp Method and apparatus of determining whether a virtual address corresponds to a physical address in a translation lookaside buffer
JP2005275629A (ja) 2004-03-23 2005-10-06 Nec Corp マルチプロセッサシステム、及び、メモリアクセス方法
US7401230B2 (en) 2004-03-31 2008-07-15 Intel Corporation Secure virtual machine monitor to tear down a secure execution environment
US7330942B2 (en) 2004-07-31 2008-02-12 Hewlett-Packard Development Company, L.P. Method for efficient virtualization of physical memory in a virtual-machine monitor
US7334076B2 (en) 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US20060294288A1 (en) 2005-06-24 2006-12-28 Rohit Seth System and method for using protection keys to emulate a large region identifier space
JP2007004661A (ja) 2005-06-27 2007-01-11 Hitachi Ltd 仮想計算機の制御方法及びプログラム
US8423747B2 (en) 2008-06-30 2013-04-16 Intel Corporation Copy equivalent protection using secure page flipping for software components within an execution environment
US7545381B2 (en) 2005-11-10 2009-06-09 Via Technologies, Inc. Interruptible GPU and method for context saving and restoring
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US7702743B1 (en) 2006-01-26 2010-04-20 Symantec Operating Corporation Supporting a weak ordering memory model for a virtual physical address space that spans multiple nodes
US7950020B2 (en) 2006-03-16 2011-05-24 Ntt Docomo, Inc. Secure operating system switching
US8074026B2 (en) * 2006-05-10 2011-12-06 Intel Corporation Scatter-gather intelligent memory architecture for unstructured streaming data on multiprocessor systems
US7870336B2 (en) 2006-11-03 2011-01-11 Microsoft Corporation Operating system protection against side-channel attacks on secrecy
US8380987B2 (en) 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
US8001336B2 (en) 2007-03-02 2011-08-16 International Business Machines Corporation Deterministic memory management in a computing environment
KR101396831B1 (ko) * 2007-03-30 2014-05-21 삼성전자주식회사 메모리 접근 제어 방법
KR100874948B1 (ko) 2007-06-18 2008-12-19 한국전자통신연구원 권한 수준 위반 프로세스 관리 장치 및 방법
WO2009001153A1 (en) 2007-06-28 2008-12-31 Nokia Corporation Memory protection unit in a virtual processing environment
US7856536B2 (en) * 2007-10-05 2010-12-21 International Business Machines Corporation Providing a process exclusive access to a page including a memory address to which a lock is granted to the process
US8195912B2 (en) 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US7966453B2 (en) 2007-12-12 2011-06-21 International Business Machines Corporation Method and apparatus for active software disown of cache line's exlusive rights
US8099541B2 (en) * 2008-01-22 2012-01-17 Globalfoundries Inc. Minivisor entry point in virtual machine monitor address space
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
JP4643702B2 (ja) 2008-10-27 2011-03-02 株式会社東芝 マイクロプロセッサ
US9077654B2 (en) 2009-10-30 2015-07-07 Iii Holdings 2, Llc System and method for data center security enhancements leveraging managed server SOCs
CN101667144B (zh) * 2009-09-29 2013-02-13 北京航空航天大学 一种基于共享内存的虚拟机通信方法
GB2474666B (en) * 2009-10-21 2015-07-15 Advanced Risc Mach Ltd Hardware resource management within a data processing system
US20110289294A1 (en) 2009-12-14 2011-11-24 Manabu Maeda Information processing apparatus
US8793439B2 (en) 2010-03-18 2014-07-29 Oracle International Corporation Accelerating memory operations using virtualization information
US9063868B2 (en) * 2010-05-24 2015-06-23 Panasonic Intellectual Property Corporation Of America Virtual computer system, area management method, and program
US8392628B2 (en) * 2010-07-16 2013-03-05 Hewlett-Packard Development Company, L.P. Sharing memory spaces for access by hardware and software in a virtual machine environment
US10013058B2 (en) 2010-09-21 2018-07-03 Apple Inc. Touch-based user interface with haptic feedback
GB2483907A (en) 2010-09-24 2012-03-28 Advanced Risc Mach Ltd Privilege level switching for data processing circuitry when in a debug mode
US9152573B2 (en) * 2010-11-16 2015-10-06 Vmware, Inc. Sharing memory pages having regular expressions within a virtual machine
JP5981845B2 (ja) 2011-03-02 2016-08-31 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路
BR112014003390A2 (pt) * 2011-08-30 2017-02-21 Hewlett Packard Development Co Lp sistema de computação, método para lidar com pedidos de gerenciamento de sistema em um sistema de computação e meio lido por computador
US20130070513A1 (en) 2011-09-16 2013-03-21 Advanced Micro Devices, Inc. Method and apparatus for direct backup of memory circuits
EP2788864B1 (en) * 2011-12-07 2016-09-21 Intel Corporation Techniques to prelink software to improve memory de-duplication in a virtual system
GB2497736A (en) 2011-12-16 2013-06-26 St Microelectronics Ltd Hardware monitor with context selector for selecting from multiple contexts
US9535827B2 (en) 2011-12-29 2017-01-03 Intel Corporation RAM disk using non-volatile random access memory
US9286245B2 (en) 2011-12-30 2016-03-15 Intel Corporation Hardware enforced memory access permissions
DE102012201225A1 (de) 2012-01-27 2013-08-01 Continental Automotive Gmbh Rechnersystem
TWI480733B (zh) 2012-03-29 2015-04-11 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
JP5914145B2 (ja) 2012-05-01 2016-05-11 ルネサスエレクトロニクス株式会社 メモリ保護回路、処理装置、およびメモリ保護方法
US9037558B2 (en) 2012-05-25 2015-05-19 International Business Machines Corporation Management of long-running locks and transactions on database tables
US8825550B2 (en) 2012-08-23 2014-09-02 Amazon Technologies, Inc. Scaling a virtual machine instance
US10514938B2 (en) 2012-12-18 2019-12-24 Dynavisor, Inc. Making direct calls to a native device driver of a hypervisor using dynamic device driver virtualization
US9747052B2 (en) 2013-02-05 2017-08-29 Arm Limited Virtualisation supporting guest operating systems using memory protection units to determine permission of a memory access operation for a physical address
CN104246721B (zh) 2013-03-29 2017-02-22 株式会社东芝 存储系统、存储控制器及存储控制方法
GB2514107B (en) 2013-05-13 2020-07-29 Advanced Risc Mach Ltd Page table data management
GB2515536A (en) 2013-06-27 2014-12-31 Ibm Processing a guest event in a hypervisor-controlled system
US20150268985A1 (en) 2014-03-24 2015-09-24 Freescale Semiconductor, Inc. Low Latency Data Delivery
US9575778B2 (en) 2014-05-20 2017-02-21 Via Alliance Semiconductor Co., Ltd. Dynamically configurable system based on cloud-collaborative experimentation
US9589105B2 (en) 2015-03-25 2017-03-07 International Business Machines Corporation Securing protected health information based on software designation
GB2539436B (en) * 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090228673A1 (en) * 2008-03-04 2009-09-10 Microsoft Corporation Fine Granularity Hierarchiacal Memory Protection
US20110314224A1 (en) * 2010-06-16 2011-12-22 Arm Limited Apparatus and method for handling access operations issued to local cache structures within a data processing apparatus
US20120079254A1 (en) * 2010-09-24 2012-03-29 Arm Limited Debugging of a data processing apparatus
JP2014532201A (ja) * 2011-10-13 2014-12-04 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 仮想ゲストのメモリ保護の方法、システムおよびコンピュータプログラム
US20140230077A1 (en) * 2013-02-14 2014-08-14 International Business Machines Corporation Instruction set architecture with secure clear instructions for protecting processing unit architected state information

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Seongwook Jin 외 3명. Architectural Support for Secure Virtualization under a Vulnerable Hypervisor. 2011년* *

Also Published As

Publication number Publication date
GB201510533D0 (en) 2015-07-29
GB2539435B8 (en) 2018-02-21
KR102517506B1 (ko) 2023-04-04
TW201710913A (zh) 2017-03-16
EP3311282A1 (en) 2018-04-25
US10802729B2 (en) 2020-10-13
IL255546B (en) 2020-02-27
JP6913636B2 (ja) 2021-08-04
CN107771323B (zh) 2022-07-22
GB2539435A (en) 2016-12-21
IL255546A (en) 2018-01-31
WO2016203190A1 (en) 2016-12-22
GB2539435B (en) 2017-11-15
JP2018523210A (ja) 2018-08-16
US20180150251A1 (en) 2018-05-31
TWI740825B (zh) 2021-10-01
CN107771323A (zh) 2018-03-06

Similar Documents

Publication Publication Date Title
KR102517506B1 (ko) 공유 페이지
KR102592380B1 (ko) 보안 초기화
KR102592377B1 (ko) 보호된 예외 핸들링
US11314658B2 (en) Apparatus and method including an ownership table for indicating owner processes for blocks of physical addresses of a memory
JP6738354B2 (ja) アドレス変換

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant