KR20210088522A - 메모리 액세스를 제어하기 위한 장치 및 방법 - Google Patents

메모리 액세스를 제어하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR20210088522A
KR20210088522A KR1020217005388A KR20217005388A KR20210088522A KR 20210088522 A KR20210088522 A KR 20210088522A KR 1020217005388 A KR1020217005388 A KR 1020217005388A KR 20217005388 A KR20217005388 A KR 20217005388A KR 20210088522 A KR20210088522 A KR 20210088522A
Authority
KR
South Korea
Prior art keywords
tag
memory
address
control information
memory access
Prior art date
Application number
KR1020217005388A
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 KR20210088522A publication Critical patent/KR20210088522A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/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)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

메모리 액세스를 제어하기 위한 방법 및 장치가 제공된다. 장치는, 타겟 어드레스에 응답하여 태그 보호 메모리 액세스(tag-guarded memory access) 동작을 수행하기 위한 메모리 액세스 회로를 가지고, 태그 보호 메모리 액세스 동작은 디폴트로: 타겟 어드레스와 연관된 어드레스 태그(address tag)를 타겟 어드레스에 의해 식별되는 어스레싱된 위치를 포함하는 하나 이상의 메모리 위치의 블록과 연관하여 메모리 시스템 내에 저장된 보호 태그(guard tag)와 비교하는 단계; 및 보호 태그와 어드레스 태그 사이에 일치(match)가 검출되는지 여부에 대한 표시를 생성하는 단계를 포함한다. 또한, 장치는, 복수의 메모리 영역의 각각에 대하여, 타겟 어드레스가 메모리 영역 내에 있을 때 태그 보호 메모리 액세스 동작이 메모리 액세스 회로에 의해 수행되는 방법을 제어하는데 사용되는 구성 제어 정보를 저장하기 위한 제어 태그 저장소를 가진다. 각각의 메모리 영역은 다수의 블록에 대응한다. 이것은 태그 보호 메모리 액세스 동작을 수행하기 위한 매우 유연하고 효율적인 메커니즘을 제공한다.

Description

메모리 액세스를 제어하기 위한 장치 및 방법
본 기술은 데이터 처리의 분야에 관한 것이다.
데이터 처리 장치에 의해 실행될 소프트웨어는 통상적으로 고급 프로그래밍 언어로 작성된 다음 소프트웨어가 실행될 장치에 의해 지원되는 명령어 세트 아키텍처에 따라 코드로 컴파일될 수 있다. 예를 들어, 소프트웨어는 원래 Java, C 또는 C++와 같은 더 높은 레벨의 언어로 작성된 다음 x86 또는 Arm®과 같은 원시적으로 지원되는 명령어 세트 아키텍처로 컴파일될 수 있다.
Java와 같은 일부 더 높은 레벨의 프로그래밍 언어는 메모리 액세스와 관련된 특정 오류를 검사확인하기 위한 런타임 오류 검출 검사를 포함하기 때문에 메모리에 안전한(memory-safe) 언어로 간주된다. 대조적으로, C 및 C++와 같은 메모리에 안전하지 않은(memory-unsafe) 언어는 이러한 런타임 오류 검사를 포함하지 않는다. 메모리에 안전하지 않은 언어의 사용이 지속적으로 만연하는 것은 주어진 명령어 세트 아키텍처에 따라 컴파일된 코드에서 공격자나 기타 악의적인 무리에 의한 악용에 취약할 수 있는 많은 메모리 관련 오류가 있을 수 있다는 것을 의미한다. 이러한 오류는 다음을 포함할 수 있다:
· 코드에 의해 제공되는 어레이 인덱스가 어레이의 합법적인 범위 밖에 있는 경계 위반(bound violation);
· 메모리 위치가 이미 할당 해제되거나 비워진 후에 그 메모리 위치에 대한 액세스가 이루어지는 프리 후 사용(use-after-free) 오류;
· 함수로부터 이미 반환된 후에 함수 내에서 사용된 변수(예를 들어, 스택 상의 값)와 연관된 어드레스에 대한 메모리 액세스가 이루어지는 반환 후 사용(use-after-return);
· 변수가 선언된 범위 밖에서 변수가 액세스되는 범위 밖 사용(use-out-of-scope) 오류; 및
· 변수가 초기화되기 전에 변수와 연관된 메모리 어드레스가 액세스되는 초기화 전 사용(use-before-initialisation) 오류.
이는 예측할 수 없는 거동을 유발하고 잠재적으로 공격자가 악용할 수 있는 수단을 제공할 수 있는 메모리 관련 오류의 몇 가지 예일 뿐이다. 따라서, 특정 클래스의 메모리 오류의 런타임 검출을 돕기 위하여, 주어진 처리 장치에 의해 지원되는 명령어 세트 아키텍처 내에서, 아키텍처 지원을 제공하는 것이 바람직할 수 있다.
하나의 예시적인 구성에서, 타겟 어드레스에 응답하여 태그 보호 메모리 액세스(tag-guarded memory access) 동작을 수행하기 위한 메모리 액세스 회로 - 태그 보호 메모리 액세스 동작은 디폴트로: 타겟 어드레스와 연관된 어드레스 태그(address tag)를 타겟 어드레스에 의해 식별되는 어스레싱된 위치를 포함하는 하나 이상의 메모리 위치의 블록과 연관되어 메모리 시스템 내에 저장된 보호 태그(guard tag)와 비교하는 단계; 및 보호 태그와 어드레스 태그 사이에 일치(match)가 검출되는지 여부에 대한 표시를 생성하는 단계를 포함함 -; 및 복수의 메모리 영역의 각각에 대하여, 타겟 어드레스가 그 메모리 영역 내에 있을 때 태그 보호 메모리 액세스 동작이 메모리 액세스 회로에 의해 수행되는 방법을 제어하는데 사용되는 구성 제어 정보를 저장하기 위한 제어 태그 저장소 - 각각의 메모리 영역은 다수의 블록에 대응함 - 를 포함하는 장치가 제공된다.
다른 예시적인 구성에서, 타겟 어드레스에 응답하여 태그 보호 메모리 액세스 동작을 수행하는 단계 - 태그 보호 메모리 액세스 동작은 디폴트로: 타겟 어드레스와 연관된 어드레스 태그를 타겟 어드레스에 의해 식별되는 어스레싱된 위치를 포함하는 하나 이상의 메모리 위치의 블록과 연관하여 메모리 시스템 내에 저장된 보호 태그와 비교하는 단계; 및 보호 태그와 어드레스 태그 사이에 일치가 검출되는지 여부에 대한 표시를 생성하는 단계를 포함함 -; 복수의 메모리 영역의 각각에 대하여, 구성 제어 정보를 저장하는 단계; 및 타겟 어드레스가 메모리 영역 내에 있을 때 태그 보호 메모리 액세스 동작이 메모리 액세스 회로에 의해 수행되는 방법을 제어하기 위하여 구성 제어 정보를 사용하는 단계 - 각각의 메모리 영역은 블록의 적어도 하나에 대응함 - 를 포함하는 메모리 액세스를 제어하는 방법이 제공된다.
또 다른 예시적인 구성에 따르면, 타겟 어드레스에 응답하여 태그 보호 메모리 액세스 동작 동작을 수행하기 위한 메모리 액세스 프로그램 로직 - 태그 보호 메모리 액세스 동작은 디폴트로: 타겟 어드레스와 연관된 어드레스 태그를 타겟 어드레스에 의해 식별되는 어스레싱된 위치를 포함하는 하나 이상의 메모리 위치의 블록과 연관하여 메모리 시스템 내에 저장된 보호 태그와 비교하는 단계; 및 보호 태그와 어드레스 태그 사이에 일치가 검출되는지 여부에 대한 표시를 생성하는 단계를 포함함 -; 및 복수의 메모리 영역의 각각에 대하여, 타겟 어드레스가 그 메모리 영역 내에 있을 때 태그 보호 메모리 액세스 동작이 메모리 액세스 프로그램 로직에 의해 수행되는 방법을 제어하는데 사용되는 구성 제어 정보를 저장하기 위한 제어 태그 데이터 구조 - 각각의 메모리 영역은 블록의 적어도 하나에 대응함 - 를 포함하는 타겟 프로그램 코드의 명령어의 실행을 위하여 명령어 실행 환경을 제공하기 위한 호스트 데이터 처리 장치를 제어하기 위한 컴퓨터 프로그램이 제공된다.
또 다른 예시적인 구성에서, 타겟 어드레스에 응답하여 태그 보호 메모리 액세스 동작 동작을 수행하기 위한 메모리 액세스 수단 - 태그 보호 메모리 액세스 동작은 디폴트로: 타겟 어드레스와 연관된 어드레스 태그를 타겟 어드레스에 의해 식별되는 어스레싱된 위치를 포함하는 하나 이상의 메모리 위치의 블록과 연관하여 메모리 시스템 내에 저장된 보호 태그와 비교하는 단계; 및 보호 태그와 어드레스 태그 사이에 일치가 검출되는지 여부에 대한 표시를 생성하는 단계를 포함함 -; 및 복수의 메모리 영역의 각각에 대하여, 타겟 어드레스가 그 메모리 영역 내에 있을 때 태그 보호 메모리 액세스 동작이 메모리 액세스 수단에 의해 수행되는 방법을 제어하는데 사용되는 구성 제어 정보를 저장하기 위한 제어 태그 저장 수단 - 각각의 메모리 영역은 다수의 블록에 대응함 - 를 포함하는 장치가 제공된다.
본 기술은, 단지 예로서, 다음의 첨부된 도면에 도시된 바와 같은 이의 예들을 참조하여 더 설명될 것이다:
도 1은 데이터 처리 장치의 일례를 개략적으로 도시하고;
도 2는 어드레스 태그(address tag)가 보호 태그(guard tag)와 일치하는지 여부를 검사하는 단계를 포함하는 태그 보호 메모리(tag guarded memory)의 일례를 도시하고;
도 3은, 하나의 예시적인 배열에 따라, 메모리 어드레스 공간을 도시하고, 메모리 어드레스 공간 내에 보호 태그와 패이지 태그를 모두 제공하는 것을 도시하며;
도 4는 하나의 예시적인 배열에 따라 페이지 태그 내에 제공될 수 있는 다수의 필드를 도시하고;
도 5는 동일 태그 모드(same tag mode)가 연관된 메모리 영역에 대한 페이지 태그 내에 설정되어 있는지 여부에 따라 태그 보호 메모리 액세스 동작이 처리될 수 있는 방법을 예시하는 순서도이고;
도 6은 전부 일치 모드(match all mode)가 연관된 메모리 영역에 대한 페이지 태그 내에 설정되어 있는지 여부에 따라 태그 보호 메모리 액세스 동작이 처리될 수 있는 방법을 예시하는 순서도이고;
도 7은 정밀 태그 검사 모드(precise tag check mode)가 연관된 메모리 영역에 대한 페이지 태그 내에 설정되어 있는지 여부에 따라 태그 보호 메모리 액세스 동작이 처리될 수 있는 방법을 예시하는 순서도이고;
도 8은, 하나의 예시적인 배열에 따라, 페이지 태그 값을 포함하기 위하여 도 1의 TLB가 확장될 수 있는 방법을 도시하고;
도 9는 하나의 예시적인 배열에 따라 도 1의 TLB 내에 제공될 수 있는 컴포넌트를 나타내는 블록도이고;
도 10은 하나의 예시적인 배열에 따라 도 9의 페이지 태그 업데이트/리프레시 회로의 동작을 예시하는 순서도이고;
도 11은 하나의 예시적인 배열에 따라 도 9의 태그 액세스 제어 회로의 동작을 예시하는 순서도이고;
도 12는, 하나의 예시적인 배열에 따라, TLB 리프레시 동작이 장치의 시스템 제어 레지스터 내에 제공된 설정에 따라 처리될 수 있는 방법을 예시하는 순서도이고;
도 13a는, 하나의 예시적인 배열에 따라, 선택된 그래뉼(granule)에 대하여 보호 태그를 업데이트하고자 할 때 취해질 수 있는 단계들을 예시하는 순서도이고;
도 13b는 선택된 그래뉼에 대하여 보호 태그를 업데이트하고자 할 때 수행될 수 있는 특정 시퀀스의 단계들을 예시하는 순서도이고, 이 특정 메커니즘이 동일 태그 모드로부터 디폴트 모드로의 전이를 발생시키며;
도 14는, 하나의 예시적인 배열에 따라, 선택된 그래뉼에 대하여 메모리로부터 보호 태그를 판독하고자 하는 요청을 처리하기 위하여 수행될 수 있는 단계들을 예시하는 순서도이고;
도 15는, 하나의 예시적인 배열에 따라, 페이지 보호 태그를 메모리에 저장하기 위한 동작이 처리될 수 있는 방법을 예시하는 순서도이고; 그리고
도 16은 본 명세서에 설명된 기술을 지원하는 시뮬레이터의 일례를 도시한다.
위에서 논의된 종류의 특정의 메모리 이용 오류로부터 보호하기 위한 하나의 접근 방식은 하나 이상의 메모리 위치의 블록과 연관하여 메모리 시스템에 저장되는 보호 태그(guard tag)를 제공하는 것이다. 메모리 시스템 내의 특정의 어드레싱된 위치를 식별하는 타겟 어드레스에 기초하여 태그 보호 메모리 액세스 동작이 요청될 때, 메모리 액세스 회로는 타겟 어드레스와 연관된 어드레스 태그(address tag)를 타겟 어드레스에 의해 식별되는 어드레싱된 위치를 포함하는 하나 이상의 메모리 위치의 블록과 연관하여 메모리 시스템에 기억되는 보호 태그와 비교할 수 있다. 메모리 액세스 회로는 보호 태그와 어드레스 태그 사이에 일치(match)가 검출되는지 여부를 나타내는 표시를 생성할 수 있다. 이 표시는, 메모리 액세스의 진행이 허용되는지 여부 또는 후속 동작을 계속할 수 있는지 여부를 제어하는데 사용되거나, 또는 메모리 액세스가 평소대로 계속되도록 허용하면서 이 표시가 단순히 보고될 수도 있다.
이것은, 예를 들어, C 또는 C++과 같은 메모리에 안전하지 않은 언어에 기초하여 코드를 컴파일링하는 컴파일러가, 메모리의 영역을 초기화할 때, 코드가 액세스할 것으로 예측되는 메모리의 블록의 보호 태그를 특정 값으로 설정할 수 있으며, 대응하는 어드레스 태그 값을 이 블록을 가리키는 타겟 어드레스와 연관시킬 수 있기 때문에 유용할 수 있다. 메모리 이용 오류가 발생하고, 예를 들어, 어드레스 포인터가 범위를 벗어나 사용되거나 초기화된 유효한 범위의 경계를 벗어나 확장되는 경우, 어드레싱된 위치와 연관된 보호 태그가 타겟 어드레스와 연관된 어드레스 태그와 일치하지 않을 가능성이 있을 수 있으며, 이 경우 일치가 검출되는지 여부에 대한 표시가 일부 오류 처리 응답이나 오류 보고 메커니즘을 트리거하는데 사용될 수 있다. 취해지는 특정 응답은 실행되고 있는 소프트웨어의 특정한 요구에 의존하거나 아키텍처의 특정 마이크로 아키텍처 구현에 의존할 수 있다. 따라서, 고급 언어가 메모리 액세스 오류에 대하여 보호하기 위하여 런타임 오류 검사를 행하는 수단을 갖고 있지 않더라도, 컴파일된 코드에 대해 사용된 ISA가 이와 같은 검사를 행하는 아키텍처 특징을 포함한다.
그러나, 태그 보호 메모리 액세스 동작을 수행하기 위한 더욱 유연하고 효율적인 메커니즘을 제공하는 것이 바람직할 수 있다.
본 명세서에 설명된 기술에 따라, 데이터 처리 장치에는, 복수의 메모리 영역의 각각에 대하여, 타겟 어드레스가 메모리 영역 내에 있을 때 태그 보호 메모리 액세스(tag-guarded memory access) 동작이 메모리 액세스 회로에 의해 수행되는 방법을 제어하는데 사용되는 구성 제어 정보를 저장하도록 배열된 제어 태그 저장소가 제공된다. 각각의 메모리 영역은 다수의 블록에 대응하도록 배열된다. 따라서, 본 명세서에 설명된 기술에 따라, 태그 보호 메모리 액세스 동작은 수행되는 방식이 현재 액세스되고 있는 메모리 영역에 따라 제어될 수 있다. 개별 메모리 영역이 상이하게 취급될 수 있기 때문에, 이것은 상당한 유연성을 제공한다. 또한, 나중에 더욱 상세히 설명되는 바와 같이, 원하는 형태의 태그 보호 메모리 액세스 동작이 메모리 영역에 대하여 여전히 수행될 수 있게 하면서도, 특정 메모리 영역 내의 블록과 연관된 개별 보호 태그를 액세스하거나 업데이트할 필요성을 방지할 수 있기 때문에, 이 접근 방식은 상당한 효율성 이점을 가능하게 할 수 있다.
각각의 메모리 영역은 다양한 형태를 취할 수 있지만, 하나의 예시적인 구현예에서, 각각의 메모리 영역은 하나 이상의 메모리 페이지를 포함한다. 특히, 메모리 어드레스 공간이 통상적으로 물리적 페이지로 분할되고, 구성 제어 정보가 제공되는 각각의 메모리 영역이 이러한 물리적 페이지 중 하나 이상에 대응할 수 있다는 것이 이해될 것이다. 가상 어드레스로부터 물리적 어드레스로의 변환을 사용하는 시스템 내에서, 가상 페이지가 또한 정의될 수 있으며, 가상 페이지 내의 가상 어드레스가 물리적 어드레스로 변환될 수 있게 하는데 필요한 변환 정보가 메모리 내의 하나 이상의 연관된 페이지 테이블로부터 획득된다는 것이 이해될 것이다. 본 명세서에 설명된 기술에 따르면, 각각의 메모리 영역을 형성하는 하나 이상의 메모리 페이지는 물리적 페이지 일 수 있거나, 대안적으로 가상 페이지 일 수 있다.
하나의 구현예에서 각각의 메모리 영역은 하나보다 많은 메모리 페이지를 포함할 수 있지만, 하나의 특정 구현예에서, 각각의 메모리 영역은 단일 메모리 페이지를 포함한다. 이것이 페이지 단위로 태그 보호 메모리 액세스 동작의 제어를 제공하고, 또한, 연관된 구성 제어 정보가 효율적으로 관리되고 액세스될 수 있게 하기 때문에, 이것이 본 명세서에 설명된 기술의 사용을 위한 특히 효율적인 형태를 제공하는 것으로 밝혀졌다. 예를 들어, 개별 메모리 페이지와 관련된 정보를 유지하기 위하여 장치 내에 하나 이상의 캐싱 구조가 제공될 수 있는 경우가 종종 있다. 예를 들어, 특정 메모리 페이지와 관련된 어드레스 변환 데이터를 저장하기 위하여 변환 색인 버퍼(translation lookaside buffer(TLB))가 사용될 수 있다. 구성 제어 정보가 또한 메모리 영역이 단일 메모리 페이지를 포함하는 구현예에서 페이지 단위로 제공되기 때문에, 그 구성 제어 정보는 또한, 예를 들어 기존 캐싱 구조를 사용하여, 장치 내에서 쉽게 캐싱될 수 있다.
구성 제어 정보는 다양한 형태를 취할 수 있다. 일례에서, 구성 제어 정보는 동일 태그 모드(same tag mode) 필드 및 메모리 영역 보호 태그를 포함한다. 그 다음, 메모리 액세스 회로는, 타겟 어드레스에 의해 식별되는 어드레싱된 위치가 동일 태그 모드 필드가 설정된 메모리 영역 내에 있을 때, 어드레스 태그가 어드레싱된 위치를 포함하는 블록과 연관된 보호 태그와 비교되는 대신에 그 메모리 영역에 대한 메모리 영역 보호 태그와 비교되게, 태그 보호 메모리 액세스 동작을 수정하도록 배열될 수 있다. 이러한 접근 방식은 상당한 성능/효율성 이득을 제공할 수 있다. 예를 들어, 특정 메모리 영역 내의 모든 블록에 대하여 동일한 보호 태그 값을 갖는 것이 적절하다고 간주되는 상황에서, 구성 제어 정보 내의 동일 태그 모드 필드를 대신 설정하고 구성 제어 정보 내에서 메모리 영역 보호 태그로서 원하는 보호 태그 정보를 저장함으로써, 이러한 개별적인 보호 태그 값을 설정할 필요성이 방지될 수 있다. 동일 태그 모드 필드가 설정되는 동안, 메모리 영역 내의 메모리 위치의 블록과 관련하여 수행되는 임의의 태그 보호 메모리 액세스 동작은, 각각의 블록과 연관된 개별 보호 태그를 사용하는 대신에, 그 메모리 영역에 대한 구성 제어 정보로서 저장된 단일 메모리 영역 보호 태그를 사용하여 수행된다.
동일 태그 모드 필드가 대응하는 구성 제어 정보에 설정된 메모리 영역 내의 블록에 대하여 개별 보호 태그를 유지할 필요 없이 실현될 수 있는 성능/효율성 이점에 더하여, 이 접근 방식은 또한 임의의 개별 태그 보호 메모리 액세스 동작 동안 수행되는 검사가 더 빠르게 수행되게 할 수 있다. 특히, 개별 블록 기반 보호 태그의 수와 비교될 때 존재할 메모리 영역 보호 태그의 수가 적기 때문에, 블록에 대한 개별 보호 태그보다 메모리 영역 보호 태그에 액세스하는 것이 더 빠를 수 있다. 이것은 특히 메모리 영역 보호 태그가 TLB에서와 같은 장치의 캐싱 구조 내에 캐싱되는 경우일 수 있다.
구성 제어 정보는 전술된 동일 태그 모드와 같은 단일 모드를 지원할 필요가 있을 뿐만 아니라, 대안적으로 또는 추가적으로, 다른 모드가 구성 제어 정보에 의해 식별될 수도 있다. 예를 들어, 하나의 예시적인 배열에서, 구성 제어 정보는 전부 일치 모드(match all mode) 필드를 포함할 수 있다. 그러면, 메모리 액세스 회로는, 타겟 어드레스에 의해 식별되는 어드레싱된 위치가 전부 일치 모드 필드가 설정된 메모리 영역 내에 있을 때, 어드레스 태그가 미리 정해진 값을 가질 때 보호 태그와의 어드레스 태그의 비교가 우회되게, 태그 보호 메모리 액세스 동작을 수정하도록 배열될 수 있고, 생성하는 단계는 보호 태그와 어드레스 태그 사이에 일치가 검출된다는 표시를 생성하는 단계를 포함한다, 이는 상당한 유연성을 제공하는 동시에, 필요한 경우 태그 보호 메모리 액세스 접근 방식의 완전한 보안을 보장한다. 특히, 이것은, 태그 보호 메모리 액세스 방식은 필요하다고 고려되는 경우에 메모리 영역에서만 사용할 수 있으며, 다른 메모리 영역은 어드레스 태그를 미리 정해진 값으로 설정함으로써 태그 보호 메모리 액세스 제어를 효과적으로 우회할 수 있다는 것을 의미한다. 이것은 다양한 상황에서 유용할 수 있다. 예를 들어, 일부 기존 절차는 예를 들어 어드레스 태그 정보를 포함할 수 있는 어드레스의 하나 이상의 상위 비트를 합법적으로 클리어할 수 있다. 이것의 특별한 예는 압축된 포인터(pointer)의 사용이다. 따라서, 이러한 경우에는, 이러한 활동이 수행되고 있는 메모리 영역 내에서 전부 일치 모드 필드를 설정하여 보호 태그와 어드레스 태그 사이의 차이가 플래그 해제되도록(unflagged) 하는 것이 유리할 수 있다.
하나의 예시적인 배열에서, 타겟 어드레스에 의해 식별된 어드레싱된 위치가 전부 일치 모드 필드가 설정된 메모리 영역 내에 있지만 보호 태그가 위에서 언급된 미리 정해진 값이 아니라면, 보통의 태그 보호 메모리 액세스 동작이 수행될 것이다. 그 시점에서 수행되는 태그 보호 메모리 액세스 동작의 실제 형태는 메모리 영역에 대하여 제공되는 다른 구성 정보에 따라 결정될 것이다. 예를 들어, 동일 태그 모드 필드가 설정된 경우, 어드레스 태그의 비교는 메모리 위치의 연관된 블록에 대한 관련 보호 태그가 아닌 메모리 영역 보호 태그를 참조하여 수행될 것이다.
위에서 설명된 전부 일치 모드가 미리 정해진 값을 갖는 어드레스 태그를 참조하지만, 대안적인 구현예에서, 이는 미리 정해진 값으로 설정된 보호 태그일 수 있으며, 따라서 보호 태그가 미리 정해진 값을 가지는 경우, 보호 태그와의 어드레스 태그의 비교는 우회된다.
메모리 영역에 대한 구성 제어 정보의 일부로서 유지될 수 있는 정보의 다른 예로서, 구성 제어 정보는 정밀 태그 검사 모드(precise tag check mode) 필드를 포함할 수 있다. 메모리 액세스 회로는, 타겟 어드레스에 의해 식별되는 어드레싱된 위치가 정밀 태그 검사 모드가 설정된 메모리 영역 내에 있을 때, 보호 태그와 어드레스 태그 사이에 불일치(mismatch)가 검출될 때 메모리 액세스 회로가 수행되고 있는 어드레싱된 위치에 대한 메모리 액세스를 방지하도록 배열되게, 태그 보호 메모리 액세스 동작을 수행하도록 배열될 수 있다. 따라서, 이러한 접근 방식에 따르면, 정밀 태그 검사 모드 필드가 설정될 때, 보호 태그와 어드레스 태그에 대한 검사가 관련 메모리 액세스와 동기화되어 수행되므로, 불일치가 있는 경우에, 메모리 액세스가 중지된다. 그 시점에서 취해지는 조치는 다양할 수 있지만, 하나의 실시예에서, 적절한 조치가 취해질 수 있는 더 높은 예외 레벨로 예외가 제기될 수 있다.
또한, 하나의 예시적인 배열에서, 메모리 액세스 회로는, 타겟 어드레스에 의해 식별되는 어드레싱된 위치가 정밀 태그 모드 필드가 설정되지 않은 메모리 영역 내에 있을 때, 보호 태그와 어드레스 태그 사이에 불일치가 검출될 때 메모리 액세스 회로가 어드레싱된 위치에 대한 메모리 액세스가 불일치에 대하여 제기된 임의의 불일치 표시에 비동기로 수행될 수 있게, 태그 보호 메모리 액세스 동작을 수정하도록 배열된다. 따라서, 이러한 접근 방식에서, 검사가 수행되는 동안 메모리 액세스가 지연되지 않고, 대신 일치 또는 불일치가 발생하였는지 여부를 나타내기 위하여 메모리 액세스에 대하여 비동기식으로 임의의 불일치 표시가 생성된다. 불일치가 검출될 때마다 별도의 불일치 표시가 생성될 수 있어, 이에 따라 태그 검사에 실패한 메모리 액세스의 직접 식별을 가능하게 하는 반면, 다른 구현예에서는, 더 일반적인 표시가 발행될 수 있어, 예를 들어 하나 이상의 액세스가 태그 검사에 실패한 것을 나타내고, 실패한 메모리 액세스에 관한 더 많은 상세 내용을 확인하기 위하여 그 표시 후에 추가 조사가 수행될 수 있게 한다.
일부 경우에 데이터 액세스의 속도를 개선하기 위하여 특정 메모리 영역에 대하여 정밀 태그 검사 모드를 설정하지 않는 것이 유용할 수 있다(예를 들어, 현재 데이터에 대한 빈번한 액세스를 착수하는 메모리 페이지에 관하여 정밀 태그 검사 모드를 디스에이블함으로써). 그러나 구성 제어 정보가 메모리 영역 단위로 특정될 수 있기 때문에, 페이지 단위의 하나의 예시적인 구현예에서는, 설명된 접근 방식은 장치에 의해 수행되고 있는 전체 프로세스에 대하여 이를 디스에이블할 필요 없이 필요한 경우에만 정밀 태그 검사 모드를 디스에이블함으로써 보안/디버그 능력을 개선할 수 있다.
제어 태그 저장소는 다양한 형태를 취할 수 있다. 예를 들어, 이는 메모리 액세스 회로가 결합되는 메모리 시스템의 일부에 의해 형성될 수 있다. 일부 구현예에서, 제어 태그 저장소는 특정 메모리 영역에 대한 구성 제어 정보를 캐싱하기 위한 캐시 구조를 포함하여, 그 구성 제어 정보에 대한 액세스 속도를 증가시킬 수 있다. 이러한 캐시 구조가 사용될 때, 캐시 구조는 다양한 형태를 취할 수 있다. 예를 들어, 이는 하나 이상의 메모리 영역에 대한 구성 제어 정보를 캐싱하는데 사용되는 전용 캐시 구조일 수 있다. 대안적으로, 이는 메모리 위치의 개별 블록에 대하여 보호 태그를 캐싱하는데도 사용되는 캐시 구조일 수 있다.
각각의 메모리 영역이 하나 이상의 메모리 페이지를 포함하는 하나의 예시적인 배열에서, 캐싱 구조의 특히 효율적인 구현예는 복수의 엔트리를 갖는 변환 색인 버퍼(TLB)를 포함하도록 제어 태그 저장소를 준비함으로써 달성될 수 있다. 각각의 엔트리는 TLB의 표준 거동에 따라 메모리 페이지에 대한 어드레스 변환 정보를 유지하는데 사용되지만, 이 구현예에서, 각각의 엔트리는 또한 그 메모리 페이지에 대한 구성 제어 정보를 식별하는 데 사용되는 필드도 포함한다. TLB 구조의 사용은, 엔트리가 이러한 메모리 페이지와 관련된 다른 정보를 유지하기 위하여 이미 제공되기 때문에, 메모리 페이지와 연관된 구성 제어 정보를 캐싱하기 위한 특히 훌륭한 솔루션을 제공할 수 있다.
각각의 메모리 영역이 하나 이상의 물리적 페이지를 포함하는 하나의 예시적인 배열에서, 메모리 내의 페이지 테이블 구조는 수정될 필요가 없으며, 각각의 엔트리에 대한 어드레스 변환 정보는 표준 방식으로 획득된다. 그러나, 또한, 구성 제어 정보를 식별하는데 사용되는 추가 필드를 제공하기 위하여 각각의 TLB 엔트리가 확장될 수 있으며, 문제의 페이지에 대한 구성 제어 정보의 필수 항목을 획득하기 위하여 별도의 액세스가 수행될 수 있다(예를 들어, 메모리 시스템에서 그 정보를 판독함으로써).
그러나, 대안적인 실시예에서, 구성 제어 정보는 메모리 내의 가상 페이지와 연관될 수 있으며, 그 경우에, 구성 제어 정보를 포함하도록 메모리 내의 페이지 테이블 정보를 보충하는 것이 가능할 수 있다. 그 경우에, 구성 제어 정보는 어드레스 변환 정보를 획득하는데 사용되는 페이지 테이블 워크 프로세스(page table walk process)의 일부로 TLB의 엔트리에서 검색되고 채워질 것이다. 일부 이러한 경우에, 예를 들어 전체 메모리 어드레스 공간이 상대적으로 작은 소규모 시스템에서, 구성 제어 정보를 수용하는 데 사용될 수 있는 페이지 테이블 내에 기존 중복 공간(redundant space)이 있을 수 있다. 이러한 구현예에서, 페이지 테이블로부터 검색된 어드레스 변환 정보의 어느 비트가 구성 제어 정보를 제공하는지 식별하기 위하여 시스템 레지스터가 사용될 수 있다. 모든 정보가 페이지 테이블 워크 프로세스의 일부로 직접 검색되므로, TLB 엔트리가 초기에 채워질 때 페이지 태그 정보를 로딩하기 위한 추가 룩업(lookup)이 필요하지 않기 때문에, 이 변형예는 더 빠를 수 있다. 또한, 시스템 페이지 테이블에 충분한 공간을 가지지 않은 경우, 고려 중인 특정 아키텍처에서 사용 가능하다면, 페이지 테이블 또는 유사한 구조의 일부 확장에 페이지 태그 정보를 넣는 것이 가능하고 더 효율적일 수 있다.
하나의 예시적인 배열에서, 각각의 메모리 영역에 대한 구성 제어 정보는 메모리 시스템의 메모리 구역 내에 보유되고, 장치는, 정해진 메모리 영역에 대한 구성 제어 정보를 메모리 구역으로부터 로딩하고, 정해진 메모리 영역에 대한 업데이트된 구성 제어 정보를 메모리 구역에 저장하도록 메모리 액세스 회로를 제어하기 위하여 구성 제어 정보 액세스 명령어를 디코딩하기 위한 명령어 디코더를 더 포함한다. 일반적인 메모리 어드레스 공간이 이 목적을 위하여 사용될 수 있고, 따라서 구성 제어 정보에 액세스하기 위해 표준 로드 또는 저장 명령어가 사용될 수 있지만, 하나의 예시적인 배열에서, 메모리 구역은 구성 제어 정보를 저장하기 위하여 특별히 제공되는 메모리 시스템의 전용 구역이다. 이러한 경우에, 구성 제어 액세스 명령어는 그 메모리 구역에 액세스하기 위하여 제공된 로드 및 저장 명령어의 특정 형태일 수 있다. 그러면, 시스템은 그 메모리 구역을 액세스하기 위하여 어떤 권한이 특정 예외 레벨에 주어지는지 구성할 수 있다. 예를 들어, 애플리케이션/사용자 레벨에서, 전용 메모리 구역은 그 목적을 위하여 제공된 특정 로드 및 저장 명령어를 사용해서만 액세스할 수 있는 반면, 커널 레벨에서는 다른 명령어를 사용하여 그 전용 메모리 구역에 액세스할 수 있는 더 많은 자유가 있을 수 있다.
하나의 예시적인 배열에서, 장치는 제어 태그 저장소에 저장된 구성 제어 정보에 대하여 리프레시(refresh) 동작을 수행하기 위하여 트리거에 응답하는 제어 태그 저장소 업데이트 회로를 더 포함할 수 있다. 이전에 언급된 바와 같이, 제어 태그 저장소는 하나 이상의 캐시 구조를 포함할 수 있고, 제어 태그 저장소 업데이트 회로의 사용은 그 캐싱된 정보가 부실해지는 것을 방지하기 위하여 사용될 수 있다.
리프레시 동작을 수행하기 위한 트리거가 발생할 수 있는 다수의 방식이 있다. 하나의 예시적인 배열에서, 트리거는 장치에 의한 리프레시 명령어의 실행 시에 발생하며, 리프레시 명령어는 구성 제어 정보가 리프레시 동작의 대상이 되는 하나 이상의 메모리 영역을 식별하는데 사용되는 어드레스 표시를 제공한다. 따라서, 어드레스 표시는 특정 어드레스 또는 어드레스 범위를 특정할 수 있으며, 그 정보에 기초하여, 구성 제어 정보가 리프레시 동작의 대상이 되는 하나 이상의 메모리 영역이 결정될 수 있다.
리프레시 명령어는 다양한 형태를 취할 수 있다. 구성 제어 정보가 TLB 구조 내에 캐싱되는 구현예에서, 리프레시 명령어는 TLB 리프레시 구성 제어 정보 명령어일 수 있으며, 실행 시 TLB 내에서 어느 엔트리가 TLB 리프레시 구성 제어 정보 명령어의 어드레스 표시에 의해 식별되는 메모리 페이지에 대한 구성 제어 정보를 제공하는지 식별하고 각각의 식별된 엔트리에서 구성 제어 정보에 대하여 리프레시 동작을 수행하기 위하여 유지 보수 동작이 TLB 내에서 수행되게 한다.
수행되는 리프레시 동작은 다양한 형태를 취할 수 있으며, 예를 들어 TLB의 식별된 엔트리에 저장된 구성 제어 정보를 무효화하는 단계 또는 메모리 시스템으로부터 그 정보의 최신 버전을 검색함으로써 그 구성 제어 정보를 업데이트하는 단계를 포함할 수 있다.
전술된 예에서 트리거가 특정 리프레시 명령어의 실행으로 인하여 발생하지만, 트리거는 다른 이벤트로 인하여 발생할 수도 있다. 예를 들어, 트리거는 정해진 메모리 영역에 대한 업데이트된 구성 제어 정보를 메모리 시스템에 저장하는데 사용되는 저장 명령어의 실행 시 발생할 수 있다. 특히, 이러한 저장을 수행할 때, 캐싱된 정보는 이제 부실할 가능성이 있다는 것이 알려져 있으며, 따라서 리프레시 동작은 직접 트리거될 수 있다.
사용된 트리거 메커니즘에 관계없이, 리프레시 동작은 구성 제어 정보를 유지하는 TLB 엔트리의 콘텐츠에만 영향을 미칠 수 있고, TLB 엔트리의 다른 내용, 즉 어드레스 변환 정보 및 연관된 속성 정보는, 하나의 예시적인 구현예에서, 전술된 리프레시 동작에 응답하여 변경되지 않을 것이라는 점이 이해되어야 한다. 그러나, 이미 존재하는 TLB 무효화 동작을 사용하여 전체 TLB 엔트리가 무효화될 수 있다.
하나의 예시적인 구현예에서, 시스템 제어 레지스터가 장치의 어느 동작 모드가 리프레시 동작을 수행하도록 이네이블되는지를 제어하기 위하여 사용될 수 있다. 예를 들어, 시스템 제어 레지스터는 장치가 애플리케이션 레벨(때때로 사용자 레벨이라고도 한다)에서 동작하고 있는 동안 리프레시 동작이 수행되도록 허용되는 정도를 식별할 수 있다.
시스템 제어 레지스터 정보는 다양한 형태를 취할 수 있다. 예를 들어, 그 정보는 많은 상이한 모드 중에서 선택하는 데 사용될 수 있다. 예를 들어, 하나의 모드는 리프레시 동작이 예외 레벨 0에서 수행되도록 허용되지 않고, 대신에 예외 레벨 0에서 리프레시 동작을 수행하려는 어떠한 시도도 예외 수준 1, 즉 운영 체제/커널과 연관된 예외 수준에 트랩되어야 한다는 것을 나타낼 수 있다. 대안적으로, 리프레시 동작이 모든 페이지에 대하여 예외 레벨 0에서 허용되는 것을 나타내는 다른 모드가 특정될 수 있다. 다른 예로서, 리프레시 동작이 메모리 내의 관련 페이지 테이블에 특정된 페이지 속성에 따라 일부 페이지에 대하여 예외 레벨 0에서 허용되는 것을 나타내는 모드가 특정될 수 있다. 그 다음, 페이지 속성의 관련 세트가 아키텍처 또는 구현예에 의해 정의될 수 있다. 이러한 페이지 속성이 없으면, 리프레시 동작을 수행하려는 시도는 다시 예외 레벨 1로 트랩될 수 있다. 이것은, 이러한 유형의 정보를 페이지 단위로 지정하는 능력으로 인하여, 리프레시가 더 높은 예외 레벨에 트랩되는 것을 보장할 필요가 있는 보안성을 여전히 유지하면서, 일부 경우에 더 높은 예외 레벨로 리프레시 요청을 트랩할 필요가 없게 함으로써, 더 빠른 리프레시 동작이 많은 상황에서 사용될 수 있게 한다.
한편, 사용자 공간에서 이러한 리프레시 동작을 허용하는 것은 신뢰할 수 없는 프로세스로부터의 서비스 거부 공격(denial-of-service attack)을 수행하기 위한 메커니즘을 발생시킬 수 있다. 예를 들어, 이러한 신뢰할 수 없는 프로세스는 예외 레벨 0 사용자 공간 내에서 빈번하게 리프레시 동작 수행하려고 할 수 있어, 이에 의해 시스템의 속도를 저하시킬 수 있다. 그러나, 더 높은 예외 수준에 트랩함으로써, 이것은 이러한 서비스 거부 문제를 관리하는 데 사용할 수 있다. 따라서, 하나의 예시적인 구성에서, 시스템 제어 레지스터는, 애플리케이션 레벨에서, 리프레시 동작을 사용하여 시도된 서비스 거부 공격을 방지하도록 설정될 수 있다.
예를 들어, 상기 유형의 구성을 사용함으로써, 시스템 제어 레지스터는 예외 레벨 1로 구성되어, 다른 프로세스에 대하여는 디스에이블하면서, 신뢰할 수 있는 프로세스에 대하여만 예외 레벨 0에서의 리프레시 동작을 허용할 수 있다. 이러한 서비스 거부 공격을 약화하는 다른 방법은 리프레시 동작을 N번 실행할 때마다 또는 리프레시 동작의 N번 이상의 실행이 미리 정해진 기간 내에 발생하는 경우에, 리프레시 동작의 예외 레벨 1로의 트랩을 이에니블하는 것일 수 있다. 이것은 대부분의 경우에 빠른 페이지 태그 리프레시를 허용하는 동시에, 커널이 리프레시 동작 실행의 빈도를 제어하는 방법을 제공할 것이며, 따라서 관련된 서비스 거부 공격을 방지할 것이다.
이전에 논의된 동일 태그 모드를 사용하는 구현예에서, 동일 태그 모드의 설정은 또한 이전에 논의된 태그 보호 메모리 액세스 동작을 넘어 다른 기능을 제어하는데 사용될 수 있다. 특히, 메모리 액세스 회로는 동일 태그 모드 필드가 선택된 블록과 연관된 메모리 영역에 대하여 설정될 때 대안적인 조치를 취하기 위하여 그 선택된 블록과 연관된 보호 태그에 액세스하기 위한 요청에 응답할 수 있다. 이러한 액세스는 보호 태그 값을 판독하거나 업데이트된 보호 태그 값을 기록하려고 수행될 수 있다. 각각의 경우에, 동일 태그 모드가 설정될 때 수행된 대안적인 조치는 상이할 수 있다. 예를 들어, 블록에 대한 보호 태그 값을 메모리에 저장하려고 시도하는 임의의 명령어의 사용은, 그 블록이 동일 태그 모드 필드가 설정된 메모리 영역 내에 있는 경우에, 예외가 생성되게 할 수 있어, 이에 의해 예외 처리 루틴이 그 저장 요청에 관하여 어떤 단계를 취할지 결정할 수 있다. 다른 예로서, 메모리로부터 블록에 대한 보호 태그를 판독하려고 시도하는 임의의 명령어의 사용은, 그 블록이 동일 태그 모드가 설정된 메모리 영역 내에 있는 경우에, 메모리 영역 보호 태그가 블록의 보호 태그 대신에 반환되게 할 수 있다.
하나의 예시적인 배열에서, 장치는, 선택된 메모리 영역에 대하여, 트리거 조건에 따라, 선택된 메모리 영역에 대한 동일 태그 모드 필드가 설정되지 않은 디폴트 모드와, 선택된 메모리 영역에 대한 동일 태그 모드 필드가 설정된 동일 태그 모드 사이를 스위칭하도록 배열될 수 있다. 스위칭 기능은, 특정 구현예에 따라, 하드웨어 또는 소프트웨어에 의해 구현될 수 있다.
트리거 조건은 다양한 형태를 취할 수 있다. 예를 들어, 이러한 스킴은 스택으로서 사용되는 메모리의 구역의 태그 지정(tagging)과 연관되어 사용될 수 있다. 예를 들어, 디폴트 스택 페이지는 디스에이블된 동일 태그 모드를 가질 수 있다. 그러면, 작은 변수의 태그 지정은 동일 태그 모드가 디스에이블된다는 가정 하에 항상 수행될 수 있다. 그러나, 큰 버퍼는 대신에 이러한 큰 버퍼의 태그 지정이 휴리스틱(heuristics)에 따라 효율적인 것으로 간주될 때 동일 태그 모드를 이네이블하는 접근 방식을 사용하여 태그 지정 또는 태그 해제(untagging)될 수 있다. 그 다음, 동일 태그 모드는 태그 해제될 때 항상 디스에이블될 수 있어, 원래 태그 값으로 되돌아간다.
다른 예로서, 트리거 조건은 동일 태그 모드 필드가 설정될 때 선택된 메모리 영역 내의 블록과 연관된 보호 태그에 대하여 수행되는 업데이트일 수 있고, 동일 태그 모드로부터 디폴트 모드로의 전이를 발생시킨다. 특히, 동일 태그 모드로부터 디폴트 모드로 이동하기 위하여 특정 단계들이 취해질 수 있어, 그 후에, 식별된 블록에 대하여 새로 특정된 보호 태그 값이 저장될 수 있게 한다.
이러한 접근 방식은, 선택된 메모리 영역에 대한 구성 제어 정보에서 적어도 동일 태그 모드 필드가 설정 해제되도록 하는 전이 동작을 구현하기 위하여 다수의 명령어를 실행함으로써 명시적으로 처리될 수 있다. 또한, 이러한 명령어는 예를 들어 현재 메모리 영역 보호 태그 값이 개별 블록 보호 태그의 각각으로 기록되게 할 수 있어, 식별된 블록을 새로운 보호 태그 값으로 업데이트하기 전에, 블록에 대한 이전 보호 태그 값을 무효로 한다(override).
대안적으로, 다수의 명령어의 실행 대신에, 전이 동작을 에뮬레이션하기 위하여 장치의 더 높은 동작 모드에 대한 예외가 취해질 수 있다. 예외의 트리거링은 많은 이유로 발생할 수 있다. 예를 들어, 대응하는 메모리 영역이 설정된 동일 태그 모드를 가지는 경우에 블록과 연관된 보호 태그를 업데이트하려는 시도가 있을 때 이는 직접 트리거될 수 있다.
하나의 예시적인 배열에서, 장치는. 어드레스 변환 인자에 대한 지식에 기초하여, 구성 제어 정보에 대한 업데이트가 장치에 의해 현재 동작 모드에서 수행되도록 허용되는지 여부 또는 업데이트를 위한 요청을 처리하는데 더 높은 동작 모드에 대한 예외가 필요한지 여부를 판단하기 위한 판단 회로를 더 포함한다. 판단 회로는 메모리 액세스 회로의 일부로서 제공될 수 있다. 어드레스 변환 인자는 다양한 형태를 취할 수 있다. 예를 들어, 이는 시스템이 다수의 상이한 가상 페이지 크기를 지원하는 것일 수 있고, 이는 어떤 더 낮은 예외 레벨에서, 소프트웨어가 사용되고 있는 최소 페이지 크기를 모르는 것일 수 있다. 그 경우에, 업데이트 절차를 더 높은 예외 레벨에 트랩하여 업데이트 요청이 이에 따라 처리될 수 있게(업데이트를 허용하거나 방지하도록) 하는 것이 필요할 수 있다. 그러나, 최소 페이지 크기가 사용자 공간에 노출될 수 있다면, 이것은 일부 이러한 업데이트가 더 높은 예외 레벨로 트랩되지 않고서 수행될 수 있게 할 수 있다. 특히, 현재 업데이트가 최소 페이지 크기의 페이지 크기와 관련된다고 판단된다면, 이것이 현재 예외 레벨로 수행되도록 허용되는 반면, 그렇지 않다면, 이것은 업데이트의 처리가 발생할 수 있는 더 높은 예외 레벨로 트랩될 수 있다.
다른 예로, 특정 물리적 페이지가 여러 가상 페이지에 매핑 될 수 있으며, 그 경우에, 업데이트 동작은 현재 매핑에 대한 업데이트만을 수행할 수 있다. 예를 들어, 엔트리가 매핑 중 하나에 대한 TLB 내에 저장되는 경우, 그 특정 매핑에 대하여 리프레시가 수행될 수 있지만, 동일한 물리적 페이지로의 다른 매핑에 대하여는 수행되지 않는다. 소프트웨어가 다수의 매핑 케이스를 인식하는 경우, 이를 그에 맞추어 처리할 수 있다. 그러나 EL0과 같은 낮은 예외 레벨이 공유를 인식하지 못하는 암시적 페이지 공유의 케이스를 지원하기 위하여, 업데이트 동작이 더 높은 예외 레벨로 트랩되는 것이 바람직할 수 있다. 많은 경우에, 암시적 페이지 공유의 존재는 페이지와 연관된 속성 비트의 일부에 의해 암시될 수 있다. 예를 들어, 암시적 페이지 공유가 COW(copy-on-write) 절차로 구현된 경우, 가상 페이지가 기록 가능하지 않은 것으로 표시되는 것이 가능하며, 그 경우, 구성 제어 정보를 업데이트하려는 시도가 더 높은 예외 레벨로 트랩될 수 있다.
원하는 경우, 더 높은 예외 레벨에서 처리될 필요가 있는 특수 경우를 식별하기 위하여, 추가 정보 필드가 구성 제어 정보 내에 제공될 수 있다. 따라서, 대응하는 필드가 설정되면, 임의의 리프레시 동작은 다음 예외 레벨로 트랩될 것이다. 원하는 경우, EL0과 같은 비특권(unprivileged) 예외 레벨에 의한 그 필드의 변경을 허용하지 않도록 시스템이 구성될 수 있다.
이제 특정 예들이 도면들을 참조하여 설명될 것이다.
도 1은 데이터 처리 장치(2)의 일례를 개략적으로 도시한다. 이것은 단순히 장치의 컴포넌트의 서브세트의 상위 레벨 표현이며 장치는 도시되지 않은 많은 다른 컴포넌트를 포함할 수 있다는 것을 이해할 것이다. 장치(2)는 명령어 디코더(6)에 의해 디코딩된 명령어에 응답하여 데이터 처리를 수행하기 위한 처리 회로(4)를 포함한다. 명령어 디코더(6)는 명령 캐시(8)로부터 페치된 명령어를 디코딩하여 명령어로 표현된 대응하는 처리 동작을 수행하도록 처리 회로(4)를 제어하기 위한 제어 신호(10)를 생성한다. 처리 회로(4)는 레지스터에 다시 기록될 결과 값을 생성하기 위하여 레지스터(14)에 저장된 값에 대한 동작을 수행하기 위한 하나 이상의 실행 유닛을 포함할 수 있다. 예를 들어, 실행 유닛은 산술 연산 또는 논리 연산을 실행하기 위한 산술/논리 유닛(ALU), 부동 소수점 피연산자를 사용하여 연산을 실행하기 위한 부동 소수점 유닛 및/또는 다수의 독립 데이터 요소를 포함하는 피연산자에 대한 벡터 연산을 수행하기 위한 벡터 처리 유닛을 포함할 수 있다. 또한, 처리 회로는 레지스터(14)와 메모리 시스템 사이의 데이터 전송을 제어하기 위한 메모리 액세스 유닛(또는 로드/저장 유닛)(15)을 포함한다. 이 예에서, 메모리 시스템은 명령 캐시(8), 레벨 1 데이터 캐시(16), 데이터와 명령어 사이에 공유되는 레벨 2 캐시(17) 및 메인 메모리(18)를 포함한다. 다른 캐시 계층도 가능하다는 것을 이해될 것이다 - 이것은 하나의 예일 뿐이다. 로드/저장 유닛(15)에 의해 트리거된 메모리 액세스를 지원하기 위하여 어드레스 변환 기능을 제공하기 위한 메모리 관리 유닛(MMU)(20)이 제공된다. MMU는 메모리 시스템(16, 17, 18)에 저장된 페이지 테이블로부터 엔트리의 서브세트를 캐싱하기 위한 변환 색인 버퍼(translation lookaside buffer(TLB))(22)를 가진다. 각각의 페이지 테이블 엔트리는 어드레스의 대응하는 페이지에 대한 어드레스 변환 매핑을 제공할 수 있고, 또한 페이지가 판독 전용 영역인지 또는 판독 및 기록이 모두 가능한지 여부를 특정하는 액세스 허가(access permission) 또는 어느 권한 레벨이 페이지에 액세스할 수 있는지 특정하는 액세스 허가와 같은, 액세스 제어 파라미터를 특정할 수 있다.
도 2는 태그 보호 메모리 액세스의 개념을 개략적으로 도시한다. 메모리 시스템 내의 메모리 위치를 참조하는데 사용되는 물리적 어드레스 공간은 특정 개수의 어드레싱 가능한 위치를 각각 포함하는 다수의 블록(30)으로 논리적으로 분할될 수 있다. 간결성을 위하여, 도 2의 예에서는, 각각의 블록(30)은 4개의 메모리 위치를 포함하지만, 다른 블록 크기도 또한 사용될 수 있다. 각각의 블록(30)은 대응하는 보호 태그(32)와 관련되어 있다. 특정 개수의 블록(30)과 연관된 보호 태그는 함께 수집되어 물리적 어드레스 공간 내의 상이한 구조적으로 액세스 가능한 다른 메모리 위치(34) 내에, 또는 구조적으로 액세스 가능하지 않은(동일한 물리적 어드레스 공간에 매핑되지 않은) 메인 메모리(18)에 제공된 추가 저장 위치 내에 저장될 수 있다. 보호 태그 값을 캐싱하기 위한 데이터 캐시(16, 17)에서 공간을 사용하지 않도록 하기 위하여 일부 경우에 비구조적으로 액세스 가능한 별도의 저장소(storage)를 사용하는 것이 바람직할 수 있으며, 이는 일반 코드의 성능에 영향을 미칠 수 있고 일관성 관리(coherency management)를 더욱 복잡하게 만들 수 있다. 태그가 메인 메모리(18)로부터 액세스되어야 했을 때보다 더 빠르게 액세스하기 위하여, 비구조적으로 액세스 가능한 저장소로부터 태그 값을 캐싱하기 위하여 추가 태그 캐시(19)가 마이크로 아키텍처에 제공될 수 있다. 태그 저장 위치(34)가 각각의 블록(30)에 대응하는 특정 매핑(mapping)은 로드/저장 유닛(15)에 의해 제어될 수 있고, 하드웨어에 내장되거나(hardwired) 프로그램 가능할(programmable) 수 있다. 도 2에서 각각의 태그(32)가 물리적 어드레스의 블록과 관련되어 있는 반면, 가상 메모리 어드레스 공간에서 가상 메모리 위치와 관련된 보호 태그(32)를 제공하는 것도 가능할 수 있지만, 이것은 각각의 메모리 액세스에 대해 일부 추가 어드레스 변환을 요구할 수 있다. 따라서, 보호 태그(32)를 물리적 메모리 위치와 연관시킴으로써, 이것은 성능을 향상시킬 수 있다. 일반적으로 보호 태그(32)가 물리적 어드레스 공간의 대응하는 블록(30)과 정확히 어떻게 연관되는지가 특정 마이크로 아키텍처 구현에 대한 선택이다. 일반적으로, 필요한 모든 것은 메모리의 주어진 블록과 연관된 보호 태그(32)가 액세스 및 비교될 수 있다는 것이다.
따라서, 태그 보호 메모리 액세스가 필요할 때, (액세스될 어드레싱된 위치(44)를 식별하는 타겟 어드레스(42)와 연관된) 어드레스 태그(40)는 어드레싱된 위치(44)를 포함하는 메모리 위치(30)의 블록과 연관되는 보호 태그(32)와 비교된다. 예를 들어, 도 2에서, 타겟 어드레스(42)는 도 2의 어드레스 공간에서 44로 표시된, 메모리 내의 특정 위치 B1를 가리킨다. 따라서, 위치 B1을 포함하는 위치 B의 블록과 연관되는 보호 태그(B)는 타겟 어드레스(42)와 연관된 어드레스 태그(40)와 비교된다. 도 2의 상단에 도시된 바와 같이, 어드레스 태그(40)는 타겟 어드레스 자체의 선택된 비트의 함수로서 결정될 수 있다. 특히, 어드레스 태그는 어드레싱된 위치(44)로서 선택될 특정 메모리 위치를 나타내기 위하여 사용되지 않는 타겟 어드레스의 일부 내의 비트로부터 결정될 수 있다. 예를 들어, 일부 아키텍처에서, 타겟 어드레스의 비트의 상부 부분은 항상 부호 확장(모두 0 또는 모두 1)과 같은 특정의 고정된 값을 가질 수 있으므로, 이러한 미사용 비트를 임의의 태그 값으로 덮어쓰기함으로써 어드레스는 어드레스 태그(40)로 태그 설정될 수 있다. 특정 어드레스 태그 값은 예를 들어 프로그래머 또는 컴파일러에 의해 선택될 수 있다. 어드레스 태그 및 보호 태그(32)는 비교적 적은 개수의 비트, 예를 들어 4 비트일 수 있으므로, 메모리 내 및 타겟 어드레스 내에서 많은 공간을 차지할 필요가 없다. 4 비트의 태그 공간, 즉 16개의 가능한 태그 값을 제공하는 것은 많은 일반적인 유형의 메모리 액세스 오류를 검출하기에 종종 충분할 수 있다.
따라서, 태그 보호 메모리 액세스가 수행될 때, 로드/저장 유닛(15)은 어드레싱된 위치(44)를 포함하는 블록(30)과 연관된 어드레스 태그(40)와 보호 태그(32)를 비교하고 이들이 일치하는지 여부를 판정한다. 로드/저장 유닛(15)은 어드레스 태그(40)와 보호 태그(32)가 일치했는지 여부를 나타내는 일치 표시를 생성한다. 예를 들어, 이 일치 표시는 어드레스 태그(40)와 보호 태그(32) 사이에 불일치가 존재하는 경우에 생성되는 결함 신호(60) 또는 일치가 있었는지 여부를 나타내는 상태 레지스터에 배치된 표시 또는 오류가 검출된 어드레스 및/또는 오류를 트리거한 명령어의 명령어 어드레스를 나타내기 위하여 오류 보고서에 추가된 엔트리일 수 있다.
본 명세서에 설명된 기술에 따라, 구성 제어 정보는 복수의 상이한 메모리 영역의 각각에 대하여 제공되고, 각각의 메모리 영역은 도 2에 도시된 블록을 다수 포함한다. 메모리 영역은 다양한 형태를 취할 수 있지만, 하나의 예시적인 배열에서 각각의 메모리 영역은 메모리 페이지를 포함하고, 각각의 페이지는 도 2에 도시된 블록을 다수 포함할 것이다. 이것은 도 3에 개략적으로 도시되고, 도 2에서 참조된 개별 블록은 도 3에서 그래뉼(granule)로 참조되며, 각각의 그래뉼은 그와 연관된 보호 태그를 가진다. 이전에 설명된 도 2에서와 같이, 메모리 영역(105)은 보호 태그를 저장하기 위하여 제공될 수 있다.
그러나, 또한, 도 3에 도시된 바와 같이, 그래뉼(100)의 그룹은 메모리에서 대응하는 페이지를 형성하고, 각각의 페이지와 연관하여 페이지 태그(110)가 제공된다. 본 명세서에 설명된 예시적인 구현예의 목적을 위하여, 연관된 구성 제어 정보를 갖는 메모리 영역의 각각은 페이지로 가정될 것이며, 따라서, 본 명세서에서, 연관된 구성 제어 정보는 페이지 태그라 지칭된다. 메모리의 영역(120)이 페이지 태그를 저장하기 위하여 제공될 수 있다. 보호 태그가 메모리에 저장될 수 있는 방법에 대한 이전 논의는 페이지 태그(110)에 동일하게 적용될 수 있으며, 따라서 이는 물리적 어드레스 공간 내의 구조적으로 액세스 가능한 메모리 위치 내에 또는 구조적으로 액세스 가능하지 않은(동일한 물리적 어드레스 공간에 매칭되지 않은) 메모리에 제공된 추가 저장 위치 내에 저장될 수 있다. 태그 캐시(19)는 후자의 경우에 페이지 태그도 캐싱하도록 확장될 수 있거나, 대안적으로 별도의 캐싱 구조가 제공될 수 있다. 본 명세서에서 나중에 논의될 하나의 특정 구현예에서, 페이지 태그는 실제로 TLB(22)의 엔트리 내에 캐싱되며, 이는 페이지 태그 정보를 캐싱하기 위한 특히 효율적인 메커니즘을 제공한다.
다양한 형태의 구성 제어 정보가 개별 페이지 태그 내에 저장될 수 있다. 그에 저장된 정보는 로드/저장 유닛(15)에 의해 태그 보호 메모리 액세스 동작이 수행되는 방법을 제어하는데 사용된다. 도 4는 페이지 태그(110)의 하나의 특정 예를 도시한다.
도 4에 도시된 바와 같이, 다수의 상이한 필드가 제공된다. 특히, 전부 일치 모드 필드(match all mode field)(130)가 제공되고, 정밀 태그 검사 모드 필드(precise tag check mode field)(135)가 제공되고, 동일 태그 모드 필드(same tag mode field)(140)가 제공되고, 추가적으로 페이지 보호 태그 필드(page guard tag field)(145)가 페이지 보호 태그(여기에서는 메모리 영역 보호 태그라고도 함)를 저장하기 위하여 제공된다. 이러한 다양한 필드 중 어느 것이 설정되는지에 따라 태그 보호 메모리 액세스 동작이 제어되는 방식이 이제 도 5 내지 7을 참조하여 더 상세히 논의될 것이다.
도 5는 동일 태그 모드가 필드(140) 내에 설정되어 있는지 여부에 따라 태그 보호 메모리 액세스 동작이 수정될 수 있는 방법을 나타낸다. 단계 150에서, 액세스 요청의 타겟 어드레스와 연관된 메모리 페이지가 식별되고, 단계 155에서, 그 메모리 페이지에 대한 페이지 태그가 참조된다. 이것은 태그 캐시(19) 또는 TLB(22)와 같은 캐싱 페이지 태그에 대하여 제공된 캐시 구조 내에 그 페이지 태그를 액세스하는 것 또는 이것이 시스템 내에 캐싱되지 않은 경우에 메모리로부터 관련 페이지 태그를 검색하는 것을 포함할 수 있다.
단계 160에서, 그 페이지 태그에서 동일 태그 모드가 설정되어 있는지 여부가 판단되고, 설정되어 있지 않으면, 과정은 단순히 타겟 어드레스에 대한 어드레스 태그를 연관된 그래뉼에 대한 보호 태그와 비교하도록 디폴트 태그 보호 메모리 액세스 검사가 수행되는 단계 165로 진행한다.
그러나, 동일 태그 모드가 설정되어 있으면, 과정은 수정된 태그 보호 메모리 액세스 검사가 수행되는 단계 170으로 진행한다. 특히, 연관된 그래뉼에 대한 보호 태그를 사용하는 대신에, 필드(145) 내의 페이지 보호 태그가 사용되며, 따라서, 일치가 있는지 여부를 검출하기 위하여 타겟 어드레스에 대한 어드레스 태그가 그 페이지 보호 태그에 대하여 검사된다. 그 다음, 일치 여부에 따라 취해진 조치는 개별 보호 태그에 대한 비교를 논의할 때 도 2를 참조하여 이전에 논의된 것과 동일하다.
도 6은 전부 일치 모드가 설정되어 있는지 여부에 따라 태그 보호 메모리 액세스 동작을 구현하기 위하여 수행되는 단계들을 도시한다. 단계 200 및 205는 도 5의 단계 150 및 155에 대응한다. 단계 210에서, 전부 일치 모드가 페이지 태그(110)의 필드(130) 내에 설정되어 있는지 여부가 판단되고, 설정되어 있지 않다면, 과정은 디폴트 태그 보호 메모리 액세스 검사가 수행되는 단계 215로 진행한다.
그러나, 전부 일치 모드가 설정되어 있으면, 과정은 타겟 어드레스에 대한 어드레스 태그가 미리 정해진 값을 가지는지 여부가 판단되는 단계 220로 진행한다. 미리 정해진 값은 다양한 형태를 취할 수 있지만, 하나의 예시적인 배열에서, 미리 정해진 값은 어드레스 태그에 대하여 0인 값을 가진다. 어드레스 태그가 미리 정해진 값이 아닌 값을 가지면, 과정은 디폴트 태그 보호 메모리 액세스 검사가 수행되는 단계 215로 진행한다. 그러나, 어드레스 태그가 미리 정해진 값을 가지면, 대신에 과정은 연관된 그래뉼에 대한 보호 태그를 검사하지 않고 일치가 검출되었다고 표시되는 단계 225로 진행한다.
도 7은 정밀 태그 모드가 필드(135) 내에 설정되어 있는 상황에서 태그 보호 메모리 액세스 동작이 수행되는 방법을 예시하는 순서도이다. 단계 250 및 255는 도 5의 이전에 논의된 단계 150 및 155에 대응한다. 단계 260에서, 정밀 태그 검사 모드가 설정되어 있는지 판단되고, 설정되어 있지 않다면, 단계 265에서, 디폴트 태그 보호 메모리 액세스 검사가 연관된 메모리 액세스에 비동기로 수행된다. 그 결과, 이것은 메모리 액세스가 검사 결과와 관계없이 진행하고, 대신에, 임의의 불일치가 지연되어 보고된다는 것을 의미한다. 이것은 단순히 어느 액세스 동작이 검사를 통과하지 않았는지에 대한 보고를 생성하지만, 이러한 액세스가 발생하는 것을 방지하지는 않는 것이 바람직한 경우에 유용할 수 있다. 이전에 언급된 바와 같이, 불일치 표시는 태그 보호 메모리 액세스 검사에 실패한 각각의 액세스에 대하여 개별적으로 제기될 수 있거나, 대안적으로, 제기된 임의의 불일치 표시는 단순히 하나 이상의 메모리 액세스가 실패하였다는 것을 식별하고, 추가 상세 내용을 식별하기 원하는 경우 추가 조사가 수행될 수 있다.
그러나, 대조적으로, 정밀 태그 검사 모드가 설정되어 있으면, 과정은 디폴트 태그 보호 메모리 액세스 검사가 수행되는 단계 270으로 진행하지만, 그 검사의 결과가 이용 가능할 때까지 메모리 액세스가 지연되어, 어드레스 태그와 보호 태그 사이에 불일치가 검출되면 액세스의 수행이 방지된다. 액세스를 수행하는 대신에, 하나의 예시적인 구현예에서, 더 높은 예외 레벨에서 예외 처리 루틴을 트리거하기 위하여 예외가 제기한다. 예외 처리 루틴에 의해 취해지는 단계들은 구현예에 따라 달라질 것이라는 점이 이해될 것이다.
도 5 내지 7의 상기 논의에서 모드 필드(130, 135, 140) 중 하나만이 임의의 특정 페이지 태그에 대하여 설정될 것이라고 가정되지만, 이것은 단순히 예시의 용이를 위한 것이었고, 하나의 구현예에서, 도 5 내지 7를 참조하여 논의된 다양한 모드가 서로 독립적으로 설정되거나 미설정될 수 있다. 따라서, 예로서, 도 6의 전부 일치 검사 과정을 고려할 때, 과정이 단계 215로 진행하지만, 동일 태그 모드가 설정되어 있다면, 단계 215는 실제로 그래뉼 보호 태그가 아니라 필드(145) 내의 페이지 보호 태그를 참조하여 태그 보호 메모리 액세스 검사를 수행할 것이다. 또한, 동일 태그 모드 필드가 설정되어 있는 동안 과정이 단계 225로 진행하면, 페이지 보호 태그에 대한 검사도 스킵되고, 따라서, 일치는 페이지 보호 태그를 이용하여 어드레스 태그의 검사 없이 검출되는 것으로 표시된다. 다른 예로서, 정밀 태그 검사 필드뿐만 아니라 동일 태그 모드 필드가 설정되어 있다면, 도 7의 단계 265 또는 270 중 어느 하나를 수행할 때, 페이지 보호 태그(145)가 그래뉼의 보호 태그 대신에 사용될 것이다.
이전에 언급된 바와 같이, 하나의 예시적인 구현예에서, 페이지 태그는 도 1에 도시된 MMU(20)의 TLB(22) 내에서 캐싱될 수 있다. 도 8은 TLB의 TLB 저장 구조(280)가 추가 필드를 포함하도록 확장되는 예시적인 구현예를 도시한다. 도 8에 도시된 바와 같이, 표준 필드(300, 305, 310)가 TLB 내의 각각의 엔트리에 대하여 제공된다. 당해 업계에서의 통상의 기술자에 의해 이해되는 바와 같이, 필드(300)는 가상 어드레스 부분을 저장하는데 사용되고, 필드(305)는 대응하는 물리적 어드레스 부분을 저장하는데 사용되며, 특정 어드레스가 TLB 내의 엔트리 중 하나로 인덱싱된다고 판단될 때, 가상 어드레스는 부분(300, 305)이 나타내는 가상 어드레스-물리적 어드레스 매핑을 이용하여 물리적 어드레스로 변환될 수 있다. 필드(310)는 엔트리와 연관된 메모리 페이지에 관한 다양한 속성, 예를 들어, 그 메모리 페이지에 대한 액세스가, 캐싱 가능한지, 버퍼링 가능한지 등의 여부를 저장하는데 사용될 수 있다.
도 8에 또한 도시된 바와 같이, TLB 저장소(280) 내의 각각의 엔트리는 2개의 추가 필드를 포함하도록 확장될 수 있다. 필드(315)는 엔트리와 연관된 메모리 페이지에 대한 페이지 태그를 저장하는데 사용되고, 또한, 페이지 태그 유효 필드(320)는 페이지 태그 필드(315) 내에 보유된 정보가 유효한지 아닌지 여부를 식별하기 위하여 제공된다.
필드(300, 305, 310)는, 통상적으로 필수 어드레스 변환 정보를 검색하기 위하여 메모리 내에 저장된 하나 이상의 페이지 테이블을 액세스하는 페이지 테이블 워크 프로세스(page table walk process)를 포함하는 표준 TLB 업데이트 절차를 이용하여 채워질 것이다. 이하, 필드(300, 305, 310)의 콘텐츠는 집합적으로 어드레스 변환 정보로 지칭될 것이다. 필드(315)는 통상의 페이지 테이블 워크 프로세스에 의해 채워지지 않을 것이지만, 대신에 메모리의 관련 페이지에 대한 페이지 태그를 메모리로부터 검색하기 위하여 별도의 액세스가, 예를 들어, 엔트리가 초기에 TLB에 할당될 때 수행될 수 있어, 그 정보가 필드(315) 내에 채워진 후, 페이지 태그 유효 필드(320)가 설정될 것이다.
상기 접근 방식이 페이지 태그와 연관된 메모리 페이지가 물리적 페이지인 상황에서 사용될 수 있지만, 대안적인 구현예에서, 페이지 태그와 연관된 메모리 페이지가 물리적 페이지인 것이 또한 가능하다. 그 경우에, 필드(315, 320)는 어드레스 변환 정보를 획득하는데 사용되는 표준 페이지 테이블 워크 프로세스의 결과로서 채워지며, 그 이유는 이러한 경우에 페이지 태그 정보가 메모리에 저장된 페이지 테이블 정보 내에 포함될 수 있고, 이에 따라 페이지 테이블 워크 프로세스의 일부로서 검색될 것이기 때문이다. 일부 경우에, 예를 들어, 전체 메모리 어드레스 공간이 작은 소규모 시스템에서, 페이지 태그 정보를 쉽게 수용하기 위하여 페이지 테이블 내에 기존의 중복 공간(redundant space)이 있을 것이다. 그러면, 이러한 경우에, 정보는 페이지 테이블로부터 검색된 어드레스 변환 정보 중 어느 비트가 페이지 태그 정보를 제공하는지 식별하기 위하여 도 1에 도시된 시스템 제어 레지스터(24) 중 하나 내에 보유될 수 있다.
가상 어드레스에 기초한 하나의 구현예에서, 페이지 태그 정보가 표준 페이지 테이블 워크 프로세스의 일부로서 검색되고, 이에 따라 전체 엔트리에 대하여 사용되는 범용 유효 플래그가 페이지 테이블 워크 프로세스로부터 획득된 페이지 태그 정보를 포함하는 어드레스 변환 데이터의 유효성을 나타내는데 사용될 수 있기 때문에, 별도의 페이지 태그 유효 필드(320)는 필요하지 않을 수 있다.
도 9는 하나의 예시적인 구현예에 따라 TLB(350) 내에 제공된 컴포넌트를 예시하는 블록도이다. TLB(350)는 도 8을 참조하여 이전에 논의된 형태를 취할 수 있는 TLB 저장소(280)를 포함한다. TLB 액세스 제어 회로(355)는 어드레스 변환 정보를 검색하고 이에 의해 특정 가상 어드레스에 대한 대응하는 물리적 어드레스를 생성하기 위하여, 특정 가상 어드레스에 기초하여 액세스 동작을 수행하는데 사용된다. 도 11을 참조하여 나중에 논의되는 바와 같이, 연관된 메모리 영역에 대한 페이지 태그 정보는 또한 그 시점에서 TLB로부터의 출력으로서 제공될 수 있다.
또한, TLB 유지 보수(maintenance) 회로(360)가 TLB 저장소(280)의 콘텐츠에 대해 TLB 유지 보수 동작을 수행하기 위하여 제공될 수 있다. 표준 TLB 유지 보수 동작에 추가하여, TLB 유지 보수 회로(360)는, 도 10을 참조하여 아래에서 더 상세히 논의되는 바와 같이, 일련의 단계들을 수행하기 위하여 페이지 태그 업데이트/리프레시 동작에 응답하는 페이지 태그 업데이트/리프레시 회로(365)를 포함할 수 있다. 도 10에 도시 된 바와 같이, 단계 400에서, 연관된 어드레스 또는 어드레스 범위를 갖는 TLB 리프레시 페이지 태그(TLB refresh page tag(TLBRPT)) 동작이 식별된다. TLBRPT 동작에 대한 필요성은 다양한 방식으로 식별될 수 있다. 예를 들어, 어드레스/어드레스 범위를 제공하고 실행될 때 리프레시 동작이 수행되도록 하는, 본 명세서에서 TLBRPT 명령어로 지칭되는 명시적인 명령어가 제공될 수 있다. 대안적으로, TLB 리프레시 동작이 수행되고 있는 다른 동작으로 인하여 자동으로 트리거될 수 있다. 예를 들어, 페이지 태그 정보를 메모리에 저장하기 위한 명령어가 제공될 수 있으며, 이러한 명령어는 본 명세서에서 STPT 명령어로 지칭된다. 메모리에서 페이지 태그를 업데이트하기 위하여 이러한 명령어가 실행될 때, 관련 페이지 태그의 임의의 캐싱된 복사본을 리프레시하려고 하기 위하여 리프레시 동작이 자동으로 호출될 수 있다.
또한, 리프레시 동작이 특정 예외 레벨에서 명령어의 실행에 응답하여 직접 수행될 수 있는 반면, 일부 구현예에서는 리프레시 동작은 특정 더 높은 특권 레벨에서만 수행되도록 허용될 수 있으며, 그에 따라 리프레시 동작의 수행이 현재의 더 낮은 예외 레벨에서의 명령어의 실행으로 인해 수행되지 않고 더 높은 예외 레벨에서 에뮬레이션될 수 있다.
원하는 경우, 시스템 제어 레지스터(24) 중 하나는 이러한 리프레시 동작이 어느 예외 레벨에서 수행될 수 있는지 식별하는 정보를 제공하는데 사용될 수 있다. 예를 들어, 이러한 정보는 리프레시 동작이 예외 레벨 0에서 수행될 수 없다는 것을 식별할 수 있으며. 예외 레벨 0에서 리프레시 동작을 수행하려는 임의의 시도는 예외 레벨 1로 트랩되어야 한다. 대안적으로, 제어 정보는 리프레시 동작이 예외 레벨 0에서 수행될 수 있거나, 또는 메모리 내의 관련 페이지 테이블에 특정된 페이지 속성에 따라 일부 페이지에 대해 예외 레벨 0에서 리프레시 동작을 수행할 수 있다는 것을 식별할 수 있다. 위의 어느 것이 적용되든, 단계 400에서, 적절한 명령어의 실행을 통해 직접적으로 또는 더 높은 예외 레벨에서 에뮬레이션에 의해 리프레시 동작이 현재 수행되고 있다고 가정한다.
단계 405에서, TLBRPT 동작과 연관된 어드레스 정보와 일치하는 어드레스 영역에 대한 어드레스 변환 정보를 포함하는 TLB 엔트리가 식별된다. TLBRPT 동작은 단순히 단일 페이지를 식별할 수 있어, 이 경우에, 최대 하나의 TLB 엔트리가 리플레시를 필요로 할 것이거나, 또는 대안적으로 여러 페이지를 식별할 수 있어 이에 따라 리프레시 동작의 대상이 되는 다수의 TLB 엔트리가 있을 수 있다.
단계 410에서, 리프레시 동작이 업데이트 모드가 아닌 무효화 모드에서 동작하고 있는지 여부가 판단된다. 무효화 모드에서 동작하고 있다면, 과정은 페이지 테이블 유효 플래그(320)가 각각의 식별된 TLB 엔트리에 대해 클리어되는 단계 415로 진행한다. 따라서, 이는 페이지 태그 필드(315) 내의 현재 콘텐츠가 유효하지 않다는 것을 나타내고, 따라서 페이지 태그 정보를 사용할 어떠한 필요가 있다면, 이는 메모리로부터 재검색될 필요가 있을 것이다
그러나, 단계 410에서 업데이트 모드가 사용되고 있다고 결정되면, 과정은 메모리로부터 관련 페이지 태그 또는 페이지 태그들의 최신 버전을 검색하고 각각의 식별된 TLB 엔트리에서 페이지 태그 정보를 업데이트하는 단계 420으로 진행한다. 각각의 이러한 엔트리에 대하여 PT 유효 플래그도 설정된다.
도 11은 하나의 예시적인 구현예에 따른 도 9의 TLB 액세스 제어 회로(355)의 동작을 예시하는 순서도이다. 단계 450에서, 수행될 액세스 동작이 식별되고, 그 액세스 동작은 타겟 가상 어드레스를 특정한다. 단계 455에서, 가상 어드레스에서 물리적 어드레스로의 변환이 TLB 저장소(280)를 사용하여 TLB 액세스 제어 회로(355)에 의해 수행된다. 이 프로세스는 TLB 내에서 미스(miss)가 검출되는 경우 페이지 테이블 워크 프로세스를 수행한 다음 관련 어드레스 변환 정보에 대하여 TLB 내에 엔트리를 할당하는 것을 포함할 것이다. 따라서, 이것이 이미 존재하였고, 적중(hit)이 검출되었거나, 미스가 검출되었기 때문에, 엔트리가 TLB 저장소 내에 채워지게 할 것이기 때문에, 단계 455가 수행될 때까지 엔트리가 TLB 저장소에 할당될 것이라는 점이 이해될 것이다. 단계 455에서 결정된 물리적 어드레스는 로드/저장 유닛(15)으로 반환될 수 있다.
단계 460에서, 어드레스 변환 프로세스에 대하여 사용되는 TLB 엔트리가 설정된 PT 유효 플래그(320)를 가지는지 여부가 판단된다. 이는 액세스 요청을 서비스하기 위하여 단계 455에서 페이지 테이블 엔트리가 방금 채워진 경우에는 해당되지 않을 것이다. 추가적으로, 리프레시 동작이 동작의 무효화 모드를 사용하여 이전에 수행되어, 이에 따라 도 10의 단계 415를 통해 진행되는 경우, PT 유효 플래그가 설정되지 않을 수 있다는 것이 이전 논의로부터 이해될 것이다.
문제의 TLB 엔트리가 설정된 PT 유효 플래그를 가지지 않으면, 과정은 단순히 그 엔트리에 보유된 페이지 태그가 액세스 동작의 타겟 어드레스에 대한 태그 보호 메모리 액세스 검사를 제어하는데 있어서의 사용을 위하여 로드/저장 유닛에 제공될 수 있는 단계 470으로 진행할 수 있다.
그러나, PT 유효 플래그가 관련 엔트리에 설정되지 않은 경우, 단계 465에서, 페이지 태그는 관련 페이지에 대하여 메모리에서 검색된 후, 관련 TLB 엔트리의 필드(315)에 저장된다(또한, PT 유효 플래그가 설정된다). 그 후, 과정은 단계 470으로 진행한다.
도 12는 시스템 제어 레지스터(24)에 보유된 정보에 의해 TLBRPT 처리가 어떻게 영향을 받을 수 있는지를 예시하는 순서도이다. 단계 500에서, TLBRPT 동작이 요구되는지 여부가 결정된다. 요구된다면, 단계 505에서, 그 시스템 제어 레지스터의 콘텐츠가 현재 예외 레벨에서의 TLBRPT 동작의 수행이 허용되지 않는다는 것을 나타내는지 여부를 판단하기 위하여 관련 시스템 제어 레지스터가 검토된다. 허용되지 않는다는 것을 나타낸다면, 단계 510에서, TLBRPT 동작이 더 높은 예외 레벨에서 처리되게 하도록 예외가 트리거된다.
그러나, 시스템 제어 레지스터 콘텐츠가 현재 예외 레벨에서 수행되고 있는 TLBRPT 동작을 방해하지 않는 경우, 시스템 제어 레지스터 콘텐츠가 허용 가능성이 페이지 테이블 내의 페이지 속성에 의존한다는 것을 나타내는지 여부가 단계 515에서 검사된다. 나타내지 않는다면, 리프레시 동작은 단계 520에서 현재 예외 레벨에서 수행될 수 있다. 그러나, 그 외에는 시스템 제어 레지스터에 의해 식별된 관련 페이지 속성이 단계 525에서 검토된다. 이것은 통상적으로 관련된 속성을 검색하기 위하여 TLB를 액세스하는 것을 포함할 것이다. 그 후, 단계 530에서, 페이지 속성이 리프레시 동작이 현재 예외 레벨에 수행되는 것을 허용하는 형태인지 여부가 판단된다. 허용하는 형태이면, 과정은 단계 520으로 진행하고, 그렇지 않으면 대신에 단계 510으로 진행한다.
이전에 논의된 동일 태그 모드가 사용되는 구현예에서, 동일 태그 모드의 설정은 이전에 논의된 태그 보호 메모리 액세스 동작을 넘어 다른 기능을 추가로 제어하는데 사용될 수 있다. 이것은 도 13a를 참조하여 예로서 예시된다. 단계 550에서, 선택된 그래뉼을 위한 보호 태그에 대한 업데이트가 요청되었는지 여부가 판단된다. 예를 들어, 이것은 메모리에서 특정 보호 태그를 업데이트하려고 하는 저장 명령어가 실행되기 때문에 발생한다. 요청되었다면, 단계 565에서, 연관된 메모리 페이지(즉, 선택된 그래뉼을 포함하는 메모리 페이지)가 식별되고, 단계 570에서, 대응하는 페이지 태그에 대하여 동일 태그 모드가 설정되어 있는지 여부가 판단된다. 설정되어 있지 않다면, 단계 580에서, 보호 태그가 표준 방식으로 선택된 그래뉼에 대하여 업데이트될 수 있다. 그러나, 동일 태그 모드가 설정되어 있다면, 단계 575에서, 예외가 더 높은 예외 레벨로 생성될 수 있다. 그 시점에서, 예외 처리 루틴이 실행될 수 있으며, 예외 처리 루틴의 형태는 구현예에 따라 달라진다.
도 13b는 선택된 그래뉼에 대하여 보호 태그를 업데이트하려고 할 때 수행될 수 있는 특정의 예시적인 시퀀스를 예시하는 순서도이다. 특히, 도 13b에 설명된 기술에 따라, 특정 그래뉼에 대하여 보호 태그를 업데이트하려는 시도는 동일 태그 모드로부터 기본 동작 모드로 스위칭하는 메커니즘을 호출할 수 있다. 도 13b에 도시된 단계는 일련의 명령어의 실행을 통해 명시적으로 수행될 수 있거나, 예를 들어, 더 높은 예외 레벨에서 필요한 처리 단계를 에뮬레이션하도록 그래뉼 저장(store granule(STG)) 명령어의 실행에 대한 예외를 취함으로써 암시적으로 수행 될 수 있다.
선택된 그래뉼을 위한 보호 태그에 대한 업데이트가 단계 600에서 검출될 때, 단계 605에서, 선택된 그래뉼에 대응하는 메모리 페이지가 식별된 후, 단계 610에서, 동일 태그 모드가 설정되어 있는지 여부가 판단된다. 설정되어 있지 않다면, 과정은 선택된 그래뉼에 대한 보호 태그가 단계 600에서 사용되는 업데이트 메커니즘에 의해 특정된 값으로 업데이트되는 단계 630으로 직접 진행할 수 있다.
그러나, 동일 태그 모드가 설정되어 있다면, 단계 615에서, 동일 태그 모드 플래그를 설정된 것이 아니라 미설정된 것으로 변경하기 위하여 관련 메모리 페이지에 대한 페이지 태그가 업데이트되고, 업데이트된 페이지 태그는 메모리에 저장된다. 그 후, 단계 620에서, 이전 페이지 태그 정보가 이제 유효하지 않다는 것이 알려지기 때문에, TLB 내의 관련 엔트리에 대하여 페이지 태그 리프레시 동작이 수행된다. 도 10의 이전 논의로부터 명백한 바와 같이, 이 결과로서, 페이지 태그 유효 플래그가 TLB 엔트리 내에서 클리어되거나, 페이지 태그의 최신 버전이 메모리로부터 검색되어 TLB에 저장될 것이고, 이 최신 버전은 동일 태그 모드가 더 이상 설정되어 있지 않다는 것을 나타낸다.
단계 625에서, 메모리 페이지 내의 각각의 그래뉼에 대하여, 페이지 태그의 필드(145) 내의 페이지 보호 태그 정보로 이전 보호 태그 정보를 덮어쓰기 위하여 대응하는 보호 태그가 업데이트된다. 그 결과, 이 시점에서, 위치는 동일 태그 모드가 여전히 설정된 것처럼 동일하지만, 전체 페이지 보호 태그가 사용되는 대신에, 페이지 내에서 그래뉼과 연관된 각각의 개별 보호 태그가 페이지 보호 태그와 동일한 값을 갖도록 업데이트되었다는 것을 알 수 있을 것이다.
그 후, 단계 630에서, 단계 600에서 사용된 업데이트 메커니즘에 의해 특정된 선택된 그래뉼에 대한 보호 태그는 그 업데이트 메커니즘에 의해 특정된 값으로 업데이트될 수 있다.
그 결과, 보호 태그 업데이트가 수행되었지만, 그 프로세스의 부산물은 문제의 페이지에 대하여 동일 태그 모드가 더 이상 설정되어 있지 않다는 것이라는 점이 이해될 것이다. 그 결과, 관련 그래뉼 보호 태그를 참조하여 후속 태그 보호 메모리 액세스 동작이 수행될 것이다.
도 14는 설정된 동일 태그 모드의 존재가 선택된 그래뉼에 대한 보호 태그에 대하여 판독 요청에 어떻게 영향을 미칠 수 있는지를 예시하는 순서도이다. 단계 650에서 선택된 그래뉼에 대하여 메모리로부터 보호 태그를 판독하고자 하는 판독 요청이 검출되면, 단계 655에서, 대응하는 메모리 페이지, 즉 선택된 그래뉼을 포함하는 메모리 페이지가 식별된다. 그 후, 단계 660에서, 동일 태그 모드가 그 메모리 페이지에 대한 페이지 태그 내에 설정되어 있는지 여부가 판단된다. 설정되어 있지 않다면, 과정은 보통의 방식으로 보호 태그가 선택된 그래뉼에 대하여 메모리로부터 판독되는 단계 670으로 진행한다.
그러나, 동일 태그 모드가 설정되어 있다면, 과정은 선택된 그래뉼에 대한 보호 태그를 판독하는 대신에 메모리 페이지에 대하여 페이지 보호 태그가 반환되는 단계 665로 진행한다. 따라서, 판독 요청의 결과, 선택된 그래뉼에 대한 현재 보호 태그 콘텐츠가 아니라 페이지 보호 태그가 반환된다.
도 15는 하나의 예시적인 배열에 따라 STPT 명령어가 예외 레벨 0(EL0)에서 처리될 수 있는 방법을 예시하는 순서도이다. 특히, STPT 명령어는 페이지 태그의 콘텐츠를 업데이트하는데 사용되는 특정 형태의 저장 명령어이다. 단계 700에서 이러한 STPT 명령어가 EL0에서 실행되어야 한다고 결정될 때, 단계 705에서 그 STPT 명령어의 실행이 EL0에서 수행될 수 있는지 여부를 판단하기 위하여 하나 이상의 어드레스 변환 인자를 참조한다. 그 결과, 단계 710에서 STPT 명령어가 EL0에서 실행될 수 있다고 판단되고, 과정은 STPT 동작이 수행되는 단계 715로 진행한다. 그러나, 실행될 수 있다고 판단되지 않으면, 과정은 더 높은 예외 레벨에서 STPT 동작이 처리되도록 예외가 트리거되는 단계 720으로 진행한다.
단계 705에서 고려될 수 있는 어드레스 변환 인자의 다양한 예가 있다. 하나의 특정 예로서, 시스템이 다수의 가상 페이지 크기의 사용을 지원하고 최소 가상 페이지 크기가 예외 레벨 0에 노출되면, 예외 레벨 0에서의 처리 회로는 STPT 동작이 하나 이상의 최소 크기의 가상 페이지와 관련되는지 여부를 판단할 수 있다. 관련되지 않으면, STPT 동작은 예외 수준 0에서 수행되지 않을 것이고, 대신 예외 수준 1로 트랩될 것이다.
다른 예로서, 암시적 페이지 공유 메커니즘이 특정 물리적 페이지가 여러 가상 페이지에 매핑될 수 있는 상황에서 사용될 수 있으며, 따라서 상이한 가상 어드레스들이 동일한 물리적 어드레스에 매핑될 수 있다. 이것이 예외 레벨 0에서 실행되는 처리 회로에 투명할 것이어서 암시적 페이지 공유가 있는 상황에서는, 페이지 태그 정보 내에 추가 비트가 제공될 수 있고, 이는 이러한 상황을 나타내도록 설정될 때, 대응하는 페이지와 연관하여 STPT 동작을 수행하려는 어떠한 시도도 예외 레벨 1에 트랩되게 한다.
도 16은 사용될 수 있는 시뮬레이터 구현을 도시한다. 이전에 설명된 실시예는 관련 기술을 지원하는 특정 처리 하드웨어를 동작시키기 위한 장치 및 방법의 관점에서 본 발명을 구현하지만, 또한, 컴퓨터 프로그램의 사용을 통해 구현되는 본 명세서에 설명된 실시예에 따른 명령어 실행 환경을 제공하는 것도 가능하다. 이러한 컴퓨터 프로그램은 하드웨어 아키텍처의 소프트웨어 기반 구현을 제공하는 한, 종종 시뮬레이터로 지칭된다. 다양한 시뮬레이터 컴퓨터 프로그램은 에뮬레이터, 가상 머신, 모델 및 동적 이진 변환기를 포함하는 이진 변환기를 포함한다. 통상적으로, 시뮬레이터 구현은 시뮬레이터 프로그램(1110)을 지원하는, 선택적으로 호스트 운영 체제(1120)를 실행하는, 호스트 프로세서(1130) 상에서 실행될 수 있다. 일부 배열에서, 하드웨어와 제공된 명령어 실행 환경 사이에 다수의 시뮬레이션 계층이 있을 수 있고 그리고/또는 동일한 호스트 프로세서 상에 제공되는 다수의 고유한 명령어 실행 환경이 있을 수 있다. 역사적으로, 적정한 속도로 실행되는 시뮬레이터 구현을 제공하기 위하여 강력한 프로세서가 필요했지만, 이러한 접근 방식은 호환성 또는 재사용 이유로 또 다른 프로세서에 대해 고유한 코드를 실행하려는 경우와 같은 특정 상황에서 정당화될 수 있다. 예를 들어, 시뮬레이터 구현은 호스트 프로세서 하드웨어에 의해 지원되지 않는 추가 기능을 갖는 명령어 실행 환경을 제공하거나, 통상적으로 상이한 하드웨어 아키텍처와 연관된 명령어 실행 환경을 제공할 수 있다. 시뮬레이션에 대한 개요는 "Some Efficient Architecture Simulation Techniques", Robert Bedichek, Winter 1990 USENIX Conference, Pages 53 - 63에서 제공된다.
실시예가 특정 하드웨어 구성 또는 특징을 참조하여 이전에 설명된 정도까지, 시뮬레이션된 실시예에서는, 동등한 기능이 적절한 소프트웨어 구성 또는 특징에 의해 제공될 수 있다. 예를 들어, 특정 회로는 시뮬레이션된 실시예에서는 컴퓨터 프로그램 로직으로서 구현될 수 있다. 유사하게, 레지스터 또는 캐시와 같은 메모리 하드웨어는 시뮬레이션된 실시예에서는 소프트웨어 데이터 구조로서 구현될 수 있다. 이전에 설명된 실시예에서 참조된 하나 이상의 하드웨어 요소가 호스트 하드웨어(예를 들어, 호스트 프로세서(1130)) 상에 존재하는 배열에서는, 일부 시뮬레이션된 실시예는 적절한 경우 호스트 하드웨어를 이용할 수 있다.
시뮬레이터 프로그램(1110)은 컴퓨터 판독 가능한 저장 매체(1112)(비일시적 매체일 수도 있음)에 저장될 수 있고, 시뮬레이터 프로그램(1110)에 의해 모델링되는 하드웨어 아키텍처의 애플리케이션 프로그램 인터페이스와 동일한 (애플리케이션, 운영 체제 및 하이퍼바이저를 포함할 수 있는) 타겟 코드(1100)에 프로그램 인터페이스(명령어 실행 환경)를 제공한다. 따라서, 타겟 코드(1100)의 프로그램 명령어는 시뮬레이터 프로그램(1110)을 사용하여 명령어 실행 환경 내부에서로부터 실행될 수 있으므로, 위에서 논의된 장치(2)의 하드웨어 특징을 갖지 않는 호스트 컴퓨터(1130)가 이 특징을 에뮬레이션할 수 있다. 예를 들어, 시뮬레이터 프로그램(1110)은 타겟 코드(1100)의 명령어에 의해 메모리로의 액세스를 제어하기 위하여 메모리 액세스 프로그램 로직(1114)을 포함할 수 있다. 예를 들어, 메모리 액세스 프로그램 로직(1114)은 가드 태그와 어드레스의 비교를 수행하고 가드 태그와 어드레스 태그 사이에 임의의 불일치가 검출되었는지 여부를 보고하기 위한 명령어를 포함할 수 있다. 또한, 시뮬레이터 프로그램(1110)은, 복수의 메모리 영역의 각각에 대하여, 타겟 어드레스가 그 메모리 영역 내에 있을 때 태그 보호 메모리 액세스 동작이 수행되는 방법을 제어하기 위하여 사용되는 구성 제어 정보를 저장하도록 제어 태그 데이터 구조(1116)를 포함할 수 있다.
본 출원에서, "~하도록 구성된"이라는 단어들은 장치의 요소가 정의된 동작을 수행할 수 있는 구성을 갖는다는 것을 의미하는데 사용된다. 이와 연계하여, "구성(configuration)"은 하드웨어 또는 소프트웨어의 상호 연결의 배열(arrangement) 또는 방법(manner)을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 가질 수 있거나, 또는 다른 처리 장치가 기능을 수행하도록 프로그래밍될 수 있다. "~하도록 구성된"은 정의된 동작을 제공하기 위하여 장치 요소가 임의의 방식으로 변경될 필요가 있다는 것을 암시하지 않는다.
본 발명의 예시적인 실시예가 첨부된 도면을 참조하여 본 명세서에 설명되었지만, 본 발명이 이러한 정확한 실시예에 한정되지 않고, 첨부된 청구범위에 의해 정의된 바와 같은 본 발명의 범위 및 기술적 사상을 벗어나지 않으면서 당해 기술 분야에서 통상의 기술자에 의해 다양한 변경, 추가 및 수정이 이루어질 수 있다는 것이 이해되어야 한다. 예를 들어, 종속항의 특징들의 다양한 조합이 본 발명의 범위를 벗어나지 않으면서 독립항의 특징들과 함께 이루어질 수 있다.

