KR20160039846A - 인터럽트 처리 시스템 및 인터럽트 처리 방법 - Google Patents

인터럽트 처리 시스템 및 인터럽트 처리 방법 Download PDF

Info

Publication number
KR20160039846A
KR20160039846A KR1020140133041A KR20140133041A KR20160039846A KR 20160039846 A KR20160039846 A KR 20160039846A KR 1020140133041 A KR1020140133041 A KR 1020140133041A KR 20140133041 A KR20140133041 A KR 20140133041A KR 20160039846 A KR20160039846 A KR 20160039846A
Authority
KR
South Korea
Prior art keywords
interrupt
virtual machine
actual
virtual
hypervisor
Prior art date
Application number
KR1020140133041A
Other languages
English (en)
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 한국전자통신연구원
Priority to KR1020140133041A priority Critical patent/KR20160039846A/ko
Priority to US14/538,916 priority patent/US20160098289A1/en
Publication of KR20160039846A publication Critical patent/KR20160039846A/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/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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 가상화 환경 하에서의 인터럽트 컨트롤러, 인터럽트 처리 시스템 및 인터럽트 처리 방법에 관한 것이다.
본 발명에 따른 인터럽트 처리 시스템은, 인터럽트 컨트롤러(interrupt controller), 가상 머신(virtual machine) 및 상기 가상 머신의 활성화 제어를 수행하는 하이퍼바이저(hypervisor)를 포함하고, 상기 인터럽트 컨트롤러는 외부로부터 실제 인터럽트(physical interrupt)를 수신하고, 상기 실제 인터럽트의 특성을 기초로 상기 실제 인터럽트를 상기 하이퍼바이저 또는 상기 가상 머신으로 전송하고, 상기 하이퍼바이저는 상기 실제 인터럽트를 가상 인터럽트(virtual interrupt)로 변환하여 상기 가상 머신으로 전송하고, 상기 가상 머신은 상기 가상 머신에 포함된 제1 인터럽트 핸들러를 이용하여 상기 실제 인터럽트 또는 상기 가상 인터럽트를 처리한다.

Description

