KR20180118699A - 레지스터 액세스 제어 - Google Patents

레지스터 액세스 제어 Download PDF

Info

Publication number
KR20180118699A
KR20180118699A KR1020187027497A KR20187027497A KR20180118699A KR 20180118699 A KR20180118699 A KR 20180118699A KR 1020187027497 A KR1020187027497 A KR 1020187027497A KR 20187027497 A KR20187027497 A KR 20187027497A KR 20180118699 A KR20180118699 A KR 20180118699A
Authority
KR
South Korea
Prior art keywords
register
exception
target
level
value
Prior art date
Application number
KR1020187027497A
Other languages
English (en)
Inventor
제이슨 파커
Original Assignee
에이알엠 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에이알엠 리미티드 filed Critical 에이알엠 리미티드
Publication of KR20180118699A publication Critical patent/KR20180118699A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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
    • 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/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

데이터 처리 시스템(2)은 복수의 예외 레벨 ELx에서 동작하고 보호된 실행 환경의 이용을 지원한다. 레지스터 뱅크(16)는 소유 예외 레벨을 나타내는 관련된 소유권 변수를 갖는 레지스터들을 포함한다. 레지스터 액세스 제어회로(30)는 각각의 레지스터에 대한 소유권 값에 응답하여 소유권 값에 따라 처리회로(14)에 의해 이들 레지스터에 대한 액세스를 제어한다. 타겟-제약된 데이터 전송 동작과 이와 관련된 프로그램 명령들이 설치되며 이것들은 이들 프로그램 명령들의 실행과 관련된 예외 레벨이 소유하지 않은 레지스터들 내부의 데이터 값들을 액세스할 수 있지만, 소유하는 예외 레벨에 대한 설계된 기억 포인터에 의해 표시된 메모리(6) 내부의 메모리 위치에 대한 데이터 전송을 행하도록 제한된다. 정해진 예외 레벨에 있는 타겟-비제약된 전송 명령들은 다른 예외 레벨이 소유하는 것으로 표기된 레지스터 데이터 값을 액세스하는 것이 불가능하다.

Description

