KR102528701B1 - 자격 도메인을 관리하는 장치 및 방법 - Google Patents

자격 도메인을 관리하는 장치 및 방법 Download PDF

Info

Publication number
KR102528701B1
KR102528701B1 KR1020197036479A KR20197036479A KR102528701B1 KR 102528701 B1 KR102528701 B1 KR 102528701B1 KR 1020197036479 A KR1020197036479 A KR 1020197036479A KR 20197036479 A KR20197036479 A KR 20197036479A KR 102528701 B1 KR102528701 B1 KR 102528701B1
Authority
KR
South Korea
Prior art keywords
entitlement
state
program counter
processing circuitry
entitlements
Prior art date
Application number
KR1020197036479A
Other languages
English (en)
Other versions
KR20200010308A (ko
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 KR20200010308A publication Critical patent/KR20200010308A/ko
Application granted granted Critical
Publication of KR102528701B1 publication Critical patent/KR102528701B1/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative 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/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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

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)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

자격 도메인을 관리하는 장치 및 방법이 제공된다. 이 장치는 명령들을 실행하는 처리회로를 갖고, 처리회로는, 디폴트 상태에 있을 때, 명령들을 실행할 때 처리회로에 의해 행해진 동작을 제한하는데 사용된 자격들을 포함하는 자격 도메인에서 동작하도록 구성된다. 프로그램 카운터 값을 결정하기 위해 처리회로에 의해 사용된 프로그램 카운터 자격을 기억하는 프로그램 카운터 자격 기억 소자가 더 설치된다. 프로그램 카운터 자격은 처리회로에 대한 자격 상태를 식별하도록 구성된다. 그후, 처리회로는, 자격 상태가 디폴트 상태를 나타낼 때, 자격 도메인에서 동작하도록 구성된다. 그러나, 자격 상태가 실행 상태를 나타낼 때, 처리회로는 디폴트 상태에 있을 때보다 덜 제약되게 동작함으로써, 자격 도메인의 수정을 허용하도록 구성된다. 이것은 장치가 자격 도메인을 수정하도록 선택적으로 허용하는 간단하고도 효율적인 메카니즘을 제공한다.

Description