인터럽트 처리 시스템 및 인터럽트 처리 방법{INTERRUPT PROCESSING SYSTEM AND INTERRUPT PROCESSING METHOD}
본 발명은 인터럽트 처리 시스템 및 인터럽트 처리 방법에 관한 것으로서, 더욱 자세하게는 가상화 환경 하에서의 인터럽트 처리 시스템 및 인터럽트 처리 방법에 관한 것이다.
가상화(Virtualization) 기술은 논리적인 계층을 통하여 운영체제에 가상의 하드웨어를 제공하는 기술로, 단일의 하드웨어에 복수의 운영체제를 사용하는데 목적이 있다. 가상화 기술은 최근의 마이크로 프로세서의 멀티코어화 경향에 따라서 더욱 각광을 받고 있다.
한편, 하드웨어 지원 가상화 기술은 중앙연산장치(CPU) 가상화, 메모리 가상화 및 인터럽트 가상화의 세 가지의 측면에서 조망될 수 있다. 이 중에서 가장 성능에 밀접한 것은 인터럽트 가상화이다. 인터럽트 가상화는 입출력와 관련되어 있으며, 인터럽트의 가상화로 인한 성능의 저하는 가상 환경의 활용도를 저하시키는 주요한 요인이 된다. 특히 하드웨어의 가상화를 위하여 인터럽트를 가상화하는 것은 잦은 하이퍼바이저(hypervisor)의 처리을 요하고 이로 인하여 성능 오버헤드는 증가하게 된다.
본 발명에서는 가상화 시스템에 있어서, 하이퍼바이저의 개입을 합리적으로 저감시켜 하드웨어의 성능, 특히 입출력 성능의 개선을 도모하는 인터럽트 처리 시스템 및 인터럽트 처리 방법을 제공한다.
본 발명의 일 실시예에 따른 인터럽트 처리 시스템은, 인터럽트 컨트롤러(interrupt controller), 가상 머신(virtual machine) 및 상기 가상 머신의 활성화 제어를 수행하는 하이퍼바이저(hypervisor)를 포함하고, 상기 인터럽트 컨트롤러는 외부로부터 실제 인터럽트(physical interrupt)를 수신하고, 상기 실제 인터럽트의 특성을 기초로 상기 실제 인터럽트를 상기 하이퍼바이저 또는 상기 가상 머신으로 전송하고, 상기 하이퍼바이저는 상기 실제 인터럽트를 가상 인터럽트(virtual interrupt)로 변환하여 상기 가상 머신으로 전송하고, 상기 가상 머신은 상기 가상 머신에 포함된 제1 인터럽트 핸들러를 이용하여 상기 실제 인터럽트 또는 상기 가상 인터럽트를 처리할 수 있다.
본 발명의 다른 실시예에 따른 인터럽트 처리 시스템에 있어서, 상기 인터럽트 컨트롤러는 상기 실제 인터럽트가 상기 하이퍼바이저의 개입을 요하는지 여부에 따라서 상기 실제 인터럽트를 상기 하이퍼바이저 또는 상기 가상 머신으로 전송할 수 있다.
본 발명의 다른 실시예에 따른 인터럽트 처리 시스템에 있어서, 상기 인터럽트 컨트롤러는 상기 실제 인터럽트가 상기 하이퍼바이저의 개입을 요하는지의 여부를 상기 실제 인터럽트에 포함된 IRQ(Interrupt ReQuest)_MODE로 나타낼 수 있다.
본 발명의 다른 실시예에 따른 인터럽트 처리 시스템에 있어서, 상기 하이퍼바이저는 제2 인터럽트 핸들러를 이용하여 상기 실제 인터럽트를 처리할 수 있다.
본 발명의 다른 실시예에 따른 인터럽트 처리 시스템에 있어서, 상기 인터럽트 컨트롤러는 인터럽트 처리 완료 레지스터(End Of Interrupt Register)를 포함하고, 상기 가상 머신은 상기 가상 인터럽트의 처리가 완료되면 상기 인터럽트 처리 완료 레지스터에 처리 완료 정보를 기입할 수 있다.
본 발명의 다른 실시예에 따른 인터럽트 처리 시스템에 있어서, 상기 인터럽트 컨트롤러는 상기 인터럽트 처리 완료 레지스터에 상기 처리 완료 정보가 기입되면 관리 인터럽트를 상기 하이퍼바이저로 전송할 수 있다.
본 발명의 다른 실시예에 따른 인터럽트 처리 시스템에 있어서, 상기 인터럽트 컨트롤러는 가상 머신 ID 레지스터(Virtual Machine IDetifier Register)를 포함하고, 상기 가상 머신은 상기 하이퍼바이저에 의해 활성화되면 상기 가상 머신의 가상 머신 ID를 상기 가상 머신 ID 레지스터에 기입하고, 상기 인터럽트 컨트롤러는 상기 가상 머신 ID를 기입한 가상 머신측으로 상기 실제 인터럽트를 전송할 수 있다.
본 발명의 다른 실시예에 따른 인터럽트 처리 시스템에 있어서, 상기 가상 머신은 복수 존재하고, 상기 인터럽트 컨트롤러는 상기 복수의 가상 머신이 각각 처리 가능한 인터럽트의 정보를 포함한 E/D 레지스터(Enanble/Disable register)를 더 구비하고, 상기 E/D 레지스터에 포함된 정보에 기초하여, 상기 수신한 실제 인터럽트를 처리 가능한 가상 머신측으로 상기 수신한 실제 인터럽트를 전송할 수 있다.
본 발명의 다른 실시예에 따른 인터럽트 처리 시스템에 있어서, 상기 하이퍼바이저는 상기 복수의 가상 머신을 소정의 순서로 스위칭하여 활성화시키고, 상기 인터럽트 컨트롤러는 가상 머신 ID 레지스터를 포함하고, 상기 스위칭되어 활성화된 가상 머신은 자신의 가상 머신 ID를 상기 가상 머신 ID 레지스터에 기입하고, 상기 인터럽트 컨트롤러는, 상기 수신한 실제 인터럽트를 처리 가능한 가상 머신이면서, 상기 가상 머신 ID를 기입한 가상 머신 측으로 상기 수신한 실제 인터럽트를 전송할 수 있다.
본 발명의 다른 실시예에 따른 인터럽트 처리 시스템에 있어서, 상기 인터럽트 컨트롤러는, 상기 수신한 실제 인터럽트를 처리 가능한 가상 머신이면서 상기 가상 머신의 ID를 기입한 가상 머신이 다른 실제 인터럽트 또는 다른 가상 인터럽트를 처리하고 있으면 상기 수신한 실제 인터럽트를 대기(queuing)시킬 수 있다.
본 발명에 따른 인터럽트 컨트롤러, 인터럽트 처리 시스템 및 인터럽트 처리 방법에 따르면, 수신되는 모든 실제 인터럽트가 하이퍼바이저에 전송되지 않게 되므로 하이퍼바이저의 개입을 줄일 수 있다. 또한 인터럽트 처리의 종료시에도 관리 인터럽트는 가상 인터럽트의 처리가 완료되는 경우에만 인터럽트 컨트롤러에서 생성되므로, 더욱 하이퍼바이저의 개입을 줄일 수 있게 된다. 이로써 하이퍼바이저의 개입을 합리적으로 저감시킬 수 있게 되어 하드웨어의 성능, 특히 입출력 성능의 개선을 도모할 수 있다.
도 1은 가상화 환경에서의 일반적인 인터럽트 처리 절차를 나타낸다.
도 2a는 본 발명의 실시예 1에 따른 인터럽트 처리시의 인터럽트 처리 시스템을 나타낸다.
도 2b는 본 발명의 실시예 2에 따른 인터럽트 처리 종료시의 인터럽트 처리 시스템을 나타낸다.
도 3은 본 발명의 실시예 1에 따른 인터럽트 처리 방법을 나타낸다.
도 4는 본 발명의 실시예 2에 따른 인터럽트 처리시의 인터럽트 처리 시스템을 나타낸다.
도 5는 본 발명의 실시예 2에 따른 인터럽트 처리 방법을 나타낸다.
이하 첨부된 도면들을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명하지만, 본 발명이 실시예에 의해 제한되거나 한정되는 것은 아니다. 참고로, 본 설명에서 동일한 번호는 실질적으로 동일한 요소를 지칭하며, 이러한 규칙하에서 다른 도면에 기재된 내용을 인용하여 설명할 수 있다. 그리고 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명하다고 판단되거나 반복되는 내용은 생략될 수 있다.
[일반적인 인터럽트 처리 절차]
도 1은 가상화 환경에서의 일반적인 인터럽트 처리 절차를 나타낸다.
도 1을 참조하면, 주변 장치/외부 장치(2000)로부터 실제 인터럽트(physical interrupt)가 인터럽트 컨트롤러(10)로 전송된다. 이어서 인터럽트 컨트롤러(10)는 수신한 실제 인터럽트를 하이퍼바이저(20)로 전송한다. 하이퍼바이저(20)는 수신한 실제 인터럽트가 하이퍼바이저(20)에 대한 것인 경우에는 하이퍼바이저(20)의 내부 함수인 인터럽트 핸들러로 구동하여 실제 인터럽트의 처리 루틴을 수행한다. 반면 하이퍼바이저(20)는 수신한 실제 인터럽트가 가상 머신(Virtual Machine)(30)에 대한 것인 경우 실제 인터럽트를 가상 인터럽트(Virtual Interrupt)로 변환하여 가상 인터럽트를 생성하고, 생성한 가상 인터럽트를 가상 머신(30)으로 전송한다.
이후, 가상 머신(30)은 수신한 가상 인터럽트에 대응하는 가상 머신 자체의 인터럽트 인터럽트 핸들러를 이용하여 인터럽트 처리 루틴을 수행한다. 가상 머신(30)은 인터럽트 처리를 완료하면, 인터럽트 처리 완료의 취지를 인터럽트 컨트롤러(10)에 통지한다. 인터럽트 처리 완료의 취지를 통지받은 인터럽트 컨트롤러(10)는 관리 인터럽트(Maintenance Interrupt)를 생성하고, 하이퍼바이저(20)로 관리 인터럽트를 전송한다. 이로써 가상 머신(30)에 있어서의 인터럽트 처리 절차는 종료하게 된다.
이와 같은 통상적인 인터럽트 처리 절차는 가상화 환경을 지원하는 기능을 제공하고 있으나, 주변 장치/외부 장치(2000)로부터 전송받은 실제 인터럽트를 가상 머신(30)에 있어서 처리시키거나, 처리를 종료시키는데 있어서는 모든 실제 인터럽트에 대하여 하이퍼바이저(20)의 개입을 요한다. 다시 말해, 하이퍼바이저(20)는 인터럽트 컨트롤러(10)로부터 전송되는 모든 실제 인터럽트 및 인터럽트 컨트롤러(10)로부터의 관리 인터럽트를 수신하게 되므로 하나의 인터럽트의 처리에 두 번 개입하게 된다.
그러나 하이퍼바이저(20)가 수시로 개입하게 되면 하드웨어의 성능에 오버헤드를 증가시키게 되어 실제적인 하드웨어 가상화에 제약으로 작용하게 된다.
[실시예 1]
도 2a는 본 발명의 실시예 1에 따른 인터럽트 처리시의 인터럽트 처리 시스템(1000A)을 나타낸다.
도 2a를 참조하면, 본 발명의 실시예 1에 따른 인터럽트 처리 시스템(1000A)은 인터럽트 컨트롤러(100), 하이퍼바이저(200), 및 가상 머신(300)을 포함할 수 있다. 한편, 주변 장치/외부 장치(2000)는 인터럽트의 생성 및 인터럽트 처리 시스템(1000A)으로의 인터럽트 전송을 위하여 도시되어 있다. 또한, 주변 장치/외부 장치(2000)로부터의 인터럽트는 상기 가상 머신(300)에 의하여 처리 가능한 실제 인터럽트인 것으로 보고 설명한다.
인터럽트 컨트롤러(100)는 주변 장치/외부 장치(2000)로부터 실제 인터럽트를 수신하고, 실제 인터럽트의 특성에 따라 인터럽트의 진입 모드를 결정할 수 있다. 이때 인터럽트의 진입 모드는 예컨대 IRQ(Interrupt ReQuest)에 포함된 1bit의 IRQ_MODE로 나타낼 수 있다.
다시 말해, 인터럽트 컨트롤러(100)는 실제 인터럽트의 특성에 따라 하이퍼바이저(200)의 개입이 불필요한 실제 인터럽트인 경우, 인터럽트의 진입 모드 즉, IRQ_MODE의 bit를 '0'으로 할 수 있고, 상기 IRQ_MODE의 bit가 '0'인 실제 인터럽트를 가상 머신(300)으로 전송할 수 있다.
한편, 인터럽트 컨트롤러(100)는 실제 인터럽트의 특성에 따라 하이퍼바이저(200)의 개입이 필요한 실제 인터럽트인 경우, 인터럽트의 진입 모드 즉, IRQ_MODE의 bit가 '1'로 할 수 있고, 상기 IRQ_MODE의 bit가 '1'인 실제 인터럽트를 하이퍼바이저(200)로 전송할 수 있다.
요컨대, IRQ_MODE bit = 0(가상 머신), 1(하이퍼바이저) 이다.
아울러, 인터럽트 컨트롤러(100)는 인터럽트 처리 완료 레지스터(End Of Interrupt Register; EOI 레지스터)(101) 및 가상 머신 ID 레지스터(Virtual Machine IDetifier Register; VMID 레지스터)(102)를 포함할 수 있다. 또한 도시하지 않으나 인터럽트 컨트롤러(100)에는 인터럽트 컨트롤러(100)가 인터럽트 컨트롤러로 동작하는데 필요한 구성을 더 구비하고 있을 수 있다.
EOI 레지스터(101)에는 가상 머신(300)에 의한 처리 완료 정보가 기입된다. 처리 완료 정보는 예를 들어 처리된 인터럽트의 IRQ 번호일 수 있다. 인터럽트 컨트롤러(100)는, EOI 레지스터(101)에 가상 머신(300)으로부터의 처리 완료 정보가 기입되면 가상 머신(300)의 인터럽트 처리 종료를 위한 관리 인터럽트를 생성하고, 이를 하이퍼바이저(200)로 전송할 수 있다.
VMID 레지스터(102)에는, 가상 머신(300)이 실제 또는 가상 인터럽트를 처리 가능한 상태에 있다는(즉, 활성화(active)되었다는) 취지를 인터럽트 컨트롤러(100)에게 알리기 위하여, 가상 머신(300)의 식별자인 가상 머신 ID가 기입될 수 있다. 인터럽트 컨트롤러(100)는 기입된 가상 머신 ID를 가진 가상 머신(300)을 인지하여 당해 가상 머신(300)으로 실제 (가상) 인터럽트를 전송할 수 있다.
도 2a로 되돌아와서, 하이퍼바이저(200)는 가상의 컴퓨터 하드웨어 환경을 제공하며, 하나 또는 복수의 가상 머신(혹은 운영체제)이 인터럽트를 처리할 수 있도록 인터럽트의 할당의 조정을 수행할 수 있다. 이때 하이퍼바이저(200)는 가상 머신 모니터(Virtual Machine Monitor)라고도 불릴 수 있다.
하이퍼바이저(200)는 인터럽트 컨트롤러(100)로부터 수신한 실제 인터럽트(IRQ_MODE bit = 1 인 경우)를 가상 인터럽트로 변환하여 가상 머신(300)으로 전송할 수 있다. 실시의 형태에 따라서 하이퍼바이저(200)는 수신한 실제 인터럽트가 하이퍼바이저(200) 자체에 대한 것인 경우 당해 실제 인터럽트에 대응하는 인터럽트 핸들러(제2 인터럽트 핸들러)로 당해 실제 인터럽트를 스스로 처리할 수도 있다.
가상 머신(300)은 인터럽트 컨트롤러(100)로부터 직접 수신한 실제 인터럽트(IRQ_MODE bit = 0인 경우) 또는 하이퍼바이저(200)로부터 수신한 가상 인터럽트(IRQ_MODE bit = 1 인 경우)를 각각의 인터럽트에 대응하는 인터럽트 핸들러(각각 제3 또는 제1 인터럽트 핸들러)로 처리할 수 있다. 이때, 가상 머신(300)은 예를 들어 게스트 운영체제(Guest OS)일 수 있으며, 제1 인터럽트 핸들러와 제3 인터럽트 핸들러는 동일한 것일 수 있다. 다만 이하에서는 제1 인터럽트 핸들러와 제3 인터럽트 핸들러를 구별하여 설명한다.
한편, 가상 머신(300)은 상술한 가상 머신 ID(VMID)를 생성할 수 있다. 상술한 바와 같이, 이 가상 머신 ID(VMID)가 VMID 레지스터(502)에 기입되면, 인터럽트 컨트롤러(100)는 상기 가상 머신 ID를 가진 가상 머신(300)이 활성화 되었다는 것을 인지할 수 있다.
주변 장치/외부 장치(2000)는 키보드, 마우스, 터치스크린, 네트워크 장치를 포함하는 외부 입력 장치로서, 사용자 또는 다른 장치로부터 수신된 신호를 (실제) 인터럽트의 형태로 생성할 수 있다. 주변 장치/외부 장치(2000)에서 생성된 실제 인터럽트는 인터럽트 컨트롤러(100)로 전송된다.
도 2b는 본 발명의 실시예에 따른 인터럽트 처리 종료시의 인터럽트 처리 시스템(1000A)을 나타낸다. 도 2b에 도시된 인터럽트 컨트롤러(1000A), 하이퍼바이저(200) 및 가상 머신(300)은 도 2a에서 설명한 동작에 더하여 이하 설명하는 동작을 수행할 수 있다.
도 2b를 참조하면, 가상 머신(300)은 가상 인터럽트(IRQ_MODE bit = 1 인 경우)의 처리가 완료되면 인터럽트 컨트롤러(100)의 EOI 레지스터(101)에 처리 완료 정보를 기입할 수 있다. 인터럽트 컨트롤러(100)는 EOI 레지스터(101)에 처리 완료 정보가 기입되면, 기입된 처리 완료 정보를 인지하여 관리 인터럽트를 생성하고 이를 하이퍼바이저(200)로 전송할 수 있다. 이어서 하이퍼바이저(200)가 인터럽트 컨트롤러(100)로부터의 관리 인터럽트를 수신하면 당해 가상 머신(300)에서의 인터럽트 처리는 종료되고 인터럽트 가상 머신(300)은 수신 이전의 동작으로 회귀될 수 있다.
그러나 인터럽트 컨트롤러(100)로부터 실제 인터럽트(IRQ_MODE bit = 0인 경우)를 직접 수신하는 경우에는 당해 실제 인터럽트의 처리가 완료되어도 별도로 관리 인터럽트가 필요하지 않다. 따라서, 가상 머신(300)은 인터럽트 컨트롤러(100)의 EOI 레지스터(101)에 처리 완료 정보를 기입하지 않으므로 인터럽트 컨트롤러(100)에서 관리 인터럽트가 생성되지 않는다. 다시 말해, 가상 머신(300)이 실제 인터럽트(IRQ_MODE bit = 0)를 직접 수신하고 당해 실제 인터럽트의 처리를 완료한 경우에는 하이퍼바이저(200)가 개입하지 않게 된다.
본 발명의 실시예 1에 따른 인터럽트 처리 시스템의 구성은 상기와 같다. 이하에서는 실시예 1에 따른 인터럽트 처리 시스템의 인터럽트 처리 방법을 설명하기로 한다.
[실시예 1에 따른 인터럽트 처리 방법]
도 3은 본 발명의 실시예 1에 따른 인터럽트 처리 방법을 나타낸다.
도 3을 참조하면, 본 발명의 실시예 1에 따른 인터럽트 처리 방법은, 인터럽트 컨트롤러(100)가 실제 인터럽트를 수신하는 단계(S101), 인터럽트 컨트롤러(100)가 실제 인터럽트의 진입 모드를 결정하여 IRQ_MODE의 bit로 나타내는 단계(S102), IRQ_MODE의 bit의 값을 기초로 실제 인터럽트를 하이퍼바이저(200) 또는 가상 머신(300)으로 전송하는 단계(S103, S104, S107), 하이퍼바이저(200)가 실제 인터럽트를 가상 인터럽트로 변환하여 가상 머신(300)으로 전송하는 단계(S105), 가상 머신(300)이 제1 인터럽트 핸들러 (함수)를 이용하여 가상 인터럽트를 처리하는 단계(S106), 가상 머신(300)이 제3 인터럽트 핸들러 (함수)를 이용하여 실제 인터럽트를 처리하는 단계(S108), 가상 머신(300)이 가상 인터럽트의 처리를 완료하는 단계(S109), 가상 머신(300)이 처리 완료 정보를 EOI 레지스터(101)에 기입하는 단계(S110), 및 인터럽트 컨트롤러(100)가 관리 인터럽트를 하이퍼파이저(200)로 전송하는 단계(S111)를 포함할 수 있다.
이하에서는, 주변 장치/외부 장치(2000)로부터의 실제 인터럽트는 상기 가상 머신(300)에 의하여 처리 가능한 인터럽트인 것으로 보고, 또 상기 가상 머신(300)은 활성화(active)된 것으로 설명한다.
단계 S101에서는 인터럽트 컨트롤러(100)가 주변 장치/외부 장치(2000)로부터 실제 인터럽트를 수신한다. 실제 인터럽트는 사용자로부터 주변 장치/외부 장치(2000)가 입력받은 신호에 의하여 생성된다.
단계 S102에서 인터럽트 컨트롤러(100)는 실제 인터럽트의 특성에 따라 하이퍼바이저(200)의 개입이 불필요한 실제 인터럽트인 경우, 인터럽트의 진입 모드 즉, IRQ_MODE의 bit를 '0'으로 할 수 있다. 한편, 실제 인터럽트의 특성에 따라 하이퍼바이저(200)의 개입이 필요한 실제 인터럽트인 경우, 인터럽트의 진입 모드 즉, IRQ_MODE의 bit를 '1'로 할 수 있다.
단계 S103에서 인터럽트 컨트롤러(100)는 IRQ_MODE bit의 값이 '0'인지 '1'인지 판단한다. IRQ_MODE bit가 '0'인 경우 단계 S107으로 진행하고, IRQ_MODE bit가 '1'인 경우 단계 S104으로 진행한다.
단계 S104에서는 단계 S103에서의 판단이 IRQ_MODE bit = '1'인 경우이므로 인터럽트 컨트롤러(100)는 실제 인터럽트를 하이퍼바이저(200)로 전송한다.
단계 S105에서 하이퍼바이저(200)는 수신한 실제 인터럽트를 가상 인터럽트로 변환하고, 가상 인터럽트를 가상 머신(300)으로 전송한다.
단계 S106에서 가상 머신(300)은 수신한 가상 인터럽트에 대응하는 인터럽트 핸들러(제1 인터럽트 핸들러)로 당해 수신한 가상 인터럽트를 처리한다.
단계 S107에서는 단계 S103에서의 판단이 IRQ_MODE bit = '0'인 경우이므로 인터럽트 컨트롤러(100)는 실제 인터럽트를 가상 머신(300)으로 전송한다.
단계 S108에서 가상 머신(300)은 수신한 실제 인터럽트에 대응하는 인터럽트 핸들러(제3 인터럽트 핸들러)로 당해 수신한 실제 인터럽트를 처리할 수 있다. 상기 실제 인터럽트의 처리가 완료되면 인터럽트 처리는 종료되고, 가상 머신(300)은 인터럽트를 수신하기 이전의 동작으로 회귀할 수 있다.
단계 S106에 이어서 단계 S109에서는, 가상 머신(300)이 제1 인터럽트 핸들러 (함수)를 이용하여 가상 인터럽트의 처리를 완료할 수 있다.
단계 S110에서는 가상 머신(300)이 처리 완료 정보를 인터럽트 컨트롤러(100)의 EOI 레지스터(101)에 기입한다.
단계 S111에서는 인터럽트 컨트롤러(100)가 관리 인터럽트를 하이퍼바이저(200)로 전송할 수 있다. 하이퍼바이저(200)가 관리 인터럽트를 수신하는 것에 의해 전반적인 인터럽트 처리가 종료되며, 이로써 인터럽트 가상 머신(300)은 인터럽트를 수신하기 이전의 동작으로 회귀할 수 있다.
아울러, 상기 각 단계에 더하여, 가상 머신(300)이 인터럽트 컨트롤러(100)의 VMID 레지스터(102)에 자신의 가상 머신 ID를 기입하는 단계가 더 포함될 수 있다. 이를 통하여 인터럽트 컨트롤러(100)는 어떤 가상 머신(300)이 활성화되었는지를 인지할 수 있고, 이를 기초로 인터럽트 컨트롤러(100)는 가상 머신 ID를 기입한 가상 머신(300)이 실제 (가상) 인터럽트를 처리하도록 할 수 있다.
한편, 단계 S104 이후에 있어서 실시 형태에 따라서는, 하이퍼바이저(200)는 수신한 실제 인터럽트를 직접 자신의 인터럽트 핸들러(제2 인터럽트 핸들러)로 상기 수신한 가상 인터럽트를 처리할 수도 있다.
또한, 다른 실시 형태에 따라서는, 단계 S105, S107 이후에 있어서, 가상 머신(300)이 이미 다른 실제 (또는 가상) 인터럽트를 처리하고 있는 중이면 당해 수신한 실제 (또는 가상) 인터럽트는 대기(queuing)될 수 있다.
[실시예 2]
도 4는 본 발명의 실시예 2에 따른 인터럽트 처리시의 인터럽트 처리 시스템(1000B)을 나타낸다.
도 4를 참조하면, 본 발명의 실시예 2에 따른 인터럽트 처리 시스템(1000B)은 인터럽트 컨트롤러(100), 하이퍼바이저(200), 및 복수의 가상 머신 1~ N(300a~300n)을 포함할 수 있다. 한편, 주변 장치/외부 장치(2000)는 실시예 1과 마찬가지로 인터럽트의 전송을 위하여 도시되어 있으며, 인터럽트 컨트롤러(100)는 실시예 1과는 달리 EOI 레지스터(101), VMID 레지스터(102) 이외에 E/D 레지스터(Enable/Disable Register)(103)를 더 포함할 수 있다. 상기 각 구성은 실시예 1에서 설명한 동작을 모두 수행 가능하므로 중복되는 부분에 대하여는 설명을 생략한다.
인터럽트 컨트롤러(100)는 EOI 레지스터(101), VMID 레지스터(102) 이외에 E/D 레지스터(103)를 더 포함할 수 있다. E/D 레지스터(103)는 복수의 가상 머신 1~ N(300a~300n)이 처리할 수 있는 인터럽트의 정보를 포함할 수 있으며, 이러한 인터럽트의 정보는 인터럽트 처리 시스템(1000B)의 초기화 시에 IRQ E/D(Enable/Disable) 명령에 의하여 설정될 수 있다. 예를 들어 E/D 레지스터(103)는 이하의 표 1과 같은 정보를 저장할 수 있다.
IRQ_0 IRQ_1 IRQ_2 IRQ_3 IRQ_8
가상 머신 1 E E D E D
가상 머신 2 E E E D E
가상 머신 N D D E E E
상기 표 1에 따르면, 가상 머신 1(300a)는 IRQ_0, 1, 3 등의 IRQ 번호를 가진 인터럽트를 당해 가상 머신 1(300a)에 포함된 인터럽트 핸들러로 처리할 수 있고, 가상 머신 2(300b)는 IRQ_0, 1, 2, 8 등의 IRQ 번호를 가진 인터럽트를 당해 가상 머신 2(300b)에 포함된 인터럽트 핸들러로 처리할 수 있으며, 가상 머신 N(300n)은 IRQ_2, 3, 8 등의 IRQ 번호를 가진 인터럽트를 당해 가상 머신 N(300n)에 포함된 인터럽트 핸들러로 처리할 수 있다.
인터럽트 컨트롤러(100)는 VMID 레지스터(102) 및 E/D 레지스터(103)를 참조함으로써, 수신한 인터럽트가 처리될 수 있는 가상 머신 중 하이퍼바이저(200)에 의해 활성화된 가상 머신으로 상기 수신한 인터럽트를 전송할 수 있다. 그러나, 수신한 인터럽트를 처리할 수 있으나, 가상 머신이 비활성화된 경우 인터럽트 컨트롤러(100)는 당해 가상 머신이 하이퍼바이저(200)에 의하여 활성화될 때까지 상기 수신한 인터럽트를 대기(queuing)시킬 수 있다. 아울러, 상기 가상 머신이 다른 인터럽트를 처리중인 경우에도 상기 수신한 인터럽트는 대기(queuing)될 수 있다.
하이퍼바이저(200)는 실시예 1의 동작에 더하여, 복수의 가상 머신 1~ N(300a~300n)의 활성화/비활성화를 제어하거나, 이들의 동작을 모니터링할 수 있다. 하이퍼바이저(200)는 복수의 가상 머신 1~ N(300a~300n)에 대한 활성화/비활성화를 소정의 시간 간격으로 순차 또는 임의의 순서로 스위칭할 수 있다. 예컨대 하이퍼바이저(200)는 수~수십 millisecond 주기 마다 가상 머신 1(300a)→가상 머신 2(300b)→ … →가상 머신 N(300n)->가상 머신 1(300a)으로 스위칭하여 가상 머신을 활성화(다른 가상 머신들은 비활성화)시킬 수 있다. 또한, 가상 머신 1~ N(300a~300n)에 대한 활성화/비활성화의 스위칭은 사용자의 조작에 따라서 전환될 수도 있다.
[실시예 2에 따른 인터럽트 처리 방법]
도 5는 본 발명의 실시예 2에 따른 인터럽트 처리 방법을 나타낸다.
도 5를 참조하면, 본 발명의 실시예 2에 따른 인터럽트 처리 방법은, 인터럽트 컨트롤러(100)의 E/D 레지스터(103)에 복수의 가상 머신 1~ N(300a~300n)이 처리할 수 있는 인터럽트의 정보를 저장하는 단계(S201), 인터럽트 컨트롤러(100)가 실제 인터럽트를 수신하는 단계(S202), 인터럽트 컨트롤러(100)가 상기 수신한 실제 인터럽트를 처리할 수 있는 가상 머신이 존재하는지 판단하는 단계(S203), 인터럽트 컨트롤러(100)가 상기 수신한 실제 인터럽트를 처리할 수 있는 가상 머신 중 적어도 하나가 활성화되어 있는지 판단하는 단계(S204), 단계 S203에서 상기 수신한 실제 인터럽트를 처리할 수 있는 가상 머신이 존재하지 않는 경우 인터럽트 컨트롤러(100)가 상기 수신한 실제 인터럽트를 무시하고 인터럽트 처리를 종료하는 단계(S205), 단계 S204에서 상기 수신한 실제 인터럽트를 처리할 수 있는 가상 머신이 비활성화되어 있는 경우 당해 수신한 실제 인터럽트를 대기시키는 단계(S206), 인터럽트 컨트롤러(100)가 실제 인터럽트의 진입 모드를 결정하여 IRQ_MODE의 bit로 나타내는 단계(S207), IRQ_MODE의 bit의 값이 무엇인지 판단하는 단계(S208), IRQ_MODE의 bit의 값이 '1'인 경우 실제 인터럽트를 하이퍼바이저(200)로 전송하는 단계(S209), 하이퍼바이저(200)가 실제 인터럽트를 가상 인터럽트로 변환하여 가상 머신(300)으로 전송하는 단계(S210), 가상 머신(300)이 제1 인터럽트 핸들러 (함수)를 이용하여 가상 인터럽트를 처리하는 단계(S211), 단계 S208에서 판단한 IRQ_MODE의 bit의 값이 '0'인 경우 실제 인터럽트를 가상 머신(300)으로 전송하는 단계(S212), 가상 머신(300)이 제3 인터럽트 핸들러 (함수)를 이용하여 실제 인터럽트를 처리하는 단계(S213), 단계 S211에 이어서 가상 머신(300)이 가상 인터럽트의 처리를 완료하는 단계(S214), 가상 머신(300)이 처리 완료 정보를 EOI 레지스터(101)에 기입하는 단계(S215), 인터럽트 컨트롤러(100)가 관리 인터럽트를 전송하는 단계(S216), 및 단계 S213 또는 단계 S216 이후 인터럽트 처리 방법을 종료하고, 하이퍼바이저(200)가 가상 머신을 소정의 순서로 스위칭하는 단계를 포함할 수 있다.
이하, 단계 S207~S216은 도 3의 단계 S102~S111과 마찬가지이므로 그 설명을 생략한다.
단계 S201에서는 인터럽트 컨트롤러(100)의 E/D 레지스터(103)에 복수의 가상 머신 1~ N(300a~300n)이 처리할 수 있는 인터럽트의 정보를 저장할 수 있다. 인터럽트의 정보는 인터럽트 처리 시스템(1000B)의 초기화 시에 IRQ E/D 명령에 의하여 설정될 수 있다.
단계 S202에서는 인터럽트 컨트롤러(100)가 주변 장치/외부 장치(2000)로부터 실제 인터럽트를 수신한다. 실제 인터럽트는 사용자로부터 주변 장치/외부 장치(2000)가 입력받은 신호에 의하여 생성된다.
단계 S203에서는 인터럽트 컨트롤러(100)가 상기 수신한 실제 인터럽트를 처리할 수 있는 가상 머신이 존재하는지 E/D 레지스터(103)에 저장된 인터럽트 정보에 기초하여 판단할 수 있다. 상기 수신한 실제 인터럽트를 처리할 수 있는 가상 머신이 존재하는 경우 단계 S204로 진행하고, 그렇지 않은 경우 단계 S205로 진행한다.
단계 S204에서는 인터럽트 컨트롤러(100)가 VMID 레지스터(102)를 참조하여 상기 수신한 실제 인터럽트를 처리할 수 있는 가상 머신 중 적어도 하나가 활성화되어 있는지 판단할 수 있다. 상기 수신한 실제 인터럽트를 처리할 수 있는 가상 머신 중 적어도 하나가 활성화되어 있는 경우 단계 S207로 진행하고 그렇지 않은 경우 단계 S206으로 진행한다.
단계 S205에서는 단계 204에서의 판단에 의해 상기 수신한 실제 인터럽트를 처리할 수 있는 가상 머신이 존재하지 않는 경우 인터럽트 컨트롤러(100)는 당해 실제 인터럽트를 무시하고 하고 인터럽트의 처리를 종료할 수 있다.
단계 S206에서는 상기 수신한 실제 인터럽트를 처리할 수 있는 가상 머신이 활성화되어 있지 않은 경우이므로, 인터럽트 컨트롤러(100)는 상기 수신한 실제 인터럽트를 대기(queuing)시킬 수 있고, 단계 S217로 진행한다.
단계 S213 및 단계 S216에 이어서 단계 S217에서는 전반적인 인터럽트의 처리를 종료할 수 있다. 처리가 종료되면 하이퍼바이저(200)는 복수의 가상 머신 1~ N(300a~300n)에 대한 활성화/비활성화를 소정의 시간 간격으로 순차 또는 임의의 순서로 스위칭할 수 있고, 단계 S202로 되돌아가 상술한 인터럽트 처리 절차를 다시 수행할 수 있다.
아울러, 또한, 실시예 1과 마찬가지로 상기 단계에 더하여, 활성화된 가상 머신이 인터럽트 컨트롤러(100)의 VMID 레지스터(102)에 자신의 가상 머신 ID를 기입하는 단계가 더 포함될 수 있다. 이를 통하여 인터럽트 컨트롤러(100)는 복수의 가상 머신 중 어떤 가상 머신이 활성화되었는지를 인지할 수 있고, 이를 기초로 인터럽트 컨트롤러(100)는 가상 머신 ID를 기입한 가상 머신이 실제 (가상) 인터럽트를 처리하도록 할 수 있다.
한편, 실시 형태에 따라서는, 단계 S210 이후에 하이퍼바이저(200)는 상기 수신한 실제 인터럽트를 직접 자신의 인터럽트 핸들러(제2 인터럽트 핸들러)로 상기 수신한 가상 인터럽트를 처리할 수 있다.
또한, 다른 실시 형태에 따라서는, 단계 S210, S212 이후에 있어서, 가상 머신(300)이 이미 다른 실제 (또는 가상) 인터럽트를 처리하고 있는 중이면 당해 수신한 실제 (또는 가상) 인터럽트는 대기(queuing)될 수 있다.
본 발명의 실시예에 따른 인터럽트 컨트롤러(100), 인터럽트 처리 시스템(1000A,B) 및 인터럽트 처리 방법에 따르면, 수신되는 모든 실제 인터럽트가 하이퍼바이저(200)에 전송되지 않게 되므로 하이퍼바이저(200)의 개입을 줄일 수 있다. 또한 인터럽트 처리의 종료시에도 관리 인터럽트는 가상 인터럽트의 처리가 완료되는 경우에만 인터럽트 컨트롤러(100)에서 생성되므로, 더욱 하이퍼바이저(200)의 개입을 줄일 수 있게 된다.
이로써 하이퍼바이저(200)의 개입을 합리적으로 저감시킬 수 있게 되어 하드웨어의 성능, 특히 입출력 성능의 개선을 도모할 수 있다.
또한, 본 발명의 실시예에 따른 인터럽트 컨트롤러(100), 인터럽트 처리 시스템(1000) 및 인터럽트 처리 방법은 인터럽트 컨트롤러(100)에 VMID 레지스터(102)를 포함하고, 가상 머신(300)으로부터 가상 머신 ID를 수신하므로 인터럽트 컨트롤러(100)는 하이퍼바이저(200)의 개입없이 가상 머신(300)의 인터럽트 처리의 스케쥴링(scheduling)을 더욱 효율적을 수행할 수 있게 된다.
[변형례]
(IRQ 전달을 위한 판별 과정)
실제 인터럽트가 발생한 경우, VMID 레지스터(102) 및 E/D 레지스터(103)에 의해서 IRQ를 활용하고 있는 가상 머신(300)을 판별할 수 있게 된다. 이때 하나의 가상 머신(300)이 독점적으로 사용하는 IRQ의 경우는 해당 가상 머신(300)이 어떠한 코어에서 실행되고 있는지를 찾아서 해당하는 코어로 바로 IRQ를 전달하고, 1번에서 언급한 IRQ_MODE를 참조하여 하이퍼바이저 모드인지 수퍼바이저 모드인지를 판별해서 전달하면 된다. 만약에 없다면, IRQ를 잠시 대기시켰다가, 가상 머신(300)이 활성화되는 순간에 IRQ를 전달하도록 하면 된다.
공유되는 IRQ의 경우는, 먼저 이 인터럽트의 수신처가 어떠한 가상 머신(300)인지를 확인을 먼저 해야 한다. 현재 활성화된 가상 머신(300)을 확인하고 이를 기반으로 하여 해당하는 IRQ의 수신자인 가상 머신(300)이 있다면 해당하는 가상 머신(300)으로 전달을 수행한다.
상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 본 발명을 설명하였지만 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다. 따라서 본 발명 사상은 아래에 기재된 특허청구범위에 의해서 파악되어야 하고, 이의 균등 또는 등가적 변형 모두가 본 발명 사상의 범주에 속한다고 할 것이다.
10, 100 : 인터럽트 컨트롤러
101 : 인터럽트 처리 완료 레지스터(EOI 레지스터)
102 : 가상 머신 ID 레지스터(VMID 레지스터)
103 : E/D 레지스터
20, 200 : 하이퍼바이저
30, 300a~300n : 가상 머신
1000A, 1000B : 인터럽트 처리 시스템
2000: 주변 장치/외부 장치