Claims (29)

  1. 타겟 어드레스에 응답하여 태그 보호 메모리 액세스(tag-guarded memory access) 동작을 수행하기 위한 메모리 액세스 회로 - 상기 태그 보호 메모리 액세스 동작은 디폴트로:
    상기 타겟 어드레스와 연관된 어드레스 태그(address tag)를, 상기 타겟 어드레스에 의해 식별되는 어스레싱된 위치를 포함하는 하나 이상의 메모리 위치의 블록과 연관하여 메모리 시스템 내에 저장된 보호 태그(guard tag)와 비교하는 단계; 및
    상기 보호 태그와 상기 어드레스 태그 사이에 일치(match)가 검출되는지 여부에 대한 표시를 생성하는 단계
    를 포함함 -; 및
    복수의 메모리 영역의 각각에 대하여, 상기 타겟 어드레스가 상기 메모리 영역 내에 있을 때 상기 태그 보호 메모리 액세스 동작이 상기 메모리 액세스 회로에 의해 수행되는 방법을 제어하는데 사용되는 구성 제어 정보를 저장하기 위한 제어 태그 저장소 - 각각의 메모리 영역은 다수의 상기 블록에 대응함 -
    를 포함하는, 장치.
  2. 제1항에 있어서,
    각각의 메모리 영역은 하나 이상의 메모리 페이지를 포함하는, 장치.
  3. 제2항에 있어서,
    각각의 메모리 영역은 단일 메모리 페이지를 포함하는, 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 구성 제어 정보는 동일 태그 모드(same tag mode) 필드 및 메모리 영역 보호 태그를 포함하고; 그리고
    상기 타겟 어드레스에 의해 식별되는 상기 어드레싱된 위치가 동일 태그 모드 필드가 설정된 메모리 영역 내에 있을 때, 상기 메모리 액세스 회로는, 상기 어드레스 태그가 상기 어드레싱된 위치를 포함하는 상기 블록과 연관된 상기 보호 태그와 비교되는 대신에 상기 메모리 영역에 대하여 상기 메모리 영역 보호 태그와 비교되게, 상기 태그 보호 메모리 액세스 동작을 수정하도록 배열되는, 장치.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 구성 제어 정보는 전부 일치 모드(match all mode) 필드를 포함하고; 그리고
    상기 타겟 어드레스에 의해 식별되는 상기 어드레싱된 위치가 전부 일치 모드 필드가 설정된 메모리 영역 내에 있을 때, 상기 메모리 액세스 회로는, 상기 어드레스 태그가 미리 정해진 값을 가질 때 상기 보호 태그와의 상기 어드레스 태그의 비교가 우회되게, 상기 태그 보호 메모리 액세스 동작을 수정하도록 배열되고, 상기 생성하는 단계는 상기 보호 태그와 상기 어드레스 태그 사이에 일치가 검출된다는 표시를 생성하는 단계를 포함하는, 장치.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 구성 제어 정보는 정밀 태그 검사 모드(precise tag check mode) 필드를 포함하고; 그리고
    상기 타겟 어드레스에 의해 식별되는 상기 어드레싱된 위치가 정밀 태그 검사 모드가 설정된 메모리 영역 내에 있을 때, 상기 메모리 액세스 회로는, 상기 보호 태그와 상기 어드레스 태그 사이에 불일치(mismatch)가 검출될 때 상기 메모리 액세스 회로가 수행되고 있는 상기 어드레싱된 위치에 대한 메모리 액세스를 방지하도록 배열되게, 상기 태그 보호 메모리 액세스 동작을 수행하도록 배열되는, 장치.
  7. 제6항에 있어서,
    상기 타겟 어드레스에 의해 식별되는 상기 어드레싱된 위치가 정밀 태그 모드 필드가 설정되지 않은 메모리 영역 내에 있을 때, 상기 메모리 액세스 회로는, 상기 보호 태그와 상기 어드레스 태그 사이에 불일치가 검출될 때 상기 메모리 액세스 회로가 상기 어드레싱된 위치에 대한 상기 메모리 액세스가 상기 불일치에 대하여 제기된 임의의 불일치 표시에 비동기로 수행될 수 있게, 상기 태그 보호 메모리 액세스 동작을 수정하도록 배열되는, 장치.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 제어 태그 저장소는 캐시 구조를 포함하는, 장치.
  9. 제2항을 인용하는 제8항에 있어서,
    상기 제어 태그 저장소는 복수의 엔트리를 갖는 변환 색인 버퍼(translation lookaside buffer(TLB))에 의해 제공되며, 각각의 엔트리는 메모리 페이지에 대한 어드레스 변환 정보를 보유하고 상기 메모리 페이지에 대한 상기 구성 제어 정보를 식별하는데 사용되는 필드를 포함하는, 장치.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    각각의 메모리 영역에 대한 상기 구성 제어 정보는 상기 메모리 시스템의 메모리 구역 내에 보유되고,
    상기 장치는, 정해진 메모리 영역에 대한 상기 구성 제어 정보를 상기 메모리 구역으로부터 로딩하고, 정해진 메모리 영역에 대한 업데이트된 구성 제어 정보를 상기 메모리 구역에 저장하도록 상기 메모리 액세스 회로를 제어하기 위하여 구성 제어 정보 액세스 명령어를 디코딩하기 위한 명령어 디코더를 더 포함하는, 장치.
  11. 제10항에 있어서,
    상기 메모리 구역은 상기 구성 제어 정보 액세스 명령어를 이용하여 액세스 가능한 상기 메모리 시스템의 전용 구역인, 장치.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    상기 제어 태그 저장소에 저장된 상기 구성 제어 정보에 대하여 리프레시(refresh) 동작을 수행하기 위하여 트리거에 응답하는 제어 태그 저장소 업데이트 회로를 더 포함하는, 장치.
  13. 제12항에 있어서,
    상기 트리거는 상기 장치에 의한 리프레시 명령어의 실행 시 발생하고, 상기 리프레시 명령어는 상기 리프레시 동작의 대상이 되는 구성 제어 정보를 갖는 하나 이상의 메모리 영역을 식별하는 데 사용되는 어드레스 표시를 제공하는, 장치.
  14. 제9항을 인용하는 제13항에 있어서,
    상기 리프레시 명령어는 TLB 리프레시 구성 제어 정보 명령어이고, 상기 TLB 리프레시 구성 제어 정보 명령어는, 실행 시 상기 TLB 내의 어느 엔트리가 상기 TLB 리프레시 구성 제어 정보 명령어의 상기 어드레스 표시에 의해 식별되는 메모리 페이지에 대한 구성 제어 정보를 제공하는지 식별하고 각각의 식별된 엔트리에서 상기 구성 제어 정보에 대한 리프레시 동작을 수행하기 위하여 유지 보수 동작이 상기 TLB 내에 수행되게 하는, 장치.
  15. 제14항에 있어서,
    상기 리프레시 동작은,
    상기 엔트리에 저장된 상기 구성 제어 정보를 무효화하는 단계; 및
    상기 메모리 시스템으로부터 상기 구성 제어 정보의 최신 버전을 검색하여 상기 엔트리에 저장된 상기 구성 제어 정보를 업데이트하는 단계
    중 하나를 포함하는, 장치.
  16. 제12항에 있어서,
    상기 트리거는 결정된 메모리 영역에 대한 업데이트된 구성 제어 정보를 상기 메모리 시스템에 저장하는데 사용되는 저장 명령어의 실행 시 발생하는, 장치.
  17. 제12항 내지 제16항 중 어느 한 항에 있어서,
    상기 장치의 어느 동작 모드가 상기 리프레시 동작을 수행하도록 이네이블될지를 제어하기 위한 시스템 제어 레지스터를 더 포함하는, 장치.
  18. 제17항에 있어서,
    상기 시스템 제어 레지스터는 상기 장치가 애플리케이션 레벨에서 동작하고 있는 동안 상기 리프레시 동작이 수행되도록 허용되는 정도를 식별하는, 장치.
  19. 제18항에 있어서,
    상기 시스템 제어 레지스터는 상기 리프레시 동작을 사용하여 시도된 서비스 거부 공격(denial of service attack)을 상기 애플리케이션 레벨에서 방지하도록 설정되는, 장치.
  20. 제4항을 인용하는 제1항 내지 제19항 중 어느 한 항에 있어서,
    상기 메모리 액세스 회로는 상기 동일 태그 모드 필드가 선택된 블록과 상기 연관된 메모리 영역에 대하여 설정될 때 대안적인 조치를 취하기 위하여 상기 선택된 블록과 연관된 보호 태그에 액세스하기 위한 요청에 응답하는, 장치.
  21. 제4항을 인용하는 제1항 내지 제20항 중 어느 한 항에 있어서,
    상기 장치는, 선택된 메모리 영역에 대하여, 트리거 조건에 따라, 상기 선택된 메모리 영역에 대한 상기 동일 태그 모드 필드가 설정되지 않은 디폴트 모드와, 상기 선택된 메모리 영역에 대한 상기 동일 태그 모드 필드가 설정된 동일 태그 모드 사이를 스위칭하도록 배열되는, 장치.
  22. 제21항에 있어서,
    상기 트리거 조건은 상기 동일 태그 모드 필드가 설정될 때 상기 선택된 메모리 영역 내의 블록과 연관된 보호 태그에 대하여 수행되는 업데이트이고, 상기 동일 태그 모드로부터 상기 디폴트 모드로의 전이를 발생시키는, 장치.
  23. 제22항에 있어서,
    상기 전이는,
    상기 선택된 메모리 영역에 대한 상기 구성 제어 정보에서 적어도 상기 동일 태그 모드 필드가 설정 해제되도록 하는 전이 동작을 구현하기 위하여 다수의 명령어를 실행하는 단계; 및
    상기 전이 동작을 에뮬레이션하기 위하여 상기 장치의 더 높은 동작 모드에 대한 예외를 취하는 단계
    중 하나에 의해 처리되는, 장치.
  24. 제2항을 인용하는 제1항 내지 제23항 중 어느 한 항에 있어서,
    상기 메모리 페이지는,
    물리적 메모리 페이지; 및
    가상 메모리 페이지
    중 하나인, 장치.
  25. 제24항에 있어서,
    상기 메모리 페이지는 가상 메모리 페이지이고, 상기 구성 제어 정보는 상기 메모리 시스템 내의 페이지 테이블에 보유된 어드레스 변환 정보로부터 결정되는, 장치.
  26. 제25항에 있어서,
    상기 어드레스 변환 정보의 어느 비트가 상기 구성 제어 정보를 제공하는지를 식별하기 위하여 시스템 레지스터가 사용되는, 장치.
  27. 제1항 내지 제26항 중 어느 한 항에 있어서,
    어드레스 변환 인자에 대한 지식에 기초하여, 상기 구성 제어 정보에 대한 업데이트가 상기 장치에 의해 현재 동작 모드에서 수행되도록 허용되는지 여부 또는 상기 업데이트를 위한 요청을 처리하는데 더 높은 동작 모드에 대한 예외가 필요한지 여부를 판단하기 위한 판단 회로를 더 포함하는, 장치.
  28. 메모리 액세스를 제어하기 위한 방법에 있어서,
    타겟 어드레스에 응답하여 태그 보호 메모리 액세스(tag-guarded memory access) 동작을 수행하는 단계 - 상기 태그 보호 메모리 액세스 동작은 디폴트로:
    상기 타겟 어드레스와 연관된 어드레스 태그(address tag)를 상기 타겟 어드레스에 의해 식별되는 어스레싱된 위치를 포함하는 하나 이상의 메모리 위치의 블록과 연관하여 메모리 시스템 내에 저장된 보호 태그(guard tag)와 비교하는 단계; 및
    상기 보호 태그와 상기 어드레스 태그 사이에 일치(match)가 검출되는지 여부에 대한 표시를 생성하는 단계
    를 포함함 -;
    복수의 메모리 영역의 각각에 대하여, 구성 제어 정보를 저장하는 단계; 및
    상기 타겟 어드레스가 상기 메모리 영역 내에 있을 때 상기 태그 보호 메모리 액세스 동작이 상기 메모리 액세스 회로에 의해 수행되는 방법을 제어하기 위하여 상기 구성 제어 정보를 사용하는 단계 - 각각의 메모리 영역은 상기 블록의 적어도 하나에 대응함 -
    를 포함하는, 방법.
  29. 타겟 프로그램 코드의 명령어의 실행을 위하여 명령어 실행 환경을 제공하기 위한 호스트 데이터 처리 장치를 제어하기 위한 컴퓨터 프로그램에 있어서,
    타겟 어드레스에 응답하여 태그 보호 메모리 액세스(tag-guarded memory access) 동작을 수행하기 위한 메모리 액세스 프로그램 로직 - 상기 태그 보호 메모리 액세스 동작은 디폴트로:
    상기 타겟 어드레스와 연관된 어드레스 태그(address tag)를 상기 타겟 어드레스에 의해 식별되는 어스레싱된 위치를 포함하는 하나 이상의 메모리 위치의 블록과 연관하여 메모리 시스템 내에 저장된 보호 태그(guard tag)와 비교하는 단계; 및
    상기 보호 태그와 상기 어드레스 태그 사이에 일치(match)가 검출되는지 여부에 대한 표시를 생성하는 단계
    를 포함함 -; 및
    복수의 메모리 영역의 각각에 대하여, 상기 타겟 어드레스가 상기 메모리 영역 내에 있을 때 상기 태그 보호 메모리 액세스 동작이 상기 메모리 액세스 프로그램 로직에 의해 수행되는 방법을 제어하는데 사용되는 구성 제어 정보를 저장하기 위한 제어 태그 데이터 구조 - 각각의 메모리 영역은 상기 블록의 적어도 하나에 대응함 -
    를 포함하는, 컴퓨터 프로그램.
