KR102547479B1 - 명령 세트의 변경을 제어하는 장치 및 방법 - Google Patents

명령 세트의 변경을 제어하는 장치 및 방법 Download PDF

Info

Publication number
KR102547479B1
KR102547479B1 KR1020207000431A KR20207000431A KR102547479B1 KR 102547479 B1 KR102547479 B1 KR 102547479B1 KR 1020207000431 A KR1020207000431 A KR 1020207000431A KR 20207000431 A KR20207000431 A KR 20207000431A KR 102547479 B1 KR102547479 B1 KR 102547479B1
Authority
KR
South Korea
Prior art keywords
pointer
identified
entitlement
processing circuitry
instruction set
Prior art date
Application number
KR1020207000431A
Other languages
English (en)
Other versions
KR20200013049A (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 KR20200013049A publication Critical patent/KR20200013049A/ko
Application granted granted Critical
Publication of KR102547479B1 publication Critical patent/KR102547479B1/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/30181Instruction operation extension or modification
    • 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
    • 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
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/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/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/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
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • 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)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Processing Or Creating Images (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)
  • Advance Control (AREA)

Abstract

명령 세트의 변경을 제어하는 장치 및 방법이 제공된다. 이 장치는, 명령 세트의 명령들을 실행하는 처리회로를 갖고, 이 처리회로는, 명령들을 실행할 때 처리회로에 의해 행해진 연산들을 제한하는데 사용되는 자격들을 포함하는 자격 도메인에서 동작하도록 구성된다. 프로그램 카운터 값을 결정하기 위해 처리회로에 의해 사용된 프로그램 카운터 자격을 기억하기 위해 프로그램 카운터 자격 기억 소자를 사용한다. 처리회로는 자격 기반의 메카니즘을 사용하여 명령 세트를 변경하도록 구성된다. 특히, 프로그램 카운터 자격 기억 소자 내부에 식별된 자격을 로드하는데 사용되는 적어도 한가지 종류의 명령의 실행에 응답하여, 처리회로는 자격 기반의 메카니즘을 호출함으로써, 식별된 자격에 대해 자격 검사 동작을 행하고, 자격 검사 동작을 통과하는 경우, 식별된 자격으로부터 명령 세트 식별자 필드에 의해 명령 세트가 식별되게 하도록 구성된다. 이것은 명령 세트가 변경되도록 허용하는 통제된 메카니즘을 제공하여, 명령 세트를 변경하려는 우연하거나 악의적인 시도의 위험을 줄인다.

Description