Claims (20)

  1. 인터럽트 컨트롤러(interrupt controller), 가상 머신(virtual machine) 및 상기 가상 머신의 활성화 제어를 수행하는 하이퍼바이저(hypervisor)를 포함하는 인터럽트 처리 시스템에 있어서,
    상기 인터럽트 컨트롤러는 외부로부터 실제 인터럽트(physical interrupt)를 수신하고, 상기 실제 인터럽트의 특성을 기초로 상기 실제 인터럽트를 상기 하이퍼바이저 또는 상기 가상 머신으로 전송하고,
    상기 하이퍼바이저는 상기 실제 인터럽트를 가상 인터럽트(virtual interrupt)로 변환하여 상기 가상 머신으로 전송하고,
    상기 가상 머신은 상기 가상 머신에 포함된 제1 인터럽트 핸들러를 이용하여 상기 실제 인터럽트 또는 상기 가상 인터럽트를 처리하는 인터럽트 처리 시스템.
  2. 청구항 1에 있어서,
    상기 인터럽트 컨트롤러는 상기 실제 인터럽트가 상기 하이퍼바이저의 개입을 요하는지 여부에 따라서 상기 실제 인터럽트를 상기 하이퍼바이저 또는 상기 가상 머신으로 전송하는 것을 특징으로 하는 인터럽트 처리 시스템.
  3. 청구항 2에 있어서,
    상기 인터럽트 컨트롤러는 상기 실제 인터럽트가 상기 하이퍼바이저의 개입을 요하는지의 여부를 상기 실제 인터럽트에 포함된 IRQ(Interrupt ReQuest)_MODE로 나타내는 것을 특징으로 하는 인터럽트 처리 시스템.
  4. 청구항 1에 있어서
    상기 하이퍼바이저는 제2 인터럽트 핸들러를 이용하여 상기 실제 인터럽트를 처리하는 것을 특징으로 하는 인터럽트 처리 시스템.
  5. 청구항 1에 있어서
    상기 인터럽트 컨트롤러는 인터럽트 처리 완료 레지스터(End Of Interrupt Register)를 포함하고,
    상기 가상 머신은 상기 가상 인터럽트의 처리가 완료되면 상기 인터럽트 처리 완료 레지스터에 처리 완료 정보를 기입하는 것을 특징으로 하는 인터럽트 처리 시스템.
  6. 청구항 5에 있어서,
    상기 인터럽트 컨트롤러는 상기 인터럽트 처리 완료 레지스터에 상기 처리 완료 정보가 기입되면 관리 인터럽트를 상기 하이퍼바이저로 전송하는 것을 특징으로 하는 인터럽트 처리 시스템.
  7. 청구항 1에 있어서,
    상기 인터럽트 컨트롤러는 가상 머신 ID 레지스터(Virtual Machine IDetifier Register)를 포함하고,
    상기 가상 머신은 상기 하이퍼바이저에 의해 활성화되면 상기 가상 머신의 가상 머신 ID를 상기 가상 머신 ID 레지스터에 기입하고,
    상기 인터럽트 컨트롤러는 상기 가상 머신 ID를 기입한 가상 머신측으로 상기 실제 인터럽트를 전송하는 것을 특징으로 하는 인터럽트 처리 시스템.
  8. 청구항 1에 있어서,
    상기 가상 머신은 복수 존재하고,
    상기 인터럽트 컨트롤러는 상기 복수의 가상 머신이 각각 처리 가능한 인터럽트의 정보를 포함한 E/D 레지스터(Enanble/Disable register)를 더 구비하고, 상기 E/D 레지스터에 포함된 정보에 기초하여, 상기 수신한 실제 인터럽트를 처리 가능한 가상 머신측으로 상기 수신한 실제 인터럽트를 전송하는 것을 특징으로 하는 인터럽트 처리 시스템.
  9. 청구항 8에 있어서,
    상기 하이퍼바이저는 상기 복수의 가상 머신을 소정의 순서로 스위칭하여 활성화시키고,
    상기 인터럽트 컨트롤러는 가상 머신 ID 레지스터를 포함하고,
    상기 스위칭되어 활성화된 가상 머신은 자신의 가상 머신 ID를 상기 가상 머신 ID 레지스터에 기입하고,
    상기 인터럽트 컨트롤러는, 상기 수신한 실제 인터럽트를 처리 가능한 가상 머신이면서, 상기 가상 머신 ID를 기입한 가상 머신 측으로 상기 수신한 실제 인터럽트를 전송하는 것을 특징으로 하는 인터럽트 처리 시스템.
  10. 청구항 9에 있어서,
    상기 인터럽트 컨트롤러는, 상기 수신한 실제 인터럽트를 처리 가능한 가상 머신이면서 상기 가상 머신의 ID를 기입한 가상 머신이, 다른 실제 인터럽트 또는 다른 가상 인터럽트를 처리하고 있으면 상기 수신한 실제 인터럽트를 대기(queuing)시키는 것을 특징으로 하는 인터럽트 처리 시스템.
  11. 인터럽트 컨트롤러, 가상 머신 및 상기 가상 머신의 활성화 제어를 수행하는 하이퍼바이저를 포함하는 인터럽트 처리 시스템의 인터럽트 처리 방법에 있어서,
    상기 인터럽트 컨트롤러가 외부로부터 실제 인터럽트를 수신하는 단계;
    상기 인터럽트 컨트롤러가 상기 실제 인터럽트의 특성을 기초로 상기 실제 인터럽트를 상기 하이퍼바이저 또는 상기 가상 머신으로 전송하는 단계;
    상기 하이퍼바이저가 상기 실제 인터럽트를 가상 인터럽트로 변환하여 상기 가상 머신으로 전송하는 단계; 및
    상기 가상 머신이 상기 가상 머신에 포함된 제1 인터럽트 핸들러를 이용하여 상기 실제 인터럽트 또는 상기 가상 인터럽트를 처리하는 단계를 포함하는 인터럽트 처리 방법.
  12. 청구항 11에 있어서,
    상기 인터럽트 컨트롤러가 상기 실제 인터럽트의 특성을 기초로 상기 실제 인터럽트를 상기 하이퍼바이저 또는 상기 가상 머신으로 전송하는 단계는,
    상기 실제 인터럽트가 상기 하이퍼바이저의 개입을 요하는지 여부에 따라서 상기 실제 인터럽트를 상기 하이퍼바이저 또는 상기 가상 머신으로 전송하는 단계인 것을 특징으로 하는 것을 특징으로 하는 인터럽트 처리 방법.
  13. 청구항 12에 있어서,
    상기 실제 인터럽트가 상기 하이퍼바이저의 개입을 요하는지의 여부를 상기 실제 인터럽트에 포함된 IRQ(Interrupt ReQuest)_MODE로 나타내는 단계를 더 포함하는 것을 특징으로 하는 인터럽트 처리 방법.
  14. 청구항 11에 있어서
    상기 하이퍼바이저가 제2 인터럽트 핸들러를 이용하여 상기 실제 인터럽트를 처리하는 단계를 더 포함하는 것을 특징으로 하는 인터럽트 처리 방법.
  15. 청구항 11에 있어서
    상기 가상 인터럽트의 처리가 완료되면, 상기 가상 머신이 상기 인터럽트 컨트롤러에 포함된 상기 인터럽트 처리 완료 레지스터에 처리 완료 정보를 기입하는 단계를 더 포함하는 것을 특징으로 하는 인터럽트 처리 방법.
  16. 청구항 15에 있어서,
    상기 처리 완료 정보가 기입되면, 상기 인터럽트 컨트롤러가 관리 인터럽트를 상기 하이퍼바이저로 전송하는 단계를 더 포함하는 것을 특징으로 하는 인터럽트 처리 방법.
  17. 청구항 11에 있어서,
    상기 가상 머신이 상기 하이퍼바이저에 의해 활성화되면, 상기 가상 머신의 가상 머신 ID를 상기 인터럽트 컨트롤러에 포함된 상기 가상 머신 ID 레지스터에 기입하는 단계; 및
    상기 인터럽트 컨트롤러가 상기 가상 머신 ID를 기입한 가상 머신측으로 상기 실제 인터럽트를 전송하는 단계를 더 포함하는 것을 것을 특징으로 하는 인터럽트 처리 방법.
  18. 청구항 11에 있어서,
    상기 가상 머신은 복수 존재하고, 상기 인터럽트 컨트롤러는 상기 복수의 가상 머신이 각각 처리 가능한 인터럽트의 정보를 포함하는 E/D 레지스터를 더 구비하고,
    상기 인터럽트 컨트롤러가, 상기 E/D 레지스터에 포함된 인터럽트의 정보에 기초하여, 상기 복수의 가상 머신 중 상기 수신한 실제 인터럽트를 처리 가능한 가상 머신측으로, 상기 수신한 실제 인터럽트를 전송하는 단계를 더 포함하는 것을 특징으로 하는 인터럽트 처리 방법.
  19. 청구항 18에 있어서,
    상기 복수의 가상 머신은 상기 하이퍼바이저에 의하여 소정의 순서로 스위칭되어 활성화되고,
    상기 스위칭되어 활성화된 가상 머신이 자신의 가상 머신 ID를, 상기 인터럽트 컨트롤러에 포함된 가상 머신 ID 레지스터에 기입하는 단계; 및
    상기 인터럽트 컨트롤러가, 상기 수신한 실제 인터럽트를 처리 가능한 가상 머신이면서, 상기 가상 머신 ID를 기입한 가상 머신 측으로 상기 수신한 실제 인터럽트를 전송하는 단계를 더 포함하는 것을 특징으로 하는 인터럽트 처리 방법.
  20. 청구항 19에 있어서,
    상기 수신한 실제 인터럽트를 처리 가능한 가상 머신이면서, 상기 가상 머신 ID를 기입한 가상 머신이 다른 실제 인터럽트 또는 다른 가상 인터럽트를 처리하고 있으면, 상기 인터럽트 컨트롤러가 상기 수신한 실제 인터럽트를 대기(queuing)시키는 단계를 더 포함하는 것을 특징으로 하는 인터럽트 처리 방법.
