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

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

Info

Publication number
KR20200116473A
KR20200116473A KR1020207023395A KR20207023395A KR20200116473A KR 20200116473 A KR20200116473 A KR 20200116473A KR 1020207023395 A KR1020207023395 A KR 1020207023395A KR 20207023395 A KR20207023395 A KR 20207023395A KR 20200116473 A KR20200116473 A KR 20200116473A
Authority
KR
South Korea
Prior art keywords
tag
memory access
subset
sequence
address
Prior art date
Application number
KR1020207023395A
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 KR20200116473A publication Critical patent/KR20200116473A/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (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는 예시적인 시스템에서의 메모리 액세스 회로를 개략적으로 나타낸 것이다.
도 5는 예시적인 시스템에서의 메모리 액세스 회로를 더욱 상세히 나타낸 것이다.
도 6은 일 실시예에서 메모리 액세스들의 서브셋에 보호 태그 검사가 적용되는 방식을 나타낸 흐름도이다.
도 7은 일 실시예에서 메모리 액세스들의 서브셋에 보호 태그 검사가 적용되는 방식을 나타낸 흐름도이다.
도 8은 어드레스 변환 로직을 지원하는 시뮬레이터의 일례를 나타낸 것이다.
적어도 일부 실시예는,
타겟 어드레스에 응답하여 태그 보호된 메모리 액세스를 행하는 메모리 액세스 회로를 구비하고, 상기 태그 보호된 메모리 액세스는 상기 타겟 어드레스와 관련된 어드레스 태그를 상기 타겟 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련하여 기억되는 보호 태그와 비교하는 보호 태그 검사를 포함하고,
상기 메모리 액세스 회로는 어드레스 지정된 위치들의 시퀀스를 지정하는 수신된 타겟 어드레스들의 시퀀스에 응답하여 상기 어드레스 지정된 위치들의 시퀀스의 서브셋에 대해 상기 보호 태그 검사를 행하지 않는 태그 보호되지 않은(non-tag-guarded) 메모리 액세스를 행하는 장치를 제공한다.
전술한 종류의 특정한 메모리 이용 에러를 방지하는 한가지 접근방법은 한 개 이상의 메모리 위치들의 블록들과 관련하여 메모리 시스템에 기억되는 보호 태그들을 설치하는 것이다. 메모리 시스템 내의 특정한 어드레스 지정된 위치를 식별하는 타겟 어드레스에 근거하여 태그 보호된 메모리 액세스가 요구될 때, 메모리 액세스 회로는 타겟 어드레스와 관련되는 어드레스 태그를 타겟 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련하여 메모리 시스템에 기억되는 보호 태그와 비교한다. 메모리 액세스 회로는 보호 태그와 어드레스 태그 사이에 일치가 검출되는지 여부의 표시를 발생한다. 이와 같은 표시는, 메모리 액세스의 진행이 허용되는지 여부 또는 후속 동작들을 계속할 수 있는지 여부를 제어하는데 사용되거나, 또는 메모리 액세스가 평소대로 계속되도록 허용하면서 이 표시가 단순히 보고될 수도 있다.
이것은, 예를 들어, C 또는 C++ 등의 메모리 비보안 언어에 근거하여 코드를 컴파일하는 컴파일러가, 메모리의 영역들을 초기화할 때, 코드가 액세스할 것으로 예측되는 메모리의 블록들의 보호 태그들을 특정한 값들로 설정할 수 있으며, 대응하는 어드레스 태그 값들을 이들 블록을 가리키는 타겟 어드레스들과 관련시킬 수 있다. 메모리 이용 에러가 발생하고, 예를 들어, 어드레스 포인터가 범위를 벗어나 사용되거나 초기화된 유효한 범위의 경계들을 벗어나 확장되는 경우, 어드레스 지정된 위치와 관련된 보호 태그가 타겟 어드레스와 관련된 어드레스 태그와 일치하지 않을 가능성이 있으며, 이 경우 일치가 검출되는지 여부의 표시를 이용하여 에러 처리 응답이나 에러 보고 메카니즘을 기동할 수 있다. 취해지는 특정한 응답은 실행되고 있는 소프트웨어의 특정한 요구에 의존하거나 아키텍처의 특정한 마이크로 아키텍처 상 구현에 의존할 수 있다. 이 때문에, 고급 언어가 메모리 액세스 에러에 대해 보호하기 위해 실행 시간 에러 검사를 행하는 수단을 갖고 있지 않더라도, 컴파일된 코드에 대해 사용된 ISA가 이와 같은 검사를 행하는 아키텍처상 특징을 포함한다.
그러나, 이와 같은 보호 태그들의 검사는 어떤 맥락에서는 덜 바람직한 보호 태그 검사를 행함에 있어서 오버헤드를 발생할 수 있다. 전술한 장치는, 타겟 어드레스를 취급할 때, 어드레스 지정된 위치들에 대한 메모리 액세스는 보호 태그 검사가 일부 메모리 액세스에 대해서만 행해지게 하고 나머지에 대해서는 행해지지 않게 한다. 이 때문에, 타겟 어드레스에 응답하여(또는 이와 달리 말하면 타겟 어드레스를 지정하는 메모리 액세스 요구에 응답하여), 메모리 액세스 회로는, 보호 태그 검사가 행해지지 않고 메모리 액세스 그 자체만 행해지는 타겟 어드레스들(메모리 액세스 요구들)을 선택하고, 메모리 액세스 그 자체 이외에 보호 태그 검사가 행해지는 나머지 타겟 어드레스들(메모리 액세스 요구들)을 선택한다. 이에 따라, 보호 태그 검사를 실행하는 전술한 오버헤드 부담이 관리될 수 있는데, 즉 서브셋이 정의되는 방식에 따라 부담이 비례하여 증가하거나 감소할 수 있다. 더구나, 본 발명은, 모든 액세스들이 검사되지는 않을 때에도, 보호 태그 검사로부터의 이익이 여전히 얻어질 수 있다는 것을 인식하고 있다. 예를 들어, 충분한 기간에 걸쳐 실행하면, 어떤 식으로 정의된 보호 태그 규칙을 위반하는 액세스들에 관해 해결을 필요로 하는 문제를 식별하는데 여전히 충분할 수 있다. 또 다른 예로서, 다수의 장치들이 본 발명에서 설명하는 실시예에 대해 설명한 것과 같이 배치되고, 이에 따라 이들 다수의 장치들로부터의 피드백은, 어떤 주어진 개별 장치가 그것이 실행하는 메모리 액세스들의 (아마도 다소 작은) 서브셋에 대해서만 보호 태그 검사를 행하고 있다는 사실을 보충하는 충분히 큰 샘플의 데이터를 제공할 수 있다. 따라서, 일종의 "클라우드 소스(crowd-sourced)" 피드백 메카니즘이 사용된다.
이때, 보호 태그 검사가 행해지지 않는 이들 메모리 액세스로서의 서브셋의 정의는 간단히 반전될 수도 있는데, 즉 서브셋이 보호 태그 검사가 행해지는 메모리 액세스들로서 해석될 수도 있다는 것이 명백하다. 이와 같은 관찰내용은 본 발명에서 설명하는 실시예들 전체에 걸쳐 적용된다.
보호 태그 검사가 행해지지 않는 서브셋은 다양하게 정의 및 제어될 수 있지만, 일부 실시예에서는, 장치가 서브셋 환경설정 데이터 스토리지를 구비하고, 서브셋이 서브셋 환경설정 데이터 스토리지에 기억된 서브셋 환경설정 데이터에 의해 정의된다. 따라서, 이와 같은 서브셋 환경설정 데이터의 설정은 서브셋의 정의에 대한 제어를 허용한다.
서브셋 환경설정 데이터 스토리는 환경설정 레지스터이어도 된다.
서브셋 환경설정 데이터가 정의되는 방식은 다양한 형태를 취할 수 있지만, 일부 실시예에서는, 서브셋 환경설정 데이터가 분율(fraction)을 정의하고, 메모리 액세스 회로는 서브셋 환경설정 데이터에 응답하여, 어드레스 지정된 위치들의 시퀀스의 서브셋이 분율과 일치하도록 태그 보호되지 않은 메모리 액세스를 선택적으로 행한다. 이와 같은 분율은 다양하게 정의되지만, 예를 들어, 백분율로 해석될 수 있으며, 따라서 정의된 백분율의 메모리 액세스들이 보호 태그 검사 없이 행해진다.
일부 실시예에서, 서브셋 환경설정 데이터는 정수값을 정의하고, 메모리 액세스 회로는 서브셋 환경설정 데이터에 응답하여, 어드레스 지정된 위치들의 시퀀스 내부의 정수값의 서수 배수들(ordinal multiples)에 대응하는 어드레스 지정된 위치들에 대해 태그 보호되지 않은 메모리 액세스를 행한다. 즉, 서브셋 환경설정 데이터는 정수 n을 정의하는 것으로 기술되고, 메모리 액세스 회로는 1/n 메모리 액세스마다 태그 보호되지 않은 메모리 액세스를 행한다.
일부 실시예에서, 서브셋 환경설정 데이터는 타겟 값을 정의하고, 메모리 액세스 회로는 서브셋 환경설정 데이터에 응답하여, 어드레스 지정된 위치들의 시퀀스의 서브셋이 소정의 기간에 걸쳐 타겟 값과 통계적으로 일치하도록 태그 보호되지 않은 메모리 액세스를 행한다. 이에 따르면, 메모리 액세스 회로는 수행된 태그 보호된 메모리 액세스들의 횟수와 수행된 태그 보호되지 않은 메모리 액세스들의 횟수의 통계적 일람(statistical view)을 수집하도록 구성될 수 있으며, 이들 횟수의 비율이 이 비율을 원하는 값으로 조종하기 위해 다음 메모리 액세스에 대한 보호 태그 검사를 할 것인지 여부의 판정에 영향을 미칠 수 있다.
적어도 일부 실시예는, 방법으로서,
타겟 어드레스에 응답하여 태그 보호된 메모리 액세스를 행하는 단계를 포함하고, 상기 태그 보호된 메모리 액세스는 상기 타겟 어드레스와 관련된 어드레스 태그를 상기 타겟 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련하여 기억되는 보호 태그와 비교하는 보호 태그 검사를 포함하고,
상기 방법은, 어드레스 지정된 위치들의 시퀀스를 지정하는 수신된 타겟 어드레스들의 시퀀스에 응답하여, 상기 어드레스 지정된 위치들의 시퀀스의 서브셋에 대해 상기 보호 태그 검사를 행하지 않는 태그 보호되지 않은(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는 일 실시예에 있어서 장치(6)의 대표예를 개략적으로 나타낸 것이다. 메모리 액세스 회로(62)는 (어드레스 태그 부분(65)을 포함하는) 타겟 어드레스를 수신한다. 메모리 액세스 회로(62)는 타겟 어드레스(64)를 이용하여 통상의 방법으로 메모리(66)에 대한 필요한 메모리 액세스를 행한다. 그러나, 메모리 액세스 회로(62)는 보호 태그 검사회로(67) 및 서브셋 제어회로(68)를 더 구비하고, 서브셋 제어회로(68)는 수신된 타겟 어드레스들의 서브셋에 대해 보호 태그 검사가 행해지지 않도록 (인에이블 신호를 이용하여) 보호 태그 검사회로(67)의 구동을 제어한다. 보로 태그 검사가 행해질 때, 보호 태그 검사회로(67)는 어드레스 태그(65)와 수신된 보호 태그(69)가 전술한 것과 같이 일치하는지 여부를 판정한다. 이들이 일치하는지 아닌지를 표시하기 위해 일치 표시가 발생된다.
도 5는 일 실시예에서의 장치(60)의 메모리 액세스 회로(62)의 일부 구성요소들을 더욱 상세히 나타낸 것이다. 메모리 액세스 회로(62)는 서브셋 정의 레지스터(70), 어드레스 계수회로(72) 및 제어회로(74)를 구비한다. 보호 태그 검사가 행해지지 않는 수신된 타겟 어드레스들의 서브셋을 정의하기 위해 서브셋 정의 레지스터(70)의 콘텐츠가 설정된다. 이것은, 예를 들어, 분율을 정의하므로, (어드레스 계수회로(72)를 사용하여 계수된) 메모리 액세스들의 정의된 분율이 보호 태그 검사가 없이 행해진다. 이와 달리, 이것은 정수 n을 정의하므로, 메모리 액세스 회로가 (어드레스 계수회로(72)에서 액세스들을 계수하는) 1/n 메모리 액세스마다 태그 보호되지 않은 메모리 액세스를 수행한다. 메모리 액세스 회로는 수행된 태그 보호된 메모리 액세스들의 횟수와 수행된 태그 보호되지 않은 메모리 액세스들의 횟수(어드레스 계수회로(72)를 참조)의 통계적 일람을 수집하도록 구성되고, 그후 이들 횟수의 비율은 이 비율을 원하는 값을 향해 조종하기 위해 다음 메모리 액세스에 대해 보호 태그 검사를 행할 것인지 여부의 결정에 영향을 미칠 수 있다. 이 때문에, 제어회로(64)는 서브셋 정의 레지스터(70)와 어드레스 계수회로(72)를 액세스하여, 주어진 타겟 어드레스에 대해, 그것이 인에이블 신호를 사용하여 보호 태그 검사회로(67)에게 신호를 전송하는 보호 태그 검사를 행할 것인지 여부의 판정을 지원한다.
이하, 주어진 타겟 어드레스에 대해, 보호 태그 검사를 행할 것인지 여부를 결정하기 위해 제어회로(74)가 따르는 예시적인 프로세스를 도 6 및 도 7의 흐름도를 참조하여 설명한다.
도 6에서는, 스텝 100에서 흐름이 개시하는데, 이 스텝에서는 타겟 어드레스가 수신될 때까지 처리를 대기한다. 타겟 어드레스가 수신되면, 스텝 102에서, 어드레스 계수값이 증분된다. 그후, 스텝 104에서 현재의 어드레스 계수값과 서브셋 정의가 보호 태그 검사가 행해져야 하는 것을 의미하는지 판정한다. 보호 태그 검사가 행해져야 하는 경우에는, 스텝 106으로 흐름을 진행하여, 어드레스 카운트가 리셋되고, 스텝 108에서 보호 태그 검사가 행해진다. 그후, 메모리 액세스가 행해지는 스텝 110이 뒤따른다. 그러나, 스텝 104에서 현재의 어드레스 계수값과 서브셋 정의가 보호 태그 검사가 행해지지 않아야 한다는 것을 의미하는 것으로 판정되는 경우, 흐름이 스텝 110으로 곧바로 진행한다. 이때, 이와 같은 설명한 흐름은 보호 태그 검사가 메모리 액세스 이전에 행해져야 한다는 의미로 해석되는 것은 아니라는 것에 주목하기 바란다. 사실상, 일부 실시예에서는, 보호 태그 검사의 결과를 이용하여, 메모리 액세스의 진행이 허용되는지 여부를 판정할 수도 있다. 마지막으로, 흐름이 스텝 100으로 복귀하여 다음의 타겟 어드레스를 대기한다.
도 7에서는, 스텝 120에서 흐름이 개시하는데, 이 스텝에서는 타겟 어드레스가 수신될 때까지 처리가 대기한다. 타겟 어드레스가 수신되면, 스텝 122에서, 보호 태그 검사된 액세스들 및 보호 태그 검사되지 않은 액세스들의 계수값들(과 서브셋 정의)이 보호 태그 검사가 행해져야 하는 것을 의미하는지 판정한다. 보호 태그 검사가 행해져야 하는 경우에는, 스텝 124로 흐름이 진행하여, 보호 태그 검사된 액세스들의 계수값을 증분하고, 스텝 126에서 보호 태그 검사가 행해진다. 그후, 메모리 액세스가 행해지는 스텝 130이 뒤따른다. 그러나, 스텝 122에서, 보호 태그 검사된 액세스들 및 보호 태그 검사되지 않은 액세스들의 계수값들(과 서브셋 정의)이 보호 태그 검사가 행해지지 않아야 한다는 것을 의미하는 것으로 판정되는 경우, 스텝 128로 흐름이 진행하여, 보호 태그 검사되지 않은 액세스들의 계수값이 증분된다.. 그후, 메모리 액세스가 행해지는 스텝 130이 뒤따른다. 마지막으로, 흐름이 스텝 120으로 복귀하여 다음의 타겟 어드레스를 대기한다.
도 8은 사용될 수 있는 시뮬레이터 구현예를 나타낸 것이다. 전술한 실시예는 해당 기술을 지원하는 특정한 처리 하드웨어를 작동하기 위한 장치 및 방법에 관해 본 발명을 구현하지만, 컴퓨터 프로그램의 사용을 통해 구현되는 본 발명에서 설명한 실시예에 따라 명령 실행 환경을 제공하는 것도 가능하다. 이와 같은 컴퓨터 프로그램은, 하드웨어 아키텍처의 소프트웨어 기반의 구현을 제공하는 한, 시뮬레이터로 부르는 경우가 많다. 다양한 시뮬레이터 컴퓨터 프로그램은 에뮬레이터, 가상머신, 모델, 및 동적 이진 변환기를 포함하는 이진 변환기를 포함한다. 보통, 시뮬레이터 구현은, 옵션으로 시뮬레이터 프로그램(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), 특히 메모리 액세스 회로(62)가 이들 특징을 에뮬레이트할 수 있다. 예를 들어, 시뮬레이터 프로그램(210)은 어드레스 지정된 위치들을 액세스하고 보호 태그 검사를 행하는 메모리 액세스 로직(216)을 포함한다. 이 때문에, 시뮬레이터 프로그램(210)은 전술한 서브셋을 결정하고 보호 태그와 어드레스 태그의 비교를 행할 것인지 제어하며 보호 태그와 어드레스 태그 사이의 불일치가 검출되었는지 여부를 보고하는 메모리 액세스 프로그램 로직(216)을 더 포함한다.
전체적으로 요약하면, 타겟 어드레스에 응답하여 태그 보호된 메모리 액세스를 행하는 메모리 액세스 회로를 구비하고, 태그 보호된 메모리 액세스는 타겟 어드레스와 관련된 어드레스 태그를 타겟 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련하여 기억되는 보호 태그와 비교하는 보호 태그 검사를 포함한다. 메모리 액세스 회로는 어드레스 지정된 위치들의 시퀀스를 지정하는 수신된 타겟 어드레스들의 시퀀스에 응답하여 어드레스 지정된 위치들의 시퀀스의 서브셋에 대해 보호 태그 검사를 행하지 않는 태그 보호되지 않은 메모리 액세스를 행한다.
본 발명에서, 단어 "하도록 구성된"은 장치의 구성요소가 정의된 동작을 행할 수 있는 구성을 갖는다는 것을 의미하기 위해 사용된다. 이와 관련하여, "구성"은 하드웨어 또는 소프트웨어의 배치 또는 상호접속 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 갖거나, 프로세서 또는 기타의 처리장치가 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은 이 장치의 구성요소가 정의된 동작을 제공하기 위해 어떤 식으로 변경될 필요가 있는 것을 시사하는 것은 아니다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.

Claims (9)

  1. 타겟 어드레스에 응답하여 태그 보호된 메모리 액세스를 행하는 메모리 액세스 회로를 구비하고, 상기 태그 보호된 메모리 액세스는 상기 타겟 어드레스와 관련된 어드레스 태그를 상기 타겟 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련하여 기억되는 보호 태그와 비교하는 보호 태그 검사를 포함하고,
    상기 메모리 액세스 회로는 어드레스 지정된 위치들의 시퀀스를 지정하는 수신된 타겟 어드레스들의 시퀀스에 응답하여 상기 어드레스 지정된 위치들의 시퀀스의 서브셋에 대해 상기 보호 태그 검사를 행하지 않는 태그 보호되지 않은(non-tag-guarded) 메모리 액세스를 행하는 장치.
  2. 제 1항에 있어서,
    서브셋 환경설정 데이터 스토리지를 구비하고, 상기 서브셋이 상기 서브셋 환경설정 데이터 스토리지에 기억된 서브셋 환경설정 데이터에 의해 정의되는 장치.
  3. 제 2항에 있어서,
    상기 서브셋 환경설정 데이터 스토리는 환경설정 레지스터인 장치.
  4. 제 2항 또는 제 3항에 있어서,
    상기 서브셋 환경설정 데이터가 분율(fraction)을 정의하고, 상기 메모리 액세스 회로는 상기 서브셋 환경설정 데이터에 응답하여, 상기 어드레스 지정된 위치들의 시퀀스의 서브셋이 상기 분율과 일치하도록 상기 태그 보호되지 않은 메모리 액세스를 선택적으로 행하는 장치.
  5. 제 2항 또는 제 3항에 있어서,
    상기 서브셋 환경설정 데이터는 정수값을 정의하고, 상기 메모리 액세스 회로는 상기 서브셋 환경설정 데이터에 응답하여, 상기 어드레스 지정된 위치들의 시퀀스 내부의 상기 정수값의 서수 배수들(ordinal multiples)에 대응하는 어드레스 지정된 위치들에 대해 상기 태그 보호되지 않은 메모리 액세스를 행하는 장치.
  6. 제 2항 또는 제 3항에 있어서,
    상기 서브셋 환경설정 데이터는 타겟 값을 정의하고, 상기 메모리 액세스 회로는 상기 서브셋 환경설정 데이터에 응답하여, 상기 어드레스 지정된 위치들의 시퀀스의 서브셋이 소정의 기간에 걸쳐 상기 타겟 값과 통계적으로 일치하도록 상기 태그 보호되지 않은 메모리 액세스를 행하는 장치.
  7. 방법으로서,
    타겟 어드레스에 응답하여 태그 보호된 메모리 액세스를 행하는 단계를 포함하고, 상기 태그 보호된 메모리 액세스는 상기 타겟 어드레스와 관련된 어드레스 태그를 상기 타겟 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련하여 기억되는 보호 태그와 비교하는 보호 태그 검사를 포함하고,
    상기 방법은, 어드레스 지정된 위치들의 시퀀스를 지정하는 수신된 타겟 어드레스들의 시퀀스에 응답하여, 상기 어드레스 지정된 위치들의 시퀀스의 서브셋에 대해 상기 보호 태그 검사를 행하지 않는 태그 보호되지 않은(non-tag-guarded) 메모리 액세스를 행하는 단계를 더 포함하는 방법.
  8. 호스트 데이터 처리장치를 제어하여 타겟 프로그램 코드의 명령들의 실행을 위한 명령 실행 환경을 제공하는 컴퓨터 프로그램으로서,
    타겟 어드레스에 응답하여 태그 보호된 메모리 액세스를 행하는 메모리 액세스 프로그램 로직을 포함하고, 상기 태그 보호된 메모리 액세스는 상기 타겟 어드레스와 관련된 어드레스 태그를 상기 타겟 어드레스에 의해 식별된 어드레스 지정된 위치를 포함하는 한 개 이상의 메모리 위치들의 블록과 관련하여 기억되는 보호 태그와 비교하는 보호 태그 검사를 포함하고,
    상기 메모리 액세스 프로그램 로직은, 어드레스 지정된 위치들의 시퀀스를 지정하는 수신된 타겟 어드레스들의 시퀀스에 응답하여, 상기 어드레스 지정된 위치들의 시퀀스의 서브셋에 대해 상기 보호 태그 검사를 행하지 않는 태그 보호되지 않은(non-tag-guarded) 메모리 액세스를 행하는 컴퓨터 프로그램.
  9. 청구항 8에 기재된 컴퓨터 프로그램을 기억하는 기억매체.
KR1020207023395A 2018-02-02 2019-01-23 메모리 액세스시의 보호 태그 검사 제어 KR20200116473A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1801750.9 2018-02-02
GB1801750.9A GB2570692B (en) 2018-02-02 2018-02-02 Controlling guard tag checking in memory accesses
PCT/GB2019/050191 WO2019150078A1 (en) 2018-02-02 2019-01-23 Controlling guard tag checking in memory accesses

Publications (1)

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

Family

ID=61730975

Family Applications (1)

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

Country Status (9)

Country Link
US (1) US11397541B2 (ko)
EP (1) EP3746900B1 (ko)
JP (1) JP7349437B2 (ko)
KR (1) KR20200116473A (ko)
CN (1) CN111566628A (ko)
GB (1) GB2570692B (ko)
IL (1) IL275873B2 (ko)
TW (1) TWI787451B (ko)
WO (1) WO2019150078A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2578924B (en) 2018-11-14 2021-09-29 Advanced Risc Mach Ltd An apparatus and method for controlling memory accesses
US10855529B2 (en) * 2018-11-26 2020-12-01 Stmicroelectronics Application Gmbh Processing system, related integrated circuit, device and method

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10228421A (ja) * 1997-02-14 1998-08-25 Nec Ic Microcomput Syst Ltd メモリアクセス制御回路
TWI332626B (en) 2007-02-01 2010-11-01 Te An Wang A reducing btb target address field bits method
GB2460393B (en) * 2008-02-29 2012-03-28 Advanced Risc Mach Ltd A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry
US8656121B2 (en) * 2011-05-17 2014-02-18 International Business Machines Corporation Facilitating data coherency using in-memory tag bits and tag test instructions
JP5541275B2 (ja) * 2011-12-28 2014-07-09 富士通株式会社 情報処理装置および不正アクセス防止方法
WO2013101246A1 (en) * 2011-12-31 2013-07-04 Intel Corporation Processor that detects when system management mode attempts to reach program code outside of protected space
US20130275699A1 (en) * 2012-03-23 2013-10-17 Hicamp Systems, Inc. Special memory access path with segment-offset addressing
GB2522906B (en) * 2014-02-10 2021-07-14 Advanced Risc Mach Ltd Region identifying operation for identifying a region of a memory attribute unit corresponding to a target memory address
EP3195178B1 (en) * 2014-07-23 2019-02-20 GrammaTech, Inc. Systems and/or methods for automatically protecting against memory corruption vulnerabilities
US9619313B2 (en) * 2015-06-19 2017-04-11 Intel Corporation Memory write protection for memory corruption detection architectures
GB2544315B (en) 2015-11-12 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
US10162694B2 (en) * 2015-12-21 2018-12-25 Intel Corporation Hardware apparatuses and methods for memory corruption detection
GB2549511B (en) * 2016-04-20 2019-02-13 Advanced Risc Mach Ltd An apparatus and method for performing operations on capability metadata

Also Published As

Publication number Publication date
EP3746900A1 (en) 2020-12-09
TW201941064A (zh) 2019-10-16
JP2021512405A (ja) 2021-05-13
EP3746900B1 (en) 2023-08-09
IL275873B1 (en) 2023-11-01
CN111566628A (zh) 2020-08-21
WO2019150078A1 (en) 2019-08-08
IL275873A (en) 2020-08-31
IL275873B2 (en) 2024-03-01
TWI787451B (zh) 2022-12-21
US20200225872A1 (en) 2020-07-16
GB201801750D0 (en) 2018-03-21
GB2570692B (en) 2020-09-09
GB2570692A (en) 2019-08-07
JP7349437B2 (ja) 2023-09-22
US11397541B2 (en) 2022-07-26

Similar Documents

Publication Publication Date Title
JP7291149B2 (ja) メモリ・アクセスにおける保護タグ・チェックの制御
TWI812798B (zh) 用於控制記憶體存取的裝置及方法
US20230236925A1 (en) Tag checking apparatus and method
JP7349437B2 (ja) メモリ・アクセスにおける保護タグ・チェックの制御
KR20200107997A (ko) 다중 가드 태그 설정 명령어
KR20230101826A (ko) 캐퍼빌리티들을 사용하여 메모리에 대한 액세스를 제약하기 위한 기술
JP7369699B2 (ja) データ処理装置におけるアドレス変換
JP7369720B2 (ja) アクションをトリガするための装置及び方法
WO2024094956A1 (en) Region identifier based on instruction fetch address
WO2023175289A1 (en) Read-as-x property for page of memory address space
CN117222990A (zh) 用于使用能力约束对存储器的访问的技术
KR20210034612A (ko) 보호 태그 손실 처리

Legal Events

Date Code Title Description
A201 Request for examination