레지스터 액세스 제어
본 발명은 데이터 처리 시스템 분야에 관한 것이다. 특히, 본 발명은 데이터 처리 시스템 내부의 데이터 값들을 기억하는 레지스터에 대한 액세스 제어에 관한 것이다.
프로그램 명령에 의해 지정된 데이터 처리 연산에서 사용하기 위한 각각의 데이터 값을 기억하는 레지스터를 갖는 데이터 처리 시스템을 제공하는 것이 알려져 있다. 예외에 응답할 때, 일부 공지된 시스템은 예외처리 프로그램의 책임의 일부로서 레지스터의 현재 콘텐츠를 기억하고 예외처리 프로그램 코드의 실행 종료시에 레지스터에 이 콘텐츠를 복원하기 위해 예외처리 코드에 의존한다.
본 발명의 적어도 일부 실시예는,
각각의 데이터 값을 유지하고 관련된 소유권 변수를 각각 갖는 복수의 레지스터들과,
상기 복수의 레지스터들 내부에 유지된 데이터 값에 대해 프로그램 명령들에 의해 지정된 데이터 처리 연산을 행하는 처리회로와,
상기 복수의 레지스터들 중 한 개의 레지스터에 대한 상기 관련된 소유권 변수에 의해 지정된 소유권 값에 응답하여, 상기 소유권 값에 따라 상기 처리회로에 의한 상기 레지스터에 대한 액세스를 제어하는 레지스터 액세스 제어회로와,
복수의 예외 레벨들 중에서 현재의 예외 레벨에서 동작하도록 상기 처리회로를 제어하는 예외 레벨 제어회로를 구비하고,
상기 소유권 값은 상기 복수의 예외 레벨 상태들 중에서 한 개를 지정하고,
상기 레지스터 액세스 제어회로는, 상기 현재의 예외 레벨이 상기 소유권 값에 의해 지정된 레벨과 소정의 방식으로 다를 때, 적어도 일부 프로그램 명령들에 의해 지정된 데이터 처리 연산을 행하도록 상기 처리회로에 의한 상기 레지스터에 대한 액세스를 제한하고,
상기 복수의 예외 레벨들은 최저 특권 레벨 내지 최고 특권 레벨의 범위를 갖는 특권 레벨들의 계층에 대응하고, 상기 처리회로의 동작시에 발생하는 예외 상태는, 상기 최고 특권 레벨보다 낮은 특권 레벨에 대응하는 예외 레벨에서 동작할 때, 더 높은 특권 레벨을 갖는 예외 레벨로의 전환을 기동하고,
상기 소정의 방식은, 상기 현재의 예외 레벨이 상기 계층 내에서 상기 소유권 값에 의해 지정된 예외 레벨보다 높은 것이고,
상기 최저 특권 레벨이 상기 최고 특권 레벨보다 더 적은 특권을 갖는 데이터 처리장치를 제공한다.
본 발명의 적어도 일부 실시예는, 데이터 처리방법으로서,
관련된 소유권 변수를 각각 갖는 복수의 레지스터들 내부에 각각의 데이터 값을 유지하는 단계와,
상기 복수의 레지스터들 내부에 유지된 데이터 값에 대해 프로그램 명령들에 의해 지정된 데이터 처리 연산을 행하는 단계와,
상기 복수의 레지스터들 중 한 개의 레지스터에 대한 상기 관련된 소유권 변수에 의해 지정된 소유권 값에 응답하여, 상기 소유권 값에 따라 처리회로에 의한 상기 레지스터에 대한 액세스를 제어하는 단계와,
복수의 예외 레벨들 중에서 현재의 예외 레벨에서 동작하도록 상기 처리회로를 제어하는 단계를 포함하고,
상기 소유권 값은 상기 복수의 예외 레벨 상태들 중에서 한 개를 지정하고,
상기 처리방법은, 상기 현재의 예외 레벨이 상기 소유권 값에 의해 지정된 레벨과 소정의 방식으로 다를 때, 적어도 일부 프로그램 명령들에 의해 지정된 데이터 처리 연산을 행하도록 상기 처리회로에 의한 상기 레지스터에 대한 액세스를 제한하는 단계를 더 포함하고.
상기 복수의 예외 레벨들은 최저 특권 레벨 내지 최고 특권 레벨의 범위를 갖는 특권 레벨들의 계층에 대응하고, 상기 처리회로의 동작시에 발생하는 예외 상태는, 상기 최고 특권 레벨보다 낮은 특권 레벨에 대응하는 예외 레벨에서 동작할 때, 더 높은 특권 레벨을 갖는 예외 레벨로의 전환을 기동하고,
상기 소정의 방식은, 상기 현재의 예외 레벨이 상기 계층 내에서 상기 소유권 값에 의해 지정된 예외 레벨보다 높은 것이고,
상기 최저 특권 레벨이 상기 최고 특권 레벨보다 더 적은 특권을 갖는 데이터 처리방법을 제공한다.
이하, 다음의 첨부도면을 참조하여 실시예를 설명한다.
도 1은 복수의 레지스터들과 레지스터 액세스 제어회로를 구비한 데이터 처리 시스템을 개략적으로 나타낸 것이다.
도 2는 예외(특권) 레벨들의 계층과 이들 다른 예외 레벨들에서 실행되는 관련된 프로그램을 개략적으로 나타낸 것이다.
도 3은 레지스터와 그것의 관련된 소유권 값을 개략적으로 나타낸 것이다.
도 4는 보호된 실행 환경 콘텍스트 데이터를 개략적으로 나타낸 것이다.
도 5는 타겟-비제약된(unconstrained) 로드/스토어 명령들을 개략적으로 나타낸 것이다.
도 6은 타겟-제약된 로드/스토어 명령들을 개략적으로 나타낸 것이다.
도 7a는 타겟-제약된 로드/스토어 명령들과 관련되어 사용되는 또 다른 명령들을 개략적으로 나타낸 것이다.
도 7b는 레지스터 보존 및 레지스터 복원 코드 시퀀스들의 예를 개략적으로 나타낸 것이다.
도 8은 내포된(nested) 예외처리를 개략적으로 나타낸 것이다.
도 9는 예외 엔트리를 개략적으로 나타낸 흐름도이다.
도 10은 예외 복귀를 개략적으로 나타낸 흐름도이다.
도 1은 메모리(6)에 접속된 프로세서 코어(4)를 구비한 데이터 처리 시스템(2)을 개략적으로 나타낸 것이다. 프로세서 코어(4)는 메모리(6)에서 프로그램 명령들을 페치하고 이것들을 명령 파이프라인(10)에 제공하는 명령 페치 유닛(8)을 구비한다. 명령 파이프라인(10)에 접속된 디코더 회로(12)는 이들 명령을 디코드하여, 처리회로(14)를 제어하여 디코드된 프로그램 명령들에 의해 지정된 데이터 처리 연산을 행하는 제어신호를 발생한다. 데이터 처리 연산은 레지스터들의 레지스터 뱅크(16)에 기억된 데이터 값들의 조작을 포함한다. 레지스터 뱅크(16) 내부의 이들 레지스터는 스칼라 범용 레지스터, 부동소수점 레지스터 및 환경설정 레지스터를 포함한다. 다른 실시예에서는 또 다른 종류의 레지스터가 설치될 수도 있고, 모든 실시예가 이들 모든 종류의 레지스터를 포함할 필요는 없다.
로드 스토어 유닛(18)은 레지스터 뱅크(16) 내부의 레지스터들과 메모리(6) 내부의 기억 장소들 사이에서의 데이터 값의 데이터 전송 동작을 행한다. 이들 전송 동작은, 후술하는 것과 같이 제약된 스토어 명령, 제약된 로드 명령, 비제약된 스토어 명령 또는 비제약된 로드 명령으로부터 발생된다.
데이터 처리 시스템(2)은 정해진 시간에 복수의 가능한 예외 레벨들(특권 레벨들) 중에서 한 개에서 동작한다. 어느 것이 현재의 예외 레벨인지와 예외 레벨들 사이의 전환의 제어는 예외 레벨 제어회로(20)에 의해 처리된다. 일반적으로 말하면, 더 높은 예외 레벨에서 동작할 때에는 메모리(6) 내부에 기억된 데이터 값들에 대해 더 큰 액세스가 주어진다. 그러나, 본 발명은, 보호된 실행 콘텍스트와 관련된 데이터의 적어도 일부가, 더 높은 예외 레벨(더 높은 특권 레벨)에서 동작할 때에도, 이 보호된 실행 콘텍스트 밖에서 동작할 때에는 액세스 불가능한 이와 같은 보호된 실행 콘텍스트(들)를 제공한다.
도 1에 도시된 메모리(6)는, 관련된 다양한 액세스 제약들을 갖는 복수의 메모리 영역들을 나타낸다. 하이퍼바이저 메모리 영역(22)은 하이퍼바이저 프로그램이 액세스가능하지만 더 낮은 예외 레벨(더 낮은 특권 레벨)에 있는 프로그램들이 액세스 불가능하다. 제 1 보호 영역(24) 및 제 2 보호 영역(26)은 각각 시스템이 제 1 보호 실행 콘텍스트 또는 제 2 보호 실행 콘텍스트에서 동작할 때에는 액세스 가능하지만, 이들 각각의 콘텍스트 외부에서는 액세스 불가능하다. 예를 들어, 제 1 보호 영역(24)은, 데이터 처리 시스템(2)이 제 1 보호 실행 콘텍스트에서 동작할 때에는 액세스 가능하지만, 데이터 처리 시스템이 하이퍼바이저 프로그램(이것이 더 높은 예외 레벨을 갖고 있더라도)을 실행하고 있을 때와 제 2 보호 실행 콘텍스트에서 실행될 때에는 액세스 불가능하다. 공유 영역(28)은 하이퍼바이저 프로그램이 액세스 가능하고 제 1 실행 콘텍스트 및 제 2 실행 콘텍스트에서 실행될 때 액세스 가능하여 서로 다른 프로그램 사이에서의 데이터 값의 공유를 용이하게 한다. 각각의 보호된 실행 콘텍스트는 각각의 보호된 가상머신 실행 환경의 제공에 대응한다. 보호된 가상 머신 실행 환경은, 그것의 개인 데이터를 다른 개인 가상 머신이 액세스 불가능하고, 심지어 하이퍼바이저 프로그램도 액세스 불가능하도록 이와 같은 개인 데이터를 기억할 수 있는 각각의 보호 영역 24, 26을 할당함으로써 그 자신의 데이터가 사적이 되도록 보장하는데 용이하다.
프로세서 코어(4)는 레지스터 뱅크(16)에 접속된 레지스터 액세스 제어회로(30)를 구비한다. 레지스터 뱅크(16) 내부의 각각의 레지스터들은 관련된 소유권 값을 갖는다. 복수의 레지스터들이 소유권 값을 공유하거나, 다른 실시예에서는 각각의 레지스터가 개별적으로 설정가능한 소유권 값을 가져도 된다. 또한, 일부 실시예에서는 레지스터 뱅크(16) 내부의 모든 레지스터들이 소유권 값을 갖지는 않거나, 후술하는 것과 같이 예외처리 동작시에 그 자신의 콘텐츠를 보호하는 메카니즘에 참여한다.
레지스터 액세스 제어회로는 처리회로(14) 또는 로드 스토어 유닛(18)에 의해 액세스할 레지스터에 대해 지정된 소유권 값에 따라 레지스터 뱅크(16) 내부의 레지스터들에 대한 액세스를 제어하는 역할을 한다. 프로세서 코어(4)가 소유권 값에 의해 지정된 소유권 제약을 위반하는 데이터 처리 연산을 행하려고 시도하면, 레지스터 액세스 제어회로(30)는 레지스터 소유권 예외를 발생하여, 그것의 보안을 위반하는 추가적인 시도를 방지하는 보호책으로서 보호된 실행 환경을 폐쇄하는 것 등의 액션을 기동한다.
본 실시예와 관련하여, 레지스터 뱅크 내부의 레지스터들에 대해 지정된 소유권 값은 복수의 가능한 예외 레벨들 중에서 한 개의 예외 레벨을 해당 레지스터를 "소유하는" 예외 레벨로서 관련시킨다. 예외 레벨 제어회로(20)로부터 레지스터 액세스 제어회로(30)에 예외 레벨 신호 EL이 주어져, 데이터 처리 시스템(2)이 동작하고 있는 현재의 예외 레벨을 표시한다. 현재의 예외 레벨이 액세스할 레지스터의 현재의 소유자로서 기록된 예외 레벨과 다른 것은 레지스터 액세스 제어회로(30)가 검출하면, 전술한 레지스터 소유권 예외가 기동되고 시도된 액세스가 허가되지 않는다. 본 실시예에서는 소유권 값이 소유하고 있는 예외 레벨에 대응하지만, 다른 실시예는 스레드 기반의 소유권 등의 다른 형태의 소유권 속성을 이용하는 것이 가능하다.
일부 실시예에서, 레지스터 액세스 제어회로(30)는, 처리 시스템(2)이 현재 해당 레지스터를 소유하는 것으로 표시된 예외 레벨과 동일한 예외 레벨에 있을 때에만 액세스를 허가하도록 주어진 레지스터에 대한 액세스를 제약하는 역할을 한다. 다른 실시예에서, 레지스터 액세스 제어회로는 현재의 소유자로서 표시된 것과 동일한 예외 레벨 또는 더 낮은(특권이 더 적은) 예외 레벨에 있을 때에는 주어진 레지스터에 대한 액세스를 제공하는 한편, 데이터 처리 시스템(2)이 더 높은 예외 레벨(더 높은 특권 레벨)에 있을 때에는 액세스를 허가하지 않는 역할을 한다. 이와 같은 구성은, 더 높은 특권 레벨이 더 큰 액세스를 제공하는 통상적인 모델과 상충되지만, 하이퍼바이저 프로그램이 이와 같은 액세스를 하는 것을 허가하지 않도록 하는 것이 필요할 때 하이퍼바이저 프로그램으로부터 레지스터들의 콘텐츠를 보호하는 역할을 한다. 이와 같은 하이퍼바이저 프로그램은, 더 낮은 예외 레벨에 있는 보호된 실행 환경에 처리 동작을 스케줄링하는 것이 허용되지만, 이들 보호된 실행 환경과 관련된 개인 데이터가 각각의 보호된 실행 환경에 의해 설정되고 "소유된" 보호 영역 24, 26 내부에 기억되어 있으므로 이와 가튼 데이터를 액세스하는 것이 불가능하기 때문에, "은닉(blind)" 하이퍼바이저 프로그램이라고 부른다.
도 2는 각각의 예외 레벨에서 실행되는 복수의 프로그램을 개략적으로 나타낸 것이다. 도 2의 예에서는, 하이퍼바이저 프로그램(32)이 예외 레벨 EL2에서 실행된다. 이와 같은 예외 레벨은 마찬가지로 도 2에 도시된 예외 레벨 EL1, EL보다 높은 특권 레벨을 갖는다. 하이퍼바이저 프로그램(32)은 2개의 보호된 실행 환경 34, 36에서 실행의 스케줄링을 관리한다. 이들 보호된 실행 환경 34, 36 각각은 예외 레벨 EL1에서 실행되는 각각의 운영 체계 38, 40과 예외 레벨 EL0에서 실행되는 한 개 이상의 어플리케이션 프로그램들 42, 44, 46을 포함한다. 각각의 보호된 실행 환경 34, 36은, 하이퍼바이저 프로그램(32)에 의한 액세스로부터 보호되는 개인 데이터를 기억할 수 있는 메모리(6) 내부의 그 자신의 보호된 영역 24, 26을 설정할 수 있는 가상머신 실행 환경을 제공한다. 보호된 실행 환경 32, 36 내부에서 실행되는 프로그램들은, 하이퍼바이저 프로그램(22)이나 다른 보호된 실행 환경들 34, 36에서 실행되는 프로그램들 등의 다른 프로그램들과 데이터를 공유하기 원하는 경우에, 이 데이터를 공유 영역(28) 내부에 기억할 수 있다.
도 3은, 예를 들어, 레지스터 뱅크(16) 내부에서 발견되는 64 비트 데이터 값을 기억하는 64비트 범용 레지스터(48)를 개략적으로 나타낸 것이다. 이 레지스터(48)와 관련된 것은, 레지스터(48) 내부에 데이터 값을 소유하는 예외 레벨 ELx를 나타내는 2비트 소유권이다. 소유권 유효 비트는 소유권 값 ELx가 정해진 시간에 유효한지 여부를 표시한다. 레지스터(48) 내부의 데이터 값에 대한 액세스를 행하고자 할 때, 레지스터 액세스 제어회로(30)는 현재의 소유권 값 ELx를 판독하고 그것을 예외 레벨 제어회로(20)에 의해 주어진 데이터 처리 시스템(2)의 현재 예외 레벨과 비교하여, 해당 액세스가 허가되어야 하는지(예를 들어, 데이터 처리 시스템의 현재 예외 레벨이 소유권 값 ELx로 표시된 예외 레벨과 같은지 또는 낮은지) 여부를 판정한다.
도 4는 적어도 보호된 실행 환경이 현재 실행되고 있지 않을 때, 예를 들어, 예외가 발생하여 보호된 실행 환경 외부에서 실행되는 예외처리 프로그램에 의해 처리되고 있을 때, 예를 들어, 예외처리 프로그램이 더 높은 예외 레벨에서 실행되고 있을 때, 보호된 실행 환경 소유 보호 영역 24, 26 내부에 기억된 보호된 실행 환경 콘텍스트 데이터를 개략적으로 나타낸 것이다. 전술한 것과 같이, 본 예시적인 실시예에서는, 레지스터 값들의 소유권이 예외 레벨마다의 기준으로 처리되므로, 각각의 예외 레벨과 관련된 설계된(architected) 상태 포인터로서 제공된 예외로드 및 스토어 모두에 대해 사용된) 기억 포인터가 존재한다. 기억 포인터는 보통 후술하는 타겟 제약된 명령들에 의해서만 액세스되고 범용 레지스터 세트의 일부가 아닌 추가적인 레지스터들이다. 이와 같은 기억 포인터는 그것의 64비트 콘텍스트 데이터의 어레이가 기억되는 보호된 실행 환경의 보호된 영역 24, 26 내부의 시작 어드레스를 나타낸다. 이와 같은 콘텍스트 데이터는, 예외의 발생시 등에 콘텍스트가 실행을 중단했을 때 해당 콘텍스트에 의해 소유된 레지스터 뱅크(16)로부터 판독된 기억된 데이터 값들의 블록(50)을 포함한다. 색인값은, 각각의 예외 레벨에 대한 기억 포인터와 관련되고, 특정한 레지스터 Rx에 대한 대응하는 데이터 값을 기억하는 64비트 어레이 내부의 특정한 위치를 나타낸다. 64비트 어레이 내부에는 다른 환경설정 레지스터 상태 데이터로 기억된다.
보호된 실행 환경을 벗어나게 하는 예외의 발생시에, 레지스터 뱅크(16)의 현재의 콘텐츠를 기억하기 위해 호출되어, 제어가 원래의 보호된 실행 환경으로 반환되기 전에 그것의 처리의 종료시에 이들 콘텐츠가 예외처리 프로그램에 의해 복원될 수 있도록 하는 것은 예외처리 코드의 책임이다. 레지스터 뱅크(16) 내부에 특정한 레지스터 데이터 값을 소유하는 예외 레벨과 관련된 기억 포인터에 의해 표시된 64비트 어레이를 사용하여, 메모리(6)의 각각의 보호된 영역 24, 26 내부에 기억된 적절한 64비트 어레이 내부에 이 데이터 값의 보존을 지시한다.
도 5는 타겟 비제약된 로드 및 스토어 명령을 개략적으로 나타낸 것이다. 이와 같은 명령들은 종래의 방식으로 전송이 행해질 메모리(6) 내부의 어드레스를 자유롭게 정의할 수 있다. 이와 같은 타겟 비제약된 로드 및 스토어 명령들을 보호된 실행 환경과 관련된 레지스터들로부터 데이터 값을 기억하고 복원하는데 사용한다면, 이들 명령들은 이와 같은 데이터 값이 적절한 보호된 영역 24, 26 외부에 기억되도록 허용하므로, 관련된 보호된 실행 환경 외부에서 부적절하게 이용가능하게 될지도 모른다.
본 발명은, 디코더 회로(12)에 의해 디코드되고 로드/스토어 유닛(18)을 제어함으로써 도 4와 관련하여 설명한 것과 같은 레지스터의 소유 예외 레벨에 대한 기억 포인터에 의해 지정된 위치로 메모리(6)를 사용한 타겟 제약된 데이터 전송 동작을 행하는 도 6에 도시된 것과 같은 타겟-제약된 로드 및 스토어 명령을 제공한다. 이들 타겟=제약된 로드 및 스토어 명령은 STRBlind 명령 및 LDRBlind 명령의 형태를 갖는다. 이들 명령은 디코더 회로(12)에 의해 디코드될 때 로드/스토어 유닛(18)과 프로세서 코어(4)의 다른 부분을 제어하여, 도 6에 나타낸 의사코드에서 지정된 처리 연산을 행하는 역할을 한다.
타겟-제약된 스토어 명령 STRBlind의 경우에, 이것은 레지스터 색인 변수의 현재 값 BRI로 표시된 범용 레지스터로부터, 64비트 어레이(50)의 시작점을 가리키는 관련된 소유 예외 레벨의 기억 포인터와 현재 레지스터 값 BRI의 조합으로 표시된 메모리 위치 내부에 데이터를 기억하는 역할을 한다. 색인값이 그것의 최소 또는 최대 값을 오버플로우하거나 언더플로우하여 레지스터 기억 연산들의 시퀀스가 완료하였다는 것을 나타내는 경우에, 타겟-제약된 스토어 명령의 실행 종료시에 색인값이 옵션으로 증분되고, 플래그가 설정된다.
이때, 주어진 시점에서, 레지스터 뱅크(16) 내부의 레지스터들은 서로 다른 각각의 소유 예외 레벨들을 갖는 것으로 그들의 소유권 값들에 의해 표시되는 것이 가능하다는 것을 알 수 있다. 이와 같은 상황은, 예를 들어, 레지스터 뱅크의 현재 콘텐츠가 부분적으로 보존된 내포된 인터럽트들과, 추가적이 예외가 발생할 때, 그 자신이 레지스터 뱅크의 레지스터들의 소유권을 받고 이에 따라 그들의 현재의 소유권 값으로 표시된 레지스터 뱅크(16)의 콘텐츠를 적절한 보호된 영역 24, 26에 보존해야 하는 새로운 예외 레벨에 의해 요청된 소유권으로 인해 발생될 수 있다. 타겟 제약된 스토어 명령의 연산의 의사코드 표현으로부터, 이 명령이 따르는 파라미터가 레지스터 색인 값 BRI이며, 특정한 레지스터의 특정한 소유자(bi 값), 관련된 보호된 콘텍스트 데이터 어레이에 대한 기억 포인터(bp 값)와, 레지스터로부터 보존할 데이터 값을 위해 사용될 개별 기억 위치(brp 값)를 식별하는 행해진 연산이 모두 레지스터가 보존할 현재 소유권 값에 따라 동적으로 유도된다는 것을 알 수 있다.
도 6에 도시된 타겟-제약된 로드 명령 LDRBlind는 입력 피연산자로서 레지스터 색인 BRI와 타겟 예외 레벨 BTEL을 모두 취한다. 처리가 반환될 타겟 예외 레벨 BTEL과, 이에 따라 적절한 보호된 영역 24, 26으로부터 복원된 레지스터 뱅크(16)에 대한 관련된 데이터 값은, 그것의 예외처리 후에 어떤 예외 레벨로 처리가 복귀되는지 제어하는 역할을 하기 때문에, 예외처리 코드에 의해 설정된다. 타겟-제약된 로드 명령의 기능을 나타낸 의사코드도, 주어진 레지스터 색인 값 BRI에 대해 이와 같은 로드를 행하는 것의 종료시에, 레지스터 색인 값이 옵션으로 감분되고, 전술한 것과 같이 오버플로우하는 경우에 플래그가 설정된다는 것을 나타낸다.
예외 진입시에, 예외처리 코드는, 레지스터 색인 값들의 시퀀스 BRI에 따라 타겟-제약된 스토어 명령들의 시퀀스를 실행하여, 관련된 보호된 영역 24, 26에 레지스터 뱅크(16)의 현재 콘텐트를 보존하는 역할을 한다. STRBlind 명령을 사용하여 레지스터 콘텐츠를 보존한 후, 레지스터가 소정의 값, 예를 들어, 제로값으로 설정된다. 예외처리를 종료하고 타겟 예외 레벨로 처리를 되돌리기 전에, 예외 처리 프로그램은, 반환된 보호된 실행 환경이 그것의 처리를 재개하도록, 타겟 실행 레벨에 대해 각각의 보호된 영역 24, 26의 보호된 콘텍스트 데이터 어레이 내부에 기억된 데이터 값들을 레지스터 뱅크(16) 내부에 다시 로드하는 역할을 하는 타겟 -제약된 로드 명령들의 시퀀스 LDRBlind를 실행하는 책임이 있다.
타겟-제약된 로드 및 스토어 명령들 STRBlind 및 LDRBlind는, 이들 타겟-제약된 로드 및 스토어 명령들을 실행하는 예외 레벨에 의해 소유하지 않은 레지스터들과 관련된 데이터 값을 액세스하는 것이 허가되지만, 메모리(6)에 대한 전송이 해당 레지스터 값(과 전술한 현재 색인 값)을 소유하는 예외 레벨과 관련된 기억 포인터에 의해 지정된 위치에 대해 발생한다는 제약을 겪는다. 이와 달리, 도 5의 타겟-비제약된 로드 및 스토어 명령은 이들 타겟-비제약된 로드 및 스토어 명령들을 실행하고 있는 예외 레벨에 의해 소유되지 않은 레지스터 내부의 데이터 값을 액세스할 수 없다.
도 7a는 디코더 회로(12)에 의해 디코드되고 타겟-제약된 로드 및 스토어 명령의 사용과 관련된 3개의 추가적인 프로그램 명령의 동작과, 은닉 레지스터 보존을 행하는 예외 처리와 은닉 레지스터 복원을 행하는 예외 복귀의 일례를 개략적으로 나타낸 것이다.
색인 리셋 프로그램 명령 ResetBRI는 디코더 회로(12)에 의해 디코드되고 처리회로(14)를 제어하여 색인값 BRI를 제로 값으로 리셋한다(다른 실시예는 다른 리셋 값을 사용한다). 색인 변경 프로그램 명령 IncrementBRI는 색인값들의 소정의 시퀀스를 따르도록 현재의 레지스터 색인값 BRI를 변경하는 역할을 한다. 본 실시예에서, 시퀀스는 제로에서 시작하여, 타겟-제약된 로드 및 스토어 명령을 사용한 보존을 필요로 하는 레지스터 뱅크(16) 내부의 레지스터들의 수에 대응하는 최대수까지 단조 증가하는 시퀀스이다. 이때, 단조 감소하는 레지스터 색인값 등의 레지스터 색인값에 대한 다른 시퀀스를 사용해도 된다는 것은 자명하다. 또 다른 실시예는, 정규형식이 아니지만(non-canonical), 그 대신에 데이터 처리 시스템(2)의 통상 동작 중에 레지스터 뱅크(16) 내부의 대응하는 레지스터들의 감소하는 통계적인 사용 빈도에 해당하는 순서를 따르는 색인값들의 시퀀스를 이용해도 된다. 이에 따르면, 시퀀스를 따라 보존하거나 복원할 레지스터 뱅크(16) 내부의 첫 번째 레지스터는 가장 높은 이용 우도(likelihood)를 갖는 것이다. 예외처리 루틴은 보통 레지스터 뱅크 콘텐츠의 일부만 보존하여 그 자신의 예외처리 용도를 위해 레지스터를 비우는 역할을 하며, 추가적인 레지스터 공간이 필요한 경우에 다른 레지스터가 보존할 준비가 되도록 남겨둔다. 이에 따라, 레지스터 뱅크의 모든 콘텐츠를 보존할 필요가 없이, 가장 빈번하게 사용된 레지스터들을 먼저 보존하거나 복원하는 시퀀스가 예외처리 프로그램 코드를 가장 사용할 필요가 있을 것 같은 레지스터에 제공하는데 있어서 유용하다.
전술한 것과 같이, 예외처리 프로그램이 예외처리를 따르는 프로그램으로 처리를 반환하는 것일 때, 도 6의 타겟-제약된 로드 명령을 사용한 레지스터 뱅크 콘텐츠의 복원과 관련되도록 타겟 예외 레벨을 설정한다. 디코더 회로(12)는 타겟 소유자 설정 프로그램 명령 SetBTEL에 응답하여 복원할 타겟 예외 레벨을 설정한다. 타겟 예외 레벨은 타겟 소유자 설정 프로그램 명령(SetBTEL)을 실행하고 있는 현재의 예외 레벨보다 낮도록 제약된다.
도 7b는 예외처리 은닉 레지스터 보존 루틴을 나타낸 것이다. 이와 같은 코드의 세그먼트는 예외처리 프로그램 루틴의 개시시에, 또는 개시에 근접하여 실행되도록 의도된다. 도시된 코드는 일부 실시예에서는 보호된 실행 환경으로부터 진입할 때 처리할 예외에 대한 타겟 벡터 위치에 기억된다. 은닉 레지스터 보존 루틴은 레지스터 색인값을 리셋하여 개시된 후, 시퀀스가 오버플로우로 표시된 것과 같이 완료할 때까지 레지스터 색인값을 증분하여 타겟-제약된 스토어 명령을 실행한다. 도시된 실시예에서는, 타겟-제약된 스토어 명령에 의해, 별개의 색인 변경 프로그램 명령을 사용하지 않고, 색인값의 변경이 행해진다.
일부 실시예에서는, 스토어 시퀀스 완료 마커(marker) 값은 보호된 실행 환경 콘텍스트 데이터를 구성하는 64비트 어레이(50) 내부에 기억된다. 스토어 시퀀스 완료 마커 값을 사용하여, 보존할 레지스터 뱅크(16)로부터의 전체 데이터 값의 세트가 실제로 64비트 어레이 내부에 기억되었는지 표시한다. 도 7b에 도시된 예외처리 은닉 레지스터 보존 프로그램은, 그것의 끝에 별개의 명령으로서, 또는 타겟-제약된 스토어 명령으로부터의 오버플로우 액션 내부에 암시적으로, 64비트 어레이(50) 내부에 스토어 시퀀스 완료 마커 값을 기억하는 액션을 포함한다. 이와 같은 스토어 시퀀스 완료 마커 값은, 은닉 레지스터 복원을 행하여, 전체 세트의 데이터 값들이 타겟 예외 레벨로 복권되고 있는지, 즉 예외 레벨을 벗어났을 때 전체 세트가 적절히 보존되고 이에 따라 이 시점에서 전체 세트의 데이터 값들을 복원하는 것이 적절하다고 검증하기 위해 은닉 레지스터 복원을 행하는 예외 복귀시에 판독될 수 있다. 전체 세트가 복원하는데 이용가능하지 않은 경우에는, 정상적인 거동을 따르지 않았다는 것을 나타내는 예외가 발생된다. 타겟-제약된 로드 연산은 진행하는 것이 허가되기 전에 이와 같은 스토어 시퀀스 완료 마커 값의 존재를 검사한다. 도 7b에 도시된 예외 복귀 은닉 레지스터 복원 프로그램 시퀀스는, 데이터 값들이 레지스터 뱅크(16)로 복원될 타겟 예외 레벨을 식별하기 위해 타겟 소유자 설정 프로그램 명령의 실행으로 개시한다. 이 이후에, 레지스터 색인값들의 시퀀스에 대해 루프가 실행되어, 타겟 예외 레벨에 대한 기억 포인터와 레지스터 색인값의 현재값으로 표시된 메모리 어드레스로부터, 레지스터 색인값이 오버플로우로 표시된 그것의 시퀀스의 끝에 도달할 때까지, 제약된 로드 연산을 행한다.
이때, 일부 공지된 시스템에서는, 프로세서가 예외 진입시에 자동으로 레지스터를 보존하는 것을 알 수 있다. 본 발명에서 설명한 메카니즘은, 더욱 효율적인 접근방법을 제공하는데, 예를 들어, 예외처리가 레지스터들의 적절한 서브셋만이 사용가능하게 되도록 요구하기 때문에, 예외 진입시에 모든 레지스터들을 보존 및 복원할 필요가 없다.
도 8은 내포된 예외가 발생할 때 레지스터 보존을 행하는 동작을 개략적으로 나타낸 것이다. 데이터 처리 시스템(2)은 처음에 예외 레벨 EL0에서 동작하고 있다. 스텝 1에서, 예외가 발생하여 데이터 처리 시스템을 예외 레벨 EL1으로 이동시킨다. 그후, 예외 레벨 EL1에서 실행되는 예외처리 프로그램은 예외 레벨 EL0가 소유한 레지스터 뱅크(16)로부터 예외 레벨 EL0와 관련된 보호 영역 24, 26 내부에 데이터 값들의 보존을 개시한다. 이것을 도 8에 스텝 2로 나타낸다. 스텝 2에서 예외 레벨 EL0가 소유한 데이터 값들의 보존의 도중에, 스텝 3으로 표시된 또 다른 예외가 발생하여, 데이터 처리 시스템(2)을 예외 레벨 EL1에서의 실행으로부터 예외 레벨 EL2에서의 실행으로 변경한다. 그후, 예외 레벨 EL2에서의 예외처리 프로그램 코드가 시작하여 레지스터 뱅크(16)로부터 데이터 값들을 보존하고 레지스터 색인값의 시퀀스의 개시시에 다시 시작한다. 이것을 스텝 4로 나타낸다. 보존할 데이터 값들의 첫 번째 부분은, 이미 보존되고 예외 레벨 EL1에서 실행되는 예외처리 프로그램에 의해 요청된 레지스터들에 대응한다. 스텝 5로 나타낸 보존할 데이터 값들의 두 번째 부분은 예외 레벨 EL0와 관련되고 예외 레벨 EL1의 예외처리 프로그램에 의해 보존되지 않았던 데이터 값의 나머지 부분이다. 레지스터들로부터 데이터 값들의 보존의 종료시에, 모든 레지스터들이 소유값으로 표기되어 예외 레벨 EL2에 의해 소유된다는 것을 나타낸다.
각각의 데이터 값이 예외처리의 일부로서 제약된 스토어 명령에 의해 보존되므로, 이 레지스터의 새로운 소유자가 소유권 값을 사용하여 제약된 스토어 명령의 실행이 행해질 때의 예외 레벨에 대응하도록 설정된다. 따라서, 모든 데이터 값들이 레지스터 뱅크(16)로부터 적절한 보호된 영역 24, 26에 보존되었을 때, 모든 레지스터들이 예외 레벨 EL2에 의해 소유된 것으로 표기된다. 소유권 값들은 제약된 로드 명령에 의해 원래의 값으로 복귀되며, 이 제약된 로드 명령은 소유권 값을 이들 제약된 로드 명령들에 대한 관련된 타겟 예외 레벨로 설정한다.
레지스터 뱅크(16)로부터의 데이터 값들의 보존이 예외 레벨 EL2에 대해 예외 처리기에 의해 완료되면, 예외 레벨 EL2에 대한 나머지 예외처리가 행해진다. 이것이 완료하면, 예외처리 프로그램은 처리를 예외 레벨 EL1의 예외 처리기에 반환하고, 예외 레벨 EL1을 벗어날 때 이 예외 레벨과 관련되었던 레지스터들에 데이터 값을 복원한다.
도 9는 예외 진입시의 처리를 개략적으로 나타낸 흐름도이다. 스텝 52에서는 예외가 검출될 때까지 처리를 대기한다. 스텝 54에서는, 데이터 처리 시스템(2)이 동작하고 있는 예외 레벨이 예외 레벨 제어회로(20)에 의해 증분된다. 스텝 56에서는, 이전에 사용된 처리가 보호된 실행 환경의 일부이었는지 여부에 대해 판정이 행해진다. 인터럽트되었던 실행이 보호된 실행 환경의 일부이었던 경우에는, 보호된 실행 환경의 인터럽트와 관련된 예외 벡터가 지시하는 것과 같이, 스텝 58로 처리가 진행하여, 도 7에 나타낸 은닉 레지스터 보존 시퀀스가 실행된다. 인터럽트된 처리가 보호된 실행 환경에서 온 것이 아니면, 스텝 60으로 처리를 진행하여, 레지스터들로부터의 데이터 값이 예외처리 코드에 의해 종래의 방식으로 스택 메모리에 기억된다. 스텝 58 또는 스텝 60 이후에, 스텝 62로 처리를 진행하여, 예외의 추가 처리가 행해진다.
도 10은 예외 복귀를 개략적으로 나타낸 흐름도이다. 스텝 64에서는 예외 복귀를 원할 때까지 처리를 대기한다. 그후, 스텝 66은 처리로부터 이 예외에의 진입이 보호된 실행 환경에서 행해지고 있는지 여부를 판정한다. 보호된 실행 환경으로부터의 진입인 경우에, 스텝 68로 처리를 진행하여, 도 7의 은닉 레지스터 복원 동작이 행해진다. 보호된 실행 환경으로부터의 진입이 아닌 경우에는, 스텝 70으로 진행하여, 레지스터 콘텐츠가 종래의 방식으로 스택 메모리로부터 복원된다. 스텝 68 또는 스텝 70 이후에, 스텝 72로 진행하여, 복귀가 행해지고 있는 타겟 예외 레벨로 데이터 처리 시스템(2)의 예외 레벨이 전환된다. 그후, 스텝 74는 타겟 예외 레벨에서 처리를 재개한다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.