KR1020140133041A 2014-10-02 2014-10-02 인터럽트 처리 시스템 및 인터럽트 처리 방법 KR20160039846A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140133041A KR20160039846A (ko) 2014-10-02 2014-10-02 인터럽트 처리 시스템 및 인터럽트 처리 방법
US14/538,916 US20160098289A1 (en) 2014-10-02 2014-11-12 System and method for handling an interrupt

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140133041A KR20160039846A (ko) 2014-10-02 2014-10-02 인터럽트 처리 시스템 및 인터럽트 처리 방법

Publications (1)

Publication Number Publication Date
KR20160039846A true KR20160039846A (ko) 2016-04-12

Family

ID=55632881

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140133041A KR20160039846A (ko) 2014-10-02 2014-10-02 인터럽트 처리 시스템 및 인터럽트 처리 방법

Country Status (2)

Country Link
US (1) US20160098289A1 (ko)
KR (1) KR20160039846A (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3255544B1 (en) * 2016-06-08 2019-07-31 Virtual Open Systems Interrupt controller
JP2019114097A (ja) * 2017-12-25 2019-07-11 ルネサスエレクトロニクス株式会社 半導体装置
WO2019127080A1 (en) * 2017-12-27 2019-07-04 Intel Corporation Systems and methods of efficiently interrupting virtual machines
US11042494B1 (en) 2018-06-21 2021-06-22 Amazon Technologies, Inc. Direct injection of a virtual interrupt
KR20210066288A (ko) * 2019-11-28 2021-06-07 한국전자통신연구원 전자 장치, 인터럽트 설정 제어 방법 및 저장 매체

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8286162B2 (en) * 2005-12-30 2012-10-09 Intel Corporation Delivering interrupts directly to a virtual processor
EP3244307A1 (en) * 2012-03-29 2017-11-15 INTEL Corporation Architecture and method for managing interrupts in a virtualized environment

Also Published As

Publication number Publication date
US20160098289A1 (en) 2016-04-07

Similar Documents

Publication Publication Date Title
US10997093B2 (en) NVME data processing method and NVME device
US10884799B2 (en) Multi-core processor in storage system executing dynamic thread for increased core availability
US11500810B2 (en) Techniques for command validation for access to a storage device by a remote client
JP5598493B2 (ja) 情報処理装置、演算装置および情報転送方法
CN108628685B (zh) 用本地BMC在结构上NVMe内分配共享资源的系统、设备和方法
CN107046508B (zh) 报文接收方法及网络设备
TWI601093B (zh) 執行對於圖像硬體之排程操作技術
KR20160039846A (ko) 인터럽트 처리 시스템 및 인터럽트 처리 방법
US20140068134A1 (en) Data transmission apparatus, system, and method
US10540219B2 (en) Reset and error handling in application specific integrated circuits
US20110307639A1 (en) Virtual serial port management system and method
CN108351783A (zh) 多核数字信号处理系统中处理任务的方法和装置
JP2014106587A (ja) I/oデバイスの制御方法及び仮想計算機システム
US20170103031A1 (en) Method for application-aware interrupts management
WO2012069232A1 (en) Managing compressed memory using tiered interrupts
US11005970B2 (en) Data storage system with processor scheduling using distributed peek-poller threads
US20210334228A1 (en) Managing network interface controller-generated interrupts
US20200073707A1 (en) System and method for managing tasks and task workload items between address spaces and logical partitions
US20210294761A1 (en) Systems and methods for message tunneling
KR101783164B1 (ko) 정보 처리 장치, 정보 처리 방법, 기록 매체, 계산 처리 장치, 계산 처리 방법
CN115168256A (zh) 中断控制方法、中断控制器、电子设备、介质和芯片
WO2023076591A1 (en) Hardware management of direct memory access commands
JPWO2015173853A1 (ja) 情報処理装置、その処理方法、及び入出力装置
EP4031965A1 (en) Providing interrupts from an input-output memory management unit to guest operating systems
KR20210031347A (ko) 처리 작업을 수행하는 방법, 장치, 기기 및 저장 매체

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination