KR20180027524A - 포인터와 관련된 범위 정보를 사용하여 명령을 실행하는 장치 및 방법 - Google Patents

포인터와 관련된 범위 정보를 사용하여 명령을 실행하는 장치 및 방법 Download PDF

Info

Publication number
KR20180027524A
KR20180027524A KR1020187002227A KR20187002227A KR20180027524A KR 20180027524 A KR20180027524 A KR 20180027524A KR 1020187002227 A KR1020187002227 A KR 1020187002227A KR 20187002227 A KR20187002227 A KR 20187002227A KR 20180027524 A KR20180027524 A KR 20180027524A
Authority
KR
South Korea
Prior art keywords
pointer
range
addresses
address
instruction
Prior art date
Application number
KR1020187002227A
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 KR20180027524A publication Critical patent/KR20180027524A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/1008Correctness of operation, e.g. memory ordering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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)

Abstract

장치(2)는 포인터(62)에 대한 어드레스들의 허용 범위를 나타내는 관련 범위 정보(64)를 갖는 포인터(62)를 각각 저장하는 하나 이상의 유계 포인터 저장 요소(60s)를 구비한다. 처리 회로(4)는 주어진 유계 포인터 저장 요소를 식별하는 제1 타입의 명령(70)에 응답하여, 주어진 유계 포인터 저장 요소(60)에 저장된 포인터와 관련된 범위 정보(64)에 의거하여 적어도 부분적으로 결정된 어드레스들의 목표 범위에 대하여 소정의 동작을 수행한다.

Description

