KR20220148323A - 복수의 물리적 어드레스 공간들을 사용하는 장치 및 방법 - Google Patents

복수의 물리적 어드레스 공간들을 사용하는 장치 및 방법 Download PDF

Info

Publication number
KR20220148323A
KR20220148323A KR1020227036741A KR20227036741A KR20220148323A KR 20220148323 A KR20220148323 A KR 20220148323A KR 1020227036741 A KR1020227036741 A KR 1020227036741A KR 20227036741 A KR20227036741 A KR 20227036741A KR 20220148323 A KR20220148323 A KR 20220148323A
Authority
KR
South Korea
Prior art keywords
physical address
domain
address space
domains
physical
Prior art date
Application number
KR1020227036741A
Other languages
English (en)
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 KR20220148323A publication Critical patent/KR20220148323A/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
    • G06F12/1441Protection 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 range
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • 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/145Protection 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 virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/152Virtualized environment, e.g. logically partitioned system
    • 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/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Small-Scale Networks (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

프로세싱 회로부(10)는 적어도 3개의 도메인들(82, 84, 86, 88) 중 하나의 도메인에서 프로세싱을 수행한다. 어드레스 변환 회로부(16)는 현재 도메인으로부터 수행되는 메모리 액세스의 가상 어드레스를 적어도 현재 도메인에 기초하여 선택된 복수의 물리적 어드레스 공간들(61) 중 하나의 물리적 어드레스 공간 내의 물리적 어드레스로 변환한다. 도메인들은 다른 도메인들 사이의 스위칭을 관리하기 위한 루트 도메인(82)을 포함한다. 물리적 어드레스 공간들(61)은 다른 도메인들과 연관된 물리적 어드레스 공간들과 별개인, 루트 도메인(82)과 연관된 루트 물리적 어드레스 공간을 포함한다.

Description

복수의 물리적 어드레스 공간들을 사용하는 장치 및 방법
본 발명은 데이터 프로세싱의 분야에 관한 것이다.
데이터 프로세싱 시스템은 메모리 액세스 요청의 가상 어드레스(virtual address, VA)를 메모리 시스템 내에서 액세스될 위치에 대응하는 물리적 어드레스(physical address, PA)로 변환하기 위한 어드레스 변환 회로부를 가질 수 있다.
적어도 일부 예들은 장치를 제공하며, 장치는, 적어도 3개의 도메인들 중 하나의 도메인에서 프로세싱을 수행하기 위한 프로세싱 회로부; 및 현재 도메인으로부터 수행되는 메모리 액세스의 가상 어드레스를 적어도 현재 도메인에 기초하여 선택된 복수의 물리적 어드레스 공간(physical address space, PAS)들 중 하나의 물리적 어드레스 공간 내의 물리적 어드레스로 변환하기 위한 어드레스 변환 회로부를 포함하고, 여기서, 적어도 3개의 도메인들은 적어도 3개의 도메인들 중 복수의 다른 도메인들 사이의 스위칭을 관리하기 위한 루트 도메인을 포함하고, 복수의 물리적 어드레스 공간들은 복수의 다른 도메인들과 연관된 물리적 어드레스 공간들과 별개인, 루트 도메인과 연관된 루트 물리적 어드레스 공간을 포함한다.
적어도 일부 예들은 데이터 프로세싱 방법을 제공하고, 데이터 프로세싱 방법은, 적어도 3개의 도메인들 중 하나의 도메인에서 프로세싱을 수행하는 단계; 및 현재 도메인으로부터 수행되는 메모리 액세스의 가상 어드레스를 적어도 현재 도메인에 기초하여 선택된 복수의 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간 내의 물리적 어드레스로 변환하는 단계를 포함하고, 여기서, 적어도 3개의 도메인들은 적어도 3개의 도메인들 중 복수의 다른 도메인들 사이의 스위칭을 관리하기 위한 루트 도메인을 포함하고, 복수의 물리적 어드레스 공간들은 복수의 다른 도메인들과 연관된 물리적 어드레스 공간들과 별개인, 루트 도메인과 연관된 루트 물리적 어드레스 공간을 포함한다.
적어도 일부 예들은 타깃 코드의 실행을 위한 명령어 실행 환경을 제공하기 위해 호스트 데이터 프로세싱 장치를 제어하기 위한 컴퓨터 프로그램을 제공하며, 컴퓨터 프로그램은, 적어도 3개의 도메인들 중 하나의 도메인에서 타깃 코드의 프로세싱을 시뮬레이션하기 위한 프로세싱 프로그램 로직(processing program logic); 및 현재 도메인으로부터 수행되는 메모리 액세스의 가상 어드레스를 적어도 현재 도메인에 기초하여 선택된 복수의 시뮬레이션된 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간 내의 물리적 어드레스로 변환하기 위한 어드레스 변환 프로그램 로직을 포함하고, 여기서, 적어도 3개의 도메인들은 적어도 3개의 도메인들 중 복수의 다른 도메인들 사이의 스위칭을 관리하기 위한 루트 도메인을 포함하고, 복수의 시뮬레이션된 물리적 어드레스 공간들은 복수의 다른 도메인들과 연관된 시뮬레이션된 물리적 어드레스 공간들과 별개인, 루트 도메인과 연관된 루트 시뮬레이션된 물리적 어드레스 공간을 포함한다.
적어도 일부 예들은 전술한 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 저장 매체를 제공한다. 컴퓨터 판독가능 저장 매체는 비일시적 저장 매체 또는 일시적 저장 매체일 수 있다.
본 기법의 추가의 태양들, 특징들 및 이점들은 첨부 도면과 관련하여 읽혀질 예들의 하기의 설명으로부터 명백해질 것이다.
도 1은 데이터 프로세싱 장치의 예를 예시한다.
도 2는 프로세싱 회로부가 동작할 수 있는 다수의 도메인들을 예시한다.
도 3은 입상 보호 룩업(granule protection lookup)들을 지원하는 프로세싱 시스템의 예를 예시한다.
도 4는 메모리 시스템 내의 위치들을 식별하는 시스템 물리적 어드레스 공간 상에서의 다수의 물리적 어드레스 공간들의 에일리어싱(aliasing)을 개략적으로 예시한다.
도 5는, 상이한 아키텍처적(architectural) 물리적 어드레스 공간들이 시스템 물리적 어드레스 공간의 각각의 부분들에 액세스하도록, 실제의 하드웨어 물리적 어드레스 공간을 파티셔닝(partitioning)하는 예를 예시한다.
도 6은 프로세싱 회로부의 동작의 현재 도메인을 결정하는 방법을 예시하는 흐름도이다.
도 7은 가상 어드레스들을 물리적 어드레스들로 변환하는 데 사용되는 페이지 테이블 엔트리들에 대한 페이지 테이블 엔트리 포맷들의 예들을 도시한다.
도 8은 주어진 메모리 액세스 요청에 의해 액세스될 물리적 어드레스 공간을 선택하는 방법을 도시하는 흐름도이다.
도 9는, 어느 물리적 어드레스 공간들이 주어진 물리적 어드레스에 액세스하기 위해 허용되는지를 나타내는 입상 보호 정보를 제공하기 위한 입상 보호 테이블의 엔트리의 예를 예시한다.
도 10은 입상 보호 룩업을 수행하는 방법을 도시하는 흐름도이다.
도 11은 다수의 어드레스 변환 스테이지들 및 입상 보호 정보 필터링을 예시한다.
도 12는 캐시 무효화 명령어의 프로세싱을 예시하는 흐름도이다.
도 13은 물리적 에일리어싱의 지점(point of physical aliasing, PoPA)까지-캐시-무효화(cache-invalidate-to-PoPA) 명령어의 프로세싱을 예시하는 흐름도이다.
도 14는 데이터 프로세싱 시스템의 예를 예시한다.
도 15는 사용될 수 있는 시뮬레이터 예를 도시한다.
물리적 어드레스 공간들에 대한 액세스 제어
데이터 프로세싱 시스템들은 가상 메모리의 사용을 지원할 수 있으며, 여기서, 어드레스 변환 회로부가 메모리 액세스 요청에 의해 특정된 가상 어드레스를 액세스될 메모리 시스템 내의 위치와 연관된 물리적 어드레스로 변환하기 위해 제공된다. 가상 어드레스들과 물리적 어드레스들 사이의 맵핑들은 하나 이상의 페이지 테이블 구조들에 정의될 수 있다. 페이지 테이블 구조들 내의 페이지 테이블 엔트리들은 또한, 프로세싱 회로부 상에서 실행되는 주어진 소프트웨어 프로세스가 특정 가상 어드레스에 액세스하도록 허용되는지를 제어할 수 있는 일부 액세스 허가 정보를 정의할 수 있다.
일부 프로세싱 시스템들에서, 모든 가상 어드레스들은 어드레스 변환 회로부에 의해, 액세스될 메모리 내의 위치들을 식별하기 위해 메모리 시스템에 의해 사용되는 단일 물리적 어드레스 공간 상으로 맵핑될 수 있다. 그러한 시스템에서, 특정 소프트웨어 프로세스가 특정 어드레스에 액세스할 수 있는지에 대한 제어는 단독으로 가상 어드레스-대-물리적 어드레스 변환 맵핑들을 제공하는 데 사용되는 페이지 테이블 구조들에 기초하여 제공된다. 그러나, 그러한 페이지 테이블 구조들은 전형적으로 운영 체제 및/또는 하이퍼바이저(hypervisor)에 의해 정의될 수 있다. 운영 체제 또는 하이퍼바이저가 손상된 경우, 이는, 공격자가 민감한 정보에 액세스할 수 있게 되는 보안 누출(security leak)을 야기할 수 있다.
따라서, 소정 프로세스들이 다른 프로세스들로부터 격리되어 안전하게 실행될 필요가 있는 일부 시스템들의 경우, 시스템은 다수의 도메인들에서의 동작을 지원할 수 있고 다수의 개별적인 물리적 어드레스 공간들이 지원될 수 있으며, 여기서, 메모리 시스템의 적어도 일부 컴포넌트들에 대해서는, 가상 어드레스들이 상이한 물리적 어드레스 공간들 내의 물리적 어드레스들로 변환되는 메모리 액세스 요청들이, 각각의 물리적 어드레스 공간들 내의 물리적 어드레스들이 실제로는 메모리 내의 동일한 위치에 대응하더라도, 그들이 메모리 내의 완전히 별개인 어드레스들에 액세스하고 있는 것처럼 취급된다. 프로세싱 회로부의 상이한 동작 도메인들로부터의 액세스들을 일부 메모리 시스템 컴포넌트들에 대해 볼 때처럼 각각의 개별적인 물리적 어드레스 공간들로 격리시킴으로써, 이는 운영 체제 또는 하이퍼바이저에 의해 설정된 페이지 테이블 허가 정보에 의존하지 않는 더 강한 보안 보장을 제공할 수 있다.
프로세싱 회로부는, 프로세싱 회로부가 동작할 수 있는 다른 도메인들 사이의 스위칭을 관리하는 것을 담당하는 루트 도메인에서의 프로세싱을 지원할 수 있다. 스위칭을 제어하기 위한 전용 루트 도메인을 제공함으로써, 이는 하나의 도메인에서 실행되는 코드가 다른 도메인으로의 스위칭을 트리거할 수 있는 정도를 제한함으로써 보안을 유지하는 것을 도울 수 있다. 예를 들어, 루트 도메인은 도메인의 스위칭이 요청될 때 다양한 보안 체크들을 수행할 수 있다.
따라서, 프로세싱 회로부는, 프로세싱이 적어도 3개의 도메인들, 즉, 루트 도메인 및 적어도 2개의 다른 도메인들 중 하나의 도메인에서 수행되는 것을 지원할 수 있다. 어드레스 변환 회로부는 현재 도메인으로부터 수행되는 메모리 액세스의 가상 어드레스를 적어도 현재 도메인에 기초하여 선택된 복수의 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간 내의 물리적 어드레스로 변환시킬 수 있다.
후술되는 예들에서, 복수의 물리적 어드레스 공간들은 다른 도메인들과 연관된 물리적 어드레스 공간들과 별개인, 루트 도메인과 연관된 루트 물리적 어드레스 공간을 포함한다. 따라서, 다른 도메인들 중 하나의 도메인과 연관된 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간을 사용하기보다는, 루트 도메인은 그것에 할당된 그 자신의 물리적 어드레스 공간을 갖는다. 다른 도메인들과 연관된 물리적 어드레스 공간들로부터 격리된 전용 루트 물리적 어드레스 공간을 제공함으로써, 이는 루트 도메인과 연관된 데이터 또는 코드에 대한 더 강한 보안 보장을 제공할 수 있으며, 이는, 그것이 다른 도메인들에의 엔트리를 관리할 것임을 고려하면, 보안에 가장 중요한 것으로 간주될 수 있다. 또한, 다른 도메인들의 물리적 어드레스 공간들과 구별되는 전용 루트 물리적 어드레스 공간의 제공은, 그것이 각각의 물리적 어드레스 공간들 내의 물리적 어드레스들의, 하드웨어 메모리 저장소의 특정 유닛들에의 할당을 단순화할 수 있기 때문에, 시스템 개발을 단순화할 수 있다. 예를 들어, 별개의 루트 물리적 어드레스 공간을 식별함으로써, 루트 도메인과 연관된 데이터 또는 프로그램 코드가 덜 안전한 오프-칩(off-chip) 메모리가 아닌 보호되는 메모리 온-칩(on-chip)에 우선적으로 저장되는 것이 더 단순해질 수 있으며, 이때, 루트 도메인의 코드 또는 데이터가 다른 도메인과 공유되는 공통 어드레스 공간에 저장되었을 경우보다, 루트 도메인과 연관된 부분들을 결정하는 데 오버헤드가 더 적어진다.
루트 물리적 어드레스 공간은 루트 도메인으로부터 배타적으로 액세스가능할 수 있다. 따라서, 프로세싱 회로부가 다른 도메인들 중 하나의 도메인에서 동작하고 있을 때, 프로세싱 회로부는 루트 물리적 어드레스 공간에 액세스할 수 없을 수 있다. 이것은, 다른 도메인들 중 하나의 도메인에서 실행되는 코드가, 도메인들 사이의 스위칭을 관리하기 위한 또는 프로세싱 회로부가 다른 도메인들 중 하나의 도메인에 있을 때 어떤 권한들을 갖는지를 제어하기 위한 루트 도메인에 의존하는 데이터 또는 프로그램 코드를 조작(tampering)할 수 없음을 보장함으로써 보안을 개선한다.
한편, 복수의 물리적 어드레스 공간들 모두는 루트 도메인으로부터 액세스가능할 수 있다. 루트 도메인에서 실행되는 코드가 다른 도메인들 중 하나의 도메인에서 동작하는 코드를 제공하는 임의의 파티(party)에 의해 신뢰되어야 하기 때문에(이는, 루트 도메인 코드가 그 파티의 코드가 실행되고 있는 그 특정 도메인으로의 스위칭을 담당할 것이기 때문임), 본질적으로 루트 도메인은 모든 물리적 어드레스 공간들에 액세스하도록 신뢰될 수 있다. 물리적 어드레스 공간들 모두를 루트 도메인으로부터 액세스가능하게 만드는 것은 메모리 영역들을 도메인 내외로 전이하는 것, 예를 들어, 부트(boot) 동안, 코드 및 데이터를 일정 도메인으로 복사하는 것, 및 그 도메인에 서비스들을 제공하는 것과 같은 기능들을 수행할 수 있게 한다.
어드레스 변환 회로부는 현재 도메인에 따라 어느 물리적 어드레스 공간들이 액세스가능한지를 제약할 수 있다. 특정 물리적 어드레스 공간이 현재 도메인에 액세스가능할 때, 이는, 어드레스 변환 회로부가 현재 도메인으로부터 발행된 메모리 액세스에 대해 특정된 가상 어드레스를 그 특정 물리적 어드레스 공간 내의 물리적 어드레스로 변환하는 것이 가능함을 의미한다. 이는 메모리 액세스가 허용될 것임을 반드시 암시하지는 않는데, 그 이유는, 특정 메모리 액세스가 그의 가상 어드레스를 특정 물리적 어드레스 공간의 물리적 어드레스로 변환할 수 있더라도, 그 물리적 어드레스가 그 특정 물리적 어드레스 공간 내에서 실제로 액세스되도록 허용되는지 여부를 결정하기 위한 추가의 체크들이 수행될 수 있기 때문이다. 이는, 각각의 물리적 어드레스 공간들 사이의 물리적 어드레스들의 파티셔닝을 정의하는 입상 보호 정보를 참조하여 아래에서 추가로 논의된다. 그럼에도 불구하고, 물리적 어드레스 공간들의 어느 서브세트가 현재 도메인에 액세스가능한지를 제약함으로써, 이는 더 강한 보안 보장을 제공할 수 있다.
일부 예들에서, 프로세싱 회로부는 루트 도메인에 더하여, 2개의 추가적인 도메인들을 지원할 수 있다. 예를 들어, 다른 도메인들은 안전한 물리적 어드레스 공간과 연관된 안전한 도메인 및 덜 안전한 물리적 어드레스 공간과 연관된 덜 안전한 도메인을 포함할 수 있다. 덜 안전한 물리적 어드레스 공간은 덜 안전한 도메인, 안전한 도메인 및 루트 도메인 각각으로부터 액세스가능할 수 있다. 안전한 물리적 어드레스 공간은 안전한 도메인 및 루트 도메인으로부터 액세스가능할 수 있지만, 덜 안전한 도메인으로부터는 액세스불가능할 수 있다. 루트 도메인은 루트 도메인에 대해서는 액세스가능할 수 있지만, 덜 안전한 도메인 및 안전한 도메인에 대해서는 액세스불가능할 수 있다. 따라서, 이것은, 페이지 테이블들이 단독 보안 제어 메커니즘으로서 사용되었던 경우보다 더 강한 보안 보장들로, 안전한 도메인에서 실행되는 코드가, 그의 코드 또는 데이터가 덜 안전한 도메인에서 동작하는 코드에 의한 액세스로부터 보호될 수 있게 할 수 있다. 예를 들어, 더 강한 보안을 요구하는 코드의 부분들은 덜 안전한 도메인에서 동작하는 안전하지 않은 운영 체제와는 개별적인 신뢰되는 운영 체제에 의해 관리되는 안전한 도메인에서 실행될 수 있다. 그러한 안전한 및 덜 안전한 도메인들을 지원하는 시스템의 예는 영국 캠브리지 소재의 Arm® Limited에 의해 제공되는 TrustZone® 아키텍처 특징부를 지원하는 프로세싱 아키텍처에 따라 동작하는 프로세싱 시스템들일 수 있다. 종래의 TrustZone® 구현예들에서, 안전한 도메인과 덜 안전한 도메인 사이의 스위칭을 관리하기 위한 모니터 코드는 안전한 도메인에 의해 사용되는 동일한 안전한 물리적 어드레스 공간을 사용한다. 대조적으로, 전술한 바와 같이 다른 도메인들의 스위칭을 관리하기 위해 루트 도메인을 제공하고 루트 도메인에 의해 사용될 전용 루트 물리적 어드레스 공간을 할당함으로써, 이는 보안을 개선하고 시스템 개발을 단순화하는 것을 돕는다.
그러나, 다른 예들에서, 다른 도메인들은 추가의 도메인들, 예를 들어, 루트 도메인에 더하여 적어도 3개의 다른 도메인들을 포함할 수 있다. 이러한 도메인들은 앞서 논의된 안전한 도메인 및 덜 안전한 도메인을 포함할 수 있지만, 추가의 물리적 어드레스 공간과 연관된 적어도 하나의 추가의 도메인을 또한 포함할 수 있다. 덜 안전한 물리적 어드레스 공간은 또한 추가의 도메인으로부터 액세스가능할 수 있는 반면, 추가의 물리적 어드레스 공간은 추가의 도메인 및 루트 도메인으로부터는 액세스가능할 수 있지만, 덜 안전한 도메인으로부터는 액세스불가능할 수 있다. 따라서, 안전한 도메인과 유사하게, 추가의 도메인은 덜 안전한 도메인보다 더 안전한 것으로 고려될 수 있고, 그들의 상호작용을 제한하기 위해 개별적인 물리적 어드레스 공간들과 연관된 각각의 월드(world)들로의 코드의 추가의 파티셔닝을 허용할 수 있다.
일부 예들에서, 각각의 도메인들은 계층구조를 가지며, 이에 따라, 그들은, 시스템이 덜 안전한 도메인으로부터 안전한 및 추가의 도메인들을 통해 루트 도메인으로 올라감에 따라, 증가하는 특권 레벨들과 연관될 수 있으며, 이때, 추가의 도메인은 안전한 도메인보다 더 특권이 주어진 것으로 고려되며, 이에 따라, 안전한 물리적 어드레스 공간에 액세스한다.
그러나, 소프트웨어 제공자에게, 동일한 하드웨어 플랫폼 상에서 실행되는 다른 소프트웨어와 연관된 다른 소프트웨어 제공자들을 신뢰할 필요성을 제한하는 안전한 컴퓨팅 환경을 제공하고자 하는 요구가 점점 더 증가하고 있다. 예를 들어, 모바일 결제 및 은행업무, 컴퓨터 게이밍에서의 부정행위 또는 해적행위 방지 메커니즘들의 시행, 운영 체제 플랫폼들에 대한 보안 향상들, 클라우드 시스템 내의 안전한 가상 머신 호스팅, 기밀 컴퓨팅 등과 같은 분야들에서 다수의 사용들이 있을 수 있으며, 여기서, 소프트웨어 코드를 제공하는 파티는 운영 체제 또는 하이퍼바이저(이전에 신뢰되는 것으로 고려되었을 수 있는 컴포넌트들)를 제공하는 파티를 신뢰하지 않으려고 할 수 있다. 전술한 TrustZone® 아키텍처에 기초한 시스템들과 같은, 각각의 물리적 어드레스 공간들을 갖는 안전한 및 덜 안전한 도메인들을 지원하는 시스템에서, 안전한 도메인에서 동작하는 안전한 컴포넌트들의 점유율이 증가함에 따라, 전형적으로 안전한 도메인에서 동작하는 소프트웨어의 세트는, 특정 실리콘 제공자에 의해 제공되는 실리콘 집적 회로 칩을 포함하는 컴포넌트들로부터 프로세싱 디바이스(예를 들어, 휴대 전화)를 조립하는 OEM(original equipment manufacturer), 디바이스 상에서 실행되는 운영 체제를 제공하는 OSV(operating system vendor), 및 클라우드 상에서 가상 머신들을 호스팅하기 위한 서버 공간을 제공하는 서버 팜(server farm)을 유지하는 클라우드 플랫폼 운영자(또는 클라우드 호스트)와 같은 파티들을 포함하는, 상이한 수의 소프트웨어 제공자들로부터 제공될 수 있는 다수의 소프웨어 조각들을 포함하도록 성장했다. 따라서, 도메인들이 엄격한 순서의 증가하는 특권으로 구현되는 경우, 문제가 있을 수 있는데, 그 이유는, 안전한 컴퓨팅 환경을 제공받기를 원하는 애플리케이션 레벨 코드를 제공하는 애플리케이션 제공자가 전통적으로 안전한 도메인을 실행하는 소프트웨어를 제공해왔을 수 있는 파티(예를 들어, OSV, OEM 또는 클라우드 호스트)를 신뢰하기를 원하지 않을 수 있지만, 마찬가지로, 안전한 도메인에서 동작하는 코드를 제공하는 파티들이 덜 특권이 주어진 도메인들과 연관된 데이터에 대한 액세스가 주어진 더 높은 특권의 도메인에서 동작하는 코드를 제공하도록 애플리케이션 제공자들을 신뢰하기를 원하지 않을 수 있기 때문이다. 따라서, 연속적으로 증가하는 특권의 도메인들의 엄격한 계층구조가 적절하지 않을 수 있다고 인식된다.
따라서, 아래의 더 상세한 예들에서, 추가의 도메인은 안전한 도메인에 직교(orthogonal)한다고 고려될 수 있다. 추가의 도메인 및 안전한 도메인이 각각 덜 안전한 물리적 어드레스 공간에 액세스할 수 있지만, 추가의 도메인과 연관된 추가의 물리적 어드레스 공간은 안전한 도메인으로부터 액세스불가능한 한편, 안전한 도메인과 연관된 안전한 물리적 어드레스 공간은 추가의 도메인으로부터 액세스불가능하다. 루트 도메인은 안전한 도메인 및 추가의 도메인 둘 모두와 연관된 물리적 어드레스 공간들에 여전히 액세스할 수 있다.
따라서, 이러한 모델을 이용하면, 추가의 도메인(그의 일례가 이하의 예들에 설명된 구역 도메인(realm domain)임) 및 안전한 도메인은 서로에 대한 종속성을 갖지 않으므로 서로 신뢰할 필요가 없다. 안전한 도메인 및 추가의 도메인은 루트 도메인만을 신뢰할 필요가 있으며, 이는 그것이 다른 도메인들에의 엔트리를 관리하고 있으므로 본질적으로 신뢰된다.
아래의 예들이 단일 인스턴스의 추가의 도메인(구역 도메인)을 설명하지만, 안전한 도메인에 직교하는 추가의 도메인의 원리는, 안전한 도메인 및 적어도 2개의 추가의 도메인들 각각이 덜 안전한 물리적 어드레스 공간에 액세스할 수 있고, 루트 물리적 어드레스 공간에 액세스할 수 없고, 서로 연관된 물리적 어드레스 공간들에 액세스할 수 없도록, 다수의 추가의 도메인들을 제공하도록 확장될 수 있다는 것이 이해될 것이다.
덜 안전한 물리적 어드레스 공간은 프로세싱 회로부에 의해 지원되는 도메인들 모두로부터 액세스가능할 수 있다. 이는, 그것이 상이한 도메인들에서 실행되는 소프트웨어 사이의 데이터 또는 프로그램 코드의 공유를 용이하게 하기 때문에, 유용하다. 데이터 또는 코드의 특정 항목이 상이한 도메인들에서 액세스가능할 경우, 그것은, 그것이 모든 도메인들로부터 액세스될 수 있도록, 덜 안전한 물리적 어드레스 공간에 할당될 수 있다.
가상 어드레스를 물리적 어드레스로 변환할 때, 어드레스 변환 회로부는 적어도 하나의 페이지 테이블 엔트리에 기초하여 변환을 수행할 수 있다. 적어도, 현재 도메인이 프로세싱 회로부에 의해 지원되는 적어도 3개의 도메인들의 서브세트 중 하나의 도메인일 때, 어드레스 변환 회로부는, 현재 도메인 및 가상 어드레스의 물리적 어드레스로의 변환에 사용되는 적어도 하나의 페이지 테이블 엔트리에 특정된 물리적 어드레스 공간 선택 정보에 기초하여, 물리적 어드레스 공간들 중 어느 물리적 어드레스 공간이 물리적 어드레스가 주어진 메모리 액세스에 대해 변환되는 물리적 어드레스 공간으로서 사용될지를 선택할 수 있다. 따라서, 페이지 테이블 구조 내에 정의된 정보는, 현재 도메인으로부터 발행될 때, 어느 물리적 어드레스 공간이 주어진 메모리 액세스에 대해 선택되는지에 영향을 미칠 수 있다. 일부 도메인들의 경우, 페이지 테이블 엔트리에 특정된 물리적 어드레스 공간 선택 정보에 기초한 이러한 선택은 필요하지 않을 수 있다. 예를 들어, 현재 도메인이 전술한 덜 안전한 도메인인 경우, 모든 다른 어드레스 공간들이 덜 안전한 도메인에 대해 액세스불가능할 수 있으므로, 어드레스 변환에 사용되는 적어도 하나의 페이지 테이블 엔트리에 특정된 임의의 정보에 관계없이 덜 안전한 물리적 어드레스 공간이 선택될 수 있다.
그러나, 다른 도메인들의 경우, 그 도메인은 2개 이상의 상이한 물리적 어드레스 공간들 사이에서 선택할 가능성이 있다. 따라서, 이러한 도메인들의 경우, 그 액세스에 대해 어느 물리적 어드레스 공간이 사용되어야 하는지를 나타내는 주어진 어드레스 블록에 대한 정보를 페이지 테이블 엔트리에 정의하는 것이 유용할 수 있으며, 이에 따라, 주어진 소프트웨어 조각에 의해 보이는 가상 어드레스 공간의 상이한 부분들은 상이한 물리적 어드레스들에 맵핑될 수 있다.
예를 들어, 현재 도메인이 루트 도메인인 경우, 어드레스 변환 회로부는, 물리적 어드레스 공간 선택 정보가 루트 도메인으로부터 액세스가능한 적어도 3개의 물리적 어드레스 공간들 사이에서 선택하기 위한 적어도 2개의 비트들의 물리적 어드레스 공간 선택 정보를 포함하는, 루트-도메인 페이지 테이블 엔트리에 기초하여 가상 어드레스를 물리적 어드레스로 변환할 수 있다. 예를 들어, 루트 도메인, 덜 안전한 도메인 및 안전한 도메인을 지원하는 구현예에서, 루트-도메인 페이지 테이블 엔트리 내의 물리적 어드레스 공간 선택 정보는 이러한 3개의 물리적 어드레스 공간들 중 임의의 것 사이에서 선택할 수 있다. 또한 적어도 하나의 추가의 도메인을 갖는 구현예에서, 물리적 어드레스 공간 선택 정보는 루트 물리적 어드레스 공간, 안전한 물리적 어드레스 공간, 덜 안전한 물리적 어드레스 공간 및 적어도 하나의 추가의 물리적 어드레스 공간 중 임의의 것 사이에서 선택할 수 있다.
한편, 현재 도메인이 안전한 도메인 또는 추가의 도메인일 때, 물리적 어드레스 공간들의 선택은 더 제약될 수 있고, 따라서 루트 도메인에 비해 더 적은 비트들의 물리적 어드레스 공간 선택 정보가 필요할 수 있다. 예를 들어, 안전한 도메인에서, 물리적 어드레스 공간 선택 정보는 안전한 어드레스 공간과 덜 안전한 어드레스 공간 사이에서 선택할 수 있다(루트 물리적 어드레스 공간 및 추가의 물리적 어드레스 공간은 액세스불가능할 수 있기 때문임). 현재 도메인이 추가의 도메인일 때, 물리적 어드레스 공간 선택 정보는 추가의 물리적 어드레스 공간과 덜 안전한 물리적 어드레스 공간 사이에서 선택하는 데 사용될 수 있는데, 그 이유는, 안전한 물리적 어드레스 공간 및 루트 물리적 어드레스 공간이 액세스불가능할 수 있기 때문이다. 현재 도메인이 안전한 도메인 또는 추가의 도메인일 때 사용될 물리적 어드레스 공간을 선택하는 데 사용되는 페이지 테이블 엔트리들에 대하여, 이러한 선택을 하는 데 사용되는 물리적 어드레스 공간 선택 표시자는, 현재 도메인이 안전한 도메인인지 또는 추가의 도메인인지에 관계없이, 적어도 하나의 페이지 테이블 엔트리 내의 동일한 포지션(position)에서 인코딩될 수 있다. 이는 페이지 테이블 엔트리들의 인코딩을 더 효율적으로 만들고, 페이지 테이블 엔트리들의 그 부분을 해석하기 위한 하드웨어가 안전한 및 추가의 도메인들 둘 모두에 대해 재사용될 수 있게 하여, 회로 영역을 감소시킨다.
메모리 시스템은 물리적 에일리어싱의 지점(PoPA)을 포함할 수 있는데, 이는 동일한 메모리 시스템 자원에 대응하는 상이한 물리적 어드레스 공간들로부터의 에일리어싱하는 물리적 어드레스들이 그 메모리 시스템 자원을 고유하게 식별하는 단일 물리적 어드레스에 맵핑되는 지점이다. 메모리 시스템은 PoPA 윗쪽에 제공되는 적어도 하나의 PoPA-전 메모리 시스템 컴포넌트를 포함할 수 있으며, 이는 에일리어싱하는 물리적 어드레스들을 그들이 상이한 메모리 시스템 자원들에 대응하는 것처럼 취급한다.
예를 들어, 적어도 하나의 PoPA-전 메모리 시스템 컴포넌트는 별개의 엔트리들에 에일리어싱하는 물리적 어드레스들에 대한 데이터, 프로그램 코드 또는 어드레스 변환 정보를 캐싱할 수 있는 캐시 또는 변환 색인 버퍼를 포함할 수 있으며, 이에 따라, 동일한 메모리 시스템 자원이 상이한 물리적 어드레스 공간들로부터 액세스되도록 요청되는 경우, 액세스들은 별개의 캐시 또는 TLB 엔트리들이 할당되게 할 것이다. 또한, PoPA-전 메모리 시스템 컴포넌트는 각각의 마스터 디바이스들에서 캐싱된 정보 사이의 코히런시(coherency)를 유지하기 위해, 코히런트 상호접속부(coherent interconnect), 스누프 필터(snoop filter), 또는 다른 메커니즘과 같은 코히런시 제어 회로부를 포함할 수 있다. 코히런시 제어 회로부는 상이한 물리적 어드레스 공간들 내의 각각의 에일리어싱하는 물리적 어드레스들에 별개의 코히런시 상태들을 할당할 수 있다. 따라서, 에일리어싱하는 물리적 어드레스들은, 그들이 실제로 동일한 기본 메모리 시스템 자원에 대응하더라도, 코히런시를 유지할 목적으로 별개의 어드레스들로서 취급된다. 표면적으로는, 에일리어싱하는 물리적 어드레스들에 대해 개별적으로 코히런시를 추적하는 것은 코히런시의 손실의 문제를 야기하는 것으로 보일 수 있지만, 실제로 이는, 상이한 도메인들에서 동작하는 프로세스들이 실제로는 특정 메모리 시스템 자원에 대한 액세스를 공유하도록 의도되는 경우, 그들이 그 자원에 액세스하기 위해 덜 안전한 물리적 어드레스 공간을 사용(또는 다른 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간을 사용하여 자원에 액세스하기 위해 후술되는 제약적 공유 특징부를 사용)할 수 있기 때문에, 문제가 되지 않는다. PoPA-전 메모리 시스템 컴포넌트의 다른 예는 기밀성의 손실 및/또는 조작에 대해 오프-칩 메모리에 저장된 데이터를 보호하기 위해 제공되는 메모리 보호 엔진일 수 있다. 그러한 메모리 보호 엔진은, 예를 들어, 어느 물리적 어드레스 공간으로부터 자원이 액세스되는지에 따라 상이한 암호화 키들로 특정 메모리 시스템 자원과 연관된 데이터를 개별적으로 암호화하여, 에일리어싱하는 물리적 어드레스들을, 그들이 상이한 메모리 시스템 자원들에 대응하고 있던 것처럼 효과적으로 취급할 수 있다(예를 들어, 어드레스에 의존하는 암호화를 행하는 암호화 스킴이 사용될 수 있고, 물리적 어드레스 공간 식별자가 이러한 목적을 위해 어드레스의 일부라고 간주될 수 있음).
PoPA-전 메모리 시스템 컴포넌트의 형태에 관계없이, 그러한 PoPA 메모리 시스템 컴포넌트가 에일리어싱하는 물리적 어드레스들을, 그들이 상이한 메모리 시스템 자원들에 대응하는 것처럼 취급하는 것이 유용할 수 있는데, 그 이유는, 이것이 상이한 물리적 어드레스 공간들에 대해 발행되는 액세스들 사이의 하드웨어 시행 격리를 제공하여, 하나의 도메인과 연관된 정보가 캐시 타이밍 부채널들 또는 코히런시 제어 회로부에 의해 트리거되는 코히런시의 변경들을 수반하는 부채널들과 같은 특징부들에 의해 다른 도메인으로 누설될 수 없게 되기 때문이다.
일부 구현예들에서, 상이한 물리적 어드레스 공간들 내의 에일리어싱하는 물리적 어드레스들이 각각의 상이한 물리적 어드레스 공간들에 대한 상이한 수치적 물리적 어드레스 값들을 사용하여 표현되는 것이 가능할 수 있다. 이러한 접근법은, 상이한 물리적 어드레스 값들 중 어느 것이 동일한 메모리 시스템 자원에 대응하는지를 PoPA에서 결정하기 위한 맵핑 테이블을 요구할 수 있다. 그러나, 맵핑 테이블을 유지하는 것의 이러한 오버헤드는 불필요하다고 고려될 수 있으며, 이에 따라, 일부 구현예들에서, 그것은, 에일리어싱하는 물리적 어드레스들이 각각의 상이한 물리적 어드레스 공간들에서 동일한 수치적 물리적 어드레스 값을 사용하여 표현되는 물리적 어드레스들을 포함하는 경우, 더 단순할 수 있다. 이러한 접근법이 취해지는 경우, 물리적 에일리어싱의 지점에서, 단순히 어느 물리적 어드레스 공간이 메모리 액세스를 사용하여 액세스되는지를 식별하는 물리적 어드레스 공간 식별자를 폐기하고, 이어서 나머지 물리적 어드레스 비트들을 디에일리어싱된(de-aliased) 물리적 어드레스로서 아래쪽에 제공하는 것이 충분할 수 있다.
따라서, PoPA-전 메모리 시스템 컴포넌트에 더하여, 메모리 시스템은 또한, 적어도 하나의 아래쪽 메모리 시스템 컴포넌트에 제공될 디에일리어싱된 물리적 어드레스를 획득하기 위해 복수의 에일리어싱하는 물리적 어드레스들을 디에일리어싱하도록 구성된 PoPA 메모리 시스템 컴포넌트를 포함할 수 있다. PoPA 메모리 시스템 컴포넌트는, 전술한 바와 같이, 특정 어드레스 공간 내의 에일리어싱하는 어드레스에 대응하는 디에일리어싱된 어드레스들을 찾기 위해 맵핑 테이블에 액세스하는 디바이스일 수 있다. 그러나, PoPA 컴포넌트는 또한 단순히, 아래쪽에 제공되는 물리적 어드레스가, 이것이 어느 물리적 어드레스 공간으로부터 제공되었는지에 관계없이, 대응하는 메모리 시스템 자원을 고유하게 식별하도록, 주어진 메모리 액세스와 연관된 물리적 어드레스 태그가 폐기되는 메모리 시스템 내의 위치일 수 있다. 대안적으로, 일부 경우에, PoPA 메모리 시스템 컴포넌트가 (예를 들어, 아래에서 더 논의되는 바와 같이 컴플리터측 필터링(completer-side filtering)을 가능하게 할 목적으로) 물리적 어드레스 공간 태그를 적어도 하나의 아래쪽 메모리 시스템 컴포넌트에 여전히 제공할 수 있지만, PoPA는, 그것을 지난 아래쪽 메모리 시스템 컴포넌트들이 에일리어싱하는 물리적 어드레스들을 상이한 메모리 시스템 자원들로서 더 이상 취급하지 않지만, 에일리어싱하는 물리적 어드레스들 각각을 동일한 메모리 시스템 자원을 맵핑하도록 고려하는 메모리 시스템 내의 지점을 마킹(marking)할 수 있다. 예를 들어, 메모리 제어기 또는 PoPA 아래쪽의 하드웨어 메모리 저장 디바이스가 주어진 메모리 액세스 요청에 대한 물리적 어드레스 태그 및 물리적 어드레스를 수신하는 경우에, 이어서 그 물리적 어드레스가 이전에 보여진 트랜잭션과 동일한 물리적 어드레스에 대응하는 경우, (동일한 어드레스에 대한 액세스들을 병합하는 것과 같은) 동일한 물리적 어드레스에 액세스하는 각각의 트랜잭션들에 대해 수행되는 임의의 위험 체크 또는 성능 개선들이, 각각의 트랜잭션들이 상이한 물리적 어드레스 공간 태그들을 특정하더라도, 적용될 수 있다. 대조적으로, PoPA 위쪽의 메모리 시스템 컴포넌트의 경우, 동일한 물리적 어드레스에 액세스하는 트랜잭션들에 대해 취해진 그러한 위험 체크 또는 성능 개선 단계들은, 이러한 트랜잭션들이 상이한 물리적 어드레스 공간들에서 동일한 물리적 어드레스를 특정하는 경우에, 호출되지 않을 수 있다.
전술한 바와 같이, 적어도 하나의 PoPA-전 메모리 시스템 컴포넌트는 적어도 하나의 PoPA-전 캐시를 포함할 수 있다. 이는 데이터 캐시, 명령어 캐시 또는 통합 레벨 2, 레벨 3 또는 시스템 캐시일 수 있다.
프로세싱 회로부는 타깃 어드레스(이는 가상 어드레스 또는 물리적 어드레스일 수 있음)를 특정하는 PoPA까지-캐시-무효화 명령어를 지원할 수 있다. PoPA까지-캐시-무효화 명령어에 응답하여, 프로세싱 회로부는 적어도 하나의 PoPA-전 캐시가 타깃 어드레스에 대응하는 타깃 물리적 어드레스 값과 연관된 하나 이상의 엔트리들을 무효화하는 것을 요청하기 위한 적어도 하나의 무효화 명령을 발행할 수 있다. 대조적으로, 적어도 하나의 무효화 명령이 발행될 때, PoPA 아래쪽에 위치된 적어도 하나의 PoPA-후 캐시는 타깃 물리적 어드레스 값과 연관된 하나 이상의 엔트리들을 유지하도록 허용될 수 있다. 적어도 하나의 PoPA-전 캐시의 경우, 캐시는 적어도 하나의 무효화 명령에 의해 특정된 타깃 물리적 어드레스 값과 연관된 하나 이상의 엔트리들을, 물리적 어드레스 공간들 중 어느 물리적 어드레스 공간이 그러한 엔트리들과 연관되는지에 관계없이, 무효화할 수 있다. 따라서, 상이한 물리적 어드레스 공간들에서 동일한 어드레스 값을 갖는 물리적 어드레스들이, 그들이 PoPA-전 캐시들에 의해 상이한 물리적 어드레스들을 표현하는 것처럼 취급되더라도, PoPA까지-캐시-무효화 명령어에 의해 트리거되는 무효화들을 처리할 목적으로, 물리적 어드레스 공간 식별자는 무시될 수 있다.
따라서, 프로세싱 회로부가, 타깃 가상 어드레스에 대응하는 특정 물리적 어드레스와 연관된 임의의 캐싱된 엔트리들이 물리적 에일리어싱의 지점까지 임의의 캐시들에서 무효화되는 것을 요청할 수 있게 하는 한 형태의 캐시 무효화 명령어가 정의될 수 있다. 이러한 형태의 무효화 명령어는 메모리 시스템의 다른 지점들까지, 예를 들어, 코히런시의 지점(모든 관찰자들(예를 들어, 프로세서 코어들, 직접 메모리 액세스 엔진들 등)이 주어진 어드레스와 연관된 데이터의 동일한 복사본을 보는 것이 보장되는 지점)까지 캐시들에 영향을 미치는 캐싱된 엔트리들의 무효화들을 요청할 수 있는 다른 유형들의 무효화 명령어와는 상이할 수 있다. 물리적 에일리어싱의 지점까지의 무효화들을 요청하는 전용 형태의 명령어를 제공하는 것은, 특히 각각의 도메인들로의 어드레스 할당의 변경들을 관리할 수 있는 루트 도메인 코드에 대해 유용할 수 있다. 예를 들어, 어느 물리적 어드레스들이 주어진 물리적 어드레스 공간 내에서 액세스가능한지를 정의하는 입상 보호 정보를 업데이트할 때, 또는 특정 블록의 물리적 어드레스들을 상이한 물리적 어드레스 공간에 재할당할 때, 루트 도메인 코드는 PoPA까지-캐시-무효화 명령어를 사용하여, 액세스가능성이 입상 보호 정보의 오래된(out of date) 값에 의존하는 캐시 내에 상주하는 임의의 데이터, 코드 또는 다른 정보가, 후속 메모리 액세스들이 새로운 입상 보호 정보에 기초하여 정확하게 제어되는 것을 보장하기 위해 무효화되는 것을 보장할 수 있다. 일부 예들에서, 캐싱된 엔트리를 무효화하는 것에 더하여, 적어도 하나의 PoPA-전 캐시는 또한, 무효화될 엔트리와 연관된 임의의 더티 버전(dirty version)들의 데이터를 PoPA를 지나서 있는 메모리 시스템 내의 위치로 다시 기입하기 위해, 그 캐싱된 엔트리로부터 데이터를 클린(clean)할 수 있다. 일부 경우에, 클린하는 것이 요구되는지 또는 아닌지를 나타내기 위해 상이한 버전들의 PoPA까지-캐시-무효화 명령어가 지원될 수 있다.
타깃 물리적 어드레스가 보호되는 어드레스 영역 내에 있을 때, 선택된 물리적 어드레스 공간에 따라 선택된 다수의 암호화 키들 중 하나의 암호화 키에 기초하여 보호되는 영역과 연관된 데이터를 암호화 또는 복호화하기 위해, 선택된 물리적 어드레스 공간 및 선택된 물리적 어드레스 공간 내의 타깃 물리적 어드레스를 특정하는 메모리 액세스 요청에 응답하는 메모리 암호화 회로부가 제공될 수 있다. 일부 예들에서, 보호되는 어드레스 영역은 전체 물리적 어드레스 공간일 수 있는 반면, 다른 예들은 보호되는 어드레스 영역으로서의 소정 하위 영역들에만 암호화/복호화를 적용할 수 있다. 다른 도메인들과 연관된 물리적 어드레스 공간들과 별개인 전용 루트 물리적 어드레스 공간을 할당함으로써, 이는 메모리 암호화 회로부가 다른 도메인들에 비해 루트 도메인에 대해 상이한 암호화 키를 선택하는 것을 더 단순하게 하여, 보안을 개선시킨다. 유사하게, 모든 다른 도메인들에 대해 상이한 암호화 키들을 선택하는 것은 특정 도메인과 연관된 코드 또는 데이터 자산들의 더 강한 격리를 가능하게 한다.
하나의 특정 예에서, 장치는 프로세싱 회로부와 동일한 집적 회로 상에 적어도 하나의 온-칩 메모리를 가질 수 있고, 루트 물리적 어드레스 공간 내의 모든 유효한 물리적 어드레스들은, 오프-칩 메모리와는 별개로서, 적어도 하나의 온-칩 메모리에 맵핑될 수 있다. 이는 루트 도메인의 보안을 개선하는 것을 돕는다. 다른 도메인들로부터의 정보가 온-칩 메모리에 또한 저장될 수 있다는 것이 이해될 것이다. 별개의 루트 물리적 어드레스 공간의 제공은 메모리의 할당을 단순화하는데, 그 이유는, 루트 도메인이 안전한 도메인과 안전한 물리적 어드레스 공간을 공유하는 예에서는, 그 데이터 모두를 온-칩 메모리에 보유하기에는 안전한 도메인과 연관된 너무 많은 데이터가 있을 수 있고, 어느 특정 데이터 조각들이 루트 도메인과 연관되는지를 결정하기 어려울 수 있는 반면, 루트 도메인의 데이터(또는 코드)가 별개의 물리적 어드레스 공간 식별자로 플래깅되어 있을 때는, 이것을 파티셔닝하는 것이 훨씬 더 단순하기 때문이다.
그럼에도 불구하고, 다른 예들에서, 루트 물리적 어드레스 공간 내의 일부 어드레스들은 오프-칩 메모리에 맵핑되는 것이 가능하다. 메모리 암호화, 무결성 및 최신성 메커니즘(freshness mechanism)들이 오프-칩으로 저장된 루트 도메인 데이터를 보호하는 데 사용될 수 있다.
위에서 논의된 기법들은 위에서 논의된 바와 같은 기능들을 구현하기 위한 하드웨어 회로부 로직을 갖는 하드웨어 장치에서 구현될 수 있다. 따라서, 프로세싱 회로부 및 어드레스 변환 회로부는 하드웨어 회로 로직을 포함할 수 있다. 그러나, 다른 예들에서, 타깃 코드의 실행을 위한 명령어 실행 환경을 제공하도록 호스트 데이터 프로세싱 장치를 제어하기 위한 컴퓨터 프로그램에는, 상기 논의된 프로세싱 회로부 및 어드레스 변환 회로부에 등가의 기능들을 소프트웨어로 수행하는 프로세싱 프로그램 로직 및 어드레스 변환 프로그램 로직이 제공될 수 있다. 이는, 예를 들어, 특정 명령어 세트 아키텍처에 대해 기입된 타깃 코드가 그 명령어 세트 아키텍처를 지원하지 않을 수 있는 호스트 컴퓨터 상에서 실행될 수 있게 하는 데 유용할 수 있다. 따라서, 호스트 컴퓨터에 의해 제공되지 않는 명령어 세트 아키텍처에 의해 예상되는 기능성은, 타깃 코드가 명령어 세트 아키텍처를 실제로 지원하는 하드웨어 디바이스 상에서 실행되었을 경우에 예상될 바와 같이, 타깃 코드에 대해 등가의 명령어 실행 환경을 제공하는 시뮬레이션 소프트웨어에 의해 대신 에뮬레이팅될 수 있다. 따라서, 시뮬레이션을 제공하는 컴퓨터 프로그램은 전술한 적어도 3개의 도메인들 중 하나의 도메인에서의 프로세싱을 시뮬레이션하는 프로세싱 프로그램 로직, 및 가상 어드레스들을 적어도 현재 도메인에 기초하여 선택된 다수의 시뮬레이션된 물리적 어드레스 공간들 중 하나의 시뮬레이션된 물리적 어드레스 공간 내의 물리적 어드레스들로 변환하는 어드레스 변환 프로그램 로직을 포함할 수 있다. 하드웨어 디바이스에서와 같이, 적어도 3개의 도메인들은 다른 도메인들 사이의 스위칭을 관리하기 위한 루트 도메인을 포함할 수 있고, 루트 도메인은, 다른 도메인들과 연관된 시뮬레이션된 물리적 어드레스 공간들과 별개인, 그와 연관된 루트 시뮬레이션된 물리적 어드레스 공간을 가질 수 있다. 아키텍처의 시뮬레이션이 제공되는 접근법에 대하여, 어드레스 변환 프로그램 로직에 의해 선택된 각각의 물리적 어드레스 공간들은 시뮬레이션된 물리적 어드레스 공간들인데, 그 이유는, 그들이 실제로 호스트 컴퓨터의 하드웨어 컴포넌트들에 의해 식별되는 물리적 어드레스 공간들에 대응하는 것이 아니라, 호스트의 가상 어드레스 공간 내의 어드레스들에 맵핑될 것이기 때문이다. 그러한 시뮬레이션을 제공하는 것은, 예를 들어, 하나의 명령어 세트 아키텍처에 대해 기입된 레거시 코드(legacy code)가 상이한 명령어 세트 아키텍처를 지원하는 상이한 플랫폼 상에서 실행되는 것을 가능하게 하기 위한, 또는 새로운 버전의 명령어 세트 아키텍처를 지원하는 하드웨어 디바이스들이 아직 이용가능하지 않을 때 그 새로운 버전의 명령어 세트 아키텍처에 대해 실행되도록 새로운 소프트웨어의 소프트웨어 개발을 보조하기 위한(이는 새로운 버전의 아키텍처를 지원하는 하드웨어 디바이스들의 개발과 동시에 새로운 버전의 아키텍처를 위한 소프트웨어가 개발되기 시작할 수 있게 할 수 있음) 광범위한 목적들에 유용할 수 있다.
입상 보호 룩업들
메모리 액세스 요청의 가상 어드레스가 2개 이상의 개별적인 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간 내의 물리적 어드레스에 맵핑될 수 있는 시스템에서, 입상 보호 정보는 어느 물리적 어드레스들이 특정 물리적 어드레스 공간 내에서 액세스가능한지를 제한하는 데 사용될 수 있다. 이는, 온-칩 또는 오프-칩 중 어느 하나로 하드웨어에 구현된 소정 물리적 메모리 위치들이, 원하는 경우, 특정 물리적 어드레스 공간 또는 물리적 어드레스 공간들의 특정 서브세트 내의 액세스에 대해 제약될 수 있다는 것을 보장하는 데 유용할 수 있다.
그러한 제약들을 관리하기 위한 하나의 접근법에서, 주어진 물리적 어드레스가 특정 물리적 어드레스 공간으로부터 액세스될 수 있는지 여부에 대한 시행은 메모리 액세스 요청을 서비스하기 위해 컴플리터 디바이스에 또는 그 근처에 제공되는 컴플리터측 필터링 회로부를 사용하여 구현될 수 있다. 예를 들어, 컴플리터측 필터링 회로부는 메모리 제어기 또는 주변기기 제어기와 연관될 수 있다. 그러한 접근법에서, 메모리 액세스 요청들을 캐시로, 또는 요청자 디바이스로부터 컴플리터 디바이스로 트랜잭션들을 라우팅하기 위한 상호접속부로 발행하는 것은, 어느 물리적 어드레스들이 주어진 물리적 어드레스 공간 내에서 액세스가능한지를 정의하기 위한 정보의 어떠한 룩업에도 의존하지 않을 수 있다.
대조적으로, 아래에서 설명되는 예들에서, 입상 보호 룩업은, 액세스될 물리적 어드레스들의 타깃 입상과 연관된 적어도 하나의 허용된 물리적 어드레스 공간을 나타내는 입상 보호 정보의 룩업에 기초하여, 메모리 액세스 요청이 캐시 또는 상호접속부로 전달되도록 허용되는지를 체크하는 요청자측 필터링 회로부에 의해 수행된다. 입상 보호 정보의 각각의 항목들이 정의되는 물리적 어드레스 공간의 입상들은 어드레스 변환 회로부에 사용되는 페이지 테이블 구조에 사용되는 페이지들의 크기와 동일하거나 상이할 수 있는 특정 크기의 것일 수 있다. 일부 경우에, 입상들은 어드레스 변환 회로부에 대한 어드레스 변환 맵핑들을 정의하는 페이지들보다 더 큰 크기의 것일 수 있다. 대안적으로, 입상 보호 정보는 페이지 테이블 구조 내의 어드레스 변환 정보와 동일한 페이지 레벨 입도(granularity)에서 정의될 수 있다. 페이지 레벨 입도에서 입상 보호 정보를 정의하는 것은 편리할 수 있는데, 그 이유는, 이것이 이어서 메모리 저장 하드웨어의 어느 영역들이 특정 물리적 어드레스 공간들로부터 그리고 그에 따라 프로세싱 회로부의 특정 동작 도메인들로부터 액세스가능한지에 대한 더 미세한(fine-grained) 제어를 허용할 수 있기 때문이다.
따라서, 장치는 요청자 회로부에 의해 발행된 메모리 액세스 요청에 의해 특정된 타깃 가상 어드레스를 타깃 물리적 어드레스로 변환하기 위한 어드레스 변환 회로부, 및 메모리 액세스 요청이 캐시에 전달되도록 허용될지 또는 메모리 액세스 요청을 서비스하기 위해 컴플리터 디바이스와 통신하기 위한 상호접속부에 전달되도록 허용될지를 결정하기 위해, 메모리 액세스 요청과 연관된 타깃 물리적 어드레스 및 선택된 물리적 어드레스 공간에 기초하여 입상 보호 룩업을 수행하기 위한 요청자측 회로부를 가질 수 있다. 선택된 물리적 어드레스 공간은 복수의 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간일 수 있다. 입상 보호 룩업에서, 요청자측 필터링 회로부는,
타깃 물리적 어드레스를 포함하는 물리적 어드레스들의 타깃 입상에 대응하는 입상 보호 정보를 획득하도록 - 입상 보호 정보는 타깃 입상과 연관된 적어도 하나의 허용된 물리적 어드레스 공간을 나타냄 -; 그리고
입상 보호 정보가 선택된 물리적 어드레스 공간이 상기 적어도 하나의 허용된 물리적 어드레스 공간 중 하나의 물리적 어드레스 공간이 아님을 나타낼 때, 메모리 액세스 요청을 차단하도록 구성될 수 있다.
컴플리터측 대신에 상호접속부의 요청자측에서 입상 보호 룩업을 수행하는 것의 이점은, 이것이 어느 물리적 어드레스들이 주어진 물리적 어드레스 공간으로부터 액세스가능한지에 대하여, 컴플리터측에서 실시되는 것보다, 더 미세한 제어를 가능하게 할 수 있다는 것이다. 이는, 컴플리터측이 전형적으로 메모리 시스템에 전체적으로 액세스하는 비교적 제한된 능력을 가질 수 있기 때문이다. 예를 들어, 주어진 메모리 유닛에 대한 메모리 제어기는 그 메모리 유닛 내의 위치들에만 액세스할 수 있고, 다른 영역들의 어드레스 공간에는 액세스하지 못할 수 있다. 더 미세한 제어를 제공하는 것은 메모리 시스템에 저장될 수 있는 입상 보호 정보의 더 복잡한 테이블에 의존할 수 있고, 메모리 시스템의 더 넓은 서브세트에 대한 메모리 액세스 요청을 발행하는 더 큰 유연성이 있는 요청자측으로부터 그러한 테이블에 액세스하는 것이 더 실용적일 수 있다.
또한, 요청자측에서 입상 보호 룩업을 수행하는 것은 실행 시간에 입상 보호 정보를 동적으로 업데이트하는 능력을 가능하게 하는 것을 도울 수 있는데, 이는 부트 시간에 정의된 비교적 작은 양의 정적으로 정의된 데이터에 액세스하는 것으로 제약될 수 있는 컴플리터측 필터링 회로부에는 실용적이지 않을 수 있다.
요청자측 필터링 회로부의 다른 이점은, 이것이, 상호접속부가 동일한 입상 내의 상이한 어드레스들을 상이한 컴플리터 디바이스들(예를 들어, 상이한 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM) 유닛들)과 통신하는 상이한 컴플리터 포트들에 할당할 수 있게 할 것이란 것인데, 이는 성능에 효율적일 수 있지만, 메모리 액세스가 허용되는지를 검증하기 위해 입상 보호 룩업이 컴플리터측에서 수행될 수 있도록, 입상이 전체적으로 동일한 컴플리터 유닛에 관련될 필요가 있는 경우에는 비실용적일 수 있다.
따라서, 특정 물리적 어드레스가 주어진 메모리 액세스 요청에 대해 선택된 특정 물리적 어드레스 공간으로부터 액세스될 수 있는지를 구별하기 위한 입상 보호 룩업을, 컴플리터측 대신 요청자 측에서 수행하는 것에 대한 다수의 이점들이 있을 수 있다.
입상 보호 정보는 상이한 방식들로 표현될 수 있다. 일례에서, 입상 보호는 단일의 인접한 어드레스 블록에 저장된 단일의 선형으로 인덱싱된 테이블에 정의될 수 있으며, 이때, 특정 엔트리는 타깃 물리적 어드레스에 기초하여 선택된 그 블록 내에서 액세스된다. 그러나, 실제로, 입상 보호 정보는 전체 물리적 어드레스 공간에 대해 정의되지 않을 수 있으며, 이에 따라, 어드레스 변환에 사용되는 다중 레벨 페이지 테이블과 유사하게, 입상 보호 정보를 저장하는 데 다중 레벨 테이블 구조를 사용하는 것이 더 효율적일 수 있다. 그러한 다중 레벨 구조에서, 타깃 물리적 어드레스의 일부가 추가 레벨 입상 보호 테이블을 저장하는 메모리 내의 위치를 식별하는 포인터를 제공할 수 있는 레벨 1 입상 보호 테이블 엔트리를 선택하는 데 사용될 수 있다. 이어서, 타깃 물리적 어드레스의 다른 부분은 그 추가의 입상 보호 테이블의 어느 엔트리가 획득될 것인지를 선택할 수 있다. 제1 레벨을 지나 테이블의 하나 이상의 레벨들을 통해 반복한 후, 결국, 타깃 물리적 어드레스와 연관된 입상 보호 정보를 제공하는 입상 보호 테이블 엔트리가 획득될 수 있다.
입상 보호 정보를 저장하는 테이블에 대해 선택된 특정 구조에 관계없이, 입상 보호 정보는 물리적 어드레스 공간들 중 어느 물리적 어드레스 공간이 적어도 하나의 허용된 물리적 어드레스인지를 다수의 방식들로 표현할 수 있다. 하나의 접근법은, 물리적 어드레스 공간들 중 대응하는 하나의 물리적 어드레스 공간이 타깃 물리적 어드레스를 포함하는 물리적 어드레스들의 입상에 액세스하도록 허용되는지를 각각 나타내는 일련의 필드들을 제공하는 것일 수 있다. 예를 들어, 비트맵이 입상 보호 정보 내에 정의될 수 있으며, 이때, 비트맵의 각각의 비트는 대응하는 물리적 어드레스 공간이 그 입상에 대해 허용된 물리적 어드레스 공간인지 또는 허용되지 않은 물리적 어드레스 공간인지를 나타낸다.
그러나, 실제로, 대부분의 사용 사례들의 경우, 상당한 수의 물리적 어드레스 공간들이 주어진 물리적 어드레스에 액세스하도록 허용되는 것으로 예상될 가능성이 비교적 적을 수 있다. 물리적 어드레스 공간들에 대한 액세스를 제어하는 것에 대해 이전 섹션에서 논의된 바와 같이, 덜 안전한 물리적 어드레스 공간은 모든 도메인들에서 선택될 수 있으므로, 데이터 또는 코드가 그 수의 도메인들 사이에서 공유될 때 사용될 수 있으며, 이에 따라, 특정 물리적 어드레스가 이용가능한 물리적 어드레스 공간들 모두에 또는 그것의 상당한 부분에 맵핑될 필요가 없을 수 있다.
따라서, 비교적 효율적인 접근법은, 입상 보호 정보가 물리적 어드레스들의 타깃 입상에 할당되는, 할당된 물리적 어드레스 공간을 특정할 수 있고, 적어도 하나의 허용된 물리적 어드레스 공간이 그 특정 타깃 입상에 대한 입상 보호 정보에 의해 지정되는 할당된 물리적 어드레스 공간을 적어도 포함할 수 있는 것일 수 있다. 일부 구현예들에서, 입상 보호 정보는 할당된 물리적 어드레스 공간으로서 단일 물리적 어드레스 공간을 특정할 수 있다. 따라서, 일부 경우에, 입상 보호 정보는 물리적 어드레스들의 그 타깃 입상에 액세스하도록 허용되는 할당된 물리적 어드레스 공간으로서 작동하는 하나의 특정 물리적 어드레스 공간의 식별자를 포함할 수 있다.
일부 구현예들에서, 물리적 어드레스들의 타깃 입상에 액세스하도록 허용되는 물리적 어드레스 공간만이 할당된 물리적 어드레스 공간일 수 있고, 물리적 어드레스들의 타깃 입상은 임의의 다른 물리적 어드레스 공간으로부터 액세스되도록 허용되지 않을 수 있다. 이러한 접근법은 보안을 유지하는 데 효율적일 수 있다. 특정 물리적 어드레스 공간에 대한 상이한 도메인들로부터의 액세스는 대신에, 어드레스 변환 기능성을 통해 제어될 수 있는데, 여기서, 어드레스 변환 회로부가 어느 특정 물리적 어드레스 공간이 주어진 메모리 액세스에 사용될지를 선택할 수 있을 수 있으므로, 물리적 어드레스들의 입상이 다수의 물리적 어드레스 공간들 사이에서 공유되도록 허용할 필요가 없을 수 있다. 할당된 물리적 어드레스 공간만이 물리적 어드레스들의 타깃 입상에 액세스하도록 허용된 후, 이어서 물리적 어드레스들의 그 입상이 다른 물리적 어드레스 공간들로부터 액세스될 수 있게 하는 경우, 이는, 어느 물리적 어드레스 공간이 할당된 물리적 어드레스 공간인지에 대한 업데이트를 요구할 수 있다. 예를 들어, 이는 물리적 어드레스들의 주어진 입상에 대해 할당된 물리적 어드레스 공간을 스위칭하기 위한 일부 프로세싱을 수행하도록 전술한 루트 도메인에 요구할 수 있다. 이러한 프로세싱은, 예를 들어, 그것이 (보안을 위해), 새로운 할당된 물리적 어드레스 공간에 대한 액세스를 갖는 프로세스들이 물리적 어드레스들의 주어진 입상과 연관된 위치들에 이전에 저장된 데이터로부터 어떠한 것도 알 수 없게 되는 것을 보장하기 위해, 물리적 어드레스들의 주어진 입상 내의 각각의 위치를 널 데이터(null data) 또는 그러한 물리적 어드레싱된 위치들의 이전 콘텐츠들과는 독립적인 다른 데이터로 덮어쓰는 것을 포함할 수 있으므로, 소정의 성능 비용을 가질 수 있다.
따라서, 다른 접근법은, 할당된 물리적 어드레스 공간을 식별하는 것뿐만 아니라, 입상 보호 정보가, 할당된 물리적 어드레스 공간 이외의 적어도 하나의 다른 물리적 어드레스 공간이 적어도 하나의 허용된 물리적 어드레스 공간 중 하나의 물리적 어드레스 공간인지를 나타내는 공유 속성 정보를 또한 포함할 수 있는 것일 수 있다. 따라서, 공유 속성 정보가, 적어도 하나의 다른 물리적 어드레스 공간이 물리적 어드레스들의 대응하는 입상에 액세스하도록 허용됨을 나타내는 경우, 물리적 어드레스들의 그 입상은 다수의 물리적 어드레스 공간들로부터 액세스될 수 있다. 이는, 하나의 물리적 어드레스 공간과 연관된 도메인 내의 코드가, 물리적 어드레스들의 그것의 할당된 입상들 중 하나가 일시적으로 상이한 물리적 어드레스 공간과 연관된 도메인에 가시적이게 할 수 있도록 허용하는 데 유용할 수 있다. 이는, 어느 물리적 어드레스 공간이 할당된 물리적 어드레스 공간인지를 변경하기 위한 잠재적으로 비용이 많이 드는 동작을 발생시킬 필요가 없기 때문에, 데이터 또는 코드의 일시적인 공유를 더 효율적으로 만들 수 있다. 공유 속성 정보는 할당된 물리적 어드레스 공간과 연관된 도메인에서 실행되는 코드에 의해 직접 설정될 수 있거나, 할당된 물리적 어드레스 공간과 연관된 도메인에서 실행되는 코드로부터의 요청 시에 루트 도메인에 의해 설정될 수 있다.
공유 속성 정보가 지원되는 경우, 이어서 하나의 물리적 어드레스 공간에 할당된 어드레스가 상이한 어드레스 공간을 특정하는 요청들에 의해 액세스될 수 있는지를 입증하기 위해 공유 속성 정보를 사용하는 것뿐만 아니라, 요청자측 필터링 회로부가 또한 공유 속성 정보에 기초하여, 캐시 또는 상호접속부 아래쪽에 발행된 메모리 액세스 요청에 대해 선택된 물리적 어드레스 공간을 변형시킬 수 있다. 따라서, 입상 보호 룩업이, 선택된 물리적 어드레스 공간이 공유 속성 정보에 의해 표시된 상기 적어도 하나의 허용된 물리적 어드레스 공간 중 하나인, 할당된 물리적 어드레스 공간 이외의 물리적 어드레스 공간이라고 결정할 때, 요청자측 필터링 회로부는 메모리 액세스 요청이 선택된 물리적 어드레스 공간 대신 할당된 물리적 어드레스 공간을 특정하며 캐시 또는 상호접속부로 전달되게 할 수 있다. 이는, 아래쪽 메모리에 액세스할 목적으로, PoPA 이전의 컴포넌트들이 메모리 액세스를, 그것이 제1 장소에서 할당된 물리적 어드레스 공간을 특정하며 발행되었던 것처럼 취급하여, 그 할당된 물리적 어드레스 공간으로 태깅된 캐시 엔트리들 또는 스누프 필터 엔트리들이 메모리 액세스 요청에 대해 액세스될 수 있다는 것을 의미한다.
일부 구현예들에서, 요청자측 필터링 회로부는, 메모리 액세스 요청이 입상 보호 정보에 대해 체크될 때마다, 메모리로부터 입상 보호 룩업에 사용되는 입상 보호 정보를 획득할 수 있다. 이러한 접근법은 요청자측에서 더 적은 하드웨어 비용을 요구할 수 있다. 그러나, 그것은 메모리로부터 입상 보호 정보를 획득하는 데 비교적 느릴 수 있다.
따라서, 성능을 개선하기 위해, 요청자측 필터링 회로부는 입상 보호 정보를 캐싱할 수 있는 적어도 하나의 룩업 캐시에 액세스할 수 있으며, 이에 따라, 입상 보호 룩업이 적어도 하나의 룩업 캐시에서 수행될 수 있고, 요구되는 입상 정보가 이미 적어도 하나의 룩업 캐시에 저장되어 있는 경우, 그것을 메모리로부터 페치할 필요가 없다. 일부 경우들에서, 적어도 하나의 룩업 캐시는 가상 어드레스와 물리적 어드레스 사이의 맵핑들을 제공하는 페이지 테이블 데이터를 캐싱하기 위해 어드레스 변환 회로부에 의해 사용되는 변환 색인 버퍼(TLB)와는 별개인 캐시일 수 있다. 그러나, 다른 예들에서, 적어도 하나의 룩업 캐시는 페이지 테이블 데이터의 캐싱을 입상 보호 정보의 캐싱과 조합시킬 수 있다. 따라서, 일부 경우에, 적어도 하나의 룩업 캐시는 타깃 가상 어드레스를 타깃 물리적 어드레스에 맵핑하기 위해 어드레스 변환 회로부에 의해 사용되는 적어도 하나의 페이지 테이블 엔트리 및 입상 보호 정보 둘 모두에 따라 정보를 특정하는 적어도 하나의 조합된 변환-입상 보호 엔트리를 저장할 수 있다. TLB 및 입상 보호 캐시가 별개의 구조들로서 구현되는지 또는 단일 조합된 구조로서 구현되는지는 구현 선택이며, 둘 중 하나가 사용될 수 있다.
적어도 하나의 룩업 캐시에 어떤 접근법이 사용되는지에 관계없이, 적어도 하나의 룩업 캐시는 무효화 타깃 물리적 어드레스를 포함하는 물리적 어드레스들의 입상과 연관된 입상 보호 정보에 의존하는 정보를 저장하는 룩업 캐시 엔트리들을 무효화하기 위한 무효화 타깃 물리적 어드레스를 특정하는 적어도 하나의 룩업 캐시 무효화 명령에 응답할 수 있다. TLB를 갖는 종래의 프로세싱 시스템에서, TLB는 전형적으로 가상 어드레스(또는 2개의 어드레스 변환 스테이지들을 지원하는 시스템에서는, 중간 어드레스)를 특정하는 무효화 명령들을 지원할 수 있지만, 전형적으로 TLB들은 물리적 어드레스를 사용하여 어느 엔트리가 무효화될지를 식별할 수 있을 필요는 없다. 그러나, 적어도 하나의 룩업 캐시가 입상 보호 정보를 캐싱하기 위해 제공될 때, 물리적 어드레스들의 주어진 입상에 대한 입상 보호 정보가 변경되는 경우, 그 정보에 의존하는 임의의 엔트리들을 무효화할 수 있는 것이 유용할 수 있다. 따라서, 명령은 입상 보호 정보에 따른 정보를 포함하는 엔트리들이 무효화될 특정 물리적 어드레스를 식별할 수 있다.
입상 보호 정보 캐시가 TLB와는 별도로 구현되는 경우, TLB는 물리적 어드레스로 엔트리들을 검색하는 어떠한 능력도 가질 필요가 없을 수 있다. 이러한 경우, 입상 보호 정보 캐시는 물리적 어드레스를 특정하는 캐시 무효화 명령에 응답할 수 있지만, 명령은 TLB에 의해서는 무시될 수 있다.
그러나, 적어도 하나의 룩업 캐시가, 엔트리들이 가상 어드레스 또는 중간 어드레스에 기초하여 검색되고, 가상/중간 어드레스와 연관된 페이지 테이블 정보 및 대응하는 물리적 어드레스와 연관된 입상 보호 정보 둘 모두를 반환하는 조합된 변환/입상 보호 캐시를 포함하는 경우, 무효화 타깃 물리적 어드레스를 특정하는 적어도 하나의 룩업 캐시 무효화 명령이 프로세싱될 수 있도록, 물리적 어드레스에 기초하여 엔트리들을 검색하기 위한 추가의 스킴을 제공하는 것이 유용할 수 있다. 물리적 어드레스에 의한 그러한 검색들은 조합된 캐시의 일반 룩업들에 의해서는 필요로 되지 않을 것인데, 그 이유는, 엔트리들이 조합될 경우, 가상 어드레스 또는 중간 어드레스에 의한 검색이 어드레스 변환 및 입상 보호 룩업 둘 모두를 수행하기 위한 조합된 정보 모두에 액세스하기에 충분할 수 있기 때문이다. 그러나, 캐시 무효화 명령들 상에서, 조합된 캐시는 무효화될 필요가 있을 수 있는 임의의 엔트리들을 식별하기 위해 물리적 어드레스에 기초하여 검색될 수 있는데, 그 이유는, 그들이 특정된 물리적 어드레스에 대한 입상 보호 정보에 의존하기 때문이다.
메모리 시스템은, 이전 예들에 대해 앞서 논의된 바와 같이, PoPA 메모리 시스템 컴포넌트, 적어도 하나의 PoPA-전 메모리 시스템 컴포넌트, 및 적어도 하나의 PoPA-후 메모리 시스템 컴포넌트를 가질 수 있다. 따라서, 상이한 물리적 어드레스 공간들 내의 에일리어싱하는 물리적 어드레스들은, 이전에 논의된 바와 동일한 방식으로, 메모리 액세스 요청들이 물리적 에일리어싱의 지점을 지나 통과할 때 디에일리어싱된 물리적 어드레스를 사용하여 식별된 동일한 메모리 시스템 자원에 대응할 수 있다. PoPA 이전에, 적어도 하나의 PoPA-전 메모리 시스템 컴포넌트는 상이한 물리적 어드레스 공간들로부터의 에일리어싱하는 물리적 어드레스들을, 그들이 상이한 메모리 시스템 자원들에 대응하는 것처럼 취급하고, 이는 보안을 개선시킬 수 있다. 다시, 이론적으로, 상이한 물리적 어드레스 공간들 내의 에일리어싱하는 물리적 어드레스들이 상이한 수치적 어드레스 값들을 사용하여 식별되는 것이 가능할 수 있지만, 이는 구현하기에 비교적 복잡할 수 있고, 그것은 에일리어싱하는 물리적 어드레스들이 상이한 물리적 어드레스 공간들 내의 동일한 물리적 어드레스 값을 사용하여 표현되는 경우에 더 단순할 수 있다.
적어도 하나의 PoPA-전 메모리 시스템 컴포넌트가 적어도 하나의 PoPA-전 캐시를 포함하는 경우, 프로세싱 회로부는, (전술된 바와 같이) 임의의 PoPA-후 캐시들이 타깃 물리적 어드레스를 갖는 데이터를 유지하도록 허용하면서, 물리적 에일리어싱의 지점 윗쪽에 있는 임의의 PoPA-전 캐시들에 대해 타깃 물리적 어드레스에 의한 무효화들을 트리거하도록 타깃 가상 어드레스를 특정하는 PoPA까지-캐시-무효화 명령어에 응답할 수 있다.
메모리 액세스와 연관된 선택된 물리적 어드레스 공간은 상이한 방식들로 선택될 수 있다. 일부 예들에서, 선택된 물리적 어드레스 공간은, 메모리 액세스 요청이 발행되었던 요청자 회로부의 현재 동작 도메인에 적어도 기초하여 (어드레스 변환 회로부에 의해 또는 요청자측 필터링 회로부에 의해) 선택될 수 있다. 선택된 물리적 어드레스 공간의 선택은 또한, 타깃 가상 어드레스의 타깃 물리적 어드레스로의 변환을 위해 사용되는 적어도 하나의 페이지 테이블 엔트리에 특정된 물리적 어드레스 공간 선택 정보에 의존할 수 있다. 어느 물리적 어드레스 공간이 선택된 물리적 어드레스 공간인지의 선택은 선행 예들에 대해 앞서 논의된 바와 같이 수행될 수 있다.
주어진 시스템에서 선택될 수 있는 도메인들 및 물리적 어드레스 공간들은 전술한 바와 같을 수 있고, 각각이 대응하는 물리적 어드레스 공간들을 갖는, 앞에서 논의된 바와 같은, 덜 안전한 도메인, 안전한 도메인, 루트 도메인 및 추가의 도메인을 포함할 수 있다. 대안적으로, 도메인들/물리적 어드레스 공간들은 이러한 도메인들의 서브세트를 포함할 수 있다. 따라서, 전술한 도메인들 중 임의의 것과 관련된 특징들 중 임의의 것은 요청자측 필터링 회로부를 갖는 시스템에 포함될 수 있다.
루트 도메인이 전술한 바와 같은 대응하는 루트 물리적 어드레스 공간을 갖는 구현예에서, 현재 도메인이 루트 도메인일 때, 요청자측 필터링 회로부는 입상 보호 룩업을 우회(bypass)할 수 있다. 루트 도메인이 물리적 어드레스들의 모든 영역들에 액세스하도록 신뢰될 수 있기 때문에, 현재 도메인이 루트 도메인일 때, 입상 보호 룩업은 불필요할 수 있으며, 이에 따라, 루트 도메인에 있을 때 입상 보호 룩업을 건너뜀으로써 전력이 절약될 수 있다.
입상 보호 정보는 루트 도메인에서 실행되는 소프트웨어에 의해 수정가능할 수 있다. 따라서, 입상 보호 정보는 실행 시간에 동적으로 업데이트가능할 수 있다. 이는, 논의되는 구역 사용 사례들 중 일부에 대한 이점일 수 있으며, 여기서, 안전한 실행 환경들을 제공하는 구역들은 실행 시간에 동적으로 생성될 수 있고, 구역을 위해 예약된 메모리의 대응하는 영역들에 할당될 수 있다. 그러한 접근법은 종종 컴플리터측 필터링만을 사용해서는 실용적이지 않을 것이다. 일부 구현예들에서, 루트 도메인만이 입상 보호 정보를 수정하도록 허용되는 유일한 도메인일 수 있고, 따라서, 다른 도메인들이 입상 보호 정보에 대한 변경이 구현되는 것을 필요로 하는 경우, 그들은 루트 도메인이 입상 보호 정보를 수정하는 것을 요청할 수 있고, 이어서 루트 도메인은 다른 도메인으로부터 만들어진 요청을 허용할지를 체크할 수 있다.
메모리 액세스 요청이 캐시 또는 상호접속부로 전달되기 전에 요청자측에서 입상 보호 룩업을 수행하기 위해 요청자측 필터링 회로부를 제공하는 것이 유리할 수 있지만, 대신에 보호 정보(어느 물리적 어드레스들이 주어진 물리적 어드레스 공간으로부터 액세스될 수 있는지를 정의함)가 상호접속부의 컴플리터측에서 체크되는 것이 바람직할 수 있는 다른 시나리오들이 있을 수 있다. 예를 들어, 어드레스 공간의 일부 부분들에 대해서는, 상이한 물리적 어드레스 공간들로부터 액세스가능한 물리적 어드레스들의 영역들로 메모리 하드웨어를 분할하는 것에 대해 미세한 페이지 레벨 입도를 제공하는 것이 바람직할 수 있지만, 메모리 시스템의 다른 부분들에 대해서는, 단일의 물리적 어드레스 공간에 인접한 어드레스들의 큰 블록을 할당하는 것이 바람직할 수 있으므로, 메모리에 저장된 (잠재적으로 다중 레벨) 입상 보호 구조에 액세스하는 것의 오버헤드들이 정당하지 않을 수 있다. 전체 메모리 유닛(예를 들어, 특정 DRAM 모듈)이 단일의 물리적 어드레스 공간에 할당될 경우, 컴플리터측 체크를 통해 그 메모리 유닛에 대한 액세스의 제약의 시행을 처리하는 것이 더 단순할 수 있다.
따라서, 일부 구현예들에서, 요청자측 필터링 회로부를 제공하는 것뿐만 아니라, 메모리 액세스 요청이 컴플리터 디바이스에 의해 서비스되도록 허용되는지 여부를 결정하기 위해, 타깃 물리적 어드레스 및 선택된 물리적 어드레스 공간에 기초하여 컴플리터측 보호 정보의 컴플리터측 보호 룩업을 수행하기 위해, 타깃 물리적 어드레스 및 선택된 물리적 어드레스 공간을 특정하는, 상호접속부로부터 수신된 메모리 액세스 요청에 응답하는 컴플리터측 필터링 회로부가 또한 있을 수 있다. 메모리의 일부 부분들은 요청자측 필터를 통해 보호되고 다른 부분들은 컴플리터측 필터에 의해 보호될 수 있게 하는 하이브리드 접근법을 제공함으로써, 이는, 요청자측 필터링 또는 컴플리터측 필터링 중 어느 하나를 통해 단독으로 달성될 수 있는 것보다 메모리의 사용량을 할당하는 것의 유연성과 성능 사이의 더 양호한 균형을 허용한다.
따라서, 일부 구현예들에서, 입상 보호 정보는 적어도 하나의 허용된 물리적 어드레스 공간이 컴플리터측 필터링 회로부에 의해 해결될 것임을 나타내는 통과 표시자를 특정할 수 있다. 따라서, 요청자측 필터링 회로부는, 입상 보호 정보가 통과 표시자를 특정할 때의 경우들에서, 선택된 물리적 어드레스 공간이 물리적 어드레스들의 타깃 입상에 대한 적어도 하나의 허용된 물리적 어드레스 공간 중 하나의 물리적 어드레스 공간인지의 임의의 체크와 무관하게, 메모리 액세스 요청을 캐시 또는 상호접속부로 전달할지 또는 아닐지를 결정할 수 있다. 한편, 타깃 입상에 대해 액세스된 입상 보호 정보가 통과 표시자를 특정하지 않는 경우, 메모리 액세스 요청이 캐시 또는 상호접속부로 전달될 수 있는지 여부의 결정은 선택된 물리적 어드레스 공간이 적어도 하나의 허용된 물리적 어드레스 공간 중 하나의 물리적 어드레스 공간인지의 체크에 의존할 수 있는데, 그 이유는, 이러한 경우에, 메모리 액세스 요청이 캐시 또는 상호접속부로 진행하도록 허용된 후에 수행되는 후속 컴플리터측 필터링이 없을 수 있기 때문이다. 따라서, 통과 표시자는 체크들이 요청자측에서 수행될 물리적 어드레스들의 그러한 입상들과 그러한 체크들이 컴플리터측에서 수행될 그러한 입상들 사이에서 어드레스 공간을 파티셔닝하는 것에 대한 제어를 가능하게 할 수 있어, 시스템 설계자에게 추가적인 유연성을 제공한다.
컴플리터측 필터링 회로부에 의해 사용되는 컴플리터측 보호 정보는 요청자측 필터링 회로부에 의해 사용되는 입상 보호 정보와 동일한 포맷을 가질 필요는 없다. 예를 들어, 컴플리터측 필터링 회로부는 요청자측 필터링 회로부에 의해 입상 보호 룩업에 사용되는 입상 보호 정보보다 더 정밀하지 않은(coarser) 입도로 정의될 수 있다. 입상 보호 정보는 다중 레벨 테이블 구조로 정의될 수 있으며, 여기서, 테이블의 각각의 레벨은 2의 제곱에 대응하는 주어진 수의 어드레스들의 메모리 블록에 각각 대응하는 엔트리들을 제공하고, 따라서, 주어진 타깃 물리적 어드레스를 체크하는데 필요한 테이블의 주어진 레벨의 엔트리는 단순히 타깃 물리적 어드레스로부터의 소정 비트 부분의 배수를 테이블의 그 레벨과 연관된 기준 어드레스에 더함으로써 인덱싱될 수 있어, 그것이 올바른 엔트리인지 결정하기 위해, 액세스된 엔트리의 콘텐츠를 타깃 물리적 어드레스와 비교할 필요성이 회피된다. 대조적으로, 컴플리터측 보호 정보의 경우, 더 작은 수의 엔트리들이 정의될 수 있으며, 각각의 엔트리는 2의 제곱이 아닌 수의 어드레스들에 대응할 수 있는 메모리 영역의 시작 및 종료 어드레스들(또는 시작 어드레스 및 크기)을 특정한다. 이는 컴플리터측 보호 정보에서 비교적 정밀하지 않은(coarse-grained) 블록들을 정의하기에 더 적합할 수 있지만, 이러한 접근법은 타깃 물리적 어드레스가 각각의 컴플리터측 보호 정보 엔트리에 정의된 물리적 어드레스들의 각각의 범위들의 상위 및 하위 경계들과 비교되도록 요구하여, 그들 중 임의의 것이 특정된 물리적 어드레스와 매칭하는지 여부를 결정할 수 있다. 요청자측 입상 보호 정보에 사용되는 인덱싱된 다중 레벨 테이블 접근법은 비교적 큰 수의 개별적인 엔트리들을 지원할 수 있으며, 이에 따라, 물리적 어드레스 공간들에 대한 물리적 어드레스들의 미세한 맵핑이 지원되게 되는데, 이는 컴플리터측 보호 정보 내의 각각의 영역의 상위 및 하위 경계들을 정의하는 접근법을 사용해서는, 타깃 어드레스가 그 엔트리의 경계들 내에 속하는지를 체크하기 위해 그러한 엔트리들 각각을 룩업할 시의 비교 오버헤드로 인해, 전형적으로 실용적이지 않을 것이지만, 컴플리터측 보호 정보는 메모리 저장소의 측면에서는 더 효율적일 수 있고, 룩업 캐시에 누락이 있는 경우에 패널티가 적으므로, 성능의 측면에서 덜 가변적일 수 있다. 물론, 이는 룩업된 정보가 요청자측 및 컴플리터측에서 구현될 수 있는 방법의 일례일 뿐이다.
요청자측 보호 정보는 실행 시간에서 동적으로 업데이트가능할 수 있다. 컴플리터측 보호 정보는 시스템-온-칩 상에 하드웨어에 의해 정적으로 정의되거나, 부트 시간에 구성되거나, 또는 실행 시간에 동적으로 재구성될 수 있다.
전술한 예들의 경우, 입상 보호 룩업에 대해 전술된 기법들이 어드레스 변환 회로부 및 요청자측 필터링 회로부의 기능들을 수행하기 위한 전용 하드웨어 로직을 갖는 시스템에서 구현될 수 있지만, 등가의 기능들이 또한, 이전에 설명된 것들과 유사한 이유들로, 타깃 코드의 실행을 위한 명령어 실행 환경을 제공하도록 호스트 데이터 장치를 제어하기 위한 컴퓨터 프로그램 내에서 소프트웨어로 구현될 수 있다. 따라서, 어드레스 변환 프로그램 로직 및 필터링 프로그램 로직이 전술한 어드레스 변환 회로부 및 요청자측 필터의 기능성을 에뮬레이팅하기 위해 제공될 수 있다. 이전의 예들의 경우, 명령어 실행 환경을 제공하는 컴퓨터 프로그램에 대해, 하기 중 적어도 하나가 적용될 수 있다: 입상 보호 정보는 실행 시간에 타깃 코드에 의해 동적으로 업데이트가능함; 및 입상 보호 정보는 페이지 레벨 입도로 정의됨.
도 1은 적어도 하나의 요청자 디바이스(4) 및 적어도 하나의 컴플리터 디바이스(6)를 갖는 데이터 프로세싱 시스템(2)의 예를 개략적으로 예시한다. 상호접속부(8)는 요청자 디바이스들(4)과 컴플리터 디바이스들(6) 사이의 통신을 제공한다. 요청자 디바이스는 특정 어드레싱가능 메모리 시스템 위치에 대한 메모리 액세스를 요청하는 메모리 액세스 요청들을 발행할 수 있다. 컴플리터 디바이스(6)는 그것으로 지향된 메모리 액세스 요청들을 서비스할 책임이 있는 디바이스이다. 도 1에 도시되지 않았지만, 일부 디바이스들은 요청자 디바이스 및 컴플리터 디바이스 둘 모두로서 작동할 수 있다. 요청자 디바이스들(4)은, 예를 들어, 중앙 처리 장치(CPU) 또는 그래픽 처리 장치(GPU) 또는 다른 마스터 디바이스들, 예컨대, 버스 마스터 디바이스들, 네트워크 인터페이스 제어기들, 디스플레이 제어기들 등과 같은 프로세싱 요소들을 포함할 수 있다. 컴플리터 디바이스들은 대응하는 메모리 저장 유닛들에 대한 액세스를 제어하는 것을 담당하는 메모리 제어기들, 주변 디바이스에 대한 액세스를 제어하기 위한 주변기기 제어기들 등을 포함할 수 있다. 도 1은 요청자 디바이스들(4) 중 하나의 요청자 디바이스의 예시적인 구성을 보다 상세하게 도시하지만, 다른 요청자 디바이스들(4)이 유사한 구성을 가질 수 있다는 것이 이해될 것이다. 대안적으로, 다른 요청자 디바이스들은 도 1의 좌측에 도시된 요청자 디바이스(4)와는 상이한 구성을 가질 수 있다.
요청자 디바이스(4)는 레지스터들(12)에 저장된 데이터를 참조해서, 명령어들에 응답하여 데이터 프로세싱을 수행하기 위한 프로세싱 회로부(10)를 갖는다. 레지스터들(12)은 프로세싱이 프로세싱 회로부에 의해 어떻게 수행되는지를 구성하기 위한 제어 데이터를 저장하기 위한 제어 레지스터들뿐만 아니라, 피연산자들 및 프로세싱된 명령어들의 결과들을 저장하기 위한 범용 레지스터들을 포함할 수 있다. 예를 들어, 제어 데이터는, 어떤 동작 도메인이 현재 도메인인지를 선택하는 데 사용되는 현재 도메인 표시(14), 어느 예외 레벨이 프로세싱 회로부(10)가 동작하고 있는 현재 예외 레벨인지를 나타내는 현재 예외 레벨 표시(15)를 포함할 수 있다.
프로세싱 회로부(10)는 액세스될 어드레싱가능 위치를 식별하는 가상 어드레스(VA) 및 현재 도메인을 식별하는 도메인 식별자(도메인 ID 또는 '보안 상태')를 특정하는 메모리 액세스 요청들을 발행할 수 있을 수 있다. 어드레스 변환 회로부(16)(예를 들어, 메모리 관리 유닛(memory management unit, MMU))는 메모리 시스템에 저장된 페이지 테이블 구조들에 정의된 페이지 테이블 데이터에 기초하여 하나 이상의 어드레스 변환 스테이지들을 통해 가상 어드레스를 물리적 어드레스(PA)로 변환한다. 변환 색인 버퍼(translation lookaside buffer, TLB)(18)는 어드레스 변환이 요구될 때마다 페이지 테이블 정보가 메모리로부터 페치되어야 하는 경우보다 더 빠른 액세스를 위해 그 페이지 테이블 정보의 일부를 캐싱하기 위한 룩업 캐시로서 작동한다. 이러한 예에서, 물리적 어드레스를 생성하는 것뿐만 아니라, 어드레스 변환 회로부(16)는 또한 물리적 어드레스와 연관된 다수의 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간을 선택하고, 선택된 물리적 어드레스 공간을 식별하는 물리적 어드레스 공간(PAS) 식별자를 출력한다. PAS의 선택은 아래에서 더 상세하게 논의될 것이다.
PAS 필터(20)는, 변환된 물리적 어드레스 및 PAS 식별자에 기초하여, 그 물리적 어드레스가 PAS 식별자에 의해 식별된, 특정된 물리적 어드레스 공간 내에서 액세스되도록 허용되는지를 체크하기 위한 요청자측 필터링 회로부로서 작동한다. 이러한 룩업은 메모리 시스템 내에 저장된 입상 보호 테이블 구조에 저장된 입상 보호 정보에 기초한다. 입상 보호 정보는, TLB(18)에 페이지 테이블 데이터를 캐싱하는 것과 유사하게, 입상 보호 정보 캐시(22) 내에 캐싱될 수 있다. 도 1의 예에서 입상 보호 정보 캐시(22)가 TLB(18)와는 별개의 구조로 도시되어 있지만, 다른 예들에서, 이러한 유형들의 룩업 캐시들은 단일 룩업 캐시 구조로 조합될 수 있으며, 이에 따라, 조합된 구조의 엔트리의 단일 룩업이 페이지 테이블 정보 및 입상 보호 정보 둘 모두를 제공한다. 입상 보호 정보는 주어진 물리적 어드레스가 액세스될 수 있는 물리적 어드레스 공간들을 제약하는 정보를 정의하고, 이러한 룩업에 기초하여, PAS 필터(20)는 메모리 액세스 요청이 하나 이상의 캐시들(24) 및/또는 상호접속부(8)에 발행되도록 진행할 것을 허용할지 여부를 결정한다. 메모리 액세스 요청에 대해 특정된 PAS가 특정된 물리적 어드레스에 액세스하도록 허용되지 않는 경우, PAS 필터(20)는 트랜잭션을 차단하고 결함을 시그널링할 수 있다.
도 1은 시스템이 다수의 요청자 디바이스들(4)을 갖는 예를 도시하고 있지만, 도 1의 좌측 상의 하나의 요청자 디바이스에 대해 도시된 특징부들은 또한, 단일 코어 프로세서와 같은 하나의 요청자 디바이스만이 있는 시스템에 포함될 수 있다.
도 1은 주어진 요청에 대한 PAS의 선택이 어드레스 변환 회로부(16)에 의해 수행되는 예를 도시하고 있지만, 다른 예들에서, 어느 PAS를 선택할지를 결정하는 것에 대한 정보가 어드레스 변환 회로부(16)에 의해 PA와 함께 PAS 필터(20)에 출력될 수 있고, PAS 필터(20)는 PAS를 선택하고, PA가 선택된 PAS 내에서 액세스되도록 허용되는지를 체크할 수 있다.
PAS 필터(20)의 제공은, 각각이 그 자신의 격리된 물리적 어드레스 공간과 연관되는 다수의 동작 도메인들에서 동작할 수 있는 시스템을 지원하는 것을 돕는데, 여기서, 메모리 시스템의 적어도 일부에 대해(예를 들어, 일부 캐시들 또는 코히런시 시행 메커니즘들, 예를 들어, 스누프 필터에 대해), 별개의 물리적 어드레스 공간들은, 그러한 어드레스 공간들 내의 어드레스들이 실제로는 메모리 시스템 내의 동일한 물리적 위치를 참조하더라도, 그들이 별개의 메모리 시스템 위치들을 식별하는 완전히 별개인 어드레스 세트들을 참조하는 것처럼 취급된다. 이는 보안 목적들에 유용할 수 있다.
도 2는 프로세싱 회로부(10)가 동작할 수 있는 상이한 동작 상태들 및 도메인들의 예 및 상이한 예외 레벨들 및 도메인들에서 실행될 수 있는 소프트웨어의 유형들의 예를 도시한다(물론, 시스템에 설치된 특정 소프트웨어는 그 시스템을 관리하는 파티들에 의해 선택되며, 이에 따라, 하드웨어 아키텍처의 필수 특징부는 아님이 이해될 것임).
프로세싱 회로부(10)는 다수의 상이한 예외 레벨들(80), 이러한 예에서는, EL0, EL1, EL2 및 EL3으로 라벨링된 4개의 예외 레벨들에서 동작가능하며, 여기서, 이러한 예에서, EL3은 최대 특권 레벨을 갖는 예외 레벨을 지칭하는 반면, EL0은 최소 특권을 갖는 예외 레벨을 의미한다. 다른 아키텍처들은 가장 높은 수를 갖는 예외 레벨이 최저 특권을 갖는 것으로 고려될 수 있도록 반대 넘버링을 선택할 수 있음이 이해될 것이다. 이러한 예에서, 최소 특권이 주어진 예외 레벨 EL0은 애플리케이션 레벨 코드에 대한 것이고, 다음으로 큰 특권이 주어진 예외 레벨 EL1은 운영 체제 레벨 코드에 대해 사용되고, 다음으로 큰 특권이 주어진 예외 레벨 EL2는 다수의 가상화된 운영 체제들 사이의 스위칭을 관리하는 하이퍼바이저 레벨 코드에 대해 사용되며, 한편 가장 큰 특권이 주어진 예외 레벨 EL3은 각각의 도메인들 사이의 스위칭들 및 물리적 어드레스들의 물리적 어드레스 공간들로의 할당을 관리하는 모니터 코드에 대해 사용되며, 이는 후술되는 바와 같다.
특정 예외 레벨에서 소프트웨어를 프로세싱하는 동안 예외가 발생할 때, 일부 유형들의 예외들에 대해, 예외는 더 높은(더 특권이 주어진) 예외 레벨로 취해지며, 이때, 예외가 취해질 특정 예외 레벨은 발생한 특정 예외의 속성들에 기초하여 선택된다. 그러나, 일부 상황들에서는, 예외가 취해졌던 시간에 프로세싱되고 있었던 코드와 연관된 예외 레벨과 동일한 예외 레벨에서 다른 유형들의 예외들이 취해지는 것이 가능할 수 있다. 예외가 취해질 때, 예를 들어, 예외가 취해졌던 시간에서의 현재 예외 레벨을 포함하는, 예외가 취해졌던 시간에서의 프로세서의 상태를 특징으로 하는 정보가 저장될 수 있으며, 이에 따라, 일단 예외 처리기가 예외를 다루기 위해 프로세싱되면, 프로세싱은 이전 프로세싱으로 복귀할 수 있고, 저장된 정보는 프로세싱이 복귀해야 하는 예외 레벨을 식별하는 데 사용될 수 있다.
상이한 예외 레벨들에 더하여, 프로세싱 회로부는 또한 루트 도메인(82), 안전한(secure, S) 도메인(84), 덜 안전한 도메인(86), 및 구역 도메인(88)을 포함하는 다수의 동작 도메인들을 지원한다. 참조의 용이함을 위해, 덜 안전한 도메인은 "안전하지 않은"(non-secure, NS) 도메인으로 후술될 것이지만, 이는 임의의 특정 보안(또는 보안 부족) 레벨을 임시하는 것으로 의도되지 않는다는 것이 이해될 것이다. 대신, "안전하지 않은"은 단지, 안전하지 않은 도메인이 안전한 도메인에서 동작하는 코드보다 덜 안전한 코드에 대해 의도됨을 나타낼 뿐이다. 루트 도메인(82)은, 프로세싱 회로부(10)가 최고 예외 레벨 EL3에 있을 때 선택된다. 프로세싱 회로부가 다른 예외 레벨들 EL0 내지 EL2 중 하나의 예외 레벨에 있을 때, 현재 도메인은 다른 도메인들(84, 86, 88) 들 중 어느 것이 활성상태인지를 나타내는 현재 도메인 표시자(14)에 기초하여 선택된다. 다른 도메인들(84, 86, 88) 각각에 대해, 프로세싱 회로부는 예외 레벨들 EL0, EL1 또는 EL2 중 임의의 것에 있을 수 있다.
부트 시간에는, 다수의 부트 코드 조각들(예를 들어, BL1, BL2, OEM 부트)이, 예를 들어, 더 특권이 주어진 예외 레벨들 EL3 또는 EL2 내에서 실행될 수 있다. 부트 코드 BL1, BL2는, 예를 들어, 루트 도메인과 연관될 수 있고, OEM 부트 코드는 안전한 도메인에서 동작할 수 있다. 그러나, 일단 시스템이 부트되면, 실행 시간에, 프로세싱 회로부(10)는 한 번에 도메인들(82, 84, 86 및 88) 중 하나의 도메인에서 동작한다고 고려될 수 있다. 도메인들(82 내지 88) 각각은 메모리 시스템의 적어도 일부 내의 상이한 도메인들로부터의 데이터의 격리를 가능하게 하는 그 자신의 연관된 물리적 어드레스 공간(PAS)과 연관된다. 이는 더 상세하게 후술될 것이다.
안전하지 않은 도메인(86)은 일반 애플리케이션 레벨 프로세싱에 대해, 그리고 그러한 애플리케이션들을 관리하기 위한 운영 체제 및 하이퍼바이저 작동에 대해 사용될 수 있다. 따라서, 안전하지 않은 도메인(86) 내에는, EL0에서 동작하는 애플리케이션 코드(30), EL1에서 동작하는 운영 체제(OS) 코드(32), 및 EL2에서 동작하는 하이퍼바이저 코드(34)가 있을 수 있다.
안전한 도메인(84)은 소정 시스템-온-칩 보안, 매체 또는 시스템 서비스들이 안전하지 않은 프로세싱에 사용되는 물리적 어드레스 공간과는 별개인 물리적 어드레스 공간으로 격리될 수 있게 한다. 안전하지 않은 도메인 코드는 안전한 도메인(84)과 연관된 자원들에 액세스할 수 없는 한편, 안전한 도메인은 안전한 자원들 및 안전하지 않은 자원들 둘 모두에 액세스할 수 있다는 의미에서, 안전한 및 안전하지 않은 도메인들은 동일하지 않다. 안전한 및 안전하지 않은 도메인들(84, 86)의 그러한 파티셔닝을 지원하는 시스템의 예는 Arm® Limited에 의해 제공되는 TrustZone® 아키텍처에 기초한 시스템이다. 안전한 도메인은 EL0에서 신뢰되는 애플리케이션들(36)을, EL1에서 신뢰되는 운영 체제(38)를, 그리고 선택적으로 EL2에서 안전한 파티션 관리자(40)를 실행할 수 있으며, 안전한 파티션 관리자는, 안전한 파티셔닝이 지원되는 경우, 하이퍼바이저(34)가 안전하지 않은 도메인(86)에서 실행되는 가상 머신들 또는 게스트 운영 체제들(32) 사이의 격리를 관리할 수 있는 방식과 유사한 방식으로 안전한 도메인(84)에서 실행되는 상이한 신뢰되는 운영 체제들(38) 사이의 격리를 지원하기 위해 스테이지 2 페이지 테이블들을 사용할 수 있다.
시스템을 안전한 도메인(84)을 지원하도록 확장하는 것은, 그것이 단일 하드웨어 프로세서가 격리된 안전한 프로세싱을 지원할 수 있게 하여, 프로세싱이 별개의 하드웨어 프로세서 상에서 수행될 필요가 없게 하기 때문에, 최근에 인기가 많아졌다. 그러나, 안전한 도메인의 사용의 인기가 증가함에 따라, 그러한 안전한 도메인을 갖는 많은 실용적인 시스템들이 이제, 안전한 도메인 내에서, 광범위한 상이한 소프트웨어 제공자들에 의해 제공되는 서비스들의 비교적 복잡한 혼합 환경을 지원한다. 예를 들어, 안전한 도메인(84)에서 동작하는 코드는 (다른 것들 중에서) 집적 회로를 제조한 실리콘 제공자, 실리콘 제공자에 의해 제공되는 집적 회로를 휴대 전화와 같은 전자 디바이스에 조립하는 OEM, 디바이스에 대한 운영 체제(32)를 제공하는 OSV; 및/또는 클라우드를 통해 다수의 상이한 클라이언트들에 대해 서비스들을 지원하는 클라우드 서버를 관리하는 클라우드 플랫폼 제공자에 의해 제공되는 상이한 소프트웨어 조각들을 포함할 수 있다.
그러나, 사용자 레벨 코드(이는 통상적으로 안전하지 않은 도메인(86) 내의 애플리케이션들(30)로서 실행될 것으로 예상될 수 있음)를 제공하는 파티들이 동일한 물리적 플랫폼 상에서 코드를 동작시키는 다른 파티들에게 정보를 누설하지 않도록 신뢰될 수 있는 안전한 컴퓨팅 환경들을 제공받고자 하는 요구가 점점 더 증가하고 있다. 그러한 안전한 컴퓨팅 환경들이 실행 시간에 동적으로 할당가능하게 되고, 잠재적으로 민감한 코드 또는 데이터를 프로세싱하도록 디바이스를 신뢰하기 전에, 사용자가, 물리적 플랫폼 상에 충분한 보안 보장이 제공되는지를 검증할 수 있도록, 인증되고 증명가능하게 되는 것이 바람직할 수 있다. 그러한 소프트웨어의 사용자는 통상적으로 안전하지 않은 도메인(86)에서 동작할 수 있는 풍부한 운영 체제(rich operating system)(32) 또는 하이퍼바이저(34)를 제공하는 파티를 신뢰하기를 원하지 않을 수 있다(또는 그러한 제공자들 자체가 신뢰될 수 있더라도, 사용자는 공격자에 의해 손상되고 있는 운영 체제(32) 또는 하이퍼바이저(34)에 대해 자신을 보호하기를 원할 수 있음). 또한, 안전한 도메인(84)이 보안 프로세싱을 필요로 하는 그러한 사용자 제공 애플리케이션들에 사용될 수 있지만, 실제로, 이는 안전한 컴퓨팅 환경을 요구하는 코드를 제공하는 사용자 및 안전한 도메인(84) 내에서 동작하는 기존 코드의 제공자들 둘 모두에 대해 문제들을 야기한다. 안전한 도메인(84) 내에서 동작하는 기존 코드의 제공자들에 대하여, 안전한 도메인 내의 임의의 사용자 제공 코드의 추가는 그들의 코드에 대한 잠재적인 공격들의 공격 표면을 증가시킬 것이며, 이는 바람직하지 않을 수 있으므로, 사용자들이 안전한 도메인(84)에 코드를 추가하도록 허용하는 것은 강력하게 권장되지 않을 수 있다. 한편, 안전한 컴퓨팅 환경을 요구하는 코드를 제공하는 사용자는 안전한 도메인(84)에서 동작하는 상이한 코드 조각들의 제공자들 모두가 그것의 데이터 또는 코드에 액세스하는 것을 신뢰하려고 하지 않을 수 있으며, 특정 도메인에서 동작하는 코드의 인증 또는 증명이, 사용자 제공 코드가 그것의 프로세싱을 수행하기 위한 전제조건으로서 필요한 경우, 상이한 소프트웨어 제공자들에 의해 제공되는 안전한 도메인(84)에서 동작하는 모든 개별적인 코드 조각들을 감독하고 인증하는 것은 어려울 수 있으며, 이는 제3자들이 더 안전한 서비스들을 제공할 기회들을 제한할 수 있다.
따라서, 도 2에 도시된 바와 같이, 구역 도메인으로 불리는 추가적인 도메인(88)이 제공되며, 이는 그러한 사용자 도입 코드에 의해, 안전한 도메인(24)에서 동작하는 컴포넌트들과 연관된 임의의 안전한 컴퓨팅 환경에 직교하는 안전한 컴퓨팅 환경을 제공하기 위해 사용될 수 있다. 구역 도메인에서, 실행되는 소프트웨어는 다수의 구역들을 포함할 수 있으며, 여기서, 각각의 구역은 예외 레벨 EL2에서 동작하는 구역 관리 모듈(realm management module, RMM)(46)에 의해 다른 구역들과는 격리될 수 있다. RMM(46)은, 예를 들어, 하이퍼바이저(34)가 안전하지 않은 도메인(86)에서 동작하는 상이한 컴포넌트들 사이의 격리를 관리하는 방식과 유사하게 페이지 테이블 구조들 내의 어드레스 맵핑들 및 액세스 허가들을 정의함으로써, 구역 도메인(88)을 실행하는 각각의 구역들(42, 44) 사이의 격리를 제어할 수 있다. 이러한 예에서, 구역들은 EL0에서 실행되는 애플리케이션 레벨 구역(42) 및 예외 레벨들 EL0 및 EL1에 걸쳐 실행되는 캡슐화된 애플리케이션/운영 체제 구역(44)을 포함한다. EL0 및 EL0/EL1 유형들의 구역들 둘 모두를 지원하는 것은 필수가 아니며, 동일한 유형의 다수의 구역들이 RMM(46)에 의해 확립될 수 있다는 것이 이해될 것이다.
구역 도메인(88)은 안전한 도메인(84)과 유사하게, 그것에 할당된 그 자신의 물리적 어드레스 공간을 갖지만, 구역 및 안전한 도메인들(88, 84)이 각각 안전하지 않은 도메인(86)과 연관된 안전하지 않은 PAS에 액세스할 수 있는 한편, 구역 및 안전한 도메인들(88, 84)은 서로의 물리적 어드레스 공간들에 액세스할 수 없다는 의미에서, 구역 도메인은 안전한 도메인(84)에 직교한다. 이는, 안전한 도메인들(84) 및 구역 도메인(88)에서 실행되는 코드가 서로에 대해 종속성을 갖지 않는다는 것을 의미한다. 구역 도메인 내의 코드는 하드웨어, RMM(46), 및 도메인들 사이의 스위칭을 관리하는 루트 도메인(82)에서 동작하는 코드만을 신뢰할 필요가 있으며, 이는 증명 및 인증이 더 실현가능해짐을 의미한다. 증명은, 주어진 소프트웨어 조각이, 디바이스 상에 설치된 코드가 소정의 예측된 특성들과 매칭한다는 것의 검증을 요청할 수 있게 한다. 이는, 디바이스 상에 설치된 프로그램 코드의 해시가 암호화 프로토콜을 사용하여 신뢰되는 파티에 의해 서명된 예상 값과 매칭하는지를 체크함으로써 구현될 수 있다. RMM(46) 및 모니터 코드(29)는, 예를 들어, 이러한 소프트웨어의 해시가, 프로세싱 시스템(2)을 포함하는 집적 회로를 제조한 실리콘 제공자 또는 도메인 기반 메모리 액세스 제어를 지원하는 프로세서 아키텍처를 설계한 아키텍처 제공자와 같은, 신뢰되는 파티에 의해 서명된 예상 값과 매칭하는지를 체크함으로써 증명될 수 있다. 이는, 임의의 안전한 또는 민감한 기능들을 실행하기 전에, 사용자 제공 코드(42, 44)가, 도메인 기반 아키텍처의 무결성이 신뢰될 수 있는지를 검증할 수 있게 할 수 있다.
따라서, 이러한 프로세스들이 이전에 실행되었을 안전하지 않은 도메인 내의 갭(gap)을 도시하는 점선들에 의해 도시된 바와 같이 안전하지 않은 도메인(86)에서 이전에 실행되었을 구역들(42, 44)과 연관된 코드는 이제, 그들의 데이터 및 코드가 안전하지 않은 도메인(86)에서 동작하는 다른 코드에 의해 액세스가능하지 않기 때문에, 그들이 더 강한 보안 보장을 가질 수 있는, 구역 도메인으로 이동될 수 있다는 것을 알 수 있다. 그러나, 구역 도메인(88)과 안전한 도메인(84)이 직교하고 따라서 서로의 물리적 어드레스 공간들을 볼 수 없다는 사실로 인해, 이는 구역 도메인 내의 코드의 제공자들이 안전한 도메인 내의 코드의 제공자들을 신뢰할 필요가 없다는 것을 그리고 그 반대의 경우도 성립된다는 것을 의미한다. 구역 도메인 내의 코드는, 코드가 그들의 디바이스 상에서 실행되고 있을 때 이미 본질적으로 신뢰될 필요가 있을 수 있는, 실리콘 제공자 또는 프로세서에 의해 지원되는 명령어 세트 아키텍처의 제공자에 의해 제공될 수 있는, 루트 도메인(82)에 대한 모니터 코드(29) 및 RMM(46)을 제공하는 신뢰되는 펌웨어를 단순히 신뢰할 수 있으며, 이에 따라, 다른 운영 체제 판매자들, OEM들 또는 클라우드 호스트들과의 추가의 신뢰 관계들이 사용자에게 안전한 컴퓨팅 환경이 제공될 수 있게 하기 위해 필요하지 않다.
이는, 예를 들어, 모바일 지갑 및 결제 애플리케이션들, 게이밍 부정행위 또는 해적행위 방지 메커니즘들, 운영 체제 플랫폼 보안 향상들, 안전한 가상 머신 호스팅, 기밀 컴퓨팅, 네트워킹, 또는 사물 인터넷 디바이스들에 대한 게이트웨이 프로세싱을 포함하는, 다양한 응용물들 및 사용 사례들에 유용할 수 있다. 사용자들이 구역 지원이 유용한 많은 다른 응용물들을 찾을 수 있다는 것이 이해될 것이다.
구역에 제공되는 보안 보장들을 지원하기 위해, 프로세싱 시스템은 증명 보고 기능(attestation report function)을 지원할 수 있는데, 여기서, 부트 시간에 또는 실행 시간에는, 펌웨어 이미지들 및 구성, 예를 들어, 모니터 코드 이미지들 및 구성, 또는 RMM 코드 이미지들 및 구성에 대한 측정들이 이루어지고, 실행 시간에는, 구역 콘텐츠들 및 구성이 측정되며, 이에 따라, 구역 소유자는 알려진 구현예들 및 인증들에 대한 관련 증명 보고를 다시 추적하여, 그 시스템 상에서 동작할지 여부에 대한 신뢰 결정을 내릴 수 있다.
도 2에 도시된 바와 같이, 도메인 스위칭을 관리하는 별개의 루트 도메인(82)이 제공되고, 그 루트 도메인은 그 자신의 격리된 루트 물리적 어드레스 공간을 갖는다. 루트 도메인의 생성 및 그의 자원들의 안전한 도메인으로부터의 격리는, 안전하지 않은 및 안전한 도메인들(86, 84)만을 갖고 구역 도메인(88)을 갖지 않는 시스템들에 대해서도 더 강건한 구현예를 허용하지만, 구역 도메인(88)을 지원하는 구현예들에 대해서도 또한 사용될 수 있다. 루트 도메인(82)은 실리콘 제공자 또는 아키텍처 설계자에 의해 제공되는(또는 그에 의해 인증되는) 모니터 소프트웨어(29)를 사용하여 구현될 수 있고, 안전한 부트 기능성, 신뢰되는 부트 측정들, 시스템-온-칩 구성, 디버그 제어 및 OEM과 같은 다른 파티들에 의해 제공되는 펌웨어 컴포넌트들의 펌웨어 업데이트들의 관리를 제공하는 데 사용될 수 있다. 루트 도메인 코드는, 최종 디바이스에 대한 종속성 없이, 실리콘 제공자 또는 아키텍처 설계자에 의해 개발, 인증 및 배치될 수 있다. 대조적으로, 안전한 도메인(84)은 소정 플랫폼 및 보안 서비스들을 구현하기 위해 OEM에 의해 관리될 수 있다. 안전하지 않은 도메인(86)의 관리는 운영 체제 서비스들을 제공하도록 운영 체제(32)에 의해 제어될 수 있는 한편, 구역 도메인(88)은, 안전한 도메인(84) 내의 기존의 안전한 소프트웨어 환경들로부터 상호 격리되면서, 사용자 또는 제3자 애플리케이션들에 전용될 수 있는 새로운 형태들의 신뢰되는 실행 환경들이 개발될 수 있게 한다.
도 3은 이러한 기법들을 지원하기 위한 프로세싱 시스템(2)의 다른 예를 개략적으로 예시한다. 도 1에서와 동일한 요소들은 동일한 참조 번호로 예시된다. 도 3은, 스테이지 1 및 스테이지 2 메모리 관리 유닛들(50, 52)을 포함하는, 어드레스 변환 회로부(16)의 더 상세한 사항을 도시한다. 스테이지 1 MMU(50)는 가상 어드레스들을 물리적 어드레스들(변환이 EL2 또는 EL3 코드에 의해 트리거될 때) 또는 중간 어드레스들(스테이지 2 MMU(52)에 의한 추가의 스테이지 2 변환이 요구되는 동작 상태에서, 변환이 EL0 또는 EL1 코드에 의해 트리거될 때) 중 어느 하나로 변환하는 것을 담당할 수 있다. 스테이지 2 MMU는 중간 어드레스들을 물리적 어드레스들로 변환할 수 있다. 스테이지 1 MMU는 EL0 또는 EL1로부터 개시되는 변환들에 대한 운영 체제에 의해 제어되는 페이지 테이블들, EL2로부터의 변환들에 대한 하이퍼바이저에 의해 제어되는 페이지 테이블들, 또는 EL3으로부터의 변환들에 대한 모니터 코드(29)에 의해 제어되는 페이지 테이블들에 기초할 수 있다. 한편, 스테이지 2 MMU(52)는 어떤 도메인이 사용되고 있는지에 따라 하이퍼바이저(34), RMM(46) 또는 안전한 파티션 관리자(14)에 의해 정의된 페이지 테이블 구조들에 기초할 수 있다. 이러한 방식으로 변환들을 2개의 스테이지들로 분리하는 것은, 운영 체제들이, 그들이 시스템 상에서 실행되는 유일한 운영 체제라는 가정 하에서, 그들 자체들 및 애플리케이션들에 대한 어드레스 변환을 관리할 수 있게 하는 한편, RMM(46), 하이퍼바이저(34) 또는 SPM(40)은 동일한 도메인에서 실행되는 상이한 운영 체제들 사이의 격리를 관리할 수 있다.
도 3에 도시된 바와 같이, 어드레스 변환 회로부(16)를 사용하는 어드레스 변환 프로세스는 보안 속성들(54)을 반환할 수 있으며, 이는, 현재 예외 레벨(15) 및 현재 도메인(14)(또는 보안 상태)과 조합하여, 특정 물리적 어드레스 공간의 섹션(PAS 식별자 또는 "PAS TAG"에 의해 식별됨)이 주어진 메모리 액세스 요청에 응답하여 액세스될 수 있게 한다. 전술한 입상 보호 정보를 제공하는 입상 보호 테이블(56)에서 물리적 어드레스 및 PAS 식별자가 룩업될 수 있다. 이러한 예에서, PAS 필터(20)가 입상형 메모리 보호 유닛(granular memory protection unit, GMPU)으로서 도시되어 있으며, 이는, 선택된 PAS가 요청된 물리적 어드레스에 액세스하도록 허용되는지를 검증하고, 액세스할 수 있는 경우, 트랜잭션이 메모리 시스템의 시스템 패브릭(system fabric)의 일부인 임의의 캐시들(24) 또는 상호접속부(8)에 전달되도록 허용한다.
GMPU(20)는, 효율적인 공유 스킴들뿐만 아니라, 강한, 하드웨어 기반, 격리 보장을 제공하면서 그리고 별개의 어드레스 공간들로의 물리적 메모리의 할당 방법들에 공간적 및 시간적 유연성을 제공하면서, 메모리를 이러한 어드레스 공간들로 할당할 수 있게 한다. 전술한 바와 같이, 시스템 내의 실행 유닛들은 가상 실행 상태들(도메인들 또는 "월드들")로 논리적으로 파티셔닝되며, 여기서, 이러한 월드들로의 물리적 메모리 할당을 관리하는, "루트 월드"로 지칭되는, 최고 예외 레벨 EL3에 위치된 하나의 실행 상태(루트 월드)가 있다.
단일 시스템 물리적 어드레스 공간은 다수의 "논리적" 또는 "아키텍처적" 물리적 어드레스 공간(PAS)들로 가상화되며, 여기서, 각각의 그러한 PAS는 독립적인 코히런시 속성들을 갖는 직교 어드레스 공간이다. 시스템 물리적 어드레스는 PAS 태그로 그것을 확장시킴으로써 단일 "논리적" 물리적 어드레스 공간에 맵핑된다.
주어진 월드는 논리적 물리적 어드레스 공간들의 서브세트에 액세스하도록 허용된다. 이는 메모리 관리 유닛(16)의 출력부에 연결될 수 있는 하드웨어 필터(20)에 의해 시행된다.
월드는 어드레스 변환에 사용되는 페이지 테이블들의 변환 테이블 기술자 내의 필드들을 사용하여 액세스의 보안 속성들(PAS 태그)을 정의한다. 하드웨어 필터(20)는, 시스템 물리적 어드레스 공간 내의 각각의 페이지에 대해, 그것이 연관된 PAS TAG를 나타내는 입상 보호 정보(GPI) 및 (선택적으로) 다른 입상 보호 속성들을 정의하는 테이블(입상 보호 테이블(Granule Protection Table)(56) 또는 GPT)에 액세스한다.
하드웨어 필터(20)는 입상의 GPI에 대해 월드 ID 및 보안 속성들을 체크하고, 액세스가 승인될 수 있는지 또는 아닌지를 결정하여, 그에 따라서 입상형 메모리 보호 유닛(GMPU)을 형성한다.
GPT(56)는, 예를 들어, 온-칩 SRAM 또는 오프-칩 DRAM에 상주할 수 있다. 오프-칩으로 저장되는 경우, GPT(56)는 GPT(56)의 보안을 유지하기 위해 암호화, 무결성 및 최신성 메커니즘들을 사용할 수 있는 온-칩 메모리 보호 엔진에 의해 무결성-보호될 수 있다.
GMPU(20)를 컴플리터측에보다는 시스템의 요청자측에(예를 들어, MMU 출력부에) 위치시키는 것은, 상호접속부(8)가 다수의 DRAM 포트들에 걸쳐 페이지를 계속 해싱/스트립핑(striping)하도록 허가하면서, 페이지 입도(page granularity)로 액세스 허가들을 할당할 수 있게 한다.
트랜잭션들은, 그들이 물리적 에일리어싱의 지점(60)으로서 정의된 위치에 도달할 때까지 시스템 패브릭(24, 8) 전체에 걸쳐 전파될 때, PAS TAG로 태깅된 상태로 유지된다. 이는, 슬레이브측 필터링에 비해 보안 보장들을 감소시키지 않으면서, 마스터측에 필터를 위치시킬 수 있게 한다. 트랜잭션이 시스템 전체에 걸쳐 전파될 때, PAS TAG는 어드레스 격리를 위한 면밀한 보안 메커니즘으로서 사용될 수 있는데: 예를 들어, 캐시는 캐시에서 어드레스 태그에 PAS TAG를 추가하여, 잘못된 PAS TAG를 사용하여 동일한 PA에 대해 행해지는 액세스들이 캐시 내에서 히팅(hitting)하는 것을 방지하고, 이에 따라, 부채널 저항을 개선할 수 있다. PAS TAG는 또한, 데이터가 외부 DRAM에 기입되기 전에, 그것을 암호화하는 메모리 제어기에 연결된 보호 엔진에 대한 콘텍스트 선택기(context selector)로서 사용될 수 있다.
물리적 에일리어싱의 지점(PoPA)은 PAS TAG가 스트립핑되고 어드레스가 논리적 물리적 어드레스로부터 시스템 물리적 어드레스로 다시 변경되는 시스템 내의 위치이다. PoPA는 (PAS TAG를 통해 풀리는 암호화 콘텍스트를 사용하여) 물리적 DRAM에 대한 액세스가 이루어지는 시스템의 컴플리터측에서, 캐시들 아래에 위치될 수 있다 . 대안적으로, 그것은 감소된 보안의 대가로 시스템 구현예를 단순화하기 위해 캐시들 위에 위치될 수 있다.
언제든, 월드는 하나의 PAS로부터 다른 것으로 페이지를 전이하도록 요청할 수 있다. 요청은 GPI의 현재 상태를 검사하는 EL3에의 모니터 코드(29)에 대해 이루어진다. EL3은 (예를 들어, 안전하지 않은 PAS로부터 안전한 PAS로의, 그러나 구역 PAS로부터 안전한 PAS로의 것은 아닌) 특정 세트의 전이들만이 일어나도록 허용할 수 있다. 클린 전이를 제공하기 위해, 시스템에 의해 새로운 명령어, 즉, 페이지를 새로운 PAS로 전이하기 전에 EL3이 제출할 수 있는 "물리적 에일리어싱의 지점까지의 데이터 클린 및 무효화"가 지원되며, 이는 이전 PAS와 연관된 임의의 잔류 상태가 PoPA(60) 위쪽의 (그보다 요청자측에 더 가까운) 임의의 캐시들로부터 플러싱(flushing)되는 것을 보장한다.
GMPU(20)를 마스터측에 연결시킴으로써 달성될 수 있는 다른 특성은 월드들 사이에서의 메모리의 효율적인 공유이다. N개의 월드의 서브세트에게 물리적 입상에 대한 공유된 액세스를 승인하면서, 다른 월드들이 그것에 액세스하는 것은 방지하는 것이 바람직할 수 있다. 이는, 입상 보호 정보가 특정 PAS TAG를 사용하도록 강제하면서, 입상 보호 정보에 "제약적 공유" 의미를 추가함으로써 달성될 수 있다. 예로서, GPI는, 안전한 PAS(84)의 PAS TAG로 태깅되어 있는 동안 물리적 입상이 "구역 월드"(88) 및 "안전한 월드"(84)에 의해서만 액세스될 수 있음을 나타낼 수 있다.
상기 특성의 예는 특정 물리적 입상의 가시성 특성들을 빠르게 변경시키는 것이다. 각각의 월드에 그 월드에만 액세스가능한 개인 PAS가 할당되는 경우를 고려한다. 특정 입상들의 경우, 월드는, PAS 연관성을 변경시키지 않으면서, 그리고 그들의 GPI를 "배타적임"으로부터 "안전하지 않은 월드와의 제약적 공유"로 변경함으로써, 언제든 그들을 안전하지 않은 월드에 가시적이게 만들도록 요청할 수 있다. 이러한 방식으로, 비용이 많이 드는 캐시 유지 또는 데이터 복사 동작들을 요구하지 않으면서 그 입상의 가시성이 증가될 수 있다.
도 4는 하드웨어로 제공된 물리적 메모리 상의 각각의 물리적 어드레스 공간들의 에일리어싱의 개념을 예시한다. 전술한 바와 같이, 도메인들(82, 84, 86, 88) 각각은 그 자신의 각각의 물리적 어드레스 공간(61)을 갖는다.
물리적 어드레스가 어드레스 변환 회로부(16)에 의해 생성될 때, 물리적 어드레스는 시스템에 의해 지원되는 소정 수치 범위(62) 내의 값을 가지며, 이는 어느 물리적 어드레스 공간이 선택되는지에 관계없이 동일하다. 그러나, 물리적 어드레스의 생성에 더하여, 어드레스 변환 회로부(16)는 또한 현재 도메인(14) 및/또는 물리적 어드레스를 도출하기 위해 사용되는 페이지 테이블 엔트리 내의 정보에 기초하여 특정 물리적 어드레스 공간(PAS)을 선택할 수 있다. 대안적으로, 어드레스 변환 회로부(16)가 PAS의 선택을 수행하는 대신에, 어드레스 변환 회로부(예를 들어, MMU)는 물리적 어드레스 및 PAS의 선택에 사용되는 페이지 테이블 엔트리(PTE)로부터 도출된 정보를 출력할 수 있고, 이어서, 이러한 정보는 PAS를 선택하기 위해 PAS 필터 또는 GMPU(20)에 의해 사용될 수 있다.
주어진 메모리 액세스 요청에 대한 PAS의 선택은, 하기의 테이블에 정의된 규칙들에 따라, 프로세싱 회로부(10)가 메모리 액세스 요청을 발행할 때 동작하고 있는 현재 도메인에 따라 제약될 수 있다:
Figure pct00001
선택할 수 있는 다수의 물리적 어드레스 공간들이 있는 그러한 도메인들의 경우, 물리적 어드레스를 제공하는 데 사용되는 액세스된 페이지 테이블 엔트리로부터의 정보는 이용가능 PAS 옵션들 사이에서 선택하는 데 사용된다.
따라서, PAS 필터(20)가 시스템 패브릭(24, 8)으로 메모리 액세스 요청을 출력할 때(그것이 임의의 필터링 체크들을 통과했다고 가정함), 메모리 액세스 요청은 물리적 어드레스(PA) 및 선택된 물리적 어드레스 공간(PAS)과 연관된다.
물리적 에일리어싱의 지점(PoPA)(60) 이전에 동작하는 메모리 시스템 컴포넌트들(예컨대, 캐시들, 상호접속부들, 스누프 필터들 등)의 관점에서, 각각의 물리적 어드레스 공간들(61)은 메모리 내의 상이한 시스템 위치들에 대응하는 완전히 별개인 어드레스 범위들로서 보여진다. 이는, PoPA-전 메모리 시스템 컴포넌트들의 관점에서, 메모리 액세스 요청에 의해 식별되는 어드레스 범위가 실제로는 어드레스 변환에서 출력될 수 있는 범위(62)의 4배의 크기이고, 효과적으로 PAS 식별자가 물리적 어드레스 자체와 함께 추가적인 어드레스 비트들로서 취급되므로, 어느 PAS가 선택되는지에 따라, 동일한 물리적 어드레스 PAx가 개별적인 물리적 어드레스 공간들(61) 내의 다수의 에일리어싱하는 물리적 어드레스들(63)에 맵핑될 수 있다는 것을 의미한다. 이러한 에일리어싱하는 물리적 어드레스들(63)은 모두 실제로는, 물리적 하드웨어로 구현되는 동일한 메모리 시스템 위치에 대응하지만, PoPA-전 메모리 시스템 컴포넌트들은 에일리어싱하는 어드레스들(63)을 별개의 어드레스들로서 취급한다. 따라서, 그러한 어드레스들에 대해 엔트리들을 할당하는 임의의 PoPA-전 캐시들 또는 스누프 필터들이 있는 경우, 에일리어싱하는 어드레스들(63)은 별개의 캐시 히트/누락 결정들 및 별개의 코히런시 관리를 갖는 상이한 엔트리들에 맵핑될 것이다. 이는 공격자들이 다른 도메인들의 동작을 조사하기 위한 메커니즘으로서 캐시 또는 코히런시 부채널들을 사용할 가능성 또는 효과를 감소시킨다.
시스템은 하나 초과의 PoPA(60)를 포함할 수 있다(예를 들어, 아래에서 논의되는 도 14에 도시된 바와 같음). 각각의 PoPA(60)에서, 에일리어싱하는 물리적 어드레스들은 시스템 물리적 어드레스 공간(64) 내의 단일의 디에일리어싱된 어드레스(65)로 축소(collapse)된다. 디에일리어싱된 어드레스(65)는 임의의 PoPA-후 컴포넌트들 아래쪽에 제공되며, 이에 따라, 메모리 시스템 위치들을 실제로 식별하는 시스템 물리적 어드레스 공간(64)은 요청자측에서 수행되는 어드레스 변환에서 출력될 수 있는 물리적 어드레스들의 범위와 다시 한번 크기가 동일하다. 예를 들어, PoPA(60)에서, PAS 식별자는 어드레스들로부터 스트립핑될 수 있고, 아래쪽 컴포넌트들에 대하여, 어드레스들은 PAS를 특정하지 않으면서, 단순히 물리적 어드레스 값을 사용하여 식별될 수 있다. 대안적으로, 메모리 액세스 요청의 일부 컴플리터측 필터링이 요구되는 일부 경우에 대해, PAS 식별자가 PoPA(60) 아래쪽에 여전히 제공될 수 있지만, 어드레스의 부분으로서 해석되지 않을 수 있으며, 이에 따라, 상이한 물리적 어드레스 공간들(60)에 나타나는 동일한 물리적 어드레스들은 PoPA 아래쪽에서 동일한 메모리 시스템 위치를 지칭하는 것으로서 해석될 것이지만, 공급된 PAS 식별자는 임의의 컴플리터측 보안 체크들을 수행하기 위해 여전히 사용될 수 있다.
도 5는 시스템 물리적 어드레스 공간(64)이 입상 보호 테이블(56)을 사용하여, 특정 아키텍처적 물리적 어드레스 공간(61) 내의 액세스에 할당된 청크(chunk)들로 분할될 수 있는 방법을 예시한다. 입상 보호 테이블(GPT)(56)은 시스템 물리적 어드레스 공간(65)의 어느 부분들이 각각의 아키텍처적 물리적 어드레스 공간(61)으로부터 액세스되도록 허용되는지를 정의한다. 예를 들어, GPT(56)는 소정 크기(예를 들어, 4K 페이지)의 물리적 어드레스들의 입상에 각각 대응하는 다수의 엔트리들을 포함할 수 있고, 그 입상에 대해 할당된 PAS를 정의할 수 있는데, 이는 안전하지 않은, 안전한, 구역 및 루트 도메인들 중에서 선택될 수 있다. 설계에 의해, 특정 입상 또는 입상들의 세트가 도메인들 중 하나의 도메인과 연관된 PAS에 할당되는 경우, 그것은 그 도메인과 연관된 PAS 내에만 액세스될 수 있고 다른 도메인들의 PAS들 내에는 액세스될 수 없다. 그러나, (예를 들어) 안전한 PAS에 할당된 입상이 루트 PAS 내로부터 액세스될 수 없지만, 루트 도메인(82)은 그럼에도 불구하고, 물리적 어드레싱된 메모리의 그 영역에 맵핑된 페이지들에 연관된 가상 어드레스들이 루트 PAS 대신에 안전한 PAS 내의 물리적 어드레스로 변환되는 것을 보장하기 위한 PAS 선택 정보를 그의 페이지 테이블들 내에 특정함으로써 물리적 어드레스들의 그 입상에 액세스할 수 있다는 것에 주목한다. 따라서, (앞서 설명된 테이블에 정의된 액세스가능성/액세스불가능성 규칙들에 의해 허가되는 정도까지) 도메인들에 걸쳐 데이터를 공유하는 것은 주어진 메모리 액세스 요청에 대한 PAS를 선택하는 지점에서 제어될 수 있다.
그러나, 일부 구현예들에서, 물리적 어드레스들의 입상이 GPT에 의해 정의된 할당된 PAS 내에서 액세스되도록 허용하는 것에 더하여, GPT는 다른 GPT 속성들을 사용하여 어드레스 공간의 소정 영역들을 다른 어드레스 공간(예를 들어, 통상적으로 그 도메인의 액세스 요청들에 대해 할당된 PAS를 선택하도록 허용되지 않을 더 낮은 또는 직교 특권의 도메인과 연관된 어드레스 공간)과 공유되는 것으로서 마킹할 수 있다. 이는 주어진 입상에 대해 할당된 PAS를 변경할 필요 없이 데이터의 일시적인 공유를 용이하게 할 수 있다. 예를 들어, 도 5에서, 구역 PAS의 영역(70)은 구역 도메인에 할당되는 것으로 GPT에 정의되며, 이에 따라, 통상적으로 그것은 안전하지 않은 도메인(86)으로부터 액세스불가능할 것인데, 그 이유는, 안전하지 않은 도메인(86)이 그의 액세스 요청들을 위해 구역 PAS를 선택할 수 없기 때문이다. 안전하지 않은 도메인(26)이 구역 PAS에 액세스할 수 없기 때문에, 통상적으로 안전하지 않은 코드는 영역(70) 내의 데이터를 볼 수 없다. 그러나, 구역이 일시적으로 그의 할당된 메모리 영역들 내의 그의 데이터의 일부를 안전하지 않은 도메인과 공유하기를 원하는 경우, 그것은 루트 도메인(82)에서 동작하는 모니터 코드(29)가, 영역(70)이 안전하지 않은 도메인(86)과 공유될 것임을 나타내도록 GPT(56)를 업데이트하는 것을 요청할 수 있고, 이것은, 어느 도메인이 영역(70)에 대해 할당된 도메인인지를 변경할 필요 없이, 도 5의 좌측에 도시된 바와 같이, 영역(70)을 또한 안전하지 않은 PAS로부터 액세스가능하게 할 수 있다. 구역 도메인이 그의 어드레스 공간의 영역을 안전하지 않은 도메인과 공유되는 것으로 지정한 경우, 안전하지 않은 도메인으로부터 발행되는 그 영역을 타깃화하는 메모리 액세스 요청들이 초기에는 안전하지 않은 PAS를 특정할 수 있지만, PAS 필터(20)는 요청의 PAS 식별자를 대신에 구역 PAS를 특정하도록 재맵핑할 수 있으며, 이에 따라, 아래쪽 메모리 시스템 컴포넌트들은 요청을, 그것이 그동안 내내 구역 도메인으로부터 발행된 것처럼 취급한다. 이러한 공유는 성능을 개선할 수 있는데, 그 이유는, 특정 메모리 영역에 상이한 도메인을 할당하기 위한 동작들이 더 큰 정도의 캐시/TLB 무효화 및/또는 메모리 내의 데이터 제로화 또는 메모리 영역들 사이의 데이터 복사를 수반하여 더 성능 집약적일 수 있기 때문이며, 이는 공유가 단지 일시적이라고 예상되는 경우에는 정당하지 않을 수 있다.
도 6은, 프로세싱 회로부(10)에 의해 또는 어드레스 변환 회로부(16) 또는 PAS 필터(20)에 의해 수행될 수 있는, 현재 동작 도메인을 결정하는 방법을 도시하는 흐름도이다. 단계(100)에서, 현재 예외 레벨(15)이 EL3인지 여부가 결정되고, 그러한 경우, 단계(102)에서, 현재 도메인이 루트 도메인(82)이라고 결정된다. 현재 예외 레벨이 EL3이 아닌 경우, 단계(104)에서, 현재 도메인은 프로세서의 EL3 제어 레지스터 내의 적어도 2개의 도메인 표시 비트들(14)에 의해 표시된 바와 같은 안전하지 않은, 안전한 및 구역 도메인들(86, 84, 88) 중 하나의 도메인이라고 결정된다(루트 도메인은 현재 예외 레벨이 EL3인 것으로 표시되므로, 도메인 표시 비트들(14)의 인코딩이 루트 도메인에 대응하게 하는 것은 필수가 아닐 수 있으며, 이에 따라, 도메인 표시 비트들의 적어도 하나의 인코딩은 다른 목적들을 위해 예약될 수 있음). EL3 제어 레지스터는 EL3에서 동작할 때는 기입가능하고, 다른 예외 레벨들 EL2 내지 EL0으로부터는 기입될 수 없다.
도 7은, (변환이 적어도 스테이지 2 변환이 요구되는 동작 상태에서 수행되고 있는지에 따라, 그리고 스테이지 2 변환이 요구되는 경우, 변환이 스테이지 1 변환인지 또는 스테이지 2 변환인지에 따라) 가상 어드레스들을 물리적 어드레스들로 맵핑하거나, 가상 어드레스들을 중간 어드레스들로 맵핑하거나, 중간 어드레스들을 물리적 어드레스들로 맵핑하기 위한 어드레스 변환 회로부(16)에 의해 사용되는 페이지 테이블 구조들 내의 페이지 테이블 엔트리들에 사용될 수 있는 페이지 테이블 엔트리(PTE) 포맷들의 예를 도시한다. 대체적으로, 주어진 페이지 테이블 구조는 페이지 테이블들의 트리로서 구현되는 다중 레벨 테이블 구조로서 정의될 수 있으며, 여기서, 페이지 테이블의 제1 레벨은 프로세서의 변환 테이블 기준 어드레스 레지스터에 저장된 기준 어드레스에 기초하여 식별되고, 페이지 테이블 내의 특정 레벨 1 페이지 테이블 엔트리를 선택하는 인덱스는 변환 룩업이 수행되고 있는 입력 어드레스의 비트들의 서브세트로부터 도출된다(입력 어드레스는 스테이지 2 변환들에 대한 중간 어드레스의 스테이지 1 변환들에 대한 가상 어드레스일 수 있음). 레벨 1 페이지 테이블 엔트리는 다음 레벨 페이지 테이블에 대한 포인터(112)를 제공하는 "테이블 기술자"(110)일 수 있으며, 이로부터 추가의 페이지 테이블 엔트리가 입력 어드레스의 비트들의 추가의 서브세트에 기초하여 선택될 수 있다. 결국, 연속적인 레벨들의 페이지 테이블들에 대한 하나 이상의 룩업들 이후, 입력 어드레스에 대응하는 출력 어드레스(120)를 제공하는 블록 또는 페이지 기술자 PTE(114, 116, 118)가 식별될 수 있다. 출력 어드레스는 (추가의 스테이지 2 변환이 또한 수행되는 동작 상태에서 수행되는 스테이지 1 변환들의 경우) 중간 어드레스 또는 (스테이지 2 변환들의 경우, 또는 스테이지 2가 필요하지 않을 때의 스테이지 1 변환들의 경우) 물리적 어드레스일 수 있다.
전술한 개별적인 물리적 어드레스 공간들을 지원하기 위해, 페이지 테이블 엔트리 포맷들은 다음 레벨 페이지 테이블 포인터(112) 또는 출력 어드레스(120), 및 대응하는 메모리 블록에 대한 액세스를 제어하기 위한 임의의 속성들(122)에 더하여, 물리적 어드레스 공간 선택에 사용할 일부 추가적인 상태를 또한 특정할 수 있다.
테이블 기술자(110)의 경우, 안전하지 않은 도메인(86) 이외의 임의의 도메인에 의해 사용되는 PTE들은 다음 레벨 페이지 테이블이 안전하지 않은 물리적 어드레스 공간으로부터 액세스될 것인지 또는 현재 도메인의 물리적 어드레스 공간으로부터 액세스될 것인지를 나타내는 안전하지 않은 테이블 표시자(124)를 포함한다. 이는 페이지 테이블들의 더 효율적인 관리를 용이하게 하는 데 도움이 된다. 종종, 루트, 구역 또는 안전한 도메인들(24)에 의해 사용되는 페이지 테이블 구조들은 가상 어드레스 공간의 일부에 대해서는 단지 특별한 페이지 테이블 엔트리들만을 정의할 필요가 있을 수 있고, 다른 부분들에 대해서는, 안전하지 않은 도메인(26)에 의해 사용되는 것과 동일한 페이지 테이블 엔트리들이 사용될 수 있으며, 이에 따라, 안전하지 않은 테이블 표시자(124)를 제공함으로써, 이는 더 높은 레벨들의 페이지 테이블 구조가 전용 구역/안전한 테이블 기술자들을 제공할 수 있게 하는 한편, 페이지 테이블 트리의 소정 지점에서, 루트, 구역 또는 안전한 도메인들이 페이지 테이블 엔트리들을 사용하여 더 높은 보안이 필요하지 않은 그러한 어드레스 공간의 부분들에 대해 안전하지 않은 도메인으로부터 스위칭할 수 있다. 페이지 테이블들의 트리의 다른 부분들에서의 다른 페이지 테이블 기술자들이 루트, 구역 또는 안전한 도메인과 연관된 관련 물리적 어드레스 공간으로부터 여전히 페치될 수 있다.
한편, 블록/페이지 기술자들(114, 116, 118)은, 그들이 어느 도메인에 연관되는지에 따라, 물리적 어드레스 공간 선택 정보(126)를 포함할 수 있다. 안전하지 않은 도메인(86)에 사용되는 안전하지 않은 블록/페이지 기술자들(118)은 어떠한 PAS 선택 정보도 포함하지 않는데, 그 이유는 안전하지 않은 도메인이 안전하지 않은 PAS에만 액세스할 수 있기 때문이다. 그러나, 다른 도메인들의 경우, 블록/페이지 기술자(114, 116)는 입력 어드레스를 어느 PAS로 변환할지를 선택하는 데 사용되는 PAS 선택 정보(126)를 포함한다. 루트 도메인(22)의 경우, EL3 페이지 테이블 엔트리들은, 대응하는 물리적 어드레스가 변환될 선택된 PAS로서 4개의 도메인들(82, 84, 86, 88) 중 임의의 것과 연관된 PAS를 나타내기 위한 적어도 2개의 비트들을 포함하는 PAS 선택 정보(126)를 가질 수 있다. 대조적으로, 구역 및 안전한 도메인들의 경우, 대응하는 블록/페이지 기술자(116)는, 구역 도메인에 대해서는, 구역 PAS와 안전하지 않은 PAS 사이에서 선택하고, 안전한 도메인의 경우에는, 안전한 PAS와 안전하지 않은 PAS 사이에서 선택하는, 1개의 비트의 PAS 선택 정보(126)만을 포함할 필요가 있다. 회로 구현예의 효율을 개선하고 페이지 테이블 엔트리들의 크기가 증가하는 것을 회피하기 위해, 구역 및 안전한 도메인들의 경우, 블록/페이지 기술자(116)는, 현재 도메인이 구역인지 또는 안전한 것인지에 관계없이, PTE 내의 동일한 포지션에서 PAS 선택 정보(126)를 인코딩할 수 있어, PAS 선택 비트(126)가 공유될 수 있게 한다.
따라서, 도 8은 주어진 메모리 액세스 요청에 대한 물리적 어드레스를 생성하는 데 사용되는 블록/페이지 PTE로부터의 정보(124, 126) 및 현재 도메인에 기초하여 PAS를 선택하는 방법을 도시하는 흐름도이다. PAS 선택은 어드레스 변환 회로부(16)에 의해 수행될 수 있거나, 또는 어드레스 변환 회로부가 PAS 선택 정보(126)를 PAS 필터(20)에 포워딩하는 경우에는, 어드레스 변환 회로부(16) 및 PAS 필터(20)의 조합에 의해 수행될 수 있다.
도 8의 단계(130)에서, 프로세싱 회로부(10)가 주어진 가상 어드레스(VA)를 타깃 VA로서 특정하는 메모리 액세스 요청을 발행한다. 단계(132)에서, 어드레스 변환 회로부(16)가 그의 TLB(18) 내의 임의의 페이지 테이블 엔트리들(또는 그러한 페이지 테이블 엔트리들로부터 도출된 캐싱된 정보)을 룩업한다. 임의의 요구된 페이지 테이블 정보가 이용가능하지 않은 경우, 어드레스 변환 회로부(16)는 요구되는 PTE들을 페치하기 위해 메모리에 대해 페이지 테이블 워크(page table walk)를 개시한다(잠재적으로, 페이지 테이블 구조의 각각의 레벨들을 거쳐 단계적으로 움직이기 위한 일련의 메모리 액세스들 및/또는 VA로부터 중간 어드레스(IPA)로 그리고 이어서 IPA로부터 PA로의 맵핑들을 획득하기 위한 다수의 어드레스 변환 스테이지들을 요구함). 페이지 테이블 워크 동작들에서 어드레스 변환 회로부(16)에 의해 발행되는 임의의 메모리 액세스 요청들은 그 자체가 어드레스 변환 및 PAS 필터링의 대상일 수 있으며, 따라서, 단계(130)에서 수신된 요청은 메모리로부터의 페이지 테이블 엔트리를 요청하기 위해 발행된 메모리 액세스 요청일 수 있다는 것에 유의한다. 일단 관련 페이지 테이블 정보가 식별되면, 가상 어드레스는 (아마도 IPA를 통한 2개의 스테이지들에서) 물리적 어드레스로 변환된다. 단계(134)에서, 어드레스 변환 회로부(16) 또는 PAS 필터(20)가, 도 6에 도시된 접근법을 사용하여 어느 도메인이 현재 도메인인지를 결정한다.
현재 도메인이 안전하지 않은 도메인인 경우, 단계(136)에서, 이러한 메모리 액세스 요청에 대해 선택된 출력 PAS는 안전하지 않은 PAS이다.
현재 도메인이 안전한 도메인인 경우, 단계(138)에서, 출력 PAS는 물리적 어드레스를 제공했던 블록/페이지 기술자 PTE에 포함되었던 PAS 선택 정보(126)에 기초하여 선택되며, 여기서, 출력 PAS는 안전한 PAS 또는 안전하지 않은 PAS로서 선택될 것이다.
현재 도메인이 구역 도메인인 경우, 단계(140)에서, 출력 PAS는 물리적 어드레스가 도출되었던 블록/페이지 기술자 PTE에 포함된 PAS 선택 정보(126)에 기초하여 선택되고, 이러한 경우, 출력 PAS는 구역 PAS 또는 안전하지 않은 PAS로서 선택된다.
단계(134)에서 현재 도메인이 루트 도메인이라고 결정되는 경우, 단계(142)에서, 출력 PAS는 물리적 어드레스가 도출되었던 루트 블록/페이지 기술자 PTE(114) 내의 PAS 선택 정보(126)에 기초하여 선택된다. 이러한 경우, 출력 PAS는 루트, 구역, 안전한 및 안전하지 않은 도메인들과 연관된 물리적 어드레스 공간들 중 임의의 물리적 어드레스 공간으로서 선택된다.
도 9는 물리적 어드레스들의 주어진 입상에 대한 GPT(56)의 엔트리의 예를 예시한다. GPT 엔트리(150)는 물리적 어드레스들의 그 입상에 할당된 PAS를 식별하는 할당된 PAS 식별자(152)를 포함하고, 선택적으로, 예를 들어, 물리적 어드레스들의 입상이 할당된 PAS 이외의 하나 이상의 다른 PAS들에서 가시적이 되게 할 수 있는 전술된 공유 속성 정보(156)를 포함할 수 있는 추가의 속성들(154)을 포함한다. 공유 속성 정보(156)의 설정은 할당된 PAS와 연관된 도메인에서 실행되는 코드로부터의 요청 시에 루트 도메인에 의해 수행될 수 있다. 또한, 속성들은 통과 표시자 필드(158)를 포함할 수 있는데, 이는, GPT 체크들(메모리 액세스 요청에 대한 선택된 PAS가 물리적 어드레스들의 그 입상에 액세스하도록 허용되는지를 결정하기 위한 것임)이 요청자측에서 PAS 필터(20)에 의해 수행되어야 하는지 또는 아래에서 더 논의될 바와 같이, 상호접속부의 컴플리터 디바이스측에서 컴플리터측 필터링 회로부에 의해 수행되어야 하는지 여부를 나타낸다. 통과 표시자(158)가 제1 값을 갖는 경우, 요청자측 필터링 체크들이 요청자측의 PAS 필터(20)에서 요구될 수 있고, 이들이 실패하면, 메모리 액세스 요청은 차단될 수 있고, 결함이 시그널링될 수 있다. 그러나, 통과 표시자(158)가 제2 값을 갖는 경우, GPT(56)에 기초한 요청자측 필터링 체크들은 그 GPT 엔트리(150)에 대응하는 물리적 어드레스들의 입상 내의 물리적 어드레스를 특정하는 메모리 액세스 요청들에 필요로 되지 않을 수 있고, 이러한 경우, 메모리 액세스 요청은, 선택된 PAS가 물리적 액세스들의 그 입상에 액세스하도록 허용되는 허용된 PAS들 중 하나의 PAS인지를 체크하는 것에 관계없이, 캐시(24) 또는 상호접속부(8)로 통과될 수 있으며, 이때, 임의의 그러한 PAS 필터링 체크들은 이어서, 대신 컴플리터측에서 나중에 수행된다.
도 10은 상호접속부(8)의 요청자측에서 PAS 필터(20)에 의해 수행되는 요청자측 PAS 필터링 체크들을 도시하는 흐름도이다. 단계(170)에서, PAS 필터(20)가 전술한 도 8에 도시된 바와 같이 선택될 수 있는 출력 PAS 및 물리적 어드레스와 연관된 메모리 액세스 요청을 수신한다.
단계(172)에서, PAS 필터(20)가, 이용가능한 경우 입상 보호 정보 캐시(22)로부터 또는 메모리에 저장된 테이블 구조로부터 요구되는 GPT 엔트리를 페치하기 위한 요청을 메모리에 발행함으로써, 특정된 PA에 대응하는 GPT 엔트리를 획득한다. 일단 필요한 GPT 엔트리가 획득되면, 단계(174)에서, PAS 필터가, 메모리 액세스 요청에 대해 선택된 출력 PAS가 단계(172)에서 획득된 GPT 엔트리에 정의된 할당된 PAS(152)와 동일한지 여부를 결정한다. 그러한 경우, 단계(176)에서, 메모리 액세스 요청(PA 및 출력 PAS를 특정함)이 캐시(24) 또는 상호접속부(8)에 전달되도록 허용될 수 있다.
출력 PAS가 할당된 PAS가 아닌 경우, 단계(178)에서, PAS 필터는, 출력 PAS가 획득된 GPT 엔트리로부터의 공유 속성 정보(156) 내에, 특정된 PA에 대응하는 어드레스들의 입상에 액세스하도록 허용되는 허용된 PAS로서 표시되어 있는지 여부를 결정한다. 그러한 경우, 다시 단계(176)에서, 메모리 액세스 요청이 캐시(24) 또는 상호접속부(8)에 전달되도록 허용된다. 공유 속성 정보는 GPT 엔트리(150) 내의 고유 비트(또는 비트들의 세트)로서 인코딩될 수 있거나, 또는 GPT 엔트리(150)의 필드의 하나 이상의 인코딩들로서 인코딩될 수 있으며, 이 경우, 그 동일한 필드의 다른 인코딩들은 다른 정보를 나타낼 수 있다. 단계(178)가, 공유 속성이 할당된 PAS 이외의 출력 PAS가 PA에 액세스하도록 허용됨을 나타낸다고 결정하는 경우, 단계(176)에서, 캐시(24) 또는 상호접속부(8)에 전달되는 메모리 액세스 요청에 특정된 PAS는 할당된 PAS이지만 출력된 PAS는 아니다. PAS 필터(20)는 메모리 액세스 요청에 의해 특정된 PAS를 할당된 PAS와 매칭하도록 변형시켜, 아래쪽 메모리 시스템 컴포넌트들이 그것을 할당된 PAS를 특정하며 발행된 요청들과 동일한 것으로 취급하게 된다.
출력 PAS가 특정된 물리적 어드레스에 액세스하도록 허용되는 것으로 공유 속성 정보(156)에 표시되어 있지 않은 경우(또는 대안적으로, 공유 속성 정보(156)를 지원하지 않는 구현예에서, 단계(178)를 건너뛰는 경우), 단계(180)에서, 타깃 물리적 어드레스에 대한 획득된 GPT 엔트리 내의 통과 표시자(158)가, 요청자측 PAS 필터(20)에서 수행되는 체크들에 관계없이, 메모리 액세스 요청이 캐시(24) 또는 상호접속부(8)로 통과될 수 있음을 식별하는지의 여부가 결정되고, 통과 표시자가 특정되는 경우, 단계(176)에서, 메모리 액세스 요청이 진행되도록 다시 허용된다(출력 PAS를 메모리 액세스 요청과 연관된 PAS로서 특정함). 대안적으로, 단계들(174, 178, 180)에서의 체크들 중 어느 것도 메모리 액세스 요청이 허용된다고 식별하지 않는 경우, 단계(182)에서, 메모리 액세스 요청이 차단된다. 따라서, 메모리 액세스 요청이 캐시(24) 또는 상호접속부(8)로 전달되지 않고, 결함이 시그널링될 수 있는데, 이는 결함을 다루기 위한 예외 프로세싱을 트리거할 수 있다.
단계들(174, 178, 180)이 도 10에 순차적으로 도시되어 있지만, 이들 단계들은 또한, 원하는 경우, 병렬로 또는 상이한 순서로 구현될 수 있다. 또한, 단계들(178, 180)은 필수가 아니고, 일부 구현예들은 공유 속성 정보(156) 및/또는 통과 표시자(158)의 사용을 지원하지 않을 수 있다는 것이 이해될 것이다.
도 11은 어드레스 변환 회로부(16) 및 PAS 필터의 동작을 요약한다. PAS 필터링(20)은 어드레스 변환 회로부에 의해 수행되는 스테이지 1 (및 선택적으로 스테이지 2) 어드레스 변환들 이후에 수행되는 추가적인 스테이지 3 체크로서 간주될 수 있다. 또한, EL3 변환들은 2개의 비트들의 어드레스 기반 선택 정보(도 11의 예에서 NS, NSE로 라벨링됨)를 제공하는 페이지 테이블 엔트리들에 기초하는 반면, 단일 비트의 선택 정보 "NS"는 다른 상태들에서 PAS를 선택하는 데 사용된다는 것에 유의한다. 입상 보호 체크에 대한 입력으로서 도 11에 표시된 보안 상태는 프로세싱 요소(4)의 현재 도메인을 식별하는 도메인 ID를 지칭한다.
도 12는 특정 물리적 어드레스와 연관된 GPT 엔트리들에 의존하는 임의의 룩업 캐시 엔트리들의 무효화를 트리거하기 위해 루트 도메인(82)에서 동작하는 모니터 코드(29)에 의해 사용될 수 있는 스테이지 3 룩업 캐시 무효화 명령어의 프로세싱을 도시하는 흐름도이다. 이것은, 임의의 룩업 캐시들(22)이 오래된 정보를 유지하지 않도록, 루트 도메인이, 주어진 시스템 PA가 할당되는 물리적 어드레스 공간의 할당을 변경하고 있을 때 유용할 수 있다.
따라서, 단계(200)에서, 주어진 프로세싱 요소(요청자 디바이스)(4) 내의 프로세싱 회로부(10)가 스테이지 3 룩업 캐시 무효화 명령어를 실행할 수 있다. 명령어는 물리적 어드레스를 특정한다.
단계(202)에서, 스테이지 3 룩업 캐시 무효화 명령어에 응답하여, 프로세싱 회로부(10)는 현재 예외 레벨이 EL3인지를 체크할 수 있고, 그렇지 않는 경우, 단계(204)에서, 명령어를 거부하고/하거나 예외(예컨대, 정의되지 않은 명령어 예외)를 시그널링할 수 있다. 이것은 스테이지 3 룩업 캐시 무효화 명령어의 실행을 루트 도메인과 연관된 모니터 코드(29)로 제약하여, 악의적인 파티들이 다른 예외 레벨들에 의해 트리거되는 바와 같은 룩업 캐시들(22)로부터의 입상 보호 정보의 무효화를 강제함으로써 성능의 손실을 트리거하는 것을 방지한다.
현재 예외 레벨이 EL3인 경우, 단계(206)에서, 단계(200)에서 실행된 명령어에 응답하여, 프로세싱 요소는 명령어에 의해 식별된 물리적 어드레스와 연관된 입상 보호 테이블 엔트리에 따라 정보를 포함할 수 있는 임의의 룩업 캐시들(18, 22)로 전송되는 적어도 하나의 룩업 캐시 무효화 명령을 발행한다. 이러한 캐시들은 도 1에 도시된 바와 같은 입상 보호 정보 캐시(22)뿐만 아니라, 일부 구현예들에서는, GPT 및 페이지 테이블 구조들로부터의 정보를 단일 엔트리로 조합하는 조합된 TLB/입상 보호 캐시도 포함할 수 있다. 그러한 조합된 TLB/GPT 캐시들의 경우, 조합된 캐시는 가상 어드레스 및 물리적 어드레스 둘 모두에 의해 룩업되는 능력을 요구할 수 있다.
단계(208)에서, 발행된 명령에 응답하여, GPT 캐시들(22) 또는 조합된 TLB/GPT 캐시들은 룩업 캐시 무효화 명령에 의해 특정된 물리적 어드레스에 대응하는 물리적 어드레스들의 입상과 연관된 GPT 엔트리로부터의 입상 보호 정보에 의존하는 임의의 엔트리들을 무효화한다.
메모리 시스템 내의 캐시들은 PoPA 이전에 위치된 그러한 캐시들에 대하여 연관된 PAS의 식별로 엔트리들을 태깅할 수 있으므로, 루트 도메인 코드(29)가, GPT(56)를 업데이트함으로써 어느 PAS가 물리적 어드레스들의 소정 입상과 연관되는지를 변경하는 경우, 물리적 어드레스들의 그 입상에 대해 잘못된 PAS로 태깅된, PoPA-전 캐시들에 캐싱된 데이터가 여전히 있을 수 있다. PGT 업데이트 후에 발행되는 후속 액세스들이 그러한 요청들을 발행하는 도메인에 대해 더 이상 액세스가능하지 않아야 하는 캐시 엔트리들 상에서 히팅되는 것을 방지하기 위해, 특정 물리적 어드레스와 연관된 임의의 캐싱된 엔트리들이 PoPA(60) 이전에 있는 임의의 캐시들에서 무효화되는 것을 보장하는 명령어를 제공하는 것이 유용할 수 있다. 이러한 명령어는 코히런시의 지점 이전의 캐시들 또는 특정 프로세싱 요소에 국부적인 캐시들과 같은, 메모리 시스템의 상이한 서브세트 내의 캐시들 상에 작동할 수 있는 다른 유형들의 캐시 무효화 명령어와는 상이한 명령어일 수 있다. 따라서, 프로세싱 회로부는 시스템 내의 캐시들에 의해 무효화들이 관찰되는 범주의 측면에서 구별되는 PoPA까지-캐시-무효화 명령어를 지원할 수 있으며, 이때, 그 범주는 PoPA 윗쪽의 메모리 시스템의 부분에 대응한다. 즉, 이러한 명령어에 대하여, PoPA는 무효화가 캐시들에 의해 관찰되어야 하는 범위에 대한 한계이다.
도 13은 PoPA까지-캐시-무효화 명령어의 프로세싱을 도시하는 흐름도이다. 단계(220)에서, PoPA까지-캐시-무효화 명령어가 주어진 요청자 디바이스(4)의 프로세싱 회로부(10)에 의해 실행된다. 명령어는 가상 어드레스를 특정하고, 단계(222)에서, 이러한 가상 어드레스는 물리적 어드레스로 맵핑된다. 그러나, 일부 경우에, PoPA까지의 무효화되는 캐시들에 대한 명령어의 실행은 도 12에 도시된 명령어와 유사하게 EL3에서만 실행되도록 제약될 수 있다. 단계(224)에서, 명령어를 실행한 프로세싱 요소는 물리적 어드레스를 특정하는 무효화 명령들을 발행하며, 이때, 그러한 명령들은 시스템 내의 임의의 PoPA-전 캐시들(24)로 전송된다. 이것은, 개별적인 물리적 어드레스 공간들(61)이 별개의 범위들의 어드레싱된 메모리 위치들로서 취급되는 지점에 위치된, 요청자 디바이스(4) 내에 뿐만 아니라, 상호접속부(8) 내의, 또는 다른 요청자 디바이스들(4) 또는 다른 메모리 시스템 컴포넌트들 내의 PAPA 윗쪽의 캐시들을 포함할 수 있다.
일부 경우에, PoPA까지-캐시-무효화 명령어는 "클린 및 무효화"형태의 명령어일 수 있는데, 이는, 특정된 PA와 연관된 데이터가 PoPA-전 캐시들로부터 무효화되는 것을 요청할 뿐만 아니라, 무효화 전에, PoPA(60)를 지난 위치에 임의의 더티 데이터를 다시 기입함으로써 데이터가 클린되는 것을 요청한다. 따라서, 단계(226)에서, 명령어가 클린 및 무효화 형태의 명령어인 경우, 명령을 수신하는 PoPA-전 캐시들은 특정된 물리적 어드레스와 연관된 임의의 엔트리들로부터의 더티 데이터를 다시 기입하는 것을 트리거한다. 이러한 데이터는 PoPA를 지난 캐시에 또는 메인 메모리에 기입될 수 있다. 명령어가 클린 및 무효화 형태의 명령어가 아닌 경우, 또는 클린 및 무효화 형태들의 명령어가 지원되지 않는 경우, 단계(226)는 생략될 수 있고, 방법은, 단계(226)가 수행되는 경우에도 수행될, 단계(228)로 바로 진행할 수 있다. 단계(228)에서, 단계(224)에서 명령들을 수신하는 PoPA-전 캐시들은 특정된 물리적 어드레스와 연관되었던 그들의 엔트리들을 무효화한다. 특정된 물리적 어드레스와 연관된 캐싱된 엔트리들은 어느 PAS 태그가 그러한 엔트리들과 연관되는지에 관계없이 무효화된다.
따라서, PoPA까지-캐시-무효화 명령어는, GPT의 업데이트 후에, 캐시들이 잘못된 PAS 식별자로 주어진 물리적 어드레스와 연관된 엔트리들을 계속 태깅하지 않는 것을 보장하는 데 사용될 수 있다.
도 14는 위에서 논의된 기법들 중 일부를 구현할 수 있는 데이터 프로세싱 시스템의 더 상세한 예를 도시한다. 이전 예들에서와 동일한 요소들은 동일한 참조 번호들로 예시되어 있다. 도 14의 예에서는, 프로세싱 회로부(10), 어드레스 변환 회로부(16), TLB(18) 및 PAS 필터(20)에 더하여, 캐시들(24)이 레벨 1 명령어 캐시, 레벨 1 데이터 캐시, 레벨 2 캐시, 및 선택적으로 프로세싱 요소들 사이에서 공유되는 공유 레벨 3 캐시(24)를 포함하며, 더 상세히 도시되어 있다는 점에서, 프로세싱 요소들(4)이 더 상세하게 도시되어 있다. 인터럽트 제어기(interrupt controller)(300)는 각각의 프로세싱 요소들에 의한 인터럽트들의 처리를 제어할 수 있다.
도 14에 도시된 바와 같이, 메모리에 대한 액세스들을 트리거하도록 프로그램 명령어들을 실행할 수 있는 프로세싱 요소들(4)은 요청자측 PAS 필터(20)가 제공될 수 있는 유일한 유형의 요청 디바이스는 아니다. 다른 예들에서, 시스템 MMU(310)(이는 그 자신의 어드레스 변환 기능성을 지원하지 않는 요청 디바이스들(312, 314), 예컨대, 네트워크 인터페이스 제어기 또는 디스플레이 제어기와 같은 온-칩 디바이스(312), 또는 버스를 통해 시스템과 통신할 수 있는 오프-칩 디바이스(314)에 어드레스 변환 기능성을 제공하기 위해 제공됨)에 PAS 필터(20)가 제공되어, 프로세싱 요소들(4) 내의 PAS 필터(20)에 대해서와 동일하게 GPT 엔트리들의 요청자측 체크를 수행할 수 있다. 다른 요청 디바이스들은 디버그 액세스 포트(316) 및 제어 프로세서(318)를 포함할 수 있으며, 이들은 그들과 연관된 PAS 필터들(20)을 다시 가짐으로써, GPT(56)에 정의된 PAS 할당들을 고려하여, 요청 디바이스들(316, 318)에 의해 특정 물리적 어드레스 공간에 대해 발행된 메모리 액세스가 허용되는지를 체크할 수 있다.
상호접속부(8)는 코히런트 상호접속부(8)로서 도 14에 더 상세히 도시되어 있는데, 이는 라우팅 패브릭(320)뿐만 아니라, 각각의 프로세싱 요소들 내의 캐시들(24) 사이의 코히런시를 관리하기 위한 스누프 필터(322), 및 요청 디바이스들 사이에서 공유되는 공유 데이터의 캐싱을 수행할 수 있는 하나 이상의 시스템 캐시들(324)을 또한 포함한다. 스누프 필터(322) 및 시스템 캐시들(324)은 PoPA(60) 윗쪽에 위치될 수 있으며, 따라서, 특정 마스터들에 대해 MMU(16, 310)에 의해 선택된 PAS 식별자를 사용하여 그들의 엔트리들을 태깅할 수 있다. MMU와 연관되지 않은 요청 디바이스들(316, 318)은 디폴트로, 안전하지 않은 도메인(또는 그들이 신뢰될 수 있는 경우, 루트 도메인)과 같은 특정 도메인의 요청을 항상 발행하는 것으로 가정될 수 있다.
도 14는, 각각의 PAS들 내의 에일리어싱하는 물리적 어드레스들을, 그들이 상이한 어드레스 위치들을 참조하고 있던 것처럼 취급하는 PoPA-전 컴포넌트의 다른 예로서, 상호접속부(8)와 오프-칩 메모리(340)에의 액세스를 제어하기 위한 주어진 메모리 제어기(6) 사이에 제공되는 메모리 보호 엔진(memory protection engine, MPE)(330)을 도시한다. MPE(330)는 기밀성을 유지하기 위해 오프-칩 메모리(340)에 기입된 데이터를 암호화하는 것 및 다시 판독할 때 데이터를 복호화하는 것을 담당할 수 있다. 또한, MPE는 메모리에 데이터를 기입할 때 무결성 메타데이터를 생성함으로써, 그리고 데이터가 오프-칩 메모리로부터 다시 판독될 때 메타데이터를 사용하여 데이터가 변경되었는지를 검증함으로써, 오프-칩 메모리에 저장된 데이터의 조작으로부터 보호할 수 있다. 메모리 무결성을 위해 데이터를 암호화하거나 해시들을 생성할 때, 실제로 오프-칩 메모리(340) 내의 동일한 위치에 대응하는 에일리어싱하는 물리적 어드레스들에 액세스하더라도, 어느 물리적 어드레스 공간에 액세스되고 있는지에 따라 상이한 키들이 사용될 수 있다. 이는 상이한 동작 도메인들과 연관된 데이터를 추가로 격리시킴으로써 보안을 향상시킨다.
이러한 예에서, PoPA(60)는 메모리 보호 엔진(330)과 메모리 제어기(6) 사이에 있으므로, 이에 따라, 요청들이 메모리 제어기(6)에 도달할 때까지, 물리적 어드레스들은 그들이 액세스되었던 물리적 어드레스 공간에 따라 메모리(340) 내의 상이한 물리적 위치들에 맵핑되는 것으로서 더 이상 취급되지 않는다.
도 14는 주변기기(350) 또는 온-칩 메모리(360)(예를 들어, 정적 랜덤 액세스 메모리(SRAM)로서 구현됨)의 영역들과 통신하는 데 사용되는 주변기기 버스 또는 넌코히런트(non-coherent) 상호접속부일 수 있는, 컴플리터 디바이스(6)의 다른 예를 도시한다. 또한, 주변기기 버스 또는 넌코히런트 상호접속부(6)는 암호화 프로세싱을 수행하기 위한 암호화 유닛들과 같은 보안 요소들(370), 난수 생성기(372), 또는 정적으로 하드와이어된 정보를 저장하는 소정 퓨즈들(374)과 통신하는 데 사용될 수 있다. 또한, 다양한 전력/리셋/디버그 제어기들(380)이 주변기기 버스 또는 넌코히런트 상호접속부(6)를 통해 액세스가능할 수 있다.
온-칩 SRAM(360)의 경우, 어느 물리적 어드레스 공간들이 물리적 어드레스들의 주어진 블록에 액세스하도록 허용되는지를 정의하는 컴플리터측 보호 정보에 기초하여 메모리 액세스들의 컴플리터측 필터링을 수행할 수 있는 슬레이브측(slave-side)(컴플리터측) PAS 필터(400)를 제공하는 것이 유용할 수 있다. 이러한 컴플리터측 정보는 요청자측 PAS 필터들(20)에 의해 사용되는 GPT보다 더 정밀하지 않게 정의될 수 있다. 예를 들어, 슬레이브측 정보는, 전체 SRAM 유닛(361)이 구역 도메인에 의해 사용되도록 전용될 수 있고, 다른 SRAM 유닛(362)이 루트 도메인에 의해 사용되도록 전용될 수 있고, 그리고 다른 도메인들에 대해서도 그러할 것이라고 단순히 나타낼 수 있다. 따라서, 비교적 정밀하지 않게 정의된 물리적 어드레스들의 블록들은 상이한 SRAM 유닛들에 관한 것일 수 있다. 이러한 컴플리터측 보호 정보는 부트 로더 코드가 실행 시간에 변경될 수 없는 정보를 부트 시간에 컴플리터측 PAS 필터에 로딩함으로써 정적으로 정의될 수 있으므로, 그것은 요청자측 PAS 필터들(20)에 의해 사용되는 GPT들만큼 유연하지 않다. 그러나, 물리적 어드레스들의, 각각의 도메인에 액세스가능한 특정 영역들로의 분할이 부트 시간에 알려지고, 변경되지 않을 것이고, 미세한 파티셔닝을 요구하지 않는 사용 사례들의 경우, 요청자측의 PAS 필터(20) 대신 슬레이브측 PAS 필터(400)를 사용하는 것이 더 효율적일 수 있는데, 그 이유는, 이것이, GPT 엔트리를 획득하고, 할당된 PAS 및 공유 속성 정보를 현재 메모리 액세스 요청에 대한 정보와 비교하는 것에 대한 전력 및 수행 비용이 요청자측에서 제거되게 할 수 있기 때문이다. 또한, 통과 표시자(158)가 다중 레벨 GPT 구조 내의 최상위 레벨 GPT 엔트리(또는 최종 레벨 이외의 레벨에서의 다른 테이블 기술자 엔트리)에 표시될 수 있는 경우, GPT 구조의 추가의 레벨들에 대한 액세스들(이는 요청자측 체크의 대상이 되는 요청들에 대해 할당된 PAS에 대한 더 미세한 정보를 찾기 위해 수행될 수 있음)은 컴플리터측 PAS 필터(400)에 의해 감시되는 온-칩 메모리(360)에 맵핑되는 물리적 어드레스들의 영역들 중 하나의 영역을 타깃으로 하는 요청들에 대해 회피될 수 있다.
따라서, 보호 정보의 요청자측 및 컴플리터측 체크 둘 모두를 가능하게 하는 하이브리드 접근법을 지원하는 것이 성능 및 전력 효율에 유용할 수 있다. 시스템 설계자는 메모리의 특정 영역들에 대해 어떤 접근법이 취해져야 하는지를 정의할 수 있다.
도 15는 사용될 수 있는 시뮬레이터 구현예를 예시한다. 전술된 실시예들은 관심 기법들을 지원하는 특정 프로세싱 하드웨어를 동작시키기 위한 장치 및 방법들과 관련하여 본 발명을 구현하지만, 컴퓨터 프로그램의 사용을 통해 구현되는 본 명세서에서 기술되는 실시예들에 따라 명령어 실행 환경을 제공하는 것이 또한 가능하다. 그러한 컴퓨터 프로그램들은, 그들이 하드웨어 아키텍처의 소프트웨어 기반 구현예를 제공하는 한, 종종 시뮬레이터들로 지칭된다. 다양한 시뮬레이터 컴퓨터 프로그램들은 에뮬레이터들, 가상 머신들, 모델들, 및 동적 이진 변환기(dynamic binary translator)들을 포함한 이진 변환기들을 포함한다. 전형적으로, 시뮬레이터 구현예는 호스트 프로세서(430) 상에서 실행되어, 호스트 운영 체제(420)를 선택적으로 실행하여, 시뮬레이터 프로그램(410)을 지원할 수 있다. 일부 배열들에서, 하드웨어와 제공된 명령어 실행 환경 사이에 다수의 시뮬레이션 계층들이 있을 수 있고/있거나, 동일한 호스트 프로세서 상에 제공된 다수의 별개의 명령어 실행 환경들이 있을 수 있다. 이력상, 강력한 프로세서들이 합리적인 속도로 실행되는 시뮬레이터 구현예들을 제공하는 데 요구되었지만, 그러한 접근법은 호환성 또는 재사용 이유들을 위해 다른 프로세서에 고유한 코드를 실행하려는 요구가 있을 때와 같은 소정 상황들에서 정당화될 수 있다. 예를 들어, 시뮬레이터 구현예는 호스트 프로세서 하드웨어에 의해 지원되지 않는 추가적인 기능성을 명령어 실행 환경에 제공할 수 있거나, 또는 상이한 하드웨어 아키텍처와 전형적으로 연관된 명령어 실행 환경을 제공할 수 있다. 시뮬레이션의 개요가 문헌["Some Efficient Architecture Simulation Techniques", Robert Bedichek, Winter 1990 USENIX Conference, Pages 53 - 63]에서 주어진다.
실시예들이 특정 하드웨어 구성물들 또는 특징부들을 참조하여 전술되었음을 고려한 결과로, 시뮬레이션된 실시예에서, 동등한 기능성이 적합한 소프트웨어 구성물들 또는 특징부들에 의해 제공될 수 있다. 예를 들어, 특정 회로부는 시뮬레이션된 실시예에서 컴퓨터 프로그램 로직으로서 구현될 수 있다. 유사하게, 레지스터 또는 캐시와 같은 메모리 하드웨어가 시뮬레이션된 실시예에서 소프트웨어 데이터 구조로서 구현될 수 있다. 전술된 실시예들에서 언급된 하드웨어 요소들 중 하나 이상의 하드웨어 요소들이 호스트 하드웨어(예를 들어, 호스트 프로세서(430)) 상에 존재하는 배열들에서, 일부 시뮬레이션된 실시예들은, 적합한 경우, 호스트 하드웨어를 사용할 수 있다.
시뮬레이터 프로그램(410)은 컴퓨터 판독가능 저장 매체(이는 비일시적 매체일 수 있음) 상에 저장될 수 있고, 타깃 코드(400)(이는 애플리케이션들, 운영 체제들, 및 하이퍼바이저를 포함할 수 있음)에 프로그램 인터페이스(명령어 실행 환경)를 제공하는데, 이는 시뮬레이터 프로그램(410)에 의해 모델링되는 하드웨어 아키텍처의 인터페이스와 동일하다. 따라서, 타깃 코드(400)의 프로그램 명령어들은 시뮬레이터 프로그램(410)을 사용하여 명령어 실행 환경 내로부터 실행되어, 위에서 논의된 장치(2)의 하드웨어 특징부들을 실제로 갖지 않는 호스트 컴퓨터(430)가 이러한 특징부들을 에뮬레이팅할 수 있게 할 수 있다. 이것은, 예를 들어, 새로운 버전의 프로세서 아키텍처를 실제로 지원하는 하드웨어 디바이스들이 아직 이용가능하기 전에 그 아키텍처를 위해 개발되고 있는 타깃 코드(400)를 테스트할 수 있게 하는데 유용할 수 있는데, 그 이유는, 타깃 코드가, 그 아키텍처를 지원하지 않는 호스트 디바이스 상에서 실행되는 시뮬레이터 내에서 실행됨으로써, 테스트될 수 있기 때문이다.
시뮬레이터 코드는, 예를 들어, 타깃 코드(400)의 명령어들을 디코딩하고, 디코딩된 명령어들과 등가인 기능들을 실행하기 위해 호스트 하드웨어(430)에 의해 지원되는 네이티브 명령어 세트(native instruction set) 내의 대응하는 명령어 시퀀스들에 명령어들을 맵핑하는 명령어 디코딩 프로그램 로직을 포함하여, 프로세싱 회로부(10)의 거동을 에뮬레이팅하는 프로세싱 프로그램 로직(412)을 포함한다. 프로세싱 프로그램 로직(412)은 또한, 전술한 바와 같이 상이한 예외 레벨들 및 도메인들에서의 코드의 프로세싱을 시뮬레이션한다. 레지스터 에뮬레이팅 프로그램 로직(413)은 호스트 프로세서의 호스트 어드레스 공간에 데이터 구조를 유지하며, 이는 타깃 코드(400)와 연관된 타깃 명령어 세트 아키텍처에 따라 정의된 아키텍처적 레지스터 상태를 에뮬레이팅한다. 따라서, 그러한 아키텍처적 상태가 도 1의 예에서와 같은 하드웨어 레지스터들(12)에 저장되는 대신, 그것은 호스트 프로세서(430)의 메모리에 대신 저장되며, 이때, 레지스터 에뮬레이팅 프로그램 로직(413)은, 호스트 메모리로부터 시뮬레이션된 아키텍처적 상태 데이터를 획득하기 위해, 타깃 코드(400)의 명령어들의 레지스터 참조부호들을 대응하는 어드레스들에 맵핑한다. 이러한 아키텍처적 상태는 전술한 현재 도메인 표시(14) 및 현재 예외 레벨 표시(15)를 포함할 수 있다.
시뮬레이션 코드는, 전술한 바와 동일한 페이지 테이블 구조들 및 GPT(56)를 참조하여, 어드레스 변환 회로부(16) 및 PAS 필터(20)의 기능성을 각각 에뮬레이팅하는 어드레스 변환 프로그램 로직(414) 및 필터링 프로그램 로직(416)을 포함한다. 따라서, 어드레스 변환 프로그램 로직(414)은 타깃 코드(400)에 의해 특정된 가상 어드레스들을 PAS들 중 하나의 PAS 내의 시뮬레이션된 물리적 어드레스들(이는, 타깃 코드의 관점에서, 메모리 내의 물리적 위치들을 지칭함)로 변환시키지만, 실제로 이러한 시뮬레이션된 물리적 어드레스들은 어드레스 공간 맵핑 프로그램 로직(415)에 의해 호스트 프로세서의 (가상) 어드레스 공간 상에 맵핑된다. 필터링 프로그램 로직(416)은, 전술한 PAS 필터와 동일한 방식으로, 타깃 코드에 의해 트리거되는 메모리 액세스들을 진행하도록 허용할지 여부를 결정하기 위해 입상 보호 정보의 룩업을 수행한다.
추가의 예들은 하기 항목들에 제시되어 있다:
(1) 장치는, 요청자 회로부에 의해 발행된 메모리 액세스 요청에 의해 특정된 타깃 가상 어드레스를 타깃 물리적 어드레스로 변환하기 위한 어드레스 변환 회로부; 및 메모리 액세스 요청을 상호접속부를 통해 메모리 액세스 요청을 서비스하기 위한 컴플리터 디바이스에 전달할지 여부를 결정하기 위해, 타깃 물리적 어드레스 및 메모리 액세스 요청과 연관된 선택된 물리적 어드레스 공간에 기초하여 입상 보호 룩업을 수행하기 위한 요청자측 필터링 회로부 - 상기 선택된 물리적 어드레스 공간은 복수의 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간임 - 를 포함하고; 여기서, 입상 보호 룩업에서, 요청자측 필터링 회로부는, 타깃 물리적 어드레스를 포함하는 물리적 어드레스들의 타깃 입상에 대응하는 입상 보호 정보를 획득하도록 - 입상 보호 정보는 타깃 입상과 연관된 적어도 하나의 허용된 물리적 어드레스 공간을 나타냄 -; 그리고 입상 보호 정보가 선택된 물리적 어드레스 공간이 상기 적어도 하나의 허용된 물리적 어드레스 공간 중 하나의 물리적 어드레스 공간이 아님을 나타낼 때, 메모리 액세스 요청을 차단하도록 구성된다.
(2) 항목 (1)에 있어서, 입상 보호 정보는 물리적 어드레스들의 타깃 입상에 할당되는, 할당된 물리적 어드레스 공간을 특정하고; 적어도 하나의 허용된 물리적 어드레스 공간은 적어도 할당된 물리적 어드레스 공간을 포함한다.
(3) 항목 (2)에 있어서, 입상 보호 정보는 할당된 물리적 어드레스 공간 이외의 적어도 하나의 다른 물리적 어드레스 공간이 상기 적어도 하나의 허용된 물리적 어드레스 공간 중 하나의 물리적 어드레스 공간인지를 나타내는 공유 속성 정보를 또한 포함한다.
(4) 항목 (3)에 있어서, 입상 보호 룩업이, 선택된 물리적 어드레스 공간이 공유 속성 정보에 의해 표시된 상기 적어도 하나의 허용된 물리적 어드레스 공간 중 하나인, 할당된 물리적 어드레스 공간 이외의 물리적 어드레스 공간이라고 결정할 때, 요청자측 필터링 회로부는 메모리 액세스 요청이 선택된 물리적 어드레스 공간 대신 할당된 물리적 어드레스 공간을 특정하며 캐시 또는 상호접속부로 전달되게 하도록 구성된다.
(5) 임의의 선행 항목에 있어서, 요청자측 필터링 회로부는 입상 보호 정보를 캐싱하도록 구성된 적어도 하나의 룩업 캐시에서 입상 보호 룩업을 수행하도록 구성된다.
(6) 항목 (5)에 있어서, 적어도 하나의 룩업 캐시는 타깃 가상 어드레스를 타깃 물리적 어드레스에 맵핑하기 위해 어드레스 변환 회로부에 의해 사용되는 적어도 하나의 페이지 테이블 엔트리 및 입상 보호 정보 둘 모두에 의존하는 정보를 특정하는 적어도 하나의 조합된 변환-입상 보호 엔트리를 저장하도록 구성된다.
(7) 항목 (5) 또는 항목 (6)에 있어서, 적어도 하나의 룩업 캐시는 무효화 타깃 물리적 어드레스를 포함하는 물리적 어드레스들의 입상과 연관된 입상 보호 정보에 의존하는 정보를 저장하는 룩업 캐시 엔트리들을 무효화하기 위한 무효화 타깃 물리적 어드레스를 특정하는 적어도 하나의 룩업 캐시 무효화 명령에 응답한다.
(8) 임의의 선행 항목에 있어서, 장치는, 복수의 에일리어싱하는 물리적 어드레스들 중 임의의 에일리어싱하는 물리적 어드레스를 적어도 하나의 아래쪽 메모리 시스템 컴포넌트에 제공될 디에일리어싱된 물리적 어드레스로 맵핑하기 위해, 동일한 메모리 시스템 자원에 대응하는 상이한 물리적 어드레스 공간들로부터의 복수의 에일리어싱하는 물리적 어드레스들을 디에일리어싱하도록 구성된 물리적 에일리어싱의 지점(PoPA) 메모리 시스템 컴포넌트; 및 PoPA 메모리 시스템 컴포넌트의 윗쪽에 제공되는 적어도 하나의 PoPA-전 메모리 시스템 컴포넌트를 포함하고, 여기서, 적어도 하나의 PoPA 메모리 시스템 컴포넌트는 상이한 물리적 어드레스 공간들로부터의 에일리어싱하는 물리적 어드레스들을, 에일리어싱하는 물리적 어드레스들이 상이한 메모리 시스템 자원들에 대응하는 것처럼 취급하도록 구성된다.
(9) 항목 (8)에 있어서, 에일리어싱하는 물리적 어드레스들은 상이한 물리적 어드레스 공간들 내의 동일한 물리적 어드레스 값을 사용하여 표현된다.
(10) 항목 (8) 또는 항목 (9)에 있어서, 상기 적어도 하나의 PoPA-전 메모리 시스템 컴포넌트는 적어도 하나의 PoPA-전 캐시를 포함하고; 장치는, 상기 적어도 하나의 PoPA-전 캐시가 타깃 가상 어드레스에 대응하는 타깃 물리적 어드레스 값과 연관된 하나 이상의 엔트리들을 무효화하는 것을 요청하기 위한 적어도 하나의 무효화 명령을 발행하기 위해, 타깃 어드레스를 특정하는 PoPA까지-캐시-무효화 명령어에 응답하는 프로세싱 회로부를 포함한다.
(11) 임의의 선행 항목에 있어서, 어드레스 변환 회로부 및 요청자측 필터링 회로부 중 적어도 하나는 메모리 액세스 요청이 발행되었던 요청자 회로부의 현재 동작 도메인에 적어도 기초하여, 선택된 물리적 어드레스 공간을 선택하도록 구성되고, 현재 도메인은 복수의 동작 도메인 중 하나의 도메인을 포함한다.
(12) 항목 (11)에 있어서, 어드레스 변환 회로부는 적어도 하나의 페이지 테이블 엔트리에 기초하여 타깃 가상 어드레스를 타깃 물리적 어드레스로 변환하도록 구성되고; 적어도 현재 도메인이 복수의 도메인들의 서브세트 중 하나의 도메인일 때, 상기 어드레스 변환 회로부 및 요청자측 필터링 회로부 중 적어도 하나는, 현재 도메인 및 상기 적어도 하나의 페이지 테이블 엔트리에 특정된 물리적 어드레스 공간 선택 정보에 기초하여, 선택된 물리적 어드레스 공간을 선택하도록 구성된다.
(13) 항목 (11) 또는 항목 (12)에 있어서, 복수의 도메인들은 적어도, 안전한 물리적 어드레스 공간과 연관된 안전한 도메인 및 덜 안전한 물리적 어드레스 공간과 연관된 덜 안전한 도메인을 포함하고; 덜 안전한 물리적 어드레스 공간은, 현재 도메인이 덜 안전한 도메인 또는 안전한 도메인일 때 선택된 물리적 어드레스 공간으로서 선택가능하고; 안전한 물리적 어드레스 공간은, 현재 도메인이 안전한 도메인일 때 선택된 물리적 어드레스 공간으로서 선택가능하고, 현재 도메인이 덜 안전한 도메인일 때 선택된 물리적 어드레스 공간으로서 선택되는 것이 금지된다.
(14) 항목 (13)에 있어서, 복수의 도메인들은 또한 추가의 물리적 어드레스 공간과 연관된 추가의 도메인을 포함하고; 덜 안전한 물리적 어드레스 공간은, 현재 도메인이 추가의 도메인일 때 선택된 물리적 어드레스 공간으로서 선택가능하고; 추가의 물리적 어드레스 공간은, 현재 도메인이 추가의 도메인일 때 선택된 물리적 어드레스 공간으로서 선택가능하지만, 현재 도메인이 안전한 도메인 또는 덜 안전한 도메인일 때 선택된 물리적 어드레스 공간으로서 선택되는 것이 금지되고; 안전한 어드레스 공간은, 현재 도메인이 추가의 도메인일 때 선택된 물리적 어드레스 공간으로서 선택되는 것이 금지된다.
(15) 항목 (11) 내지 항목 (14) 중 어느 한 항목에 있어서, 복수의 도메인들은 다른 도메인들 사이의 스위칭을 관리하기 위한 루트 도메인을 포함하고, 루트 도메인은 루트 물리적 어드레스 공간과 연관된다.
(16) 항목 (15)에 있어서, 물리적 어드레스 공간들 모두가, 현재 도메인이 루트 도메인일 때 선택된 물리적 어드레스 공간으로서 선택가능한 것; 및 루트 물리적 어드레스 공간이, 현재 도메인이 루트 도메인 이외의 도메인일 때, 선택된 물리적 어드레스 공간으로서 선택되는 것이 금지되는 것 중 적어도 하나이다.
(17) 항목 (15) 또는 항목 (16)에 있어서, 입상 보호 정보는 루트 도메인에서 실행되는 소프트웨어에 의해 수정가능하다.
(18) 임의의 선행 항목에 있어서, 입상 보호 정보는 페이지 레벨 입도에서 정의된다.
(19) 임의의 선행 항목에 있어서, 입상 보호 정보는 실행 시간에 동적으로 업데이트가능하다.
(20) 임의의 선행 항목에 있어서, 입상 보호 정보가 적어도 하나의 허용된 물리적 어드레스 공간이 컴플리터측 필터링 회로부에 의해 해결될 것임을 나타내는 통과 표시자를 특정할 때, 요청자측 필터링 회로부는, 선택된 물리적 어드레스 공간이 상기 적어도 하나의 허용된 물리적 어드레스 공간 중 하나의 물리적 어드레스 공간인지의 체크와 무관하게, 메모리 액세스 요청을 상호접속부로 전달할지 여부를 결정하도록 구성된다.
(21) 임의의 선행 항목에 있어서, 장치는, 메모리 액세스 요청이 컴플리터 디바이스에 의해 서비스되도록 허용되는지 여부를 결정하기 위해, 타깃 물리적 어드레스 및 선택된 물리적 어드레스 공간에 기초하여 컴플리터측 보호 정보의 컴플리터측 보호 룩업을 수행하기 위해, 타깃 물리적 어드레스 및 선택된 물리적 어드레스 공간을 특정하는, 상호접속부로부터 수신된 메모리 액세스 요청에 응답하는 컴플리터측 필터링 회로부를 포함한다.
(22) 데이터 프로세싱 방법은, 요청자 회로부에 의해 발행된 메모리 액세스 요청에 의해 특정된 타깃 가상 어드레스를 타깃 물리적 어드레스로 변환하는 단계; 및 메모리 액세스 요청을 상호접속부를 통해 메모리 액세스 요청을 서비스하기 위한 컴플리터 디바이스에 전달할지 여부를 결정하기 위해, 요청자측 필터링 회로부에서, 타깃 물리적 어드레스 및 메모리 액세스 요청과 연관된 선택된 물리적 어드레스 공간에 기초하여 입상 보호 룩업을 수행하는 단계 - 상기 선택된 물리적 어드레스 공간은 복수의 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간임 - 를 포함하고; 여기서, 입상 보호 룩업에서, 요청자측 필터링 회로부는, 타깃 물리적 어드레스를 포함하는 물리적 어드레스들의 타깃 입상에 대응하는 입상 보호 정보를 획득하고 - 입상 보호 정보는 타깃 입상과 연관된 적어도 하나의 허용된 물리적 어드레스 공간을 나타냄 -; 입상 보호 정보가, 선택된 물리적 어드레스 공간이 상기 적어도 하나의 허용된 물리적 어드레스 공간 중 하나의 물리적 어드레스 공간이 아님을 나타낼 때, 메모리 액세스 요청을 차단한다.
(23) 타깃 코드의 실행을 위한 명령어 실행 환경을 제공하도록 호스트 데이터 프로세싱 장치를 제어하기 위한 컴퓨터 프로그램은, 메모리 액세스 요청에 의해 특정된 타깃 시뮬레이션된 가상 어드레스를 타깃 시뮬레이션된 물리적 어드레스로 변환하기 위한 어드레스 변환 프로그램 로직; 및 메모리 액세스 요청이 서비스될 수 있는지 여부를 결정하기 위해, 타깃 시뮬레이션된 물리적 어드레스 및 메모리 액세스 요청과 연관된 선택된 시뮬레이션된 물리적 어드레스 공간에 기초하여 입상 보호 룩업을 수행하기 위한 필터링 프로그램 로직 - 상기 선택된 시뮬레이션된 물리적 어드레스 공간은 복수의 시뮬레이션된 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간임 - 을 포함하고; 여기서, 입상 보호 룩업에서, 필터링 프로그램 로직은, 타깃 시뮬레이션된 물리적 어드레스를 포함하는 시뮬레이션된 물리적 어드레스들의 타깃 입상에 대응하는 입상 보호 정보를 획득하도록 - 입상 보호 정보는 타깃 입상과 연관된 적어도 하나의 허용된 시뮬레이션된 물리적 어드레스 공간을 나타냄 -; 그리고 입상 보호 정보가 선택된 시뮬레이션된 물리적 어드레스 공간이 상기 적어도 하나의 허용된 시뮬레이션된 물리적 어드레스 공간 중 하나의 물리적 어드레스 공간이 아님을 나타낼 때, 메모리 액세스 요청이 서비스되는 것을 방지하도록 구성된다.
(24) 항목 (23)의 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 저장 매체.
본 출원에서, "...하도록 구성된"이라는 말은 장치의 요소가 정의된 동작을 수행할 수 있는 구성을 갖는다는 것을 의미하는 데 사용된다. 이러한 문맥에서, "구성"은 하드웨어 또는 소프트웨어의 상호접속의 배열 또는 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 가질 수 있거나, 프로세서 또는 다른 프로세싱 디바이스가 기능을 수행하도록 프로그래밍될 수 있다. "하도록 구성된"은, 장치 요소가, 정의된 동작을 제공하기 위해 어떤 방식으로든 변경될 필요가 있음을 암시하지는 않는다.
본 발명의 예시적인 실시예들이 첨부 도면들을 참조하여 본 명세서에 상세히 설명되었지만, 본 발명은 그러한 정확한 실시예들로 제한되지 않는다는 것 그리고 첨부된 청구범위에 의해 정의되는 바와 같은 본 발명의 범주로부터 벗어나지 않으면서 당업자에 의해 다양한 변경들, 및 수정들이 이루어질 수 있다는 것이 이해될 것이다.