KR1020217005388A 2018-11-14 2019-10-21 메모리 액세스를 제어하기 위한 장치 및 방법 KR20210088522A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1818572.8A GB2578924B (en) 2018-11-14 2018-11-14 An apparatus and method for controlling memory accesses
GB1818572.8 2018-11-14
PCT/GB2019/052998 WO2020099825A1 (en) 2018-11-14 2019-10-21 An apparatus and method for controlling memory accesses

Publications (1)

Publication Number Publication Date
KR20210088522A true KR20210088522A (ko) 2021-07-14

Family

ID=64739349

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217005388A KR20210088522A (ko) 2018-11-14 2019-10-21 메모리 액세스를 제어하기 위한 장치 및 방법

Country Status (9)

Country Link
US (1) US11573907B2 (ko)
EP (1) EP3881189B1 (ko)
JP (1) JP7444853B2 (ko)
KR (1) KR20210088522A (ko)
CN (1) CN112639750B (ko)
GB (1) GB2578924B (ko)
IL (1) IL280712B2 (ko)
TW (1) TWI812798B (ko)
WO (1) WO2020099825A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3916568B1 (en) * 2020-05-29 2024-07-17 ARM Limited Tag checking apparatus and method
US11586554B2 (en) 2020-07-23 2023-02-21 Arm Limited Cache arrangements for data processing systems
US11087858B1 (en) * 2020-07-24 2021-08-10 Macronix International Co., Ltd. In-place refresh operation in flash memory
US11621052B1 (en) * 2021-12-13 2023-04-04 Nanya Technology Corporation Method for testing memory device and test system

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5958700A (ja) * 1982-09-29 1984-04-04 Fujitsu Ltd 記憶保護判定方式
JPS6337445A (ja) * 1986-08-01 1988-02-18 Hitachi Ltd 記憶方式
JPH02254553A (ja) * 1989-03-29 1990-10-15 Mitsubishi Electric Corp 情報処理装置
JPH06309237A (ja) * 1993-04-23 1994-11-04 Hitachi Ltd 主記憶キー格納方式
JP2002373489A (ja) * 2001-06-15 2002-12-26 Mitsubishi Electric Corp 半導体記憶装置
US7917710B2 (en) * 2006-06-05 2011-03-29 Oracle America, Inc. Memory protection in a computer system employing memory virtualization
US20080256333A1 (en) 2007-04-10 2008-10-16 Keltos Kenneth J System and method for ignoring fetch protection
CN102662868B (zh) * 2012-05-02 2015-08-19 中国科学院计算技术研究所 用于处理器的动态组相联高速缓存装置及其访问方法
US8893974B2 (en) * 2012-11-30 2014-11-25 Eastman Kodak Company Decoder for barcodes with anti-copy feature
US9244829B2 (en) * 2012-12-20 2016-01-26 Oracle International Corporation Method and system for efficient memory region deallocation
WO2015011835A1 (ja) * 2013-07-26 2015-01-29 株式会社日立製作所 コンピュータシステム
US9672298B2 (en) * 2014-05-01 2017-06-06 Oracle International Corporation Precise excecution of versioned store instructions
WO2016003646A1 (en) * 2014-06-30 2016-01-07 Unisys Corporation Enterprise management for secure network communications over ipsec
US10162763B2 (en) * 2015-11-30 2018-12-25 International Business Machines Corporation Invalidation of translation look-aside buffer entries by a guest operating system
US10162694B2 (en) * 2015-12-21 2018-12-25 Intel Corporation Hardware apparatuses and methods for memory corruption detection
TWI639918B (zh) * 2017-05-11 2018-11-01 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
US20190205261A1 (en) * 2017-12-29 2019-07-04 Intel Corporation Systems, methods, and apparatuses for patching pages
GB2570692B (en) * 2018-02-02 2020-09-09 Advanced Risc Mach Ltd Controlling guard tag checking in memory accesses
GB2570691B (en) * 2018-02-02 2020-09-09 Advanced Risc Mach Ltd Controlling guard tag checking in memory accesses
US10878111B2 (en) * 2018-08-03 2020-12-29 Western Digital Technologies, Inc. Peer storage devices supporting protection information