포인터와 관련된 범위 정보를 사용하여 명령을 실행하는 장치 및 방법
본 기술은 데이터 처리 분야에 관한 것이다.
일부 데이터 처리 장치는 특정 어드레스를 지시하는 포인터가 포인터에 대한 어드레스들의 허용 범위를 나타내는 범위 정보와 관련되는 유계 포인터(bounded pointer)를 지원할 수 있다. 예를 들어, 이러한 포인터는 "팻 포인터(fat pointers)"라고도 칭할 수 있다.
적어도 일부 예는,
포인터에 대한 어드레스들의 허용 범위를 나타내는 관련 범위 정보를 갖는 포인터를 각각 저장하는 하나 이상의 유계 포인터 저장 요소와,
주어진 유계 포인터 저장 요소를 식별하는 제1 타입의 명령에 응답하여, 상기 주어진 유계 포인터 저장 요소에 저장된 포인터와 관련된 범위 정보에 의거하여 적어도 부분적으로 결정된 어드레스들의 목표 범위에 대하여 미리 결정된 동작을 수행하는 처리 회로를 구비하는 장치를 제공한다.
적어도 일부 예는,
포인터에 대한 어드레스들의 허용 범위를 나타내는 관련 범위 정보를 갖는 포인터를 저장하는 적어도 하나의 수단과,
주어진 저장 수단을 식별하는 제1 타입의 명령에 응답하여, 상기 주어진 저장 수단에 저장된 포인터와 관련된 범위 정보에 의거하여 적어도 부분적으로 결정된 어드레스들의 목표 범위에 대해 미리 결정된 동작을 수행하는 수단을 구비하는 장치를 제공한다.
적어도 일부 예는,
포인터에 대한 어드레스들의 허용 범위를 나타내는 관련 범위 정보를 갖는 포인터를 각각 저장하는 하나 이상의 유계 포인터 저장 요소를 구비하는 장치에 대한 방법을 제공하고, 상기 방법은,
주어진 유계 포인터 저장 요소를 식별하는 제1 타입의 명령을 수신하는 단계와,
상기 제1 타입의 명령에 응답하여, 상기 주어진 유계 포인터 저장 요소에 저장된 포인터와 관련된 범위 정보에 의거하여 적어도 부분적으로 결정된 어드레스들의 목표 범위에 대해 미리 결정된 동작을 수행하는 단계를 포함한다.
본 기술의 추가적인 국면, 특징 및 이점은 첨부된 도면과 함께 판독되는 실시 예에 대한 다음의 설명으로부터 명백해질 것이다.
도 1은 포인터에 대한 어드레스들의 허용 범위를 식별하는 관련된 범위 정보를 갖는 유계 포인터를 지원하는 데이터를 처리하기 위한 장치의 일례를 개략적으로 도시한다.
도 2는 포인터 값을 사용하여 결정된 어드레스가 관련된 범위 정보에 의해 표시된 범위 밖에 있을 때 에러가 트리거되는 명령 타입의 예를 도시한다.
도 3은 유계 포인터에 대한 범위 정보에 근거하여 적어도 부분적으로 결정된 어드레스의 목표 범위에 대해 수행될 예정된 동작을 트리거하기 위한 명령 타입의 예를 도시한다.
도 4는 제1 타입의 명령을 실행하는 방법의 예를 도시한다.
도 5는 제2 타입의 명령을 실행하는 방법의 예를 도시한다.
도 6은 제1 타입의 명령에 응답하여 동작을 수행함으로써 수신된 인터럽트를 처리하는 예를 도시한다.
도 7 내지도 9는 유계 포인터에 대한 범위 정보를 나타내는 다른 방법을 도시한다.
도 10은 유계 포인터에 대해 어드레스들의 허용 범위의 상이한 부분에 연산이 적용되는 명령의 다른 형태의 예를 도시한다.
본 기술의 몇 가지 구체적인 예가 아래에서 논의될 것이다.
일부 처리 장치는 유계 포인터(bounded pointer)의 사용을 지원할 수 있다. 포인터 자체는, 예를 들면, 액세스될 데이터 값의 어드레스 또는 실행될 명령을 가리킬 수도 있다. 그러나, 포인터는 또한 포인터에 대한 어드레스들의 허용 범위를 나타내는 관련 범위 정보를 가질 수도 있다. 이것은, 예를 들어, 포인터, 또는 포인터로부터 파생된 어드레스가 보안 또는 행동의 기능적 정확성(functional correctness)을 유지하기 위해 일정한 경계 내에 있도록 보장하는 데 유용할 수 있다. 예를 들어, 주어진 프로세스에 대해 특정 능력이 정의된 능력 기반 아키텍처(capability-based architectures)에 대한 관심이 증가하고 있으며, 정의된 능력을 벗어나는 동작을 수행하려는 경우 오류가 발생할 수 있다. 유계 포인터에 대한 범위 정보는 이러한 아키텍처에 대해 정의된 능력 정보의 일부일 수 있다. 대안으로, 유계 포인터를 정의할 수 있는 일부 비능력 기반 아키텍처(non-capability based architectures)가 있을 수도 있다.
따라서, 장치는 포인터에 대한 어드레스들의 허용 범위를 나타내는 관련 범위 정보를 갖는 포인터를 저장하기 위한 적어도 한 개의 유계 포인터 저장 요소를 가질 수도 있다. 각각의 유계 포인터 저장 요소는, 예를 들어 레지스터 또는 스택(stack) 메모리 상의 위치일 수 있다. 어떤 명령들은 타겟 유계 포인터 저장 요소에 저장된 유계 포인터를 사용하여 동작을 수행할 수 있다. 타겟 유계 포인터 저장 요소는 적어도 하나의 유계 포인터 저장 요소 중 임의의 하나일 수 있고, 명령 인코딩에서 특정될 수 있으며, 디폴트에 의해 선택된 저장 요소일 수 있으며, 또는 레지스터나 스택 위치와 같은 또 다른 저장 요소에 저장된 제어 값에 의해 식별될 수 있다.
유계 포인터를 지원하는 시스템에 있어서, 유계 포인터를 참조하는 명령들은 일반적으로 포인터 값 자체를 사용하여 해당 처리 동작을 수행하며, 해당 범위 정보는 포인터의 사용이 허용되는지 아닌지 여부를 결정하기 위해 단독으로 사용될 수 있다. 범위 정보 자체는 일반적으로 동작이 먼저 허용되는지 여부를 판정하는 것 이외에, 수행되고 있는 특정 처리 동작에 영향을 미치지 않는다. 그러나, 본 발명자는 유계 포인터와 관련된 범위 정보에 근거해 적어도 부분적으로 결정된 어드레스들의 목표 범위에 대한 동작을 수행하는 새로운 타입의 명령에 대한 지원을 제공하는 것이 매우 유용할 수 있다는 것을 인식했다. 따라서, 유계 포인터의 범위 정보는 그 자체가 수행될 실제의 처리 동작에 영향을 주는 오퍼랜드(operand) 정보로서 사용될 수 있다.
따라서, 주어진 유계 포인터 저장 요소를 식별하는 제1 타입의 명령에 응답하여, 주어진 유계 포인터 저장 요소에 저장된 포인터와 관련된 범위 정보에 근거하여 적어도 부분적으로 결정된 어드레스들의 목표 범위에 대한 소정의 동작을 수행하도록 구성된 처리 회로가 제공될 수 있다. 예를 들어, 처리 회로는 범위 정보에 의해 표시된 어드레스들의 범위의 전부 또는 일부를 사용하여 소정의 동작을 수행하도록 처리 회로를 제어하기 위한 제어 신호들을 생성하기 위해 제1 타입의 명령을 디코딩하는 명령 디코딩 회로를 가질 수도 있다.
이 접근법은 몇 가지 이점을 제공할 수 있다. 첫째, 범위 정보에 따라 선택된 어드레스들의 범위에 대한 동작을 트리거하기 위한 단일 명령을 제공함으로써, 이것은 특정된 범위 내의 각 어드레스에 대해 개별 명령들을 실행해야 하는 시스템에 비해서 코드 밀도(code density)를 대폭 향상시킬 수 있고 처리할 명령들의 수를 줄일 수 있다.
또한, 새로운 타입의 명령은 주어진 유계 포인터에 대한 허용 범위를 설정할 때, 포인터 자체가 참조하는 이들 위치에 대해 준비된 대응하는 저장 위치를 초기화하기 위해 허용 범위 내의 어드레스들에 대해 소정의 동작을 수행하는 것이 때때로 바람직할 수 있기 때문에 특히 유용할 수 있다. 예를 들어, 주어진 허용 범위 내에서 임의의 값을 취할 수 있는 포인터를 사용하는 프로세스를 수행하기 전에, 허용 범위 내의 어드레스들의 대응하는 저장 위치 내의 데이터를 클리닝 또는 무효화(invalidating)하거나, 이들 어드레스 각각의 데이터를 일부 소정의 값으로 설정하는 동작을 수행하는 것이 바람직할 수도 있다. 따라서, 유계 포인터에 대응하는 허용 범위 내의 어드레스들에 대해 주어진 처리 동작이 수행되도록 트리거할 수 있는 제1 타입의 명령을 제공하는 것은 먼저 허용 범위 정보를 정의하는 프로세스에 유용할 수 있다.
또 다른 이점은, 어드레스들의 허용 범위에 의거하여 결정된 어드레스들의 목표 범위에 걸쳐 소정의 동작을 제어하기 위해 타겟 유계 포인터 저장 요소 내의 유계 포인터와 관련된 범위 정보를 사용함으로써, 제1 타입의 명령 자체가 소정의 동작이 적용되는 어드레스들의 목표 범위에 대한 개시 및 종료 어드레스를 명시적으로 특정할 필요가 없다. 이것은 소정의 동작을 실행하는 프로세스가 유계 포인터와 관련된 어드레스들의 허용 범위를 실제로 알 수 없기 때문에 유용할 수 있으며(예를 들어, 허용 범위는 보다 안전한 프로세스에 의해 설정될 수 있다), 어떤 경우에는, 예를 들어 이 정보가 특정 보안 코드 또는 데이터의 위치를 유추할 수 있는 경우, 덜 안전한 프로세스가 보다 안전한 프로세스에 의해 설정된 포인터 값의 허용 범위를 아는 것이 바람직하지 않을 수도 있다. 따라서, 주어진 유계 포인터를 간단히 참조함으로써, 관련된 범위 정보는 현재의 프로세스가 동작이 수행되고 있는 범위를 인식하는 것을 실제로 요구하지 않고 허용 범위 전체에 걸쳐 소정의 동작을 트리거하는데 사용될 수 있다.
따라서, 주어진 유계 포인터를 취하고 해당 포인터와 관련된 관련 범위 정보를 사용하여 범위 정보에 의거하여 결정된 어드레스들의 목표 범위에 대해서 주어진 동작을 수행하는 타입의 명령에 대해 명령 세트 아키텍처 지원(instruction set architecture support)을 제공하는 것이 유용할 수 있다는 여러 가지 이유가 있을 수 있다. 일부 시스템에서는 어드레스들의 허용 범위 전체에 걸쳐 특정 동작을 수행하기 위해 제공되는 명령이 하나만 있을 수도 있다. 다른 시스템은 허용 범위 내의 어드레스들에 대해 수행되어야 하는 다른 소정의 동작에 대응하는 각각의 명령과 함께, 이 타입의 다수의 명령을 지원할 수 있다.
어드레스들의 목표 범위는 상이한 방식으로 범위 정보에 의거하여 결정될 수 있다. 어드레스들의 목표 범위는 허용 범위 내에 있을 수 있다(즉, 허용 범위는 목표 범위를 포함한다). 일부 예에 있어서, 어드레스들의 목표 범위는 범위 정보에 의해 허용되는 것으로 표시된 전체 어드레스들의 범위일 수 있다. 다른 예에 있어서는, 어드레스들의 목표 범위는 단지 허용 범위의 일부일 수 있으며, 예를 들어 포인터 값 자체와 허용 범위의 상위 및 하위 어드레스 중 하나와의 사이에 있는 부분일 수도 있다.
어떤 경우에는, 주어진 유계 포인터의 허용 범위는 포인터 자체가 취할 수 있는 어드레스들의 범위를 식별한다. 다른 경우에는, 허용 범위는 포인터에서 파생된 어드레스에 대한 허용 범위일 수 있다(반드시 포인터 자체일 필요는 없음). 예를 들어, 포인터에 오프셋을 추가하는 명령에 대해서, 허용 범위는 포인터와 오프셋의 합계가 취할 수 있는 어드레스들의 허용 범위를 정의할 수 있다. 따라서, 주어진 포인터에 대해 허용 범위가 정의되어 있지만, 이것은 허용 범위에 의해 관리되는 포인터에서 파생된 어드레스일 수 있기 때문에, 이것은 반드시 포인터 자체가 허용 범위 내에 있도록 요구하지는 않는다.
도 1은 명령들을 처리하기 위한 처리 파이프라인(4)을 구비하는 데이터 처리 장치(2)의 일례를 개략적으로 도시한 것이다. 이 예에 있어서, 처리 파이프라인(4)은 페치 스테이지(6), 디코드 스테이지(8), 발행 스테이지(10), 실행 스테이지(12) 및 라이트백 스테이지(14)를 포함하는 다수의 파이프라인 스테이지를 포함하지만, 다른 타입 또는 스테이지들의 조합이 제공될 수 있다는 것을 이해할 것이다. 예를 들어, 일부 실시 예에서는 레지스터 리네이밍을 수행하기 위한 리네임 스테이지가 포함될 수 있다. 처리될 명령들이 스테이지에서 스테이지로 이동하고, 명령이 하나의 스테이지에서 펜딩중이고, 다른 명령이 파이프라인의 다른 스테이지에서 펜딩중일 수 있다.
페치 스테이지(6)는 레벨 1(L1) 명령 캐시(20)로부터 명령들을 페치한다. 페치 스테이지(6)는 보통 연속적인 명령 어드레스들로부터 순차적으로 명령들을 페치할 수 있다. 그러나, 페치 스테이지는 또한 분기 명령들의 결과를 예측하기 위한 분기 예측기(22)를 가질 수 있으며, 페치 스테이지(6)는 분기가 취해진 것으로 예측된 경우(비순차적인) 분기 타겟 어드레스로부터 또는 명령들을 페치할 수 있고, 또는 분기가 취해지지 않은 것으로 예측된 경우에 다음의 순차 어드레스로부터 명령들을 페치할 수 있다. 분기 예측기(22)는 특정 분기들이 취해질 수 있는지 아닌지 여부를 예측하기 위한 정보를 저장하기 위한 하나 이상의 분기 이력 테이블을 포함할 수 있다. 예를 들어, 분기 이력 테이블은 이전에 실행된 분기의 실제 결과를 추적하거나 분기에 대해 이루어진 예측에 대한 신뢰를 나타내는 카운터를 포함할 수 있다. 분기 예측기(22)는 또한 분기 명령들의 이전 타겟 어드레스들을 캐싱하기 위한 분기 타겟 어드레스 캐시(BTAC)(24)를 포함할 수 있어서, 이들이 동일한 분기 명령들의 후속 만남에서 예측될 수 있다.
페치된 명령들은 명령들을 디코딩하여 디코딩된 명령들을 생성하는 디코드 스테이지(8)로 전달된다. 디코딩된 명령들은 적절한 처리 동작들을 실행하는 실행 스테이지(12)를 제어하기 위한 제어 정보를 포함할 수 있다. 캐시(20)로부터 페치된 일부의 보다 복잡한 명령들에 대해, 디코드 스테이지(8)는 이들 명령을 마이크로 동작(uop 또는 uops)으로서 알려져 있을 수 있는 다수의 디코딩된 명령에 매핑할 수 있다. 따라서, L1 명령 캐시(20)로부터 페치된 명령들과 파이프라인의 나중 스테이지에서 볼 수 있는 것처럼 명령들과의 사이에는 1:1 관계가 존재하지 않을 수도 있다. 일반적으로, 본 출원에서의 "명령들"에 대한 언급은 마이크로 동작을 포함하는 것으로 해석되어야 한다.
디코딩된 명령들은 발행 스테이지(10)로 전달되어, 명령들의 실행에 필요한 오퍼랜드가 이용 가능한지 여부를 결정하고, 오퍼랜드가 이용 가능할 때 실행을 위한 명령들을 발행한다. 일부 예는 명령들이 L1 명령 캐시(20)로부터 페치된 프로그램 순서에 대응하는 순서로 실행을 위해 명령들이 발행되도록 순차 처리를 지원할 수 있다. 다른 실시 예들은 프로그램 순서와 다른 순서로 명령들이 실행 스테이지(12)에 발행될 수 있도록 비순차 실행을 지원할 수 있다. 비순차 처리는 성능 향상에 유용할 수 있는데, 왜냐하면 이전 명령이 오퍼랜드를 기다리는 동안 정지되고, 오퍼랜드가 이용 가능한 프로그램 순서의 나중 명령이 먼저 실행될 수 있기 때문이다.
발행 스테이지(10)는 다양한 데이터 처리 동작들을 수행하기 위해서 명령이 실행되는 실행 스테이지(12)에 명령들을 발행한다. 예를 들어, 실행 스테이지는 정수 값에 대해 산술 연산 또는 논리 연산을 수행하는 산술/논리 유닛(ALU)(30)을 포함하는 다수의 실행 유닛(30,32,34)과, 부동 소수점(floating-point) 형태로 표현된 값들에 대한 연산을 수행하기 위한 부동 소수점(FP) 유닛(32)과, 레벨 1(L1) 데이터 캐시(36)로부터 레지스터(40)로 데이터 값을 로딩하기 위한 로드 동작, 또는 레지스터(40)로부터 L1 데이터 캐시(36)에 데이터 값을 저장하기 위한 저장 동작을 수행하는 로드/저장 유닛(34)을 포함할 수 있다. 이들은 제공될 수 있는 실행 유닛의 타입의 단지 일부 예이며, 많은 다른 종류가 또한 제공될 수 있다는 것을 이해할 것이다. 처리 동작을 수행하기 위해, 실행 스테이지(12)는 레지스터(40)의 세트로부터 데이터 값을 판독할 수 있다. 그 다음, 실행된 명령들의 결과는 라이트백 스테이지(14)에 의해 레지스터(40)에 다시 기록될 수 있다.
L1 명령 캐시(20) 및 L1 데이터 캐시(36)는 다중 레벨의 캐시를 포함하는 캐시 계층의 일부일 수 있다. 예를 들어, 레벨 2(L2) 캐시(44)가 또한 제공될 수 있고 선택적으로 추가 레벨의 캐시가 제공될 수 있다. 이 예에 있어서, L2 캐시(44)는 L1 명령 캐시(20)와 L1 데이터 캐시(36) 사이에서 공유되지만, 다른 예는 별도의 L2 명령 캐시 및 데이터 캐시를 가질 수 있다. 페치될 명령이 L1 명령 캐시(20)에 있지 않으면 그것은 L2 캐시(44)로부터 페치될 수 있고, 마찬가지로 명령이 L2 캐시(44)에 있지 않으면 그것은 메인 메모리(50)로부터 페치될 수 있다. 마찬가지로, 로드 명령들에 응답하여, 데이터가 L1 데이터 캐시(36)에 있지 않으면 L2 캐시(44)로부터 페치될 수 있고, 필요한 경우에는 메모리(50)로부터 페치될 수 있다. 알려진 모든 방식은 캐시 계층을 관리하는 데 사용될 수 있다.
프로그램 명령 및 데이터 값을 나타내기 위해 파이프라인(4)에 의해 사용되는 어드레스는 가상 어드레스일 수 있지만, 적어도 메인 메모리(50) 및 선택적으로 캐시 계층의 적어도 일부 레벨은 물리적으로 어드레스될 수 있다. 따라서, 파이프라인(4)에 의해 사용되는 가상 어드레스를 캐시 또는 메모리에 액세스하는 데 사용되는 물리적 어드레스로 변환하기 위해 변환 색인 버퍼(52)(TLB)가 제공될 수 있다. 예를 들어, TLB(52)는 각각이 가상 어드레스 공간의 대응하는 페이지의 가상 페이지 어드레스와 해당 페이지 내의 가상 어드레스를 물리적 어드레스로 변환하기 위해 가상 페이지 어드레스가 매핑되어야 하는 대응하는 물리적 페이지 어드레스를 지정하는 다수의 엔트리를 포함할 수 있다. 예를 들어, 가상 및 물리적 페이지 어드레스는 대응하는 가상 및 물리적 어드레스의 최상위 부분에 대응할 수 있고, 나머지 최하위 부분은 가상 어드레스를 물리적 어드레스에 매핑할 때 변경되지 않은 채로 유지된다. 어드레스 변환 정보뿐만 아니라, 각각의 TLB 엔트리는 또한 특정 페이지의 어드레스가 파이프라인(4)의 특정 모드에서 액세스 가능한지 여부를 나타내는 것과 같은 액세스 허용을 지정하는 일부 정보를 포함할 수도 있다. 일부 실시 예에 있어서, TLB 엔트리는 또한 판독 또는 기록 동작(예를 들어, 캐시가 라이트백(write back) 모드 또는 라이트 스루(write through) 모드에서 동작해야 하는지 여부)에 응답하여 캐시 계층의 어느 레벨이 업데이트되는지를 정의하는 캐시 정책 정보, 또는 데이터 액세스가 파이프라인(4)에 의해 발행된 순서와 비교하여 대응하는 페이지 내의 어드레스에 대한 데이터 액세스가 메모리 시스템에 의해 재정렬될 수 있는지 여부를 정의하는 정보와 같은, 어드레스들의 해당 페이지의 다른 특성을 정의할 수 있다.
도 1은 단일 레벨 TLB(52)를 도시하지만, 레벨 1(L1) TLB(52)가 다수의 최근 액세스된 페이지들에서 어드레스들을 변환하기 위한 TLB 엔트리들을 포함할 수 있도록 TLB의 계층이 제공될 수 있고, 레벨 2(L2) TLB는 더 많은 수의 페이지에 대한 엔트리를 저장하기 위해 제공될 수 있다는 것을 인식할 것이다. 필요한 엔트리가 L1 TLB에 존재하지 않을 경우, L2 TLB로부터 또는 계층 내의 추가 TLB로부터 페치될 수 있다. 액세스될 페이지에 대한 필요한 엔트리가 TLB 중 어느 것에도 존재하지 않으면, 메모리(50) 내의 페이지 테이블에 액세스하기 위해 페이지 테이블 워크(walk)가 수행될 수 있다. 임의의 알려진 TLB 관리 기법이 본 기술에서 사용될 수 있다.
또한, 일부 시스템은 예를 들어, 제1 TLB(또는 TLB의 계층)가 가상 어드레스를 중간 어드레스로 변환하는데 사용될 수 있도록 다수 레벨의 어드레스 변환을 지원할 수 있으며, 하나 이상의 추가 TLB(들)을 사용하는 제2 레벨의 어드레스 변환은 중간 어드레스를, 캐시 또는 메모리에 액세스하는 데 사용되는 물리적 어드레스로 변환할 수 있다. 이것은 예를 들어 운영 체제가 제1 레벨의 어드레스 변환을 관리하고 하이퍼바이저(hypervisor)가 제2 레벨의 어드레스 변환을 관리할 수 있는 가상화(virtualisation)를 지원하는 데 유용할 수 있다.
도 1에 도시된 바와 같이, 장치(2)는 한 세트의 유계 포인터 레지스터(60)를 가질 수 있다. 각각의 포인터 레지스터(60)는 액세스될 데이터 값 또는 명령의 어드레스를 식별하는 포인터 값(62) 및 대응하는 포인터(62)에 대한 어드레스들의 허용 범위를 지정하는 범위 정보(64)를 포함한다. 선택적으로, 유계 레지스터(60)는 또한 포인터의 사용에 대하여 하나 이상의 제한을 정의할 수 있는 다른 제한 정보(66)를 포함할 수도 있다. 예를 들어, 제한(66)은 포인터(62)를 사용할 수 있는 명령들의 타입, 또는 포인터가 사용될 수 있는 파이프라인(4)의 모드를 제한하는데 사용될 수 있다. 따라서, 범위 정보(64) 및 제한 정보(66)는 포인터(62)가 사용될 수 있는 능력을 정의하는 것으로 간주될 수 있다. 정의된 능력 밖의 포인터(62)를 사용하려고 시도하면, 에러가 유발될 수 있다. 범위 정보(64)는 예를 들어 포인터(또는 포인터로부터 도출된 값)가 소정의 알려진 경계 내에 머물러 있고, 예를 들어 민감하거나 안전한 정보를 포함할 수 있는 메모리 어드레스 공간의 다른 영역으로 이탈하지 않도록 보장하는데 유용할 수 있다.
예를 들어, 도 2는 데이터 또는 명령들에 대한 무단 액세스를 방지하기 위해 허용 범위를 사용하는 명령의 타입의 예를 나타낸 것이다. 도 2의 상단에 도시된 바와 같이, 특정 유계 포인터 레지스터(PR1)는 주어진 포인터 값(62) 및 범위 정보(64)를 포함하며, 이 예에서는 허용 범위의 하한(lower bound)을 정의하는 하한 어드레스(68) 및 허용 범위의 상한을 정의하는 상한 어드레스(69)를 이용해서 특정된다. 예를 들어, 경계(68, 69)는 어드레스 80000 내지 81000의 범위를 정의하도록 설정된다. 특정 명령이 유계 포인터 레지스터 PR1을 참조하고 포인터(62)가 이 범위 밖에 있을 때 에러가 트리거될 수 있다.
예를 들어, 도 2의 부분 A에 도시된 바와 같이, 일부 시스템에 있어서, 포인터 레지스터(60) 내의 포인터(62)의 값을 범위 정보(64)에 의해 지정된 범위 밖에 있는 값으로 설정하려는 시도가 있으면 에러가 유발될 수 있다. 이것은 포인터를 사용하는 임의의 액세스가 허용된 범위 내에 안전하게 있는 것이 보장되도록 포인터(62)가 지정된 범위 밖의 값을 취하는 것을 방지한다. 대안적으로, 도 2의 부분 B에 도시된 바와 같이, 명령이 포인터(62)의 어드레스에 의해 식별된 위치에 액세스하려고 시도할 때 그 어드레스가 지정된 범위 밖에 있을 때 에러가 유발될 수 있다. 따라서, 포인터(62)를 지정된 범위 밖의 값으로 설정하는 것이 여전히 허용될 수 있지만, 일단 포인터 어드레스에서의 데이터 액세스 또는 명령 액세스가 시도되면, 어드레스가 허용된 범위 밖에 있을 때 에러가 유발될 수 있다. 다른 시스템은 도 2의 부분 A와 B에 표시된 양 타입의 명령에 응답하여 에러가 유발될 수 있다.
또한, 일부 예에 있어서는, 몇몇 명령들은 주어진 유계 포인터 레지스터에 저장된 포인터 값에 오프셋을 부가할 수 있다. 이 경우, 포인터와 오프셋의 합이 범위 정보(64)에 의해 지정된 허용 범위를 벗어나면 에러가 유발될 수 있다.
범위 정보(64)는 상이한 방식으로 설정될 수 있다. 예를 들어, 보안 코드 또는 운영 체제 또는 하이퍼바이저는 주어진 포인터에 대한 허용 범위를 지정할 수 있다. 예를 들어, 명령 세트 아키텍처는 주어진 포인터(62)에 대한 범위 정보(64)를 설정 또는 변경하기 위한 다수의 명령을 포함할 수 있으며, 이들 명령의 실행은 프로세서(4)의 특정 소프트웨어 또는 특정 모드 또는 예외 상태로 제한될 수 있다. 범위 정보(64)를 설정 또는 변경하기 위한 임의의 공지된 기술이 사용될 수 있다.
도 3에 도시된 바와 같이, 유계 포인터와 관련된 범위 정보(64)는 범위 정보(64)에 근거하여 결정된 어드레스들의 목표 범위에 대해 수행되도록 소정의 동작을 트리거할 수 있는 새로운 타입의 명령에 의해 이용될 수 있다. 예를 들어, 도 3은 L1 데이터 캐시(36) 내의 데이터 값을 클리닝하는 동작을 트리거하기 위한 캐시 클리닝 명령의 예를 도시한 것이다. 캐시 클리닝 명령(70)은 타겟 유계 포인터 레지스터로서 유계 포인터 레지스터들(60) 중 하나를 식별하는 레지스터 지정자를 오퍼랜드로서 특정한다. 예를 들어, 이 경우 레지스터 PR1이 특정된다. 명령에 응답하여, 프로세서(12)는 타겟 유계 포인터 레지스터 PR1의 범위 정보(64)에 의해 특정된 어드레스들의 범위 내에 있는 어드레스와 관련된 데이터를 저장하는 캐시(36)의 임의의 엔트리(72) 내의 데이터 값을 클리닝하기 위해 캐시 클리닝 동작을 트리거한다. 도 3의 예에 있어서, 제1 및 제3 엔트리는 범위 정보(64)에 정의된 허용 범위 80000-81000 밖의 어드레스를 나타내는 태그 값(74)을 가지며, 따라서 이들 엔트리는 클리닝되지 않는다. 그러나, 제2 및 제4 엔트리에 저장된 더티 값(dirty values)은 그 대응하는 태그가 범위 정보(64)로 나타낸 허용 범위 내의 어드레스들을 나타내기 때문에 클리닝되어 L2 캐시(44)에 다시 기록된다. 명령(70) 내의 단일 레지스터 지정자 PR1는 클리닝 동작을 수행할 어드레스들의 범위를 식별할 수 있을 정도로 충분하므로, 명령 인코딩 시에 범위의 시작 및 종료 어드레스를 식별할 필요가 없다.
다른 타입의 명령은 유사한 방식으로 유계 포인터의 범위 정보(64)를 사용하여 동작할 수 있다. 예를 들어, 다른 타입의 캐시 유지보수 동작은 L1 데이터 캐시(36) 또는 L1 명령 캐시(20) 상에서 수행될 수 있다. 예를 들어, 정의된 범위 내의 어드레스들에 대응하는 엔트리로부터의 더티 데이터 값을 (메모리 또는 추가 레벨 캐시에) 다시 기록하기 위해 클리닝 동작을 수행하는 것보다는, 이러한 엔트리들로부터 데이터를 무효화하는 무효화 동작이 수행될 수 있다(그러한 엔트리 내의 더티 데이터는 무효화 중에 손실된다). 대안적으로, 클리닝 및 무효화 동작은, 임의의 더티 데이터를 L2 캐시(44)에 다시 기록함으로써 데이터가 먼저 클리닝되도록 수행될 수 있고, 그 후에 데이터가 L1 데이터 캐시(36)에 더 이상 존재하지 않도록 무효화될 수 있다(무효화 동작과는 달리, 클리닝 및 무효화 동작이 더티 데이터를 보존한다).
또한, 분기 타겟 어드레스 캐시(24) 또는 TLB(52)와 같은 시스템 내의 다른 캐시형 구조에 대하여 캐시 유지보수를 수행하는 것이 가능하다. 예를 들어, 소정의 유계 포인터 레지스터(60)를 지정하는 단일 명령은 타겟 유계 포인터 레지스터(60)의 범위 정보(64)에 의해 특정된 범위 내의 어드레스에 대응하는 BTAC(24) 또는 TLB(52) 내의 임의의 엔트리의 무효화를 트리거할 수 있다. (TLB 또는 데이터/명령 캐시와 같은) 캐시 계층의 다중 레벨을 갖는 캐시와 같은 구조에 대해, 유지보수(maintenance)가 수행되는 캐시의 상이한 레벨을 목표로 하여 캐시 유지보수 명령의 상이한 형태가 제공될 수 있다. 선택적으로, 일부 구성 정보는 캐시 유지보수가 수행되는 캐시 계층의 지점을 지정할 수 있다. 예를 들어, 일부 캐시 유지보수 동작은 L2 캐시에 대한 클리닝 또는 무효화를 필요할 수 있으며, 다른 것들은 추가 레벨 캐시 또는 메인 메모리에 대하여 더 깊은 유지보수를 수행할 수 있다.
또한, 처리 파이프라인(4)은 범위 정보(64)에 의해 표시된 어드레스 범위에 대한 다른 타입의 동작을 트리거하기 위한 명령들에 대한 아키텍처 지원을 가질 수 있다. 예를 들어, 지정된 범위 내의 각 어드레스에서의 데이터 값을 소정의 값으로 설정하는 설정 명령을 제공할 수 있다. 미리 결정된 값은 0이거나 일부 다른 고정값일 수 있다. 따라서, 단일 명령을 실행함으로써, 정보 범위(64)를 지정하는 어드레스들의 범위 내의 모든 데이터 값은 제로 또는 일부 다른 값으로 클리어(clear)될 수 있다.
유사하게, 범위 정보(64)로 표시된 어드레스들의 범위를 갖는 저장 위치에 각각의 데이터 값을 복사하기 위한 명령이 제공될 수 있다. 어드레스들의 허용된 범위 내에 복사될 데이터 값은, 명령 인코딩 시에 또는 레지스터(40)에서 지정된 어드레스들에 의해 식별될 수 있거나, 또는 범위 정보(64)가 제1 유계 포인터 레지스터(60) 내의 범위 정보(64)에 의해 표시된 어드레스들에 복사될 데이터 값을 포함하는 어드레스들의 범위를 식별하는 제2 유계 포인터 레지스터(60)를 지정함으로써 식별될 수 있다.
이러한 타입의 또 다른 명령은 지정된 포인터 레지스터(60)의 범위 정보(64)로 나타낸 범위 내의 어드레스들을 갖는 저장 위치에서 검색될 특정 데이터 값을 지정할 수 있는 검색 명령일 수 있다.
따라서, 타겟 유계 포인터 저장 위치(60)를 지정하는 이러한 타입의 명령들의 범위("제1 타입의 명령")가 있을 수 있다. 이에 응답하여, 처리 파이프라인(12)은 타겟 유계 포인터 저장 위치(60)에 대해 정의된 어드레스들의 허용 범위(64)에 의거하여 결정된 어드레스들의 목표 범위에 관하여 주어진 처리 동작을 수행한다. 이 타입의 명령은, 범위 정보를 사용하여 주어진 포인터의 사용이 허용되는지 여부를 결정하는 도 2에 도시된 형태의 제2 타입의 명령에 부가하여 제공될 수 있다.
제1 타입의 명령들은 주어진 구현에서 제공되는 특정 마이크로 아키텍처(micro-architecture)에 따라, 파이프라인(4) 내에서 다수의 상이한 방식으로 구현될 수 있다. 예를 들어, 일부 시스템에 있어서, 제1 타입의 단일 명령은, 각각이 범위 정보(64)에 의해 정의된 범위 내의 단일 어드레스를 지정하는 다수의 개별 마이크로 연산(micro-operations)으로 디코드 스테이지(8)에 의해 디코딩될 수 있는데, 이것은 필요한 범위 전체에 걸쳐 연산을 수행하기 위해서 개별적으로 실행될 수 있다. 이러한 접근법은, 디코딩된 마이크로 연산이 주어진 어드레스에 대하여 대응하는 연산을 트리거하기 위한 단일 명령과 동일한 방식으로 처리될 수 있기 때문에, 실행 스테이지(12) 및 임의의 저장 구조에서 구현하는 것이 더 간단할 수 있다. 그럼에도 불구하고, 명령 캐시(20) 및 메모리(50)에서의 코드 밀도는, 제1 타입의 단일 명령이 범위 전체에 걸쳐서 수행될 연산을 트리거할 수 있기 때문에 향상될 수 있고, 또한 제1 타입의 명령을 포함하는 코드를 기록하기 프로그래머가 포인터에 대한 어드레스들의 허용 범위를 인식할 필요가 없기 때문에 보안이 개선될 수 있다.
대안적으로, 디코드 스테이지(8)는 제1 타입의 명령을 실행 스테이지(12)로 전달되는 단일 연산으로 디코딩할 수 있고, 실행 스테이지(12)는 각 어드레스에 대한 다수의 개별 연산을 트리거하는 회로를 가질 수 있다. 대안적으로, 실행 스테이지(12)는 요청된 유계 포인터의 범위 정보(64)에 근거하여 요청된 어드레스들의 범위를 지정하는 메모리/캐시 계층에 단일 코멘드를 발행할 수 있고, 메모리 또는 캐시와 관련된 제어 회로는 각 어드레스에 대한 개별 연산에 응답할 책임이 있을 수 있다.
아키텍쳐 레벨에서 제1 타입의 명령은 주어진 유계 포인터에 대한 범위 정보로 표시된 어드레스들의 범위와 관련하여 수행될 연산을 트리거하지만, 이것은 반드시 이 명령의 마이크로 아키텍처 구현이 실제로 명령을 그 범위 내의 각 어드레스에 대해 하나씩, 개별 연산으로 분해해야 한다는 것을 의미하지 않는다는 것에 유념한다. 예를 들어, 각 어드레스에 대해 개별 연산이 실행된 것과 같은 결과를 주는 적은 수의 연산을 수행할 수 있다. 예를 들어, 캐시 유지보수 작업에 있어서, 범위 정보(64)로 나타낸 어드레스들의 범위는 비교적 클 수 있고, 캐시 36, 20, 24, 52에 비교적 적은 엔트리가 있을 수 있다. 해당 범위 내의 각 어드레스에 대해 개별 연산이 트리거되면, 이것은 해당 범위 내의 모든 어드레스에 대해 태그를 검색해야 하므로 상당한 양의 전력을 소모할 수 있는 많은 수의 캐시 검색(cache lookups)을 필요로 할 수 있다. 대신, 지정된 어드레스들의 범위와 태그를 비교하고, 태그가 그 범위 내에 있으면 해당 엔트리에 대한 유지보수를 수행하는 캐시 36, 20, 24, 52의 각 엔트리를 통행하는 것이 더 효율적일 수 있어, 실제로 개별적인 유지보수 작업을 각 어드레스에 발행할 필요는 없다. 이 접근 방식을 사용하면, 범위 내의 각 어드레스에 대한 개별 유지보수 작업과 동일한 결과를 주기 위해서 각 엔트리를 한 번만 조회하면 된다. 따라서, 일반적으로 미리 결정된 연산은 범위 정보에 의거하여 결정된 어드레스들의 목표 범위에 대해 수행될 수 있지만, 범위 내의 각각의 개별 어드레스에 대해 독립된 연산을 실제로 수행하는 것은 (여전히 가능하지만) 필수적이지는 않다.
따라서, 위에서 언급한 타입의 명령들을 마이크로 아키텍처 레벨로 구현할 수 있는 여러 가지 방법이 있다.
도 4는 도 3에 도시된 캐시 클리닝 명령(70)과 같은 제1 타입의 명령을 실행하는 방법을 도시한 것이다. 스텝 100에서 제1 타입의 명령이 발생한다. 이것은 디코드 스테이지(8)에 있을 수 있으며, 여기서 디코드 스테이지는 어드레스들의 범위를 사용하여 대응하는 연산을 수행하기 위한 다수의 마이크로 연산에 그 명령을 매핑할 수 있고, 또는 이러한 타입의 명령이 실제로 실행되는 실행 스테이지(12)에 있을 수 있다. 제1 타입의 명령에 응답하여, 스텝(102)에서는, 실행 스테이지(12)는 제1 타입의 명령으로 지정된 대응하는 포인터 레지스터 X에 대해 정의된 허용 범위에 의거하여 결정된 어드레스들의 목표 범위 전체에 걸쳐 주어진 처리 동작의 수행을 트리거한다.
도 5는 예를 들어 도 2에 도시된 포인터 설정 명령 또는 로드 명령과 같은 제2 타입의 명령을 실행하는 방법을 도시한 것이다. 스텝 110에서는, 제2 타입의 명령이 발생되어 유계 포인트 레지스터 X를 지정한다. 스텝 112에서는, 처리 파이프라인(4)은 레지스터 X의 유계 포인트에서 지정된 포인터(62)를 사용하여 주어진 처리 연산을 수행한다. 한편, 스텝 114에서는, 파이프라인(4)은 유계 포인터 레지스터 X 내의 포인터(62)를 사용하여 결정된 어드레스가 범위 정보(64)로 나타낸 허용 범위 내에 있는지의 여부를 결정한다. 포인터(62)를 사용하여 결정된 어드레스는 포인터(62) 자체 또는 포인터와 오프셋의 합계와 같은 포인터로부터 도출된 어드레스일 수 있다. 포인터를 사용하여 결정된 어드레스가 허용 범위 내에 있을 때, 스텝 116에서는 에러가 트리거되지 않고, 어드레스가 허용 범위 밖에 있을 때는 스텝 118에서 에러가 트리거된다. 예를 들어, 에러는 허용 범위를 벗어난 어드레스들을 처리하기 위한 보안 예외 또는 또 다른 루틴의 처리를 트리거할 수 있다. 스텝 114 내지 118은 경우에 따라 스텝 112와 병렬로 수행되거나 스텝 112 이전 또는 이후에 수행될 수 있다. 예를 들어, 어떤 경우에는, 포인터(62)를 사용하는 동작이 진행될 수 있지만, 범위 위반이 검출되면 에러가 트리거되고 처리가 취소될 수 있다. 다른 경우에는, 범위 체크가 먼저 수행될 수 있고, 포인터(62)를 사용하는 동작은 범위 위반이 없는 경우에만 진행될 수 있다.
몇몇 경우에는, 제1 타입의 명령들에 대해, 특정 범위 내의 각 어드레스에 대해 수행된 연산은 포인터(62) 자체의 실제 값과는 독립적일 수 있다. 예를 들어,도 3에 도시된 캐시 유지보수 명령은 포인터 값(62)을 전혀 고려하지 않고, 캐시 유지보수 동작은 범위 정보(64)로 지정된 범위에만 의존한다. 이것은 유계 포인터 레지스터를 사용하는 연산이 통상적으로 포인터 값 자체에 작용하고 범위 정보와는 무관한 유계 포인터를 지원하는 아키텍처에 대해서는 드문 일이다.
그러나, 어떤 경우에는, 제1 타입의 명령에 응답하여 수행되는 처리 연산이 적어도 부분적으로 포인터 값(62) 자체뿐만 아니라 범위 정보(64)에도 의존하는 것이 또한 가능하다. 예를 들어, 도 6에 도시한 바와 같이, 지정된 범위 내의 각 어드레스에 대해 일련의 연산을 수행할 때, 이들 연산을 통해 인터럽트가 일부 수신될 수 있다. 예를 들어, 도 6은 지정된 범위 내의 각 어드레스에 대한 명령 캐시(20)에서 무효화를 수행하기 위한 명령의 예를 나타낸다. 포인터(122)에서 인터럽트(120)가 발생할 때, 무효화가 수행된 마지막 어드레스는 타겟 유계 포인터 레지스터의 포인터(62)로 설정될 수 있다. 그 후, 처리는 인터럽트에 응답하여 수행될 필요가 있는 모든 처리를 수행하기 위해 인터럽트 핸들러(124)의 실행으로 전환한다. 인터럽트 처리로부터 복귀할 때, 포인트 126에서는 포인터(62)에 의해 표시된 어드레스에서 무효화가 다시 시작될 수 있으므로, 인터럽트(120) 전에 이미 완료된 어드레스들에 대한 무효화를 반복할 필요는 없다. 따라서, 포인터 값(62)은 이미 수행된 연산들을 반복해야 하는 것을 피하기 위해 제1 타입의 명령의 진행을 추적하는 수단으로서 사용될 수 있다.
도 6은 제1 타입의 명령이 어드레스별로 개별 연산으로 분해되는 예를 도시한 것이지만, 위에서 언급한 것처럼, 다른 마이크로 아키텍처는 예를 들어 각 캐시 엔트리를 체크하여 지정된 범위 내의 어드레스에 대한 데이터가 있는지 여부를 확인함으로써 상이한 방식으로 같은 동작을 구현할 수 있다는 점에 유념한다.
상기 예들은 주어진 유계 포인터에 대한 범위 정보(64)가 하한(68) 및 상한(69)으로 표현되고, 범위 정보(64)가 포인터(62)와 동일한 레지스터에 저장되는 특정 실시 예를 나타낸다. 그러나, 도 7 내지 도 9는 주어진 유계 포인터와 관련된 범위 정보가 표시될 수 있는 다른 방식을 도시한 것이다.
도 7에 도시된 바와 같이, 범위 정보(64)는 대신 베이스 어드레스(150) 및 베이스 어드레스(150)로부터 시작하는 어드레스들의 범위의 사이즈(예컨대, 4K, 8K 등)를 식별하는 사이즈 파라미터(152)로 표시될 수 있다.
또한, 도 8 및 도 9에 도시된 바와 같이, 범위 정보(64)(또는 다른 제한 정보(66))가 포인터(62) 자체와 동일한 레지스터에 저장될 필요는 없다. 예를 들어, 포인터 레지스터(60)는 단순히 포인터(62)를 저장할 수 있고, 그 다음에 대응하는 범위 정보를 저장하기 위해 몇몇 다른 저장 요소(160)(스택 위 또는 메모리 내의 추가 레지스터 또는 위치)가 제공될 수 있다. 도 8에 도시된 바와 같이, 몇몇의 경우에는, 각각의 포인터 레지스터(62)와 대응하는 범위 저장 요소(160) 사이에 1:1 매핑이 있을 수 있어, 주어진 포인터에 대한 범위 정보에 액세스하기 위해서 프로세서가 대응하는 범위 저장 요소(160)를 간단히 판독할 수 있다.
도 9에 도시된 바와 같이, 다른 경우에 있어서는, 포인터 레지스터(60)와 범위 저장 요소(160) 사이에 가변 매핑이 있을 수도 있다. 예를 들어, 도 9에 도시된 바와 같이, 각 포인터 레지스터(60)는, 범위 저장 요소들(160) 중 어느 것이 그 포인터에 대한 범위 정보를 저장하는지를 식별하는 범위 식별자(170)와 함께 포인터(64)를 지정할 수 있다. 이것은 다수의 포인터 레지스터(60)가 동일한 범위 정보(예를 들어, 도 9의 포인터 레지스터 PRO, PR2가 동일한 범위 정보를 참조)에 대응하게 하여, 범위 저장 요소의 수가 감소되도록 하기 때문에 유용할 수 있다. 많은 포인터가 정의된 동일한 능력을 갖는 것이 상대적으로 일반적일 수 있으므로, 이 접근법은 각 포인터에 대하여 별도로 능력을 정의하는 것과 비교하여 이것을 구현하기 위한 회로 오버헤드를 줄일 수 있다.
또한, 도 1은 일반적인 정수 또는 부동 소수점 값을 저장하기 위한 범용 레지스터(40)와 분리된 포인터 레지스터(60)를 도시하지만, 다른 예에 있어서는, 일반적인 데이터 값 또는 유계 포인터를 저장할 수 있는 공통 레지스터 세트가 있을 수 있다. 유계 포인터가 아닌 값은 무효한 것으로 설정된 범위 정보(64)(및 제공된 경우 제한 66)를 가질 수 있다. 따라서, 이 경우, 유계 포인터 레지스터(60)는 단순히 유효 범위 정보가 설정되는 범용 레지스터의 일부일 수 있다.
또한, 유계 포인터는 또한 레지스터가 아닌 다른 종류의 저장 요소에 저장될 수 있다. 예를 들어, 일부 아키텍처는 스택 메모리 위의 포인터에 액세스할 수 있으며, 이 경우 명령은 주어진 포인터에 액세스하기 위해 스택을 참조할 수 있다. 따라서, 스택 위의 유계 포인터를 참조하는 명령을 사용하여 참조된 스택 위치에 저장되는 유계 포인터와 관련된 범위 정보가 나타내는 어드레스들의 범위에 적용될 소정의 처리 연산을 트리거할 수 있다.
상기의 예들은 유계 포인터에 대한 범위 정보가 나타내는 허용 범위 내의 각 어드레스에 대해 소정의 연산이 수행되는, 유계 포인터를 오퍼랜드로서 지정하는 명령을 나타낸다.
그러나, 도 10에 도시된 바와 같이, 허용 범위의 일부에만 대응하는 어드레스들의 목표 범위에 대해 소정의 동작이 수행되는 명령의 형태를 제공하는 것도 가능하다. 예를 들어, 도 10에 도시된 바와 같이, 상이한 형태의 제1 타입의 명령이 제공될 수 있다. 제1 형태의 명령(180)은 허용 범위 전체에 대응하는 어드레스들의 목표 범위에 대해 특정한 처리 동작을 트리거할 수 있다. 제2 형태의 명령(182)은 허용 범위의 하위 어드레스(68)와 포인터 어드레스(62) 자체와의 사이에 있는 어드레스들의 목표 범위에 대해 수행될 처리 동작을 트리거할 수 있다. 제3 형태의 명령(184)은 포인터 어드레스(62)와 허용 범위의 상위 어드레스와의 사이의 어드레스들의 목표 범위에 대해 수행될 처리 동작을 트리거할 수 있다(상위 어드레스는 도 10에 도시된 바와 같이 상한값(69)으로부터 또는 도 7과 같이 베이스 어드레스(150) 및 사이즈 표시(152)로부터 결정될 수 있다). 제3 형태의 명령(184)은 예를 들어 도 6에 도시된 상황에서 유용하여 인터럽트가 수신되기 전에 도달된 어드레스에서 인터럽트에 따라 동작을 다시 시작도록 허용할 수 있다.
주어진 프로세서 구현은 이러한 형태의 명령 180, 182, 184 중 어느 하나, 두 개 또는 모두를 지원할 수 있다. 일부 타입의 동작(예를 들어, 캐시 클리닝)에 대해서는, 허용 범위의 상이한 부분들에 동작을 적용할 때 유연성을 제공하기 위해 이들 형태 중 몇몇이 지원될 수 있으며, (예를 들어, 특정 값을 검색하는) 다른 타입의 동작들은 명령의 한 형태(예를 들어, 목표 범위가 전체 허용 범위인 형태)만을 지원할 수 있다.
따라서, 일반적으로, 제1 타입의 명령은 주어진 유계 포인터에 대한 범위 정보에 근거해 적어도 부분적으로 결정된 어드레스들의 목표 범위에 대해 수행될 동작을 트리거할 수 있다. 선택적으로, 목표 범위는 또한 포인터 자체의 값 또는 목표 범위에 대한 경계를 나타내는 추가 입력 오퍼랜드와 같은 다른 파라미터에 의거하여 결정될 수 있다.
본 원에서, "... 구성된(to configured)"이라는 단어는 장치의 구성 요소가 정의된 동작을 수행할 수 있는 구성을 갖는 것을 의미하는 것으로 사용된다. 이 문맥에서, "구성"은 하드웨어 또는 소프트웨어의 상호접속의 배열 또는 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 가질 수 있거나 프로세서 또는 다른 처리 장치가 기능을 수행하도록 프로그래밍될 수 있다. "구성된"은 정의된 동작을 제공하기 위해 장치 요소가 어떤 식으로든 변경되어야 한다는 것을 의미하는 것은 아니다.
본 발명의 예시적인 실시 예가 첨부된 도면을 참조하여 상세히 설명되었지만, 본 발명은 이러한 정확한 실시 예에 한정되지 않으며, 다양한 변경 및 수정이 첨부된 청구 범위에 의해 한정된 것처럼 본 발명의 범위 및 정신을 일탈하지 않고 본 기술분야의 당업자에 의해 이루어질 수 있다는 것을 이해해야 한다.