Claims (23)

  1. 각각의 데이터 값을 유지하고 관련된 소유권 변수를 각각 갖는 복수의 레지스터들과,
    상기 복수의 레지스터들 내부에 유지된 데이터 값에 대해 프로그램 명령들에 의해 지정된 데이터 처리 연산을 행하는 처리회로와,
    상기 복수의 레지스터들 중 한 개의 레지스터에 대한 상기 관련된 소유권 변수에 의해 지정된 소유권 값에 응답하여, 상기 소유권 값에 따라 상기 처리회로에 의한 상기 레지스터에 대한 액세스를 제어하는 레지스터 액세스 제어회로와,
    복수의 예외 레벨들 중에서 현재의 예외 레벨에서 동작하도록 상기 처리회로를 제어하는 예외 레벨 제어회로를 구비하고,
    상기 소유권 값은 상기 복수의 예외 레벨 상태들 중에서 한 개를 지정하고,
    상기 레지스터 액세스 제어회로는, 상기 현재의 예외 레벨이 상기 소유권 값에 의해 지정된 레벨과 소정의 방식으로 다를 때, 적어도 일부 프로그램 명령들에 의해 지정된 데이터 처리 연산을 행하도록 상기 처리회로에 의한 상기 레지스터에 대한 액세스를 제한하고,
    상기 복수의 예외 레벨들은 최저 특권 레벨 내지 최고 특권 레벨의 범위를 갖는 특권 레벨들의 계층에 대응하고, 상기 처리회로의 동작시에 발생하는 예외 상태는, 상기 최고 특권 레벨보다 낮은 특권 레벨에 대응하는 예외 레벨에서 동작할 때, 더 높은 특권 레벨을 갖는 예외 레벨로의 전환을 기동하고,
    상기 소정의 방식은, 상기 현재의 예외 레벨이 상기 계층 내에서 상기 소유권 값에 의해 지정된 예외 레벨보다 높은 것이고,
    상기 최저 특권 레벨이 상기 최고 특권 레벨보다 더 적은 특권을 갖는 데이터 처리장치.
  2. 제 1항에 있어서,
    상기 소유권 값은 기억 포인터를 갖고, 상기 레지스터 액세스 제어회로는 상기 처리회로가 상기 레지스터와 상기 기억 포인터에 의해 지정된 메모리 내부의 타겟 메모리 어드레스 사이의 타겟-제약된 데이터 전송 프로그램 명령들에 응답하여 타겟-제약된 데이터 전송 동작을 행하는 것을 허가하는 데이터 처리장치.
  3. 제 2항에 있어서,
    상기 레지스터 액세스 제어회로는, 상기 처리회로가 상기 레지스터와 상기 기억 포인터 이외에 의해 지정된 상기 메모리 내부의 타겟 메모리 어드레스 사이의 타겟-비제약된 데이터 전송 프로그램 명령들에 응답하여 타겟-비제약된 데이터 전송 동작을 행하지 않도록 금지하는 데이터 처리장치.
  4. 제 2항 또는 제 3항에 있어서,
    상기 소유권 값과 상기 기억 포인터는 상기 처치회로의 보호된 실행 콘텍스트와 관련되고,
    상기 보호된 실행 콘텍스트는 상기 메모리 내부에 보호된 기억 영역을 갖고,
    상기 보호된 기억 영역은, 상기 보호된 실행 콘텍스트에서 동작할 때 상기 처리회로 이외에 의해, 그리고 상기 타겟-제약된 데이터 전송 프로그램 명령들에 응답하여 행해진 상기 타겟-제약된 데이터 전송 동작에 의해, 액세스 불가능한 데이터 처리장치.
  5. 제 4항에 있어서,
    상기 기억 포인터에 의해 지정된 상기 타겟 메모리 어드레스는 상기 보호된 기억 영역 내부에 있는 데이터 처리장치.
  6. 제 2항 내지 제 5항 중 어느 한 항에 있어서,
    상기 기억 포인터는, 상기 타겟-제약된 데이터 전송 동작에 대한 상기 타겟 메모리 어드레스를 지정하기 위해 상기 기억 포인터와 조합하여 사용되는 관련된 레지스터 색인값을 갖는 데이터 처리장치.
  7. 제 6항에 있어서,
    상기 레지스터 색인값은 상기 복수의 레지스터들 각각에 대해 사용할 상기 타겟 메모리 어드레스를 지정하는데 사용되는 색인값을 포함하는 색인값들의 시퀀스의 일부인 데이터 처리장치.
  8. 제 7항에 있어서,
    상기 처리회로는 색인 리셋 프로그램 명령에 응답하여 상기 색인값을 상기 시퀀스 내부의 시작값으로 설정하는 데이터 처리장치.
  9. 제 7항 또는 제 8항에 있어서,
    상기 처리회로는 색인 변경 프로그램 명령에 응답하여 상기 색인값을 상기 시퀀스 내부의 다음의 색인값으로 설정하는 데이터 처리장치.
  10. 제 7항, 제 8항 또는 제 9항 중 어느 한 항에 있어서,
    상기 복수의 레지스터들 각각은 각각의 레지스터 번호를 갖고, 상기 색인값들의 시퀀스를 단조 순서(monotonic order)로 횡단하는 것은,
    상기 레지스터 번호들을 단조 순서로 횡단하는 것과,
    상기 데이터 처리장치의 동작중에 상기 복수의 레지스터들 내부의 대응하는 레지스터들의 감소하는 통계적 사용 빈도에 대응하는 순서로 상기 레지스터 번호들을 횡단하는 것 중에서 한 개에 해당하는 데이터 처리장치.
  11. 제 2항 내지 제 10항 중 어느 한 항에 있어서,
    상기 타겟-제약된 데이터 전송 동작은 상기 레지스터 내부의 데이터 값을 상기 타겟 메모리 어드레스에 기억하는 타겟-제약된 스토어 동작이고, 상기 처리회로는 상기 레지스터의 상기 소유권 값을 사용하여 상기 타겟 메모리 어드레스를 지정하는데 사용할 상기 기억 포인터를 식별하는 데이터 처리장치.
  12. 제 11항에 있어서,
    상기 타겟-제약된 스토어 동작은, 소정의 값을 상기 레지스터에 기억하고, 상기 처리회로의 현재 상태와 일치하도록 상기 레지스터의 상기 소유권 값을 설정하는 데이터 처리장치.
  13. 제 7항과, 제 11항 및 제 12항 중 어느 한 항에 있어서,
    상기 타겟-제약된 스토어 동작이 상기 시퀀스 내부의 최종 레지스터 색인값에 대해 기억을 행할 때, 스토어 시퀀스 완료된 마커 값이 기억되는 데이터 처리장치.
  14. 제 2항 내지 제 13항 중 어느 한 항에 있어서,
    상기 타겟=제약된 데이터 전송 동작이 상기 타겟 메모리 어드레스로부터 상기 레지스터에 데이터 값을 로드하는 타겟-제약된 로드 동작일 때, 상기 처리회로는 타겟 소유자 변수를 사용하여 상기 타겟 메모리 어드레스를 지정하는데 사용할 상기 기억 포인터를 식별하는 데이터 처리장치.
  15. 제 1항 및 제 14항에 있어서,
    상기 타겟-제약된 로드 동작은, 상기 데이터 값을 상기 레지스터에 로드하기 전에 상기 스토어 시퀀스 완료된 마커 값의 존재를 검사하는 데이터 처리장치.
  16. 제 2항 및 제 7항에 있어서,
    상기 타겟-제약된 데이터 전송 동작은 상기 레지스터 색인값을 상기 시퀀스 내부의 다음의 레지스터 색인값으로 더 설정하는 데이터 처리장치.
  17. 제 1항 및 제 16항에 있어서,
    상기 처리회로는, 타겟 소유자 설정 프로그램 명령에 응답하여, 상기 현재의 예외 레벨보다 낮은 특권 레벨을 갖는 지정된 예외 레벨에 대응하도록 상기 타겟 소유자 변수를 설정하는 데이터 처리장치.
  18. 제 1항과, 제 4항 내지 제 6항 중 어느 한 항에 있어서,
    상기 최고 특권 레벨보다 낮은 특권 레벨을 갖는 상기 예외 레벨들 각각은 상기 복수의 레지스터들 내부의 레지스터들의 소유자에 대응하는 보호된 실행 콘텍스트에 대한 지원을 제공하는 데이터 처리장치.
  19. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 레지스터 액세스 제어회로가 상기 소유권 값과 불일치한 상기 처리회로의 상태를 갖는 상기 레지스터에 대한 액세스를 행하려고 하는 상기 처리회로에 의한 시도를 검출할 때, 상기 레지스터 액세스 제어회로가 레지스터 소유권 예외를 발생하는 데이터 처리장치.
  20. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 복수의 레지스터들은,
    스칼라 범용 레지스터들,
    부동소수점 레지스터들, 및
    환경설정 레지스터들
    중에서 한 개 이상을 포함하는 데이터 처리장치.
  21. 데이터 처리방법으로서,
    관련된 소유권 변수를 각각 갖는 복수의 레지스터들 내부에 각각의 데이터 값을 유지하는 단계와,
    상기 복수의 레지스터들 내부에 유지된 데이터 값에 대해 프로그램 명령들에 의해 지정된 데이터 처리 연산을 행하는 단계와,
    상기 복수의 레지스터들 중 한 개의 레지스터에 대한 상기 관련된 소유권 변수에 의해 지정된 소유권 값에 응답하여, 상기 소유권 값에 따라 처리회로에 의한 상기 레지스터에 대한 액세스를 제어하는 단계와,
    복수의 예외 레벨들 중에서 현재의 예외 레벨에서 동작하도록 상기 처리회로를 제어하는 단계를 포함하고,
    상기 소유권 값은 상기 복수의 예외 레벨 상태들 중에서 한 개를 지정하고,
    상기 처리방법은, 상기 현재의 예외 레벨이 상기 소유권 값에 의해 지정된 레벨과 소정의 방식으로 다를 때, 적어도 일부 프로그램 명령들에 의해 지정된 데이터 처리 연산을 행하도록 상기 처리회로에 의한 상기 레지스터에 대한 액세스를 제한하는 단계를 더 포함하고.
    상기 복수의 예외 레벨들은 최저 특권 레벨 내지 최고 특권 레벨의 범위를 갖는 특권 레벨들의 계층에 대응하고, 상기 처리회로의 동작시에 발생하는 예외 상태는, 상기 최고 특권 레벨보다 낮은 특권 레벨에 대응하는 예외 레벨에서 동작할 때, 더 높은 특권 레벨을 갖는 예외 레벨로의 전환을 기동하고,
    상기 소정의 방식은, 상기 현재의 예외 레벨이 상기 계층 내에서 상기 소유권 값에 의해 지정된 예외 레벨보다 높은 것이고,
    상기 최저 특권 레벨이 상기 최고 특권 레벨보다 더 적은 특권을 갖는 데이터 처리방법.
  22. 제 21항에 있어서,
    상기 소유권 값은 관련된 기억 포인터를 갖고,
    상기 제어단계는, 상기 레지스터와 상기 기억 포인터에 의해 지정된 메모리 내부의 타겟 메모리 어드레스 사이에서의 타겟-제약된 데이터 전송 프로그램 명령들에 응답하여 타겟-제약된 데이터 전송 동작의 수행을 허가하고,
    상기 소유권 값과 상기 기억 포인터는 보호된 실행 콘텍스트와 관련되고,
    상기 보호된 실행 콘텍스트는 메모리 내부에 보호된 기억 영역을 갖고,
    상기 보호된 기억 영역은, 상기 보호된 실행 콘텍스트에서 동작할 때 상기 처리회로 이외에 의해, 그리고 상기 타겟-제약된 데이터 전송 프로그램 명령들에 응답하여 행해진 상기 타겟-제약된 데이터 전송 동작에 의해, 액세스 불가능한 데이터 처리방법.
  23. 제 21항 또는 제 22항에 있어서,
    예외를 받아들여 특권 레벨들의 계층 내부의 더 높은 특권 레벨로 전환시에, 한 개 이상의 타겟-제약된 프로그램 명령들을 실행하여 상기 복수의 레지스터들 내부에 기억된 값을 상기 보호된 기억 영역에 기억하고,
    상기 예외로부터 복귀하여 상기 보호된 실행 콘텍스트에 대응하는 특권 레벨들의 계층 내부의 더 낮은 특권 레벨로 전환시에, 한 개 이상의 타겟-제약된 프로그램 명령들을 실행하여 보호된 기억 영역 내부에 기억된 값을 상기 복수의 레지스터들에 로드하는 데이터 처리방법.