Claims (21)

  1. 장치로서,
    적어도 3개의 도메인들 중 하나의 도메인에서 프로세싱을 수행하기 위한 프로세싱 회로부; 및
    현재 도메인으로부터 수행되는 메모리 액세스의 가상 어드레스를 적어도 상기 현재 도메인에 기초하여 선택된 복수의 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간 내의 물리적 어드레스로 변환하기 위한 어드레스 변환 회로부를 포함하고,
    상기 적어도 3개의 도메인들은 상기 적어도 3개의 도메인들 중 복수의 다른 도메인들 사이의 스위칭을 관리하기 위한 루트 도메인을 포함하고,
    상기 복수의 물리적 어드레스 공간들은 상기 복수의 다른 도메인들과 연관된 물리적 어드레스 공간들과 별개인, 상기 루트 도메인과 연관된 루트 물리적 어드레스 공간을 포함하는, 장치.
  2. 제1항에 있어서, 상기 루트 물리적 어드레스 공간은 상기 루트 도메인으로부터 배타적으로 액세스가능한, 장치.
  3. 제1항 또는 제2항에 있어서, 상기 복수의 물리적 어드레스 공간들 모두는 상기 루트 도메인으로부터 액세스가능한, 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 복수의 다른 도메인들은 적어도, 안전한 물리적 어드레스 공간과 연관된 안전한 도메인 및 덜 안전한 물리적 어드레스 공간과 연관된 덜 안전한 도메인을 포함하고,
    상기 덜 안전한 물리적 어드레스 공간은 상기 덜 안전한 도메인, 상기 안전한 도메인 및 상기 루트 도메인으로부터 액세스가능하고,
    상기 안전한 물리적 어드레스 공간은 상기 안전한 도메인 및 상기 루트 도메인으로부터 액세스가능하고, 상기 덜 안전한 도메인으로부터는 액세스불가능한, 장치.
  5. 제4항에 있어서, 상기 복수의 다른 도메인들은 또한 추가의 물리적 어드레스 공간과 연관된 추가의 도메인을 포함하고,
    상기 덜 안전한 물리적 어드레스 공간은 또한 상기 추가의 도메인으로부터 액세스가능하고,
    상기 추가의 물리적 어드레스 공간은 상기 추가의 도메인 및 상기 루트 도메인으로부터 액세스가능하고, 상기 덜 안전한 도메인으로부터는 액세스불가능한, 장치.
  6. 제5항에 있어서, 상기 추가의 물리적 어드레스 공간은 상기 안전한 도메인으로부터 액세스불가능하고,
    상기 안전한 물리적 어드레스 공간은 상기 추가의 도메인으로부터 액세스불가능한, 장치.
  7. 제4항 내지 제6항 중 어느 한 항에 있어서, 상기 덜 안전한 물리적 어드레스 공간은 상기 적어도 3개의 도메인들 모두로부터 액세스가능한, 장치.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 어드레스 변환 회로부는 적어도 하나의 페이지 테이블 엔트리에 기초하여 상기 가상 어드레스를 상기 물리적 어드레스로 변환하도록 구성되고,
    적어도 상기 현재 도메인이 상기 적어도 3개의 도메인들의 서브세트 중 하나의 도메인일 때, 상기 어드레스 변환 회로부는, 상기 현재 도메인 및 상기 적어도 하나의 페이지 테이블 엔트리에 특정된 물리적 어드레스 공간 선택 정보에 기초하여, 상기 복수의 물리적 어드레스 공간들 중 상기 하나의 물리적 어드레스 공간을 선택하도록 구성되는, 장치.
  9. 제8항에 있어서, 상기 현재 도메인이 상기 루트 도메인일 때, 상기 어드레스 변환 회로부는, 상기 물리적 어드레스 공간 선택 정보가 상기 루트 도메인으로부터 액세스가능한 적어도 3개의 물리적 어드레스 공간들 사이에서 선택하기 위한 적어도 2개의 비트들의 물리적 어드레스 공간 선택 정보를 포함하는, 루트-도메인 페이지 테이블 엔트리에 기초하여 상기 가상 어드레스를 상기 물리적 어드레스로 변환하도록 구성되는, 장치.
  10. 제6항에 있어서, 상기 어드레스 변환 회로부는 적어도 하나의 페이지 테이블 엔트리에 기초하여 상기 가상 어드레스를 상기 물리적 어드레스로 변환하도록 구성되고,
    상기 현재 도메인이 상기 안전한 도메인일 때, 상기 어드레스 변환 회로부는 상기 적어도 하나의 페이지 테이블 엔트리에 특정된 물리적 어드레스 공간 선택 표시자에 기초하여, 상기 복수의 물리적 어드레스 공간들 중 상기 하나의 물리적 어드레스 공간이 상기 안전한 물리적 어드레스 공간인지 또는 상기 덜 안전한 물리적 어드레스 공간인지를 선택하도록 구성되고,
    상기 현재 도메인이 상기 추가의 도메인일 때, 상기 어드레스 변환 회로부는 상기 적어도 하나의 페이지 테이블 엔트리에 특정된 물리적 어드레스 공간 선택 표시자에 기초하여, 상기 복수의 물리적 어드레스 공간들 중 상기 하나의 물리적 어드레스 공간이 상기 추가의 물리적 어드레스 공간인지 또는 상기 덜 안전한 물리적 어드레스 공간인지를 선택하도록 구성되는, 장치.
  11. 제10항에 있어서, 상기 물리적 어드레스 공간 선택 표시자는, 상기 현재 도메인이 상기 안전한 도메인인지 또는 상기 추가의 도메인인지에 관계없이, 상기 적어도 하나의 페이지 테이블 엔트리 내의 동일한 포지션(position)에 인코딩되는, 장치.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서, 동일한 메모리 시스템 자원에 대응하는 상이한 물리적 어드레스 공간들로부터의 에일리어싱하는 물리적 어드레스(aliasing physical address)들을, 상기 에일리어싱하는 물리적 어드레스들이 상이한 메모리 시스템 자원들에 대응하는 것처럼 취급하기 위해, 물리적 에일리어싱의 지점(point of physical aliasing, PoPA) 위쪽에 제공되는 적어도 하나의 PoPA-전 메모리 시스템 컴포넌트를 포함하는, 장치.
  13. 제12항에 있어서, 상기 에일리어싱하는 물리적 어드레스들은 상기 상이한 물리적 어드레스 공간들 내의 동일한 물리적 어드레스 값을 사용하여 표현되는 물리적 어드레스들을 포함하는, 장치.
  14. 제12항 또는 제13항에 있어서, 적어도 하나의 아래쪽 메모리 시스템 컴포넌트에 제공될 디에일리어싱된 물리적 어드레스(de-aliased physical address)를 획득하기 위해, 상기 복수의 에일리어싱하는 물리적 어드레스들을 디에일리어싱하도록 구성된 PoPA 메모리 시스템 컴포넌트를 포함하는, 장치.
  15. 제12항 내지 제14항 중 어느 한 항에 있어서, 상기 적어도 하나의 PoPA-전 메모리 시스템 컴포넌트는 적어도 하나의 PoPA-전 캐시를 포함하고,
    타깃 어드레스를 특정하는 PoPA까지-캐시-무효화 명령어(cache-invalidate-to-PoPA instruction)에 응답하여, 상기 프로세싱 회로부는 상기 적어도 하나의 PoPA-전 캐시가 상기 타깃 어드레스에 대응하는 타깃 물리적 어드레스 값과 연관된 하나 이상의 엔트리들을 무효화하는 것을 요청하기 위한 적어도 하나의 무효화 명령을 발행하도록 구성되는, 장치.
  16. 제15항에 있어서, 상기 프로세싱 회로부가 상기 적어도 하나의 무효화 명령을 발행할 때, 상기 PoPA 아래쪽에 위치된 적어도 하나의 PoPA-후 캐시는 상기 타깃 물리적 어드레스 값과 연관된 하나 이상의 엔트리들을 유지하도록 허용되는, 장치.
  17. 제15항 또는 제16항에 있어서, 상기 적어도 하나의 무효화 명령에 응답하여, 상기 적어도 하나의 PoPA-전 캐시는, 상기 복수의 물리적 어드레스 공간들 중 어느 물리적 어드레스 공간이 상기 하나 이상의 엔트리들과 연관되는지에 관계없이, 상기 타깃 물리적 어드레스 값과 연관된 상기 하나 이상의 엔트리들을 무효화하도록 구성되는, 장치.
  18. 제1항 내지 제17항 중 어느 한 항에 있어서, 타깃 물리적 어드레스가 보호되는 어드레스 영역 내에 있을 때, 선택된 물리적 어드레스 공간에 따라 선택된 복수의 암호화 키들 중 하나의 암호화 키에 기초하여 상기 보호되는 영역과 연관된 데이터를 암호화 또는 복호화하기 위해, 상기 선택된 물리적 어드레스 공간 및 상기 선택된 물리적 어드레스 공간 내의 상기 타깃 물리적 어드레스를 특정하는 메모리 액세스 요청에 응답하는 메모리 암호화 회로부를 포함하는, 장치.
  19. 데이터 프로세싱 방법으로서,
    적어도 3개의 도메인들 중 하나의 도메인에서 프로세싱을 수행하는 단계; 및
    현재 도메인으로부터 수행되는 메모리 액세스의 가상 어드레스를 적어도 상기 현재 도메인에 기초하여 선택된 복수의 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간 내의 물리적 어드레스로 변환하는 단계를 포함하고,
    상기 적어도 3개의 도메인들은 상기 적어도 3개의 도메인들 중 복수의 다른 도메인들 사이의 스위칭을 관리하기 위한 루트 도메인을 포함하고,
    상기 복수의 물리적 어드레스 공간들은 상기 복수의 다른 도메인들과 연관된 물리적 어드레스 공간들과 별개인, 상기 루트 도메인과 연관된 루트 물리적 어드레스 공간을 포함하는, 방법.
  20. 타깃 코드의 실행을 위한 명령어 실행 환경을 제공하도록 호스트 데이터 프로세싱 장치를 제어하기 위한 컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램은,
    적어도 3개의 도메인들 중 하나의 도메인에서 상기 타깃 코드의 프로세싱을 시뮬레이션하기 위한 프로세싱 프로그램 로직(processing program logic); 및
    현재 도메인으로부터 수행되는 메모리 액세스의 가상 어드레스를 적어도 상기 현재 도메인에 기초하여 선택된 복수의 시뮬레이션된 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간 내의 물리적 어드레스로 변환하기 위한 어드레스 변환 프로그램 로직을 포함하고,
    상기 적어도 3개의 도메인들은 상기 적어도 3개의 도메인들 중 복수의 다른 도메인들 사이의 스위칭을 관리하기 위한 루트 도메인을 포함하고,
    상기 복수의 시뮬레이션된 물리적 어드레스 공간들은 상기 복수의 다른 도메인들과 연관된 시뮬레이션된 물리적 어드레스 공간들과 별개인, 상기 루트 도메인과 연관된 루트 시뮬레이션된 물리적 어드레스 공간을 포함하는, 컴퓨터 프로그램.
  21. 제20항의 상기 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 저장 매체.
KR1020227036741A 2020-03-24 2021-01-26 복수의 물리적 어드레스 공간들을 사용하는 장치 및 방법 KR20220148323A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2004257.8 2020-03-24
GB2004257.8A GB2593485B (en) 2020-03-24 2020-03-24 Apparatus and method using plurality of physical address spaces
PCT/GB2021/050174 WO2021191576A1 (en) 2020-03-24 2021-01-26 Apparatus and method using plurality of physical address spaces

Publications (1)

Publication Number Publication Date
KR20220148323A true KR20220148323A (ko) 2022-11-04

Family

ID=70546709

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227036741A KR20220148323A (ko) 2020-03-24 2021-01-26 복수의 물리적 어드레스 공간들을 사용하는 장치 및 방법

Country Status (9)

Country Link
US (1) US20230132695A1 (ko)
EP (1) EP4127945B1 (ko)
JP (1) JP2023518481A (ko)
KR (1) KR20220148323A (ko)
CN (1) CN115335813A (ko)
GB (1) GB2593485B (ko)
IL (1) IL295778A (ko)
TW (1) TW202137008A (ko)
WO (1) WO2021191576A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2627496A (en) * 2023-02-24 2024-08-28 Advanced Risc Mach Ltd Determining whether to reject a memory access request issued by a requester device

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2411254B (en) * 2002-11-18 2006-06-28 Advanced Risc Mach Ltd Monitoring control for multi-domain processors
WO2004046925A1 (en) * 2002-11-18 2004-06-03 Arm Limited Security mode switching via an exception vector
US7526771B2 (en) * 2003-11-12 2009-04-28 Ntt Docomo, Inc. Method and apparatus for configuring an application while the application is running
US7363491B2 (en) * 2004-03-31 2008-04-22 Intel Corporation Resource management in security enhanced processors
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
US9934166B2 (en) * 2010-12-10 2018-04-03 Daniel Shawcross Wilkerson Hard object: constraining control flow and providing lightweight kernel crossings
US9792459B2 (en) * 2013-04-29 2017-10-17 Sri International Flexible policy arbitration control suite
US10838773B2 (en) * 2018-03-30 2020-11-17 Intel Corporation Techniques for dynamic resource allocation among cryptographic domains
CN110442425B (zh) * 2019-07-19 2022-04-08 南京芯驰半导体科技有限公司 一种虚拟化地址空间隔离系统及方法
US11734440B2 (en) * 2019-09-09 2023-08-22 Arm Limited Memory access transaction with security check indication

Also Published As

Publication number Publication date
EP4127945A1 (en) 2023-02-08
GB2593485B (en) 2022-06-15
IL295778A (en) 2022-10-01
CN115335813A (zh) 2022-11-11
TW202137008A (zh) 2021-10-01
WO2021191576A1 (en) 2021-09-30
JP2023518481A (ja) 2023-05-01
GB2593485A (en) 2021-09-29
US20230132695A1 (en) 2023-05-04
EP4127945B1 (en) 2024-09-04
GB202004257D0 (en) 2020-05-06

Similar Documents

Publication Publication Date Title
EP4127948B1 (en) Apparatus and method using plurality of physical address spaces
US11989134B2 (en) Apparatus and method
KR20220165775A (ko) 입상 보호 데이터에 대한 데이터 무결성 체크
US20230342303A1 (en) Translation table address storage circuitry
US11954048B2 (en) Variable nesting control parameter for table structure providing access control information for controlling access to a memory system
EP4127945B1 (en) Apparatus and method using plurality of physical address spaces
WO2024175867A1 (en) Predetermined less-secure memory property
TW202435079A (zh) 預定之較低安全記憶體性質