Claims (24)

  1. 포인터에 대한 어드레스들의 허용 범위를 나타내는 관련 범위 정보를 갖는 포인터를 각각 저장하는 하나 이상의 유계 포인터 저장 요소와,
    주어진 유계 포인터 저장 요소를 식별하는 제1 타입의 명령에 응답하여, 상기 주어진 유계 포인터 저장 요소에 저장된 포인터와 관련된 범위 정보에 의거하여 적어도 부분적으로 결정된 어드레스들의 목표 범위에 대하여 미리 결정된 동작을 수행하는 처리 회로를 구비하는 것을 특징으로 하는, 장치.
  2. 제 1 항에 있어서,
    상기 어드레스들의 허용 범위는 상기 어드레스들의 목표 범위를 포함하는 것을 특징으로 하는, 장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 어드레스들의 목표 범위는 상기 어드레스들의 허용 범위 내의 모든 어드레스들을 포함하는 것을 특징으로 하는, 장치.
  4. 제 1 항 또는 제 2 항에 있어서,
    상기 어드레스들의 목표 범위는 포인터에 의해 표시된 어드레스와 상기 어드레스들의 허용 범위의 상위 어드레스 또는 하위 어드레스와의 사이의 어드레스들을 포함하는 것을 특징으로 하는, 장치.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 하나 이상의 유계 포인터 저장 요소는 하나 이상의 레지스터를 구비하는 것을 특징으로 하는, 장치.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    지정된 유계 포인터 저장 요소를 식별하는 제2 타입의 명령에 응답하여, 상기 처리 회로는 상기 지정된 유계 포인터 저장 요소에 저장된 포인터에 대한 동작을 수행하도록 구성되는 것을 특징으로 하는, 장치.
  7. 제 6 항에 있어서,
    상기 제2 타입의 명령에 응답하여, 상기 처리 회로는 상기 지정된 유계 포인터 저장 요소에 저장된 포인터를 사용하여 결정된 어드레스가 상기 지정된 유계 포인터 저장 요소에 대한 범위 정보에 의해 표시된 상기 어드레스들의 허용 범위 밖에 있을 때 에러 조건을 트리거하도록 구성되는 것을 특징으로 하는, 장치.
  8. 제 6 항 또는 제 7 항에 있어서,
    상기 제2 타입의 명령은 상기 지정된 유계 포인터 저장 요소에 저장된 포인터를 설정하기 위한 명령을 포함하는 것을 특징으로 하는, 장치.
  9. 제 6 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 제2 타입의 명령은 상기 지정된 유계 포인터 저장 요소에 저장된 포인터를 사용하여 결정된 어드레스로부터 데이터 값을 액세스하기 위한 명령을 포함하는 것을 특징으로 하는, 장치.
  10. 제 1 항 내지 제 9 항 중 어느 한 항에 있어서,
    대응하는 어드레스와 관련된 데이터를 각각 저장하는 복수의 엔트리를 포함하는 캐시를 구비하고,
    상기 제1 타입의 명령은, 상기 미리 결정된 동작이 상기 대응하는 어드레스가 상기 어드레스들의 목표 범위 내에 있는 선택된 엔트리들에 대하여 캐시 유지보수 동작을 수행하는 것을 포함하는 캐시 유지보수 명령을 포함하는 것을 특징으로 하는, 장치.
  11. 제 10 항에 있어서,
    상기 캐시는,
    데이터 캐시와,
    명령 캐시와,
    변환 색인 버퍼(translation lookaside buffer)와,
    분기 목표 어드레스 캐시 중 적어도 하나를 구비하는 것을 특징으로 하는, 장치.
  12. 제 10 항 또는 제 11 항에 있어서,
    상기 캐시 유지보수 동작은,
    선택된 엔트리들 내의 데이터를 무효화하는 것과,
    선택된 엔트리들 내의 데이터를 클리닝하는 것과,
    선택된 엔트리들 내의 데이터를 클리닝하여 무효화하는 것 중의 하나를 포함하는 것을 특징으로 하는, 장치.
  13. 제 1 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 제1 타입의 명령은 상기 미리 결정된 동작이 상기 어드레스들의 목표 범위 내의 각 어드레스에 대해 미리 결정된 값으로 데이터 값을 설정하는 것을 포함하는 설정 명령을 구비하는 것을 특징으로 하는, 장치.
  14. 제 1 항 내지 제 13 항 중 어느 한 항에 있어서,
    상기 제1 타입의 명령은 상기 미리 결정된 동작이 각각의 데이터 값을 상기 어드레스들의 목표 범위 내의 각 어드레스에 복사하는 것을 포함하는 복사 명령을 구비하는 것을 특징으로 하는, 장치.
  15. 제 14 항에 있어서,
    상기 복사 명령은 범위 정보에 의해 표시된 상기 어드레스들의 허용 범위가 복사될 각 데이터 값을 저장하는 저장 위치의 어드레스들의 범위를 식별하는 제2 유계 포인터 저장 요소를 지정하는 것을 특징으로 하는, 장치.
  16. 제 1 항 내지 제 15 항 중 어느 한 항에 있어서,
    상기 제1 타입의 명령은 상기 미리 결정된 동작이 상기 어드레스들의 목표 범위 내의 각 어드레스에서 지정된 값을 검색하는 것을 포함하는 검색 명령을 구비하는 것을 특징으로 하는, 장치.
  17. 제 1 항에 있어서,
    상기 미리 결정된 동작은 상기 주어진 유계 포인터 저장 요소에 저장된 포인터의 값과는 관계가 없는 것을 특징으로 하는, 장치.
  18. 제 1 항 내지 제 16 항 중 어느 한 항에 있어서,
    상기 어드레스들의 목표 범위의 일부에 대해 상기 미리 결정된 동작을 수행한 후에 발생하는 인터럽트에 응답하여, 상기 처리 회로는 상기 주어진 유계 포인터 저장 요소 내의 포인터를 갱신하여 상기 미리 결정된 동작이 중단되었던 어드레스를 표시하도록 구성되고,
    인터럽트의 처리로부터 복귀한 후에, 상기 처리 회로는 상기 주어진 유계 포인터 저장 요소 내의 포인터에 의해 표시된 어드레스에서 상기 미리 결정된 동작을 수행하는 것을 다시 시작하도록 구성되는 것을 특징으로 하는, 장치.
  19. 제 1 항 내지 제 18 항 중 어느 한 항에 있어서,
    각각의 유계 포인터 저장 요소는 포인터 및 관련 범위 정보를 저장하도록 구성되는 것을 특징으로 하는, 장치.
  20. 제 1 항 내지 제 18 항 중 어느 한 항에 있어서,
    대응하는 유계 포인터 저장 요소에 저장된 포인터에 대한 관련 범위 정보를 저장하는 추가 저장 요소를 구비하는 것을 특징으로 하는, 장치.
  21. 제 1 항 내지 제 20 항 중 어느 한 항에 있어서,
    범위 정보는 상기 어드레스들의 허용 범위에 대한 하한(lower bound) 및 상한(upper bound)을 식별하는 것을 특징으로 하는, 장치.
  22. 제 1 항 내지 제 20 항 중 어느 한 항에 있어서,
    범위 정보는 상기 어드레스들의 허용 범위에 대한 하한 및 상한과, 상기 어드레스들의 허용 범위의 사이즈 중 하나를 식별하는 것을 특징으로 하는, 장치.
  23. 포인터에 대한 어드레스들의 허용 범위를 나타내는 관련 범위 정보를 갖는 포인터를 저장하는 적어도 하나의 수단과,
    주어진 저장 수단을 식별하는 제1 타입의 명령에 응답하여, 상기 주어진 저장 수단에 저장된 포인터와 관련된 범위 정보에 의거하여 적어도 부분적으로 결정된 어드레스들의 목표 범위에 대해 미리 결정된 동작을 수행하는 수단을 구비하는 것을 특징으로 하는, 장치.
  24. 포인터에 대한 어드레스들의 허용 범위를 나타내는 관련 범위 정보를 갖는 포인터를 각각 저장하는 하나 이상의 유계 포인터 저장 요소를 구비하는 장치에 대한 방법으로서,
    주어진 유계 포인터 저장 요소를 식별하는 제1 타입의 명령을 수신하는 단계와,
    상기 제1 타입의 명령에 응답하여, 상기 주어진 유계 포인터 저장 요소에 저장된 포인터와 관련된 범위 정보에 의거하여 적어도 부분적으로 결정된 어드레스들의 목표 범위에 대해 미리 결정된 동작을 수행하는 단계를 포함하는 것을 특징으로 하는, 방법.