KR1020187027497A 2016-03-02 2017-02-10 레지스터 액세스 제어 KR20180118699A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1603622.0A GB2547912B (en) 2016-03-02 2016-03-02 Register access control
GB1603622.0 2016-03-02
PCT/GB2017/050344 WO2017149269A1 (en) 2016-03-02 2017-02-10 Register access control

Publications (1)

Publication Number Publication Date
KR20180118699A true KR20180118699A (ko) 2018-10-31

Family

ID=55807180

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187027497A KR20180118699A (ko) 2016-03-02 2017-02-10 레지스터 액세스 제어

Country Status (10)

Country Link
US (1) US10762226B2 (ko)
EP (1) EP3423936B1 (ko)
JP (1) JP6913689B2 (ko)
KR (1) KR20180118699A (ko)
CN (1) CN108701031B (ko)
GB (1) GB2547912B (ko)
IL (1) IL260708B (ko)
MY (1) MY185919A (ko)
TW (1) TWI746523B (ko)
WO (1) WO2017149269A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210030308A (ko) 2021-02-26 2021-03-17 채령 야외용 길고양이 집

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684948A (en) * 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US6516395B1 (en) 1997-11-20 2003-02-04 Advanced Micro Devices, Inc. System and method for controlling access to a privilege-partitioned address space with a fixed set of attributes
DE69942339D1 (de) * 1998-08-24 2010-06-17 Microunity Systems Eng System mit breiter operandenarchitektur und verfahren
US6473819B1 (en) * 1999-12-17 2002-10-29 International Business Machines Corporation Scalable interruptible queue locks for shared-memory multiprocessor
TW200511111A (en) * 2003-07-30 2005-03-16 Koninkl Philips Electronics Nv Microcontroller with an interrupt structure having programmable priority levels with each priority level associated with a different register set
US7243193B2 (en) * 2004-05-27 2007-07-10 Silverbrook Research Pty Ltd Storage of program code in arbitrary locations in memory
US20160098279A1 (en) * 2005-08-29 2016-04-07 Searete Llc Method and apparatus for segmented sequential storage
GB2440968B (en) * 2006-08-16 2011-02-02 Advanced Risc Mach Ltd Protecting system control registers in a data processing apparatus
CN101627365B (zh) * 2006-11-14 2017-03-29 索夫特机械公司 多线程架构
US9141572B2 (en) * 2006-12-15 2015-09-22 Microchip Technology Incorporated Direct memory access controller
US20190377580A1 (en) * 2008-10-15 2019-12-12 Hyperion Core Inc. Execution of instructions based on processor and data availability
JP5414057B2 (ja) * 2009-05-22 2014-02-12 ルネサスエレクトロニクス株式会社 マイクロコンピュータ
WO2010142432A2 (en) * 2009-06-09 2010-12-16 Martin Vorbach System and method for a cache in a multi-core processor
US8520969B2 (en) * 2009-08-25 2013-08-27 Stmicroelectronics S.R.L. Digital image processing apparatus and method
GB2474522B (en) * 2009-10-19 2014-09-03 Advanced Risc Mach Ltd Register state saving and restoring
GB2478726B (en) * 2010-03-15 2013-12-25 Advanced Risc Mach Ltd Mapping between registers used by multiple instruction sets
GB2478733B (en) * 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events
GB2482700A (en) * 2010-08-11 2012-02-15 Advanced Risc Mach Ltd Memory access control
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
WO2012086288A1 (ja) * 2010-12-20 2012-06-28 インターナショナル・ビジネス・マシーンズ・コーポレーション 例外の制御方法、システムおよびプログラム
US8782351B2 (en) * 2011-10-13 2014-07-15 International Business Machines Corporation Protecting memory of a virtual guest
US8788763B2 (en) * 2011-10-13 2014-07-22 International Business Machines Corporation Protecting memory of a virtual guest
KR20130050776A (ko) * 2011-11-08 2013-05-16 에스케이하이닉스 주식회사 반도체 장치와 반도체 장치를 포함하는 반도체 시스템 및 그 동작방법
GB2501343A (en) * 2012-02-08 2013-10-23 Advanced Risc Mach Ltd Data processing apparatus and method using secure domain and less secure domain
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
WO2014159123A1 (en) * 2013-03-12 2014-10-02 Microchip Technology Incorporated Programmable cpu register hardware context swap mechanism
US9569612B2 (en) * 2013-03-14 2017-02-14 Daniel Shawcross Wilkerson Hard object: lightweight hardware enforcement of encapsulation, unforgeability, and transactionality
US9588572B2 (en) * 2013-08-28 2017-03-07 Via Technologies, Inc. Multi-core processor having control unit that generates interrupt requests to all cores in response to synchronization condition
US10108548B2 (en) * 2014-08-19 2018-10-23 MIPS Tech, LLC Processors and methods for cache sparing stores
US9747218B2 (en) * 2015-03-20 2017-08-29 Mill Computing, Inc. CPU security mechanisms employing thread-specific protection domains
GB2539433B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
US10235176B2 (en) * 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10310978B2 (en) * 2017-09-29 2019-06-04 Intel Corporation Apparatus and method for multi-level cache request tracking
US10592164B2 (en) * 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210030308A (ko) 2021-02-26 2021-03-17 채령 야외용 길고양이 집