명령 세트의 변경을 제어하는 장치 및 방법
본 발명은 데이터 처리 분야에 관한 것이다.
지정된 처리에 대해 특정한 자격(capability)이 정의되고, 이 정의된 자격을 벗어나는 연산을 행하려는 시도가 존재하는 경우 에러를 유발할 수 있는 자격 기반의 아키텍처에 대한 관심이 증가하고 있다. 자격을 다양한 취할 수 있지만, 한가지 종류의 자격은 제한 포인터(bounded pointer)("팻 포인터(fat pointer)"로도 불린다)이다.
장치의 처리회로가 명령들의 시퀀스를 실행하도록 구성될 때, 자격들을 사용하여 이들 명령을 실행할 때 처리회로에 의해 행해지는 연산을 제한할 수 있다. 예를 들어, 이와 같은 접근방법에 의해, 특정한 자격과 관련된 범위 및 허가 정보를 고려하여 메모리 액세스가 제한되도록 보장함으로써, 처리회로에 의해 행해진 메모리 액세스를 효율적으로 감시할 수 있다. 이와 같은 접근방법은, 메모리에서 액세스된 데이터 뿐만 아니라, 명령이 실행을 위해 검색될 수 있는 어드레스 범위를 제한하는데 사용될 수 있다.
일부 프로세서는 다양한 명령 세트로부터의 명령을 실행할 수 있으므로, 현재의 명령 세트를 식별하기 위해 제어정보가 유지될 수 있는데, 이 제어정보는, 다른 명령 세트의 실행으로 동작을 전환하도록 결정될 때 변경된다.
그러나, 자격 기반의 아키텍처 내에서는, 명령 세트를 변경할 수 있는 능력이 자격의 사용을 통해 달성가능한 보안상의 이익을 잠재적으로 악화시킬 수 있다. 특히, 명령 세트를 변경하면, 메모리에서 페치된 명령 데이터의 해석이 변경되어, 메모리에 유지된 판독 전용 코드의 해석이 변경될 수 있다. 자격 기반의 시스템 내의 명령 세트를 변경하려는 우연하거나 악의적인 시도의 가능성을 방지하는 것이 바람직할 것이다.
일 구성예에서는, 명령 세트의 명령들을 실행하는 처리회로로서, 상기 명령들을 실행할 때 상기 처리회로에 의해 행해진 연산들을 제한하는데 사용되는 제한 포인터들을 포함하는 제한 포인터 도메인에서 동작하도록 구성되는 상기 처리회로-각 제한 포인터는 상기 제한 포인터를 사용할 때 허용 가능한 어드레스들의 범위를 지정하는 포인터 값과 범위 정보를 포함한다-와, 프로그램 카운터 값을 결정하기 위해 상기 처리회로에 의해 사용된 프로그램 카운터 제한 포인터를 기억하는 프로그램 카운터 제한 포인터 기억 소자를 구비하고, 상기 처리회로는 제한 포인터 기반의 메카니즘을 사용하여 명령 세트를 변경하도록 구성되고, 상기 프로그램 카운터 제한 포인터 기억 소자 내부에 식별된 제한 포인터를 로드하는데 사용되는 적어도 한가지 종류의 명령의 실행에 응답하여, 상기 처리회로는 상기 제한 포인터 기반의 메카니즘을 호출함으로써, 상기 식별된 제한 포인터에 대해 제한 포인터 검사 동작을 행하고, 상기 제한 포인터 검사 동작을 통과하는 경우, 상기 식별된 제한 포인터로부터 명령 세트 식별자 필드에 의해 명령 세트가 식별되게 하도록 구성된 장치가 제공된다.
또 다른 구성예에서는, 현재의 명령 세트의 명령들을 실행하는 처리회로로서, 상기 명령들을 실행할 때 상기 처리회로에 의해 행해진 연산들을 제한하는데 사용되는 제한 포인터들을 포함하는 제한 포인터 도메인에서 동작하도록 구성되는 상기 처리회로-각 제한 포인터는 상기 제한 포인터를 사용할 때 허용 가능한 어드레스들의 범위를 지정하는 포인터 값과 범위 정보를 포함한다-를 갖는 장치 내에서 명령 세트의 변경을 제어하는 방법으로서, 프로그램 카운터 값을 결정하기 위해 상기 처리회로에 의해 사용된 프로그램 카운터 제한 포인터를 프로그램 카운터 제한 포인터 기억 소자 내에 기억하는 단계와, 상기 프로그램 카운터 제한 포인터 기억 소자 내부에 식별된 제한 포인터를 로드하는데 사용되는 적어도 한가지 종류의 명령의 실행에 응답하여, 제한 포인터 기반의 메카니즘을 호출하여 상기 현재의 명령 세트의 변경을 제어하도록 상기 처리회로를 구성하는 단계를 포함하고, 상기 제한 포인터 기반의 메카니즘은, 상기 식별된 제한 포인터에 대해 제한 포인터 검사 동작을 행하는 과정과, 상기 제한 포인터 검사 동작을 통과하는 경우, 상기 식별된 제한 포인터로부터 명령 세트 식별자 필드에 의해 상기 명령 세트가 식별되게 하는 과정을 포함하는제어방법이 제공된다.
또 다른 구성예에서는, 명령 세트의 명령들을 실행하는 처리수단으로서, 상기 명령들을 실행할 때 상기 처리수단에 의해 행해진 연산들을 제한하는데 사용되는 제한 포인터들을 포함하는 제한 포인터 도메인에서 동작하는 상기 처리수단-각 제한 포인터는 상기 제한 포인터를 사용할 때 허용 가능한 어드레스들의 범위를 지정하는 포인터 값과 범위 정보를 포함한다-과, 프로그램 카운터 값을 결정하기 위해 상기 처리수단에 의해 사용된 프로그램 카운터 제한 포인터를 기억하는 프로그램 카운터 제한 포인터 기억 소자 수단을 구비하고, 상기 처리수단은 제한 포인터 기반의 메카니즘을 사용하여 명령 세트를 변경하고, 상기 프로그램 카운터 제한 포인터 기억 소자 내부에 식별된 제한 포인터를 로드하는데 사용되는 적어도 한가지 종류의 명령의 실행에 응답하여, 상기 처리수단은 상기 제한 포인터 기반의 메카니즘을 호출함으로써, 상기 식별된 제한 포인터에 대해 제한 포인터 검사 동작을 행하고, 상기 제한 포인터 검사 동작을 통과하는 경우, 상기 식별된 제한 포인터로부터 명령 세트 식별자 필드에 의해 명령 세트가 식별되게 하는 장치가 제공된다.
또 다른 구성예에서는, 전술한 제1 구성예의 장치에 대응하는 명령 실행 환경을 제공하도록 호스트 데이터 처리장치를 제어하는 컴퓨터 프로그램을 포함하는 가상머신 컴퓨터 프로그램이 제공된다. 일 실시예에서는, 가상머신 컴퓨터 프로그램을 기억하는 컴퓨터 판독가능한 기억매체가 제공된다.
이하, 다음의 첨부도면에 나타낸 실시예를 참조하여 본 발명을 더욱 상세히 설명한다.
도 1은 일 실시예에 따른 장치의 블록도이다.
도 2는 제한 포인터 기억 소자들의 세트 내부의 포인터 값을 설정하거나 액세스하려는 시도가 있는 경우에 에러가 유발되는 명령들의 종류의 예를 나타낸 것으로, 이 포인터 값을 사용하여 관련된 범위 정보에 의해 표시된 범위 외부의 어드레스를 지정한다.
도 3은 일 실시예에 따른, 제한 포인터와 관련된 태그 비트의 사용을 나타낸 것이다.
도 4는 일 실시예에 따라 자격 내부에 명령 세트 식별자 필드가 포함되는 방법을 개략적으로 나타낸 것이다.
도 5는 일 실시예에 따른, 명령 세트의 변경을 제어하는 자격 기반의 메카니즘을 구현하기 위해 행해진 스텝들을 나타낸 흐름도이다.
도 6은, 일 실시예에 따라, 프로그램 카운터 자격 기억 소자 내부에 자격을 로드하기 전에 자격 검사가 행해지는 상황에서, 명령 세트의 변경을 제어하는 자격 기반의 메카니즘의 더욱 더 상세한 내용을 제공하는 흐름도이다.
도 7은, 일 실시예에 따라, 프로그램 카운터 자격 기억 소자 내부에 자격을 로드한 후에 자격 검사가 행해지는 상황에서, 명령 세트의 변경을 제어하는 자격 기반의 메카니즘의 더욱 더 상세한 내용을 제공하는 흐름도이다.
도 8은 일 실시예에 따른 자격 검사 동작 중에 행해지는 스텝들을 나타낸 흐름도이다.
도 9a 및 도 9b는 프로그램 카운터 자격 기억 소자 내부에 자격을 로드하기 위해 분기 명령이 실행될 때 명령 세트 식별자 필드 정보를 사용하기 위한 2가지 대안적인 접근방법을 나타낸 것이다.
도 10은 일부 실시예에서는 명령 세트의 변경을 허용하는데 사용되는 예외 기반의 메카니즘을 나타낸 흐름도이다.
도 11은 사용될 수 있는 가상머신 구현에를 나타낸 것이다.
첨부도면을 참조하여 실시예를 설명하기 전에, 이하의 실시예의 상세한 설명이 제공된다.
전술한 것과 같이, 지정된 처리에 대해 특정한 자격이 정의되고, 이 정의된 자격을 벗어나는 연산을 행하려는 시도가 존재하는 경우 에러를 유발할 수 있는 자격 기반의 아키텍처에 대한 관심이 증가하고 있다. 자격을 다양한 취할 수 있지만, 한가지 종류의 자격은 제한 포인터(이것은 일 실시예에서는 포인터 값과 이와 관련된 범위 및 허가 정보를 포함한다)이다.
이와 같은 자격 기반의 아키텍처를 채용하는 장치는 보통 자격을 기억하는데 사용되는 기억 소자들(본 발명에서는 제한 포인터 기억 소자, 더욱 일반적으로는 자격 기억 소자로 불린다)을 갖는다. 기억 소자들은 레지스터(본 발명에서는 자격 포인터 레지스터 또는 자격 레지스터로 불린다)일 수 있으며, 및/또는 범용 메모리 내부의 메모리 위치, 예를 들어, 스택 메모리 상의 위치일 수 있다. 특정한 명령을 사용하여 이와 같은 기억 소자를 참조함으로써, 원하는 자격을 액세스하고, 이 자격에 따라 동작을 행할 수 있다. 예를 들어, 자격 포인터를 고려하면, 이와 같은 명령의 실행은 제한 포인터가 검색되게 할 수 있으며, 그후 그 내부에 있는 포인터 값을 사용하여 명령의 실행중에 필요한 메모리 내부의 어드레스를 유도할 수 있다. 포인터 값을 직접 사용하여 메모리 어드레스를 식별하거나, 포인터 값을 사용하여, 예를 들어, 포인터 값에 대한 오프셋의 가산에 의해, 메모리 어드레스를 유도해도 된다. 그후, 메모리 어드레스가 범위 정보에 의해 지정된 범위 내에 있고 허가 정보에서 지정된 허가가 만족하는 경우에, 동작의 진행이 허용된다.
따라서, 제한 포인터를 사용할 때, 포인터 값 그 자체는, 예를 들어, 액세스할 데이터 값 또는 실행을 위해 페치할 명령의 어드레스를 가리키거나 이 어드레스를 결정하는데 사용된다. 그러나, 범위 및 허가 정보를 참조하여, 예를 들어, 액세스된 어드레스가 허용가능한 범위 내에 있고 허용된 목적을 위해 액세스되도록 보장한다. 이것은, 예를 들어, 포인터로부터 결정된 어드레스가 보안 또는 거동의 기능적 정확성을 유지하기 위해 특정한 경계 내에 유지되도록 보장하기 위해 유용할 수 있다. 이와 같은 접근방법에 의해, 처리회로에 의해 행해진 메모리 액세스를 효율적으로 감시할 수 있다.
그러나, 복수의 명령 세트의 사용하는 시스템에서는, 명령 세트를 변경할 수 있는 능력이 자격의 이용을 통해 제공된 일부 보호를 잠재적으로 우회할 수도 있다. 특히, 명령 세트의 표시가 변경되면 메모리에서 페치된 명령 데이터의 해석이 다르게 된다. 따라서, 자격 기반의 아키텍처가 명령이 페치되는 어드레스의 범위를 제한하는 한편, 명령 세트를 변경하려는 우연하거나 악의적인 시도는 처리회로가 자격 기반의 아키텍처의 제약에 의해 허용되는 제1 명령 세트의 명령을 정당하게 페치하게 하지만, 그후 처리회로가 제2 명령 세트에 따라 이 페치된 명령을 해석하려고 시도하여, 잠재적으로 프로세서의 바람직하지 않은 동작 거동을 발생한다.
본 발명에서 설명하는 실시예는, 명령 세트를 변경하는 통제된 메카니즘을 제공하여, 명령 세트를 변경하려는 우연하거나 악의적인 시도의 가능성을 줄이려고 시도한다.
일 실시예에서, 장치는 명령 세트의 명령들을 실행하는 처리회로를 갖고, 처리회로는 명령들을 실행할 때 처리회로에 의해 행해진 연산을 제한하는데 사용되는 자격들을 포함하는 자격 도메인에서 동작하도록 구성된다. 자격 도메인은, 처리회로가 액세스가능한 자격 기억 소자에 현재 존재하는 자격과, 이들 자격 기억 소자에 유지된 자격을 통해 액세스가능한 또 다른 자격들의 세트를 포함한다. 자격 기억 소자 중 한가지는 프로그램 카운터 값을 결정하기 위해 처리회로에 의해 사용된 프로그램 카운터 자격을 기억하는데 사용되는 프로그램 카운터 자격 기억 소자이다. 그후, 프로그램 카운터 값을 사용하여 명령을 페치할 메모리 내부의 어드레스를 식별한다.
전술한 실시예에서는, 처리회로가 자격 기반의 메카니즘을 사용하여 명령 세트를 변경하도록 구성될 수 있다. 특히, 프로그램 카운터 자격 기억 소자 내부에 식별된 자격을 로드하는데 사용되는 적어도 한가지 종류의 명령의 실행에 응답하여, 처리회로는 자격 기반의 메카니즘을 호출하여 식별된 자격에 대해 자격 검사 동작을 행하도록 구성된다. 자격 검사 동작을 행한 결과로써, 자격 검사 동작을 통과하면, 이것은 명령 세트가 식별된 자격으로부터 명령 세트 식별자 필드에 의해 식별되게 한다.
이와 같은 자격 기반의 메카니즘을 채용한 결과로써, 처리회로가 명령을 실행하여 식별된 자격을 프로그램 카운터 자격 기억 소자 내부에 로드함으로써 프로그램 카운터 자격을 갱신하려고 시도할 때, 식별된 자격 내부의 명령 세트 식별자 필드가 이 명령 세트를 식별하는 것이 허용되기 전에, 자격 검사 동작을 통과하는 것이 필요하다. 따라서, 자격 검사 동작을 통과하면, 이 메카니즘은 명령 세트가 변경될 수 있게 하지만, 자격 검사 동작이 실패하면, 명령 세트의 이와 같은 갱신이 금지되고, 그 대신에, 예를 들어, 예외 발생하는 것에 의해, 또 다른 조치가 취해진다.
자격 검사 동작의 타이밍은 실시예에 따라 변동할 수 있다. 예를 들어, 예를 들어, 일 실시예에서, 처리회로는 식별된 자격을 프로그램 카운터 자격 기억 소자 내부에 로드하기 전에 이 식별된 자격에 대해 자격 검사 동작을 행하도록 구성된다. 이와 같은 접근방법의 결과로써, 식별된 자격이 프로그램 카운터 자격 기억 소자 내부에 로드하는 것을 허용할 것인지 여부를 결정하기 전에 자격 검사 동작을 통과하는지 실패하는지 알게 된다.
그러나, 또 다른 실시예에서, 처리회로는, 식별된 자격을 프로그램 카운터 자격 기억 소자 내부에 로드한 후 이 식별된 자격에 대해 자격 검사 동작을 행하도록 구성된다. 이와 같은 구성은, 식별된 자격을 프로그램 카운터 자격 기억 소자 내부에 로드하는 명령의 실행의 지연을 회피하면서, 자격 검사 동작이 행해지기 전에 갱신된 프로그램 카운터 자격에 의존하지 않도록 보장한다. 예를 들면, 다음 명령을 실행하자마자, 이것은 자격 검사 동작의 실행을 기동하여, 자격 검사 동작을 통과하는지 여부를 결정하기 전에 이 갱신된 프로그램 카운터 자격의 상세내용이 사용되지 않게 하고, 이에 따라 특히 자격 검사 동작을 통과한 것으로 결정되지 않는 경우, 식별된 자격으로부터 명령 세트 식별자 필드에 의해 표시된 것과 같이 변경된 명령 세트에 따라 페치된 명령을 해석하는 것이 방지된다.
자격 검사 동작의 실패의 검출시에 처리회로가 취하도록 구성된 다수의 조치가 존재하지만, 일 실시예에서, 처리회로는 예외를 발생하도록 구성된다. 일 실시예에서, 이것은, 예를 들어, 소프트웨어 예외 처리기가 자격 검사 동작의 실패와 관련된 특정한 정보를 기억하게 한 후, 적절한 에러 처리 루틴에 제어를 건네 명령 세트의 시도된 변경을 처리한다. 에러 처리 루틴은 다양한 스텝을 취할 수 있지만, 일 실시예에서는, 전술한 것과 같이 일 실시예에서는 명령 세트를 변경할 수 있는 능력을 엄격하게 제어하여, 자격의 사용에 의해 제공된 보호를 우회하려고 시도하는데 사용되는 명령 세트의 변경의 가능성을 금지하는 것이 매우 바람직하기 때문에, 일 실시예에서는 명령 세트의 변경을 야기하려고 한 어플리케이션을 종료하도록 선택한다.
일 실시예에서, 예외는 자격 검사 동작의 실패 검출에 응답하여 즉시 발생되지만, 또 다른 실시예에서는 플래그를 설정하여 자격 검사 동작의 실패를 식별하며, 플래그의 설정은 다음 명령을 실행하고자 할 때 예외가 발생되게 한다. 이것은 실패 상태가 검출되고 플래그가 설정되는 시간과 예외가 발생되는 시간 사이에 특정한 이벤트가 발생할 수 있게 한다. 예를 들어, 이것은 플래그 정보와 프로그램 카운터 자격(PCC) 정보를 유지하는 더 높은 우선도의 예외/인터럽트가 발생되게 한 후, 플래그를 소거하고 다른 프로그램 카운터 자격을 프로그램 카운터 자격 기억 소자 내부에 로드한다. 그후, 이 더 높은 우선도의 예외/인터럽트로부터의 복귀시에, 플래그 및 PCC정보가 복원되고, 다음 명령을 실행하려고 할 때, 설정된 플래그의 존재가 예외를 발생하게 한다.
식별된 자격을 프로그램 카운터 자격 기억 소자 내부에 로드하는데 사용되는 적어도 한가지 종류의 명령은 다양한 형태를 취할 수 있지만, 일 실시예에서, 이 명령은 분기 명령이므로, 처리회로가 식별된 자격을 지정하는 분기 명령을 실행함으로써 자격 기반의 메카니즘을 호출하도록 구성된다.
분기 명령은 다양한 형태를 취할 수 있다. 예를 들어, 이것은 소스 피연산자를 거쳐 식별된 자격을 명시적으로 식별하는 분기 명령이어도 된다. 예를 들어, 장치는 보통, 처리회로가 액세스가능하고, 명령들을 실행할 때 처리회로에 의해 행해진 연산을 제한하는데 사용된 자격들을 기억하도록 구성된 한 개 이상의 자격 기억 소자들을 포함한다. 그후, 분기 명령은 이들 자격 기억 소자들 중에서 한 개를 소스 피연산자로서 지정하고, 지정된 자격 기억 소자는 이 식별된 자격을 포함한다.
다른 실시예에서, 분기 명령은 식별된 자격을 암시적으로 식별한다. 예를 들어, 분기 명령은 식별된 자격을 형성하는 복귀 어드레스 자격을 프로그램 카운터 자격 기억 소자 내부에 로드하기 위해 실행되는 복귀 명령의 형태를 가져도 된다. 일반적으로, 복귀 어드레스 자격을 포함하는 디폴트 기억 소자가 존재하고, 일 실시예에서 이것은 자격 예외 링크 레지스터(CELR)로 불리기 때문에, 복귀 명령이 복귀 어드레스 자격을 명시적으로 식별할 필요는 없다.
자격 검사 동작은, 다양한 형태를 취할 수 있으므로, 예를 들어, 자격 검사 동작을 통과하는지 또는 실패하는지 결정하기 위해 자격 검사 동작의 수행중에 식별된 자격 내부의 다양한 다른 필드들이 참조된다. 예를 들어, 일 실시예에서, 처리회로는, 자격 검사 동작을 행할 때, 식별된 자격과 관련된 유효한 플래그를 검사함으로써, 식별된 자격이 유효한 자격이 아닌 경우에 자격 검사 동작을 통과하는 것을 금지한다. 따라서, 처리회로가 유효한 자격을 표시하지 않은 정보를 이용하여 프로그램 카운터 자격 기억 소자를 갱신하려고 시도할 때만, 이것은 자격 검사 동작이 실패하게 한다.
이와 달리, 또는 이에 덧붙여, 자격 검사 동작은 식별된 자격 내부에 설치된 한 개 이상의 허가 플래그들을 참조하도록 구성된다. 특히, 식별된 자격은 보통 식별된 자격과 관련된 한 개 이상의 허가의 상태를 식별하는데 사용되는 한 개 이상의 허가 플래그들을 포함한다. 예를 들어, 이 허가는 자격의 사용을 특정한 종류의 동작, 처리회로의 특정한 동작 모드 등으로 제한하는데 사용된다. 다양한 허가가 액세스되고 있는 다양한 종류의 정보와 연관되므로, 예를 들어, 액세스되고 있는 정보 그 자체가 자격인지 또는 정규 데이터 값인지에 따라 다양한 기록 및 판독 허가가 설정된다.
이와 같은 실시예에서는, 처리회로가, 자격 검사 동작을 행할 때, 한 개 이상의 허가 플래그들을 검사함으로써, 적어도 한 개의 허가가 소정의 상태에 있지 않으면 자격 검사 동작의 통과를 금지하도록 구성된다.
이와 같은 접근방법에 의해, 식별된 자격이 특정한 상태에서 적어도 한 개의 허가를 갖는 상황으로 명령 세트를 변경할 수 있는 능력을 제한하는 것이 가능하다. 일례로서, 적어도 한 개의 허가는, 식별된 자격이 프로그램 카운터 자격으로서 사용될 때 메모리에서 명령들을 페치하는데 사용되도록 허용되는지 여부를 식별하는데 사용되는 실행가능한 허가를 포함하고, 소정의 상태는, 식별된 자격이 메모리에서 명령들을 페치하는데 사용되도록 허용되는 것을 나타내고, 오버라이딩(overriding) 제어정보가 식별된 자격을 사용하여 메모리에서 명령들을 페치하는 것을 금지하게 하는 세트(set) 상태이다. 일 실시예에서, 실행가능한 허가가 클리어(clear) 상태라면, 이것은 프로그램 카운터 자격을 형성할 때 자격이 메모리에서 명령들을 페치하는데 사용되는 것이 금지되는 것을 식별할 것이다. 따라서, 이것은 자격이 프로그램 카운터 자격으로서 사용되는데 적합하지 않다는 것을 식별할 것이므로, 명령이 프로그램 카운터 자격 기억 소자 내부에 이 자격을 로드하려고 시도하는 경우, 자격 검사 동작이 일 실시예에서는 실패하여, 이 식별된 자격 내부의 명령 세트 식별자 필드의 콘텐츠가 명령 세트를 식별하는데 사용되는 것은 금지한다.
허가 플래그가 검사되는 방법의 또 다른 에로서, 적어도 허가는, 식별된 자격이 한 개 이상의 자격 수정 명령에 의해 수정가능한지 여부를 식별하는데 사용된 수정가능한 허가를 포함하고, 소정의 상태는 상기 한 개 이상의 자격 수정 명령들에 의해 자격이 수정불가능하다는 것을 나타내는 클리어 상태이다. 식별된 자격이 수정불가능한 것으로 표기되면, 이것은 (예를 들어, 특정한 특권 레벨에서 동작하는 프로세스에 의해) 자격이 확립되었을 때와 그후 (이 특권 레벨에 있지 않은) 프로세스가 이 자격을 프로그램 카운터 자격 내부에 로드하려고 시도할 때 사이의 시간에 명령 세트 식별자 필드의 콘텐츠가 부당하게 변경되지 않도록 하는 추가적인 재보증을 제공할 수 있다.
자격 검사 동작을 통과하는 상황에서, 식별된 자격으로부터 명령 세트 식별자 필드의 콘텐츠를 사용하여 명령 세트를 식별할 수 있는 다양한 방법이 존재한다. 일 실시예에서, 자격 검사 동작을 통과할 때, 처리회로는 명령 세트 식별자 필드를 포함하는 식별된 자격이 프로그램 카운터 자격 기억 소자 내부에 새로운 프로그램 카운터 자격을 형성하기 위해 사용되도록 구성된다. 따라서, 이와 같은 실시예에서는, 현재의 명령 세트가 프로그램 카운터 자격 내부의 관련된 명령 세트 식별자 세트의 콘텐츠에 의해 식별된다.
그러나, 또 다른 실시예에서는, 자격 검사 동작을 통과할 때, 처리회로는, 식별된 자격이 프로그램 카운터 자격 기억 소자 내부에 새로운 프로그램 카운터 자격을 형성하는데 사용되게 하도록 구성되지만, 명령 세트 식별자 필드에 대응하는 새로운 프로그램 카운터 자격 내부의 필드가 디폴트 값으로 설정된다. 처리회로는, 식별된 자격의 명령 세트 식별자 필드 내부의 값이 명령 세트 제어 기억소자 내부에 더 기록되게 하며, 명령 세트 제어 기억 소자 내부의 값을 사용하여 명령 세트를 결정한다. 따라서, 이와 같은 실시예에서는, 식별된 자격이 프로그램 카운터 기억 소자 내부에 로드될 때, 명령 세트 식별자 필드의 콘텐츠가 추출되어 명령 세트 제어 기억 소자 내부에 기록된다. 따라서, 이와 같은 실시예에서는, 현재의 명령 세트를 결정하는데 사용되는 것은 명령 세트 제어 기억 소자의 콘텐츠이다.
명령 세트 제어 기억 소자는, 다양한 형태를 취할 수 있지만, 일 실시예에서는, 현재 프로세서 상태 레지스터(CPSR) 내부의 필드에 의해 제공된다.
일 실시예에서, 명령 세트를 변경하는 전술한 자격 기반의 메카니즘은 명령 세트가 변경될 수 있게 하기 위해 제공되는 유일한 메카니즘이다. 그러나, 또 다른 실시예에서, 처리회로는 명령 세트를 변경하는 예외 기반의 메카니즘을 더 제공하고, 예외 기반의 메카니즘의 호출시에, 처리회로는, 신뢰된 소프트웨어가 실행되어 예외로부터의 복귀시에 사용할 명령 세트를 식별하는 복귀 상태를 확립하는 소정의 상태로 예외를 발생하도록 구성된다. 따라서, 이와 같은 접근방법에 의해, 신뢰된 예외/예외 복귀 메카니즘을 사용하여 신뢰된 소프트웨어의 사용을 기동하여 명령 세트를 수정하는 것이 가능하다.
명령 세트를 변경하기 위해 한 개 이상의 추가적인 통제된 메카니즘이 제공될 수 있지만, 특정한 일 실시예에서, 처리회로는, 자격 기반의 메카니즘 또는 예외 기반의 메카니즘을 사용해서만 명령 세트가 변경될 수 있게 하도록 제약을 받는다. 명령 세트가 변경될 수 있는 방법을 엄격하게 제한함으로써, 이것은 자격의 사용을 통해 설치된 한 개 이상의 보안 조치를 잠재적으로 우회할 수 있는 명령 세트를 변경하려고 하는 우연하거나 악의적인 시도에 대해 증가된 허용성을 제공한다.
이하 특별한 실시예들에 대해서 도면들을 참조하여 설명하겠다.
도 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)는, 그 자격이 기억되는 데이터 블록과 관련지어 세트될 것이다. 이러한 해결방법에 의해, 자격과 통상의 데이터를 구별함에 따라서, 통상의 데이터가 자격으로서 사용될 수 없도록 보장하는 것이 가능하다.
일 실시예에서, 장치는 다양한 예외 레벨에서 동작하도록 구성되고, 이때 각각의 예외 레벨은 서로 다른 소프트웨어 실행 특권을 갖는다. 더구나, 예외 메카니즘을 사용하여 복수의 예외 레벨들 사이에서 천이한다. 그러나, 일 실시예에서는, 모든 예외가 예외 레벨을 변경하게 하지는 않는다.
도 1에 도시된 것과 같이, 장치(10)는 그것의 동작중에 처리회로가 참조하는 다양한 제어 및 상태 정보를 기억하는 다양한 제어/상태 레지스터(70)에 액세스하며, 제어/상태 레지스터(70)는 예외 처리중에 사용되는 다양한 레지스터들을 포함한다.
도 1에 도시된 것처럼, 현재의 프로세스 상태(74)는, 상기 프로세서의 현재의 동작에 관한 다양한 실행 상태 정보를 포착(capture)하도록 상기 제어/상태 레지스터들(70)내에 유지된다. 단일의 박스(74)로서 도시되어 있지만, 현재의 프로세스 상태는, 반드시 단일의 레지스터내에 모두 기억되지는 않을 것이지만, 이용 가능한 제어/상태 레지스터들(70)내의 다수의 제어 및 상태 레지스터들내에 기억되어도 된다.
동작 동안에, 예외는, 다양한 상이한 메카니즘, 예컨대, 인터럽트, 시스템 호출, 고장 등으로 기동될 수도 있다. 일 실시예에 따라, 예외가 취해질 때, 예외 진입 메카니즘은 상기 전환동작의 일부로서 기동되고, 이 프로세스 동안에 현재의 프로세스 상태(74)는 보존된 프로세스 상태(72)로서 포착된다. 또, 그 보존된 프로세스 상태(72)는, 단일의 레지스터내, 또는 다수의 레지스터들내에 기억되어도 된다. 그 후, 예외 핸들링 동작은, 상기 처리 회로소자에 의해 그 예외를 처리하도록 수행된다. 이어서, 상기 처리 회로소자가 상기 예외로부터 복귀할 때, 보존된 프로세스 상태는, 현재의 프로세스 상태로 복원되는 것에 의해, 상기 처리 회로소자는 예외가 취해지기 전에 수행중이었던 동작들을 계속할 수 있다.
상기 처리 회로소자의 실행 상태가 다수의 예외 레벨들에 대해 유지되는 것을 가능하게 하기 위해서, 별도의 보존된 프로세스 상태 레지스터들(SPSRs)(72)과 현재의 프로세스 상태 레지스터들(CPSRs)(74)은, 원하는 경우 예외 레벨들의 배수에 대해 유지될 수 있다.
예외 진입시, 프로그램 카운터 자격 레지스터(80)는 자격 제어 기억 소자(79) 내부에 기억된 예외 진입 어드레스 자격 정보를 사용하여 갱신된다. 특히, 레지스터(79)는 예외 진입시 사용할 적절한 어드레스에 대한 정보와, PCC 레지스터(80) 내부에 기억할 프로그램 카운터 자격을 형성하기 위해 이 어드레스 이외에 제공되는 관련된 자격 정보를 기억한다. 레지스터(79) 내부의 예외 진입 어드레스 정보는, 다양한 형태를 취할 수 있지만, 일 실시예에서 레지스터(79)는 자격 벡터 기준 어드레스 레지스터(CVBAR)의 형태를 취한다. 이 레지스터는 예외 진입에 대한 기준 어드레스를 제공하고, 예외는 예외 종류에 따라 이 기준 어드레스로부터의 오프셋을 결정한다. 따라서, 예외의 종류에 대한 정보를 사용하여 PCC 레지스터(80) 내부에 로드된 프로그램 카운터 자격을 형성하는데 사용할 적절한 어드레스를 식별하고, PCC 레지스터에 대한 자격 정보의 나머지 부분은 CVBAR 내부의 자격의 대응하는 부분으로부터 형성된다.
전술한 것과 같이, 예외 발생시에, 현재의 프로세스 상태(74)가 보존된 프롯스 상태로서 캡처된다. 더구나, PCC 레지스터(80) 내부에 기억된 현재의 프로그램 카운터 자격을 사용하여 바람직한 복귀 어드레스 자격을 식별한다. 바람직한 복귀 어드레스는 예외의 종류에 의존하지만, 보통 프로그램 카운터 값이거나, 명령 사이즈만큼 증분된(예를 들어, 바이트 사이즈의 어드레싱 및 32비트 명령을 가정하면 4만큼 증분된다) 프로그램 카운터 값이다. 바람직한 복귀 어드레스 이외에, 현재의 프로그램 카운터 자격으로부터의 나머지 자격 정보는 PCC에서 발생된 복귀 어드레스 자격 내부에 복사된다. 일 실시예에서, 이와 같은 방법으로 생성된 복귀 어드레스 자격은, 특정한 실시예에서는 자격 예외 링크 레지스터(CELR)(78)인 전용의 복귀 어드레스 자격 레지스터에 기억된다. 나중에 예외로부터 복귀시에, CELR 레(78)의 콘텐츠가 PCC 레지스터(80) 내부에 복원되고, 더구나 SPSR 레지스터(72)의 콘텐츠가 해당 예외 레벨에 대한 CPSR 레지스터(74) 내부에 복원될 수 있다.
전술한 것과 같은 자격 기반의 시스템의 사용은 시스템의 거동의 보안과 기능적 정확성을 상당히 향상시킬 수 있다. 예를 들어, 이와 같은 접근방법의 사용을 통해, 처리회로에 의해 행해진 메모리 액세스를 효율적으로 감시하여, 실행을 위해 메모리 내에서 페치된 명령들과 이들 명령을 실행할 때 프로세서에 의해 처리되는 데이터 값 모두를 제어하는 것이 가능하다. 그러나, 전술한 것과 같이, 일부 시스템은 복수의 명령 세트로부터의 명령의 실행을 허용하고, 이때 제어 상태가 사용되고 있는 현재의 명령 세트를 식별하도록 유지되므로, 실행을 위해 명령을 디코드할 때 메모리에서 페치된 명령 데이터가 해석되어야 하는 방법을 식별한다. 메모리에 유지된 판독 전용 코드의 해석시 변경을 가능하게 하기 때문에, 명령 세트를 변경하려는 우연하거나 악의적인 시도가 자격의 사용에 의해 제공된 보호의 일부를 우회할 수도 있다. 본 발명에서 설명하는 실시예는, 이와 같은 위험을 경감하기 위해, 이와 같은 장치 내부에서 명령 세트가 변경될 수 있는 방식을 엄격하게 제어하는 메카니즘을 제공한다.
도 4는 명령 세트 식별자 필드로서의 역할을 하는 추가적인 필드로 자격이 보완되는 방법을 나타낸 것이다. 특히, 본 실시예에서 자격(150)은 제한 포인터인 것으로 가정하므로, 포인터 값(158), 이와 관련된 범위 및 허가 필드 156 및 154를 각각 갖는다. 관련된 정보가 유효한 자격을 나타내는지 아닌지를 표시하기 위해 태그 비트(152)가 더 설치된다. 허가 필드(154) 내부에 인코딩된 허가는 이들 필드 내부에 설치된 다수의 허가 플래그들의 상태에 의해 결정될 수 있어, 허가 플래그들의 값을 사용하여 한 개 이상의 허가의 상태를 판정한다. 이들 허가는, 다양한 형태를 취할 수 있지만, 일 실시예에서는, 적어도, 프로그램 카운터 자격으로서 사용될 때, 관련된 자격이 메모리에서 명령을 페치하는데 사용되는 것이 허용되는지 여부를 식별하는 실행가능한 허가와, 관련된 자격이 한 개 이상의 자격 수정 명령에 의해 수정가능한지 여부를 식별하는데 사용되는 수정가능한 허가를 포함한다. 일 실시예에서, 허가는 이 허가에 영향을 미치는 다른 제어 정보와 결합하여 해석될 필요가 있다. 따라서, 일 실시예에서는, 허가가 클리어 상태에 있으면, 이것은 이 허가가 자격에 대해 내려지지 않는다는 것을 나타낸다. 그러나, 허가가 세트 상태에 있으면, 이것은 일 실시예에서는 허가가 내려져 이 허가를 내리는데 영향을 미칠 수 있는 오버라이딩 제어정보를 받는다는 것을 나타낸다.
도 4에 더 나타낸 것과 같이, 명령 세트를 식별하기 위해 필드 160이 설치될 수 있다. 이 필드의 사이즈는 지원된 명령 세트들의 수에 의존하지만, 예를 들어 단지 2개의 지원된 명령 세트가 존재하는 경우에는, 2개의 명령 세트들 각각이 식별될 수 있도록 하기 위해서는 단일 비트 필드가 충분하다.
명령 세트 식별자 필드는 별개의 전용 필드이어도 되지만, 일 실시예에서, 이것은 포인터 값 필드의 한 개 이상의 최하위 비트들로 구성될 수 있다. 예를 들어, 포인터 값에 대한 메모리 정렬 제약으로 인해, 포인터 값의 한 개 이상의 최하위 비트가 사용되지 않을 수도 있으므로, 이들 사용되지 않은 비트를 사용하여 명령 세트 식별자 필드를 제공할 수 있다.
일 실시예에서, 명령 세트 식별자 필드 값은 관련이 없는 한편, 자격은 범용 자격 레지스터들(60) 중에서 한 개 내부의 범용 자격이다. 그러나, 자격을 PCC 레지스터(80) 내부에 로드하여 새로운 프로그램 카운터 자격을 형성하려고 할 때, 이 자격이 새로운 프로그램 카운터 자격으로서 사용되는 경우 적용되는 명령 세트를 식별하기 위해 명령 세트 식별자 필드 정보를 사용할 수 있다. 따라서, 이것은 명령 세트가 변경되게 할 수 있는 간단한 메카니즘을 제공한다.
그러나, 명령 세트를 지정하기 위해 이와 같은 명령 세트 식별자 필드를 사용하는 것이 오남용에 강건하도록 보장하기 위해, 명령 세트를 사용하여 식별된 자격을 PCC 레지스터(80) 내부에 로드할 때마다, 식별된 자격으로부터 명령 세트 식별자 필드 정보를 사용하여 명령 세트를 변경할 수 있도록 하기 전에, 자격 기반의 메카니즘을 호출하여, 식별된 자격에 대해 자격 검사 동작을 행한다.
도 5는 명령 세트의 변경을 제어하기 위해 일 실시예에서 사용된 자격 기반의 메카니즘의 개관을 제공하는 흐름도이다. 일 실시예에서, 특정한 종류의 명령이 프로그램 카운터 자격 레지스터(8) 내부에 식별된 자격을 로드하려고 시도할 때 자격 기반의 메카니즘이 기동된다. 특히, 자격 기반의 메카니즘은 이 용도를 위해 분기 명령이 사용될 때 기동된다. 따라서, 스텝 200에서, 분기 명령이 프로세서에 시행될 것인지 판정하는데, 이때 이 분기 명령은 자격을 지정한다. 분기 명령은 자격 레지스터들(60)의 세트 내부의 소스 자격 레지스터를 구체적으로 식별하며, 이 소스 자격 레지스터는 PCC 레지스터(80) 내부에 로드할 식별된 자격을 포함한다. 그러나, 스텝 200에서 다른 형태의 분기 명령이 검출되어도 된다. 예를 들어, 이전의 예외 발생 이후에 이전의 코드로 복귀하는데 사용되는 복귀 명령은, 이것이 PCC 레지스터(80)를 식별된 자격으로 갱신되게 하기 때문에, 스텝 200에서 검출되어야 하는 종류의 분기 명령인 것으로 생각될 수도 있다. 복귀 명령의 예에서는, 식별된 자격을 포함하는 레지스터가 복귀 명령으로부터 암시되므로, 이 레지스터가 명시적으로 식별될 필요는 없다. 특히, 일 실시예에서는, 복귀 명령이 CELR 레(78)의 콘텐츠가 PCC 레지스터(80) 내부에 로드되게 한다.
프로그램 카운터 자격 레지스터 내부에 식별된 자격을 로드하는데 사용되는 분기 명령이 실행될 것으로 식별되면, 스텝 205로 처리를 진행하여, 식별된 자격에 대해 자격 검사 동작이 행해진다. 도 6 및 도 7을 참조하여 후술하는 것과 같이, 자격 검사 동작의 수행의 타이밍은 실시예에 따라 변경될 수 있다. 예를 들어, 이것은 PCC 레지스터 콘텐츠를 갱신하기 전에, 또는 이들 콘텐츠가 갱신된 후에 행해져도 된다. 그러나, 일 실시예에서는, 어떤 접근방법이 취해지는가에 무관하게, 자격 검사가 행해져, 자격 검사가 행해져 통과한 것으로 판정될 때까지, 갱신된 프로그램 카운터 자격과 이와 관련된 명령 세트 식별자 정보에 따라 어떤 조치도 취해지지 않는다.
스텝 205에서의 자격 검사 동작의 수행 후에, 스텝 210에서 검사 동작을 통과하였는지 아닌지 판정한다. 통과한 경우에는, 스텝 215로 처리를 진행하여, 식별된 자격으로부터 새로운 유효한 프로그램 카운터 자격의 형성이 허용되고, 더구나 식별된 자격으로부터 명령 세트 식별자 필드를 사용하여 명령 세트가 결정된다. 도 9a 및 도 9b를 참조하여 더욱 상세히 후술하는 것과 같이, 명령 세트 식별자 필드의 콘텐츠는 프로그램 카운터 자격 내부로 복사되거나, 그 대신에 추출되어 별개의 제어 레지스터 내부에 기억될 수 있다.
스텝 210에서 자격 검사를 통과하지 않은 것으로 판정되면, 스텝 220으로 처리를 진행하여 소정의 조치가 취해진다. 소정의 조치는 다양한 형태를 취할 수 있지만, 일 실시예에서는 자격 검사 동작이 실패한 것으로 판정시에 곧바로 예외를 발생하는 것을 포함한다. 이와 달리, 예외 발생이 지연되고, 그 대신에 적절한 시기에 실행되는 다음 명령에 의해 기동된다.
도 6은, 식별된 자격을 PCC 레지스터(80) 내부에 로드하기 전에 자격 검사 동작이 행해지는 실시예를 더욱 상세히 나타낸 흐름도이다. 스텝 250에서, 소스 레지스터 내부에 존재하는 식별된 자격에 대해 자격 검사 동작이 행해진다. 그후, 스텝 255에서 자격 검사 동작을 통과하는지 아닌지 판정한다. 통과하는 경우에는, 스텝 260으로 처리를 진행하여, PCC 레지스터(80)의 콘텐츠를 갱신하고, 그후 식별된 자격으로부터의 명령 세트 식별자 필드가 명령 세트를 표시하기 위해 사용되도록 하기 위해 분기 동작의 완료가 허용된다. 따라서, 명령 세트 식별자 내부의 정보가 분기 동작의 실행 전에 명령 세트를 식별하는 정보와 다른 경우에는, 이와 같은 메카니즘에 의해 명령 세트가 변경될 것이라는 것을 알 수 있다. 그후, 새롭게 식별된 명령 세트에 따라 페치된 명령이 디코드된다.
스텝 255에서 테스트에 실패하면, 일 실시예에서 이것은 스텝 270에서 즉시 예외 발생을 포함한다. 그러나, 다른 실시예에서는, 일정한 기간 동안 예외 발생을 지연시킬 수 있다. 따라서, 스텝 265에서, 예외 발생을 지연시켜야 하는지 아닌지 판정한다. 지연시키지 않는 경우에는, 스텝 270에서 예외가 곧바로 발생된다.
그러나, 예외를 지연하는 경우에는, 스텝 275로 처리를 진행하여, 플래그를 세트하여 자격 검사 동작의 실패 상태를 식별한다. 플래그가 세트될 수 있는 다양한 방법이 존재한다. 예를 들어, 자격 검사 동작의 실패 상태를 식별하기 위해 세트되는 제어 레지스터 내부의 전용 제어 필드가 존재할 수도 있다. 이와 달리, 스텝 280에서 분기 동작이 완료하는 것으로 허용될 때 식별된 자격을 사용하여 생성되는 프로그램 카운터 자격의 일부 속성이 변경되어, 이 속성을 사용하려는 시도가 행해질 때 갱신된 PCC가 예외를 유발한다. 특정한 예로서, PCC 레지스터 내부에 기억되는 갱신된 PCC에 태그 비트가 소거되어, PCC 레지스터가 유효한 자격을 기억하지 않는다는 것을 나타낸다.
분기 명령이 스텝 280에서 완료하는 것이 허용되고, 그 결과 PCC 콘텐츠가 갱신되고, 식별된 자격으로부터 명령 세트 식별자 필드를 사용하여 명령에 대한 정보가 갱신된다. 스텝 285에서, 다음 명령을 실행할 것인지 여부를 판정하고, 실행하는 경우에는 스텝 290으로 처리를 진행하여 플래그가 세트되는지 판정한다. 플래그가 세트되는 것으로 가정하면, 스텝 292에서 예외가 발생되고 플래그가 소거된다. 그러나, 플래그가 세트되지 않으면, 스텝 294에서 명령이 실행되는 것이 허용된다.
플래그 메카니즘을 사용하여, 플래그가 세트되는 시간과 예외가 발생되는 시간 사이에 특정한 이벤트가 발생하게 할 수 있다. 예를 들어, 이것은 플래그 정보와 프로그램 카운터 자격 정보를 보정한 후, 플래그를 소거하고 다른 프로그램 카운터 자격을 프로그램 카운터 자격 레지스터(80)에 로드하는 더 높은 우선도의 예외/인터럽트가 취해질 수 있도록 한다. 그후, 이 더 높은 우선도의 예외/인터럽트로부터의 복귀시에, 플래그와 PCC 정보가 복원되고, 다음 명령을 실행할 때, 세트된 플래그의 존재가 예외를 발생하게 한다.
스텝 270 또는 스텝 292에서 예외가 발생되면, 소프트웨어 예외 처리기가 적절한 에러 처리 루틴에게 제어를 건네 명령 세트 내부의 시도된 변경을 취급한다. 에러 처리 루틴이 취할 수 있는 다수의 스텝이 존재한다. 그러나, 일 실시예에서는, 자격 검사 동작을 통과하지 않은 자격을 사용하여 명령 세트를 변경하기 위한 시도가 행해졌다는 사실로 인해 예외 발생이 일어났기 때문에, 분기 명령을 실행하게 한 어플리케이션을 종료하는 것이 적절한 것으로 생각된다. 이와 달리, 예외 처리 루틴은 추가적인 검사 및/또는 정화(clean up) 동작을 행함으로써, 분기 연산의 완료에 의해 명령 세트가 변경되게 허용하는 것이 안전하다는 것을 보장하도록 구성된다.
도 7은, 식별된 자격을 PCC 레지스터(80) 내부에 로드한 후 자격 검사 동작을 행하는 도 6의 대안적인 접근방법을 나타낸 흐름도이다. 따라서, 스텝 300에 나타낸 것과 같이, 분기 동작의 완료가 허용되고, 이 결과 PCC 레지스터 콘텐츠가 식별된 자격을 사용하여 갱신되고, 더구나 식별된 자격으로부터의 명령 세트 식별자 필드를 사용하여 명령 세트를 표기한다.
그후, 스텝 305로 처리를 진행하여, 다음 명령을 실행할 것인지 식별되고, 실행하는 경우에는 스텝 310으로 처리를 진행하여, PCC 레지스터에 존재하는 형태로 식별된 자격에 대해 자격 동작이 행해진다. 스텝 315에서 자격 검사가 통과한 것으로 생각되면, 스텝 320으로 처리를 진행하여, 처리가 새로운 유효한 프로그램 카운터 자격이 식별된 자격으로부터 형성될 수 있도록 하고, 또한 식별된 자격으로부터 명령 세트 식별자 필드를 사용하여 명령 세트가 결정될 수 있게 한다. 그러나, 스텝 315에서 자격 검사 동작이 실패한 것으로 판정되면, 스텝 325로 처리를 진행하여, 예외가 발생된다. 그후, 예외는 도 6의 스텝 270 또는 292에 대해 전술한 것과 동일한 방법으로 처리된다.
자격 검사 동작은 다양한 형태를 취할 수 있지만, 일 실시예를 도 8의 흐름도에 나타낸다. 스텝 350에서, 식별된 자격이 유효한지 여부를 판정한다. 일 실시예에서는, 이것은 태그 비트의 값을 참조하여 결정될 수 있다, 특히, 태그 비트가 세트되면 식별된 자격이 유효한 자격인 것으로 생각되는 반면에, 태그 비트가 클리어이면 자격이 유효하지 않은 것으로 가정된다. 식별된 자격이 유효하지 않은 것으로 판정되면, 스텝 370으로 처리를 진행하여, 자격 검사가 실패한 것으로 표시된다.
그러나, 식별된 자격이 유효한 것으로 밝혀지면, 일 실시예에서는 관련된 자격에 대해 제공된 한 개 이상의 허가를 참조하여 한 개 이상의 추가 검사가 행해질 수 있으며, 이들 허가의 상태는 자격의 허가 필드 내부에 유지된 한 개 이상의 허가 플래그들의 값을 참조하여 결정된다.
예를 들어, 일 실시예에서는, 스텝 355에서, 자격과 관련된 수정가능한 허가가 클리어 상태에 있는지 판정한다. 특히, 허가 플래그를 사용하여 수정가능한 허가를 인코드하고, 수정가능한 허가가 클리어 상태에 있을 때, 이것을 사용하여 관련된 자격이 한 개 이상의 자격 수정 명령에 의해 수정가능하지 않다는 것을 나타낸다. 따라서, 이것은, 수정불가능 것으로 표기된 후 자격의 속성에서 조정을 금지함으로써, 이 특정한 자격에 대한 향상된 보안을 제공할 수 있다. 예를 들어, 처리회로는 이 제한 포인터에 의해 처리장치에 제공된 자격을 증가시키려고 시도하기 위해 제한 포인터와 관련하여 정규 동작에서 범위를 확장하거나 허가 플래그를 설정할 수 없지만, 제한 포인터가 수정불가능한 것으로 표기되기 않으면, 처리회로가 제한 포인터와 관련된 범위를 줄이거나 및/또는 허가 플래그를 소거하는 조치를 취하는 것이 가능하다. 그러나, 자격이 수정불가능한 것으로 표기되는 경우, 처리회로는 이와 같은 조정을 행할 수 없게 된다.
역으로, 수정가능한 허가가 세트 상태에 있는 경우, 이와 같은 수정을 금지하는 오버라이딩 제어정보가 존재하지 않는다면, 이것은 처리회로가 범위를 줄이고 및/또는 특정한 허가 플래그를 클리어하는 것이 허용된다는 것을 나타낸다.
자격 검사 동작의 일 실시예에서는, 스텝 355로 나타낸 것과 같이, 수정가능한 허가가 클리어 상태에 있지 않으면, 자격 검사가 실패한 것으로 판정된다. 특히, 본 실시예에서는, PCC 레지스터에 수정불가능한 자격을 로드한 결과로써 명령 세트의 변경이 발생되는 것만 허용하는 것이 적절할 것으로 결정되는데, 이것은 자격이 현재 프로세스에 의해 사용하기 위해 제공된 이후에 명령 세트 식별자 필드의 콘텐츠가 변경되지 않았다는 것에 대한 추가적인 재보증을 제공하기 때문이다.
따라서, 도 8에 도시된 실시예에서는, 수정가능한 허가가 클리어 상태에 있는 경우에만, 자격 검사가 통과한 것으로 판정되는 상황을 향해 처리가 진행할 수 있다. 일 실시예에서는, 추가적인 검사가 필요하지 않으므로, 수정가능한 허가가 클리어 상태에 있는 것으로 판정되면, 스텝 365로 처리가 직접 진행하여, 자격 검사가 통과한 것으로 판정한다. 그러나, 또 다른 실시예에서는, 예를 들어, 허가 플래그에 의해 인코드된 한 개 이상의 다른 허가의 상태를 고려하여, 한 개 이상의 추가적인 검사가 행해진다. 예를 들어, 박스 360으로 나타낸 것과 같이, 실행가능한 허가가 세트 상태에 있는지 판정한다. 실행가능한 허가는 자격과 관련되지만, 자격이 프로그램 카운터 자격 레지스터 내부에 로드될 때에만 관련성을 갖는다. 특히, 실행가능한 허가는 프로그램 카운터 자격을 형성할 때 이 자격이 메모리에서 명령을 페치하는데 사용되는 것이 허용되는지 여부를 식별한다. 따라서, PCC 레지스터 내부의 자격이 클리어 상태에 있는 실행가능한 허가를 가지면, 이것은 자격이 메모리에서 명령을 페치하는데 사용되는 것이 금지된다는 것을 나타낸다. 따라서, 이것은 분기 명령을 사용하여 프로그램 카운터 자격으로서 사용되도록 의도되지 않은 자격을 PCC 레지스터(80) 내부에 로드하려고 시도한다는 것을 나타낸다. 따라서, 실행가능한 허가가 클리어 상태 있으면, 스텝 370으로 처리를 진행하여, 자격 검사가 실패한 것으로 생각된다.
역으로, 실행가능한 허가가 세트 상태에 있어, 오버라이딩 제어정보가 사용을 금지하지 않으면 자격을 사용하여 메모리에서 명령을 페치하는 것이 허용된다는 것을 나타내는 경우, 스텝 365로 처리를 진행하여 자격 검사가 통과한 것으로 판정한다.
도 9a 및 도 9b는 자격 검사가 통과한 것으로 판정된 상황에서 분기 명령을 실행할 때 명령 세트 식별자 필드 정보를 사용하기 위한 2가지 옵션을 나타낸 것이다. 전술한 설명으로부터 알 수 있는 것과 같이, 자격 검사가 통과한 것으로 판정되는 상황에서는, 소스 자격 레지스터 CN 내부의 자격을 사용하여 PCC 레지스터(80) 내에 새로운 프로그램 카운터 자격을 형성한다. 도 9a의 옵션 1에 나타낸 것과 같이, 소스 자격 레지스터 CN 내부의 식별된 자격(400)이 PCC 레지스터 내부에 복사되어 새로운 PCC(410)를 형성한다. 본 실시예에서는, 식별된 자격(400) 내부의 명령 세트 식별자 필드(405)도 PCC 레지스터 내부에 복사되어, 갱신된 프로그램 카운터 자격(410) 내부에 새로운 필드(415)를 형성한다. 그후, 본 실시예에서는 처리회로가 PCC 레지스터의 필드 145 내부의 값을 이용하여 명령 세트를 식별한다. 따라서, 식별된 자격(405) 내부의 명령 세트 식별자가 분기 명령이 실행되기 전에 사용되는 명령 세트와 다른 명령 세트를 지정하는 겨우, 분기 명령이 실행되어 PCC 레지스터(80) 콘텐츠가 갱신되면, 필드 415 내부의 갱신된 정보로 인해 명령 세트의 변경이 발생하게 된다.
도 9b는 소스 자격 레지스터 CN 내부의 식별된 자격(420)이 마찬가지로 기본적으로 PCC 레지스터(80) 내부에 복사되어 새로운 프로그램 카운터 자격(435)을 생성하는 또 다른 실시예를 나타낸 것이다. 그러나, 본 실시예에서는, 식별된 자격(420) 내부의 명령 세트 식별자(425)가 추출되어 PCC 레지스터(80)와 별개로 설치된 명령 세트 제어 레지스터(430) 내에 기억된다. 본 실시예에서는, 그렇지 않았다면 명령 세트 식별자 필드와 일치하였을 PCC의 필드 440 내부에 디폴트 값이 기록된다. 일 실시예에서는, PCC(435)를 사용할 때 필드 440 내부의 값이 참조되지 않으므로 임의의 원하는 값으로 설정될 수 있다.
일 실시예에서, 명령 세트 제어 레지스터(430)는 명령 세트 정보를 기억하는 별개의 전용 레지스터이다. 그러나, 또 다른 실시예에서는, 이것이 기존의 레지스터, 예를 들어 현재 프로세스 상태 레지스터(들)(74) 내부의 필드에 의해 제공될 수 있다.
일 실시예에서, 전술한 자격 기반의 메카니즘은 명령 세트를 변경하는 것이 허용되는 유일한 메카니즘이다. 그러나, 다른 실시예에서는, 명령 세트의 변경을 허용하는 또 다른 메카니즘으로서 추가적인 예외 기반의 메카니즘이 제공된다. 이 처리를 도 10에 개략적으로 나타낸다. 스텝 450에서, 예외가 발생됨으로써, 프로세서가 스텝 455에서 소정의 상태로 천이한다. 예외는, 예를 들어, 예외가 발생되는 프로세스보다 더 높은 레벨의 소프트웨어 실행 특권을 갖는 더 높은 예외 레벨로의 천이를 일으킨다. 일 실시예에서, 예외를 처리할 때 프로세서에 의해 사용된 명령 세트는 사전에 결정된다. 예를 들어, 환경설정 레지스터를 사용하여 소정의 상태에 있는 동안 실행된 예외 처리기 코드에 적용가능한 명령 세트를 지정한다. 이와 달리, 전술한 자격 벡터 기준 어드레스 레지스터(CVBAR) 내부의 필드를 사용하여 명령 세트를 지정해도 된다. 특정한 일 실시예에서는 이와 같은 목적을 위해 CVBAR의 비트 제로값을 사용한다. 또 다른 대안으로서, 명령 세트 전체가 고정되어, 예외 처리기 코드에 대해 특정한 명령 세트가 항상 사용된다.
그후, 스텝 455에서 소정의 상태로 천이하면, 프로세서는 신뢰된 예외 처리 코드를 실행하여 이 예외로부터 복귀한 후 사용되는 복귀 상태를 확립한다. 이 처리중에, 예외로부터 복귀시에 사용할 명령 세트는 적절한 제어 레지스터 내에 설정될 수 있다. 예를 들어, 도 9a를 참조하여 전술한 실시예에 따라, 명령 세트가 PCC 레지스터 내부의 필드로부터 직접 유도되면, CELR 레지스터(78)의 콘텐츠가 갱신되어, 복귀 어드레스 자격 내부의 관련된 필드가 이 예외로부터의 복귀시에 적용해야 하는 명령 세트를 식별할 수 있다. 이와 달리, 명령 세트가 예를 들어 CPSR(74) 내부의 필드에 의해 주어지는 도 9b의 접근방법을 사용하면, SPSR(72) 내부의 적절한 필드를 신뢰된 소프트웨어에 의해 조작하여 예외로부터의 복귀시에 적용해야 하는 명령 세트를 지정할 수 있다.
스텝 460 후에, 예외로부터 복귀하기 위해 스텝 465에서 복귀 명령이 실행될 수 있다. 이 처리의 일부로서, CELR(78)의 콘텐츠가 PCC 레지스터(80) 내부에 복원되고 SPSR(72)의 콘텐츠가 CPSR(74) 내부에 복원된다. 그후, 나중에 페치된 명령이 새롭게 식별된 명령 세트에 따라 해석된다.
또 다른 실시예에서는 명령 세트를 변경하기 위한 한 개 이상의 추가적인 통제된 메카니즘을 제공하는 것이 가능하지만, 특정한 일 실시예에서는, 전술한 자격 기반의 메카니즘 또는 예외 기반의 메카니즘을 사용해서만 명령 세트의 변경을 허용하도록 프로세서가 제한된다.
도 11은 사용될 수 있는 가상머신 구현예를 나타낸 것이다. 전술한 실시예는 해당 기술을 지원하는 특정한 처리 하드웨어를 작동하기 위한 장치 및 방법에 관해 본 발명을 구현하지만, 하드웨어 장치의 소위 가상머신 구현을 제공하는 것도 가능하다. 이들 가상머신 구현은 가상머신 프로그램(510)을 지원하는 호스트 운영체계(520)를 실행하는 호스트 프로세서(530) 상에서 실행된다. 일반적으로, 합당한 속도에서 실행되는 가상머신 구현을 제공하기 위해서는 크고 강력한 프로세서가 필요하지만, 이와 같은 접근방법은, 호환성이나 재사용 이유로 인해 다른 프로세서에 대해 네이티브한 코드를 실행하려는 요구가 있을 때 등과 같은, 특정한 상황에서 정당화된다. 가상머신 프로그램(510)은 응용 프로그램(또는 운영체계)(500)을 실행하여 실제 하드웨어 장치에 의한 프로그램의 실행에 의해 주어지는 것과 동일한 결과를 제공할 수 있다. 명령 세트의 변경을 제어하는 전술한 기술은 가상머신 환경 내에서 구현된다. 예를 들어, 가상머신에서 실행되거나 제어하는 소프트웨어는 이와 같은 특징을 구현하는 하드웨어를 이용할 수도 있다.
전술한 실시예로부터, 이들 실시예는 자격 기반의 아키텍처 내부의 명령 세트를 변경하는 고도로 통제되고 제한된 기술을 제공한다는 것을 알 수 있다. 이와 같은 기술의 사용을 통해, 명령 세트를 변경하려는 우연하거나 악의적인 시도에 대한 보호를 제공하여, 자격 기반의 아키텍처에 의해 제공된 보호를 우회하려고 시도하기 위해 명령 세트의 변경을 이용할 수 있는 가능성을 줄인다.
본 발명에서, 단어 "하도록 구성된"은 장치의 구성요소가 정의된 동작을 행할 수 있는 구성을 갖는다는 것을 의미하기 위해 사용된다. 이와 관련하여, "구성"은 하드웨어 또는 소프트웨어의 배치 또는 상호접속 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 갖거나, 프로세서 또는 기타의 처리장치가 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은 이 장치의 구성요소가 정의된 동작을 제공하기 위해 어떤 식으로 변경될 필요가 있는 것을 시사하는 것은 아니다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.

