KR20160014647A - 인터럽트 핸들링 방법 및 장치 - Google Patents

인터럽트 핸들링 방법 및 장치 Download PDF

Info

Publication number
KR20160014647A
KR20160014647A KR1020157035080A KR20157035080A KR20160014647A KR 20160014647 A KR20160014647 A KR 20160014647A KR 1020157035080 A KR1020157035080 A KR 1020157035080A KR 20157035080 A KR20157035080 A KR 20157035080A KR 20160014647 A KR20160014647 A KR 20160014647A
Authority
KR
South Korea
Prior art keywords
interrupt
level
execution
input
interrupt handling
Prior art date
Application number
KR1020157035080A
Other languages
English (en)
Other versions
KR102204501B1 (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 KR20160014647A publication Critical patent/KR20160014647A/ko
Application granted granted Critical
Publication of KR102204501B1 publication Critical patent/KR102204501B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/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
    • G06F9/4818Priority circuits therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microcomputers (AREA)
  • Bus Control (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

데이터 처리 장치는, 입력 인터럽트의 핸들링을 제어하는 인터럽트 핸들링 레지스터의 일 세트로 이루어진 복수의 시스템 레지스터를 구비한다. 또한, 이러한 데이터 처리 장치는, 복수의 실행 레벨에서 소프트웨어를 실행하도록 구성된 처리 회로소자와, 상기 입력 인터럽트를 상기 복수의 실행 레벨 중 하나에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어에 발송하도록 구성된 인터럽트 제어기 회로소자와, 상기 입력 인터럽트가 발송되는 상기 복수의 실행 레벨 중 상기 하나에 따라 상기 인터럽트 핸들링 레지스터의 적어도 일부에의 액세스를 동적으로 제어하도록 구성된 레지스터 액세스 제어 회로소자를 구비한다. 액세스는, 특정 실행 레벨에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어가 상기 입력 인터럽트에 필요한 상기 인터럽트 핸들링 레지스터의 적어도 일부에 액세스하도록 제어된다. 또한, 그 특정 실행 레벨에서 작동하도록 구성된 상기 인터럽트 핸들링 소프트웨어는, 보다 많은 특권이 있는 실행 레벨에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어에 발송된 다른 입력 인터럽트를 처리하기 위한 인터럽트 핸들링 레지스터에 액세스하지 않는다. 따라서, 상기 인터럽트 핸들링 소프트웨어의 유연성은, 이러한 데이터 처리장치의 보안성을 유지하면서 증대된다.

Description

인터럽트 핸들링 방법 및 장치{A METHOD AND APPARATUS FOR INTERRUPT HANDLING}
본 발명은, 데이터 처리 시스템에서의 인터럽트 핸들링 분야에 관한 것이다.
하이퍼바이저 시스템은 다양한 서로 다른 실행 레벨로 작동하는 것이 알려져 있다. 그 실행 레벨은 계층으로 구성되어 있고, 이때의 상위 실행 레벨은 하위 실행 레벨보다 데이터 처리 시스템에 아주 많은 특권을 제공한다. 일반적으로, 특정 실행 레벨은, 하위 실행레벨이 가능한 어떠한 액션도 행하고 어떠한 데이터에도 액세스할 수 있다.
가상화 시스템은 4개의 실행 레벨을 사용하여 작동하여도 된다. 유저 소프트웨어는 최저 및 최소 특권 레벨, EL0에서 실행하여도 된다. 이 소프트웨어는, 일당 작업으로 유저에 의해 작동하는 애플리케이션들과, 정확히 실행하기 위해 어떠한 특별한 특권도 필요로 하지 않는 소프트웨어를 포함하기도 한다.
다음 최고 레벨 EL1에서는, 운영체계가 실행할 수도 있다. 일반적으로, 운영체계는, EL0에서 작동하는 다수의 유저 애플리케이션을 관리하여 유저 애플리케이션용 하드웨어 자원에 액세스 가능하게 한다. 따라서, EL1내에서 실행하는 운영체계의 특권 레벨은, EL0에서 작동하는 상기 유저 애플리케이션의 작용을 액세스하여 제어할 수 있는 것처럼 EL0에 대해 증가한다.
하이퍼바이저는 EL2에서 작동하여도 된다. 하이퍼바이저는, 그 수, 작용, 및 EL1에서 실행하는 다수의 운영체계의 자원 관리를 제어하는 것이 일반적이다. 복수의 운영체계가 하드웨어 자원에 액세스를 완료하기도 하므로, 상기 하이퍼바이저는 그 액세스 요구들을 허가나 거부할 수 있어야 한다. 이에 따라, 하이퍼바이저는, EL1에서 작동하는 운영체계와 비교하여 상기 상위 특권 레벨 EL2에서 작동한다.
데이터 처리 시스템은, 다양한 실행 모드, 이를테면 보안 및 비보안 상태에서 작동하는 것도 알려져 있다. 보안 상태와 비보안 상태 양쪽의 상태에서 동작할 수 있는 데이터 처리 시스템을 제공함으로써, 보안동작의 실행을 비보안 동작인 것들로부터 분리하는 것이 가능하다. 그 결과로서, 비보안일 것이라고 생각될 수도 있는 그 밖의 데이터와 동작으로부터 보안 데이터와 보안 동작을 격리할 수 있다. 따라서, 상기 시스템의 보안성이 유지된다. 또한, 하이퍼바이저 시스템은, 보안 모드와 비보안 모드에서 작동하여도 된다. 이들의 경우에, 각 실행 레벨은, 상기 보안 모드와 비보안 모드의 한쪽이나 어느 한쪽에서 작동하여도 된다.
보안 모드와 비보안 모드간의 전환은, 동작의 비보안 모드에서 실행하는 소프트웨어가 동작의 보안 모드에 속하는 데이터를 액세스할 수 없고, 일부의 경우에는 반대로 하는 것을 보장하도록 최고 보안 및 특권을 가진 실행 레벨에서 처리되어야 한다. 이렇게 하여, EL3 레벨은, 상기 전환을 제어하는 보안 모니터가 작동하도록 구성되어도 된다. 이 EL3 레벨은, 모드의 변경이 요구될 때를 판정하여 이 요구된 실행 모드의 변경을 실시할 책임을 갖는 최고 특권 레벨이다.
다수의 서로 다른 실행레벨에서 작동하는 시스템에 있어서 인터럽트를 핸들링하는 경우, 그 인터럽트의 핸들링 동안에 사용되는 특정 데이터 기억 소자를 격리하는 것이 필요하다. 예를 들면, 시스템 레지스터의 서브세트는, 실행 레벨 EL1이상에서 작동하는 소프트웨어만이 레지스터의 제1 서브세트에 액세스할 수 있고, 실행 레벨 EL2이상에서 작동하는 소프트웨어만이 레지스터의 제2 서브세트에 액세스할 수 있고, 실행 레벨 EL3에서 실행하는 소프트웨어만이 레지스터의 제3 서브세트에 액세스할 수 있도록, 분할되어도 된다. 이 분할은, 필요한 경우, 동작을 위해 보안 모드와 비보안 모드 동안에 실시되어도 된다. 이러한 격리는, 하위 실행 레벨에서 작동하는 소프트웨어가 방해할 수 없거나, 상위 실행 레벨에서 작동하는 소프트웨어의 실행에 영향을 미치는 것을 보장한다.
본 발명의 제1 측면에 따른 데이터 처리 장치는, 입력 인터럽트의 핸들링을 제어하는 인터럽트 핸들링 레지스터의 일 세트로 이루어진 복수의 시스템 레지스터; 복수의 실행 레벨에서 소프트웨어를 실행하도록 구성된 처리 회로소자; 상기 입력 인터럽트를 상기 복수의 실행 레벨 중 하나에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어에 발송하도록 구성된 인터럽트 제어기 회로소자; 상기 실행 레벨에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어가 상기 입력 인터럽트를 처리하는 상기 인터럽트 핸들링 레지스터의 적어도 일부에 액세스하도록, 또 상기 실행 레벨에서 작동하도록 구성된 상기 인터럽트 핸들링 소프트웨어가 보다 많은 특권이 있는 실행 레벨에서 작동된 인터럽트 핸들링 소프트웨어에 발송된 제2 입력 인터럽트를 처리하기 위한 인터럽트 핸들링 레지스터에 액세스하지 못하도록, 상기 입력 인터럽트가 발송되는 상기 복수의 실행 레벨 중 상기 하나에 따라 상기 인터럽트 핸들링 레지스터의 적어도 일부에의 액세스를 동적으로 제어하도록 구성된 레지스터 액세스 제어 회로소자를 구비한다.
상기에 따라, 상기 인터럽트 핸들링 레지스터의 일 세트에의 액세스는, 입력 인터럽트가 발송되는 특정 실행 레벨에 따라 동적으로 제어된다. 이것은, 특정의 정적으로 규정된 레지스터의 서브세트와, 임의의 하위 보다 적은 특권이 있는 실행 레벨에서 사용하기 위해 규정된 레지스터들에 특정 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어가 액세스 가능할 수 있을 뿐인 공지된 시스템에 대한 것이다. 이 액세스에 관한 제한은, 낮은 특권 레벨에서 작동하는 소프트웨어가 상위의 특권 레벨에서 작동하는 소프트웨어를 방해하지 못하도록 제공되었다. 이것의 결과는, 낮은 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 높은 실행 레벨을 위한 것인 인터럽트가 발송되었을 경우, 그 인터럽트가 통상 처리될 수 없었다는 것이었다. 이를, 본 발명의 실시예들은, 인터럽트의 목적지의 실행 레벨에 따라 동적으로 제어되는 상기 인터럽트 핸들링 레지스터의 세트에의 액세스를 허가함으로써 해결한다.
상술한 시스템에서, 특정 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어는, 특정 입력 인터럽트가 처리될 수 있도록 동적으로 변경된 인터럽트 핸들링 레지스터내의 레지스터들의 세트에 액세스할 수 있다. 따라서, 유연성의 정도는, 임의의 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어가 입력 인터럽트를 처리할 수 있으므로, 달성된다. 또한, 각 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어가 입력 인터럽트에 관한 시스템 레지스터에 액세스할 뿐이므로, 상기 시스템의 보안성이 유지된다. 이 시스템의 다른 이점은, 특정 인터럽트를 처리하기 위해 특정 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 대한 요구사항이 없으므로, 소프트웨어를 보다 많이 휴대 가능할 수 있는 것이다. 대신에, 어떠한 인터럽트도, 서로 다른 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 발송될 수 있고, 여기서 그 인터럽트는 그래도 처리될 수 있다. 상기의 또 다른 이점은, 필요에 따라 비보안 소프트웨어, 보안 운영체계, 또는 보안 모니터 중 어느 하나에 분명히 인터럽트들을 발송하는 것이 가능하다는 것이다. 따라서, 이러한 시스템의 유연성은, 주어진 인터럽트를 처리하기 위해 이용 가능한 선택사항의 수를 증가시켜서 향상된다.
일부의 실시예에서, 복수의 실행 레벨은 EL0, EL1, EL2 및 EL3으로 이루어진다. EL0은 유저가 소프트웨어를 실행하는 실행 레벨이다. EL1은 게스트 운영체계가 실행하는 상위 특권 실행 레벨이다. EL2는 EL2보다 많은 특권이 있는 하이퍼바이저가 실행하는 실행 레벨이다. EL3은 최고의 특권 실행 레벨이고, 여기서, 보안 모니터가 실행된다. 이때, 상기 게스트 운영체계, 하이퍼바이저 소프트웨어 및 보안 모니터 각각은 인터럽트 핸들링 소프트웨어를 포함하기도 한다.
일부의 실시예에서, 인터럽트 핸들링 레지스터에 주어진 액세스는, 입력 인터럽트가 발송되는 실행 레벨 중 어느 실행 레벨인지에 의존할 뿐이다.
일부의 실시예에서, 데이터 처리 회로소자는, 상기 처리 회로소자의 현재의 실행 모드를 검출하는 프로세서 모드 검출 회로소자와, 의도된 실행 모드와 의도된 실행 레벨에서 작동하는 특정 인터럽트 핸들러를 위한 것인 입력 인터럽트를 수신하는 입력 회로소자와, 특정 실행 레벨에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어에 입력 인터럽트를 발송하는 발송(routing) 회로소자를 더 구비하기도 한다.
상기 발송 회로소자가 상기 처리 회로소자의 현재의 실행 모드와 대응하는 의도된 실행 모드를 갖는 입력 인터럽트를 수신하는 경우, 상기 입력 인터럽트는 상기 의도된 실행 레벨에서 작동하는 상기 인터럽트 핸들링 소프트웨어에 발송된다. 이와는 달리, 상기 발송 회로소자가, 상기 처리 회로소자의 현재의 실행 모드와 대응하지 않는 의도된 실행 모드를 갖는 입력 인터럽트를 수신하는 경우, 상기 발송 회로소자는, 상기 의도된 실행 레벨보다 많은 특권 실행 레벨에서 작동하도록 구성되고 가장 많은 특권 실행 레벨이어도 되는 인터럽트 핸들링 소프트웨어에, 입력 인터럽트를 발송한다. 일부의 실시예에서, 상기 입력 인터럽트는, 보안 모니터가 작동하는 동일한 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 발송되어도 된다.
현재 및 의도된 실행 모드는, 각각 보안 모드나 비보안 모드이어도 된다. 보안 모드에서 작동할 때, 상기 처리 회로소자는, 상기 비보안 모드에서 작동하는 상기 처리 회로소자에 액세스 불가능한 보안 데이터에 액세스한다. 또한, 일부의 실시예에서, 상기 처리 회로소자가 비보안 모드에서 작동할 때, 보안 모드에서 작동하는 상기 처리 회로소자에 액세스 불가능한 비보안 데이터에 액세스한다.
일부의 실시예에서, 상기 인터럽트 핸들링 레지스터는, 긍정 응답(acknowledgement) 레지스터를 구비한다. 이 긍정 응답 레지스터는, 인터럽트가 진행중인 것을 나타낸다. 또한, 긍정 응답 레지스터는, 수신된 입력 인터럽트가 현재의 실행 모드에 대응하지 않는 의도된 실행 모드를 갖는 것을 나타내기 위해 소정의 값을 되돌린다. 그 결과, 상기 긍정 응답 레지스터의 상기 소정의 값은, 상기 입력 인터럽트를 위해 원래 의도된 것과 다른 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송해야 하는 것을 나타내는데 사용되어도 된다. 일부의 실시예에서, 상기 긍정 응답 레지스터가 상기 소정의 값을 되돌릴 때, 소정의 보다 많은 특권이 있는 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어는, 상기 처리 회로소자의 실행 모드를 변경하고 나서, 상기 발송 회로소자가 입력 인터럽트를 상기 의도된 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 발송하게 하도록 구성되고, 이때의 이 인터럽트가 다시 취해지고, 이때 인터럽트는 완전히 처리되어 완료된다.
다른 실시예에서, 소정의 값을 되돌리는 상기 긍정 응답 레지스터에 응답하여, 소정의 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어는, 입력 인터럽트 자체를 직접 처리하여도 된다. 이것은, 예를 들면, 의도된 인터럽트 핸들링 소프트웨어가 입력 인터럽트를 처리할 수 있도록 상기 프로세서의 작동 모드를 전환하는 것보다 실행 레벨 EL3에서 작동하는 인터럽트 핸들링 소프트웨어가 입력 인터럽트를 처리하는 것이 효율적인 경우에 발생하기도 한다.
입력 인터럽트를 발송하는 프로세스는, 인터럽트 예외의 발생을 포함하고 나서, 그 인터럽트 핸들링 소프트웨어에 보내진다. 이들 인터럽트 예외는, 상기 시스템에 대해 내재적이고, 상기 인터럽트 제어기에 의해, 상기 프로세서에 주어진 클래스의 인터럽트 발생을 나타내는데 발생된다. 인터럽트 예외의 예들로서는, FIQ와 IRQ가 있다.
일부의 실시예에서, 상기 데이터 처리장치는, 가상 인터럽트들을 발생한다. 인터럽트 제어기 회로소자는, 제1 설정과 제2 설정간에 전환 가능하여도 된다. 상기 제1 설정에서는, 입력 인터럽트를, 상기 의도된 실행 레벨보다 많은 특권이 있는 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 발송한다. 그리고, 가상 인터럽트는, 상기 보다 많은 특권이 있는 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 의해 발생되어, 상기 의도된 (하위) 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 보내진다. 상기 제2 설정에 있어서, 상기 인터럽트 제어기는, 상기 의도된(하위) 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 입력 인터럽트를 발송한다. 양쪽의 설정에 있어서, 상기 하위 레벨 인터럽트 핸들링 소프트웨어는, 상기 입력 인터럽트를 처리 가능하다. 그러나, 제2 설정에 있어서, 상기 입력 인터럽트는, 상기 보다 많은 특권이 있는 인터럽트 핸들링 소프트웨어가 가상 인터럽트를 발생할 필요가 없이 상기 의도된 인터럽트 핸들링 소프트웨어에 직접 보내진다. 이에 따라, 상기 상위 (보다 많은 특권이 있는) 인터럽트 핸들링 소프트웨어의 처리 부하가 감소된다. 이들의 실시예 중 일부에서, 상기 보다 많은 특권이 있는 레벨은, 하이퍼바이저가 작동하는 EL2이어도 된다. 이들 실시예 중 일부에 있어서, 상기 보다 많은 특권이 있는 레벨에서 작동하는 인터럽트 핸들링 소프트웨어와 보다 적은 특권이 있는 레벨에서 작동하는 인터럽트 핸들링 소프트웨어 모두는, 이전에 기재된 것처럼, 비보안 동작 모드에서 실행하도록 구성되어도 된다.
본 발명의 제2 측면에 따른, 복수의 실행 레벨로부터 목적지 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 발송되는 입력 인터럽트를 처리하는 인터럽트 핸들링 레지스터의 일 세트 중 적어도 일부에의 액세스를 동적으로 제어하는 방법은, 상기 입력 인터럽트가 발송되는 목적지 실행 레벨을 판정하는 단계; 상기 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어가 상기 입력 인터럽트를 처리하는 상기 인터럽트 핸들링 레지스터의 적어도 일부에 액세스하도록, 또 상기 실행 레벨에서 작동하는 상기 인터럽트 핸들링 소프트웨어가 보다 많은 특권이 있는 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 발송된 제2 입력 인터럽트를 처리하기 위한 인터럽트 핸들링 레지스터에 액세스하지 못하도록, 상기 목적지 실행 레벨에서 작동하는 상기 인터럽트 핸들링 소프트웨어에의 액세스를 허가하는 단계를 포함한다.
제3 측면에 따른 데이터 처리장치는,
입력 인터럽트의 핸들링을 제어하는 인터럽트 핸들링 레지스터의 일 세트로 이루어진 복수의 시스템 레지스터;
복수의 실행 레벨에서 소프트웨어를 실행하는 처리수단;
상기 입력 인터럽트를 상기 복수의 실행 레벨 중 하나에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어에 발송하는 인터럽트 제어기 수단;
상기 실행 레벨에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어가 상기 입력 인터럽트를 처리하는 상기 인터럽트 핸들링 레지스터의 적어도 일부에 액세스하도록, 또 상기 실행 레벨에서 작동하도록 구성된 상기 인터럽트 핸들링 소프트웨어가 보다 많은 특권이 있는 실행 레벨에서 작동된 인터럽트 핸들링 소프트웨어에 발송된 제2 입력 인터럽트를 처리하기 위한 인터럽트 핸들링 레지스터에 액세스하지 못하도록, 상기 입력 인터럽트가 발송되는 상기 복수의 실행 레벨 중 상기 하나에 따라 상기 인터럽트 핸들링 레지스터의 적어도 일부에의 액세스를 동적으로 제어하도록 구성된 레지스터 액세스 제어수단을 구비한다.
본 발명의 제4 측면에 따른, 복수의 실행 레벨에서 소프트웨어를 실행하도록 구성되는 처리 회로소자에 입력 인터럽트를 발송하는 장치는, 상기 프로세서의 현재의 실행 모드를 검출하도록 구성된 프로세서 모드 검출 회로소자; 의도된 실행 모드와 의도된 실행 레벨에서 작동하는 인터럽트 핸들러를 위한 것인 상기 입력 인터럽트를 수신하도록 구성된 입력 회로소자; 목표 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하도록 구성되되, 상기 의도된 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하기 위해 상기 처리 회로소자의 상기 현재의 실행 모드에 대응하는 의도된 실행 모드를 갖는 상기 수신된 입력 인터럽트에 응답하고; 또 상기 의도된 실행 레벨보다 많은 특권이 있는 소정의 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하기 위해, 상기 처리 회로소자의 상기 현재 실행 모드와 대응하지 않는 의도된 실행 모드를 갖는 상기 수신된 입력 인터럽트에 응답하도록, 구성된 발송 회로소자를 구비한다.
이 측면에 따라, 입력 인터럽트는 상기 처리 회로소자가 현재 작동중이 아닌 동작의 모드로 실행되기 위한 것일 경우, 그 입력 인터럽트가 촉진된다. 인터럽트의 촉진은, 통상 처리될 상기 인터럽트보다 상위의 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 의해 그 입력 인터럽트를 처리되게 한다. 이에 따라 실행 모드를 상기 입력 인터럽트가 요구하는 모드로 상기 처리 회로소자가 전환되기도 함으로써, 원래 의도된 대로 그 입력 인터럽트가 처리될 수 있다. 이와는 달리, 상기 인터럽트 핸들링 소프트웨어는, 상기 처리 회로소자의 실행 모드에 상관없이, 또 상기 처리 회로소자의 모드를 전환시키지 않고, 그 입력 인터럽트 자체를 직접 처리하여도 된다.
본 발명의 제5 측면에 따른, 복수의 실행 레벨에서 소프트웨어를 실행하도록 구성되는 처리 회로소자에 입력 인터럽트를 발송하는 방법은, 상기 프로세서의 현재의 실행 모드를 검출하는 단계; 의도된 실행 모드와 의도된 실행 레벨에서 작동하는 인터럽트 핸들러를 위한 것인 상기 입력 인터럽트를 수신하는 단계; 상기 의도된 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하기 위해 상기 처리 회로소자의 상기 현재의 실행 모드에 대응하는 의도된 실행 모드를 갖는 상기 수신된 입력 인터럽트에 응답함으로써, 또한 상기 의도된 실행 레벨보다 많은 특권이 있는 소정의 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하기 위해, 상기 처리 회로소자의 상기 현재 실행 모드와 대응하지 않는 의도된 실행 모드를 갖는 상기 수신된 입력 인터럽트에 응답함으로써, 목표 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하는 단계를 포함한다.
또한, 또 다른 측면에서는, 본 발명의 상기 제2 또는 제4 측면의 상술한 방법 중 하나를 처리장치가 실행하도록 제어하는 컴퓨터 프로그램을 제공할 수도 있다.
도 1은 일 실시예에 따른 데이터 처리장치를 개략적으로 나타내는 블록도,
도 2는 일 실시예에 따른 데이터 처리장치에서 인터럽트 제어기의 동작을 개략적으로 나타내고,
도 3a 및 3b는 일 실시예에 따라 2개의 동작모드간에 전환하는 데이터 처리장치의 인터럽트 제어기의 동작을 개략적으로 나타내고,
도 4는 일 실시예에 따라 데이터 처리장치의 동작을 나타내는 흐름도,
도 5는 일 실시예에 따라 입력 인터럽트를 "촉진하는" 데이터 처리장치의 동작을 나타내는 흐름도,
도 6은 일 실시예에 따라 입력 인터럽트들에 응답하여 가상 인터럽트들을 발생하거나 발생하지 않는 동작의 2개의 모드간에 전환하는 데이터 처리장치의 동작을 나타내는 흐름도,
도 7은 일 실시예에 따라 동작하는 시스템을 개략적으로 나타낸다.
여기서 설명된 실시예들은, 다양한 실행 레벨(EL0-EL3)에서 프로세서가 실행할 수 있는 시스템을 생각해본다. EL0은 최소 특권이 있는 실행 레벨이고, EL3은 최대의 특권이 있는 실행 레벨이다. 상위 실행 레벨에서 작동하는 소프트웨어는, 하위 실행 레벨에서 사용한 데이터를 액세스할 수 있는 것이 일반적이다. 그러나, 상위 실행 레벨에서 사용한 데이터는, 하위 실행 레벨에서 실행하는 소프트웨어에 의해 액세스될 수 없는 것이 일반적이다.
유저 소프트웨어는 실행 레벨 EL0에서 실행하고, 게스트 운영체계는 EL1에서 실행하고, 하이퍼바이저 소프트웨어는 실행 레벨 EL2에서 작동하며, 보안 모니터는 실행 레벨 EL3에서 작동한다.
보안 모니터는 프로세서(30)가 보안 모드나 비보안 모드에서 실행하는지를 제어할 수 있다. 상기 프로세서가 비보안 모드에 있지만, 보안 데이터를 액세스할 수 없다. 또한, 본 실시예에서는, 실행 레벨 EL2의 동작의 보안 모드가 없고 실행 레벨 EL3의 동작의 비보안 모드가 없는 것을 주목해야 한다.
실행 레벨 EL3는 보안 데이터와 비보안 데이터 양쪽을 액세스할 수 있고, 그 2개의 상태간의 전환을 제어한다.
입력 인터럽트들은, 그 성질 및 목적에 따라 다수의 클래스로 분류되어도 된다. 여기서 설명된 실시예들에서는, 3개의 별개의 카테고리를 생각해본다.
G0 또는 그룹0 인터럽트들은, EL3에서 작동하는 보안 모니터를 위한 것이다.
G1ns 또는 그룹1 비보안 인터럽트들은 EL2에서 비보안 모드에서 작동하는 하이퍼바이저나, EL1에서 비보안 모드에서 작동하는 운영체계를 위한 것이다.
G1s 또는 그룹1 보안 인터럽트들은 EL1에서 작동하는 보안 운영체계를 위한 것이다.
입력 인터럽트들은, 2개의 인터럽트 예외: FIQ와 IRQ 중 하나를 발행하여서 인터럽트 제어기에 의해 상기 프로세서에 알려진다.
도 1은 데이터 처리 장치의 실시예를 나타내는 블록도를 도시한 것이다. 입력 인터럽트(10)는, 인터럽트 제어기(20)에 의해 수신된다. 본 실시예에서, 입력 인터럽트(10)는, 카테고리 G0을 가지므로, 프로세서(30)의 실행 레벨 EL3에서 작동하는 보안 모니터를 위한 것이다. 그러나, 그렇게 하지 않고, 본 실시예에서는, 제어 레지스터(40)에 기억된 값들의 결과로서, 상기 입력 인터럽트(10)를, 프로세서(30)의 실행 레벨 EL1에서 작동하는 인터럽트 핸들링 소프트웨어에 발송한다.
이벤트의 통상의 과정에서, 프로세서(30)의 실행 레벨 EL1에서 작동하는 인터럽트 핸들링 소프트웨어는, 시스템 레지스터(50)의 세트에서 레지스터(60)의 특정 서브세트에 액세스할 것이다. 입력 인터럽트(10)가 처리될 수 있도록, 상기와 다른 시스템 레지스터(70)의 제2 세트에 액세스하는 것이 필요하다. 이 레지스터의 제2 세트는, 예를 들면, 긍정 응답 레지스터와 같은, 특정 예외가 진행중이거나 완료된 신호에 사용되는 레지스터들로 이루어져도 된다. 보통, 이 때문에, 프로세서(30)의 실행 레벨 EL1에서 작동하는 인터럽트 핸들링 소프트웨어는, 입력 인터럽트(10)를 처리하는 것이 필요한 시스템 레지스터(70)의 상기 제2 세트에 액세스하지 않을 것이다.
그렇지만, 본 실시예에서, 인터럽트 핸들링 소프트웨어에 입력 인터럽트(10)를 발송하는 방식은, 제어 레지스터(40)의 구성과 프로세서(30)의 현재 실행 모드(보안 또는 비보안) 중 한쪽이나 양쪽에 좌우된다.
특히, 제1 보안 제어 레지스터 SCR은, 인터럽트 예외 FIQ와 IRQ마다, 인터럽트 예외가 EL3에서 작동하는 인터럽트 핸들링 소프트웨어에 발송되는지 아닌지를 나타낸다.
상기 인터럽트 예외가 EL3에서 작동하는 인터럽트 핸들링 소프트웨어에 발송되지 않는 경우와, 상기 프로세서가 보안 모드에서 작동중일 경우에, 상기 인터럽트 예외는, EL2가 보안 모드를 갖지 않으므로, EL1에서 보안 모드에 작동하는 인터럽트 핸들링 소프트웨어에 보내진다.
인터럽트 예외가 EL3에서 작동하는 인터럽트 핸들링 소프트웨어에 발송되지 않고 상기 프로세서가 비보안 모드에서 작동중일 경우, 상기 인터럽트 예외는 제2의 하이퍼바이저 제어 레지스터, HCR로 나타낸 값에 따라, EL1 또는 EL2의 비보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어에 발송된다. 상기 레지스터 SCR과 같이, 인터럽트 예외마다 서로 다른 값을 설정하는 것이 가능하다.
상기 제어 레지스터(40)의 구성은, 프로세서(30)상에서 소프트웨어 실행에 의해 제어되어도 된다. 예를 들면, SCR을 위해 설정된 값들은, EL3에서 작동하는 보안 모니터에 의해 설정되어도 되고-이에 따라서, 상기 보안 모니터가 하위 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 대한 특정 인터럽트 예외의 처리를 지연하는 것을 가능하게 한다. 마찬가지로, 특정 인터럽트 예외가 EL2에서 작동하는 하이퍼바이저나 EL1에서 작동하는 게스트 운영체계에 의해 처리되는지를, 상기 하이퍼바이저에서 특정하여도 된다. 이에 따라, 이러한 시스템의 유연성은, 각종 서로 다른 실행 레벨에서의 소프트웨어가 상기 제어 레지스터에 특정한 값들을 설정하여서 입력 인터럽트를 처리하는 것을 가능하게 함으로써 향상된다.
본 예에서, 레지스터 액세스 제어(80)는, 시스템 레지스터(50)의 세트에서 시스템 레지스터(70)의 제2(부가적인) 세트에, 실행 레벨 EL1에서 동작의 보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어 액세스를 허가한다. 따라서, 실행 레벨 EL1에서 동작의 보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어는, 입력 인터럽트(10)를 처리할 수 있다.
그 결과, 프로세서(30)의 실행 레벨 EL1의 보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어에 허가된 상기 액세스는 인터럽트 제어기(20)에 의해 실행된 상기 발송에 의존하고 나서, 상기 제어 레지스터(40)의 값들에 의존하기도 한다. 상기 시스템 레지스터(50)에의 액세스 변경은, 입력 인터럽트(10)를 처리할 수 있는 프로세서(30)에서 실행 레벨 EL1의 보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어에서 생긴다. 따라서, 상기 프로세서(30)의 각 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 주어진 상기 액세스는 동적으로 결정됨에 따라서, 입력 인터럽트가 복수의 서로 다른 실행 레벨에서 처리되는 것을 가능하게 한다. 달리 말하면, 특정 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어는, 시스템 레지스터(50)의 고정된 세트에 액세스하기만 하는 것은 아니다. 대신에, 그 인터럽트 핸들링 소프트웨어의 상기 시스템 레지스터(50)에의 액세스는 상기 입력 인터럽트들의 상기 서로 다른 실행 레벨에의 발송에 따라 변경된다.
또한, 프로세서(30)의 실행 레벨 EL1의 보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어에 허가된 액세스를 조정하였지만, 임의의 다른 실행 모드나 실행 레벨에서의 다른 인터럽트 핸들링 소프트웨어의 임의의 것에의 액세스가 조정되는 요구사항이 없다. 특히, 실행 레벨 EL2의 보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어가 실행 레벨 EL1에서 작동하는 인터럽트 핸들링 소프트웨어보다 상위의 실행 레벨에서 작동하지만, 실행 레벨 EL2에서 인터럽트 소프트웨어의 액세스가 조정될 필요가 없다.
도 2는 데이터 처리 장치가 입력 인터럽트(10)를 촉진시키는 인터럽트 제어기(20)를 구비하는 실시예를 나타낸다. 입력 인터럽트(10)는, 인터럽트 제어기(20)에서 입력 회로소자(100)에 의해 수신되고, 그 인터럽트가 보안 EL1에서 작동하는 보안 운영체계에 의해 처리되기 위한 것을 나타내는 카테고리 G1S를 갖는다. 시스템 레지스터(50)의 세트에서 긍정 응답 레지스터(90)는, 입력 인터럽트(10)가 진행중이고, 상기 프로세서(30)의 현재 실행 모드가 입력 인터럽트(10)가 요구하는 상기 모드에 일치하지 않는 것을 가리킨다. 본 예에서, 상기 입력 인터럽트(10)는, 동작의 비보안 모드에 있는 프로세서(30)와 호환 가능하지 않은 동작의 보안 모드를 필요로 한다. 상기 입력 인터럽트(10)가 정확한 동작 모드에 있지 않는다는 사실은 인터럽트 제어기(20)에 대해 이용 가능하다.
상기 긍정 응답 레지스터는 인터럽트 핸들링 소프트웨어로부터 판독되고, 복귀되는 값은 현재의 체제를 위한 유효 인터럽트 ID나, 보안 상태용 진행중 인터럽트, 비보안 상태용 진행중 인터럽트, 또는 더 이상 진행중이 아닌 인터럽트도 있는지를 가리키는 값 중 하나인 특유의 식별자 중 어느 한쪽이다. 더 이상 진행중이 아닌 인터럽트는, 상기 프로세서가 진행중 인터럽트를 취하거나 실제로 보기에 충분히 높은 레벨에서 실행하고 있지 않는 경우나, 상기 진행중 인터럽트가 취해져 있고 일부의 이유로 더 이상 진행중이 아닌 경우에, 복귀가 일어나기도 한다.
보통, 인터럽트 제어기(20)에서 입력 인터럽트(10)의 도착으로, 동작의 보안 모드에서 실행 레벨 EL1에서 작동하는 인터럽트 핸들링 소프트웨어에 보내질 인터럽트 예외 IRQ가 발생하게 된다. 그렇지만, 본 예에서는 상기 프로세서(30)가 현재 동작의 보안 모드에서 작동중이 아니므로, 이때에 이 인터럽트 예외가 처리되는 것이 가능하지 않다. 이에 따라, 인터럽트 제어기(20)에서 상기 발송 회로소자(110)는, 프로세서(30)상의 실행 레벨 EL3에서 동작의 보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어에 발송되는 인터럽트 예외 FIQ를 발생함으로써 상기 입력 인터럽트(10)가 "촉진되게" 한다.
본 실시예에서, 실행 레벨 EL3의 보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어는, 항상 내부 FIQ인터럽트에 즉시 응답할 수 있다. 이에 따라, 입력 인터럽트(10)가 의도한 것보다 많은 특권이 있는 실행 레벨에서의 인터럽트 핸들링 소프트웨어는, 상기 프로세서의 현재 동작 모드와 호환 가능하지 않은 입력 인터럽트(10)를 수신하는 인터럽트 제어기(20)에 대해 반응할 수 있다.
일부의 실시예에서, 실행 레벨 EL3에서 작동하는 인터럽트 핸들링 소프트웨어는, 상기 동작의 보안 모드에서 실행중인 임의의 소프트웨어의 상태를 보존, 특정한 캐시들이나 중간 기억매체를 출력해버린 후 상기 프로세서의 상기 모드를 전환함으로써 상기 프로세서(30)의 모드를 변경하여서 반응할 것이다. 이 프로세스는 단순한 인터럽트를 처리할 때 소비되는 시간일 수 있다. 따라서, 일부의 경우에, 그렇게 하지 않고, 실행 레벨 EL3에서 작동하는 인터럽트 핸들링 소프트웨어는, 입력 인터럽트 자체를 처리하여도 된다. 이러한 경우에, 인터럽트 핸들링 소프트웨어가 보안 모드와 비보안 모드간에 프로세서(30)의 모드를 변경할 필요가 없다.
당업자가 인식한 것은, 실행 레벨 EL3에서 작동하는 인터럽트 핸들링 소프트웨어는 프로세서(30)의 모드가 보안 모드와 비보안 모드간에 변경되게 하는지, 또는 실행 레벨 EL3에서 작동하는 인터럽트 핸들링 소프트웨어가 그 인터럽트 자체를 처리하는지를 가리키는, 서로 다른 조건이 많다는 것이다. 예를 들면, 이러한 결정은, 입력 인터럽트의 중요성, 상기 프로세서상에 현재 작동중인 실행 레벨, 또는 입력 인터럽트의 복잡성에 의거하여, 이루어져도 된다. 특히, 상기 프로세서가 이전에 낮은 실행 레벨에서 작동중이었을 경우, 특히 상기 입력 인터럽트가 복잡하고 상당히 중요하지 않은 경우, 상기 프로세서(30)는, 보안 모드와 비보안 모드간에 모드를 변경하여도 된다.
도 3a 및 3b는, 도 3a에 나타낸 제1 설정과 도 3b에 나타낸 제2 설정간에 상기 인터럽트 제어기의 모드를 전환하는 프로세스를 나타낸다.
도 3a에 있어서, 상기 입력 인터럽트(10)는, 인터럽트 제어기(20)에 의해 수신되어 인터럽트 예외 IRQ로서 상기 프로세서(30)의 실행 레벨 EL1의 비보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어에 보내진다.
도 3b에 있어서, 상기 입력 인터럽트(10)는, 인터럽트 제어기(20)에 의해 수신되어 다시 인터럽트 예외 IRQ로서 보내진다. 그렇지만, 본 실시예에서, 상기 인터럽트 예외 IRQ는, 실행 레벨 EL2의 비보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어에 의해 수신된다. 그 후, 가상 인터럽트는, 실행 레벨 EL2의 비보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어에 의해 발생되고 실행 레벨 EL1의 비보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어에 보내진다. 본 실시예에서, 발생되는 가상 인터럽트는, 정의에 의해, 본 실시예에서 보안 EL2가 없는 것처럼 상기 하이퍼바이저나 상기 게스트 OS 중 어느 한쪽으로 진행하는 그룹 1 비보안 인터럽트이어야 한다.
그 2개의 설정은, 실행 레벨 EL1의 비보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어가 입력 인터럽트(10)에 물리적으로 액세스하는지, 또는, 보다 많은 특권이 있는 실행 레벨 EL2의 비보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어가 상기 입력 인터럽트(10)에 물리적으로 액세스하고 실행 레벨 EL1의 비보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어가 입력 인터럽트(10)에 가상적으로만 액세스하는지에 영향을 미칠 수 있다.
예를 들면, 하나의 하드웨어에서 생성한 입력 인터럽트(10)는, 실행 레벨 EL1에서 자동하는 게스트 운영체계에 의해 직접 처리되어도 되고, 이 경우에 상기 게스트 운영체계는 중간의 단계들이 필요하지 않은 입력 인터럽트(10)에 물리적으로 액세스한다.
또는, 이러한 인터럽트는, 실행 레벨 EL2에서 작동하는 하이퍼바이저 소프트웨어를 향해 보내질 수 있어서, 하이퍼바이저 소프트웨어에 의해 가상 인터럽트가 발생되게 되어 실행 레벨 EL1에서 작동하는 상기 게스트 운영체계에 발송된다. 이 경우에, 상기 게스트 운영체계는 상기 입력 인터럽트(10)에 가상적으로 액세스하기만 하고 결국 그 인터럽트에의 액세스는 실행 레벨 EL2에서 작동하는 하이퍼바이저 소프트웨어에 의해 제어된다. 이 프로세스는 서로 다른 소프트웨어가 완료하는 경우 필요할 수도 있거나, 하드웨어에 직접 액세스하도록 신뢰되지 않을 수도 있다. 그렇지만, 상기 가상 인터럽트를 발생하는 프로세스는, 상기 게스트 운영체계가 입력 인터럽트(10)에 물리적으로 액세스하는 시나리오와 비교하여 추가의 처리 자원을 소비할 가능성이 높다.
인터럽트 제어기(20)는, 제어 레지스터(40)의 세트에서 레지스터들에 의해 복귀된 값들에 따라 이들 2개의 설정간에 전환되어도 된다. 이전에 설명한 것처럼, 상기 프로세서(30)가 동작의 비보안 모드에서 작동중일 때, 인터럽트 예외가 EL3에 발송중이 아닐 경우, 상기 레지스터 HCR의 값은 EL1이나 EL2에 인터럽트 예외를 발송할 것인지 아닌지를 나타내는데 사용되어도 된다. 추가로, 이 레지스터는, 인터럽트 예외를 수신하는 인터럽트 핸들링 소프트웨어가 가상 인터럽트를 발생하여 그 가상 인터럽트를 실행 레벨 EL1의 비보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어에 보내야 하는지 아닌지를 나타낸다. 보다 적은 특권이 있는 실행 레벨에서 작동하는 소프트웨어에 의해 처리하기 위한 가상 인터럽트를 발생하는 것은 프로세서 집약적이어도 된다. 하위 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 의해 궁극적으로 처리되는 인터럽트들은, 보다 많은 특권이 있는 인터럽트 핸들링 소프트웨어에 의한 가상 인터럽트의 형태로 생성되어야 하기 때문이다. 그렇지만, 가상 인터럽트들을 작성하는 것에 의해, 보다 적은 특권이 있는 인터럽트 핸들러가 상기 보다 적은 특권이 있는 실행 레벨에서 작동하는 상기 소프트웨어의 특권들을 확장하지 않고 인터럽트를 처리할 수 있다. 따라서, 상기 하이퍼바이저는, 보안성 대 성능 요구사항에 따라 제어 레지스터(40)에 상기 값들을 설정하여, EL1레벨에서 실행중인 특정 소프트웨어로 변경할 것이다.
아래의 표는, 인터럽트 예외 IRQ의 경우, 입력 인터럽트의 발송에 관한 서로 다른 레지스터 값들과 프로세서 모드들의 효과를 가리킨다.
Figure pct00001
보안 제어 레지스터SCR과 하이퍼바이저 제어 레지스터 HCR 양쪽이 IRQ의 발송을 제어하는 위에 도시된 비트와, FIQ의 발송을 제어하는 (이 표에 도시되지 않은) 다른 하나를 포함한다는 것을 주목해야 한다. FIQ인터럽트 SCR.FIQ나 HCR.FIQ용 제어 비트는 그룹0 인터럽트들에 대한 발송을 제어하고, IRQ인터럽트 SCR.IRQ나 HCR.IRQ용 제어비트는 그룹1의 보안 인터럽트와 비보안 인터럽트 양쪽을 어떻게 발송하는지를 정의한다. 이 세그먼테이션은, 필요한 경우 IRQ가 FIQ로 촉진될 수 있으므로 가능하다. 이미 언급한 것처럼, 이들 설정은, IRQ 인터럽트 예외와 FIQ 인터럽트 예외 양쪽에 독립적으로 설정될 수 있다.
이에 따라, 2개의 모드간에 동적으로 전환하여서, 입력 인터럽트(10)가 중간 관계자들에 의해 처리되는지 또는 정확한 실행 레벨에서 작동하는 관련된 소프트웨어에 직접 발송되는지에 동적으로 영향을 미치는 것이 가능하다.
도 4는 일 실시예에 따라 데이터 처리장치의 동작을 나타내는 흐름도다.
단계 S10에서는, (예를 들어 도 1 또는 도 2에 도시된) 입력 인터럽트(10)가 무슨 실행 레벨에서 발송되는지를 결정한다. 이러한 결정은, 제어 레지스터(40)의 세트에서 레지스터들에서 되돌려진 값들과 상기 입력 인터럽트(10)의 타입의 조합으로 이루어져도 된다.
단계 S20에서는, 상기 입력 인터럽트(10)가 발송될 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 대해 동적으로 액세스를 허가하여, 그 인터럽트 핸들링 소프트웨어는 입력 인터럽트(10)를 처리할 수 있다.
상기에 따라, 인터럽트 핸들링 소프트웨어에 허가된 상기 액세스는, 정적으로 결정되지 않는다. 즉, 각 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어는, 시스템 레지스터(50)의 세트에서의 레지스터들로 이루어진 고정된, 즉 정적 세트에 액세스하지 못한다. 대신에, 인터럽트 핸들링 소프트웨어가 액세스하는 상기 시스템 레지스터(50)에서의 레지스터들로 이루어진 세트는, 입력 인터럽트의 발송에 의거하여 결정된다.
도 5는 일 실시예에 따라 (예를 들어 도 1에 도시된) 입력 인터럽트(10)를 촉진시키는 데이터 처리장치의 동작을 나타내는 흐름도다.
단계 S30에서는, 인터럽트 제어기(20)가 입력 인터럽트(10)를 수신한다.
단계 S40에서는, 프로세서(30)의 현재의 실행 모드를 결정한다.
단계 S50에서는, 상기 프로세서(30)의 현재의 실행 모드가 입력 인터럽트(10)의 상기 의도된 실행 모드와 같은지를 판정한다. 이 판정은, 예를 들면, 시스템 레지스터(50)에서 긍정 응답 레지스터(90)를 판독한 결과로서 이루어져도 된다.
상기 현재의 실행 모드와 상기 의도된 실행 모드가 같은 경우, 동작은 단계 S60으로 진행되어 상기 의도된 인터럽트 핸들러에 입력 인터럽트(10)를 보낸다.
이와는 달리, 상기 의도된 실행 모드와 현재 실행 모드가 다른 경우, 실행 레벨 EL3에서 작동하는 인터럽트 핸들링 소프트웨어에 입력 인터럽트(10)를 발송한다.
실행 레벨 EL3에서 작동하는 인터럽트 핸들링 소프트웨어는, 예를 들면, 보안 모니터이어도 된다. 본 실시예에서, 실행 레벨 EL3에서 작동하는 상기 보안 모니터는, 그 인터럽트 자체를 직접 처리한다. 그러나, 다른 실시예에서, 상기 보안 모니터는, 상기 프로세서(30)의 현재 실행 모드가 전환되게 하여도 된다. 예를 들면, 상기 프로세서(30)의 실행 모드는 보안 모드로부터 비보안 모드로 또는 반대로 전환되어도 되어, 그 프로세서(30)의 실행 모드가 입력 인터럽트(10)의 상기 의도된 실행 모드와 일치한다.
따라서, 프로세서(30)가 현재 제공중인 실행 모드를 필요로 하는 입력 인터럽트(10)는, 즉시 관련된 인터럽트 핸들링 소프트웨어에 보내질 수 있다. 그렇지만, 상기 프로세서(30)가 관련된 실행 모드에서 작동중이 아닐 경우, 가장 많은 특권이 있는 실행 레벨로 입력 인터럽트를 발송시키는 "촉진"이 일어난다. 여기서, 입력 인터럽트(10)는, 원래 의도된 인터럽트 핸들링 소프트웨어에 입력 인터럽트(10)를 보낼 수 있도록, 즉시 처리되거나 그 프로세서의 모드가 전환될 수 있다.
도 6은 일 실시예에 따라 가상 인터럽트들을 발생하는 데이터 처리장치의 동작을 나타내는 흐름도다.
단계 S80에서는, 상기 인터럽트 제어기(20)는 포워딩 동작 모드에 있는지를 판정한다. 포워딩 동작 모드에서, 상기 인터럽트 제어기(20)는, (예를 들어 도 1 또는 도 2에 도시된) 입력 인터럽트(10)를 적절한 실행 레벨로 직접 보내도록 구성됨에 따라서, 입력 인터럽트(10)에의 상기 적절한 실행 레벨의 물리적 액세스에서 인터럽트 핸들링 소프트웨어를 허가한다. 그 동작 모드는, 예를 들면, 제어 레지스터(40)의 세트에서 긍정 응답 레지스터(90)에 의해 되돌려진 값의 결과로서 결정되어도 된다.
인터럽트 제어기(20)가 포워딩 동작 모드에 있는 경우, 단계 S90에서는, 실행 레벨 EL1에서 동작의 비보안 모드에서 작동하는 핸들링 소프트웨어를 향해 입력 인터럽트(10)를 직접 발송한다.
이와는 달리, 인터럽트 제어기(20)가 포워딩 동작 모드에 있지 않는 경우, 단계 S100에서는, 실행 레벨 EL2에서 동작의 비보안 모드에서 작동하는 인터럽트 핸들링 소프트웨어를 향해 입력 인터럽트를 발송한다. 계속해서, 단계 S110에서는, 가상 인터럽트가 비보안 실행 레벨 EL2에서 작동하는 소프트웨어에 의해 발생되고, 비보안 실행 레벨 EL1에서 작동하는 인터럽트 핸들링 소프트웨어에 보내진다.
상기에 따라, 특정 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어를 향해 입력 인터럽트(10)를 직접 보내는 제1 설정과, 상기 입력 인터럽트(10)가 보다 많은 특권이 있는 실행 레벨로 보내지고 가상이 그 보다 많은 특권이 있는 실행 레벨에서 인터럽트 핸들링 소프트웨어에 의해 발생되어 특권의 하위 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 보내지는 제2 설정과의 사이에서 인터럽트 제어기(20)의 동작 모드를 전환하는 것이 가능하다. 따라서, 인터럽트 핸들링 소프트웨어가 입력 인터럽트(10)에 물리적으로 액세스하거나, 그 입력 인터럽트에 가상적으로 액세스하는 것이 가능하다.
도 7은 입력 인터럽트들이 발생되어 발송 회로소자(110)에 보내지는 실시예를 개략적으로 나타낸다. 거기에서, 입력 인터럽트들은, 필요에 따라 인터럽트 예외 FIQ/IRQ를 발생하는데 사용된다. 이들 인터럽트 예외는 프로세서(30)에 보내진다. 특히, 인터럽트 예외들은, 인터럽트 예외의 성질에 따라 실행 모드 중 하나(보안 또는 비보안)에서 실행 레벨들 중 하나에서 작동하는 인터럽트 핸들링 소프트웨어에 보내진다.
도 7은 IRQ와 FIQ 인터럽트 예외의 레지스터 SCR에 의해 나타낸 값들에 따라, 또한, SCR_NS가 1이고 보안 모드 SCR_NS가 0일 때 비보안 모드에 있는 것으로서 나타내는 프로세서(30)의 현재 작동중 상태에 따라, 서로 다른 카테고리의 인터럽트들은 서로 다른 실행 레벨에서 작동하는 서로 다른 인터럽트 핸들링 소프트웨어에 보내진다. 이 점에 관하여, 보안 제어 레지스터 SCR은, FIQ인터럽트들을 제어하는 비트SCR.FIQ, IRQ 인터럽트들을 제어하는 비트 SCR.IRQ 및 프로세서의 현재의 모드, 즉 보안 또는 비보안 모드를 나타내는 비트 SCR.NS를 기억한다.
특히, 본 예에서는, FIQ 인터럽트 예외에 대해 SCR.FIQ가 1로 설정되므로, FIQ 인터럽트 예외를 발생하는 G0 인터럽트를 EL3로 발송한다.
또한, IRQ에 대해 SCR.IRQ가 0이므로, 또 프로세서가 현재 동작의 비보안 모드에 있으므 로(SCR.NS=1), FIQ 인터럽트가 발생되어 EL3에 보내지게 하는 G1s 인터럽트가 "촉진된다". 반대로, G1ns는, 상기 프로세서가 필요한 모드(즉, 비보안)에서 작동중이기 때문에, IRQ 인터럽트가 실행 레벨 EL2에서 작동하는 인터럽트 핸들링 소프트웨어에 보내지게 한다.
여기에서는 본 발명의 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 그들의 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위와 사상을 벗어나지 않고 당업자가 여러 가지로 변경 및 변형을 할 수 있다는 것을 알 것이다.

Claims (20)

  1. 입력 인터럽트의 핸들링을 제어하는 인터럽트 핸들링 레지스터의 일 세트로 이루어진 복수의 시스템 레지스터;
    복수의 실행 레벨에서 소프트웨어를 실행하도록 구성된 처리 회로소자;
    상기 입력 인터럽트를 상기 복수의 실행 레벨 중 하나에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어에 발송하도록 구성된 인터럽트 제어기 회로소자;
    상기 실행 레벨에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어가 상기 입력 인터럽트를 처리하는 상기 인터럽트 핸들링 레지스터의 적어도 일부에 액세스하도록, 또 상기 실행 레벨에서 작동하도록 구성된 상기 인터럽트 핸들링 소프트웨어가 보다 많은 특권이 있는 실행 레벨에서 작동된 인터럽트 핸들링 소프트웨어에 발송된 제2 입력 인터럽트를 처리하기 위한 인터럽트 핸들링 레지스터에 액세스하지 못하도록, 상기 입력 인터럽트가 발송되는 상기 복수의 실행 레벨 중 상기 하나에 따라 상기 인터럽트 핸들링 레지스터의 적어도 일부에의 액세스를 동적으로 제어하도록 구성된 레지스터 액세스 제어 회로소자를 구비하는, 데이터 처리 장치.
  2. 제 1 항에 있어서,
    상기 복수의 실행 레벨은 EL0, EL1, EL2 및 EL3으로 이루어지고,
    EL0은 유저가 소프트웨어를 실행하는 실행 레벨이고, EL1보다 적은 특권이 있고,
    EL1은 게스트 운영체계가 실행하는 실행 레벨이고, EL2보다 적은 특권이 있고,
    EL2는 하이퍼바이저가 실행하는 실행 레벨이고, EL3보다 적은 특권이 있고,
    EL3은 보안 모니터가 실행하는 실행 레벨인, 데이터 처리 장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 레지스터 액세스 제어 회로소자는, 상기 입력 인터럽트가 발송되는 상기 복수의 실행 레벨 중 상기 하나에 따라서만 상기 인터럽트 핸들링 레지스터의 적어도 일부에의 액세스를 동적으로 제어하도록 구성되는, 데이터 처리 장치.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 인터럽트 제어기 회로소자는,
    상기 처리 회로소자의 현재의 실행 모드를 검출하는 프로세서 모드 검출 회로소자;
    의도된 실행 모드와 의도된 실행 레벨에서 작동하도록 구성된 인터럽트 핸들러를 위한 것인 상기 입력 인터럽트를 수신하는 입력 회로소자;
    목표 실행 레벨에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하는 발송 회로소자를 더 구비하고, 상기 발송 회로소자는,
    상기 의도된 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하기 위해 상기 처리 회로소자의 상기 현재의 실행 모드에 대응하는 의도된 실행 모드를 갖는 상기 수신된 입력 인터럽트에 응답하고;
    상기 의도된 실행 레벨보다 많은 특권이 있는 소정의 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하기 위해, 상기 처리 회로소자의 상기 현재 실행 모드와 대응하지 않는 의도된 실행 모드를 갖는 상기 수신된 입력 인터럽트에 응답하도록, 구성되는, 데이터 처리 장치.
  5. 제 4 항에 있어서,
    상기 현재 실행 모드와 상기 의도된 실행 모드는, 각각 보안 모드나 비보안 모드 중 하나이고, 상기 처리 회로소자는, 상기 비보안 모드에서 작동하는 상기 처리 회로소자에 액세스 불가능한 보안 데이터에 액세스하는 상기 보안 모드에서 작동하는, 데이터 처리 장치.
  6. 제 4 항 또는 제 5 항에 있어서,
    상기 의도된 실행 레벨보다 많은 특권이 있는 상기 소정의 실행 레벨은, 최대 특권이 있는 실행 레벨인, 데이터 처리 장치.
  7. 제 4 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 의도된 실행 레벨보다 많은 특권이 있는 상기 소정의 실행 레벨은, EL3이고, 보안 모니터가 작동하는 실행 레벨인, 데이터 처리 장치.
  8. 제 4 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 프로세서 모드 검출 회로소자는, 상기 인터럽트 핸들링 레지스터에 긍정 응답 레지스터를 구비하고,
    상기 긍정 응답 레지스터는, 수신된 입력 인터럽트가 진행중인 것을 나타내고, 상기 수신된 입력 인터럽트가 상기 현재의 실행 모드에 대응하지 않는 의도된 실행 모드를 갖는 것을 나타내기 위해 소정의 값을 되돌리도록 구성된, 데이터 처리 장치.
  9. 제 8 항에 있어서,
    상기 의도된 실행 레벨보다 많은 특권이 있는 소정의 실행 레벨에서 작동하는 상기 인터럽트 핸들링 소프트웨어는, 상기 처리 회로소자의 상기 실행 모드를 변경하여서 상기 소정의 값을 되돌리는 상기 긍정 응답 레지스터에 응답하고 나서, 상기 발송 회로소자가, 상기 입력 인터럽트를, 상기 의도된 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 발송하게 하도록 구성된, 데이터 처리 장치.
  10. 제 8 항에 있어서,
    상기 의도된 실행 레벨보다 많은 특권이 있는 소정의 실행 레벨에서 작동하는 상기 인터럽트 핸들링 소프트웨어는, 상기 입력 인터럽트를 처리하여서 상기 소정의 값을 되돌리는 상기 긍정 응답 레지스터에 응답하도록 구성된, 데이터 처리 장치.
  11. 제 4 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 발송 회로소자는, 인터럽트 예외를 발생하여 상기 의도된 실행 레벨에서 작동하도록 구성된 상기 인터럽트 핸들링 소프트웨어와 상기 의도된 실행 레벨보다 많은 특권이 있는 소정의 실행 레벨에서 작동하도록 구성된 상기 인터럽트 핸들링 소프트웨어 중 적어도 하나에 상기 인터럽트 예외를 보냄으로써, 상기 의도된 실행 레벨에서 작동하는 상기 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하고, 상기 의도된 실행 레벨보다 많은 특권이 있는 소정의 실행 레벨에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하도록 구성된, 데이터 처리 장치.
  12. 제 1 항 내지 제 11 항 중 어느 한 항에 있어서,
    상기 인터럽트 제어기 회로소자는,
    상기 인터럽트 제어기가, 입력 인터럽트들을, 소정의 실행 레벨에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어에 발송하는, 제1 설정과,
    상기 인터럽트 제어기가, 입력 인터럽트들을, 상기 소정의 실행 레벨에서 작동하도록 구성된 상기 인터럽트 핸들링 소프트웨어에 발송하지 않고,
    상기 적어도 하나의 입력 인터럽트가 상기 소정의 실행 레벨보다 많은 특권이 있는 실행 레벨에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어에 발송되고,
    적어도 하나의 가상 인터럽트가 상기 소정의 실행 레벨보다 많은 특권이 있는 실행 레벨에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어에 의해 발생되고,
    상기 적어도 하나의 가상 인터럽트가 상기 소정의 실행 레벨에서 작동하도록 구성된 상기 인터럽트 핸들링 소프트웨어에 발송되는, 제2 설정과의 사이에서 전환 가능한, 데이터 처리 장치.
  13. 제 12 항에 있어서,
    상기 소정의 실행 레벨보다 많은 특권이 있는 실행 레벨은, 하이퍼바이저가 작동하는 레벨인 실행 레벨 EL2인, 데이터 처리 장치.
  14. 제 12 항 또는 제 13 항에 있어서,
    소정의 실행 레벨에서 작동하도록 구성된 상기 인터럽트 핸들링 소프트웨어와 보다 많은 특권이 있는 실행 레벨에서 작동하도록 구성된 상기 인터럽트 핸들링 소프트웨어 각각은, 상기 처리 회로소자의 동작의 보안 모드에서 실행하고, 상기 처리 회로소자는 비보안 모드에서 작동하는 상기 처리 회로소자에 액세스 불가능한 보안 데이터에 액세스하는 상기 보안 모드에서 작동하고, 상기 처리 회로소자는 상기 보안 모드에서 작동하는 상기 처리 회로소자에 액세스 불가능한 비보안 데이터에 액세스하는 상기 비보안 모드에서 작동하는, 데이터 처리 장치.
  15. 입력 인터럽트의 핸들링을 제어하는 인터럽트 핸들링 레지스터의 일 세트로 이루어진 복수의 시스템 레지스터;
    복수의 실행 레벨에서 소프트웨어를 실행하는 처리수단;
    상기 입력 인터럽트를 상기 복수의 실행 레벨 중 하나에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어에 발송하는 인터럽트 제어기 수단;
    상기 실행 레벨에서 작동하도록 구성된 인터럽트 핸들링 소프트웨어가 상기 입력 인터럽트를 처리하는 상기 인터럽트 핸들링 레지스터의 적어도 일부에 액세스하도록, 또 상기 실행 레벨에서 작동하도록 구성된 상기 인터럽트 핸들링 소프트웨어가 보다 많은 특권이 있는 실행 레벨에서 작동된 인터럽트 핸들링 소프트웨어에 발송된 제2 입력 인터럽트를 처리하기 위한 인터럽트 핸들링 레지스터에 액세스하지 못하도록, 상기 입력 인터럽트가 발송되는 상기 복수의 실행 레벨 중 상기 하나에 따라 상기 인터럽트 핸들링 레지스터의 적어도 일부에의 액세스를 동적으로 제어하도록 구성된 레지스터 액세스 제어수단을 구비한, 데이터 처리 장치.
  16. 복수의 실행 레벨로부터 목적지 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 발송되는 입력 인터럽트를 처리하는 인터럽트 핸들링 레지스터의 일 세트 중 적어도 일부에의 액세스를 동적으로 제어하는 방법으로서,
    상기 입력 인터럽트가 발송되는 목적지 실행 레벨을 판정하는 단계;
    상기 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어가 상기 입력 인터럽트를 처리하는 상기 인터럽트 핸들링 레지스터의 적어도 일부에 액세스하도록, 또 상기 실행 레벨에서 작동하는 상기 인터럽트 핸들링 소프트웨어가 보다 많은 특권이 있는 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 발송된 제2 입력 인터럽트를 처리하기 위한 인터럽트 핸들링 레지스터에 액세스하지 못하도록, 상기 목적지 실행 레벨에서 작동하는 상기 인터럽트 핸들링 소프트웨어에의 액세스를 허가하는 단계를 포함하는, 제어 방법.
  17. 처리 장치가 청구항 16에 따른 방법을 실행하도록 제어하는 컴퓨터 프로그램.
  18. 복수의 실행 레벨에서 소프트웨어를 실행하도록 구성되는 처리 회로소자에 입력 인터럽트를 발송하는 장치로서,
    상기 프로세서의 현재의 실행 모드를 검출하도록 구성된 프로세서 모드 검출 회로소자;
    의도된 실행 모드와 의도된 실행 레벨에서 작동하는 인터럽트 핸들러를 위한 것인 상기 입력 인터럽트를 수신하도록 구성된 입력 회로소자;
    목표 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하도록 구성된 발송 회로소자를 구비하되, 상기 발송 회로소자가,
    상기 의도된 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하기 위해 상기 처리 회로소자의 상기 현재의 실행 모드에 대응하는 의도된 실행 모드를 갖는 상기 수신된 입력 인터럽트에 응답하고;
    상기 의도된 실행 레벨보다 많은 특권이 있는 소정의 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하기 위해, 상기 처리 회로소자의 상기 현재 실행 모드와 대응하지 않는 의도된 실행 모드를 갖는 상기 수신된 입력 인터럽트에 응답하도록 구성된, 발송 장치.
  19. 복수의 실행 레벨에서 소프트웨어를 실행하도록 구성되는 처리 회로소자에 입력 인터럽트를 발송하는 방법으로서,
    상기 프로세서의 현재의 실행 모드를 검출하는 단계;
    의도된 실행 모드와 의도된 실행 레벨에서 작동하는 인터럽트 핸들러를 위한 것인 상기 입력 인터럽트를 수신하는 단계;
    상기 의도된 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하기 위해 상기 처리 회로소자의 상기 현재의 실행 모드에 대응하는 의도된 실행 모드를 갖는 상기 수신된 입력 인터럽트에 응답함으로써, 또한
    상기 의도된 실행 레벨보다 많은 특권이 있는 소정의 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하기 위해, 상기 처리 회로소자의 상기 현재 실행 모드와 대응하지 않는 의도된 실행 모드를 갖는 상기 수신된 입력 인터럽트에 응답함으로써,
    목표 실행 레벨에서 작동하는 인터럽트 핸들링 소프트웨어에 상기 입력 인터럽트를 발송하는 단계를 포함하는, 발송 방법.
  20. 처리 장치가 청구항 19에 따른 방법을 실행하도록 제어하는 컴퓨터 프로그램.
KR1020157035080A 2013-05-23 2014-05-12 인터럽트 핸들링 방법 및 장치 KR102204501B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/900,777 US9330035B2 (en) 2013-05-23 2013-05-23 Method and apparatus for interrupt handling
US13/900,777 2013-05-23
PCT/GB2014/051449 WO2014188160A1 (en) 2013-05-23 2014-05-12 A method and apparatus for interrupt handling

Publications (2)

Publication Number Publication Date
KR20160014647A true KR20160014647A (ko) 2016-02-11
KR102204501B1 KR102204501B1 (ko) 2021-01-19

Family

ID=50733098

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157035080A KR102204501B1 (ko) 2013-05-23 2014-05-12 인터럽트 핸들링 방법 및 장치

Country Status (9)

Country Link
US (1) US9330035B2 (ko)
EP (1) EP3000036B1 (ko)
JP (1) JP6753777B2 (ko)
KR (1) KR102204501B1 (ko)
CN (1) CN105247485B (ko)
GB (1) GB2526731B (ko)
IL (1) IL242155B (ko)
RU (1) RU2666625C2 (ko)
WO (1) WO2014188160A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10707671B2 (en) 2016-12-30 2020-07-07 Lsis Co., Ltd. Method of detecting electrical disturbance by DC component

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9330035B2 (en) 2013-05-23 2016-05-03 Arm Limited Method and apparatus for interrupt handling
US9355050B2 (en) * 2013-11-05 2016-05-31 Qualcomm Incorporated Secure, fast and normal virtual interrupt direct assignment in a virtualized interrupt controller in a mobile system-on-chip
US9542254B2 (en) * 2014-07-30 2017-01-10 International Business Machines Corporation Application-level signal handling and application-level memory protection
US9411979B2 (en) 2014-08-07 2016-08-09 Vmware, Inc. Embedding secret data in code
US9398019B2 (en) 2014-08-07 2016-07-19 Vmware, Inc. Verifying caller authorization using secret data embedded in code
US10922402B2 (en) * 2014-09-29 2021-02-16 Vmware, Inc. Securing secret data embedded in code against compromised interrupt and exception handlers
US9465617B1 (en) * 2015-06-29 2016-10-11 Vmware, Inc. Implementing upcall from secure to non-secure mode by injecting exception into non-secure mode
EP3118740B1 (en) * 2015-07-15 2021-09-08 Huawei Technologies Co., Ltd. Device and method for hardware virtualization support
US10197614B2 (en) * 2016-05-02 2019-02-05 Schweitzer Engineering Laboratories, Inc. Fault location during pole-open condition
US11416421B2 (en) * 2016-07-19 2022-08-16 Cypress Semiconductor Corporation Context-based protection system
US10346345B2 (en) * 2017-05-26 2019-07-09 Microsoft Technology Licensing, Llc Core mapping
US10587575B2 (en) 2017-05-26 2020-03-10 Microsoft Technology Licensing, Llc Subsystem firewalls
CN107608331A (zh) * 2017-08-24 2018-01-19 北京龙鼎源科技股份有限公司 非随机中断的诊断方法和装置
FR3105855B1 (fr) * 2019-12-31 2022-01-07 Kalray Processeur à distribution configurable des ressources privilégiées et exceptions aux anneaux de protection
US11714676B2 (en) * 2020-01-03 2023-08-01 International Business Machines Corporation Software-directed value profiling with hardware-based guarded storage facility
US11735908B2 (en) 2021-02-15 2023-08-22 Schweitzer Engineering Laboratories, Inc. Dependable open-phase detection in electric power delivery systems with inverter-based resources
US11650241B1 (en) 2022-06-28 2023-05-16 Schweitzer Engineering Laboratories, Inc. Incremental quantities-based fault locating technique and system
CN117272412B (zh) * 2023-11-21 2024-03-15 芯来智融半导体科技(上海)有限公司 中断控制寄存器保护方法、装置、计算机设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004171566A (ja) * 2002-11-18 2004-06-17 Arm Ltd サスペンドされたオペレーティングシステムへデータ処理リクエストを送る方法
KR20060048597A (ko) * 2004-06-28 2006-05-18 인텔 코오퍼레이션 게스트 소프트웨어의 특권 레벨에 기초한 가상 머신모니터로의 전이
KR20080080654A (ko) * 2005-12-21 2008-09-04 에이알엠 리미티드 프로그램화 가능한 우선순위 값을 이용한 인터럽트컨트롤러
US20090157936A1 (en) * 2007-12-13 2009-06-18 Texas Instruments Incorporated Interrupt morphing and configuration, circuits, systems, and processes
KR20110048531A (ko) * 2008-07-28 2011-05-11 에이알엠 리미티드 가상처리장치의 인터럽트 제어

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5530730A (en) * 1978-08-22 1980-03-04 Nec Corp Data processor
JP3003968B2 (ja) 1991-05-01 2000-01-31 インターナショナル・ビジネス・マシーンズ・コーポレイション 割込み処理プログラム選択装置及び処理方法
JPH07105031A (ja) 1993-09-20 1995-04-21 Internatl Business Mach Corp <Ibm> 多重プロセッサ・コンピュータ・システム内で割込み情報を伝えるための方法および装置
US6665761B1 (en) 1999-07-28 2003-12-16 Unisys Corporation Method and apparatus for routing interrupts in a clustered multiprocessor system
EP1331539B1 (en) 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
US7130951B1 (en) * 2002-04-18 2006-10-31 Advanced Micro Devices, Inc. Method for selectively disabling interrupts on a secure execution mode-capable processor
US20030229794A1 (en) * 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
DE60304602T2 (de) * 2002-11-18 2006-12-28 Arm Ltd., Cherry Hinton Ausnahmearten innerhalb eines sicheren verarbeitungssystems
US7539853B2 (en) * 2002-11-18 2009-05-26 Arm Limited Handling interrupts in data processing of data in which only a portion of a function has been processed
GB0226905D0 (en) * 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Exception tyres within a secure processing system
US7383426B2 (en) 2003-06-11 2008-06-03 University Of Washington Processor employing loadable configuration parameters to reduce or eliminate setup and pipeline delays in a pipeline system
US7623518B2 (en) 2004-04-08 2009-11-24 Hewlett-Packard Development Company, L.P. Dynamic access control lists
US20060064528A1 (en) 2004-09-17 2006-03-23 Hewlett-Packard Development Company, L.P. Privileged resource access
US20070168574A1 (en) 2005-09-28 2007-07-19 Dell Products L.P. System and method for securing access to general purpose input/output ports in a computer system
US20090177826A1 (en) * 2008-01-09 2009-07-09 Texas Instruments Incorporated System and method for preemptive masking and unmasking of non-secure processor interrupts
EP2075696A3 (en) 2007-05-10 2010-01-27 Texas Instruments Incorporated Interrupt- related circuits, systems and processes
US8453143B2 (en) 2007-09-19 2013-05-28 Vmware, Inc. Reducing the latency of virtual interrupt delivery in virtual machines
JP2009251802A (ja) 2008-04-03 2009-10-29 Panasonic Corp マルチプロセッサシステムおよびマルチプロセッサシステムの割込み制御方法
US8978132B2 (en) * 2008-05-24 2015-03-10 Via Technologies, Inc. Apparatus and method for managing a microprocessor providing for a secure execution mode
CN101354664B (zh) 2008-08-19 2011-12-28 中兴通讯股份有限公司 多核处理器中断负载均衡方法和装置
EP2157511B1 (fr) 2008-08-19 2012-01-18 STMicroelectronics Rousset SAS Procédé d'acheminement d'un signal d'interruption directement vers une unité de traitement virtuelle dans un système à une ou plusieurs unités de traitement physiques
US7953916B2 (en) 2009-04-08 2011-05-31 Intel Corporation Dynamic, local retriggered interrupt routing discovery method
JP5737050B2 (ja) * 2011-08-15 2015-06-17 富士通株式会社 情報処理装置、割込み制御方法および割込み制御プログラム
US9043522B2 (en) * 2012-10-17 2015-05-26 Arm Limited Handling interrupts in a multi-processor system
US9330035B2 (en) 2013-05-23 2016-05-03 Arm Limited Method and apparatus for interrupt handling

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004171566A (ja) * 2002-11-18 2004-06-17 Arm Ltd サスペンドされたオペレーティングシステムへデータ処理リクエストを送る方法
KR20060048597A (ko) * 2004-06-28 2006-05-18 인텔 코오퍼레이션 게스트 소프트웨어의 특권 레벨에 기초한 가상 머신모니터로의 전이
KR20080080654A (ko) * 2005-12-21 2008-09-04 에이알엠 리미티드 프로그램화 가능한 우선순위 값을 이용한 인터럽트컨트롤러
US20090157936A1 (en) * 2007-12-13 2009-06-18 Texas Instruments Incorporated Interrupt morphing and configuration, circuits, systems, and processes
KR20110048531A (ko) * 2008-07-28 2011-05-11 에이알엠 리미티드 가상처리장치의 인터럽트 제어

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10707671B2 (en) 2016-12-30 2020-07-07 Lsis Co., Ltd. Method of detecting electrical disturbance by DC component

Also Published As

Publication number Publication date
KR102204501B1 (ko) 2021-01-19
RU2015154967A (ru) 2017-06-27
RU2666625C2 (ru) 2018-09-11
US20140351472A1 (en) 2014-11-27
CN105247485A (zh) 2016-01-13
JP6753777B2 (ja) 2020-09-09
WO2014188160A1 (en) 2014-11-27
EP3000036B1 (en) 2023-09-27
GB2526731B (en) 2016-03-09
GB201516137D0 (en) 2015-10-28
IL242155B (en) 2018-10-31
JP2016518672A (ja) 2016-06-23
RU2015154967A3 (ko) 2018-03-30
CN105247485B (zh) 2019-11-08
US9330035B2 (en) 2016-05-03
EP3000036A1 (en) 2016-03-30
GB2526731A (en) 2015-12-02

Similar Documents

Publication Publication Date Title
KR102204501B1 (ko) 인터럽트 핸들링 방법 및 장치
US9652280B2 (en) CPU scheduler configured to support latency sensitive virtual machines
US9619308B2 (en) Executing a kernel device driver as a user space process
US8938737B2 (en) Delivering interrupts directly to a virtual processor
US10146940B2 (en) Multiple hardware-separated computer operating systems within a single processor computer system to prevent cross-contamination between systems
JP3989911B2 (ja) グローバル割込み待ち行列の仮想化
US20160085568A1 (en) Hybrid virtualization method for interrupt controller in nested virtualization environment
US20180241655A1 (en) Rps support for nfv by system call bypass
GB2531844B (en) Hardware-protective data processing systems and methods using an application executing in a secure domain
EP2003554A1 (en) Input/output control apparatus, input/output control system, and input/output control method
US10409633B2 (en) Hypervisor-visible guest thread management
US8893153B2 (en) Inter-thread data communications in a computer processor
KR20110113756A (ko) 인터럽트 가상화를 돕기 위한 각 프로세서에 대한 게스트 인터럽트 제어기들
US10474494B2 (en) Information processing apparatus, information processing method, and computer program product
US20110219373A1 (en) Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
US8850601B2 (en) Systems and methods of determining a trust level from system management mode
US10963250B2 (en) Selectively suppressing time intensive instructions based on a control value
CN112585584A (zh) 用于处理引起异常的事件的装置和方法
US20240086219A1 (en) Transmitting interrupts from a virtual machine (vm) to a destination processing unit without triggering a vm exit
EP3255544B1 (en) Interrupt controller
KR20130042914A (ko) 컴퓨터 시스템의 주변장치 가상화 시스템

Legal Events

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