KR20180067581A - 예외 처리 - Google Patents

예외 처리 Download PDF

Info

Publication number
KR20180067581A
KR20180067581A KR1020187012810A KR20187012810A KR20180067581A KR 20180067581 A KR20180067581 A KR 20180067581A KR 1020187012810 A KR1020187012810 A KR 1020187012810A KR 20187012810 A KR20187012810 A KR 20187012810A KR 20180067581 A KR20180067581 A KR 20180067581A
Authority
KR
South Korea
Prior art keywords
data
exception
syndrome
program
register
Prior art date
Application number
KR1020187012810A
Other languages
English (en)
Other versions
KR102613643B1 (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 KR20180067581A publication Critical patent/KR20180067581A/ko
Application granted granted Critical
Publication of KR102613643B1 publication Critical patent/KR102613643B1/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/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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Microcomputers (AREA)

Abstract

데이터 처리 시스템(2)은 레지스터 뱅크(20)의 특정한 레지스터를 사용한 데이터 값의 전송을 포함하는 예외 기동 처리 연산의 시도된 실행을 검출하는 예외 처리회로(26)를 구비한다. 이와 같은 예외 기동 처리 연산의 검출시에, 이 신드롬 데이터를 사용한 예외 기동 처리 연산을 특징짓고 데이터 값을 포함하는 신드롬 레지스터(32) 내부에 신드롬 데이터가 기억된다. 이 값은 중단 기록 명령의 경우에 예외의 발생시 신드롬 레지스터 내부에 기억된다. 이 데이터 값은 중단 판독 명령의 경우에 예외에 의해 기동된 코드를 에뮬레이트하여 신드롬 레지스터 내부에 기억된다.

Description

예외 처리
본 발명은 데이터 처리 시스템 분야에 관한 것이다. 특히, 본 발명은 데이터 처리 시스템 내부의 예외 처리에 관한 것이다.
데이터 처리 시스템의 동작중에, 데이터 중단, 미정의된 명령 등과 같이, 예외처리가 행해지도록 요구하는 예외 조건이 발생할 수 있다는 것이 알려져 있다. 이와 같은 동작이 검출되면, 예외 처리 프로그램 명령의 실행이 기동된다.
예외처리가 발생하는 한가지 상황은 가상화된 시스템과 관련된다. 하이퍼바이저 프로그램은 게스트 운영체계 및 어플리케이션 프로그램에 대해 가상 실행 환경을 제공한다. 게스트 운영체계 또는 어플리케이션 프로그램은 예외로서 트랩(trap)된 후 하이퍼바이저에 의해 에뮬레이트되는 데이터 액세스를 시도할 수도 있다. 하이퍼바이저가 데이터 액세스를 에뮬레이트하기 위해서는, 게스트 시스템의 상태에 대한 액세스를 필요로 한다. 그러나, 일부 경우에는, 보안상의 이유로 인해, 게스트 시스템이 개인/비밀/안전 데이터를 포함할 때 게스트 시스템의 상태를 액세스하는 것이 허용되지 않는 것이 바람직할 수도 있다.
본 발명의 적어도 일부 실시예는,
복수의 레지스터와,
상기 복수의 레지스터 중 특정한 레지스터를 사용한 데이터 값의 전송을 포함하는 예외 기동 처리 연산의 시도된 실행을 검출하고, 예외 처리 프로그램 명령들의 실행을 기동하여 상기 예외 기동 처리 연산을 적어도 부분적으로 에뮬레이트하는 예외 처리회로와,
상기 예외 기동 처리 연산을 특징짓고 상기 데이터 값을 포함하는 신드롬 데이터를 기억하는 신드롬 데이터 저장장치(store)를 구비하고,
상기 예외 처리회로는 상기 신드롬 데이터 내부의 상기 데이터 값을 이용하여 상기 특정한 레지스터를 사용한 상기 전송을 행하는 데이터 처리장치를 제공한다.
본 발명의 적어도 일부 실시예는,
데이터를 기억하는 복수의 레지스터수단과,
상기 복수의 레지스터수단 중 특정한 레지스터수단을 사용한 데이터 값의 전송을 포함하는 예외 기동 처리 연산의 시도된 실행을 검출하고, 예외 처리 프로그램 명령들의 실행을 기동하여 상기 예외 기동 처리 연산을 적어도 부분적으로 에뮬레이트하는 예외 처리수단과,
상기 예외 기동 처리 연산을 특징짓고 상기 데이터 값을 포함하는 신드롬 데이터를 기억하는 신드롬 데이터 저장수단을 구비하고,
상기 예외 처리수단은 상기 신드롬 데이터 내부의 상기 데이터 값을 이용하여 상기 특정한 레지스터수단을 사용한 상기 전송을 행하는 데이터 처리장치를 제공한다.
본 발명의 적어도 일부 실시예는,
복수의 레지스터 내부에 데이터를 기억하는 단계와,
상기 복수의 레지스터 중 특정한 레지스터수단을 사용한 데이터 값의 전송을 포함하는 예외 기동 처리 연산의 시도된 실행을 검출하는 단계와,
예외 처리 프로그램 명령들의 실행을 기동하여 상기 예외 기동 처리 연산을 적어도 부분적으로 에뮬레이트하는 단계와,
상기 예외 기동 처리 연산을 특징짓고 상기 데이터 값을 포함하는 신드롬 데이터를 기억하는 단계와,
상기 신드롬 데이터 내부의 상기 데이터 값을 이용하여 상기 특정한 레지스터수단을 사용한 상기 전송을 행하는 단계를 포함하는 데이터 처리방법을 제공한다.
이하, 다음의 첨부도면을 참조하여 본 발명의 실시예를 설명한다.
도 1은 데이터 처리 시스템을 개략적으로 나타낸 것이다.
도 2는 예외 처리를 개략적으로 나타낸 흐름도이다.
도 3은 가상화 프로그램과 게스트 프로그램을 개략적으로 나타낸 것이다.
도 4는 2단계 가상-물리 어드레스 변환을 개략적으로 나타낸 것이다.
도 1은 인터컨넥트 회로(6)를 거쳐 메모리(8)와 한 개 이상의 메모리 매핑된 입출력장치들(10)에 접속된 프로세서 코어(4)를 구비한 데이터 처리 시스템(2)을 개략적으로 나타낸 것이다. 메모리(8)는 프로세서 코어(4)를 사용하여 가상화된 환경에서 실행되는 게스트 프로그램에 대해 사적인 데이터를 기억하는 한 개 이상의 개인 영역들(10)을 포함한다. 메모리(8)는 게스트 프로그램과, 게스트 프로그램에 대해 가상화된 실행 환경을 제공하는 가상화 프로그램 사이에서 공유되는 한 개 이상의 공유 영역(12)을 더 포함한다. 가상화 프로그램은, 예를 들어, 하이퍼바이저 프로그램이고, 게스트 프로그램은 그 자체가 한 개 이상의 어플리케이션 프로그램에 가상화된 실행 환경을 제공하는 게스트 운영체계 프로그램이어도 된다.
프로세서 코어(4)는, 실행할 프로그램 명령을 메모리(8)로부터 페치하는 명령 페치부(14)를 구비하고, 이들 명령을 디코더(16)에 공급하여, 디코더에서 프로그램 명령들이 디코드되어 제어신호를 생성한 후 제어신호가 프로세서 코어(4) 내부의 다른 회로를 제어하여 디코드된 프로그램 명령에 의해 지정된 처리 연산을 행한다. 프로세서 코어(4)는, 산술 연산 및 논리 연산 등의 처리 연산을 행하는 (복수의 범용 레지스터들을 포함하는) 레지스터 뱅크(2)를 포함하는 처리회로(18)를 구비한다. 로드 스토어부(22)를 사용하여 로드 명령(LDR)에 응답하여 로드 연산 등의 메모리 액세스 연산을 행함으로써, 데이터 값에 메모리(8)에서 판독되어 레지스터 뱅크(20)의 레지스터에 기억된다. 로드 스토어부(22)는 데이터 값이 레지스터 뱅크(20)의 레지스터에서 판독되어 메모리(8) 내부의 메모리 어드레스들에 기억되는 스토어 명령(STR)에 의해 지정된 스토어 연산을 더 행한다. 이들 로드 및 스토어 명령의 변형예가 존재할 수 있다. 입출력 장치(10)는 메모리 매핑되므로, 로드 명령 및 스토어 명령을 사용하여 입출력 장치(10)로부터 데이터 값을 판독하여 이것을 레지스터 뱅크(20) 내부의 레지스터에 기억한다. 이와 마찬가지로 스토어 연산을 사용하여 레지스터 뱅크(20)에서 값을 판독하여 이것을 입출력 장치(10)에 기록한다.
메모리 관리부(24)는 메모리(8) 내부에 기억된 페이지 테이블 데이터를 사용하여 프로세서 코어(4) 상에서 실행된 메모리 액세스 명령에 의해 (메모리(8)와 입출력장치(10)를 포함하는) 메모리 어드레스 공간에 대한 액세스를 관리한다. 메모리 관리부(24)는, 액세스 허가를 위반하거나 다른 방식으로 허가되지 않은 메모리 액세스가 언제 시도되는지를 검출한다. 이것은 데이터 중단(data abort)을 발생한다. 예외 처리회로(26)는 메모리 관리부(24)에 의해 표시된 데이터 중단에 응답하여 예외처리를 기동한다. 예외처리 응답은, 예외처리 프로그램 명령의 개시 어드레스를 표시하는 예외 벡터에 따라 이들 예외처리 프로그램 명령의 실행(예를 들어, 프로그램 카운터에 벡터 어드레스를 로드하는 것)을 시작하는 것을 포함한다. 더구나, 예외 처리회로(26)는, 예외 응답의 일부로서, CPSR 레지스터(28)(current program status resister)에 유지된 프로세서 코어(4)의 현재 처리 상태를 나타내는 상태 데이터를 SPSR 레지스터(30)(saved program status register)에 보존하고, 이 SPSR 레지스터에서 예외처리가 완료하였을 때 상태 데이터가 복원되고 초기 프로그램 흐름으로 복귀가 행해진다. 신드롬 레지스터(32)는, 예외 처리회로(26)에 접속되고, 예외 처리회로(26)에 의해 처리되고 있는 예외를 발생하는 (적어도 일부 메모리 액세스에 대한) 예외 기동 처리 연산을 특징짓는 데이터를 기억한다. 일부 실시예에서는 1개보다 많은 신드롬 레지스터를 사용해도 된다. 신드롬 레지스터(들)는 신드롬 데이터 저장소의 일례이다. 데이터 중단의 경우에, 신드롬 데이터는, 예를 들어, 중단된 메모리 액세스와 관련된 메모리 어드레스 공간 내부의 어드레스, 메모리 액세스가 이 메모리 어드레스에 대한 기록이었는지 또는 이 메모리 어드레스로부터의 판독이었는지를 나타내는 플래그, 액세스되고 있는 데이터 값의 크기(예를 들어, 바이트, 절반 워드(half word), 워드, 이중 워드 등)를 나타내는 크기 값을 포함한다. 더구나, 메모리 어드레스 공간 내부의 메모리 어드레스에 대한 기록이었던 중단된 메모리 액세스의 경우에는, 신드롬 레지스터가 기록하려고 하였던 데이터 값을 포함한다. 이 데이터 값은 로드 스토어부(22)로부터 신드롬 레지스터(32)에 공급되어도 된다. 중단된 메모리 액세스가 메모리 어드레스 공간으로부터의 데이터 값의 판독이었던 경우에는, 신드롬 레지스터(32)는 이 데이터 값이 (예외처리 처리 연산을 행하고 있는) 예외처리 프로그램 명령에 의해 기억되는 공간을 포함하여, 중단된 메모리 액세스 명령이 재현될 때, 판독된 데이터 값이 신드롬 레지스터(32)에서 복원되어 로드 스토어부(22) 및 프로세서 코어(4)로 반환(예를 들어, 레지스터 뱅크(20)의 적절한 레지스터 내부로 반환)될 수 있도록 한다.
데이터 처리 시스템(2)은 가상화를 지원함으로써, 하이퍼바이저 프로그램이 한 개 이상의 게스트 운영체계 프로그램 및 어플리케이션 프로그램에게 가상화된 실행 환경을 제공한다. 시스템의 보안을 증진시키기 위해, 메모리 관리부(25)에 의해 유지된 메모리 액세스 데이터는 하이퍼바이저가 게스트 프로그램에 속하는 개인 영역들(10) 내부에 기억된 데이터 등의 이 게스트 프로그램과 관련된 데이터를 액세스할 수 있는 능력을 거부하는 역할을 한다. 게스트 프로그램의 실행중에 레지스터 뱅크(20) 내부에 기억된 데이터와 게스트 프로그램과 관련된 기타 상태 데이터(예를 들어, CPSR 데이터, 상태 환경설정 데이터 등)는 게스트 프로그램에 대해 사적으로 유지되어도 된다. 하이퍼바이저 프로그램은 메모리 매핑된 입출력 장치들(10)과 같이, 게스트 프로그램에 의해 특정한 메모리 어드레스에 대한 메모리 액세스를 트랩하도록 동작한다. 하이퍼바이저 프로그램은 예외처리 프로그램 명령을 사용하여 게스트 프로그램 대신에 이와 같은 트랩된 메모리 액세스를 에뮬레이트하여 예외처리 처리 연산을 행한다. 일례로서, 게스트 프로그램은 메모리 매핑된 입출력 장치에 대한 데이터 값의 기록을 행하도록 시도해도 된다. 메모리 관리부(24)는, 그 자신의 페이지 테이블 데이터를 이용하여, 기록 액세스가 하이퍼바이저 프로그램에 의해 트랩하고 에뮬레이트하려는 것이라는 것을 검출하고, 이에 따라 예외 처리회로(26)로 전달되는 데이터 중단 예외를 발생한다. 예외 처리회로(26)는 중단된 기록을 특징짓는 데이터를 신드롬 레지스터(32)에 보존한다. 기록을 특징짓는 이와 같은 데이터는, 중단된 연산이 기록 연산이라는 것을 나타내는 플래그, 시도된 기록 연산의 어드레스, 시도된 기록 연산에 의해 기록하려는 데이터 값, 기록하려는 데이터 값의 크기와, 중단된 기록 연산을 에뮬레이트하는데 유용한 (전술한 재현(replay) 상태 데이터 등의) 추가적인 데이터를 포함한다. 예외 처리회로는 현재의 프로그램 상태 레지스터 내용(28)을 보존된 프로그램 상태 레지스터(30)에 더 기억한다. 중단된 기록 연산 이전의 신드롬 레지스터(32)의 내용은 현재 프로그램 상태의 일부를 구성하므로, 예외처리의 일부로서 더 보존된다. 중단된 메모리 액세스의 에뮬레이션 중에 또 다른 예외가 발생하면, 이때의 현재 신드롬 데이터도 마찬가지로 현재 프로그램 상태 데이터의 일부로서 보존되어, 예외가 풀어질 때 복원될 수 있다.
시도된 기록 연산의 데이터 중단에 의해 기동된 예외처리 프로그램 명령은, 신드롬 레지스터(32)로부터 신드롬 데이터를 판독하고, 이 데이터를 사용하여 의도된 기록 연산을 완료하는 역할을 한다. 이와 같은 완료는, 예를 들어, 게스트 프로그램에 의해 지정된 기록의 어드레스를, 하이퍼바이저 프로그램의 일부로서 동작하고 하이퍼바이저 프로그램에 의해 관리되는 메모리 매핑된 입출력 장치(10)의 물리 어드레스에 대응하는 예외처리 프로그램 명령에 의해 사용되는 다른 어드레스로 변환하는 과정을 포함한다.
예외처리 프로그램 명령에 의해 트랩되고 에뮬레이트되는 중단된 메모리 액세스 명령이 메모리 매핑된 입출력 장치(10)로부터의 데이터 값의 판독이었던 경우에는, 예외처리 프로그램 명령이 신드롬 레지스터(32)로부터 판독하려는 메모리 어드레스를 판독한 후 하이퍼바이저 프로그램에 의해 관리되는 적절한 메모리 어드레스부터 이 판독을 행한다. 이와 같은 판독으로부터 반환된 데이터 값은 신드롬 데이터의 일부로서 신드롬 레지스터(32)에 기억된다.
예외처리로부터의 복귀시에 게스트 프로그램이 재개되면, 중단 메모리 액세스 명령(기록인지 판독인지)이 내려져 재실행된다. 판독의 경우에는, 이 판독을 에뮬레이트한 예외처리에 의해 신드롬 레지스터(32) 내부에 기억된 데이터 값이 이 판독의 결과로서 반환, 예를 들어, 원래의 판독 명령에 의해 지정된 레지스터 뱅크(20)의 적절한 목적지 레지스터에 기억된다. 기록 명령을 재실행하는 경우에, 에뮬레이트하고 있는 예외처리 프로그램 명령이 이미 게스트 프로그램 대신에 지정된 기록 연산을 행할 것이므로, 추가적인 조치가 필요하지 않고 기록 프로그램 명령이 완료(은퇴(retire))한다.
신드롬 레지스터(32)는 재현된 상태 데이터를 신드롬 데이터의 일부로서 기억한다. 이 재현된 상태 데이터는 제 1 상태 또는 제 2 상태를 갖는 플래그이어도 된다. 재현된 상태 데이터를 사용하여 이 메모리 액세스 명령의 실행이 다시 시도될 때 중단하는 메모리 액세스 명령이 이미 에뮬레이트되었다는 것을 나타낸다. 따라서, 중단하는 메모리 액세스 명령이 게스트 프로그램의 프로그램 흐름 내부에서 최초로 마주칠 때, 예외처리를 기동하고 예외처리 프로그램 명령에 의해 에뮬레이트된다. 에뮬레이션의 일부로서, (신드롬 데이터의 일부이거나 다른 곳에 유지되는) 재현 상태 데이터가 제 1 상태로 설정된다. 에뮬레이션이 완료되고 중단하는 메모리 액세스 명령의 실행이 다시 시도되면, 예외 처리회로(26)는 재현 상태 데이터가 제 1 상태를 갖고 있는 것을 검출하므로, 중단하는 메모리 액세스가 이미 에뮬레이트되었다는 것을 검출한다. 중단하는 메모리 액세스가 기록이면, 예외 처리회로(26)는 단순히 이전에 행해진 에뮬레이션이 이미 원하는 기록을 행하였을 때 이 기록을 완료된 것으로 표시할 수 있다. 중단하는 메모리 액세스가 판독인 경우에는, 신드롬 레지스터(32)는 에뮬레이트하는 예외처리 프로그램 명령에 의해 이 판독에 대해 반환된 데이터 값을 포함한다. 이 경우, 예외 처리회로(26)는 신드롬 레지스터(32)로부터의 이 데이터 값을 사용하고, 이것을 판독된 데이터의 결과로서 공급(예를 들어, 신드롬 레지스터(32)로부터 중단하는 판독 명령에 의해 지정된 레지스터 뱅크(20) 내부의 적절한 목적지 레지스터로 판독된 데이터를 전송)한 후, 판독된 명령을 완료된 것으로 처리한다.
도 2는 예외처리 데이터 중단을 개략적으로 나타낸 흐름도이다. 스텝 27에서는 데이터 중단이 발생할 때까지 처리를 대기한다. 다른 종류의 예외는 다른 방식으로 처리되어도 된다. 데이터 중단이 발생하면, 예외 처리회로(32)는 스텝 29에서 신드롬 데이터 레지스터(32)를 액세스하는 역할을 한다. 스텝 31은 신드롬 레지스터(32) 내부에서 액세스된 재현 상태 데이터가 제 2 상태를 갖는지 아닌지 판정한다. 재현 상태 데이터가 제 2 상태를 가지면, 이것은 중단하는 메모리 액세스 명령이 아직 에뮬레이트되지 않았다는 것을 나타낸다.
재현 상태 데이터가 제 2 상태를 가지면, 스텝 33은 재현 상태 데이터를 제 1 상태로 설정함으로써, 중단하는 메모리 액세스를 다시 마주쳤을 때, 이것이 이미 에뮬레이트된 것으로 검출되도록 한다. 스텝 34는 중단하는 메모리 액세스가 로드 명령인지 아닌지 판정한다. 중단하는 메모리 액세스가 로드 명령인 경우에, 스텝 36은, 이 로드 명령을 특징짓는 신드롬 데이터의 일부로서, 로드 명령의 대상인 메모리 어드레스를 포함하는 데이터, 로드 명령의 데이터 크기와, 중단하는 메모리 액세스가 판독이라는 것을 나타내는 플래그를 신드롬 레지스터(32)에 기억하는 역할을 한다. 스텝 34에서의 판정 결과, 중단하는 메모리 액세스가 스토어 명령이면(즉, 로드가 아니면), 스텝 38은, 신드롬 데이터의 일부로서, 스토어 명령의 대상 어드레스, 스토어 명령의 일부로서 기록할 데이터 값, 데이터 값의 데이터 크기와, 중단하는 메모리 액세스가 기록이었다는 것을 나타내는 플래그를 신드롬 레지스터(32) 내부에 기억하는 역할을 한다.
스텝 36 및 38의 이후에, 스텝 40은 예외처리 명령의 실행을 기동하는 역할을 한다. 이와 같은 기동은 데이터 중단에 대해 데이터 처리 시스템(2)의 환경설정의 일부로서 설정된 예외 벡터를 뒤따르는 형태를 가져도 되며, 이 벡터를 사용하여, 예외처리 프로그램 명령의 실행이 시작되도록 프로그램 카운터 값을 설정한다.
스텝 42는 예외처리 프로그램 명령에 의해 행해지고 중단 명령이 로드인지 아닌지 판정한다. 이와 같은 판정은 스텝 36 및 38에서 설정된 신드롬 레지스터(32) 내부에 기억된 신드롬 데이터 내부의 판독/기록 플래그를 조사함으로써 행해진다. 에뮬레이트되고 있는 중단 메모리 액세스가 로드인 경우에, 스텝 44는, 신드롬 레지스터 내부의 메모리 어드레스(또는 이 메모리 어드레스의 변환된 버전)로부터 데이터를 판독하고, 데이터 판독으로부터 반환된 판독된 데이터 값을 다시 신드롬 레지스터(32)에 기억하고, 중단된 판독 연산의 에뮬레이션을 완료하는데 필요한 추가적인 조치를 행함으로써, 이 로드를 에뮬레이트하는 역할을 한다. 스텝 42의 판정 결과, 에뮬레이트하려는 중단된 메모리 액세스가 스토어 연산인 경우에, 스텝 46은, 신드롬 레지스터(32) 내부에 기억된 데이터 값을 신드롬 레지스터(32) 내부에 기억된 메모리 어드레스에 의해 표시된 메모리 어드레스(또는 이 메모리 어드레스의 변환된 버전)에 기록함으로써 이 스토어 연산을 완료하는 역할을 한다.
스텝 44 및 46 이후에, 스텝 48로 처리를 진행하여, 중단 기동 프로그램 명령으로 복귀함으로써 예외로부터의 복귀가 행해진다. 이때, 예외처리 프로그램 명령은, 예외처리 및 에뮬레이션 동작중에, 다른 프로그램 상태의 기억 및 이 프로그램 상태의 복원 처리와 같은 다른 동작을 행해도 된다는 것은 명백하다.
스텝 48 이후에, 스텝 27로 처리가 복귀한다. 스텝 48이 중단 기동 명령(게스트 프로그램 내에서의 중단 메모리 액세스)으로 처리를 복귀하였을 때, 스텝 27은, 이 명령이 메모리 관리부(24)에 의한 동일한 보호의 결과로써 다시 중단하는지 검출하게 된다. 이 경우에, 스텝 30의 판정 결과, 재현 상태 데이터가 제 2 상태와 같지 않으므로, 스텝 50으로 처리를 진행한다. 스텝 50은 재현 상태 데이터를 제 2 상태로 설정한다. 스텝 52는 메모리 액세스 명령이 로드인지 아닌지 검출한다. 중단하는 메모리 액세스 명령이 로드인 경우에, 스텝 54는 신드롬 레지스터 값(32) 내부에 기억된 데이터 값을 중단하는 로드 명령의 결과로써 반환하는 역할을 한다. 그후, 스텝 56은 명령을 완료로 표기함으로써 명령을 은퇴하고 스텝 27로 처리를 복귀한다. 스텝 52의 판정에서, 중단하는 메모리 액세스 명령이 로드가 아닌 경우에는, 스텝 54를 우회하고 스텝 56으로 처리가 직접 진행하여, 이 경우에는 스토어인 중단하는 메모리 액세스 명령을 은퇴하고 완료로서 표기한다.
이때, 도 2에 도시된 흐름도는 하드웨어에 의해(예를 들어, 예외 처리회로(26)에 의해) 행해지는 일부 스텝과 소프트웨어에 의해 행해지는 일부 스텝을 포함한다는 것을 알 수 있다. 본 실시예에서, "*"으로 표기한 스텝들은 예외처리 프로그램 명령을 사용하여 소프트웨어에 의해 행해진다. 나머지 처리 스텝들은 예외 처리회로(26)와 데이터 처리 시스템(2) 내부의 다른 구성요소들에 의한 하드웨어 제어하에서 행해진다. 이때, 다른 실시예에서는 하드웨어와 소프트웨어로 행해지는 스텝들 사이의 다른 구분을 사용해도 된다.
도 3은 하이퍼바이저 프로그램(58)의 형태를 갖는 가상화 프로그램과, 게스트 운영체계 60, 62와 어플리케이션 프로그램 64, 66, 68, 70의 형태를 갖는 게스트 프로그램 사이의 관계를 개략적으로 나타낸 것이다. 하이퍼바이저 프로그램(58)은 게스트 프로그램 60-70보다 더 높은 특권 레벨(예외 레벨)에서 동작한다. 하이퍼바이저 프로그램(58)은 게스트 프로그램 60-70에 대한 가상화된 실행 환경을 제공한다. 이 가상화된 실행의 일부로서, 하이퍼바이저 프로그램(58)은 입출력 장치(10)에 대한 가상 액세스를 제공한다. 하이퍼바이저 프로그램(58)은 다른 메모리 어드레스 또는 시스템 환경설정 레지스터 등의 데이터 처리 시스템(2)의 다른 자원에 대한 액세스도 가상화한다. 신드롬 레지스터(32)를 이용하는 본 발명을 이용하여 예외처리 프로그램 명령들에 의한 다른 예외 기동 처리 연산의 에뮬레이션, 예를 들어 시스템 레지스터에 대한 트랩된 액세스를 제공하여도 된다. 이 경우, 에뮬레이션이 게스트 프로그램의 개인 데이터를 액세스할 필요가 없이, 신드롬 레지스터(32) 내부에 기억된 신드롬 데이터를 사용하여 에뮬레이션을 행해도 된다. 에뮬레이션을 행하기 위해 필요한 데이터는 하드웨어 제어하에서 신드롬 레지스터(32) 내부에 기억되고, 이 신드롬 레지스터로부터 에뮬레이션 프로그램 명령에 의해 판독할 수 있다.
도 4는 메모리 관리부(24)에 의해 행해지는 2단계 어드레스 변환을 개략적으로 나타낸 것이다. 어플리케이션 프로그램 64, 66, 68, 70은 가상 어드레스를 이용하여 메모리 액세스 명령을 발생한다. 그후, 적절한 게스트 운영체계 60, 62에 의해 제어된 페이지 테이블 데이터를 사용하여 메모리 관리부(24)에 의해 제 1 단계 변환(72)을 행하여 게스트 운영체계 60, 62에 의해 제공되는 물리 어드레스에 대응하는 중간 물리 어드레스를 형성한다. 게스트 운영체계 60, 62는 그 자신이 가상화된 환경에서 실행되고 있으므로, 메모리 관리부(24)는 하이퍼바이저(58)에 의해 관리되는 페이지 테이블 데이터를 사용하여 제 2 단계 변환(74)을 행하여 물리 어드레스를 생성하고, 그후 이 물리 어드레스는 메모리(8) 및 입출력 장치(10)를 포함하는 메모리 어드레스 공간의 어드레스를 지정한다. 제 2 단계 변환(74)에 의해 생성된 물리 어드레스는 물리 메모리 어드레스 공간의 하이퍼바이저 관점에 대응한다.
제 1 단계 변환(72)은 게스트 운영체계 60, 62에 의해 관리되는 페이지 테이블 데이터를 이용한다. 이와 같은 제 1 단계 변환(72)은 게스트 운영체계 60, 62(또는 어플리케이션 프로그램 64-70)에 대해 사적인 메모리(8) 내부의 개인 영역들(10)에 대한 하이퍼바이저 프로그램(58)에 의한 시도된 메모리 액세스를 차단하는 역할을 한다. 하이퍼바이저 프로그램(58)이 게스트 운영체계 60, 62보다 더 높은 특권 레벨을 갖지만, 게스트 운영체계 60, 62에 의해 관리되는 제 1 단계 변환(72)은 하이퍼바이저가 데이터를 액세스하지 못하도록 차단한다. 제 1 단계 변환(72)에 대응하는 페이지 테이블 데이터는 그것의 보안을 보호하기 위해 개인 영역(10) 내부에 기억된다.
제 2 단계 변환(74)은 하이퍼바이저 프로그램(58)에 의해 관리되는 페이지 테이블 데이터를 이용하여 행해진다. 이와 같은 제 2 단계 변환(74)을 이용하여, 하이퍼바이저 프로그램(58)에 의해 제어되고 전술한 신드롬 레지스터(32) 및 신드롬 데이터를 사용하여 하이퍼바이저 프로그램(58)에 의한 에뮬레이션을 필요로 하는 입출력 장치(10) 등의 메모리 어드레스에 대한 게스트 운영체계 60, 62에 의한 메모리 액세스를 트랩한다.
전술한 실시예는 재현 상태 데이터를 사용하여 예외 기동 프로그램 명령의 시도된 재실행에 대한 거동을 제어한다. 또 다른 실시예는 이와 같은 재현 상태 데이터를 사용할 필요가 없을 수도 있다. 예외 기동 프로그램 명령이 스토어 명령인 경우에, 예외처리 프로그램 명령이 스토어 명령에 뒤따르는 프로그램 명령을 사용하여 예외처리후에 실행을 재개해도 된다(즉, 스토어 명령의 재실행이 시도되지 않을 수도 있다). 예외 기동 프로그램 명령이 로드 명령인 경우에, 예외 처리회로를 제어하여 로드 명령 다음의 명령으로 실행을 복귀하기 전에 신드롬 레지스터로부터 그것의 의도하는 목적지 레지스트로 데이터 값을 복사하지 못하게 하는 예외처리 프로그램 명령의 끝에 새로운 명령을 설치 및 사용함으로써 재현 상태 데이터를 사용할 필요를 없애도 된다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.

Claims (20)

  1. 복수의 레지스터와,
    상기 복수의 레지스터 중 특정한 레지스터를 사용한 데이터 값의 전송을 포함하는 예외 기동 처리 연산의 시도된 실행을 검출하고, 예외 처리 프로그램 명령들의 실행을 기동하여 상기 예외 기동 처리 연산을 적어도 부분적으로 에뮬레이트하는 예외 처리회로와,
    상기 예외 기동 처리 연산을 특징짓고 상기 데이터 값을 포함하는 신드롬 데이터를 기억하는 신드롬 데이터 저장장치를 구비하고,
    상기 예외 처리회로는 상기 신드롬 데이터 내부의 상기 데이터 값을 이용하여 상기 특정한 레지스터를 사용한 상기 전송을 행하는 데이터 처리장치.
  2. 제 1항에 있어서,
    상기 예외 기동 처리 연산은 메모리 어드레스로부터 상기 특정한 레지스터에 상기 데이터 값을 전송하는 로드 연산이고,
    상기 예외처리 프로그램 명령들은 상기 데이터 값을 상기 메모리 어드레스로부터 상기 신드롬 데이터 저장장치로 전송하고,
    상기 예외 처리회로는 상기 로드 연산의 시도된 재실행시에 상기 데이터 값을 상기 신드롬 데이터 저장장치로부터 상기 특정한 레지스터로 전송하는 데이터 처리장치.
  3. 제 1항에 있어서,
    상기 예외 기동 처리 연산은 상기 특정한 레지스터로부터 메모리 어드레스에 상기 데이터 값을 전송하는 스토어 연산이고,
    상기 예외 처리회로는 상기 로드 연산의 상기 시도된 실행시에 상기 특정한 레지스터로부터 상기 신드롬 데이터 저장장치에 상기 데이터 값을 전송하고,
    상기 예외처리 프로그램 명령은 상기 신드롬 데이터 저장소로부터 상기 메모리 어드레스에 상기 데이터 값을 전송하는 데이터 처리장치.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 신드롬 데이터는 제 1 상태 및 제 2 상태를 갖는 재현 상태 데이터를 포함하고,
    상기 재현 상태 데이터가 상기 제 2 상태를 갖고 상기 예외 기동 처리 연산의 시도된 실행시에, 상기 예외 처리회로가 상기 재현 상태 데이터를 상기 제 1 상태로 설정하고 상기 예외처리 프로그램 명령들의 실행을 기동하고,
    상기 재현 상태 데이터가 상기 제 1 상태를 갖고 상기 예외 기동 처리 연산의 시도된 실행시에, 상기 예외 처리회로가 상기 재현 상태 데이터를 상기 제 2 상태로 설정하고, 상기 예외처리 프로그램 명령들의 기동을 금지하고, 상기 예외기동 처리 연산이 완료된 것으로 표시하는 데이터 처리장치.
  5. 제 2항 및 제 4항에 있어서,
    상기 재현 상태 데이터가 상기 제 1 상태를 갖고 상기 예외 기동 처리 연산의 시도된 실행시에, 상기 예외 처리회로가 상기 데이터 값을 상기 신드롬 데이터 저장소로부터 상기 특정한 레지스터에 전송하는 데이터 처리장치.
  6. 제 1항 내지 제 5항 중 어느 한 항에 있어서,
    상기 예외처리 프로그램 명령들의 완료시에, 상기 예외 처리회로가 상기 예외 기동 처리 연산의 시도된 재실행을 기동하는 데이터 처리장치.
  7. 제 1항 내지 제 6항 중 어느 한 항에 있어서,
    상기 신드롬 데이터는 예외의 진입 및 탈출시에 보존 및 복원된 현재의 프로그램 상태 데이터의 일부인 데이터 처리장치.
  8. 제 1항 내지 제 7항 중 어느 한 항에 있어서,
    상기 예외 기동 처리 연산은 데이터 중단을 기동하는 데이터 처리장치.
  9. 제 1항 내지 제 8항 중 어느 한 항에 있어서,
    상기 예외 기동 처리 연산에 대응하는 프로그램 명령은 게스트 프로그램의 일부이고, 상기 예외처리 프로그램 명령들은 상기 게스트 프로그램에 대한 실행 환경을 제공하는 가상화 프로그램의 일부인 데이터 처리장치.
  10. 제 8항에 있어서,
    상기 가상화 프로그램은 상기 게스트 프로그램의 개인 상태 데이터에 대한 액세스가 차단되는 데이터 처리장치.
  11. 제 9항에 있어서,
    상기 개인 상태 데이터는 상기 게스트 프로그램의 실행중에 상기 복수의 레지스터 내부에 데이터 값들을 포함하는 데이터 처리장치.
  12. 제 9항, 제 10항 또는 제 11항 중 어느 한 항에 있어서,
    제 1 단계 매핑 데이터 및 제 2 단계 매핑 데이터를 포함하는 매핑 데이터에 의존하여 메모리에 대한 액세스를 관리하는 메모리 관리부를 구비하고, 상기 게스트 프로그램은 상기 제 1 단계 매핑 데이터를 관리하고, 상기 가상화 프로그램은 상기 제 2 단계 매핑 데이터를 관리하고, 상기 예외 기동 처리 연산은 상기 제 2 단계 매핑 데이터를 사용하여 검출되는 데이터 처리장치.
  13. 제 10항 및 제 12항에 있어서,
    상기 제 1 단계 매핑은 상기 가상화 프로그램에 의한 상기 게스트 프로그램의 상기 개인 상태 데이터에 대한 액세스를 차단하는 데이터 처리장치.
  14. 제 1항 내지 제 13항 중 어느 한 항에 있어서,
    상기 전송은 상기 특정한 레지스터와 입출력 장치 사이에서 행해지는 데이터 처리장치.
  15. 제 1항 내지 제 14항 중 어느 한 항에 있어서,
    상기 신드롬 데이터는 메모리 어드레스를 나타내는 어드레스 데이터를 포함하고, 상기 데이터 값의 상기 전송은 상기 특정한 레지스터와 상기 메모리 어드레스 사이에서 행해지는 데이터 처리장치.
  16. 제 1항 내지 제 15항 중 어느 한 항에 있어서,
    상기 신드롬 데이터는 상기 데이터 값의 크기 데이터를 포함하는 데이터 처리장치.
  17. 제 1항 내지 제 16항 중 어느 한 항에 있어서,
    상기 신드롬 데이터는, 상기 전송이 상기 특정한 레지스터에 대한 상기 데이터 값의 로드인지 또는 상기 특정한 레지스터로부터의 상기 데이터 값의 기록인지를 지정하는 데이터 처리장치.
  18. 제 1항 내지 제 17항 중 어느 한 항에 있어서,
    상기 신드롬 데이터 저장소는 신드롬 레지스터인 데이터 처리장치.
  19. 데이터를 기억하는 복수의 레지스터수단과,
    상기 복수의 레지스터수단 중 특정한 레지스터수단을 사용한 데이터 값의 전송을 포함하는 예외 기동 처리 연산의 시도된 실행을 검출하고, 예외 처리 프로그램 명령들의 실행을 기동하여 상기 예외 기동 처리 연산을 적어도 부분적으로 에뮬레이트하는 예외 처리수단과,
    상기 예외 기동 처리 연산을 특징짓고 상기 데이터 값을 포함하는 신드롬 데이터를 기억하는 신드롬 데이터 저장수단을 구비하고,
    상기 예외 처리수단은 상기 신드롬 데이터 내부의 상기 데이터 값을 이용하여 상기 특정한 레지스터수단을 사용한 상기 전송을 행하는 데이터 처리장치.
  20. 복수의 레지스터 내부에 데이터를 기억하는 단계와,
    상기 복수의 레지스터 중 특정한 레지스터수단을 사용한 데이터 값의 전송을 포함하는 예외 기동 처리 연산의 시도된 실행을 검출하는 단계와,
    예외 처리 프로그램 명령들의 실행을 기동하여 상기 예외 기동 처리 연산을 적어도 부분적으로 에뮬레이트하는 단계와,
    상기 예외 기동 처리 연산을 특징짓고 상기 데이터 값을 포함하는 신드롬 데이터를 기억하는 단계와,
    상기 신드롬 데이터 내부의 상기 데이터 값을 이용하여 상기 특정한 레지스터수단을 사용한 상기 전송을 행하는 단계를 포함하는 데이터 처리방법.
KR1020187012810A 2015-10-14 2016-09-09 예외 처리 KR102613643B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1518165.4A GB2543306B (en) 2015-10-14 2015-10-14 Exception handling
GB1518165.4 2015-10-14
PCT/GB2016/052784 WO2017064453A1 (en) 2015-10-14 2016-09-09 Exception handling

Publications (2)

Publication Number Publication Date
KR20180067581A true KR20180067581A (ko) 2018-06-20
KR102613643B1 KR102613643B1 (ko) 2023-12-14

Family

ID=55131018

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187012810A KR102613643B1 (ko) 2015-10-14 2016-09-09 예외 처리

Country Status (9)

Country Link
US (1) US10649787B2 (ko)
EP (1) EP3341834B1 (ko)
JP (1) JP6920286B2 (ko)
KR (1) KR102613643B1 (ko)
CN (1) CN108139906B (ko)
GB (1) GB2543306B (ko)
IL (1) IL257898B (ko)
TW (1) TWI724034B (ko)
WO (1) WO2017064453A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2579617B (en) * 2018-12-06 2021-01-27 Advanced Risc Mach Ltd An apparatus and method for handling exception causing events
FR3100901B1 (fr) * 2019-09-12 2021-08-27 Stmicroelectronics Grand Ouest Sas Système de protection de la mémoire
US11816217B2 (en) * 2020-04-10 2023-11-14 Vmware, Inc. Decoy memory allocation

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101533224B1 (ko) * 2008-05-23 2015-07-02 에이알엠 리미티드 호스트 데이터 처리장치내의 디바이스 에뮬레이션 지원

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5327567A (en) * 1989-11-16 1994-07-05 Texas Instruments Incorporated Method and system for returning emulated results from a trap handler
US5751945A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
CN100392618C (zh) * 1997-08-11 2008-06-04 全斯美达有限公司 保护计算机内存储器被写入的系统、方法和设备
US6189093B1 (en) * 1998-07-21 2001-02-13 Lsi Logic Corporation System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6615343B1 (en) * 2000-06-22 2003-09-02 Sun Microsystems, Inc. Mechanism for delivering precise exceptions in an out-of-order processor with speculative execution
GB2369464B (en) * 2000-11-27 2005-01-05 Advanced Risc Mach Ltd A data processing apparatus and method for saving return state
US7607133B2 (en) * 2004-02-11 2009-10-20 Arm Limited Interrupt processing control
US7802080B2 (en) * 2004-03-24 2010-09-21 Arm Limited Null exception handling
US7406634B2 (en) * 2004-12-02 2008-07-29 Cisco Technology, Inc. Method and apparatus for utilizing an exception handler to avoid hanging up a CPU when a peripheral device does not respond
US7920584B2 (en) * 2005-05-04 2011-04-05 Arm Limited Data processing system
US8463969B2 (en) * 2005-06-30 2013-06-11 Intel Corporation Extended message signal interrupt
US7657694B2 (en) * 2006-12-20 2010-02-02 Arm Limited Handling access requests in a data processing apparatus
CN102460376B (zh) * 2009-06-26 2016-05-18 英特尔公司 无约束事务存储器(utm)系统的优化
US8135894B1 (en) * 2009-07-31 2012-03-13 Altera Corporation Methods and systems for reducing interrupt latency by using a dedicated bit
US9244686B2 (en) * 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US20120260073A1 (en) * 2011-04-07 2012-10-11 Via Technologies, Inc. Emulation of execution mode banked registers
US9152548B2 (en) * 2012-01-17 2015-10-06 Vmware, Inc. Controlling access to a privileged resource in user-mode system level mobile virtualization using a ptrace () system call
US9317452B1 (en) * 2013-11-18 2016-04-19 Amazon Technologies, Inc. Selective restrictions to memory mapped registers using an emulator
US9396056B2 (en) * 2014-03-15 2016-07-19 Intel Corporation Conditional memory fault assist suppression
US10289414B2 (en) * 2014-06-02 2019-05-14 International Business Machines Corporation Suppressing branch prediction on a repeated execution of an aborted transaction
US9864541B2 (en) * 2015-02-13 2018-01-09 Google Llc Transparent hardware-assisted memory decompression

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101533224B1 (ko) * 2008-05-23 2015-07-02 에이알엠 리미티드 호스트 데이터 처리장치내의 디바이스 에뮬레이션 지원

Also Published As

Publication number Publication date
EP3341834A1 (en) 2018-07-04
GB201518165D0 (en) 2015-11-25
CN108139906A (zh) 2018-06-08
US10649787B2 (en) 2020-05-12
TW201715408A (zh) 2017-05-01
KR102613643B1 (ko) 2023-12-14
JP6920286B2 (ja) 2021-08-18
GB2543306A (en) 2017-04-19
CN108139906B (zh) 2022-09-02
IL257898A (en) 2018-05-31
IL257898B (en) 2020-03-31
US20180239607A1 (en) 2018-08-23
TWI724034B (zh) 2021-04-11
WO2017064453A1 (en) 2017-04-20
GB2543306B (en) 2019-05-01
EP3341834B1 (en) 2021-05-12
JP2018531462A (ja) 2018-10-25

Similar Documents

Publication Publication Date Title
EP3706361B1 (en) Loading and virtualizing cryptographic keys
TWI509518B (zh) 用於改良巢式虛擬化之性能的方法、中央處理單元裝置及系統
US8959318B2 (en) Illegal mode change handling
US8301856B2 (en) Restricting memory areas for an instruction read in dependence upon a hardware mode and a security flag
KR102189296B1 (ko) 가상 머신 보안 어플리케이션을 위한 이벤트 필터링
JP7432586B2 (ja) スタック・ポインタを検証すること
US20160034300A1 (en) Information processing devicing and method
JP2018524731A (ja) セキュアモード状態のデータ・アクセス・トラッキング
KR102613643B1 (ko) 예외 처리
JP2009009232A (ja) コンピュータとカーネル保護方法並びにコンピュータソフトウエア
JP2018531462A6 (ja) 例外処理
JP6634083B2 (ja) データ処理装置におけるシステムエラー処理
Im et al. On-demand virtualization for live migration in bare metal cloud
US11188367B2 (en) Guest operating system physical memory page protection using hypervisor
US20210157601A1 (en) Exception interception
JP2018036695A (ja) 情報処理監視装置、情報処理監視方法、監視プログラム、記録媒体及び情報処理装置
CN111159716B (zh) 一种安全保护方法及电子设备
CN112256391A (zh) 一种虚拟机内存迁移方法、装置、及设备
KR20200020926A (ko) 콘텍스트 데이터 관리

Legal Events

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