KR20230002806A - 메모리 시스템에 대한 액세스를 제어하기 위한 액세스 제어 정보를 제공하는 테이블 구조에 대한 가변 네스팅 제어 파라미터 - Google Patents
메모리 시스템에 대한 액세스를 제어하기 위한 액세스 제어 정보를 제공하는 테이블 구조에 대한 가변 네스팅 제어 파라미터 Download PDFInfo
- Publication number
- KR20230002806A KR20230002806A KR1020227040136A KR20227040136A KR20230002806A KR 20230002806 A KR20230002806 A KR 20230002806A KR 1020227040136 A KR1020227040136 A KR 1020227040136A KR 20227040136 A KR20227040136 A KR 20227040136A KR 20230002806 A KR20230002806 A KR 20230002806A
- Authority
- KR
- South Korea
- Prior art keywords
- access control
- address
- level
- target
- control information
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/1425—Protection 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/1441—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/145—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
장치(2)는 적어도 2개의 레벨들의 액세스 제어 테이블을 포함하는 테이블 구조의 테이블 엔트리들에 정의된 액세스 제어 정보에 기초하여 메모리 시스템에 대한 액세스를 제어하기 위한 메모리 관리 회로부(16, 20)를 갖는다. 테이블 액세싱 회로부(17, 23)는 타깃 어드레스에 대응하는 액세스 제어 정보를 획득하기 위해 테이블 구조에 액세스한다. 테이블 구조의 시작 레벨 이외의 주어진 레벨에서의 주어진 액세스 제어 테이블에 대해, 테이블 액세싱 회로부(17, 23)는 타깃 어드레스의 오프셋 부분에 기초하여, 타깃 어드레스에 대응하는 주어진 액세스 제어 테이블의 선택된 테이블 엔트리를 선택한다. 오프셋 부분의 크기는 주어진 액세스 제어 테이블보다, 테이블 구조의 더 높은 레벨에서의 더 높은 레벨 액세스 제어 테이블의 테이블 엔트리에 특정된 가변 네스팅 제어 파라미터(190)에 기초하여 선택된다.
Description
본 발명은 데이터 프로세싱의 분야에 관한 것이다. 보다 구체적으로, 본 발명은 메모리 관리에 관한 것이다.
데이터 프로세싱 시스템은 테이블 구조의 테이블 엔트리들에 정의된 액세스 제어 정보에 기초하여 메모리 시스템에 대한 액세스를 제어하기 위한 메모리 관리 회로부를 가질 수 있다.
적어도 일부 예들은 장치를 제공하며, 장치는, 복수의 레벨들의 액세스 제어 테이블을 포함하는 테이블 구조의 테이블 엔트리들에 정의된 액세스 제어 정보에 기초하여 메모리 시스템에 대한 액세스를 제어하기 위한 메모리 관리 회로부; 및 타깃 어드레스에 대응하는 액세스 제어 정보를 획득하기 위해 테이블 구조에 액세스하기 위한 테이블 액세싱 회로부를 포함하고; 여기서, 테이블 구조의 시작 레벨 이외의 주어진 레벨에서의 주어진 액세스 제어 테이블에 대해: 테이블 액세싱 회로부는 타깃 어드레스의 오프셋 부분에 기초하여, 타깃 어드레스에 대응하는 주어진 액세스 제어 테이블의 선택된 테이블 엔트리를 선택하도록 구성되고, 선택된 테이블 엔트리는 테이블 구조의 다음 최저 레벨에서의 액세스 제어 테이블에 대한 포인터 또는 타깃 어드레스에 대응하는 액세스 제어 정보 중 어느 하나를 제공하고; 테이블 액세싱 회로부는 주어진 액세스 제어 테이블보다, 테이블 구조의 더 높은 레벨에서의 더 높은 레벨 액세스 제어 테이블의 테이블 엔트리에 특정된 가변 네스팅 제어 파라미터(variable nesting control parameter)에 기초하여 타깃 어드레스의 오프셋 부분의 크기를 결정하도록 구성된다.
적어도 일부 예들은 방법을 제공하며, 방법은, 복수의 레벨들의 액세스 제어 테이블을 포함하는 테이블 구조의 테이블 엔트리들에 정의된 액세스 제어 정보에 기초하여 메모리 시스템에 대한 액세스를 제어하는 단계; 및 타깃 어드레스에 대응하는 액세스 제어 정보를 획득하기 위해 테이블 구조에 액세스하는 단계를 포함하고; 여기서, 테이블 구조의 시작 레벨 이외의 주어진 레벨에서의 주어진 액세스 제어 테이블에 대해: 타깃 어드레스에 대응하는 주어진 액세스 제어 테이블의 선택된 테이블 엔트리는 타깃 어드레스의 오프셋 부분에 기초하여 선택되고, 선택된 테이블 엔트리는 테이블 구조의 다음 최저 레벨에서의 액세스 제어 테이블에 대한 포인터 또는 타깃 어드레스에 대응하는 액세스 제어 정보 중 어느 하나를 제공하고; 타깃 어드레스의 오프셋 부분의 크기는 주어진 액세스 제어 테이블보다, 테이블 구조의 더 높은 레벨에서의 더 높은 레벨 액세스 제어 테이블의 테이블 엔트리에 특정된 가변 네스팅 제어 파라미터에 기초하여 결정된다.
적어도 일부 예들은, 호스트 데이터 프로세싱 장치 상에서 실행될 때, 타깃 코드의 실행을 위한 명령어 실행 환경을 제공하기 위해 호스트 데이터 프로세싱 장치를 제어하는 명령어들을 포함하는 컴퓨터 프로그램을 제공하며; 컴퓨터 프로그램은, 복수의 레벨들의 액세스 제어 테이블을 포함하는 테이블 구조의 테이블 엔트리들에 정의된 액세스 제어 정보에 기초하여 시뮬레이션된 메모리에 대한 액세스를 제어하기 위한 메모리 관리 프로그램 로직; 및 타깃 시뮬레이션된 어드레스에 대응하는 액세스 제어 정보를 획득하기 위해 테이블 구조에 액세스하기 위한 테이블 액세싱 프로그램 로직을 포함하고; 여기서, 테이블 구조의 시작 레벨 이외의 주어진 레벨에서의 주어진 액세스 제어 테이블에 대해: 테이블 액세싱 프로그램 로직은 타깃 시뮬레이션된 어드레스의 오프셋 부분에 기초하여 타깃 시뮬레이션된 어드레스에 대응하는 주어진 액세스 제어 테이블의 선택된 테이블 엔트리를 선택하도록 구성되고, 선택된 테이블 엔트리는 테이블 구조의 다음 최저 레벨에서의 액세스 제어 테이블에 대한 포인터 또는 타깃 시뮬레이션된 어드레스에 대응하는 액세스 제어 정보 중 어느 하나를 제공하고; 테이블 액세싱 프로그램 로직은 주어진 액세스 제어 테이블보다, 테이블 구조의 더 높은 레벨에서의 더 높은 레벨 액세스 제어 테이블의 테이블 엔트리에 특정된 가변 네스팅 제어 파라미터에 기초하여 타깃 시뮬레이션된 어드레스의 오프셋 부분의 크기를 결정하도록 구성된다.
적어도 일부 예들은 전술한 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 저장 매체를 제공한다. 저장 매체는 비일시적 저장 매체일 수 있다.
본 기법의 추가의 태양들, 특징들 및 이점들은 첨부 도면과 관련하여 읽혀질 예들의 하기의 설명으로부터 명백해질 것이다.
도 1은 데이터 프로세싱 장치의 예를 예시한다.
도 2는 프로세싱 회로부가 동작할 수 있는 다수의 도메인들을 예시한다.
도 3은 입상 보호 룩업(granule protection lookup)들을 지원하는 프로세싱 시스템의 예를 예시한다.
도 4는 메모리 시스템 내의 위치들을 식별하는 시스템 물리적 어드레스 공간(physical address space, PAS) 상에서의 다수의 물리적 어드레스 공간들의 에일리어싱(aliasing)을 개략적으로 예시한다.
도 5는, 상이한 아키텍처적(architectural) 물리적 어드레스 공간들이 시스템 물리적 어드레스 공간의 각각의 부분들에 액세스하도록, 실제의 하드웨어 물리적 어드레스 공간을 파티셔닝(partitioning)하는 예를 예시한다.
도 6은 프로세싱 회로부의 동작의 현재 도메인을 결정하는 방법을 예시하는 흐름도이다.
도 7은 가상 어드레스들을 물리적 어드레스들로 변환하는 데 사용되는 페이지 테이블 엔트리들에 대한 페이지 테이블 엔트리 포맷들의 예들을 도시한다.
도 8은 페이지 테이블들의 고정된 네스팅을 갖는 다중 레벨 페이지 테이블 구조의 예를 예시한다.
도 9는 주어진 메모리 액세스 요청에 의해 액세스될 물리적 어드레스 공간을 선택하는 방법을 도시하는 흐름도이다.
도 10은, 요청과 연관된 선택된 물리적 어드레스 공간이 입상 보호 테이블 구조에 정의된 타깃 물리적 어드레스에 대응하는 입상 보호 정보(granule protection information, GPI) 내에 허용된 물리적 어드레스 공간으로서 정의되어 있는지에 기초하여, 메모리 액세스 요청들을 필터링하는 방법을 도시하는 흐름도이다.
도 11은 테이블 기술자 엔트리 및 블록 기술자 엔트리를 포함하는, 입상 보호 테이블의 테이블 엔트리들의 예를 예시한다.
도 12는 더 높은 레벨 테이블 엔트리에 정의된 네스팅 제어 파라미터에 기초한 가변 네스팅을 갖는 예를 예시하는 다중 레벨 입상 보호 케이블의 개념적 레이아웃의 예를 도시한다.
도 13은 가변 네스팅 제어 파라미터에 기초하여, 특정 타깃 어드레스에 대한 액세스 제어 정보를 획득하기 위해 입상 보호 테이블에 액세스하는 방법을 도시하는 흐름도이다.
도 14는 공유된 세트의 액세스 제어 정보를 사용하여 어드레스들의 근접한 입상들의 인접 블록에 대한 액세스 제어 정보를 표현하는 예를 예시한다.
도 15는 시뮬레이터 예를 예시한다.
도 1은 데이터 프로세싱 장치의 예를 예시한다.
도 2는 프로세싱 회로부가 동작할 수 있는 다수의 도메인들을 예시한다.
도 3은 입상 보호 룩업(granule protection lookup)들을 지원하는 프로세싱 시스템의 예를 예시한다.
도 4는 메모리 시스템 내의 위치들을 식별하는 시스템 물리적 어드레스 공간(physical address space, PAS) 상에서의 다수의 물리적 어드레스 공간들의 에일리어싱(aliasing)을 개략적으로 예시한다.
도 5는, 상이한 아키텍처적(architectural) 물리적 어드레스 공간들이 시스템 물리적 어드레스 공간의 각각의 부분들에 액세스하도록, 실제의 하드웨어 물리적 어드레스 공간을 파티셔닝(partitioning)하는 예를 예시한다.
도 6은 프로세싱 회로부의 동작의 현재 도메인을 결정하는 방법을 예시하는 흐름도이다.
도 7은 가상 어드레스들을 물리적 어드레스들로 변환하는 데 사용되는 페이지 테이블 엔트리들에 대한 페이지 테이블 엔트리 포맷들의 예들을 도시한다.
도 8은 페이지 테이블들의 고정된 네스팅을 갖는 다중 레벨 페이지 테이블 구조의 예를 예시한다.
도 9는 주어진 메모리 액세스 요청에 의해 액세스될 물리적 어드레스 공간을 선택하는 방법을 도시하는 흐름도이다.
도 10은, 요청과 연관된 선택된 물리적 어드레스 공간이 입상 보호 테이블 구조에 정의된 타깃 물리적 어드레스에 대응하는 입상 보호 정보(granule protection information, GPI) 내에 허용된 물리적 어드레스 공간으로서 정의되어 있는지에 기초하여, 메모리 액세스 요청들을 필터링하는 방법을 도시하는 흐름도이다.
도 11은 테이블 기술자 엔트리 및 블록 기술자 엔트리를 포함하는, 입상 보호 테이블의 테이블 엔트리들의 예를 예시한다.
도 12는 더 높은 레벨 테이블 엔트리에 정의된 네스팅 제어 파라미터에 기초한 가변 네스팅을 갖는 예를 예시하는 다중 레벨 입상 보호 케이블의 개념적 레이아웃의 예를 도시한다.
도 13은 가변 네스팅 제어 파라미터에 기초하여, 특정 타깃 어드레스에 대한 액세스 제어 정보를 획득하기 위해 입상 보호 테이블에 액세스하는 방법을 도시하는 흐름도이다.
도 14는 공유된 세트의 액세스 제어 정보를 사용하여 어드레스들의 근접한 입상들의 인접 블록에 대한 액세스 제어 정보를 표현하는 예를 예시한다.
도 15는 시뮬레이터 예를 예시한다.
데이터 프로세싱 시스템은, 2 이상의 레벨들의 액세스 제어 테이블을 갖는 테이블 구조의 테이블 엔트리들에 정의된 액세스 제어 정보에 기초하여 메모리 시스템에 대한 액세스를 제어하기 위한 메모리 관리 회로부, 및 타깃 어드레스에 대응하는 액세스 제어 정보를 획득하기 위해 테이블 구조에 액세스하기 위한 테이블 액세싱 회로부를 가질 수 있다. 액세스 제어 정보는 주어진 어드레스 영역에 대한 액세스들이 어떻게 수행되는지를 제어하는 데 또는 그들 영역들에 대한 액세스가 적어도 허용되는지를 제어하는 데 사용되는 임의의 정보일 수 있다. 타깃 어드레스에 기초하여 선형으로 인덱싱되는 단일 레벨의 액세스 제어 테이블에 그러한 액세스 제어 정보를 정의하는 것이 가능할 것이지만, 액세스 제어 정보가 정의될 어드레스 공간의 크기가 더 커지면, 그러한 선형으로 인덱싱되는 테이블은 테이블 데이터 자체에 대한 메모리 사용량의 측면에서 비효율적일 수 있으며, 이는, 테이블에 의해 보호될 어드레스 범위의 크기에 비례하는 크기의 단일의 인접한 메모리 영역이 테이블에 대해 예약되는 것을 요구한다.
어드레스 공간을 더 효율적으로 사용하기 위해(테이블에 대해 할당된 메모리 저장량을 감소시킴), 다중 레벨 액세스 제어 테이블을 정의하는 것이 알려져 있으며, 여기서, 각각의 레벨에서, 타깃 어드레스로부터 추출된 오프셋 비트들의 일부분은 현재 레벨에서의 테이블에 대한 엔트리를 선택하고, 현재 레벨이 최종 레벨이 아닌 경우, 현재 레벨에서의 엔트리는 테이블 구조의 다음 최저 레벨에서의 액세스 제어 테이블에 대한 포인터를 제공하고, 결국 테이블 구조의 다양한 레벨들을 트레버싱(traversing)한 후, 타깃 어드레스의 그 레벨의 오프셋 부분에 기초하여 선택된 엔트리가 타깃 어드레스에 대응하는 액세스 제어 정보를 제공하는 테이블의 최종 레벨에 도달한다. 선형으로 인덱싱되는 단일의 편평한 테이블을 사용하는 전술된 접근법에 비해, 이러한 접근법은 보호될 더 넓은 어드레스 공간 범위에 걸쳐 분포된 소정 수의 어드레스 영역들에 대한 액세스 제어 정보가 테이블 데이터 자체에 대한 더 작은 메모리 풋프린트(memory footprint)를 사용하여 구현되게 할 수 있다. 그러나, 다중 레벨 테이블은 성능을 감소시킬 수 있는데, 그 이유는, 특정 타깃 어드레스에 대한 액세스 제어 정보를 획득하는 것이 액세스 제어 정보를 최종적으로 식별하기 전에 다음 레벨에서의 액세스 제어 테이블들에 대한 여러 포인터들을 획득하도록 테이블 구조의 다양한 레벨들을 트레버싱하기 위해 메모리에 대한 다수의 액세스들을 요구할 수 있기 때문이다.
대체적으로, 다중 레벨 액세스 제어 테이블의 경우, 테이블 구조 내의 상이한 레벨들의 테이블들의 네스팅이 제어되는 방식은 설계에 의해 고정되며, 이에 따라, 실제 액세스 제어 정보를 제공하는 엔트리에 도달하기 위해 트레버싱될 레벨들의 최대 수, 각각의 레벨에서의 테이블들의 크기, 및 각각의 레벨에 인덱싱하는 데 사용되는 타깃 어드레스의 오프셋 부분들의 크기들은 모두 고정된다.
대조적으로, 아래에서 설명되는 예들에서, 가변 네스팅 제어 파라미터는, 테이블 구조의 더 낮은 레벨에 대한 오프셋 부분이 형성되는 방법에 대한 가변적인 제어를 제공하는, 더 높은 레벨 액세스 제어 테이블의 테이블 엔트리에 특정될 수 있다. 따라서, 테이블 구조의 시작 레벨 이외의 주어진 레벨에서의 주어진 액세스 제어 테이블에 대해: 테이블 액세싱 회로부는 타깃 어드레스의 오프셋 부분에 기초하여 타깃 어드레스에 대응하는 주어진 액세스 제어 테이블의 선택된 테이블 엔트리를 선택하고(선택된 테이블 엔트리는 테이블 구조의 다음 최저 레벨에서의 액세스 제어 테이블에 대한 포인터 또는 타깃 어드레스에 대응하는 액세스 제어 정보 중 어느 하나를 제공함), 테이블 액세싱 회로부는 주어진 액세스 제어 테이블보다, 테이블 구조의 더 높은 레벨에서의 더 높은 레벨 액세스 제어 테이블의 테이블 엔트리에 특정된 가변 네스팅 제어 파라미터에 기초하여 타깃 어드레스의 오프셋 부분의 크기를 결정한다.
이러한 접근법은, 테이블에 액세스할 때, 액세스 제어 테이블의 주어진 레벨로부터 엔트리들을 선택하는 데 사용되는 오프셋 부분의 크기가 더 높은 레벨 테이블 엔트리(이는 주어진 액세스 제어 테이블에 도달하기 위해 테이블 구조를 트레버싱하기 위해 취해진 경로에서 더 이전에 액세스될 것임)에 특정된 파라미터에 기초하여 동적으로 바뀌게 함으로써, 성능에 대해 테이블의 메모리 풋프린트를 트레이드오프(trade off)하기 위한 유연성을 제공한다. 따라서, 테이블 구조의 레벨에만 의존하는 고정된 크기의 오프셋을 사용하기보다는, 오프셋 부분 크기는 또한 더 이전의 액세스 제어 테이블로부터 판독된 파라미터에 의존한다. 따라서, 메모리 저장 효율보다 성능이 더 중요한 경우, 테이블 구조의 주어진 레벨에 대해 더 큰 오프셋 부분을 사용하도록 네스팅이 조정될 수 있으며, 이에 따라, 타깃 어드레스의 비트들이 더 적은 레벨들에서 사용되어, 더 적은 메모리 액세스들로 타깃 어드레스에 대한 액세스 제어 정보의 위치를 알아낼 수 있게 된다. 한편, 우선순위가 테이블에 더 효율적인 메모리 저장 풋프린트를 제공하기 위한 것일 경우, 네스팅 제어 파라미터는 주어진 레벨의 테이블에 대한 더 작은 오프셋으로서 선택하도록 테이블 액세싱 회로부를 제어하기 위해 더 높은 레벨 액세스 제어 테이블에 정의될 수 있으며, 이에 따라, 타깃 어드레스에 대한 액세스 제어 정보에 도달하기 위해 테이블 구조의 더 많은 수의 레벨들이 트레버싱되어, 메모리 내에서 전체 테이블 풋프린트가 더 작은, 테이블 데이터에 대한 메모리의 더 프레그먼트화된 할당이 허용된다.
가변 네스팅 제어 파라미터는 더 높은 레벨 액세스 제어 테이블의 각각의 테이블 엔트리들에 개별적으로 특정될 수 있다. 이것은, 더 높은 레벨 액세스 제어 테이블의 상이한 테이블 엔트리들이 가변 네스팅 제어 파라미터에 대해 상이한 값들을 특정할 수 있다는 것을 의미한다. 따라서, 가변 네스팅 제어 파라미터에 대한 상이한 값들을 특정하는 더 높은 레벨 액세스 제어 테이블 내의 상이한 테이블 엔트리들이 존재하는 경우, 테이블 구조의 주어진 레벨에서의 액세스 제어 테이블들로부터 엔트리들을 선택할 때, 테이블 액세싱 회로부는 테이블 구조의 동일한 레벨에서의 상이한 액세스 제어 테이블들에 대해 상이한 크기의 오프셋 부분들을 사용할 수 있다. 이는, 어드레스 공간의 상이한 영역들이 성능이 더 중요한지 또는 메모리 풋프린트들이 더 중요한지 여부에 대해, 상이한 요구사항들을 가질 수 있기 때문에, 특히 유용하다. 어드레스 공간의 일부 부분들은 가능한 가장 빠른 액세스를 요구할 수 있는 반면, 다른 부분들은 더 느슨한 성능 요구사항들을 가질 수 있으며, 이에 따라, 테이블 영역을 절약할 기회를 제시할 수 있다. 액세스 제어 테이블들로부터 엔트리들을 선택하는 데 사용되는 오프셋 부분의 크기가 테이블 구조의 높은 레벨들에서의 더 이전의 엔트리들로부터 추출된 파라미터들에 기초하여 결정되게 함으로써, 이것은 이러한 트레이드오프에 대한 유연성을 제공한다.
테이블 구조는 트리 구조로서 고려될 수 있으며, 여기서, 시작 레벨에서의 시작 레벨 테이블은 트리의 루트를 형성하고, 트리의 각각의 노드는 테이블의 엔트리들 내의 각각의 포인터들에 기초하여 별개의 경로들로 분기하여, 결국 액세스 제어 정보를 제공하는 리프 노드(leaf node)들에 도달한다. 타깃 어드레스로부터 추출된 각각의 레벨에 대한 오프셋 부분들은 그 타깃 어드레스에 대한 적절한 리프 노드에 도달하기 위해 트리 구조에 걸쳐 취해지는 특정 경로를 선택하는 것으로 보일 수 있다.
가변 네스팅 제어 파라미터에 기초하여, 트리 구조의 상이한 부분들은 대체적으로 그렇듯이 전체 테이블 구조에 걸친 액세스 제어 테이블들의 균일한 네스팅 패턴을 갖기 보다는, 상이한 수의 레벨들 및 상이한 특성들을 가질 수 있다. 테이블 구조의 다양한 특성들은 가변 네스팅 제어 파라미터에 기초하여 제어될 수 있다.
예를 들어, 타깃 어드레스에 대한 액세스 제어 정보를 제공하는 테이블 엔트리에 도달하기 위해 트레버싱될 테이블 구조의 레벨들의 최대 수는 가변 네스팅 제어 파라미터에 따라 가변적일 수 있다. 이것은 가변 네스팅 제어 파라미터에 기초하여, 테이블의 각각의 레벨에서 선택된 오프셋 부분들의 크기들에 기초하여 제어될 수 있으며, 즉, 주어진 세트의 오프셋 비트들을 더 적은, 더 큰 부분들로 파티셔닝함으로써, 테이블 구조의 레벨들의 최대 수는 그 세트의 오프셋 비트들이 더 큰 수의 더 작은 부분들로 파티셔닝되는 경우보다 더 작을 수 있다. 다시, 상이한 더 높은 레벨 테이블 엔트리들이 가변 네스팅 제어 파라미터에 대해 상이한 값들을 특정할 수 있으므로, 테이블 구조의 레벨들의 최대 수는 테이블 구조에 의해 표현되는 전체 트리 구조 내의 상이한 서브트리들에 대해 상이할 수 있다. 가변 네스팅 제어 파라미터가 트레버싱될 테이블 구조의 레벨들의 최대 수를 정의할 수 있지만, 이것은 테이블 액세싱 회로부가 액세스 제어 정보에 도달하기 위해 특정된 최대 수의 레벨들을 항상 트레버싱할 필요가 있을 것임을 반드시 의미하는 것은 아님에 유의한다. 레벨들의 특정된 최대 수에 대응하는 최종 레벨 이외의 레벨에서의 엔트리는 블록 기술자 엔트리로서 정의될 수 있는데, 이는, 테이블 구조의 최종 레벨에서의 블록 기술자 테이블 엔트리가 액세스 제어 정보를 정의할, 어드레스 블록보다 크기가 더 클 수 있는 어드레스 블록에 대한 액세스 제어 정보를 제공한다.
또한, 테이블 구조의 주어진 레벨에서의 주어진 액세스 제어 테이블의 테이블 데이터에 의해 점유되는 테이블 크기는, 더 높은 레벨 액세스 제어 테이블로부터 획득된 가변 네스팅 제어 파라미터에 따라 가변적일 수 있다. 다시, 테이블 크기는 타깃 어드레스의 오프셋 부분의 크기에 의존한다. 테이블 크기는 하나의 테이블 엔트리의 크기와, 가변 네스팅 제어 파라미터에 기초하여 주어진 레벨에 대해 선택된 오프셋 부분에 대해 사용되는 비트 수에 대응하는 2의 거듭제곱의 곱에 대응한다. 장치가 소프트웨어를 실행 중일 때, 소프트웨어는 주어진 액세스 제어 테이블의 각각의 테이블 엔트리들의 테이블 데이터를 저장하기 위한 테이블 크기에 대응하는 어드레스 범위를 할당할 필요가 있을 것이다. 주어진 액세스 제어 테이블이 특정 테이블 크기를 가질 때, 이것은, 그 특정 테이블 크기에 대해 할당된 메모리 부분 내의 각각의 엔트리에 대해 유효한 테이블 엔트리들이 할당되었다고 반드시 의미하는 것은 아님에 유의한다. 그럼에도 불구하고, 정의된 테이블 크기의 메모리 영역은 액세스 제어 테이블에 예약될 필요가 있을 것인데, 그 이유는, 그 범위 내에 임의의 다른 데이터가 저장된 경우, 그것은 테이블 액세싱 회로부가 특정 타깃 어드레스에 대한 액세스 제어 정보를 식별하기 위해 테이블 구조에 걸쳐 워크하고 있을 때 잠재적으로 판독될 수 있어, 그 엔트리에 저장된 데이터가 액세스 제어 정보로 잘못 해석되는 경우, 잠재적으로 메모리 액세스 요청의 올바르지 않은 프로세싱이 초래될 수 있기 때문이다. 가변 네스팅 제어를 사용하면, 테이블 구조의 주어진 부분에의 테이블의 크기를 트레이드오프하는 것이 가능하므로, 메모리의 비교적 큰 청크(chunk)를 인접 블록에 할당하는 것이 가능한 메모리 영역들에 대하여, 이어서 테이블 트리의 그 부분의 주어진 액세스 제어 테이블은 레벨들 사이에 더 적은 홉(hop)들을 허용함으로써 성능을 개선시키도록 더 커질 수 있는 반면, 메모리가 더욱 프레그먼트화되고 단일의 큰 테이블을 할당할 큰 공간이 없는(또는 액세스 제어 정보가 정의될 필요가 있는 어드레스들의 입상들의 수가 메모리에 큰 테이블의 할당을 정당화하기에 너무 작은) 메모리 공간의 다른 부분들에서는, 가변 네스팅 제어 파라미터가 더 큰 수의 레벨들이 트레버싱되는 것을 요구할 더 작은 테이블들을 제공하도록 조정될 수 있다.
테이블 구조의 주어진 레벨에서의 주어진 액세스 제어 테이블에 대해, 그 주어진 액세스 제어 테이블의 각각의 테이블 엔트리는 주어진 어드레스 범위 크기의 어드레스들의 범위에 적용가능한 정보를 정의할 수 있다. 즉, 주어진 어드레스 범위 크기는, 그 주어진 어드레스 범위 내의 임의의 타깃 어드레스에 대한 액세스 제어 정보를 찾기 위해 테이블 구조를 트레버싱할 때, 주어진 액세스 제어 테이블이 액세스될 타깃 어드레스들의 주어진 어드레스 범위의 크기를 지칭한다. 주어진 어드레스 범위 크기는 또한, 더 높은 레벨 액세스 제어 테이블의 테이블 엔트리에 특정된 가변 네스팅 제어 파라미터에 따라 가변적일 수 있다. 즉, 테이블 구조의 주어진 레벨에 대해, 그 액세스 제어 테이블의 단일 테이블 엔트리가 적용가능한 어드레스들의 범위의 크기는 더 높은 레벨 액세스 제어 테이블로부터 판독된 파라미터에 따라 바뀔 수 있다. 이것은 통상적이지 않는데, 그 이유는, 일반적으로 각각의 레벨의 테이블이 레벨마다 고정된 단일의 고정된 어드레스 범위 크기에 적용되는 테이블 엔트리들을 정의하기 때문이다. 다시, 가변 네스팅 제어를 이용하여, 테이블 구조의 주어진 레벨에서의 하나의 액세스 제어 테이블은 테이블 구조의 동일한 주어진 레벨에서의 다른 액세스 제어 테이블의 각각의 엔트리에 대한 주어진 어드레스 범위 크기에 대해 상이한 크기인 주어진 어드레스 범위 크기에 각각 적용가능한 테이블 엔트리들을 정의할 수 있다.
일부 예들에서, 가변 네스팅 제어 파라미터는 테이블 구조의 최종 레벨 이외의 임의의 레벨에서 특정될 수 있으며, 이에 따라, 테이블 구조의 시작 레벨 이외의 레벨에서의 액세스 제어 테이블들이, 액세스 제어 테이블의 후속 레벨들이 네스팅되는 방법을 바꾸는 것이 가능하다.
그러나, 다른 예들에서, 가변 네스팅 제어 파라미터를 설정하는 것은 테이블 구조의 시작 레벨로 제약될 수 있다. 따라서, 가변 네스팅 제어 파라미터는 테이블 구조의 시작 레벨에서의 시작 레벨 액세스 제어 테이블의 테이블 엔트리에 특정될 수 있고, 이러한 파라미터는 그 특정 시작 레벨 테이블 엔트리 아래의 서브트리 내의 테이블들이 모든 후속 레벨들에 대해 네스팅되는 방식을 정의할 수 있다. 테이블 구조의 후속 레벨들에는, 시작 레벨에 정의된 것으로부터 네스팅을 바꾸는 어떠한 추가의 파라미터들도 없을 수 있다. 주어진 레벨에 대한 오프셋 부분의 크기 및 포지션의 선택이 더 적은 파라미터들에 의존할 수 있기 때문에(테이블의 다수의 레벨들로부터 판독된 네스팅 제어 파라미터들을 조합할 필요는 없음), 이러한 접근법은 테이블 액세싱 회로부의 제어 하드웨어 로직 회로부를 구현하는 데 더 효율적일 수 있다.
테이블 구조의 테이블 엔트리들은 타깃 어드레스들의 대응하는 블록에 대한 액세스 제어 정보를 제공하는 블록 기술자 테이블 엔트리, 또는 테이블 구조의 다음 레벨에서의 액세스 제어 테이블에 대한 포인터를 제공하는 테이블 기술자 엔트리 중 어느 하나로서 분류될 수 있다. 전술한 바와 같이, 테이블 구조의 임의의 레벨에서 블록 기술자 테이블 엔트리들을 정의할 수 있다. 블록 기술자 테이블 엔트리가 가변 네스팅 제어 파라미터에 의해 정의된 바와 같은 최대 허가 레벨 이외의 레벨에 있는 경우, 이것은, 액세스 제어 정보의 공유된 정의가, 블록 기술자 테이블 엔트리가 가변 네스팅 제어 파라미터에 기초하여 표시된 최대 수의 레벨들에 대응하는 마지막 레벨에 있는 경우보다, 메모리 어드레스들의 더 큰 블록에 의해 공유된다는 것을 의미한다.
일례에서, 블록 기술자 테이블 엔트리는 다수의 액세스 제어 정보 필드들을 포함할 수 있으며, 각각의 액세스 제어 정보 필드는 어드레스들의 상이한 입상에 대한 액세스 제어 정보를 나타낸다. 따라서, 특정 타깃 어드레스에 대한 블록 기술자 테이블 엔트리에 도달할 때, 그 특정 타깃 어드레스에 대한 액세스 제어 정보는 블록 기술자 테이블 엔트리 내의 2개 이상의 액세스 제어 정보 필드들 중 특정 하나의 액세스 제어 정보 필드로부터 추출될 수 있다. 입상마다 정의되도록 요구되는 액세스 제어 정보의 양이 비교적 작은 경우, 이러한 접근법은 유용할 수 있으며, 이에 따라, 다수의 세트들의 액세스 제어 정보가 단일 메모리 액세스 변환에서 어드레싱가능한 단일 메모리 위치 내에 패킹될 수 있다. 상이한 입상들에 대한 다수의 액세스 제어 정보를 단일 블록 기술자 테이블 엔트리에 패킹함으로써, 이는 테이블 구조의 전체 크기를 감소시킬 수 있다.
일례에서, 테이블 포맷은 블록 기술자 테이블 엔트리 내에 인접성 표시를 특정하는 능력을 지원할 수 있다. 블록 기술자 테이블 엔트리가 인접성 표시를 특정할 때, 테이블 액세싱 회로부는, 요구되는 타깃 어드레스에 대응하는 타깃 입상을 포함하는 어드레스들의 2개 이상의 상이한 입상들에 대한 액세스 제어 정보가 2개 이상의 상이한 입상들 사이에서 공유되는 공유된 세트의 액세스 제어 정보에 의해 표현된다고 결정할 수 있다. 이것은, 공유된 세트의 액세스 제어 정보가 하나 초과의 입상에 대한 정보를 표현할 수 있는 경우, 이어서 시스템이 변환 색인 버퍼 또는 다른 유형의 캐시(예를 들어, 아래에서 추가로 설명되는 입상 보호 정보 캐시)에 테이블 엔트리들을 캐싱하는 것을 지원하는 경우, 이것이 캐시가 상이한 입상들에 대한 별개의 캐시 엔트리들을 저장할 필요가 없다는 것을 의미할 수 있기 때문에, 유용할 수 있다. 대신, 단일 캐시 엔트리는 더 큰 수의 입상들에 사용될 공유된 세트의 액세스 제어 정보를 나타낼 수 있다. 이것은 캐싱된 저장 용량을 더 효율적으로 사용하여, 제공되는 실제 하드웨어 저장소를 고려하면, 캐시가 예상될 것보다 더 큰 수의 입상들에 대한 정보를 효율적으로 저장하게 할 수 있다.
인접성 표시가 특정될 때 공유된 세트의 액세스 제어 정보를 공유하는 입상들의 수는 블록 기술자 테이블 엔트리에 특정된 인접성 크기 파라미터에 기초하여 가변적일 수 있다. 이것은 동일한 세트의 액세스 제어 정보를 공유하기 위해 "융합"될 수 있는 인접 블록 어드레스들의 크기를 바꾸기 위한 유연성을 제공한다.
인접성 표시는 상이한 방식들로 표현될 수 있다. 일부 경우에, 전용 인접성 표시 필드가 액세스 제어 정보 자체를 나타내기 위한 필드들과는 별개로 제공될 수 있다. 그러나, 블록 기술자 테이블 엔트리가 다수의 입상들에 대한 액세스 제어 정보를 정의하는 다수의 별개의 액세스 제어 정보 필드들을 갖는 위에서 논의된 예에서, 인접성 표시의 효율적인 인코딩은 액세스 제어 정보에 대한 임의의 유효한 옵션을 나타내는 데 사용될 수 없는 액세스 제어 정보 필드의 미리결정된 인코딩을 정의하고, 액세스 제어 정보 필드의 그 미리결정된 인코딩을 인접성 표시를 표현하는 것으로 해석하는 것일 수 있다. 이러한 경우, 블록 기술자 테이블 엔트리 내의 액세스 제어 정보 필드들 중 미리결정된 하나의 액세스 제어 정보 필드가 미리결정된 인코딩을 가질 때, 이것은, 테이블 액세싱 회로부가, 공유된 세트의 액세스 제어 정보가 그 블록 기술자 테이블 엔트리 내의 다른 액세스 제어 정보 필드들 중 하나 이상의 액세스 제어 정보 필드에 의해 표시된다고 결정하거나, 또는 공유된 세트의 액세스 제어 정보가 심지어 타깃 어드레스에 대응하는 것과는 완전히 상이한 블록 기술자 테이블 엔트리에 표현될 수 있다고 결정하는 것을 의미한다. 액세스 제어 정보 필드의 이와 다른 무효한 인코딩을 인접성 표시로서 사용하고 동일한 블록 기술자 테이블 엔트리의 다른 부분들이 공유된 액세스 제어 정보를 표현할 수 있다는 사실을 이용함으로써, 이것은 인접성 표시를 위한 별개의 필드를 할당할 필요성을 없애며, 이는 테이블 데이터에 대한 더 효율적인 저장 포맷을 제공한다.
위에서 논의된 기법들은 메모리에 대한 액세스를 제어하기 위해 메모리 관리 회로부에 의해 사용되는 상이한 유형들의 테이블 구조에 사용될 수 있다.
가변 네스팅 제어 파라미터를 사용하는 기법은 가상 어드레스보다는 물리적 어드레스에 의해 인덱싱되는 테이블 구조들에 특히 유용할 수 있다. 테이블 구조가 물리적 어드레스에 의해 인덱싱될 때, 이것은 (테이블의 각각의 레벨들로 인덱싱하기 위한 오프셋 부분들이 추출되는) 테이블 구조를 룩업하는 데 사용되는 타깃 어드레스가 물리적 어드레스일 것임을 의미한다. 가변 네스팅 제어 파라미터의 사용은 물리적으로 인덱싱된 액세스 제어 테이블 구조들에 특히 유용한데, 그 이유는, 물리적 어드레스 공간이 가상 어드레스 공간보다 더 큰 메모리 선형성을 나타내는 경향이 있기 때문이다. 즉, 가상 어드레스들보다 물리적 어드레스들이 하드웨어로 구현된 저장소의 물리적 영역들에 더 밀접하게 대응하므로, 근접한 물리적 어드레스들의 비교적 큰 블록이 동일한 크기의 근접한 가상 어드레스들의 블록에 대해서보다 성능/메모리 풋프린트 효율성의 측면에서 유사한 요건들을 가질 가능성이 더 크다. 대조적으로, 상당히 큰 크기의 근접한 가상 어드레스들의 블록은 성능/메모리 풋프린트 트레이드오프에 대해 상이한 요건들을 갖는 상이한 물리적 저장 유닛들 또는 주변 디바이스들의 집합(assortment)에 걸쳐 프레그먼트화될 가능성이 더 클 것이다. 가상 어드레스가 아닌 물리적 어드레스에 의해 인덱싱되는 테이블 구조는 역전된 페이지 테이블로 또한 지칭될 수 있고, 본 출원에서 논의된 기법은 물리적 어드레스들의 각각의 입상들에 대해 정의된 정보를 제공하는, 그러한 역전된 페이지 테이블들에 특히 유용하다.
물리적으로 인덱싱되는 테이블 구조의 하나의 특정 예는 각각의 물리적 어드레스 공간들의 격리를 위해 사용되는 테이블일 수 있다. 예를 들어, 메모리 관리 회로부는, 메모리 액세스 요청에 의해 특정된 타깃 가상 어드레스를 복수의 물리적 어드레스 공간들 중에서 선택된, 선택된 물리적 어드레스 공간과 연관된 타깃 물리적 어드레스로 변환하기 위한 어드레스 변환 회로부; 및 테이블 구조로부터 획득된 액세스 제어 정보가, 선택된 물리적 어드레스 공간이 타깃 물리적 어드레스에 대한 허용된 물리적 어드레스 공간이라고 나타내는지에 기초하여, 메모리 액세스 요청이 타깃 물리적 어드레스에 액세스하도록 허용되어야 하는지를 결정하기 위한 필터링 회로부를 포함할 수 있다.
데이터 프로세싱 시스템들은 가상 메모리의 사용을 지원할 수 있으며, 여기서, 어드레스 변환 회로부가 메모리 액세스 요청에 의해 특정된 가상 어드레스를 액세스될 메모리 시스템 내의 위치와 연관된 물리적 어드레스로 변환하기 위해 제공된다. 가상 어드레스들과 물리적 어드레스들 사이의 맵핑들은 하나 이상의 페이지 테이블 구조들에 정의될 수 있다. 페이지 테이블 구조들 내의 페이지 테이블 엔트리들은 또한, 프로세싱 회로부 상에서 실행되는 주어진 소프트웨어 프로세스가 특정 가상 어드레스에 액세스하도록 허용되는지를 제어할 수 있는 일부 액세스 허가 정보를 정의할 수 있다.
일부 프로세싱 시스템들에서, 모든 가상 어드레스들은 어드레스 변환 회로부에 의해, 액세스될 메모리 내의 위치들을 식별하기 위해 메모리 시스템에 의해 사용되는 단일 물리적 어드레스 공간 상으로 맵핑될 수 있다. 그러한 시스템에서, 특정 소프트웨어 프로세스가 특정 어드레스에 액세스할 수 있는지에 대한 제어는 단독으로 가상 어드레스-대-물리적 어드레스 변환 맵핑들을 제공하는 데 사용되는 페이지 테이블 구조들에 기초하여 제공된다. 그러나, 그러한 페이지 테이블 구조들은 전형적으로 운영 체제 및/또는 하이퍼바이저(hypervisor)에 의해 정의될 수 있다. 운영 체제 또는 하이퍼바이저가 손상된 경우, 이는, 공격자가 민감한 정보에 액세스할 수 있게 되는 보안 누출(security leak)을 야기할 수 있다.
따라서, 소정 프로세스들이 다른 프로세스들로부터 격리되어 안전하게 실행될 필요가 있는 일부 시스템들의 경우, 시스템은 다수의 개별적인 물리적 어드레스 공간들을 지원할 수 있으며, 여기서, 메모리 시스템의 적어도 일부 컴포넌트들에 대해서는, 가상 어드레스들이 상이한 물리적 어드레스 공간들 내의 물리적 어드레스들로 변환되는 메모리 액세스 요청들이, 각각의 물리적 어드레스 공간들 내의 물리적 어드레스들이 실제로는 메모리 내의 동일한 위치에 대응하더라도, 그들이 메모리 내의 완전히 별개인 어드레스들에 액세스하고 있는 것처럼 취급된다. 프로세싱 회로부의 동작의 상이한 도메인들로부터의 액세스들을 일부 메모리 시스템 컴포넌트들에 대해 볼 때처럼 각각의 개별적인 물리적 어드레스 공간들로 격리시킴으로써, 이는 운영 체제 또는 하이퍼바이저에 의해 설정된 페이지 테이블 허가 정보에 의존하지 않는 더 강한 보안 보장을 제공할 수 있다.
메모리 액세스 요청의 가상 어드레스가 2개 이상의 개별적인 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간 내의 물리적 어드레스에 맵핑될 수 있는 시스템에서, 입상 보호 정보는 어느 물리적 어드레스들이 특정 물리적 어드레스 공간 내에서 액세스가능한지를 제한하는 데 사용될 수 있다. 이는, 온-칩(on-chip) 또는 오프-칩(off-chip) 중 어느 하나로 하드웨어에 구현된 소정 물리적 메모리 위치들이, 원하는 경우, 특정 물리적 어드레스 공간 또는 물리적 어드레스 공간들의 특정 서브세트 내의 액세스에 대해 제약될 수 있다는 것을 보장하는 데 유용할 수 있다.
따라서, 더 높은 레벨 테이블에 정의된 가변 네스팅 제어 파라미터에 기초하여 타깃 어드레스의 오프셋 부분들의 크기를 바꾸는 기법은 주어진 메모리 액세스를 위해 선택된 특정 물리적 어드레스 공간 내의 어느 물리적 어드레스들이 액세스가능한지를 제한하는 데 사용되는 입상 보호 정보를 정의하는 테이블에 적용될 수 있다. 따라서, 전술한 액세스 제어 정보는 어느 물리적 어드레스 공간들이 물리적 어드레스들의 대응하는 입상에 대한 허용된 물리적 어드레스 공간들인지를 정의하는 입상 보호 정보일 수 있다.
그러나, 전술한 가변 네스팅 기법은 타깃 가상 어드레스를 타깃 물리적 어드레스로 변환하기 위한 어드레스 변환 회로부에 의해 사용되는 어드레스 변환 맵핑들을 제공하는 페이지 테이블들과 같은, 가상 어드레스에 의해 인덱싱되는 테이블 구조들에 또한 사용될 수 있다.
가상 메모리의 할당이 더 프레그먼트화되는 경향이 있어서, 고정된 더 큰 수의 테이블 레벨들을 사용하는 것이 메모리에서 테이블 풋프린트를 감소시키는 데 더 효율적일 수 있을 가능성이 더 크지만, 그럼에도 불구하고, 빠르게 액세스되어야 하는 성능-임계 데이터를 저장하는 소정 영역들에 대한 성능을 개선시키기 위해 더 큰 테이블 풋프린트가 용인될 수 있는 일부 영역들이 있을 수 있다는 것이 가능하다. 따라서, 위에서 논의된 기법들은, 레벨들의 수가 감소될 수 있는 충분한 선형성이 있는 가상 어드레스 공간의 그러한 영역들에 대해 테이블을 트레버싱하는 데 있어서, 성능에 대해 테이블의 메모리 풋프린트를 트레이드오프하는 데 사용될 수 있다. 따라서, 더 높은 레벨 액세스 제어 테이블 내의 가변 네스팅 제어 파라미터에 기초하여 주어진 레벨에 대해 가변 크기의 오프셋 부분들을 정의하는 것은 또한, 가상 어드레스에 의해 인덱싱되는 페이지 테이블들 또는 임의의 다른 액세스 제어 테이블 구조에 적용될 수 있다. 위에서 논의된 액세스 제어 정보는 어드레스 변환에 사용되는 페이지 테이블들로부터의 어드레싱 맵핑 정보를 포함할 수 있고, 가상 어드레스들의 영역이 판독가능/기입가능한지 또는 판독전용이어야 하는지를 정의하거나, 또는 영역에 액세스하기 위해 어떤 특권/예외 레벨들이 허용되는지를 제한하는 정보와 같은, 페이지 테이블들에 정의되는 다른 액세스 허가 정보를 또한 포함할 수 있다.
위에서 논의된 기법들은 위에서 논의된 바와 같은 기능들을 구현하기 위한 하드웨어 회로부 로직을 갖는 하드웨어 장치에서 구현될 수 있다. 따라서, 메모리 관리 회로부 및 테이블 액세싱 회로부는 하드웨어 회로 로직을 포함할 수 있다. 그러나, 다른 예들에서, 타깃 코드의 실행을 위한 명령어 실행 환경을 제공하도록 호스트 데이터 프로세싱 장치를 제어하기 위한 컴퓨터 프로그램에는, 상기 논의된 메모리 관리 회로부 및 테이블 어드레싱 회로부와 등가의 기능들을 소프트웨어로 수행하는 메모리 관리 프로그램 로직 및 테이블 액세싱 프로그램 로직이 제공될 수 있다. 이는, 예를 들어, 특정 명령어 세트 아키텍처에 대해 기입된 타깃 코드가 그 명령어 세트 아키텍처를 지원하지 않을 수 있는 호스트 컴퓨터 상에서 실행될 수 있게 하는 데 유용할 수 있다.
따라서, 호스트 컴퓨터에 의해 제공되지 않는 명령어 세트 아키텍처에 의해 예상되는 기능성은, 타깃 코드가 명령어 세트 아키텍처를 실제로 지원하는 하드웨어 디바이스 상에서 실행되었을 경우에 예상될 바와 같이, 타깃 코드에 대해 등가의 명령어 실행 환경을 제공하는 시뮬레이션 소프트웨어에 의해 대신 에뮬레이팅될 수 있다. 따라서, 시뮬레이션을 제공하는 컴퓨터 프로그램은 테이블 구조의 테이블 엔트리들에 정의된 액세스 제어 정보에 기초하여 시뮬레이션된 메모리에 대한 액세스를 제어하는 메모리 관리 프로그램 로직; 및 테이블 구조(호스트 데이터 프로세싱 장치의 메모리에 저장되지만, 시뮬레이션된 명령어 세트 아키텍처를 지원하는 실제 타깃 프로세싱 장치가 가질 메모리를 시뮬레이션하는 시뮬레이션된 메모리 내의 어드레스들을 특정하는 액세스들에 의해 액세스됨)에 액세스하기 위한 테이블 액세싱 프로그램 로직을 포함할 수 있다. 하드웨어 디바이스에서와 같이, 테이블 구조의 네스팅은 테이블 구조의 주어진 레벨에서 사용되는 오프셋들의 크기를 바꾸기 위해 가변 네스팅 제어 파라미터에 기초하여 제어될 수 있다. 아키텍처의 시뮬레이션이 제공되는 접근법에 대하여, 임의의 어드레스 변환에 의해 생성되고 임의의 물리적으로 인덱싱되는 테이블 구조로 인덱싱하는 물리적 어드레스들은 시뮬레이션된 물리적 어드레스 공간 내의 물리적 어드레스들일 수 있는데, 그 이유는, 그들이 실제로 호스트 컴퓨터의 하드웨어 컴포넌트들에 의해 식별되는 물리적 어드레스 공간들에 대응하는 것이 아니라, 호스트의 가상 어드레스 공간 내의 어드레스들에 맵핑될 것이기 때문이다.
그러한 시뮬레이션을 제공하는 것은, 예를 들어, 하나의 명령어 세트 아키텍처에 대해 기입된 레거시 코드(legacy code)가 상이한 명령어 세트 아키텍처를 지원하는 상이한 플랫폼 상에서 실행되는 것을 가능하게 하기 위한, 또는 새로운 버전의 명령어 세트 아키텍처를 지원하는 하드웨어 디바이스들이 아직 이용가능하지 않을 때 그 새로운 버전의 명령어 세트 아키텍처에 대해 실행되도록 새로운 소프트웨어의 소프트웨어 개발을 보조하기 위한(이는 새로운 버전의 아키텍처를 지원하는 하드웨어 디바이스들의 개발과 동시에 새로운 버전의 아키텍처를 위한 소프트웨어가 개발되기 시작할 수 있게 할 수 있음) 광범위한 목적들에 유용할 수 있다.
도 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)로 변환한다. 페이지 테이블 워크 회로부(17)는 메모리 시스템으로부터 페이지 테이블 엔트리들을 요청하기 위한 테이지 테이블 워크 메모리 액세스 요청들의 발행을 제어하며, 이는 기준 어드레스 레지스터에 정의되거나 더 높은 레벨 테이블 엔트리로부터의 포인터 및 변환될 타깃 어드레스로부터 추출된 오프셋 부분에 의해 제공되는 테이블 기준 어드레스에 기초하여 페이지 테이블 엔트리들의 어드레스들을 생성하는 것을 포함한다. 변환 색인 버퍼(translation lookaside buffer, TLB)(18)는 어드레스 변환이 요구될 때마다 페이지 테이블 정보가 메모리로부터 페치되어야 하는 경우보다 더 빠른 액세스를 위해 그 페이지 테이블 정보의 일부를 캐싱하기 위한 룩업 캐시로서 작동한다. 이러한 예에서, 물리적 어드레스를 생성하는 것뿐만 아니라, 어드레스 변환 회로부(16)는 또한 물리적 어드레스와 연관된 다수의 물리적 어드레스 공간들 중 하나의 물리적 어드레스 공간을 선택하고, 선택된 물리적 어드레스 공간을 식별하는 물리적 어드레스 공간(PAS) 식별자를 출력한다. PAS의 선택은 아래에서 더 상세하게 논의될 것이다.
PAS 필터(20)는, 변환된 물리적 어드레스 및 PAS 식별자에 기초하여, 그 물리적 어드레스가 PAS 식별자에 의해 식별된, 특정된 물리적 어드레스 공간 내에서 액세스되도록 허용되는지를 체크하기 위한 요청자측 필터링 회로부로서 작동한다. 이러한 룩업은 메모리 시스템 내에 저장된 입상 보호 테이블(Granule Protection Table, GPT) 구조에 저장된 입상 보호 정보에 기초한다. 입상 보호 테이블(GPT) 워크 회로부(23)는 메모리 내의 입상 보호 테이블 구조의 엔트리들에 대한 액세스를 제어한다. 페이지 테이블 워크 회로부(17)와 유사하게, GPT 워크 회로부(23)는 메모리 시스템으로부터 GPT 엔트리들을 요청하기 위한 GPT 워크 메모리 액세스 요청들의 발행을 제어하며, 이는 기준 어드레스 레지스터에 정의되거나 더 높은 레벨 테이블 엔트리로부터의 포인터 및 변환될 타깃 어드레스로부터 추출된 오프셋 부분에 의해 제공되는 테이블 기준 어드레스에 기초하여 GPT 엔트리들의 어드레스들을 생성하는 것을 포함한다. 입상 보호 정보는, TLB(18)에 페이지 테이블 데이터를 캐싱하는 것과 유사하게, 입상 보호 정보 캐시(22) 내에 캐싱될 수 있다. 도 1의 예에서 입상 보호 정보 캐시(22)가 TLB(18)와는 별개의 구조로 도시되어 있지만, 다른 예들에서, 이러한 유형들의 룩업 캐시들은 단일 룩업 캐시 구조로 조합될 수 있으며, 이에 따라, 조합된 구조의 엔트리의 단일 룩업이 페이지 테이블 정보 및 입상 보호 정보 둘 모두를 제공한다. 입상 보호 정보는 주어진 물리적 어드레스가 액세스될 수 있는 물리적 어드레스 공간들을 제약하는 정보를 정의하고, 이러한 룩업에 기초하여, PAS 필터(20)는 메모리 액세스 요청이 하나 이상의 캐시들(24) 및/또는 상호접속부(8)에 발행되도록 진행할 것을 허용할지 여부를 결정한다. 메모리 액세스 요청에 대해 특정된 PAS가 특정된 물리적 어드레스에 액세스하도록 허용되지 않는 경우, PAS 필터(20)는 트랜잭션을 차단하고 결함을 시그널링할 수 있다.
어드레스 변환 회로부(16) 및 PAS 필터(20)는 메모리 관리 회로부의 예들이다. 페이지 테이블 워크 회로부(17) 및 GPT 워크 회로부(23)는 테이블 액세싱 회로부의 예들이다.
도 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) 및 (선택적으로) 다른 입상 보호 속성들을 정의하는 테이블(입상 보호 테이블(56) 또는 GPT)에 액세스한다.
하드웨어 필터(20)는 입상의 GPI에 대해 월드 ID 및 보안 속성들을 체크하고, 액세스가 승인될 수 있는지 또는 아닌지를 결정하여, 그에 따라서 입상형 메모리 보호 유닛(GMPU)을 형성한다.
GPT(56)는, 예를 들어, 온-칩 SRAM 또는 오프-칩 DRAM에 상주할 수 있다. 오프-칩으로 저장되는 경우, GPT(56)는 GPT(56)의 보안을 유지하기 위해 암호화, 무결성 및 최신성 메커니즘들을 사용할 수 있는 온-칩 메모리 보호 엔진에 의해 무결성-보호될 수 있다.
GMPU(20)를 컴플리터측보다는 시스템의 요청자측에(예를 들어, MMU 출력부에) 위치시키는 것은, 상호접속부(8)가 다수의 DRAM 포트들에 걸쳐 페이지를 계속 해싱/스트립핑(striping)하도록 허가하면서, 페이지 입도로 액세스 허가들을 할당할 수 있게 한다.
트랜잭션들은, 그들이 물리적 에일리어싱의 지점(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)가 메모리 액세스 요청을 발행할 때 동작하고 있는 현재 도메인에 따라 제약될 수 있다:
선택할 수 있는 다수의 물리적 어드레스 공간들이 있는 그러한 도메인들의 경우, 물리적 어드레스를 제공하는 데 사용되는 액세스된 페이지 테이블 엔트리로부터의 정보는 이용가능 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)를 포함할 수 있다. 각각의 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에 도시된 바와 같이, 페이지 테이블 구조는 다수의 레벨들의 페이지 테이블들(150, 152, 154, 156)을 사용하여 구현될 수 있으며, 이는 특정 타깃 어드레스에 대한 어드레스 맵핑을 식별하기 위해 페이지 테이블 워크 동작으로 트레버싱될 수 있다. 도 8에 도시된 바와 같이, 주어진 세트의 인덱스 비트들(L0I)은 메모리 내의 위치가 레벨 0(L0) 기준 어드레스(151)에 의해 식별되는 레벨 0 페이지 테이블(150)로 인덱싱하는 데 사용될 수 있다. L0 테이블(150)의 인덱싱된 엔트리는 메모리 내의 L1 페이지 테이블(152)의 위치를 식별하는 L1 기준 어드레스를 제공하는 포인터를 식별한다. 타깃 어드레스로부터의 상이한 서브세트의 인덱스 비트들(L1I)은 L1 페이지 테이블(152)의 엔트리들 중 하나의 엔트리를 선택하고, 이는 이어서 L2 페이지 테이블(154)의 메모리 위치를 식별하는 L2 기준 어드레스를 식별한다. 타깃 어드레스로부터의 다른 서브세트의 인덱스 비트들(L2I)은 L2 페이지 테이블(154)로 인덱싱하여, L3 페이지 테이블(156)의 위치를 식별하는 L3 기준 어드레스를 식별한다. 이어서, 타깃 어드레스의 또 다른 서브세트의 비트들(L3I)은, (임의의 연관된 액세스 허가 및/또는 PAS 선택 정보를 제공할 뿐만 아니라) 타깃 어드레스를 물리적 어드레스와 같은 변환된 어드레스로 맵핑하기 위한 실제 어드레스 맵핑을 제공하는 L3 페이지 테이블(156)의 특정 엔트리를 선택한다. 따라서, L3 페이지 테이블(156)은 실제 어드레스 맵핑 정보를 제공하는 리프 페이지 테이블 엔트리들을 제공하는 최종 페이지 테이블이고, 더 높은 레벨 페이지 테이블들(150, 152, 154)은 다음 레벨 페이지 테이블의 기준 어드레스를 식별하는 중간 엔트리들을 제공한다.
페이지 테이블의 4개의 레벨들을 제공하는 것은 단지 일례일 뿐이며, 다른 것들은 페이지 테이블들의 상이한 수들의 레벨들을 사용할 수 있다는 것이 이해될 것이다. 또한, 더 큰 블록의 어드레스 공간이 동일한 변환 맵핑 및 다른 정보를 공유하기 위한 것인 경우, 더 높은 레벨 페이지 테이블들(150, 152, 154) 내의 엔트리들 중 하나의 엔트리는 그것이 어드레스 맵핑을 직접 제공하는 리프 엔트리라고 특정할 수 있으며, 이에 따라, 후속 레벨들에 걸친 추가의 스텝핑(stepping)이 요구되지 않을 수 있다(한편 동일한 더 높은 레벨 페이지 테이블(150, 152, 154) 내의 다른 엔트리들은 여전히, 후속 레벨 페이지 테이블을 가리키는 기준 어드레스를 포함하는 분기 엔트리들로서 작동할 수 있음).
이러한 방식으로 페이지 테이블들을 상이한 레벨들로 분할함으로써, 전체 페이지 테이블 구조를 저장하기 위해 요구되는 메모리 저장소의 총량은 감소될 수 있는데, 그 이유는, 종종 큰 청크들의 어드레스 공간이 어드레스 변환 데이터를 설정하는 운영 체제 또는 다른 프로세스에 의해 정의된 어떠한 맵핑들도 아직 갖지 않는다는 사실을 활용하여, 맵핑되고 있는 어드레스 크기에 비례하는 크기를 갖는 메모리 영역에서 주어진 양의 어드레스 공간을 변환하기 위한 어드레스 맵핑들의 위치를 알아낼 필요가 없기 때문이다. 도 8은 인덱스 비트들(L0I, L1I 등)이 대응하는 페이지 테이블 엔트리를 선택하기 위한 인덱스로서 직접 사용되는 예를 도시하고 있지만, 인덱스는 또한, 인덱스 비트들에 적용되는 해시 함수의 결과일 수 있다.
일부 시스템들에서, TLB(18)는 상이한 레벨들의 페이지 테이블로부터의 변환 엔트리들을 캐싱하기 위한 별개의 캐시 구조들을 포함할 수 있다. 예를 들어, TLB(18)는 최종 레벨 페이지 테이블(156)로부터의 리프 엔트리들을 캐싱하기 위한 메인 TLB 구조뿐만 아니라, 페이지 테이블들(150, 152, 154)로부터의 더 높은 레벨 페이지 테이블 엔트리들을 캐싱하기 위한 워크 캐시 구조를 포함할 수 있다. 한편, 다른 실시예들은 다수의 레벨들의 페이지 테이블로부터의 어드레스 변환 데이터를 캐싱하는 데 공유된 캐시 구조를 사용하는 TLB를 제공할 수 있다. 다른 실시예들은 주어진 VA에 대응하는 어드레스 맵핑을 제공하기 위해 룩업될 수 있는 리프 엔트리들만은 캐싱할 수 있지만, 더 높은 레벨 페이지 테이블들(150, 152, 154)로부터의 분기 엔트리들은 운반하지 않을 수 있다. 이들 접근법들 중 임의의 것이 사용될 수 있다. 도 1은 단일 TLB(18)를 도시하고 있지만, 일부 구현예들은 액세스 레이턴시(latency)에 대해 용량을 트레이드오프하기 위해, 캐시 계층구조에 다수의 레벨들의 TLB 캐시 구조들을 포함할 수 있다(예를 들어, 더 작은 수의 엔트리들이 빠른 액세스를 위해 레벨 0 TLB에 저장되고, 레벨 0 TLB 내에서의 누락 이벤트에 있어서, 더 큰 수의 엔트리들이 더 느린 액세스를 위해 레벨 1 TLB에 저장됨).
프로세서(10)의 일부 동작 상태들에 대해, 어드레스 변환 프로세스는 어드레스 변환의 다수의 스테이지들을 또한 수반할 수 있다(어드레스 변환의 1개의 스테이지가 요구되는지 또는 2개의 스테이지가 요구되는지는 현재 예외 레벨(15) 및/또는 레지스터들(12)에 설정된 구성 정보에 의존할 수 있음). 예를 들어, CPU(4) 상에서 실행되는 애플리케이션 또는 운영 체제에 의해 실행되는 명령어들에 의해 메모리 위치들을 식별하는 데 사용되는 VA들은 스테이지 1 변환에서 중간 물리적 어드레스(IPA)들로 변환될 수 있다. 스테이지 1 어드레스 변환을 제어하기 위한 스테이지 1 어드레스 변환 구조는, 예를 들어, EL1에서 동작하는 운영 체제 또는 다른 프로세스에 의해 설정될 수 있다. 운영 체제의 시점으로부터, 스테이지 1 어드레스 변환에서 생성된 IPA들은 액세스되고 있는 실제 메모리 위치들의 물리적 어드레스들이라고 가정될 수 있다. 그러나, 가상화를 지원하고 동일한 디바이스 상에 공존하는 상이한 운영 체제들에 의해 사용되는 동일한 IPA들이 충돌하는 것을 방지하기 위해, EL2에서 동작하는 하이퍼바이저 또는 다른 프로세스는 이어서, IPA들과 메모리 시스템에 제공될 PA들 사이의 추가의 제2 스테이지 어드레스 변환을 제공할 수 있다. 도 4 및 도 5를 참조하여 전술한 바와 같이, 이들 PA들은 선택된 물리적 어드레스 공간 내의 PA들일 수 있고, 일부 PoPA-전 메모리 시스템 컴포넌트들은 상이한 물리적 어드레스 공간들 내의 동일한 PA 값들을, 그들이 상이한 물리적 위치들을 의미하는 것처럼 취급할 수 있다. 따라서, 스테이지 2 어드레스 변환을 제어하기 위한, EL2에서 동작하는 코드에 의해 정의된 제2 스테이지 변환 테이블 구조가 있을 수 있다.
어드레스 변환의 2개의 스테이지들 각각은 도 8에 도시된 바와 같은 다수의 레벨들의 페이지 테이블들을 사용할 수 있다는 점에 유의한다. 따라서, 타깃 VA에 의해 식별된 주어진 어드레스 블록에 대한 어드레스 맵핑을 식별하기 위한 전체 페이지 테이블 워크는 스테이지 1 어드레스 변환에 사용되는 페이지 테이블들에 대한 기준 어드레스들 각각이 스테이지 1 페이지 테이블의 대응하는 레벨에 액세스하기 전에 스테이지 2 어드레스 변환을 거치도록 요구할 수 있다. 즉, 스테이지 1 및 스테이지 2 테이블들 둘 모두가 도 8에 도시된 바와 같은 4개의 레벨들의 페이지 테이블들을 포함하는 예에 대하여, 전체 페이지 테이블 워크 프로세스는 하기의 순서로 다수의 레벨들의 페이지 테이블들에 액세스하는 것을 포함할 수 있다:
스테이지 1 레벨 0 페이지 테이블의 기준 어드레스(121)의 PA로의 스테이지 2 변환(스테이지 1 변환 구조들이 EL1에서 동작하는 코드에 의해 구성되기 때문에, 스테이지 1 레벨 0 기준 어드레스는 IPA 어드레스일 수 있음). 스테이지 2 변환은 4개의 룩업들(스테이지 2, 레벨 0; 스테이지 2 레벨 1; 스테이지 2 레벨 2; 스테이지 2 레벨 3)을 포함함.
따라서, 어떠한 캐싱도 없이, 변환은 총 24개의 룩업들을 포함할 것이다. 위의 순서로부터 알 수 있는 바와 같이, 전체 페이지 테이블 워크 프로세스를 수행하는 것은 어드레스 변환의 스테이지들 각각에 대한 페이지 테이블들의 레벨들 각각에 걸쳐 스텝핑하기 위해 메모리에 대한 큰 수의 액세스들을 요구할 수 있기 때문에, 매우 느릴 수 있다. 이것은, 종종 최종 레벨 어드레스 맵핑뿐만 아니라 TLB(18) 내의 스테이지 1 및 스테이지 2 테이블들의 더 높은 레벨 페이지 테이블들로부터의 엔트리들로부터의 정보도 캐싱하는 것이 바람직한 이유이다. 이것은, 주어진 타깃 어드레스에 대한 최종 레벨 어드레스 맵핑이 현재 어드레스 변환 캐시에 있지 않더라도, 전체 페이지 테이블 워크의 적어도 일부 단계들이 우회되게 할 수 있다.
어드레스 변환의 2개의 스테이지들을 지원하는 시스템들에서, 일부 TLB들(18)은, 스테이지 1 및 스테이지 2 페이지 테이블 구조들로부터의 정보를 각각 캐싱하기 위해 별개의 캐시 구조들이 제공되는, 분할 TLB들로서 구현될 수 있다. 이러한 경우, 2개의 별개의 TLB 룩업들, 즉, 대응하는 IPA를 식별하기 위한 스테이지 1 TLB에서의 하나의 룩업 및 그 IPA에 대응하는 PA를 식별하기 위한 스테이지 2 TLB에서의 하나의 룩업이 VA를 특정하는 변환 요청을 프로세싱하기 위해 요구될 수 있다. 대안적으로, 조합된 스테이지 1 및 2 TLB(18)가 제공될 수 있으며, 여기서, 어드레스 변환의 2개의 스테이지들의 대상인 어드레스 요청에 대한 페이지 테이블 워크 동작이 VA의 IPA로의 맵핑을 우선 식별하고 이어서 IPA의 PA로의 맵핑을 식별하도록 스테이지 1 및 스테이지 2 페이지 테이블 구조들의 별개의 룩업들을 요청하더라도, 일단 이것이 행해지면, 조합된 스테이지 1 및 2 TLB에는 VA를 PA에 바로 맵핑하는 엔트리가 할당될 수 있으므로, 동일한 VA에 대한 미래의 액세스들에 대해, 2개의 별개의 룩업들을 수행할 필요 없이, PA가 TLB(18)로부터 판독될 수 있다.
도 8에 도시된 바와 같은 다수의 레벨들을 갖는 전형적인 페이지 테이블 구조에서, 구조의 레벨들의 최대 수는 고정된다(예를 들어, 도 8의 예에서는 4개의 레벨들). 또한, 테이블 구조의 주어진 레벨에서의 테이블의 테이블 크기, 주어진 레벨에서의 개별적인 테이블 엔트리가 적용가능한 어드레스 공간의 영역의 크기, 및 오프셋 비트들의 포지션들/크기들은 전형적으로, 고정되고 전혀 가변적이지 않거나, 또는 테이블 구조에 대해 전체적으로 설정된 전역 파라미터들에 기초하여 가변적이다.
예를 들어, 4 레벨 페이지 테이블 구조는 다수의 옵션들(예를 들어, 4, 16 또는 64 kB) 중에서부터 선택가능한 가변 입상 크기(Granule Size, GS)로 구현될 수 있고, 이러한 경우, 엔트리당 크기, 오프셋 비트들 포지션/크기, 및 테이블 크기는 하나의 예시적인 구현예에 대해 하기와 같을 수 있는데:
(다음에 유의하여:
"오프셋 비트들"은 테이블 구조의 주어진 레벨에서의 테이블로부터 특정 엔트리를 선택하기 위해 입력 어드레스(스테이지 1에 대해서는 VA, 스테이지 2에 대해서는 IPA)로부터 추출된 비트들을 지칭하고;
"테이블 크기"는 테이블에 할당가능한 최소 테이블 크기를 지칭하며, 이는 하나의 테이블 엔트리에 대한 테이블 데이터의 크기와 2X의 곱에 대응하는 크기에 대응하며, 여기서 X는 테이블의 그 레벨로 인덱싱하는 데 사용되는 오프셋 비트들의 수이다. 이러한 특정 예는 엔트리당 64 비트, 즉, 8 바이트의 테이블 데이터를 갖는 테이블 엔트리들을 가정하지만, 다른 예들은 상이한 엔트리 크기들을 사용할 수 있다.
이러한 특정 예에서는, 52 비트 어드레스들을 사용하는 것에 대해 제약이 있으며, 선택된 입상 크기가 4 kB 또는 16 kB일 때, 최대 가상 어드레스 영역 크기는 48 비트이다. 유사하게, 출력 어드레스들은 48 비트로 제한된다. 이러한 예에서, 52 비트 어드레스들은 64 kB 입상 크기들이 사용될 때만 사용될 수 있다. 물론, 다른 예들은 다른 크기들의 어드레스들을 정의할 수 있다.
상기 테이블은 하나의 특정 예에 대한 각각의 레벨들에 사용되는 오프셋 부분들을 나타내며, 특정 오프셋 부분 크기들/포지션들은 필수가 아님이 이해될 것이다. 그러나, 그것은, 전형적인 페이지 테이블들에서, 주어진 테이블 레벨에 대한 오프셋 부분들이 추출되는 포지션들/크기들이, 전체 테이블 구조 내의 그 레벨에서의 모든 테이블들에 대해 동일하고(그들은 동일한 레벨에서의 상이한 테이블들 사이에서 바뀌지 않음), (고정된 입상 크기가 지원될 경우에만) 그 레벨에 대해 고정되거나, 또는 테이블 구조에 대해 전체적으로 정의된 전역 파라미터에 기초하여 가변적임을 예시하는 역할을 한다.
또한, 블록 기술자 엔트리가 레벨 3 이외의 레벨에서 정의되는 경우, 그것은 그 레벨에 대한 "엔트리당 크기"에 의해 표시되는 크기의 영역에 적용가능한 액세스 제어 정보를 정의하는데, 이때, 예를 들어, 4 kB 입상 크기를 사용하면, 레벨 1에서의 임의의 엔트리(테이블 기술자 또는 블록 기술자)는 크기가 1 GB인 영역에 적용가능할 것이므로, 인접한 1 GB 영역 내의 모든 어드레스들이 동일한 액세스 제어 속성들(어드레스 맵핑, 페이지 테이블에 표시된 허가들과 연관된 임의의 것, 및 PAS 선택 정보)을 공유하기 위한 것일 경우, 블록 기술자는 단지 레벨 1에서만 정의될 수 있다는 것에 유의한다. 상이한 액세스 제어 속성들을 갖는 4 kB 영역들이 정의되는 경우, 블록 기술자 엔트리는 레벨 3에서 제공될 필요가 있고, 페이지 테이블 구조의 전체 4 레벨들의 트레버싱이 필요할 것이다.
도 9는 주어진 메모리 액세스 요청에 대한 물리적 어드레스를 생성하는 데 사용되는 블록/페이지 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는 루트, 구역, 안전한 및 안전하지 않은 도메인들과 연관된 물리적 어드레스 공간들 중 임의의 물리적 어드레스 공간으로서 선택된다.
도 10은 필터링 회로부(20)에 의한 메모리 액세스 요청들의 필터링을 예시하는 흐름도이다. 단계(170)에서, 메모리 액세스 요청이 어드레스 변환 회로부(16)로부터 수신된다(어드레스 변환 회로부에 의해 수행되는 임의의 허가 체크들은 이미 통과됐다고 가정함). 수신된 메모리 액세스 요청은 타깃 PA를 특정하고, 도 9에 대해 설명된 바와 같이 선택되었던 출력 PAS(또한 "선택된 PAS"로 지칭됨)와 연관된다. 전술한 바와 같이, 출력 PAS는 어드레스 변환 회로부(16)가 선택된 PAS를 나타내는 명시적 식별자를 제공함으로써 표시될 수 있거나, 또는 어드레스 변환 회로부(16)가, 프로세싱 회로부(10)의 현재 도메인의 표시와 함께, 필터링 회로부(20)에서 출력 PAS를 결정하는 데 사용될 수 있는 페이지 테이블들로부터 판독된 PAS 선택 정보(126)를 필터링 회로부(20)로 포워딩함으로써 표시될 수 있다.
단계(172)에서, 필터링 회로부(20)는 타깃 PA에 대응하는 입상 보호 정보(GPI)를 획득한다. 이것은, GPI가 이미 캐시 내에 있는 경우 입상 보호 정보 캐시(22)로부터 GPI를 획득함으로써, 또는 GPT 워크 회로부(23)가 입상 보호 테이블 워크를 수행하는 것에 의해 메모리로부터 GPI를 획득함으로써 행해질 수 있다. GPT 워크를 수행하기 위한 방법은 도 13과 관련하여 아래에서 추가로 설명된다.
일단 타깃 PA에 대응하는 GPI가 획득되었으면, 단계(174)에서, 필터링 회로부(20)는 출력 PAS가 타깃 PA와 연관된 GPI에 의해 허용된 PAS로서 표시되는지를 결정한다. 출력 PAS가 타깃 PA에 대한 GPI에 의해 허용된 PAS로서 표시되지 않는 경우, 단계(178)에서, 메모리 액세스 요청은 차단되고 결함이 시그널링된다. 시그널링된 결함은, 결함이 EL3에서의 루트 도메인에서 실행되는 프로그램 코드에 의해 처리될 것임을 식별하는 결함 유형과 연관될 수 있고, 결함을 야기한 메모리 액세스 요청에 의해 액세스되고 있었던 타깃 PA를 식별하는 것과 같은 결함의 원인을 나타내는 결함 신드롬/상태 정보와 연관될 수 있다. 한편, 메모리 액세스 요청에 대한 출력 PAS가 GPI에 의해 허용된 PAS로서 표시되는 경우, 단계(176)에서, 메모리 액세스 요청은 캐시(들)(24) 또는 상호접속부(8)로 전달되도록 허용되어, 메모리 액세스 요청이 기본 메모리 시스템에 의해 서비스될 수 있게 한다. 메모리 액세스 요청은 메모리 액세스 요청과 연관된 PAS 및 타깃 PA의 표시와 함께 캐시(24) 및/또는 상호접속부(8)로 전달된다. 따라서, 필터링 회로부(20)는, 도 4 및 도 5와 관련하여 위에서 나타낸 바와 같이 물리적 어드레스 공간 격리 및 파티셔닝을 시행하기 위해, 메모리 액세스 요청에 대한 타깃 PA가 그 요청에 대해 선택된 물리적 어드레스 공간의 일부로서 액세스되도록 허용되는지를 감시할 수 있다.
GPT 워크 회로부(23)에 의해 액세스되는 입상 보호 테이블은 각각의 레벨이 다음 레벨에서의 테이블의 시작부에 대한 포인터를 저장하는 다수의 레벨들을 갖는 도 8에 도시된 바와 같은 테이블 구조를 사용할 수 있으며, 여기서, 전체 테이블은 입력 어드레스 내의 정적 위치들로부터 오프셋들을 추출함으로써 트레버싱되고, 여기서, 이들 위치들은 입상 크기에 의해 정의되고, 네스팅된 테이블들의 레벨들의 최대 수는 고정된다. 보호 테이블들을 관리하기 위한 전형적인 방법은 "분기 테이블들"(마지막 레벨에 있지 않은 테이블) 또는 "리프 테이블들"(마지막 레벨에 있는 테이블)을 유지하는 데 사용될 수 있는 최대 메모리가 단일 페이지와 같은 일정한 크기의 것이라는 제약에 기초하는 그러한 네스팅된 구조를 사용하는 것이다.
그러나, GMPU(20)가 신뢰 루트(root of trust)에 의해 관리되기 때문에, 그것은 활용하기에 메모리 선형성을 더 갖는 카브아웃(carveout)에 상주할 수 있다. 이러한 특성을 활용하고 페이지 테이블의 각각의 "서브트리"에서의 상이한 수의 레벨들을 조합할 수 있는 페이지 테이블을 생성할 수 있게 하는 새로운 테이블 포맷이 제안된다. 따라서, 아래에서 설명되는 예들은 물리적 페이지 입도에서 보호 정보를 효율적으로 저장하기 위한 방법을 제공한다. 이것은 새로운 형태의 역전된 페이지 테이블을 통해 달성된다. 그것의 기본 형태에서, 역전된 페이지 테이블은 물리적 페이지(또는 "물리적 입상")의 어드레스에 의해 인덱싱되고 그 페이지와 연관된 정보를 저장한다. 여기에 소개된 입상 보호 테이블 포맷은 선형 범위들 및 국소화된 파라미터들을 활용함으로써, 하기의 파라미터들 사이의 트레이드오프 공간을 더 허용하는 구조를 갖는다: 테이블에 의해 커버되는 어드레스 범위, 테이블을 트레버싱하는 데 요구되는 룩업들의 최대 수, 및 지불해야 하는 정적 비용(테이블 크기). 사용된 관찰은, 가능한 가장 빠른 액세스를 요구하는 물리적 어드레스 공간을 갖는 위치들이 있는 반면, 다른 위치들은 더 느슨한 성능 요구사항들을 가질 수 있으며, 이에 따라, 테이블 영역을 절약할 기회를 제시할 수 있다는 것이다. 이것은 오프셋들이 테이블 자체 내의 엔트리들로부터 추출된 파라미터들에 기초하여 계산된 크기들/포지션들을 갖게 함으로써 달성된다.
GPT에 "하이브리드 네스팅"을 적용함으로써, 테이블의 제1 레벨에서의 각각의 엔트리는 상이한 최대 수의 룩업들을 갖는 "서브트리"에 걸쳐 있을 수 있다. 이것은 네스팅 레벨(Nesting Level, NL)로 지칭된다:
· 마지막 레벨이 아닌 임의의 레벨에서의 테이블의 크기는 {NL, 레벨}마다 특정한 한 세트의 상수들로 정의된다.
· 서브트리의 마지막 레벨에서의 테이블의 크기는 모든 이전 레벨들을 고려한 후에 커버되어야 하는 나머지 범위에 기초하여 계산된다.
· 테이블 구조의 주어진 레벨에서의 테이블로 인덱싱하는 데 사용되는 오프셋의 크기/포지션은 NL 및 그 테이블의 레벨에 의존한다.
따라서, 각각의 레벨에서의 테이블의 크기가 반드시 (최신 기술에서의 공통 관행과 같은) 고정된 크기는 아니고 네스팅된 페이지 테이블 내의 각각의 "서브트리"에서의 레벨들의 최대 수가 반드시 전역 상수는 아닌, 효율적인 네스팅된 페이지 테이블 포맷이 제시된다.
입상 보호 테이블은 시스템의 어드레스 공간 내의 물리적 페이지들의 허가 특성들을 나타낸다. 시스템 어드레스 공간 내의 모든 어드레스 범위들이 보호를 요구하는 페이지들을 포함하는 것은 아니기 때문에, 테이블의 기본 구조는 제1 레벨(L0GPT) 내의 엔트리가 메모리 블록의 특성을 설명하거나 제2 레벨(L1GPT)에서의 테이블에 대한 포인터를 포함하는 2 레벨 테이블일 수 있다. 그러나, 그러한 구조는 빠르게 트레버싱하고 큰 선형 메모리를 사용하는 "고밀도 서브트리들" 및 트레버싱하는 데 더 오래 걸리지만 적당한 메모리 할당 요구사항들을 갖는 "희박한 서브트리들"을 갖도록 추가로 개발될 수 있다.
도 11은 GPT 엔트리에 대한 포맷의 예를 예시한다. GPT 엔트리들은 다음 레벨에서의 GPT 엔트리를 가리키는 테이블 기술자 엔트리들(180), 또는 대응하는 입상 또는 물리적 어드레스들에 대한 보호 특성들을 특정하는 입상 보호 정보(GPI)를 제공하는 블록 기술자 엔트리들(200) 중 어느 하나일 수 있다. 도 11에 도시된 바와 같이, 블록 기술자 GPT 엔트리들(200)은 다수의 GPI 필드들(194)을 포함하며, 각각은 물리적 어드레스들의 대응하는 입상과 연관된 정보를 제공한다. 단지 몇 개의 비트만이 페이지와 연관된 허가들을 정의하기 위해 필요하므로, 단일의 블록 기술자 테이블 엔트리(200)는 다수의 입상들의 GPI 특성들을 포함할 수 있다. 예로서, 보호 테이블의 마지막 레벨 내의 블록 기술자 엔트리(200)는 크기가 8 바이트일 수 있고, 각각의 필드(입상 보호 정보 또는 GPI)(194)가 단일의 물리적 입상의 보호 특성들을 특정하는 16개의 4 비트 필드들(194)을 수용할 수 있다.
예를 들어, GPI가 나타내는 보호 특성은 다음과 같을 수 있다:
· 입상이 연관된 물리적 어드레스 공간(PAS)(그 PAS를 허용된 PAS로서 식별하고 다른 모든 PAS들을 허용되지 않은 PAS들로서 식별함).
· 입상이 어떤 PAS와도 연관되지 않음(그리고 이에 따라 액세스되지 않을 수 있음 - 즉, PAS들 중 어느 것도 허용된 PAS들이 아님)을 특정하는 인코딩.
· 입상이 임의의 PAS와 연관될 수 있음, 즉, 모든 PAS들이 허용된 PAS들임을 특정하는 인코딩.
· 전술한 바와 같은 제약적 공유를 지원하는 예들에서, 다른 인코딩들은 2개 이상의 PAS들의 서브세트가 허용된 PAS들이지만 적어도 하나의 다른 PAS는 허용되지 않은 PAS임을 식별할 수 있음.
GPI 필드(194)의 특정 인코딩이 각각의 상이한 보호 특성을 식별하는 맵핑은 특정 명령어 세트 아키텍처에 대해 임의로 선택될 수 있다. 예를 들어, 상이한 4 비트 인코딩들 0000, 0001, 0010 등이 위의 목록으로부터 선택된 상이한 특성들에 할당될 수 있다.
따라서, 각각의 GPI 필드(194)는 물리적 어드레스들의 대응하는 입상과 연관된 0개, 1개 또는 그 이상의 허용된 물리적 어드레스 공간들을 식별하는 정보를 제공한다. 또한, GPI 인코딩들이 다른 정보를 나타내도록 할당될 수 있으며, 이에 따라, 각각의 GPI 필드가 반드시 도 11의 특정 예에서와 같이 4 비트일 필요는 없다. GPI 필드의 모든 인코딩들이 유효할 수 있는 것은 아니다. 또한, 미래의 확장을 위해 예약되거나 또는 필요하다고 고려되는 GPI에 대한 옵션들 모두를 인코딩한 후에 남는 일부 무효한 인코딩들이 있을 수 있다. 다른 무효한 인코딩들이, 아래에서 추가로 설명되는 인접성 표시자(300)와 같은, GPI 속성을 위한 유효한 옵션 이외의 다른 정보를 표현하는 데 사용될 수 있다.
테이블 기술자 GPT 엔트리(180)는 네스팅 레벨(NL) 파라미터(190), 테이블 구조의 다음 레벨에서의 입상 보호 테이블의 시작을 마킹하는 어드레스를 제공하는 다음 레벨 테이블 포인터(193) 및 블록 기술자 엔트리(200)로부터 테이블 기술자 엔트리(180)를 구별하는 유형 식별자 필드(196)를 포함하는 다수의 정보를 포함한다. 테이블 기술자 엔트리(180) 내의 유형 ID 필드(196)가, 테이블 기술자 엔트리(180) 내의 유형 ID 필드(196)를 인코딩하는 데 사용되는, 블록 기술자 엔트리의 대응하는 부분에 대해 GPI 필드들이 설정될 때 임의의 유효한 GPI 인코딩에 대해 발생하지 않는 값을 갖도록 선택될 수 있기 때문에, 블록 기술자 엔트리(200)는 자체적으로 유형 ID 필드(196)를 가질 필요가 없다는 것에 유의한다. 예를 들어, 테이블 기술자 엔트리(180) 내의 유형 ID 필드(196)는 블록 기술자 엔트리 내의 GPT 필드들(194) 중 특정한 하나의 GPT 필드의 포지션에 기록되고, 그 GPT 필드(194)에 대한 무효한 인코딩들 중 하나의 무효한 인코딩으로 설정될 수 있다. 이것은 명시적인 유형 ID 필드에 대한 필요성을 없앰으로써 블록 기술자 엔트리(200)의 인코딩 공간의 더 효율적인 사용을 허용한다.
선택적으로, 테이블 기술자 엔트리(180)는 또한, 속성들이 테이블 구조의 기본 서브트리에 의해 표현되는, 어드레스 영역과 연관된 다른 정보를 제공할 수 있는 하나 이상의 속성들(192)을 특정할 수 있다. 도 11에 예시되지 않았지만, 각각의 GPE들(180, 200)은 또한 특정되지 않은 정보를 포함할 수 있다는 것이 이해될 것이다. 또한, 도 11에 도시된 필드들(190, 192, 193, 196)의 특정 순서는 단지 일례일 뿐이고, 다른 예들은 상이한 순서의 필드들을 가질 수 있다.
가변 네스팅 레벨 파라미터(190)(NL)는 GPT 테이블 구조 내의 다수의 레벨들의 테이블들의 네스팅과 연관된 다수의 태양들을 제어한다. 특히, 시작 레벨 입상 보호 테이블(예를 들어, 페이지 테이블 워크를 위한 도 8에 도시된 L0 기준 어드레스(151)에 기초하여 액세스되는 L0 테이블(150)과 유사한, 저장된 GPT 기준 어드레스에 기초하여 액세스되는 L0 입상 보호 테이블) 내의 특정 어드레스에 대해 액세스되는 테이블 기술자 엔트리(180)에 특정된 NL을 바꿈으로써, GPT 워크 회로부(23)는 다중 레벨 GPT 구조 내의 각각의 레벨들의 테이블로 인덱싱하는 데 사용되는 타깃 물리적 어드레스의 각각의 오프셋 부분들의 크기 및 포지션을 바꾼다. NL 파라미터(190)는 또한, 주어진 물리적 어드레스에 대한 블록 기술자 엔트리(200)에 도달하기 위해 트레버싱되는 레벨들의 최대 수, 테이블 구조의 주어진 레벨에서의 테이블과 연관된 테이블 크기(메모리 풋프린트), 및 주어진 엔트리에서의 주어진 테이블 엔트리 내의 정보가 적용가능한 어드레스 범위의 크기를 나타내는 "엔트리당 크기"를 제어한다.
이러한 예에서, 테이블 구조의 시작 레벨 이외의 레벨에서 액세스되는 임의의 테이블 기술자들에 대한 NL 필드(190)는 무시되며, 이에 따라, 테이블 구조의 시작 레벨 내의 NL 파라미터(190)가 그 시작 레벨 테이블 기술자 엔트리(180) 아래의 대응하는 서브트리 내의 모든 테이블들이 액세스되는 방식을 제어하게 된다.
이러한 예에서, 하기의 전역 파라미터들이 테이블에 대해 특정된다:
· PGS[1:0] - 물리적 입상 크기(예를 들어, PGS=0이 4 KB의 입상 크기를 나타내고, 1의 PGS가 16 KB의 입상 크기를 나타내고, PGS=2가 64 KB의 입상 크기를 나타내도록 인코딩됨)
· SL[1:0] - 시작 레벨(0 - 레벨0, 1 - 레벨1, 2 - 레벨2, 3 - 레벨3). 시작 레벨은 4 레벨만큼 깊을 수 있는 테이블들에 대해서는 레벨 0이고, 3 레벨들만큼 깊을 수 있는 테이블들에 대해서는 레벨1이고, 등등임.
· SLBS [5:0] - 시작 레벨 블록 크기(Start Level Block Size) - 시작 레벨의 엔트리에 의해 나타내지는 블록 크기의 지수(블록 크기(Block Size, BS) = 2^SLBS).
· TSZ[5:0], 테이블에 의해 나타내지는 메모리의 총 크기의 지수(총 크기 = 2^TSZ)
시작 레벨에서의 각각의 엔트리에 대해, 하기의 파라미터들이 특정됨:
· 엔트리 유형(196)(블록/기술자)
· 네스팅 레벨(NL)(190) - 네스팅 레벨은 서브트리를 구성하는 레벨들의 최대 수를 정의함(1 = 2개의 레벨들, 2 = 3개의 레벨들 등). NL은 입력 어드레스의 어느 비트들이 다음 레벨에서의 테이블에 액세스하기 위한 오프셋으로서 사용될지를 정의함.
테이블 크기들은 하기와 같이 정의됨:
마지막 레벨이 아닌 임의의 다른 레벨에서의 테이블의 크기는 {NL, 레벨}마다 정의되는 상수이며, 여기서, NL은 그 다른 레벨에서의 테이블에 도달하기 위해 트리 구조에 걸쳐 트레버싱하는 경로 상에서 액세스되는 시작 레벨 테이블 엔트리로부터 획득됨.
하이브리드 테이블 내에서 각각의 서브트리를 트레버싱하기 위해 사용되는 오프셋들을 계산하는 데 NL이 사용될 수 있는 방법에 대한 예가 아래에 나타나 있다. 예는 하기의 원리들에 기초한다(명백하게 이들은 다른 예들에 대해 바뀔 수 있음):
· 테이블 엔트리 크기(Table entry size, TES)는 8 바이트임
· 입상 크기(GS)는 2^(12+PGS)임
· 마지막 레벨 내의 테이블의 엔트리는 16개의 GPI 필드들을 가지며, 여기서, 각각의 GPI는 단일 입상의 특성들을 나타냄. GPI 크기(GPI Size, GPIS)는 4비트임.
· 시작 레벨에서의 테이블 내의 엔트리는 2^SLBS의 크기의 블록 크기(BS)를 나타내며, 이에 따라, 테이블 자체는 (2^TSZ/BS)*TES의 테이블 크기를 가짐.
· StartLevel.NestingLevel이 2개의 레벨들로 구성된 서브트리를 나타내는 경우, 제2 레벨에서의 테이블은 (BS/GS)*GPIS의 테이블 크기를 가짐
· StartLevel.NestingLevel이 3개의 레벨들로 구성된 서브트리를 나타내는 경우,
o 제2 레벨에서의 테이블은 GS의 테이블 크기를 가짐
o 제3 레벨에서의 테이블은 ((BS/(GS/TES))/GS)*GPIS의 테이블 크기를 가짐
· StartLevel.NestingLevel이 4개의 레벨들로 구성된 서브트리를 나타내는 경우,
o 제2 레벨에서의 테이블은 GS의 테이블 크기를 가짐
o 제3 레벨에서의 테이블은 GS의 테이블 크기를 가짐
o 제4 레벨에서의 테이블은 ((BS/(GS/TES)/(GS/TES))/GS)*GPIS의 테이블 크기를 가짐
오프셋들은 하기와 같이 NL 파라미터 및 전역 파라미터들로부터 도출될 수 있다(여기서 SL은 테이블의 시작 레벨을 지칭하고, SL.NL은 타깃 어드레스의 시작 레벨 오프셋 부분에 기초하여 선택되었던 시작 레벨 테이블의 엔트리에 의해 특정된 NL 파라미터를 지칭함):
SL.NL = 1인 경우, 테이블들의 최대 수가 시작 레벨을 포함하여 2이므로, 레벨 SL+2 또는 SL+3에서 테이블들에 대한 액세스가 없을 수 있다는 것에 유의한다. 유사하게, SL.NL = 2인 경우, 레벨 SL+3에서 테이블들에 대한 액세스가 없을 수 있다. 따라서, 레벨 SL+3에서의 테이블은 SL.NL = 3인 경우에만 액세스될 수 있다. 또한, SL+1에서의 테이블들의 경우, 테이블은 SL.NL = 2 또는 3인 경우보다 SL.NL = 1일 때 더 큰 크기를 가질 것이다(그리고 더 큰 오프셋 부분에 기초하여 인덱싱됨). 유사하게, SL+2에서의 테이블들의 경우, 테이블은 SL.NL = 3인 경우보다 SL.NL = 2일 때 더 큰 크기를 가질 것이다(그리고 더 큰 오프셋 부분에 기초하여 인덱싱됨).
또한, 이러한 예에서, 최종 레벨 테이블에 대한 더 낮은 비트는 (12+PGS*2가 아니라) 비트 12+PGS*2+4인데, 그 이유는, 도 11의 예에서, 물리적 어드레스들의 16개의 각각의 입상들에 대한 16개의 GPI 엔트리들이 단일 블록 기술자 엔트리로 패킹되며, 이에 따라, 타깃 PA의 비트들 15:12가 블록 기술자 엔트리의 어느 특정 GPI가 타깃 PA에 대응하는지를 선택하는 데 사용될 것이므로, 따라서, 테이블 엔트리를 선택하기 위한 오프셋 비트들로서 필요로 되지 않기 때문이라는 것에 유의한다.
특정 예로서, PGS=0(4 kB 입상들), SL = 0, SLBS = 39(512 GB의 시작 레벨 블록 크기), 및 TSZ = 48에 대해:
전술한 전역 파라미터들 PGS, SL, SLBS, TSZ를 바꾸기 위한 유연성을 제공하는 것은 선택적인 것이며, 이에 따라, 이러한 파라미터들 중 임의의 것은 주어진 구현예에 대해 고정될 수 있다는 것이 이해될 것이다. 전역 파라미터들 PGS, SL, SLBS 또는 TSZ는 실행 시간에 소프트웨어에 의해 가변적일, 선택가능할 필요는 없다. 대안적으로, 다른 접근법들이 이러한 전역 파라미터들에 대한 가변적인 정의들을 지원할 수 있다. 전역 파라미터들이 가변적인지 또는 고정되는지에 관계없이, GPT 구조의 시작 레벨에서의 엔트리에 가변 네스팅 레벨 NL을 정의함으로써, 이것은 주어진 타깃 어드레스에 대한 GPI의 위치를 알아내는 것의 성능과 타깃 어드레스들의 그 입상을 보호하기 위해 테이블 데이터를 위해 할당될 필요가 있는 메모리 내의 어드레스들의 범위의 크기 사이의 트레이드오프를 가능하게 한다.
도 12는 가변 네스팅이 L0 테이블 기술자 엔트리들 내의 NL 파라미터(190)에 의해 제어되는, GPT 레이아웃의 특정 예를 도시한다. 이러한 예에서, 동적 랜덤 액세스 메모리(DRAM)를 위해 할당된 PA 공간의 영역에 대해, 영역은 프로세서에 의해 빠르게 액세스될 필요가 있을 수 있는 성능-임계 데이터를 저장할 가능성이 더 크며, 이에 따라, 그 영역 내의 주어진 물리적 어드레스에 대한 대응하는 GPI의 위치를 알아내기 위해 액세스될 필요가 있는 테이블의 레벨들의 최대 수를 줄이는 것이 바람직할 수 있다. 따라서, DRAM 영역 내의 물리적 어드레스들에 대응하는 L0 GPT 엔트리들은 NL=1로 설정되며, 이에 따라, 그들은 하나 이상의 더 큰 L1 테이블들을 가리키고, 이들은 함께, DRAM 영역에 걸쳐 있는 4 kB 입도의 GPI 필드들을 포함하기에 충분한 크기의 것이다. 예를 들어, 이것은 각각이 223개의 L1 테이블 엔트리들을 포함하는 다수의 64 MB 테이블들일 수 있으며, 각각의 L1 테이블 엔트리는 각각의 4 kB 입상들에 대해 16개의 GPI들을 제공한다. 테이블 레벨들의 감소된 수(통상적인 4 대신 2)는 각각의 개별적인 L1 테이블에 대해 더 큰 크기(4 kB보다는 64 Mb)의 인접 메모리 블록을 할당해야 하는 것을 대가로 얻는다는 것에 유의한다.
대조적으로, 메모리 맵핑된 입력/출력(memory mapped input/output, MMIO) 디바이스들에 맵핑된 물리적 어드레스 공간의 영역에 대해, 맵핑들을 정의하기 위해 필요한 단지 몇 개의 4K 입상들만이 있을 수 있고, 성능은 이들 영역들에서의 그러한 액세스들에 대해 중요하지 않을 수 있다. 그러한 영역에 대해, 64 MB L1 테이블을 할당하는 것은, 그 테이블 내의 단지 몇 개의 엔트리들만이 유효한 GPI를 포함할 것으로 예상될 때, 메모리 공간의 낭비로 간주될 수 있다. 따라서, MMIO 영역 내의 어드레스들에 대응하는 L0 테이블 기술자 엔트리에 NL=3을 설정함으로써, MMIO 영역에 대한 서브트리는, 4 kB 크기의 테이블을 각각 갖는 4개의 레벨들의 페이지 테이블들을 제공함으로써 메모리에 더 효율적으로 구현될 수 있으며, 이에 따라, 4 kB의 특정 입상에 액세스하기 위해 레벨들 1 내지 3에서의 엔트리들의 체인을 제공하는 서브트리가 DRAM 영역에서와 같이 64 MB의 데이터 대신 12 kB의 테이블 데이터를 포함하게 된다. 더 메모리 효율적인 서브트리가 DRAM 영역에 대한 서브트리보다 액세스하는 데 더 느리지만, 이것은 성능이 중요하지 않을 수 있는 MMIO 영역에 대해서는 문제가 아니다.
물론, 도 12는, DRAM 및 MMIO 영역들이 동일한 테이블 구조의 상이한 서브트리들에서 메모리 풋프린트에 대해 성능을 트레이드오프하는 일례를 도시하지만, 사용자들은 동일한 테이블 내에서 다양한 레벨들의 네스팅을 활용하는 것에 대한 많은 다른 사용 사례들을 발견할 수 있다. 예를 들어, 일부 레벨 0 테이블 엔트리들은 레벨들의 최대 수가 3임을 나타내기 위해 2의 네스팅 레벨을 특정할 수 있지만, 이것은 도 12의 예에는 도시되지 않는다.
NL이 물리적 어드레스들의 대응하는 입상에 대한 GPI를 찾는 데 필요한 테이블의 레벨들의 최대 수를 나타내더라도, 이것은, 블록 기술자 엔트리(200)가 더 큰 메모리 블록에 대한 통일된 속성들을 정의하기 위해 테이블 구조의 더 이전 레벨에 여전히 정의될 수 있다는 가능성을 배제하지 않는다는 것에 유의한다. 따라서, 가변 파라미터 NL은 NL 파라미터(190)를 특정하는 L0 테이블 기술자 엔트리(180) 아래의 구조의 특정 서브트리에 대해 트레버싱될 테이블의 레벨들의 최대 수를 정의하지만, 이것은, 그 최대 수까지의 레벨들 각각에 대해 액세스들이 반드시 있을 필요가 있다는 것을 암시하는 것은 아니며, 테이블 구조의 워크가 더 이전 레벨에서 블록 기술자 엔트리(200)를 만날 수 있을 가능성이 있다.
도 8의 페이지 테이블 구조에서, 블록 기술자 엔트리에 도달하기 위해 구조에 걸쳐 트레버싱할 필요가 있는 단계들의 수를 감소시키도록 테이블의 최종 레벨 이외의 레벨에 블록 기술자 엔트리(200)를 정의함으로써, 블록 기술자 엔트리에 도달하기 위한 테이블 레벨들의 수를 감소시키는 것이 또한 가능하지만, 이러한 접근법은 모두가 동일한 GPI 특성들을 공유할 필요가 있는 더 큰 크기의 물리적 어드레스 영역이 존재하는 경우에만 적합하다. 이것은, 페이지 테이블들에 대한 도 8에 도시된 접근법과 유사한 고정된 크기의 오프셋들을 갖는 종래의 다중 레벨 테이블 구조 내에서는, 4 kB 입상 크기 예에 대하여, 레벨 1에서의 주어진 엔트리가, 예컨대, L1I 오프셋 비트들 38:30을 사용하여 인덱싱될 것이므로, 각각의 L1 엔트리는 1 GB 크기의 어드레스 범위에 적용가능하고, 이에 따라, 그러한 L1I 오프셋 비트들 38:30에 대한 동일한 값을 공유하는 모든 어드레스들은, 그들이 레벨 1에 정의된 단일의 블록 기술자 엔트리를 공유하기 위한 것일 경우, 동일한 액세스 제어 속성들을 가질 필요가 있을 것이기 때문이다.
대조적으로, 도 12에 도시된 접근법을 이용하면, 레벨 1 테이블이 물리적 어드레스 공간의 DRAM 영역에 대해 인덱싱될 때, NL = 1이면, 이러한 인덱싱은 레벨 0 테이블을 인덱싱하기 위해 아직 사용되지 않은 모든 나머지 오프셋 비트들을 커버하는, (상기 특정 예에 대하여) 비트들 38:16을 포함하는 더 큰 오프셋 부분에 기초한다. 이는, 각각의 엔트리가 더 작은 크기(64 kB, 16개의 4 kB 입상들에 대한 개별적인 GPI 필드들을 제공함)의 개별적인 어드레스 블록에 대응하며, 이에 따라, 단지 2개의 레벨들의 테이블만이 제공되더라도, 도 8과 관련하여 위에서 논의된 고정 오프셋 정의로 인덱싱되는 L1 블록 기술자 엔트리를 사용하여 가능한 것보다 더 미세한 제어가 보호 속성들에 대해 달성될 수 있다는 것을 의미한다.
도 13은 메모리로부터 주어진 타깃 PA에 대한 GPI를 획득하기 위해 GPT 워크를 수행하는 방법을 예시하는 흐름도이다. GPT 워크는 도 10의 단계(172)의 일부로서 수행될 수 있다. 입상 보호 정보 캐시(22)(또는 조합된 TLB/입상 보호 정보 캐시(22))를 갖는 구현예들의 경우, 도 13의 방법은, 메모리 액세스 요청이 입상 보호 정보 캐시(22)에서 누락될 때 수행될 수 있다. 입상 보호 데이터의 캐싱을 지원하지 않는 구현예들의 경우, 방법은 각각의 메모리 액세스에 대해 수행될 수 있다. 도 13의 GPT 워크 방법은 GPT 워크 회로부(23)에 의해 수행된다.
단계(240)에서, 타깃 PA 내의 시작 레벨(SL) 오프셋 부분의 크기 및 포지션이 전술한 시작 레벨 블록 크기(SLBS) 및 총 메모리 크기(TSZ)에 기초하여 결정된다. 시작 레벨 블록 크기 및 총 메모리 크기 둘 모두가 고정된 구현예들에서는, 시작 레벨 오프셋 크기 및 포지션이 고정된 크기 및 포지션으로 하드와이어링(hardwiring)될 수 있기 때문에, 단계(240)는 생략될 수 있다. 그러나, SLBS, TSZ 중 하나 또는 둘 모두가 가변적인 경우들에서는, 위에 나타낸 바와 같은 PA[TSZ-1:SLBS]에 따라, 시작 레벨에 대한 오프셋을 결정하기 위해 SLBS, TSZ 중 하나 또는 둘 모두를 정의하는 제어 파라미터들을 사용하는 일부 회로부가 있을 수 있다.
단계(242)에서, GPT 워크 회로부(23)는 GPT 기준 어드레스 레지스터에 저장된 SL 기준 어드레스에 (단계(240)에서 결정된 크기 및 포지션을 갖는) PA의 SL 오프셋 부분의 배수를 더함으로써 결정된 어드레스를 판독하여, 타깃 PA에 대응하는 시작 레벨 GPT 엔트리를 획득한다. 일단 시작 레벨 GPT 엔트리가 메모리로부터 반환되면, 단계(244)에서, GPT 워크 회로부(23)는 시작 레벨 GPT 엔트리가 블록 기술자인지 또는 테이블 기술자인지를 결정한다(유형 ID 필드(196)가 테이블 기술자 엔트리(180)를 나타내는 값을 갖는 경우, 엔트리는 테이블 기술자 엔트리(180)이고, 그렇지 않으면, 엔트리는 블록 기술자 엔트리(200)임). 시작 레벨 GPT 엔트리가 블록 기술자 엔트리(200)인 경우, 단계(246)에서, 타깃 PA에 대한 GPI가 타깃 PA에 대응하는 포지션에 있는 GPI 필드(194)로부터 추출되고(예를 들어, 타깃 PA의 일부 비트들 PA[15:12]는 사용할 GPI 필드를 선택하는 데 사용될 수 있음), 추출된 GPI는 메모리 액세스 요청이 도 10의 단계(174)에서 설명된 바와 같이 허용되는지에 대한 체크를 수행하기 위해 PAS 필터링 회로부(20)로 반환된다.
시작 레벨 GPT 엔트리가 테이블 기술자인 경우, 단계(248)에서, 가변 네스팅 제어 파라미터 NL(190) 및 다음 레벨 테이블 포인터(193)가 단계(242)에서 획득된 시작 레벨 GPT 엔트리로부터 추출된다. 단계(250)에서, 도 13의 후속 단계들을 위해, 테이블 구조의 다음 레벨은 "현재 레벨"이 된다. 따라서, 단계(248) 이후에 단계(250)에 도달하는 경우, 다음 레벨은 시작 레벨 뒤의 하나의 레벨인 레벨, 예를 들어, 시작 레벨이 레벨 0인 도 12의 예에서, 레벨 1이 될 것이다. 결국 블록 기술자 엔트리(200)가 식별되고 트레버싱이 종료될 때까지, 트레버싱으로 도달되는 테이블 구조의 각각의 후속 레벨에 대해 수행되는 단계들(252 내지 260)에 걸친 루프가 시작된다.
단계(252)에서, GPT의 현재 레벨로 인덱싱하는 데 사용되는 현재 레벨 오프셋 부분의 크기 및 포지션은 가변 네스팅 제어 파라미터 NL(190) 및 현재 레벨에 기초하여 결정된다. 이는 각각의 레벨들 SL+1, SL+2 및 SL+3에 대해 상기의 테이블에 나타낸 오프셋 방정식들에 따라 행해진다. 따라서, 주어진 레벨에 대한 오프셋 부분의 크기 및 조건은 테이블의 더 이전 레벨에 특정된 가변 네스팅 제어 파라미터들에 따라 바뀌고, 어떤 물리적 어드레스가 액세스되고 있는지에 따라 상이한 서브트리들에 대해 상이할 수 있다.
단계(254)에서, 현재 레벨 GPT 엔트리는 테이블의 이전 레벨로부터 판독된 포인터(193)와 단계(252)에서 결정된 타깃 물리적 어드레스의 현재 레벨 오프셋 부분의 배수(배수는 하나의 GPT 엔트리의 크기에 기초함)를 더함으로써 결정된 어드레스에 따라 메모리로부터 판독된다. 단계(256)에서, 현재 레벨 GPT 엔트리가 메모리 시스템으로부터 반환되었을 때, GPT 워크 회로부는 현재 레벨 GPT 엔트리가 블록 기술자 엔트리(200)인지 또는 테이블 기술자 엔트리(180)인지를 결정한다. 다시, 그것이 블록 기술자 엔트리인 경우, 단계(258)에서, 타깃 PA에 대한 GPI는 단계(246)에서와 동일하게 반환된다. 그러나, 현재 레벨 GPT 엔트리가 테이블 기술자 엔트리(180)인 경우, 단계(260)에서, 다음 레벨 포인터(193)가 현재 레벨 GPT 엔트리로부터 획득되고, 방법은 단계(250)로 복귀하여 테이블 구조의 다음 레벨로 진행하고, 테이블 구조의 다음 레벨에 대해 단계들(252 내지 256)이 다시 반복된다. 방법은 결국 블록 기술자 엔트리(200)가 식별될 때까지 계속되고, 방법은 단계(258)에서 종료된다.
도 13에 도시되지 않았지만, GPT 워크 회로부(23)는 무효하게 인코딩된 GPT 엔트리들, 또는 테이블의 레벨 3에 도달했는데, 레벨 3 테이블의 인덱싱된 포지션으로부터 판독된 엔트리가 여전히 블록 기술자 엔트리가 아닌 경우와 같은, GPT 워크 내의 에러들을 식별하기 위한 회로부를 또한 가질 수 있다. 임의의 그러한 에러들이 식별되는 경우, 결함이 EL3에서의 루트 도메인 코드에 의해 처리되도록 시그널링될 수 있다.
도 14는, 캐시의 커버리지를 증가시키고 이에 따라 캐시 히트 레이트들을 그리고 그에 따라 성능을 증가시키기 위해, 2개 이상의 상이한 GPT 엔트리들(200)에 의해 표현되는 물리적 어드레스들의 모든 입상들에 대한 GPI 정보가 입상 보호 정보 캐시(22)에 단일 엔트리로서 캐싱될 수 있도록, 인접 표시자(300)를 특정함으로써 다수의 GPT 엔트리들이 함께 그룹화될 수 있는 방법을 도시한다. 도 14의 예에서, 인접 엔트리로서 함께 그룹화되지 않은 입상들에 대한 블록 기술자 엔트리들(200)은 도 11에 도시된 것과 동일한 포맷을 갖는다. 그러나, 블록 기술자 엔트리의 최하위 비트들 [3:0]에서의 GPI 필드는, 64 비트 엔트리를 사용하는, 그 엔트리에 맵핑되는 모든 입상들에 공통인 특성을 제공하기 위해 통일된 엔트리들을 특정하기 위한 특별한 인코딩 값들을 가질 수 있는 "피벗(pivot)" GPI로서 기능한다. 통일된 인접 엔트리의 포맷은 도 14의 하부 부분에 도시되어 있으며, 여기서, 피벗 GPI 포지션에 있고 다른 GPI들에 대해서는 이와 달리 무효할 인코딩을 갖는 인접성 표시자(300) 이외에, 인접 GPT 블록 기술자 포맷은 또한, 인접 엔트리에 대한 인접성 크기 파라미터(202) 및 GPI 정보(304)를 특정한다.
인접성 표시(300)는 다수의 테이블 엔트리들을 모아서 큰 블록을 형성할 수 있게 한다. 크기 파라미터(302)는 엔트리가 일부인 물리적 어드레스들의 인접 블록의 크기를 특정한다. 인접 블록에 대한 GPI 보호 속성들은 블록 기술자 엔트리(200)의 나머지 비트들(304)에 특정된다.
예를 들어, 상기 작업 예에서, 최대 허가 테이블 레벨(NL=1에 대해서는 L1, NL=2에 대해서는 L2, 또는 NL=3에 대해서는 L3)에서의 블록 기술자 엔트리는 일반적으로 64 KB의 물리적 어드레스 공간에 대한 속성들을 특정할 것이다. 그러나, 인접성 표시자가 설정되면, 이러한 64 KB 블록은 단일 세트의 GPI 속성들을 갖는 512 MB 인접 블록의 일부인 것으로 정의될 수 있다. 따라서, 512 MB 인접 블록에 대한 모두 8192개의 개별적인 블록 기술자 엔트리들은 인접성 엔트리(300)를 특정하도록 설정된 그들의 GPT 엔트리들을 메모리 내에 가질 수 있으며, 인접성 크기 파라미터(302)는 512 MB의 크기 및 GPI 필드(304) 내의 동일한 GPI 정보를 식별한다. 이는, 그 512 MB 내의 어떤 어드레스가 먼저 액세스되든지, 대응하는 GPT 엔트리가 캐싱될 수 있고, 입상 보호 정보 캐시(22)의 캐시 룩업 메커니즘은, 입상 보호 정보 캐시(22) 내의 단지 단일 캐시 엔트리만이 점유되어 있더라도, 512 MB 내의 임의의 어드레스가 액세스될 때, GPI 필드(304)로부터의 공유된 보호 속성들을 반환하기 위해, 그 512 MB 블록 내의 임의의 어드레스가 단일 캐싱된 엔트리에 대해 히트하는 것으로 고려되는 것을 보장할 수 있다는 것을 의미한다. 이는 다른 어드레스들에 대한 GPT 엔트리들을 캐싱하기 위한 많은 다른 캐시 엔트리들을 해제하여, 캐시 이용을 개선한다.
도 14의 예는 인접성 표시자(300)가 블록 기술자 테이블 엔트리(200) 내의 특정 GPI 필드(194)(예를 들어, 블록 기술자 테이블 엔트리의 최하위 비트들에 있는 GPI 필드)에 대해 무효한 인코딩을 사용하여 표시되는 접근법을 도시한다. 그러나, 이것이 필수는 아니며, 다른 접근법들은, 엔트리가 인접 블록의 일부인지 아닌지를 특정하기 위해 블록 기술자 테이블 엔트리(200) 내에 전용 필드를 제공할 수 있다. 따라서, 도 14에 도시된 방식으로 인접성 표시를 표현하는 것이 필수는 아니다.
도 11 내지 도 14는 시작 레벨 테이블 엔트리 내의 네스팅 레벨 파라미터 NL에 의해 제어되는 가변 네스팅 및 큰 블록에 대한 엔트리들이 서로 융합되게 하는 인접성 표시(300)를 포함하는 GPT 구조의 특성들을 예시한다. 이들은 GPT에 특히 유용하지만, 어드레스 변환 회로부(16)에 의해 사용되는 페이지 테이블 구조와 같은, 메모리에 대한 액세스를 제어하기 위한 다른 유형들의 액세스 제어 테이블에 또한 적용될 수 있다. 따라서, 도 11 내지 도 13에 도시된 기법들은, 어드레스 변환 맵핑들을 식별하기 위해 페이지 테이블 워크를 수행할 때, 페이지 테이블 워크 회로부(17)에 의해 또한 사용될 수 있다. 페이지 테이블 워크 회로부(17)는 오프셋 부분이 결정되고 있는 테이블보다 더 높은 레벨 액세스 제어 테이블에 정의된 가변 네스팅 제어 파라미터 NL에 따라 테이블 구조의 각각의 레벨들로 인덱싱하기 위해 가변적으로 정의된 오프셋 부분들을 사용할 수 있다. GPT가 물리적 어드레스에 의해 인덱싱되는 역전된 페이지 테이블이지만, 유사한 기법들이 또한, 특정 어드레스와 연관된 보호 정보에 도달하기 위해 요구되는 메모리에 대한 액세스들의 수에 대해 테이블 데이터 자체의 크기를 트레이드오프하도록, 가상 어드레스에 의해 인덱싱되는 비-역전된 페이지 테이블에도 사용될 수 있다.
도 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)(이 둘 모두는 메모리 관리 프로그램 로직(419)의 예들임)을 포함한다. 따라서, 어드레스 변환 프로그램 로직(414)은 타깃 코드(400)에 의해 특정된 가상 어드레스들을 PAS들 중 하나의 PAS 내의 시뮬레이션된 물리적 어드레스들(이는, 타깃 코드의 관점에서, 메모리 내의 물리적 위치들을 지칭함)로 변환시키지만, 실제로 이러한 시뮬레이션된 물리적 어드레스들은 어드레스 공간 맵핑 프로그램 로직(415)에 의해 호스트 프로세서의 (가상) 어드레스 공간 상에 맵핑된다. 필터링 프로그램 로직(416)은, 전술한 PAS 필터와 동일한 방식으로, 타깃 코드에 의해 트리거되는 메모리 액세스들을 진행하도록 허용할지 여부를 결정하기 위해 입상 보호 정보의 룩업을 수행한다.
테이블 액세싱 프로그램 로직(418)은 (어드레스 공간 맵핑 프로그램 로직(415)에 의해 호스트 프로세서의 가상 어드레스 공간으로 맵핑되는) 시뮬레이션된 메모리로부터의 페이지 테이블 엔트리들 및 GPT 엔트리들의 로딩을 제어하기 위해 페이지 테이블 워크 회로부(17) 및 GPT 워크 회로부(23)의 기능성을 에뮬레이팅한다. 그러나, 시뮬레이터의 경우, TLB(18) 및 입상 보호 정보 캐시(22)는 시뮬레이션되지 않을 수 있으므로, 시뮬레이터 실시예는 어떠한 TLB(18) 또는 GPI 캐시(22)도 갖지 않는 하드웨어 디바이스와 유사하게 거동할 것이다. 따라서, 각각의 메모리 액세스 요청은 그것이 캐시 내에서 누락되는 것처럼 취급될 것이며, 이에 따라, 페이지 테이블 워크 및/또는 GPT 워크가 각각의 메모리 액세스에 대해 요구될 수 있다. 하드웨어 실시예에서와 같이, 시뮬레이션된 실시예의 경우, 페이지 테이블 구조 및/또는 GPT 구조는, 오프셋 부분들의 크기/포지션이 더 높은 레벨 테이블 엔트리에 특정된 NL 파라미터(190)에 기초하여 선택되는 가변 네스팅으로 구현될 수 있다.
본 출원에서, "...하도록 구성된"이라는 말은 장치의 요소가 정의된 동작을 수행할 수 있는 구성을 갖는다는 것을 의미하는 데 사용된다. 이러한 문맥에서, "구성"은 하드웨어 또는 소프트웨어의 상호접속의 배열 또는 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 가질 수 있거나, 프로세서 또는 다른 프로세싱 디바이스가 기능을 수행하도록 프로그래밍될 수 있다. "하도록 구성된"은, 장치 요소가, 정의된 동작을 제공하기 위해 어떤 방식으로든 변경될 필요가 있음을 암시하지는 않는다.
본 발명의 예시적인 실시예들이 첨부 도면들을 참조하여 본 명세서에 상세히 설명되었지만, 본 발명은 그러한 정확한 실시예들로 제한되지 않는다는 것 그리고 첨부된 청구범위에 의해 정의되는 바와 같은 본 발명의 범주로부터 벗어나지 않으면서 당업자에 의해 다양한 변경들, 및 수정들이 이루어질 수 있다는 것이 이해될 것이다.
Claims (19)
- 장치로서,
복수의 레벨들의 액세스 제어 테이블을 포함하는 테이블 구조의 테이블 엔트리들에 정의된 액세스 제어 정보에 기초하여 메모리 시스템에 대한 액세스를 제어하기 위한 메모리 관리 회로부; 및
타깃 어드레스에 대응하는 상기 액세스 제어 정보를 획득하기 위해 상기 테이블 구조에 액세스하기 위한 테이블 액세싱 회로부를 포함하고,
상기 테이블 구조의 시작 레벨 이외의 주어진 레벨에서의 주어진 액세스 제어 테이블에 대해:
상기 테이블 액세싱 회로부는 상기 타깃 어드레스의 오프셋 부분에 기초하여, 상기 타깃 어드레스에 대응하는 상기 주어진 액세스 제어 테이블의 선택된 테이블 엔트리를 선택하도록 구성되고, 상기 선택된 테이블 엔트리는 상기 테이블 구조의 다음 최저 레벨에서의 액세스 제어 테이블에 대한 포인터 또는 상기 타깃 어드레스에 대응하는 상기 액세스 제어 정보 중 어느 하나를 제공하고,
상기 테이블 액세싱 회로부는 상기 주어진 액세스 제어 테이블보다, 상기 테이블 구조의 더 높은 레벨에서의 더 높은 레벨 액세스 제어 테이블의 테이블 엔트리에 특정된 가변 네스팅 제어 파라미터(variable nesting control parameter)에 기초하여 상기 타깃 어드레스의 오프셋 부분의 크기를 결정하도록 구성되는, 장치. - 제1항에 있어서, 상기 가변 네스팅 제어 파라미터는 상기 더 높은 레벨 액세스 제어 테이블의 각각의 테이블 엔트리들에 개별적으로 특정되는, 장치.
- 제2항에 있어서, 상기 더 높은 레벨 액세스 제어 테이블의 상이한 테이블 엔트리들이 상기 가변 네스팅 제어 파라미터에 대해 상이한 값들을 특정할 때, 상기 선택된 테이블 엔트리를 선택하기 위해 상기 테이블 액세싱 회로부에 의해 사용되는 상기 오프셋 부분의 크기는 상기 테이블 구조의 주어진 레벨에서의 상이한 액세스 제어 테이블들에 대해 상이한, 장치.
- 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 타깃 어드레스에 대응하는 상기 액세스 제어 정보를 제공하는 상기 테이블 엔트리에 도달하기 위해 트레버싱(traversing)될 상기 테이블 구조의 레벨들의 최대 수는 상기 가변 네스팅 제어 파라미터에 따라 가변적인, 장치.
- 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 주어진 액세스 제어 테이블의 테이블 크기는 상기 가변 네스팅 제어 파라미터에 따라 가변적인, 장치.
- 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 테이블 구조의 주어진 레벨에서의 상기 주어진 액세스 제어 테이블에 대해:
각각의 테이블 엔트리는 주어진 어드레스 범위 크기의 어드레스들의 범위에 적용가능한 정보를 정의하고,
상기 주어진 어드레스 범위 크기는 상기 더 높은 레벨 액세스 제어 테이블의 테이블 엔트리에 특정된 상기 가변 네스팅 제어 파라미터에 따라 가변적인, 장치. - 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 가변 네스팅 제어 파라미터는 상기 테이블 구조의 시작 레벨에서의 시작 레벨 액세스 제어 테이블의 테이블 엔트리에 특정되는, 장치.
- 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 테이블 액세싱 회로부는 상기 테이블 구조를 트레버싱하여 도달되는 상기 테이블 구조의 최종 레벨에서의 액세스 제어 테이블 내의 블록 기술자 테이블 엔트리로부터 상기 타깃 어드레스에 대응하는 상기 액세스 제어 정보를 획득하도록 구성되고, 상기 블록 기술자 테이블 엔트리는 상기 타깃 어드레스를 포함하는 어드레스들의 타깃 입상에 대한 상기 액세스 제어 정보를 특정하는, 장치.
- 제8항에 있어서, 상기 블록 기술자 테이블 엔트리는 복수의 액세스 제어 정보 필드들을 포함하고, 각각의 액세스 제어 정보 필드는 어드레스들의 상이한 입상에 대한 상기 액세스 제어 정보를 나타내는, 장치.
- 제8항 또는 제9항에 있어서,
상기 블록 기술자 테이블 엔트리가 인접성 표시를 특정할 때, 상기 테이블 액세싱 회로부는, 상기 타깃 입상을 포함하는 어드레스들의 2개 이상의 상이한 입상들에 대한 상기 액세스 제어 정보가 상기 2개 이상의 상이한 입상들 사이에서 공유되는 공유된 세트의 액세스 제어 정보에 의해 표현된다고 결정하도록 구성되는, 장치. - 제10항에 있어서, 상기 블록 기술자 테이블 엔트리가 인접성 표시를 특정할 때, 상기 테이블 액세싱 회로부는 상기 블록 기술자 테이블 엔트리에 특정된 인접성 크기 파라미터에 기초하여 얼마나 많은 입상들이 상기 공유된 세트의 액세스 제어 정보를 공유하는지를 식별하도록 구성되는, 장치.
- 제10항 또는 제11항에 있어서, 상기 블록 기술자 테이블 엔트리는 복수의 액세스 제어 정보 필드들을 포함하고, 각각의 액세스 제어 정보 필드는 어드레스들의 각각의 입상에 대한 상기 액세스 제어 정보를 나타내고,
상기 블록 기술자 테이블 엔트리는, 상기 복수의 액세스 제어 정보 필드들 중 미리결정된 하나의 액세스 제어 정보 필드가 상기 액세스 제어 정보에 대한 유효한 옵션들을 나타내기 위한 한 세트의 유효한 인코딩들 내의 한 인코딩 이외의 미리결정된 인코딩을 가질 때, 상기 인접성 표시를 특정하고,
상기 복수의 액세스 제어 정보 필드들 중 상기 미리결정된 하나의 액세스 제어 정보 필드가 상기 미리결정된 인코딩을 가질 때, 상기 공유된 세트의 액세스 제어 정보는 상기 타깃 어드레스에 대응하는 상기 블록 기술자 테이블 엔트리 또는 다른 블록 기술자 테이블 엔트리 내의 하나 이상의 다른 액세스 제어 정보 필드들에 의해 표시되는, 장치. - 제1항 내지 제12항 중 어느 한 항에 있어서, 상기 테이블 구조는 물리적 어드레스로 인덱싱되는, 장치.
- 제1항 내지 제13항 중 어느 한 항에 있어서, 상기 메모리 관리 회로부는,
메모리 액세스 요청에 의해 특정된 타깃 가상 어드레스를 복수의 물리적 어드레스 공간들 중에서 선택된, 선택된 물리적 어드레스 공간과 연관된 타깃 물리적 어드레스로 변환하기 위한 어드레스 변환 회로부; 및
상기 테이블 구조로부터 획득된 상기 액세스 제어 정보가, 상기 선택된 물리적 어드레스 공간이 상기 타깃 물리적 어드레스에 대한 허용된 물리적 어드레스 공간이라고 나타내는지에 기초하여, 상기 메모리 액세스 요청이 상기 타깃 물리적 어드레스에 액세스하도록 허용되어야 하는지를 결정하기 위한 필터링 회로부를 포함하는, 장치. - 제1항 내지 제12항 중 어느 한 항에 있어서, 상기 테이블 구조는 가상 어드레스로 인덱싱되는, 장치.
- 제1항 내지 제12항 및 제15항 중 어느 한 항에 있어서, 상기 메모리 관리 회로부는, 상기 테이블 구조로부터 획득된 상기 액세스 제어 정보에 의해 표시되는 어드레스 변환 맵핑에 기초하여 메모리 액세스 요청에 의해 특정된 타깃 가상 어드레스를 타깃 물리적 어드레스로 변환하기 위한 어드레스 변환 회로부를 포함하는, 장치.
- 방법으로서,
복수의 레벨들의 액세스 제어 테이블을 포함하는 테이블 구조의 테이블 엔트리들에 정의된 액세스 제어 정보에 기초하여 메모리 시스템에 대한 액세스를 제어하는 단계; 및
타깃 어드레스에 대응하는 상기 액세스 제어 정보를 획득하기 위해 상기 테이블 구조에 액세스하는 단계를 포함하고,
상기 테이블 구조의 시작 레벨 이외의 주어진 레벨에서의 주어진 액세스 제어 테이블에 대해:
상기 타깃 어드레스에 대응하는 상기 주어진 액세스 제어 테이블의 선택된 테이블 엔트리는 상기 타깃 어드레스의 오프셋 부분에 기초하여 선택되고, 상기 선택된 테이블 엔트리는 상기 테이블 구조의 다음 최저 레벨에서의 액세스 제어 테이블에 대한 포인터 또는 상기 타깃 어드레스에 대응하는 상기 액세스 제어 정보 중 어느 하나를 제공하고,
상기 타깃 어드레스의 오프셋 부분의 크기는 상기 주어진 액세스 제어 테이블보다, 상기 테이블 구조의 더 높은 레벨에서의 더 높은 레벨 액세스 제어 테이블의 테이블 엔트리에 특정된 가변 네스팅 제어 파라미터에 기초하여 결정되는, 방법. - 호스트 데이터 프로세싱 장치 상에서 실행될 때, 타깃 코드의 실행을 위한 명령어 실행 환경을 제공하기 위해 상기 호스트 데이터 프로세싱 장치를 제어하는 명령어들을 포함하는 컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램은,
복수의 레벨들의 액세스 제어 테이블을 포함하는 테이블 구조의 테이블 엔트리들에 정의된 액세스 제어 정보에 기초하여 시뮬레이션된 메모리에 대한 액세스를 제어하기 위한 메모리 관리 프로그램 로직; 및
타깃 시뮬레이션된 어드레스에 대응하는 상기 액세스 제어 정보를 획득하기 위해 상기 테이블 구조에 액세스하기 위한 테이블 액세싱 프로그램 로직을 포함하고,
상기 테이블 구조의 시작 레벨 이외의 주어진 레벨에서의 주어진 액세스 제어 테이블에 대해:
상기 테이블 액세싱 프로그램 로직은 상기 타깃 시뮬레이션된 어드레스의 오프셋 부분에 기초하여, 상기 타깃 시뮬레이션된 어드레스에 대응하는 상기 주어진 액세스 제어 테이블의 선택된 테이블 엔트리를 선택하도록 구성되고, 상기 선택된 테이블 엔트리는 상기 테이블 구조의 다음 최저 레벨에서의 액세스 제어 테이블에 대한 포인터 또는 상기 타깃 시뮬레이션된 어드레스에 대응하는 상기 액세스 제어 정보 중 어느 하나를 제공하고,
상기 테이블 액세싱 프로그램 로직은 상기 주어진 액세스 제어 테이블보다, 상기 테이블 구조의 더 높은 레벨에서의 더 높은 레벨 액세스 제어 테이블의 테이블 엔트리에 특정된 가변 네스팅 제어 파라미터에 기초하여 상기 타깃 시뮬레이션된 어드레스의 오프셋 부분의 크기를 결정하도록 구성되는, 컴퓨터 프로그램. - 제18항의 상기 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2005700.6 | 2020-04-20 | ||
GB2005700.6A GB2594258B (en) | 2020-04-20 | 2020-04-20 | Variable nesting control parameter for table structure providing access control information for controlling access to a memory system |
PCT/GB2021/050899 WO2021214428A1 (en) | 2020-04-20 | 2021-04-14 | Variable nesting control parameter for table structure providing access control information for controlling access to a memory system |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230002806A true KR20230002806A (ko) | 2023-01-05 |
Family
ID=70860233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227040136A KR20230002806A (ko) | 2020-04-20 | 2021-04-14 | 메모리 시스템에 대한 액세스를 제어하기 위한 액세스 제어 정보를 제공하는 테이블 구조에 대한 가변 네스팅 제어 파라미터 |
Country Status (8)
Country | Link |
---|---|
US (1) | US11954048B2 (ko) |
EP (1) | EP4139806A1 (ko) |
JP (1) | JP2023521331A (ko) |
KR (1) | KR20230002806A (ko) |
CN (1) | CN115668158A (ko) |
GB (1) | GB2594258B (ko) |
IL (1) | IL296888A (ko) |
WO (1) | WO2021214428A1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220414022A1 (en) * | 2021-06-25 | 2022-12-29 | Intel Corporation | Apparatus, system, and method for secure memory access control |
US20240111455A1 (en) * | 2022-09-30 | 2024-04-04 | Western Digital Technologies, Inc. | Control Table Set Management In Storage Devices |
US20240111687A1 (en) * | 2022-10-04 | 2024-04-04 | MIPS Tech, LLC | Translating Virtual Memory Addresses to Physical Memory Addresses |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785790B1 (en) * | 2002-05-29 | 2004-08-31 | Advanced Micro Devices, Inc. | Method and apparatus for storing and retrieving security attributes |
GB0226874D0 (en) | 2002-11-18 | 2002-12-24 | Advanced Risc Mach Ltd | Switching between secure and non-secure processing modes |
US20050144422A1 (en) * | 2003-12-30 | 2005-06-30 | Mcalpine Gary L. | Virtual to physical address translation |
US8843727B2 (en) * | 2004-09-30 | 2014-09-23 | Intel Corporation | Performance enhancement of address translation using translation tables covering large address spaces |
US7516297B2 (en) * | 2005-11-10 | 2009-04-07 | Hewlett-Packard Development Company, L.P. | Memory management |
EP2148279A1 (fr) * | 2008-07-24 | 2010-01-27 | Nagravision S.A. | Méthode de mise à jour de données dans des mémoires utilisant une unité de gestion mémoire |
US8386745B2 (en) * | 2009-07-24 | 2013-02-26 | Advanced Micro Devices, Inc. | I/O memory management unit including multilevel address translation for I/O and computation offload |
US8688661B2 (en) * | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US10095630B2 (en) * | 2015-12-30 | 2018-10-09 | AVAST Software s.r.o. | Sequential access to page metadata stored in a multi-level page table |
US10241924B2 (en) * | 2016-07-18 | 2019-03-26 | International Business Machines Corporation | Reducing over-purging of structures associated with address translation using an array of tags |
GB2563889B (en) * | 2017-06-28 | 2019-10-09 | Advanced Risc Mach Ltd | Realm identifiers for realms for memory access control |
-
2020
- 2020-04-20 GB GB2005700.6A patent/GB2594258B/en active Active
-
2021
- 2021-04-14 WO PCT/GB2021/050899 patent/WO2021214428A1/en active Application Filing
- 2021-04-14 EP EP21719954.6A patent/EP4139806A1/en active Pending
- 2021-04-14 US US17/996,269 patent/US11954048B2/en active Active
- 2021-04-14 KR KR1020227040136A patent/KR20230002806A/ko unknown
- 2021-04-14 JP JP2022561020A patent/JP2023521331A/ja active Pending
- 2021-04-14 CN CN202180035866.4A patent/CN115668158A/zh active Pending
- 2021-04-14 IL IL296888A patent/IL296888A/en unknown
Also Published As
Publication number | Publication date |
---|---|
GB2594258B (en) | 2022-07-20 |
JP2023521331A (ja) | 2023-05-24 |
CN115668158A (zh) | 2023-01-31 |
GB202005700D0 (en) | 2020-06-03 |
IL296888A (en) | 2022-12-01 |
GB2594258A (en) | 2021-10-27 |
WO2021214428A1 (en) | 2021-10-28 |
US11954048B2 (en) | 2024-04-09 |
EP4139806A1 (en) | 2023-03-01 |
US20230205709A1 (en) | 2023-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4127948B1 (en) | Apparatus and method using plurality of physical address spaces | |
US11954048B2 (en) | Variable nesting control parameter for table structure providing access control information for controlling access to a memory system | |
KR20220165775A (ko) | 입상 보호 데이터에 대한 데이터 무결성 체크 | |
US11989134B2 (en) | Apparatus and method | |
US20230342303A1 (en) | Translation table address storage circuitry | |
US11461247B1 (en) | Granule protection information compression | |
EP4127945B1 (en) | Apparatus and method using plurality of physical address spaces | |
US11526443B2 (en) | Read-if-hit-pre-PoPA request | |
KR20230163486A (ko) | 파티션 식별자 공간 선택 | |
JP2024513553A (ja) | スタッシングトランザクションを処理するための装置及び方法 | |
WO2024175867A1 (en) | Predetermined less-secure memory property | |
TW202435079A (zh) | 預定之較低安全記憶體性質 |