Also Published As

Publication number Publication date
WO2020099825A1 (en) 2020-05-22
IL280712B1 (en) 2023-11-01
IL280712B2 (en) 2024-03-01
JP7444853B2 (ja) 2024-03-06
EP3881189A1 (en) 2021-09-22
CN112639750B (zh) 2024-09-06
GB2578924B (en) 2021-09-29
TWI812798B (zh) 2023-08-21
US20210326268A1 (en) 2021-10-21
JP2022505011A (ja) 2022-01-14
EP3881189B1 (en) 2023-04-19
TW202018517A (zh) 2020-05-16
US11573907B2 (en) 2023-02-07
GB201818572D0 (en) 2018-12-26
GB2578924A (en) 2020-06-03
CN112639750A (zh) 2021-04-09
IL280712A (en) 2021-03-25

Similar Documents

Publication Publication Date Title
JP7449273B2 (ja) 範囲チェック命令
EP3881189B1 (en) An apparatus and method for controlling memory accesses
US11138128B2 (en) Controlling guard tag checking in memory accesses
US20230236925A1 (en) Tag checking apparatus and method
CN110622133A (zh) 用于管理能力域的设备及方法
US20230409494A1 (en) Technique for constraining access to memory using capabilities
US11397541B2 (en) Controlling guard tag checking in memory accesses
JP2024517627A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法
CN112106029B (zh) 用于触发动作的装置和方法