Claims (21)

  1. 명령 세트의 명령들을 실행하는 처리회로로서, 상기 명령들을 실행할 때 상기 처리회로에 의해 행해진 연산들을 제한하는데 사용되는 제한 포인터들을 포함하는 제한 포인터 도메인에서 동작하도록 구성되는 상기 처리회로-각 제한 포인터는 상기 제한 포인터를 사용할 때 허용 가능한 어드레스들의 범위를 지정하는 포인터 값과 범위 정보를 포함한다-와,
    프로그램 카운터 값을 결정하기 위해 상기 처리회로에 의해 사용된 프로그램 카운터 제한 포인터를 기억하는 프로그램 카운터 제한 포인터 기억 소자를 구비하고,
    상기 처리회로는 제한 포인터 기반의 메카니즘을 사용하여 명령 세트를 변경하도록 구성되고, 상기 프로그램 카운터 제한 포인터 기억 소자 내부에 식별된 제한 포인터를 로드하는데 사용되는 적어도 한가지 종류의 명령의 실행에 응답하여, 상기 처리회로는 상기 제한 포인터 기반의 메카니즘을 호출함으로써, 상기 식별된 제한 포인터에 대해 제한 포인터 검사 동작을 행하고, 상기 제한 포인터 검사 동작을 통과하는 경우, 상기 식별된 제한 포인터로부터 명령 세트 식별자 필드에 의해 명령 세트가 식별되게 하도록 구성된 장치.
  2. 제 1항에 있어서,
    상기 처리회로는 상기 식별된 제한 포인터를 상기 프로그램 카운터 제한 포인터 기억 소자 내부에 로드하기 전에 상기 식별된 제한 포인터에 대해 상기 제한 포인터 검사 동작을 행하도록 구성된 장치.
  3. 제 1항에 있어서,
    상기 처리회로는, 상기 식별된 제한 포인터를 상기 프로그램 카운터 제한 포인터 기억 소자 내부에 로드한 후 상기 식별된 제한 포인터에 대해 상기 제한 포인터 검사 동작을 행하도록 구성된 장치.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 처리회로는 상기 제한 포인터 검사 동작의 실패의 검출에 응답하여 예외를 발생하도록 구성된 장치.
  5. 제 4항에 있어서,
    상기 처리회로는 플래그를 설정하여 상기 제한 포인터 검사 동작의 실패를 식별하도록 구성되고, 상기 플래그의 설정은 다음 명령을 실행하고자 할 때 예외가 발생되게 하는 장치.
  6. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 처리회로는 상기 식별된 제한 포인터를 지정하는 분기 명령을 실행함으로써 상기 제한 포인터 기반의 메카니즘을 호출하도록 구성된 장치.
  7. 제 6항에 있어서,
    상기 처리회로가 액세스가능하고, 명령들을 실행할 때 상기 처리회로에 의해 행해진 연산을 제한하는데 사용된 제한 포인터들을 기억하도록 구성된 한 개 이상의 제한 포인터 기억 소자들을 더 구비하고,
    상기 분기 명령은 상기 한 개 이상의 제한 포인터 기억 소자들 중에서 한 개를 소스 피연산자로서 지정하고, 이 지정된 제한 포인터 기억 소자는 상기 식별된 제한 포인터를 포함하는 장치.
  8. 제 6항에 있어서,
    상기 분기 명령은 상기 식별된 제한 포인터를 형성하는 복귀 어드레스 제한 포인터를 상기 프로그램 카운터 제한 포인터 기억 소자 내부에 로드하기 위해 실행되는 복귀 명령을 포함하는 장치.
  9. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 처리회로는, 상기 제한 포인터 검사 동작을 행할 때, 상기 식별된 제한 포인터와 관련된 유효한 플래그를 검사함으로써, 상기 식별된 제한 포인터가 유효한 제한 포인터가 아닌 경우에 상기 제한 포인터 검사 동작을 통과하는 것을 금지하도록 구성된 장치.
  10. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 식별된 제한 포인터는 상기 식별된 제한 포인터와 관련된 한 개 이상의 허가의 상태를 식별하는데 사용되는 한 개 이상의 허가 플래그들을 포함하고,
    상기 처리회로는, 상기 제한 포인터 검사 동작을 행할 때, 상기 한 개 이상의 허가 플래그들을 검사함으로써, 적어도 한 개의 허가가 소정의 상태에 있지 않으면 상기 제한 포인터 검사 동작의 통과를 금지하도록 구성된 장치.
  11. 제 10항에 있어서,
    상기 적어도 한 개의 허가는, 상기 식별된 제한 포인터가 상기 프로그램 카운터 제한 포인터로서 사용될 때 메모리에서 명령들을 페치하는데 사용되도록 허용되는지 여부를 식별하는데 사용되는 실행가능한 허가를 포함하고, 상기 소정의 상태는, 상기 식별된 제한 포인터가 메모리에서 명령들을 페치하는데 사용되도록 허용되는 것을 나타내고, 오버라이딩(overriding) 제어정보가 상기 식별된 제한 포인터를 사용하여 메모리에서 명령들을 페치하는 것을 금지하게 하는 세트(set) 상태인 장치.
  12. 제 10항에 있어서,
    상기 적어도 한 개의 허가는, 상기 식별된 제한 포인터가 한 개 이상의 제한 포인터 수정 명령들에 의해 수정가능한지 여부를 식별하는데 사용된 수정가능한 허가를 포함하고, 상기 소정의 상태는 상기 한 개 이상의 제한 포인터 수정 명령들에 의해 제한 포인터가 수정불가능하다는 것을 나타내는 클리어 상태인 장치.
  13. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 제한 포인터 검사 동작을 통과할 때, 상기 처리회로는 상기 명령 세트 식별자 필드를 포함하는 상기 식별된 제한 포인터가 상기 프로그램 카운터 제한 포인터 기억 소자 내부에 새로운 프로그램 카운터 제한 포인터를 형성하기 위해 사용되도록 구성되고,
    상기 새로운 프로그램 카운터 제한 포인터 내부의 상기 명령 세트 식별자 필드의 값을 사용하여 명령 세트를 결정하는 장치.
  14. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 제한 포인터 검사 동작을 통과할 때, 상기 처리회로는, 상기 식별된 제한 포인터가 상기 프로그램 카운터 제한 포인터 기억 소자 내부에 새로운 프로그램 카운터 제한 포인터를 형성하는데 사용되게 하도록 구성되지만, 상기 명령 세트 식별자 필드에 대응하는 상기 새로운 프로그램 카운터 제한 포인터 내부의 필드가 디폴트 값으로 설정되고, 상기 처리회로는, 상기 식별된 제한 포인터의 상기 명령 세트 식별자 필드 내부의 값이 명령 세트 제어 기억소자 내부에 더 기록되게 하고,
    상기 명령 세트 제어 기억 소자 내부의 값을 사용하여 명령 세트를 결정하는 장치.
  15. 제 14항에 있어서,
    상기 명령 세트 제어 기억 소자는 현재 프로세서 상태 레지스터(CPSR) 내부의 필드에 의해 제공되는 장치.
  16. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 처리회로는 명령 세트를 변경하는 예외 기반의 메카니즘을 더 제공하고, 상기 예외 기반의 메카니즘의 호출시에, 상기 처리회로는, 신뢰된 소프트웨어가 실행되어 예외로부터의 복귀시에 사용할 명령 세트를 식별하는 복귀 상태를 확립하는 소정의 상태로 예외를 발생하도록 구성된 장치.
  17. 제 16항에 있어서,
    상기 처리회로는, 상기 제한 포인터 기반의 메카니즘 또는 상기 예외 기반의 메카니즘을 사용해서만 명령 세트가 변경될 수 있게 하도록 제약을 받는 장치.
  18. 현재의 명령 세트의 명령들을 실행하는 처리회로로서, 상기 명령들을 실행할 때 상기 처리회로에 의해 행해진 연산들을 제한하는데 사용되는 제한 포인터들을 포함하는 제한 포인터 도메인에서 동작하도록 구성되는 상기 처리회로-각 제한 포인터는 상기 제한 포인터를 사용할 때 허용 가능한 어드레스들의 범위를 지정하는 포인터 값과 범위 정보를 포함한다-를 갖는 장치 내에서 명령 세트의 변경을 제어하는 방법으로서,
    프로그램 카운터 값을 결정하기 위해 상기 처리회로에 의해 사용된 프로그램 카운터 제한 포인터를 프로그램 카운터 제한 포인터 기억 소자 내에 기억하는 단계와,
    상기 프로그램 카운터 제한 포인터 기억 소자 내부에 식별된 제한 포인터를 로드하는데 사용되는 적어도 한가지 종류의 명령의 실행에 응답하여, 제한 포인터 기반의 메카니즘을 호출하여 상기 현재의 명령 세트의 변경을 제어하도록 상기 처리회로를 구성하는 단계를 포함하고, 상기 제한 포인터 기반의 메카니즘은,
    상기 식별된 제한 포인터에 대해 제한 포인터 검사 동작을 행하는 과정과,
    상기 제한 포인터 검사 동작을 통과하는 경우, 상기 식별된 제한 포인터로부터 명령 세트 식별자 필드에 의해 상기 명령 세트가 식별되게 하는 과정을 포함하는 제어방법.
  19. 명령 세트의 명령들을 실행하는 처리수단으로서, 상기 명령들을 실행할 때 상기 처리수단에 의해 행해진 연산들을 제한하는데 사용되는 제한 포인터들을 포함하는 제한 포인터 도메인에서 동작하는 상기 처리수단-각 제한 포인터는 상기 제한 포인터를 사용할 때 허용 가능한 어드레스들의 범위를 지정하는 포인터 값과 범위 정보를 포함한다-과,
    프로그램 카운터 값을 결정하기 위해 상기 처리수단에 의해 사용된 프로그램 카운터 제한 포인터를 기억하는 프로그램 카운터 제한 포인터 기억 소자 수단을 구비하고,
    상기 처리수단은 제한 포인터 기반의 메카니즘을 사용하여 명령 세트를 변경하고, 상기 프로그램 카운터 제한 포인터 기억 소자 내부에 식별된 제한 포인터를 로드하는데 사용되는 적어도 한가지 종류의 명령의 실행에 응답하여, 상기 처리수단은 상기 제한 포인터 기반의 메카니즘을 호출함으로써, 상기 식별된 제한 포인터에 대해 제한 포인터 검사 동작을 행하고, 상기 제한 포인터 검사 동작을 통과하는 경우, 상기 식별된 제한 포인터로부터 명령 세트 식별자 필드에 의해 명령 세트가 식별되게 하는 장치.
  20. 청구항 1 내지 3 중 어느 한 항에 기재된 장치에 대응하는 명령 실행 환경을 제공하도록 호스트 데이터 처리장치를 제어하는 프로그램 명령들을 포함하는, 컴퓨터 판독가능한 기억매체에 기억된, 가상머신 컴퓨터 프로그램.
  21. 삭제
