KR102427949B1 - 데이터 처리 장치에서의 시스템 에러 핸들링 - Google Patents

데이터 처리 장치에서의 시스템 에러 핸들링 Download PDF

Info

Publication number
KR102427949B1
KR102427949B1 KR1020177016744A KR20177016744A KR102427949B1 KR 102427949 B1 KR102427949 B1 KR 102427949B1 KR 1020177016744 A KR1020177016744 A KR 1020177016744A KR 20177016744 A KR20177016744 A KR 20177016744A KR 102427949 B1 KR102427949 B1 KR 102427949B1
Authority
KR
South Korea
Prior art keywords
error
exception
condition
data processing
memory barrier
Prior art date
Application number
KR1020177016744A
Other languages
English (en)
Other versions
KR20170091641A (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 KR20170091641A publication Critical patent/KR20170091641A/ko
Application granted granted Critical
Publication of KR102427949B1 publication Critical patent/KR102427949B1/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
    • 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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error 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 the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • 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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

데이터 처리 장치 및 데이터 처리 방법이 제공된다. 데이터 처리 동작은 데이터 처리 명령에 응답하여 수행된다. 데이터 처리 동작이 성공적이지 않았다면 에러 예외 상태가 설정된다. 에러 메모리 배리어 상태(error memory barrier condition)가 존재하는지 판단되고. 에러 메모리 배리어 상태가 존재하는지 여부에 따라 에러 메모리 배리어 프로시저(error memory barrier procedure)가 수행된다. 에러 메모리 배리어 프로시저는, 에러 예외 상태(error exception condition)가 설정되고 에러 마스크 상태(error mask condition)가 설정되면, 연기된 에러 예외 상태를 설정하는 단계; 및 에러 예외 상태를 클리어하는 단계를 포함한다.

Description

데이터 처리 장치에서의 시스템 에러 핸들링{SYSTEM ERROR HANDLING IN A DATA PROCESSING APPARATUS}
본 개시 내용은 데이터 처리에 관한 것이다. 더욱 상세하게는, 이는 데이터 처리 장치에서 시스템 에러를 핸들링하는 것에 관한 것이다.
실행하는 데이터 처리 명령에 응답하여, 데이터 처리 장치가 데이터 처리 동작을 수행하고 있을 때, 데이터 처리 장치에 의해서 시도되는 일부 데이터 처리 동작이 시스템 에러를 야기할 수 있다는 것이 알려져 있다. 이러한 시스템 에러는 다양한 이유로 발생될 수 있지만, 일반적으로 데이터 처리 장치가 데이터 처리 동작을 성공적으로 완료할 수 없었다는 것을 나타낸다. 이러한 시스템 에러의 발생을 핸들링하기 위하여, 신뢰성 있고 일관된 방식으로 시스템 에러의 발생을 핸들링하기 위하여 프로그래머에 의해 제공된 데이터 처리 명령의 세트인 예외 핸들링 루틴(exception handling routine)을 데이터 처리 장치가 수행하도록 구성될 수 있다는 것이 더 알려져 있다. 본 개시 내용은 데이터 처리 장치가 시스템 에러의 발생에 응답하는 방식에 있어서의 개선에 관한 것이다.
제1 양태로부터 보아, 데이터 처리 명령에 응답하여 데이터 처리 동작을 수행하고, 에러 메모리 배리어 상태가 존재하는지 판단하고, 상기 에러 메모리 배리어 상태(error memory barrier condition)가 존재하는지 여부에 따라 에러 메모리 배리어 프로시저(error memory barrier procedure)를 수행하는 처리 회로를 포함하는 데이터 처리 장치가 제공되고, 상기 처리 회로는 데이터 처리 동작이 성공적이지 않았다는 검출에 따라 제1 레지스터 위치에 에러 예외 상태(error exception condition)를 설정할 수 있고, 상기 에러 메모리 배리어 상태는 에러 예외 상태에 응답하여 상기 에러 메모리 배리어 프로시저가 수행될 수 있다는 것을 나타내고, 상기 에러 메모리 배리어 프로시저는, 상기 에러 예외 상태가 설정되고 에러 마스크 상태(error mask condition)가 설정되면, 제2 레지스터 위치에 연기된 에러 예외 상태(deferred error exception condition)를 설정하는 단계; 및 상기 제1 레지스터 위치에서 상기 에러 예외 상태를 클리어하는 단계를 포함한다.
제2 양태로부터 보아, 데이터 처리 명령에 응답하여 데이터 처리 동작을 수행하는 단계; 데이터 처리 동작이 성공적이지 않았다는 검출에 따라 제1 레지스터 위치에 에러 예외 상태(error exception condition)를 설정하는 단계; 에러 메모리 배리어 상태(error memory barrier condition)가 존재하는지 판단하는 단계; 및 상기 에러 메모리 배리어 상태가 존재하는지 여부에 따라 에러 메모리 배리어 프로시저(error memory barrier procedure)를 수행하는 단계를 포함하는 데이터 처리 방법이 제공되고, 상기 에러 메모리 배리어 상태는 에러 예외 상태에 응답하여 상기 에러 메모리 배리어 프로시저가 수행될 수 있다는 것을 나타내는, 상기 수행하는 단계를 포함하고, 상기 에러 메모리 배리어 프로시저는, 상기 에러 예외 상태가 설정되고 에러 마스크 상태(error mask condition)가 설정되면, 제2 레지스터 위치에 연기된 에러 예외 상태(deferred error exception condition)를 설정하는 단계; 및 상기 제1 레지스터 위치에서 상기 에러 예외 상태를 클리어하는 단계를 포함한다.
제3 양태로부터 보아, 데이터 처리 명령에 응답하여 데이터 처리 동작을 수행하는 수단; 데이터 처리 동작이 성공적이지 않았다는 검출에 따라 제1 레지스터 위치에 에러 예외 상태(error exception condition)를 설정하는 수단; 에러 메모리 배리어 상태(error memory barrier condition)가 존재하는지 판단하는 수단; 및 상기 에러 메모리 배리어 상태가 존재하는지 여부에 따라 에러 메모리 배리어 프로시저(error memory barrier procedure)를 수행하는 수단을 포함하는 데이터 처리 장치가 제공되고, 상기 에러 메모리 배리어 상태는 에러 예외 상태에 응답하여 상기 에러 메모리 배리어 프로시저가 수행될 수 있다는 것을 나타내는, 상기 수행하는 수단을 포함하고, 상기 에러 메모리 배리어 프로시저는, 상기 에러 예외 상태가 설정되고 에러 마스크 상태(error mask condition)가 설정되면, 제2 레지스터 위치에 연기된 에러 예외 상태(deferred error exception condition)를 설정하는 단계; 및 상기 제1 레지스터 위치에서 상기 에러 예외 상태를 클리어하는 단계를 포함한다.
본 발명은, 단지 예로서, 다음의 첨부된 도면에 도시된 바와 같은 이의 실시예를 참조하여 더 설명될 것이다:
도 1은 일 실시예에서 처리 회로 및 연관된 메모리 시스템의 일례를 개략적으로 도시한다;
도 2는 일 실시예에서 도 1의 일부 컴포넌트의 구성을 더욱 상세히 개략적으로 도시한다;
도 3은 일 실시예에서 처리 회로에 의해 실행될 수 있는 데이터 처리 명령의 시퀀스와, 일부 관련된 데이터 처리 동작 및 시스템 이벤트를 도시한다;
도 4는 일 실시예에서 데이터 처리 회로에 의해 수행되는 단계들의 예시적인 세트를 도시한다.
도 5는 일 실시예에서 처리 회로에 의하여 데이터 처리 명령에 응답하여 수행되는 단계들의 시퀀스를 도시한다;
도 6은 하나의 예시적인 실시예의 가상화된 동작 환경을 개략적으로 도시한다;
도 7은 가상화된 동작 환경에서 실행되는 일 실시예에서 수행되는 단계들의 시퀀스를 도시한다;
도 8a 및 8b는 일 실시예에서의 복수의 예외 상황(exception regime) 및 예외 레벨과, 예외가 취해질 때 이러한 예외 레벨들 사이의 일부 예시적인 전이(transition)를 계략적으로 도시한다;
도 9a는, 일 실시예에서, 대응하는 에러 예외 상태가 어떻게 핸들링되는지에 대한 정의와 함께, 물리적 에러를 핸들링하는데 사용되는 현재 및 목표 예외 레벨의 예시적인 세트를 도시한다;
도 9b는, 일 실시예에서, 대응하는 에러 예외 상태가 어떻게 핸들링되는지에 대한 정의와 함께, 가상 에러를 핸들링하는데 사용되는 현재 예외 레벨 및 목표 예외 레벨의 예시적인 세트를 도시한다;
도 9c는 가상화된 동작 환경에서 실행되는 일 실시예에서 2개의 파라미터의 설정에 따라 사용되는 물리적 및 가상 목표의 테이블을 도시한다;
도 10a는 일 실시예에서 에러 메모리 배리어 명령을 정의하는 의사 코드의 예시적인 세트를 도시한다; 그리고,
도 10b는 에러 메모리 배리어 명령을 이용하는 데이터 처리 명령의 예시적인 시퀀스를 도시한다.
본 기술은 예외 핸들링 프로시저(exception handling procedure)(루틴(routine))를 수행함으로써 시스템 에러(비동시 중단(asynchronous abort))에 응답하는 데이터를 처리하기 위한 장치에서, 이러한 에러의 소스를 이것이 보고될 때 시스템이 식별하는 데 어려움이 발생할 수 있다. 이것은 이러한 에러들의 비동시 성질에 관련되며, 이는 이 시스템 에러가 발생하는 것을 야기한 데이터 처리 명령이 실행된 포인트와, 에러가 프로세서(처리 회로)로 다시 보고되는 포인트 사이에 상관 관계가 거의 없을 수 있다는 것을 의미한다. 이것은 예를 들어, 특히, 이러한 메모리 액세스와 연관될 수 있는 대기 시간(latency)과, 이들이 다양한 방식으로 성공적이지 않을 수 있는 가능성을 고려하여, 처리 회로가 대응하는 데이터 처리 명령에 응답하여 수행하려고 하는 메모리 액세스에 관한 경우일 수 있다. 이러한 에러는, 예를 들어, 로드(load) 동작, 저장 동작, 페이지 테이블 워크(page table walk), 명령 페치(instruction fetch) 등에 의해 생성될 수 있다. 특히, 본 기술은, 이전 예외(예를 들어, 인터럽트 요청과 같은)에 의해 트리거된 예외 핸들링 프로시저를 이미 수행하고 있는 동안 시스템 에러(성공적이지 않은 메모리 액세스에 기인할 수 있거나 또는 다른 소스를 가질 수 있음)가 처리 회로에 보고될 때, 예를 들어 적합한 교정(remedial) 조치가 취해질 수 있도록, 시스템이 이제 핸들링해야만 하는 시스템 에러의 소스를 시스템이 식별할 수 있는 것이 유익하다는 것을 인식한다. 에러 예외 상태(error exception condition)가 이에 따라 장치에서 상이한 이벤트에 응답하여 설정될 수 있다는 점을 주목하라. 한편으로는 이는 성공적이지 않은 메모리 액세스에 응답하여 설정될 수 있지만(즉, 메모리 액세스가 명령된 바와 같이 정확하게 완료되지 않은 경우에), 다른 한편으로는 또한, 예를 들어, 랜덤 이벤트 또는 업셋(upset)과 같은 것 때문에, (예를 들어, 다른 데이터 처리 동작이 수행되고 있는 동안) 장치 내의 다른 데이터 종류의 에러 예외 상태에 응답하여 설정될 수 있다.
이를 수행하기 위하여, 시스템 에러가 장치 내에 설정되고 있고 처리 회로가 예외 핸들링 프로시저를 수행하기 위하여 통상적으로 구성되도록 처리 회로가 응답하는 에러 예외 상태를 야기하는 경우에, 본 기술은 처리 회로로 하여금 시스템 에러에 대한 그 응답을 우선적으로 처리할 수 있게 하는 에러 마스크 상태(error mask condition)(예를 들어, 장치 내에 저장된 에러 마스크 값을 설정함으로써 설정될 수 있다)를 소개한다. 특히, 처리 회로가 제1 예외 상태에 응답하여 예외 핸들링 프로시저를 이미 수행하고 있는 동안 또는 예외 핸들링 프로시저를 수행함으로써 시스템 에러에 응답하는 것이 가능하지 않은 미리 정의된 "임계 프로그램 코드(critical program code)"를 처리 회로가 실행하고 있는 동안, 시스템 에러가 처리 회로로 통지될 때, 처리 회로는 연기된 에러 예외 상태(deferred error exception condition)의 설정과, 시스템 에러 발생 결과로서 설정된 에러 예외 상태를 클리어하는 것을 이용하여 이 시스템 에러에 대한 이의 응답을 연기할 수 있다. 이것은 처리 회로가 인터럽트되지 않은 제1 예외 또는 임계 프로그램 코드에 응답하여 이의 예외 핸들링 프로시저를 계속할 수 있게 할 뿐만 아니라, 시스템 에러 발생을 야기한 소스(즉, 데이터 처리 명령 또는 데이터 처리 명령의 최소한의 세트)를 시스템이 더 양호하게 구별할 수 있게 한다. 특히, 이는 제1 예외에 응답한 예외 핸들링 프로시저의 개시에 선행한 명령 실행으로부터 야기된 시스템 에러 소스와, 제1 예외에 대한 예외 핸들링 프로시저의 일부를 형성한 명령 실행을 시스템이 구별할 수 있게 한다. 이 기능은 시스템 프로그래머에 의해 존재하게 될 수 있는(설정될 수 있는) 에러 메모리 배리어 상태(error memory barrier condition)를 이용하여 처리 회로 내에서 구성 가능하다. 이 에러 메모리 배리어 상태가, 예를 들어, 전용 명령에 의해, 처리 회로가 예외 핸들링 프로시저의 수행을 개시할 때 항상 존재하도록 정의됨으로써, 장치의 진행 중인 "모드(mode)"(예를 들어, 장치 내에서 이 목적으로 유지된 값에 의해 정의됨)가 설정되는 경우에 처리 회로가 예외 핸들링 프로시저의 수행을 개시할 때 존재하도록 정의됨으로써, 그리고 기타 등등에 의해 설정될 수 있는 다양한 방법이 있다. 이러한 방식은, 유익하게는, 예를 들어 연관된 상당한 처리 비용 및 시간 비용을 통상적으로 가지는 예외 핸들링 프로시저(루틴)의 시작에 있어서 데이터 및 명령 동기화 배리어를 이용할 필요 없이, 이러한 시스템 에러를 더욱 효율적으로 핸들링할 수 있는 장치를 제공한다.
일부 실시예에서, 처리 회로는 메모리 액세스가 성공적이지 않았다고 수신된 표시에 응답하여 에러 예외 상태를 설정할 수 있지만(즉, 설정하도록 구성되지만), 이것은 처리 회로가 응답하여 에러 예외 상태를 설정하도록 구성되는 유일한 종류의 이벤트가 아닐 수 있으며, 일부 실시예에서 처리 회로는 성공적이지 않은 메모리 액세스가 아닌 다른 이벤트에 응답하여 에러 예외 상태를 설정하도록 구성될 수 있다. 예를 들어, 처리 회로는 성공적이지 않은 데이터 처리 동작 등에 응답하여 에러 예외 상태를 설정할 수 있다.
처리 회로는 다양한 방식으로 에러 예외 상태에 응답할 수 있으며, 일부 실시예에서, 처리 회로는, 에러 예외 상태가 설정되고 에러 마스크 상태가 설정되지 않은 경우에, 예외 핸들링 프로시저를 수행할 수 있다.
데이터 처리 동작은 다양한 형태를 취할 수 있으며, 일부 실시예에서, 데이터 처리 동작은 메모리 액세스를 포함할 수 있고, 처리 회로는 메모리 액세스에 대하여 에러 응답을 수신할 수 있고, 처리 회로는 메모리 액세스가 성공적이지 않았다고 에러 응답이 나타내는 경우에 에러 예외 상태를 설정할 수 있다.
일부 실시예에서, 처리 회로는 데이터 처리 명령 내의 에러 메모리 배리어 명령에 응답하여 에러 메모리 배리어 상태가 존재하는지 판단할 수 있다. 에러 메모리 배리어 명령의 제공은 에러 메모리 배리어 상태가 처리 회로에 대하여 언제 존재하는지(설정되는지) 판단하는데 있어서 시스템 프로그래머에게 유연성을 제공하며, 아울러, 에러 메모리 배리어 명령을 접할 때 에러 메모리 배리어 상태를 설정할 뿐만 아니라 다른 동작을 수행하기 위하여 따르는 구성을 처리 회로가 가지는 기회를 제공한다.
일부 실시예에서, 처리 회로는, 예외 핸들링 프로시저의 일부로서, 그리고 연기된 에러 예외 상태(deferred error exception condition)가 설정된 경우에, 적어도 하나의 데이터 처리 명령에 관한 교정(remedial) 응답을 개시할 수 있고, 적어도 하나의 데이터 처리 명령은 에러 메모리 배리어 상태가 존재했다고 판단하기 전에 실행되는 데이터 처리 명령을 포함한다.
처리 회로가 에러 메모리 배리어 프로시저를 수행하는 것의 일부로서 연기된 에러 예외 상태를 설정하였을 때, (예를 들어, 에러 메모리 배리어 명령의 실행에 의한) 에러 메모리 배리어 상태가 존재하였다는 처리 회로에 의한 판단 전에 수행된 적어도 하나의 데이터 처리 명령이 연기된 에러 예외 상태가 설정되는 결과를 제공하는 에러 응답을 야기하였다는 것이 추론될 수 있으며, 예를 들어, 동일한 시퀀스의 데이터 처리 명령의 후속 실행에서 다시 회피되게 하도록, 그 적어도 하나의 데이터 처리 명령에 관하여 적합한 교정 응답이 그 다음 취해질 수 있다.
일부 실시예에서, 장치는 에러 메모리 배리어 모드 값 스토리지를 더 포함하고, 처리 회로가 예외 핸들링 프로시저의 수행을 개시할 때, 처리 회로는 에러 메모리 배리어 모드 값 스토리지에 저장된 에러 메모리 배리어 모드 값에 따라 에러 메모리 배리어 상태가 존재한다고 판단할 수 있다. 예를 들어, 에러 메모리 배리어 모드 값 스토리지는 예외를 취할 때 에러 메모리 배리어 상태가 존재하는 모드에서 처리 회로가 동작하는지 여부를 나타내는 단일 비트를 저장할 수 있다. 이 값은 처리 회로가 예외 핸들링 프로시저의 수행을 개시할 때 에러 메모리 배리어 상태가 존재하는 것을 정의될 때 따르는 시스템 프로그래머에 의해 설정되는 처리 회로의 진행 중인 모드를 정의할 수 있다. 에러 메모리 배리어 상태는, 또한, 일부 실시예에서, 예외 핸들링 프로시저가 개시될 때마다 존재하도록 장치 내에서 정의될 수 있고, 이러한 실시예에서, 에러 메모리 배리어 상태가 존재하는 것으로 판단되게 하기 위하여 임의의 명시적인 동작(예를 들어, 메모리 배리어 명령의 실행 또는 에러 메모리 배리어 모드 값이 설정되는 것)에 대한 필요성이 없다.
일부 실시예에서, 처리 회로는, 에러 메모리 배리어 프로시저를 수행할 때, 그리고 에러 메모리 배리어 상태가 존재하는 경우에, 추가 데이터 처리 명령을 실행하기 전에 아직 완료되지 않은 각각의 메모리 액세스에 대하여 에러 응답을 대기할 수 있다. 예를 들어 처리 회로와 연관된 로드(load)/저장 유닛의 내용으로부터 판단될 수 있는, 아직 완료되지 않은 각각의 메모리 액세스에 대한 에러 응답을 대기함으로써, 처리 회로는, 예를 들어 이전의 에러 예외 상태에 응답하여 수행되는 예외 핸들링 프로시저를 거치는 동안에, 그 에러 응답을 핸들링하는 것이 잠재적으로 파괴적(disruptive)이라면, 추가의 데이터 처리 명령의 실행 동안 이의 에러 응답을 리턴하기 위한 불완전한 메모리 액세스에 대한 가능성을 회피할 수 있다.
에러 마스크 상태는 다양한 방식으로 설정될 수 있지만, 일부 실시예에서, w장치는 에러 마스크 값 스토리지를 더 포함하고, 처리 회로는 에러 마스크 값 스토리지에 저장된 에러 마스크 값에 따라 에러 마스크 상태가 설정되는지 판단할 수 있다.
일부 실시예에서, 처리 회로는 예외 핸들링 프로시저를 시작할 때 에러 마스크 값을 설정할 수 있다. 장치 및 이의 처리 회로의 특정 구성에 따라, 예외 핸들링 프로시저를 시작할 때, 에러 마스크 상태가 항상 설정되는 것이 유익할 수 있어, 추가 시스템 에러(예를 들어, 성공적이지 않은 메모리 액세스)의 발생이 에러 예외 상태가 설정되는 결과를 제공한다면, 처리 회로가, 에러 메모리 배리어 프로시저를 수행할 때, 이 후자의 시스템 에러에 대한 이의 응답을 연기함으로써 대응할 것이다. 이러한 특정 기능이 어떻게 구현되는지는 예를 들어 처리 회로가 시스템 에러에 대한 수신된 표시에 응답하는 해당하는 예외 핸들링 프로시저의 우선 처리에 영향을 미칠 수 있는 복수의 소프트웨어 실행 특권 레벨을 가지고 있는지 여부에 의존할 수 있다.
일부 실시예에서, 처리 회로는 연기된 에러 예외 상태가 설정되지 않은 경우에 예외 핸들링 프로시저의 일부로서 에러 마스크 값을 클리어할 수 있다. 이러한 방식으로 에러 마스크 상태를 클리어하는 것은, 에러 마스크 값이 설정되었거나 후속 에러, 즉 이러한 에러에 예외를 직접 생성할 수 있는 동안, 처리 회로로 하여금 미결인 채로 있었던 에러에 직접 응답하게 한다.
일부 실시예에서, 처리 회로는 에러 마스크 값을 설정하고, 연기된 에러 예외 상태가 설정되지 않은 경우에 미리 정해진 세트의 데이터 처리 명령이 완료된 후에 에러 마스크 값을 클리어할 수 있다. 이러한 미리 정해진 세트의 데이터 처리 명령은, 예를 들어, 자동으로 실행되어야 하고 따라서 그 실행 동안 예외 핸들링 프로시저를 수행함으로써 시스템 에러가 응답될 수 없는 코드의 "중요(critical)" 부분일 수 있다. 코드의 이러한 중요한 부분이 실행되기 전에, 에러 마스크 상태가 설정되어야 한다. 코드의 이러한 중요한 부분이 완료되면, 에러 마스크 상태는 이에 따라 이러한 방식으로 클리어될 수 있고, 이는 에러 마스크 값이 설정되었거나 후속 에러, 즉 이러한 에러에 예외를 직접 생성할 수 있는 동안, 처리 회로로 하여금 미결인 채로 있었던 에러에 직접 응답하게 한다.
일부 실시예에서, 처리 회로는 복수의 예외 레벨로부터 선택된 현재 예외 레벨에서 예외 핸들링 프로시저를 수행할 수 있고, 복수의 예외 레벨은 복수의 소프트웨어 실행 특권 레벨에 대응한다. 처리 회로 내의 복수의 소프트웨어 실행 특권 레벨의 제공은, 본 상황에서, 예를 들어, 실행되어야 하는 예외 레벨이 현재 예외 레벨보다 더 높은 소프트웨어 실행 특권 레벨에 대응하는 경우에 나중의 예외 핸들링 응답(즉, 프로시저)이 바로 취해지게(즉, 연기되지 않게) 할 수 있도록 사용될 수 있는 이러한 복수의 소프트웨어 실행 특권과 연관된 상이한 레벨의 복수의 예외 레벨에서 예외 핸들링 프로시저의 우선 처리가 수행될 수 있게 한다.
일부 실시예에서, 처리 회로는, 추가의 에러 예외 상태에 응답하는 추가의 예외 핸들링 프로시저가 수행되어야 하는 예외 레벨과 동일하거나 더 높은 예외 레벨에서 (제1) 예외 핸들링 프로시저가 처리 회로에 의해 수행되어야 하는 경우에, (제1) 예외 핸들링 프로시저를 개시할 때 에러 마스크 상태를 설정할 수 있다. 따라서, 에러 마스크 상태의 설정은, 더 높은 예외 레벨(소프트웨어 실행 특권 레벨)에서 수행되고 있는 (제1) 예외 핸들링 프로시저가 동일하거나 더 낮은 레벨에서 핸들링될 에러 예외 상태(예를 들어, 처리 회로에 대한 에러 응답의 통지)의 임의의 후속 설정에 의해 방해받지 않을 것이라는 것을 보장하는데 사용될 수 있다. 따라서, 주어진 예외 레벨에서, 소프트웨어는 어느 것이 보호를 필요로 하는 코드의 "중요 영역(critical region)"인지 결정할 수 있고, 본 기술은 이에 따라 그 보호를 구현하는데 사용될 수 있다.
일부 실시예에서, 처리 회로는, 추가의 에러 예외 상태에 응답하는 추가의 예외 핸들링 프로시저가 수행되어야 하는 예외 레벨보다 더 낮은 예외 레벨에서 (제1) 예외 핸들링 프로시저가 처리 회로에 의해 수행되어야 하는 경우에, 제1 예외 핸들링 프로시저를 개시할 때 에러 마스크 상태를 설정할 수 없다. 이러한 방식으로 에러 마스크 상태를 설정하지 않음으로써, 처리 회로가 이의 더 낮은 소프트웨어 실행 특권 레벨에서 예외 핸들링 프로시저를 수행할 때, 에러 예외 상태의 후속 설정에 응답하는 예외 핸들링 프로시저는 바로 수행되지 않을 것이다(즉, 예외가 생성될 것이다).
일부 실시예에서, 장치는 적어도 하나의 가상 기계가 동작하는 가상화된 동작 환경을 제공할 수 있고, 가상 기계는 처리 회로와의 상호 작용에 의해 데이터 처리 명령에 응답하여 데이터 처리 동작을 수행할 수 있다. 따라서, 장치에 의해 실행되는 데이터 처리 명령은 가상 기계 하드웨어와의 이의 상호 작용을 모델링하는 가상 기계 프로그램과 상호 작용할 수 있다.
일부 실시예에서, 장치는 가상 에러 예외 상태를 설정할 수 있고, 처리 회로는, 가상 에러 예외 상태가 설정되고 가상 에러 마스크 상태가 설정되지 않은 경우에, 예외 핸들링 프로시저를 수행할 수 있다. 가상 에러 예외 상태를 설정하는 것은 다양한 방식으로 발생할 수 있으며, 일부 실시예에서 하드웨어에 의해 설정되며, 일부 실시예에서 장치가 가상화된 동작 환경의 동작을 제어하는 하이퍼바이저(hypervisor)를 실행할 수 있고 하이퍼바이저가 가상 에러 예외 상태를 설정할 수 있다. 이것은 하드웨어 또는 하이퍼바이저로 하여금 가상 시스템 에러를 시스템으로 "주입(inject)"할 수 있게 하며, 이러한 가상 에러는 다양한 목적을 위하여 사용될 수 있다. 그 다음 처리 회로가 물리적 에러에 응답하는 것과 동일한 방식으로 예외 핸들링 프로시저를 수행함으로써 가상 에러에 응답할 수 있다는 사실은, 에러의 성질이 게스트(guest)(즉, 하이퍼바이저의 제어 하에서 동작하는 가상 기계)에 투과성(transparent)이기 때문에 유익하다.
일부 실시예에서, 에러 메모리 배리어 프로시저는, 가상 에러 예외 상태가 설정되고 가상 에러 마스크 상태가 설정된 경우에, 가상의 연기된 에러 예외 상태(virtual deferred error exception condition)를 설정하는 단계; 및 가상 에러 예외 상태를 클리어하는 단계를 더 포함한다. 이러한 방식은, 가상화된 동작 환경 내에서 본 기술에 대한 추가 지원을 제공한다. 예를 들어, 에러 메모리 배리어 상태가 에러 메모리 배리어 명령의 실행에 의해 설정되는 경우에, 이는 모든 예외 엔트리를 수행하기 위하여는 비용이 들 수 있는, 하이퍼바이저에서 에러 메모리 배리어 명령을 가두고 에뮬레이트할 필요성을 방지한다.
일부 실시예에서, 장치는, 처리 회로가 연기된 에러 예외 상태가 설정되는지 판단하려고 시도할 때, 연기된 에러 예외 상태의 값 대신에 가상의 연기된 에러 예외 상태의 값을 제공할 수 있다. 이 값의 제공은 다양한 방식으로 일어날 수 있으며, 일부 실시예에서 이는 하드웨어 의해 제공되며, 일부 실시예에서, 하이퍼바이저가 이 값을 제공한다. 따라서, 하드웨어 또는 하이퍼바이저는 이에 따라 가상의 연기된 에러 예외 상태의 값을 (전술한 이점을 가지면서) 유지할 수 있지만, 또한 가상의 연기된 에러 예외 상태와 연기된 에러 예외 상태 사이의 이러한 (가상의) 구별을 처리 회로로부터(즉, 게스트 가상 기계로부터) 완전히 숨긴 상태로 유지할 수 있다.
도 1은 처리 회로(4), 명령 디코더(6), 레지스터(8)의 뱅크 및 메모리 시스템(10)을 포함하는 데이터 처리 장치(2)를 개략적으로 도시한다. 메모리 시스템(10)은 하나 이상의 캐시(cache) 또는 메모리 장치를 포함한다. 처리 회로(4)는 덧셈기(12), 곱셈기(14) 및 시프터(16)와 같은 많은 처리 요소를 포함한다. 데이터를 처리할 때, 명령 디코더(6)는 레지스터(8)에 저장된 데이터를 처리하고 처리 결과를 레지스터(8)에 다시 저장하도록 처리 회로(4)를 제어하기 위한 제어 신호를 생성하기 위하여 프로그램 명령에 응답한다. 명령 디코더(6)의 제어 하에서, 데이터 처리 장치(2)는 또한 레지스터(8)와 메모리 시스템(10) 사이에 데이터를 전송하도록 제어될 수 있다(이러한 전송은 본 명세서에서 지칭되는 "메모리 액세스(memory access)"의 일례이다).
도 1의 예에서, 처리 회로(4)가 레지스터(8)에 저장된 데이터를 처리하고 처리 결과를 레지스터(8)에 다시 저장하는 것으로 도시되지만, 임의의 다른 종류의 저장 위치가 레지스터(8) 대신에 사용될 수 있다는 것이 이해될 것이다. 데이터 처리 장치(2)와, 구체적으로는, 처리 회로(4)가 통상적으로 도 1에 도시되지 않은 다른 요소를 포함할 수 있다는 것이 이해될 것이다.
도 2는 도 1의 데이터 처리 장치(2)의 일부 컴포넌트의 추가 상세를 도시한다. 프로세서 코어(20), 로드/저장 유닛(22), 메모리 관리 유닛(memory management unit(MMU))(24) 및 메모리 시스템(10)이 도시된다. 프로세서 코어(20)(도 1을 참조하면 처리 회로(4), 디코더(6) 및 레지스터(8)를 포함하지만, 명료함을 위하여 레지스터(8)만 도 2에 도시됨). 프로세서 코어(20)(그리고 구체적으로는 그 내의 처리 회로)는 대응하는 데이터 처리 명령에 응답하여 이것이 발행하는 메모리 액세스 요청을 핸들링하기 위하여 파이프라인 방식의(pipelined) 로드/저장 유닛(22)을 이용한다. 이러한 메모리 액세스와 연관된 대기 시간(latency) 때문에, 로드/저장 유닛(22)은 메모리 시스템과의 상호 작용을 관리하고 이후에 프로세서 코어(20)에 응답을 제공하며, 프로세서 코어(20)는 그 동안에 다른 데이터 처리 명령 실행을 계속할 수 있다. 예를 들어, 도시된 바와 같이, 프로세서 코어(20)는 이것이 액세스(예를 들어, 그 메모리 위치로부터의 로드)하려고 하는 메모리 어드레스(A)를 로드/저장 유닛(22)에 제공한다. 명령은 도시된 바와 같이 왼쪽으로부터 오른쪽으로 이동하고, 따라서 메모리 어드레스(A)는 한 사이클에서 없어지고, 데이터(D)가 이후에 리턴된다(따라서, 전술한 비동시성(asynchrony)을 제공한다).
메모리 시스템(10)은 도 2에서 L1 캐시(L1$), L2 캐시(L2$) 및 메인 DRAM 메모리를 포함하도록 도시된다. 또한, 메모리 시스템(10)은, 예를 들어, 프로세서 코어(20)에 의해 사용되는 가상 어드레스와, 메모리 시스템(10) 내에서 사용되는 물리적 어드레스 사이의 어드레스 변환 등을 제공하기 위하여, 프로세서 코어(20)와 메모리 시스템(10) 사이의 소정의 양태의 상호 작용을 관리하도록 연관된 MMU(24)를 가질 수 있다. 로드/저장 유닛(22)에 의해 메모리 시스템(10)에 발행된 메모리 액세스는 MMU(24)에 의해 수신될 수 있고, 예를 들어, MMU(24) 내의 페이지 테이블 내에 저장된 허가가 이러한 특정 메모리 액세스를 허용하지 않기 때문에 액세스 요청이 MMU(24)에 의해 성공적으로 수행될 수 없는 것으로 식별되면, 이것은 이미 에러가 로드/저장 유닛(22)으로 리턴되는 결과를 제공할 수 있다. 메모리 시스템(10) 내의 저장 위치에 도달하는 메모리 액세스 요청은 에러 응답이 로드/저장 유닛(22)으로 리턴되는 결과를 제공하며, 성공적이라면(그리고 메모리에 의해 그렇게 정의되면), 대응하는 메모리 위치(어드레스)로부터 검색된 데이터가 수반된다. 따라서, 여기에서 사용되는 바와 같은 "에러 응답(error response)"이라는 용어는 에러가 반드시 발생하였다는 것을 암시하는 것이 아니며, 오히려 에러가 발생하였는지 여부는 항상 수신되는 에러 응답의 내용으로부터 판단될 수 있다는 것이 이해되어 한다. 그 다음, 이 데이터 및 에러 응답은, 예시적인 데이터(D)에 대하여 도 2에 도시된 바와 같이, 로드/저장 유닛(22)으로부터 프로세서 코어(20)로 전달될 수 있다.
본 상황에서, 에러 응답의 내용은, 특히 이것이 메모리 액세스가 성공적이지 않는 것을 프로세스 코어(20)에 나타내는 경우에, 특별히 관련성이 있다. 이 경우에, 프로세스 코어(20) 내의 처리 회로는 대응하는 예외 핸들링 프로시저를 트리거하기 위하여 에러 예외 상태를 (레지스터 값 ISR.A를 1로 설정함으로써) 설정할 것이다. 그럼에도 불구하고, 프로세스 코어(20)는 이어지는 도면들에 관하여 아래에서 더욱 상세히 논의될 환경 하에서, 에러 예외 상태의 설정에 의해 트리거되는 예외 핸들링 프로시저를 즉시 수행하지 않을 수 있다. 이 기능이 프로세스 코어(20)에 의해 제공되기 위하여, 이는 레지스터(8) 내에 다양한 값을 저장하도록 구성된다. 도 2에서의 레지스터(8)는 (현재 프로세서 상태, 예를 들어, 스택 포인터, 링크 레지스터, 프로그램 카운터 및 다른 범용 레지스터 값을 구성하는) 다양한 상태 레지스터와, 값 PSTATE.A, ISR.A, DISR.A, AMO, VSE, VDISR.A 및 EMB 모드를 유지하는 것으로 도시된 추가 레지스터를 개략적으로 도시하지만, 접미어 ".A"가 붙어 있는 값을 유지하는 것으로 도시된 DISR 및 VDISR 레지스터는 또한 추가의 관련된 값을 유지한다. 예를 들어, DISR.A은 이러한 "연기된 에러 예외 상태"가 설정되었는지 아닌지를 나태는 값을 유지하고, DISR 레지스터의 다른 부분은 에러 신드롬 정보(error syndrome information)와 같은 관련 에러 예외를 핸들링할 때 추가 사용 정보를 저장할 수 있다. 이 에러 신드롬 정보는, 예를 들어, 에러 종류의 상세 및/또는 프로세서의 상태에 대한 에러의 효과의 상세를 포함할 수 있다. 이러한 레지스터와 값의 사용은 아래에서 더욱 상세히 논의될 것이다.
도 3은 시스템의 처리 회로에 의해 실행될 수 있는 데이터 처리 명령의 예시적인 시퀀스를 도시한다. 데이터 처리 명령의 제1 부분에 대하여, 처리 회로는 가장 낮은 소프트웨어 실행 특권 레벨에 대응하는 자신의 가장 낮은 예외 레벨(EL0)에서 동작하고 있다. 그 후, 예외 핸들링 루틴에 대응하는 것으로 라벨이 붙여진 데이터 처리 명령에 대하여, 데이터 처리 회로는 가장 높은 소프트웨어 실행 특권 레벨에 대응하는 자신의 가장 높은 예외 레벨(EL3)에서 동작하고 있다. 도면에서 알 수 있는 바와 같이, 데이터 처리 명령의 제1 부분에서 실행되는 로드(load(LDR)) 명령은 이의 실행에 대한 이러한 도시된 예에서 해당하는 메모리 액세스가 성공적으로 완료되지 않았다는 것을 나타내는 에러 응답, 즉 시스템 에러 결과를 궁극적으로 야기하는 메모리 액세스를 결과로 제공한다. 따라서 이 응답은 비동시 중단을 나타내며, 처리 회로에 의한 중단의 수신 타이밍은 대응하는 메모리 액세스를 개시한 명령이 실행되었을 때와 상관 관계를 거의 가지지 않을 수 있다. 예를 들어, 도 3의 예에 기초하여, LDR 명령으로부터 야기되는 에러 응답은 IRQ(인터럽트 요청(interrupt request)) 후에 처리 회로에 의해 수신되었다. 따라서, 이는 LDR 명령으로부터의 에러 응답이 수신되기 전에 제1 예외 상태가 설정되게 한 IRQ의 수신이었으며, 프로세서 코어(20)는 LDR로부터의 에러 응답(EL0 예외 레벨에서 실행됨)이 수신될 때 EL3 예외 레벨에서 제1 예외 핸들링 루틴을 처리하고 있다.
예외 핸들링 루틴의 시작에 나타낸 바와 같이, 본 예에서 제1 예외 핸들링 루틴이 추가 에러 예외 상태에 응답하는 추가 예외 핸들링 프로시저가 수행되어야 하는 예외 레벨과 같거나 더 높아야 하는 가장 높은 예외 레벨(EL3)에서 핸들링되기 때문에, 제1 동작(처리 회로 하드웨어에 의해 수행됨)은 에러 마스크 값(PSTATE.A)을 1로 설정하게 되며, 이 에러 마스크 값은 에러 마스크 상태가 설정된다는 것을 나타낸다는 점에 주목하라. 에러 마스크 상태의 이러한 설정은, 시스템 에러가 발생하였다는 것을 나타내는(그리고 이에 따라 에러 예외 상태를 설정하는) 처리 회로에 의해 수신된 후속 에러 응답이 추가 예외를 즉시 생성하지 않고 대신에 미결일 채로 있게 될(즉, 연기될) 것이라는 메커니즘을 지원하기 위하여 본 기술에 따라 사용된다. 이 메커니즘은 이어지는 도면을 참조하여 아래에서 더 설명될 것이다.
도 3에 도시된 예에서, 예외 핸들링 루틴에서 처리 회로가 초기에 접하는 명령은 본 기술에 의해 제공되는 EMB(에러 메모리 배리어(error memory barrier)) 명령이다. 이 EMB 명령을 접하는 것은 에러 메모리 배리어 상태가 이제 장치(시스템) 내에 존재한다고 처리 회로가 판단하게 한다. 다른 실시예에서, 처리 회로는. 예외 핸들링 루틴이 개시될 때마다 디폴트에 의해 에러 메모리 배리어 상태가 존재한다고 판단할 수 있거나(즉, EMB 명령의 명시적인 포함이 요구되지 않는다), 또는 프로세서 코어(도 2의 항목 8 참조)의 레지스터에 저장된 EMB 모드 값을 참조하여 에러 메모리 배리어 상태가 존재하는지 처리 회로가 판단할 수 있어, 이에 따라 특정 시스템 요건에 따라 이 모드를 설정하기 위한 유연성을 시스템 프로그래머에게 제공한다. 마지막으로, 이후에 예외 핸들링 루틴에서, DISR.A = 1인지 체크되며(본 실시예에서 소프트웨어에 의해 실시되는 단계), 이는 시스템 에러를 나타내는 에러 응답이 예외 핸들링 루틴 동안 수신되었는지 장치가 판단할 수 있게 한다는 점에 주목하라. 이에 대한 추가 상세는 이어지는 도면을 참조하여 아래에서 설명될 것이다.
도 4는 일 실시예에서 처리 회로(즉, 시스템 하드웨어)에 의해 취해지는 단계들의 세트를 도시한다. 이 단계들은, EMB 명령을 접할 때, 예를 들어, 도 3에 도시된 바와 같은 예외 핸들링 루틴의 시작에서, 또는 EMB 모드가 설정되는 동안 예외 핸들링 루틴에 진입될 때(예외 핸들링 루틴이 개시될 때) 취해지는 조치에 대응한다. EMB 명령을 접하는 것은 도 4에서 도시된 제1 단계, 즉 단계 40에 대응한다. 응답하여, 처리 회로는 (단계 42에서) 미결인 채로 있는 메모리 액세스, 즉 아직 완료되지 않은 도 2에 도시된 로드/저장 유닛(22)에 점유된 대응하는 엔트리를 갖는 이러한 메모리 액세스로부터 임의의 아직 처리되지 않은 에러 응답을 대기한다. 예외 핸들링 루틴을 실행하고 있는 동안 추가 시스템 에러가 처리 회로에 통지되는 것이 여전히 가능하다.
단계 44에서, 처리 회로는 에러를 나타내는 미결일 채로 있는 다양한 메모리 액세스 중 하나로부터 (물리적인) 에러 응답이 수신되었는지(즉, 미결인 채로 있는 메모리 액세스가 궁극적으로 성공적이지 않았다는 것을) 판단한다. 그렇지 않은 경우에, 흐름은 추가 명령 실행(초기에 예외 핸들링 루틴 내에서)이 계속되는 단계 54로 바로 진행한다. 그러나, 단계 44에서 에러 응답이 에러를 나타내고, 따라서 에러 예외 상태가 처리 회로에 의해 설정되게 하면(ISR.A = 1), 흐름은, 에러 마스크 상태가 설정되는지 체크함으로써, 에러가 마스킹되어 있는지 처리 회로가 판단하는 단계 46으로 진행한다.
에러가 마스킹되어 있지 않으면, 흐름은 이 에러에 응답하는 예외가 생성되고 이러한 예외를 핸들링하기 위한, 예를 들어, 다른 예외 핸들링 루틴으로 분기하기 위한 일반적인 프로시저가 수행된다. 이 예외를 취하는 것은 에러 신드롬 정보를 예외 신드롬 레지스터에 기록하는 것을 포함할 수 있고, 이 에러 신드롬 정보는 프로그래머가 볼 수 있는 프로세서의 상태가 올바른지 아니면 에러에 의해 사실상 감염되었는지 나타내는 정보를 포함할 수 있다. 반대로, 단계 46에서 에러가 마스킹되었다고 판단되면, 흐름은 처리 회로가 DISR.A의 값을 1로 설정하고 그리고/또는 DISR 레지스터의 다른 부분에 에러에 관련된 전술한 신드롬 정보를 기록하는 단계 50으로 진행한다. 이 에러 신드롬 정보는 에러 종류에 대한 상세 및/또는 (전술한 바와 같은) 프로세서의 상태에 대한 에러의 효과의 상세를 포함한다. 에러 종류 정보는 또한 에러가 에러 메모리 배리어에 의해 격리될 수 있는 종류인지 나타낼 수 있다. 예를 들어, (전술한 바와 같이) 단계 42에서 모든 메모리 액세스가 완료되고 에러 상태를 리턴하는 것을 에러 메모리 배리어가 대기하지만, 메모리 액세스에 의해 유발되지 않은 에러가 발생하는 경우, 에러 메모리 배리어가 이 에러를 "격리"하지 않을 수 있다는 점을 주목하라. 이를 해결하기 위하여, 예외 핸들링 프로시저가 에러에 대한 신드롬 정보를 기록할 때, 이는 에러가 에러 메모리 배리어에 의해 격리될 수 있는 종류인지 기록한다.
DISR.A를 설정하고 그리고/또는 에러 신드롬 정보를 기록하는 것은 본 명세서에서 연기된 에러 예외 상태가 설정되는 것으로 나타낸다. 그 다음, 흐름은 처리 회로가 ISR.A의 값을 0으로 설정하는(즉, 에러 예외 상태가 클리어된다) 단계 52로 진행한다. 그 후, 처리 회로는 명령 실행, 즉, 도 3에 도시된 예와 연계하여 예외 핸들링 루틴에서 EMB 명령에 이어지는 후속 명령을 계속한다. 그러나, 시스템 프로그래머가, 반드시 예외 핸들링 루틴 내에(또는 사실은 이의 시작에)서는 아닌, 데이터 처리 명령 내의 임의의 포인트에 EMB 명령을 추가할 자유를 가지며, 이러한 상황에서, 단계 54에 도시된 명령 실행의 계속은 EMB 명령이 발견되어야 할 때마다 EMB 명령에 이어지는 명령에 대한 것이라는 점이 주목되어야 한다.
도 5는, 하나의 예시적인 실시예에서 예외 핸들링 루틴을 제공하는 소프트웨어에 의해 수행되는, 도 4에 도시된 것에 상보적인 단계들의 시퀀스를 도시한다. 도 5에 도시된 제1 단계는 예외 핸들링 루틴의 시작이다(단계 60). 이 포인트에서, 하드웨어가 마스크 상태를 적절하게 설정한다(예를 들어, 아래에서 더욱 상세히 설명되는 바와 같이, 예외 레벨에 기초하여)는 점을 주목하라. 그 다음, 단계 62에서, 에러 메모리 배리어 상태를 설정하는 EMB 명령을 접한다. 다른 실시예에서, EMB 모드가 설정되어 있었을 수 있고, 예외 핸들링 루틴을 개시할 때 에러 메모리 배리어 상태가 하드웨어에 의해 설정되며(단계 60), 단계 62는 건너 띄어질 수 있다는 점에 주목하라. 단계 64에서 소프트웨어에 의해 수행되는 다음 단계는, 범용 레지스터, 예외 신드롬 레지스터 등의 내용을 포함하는, 임의의 휘발성 프로세서 상태를 (예를 들어, 스택에) 저장하는 것이다. 이것은 예외에 대한 추후 분석과, 예외가 취해진 포인트로의 회복이 발생할 수 있게 한다.
프로세서의 휘발성 상태가 저장되었으면, 그 다음, 단계 66에서, DISR.A의 값이 현재 1인지 판단된다. 그렇지 않은 경우에, 시스템 에러가 처리 회로에 의해 수신되지 않고 명령 실행이 EMB 동작 포인트에 도달하였다는 것이 추론될 수 있고, 단계 68에서 소프트웨어가 PSTATE.A의 값을 클리어한다(즉, 0으로 설정한다). 즉, 이 에러 마스크 값이 클리어된다. 그 다음, 흐름은 명령 실행이 계속되는 단계 70으로 진행하고, 전술한 바와 같이, 수신된 임의의 시스템 에러가 보통의 방식으로 시스템 에러 예외를 생성할 것이다. 임의의 이러한 시스템 에러가 처리 회로에 의해 수신되었을 때 명령 예외가 EMB 동작 포인트를 통과하였다는 것이 추론될 수 있다. 그러나, 단계 66에서, DISR.A의 값이 현재 1이라고 판단되면, 시스템 에러가 처리 회로에 의해 수신되어 미결인 채로 있었다(연기되었다)는 것이 알려지고, 흐름은 EMB 명령(또는 적어도 에러 메모리 배리어 상태가 존재하였다는 판단이 이루어진 명령 실행에서의 포인트)에 선행한 코드(적어도 하나의 데이터 처리 명령을 포함하는 데이터 처리 명령의 부분)에 관하여 교정 조치를 하기 위하여 전용의 에러 회복 루틴으로 분기되는 단계 72로 진행한다. 도 3에 도시된 예에서, EMB 명령이 예외 핸들링 루틴의 시작에 있는 경우에, 이는 예외 핸들링 루틴 전에, 즉, 예외 핸들링 루틴에 선행하는 것으로 도시된 명령 시퀀스에서, 코드에 관하여 취해진 교정 조치에 대응한다.
도 6은 가상화된 동작 환경이 제공되는 일 실시예를 개략적으로 도시한다. 여기에서, 시스템 하드웨어와 직접적으로 상호 작용하는 운영 체계의 제어 하에서 실행되는 애플리케이션(200)의 데이터 처리 명령 대신에, 데이터 처리 명령은 호스트 운영 체계(220)의 제어 하에서 시스템 하드웨어(230)와 간접적으로 상호 작용하는 게스트 운영 체계(가상 기계(210))의 제어 하에서 실행된다. 호스트 운영 체계 상에서 실행되는 하이퍼바이저는 가상화된 동작 환경의 전반적인 환경을 관리하고, 가상 기계(즉, 게스트 운영 체계가 시스템 내에서 보고 상호 작용하는 것을 지시한다. 가상 기계 프로그램(210)은 애플리케이션 프로그램 인터페이스(API(application program interface))를 실제 하드웨어에 의해 제공될 수 있는 애플리케이션 프로그램 인터페이스와 동일한 애플리케이션 프로그램(200)으로 지원한다.
API를 가속하기 위하여, 이 "가상" API의 일부 양태가 하드웨어(특히, 가상 에러 상태, 가상 에러 마스크 상태 및 VDSR 레지스터)에 의해 제공된다는 점이 주목되어야 한다. 하이퍼바이저는 값 AMO를 1로 설정함으로써 예외 레벨 EL2를 물리적 에러 예외에 대한 목표 예외 레벨이 되도록 설정할 수 있다. 또한, 하이퍼바이저는 시스템 내에 "가상 에러 예외 상태(virtual error exception condition)"를 생성할 수 있다. 이것은 값 AMO가 1로 설정될 때 하이퍼바이저가 VSE의 값을 1로 설정함으로써 이루어진다. 가상 에러 예외에 대한 목표 예외 레벨은 항상 EL1, 즉 게스트 운영 체계이다. 따라서, 이 가상 에러는 게스트 운영 체계가 PSTATE.A 에러 마스크 값을 이용함으로써 마스킹될 수 있다(전술한 바와 같이). 그러므로, 값 AMO가 1로 설정될 때, PSTATE.A 에러 마스크 값은 EL1에 "가상 에러 마스크 상태(virtual error mask condition)"를 정의하고, EL2에 "물리적 에러 마스크 상태(physical error mask condition)"를 정의한다. 사실, 게스트 운영 체계의 구성이 이 2개의 종류에 대하여 다를 필요가 없기 때문에, 물리적 에러와 동일한 방식으로 이러한 가상 에러를 핸들링하는 게스트 운영 체계의 특징은, 이들이 동일한 방식으로 핸들링되므로, 사실상 게스트 운영 체계에 투과성인(transparent) 이러한 가상 에러를 사용한다(물리적 에러에 대조적으로).
따라서, 값 AMO는 여기에서 장치가 물리적 에러 및 가상 에러에 각각 응답하는 방식을 제어하는데 사용된다. 예시적인 본 예에서, 값 AMO를 1로 설정하는 것은, 모든 시스템 에러(비동시 중단)이 적어도 하이퍼바이저에 의한 초기 핸들링을 위하여 EL2로 취해진다고 정의된다. 따라서, 예외 레벨 EL1에서, 물리적 에러 상태는 "더 높은" 예외 레벨에서 핸들링될 수 있고, 따라서 물리적 에러 마스크 상태는 설정되지 않는다. 또한, AMO = 1은 가상 에러가 예외 레벨 EL1에서 핸들링된다는 것을 의미한다. 따라서, 예외 레벨 EL1에서, 물리적 에러 상태는 "더 낮거나 동일한" 예외 레벨에서 핸들링될 수 있고, 따라서 가상 에러 상태가 설정된다.
도 7은 예시적인 본 실시예에서 EL1 인터럽트 예외 핸들러의 시작에서 EMB 명령을 접하는 것에 응답하여 취해진 단계들의 예시적인 시퀀스를 도시한다. 도 7에 도시된 제1 단계는 이 가상화된 시스템에서 게스트 운영 체계가 EMB를 접하는 포인트를 나타낸다(단계 80). 이것이 이에 따라 도 4의 예에서의 단계 52에 이어진다는 점에 주목하고, 더하여, AMO 비트가 설정되기 때문에, 에러 마스크 값에 관계없이, 물리적 에러 마스크 상태가 설정되지 않는다는 점에 주목하라. 그 후, EMB 명령에 응답하여, 가상 시스템 에러가 미결인 상태로 있는지(즉, VSE = 1이고 AMO = 1인지) 판단된다. 그렇지 않다면, 흐름은 EMB 명령에 이어지는 데이터 처리 명령의 정상적인 명령 실행이 계속되는 단계 92로 바로 진행한다. 그러나, VSE = 1이고 AMO = 1이면, 흐름은 가상 에러 마스크 상태가 설정되는지, 즉, PSTATE.A = 1이고 AMO = 1인지 판단되는 단계 84로 진행한다. 그렇지 않다면, 흐름은 가상 에러 예외가 생성되고 그 다음 EL1에서 게스트 운영 체계에 의해 적합한 가상 에러 예외 핸들링 루틴이 응답하여 실행되는 단계 86으로 진행한다. 그러나, 이 가상 에러가 단계 84에서 마스킹되는 것으로 판단되면, 흐름은 가상의 연기된 에러 예외 상가 설정되고(VDISR.A가 1로 설정된다), 가상 시스템 에러 예외 상태 표시(VSE)가 0으로 리셋되는 단계 88 및 90으로 진행한다. 또한, 추가 신드롬 정보가 VDISR에 기록될 수 있고(DISR을 참조하여 위에서 설명된 바와 같이), 예를 들어, 에러 종류의 상세 및/또는 프로세서의 상태에 대한 에러의 효과의 상세를 포함할 수 있다.
그 다음, 흐름은 계속되는 명령 실행(즉, EMB 명령에 이어지는 명령에 대한)을 위하여 단계 92로 진행한다. 따라서, 도 7에 도시된 단계들은 가상화된 시스템으로 하여금 호스트 OS의 일부로서 실행되는 하이퍼바이저에 의해 생성된 가상 시스템 에러가 호스트 OS에 의해 물리적 에러가 핸들링되는 방식과 동일한 방식으로 게스트 OS에 의해 핸들링될 수 있게 한다. 특히, 게스트 OS는 값 PSTATE.A의 설정에 의해 호스트 OS가 물리적 에러를 마스킹하는 것과 동일한 방식으로 가상 에러를 마스킹할 수 있다. 또한, 도 8a 및 8b를 참조하여, EL1 인터럽트 핸들러에서의 이후 스테이지에서, 소프트웨어가, 도 5를 참조하여 설명된 바와 같이, DISR.A이 현재 설정되는지 등을 체크하지만, AMO 값이 1로 설정되는 이러한 가상화된 실시예에서, DISR.A의 값이 체크될 때, 하드웨어는 VDISR.A의 값을 리턴하도록 중재한다는 점을 주목하라.
도 8a는 이러한 가상화된 동작 환경이 데이터 처리 장치에 의해 제공되는 예시적인 일 실시예에 대응한다. 도시된 예시적인 본 실시예에서, 3개의 예외 상황(exception regime)에 대응하는 4개의 예외 레벨(EL0 - EL3)이 제공되고(EL0와 EL1은 하나의 예외 상황을 형성), 가상 기계의 동작을 관리하고 있는 하이퍼바이저는 게스트 운영 체계보다 더 높은 소프트웨어 실행 특권 레벨로 동작하고, 게스트 운영 체계 자체는 그 게스트 운영 체계에서 실행되는 애플리케이션보다 더 높은 소프트웨어 실행 특권 레벨에서 동작한다. 도 8a의 오른쪽 부분은 이벤트의 예시적인 세트에 대응하는 예외 레벨들 사이의 전이(transition)를 개략적으로 도시한다. 도시된 제1 이벤트는 게스트 운영 체계 하에서 실행되는 애플리케이션이 가장 낮은 예외 레벨(EL0)에서 실행되는 동안 처리 회로에 의해 수신된 물리적(즉, 가상이 아님) 에러의 수신이다. 대응하는 물리적 에러 예외는 EL2의 목표 예외 레벨이다. 즉 물리적 에러 예외 핸들러가 하이퍼바이저에 의해 실행된다. 예시적인 본 예에서, 이 구성은, 적어도 하이퍼바이저에 의한 초기 핸들링을 위하여 모든 시스템 에러(비동시 중단)가 EL2로 취해진다고 정의하는, 값 AMO가 1로 설정된다는 사실을 이용하여 마련된다.
그러나, 하이퍼바이저는, 게스트 운영 체계에 예외 핸들링을 위임할 수 있도록 더 구성되기 때문에, 수신된 시스템 에러에 대한 에러 응답을 완전히 수행할 필요는 없으며, 이것이 시스템 내에서 "가상 에러"를 설정함으로써 이를 할 수 있다. 이것은 값 AMO가 1로 설정될 때 하이퍼바이저가 VSE의 값을 1로 설정함으로써 수행된다. 이것이 비동시 에벤트가 아니더라도, 이 가상 에러는 그럼에도 불구하고 PSTATE.A 에러 마스크 값을 이용하여 게스트 운영 체계에 의해 마스킹될 수 있다(전술한 바와 같이). 값 AMO가 1로 설정될 때, PSTATE.A 에러 마스크 값은 "가상 에러 마스크 상태"를 정의한다. 사실, 게스트 운영 체계의 구성이 이 2개의 종류에 대하여 다를 필요가 없기 때문에, 물리적 에러와 동일한 방식으로 이러한 가상 에러를 핸들링하는 게스트 운영 체계의 특징은, 이들이 동일한 방식으로 핸들링되므로, 사실상 게스트 운영 체계에 투과성인 이러한 가상 에러를 사용한다(물리적 에러에 대조적으로). 이러한 투과성이 어떻게 성취되는지에 대한 추가 상세는 아래에 주어진다.
따라서, 애플리케이션이 인계받도록 하이퍼바이저가 예외 레벨을 EL0으로 복귀시킬 때, 가상 에러 예외의 목표는 이제 게스트 운영 체계에 의해 핸들링될 EL1이 될 것이다. 그러나, 에러 핸들러가 EL2에서 하이퍼바이저의 제어 하에서 실행되고 있었던 동안 인터럽트 요청(IRQ)이 시스템에 의해 수신되었다는 점을 주목하라. 따라서, 소프트웨어 실행 특권 레벨이 EL0으로 복귀하면, 하나의 가상 시스템 에러(VSE의 설정에 의해 하이퍼바이저에 의해 설정된 것과 같은)와 더 최근에 수신된 물리적 인터럽트(IRQ)인 미결인 채로 있는 2개의 예외가 있다. 미결인 채로 있는 이 2개의 예외가 취하는 순서는 특정 시스템 요건에 따라 시스템 설계자에 의해 정의될 수 있다(즉, 이는 정의된 구현이다). 도 8a에 도시된 예에서, 이는 먼저 취해지는 IRQ에 대한 응답이고, 이는 EL1이라는 목표를 갖는다. 그 다음, EL1에서 수행되는 인터럽트 핸들러(예외 핸들링 루틴)가 수행된다. 이 예외 핸들링 루틴은, 도시된 바와 같이, EMB 명령으로 시작하고, 따라서 가상 기계에 의해 수행되는 단계들은 도 4에 도시된 것과 관련되며, 이 가상화된 실시예를 위하여 일부 수정을 갖는다.
도 8b는 이러한 가상화된 동작 환경이 데이터 처리 장치에 의해 제공되는 다른 예시적인 실시예에 대응하고, 역시 4개의 예외 레벨을 갖지만, 단지 EL0, EL1 및 EL2만이 본 예에서 논의된다. 이것은 도 3의 예에 대응한다(여기에서 EL2이 도달되는 가장 높은 예외 레벨이라는 차이점을 가진다). 도 8b의 오른쪽 부분은 다른 예시적인 세트의 이벤트에 대응하는 예외 레벨들 사이의 전이를 개략적으로 도시한다. 도시된 제1 이벤트는 EL0에서의 LDR 명령의 실행이다. 이 메모리 액세스에 대한 응답이 발생하기 전에, IRQ 예외가 EL1(즉, 게스트 OS)로 취해진다. EL1에서, EMB 명령이 게스트 OS의 제어 하에서 실행된다. EMB 동작은 물리적 에러 예외 상태를 검출하고, (도 4에 도시된 바와 같이) 에러가 마스킹되지 않기 때문에(AMO가 설정되기 때문에), 이는 에러 예외를 즉시 생성한다. 에러 예외는 EL2(즉, 호스트 OS/하이퍼바이저)로 취해진다. 호스트 OS/하이퍼바이저는 (에러 핸들러의 동작에 의해) 에러를 트리거하고, VSE = 1을 설정하여 "가상 에러"를 설정함으로써 EL1로 핸들링을 EL1로 다시 위임한다. 명령 실행은 EMB 명령을 재실행하도록 복귀된다.
이 포인트에서, 물리적 에러(IRQ)가 다루어졌으며, 따라서 이제 EMB는 가상 에러를 처리한다. 가상 에러는 PSTATE.A에 의해 마스킹되며, 따라서 VDISR.A는 전술한 바와 같이 설정된다. 따라서, 위임된 가상 에러는 EMB 명령에 의해 연기된다. 도 8b의 예에서(도 8a의 예와 대조적으로), EL0로의 복귀에 대하여 미결인 채로 있는 가상 에러에 대한 IRQ의 우선 처리의 어떠한 (임의의) 선택이 없으며, 더욱이 이것이 가상의 경우에 EMB 명령이 가상 에러 및 물리적 에러 모두를 어떻게 차단하는지를 보여준다는 점을 주목하라.
도 9a는 (일례에서) 가상화된 시스템을 제공하는 예시적인 실시예에서의 현재 예외 레벨과 목표 예외 레벨 사이의 대응 관계를 제공하는 표를 도시한다. 이는 물리적 에러 예외 상태가 각각의 이러한 상황에서 어떻게 핸들링되는지를 보여준다. 즉, 이는 항상 미결인 채로 있을 수 있거나(P), 즉 자동으로 마스킹된 것으로 취급될 수 있거나, 이는 PSTATE.A가 설정되는 경우에(즉, 물리적 시스템 에러가 마스킹됨) 미결인 채로 있을 수 있거나 아니면 취해질 수 있거나(M), 또는 이는 항상 취해질 수 있다(T)(즉, PSTATE.A에 의한 마스킹을 받지 않음). 도 9b는, 가상 시스템 에러를 접할 때의 현재 예외 레벨(즉, 하이퍼바이저에 의해 설정됨)에 관계없이, 도시된 바와 같이 항상 EL1의 목표 예외 레벨(즉, 게스트 운영 체계에 의해 핸들링됨)을 가질 가상 시스템 에러에 대한 대응하는 표를 도시한다. 도 9c는 물리적 시스템 에러에 대하여 목표를 정의하기 위하여 가상화된 시스템에서 하이퍼바이저에 의한 AMO 및 VSE 값의 사용을 제공하는 표를 도시한다.
도 10a는 하나의 예시적인 실시예에서 에러 메모리 배리어 명령의 구성을 정의하는 의사 코드의 예시적인 세트를 도시한다. 도 10a의 의사 코드에서, 다음의 함수 및 약어가 사용된다:
HaveEL(예외 레벨) - 이 예외 레벨이 존재하면 참(true)을 리턴한다;
SCR_EL3.EA - 시스템 에러(비동시 중단)에 대한 목표를 예외 레벨 EL3이 되도록 정의하게 설정된다;
IsSecure() - 보안 상태(예를 들어, 영국 캠브리지의 ARM Limited가 제공하는 TrustZone에 의해 제공되는 바와 같은)로 현재 동작하고 있다면 참을 리턴한다;
PSTATE.EL - 현재 예외 레벨을 정의한다;
HCR_EL2.TGE - 모든 예외가 EL2에서(EL1에 대조적으로) 핸들링되는 것을 정의하도록 설정된다;
HCR_EL2.AMO - AMO 값은 실행 레벨 EL2에 대하여 위에서 정의된 것을 나타낸다;
DISR_EL1.A - 예외 레벨 EL1에서 연기된 에러 예외 상태를 기록한다;
ISR_EL1.A - 에러 예외 상태를 기록한다;
HCR_EL2.VSE - VSE 값은 예외 레벨 EL2에서 위에서 설정된 것을 나타낸다;
VDISR EL2.A - VDISR 값은 위에 것을 말한다.
따라서, 도 10a에 도시된 의사 코드의 예는, SCR_EL3.EA 비트의 사용으로, 도 9c에 도시된 원리를 EL3까지 확장한다는 점에 주목하라. 이 비트의 값은 물리적 에러 예외에 대한 목표 예외 레벨을 EL3이 되도록 설정하고, HCR_EL2.AMO에 대하여 우선권을 가진다. 그러나, 예시적인 본 실시예에서 추가의 "가상 에러" 상태, 즉 "SCR_EL3.VSE" 비트가 없다는 점을 주목하라.
도 10b는 예외 핸들러가 에러를 호출자(caller)로 격리하기 원하는 예외 엔트리에 대한 예시적인 명령 시퀀스를 도시한다. 이 시퀀스의 시작에서 EMB 명령의 사용과 도시된 시퀀스의 마지막에서의 MRS/TBNZ 쌍의 사용을 주목하라(도 5에서의 단계 66 및 72에 대응). MRS("Mover to Register from System-register")가 예를 들어 DIST의 값을 읽는데 사용되고, STP("Store Pair")가 레지스터 쌍을 메모리에 저장하는데 사용되고, TBNZ("Test and Branch if Non-Zero")가 레지스터 내의 비트를 시험하고 값이 0이 아닌 경우에 분기하는데 사용된다는 점을 주목하라.
본 발명의 예시적인 실시예가 첨부된 도면을 참조하여 본 명세서에 설명되었지만, 본 발명이 이러한 정확한 실시예에 한정되지 않고, 첨부된 청구범위에 의해 정의된 바와 같은 본 발명의 범위 및 기술적 사상을 벗어나지 않으면서 당해 기술 분야에서 통상의 기술자에 의해 다양한 변경, 추가 및 수정이 이루어질 수 있다는 것이 이해되어야 한다. 예를 들어, 종속항의 특징들의 다양한 조합이 본 발명의 범위를 벗어나지 않으면서 독립항의 특징들과 함께 이루어질 수 있다.

Claims (20)

  1. 데이터 처리 명령에 응답하여 데이터 처리 동작을 수행하고, 에러 메모리 배리어 상태가 존재하는지 판단하고, 상기 에러 메모리 배리어 상태(error memory barrier condition)가 존재하는지 여부에 따라 에러 메모리 배리어 프로시저(error memory barrier procedure)를 수행하는 처리 회로를 포함하고,
    상기 처리 회로는 데이터 처리 동작이 성공적이지 않았다는 검출에 따라 제1 레지스터 위치에 에러 예외 상태(error exception condition)를 설정할 수 있고, 상기 에러 메모리 배리어 상태는 에러 예외 상태에 응답하여 상기 에러 메모리 배리어 프로시저가 수행될 수 있다는 것을 나타내고,
    상기 에러 메모리 배리어 프로시저는, 상기 에러 예외 상태가 설정되고 에러 마스크 상태(error mask condition)가 설정되면,
    제2 레지스터 위치에 연기된 에러 예외 상태(deferred error exception condition)를 설정하는 단계; 및
    상기 제1 레지스터 위치에서 상기 에러 예외 상태를 클리어하는 단계를 포함하는, 데이터 처리 장치.
  2. 제1항에 있어서,
    상기 처리 회로는, 상기 에러 예외 상태가 설정되고, 상기 에러 마스크 상태가 설정되지 않으면, 예외 핸들링 프로시저(exception handling procedure)를 수행할 수 있는, 데이터 처리 장치.
  3. 제1항 또는 제2항에 있어서,
    상기 데이터 처리 동작은 메모리 액세스를 포함하고,
    상기 처리 회로는 메모리 액세스에 대한 에러 응답을 수신할 수 있고, 상기 처리 회로는, 상기 메모리 액세스가 성공적이지 않았다고 상기 에러 응답이 표시하는 경우에, 상기 에러 예외 상태를 설정할 수 있는, 데이터 처리 장치.
  4. 제1항 또는 제2항에 있어서,
    상기 처리 회로는, 상기 데이터 처리 명령 내의 에러 메모리 배리어 명령에 응답하여 상기 에러 메모리 배리어 상태가 존재한다고 판단할 수 있는, 데이터 처리 장치.
  5. 제2항에 있어서,
    상기 처리 회로는, 상기 예외 핸들링 프로시저의 일부로서, 그리고 상기 연기된 에러 예외 상태가 설정된 경우에, 적어도 하나의 데이터 처리 명령에 관한 교정(remedial) 응답을 개시할 수 있고, 상기 적어도 하나의 데이터 처리 명령은 상기 에러 메모리 배리어 상태가 존재했다고 판단하기 전에 실행되는 데이터 처리 명령을 포함하는, 데이터 처리 장치.
  6. 제2항에 있어서,
    에러 메모리 배리어 모드 값 스토리지를 더 포함하고, 상기 처리 회로가 상기 예외 핸들링 프로시저의 수행을 개시할 때, 상기 처리 회로는 상기 에러 메모리 배리어 모드 값 스토리지에 저장된 에러 메모리 배리어 모드 값에 따라 상기 에러 메모리 배리어 상태가 존재한다고 판단할 수 있는, 데이터 처리 장치.
  7. 제3항에 있어서,
    상기 처리 회로는, 상기 에러 메모리 배리어 프로시저를 수행할 때, 그리고 상기 에러 메모리 배리어 상태가 존재하는 경우에, 추가 데이터 처리 명령을 실행하기 전에 아직 완료되지 않은 각각의 메모리 액세스에 대하여 상기 에러 응답을 대기할 수 있는, 데이터 처리 장치.
  8. 제1항 또는 제2항에 있어서,
    에러 마스크 값 스토리지를 더 포함하고, 상기 처리 회로는 상기 에러 마스크 값 스토리지에 저장된 에러 마스크 값에 따라 상기 에러 마스크 상태가 설정되는지 판단할 수 있는, 데이터 처리 장치.
  9. 제8항에 있어서,
    상기 처리 회로는 상기 예외 핸들링 프로시저를 시작할 때 상기 에러 마스크 값을 설정할 수 있는, 데이터 처리 장치.
  10. 제8항에 있어서,
    상기 처리 회로는 상기 연기된 에러 예외 상태가 설정되지 않은 경우에 상기 예외 핸들링 프로시저의 일부로서 상기 에러 마스크 값을 클리어할 수 있는, 데이터 처리 장치.
  11. 제8항에 있어서,
    상기 처리 회로는, 상기 에러 마스크 값을 설정하고, 상기 연기된 에러 예외 상태가 설정되지 않은 경우에 미리 정해진 세트의 데이터 처리 명령이 완료된 후에 상기 에러 마스크 값을 클리어할 수 있는, 데이터 처리 장치.
  12. 제2항에 있어서,
    상기 처리 회로는 복수의 예외 레벨로부터 선택된 현재 예외 레벨에서 상기 예외 핸들링 프로시저를 수행할 수 있고, 상기 복수의 예외 레벨은 복수의 소프트웨어 실행 특권 레벨에 대응하는, 데이터 처리 장치.
  13. 제12항에 있어서,
    상기 처리 회로는, 추가의 에러 예외 상태에 응답하는 추가의 예외 핸들링 프로시저가 수행되어야 하는 상기 예외 레벨과 동일하거나 더 높은 예외 레벨에서 상기 예외 핸들링 프로시저가 상기 처리 회로에 의해 수행되어야 하는 경우에, 상기 예외 핸들링 프로시저를 개시할 때 상기 에러 마스크 상태를 설정할 수 있는, 데이터 처리 장치.
  14. 제12항 또는 제13항에 있어서,
    상기 처리 회로는, 추가의 에러 예외 상태에 응답하는 추가의 예외 핸들링 프로시저가 수행되어야 하는 상기 예외 레벨보다 더 낮은 예외 레벨에서 상기 예외 핸들링 프로시저가 상기 처리 회로에 의해 수행되어야 하는 경우에, 상기 예외 핸들링 프로시저를 개시할 때 상기 에러 마스크 상태를 설정할 수 없는, 데이터 처리 장치.
  15. 제1항 또는 제2항에 있어서,
    적어도 하나의 가상 기계가 동작하는 가상화된 동작 환경을 제공할 수 있고, 상기 가상 기계는 상기 처리 회로와의 상호 작용에 의해 상기 데이터 처리 명령에 응답하여 상기 데이터 처리 동작을 수행할 수 있는, 데이터 처리 장치.
  16. 제2항에 있어서,
    상기 장치는 가상 에러 예외 상태를 설정할 수 있고, 상기 처리 회로는, 상기 가상 에러 예외 상태가 설정되고 가상 에러 마스크 상태가 설정되지 않은 경우에, 상기 예외 핸들링 프로시저를 수행할 수 있는, 데이터 처리 장치.
  17. 제16항에 있어서,
    상기 에러 메모리 배리어 프로시저는, 상기 가상 에러 예외 상태가 설정되고 상기 가상 에러 마스크 상태가 설정된 경우에,
    가상의 연기된 에러 예외 상태(virtual deferred error exception condition)를 설정하는 단계; 및
    상기 가상 에러 예외 상태를 클리어하는 단계를 더 포함하는, 데이터 처리 장치.
  18. 제17항에 있어서,
    상기 장치는, 상기 처리 회로가 상기 연기된 에러 예외 상태가 설정되는지 판단하려고 시도할 때, 상기 연기된 에러 예외 상태의 값 대신에 상기 가상의 연기된 에러 예외 상태의 값을 제공할 수 있는, 데이터 처리 장치.
  19. 데이터 처리 명령에 응답하여 데이터 처리 동작을 수행하는 단계;
    데이터 처리 동작이 성공적이지 않았다는 검출에 따라 제1 레지스터 위치에 에러 예외 상태(error exception condition)를 설정하는 단계;
    에러 메모리 배리어 상태(error memory barrier condition)가 존재하는지 판단하는 단계; 및
    상기 에러 메모리 배리어 상태가 존재하는지 여부에 따라 에러 메모리 배리어 프로시저(error memory barrier procedure)를 수행하는 단계로서, 상기 에러 메모리 배리어 상태는 에러 예외 상태에 응답하여 상기 에러 메모리 배리어 프로시저가 수행될 수 있다는 것을 나타내는, 상기 수행하는 단계를 포함하고,
    상기 에러 메모리 배리어 프로시저는, 상기 에러 예외 상태가 설정되고 에러 마스크 상태(error mask condition)가 설정되면,
    제2 레지스터 위치에 연기된 에러 예외 상태(deferred error exception condition)를 설정하는 단계; 및
    상기 제1 레지스터 위치에서 상기 에러 예외 상태를 클리어하는 단계를 포함하는, 데이터 처리 방법.
  20. 데이터 처리 명령에 응답하여 데이터 처리 동작을 수행하는 수단;
    데이터 처리 동작이 성공적이지 않았다는 검출에 따라 제1 레지스터 위치에 에러 예외 상태(error exception condition)를 설정하는 수단;
    에러 메모리 배리어 상태(error memory barrier condition)가 존재하는지 판단하는 수단; 및
    상기 에러 메모리 배리어 상태가 존재하는지 여부에 따라 에러 메모리 배리어 프로시저(error memory barrier procedure)를 수행하는 수단으로서, 상기 에러 메모리 배리어 상태는 에러 예외 상태에 응답하여 상기 에러 메모리 배리어 프로시저가 수행될 수 있다는 것을 나타내는, 상기 수행하는 수단을 포함하고,
    상기 에러 메모리 배리어 프로시저는, 상기 에러 예외 상태가 설정되고 에러 마스크 상태(error mask condition)가 설정되면,
    제2 레지스터 위치에 연기된 에러 예외 상태(deferred error exception condition)를 설정하는 단계; 및
    상기 제1 레지스터 위치에서 상기 에러 예외 상태를 클리어하는 단계를 포함하는, 데이터 처리 장치.
KR1020177016744A 2014-11-28 2015-10-21 데이터 처리 장치에서의 시스템 에러 핸들링 KR102427949B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1421134.6 2014-11-28
GB1421134.6A GB2532777B (en) 2014-11-28 2014-11-28 System error handling in a data processing apparatus
PCT/GB2015/053135 WO2016083773A1 (en) 2014-11-28 2015-10-21 System error handling in a data processing apparatus

Publications (2)

Publication Number Publication Date
KR20170091641A KR20170091641A (ko) 2017-08-09
KR102427949B1 true KR102427949B1 (ko) 2022-08-02

Family

ID=52349593

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177016744A KR102427949B1 (ko) 2014-11-28 2015-10-21 데이터 처리 장치에서의 시스템 에러 핸들링

Country Status (9)

Country Link
US (1) US11461104B2 (ko)
EP (1) EP3224718A1 (ko)
JP (1) JP6634083B2 (ko)
KR (1) KR102427949B1 (ko)
CN (1) CN107111525B (ko)
GB (1) GB2532777B (ko)
IL (1) IL252145B (ko)
TW (1) TWI748934B (ko)
WO (1) WO2016083773A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017204139A1 (ja) * 2016-05-23 2017-11-30 日本電気株式会社 データ処理装置、データ処理方法、およびプログラム記録媒体
US10795800B2 (en) * 2018-09-10 2020-10-06 International Business Machines Corporation Programming language runtime deferred exception handling
US11328241B2 (en) * 2020-07-02 2022-05-10 Content Square SAS Identifying script errors in an online retail platform and quantifying such errors

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173248B1 (en) * 1998-02-09 2001-01-09 Hewlett-Packard Company Method and apparatus for handling masked exceptions in an instruction interpreter
US20110231633A1 (en) * 2010-03-15 2011-09-22 Arm Limited Operand size control

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2045789A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Granularity hint for translation buffer in high performance processor
US5438677A (en) * 1992-08-17 1995-08-01 Intel Corporation Mutual exclusion for computer system
AUPM348794A0 (en) * 1994-01-20 1994-02-17 Alcatel Australia Limited Microprocessor fault log
US5887175A (en) * 1997-02-14 1999-03-23 Integrated Device Technology, Inc. Apparatus and method for managing interrupt delay on floating point error
CN1242546A (zh) * 1998-03-31 2000-01-26 英特尔公司 用于处理不精确异常的一种方法和装置
US7043582B2 (en) * 2002-09-06 2006-05-09 Intel Corporation Self-nesting interrupts
GB0623276D0 (en) * 2006-11-22 2007-01-03 Transitive Ltd Memory consistency protection in a multiprocessor computing system
GB2478733B (en) * 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events
GB2487575B (en) * 2011-01-28 2017-04-12 Advanced Risc Mach Ltd Controlling generation of debug exceptions
US9632976B2 (en) * 2012-12-07 2017-04-25 Nvidia Corporation Lazy runahead operation for a microprocessor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173248B1 (en) * 1998-02-09 2001-01-09 Hewlett-Packard Company Method and apparatus for handling masked exceptions in an instruction interpreter
US20110231633A1 (en) * 2010-03-15 2011-09-22 Arm Limited Operand size control

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
카탈로그(2012.09.17.)*

Also Published As

Publication number Publication date
TWI748934B (zh) 2021-12-11
CN107111525B (zh) 2022-02-11
US11461104B2 (en) 2022-10-04
JP2017538214A (ja) 2017-12-21
IL252145A0 (en) 2017-07-31
GB2532777A (en) 2016-06-01
IL252145B (en) 2020-06-30
GB201421134D0 (en) 2015-01-14
CN107111525A (zh) 2017-08-29
GB2532777B (en) 2021-07-07
WO2016083773A1 (en) 2016-06-02
JP6634083B2 (ja) 2020-01-22
US20160154654A1 (en) 2016-06-02
EP3224718A1 (en) 2017-10-04
TW201633123A (zh) 2016-09-16
KR20170091641A (ko) 2017-08-09

Similar Documents

Publication Publication Date Title
KR102075369B1 (ko) 데이터 처리장치와, 안전한 도메인 및 덜 안전한 도메인 사이에서 전환될 때 데이터 및 프로그램 코드를 안전하지 않은 액세스로부터 보호하는 방법
KR102075372B1 (ko) 안전한 도메인과 덜 안전한 도메인을 갖는 데이터 처리장치에서의 예외처리
KR101740224B1 (ko) 불법 모드 변경처리
TWI499979B (zh) 以交換式記憶體為手段來加速虛擬化或仿真化之方法、系統、及電腦可讀取媒體
TWI471803B (zh) 以交換式記憶體為手段來加速虛擬化及仿真化
TWI612439B (zh) 用以偵測未經授權之記憶體存取的計算裝置、方法及機器可讀儲存媒體
JP5703378B2 (ja) アラインメント制御
US11663034B2 (en) Permitting unaborted processing of transaction after exception mask update instruction
US11727110B2 (en) Verifying stack pointer
KR102427949B1 (ko) 데이터 처리 장치에서의 시스템 에러 핸들링
US10649787B2 (en) Exception handling involving emulation of exception triggering data transfer operation using syndrome data store that includes data value to be transferred
US9501667B2 (en) Security domain prediction

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