자격 도메인을 관리하는 장치 및 방법
본 발명은 데이터 처리 분야에 관한 것이다.
지정된 처리에 대해 일정한 자격(capability)이 정의되고, 이 정의된 자격을 벗어나는 동작을 행하는 시도가 존재하는 경우에 에러가 유발될 수 있는 자격 기반의 아키텍처에 대한 관심이 증가하고 있다. 자격은 다양한 형태를 취할 수 있지만, 한가지 종류의 자격은 제한 포인터(bounded pointer)("팻 포인터(fat pointer)"로도 불린다)이다.
데이터 처리장치의 처리회로에 의해 액세스하기 위해 제한 포인터 등의 자격을 기억하는 다수의 자격 기억 소자들(예를 들어, 레지스터들)이 설치될 수 있다. 이와 같은 자격 기억 소자 내부의 각각의 제한 포인터는 처리회로에 의해 액세스가능한 메모리 어드레스들의 확장불가능한 범위를 식별하므로, 각각의 제한 포인터는 (관련된 허가와 함께, 처리회로가 액세스할 수 있는 메모리 어드레스들의 허용가능한 범위를 식별하는) 자격으로 불린다. 처리회로가 그것이 이용가능한 특정한 제한 포인터와 관련된 범위 및/또는 허가를 줄이는 조치를 취하는 것이 허용되지만, 이 처리회로는, 이 제한 포인터에 의해 처리회로에 제공되는 자격을 증가시키려고 시도하기 위해 통상 동작시에 범위를 확장할 수는 없다.
자격 기억 소자 내부의 제한 포인터에 의해 식별된 특정한 범위의 메모리 어드레스들은 데이터, 명령 및/또는 다른 자격(예를 들어, 다른 제한 포인터)을 포함한다. 따라서, 임의의 시점에서, 처리회로가 메모리를 액세스할 수 있는 능력은, 자격 기억 소자들 내부에서 식별된 자격과, 이들 자격 기억 소자들 내부에 유지된 자격을 통해 액세스가능한 추가적인 자격들을 포함하는 자격들의 세트에 의해 정의되며, 이와 같은 자격들의 세트를 본 발명에서는 자격 도메인으로 부른다.
데이터 처리장치의 동작중에 처리회로의 자격 도메인을 변경하도록 시도할 필요가 있을 수 있다. 그러나, 이것은 현재의 자격 도메인의 자격들을 고려할 때 액세스 불가능한 메모리 어드레스들에 대한 액세스를 필요로 한다.
처리회로의 자격 도메인의 이와 같은 변경을 가능하게 하는 효율적이고 신뢰할 수 있는 메카니즘을 제공하는 것이 바람직할 것이다.
제1 구성예에서는, 장치로서, 명령들을 실행하는 처리회로를 구비하고, 상기 처리회로는, 디폴트 상태에 있을 때, 상기 명령들을 실행할 때 상기 처리회로에 의해 행해지는 동작을 제한하는데 사용되는 자격들을 포함하는 자격 도메인에서 동작하도록 구성되고, 상기 장치는, 프로그램 카운터 값을 결정하기 위해 상기 처리회로에 의해 사용되는 프로그램 카운터 자격을 기억하는 프로그램 카운터 자격 기억 소자 - 상기 프로그램 카운터 자격은 프로그램 카운터 값을 기억하는 프로그램 카운터 필드와 분리된 자격 상태 필드가 설치되고, 상기 자격 상태 필드는 상기 처리회로에 대한 자격 상태를 식별하는 값을 갖는다 - 를 더 구비하고, 상기 처리회로는, 자격 상태가 상기 디폴트 상태를 나타내는 것에 응답하여, 상기 자격 도메인에서 동작하도록 구성되고 - 상기 처리회로가 상기 디폴드 상태에서 동작하는 경우, 상기 자격 도메인은 상기 처리회로에 의해 수정될 수 없다 - , 상기 처리회로는, 자격 상태가 실행 상태를 나타내는 것에 응답하여, 상기 디폴트 상태에 있을 때보다 덜 제한되게 동작함으로써, 상기 자격 도메인의 수정을 허용하도록 구성되고, 상기 자격들 각각은 메모리 어드레스의 허용가능한 범위를 식별하는 장치가 제공된다.
또 다른 구성예에서는, 명령들을 실행하고, 디폴트 상태에 있을 때, 상기 명령들을 실행할 때 처리회로에 의해 행해지는 동작을 제한하는데 사용되는 자격들을 포함하는 자격 도메인에서 동작하도록 구성된 상기 처리회로를 갖는 장치 내부의 자격 도메인을 관리하는 방법으로서, 프로그램 카운터 값을 결정하기 위해 상기 처리회로에 의해 사용되는 프로그램 카운터 자격을 프로그램 카운터 자격 기억 소자 내부에 기억하는 단계 - 상기 프로그램 카운터 자격은 프로그램 카운터 값을 기억하는 프로그램 카운터 필드와 분리된 자격 상태 필드가 설치되고, 상기 자격 상태 필드는 상기 처리회로에 대한 자격 상태를 식별하는 값을 갖는다 - 와, 자격 상태가 상기 디폴트 상태를 나타내는 것에 응답하여, 상기 처리회로를 상기 자격 도메인에서 동작하는 단계 - 상기 디폴드 상태에서 동작하는 경우, 상기 자격 도메인은 상기 처리회로에 의해 수정될 수 없다 - 와, 자격 상태가 실행 상태를 나타내는 것에 응답하여, 상기 디폴트 상태에 있을 때보다 덜 제한되게 상기 처리회로를 동작함으로써, 상기 자격 도메인의 수정을 허용하는 단계를 포함하고, 상기 자격들 각각은 메모리 어드레스의 허용가능한 범위를 식별하는 자격 도메인의 관리방법이 제공된다.
또 다른 구성예에서는, 장치로서, 명령들을 실행하는 처리수단을 구비하고, 상기 처리수단은, 디폴트 상태에 있을 때, 상기 명령들을 실행할 때 상기 처리수단에 의해 행해지는 동작을 제한하는데 사용되는 자격들을 포함하는 자격 도메인에서 동작하고, 상기 장치는, 프로그램 카운터 값을 결정하기 위해 상기 처리수단에 의해 사용되는 프로그램 카운터 자격을 기억하는 프로그램 카운터 자격 기억 소자 수단 - 상기 프로그램 카운터 자격은 프로그램 카운터 값을 기억하는 프로그램 카운터 필드와 분리된 자격 상태 필드가 설치되고, 상기 자격 상태 필드는 상기 처리수단에 대한 자격 상태를 식별하는 값을 갖는다 - 을 더 구비하고, 상기 처리수단은, 자격 상태가 상기 디폴트 상태를 나타내는 것에 응답하여, 상기 자격 도메인에서 동작하고 - 상기 처리수단이 상기 디폴드 상태에서 동작하는 경우, 상기 자격 도메인은 상기 처리수단에 의해 수정될 수 없다 - , 상기 처리수단은, 자격 상태가 실행 상태를 나타내는 것에 응답하여, 상기 디폴트 상태에 있을 때보다 덜 제한되게 동작함으로써, 상기 자격 도메인의 수정을 허용하고, 상기 자격들 각각은 메모리 어드레스의 허용가능한 범위를 식별하는 장치가 제공된다.
또 다른 구성예에서는, 호스트 데이터 처리장치를 제어하여 전술한 제1 구성예의 장치에 대응하는 명령 실행 환경을 제공하는 프로그램 명령을 포함하는 가상 머신 컴퓨터 프로그램이 제공된다. 일 실시예에서는 가상 머신 컴퓨터 프로그램을 기억하는 컴퓨터 판독가능한 기억매체가 제공된다.
이하, 다음의 첨부도면에 도시된 실시예를 참조하여 본 발명을 더욱 상세히 설명한다.
도 1은 일 실시예에 따른 장치의 블록도이다.
도 2는 제한 포인터 기억 소자들의 세트 내부의 포인터 값을 설정하거나 액세스하려는 시도가 존재하는 경우에 에러가 유발되는 명령들의 종류의 예를 나타낸 것으로, 이때 포인터 값을 사용하여 관련된 범위 정보에 의해 표시된 범위 외부의 어드레스를 지정한다.
도 3은 일 실시예에 따른, 제한 포인터와 관련된 태그 비트의 사용을 예시한 것이다.
도 4는 처리회로의 자격 상태를 갱신하기 위해, 일 실시예에 따라 분기 명령을 실행할 때 행해지는 동작을 나타낸 것이다.
도 5는 처리회로의 자격 상태를 갱신하기 위해, 일 실시예에 따라 링크 명령을 갖는 분기 명령을 실행할 때 행해지는 동작을 나타낸 것이다.
도 6은 처리회로의 자격 상태를 갱신하기 위해, 일 실시예에 따라 복귀 명령을 실행할 때 행해지는 동작을 나타낸 것이다.
도 7은 프로그램 카운터 자격을 갱신할 때 일 실시예에 따라 착수되는 스텝들을 나타낸 흐름도이다.
도 8a 및 도 8b는 일 실시예에 따라 도 7의 스텝 370을 행하기 위한 2가지 선택가능한 옵션을 나타낸 것이다.
도 9는 사용될 수 있는 가상 머신 구현예를 나타낸 것이다.
도면을 참조하여 특정한 실시예를 설명하기 전에, 이하의 실시예의 설명이 주어진다.
전술한 것과 같이, 지정된 처리에 대해 일정한 자격이 정의되고, 이 정의된 자격을 벗어나는 동작을 행하는 시도가 존재하는 경우에 에러가 유발될 수 있는 자격 기반의 아키텍처에 대한 관심이 증가하고 있다. 다양한 종류의 자격이 정의될 수 있지만, 한가지 종류의 자격은 (일 실시예에서는 포인터 값과 이와 관련된 범위 및 허가 정보 모두를 포함하는) 제한 포인터이다.
이와 같은 자격 기반의 아키텍처를 채용하는 장치는, 일반적으로 자격을 기억하는데 사용되는 기억 소자들(본 발명에서는 자격 포인터 기억 소자, 또는 더욱 일반적으로는 자격 기억 소자로도 불린다)을 갖는다. 기억 소자들은, 레지스터(본 발명에서는 제한 포인터 레지스터 또는 자격 레지스터로 불린다)일 수 있으며, 및/또는 범용 메모리 내부의 메모리 위치, 예를 들어, 스택 메모리 상의 위치일 수 있다. 특정한 명령을 사용하여, 이와 같은 기억 소자를 참조함으로써, 원하는 자격을 액세스하고, 이 자격에 근거하여 동작을 행할 수 있다. 예를 들어, 제한 포인터를 고려하면, 이와 같은 명령의 실행은 제한 포인터가 검색되게 할 수 있으며, 그후 제한 포인터 내부의 포인터 값을 사용하여 명령의 실행중에 필요한 메모리 내부의 어드레스를 유도한다. 포인터 값을 직접 사용하여 메모리 어드레스를 식별하거나, 예를 들어, 포인터 값에 대한 오프셋의 가산에 의해, 메모리 어드레스를 유도할 수도 있다. 그후, 메모리 어드레스가 범위 정보에 의해 지정된 범위 내에 있고 이 허가 정보에서 지정된 허가가 만족되면, 동작의 진행이 허용된다.
따라서, 제한 포인터를 사용할 때, 포인터 값 그 자체는, 예를 들어, 액세스할 데이터 값의 어드레스 또는 실행을 위해 페치할 명령을 가리키거나, 이 어드레스 또는 명령을 결정하는데 사용된다. 그러나, 그후 범위 및 허가 정보를 참조하여, 예를 들어, 액세스한 어드레스가 허용가능한 범위 내에 있고 허용된 목적을 위해 액세스되고 있도록 보장한다. 이것은, 예를 들어, 포인터로부터 결정된 어드레스가 특정한 경계값 내부에 유지되어 보안이나 거동의 기능적 정확성을 유지하도록 보장하는데 유용할 수 있다.
이와 같은 접근방법에 의해, 처리회로에 의해 행해진 메모리 액세스를 효율적으로 관리할 수 있다. 그러나, 전술한 것과 같이, 발생되는 문제점은, 자격 도메인이 변경될 수 있게 하는 메카니즘을 효율적이고도 신뢰할 수 있게 제공하는 방식이며, 이것은 현재의 자격 도메인의 자격들을 고려할 때 액세스불가능한 메모리 어드레스들에 대한 액세스를 필요로 할 수 있기 때문이다.
일 실시예에 따르면, 명령들을 실행하는 처리회로를 갖는 장치가 제공되고, 상기 처리회로는, 디폴트 상태에 있을 때, 상기 명령들을 실행할 때 상기 처리회로에 의해 행해지는 동작을 제한하는데 사용되는 자격들을 포함하는 자격 도메인에서 동작하도록 구성된다. 프로그램 카운터 값을 결정하기 위해 상기 처리회로에 의해 사용되는 프로그램 카운터 자격을 기억하는 프로그램 카운터 자격 기억 소자가 더 설치된다. 본 발명에서 설명하는 일 실시예에 따르면, 이 프로그램 카운터 자격은, 처리회로에 대한 자격 상태를 식별하는 정보를 더 포함한다.
처리회로는, 자격 상태가 디폴트 상태를 나타낼 때에는, 자격 도메인에서 동작하도록 구성된다. 그 결과, 처리회로는, 현재 자격 도메인의 자격들을 고려할 때 액세스 불가능한 메모리 어드레스들을 액세스할 수 없다. 그러나, 자격 상태가 실행 상태를 나타내는 것에 응답하여, 상기 디폴트 상태에 있을 때보다 덜 제한되게 동작함으로써, 자격 도메인의 수정을 허용하도록 구성된다.
실행 상태에 있을 때 자격 도메인의 제한이 완화될 수 있는 다양한 방법이 존재하지만, 목적은, 자격 도메인의 제한이 실행된다면 달리 액세스할 수 없게 되는 한 개 이상의 메모리 어드레스들 또는 영역들을 처리회로가 액세스할 수 있도록 허용하는 것이다.
따라서, 전술한 실시예에 따르면, 자격들이 자격 상태 정보를 추가로 지정할 수 잇도록 자격들이 보완된다. 그후, 이와 같은 자격이 프로그램 카운터 자격 기억 소자 내부로 이동하여 프로그램 카운터 자격을 형성하는 경우, 그후 이 자격에 의해 지정된 자격 상태 정보를 사용하여, 처리회로의 현재 자격 상태를 식별하므로, 처리회로가 자격 도메인에 따라 동작하도록 제한되는 디폴트 상태에 있는지 또는 처리회로가 덜 제한되게 동작할 수 있는 실행 상태에 있는지 판정한다.
이와 같은 구성은, 처리회로가 자격 도메인을 수정할 수 있도록 하는데 충분한 증가된 권한이 처리회로에게 일시적으로 제공되게 할 수 있는 단순하고도 효율적인 메카니즘을 제공한다. 적절한 시기에, 처리회로의 새로운 자격 상태로서 디폴트 상태를 식별하도록 프로그램 카운터 자격이 갱신되면, 처리회로가 실행 상태에 있었던 동안 수정된 자격 도메인에 따라 처리회로가 동작하게 된다.
자격 상태를 변경하기 위해, 프로그램 카운터 자격 기억 소자 내부에 기억되는 프로그램 카운터 자격을 갱신하는데 사용되는 다양한 메카니즘이 존재한다. 일 실시예에서, 처리회로는, 식별된 자격을 프로그램 카운터 자격 기억 소자 내부로 이동하여 새로운 프로그램 카운터 자격을 형성하기 위해, 자격을 식별하는 분기 명령을 실행하도록 구성되고, 그후 처리회로는 새로운 프로그램 카운터 자격에 의해 식별된 자격 상태에서 동작한다. 따라서, 현재 행해지고 있는 프로세서는 그것이 현재 액세스하는 자격들 중에서 한 개를 분기 명령의 사용을 통해 범용 자격 기억 소자로부터 프로그램 카운터 자격 기억 소자 내부로 이동하고, 그후 처리회로의 자격 상태는 분기 동작의 수행에서 발생되는 새로운 프로그램 카운터 자격에 의해 식별된다.
분기 명령은 다양한 형태를 취할 수 있다. 그러나, 일 실시예에서, 분기 명령은 링크를 갖는 분기 명령이다. 이와 같은 시나리오에서는, 링크를 갖는 분기 명령의 실행 전에 프로그램 카운터 자격 기억 소자에 기억된 프로그램 카운터 자격이 오래된 프로그램 카운터 자격을 구성하는 것으로 생각되고, 처리회로는 오래된 프로그램 카운터 자격을 사용하여 복귀 어드레스 자격 기억 소자에 기억하기 위한 복귀 어드레스 자격을 생성하고, 복귀 어드레스 자격은 오래된 프로그램 카운터 자격에 의해 식별된 자격 상태를 유지한다. 그 결과, 이와 같은 구성은, 프로세스가 코드의 특정한 부분으로 분기할 수 있도록 한 후, 이 코드가 실행되었을 때, 분기가 행해지기 전에 존재하였던 자격 상태를 유지하는 형태로 프로그램 카운터 자격 기억 소자의 내용을 복귀할 수 있다. 따라서, 예를 들어, 코드가 실행 상태에서 동작할 코드의 특정한 부분으로 분기되어, 자격 도메인을 구성하게 될 자격들에 대해 특정한 변경이 행해질 수 있도록 할 수 있으며, 그후 이 코드의 완료시에, 처리가 다시 디폴트 상태로 복귀하게 되는데, 이 시점에서 처리회로는 수정된 자격 도메인의 자격들에 의해 제한되게 된다.
따라서, 일 실시예에서, 처리회로는 복귀 명령(이것은 분기 명령의 다른 형태인 것으로 생각할 수 있다)을 실행하여 복귀 어드레스 자격을 프로그램 카운터 자격 기억 소자 내에 기록함으로써 복귀 프로그램 카운터 자격을 형성한 후, 처리회로는 복귀 프로그램 카운터 자격에 의해 식별된 자격 상태에서 동작한다.
자격 상태가 실행 상태를 나타낼 때 처리회로가 덜 제한되게 동작하도록 구성될 수 있는 다양한 방법이 존재한다. 그러나, 일 실시예에서, 처리회로는, 실행 상태에서 동작하는 동안 처리회로가 자격들에 의해 제한을 받지 않도록 구성함으로써, 이와 같이 덜 제한되게 동작하도록 구성된다. 따라서, 이와 같은 접근방법은, 처리회로에게 메모리 어드레스 공간에 대한 완전한 액세스를 제공하여, 자격 도메인의 모든 보호장치를 제거하지만, 실행 상태에서 실행되고 있는 코드의 신뢰도가 높은 특정한 상황에서 유용할 수 있다.
또 다른 실시예에서는, 자격 상태가 실행 상태를 나타낼 때, 처리회로가 실행 상태에서 동작하고 있는 동안 적어도 한 개의 자격 검사를 무효화함으로써, 처리회로가 디폴트 상태에 있을 때보다 덜 제한되게 동작하도록 구성된다. 무효화된 자격 검사는 다양한 형태를 취할 수 있다. 예를 들어, 특정한 메모리 액세스 명령은 데이터 처리장치의 범용 레지스터 내부에 기억된 비제한(non-bounded) 포인터를 식별하는 것이 가능하다. 이들 액세스가 더 제한되도록 보장하기 위해, 범위 정보와 이와 관련된 허가를 제공하는 디폴트 데이터 자격(default data capability: DDC)가 제공되고, 비제한된 포인터를 참조하여 식별된 어드레스에 대해 메모리 액세스가 진행되는 것을 허용할 것인지 여부를 판정할 때 이 디폴트 데이터 자격을 참조한다. 그러나, 일 실시예에서는, 실행 상태에 있을 때, 디폴트 데이터 자격을 참조하여 행해지는 이와 같은 검사를 끄도록 결정함으로써, 처리회로가 자격 도메인에 의해 허용된 것을 벗어난 메모리 어드레스 공간을 액세스하는 메카니즘을 제공한다.
또 다른 대안으로서, 프로그램 카운터 자격을 사용하여 명령을 페치할 어드레스를 식별할 때, 처리회로가 실행 상태에서 동작하는 경우에 프로그램 카운터 자격의 범위 및 허가 정보를 참조하여 행해지는 관련된 자격 검사를 무효화하도록 결정되어도 된다.
또 다른 실시예에서, 장치는 자격들을 기억하는 뱅크드(banked) 자격 기억 소자들의 한 개 이상의 세트들을 더 포함하고, 각각의 세트의 뱅크드 자격 기억 소자들은, 디폴트 상태에서 동작할 때 처리회로에 의해 행해진 동작을 제한하는데 사용되는 자격을 기억하는 제1 자격 기억 소자와, 실행 상태에서 동작할 때 처리회로에 의해 행해진 동작을 제한하는데 사용되는 자격을 기억하는 제2 자격 기억 소자를 포함한다. 그후, 각각의 세트의 뱅크드 자격 기억 소자들의 제1 및 제 2 자격 기억 소자들에서 식별된 자격들은, 자격 상태가 실행 상태를 나타낼 때, 처리회로가 상기 디폴트 상태에 있을 때보다 덜 제한되게 동작하도록 구성된다.
따라서, 이와 같은 실시예에 따르면, 자격 기억 소자들의 적어도 일부의 뱅킹(banking)이, 실행 상태에서 동작할 때 자격 도메인의 제한의 완화를 허용하는 메카니즘으로 사용될 수 있다. 특히, 실행 상태에 있을 때, 이와 같은 실시예의 처리회로는 사용된 자격들 중에서 적어도 한 개에 대한 다른 뱅크드 기억 소자를 참조하고, 이 뱅크드 자격 기억 소자는 디폴트 상태에 있을 때 사용된 통상의 자격보다 덜 부담이 되는 제한을 지정하는 자격을 기억한다. 이와 같은 구성은, 실행 상태에 있을 때, 자격 도메인이 수정될 수 있도록 하는데 충분한, 통제된 추가적인 허가 권한이 처리회로에게 제공될 수 있도록 한다.
뱅크드 자격 기억 소자들을 사용하는 것의 대안으로서, 또 다른 실시예에서는, 프로그램 카운터 자격의 갱신이 자격 상태를 소스 상태로부터 목적지 상태로 변경하게 할 때, 소스 상태에 속하는 한 개 이상의 자격 기억 소자들 내부의 자격들이 보존되어 이들 자격이 나중에 복원되도록 허용하고, 목적지 상태와 연관된 관련된 자격들이 상기 한 개 이상의 자격 기억 소자들 내부에 기록된다. 자격 상태가 실행 상태로 변경되면, 처리회로가 디폴트 상태에 있을 때보다 덜 제한되게 동작하도록 상기 한 개 이상의 자격 기억 소자들 내부에 기록된 자격들이 구성될 수 있다. 따라서, 현재의 프로그램 카운터 자격으로 표시되는, 자격 상태가 변경될 때 특정한 자격 기억 소자들의 내용이 전환됨으로써, 자격들의 일부가 덜 제한된 버전으로 교체되게 하여, 처리회로가 자격 도메인을 변경할 수 있게 하는데 충분한 메모리에 대한 향상된 액세스를 처리회로가 갖게 할 수 있다.
일 실시예에서는, 실행 상태로부터 디폴트 상태로 자격 상태가 변경되는 방식을 제한하기 위한 메카니즘이 제공될 수 있다. 특히, 자격 상태가 디폴트 상태로 복귀될 때, 처리회로가 자격 도메인을 우회할 수 있도록 할 수 있는 실행 권한이 처리회로에 남겨지지 않도록 보장하는 것이 필요하다. 따라서, 일 실시예에서는, 자격 상태를 실행 상태로부터 디폴트 상태로 변경하게 하는 자격을 분기 명령이 식별할 때, 처리회로는, 분기 명령에 의해 식별된 자격을 사용하여 갱신된 프로그램 카운터 자격의 사용이 허용되는지 여부를 판정하기 위한 검사 동작을 행하도록 구성된다.
허용된 분기 명령을 식별하는 다양한 방법이 존재할 수도 있다. 그러나, 일 실시예에서는, 자격 상태를 실행 사태로부터 디폴트 상태로 변경하는데 사용될 수 있는 한 개 이상의 종류의 분기 명령이 제공되며, 한 개 이상의 특정한 종류의 분기 명령을 사용하는 것 이외의 프로세스에 의해 분기가 시도되는 경우에는, 검사 명령이 이 상황을 검출하여 적절한 조치를 취하게 된다.
특히, 일 실시예에서는, 검사 동작에 대한 장애 상태 판정시, 처리회로는 소정의 동작을 행하도록 구성된다. 소정의 동작은 다양한 형태를 취할 수 있다. 예를 들어, 일 실시예에서는, 소정의 동작은, 장애 상태가 판정되게 한 분기 명령의 실행시에 예외를 발생하는 것을 포함한다. 그후, 소프트웨어 예외 처리기는 적절한 에러 처리 루틴에게 제어를 전달하여, 실행 상태로부터 디폴트 상태로의 시도된 변경을 취급한다. 예를 들어, 실행 처리 루틴은 프로그램 카운터 갱신이 발생하게 하지만, 처리회로는 실행 상태 내에 유지된다. 이와 달리, 예외 처리 루틴은, 분기 명령에 따른 프로그램 카운터 자격이 발생하도록 허용하기 전에, 처리회로가 실행 상태로부터 디폴트 상태로 복귀하게 하도록 프로그램 카운터 자격이 갱신되는 것이 안정하다는 것을 보장하기 위해 추가적인 검사 및/또는 클린업 동작을 행하도록 구성되어도 된다.
분기 명령의 실행시에 즉시 예외를 발생하는 것에 대한 대안으로서, 또 다른 실시예에서는, 장애 상태의 발생을 표시하도록 플래그가 설정되지만, 프로그램 카운터 자격을 갱신하기 위해 분기 명령의 실행이 완료하도록 허용된다. 그후, 설정된 플래그의 존재를 이용하여 다음 명령이 실행될 때 예외가 발생하게 할 수 있다. 이것은 분기 명령이 실행되고 플래그가 설정되는 시간과 예외가 발생되는 시간 사이에 특정한 이벤트가 발생될 수 있도록 한다. 예를 들면, 플래그 정보 및 프로그램 카운터 자격(PCC) 정보를 보존하는 더 높은 우선도의 예외/인터럽트가 발생될 수 있도록 한 후, 플래그를 클리어하고 다른 프로그램 카운터 자격을 프로그램 카운터 자격 기억 소자 내부에 로드한다. 그후, 더 높은 우선도의 예외/인터럽트로부터의 복귀시에, 플래그 및 PCC 정보가 복원되고, 다음 명령이 실행될 때, 설정된 플래그의 존재가 예외를 발생하게 한다.
일 실시예에서, 프로그램 카운터 자격 내부에 유지된 자격 상태 정보는 자격 내부에 유지된 다른 허가 정보와 마찬가지로 취급되며, 이에 따라 자격 상태를 나타내는 정보를 클리어하여, 자격 상태를 디폴트 상태로 변경하는 것이 가능하다. 이것은, 예를 들어, 처리회로가 실행 상태에서 동작하는 동안 그 자체가 프로그램 카운터 자격 내부의 해당 정보 필드의 클리어를 통해 디폴트 상태로 천이할 수 있게 한다. 그러나, 지정된 자격에 의해 관리되는 활동을 갖는 프로세스가 지정된 자격의 허가를 증가시키는 것이 허용되지 않는다는 일반적인 원리에 따르면, 처리회로가 디폴트 상태로부터 실행 상태로 천이를 표시하게 자격 상태 정보의 값을 변경하는 것이 가능하지 않을 것이다.
또 다른 실시예에서, 자격 상태 정보는, 일반적인 허가 필드와 분리된 새로운 종류의 필드로서 처리되며, 이 자격을 사용하고 있는 프로세스에 의해 변경되지 않도록 구성된다.
이하 특별한 실시예들에 대해서 도면들을 참조하여 설명하겠다.
도 1은 명령들을 처리하기 위한 처리 파이프라인(4)을 구비하는 데이터 처리장치(20)의 일례를 개략적으로 도시한 것이다. 본 예에서, 처리 파이프라인(4)은, 페치(fetch) 스테이지(6), 디코드 스테이지(8), 발행(issue) 스테이지(10), 실행 스테이지(12) 및 라이트 백(write back) 스테이지(14)로 이루어진 다수의 파이프라인 스테이지들을 구비하지만, 그 밖의 타입들이나 조합들의 스테이지들이 제공될 수도 있다는 것을 알 것이다. 예컨대, 레지스터 리네이밍을 수행하는 리네임(rename) 스테이지는 일부 실시예들에 구비될 수 있었다. 처리되는 명령들은, 스테이지마다 이동하고, 명령이 하나의 스테이지에서 진행중인 동안 또 하나의 명령은 상기 파이프라인(4)의 상이한 스테이지에서 진행중이어도 된다.
페치 스테이지(6)는, 레벨 1(L1) 명령 캐시(20)로부터 명령들을 페치한다. 페치 스테이지(6)는, 통상, 연속적인 명령 어드레스들로부터 순차로 명령들을 페치할 수도 있다. 그렇지만, 상기 페치 스테이지는 분기 명령들의 결과를 예측하는 분기 예측기(22)도 가질 수도 있고, 상기 페치 스테이지(6)는, 분기가 취해졌다고 예측되면 (비순차) 분기 타겟 어드레스로부터, 또는, 분기가 취해지지 않았다고 예측되면 다음 순차의 어드레스로부터, 명령들을 페치할 수 있다. 분기 예측기(22)는, 특정한 분기들이 취해질 가능성이 높을지 높지 않을지를 예측하기 위한 정보를 기억하는 하나 이상의 분기 이력표들을 포함할 수도 있다. 예컨대, 상기 분기 이력표들은, 이전에 실행된 분기들의 실제 결과들을 추적하거나, 분기들을 위해 이루어진 예측에 대한 신뢰를 표현하는, 카운터들을 구비할 수도 있다. 또한, 분기 예측기(22)는, 분기 명령들의 이전의 타겟 어드레스들이 동일한 분기 명령들의 이후의 인카운터들에 관해 예측될 수 있도록, 그 타겟 어드레스들을 캐싱하기 위한 분기 타겟 어드레스 캐시(BTAC)(24)도 구비할 수도 있다.
페치된 명령들은, 그 명령들을 디코딩하여 디코딩된 명령들을 발생하는 디코드 스테이지(8)에 넘겨진다. 디코딩된 명령들은, 실행 스테이지(12)를 제어하여 적절한 처리 동작들을 실행하기 위한 제어정보를 포함하여도 된다. 상기 캐시(20)로부터 페치된 일부 보다 복잡한 명령들에 대해서, 디코드 스테이지(8)는, 그 명령들을, 마이크로 동작들(μops 또는 uops)로서 공지되어도 되는 다수의 디코딩된 명령들에 매핑하여도 된다. 따라서, L1 명령 캐시(20)로부터 페치된 명령들과 상기 파이프라인의 나중의 스테이지들에 의해 보여진 것과 같은 명령들과의 사이의 1대1 관계가 없을 수도 있다. 일반적으로, 본 출원에서의 "명령들"에 대한 레퍼런스들은 마이크로 동작들을 포함하는 것으로서 해석되어야 한다.
디코딩된 명령들은, 그 명령들의 실행을 위해 요구된 오퍼랜드들이 이용 가능하고 그 오퍼랜드들이 이용 가능할 때 실행하기 위한 명령들을 발행하는지를 판정하는 발행 스테이지(10)에 넘겨진다. 일부 실시예들은, 명령들을 L1 명령 캐시(20)로부터 페치하였던 프로그램 순서에 대응한 순서로 실행하기 위해 명령들을 발행하도록, 순차적 처리를 지원할 수도 있다. 그 밖의 실시예들은, 비순차적 실행을 지원할 수도 있어, 명령들은 그 프로그램 순서와 상이한 순서로 실행 스테이지(12)에 발행될 수 있다. 비순차적 처리는, 앞선 명령이 오퍼랜드들을 기다리는 동안 일시 중지되지만, 이용 가능한 오퍼랜드들을 갖는 프로그램 순서로 나중의 명령이 먼저 실행될 수 있기 때문에 성능을 향상시키는데 유용할 수 있다.
발행 스테이지(10)는 명령들을 실행 스테이지(12)에 발행하여, 실행 스테이지(12)는 그 명령들을 실행하여 각 종 데이터 처리 동작들을 실시한다. 예컨대, 상기 실행 스테이지는, 정수값들에 대한 산술 또는 논리 동작들을 실시하기 위한 산술/논리 유닛(ALU)(30), 부동소수점 형태로 표현된 값들에 대한 동작들을 실시하기 위한 부동소수점(FP) 유닛(32), 및 레벨 1(L1) 데이터 캐시(36)으로부터 레지스터(40)에 데이터 값을 로딩하는 로드 동작들이나 레지스터(40)로부터 L1 데이터 캐시(36)에 데이터 값을 기억하는 스토어 동작들을 실시하기 위한 로드/스토어 유닛(34)으로 이루어진 다수의 실행 유닛들(30, 32, 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)에 있지 않고 필요한 경우 메모리(50)로부터 페치되면 L2 캐시(44)로부터 페치될 수 있다. 임의의 공지된 기법(scheme)은 캐시 계층을 관리하는데 사용되어도 된다.
프로그램 명령들 및 데이터 값들을 참조하는데 상기 파이프라인(4)에서 사용한 어드레스들은 가상 어드레스들이어도 되지만, 적어도 메인 메모리(50)와, 선택사항으로 적어도 일부 레벨들의 상기 캐시 계층은, 물리적으로 어드레싱되어도 된다. 따라서, 변환 색인 버퍼(52)(TLB)는, 파이프라인(4)에서 사용한 가상 어드레스들을 상기 캐시나 메모리에 액세스하는데 사용된 물리 어드레스들로 변환하도록 제공되어도 된다. 예컨대, 상기 TLB(52)는, 가상 어드레스 공간의 대응한 페이지의 가상 페이지 어드레스와, 가상 페이지 어드레스가 대응한 페이지내의 가상 어드레스들을 물리 어드레스로 변환하기 위해서 매핑되어야 하는 대응한 물리 페이지 어드레스를, 각각 지정하는 다수의 엔트리들을 구비하여도 된다. 예를 들면, 상기 가상 어드레스 및 물리 페이지 어드레스는, 대응한 가상 및 물리 어드레스들의 최상위 부분에 대응하여도 되고, 이때의 나머지 최하위 부분은 가상 어드레스를 물리 어드레스에 매핑할 때 그대로 있다. 어드레스 변환 정보뿐만 아니라, 각 TLB 엔트리도 어드레스들의 특정한 페이지들이 파이프라인(4)의 특정한 모드들에서 액세스 가능한지를 나타내는 것 등의 액세스 허가를 지정하는 일부 정보도 포함할 수도 있다. 일부 실시예들에서, TLB 엔트리들은, 캐시 계층의 어느 레벨들이 판독 동작 또는 기록 동작에 응답하여 갱신되는지(예컨대, 상기 캐시가 라이트 백 또는 라이트 쓰루(through) 모드로 동작해야 하는지)를 명시하는 캐시 정책 정보나, 대응한 페이지에서 어드레스들에의 데이터 액세스들이 파이프라인(4)에서 데이터 액세스들을 발행하였던 순서와 비교하여 메모리 시스템에 의해 재배치할 수 있는지를 명시하는 정보 등의, 어드레스들의 대응한 페이지의 그 밖의 특성들도 명시할 수 있었다.
도 1은 단일의 레벨 TLB(52)를 도시하지만, TLB들의 계층은, 레벨 1(L1) TLB(52)가 최근에 액세스된 다수의 페이지들에서의 어드레스들을 변환하기 위한 TLB 엔트리들을 포함하고 레벨 2(L2) TLB가 보다 큰 수의 페이지들에 대한 엔트리들을 기억하기 위해 제공될 수도 있도록, 구성되어도 되는 것을 알 것이다. 요구된 엔트리가 L1 TLB에 있지 않을 때, 그것은 L2 TLB로부터, 또는 상기 계층에서 추가의 TLB들로부터, 페치될 수 있다. 페이지가 액세스되는 요구된 엔트리가 그 TLB들 중 어느 하나에 있지 않은 경우, 페이지 테이블 워크(walk)는, 메모리(50)에서의 페이지 테이블들에 액세스하도록 수행될 수 있다. 임의의 공지된 TLB 관리 기법은, 본 기술에서 사용될 수 있다.
또한, 일부 시스템들은, 예컨대, 제1 TLB(또는 TLB들의 계층)이 가상 어드레스들을 중간 어드레스들로 변환하는데 사용되고 나서, 하나 이상의 추가의 TLB(들)을 사용한 제2 레벨의 어드레스 변환이 그 중간 어드레스들을 캐시나 메모리에 액세스하는데 사용된 물리 어드레스들로 변환하여도 되도록, 다수의 레벨들의 어드레스 변환을 지원하여도 된다는 것을 알 것이다. 이것은, 예를 들면, 제1 레벨의 어드레스 변환이 운영체계에 의해 관리되어도 되고 제2 레벨의 어드레스 변환이 하이퍼바이저에 의해 관리되어도 되는 가상화를 지원하는데 유용할 수 있다.
도 1에 도시된 것처럼, 상기 장치(2)는, 일 세트의 제한 포인터 레지스터들(60)을 가져도 된다. 그 일 세트의 제한 포인터 레지스터들이 도 1에서 일 세트의 범용 데이터 레지스터들(40)에 대해 물리적으로 분리된 것으로서 도시되어 있지만, 일 실시예에서는 동일한 물리적 스토리지는, 범용 데이터 레지스터들과 제한 포인터 레지스터들의 양쪽을 제공하는데 사용되어도 된다.
각 제한 포인터 레지스터(60)는, 액세스되는 데이터 값의 어드레스를 결정하는데 사용되어도 되는 포인터 값(62)과, 대응한 포인터(62)를 사용할 때 허용 가능한 어드레스들의 범위를 지정하는 범위 정보(64)를 포함한다. 제한 포인터 레지스터(60)는, 포인터의 이용에 관해 하나 이상의 제한들/허가들을 명시하여도 되는 제한 정보(66)(여기서는 허가 정보라고도 함)도 포함하여도 된다. 예컨대, 상기 제한 정보(66)는, 포인터(62)를 사용하여도 되는 명령들의 타입들, 또는 포인터가 사용될 수 있는 파이프라인(4)의 모드들을, 제한하는데 사용될 수 있었다. 따라서, 상기 범위 정보(64)와 제한 정보(66)는, 사용할 포인터(62)가 허용되는 자격들을 명시하는데 고려될 수도 있다. 명시된 자격들외에서 포인터(62)를 사용하려고 시도할 때, 오류가 기동될 수 있다. 상기 범위 정보(64)는, 예를 들면, 포인터들이, 특정한 공지된 한계내에 있고, 민감하거나 안전한 정보를 포함할지도 모르는 메모리 어드레스 공간의 그 밖의 영역들에 벗어나지 않는 것을 보장하는데 유용할 수 있다. 동일한 물리적 스토리지가 범용 데이터 레지스터들과 제한 포인터 레지스터들과의 양쪽에 사용되는 실시예에 있어서, 일 실시예에서, 상기 포인터 값(62)은, 예컨대, 대응한 범용 레지스터에 사용된 것처럼 동일한 기억장소내에 기억되어도 된다.
도 2는 허용 가능한 범위를 사용하여 데이터나 명령들에의 비인증 액세스에 대해 보호하는 명령들의 타입들의 일례를 도시한 것이다. 도 2의 상부에 도시된 것처럼, 특별한 제한 포인터 레지스터 PR1은, 본 예에서 허용 가능한 범위의 하계(lower bound)를 명시하는 하계 어드레스(68)와 허용 가능한 범위의 상계(upper bound)를 명시하는 상계 어드레스(69)를 사용하여 지정되는, 주어진 포인터 값(62)과 범위 정보(64)를 포함한다. 예를 들면, 상기 하계 어드레스(68)와 상계 어드레스(69)는, 어드레스들 80000 내지 81000의 범위를 명시하도록 세트된다. 오류들은, 특정한 명령들이 상기 제한 포인터 레지스터 PR1을 참조하고 포인터(62)로부터 결정된 어드레스가 이 범위외에 있을 때, 기동될 수도 있다.
예를 들면, 도 2의 파트 A에 도시된 것처럼, 일부 시스템들에서, 오류는, 포인터 레지스터(60)에서의 포인터(62)의 값을, 범위 정보(64)에서 지정한 범위외에 있는 값으로 세트하려는 시도가 있는 경우(여기서는, 포인터가 직접 어드레스를 지정하는 것으로 한다) 기동될 수도 있다. 이것은, 그 포인터를 사용한 임의의 액세스들이 안전하게 상기 허용된 범위내에 있도록 보장될 수 있게 상기 포인터(62)가 상기 지정된 범위외의 어떠한 값도 취하는 것을 피한다. 또는, 도 2의 파트 B에 도시된 것처럼, 오류는, 해당 어드레스 상기 지정된 범위외에 있을 때 명령이 그 포인터(62)의 어드레스에 의해 특정된 장소에 액세스하려고 시도할 때 기동될 수 있다. 따라서, 그래도 상기 포인터(62)를 상기 지정된 범위외의 값으로 세트하도록 허용 가능할 수도 있지만, 포인터 어드레스(또는 그 포인터로부터 얻어진 어드레스)에서의 데이터 액세스가 시도되면, 오류는 그 어드레스가 상기 허용된 범위외에 있을 경우 기동될 수도 있다. 그 밖의 시스템들은, 도 2의 파트 A와 B에 도시된 명령의 타입들 양쪽에 응답하여 오류들을 기동할 수도 있다.
범위 정보(64)는 상이한 방식들로 세트될 수 있다. 예컨대, 보안 코드, 또는 운영체계 또는 하이퍼바이저는, 주어진 포인터를 고려한 범위를 지정하여도 된다. 예컨대, 명령 세트 아키텍처는, 주어진 포인터(62)에 대한 범위 정보(64)를 세트 또는 수정하기 위한 다수의 명령들을 포함하여도 되고, 이 명령들의 실행은 특정한 소프트웨어 또는 상기 프로세서(4)의 특정한 모드들 또는 예외 레벨들로 제한될 수 있다. 상기 범위 정보(64)를 세트 또는 수정하기 위한 임의의 공지된 기술이 사용될 수 있다.
포인터를 참조하는 특정한 명령들을 실행할 때 실행 스테이지(12)에서 사용되어도 되는 실행 제한 포인터 기억소자들(60)의 세트와 아울러, 프로그램 카운터 자격(PCC) 레지스터(80)는 레벨 1 명령 캐시(20)로부터 명령들을 페치중일 때 페치 스테이지(6)에서 유사한 기능성을 제공하는데도 사용될 수도 있다. 특히, 프로그램 카운터 포인터는 필드(82)에 기억되어도 되고, 이때의 PCC(80)는, 제한 포인터 기억소자들(60)의 세트에서 상기 포인터들의 각각에 구비된 범위 및 제한 정보와 유사한, 범위 정보(84)와 임의의 적절한 제한 정보(86)를 제공한다.
또한, 일 실시예에서, 비제한(non-bounded) 포인터들은, 범용 레지스터들(40)내에도 지정되어도 되고 메모리 액세스들을 수행할 때 사용되어도 된다. 이러한 비제한 포인터들을 사용하여 액세스될 수도 있는 메모리 어드레스들을 제한하기 위해서, 디폴트 데이터 자격(DDC) 레지스터(90)는, 상기 자격 레지스터들 중 어느 하나에 포함된 범위 및 제한 정보와 유사한, 범위 정보(92)와 임의의 제한 데이터(94)의 양쪽을 지정하도록 제공되어도 된다. 그 후, 범용 레지스터(40)에서 비제한 포인터를 참조하여 메모리 어드레스를 특정하는 메모리 액세스 명령이 실행될 때, 제한 포인터들에 관해 수행된 상기 한계 확인 동작과 유사한 한계 확인 동작은, 해당 비제한 포인터로부터 얻어진 임의의 어드레스에 근거하여서도 수행될 수 있지만, 이 경우에, DDC 레지스터(90)내에 유지된 상기 범위 및 제한 정보를 유념할 수 있다. 이러한 해결방법에서는, 예컨대 기존의 소프트웨어 라이브러리에서 일부 자격 미인식 코드를 활용하기를 바라는 자격 인식 코드가, 어떻게 범용 레지스터(40)로부터 액세스된 포인터들이 해당 자격 미인식 코드를 수행할 때 사용되는지에 관한 제약들을 배치하도록, DDC 레지스터(90)를 세트하는 것이 가능하다. 특히, 범위 정보는, 이러한 자격 미인식 코드를 실행할 때 액세스될 수 있는 어드레스 범위를 제한하는데 사용될 수 있다.
PCC 레지스터(80) 또는 DDC 레지스터(90)에서 지정된 범위 정보와 이와 관련된 제한은 다양하게 설정될 수 있다. 그러나, 일 실시예에서는, 이 정보가 현재의 자격 도메인에서 처리회로가 이용가능한 한 개 이상의 제한 포인터를 사용하여 결정되므로, 현재 자격 도메인에 대해 식별된 메모리 어드레스 범위(들) 외부에 놓이는 PCC 또는 DDC 기반의 경계 검사를 사용하여 메모리 어드레스를 액세스할 수 없다.
도 3은 개개의 데이터 블록들과 관련지어, 그 데이터 블록들이 자격(즉, 제한 포인터와 관련된 제한 정보)을 표현하는지, 통상의 데이터를 표현하는지를 특정하는데 어떻게 태그 비트를 사용하는지를 개략적으로 도시한 것이다. 특히, 메모리 어드레스 공간(110)은, 일반적으로 사이즈가 지정될 일련의 데이터 블록들(115)을 기억할 것이다. 단순히 설명을 위해서, 본 에에서는 각 데이터 블록이 128비트로 이루어진다고 한다. 각 데이터 블록(115)과 관련지어, 일례에서, 그 관련된 데이터 블록이 자격을 표현하는 것을 특정하도록 세트되고, 그 관련된 데이터 블록이 통상의 데이터를 표현하는 것을 나타내도록 클리어되므로, 자격으로서 취급될 수 없는, 태그 비트라고 하는 단일의 비트 필드인 태그 필드(120)를 제공한다. 세트 또는 클리어 상태와 관련된 실제의 값이 실시예에 따라 달라질 수 있지만, 단순히 설명으로만, 일 실시예에서는 상기 태그 비트의 값이 1이면, 그것은 관련된 데이터 블록이 자격인 것을 나타내고, 태그 비트의 값이 0이면, 그것은 관련된 데이터 블록이 통상의 데이터를 갖는 것을 나타낸다는 것을 알 것이다.
제한 포인터 레지스터들(60)의 하나(여기서는 자격 레지스터라고도 함), 이를테면 도 3에 도시된 자격 레지스터(100)에 자격을 로딩할 때, 태그 비트는 그 자격 정보와 함께 이동한다. 이에 따라, 자격이 자격 레지스터(100)에 로딩될 때, 포인터(102), 범위 정보(104) 및 제한 정보(106)(이후, 허가 정보라고 함)는 자격 레지스터에 로딩될 것이다. 추가로, 해당 자격 레지스터와 관련지어, 또는 그 자격 레지스터내의 특유의 비트 필드로서, 태그 비트(108)는, 콘텐츠가 자격을 표현하는 것을 특정하도록 세트될 것이다. 마찬가지로, 자격이 메모리에 돌아가게 기억될 때, 해당하는 태그 비트(120)는, 그 자격이 기억되는 데이터 블록과 관련지어 세트될 것이다. 이러한 해결방법에 의해, 자격과 통상의 데이터를 구별함에 따라서, 통상의 데이터가 자격으로서 사용될 수 없도록 보장하는 것이 가능하다.
전술한 것과 같이, (자격 레지스터(60)를 거쳐 직접 액세스가능한지, 또는 자격 레지스터 내부의 제한 포인터들 중에서 한 개를 거쳐 액세스가능한 메모리 어드레스 내부에 존재하는지에 상관없이) 처리회로가 이용가능한 현재 세트의 자격들은 자격 도메인을 구성한다. 따라서, 자격 도메인은, 관련된 허가/제한과 함께, 프로세서에 의해 처리되는 메모리의 이용가능한 영역들을 식별한다. 나머지 도면들을 참조하여 설명하는 것과 같이, 설명하는 실시예에서는, 장치가 자격 도메인을 변경할 수 있도록 하는 제어된 메카니즘이 제공된다.
특히, 일 실시예에서는, 전술한 포인터 값 필드(62), 범위 필드(64) 및 허가/제한 필드(들)(66) 이외에, 추가적이 필드를 제한 포인터가 구비한다. 특히, 전술한 실행 상태 또는 디폴트 상태를 식별하기 위해 세트되거나 클리어될 수 있는 자격 상태 필드가 설치된다. 자격들이 도 1을 참조하여 전술한 범용 자격 레지스터(60) 내부에 존재하지만, 이와 같은 자격 상태 정보는 사용되지 않는다. 그러나, 이와 같은 제한 포인터가 PCC레지스터(8)에 로드되면, 이와 같은 추가 필드가 참조되어 프로세서의 현재 자격 상태를 식별한다.
이것을, 피연산자로서 자격 레지스터 CN을 지정하는 분기 명령의 동작을 개략적으로 나타낸 도 4를 참조하여 예시적으로 나타낸다. 자격 레지스터 CN 내부에 기억된 자격(200)은 자격 상태 필드(210)를 포함한다. 자격이 자격 레지스터 내부에 기억되는 동안, 필드 210 내부의 정보는 사용되지 않는다. 그러나, 분기 명령이 실행되어 프로그램 카운터 자격 레지스터(80) 내부에 자격 레지스터 CN 내부에 기억된 자격을 로드하면, PCC 레지스터(80)의 결과적으로 얻어지는 갱신된 콘텐츠(215)가 자격(200) 내부에 주어진 것과 같은 값을 갖는 자격 상태(220)를 포함하게 된다. 개략적으로 더 나타낸 것과 같이, 범위 및 허가 정보가 자격 레지스터 CN으로부터 PCC 내부에 복사되며, 자격 CN 내부의 포인터 값은 새로운 PC 값을 구성한다. PCC 기억 소자(80)가 갱신되면, 처리회로의 자격 상태는 갱신된 PCC(2150의 자격 상태 비트에 의해 결정된다.
일 실시예에서, 자격 상태 필드는, 추가적인 허가 필드로 생각할 수 있으며, 다른 허가와 동일하게 조작될 수 있다. 특히, 프로세서 상에서 실행되는 프로세스는, 보통 한 개 이상의 허가 비트들을 소거함으로써, 그것이 사용하고 있는 자격의 한 개 이상의 허가를 제어할 수 있으며, 일 실시예에서는, 자격 상태 필드에 관해 동일한 처리를 행하는 것이 허용될 것이다. 따라서, 이것은 실행 상태를 나타낸 자격 상태 필드가 클리어되어 디폴트 상태를 표시할 것이다. 그러나, 자격에 관한 일반적인 실행과 일치하게, 이 프로세스는 그것의 허가를 증가시키는 것이 허용되지 않으므로, 자격 상태 필드가 클리어되지 않는 경우 자격 상태 필드를 설정하는 것이 허용되지 않기 때문에, 디폴트 상태를 나타내는 현재 값을 갖는 자격의 자격 상태 필드와 실행 상태를 관련시키는 처리를 방지할 것이다.
또 다른 실시예에서, 자격 상태 필드(210)는, 허가 필드와 별개의 새로운 종류의 필드인 것으로 생각되며, 이 자격을 사용하는 처리에 의해 수정될 수 없도록 구성되어도 된다.
도 5는, 도 4와 유사한 도면이지만, 마찬가지로 자격 레지스터 CN을 지정하는 링크를 갖는 분기 명령을 행할 때 발생하는 동작을 나타낸 것이다. 특히, 링크를 갖는 분기 명령을 실행할 때, 2개의 분리된 처리가 행해진다. 스텝 1에 나타낸 것과 같이, 현재의 PCC 콘텐츠로부터 복귀 어드레스가 생성된 후, 분기로부터 복귀할 때 나중에 사용하기 위한 복귀 어드레스 자격으로서 자격 링크 레지스터(capability link register: CLR)에 기억된다. 도시된 것과 같이, 현재의 PCC 자격(250)이 PCC 레지스터에서 판독되고 CLR에 기억된 복귀 어드레스 자격(260)을 생성하는데 사용된다. CLR은, 다양한 형태를 취할 수 있지만, 일 실시예에서는, 범용 자격 레지스터들 중 전용 레지스터, 예를 들어 C30이다. 이 처리의 일부로서, 현재의 PCC 자격(250) 내부의 자격 상태(255)가 복사되어 복귀 어드레스 자격(260) 내부의 필드 265를 형성함으로써, 적절한 시기에 분기로부터 처리가 복귀할 때, 분기를 타기 전에 존재하였던 상태로 자격 상태가 복원되도록 보장한다.
더구나, 일 실시예에서는, 현재의 범위 및 허가 정보도 PCC로부터 복귀 어드레스 자격 내부에 복사되고, 복귀 어드레스 자격 내부에 복귀 어드레스를 발생하기 위해, 함수(270)로 나타낸 것과 같이, 현재의 PC 값이 명령 사이즈만큼 증분된다.
그후, 스텝 ii에 나타낸 것과 같이, 지정된 소스 레지스터 CN 내부의 자격이 PCC 기억 소자(80) 내부로 복사됨으로써, 새로운 프로그램 카운터 자격(290)이 생성될 때, 자격 280이 PCC의 자격 상태 필드(295) 내부에 복사된다. 그 결과, 처리회로의 자격 상태가 CSA로부터 CSB로 변경된다.
도 6은 복귀 명령을 실행시 행해지는 처리를 나타낸 것이다. 복귀 명령의 실행시에, CLR의 현재 콘텐츠가 PCC 기억 소자(8) 내부로 복사된다. 그 결과, 그것의 자격 상태(305)를 포함하는 복귀 어드레스 자격(300)이 PCC 기억 소자 내부로 복사되어. CLR의 자격 상태 필드(305)에 있는 값과 일치하는 값을 갖는 관련된 자격 상태 필드(315)를 갖는 새로운 프로그램 카운터 자격(310)을 형성한다. 그 결과, 처리회로의 자격 상태는, 원래의 링크를 갖는 분기 명령이 실행되기 전에 존재하였던 것과 동일한 자격 상태인 갱신된 PCC의 자격 상태에 의해 결정된다.
전술한 실시예를 통해, 프로그램 카운터 자격이 특정한 시점에서 갱신될 수 있으므로, 자격 상태로서 실행 상태를 지정한다. 실행 상태에 있을 때, 처리회로는 디폴트 상태에 있을 때보다 덜 제한되게 동작하여, 자격 도메인의 수정을 허용할 수 있다. 이와 같은 제약의 완화는 다양하게 구현될 수 있다. 예를 들어, 일 실시예에서는, 프로세서가 실행 상태에서 동작하는 동안 자격에 의해 제한되지 않도록 구성될 수 있다. 그 결과, 자격이 참조될 때마다, 관련된 범위 및 제한 정보가 무시됨으로써, 프로세서가 디폴트 상태에 있는 동안 준비되는 자격 도메인과 관련된 메모리의 영역 밖에 있는 메모리의 영역들을 액세스할 수 있다. 이것은, 예를 들어, 디폴트 상태로 복귀할 때 프로세서가 이용가능하게 될 수 있는 추가적인 자격을 액세스할 수 있도록 함으로써, 수정된 자격 도메인을 제공한다.
일부 실시예에서는, 실행 상태에서 동작하는 동안 자격에 대한 참조를 완전히 제어하는 것이 부적절하게 생각되며, 그 대신에 처리회로가 실행 상태에서 동작하는 동안 한 개 이상의 자격 검사가 무효화되지만, 나머지 자격 검사는 여전히 행해지도록 구성될 수도 있다. 예를 들어, 실행 상태에 있을 때, 프로그램 카운터 자격을 사용하여 메모리에서 명령들을 페치할 때 자격 검사가 사용되지 않으므로, PCC(80)와 관련된 범위(84) 및 제한(86) 정보가 무시된다.
이에 대한 대안으로서, 또는 이에 덧붙여, DDC(90)가 무시되어, 프로세서가 비제한 포인터를 참조하여 메모리를 액세스할 때, 자격 검사가 행해지지 않는다. 그러나, 자격 레지스터들(60)에 있는 제한 포인터를 사용하여 메모리가 액세스가 되는 경우에는, 액세스의 진행을 허용하기 전에, 관련된 범위 및 허가 정보가 검사되는 경우도 있다.
또 다른 대안으로서, 도 1에 개략적으로 나타낸 것과 같이, 어떤 자격 레지스터들은 뱅크되어(banked), 프로세서가 디폴트 상태에서 동작하고 있을 때 사용되는 자격 레지스터의 버전과, 프로세서가 실행 상태에서 동작하고 있을 때 사용되는 다른 버전이 존재한다. 이것은, 디폴트 상태에 있을 때 사용된 디폴트 데이터 자격이 실행 상태에 있을 때 사용된 디폴트 데이터 자격과 다르게 할 수 있다. 특히, 실행 상태에서 사용된 디폴트 데이터 자격은, 디폴트 상태에 있을 때 사용된 디폴트 데이터 자격에 비해, 액세스가능한 어드레스들의 범위를 확장하고, 및/또는 허가를 증가시키도록 구성된다. 또 다른 예로서, 자격 스택 포인터(capability stack pointer: CSP)가 식별되고 디폴트 상태에서 사용된 관련된 레지스터(96) 내부에 기억된다. 그러나, 그 대신에 실행 상태에서 동작할 때 자격 스택 포인터를 위해 참조되는 뱅크드 버전(97)이 설치될 수도 있다. 따라서, 프로세서가 디폴트 상태에서 동작하고 있는지 또는 실행 상태에서 동작하고 있는지에 따라, 그것의 스택 포인터와 관련된 다양한 자격을 가지며, 프로세서는 현재의 자격 상태에 따라 다양한 뱅크드 레지스터들 사이에서 전환한다.
자격 레지스터들의 뱅킹을 DDC 레지스터 및 CSP 레지스터를 참조하여 예시적으로 나타내었지만, 또 다른 실시예에서는 필요에 따라 추가적이거나 다른 자격 레지스터들이 뱅크될 수 있다는 것을 알 수 있다.
특정한 자격 레지스터들을 뱅킹하는 것에 대한 대안으로서, 그 대신에, 실행 상태에서 이용가능한 동등한 자격이 어떤 디폴트 자격, 예를 들어, 최대 자격으로 설정되도록 구성되어도 된다. 따라서, DDC 예를 고려하면, DDC 레지스터(90)가 디폴트 상태에 있는 동안 사용되지만, 실행 상태에서는, 소정의 DDC가 프로세서에 의해 사용하기 위해 효율적으로 하드 코드(hard code)된다.
뱅크드 자격 레지스터를 사용하는 것에 대한 대안으로서, PCC에 있는 자격 상태 정보로 표시되는 자격 상태가 변경될 때, 보존 및 복원형 기능이 행해질 수 있다. 특히, 자격 상태가 소스 상태로부터 목적지 상태로 변경될 때, 소스 상태에 속하는 한 개 이상의 자격 기억 소자들에 있는 자격들이 특정한 제어 레지스터들에 보존되어, 이들 자격들이 나중에 복원될 수 있도록 하고, 일단 보존되면, 그후 목적지 상태와 관련된 관련 자격들이 해당 자격 기억 소자들 내부에 기록된다. 마찬가지로, 이와 같은 처리는, 특정한 기능을 행할 때 프로세서에 대해 더 관대한 허가 및/또는 범위 액세스를 제공함으로써, 프로세서가 실행 상태에서 동작하고 있을 때 자격 제한이 완화될 수 있도록 할 수 있다.
도 7 및 도 8의 이하의 설명을 위해, 도 4, 도 5 및 도 6의 전술한 실시예 전체가 PCC 기억 소자(80)의 콘텐츠가 새로운 프로그램 카운터 자격을 식별하도록 갱신되게 하기 때문에, 이들 실시예 전체는 총칭하여 분기 명령으로 부른다. 도 7을 참조하여 설명하는 것과 같이, 이와 같은 분기 명령과 마주쳤을 때 일 실시예에서 특정한 검사가 행해질 수 있다. 특히, 스텝 350에서 분기 명령이 PCC를 갱신하기 위해 사용되고 있는 것으로 식별되면, 스텝 355에서, 현재의 PCC에 있는 자격 상태 비트가 현재의 콘텐츠를 겹쳐쓰게 되는 새로운 PCC와 같은지 아닌지 판정된다. 같은 경우에는, 스텝 375로 처리가 진행하여, PCC 레지스터(80)가 새로운 PCC로 갱신된다.
그러나, 스텝 355에서, 자격 상태 비트들이 다른 것으로 판정된 경우에는, 스텝 360에서, 새로운 PCC에 대한 자격 상태 비트가 디폴트 상태를 나타내는지 판정한다. 디폴트 상태를 나타내지 않는 경우에, 이것은, 갱신이 프로세서에게 디폴트 상태로부터 실행 상태로 이동하게 한다는 것을 나타내며, 일 실시예에서, 이것은 추가적인 검사를 필요로 하지 않는 허용된 천이이다. 따라서, 스텝 375로 처리가 진행하여, PCC 콘텐츠가 갱신된다.
그러나, 새로운 PCC에 대한 자격 비트가 디폴트 상태를 나타내는 경우에, 이것은 실행 상태로부터 디폴트 상태로의 천이를 나타내며, 일 실시예에서, 이것은 특정한 종류의 분기 명령을 사용하여 이 천이를 행하는 경우에만 허용된다. 따라서, 스텝 365에서, 분기 명령이 허용된 종류를 갖는지 판정한다. 특정한 일 실시예에서, 3가지의 허용된 종류의 분기 명령은 제한된 명령으로의 분기(BRR), 제한된 명령으로의 링크 레지스터를 갖는 분기(BLRR)와, 제한된 명령으로의 복귀(RETR)이다. 분기 명령이 이들 허용된 종류들 중에서 한 개인 경우에는, 스텝 375로 처리가 진행하는 반면에, 그렇지 않은 경우에는, 스텝 370으로 처리가 진행하여, 소정의 동작이 취해진다.
소정의 동작은 다양한 형태를 취할 수 있지만, 도 8a 및 도 8b에는 2가지의 예시적인 옵션을 도시한다. 도 8a에 도시된 것과 같이, 한가지 옵션은, 분기 명령의 실행을 완료하지 않고 스텝 400에서 예외를 발생함으로써, 분기가 PCC 레지스터 콘텐츠를 갱신하지 않는 것이다. 그 대신에, 소프트웨어 예외 처리기가 이 상황을 해소하기 위해 실행되는 적절한 에러 처리 루틴으로 제어를 전달하게 된다. 예외 처리 루틴이 이 상황을 해소할 수 있는 다양한 방법이 존재한다. 예를 들어, 일 실시예에서는, PCC 콘텐트가 갱신되도록 허용하지만, 자격 상태 비트가 실행 상태를 계속 식별하도록 강요되게 하는 것이 허용된다. 이와 달리, 프로세서가 제한 상태로 복귀하면 프로세서에게 어떤 실행 특권도 남기지 않도록 보장하기 위해 특정한 추가적인 단계를 행할 수 있으며, 이에 따라 프로세서가 제한 상태로 복귀하면, 프로세서가 수정된 자격 도메인에 의해 완전히 제약되게 하도록 보장할 수 있다.
도 8a에 도시된 처리의 대안으로서, 도 8n에 도시된 처리가 그 대신에 행해질 수 있는데, 이것을 사실상 2개의 별개의 부분을 갖는다. 먼저, 스텝 410에서, 허용된 종류가 아닌 분기 명령이 프로세서를 실행 상태로부터 디폴트 상태로 천이하게 PCC의 갱신을 시도한 것을 식별하기 위해 제어 레지스터에 플래그가 설정된다. 그후, 스텝 415에서, 분기 명령의 실행이 완료하도록 허용되어, 새로운 PCC가 PCC 레지스터(80)에 기억되게 하고, 디폴트 상태를 식별한다.
그후, 도 8b의 부분 ii로 나타낸 것과 같이, 스텝 420에서 언제 다음 명령이 실행될 것인지 판정하고, 다음 명령이 실행될 것으로 판정되자마다. 스텝 425에서 플래그가 여전히 설정되는지 판정하고, 설정되는 경우에는 스텝 430에서 예외를 발생하고, 이 시점에서 플래그가 클리어된다. 그후, 예외 처리 루틴이 기동되는데. 이것은 도 8a를 참조하여 전술한 처리를 행할 수 있다. 스텝 425에서 플래그가 설정되지 않은 것으로 판정되면, 이 명령은 스텝 435에서 실행되는 것이 허용된다.
도 8b에 도시된 처리의 결과로써, 예외가 유발되기 전에, 플래그가 설정되고 분기 명령이 완료된 후 특정한 이벤트가 발생하는 것이 가능하다. 예를 들어, 플래그 상태와 PCC 콘텐츠를 보존한 후 플래그를 클리어하고 다른 값을 PCC 내부에 로드하는 더 높은 우선도의 예외/인터럽트가 발생할 수도 있다. 그후, 더 높은 우선도의 예외 루틴이 실행되어 필요한 기능을 행할 수 있으며, 이 예외로부터 복귀시에 이전의 PCC 콘텐츠가 PCC 레지스터 내부에 복원되고, 플래그가 설정 상태로 복원된다. 이 시점에서, 스텝 420에서 다음 명령이 식별되자마자, 플래그가 설정되는지 판정하고, 플래그 설정 상태를 처리하기 위해 스텝 439에서 예외가 발생된다.
도 9는 사용할 수도 있는 가상머신 구현을 도시한 것이다. 상술한 실시예들은 관련된 기술들을 지원하는 특정한 처리 하드웨어를 동작시키는 장치 및 방법들의 관점에서 본 발명을 구현하지만, 하드웨어 디바이스들의 소위 가상 머신 구현을 제공하는 것도 가능하다. 이들 가상 머신 구현들은, 가상 머신 프로그램(510)을 지원하는 호스트 운영체계(520)를 동작시키는 호스트 프로세서(530)상에서 동작한다. 전형적으로, 아주 강력한 프로세서들은 합리적 속도로 실행하는 가상 머신 구현을 제공하는데 필요하지만, 이러한 해결방법은, 특정한 상황에서, 이를테면, 호환성 또는 재사용 목적을 위해 또 하나의 프로세서 고유의 코드를 실행하기를 바라는 경우에 정당화될 수도 있다. 가상 머신 프로그램(510)은, (비일시적 매체일 수도 있는) 컴퓨터 판독 가능한 기억매체에 기억되어도 되고, 이 가상 머신 프로그램(510)에 의해 모형이 만들어지는 상기 디바이스인 실제의 하드웨어에 의해 제공될 애플리케이션 프로그램 인터페이스와 같은 애플리케이션 프로그램(500)에 대한 애플리케이션 프로그램 인터페이스(명령 실행 환경)를 제공한다. 자격 도메인을 관리하는 전술한 기술은 가상 머신 환경 내에서 구현되어도 된다. 예를 들어, 가상 머신에서 실행되거나 가상 머신을 제어하는 소프트웨어는 이와 같은 특징을 구현하는 하드웨어를 이용할 수도 있다.
전술한 실시예로부터, 이들 설명한 실시예들은, 각각의 예외 레벨이 다른 소프트웨어 실행 특권을 갖는 복수의 예외 레벨들에 의해 제공되는 것과 수직인 2개의 레벨의 특권을 제공하는 것을 알 수 있다. 특히, 예외 레벨 내에서, 프로세서가 디폴트 상태 또는 실행 상태에 놓일 수 있으며, 실행 상태에 있을 때에는 처리회로가 디폴트 상태에 있을 때보다 덜 제한되게 동작할 수 있으며, 디폴트 상태에서는 프로세서가 현재의 자격 도메인에 의해 제한된다. 이것은 필요한 경우에 자격 도메인이 변경될 수 있도록 하는 메카니즘을 제공한다.
전술한 실시예에 따르면, 현재의 자격 상태가 프로그램 카운터 자격 내에 제공된 정보 내에서 인코드되므로, 분기 메카니즘을 이용하여 새로운 자격을 프로그램 카운터 자격 레지스터 내부에 설치함으로써, 자격 상태를 잠재적으로 변경할 수 있다. 이것은 처리회로에게 자격 도메인에 대해 변경할 수 있는 능력이 선택적으로 제공되게 하는 간단하고도 효율적인 메카니즘을 제공한다.
본 발명에서, 단어 "하도록 구성된"은 장치의 구성요소가 정의된 동작을 행할 수 있는 구성을 갖는다는 것을 의미하기 위해 사용된다. 이와 관련하여, "구성"은 하드웨어 또는 소프트웨어의 배치 또는 상호접속 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 갖거나, 프로세서 또는 기타의 처리장치가 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은 이 장치의 구성요소가 정의된 동작을 제공하기 위해 어떤 식으로 변경될 필요가 있는 것을 시사하는 것은 아니다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.

Claims (19)

  1. 장치로서,
    명령들을 실행하는 처리회로를 구비하고, 상기 처리회로는, 디폴트 상태에 있을 때, 상기 명령들을 실행할 때 상기 처리회로에 의해 행해지는 동작을 제한하는데 사용되는 자격들을 포함하는 자격 도메인에서 동작하도록 구성되고,
    상기 장치는, 프로그램 카운터 값을 결정하기 위해 상기 처리회로에 의해 사용되는 프로그램 카운터 자격을 기억하는 프로그램 카운터 자격 기억 소자 - 상기 프로그램 카운터 자격은 프로그램 카운터 값을 기억하는 프로그램 카운터 필드와 분리된 자격 상태 필드가 설치되고, 상기 자격 상태 필드는 상기 처리회로에 대한 자격 상태를 식별하는 값을 갖는다 - 를 더 구비하고,
    상기 처리회로는, 자격 상태가 상기 디폴트 상태를 나타내는 것에 응답하여, 상기 자격 도메인에서 동작하도록 구성되고 - 상기 처리회로가 상기 디폴드 상태에서 동작하는 경우, 상기 자격 도메인은 상기 처리회로에 의해 수정될 수 없다 - ,
    상기 처리회로는, 자격 상태가 실행 상태를 나타내는 것에 응답하여, 상기 디폴트 상태에 있을 때보다 덜 제한되게 동작함으로써, 상기 자격 도메인의 수정을 허용하도록 구성되고,
    상기 자격들 각각은 메모리 어드레스의 허용가능한 범위를 식별하는 장치.
  2. 제 1항에 있어서,
    상기 처리회로는, 식별된 자격을 상기 프로그램 카운터 자격 기억 소자 내부로 이동하여 새로운 프로그램 카운터 자격을 형성하기 위해, 자격을 식별하는 분기 명령을 실행하도록 구성되고, 그후 처리회로는 새로운 프로그램 카운터 자격에 의해 식별된 자격 상태에서 동작하는 장치.
  3. 제 2항에 있어서,
    상기 분기 명령은 링크를 갖는 분기 명령이고,
    상기 링크를 갖는 분기 명령의 실행 전에 상기 프로그램 카운터 자격 기억 소자에 기억된 프로그램 카운터 자격은 오래된 프로그램 카운터 자격을 형성하고,
    상기 처리회로는 상기 오래된 프로그램 카운터 자격을 사용하여 복귀 어드레스 자격 기억 소자에 기억하기 위한 복귀 어드레스 자격을 발생하고, 상기 복귀 어드레스 자격은 상기 오래된 프로그램 카운터 자격에 의해 식별된 자격 상태를 유지하는 장치.
  4. 제 3항에 있어서,
    상기 처리회로는 복귀 명령을 실행하여 상기 복귀 어드레스 자격을 상기 프로그램 카운터 자격 기억 소자 내부에 기록하여 복귀 프로그램 카운터 자격을 형성하도록 구성되고, 그후 상기 처리회로는 상기 복귀 프로그램 카운터 자격에 의해 식별된 자격 상태에서 동작하는 장치.
  5. 제 1항 내지 제 4항 중 어느 한 항에 있어서,
    상기 처리회로는, 자격 상태가 상기 실행 상태를 나타낼 때에는, 상기 실행 상태에서 동작하는 동안 상기 처리회로가 자격들에 의해 제한되지 않도록 구성함으로써, 상기 디폴트 상태에 있을 때보다 덜 제한되게 동작하도록 구성된 장치.
  6. 제 1항 내지 제 4항 중 어느 한 항에 있어서,
    상기 처리회로는, 자격 상태가 상기 실행 상태를 나타낼 때에는, 상기 처리회로가 상기 실행 상태에서 동작하고 있는 동안 적어도 한 개의 자격 검사를 무효화함으로써, 상기 디폴트 상태에 있을 때보다 덜 제한되게 동작하도록 구성된 장치.
  7. 제 6항에 있어서,
    무효화되는 상기 적어도 한 개의 자격 검사는,
    프로그램 카운터 값을 사용하여 메모리에서 페치할 명령의 어드레스를 식별할 때 프로그램 카운터 자격을 참조하여 행해지는 자격 검사와,
    비제한 포인터를 사용하여 메모리 내부의 액세스할 데이터 블록의 어드레스를 식별할 때 디폴트 데이터 자격을 참조하여 행해지는 자격 검사 중에서 적어도 한 개를 포함하는 장치.
  8. 제 1항 내지 제 4항 중 어느 한 항에 있어서,
    자격들을 기억하는 뱅크드(banked) 자격 기억 소자들의 한 개 이상의 세트들을 더 포함하고, 각각의 세트의 뱅크드 자격 기억 소자들은, 상기 디폴트 상태에서 동작할 때 상기 처리회로에 의해 행해진 동작을 제한하는데 사용되는 자격을 기억하는 제1 자격 기억 소자와, 상기 실행 상태에서 동작할 때 상기 처리회로에 의해 행해진 동작을 제한하는데 사용되는 자격을 기억하는 제2 자격 기억 소자를 포함하고,
    각각의 세트의 뱅크드 자격 기억 소자들의 상기 제1 및 제 2 자격 기억 소자들에서 식별된 자격들은, 자격 상태가 상기 실행 상태를 나타낼 때, 상기 처리회로가 상기 디폴트 상태에 있을 때보다 덜 제한되게 동작하도록 구성된 장치.
  9. 제 1항 내지 제 4항 중 어느 한 항에 있어서,
    상기 처리회로에 의해 행해진 동작을 제한하는데 사용된 자격들을 기억하는 한 개 이상의 자격 기억 소자들을 더 구비하고,
    상기 프로그램 카운터 자격의 갱신이 자격 상태를 소스 상태로부터 목적지 상태로 변경하게 할 때, 상기 소스 상태에 속하는 상기 한 개 이상의 자격 기억 소자들 내부의 자격들이 보존되어 이들 자격이 나중에 복원되도록 허용하고, 상기 목적지 상태와 연관된 관련된 자격들이 상기 한 개 이상의 자격 기억 소자들 내부에 기록되고,
    자격 상태가 상기 실행 상태로 변경되면, 상기 처리회로가 상기 디폴트 상태에 있을 때보다 덜 제한되게 동작하도록 상기 한 개 이상의 자격 기억 소자들 내부에 기록된 자격들이 구성되는 장치.
  10. 제 2항 내지 제 4항 중 어느 한 항에 있어서,
    자격 상태를 상기 실행 상태로부터 상기 디폴트 상태로 변경하게 하는 자격을 상기 분기 명령이 식별할 때, 상기 처리회로는, 상기 분기 명령에 의해 식별된 자격을 사용하여 갱신된 상기 프로그램 카운터 자격의 사용이 허용되는지 여부를 판정하기 위한 검사 동작을 행하도록 구성된 장치.
  11. 제 10항에 있어서,
    상기 검사 동작은, 상기 분기 명령이, 자격 상태를 상기 실행 상태로부터 상기 디폴트 상태로 변경하게 하도록 상기 프로그램 카운터 자격 기억 소자 내부에 기억된 자격을 갱신하는 것이 허용되는 종류의 분기 명령인지 아닌지 판정하는 것을 포함하는 장치.
  12. 제 10항에 있어서,
    상기 검사 동작에 대한 장애 상태를 판정시, 상기 처리회로는 소정의 동작을 행하도록 구성된 장치.
  13. 제 12항에 있어서,
    상기 소정의 동작은,
    상기 분기 명령의 실행시 예외를 발생하는 것과,
    플래그를 설정하고 상기 분기 명령의 실행을 허용하여 상기 프로그램 카운터 자격을 갱신하는 것 중에서 한가지를 포함하고, 상기 플래그의 설정은 다음 명령이 실행될 때 예외가 발생되게 하는 장치.
  14. 제 1항 내지 제 4항 중 어느 한 항에 있어서,
    성기 실행 상태에서 동작할 때, 상기 처리회로는, 상기 프로그램 카운터 자격 기억 소자 내부에 기억된 프로그램 카운터 자격을 수정하여 자격 상태를 상기 디폴트 상태로 변경하는 것이 허용되는 장치.
  15. 제 1항 내지 제 4항 중 어느 한 항에 있어서,
    상기 자격들 중에서 한 개 이상은 제한 포인터들을 포함하는 장치.
  16. 명령들을 실행하고, 디폴트 상태에 있을 때, 상기 명령들을 실행할 때 처리회로에 의해 행해지는 동작을 제한하는데 사용되는 자격들을 포함하는 자격 도메인에서 동작하도록 구성된 상기 처리회로를 갖는 장치 내부의 상기 자격 도메인을 관리하는 방법으로서,
    프로그램 카운터 값을 결정하기 위해 상기 처리회로에 의해 사용되는 프로그램 카운터 자격을 프로그램 카운터 자격 기억 소자 내부에 기억하는 단계 - 상기 프로그램 카운터 자격은 프로그램 카운터 값을 기억하는 프로그램 카운터 필드와 분리된 자격 상태 필드가 설치되고, 상기 자격 상태 필드는 상기 처리회로에 대한 자격 상태를 식별하는 값을 갖는다 - 와,
    자격 상태가 상기 디폴트 상태를 나타내는 것에 응답하여, 상기 처리회로를 상기 자격 도메인에서 동작하는 단계 - 상기 디폴드 상태에서 동작하는 경우, 상기 자격 도메인은 상기 처리회로에 의해 수정될 수 없다 - 와,
    자격 상태가 실행 상태를 나타내는 것에 응답하여, 상기 디폴트 상태에 있을 때보다 덜 제한되게 상기 처리회로를 동작함으로써, 상기 자격 도메인의 수정을 허용하는 단계를 포함하고,
    상기 자격들 각각은 메모리 어드레스의 허용가능한 범위를 식별하는 자격 도메인의 관리방법.
  17. 장치로서,
    명령들을 실행하는 처리수단을 구비하고, 상기 처리수단은, 디폴트 상태에 있을 때, 상기 명령들을 실행할 때 상기 처리수단에 의해 행해지는 동작을 제한하는데 사용되는 자격들을 포함하는 자격 도메인에서 동작하고,
    상기 장치는, 프로그램 카운터 값을 결정하기 위해 상기 처리수단에 의해 사용되는 프로그램 카운터 자격을 기억하는 프로그램 카운터 자격 기억 소자 수단 - 상기 프로그램 카운터 자격은 프로그램 카운터 값을 기억하는 프로그램 카운터 필드와 분리된 자격 상태 필드가 설치되고, 상기 자격 상태 필드는 상기 처리수단에 대한 자격 상태를 식별하는 값을 갖는다 - 을 더 구비하고,
    상기 처리수단은, 자격 상태가 상기 디폴트 상태를 나타내는 것에 응답하여, 상기 자격 도메인에서 동작하고 - 상기 처리수단이 상기 디폴드 상태에서 동작하는 경우, 상기 자격 도메인은 상기 처리수단에 의해 수정될 수 없다 - ,
    상기 처리수단은, 자격 상태가 실행 상태를 나타내는 것에 응답하여, 상기 디폴트 상태에 있을 때보다 덜 제한되게 동작함으로써, 상기 자격 도메인의 수정을 허용하고,
    상기 자격들 각각은 메모리 어드레스의 허용가능한 범위를 식별하는 장치.
  18. 호스트 데이터 처리장치를 제어하여 청구항 1 내지 4 중 어느 한 항에 기재된 장치에 대응하는 명령 실행 환경을 제공하는 프로그램 명령을 포함하는, 컴퓨터 판독가능한 기억매체에 기억된, 가상 머신 컴퓨터 프로그램.
  19. 삭제
KR1020197036479A 2017-05-25 2018-04-27 자격 도메인을 관리하는 장치 및 방법 KR102528701B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB201708395A GB2563010B (en) 2017-05-25 2017-05-25 An apparatus and method for managing a capability domain
GB1708395.7 2017-05-25
PCT/GB2018/051114 WO2018215733A1 (en) 2017-05-25 2018-04-27 An apparatus and method for managing a capability domain

Publications (2)

Publication Number Publication Date
KR20200010308A KR20200010308A (ko) 2020-01-30
KR102528701B1 true KR102528701B1 (ko) 2023-05-04

Family

ID=59270818

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197036479A KR102528701B1 (ko) 2017-05-25 2018-04-27 자격 도메인을 관리하는 장치 및 방법

Country Status (9)

Country Link
US (1) US11347508B2 (ko)
EP (1) EP3631620A1 (ko)
JP (1) JP7280196B2 (ko)
KR (1) KR102528701B1 (ko)
CN (1) CN110622133B (ko)
GB (1) GB2563010B (ko)
IL (1) IL270500B2 (ko)
TW (1) TWI770172B (ko)
WO (1) WO2018215733A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2563580B (en) * 2017-06-15 2019-09-25 Advanced Risc Mach Ltd An apparatus and method for controlling a change in instruction set
GB2564130B (en) * 2017-07-04 2020-10-07 Advanced Risc Mach Ltd An apparatus and method for controlling execution of instructions
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction
KR102221593B1 (ko) * 2020-10-23 2021-03-02 주식회사 오파스넷 단말의 설치 환경 유지를 위한 시스템
EP4092556A1 (en) * 2021-05-20 2022-11-23 Nordic Semiconductor ASA Bus decoder

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013250980A (ja) * 2012-05-31 2013-12-12 Freescale Semiconductor Inc プロセッサ資源および実行保護の方法および装置
US20150006855A1 (en) * 2013-06-28 2015-01-01 International Business Machines Corporation Predictive fetching and decoding for selected instructions

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845331A (en) * 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US7370210B2 (en) * 2002-11-18 2008-05-06 Arm Limited Apparatus and method for managing processor configuration data
GB2448151B (en) 2007-04-03 2011-05-04 Advanced Risc Mach Ltd Memory domain based security control within data processing systems
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
US7979685B1 (en) * 2007-11-27 2011-07-12 Oracle America, Inc. Multiple instruction execution mode resource-constrained device
US8850573B1 (en) * 2010-04-14 2014-09-30 Google Inc. Computing device with untrusted user execution mode
US9116711B2 (en) * 2012-02-08 2015-08-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
GB2541714B (en) * 2015-08-27 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour
GB2544315B (en) 2015-11-12 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers
US10579377B2 (en) * 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013250980A (ja) * 2012-05-31 2013-12-12 Freescale Semiconductor Inc プロセッサ資源および実行保護の方法および装置
US20150006855A1 (en) * 2013-06-28 2015-01-01 International Business Machines Corporation Predictive fetching and decoding for selected instructions

Also Published As

Publication number Publication date
US11347508B2 (en) 2022-05-31
TW201901422A (zh) 2019-01-01
KR20200010308A (ko) 2020-01-30
CN110622133A (zh) 2019-12-27
IL270500B2 (en) 2024-03-01
CN110622133B (zh) 2024-06-07
GB2563010A (en) 2018-12-05
WO2018215733A1 (en) 2018-11-29
IL270500A (ko) 2020-01-30
EP3631620A1 (en) 2020-04-08
TWI770172B (zh) 2022-07-11
JP7280196B2 (ja) 2023-05-23
GB2563010B (en) 2019-12-25
GB201708395D0 (en) 2017-07-12
US20200050454A1 (en) 2020-02-13
JP2020521225A (ja) 2020-07-16
IL270500B1 (en) 2023-11-01

Similar Documents

Publication Publication Date Title
CN108292272B (zh) 用于管理有界指针的装置和方法
KR102528701B1 (ko) 자격 도메인을 관리하는 장치 및 방법
CN110574009B (zh) 用于管理对能力的使用的设备和方法
KR20180136976A (ko) 자격 메타데이터에 대해 연산을 행하는 장치 및 방법
KR102533823B1 (ko) 자격과 관련된 허가들을 해석하는 장치 및 방법
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法
CN116368465A (zh) 用于使用能力约束对存储器的访问的技术
JP7369720B2 (ja) アクションをトリガするための装置及び方法

Legal Events

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