KR1020207000431A 2017-06-15 2018-04-27 명령 세트의 변경을 제어하는 장치 및 방법 KR102547479B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1709511.8 2017-06-15
GB1709511.8A GB2563580B (en) 2017-06-15 2017-06-15 An apparatus and method for controlling a change in instruction set
PCT/GB2018/051116 WO2018229455A1 (en) 2017-06-15 2018-04-27 An apparatus and method for controlling a change in instruction set

Publications (2)

Publication Number Publication Date
KR20200013049A KR20200013049A (ko) 2020-02-05
KR102547479B1 true KR102547479B1 (ko) 2023-06-26

Family

ID=59462226

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207000431A KR102547479B1 (ko) 2017-06-15 2018-04-27 명령 세트의 변경을 제어하는 장치 및 방법

Country Status (9)

Country Link
US (1) US11080058B2 (ko)
EP (1) EP3639132B1 (ko)
JP (2) JP2020523680A (ko)
KR (1) KR102547479B1 (ko)
CN (1) CN110709817B (ko)
GB (1) GB2563580B (ko)
IL (1) IL270935B1 (ko)
TW (1) TWI786111B (ko)
WO (1) WO2018229455A1 (ko)

Families Citing this family (3)

* 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
US10607015B1 (en) * 2019-05-16 2020-03-31 Cyberark Software Ltd. Security risk assessment and control for code
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002328804A (ja) * 1994-06-10 2002-11-15 Arm Ltd データ処理装置、命令セット切換方法、データ処理アーキテクチャおよびデータ処理装置作動方法
GB2448149A (en) * 2007-04-03 2008-10-08 Advanced Risc Mach Ltd Protected function calling across domains

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62123552A (ja) * 1985-11-22 1987-06-04 Nec Corp 中央処理装置割当て方式
GB2289354B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Multiple instruction set mapping
JPH08194504A (ja) * 1995-01-13 1996-07-30 Matsushita Electric Works Ltd プログラマブルコントローラ
GB2376097B (en) * 2001-05-31 2005-04-06 Advanced Risc Mach Ltd Configuration control within data processing systems
JP2004013556A (ja) * 2002-06-07 2004-01-15 Matsushita Electric Ind Co Ltd プロセッサ装置、コンパイル装置及びその方法
JP3805314B2 (ja) * 2003-02-27 2006-08-02 Necエレクトロニクス株式会社 プロセッサ
US7340588B2 (en) * 2003-11-24 2008-03-04 International Business Machines Corporation Extending the number of instruction bits in processors with fixed length instructions, in a manner compatible with existing code
US7802252B2 (en) * 2007-01-09 2010-09-21 International Business Machines Corporation Method and apparatus for selecting the architecture level to which a processor appears to conform
GB2448151B (en) 2007-04-03 2011-05-04 Advanced Risc Mach Ltd Memory domain based security control within data processing systems
GB2482701C (en) * 2010-08-11 2018-12-26 Advanced Risc Mach Ltd Illegal mode change handling
US20120159127A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Security sandbox
TWI484413B (zh) * 2012-04-03 2015-05-11 Mstar Semiconductor Inc 基於功能性的程式比較方法
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
US20160026486A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. An allocation and issue stage for reordering a microinstruction sequence into an optimized microinstruction sequence to implement an instruction set agnostic runtime architecture
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
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
GB2563580B (en) * 2017-06-15 2019-09-25 Advanced Risc Mach Ltd An apparatus and method for controlling a change in instruction set
US10635445B2 (en) * 2018-05-29 2020-04-28 Arm Limited Handling modifications to permitted program counter ranges in a data processing apparatus

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002328804A (ja) * 1994-06-10 2002-11-15 Arm Ltd データ処理装置、命令セット切換方法、データ処理アーキテクチャおよびデータ処理装置作動方法
GB2448149A (en) * 2007-04-03 2008-10-08 Advanced Risc Mach Ltd Protected function calling across domains

