KR20230163486A - 파티션 식별자 공간 선택 - Google Patents

파티션 식별자 공간 선택 Download PDF

Info

Publication number
KR20230163486A
KR20230163486A KR1020237036880A KR20237036880A KR20230163486A KR 20230163486 A KR20230163486 A KR 20230163486A KR 1020237036880 A KR1020237036880 A KR 1020237036880A KR 20237036880 A KR20237036880 A KR 20237036880A KR 20230163486 A KR20230163486 A KR 20230163486A
Authority
KR
South Korea
Prior art keywords
space
partition
partition identifier
memory system
access request
Prior art date
Application number
KR1020237036880A
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 KR20230163486A publication Critical patent/KR20230163486A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/1016Performance 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/68Details of translation look-aside buffer [TLB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)

Abstract

처리 회로부(310)는 각각이 대응하는 물리 어드레스 공간과 연관된 적어도 3개의 도메인 중 하나에서 명령어들을 처리하고, 메모리 시스템에 메모리 액세스 요청을 발행하며, 메모리 액세스 요청은 (메모리 액세스 요청이 발행되게 한 현재 소프트웨어 실행 환경과 연관된 프로그래밍 가능한 파티션 식별자 선택 정보에 기초하여 선택된) 파티션 식별자 및 (처리 회로부의 현재 도메인에 기초하여 적어도 3개의 파티션 식별자 공간 중에서 선택되는) 선택된 파티션 식별자 공간을 나타내는 멀티-비트 파티션 식별자 공간 표시자를 포함한다. 선택된 파티션 식별자 공간과 파티션 식별자(332, 334)는 함께, 메모리 시스템 컴포넌트에서, 메모리 액세스 요청을 핸들링하기 위한 리소스의 할당을 제어하거나 상기 리소스에 대한 경합을 관리하기 위한 파라미터를 선택하기 위한, 또는 메모리 액세스 요청에 응답하여 성능 모니터링 데이터가 업데이트되는지를 선택하기 위한 정보를 나타낸다.

Description