KR1020187002227A 2015-07-10 2016-06-14 포인터와 관련된 범위 정보를 사용하여 명령을 실행하는 장치 및 방법 KR20180027524A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1512102.3 2015-07-10
GB1512102.3A GB2540206B (en) 2015-07-10 2015-07-10 Apparatus and method for executing instruction using range information associated with a pointer
PCT/GB2016/051758 WO2017009598A1 (en) 2015-07-10 2016-06-14 Apparatus and method for executing instruction using range information associated with a pointer

Publications (1)

Publication Number Publication Date
KR20180027524A true KR20180027524A (ko) 2018-03-14

Family

ID=54013768

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187002227A KR20180027524A (ko) 2015-07-10 2016-06-14 포인터와 관련된 범위 정보를 사용하여 명령을 실행하는 장치 및 방법

Country Status (6)

Country Link
US (1) US11314641B2 (ko)
EP (1) EP3320445B1 (ko)
KR (1) KR20180027524A (ko)
CN (1) CN107735775B (ko)
GB (1) GB2540206B (ko)
WO (1) WO2017009598A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers
GB2562062B (en) * 2017-05-02 2019-08-14 Advanced Risc Mach Ltd An apparatus and method for managing capability metadata
GB2562102B (en) * 2017-05-05 2019-09-04 Advanced Risc Mach Ltd An apparatus and method for managing use of capabilities
US10896030B2 (en) 2017-09-19 2021-01-19 International Business Machines Corporation Code generation relating to providing table of contents pointer values
US10620955B2 (en) 2017-09-19 2020-04-14 International Business Machines Corporation Predicting a table of contents pointer value responsive to branching to a subroutine
US10705973B2 (en) * 2017-09-19 2020-07-07 International Business Machines Corporation Initializing a data structure for use in predicting table of contents pointer values
US11061575B2 (en) 2017-09-19 2021-07-13 International Business Machines Corporation Read-only table of contents register
US10884929B2 (en) * 2017-09-19 2021-01-05 International Business Machines Corporation Set table of contents (TOC) register instruction
US10725918B2 (en) 2017-09-19 2020-07-28 International Business Machines Corporation Table of contents cache entry having a pointer for a range of addresses
GB2572151B (en) 2018-03-19 2020-07-08 Advanced Risc Mach Ltd An apparatus and method for storing bounded pointers
GB2572954B (en) * 2018-04-16 2020-12-30 Advanced Risc Mach Ltd An apparatus and method for prefetching data items
US10635445B2 (en) * 2018-05-29 2020-04-28 Arm Limited Handling modifications to permitted program counter ranges in a data processing apparatus
GB2576506B (en) * 2018-08-20 2021-06-30 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03116248A (ja) * 1989-09-29 1991-05-17 Hitachi Ltd データベースのデータ保全方式
WO2000057276A1 (en) * 1999-03-25 2000-09-28 Excelon Corporation Method and apparatus for pointer relocation optimization for virtual memory mapping and transaction management in a database system
EP1182562B1 (en) * 2000-08-21 2011-05-11 Texas Instruments France Smartcache with interruptible block prefetch
EP1313014B1 (en) * 2001-11-15 2010-03-03 Texas Instruments France Interruptible and re-entrant instruction for cleaning a region of a cache memory
JP2004013556A (ja) * 2002-06-07 2004-01-15 Matsushita Electric Ind Co Ltd プロセッサ装置、コンパイル装置及びその方法
JP5308629B2 (ja) * 2007-03-26 2013-10-09 ルネサスエレクトロニクス株式会社 マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス保護方法
US8509346B2 (en) * 2007-10-10 2013-08-13 St-Ericsson Sa Transmitter with reduced power consumption and increased linearity and dynamic range
CN101615133A (zh) * 2008-06-27 2009-12-30 国际商业机器公司 用于细粒度延迟写拷贝的装置和方法
WO2010009152A1 (en) * 2008-07-15 2010-01-21 Immersion Corporation Systems and methods for shifting haptic feedback function between passive and active modes
US8082399B2 (en) * 2008-07-31 2011-12-20 International Business Machines Corporation Cache bounded reference counting
US7962729B2 (en) 2009-01-05 2011-06-14 International Business Machines Corporation Dynamic runtime range checking of different types on a register using upper and lower bound value registers for the register
CN101515320B (zh) * 2009-04-10 2011-08-17 中国科学院软件研究所 一种攻击时漏洞检测方法及其系统
NL2002799C2 (en) * 2009-04-24 2010-10-26 Univ Delft Tech Data structure, method and system for address lookup.
US8635415B2 (en) * 2009-09-30 2014-01-21 Intel Corporation Managing and implementing metadata in central processing unit using register extensions
US20110087389A1 (en) * 2009-10-09 2011-04-14 Gm Global Technology Operations, Inc. Standby mode for optimization of efficiency and durability of a fuel cell vehicle application
US8850573B1 (en) * 2010-04-14 2014-09-30 Google Inc. Computing device with untrusted user execution mode
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
CN102385524B (zh) * 2011-12-23 2014-11-12 浙江大学 一种基于混编指令集的编译链指令替换方法
US8922243B2 (en) * 2012-12-23 2014-12-30 Advanced Micro Devices, Inc. Die-stacked memory device with reconfigurable logic
US20160055095A1 (en) * 2013-03-28 2016-02-25 Hewlett-Packard Development Company, L.P. Storing data from cache lines to main memory based on memory addresses
US9436847B2 (en) * 2014-09-26 2016-09-06 Intel Corporation Cryptographic pointer address encoding

