KR20130012126A - 예외 이벤트 처리 장치 및 방법 - Google Patents

예외 이벤트 처리 장치 및 방법 Download PDF

Info

Publication number
KR20130012126A
KR20130012126A KR1020127026070A KR20127026070A KR20130012126A KR 20130012126 A KR20130012126 A KR 20130012126A KR 1020127026070 A KR1020127026070 A KR 1020127026070A KR 20127026070 A KR20127026070 A KR 20127026070A KR 20130012126 A KR20130012126 A KR 20130012126A
Authority
KR
South Korea
Prior art keywords
exception
stack pointer
additional level
processing
stack
Prior art date
Application number
KR1020127026070A
Other languages
English (en)
Other versions
KR101782313B1 (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 KR20130012126A publication Critical patent/KR20130012126A/ko
Application granted granted Critical
Publication of KR101782313B1 publication Critical patent/KR101782313B1/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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift 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
    • 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
    • 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/461Saving or restoring of program or task context
    • 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

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)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Abstract

처리 회로(4)는 예외 이벤트를 처리하기 위해 복수의 예외 상태(EL0-EL3)를 가지며, 해당 예외 상태는 기본 레벨 예외 상태(EL0)와 적어도 하나의 추가 레벨 예외 상태(EL1-EL3)를 포함한다. 각각의 예외 상태는 대응하는 스택 데이터 저장소(35)의 메모리 내의 위치를 지시하는 대응하는 스택 포인터를 포함한다. 처리 회로가 기본 레벨 예외 상태(EL0)에 있을 때, 스택 포인터 선택 회로(40)는 기본 레벨 스택 포인터를 처리 회로(4)에 의해 사용되는 현재 스택 데이터 저장소를 지시하는 현재 스택 포인터로서 선택한다. 처리 회로(4)가 추가 예외 상태에 있으면, 스택 포인터 선택 회로(40)는 기본 레벨 스택 포인터 또는 현재 추가 레벨 예외 상태에 대응하는 추가 레벨 스택 포인터를 현재 스택 포인터로서 선택한다.

Description