파티션 식별자 공간 선택
본 기법은 데이터 처리의 분야에 관한 것이다.
애플리케이션 또는 가상 머신과 같은 2개 이상의 소프트웨어 실행 환경은, 소프트웨어 실행 환경들 사이에 공유되는 공통 메모리 시스템에 대한 액세스로 동일한 데이터 처리 시스템에서 실행될 수 있다. 일부 시스템의 경우, 공유 메모리 시스템에서 너무 많은 리소스를 사용하는 다른 소프트웨어 실행 환경으로 인해 하나의 소프트웨어 실행 환경의 성능이 저해되지 않는 것이 중요할 수 있다. 이러한 문제는 "시끄러운 이웃(noisy neighbour)" 문제로 지칭될 수 있고, 예를 들어, 엔터프라이즈 네트워킹(enterprise networking) 또는 서버 시스템에 특히 중요할 수 있다.
적어도 몇몇 예들은 장치로서,
각각이 대응하는 물리 어드레스 공간과 연관된 적어도 3개의 도메인들 중 하나에서 명령어들을 처리하고, 타겟 메모리 시스템 위치를 나타내는 타겟 어드레스를 지정하는 메모리 액세스 요청을 메모리 시스템에 발행하기 위한 처리 회로부;
메모리 액세스 요청이 발행되게 한 현재 소프트웨어 실행 환경과 연관된 프로그래밍 가능한 파티션 식별자 선택 정보에 기초하여 파티션 식별자를 선택하기 위한 파티션 식별자 선택 회로부; 및
처리 회로부의 현재 도메인에 기초하여 적어도 3개의 파티션 식별자 공간들 중에서 선택된 파티션 식별자 공간을 선택하기 위한 파티션 식별자 공간 선택 회로부를 포함하며;
선택된 파티션 식별자 공간과 파티션 식별자는 함께, 메모리 시스템의 메모리 시스템 컴포넌트에서, 메모리 액세스 요청을 핸들링하기 위한 리소스들의 할당을 제어하거나 상기 리소스들에 대한 경합을 관리하기 위한 하나 이상의 메모리 시스템 리소스 제어 파라미터들의 세트를 선택하거나, 메모리 시스템 컴포넌트에서, 메모리 액세스 요청에 응답하여 성능 모니터링 데이터가 업데이트되는지를 선택하기 위한 정보를 나타내고;
처리 회로부는 메모리 액세스 요청을 메모리 시스템에 발행하도록 구성되며, 메모리 액세스 요청은 파티션 식별자, 및 파티션 식별자 공간 선택 회로부에 의해 선택되는 선택된 파티션 식별자 공간을 나타내는 복수의 비트들을 포함하는 파티션 식별자 공간 표시자를 지정하는, 장치를 제공한다.
적어도 몇몇 예들은 메모리 시스템 컴포넌트로서,
메모리 액세스 요청을 수신하기 위한 메모리 액세스 요청 수신 회로부 - 메모리 액세스 요청은 메모리 시스템 내의 타겟 메모리 시스템 위치를 나타내는 타겟 어드레스, 적어도 3개의 파티션 식별자 공간들 중에서 선택되는 선택된 파티션 식별자 공간을 나타내는 복수의 비트들을 포함하는 파티션 식별자 공간 표시자, 및 메모리 액세스 요청이 발행되게 한 현재 소프트웨어 실행 환경과 연관된 파티션 식별자를 지정함 -; 및
파티션 식별자 공간 표시자 및 파티션 식별자에 기초하여 하나 이상의 메모리 시스템 리소스 제어 파라미터들의 세트를 선택하고, 선택된 메모리 시스템 리소스 제어 파라미터들의 세트에 기초하여, 메모리 액세스 요청을 핸들링하기 위한 리소스들의 할당을 제어하거나 상기 리소스들에 대한 경합을 관리하기 위한 리소스 제어 회로부; 및/또는
파티션 식별자 공간 표시자 및 파티션 식별자에 기초하여, 메모리 액세스 요청에 응답하여 성능 모니터링 데이터가 업데이트되는지를 제어하기 위한 성능 모니터링 제어 회로부
중 적어도 하나를 포함하는, 메모리 시스템 컴포넌트를 제공한다.
적어도 몇몇 예들은 방법으로서,
각각이 대응하는 물리 어드레스 공간과 연관된 적어도 3개의 도메인들 중 하나에서 명령어들을 처리하는 단계;
메모리 액세스 요청이 발행되게 한 현재 소프트웨어 실행 환경과 연관된 프로그래밍 가능한 파티션 식별자 선택 정보에 기초하여 파티션 식별자를 선택하는 단계;
처리 회로부의 현재 도메인에 기초하여 적어도 3개의 파티션 식별자 공간들 중에서 선택된 파티션 식별자 공간을 선택하는 단계;
타겟 메모리 시스템 위치를 나타내는 타겟 어드레스, 파티션 식별자, 및 선택된 파티션 식별자 공간을 나타내는 복수의 비트들을 포함하는 파티션 식별자 공간 표시자를 지정하는 메모리 액세스 요청을 메모리 시스템에 발행하는 단계; 및
파티션 식별자 공간 표시자 및 파티션 식별자에 기초하여 하나 이상의 메모리 시스템 리소스 제어 파라미터들의 세트를 선택하고, 선택된 메모리 시스템 리소스 제어 파라미터들의 세트에 기초하여, 메모리 액세스 요청을 핸들링하기 위한 리소스들의 할당을 제어하거나 상기 리소스들에 대한 경합을 관리하는 단계; 및/또는
파티션 식별자 공간 표시자 및 파티션 식별자에 기초하여, 메모리 액세스 요청에 응답하여 성능 모니터링 데이터가 업데이트되는지를 제어하는 단계
중 적어도 하나를 포함하는, 방법을 제공한다.
본 기법의 추가의 태양들, 특징들 및 이점들이 첨부 도면들과 관련하여 읽혀질 예들의 하기의 설명으로부터 명백해질 것이다.
도 1은 메모리 시스템을 포함하는 데이터 처리 시스템의 예를 개략적으로 예시한다.
도 2는 메모리 트랜잭션과 연관된 소프트웨어 실행 환경에 할당된 파티션 ID 및 파티션 ID 공간 표시자에 의존하는 메모리 시스템 리소스들의 파티셔닝 제어의 예를 개략적으로 예시한다.
도 3은 처리 회로부, 파티션 ID 선택 회로부, 및 파티션 ID 공간 선택 회로부를 갖는 장치의 예를 개략적으로 예시한다.
도 4는 처리 회로부가 동작할 수 있는 다수의 도메인들을 예시한다.
도 5는 메모리 시스템 내의 위치들을 식별하는 시스템 물리 어드레스 공간 상에의 다수의 물리 어드레스 공간들의 에일리어싱(aliasing)을 개략적으로 예시한다.
도 6은 상이한 아키텍처 물리 어드레스 공간들이 시스템 물리 어드레스 공간의 각자의 부분들에 액세스하도록 유효 하드웨어 물리 어드레스 공간을 파티셔닝하는 예를 예시한다.
도 7은 메모리 액세스 요청의 발행을 제어하는 방법을 예시하는 흐름도이다.
도 8은 주어진 메모리 액세스 요청에 대한 물리 어드레스 공간을 선택하는 것을 도시하는 흐름도이다.
도 9는 액세스된 물리 어드레스에 대응하는 과립 보호 테이블 엔트리에 지정된 정보에 기초한 물리 어드레스 공간 필터 체크를 도시하는 흐름도이다.
도 10은 메모리 액세스 요청에 대한 파티션 ID 및 파티션 ID 공간의 선택을 제어하기 위한 제어 레지스터들의 예를 예시한다.
도 11은 처리 시스템에서 구현되는 특징들을 나타내는 발견 정보를 제공하기 위한 발견 레지스터의 예를 도시한다.
도 12는 도 10에 도시된 제어 레지스터들 중 일부를 더 상세히 도시한다.
도 13a 및 도 13b는 각각 데이터 액세스 및 명령어 페치 액세스를 위한 파티션 ID 선택을 예시한다.
도 14는 파티션 ID 공간 선택을 예시하는 흐름도이다.
도 15는 기본 파티션 ID 공간을 사용할지 또는 대안 파티션 ID 공간을 사용할지를 선택하기 위한 도 14의 단계를 더 상세히 예시하는 흐름도이다.
도 16은 메모리 시스템 컴포넌트의 부분들을 예시한다.
도 17은 메모리 시스템 컴포넌트에서의 메모리 액세스 요청의 처리를 도시하는 흐름도이다.
도 18은 상이한 수의 파티션 ID 공간들을 지원하는 장치의 영역들 간의 경계에서 브리징 회로부를 포함하는 처리 시스템의 예를 예시한다.
장치는 명령어들을 처리하고 타겟 메모리 시스템 위치를 나타내는 타겟 어드레스를 지정하는 메모리 액세스 요청을 메모리 시스템에 발행하기 위한 처리 회로부를 가질 수 있다. 파티션 ID 선택 회로부는 메모리 액세스 요청이 발행되게 한 현재 소프트웨어 실행 환경과 연관된 프로그래밍 가능한 파티션 ID 선택 정보에 기초하여 파티션 식별자(ID)를 선택하도록 제공될 수 있다. 선택된 파티션 ID는 메모리 액세스 요청을 핸들링하기 위한 리소스들의 할당을 제어하거나 리소스들에 대한 경합을 관리하기 위한 하나 이상의 메모리 시스템 리소스 제어 파라미터들의 세트를 선택하기 위해, 또는 액세스 요청에 응답하여 성능 모니터링 데이터가 업데이트되는지 여부를 메모리 시스템 컴포넌트에서 선택하기 위해 메모리 시스템의 메모리 시스템 컴포넌트에 의해 사용될 수 있다. 따라서, 파티션 ID는 메모리 액세스 요청을 발행한 상이한 소프트웨어를 구별하는 데 사용될 수 있는 메모리 액세스 요청에 대한 라벨로서 제시될 수 있고, 따라서 메모리 시스템 내의 리소스들을 하나의 소프트웨어 실행 환경이 그의 공정한 몫보다 많은 리소스를 차지하는 것을 회피하고, 전술한 시끄러운 이웃 문제를 해결하기 위해 소프트웨어 실행 환경들 사이에서 파티셔닝될 수 있고/있거나, 상이한 파티션 ID들과 연관된 소프트웨어 또는 소프트웨어의 서브세트들의 상이한 피스들에 대한 성능 모니터링이, 상이한 소프트웨어에 의해 인식되는 성능에 대한 더 정확한 정보가 수집되는 것을 가능하게 하기 위해, 메모리 시스템 컴포넌트들에서 수행될 수 있다. 어느 쪽이든, 이것은 시끄러운 이웃 문제를 해결하는 데 도움이 될 수 있다.
처리 회로부는 각각이 대응하는 물리 어드레스 공간과 연관된 적어도 3개의 도메인 중 하나에서 명령어들을 처리할 수 있다. 물리 어드레스는 메모리 시스템 내의 위치를 참조하기 위해 데이터 처리 시스템에서 사용될 수 있지만, 처리 시스템은 가상 메모리의 사용을 지원할 수 있으며, 여기서 어드레스 변환 회로부는 처리 회로부에서 실행된 명령어들에 의해 지정된 가상 어드레스를 액세스될 메모리 시스템 및 위치와 연관된 대응하는 물리 어드레스로 변환하는 데 사용될 수 있다. 가상 어드레스들과 물리 어드레스들 사이의 매핑들은 하나 이상의 페이지 테이블 구조들에 정의될 수 있다. 페이지 테이블 구조들 내의 페이지 테이블 엔트리들은 또한, 처리 회로부 상에서 실행되는 주어진 소프트웨어 프로세스가 특정 가상 어드레스에 액세스하도록 허용되는지를 제어할 수 있는 어떤 액세스 허가 정보를 정의할 수 있다.
몇몇 처리 시스템들에서, 모든 가상 어드레스들은 어드레스 변환 회로부에 의해, 액세스될 메모리 내의 위치들을 식별하기 위해 메모리 시스템에 의해 사용되는 단일 물리 어드레스 공간 상으로 매핑될 수 있다. 그러한 시스템에서, 특정 소프트웨어 프로세스가 특정 어드레스에 액세스할 수 있는지에 대한 제어는 가상 어드레스-대-물리 어드레스 변환 매핑들을 제공하는 데 사용되는 페이지 테이블 구조들에 기초하여 제공된다. 그러나, 그러한 페이지 테이블 구조들은 전형적으로 운영 체제 및/또는 하이퍼바이저에 의해 정의될 수 있다. 운영 체제 또는 하이퍼바이저가 손상된 경우, 이는, 공격자가 민감한 정보에 액세스할 수 있게 되는 보안 누설(security leak)을 야기할 수 있다.
따라서, 소정 프로세스들이 다른 프로세스들로부터 격리되어 안전하게 실행될 필요가 있는 몇몇 시스템들의 경우, 시스템은 다수의 도메인들에서의 동작을 지원할 수 있고 다수의 개별적인 물리 어드레스 공간들이 지원될 수 있으며, 여기서, 메모리 시스템의 적어도 일부 컴포넌트들에 대해서는, 가상 어드레스들이 상이한 물리 어드레스 공간들 내의 물리 어드레스들로 변환되는 메모리 액세스 요청들이, 각자의 물리 어드레스 공간들 내의 물리 어드레스들이 실제로는 메모리 내의 동일한 위치에 대응하더라도, 그들이 메모리 내의 완전히 별개인 어드레스들에 액세스하고 있는 것처럼 취급된다. 처리 회로부의 동작의 상이한 도메인들로부터의 액세스들을 일부 메모리 시스템 컴포넌트들에 의해 볼 때처럼 각자의 개별적인 물리 어드레스 공간들로 격리시킴으로써, 이는 운영 체제 또는 하이퍼바이저에 의해 설정된 페이지 테이블 허가 정보에 의존하지 않는 더 강한 보안 보장을 제공할 수 있다.
이러한 방식으로 별개의 물리 어드레스 공간들을 지원하는 몇몇 시스템들은 각각이 대응하는 물리 어드레스 공간과 연관된 2개의 도메인만을 지원하여, 안전한 도메인에서 동작하는 안전한 소프트웨어가 덜 안전한 도메인에서 동작하는 덜 안전한 소프트웨어로부터 격리될 수 있게 할 수 있다. 그러나, 소프트웨어 제공자에게, 동일한 하드웨어 플랫폼 상에서 실행되는 다른 소프트웨어와 연관된 다른 소프트웨어 제공자들을 신뢰할 필요성을 제한하는 안전한 컴퓨팅 환경을 제공하고자 하는 요구가 점점 더 증가하고 있다. 예를 들어, 모바일 결제 및 뱅킹, 부정행위 또는 해적행위 방지 메커니즘의 시행, 클라우드 시스템에서의 안전한 가상 머신 호스팅을 위한 보안 강화, 기밀 컴퓨팅 등과 같은 분야들에서 다수의 사용이 있을 수 있으며, 여기서 소프트웨어 코드를 제공하는 당사자는 동일한 물리적 플랫폼에서 실행될 소프트웨어 코드를 제공하는 다른 당사자를 기꺼이 신뢰하지 않을 수 있다. 더욱이 이것은 심지어 각각이 정상적인 애플리케이션-레벨 코드와 연관된 덜 안전한 환경으로부터 격리된 안전한 컴퓨팅 환경을 제공받기를 원하지만 서로를 신뢰하지 않는 둘 이상의 상이한 당사자들 사이에서 사실일 수 있으며, 따라서 각각이 대응하는 물리 어드레스 공간과 연관된 3개 이상의 별개의 도메인을 지원할 수 있는 것이 유용할 수 있다. 일부 예들에서 4개 이상의 도메인이 있을 수 있으며, 따라서 처리 회로부는 적어도 4개의 상이한 물리 어드레스 공간들 사이에서의 선택을 지원할 수 있다.
아래에서 논의되는 예들에서, 파티션 ID 공간 선택 회로부는 처리 회로부의 현재 도메인에 기초하여 적어도 3개의 파티션 ID 공간들 중에서 선택된 파티션 ID 공간을 선택하도록 제공된다. 선택된 파티션 ID 공간은, 메모리 액세스 요청의 파티션 ID와 함께, 메모리 시스템 리소스 제어 파라미터들의 세트를 선택하거나 메모리 액세스 요청에 응답하여 성능 데이터가 업데이트되는지를 선택하기 위한 정보로서 사용되어, 위에 논의된 바와 같이 메모리 리소스들의 성능 파티셔닝 및 성능 모니터링을 가능하게 한다. 메모리 액세스 요청이 처리 회로부에 의해 메모리 시스템에 발행될 때, 메모리 액세스 요청은 파티션 ID, 및 파티션 ID 공간 선택 회로부에 의해 선택되는 선택된 파티션 ID 공간을 나타내는 복수의 비트를 포함하는 파티션 ID 공간 표시자 둘 모두를 지정한다.
처리 회로부의 현재 도메인에 기초하여 선택될 수 있는 적어도 3개의 파티션 ID 공간을 지원한다는 것은 동일한 파티션 ID가 상이한 도메인들에서 사용될 수 있지만, 그러한 파티션 ID를 지정하는 요청들이 상이한 메모리 시스템 리소스 제어 파라미터 세트에 대응하는 것으로서 구별되거나 메모리 시스템 컴포넌트에 의한 성능 모니터링의 목적으로 구별될 수 있음을 의미한다. 대안은 처리 회로부에 의해 지원되는 도메인들 및 물리 어드레스 공간들의 수보다 적은 파티션 ID 공간들을 지원하는 것일 것인데, 이는 유효한 설계 선택일 것이지만, 둘 이상의 상이한 도메인에서의 소프트웨어가 동일한 파티션 ID 공간을 공유해야 하는 경우 이것은 상이한 도메인에서 파티션 ID들의 할당을 관리하는 소프트웨어가 서로 조정되어 파티션 ID들의 사용을 통해 주어진 도메인에서 소프트웨어에 의해 추구되는 성능 보장에 영향을 미치는 방식으로 상이한 도메인에서 사용되는 파티션 ID들의 에일리어싱이 존재하지 않는 것을 보장할 것을 요구할 수 있다는 점에서 불리한 점을 가질 수 있다. 상이한 도메인들에 대한 소프트웨어가 조정되어 개발될 것을 요구하는 것은 소프트웨어 개발 비용을 증가시킬 수 있다.
아래의 예에서, 처리 회로부에 의해 지원되는 적어도 3개의 도메인에 대응하는 적어도 3개의 파티션 ID 공간을 지원하고, 현재 도메인에 기초하여 적어도 3개의 파티션 ID 공간 중에서 선택하고, 2개 이상의 비트를 포함하는 메모리 액세스 요청 내의 파티션 ID 공간 표시자를 사용하여 3개 이상의 파티션 ID 공간이 구별되는 것을 가능하게 함으로써, 이것은 파티션 ID의 부적절한 에일리어싱을 회피하기 위해 상이한 도메인들에서의 소프트웨어가 서로 조정될 필요성을 감소시킨다. 조정되지 않은 파티션 ID 관리자를 유지함으로써 이것은 소프트웨어 개발을 단순화한다. 각각의 도메인에서의 소프트웨어는 다른 도메인에서의 소프트웨어가 충돌하는 파티션 ID를 사용했을 수 있는지를 걱정함이 없이 그들이 결정하는 대로 임의의 파티션 ID를 선택할 자유를 가질 수 있다.
요약하면, 아래에서 논의되는 예들은 각각이 대응하는 물리 어드레스 공간과 연관된 적어도 3개의 도메인 중 하나에서 명령어들을 처리하고, 메모리 시스템에 메모리 액세스 요청을 발행하는 처리 회로부를 제공하며, 메모리 액세스 요청은 (메모리 액세스 요청이 발행되게 한 현재 소프트웨어 실행 환경과 연관된 프로그래밍 가능한 파티션 ID 선택 정보에 기초하여 선택되는) 파티션 ID 및 (처리 회로부의 현재 도메인에 기초하여 적어도 3개의 파티션 ID 공간 중에서 선택되는) 선택된 파티션 ID 공간을 나타내는 멀티-비트 파티션 ID 공간 표시자를 포함한다. 선택된 파티션 ID 공간과 파티션 ID는 함께, 메모리 시스템 컴포넌트에서, 메모리 액세스 요청을 핸들링하기 위한 리소스들의 할당을 제어하거나 상기 리소스들에 대한 경합을 관리하기 위한 파라미터를 선택하기 위한 정보, 또는, 메모리 시스템 컴포넌트에서, 메모리 액세스 요청에 응답하여 성능 모니터링 데이터가 업데이트되는지를 선택하기 위한 정보를 나타낸다.
처리 회로부의 현재 도메인은 주어진 메모리 액세스 요청에 사용할 선택된 파티션 ID 공간을 선택하는 데 사용되는 유일한 정보가 아닐 수 있다. 일부 예들에서, 선택된 파티션 ID 공간은 처리 회로부의 현재 도메인 및 프로그래밍 가능한 제어 정보 둘 모두에 기초하여 선택될 수 있다. 예를 들어, 하나 이상의 레지스터에서의 제어 상태가 선택된 파티션 ID 공간을 선택하는 데 사용될 수 있다. 프로그래밍 가능한 제어 정보는 주어진 메모리 액세스 요청에 대해 어떤 파티션 ID 공간이 선택되는지에 영향을 미치도록 소프트웨어에 의해 프로그래밍 가능할 수 있다. 대응하는 파티션 ID 공간을 갖는 각각의 도메인을 지원할 수 있는 것이 하드웨어에서 유용할 수 있지만, 모든 소프트웨어가 각각의 도메인에 대해 별개의 파티션 ID 공간을 사용하는 것은 필요하지 않을 수 있으며, 일부 경우에, 예를 들어, 더 적은 파티션 ID 공간을 갖는 시스템용으로 설계된 레거시 소프트웨어를 실행할 때, 또는 상이한 도메인들에서 동작하는 하위-구획들을 포함하는 단일 제공자에 의해 제공되는 소프트웨어를 실행할 때, 상이한 도메인들에서의 소프트웨어가 그러한 하위-구획들에 대한 파티션 ID들의 할당을 관리하기 위해 공통 소프트웨어 피스를 신뢰할 수 있도록, 상이한 도메인들에서의 소프트웨어가 공통 파티션 ID 공간을 사용하여 동작하는 것이 바람직할 수 있다. 이 경우에, 조정된 파티션 ID 관리자 소프트웨어 컴포넌트를 사용함으로써 파티션 ID들의 관리를 단순화하는 것이 바람직할 수 있다. 따라서, 프로그래밍 가능한 제어 정보에 기초하여 주어진 도메인에 대해 어떤 파티션 ID 공간이 선택되는지를 변경하기 위한 지원을 제공하는 것은 상이한 소프트웨어 사용 모델들을 지원하는 데 유용할 수 있다.
프로그래밍 가능한 제어 정보는 상이한 방식으로 정의될 수 있으며, 일부 구현예들에서, 주어진 도메인에 대해 사용될 선택된 파티션 ID 공간으로서, 지원되는 파티션 ID 공간들 중 임의의 것을 선택하는 것이 가능할 수 있다. 따라서, 일부 시스템들에서, 주어진 액세스에 대해 어떤 파티션 ID 공간이 사용되는지의 자유로운 선택을 지원하는 것이 바람직할 수 있고, 따라서 프로그래밍 가능한 제어 정보는 지원되는 파티션 ID 공간들 중 어느 하나가 선택될 수 있음을 나타낼 수 있는 파티션 ID 공간 선택 정보를 포함할 수 있다.
그러나, 다른 예들에서 이용 가능한 옵션들이 더 제한될 수 있으며, 따라서, 적어도 일부 도메인들에 대해, 하드웨어에서 지원되는 이용 가능한 파티션 ID 공간들 전부를 선택하는 것이 가능하지 않아, 적어도 일부 도메인들에서 파티션 ID 공간들의 더 제한된 선택이 있을 수 있다. 선택에 이용가능한 옵션들을 제한하는 것은, 예를 들어 덜 안전한 상태가 더 안전한 상태와 연관된 파티션 ID 공간을 선택하는 것을 회피하기 위한, 그리고/또는 하드웨어의 복잡성 및 요구되는 제어 상태의 양을 감소시켜, 프로세서에 대한 감소된 회로 면적 및 전력 비용을 야기하기 위한, 다수의 이유로 유용할 수 있다.
일부 예들에서, 파티션 ID 공간 선택 회로부는, 프로그래밍 가능한 제어 정보에 기초하여, 선택된 파티션 ID 공간이 현재 도메인과 연관된 기본 파티션 ID 공간이어야 하는지 또는 현재 도메인과 연관된 대안 파티션 ID 공간이어야 하는지를 선택할 수 있다. 적어도 3개의 도메인 중 적어도 하나에 대해, 대안 파티션 ID 공간은 상이한 도메인과 연관된 기본 파티션 ID 공간일 수 있다. 따라서, 이러한 접근법에서 각각의 도메인이 그 자신의 기본 파티션 ID 공간을 가질 수 있지만, 하나의 도메인에서의 사용을 위해, 상이한 도메인과 연관된 기본 파티션 ID 공간과 동일한 대안 파티션 ID 공간을 선택하기 위한 프로그래밍 가능한 지원이 또한 있을 수 있으며, 따라서 2개의 도메인이 동일한 파티션 ID 공간을 사용하도록 프로그래밍되는 것이 가능하다. 어느 특정 파티션 ID 공간이 주어진 도메인에 대한 대안 파티션 ID 공간인지의 정의는 특정 아키텍처 구현에 따라 달라질 수 있다. 일반적으로, 각각의 도메인에 대해 기본 파티션 ID 공간 및 대안 파티션 ID 공간을 지원하는 것은 예상되는 소프트웨어 사용 모델을 지원하기에 충분할 수 있으며, 더 넓은 파티션 ID 공간 선택을 지원하는 것보다 구현하기가 덜 복잡한 옵션일 수 있다.
주어진 도메인에 대한 기본 파티션 ID 공간은, 프로그래밍 가능한 제어 정보와 무관하게, 그 도메인에 대해 고정될 수 있다. 일부 도메인들에 대해, 대안 파티션 ID 공간이 또한 고정될 수 있으며, 따라서 단지 기본 파티션 ID 공간이 사용되는지 또는 대안 파티션 ID 공간이 사용되는지를 선택하는 프로그래밍 가능한 제어 정보로는, 어느 파티션 ID 공간이 그 도메인에 대한 대안 파티션 ID 공간인지를 변경하는 것이 가능하지 않다.
그러나, 적어도 하나의 도메인에 대한 일부 예들에서, 그 도메인과 연관된 대안 파티션 ID 공간은 프로그래밍 가능한 제어 정보에 따라 가변적으로 선택되는 파티션 ID 공간일 수 있다. 이것은 더 넓은 파티션 ID 공간 선택이 일부 도메인들, 예를 들어 다른 도메인들을 감독할 수 있고(예를 들어, 루트 도메인은 다른 도메인들 사이에서 처리 회로부를 스위칭하기 위한 코드를 실행하기 위한 것일 수 있음) 더 넓은 대안 파티션 ID 공간 선택을 지원하는 데 유용할 수 있는 루트 도메인에 유용할 수 있는 대안 파티션 ID 공간으로서 선택될 수 있게 할 수 있다.
처리 회로부는 다수의 상이한 특권 레벨 중 하나에서 명령어들의 처리를 지원할 수 있고, 적어도 하나의 특권 레벨에 대해, 적어도 하나의 특권 레벨에서 발행된 메모리 액세스 요청에 대한 선택된 파티션 ID 공간의 선택을 제어하는 프로그래밍 가능한 제어 정보의 적어도 일부는 적어도 하나의 특권 레벨보다 더 많은 특권을 가진 특권 레벨에서 프로그래밍 가능할 수 있다. 따라서, 더 많은 특권을 가진 소프트웨어는 더 적은 특권을 가진 소프트웨어에 대해 어떤 파티션 ID 공간이 선택되어야 하는지를 제약하는 프로그래밍 가능한 제어 정보를 설정할 수 있다.
일부 시나리오들에서, 더 낮은 특권 레벨의 소프트웨어가 더 많은 특권을 가진 특권 레벨에서 프로그래밍 가능한 프로그래밍 가능 제어 정보에 기초하여 그 특권 레벨에 대해 어떤 파티션 ID 공간이 선택되는지의 가시성을 갖는 것이 유용할 수 있다. 따라서, 일부 구현예들에서, 적어도, 적어도 하나의 특권 레벨의 서브세트에 대해, 처리 회로부는, 그 서브세트의 특권 레벨에서 실행되는 적어도 하나의 명령어에, 더 많은 특권을 가진 특권 레벨에서 프로그래밍 가능한 프로그래밍 가능 제어 정보에 기초하여 그 현재 특권 레벨에 대해 선택된 파티션 ID 공간을 나타내는 강제 공간 표시 정보가 액세스 가능하게 만들 수 있다. 예를 들어, 주어진 특권 레벨(예를 들어, 운영 체제 특권 레벨)의 소프트웨어는 파티션 ID를 할당하도록 허용될 수 있지만 그 주어진 특권 레벨 또는 더 적은 특권을 가진 특권 레벨에서 발행된 요청에 대해 선택된 파티션 ID 공간을 변경하도록 허용되지 않을 수 있지만, 그럼에도 불구하고 그 소프트웨어가 파티션 ID 공간이 현재 도메인에 대한 파티션 ID 공간인지 또는 대안 파티션 ID 공간인지를 결정하는 것이 유용할 수 있는데, 왜냐하면 이것은 그 소프트웨어에 의해 파티션 ID들이 할당되는 방법(예를 들어, 다른 소프트웨어 실행 환경과의 조정이 필요할 수 있는지 여부)에 영향을 미칠 수 있기 때문이다.
일부 예들에서, 처리 회로부가 둘 이상의 상이한 특권 레벨 중 하나에서 명령어들의 처리를 지원하는 경우, 프로그래밍 가능한 제어 정보는 제1 특권 레벨에서 프로그래밍 가능한 계층 제어 인에이블 정보, 및 제1 특권 레벨보다 더 적은 특권을 가진 제2 특권 레벨에서 프로그래밍 가능한 공간 선택 제어 정보를 포함할 수 있으며; 여기서, 계층 제어 정보가 제1 값을 가질 때, 파티션 ID 선택 회로부는 제2 특권 레벨에서 프로그래밍 가능한 공간 선택 제어 정보에 따라 제2 특권 레벨 또는 제2 특권 레벨보다 더 적은 특권을 가진 제3 특권 레벨에서 발행된 메모리 액세스 요청에 대한 선택된 파티션 ID 공간을 선택하도록 구성되고, 계층 제어 정보가 제2 값을 가질 때, 파티션 ID 선택 회로부는 제2 특권 레벨에서 프로그래밍 가능한 공간 선택 제어 정보와 무관하게 제2 특권 레벨 또는 제3 특권 레벨에서 발행된 메모리 액세스 요청에 대한 선택된 파티션 ID 공간을 선택하도록 구성된다.
이러한 접근법으로 제1 특권 레벨(제1, 제2 및 제3 특권 레벨들 중 가장 큰 특권을 가짐)에서 동작하는 소프트웨어는 프로그래밍 가능한 제어 정보를 사용하여 제2 특권 레벨에서 동작하는 소프트웨어가 제2 또는 제3 특권 레벨에서 발행된 메모리 액세스 요청에 대한 선택한 파티션 ID 공간의 선택에 영향을 미치도록 허용되는지를 제어할 수 있다. 이러한 계층 제어 스킴은 상이한 소프트웨어 사용 모델들을 지원하는 데 유용할 수 있으며, 여기서 제1 특권 레벨의 일부 소프트웨어는 제2 특권 레벨에서 동작하는 코드에 대해 어떤 파티션 ID 공간이 선택되는지를 제어하는 책임을 위임하고 싶을 수 있는 반면, 제1 특권 레벨의 다른 소프트웨어는, 제2 특권 레벨에서 동작하는 코드가 제2 또는 제3 특권 레벨에서 발행된 메모리 액세스 요청에 대한 파티션 ID 공간의 선택에 영향을 미치도록 허용함이 없이, 파티션 ID 공간 자체의 선택을 제어하기 위해 제어 상태를 설정하는 것을 선호할 수 있다.
파티션 ID와 파티션 ID 공간은 함께 메모리 시스템 리소스 제어 파라미터를 선택하거나 성능 모니터링 데이터가 업데이트되는지를 제어하기 위한 정보를 나타낸다. 이것은 소정의 메모리 액세스 요청에 대해 달성되는 성능 레벨 또는 성능 모니터링을 사용하여 수집되는 성능의 뷰에 영향을 미칠 수 있지만, 메모리 액세스 요청을 처리한 기능적 결과는 파티션 ID 및 선택된 파티션 ID 공간과는 무관할 수 있다. 따라서, 어느 특정 메모리 시스템 위치가 타겟 어드레스에 대응하여 액세스되는지는 파티션 ID 및 선택된 파티션 ID 공간에 의존하지 않는다. 유사하게, 메모리 액세스 요청이 허용되는지 또는 거부되는지 여부는 파티션 ID 및 선택된 파티션 ID 공간에 의존하지 않는다.
장치는 현재 도메인에 기초하여 메모리 액세스 요청에 대한 선택된 물리 어드레스 공간을 선택하기 위한 물리 어드레스 공간 선택 회로부를 가질 수 있고, 처리 회로부는 선택된 물리 어드레스 공간을 나타내는 물리 어드레스 공간 표시자를 지정하는 메모리 액세스 요청을 발행할 수 있다. 예를 들어, 물리 어드레스 공간 선택 회로부는 어드레스 변환을 수행하기 위한 메모리 관리 유닛의 일부일 수 있거나, 현재 도메인에서 동작하는 코드가 선택된 물리 어드레스 공간 내의 물리 어드레스에 액세스하도록 허용되는지를 결정하는 체크를 수행하기 위한 물리 어드레스 공간 필터의 일부일 수 있다.
물리 어드레스 공간 선택 회로부는 현재 도메인에 기초하여, 그리고 메모리 액세스 요청에 대한 어드레스 변환 정보를 제공하는 어드레스 변환 엔트리에 지정된 물리 어드레스 공간 선택 정보에 기초하여, 선택된 물리 어드레스 공간을 선택할 수 있다. 따라서, 현재 도메인으로서의 주어진 도메인으로부터 행해지는 메모리 액세스에 대해, 메모리 액세스 요청은, 어드레스 변환 엔트리에 지정된 정보에 기초하여, 현재 도메인에 대해 상이한 도메인과 연관된 물리 어드레스 공간을 선택된 물리 어드레스 공간으로서 지정할 수 있다. 이것은 예를 들어 상이한 도메인들에서의 소프트웨어가 메모리 내의 공유 변수에 대한 액세스를 공유하도록 허용하는 데 유용할 수 있다. 어떤 도메인이 각각의 물리 어드레스 공간에 액세스하도록 허용되는지에 대한 몇 가지 제약이 있을 수 있으며, 보안을 유지하도록 허용되지 않는 현재 도메인과 물리 어드레스 공간의 몇 가지 조합이 있을 수 있다(예를 들어, 처리 회로부가 안전하지 않은 도메인에 있을 때, 선택된 물리 어드레스 공간이 안전한 도메인과 연관된 안전한 물리 어드레스 공간인 것이 금지되지 않을 수 있음).
물리 어드레스 공간 표시자는 파티션 ID 공간 표시자와는 별개일 수 있다. 현재 도메인에 의존하는 선택된 파티션 ID 공간의 선택은 메모리 액세스 요청의 타겟 어드레스에 대응하는 어드레스 변환 엔트리에 지정된 물리 어드레스 공간 선택 정보와는 무관할 수 있다. 따라서, 물리 어드레스 공간 선택 정보가 선택된 물리 어드레스 공간이 현재 도메인과 연관된 물리 어드레스 공간 이외의 어드레스 공간이어야 함을 나타내는 경우에도, 선택된 파티션 ID 공간은 여전히 그 현재 도메인의 파티션 ID 공간일 수 있거나, 프로그래밍 가능한 제어 정보에 기초한 파티션 ID 공간의 선택이 지원되는 경우, 프로그래밍 가능한 제어 정보는 또한 물리 어드레스 공간에 비해 상이한 파티션 ID 공간 선택을 허용할 수 있다. 이것은 상이한 소프트웨어 사용 모델들에 대한 유연한 지원을 제공한다.
따라서, 물리 어드레스 공간 표시자는 주어진 도메인의 물리 어드레스 공간을 나타낼 수 있고, 파티션 ID 공간 표시자는 물리 어드레스 공간 표시자에 의해 그의 어드레스 공간이 표시되는 도메인과 동일한 도메인과 연관된 파티션 ID 공간을 지정할 수 있거나, 물리 어드레스 공간 표시자에 의해 그의 물리 어드레스 공간이 표시되는 도메인과는 상이한 도메인과 연관된 파티션 ID 공간을 나타낼 수 있다. 따라서, 물리 어드레스 공간의 선택 및 파티션 ID 공간의 선택 둘 모두가 현재 도메인에 의존할 수 있지만, 별개의 선택들이 여전히 이루어질 수 있다(예를 들어, 선택된 파티션 ID 공간은 위에서 논의된 바와 같이 프로그래밍 가능한 제어 정보에 따라 달라질 수 있음).
장치는 복수의 에일리어싱 물리 어드레스들 중 임의의 것을 적어도 하나의 하류 메모리 시스템 컴포넌트에 제공될 디에일리어싱된 물리 어드레스에 매핑하기 위해, 동일한 메모리 시스템 리소스에 대응하는 상이한 물리 어드레스 공간들로부터의 복수의 에일리어싱 물리 어드레스들을 디에일리어싱하도록 구성된 물리 에일리어싱 지점(PoPA) 메모리 시스템 컴포넌트; 및 PoPA 메모리 시스템 컴포넌트의 상류에 제공된 적어도 하나의 프리-PoPA 메모리 시스템 컴포넌트를 포함할 수 있으며, 여기서, 적어도 하나의 프리-PoPA 메모리 시스템 컴포넌트는 상이한 물리 어드레스 공간들로부터의 에일리어싱 물리 어드레스들을, 에일리어싱 물리 어드레스들이 상이한 메모리 시스템 리소스들에 대응하는 것처럼 취급하도록 구성된다.
따라서, 메모리 시스템은 물리 에일리어싱 지점(PoPA)을 포함할 수 있는데, 이는 동일한 메모리 시스템 리소스에 대응하는 상이한 물리 어드레스 공간들로부터의 에일리어싱 물리 어드레스들이 그 메모리 시스템 리소스를 고유하게 식별하는 단일 물리 어드레스에 매핑되는 지점이다. 메모리 시스템은 PoPA의 상류에 제공되는 적어도 하나의 프리-PoPA 메모리 시스템 컴포넌트를 포함할 수 있으며, 이는 에일리어싱 물리 어드레스들을 그들이 상이한 메모리 시스템 리소스들에 대응하는 것처럼 취급한다.
예를 들어, 적어도 하나의 프리-PoPA 메모리 시스템 컴포넌트는 별개의 엔트리들에 에일리어싱 물리 어드레스들에 대한 데이터, 프로그램 코드 또는 어드레스 변환 정보를 캐싱할 수 있는 캐시 또는 변환 색인 버퍼를 포함할 수 있으며, 이에 따라, 동일한 메모리 시스템 리소스가 상이한 물리 어드레스 공간들로부터 액세스되도록 요청되는 경우, 액세스들은 별개의 캐시 또는 TLB 엔트리들이 할당되게 할 것이다. 적어도 하나의 프리-PoPA 메모리 시스템 컴포넌트는 예를 들어 데이터 캐시, 명령어 캐시 또는 통합 레벨 2, 레벨 3 또는 시스템 캐시일 수 있다.
또한, 프리-PoPA 메모리 시스템 컴포넌트는 각자의 마스터 디바이스들에서 캐싱된 정보 사이의 코히런시(coherency)를 유지하기 위해, 코히런트 상호접속부(coherent interconnect), 스누프 필터(snoop filter), 또는 다른 메커니즘과 같은 코히런시 제어 회로부를 포함할 수 있다. 코히런시 제어 회로부는 상이한 물리 어드레스 공간들 내의 각자의 에일리어싱 물리 어드레스들에 별개의 코히런시 상태들을 할당할 수 있다. 따라서, 에일리어싱 물리 어드레스들은, 그들이 실제로 동일한 기본 메모리 시스템 리소스에 대응하더라도, 코히런시를 유지할 목적으로 별개의 어드레스들로서 취급된다. 표면적으로는, 에일리어싱 물리 어드레스들에 대해 코히런시를 개별적으로 추적하는 것은 코히런시의 손실의 문제를 야기하는 것처럼 보일 수 있지만, 실제로는 이것은 상이한 도메인들에서 동작하는 프로세스들이 실제로 특정 메모리 시스템 리소스에 대한 액세스를 공유하도록 의도되는 경우 그들이 공통 물리 어드레스(예를 들어, 덜 안전한 물리 어드레스 공간)를 사용하여 그 리소스에 액세스할 수 있기 때문에 문제가 되지 않는다. 프리-PoPA 메모리 시스템 컴포넌트의 다른 예는 기밀성의 손실 및/또는 부당 변경에 대해 오프-칩 메모리에 저장된 데이터를 보호하기 위해 제공되는 메모리 보호 엔진일 수 있다. 그러한 메모리 보호 엔진은, 예를 들어, 어느 물리 어드레스 공간으로부터 리소스가 액세스되는지에 따라 상이한 암호화 키들로 특정 메모리 시스템 리소스와 연관된 데이터를 개별적으로 암호화하여, 에일리어싱 물리 어드레스들을, 그들이 상이한 메모리 시스템 리소스들에 대응하고 있던 것처럼 효과적으로 취급할 수 있다(예를 들어, 어드레스에 의존하는 암호화를 행하는 암호화 스킴이 사용될 수 있고, 물리 어드레스 공간 ID가 이러한 목적을 위해 어드레스의 일부인 것으로 간주될 수 있음).
프리-PoPA 메모리 시스템 컴포넌트의 형태에 관계없이, 그러한 PoPA 메모리 시스템 컴포넌트가 에일리어싱 물리 어드레스들을, 그들이 상이한 메모리 시스템 리소스들에 대응하는 것처럼 취급하는 것이 유용할 수 있는데, 그 이유는, 이것이 상이한 물리 어드레스 공간들에 대해 발행되는 액세스들 사이의 하드웨어 시행 격리를 제공하여, 하나의 도메인과 연관된 정보가 캐시 타이밍 부채널들 또는 코히런시 제어 회로부에 의해 트리거되는 코히런시의 변경들을 수반하는 부채널들과 같은 특징부들에 의해 다른 도메인으로 누설될 수 없게 되기 때문이다.
몇몇 구현예들에서, 상이한 물리 어드레스 공간들 내의 에일리어싱 물리 어드레스들이 각자의 상이한 물리 어드레스 공간들에 대한 상이한 수치적 물리 어드레스 값들을 사용하여 표현되는 것이 가능할 수 있다. 이러한 접근법은, 상이한 물리 어드레스 값들 중 어느 것이 동일한 메모리 시스템 리소스에 대응하는지를 PoPA에서 결정하기 위한 매핑 테이블을 요구할 수 있다. 그러나, 매핑 테이블을 유지하는 것의 이러한 오버헤드는 불필요하다고 고려될 수 있으며, 이에 따라, 몇몇 구현예들에서, 그것은, 에일리어싱 물리 어드레스들이 각각의 상이한 물리 어드레스 공간들에서 동일한 수치적 물리 어드레스 값을 사용하여 표현되는 물리 어드레스들을 포함하는 경우, 더 단순할 수 있다. 이러한 접근법이 취해지는 경우, 물리 에일리어싱 지점에서, 단순히 어느 물리 어드레스 공간이 메모리 액세스를 사용하여 액세스되는지를 식별하는 물리 어드레스 공간 ID를 폐기하고, 이어서 나머지 물리 어드레스 비트들을 디에일리어싱된 물리 어드레스로서 하류에 제공하는 것이 충분할 수 있다.
따라서, 프리-PoPA 메모리 시스템 컴포넌트에 더하여, 메모리 시스템은 또한, 적어도 하나의 하류 메모리 시스템 컴포넌트에 제공될 디에일리어싱된 물리 어드레스를 획득하기 위해 복수의 에일리어싱 물리 어드레스들을 디에일리어싱하도록 구성된 PoPA 메모리 시스템 컴포넌트를 포함할 수 있다. PoPA 메모리 시스템 컴포넌트는, 전술한 바와 같이, 특정 어드레스 공간 내의 에일리어싱 어드레스에 대응하는 디에일리어싱된 어드레스들을 찾기 위해 매핑 테이블에 액세스하는 디바이스일 수 있다. 그러나, PoPA 컴포넌트는 또한 단순히, 하류에 제공되는 물리 어드레스가, 이것이 어느 물리 어드레스 공간으로부터 제공되었는지에 관계없이, 대응하는 메모리 시스템 리소스를 고유하게 식별하도록, 주어진 메모리 액세스와 연관된 물리 어드레스 태그가 폐기되는 메모리 시스템 내의 위치일 수 있다. 대안적으로, 몇몇 경우에, PoPA 메모리 시스템 컴포넌트가 (예를 들어, 하류 시스템 컴포넌트에서의 추가의 필터 체크들을 가능하게 할 목적으로) 물리 어드레스 공간 태그를 적어도 하나의 하류 메모리 시스템 컴포넌트에 여전히 제공할 수 있지만, PoPA는, 그것을 지난 하류 메모리 시스템 컴포넌트들이 에일리어싱 물리 어드레스들을 상이한 메모리 시스템 리소스들로서 더 이상 취급하지 않지만, 에일리어싱 물리 어드레스들 각각을 동일한 메모리 시스템 리소스를 매핑하도록 고려하는 메모리 시스템 내의 지점을 마킹할 수 있다. 예를 들어, 메모리 제어기 또는 PoPA의 하류의 하드웨어 메모리 저장 디바이스가 주어진 메모리 액세스 요청에 대한 물리 어드레스 태그 및 물리 어드레스를 수신하는 경우에, 이어서 그 물리 어드레스가 이전에 보여진 트랜잭션과 동일한 물리 어드레스에 대응하는 경우, (동일한 어드레스에 대한 액세스들을 병합하는 것과 같은) 동일한 물리 어드레스에 액세스하는 각자의 트랜잭션들에 대해 수행되는 임의의 위험 체크 또는 성능 개선들이, 각자의 트랜잭션들이 상이한 물리 어드레스 공간 태그들을 지정하더라도, 적용될 수 있다. 대조적으로, PoPA의 상류의 메모리 시스템 컴포넌트의 경우, 동일한 물리 어드레스에 액세스하는 트랜잭션들에 대해 취해진 그러한 위험 체크 또는 성능 개선 단계들은, 이러한 트랜잭션들이 상이한 물리 어드레스 공간들에서 동일한 물리 어드레스를 지정하는 경우에, 호출되지 않을 수 있다.
몇몇 예들에서, 전술한 장치는 외부 메모리 시스템 컴포넌트일 수 있는, 메모리 시스템 컴포넌트 자체를 포함하지 않을 수 있다.
그러나, 다른 예들에서 메모리 시스템 컴포넌트는 장치 자체의 일부일 수 있고 메모리 시스템 컴포넌트는 다음 중 적어도 하나를 포함할 수 있다: 파티션 ID 공간 표시자 및 파티션 ID에 기초하여 하나 이상의 메모리 시스템 리소스 제어 파라미터의 세트를 선택하기 위한 리소스 제어 파라미터 선택 회로부; 및/또는 파티션 ID 공간 표시자 및 파티션 ID에 기초하여, 메모리 액세스 요청에 응답하여 성능 모니터링 데이터가 업데이트되는지를 제어하기 위한 성능 모니터링 제어 회로부.
리소스 제어 파라미터 선택 회로부가 메모리 시스템 컴포넌트에 제공되는 경우, 메모리 시스템 리소스 제어 파라미터는 물리 어드레스 공간의 일부에 매핑될 수 있으며, 따라서 그러한 리소스 제어 파라미터가 처리 회로부에서 실행되는 소프트웨어에서 업데이트될 수 있다. 지원되는 다수의 물리 어드레스 공간이 있기 때문에, 주어진 파티션 ID 공간에 대한 메모리 시스템 제어 파라미터에 액세스하기 위해 어떤 물리 어드레스 공간이 사용되어야 하는지를 선택하기 위한 다수의 옵션이 있다. 일례에서, 적어도 3개의 파티션 ID 공간 각각이 적어도 3개의 도메인 중 대응하는 하나의 도메인에 연관되는 경우, 주어진 파티션 ID 공간에 대응하는 주어진 메모리 시스템 리소스 제어 파라미터 세트는 주어진 파티션 ID 공간과 연관된 도메인에 대응하는 물리 어드레스 공간 내의 타겟 어드레스를 지정하여 발행된 메모리 액세스 요청에 응답하여 액세스 가능할 수 있다. 주어진 도메인과 연관된 파티션 ID 공간에 대한 메모리 시스템 리소스 제어 파라미터를 그 동일한 주어진 도메인과 연관된 물리 어드레스 공간에서 정의함으로써, 이것은 메모리 시스템 리소스 제어 파라미터의 관리를 단순화하며 보안을 유지하는 데 도움이 될 수 있다.
처리측에서 적어도 3개의 파티션 ID 공간 사이에서 선택하기 위한 지원을 제공하는 것은 위에서 논의된 이유로 유용할 수 있지만, 실제로 전술한 처리 회로부, 파티션 ID 선택 회로부 및 파티션 ID 공간 선택 회로부를 포함하는 처리 요소는 그 처리 요소가 통신할 수 있는 많은 상이한 메모리 시스템 컴포넌트를 가질 수 있는 데이터 처리 시스템(예를 들어, 시스템-온-칩)에 통합될 수 있다. 3개 이상의 상이한 파티션 ID 공간을 또한 지원하도록 시스템 내의 모든 메모리 시스템 컴포넌트를 업그레이드하는 데 많은 개발 노력이 들 수 있으며, 따라서 더 적은 파티션 ID 공간을 지원하는 일부 레거시 컴포넌트들이 있을 수 있다. 따라서, 적어도 3개의 파티션 ID 공간을 지원하는 하나 이상의 컴포넌트를 포함하는 장치의 제1 영역과, 제1 영역 내의 하나 이상의 컴포넌트보다 더 적은 파티션 ID 공간을 지원하는 하나 이상의 컴포넌트를 포함하는 장치의 제2 영역 사이의 경계에 브리징 회로부를 제공하는 것이 유용할 수 있으며, 여기서 브리징 회로부는 제1 영역과 제2 영역 사이에 전달되는 메모리 액세스 요청에 대한 파티션 ID 공간 표시자를 리매핑하도록 구성된다. 브리징 회로부에 의해 사용되는 매핑은 고정 매핑일 수 있거나, 프로그래밍 가능한 파티션 ID 공간 매핑 정보에 따라 변경될 수 있는 프로그래밍 가능한 매핑일 수 있다. 일부 경우들에서, 브리징 회로부가 PoPA의 상류의 시스템의 지점에 있는 경우에, 브리징 회로부는 또한 주어진 메모리 액세스 요청에 의해 지정된 물리 어드레스 공간 표시자를 리매핑할 수 있다(브리징 회로부가 PoPA의 하류에 있는 경우, 물리 어드레스 공간 표시자는 이미 폐기되었을 수 있고 따라서 물리 어드레스 공간 표시자의 리매핑은 필요하지 않을 수 있다). 일반적으로, 위에서 설명한 브리징 회로부를 제공함으로써 이것은 상이한 유형의 메모리 시스템 컴포넌트들을 결합할 수 있는 더 많은 유연성을 제공하며, 따라서 모든 메모리 시스템 컴포넌트가 또한 3개 이상의 파티션 ID 공간을 지원하지는 않을지라도 처리 요소에서의 다수의 파티션 ID 공간에 대한 지원의 이점이 실현될 수 있다.
위에서 언급된 바와 같이, 일부 구현예들에서, 메모리 시스템 컴포넌트는 처리 회로부를 포함하는 처리 요소에 대한 외부 컴포넌트로 간주될 수 있고, 따라서 메모리 시스템 컴포넌트는 독립형 제품으로 간주될 수 있다. 따라서, 메모리 시스템 컴포넌트는 일부 예들에서 (예를 들어, 처리 요소 또는 시스템-온-칩의 다른 요소로부터) 메모리 액세스 요청을 수신하는 메모리 액세스 요청 수신 회로부를 포함할 수 있으며, 메모리 액세스 요청은 위에서 논의된 바와 같이 타겟 어드레스 및 파티션 ID 공간 표시자를 지정하며, 여기서 파티션 ID 공간은 적어도 3개의 파티션 ID 공간 중에서 선택된 파티션 ID 공간을 선택하기 위한 2개 이상의 비트를 포함한다. 메모리 액세스 요청은 또한 메모리 액세스 요청이 발행되게 한 현재 소프트웨어 실행 환경과 연관된 파티션 ID를 지정하며, 이는 선택된 파티션 ID 공간 내에 정의된다. 메모리 컴포넌트 시스템은 위에서 논의된 바와 같이 리소스 제어 회로부 및/또는 성능 모니터링 제어 회로부를 포함하여, 파티션 ID 공간 표시자 및 파티션 ID를 사용하여, 메모리 시스템 리소스 제어 파라미터를 선택하거나, 성능 모니터링 데이터가 업데이트되는지를 제어하거나, 둘 모두를 한다.
메모리 리소스 및 성능 모니터링 파티셔닝
도 1은 N개의 처리 클러스터(4)(N은 1 이상임)를 포함하는 데이터 처리 시스템(2)의 예를 개략적으로 예시하며, 여기서 각각의 처리 클러스터는 CPU(central processing unit) 또는 GPU(graphics processing unit)와 같은 하나 이상의 처리 유닛(6)을 포함한다. 각각의 처리 유닛(6)은 적어도 하나의 캐시, 예를 들면, 레벨 1 데이터 캐시(8), 레벨 1 명령어 캐시(10) 및 공유 레벨 2 캐시(12)를 포함할 수 있다. 이것은 가능한 캐시 계층구조의 단지 일례이며 다른 캐시 구성이 사용될 수 있음을 알 것이다. 동일한 클러스터 내의 처리 유닛(6)은 클러스터 상호접속부(14)에 의해 결합된다. 클러스터 상호접속부는 처리 유닛들 중 임의의 것이 액세스가능한 데이터를 캐싱하기 위한 클러스터 캐시(16)를 가질 수 있다.
시스템 온 칩(SoC) 상호접속부(18)는 N개의 클러스터와 임의의 다른 마스터 디바이스(22)(예컨대, 디스플레이 제어기 또는 직접 메모리 액세스(DMA) 제어기)를 결합한다. SoC 상호접속부는 그것에 접속된 마스터들 중 임의의 것이 액세스가능한 데이터를 캐싱하기 위한 시스템 캐시(20)를 가질 수 있다. SoC 상호접속부(18)는 어떤 공지된 코히런시 프로토콜에 따라 각자의 캐시들(8, 10, 12, 16, 20) 사이의 코히런시를 제어한다. SoC 상호접속부는 또한 각각 DRAM 또는 SRAM과 같은 대응하는 메모리(25)에 대한 액세스를 제어하기 위해, 하나 이상의 메모리 제어기(24)에 결합된다. SoC 상호접속부(18)는 또한, 트랜잭션을, 암호화/복호화 기능성을 제공하기 위한 암호화 유닛과 같은 다른 슬레이브 디바이스로 지향시킬 수 있다.
따라서, 데이터 처리 시스템(2)은, 처리 유닛(6) 및 다른 마스터 디바이스(22)에 의해 발행된 트랜잭션에 응답하여 데이터를 저장하고 데이터에 대한 액세스를 제공하기 위한 메모리 시스템을 포함한다. 캐시(8, 10, 12, 16, 20), 상호접속부(14, 18), 메모리 제어기(24) 및 메모리 디바이스(25)는 각각 메모리 시스템의 컴포넌트로서 간주될 수 있다. 메모리 시스템 컴포넌트의 다른 예는 메모리 액세스에 사용된 메모리 어드레스들을 변환하는 데 사용되는, (처리 유닛(6) 자체 내에서 또는 시스템 상호접속부(18) 또는 메모리 시스템의 또 다른 부분 내에서 더 아래에) 메모리 관리 유닛 또는 변환 색인 버퍼를 포함할 수 있고, 따라서, 또한 메모리 시스템의 일부로서 간주될 수 있다. 일반적으로, 메모리 시스템 컴포넌트는 메모리 데이터에 액세스하거나 그러한 메모리 트랜잭션의 처리를 제어하기 위한 메모리 트랜잭션을 서비스하기 위해 사용되는 데이터 처리 시스템의 임의의 컴포넌트를 포함할 수 있다.
메모리 시스템은 메모리 트랜잭션을 핸들링하기 위해 이용가능한 다양한 리소스들을 가질 수 있다. 예를 들어, 캐시(8, 10, 12, 16, 20)는 프로세서들(6) 중 하나에서 실행되는 주어진 소프트웨어 실행 환경에 의해 요구되는 데이터를 캐싱하기 위해 이용가능한 저장 용량을 가져서, 그들이 메인 메모리(25)로부터 페치되어야 했던 경우보다 데이터 또는 명령어들에 대한 더 빠른 액세스를 제공한다. 마찬가지로, MMU/TLB는 어드레스 변환 데이터를 캐싱하는 데 이용가능한 용량을 가질 수 있다. 또한, 상호접속부(14, 18), 메모리 제어기(24) 및 메모리 디바이스(25)는 각각 메모리 트랜잭션을 핸들링하기 위해 이용가능한 일정량의 대역폭을 가질 수 있다.
처리 요소(6)에서 실행되는 다수의 소프트웨어 실행 환경이 메모리 시스템에 대한 액세스를 공유할 때, 하나의 소프트웨어 실행 환경이 공평한 분배보다 많은 리소스를 사용하여, 다른 실행 환경이 성능의 손실을 인지하는 것을 방지하는 것이 바람직할 수 있다. 이것은, 데이터 센터 서버의 활용도를 높이기 위해서, 주어진 양의 메모리 용량과 상호 작용하는 독립적인 소프트웨어 프로세스의 수를 증가시켜 자본 지출(capital expenditure)을 감소시키려는 요구가 증가하고 있는 데이터 센터(서버) 애플리케이션에 특히 중요할 수 있다. 그럼에도 불구하고, 웹 애플리케이션 테일 레이턴시 목적(tail latency objective)을 충족해야 한다는 요구가 여전히 있을 것이므로, 서버에서 실행 중인 하나의 프로세스가 다른 프로세스에 영향을 미칠 정도로 메모리 시스템 리소스들을 독점할 수 있다면 바람직하지 않다. 유사하게, 네트워킹 애플리케이션의 경우, 이전에는 별도의 SoC에 있던 단일 SoC에 다수의 기능을 조합하는 것이 점점 더 일반적이다. 이것은 다시, 소프트웨어 실행 환경들 사이의 성능 상호작용을 제한하고, 이러한 독립적인 프로세스가 성능 상호작용을 제한하면서 공유 메모리에 액세스하도록 허용하는 데 필요한 방법을 모니터링하고자 하는 욕구로 이어진다.
도 2는 대응하는 메모리 트랜잭션들을 발행하는 소프트웨어 실행 환경에 의존하여 메모리 시스템 리소스들의 할당의 제어를 파티셔닝하는 예를 개략적으로 예시한다. 이러한 맥락에서, 소프트웨어 실행 환경은 데이터 처리 시스템 내의 처리 유닛에 의해 실행되는, 임의의 프로세스 또는 프로세스의 일부일 수 있다. 예를 들어, 소프트웨어 실행 환경은 애플리케이션, 게스트 운영 체제 또는 가상 머신, 호스트 운영 체제 또는 하이퍼바이저, 시스템의 상이한 보안 상태를 관리하기 위한 보안 모니터 프로그램, 또는 이들 유형의 프로세스 중의 어떤 하나의 서브 부분(예를 들면, 단일 가상 머신이 별도의 소프트웨어 실행 환경으로서 간주된 상이한 부분을 가질 수도 있음)을 포함할 수도 있다. 도 2에 도시된 바와 같이, 각각의 소프트웨어 실행 환경에는 그 소프트웨어 실행 환경과 연관되는 메모리 트랜잭션과 함께 메모리 시스템 컴포넌트에 전달되는 주어진 파티션 ID(30)가 할당될 수 있다.
메모리 컴포넌트에 발행되는 메모리 액세스 요청은 어드레스, 대응하는 소프트웨어 실행 환경에 대해 결정된 파티션 ID(PartID), 및 선택된 파티션 ID 공간을 나타내는 파티션 ID 공간 표시자(MPAM_SP)를 지정한다.
메모리 시스템 컴포넌트 내에서, 리소스 할당 또는 경합 해결 동작들은 파티션 ID 및 파티션 ID 공간 표시자에 기초하여 선택된 메모리 시스템 컴포넌트 파라미터들의 다수의 세트들 중 하나에 기초하여 제어될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 각각의 소프트웨어 실행 환경에는, 트랜잭션과 연관된 파티션 ID 및 파티션 ID 공간 표시자에 기초하여 선택되는 주어진 트랜잭션을 서비스하는 경우의 관련 할당 임계치와 함께, 그 소프트웨어 실행 환경과 연관된 데이터/명령어들에 대해 할당될 수 있는 캐시 용량의 최대량을 나타내는 할당 임계치가 할당될 수 있다. 예를 들어, 도 2에서 파티션 ID 0 및 파티션 ID 공간 표시자 0과 연관된 트랜잭션은 캐시의 저장 용량의 최대 50%까지 데이터를 할당하여, 캐시의 최소 50%를 다른 목적에 이용가능하도록 남길 수 있다. 반면에, (예를 들어, 0 대신에 MPAM_SP = 1을 갖는) 상이한 파티션 ID 공간 내의 동일한 파티션 ID 0은 리소스 제어 파라미터들의 상이한 세트에 대응할 수 있다(예를 들어, 이 예에서, 캐시 용량의 40% 제한이 정의됨).
마찬가지로, 메모리 트랜잭션을 서비스하기 위해 이용가능한 한정된 양의 대역폭을 갖는 메모리 제어기(24)와 같은 메모리 시스템 컴포넌트에 있어서, 최소 및/또는 최대 대역폭 임계치가 파티션 ID와 파티션 ID 공간 표시자의 각자의 조합들에 대해 지정될 수 있다. 주어진 파티션 ID 및 파티션 ID 공간 ID와 연관된 메모리 트랜잭션은, 주어진 기간 내에서 그 파티션 ID 및 파티션 ID 공간 ID를 지정하는 메모리 트랜잭션이 최소의 대역폭의 양보다 적게 사용되었으면 우선순위가 부여될 수 있는 반면, 동일한 파티션 ID 및 파티션 ID 공간 표시자를 지정하는 트랜잭션에 대해 최대 대역폭이 이미 사용되거나 초과되었으면 메모리 트랜잭션에 대해 감소된 우선순위가 사용될 수 있다.
이들은 메모리 시스템 리소스들의 제어가 대응하는 트랜잭션들을 발행한 소프트웨어 실행 환경에 기초하여 파티셔닝될 수 있는 방식들 중 단지 두 가지 예임이 이해될 것이다. 일반적으로, 메모리 시스템에 의해 제공되는 리소스들의 상이한 파티셔닝된 부분들을 상이한 프로세스들이 "볼" 수 있게 함으로써, 이것은 프로세스들 사이의 성능 상호작용이 위에서 논의된 문제를 해결하는 데 도움이 되도록 제한될 수 있게 한다.
마찬가지로, 메모리 트랜잭션과 연관된 파티션 ID 및 파티션 ID 공간 표시자는 메모리 시스템 내에서 성능 모니터링을 파티셔닝하기 위해 사용될 수 있으므로, 각각의 파티션 ID에 대해 별도의 성능 모니터링 데이터의 세트가 추적될 수 있어, 주어진 소프트웨어 실행 환경(또는 소프트웨어 실행 환경의 그룹)에 특정된 정보가 식별되도록 허용함으로써, 성능 모니터링 데이터가 모든 소프트웨어 실행 환경 전반에 걸쳐 기록되었던 경우보다 더 쉽게 잠재적인 성능 상호작용의 소스를 식별할 수 있다. 이것은 또한 잠재적인 성능 상호작용 효과를 진단하는 데 도움이 될 수 있고, 가능한 솔루션의 식별에 도움을 준다.
파티션 ID들의 설정, 파티션 ID 공간의 선택, 대응하는 소프트웨어 실행 환경에 대해 설정된 파티션 ID에 기초한 메모리 트랜잭션의 라벨링, 메모리 시스템을 통한 파티션 ID들의 라우팅, 및 메모리 시스템 내의 메모리 시스템 컴포넌트에서의 파티션 기반 제어부의 제공을 제어하기 위한 아키텍처가 이하에서 논의된다. 이 아키텍처는 파티션 ID들에 대해서 다양한 용도로 확장가능하다. 파티션 ID들의 사용은 메모리 시스템의 기존 아키텍처 의미를 변경하지 않고 계층화하기 위한 것이므로, 메모리 시스템에 의해 사용되는 특정 메모리 프로토콜에 의해 부과된 메모리 트랜잭션의 어드레싱, 코히런스 및 임의의 필요한 순서화(ordering)는 리소스/성능 모니터링 파티셔닝에 의해 영향을 받지 않을 것이다. 파티션 ID들 및 파티션 ID 공간을 사용하여 리소스 할당을 제어할 때, 이것은 주어진 소프트웨어 실행 환경에 대한 메모리 트랜잭션을 서비스할 때 달성되는 성능에 영향을 줄 수 있지만, 구조적으로 유효한 계산의 결과에는 영향을 미치지 않는다. 즉, 파티션 ID 및 파티션 ID 공간은 메모리 트랜잭션의 성과 또는 결과(예를 들어, 어떤 데이터가 액세스되는지)를 변경하지 않고, 단지 그 메모리 트랜잭션에 대해 달성된 타이밍 또는 성능에 영향을 미친다.
물리 어드레스 공간 선택 및 메모리 리소스들의 파티셔닝 및/또는 성능 모니터링을 지원하는 처리 요소
도 3은 도 1에 도시된 시스템(2)의 주어진 처리 요소(6) 내의 몇몇 컴포넌트들을 더 상세히 도시하는데, 예를 들어, 처리 요소는 도 1에 도시된 CPU들(6) 중 하나일 수 있다. 처리 요소는 명령어 세트 아키텍처에 따라 명령어들을 실행할 수 있는 처리 회로부(310)를 포함한다. 처리 회로부(310)는 명령어 캐시로부터 또는 메모리로부터 명령어들을 페치하기 위한 명령어 페치 회로부(300), 페치된 명령어들을 디코딩하기 위한 명령어 디코더(302), 및 명령어 디코더(302)에 의해 디코딩된 명령어들에 응답하여 처리 동작들을 실행하기 위한 하나 이상의 실행 유닛들(304)을 포함한다. 레지스터들(312)은 처리 회로부(310)에 의해 실행되는 명령어들을 위한 피연산자들, 또는 처리 회로부(310)에 의해 처리가 어떻게 수행되는지를 구성하기 위한 제어 데이터의 실행된 명령어들의 결과들을 저장하기 위해 제공된다.
아래에서 추가로 논의되는 바와 같이, 처리 회로부는 다수의 동작 도메인(보안 상태)에서 명령어들의 실행을 지원할 수 있고, 레지스터들(312)은 어떤 동작 도메인이 현재 도메인인지를 식별하는 데 사용되는 제어 상태를 포함할 수 있다. 도 3에 도시된 예에서, 레지스터들은 어떤 동작 도메인이 현재 도메인인지를 나타내는 현재 도메인 표시(314)를 제공하는 제어 레지스터를 포함한다. 그러나, 이것은 필수적인 것은 아니며, 다른 아키텍처들이, 현재 도메인을 식별하는 단일 도메인 표시를 제공하기보다는, 상이한 레지스터들에 또는 동일한 레지스터의 상이한 부분들에 저장될 수 있는 둘 이상의 제어 상태 아이템에 기초하여 현재 도메인을 결정할 수 있다. 예를 들어, 어느 도메인이 현재 도메인인지는, 상이한 시스템 레지스터들로부터 액세스가능한 제어 비트들의 부울 함수(Boolean function)로서 결정될 수 있다.
또한, 처리 회로부는 상이한 레벨의 특권과 연관될 수 있는 다수의 예외 레벨(특권 레벨)에서 명령어들의 실행을 지원할 수 있으며, 따라서 더 많은 특권을 가진 예외 레벨에서 실행되는 명령어들은 더 적은 특권을 가진 예외 레벨에서 실행되는 명령어들보다 더 큰 권리를 가질 수 있다(예를 들어, 더 적은 특권을 가진 예외 레벨의 코드에 허용되지 않는 연산을 수행하거나, 더 적은 특권을 가진 예외 레벨의 코드가 액세스할 수 없는 레지스터 또는 메모리 내의 데이터에 액세스하는 것이 가능함). 레지스터들(312)은 처리 회로부(310)가 동작 중인 현재 예외 레벨이 어떤 예외 레벨인지를 나타내는 현재 예외 레벨(특권 레벨) 표시(315)를 지정할 수 있다. 용어들 예외 레벨과 특권 레벨은 본 출원에서 상호교환 가능하다.
처리 회로부(310)는 현재 도메인을 식별하는 가상 어드레스(VA) 및 도메인 ID(도메인 ID 또는 '보안 상태')를 지정하는 메모리 액세스 요청을 발행할 수 있다. 어드레스 변환 회로부(316)(예를 들어, 메모리 관리 유닛(memory management unit, MMU))는 메모리 시스템에 저장된 페이지 테이블 구조들(317)에 정의된 페이지 테이블 데이터에 기초하여 하나 이상의 어드레스 변환 스테이지들을 통해 가상 어드레스를 물리 어드레스(PA)로 변환한다. 변환 색인 버퍼(TLB)(318)는 어드레스 변환이 요구될 때마다 페이지 테이블 정보가 메모리로부터 페치되어야 하는 경우보다 더 빠른 액세스를 위해 그 페이지 테이블 정보의 일부를 캐싱하기 위한 룩업 캐시로서 작동한다. 이러한 예에서, 물리 어드레스를 생성하는 것뿐만 아니라, 어드레스 변환 회로부(316)는 또한 물리 어드레스와 연관된 다수의 물리 어드레스 공간들 중 하나를 선택하고, 선택된 물리 어드레스 공간을 식별하는 물리 어드레스 공간(PAS) ID를 출력한다. PAS의 선택은 아래에서 더 상세하게 논의될 것이다.
PAS 필터(320)는, 변환된 물리 어드레스 및 PAS ID에 기초하여, 그 물리 어드레스가 PAS ID에 의해 식별된, 지정된 물리 어드레스 공간 내에서 액세스되도록 허용되는지를 체크하기 위한 요청자측 필터링 회로부로서 작동한다. 이러한 룩업은 메모리 시스템 내에 저장된 과립 보호 테이블 구조(321)에 저장된 과립 보호 정보에 기초한다. 과립 보호 정보는, TLB(318)에 페이지 테이블 데이터를 캐싱하는 것과 유사하게, 과립 보호 정보 캐시(322) 내에 캐싱될 수 있다. 도 1의 예에서 과립 보호 정보 캐시(322)가 TLB(18)와는 별개의 구조로 도시되어 있지만, 다른 예들에서, 이러한 유형들의 룩업 캐시들은 단일 룩업 캐시 구조로 조합될 수 있으며, 이에 따라, 조합된 구조의 엔트리의 단일 룩업이 페이지 테이블 정보 및 과립 보호 정보 둘 모두를 제공한다. 과립 보호 정보는 주어진 물리 어드레스가 액세스될 수 있는 물리 어드레스 공간들을 제약하는 정보를 정의하고, 이러한 룩업에 기초하여, PAS 필터(320)는 메모리 액세스 요청이 하나 이상의 캐시들(8, 10, 12, 16, 20) 및/또는 상호접속부(18)에 발행되도록 진행할 것을 허용할지 여부를 결정한다. 메모리 액세스 요청에 대한 지정된 PAS가 지정된 물리 어드레스에 액세스하는 것이 허용되지 않는 경우, PAS 필터(320)는 장애를 시그널링하고, 예를 들어 메모리 액세스 요청이 메모리 시스템으로 전달되는 것을 방지함으로써 그 요청의 효과를 차단할 수 있다.
도 3은 주어진 요청에 대한 PAS의 선택이 어드레스 변환 회로부(316)에 의해 수행되는 예를 도시하고 있지만, 다른 예들에서, 어느 PAS를 선택할지를 결정하는 것에 대한 정보가 어드레스 변환 회로부(316)에 의해 PA와 함께 PAS 필터(320)에 출력될 수 있고, PAS 필터(320)는 PAS를 선택하고, PA가 선택된 PAS 내에서 액세스되도록 허용되는지를 체크할 수 있다.
PAS 필터(320)의 제공은, 각각이 그 자신의 격리된 물리 어드레스 공간과 연관되는 동작의 다수의 도메인들에서 동작할 수 있는 시스템을 지원하는 것을 돕는데, 여기서, 메모리 시스템의 적어도 일부에 대해(예를 들어, 일부 캐시들 또는 코히런시 시행 메커니즘들, 예를 들어, 스누프 필터에 대해), 별개의 물리 어드레스 공간들은, 그러한 어드레스 공간들 내의 어드레스들이 실제로는 메모리 시스템 내의 동일한 물리적 위치를 참조하더라도, 그들이 별개의 메모리 시스템 위치들을 식별하는 완전히 별개인 어드레스 세트들을 참조하는 것처럼 취급된다. 이것은 보안 목적들에 유용할 수 있다.
위에서 논의된 메모리 시스템 리소스의 파티셔닝 및 성능 모니터링을 지원하기 위해, 처리 요소(6)는 또한 캐시, 상호접속부 또는 다른 메모리 시스템 컴포넌트에 전송되는 메모리 액세스 요청에 대해 지정할 파티션 ID를 선택하기 위한 파티션 ID 선택 회로부(332), 및 파티션 ID가 정의되는 파티션 ID 공간을 선택하기 위한 파티션 ID 공간 선택 회로부(334)를 포함한다. 파티션 ID 선택 회로부(332) 및 파티션 ID 공간 선택 회로부(334) 둘 모두는 현재 도메인(314), 현재 예외 레벨(315) 및 하나 이상의 메모리 파티셔닝 및 모니터링(MPAM) 제어 레지스터(330)에 지정된 정보와 같은 제어 정보에 기초하여 그들의 선택을 행할 수 있다. 이들은 아래에서 더 상세히 논의될 것이다.
따라서, 캐시, 상호접속부 또는 다른 메모리 시스템 컴포넌트로 전송되는 메모리 액세스 요청은 어드레스 변환에서 MMU(316)에 의해 획득된 물리 어드레스, 현재 도메인(314) 및 페이지 테이블(317) 내의 정보에 기초하여 물리 어드레스 공간 선택 회로부(예를 들어, MMU(316) 또는 PAS 필터(320))에 의해 선택되는 선택된 물리 어드레스 공간(PAS), 선택된 파티션 ID 공간을 식별하는 파티션 ID 공간 표시자(MPAM_SP), 및 메모리 시스템 컴포넌트에서 리소스 제어 파라미터 선택 또는 성능 모니터링을 제어하기 위해 선택된 파티션 ID 공간과 조합하여 사용될 수 있는 하나 이상의 파티션 ID(PARTID, PMG)를 지정한다.
각자의 물리 어드레스 공간들과 연관된 도메인들에 대한 지원
도 4는 처리 회로부(310)가 동작할 수 있는 상이한 동작 상태들 및 도메인들의 예 및 상이한 예외 레벨들 및 도메인들에서 실행될 수 있는 소프트웨어의 유형들의 예를 도시한다(물론, 시스템에 설치된 특정 소프트웨어는 그 시스템을 관리하는 파티(party)들에 의해 선택되며, 이에 따라, 하드웨어 아키텍처의 필수 특징부는 아님이 이해될 것이다).
처리 회로부(310)는 다수의 상이한 예외 레벨들(80), 이러한 예에서는, EL0, EL1, EL2 및 EL3으로 라벨링된 4개의 예외 레벨들에서 동작가능하며, 여기서, 이러한 예에서, EL3은 최대 특권 레벨을 갖는 예외 레벨을 지칭하는 반면, EL0은 최소 특권을 갖는 예외 레벨을 의미한다. 다른 아키텍처들은 가장 높은 수를 갖는 예외 레벨이 최저 특권을 갖는 것으로 고려될 수 있도록 반대 넘버링을 선택할 수 있음이 이해될 것이다. 이러한 예에서, 가장 적은 특권을 가진 예외 레벨 EL0은 애플리케이션 레벨 코드에 대한 것이고, 다음으로 가장 많은 특권을 가진 예외 레벨 EL1은 운영 체제 레벨 코드에 대해 사용되고, 다음으로 가장 많은 특권을 가진 예외 레벨 EL2는 다수의 가상화된 운영 체제들 사이의 스위칭을 관리하는 하이퍼바이저 레벨 코드에 대해 사용되며, 한편 가장 많은 특권을 가진 예외 레벨 EL3은 각자의 도메인들 사이의 스위칭들 및 물리 어드레스들의 물리 어드레스 공간들로의 할당을 관리하는 모니터 코드에 대해 사용되며, 이는 후술되는 바와 같다.
특정 예외 레벨에서 소프트웨어를 처리하는 동안 예외가 발생할 때, 일부 유형들의 예외들에 대해, 예외는 더 높은(더 많은 특권을 가진) 예외 레벨로 취해지며, 이때, 예외가 취해질 특정 예외 레벨은 발생한 특정 예외의 속성들에 기초하여 선택된다. 그러나, 몇몇 상황들에서는, 예외가 취해졌던 시간에 처리되고 있었던 코드와 연관된 예외 레벨과 동일한 예외 레벨에서 다른 유형들의 예외들이 취해지는 것이 가능할 수 있다. 예외가 취해질 때, 예를 들어, 예외가 취해졌던 시간에서의 현재 예외 레벨(315)을 포함한, 예외가 취해졌던 시간에서의 프로세서의 상태를 특성화하는 정보가 저장될 수 있으며, 이에 따라, 일단 예외 핸들러가 예외를 다루도록 처리되면, 처리는 이전 처리로 복귀할 수 있고, 저장된 정보는 처리가 복귀해야 하는 예외 레벨을 식별하는 데 사용될 수 있다.
상이한 예외 레벨들에 더하여, 처리 회로부는 또한 루트 도메인(82), 안전한(S) 도메인(84), 덜 안전한 도메인(86), 및 렐름 도메인(88)을 포함하는 동작의 다수의 도메인들을 지원한다. 참조의 용이함을 위해, 덜 안전한 도메인은 "안전하지 않은"(NS) 도메인으로 후술될 것이지만, 이는 임의의 특정 보안(또는 보안 부족) 레벨을 암시하는 것으로 의도되지 않는다는 것이 이해될 것이다. 대신, "안전하지 않은"은 단지, 안전하지 않은 도메인이 안전한 도메인에서 동작하는 코드보다 덜 안전한 코드에 대해 의도됨을 나타낼 뿐이다. 루트 도메인(82)은, 처리 회로부(310)가 최고 예외 레벨 EL3에 있을 때 선택된다. 처리 회로부가 다른 예외 레벨들 EL0 내지 EL2 중 하나의 예외 레벨에 있을 때, 현재 도메인은 다른 도메인들(84, 86, 88) 중 어느 것이 활성인지를 나타내는 현재 도메인 표시자(314)에 기초하여 선택된다. 다른 도메인들(84, 86, 88) 각각에 대해, 처리 회로부는 예외 레벨들 EL0, EL1 또는 EL2 중 임의의 것에 있을 수 있다.
부트 시간에는, 다수의 부트 코드 피스들(예를 들어, BL1, BL2, OEM 부트)이, 예를 들어, 더 많은 특권을 가진 예외 레벨들 EL3 또는 EL2 내에서 실행될 수 있다. 부트 코드 BL1, BL2는, 예를 들어, 루트 도메인과 연관될 수 있고, OEM 부트 코드는 안전한 도메인에서 동작할 수 있다. 그러나, 일단 시스템이 부트되면, 런타임에, 처리 회로부(310)는 한 번에 도메인들(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자들이 더 안전한 서비스들을 제공할 기회들을 제한할 수 있다.
따라서, 도 4에 도시된 바와 같이, 렐름 도메인으로 불리는 추가적인 도메인(88)이 제공되며, 이는 그러한 사용자 도입 코드에 의해, 안전한 도메인(84)에서 동작하는 컴포넌트들과 연관된 임의의 안전한 컴퓨팅 환경에 직교하는 안전한 컴퓨팅 환경을 제공하기 위해 사용될 수 있다. 렐름 도메인에서, 실행되는 소프트웨어는 다수의 렐름들을 포함할 수 있으며, 여기서, 각각의 렐름은 예외 레벨 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 코드 이미지들 및 구성에 대한 측정들이 이루어지고, 런타임에, 렐름 콘텐츠들 및 구성이 측정되며, 이에 따라, 렐름 소유자는 알려진 구현예들 및 인증들에 대한 관련 증명 보고를 다시 추적하여, 그 시스템 상에서 동작할지 여부에 대한 신뢰 결정을 내릴 수 있다.
도 4에 도시된 바와 같이, 도메인 스위칭을 관리하는 별개의 루트 도메인(82)이 제공되고, 그 루트 도메인은 그 자신의 격리된 루트 물리 어드레스 공간을 갖는다. 루트 도메인의 생성 및 그의 리소스들의 안전한 도메인으로부터의 격리는, 안전하지 않은 및 안전한 도메인들(86, 84)만을 갖고 렐름 도메인(88)을 갖지 않는 시스템들에 대해서도 더 강건한 구현예를 허용하지만, 렐름 도메인(88)을 지원하는 구현예들에 대해서도 또한 사용될 수 있다. 루트 도메인(82)은 실리콘 제공자 또는 아키텍처 설계자에 의해 제공되는(또는 그에 의해 인증되는) 모니터 소프트웨어(29)를 사용하여 구현될 수 있고, 안전한 부트 기능성, 신뢰되는 부트 측정들, 시스템-온-칩 구성, 디버그 제어 및 OEM과 같은 다른 파티들에 의해 제공되는 펌웨어 컴포넌트들의 펌웨어 업데이트들의 관리를 제공하는 데 사용될 수 있다. 루트 도메인 코드는, 최종 디바이스에 대한 종속성 없이, 실리콘 제공자 또는 아키텍처 설계자에 의해 개발, 인증 및 배치될 수 있다. 대조적으로, 안전한 도메인(84)은 소정 플랫폼 및 보안 서비스들을 구현하기 위해 OEM에 의해 관리될 수 있다. 안전하지 않은 도메인(86)의 관리는 운영 체제 서비스들을 제공하도록 운영 체제(32)에 의해 제어될 수 있는 한편, 렐름 도메인(88)은, 안전한 도메인(84) 내의 기존의 안전한 소프트웨어 환경들로부터 상호 격리되면서, 사용자 또는 제3자 애플리케이션들에 전용될 수 있는 새로운 형태들의 신뢰되는 실행 환경들이 개발될 수 있게 한다.
도 5는 하드웨어로 제공된 물리 메모리 상의 각자의 물리 어드레스 공간들의 에일리어싱의 개념을 예시한다. 전술한 바와 같이, 도메인들(82, 84, 86, 88) 각각은 그 자신의 각자의 물리 어드레스 공간(61)을 갖는다.
물리 어드레스가 어드레스 변환 회로부(316)에 의해 생성될 때, 물리 어드레스는 시스템에 의해 지원되는 소정 수치 범위(62) 내의 값을 가지며, 이는 어느 물리 어드레스 공간이 선택되는지에 관계없이 동일하다. 그러나, 물리 어드레스의 생성에 더하여, 어드레스 변환 회로부(316)는 또한 현재 도메인(14) 및/또는 물리 어드레스를 도출하기 위해 사용되는 페이지 테이블 엔트리 내의 정보에 기초하여 특정 물리 어드레스 공간(PAS)을 선택할 수 있다. 대안적으로, 어드레스 변환 회로부(316)가 PAS의 선택을 수행하는 대신에, 어드레스 변환 회로부(예를 들어, MMU)는 물리 어드레스 및 PAS의 선택에 사용되는 페이지 테이블 엔트리(PTE)로부터 도출된 정보를 출력할 수 있고, 이어서, 이러한 정보는 PAS를 선택하기 위해 PAS 필터(320)에 의해 사용될 수 있다.
주어진 메모리 액세스 요청에 대한 PAS의 선택은, 하기의 테이블에 정의된 규칙들에 따라, 처리 회로부(310)가 메모리 액세스 요청을 발행할 때 동작하고 있는 현재 도메인에 따라 제약될 수 있다:
선택할 수 있는 다수의 물리 어드레스 공간들이 있는 그러한 도메인들의 경우, 물리 어드레스를 제공하는 데 사용되는 액세스된 페이지 테이블 엔트리로부터의 정보는 이용가능 PAS 옵션들 사이에서 선택하는 데 사용된다.
따라서, PAS 필터(320)가 시스템 패브릭으로 메모리 액세스 요청을 출력할 때(그것이 임의의 필터링 체크들을 통과했다고 가정함), 메모리 액세스 요청은 물리 어드레스(PA) 및 선택된 물리 어드레스 공간(PAS)과 연관된다.
물리 에일리어싱 지점(PoPA)(60) 이전에 동작하는 메모리 시스템 컴포넌트들(예컨대, 캐시들, 상호접속부들, 스누프 필터들 등)의 관점에서, 각자의 물리 어드레스 공간들(61)은 메모리 내의 상이한 시스템 위치들에 대응하는 완전히 별개인 어드레스 범위들로서 보여진다. 이는, 프리-PoPA 메모리 시스템 컴포넌트들의 관점에서, 메모리 액세스 요청에 의해 식별되는 어드레스 범위가 실제로는 어드레스 변환에서 출력될 수 있는 범위(62)의 4배의 크기이고, 사실상 PAS ID가 물리 어드레스 자체와 함께 추가적인 어드레스 비트들로서 취급되므로, 어느 PAS가 선택되는지에 따라, 동일한 물리 어드레스 PAx가 개별적인 물리 어드레스 공간들(61) 내의 다수의 에일리어싱 물리 어드레스들(63)에 매핑될 수 있다는 것을 의미한다. 이러한 에일리어싱 물리 어드레스들(63)은 모두 실제로는, 물리적 하드웨어로 구현되는 동일한 메모리 시스템 위치에 대응하지만, 프리-PoPA 메모리 시스템 컴포넌트들은 에일리어싱 어드레스들(63)을 별개의 어드레스들로서 취급한다. 따라서, 그러한 어드레스들에 대해 엔트리들을 할당하는 임의의 프리-PoPA 캐시들 또는 스누프 필터들이 있는 경우, 에일리어싱 어드레스들(63)은 별개의 캐시 히트/누락 결정들 및 별개의 코히런시 관리를 갖는 상이한 엔트리들에 매핑될 것이다. 이는 공격자들이 다른 도메인들의 동작을 조사하기 위한 메커니즘으로서 캐시 또는 코히런시 부채널들을 사용할 가능성 또는 효과를 감소시킨다.
시스템은 하나 초과의 PoPA(60)를 포함할 수 있다(예를 들어, 메모리 액세스 요청들이 수신자 메모리 시스템 컴포넌트들의 상이한 서브세트들로 라우팅될 수 있게 하는 상이한 경로들에서 상이한 PoPA들이 구현될 수 있음). 각각의 PoPA(60)에서, 에일리어싱 물리 어드레스들은 시스템 물리 어드레스 공간(64) 내의 단일의 디에일리어싱된 어드레스(65)로 축소(collapse)된다. 디에일리어싱된 어드레스(65)는 임의의 포스트-PoPA 컴포넌트들 하류에 제공되며, 이에 따라, 메모리 시스템 위치들을 실제로 식별하는 시스템 물리 어드레스 공간(64)은 요청자측에서 수행되는 어드레스 변환에서 출력될 수 있는 물리 어드레스들의 범위와 다시 한번 크기가 동일하다. 예를 들어, PoPA(60)에서, PAS ID는 어드레스들로부터 스트립핑될 수 있고, 하류 컴포넌트들에 대하여, 어드레스들은 PAS를 지정하지 않으면서, 단순히 물리 어드레스 값을 사용하여 식별될 수 있다. 대안적으로, 메모리 액세스 요청의 일부 컴플리터측 필터링이 요구되는 일부 경우에 대해, PAS ID가 PoPA(60) 하류에 여전히 제공될 수 있지만, 어드레스의 부분으로서 해석되지 않을 수 있으며, 이에 따라, 상이한 물리 어드레스 공간들(60)에 나타나는 동일한 물리 어드레스들은 PoPA 하류에서 동일한 메모리 시스템 위치를 지칭하는 것으로서 해석될 것이지만, 공급된 PAS ID는 임의의 컴플리터측 보안 체크들을 수행하기 위해 여전히 사용될 수 있다.
도 6은 시스템 물리 어드레스 공간(64)이 과립 보호 테이블(321)을 사용하여, 특정 아키텍처 물리 어드레스 공간(61) 내의 액세스에 할당된 청크(chunk)들로 분할될 수 있는 방법을 예시한다. 과립 보호 테이블(GPT)(321)은 시스템 물리 어드레스 공간(65)의 어느 부분들이 각각의 아키텍처 물리 어드레스 공간(61)으로부터 액세스되도록 허용되는지를 정의한다. 예를 들어, GPT(321)는 소정 크기(예를 들어, 4K 페이지, 또는 상이한 크기의 과립)의 물리 어드레스들의 과립에 각각 대응하는 다수의 엔트리들을 포함할 수 있고, 그 과립에 대해 할당된 PAS를 정의할 수 있는데, 이는 안전하지 않은, 안전한, 렐름 및 루트 도메인들 중에서 선택될 수 있다. 설계에 의해, 특정 과립 또는 과립들의 세트가 도메인들 중 하나의 도메인과 연관된 PAS에 할당되는 경우, 그것은 그 도메인과 연관된 PAS 내에만 액세스될 수 있고 다른 도메인들의 PAS들 내에는 액세스될 수 없다. 그러나, (예를 들어) 안전한 PAS에 할당된 과립이 루트 PAS 내로부터 액세스될 수 없지만, 루트 도메인(82)은 그럼에도 불구하고, 물리 어드레싱된 메모리의 그 영역에 매핑된 페이지들에 연관된 가상 어드레스들이 루트 PAS 대신에 안전한 PAS 내의 물리 어드레스로 변환되는 것을 보장하기 위한 PAS 선택 정보를 그의 페이지 테이블들(317) 내에 지정함으로써 물리 어드레스들의 그 과립에 액세스할 수 있다는 것에 주목한다. 따라서, (앞서 설명된 테이블에 정의된 액세스가능성/액세스불가능성 규칙들에 의해 허가되는 정도까지) 도메인들에 걸쳐 데이터를 공유하는 것은 주어진 메모리 액세스 요청에 대한 PAS를 선택하는 지점에서 제어될 수 있다.
그러나, 일부 구현예들에서, 물리 어드레스들의 과립이 GPT(321)에 의해 정의된 할당된 PAS 내에서 액세스되도록 허용하는 것에 더하여, GPT는 다른 GPT 속성들을 사용하여 어드레스 공간의 소정 영역들을 다른 어드레스 공간(예를 들어, 통상적으로 그 도메인의 액세스 요청들에 대해 할당된 PAS를 선택하도록 허용되지 않을 더 낮은 또는 직교 특권의 도메인과 연관된 어드레스 공간)과 공유되는 것으로서 마킹할 수 있다. 이는 주어진 과립에 대해 할당된 PAS를 변경할 필요 없이 데이터의 일시적인 공유를 용이하게 할 수 있다. 예를 들어, 도 6에서, 렐름 PAS의 영역(70)은 렐름 도메인에 할당되는 것으로 GPT에 정의되며, 이에 따라, 통상적으로 그것은 안전하지 않은 도메인(86)으로부터 액세스불가능할 것인데, 그 이유는, 안전하지 않은 도메인(86)이 그의 액세스 요청들을 위해 렐름 PAS를 선택할 수 없기 때문이다. 안전하지 않은 도메인(86)이 렐름 PAS에 액세스할 수 없기 때문에, 통상적으로 안전하지 않은 코드는 영역(70) 내의 데이터를 볼 수 없다. 그러나, 렐름이 일시적으로 그의 할당된 메모리 영역들 내의 그의 데이터의 일부를 안전하지 않은 도메인과 공유하기를 원하는 경우, 그것은 루트 도메인(82)에서 동작하는 모니터 코드(29)가, 영역(70)이 안전하지 않은 도메인(86)과 공유될 것임을 나타내도록 GPT(321)를 업데이트하는 것을 요청할 수 있고, 이것은, 어느 도메인이 영역(70)에 대해 할당된 도메인인지를 변경할 필요 없이, 도 6의 좌측에 도시된 바와 같이, 영역(70)을 또한 안전하지 않은 PAS로부터 액세스가능하게 할 수 있다. 렐름 도메인이 그의 어드레스 공간의 영역을 안전하지 않은 도메인과 공유되는 것으로 지정한 경우, 안전하지 않은 도메인으로부터 발행되는 그 영역을 타겟화하는 메모리 액세스 요청들이 초기에는 안전하지 않은 PAS를 특정할 수 있지만, PAS 필터(20)는 요청의 PAS ID를 대신에 렐름 PAS를 특정하도록 리매핑할 수 있으며, 이에 따라, 하류 메모리 시스템 컴포넌트들은 요청을, 그것이 그동안 내내 렐름 도메인으로부터 발행된 것처럼 취급한다. 이러한 공유는 성능을 개선할 수 있는데, 그 이유는, 특정 메모리 영역에 상이한 도메인을 할당하기 위한 동작들이 더 큰 정도의 캐시/TLB 무효화 및/또는 메모리 내의 데이터 제로화 또는 메모리 영역들 사이의 데이터 복사를 수반하여 더 성능 집약적일 수 있기 때문이며, 이는 공유가 단지 일시적이라고 예상되는 경우에는 정당하지 않을 수 있다.
메모리 액세스 요청들의 발행
도 7은 처리 요소(6)로부터 메모리 액세스 요청을 발행할 때 수행되는 단계들을 예시하는 흐름도이다. 단계 100에서, 처리 회로부(310)는 각각이 대응하는 물리 어드레스 공간과 연관된 적어도 3개의 도메인 중 하나에서 명령어들을 처리한다. 단계 101에서, 처리 회로부는 메모리 액세스 요청이 발행되어야 하는지를 결정한다. 메모리 액세스 요청은 로드/저장 명령어의 실행에 의해 트리거되는 데이터 액세스 요청일 수 있거나, 명령어 페치 스테이지(300)가 메모리 또는 명령어 캐시로부터 명령어를 페치하기 위한 페치 요청을 발행함으로써(또는 프리페처가 명령어 페치 스테이지(300)에 의해 실제로 명령어가 요구되는 시간에 앞서 명령어 캐시 내로 명령어를 사전 페치하기 위한 사전 페치 요청을 발행함으로써) 유발되는 명령어 페치 액세스 요청일 수 있다. 메모리 액세스 요청이 현재 발행되지 않아야 하는 경우, 처리는 단계 100에서 계속된다.
메모리 액세스 요청이 발행되어야 할 때, 단계 102에서 MMU(316)는 메모리 액세스를 위해 지정된 가상 어드레스를 물리 어드레스로 변환하고, 물리 어드레스 선택 회로부(예컨대, MMU(316) 또는 PAS 필터(320))는 현재 도메인(314) 및 메모리 액세스의 가상 어드레스에 대응하는 페이지 테이블(317)로부터의 페이지 테이블 엔트리에 지정된 정보에 기초하여 출력 PAS를 선택한다.
도 8은 도 7의 단계 102를 더 상세히 예시한다. 도 8의 단계 130에서, 처리 회로부(310)가 주어진 가상 어드레스(VA)를 타겟 VA로서 지정하는 메모리 액세스 요청을 발행한다. 단계 132에서, 어드레스 변환 회로부(316)가 그의 TLB(318) 내의 임의의 페이지 테이블 엔트리들(또는 그러한 페이지 테이블 엔트리(PTE)들로부터 도출된 캐싱된 정보)을 룩업한다. 임의의 요구된 페이지 테이블 정보가 이용가능하지 않은 경우, 어드레스 변환 회로부(316)는 요구되는 PTE들을 페치하기 위해 메모리에 대해 페이지 테이블 워크(page table walk)를 개시한다(잠재적으로, 페이지 테이블 구조의 각자의 레벨들을 거쳐 단계적으로 움직이기 위한 일련의 메모리 액세스들 및/또는 VA로부터 중간 어드레스(IPA)로 그리고 이어서 IPA로부터 PA로의 매핑들을 획득하기 위한 다수의 어드레스 변환 스테이지들을 요구함). 페이지 테이블 워크 동작들에서 어드레스 변환 회로부(16)에 의해 발행되는 임의의 메모리 액세스 요청들은 그 자체가 어드레스 변환 및 PAS 필터링의 대상일 수 있으며, 따라서, 단계 130에서 수신된 요청은 메모리로부터의 페이지 테이블 엔트리를 요청하기 위해 발행된 메모리 액세스 요청일 수 있다는 것에 유의한다. 일단 관련 페이지 테이블 정보가 식별되면, 가상 어드레스는 (아마도 IPA를 통한 2개의 스테이지들에서) 물리 어드레스로 변환된다. 단계 134에서, 어드레스 변환 회로부(316) 또는 PAS 필터(320)는 어떤 도메인이 현재 도메인인지를 결정한다(현재 예외 레벨(315)이 EL3인 경우, 현재 도메인은 루트 도메인이고, 현재 예외 레벨(315)이 EL2, EL1 또는 EL0인 경우, 현재 도메인은 현재 도메인 표시(314)에 의해 표시된 바와 같은 안전하지 않은 도메인, 안전한 도메인 및 렐름 도메인 중 하나이다).
현재 도메인이 안전하지 않은 도메인인 경우, 단계 136에서, 이러한 메모리 액세스 요청에 대해 선택된 출력 PAS는 안전하지 않은 PAS이다.
현재 도메인이 안전한 도메인인 경우, 단계 138에서, 출력 PAS는 물리 어드레스를 제공한 PTE에 포함된 PAS 선택 정보에 기초하여 선택되며, 여기서, 출력 PAS는 안전한 PAS 또는 안전하지 않은 PAS로서 선택될 것이다.
현재 도메인이 렐름 도메인인 경우, 단계 140에서, 출력 PAS는 물리 어드레스가 도출된 PTE에 포함된 PAS 선택 정보에 기초하여 선택되고, 이러한 경우, 출력 PAS는 렐름 PAS 또는 안전하지 않은 PAS로서 선택된다.
단계 134에서 현재 도메인이 루트 도메인이라고 결정되는 경우, 단계 142에서, 출력 PAS는 물리 어드레스가 도출된 PTE(114) 내의 PAS 선택 정보에 기초하여 선택된다. 이러한 경우, 출력 PAS는 루트, 렐름, 안전한 및 안전하지 않은 도메인들과 연관된 물리 어드레스 공간들 중 임의의 물리 어드레스 공간으로서 선택된다.
도 8은 페이지 테이블(317)의 PTE에 정의된 정보에 기초한 PAS의 선택을 설명하지만, 다른 접근법은 각각의 VA에 대해 사용할 PAS를 지정하는, 페이지 테이블(317)과는 독립적인, 별개의 데이터 구조를 제공하는 것일 수 있다. 그러나, 실제로 얼마간의 공간이 PTE에서 PAS 선택 정보를 지정하는 데 이용 가능할 수 있으며, PAS 선택 정보를 페이지 테이블 정보와 결합함으로써 이것은 TLB(318) 또는 페이지 테이블(317)에 더하여 제2 구조를 룩업할 필요를 회피할 수 있으며, 이는 전력을 절약하고 회로 면적을 감소시키는 데 도움이 된다.
도 7로 되돌아가서, 일단 출력 PAS가 이용가능하면, 단계 103에서 PAS 필터(320)는 단계 102에서 선택된 출력 PAS 및 물리 어드레스(PA)에 기초하여 PAS 필터 체크를 개시한다. 단계 103은 도 9에 더 상세히 도시된다. 도 9의 단계 160에서, PAS 필터(320)는 PA 및 출력 PAS를 지정하는 메모리 액세스 요청을 수신하고, 단계 162에서 PAS 필터(320)는 과립 보호 테이블(321)로부터 메모리 액세스의 물리 어드레스에 대응하는 과립 보호 테이블 엔트리를 획득한다(GPT 엔트리는 GPT 캐시(322)에서 PA가 히트하는 경우 GPT 캐시(322)로부터 획득될 수 있거나, 그렇지 않으면 메모리에서 GPT(321)에 대한 액세스를 수행함으로써 획득될 수 있음). 단계 164에서, PAS 필터(320)는 타겟 PA에 대응하는 획득된 과립 보호 테이블 엔트리 GPT[PA]가 타겟 PA에 대응하는 어드레스 공간의 과립이 단계 102에서 선택된 출력 PAS 내에서 액세스되도록 허용됨을 나타내는지를 결정한다. 만약 그렇다면, 단계 166에서 메모리 액세스가 진행하도록 허용된다. 특정 물리 어드레스에 대응하는 GPT 엔트리가 물리 어드레스에 대응하는 과립이 단계 102에서 선택된 출력 PAS 내에서 액세스되는 것이 허용되지 않음을 나타내는 경우, 단계 168에서 메모리 액세스 요청이 차단되고 캐시, 상호접속부 또는 다른 메모리 시스템 컴포넌트에 발행되는 것이 방지되거나, PAS 필터에 의해 행해지는 체크가 완료되기 전에 메모리 액세스 요청이 추측적으로 발행되도록 허용하는 시스템에서 PAS 필터가 메모리 액세스 요청의 효과를 상쇄시키는 액션을 취할 수 있다. 예를 들어 PAS 필터는 메모리 액세스 요청에 의해 야기되는 메모리에서의 상태에 있어서의 임의의 변경이 취소되는 것을 보장하는, 또는 메모리 액세스 요청에 응답하여 메모리로부터 반환된 임의의 상태가 레지스터를 업데이트하는 데 사용되지 않거나 달리 소프트웨어가 액세스 가능하게 되지 않는 것을 보장하는 제어 신호를 발행할 수 있다.
주어진 과립이 주어진 출력 PAS 내에서 액세스되는 것이 허용될 수 있는지를 지정하기 위해 GPT 엔트리에 포함되는 정보의 포맷은 구현마다 다를 수 있다. 일부 구현예들은 주어진 PA에 대해 하나의 특정 PAS만 사용되도록 허용하는 GPT 엔트리를 지원할 수 있으며, 그 경우에 체크는 단순히 출력 PAS가 단계 162에서 액세스되는 GPT 엔트리에 지정된 허용된 PAS와 매칭되는지 여부일 수 있다. 다른 예는 동일한 물리 어드레스에 대한 다수의 허용된 출력 PAS를 지원할 수 있으며, 이 경우에 체크는 출력 PAS가 PA에 대해 GPT 엔트리에 의해 지정된 하나 이상의 허용된 PAS 중 임의의 것인지 여부일 수 있다.
도 7로 되돌아가서, 한편 메모리 액세스 요청의 발행(101)에 응답하여, 단계 104에서 파티션 ID 선택 회로부(332)는 현재 실행 환경과 연관된 프로그래밍 가능한 파티션 ID 선택 정보에 기초하여 파티션 ID(예를 들어, 나중에 더 상세하게 논의되는 바와 같은 PARTID 및/또는 PMG)를 선택한다. 예를 들어, 파티션 ID 선택 정보는 MPAM 제어 레지스터(330)로부터 획득될 수 있다. 각각의 소프트웨어 실행 환경은 MPAM 제어 레지스터(330)에 저장된 소정의 MPAM 상태 세트와 관련될 수 있으며, 이는 실행 환경들 사이에서 컨텍스트 스위칭할 때 저장/복원되는 그 소프트웨어 실행 환경의 컨텍스트 정보의 일부일 수 있다. 따라서, 하나의 소프트웨어 실행 환경으로부터 다른 소프트웨어 실행 환경으로 스위칭할 때, 들어오는 소프트웨어 실행 환경과 연관된 MPAM 상태를 지정하기 위해 MPAM 제어 레지스터(330)를 업데이트하는 것을 포함하여, 들어오는 소프트웨어 실행 환경과 연관된 컨텍스트가 레지스터에 기입될 수 있다. 파티션 ID의 선택은 또한 현재 예외 레벨(315) 및/또는 수행되는 액세스 유형(예를 들어, 액세스가 명령어 페치 액세스인지 또는 데이터 액세스인지)에 기초할 수 있다. 파티션 ID의 선택은 아래에 설명되는 도 13a 및 도 13b에 더 상세하게 도시되어 있다.
또한, 단계 105에서 파티션 ID 공간 선택 회로부(334)는 현재 도메인(340)에 기초하여(그리고 선택적으로 또한 MPAM 제어 레지스터(330) 내에 지정될 수 있는 프로그래밍 가능한 제어 정보, 및/또는 현재 예외 레벨(350)에 기초하여) 파티션 ID 공간을 선택한다. 파티션 ID 공간의 선택은 아래에서 추가로 설명되는 도 14 및 도 15에 더 상세하게 도시되어 있다. 도 7은 단계 104 및 105가 단계 102 및 103과 병렬로 수행되는 것을 도시하고 있지만, 다른 예들에서 이들은 순차적으로 행해질 수 있다. 또한, 단계 105가 단계 104 후에 순차적으로 수행되는 것으로 도시되지만, 다른 예들에서 단계 105는 단계 104 전에 발생할 수 있거나 단계 104와 105가 병렬로 발생할 수 있다.
단계 106에서, 메모리 액세스 요청이 메모리 시스템에(예를 들어, 캐시, 상호접속부 또는 다른 메모리 시스템 컴포넌트에) 발행되어, 단계 102에서 MMU(316)에 의해 획득된 물리 어드레스, 단계 102에서 선택된 출력 PAS를 나타내는 PAS 표시자, 단계 105에서 선택되는 선택된 파티션 ID 공간을 나타내는 파티션 ID 공간 표시자(MPAM_SP) 및 단계 104에서 선택되는 하나 이상의 선택된 파티션 ID를 지정한다. 파티션 ID 공간 표시자 MPAM_SP는 처리 회로부가 실행할 수 있는 각자의 도메인에 대응하는 적어도 3개의 상이한 파티션 식별 공간 중 하나를 나타낼 수 있는 멀티비트 값이다. 4개의 상이한 도메인(안전하지 않은, 안전한, 렐름 및 루트)을 지원하는 도 4에 도시된 것과 같은 예에서, MPAM_SP는 각각이 그러한 도메인들 중 하나에 대응하는, 4개의 상이한 파티션 ID 공간을 구별할 수 있다. 예를 들어, MPAM_SP는 다음과 같이 2비트 인코딩을 가질 수 있다(물론, 다른 인코딩이 또한 가능함):
Figure pct00002
안전하지 않은 파티션 ID 공간: 0b01;
안전한 파티션 ID 공간: 0b00;
렐름 파티션 ID 공간 0b11;
루트 파티션 ID 공간 0b10.
파티션 ID들 및 파티션 ID 공간의 선택
도 10은 도 3에 도시된 MPAM 제어 레지스터들(330)의 예를 도시한다. MPAM 제어 레지스터들(330)은 다수의 파티션 ID 레지스터들 MPAMi_ELj(340, 342, 344, 346)를 포함하며, 여기서 i는 그 레지스터가 파티션 ID들을 제공하는 데 사용되는 예외 레벨을 나타내고, j는 그 레지스터 내의 정보를 업데이트할 수 있는 최소 특권을 가진 예외 레벨을 나타낸다. 따라서, MPAM0_EL1(340)은 예외 레벨 EL0에서 사용하기 위한 파티션 ID들을 제공하고, 예외 레벨 EL1 이상에서 동작하는 코드에 의해 업데이트가능하다.
MPAM 제어 레지스터들(330)은 또한 발견 레지스터 MPAMIDR_EL1(348)을 포함하며, 이는 도 11에 더 상세하게 도시되어 있고, 프로세서 구현의 하드웨어 능력에 관한 정보를 제공하여, 소프트웨어가 하드웨어 상에 어떤 특징들이 구현되는지를 발견할 수 있게 하는 데 사용된다. 도 11에 도시된 바와 같이, 발견 레지스터(348)는 파티션 ID 레지스터들(340, 342, 344, 346)의 리소스 제어 파티션 ID(PARTID) 및 성능 모니터링 그룹(PMG) 필드들에 대해 허용되는 최대값을 나타내는 파티션 ID 최대값들(370, 372)을 포함할 수 있다. 이것은 상이한 하드웨어 구현들이 이러한 ID에서 상이한 비트 수를 지원할 수 있게 하며, 소프트웨어는 발견 레지스터의 최대 필드들(370, 372)을 판독하여 하드웨어에 의해 지원되는 최대 파티션 ID 값을 발견할 수 있다.
발견 레지스터(348)는 또한 하드웨어 구현이 위의 도 4에 도시된 바와 같은 안전하지 않은, 안전한, 렐름 및 루트 상태들에 대응하는 4개의 파티션 ID 공간을 지원하는지를 나타내기 위한 필드 SP4(374)를 포함한다. 모든 하드웨어 구현이 4개의 파티션 ID 공간을 지원할 수 있는 것은 아니며, 따라서 4-공간 지원 필드(374)는 소프트웨어가 그것이 추가적인 파티션 ID 공간을 사용할 수 있는지를 식별하는 데 유용할 수 있다. 4개의 파티션 ID 공간을 지원하는 파티션 ID 공간 선택 회로부(334)를 갖는 구현에서, SP4 필드(374)는 1로 설정될 수 있다. SP4 필드(374)는 4개의 파티션 ID 공간을 지원하지 않는 레거시 디바이스에서 0으로 설정될 발견 레지스터(348)의 비트에 있을 수 있다.
또한, 발견 레지스터는 아래에서 추가로 논의되는 바와 같이 하드웨어 구현이 대안 파티션 ID 공간의 제공을 지원하는지를 나타내는 대안 파티션 ID 공간 지원 표시 필드(376)를 포함한다. 대안 파티션 ID 공간의 제공을 지원하지 않는 구현에서, 각각의 도메인은 0으로 설정될 그의 기본 파티션 ID 공간 필드(376)를 사용하는 것으로 제한된다(또 다시 필드(376)는 레거시 디바이스에서 0으로 설정될 발견 레지스터의 비트에 있을 수 있다). 대안 파티션 ID 공간의 제공을 지원하는 구현에서, HAS_ALTSP 필드(376)는 1로 설정된다.
도 12는 파티션 ID 레지스터들(340, 342, 344, 346)을 더 상세히 도시한다. 이러한 레지스터들은 메모리 시스템으로 전송될 때 메모리 액세스 요청에 첨부될 파티션 ID를 선택하기 위한, 그리고 메모리 액세스 요청에 대해 표시될 파티션 ID 공간을 선택하기 위한 정보를 포함한다. 파티션 ID 레지스터들(340, 342, 344, 346)의 상태는 처리 회로부 상에서 실행되는 주어진 소프트웨어 실행 환경과 연관된 컨텍스트 정보의 일부로서 간주될 수 있다. 컨텍스트 스위치가 발생할 때, 레지스터들(340, 342, 344, 346)은 들어오는 소프트웨어 실행 환경과 연관된 컨텍스트 정보로 업데이트된다.
각각의 파티션 ID 레지스터(340-346)는 대응하는 예외 레벨에서 실행되는 소프트웨어를 위해 사용할 파티션 ID들을 제공하기 위한 다수의 파티션 ID 필드들(350, 352, 354, 356)을 포함한다. 이러한 예에는, 데이터(리소스 파티셔닝) 파티션 ID(PARTID_D) 필드(350), 명령어(리소스 파티셔닝) 파티션 ID(PARTID_I) 필드(352), 데이터 성능 모니터링 그룹 ID(PMG_D) 필드(354) 및 명령어 성능 모니터링 그룹 ID(PMG_I) 필드(356)를 포함하는 4개의 필드들이 있다.
필드들(350, 354)은 데이터 메모리 액세스들을 위해 사용되고, 필드들(352, 356)은 명령어 페치 메모리 액세스들을 위해 사용된다.
필드들(350, 352)은 각각, 데이터 액세스들 및 명령 페치들에서 사용하기 위한 리소스 파티셔닝 파티션 ID를 제공한다. 메모리 시스템 컴포넌트는 리소스 파티셔닝 파티션 ID 필드들(350, 352) 중 하나의 필드 내의 값에 기초하여 선택된 파티션 ID를 사용하여, 캐시 용량 또는 메모리 버스 대역폭과 같은 리소스들의 할당을 제어하거나 또는 (예를 들어, 파티션 ID에 기초하여 요청 우선순위를 선택함으로써) 상이한 요청들 사이의 경합을 관리할 수 있다.
성능 모니터링 그룹 필드들(354, 356)은 성능 모니터링 그룹 ID에 기초하여 성능 모니터링 데이터를 업데이트할지의 여부를 제어하는 데 사용되는 ID를 제공한다. 일부 예들에서, 필드들(354, 356) 내의 성능 모니터링 그룹 ID는 리소스 제어 파티션 ID 필드들(350, 352)과는 별개인 독립형 ID로서 간주될 수 있다. 그러나, 다른 예들에서, 성능 모니터링 그룹 ID(354, 356)는 리소스 제어 파티션 ID(350, 352)와 함께 사용될 수 있는 일부 추가적인 비트일 수 있으며, 따라서 그 경우에 성능 모니터링을 제어하기 위해 메모리 시스템 컴포넌트에 의해 사용되는 성능 모니터링 그룹 ID 값은, 필드(354, 356) 내의 값을 독립적인 ID로 간주하기보다는, 선택된 파티션 ID 및 선택된 성능 모니터링 그룹 ID의 접합일 수 있다. 예를 들어, PMG 필드들(354, 356)은 PARTID 필드들 중 대응하는 PARTID 필드에 대한 접두사 또는 접미사로 간주될 수 있다. PMG 필드들(354, 356)이 PARTID 값들과 독립적으로 해석되는지 아니면 PARTID 값들과 조합하여 판독되는지와는 상관없이, 성능 모니터링 그룹 ID(354, 356)를 정의함으로써, 이것은 동일한 리소스 파티셔닝 파티션 ID를 공유하는 요청들의 상이한 서브세트들이 성능 모니터링의 목적을 위해 구별될 수 있게 한다.
리소스 파티셔닝(필드들(350, 352)을 사용함) 및 성능 모니터링 제어(필드들(354, 356)을 사용함)를 위한 별개의 파티션 ID들을 제공하는 것이 필수적인 것은 아니라는 것이 이해될 것이다. 다른 예들에서, 동일한 ID가 둘 모두의 목적을 위해 사용될 수 있거나, 일부 구현예들은 리소스 할당의 파티셔닝 및 성능 모니터링 제어의 파티셔닝 둘 모두가 아니라 그 중 하나만을 지원할 수 있으며, 따라서 둘 모두의 유형의 필드들을 제공하지 않을 수 있다.
또한, 별도의 명령어 및 데이터 파티션 ID들이 지원되는 것은 필수적인 것은 아니며, 다른 예들은 둘 모두의 목적을 위해 공통 ID를 제공할 수 있다. 그러나, 상이한 리소스 제어 파라미터들이 대응하는 명령어 및 데이터 액세스들에 사용될 수 있도록, 동일한 소프트웨어 실행 환경에 대한 데이터 및 명령어 액세스들에 대해 별도의 파티션 ID들이 정의될 수 있도록 하는 것이 유용할 수 있다. 대안적인 접근법은 전체적으로 소프트웨어 실행 환경과 연관된 단일 파티션 ID를 가질 것이지만, 액세스가 명령어들 또는 데이터에 대한 것인지 여부에 따라 0 또는 1의 추가 비트를 추가할 것이며, 이것은 메모리 시스템 컴포넌트가 각각 명령어 및 데이터 액세스에 대한 상이한 제어 파라미터를 선택하도록 허용할 것이다. 그러나, 파티션 ID에 기초하여 선택되는 주어진 개수의 제어 파라미터 세트에 대해서, 이러한 접근법은 데이터와 명령어 사이에 파티션 ID 공간의 50-50 분할이 있어야 할 것임을 의미할 것이다. 실제로, 다수의 소프트웨어 실행 환경이 동일한 코드를 사용하지만 상이한 데이터 입력으로 실행하는 것이 비교적 일반적일 수 있기 때문에, 명령어 파티션보다 많은 데이터 파티션을 갖는 것이 종종 바람직할 수 있으며, 따라서 단일 명령어 파티션 ID를 다수의 소프트웨어 실행 환경에서 공유하면서 이들 각각의 환경에서 서로 다른 데이터 파티션을 사용할 수 있게 하는 것이 특히 유용할 수 있다. 그 상황에서 데이터 액세스에 대한 명령어를 나타내기 위해 0 또는 1 비트를 추가하는 접근법은 공통 코드의 각각의 개별 인스턴스에 대해 메모리 시스템 컴포넌트에서 다수의 세트의 동일한 구성 정보가 정의되도록 요구할 것이다. 대조적으로, 명령어 및 데이터 파티션 ID들이 공통 ID 공간으로부터 선택되는, 파티션 ID 레지스터(340-346)에 별도의 명령어 및 데이터 파티션 필드들을 제공함으로써, 상이한 소프트웨어 실행 환경들 사이에 동일한 파티션 ID를 재사용하고, 50-50 분할로 제한하지 않고서 필요에 따라 데이터와 명령어들 사이의 파티션 ID 공간을 파티셔닝하는 것이 가능하다. 각각의 파티션 ID 레지스터(340-346) 내의 2배만큼 많은 파티션 ID 필드들에 대해 약간의 추가적인 저장 용량이 필요할 수 있지만, 이러한 접근법은 메모리 시스템 컴포넌트에서 리소스를 절약할 수 있는데, 그 이유는 다수의 실행 환경의 명령어 액세스들 사이에 하나의 파티션을 공유함으로써, 메모리 시스템 컴포넌트에서 더 적은 제어 파라미터 세트들(및 따라서 더 적은 저장소)이 요구되기 때문이다.
도 13a는 메모리 액세스 요청에 대해 지정될 파티션 ID의 선택을 제어하는 방법을 예시한다. 도 13a에 도시된 접근법은 데이터 액세스 메모리 트랜잭션에 사용될 수 있다. 단계 110에서 처리 회로부(310)는, 예를 들어 실행 유닛들(304)에 의해 실행되는 로드/저장 명령어에 응답하여, 데이터 액세스(로드/저장) 메모리 액세스 요청을 발행한다. 단계 112에서 파티션 ID 선택 회로부(332)는 프로세서의 현재 동작 상태에 의존하여 선택된 파티션 ID 레지스터들(340, 342, 344, 346) 중 하나를 판독한다. 예를 들어, 파티션 ID 선택 회로부(332)는 현재 예외 레벨(315)에 대응하는 파티션 ID 레지스터들(340, 342, 344, 346) 중 하나를 선택할 수 있다(현재 예외 레벨이 EL0인 경우 레지스터(340)를, 현재 예외 레벨이 EL1인 경우 레지스터(342)를, 현재 예외 레벨이 EL2인 경우 레지스터(344)를, 그리고 현재 예외 레벨이 EL3인 경우 레지스터(346)를 선택함). 일부 구현예들에서, 현재 예외 레벨과 연관된 레지스터(340-346)를 사용하는 디폴트로부터 벗어나서, 특정 예외 레벨에 대해 어느 파티션 ID 레지스터가 선택되는지를 변화시킬 수 있는, 제어 레지스터들 내의 추가 제어 상태 정보를 정의하는 것이 가능할 수 있다. 예를 들어, 현재 예외 레벨이 EL0일 때 레지스터 MPAM1_EL1(342) 내의 파티션 ID가 사용되도록 강제할 수 있는 파라미터를 설정하는 것이 가능하며, 이는 운영 체제가 그것이 관리하고 있는 애플리케이션이 MPAM1_EL1(342)에 정의된 바와 같은 운영 체제 자체와 동일한 파티션 ID를 사용하기를 원하는 경우에 유용할 수 있으며, 따라서 이것은 운영 체제가 MPAM0_EL1(340)에 대한 파티션 ID 값을 설정해야 하는 것을 회피할 수 있다. 따라서, 일부 시스템들에서 일부 제어 상태들은 또한 현재 예외 레벨 이외의 MPAM 레지스터의 선택에 영향을 미칠 수 있지만, 이것은 필수적인 것은 아니다.
단계 118에서, 현재 메모리 액세스 요청이 데이터 액세스 요청이기 때문에, 단계 112에서 선택된 레지스터들(340, 342, 344, 346) 중 하나로부터 PMG_D 및 PARTID_D 필드들(354, 350)이 판독된다. 단계 120에서, 파티션 ID 선택 회로부(332)는 현재 동작 상태에서 선택된 레지스터로부터 판독된 파티션 ID에 대해 파티션 ID의 가상화가 구현되고 인에이블되는지를 결정한다. EL2 또는 EL3으로서 실행되는 프로세스에 대해, 가상화를 수행할 필요가 없다. EL0 또는 EL1에서의 소프트웨어 실행 환경에 대해, 하드웨어에 의해 가상화가 지원되는 경우, 가상화가 현재 인에이블되는지 여부는 (예를 들어, EL2에서 실행 중인 하이퍼바이저에 의해 제어되는) 제어 레지스터에 지정된 정보에 의존할 수 있다. 파티션 ID의 가상화가 하드웨어에서 구현될 뿐만 아니라 현재 예외 레벨에 대해 현재 인에이블될 때, 단계 122에서 파티션 ID 선택 회로부(332)는 현재 실행 환경에 대해 설정된 매핑 정보에 기초하여 단계 118에서 판독된 가상 파티션 ID 값을 대응하는 물리 파티션 ID 값에 매핑하기 위해 가상-물리 파티션 ID 매핑을 수행한다. 예를 들어, 하이퍼바이저가 파티션 ID의 리매핑을 구현하는 데 사용될 수 있는 파티션 ID 리매핑 테이블을 유지할 수 있다. 이것은 충돌하는 파티션 ID 값들을 정의했을 수 있는 상이한 게스트 운영 체제들이 충돌 없이 동일한 시스템 상에 공존할 수 있게 하여, 충돌하는 가상 파티션 ID 값들이 상이한 물리 파티션 ID 값들에 리매핑될 수 있고, 별개의 리소스 할당 제어 또는 성능 모니터링을 수행하기 위해 메모리 시스템 컴포넌트에서 각자의 운영 체제들의 액세스 요청들이 구별될 수 있게 하는 데 유용할 수 있다. 매핑 테이블은 상이한 방식들로 구현될 수 있는데, 예를 들어 레지스터들(340, 342, 344, 346)로부터 판독된 가상 파티션 ID의 상이한 값들에 대응하는 물리 파티션 ID 값들을 지정하기 위해 파티션 ID 리매핑 레지스터들의 세트가 제공될 수 있거나, 대안적으로 메모리에 저장된 리매핑 구조가 매핑 테이블을 제공하는 데 사용될 수 있다. 가상화가 구현 및 인에이블되고 단계 122에서 파티션 ID가 물리 파티션 ID에 리매핑되는 경우, 단계 150에서 리매핑된 파티션 ID는 메모리 액세스 요청과 함께(일단 그 요청이 임의의 필요한 어드레스 변환 및 PAS 필터링을 거치면) 캐시, 상호접속부 또는 다른 메모리 시스템 컴포넌트로의 송신을 위해 출력된다. 가상-물리 파티션 ID 매핑이 하드웨어 디바이스 상에서 구현되지 않거나 현재 인에이블되지 않은 경우, 단계 122는 생략되고, 단계 150에서 선택된 레지스터(340-346)로부터 판독된 파티션 ID들은 단순히 리매핑 없이 그들의 원래의 형태로 출력된다.
도 13b는 명령어 페치 액세스 메모리 트랜잭션을 위한 파티션 ID를 선택하는 방법을 예시한다. 도 13b의 단계 111에서, 처리 회로부(310)는 주어진 어드레스에 대한 명령어의 페치를 요청하기 위해 명령어 페치 메모리 액세스 요청을 발행한다. 명령어 페치 요청은, 명령어가 실행을 위해 페치되는 것을 실제로 필요로 할 때 페치 회로부(300)에 의해 행해질 수 있거나, 또는 일부 구현예는 그들이 실행을 위해 실제로 필요로 되기 전에 명령어들을 명령어 캐시에 사전 페치하는 사전 페치 회로부를 가질 수 있고, 따라서, 사전 페치 회로부는 또한 명령어 페치 메모리 액세스 요청들을 생성할 수 있다. 명령어 페치 메모리 액세스 요청의 발행에 응답하여, 도 13b의 단계 112-150은 데이터 액세스 요청에 대해 도 13a에서와 동일하지만, 도 13a의 단계 118은 도 13b에서의 단계 116으로 대체되고 여기서 PMG_D 및 PARTID_D 필드들(354, 350) 대신에 PMG_I 및 PARTID_I 필드들(356, 352)이 선택된 파티션 ID 레지스터로부터 판독되는 것은 제외된다. 단계 120, 122, 150은 그들이 필드들(354, 350)로부터의 데이터 파티션 ID 값 대신에 필드들(356, 352)로부터의 명령어 파티션 ID 값을 사용하고 있다는 것을 제외하고는 동일하다.
도 12로 되돌아가서, 파티션 ID 레지스터들 중 일부는 또한 주어진 메모리 액세스 요청에 대해 사용될 파티션 ID 공간의 선택을 제어하기 위한 제어 상태 정보를 포함한다. 처리 회로부에 의해 지원되는 도메인들 각각은 그 도메인과 연관된 대응하는 기본 파티션 ID 공간을 갖는다. 레지스터들(344, 346) 내의 제어 상태는 기본 파티션 ID 공간을 사용할지 또는 대안 파티션 ID 공간을 사용할지를 선택하는 데 사용될 수 있다. 이러한 제어 상태 정보는 다음을 포함한다:
MPAM3_EL3(346)에서:
루트 도메인에 대한 대안 파티션 ID 공간이 안전한 파티션 ID 공간인지 안전하지 않은 파티션 ID 공간인지를 선택하기 위해 EL3에서 코드에 의해 사용되는 루트 대안 공간 선택 정보(RT_ALTSP_NS)(360);
EL3에서 발행된 메모리 액세스에 대해 기본 파티션 ID 공간이 사용되어야 하는지 또는 대안 파티션 ID 공간이 사용되어야 하는지를 선택하는 데 사용되는 EL3 파티션 ID 공간 선택 정보(ALTSP_EL3(362));
ALTSP_HEN(366)을 사용하여 계층적 제어가 디스에이블된 경우에 EL2, EL1 및 EL0으로부터 이루어진 액세스에 대해 기본 파티션 ID 공간을 사용할지 또는 대안 파티션 ID 공간을 사용할지의 선택을 제어하기 위해 EL3에서 프로그래밍 가능한 공간 선택 제어 정보를 제공하는 EL3-제어 계층적 강제 공간 선택 정보(ALTSP_HFC)(364);
계층적 제어가 인에이블되는지 또는 디스에이블되는지를 제어하는 계층적 제어 인에이블 정보(ALTSP_HEN)(366). 계층적 제어가 인에이블될 때, EL2에서 실행되는 명령어들은 EL2, EL1 또는 EL0으로부터 이루어지는 액세스에 대한 기본 파티션 ID 공간과 대안 파티션 ID 공간 간의 선택에 영향을 미치도록 허용된다. 계층적 제어가 디스에이블될 때, EL2에서 실행되는 명령어들은 EL2, EL1 또는 EL0으로부터 이루어지는 액세스에 대한 기본 파티션 ID 공간과 대안 파티션 ID 공간 간의 선택에 영향을 미칠 수 없으며, EL2, EL1 또는 EL0으로부터 이루어지는 액세스에 대한 기본 파티션 ID 공간과 대안 파티션 ID 공간 간의 선택은 레지스터 MPAM3_EL3(346) 내의 EL3에서 실행되는 명령어들에 의해 설정되는 ALSTP_HFC(364)에 의존한다;
MPAM2_EL2(344)에서:
EL3에서 동작하는 코드가 EL2에서 동작하는 코드에 대한 대안 파티션 ID 공간의 선택을 강제했는지를 나타내는 EL2 계층적 강제 공간 표시 정보(ALTSP_FRCD);
MPAM3_EL3.ALTSP_HEN(366)을 사용하여 계층적 제어가 인에이블된 경우에, EL2에서 동작하는 코드가 기본 파티션 ID 공간을 사용해야 하는지 또는 대안 파티션 ID 공간을 사용해야 하는지를 제어하는 EL2에서 동작하는 코드에 의해 설정되는 EL2 파티션 ID 공간 선택 정보(ALTSP_EL2)(372);
MPAM3_EL3.ALTSP_HEN(366)에 의해 계층적 제어가 인에이블되는 경우에, EL0 또는 EL1에서 동작하는 코드가 기본 파티션 ID 공간을 사용해야 하는지 또는 대안 파티션 ID 공간을 사용해야 하는지를 지정하는 EL2에 설정되는 프로그래밍 가능한 파티션 ID 공간 선택 정보인 EL2-제어 계층적 강제 공간 선택 정보(ALTSP_HFC)(374);
MPAM1_EL1(342)에서:
EL3 또는 EL2에서 동작하는 코드에 의해 EL1에서 동작하는 코드에 대해 대안 파티션 ID 공간의 선택이 강제되었는지를 EL1에서 동작하는 코드에 표시하는 EL1 계층적 강제 공간 표시 정보(ALTSP_FRCD)(380).
이러한 파티션 ID 선택 제어들에 의해 지원되는 옵션들의 요약이 아래에 제공된다:
발견 레지스터 내의 필드(376)에 의해 표시된 바와 같이 하드웨어에 의해 대안 파티션 ID 공간 특징(ALTSP)이 지원될 때, (레지스터들(344, 346)에서의 제어들이 기본/대안 공간이 선택됨을 나타내는지에 관계없이 안전하지 않은 파티션 ID 공간이 사용되는) 안전하지 않은 이외의 보안 상태들(도메인들) 각각에 대해 대안 파티션 ID 공간이 지원된다. 동등하게, 안전하지 않은 보안 상태는 여전히 대안 파티션 ID 공간을 갖는 것으로 간주될 수 있지만, 그의 대안 파티션 ID 공간은 기본 파티션 ID 공간과 동일하다. 따라서, 도메인들 각각에 대해 지원되는 기본 및 대안 파티션 ID 공간은 다음과 같다:
루트에 대한 대안 공간의 선택은 RT_ALTSP_NS 필드(360) 내의 MPAM3_EL3(346)에서 이루어진다. 이 필드 내의 0b1은 루트 보안 상태에 대한 대안 파티션 ID 공간으로서 안전하지 않은 파티션 ID 공간을 선택한다. 0b0의 RT_ALTSP_NS는 루트 보안 상태에 대한 대안 파티션 ID 공간으로서 안전한 파티션 ID 공간을 선택한다.
EL3에서 실행할 때, 처리 요소는 루트 보안 상태에 있다. 루트 보안 상태에서 생성된 메모리 시스템 요청에 대한 기본 또는 대안 파티션 ID 공간의 선택은 MPAM3_EL3(346) 내의 비트에 의해 제어된다:
Figure pct00018
RT_ALTSP_NS(360)는 루트 보안 상태에서의 대안 파티션 ID 공간이 안전하지 않은 파티션 ID 공간인지 또는 안전한 파티션 ID 공간인지를 설정한다.
ALTSP_EL3(362)은 EL3으로부터 생성된 메모리 시스템 요청이 기본 파티션 ID 공간을 사용하는지 또는 대안 파티션 ID 공간을 사용하는지를 설정한다.
이러한 2개의 비트는 조합되어 루트 상태에서 EL3으로부터의 액세스에 대해 사용되는 파티션 ID 공간에 대한 3개의 조합을 제공한다:
EL2, EL1 또는 EL0에서 실행할 때, 보안 상태는 안전한, 안전하지 않은 또는 렐름 보안 상태일 수 있다. EL3에서 실행되는 루트 소프트웨어는 EL2가 그 자신의 파티션 ID 공간 및 EL1 및 EL0에 의해 사용되는 파티션 ID 공간을 제어하도록 허용할 수 있거나, 그것은 EL2, EL1 및 EL0에 대해 기본 또는 대안 공간이 선택되도록 강제할 수 있다.
EL3이 MPAM2_EL2(344)에서 대안 공간 제어를 인에이블한 경우(즉, 계층적 제어가 MPAM3_EL3.ALTSP_HEN(366)에 의해 인에이블된 것으로 표시됨), EL2는 MPAM2_EL2.ALTSP_EL2(370)를 통해 EL2에서 생성된 파티션 ID가 기본 파티션 ID 공간을 사용하는지 또는 대안 파티션 ID 공간을 사용하는지를 선택할 수 있다. EL3이 MPAM2_EL2(344)에서 대안 공간 제어를 인에이블한 때, EL2는 또한 EL1 및 EL0에 의해 기본 파티션 ID 공간이 사용되는지 또는 대안 파티션 ID 공간이 사용되는지를 선택할 수 있다. EL3은 모든 하위 EL에 대해 MPAM3_EL3.ALTSP_HEN(366)을 삭제하고 대안 파티션 ID 공간을 강제하도록 MPAM3_EL3.ALTSP_HFC(364)를 설정하거나 기본 파티션 ID 공간을 강제하도록 ALTSP_HFC(364)를 삭제함으로써 모든 하위 EL에 대한 선택을 강제한다.
EL2에 대한 그리고 EL1 및 EL0에 대한 조합들의 세트가 아래 표에 제시된다:
MPAM2_EL2(344) 및 MPAM1_EL1(342) 각각에서, 필드 ALTSP_FRCD(370, 380)는 대안 파티션 ID 공간이, 각각, MPAM2_EL2에서의 파티션 ID 및 MPAM1_EL1 및 MPAM0_EL1에서의 파티션 ID에 대해 강제되었음을 나타낸다. EL1 및 EL0 선택은 항상 동일하고 EL1이 MPAM0_EL1에서의 파티션 ID를 제어하기 때문에, MPAM0_EL1(340)에서의 별개의 표시에 대한 필요성은 존재하지 않는다.
도 14는 파티션 ID 공간 선택 회로부(334)에 의한 파티션 ID 공간의 선택을 예시하는 흐름도이다. 단계 170에서, 파티션 ID 공간 선택 회로부(334)는 레지스터들(344, 346) 내의 프로그래밍 가능한 제어 정보가 기본 또는 대안 파티션 ID 공간이 사용되어야 함을 지정하는지를 결정한다. 기본 파티션 ID 공간이 사용되어야 할 때, 단계 172에서 발행된 메모리 액세스 요청에 대해 파티션 ID 공간 표시자 MPAM_SP에 의해 표시된 선택된 파티션 ID 공간은 현재 도메인과 연관된 기본 파티션 ID 공간이다. 대안 파티션 ID 공간이 사용되어야 하는 경우, 단계 176에서 MPAM_SP에 의해 표시된 선택된 파티션 ID 공간은 현재 도메인과 연관된 대안 파티션 ID 공간이며, 이는 현재 도메인이 렐름, 안전한 또는 안전하지 않은 도메인일 때 안전하지 않은 파티션 ID 공간으로서 고정될 수 있고, EL3에서 동작하는 코드에 의해 MPAM3_EL3(346) 내에서 설정되는 루트 대안 공간 선택 정보 MPAM_EL3.RT_ALTSP_NS(360)에 따라, 루트 도메인에 대한 안전한 또는 안전하지 않은 파티션 ID 공간으로서 프로그래밍 가능할 수 있다.
도 15는 도 14의 단계 170에서 기본 파티션 ID 공간과 대안 파티션 ID 공간 사이에서 선택하기 위한 기준을 더 상세하게 보여주는 흐름도이다. 단계 180에서, 파티션 ID 공간 선택 회로부(334)는 현재 특권 레벨이 EL3인지를 결정하고, 만약 그렇다면, 단계 182에서 EL3에서 동작하는 코드에 의해 설정된 EL3 공간 선택 정보(MPAM3_EL3.ALTSP_EL3(362))가 기본 파티션 ID 공간과 대안 파티션 ID 공간 사이에서 선택하는 데 사용된다.
현재 특권 레벨이 EL2, EL1 또는 EL0인 경우, 단계 184에서 파티션 ID 공간 선택 회로부(334)는 파티션 ID 공간 선택에 대한 계층적 제어가 EL3에 의해 인에이블되는지를 결정한다. 예를 들어, 회로부(334)는 계층적 인에이블 값 MPAM3_EL3.ALTSP_HEN(366)이 제1 값을 갖는지 또는 제2 값을 갖는지를 결정한다. ALTSP_HEN(366)이 제1 값(예를 들어, 1)을 갖는 경우, 계층적 제어가 인에이블되고, ALTSP_HEN(366)이 제2 값(예를 들어, 0)을 갖는 경우, 계층적 제어가 디스에이블된다.
EL3에서 동작하는 코드에 의해 계층적 제어가 디스에이블되는 경우, EL3에서 동작하는 코드는 EL2, El1 또는 EL0에서 동작하는 코드에 대해 기본/대안 파티션 ID 공간이 사용되어야 하는지를 결정할 것이다. 따라서, 단계 186에서 EL2, EL1 또는 EL0에서 사용될 기본 파티션 ID 공간과 대안 파티션 ID 공간 사이의 선택은 EL3에서 코드에 의해 설정된 계층적 강제 공간 선택 정보 MPAM3_EL3.ALTSP_HFC(364)를 사용하여 이루어진다. 따라서, 이 경우에 EL2에서 동작하는 코드는 그것이 또는 EL1 또는 EL0에서 동작하는 코드가 기본 파티션 ID 공간을 사용해야 하는지 또는 대안 파티션 ID 공간을 사용해야 하는지에 영향을 미치지 않는다.
파티션 ID 공간 선택에 대한 계층적 제어가 EL3에 의해 인에이블되는 경우(ALTSP_HEN(366)이 제1 값을 가짐), 단계 188에서 파티션 ID 공간 선택 회로부(334)는 현재 특권 레벨이 EL2인지 또는 EL1 및 EL0 중 하나인지를 결정한다. 현재 특권 레벨이 EL2인 경우, 단계 190에서 기본 파티션 ID 공간과 대안 파티션 ID 공간 사이의 선택이 레지스터(344) 내에 EL2에서 코드에 의해 설정된 EL2 공간 선택 정보 MPAM2_EL2.ALTSP_EL2(372)를 사용하여 이루어진다. 반면에, 현재 특권 레벨이 EL1 또는 EL0인 경우, 단계 192에서 기본 파티션 ID 공간과 대안 파티션 ID 공간 사이의 선택이 EL2에서 동작하는 코드에 의해 레지스터(344) 내에 설정된 계층적 강제 선택 정보 MPAM2_EL2.ALTSP_HFC(374)를 사용하여 이루어진다.
위에서 논의된 흐름도들은 소정 순서 또는 시퀀스로 발생하는 단계들을 보여 주지만, 다른 구현들은 단계들을 재순서화하거나 단계들 중 일부를 병렬로 수행할 수 있다는 것이 인식될 것이다.
요약하면, 레지스터들 내의 프로그래밍 가능한 제어 정보를 사용함으로써, 위에서 논의된 바와 같이 각자의 동작 도메인에 대응하는 4개의 파티션 ID 공간 중 하나 내에 파티션 ID들이 정의될 수 있고, 소프트웨어는 그들이 실제로 지원되는 파티션 ID 공간 4개 전부를 사용할 필요가 있는지 또는 어떤 소프트웨어가 상이한 보안 상태들에서 동작하는 소프트웨어 간에 공통 파티션 ID 공간을 공유하는 것을 허용하기 위해 대안 파티션 ID 공간을 사용하는 것을 선호할 수 있는지에 대해 유연성을 갖는다. 소프트웨어가 공통 파티션 ID 공간을 공유할 수 있는 경우, 이것은 현재 사용 중인 파티션 ID와 파티션 ID 공간의 각각의 조합에 대해 메모리 시스템 컴포넌트에 대해 정의될 리소스 제어 파라미터 세트들의 수를 감소시킬 수 있으며, 이는 소프트웨어에 대한 관리 오버헤드를 감소시킬 수 있다.
파티션 ID 및 파티션 ID 공간의 메모리 시스템 컴포넌트 사용
도 16은 메모리 시스템 컴포넌트 내의 회로부의 예를 예시하며, 이는 예를 들어 캐시(8, 10, 12, 16, 20), 상호접속부(14, 18) 내의 제어 회로부, 또는 메모리 제어기(24)일 수 있다. 위에서 논의된 바와 같이 액세스의 물리 어드레스(PA), 파티션 ID 공간 표시자 MPAM_SP 및 하나 이상의 파티션 ID, 예를 들어 리소스 제어 파티션 ID(PARTID) 및 성능 모니터링 그룹 ID(PMG)를 지정하는 메모리 액세스 요청이 메모리 시스템 컴포넌트에 의해 수신된다. 메모리 시스템 컴포넌트가 물리 에일리어싱 지점(PoPA)(60)의 상류에 위치해 있는 프리-PoPA 컴포넌트인 경우, 메모리 액세스 요청은 또한 액세스의 물리 어드레스 공간을 식별하는 물리 어드레스 공간 PAS ID를 지정한다. 메모리 시스템 컴포넌트가 PoPA(60)의 하류에 있는 경우, PAS ID는 요청과 함께 제공되지 않을 수 있는데, 왜냐하면 요청이 이미 PoPA를 통과하였을 것이기 때문이며, 여기서 상이한 물리 어드레스 공간들 내의 에일리어싱 물리 어드레스들은 (예를 들어, PAS ID를 스트립핑함으로써) 디에일리어싱된다.
메모리 시스템 컴포넌트는 리소스 제어 파라미터 선택 회로부(400)를 포함하며, 이는, 요청과 함께 공급된 파티션 ID 공간 표시자 MPAM_SP와 리소스 제어 파티션 ID 값(PARTID)의 조합에 기초하여, 리소스 제어 설정 구조(402)로부터 하나 이상의 메모리 시스템 리소스 제어 파라미터의 세트를 선택한다. 리소스 제어 설정 구조(402)는 각각이 MPAM_SP, PARTID 값들의 상이한 조합에 대응하는 다수의 엔트리(404)를 포함한다. 따라서, 상이한 파티션 ID 공간들에서 발생하는 동일한 파티션 ID 값 PARTID는 리소스 제어 파라미터들(404)의 상이한 세트들에 대응할 수 있다. 리소스 제어 설정 구조(402)는 메모리 시스템 컴포넌트 내의 하드웨어에 구현된 레지스터들의 세트일 수 있으며, 이는 처리 회로부(310)가 그 레지스터들 중 하나에 매핑된 어드레스를 그의 타겟 어드레스로서 지정하는 메모리 액세스 요청을 발행함으로써 업데이트될 수 있다(일부 경우에, 메모리 맵에 노출될 어드레스들의 수를 감소시키기 위해, 단일 레지스터가 리소스 제어 설정이 업데이트되어야 할 때 기입될 메모리 매핑 어드레스를 갖는 인터페이스로서의 역할을 할 수 있고, 인터페이스 레지스터를 타겟으로 하는 메모리 액세스 요청에 의해 지정된 정보의 일부는 어느 리소스 제어 설정 엔트리(404)가 업데이트되어야 하는지를 나타내는 엔트리 ID일 수 있으며, 따라서 하드웨어에서 제공되는 각각의 리소스 제어 설정 레지스터에 대해 별개의 메모리 매핑 어드레스를 갖는 것이 필요하지 않다). 대안적으로, 리소스 제어 설정 구조(402)는 그 구조에 대해 소프트웨어에 의해 예약된 어드레스 세트에서 메모리 내에 유지되는 구조일 수 있고, 그 경우에 메모리 시스템 컴포넌트의 하드웨어는 단지 메모리 어드레스 공간 내의 그 데이터 구조의 베이스 어드레스를 식별하는 레지스터를 가질 수 있다. 선택적으로 메모리 시스템 컴포넌트는 그 메모리 기반 구조로부터 리소스 제어 설정 엔트리(404)를 캐싱하기 위한 리소스 제어 설정 캐시를 포함할 수 있다.
일반적으로, 리소스 제어 설정(402)이 하드웨어 시스템 컴포넌트의 레지스터를 사용하여 구현되는지 또는 메모리 내의 데이터 구조를 사용하여 구현되는지에 관계없이, 주어진 파티션 ID 공간에 대응하는 리소스 제어 파라미터(404)는 주어진 파티션 ID 공간과 연관된 도메인에 대응하는 물리 어드레스 공간을 PAS ID에서 지정하는 메모리 액세스 요청을 발행함으로써 처리 요소(6) 상에서 실행되는 소프트웨어가 액세스 가능할 수 있다. 따라서, 안전하지 않은, 안전한, 렐름 및 루트 파티션 ID 공간에 파티션 ID에 대한 설정을 정의하기 위한 리소스 제어 설정은 각각 안전하지 않은, 안전한, 렐름 및 루트 물리 어드레스 공간 내의 물리 어드레스를 지정하는 메모리 액세스 요청을 사용하여 액세스될 수 있다.
리소스 제어 파라미터들(404)의 선택된 세트에 기초하여, 리소스 사용 제어 회로부(406)는 선택된 리소스 제어 파라미터들에 기초하여 메모리 액세스 요청의 서비스를 제어한다. 리소스 제어 파라미터가 요청의 서비스에 영향을 미치는 데 사용되는 방식은 메모리 시스템 컴포넌트의 유형 및 구현된 특징에 따라 다를 수 있지만, 일반적으로 파라미터는 요청의 핸들링에 대한 성능 리소스의 할당 또는 상이한 요청들 간의 그러한 리소스에 대한 경합의 관리에 영향을 미칠 수 있지만, 리소스 제어 설정은 요청이 허용되어야 하는지 또는 거부되어야 하는지의 결정 또는 어느 특정 메모리 시스템 위치가 요청에 응답하여 액세스되는지의 선택과 같은, 요청의 핸들링의 기능적 결과에 영향을 미치지 않는다.
예를 들어, 메모리 시스템 컴포넌트가 캐시인 경우, 리소스 제어 설정(404)은 요청의 물리 어드레스 PA와 연관된 데이터 또는 명령어들에 대한 캐시 저장 용량의 할당을 제어하는 데 사용될 수 있다. 예를 들어, 리소스 제어 설정들(404)은 지정된 파티션 ID 및 파티션 ID 공간과 연관된 데이터 명령어들을 위해 할당되도록 허용된 최대 캐시 용량을 정의할 수 있으며, 이때 캐시 용량 제한은, 예를 들어, 파티션 ID와 파티션 ID 공간 표시자의 그 조합에 사용되도록 허용된 캐시 용량의 최대 비율을 정의한다. 다른 옵션은 리소스 제어 설정들이, 캐시의 어느 개별 부분들(예컨대, 세트-연관 캐시의 어느 경로들)이 대응하는 파티션 ID 및 파티션 ID 공간과 연관된 데이터 또는 명령어들을 위해 할당되도록 허용되는지를 지정하는 것일 수 있다. 부분 기반 제어에 의하면, 하나의 소프트웨어 프로세스가 캐시의 경로들의 상대적으로 작은 서브세트를 사용하는 것으로 제한될 수 있는 반면, 다른 소프트웨어 실행 환경은 그 다른 소프트웨어 실행 환경이 메모리에 액세스할 때 더 큰 성능을 보일 가능성이 더 크도록 하기 위해 더 많은 수의 경로들을 사용하도록 허용될 수 있다. 어느 경로든, 주어진 소프트웨어 실행 환경에 의해 사용되는 캐시 용량의 양을 제한할 수 있는 일부 리소스 제어 설정들을 제공함으로써, 이것은, 하나의 소프트웨어 실행 환경이 캐시 용량의 대부분을 다 써버리는 것을 방지함으로써 시끄러운 이웃 문제를 감소시킬 수 있다.
리소스 사용 제어의 다른 예는 상호접속부 또는 메모리 제어기가 지정된 파티션 ID 및 파티션 ID 공간에 기초하여 현재 요청에 대해 선택된 리소스 제어 설정(404)에 기초하여 버스 상의 대역폭의 할당을 제어하는 것일 수 있다. 예를 들어, 최소 및/또는 최대 대역폭은 메모리 액세스 요청에 지정된 파티션 ID 파티션 ID 공간에 의해 표시된 바와 같은 특정 소프트웨어 실행 환경과 연관된 요청에 대해 버스 상의 얼마나 많은 슬롯이 사용될 수 있는지를 제어하는 데 사용될 수 있는 리소스 제어 설정에 정의될 수 있다. 예를 들어, 주어진 프로세스에 의해 최근에 사용된 대역폭이 파티션 ID와 파티션 ID 공간의 조합에 대해 선택된 대응하는 리소스 제어 설정 세트에 표시된 그의 최소 대역폭 아래로 떨어지는 경우, 파티션 ID와 파티션 ID 공간의 그 조합을 지정하는 요청이 향후 버스 조정에서 우선순위화될 수 있다. 주어진 프로세스에 의해 사용된 대역폭이 정의된 최대 대역폭을 초과하는 경우, 파티션 ID와 파티션 ID 공간의 대응하는 조합을 지정하는 메모리 액세스 요청은, 예를 들어 대역폭 이용이 최대치 아래로 떨어질 때까지 추가 버스 슬롯을 할당받는 것이 방지됨으로써, 향후 버스 조정 결정에서 역우선순위화될 수 있다.
다른 옵션은 메모리 제어기 또는 상호접속부와 같은 메모리 시스템 컴포넌트가 리소스 제어 설정에 기초하여 주어진 메모리 액세스 요청에 대한 우선순위를 설정할 수 있으며, 따라서 하나의 소프트웨어 실행 환경에 대한 요청이 다른 소프트웨어 실행 환경에 대한 요청보다 앞서 우선순위화될 수 있는 것일 수 있으며, 우선순위는 요청들 간의 리소스에 대한 경합을 관리하는 데 사용된다. 따라서, 리소스 제어 설정이 메모리 액세스에 대한 요청을 서비스할 때 달성되는 성능에 영향을 미칠 수 있는 매우 다양한 방법이 있을 수 있다.
도 16에 도시된 바와 같이, 메모리 시스템 컴포넌트는 또한 메모리 시스템 컴포넌트에 의한 메모리 액세스 요청 프로세스에 응답하여 성능 모니터 카운터(412)의 업데이트를 제어하는 성능 모니터 선택 및 필터링 회로부(410)를 포함할 수 있으며, 성능 모니터(412)를 업데이트하기 위한 기준은 필터 파라미터(414)에 정의된다. 리소스 제어 설정(402)과 유사하게, 필터 파라미터(414)는 메모리 시스템 컴포넌트의 레지스터 내에, 또는 (선택적으로 캐싱될 수 있는) 메모리 기반 구조 내에 정의될 수 있다. 성능 모니터(412)는 또한 메모리 매핑 레지스터로서 또는 메모리에서 액세스될 수 있다. 파티션 ID 공간 표시자 및 성능 모니터링 그룹 ID PMG(및, 선택적으로, PMG가 PARTID와 접합될 접두사/접미사로 간주되는 구현에서 리소스 제어 파티션 ID 값(PARTID)도)는 MPAM_SP, PMG 및 선택적으로 PARTID의 조합에 대응하는 필터 파라미터들(414)의 세트의 선택에 기초하여 어느 성능 모니터(412)를 업데이트할지 그리고/또는 성능 모니터를 업데이트할지 여부를 선택하는 데 사용될 수 있다. 따라서, 파티션 ID와 파티션 ID 공간 표시자의 상이한 조합에 대해 상이한 성능 모니터(412)가 정의될 수 있고, 또한 그러한 조합에 대해 상이한 필터 파라미터 세트가 정의될 수 있다. 이것은 하나의 소프트웨어 실행 환경에 대해 다른 소프트웨어 실행 환경과 비교하여 성능이 개별적으로 추적될 수 있는 것을 허용하며, 또한 상이한 보안 도메인들에서 실행되는 소프트웨어가 성능 모니터링에 대한 상이한 기준들을 정의하기 위해 그들과 연관된 상이한 성능 모니터 세트들 또는 상이한 필터 파라미터 세트들을 가질 수 있는 것을 허용한다. 예를 들어, 성능 모니터들(412)은 소정 기준을 충족시키는 메모리 액세스 요청에 응답하여 증분되는 카운터들의 세트일 수 있고, 필터 파라미터들은 성능 모니터들이 업데이트될 메모리 어드레스들의 범위를 정의하거나, 추적될 메모리 액세스들의 유형들(예를 들어, 로드들 또는 저장들)을 정의하거나, 캐시 미스, 전체 요청, 요청들 핸들링의 레이턴시 등과 같은 성능 모니터(412)에 의해 카운트될 이벤트들의 유형들을 정의하는 것과 같이 기준들을 정의할 수 있다.
도 16은 리소스 제어 설정 선택 회로부(400) 및 성능 모니터링 선택 및 필터링 회로부(410) 둘 모두를 갖는 메모리 시스템 컴포넌트의 예를 도시하지만, 모든 메모리 시스템 컴포넌트가 이들 둘 모두를 갖는 것이 필수적인 것은 아니며, 일부 시스템 컴포넌트들은 이들 중 하나만을 가질 수 있다. 또한, 메모리 시스템은 리소스 파티셔닝을 전혀 지원하지 않는 몇몇 컴포넌트들을 포함할 수 있으며, 그들은 리소스 제어 설정 선택 회로부(400)도 성능 모니터링 선택 및 필터링 회로부(410)도 갖지 않는다. 그럼에도 불구하고, 어떠한 파티셔닝도 지원하지 않는 그러한 메모리 시스템 컴포넌트는 파티셔닝을 지원하는 다른 메모리 시스템 컴포넌트와 동일한 메모리 시스템 내에 공존할 수 있다.
도 17은 메모리 시스템 컴포넌트에서의 메모리 액세스 요청의 처리를 도시하는 흐름도이다. 단계 200에서, 메모리 시스템 컴포넌트는 물리 어드레스(PA), 파티션 ID(PARTID 및/또는 PMG), 파티션 ID 공간 표시자(MPAM_SP) 및 선택적으로, 예를 들어 메모리 시스템 컴포넌트가 PoPA(60)의 상류에 있는 경우, PAS 표시자를 지정하는 메모리 액세스 요청을 수신한다. 단계 202에서, 메모리 시스템 컴포넌트가 리소스 파티셔닝을 지원하는 경우, 방법은 단계 204로 진행되며, 여기서 리소스 제어 설정 선택 회로부(400)는 리소스 제어 파티션 ID(PARTID) 및 파티션 ID 공간 표시자(MPAM_SP)에 기초하여 하나 이상의 리소스 제어 파라미터들(404)의 세트를 선택한다. 단계 206에서, 리소스 사용 제어 회로부(406)는 리소스 제어 파라미터들의 선택된 세트(204)에 기초하여 메모리 액세스 요청에 대한 리소스 할당 또는 경합 관리를 제어한다. 메모리 시스템 컴포넌트가 리소스 파티셔닝을 지원하지 않는 경우, 단계 204 및 206은 생략된다.
단계 208에서, 메모리 시스템 컴포넌트가 성능 모니터링 파티셔닝을 지원하는 경우, 단계 210에서 성능 모니터 선택 및 필터링 회로부(210)는 파티션 ID(적어도 성능 모니터링 그룹 ID(PMG), 그러나 선택적으로 또한 일부 실시예들에서 리소스 제어 파티션 ID(PARTID)에 기초하여) 및 파티션 ID 공간 표시자 MPAM_SP에 기초하여 성능 모니터링 데이터(412)를 업데이트할지를 선택한다. 예를 들어 파티션 ID와 파티션 ID 공간 표시자의 조합에 대응하는 필터 파라미터들(414)의 세트가 선택되고, 메모리 액세스 요청이 이러한 필터 파라미터들을 충족시키는지가 결정되고, 만약 그렇다면, 파티션 ID와 파티션 ID 공간 표시자의 조합에 대응하는 성능 모니터(414)가 업데이트된다. 메모리 시스템 컴포넌트가 성능 모니터링 파티션을 지원하지 않는 경우, 단계 210은 생략된다.
메모리 시스템 컴포넌트가 리소스 파티셔닝 및/또는 성능 모니터링 파티셔닝을 지원하는지 여부에 관계없이, 단계 212에서 메모리 액세스 요청이 서비스된다. 메모리 시스템 컴포넌트가 PoPA(60)의 상류에 위치해 있는 프리-PoPA인 경우, 상이한 물리 어드레스 공간들 내의 에일리어싱 물리 어드레스들은 그들이 상이한 메모리 시스템 리소스들을 참조하는 것처럼 취급된다. 예를 들어, 메모리 시스템 컴포넌트가 캐시인 경우, 캐시 용량의 룩업은, 예를 들어 룩업된 캐시 위치가 지정된 어드레스에 대응하는지를 결정하기 위한 캐시 및/또는 태그 값의 세트를 선택하기 위한 인덱스 값의 일부로서 PAS 표시자를 포함함으로써, 주어진 캐시 위치가 요청된 데이터 또는 명령어에 대응하는지를 결정하기 위한 정보의 일부로서 PAS 표시자를 사용할 수 있다. 사실상 PAS 표시자는 캐시의 룩업에서 얼마간의 추가적인 어드레스 비트들로서 취급될 수 있다. 메모리 시스템 컴포넌트가 프리-PoPA 메모리 제어기 또는 상호접속부 또는 버스에 요청을 출력하는 다른 컴포넌트인 경우, PAS 표시자는 PA를 적격화하고 추가적인 어드레스 비트들로서의 역할을 하기 위해 PA와 함께 공급될 수 있다.
단계 214에서, 임의의 메모리 액세스 요청(예컨대, 캐시 미스의 이벤트 시에 캐시 라인 채움 요청, 또는 상호접속부에 의해 버스 상에서 전송되거나 메모리 제어기에 의해 메모리 저장 유닛에 발행되는 요청)이 하류 메모리 시스템 컴포넌트로 전송될 필요가 있는 경우, 파티션 ID 및 파티션 ID 공간 표시자는 하류로 전송되는 요청에 첨부된 라벨로서 포함되며, 따라서 하류 메모리 시스템 컴포넌트가 또한 리소스 파티셔닝 또는 성능 모니터링 파티셔닝을 구현할 수 있다. 또한 메모리 시스템 컴포넌트가 상이한 물리 어드레스 공간으로부터 물리 어드레스를 디에일리어싱하기 위해 PAS를 스트립핑하는 PoPA 메모리 시스템 컴포넌트가 아닌 한, PA 및 PAS 표시자가 또한 하류에 공급될 수 있으며, 이 경우에 PAS 표시자는 하류로 전송되는 요청으로부터 생략될 수 있다.
상이한 수의 파티션 ID 공간을 지원하는 영역들 간의 브리징
시스템 온 칩과 같은 데이터 처리 시스템을 구축할 때, 위에서 논의된 예에서와 같이 일부 컴포넌트가 3개 이상의 파티션 ID 공간 및 3개 이상의 보안 도메인을 지원하는 것이 유용할 수 있지만, 더 적은 도메인 및 파티션 ID 공간을 지원할 수 있는 다른 메모리 시스템 컴포넌트가 있을 수 있다. 레거시 디바이스와의 호환성을 위해, 더 적은 파티션 ID 공간 및 보안 도메인을 지원하는 그러한 디바이스가 위에서 논의된 바와 같은 처리 요소 및 메모리 시스템 컴포넌트와 공존할 수 있게 하는 것이 바람직할 수 있다. 따라서, 도 18에 도시된 바와 같이 데이터 처리 시스템은 위에서 논의된 바와 같이 적어도 3개의 파티션 ID 공간 및 적어도 3개의 보안 도메인을 지원하는 하나 이상의 컴포넌트를 포함하는 제1 영역(450), 및 제1 영역 내의 컴포넌트들보다 더 적은 파티션 ID 공간 및 보안 도메인을 지원하는 하나 이상의 컴포넌트를 포함하는 장치의 제2 영역(452)을 포함할 수 있다. 브리징 회로부(460)는 제1 영역과 제2 영역 사이에서 전달되는 메모리 액세스 요청에 대한 물리 어드레스 공간 ID 및 파티션 ID 공간 표시자를 리매핑하기 위해 제공될 수 있다. 예를 들어, 영역들(450, 452) 사이의 경계에서, 물리 어드레스 공간 표시자(PAS ID)의 4개의 값은 영역(452) 내에서 지원되는 2개의 물리 어드레스 공간 값의 세트로부터의 선택된 값에 매핑될 수 있다. 유사하게, 파티션 ID 공간 표시자(MPAM_SP)의 4:2 리매핑이 수행될 수 있다. 제2 영역(452)으로부터 제1 영역(450)으로 발행된 요청에 대해, 대응하는 2:4 도메인/파티션 ID 공간 리매핑이 수행될 수 있다. 브리징 회로부(460)는 일부 경우에 다른 기능과 결합되는 리매핑 회로부를 포함할 수 있는데, 예를 들어 제2 영역(452) 내의 디바이스들을 대신하여 어드레스 변환을 수행하는 시스템 메모리 관리 유닛(SMMU)(462)이 또한 영역들(450, 452) 사이의 브리지에서 리매핑을 수행할 수 있다. 대안적으로 전용 브리징 회로부(464, 466)가 어드레스 변환과 같은 임의의 다른 기능과는 별개로 영역들 사이의 인터페이스에 제공될 수 있다. 제1 영역(450)으로부터 제2 영역(452)으로 전달되는 요청에 대한 4:2 리매핑 및 제2 영역(452)으로부터 제1 영역(450)으로 전달되는 요청에 대한 2:4 리매핑을 위해 별개의 브리징 컴포넌트들이 제공될 수 있다.
다양한 브리징 기법이 다양한 설계 목표하에 레거시 영역(452)을 지원하는 데 사용될 수 있다. 2 PAS 및 2 PARTID 공간 디바이스(454)가 4 PAS/PARTID 영역(450)에 대한 요청을 행하는 것에 대해, 시스템 MMU(462)는 소프트웨어 정의 페이지 테이블의 제어하에 매핑을 수행할 수 있다. 대안적으로, 상대적으로 저렴하지만 유연하지 않은 솔루션의 경우, 디바이스(454)는 안전하지 않은 PAS의 안전하지 않은 PAS로의 그리고 안전한 PAS의 안전한 PAS로의 정적 변환, 및 안전하지 않은 파티션 ID 공간의 안전하지 않은 파티션 ID 공간으로의 그리고 안전한 파티션 ID 공간의 안전한 파티션 ID 공간으로의 대응하는 변환으로 와이어링될 수 있다. 그러한 레거시 디바이스들은 안전하지 않은/안전한 파티션 ID 공간을 단일 비트 표시자로 인코딩할 수 있으며, 따라서 0b1은 안전하지 않은을 나타내고 0b0은 안전한을 나타내며, 안전한, 안전하지 않은, 루트 및 렐름 파티션 ID 공간을 각각 나타내는 0b00, 0b01, 0b10, 0b11을 갖는 위에서 언급된 MPAM_SP의 인코딩은 유용할 수 있는데, 왜냐하면 이것이 영역(452)에서 디바이스(454)로부터 수신되는 안전하지 않은/안전한 요청의 표시에 더 중요한 비트 0을 첨부함으로써 정적 매핑이 간단히 구현될 수 있게 하기 때문이다. 그럼에도 불구하고, 정적 매핑은 또한 MPAM_SP의 다른 인코딩에 대해 가능할 것이다.
4 PAS 및 4 PARTID 공간 영역(450) 내의 PE(6) 및 다른 요소가 영역(452) 내의 디바이스에 대한 요청을 행할 때, 몇 가지 옵션이 있다:
1. 유연하지 않은 정적 매핑은 루트 PAS 및 안전한 PAS를 레거시 디바이스에 대한 안전한 PAS 요청으로 바꾸고, 렐름 PAS 및 안전하지 않은 PAS 요청을 레거시 컴포넌트에 대한 안전하지 않은 요청으로 바꾼다. 마찬가지로, 루트/안전한 파티션 ID 공간은 안전한 파티션 ID 공간에 매핑되고 렐름/안전하지 않은 PAS 요청은 안전하지 않은 파티션 ID 공간에 매핑된다. 안전한, 안전하지 않은, 루트 및 렐름 파티션 ID를 나타내는 0b00, 0b01, 0b10, 0b11을 갖는 MPAM_SP의 인코딩은 다시 이러한 정적 매핑을 수행하기 위한 회로부를 단순화하는 데 도움이 되는데, 왜냐하면 그것은 그러한 레거시 디바이스(454)에 의해 사용될 수 있는 바와 같은 안전하지 않은에 대한 0b1 및 안전한에 대한 0b0을 나타내는 단일 비트 표시자를 제공하기 위해 MPAM_SP의 최상위 비트가 간단히 버려질 수 있다는 것을 의미하기 때문이다.
2. 레거시 컴포넌트(454) 또는 레거시 영역(452) 외부에 있는 간단한 프로그래밍 가능한 공간 매퍼. 공간 매퍼는 루트 파티션 ID 공간이 안전한 파티션 ID 공간에 매핑되는지 또는 안전하지 않은 파티션 ID 공간에 매핑되는지를, 그리고 렐름 파티션 ID 공간이 안전한 파티션 ID 공간에 매핑되는지 또는 안전하지 않은 파티션 ID 공간에 매핑되는지를 제어한다.
a) 매퍼는 또한 루트 PAS가 안전한 PAS에 매핑되는지 또는 안전하지 않은 PAS에 매핑되는지를, 그리고 렐름 PAS가 안전한 PAS에 매핑되는지 또는 안전하지 않은 PAS에 매핑되는지를 선택할 수 있다. 대안적으로, 루트 PAS는 항상 안전한으로서 매핑될 수 있고, 렐름 PAS는 항상 안전하지 않은으로서 매핑될 수 있으며, 이 경우에 매퍼의 프로그래밍 가능한 태양은 파티션 ID 매핑에 영향을 미치지만 PAS 매핑에는 영향을 미치지 않는다.
b) 매퍼는 또한 루트 파티션 ID 공간으로부터의 요청이 모니터링되어서는 안 되는지를, 그리고 렐름 파티션 ID 공간으로부터의 요청이 모니터링되어서는 안 되는지를 플래그(예를 들어, NO_MON)를 통해 나타낼 수 있다(이것은 플래그가 모니터링이 디스에이블되어야 함을 나타낼 때 모니터링의 디스에이블을 구현하기 위해 레거시 컴포넌트(454)의 소규모 재설계를 필요로 할 수 있지만, 이것은 4개의 파티션 ID 공간 모두를 지원하는 것보다 더 적은 재개발 노력을 요구할 수 있다).
3. 2로부터의 매퍼 조합들 중 하나가 레거시 컴포넌트(454) 내에서 구현될 수 있으며, 이는 2b에 의해 요구되는 것보다 컴포넌트의 설계에 대한 더 큰 변경을 요구한다.
본 출원에서, 단어들 "... 하도록 구성된"은 장치의 요소가 정의된 동작을 수행할 수 있는 구성을 갖는다는 것을 의미하는 데 사용된다. 이러한 맥락에서, "구성"은 하드웨어 또는 소프트웨어의 상호접속의 배열 또는 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 가질 수 있거나, 프로세서 또는 다른 처리 디바이스가 그 기능을 수행하도록 프로그래밍될 수 있다. "하도록 구성된"은 장치 요소가 정의된 동작을 제공하기 위해 임의의 방식으로 변경될 필요가 있다는 것을 암시하지는 않는다.
본 발명의 예시적인 실시예들이 첨부 도면들을 참조하여 본 명세서에서 상세히 설명되었지만, 본 발명은 그러한 정확한 실시예들로 제한되지 않으며, 첨부된 청구항들에 의해 한정된 바와 같은 본 발명의 범위로부터 벗어남이 없이 실시예들에서 다양한 변경들 및 수정들이 당업자에 의해 이루어질 수 있다는 것이 이해되어야 한다.