Also Published As

Publication number Publication date
TWI746523B (zh) 2021-11-21
IL260708B (en) 2020-07-30
CN108701031B (zh) 2023-06-27
JP2019511042A (ja) 2019-04-18
MY185919A (en) 2021-06-14
WO2017149269A1 (en) 2017-09-08
GB201603622D0 (en) 2016-04-13
EP3423936B1 (en) 2019-11-13
CN108701031A (zh) 2018-10-23
JP6913689B2 (ja) 2021-08-04
GB2547912B (en) 2019-01-30
US20190034654A1 (en) 2019-01-31
GB2547912A (en) 2017-09-06
TW201734821A (zh) 2017-10-01
US10762226B2 (en) 2020-09-01
EP3423936A1 (en) 2019-01-09

Similar Documents

Publication Publication Date Title
JP5680679B2 (ja) 例外イベントを取り扱うための装置および方法
KR101673990B1 (ko) 프로그램가능 예외 처리 지연
EP2812835B1 (en) Maintaining secure data isolated from non-secure access when switching between domains
US5701493A (en) Exception handling method and apparatus in data processing systems
JP4610593B2 (ja) デュアルスレッドプロセッサ
TWI726925B (zh) 用於管理有界指標的裝置和方法
US9727380B2 (en) Global register protection in a multi-threaded processor
US20050240701A1 (en) Interrupt control apparatus
US9760374B2 (en) Stack pointer and memory access alignment control
KR20180029054A (ko) 보안 모드 상태 데이터 액세스 트랙킹
US20080010426A1 (en) Processor system and processing method for operating system program in processor system
KR20180118699A (ko) 레지스터 액세스 제어
JP2011070290A (ja) データプロセッサ
EP3462308B1 (en) Transaction nesting depth testing instruction
TW201734769A (zh) 處理向量指令
JPS582947A (ja) 時間待合せ制御方式
KR20030064888A (ko) 하드웨어 루프에 대한 보안 제공 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal