KR20180004192A - 정확한 코드 실행 컨텍스트를 검증하는 체크 명령어 - Google Patents

정확한 코드 실행 컨텍스트를 검증하는 체크 명령어 Download PDF

Info

Publication number
KR20180004192A
KR20180004192A KR1020177034502A KR20177034502A KR20180004192A KR 20180004192 A KR20180004192 A KR 20180004192A KR 1020177034502 A KR1020177034502 A KR 1020177034502A KR 20177034502 A KR20177034502 A KR 20177034502A KR 20180004192 A KR20180004192 A KR 20180004192A
Authority
KR
South Korea
Prior art keywords
processor state
data processing
instruction
state check
runtime
Prior art date
Application number
KR1020177034502A
Other languages
English (en)
Other versions
KR102600220B1 (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 KR20180004192A publication Critical patent/KR20180004192A/ko
Application granted granted Critical
Publication of KR102600220B1 publication Critical patent/KR102600220B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • 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
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30094Condition code generation, e.g. Carry, Zero 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/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/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/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)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

프로세서 상태 체크 명령어에서 규정한 프로세서 상태 체크 값에 일치하는 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된, 프로세서 상태에서 데이터 처리장치가 현재 작동중인지를 판정하기 위해 상기 프로세서 상태 체크 명령어를 이용하는 데이터 처리장치와 데이터 처리방법을 제공한다. 상기 프로세서 상태 체크 값에 일치하는 요구된 런타임 프로세서 상태 콘피규레이션 값(들)에 따라, 상기 프로세서 상태 체크 명령어는 비효율적 명령어로서 취급된다. 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값이 상기 프로세서 상태 체크 값에 일치하지 않을 때 예외가 생성된다. 따라서, 데이터 처리장치의 보안이 향상된다.

Description

정확한 코드 실행 컨텍스트를 검증하는 체크 명령어
본 발명은 데이터 처리장치에 관한 것이다. 보다 구체적으로는, 본 발명은, 이 데이터 처리장치상에서 프로그램 코드를 실행하는 컨텍스트가 정확한 것을 체크하는 것에 관한 것이다.
데이터 처리장치는, 이 데이터 처리장치가 자신의 데이터 처리장치를 실행시키는 방식에 관해 여러 가지 효과를 갖는 하나 보다 많은 상태 또는 모드에서 연산하여도 되지만, 특히 현재 그 데이터 처리장치에 기억된 데이터에 대하여 액세스되게 하는 것을 규정하여도 된다. 예를 들면, 메모리 관리 유닛(MMU)은, 상기 메모리에의 액세스를 감시하기 위해서 상기 데이터 처리장치의 프로세서와 상기 메모리와의 사이에 삽입되어도 된다. 상기 MMU는, 상기 프로세서가 비특권 모드(less privileged mode)나 비보안 상태에서 연산중일 때, 특권 또는 보안 상태에서 연산할 때 상기 프로세서에 액세스 가능하도록만 규정된 상기 메모리의 영역들에 액세스시키지 않도록 구성될 수 있다. 예를 들면, 이것은, 상기 메모리에 기억된 페이지 테이블들에 액세스하는 상기 MMU에 의해 행해져도 되고, 그 테이블의 엔트리들은 메모리의 어느 영역에 어느 모드나 상태에 액세스 가능한지를 규정한다. 이러한 기술들의 제공은, 이전에, 상기 메모리에 기억된 데이터 항목들의 원하는 보안이 상기 데이터 처리장치의 연산동안에 고려되도록 보장하는데 충분한 것으로서 알려진 적이 있다.
일 실시예에서, 데이터 처리장치는, 데이터 처리 명령어들의 시퀀스에 응답하여 데이터 처리 연산들을 행하는 데이터 처리회로를 구비하고, 상기 데이터 처리회로는 상기 데이터 처리장치에 기억된 적어도 하나의 런타임(runtime) 프로세서 상태 콘피규레이션 값에 응답하여 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 프로세서 상태에서 상기 데이터 처리 연산들을 행하고, 상기 데이터 처리회로는, 프로세서 상태 체크 명령어에 응답하여, 상기 프로세서 상태 체크 명령어에 의해 규정된 프로세서 상태 체크 값에 일치하는 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 따른 무연산 조건을 확립하고, 이 무연산 조건이 확립될 때 상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하고, 상기 무연산 조건이 확립되지 않을 때 불법 명령어 예외를 생성하는 회로이고, 상기 불법 명령어 예외에 응답하여 상기 데이터 처리 명령어들의 시퀀스의 또 다른 실행이 방지된다.
다른 실시예에서, 컴퓨터 프로그램 제품에는, 컴퓨팅 디바이스상에서 실행될 때, 이 컴퓨팅 디바이스에 상기 실시예의 데이터 처리장치로서 작동시키는 비일시적 방식으로 컴퓨터 프로그램이 기억된다.
다른 실시예에서, 컴퓨터 프로그램 제품에는, 상기 실시예에 따라 기재된 것처럼 적어도 하나의 프로세서 상태 체크 명령어를 포함하는 비일시적 방식으로 컴퓨터 프로그램이 기억된다.
다른 실시예에서, 동적 코드 생성기는 상기 실시예에 따른 데이터 처리장치용 데이터 처리 명령어들을 생성 가능하고, 상기 데이터 처리 명령어들은 상기 프로세서 상태 체크 명령어를 포함한다.
다른 실시예에서, 가상 머신은 데이터 처리장치상에서 실행하는 컴퓨터 프로그램에 의해 제공되고, 상기 가상 머신은 상기 실시예의 상기 장치에 대응한 명령어 실행 환경을 제공한다.
다른 실시예에서, 데이터 처리장치는, 데이터 처리 명령어들의 시퀀스에 응답하여, 상기 데이터 처리장치에 기억된 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 프로세서 상태에서 행해지는 데이터 처리 연산들을 행하는 수단; 프로세서 상태 체크 명령어에 의해 규정된 프로세서 상태 체크 값에 일치하는 상기 런타임 프로세서 상태 콘피규레이션 값에 따른 무연산 조건을 확립하는 수단; 상기 무연산 조건이 확립될 때 상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하는 수단; 및 상기 무연산 조건이 확립되지 않을 때 불법 명령어 예외를 생성하는 수단을 구비하고, 상기 불법 명령어 예외에 응답하여 상기 데이터 처리 명령어들의 시퀀스의 또 다른 실행이 방지된다.
다른 실시예에서, 데이터 처리방법은, 데이터 처리 명령어들의 시퀀스에 응답하여, 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 프로세서 상태에서 행해지는 데이터 처리 연산들을 행하는 단계; 프로세서 상태 체크 명령어에 응답하여, 상기 프로세서 상태 체크 명령어에 의해 규정된 프로세서 상태 체크 값에 일치하는 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 따른 무연산 조건을 확립하는 단계; 상기 무연산 조건이 확립될 때 상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하는 단계; 및 상기 무연산 조건이 확립되지 않을 때 불법 명령어 예외를 생성하는 단계를 포함하고, 상기 불법 명령어 예외에 응답하여 상기 데이터 처리 명령어들의 시퀀스의 또 다른 실행이 방지된다.
다른 실시예에서, 컴퓨터 프로그램 제품에는, 컴퓨팅 디바이스상에서 실행될 때, 이 컴퓨팅 디바이스에 상기 실시예의 방법을 실행시키는 비일시적 방식으로 컴퓨터 프로그램이 기억된다.
본 기술들은, 아래의 첨부도면에 도시된 것과 같은 실시예들을 참조하여 예시로만 한층 더 설명하겠다:
도 1은 일 실시예에서 데이터 처리장치를 개략적으로 도시한 것이고,
도 2a는 일 실시예에서 데이터 처리장치내의 실행회로와 레지스터들의 구성을 개략적으로 도시한 것이고,
도 2b는 일 실시예에서 데이터 처리장치내에서 지원된 특권 레벨들 및/또는 예외 레벨들을 개략적으로 도시한 것이고,
도 2c는 일 실시예에서 프로세서 코어와 메모리 사이에 삽입된 메모리 관리 유닛을 개략적으로 도시한 것이고,
도 3a는 일 실시예에서 프로세서 상태 체크 명령어의 2개의 예를 도시한 것이고,
도 3b는 일 실시예에서 상기 데이터 처리회로가 도 3a의 제1의 프로세서 상태 체크 명령어에 응답하는 방식의 의사코드 표현을 도시한 것이고,
도 4a는 일 실시예에서 프로세서 상태 체크 명령어를 도시한 것이고,
도 4b는 일 실시예에서 도 4a의 프로세서 상태 체크 명령어를 실행할 때 허가 룩업 테이블을 참조하는 실행회로를 개략적으로 도시한 것이며,
도 4c는 일 실시예에서 2개의 프로세서 상태 전용 체크 명령어들을 도시한 것이고,
도 5는 일 실시예의 방법에서 실행된 단계들의 시퀀스를 도시한 것이고,
도 6은 일부의 실시예를 제공 또는 지원하는데 사용되는 범용 컴퓨팅 디바이스를 개략적으로 도시한 것이고,
도 7은 일 실시예에 따른 가상 머신 환경을 개략적으로 도시한 것이다.
적어도 일부의 실시예에서 제공하는 데이터 처리장치는, 데이터 처리 명령어들의 시퀀스에 응답하여 데이터 처리 연산들을 행하는 데이터 처리회로를 구비하고, 상기 데이터 처리회로는 상기 데이터 처리장치에 기억된 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 응답하여 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 프로세서 상태에서 상기 데이터 처리 연산들을 행하고, 상기 데이터 처리회로는, 프로세서 상태 체크 명령어에 응답하여, 상기 프로세서 상태 체크 명령어에 의해 규정된 프로세서 상태 체크 값에 일치하는 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 따른 무연산 조건을 확립하고, 이 무연산 조건이 확립될 때 상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하고, 상기 무연산 조건이 확립되지 않을 때 불법 명령어 예외를 생성하는 회로이고, 상기 불법 명령어 예외에 응답하여 상기 데이터 처리 명령어들의 시퀀스의 또 다른 실행이 방지된다.
본 기술에 의해 인식된 것은, 데이터 처리장치의 데이터 처리회로가 메모리의 특별한 영역들을 액세스시키는 규정된 상태에서 연산중이 아니라면 메모리의 특별한 영역들을 액세스할 수 없도록 보장하도록 구성된 데이터 처리장치를 제공하여도 되긴 하지만, 그럼에도 불구하고 상기 데이터 처리 연산들에 대한 신뢰 가능한 보안이 전체적으로 보장되지 않는 상황이 (프로그램 코드에서 의도하지 않은 버그들에 기인하든 의도된 악성 공격에 기인하든) 일어날 수도 있다는 것이다. 예를 들면, 본 기술에 의해 인식된 것은, 버그들이나 공격들이, 노출되지 않아야 하는(즉, 보안이 유지되어야 하는) 개인(private) 알고리즘 등과 같은, 감지 코드의 "컨텍스트에 벗어난" 사용으로 이어지는 것이 가능할 수도 있다는 것이다. 또는, 커널 컨텍스트로부터 순수 유저 코드 등, 감지 컨텍스트에서 부적절한 코드의 사용이 일어날 수도 있는 상황이 (버그들에 기인하든 공격에 기인하든) 일어날 수도 있다. 본 기술들에 의해 인식된 것은, 이러한 상황들에 의해, 예를 들면 메모리 관리 유닛에 의해 처리된 메모리 보호 속성들의 정확한 콘피규레이션에도 불구하고, 보안이 취약하게 되고 취약점이 공격받게 될 수 있었다는 것이다.
이러한 과제를 해결하기 위해서, 본 기술들에서는, 상기 데이터 처리장치가 해석하여 실행할 수 있는 상기 규정된 세트의 데이터 처리 명령어들에서 프로세서 상태 체크 명령어를 제공한다. 이 프로세서 상태 체크 명령어는, 데이터 처리회로(예를 들면, 프로세서 코어, 또는 보다 구체적으로는 실행 파이프라인)를, 특히 상기 데이터 처리장치에 기억된 런타임 프로세서 상태 콘피규레이션 값과 비교하여서, 상기 프로세서 상태 체크 명령어에 의해 규정된 프로세서 상태 체크 값과 현재의 (런타임) 프로세서 상태를 비교시킨다. 이 때문에, 상기 데이터 처리장치의 프로그래머는, 프로세서 상태 체크 명령어를 실행해야 하는 원하는 컨텍스트에 대한 이 프로세서 상태 체크 명령어에 의해 규정된 프로세서 상태 체크 값을 적절하게 설정할 수 있다. 달리 말하면, 이 프로세서 상태 체크 명령어는, 상기 데이터 처리장치의 프로그래머에 의해 데이터 처리 명령어들의 특정 시퀀스에서 하나 이상의 위치에 삽입될 수 있어, 그 데이터 처리 명령어들의 시퀀스를 실행할 때, 상기 데이터 처리회로는 그 데이터 처리 명령어들의 시퀀스를 실행하는 것이 적절한(즉, 실행시킬 수 있는) 상태에서 그 데이터 처리장치가 현재 연산중인 것을 보장하도록 (상기 프로세서 상태 체크 명령어에 응답하여) 체크를 행할 것이다. 이 체크를 거치면, 상기 데이터 처리회로는 그 프로세서 상태 체크 명령어를 무연산(NOP) 명령어로서 취급하고 어떠한 부작용도 없이 실행이 계속된다. 그렇지만, 그 체크가 실패하면, 상기 데이터 처리회로는 이러한 데이터 처리 명령어들의 시퀀스의 또 다른 실행을 실행할 수 없는 것을 보장하도록 적절히 규정될 수 있는 예외를 발생함으로써 응답한다. 이에 따라, 이 프로세서 상태 체크 명령어의 제공은, 실행되고 있는 상기 데이터 처리 연산들에 대해 현재의 컨텍스트(모드 또는 상태)가 적절한 것을 (상기 프로그래머가 이 프로세서 상태 체크 명령어를 코드에 삽입하는 것에 관심이 있을 때마다) 체크할 수 있는 것을 보장하도록 (메모리 보호 속성들을 정확히 구성하는 공지된 기술에 대한) 또 다른 메카니즘을 상기 시스템 프로그래머가 갖도록 보장한다.
상기 런타임 프로세서 상태 콘피규레이션 값에 의해 규정되고 그 프로세서 상태 체크 명령어를 사용하여 체크된 상기 프로세서 상태의 특징은 다양한 형태를 취할 수도 있다. 일부의 실시예에서, 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 상기 프로세서 상태는, 상기 데이터 처리장치가 그 데이터 처리 연산들을 행할 수 있는 다수의 예외 레벨들 중 하나의 예외 레벨에서의 연산을 포함한다. 이 다수의 예외 레벨들(대신에, 일부의 문맥들에서는, "특권 레벨들" 또는 "링(ring)들"이라고도 함)은, 예를 들면, 하위 예외 레벨에 대해 상기 데이터 처리장치에서의 데이터에 대한 특권 및 허용 액세스 가능성의 레벨이 각각 증가하는 4개의 예외 레벨로 구성되어도 된다. 일부의 실시예에서, 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 상기 프로세서 상태는, 상기 데이터 처리장치가 그 데이터 처리 연산들을 행할 수 있는 다수의 보안 상태들 중 하나의 보안 상태를 포함한다. 예를 들면, 상기 데이터 처리장치는, "보안" 모드 또는 "비보안" 모드에서 연산하도록 구성되어도 되고, 여기서 상기 데이터 처리장치에 기억된 특정한 데이터나 이 장치에 보유된 프로그램 코드의 특별한 시퀀스들은, 상기 데이터 처리장치가 현재 "보안" 모드에 있을 때만 각각 액세스 또는 실행되어도 된다.
일부의 실시예에서, 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 상기 프로세서 상태는, 상기 데이터 처리장치가 상기 데이터 처리 연산들을 행할 수 있는 다수의 디버그 상태들 중 하나의 디버그 상태를 포함한다. 디버그 상태에서 연산할 능력은, 데이터 처리장치가 데이터 처리 명령어들의 시퀀스에 응답하여 자신의 데이터 처리 연산들을 실행하므로 상기 데이터 처리장치의 내부 연산에 대한 프로그래머 가시성을 보다 크게 하기 위해서 상기 데이터 처리장치에 제공되어도 된다. 그렇지만, 본 기술들에 의해 인식된 것은, 상기 디버그 상태에서의 연산에 의해 상기 프로그래머에 제공되고, 예를 들면 데이터 처리장치를 사용하여 데이터 처리 명령어들을 통한 "단일의 단계"를 행하는 능력을 포함할 수도 있는 이 추가의 가시성이, 특정한 컨텍스트들에서 제공되는 것만 적절할 수도 있고, 또한, 예를 들면, 데이터 항목들 또는 프로그램 명령어들의 시퀀스들을 보다 크게 보호해야하는 컨텍스트들에서 제공되는 것은 적절하지 않을 수도 있다는 것이다.
일부의 실시예에서, 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 상기 프로세서 상태는, 상기 데이터 처리장치가 상기 데이터 처리 연산들을 행할 수 있는 다수의 특권 모드들 중 하나의 특권 모드를 포함한다. 마찬가지로, 상기 데이터 처리장치는, 하나보다 많은 특권 모드에서 연산할 수 있도록 구성되어도 되고, 이때 특정 데이터 항목들에의 액세스, 또는 특별한 프로그램 코드의 시퀀스들의 실행은, 상기 데이터 처리장치가 "특권" 모드에 있을 경우만 실행되야 하고 "비특권" 모드에서 연산할 경우에는 실행되지 않아야 하고, 본 기술들은 이러한 제약들의 시행을 지원한다.
상술한 런타임 프로세서 상태 콘피규레이션 값들의 예들은, 프로세서 모드나 상태를 개별적으로 규정하여도 되지만, 일부의 실시예에서 상기 데이터 처리회로는 상기 데이터 처리장치에 기억된 다수의 런타임 프로세서 상태 콘피규레이션 값들에 응답하여, 상기 다수의 런타임 프로세서 상태 콘피규레이션 값들에 의해 규정된 각각의 프로세서 상태들에서 상기 데이터 처리 연산들을 행하는 회로이고, 상기 데이터 처리회로는 상기 프로세서 상태 체크 명령어에 응답하여, 상기 다수의 런타임 프로세서 상태 콘피규레이션 값들의 각각을, 상기 무연산 조건을 확립하기 위해 상기 프로세서 상태 체크 명령어에 의해 규정된 다수의 프로세서 상태 체크 값들 중 대응한 프로세서 상태 체크 값에 일치하도록 요구하는 회로이다. 이러한 실시예에서, 상기 프로세서 상태 체크 명령어는 상기 다수의 런타임 프로세서 상태 콘피규레이션 값들의 각각이 상기 무연산 조건이 확립되는 순서로 일치해야 하는 값들을 규정할 수 있다. 달리 말하면, 하나의 프로세서 상태 체크 명령어는, 몇몇의 다른 프로세서 상태 콘피규레이션 값 각각에 대해 요구된 값들을 규정하여도 좋다.
다수의 타입의 프로세서 상태 체크 명령어는 예를 들면, 런타임 프로세서 상태 콘피규레이션 값의 타입마다 하나의 타입이 제공되어도 되고, 이러한 실시예에서 상기 데이터 처리회로는 상기 데이터 처리장치에 기억된 다수의 런타임 프로세서 상태 콘피규레이션 값들에 응답하여, 상기 다수의 런타임 프로세서 상태 콘피규레이션 값들에 의해 규정된 각각의 프로세서 상태들에서 상기 데이터 처리 연산들을 행하는 회로이고, 상기 데이터 처리회로는 다수의 타입의 프로세서 상태 체크 명령어 각각에 응답하여, 상기 다수의 런타임 프로세서 상태 콘피규레이션 값들 중 대응한 런타임 프로세서 상태 콘피규레이션 값을, 상기 무연산 조건을 확립하기 위해 그 프로세서 상태 체크 명령어에 의해 규정된 대응한 프로세서 상태 체크 값에 일치하도록 요구하는 회로다.
일부의 실시예에서, 상기 프로세서 상태 체크 명령어는, 상기 무연산 조건이 확립되는 순서로 일치해야 하는 주어진 타입의 프로세서 상태의 상기 프로세서 상태 체크 값 중 특별한 값을 규정한다. 그렇지만, 일부의 실시예에서, 상기 프로세서 상태 체크 명령어는 일 타입의 프로세서 상태에 대한 다수의 프로세서 상태 체크 값들을 규정하고, 상기 데이터 처리회로는 상기 프로세서 상태 체크 명령어에 응답하여, 일 타입의 프로세서 상태를 위해 규정된 상기 다수의 프로세서 상태 체크 값들 중 적어도 하나를, 상기 일 타입의 프로세서 상태가 상기 무연산 조건을 확립하기 위해 상기 데이터 처리장치에 기억된 상기 대응한 런타임 프로세서 상태 콘피규레이션 값에 일치하도록 요구하는 회로다. 달리 말하면, 상기 프로세서 상태 체크 명령어는, 상기 런타임 프로세서 상태 콘피규레이션 값이 상기 무연산 조건을 확립하기 위해서 하나보다 많은 허용값을 규정할 수 있다. 예를 들면, 몇몇의 연산 레벨들이 상기 데이터 처리장치의 연산을 위해 규정된 상기 예들에 있어서, 상기 프로세서 상태 체크 명령어는, 이들 레벨들 중 하나보다 많은 레벨(예를 들면, 최상위 2개)이, 데이터 처리장치가 연산중이어서 상기 무연산 조건이 확립되게 할 수도 있는 허용 상태들인 것을 규정할 수 있다.
상기 런타임 프로세서 상태 콘피규레이션 값은 상기 데이터 처리장치에서 다양한 위치나 포맷으로 기억되어도 되지만, 일부의 실시예에서 상기 데이터 처리장치는 상기 런타임 프로세서 상태 콘피규레이션 값을 기억하는 상태 레지스터를 구비한다.
상기 프로세서 상태 체크 명령어는, 다양한 방식으로 상기 대응한 프로세서 상태 체크 값을 규정하여도 된다. 일부의 실시예에서, 상기 프로세서 상태 체크 값은, 상기 프로세서 상태 체크 명령어에 포함된다. 달리 말하면, 상기 대응한 프로세서 상태 체크 값은, 상기 프로세서 상태 명령어 자신에 주어진 플래그나 즉시 값으로서 규정된다.
일부의 실시예에서, 상기 데이터 처리장치는, 상기 대응한 프로세서 상태 체크 값을 저장하고, 그 데이터 처리회로가 상기 프로세서 상태 체크 명령어를 참조하게 하는, 체크 값 스토리지를 더 구비한다. 이 체크 값 스토리지는, 예를 들면, 상기 프로세서 상태 체크 명령어가 인덱스를 제공하는 상기 데이터 처리장치에서의 룩업 테이블의 형태를 취하여도 됨으로써, 대응한 요구된 프로세서 상태 체크 값들이 비교되도록 검색되어도 된다.
상기 무연산 조건이 확립될 때 상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하는 방식은, 다수의 형태를 취할 수 있다. 일부의 실시예에서, 그 방식은, 상기 데이터 처리 연산들의 결과에 영향을 미치지 않고 상기 데이터 처리회로의 실행 파이프라인을 통해 상기 프로세서 상태 체크 명령어가 진행되게 하는 것을 포함한다. 따라서, 외부 관찰자에 대해서, 실행된 명령어들의 시퀀스에서 상기 프로세서 상태 체크 명령어의 존재는, 물론 비록 상기 실행 파이프라인을 통한 상기 프로세서 상태 체크 명령어의 통과에 의해 자원을 소비하였을 것이지만, 상기 데이터 처리 결과의 면에서 감지할 수 있는 영향을 미치지 못했었을 것이다. 일부의 실시예에서, 상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하는 것은, 상기 프로세서 상태 체크 명령어를 무연산 명령어로서 취급하는 것을 포함한다. 이 때문에, 상기 프로세서 상태 체크 명령어는, 첫번째 기회에 폐기되어도 된다.
적어도 일부의 실시예는, 컴퓨팅 디바이스상에서 실행될 때, 이 컴퓨팅 디바이스에 상기 실시예 중 어느 하나의 데이터 처리장치로서 작동시키는 비일시적 방식으로 컴퓨터 프로그램이 기억된, 컴퓨터 프로그램 제품을 제공한다.
적어도 일부의 실시예는, 상기 실시예들을 참조하여 상술한 것처럼 적어도 하나의 프로세서 상태 체크 명령어를 포함하는 비일시적 방식으로 컴퓨터 프로그램이 기억된, 컴퓨터 프로그램 제품을 제공한다.
적어도 일부의 실시예는, 상기 실시예 중 어느 하나의 데이터 처리장치용 데이터 처리 명령어들을 생성 가능한 동적 코드 생성기를 제공하고, 이때, 상기 데이터 처리 명령어들은 상술한 그 명령어들의 형태들 중 어느 하나의 형태로 프로세서 상태 체크 명령어를 포함한다. 예를 들면, 이 동적 코드 생성기는, 저스트 인 타임(JIT) 엔진의 형태를 취하여도 된다.
적어도 일부의 실시예는, 데이터 처리장치상에서 실행하는 컴퓨터 프로그램에 의해 제공되되, 상기 실시예들 중 어느 하나의 상기 장치에 대응한 명령어 실행 환경을 제공하는, 가상 머신을 제공한다.
적어도 일부의 실시예의 데이터 처리장치는, 데이터 처리 명령어들의 시퀀스에 응답하여, 상기 데이터 처리장치에 기억된 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 프로세서 상태에서 행해지는 데이터 처리 연산들을 행하는 수단; 프로세서 상태 체크 명령어에 의해 규정된 프로세서 상태 체크 값에 일치하는 상기 런타임 프로세서 상태 콘피규레이션 값에 따른 무연산 조건을 확립하는 수단; 상기 무연산 조건이 확립될 때 상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하는 수단; 및 상기 무연산 조건이 확립되지 않을 때 불법 명령어 예외를 생성하는 수단을 구비하고, 상기 불법 명령어 예외에 응답하여 상기 데이터 처리 명령어들의 시퀀스의 또 다른 실행이 방지된다.
적어도 일부의 실시예의 데이터 처리방법은, 데이터 처리 명령어들의 시퀀스에 응답하여, 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 프로세서 상태에서 행해지는 데이터 처리 연산들을 행하는 단계; 프로세서 상태 체크 명령어에 응답하여, 상기 프로세서 상태 체크 명령어에 의해 규정된 프로세서 상태 체크 값에 일치하는 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 따른 무연산 조건을 확립하는 단계; 상기 무연산 조건이 확립될 때 상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하는 단계; 및 상기 무연산 조건이 확립되지 않을 때 불법 명령어 예외를 생성하는 단계를 포함하고, 상기 불법 명령어 예외에 응답하여 상기 데이터 처리 명령어들의 시퀀스의 또 다른 실행이 방지된다.
적어도 일부의 실시예는, 컴퓨팅 디바이스상에서 실행될 때, 이 컴퓨팅 디바이스에 상기 실시예의 방법을 실행시키는 비일시적 방식으로 컴퓨터 프로그램이 기억된, 컴퓨터 프로그램 제품을 제공한다.
이제, 일부의 특별한 실시예를 도면들을 참조하여 설명하겠다.
도 1은 일 실시예에서 데이터 처리장치를 개략적으로 도시한 것이다. 데이터 처리장치(10)는, 실행 파이프라인(12)과 관련 레지스터들(14)을 구비한다. 실행 파이프라인(12)에 의해 실행되는 데이터 처리 명령어들은, 상기 실행 파이프라인(12)에 발행되는 각 명령어에 근거하여 각 종 제어신호를 상기 실행 파이프라인(12)과 상기 레지스터들(14)에 송신하는 명령어 페치(fetch)부(16)에 의해 불려와져서, 원하는 데이터 처리가 일어난다. 상기 명령어 페치부(16)는 메모리(20)로부터 실행되는 데이터 처리 명령어들의 시퀀스를 검색하고, 상기 데이터 처리장치(10)는 최근에 액세스된 명령어들과 데이터의 복사본들이 일시적으로 기억되는 로컬 캐시(18)를 더 구비한다. 이러한 일반적인 데이터 처리장치의 구성은 당업자에게 익숙한 것이고, 여기서는 간략을 기하기 위해 추가의 상세한 설명을 생략한다. 그렇지만, 본 기술에 의하면, 데이터 처리장치(10)는, 프래그래머가 사용할 수 있는 "프로세서 상태 체크 명령어"에 응답하여, 상기 데이터 처리장치상에서 프로그램 코드를 실행하는 컨텍스트가 정확한 것을 보장하도록 구성된다. 이를 아래에서 보다 상세히 설명한다. 또한, 도 1은, 상기 데이터 처리장치(10)가 실행하기 위한 데이터 처리 명령어들의 시퀀스를 생성하고 상기 메모리(20)에 저장할 수 있는 저스트 인 타임(JIT) 동적 코드 생성기(22)로 이루어진 소프트웨어를 가동하고 있는 또 다른 데이터 처리장치(21)도 개략적으로 도시하고 있고, 이들 데이터 처리 명령어들은 상기 프로세서 상태 체크 명령어들 중 적어도 하나를 포함해도 된다는 것을 주목한다.
상기 데이터 처리장치(10)의 레지스터들(14)은, 상기 데이터 처리 명령어들이 지시한 데이터 처리 연산들을 지원하기 위해서, 도 1에 도시된 실행 파이프라인(12)에 의해 다양한 방식으로 사용되어도 된다. 그렇지만, 본 기술에 관련된 특별한 일 측면은, 프로세서 코어(즉, 실행 파이프라인 또는 회로)용 런타임 프로세서 상태를 규정하는 하나 이상의 값들을 보유하는 전용 레지스터들의 용도다. 이는 도 2a에 개략적으로 도시되어 있다. 본 도면에는, 이러한 타입의 상태 레지스터의 4개, 즉 예외 레벨 레지스터(23), 보안 상태 레지스터(24), 디버그 상태 레지스터(26) 및 특권 모드 레지스터(28)가 도시되어 있고, 각 레지스터는 런타임 프로세서 상태 콘피규레이션 값을 보유한다. 이들 4개의 레지스터 전부는 다양한 예들를 제공하기 위해 도 2a에 도시되어 있지만, 이 4개의 레지스터 전부가 상기 런타임 프로세서 상태를 규정하기 위해 있을 필요는 없고, 그 밖의 실시예가 이들 레지스터의 하나 이상만을 가져도 된다는 것을 주목해야 한다. 실제로, 예를 들면, 상기 예외 레벨 레지스터(23)과 상기 특권 모드 레지스터(28) 모두를 가질 필요가 없는데, 그 이유는 일부의 실시예에서 예외 레벨 및 특권 레벨이 근본적으로 동일한 것이기 때문이라고 말할 수도 있다. 예를 들면, ARM아키텍처의 컨텍스트에 있어서, 32비트 ARM은 특권 레벨들의 면에서 규정되어 있고, 64비트 ARM은 예외 레벨들의 면에서 규정되어 있다. 도 2a는, 디버그 상태 레지스터(26)에 설정된 값에 따라 구성된 실행회로(12)내에 보유된 디버그 인에인블 값(30)을 한층 더 도시한 것이다.
도 2b는 상기 실행회로(12)에서 제공하는 가상 머신 환경의 컨텍스트에 있어서, 상기 예외 레벨들/특권 레벨들의 일 사용례를 개략적으로 도시한 것이다. 도 2b는 이 가상화된 운영 환경내에서 동작하는 게스트 운영체계(34)와 애플리케이션(32)을 도시한 것이다. 이러한 게스트 운영체계와 이 운영체계가 실행하는 상기 애플리케이션의 전반적인 제어는 하이퍼바이저(36)에 의해 유지되고, 이 하이퍼바이저는 한층 더, 광 가상화 운영체계의 전반적인 제어를 유지하고, 특별한 가상 머신(즉, 게스트 운영체계와 이 운영체계가 가동중인 상기 애플리케이션들)이 그 체계에서 무엇을 알아 상호작용할 수 있는지를 가리킨다. 도 2b는, 도시된 상기 체계의 다른 구성요소가, 주어진 구성요소가 갖는 상기 체계상의 다른 구성요소의 제어 및 가시성의 레벨을 규정하는 상이한 "예외 레벨들"(EL0-3) 또는 "특권 레벨들"(PL0-2)에서 동작한다는 사실을 한층 더 개략적으로 도시한 것이다. 따라서, 특권 계층이 지원되고, 이때 상기 애플리케이션(32)은 그 계층의 최하위 레벨에서 동작하고, 상기 게스트 운영체계(34)는 그 계층의 다음 레벨에서 동작하며, 상기 하이퍼바이저(36)는 이 보다 더 높은 레벨에서 동작한다. 또한, 도 2b에는, 이 특권 계층의 또 다른 더 높은 레벨, 즉 보안 감지 데이터를 처리할 수도 있는 신뢰된 애플리케이션들/운영체계들과 그 신뢰가 제공되지 않는 그 밖의 애플리케이션들/운영체계들간에 신뢰 가능한 보안 분할을 제공하기 위해 상기 체계를 "보안 구역(secure world)"과 "비보안 구역"으로의 세부분할에 대해서 엄격한 제어를 유지하도록, 상기 체계에서 지원된 특권의 최고위 레벨("보안-PL1"/EL3)에서 동작하는 보안 모니터(38)가 도시되어 있다는 것도 주목한다.
상술한 보안 구역과 비보안 구역을 참조하여, 도 2c는, 일 실시예에서 상기 메모리의 규정된 보안 및 비보안 영역에의 액세스가 구현되는 일 방식을 개략적으로 도시한 것이다. 여기서, 프로세서 코어(40)는, 메모리 액세스 요구를 발행하여서 메모리(42)의 콘텐트에의 액세스를 찾는다. 이 메모리 액세스 요구는, 이러한 메모리 액세스 요구들을 감시하고, 특히 메모리(46)의 보안 영역에의 액세스가, 적절한 컨텍스트, 즉 상기 메모리 액세스 요구를 발행하는 관련 구성요소가 "보안"이라고 규정되는 컨텍스트에서 동작중일 때 상기 프로세서 코어(40)에만 제공되도록 보장하는 메모리 관리 유닛(MMU)(44)에 의해 수신된다. 예를 들면, 메모리(48)의 비보안 영역에의 액세스가 보다 자유롭게 제공될 수도 있어서, 상기 보안 구역이나 비보안 구역에서 동작하는 구성요소는 그 데이터에 액세스할 수도 있다. 상기 MMU(44)는, 대응한 페이지 테이블 엔트리의 속성들에 따라 주어진 메모리 액세스 요구에 대해 상기 메모리(42)에 진행시킬지를 판정한다. 상기 MMU(44)는 이 프로세스를 더 신속히 처리하기 위해서 다수의 페이지 테이블 엔트리들(50)을 국소적으로 저장하지만, 이들 페이지 테이블 엔트리들(50)은 원래, 당업자에게 익숙한 방식으로, 메모리내의 전체(full) 페이지 테이블로부터 적절히 검색된다.
도 3a는 일 실시예에서 2개의 프로세서 상태 체크 명령어의 예("MODE_ASSERT")를 도시한 것이다. 그 명령어의 제1 예는, 상기 예외 레벨, 상기 보안 상태, 및 상기 디버그 상태와 관련되는 필드들을 규정한다는 것을 알 수 있다. 상기 명령어의 이 필드들의 각각은, 상기 MODE_ASSERT 명령어가 비효율적 명령어로서 취급될 경우에 필요한 대응한 런 프로세서 상태 콘피규레이션 값을 가리키는 값을 갖도록 설정될 수 있다. 도 1의 데이터 처리장치(10)의 일 실시예에서는, 상기 MODE_ASSERT 명령어에 대해 상기 실행 파이프라인(12)을 통해 진행시키지만, 상기 명령어 페치부(회로)(16)로부터의 제어신호들은, 예를 들면, 그 명령어가 상기 레지스터들(14)의 콘텐트에 미칠 수 있는 효과를 제한함으로써, 그 명령어가 상기 데이터 처리 연산들의 결과에 영향을 미치지 않는다. 도 1의 데이터 처리장치(10)의 다른 실시예에서는, 상기 명령어 페치부(16)로부터의 제어신호들에 의해 이 명령어 MODE_ASSERT 명령어는 무연산(NOP) 명령어로서 취급되기 때문에 즉시 폐기된다. (도 2a에 대해 이루어진 언급과 마찬가지로) 상기 예외 레벨과 특권 모드 런타임 프로세서 상태 콘피규레이션 값 중 어느 것인가를 갖기만 하는 이 명령어들을 실행하는 상기 데이터 처리장치의 실시예들이 있을 수도 있고, 이에 대응하게 도 3a의 제2 예의 MODE_ASSERT 명령어가 상기 특권 레벨, 상기 보안 상태 및 상기 디버그 상태와 관련되는 필드들을 규정한다는 것을 다시 주목한다. 상기 데이터 처리장치의 구성은, 양쪽 명령어의 예에 대해, 필드들의 각 세트에서 상기 MODE_ASSERT 명령어에 규정된 적어도 하나의 값이 (예를 들면, 도 1 및 도 2a의 예에서 대응한 레지스터(14)에 저장된 것처럼) 상기 런타임 프로세서 상태 콘피규레이션을 현재 규정하는 대응한 값에 일치하면, 상기 MODE_ASSERT 명령어가 비효율적 명령어(예를 들면, NOP 명령어로서) 취급되는 구성이다. 일치하지 않으면, 불법 명령어 예외가 생성된다.
도 3b는 상기 데이터 처리장치의 MODE_ASSERT 명령어의 예에 대한 응답을 구현하는 의사코드의 예시도다. 도 3b의 예에서는, "특권 모드" 값에 의존하지 않고 단지 "예외 레벨" 값에만 의존하는데, 그 이유는 본 예에서 데이터 처리장치가 예외 레벨을 갖지만 특권 레벨은 갖지 않도록 구성되기 때문이라는 것을 주목한다. 상기 명령어에서 상기 예외 레벨, 상기 보안 상태 및 상기 디버그 상태 각각에 대해 설정된 상기 플래그들 중 적어도 하나가, 상기 무연산 응답에 대한 각각의 현재의 (런타임) 레벨 또는 상태에 일치하여 후속한다는 것을 알 수 있다. 그렇지 않으면, 불법 명령어 예외가 생성된다. 다시 도 2b를 참조하면, 상기 MODE_ASSERT 명령어의 필드들의 값들의 일부의 조합은, (예외레벨/특권 레벨 및 보안의 면에서) 상기 특권 계층의 상기 계 레벨 정의, 즉 PL2 및 보안; EL2 및 보안; EL3 및 비보안으로 인하여, 항상 무효라는 것을 주목한다.
상기 MODE_ASSERT 명령어는 상기 MODE_ASSERT 명령어가 NOP 명령어로서 취급되게 하는 상기 런타임 프로세서 상태 콘피규레이션 값(들)을 규정하는 즉시 값들을 포함하여도 되지만, 도 4a에 도시된 상기 MODE_ASSERT 명령어는, 하나 이상의 허가 룩업 테이블에 2개의 인덱스들이 설치되도록 구성되므로, 상기 MODE_ASSERT 명령어에 의해, 상기 데이터 처리장치가 상기 허가 룩업 테이블을 참조하여 관련 런타임 프로세서 상태 콘피규레이션 값들을 결정하도록 구성된다. 도 4a의 예에서는, 기동되는 상기 MODE_ASSERT 명령어에 대한 상기 NOP 응답을 위해 일치시킬 경우 예외 레벨과 보안 상태가 필요하다. 도 4b는, 도 4a에 도시된 것과 같은 MODE_ASSERT 명령어를 실행하는 콘피규레이션을 갖는 데이터 처리장치(60)의 예를 개략적으로 도시한 것이다. 상기 명령어를 실행하는 상기 실행회로(62)는, 각 인덱스를 사용하여, 관련 프로세서 상태 체크 값(상기 대응한 런타임 프로세서 상태 콘피규레이션 값에 대한 허용 값)을 반환하는 상기 허가 룩업 테이블(64)을 참조한다.
도 3a 및 도 4a에 도시된 MODE_ASSERT 명령어의 예는, 하나보다 많은 타입의 런타임 프로세서 상태 콘피규레이션 값(예를 들면, 도 4a의 예에서 예외 레벨 및 보안 상태 양쪽)에 대해 허용 런타임 프로세서 상태 콘피규레이션 값들을 규정한다. 도 4c는 하나의 타입의 상기 값에 대한 허용 런타임 프로세서 상태 콘피규레이션 값들, 즉 도 4c의 제1 예에서의 예외 레벨과 도 4c의 제2 예에서 보안 상태만을 각각 규정한다는 점에서, 각각 런타임 프로세서 상태 콘피규레이션 전용이 되도록 구성된, 2개의 또 다른 MODE_ASSERT 명령어의 예를 도시한 것이다. 이에 따라, 도 4c에 도시된 상기 명령어들의 각 예는, 그 명령어에 설정된 값 플래그들 중 적어도 하나가 상기 대응한 런타임 프로세서 상태 콘피규레이션 값에 일치하는 경우 NOP 명령어로서 취급될 것이고, 그렇지 않으면 불법 명령어 예외를 생성할 것이다.
도 5는 일 실시예의 방법에서 행하는 단계들의 시퀀스를 도시한 것이다. 그 흐름은, 상기 메모리로부터 명령어들을 불러와 상기 실행 파이프라인에 발행하는 단계 70에서 시작하는 것으로 할 수 있다. 그후, 단계 72에서는, 각 명령어를 검사하여, MODE_ASSERT 명령어에 접하는지를 판정한다. 접하지 않으면, 그 흐름은 단계 70으로 되돌아가고 상기 데이터 처리장치는 계속하여 메모리로부터 명령어들을 불러와 그것의 실행 파이프라인에 발행한다. MODE_ASSERT 명령어에 접하면, 단계 74에 흐름이 진행되어, 데이터 처리장치(프로세서)가 동작중인 현재의 예외 레벨이 상기 MODE_ASSERT 명령어에서의 적어도 하나의 예외 레벨(EL) 플래그에 일치하는지를 판정한다. 적어도 하나의 예외 레벨 플래그에 일치하면, 단계 76에 흐름이 진행되어, 현재의 보안 상태가 상기 MODE_ASSERT 명령어에 규정된 적어도 하나의 보안 플래그에 일치하는지를 판정한다. 적어도 하나의 보안 플래그에 일치하면, 단계 78에 흐름이 진행되어, 이 명령어를 NOP 명령어로서 취급하고, 단계 70에 흐름이 복귀된다. 그렇지만, 단계 74 또는 단계 76 중 어느 한쪽의 단계에서 그 판정 결과가 네가티브이면, 단계 80에 흐름이 진행되어 불법 명령어 예외를 생성한다. 이 때문에, 본 방법의 예의 컨텍스트에서 기술된 상기 MODE_ASSERT 명령어는 하나 이상의 허용 예외 레벨 및 하나 이상의 허용 보안 상태를 규정하지만 예를 들면 도 3a에 도시된 통칭의 MODE_ASSERT 명령어의 예에서와 같이 디버그 상태 또는 특권 레벨에 관한 제약을 규정하지 않는 명령어라는 것을 알 것이다.
도 6은 상술한 기술들을 구현하는데 사용되어도 되는 상기 타입의 범용 컴퓨팅 디바이스(100)를 개략적으로 도시한 것이다. 범용 컴퓨팅 디바이스(100)는, 버스(122)를 거쳐 함께 접속된, 중앙처리 유닛(102), 랜덤 액세스 메모리(104) 및 판독전용 메모리(106)를 구비한다. 또한, 범용 컴퓨팅 디바이스(100)는, 상기 공통 버스(122)를 거쳐 모두 접속된, 네트워크 인터페이스 카드(108), 하드 디스크 드라이브(110), 디스플레이 드라이버(112) 및 모니터(114)와, 키보드(118)와 마우스(120)를 갖는 유저 입/출력 회로(116)도 더 구비한다. 동작상, 상기 중앙처리 유닛(102)은, 예를 들면, 랜덤 액세스 메모리(104) 및/또는 판독전용 메모리(106)에 저장되어도 되는 컴퓨터 프로그램 명령어들을 실행한다. 프로그램 명령어들은, 하드 디스크 드라이브(110)로부터 추가로 검색될 수 있거나, 상기 네트워크 인터페이스 카드(108)를 거쳐 동적으로 다운로드될 수 있다. 행해진 처리 결과들은, 접속된 디스플레이 드라이버(112)와 모니터(114)를 거쳐 유저에게 표시되어도 된다. 상기 범용 컴퓨팅 디바이스(100)의 동작을 제어하기 위한 유저 입력들은, 상기 키보드(118)나 상기 마우스(120)로부터 접속된 유저 입/출력 회로(116)를 거쳐 수신되어도 된다. 상기 컴퓨터 프로그램은 다양한 다른 컴퓨터 언어로 기록될 수 있었다는 것을 알 것이다. 그 컴퓨터 프로그램은, 국소적으로 기록매체에 저장되어도 되거나, 동적으로 상기 범용 컴퓨팅 디바이스(100)에 다운로드되어도 된다. 본 기술들에 의하면, 상기 범용 컴퓨팅 디바이스(100)는 상술한 것처럼 하나 이상의 타입의 프로세서 상태 체크 명령어에 응답하도록 콘피규레이션을 갖는다. 또한, 상기 범용 컴퓨팅 디바이스(100)는, 도 2b를 참조하여 상술한 것과 같은 명령어 실행 환경(즉, 가상 머신)을 제공하게 하는 콘피규레이션을 가질 수 있다. 상기 범용 컴퓨팅 디바이스(100)의 아키텍처는 상당히 달라질 수 있고 도 9는 단지 일례일 뿐이다.
도 7은 사용되어도 되는 상기와 같은 가상 머신 구현을 도시한 것이다. 상술한 실시예들은 일반적으로 관심이 있는 상기 기술들을 지원하는 전용 처리 하드웨어를 동작시키는 장치 및 방법들의 면에서 본 기술들을 구현하지만, 소위 하드웨어 디바이스들의 가상 머신 구현을 제공하는 것도 가능하다. 이들 가상 머신 구현은, 전형적으로 가상 머신 프로그램(510)을 지원하는 호스트 운영체계(520)를 가동하는 호스트 프로세서(530)상에서 가동한다. 이것은 보다 강력한 프로세서에 합리적인 속도로 실행하는 가상 머신 구현을 지원하도록 제공되는 것을 요구하여도 되지만, 이러한 접근법은, 특정한 상황, 이를테면 호환성이나 재사용 이유로 또 다른 프로세서에 고유한 코드를 가동할 요구가 있을 때 정당화될 수도 있다. 가상 머신 프로그램(510)은, 이 가상 머신 프로그램(510)에 의해 모델화되는 상기 디바이스인 실제 하드웨어에 의해 제공될 애플리케이션 프로그램 인터페이스와 같은 애플리케이션 프로그램(500)에 상기 애플리케이션 프로그램 인터페이스를 제고한다. 따라서, 상술한 프로세서 상태 체크 명령어의 하나 이상의 예들을 포함하는 프로그램 명령어들은, 상기 가상 머신 하드웨어와의 상호작용을 모델화하기 위해 가상 머신 프로그램(510)을 사용하여 상기 애플리케이션 프로그램(500)내로부터 실행되어도 된다.
또한, 본 기술들의 일부의 예들을 아래의 구성의 예에서 설명한다:
예 1) 데이터 처리 명령어들에 응답하여 데이터 처리 연산들을 행하는 데이터 처리회로를 구비하는 데이터 처리장치로서, 상기 데이터 처리회로는 본 데이터 처리장치에 기억된 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 응답하여 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 프로세서 상태에서 상기 데이터 처리 연산들을 행하고, 상기 데이터 처리회로는, 프로세서 상태 체크 명령어에 응답하여, 상기 프로세서 상태 체크 명령어에 의해 규정된 프로세서 상태 체크 값에 일치하는 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 따른 무연산 조건을 확립하고, 이 무연산 조건이 확립될 때 상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하고, 상기 무연산 조건이 확립되지 않을 때 예외를 생성하는, 상기 데이터 처리장치.
예 2) 데이터 처리 명령어들에 응답하여, 본 데이터 처리장치에 기억된 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 프로세서 상태에서 행해지는 데이터 처리 연산들을 행하는 수단; 프로세서 상태 체크 명령어에 의해 규정된 프로세서 상태 체크 값에 일치하는 상기 런타임 프로세서 상태 콘피규레이션 값에 따른 무연산 조건을 확립하는 수단; 상기 무연산 조건이 확립될 때 상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하는 수단; 및 상기 무연산 조건이 확립되지 않을 때 예외를 생성하는 수단을 구비한, 상기 데이터 처리장치.
예 3) 데이터 처리 명령어들에 응답하여, 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 프로세서 상태에서 행해지는 데이터 처리 연산들을 행하는 단계; 프로세서 상태 체크 명령어에 응답하여, 상기 프로세서 상태 체크 명령어에 의해 규정된 프로세서 상태 체크 값에 일치하는 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 따른 무연산 조건을 확립하는 단계; 상기 무연산 조건이 확립될 때 상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하는 단계; 및 상기 무연산 조건이 확립되지 않을 때 예외를 생성하는 단계를 포함하는, 데이터 처리방법.
본 출원에서, "...하도록 구성된"과 "하도록 배치된"의 단어는, 장치의 요소가 규정된 연산을 실시할 수 있는 구성을 갖는다는 것을 의미하는데 사용된다. 본 문맥에서, "구성"은, 하드웨어 또는 소프트웨어의 상호연결의 배치 또는 방식을 의미한다. 예를 들면, 상기 장치는 상기 규정된 연산을 제공하는 전용 하드웨어를 가져도 되거나, 프로세서 또는 다른 처리 디바이스는 그 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된" 또는 "하도록 배치된"은, 상기 장치 요소들이 임의의 방식으로 상기 규정된 연산을 제공하기 위해서 변경될 필요가 있다는 것을 암시하지는 않는다.
본 발명의 설명에서는 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위 및 사상으로부터 벗어나지 않고 당업자가 변경, 부가 및 변형을 여러 가지로 실시할 수 있다는 것을 알 수 있다. 예를 들면, 본 발명의 범위로부터 벗어나지 않고 종속항의 특징들과 독립항의 특징들을 여러 가지로 조합할 수 있다.

Claims (20)

  1. 데이터 처리 명령어들의 시퀀스에 응답하여 데이터 처리 연산들을 행하는 데이터 처리회로를 구비한 데이터 처리장치로서, 상기 데이터 처리회로는 상기 데이터 처리장치에 기억된 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 응답하여 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 프로세서 상태에서 상기 데이터 처리 연산들을 행하고,
    상기 데이터 처리회로는, 프로세서 상태 체크 명령어에 응답하여, 상기 프로세서 상태 체크 명령어에 의해 규정된 프로세서 상태 체크 값에 일치하는 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 따른 무연산 조건을 확립하고,
    상기 무연산 조건이 확립될 때 상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하고, 상기 무연산 조건이 확립되지 않을 때 불법 명령어 예외를 생성하는 회로이고, 상기 불법 명령어 예외에 응답하여 상기 데이터 처리 명령어들의 시퀀스의 또 다른 실행이 방지되는, 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 상기 프로세서 상태는, 상기 데이터 처리장치가 상기 데이터 처리 연산들을 행할 수 있는 다수의 예외 레벨들 중 하나의 예외 레벨에서의 연산을 포함하는, 데이터 처리장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 상기 프로세서 상태는, 상기 데이터 처리장치가 상기 데이터 처리 연산들을 행할 수 있는 다수의 보안 상태들 중 하나의 보안 상태를 포함하는, 데이터 처리장치.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 상기 프로세서 상태는, 상기 데이터 처리장치가 상기 데이터 처리 연산들을 행할 수 있는 다수의 디버그 상태들 중 하나의 디버그 상태를 포함하는, 데이터 처리장치.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 상기 프로세서 상태는, 상기 데이터 처리장치가 상기 데이터 처리 연산들을 행할 수 있는 다수의 특권 모드들 중 하나의 특권 모드를 포함하는, 데이터 처리장치.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    상기 데이터 처리회로는 상기 데이터 처리장치에 기억된 다수의 런타임 프로세서 상태 콘피규레이션 값들에 응답하여, 상기 다수의 런타임 프로세서 상태 콘피규레이션 값들에 의해 규정된 각각의 프로세서 상태들에서 상기 데이터 처리 연산들을 행하고,
    상기 데이터 처리회로는 상기 프로세서 상태 체크 명령어에 응답하여, 상기 다수의 런타임 프로세서 상태 콘피규레이션 값들의 각각을, 상기 무연산 조건을 확립하기 위해 상기 프로세서 상태 체크 명령어에 의해 규정된 다수의 프로세서 상태 체크 값들 중 대응한 프로세서 상태 체크 값에 일치하도록 요구하는, 데이터 처리장치.
  7. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    상기 데이터 처리회로는 상기 데이터 처리장치에 기억된 다수의 런타임 프로세서 상태 콘피규레이션 값들에 응답하여, 상기 다수의 런타임 프로세서 상태 콘피규레이션 값들에 의해 규정된 각각의 프로세서 상태들에서 상기 데이터 처리 연산들을 행하고,
    상기 데이터 처리회로는 다수의 타입의 프로세서 상태 체크 명령어 각각에 응답하여, 상기 다수의 런타임 프로세서 상태 콘피규레이션 값들 중 대응한 런타임 프로세서 상태 콘피규레이션 값을, 상기 무연산 조건을 확립하기 위해 그 프로세서 상태 체크 명령어에 의해 규정된 대응한 프로세서 상태 체크 값에 일치하도록 요구하는, 데이터 처리장치.
  8. 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 프로세서 상태 체크 명령어는 일 타입의 프로세서 상태에 대한 다수의 프로세서 상태 체크 값들을 규정하고,
    상기 데이터 처리회로는 상기 프로세서 상태 체크 명령어에 응답하여, 일 타입의 프로세서 상태를 위해 규정된 상기 다수의 프로세서 상태 체크 값들 중 적어도 하나를, 상기 일 타입의 프로세서 상태가 상기 무연산 조건을 확립하기 위해 상기 데이터 처리장치에 기억된 상기 런타임 프로세서 상태 콘피규레이션 값에 일치하도록 요구하는, 데이터 처리장치.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 데이터 처리장치는 상기 런타임 프로세서 상태 콘피규레이션 값을 기억하는 상태 레지스터를 구비하는, 데이터 처리장치.
  10. 제 1 항 내지 제 9 항 중 어느 한 항에 있어서,
    상기 프로세서 상태 체크 값은 상기 프로세서 상태 체크 명령어에 포함되는, 데이터 처리장치.
  11. 제 1 항 내지 제 9 항 중 어느 한 항에 있어서,
    상기 프로세서 상태 체크 값을 저장하고, 상기 데이터 처리회로가 상기 프로세서 상태 체크 명령어를 참조하게 하는, 체크 값 스토리지를 더 구비하는, 데이터 처리장치.
  12. 제 1 항 내지 제 11 항 중 어느 한 항에 있어서,
    상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하는 것은, 상기 데이터 처리 연산들의 결과에 영향을 미치지 않고 상기 데이터 처리회로의 실행 파이프라인을 통해 상기 프로세서 상태 체크 명령어가 진행되게 하는 것을 포함하는, 데이터 처리장치.
  13. 제 1 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하는 것은, 상기 프로세서 상태 체크 명령어를 무연산 명령어로서 취급하는 것을 포함하는, 데이터 처리장치.
  14. 컴퓨팅 디바이스상에서 실행될 때, 이 컴퓨팅 디바이스에 청구항 1 내지 13 중 어느 한 항의 데이터 처리장치로서 작동시키는 비일시적 방식으로 컴퓨터 프로그램이 기억된, 컴퓨터 프로그램 제품.
  15. 청구항 1 내지 13 중 어느 한 항에 기재된 것처럼 적어도 하나의 프로세서 상태 체크 명령어를 포함하는 비일시적 방식으로 컴퓨터 프로그램이 기억된, 컴퓨터 프로그램 제품.
  16. 청구항 1 내지 13 중 어느 한 항에 청구된 것과 같은 데이터 처리장치용 데이터 처리 명령어들을 생성 가능하고, 상기 데이터 처리 명령어들이 상기 프로세서 상태 체크 명령어를 포함하는, 동적 코드 생성기.
  17. 데이터 처리장치상에서 실행하는 컴퓨터 프로그램에 의해 제공된 가상 머신으로서, 상기 가상 머신이 청구항 1 내지 13 중 어느 한 항의 상기 장치에 대응한 명령어 실행 환경을 제공하는, 가상 머신.
  18. 데이터 처리장치로서,
    데이터 처리 명령어들의 시퀀스에 응답하여, 상기 데이터 처리장치에 기억된 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 프로세서 상태에서 행해지는 데이터 처리 연산들을 행하는 수단;
    프로세서 상태 체크 명령어에 의해 규정된 프로세서 상태 체크 값에 일치하는 상기 런타임 프로세서 상태 콘피규레이션 값에 따른 무연산 조건을 확립하는 수단;
    상기 무연산 조건이 확립될 때 상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하는 수단; 및
    상기 무연산 조건이 확립되지 않을 때 불법 명령어 예외를 생성하는 수단을 구비하고, 상기 불법 명령어 예외에 응답하여 상기 데이터 처리 명령어들의 시퀀스의 또 다른 실행이 방지되는, 데이터 처리장치.
  19. 데이터 처리방법으로서,
    데이터 처리 명령어들의 시퀀스에 응답하여, 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 의해 규정된 프로세서 상태에서 행해지는 데이터 처리 연산들을 행하는 단계;
    프로세서 상태 체크 명령어에 응답하여, 상기 프로세서 상태 체크 명령어에 의해 규정된 프로세서 상태 체크 값에 일치하는 상기 적어도 하나의 런타임 프로세서 상태 콘피규레이션 값에 따른 무연산 조건을 확립하는 단계;
    상기 무연산 조건이 확립될 때 상기 프로세서 상태 체크 명령어를 비효율적 명령어로서 취급하는 단계; 및
    상기 무연산 조건이 확립되지 않을 때 불법 명령어 예외를 생성하는 단계를 포함하고, 상기 불법 명령어 예외에 응답하여 상기 데이터 처리 명령어들의 시퀀스의 또 다른 실행이 방지되는, 데이터 처리방법.
  20. 컴퓨팅 디바이스상에서 실행될 때, 이 컴퓨팅 디바이스에 청구항 19의 상기 방법을 실행시키는 비일시적 방식으로 컴퓨터 프로그램이 기억되는, 컴퓨터 프로그램 제품.
KR1020177034502A 2015-05-07 2016-04-12 정확한 코드 실행 컨텍스트를 검증하는 체크 명령어 KR102600220B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1507795.1A GB2538091B (en) 2015-05-07 2015-05-07 Verifying correct code execution context
GB1507795.1 2015-05-07
PCT/GB2016/051023 WO2016177992A1 (en) 2015-05-07 2016-04-12 Check instruction for verifying correct code execution context

Publications (2)

Publication Number Publication Date
KR20180004192A true KR20180004192A (ko) 2018-01-10
KR102600220B1 KR102600220B1 (ko) 2023-11-09

Family

ID=53489240

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177034502A KR102600220B1 (ko) 2015-05-07 2016-04-12 정확한 코드 실행 컨텍스트를 검증하는 체크 명령어

Country Status (5)

Country Link
US (1) US10942739B2 (ko)
KR (1) KR102600220B1 (ko)
CN (1) CN107580697B (ko)
GB (1) GB2538091B (ko)
WO (1) WO2016177992A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220206818A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Hardening execution hardware against speculation vulnerabilities

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040015627A1 (en) * 2002-07-19 2004-01-22 Giuseppe Desoli Synchronization of asynchronous emulated interrupts
US20050240701A1 (en) * 2004-04-27 2005-10-27 Matsushita Electric Industrial Co., Ltd. Interrupt control apparatus
US20080034350A1 (en) * 2006-04-05 2008-02-07 Conti Gregory R System and Method for Checking the Integrity of Computer Program Code
KR20130112033A (ko) * 2010-09-24 2013-10-11 에이알엠 리미티드 데이터 처리장치의 디버깅
KR20130137591A (ko) * 2010-08-11 2013-12-17 에이알엠 리미티드 불법 모드 변경처리
KR20140091747A (ko) * 2011-12-16 2014-07-22 인텔 코포레이션 트랜잭션을 지원하는 컴퓨터 아키텍처에서 코드 특수화에 대한 예외를 사용하는 방법 및 시스템

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537560A (en) * 1994-03-01 1996-07-16 Intel Corporation Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
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
US6513110B1 (en) * 1999-12-15 2003-01-28 Transmeta Corporation Check instruction and method
US7680999B1 (en) * 2000-02-08 2010-03-16 Hewlett-Packard Development Company, L.P. Privilege promotion based on check of previous privilege level
GB2369464B (en) * 2000-11-27 2005-01-05 Advanced Risc Mach Ltd A data processing apparatus and method for saving return state
GB0226874D0 (en) * 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Switching between secure and non-secure processing modes
GB0226905D0 (en) * 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Exception tyres within a secure processing system
US8171268B2 (en) * 2005-09-19 2012-05-01 Intel Corporation Technique for context state management to reduce save and restore operations between a memory and a processor using in-use vectors
JP4761533B2 (ja) * 2005-12-13 2011-08-31 キヤノン株式会社 情報処理装置及びワークフロー生成方法とプログラム
US7962729B2 (en) * 2009-01-05 2011-06-14 International Business Machines Corporation Dynamic runtime range checking of different types on a register using upper and lower bound value registers for the register
US20140149729A1 (en) * 2011-07-18 2014-05-29 Ted A. Hadley Reset vectors for boot instructions
US20140289502A1 (en) * 2013-03-19 2014-09-25 Apple Inc. Enhanced vector true/false predicate-generating instructions
US9417941B2 (en) * 2014-05-21 2016-08-16 Freescale Semiconductor, Inc. Processing device and method of executing an instruction sequence
US9563557B2 (en) * 2014-12-23 2017-02-07 Intel Corporation Instruction and logic for flush-on-fail operation

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040015627A1 (en) * 2002-07-19 2004-01-22 Giuseppe Desoli Synchronization of asynchronous emulated interrupts
US20050240701A1 (en) * 2004-04-27 2005-10-27 Matsushita Electric Industrial Co., Ltd. Interrupt control apparatus
US20080034350A1 (en) * 2006-04-05 2008-02-07 Conti Gregory R System and Method for Checking the Integrity of Computer Program Code
KR20130137591A (ko) * 2010-08-11 2013-12-17 에이알엠 리미티드 불법 모드 변경처리
KR20130112033A (ko) * 2010-09-24 2013-10-11 에이알엠 리미티드 데이터 처리장치의 디버깅
KR20140091747A (ko) * 2011-12-16 2014-07-22 인텔 코포레이션 트랜잭션을 지원하는 컴퓨터 아키텍처에서 코드 특수화에 대한 예외를 사용하는 방법 및 시스템