예외 이벤트 처리 장치 및 방법{APPARATUS AND METHOD FOR HANDLING EXCEPTION EVENTS}
본 발명은 데이터 처리 분야에 관한 것이다. 보다 상세하게, 본 발명은 예 외 이벤트 처리 장치 및 방법에 관한 것이다.
데이터 처리가 수행되는 동안, 예외 이벤트가 발생되어, 예외 처리 루틴이 수행될 수 있도록 데이터 처리가 중단되어야 함을 지시할 수 있다. 예외 이벤트는 예컨대, 처리 결과가 미확정이거나, 처리 리소스가 오버플로 되었거나, 외부 기기로부터 예외 신호가 수신되었음을 지시할 수 있다. 예외 이벤트는 다중 예외 상태로 처리 가능하다. 각각의 예외 상태는 다른 우선 레벨과 이와 관련된 다른 리소스를 가질 수 있다.
각각의 예외 상태에는 해당 예외 상태에서 예외 처리 루틴을 처리하면서 임시 변수를 저장하기 위한 자체의 스택 데이터 저장소를 마련하는 것이 유용할 수 있다. 스택 데이터 저장소는 통상 메모리 내에 저장되며 선입선출(FIFO) 데이터 구조이다. 스택 데이터 저장소는 그에 할당된 미리 정해진 양의 메모리 공간을 가진다. 스택 상에 과도한 데이터가 저장되면, 스택은 할당 메모리 공간을 초과할 수 있다. 스택은 페이지 경계를 초과하여 메모리 내의 다음 페이지에 액세스하기 위해 액세스 권한을 갖지 않아서 메모리 중단을 야기할 수 있다. 또한, 프로세서가 스택 상에 스택 내의 잔여 공간보다 큰 변수를 저장하려 하는 경우, 에러를 유발시킬 수 있다. 이러한 종류의 에러는 스택 오버플로(stack overflows)로 알려져 있다. 일반적으로, 스택 오버플로는 데이터 값이 스택 상에 저장되는 것을 막는 스택의 과용과 관련된 임의의 에러이다.
통상, 예외 이벤트 발생 후 예외 처리 루틴에 의해 수행되는 우선적인 작업 중 하나는 소정의 변수를 스택 상으로 푸싱하는 것이다. 그러므로, 예외 처리 루틴이 성공적으로 개시될 수 있도록 하는 것을 보장하기 위해 예외 발생시 스택 용량이 예외 처리 루틴에 유효한 것이 중요하다. 스택이 오버플로 되면, 이는 예외 처리 루틴이 적절히 실행되는 것을 방해할 수 있는데, 이는 스택 오버플로가 자체로 예외 이벤트, 즉 다른 예외 처리 루틴으로 하여금 변수를 스택으로 푸싱 시도하게 만드는 예외 이벤트를 발생시켜 다른 스택 오버플로 예외 이벤트를 야기할 수 있다. 이것은 각각 변수를 스택으로 로딩하도록 시도하고 스택 오버플로에 따라 추가의 예외 이벤트를 각기 발생시키는 예외 이벤트의 무한 루프가 형성되게 할 수 있고, 이러한 반복적 예외 엔트리에 의해 시스템 오류를 야기할 수 있다.
본 발명의 일 측면의 관점에서 데이터 처리 장치가 제공되며, 해당 장치는:
데이터를 처리하도록 구성되고, 기본 레벨 예외 상태와 적어도 하나의 추가 레벨 예외 상태를 포함하는 복수의 예외 상태를 가지는 처리 회로와;
예외 이벤트를 처리하는 것으로부터 복귀되도록 상기 처리 회로를 제어하기 위해 예외 복귀 데이터를 저장하는 적어도 하나의 예외 복귀 레지스터로서, 상기 적어도 하나의 추가 레벨 예외 상태 각각은 대응하는 추가 레벨 예외 상태에 있을 때 상기 처리 회로에 의해 전용으로 사용되는 대응하는 예외 복귀 레지스터를 가지는, 그러한 적어도 하나의 예외 복귀 레지스터와;
상기 처리 회로가 상기 예외 상태 중 임의의 상태에 있을 때 사용되는 포인터로서 기본 레벨 스택 데이터 저장소의 메모리 내의 위치를 지시하는 기본 레벨 스택 포인터를 저장하기 위한 기본 레벨 스택 포인터 레지스터와;
각각 상기 처리 회로가 대응하는 추가 레벨 예외 상태에 있을 때 전용으로 사용되고 대응하는 추가 레벨 스택 데이터 저장소의 상기 메모리 내의 위치를 지시하는 적어도 하나의 추가 레벨 스택 포인터를 저장하기 위한 적어도 하나의 추가 레벨 스택 포인터 레지스터와;
현재 스택 포인터를 선택하고, 데이터 처리시 상기 현재 스택 포인터에 의해 지시되는 현재 스택 데이터 저장소를 사용하도록 상기 처리 회로를 제어하도록 구성된 스택 포인터 선택 회로를 포함하고;
상기 처리 회로가 상기 기본 레벨 예외 상태에 있을 때, 상기 스택 포인터 선택 회로는 상기 기본 레벨 스택 포인터를 상기 현재 스택 포인터로서 선택하도록 구성되고;
상기 처리 회로가 상기 적어도 하나의 추가 레벨 예외 상태 중 하나에 있을 때, 상기 스택 포인터 선택 회로는 상기 기본 레벨 스택 포인터와 현재의 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터 중 하나를 상기 현재 스택 포인터로서 선택하도록 구성되고, 상기 처리 회로는 상기 현재 스택 포인터가 상기 기본 레벨 스택 포인터 또는 상기 추가 레벨 스택 포인터인지 여부에 무관하게 상기 현재의 추가 레벨 예외 상태에 대응하는 상기 예외 복귀 레지스터를 계속 사용하는 것을 특징으로 한다.
복수의 예외 상태를 가지는 처리 회로를 포함하는 장치가 제공된다. 상기 예외 상태는 기본 레벨 예외 상태와 적어도 하나의 추가 레벨 예외 상태를 포함한다. 일 실시예에서, 상기 기본 레벨 예외 상태는 사용자 어플리케이션을 위한 것이지만, 예외 이벤트는 예외 처리 루틴이 상기 추가 레벨 예외 상태 중 목표로 하는 하나의 상태로 처리되게 한다(비록 다른 실시예에서는 예외 이벤트가 기본 레벨 예외 상태에서 목표 대상으로 설정될 수도 있다). 적어도 추가 레벨 예외 상태는 예외 이벤트의 처리 후에 이전 처리로의 복귀를 제어하기 위해 예외 복귀 데이터를 저장하는 대응하는 예외 복귀 레지스터를 포함한다(기본 레벨 예외 상태가 예외 처리 루틴의 처리에 사용되면, 기본 레벨 예외 상태도 대응하는 예외 복귀 레지스터를 가질 수 있다).
장치는 스택 포인터를 저장하는 레지스터도 포함하는데, 해당 스택 포인터는 예외 이벤트의 처리시 사용되는 처리 회로에 의해 사용되는 다중 스택 데이터 저장소의 메모리 내의 위치를 지시한다. 처리 회로가 기본 레벨 상태에 있을 때, 기본 레벨 스택 포인터에 의해 지시되는 기본 레벨 스택 데이터 저장소를 사용하여 임시 변수를 저장한다. 반복적 예외 엔트리를 야기하는 스택 오버플로의 위험(그리고 이로써 야기되는, 예외 이벤트가 정확하게 처리되지 않는 위험)은 처리 회로에 액세스 될 수 있는 2개의 스택 데이터 저장소를 제공하는 것에 의해 감소된다. 임의의 추가 레벨 예외 상태로 처리시, 하나의 저장소는 예외를 취하는 즉시 소량의 처리를 위해 사용될 수 있으며, 다른 저장소는 예외 상태 내에서의 보다 일반적인 처리에 사용된다. 각각의 추가 레벨 예외 상태는 기본 레벨 스택 포인터와 대응하는 추가 레벨 예외 상태에 의해 전용으로 사용되는 대응하는 추가 레벨 스택 포인터 모두에 액세스된다. 예외를 취하는 즉시 소량의 처리를 행하는 중에, 기본 레벨 스택 포인터의 콘텐츠(범용 레지스터의 콘텐츠와 함께)가 메모리에 저장되며, 보다 일반적인 목적의 처리에 적합한 스택을 지시하는 새로운 값이 기본 레벨 스택 포인터에 제공된다. 해당 예외 상태에 대한 보다 일반적인 목적의 처리에 적합한 스택은 해당 예외 상태에 사용되는 기본 레벨 스택 데이터 저장소로 지칭된다. 해당 예외 상태에 사용되는 기본 레벨 스택 데이터 저장소의 위치를 지시하는 기본 레벨 스택 포인터와 처리 회로가 추가 레벨 예외 상태 중 하나에 있을 때 추가 레벨 스택 데이터 저장소의 위치를 지시하는 추가 레벨 스택 포인터 사이를 선택하고 현재 선택된 스택 포인터를 사용하여 메모리 내의 스택 데이터 저장소 중 하나에 액세스하도록 처리 회로를 제어하기 위해 선택 회로가 제공된다.
각각의 추가 레벨 스택 포인터는 특정의 추가 레벨 예외 상태에 의해 전용으로 사용되므로, 각각의 추가 레벨 스택 포인터는 비교적 사용 빈도가 적어서 추가 레벨 스택 데이터 저장소 상에는 소수의 변수가 저장될 것이다. 이것은 스택 오버플로의 위험이 감소되고 그리고 대응하는 추가 레벨 예외 상태에서 예외 이벤트의 처리시 추가 레벨 스택 데이터 저장소가 변수의 저장에 사용될 가능성이 커짐을 의미한다. 다른 한편, 기본 레벨 스택 포인터는 임의의 예외 상태에서의 처리에 사용되는 공유 스택 포인터이다. 기본 레벨 스택 포인터는 전용의 추가 레벨 스택 데이터 저장소의 리소스를 보전하기 위해 예컨대, 예외 처리 루틴의 안전한 개시가 이미 수행되었거나 더 이상 중요하지 않을 때 예외 상태에 사용되는 기본 레벨 스택 데이터 저장소를 지시하는데 사용될 수 있다. 가능한 경우 기본 레벨 스택 데이터 저장소를 사용하는 것에 의해, 추가 레벨 스택 데이터 저장소 중 하나가 오버플로 될 가능성은 크게 감소된다.
추가 레벨 예외 상태 당 2개의 전용 스택 포인터를 제공하는 것에 의해 스택 오버플로에 대한 보호를 달성할 수 있었지만, 본 기술은 이러한 접근의 경우 각각의 스택 포인터가 덜 빈번하게 사용될 것이므로 비효율적일 수 있고, 따라서 하드웨어의 낭비를 가져옴을 인지하고 있다. 스택 오버플로에 대한 보호는 각각의 예외 상태에 대응하는 스택 포인터를 제공함과 함께, 각각의 추가 레벨 예외 상태가 자체의 기본 레벨 스택 데이터 저장소 또는 추가 레벨 스택 데이터 저장소에 액세스 할 수 있도록 기본 레벨 스택 포인터가 예외 상태 사이에서 공유될 수 있게 하는 것에 의해 보다 효율적인 방식으로 달성될 수 있다. 따라서, 각각의 추가 레벨 예외 상태는 스택 오버플로에 대해 보호를 제공하기 위해 여전히 2개의 스택 데이터 저장소에 액세스하지만, 예외 상태마다 단 하나의 스택 포인터가 제공된다. 다라서, 각각의 예외 레벨마다 2개의 스택 저장소, 즉 하나는 예외 엔트리 시 즉시 사용되고 다른 하나는 보다 범용의 처리에 사용되는(그리고 반복적 예외 엔트리의 위험이 없이 오버플로 하는 것이 허용될 수 있는) 2개의 스택 저장소가 존재할 수 있다.
예외 복귀 레지스터와 스택 포인터 레지스터는 총괄적으로 예외 이벤트의 처리 중에 사용되도록 콘텍스트 데이터를 저장하기 위해 제공된 예외 콘텍스트 레지스터로서 간주될 수 있다. 예외 복귀 레지스터는 스택 포인터 레지스터로 다른 방식으로 뱅킹되는데, 이는 기본 레벨 스택 포인터 레지스터가 임의의 예외 상태에 사용되도록 제공된 스택 포인터 레지스터에 비해 각각의 예외 복귀 레지스터는 특정 예외 상태에 의해서 전용으로 사용되기 때문이다.
스택 포인터 선택 회로는 타겟 추가 레벨 예외 상태에 관련된 예외 이벤트에 응답하여 타겟 추가 레벨 예외 상태에 대응하는 추가 레벨 스택 포인터를 현재 스택 포인터로서 선택할 수 있다. 따라서, 예외 이벤트의 처리 시작시, 현재 스택 데이터 저장소는 타겟 추가 레벨 예외 상태에 대응하는 전용 추가 레벨 스택 데이터 저장소가 될 것이다. 전용 추가 레벨 스택 데이터 저장소의 스택 오버플로의 위험은 해당 예외 레벨에 사용되는 기본 레벨 스택 데이터 저장소의 오버플로의 이험보다 낮다. 그러므로, 예외 엔트리 시 타겟 추가 레벨 스택 데이터 저장소로의 스위칭은 예외 이벤트 엔트리가 정확하게 처리되지 않는 위험을 감소시킨다. 일단 엔트리가 수행되면, 기본 레벨 스택 포인터 내의 새로운 값에 의해 지시되는 스택을 사용하는 것으로 돌아가는 스위칭이 행해질 수 있다.
처리 회로는 예외 이벤트에 응답하여 타겟 추가 레벨 예외 상태에서 예외 처리 루틴을 처리할 수 있으며, 스택 포인터 선택 회로는 처리 회로가 예외 처리 루틴의 초기 부분을 완료한 후에 현재 스택 포인터를 타겟 추가 레벨 예외 상태에 대응하는 추가 레벨 스택 포인터로부터 기본 레벨 스택 포인터로 스위칭을 행하도록 구성될 수 있다. 예외 처리 루틴의 초기 부분이 완료 후에, 이것은 예외 처리가 성공적으로 시작되었고 그에 따라 추가 레벨 스택 포인터에 의해 지시된 추가 레벨 스택 데이터 저장소의 사용이 더 이상 필요하지 않음을 나타낸다. 추가 레벨 스택 데이터 저장소로 과도한 데이터가 푸싱되는 것을 피하기 위해, 현재 스택 포인터는 기본 레벨 스택 포인터로 회귀 스위칭될 수 있고 처리는 기본 레벨 스택 포인터에 의해 지시되는 바와 같이 예외 상태에 사용되는 기본 레벨 스택 데이터 저장소의 사용을 계속할 수 있다. 이것은 동일한 추가 레벨 예외 상태에서 다른 예외 이벤트로의 엔트리 시 추가 레벨 스택 오버플로의 가능성을 감소시킨다.
예외 처리 루틴의 초기 부분의 종료를 나타내기 위한 다양한 기술이 사용될 수 있다. 예를 들면, 예외 처리 루틴의 시작 후 경과된 처리 사이클의 횟수 또는 예외 처리 루틴의 시작 후에 실행된 명령의 수를 계수하기 위해 카운터가 제공될 수 있으며, 초기 부분은 카운터가 미리 정해진 임계값에 도달할 때 종료될 수 있다.
그러나, 예외 처리 루틴의 초기 부분의 종류를 지시하는 유용한 방법은 현태 스택 포인터를 타겟 추가 레벨 예외 상태에 대응하는 추가 레벨 스택 포인터로부터 기본 레벨 스택 포인터로 스위칭하도록 스택 포인터 선택 회로를 제어하는 명령을 예외 처리 루틴 내에 제공하는 것에 의한 것이다. 따라서, 예외 처리 루틴을 표현하는 소프트웨어는 현재 스택 포인터가 기본 레벨 스택 포인터로 스위칭되는 시점을 스스로 정할 수 있다. 소정의 예외 처리 루틴은 다른 예외 처리 루틴보다 안전성이 더 중요할 수 있으므로, 이러한 명령의 제공은 예외 처리 루틴의 프로그래머가 사례별로 안전한 추가 레벨 스택 포인터가 기본 레벨 스택 포인터로 스위칭되기 전에 얼마나 오래 사용되어야 하는지를 결정하도록 할 수 있다.
장치는 현재 스택 포인터가 기본 레벨 스택 포인터인지 현재의 추가 레벨 예외 상태에 대응하는 추가 레벨 스택 포인터인지 여부를 지시하는 스택 포인터 선택 값을 저장하도록 구성된 스택 포인터 선택 레지스터를 포함할 수 있다. 장치의 다른 부분은 스택 포인터 선택 레지스터에 저장된 값을 판독하는 것에 의해 어떤 스택 포인터가 현재 사용되고 있는지를 결정할 수 있다.
기본 레벨 스택 포인터 또는 추가 레벨 스택 포인터 중 어떤 것이 현재 활성인 상태에 있는지를 지시함과 함께, 처리 회로가 추가 레벨 예외 상태 중 하나에 있을 때, 스택 포인터 선택 레지스터는 스택 포인터 선택 회로의 동작도 제어할 수 있다. 스택 포인터 선택 회로는 스택 포인터 선택 레지스터에 저장된 스택 포인터 선택 값에 따라 현재 스택 포인터를 선택하도록 구성될 수 있다. 따라서, 스택 포인터 선택 레지스터에 저장된 값을 변경하는 것은 메모리 내의 스택 데이터 저장소 중 어떤 저장소가 처리 회로에 의해 사용되는지를 변경시킨다.
스택 포인터 선택 회로는 처리 회로가 추가 레벨 예외 상태 중 하나에 있을 때 스택 포인터 선택 값이 제1 값을 가지는 경우 기본 레벨 스택 포인터가 현재 스택 포인터로서 선택되고, 스택 포인터 선택 값이 제2 값을 가지는 경우 현재의 추가 레벨 예외 상태에 대응하는 추가 레벨 스택 포인터가 현재 스택 포인터로서 선택되도록 구성될 수 있다. 예를 들면, 스택 포인터 선택 값은 1 비트 값일 수 있는데, 여기서 제1 값(0 또는 1)은 스택 포인터 선택 회로를 제어하여 기본 레벨 스택 포인터를 현재 스택 포인터로서 선택하고 제2 값(0 또는 1 중 다른 값)은 스택 포인터 선택 회로를 제어하여 현재 예외 상태에 대응하는 후가 스택 포인터를 현재 스택 포인터로서 선택한다.
처리 회로는 스택 포인터 선택 명령에 응답하여 갱신된 스택 포인터 선택 값을 스택 포인터 선택 레지스터에 기록할 수 있다. 이것은 프로그램 또는 예외 처리 루틴의 프로그래머로 하여금 어떤 스택이 사용될지를 제어하도록 할 수 있다. 스택 포인터 선택 명령의 실행에 의해, 원하는 스택 포인터를 나타내는 갱신된 스택 포인터 스택 값은 스택 포인터 선택 레지스터에 기록되고, 그러면 스택 포인터 선택 회로는 원하는 스택 포인터를 현재 스택 포인터로서 선택하고, 갱신된 현재 스택 포인터에 의해 지시된 스택 데이터 저장소를 사용하도록 처리 회로를 제어한다.
장치는 스택 포인터 선택 레지스터에 저장된 스택 포인터 선택 값에 응답하여 특정 예외 이벤트에 대응하는 복수의 상이한 예외 처리 루틴 중 어떤 루틴이 처리 회로에 의한 실행을 위해 사용될지를 제어하는 예외 제어기를 포함할 수 있다. 스택 포인터 선택 레지스터는 프로세서의 현재 상태(즉, 공유된 기본 레벨 스택 포인터가 사용되고 있는지 또는 전용 추가 레벨 스택 포인터가 사용되고 있는지 여부)를 지시하고, 그에 따라 예외 상태를 위한 기본 레벨 스택 데이터 저장소가 사용되고 있는 경우, 추가 레벨 스택 포인터가 사용되고 있는 경우에 비해 다른 예외 처리 루틴이 선택될 수 있다.
예를 들면, 복수의 대응하는 예외 처리 루틴이 적어도 하나의 추가 스택 데이터 저장소의 스택 오버플로의 처리를 위한 스택 오버플로 처리 루틴을 포함하는 경우, 해당 경우는 스택 포인터 선택 값에 따라 대응하는 예외 처리 루틴 중 하나를 선택하는데 유용할 수 있다. 본 기술은 추가 레벨 예외 스택 데이터 저장소의 오버플로의 위험을 감소시키지만, 예컨대, 소프트웨어의 에러의 결과로 작지만 스택 오버플로의 가능성이 여전히 존재하며, 이러한 드문 상황의 처리에 스택 오버플로 처리 루틴이 제공될 수 있다. 예외 이벤트가 현재의 추가 레벨 예외 상태와 동일한 타겟 추가 레벨 예외 상태에서 목표 대상이 되고 스택 포인터 선택 값이 추가 헤벨 스택 포인터가 현재 스택 포인터임을 지시할 때, 해당 경우는 현재 레벨 예외 상태와 관련된 추가 레벨 스택의 스택 오버플로의 위험, 즉 반복적인 예외 엔트리의 위험이 존재함을 지시할 수 있다. 추가 레벨 스택 포인터는 현재 스택 포인터임을 지시하는 스택 포인터 선택 값이 이전 실행된 실행 처리 루틴이 기본 레벨 스택 데이터 저장소가 사용되는 시점에 도달하기 전에 예외 이벤트가 이슈되었음을 보여주기 때문에 스택 오버플로의 위험이 존재하며, 새로운 예외 이벤트가 이전 예외 상태와 동일한 예외 상태에서 목표 대상이 되기 때문에, 있을 수 있는 새로운 예외 이벤트의 원인은 추가 레벨 스택 데이터 저장소의 오버플로이다. 따라서, 정상 예외 처리 루틴으로의 엔트리는 무한 루프를 야기하여 예외가 호출되지만 대응하는 예외 처리 루틴은 실행되지 않을 수 있는데, 이는 스택이 오버플로 되었기 때문이다. 이러한 상황을 방지하기 위해, 스택 오버플로 처리 루틴이 선택된다.
스택 데이터 저장소를 저장하는 메모리는 처리 장치의 일부가 아닌 외부 메모리일 수 있다. 이 경우, 장치에 의해 처리되는 스택 포인터는 외부 메모리 내의 대응하는 스택 데이터 저장소의 위치를 지시한다. 대안적으로, 데이터 처리 장치는 자체가 메모리를 포함할 수 있다. 메모리는 하나 이상이 메모리 뱅크 또는 하나 이상의 개별 메모리 소자를 포함할 수 있어서, 기본 레벨 스택 데이터 저장소 또는 하나 이상의 추가 레벨 스택 데이터 저장소를 집합적으로 저장하는 임의의 메모리 소자 그룹을 포함할 수 있다.
본 발명의 다른 측면의 관점에서 데이터 처리 장치가 제공되며, 해당 장치는:
데이터를 처리하기 위한 처리 수단으로서, 복수의 예외 상태를 포함하고, 상기 예외 상태는 기본 레벨 예외 상태와 적어도 하나의 추가 레벨 예외 상태를 포함하는, 데이터 처리 수단과;
예외 이벤트를 처리하는 것으로부터 복귀되도록 상기 처리 수단을 제어하기 위해 예외 복귀 데이터를 저장하기 위한 적어도 하나의 예외 복귀 레지스터 수단으로서, 상기 적어도 하나의 추가 레벨 예외 상태 각각은 대응하는 추가 레벨 예외 상태에 있을 때 상기 처리 수단에 의해 전용으로 사용되는 대응하는 예외 복귀 레지스터 수단을 가지는, 그러한 적어도 하나의 예외 복귀 레지스터 수단과;
상기 처리 수단이 상기 예외 상태 중 임의의 상태에 있을 때 사용되는 포인터로서 기본 레벨 스택 데이터 저장 수단의 메모리 수단 내의 위치를 지시하는 기본 레벨 스택 포인터를 저장하기 위한 기본 레벨 스택 포인터 레지스터 수단과;
각각 상기 처리 수단이 대응하는 추가 레벨 예외 상태에 있을 때 전용으로 사용되고 대응하는 추가 레벨 스택 데이터 저장 수단의 상기 메모리 수단 내의 위치를 지시하는 적어도 하나의 추가 레벨 스택 포인터를 저장하기 위한 적어도 하나의 추가 레벨 스택 포인터 레지스터 수단과;
현재 스택 포인터를 선택하고, 데이터 처리시 상기 현재 스택 포인터에 의해 지시되는 현재 스택 데이터 저장 수단을 사용하도록 상기 처리 수단을 제어하기 위한 스택 포인터 선택 수단을 포함하고;
상기 처리 수단이 상기 기본 레벨 예외 상태에 있을 때, 상기 스택 포인터 선택 수단은 상기 기본 레벨 스택 포인터를 상기 현재 스택 포인터로서 선택하도록 구성되고;
상기 처리 수단이 상기 적어도 하나의 추가 레벨 예외 상태 중 하나에 있을 때, 상기 스택 포인터 선택 수단은 상기 기본 레벨 스택 포인터와 현재의 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터 중 하나를 상기 현재 스택 포인터로서 선택하도록 구성되고, 상기 처리 수단은 상기 현재 스택 포인터가 상기 기본 레벨 스택 포인터 또는 상기 추가 레벨 스택 포인터인지 여부에 무관하게 상기 현재의 추가 레벨 예외 상태에 대응하는 상기 예외 복귀 레지스터 수단을 계속 사용하는 것을 특징으로 한다.
본 발명의 추가의 측면의 관점에서 데이터 처리 방법이 제공되며, 해당 방법은:
기본 레벨 예외 상태와 적어도 하나의 추가 레벨 예외 상태를 포함하는 복수의 예외 상태에서 데이터를 처리하는 단계와;
예외 이벤트에 응답하여, 상기 예외 이벤트를 처리하는 것으로부터 복귀되도록 제어를 행하기 위해 예외 복귀 데이터를 적어도 하나의 예외 복귀 레지스터에 저장하는 단계로서, 상기 적어도 하나의 추가 레벨 예외 상태 각각은 상기 대응하는 추가 레벨 예외 상태에서 처리시 전용으로 사용되는 대응하는 예외 복귀 레지스터를 가지는, 그러한 예외 복귀 데이터 저장 단계와;
상기 처리 단계가 상기 예외 상태 중 임의의 상태에 있을 때 사용되는 포인터로서 기본 레벨 스택 데이터 저장소의 메모리 내의 위치를 지시하는 기본 레벨 스택 포인터를 저장하는 단계와;
상기 처리 단계가 대응하는 추가 레벨 예외 상태에 있을 때 전용으로 사용되고 대응하는 추가 레벨 스택 데이터 저장소의 상기 메모리 내의 위치를 지시하는 적어도 하나의 추가 레벨 스택 포인터를 저장하는 단계와;
현재 스택 포인터를 선택하고, 데이터 처리시 상기 현재 스택 포인터에 의해 지시되는 현재 스택 데이터 저장소를 사용하도록 상기 처리 단계를 제어하는 단계를 포함하고;
상기 처리 단계는 상기 기본 레벨 예외 상태에서 데이터를 처리하고, 상기 선택 단계는 상기 기본 레벨 스택 포인터를 상기 현재 스택 포인터로서 선택하며;
상기 처리 단계가 상기 적어도 하나의 추가 레벨 예외 상태 중 하나에 있을 때, 상기 선택 단계는 상기 기본 레벨 스택 포인터와 현재의 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터 중 하나를 상기 현재 스택 포인터로서 선택하며, 상기 처리 단계는 상기 현재 스택 포인터가 상기 기본 레벨 스택 포인터 또는 상기 추가 레벨 스택 포인터인지 여부에 무관하게 상기 현재의 추가 레벨 예외 상태에 대응하는 상기 예외 복귀 레지스터를 계속 사용하는 것을 특징으로 한다.
본 발명의 추가의 측면의 관점에서 데이터 처리 장치가 제공되며, 해당 장치는:
기본 레벨 예외 상태와 적어도 하나의 추가 레벨 예외 상태를 포함하는 복수의 예외 상태 중 하나에서 데이터를 처리하도록 구성된 처리 회로와;
기본 레벨 스택 데이터 저장소의 메모리 내의 위치를 지시하는 기본 레벨 스택 포인터를 저장하기 위한 기본 레벨 스택 포인터 레지스터와;
적어도 하나의 추가 레벨 스택 데이터 저장소의 상기 메모리 내의 위치를 지시하는 적어도 하나의 추가 레벨 스택 포인터를 저장하기 위한 적어도 하나의 추가 레벨 스택 포인터 레지스터로서, 상기 적어도 하나의 추가 레벨 예외 상태는 각각 대응하는 추가 레벨 스택 포인터를 가지는, 그러한 적어도 하나의 추가 레벨 스택 포인터 레지스터와;
타겟 추가 레벨 예외 상태와 관련된 예외 이벤트에 응답하여, 상기 타겟 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터에 의해 지시되는 추가 레벨 스택 데이터 저장소를 사용하여 상기 타겟 추가 레벨 예외 상태에서 예외 처리 루틴을 처리하도록 상기 처리 회로를 작동시키는 예외 제어기를 포함하고;
상기 처리 회로는 상기 예외 처리 루틴의 초기 부분의 처리 후에 상기 기본 레벨 스택 포인터에 의해 지시되는 상기 기본 레벨 스택 데이터 저장소를 사용하여 상기 타겟 추가 레벨 예외 상태에서 상기 예외 처리 루틴의 나머지 부분을 처리하도록 구성된 것을 특징으로 한다.
타겟 추가 레벨 예외 상태로의 엔트리 후에 추가 레벨 스택 포인터를 사용하는 것에 의해, 대응하는 예외 처리 루틴은 예외 처리 루틴이 안전하게 개시되는 것을 보장하기 위해 전용의 사용빈도가 적은 스택을 포함한다. 예외 처리 루틴의 초기 부분이 완료된 후, 예외 처리 루틴의 나머지 부분은 기본 레벨 스택 포인터에 의해 지시되는 바와 같이 해당 예외 레벨을 위한 기본 레벨 스택 데이터 저장소를 사용하여 타겟 추가 레벨 예외 상태에서 처리된다. 일단 예외 처리 루틴이 안전하게 개시되면, 기본 레벨 스택 포인터를 사용하는 것에 의해 전용의 추가 레벨 스택 데이터 저장소의 과용이 방지되며, 그에 따라 추가 레벨 스택 데이터 저장소의 오버플로의 가능성이 감소된다.
본 발명의 또 다른 측면의 관점에서 데이터 처리 장치가 제공되며, 해당 장치는:
기본 레벨 예외 상태와 적어도 하나의 추가 레벨 예외 상태를 포함하는 복수의 예외 상태 중 하나에서 데이터를 처리하기 위한 처리 수단과;
기본 레벨 스택 데이터 저장 수단의 메모리 수단 내의 위치를 지시하는 기본 레벨 스택 포인터를 저장하기 위한 기본 레벨 스택 포인터 레지스터 수단과;
적어도 하나의 추가 레벨 스택 데이터 저장 수단의 상기 메모리 수단 내의 위치를 지시하는 적어도 하나의 추가 레벨 스택 포인터를 저장하기 위한 적어도 하나의 추가 레벨 스택 포인터 레지스터 수단으로서, 상기 적어도 하나의 추가 레벨 예외 상태는 각각 대응하는 추가 레벨 스택 포인터를 가지는, 그러한 적어도 하나의 추가 레벨 스택 포인터 레지스터 수단과;
타겟 추가 레벨 예외 상태와 관련된 예외 이벤트에 응답하여, 상기 타겟 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터에 의해 지시되는 추가 레벨 스택 데이터 저장 수단을 사용하여 상기 타겟 추가 레벨 예외 상태에서 예외 처리 루틴의 처리를 시발시키기 위한 예외 제어 수단을 포함하고;
상기 처리 수단은 상기 예외 처리 루틴의 초기 부분의 처리 후에 상기 기본 레벨 스택 포인터에 의해 지시되는 상기 기본 레벨 스택 데이터 저장 수단을 사용하여 상기 타겟 추가 레벨 예외 상태에서 상기 예외 처리 루틴의 나머지 부분을 처리하도록 구성된 것을 특징으로 한다.
본 발명의 다른 측면의 관점에서 데이터 처리 방법이 제공되며, 해당 방법은:
기본 레벨 예외 상태와 적어도 하나의 추가 레벨 예외 상태를 포함하는 복수의 예외 상태 중 하나에서 데이터를 처리하는 단계와;
기본 레벨 스택 데이터 저장소의 메모리 내의 위치를 지시하는 기본 레벨 스택 포인터를 저장하는 단계와;
적어도 하나의 추가 레벨 스택 데이터 저장소의 상기 메모리 내의 위치를 지시하는 적어도 하나의 추가 레벨 스택 포인터를 저장하는 단계로서, 상기 적어도 하나의 추가 레벨 예외 상태는 각각 대응하는 추가 레벨 스택 포인터를 가지는, 그러한 적어도 하나의 추가 레벨 스택 포인터 저장 단계와;
타겟 추가 레벨 예외 상태와 관련된 예외 이벤트에 응답하여, 상기 타겟 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터에 의해 지시되는 추가 레벨 스택 데이터 저장소를 사용하여 상기 타겟 추가 레벨 예외 상태에서 예외 처리 루틴의 처리를 시발시키는 단계와;
상기 예외 처리 루틴의 초기 부분의 처리 후에 상기 기본 레벨 스택 포인터에 의해 지시되는 상기 기본 레벨 스택 데이터 저장소를 사용하여 상기 타겟 추가 레벨 예외 상태에서 상기 예외 처리 루틴의 나머지 부분을 처리하는 단계를 포함하는 것을 특징으로 한다.
첨부 도면을 참조로 본 발명의 실시예들을 단지 예시적인 목적으로 설명한다.
도 1은 예외 이벤트를 처리하기 위한 예외 처리 리소스를 갖는 데이터 처리 장치를 개략적으로 예시하며;
도 2는 상기 처리 장치의 복수의 예외 상태를 예시하며;
도 3은 기본 레벨 스택 포인터와 적어도 하나의 추가 레벨 스택 포인터로부터 현재 스택 포인터를 선택하기 위한 방법을 예시하며;
도 4는 스택 포인터 선택 명령을 예시하며;
도 5는 스택 포인터 선택 명령을 포함하는 예외 처리 루틴을 예시하며;
도 6은 예외 처리 루틴에 액세스하기 위한 개별 어드레스 오프셋을 지시하는 예외 벡터 테이블을 예시하며;
도 7은 예외 이벤트에 응답하는 방법을 예시하며;
도 8은 예외 이벤트에 응답하여 예외 상태 사이를 스위칭하는 것을 개략적으로 예시하며;
도 9는 스택 오버플로 처리 루틴의 처리를 개략적으로 예시하며,
도 10은 가상 장치 구현을 개략적으로 예시한다.
도 1은 예외 처리 리소스를 가지는 데이터 처리 장치(2)를 예시한다. 데이터 처리 장치(2)는 메모리 시스템(8)으로부터 로딩된 명령의 제어 하에서 메모리 시스템(8) 또는 레지스터(6) 내에 저장된 데이터의 처리를 위한 처리 파이프라인(4)을 포함한다. 처리 파이프라인(4)은 다양한 파이프라인 스테이지, 예컨대, 메모리 시스템(8)으로부터의 명령을 페칭하는 페치 파이프라인 스테이지(10); 페칭된 명령을 디코딩하는 디코드 파이프라인 스테이지(12); 실행을 위한 명령을 이슈잉하는 이슈 스테이지(14)(이슈 스테ㅔ이지(14)는 처리 사이클마다 하나 또는 복수의 명령을 이슈할 수 있고, 정렬 또는 비정렬 방식으로 명령을 이슈할 수 있다); 이슈잉된 명령을 실행하는 실행 스테이지(16); 처리 결과를 레지스터(6)에 대응 기록하는 응답 기록 스테이지(18)를 포함할 수 있다. 처리 파이프라인(4)은 이들 스테이지에 한정되지 않으며 다른 스테이지, 예컨대, 명령 내에 특정된 레지스터 지정자(specifier)를 개명하는 개명 스테이지를 포함할 수 있다.
장치(2)는 일종 이상의 예외 이벤트에 응답하여 예외 처리 루틴을 처리하도록 처리 파이프라인(4)을 제어하는 예외 제어기(20)를 포함한다. 처리 파이프라인(4)은 예외 이벤트를 처리하는 복수의 예외 상태를 포함한다. 각각의 예외 상태는 상이한 특성을 가진다. 예를 들면, 도 2에 예시된 예의 실시예에서, 기본 레벨 예외 상태(EL0)는 사용자 레벨 예외 상태이고, 제1 추가 레벨 예외 상태(EL1)는 운영 시스템 레벨 예외 상태이고, 제2 추가 레벨 예외 상태(EL2)는 하이퍼바이저 레벨 예외 상태이고, 제3 추가 레벨 예외 상태(EL3)는 보안 모니터 레벨 예외 상태이다. 각각의 예외 상태 내에는 도 2에 예시된 바와 같은 비-보안 모드와 보안 모드 등의 다중 모드가 존재할 수 있다. 모든 예외 상태가 양측의 모드에 유효할 필요는 없다. 예를 들면, 도 2에서, 추가 레벨 예외 모드(EL2)는 비-보안 상태에서만 유효한 반면, 추가 레벨 예외 상태(EL3)는 보안 상태에서만 유효하다. 도 2의 예외 상태 다이어그램은 단지 예시적인 실시예일 뿐으로 예외 상태의 수와 구성은 다를 수 있다.
각각의 예외 이벤트는 추가 레벨 예외 상태(EL1-EL3) 중 특정의 한 상태에서 목표 대상이 된다. 예를 들면, 특정 예외 이벤트는 운영 시스템 레벨 예외 상태(EL1) 또는 하이퍼바이저 레벨 예외 상태(EL2)에서의 처리를 필요로 할 수 있으며, 적절한 레벨에서 목표 대상이 될 수 있다. 예외 제어기(20)는 타겟 레벨 예외 상태에서 대응하는 예외 처리 루틴을 처리하도록 처리 파이프라인(4)을 제어한다. 예외 이벤트는 현재 예외 상태 또는 보다 고차의 예외 상태에서 목표 대상이 된 예외 이벤트가 주어진 예외 상태에서 실행을 회피하거나(pre-empt) 중단할 수 있도록 우선 순위가 정해질 수 있다. 낮은 예외 상태에서 목표 대상이 된 예외가 주어진 예외 상태에서의 실행을 사용하여 발생되는 드문 경우, 해당 예외는 그러한 상황이 안전하다면 무시되고 그렇지 않으면 실행을 회피하여 현재 예외 레벨에서 처리기가 실행되도록 한다. 현재 예외 레벨 상태와 동일한 레벨 예외 상태에서 목표 대상이 된 예외 이벤트는 현재 처리를 통상적으로 중단시키는 것은 아니지만 예외 이벤트가 현재 처리를 중단시킨 문제점에 의해 직접 야기되었다면 받아들여질 수 있다. 도 1을 다시 참조하면, 장치(2)는 예외 이벤트의 조작시 사용되는 예외 콘텍스트 데이터를 저장하기 위한 다수의 콘텍스트 레지스터(24)를 포함한다. 콘텍스트 레지스터(24)는 예외 링크 레지스터(ELR)(26)와 저장된 처리 상태 레지스터(SPSR)(28)을 포함하는 다수의 예외 복귀 레지스터를 포함한다. 적얻도 추가 레벨 예외 상태(즉, 기본 레벨 예외 상태(EL0)를 제외한 모든 예외 상태)는 대응하는 예외 복귀 레지스터를 가진다(예외 링크 레지스터(26) 및 저장된 처리 상태 레지스터(28)는 집합적으로 예외 복귀 레지스터를 표현하는 것으로 간주된다). 각각의 예외 링크 레지스터(26)는 일단 대응하는 추가 레벨 예외 상태에서 처리되는 예외 처리 루틴이 완료된 경우에 처리되는 명령을 나타내는 예외 복귀 어드레스를 저장한다. 각각의 저장된 처리 상태 레지스터(28)는 예외 처리 루틴을 대응하는 추가 레벨 예외 상태에서 처리시 사용되는 인터럽트 마스크, 플래그 또는 실행 마스크 등의 다양한 콘텍스트 상태 데이터를 저장한다. 도 1의 실시예에서, 기본 레벨 예외 상태(EL0)는 예외 이벤트가 추가 레벨 예외 상태 중 하나에서 목표 대상이 될 것으로 예상되므로 대응하는 추가 예외 링크 레지스터(26) 또는 저장된 처리 상태 레지스터(28)를 갖지 않는다. 그러나, 예외 이벤트가 기본 레벨 예외 상태에서도 처리될 수 있는 실시예에서, 기본 레벨 예외 상태(EL0)는 대응하는 예외 링크 레지스터(26) 또는 저장된 처리 상태 레지스터(28)를 가질 수도 있다.
콘텍스트 레지스터(24)는 스택 포인터 레지스터(30)도 포함한다. 예외 상태 각각은 대응하는 스택 데이터 저장소(35)의 메모리 시스템(8) 내의 위치를 지시하는 대응하는 스택 포인터 레지스터(30)를 포함한다. 기본 레벨 스택 포인터 레지스터(30-0)는 처리 파이프라인(4)이 예외 상태(EL0-EL3) 중 임의의 하나에서 처리되는 동안 액세스 가능한 기본 레벨 스택 데이터 저장소(35-0, 35-0', 35-0", 35-0'")의 메모리 시스템 내의 위치를 식별한다. 이에 대해, 추가 레벨 스택 포인터 레지스터(30-1, 30-2, 30-3)는 메모리 시스템(8) 내의 대응하는 추가 레벨 스택 데이터 저장소(35-1, 35-2, 35-3)를 식별하고 처리 파이프라인(4)이 대응하는 추가 레벨 예외 상태(EL1, EL2, EL3)에 있을 때 각각 전용으로 사용된다.
당업자들은 기본 레벨 스택 데이터 저장소(35-0...35-0''')가 기본 레벨 스택 데이터 저장소로 지칭되고 있지만 예외 상태에 사용되는 기본 레벨 스택 데이터 저장소는 보다 낮은 차수의 예외 상태에서의 실행에 액세스될 수 있는 것이 적절치 않음을 알 것이다.
어떤 스택 포인터(30)가 현재 사용 중임을 선택하기 위해 스택 포인터 선택 회로(40)가 제공된다. 처리 파이프라인(4)이 기본 레벨 예외 상태(EL0)에 있을 때, 기본 레벨 스택 포인터 레지스터(30-0)에 저장된 기본 레벨 스택 포인터가 선택되고, 기본 레벨 스택(35-0)을 사용하여 변수를 저장하도록 선택 회로(40)에 의해 처리 파이프라인(4)이 제어된다.
처리 파이프라인(4)이 추가 레벨 예외 상태(EL1-EL3) 중 하나에 있을 때, 스택 포인터 선택 회로(40)는 스택 포인터 선택 레지스터(42)에 저장된 스택 포인터 선택 값에 응답하여, 기본 레벨 스택 포인터 레지스터(30-0)에 저장된 기본 레벨 스택 포인터 또는 처리 파이프라인(4)의 현재 예외 상태에 대응하는 스택 포인터 레지스터(30-1, 30-2, 30-3) 중 하나에 저장된 추가 레벨 스택 포인터를 선택한다. 스택 포인터 선택 회로(40)는 예외 제어기(20)로부터 처리 파이프라인(4)의 현재 예외 상태를 지시하는 신호를 수신할 수 있다. 대안적으로, 처리 파이프라인(4)은 스택 포인터 선택 회로(40)에 자체의 현재 예외 상태를 알려줄 수 있다. 스택 포인터 선택 레지스터(42)에 저장된 값과 현재 예외 상태에 따라, 현재 스택 포인터가 선택되고 처리 파이프라인(4)은 현재 스택 포인터를 사용하여 스택 데이터 저장소(35) 중 대응하는 하나에 액세스하도록 스택 포인터 선택 회로(40)에 의해 제어된다.
각각의 추가 레벨 예외 상태에 2개의 다른 스택(기본 레벨 스택(35-0', 35-0", 35-0"") 중 하나와 추가 레벨 스택(35-1, 35-2, 35-3) 중 하나)로의 액세스를 제공하는 것에 의해, 각각의 추가 레벨 예외 상태마다 안전한 전용의 스택이 제공됨으로써 해당 예외 상태에서 구동되는 예외 처리기가 스택의 오버플로의 위험이 없이 안전하게 개시될 수 있는 한편, 각각의 기본 레벨 스택(35-0', 35-0", 35-0"')은 해당 예외 레벨에서 일반적인 처리에 사용될 수 있다. 가능한 경우, 기본 레벨(범용) 스택(35-0', 35-0", 35-0"')의 사용을 통해, 전용 스택의 과중한 부담을 피하고 예외 처리기로의 엔트리 시 사용되는 전용 스택에 대한 공간을 비워서 남겨둬야 하는 것을 방지한다.
스택 포인터 선택 레지스터(42)는 2개의 가능한 값을 갖는 스택 포인터 선택 값을 저장할 수 있다. 스택 포인터 선택 값이 제1 값(예, 0의 값)을 가지는 경우, 스택 포인터 선택 회로는 기본 레벨 스택 포인터 레지스터(30-0)에 저장된 기본 레벨 스택 포인터를 현재 스택 포인터로서 선택할 수 있다. 다른 한편, 스택 포인터 선택 값이 제1 값(예, 1의 값)을 가지는 경우, 스택 포인터 선택 회로(40)는 현재 추가 레벨 예외 상태와 관련된 추가 레벨 스택 포인터를 현재 스택 포인터로서 선택할 수 있다. 도 3은 스택 포인터 선택 값의 이러한 매핑이 사용될 때 스택 포인터 선택 회로(40)의 동작의 예를 나타낸다. 처리 시작 후, 50 단계에서 스택 포인터 선택 회로(40)가 처리 파이프라인(4)의 현재 예외 상태를 확인한다. 전술한 바와 같이, 이것은 예외 제어기(20)로부터 제공된 예외 레벨 신호에 의해 행해질 수 있다. 50 단계에서 현재 예외 상태가 기본 레벨 예외 상태(EL0)으로 결정되면, 방법은 52 단계로 진행되어 스택 포인토 선택 회로(40)가 기본 레벨 스택 포인터 레지스터(30-0)에 저장된 기본 레벨 스택 포인터를 현재 스택 포인터로서 선택한다. 이후, 기본 레벨 스택(35-0)을 현재 스택 데이터 저장소로서 사용하도록 처리 파이프라인(4)이 제어된다. 소정의 예외 상태로 예외가 취급시 전용 예외 스택 포인터를 선택하도록 SPSel이 배열된다.
다른 한편, 50 단계에서, 스택 포인터 선택 회로(40)가 현재 예외 상태가 추가 레벨 예외 상태(ELx)(x는 1 이상의 임의의 정수) 중 하나이면, 방법은 54 단계로 진행되어 스택 포인터 선택 회로(40)가 스택 포인터 선택 레지스터(42) 내에 저장된 스택 포인터 선택 값을 판독한다. 본 실시예에서, 스택 포인터 선택 값이 0이면, 방법은 56 단계로 진행되어 기본 레벨 스택 포인터가 현재 스택 포인터가 되도록 선택되고, 기본 레벨 스택(35-0)을 사용하도록 처리 파이프라인(4)이 제어된다. 다른 한편, 54 단계에서 스택 포인터 선택 값이 1의 값을 가지면, 방법은 58 단계로 진행되어 현재 추가 레벨 예외 상태(ELx)에 대응하는 스택 포인터(SPx)가 현재 스택 포인터로서 선택되고, 현재 예외 상태에 대응하는 스택 데이터 저장소(35-x)를 현재 스택 데이터 저장소로서 사용하도록 처리 파이프라인(4)이 제어된다.
이후, 처리 파이프라인(4)이 스택 포인터를 필요로 하는 경우, 스택 포인터 선택 회로(40)는 현재 스택 포인터를 (현재 스택 포인터에 대응하는 스택 포인터 값으로서 또는 현재 스택 포인터를 저장하는 스택 포인터 레지스터(30) 중 하나의 의미로서) 처리 파이프라인(4)에 제공한다.
어떤 스택 포인터가 현재 스택 포인터이든지, 예외에 의해 회피되지 않는다면 각각의 명령에 대해 처리가 계속된다.
도 3에 예시된 바와 같이, 처리 파이프라인(4)이 추가 레벨 예외 상태 중 하나에 있을 때, 스택 포인터 선택 레지스터(42)는 어떤 스택 포인터가 현재 스택 포인터인지를 제어한다. 스택 포인터 선택 레지스터(42)에 저장된 값은 처리 파이프라인(4)에 의해 실행된 스택 포인터 선택 명령에 의해 변경될 수 있다. 도 4는 스택 포인터 선택 명령의 예시적인 구문을 예시한다. 스택 포인터 선택 명령은 스택 포인터 선택 레지스터(42)의 위치를 특정하는 레지스터 지정기(SPSel)와 스택 포인터 선택 레지스터(42)에 기록될 직접적인 값을 특정하는 직접 값(#Imm1)을 포함한다. 예를 들면, 직접적인 값이 0인 경우, 해당 경우는 기본 레벨 스택 포인터를 현재 스택 포인터로서 선택하도록 스택 포인터 선택 회로(40)를 제오하기 위해 스택 포인터 선택 레지스터(42)를 설정할 수 있는 반면, 직접적인 값이 1인 경우, 해당 경우는 추가 레벨 스택 포인터 중 하나를 현재 스택 포인터로서 선택하도록 스택 포인터 선택 회로(40)를 제어하기 위해 스택 포인터 선택 레지스터(42)를 제어할 수 있다. 물론, 0과 1의 값과 기본 레벨 및 추가 레벨 스택 포인터 간의 매핑은 반대가 될 수 있다. 스택 포인터 선택 명령은 직접적인 값이 레지스터 뱅크(6)에 기록되지 않고 스택 포인터 선택 레지스터(42)를 직접 변경할 수 있다. 대안적으로, 스택 포인터 선택 명령은 직접적인 값이 스택 포인터 선택 레지스터(42)에 기록되기 전에 직접적인 값이 레지스터 뱅크(6)에 기록되는 것이 필요할 수 있다.
도 4에 도시된 스택 포인터 선택 명령을 제공하는 것에 의해, 프로그래머는 현재 스택 데이터 저장소가 추가 레벨 스택 데이터 저장소(35-1, 35-2, 35-3)로부터 예외 레벨에 대한 개별 기본 레벨 스택 데이터 저장소(35-0', 35-0", 35-0"')로 스위칭되는 시점을 제어하도록 예외 처리 루틴에 스택 포인터 선택 명령을 포함할 수 있다. 도 5에 도시된 바와 같이, 이러한 예외 처리 루틴은 추가 레벨 스택 데이터 저장소(35-1, 35-2, 35-3) 중 하나가 현재 스택 데이터 저장소로서 사용되는 초기 부분과 기본 레벨 스택 데이터 저장소(35-0)가 현재 스택 데이터 저장소로서 사용되는 나머지 부분을 포함한다. 스택 포인터 선택 명령의 예외 처리 루틴 내의 위치는 초기 부분과 나머지 부분의 상대적 크기를 결정하고 전용 스택이 예외 이벤트의 안전한 처리에 요구되는 정도에 따라 필요한 만큼 변화될 수 있다. 예외 처리 루틴의 초기 부분은 예외 처리 루틴의 처리를 개시하기 위해 안전한 전용 스택 저장소를 제공하도록 추가 레벨 스택 데이터 자정소를 사용하는 반면, 예외 처리 루틴의 나머지 부분은 전용 스택의 과도한 부담을 회피하기 위해 해당 예외 레벨에 대해 관련 기본 레벨 스택 데이터 저장소를 사용한다.
스택 포인터 선택 레지스터(42)는 복수의 대응하는 예외 처리기 중 어떤 것이 특정 예외 이벤트의 처리에 사용되어야 하는지를 선택하는데 유용할 수 있다. 예외 제어기(20)는 예외 레벨의 처리를 위한 다양한 예외 처리 루틴의 메모리 시스템(8) 내의 위치를 지시하는 예외 벡터 테이블을 포함할 수 있다. 예외 벡터 테이블의 예는 도 6에 예시된다. 다른 종류의 예외 이벤트(예, ARM 프로세서 아키텍처로부터 동기 IRQ(정상 인터럽트), FIQ(빠른 인터럽트) 또는 에러 예외 이벤트로 알려진 바와 같은)의 경우, 상이한 어드레스 오프셋 값에 의해 복수의 다른 예외 처리 루틴이 식별된다. 예외 처리 루틴은 이후 대응하는 어드레스 오프셋을 예외 처리기의 기본 어드레스 레지스터 내에 저장된 기본 어드레스에 가산하는 것에 의해 얻어진 메모리 어드레스에 액세스 될 수 있다. 다른 상황을 처리하기 위해 다른 예외 처리기가 제공될 수 있다(예, 다른 예외 처리기는 다른 예외 처리 루틴을 필요로 할 수 있다).
예외 이벤트가 현재 레벨 예외 상태와 동일한 레벨 예외 상태에서 목표 대상이 되는 경우, 이는 예외 이벤트 발생시 현재 스택 포인터가 기본 레벨 스택 포인터인지 또는 추가 레벨 스택 포인터 중 하나인지 여부에 따라 선택되는 복수의 다른 종류의 예외 처리기(적어도 하나의 스택 오버플로 예외 처리기를 포함)를 제공하는데 유용할 수 있다. 이것은 현재 스택 포인터가 추가 레벨 스택 포인터 중 하나이거나 현재 스택 포인터가 기본 레벨 스택 포인터인 개별 상황에 대해 다른 예외 처리 루틴을 식별하기 위해 다른 어드레스 오프셋이 제공되는 도 6에 예시된다. 따라서, 예외 제어기(20)는 스택 포인터 선택 레지스터(42)의 현재 값에 응답하여 예외 처리기 중 어떤 것이 처리되는지를 선택할 수 있다. 이것은 새로운 예외 이벤트가 현재 예외 상태와 동일한 예외 상태에서 목표 대상이 될 때 이전에 처리된 예외 처리 루틴에 의해 야기되지 않고 현재 예외 상태와 동일한 레벨에서 목표 대상이 되는 예외 이벤트가 이전에 처리된 예외 처리 루틴을 중단시키지 않을 것이므로 이전에 처리된 예외 처리 루틴의 실행 중에 문제가 발생하였음을 나타내기 때문에 유용할 수 있다. 더욱이, 스택 포인터 선택 레지스터가 현재 스택 포인터가 추가 레벨 스택 포인터 중 하나임을 지시하면, 이것은 현재 스택 포인터가 기본 레벨 스택 포인터로 스위칭되기 전에 기 처리된 예외 처리 루틴의 초기 부분 도중에 문제가 발생했음을 나타낸다. 그러므로, 예외 이벤트에 대해 있을 수 있는 이유는 현재 사용되는 추가 레벨 스택(35-1, 35-2, 35-3)의 오버플로일 수 있다. 이후 정상 예외 처리기가 로딩되면, 이 처리기는 이미 오버플로 되고 있는 스택으로 변수의 푸싱을 시도할 수 있고, 이것은 자체가 다시 변수를 스택으로 로딩하는 것을 원할 수 있는 또 다른 예외를 시발시킬 수 있어서 시스템을 반복적 예외 엔트리로 보낼 수 있다. 예외 이벤트의 이러한 반복적 요청을 회피하기 위해, 드문 경우의 스택 오버플로를 처리하기 위해 스택 오버플로 예외 처리기가 제공되며, 이러한 예외 처리기는 예외 이벤트가 타겟 예외 이벤트와 동일한 예외 레벨로부터 요청되고 그리고 스택 포인터 선택 레지스터(42)가 현재 스택 포인터가 추가 레벨 스택 포인터 중 하나임을 지시할 때 요청된다. 따라서, 이러한 상황은 레지스터를 사용하는 정상적인 방법이 해당 레지스터 내의 기존 값을 스택 상에 저장하는 것이고 이것은 다시 반복을 야기할 수 있으므로, 임의의 레지스터를 사용할 필요 없이 기본 스택 포인터를 사용하고 있었던 예외 상태 내의 예외와 구별될 수 있다. 따라서, 스택 오버플로 예외 처리 루틴이 스택을 정할 수 없다 하더라도, 반복적 예외 엔트리의 무한 루프에서 돌아가는 프로세서를 갖는 것과 반대로, 에러 상황의 완벽한 진단 정보와 분명한 처리가 달성될 수 있다.
도 7은 예외 이벤트의 처리 방법을 예시한다. 초기에, 100 단계에서 처리 파이프라인(4)은 예외 상태(ELm)(m은 0보다 크거나 같은 정수) 중 하나에서 데이터를 처리한다. 따라서, 파이프라인(4)은 임의의 예외 상태에서 데이터를 처리한다. 이후, 102 단계에서, 특정 추가 레벨 예외 상태(ELn)(n은 1보다 크거나 같은 정수이고; n은 m 이상이기도 하다(n이 m보다 작았다면, 예외 이벤트는 현재 처리를 중단시키지 않았을 것이다))에서 목표 대상이 된 예외 이벤트가 발생된다. 104 단계에서, 예외 제어기(20)는 처리 파이프라인(4)을 예외 상태(ELn)로 만들고(그렇지 않으면 n=m의 경우 처리 파이프라인(4)을 이전과 동일한 예외 상태에 유지함), 예외 복귀 데이터를 예외 링크 레지스터(26)와 타겟 예외 상태(ELn)에 대응하는 저장된 처리 상태 레지스터(28)에 저장한다. 저장된 예외 복귀 데이터는 일단 예외 이벤트의 처리가 완료되면 시스템이 초기 처리로 복귀할 수 있도록 하기 위한 데이터이다.
106 단계에서 예외 제어기(20)는 예외 이벤트의 발생시 예외 상태(ELm)가 타겟 예외 상태(ELn)와 동일한지 여부를 결정한다. 초기 및 타겟 예외 상태가 동일하지 않으면, 108 단계에서 스택 포인터 선택 레지스터(42)는 타겟 예외 상태(SPn)와 관련된 스택 포인터가 현재 스택 포인터임을 지시하는 1의 값으로 설정된다. 이후 예외 제어기(20)는 110 단계에서 예외 이벤트에 대응하는 예외 처리 루틴을 선택하고, 해당 예외 처리 루틴의 실행을 시작하도록 처리 파이프파인(4)을 제어한다. 이후 처리 파이프라인(4)은 타겟 예외 상태(ELn)와 관련된 스택(35-n)을 사용하요 예외 처리 루틴의 처리를 계속한다.
예외 처리 루틴의 처리는 예외 처리 루틴의 초기 부분의 완료를 결정하는 112 단계까지 계속된다. 예외 처리 루틴의 초기 부분의 완료 시기를 결정하는 한 가지 방법은 도 4에 예시된 스택 포인터 선택 명령을 제공하는 것에 의한 것이다. 대안적으로, 예외 처리 루틴의 시작으로부터 미리 정해진 수의 처리 사이클 또는 명령을 계수하기 위해 스택 포인터 선택 회로(40) 내에 카운터가 제공될 수 있으며, 일단 카운터가 미리 정해진 값에 도달하면 해당 카운터는 초기 부분의 종료를 시발시킬 수 있다. 기본 레벨 스택 포인터의 콘텐츠는 기본 레벨 스택 포인터를 사용하는 것으로 스위칭되기 전에 해당 예외 레벨에 사용되는 기본 레벨 스택 데이터 저장소를 지시하도록 변경된다. 예외 처리 루틴의 초기 부분이 완료되는 경우, 114 단계에서 스택 포인터 선택 레지스터(42)에 저장된 스택 포인터 선택 값은 0으로 설정되고 그에 따라 현재 스택 포인터는 기본 레벨 스택 포인터 0이 된다. 이후 예외 처리 루틴의 나머지 부분이 개별 기본 레벨 스택 데이터 저장소(35-0', 35-0", 35-0"')를 사용하여 현재 스택으로서 처리된다. 이후 처리는 116 단계에서 예외 처리 루틴이 종료될 때까지 계속된다. 이후 118 단계에서 예외 링크 레지스터(26)와 타겟 예외 상태(ELn)에 대응하는 저장 처리 상태 레지스터(28)로부터 예외 복귀 데이터가 로딩되고, 이후 처리 파이프라인(4)은 다시 초기 예외 상태(ELm)로 만들어진다. 이후 처리는 120 단계에서 예외 상태(ELm)에서 계속된다. 이후 방법이 종료한다.
106 단계에서 초기 예외 상태(ELm)가 예외 이벤트와 관련된 타겟 예외 상태(ELn)와 동일한 경우, 122 단계에서 스택 포인터 선택 레지스터(42) 내에 저장된 스택 포인토 선택 값이 1 또는 0인지 여부가 결정된다(도 7은 0의 경우 기본 레벨 스택 포인터가 사용 중임을 지시하고 1의 경우는 추가 레벨 스택 포인터가 사용되고 있음을 지시하는 실시예를 예시하고 있지만, 분명히 0과 1의 의미는 바뀔 수 있다). 스택 포인터 선택 값이 0이면, 처리는 108-120 단계로 진행된다. m과 n이 동일할 때 인터럽트 제어기(120)에 의해 선택된 특정 예외 처리 루틴이 m과 n이 다른 경우에 선택된 예외 처리 루틴과 다를 수 있지만(이것은 인터럽트 제어기의 벡터 테이블 내에 세팅된 어드레스 오프셋에 의존할 것이다), 108-120 단계에 예시된 스택 포인터 처리는 동일하다.
다른 한편, 122 단계에서 스택 포인터 선택 값이 1이면, 124 단계에서 예외 제어기(20)는 스택 오버플로 처리 루틴에 대응하는 예외 벡터를 선택하고, 스택 오버플로의 처리를 위해 스택 오버플로 처리 루틴을 실행하도록 처리 파이프라인(4)을 제어한다. 이것은 스택(35-n)의 스택 오버플로의 위험이 존재하기 때문이다. 스택 오버플로 처리 루틴은 (해당 데이터의 소실을 방지하기 위해 소정의 콘텍스트 데이터를 저장하는 것에 의해) 리셋을 위해 시스템을 적어도 준비할 수 있다. 126 단계에서 스택 오버플로 예외가 복구되었는지 여부가 결정된다. 복구가 달성되었고 처리가 정상으로서 계속될 수 있으면, 방법은 108 단계로 진행되어 정상적 예외 처리 루틴이 스택 포인터 선택 값이 0인 경우와 동일한 방법으로 실행된다. 그러나, 복구가 달성되지 않았으면, 처리는 종료된다.
따라서, 도 7에 예시된 기술은 안전하고 전용인 스택이 예외 처리 루틴의 초기 부분에 사용될 수 있도록 함으로써 예외 처리 루틴이 안전하게 개시되는 것을 보장한다. 이것은 공유 스택의 오버플로에 기인하여 예외 처리 루틴이 개시 실패하는 것이 방지한다. 예외 상태의 초기 부분이 완료된 후에 처리는 전용 안전 스택의 리소스를 보전하기 위해 기본 레벨 스택을 사용하여 계속된다. 오버플로가 발생할 수 있었으면, 이 상태는 현재 예외 상태에서 목표 대상이 된 예외가 스택 포인터 선택 값이 현재 스택이 추가 레벨 스택 중 하나임을 지시하는 시간에 이슈잉 되었다는 사실로부터 식별될 수 있으며, 이 경우 스택 오버플로에 대비하기 위해 스택이 실제 오버플로 됐는지 여부에 무관하게 비상 스택 오버플로 처리 루틴이 실행될 수 있다.
도 7의 처리 중 임의의 시간에 예외 제어기(20)에 의해 결정되고 현재 처리를 중단시키기에 충분히 높은 예외 레벨을 가지는 추가 예외 이벤트가 생기면, 도 7의 방법은 재시작되어 이전에 실행된 처리가 100 단계에서 수행된 처리이고 추가의 예외 이벤트가 102 단계에서 일어나는 예외 이벤트가 된다. 예를 들면, 예외 이벤트가 도 7의 108 단계와 100 사이에 일어나고 현재 예외 상태와 동일한 예외 상태에서 목표 대상이 되면, 이것은 스택 포인터 선택 값이 여전히 1로 세팅되어 현재 스택 포인터가 추가 레벨 스택 포인터임을 지시할 것이기 때문에 106 단계와 122-126 단계의 처리를 시발시킬 수 있다.
도 8은 도 7의 방법에 따른 예외 이벤트의 처리의 예를 나타낸다. 예를 들면, 도 8의 1 단계에서 처리는 기본 레벨 스택 포인터(SP0)를 사용하여 기본 레벨 예외 상태(EL0)에서 수행된다. 도 8의 2 단계에서, 추가 레벨 예외 상태(EL2)에서 목표 대상이 된 예외 이벤트가 예외제어기(20)에 의해 감지된다. 이후 시스템은 추가 레벨 예외 상태(EL2)로 스위칭되고 예외 복귀 데이터가 예외 상태(EL2)와 관련된 예외 복귀 레지스터(26, 28)에 저장된다(도 7의 104 단계에 따라). 도 8의 3 단계에서, 스택 포인터 레지스터(30-2)에 저장된 스택 포인터(SP2)가 선택되고 스택 포인터(SP2)에 의해 위치가 지시되는 스택(35-2)을 사용하여 예외 처리 루틴이 처리된다. 도 8의 4 단계에서, 예외 처리 루틴 내에서 스택 포인터 선택 명령이 발생되고, 그에 따라 이것은 현재 스택 포인터를 기본 레벨 스택 포인터 레지스터(30-0)에 저장된 기본 레벨 스택 포인터(SP0)로 스위칭한다(도 7의 114 단계에 따라). 도 8의 5 단계에서 예외 처리 루틴은 기본 레벨 스택 데이터 저장소(35-0)의 사용을 계속한다. 도 8의 6 단계에서 예외 처리 루틴이 종료되고 처리는 예외 상태(EL2)에 대응하는 예외 복귀 레지스터(26, 28)에 저장된 예외 복귀 데이터를 사용하여 기본 레벨 예외 상태(EL0)에서 초기 처리로 복귀된다. 도 8의 7 단계에서 처리는 기본 레벨 스택 포인터(SP0)에 의해 지시된 기본 레벨 스택(35-0)을 사용하여 기본 레벨 예외 상태(EL0)에 계속 유지된다.
도 9는 스택 오버플로 처리 루틴이 필요한 경우, 도 7의 방법에 따라 예외 이벤트 처리시 예외 상태를 스위칭하는 다른 예를 예시한다. 도 9의 1 단계에서 처리는 기본 레벨 스택 포인터(SP0)를 사용하여 기본 레벨 예외 상태(EL0)에서 수행된다. 도 9의 2 단계에서 추가 레벨 예외 상태(EL1)에서 목표 대상이 된 예외 이벤트가 수신된다. 도 7의 104 단계에 따라, 시스템은 추가 레벨 예외 상태(EL1)로 스위칭되고 예외 복귀 데이터가 추가 레벨 예외 상태(EL1)와 관련된 예외 복귀 레지스터(26, 28)에 저장된다. 예외 제어기(20)는 예외 이벤트와 관련된 예외 처리 루틴을 선택하며, 예외 상태(EL1)와 관련된 스택 포인터 레지스터(30-1)에 저장된 추가 레벨 스택 포인터(SP1)를 사용하여 선택된 예외 처리 루틴을 처리한다. 그러나, 예외 처리 루틴의 초기 부분이 완료되기 전에 동일한 예외 상태(EL1)에서 목표 대상이 된 다른 예외 이벤트도 발생한다. 따라서, 도 7의 방법은 재시작되고 도 7의 106 단계와 122 단계에서 현재 예외 상태(EL1)와 타겟 예외 상태(EL1)가 동일하고 스택 포인터 선택 레지스터(42)에 저장된 스택 포인터 선택 값이 현재 스택 포인터가 추가 레벨 스택 포인터(SP1)임을 지시함을 결정한다. 이것은 도 9의 5 단계에서(그리고 도 7의 124 단계에 따라) 도 9의 4 단계에서 발생한 예외 이벤트가 현재 예외 상태와 관련된 스택(35-1)의 오버플로를 지시한 경우 스택 오버플로 처리 루틴이 예방책으로서 실행됨을 의미한다. 스택 오버플로 처리 루틴은 스택(35-1)을 수정하거나 또는 최소한 시스템을 과도한 양의 데이터 손실이 없이 처리 중단될 수 있는 상태로 만들 수 있다. 필요한 경우, 처리는 도 9의 6 단계에서(도 7의 126 단계) 적절한 진단 정보를 제공하면서 종료된다. 다른 한편, 처리가 계속되면, 추가 레벨 스택 포인터(SP1)를 사용하여 도 9의 7 단계에서 추가 레벨 예외 상태(EL1)에서 원래의 예외 처리기가 처리된다. 예외 처리 루틴의 초기 부분이 완료된 후, 도 9의 8 단계에서 현재 스택 포인터는 기본 레벨 스택 포인터(SP0)로 스위칭된다. 예외 처리 루틴의 종료시 도 9의 9 단계에서 처리는 예외 복귀 레지스터(26, 28)로부터 로딩되는 예외 복귀 데이터를 사용하여 기본 레벨 예외 상태로 복귀된다. 이후 처리는 기본 레벨 스택 포인터(SP0)를 사용하여 기본 레벨 예외 상태에 계속 유지된다.
도 10은 사용될 수 있는 가상 장치 구현을 예시한다. 서두에 언급한 실시예들은 관련 기술을 지원하는 특정 처리 하드웨어를 동작시키는 장치 및 방법과 관련하여 본 발명을 구현하고 있지만, 소위 하드웨어 기기의 가상 장치 구현을 제공하는 것도 가능하다. 이들 가상 장치 구현은 통상 가상 장치 프로그램(510)을 지원하는 호스트 운영 시스템(520)을 구동시키는 호스트 프로세서(530) 상에서 구동된다. 통상, 적절한 속도로 실행되는 가상 장치 구현의 제공에는 고출력 프로세서가 필요하지만, 이러한 접근은 예컨대, 호환성 또는 재사용의 이유로 다른 프로세서에 고유한 코드의 작동을 원하는 경우와 같이 소정의 환경에서 정당화될 수 있다. 가상 장치 프로그램(510)은 가장 장치 프로그램(510)에 의해 모델링되는 장치인 실제 하드웨어 기기에 의해 제공될 수 있는 어플리케이션 프로그램 인터페이스와 동일한 어플리케이션 프로그램 인터페이스를 어플리케이션 프로그램(500)에 제공한다. 따라서, 전술한 메모리 액세스의 제어를 포함하는 프로그램 명령은 가상 장치 프로그램(510)을 사용하여 가상 장치 하드웨어와의 상호 작용을 모델링하도록 어플리케이션 프로그램(500) 내로부터 실행될 수 있다.
첨부 도면을 참조로 본 발명의 예시적인 실시예들이 여기에 상세히 설명되었지만, 본 발명은 이들 정확한 실시예에 한정되지 않으며 첨부된 특허청구범위에 의해 정의되는 발명의 범위로부터 벗어나지 않고 당업자에 의해 다양하게 변경 및 변형될 수 있음을 이해하여야 한다.

Claims (17)

  1. 데이터 처리 장치로서, 해당 장치는:
    데이터를 처리하도록 구성되고, 기본 레벨 예외 상태와 적어도 하나의 추가 레벨 예외 상태를 포함하는 복수의 예외 상태를 가지는 처리 회로와;
    예외 이벤트를 처리하는 것으로부터 복귀되도록 상기 처리 회로를 제어하기 위해 예외 복귀 데이터를 저장하는 적어도 하나의 예외 복귀 레지스터로서, 상기 적어도 하나의 추가 레벨 예외 상태 각각은 대응하는 추가 레벨 예외 상태에 있을 때 상기 처리 회로에 의해 전용으로 사용되는 대응하는 예외 복귀 레지스터를 가지는, 그러한 적어도 하나의 예외 복귀 레지스터와;
    상기 처리 회로가 상기 예외 상태 중 임의의 상태에 있을 때 사용되는 포인터로서 기본 레벨 스택 데이터 저장소의 메모리 내의 위치를 지시하는 기본 레벨 스택 포인터를 저장하기 위한 기본 레벨 스택 포인터 레지스터와;
    각각 상기 처리 회로가 대응하는 추가 레벨 예외 상태에 있을 때 전용으로 사용되고 대응하는 추가 레벨 스택 데이터 저장소의 상기 메모리 내의 위치를 지시하는 적어도 하나의 추가 레벨 스택 포인터를 저장하기 위한 적어도 하나의 추가 레벨 스택 포인터 레지스터와;
    현재 스택 포인터를 선택하고, 데이터 처리시 상기 현재 스택 포인터에 의해 지시되는 현재 스택 데이터 저장소를 사용하도록 상기 처리 회로를 제어하도록 구성된 스택 포인터 선택 회로를 포함하고;
    상기 처리 회로가 상기 기본 레벨 예외 상태에 있을 때, 상기 스택 포인터 선택 회로는 상기 기본 레벨 스택 포인터를 상기 현재 스택 포인터로서 선택하도록 구성되고;
    상기 처리 회로가 상기 적어도 하나의 추가 레벨 예외 상태 중 하나에 있을 때, 상기 스택 포인터 선택 회로는 상기 기본 레벨 스택 포인터와 현재의 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터 중 하나를 상기 현재 스택 포인터로서 선택하도록 구성되고, 상기 처리 회로는 상기 현재 스택 포인터가 상기 기본 레벨 스택 포인터 또는 상기 추가 레벨 스택 포인터인지 여부에 무관하게 상기 현재의 추가 레벨 예외 상태에 대응하는 상기 예외 복귀 레지스터를 계속 사용하는 것을 특징으로 하는 데이터 처리 장치.
  2. 제1항에 있어서,
    상기 스택 포인터 선택 회로는 타겟 추가 레벨 예외 상태에 관련된 예외 이벤트에 응답하여 상기 타겟 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터를 상기 현재 스택 포인터로서 선택하는 데이터 처리 장치.
  3. 제2항에 있어서,
    상기 처리 회로는 상기 예외 이벤트에 응답하여 상기 타겟 추가 레벨 예외 상태에서 예외 처리 루틴을 처리하고,
    상기 스택 포인터 선택 회로는 상기 처리 회로가 상기 예외 처리 루틴의 초기 부분을 완료한 후에 상기 현재 스택 포인터를 상기 타겟 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터로부터 상기 기본 레벨 스택 포인터로 스위칭을 행하도록 제어되는 데이터 처리 장치.
  4. 제3항에 있어서,
    상기 예외 처리 루틴은 상기 현재 스택 포인터를 상기 타겟 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터로부터 상기 기본 레벨 스택 포인터로 스위칭하도록 상기 스택 포인터 선택 회로를 제어하는 명령을 포함하는 데이터 처리 장치.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 현재 스택 포인터가 상기 기본 레벨 스택 포인터인지 상기 현재 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터인지 여부를 지시하는 스택 포인터 선택 값을 저장하도록 구성된 스택 포인터 선택 레지스터를 포함하는 데이터 처리 장치.
  6. 제5항에 있어서,
    상기 스택 포인터 선택 회로는 상기 처리 회로가 상기 적어도 하나의 추가 레벨 예외 상태 중 하나에 있을 때 상기 스택 포인터 선택 값에 따라 상기 현재 스택 포인터를 선택하는 데이터 처리 장치.
  7. 제6항에 있어서,
    상기 처리 회로가 상기 적어도 하나의 추가 레벨 예외 상태 중 하나에 있을 때, 상기 스택 포인터 선택 회로는:
    (i) 상기 스택 포인터 선택 값이 제1 값을 가지는 경우 상기 기본 레벨 스택 포인터를 상기 현재 스택 포인터로서 선택하고;
    (ii) 상기 스택 포인터 선택 값이 제2 값을 가지는 경우 상기 현재 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터를 상기 현재 스택 포인터로서 선택하도록 구성된 데이터 처리 장치.
  8. 제6항 또는 제7항에 있어서,
    상기 처리 회로는 스택 포인터 선택 명령에 응답하여 갱신된 스택 포인터 선택 값을 상기 스택 포인터 선택 레지스터에 기록하는 데이터 처리 장치.
  9. 제5항 내지 제8항 중 어느 한 항에 있어서,
    예외 이벤트에 응답하여 상기 예외 이벤트에 대응하는 예외 처리 루틴을 처리하도록 상기 처리 회로를 제어하는 예외 제어기를 포함하며, 적어도 하나의 예외 이벤트는 복수의 대응하는 예외 처리 루틴을 포함하며;
    상기 적어도 하나의 예외 이벤트의 발생시, 상기 예외 제어기는 상기 스택 포인터 선택 값에 따라 상기 처리 회로에 의한 처리를 위해 상기 복수의 대응하는 예외 처리 루틴 중 하나를 선택하는 데이터 처리 장치.
  10. 제9항에 있어서,
    상기 복수의 대응하는 예외 처리 루틴은 상기 적어도 하나의 추가 스택 데이터 저장소의 스택 오버플로의 처리를 위한 스택 오버플로 처리 루틴을 포함하며, 상기 예외 제어기는, 상기 적어도 하나의 예외 이벤트와 관련된 타겟 추가 레벨 예외 상태가 상기 처리 회로의 상기 현재 추가 레벨 예외 상태와 동일하고 상기 스택 포인터 선택 값이 상기 추가 레벨 스택 포인터가 상기 현재 스택 포인터임을 지시할 때, 상기 적어도 하나의 예외 이벤트의 발생시 상기 스택 오버플로 처리 루틴을 처리하도록 상기 처리 회로를 제어하도록 구성된 데이터 처리 장치.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 메모리를 더 포함하는 데이터 처리 장치.
  12. 데이터 처리 장치로서, 해당 장치는:
    데이터를 처리하기 위한 처리 수단으로서, 복수의 예외 상태를 포함하고, 상기 예외 상태는 기본 레벨 예외 상태와 적어도 하나의 추가 레벨 예외 상태를 포함하는, 데이터 처리 수단과;
    예외 이벤트를 처리하는 것으로부터 복귀되도록 상기 처리 수단을 제어하기 위해 예외 복귀 데이터를 저장하기 위한 적어도 하나의 예외 복귀 레지스터 수단으로서, 상기 적어도 하나의 추가 레벨 예외 상태 각각은 대응하는 추가 레벨 예외 상태에 있을 때 상기 처리 수단에 의해 전용으로 사용되는 대응하는 예외 복귀 레지스터 수단을 가지는, 그러한 적어도 하나의 예외 복귀 레지스터 수단과;
    상기 처리 수단이 상기 예외 상태 중 임의의 상태에 있을 때 사용되는 포인터로서 기본 레벨 스택 데이터 저장 수단의 메모리 수단 내의 위치를 지시하는 기본 레벨 스택 포인터를 저장하기 위한 기본 레벨 스택 포인터 레지스터 수단과;
    각각 상기 처리 수단이 대응하는 추가 레벨 예외 상태에 있을 때 전용으로 사용되고 대응하는 추가 레벨 스택 데이터 저장 수단의 상기 메모리 수단 내의 위치를 지시하는 적어도 하나의 추가 레벨 스택 포인터를 저장하기 위한 적어도 하나의 추가 레벨 스택 포인터 레지스터 수단과;
    현재 스택 포인터를 선택하고, 데이터 처리시 상기 현재 스택 포인터에 의해 지시되는 현재 스택 데이터 저장 수단을 사용하도록 상기 처리 수단을 제어하기 위한 스택 포인터 선택 수단을 포함하고;
    상기 처리 수단이 상기 기본 레벨 예외 상태에 있을 때, 상기 스택 포인터 선택 수단은 상기 기본 레벨 스택 포인터를 상기 현재 스택 포인터로서 선택하도록 구성되고;
    상기 처리 수단이 상기 적어도 하나의 추가 레벨 예외 상태 중 하나에 있을 때, 상기 스택 포인터 선택 수단은 상기 기본 레벨 스택 포인터와 현재의 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터 중 하나를 상기 현재 스택 포인터로서 선택하도록 구성되고, 상기 처리 수단은 상기 현재 스택 포인터가 상기 기본 레벨 스택 포인터 또는 상기 추가 레벨 스택 포인터인지 여부에 무관하게 상기 현재의 추가 레벨 예외 상태에 대응하는 상기 예외 복귀 레지스터 수단을 계속 사용하는 것을 특징으로 하는 데이터 처리 장치.
  13. 데이터 처리 방법으로서, 해당 방법은:
    기본 레벨 예외 상태와 적어도 하나의 추가 레벨 예외 상태를 포함하는 복수의 예외 상태에서 데이터를 처리하는 단계와;
    예외 이벤트에 응답하여, 상기 예외 이벤트를 처리하는 것으로부터 복귀되도록 제어를 행하기 위해 예외 복귀 데이터를 적어도 하나의 예외 복귀 레지스터에 저장하는 단계로서, 상기 적어도 하나의 추가 레벨 예외 상태 각각은 상기 대응하는 추가 레벨 예외 상태에서 처리시 전용으로 사용되는 대응하는 예외 복귀 레지스터를 가지는, 그러한 예외 복귀 데이터 저장 단계와;
    상기 처리 단계가 상기 예외 상태 중 임의의 상태에 있을 때 사용되는 포인터로서 기본 레벨 스택 데이터 저장소의 메모리 내의 위치를 지시하는 기본 레벨 스택 포인터를 저장하는 단계와;
    상기 처리 단계가 대응하는 추가 레벨 예외 상태에 있을 때 전용으로 사용되고 대응하는 추가 레벨 스택 데이터 저장소의 상기 메모리 내의 위치를 지시하는 적어도 하나의 추가 레벨 스택 포인터를 저장하는 단계와;
    현재 스택 포인터를 선택하고, 데이터 처리시 상기 현재 스택 포인터에 의해 지시되는 현재 스택 데이터 저장소를 사용하도록 상기 처리 단계를 제어하는 단계를 포함하고;
    상기 처리 단계는 상기 기본 레벨 예외 상태에서 데이터를 처리하고, 상기 선택 단계는 상기 기본 레벨 스택 포인터를 상기 현재 스택 포인터로서 선택하며;
    상기 처리 단계가 상기 적어도 하나의 추가 레벨 예외 상태 중 하나에 있을 때, 상기 선택 단계는 상기 기본 레벨 스택 포인터와 현재의 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터 중 하나를 상기 현재 스택 포인터로서 선택하며, 상기 처리 단계는 상기 현재 스택 포인터가 상기 기본 레벨 스택 포인터 또는 상기 추가 레벨 스택 포인터인지 여부에 무관하게 상기 현재의 추가 레벨 예외 상태에 대응하는 상기 예외 복귀 레지스터를 계속 사용하는 것을 특징으로 하는 데이터 처리 방법.
  14. 데이터 처리 장치로서, 해당 장치는:
    기본 레벨 예외 상태와 적어도 하나의 추가 레벨 예외 상태를 포함하는 복수의 예외 상태 중 하나에서 데이터를 처리하도록 구성된 처리 회로와;
    기본 레벨 스택 데이터 저장소의 메모리 내의 위치를 지시하는 기본 레벨 스택 포인터를 저장하기 위한 기본 레벨 스택 포인터 레지스터와;
    적어도 하나의 추가 레벨 스택 데이터 저장소의 상기 메모리 내의 위치를 지시하는 적어도 하나의 추가 레벨 스택 포인터를 저장하기 위한 적어도 하나의 추가 레벨 스택 포인터 레지스터로서, 상기 적어도 하나의 추가 레벨 예외 상태는 각각 대응하는 추가 레벨 스택 포인터를 가지는, 그러한 적어도 하나의 추가 레벨 스택 포인터 레지스터와;
    타겟 추가 레벨 예외 상태와 관련된 예외 이벤트에 응답하여, 상기 타겟 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터에 의해 지시되는 추가 레벨 스택 데이터 저장소를 사용하여 상기 타겟 추가 레벨 예외 상태에서 예외 처리 루틴을 처리하도록 상기 처리 회로를 작동시키는 예외 제어기를 포함하고;
    상기 처리 회로는 상기 예외 처리 루틴의 초기 부분의 처리 후에 상기 기본 레벨 스택 포인터에 의해 지시되는 상기 기본 레벨 스택 데이터 저장소를 사용하여 상기 타겟 추가 레벨 예외 상태에서 상기 예외 처리 루틴의 나머지 부분을 처리하도록 구성된 것을 특징으로 하는 데이터 처리 장치.
  15. 데이터 처리 장치로서, 해당 장치는:
    기본 레벨 예외 상태와 적어도 하나의 추가 레벨 예외 상태를 포함하는 복수의 예외 상태 중 하나에서 데이터를 처리하기 위한 처리 수단과;
    기본 레벨 스택 데이터 저장 수단의 메모리 수단 내의 위치를 지시하는 기본 레벨 스택 포인터를 저장하기 위한 기본 레벨 스택 포인터 레지스터 수단과;
    적어도 하나의 추가 레벨 스택 데이터 저장 수단의 상기 메모리 수단 내의 위치를 지시하는 적어도 하나의 추가 레벨 스택 포인터를 저장하기 위한 적어도 하나의 추가 레벨 스택 포인터 레지스터 수단으로서, 상기 적어도 하나의 추가 레벨 예외 상태는 각각 대응하는 추가 레벨 스택 포인터를 가지는, 그러한 적어도 하나의 추가 레벨 스택 포인터 레지스터 수단과;
    타겟 추가 레벨 예외 상태와 관련된 예외 이벤트에 응답하여, 상기 타겟 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터에 의해 지시되는 추가 레벨 스택 데이터 저장 수단을 사용하여 상기 타겟 추가 레벨 예외 상태에서 예외 처리 루틴의 처리를 시발시키기 위한 예외 제어 수단을 포함하고;
    상기 처리 수단은 상기 예외 처리 루틴의 초기 부분의 처리 후에 상기 기본 레벨 스택 포인터에 의해 지시되는 상기 기본 레벨 스택 데이터 저장 수단을 사용하여 상기 타겟 추가 레벨 예외 상태에서 상기 예외 처리 루틴의 나머지 부분을 처리하도록 구성된 것을 특징으로 하는 데이터 처리 장치.
  16. 데이터 처리 방법으로서, 해당 방법은:
    기본 레벨 예외 상태와 적어도 하나의 추가 레벨 예외 상태를 포함하는 복수의 예외 상태 중 하나에서 데이터를 처리하는 단계와;
    기본 레벨 스택 데이터 저장소의 메모리 내의 위치를 지시하는 기본 레벨 스택 포인터를 저장하는 단계와;
    적어도 하나의 추가 레벨 스택 데이터 저장소의 상기 메모리 내의 위치를 지시하는 적어도 하나의 추가 레벨 스택 포인터를 저장하는 단계로서, 상기 적어도 하나의 추가 레벨 예외 상태는 각각 대응하는 추가 레벨 스택 포인터를 가지는, 그러한 적어도 하나의 추가 레벨 스택 포인터 저장 단계와;
    타겟 추가 레벨 예외 상태와 관련된 예외 이벤트에 응답하여, 상기 타겟 추가 레벨 예외 상태에 대응하는 상기 추가 레벨 스택 포인터에 의해 지시되는 추가 레벨 스택 데이터 저장소를 사용하여 상기 타겟 추가 레벨 예외 상태에서 예외 처리 루틴의 처리를 시발시키는 단계와;
    상기 예외 처리 루틴의 초기 부분의 처리 후에 상기 기본 레벨 스택 포인터에 의해 지시되는 상기 기본 레벨 스택 데이터 저장소를 사용하여 상기 타겟 추가 레벨 예외 상태에서 상기 예외 처리 루틴의 나머지 부분을 처리하는 단계를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  17. 데이터 처리 장치에 대해 실행되는 컴퓨터 프로그램에 의해 제공되는 가상 장치로서, 상기 가상 장치는 제1항 내지 제11항 중 어느 한 항의 장치에 대응하는 명령 실행 환경을 제공하는 것을 특징으로 하는 가상 장치.
KR1020127026070A 2010-03-15 2011-02-28 예외 이벤트 처리 장치 및 방법 KR101782313B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1004303.2 2010-03-15
GB1004303.2A GB2478733B (en) 2010-03-15 2010-03-15 Apparatus and method for handling exception events
PCT/GB2011/050389 WO2011114124A1 (en) 2010-03-15 2011-02-28 Apparatus and method for handling exception events

Publications (2)

Publication Number Publication Date
KR20130012126A true KR20130012126A (ko) 2013-02-01
KR101782313B1 KR101782313B1 (ko) 2017-10-23

Family

ID=42261618

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127026070A KR101782313B1 (ko) 2010-03-15 2011-02-28 예외 이벤트 처리 장치 및 방법

Country Status (10)

Country Link
US (3) US8677107B2 (ko)
EP (1) EP2548115B1 (ko)
JP (1) JP5680679B2 (ko)
KR (1) KR101782313B1 (ko)
CN (1) CN102804134B (ko)
GB (1) GB2478733B (ko)
IL (1) IL221068A (ko)
MY (1) MY155863A (ko)
TW (1) TWI478052B (ko)
WO (1) WO2011114124A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170091641A (ko) * 2014-11-28 2017-08-09 에이알엠 리미티드 데이터 처리 장치에서의 시스템 에러 핸들링
KR20200005568A (ko) * 2017-05-05 2020-01-15 에이알엠 리미티드 자격들의 이용을 관리하는 장치 및 방법

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2478733B (en) 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events
US8448022B1 (en) * 2010-10-26 2013-05-21 Vmware, Inc. Fault recovery to a call stack position stored in thread local storage
GB2501343A (en) * 2012-02-08 2013-10-23 Advanced Risc Mach Ltd Data processing apparatus and method using secure domain and less secure domain
US10210349B2 (en) 2012-02-08 2019-02-19 Arm Limited Data processing apparatus and method using secure domain and less secure domain
US9213828B2 (en) 2012-02-08 2015-12-15 Arm Limited Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains
US9477834B2 (en) * 2012-02-08 2016-10-25 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
US9116711B2 (en) 2012-02-08 2015-08-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
US9202071B2 (en) 2012-02-08 2015-12-01 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
US9672164B2 (en) * 2012-05-31 2017-06-06 Nxp Usa, Inc. Methods and systems for transitioning between a user state and a supervisor state based on a next instruction fetch address
US9513924B2 (en) * 2013-06-28 2016-12-06 Globalfoundries Inc. Predictor data structure for use in pipelined processing
US9619230B2 (en) 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
US10176329B2 (en) * 2015-08-11 2019-01-08 Symantec Corporation Systems and methods for detecting unknown vulnerabilities in computing processes
GB2547912B (en) * 2016-03-02 2019-01-30 Advanced Risc Mach Ltd Register access control
GB2549774B (en) * 2016-04-28 2019-04-10 Imagination Tech Ltd Method for handling exceptions in exception-driven system
GB2573041B (en) * 2016-04-28 2021-01-06 Imagination Tech Ltd Method for handling exceptions in exception-driven system
US10114573B1 (en) * 2017-04-26 2018-10-30 International Business Machines Corporation Dynamic reduction of stack-overflow errors in a recursive data-serialization algorithm
GB2563885B (en) * 2017-06-28 2019-10-23 Advanced Risc Mach Ltd Interrupting export of memory regions
GB2563887B (en) * 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Masking of architectural state associated with a realm
GB2577729C (en) * 2018-10-04 2021-10-27 Advanced Risc Mach Ltd Processor with Register Bank having Banked Versions of a Register each Associated with an Operating State of the Processor
GB2579617B (en) * 2018-12-06 2021-01-27 Advanced Risc Mach Ltd An apparatus and method for handling exception causing events
JP7131486B2 (ja) * 2019-06-03 2022-09-06 オムロン株式会社 制御システム、プログラマブルロジックコントローラおよび情報処理方法
CN110515766B (zh) * 2019-08-01 2023-01-20 深圳供电局有限公司 一种基于云的电力灾备数据安全防护系统、设备及介质
US11442739B2 (en) 2019-09-16 2022-09-13 International Business Machines Carporation Exception handling
US11216280B2 (en) * 2019-11-26 2022-01-04 Arm Limited Exception interception

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4488227A (en) * 1982-12-03 1984-12-11 Honeywell Information Systems Inc. Program counter stacking method and apparatus for nested subroutines and interrupts
US4575817A (en) * 1983-06-27 1986-03-11 International Business Machines Corporation Switching of programming routine supporting storage stacks
US4866599A (en) * 1985-06-27 1989-09-12 Bull Hn Information Systems Inc. Call instruction, return instruction and trap procedure for ring crossing architecture
JPH03163630A (ja) * 1989-11-21 1991-07-15 Mitsubishi Electric Corp プロセッサのスタック制御方法
US5386563A (en) * 1992-10-13 1995-01-31 Advanced Risc Machines Limited Register substitution during exception processing
US5634046A (en) * 1994-09-30 1997-05-27 Microsoft Corporation General purpose use of a stack pointer register
US5673426A (en) * 1995-02-14 1997-09-30 Hal Computer Systems, Inc. Processor structure and method for tracking floating-point exceptions
US5761491A (en) * 1996-04-15 1998-06-02 Motorola Inc. Data processing system and method for storing and restoring a stack pointer
US6304963B1 (en) * 1998-05-14 2001-10-16 Arm Limited Handling exceptions occuring during processing of vector instructions
US6006323A (en) * 1998-05-20 1999-12-21 Industrial Technology Research Institute Intelligent multiple stack management unit
US7941647B2 (en) * 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6490509B1 (en) * 1999-09-17 2002-12-03 Keihin Corporation Car controlling unit using a multitasking system
US6665793B1 (en) * 1999-12-28 2003-12-16 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for managing access to out-of-frame Registers
US6757771B2 (en) * 2000-08-09 2004-06-29 Advanced Micro Devices, Inc. Stack switching mechanism in a computer system
GB2369464B (en) * 2000-11-27 2005-01-05 Advanced Risc Mach Ltd A data processing apparatus and method for saving return state
US7451324B2 (en) * 2002-05-31 2008-11-11 Advanced Micro Devices, Inc. Secure execution mode exceptions
US7797681B2 (en) * 2006-05-11 2010-09-14 Arm Limited Stack memory selection upon exception in a data processing system
US20090282220A1 (en) * 2008-05-08 2009-11-12 Mips Technologies, Inc. Microprocessor with Compact Instruction Set Architecture
GB2461848B (en) * 2008-07-10 2013-01-30 Cambridge Consultants Data processing apparatus having a number of operating modes
TWI368165B (en) * 2008-08-13 2012-07-11 Faraday Tech Corp Processor and method for recovering global history shift register and return address stack thereof
GB2478733B (en) 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170091641A (ko) * 2014-11-28 2017-08-09 에이알엠 리미티드 데이터 처리 장치에서의 시스템 에러 핸들링
KR20200005568A (ko) * 2017-05-05 2020-01-15 에이알엠 리미티드 자격들의 이용을 관리하는 장치 및 방법

Also Published As

Publication number Publication date
JP5680679B2 (ja) 2015-03-04
CN102804134A (zh) 2012-11-28
KR101782313B1 (ko) 2017-10-23
GB2478733B (en) 2013-08-14
GB201004303D0 (en) 2010-04-28
US8677107B2 (en) 2014-03-18
US9727343B2 (en) 2017-08-08
TWI478052B (zh) 2015-03-21
CN102804134B (zh) 2015-02-25
WO2011114124A1 (en) 2011-09-22
IL221068A0 (en) 2012-09-24
EP2548115B1 (en) 2016-10-12
US20140122849A1 (en) 2014-05-01
TW201203105A (en) 2012-01-16
GB2478733A (en) 2011-09-21
US20150301833A1 (en) 2015-10-22
US9104425B2 (en) 2015-08-11
MY155863A (en) 2015-12-15
EP2548115A1 (en) 2013-01-23
JP2013522750A (ja) 2013-06-13
US20110225402A1 (en) 2011-09-15
IL221068A (en) 2015-07-30

Similar Documents

Publication Publication Date Title
KR20130012126A (ko) 예외 이벤트 처리 장치 및 방법
US5701493A (en) Exception handling method and apparatus in data processing systems
JP6185487B2 (ja) ドメイン間で切り替わる際のセキュアなデータの非セキュアなアクセスから隔離された状態での維持
US5634046A (en) General purpose use of a stack pointer register
KR100976280B1 (ko) 하드웨어 지원을 갖는 다중 프로세서 및 다중 스레드 안전 메시지 큐
US7590990B2 (en) Computer system
EP1820100B1 (en) Efficient switching between prioritized tasks
US7228543B2 (en) Technique for reaching consistent state in a multi-threaded data processing system
US20050138257A1 (en) Interrupt masking control
KR20210060443A (ko) 스택 포인터의 검증
JP2007035066A (ja) マルチos構成方法
US7890740B2 (en) Processor comprising a first and a second mode of operation and method of operating the same
JPH09198257A (ja) プログラム実行方法およびこの方法を用いたプログラム実行装置
US9619277B2 (en) Computer with plurality of processors sharing process queue, and process dispatch processing method
CN108701031B (zh) 寄存器访问控制
GB2500844A (en) Selecting either base level or further level stack when processing data in current further level exception state above base level
KR100329780B1 (ko) 인터럽트 응답 시간을 줄인 인터럽트 처리 장치
CN118132231A (zh) 基于虚拟双核的系统任务调度方法、装置、设备及介质
KR20030068809A (ko) 에이알엠7 계열 마이크로 컨트롤러에서의 콘텍스트 스위치방법
JP2004038995A (ja) マルチos構成方法
JPS63276635A (ja) 割り込み制御方法

Legal Events

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