Claims (20)

  1. 장치로서,
    각각이 대응하는 물리 어드레스 공간과 연관된 적어도 3개의 도메인들 중 하나에서 명령어들을 처리하고, 타겟 메모리 시스템 위치를 나타내는 타겟 어드레스를 지정하는 메모리 액세스 요청을 메모리 시스템에 발행하기 위한 처리 회로부;
    상기 메모리 액세스 요청이 발행되게 한 현재 소프트웨어 실행 환경과 연관된 프로그래밍 가능한 파티션 식별자 선택 정보에 기초하여 파티션 식별자를 선택하기 위한 파티션 식별자 선택 회로부; 및
    상기 처리 회로부의 현재 도메인에 기초하여 적어도 3개의 파티션 식별자 공간들 중에서 선택된 파티션 식별자 공간을 선택하기 위한 파티션 식별자 공간 선택 회로부를 포함하며,
    상기 선택된 파티션 식별자 공간과 상기 파티션 식별자는 함께, 상기 메모리 시스템의 메모리 시스템 컴포넌트에서, 상기 메모리 액세스 요청을 핸들링하기 위한 리소스들의 할당을 제어하거나 상기 리소스들에 대한 경합을 관리하기 위한 하나 이상의 메모리 시스템 리소스 제어 파라미터들의 세트를 선택하거나, 상기 메모리 시스템 컴포넌트에서, 상기 메모리 액세스 요청에 응답하여 성능 모니터링 데이터가 업데이트되는지를 선택하기 위한 정보를 나타내고,
    상기 처리 회로부는 상기 메모리 액세스 요청을 상기 메모리 시스템에 발행하도록 구성되며, 상기 메모리 액세스 요청은 상기 파티션 식별자, 및 상기 파티션 식별자 공간 선택 회로부에 의해 선택되는 상기 선택된 파티션 식별자 공간을 나타내는 복수의 비트들을 포함하는 파티션 식별자 공간 표시자를 지정하는, 장치.
  2. 제1항에 있어서, 상기 파티션 식별자 공간 선택 회로부는 상기 처리 회로부의 상기 현재 도메인에 기초하여 그리고 프로그래밍 가능한 제어 정보에 기초하여 상기 선택된 파티션 식별자 공간을 선택하도록 구성되는, 장치.
  3. 제2항에 있어서, 상기 파티션 식별자 공간 선택 회로부는, 상기 프로그래밍 가능한 제어 정보에 기초하여, 상기 선택된 파티션 식별자 공간이 상기 현재 도메인과 연관된 기본 파티션 식별자 공간이어야 하는지 또는 상기 현재 도메인과 연관된 대안 파티션 식별자 공간이어야 하는지를 선택하도록 구성되고, 상기 적어도 3개의 도메인들 중 적어도 하나에 대해, 상기 대안 파티션 식별자 공간은 상이한 도메인과 연관된 상기 기본 파티션 식별자 공간인, 장치.
  4. 제3항에 있어서, 주어진 도메인과 연관된 상기 기본 파티션 식별자 공간은 상기 프로그래밍 가능한 제어 정보와는 관계없이 상기 주어진 도메인에 대해 정의된 고정 파티션 식별자 공간인, 장치.
  5. 제3항에 있어서, 적어도 하나의 도메인에 대해, 그 도메인과 연관된 상기 대안 파티션 식별자 공간은 상기 프로그래밍 가능한 제어 정보에 따라 가변적으로 선택되는 파티션 식별자 공간인, 장치.
  6. 제2항 내지 제5항 중 어느 한 항에 있어서, 상기 처리 회로부는 복수의 특권 레벨들 중 하나에서 명령어들을 처리하도록 구성되고,
    적어도 하나의 특권 레벨에 대해, 상기 적어도 하나의 특권 레벨에서 발행된 메모리 액세스 요청들에 대한 상기 선택된 파티션 식별자 공간의 선택을 제어하는 상기 프로그래밍 가능한 제어 정보의 적어도 일부는 상기 적어도 하나의 특권 레벨보다 더 많은 특권을 가진 특권 레벨에서 프로그래밍 가능한, 장치.
  7. 제6항에 있어서, 적어도 상기 적어도 하나의 특권 레벨의 서브세트에 대해, 상기 처리 회로부는, 그 서브세트의 특권 레벨에서 실행되는 적어도 하나의 명령어에, 상기 더 많은 특권을 가진 특권 레벨에서 프로그래밍 가능한 상기 프로그래밍 가능한 제어 정보에 기초하여 선택된 상기 선택된 파티션 식별자 공간을 나타내는 강제 공간 표시 정보가 액세스 가능하게 만들도록 구성되는, 장치.
  8. 제2항 내지 제7항 중 어느 한 항에 있어서, 상기 처리 회로부는 복수의 특권 레벨들 중 하나에서 명령어들을 처리하도록 구성되고, 상기 프로그래밍 가능한 제어 정보는,
    제1 특권 레벨에서 프로그래밍 가능한 계층적 제어 인에이블 정보, 및
    상기 제1 특권 레벨보다 더 적은 특권을 가진 제2 특권 레벨에서 프로그래밍 가능한 공간 선택 제어 정보를 포함하며,
    상기 계층적 제어 정보가 제1 값을 가질 때, 상기 파티션 식별자 선택 회로부는 상기 제2 특권 레벨에서 프로그래밍 가능한 상기 공간 선택 제어 정보에 따라 상기 제2 특권 레벨 또는 상기 제2 특권 레벨보다 더 적은 특권을 가진 제3 특권 레벨에서 발행된 메모리 액세스 요청들에 대한 상기 선택된 파티션 식별자 공간을 선택하도록 구성되고,
    상기 계층적 제어 정보가 제2 값을 가질 때, 상기 파티션 식별자 선택 회로부는 상기 제2 특권 레벨에서 프로그래밍 가능한 상기 공간 선택 제어 정보와는 관계없이 상기 제2 특권 레벨 또는 상기 제3 특권 레벨에서 발행된 메모리 액세스 요청들에 대한 상기 선택된 파티션 식별자 공간을 선택하도록 구성되는, 장치.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서, 상기 메모리 액세스 요청의 처리의 기능적 결과는 상기 파티션 식별자 및 상기 선택된 파티션 식별자 공간과는 관계없는, 장치.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서, 상기 현재 도메인에 기초하여 상기 메모리 액세스 요청에 대한 선택된 물리 어드레스 공간을 선택하기 위한 물리 어드레스 공간 선택 회로부를 포함하며, 상기 처리 회로부는 상기 선택된 물리 어드레스 공간을 나타내는 물리 어드레스 공간 표시자를 지정하는 상기 메모리 액세스 요청을 발행하도록 구성되는, 장치.
  11. 제10항에 있어서, 상기 물리 어드레스 공간 선택 회로부는 상기 현재 도메인에 기초하여, 그리고 상기 메모리 액세스 요청의 상기 타겟 어드레스에 대응하는 어드레스 변환 정보를 제공하는 어드레스 변환 엔트리에 지정된 물리 어드레스 공간 선택 정보에 기초하여 상기 선택된 물리 어드레스 공간을 선택하도록 구성되는, 장치.
  12. 제11항에 있어서, 상기 파티션 식별자 공간 선택 회로부는 상기 현재 도메인에 따라, 그리고 상기 타겟 어드레스에 대응하는 상기 어드레스 변환 엔트리에 지정된 상기 물리 어드레스 공간 선택 정보와는 관계없이 상기 선택된 파티션 식별자 공간을 선택하도록 구성되는, 장치.
  13. 제10항 내지 제12항 중 어느 한 항에 있어서,
    동일한 메모리 시스템 리소스에 대응하는 상이한 물리 어드레스 공간들로부터의 복수의 에일리어싱 물리 어드레스들을 디에일리어싱하여, 상기 복수의 에일리어싱 물리 어드레스들 중 임의의 것을 적어도 하나의 하류 메모리 시스템 컴포넌트에 제공될 디에일리어싱된 물리 어드레스에 매핑하도록 구성된 물리 에일리어싱 지점(PoPA) 메모리 시스템 컴포넌트; 및
    상기 PoPA 메모리 시스템 컴포넌트의 상류에 제공되는 적어도 하나의 프리-PoPA 메모리 시스템 컴포넌트 - 상기 적어도 하나의 프리-PoPA 메모리 시스템 컴포넌트는 상이한 물리 어드레스 공간들로부터의 상기 에일리어싱 물리 어드레스들을 상기 에일리어싱 물리 어드레스들이 상이한 메모리 시스템 리소스들에 대응하는 것처럼 취급하도록 구성됨 - 를 포함하는, 장치.
  14. 제1항 내지 제13항 중 어느 한 항에 있어서,
    상기 파티션 식별자 공간 표시자 및 상기 파티션 식별자에 기초하여 상기 하나 이상의 메모리 시스템 리소스 제어 파라미터들의 세트를 선택하기 위한 리소스 제어 파라미터 선택 회로부, 및/또는
    상기 파티션 식별자 공간 표시자 및 상기 파티션 식별자에 기초하여, 상기 메모리 액세스 요청에 응답하여 상기 성능 모니터링 데이터가 업데이트되는지를 제어하기 위한 성능 모니터링 제어 회로부
    중 적어도 하나를 포함하는 메모리 시스템 컴포넌트를 포함하는, 장치.
  15. 제14항에 있어서, 상기 적어도 3개의 파티션 식별자 공간들 각각은 상기 적어도 3개의 도메인들 중 대응하는 하나의 도메인과 연관되고,
    주어진 파티션 식별자 공간에 대응하는 메모리 시스템 리소스 제어 파라미터들의 주어진 세트는 상기 주어진 파티션 식별자 공간과 연관된 상기 도메인에 대응하는 상기 물리 어드레스 공간 내의 타겟 어드레스를 지정하여 발행된 메모리 액세스 요청에 응답하여 액세스 가능한, 장치.
  16. 제1항 내지 제15항 중 어느 한 항에 있어서, 상기 적어도 3개의 파티션 식별자 공간들을 지원하는 하나 이상의 컴포넌트들을 포함하는 상기 장치의 제1 영역과 상기 제1 영역 내의 상기 하나 이상의 컴포넌트들보다 더 적은 파티션 식별자 공간들을 지원하는 하나 이상의 컴포넌트들을 포함하는 상기 장치의 제2 영역 사이의 경계에 브리징 회로부를 포함하며, 상기 브리징 회로부는 상기 제1 영역과 상기 제2 영역 사이에 전달되는 메모리 액세스 요청에 대한 상기 파티션 식별자 공간 표시자를 리매핑하도록 구성되는, 장치.
  17. 제16항에 있어서, 상기 브리징 회로부는,
    고정 매핑, 및
    프로그래밍 가능한 매핑
    중 하나에 따라 상기 파티션 식별자 공간 표시자를 리매핑하도록 구성되는, 장치.
  18. 제16항 또는 제17항에 있어서, 상기 브리징 회로부는 또한 상기 제1 영역과 상기 제2 영역 사이에 전달되는 상기 메모리 액세스 요청과 연관된 상기 선택된 물리 어드레스 공간을 나타내는 물리 어드레스 공간 표시자를 리매핑하도록 구성되는, 장치.
  19. 메모리 시스템 컴포넌트로서,
    메모리 액세스 요청을 수신하기 위한 메모리 액세스 요청 수신 회로부 - 상기 메모리 액세스 요청은 메모리 시스템 내의 타겟 메모리 시스템 위치를 나타내는 타겟 어드레스, 적어도 3개의 파티션 식별자 공간들 중에서 선택되는 선택된 파티션 식별자 공간을 나타내는 복수의 비트들을 포함하는 파티션 식별자 공간 표시자, 및 상기 메모리 액세스 요청이 발행되게 한 현재 소프트웨어 실행 환경과 연관된 파티션 식별자를 지정함 -; 및
    상기 파티션 식별자 공간 표시자 및 상기 파티션 식별자에 기초하여 하나 이상의 메모리 시스템 리소스 제어 파라미터들의 세트를 선택하고, 상기 선택된 메모리 시스템 리소스 제어 파라미터들의 세트에 기초하여, 상기 메모리 액세스 요청을 핸들링하기 위한 리소스들의 할당을 제어하거나 상기 리소스들에 대한 경합을 관리하기 위한 리소스 제어 회로부, 및/또는
    상기 파티션 식별자 공간 표시자 및 상기 파티션 식별자에 기초하여, 상기 메모리 액세스 요청에 응답하여 성능 모니터링 데이터가 업데이트되는지를 제어하기 위한 성능 모니터링 제어 회로부
    중 적어도 하나를 포함하는, 메모리 시스템 컴포넌트.
  20. 방법으로서,
    각각이 대응하는 물리 어드레스 공간과 연관된 적어도 3개의 도메인들 중 하나에서 명령어들을 처리하는 단계;
    메모리 액세스 요청이 발행되게 한 현재 소프트웨어 실행 환경과 연관된 프로그래밍 가능한 파티션 식별자 선택 정보에 기초하여 파티션 식별자를 선택하는 단계;
    처리 회로부의 현재 도메인에 기초하여 적어도 3개의 파티션 식별자 공간들 중에서 선택된 파티션 식별자 공간을 선택하는 단계;
    타겟 메모리 시스템 위치를 나타내는 타겟 어드레스, 상기 파티션 식별자, 및 상기 선택된 파티션 식별자 공간을 나타내는 복수의 비트들을 포함하는 파티션 식별자 공간 표시자를 지정하는 메모리 액세스 요청을 메모리 시스템에 발행하는 단계; 및
    상기 파티션 식별자 공간 표시자 및 상기 파티션 식별자에 기초하여 하나 이상의 메모리 시스템 리소스 제어 파라미터들의 세트를 선택하고, 상기 선택된 메모리 시스템 리소스 제어 파라미터들의 세트에 기초하여, 상기 메모리 액세스 요청을 핸들링하기 위한 리소스들의 할당을 제어하거나 상기 리소스들에 대한 경합을 관리하는 단계, 및/또는
    상기 파티션 식별자 공간 표시자 및 상기 파티션 식별자에 기초하여, 상기 메모리 액세스 요청에 응답하여 성능 모니터링 데이터가 업데이트되는지를 제어하는 단계
    중 적어도 하나를 포함하는, 방법.