Also Published As

Publication number Publication date
CN107580697A (zh) 2018-01-12
GB2538091B (en) 2018-03-14
KR102600220B1 (ko) 2023-11-09
CN107580697B (zh) 2021-11-30
WO2016177992A1 (en) 2016-11-10
GB201507795D0 (en) 2015-06-17
US10942739B2 (en) 2021-03-09
US20180143831A1 (en) 2018-05-24
GB2538091A (en) 2016-11-09

Similar Documents

Publication Publication Date Title
JP4872001B2 (ja) メモリ・アクセス安全性管理
US20210124824A1 (en) Securing secret data embedded in code against compromised interrupt and exception handlers
KR102189296B1 (ko) 가상 머신 보안 어플리케이션을 위한 이벤트 필터링
US10459850B2 (en) System and method for virtualized process isolation including preventing a kernel from accessing user address space
EP1939754B1 (en) Providing protected access to critical memory regions
EP3022648B1 (en) Page fault injection in virtual machines to cause mapping of swapped-out memory pages into vm virtualized memory
US20160210069A1 (en) Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine
WO2017112248A1 (en) Trusted launch of secure enclaves in virtualized environments
KR20130036189A (ko) 하드웨어 모드와 보안 플래그에 의존하여 판독된 명령어에 대한 메모리 영역의 제한
JP7432586B2 (ja) スタック・ポインタを検証すること
US10664304B2 (en) Application memory protection using an extended page table switching virtual machine function
IL263204A (en) Confirmation control for teaching conditional memory access software
US20160048458A1 (en) Computer Security Systems and Methods Using Hardware-Accelerated Access To Guest Memory From Below The Operating System
US10942739B2 (en) Check instruction for verifying correct code execution context
US20210157601A1 (en) Exception interception
Yoon et al. The DragonBeam Framework: Hardware-protected security modules for in-place intrusion detection
WO2024028565A1 (en) No-operation-compatible instruction
WO2023209323A1 (en) Exception return state lock parameter
Zhu et al. The Formal Functional Specification of DeltaUNITY: An Industrial Software Engineering Practice
Svoboda et al. Analysis of security possibilities of platforms for 3D graphics
Elwell Securing systems with non-inclusive memory permissions
Josef et al. Analysis of security possibilities of platforms for 3D graphics

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