Also Published As

Publication number Publication date
GB2540206A (en) 2017-01-11
GB201512102D0 (en) 2015-08-19
WO2017009598A1 (en) 2017-01-19
EP3320445A1 (en) 2018-05-16
EP3320445B1 (en) 2022-11-30
CN107735775A (zh) 2018-02-23
US11314641B2 (en) 2022-04-26
CN107735775B (zh) 2022-08-02
US20180196746A1 (en) 2018-07-12
GB2540206B (en) 2018-02-07

Similar Documents

Publication Publication Date Title
US11314641B2 (en) Apparatus and method for executing instruction using range information associated with a pointer
JP6902029B2 (ja) 有界ポインタを管理するための装置および方法
EP3341846A1 (en) An apparatus and method for controlling instruction execution behaviour
JP7128206B2 (ja) 機能の使用を管理するための装置および方法
CN110799939B (zh) 用于控制指令的执行的设备与方法
US11023237B2 (en) Apparatus and method for interpreting permissions associated with a capability
US11347508B2 (en) Apparatus and method for managing a capability domain
US10877833B2 (en) Vector atomic memory update instruction
US10402203B2 (en) Determining a predicted behaviour for processing of instructions
CN110622133B (zh) 用于管理能力域的设备及方法
US11755243B2 (en) Apparatus and method for triggering action
TW202319913A (zh) 用於使用能力限制對記憶體存取之技術

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right