KR1020237036880A 2021-03-31 2022-02-14 파티션 식별자 공간 선택 KR20230163486A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/218,718 2021-03-31
US17/218,718 US11620217B2 (en) 2021-03-31 2021-03-31 Partition identifier space selection
PCT/GB2022/050387 WO2022208044A1 (en) 2021-03-31 2022-02-14 Partition identifier space selection

Publications (1)

Publication Number Publication Date
KR20230163486A true KR20230163486A (ko) 2023-11-30

Family

ID=80445957

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237036880A KR20230163486A (ko) 2021-03-31 2022-02-14 파티션 식별자 공간 선택

Country Status (7)

Country Link
US (1) US11620217B2 (ko)
EP (1) EP4315076A1 (ko)
JP (1) JP2024513330A (ko)
KR (1) KR20230163486A (ko)
CN (1) CN117120988A (ko)
IL (1) IL305829A (ko)
WO (1) WO2022208044A1 (ko)

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5721858A (en) * 1995-12-12 1998-02-24 International Business Machines Corporation Virtual memory mapping method and system for memory management of pools of logical partitions for bat and TLB entries in a data processing system
US6745307B2 (en) * 2001-10-31 2004-06-01 Hewlett-Packard Development Company, L.P. Method and system for privilege-level-access to memory within a computer
GB0226874D0 (en) 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Switching between secure and non-secure processing modes
GB0226906D0 (en) 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Virtual to physical memory address mapping within a system having a secure domain and a non-secure domain
WO2004046925A1 (en) 2002-11-18 2004-06-03 Arm Limited Security mode switching via an exception vector
US20060143411A1 (en) 2004-12-23 2006-06-29 O'connor Dennis M Techniques to manage partition physical memory
US9547524B2 (en) * 2012-12-20 2017-01-17 Massachusetts Institute Of Technology Methods and systems for enhancing hardware transactions using hardware transactions in software slow-path
US10664306B2 (en) * 2017-01-13 2020-05-26 Arm Limited Memory partitioning
US20180203807A1 (en) 2017-01-13 2018-07-19 Arm Limited Partitioning tlb or cache allocation
US10394454B2 (en) * 2017-01-13 2019-08-27 Arm Limited Partitioning of memory system resources or performance monitoring
US10268379B2 (en) 2017-01-13 2019-04-23 Arm Limited Partitioning of memory system resources or performance monitoring
US11256625B2 (en) 2019-09-10 2022-02-22 Arm Limited Partition identifiers for page table walk memory transactions
GB2598140B (en) * 2020-08-20 2023-03-15 Advanced Risc Mach Ltd Read-if-hit-pre-PoPA-request
EP3964959A1 (en) * 2020-09-03 2022-03-09 ARM Limited Data processing

Also Published As

Publication number Publication date
WO2022208044A1 (en) 2022-10-06
JP2024513330A (ja) 2024-03-25
IL305829A (en) 2023-11-01
US20220318140A1 (en) 2022-10-06
EP4315076A1 (en) 2024-02-07
US11620217B2 (en) 2023-04-04
CN117120988A (zh) 2023-11-24

Similar Documents

Publication Publication Date Title
US20230176983A1 (en) Apparatus and method using plurality of physical address spaces
US20230342303A1 (en) Translation table address storage circuitry
US11526443B2 (en) Read-if-hit-pre-PoPA request
US11954048B2 (en) Variable nesting control parameter for table structure providing access control information for controlling access to a memory system
US11989134B2 (en) Apparatus and method
US11620217B2 (en) Partition identifier space selection
KR20220165775A (ko) 입상 보호 데이터에 대한 데이터 무결성 체크
US20240193260A1 (en) Apparatus and method for handling stashing transactions
US11461247B1 (en) Granule protection information compression
JP2024513553A (ja) スタッシングトランザクションを処理するための装置及び方法
US20230132695A1 (en) Apparatus and method using plurality of physical address spaces