[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20200116472A - 메모리 액세스시의 보호 태그 검사 제어 - Google Patents

메모리 액세스시의 보호 태그 검사 제어 Download PDF

Info

Publication number
KR20200116472A
KR20200116472A KR1020207023394A KR20207023394A KR20200116472A KR 20200116472 A KR20200116472 A KR 20200116472A KR 1020207023394 A KR1020207023394 A KR 1020207023394A KR 20207023394 A KR20207023394 A KR 20207023394A KR 20200116472 A KR20200116472 A KR 20200116472A
Authority
KR
South Korea
Prior art keywords
tag
memory access
protection
address
page table
Prior art date
Application number
KR1020207023394A
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 KR20200116472A publication Critical patent/KR20200116472A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

장치는 가상 어드레스들과 물리 어드레스들 사이의 기억된 페이지 테이블 매핑들에 따라 가상 어드레스들의 물리 어드레스들로의 변환을 행하는 어드레스 변환회로를 구비한다. 기억된 페이지 테이블 매핑들은 태그 보호 제어정보를 포함한다. 장치는, 타겟 물리 어드레스에 응답하여 태그 보호된 메모리 액세스를 행하는 메모리 액세스 회로를 구비하고, 태그 보호된 메모리 액세스는 타겟 물리 어드레스와 관련된 어드레스 태그를 타겟 물리 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련되어 기억된 보호 태그와 비교하는 보호 태그 검사를 포함한다. 메모리 액세스 회로는, 태그 보호 제어정보에 따라 보호 태그 검사를 행하지 않고, 타겟 물리 어드레스에 응답하여 어드레스 지정된 위치에 대해 태그 보호되지 않은 메모리 액세스를 행하도록 구성된다.

Description

메모리 액세스시의 보호 태그 검사 제어
본 발명은 데이터 처리 분야에 관한 것이다.
데이터 처리장치에 의해 실행할 소프트웨어는 보통 고급 프로그래밍 언어로 작성된 후, 소프트웨어가 실행될 장치에 의해 지원된 명령 세트 아키텍처에 따라 코드로 컴파일된다. 예를 들어, 소프트웨어는 원래 Java, C 또는 C++ 등의 고급 언어로 작성된 후 x86 또는 ARM(등록상표) 등의 원시적으로 지원된 명령 세트 아키텍처로 컴파일된다.
Java 등의 일부 고급 프로그래밍 언어는 메모리 액세스와 관련된 특정한 에러를 검사하는 실행 시간 에러 검출 검사를 포함하기 때문에 메모리 보안(memory-safe) 언어로 생각된다. 이에 반해, C 및 C++ 등의 메모리 비보안 언어는 이와 같은 실행 시간 에러 검사를 포함하지 않는다. 메모리 비보안 언어의 이용의 지속되는 보급은, 지정된 명령 세트 아키텍처에 따른 컴파일된 코드에서, 공격자 또는 다른 악의적인 당사자에 의해 이용 당하기 쉬운 다수의 메모리 관련 에러가 존재한다는 것을 의미한다. 이와 같은 에러는 다음의 것을 포함한다:
· 코드에 의해 주어진 어레이 색인이 어레이의 적법한 경계 외부에 놓이는 경계 위반;
· 메모리 위치가 이미 할당이 해제되거나 비워진 후에 메모리 위치에 대한 액세스가 행해지는 use-after-free 에러;
· 함수로부터 이미 반환된 후에 함수 내에서 사용된 변수(스택 상의 값 등)와 관련된 어드레스에 대한 메모리 액세스가 행해지는 use-after-return
· 변수들이 선언된 범위를 벗어나 변수들이 액세스되는 use-out-of-scope 에러
· 변수가 초기화되기 전에 변수와 관련된 메모리 어드레스가 액세스되는 use-before-initialization 에러.
이것들은 예측불가능한 거동을 발생하며 잠재적으로 공격자가 이용할 수 있는 길을 제공할 수 있는 메모리 관련 에러의 몇가지 에에 지나지 않으므로, 주어진 처리장치에 의해 지원된 명령 세트 아키텍처 내에서, 특정한 부류의 메모리 에러의 런타임 검출을 돕기 위한 아키텍처 지원을 제공하는 것이 바람직하다.
적어도 일부 실시예는, 장치로서, 가상 어드레스들과 물리 어드레스들 사이의 기억된 페이지 테이블 매핑들에 따라 가상 어드레스들의 물리 어드레스들로의 변환을 행하는 어드레스 변환회로를 구비하고, 이때 상기 기억된 페이지 테이블 매핑들은 태그 보호 제어정보를 포함하고, 상기 장치는, 타겟 물리 어드레스에 응답하여 태그 보호된 메모리 액세스를 행하는 메모리 액세스 회로를 더 구비하고, 상기 태그 보호된 메모리 액세스는 상기 타겟 물리 어드레스와 관련된 어드레스 태그를 상기 타겟 물리 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련되어 기억된 보호 태그와 비교하는 보호 태그 검사를 포함하고, 상기 메모리 액세스 회로는, 상기 태그 보호 제어정보에 따라 상기 보호 태그 검사를 행하지 않고, 상기 타겟 물리 어드레스에 응답하여 상기 어드레스 지정된 위치에 대해 태그 보호되지 않은(non-tag-guarded) 메모리 액세스를 행하도록 구성된 장치를 제공한다.
적어도 일부 실시예는, 방법으로서, 가상 어드레스들과 물리 어드레스들 사이의 기억된 페이지 테이블 매핑들에 따라 가상 어드레스들의 물리 어드레스들로의 변환을 행하는 단계를 포함하고, 이때 상기 기억된 페이지 테이블 매핑들은 태그 보호 제어정보를 포함하고, 상기 방법은, 상기 태그 보호 제어정보에 따라, 타겟 물리 어드레스에 응답하여, 상기 타겟 물리 어드레스와 관련된 어드레스 태그를 상기 타겟 물리 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련되어 기억된 보호 태그와 비교하는 보호 태그 검사를 포함하는 태그 보호된 메모리 액세스와, 상기 타겟 물리 어드레스에 응답하여 상기 태그 보호 검사를 행하지 않고 상기 어드레스 지정된 위치에 대한 태그 보호되지 않은(non-tag-guarded) 메모리 액세스 중에서 한 개를 행하는 단계를 더 포함하는 방법을 제공한다.
적어도 일부 실시예는, 호스트 데이터 처리장치를 제어하여 타겟 프로그램 코드의 명령들의 실행을 위한 명령 실행 환경을 제공하는 컴퓨터 프로그램으로서, 가상 어드레스들과 물리 어드레스들 사이의 기억된 페이지 테이블 매핑들에 따라 가상 어드레스들의 물리 어드레스들로의 변환을 행하는 어드레스 변환 프로그램 로직을 포함하고, 이때 상기 기억된 페이지 테이블 매핑들은 태그 보호 제어정보를 포함하고, 상기 컴퓨터 프로그램은, 타겟 물리 어드레스에 응답하여 태그 보호된 메모리 액세스를 행하는 메모리 액세스 프로그램 로직을 더 포함하고, 상기 태그 보호된 메모리 액세스는 상기 타겟 물리 어드레스와 관련된 어드레스 태그를 상기 타겟 물리 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련되어 기억된 보호 태그와 비교하는 보호 태그 검사를 포함하고, 상기 메모리 액세스 프로그램 로직은, 상기 태그 보호 제어정보에 따라 상기 보호 태그 검사를 행하지 않고, 상기 타겟 물리 어드레스에 응답하여 상기 어드레스 지정된 위치에 대해 태그 보호되지 않은(non-tag-guarded) 메모리 액세스를 행하도록 구성된 컴퓨터 프로그램을 제공한다.
기억매체는 전술한 컴퓨터 프로그램을 기억한다. 기억매체는 비일시적인 기억매체일 수 있다.
이하, 다음의 첨부도면에 도시된 실시예를 참조하여 본 발명을 더욱 상세히 설명한다.
도 1은 데이터 처리장치의 일례를 개략적으로 나타낸 것이다.
도 2는 어드레스 태그가 보호 태그와 일치하는지 여부를 검사하는 과정을 포함하는 태그 보호된 메모리 액세스 동작의 일례를 나타낸 것이다.
도 3은 태그 보호된 메모리 액세스 동작을 행하는 방법을 나타낸 흐름도이다.
도 4는 어드레스 변환 및 보호 태그 검사하 행해질 수 있는 예시적인 시스템을 개략적으로 나타낸 것이다.
도 5a, 도 5b 및 도 5c는 태그 보호 제어정보를 포함하는 예시적인 페이지 테이블 엔트리들을 나타낸 것이다.
도 6은 일 실시예에서 메모리가 할당될 때 페이지 테이블 비트들이 설정되는 방법을 나타낸 흐름도이다.
도 7은 일 실시예에서 페이지 테이블 엔트리 내부의 태그 보호 제어정보에 따라 보호 태가 검사에 대한 제어가 행해지고 있는 것을 나타낸 흐름도이다.
도 8은 어드레스 변환 로직을 지원하는 시뮬레이터의 일례를 나타낸 것이다.
적어도 일부 실시예는, 장치로서,
가상 어드레스들과 물리 어드레스들 사이의 기억된 페이지 테이블 매핑들에 따라 가상 어드레스들의 물리 어드레스들로의 변환을 행하는 어드레스 변환회로를 구비하고, 이때 상기 기억된 페이지 테이블 매핑들은 태그 보호 제어정보를 포함하고,
상기 장치는, 타겟 물리 어드레스에 응답하여 태그 보호된 메모리 액세스를 행하는 메모리 액세스 회로를 더 구비하고, 상기 태그 보호된 메모리 액세스는 상기 타겟 물리 어드레스와 관련된 어드레스 태그를 상기 타겟 물리 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련되어 기억된 보호 태그와 비교하는 보호 태그 검사를 포함하고,
상기 메모리 액세스 회로는, 상기 태그 보호 제어정보에 따라 상기 보호 태그 검사를 행하지 않고, 상기 타겟 물리 어드레스에 응답하여 상기 어드레스 지정된 위치에 대해 태그 보호되지 않은(non-tag-guarded) 메모리 액세스를 행하도록 구성된 장치를 제공한다.
전술한 종류의 특정한 메모리 이용 에러를 방지하는 한가지 접근방법은 한 개 이상의 메모리 위치들의 블록들과 관련하여 메모리 시스템에 기억되는 보호 태그들을 설치하는 것이다. 메모리 시스템 내의 특정한 어드레스 지정된 위치를 식별하는 타겟 어드레스에 근거하여 태그 보호된 메모리 액세스가 요구될 때, 메모리 액세스 회로는 타겟 어드레스와 관련되는 어드레스 태그를 타겟 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련하여 메모리 시스템에 기억되는 보호 태그와 비교한다. 메모리 액세스 회로는 보호 태그와 어드레스 태그 사이에 일치가 검출되는지 여부의 표시를 발생한다. 이와 같은 표시는, 메모리 액세스의 진행이 허용되는지 여부 또는 후속 동작들을 계속할 수 있는지 여부를 제어하는데 사용되거나, 또는 메모리 액세스가 평소대로 계속되도록 허용하면서 이 표시가 단순히 보고될 수도 있다.
이것은, 예를 들어, C 또는 C++ 등의 메모리 비보안 언어에 근거하여 코드를 컴파일하는 컴파일러가, 메모리의 영역들을 초기화할 때, 코드가 액세스할 것으로 예측되는 메모리의 블록들의 보호 태그들을 특정한 값들로 설정할 수 있으며, 대응하는 어드레스 태그 값들을 이들 블록을 가리키는 타겟 어드레스들과 관련시킬 수 있다. 메모리 이용 에러가 발생하고, 예를 들어, 어드레스 포인터가 범위를 벗어나 사용되거나 초기화된 유효한 범위의 경계들을 벗어나 확장되는 경우, 어드레스 지정된 위치와 관련된 보호 태그가 타겟 어드레스와 관련된 어드레스 태그와 일치하지 않을 가능성이 있으며, 이 경우 일치가 검출되는지 여부의 표시를 이용하여 에러 처리 응답이나 에러 보고 메카니즘을 기동할 수 있다. 취해지는 특정한 응답은 실행되고 있는 소프트웨어의 특정한 요구에 의존하거나 아키텍처의 특정한 마이크로 아키텍처 상 구현에 의존할 수 있다. 이 때문에, 고급 언어가 메모리 액세스 에러에 대해 보호하기 위해 실행 시간 에러 검사를 행하는 수단을 갖고 있지 않더라도, 컴파일된 코드에 대해 사용된 ISA가 이와 같은 검사를 행하는 아키텍처상 특징을 포함한다.
그러나, 이와 같은 보호 태그들의 검사는 어떤 맥락에서는 덜 바람직한 보호 태그 검사를 행함에 있어서 오버헤드를 발생할 수 있다. 전술한 장치는, 가상으로부터 물리 어드레스로의 변환을 행할 때, 태그 보호 제어정보를 포함하는 페이지 테이블 매핑들을 이용하고, 이에 따라 메모리 액세스 회로는, 태그 보호 제어정보에 따라, (보호 태그 검사를 행하여) 태그 보호된 메모리 액세스를 행하거나, 단순히 (보호 태그 검사를 행하지 않고) "정규의" 메모리 액세스를 행한다. 이에 따라, 태그 보호 제어정보가 이 (물리) 어드레스에 대해 정의된 페이지 테이블 매핑의 일부를 구성하기 때문에, 이것은 메모리 액세스의 대상인 (물리) 어드레스에 따라 보호 태그 검사가 행해질 것인지에 대한 제어가 행해질 수 있도록 한다. (예를 들어, 소유자에 의해, 콘텐츠에 의해, 등등) 메모리 어드레스들이 다양하게 분류될 수 있어, 어떤 메모리 액세스들이 보호 태그 검사를 수반하는지에 대한 다재다능한 제어를 허용할 수 있다.
태그 보호 제어정보는 다양한 형태를 취하지만, 일부 실시예에서, 기억된 페이지 테이블 매핑들은 각각의 페이지 테이블 엔트리에 대한 태그 보호 제어 비트를 포함하고, 메모리 액세스 회로는 태그 보호 제어 비트가 소정의 제1 값을 갖는 것에 응답하여 어드레스 지정된 위치에 대한 태그 보호된 메모리 액세스를 행하고, 메모리 액세스 회로는 태그 보호 제어 비트가 소정의 제2 값을 갖는 것에 응답하여 어드레스 지정된 위치에 대한 태그 보호되지 않은 메모리 액세스를 행한다. 이 때문에, 단일의 비트가 어드레스 지정된 위치에 대해 행해진 액세스가 보호 태그 검사를 수반하는지 여부를 제어할 수 있다.
일부 실시예에서, 기억된 페이지 테이블 매핑들은 각각의 페이지 테이블 엔트리에 대한 복수의 태그 보호 제어 비트들을 포함하고, 메모리 액세스 회로는 복수의 태그 보호 제어 비트들 중에서 적어도 한 개가 소정의 제1 값을 갖는 것에 응답하여 어드레스 지정된 위치에 대한 태그 보호된 메모리 액세스를 행하고, 메모리 액세스 회로는 태그 보호 제어 비트가 소정의 제2 값을 갖는 것에 응답하여 어드레스 지정된 위치에 대한 태그 보호되지 않은 메모리 액세스를 행한다. 이 때문에, 태그 보호 제어정보가 복수의 비트들을 포함하는 경우, 어드레스 지정된 위치에 대한 어떤 액세스들이 보호 태그 검사를 수반하는지에 대한 더욱 미세한 제어가 지원된다. 그후, 보호 태그 검사가 발생하는지 아닌지를 판정할 때 메모리 액세스의 정의가능한 모든 특성이 이용된다.
일부 실시예에서, 각각의 페이지 테이블 엔트리에 대한 복수의 태그 보호 제어 비트들은 메모리 액세스의 종류에 의존하는 태그 검사 규칙들을 지정한다. 따라서, 보호 태그 검사가 발생하는지 아닌지는 메모리 액세스 종류에 의존할 수 있다. 예를 들어, 한 개를 제외한 모든 특정한 종류의 메모리 액세스에 대해 보호 태그 검사가 필요가 없을 수도 있고, 한 개를 제외한 모든 특정한 종류의 메모리 액세스에 대해 보호 태그 검사가 기동되거나, 이들 극단들 사이의 어느 것일 수도 있다.
일부 실시예에서, 각각의 페이지 테이블 엔트리에 대한 복수의 태그 보호 제어 비트들은, 어드레스 지정된 위치에 대한 데이터 액세스들, 어드레스 지정된 위치에 대한 명령 페치들, 및 어드레스 지정된 위치로부터 페치된 명령을 사용하여 행해진 데이터 액세스들 중에서 적어도 한 개에 적용하도록 구성된 태그 검사 규칙을 정의한다.
일부 실시예에서, 각각의 페이지 테이블 엔트리에 대한 복수의 태그 보호 제어 비트들은 로드 연산 및 스토어 연산에 대해 다른 태그 검사 규칙들을 정의한다. 유용한 특별한 구별은 로드와 스토어 사이에 대한 것으로, 보호 태그 검사가 한 개에 대해 발생하지만 나머지에 대해서는 발생하지 않는다.
일부 실시예에서, 각각의 페이지 테이블 엔트리에 대한 복수의 태그 보호 제어 비트들은 어드레스 지정된 위치에 대한 기록 액세스에 대한 태그 보호되지 않은 메모리 액세스 동작을 지정하는 태그 검사 규칙을 정의한다. 이 때문에, 보호 태그 검사가 발생하지 않으면서 어드레스 위치에 대한 기록이 행해질 수 있다.
어드레스 지정된 위치가 액세스되기 전에 할당될 때, 태그 보호 제어정보는 이 어드레스 지정된 위치의 의도된 사용에 따라 다양하게 설정된다. 일부 실시예에서, 장치는 어드레스 지정된 위치가 명령에 대해 할당되는지 또는 데이터 스토리지에 대해 할당되는지에 따라 기억된 페이지 테이블 매핑들 내부의 태그 보호 제어정보를 설정하도록 구성된다. 보호 태그 검사가 한 개에 대해서는 발생하지만 나머지에 대해서는 발생하지 않도록 구성된다.
더구나, 할당된 메모리 위치의 소유자를 이용하여 보호 태그 검사가 발생하는지 여부를 결정할 수 있으며, 일부 실시예에서, 장치는 어드레스 지정된 위치가 커널 공간으로서 할당되는지 또는 유저 공간으로서 할당되는지에 따라 기억된 페이지 테이블 매핑들 내부의 태그 보호 제어정보를 설정하도록 구성된다.
적어도 일부 실시예는, 방법으로서,
가상 어드레스들과 물리 어드레스들 사이의 기억된 페이지 테이블 매핑들에 따라 가상 어드레스들의 물리 어드레스들로의 변환을 행하는 단계를 포함하고, 이때 상기 기억된 페이지 테이블 매핑들은 태그 보호 제어정보를 포함하고,
상기 방법은, 상기 태그 보호 제어정보에 따라,
타겟 물리 어드레스에 응답하여, 상기 타겟 물리 어드레스와 관련된 어드레스 태그를 상기 타겟 물리 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련되어 기억된 보호 태그와 비교하는 보호 태그 검사를 포함하는 태그 보호된 메모리 액세스와,
상기 타겟 물리 어드레스에 응답하여 상기 태그 보호 검사를 행하지 않고 상기 어드레스 지정된 위치에 대한 태그 보호되지 않은(non-tag-guarded) 메모리 액세스 중에서 한 개를 행하는 단계를 더 포함하는 방법을 제공한다.
적어도 일부 실시예는, 호스트 데이터 처리장치를 제어하여 타겟 프로그램 코드의 명령들의 실행을 위한 명령 실행 환경을 제공하는 컴퓨터 프로그램으로서,
가상 어드레스들과 물리 어드레스들 사이의 기억된 페이지 테이블 매핑들에 따라 가상 어드레스들의 물리 어드레스들로의 변환을 행하는 어드레스 변환 프로그램 로직을 포함하고, 이때 상기 기억된 페이지 테이블 매핑들은 태그 보호 제어정보를 포함하고,
상기 컴퓨터 프로그램은, 타겟 물리 어드레스에 응답하여 태그 보호된 메모리 액세스를 행하는 메모리 액세스 프로그램 로직을 더 포함하고, 상기 태그 보호된 메모리 액세스는 상기 타겟 물리 어드레스와 관련된 어드레스 태그를 상기 타겟 물리 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련되어 기억된 보호 태그와 비교하는 보호 태그 검사를 포함하고,
상기 메모리 액세스 프로그램 로직은, 상기 태그 보호 제어정보에 따라 상기 보호 태그 검사를 행하지 않고, 상기 타겟 물리 어드레스에 응답하여 상기 어드레스 지정된 위치에 대해 태그 보호되지 않은(non-tag-guarded) 메모리 액세스를 행하도록 구성된 컴퓨터 프로그램을 제공한다.
적어도 일부 실시예는 전술한 컴퓨터 프로그램을 기억하는 기억매체를 제공한다.
이하, 일부 특정한 실시예를 도면을 참조하여 설명한다.
도 1은 데이터 처리장치(2)의 일례를 개략적으로 나타낸 것이다. 이때, 이것은 장치의 구성요소들의 서브셋의 상위 레벨 표현에 지나지 않으며, 이 장치는 도시하지 않은 다른 구성요소들을 포함할 수도 있다는 것은 자명하다. 장치(2)는 명령 디코더(6)에 의해 디코드된 명령들에 응답하여 데이터 처리를 행하는 처리회로(4)를 구비한다. 명령 디코더(6)는 명령 캐시(8)로부터 페치된 명령들을 디코드하여 처리회로(4)를 제어함으로써 명령들에 의해 표시된 대응하는 처리 연산을 행하게 한다. 처리회로(4)는 레지스터들(4)에 기억된 값들에 대해 연산을 행하여 레지스터들에 다시 기록되는 결과 값들을 발생하는 한 개 이상의 실행 유닛들을 구비한다. 예를 들어, 실행 유닛들은, 산술 연산 또는 논리 연산을 실행하는 산술/논리 유닛(ALU), 부동소수점 피연산자를 이용하여 연산을 실행하는 부동소수점 유닛, 및/또는 복수의 독립적인 데이터 성분들을 포함하는 피연산자들에 대해 벡터 연산을 행하는 벡터 처리 유닛을 포함할 수 있다. 처리회로는, 레지스터들(14)과 메모리 시스템 사이에서의 데이터의 전달을 제어하는 (예를 들어, 로드/스토어 유닛을 포함하는) 메모리 액세스 회로(15)를 더 구비한다. 본 실시예에서, 메모리 시스템은, 명령 캐시(8), 레벨 1(L1) 데이터 캐시(16), 데이터와 명령들 사이에서 공유되는 레벨 2(L2) 캐시(17), 및 메인 메모리(18)를 포함한다. 이때, 이것은 단지 일례이며, 다른 캐시 계층구조도 가능하다는 것은 자명하다. 로드/스토어 유닛(15)에 의해 기동된 메모리 액세스를 지원하기 위한 어드레스 변환 기능을 제공하기 위해 메모리 관리 유닛(MMU)(20)이 설치된다. MMU는 메모리 시스템 16, 17, 18에 기억된 페이지 테이블로부터 엔트리들의 서브셋을 캐싱하는 변환 색인 버퍼(TLB)(22)를 갖는다. 각각의 페이지 테이블 엔트리는, 대응하는 어드레스들의 페이지에 대한 어드레스 변환 매핑을 제공하며, 페이지가 판독 전용 영역인지 또는 판독가능 및 기록가능 모두 인지 여부를 지정하는 액세스 허가, 또는 어떤 특권 레벨들이 페이지를 액세스할 수 있는지 지정하는 액세스 허가 등의 액세스 제어 파라미터를 더 지정한다. 더구나, 이하에서 더욱 상세히 설명하는 것과 같이, 페이지 테이블 엔트리는, 어드레스들의 페이지 내부의 어드레스에 대해 액세스가 행해질 때 보호 태그 검사가 발생하는지 여부를 제어하기 위해 본 발명에 의해 사용되는 태그 보호 제어정보를 지정할 수 있다.
도 2는 태그 보호된 메모리 액세스의 개념을 개략적으로 나타낸 것이다. 메모리 시스템 내부의 메모리 위치들을 참조하기 위해 사용되는 물리 어드레스 공간은 특정한 수의 어드레스 지정가능한 위치들을 각각 포함하는 다수의 블록들(30)로 논리적으로 분할된다. 간략을 위해, 도 2의 실시예에서는, 각각의 블록(30)이 4개의 메모리 위치들을 포함하지만, 다음 블록 사이즈가 사용될 수도 있다. 각각의 블록(30)은 대응하는 보호 태그(32)와 관련된다. 특정한 수의 블록들(30)과 관련된 보호 태그들은, 함께 모일 수 있으며, 물리 어드레스 공간 내부의 이와 다른 아키텍처 상 액세스가능한 메모리 위치(34) 내부, 또는 아키텍처 상 액세스가능하지 않은(동일한 물리 어드레스 공간에 매핑되지 않은) 메인 메모리(18) 내에 설치된 추가적인 스토리지 위치 내부에 기억될 수 있다. 별개의 비아키텍처 상 액세스가능한 스토리지의 이용은, 일부 경우에는, 정규 코드의 성능에 영향을 미치고 코히런시 관리를 더 복잡하게 만들 수도 있는 보호 태그 값들을 캐싱하기 위한 데이터 캐시들 16, 17 내부의 공간을 모두 사용해버리는 것을 피하기 위해 바람직하다. 태그들이 메인 메모리(18)로부터 액세스해야 하는 것보다 더 신속한 액세스를 위해, 비아키텍처 상 액세스가능한 스토리지로부터 태그 값들을 캐싱하기 위해 추가적인 태그 캐시(19)가 마이크로아키텍처에서 설치될 수도 있다. 어떤 태그 스토리지 위치(34)가 각각의 블록(30)에 대응하는지의 특정한 매핑은 로드/스토어 유닛(15)에 의해 제어되고 고정설치되거나 프로그래밍가능할 수도 있다. 도 2에서는 각각의 태그(32)가 물리 어드레스들의 블록과 관련되지만, 가상 메모리 어드레스 공간 내부의 가상 메모리 위치들과 관련된 보호 태그들(32)을 제공하는 것도 가능하지만, 이것은 각각의 메모리 액세스시에 추가적인 어드레스 변환을 요구할 수도 있다. 이 때문에, 보호 태그(32)를 물리 메모리 위치들과 관련시킴으로써, 성능을 향상시킬 수 있다. 일반적으로, 특정한 마이크로아키텍처 구현이 보호 태그들(32)이 물리 어드레스 공간의 대응하는 블록들(30)과 정확히 관련되는 방식은 선택이다. 일반적으로, 필요한 것은 주어진 블록의 메모리와 관련된 보호 태그(32)가 액세스되고 비교될 수 있는 것 뿐이다.
이 때문에, 태그 보호된 메모리 액세스의 발생이 필요할 때, (액세스할 어드레스 지정된 위치(44)를 식별하는 타겟 어드레스(42)와 관련되는) 어드레스 태그(40)가 어드레스 지정된 위치(44)를 포함하는 메모리 위치들의 블록(30)과 관련된 보호 태그(32)와 비교될 수 있다. 예를 들어, 도 2에서, 타겟 어드레스(42)는 도 2의 어드레스 공간에 44로 표기된 메모리 내부의 특정한 위치 B1을 가리킨다. 따라서, 위치 B1을 포함하는 위치들의 블록 B와 관련된 보호 태그 B를 타겟 어드레스(42)와 관련된 어드레스 태그(40)와 비교한다, 도 2의 상단에 나타낸 것과 같이, 어드레스 태그(4)는 타겟 어드레스 그 자체의 선택된 비트들의 함수로서 결정된다. 특히, 어드레스 태그는 어드레스 지정된 위치(44)로서 선택할 특정한 메모리 위치를 표시하기 위해 사용되지 않은 타겟 어드레스의 일부분 내부의 비트들로부터 결정된다. 예를 들어, 일부 아키텍처에서, 타겟 어드레스의 비트들의 상단 부분은 항상 부호 확장(모두 0들 또는 모두 1들) 등의 특정한 고정된 값을 가지므로, 이들 사용되지 않은 비트들을 임의의 태그 갑으로 오버라이트함으로써 어드레스 태그(40)를 사용하여 어드레스에 태그가 붙여질 수 있다. 특정한 어드레스 태그 값은 예를 들어 프로그래머 또는 컴파일러에 의해 선택될 수 있다. 어드레스 태그 및 보호 태그(32)는 비교적 작은 수의 비트들, 예를 들어, 4비트일 수 있으므로, 메모리 내부 및 타겟 어드레스 내부에서 많은 공간을 차지할 필요가 없다. 4비트의 태그 공간, 즉 16개의 태그들의 가능한 값을 제공하는 것은 다수의 공통된 종류의 메모리 액세스 에러를 검출하는데 충분할 수 있다.
이 때문에, 태그 보호된 메모리 액세스가 행해질 때, 어드레스 태그(40)와 어드레스 지정된 위치(44)를 포함하는 블록(30)과 관련된 보호 태그(32) 사이에서 비교가 행해지고, 이들이 일치하는지 여부에 대해 판정이 행해진다. 이때, 도 1의 예시적인 구성에서는, 로드/스토어 유닛(15)과 물리 메모리(18) 사이의 모든 위치에서 비교가 행해질 수 있다(그리고 사실상 이 경로를 따라 분배될 수 있다)는 것을 알 수 있다. 그러나, 본 실시예에서는, 간략을 위해 비교가 로드/스토어 유닛(15)에 의해 행해지는 것으로 설명한다. 로드/스토어 유닛(15)은 어드레스 태그(40)와 보호 태그(32)가 일치하였는지 여부를 표시하는 일치 표시를 발생한다. 예를 들어, 이와 같은 일치 표시는, 어드레스 태그(40)와 보호 태그(32) 사이에 불일치가 존재하는 경우 발생되는 결함 신호(60)이거나, 또는 일치가 존재하였는지 나타내는 상태 레지스터에 설치된 표시이거나, 에러가 검출된 어드레스 및/또는 에러를 유발한 명령의 명령 어드레스를 표시하기 위해 에러 보호에 추가된 엔트리일 수 있다.
도 3은 태그 보호된 메모리 액세스를 처리하는 흐름도를 나타낸 것이다. 메모리 액세스를 기동하는 명령이 어드레스 태그 및 타겟 태그를 지정한다. 도 2에 도시된 것과 같이, 다른 실시예에서는 어드레스 태그가 별개의 레지스터에 지정될 수도 있지만, 일부 경우에 어드레스 태그는 실제로 타겟 어드레스 그 자체의 비트들의 서브셋으로부터 유도된다. 스텝 50에서, 태그 보호된 메모리 액세스를 기동하는 명령과 마주친다. 이에 응답하여, 스텝 52에서, 메모리 액세스 회로(15)가 타겟 어드레스에 의해 식별된 어드레스 지정된 위치(44)에 대한 메모리 액세스를 기동한다. 또한, 스텝 54에서, 메모리 액세스 회로(15)는 타겟 어드레스에 의해 식별된 어드레스 지정된 위치(44)를 포함하는 메모리 위치들의 블록(30)과 관련되어 메모리 시스템에 기억되는 보호 태그(32)를 취득한다. 스텝 58에서, 보호 태그 및 어드레스 태그 사이에서 일치가 검출되는지 여부의 표시(예를 들어, 전술한 종류의 일치/불일치 보고 표시 중 어느 것)가 메모리 액세스 회로(15)에 의해 발생된다. 불일치를 보고하는데 사용되는 정확한 표시는 구현마다 다를 수 있다.
도 4는 일 실시예에서의 장치(60)의 대표예를 개략적으로 나타낸 것이다. MMU(20)의 일부인 어드레스 변환회로(62)는 (태그 부분(65)을 포함하는) 가상 어드레스를 수신한다. 어드레스 변환회로(62)는 가상 어드레스(64)를 메모리 시스템에서 사용하기 위한 물리 어드레스(66)로 변환한다. 메인 메모리와 한 개 이상의 캐시들을 포함하는 메모리(68)가 도 6에 총괄적으로 도시되어 있다. 어드레스 변환회로(62)는 페이지 테이블들을 참조하여 변환을 행하며, 이때 이들 페이지 테이블들 중에서 한 개의 예(70)(이것은 사실상 메모리 시스템 내부에 기억된다)가 도시되어 있다. 전술한 것과 같이, MMU는 빈번하게 사용된 변환을 캐시에 기억하기 위해 TLB를 갖는다. 페이지 테이블 엔트리(72)는 변환 정보 그 자체 이외에 추가적인 태그 보호 제어정보(74)를 포함한다. 변환을 행할 때, 어드레스 변환회로(62)는 그것이 발생하는 물리 어드레스 내부에 태그 보호 제어정보를 포함시킨다. 이것은, 예를 들어, 물리적인 메모리 위치를 지정하는데 사용되지 않고 그 대신에 다른 정보를 메모리 시스템에 전달하는데 사용되는 (본 발명에서는 물리 태그로 불리는) 어드레스 공간의 일부일 수 있다. 예를 들어, 64비트 어드레스 공간에서, 비트들 [55:0]은 가상 어드레스 부분을 구성하고 비트들 [63:56]은 가상 태그 부분을 구성하는 경우이다. 마찬가지로 물리 어드레스에서 비트 [55:0]은 물리 어드레스 부분을 구성하고 비트 [63:56]은 물리 태그 부분을 구성한다. 그것의 정의된 비트 공간이 무엇인지 상관없이, 이와 같은 물리 태그 부분은 선택된 정보를 메모리 시스템에 전달할 수 있으며, 예를 들어, 선택된 정보, 예를 들어 보호 태그와 비교하는 어드레스 태그를 메모리 시스템에 전달할 수 있지만, 이것은 물리 태그 부분 전체를 차지하지 않으며, 태그 보호 제어정보(74)도 전달될 수 있다.
태그 보호 검사회로(76)는 어드레스 태그(78)와 (이제는 물리 어드레스(66)의 일부인) 태그 보호 제어정보(TGC)(80)를 수신한다. 태그 보호 검사회로(76) 내부의 제어부(82)는 태그 보호 제어정보(TGC)(80)를 수신하고, 수신된 특정한 정보에 따라, 제어부가 보호 태그 검사가 행해지는지 여부를 판정한다. 어드레스 태그(78)와 어드레스 지정된 위치와 관련하여 기억된 해당 보호 태그(86)를 수신함으로써, 검사를 행하는 것은 태그 보호 검사회로(76) 내부의 비교부(84)이다. 도 4는, 제어부(82)도 메모리 액세스의 종류(예를 들어, 로드 또는 스토어, 즉 판독 또는 기록)의 표시를 수신하고, 제어부는 일부 실시예에서는 보호 태그 검사가 행해지는지 여부를 판정할 때 이것을 고려하도록 구성된다.
도 5a, 도 5b 및 도 5c는 태그 보호 제어정보를 포함하는 예시적인 페이지 테이블 엔트리들을 나타낸 것이다. 도 5a의 페이지 테이블 엔트리(90)는, 변환 정보(91) 그 자체 이외에, 다양한 허가 정보(92) 및 한 개의 태그 보호 제어 비트((3)를 포함한다. 이 때문에, 페이지 테이블 엔트리(90)를 사용하여 발생된 물리 어드레스에 대해, 보호 태그 검사가 완전한 오프 또는 완전한 온으로만 전환될 수 있다. 도 5b에 도시된 페이지 테이블 엔트리(94)는 변환 정보 그 자체(95) 이외에, 다양한 허가 정보(6) 및 태그 보호 제어 비트들의 세트(97)를 포함한다. 이 때문에, 페이지 테이블 엔트리(97)를 사용하여 발생된 물리 어드레스에 대해, 태그 보호 제어 비트들의 세트((7)의 각각과 관련된 의미에 따라, 보호 태그 검사가 다양하게 제어될 수 있다. 도 5c의 페이지 테이블 엔트리(98)는, 페이지 테이블 엔트리에서 설정가능한 복수의 태그 보호 제어 비트들의 일례를 제공하며, 변환 정보(99) 그 자체 이외에, 다양한 허가 정보(100)를 포함한다. 이것은 판독 액세스를 위한 태그 보호 제어(101) 및 기록 액세스를 위한 태그 보호 제어(102)를 더 포함한다. 이것들은 각각 단지 1 비트이므로, 각각의 종류의 액세스에 대해 보호 태그 검사가 완전한 오프 또는 완전한 온으로 전환될 수 있다. 그러나, 여기에서도 각각에 대해 복수의 비트가 상정가능하므로, 추가로 정의된 컨텍스트 제약에 따라, 각각의 종류의 액세스에 대해 보호 태그 검사가 행해질 것인지 여부에 대해 더 큰 제어가 행해질 수 있다. 예를 들어, 일부 실시예에서, 복수의 비트는, 어드레스 지정된 위치에 대한 데이터 액세스에 대해, 어드레스 지정된 위치에 대한 명령 페치들에 대해, 그리고 어드레스 지정된 위치로부터 페치된 명령들을 사용하여 행해진 데이터 액세스에 대해, 맞춤형의 태그 검사 규칙을 정의한다. 이들 컨텍스트들 각각에 대해, 시스템 요구사항에 따라 보호 태그 검사가 온 또는 오프로 전환될 수 있다.
도 6은 일 실시예에서 메모리가 할당될 때 페이지 테이블 비트들이 설정되는 방법을 나타낸 흐름도이다. 스텝 110에서 흐름이 개시하는데, 이 스텝에서는 메모리 할당이 요구될 때가지 프로세스가 대기한다. 메모리 할당이 요구되면, 스텝 112에서 이 할당이 유저 프로세스용인지 또는 커널 프로세스용인지 판정한다. 유저 프로세스에 대해서는, 스텝 114로 흐름이 진행하여, (예를 들어, 도 5a 내지 도 5c의 에들 중에서 어느 한 개에 의해) 원하는 태그 보호 검사 환경설정이 대응하는 페이지 테이블 엔트리 또는 엔트리들에 설정된다. 커널 프로세스에 대해서는, 스텝 116으로 흐름이 진행하여, (예를 들어, 도 5a 내지 도 c의 예들 중에서 어느 한 개에 의해) 원하는 태그 보호 검사 환경설정이 대응하는 페이지 테이블 엔트리 또는 엔트리들에 설정된다. 한가지 예를 들면, 태그 보호 검사는 유저 공간 할당에 대해서는 온으로 전환되지만, 커널 공간 할당에 대해서는 오프된다. 참고로, 이것은 각각에 대한 페이지 테이블 엔트리를 통해 발생하고 지정된 물리 어드레스가 2개의 다른 가상 어드레스에 대응하여(유저 공간 할당에 대해 한 개, 커널 공간 할당에 대해 한 개) 액세스되기 때문에, 동일한 물리 위치/보호 태그에 대한 태그 보호 검사는 한가지 액세스(예를 들어, 유저)에 대해서 발생하지만, 나머지(커널)에 대해서는 발생하지 않도록 구성될 수 있다는 점에 주목하기 바란다. 양쪽 경로에 의해 흐름이 스텝 118에 도달하는데, 여기에서는 할당이 명령에 대한 것인지 또는 데이터 스토리지에 대한 것인지 결정하고, 각각에 대해 (각각 스텝 120 및 122에서) 별개의 태그 보호 제어 환경설정이 행해진다. 도 6은 단지 일례의 프로세스를 나타낸 것으로, 예를 들어, 유저/커널과 명령/데이터 모두에 대한 구별이 행해질 필요는 없다는 것은 명백하다. 일부 실시예에서는 이들 중에서 단지 한 개가 사용된다.
도 7은 일 실시예에서 페이지 테이블 엔트리 내부의 태그 보호 제어정보에 따라 행해지는 보호 태그 검사에 대한 제어를 나타낸 흐름도이다. 흐름이 스텝 130에서 개시하는데, 이 스텝에서는 가상 어드레스가 수신될 때까지 프로세스를 대기한다. 가상 어드레스가 수신되면, 스텝 132에서, 가상 어드레스가 물리 어드레스로 변환되고, 페이지 테이블 엔트리로부터의 태그 보호 제어정보가 물리 어드레스의 물리 태그 부분에 포함된다. 그후, 스텝 134에서, 물리 어드레스가 메모리 시스템에서 액세스하려고 할 때, (태그 보호 제어정보에 의해 정의되고, 아마도 액세스 종류 등의 다른 컨텍스트 정보를 참조하여) 보호 태그 검사가 인에이블되는지 여부를 판정한다. 보호 태그 검사가 인에이블되면, 스텝 136에서 보호 태그 검사가 행해지고, (이것은 한가지 가능한 필수적이 아닌 보호 태그 검사 실패의 결과이므로, 금지되지 않는 경우에는) 물리 어드레스에 의해 엑세스된 위치에 대한 메모리 액세스가 행해진다. 그렇지 않으면, 스텝 138에서 보호 태그 검사가 행해지지 않고 물리 어드레스에 의해 어드레스가 지정된 위치에 대한 메모리 액세스가 행해진다.
도 9는 사용될 수 있는 시뮬레이터 구현예를 나타낸 것이다. 전술한 실시예는 해당 기술을 지원하는 특정한 처리 하드웨어를 작동하기 위한 장치 및 방법에 관해 본 발명을 구현하지만, 컴퓨터 프로그램의 사용을 통해 구현되는 본 발명에서 설명한 실시예에 따라 명령 실행 환경을 제공하는 것도 가능하다. 이와 같은 컴퓨터 프로그램은, 하드웨어 아키텍처의 소프트웨어 기반의 구현을 제공하는 한, 시뮬레이터로 부르는 경우가 많다. 다양한 시뮬레이터 컴퓨터 프로그램은 에뮬레이터, 가상머신, 모델, 및 동적 이진 변환기를 포함하는 이진 변환기를 포함한다. 보통, 시뮬레이터 구현은, 옵션으로 시뮬레이터 프로그램(210)을 지원하는 호스트 운영체계(220)를 실행하는 호스트 프로세서(230) 상에서 실행된다. 일부 구성에서는, 하드웨어와 제공된 명령 실행 환경 사이에 복수 층의 시뮬레이션이 존재하고, 및/또는 동일한 호스트 프로세서 상에서 복수의 별개의 명령 실행 환경이 제공된다. 역사적으로, 합당한 속도에서 실행되는 시뮬레이터 구현을 제공하기 위해 강력한 프로세서들이 요구되었지만, 이와 같은 접근방법은, 호환성이나 재사용 이유로 인해 다른 프로세서에 대해 네이티브한 코드를 실행하려는 요구가 있을 때 등과 같은, 특정한 상황에서 정당화된다. 예를 들어, 시뮬레이터 구현은, 호스트 프로세서 하드웨어에 의해 지원되지 않는 추가적인 기능을 갖는 명령 실행 환경을 제공하거나, 보통 다양한 하드웨어 아키텍처와 관련된 명령 실행 환경을 제공한다. 시뮬레이터의 개관에 대해서는 "Some Efficient Architecture Simulation Techniques", Robert Bedichek, Winter 1990 USENIX Conference, Pages 53-63에 기재되어 있다.
본 실시예를 특정한 하드웨어 구성 또는 특징을 참조하여 설명하였지만, 시뮬레이션된 실시예에서는, 적절한 소프트웨어 구성 또는 특징에 의해 동등한 기능이 제공된다. 예를 들어, 특정한 회로가 시뮬레이션된 실시예에서는 컴퓨터 프로그램 논리로 구현된다. 마찬가지로, 레지스터 또는 캐시 등의 메모리 하드웨어도 시뮬레이션된 실시예에서는 소프트웨어 데이터 구조로 구현된다. 전술한 실시예에서 참조한 한 개 이상의 하드웨어 구성요소들이 호스트 하드웨어(예를 들어, 호스트 프로세서(230) 상에 존재하는 구성에서는, 적절한 경우에, 일부 시뮬레이션된 실시예가 호스트 하드웨어를 이용한다.
시뮬레이터 프로그램(210)은, 컴퓨터 판독가능한 기억매체(212)(이것은 비일시적인 매체일 수도 있다)에 기억되고, 시뮬레이터 프로그램(210)에 의해 모델링되고 있는 하드웨어 아키텍처의 응용 프로그램 인터페이스와 동일한 타겟 코드(200)(이것은 어플리케이션, 운영체계 및 하이퍼바이저를 포함한다)에 대한 프로그램 인터페이스(명령 실행 환경)를 제공한다. 따라서, 타겟 코드(200)의 프로그램 명령들은 시뮬레이터 프로그램(210)을 사용하여 명령 실행 환경 내에서 실행됨으로써, 전술한 장치(60)의 하드웨어 특징을 실제로 갖지 않는 호스트 컴퓨터(230), 특히 어드레스 변환회로와 태그 보호 검사회로(76)가 이들 특징을 에뮬레이트할 수 있다. 예를 들어, 시뮬레이터 프로그램(210)은 가상 어드레스를 물리 어드레스로 변환하는 어드레스 변환 로직(214)을 포함하고, 어드레스 지정된 위치들을 액세스하고 보호 태그 검사를 행하는 메모리 액세스 로직(216)을 포함한다. 이 때문에, 시뮬레이터 프로그램(210)은 보호 태그와 어드레스 태그의 비교를 행하고 보호 태그와 어드레스 태그 사이의 불일치가 검출되었는지 보고하는 메모리 액세스 프로그램 로직(216)을 더 포함한다. 또한, 시뮬레이터 프로그램(110)은 하드웨어 실시예가 태그를 설정하는 방식과 대응하는 방식으로 페이지 테이블 엔트리들을 설정하는 명령을 포함하는 페이지 테이블 설정 프로그램 로직을 포함한다.
전체적으로 요약하면, 장치는 가상 어드레스들과 물리 어드레스들 사이의 기억된 페이지 테이블 매핑들에 따라 가상 어드레스들의 물리 어드레스들로의 변환을 행하는 어드레스 변환회로를 구비한다. 기억된 페이지 테이블 매핑들은 태그 보호 제어정보를 포함한다. 이 장치는, 타겟 물리 어드레스에 응답하여 태그 보호된 메모리 액세스를 행하는 메모리 액세스 회로를 구비하고, 태그 보호된 메모리 액세스는 타겟 물리 어드레스와 관련된 어드레스 태그를 타겟 물리 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련되어 기억된 보호 태그와 비교하는 보호 태그 검사를 포함한다. 메모리 액세스 회로는, 태그 보호 제어정보에 따라 보호 태그 검사를 행하지 않고, 타겟 물리 어드레스에 응답하여 어드레스 지정된 위치에 대해 태그 보호되지 않은 메모리 액세스를 행하도록 구성된다.
본 발명에서, 단어 "하도록 구성된"은 장치의 구성요소가 정의된 동작을 행할 수 있는 구성을 갖는다는 것을 의미하기 위해 사용된다. 이와 관련하여, "구성"은 하드웨어 또는 소프트웨어의 배치 또는 상호접속 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 갖거나, 프로세서 또는 기타의 처리장치가 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은 이 장치의 구성요소가 정의된 동작을 제공하기 위해 어떤 식으로 변경될 필요가 있는 것을 시사하는 것은 아니다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.

Claims (12)

  1. 장치로서,
    가상 어드레스들과 물리 어드레스들 사이의 기억된 페이지 테이블 매핑들에 따라 가상 어드레스들의 물리 어드레스들로의 변환을 행하는 어드레스 변환회로를 구비하고, 이때 상기 기억된 페이지 테이블 매핑들은 태그 보호 제어정보를 포함하고,
    상기 장치는, 타겟 물리 어드레스에 응답하여 태그 보호된 메모리 액세스를 행하는 메모리 액세스 회로를 더 구비하고, 상기 태그 보호된 메모리 액세스는 상기 타겟 물리 어드레스와 관련된 어드레스 태그를 상기 타겟 물리 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련되어 기억된 보호 태그와 비교하는 보호 태그 검사를 포함하고,
    상기 메모리 액세스 회로는, 상기 태그 보호 제어정보에 따라 상기 보호 태그 검사를 행하지 않고, 상기 타겟 물리 어드레스에 응답하여 상기 어드레스 지정된 위치에 대해 태그 보호되지 않은(non-tag-guarded) 메모리 액세스를 행하도록 구성된 장치.
  2. 제 1항에 있어서,
    상기 기억된 페이지 테이블 매핑들은 각각의 페이지 테이블 엔트리에 대한 태그 보호 제어 비트를 포함하고, 상기 메모리 액세스 회로는 상기 태그 보호 제어 비트가 소정의 제1 값을 갖는 것에 응답하여 상기 어드레스 지정된 위치에 대한 태그 보호된 메모리 액세스를 행하고, 상기 메모리 액세스 회로는 상기 태그 보호 제어 비트가 소정의 제2 값을 갖는 것에 응답하여 상기 어드레스 지정된 위치에 대한 태그 보호되지 않은 메모리 액세스를 행하는 장치.
  3. 제 1항에 있어서,
    상기 기억된 페이지 테이블 매핑들은 각각의 페이지 테이블 엔트리에 대한 복수의 태그 보호 제어 비트들을 포함하고, 상기 메모리 액세스 회로는 상기 복수의 태그 보호 제어 비트들 중에서 적어도 한 개가 소정의 제1 값을 갖는 것에 응답하여 상기 어드레스 지정된 위치에 대한 태그 보호된 메모리 액세스를 행하고, 상기 메모리 액세스 회로는 태그 보호 제어 비트가 소정의 제2 값을 갖는 것에 응답하여 상기 어드레스 지정된 위치에 대한 태그 보호되지 않은 메모리 액세스를 행하는 장치.
  4. 제 3항에 있어서,
    각각의 페이지 테이블 엔트리에 대한 상기 복수의 태그 보호 제어 비트들은 메모리 액세스의 종류에 따라 태그 검사 규칙을 지정하는 장치.
  5. 제 4항에 있어서,
    각각의 페이지 테이블 엔트리에 대한 상기 복수의 태그 보호 제어 비트들은,
    상기 어드레스 지정된 위치에 대한 데이터 액세스들,
    상기 어드레스 지정된 위치에 대한 명령 페치들, 및
    상기 어드레스 지정된 위치로부터 페치된 명령들을 사용하여 행해진 데이터 액세스
    중에서 적어도 한 개에 적용되도록 구성된 태그 검사 규칙을 정의하는 장치.
  6. 제 4항 또는 제 5항에 있어서,
    각각의 페이지 테이블 엔트리에 대한 상기 복수의 태그 보호 제어 비트들은 로드 연산 및 스토어 연산에 대해 다른 태그 검사 규칙을 정의하는 장치.
  7. 제 4항 내지 제 6항 중 어느 한 항에 있어서,
    각각의 페이지 테이블 엔트리에 대한 상기 복수의 태그 보호 제어 비트들은 상기 어드레스 지정된 위치에 대한 기록 액세스에 대해 태그 보호되지 않은 메모리 액세스 동작을 지정하는 태그 검사 규칙을 정의하는 장치.
  8. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 장치는, 상기 어드레스 지정된 위치가 명령에 대해 할당되는지 또는 데이터 스토리지에 대해 할당되는지에 따라 상기 기억된 페이지 테이블 매핑들 내부의 상기 태그 보호 제어정보를 설정하도록 구성된 장치.
  9. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 장치는, 상기 어드레스 지정된 위치가 커널 공간으로서 할당되는지 또는 유저 공간으로서 할당되는지에 따라 상기 기억된 페이지 테이블 매핑들 내부의 상기 태그 보호 제어정보를 설정하도록 구성된 장치.
  10. 방법으로서,
    가상 어드레스들과 물리 어드레스들 사이의 기억된 페이지 테이블 매핑들에 따라 가상 어드레스들의 물리 어드레스들로의 변환을 행하는 단계를 포함하고, 이때 상기 기억된 페이지 테이블 매핑들은 태그 보호 제어정보를 포함하고,
    상기 방법은,
    상기 태그 보호 제어정보에 따라,
    타겟 물리 어드레스에 응답하여, 상기 타겟 물리 어드레스와 관련된 어드레스 태그를 상기 타겟 물리 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련되어 기억된 보호 태그와 비교하는 보호 태그 검사를 포함하는 태그 보호된 메모리 액세스와,
    상기 타겟 물리 어드레스에 응답하여 상기 태그 보호 검사를 행하지 않고 상기 어드레스 지정된 위치에 대한 태그 보호되지 않은(non-tag-guarded) 메모리 액세스 중에서 한 개를 행하는 단계를 더 포함하는 방법.
  11. 호스트 데이터 처리장치를 제어하여 타겟 프로그램 코드의 명령들의 실행을 위한 명령 실행 환경을 제공하는 컴퓨터 프로그램으로서,
    가상 어드레스들과 물리 어드레스들 사이의 기억된 페이지 테이블 매핑들에 따라 가상 어드레스들의 물리 어드레스들로의 변환을 행하는 어드레스 변환 프로그램 로직을 포함하고, 이때 상기 기억된 페이지 테이블 매핑들은 태그 보호 제어정보를 포함하고,
    상기 컴퓨터 프로그램은, 타겟 물리 어드레스에 응답하여 태그 보호된 메모리 액세스를 행하는 메모리 액세스 프로그램 로직을 더 포함하고, 상기 태그 보호된 메모리 액세스는 상기 타겟 물리 어드레스와 관련된 어드레스 태그를 상기 타겟 물리 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련되어 기억된 보호 태그와 비교하는 보호 태그 검사를 포함하고,
    상기 메모리 액세스 프로그램 로직은, 상기 태그 보호 제어정보에 따라 상기 보호 태그 검사를 행하지 않고, 상기 타겟 물리 어드레스에 응답하여 상기 어드레스 지정된 위치에 대해 태그 보호되지 않은(non-tag-guarded) 메모리 액세스를 행하도록 구성된 컴퓨터 프로그램.
  12. 청구항 10에 기재된 컴퓨터 프로그램을 기억하는 기억매체.
KR1020207023394A 2018-02-02 2019-01-25 메모리 액세스시의 보호 태그 검사 제어 KR20200116472A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1801748.3A GB2570691B (en) 2018-02-02 2018-02-02 Controlling guard tag checking in memory accesses
GB1801748.3 2018-02-02
PCT/GB2019/050210 WO2019150081A1 (en) 2018-02-02 2019-01-25 Controlling guard tag checking in memory accesses

Publications (1)

Publication Number Publication Date
KR20200116472A true KR20200116472A (ko) 2020-10-12

Family

ID=61730933

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207023394A KR20200116472A (ko) 2018-02-02 2019-01-25 메모리 액세스시의 보호 태그 검사 제어

Country Status (9)

Country Link
US (1) US11138128B2 (ko)
EP (1) EP3746899B1 (ko)
JP (1) JP7291149B2 (ko)
KR (1) KR20200116472A (ko)
CN (1) CN111556996B (ko)
GB (1) GB2570691B (ko)
IL (1) IL275872B2 (ko)
TW (1) TWI790350B (ko)
WO (1) WO2019150081A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762566B2 (en) * 2018-01-22 2023-09-19 Arm Limited Programmable mapping of guard tag storage locations
GB2570691B (en) * 2018-02-02 2020-09-09 Advanced Risc Mach Ltd Controlling guard tag checking in memory accesses
GB2578924B (en) * 2018-11-14 2021-09-29 Advanced Risc Mach Ltd An apparatus and method for controlling memory accesses
US20220342984A1 (en) * 2019-10-25 2022-10-27 Hewlett-Packard Development Company, L.P. Integrity monitor
EP3916568B1 (en) * 2020-05-29 2024-07-17 ARM Limited Tag checking apparatus and method

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265227A (en) * 1989-11-14 1993-11-23 Intel Corporation Parallel protection checking in an address translation look-aside buffer
JP2788836B2 (ja) * 1992-05-15 1998-08-20 インターナショナル・ビジネス・マシーンズ・コーポレイション ディジタルコンピュータシステム
US9390031B2 (en) * 2005-12-30 2016-07-12 Intel Corporation Page coloring to associate memory pages with programs
US7761676B2 (en) * 2006-12-12 2010-07-20 Intel Corporation Protecting memory by containing pointer accesses
US8656121B2 (en) * 2011-05-17 2014-02-18 International Business Machines Corporation Facilitating data coherency using in-memory tag bits and tag test instructions
BR112017002780B1 (pt) * 2014-09-01 2023-01-31 Huawei Technologies Co., Ltd Método e aparelho de acesso de arquivo, e sistema de armazenamento
US10089240B2 (en) * 2014-12-26 2018-10-02 Wisconsin Alumni Research Foundation Cache accessed using virtual addresses
US9652375B2 (en) * 2015-06-22 2017-05-16 Intel Corporation Multiple chunk support for memory corruption detection architectures
US10162694B2 (en) 2015-12-21 2018-12-25 Intel Corporation Hardware apparatuses and methods for memory corruption detection
GB2570691B (en) * 2018-02-02 2020-09-09 Advanced Risc Mach Ltd Controlling guard tag checking in memory accesses
GB2572158B (en) * 2018-03-20 2020-11-25 Advanced Risc Mach Ltd Random tag setting instruction

Also Published As

Publication number Publication date
TWI790350B (zh) 2023-01-21
US20200272575A1 (en) 2020-08-27
JP7291149B2 (ja) 2023-06-14
WO2019150081A1 (en) 2019-08-08
IL275872A (en) 2020-08-31
EP3746899A1 (en) 2020-12-09
GB2570691A (en) 2019-08-07
JP2021512400A (ja) 2021-05-13
IL275872B2 (en) 2024-01-01
GB201801748D0 (en) 2018-03-21
TW201941063A (zh) 2019-10-16
IL275872B1 (en) 2023-09-01
CN111556996B (zh) 2024-09-24
CN111556996A (zh) 2020-08-18
US11138128B2 (en) 2021-10-05
EP3746899B1 (en) 2023-06-07
GB2570691B (en) 2020-09-09

Similar Documents

Publication Publication Date Title
JP7291149B2 (ja) メモリ・アクセスにおける保護タグ・チェックの制御
CN112639750B (zh) 用于控制存储器存取的装置及方法
KR20200107997A (ko) 다중 가드 태그 설정 명령어
KR20230017832A (ko) Tag 체킹 장치 및 방법
JP7349437B2 (ja) メモリ・アクセスにおける保護タグ・チェックの制御
KR20230101826A (ko) 캐퍼빌리티들을 사용하여 메모리에 대한 액세스를 제약하기 위한 기술
TWI801622B (zh) 用於處理保護標籤損失的裝置、方法、電腦程式、與儲存媒體
CN117222990A (zh) 用于使用能力约束对存储器的访问的技术
JP7369699B2 (ja) データ処理装置におけるアドレス変換
KR20240159950A (ko) 메모리 어드레스 공간의 페이지에 대한 read-as-X 속성
TW202340955A (zh) 使用能力約束記憶體存取之技術

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20200813

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20220111

Comment text: Request for Examination of Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20240822

Patent event code: PE09021S01D