KR102586257B1 - 명령들의 실행을 제어하는 장치 및 방법 - Google Patents

명령들의 실행을 제어하는 장치 및 방법 Download PDF

Info

Publication number
KR102586257B1
KR102586257B1 KR1020207002159A KR20207002159A KR102586257B1 KR 102586257 B1 KR102586257 B1 KR 102586257B1 KR 1020207002159 A KR1020207002159 A KR 1020207002159A KR 20207002159 A KR20207002159 A KR 20207002159A KR 102586257 B1 KR102586257 B1 KR 102586257B1
Authority
KR
South Korea
Prior art keywords
entitlement
qualification
instruction
information
integer
Prior art date
Application number
KR1020207002159A
Other languages
English (en)
Other versions
KR20200021516A (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 KR20200021516A publication Critical patent/KR20200021516A/ko
Application granted granted Critical
Publication of KR102586257B1 publication Critical patent/KR102586257B1/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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • 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/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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
    • 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/30105Register structure
    • 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/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register

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 Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

특정한 명령들의 실행을 제어하는 장치 및 방법을 제공한다. 이 장치는, 명령들의 시퀀스를 실행하는 처리 회로소자와, 처리 회로소자에 의해 액세스하기 위한 정수값을 기억하는 정수 기억소자와, 처리 회로소자에 의해 액세스하기 위한 자격을 기억하는 자격 기억소자를 갖는다. 그 후, 자격 사용 스토리지는, 자격 사용 정보를 기억하는데 사용된다. 상기 처리 회로소자는, 명령들의 시퀀스에서 적어도 하나의 명령의 실행에 응답하여, 자격 사용 정보에 따라, 목적지 기억소자에 기억되는 결과를, 발생하는 것이다. 특히, 자격 사용 정보가 자격 상태를 특정할 때, 그 결과를 자격으로서 발생하고 자격 기억소자를 목적지 기억소자로서 선택한다. 반대로, 자격 사용 정보가 비자격 상태를 특정할 때, 그 결과를 정수값으로서 발생하고 정수 기억소자를 목적지 기억소자로서 선택한다. 이에 따라 명령의 자격 및 비자격 발생 변형을, 명령 세트내에 별개의 명령들이 제공될 필요없이, 지정될 수 있다.

Description

명령들의 실행을 제어하는 장치 및 방법
본 기술은 명령들의 실행을 제어하는 장치 및 방법에 관한 것이다.
특정한 자격들이 주어진 프로세스를 위해 명시되고, 그 명시된 자격들 외의 동작들을 실시하려는 시도가 있는 경우 오류가 기동될 수 있는, 자격 기반 아키텍처들에 있어서 관심이 증가하고 있다. 상기 자격들은, 다양한 형태를 취할 수 있지만, 일 타입의 자격은 제한(bounded) 포인터("팻(fat) 포인터"라고도 함)이다. 제한 포인터에 대해서, 포인터 값은, 예를 들면, 액세스되는 데이터 값의 어드레스나 실행되는 명령을 특정(identify)하여도 되거나, 결정하는데 사용되어도 된다. 그렇지만, 상기 포인터 값은 그 포인터 값을 사용할 때 허용 가능 범위의 어드레스들을 나타내는 범위(range) 정보가 관련되어 있을 수도 있고, 추가로 그와 관련된 허가/제한 정보를 가질 수도 있다. 제한 포인터에 대한 상기 범위 정보와 임의의 허가/제한 정보를 자격 정보라고도 하고, 자격 기반 아키텍처내에서 (그것의 관련된 자격 정보를 포함하는) 상기와 같은 제한 포인터를 자격이라고 한다.
명령 세트 내에서, 그 명령들의 실행 결과로서 자격을 발생할 수 있는 명령들을 지정하는 것이 바람직하다. 그렇지만, 역호환성을 위해, 결과로서 자격을 발생하지만, 대신에 자격 대신에 결과로서 통상의 데이터 값을 발생하는 버전과 같은 동작을 기본적으로 특정하는 명령을 지정하는 것도 바람직할 수도 있다.
그렇지만, 명령 인코딩 공간은 공간이 귀한 경우가 많고, 이에 따라 명시되는 자격 발생 명령들과 비자격 발생 명령들을 고려하여 명령 세트 아키텍처내에 충분한 공간을 제공하는 것이 어려울 수 있다.
제1 구성 예에서 제공하는 장치는: 명령들의 시퀀스를 실행하는 처리 회로소자; 처리 회로소자에 의해 액세스하기 위한 정수값을 기억하는 정수 기억소자; 처리 회로소자에 의해 액세스하기 위한 자격을 기억하는 자격 기억소자; 및 자격 사용 정보를 기억하는 자격 사용 스토리지를 구비하고; 상기 처리 회로소자는, 명령들의 시퀀스에서 적어도 하나의 명령의 실행에 응답하여, 자격 사용 정보에 따라, 목적지 기억소자에 기억되는 결과를, 자격 사용 정보가 자격 상태를 특정할 때, 그 결과를 자격으로서 발생하고 자격 기억소자를 목적지 기억소자로서 선택함으로써; 또한 자격 사용 정보가 비자격 상태를 특정할 때, 그 결과를 정수값으로서 발생하고 정수 기억소자를 목적지 기억소자로서 선택함으로써, 발생하고, 상기 적어도 하나의 명령은 즉시값을 소스 오퍼랜드로서 지정하는 명령을 포함한다.
다른 구성 예에서 제공하는, 명령들의 시퀀스를 실행하는 처리 회로소자와, 처리 회로소자에 의해 액세스하기 위한 정수값을 기억하는 정수 기억소자와, 처리 회로소자에 의해 액세스하기 위한 자격을 기억하는 자격 기억소자와, 자격 사용 정보를 기억하는 자격 사용 스토리지를 갖는, 장치내에서 명령들의 실행을 제어하는 방법은, 명령들의 시퀀스에서 적어도 하나의 명령의 실행에 응답하여, 자격 사용 정보에 따라, 목적지 기억소자에 기억되는 결과를, 자격 사용 정보가 자격 상태를 특정할 때, 그 결과를 자격으로서 발생하고 자격 기억소자를 목적지 기억소자로서 선택함으로써; 또한 자격 사용 정보가 비자격 상태를 특정할 때, 그 결과를 정수값으로서 발생하고 정수 기억소자를 목적지 기억소자로서 선택함으로써, 발생하는 단계를 포함하고, 상기 적어도 하나의 명령은 즉시값을 소스 오퍼랜드로서 지정하는 명령을 포함한다.
또 다른 구성 예에서 제공하는 장치는, 명령들의 시퀀스를 실행하는 처리수단; 처리수단에 의해 액세스하기 위한 정수값을 기억하는 정수 기억소자 수단; 처리수단에 의해 액세스하기 위한 자격을 기억하는 자격 기억소자 수단; 및 자격 사용 정보를 기억하는 자격 사용 스토리지 수단을 구비하고; 상기 처리수단은, 명령들의 시퀀스에서 적어도 하나의 명령의 실행에 응답하여, 자격 사용 정보에 따라, 목적지 기억소자 수단에 기억되는 결과를, 자격 사용 정보가 자격 상태를 특정할 때, 그 결과를 자격으로서 발생하고 자격 기억소자 수단을 목적지 기억소자 수단으로서 선택함으로써; 또한 자격 사용 정보가 비자격 상태를 특정할 때, 그 결과를 정수값으로서 발생하고 정수 기억소자 수단을 목적지 기억소자 수단으로서 선택함으로써, 발생하고, 상기 적어도 하나의 명령은 즉시값을 소스 오퍼랜드로서 지정하는 명령을 포함한다.
아울러, 또 다른 구성 예에서는, 명령들의 시퀀스를 실행하는 처리 프로그램 로직; 처리 프로그램 로직에 의해 액세스하기 위한 정수값을 기억하는 정수 데이터 구조; 처리 프로그램 로직에 의해 액세스하기 위한 자격을 기억하는 자격 데이터 구조; 및 자격 사용 정보를 기억하는 자격 사용 데이터 구조를 포함하는 - 상기 처리 프로그램 로직은, 명령들의 시퀀스에서 적어도 하나의 명령의 실행에 응답하여, 자격 사용 정보에 따라, 목적지 데이터 구조에 기억되는 결과를, 자격 사용 정보가 자격 상태를 특정할 때, 그 결과를 자격으로서 발생하고 자격 데이터 구조를 목적지 데이터 구조로서 선택함으로써; 또한 자격 사용 정보가 비자격 상태를 특정할 때, 그 결과를 정수값으로서 발생하고 정수 데이터 구조를 목적지 데이터 구조로서 선택함으로써, 발생하기 위한 것이고, 상기 적어도 하나의 명령은 즉시값을 소스 오퍼랜드로서 지정하는 명령을 포함한다 - 명령 실행 환경을 제공하도록 호스트 데이터 처리장치를 제어하기 위한 컴퓨터 프로그램을, 제공한다.
추가의 구성 예에서는, 상술한 제1 구성 예의 장치에 대응한 명령 실행 환경을 제공하도록 호스트 데이터 처리장치를 제어하기 위한 프로그램 명령들로 이루어진 가상 머신 컴퓨터 프로그램을 제공한다.
일 실시예에서는, 상기 컴퓨터 프로그램을 기억하는 컴퓨터 판독 가능한 기억매체를 제공할 수도 있다.
본 기술은, 아래의 첨부도면들에 도시된 것과 같은 실시예들을 참조하여 예시로만 한층 더 설명하겠다:
도 1은 일 실시예에 따른 장치의 블록도이고;
도 2는 제한 포인터 기억 소자들의 세트내에서 포인터 값을 세트하거나 액세스하려는 시도가 있는 경우 오류가 기동될 수도 있는 복수의 타입들의 명령의 예들을 도시한 것으로, 여기서 해당 포인터 값은 관련된 범위 정보로 나타낸 범위외의 어드레스를 지정하는데 사용되고;
도 3은 일 실시예에 따라, 제한 포인터들과 관련지어 태그 비트의 이용을 도시한 것이고;
도 4는 일 실시예에 따라 다수의 예외 레벨들이 어떻게 제공되는지를 도시한 것이고;
도 5는 일 실시예에 따라 제공될 수도 있는 예외 레벨당 자격 구성 정보의 일 형태를 도시한 것이고;
도 6은 일 실시예에 따라 2개의 상이한 예외 레벨들에 대한 자격 구성 정보의 가능한 옵션들을 도시하는 표이고;
도 7a 및 7b는 일 실시예에 따라 처리 회로소자의 실행 상태가 예외 진입(entry) 동작동안에 어떻게 관리되는지를 도시하는 흐름도이고;
도 8은 일 실시예에 따라 처리 회로소자의 실행 상태가 예외 복귀(return) 동작동안에 어떻게 관리되는지를 도시하는 흐름도이고;
도 9는 일 실시예에 따른 자격 사용 정보에 따라 명령의 실행이 어떻게 제어되는지를 도시하는 흐름도이고;
도 10a, 10b는 일 실시예에 따라, 자격 사용 정보가 자격 상태 또는 비자격 상태를 특정하는지에 따라 분기명령의 실행이 어떻게 제어되는지를 도시하는 것이고;
도 11a, 11b는 일 실시예에 따라, 자격 사용 정보가 자격 상태 또는 비자격 상태를 나타내는지에 따라 링크에 의한 분기명령(branch with link instruction)의 실행이 어떻게 제어되는지를 도시하는 것이고;
도 12a, 12b는, 일 실시예에 따라, 자격 사용 정보가 자격 상태 또는 비자격 상태를 나타내는지에 따라 어드레스 발생 명령의 실행이 어떻게 제어되는지를 도시하는 것이고;
도 13은 이용될 수도 있는 시뮬레이터 구현을 도시한 것이다.
첨부도면들을 참조하여 실시예들을 설명하기에 앞서, 이하의 실시예들을 기술한다.
상술한 것처럼, 특정한 자격들이 주어진 프로세스를 위해 명시되고, 그 명시된 자격들 외의 동작들을 실시하려는 시도가 있는 경우 오류가 기동될 수 있는, 자격 기반 아키텍처들에 있어서 관심이 증가하고 있다. 여러 가지 타입들의 자격들이 명시되어도 되지만, 일 타입의 자격은 (일 실시예에서 포인터 값과 관련된 범위 및 허가정보와의 양쪽을 포함하는) 제한 포인터이다. 이와 같은 자격 기반 아키텍처를 채용하는 장치는, 일반적으로 상기 자격들을 기억하는데 사용되는 (여기서는 제한 포인터 기억소자들, 또는 보다 일반적으로는 자격 기억소자들이라고도 한) 기억소자들을 가질 것이다. 상기 기억소자들은, 레지스터들(여기서는 제한 포인터 레지스터들 또는 자격 레지스터들이라고도 함)일 수 있고, 및/또는 범용 메모리에서의 메모리 장소들, 예컨대 스택 메모리상의 장소일 수 있다. 특정한 명령들은, 원하는 자격에 액세스하기 위해서 상기와 같은 기억소자들을 참조하고, 해당 자격에 의존한 동작들을 수행하는데, 사용될 수 있다. 예를 들면, 제한 포인터를 생각하면, 상기와 같은 명령의 실행은 제한 포인터가 검색되게 하고 나서, 거기에서 그 포인터 값에 대해 상기 명령들의 실행동안에 요구된 메모리에서의 어드레스를 얻는데 사용되게 할 수 있다. 그 포인터 값은, 상기 메모리 어드레스를 직접 특정하는데 사용되어도 되거나, 예를 들면 오프셋을 포인터 값에 가산하는 것에 의해, 상기 메모리 어드레스를 얻는데 사용되어도 된다. 그 후, 상기 메모리 어드레스가 범위 정보에 의해 지정된 범위내에 있고 상기 허가 정보에서 지정된 임의의 허가가 충족된다면, 상기 동작에 대해 진행시킬 것이다.
추가로, 적어도 일부의 명령들이 그 명령들을 실행할 때 수행된 동작들의 결과로서 자격들을 발생하는 것이 바람직하다. 또한, 그 명령들의 적어도 일부에 대해서도, 예를 들면 역호환성을 지원하도록, 비자격 결과를 생성하는 명령의 버전을 제공하는 것이 바람직할 수도 있다.
그렇지만, 기본적으로 동일한 동작을 수행하지만, 한쪽이 결과로서 자격을 생성하고 다른 쪽이 결과로서 통상의 데이터 값을 생성하는, 2개의 별도의 명령들을 지정하기 위해서, 이 상이한 명령들을 명시하기 위해 명령 세트 아키텍처내에 명령 인코딩 공간이 충분해질 필요가 있다. 그렇지만, 명령 인코딩 공간은 일반적으로 엄격하게 제약되고, 원하는 상이한 타입들의 명령들 모두를 명령 세트 아키텍처내에서 인코딩하는 것이 어려울 수 있다.
여기서 기술된 실시예들은, 명령 인코딩 공간에 대한 압박을 완화시키는 메카니즘을 제공한다.
특히, 일 실시예에서는, 명령들의 시퀀스를 실행하는 처리 회로소자와, 처리 회로소자에 의해 액세스하기 위한 정수 데이터 값을 기억하는 정수 기억소자와, 처리 회로소자에 의해 액세스하기 위한 자격을 기억하는 자격 기억소자를 구비하는 장치를 제공한다. 또한, 자격 사용 스토리지는, 자격 사용 정보를 기억하도록 구성된다.
명령들의 시퀀스에서 적어도 하나의 명령에 대해서, 처리 회로소자는, 해당 명령의 실행에 응답하여, 자격 사용 정보에 따라, 목적지 기억소자에 기억되는 결과를, 발생하는 것이다. 특히, 자격 사용 정보가 자격 상태를 특정할 때, 처리 회로소자는, 그 결과를 자격으로서 발생하고, 자격 기억소자를 목적지 기억소자로서 선택한다. 반대로, 자격 사용 정보가 비자격 상태를 특정할 때, 처리 회로소자는, 그 결과를 정수값으로서 발생하고 정수 기억소자를 목적지 기억소자로서 선택한다.
이러한 해결방법에 의해, 명령 세트내의 단일의 명령은, 실행 동안에, 자격을 결과로서 또는 정수값을 결과로서 발생하도록 설정 가능하게 배치될 수 있고, 한층 더 그 결과에 대한 목적지는 자격 또는 정수값이 발생중인지에 따라 설정 가능하게 선택될 수 있다. 특히, 명령의 실행 동안에, 처리 회로소자는, 자격 사용 정보를 참조할 수 있고, 현재의 자격 사용 정보를 사용하여, 자격이 명령의 실행 결과로서 생성되는지 또는 대신에 정수값이 생성되는지를 제어할 수 있다. 이에 따라, 명령의 자격 변형과 비자격 변형의 양쪽이 실행될 수 있지만, 그 변형들이 상기 명령 세트내에서 별개로 인코딩되는 것을 요구하지 않는다.
정수 기억소자는, 다양한 형태를 취할 수 있지만, 일 실시예에서는 복수의 정수 기억소자들의 선택된 정수 기억소자, 프로그램 카운터 기억소자, 및 링크 기억소자 중 하나다. 마찬가지로, 자격 기억소자도, 다양한 형태를 취할 수 있지만, 일 실시예에서는 복수의 자격 기억소자들의 선택된 자격 기억소자, 프로그램 카운터 자격 기억소자, 및 자격 링크 기억소자 중 하나다.
자격 사용 정보에 따라, 상기 발생된 결과가 자격 또는 정수값이도록 상기 처리 회로소자에 의해 상술한 방식으로 처리되는 명령들은, 다양한 형태를 취할 수 있다. 그렇지만, 일 실시예에서, 적어도 하나의 상기 명령은 즉시값을 소스 오퍼랜드로서 지정하는 명령이다. 즉시값은, 그 명령의 이용 가능한 인코딩 공간내에서 상당한 수의 비트들을 소비할 수 있음에 따라서, 상술한 기술들은 즉시값을 소스 오퍼랜드로서 지정하는 명령들과 관련지어 사용될 때 특히 이로울 수도 있는데, 그 이유는 명령의 2개의 별개의 변형을 제공하는 잔여 인코딩 공간이 불충분할 수 있기 때문이다.
그렇지만, 그 밖의 실시예들에서도, 상기 기술은, 즉시값을 소스 오퍼랜드로서 지정하지 않는 명령들과, 따라서, 예컨대, 범용 레지스터를 참조하여 소스 오퍼랜드를 지정할지도 모르는 명령들에서, 사용될 수 있다.
일 실시예에서, 처리 회로소자가 상술한 방식으로 실행하는 적어도 하나의 명령은, 프로그램 카운터 정보를 추가의 소스 오퍼랜드로서 사용하도록 배치되는 명령이다. 프로그램 카운터 정보를 소스 오퍼랜드로서 사용하는 명령들이 다수 있고, 이때 자격 또는 정수값인 결과를 발생 가능한 것이 바람직할 것이고, 이에 따라 상술한 기술들은, 이러한 각 명령의 다수의 상이한 변형을 구체적으로 명시할 필요를 피함으로써, 그 명령들을 인코딩하는 매우 효율적인 방식을 제공한다.
상기 적어도 하나의 명령을 실행할 때 처리 회로소자에 의해 발생된 결과는 다양한 형태를 취할 수 있지만, 일 실시예에서 그 발생된 결과는 어드레스 정보다. 자격 기반 아키텍처들에 있어서, 자격의 형태의 어드레스 정보를 어떻게 사용하는지를 엄격하게 제약하도록, 이 어드레스 정보를 발생하는데 이로울 수 있다. 그렇지만, 역호환성을 위해, 정수값의 형태의 어드레스 정보를 발생 가능한 것이 바람직한 경우가 많고, 상술한 기술은 그 변형들에 대한 별개의 명령들을 지정할 필요없이 양쪽의 변형들을 지원하는 특히 효율적인 메카니즘을 제공한다.
적어도 하나의 명령은, 다양한 형태를 취할 수 있지만, 일 실시예에서는 프로그램 카운터 정보를 갱신하는데 사용된 분기명령이다.
특히, 일 실시예에서, 처리 회로소자는, 분기명령에 응답하여, 적어도 하나의 결과로서, 갱신된 프로그램 카운터 정보를 발생하도록 배치되고, 이때의 처리 회로소자는, 자격 상태에 따라, 프로그램 카운터 자격 기억소자에 기억하기 위해 프로그램 카운터 자격으로서 상기 갱신된 프로그램 카운터 정보를 발생하거나, 프로그램 카운터 기억소자에 기억하기 위해 프로그램 카운터 값으로서 상기 갱신된 프로그램 카운터 정보를 발생하도록 배치된다.
갱신된 프로그램 카운터 정보가 발생될 수도 있지만, 일 실시예에서는 이것이 분기명령에 의해 지정된 즉시값에 따라 현재의 프로그램 카운터 값을 조정함으로써 발생되는 방식이 많이 있다. 앞서 설명된 것처럼, 즉시값은, 명령 인코딩 공간내에서 상당한 수의 비트들을 소비할 수 있음에 따라서, 즉시값을 소스 오퍼랜드로서 지정하는 분기명령과 관련지어 상술한 기술들을 사용하는 것은 특히 이로울 수 있다. 그렇지만, 다른 실시예들에서, 즉시값은 지정되지 않을 수도 있고, 대신에 상기 분기명령은 레지스터의 콘텐츠를 사용하여 절대 분기 목적지를 지정할 수도 있거나, 프로그램 카운터와 조합하여 사용되는 오프셋을 사용하여 프로그램 카운터 상대적 분기 목적지를 제공할 수도 있다.
일 실시예에서 프로그램 카운터 기억소자는 물리적으로 프로그램 카운터 자격 기억소자에 대해 분리될 수도 있지만, 일 실시예에서 프로그램 카운터 기억소자는 프로그램 카운터 자격 기억소자내의 필드에 의해 형성된다.
일 배치 예에서, 분기명령은 링크에 의한 분기명령이어도 되고, 처리 회로소자는 현재의 프로그램 카운터 정보로부터 얻어진 복귀 어드레스 정보를 적어도 하나의 결과로서 발생하도록 배치되어도 되며, 상기 처리 회로소자는, 자격 상태에 따라, 자격 링크 기억소자에 기억하기 위한 복귀 어드레스 자격으로서 복귀 어드레스 정보를 발생하거나, 링크 기억소자에 기억하기 위한 복귀 어드레스 값으로서 복귀 어드레스 정보를 발생하도록, 배치된다. 따라서, 이러한 예에서, 상기 갱신된 프로그램 카운터 정보와 복귀 어드레스 정보 양쪽은, 자격 사용 정보에 따라, 자격 또는 정수값으로서 생성될 수 있다.
일 실시예에서, 처리 회로소자는, 예를 들면, 오프셋을 현재의 프로그램 카운터 값에 가산함으로써, 해당 현재의 프로그램 카운터 값을 수정하여서 복귀 어드레스 정보를 발생하도록 배치되어도 된다.
링크 기억소자는, 자격 링크 기억소자에 대해 물리적으로 분리되어도 되지만, 일 실시예에서는 자격 링크 기억소자내의 필드에 의해 형성되어도 된다.
분기명령들을 위해 상술한 설정 가능한 결과 발생을 수행하는 것에 대한 대안으로서, 또는 이 수행하는 것에 부가하여, 처리 회로소자는, 다른 타입들의 명령들을 위해 유사한 단계들을 취하도록 배치되어도 된다. 예를 들면, 적어도 하나의 명령은, 상기 결과로서, 프로그램 카운터 정보로부터 얻어진 어드레스 정보를 발생하는데 사용된 어드레스 발생 명령이어도 된다. 또, 이러한 어드레스 발생 명령이 어드레스 정보를 자격으로서 발생하지만, 또한 역호환성을 위해, 해당 어드레스 정보의 정수값으로서의 발생을 지원 가능한 것이 유용하다.
특별한 일 배치 예에서, 처리 회로소자는, 어드레스 발생 명령에서 지정한 즉시값에 따라, 현재의 프로그램 카운터 값을 조정하여서 어드레스 정보를 발생하도록 배치되어도 된다. 그렇지만, 분기 명령들의 앞선 설명과 같이, 즉시값을 사용하지 않는 그 밖의 변형들도, 여기서 설명한 설정 가능한 실행 작용을 이용하도록 배치되어도 된다.
어드레스 발생 명령의 실행에 의해 발생된 결과를 기억하는데 사용되는 목적지를 결정할 수 있는 방식이 많이 있다. 일 실시예에서, 어드레스 발생 명령은 목적지 식별자를 제공하고, 처리 회로소자는, 자격 사용 정보가 자격 상태를 특정할 때 복수의 자격 기억소자들의 선택된 자격 기억소자에 해당 목적지 식별자를 매핑하고, 자격 사용 정보가 비자격 상태를 특정할 때 복수의 정수 기억소자들의 선택된 정수 기억소자에 해당 목적지 식별자를 매핑하도록, 배치된다.
본 기술들이 적용되는 명령의 타입에 상관없이, 정수 기억소자가 자격 기억소자내의 필드에 의해 형성될 때, 정수값이 내부에 상기 자격 대신에 상기 결과로서 기억되는 것을 특정하도록 자격 기억소자의 콘텐츠를 플래깅할(flagged) 수 있는 방식이 많이 있다. 일 실시예에서, 정수값이 자격 대신에 결과로서 기억될 때, 자격 기억소자의 적어도 하나의 나머지 필드는 디폴트 값으로 세트되어 있다. 특히, 일 실시예에서, (예를 들면 범위 및 제한 정보를 지정할 수도 있는) 나머지 필드들은, 임의의 자격 제약을 효과적으로 벗어나기 위해서, 최대의 자격을 특정하도록 세트되어 있다. 그렇지만, 다른 실시예에서, 최대의 자격을 특정하기 위해 범위 및 제한 정보를 세트하는 것이 불필요할 수도 있다. 예를 들면, 하드웨어는, 상기 장치가 비자격 상태에서 동작중이므로, 수행된 처리 동작들이 자격들에 영향을 받지 않을 때, 자격 기억소자내의 범위 및 제한 정보를 무시하도록 배치되어도 된다. 이러한 상황들에서, 범위 및 제한 정보는, 대신에, 원하는 대로, 그대로이거나, 클리어될 수도 있다. 추가의 대안으로서, 태그 비트는, 상기 콘텐츠가 자격을 갖는 것을 특정하도록 세트되고, 그 콘텐츠가 유효 자격을 표현하지 않는 것을 특정하도록 클리어되는, 각 자격 기억소자와 관련될 수도 있다. 이에 따라, 자격 기억소자가 정수값을 기억할 때, 태그 비트는, 상기 콘텐츠가 유효 자격을 표현하지 않는 것을 특정하도록 클리어되어도 된다.
결과로서 기억된 자격은, 다양한 형태를 취할 수 있지만, 일 실시예에서는 제한 포인터를 포함한다.
상기 적어도 하나의 명령을 실행할 때 처리 회로소자에서 참조한 자격 사용 정보는, 다양한 형태를 취할 수 있다. 그렇지만, 일 실시예에서, 자격 사용 정보는 복수의 예외 레벨들의 각각에 대한 자격 구성 정보이고, 각 예외 레벨은 상이한 소프트웨어 실행 특권을 갖고, 예외 레벨마다 자격 구성 정보는, 적어도, 해당 예외 레벨에서 명령들을 실행할 때 처리 회로소자에서 수행한 동작들이 자격들에 의해 제약되는지를 특정한다. 따라서, 이것은, 원하는 경우, 적어도 하나의 예외 레벨에서의 소프트웨어가 자격들에 의해 제약되지 않게 하는 융통성을 제공한다. 특별한 예로서, 높은 예외 레벨에서 실행하는 크게 신뢰받는 소프트웨어에 대해, 자격들에 의해 제한되지 않게 동작시킬 수도 있다. 이것은, 상기 소프트웨어에 대한 자격 확인 루틴들을 수행할 필요를 피함으로써 성능 이점들이 생기게 할 수 있다. 또한, 그것은, 상기 소프트웨어가 자격 기반 아키텍처들과 호환 가능하게 하도록 수정될 필요가 있는 정도를 감소시킬 수 있다. 그렇지만, 상기 융통성이 예외 레벨 단위로 관리될 수 있으므로, 상기와 같은 메카니즘은, 예외 레벨들 중 하나 이상의 레벨에서 실행하는 소프트웨어에 자격들의 풀 제약들이 부과되도록 보장하는데도 사용될 수 있다.
또한, 상술한 기술들에 따라, 이 정보는, 하나 이상의 명령들을 실행할 때 재사용될 수 있어, 설정 가능하게 명령의 결과가 자격 또는 정수값으로서 형성되는 것을 가능하게 하고, 또한 해당 결과를 기억하는데 사용된 목적지가 자격 기억소자나 정수 기억소자로서 설정 가능하게 선택될 수 있다.
이하, 특별한 실시예들에 대해서 도면들을 참조하여 설명하겠다.
도 1은 명령들을 처리하기 위한 처리 파이프라인(4)을 구비하는 데이터 처리장치(2)의 일례를 개략적으로 도시한 것이다. 본 예에서, 처리 파이프라인(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)는, 그 자격이 기억되는 데이터 블록과 관련지어 세트될 것이다. 이러한 해결방법에 의해, 자격과 통상의 데이터를 구별함에 따라서, 통상의 데이터가 자격으로서 사용될 수 없도록 보장하는 것이 가능하다.
상기 설명된 실시예들에 있어서, 상기 장치는, 상이한 예외 레벨들에서 동작할 수 있도록 배치되고, 여기서 각 예외 레벨은 상이한 소프트웨어 실행 특권을 갖는다. 또한, 예외 메카니즘을 사용하여, 복수의 예외 레벨간에 천이한다. 특히, 예외 진입 또는 예외 퇴장동안에, 전환동작은, 소스 예외 레벨로부터 타겟 예외 레벨로 전환하도록 수행될 수 있다. 도 1에 도시된 것처럼, 상기 장치(10)는, 상기 처리 회로소자에서 참조한 각종 제어 및 상태 정보를 그것의 동작동안에 기억하는 다양한 제어/상태 레지스터들(70)에 액세스하고, 이 제어/상태 레지스터들(70)은 상술한 전환동작의 수행동안에 사용되는 다양한 레지스터들을 구비한다.
도 1에 도시된 것처럼, 현재의 프로세스 상태(74)는, 상기 프로세서의 현재의 동작에 관한 다양한 실행 상태 정보를 포착(capture)하도록 상기 제어/상태 레지스터들(70)내에 유지된다. 단일의 박스(74)로서 도시되어 있지만, 현재의 프로세스 상태는, 반드시 단일의 레지스터내에 모두 기억되지는 않을 것이지만, 이용 가능한 제어/상태 레지스터들(70)내의 다수의 제어 및 상태 레지스터들내에 기억되어도 된다.
동작 동안에, 예외는, 다양한 상이한 메카니즘, 예컨대, 인터럽트, 시스템 호출, 고장 등으로 기동될 수도 있다. 일 실시예에 따라, 예외가 취해질 때, 예외 진입 메카니즘은 상기 전환동작의 일부로서 기동되고, 이 프로세스 동안에 현재의 프로세스 상태(74)는 보존된 프로세스 상태(72)로서 포착된다. 또, 그 보존된 프로세스 상태(72)는, 단일의 레지스터내, 또는 다수의 레지스터들내에 기억되어도 된다. 그 후, 예외 핸들링 동작은, 상기 처리 회로소자에 의해 그 예외를 처리하도록 수행된다. 이어서, 상기 처리 회로소자가 상기 예외로부터 복귀할 때, 보존된 프로세스 상태는, 현재의 프로세스 상태로 복원되는 것에 의해, 상기 처리 회로소자는 예외가 취해지기 전에 수행중이었던 동작들을 계속할 수 있다.
상기 처리 회로소자의 실행 상태가 다수의 예외 레벨들에 대해 유지되는 것을 가능하게 하기 위해서, 별도의 보존된 프로세스 상태 레지스터들(SPSRs)(72)과 현재의 프로세스 상태 레지스터들(CPSRs)(74)은, 원하는 경우 예외 레벨들의 배수에 대해 유지될 수 있다.
도 4는 일 실시예에서 각종 예외 레벨간의 관계를 도시한 것이다. 예외 레벨 EL0는 최하위 소프트웨어 실행 특권을 갖고, EL0에서의 실행은 비특권 실행이라고 불린다. 1부터 3까지의 n의 증가된 값들은, 증가된 소프트웨어 실행 특권을 나타낸다. EL2 예외 레벨은, 프로세서 가상화를 위한 지원을 제공한다. 한편, EL3 스테이지는, 2개의 보안 상태들, 즉 보안 상태와 비보안 상태를 위한 지원을 제공한다.
이것은 도 4에 도시된 일반적인 트리 구조를 일으킨다. 특히, 도 4에 도시된 EL3(200)와 같은, EL3 예외 레벨이 제공되는 경우, 그것은 보안 상태에서 실행할 것이다. 비보안 상태에서는, 원하는 경우, 가상화를 지원하는 것이 가능하고, 이에 따라 EL2 예외 레벨(205)은 비보안 상태로 제공되어도 된다. 보안 상태내에서, 일 실시예에 있어서, EL2 레벨이 제공되지 않고, 대신에 EL1 레벨(230)은 보안 상태내에서 제공되어도 되고, 이 보안 상태하에서 다수의 상이한 EL0 레벨(240, 242)이 제공되어도 된다.
비보안 상태에서, EL2 레벨(205)이 제공되는 경우, 그것은 해당 다수의 EL1 레벨들(210, 212, 214) 아래에서 지원하여도 되고, 그 EL1 레벨들의 각각은, 참조부호 220, 222로 개략적으로 도시된 것처럼, 하나 이상의 EL0 레벨들을 지원하여도 된다.
각종 예외 레벨간의 천이는, 예외를 취하는 것을 통해 발생한다. 그렇지만, 모든 예외들에 대해 예외 레벨을 변경시키지 않을 것이다. 예를 들면, 일 실시예에서 EL0로부터의 예외들은, 통상 EL1에서 취해진다(하지만 일부의 구성들에서는 EL2에서 취해진다). EL1 이상으로부터의 예외들은, 일 실시예에서 동일한 예외 레벨에서 일반적으로 취해질 수도 있다. 그렇지만, EL1부터 EL2/EL3까지와 EL2로부터 EL3까지의 각종 예외들은, 또한 제공되어도 되고, 유사한 목적을 위해 사용될 수 있다. EL3에서 예외들은, 일 실시예에서는 항상 EL3에서 취해진다. 도 4에 도시된 것처럼, 보존된 프로세스 상태 레지스터들은, 예외 레벨들의 각각과 관련지어 제공될 수 있다. 항상 EL0로부터의 예외들이 EL1에서 취해지는 사실일 경우, EL0 레벨과 관련지어 별도의 SPSR에 대한 필요가 없다. 그렇지만, 일 실시예에서, EL0로부터의 특정한 예외들이 EL0레벨에서 취해질 수 있고, 그 경우에 EL0을 위한 별도의 SPSR 레지스터가 제공되어도 되도록, 배치되어도 된다.
나머지 도면들을 참조하여 설명할 것처럼, 여기서 기술된 실시예들에서, 자격들의 이용을 관리하기 위한 융통적 기술은, 다수의 예외 레벨들에서 동작을 허용하는 타입의 처리 회로소자에서 사용하도록 개발되어 있다.
특히, 도 1에 도시된 것처럼, 상기 제어/상태 레지스터(70)는, 예외 레벨마다 자격 구성 정보를 기억하는 각 예외 레벨 자격 구성 레지스터(들)(76)를 구비한다. 자격 구성 정보는, 다양한 상이한 타입들의 정보를 포착할 수 있지만, 일 실시예에서는 적어도, 해당 예외 레벨에서 명령들을 실행할 때 상기 처리 회로소자에서 수행한 동작들이 자격들에 의해 제한되는지 아닌지를 특정한다.
예외 레벨 단위로 상기와 같은 자격 구성 정보를 지정할 수 있음으로써, 이것은, 적어도 하나의 예외 레벨의 소프트웨어가 원하는 경우 자격들에 의해 비제한되게 하는 융통성을 제공한다. 따라서, 예컨대, 높은 예외 레벨에서 실행하는 아주 신뢰된 소프트웨어에 대해, 자격들에 의해 비제한되게 동작시킬 수도 있어, 이 소프트웨어에 대한 자격 확인 루틴들을 수행할 필요가 없음으로써 성능 이점을 낳을 수 있다. 또한, 그것은, 이러한 소프트웨어에 의해 자격 기반 아키텍처들과 호환 가능하게 수정될 필요가 있는 정도를 감소시킬 수 있다. 실제로, 일부 실시예들에서, 상기 메카니즘에 의해, 레거시, 자격 미인식, 소프트웨어가 적어도 하나의 예외 레벨에서 실행되게 할 수 있다.
도 5는, 일 실시예에 따라 상기 레지스터(들)(76)내에 포착된 각 예외 레벨 자격 구성 정보를 개략적으로 도시하는 표이다. 본 실시예에서, 상기 레지스터들(300)은, 예외 레벨마다 2비트 필드를 포함하여도 된다. 제1 필드(305)는 관련된 예외 레벨이 자격들에 의해 영향을 받는지를 특정할 수 있고, 이 필드를 여기서는 "A" 비트라고도 한다. 따라서, 이 비트는, 소프트웨어가 관련된 예외 레벨에서 실행중일 때, 해당 소프트웨어가 자격들에 의해 제한되는지 아닌지를 특정한다. 도 5에 도시된 예에서, "0"의 값은 상기 소프트웨어가 자격들에 의해 제한되지 않는 것을 가리키고, "1"의 값은 상기 소프트웨어가 자격들에 의해 제한되는 것을 가리킨다. 그렇지만, 그 밖의 실시예들에서 논리 0값과 논리 1값의 의미는 원하는 경우 반대일 수 있다.
일 실시예에서 각 예외 레벨 자격 구성 정보가 상기 필드(305)만을 포함하여도 되지만, 다른 실시예에서는, 추가의 필드(310)는, 상기 관련된 예외 레벨에서 실행하는 소프트웨어가 하나 이상의 하위 예외 레벨에서 상기 처리 회로소자에서 수행한 동작들을 제한하는데 사용되는 자격들을 관리할 수 있는지를 특정하도록, 제공된다. 선택사항으로, 또한, 이 정보는, 특별한 예외 레벨에서 실행하는 소프트웨어가 동일한 예외 레벨에서 상기 처리 회로소자에서 수행한 동작들을 제한하는데 사용된 자격들도 관리할 수 있는지를 특정할 수도 있다. 예컨대, 일 실시예에서, 특별한 예외 레벨에서 실행하는 소프트웨어가 상이한 "구획(compartment)들"에서 실행되도록 배치하는 것이 가능할 수도 있고, 이때의 일 구획에서 실행하는 소프트웨어는, 또 하나의 구획에서 실행하는 소프트웨어에서 수행한 동작들을 제한하는데 사용되는 자격들을 관리할 수 있다. 특별한 예로서, 특별한 예외 레벨에서 실행하는 소프트웨어는, 실행적 상태나, 제약된 상태에서 동작가능할 수도 있고, 그 실행적 상태에서 일 구획에서 실행하는 소프트웨어에 대해, 동일한 예외 레벨에서 또 하나의 구획에서 실행하는 소프트웨어를 제한하는데 사용되는 자격들을 관리시킬 수도 있다.
도 5에 도시된 것처럼, 특별한 예외 레벨에서 실행하는 소프트웨어가 자격들을 관리하는 능력에 대한 정보를 포착하는데 사용된 필드(310)를, 일 실시예에서는 "M" 비트라고 할 수도 있다.
도 5에 도시된 것처럼, 상기 A비트와 상기 M비트의 양쪽이 클리어되는 경우, 이것이 의미하는 것은 관련된 예외 레벨에서 실행하는 소프트웨어가 레거시 소프트웨어이어도 된다는 것인데, 그 이유는 소프트웨어가 자격들에 의해 영향을 받지 않을 뿐만 아니라, 자격들을 관리 불가능할 수도 있고, 이에 따라 상기 장치의 자격 기반 아키텍처를 고려하도록 수정될 필요가 없기 때문이다.
또한, 도 5에 도시된 것처럼, 또 하나의 선택적 상태는, A비트가 클리어되기 위한 상태이지만, M비트가 세트되기 위한 상태이다. 이것이 의미하는 것은, 관련된 예외 레벨에서 실행하는 소프트웨어가 자격들 자체에 의해 영향을 받는 것이 아니라, 하위 예외 레벨들에서 실행하는 소프트웨어에서 수행한 동작들을 제한하는데 사용되는 자격들을 관리하는데 사용될 수 있다는 것이다.
또 하나의 옵션으로서, A비트와 M비트 양쪽이 세트될 수 있다. 이것이 의미하는 것은, 관련된 예외 레벨에서 실행하는 소프트웨어가 자격들 자체에 의해 영향을 받고, 또한 자격들을 관리 가능할 수 있다는 것이다. 앞서 언급된 것처럼, M비트가 세트될 때, 이것은, 일 실시예에서, 관련된 예외 레벨에서 실행하는 소프트웨어가 하위 예외 레벨들에서 소프트웨어에서 수행한 동작들을 제한하는데 사용되는 자격들을 관리할 수 있지만, 소프트웨어는 동일한 예외 레벨에 대한 자격들을 관리할 수 없는 것일 수도 있다는 것을, 나타낼 수도 있다. 그렇지만, 다른 실시예에서는, 그것에 대해, 일부의 경우들에 있어서, 동일한 예외 레벨과 관련된 자격들을 관리시킬 수도 있다.
일 실시예에서, 도 5에 도시된 엔트리들의 제1의 3개의 세트들만이, A비트와 M비트에 대해 유효한 상태들이다. 그렇지만, 다른 실시예에서, 상기 표(300)에서 최종의 엔트리에 의해 도시된 것과 같은 상태들의 추가의 세트는, 예를 들면 최하위 예외 레벨 EL0과 관련지어, 일부의 경우들에서 이용 가능할 수도 있다. 특히, 이 상태에 따라, M비트는 클리어되지만 A비트는 세트된다. 이것이 의미하는 것은, 해당 예외 레벨에서 실행하는 소프트웨어가 자격들을 관리할 수 없지만, 그들에 의해 제한될 수 있다는 것이다. 이것은, 최하위 예외 레벨 EL0를 고려하기 위해 적절한 구성이어도 되고, 여기서, 관리되는 하위 예외 레벨들은 없다. 특별한 구체적인 예로서, 이것에 대해, EL0에서 실행하는 소프트웨어가 프로그램 카운터 자격(80)과 DDC(90)와 같은 자격들에 의해 제한되게 하기 전에, 일반적으로 그 자격들은 상위 예외 레벨만큼 셋업되어 있다.
일 실시예에서, 각 예외 레벨 자격 구성 레지스터들(76)은 복수의 레지스터들로 형성되는 것으로 할 수 있고, 각 레지스터는, 관련된 예외 레벨에 의해 "소유하고", 해당 예외 레벨에 대한 A비트 및 M비트를 갖는다. 이 레지스터들은 명시적으로 액세스되고, 이때의 상위 예외 레벨들은 해당 레벨 이하에서의 상기 레지스터들에게 액세스할 수 있다. 예를 들면, EL2 예외 레벨은, EL2, EL1 및 EL0에 영향을 미치는 자격 구성 레지스터들에게 액세스할 수 있다. 특별한 일 실시예에서, EL0에 대한 자격 구성은, EL1 또는 EL2에 의해 소유된 레지스터들에 의해 자체 구성 가능하게 제어된다.
일 실시예에서, 각 예외 레벨에 의해 자격 구성 레지스터들에의 액세스는, 임의의 적절한 메카니즘에 의해 제어될 수 있다. 그 후, 특별한 예외 레벨에 액세스 가능한 자격 구성 레지스터들에 기억된 값들은, 일 실시예에서, 동작동안에, 예를 들면 자격 인식 및 미인식 각각인 VM 게스트간에 전환할 때 동적으로 변경될 수 있다.
도 6은, 상위 구성 레벨과 관련된 자격 구성이 어떻게 하위 예외 레벨에서 이용 가능한 자격 구성에 영향을 미칠 수도 있는지를 도시하는 표(320)이다. 본 표에서는, 상위 예외 레벨 P에 대한 M비트 값과 A비트 값을 필드들(325, 330)으로 도시하고, 하위 예외 레벨 Q에 대한 대응한 M비트와 A비트는 필드들(335, 340)로 도시한다. 본 실시예에서, M비트가 예외 레벨 P에 대해 클리어(즉, 논리 0값)되는 경우, 이것이 의미하는 것은, 예외 레벨 P가 자격들에 의해 영향을 받을 수 없다(즉, 그것의 A비트도, 그것의 실제의 값에 상관없이, 클리어되는 것으로서 취급된다)는 것인데, 그 이유는, 상위 예외 레벨이 자격들에 의해 영향을 받을 수 없고, 하위 예외 레벨에서 자격들을 구성할 수 없기 때문이다. 또한, 예외 레벨 P에 대한 상기 필드(325)에서의 M비트를 클리어하는 것이 의미하는 것은 예외 레벨 Q에 대한 M비트가 클리어(즉, 제로)되어야 한다는 것인데, 그 이유는 하위 예외 레벨이 상위 예외 레벨이 자격들을 관리할 수 없는 경우 자격들을 관리하는 것이 가능하지 않기 때문이다. 예외 레벨 P와 같이, 예외 레벨 Q에 대한 상기 필드(335)에서의 M비트를 클리어하는 것도, 상기 필드(340)의 값을 판독하는 것이외의 모든 목적들을 위해, 상기 필드(340)에서의 A비트가 클리어로서 취급된다는 것을 의미한다.
다음 3개의 엔트리들은, 예외 레벨 P가 자격들을 관리할 수 있지만, 그 자격들에 의해 자체 영향을 받지 않는 경우들을 도시한 것이다. 이러한 배치에서, 도 5의 표(300)에 도시된 상위 3개의 엔트리들의 각각은, 예외 레벨 Q와 관련지어 이용 가능하다. 또한, 도 5를 참조하여 앞서 언급된 것처럼, 일 실시예에서, 예외 레벨 Q가 최하위 예외 레벨인 경우, 예외 레벨 Q가 자격들에 의해 제한되지만 그들을 관리할 수는 없도록, M비트 필드(335)가 클리어되고 A비트 필드(340)가 세트되는 것이 가능할 수도 있다.
도 6에서 최종의 3개의 엔트리들은, M비트와 A비트가 예외 레벨 P에 대해 세트되는 경우를 도시한 것이다. 또, 도 5의 표(300)에 도시된 상위 3개의 엔트리들은, 예외 레벨 Q에 대해 이용 가능하다. 또한, 앞서 언급된 것처럼, 예외 레벨 Q가 최하위 예외 레벨인 경우, M비트가 클리어되지만 A비트가 세트되는 것도 가능할 수도 있다.
앞서 언급된 것처럼, 예외 진입 또는 예외 퇴장/복귀시에, 전환동작은, 소스 예외 레벨로부터 타겟 예외 레벨로 전환하도록 수행될 수 있다. 각 예외 레벨단위로 자격들의 효과가 달라지게 하는 상기 실시예들에 따라, 상기 장치는, 전환동작의 일부로서, 소스 예외 레벨과 타겟 예외 레벨간에 자격들의 효과가 상이할 가능성을 고려하는 메카니즘도 제공한다. 특히, 소스 예외 레벨로부터 타겟 예외 레벨로의 전환동작 동안에, 소스 예외 레벨과 목적지 예외 레벨 중 적어도 하나에 관계된 자격 구성 스토리지에서의 자격 구성 정보는, 처리 회로소자의 실행 상태가 전환동작 동안에 어떻게 관리되는지를 결정하는데 사용된다. 이 프로세스에 대해 도 7a, 7b 및 도 8을 참조하여 보다 상세히 설명하겠다.
도 7a는, 소스 예외 레벨 X의 무슨 실행 상태가 보존되어야 하는지를 결정하기 위해서, 예외 레벨 X로부터 예외 레벨 Y로의 에외 진입시에 수행된 단계들을 도시한 것이다. 단계 400에서는, A비트가 소스 예외 레벨 X에 대해 세트되는지, 즉 예외 레벨 X가 자격들에 의해 영향을 받는지를, 판정한다. 그럴 경우, 프로세스는 단계 405에 진행되어, 예외 레벨 X에 대한 자격 상태가 포착된다. 앞서 설명된 것처럼, 이것은, 예외 레벨 X에 대한 현재의 프로세스 상태 레지스터(CPSR)의 콘텐츠가 예외 레벨 Y에 액세스 가능한 보존된 프로세스 상태 레지스터(SPSR)(72)에 보존된다는 것을 의미할 것이다. 그렇지만, 추가로, PCC 레지스터(80)내에 기억된 현재의 프로그램 카운터 자격은, 소스 예외 레벨 X에 대한 바람직한 복귀 어드레스 자격을 특정하는데 사용될 필요가 있다. 그 바람직한 복귀 어드레스는, 예외의 타입에 따르지만, 일반적으로 프로그램 카운터 값, 또는 프로그램 카운터 값 플러스 4(바이트 사이즈의 어드레싱과, 32비트 명령들이라고 가정함)일 것이다. 그 바람직한 복귀 어드레스와 아울러, 현재의 프로그램 카운터 자격으로부터의 나머지 자격 정보는, 상기 PCC로부터 발생된 복귀 어드레스 자격에도 복사될 것이다. 일 실시예에서, 이렇게 발생된 복귀 어드레스 자격은 전용 복귀 어드레스 자격 레지스터내에 기억될 것이고, 특별한 일 실시예에서 이 레지스터는 자격 예외 링크 레지스터(CELR)(78)이다.
그렇지만, 단계 400에서는, 소스 예외 레벨에서 실행하는 소프트웨어가 자격들에 의해 영향을 받지 않는다는 것을 의미하는, A비트가 세트되지 않는다고 판정하면, 예외 레벨 X에 대한 현재의 프로세스 상태(74)가 상기보존된 프로세스 상태(72)에 보존되는 것이 사실이지만, 복귀 어드레스 정보를 형성하는 자격을 보존할 필요는 없다. 대신에, 바람직한 복귀 어드레스는 프로그램 카운터 값(82)으로부터 산출되어 적절한 복귀 어드레스 기억소자내에 보존될 수 있고, 일 실시예에서는 이것이 예외 링크 레지스터(ELR)이다. 그렇지만, PCC 레지스터(80)로부터 자격 정보를 추출할 필요가 없는데, 그 이유는, 예외 레벨 X에서 실행하는 소프트웨어가, 자격들에 의해 제한된 자신의 명령을 페치하지 못하게 하기 때문이다.
일 실시예에서는 별도의 CELR 레지스터(78)와 별도의 ELR 레지스터를 제공할 수 있지만, 다른 실시예에서는, 동일한 물리적 구조(78)를 양쪽의 경우에서 사용할 수 있다. 소스 예외 레벨 X가 자격들에 의해 제한되지 않는 것으로 인해 도 7a에 도시된 프로세스가 단계 410으로 진행될 때, 상기 PC 값으로부터 얻어진 상기 바람직한 복귀 어드레스는, CELR의 어드레스 필드내에 기억될 수 있지만, 일 실시예에서는 나머지 필드들 중 적어도 하나는 제1 디폴트 값으로 세트된다. 예를 들면, 도 3을 참조하여 설명한 앞서 언급된 태그 비트를 참조하여, 상기 CELR 레지스터(78)과 관련된 태그 비트는, 이러한 경우에, CELR이 유효 자격을 기억하지 않는 것을 특정하도록 클리어될 수 있고, 그 후, 하드웨어는 복귀 어드레스 정보를 예외 복귀시에 나중에 검색할 때 이 복귀 어드레스 정보를 기억하는 CELR의 일부를 단순히 참조한다. 다른 실시예에서, CELR 레지스터(78)에서의 나머지 필드들의 전부는, 예를 들면, 단계 410에서 CELR 레지스터(78)에 기억된 상기 바람직한 복귀 어드레스를 제로 확장함으로써 클리어될 수 있다.
소스 예외 레벨 X에 대한 무슨 실행 상태가 예외 진입시에 보존될 필요가 있는지를 판정하는 것과 아울러, 목적지 예외 레벨 Y에 대한 적절한 실행 상태를 결정하는 것도 필요하고, 특히 그 PCC 레지스터(80)내에 기억하기 위해 초기의 프로그램 카운터 자격이나 값을 결정하는 것이 필요하다. 이 프로세스는, 도 7b에 개략적으로 도시된다.
도시된 것처럼, 단계 420에서는, A비트가 목적지 예외 레벨 Y에 대해 세트되는지, 즉 목적지 예외 레벨이 자격들에 의해 영향을 받는지를 판정한다. 그럴 경우, 프로세스는 단계 425로 진행되어, 상기 프로그램 카운터 자격 레지스터(80)는 도 1에 도시된 자격 제어 기억소자(79)에 기억된 예외 진입 어드레스 자격 정보를 사용하여 갱신된다. 특히, 상기 레지스터(79)는, 예외 진입시에 사용되는 적절한 어드레스에 대한 정보와, 또한, PCC 레지스터(80)내에 기억되는 프로그램 카운터 자격을 형성하기 위해 해당 어드레스와 아울러 제공되는 관련된 자격 정보도, 기억할 것이다. 상기 레지스터(79)에서 예외 진입 어드레스 정보는, 다양한 형태를 취할 수 있지만, 일실시예에서 상기 레지스터(79)는 자격 벡터 기저 어드레스 레지스터(CVBAR)의 형태를 취한다. 이 레지스터는 예외 진입을 위한 기저 어드레스를 제공하고, 그 예외는 예외 타입에 따라 이 기저 어드레스로부터의 오프셋을 결정한다. 따라서, 예외의 타입에 대한 정보는, PCC 레지스터(80)에 로딩된 프로그램 카운터 자격을 형성하는데 사용되는 적절한 어드레스를 특정하는데 사용될 것이고, 이때의 PCC 레지스터에 대한 자격 정보의 나머지 부분은 CVBAR에서 상기 자격의 대응한 부분으로부터 형성된다.
A비트가 목적지 예외 레벨 Y에 대해 세트되지 않은 경우, 이것이 의미하는 것은, 예외 레벨 Y가 자격들에 의해 영향을 받지 않음에 따라, 프로그램 카운터 자격이 요구되지 않는다는 것이다. 대신에, 단지, PCC 레지스터(80)의 필드(82)에 로딩되는 초기의 프로그램 카운터 값을 형성하는 것이 필요할 뿐이다. 따라서, 일 실시예에서, 단계 430에서 도시된 것처럼, 이러한 상황에서는, 상기 PCC 레지스터(80)의 필드들(84, 86)에서의 범위 및 제한 정보는 최대의 자격을 특정하도록 세트되고, PC 포인터 값(82)은 예외 진입 어드레스 레지스터(79)로부터 취득된 정보를 사용하여 갱신된다. 본 예에서는, 비자격 예외 진입 어드레스 레지스터를 참조하고, 일 실시예에서는 벡터 기저 어드레스 레지스터(VBAR)이어도 된다. 특별한 일 실시예에서, VBAR 레지스터는, CVBAR 레지스터의 하위 64비트들에 형성되는 것에 의해, CVBAR과 VBAR 레지스터 양쪽이 동일한 물리적 기억 구조를 공유할 수 있다.
그렇지만, 다른 실시예에서는, 최대의 자격을 특정하기 위해 PCC 레지스터(80)에 범위 및 제한 정보를 세트하는 것이 필요하지 않을 수도 있다. 예를 들면, 하드웨어는, 현재의 예외 레벨이 자격들에 의해 영향을 받지 않을 때, 그 PCC 레지스터(80)내의 범위 및 제한 정보(84, 86)를 무시하도록 배치되는 경우, 대신에 상기 범위 및 제한 정보는, 필요에 따라, 그대로이거나 클리어되어도 된다. 그렇지만, 최대의 자격을 특정하기 위해 범위 및 제한 정보를 설정함으로써, 모든 상황들에서 PCC 레지스터(80)의 전체를 참조하는 실시예들에 있어서, 이것은, 목적지 예외 레벨에서 실행하는 소프트웨어가 자격들에 의해 제한되지 않도록 보장할 것이다.
도 8은 예외로부터 복귀시에 취해진 단계들을 도시하는 흐름도다. 이 경우에, 소스 예외 레벨을 예외 레벨 Y로 하고, 목적지 예외 레벨을 예외 레벨 X로 한다. 단계 450에서는 A비트가 목적지 예외 레벨 X에 대해 세트되는지를 판정한다. 그럴 경우, 프로세스는 단계 460으로 진행되어, 상기 자격 상태는 목적지 예외 레벨에 대해 복원된다. 이것은, 본질적으로, CELR 레지스터(78)의 콘텐츠를 PCC 레지스터(80)에 복원시키고 SPSR 레지스터(72)의 콘텐츠를 예외 레벨 X에 대해 CPSR 레지스터(74)에 복원시킴으로써, 도 7a의 단계 405에서 취해진 단계들을 반대로 한다.
그렇지만, 예외 레벨 X가 자격들에 의해 영향을 받지 않는다는 것을 의미하는, A비트가 목적지 예외 레벨 X에 대해 세트되지 않는다고 판정한 경우, 프로세스는 단계 455에 진행된다. 여기서, (비자격) 상태는, 예외 레벨 X에 대해 복원된다. 일 실시예에서, 이것은, 다시 예외 레벨 X에 대해 CPSR 콘텐츠에 복원되는 SPSR 콘텐츠를 포함한다. 그렇지만, PCC 레지스터(80)에 관하여, 일 실시예에서, 범위 및 제한 정보는 최대의 자격을 특정하도록 세트되고, 포인터 값 필드(82)는 ELR로부터의 정보를 사용하여 채워진다(populate). 도 7b의 단계 430을 참조하여 앞서 설명한 것처럼 대체로 똑같이, 일부 실시예들에서, 최대의 자격을 특정하기 위해 범위 및 제한 정보를 설정하는 대안으로서, 하드웨어가 현재의 예외 레벨이 자격들에 의해 영향을 받지 않는 상황들에서 범위 및 제한 정보를 참조하지 않는다면, 단지 범위 및 제한 정보 "있는 그대로" 남아 있거나, 해당 정보를 클리어하는 것이 가능할 뿐일 수도 있다.
이후 설명된 실시예들에서, 예외 레벨당 자격 구성 레지스터(76)내에 기억된 앞서 언급된 자격 구성 정보는, 추가의 목적을 위해, 특히, 특정한 타입들의 명령들을 실행할 때 발생된 결과의 형태에 영향을 미치는데도 사용될 수 있다. 특히, 일 실시예에서, 앞서 언급된 A비트는 자격 사용 정보로서 사용될 수 있고, 처리 회로소자에서 특정한 타입들의 명령들을 실행할 때, 처리 회로소자는 해당 자격 사용 정보를 참조하여, 자격으로서 또는 정수값으로서 상기 발생된 결과를 발생해야 하는지를 판정할 것이다. 특히, 일 실시예에서, A비트는 관련된 예외 레벨이 자격들에 영향을 받는다는 것을 나타내면, 특정한 타입들의 명령이 실행될 때, 처리 회로소자는 그 결과가 자격의 형태로 발생되게 할 것이다. 반대로, A비트는 관련된 예외 레벨이 자격들에 영향을 받지 않는다는 것을 나타내면, 이러한 명령들을 실행할 때, 처리 회로소자는 그 결과를 정수값의 형태로 발생할 것이다.
아래의 설명을 위해서는 A비트 정보를 자격 사용 정보로서 사용한다고 할 것이지만, 다른 실시예들에서는 이 목적을 위해 그 밖의 정보는 유지되어도 된다. 예를 들면, 별개의 전용 제어 비트는, 자격 상태나 비자격 상태를 각각 나타내기 위해 세트 또는 클리어될 수 있는 자격 사용 정보를 형성하도록 제공될 수 있다. 또는, 기존의 비트들의 조합은, 자격 사용 정보, 특히 처리 회로소자가 자격 상태나 비자격 상태에서 동작중인지의 여부를, 얻는데 사용되어도 된다.
자격 사용 정보가 어떻게 형성되든지 상관없이, 특별한 명령이 어떻게 실행되는지 영향을 미치는 상기 정보, 특히 해당 명령이 자격이나 정수값을 그것의 결과로서 발생하는지의 여부를, 사용함으로써, 이것은 단일의 명령의 설정 가능한 실행을 고려할 수 있어, 요구된 동작을 위해 자격 명령과 비자격 명령의 양쪽을 제공할 필요가 없다는 것을 알 것이다. 이것은, 명령 세트 인코딩 공간이 이미 심하게 사용됨에 따라서, 명령들의 자격 변형과 비자격 변형 양쪽을 인코딩하기에 충분한 공간을 완전히 비우는 것이 어려운 상황들에서는 매우 유용할 수 있다.
도 9는 일 실시예에 따라 명령들을 실행할 때 처리 회로소자에서 수행한 동작들을 도시하는 흐름도다. 단계 500에서는, 실행되는 새로운 명령이 있는 것을 결정하고 나서, 단계 505에서는, 해당 명령이, 자격 사용 정보를 참조하여 이루어지는 결과 타입 결정을 요구하는 타입을 갖는지를 판정한다. 특히, 명령의 실행 결과가 자격 또는 정수값의 형태로 생성되어야 하는지의 여부에 관해 판정하는 기술은, 원하는 경우 특정한 타입들의 명령으로 제한될 수 있다. 일 실시예에서, 상기 기술이 사용되어도 되는 타입들의 명령들의 일례는, 일부의 형태의 어드레스를 결과로서 발생하는 명령들이다. 자격 기반 아키텍처들에 있어서, 이러한 어드레스 정보가 자격으로서 발생되는 것이 바람직한데, 그 이유는 이것을 사용하여 해당 어드레스 정보가 어떻게 사용되는지를 엄격하게 제약할 수 있기 때문이다. 그렇지만, 역호환성을 위해, 명령들에 의해 어드레스 정보를 정수값으로서 발생시키는데도 유용할 것이고, 여기서 설명된 기술들에 의해 동일한 명령이 양쪽의 목적을 위해 사용될 수 있고, 이때 자격 사용 정보는, 그 명령이 실행될 때에, 결과가 자격으로서 또는 정수값으로서 생성되는지를 구성하도록 배치된다.
단계 505에서 명령이 결과 타입 결정이 이루어지기를 요구하는 타입을 갖지 않는다고 판정한 경우, 단계 510의 처리로 진행되어, 그 명령을 정상적으로 실행한다. 그렇지만, 단계 505에서 결과 타입 결정이 이루어질 필요가 있다고 판정한 경우에는, 단계 515에서는, 해당 자격 사용 정보를, 자격 상태 또는 비자격 상태를 나타내는지를 판정하기 위해서 상기 처리 회로소자가 참조한다. 앞서 언급된 것처럼, A비트가 자격 사용 정보로서 사용되는 일 실시예에서, A비트가 현재의 예외 레벨이 자격들에 영향을 미치는 것을 특정하도록 세트될 때, 이것은 자격 상태를 나타낼 것이다. 반대로, A비트가 현재의 예외 레벨이 자격들에 영향을 미치지 않는 것을 특정하도록 클리어 되면, 이것은 비자격 상태를 나타낼 것이다.
단계 515에서 자격 사용 정보가 자격 상태를 나타낸다고 판정하면, 단계 520에서는 자격을 결과로서 발생하는 방식으로 상기 명령을 실행한다. 그 후, 단계 525에서는, 자격 기억소자에 그 결과를 기억한다.
단계 515에서 자격 사용 정보가 자격 상태를 나타내지 않으면, 대신에 단계 530의 처리로 진행되어, 정수값을 결과로서 발생하는 방식으로 명령을 실행한다. 그 후, 단계 535에서는, 해당 결과를 정수 기억소자에 기억한다.
각각, 자격 또는 정수값을 기억할 기억소자로서 선택된 자격 기억소자나 정수 기억소자는, 실행되는 명령의 타입에 의존할 것이다. 예를 들면, 일부 실시예들에서, 결과는 갱신된 프로그램 카운터로서 생성되었고, 이것은, 자격 사용 정보가 자격 상태를 나타낼 때 PCC 레지스터(80)내에 프로그램 카운터 자격으로서 기억될 수 있거나, 이와는 달리, 자격 사용 정보가 비자격 상태를 나타낼 때 프로그램 카운터 기억소자내에 프로그램 카운터 값으로서 기억될 수 있다. 일 실시예에서, 자격 레지스터는, 프로그램 카운터 자격 레지스터(80)내의 필드, 예를 들면 프로그램 카운터 포인터 값을 기억하는 필드(82)로서 형성되어도 된다.
그 밖의 실시예들에서, 상기 결과는 범용 레지스터에 기억되어도 되고, 따라서, 그 결과가 자격일 때, 자격 레지스터들 중 하나의 자격 레지스터내에 기억되어도 되는 반면에, 그 결과가 정수값으로서 발생될 때, 범용 레지스터들(40) 중 하나의 범용 레지스터에 기억될 수 있다. 도 1과 연결하여 상술한 것처럼, 일 실시예에서 동일한 물리 스토리지는 범용 레지스터들(40)과 자격 레지스터들(60) 양쪽을 제공하도록 사용되어도 되고, 이에 따라, 범용 레지스터는 관련된 자격 레지스터내의 필드, 예컨대 필드(62)에 의해 형성될 수 있다.
도 9의 상술한 기술은, 다양한 상이한 명령들에 적용될 수 있다. 도 10a 및 10b는, 명령이 분기 즉시 명령인 경우의 일례를 도시한 것이다. 이러한 명령은, 그 명령의 비트 인코딩 공간내에 직접 인코딩된 즉시값을 소스 오퍼랜드로서 지정한다. 이러한 즉시값은 상당한 부분의 명령 인코딩 공간을 차지할 수 있고, 이에 따라, 한번은 자격을 결과로서 발생하는 버전에 대해, 한번은 정수값을 결과로서 발생하는 버전에 대해, 두번 상기 명령을 복제하지 않아야 하는 것이 바람직하다. 도 9의 기술을 사용함으로써, 이것이 회피된다.
특히, 도 10a에 도시된 것처럼, 분기 즉시 명령이 실행될 때, 자격 사용 정보가 자격 상태를 나타내는지를 판정할 것이고, 이는, 앞서 설명된 것처럼, 일 실시예에서 A비트가 세트되어 있을 때의 경우일 것이다. 자격 사용 정보가 자격 상태를 나타내면, 현재의 프로그램 카운터 자격(600)은 새로운 프로그램 카운터 자격(620)을 발생하기 위해서 수정될 것이다. 특히, 원래의 포인터 값(602)은, 예를 들면, 새로운 포인터 값(622)을 발생하기 위해서, 가산(610)을 수행함으로써, 즉시값과 논리적으로 조합될 것이다. 일 실시예에서, 원래의 프로그램 카운터 자격에서 범위 및 허가 정보(604, 606)는, 필드(624 및 626)로 나타낸 것처럼, 새로운 프로그램 카운터 자격(620)내에 복제될 것이다.
그렇지만, 도 10b에 도시된 것처럼, 동일한 명령이 실행될 때, 자격 사용 정보가, 특별한 일 실시예에서 A비트가 클리어될 때의 경우인 비자격 상태를 나타내면, 그 결과는, 프로그램 카운터 자격 대신에 프로그램 카운터 값(즉, 정수값)으로서 발생된다. 도시된 특별한 실시예에서는, 프로그램 카운터 자격 레지스터(80)내, 구체적으로는 도 1에 도시된 필드(82)내에 프로그램 카운터 정수값이 계속해서 기억되는 것으로 한다. 따라서, 원래의 프로그램 카운터 값은, PCC 레지스터 콘텐츠(630)내에 상기 필드(632)에 의해 부여될 것이다. 그 원래의 프로그램 카운터 값은, 즉시값과 조합하여 논리 연산, 예를 들면 가산(640)이 실시되어, 갱신된 PCC 레지스터 콘텐츠(650)의 필드(652)에 기억된 새로운 포인터 값을 발생할 것이다. 원래의 프로그램 카운터 자격 콘텐트(630)에서의 나머지 필드들(634)은, 나머지 필드들(654)로 나타낸 것처럼, 새로운 프로그램 카운터 자격 콘텐츠(650)로만 복제될 수도 있거나, 이와는 달리, 도 10b의 요소(645)로 나타낸 것처럼 일부의 선택적 수정이 실시될 수도 있다. 예를 들면, 일 실시예에서, 나머지 필드들(654)은, 최대의 자격을 표현하게 세트될 수도 있어, 그 새로운 프로그램 카운터 값은 자격들에 의해 효과적으로 제약되지 않는다. 또는, 도 3을 참조하여 설명한 앞서 언급된 태그 비트는, 프로그램 카운터 자격 레지스터의 콘텐츠가 유효 자격을 기억하지 않는 것을 특정하도록 클리어될 수도 있다. 일 실시예에서는, 그 경우에, 필드(652)에서의 포인터 값이 유효 프로그램 카운터 정수값을 표현하는 것으로 할 수 있다.
그렇지만, 다른 실시예에서는 이러한 단계들을 취하는 것이 필요하지 않을 수도 있다. 예를 들면, 현재의 예외 레벨이 자격들에 의해 영향을 받지 않을 때, 하드웨어가 PCC 레지스터(80)내의 범위 및 제한 정보를 무시하도록 배치되면, 대신에, 그 범위 및 제한 정보는, 원하는 대로, 그대로 있거나, (예를 들면, 그 나머지 필드들에 제로 확장됨으로써) 클리어될 수도 있다.
도 11a 및 11b는, 다른 타입의 분기명령, 즉 링크에 의한 분기 즉시 명령의 설정 가능한 실행을 도시한 것이다. 이러한 명령의 실행에 의해, 도 10a, 10b를 참조하여 앞서 설명된 기능들이 수행하게 되지만, 또한 링크 레지스터가 복귀 어드레스로 채워지게 하고, 일 실시예에서는, 이 복귀 어드레스는, 자격 사용 정보에 의존한 복귀 어드레스 레지스터 값이나 복귀 어드레스 자격이 되도록 구성되어도 된다.
도 11a, 11b에서는, 도 10a, 10b와 공통되는 요소들을 말하기 위해 동일한 참조부호를 사용하고 있다. 이에 따라, 도 11a를 참조하여 알 것은, 새로운 프로그램 카운터 자격(620)이 도 10a를 참조하여 앞서 언급된 것처럼 정확히 동일한 방식으로 발생된다는 것이다. 추가로, 자격 복귀 어드레스는 자격 링크 레지스터(CLR)내에 기억하도록 발생된다. 일 실시예에서, 자격 링크 레지스터는, 도 1을 참조하여 설명된 자격 레지스터(60)의 특별한 자격 레지스터, 특별한 일 실시예에서는 C30이어도 된다. 도 11a에 도시된 것처럼, 필드(662)내에 기억되는 복귀 어드레스는, 명령이 실행되기 전에 존재한 프로그램 카운터 자격내의 현재의 포인터 값(602)에, 오프셋을 가산함으로써 발생된다. 일 실시예에서, 명령 길이는 포인터 값에 가산되어, 복귀 어드레스는 상기 링크에 의한 분기명령에 후속하는 다음 명령을 효과적으로 가리킨다. 이것을, 도 11a의 가산 박스(670)로 나타내고 있다. 도 11a에도 도시된 것처럼, 일 실시예에서는, 원래의 프로그램 카운터 자격의 필드들(604, 606)에서의 범위 및 허가 정보를, 복귀 어드레스 자격(660)을 갖는 자격 링크 레지스터의 필드들(664, 666)내에 복제한다.
그렇지만, 비자격 상태를 나타내는 A비트가 클리어되면, 그 처리는, 도 11b에 도시된 것처럼 수행된다. 새로운 프로그램 카운터 값은, 도 10b를 참조하여 앞서 설명된 것처럼 정확히 같은 방식으로 발생된다. 추가로, 복귀 어드레스(682)는, 가산 소자(670)로 나타낸 것처럼, 명령 길이를 포인터값(632)에 가산함으로써 발생된다. 이것은, 자격 링크 레지스터와 물리적으로 분리될 수도 있고, 일 실시예에서는 범용 레지스터들(40) 중 하나일 수 있는, 링크 레지스터내에 기억될 수 있다. 또는, 링크 레지스터는, 추가의 필드들(684)도 갖는 자격 링크 레지스터(680)내에 필드(효과적으로는 필드 682)에 의해 제공되어도 된다. 이 나머지 필드들은, 원래의 프로그램 카운터 자격(630)으로부터 나머지 필드들 데이터(634)를 사용하여 직접 채워질 수 있거나, 요소(675)로 나타낸 것처럼, 일부의 선택적 수정이 실시되어도 된다. 이 선택적 수정들은, 본질적으로, 프로그램 카운터를 위한 나머지 필드들에 관해 수행되어도 되는 선택적 수정들(645)에 대해 앞서 설명된 것과 같다. 따라서, 그 선택적 수정들은 최대의 자격을 특정하도록 세트될 수 있거나, 태그 비트는 자격 링크 레지스터가 유효 자격을 기억하지 않는 것을 나타내기 위해 클리어 되어도 된다. 추가의 대안으로서, 그 필드들은, 하드웨어가 어떠한 경우에 그 필드들에 있는 값들을 무시하면, 제로 확장되어도 되거나 있는 그대로 남아 있어도 된다.
도 12a, 12b는, 명령이 분기명령이 아니고, 어드레스 발생 명령인 아울러 추가의 다른 실시예를 도시한 것이다. 본 예에서, 어드레스 발생 명령은, 결과가 기록되는 목적지용 식별자와, 소스 오퍼랜드로서 사용되는 즉시값을, 지정한다.
도 12a에 도시된 것처럼, 명령이 실행되고 A비트가 세트되면, 이에 따라 발생된 어드레스 정보가, 목적지 자격 레지스터 CN내에 기억된 자격의 형태를 취하고, 이때의 목적지 자격 레지스터는 목적지 ID에 근거하여 선택된다. 전형적으로, 그 자격 레지스터는, 도 1을 참조하여 앞서 설명된 범용 자격 레지스터들(60) 중 하나일 것이다.
본 예에서, 현재의 프로그램 카운터 자격(700)내의 포인터 값(702)은, 상기 지정된 즉시값을 사용하여 논리 연산(710)이 실시되어, 어드레스 값(722)을 발생할 것이다. 일 실시예에서, 상기 범위 및 허가 정보(704, 706)은, 결과 자격(720)의 필드들(724, 726)내에 복제되어도 된다. 논리 연산(710)의 형태는, 어드레스 발생 명령의 타입에 좌우될 것이다. 단순한 경우에는, 오프셋으로서 즉시값을 포인터 값(702)에 가산하는 것만을 포함할 수도 있다.
도 12b는 A비트가 클리어되는 경우에 어드레스 발생 명령의 실행을 도시한 것이다. 이 경우에, 현재의 프로그램 카운터 자격(730)에서의 포인터 값(732)은 즉시값을 사용하여 논리 연산(740)이 실시되고, 이때의 결과 어드레스 값(750)은 정수 레지스터들 XN중의 하나(전형적으로는 범용 레지스터들(40) 중 하나)내에 기억되고, 선택된 특별한 레지스터는 어드레스 발생 명령내에 지정된 목적지 ID에 근거하여 선택된다. 이 경우에, 프로그램 카운터 자격(730)의 나머지 필드들(734)은, 어드레스 발생 명령의 실행 동안에는 사용되지 않는다.
도 12a, 12b의 상기 설명으로부터 아는 것은, 어드레스 발생 명령을 실행하여 자격 사용 정보에 따라, 어드레스 자격이나 어드레스 정수값을 생성할 수 있다는 것이다.
어드레스 발생 명령은, 다양한 형태를 취할 수 있지만, 구체적인 일 실시예에서는, 영국 캠브리지 ARM사에서 설계한 프로세서들에 사용된 ARM 명령 세트에 지정된, ADR 또는 ADRP 명령들의 형태를 취하여도 된다.
도 10a 내지 도 12b의 예들에서는 예로 주어진 명령들이 소스 오퍼랜드로서 즉시값을 취하는 형태의 전부이지만, 상술한 기술들은 소스 오퍼랜드로서 즉시값을 사용하지 않는 명령들과 관련지어서도 사용될 수 있다는 것을 주목해야 한다. 특히, 정수 레지스터들에서의 절대 또는 PC(C) 상대 분기 목적지를 취하는 분기 변형과, 정수 레지스터들에서의 절대 또는 PC(C) 상대 분기 목적지를 취하는 어드레스 생성 변형도, 정수 레지스터들과 즉시값들 양쪽을 취하는 변형처럼, 가능하다.
예를 들면, 다음의 타입들의 명령 실행을 지원할 수도 있다.
예 1
BranchRegister(bits(5) n, boolean link)
Bits(64) addr = X[n];
if CapabilitiesEnabled() then
if link then
CLR = PCC + 4;
PCC = PCCWithAddress(addr);
else
if link then
LR = PC + 4;
PC = addr;
위의 예 1은, "BranchRegister" 형태로 나타낸 것처럼, 정수 레지스터로부터 절대 분기 목적지를 취하는 분기 변형을 특정한다. "bits(5)n"의 값은 정수 소스 레지스터를 특정하는데 사용된 레지스터 인덱스를 지정하고, "boolean link" 필드는, 그 명령이 링크에 의한 분기 변형인지 아닌지를 특정하는 1비트 값이다. 그 후, 64비트 어드레스는, 레지스터 인덱스로 특정된 정수 레지스터 X로부터 결정된다. 자격 사용 정보가 자격들이 사용 가능한 것을 나타내면, 프로그램 카운터 자격은, PCC내의 포인터 값이 정수 레지스터 X로부터 취득된 그 64비트 어드레스가 되고, 나머지 필드들이 이전의 프로그램 카운터 자격으로부터 형성되도록, 갱신된다. 그 명령이 링크에 의한 분기명령이면, 자격 링크 레지스터는 명령 길이(이 경우에는 4바이트)를 현재의 프로그램 카운터 자격에 가산함으로써 갱신된다. 반대로, 자격 사용 정보가 자격들의 사용 불가능을 나타내면, 새로운 프로그램 카운터 값은, 정수 레지스터 X로부터 취득된 어드레스 값에 의해 형성된다. 그 명령이 링크에 의한 분기명령이면, 링크 레지스터는 명령 길이를 현재의 프로그램 카운터 값에 가산함으로써 갱신된다.
예 2
BranchRegisterRelative(bits(5) n)
Bits(64) offset = X[n];
if CapabilitiesEnabled() then
PCC = PCC + offset; // adds offset to the address field in PCC
else PC = PC + offset;
예 2는, "BranchRegisterRelative" 형태로 나타낸 것처럼, 정수 레지스터로부터 PC(C) 상대 분기 목적지를 취하는 분기 변형을 특정한다. 또, "bits(5)n"의 값은, 정수 소스 레지스터를 특정하는데 사용된 레지스터 인덱스를 지정한다. 이 경우에는, 그 명령의 "with link" 변형이 없는 것으로 한다. 그 후, 64비트 어드레스는, 그 레지스터 인덱스에 의해 특정된 정수 레지스터 X로부터 결정된다. 자격 사용 정보가 자격들의 사용 가능을 나타내면, 프로그램 카운터 자격은, PCC내의 포인터 값이, 오프셋으로서 자신에 가산된 정수 레지스터 X로부터의 정수값을 가져, 갱신된 포인터 값을 발생하고, 나머지 필드들이 이전의 프로그램 카운터 자격으로부터 형성되도록, 갱신된다. 반대로, 자격 사용 정보가 자격들의 사용 불가능을 나타내면, 새로운 프로그램 카운터 값은 정수 레지스터 X로부터 오프셋으로서의 정수값을 현재의 PC값에 가산함으로써 형성된다.
상술한 실시예들로부터 아는 것은, 이러한 실시예들은 특별한 명령들의 자격 발생 버전과 정수값 발생 버전 모두를 지원하는 효율적인 메카니즘을 제공하지만, 명령 인코딩 공간내에 그 2개의 상이한 변형을 별개로 인코딩할 필요가 없다는 것이다. 이것은, 자격들로서 결가들을 발생하기 위해 명령들의 실행을 지원하고, 정수값들로서 결과들을 발생하기 위해 동일한 명령들을 교대로 실행할 수 있는 역호환성을 고려하는, 매우 효율적인 메카니즘을 제공한다.
도 13은, 사용할 수도 있는 시뮬레이터 구현을 도시한 것이다. 상술한 실시예들은 관련된 기술들을 지원하는 특정한 처리 하드웨어를 동작시키는 장치 및 방법들의 관점에서 본 발명을 구현하지만, 컴퓨터 프로그램의 이용을 통해 구현되는 여기서 설명된 실시예들에 따라 명령 실행 환경을 제공하는 것도 가능하다. 이러한 컴퓨터 프로그램들은, 하드웨어 아키텍처의 소프트웨어 기반 구현을 제공하는 한, 시뮬레이터라고 하는 경우가 많다. 각종의 시뮬레이터 컴퓨터 프로그램들은, 에뮬레이터들, 가상 머신들, 모델들, 및 동적 이진 변환기를 포함하는 이전 변환기들을 포함한다. 전형적으로, 시뮬레이터 구현은, 시뮬레이터 프로그램(810)을 지원하는 호스트 운영체계(820)를 선택적으로 동작시키는 호스트 프로세서(830)상에서 동작할 수도 있다. 일부의 배치들에는, 하드웨어와 사기 제공된 명령 실행 환경간의 시뮬레이션의 다수의 층들, 및/또는 동일한 호스트 프로세서상에 제공된 다수의 별개의 명령 실행 환경들이 존재할 수도 있다. 역사적으로, 강력한 프로세서들은 합리적 속도로 실행하는 시뮬레이터 구현을 제공하는데 필요하지만, 이러한 해결방법은, 특정한 상황에서, 이를테면, 호환성 또는 재사용 목적을 위해 또 하나의 프로세서 고유의 코드를 실행하기를 바라는 경우에 정당화될 수도 있다. 예를 들면, 시뮬레이터 구현은, 호스트 프로세서 하드웨어에서 지원하지 않는 추가의 기능성을 명령 실행 환경에 제공하여도 되거나, 전형적으로 상이한 하드웨어 아키텍처와 관련된 명령 실행 환경을 제공하여도 된다. 시뮬레이션의 개요는, "Some Efficient Architecture Simulation Techniques", Robert Bedichek, Winter 1990 USENIX Conference, Pages 53-63에 제시되어 있다.
시뮬레이션된 실시예에서, 특별한 하드웨어 구성들 또는 특징들을 참조하여 실시예들을 이전에 설명한 결과로, 동등한 기능성이 적절한 소프트웨어 구성들 또는 특징들에 의해 제공되어도 된다. 예를 들면, 회로소자는, 시뮬레이션된 실시예에서 컴퓨터 프로그램 로직으로서 구현되어도 된다. 마찬가지로, 메모리 하드웨어, 이를테면 레지스터나 캐시는, 시뮬레이션된 실시예에서 소프트웨어 데이터 구조로서 구현되어도 된다. 이전에 설명된 실시예들에서 참조한 하드웨어 요소들 중 하나 이상이 호스트 하드웨어(예를 들면, 호스트 프로세서 830)상에 존재하는 배치들에 있어서, 일부의 시뮬레이션된 실시예들은, 적절한 경우, 호스트 하드웨어를 이용하여도 된다.
시뮬레이터 프로그램(810)은, (비일시적 매체일 수도 있는) 컴퓨터 판독 가능한 기억매체에 기억되어도 되고, 이 시뮬레이터 프로그램(810)에 의해 모형이 만들어지는 하드웨어 아키텍처의 애플리케이션 프로그램 인터페이스와 같은 (애플리케이션들, 운영체계들, 및 하이퍼바이저를 포함할 수도 있는) 타겟 코드(800)에 프로그램 인터페이스(명령 실행 환경)를 제공한다. 따라서, 자격 사용 정보에 의해 실행이 영향을 받는 상술한 명령들을 포함하는 타겟 코드(800)의 프로그램 명령들은, 시뮬레이터 프로그램(810)을 사용하여 명령 실행 환경내에서 실행되어도 되어, 상술한 장치(2)의 하드웨어 특징을 실제로 갖지 않는 호스트 컴퓨터(830)는, 이 특징들을 에뮬레이트 할 수 있다.
본 출원에서, "...하도록 구성된"의 단어는, 장치의 요소가 상기 명시된 동작을 실시할 수 있는 구성을 갖는다는 것을 의미하는데 사용된다. 본 문맥에서, "구성"은, 하드웨어 또는 소프트웨어의 상호연결의 배치 또는 방식을 의미한다. 예를 들면, 상기 장치는 상기 명시된 연산을 제공하는 전용 하드웨어를 가져도 되거나, 프로세서 또는 다른 처리 디바이스는 그 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은, 상기 장치 요소가 임의의 방식으로 상기 명시된 동작을 제공하기 위해서 변경될 필요가 있다는 것을 암시하지는 않는다.
여기서는 본 발명의 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위 및 사상으로부터 벗어나지 않고 당업자가 변경, 부가 및 수정을 여러 가지로 실시할 수 있다는 것을 알 수 있다. 예를 들면, 본 발명의 범위로부터 벗어나지 않고 종속항의 특징들과 독립항의 특징들을 여러 가지로 조합할 수 있다.

Claims (23)

  1. - 명령들의 시퀀스를 실행하는 처리 회로소자;
    - 처리 회로소자에 의해 액세스하기 위한 정수값을 기억하는 정수 기억소자;
    - 처리 회로소자에 의해 액세스하기 위한 자격을 기억하는 자격 기억소자; 및
    - 자격 사용 정보를 기억하는 자격 사용 스토리지를 구비하고;
    상기 처리 회로소자는, 명령들의 시퀀스에서 적어도 하나의 명령의 실행에 응답하여, 자격 사용 정보에 따라, 목적지 기억소자에 기억되는 결과를,
    자격 사용 정보가 자격 상태를 특정할 때, 그 결과를 자격으로서 발생하고 자격 기억소자를 목적지 기억소자로서 선택함으로써; 또한
    자격 사용 정보가 비자격 상태를 특정할 때, 그 결과를 정수값으로서 발생하고 정수 기억소자를 목적지 기억소자로서 선택함으로써,
    발생하고,
    상기 적어도 하나의 명령은 즉시값을 소스 오퍼랜드로서 지정하는 명령을 포함하는, 장치.
  2. 제 1 항에 있어서,
    상기 정수 기억소자는, 복수의 정수 기억소자들의 선택된 정수 기억소자, 프로그램 카운터 기억소자, 및 링크 기억소자 중 하나인, 장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 자격 기억소자는, 복수의 자격 기억소자들의 선택된 자격 기억소자, 프로그램 카운터 자격 기억소자, 및 자격 링크 기억소자 중 하나인, 장치.
  4. 삭제
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 적어도 하나의 명령은, 프로그램 카운터 정보를 추가의 소스 오퍼랜드로서 사용하도록 배치되는 명령을 포함하는 장치.
  6. 제 1 항 또는 제 2 항에 있어서,
    발생된 상기 결과는 어드레스 정보인, 장치.
  7. 제 1 항 또는 제 2 항에 있어서,
    상기 적어도 하나의 명령은, 프로그램 카운터 정보를 갱신하는데 사용된 분기명령인, 장치.
  8. 제 7 항에 있어서,
    상기 처리 회로소자는, 분기명령에 응답하여, 적어도 하나의 결과로서, 갱신된 프로그램 카운터 정보를 발생하도록 배치되고, 이때의 처리 회로소자는, 자격 상태에 따라, 프로그램 카운터 자격 기억소자에 기억하기 위해 프로그램 카운터 자격으로서 상기 갱신된 프로그램 카운터 정보를 발생하거나, 프로그램 카운터 기억소자에 기억하기 위해 프로그램 카운터 값으로서 상기 갱신된 프로그램 카운터 정보를 발생하도록 배치되는, 장치.
  9. 제 8 항에 있어서,
    상기 처리 회로소자는, 분기명령에서 지정한 즉시값에 따라 현재의 프로그램 카운터 값을 조정하여서 상기 갱신된 프로그램 카운터 정보를 발생하도록 배치되는, 장치.
  10. 제 8 항에 있어서,
    상기 프로그램 카운터 기억소자는 프로그램 카운터 자격 기억소자내의 필드에 의해 형성되는, 장치.
  11. 제 7 항에 있어서,
    상기 분기명령은 링크에 의한 분기명령이고, 상기 처리 회로소자는 현재의 프로그램 카운터 정보로부터 얻어진 복귀 어드레스 정보를 적어도 하나의 결과로서 발생하도록 배치되며, 상기 처리 회로소자는, 자격 상태에 따라, 자격 링크 기억소자에 기억하기 위한 복귀 어드레스 자격으로서 복귀 어드레스 정보를 발생하거나, 링크 기억소자에 기억하기 위한 복귀 어드레스 값으로서 복귀 어드레스 정보를 발생하도록, 배치되는, 장치.
  12. 제 11 항에 있어서,
    상기 처리 회로소자는, 현재의 프로그램 카운터 값을 수정하여서 복귀 어드레스 정보를 발생하도록 배치되는, 장치.
  13. 제 11 항에 있어서,
    상기 링크 기억소자는, 자격 링크 기억소자내의 필드에 의해 형성되는, 장치.
  14. 제 1 항 또는 제 2 항에 있어서,
    상기 적어도 하나의 명령은, 상기 결과로서, 프로그램 카운터 정보로부터 얻어진 어드레스 정보를 발생하는데 사용된 어드레스 발생 명령인, 장치.
  15. 제 14 항에 있어서,
    상기 처리 회로소자는, 상기 어드레스 발생 명령에서 지정한 즉시값에 따라, 현재의 프로그램 카운터 값을 조정하여서 어드레스 정보를 발생하도록 배치되는, 장치.
  16. 제 14 항에 있어서,
    상기 어드레스 발생 명령은 목적지 식별자를 제공하고, 상기 처리 회로소자는, 자격 사용 정보가 자격 상태를 특정할 때 복수의 자격 기억소자들의 선택된 자격 기억소자에 해당 목적지 식별자를 매핑하고, 자격 사용 정보가 비자격 상태를 특정할 때 복수의 정수 기억소자들의 선택된 정수 기억소자에 해당 목적지 식별자를 매핑하도록, 배치되는, 장치.
  17. 제 1 항 또는 제 2 항에 있어서,
    상기 정수 기억소자가 자격 기억소자내의 필드에 의해 형성되며, 자격 기억소자의 적어도 하나의 나머지 필드는 정수값이 자격 대신에 결과로서 기억될 때, 디폴트 값으로 세트되어 있는, 장치.
  18. 제 1 항 또는 제 2 항에 있어서,
    상기 자격은 제한 포인터를 포함하는, 장치.
  19. 제 1 항 또는 제 2 항에 있어서,
    상기 자격 사용 정보는 복수의 예외 레벨들의 각각에 대한 자격 구성 정보이고, 각 예외 레벨은 상이한 소프트웨어 실행 특권을 갖고, 예외 레벨마다 자격 구성 정보는, 적어도, 해당 예외 레벨에서 명령들을 실행할 때 상기 처리 회로소자에서 수행한 동작들이 자격들에 의해 제약되는지를 특정하는, 장치.
  20. 명령들의 시퀀스를 실행하는 처리 회로소자와, 처리 회로소자에 의해 액세스하기 위한 정수값을 기억하는 정수 기억소자와, 처리 회로소자에 의해 액세스하기 위한 자격을 기억하는 자격 기억소자와, 자격 사용 정보를 기억하는 자격 사용 스토리지를 갖는, 장치내에서 명령들의 실행을 제어하는 방법으로서,
    명령들의 시퀀스에서 적어도 하나의 명령의 실행에 응답하여, 자격 사용 정보에 따라, 목적지 기억소자에 기억되는 결과를,
    자격 사용 정보가 자격 상태를 특정할 때, 그 결과를 자격으로서 발생하고 자격 기억소자를 목적지 기억소자로서 선택함으로써; 또한
    자격 사용 정보가 비자격 상태를 특정할 때, 그 결과를 정수값으로서 발생하고 정수 기억소자를 목적지 기억소자로서 선택함으로써,
    발생하는 단계를 포함하고,
    상기 적어도 하나의 명령은 즉시값을 소스 오퍼랜드로서 지정하는 명령을 포함하는, 방법.
  21. - 명령들의 시퀀스를 실행하는 처리수단;
    - 처리수단에 의해 액세스하기 위한 정수값을 기억하는 정수 기억소자 수단;
    - 처리수단에 의해 액세스하기 위한 자격을 기억하는 자격 기억소자 수단; 및
    - 자격 사용 정보를 기억하는 자격 사용 스토리지 수단을 구비하고;
    상기 처리수단은, 명령들의 시퀀스에서 적어도 하나의 명령의 실행에 응답하여, 자격 사용 정보에 따라, 목적지 기억소자 수단에 기억되는 결과를,
    자격 사용 정보가 자격 상태를 특정할 때, 그 결과를 자격으로서 발생하고 자격 기억소자 수단을 목적지 기억소자 수단으로서 선택함으로써; 또한
    자격 사용 정보가 비자격 상태를 특정할 때, 그 결과를 정수값으로서 발생하고 정수 기억소자 수단을 목적지 기억소자 수단으로서 선택함으로써,
    발생하고,
    상기 적어도 하나의 명령은 즉시값을 소스 오퍼랜드로서 지정하는 명령을 포함하는, 장치.
  22. 명령들의 시퀀스를 실행하는 처리 프로그램 로직;
    처리 프로그램 로직에 의해 액세스하기 위한 정수값을 기억하는 정수 데이터 구조;
    처리 프로그램 로직에 의해 액세스하기 위한 자격을 기억하는 자격 데이터 구조; 및
    자격 사용 정보를 기억하는 자격 사용 데이터 구조를, 포함하는 - 상기 처리 프로그램 로직은, 명령들의 시퀀스에서 적어도 하나의 명령의 실행에 응답하여, 자격 사용 정보에 따라, 목적지 데이터 구조에 기억되는 결과를, 자격 사용 정보가 자격 상태를 특정할 때, 그 결과를 자격으로서 발생하고 자격 데이터 구조를 목적지 데이터 구조로서 선택함으로써; 또한 자격 사용 정보가 비자격 상태를 특정할 때, 그 결과를 정수값으로서 발생하고 정수 데이터 구조를 목적지 데이터 구조로서 선택함으로써, 발생하기 위한 것이고, 상기 적어도 하나의 명령은 즉시값을 소스 오퍼랜드로서 지정하는 명령을 포함한다 -
    명령 실행 환경을, 제공하도록 호스트 데이터 처리장치를 제어하기 위한, 컴퓨터 판독 가능한 기억매체에 기억된, 컴퓨터 프로그램.
  23. 청구항 22에 따른 컴퓨터 프로그램을 기억하는 컴퓨터 판독 가능한 기억매체.
KR1020207002159A 2017-07-04 2018-06-20 명령들의 실행을 제어하는 장치 및 방법 KR102586257B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1710733.5 2017-07-04
GB1710733.5A GB2564130B (en) 2017-07-04 2017-07-04 An apparatus and method for controlling execution of instructions
PCT/GB2018/051717 WO2019008324A1 (en) 2017-07-04 2018-06-20 APPARATUS AND METHOD FOR CONTROLLING EXECUTION OF INSTRUCTIONS

Publications (2)

Publication Number Publication Date
KR20200021516A KR20200021516A (ko) 2020-02-28
KR102586257B1 true KR102586257B1 (ko) 2023-10-10

Family

ID=59592380

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207002159A KR102586257B1 (ko) 2017-07-04 2018-06-20 명령들의 실행을 제어하는 장치 및 방법

Country Status (9)

Country Link
US (1) US11119778B2 (ko)
EP (1) EP3649550B1 (ko)
JP (1) JP7445431B2 (ko)
KR (1) KR102586257B1 (ko)
CN (1) CN110799939B (ko)
GB (1) GB2564130B (ko)
IL (1) IL271142B2 (ko)
TW (1) TWI771441B (ko)
WO (1) WO2019008324A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2571996B (en) * 2018-03-16 2020-09-09 Advanced Risc Mach Ltd Branch target variant of branch-with-link instruction
TWI707272B (zh) * 2019-04-10 2020-10-11 瑞昱半導體股份有限公司 可執行指令的電子裝置以及指令執行方法
CN110704108B (zh) * 2019-08-30 2020-08-14 阿里巴巴集团控股有限公司 解释执行字节码指令流的方法及装置
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction
CN115220789B (zh) * 2022-06-24 2023-02-07 北京联盛德微电子有限责任公司 一种用于多寄存器的操作命令触发调度方法及单元

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017032969A1 (en) * 2015-08-27 2017-03-02 Arm Limited An apparatus and method for controlling instruction execution behaviour

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2059652B (en) * 1979-09-29 1983-08-24 Plessey Co Ltd Memory protection system using capability registers
DE69529544T2 (de) * 1994-04-28 2003-12-11 Sun Microsystems Inc Vorrichtung und Verfahren zum direkten Berechnen von Koordinaten eines abzuschneidenden Gebiets
GB2307072B (en) * 1994-06-10 1998-05-13 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
GB2480285A (en) * 2010-05-11 2011-11-16 Advanced Risc Mach Ltd Conditional compare instruction which sets a condition code when it is not executed
US8782380B2 (en) * 2010-12-14 2014-07-15 International Business Machines Corporation Fine-grained privilege escalation
US9672164B2 (en) * 2012-05-31 2017-06-06 Nxp Usa, Inc. Methods and systems for transitioning between a user state and a supervisor state based on a next instruction fetch address
US20140301719A1 (en) * 2013-04-08 2014-10-09 Broadcom Corporation Processing cache for multiple bit precisions
US9239801B2 (en) * 2013-06-05 2016-01-19 Intel Corporation Systems and methods for preventing unauthorized stack pivoting
US10235219B2 (en) 2015-07-27 2019-03-19 Sony Interactive Entertainment America Llc Backward compatibility by algorithm matching, disabling features, or throttling performance
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
GB2548604B (en) * 2016-03-23 2018-03-21 Advanced Risc Mach Ltd Branch instruction
GB2562102B (en) * 2017-05-05 2019-09-04 Advanced Risc Mach Ltd An apparatus and method for managing use of capabilities
GB2563009B (en) * 2017-05-25 2019-12-25 Advanced Risc Mach Ltd An apparatus and method for interpreting permissions associated with a capability
GB2563010B (en) * 2017-05-25 2019-12-25 Advanced Risc Mach Ltd An apparatus and method for managing a capability domain
US10860709B2 (en) * 2018-06-29 2020-12-08 Intel Corporation Encoded inline capabilities

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017032969A1 (en) * 2015-08-27 2017-03-02 Arm Limited An apparatus and method for controlling instruction execution behaviour

Also Published As

Publication number Publication date
TW201907296A (zh) 2019-02-16
EP3649550B1 (en) 2022-09-07
GB2564130B (en) 2020-10-07
KR20200021516A (ko) 2020-02-28
WO2019008324A1 (en) 2019-01-10
IL271142B1 (en) 2023-11-01
JP2020525934A (ja) 2020-08-27
GB201710733D0 (en) 2017-08-16
IL271142B2 (en) 2024-03-01
JP7445431B2 (ja) 2024-03-07
CN110799939A (zh) 2020-02-14
US20200201643A1 (en) 2020-06-25
US11119778B2 (en) 2021-09-14
TWI771441B (zh) 2022-07-21
GB2564130A (en) 2019-01-09
IL271142A (en) 2020-01-30
CN110799939B (zh) 2023-09-29
EP3649550A1 (en) 2020-05-13

Similar Documents

Publication Publication Date Title
JP6803376B2 (ja) 命令実行挙動を制御するための装置および方法
KR102586257B1 (ko) 명령들의 실행을 제어하는 장치 및 방법
KR102605793B1 (ko) 자격들의 이용을 관리하는 장치 및 방법
KR20180136976A (ko) 자격 메타데이터에 대해 연산을 행하는 장치 및 방법
KR102533823B1 (ko) 자격과 관련된 허가들을 해석하는 장치 및 방법
JP7349437B2 (ja) メモリ・アクセスにおける保護タグ・チェックの制御
JP2023512502A (ja) ケイパビリティベースの処理のための装置及び方法
US20240193101A1 (en) Technique for constraining access to memory using capabilities
TW202340955A (zh) 使用能力約束記憶體存取之技術
JP2024517627A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法

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
GRNT Written decision to grant