Also Published As

Publication number Publication date
US11080058B2 (en) 2021-08-03
WO2018229455A1 (en) 2018-12-20
IL270935A (en) 2020-01-30
IL270935B1 (en) 2024-05-01
GB2563580B (en) 2019-09-25
TWI786111B (zh) 2022-12-11
US20200117458A1 (en) 2020-04-16
EP3639132B1 (en) 2024-05-29
KR20200013049A (ko) 2020-02-05
GB201709511D0 (en) 2017-08-02
CN110709817A (zh) 2020-01-17
CN110709817B (zh) 2023-09-22
TW201905705A (zh) 2019-02-01
JP2023038361A (ja) 2023-03-16
GB2563580A (en) 2018-12-26
JP2020523680A (ja) 2020-08-06
EP3639132A1 (en) 2020-04-22

Similar Documents

Publication Publication Date Title
JP6902029B2 (ja) 有界ポインタを管理するための装置および方法
JP7128206B2 (ja) 機能の使用を管理するための装置および方法
KR102528701B1 (ko) 자격 도메인을 관리하는 장치 및 방법
KR20160019454A (ko) 데이터 처리장치에서의 소프트웨어 라이브러리들의 보안 보호
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法
KR20230101826A (ko) 캐퍼빌리티들을 사용하여 메모리에 대한 액세스를 제약하기 위한 기술
TW202131191A (zh) 用於控制對一組記憶體映射的控制暫存器的存取的設備及方法
JP2024517627A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant