KR20230025915A - 시스템 및 인터럽트 처리 방법 - Google Patents
시스템 및 인터럽트 처리 방법 Download PDFInfo
- Publication number
- KR20230025915A KR20230025915A KR1020237002968A KR20237002968A KR20230025915A KR 20230025915 A KR20230025915 A KR 20230025915A KR 1020237002968 A KR1020237002968 A KR 1020237002968A KR 20237002968 A KR20237002968 A KR 20237002968A KR 20230025915 A KR20230025915 A KR 20230025915A
- Authority
- KR
- South Korea
- Prior art keywords
- interrupt
- virtual
- identifier
- physical
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 73
- 238000013507 mapping Methods 0.000 claims description 119
- 238000012545 processing Methods 0.000 claims description 55
- 230000008569 process Effects 0.000 claims description 22
- 238000013508 migration Methods 0.000 claims description 11
- 230000005012 migration Effects 0.000 claims description 11
- 238000013519 translation Methods 0.000 claims description 9
- 238000003672 processing method Methods 0.000 claims description 7
- 238000007726 management method Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/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)
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
Abstract
본 출원의 실시예들은 컴퓨팅 디바이스를 개시하며, 컴퓨팅 디바이스 분야에 적용된다. 본 출원에서, 호스트 머신에 의해 획득된 가상 인터럽트는 물리적 레이어의 물리적 인터럽트에 매핑되고, 물리적 인터럽트에 대응하는 가상 인터럽트 식별자는 물리적 레이어를 이용하여 가상 프로세서에 전달된다. 하드웨어 레이어가 가상 인터럽트 식별자를 가상 프로세서에 투명하게 전송할 때, 가상 프로세서는 종료될 필요가 없다. 이는 소프트웨어가 가상 인터럽트 라우팅을 구현할 때 가상 프로세서의 종료에 의해 야기되는 지연을 줄인다.
Description
본 출원은 2020년 6월 29일자로 중국 특허청에 출원되고 발명의 명칭이 "시스템 및 인터럽트 처리 방법(SYSTEM AND INTERRUPT HANDLING METHOD)"인 중국 특허 출원 번호 제202010604993.9호에 대한 우선권을 주장하며, 그것의 전체 내용은 참조에 의해 여기에 포함된다.
기술 분야
본 출원은 컴퓨터 분야에 관한 것으로, 구체적으로는 시스템 및 인터럽트 처리 방법에 관한 것이다.
가상화 기술은 물리적 컴퓨터의 하드웨어의 "가상화" 및 "격리"를 구현하기 위해 호스트 머신 레이어 및 가상 컴퓨터 레이어를 포함한 특정 소프트웨어 레이어들을 물리적 컴퓨터에 추가한다. 각각의 소프트웨어 레이어는 상이한 실행 모드들, 예를 들어 사용자 모드 및 커널 모드를 포함한다. 소프트웨어 레이어들 및 실행 모드들의 다양화는 물리적 컴퓨터의 일부 요건들에 대한 프로세싱 단계들을 증가시키고, 이러한 요건들을 프로세싱하는 데에 있어서의 지연이 증가된다.
인터럽트 처리는 컴퓨팅 디바이스의 핵심적인 요건이다. 컴퓨팅 디바이스의 기존 인터럽트 처리 프로세스에서, 가상 머신 모니터(virtual machine monitor, VMM)는 인터럽트 가상화 기술을 이용하여 사용자에게 가상 인터럽트 컨트롤러 및 가상 인터럽트 변환 서비스를 제공한다. 가상 인터럽트를 가상 프로세서에 전달하는 프로세스는 가상 머신 모니터의 소프트웨어에 기초하여 제어된다. 구체적으로, VMM은 가상 프로세서에 대응하는 레지스터에 가상 인터럽트를 기입함으로써 프로세스를 구현할 수 있다. 그러나, 기존 구현에서, VMM은 가상 머신의 가상 CPU가 물리적 CPU를 사용할 수 있는 권한을 재획득하도록 스케줄링되는 경우에만 가상 CPU에 대응하는 시스템 레지스터에 가상 인터럽트를 기입할 수 있다. 가상 인터럽트의 적시의 기입을 보장하기 위해, VMM은 선제적으로(proactively) 가상 머신의 종료(VM-exit)를 트리거하고, 다음 가상 머신 진입(VM-entry)이 발생할 때 가상 CPU에 대응하는 시스템 레지스터에 가상 인터럽트를 기입한다. 이 경우, VMM이 가상 인터럽트를 기입할 때마다 가상 프로세서가 일시적으로 실행을 중지한다. 결과적으로, 가상 인터럽트 처리에서의 지연이 증가된다.
제1 양태에 따르면, 본 출원은 컴퓨팅 디바이스를 제공한다. 컴퓨팅 디바이스는 하드웨어 레이어 및 하드웨어 레이어에서 실행되는 호스트 머신을 포함하고, 호스트 머신은 가상 인터럽트를 획득하도록 구성된다. 가상 인터럽트는 가상 머신 내의 가상 디바이스에 대해 인에이블될 수 있고, 가상 디바이스는 소프트웨어에 의해 시뮬레이션된 가상 디바이스, 예를 들어 소프트웨어에 의해 시뮬레이션된 직렬 포트일 수 있다. 호스트 머신 내의 백엔드 드라이버(예를 들어, QEMU)는 가상 머신의 거동을 인에이블하는 가상 인터럽트를 획득할 수 있고, 가상 인터럽트를 트리거할 수 있다. 가상 인터럽트는 가상 디바이스 식별자(디바이스 ID) 및 가상 인터럽트 벡터 식별자(벡터 ID)를 포함할 수 있다. 인터럽트 자원이 초기화되면, 가상 디바이스 식별자(디바이스 ID)와 가상 인터럽트 벡터 식별자(벡터 ID)가 가상 머신의 가상 프로세서에 할당된다. 각각의 가상 프로세서는 하나의 가상 디바이스 식별자(디바이스 ID) 및 복수의 가상 인터럽트 벡터 식별자(벡터 ID)에 고유하게 대응한다. 가상 인터럽트 내의 가상 디바이스 식별자(디바이스 ID)는 어느 가상 디바이스가 가상 인터럽트를 인에이블하는지를 나타낼 수 있고, 가상 인터럽트 벡터 식별자(벡터 ID)는 가상 디바이스에 의해 할당된 복수의 가상 인터럽트에서 특정 가상 인터럽트를 나타낼 수 있다.
가상 인터럽트를 트리거한 후, 백엔드 드라이버(예를 들어, QEMU)는 가상 인터럽트를 VMM에 전달할 수 있다. 대응하여, 호스트 머신(200) 내의 VMM은 가상 인터럽트를 획득할 수 있고;
가상 인터럽트에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하고, 물리적 인터럽트 식별자를 하드웨어 레이어에 전달할 수 있다. 하드웨어 레이어는: 물리적 인터럽트 식별자에 기초하여 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하고 - 가상 인터럽트는 타겟 가상 프로세서를 인터럽트하도록 구성되고, 가상 인터럽트 및 물리적 인터럽트 식별자는 가상 프로세서 식별자에 고유하게 대응하고, 가상 프로세서 식별자는 타겟 가상 프로세서를 나타냄 -; 가상 인터럽트 식별자를 타겟 가상 프로세서에 전달하도록 구성된다.
구체적으로, 하드웨어 레이어는 물리적 인터럽트 변환 서비스(interrupt translation service, ITS) 및 물리적 일반 인터럽트 컨트롤러(generic interrupt controller, GIC)를 포함할 수 있다. 물리적 ITS는 물리적 인터럽트를 획득할 수 있고, 물리적 인터럽트는 가상 CPU를 인터럽트하는 데 사용된다. 물리적 ITS는 물리적 인터럽트에 대응하는 가상 CPU를 결정할 수 있고, 물리적 인터럽트에 대응하는 가상 인터럽트 식별자(특정 가상 인터럽트를 나타낼 수 있음)를 결정할 수 있다. 물리적 GIC는 가상 인터럽트 식별자를 가상 CPU에 송신할 수 있다. 물리적 ITS는 레지스터 및 연산 회로를 포함할 수 있다. 레지스터는 물리적 인터럽트와 가상 인터럽트 식별자 간의 대응관계를 저장할 수 있고(더 구체적으로, 레지스터는 물리적 인터럽트와 가상 인터럽트 식별자 간의 대응관계의 기본 주소를 저장함); 및 물리적 인터럽트와 가상 프로세서 식별자 사이의 대응관계(더 구체적으로, 레지스터는 물리적 인터럽트와 가상 프로세서 식별자 사이의 대응관계의 기본 주소를 저장함)를 저장할 수 있다. 연산 회로는 레지스터로부터 대응관계들을 획득할 수 있고(연산 회로는 레지스터로부터 기본 주소들을 획득할 수 있고, 기본 주소들에 기초하여 메모리로부터 물리적 인터럽트와 가상 인터럽트 식별자 간의 대응관계 및 물리적 인터럽트와 가상 인터럽트 식별자 간의 대응관계를 획득할 수 있음); 수신된 물리적 인터럽트 식별자에 대응하는 특정 가상 CPU를 결정하고, 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자를 결정할 수 있다. GIC는 ARM 아키텍처의 칩에서 연산 회로에 기초하여 구현될 수 있으며, 물리적 GIC는 어드밴스드 마이크로컨트롤러 버스 아키텍처(advanced microcontroller bus architecture, AMBA), 및 ARM 아키텍처와 호환가능한 시스템-온-칩(SoC)의 주변 디바이스이다. 물리적 GIC는 온-칩 AMBA 버스 인터페이스를 갖는다.
하드웨어 레이어가 타겟 가상 프로세서에 가상 인터럽트 식별자를 투명하게 전송할 때, 하드웨어 레이어가 가상 프로세서에 대응하는 시스템 레지스터에 가상 인터럽트 식별자를 기입하도록 요구되지 않고, 그러면 가상 프로세서가 다시 실행될 때, 가상 프로세서는 시스템 레지스터로부터 가상 인터럽트 식별자를 획득한다. 대신에, 가상 인터럽트 식별자는 타겟 가상 프로세서에 직접 전달된다(구체적으로, 가상 인터럽트 식별자는 가상 프로세서에 대응하며 물리적 메모리 내에 있는 인터페이스에 기입될 수 있고, 가상 프로세서는 인터페이스에 기초하여 가상 인터럽트 식별자를 획득할 수 있음). 따라서, 타겟 가상 프로세서는 종료될 필요가 없다. 이는 소프트웨어가 가상 인터럽트 라우팅을 구현할 때 가상 프로세서의 종료로 인해 야기되는 지연을 감소시킨다.
임의적 구현에서, 가상 인터럽트는 가상 인터럽트 식별자에 고유하게 대응한다.
임의적 구현에서, 컴퓨팅 디바이스는 하드웨어 레이어에 기초하여 구현되는 물리적 인터럽트 변환 서비스(ITS) 및 물리적 일반 인터럽트 컨트롤러(GIC)를 포함한다.
물리적 ITS는 물리적 인터럽트 식별자에 기초하여 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하도록 구성된다.
물리적 GIC는 가상 인터럽트 식별자를 타겟 가상 프로세서에 전달하도록 구성된다.
임의적 구현에서, 호스트 머신은 가상 인터럽트 및 미리 구성된 제1 매핑 관계에 기초하여 가상 인터럽트에 대응하는 물리적 인터럽트 식별자를 획득하도록 추가로 구성되고, 제1 매핑 관계는 복수의 가상 인터럽트, 및 각각의 가상 인터럽트와 물리적 인터럽트 식별자 간의 대응관계를 나타낸다. 예를 들어, 제1 매핑 관계는 N개의 가상 인터럽트 및 N개의 물리적 인터럽트 식별자를 포함할 수 있다. N개의 가상 인터럽트는 N개의 물리적 인터럽트 식별자에 일대일 대응하고, N개의 가상 인터럽트 각각이 하나의 물리적 인터럽트 식별자에 대응하고, N개의 물리적 인터럽트 식별자 각각은 하나의 가상 인터럽트에 대응한다.
하드웨어 레이어는 물리적 인터럽트 식별자 및 미리 구성된 제2 매핑 관계에 기초하여 물리적 인터럽트에 대응하는 가상 인터럽트 식별자를 획득하도록 추가로 구성되고, 제2 매핑 관계는 복수의 물리적 인터럽트 식별자, 및 각각의 물리적 인터럽트 식별자와 가상 인터럽트 식별자 간의 대응관계를 나타낸다. 예를 들어, 제1 매핑 관계는 N개의 물리적 인터럽트 식별자 및 N개의 가상 인터럽트 식별자를 포함할 수 있다. N개의 물리적 인터럽트 식별자는 N개의 가상 인터럽트 식별자에 일대일 대응하고, N개의 물리적 인터럽트 식별자 각각은 하나의 가상 인터럽트 식별자에 대응하고, N개의 가상 인터럽트 식별자 각각은 하나의 물리적 인터럽트 식별자에 대응한다.
임의적 구현에서, 하드웨어 레이어는 물리적 인터럽트 식별자 및 미리 구성된 제3 매핑 관계에 기초하여 대응하는 가상 프로세서 식별자를 획득하도록 추가로 구성되고, 제3 매핑 관계는 복수의 물리적 인터럽트 식별자, 및 각각의 물리적 인터럽트 식별자와 가상 프로세서 식별자 간의 대응관계를 나타낸다. 예를 들어, 제1 매핑 관계는 N개의 물리적 인터럽트 식별자 및 N개의 가상 프로세서 식별자를 포함할 수 있고, N개의 물리적 인터럽트 식별자 각각은 하나의 가상 프로세서 식별자에 대응하고, N개의 가상 프로세서 식별자 각각은 하나 이상의 물리적 인터럽트 식별자에 대응한다.
VMM에 의해 획득된 가상 인터럽트를 하드웨어 레이어를 이용하여 대응하는 가상 프로세서에 투명하게 전송하고, 가상 프로세서가 올바른 가상 인터럽트 식별자를 수신할 것을 보장하기 위해, 새로운 매핑 관계(이하 제1 매핑 관계라고 지칭될 수 있음)가 VMM에 미리 구성되어야 하며, 새로운 매핑 관계(이하 제2 매핑 관계 및 제3 매핑 관계라고 지칭될 수 있음)가 하드웨어 레이어에 적응적으로 구성된다. VMM에 구성된 매핑 관계와 하드웨어 레이어에 구성된 매핑 관계는 상호간에 구성될 수 있고, 그에 의해 VMM은 제1 매핑 관계에 기초하여, 획득된 가상 인터럽트(가상 디바이스 식별자(디바이스 ID) 및 가상 인터럽트 벡터 식별자(벡터 ID)를 포함함)를 하드웨어 레이어(예를 들어, 물리적 ITS)에 의해 식별될 수 있는 물리적 인터럽트 식별자(예를 들어, 물리적 디바이스 식별자(디바이스 ID) 및 물리적 인터럽트 벡터 식별자(벡터 ID)를 포함함)로 변환할 수 있다. 또한, 하드웨어 레이어는 미리 구성된 제2 매핑 관계에 기초하여 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자를 결정할 수 있고; 미리 구성된 제3 매핑 관계에 기초하여 물리적 인터럽트 식별자에 대응하는 가상 프로세서 식별자를 결정할 수 있다. 가상 프로세서 식별자는 타겟 가상 프로세서에 고유하게 대응한다.
가상 프로세서가 올바른 가상 인터럽트 식별자를 수신할 수 있도록 보장하기 위해, 미리 구성된 제2 매핑 관계에 기초하여 하드웨어 레이어에 의해 결정되는 가상 인터럽트 식별자는 소프트웨어를 통해 구현되는 가상 인터럽트 전달에서 VMM에 의해 결정되는 가상 인터럽트에 대응하는 가상 인터럽트 식별자와 일치해야 한다. 또한, 미리 구성된 제3 매핑 관계에 기초하여 하드웨어 레이어에 의해 결정되는 가상 프로세서 식별자는 소프트웨어를 통해 구현되는 가상 인터럽트 전달에서 VMM에 의해 결정되는 가상 인터럽트에 대응하는 가상 프로세서 식별자와 일치해야 한다.
임의적 구현에서, 하드웨어 레이어는 물리적 인터럽트 식별자에 기초하여 물리적 인터럽트를 생성하고;
물리적 인터럽트에 기초하여 가상 인터럽트 식별자 및 가상 프로세서 식별자를 획득하도록
추가로 구성된다.
구현에서, 호스트 머신은 하드웨어 레이어 상의 물리적 ITS에 물리적 인터럽트 식별자를 지니는 인터럽트 생성 요청을 전달할 수 있고, 물리적 ITS는 물리적 인터럽트 식별자를 지니는 인터럽트 생성 요청에 기초하여 대응하는 물리적 인터럽트를 생성할 수 있다.
다른 임의적 구현에서, 호스트 머신은 하드웨어 레이어에 위치된 타겟 레지스터에 물리적 인터럽트 식별자를 기입할 수 있고, 그에 의해 타겟 레지스터는 물리적 인터럽트를 생성할 수 있다.
본 출원의 본 실시예에서, 호스트 머신은 물리적 인터럽트 식별자를 하드웨어 레이어에 위치된 타겟 레지스터에 기입할 수 있다. 타겟 레지스터는 소프트웨어를 통해 물리적 인터럽트를 생성할 수 있는 능력을 갖고, 물리적 ITS는 타겟 레지스터로부터 물리적 인터럽트를 획득할 수 있다.
임의적 구현에서, 가상 인터럽트는 가상 디바이스 식별자 및 가상 인터럽트 벡터 식별자를 포함한다.
호스트 머신은 가상 인터럽트에 기초하여 가상 디바이스 식별자에 대응하는 물리적 디바이스 식별자 및 가상 인터럽트 벡터 식별자에 대응하는 물리적 인터럽트 벡터 식별자를 획득하도록 추가로 구성된다. 물리적 인터럽트 식별자는 물리적 디바이스 식별자 및 물리적 인터럽트 벡터 식별자를 포함한다.
임의적 구현에서, 하드웨어 레이어는 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하도록 추가로 구성되고, 인터럽트 상태 정보는 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있는지를 나타낸다. 구체적으로, 인터럽트 상태 정보는 인터럽트 보류 상태(interrupt pending state), 인터럽트 우선순위 상태, 및 인터럽트 인에이블 상태 중 적어도 하나를 포함할 수 있다. 하드웨어 레이어는 인터럽트 상태 정보에 기초하여 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있음을 결정하도록 추가로 구성된다.
인터럽트 보류 정보는 가상 인터럽트가 보류/활성 상태에 있음을 나타낼 수 있고, 인터럽트 우선순위 상태는 프로세싱될 모든 가상 인터럽트에서 현재 가상 인터럽트의 우선순위를 나타낼 수 있으며, 인터럽트 인에이블 상태는 인터럽트가 프로세서에 전달될 수 있는지를 나타낼 수 있다. 구체적으로, 물리적 인터럽트 식별자가 인에이블 상태이고, 우선순위 상태 및 보류 상태가 조건을 만족하면, 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자는 가상 프로세서에 전달될 수 있다.
임의적 구현에서, 호스트 머신은:
가상 머신 라이브 마이그레이션 프로세스에서 하드웨어 레이어로부터 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하고 - 인터럽트 상태 정보는 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있는지를 나타내고, 인터럽트 상태 정보는 인터럽트 보류 상태, 인터럽트 우선순위 상태, 및 인터럽트 인에이블 상태 중 적어도 하나를 포함할 수 있음 -; 인터럽트 상태 정보를 그 컴퓨팅 디바이스가 아닌 컴퓨팅 디바이스의 하드웨어 레이어에 기입하도록
추가로 구성된다.
제2 양태에 따르면, 본 출원은 인터럽트 처리 방법을 제공한다. 이 방법은 호스트 머신에 적용되고, 호스트 머신은 하드웨어 레이어에서 실행되며, 방법은:
가상 인터럽트를 획득하는 단계; 및
가상 인터럽트에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하고, 물리적 인터럽트 식별자를 하드웨어 레이어에 전달하는 단계
를 포함하고, 그에 의해, 하드웨어 레이어는 물리적 인터럽트 식별자에 기초하여 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하고 - 가상 인터럽트는 타겟 가상 프로세서를 인터럽트하도록 구성되고, 가상 인터럽트 및 물리적 인터럽트 식별자는 가상 프로세서 식별자에 고유하게 대응하고, 가상 프로세서 식별자는 타겟 가상 프로세서를 나타냄 -; 가상 인터럽트 식별자를 타겟 가상 프로세서에 전달한다.
임의적 구현에서, 가상 인터럽트는 가상 인터럽트 식별자에 고유하게 대응한다.
임의적 구현에서, 가상 인터럽트에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하는 단계는:
가상 인터럽트 및 미리 구성된 제1 매핑 관계에 기초하여 가상 인터럽트에 대응하는 물리적 인터럽트 식별자를 획득하는 단계
를 포함하고, 제1 매핑 관계는 복수의 가상 인터럽트, 및 각각의 가상 인터럽트와 물리적 인터럽트 식별자 간의 대응관계를 나타낸다.
임의적 구현에서, 가상 인터럽트는 가상 디바이스 식별자 및 가상 인터럽트 벡터 식별자를 포함하고;
가상 인터럽트에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하는 단계는:
가상 인터럽트에 기초하여 가상 디바이스 식별자에 대응하는 물리적 디바이스 식별자 및 가상 인터럽트 벡터 식별자에 대응하는 물리적 인터럽트 벡터 식별자를 획득하는 단계
를 포함하고, 물리적 인터럽트 식별자는 물리적 디바이스 식별자 및 물리적 인터럽트 벡터 식별자를 포함한다.
임의적 구현에서, 방법은:
가상 머신 라이브 마이그레이션 프로세스에서 하드웨어 레이어로부터 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하는 단계 - 인터럽트 상태 정보는 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있는지를 나타내고, 인터럽트 상태 정보는 인터럽트 보류 상태, 인터럽트 우선순위 상태, 및 인터럽트 인에이블 상태 중 적어도 하나를 포함할 수 있음 -; 및
인터럽트 상태 정보를 그 컴퓨팅 디바이스가 아닌 컴퓨팅 디바이스의 하드웨어 레이어에 기입하는 단계
를 더 포함한다.
제3 양태에 따르면, 본 출원은 인터럽트 처리 방법을 제공한다. 이 방법은 컴퓨팅 디바이스에 적용되고, 컴퓨팅 디바이스는 하드웨어 레이어 및 하드웨어 레이어에서 실행되는 호스트 머신을 포함하며, 방법은:
하드웨어 레이어에 의해, 물리적 인터럽트 식별자에 기초하여 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하는 단계 - 물리적 인터럽트 식별자는 가상 인터럽트에 대응하고 가상 인터럽트에 기초하여 호스트 머신에 의해 획득되며 하드웨어 레이어에 송신되는 물리적 인터럽트 식별자이고, 가상 인터럽트는 타겟 가상 프로세서를 인터럽트하도록 구성되고, 가상 인터럽트 및 물리적 인터럽트 식별자는 가상 프로세서 식별자에 고유하게 대응하고, 가상 프로세서 식별자는 타겟 가상 프로세서를 나타냄 -; 및 가상 인터럽트 식별자를 타겟 가상 프로세서에 전달하는 단계를 포함한다.
임의적 구현에서, 가상 인터럽트는 가상 인터럽트 식별자에 고유하게 대응한다.
임의적 구현에서, 컴퓨팅 디바이스는 하드웨어 레이어에 기초하여 구현되는 물리적 인터럽트 변환 서비스(ITS) 및 물리적 일반 인터럽트 컨트롤러(GIC)를 포함한다.
하드웨어 레이어에 의해, 물리적 인터럽트 식별자에 기초하여 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하는 단계는:
물리적 ITS에 의해, 물리적 인터럽트 식별자에 기초하여 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하는 단계
를 포함한다.
가상 인터럽트 식별자를 타겟 가상 프로세서에 전달하는 단계는:
물리적 GIC에 의해, 가상 인터럽트 식별자를 타겟 가상 프로세서에 전달하는 단계
를 포함한다.
임의적 구현에서, 하드웨어 레이어에 의해, 물리적 인터럽트 식별자에 기초하여 대응하는 가상 인터럽트 식별자를 획득하는 단계는: 하드웨어 레이어에 의해, 물리적 인터럽트 식별자 및 미리 구성된 제2 매핑 관계에 기초하여 물리적 인터럽트에 대응하는 가상 인터럽트 식별자를 획득하는 단계를 포함하고, 제2 매핑 관계는 복수의 물리적 인터럽트 식별자, 및 각각의 물리적 인터럽트 식별자와 가상 인터럽트 식별자 간의 대응관계를 나타낸다.
임의적 구현에서, 방법은:
물리적 인터럽트 식별자 및 미리 구성된 제3 매핑 관계에 기초하여 대응하는 가상 프로세서 식별자를 획득하는 단계를 더 포함하고, 제3 매핑 관계는 복수의 물리적 인터럽트 식별자, 및 각각의 물리적 인터럽트 식별자와 가상 프로세서 식별자 간의 대응관계를 나타낸다.
임의적 구현에서, 하드웨어 레이어에 의해, 물리적 인터럽트 식별자에 기초하여 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하는 단계는:
하드웨어 레이어에 의해, 물리적 인터럽트 식별자에 기초하여 물리적 인터럽트를 생성하는 단계; 및
물리적 인터럽트에 기초하여 가상 인터럽트 식별자 및 가상 프로세서 식별자를 획득하는 단계
를 포함한다.
임의적 구현에서, 방법은:
하드웨어 레이어에 의해, 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하는 단계 - 인터럽트 상태 정보는 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있는지를 나타냄 -; 및 인터럽트 상태 정보에 기초하여 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있음을 결정하는 단계
를 더 포함한다.
임의적 구현에서, 방법은: 호스트 머신에 의해, 가상 머신 라이브 마이그레이션 프로세스에서 하드웨어 레이어로부터 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하고 - 인터럽트 상태 정보는 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있는지를 나타냄 -; 인터럽트 상태 정보를 그 컴퓨팅 디바이스가 아닌 컴퓨팅 디바이스의 하드웨어 레이어에 기입하는 단계를 더 포함한다.
제4 양태에 따르면, 본 출원은 인터럽트 처리 장치를 제공한다. 장치는:
가상 인터럽트를 획득하고, 가상 인터럽트에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하고, 물리적 인터럽트 식별자를 하드웨어 레이어에 전달하도록 구성되는 가상 인터럽트 처리 유닛; 및
물리적 인터럽트 식별자에 기초하여 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하고 - 가상 인터럽트는 타겟 가상 프로세서를 인터럽트하도록 구성되고, 가상 인터럽트 및 물리적 인터럽트 식별자는 가상 프로세서 식별자에 고유하게 대응하고, 가상 프로세서 식별자는 타겟 가상 프로세서를 나타냄 -; 가상 인터럽트 식별자를 타겟 가상 프로세서에 전달하도록 구성되는 물리적 인터럽트 처리 유닛
을 포함한다.
인터럽트 처리 장치는 컴퓨팅 디바이스에서 사용될 수 있다. 컴퓨팅 디바이스는 하드웨어 레이어, 및 하드웨어 레이어에서 실행되는 호스트 머신을 포함한다. 인터럽트 처리 장치는 호스트 머신에 배치된 가상 인터럽트 처리 유닛, 및 하드웨어 레이어에 배치된 물리적 인터럽트 처리 유닛을 포함한다.
임의적 구현에서, 가상 인터럽트는 가상 인터럽트 식별자에 고유하게 대응한다.
임의적 구현에서, 컴퓨팅 디바이스는 하드웨어 레이어에 기초하여 구현되는 물리적 인터럽트 변환 서비스(ITS) 및 물리적 일반 인터럽트 컨트롤러(GIC)를 포함한다.
물리적 ITS는 물리적 인터럽트 식별자에 기초하여 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하도록 구성된다.
물리적 GIC는 가상 인터럽트 식별자를 타겟 가상 프로세서에 전달하도록 구성된다.
임의적 구현에서, 가상 인터럽트 처리 유닛은 가상 인터럽트 및 미리 구성된 제1 매핑 관계에 기초하여 가상 인터럽트에 대응하는 물리적 인터럽트 식별자를 획득하도록 추가로 구성되고, 제1 매핑 관계는 복수의 가상 인터럽트, 및 각각의 가상 인터럽트와 물리적 인터럽트 식별자 간의 대응관계를 나타낸다.
물리적 인터럽트 처리 유닛은 물리적 인터럽트 식별자 및 미리 구성된 제2 매핑 관계에 기초하여 물리적 인터럽트에 대응하는 가상 인터럽트 식별자를 획득하도록 추가로 구성되고, 제2 매핑 관계는 복수의 물리적 인터럽트 식별자, 및 각각의 물리적 인터럽트 식별자와 가상 인터럽트 식별자 간의 대응관계를 나타낸다.
임의적 구현에서, 물리적 인터럽트 처리 유닛은 물리적 인터럽트 식별자 및 미리 구성된 제3 매핑 관계에 기초하여 대응하는 가상 프로세서 식별자를 획득하도록 추가로 구성되고, 제3 매핑 관계는 복수의 물리적 인터럽트 식별자, 및 각각의 물리적 인터럽트 식별자와 가상 프로세서 식별자 간의 대응관계를 나타낸다.
임의적 구현에서, 물리적 인터럽트 처리 유닛은:
물리적 인터럽트 식별자에 기초하여 물리적 인터럽트를 생성하고;
물리적 인터럽트에 기초하여 가상 인터럽트 식별자 및 가상 프로세서 식별자를 획득하도록
추가로 구성된다.
임의적 구현에서, 가상 인터럽트는 가상 디바이스 식별자 및 가상 인터럽트 벡터 식별자를 포함하고;
가상 인터럽트 처리 유닛은 가상 인터럽트에 기초하여 가상 디바이스 식별자에 대응하는 물리적 디바이스 식별자 및 가상 인터럽트 벡터 식별자에 대응하는 물리적 인터럽트 벡터 식별자를 획득하도록 추가로 구성되고, 물리적 인터럽트 식별자는 물리적 디바이스 식별자 및 물리적 인터럽트 벡터 식별자를 포함한다.
임의적 구현에서, 물리적 인터럽트 처리 유닛은 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하고 - 인터럽트 상태 정보는 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있는지를 나타냄 -; 인터럽트 상태 정보에 기초하여 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있음을 결정하도록 추가로 구성된다.
임의적 구현에서, 가상 인터럽트 처리 유닛은:
가상 머신 라이브 마이그레이션 프로세스에서 하드웨어 레이어로부터 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하고 - 인터럽트 상태 정보는 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있는지를 나타냄 -; 인터럽트 상태 정보를 그 컴퓨팅 디바이스가 아닌 컴퓨팅 디바이스의 하드웨어 레이어에 기입하도록
추가로 구성된다.
제5 양태에 따르면, 본 출원의 실시예는 컴퓨팅 디바이스를 제공한다. 컴퓨팅 디바이스는 버스를 통해 연결된 프로세서 및 메모리를 포함한다. 프로세서는 제2 양태 또는 제3 양태의 임의의 임의적(optional) 인터럽트 처리 방법을 구현하기 위해 메모리 내의 코드를 호출할 수 있다.
본 출원의 실시예는 컴퓨팅 디바이스를 제공한다. 컴퓨팅 디바이스는 하드웨어 레이어, 및 하드웨어 레이어에서 실행되는 호스트 머신을 포함한다. 호스트 머신은 가상 인터럽트를 획득하고, 가상 인터럽트에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하고, 물리적 인터럽트 식별자를 하드웨어 레이어에 전달하도록 구성된다. 하드웨어 레이어는 물리적 인터럽트 식별자에 기초하여 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하고 - 가상 인터럽트는 타겟 가상 프로세서를 인터럽트하도록 구성되고, 가상 인터럽트 및 물리적 인터럽트 식별자는 가상 프로세서 식별자에 고유하게 대응하고, 가상 프로세서 식별자는 타겟 가상 프로세서를 나타냄 -; 가상 인터럽트 식별자를 타겟 가상 프로세서에 전달하도록 구성된다. 전술한 방식으로, 호스트 머신에 의해 획득된 가상 인터럽트는 물리적 레이어의 물리적 인터럽트에 매핑되고, 가상 인터럽트 식별자는 물리적 레이어를 사용하여 가상 프로세서에 전달된다. 하드웨어 레이어가 가상 인터럽트 식별자를 가상 프로세서에 투명하게 전송하면, 가상 프로세서는 종료될 필요가 없다. 이는 소프트웨어가 가상 인터럽트 라우팅을 구현할 때 가상 프로세서의 종료로 인해 야기되는 지연을 감소시킨다.
도 1은 본 출원의 실시예에 따른 컴퓨팅 노드의 아키텍처의 개략도이다.
도 2a는 본 발명의 실시예에 따른 컴퓨팅 디바이스의 개략도이다.
도 2b는 본 발명의 실시예에 따른 인터럽트 처리의 개략도이다.
도 3은 본 발명의 실시예에 따른 인터럽트 처리의 개략도이다.
도 4는 본 발명의 실시예에 따른 인터럽트 처리의 개략도이다.
도 5는 본 발명의 실시예에 따른 인터럽트 처리의 개략도이다.
도 6은 본 발명의 실시예에 따른 인터럽트 처리의 개략도이다.
도 7은 본 발명의 실시예에 따른 인터럽트 처리의 개략도이다.
도 8은 본 발명의 실시예에 따른 인터럽트 처리 장치의 개략도이다.
도 9는 본 발명의 실시예에 따른 컴퓨팅 디바이스의 개략도이다.
도 2a는 본 발명의 실시예에 따른 컴퓨팅 디바이스의 개략도이다.
도 2b는 본 발명의 실시예에 따른 인터럽트 처리의 개략도이다.
도 3은 본 발명의 실시예에 따른 인터럽트 처리의 개략도이다.
도 4는 본 발명의 실시예에 따른 인터럽트 처리의 개략도이다.
도 5는 본 발명의 실시예에 따른 인터럽트 처리의 개략도이다.
도 6은 본 발명의 실시예에 따른 인터럽트 처리의 개략도이다.
도 7은 본 발명의 실시예에 따른 인터럽트 처리의 개략도이다.
도 8은 본 발명의 실시예에 따른 인터럽트 처리 장치의 개략도이다.
도 9는 본 발명의 실시예에 따른 컴퓨팅 디바이스의 개략도이다.
이하는 첨부 도면들을 참조하여 본 출원의 실시예들을 설명한다. 기술된 실시예들은 본 출원의 실시예들의 전부가 아닌 단지 일부임이 명백하다. 본 기술분야의 통상의 기술자는 기술 개발 및 새로운 시나리오의 출현으로, 본 출원의 실시예들에서 제공되는 기술적 솔루션들이 유사한 기술 문제에도 적용될 수 있음을 알 수 있다.
본 출원의 명세서, 청구항들, 및 첨부 도면들에 있어서, "제1", "제2" 등의 용어는 유사한 객체들을 구별하도록 의도된 것이고, 반드시 특정한 순서 또는 시퀀스를 나타내는 것은 아니다. 이러한 방식으로 명명된 데이터는 적절한 상황들에서 상호교환 가능하므로, 여기에 설명된 본 발명의 실시예들은 여기에 도시되거나 설명된 순서가 아닌 다른 순서들로 구현될 수 있음을 이해해야 한다. 또한, 용어 "포함한다", "갖는다", 및 이들의 임의의 다른 변형은 비-배타적 포함을 커버하도록 의도된다. 예를 들어, 단계들 또는 모듈들의 목록을 포함하는 프로세스, 방법, 시스템, 제품, 또는 디바이스는 명시적으로 나열된 단계들 또는 모듈들로 반드시 제한되는 것이 아니라, 명시적으로 나열되지 않았거나 프로세스, 방법, 제품, 또는 디바이스에 내재된 다른 단계들 또는 모듈들을 포함할 수 있다. 본 출원의 단계들의 이름들 또는 번호들은 방법 절차 내의 단계들이 이름들 또는 번호들에 의해 표시되는 시간/논리적 시퀀스로 수행되어야 함을 의미하지 않는다. 명명되거나 번호가 매겨진 절차 내의 단계들의 실행 시퀀스는, 동일하거나 유사한 기술적 효과들이 달성될 수 있다면, 달성될 기술적 목표에 기초하여 변경될 수 있다.
또한, 본 발명의 설명에서, 달리 언급되지 않는 한, "복수"는 둘 이상을 의미한다. 본 출원에서, "및/또는"이라는 용어는 연관된 객체들을 설명하기 위한 연관 관계만을 설명하며, 세 가지 관계가 존재할 수 있음을 나타낸다. 예를 들어, A 및/또는 B, 또는 A/B는 다음 세 가지 경우를 나타낼 수 있다: A 단독으로 존재하는 것, A와 B 둘 다 존재하는 것, 및 B 단독으로 존재하는 것.
본 발명의 실시예들의 이해를 용이하게 하기 위해, 도 1에 도시된 컴퓨팅 노드(100)는 본 출원에서 가상화 분야의 몇 가지 기본 개념을 설명하기 위한 예로서 먼저 사용된다. 컴퓨팅 노드(100)는 본 출원의 실시예들에서 컴퓨팅 디바이스일 수 있다.
가상화는 컴퓨팅 노드의 하드웨어 레이어에서 하드웨어 자원(예를 들어, 프로세서 및 메모리 내의 저장 공간 및 네트워크 자원들)을 가상화한 다음, 가상화된 하드웨어 자원을 복수의 가상 컴퓨터와 공유하여 사용하는 것이다. 가상 컴퓨터는 모든 타입의 컴퓨팅 디바이스에서 소프트웨어를 통해 가상화된 실행 환경의 일반적인 용어이며, 가상 컴퓨터는 가상 머신 및 컨테이너를 포함한다.
도 1에 도시된 바와 같이, 컴퓨팅 노드(100)는 하드웨어 레이어, 호스트 머신 레이어 및 가상화 레이어를 포함할 수 있고; 가상화 레이어는 두 개의 가상 머신을 포함한다. 하드웨어 레이어는 2개의 프로세서(110), 메모리(120), 및 물리적 인터럽트 관리 유닛(160)과 같은 하드웨어를 포함한다. 다른 실시예에서, 더 많거나 더 적은 프로세서(110) 및 가상 머신이 있을 수 있다.
하나 이상의 가상 머신(virtual machines, VMs)은 소프트웨어를 통해 물리적 컴퓨터에서 시뮬레이션을 통해 획득된다. 이러한 가상 머신들은 완전히 격리된 환경에서 실행되며 실제 컴퓨터들처럼 동작한다. 게스트 운영 체제(guest operating system, guest OS)는 가상 머신에 설치될 수 있으며, 하나 이상의 애플리케이션이 게스트 운영 체제에서 실행될 수 있다. 가상 머신은 또한 네트워크 자원들에 액세스할 수 있다. 가상 머신에서 실행되는 애플리케이션은 실제 컴퓨터의 것처럼 동작한다.
가상 프로세서(예를 들어, 도 1의 110-v)는 가상화 기술에서 공유 또는 슬라이싱 방식으로 가상 컴퓨터에 제공되는 물리적 프로세싱 유닛, 예를 들어 가상 CPU(virtual central processing unit, vCPU)를 표현한 것이다. 하나의 가상 컴퓨터는 가상 컴퓨터를 서빙하는 하나 이상의 가상 프로세서를 가질 수 있다. 복수의 가상 프로세서가 존재하는 경우, 통상적으로 하나의 가상 프로세서가 주 가상 프로세서이고, 나머지는 보조 가상 프로세서들이다.
호스트 머신 운영 체제(170) 및 VMM(180)은 호스트 머신 내에 배치되며, VMM(180)은 하이퍼바이저, 또는 다른 가상화 아키텍처의 다른 타입의 가상 모니터링 장치와 동등하다. VMM(180)은 호스트 머신 운영 체제(170) 내에 배치될 수 있거나, 호스트 머신 운영 체제(170)와 별도로 배치될 수 있다. VMM(180)은 VMM(180)에서 실행되는 하나 이상의 가상 머신을 관리할 책임이 있다.
가상 머신(VM)은 가상 하드웨어 레이어, 게스트 운영 체제(190), 및 복수의 애플리케이션을 포함한다. 가상 하드웨어 레이어는 가상 메모리(도면에 도시되지 않음) 및 가상 프로세서(110-v)와 같은 가상 하드웨어를 포함한다. 도 1에 도시된 바와 같이, 본 실시예는 2개의 가상 머신을 포함하고, 각각의 가상 머신은 3개의 가상 프로세서(110-v)를 포함한다. 가상 프로세서(110-v)는 소프트웨어와 하드웨어를 결합하여 구현된다. 가상 프로세서(110-v)의 실행은 물리적 코어에 의해 소프트웨어 프로그램을 판독 및 실행함으로써 실제로 구현된다. 예를 들어, 하나의 물리적 코어는 가상 프로세서(110-v)를 구현하기 위해 물리적 코어의 하드웨어 지원 가상화의 특정 모드에서 소프트웨어 프로그램을 판독하고 소프트웨어 프로그램을 실행한다. 따라서, 가상 프로세서(110-v)는 물리적 코어에 스케줄링되어야 한다.
가상 프로세서(110-v)는 물리적 코어에 바인딩될 수 있다. 구체적으로 말하면, 하나의 가상 프로세서(110-v)는 물리적 코어에서 고정적으로 실행되며, 다른 물리적 코어에서 실행되도록 스케줄링될 수 없다. 이 경우, 가상 프로세서는 코어 바인딩이다. 요건에 따라 하나의 가상 프로세서(110-v)가 상이한 물리적 코어들에서 실행되도록 스케줄링될 수 있는 경우, 가상 프로세서는 코어 바인딩이 아니다.
도 1에 도시된 가상 프로세서들(110-v)의 총 수량은 6이고, 이는 물리적 코어들의 수량 4보다 크다. 이러한 시나리오는 물리적 프로세서 오버커밋이라고 지칭된다. 물리적 프로세서 오버커밋의 경우, 복수의 가상 프로세서는 타임 슬라이싱 방식 또는 다른 방식으로 동일한 물리적 코어를 공유할 수 있다. 이러한 물리적 코어는 비-배타적 코어라고 지칭된다. 확실히, 비-배타적 코어는 비-오버커밋의 경우에도 발생할 수 있다. 물리적 코어가 가상 프로세서에 바인딩되고 다른 가상 프로세서들에 의해서는 공유되지 않는 경우, 물리적 코어는 배타적 코어이다.
가상 머신은 독립된 컴퓨터에 동등한 것으로 이해되어야 하며, 또한 가상 머신에 의해 수행되는 액션은 가상 프로세서에 의해 수행되는 것으로 간주될 수 있다. 그러나, 가상 프로세서는 소프트웨어를 통해 구현된다. 따라서, 가상 프로세서에 의해 수행되는 액션은 실제로, 가상 프로세서에 의해 실행되는 물리적 코어 또는 물리적 프로세서에 의해 수행된다. 본 발명의 복수의 실시예에서, 현재 시나리오의 기술적인 표현 관습에 부합하도록, 전술한 표현 방식들이 선택적으로 사용된다.
가상 머신은 컨테이너를 포함할 수 있으며, 컨테이너는 애플리케이션과 동등하다. 일부 다른 실시예들에서, 가상화 레이어는 경량의 가상화 기술, 예를 들어 libOS(190)를 사용하여 구현된다. 하나의 libOS는 일반적으로 하나의 애플리케이션을 포함한다. 전체 libOS는 단일 주소 공간 이미지를 형성하기 위해 애플리케이션에 링크되는 하나 이상의 라이브러리를 포함한다. 본 출원의 실시예들에서, 종래의 가상화 기술을 이용하여 구현된 가상 머신이 통상적으로 예로서 사용된다. 다른 타입의 가상화 아키텍처에 대해서는 가상 머신의 구현을 참조한다.
관리 레이어로서, 호스트(host) 머신은 하드웨어 자원들을 관리 및 할당하고, 가상 머신을 위한 가상 하드웨어 플랫폼을 제시하고, 가상 머신의 스케줄링 및 격리를 구현하는 등을 위해 구성된다. 일부 구현들에서, 호스트 머신 레이어는 호스트 머신 운영 체제 및 가상 모니터링 장치, 예를 들어 가상 머신 모니터(virtual machine monitor, VMM) 또는 하이퍼바이저를 포함한다. 가상 모니터링 장치는 호스트 머신 운영 체제에 배치될 수 있거나, 호스트 머신 운영 체제 외부에 배치될 수 있다. 일부 다른 구현들에서, "호스트 머신 레이어"는 하나의 특권 가상 머신(예를 들어, 가상화 아키텍처 Xen)을 더 포함할 수 있다. 가상 하드웨어 플랫폼은 가상 하드웨어 플랫폼에서 실행되는 각각의 가상 컴퓨터에 대해, 가상 프로세서, 가상 메모리, 가상 디스크, 및 가상 네트워크 인터페이스 카드와 같은 다양한 하드웨어 자원들을 제공한다. 가상 컴퓨터는 가상 컴퓨터를 위한 호스트 머신 레이어에 의해 준비된 가상 하드웨어 플랫폼에서 실행된다. 본 출원에서 호스트 머신 레이어는 때때로 간단히 호스트 머신이라고 지칭된다.
호스트 머신은 백엔드 드라이버(예를 들어, 오픈 소스 QEMU와 같은 소프트웨어)를 더 포함할 수 있으며, 이는 사용자에 의해 설정된 캐시 구성 및 캐시 정책, 예를 들어 캐시 크기, 캐시 타입 및 캐시 우선순위를 파싱하는 것을 포함하여 가상 머신에 대한 캐시로 가상 디스크를 시뮬레이트하고; 가상 머신에 대한 사용자 구성을 충족하는 가상 머신 캐시로 가상 디스크를 시뮬레이트하고; 프런트 엔드 드라이버에 의해 요구되는 제1 물리적 주소의 시뮬레이션을 제공하도록 구성되며; 가상화 관리에서 캐시 속성 수정에 관련된 관리 동작들, 예를 들어 온라인 캐시 용량 확장 및 축소와 같은 태스크들을 개시하는 것을 담당한다. 백엔드 드라이버는 가상 머신의 가상 인터럽트 인에이블 거동을 획득하고, 대응하는 가상 인터럽트를 트리거하고, 가상 인터럽트를 VMM에 전달할 수 있다.
도 1에 도시된 호스트 머신에 포함된 QEMU는 예일 뿐이라는 점을 이해해야 한다. 실제 애플리케이션에서, 호스트 머신은 다른 타입의 백엔드 드라이버를 더 포함할 수 있다.
가상 모니터링 장치로서, VMM(180)은 각각의 가상 머신(VM)의 가상 프로세서들(110-v)을 스케줄링하는 것을 담당한다. 예를 들어, 커널 기반 가상 머신(kernel-based virtual machine, KVM)은 전형적인 VMM이다.
가상 인터럽트 관리 유닛(181)은 호스트 머신 레이어에 배치된다. VMM(180)이 호스트 머신 운영 체제(170)에 배치될 때, 가상 인터럽트 관리 유닛(181)은 호스트 머신 운영 체제(170)에 배치될 수 있거나, VMM(180)에 배치될 수 있거나; 부분적으로는 호스트 머신 운영 체제(170)에 배치되고 부분적으로는 VMM(180)에 배치될 수 있다. VMM(180)이 호스트 머신 운영 체제(170)에 배치될 때, 가상 인터럽트 관리 유닛(181)은 VMM(180)에 배치될 수 있거나; VMM(180) 이외의 호스트 머신 운영 체제(170)의 공간에 배치될 수 있거나; 부분적으로는 VMM(180)에 배치되고 부분적으로는 VMM(180) 이외의 호스트 머신 운영 체제(170)의 공간에 배치될 수 있다.
가상 인터럽트 처리 유닛(181)은 본 출원의 실시예들에서 인터럽트 처리 방법에서 호스트 머신에 관련된 단계들을 구현할 수 있다.
하드웨어 레이어는 가상화 환경이 실행되는 하드웨어 플랫폼이다. 하드웨어 레이어는 복수 타입의 하드웨어를 포함할 수 있다. 예를 들어, 물리적 컴퓨터의 하드웨어 레이어는 프로세서 및 메모리를 포함할 수 있으며, 인터럽트 컨트롤러, 네트워크 인터페이스 카드(network interface card, NIC), 입력/출력(input/output I/O) 디바이스, 및 그와 유사한 것을 더 포함할 수 있다.
프로세서(110)는 또한 물리적 프로세서라고 지칭될 수 있다. 물리적 코어는 프로세서의 최소 프로세싱 유닛을 나타낸다. 도 1에 도시된 바와 같이, 본 실시예의 프로세서는 2개의 물리적 코어, 즉 코어 0 및 코어 1, 및 복수의 레지스터를 가질 수 있다. 일부 다른 실시예들에서, 프로세서는 더 많거나 더 적은 코어를 포함할 수 있고, 프로세서들은 상이한 수량들의 코어들을 포함할 수 있다. 복수의 물리적 코어를 갖는 프로세서는 멀티 코어 프로세서라고 지칭된다. 프로세서들은 커널 아키텍처에 기초하여, 동일한 아키텍처와 복수의 코어를 갖는 프로세서, 및 상이한 아키텍처들과 복수의 코어를 갖는 프로세서로 분류될 수 있다. 가상 프로세서는 물리적 코어에 바인딩될 수 있다. 구체적으로, 가상 프로세서는 물리적 코어에서 고정적으로 실행되며, 다른 물리적 코어에서 실행되도록 스케줄링될 수 없다. 이 경우, 가상 프로세서는 코어 바인딩이다. 요건에 따라 하나의 가상 프로세서가 상이한 물리적 코어들에서 실행되도록 스케줄링될 수 있는 경우, 가상 프로세서는 코어 바인딩이 아니다.
물리적 인터럽트 관리 유닛(160)은 물리적 인터럽트 요청들(물리적 인터럽트들이라고도 지칭될 수 있음)을 수집하고, 특정 규칙에 따라, 이러한 물리적 인터럽트 요청들을 각각의 프로세서(110)에 송신하거나 이러한 물리적 인터럽트 요청들을 각각의 프로세서의 가상 프로세서에 투명하게 전송하는 것을 담당한다. 물리적 인터럽트 관리 유닛(160)은 본 출원의 인터럽트 처리 방법에서 하드웨어 레이어에 관련된 일부 단계들을 수행할 수 있다는 점에 유의해야 한다.
인터럽트는 소프트웨어 또는 하드웨어에 의해 생성되는 이벤트이며, 인터럽트는 가상 인터럽트 및 물리적 인터럽트를 포함한다는 점에 유의해야 한다. 물리적 인터럽트는 하드웨어에 의해 생성되는 이벤트이다. 하드웨어는 이벤트를 프로세서에 송신한다. 이벤트를 수신하면, 프로세서는 현재 프로그램의 실행을 일시적으로 중지하고, 이벤트에 대응하는 프로그램을 실행한다. 하드웨어에 의해 생성된 인터럽트 요청은 하드웨어에 의해 트리거될 수도 있거나 소프트웨어에 의해 트리거될 수도 있다. 컴퓨터의 일부 하드웨어(예를 들어, 네트워크 어댑터, 오디오 어댑터, 마우스 및 하드 디스크)는 프로세서의 개입 없이 특정 작업을 완료할 수 있다. 그러나, 프로세서가 하드웨어에 대한 어떤 특정 작업을 수행하도록, 이러한 하드웨어는 여전히 프로세서를 주기적으로 인터럽트할 필요가 있다.
가상화된 환경에서, VMM은 물리적 인터럽트 아키텍처와 유사한 가상 인터럽트 아키텍처를 가상 머신에 제시할 필요가 있다. 이 경우, 물리적 인터럽트는 가상 인터럽트(가상화 인터럽트라고도 지칭될 수 있음)에 대응하고; 가상 인터럽트는 가상 머신의 프론트엔드 드라이버에 의해 인에이블될 수 있으며, 호스트 머신의 백엔드 드라이버(예를 들어, QEMU)에 의해 획득 및 트리거된다.
인터럽트 컨트롤러는 인터럽트 요청을 트리거하는 하드웨어와 프로세서 사이에 배치되며, 주로 각각의 하드웨어에 의해 생성된 인터럽트를 수집하고, 특정 우선순위 또는 다른 규칙에 기초하여 프로세서에 인터럽트를 송신하도록 구성된다.
인터럽트 친화도(interrupt affinity)는 인터럽트와 인터럽트 요청을 프로세싱하는 프로세싱 엔티티(물리적 프로세싱 엔티티 또는 가상 프로세싱 엔티티, 예를 들어 물리적 코어일 수 있음) 간의 대응관계를 의미한다. 인터럽트 컨트롤러는 인터럽트 친화도에 기초하여, 인터럽트 요청에 대응하는 하나 이상의 물리적 프로세싱 엔티티에 인터럽트 요청을 송신할 수 있다.
도 2a는 본 발명의 실시예에 따른 컴퓨팅 디바이스를 도시한다. 도 2a에 도시된 바와 같이, 컴퓨팅 디바이스는 호스트 머신(200) 및 하드웨어 레이어(203)를 포함한다.
본 출원의 본 실시예에서, 가상 머신의 가상 디바이스는 가상 인터럽트를 인에이블할 수 있고, 가상 디바이스는 소프트웨어를 통해 시뮬레이션된 가상 디바이스, 예를 들어 소프트웨어를 통해 시뮬레이션된 직렬 포트일 수 있다. 호스트 머신 내의 백엔드 드라이버(예를 들어, QEMU)는 가상 머신에 의해 가상 인터럽트를 인에이블하는 거동을 획득하고 가상 인터럽트를 트리거할 수 있다. 가상 인터럽트는 가상 디바이스 식별자(디바이스 ID) 및 가상 인터럽트 벡터 식별자(벡터 ID)를 포함할 수 있다. 인터럽트 자원이 초기화되면, 가상 디바이스 식별자(디바이스 ID)와 가상 인터럽트 벡터 식별자(벡터 ID)가 가상 머신의 가상 프로세서에 할당된다. 각각의 가상 프로세서는 하나의 가상 디바이스 식별자(디바이스 ID) 및 복수의 가상 인터럽트 벡터 식별자(벡터 ID)에 고유하게 대응한다. 가상 인터럽트 내의 가상 디바이스 식별자(디바이스 ID)는 어느 가상 디바이스가 가상 인터럽트를 인에이블하는지를 나타낼 수 있고, 가상 인터럽트 벡터 식별자(벡터 ID)는 가상 디바이스에 의해 할당된 복수의 가상 인터럽트에서 특정 가상 인터럽트를 나타낼 수 있다.
가상 인터럽트를 트리거한 후, 백엔드 드라이버(예를 들어, QEMU)는 가상 인터럽트를 VMM에 전달할 수 있다. 이에 대응하여, 호스트 머신(200)의 VMM은 가상 인터럽트를 획득할 수 있다.
본 출원의 본 실시예에서, 호스트 머신의 VMM은 가상 인터럽트를 획득하고, 가상 인터럽트에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하고, 물리적 인터럽트 식별자를 하드웨어 레이어(203)에 전달할 수 있다. 세부사항에 대해서는, 더 많은 세부사항을 보여주는 도 2b를 참조한다.
하드웨어 레이어를 이용하여, VMM에 의해 획득된 가상 인터럽트를 대응하는 가상 프로세서에 투명하게 전송하기 위해, 가상 인터럽트는 하드웨어 레이어에 의해 식별되고 프로세싱될 수 있는 물리적 인터럽트로 변환될 필요가 있다.
구체적으로, 하드웨어 레이어는 물리적 인터럽트 변환 서비스(interrupt translation service, ITS) 및 물리적 일반 인터럽트 컨트롤러(generic interrupt controller, GIC)를 포함할 수 있다. 물리적 ITS는 물리적 인터럽트를 획득할 수 있고, 물리적 인터럽트는 가상 CPU를 인터럽트하는 데 사용된다. 물리적 ITS는 물리적 인터럽트에 대응하는 가상 CPU를 결정할 수 있고, 물리적 인터럽트에 대응하는 가상 인터럽트 식별자(특정 가상 인터럽트를 나타냄)를 결정할 수 있다. 물리적 GIC는 가상 인터럽트 식별자를 가상 CPU에 송신할 수 있다.
이하는 VMM이 가상 인터럽트를 하드웨어 레이어에 의해 식별 및 프로세싱될 수 있는 물리적 인터럽트로 변환하는 방법을 설명한다. 이는 가상 프로세서가 올바른 가상 인터럽트 식별자를 수신할 수 있을 것을 보장할 수 있다.
소프트웨어를 통해 구현되는 가상 인터럽트 전달 프로세스의 관점에서 볼 때, VMM은 가상 인터럽트(가상 디바이스 식별자(디바이스 ID) 및 가상 인터럽트 벡터 식별자(벡터 ID)를 포함함)를 획득한 후, 소프트웨어 ITS에 기초하여 가상 인터럽트에 대응하는 가상 인터럽트 식별자 및 가상 프로세서 식별자를 결정할 수 있다. 여기서의 가상 인터럽트 식별자는 가상 디바이스 식별자(디바이스 ID) 및 가상 인터럽트 벡터 식별자(벡터 ID)와 다를 수 있음에 유의해야 한다. ARM 아키텍처 표준에 지정된 GICv4가 예로서 사용되며, 가상 인터럽트 식별자는 vINTID이다. 가상 프로세서 식별자는 타겟 가상 프로세서를 고유하게 나타낸다.
하드웨어 레이어를 이용하여, VMM에 의해 획득된 가상 인터럽트를 대응하는 가상 프로세서에 투명하게 전송하고, 가상 프로세서가 올바른 가상 인터럽트 식별자를 수신할 수 있을 것을 보장하기 위해, 새로운 매핑 관계(이하 제1 매핑 관계라고 지칭될 수 있음)가 VMM에 미리 구성되어야 하며, 새로운 매핑 관계(이하 제2 매핑 관계 및 제3 매핑 관계라고 지칭될 수 있음)가 하드웨어 레이어에 적응적으로 구성된다. VMM에 구성된 매핑 관계와 하드웨어 레이어에 구성된 매핑 관계는 상호간에 구성될 수 있고, 그에 의해 VMM은 제1 매핑 관계에 기초하여, 획득된 가상 인터럽트(가상 디바이스 식별자(디바이스 ID) 및 가상 인터럽트 벡터 식별자(벡터 ID)를 포함함)를 하드웨어 레이어(예를 들어, 물리적 ITS)에 의해 식별될 수 있는 물리적 인터럽트 식별자(예를 들어, 물리적 디바이스 식별자(디바이스 ID) 및 물리적 인터럽트 벡터 식별자(벡터 ID)를 포함함)로 변환할 수 있다. 또한, 하드웨어 레이어는 미리 구성된 제2 매핑 관계에 기초하여 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자를 결정할 수 있고; 미리 구성된 제3 매핑 관계에 기초하여 물리적 인터럽트 식별자에 대응하는 가상 프로세서 식별자를 결정할 수 있다. 가상 프로세서 식별자는 타겟 가상 프로세서에 고유하게 대응한다.
가상 프로세서가 올바른 가상 인터럽트 식별자를 수신할 수 있을 것을 보장하기 위해, 미리 구성된 제2 매핑 관계에 기초하여 하드웨어 레이어에 의해 결정되는 가상 인터럽트 식별자는 소프트웨어를 통해 구현된 가상 인터럽트 전달에서 VMM에 의해 결정되는 가상 인터럽트에 대응하는 가상 인터럽트 식별자와 일치해야 한다. 추가로, 미리 구성된 제3 매핑 관계에 기초하여 하드웨어 레이어에 의해 결정되는 가상 프로세서 식별자는 소프트웨어를 통해 구현되는 가상 인터럽트 전달에서 VMM에 의해 결정되는 가상 인터럽트에 대응하는 가상 프로세서 식별자와 일치해야 한다. 구체적으로, 가상 인터럽트 전달이 소프트웨어를 통해 구현될 때, 하드웨어 레이어를 사용하여, VMM에 의해 획득된 가상 인터럽트를 대응하는 가상 프로세서에 투명하게 전송하는 솔루션에서, VMM은 A(가상 인터럽트)에 기초하여 B(가상 인터럽트 식별자)와 C(가상 프로세서 식별자)를 결정할 수 있고, VMM은 A(가상 인터럽트)에 기초하여 D(물리적 인터럽트 식별자)를 결정할 수 있고, 물리적 레이어는 D(물리적 인터럽트 식별자)에 기초하여 B(가상 인터럽트 식별자) 및 C(가상 프로세서 식별자)를 결정할 수 있다.
더 구체적으로, 전술한 프로세스를 구현하기 위해, VMM 상에서, 대응하는 물리적 디바이스의 추상화가 각각의 가상 디바이스에 대해 미리 구성될 수 있다. 물리적 디바이스가 실제로 존재하지 않을 수 있고, 물리적 디바이스에 의해 할당된 인터럽트 자원만이 VMM에 저장되며, 인터럽트 자원은 물리적 인터럽트 식별자를 포함할 수 있기 때문에, 추상화는 물리적 디바이스의 추상화라고 지칭된다. 본 실시예에서, VMM은 가상 디바이스에 대응하는 복수의 가상 인터럽트 각각에 대응하는 물리적 인터럽트 식별자를 미리 저장할 수 있다. 예를 들어, 가상 인터럽트는 가상 디바이스 식별자(디바이스 ID) 및 가상 인터럽트 벡터 식별자(벡터 ID)를 포함할 수 있고, VMM은 가상 디바이스 식별자(디바이스 ID)에 대응하는 물리적 디바이스 식별자(디바이스 ID), 및 가상 인터럽트 벡터 식별자(벡터 ID)에 대응하는 물리적 인터럽트 벡터 식별자(벡터 ID)를 획득할 수 있다.
구현에서, VMM은 미리 구성된 제1 매핑 관계를 유지할 수 있다. 제1 매핑 관계는 가상 인터럽트와 물리적 인터럽트 식별자 간의 매핑 관계를 포함할 수 있다. VMM은 제1 매핑 관계에 기초하여 가상 인터럽트에 대응하는 물리적 인터럽트 식별자를 획득할 수 있다. 더 구체적으로, 제1 매핑 관계는 2개의 테이블(테이블 1 및 테이블 2)을 포함할 수 있다. 테이블 1은 복수의 가상 디바이스 식별자(디바이스 ID), 및 각각의 가상 디바이스 식별자(디바이스 ID)에 대응하는 포인터를 포함한다. VMM은 포인터를 이용하여 가상 디바이스 식별자(디바이스 ID)에 대응하는 테이블 2를 찾을 수 있다. 테이블 2는 가상 디바이스 식별자(디바이스 ID)에 대응하는 복수의 가상 인터럽트 벡터 식별자(벡터 ID), 및 각각의 가상 인터럽트 벡터 식별자(벡터 ID)에 대응하는 물리적 인터럽트 벡터 식별자(벡터 ID)를 포함할 수 있다. 전술한 방식으로, VMM은 가상 인터럽트에 대응하는 물리적 인터럽트 식별자를 결정할 수 있다.
VMM이 가상 인터럽트에 대응하는 물리적 인터럽트 식별자를 획득한 후, 호스트 머신은 물리적 인터럽트 식별자를 하드웨어 레이어로 전달할 수 있다. 특히, 호스트 머신은 물리적 인터럽트 식별자를 하드웨어 레이어 상의 물리적 ITS에 전달할 수 있다.
하드웨어 레이어 상의 물리적 ITS는 물리적 인터럽트 식별자에 기초하여 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득할 수 있으며, 여기서 가상 인터럽트 식별자는 가상 인터럽트를 고유하게 나타내고, 가상 프로세서 식별자는 타겟 가상 프로세서를 나타낸다. 하드웨어 레이어 상의 물리적 GIC는 가상 프로세서 식별자에 대응하는 타겟 가상 프로세서에 가상 인터럽트 식별자를 전달할 수 있다.
임의적 구현에서, 하드웨어 레이어는 물리적 인터럽트 식별자에 기초하여 물리적 인터럽트를 추가로 생성할 수 있다.
본 출원의 본 실시예에서, 호스트 머신은 물리적 인터럽트 식별자를 지니는 인터럽트 생성 요청을 하드웨어 레이어에 추가로 전달할 수 있고, 하드웨어 레이어는 인터럽트 생성 요청에 기초하여 물리적 인터럽트를 생성할 수 있다.
구현에서, 호스트 머신은 물리적 인터럽트 식별자를 지니는 인터럽트 생성 요청을 하드웨어 레이어 상의 물리적 ITS에 전달할 수 있고, 물리적 ITS는 물리적 인터럽트 식별자를 지니는 인터럽트 생성 요청에 기초하여 대응하는 물리적 인터럽트를 생성할 수 있다.
다른 임의적 구현에서, 호스트 머신은 하드웨어 레이어 상에 위치된 타겟 레지스터에 물리적 인터럽트 식별자를 기입할 수 있고, 그에 의해 타겟 레지스터는 물리적 인터럽트를 생성한다.
본 출원의 본 실시예에서, 호스트 머신은 물리적 인터럽트 식별자를 하드웨어 레이어 상에 위치된 타겟 레지스터에 기입할 수 있다. 타겟 레지스터는 소프트웨어를 통해 물리적 인터럽트를 생성하는 능력을 가지며, 물리적 ITS는 타겟 레지스터로부터 물리적 인터럽트를 획득할 수 있다.
본 출원의 본 실시예에서, 하드웨어 레이어는 물리적 인터럽트 식별자 및 미리 구성된 제2 매핑 관계에 기초하여 대응하는 가상 인터럽트 식별자를 획득할 수 있다.
구현에서, 하드웨어 레이어 상의 물리적 ITS는 미리 구성된 매핑 관계를 유지할 수 있으며, 매핑 관계는 물리적 인터럽트 식별자, 가상 인터럽트 식별자 및 가상 프로세서 간의 매핑 관계를 포함할 수 있다. 구체적으로, 하드웨어 레이어는 제2 매핑 관계를 유지할 수 있고, 제2 매핑 관계는 물리적 인터럽트 식별자와 가상 인터럽트 식별자 사이의 매핑 관계를 포함한다. 하드웨어 레이어는 제2 매핑 관계에 기초하여 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자를 획득할 수 있다. 하드웨어 레이어는 제3 매핑 관계를 유지할 수 있고, 제3 매핑 관계는 물리적 인터럽트 식별자와 가상 프로세서 식별자 사이의 매핑 관계를 포함한다. 하드웨어 레이어는 제3 매핑 관계에 기초하여 물리적 인터럽트 식별자에 대응하는 가상 프로세서 식별자를 획득할 수 있으며, 가상 프로세서 식별자는 타겟 가상 프로세서를 나타낸다.
본 출원의 본 실시예에서, 제2 매핑 관계 및 제3 매핑 관계는 미리 구성된 프로세스에서 하드웨어 레이어 상에 설정될 수 있다. 제2 매핑 관계 및 제3 매핑 관계에 기초하여, 하드웨어 레이어는 VMM으로부터 획득된 물리적 인터럽트 식별자에 대응하는 가상 프로세서를 결정할 수 있고, 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자를 결정할 수 있다. 가상 인터럽트 식별자(예를 들어, vINTID)는 가상 인터럽트를 고유하게 나타낼 수 있다. 하드웨어 레이어는 가상 인터럽트 식별자를 타겟 가상 프로세서에 전달할 수 있다.
가상 인터럽트는 대응하는 타겟 가상 프로세서를 인터럽트하는 데 사용된다. 인터럽트 라우팅의 정확성을 보장하기 위해, VMM에 의해 유지되는 가상 인터럽트와 물리적 인터럽트 식별자 사이의 매핑 관계, 및 하드웨어 레이어에 의해 유지되는 물리적 인터럽트 식별자와 타겟 가상 프로세서 사이의 매핑 관계가 결합될 수 있고, 그에 의해, 하드웨어 레이어에 의해 최종 결정된 타겟 가상 프로세서는 가상 인터럽트에 의해 인터럽트된 대응하는 타겟 가상 프로세서이게 된다. 경로 엔드포인트(타겟 가상 프로세서)의 정확성을 보장하는 것에 더하여, 가상 인터럽트 내용의 정확성도 보장되어야 한다. 따라서, 물리적 인터럽트 식별자를 매핑함으로써 하드웨어 레이어에 의해 획득된 가상 인터럽트 식별자는 가상 인터럽트를 고유하게 나타내야 한다. 이러한 방식으로, 이는 타겟 가상 프로세서가 올바른 가상 인터럽트 식별자를 수신하는 것과 동등하다. 전술한 방식은 가상 프로세서의 관점에서 VMM 소프트웨어를 통해 가상 인터럽트 라우팅을 구현하는 기존 방식과 일치한다.
본 출원의 본 실시예에서, 물리적 ITS의 라우팅 테이블(전술한 실시예에서의 제2 매핑 관계 및 제3 매핑 관계)은 GICv4 사양에서 정의된다. 하드웨어 레이어에서 가상 인터럽트를 위해 하나의 채널이 열리고, 채널은 가상 인터럽트를 하드웨어 레이어로부터 타겟 가상 프로세서로 투명하게 전송할 수 있다. 하드웨어 레이어가 가상 인터럽트 식별자를 타겟 가상 프로세서에 투명하게 전송할 때, 하드웨어 레이어가 가상 프로세서에 대응하는 시스템 레지스터에 가상 인터럽트 식별자를 기입한 다음, 가상 프로세서가 다시 실행될 때 가상 프로세서가 시스템 레지스터로부터 가상 인터럽트 식별자를 획득하는 것은 요구되지 않는다. 대신에, 가상 인터럽트 식별자가 타겟 가상 프로세서에 직접 전달된다. 따라서, 타겟 가상 프로세서는 종료될 필요가 없다. 이는 소프트웨어가 가상 인터럽트 라우팅을 구현할 때 가상 프로세서의 종료로 인해 야기되는 지연을 감소시킨다.
구현에서, 하드웨어 레이어는 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하고 - 인터럽트 상태 정보는 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있는지를 나타내고, 인터럽트 상태 정보는 인터럽트 보류 정보, 인터럽트 우선순위 상태, 및 인터럽트 인에이블 상태 중 적어도 하나를 포함할 수 있음 -; 인터럽트 상태 정보에 기초하여 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있음을 결정하도록 추가로 구성된다. 인터럽트 보류 정보는 가상 인터럽트가 보류/활성 상태에 있음을 나타낼 수 있고, 인터럽트 우선순위 상태는 프로세싱될 모든 가상 인터럽트에서 현재 가상 인터럽트의 우선순위를 나타낼 수 있으며, 인터럽트 인에이블 상태는 인터럽트가 프로세서에 전달될 수 있는지를 나타낼 수 있다. 구체적으로, 물리적 인터럽트 식별자가 인에이블 상태이고, 우선순위 상태 및 보류 상태가 조건을 만족하면, 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자는 가상 프로세서에 전달될 수 있다.
본 출원의 본 실시예에서, 하드웨어 레이어 상의 물리적 일반 인터럽트 컨트롤러는 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하고 - 인터럽트 상태 정보는 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있는지를 나타내고, 인터럽트 상태 정보는 인터럽트 보류 정보, 인터럽트 우선순위 상태, 및 인터럽트 인에이블 상태 중 적어도 하나를 포함함 -; 인터럽트 상태 정보에 기초하여 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있음을 결정할 수 있다. 구체적인 세부사항들에 대해, ARM 또는 다른 표준의 물리적 레이어에서 물리적 단말 컨트롤러에 의해 지정된 관련 설명들을 참조한다. 세부 사항들은 여기서 다시 설명되지 않는다.
본 출원의 실시예는 컴퓨팅 디바이스를 제공한다. 컴퓨팅 디바이스는 하드웨어 레이어, 및 하드웨어 레이어에서 실행되는 호스트 머신을 포함한다. 호스트 머신은 가상 인터럽트를 획득하고, 가상 인터럽트에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하고, 물리적 인터럽트 식별자를 하드웨어 레이어에 전달하도록 구성된다. 하드웨어 레이어는 물리적 인터럽트 식별자에 기초하여 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하고 - 가상 인터럽트는 타겟 가상 프로세서를 인터럽트하도록 구성되고, 가상 인터럽트 및 물리적 인터럽트 식별자는 가상 프로세서 식별자에 고유하게 대응하고, 가상 프로세서 식별자는 타겟 가상 프로세서를 나타냄 -; 가상 인터럽트 식별자를 타겟 가상 프로세서에 전달하도록 구성된다. 전술한 방식으로, 호스트 머신에 의해 획득된 가상 인터럽트는 물리적 레이어의 물리적 인터럽트에 매핑되고, 가상 인터럽트 식별자는 물리적 레이어를 사용하여 가상 프로세서에 전달된다. 하드웨어 레이어가 가상 인터럽트 식별자를 가상 프로세서에 투명하게 전송하면, 가상 프로세서는 종료될 필요가 없다. 이는 소프트웨어가 가상 인터럽트 라우팅을 구현할 때 가상 프로세서의 종료로 인해 야기되는 지연을 감소시킨다.
도 3은 더 구체적인 실시예를 도시한다. 도 3에 도시된 바와 같이, VMM은 섀도우 매핑(2021) 및 섀도우 디바이스(2022)를 포함할 수 있고; 인터럽트 시스템은 섀도우 인터럽트 도메인(2023)을 포함할 수 있다. 섀도우 매핑(2021) 및 섀도우 디바이스(2022)는 가상 머신의 각각의 가상 디바이스에 대한 "섀도우 객체"의 추상화를 제공할 수 있다. 가상 머신 내의 프론트엔드 드라이버(예를 들어, VirtIO 드라이버)는 가상 디바이스에 여러 가상 인터럽트들을 할당한다. 섀도우 매핑(2021) 및 섀도우 디바이스(2022)는 가상 디바이스의 각각의 가상 인터럽트를 호스트의 하나의 물리적 인터럽트에 링크하는 것을 담당한다. 가상 머신의 프론트엔드 드라이버가 가상 인터럽트를 인에이블(즉, 가상 디바이스가 인터럽트를 트리거)하고, 가상 인터럽트 라우팅을 조절(즉, 가상 인터럽트와 가상 프로세서 간의 매핑 관계를 수정)하고, 가상 인터럽트 구성을 수정(즉, 가상 인터럽트와 가상 인터럽트 식별자 간의 매핑 관계를 수정)하는 등을 할 때, VMM은 이러한 동작들을 인터셉트하고, 가상 머신에 구성된 인터럽트 정보(예를 들어, 프론트엔드 드라이버에 의한 가상 인터럽트의 인에이블에 관련된 정보, 가상 인터럽트 라우팅의 조절에 관련된 정보, 및 가상 인터럽트 구성의 수정에 관련된 정보를 포함함)를 대응하는 섀도우 매핑(2021) 및 대응하는 섀도우 디바이스(2022)에 동기화할 수 있다. 구체적으로, 섀도우 매핑(2021)은 가상 디바이스에 의해 등록된 키 정보, 예를 들어 가상 디바이스의 디바이스 식별자, 가상 인터럽트 벡터 식별자, 가상 프로세서에 의해 프로세싱될 수 있는 가상 인터럽트들의 수량의 상한, 및 디바이스의 가상 인터럽트의 가상 라우팅 정보, 예컨대 가상 인터럽트 식별자 및 각각의 가상 인터럽트에 대응하는 가상 프로세서를 포함할 수 있다.
섀도우 디바이스(2022)는 각각의 가상 디바이스에 대한 호스트 상의 물리적 인터럽트 식별자와 같은 물리적 인터럽트 자원을 신청할 수 있다.
섀도우 인터럽트 도메인(2023)은 물리적 인터럽트 식별자를 물리적 레이어의 물리적 ITS에 전달할 수 있다.
도 3에 도시된 바와 같이, 하드웨어 레이어에서의 물리적 ITS는 물리적 인터럽트 라우팅 테이블(2041)을 포함할 수 있고, 하드웨어 레이어는 물리적 일반 인터럽트 컨트롤러(2042)를 포함할 수 있다. 물리적 인터럽트 라우팅 테이블(2041)은 미리 구성된 매핑 관계일 수 있으며, 매핑 관계는 물리적 인터럽트 식별자, 가상 인터럽트 식별자 및 가상 프로세서 간의 매핑 관계를 포함할 수 있다. 구체적으로 하드웨어 레이어는 제2 매핑 관계를 유지할 수 있다. 제2 매핑 관계는 물리적 인터럽트 라우팅 테이블(2041)의 일부일 수 있다. 제2 매핑 관계는 물리적 인터럽트 식별자와 가상 인터럽트 식별자 사이의 매핑 관계를 포함한다. 하드웨어 레이어는 제2 매핑 관계에 기초하여 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자를 획득할 수 있다. 하드웨어 레이어는 제3 매핑 관계를 유지할 수 있다. 제3 매핑 관계는 물리적 인터럽트 라우팅 테이블(2041)의 일부일 수 있다. 제3 매핑 관계는 물리적 인터럽트 식별자와 가상 프로세서 사이의 매핑 관계를 포함할 수 있다. 하드웨어 레이어는 제3 매핑 관계에 기초하여 물리적 인터럽트 식별자에 대응하는 가상 프로세서를 획득할 수 있다.
물리적 일반 인터럽트 컨트롤러(2042)는 물리적 인터럽트 식별자와 인터럽트 상태 정보 간의 대응관계에 기초하여 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하고; 인터럽트 상태 정보에 기초하여 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있음을 결정할 수 있다.
도 4는 도 3과는 다른 추가 세부사항들을 도시한다. 도 4에 도시된 바와 같이, VMM은 물리적 인터럽트 식별자를 하드웨어 레이어에 위치된 타겟 레지스터(2043)에 기입할 수 있고, 그에 의해, 타겟 레지스터(2043)가 물리적 인터럽트를 생성하게 된다. 타겟 레지스터는 소프트웨어를 통해 물리적 인터럽트를 생성할 수 있고, ITS는 타겟 레지스터로부터 물리적 인터럽트를 획득할 수 있다.
전술한 효과를 구현하기 위해, VMM과 하드웨어 레이어가 미리 구성될 필요가 있다. 구현에서, 가상 머신의 가상 VirtIO 디바이스 드라이버가 로드 및 초기화되고, 관련 동작이 VMM에 의해 인터셉트되어, 가상 인터럽트의 소프트웨어 라우팅 테이블을 확립한다. 가상 머신의 가상 VirtIO 디바이스 드라이버는 주변 컴포넌트 상호연결 표준(peripheral component interconnect, PCI) 구성 공간을 기입함으로써 가상 디바이스 능력을 인에이블한다. 이러한 기입 동작은 VMM에 의해 인터셉트된다. VMM은 가상 디바이스의 키 정보(가상 디바이스의 디바이스 식별자, 가상 인터럽트 벡터 정보, 가상 프로세서에 의해 프로세싱될 수 있는 가상 인터럽트들의 수량의 상한 등)를 프로토콜에 따라 VMM에 등록할 수 있다. VMM은 등록된 가상 디바이스에 대해 하나의 섀도우 객체를 생성하고, 등록된 가상 디바이스 정보에 기초하여 섀도우 디바이스를 생성하며, 물리적 호스트 디바이스 식별자들 및 물리적 인터럽트 식별자 자원들의 점유를 신청한다. 신청된 물리적 인터럽트 식별자 자원은 관리를 위해 섀도우 인터럽트 도메인에 등록된다. VMM은 타겟 가상 인터럽트 라우팅 디바이스, 가상 인터럽트 식별자, 및 타겟 가상 프로세서와 같은 정보를 포함하여, 등록된 가상 디바이스를 이용하여 가상 디바이스의 각각의 가상 인터럽트의 라우팅 정보를 파싱할 수 있다. 섀도우 객체는 가상 인터럽트 라우팅 관계를 파싱하고, 물리적 인터럽트 라우팅 디바이스의 포맷을 변환 및 구성하며, 섀도우 디바이스에 대응하는 물리적 인터럽트를 이용하여 섀도우 인터럽트 도메인의 관리를 통해 대응하는 가상 디바이스의 물리적 인터럽트의 물리적 디바이스 인터럽트 라우팅 테이블을 확립한다. VMM은 타겟 가상 인터럽트 라우팅 디바이스, 가상 인터럽트 식별자, 및 타겟 가상 프로세서와 같은 정보를 포함하여, 등록된 가상 디바이스를 이용하여 가상 디바이스의 각각의 가상 인터럽트의 라우팅 정보를 파싱한다. 가상 인터럽트의 다른 속성들(예컨대, 인에이블, 우선순위, 및 친화도)은 섀도우 객체를 사용하여 변환되고, 섀도우 디바이스의 인터럽트 구성 테이블은 섀도우 인터럽트 도메인의 관리를 통해 구성 또는 수정된다.
임의적 구현에서, 호스트 머신은 또한 가상 머신 라이브 마이그레이션 프로세스에서 하드웨어 레이어로부터 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하고 - 인터럽트 상태 정보는 인터럽트 보류 정보, 인터럽트 우선순위 상태, 및 인터럽트 인에이블 상태 중 적어도 하나를 포함함 -; 인터럽트 상태 정보를 그 컴퓨팅 디바이스가 아닌 컴퓨팅 디바이스의 하드웨어 레이어에 기입할 수 있다. 도 5는 본 출원의 실시예에 따른 컴퓨팅 디바이스의 예를 도시한다. 도 5에 도시된 바와 같이, 인터럽트 상태 정보는 하드웨어 레이어 및 VMM 둘 다에 의해 액세스될 수 있는 영역(501)에 저장될 수 있고, 그에 의해, 하드웨어 레이어의 물리적 인터럽트 처리 유닛(204)은 인터럽트 상태 정보를 획득하고, 인터럽트 상태 정보에 기초하여 가상 인터럽트 식별자가 대응하는 가상 프로세서에 전달되어야 하는지를 결정할 수 있다. 또한, 가상 머신 라이브 마이그레이션 프로세스에서, VMM(201)은 또한 하드웨어 레이어로부터 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하고, 인터럽트 상태 정보를 컴퓨팅 디바이스가 아닌 다른 컴퓨팅 디바이스의 하드웨어 레이어에 기입할 수 있다.
이하는 도 6을 참조하여 본 출원의 실시예에서 제공되는 컴퓨팅 디바이스를 설명한다. 도 6에 도시된 바와 같이, 본 출원의 본 실시예에서 제공되는 컴퓨팅 디바이스는 가상 머신, 호스트 머신 및 하드웨어 레이어를 포함한다. 가상 머신의 가상 디바이스는 인터럽트를 트리거할 수 있으며, 대응하는 프론트엔드 드라이버는 가상 인터럽트를 인에이블한다. 호스트 머신 내의 백엔드 드라이버는 프론트엔드 드라이버에 의해 가상 인터럽트를 인에이블하는 거동을 획득하고, 가상 인터럽트를 트리거할 수 있다. IRQFD 서브시스템은 백엔드 드라이버에 의해 트리거된 가상 인터럽트를 수신하고, 가상 인터럽트를 섀도우 디바이스 모듈에 전달할 수 있다. 섀도우 디바이스 모듈은 가상 인터럽트의 물리적 인터럽트 식별자를 결정할 수 있고, 섀도우 인터럽트 도메인은 물리적 ITS 드라이버를 사용하여 물리적 인터럽트 식별자를 하드웨어 레이어 상의 물리적 ITS에 전달한다. 물리적 ITS는 물리적 인터럽트 식별자 및 타겟 가상 프로세서에 대응하는 가상 인터럽트 식별자를 결정할 수 있고, 물리적 GIC는 가상 인터럽트 식별자를 타겟 가상 프로세서 VCPU에 전달한다. 이하는 도 7을 참조하여 본 출원의 실시예에서 제공되는 컴퓨팅 디바이스를 설명한다. 도 7에 도시된 바와 같이, 본 출원의 본 실시예에서 제공되는 컴퓨팅 디바이스는 가상 머신, 호스트 머신 및 하드웨어 레이어를 포함한다. 소프트웨어와 하드웨어 간의 인터럽트 상태 일관성을 보장하기 위해, VMM의 가상 GIC는 물리적 GIC에서 인터럽트 상태 정보를 획득하고 대응하는 가상 인터럽트의 인터럽트 상태 정보를 업데이트해야 한다. 구체적으로, 도 7에 도시된 바와 같이, 백엔드 드라이버는 상태 동기화 요청을 트리거할 수 있으며, 요청은 동기화될 필요가 있는 가상 인터럽트에 관련된 정보를 지닌다. 섀도우 매핑 및 섀도우 객체는 가상 디바이스의 가상 인터럽트 정보를 디코딩하고, 가상 인터럽트 정보를 대응하는 물리적 인터럽트 식별자로 변환할 수 있으며, 섀도우 인터럽트 도메인은 물리적 인터럽트 식별자를 물리적 레이어의 물리적 ITS에 전달한다. 물리적 GIC는 물리적 인터럽트 식별자에 관련된 인터럽트 상태 정보를 호스트 머신에서 인터럽트 상태 정보를 저장하는 테이블(예를 들어, 보류 테이블)에 전달할 수 있다. 또한, 상태 동기화 시스템은 물리적 인터럽트 식별자에 관련된 인터럽트 상태 정보를 가상 GIC에 전달할 수 있고, 그에 의해 가상 GIC는 가상 인터럽트의 인터럽트 상태 정보를 업데이트하게 된다.
도 8은 본 출원의 실시예에 따른 인터럽트 처리 장치(800)의 구조의 개략도이다. 컴퓨팅 디바이스는 하드웨어 레이어 및 하드웨어 레이어에서 실행되는 호스트 머신을 포함한다. 인터럽트 처리 장치는 호스트 머신에 배치된 가상 인터럽트 처리 유닛(801), 및 하드웨어 레이어에 배치된 물리적 인터럽트 처리 유닛(802)을 포함한다.
가상 인터럽트 처리 유닛(801)은 가상 인터럽트를 획득하고, 가상 인터럽트에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하고, 물리적 인터럽트 식별자를 하드웨어 레이어에 전달하도록 구성된다.
물리적 인터럽트 처리 유닛(802)은 물리적 인터럽트 식별자에 기초하여 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하고 - 가상 인터럽트는 타겟 가상 프로세서를 인터럽트하도록 구성되고, 가상 인터럽트 및 물리적 인터럽트 식별자는 가상 프로세서 식별자에 고유하게 대응하고, 가상 프로세서 식별자는 타겟 가상 프로세서를 나타냄 -;
가상 인터럽트 식별자를 타겟 가상 프로세서에 전달하도록
구성된다.
가상 인터럽트 처리 유닛(801)은 도 1에 도시된 가상 인터럽트 관리 유닛(181), 도 2a 및 도 2b에 도시된 가상 인터럽트 처리 유닛(202), 및 도 3 내지 도 7에 도시된 섀도우 매핑, 섀도우 디바이스 및 섀도우 인터럽트 도메인과 동등할 수 있다.
물리적 인터럽트 처리 유닛(801)은 도 1에 도시된 물리적 인터럽트 관리 유닛(160), 도 2a 및 도 2b에 도시된 물리적 인터럽트 처리 유닛(204), 및 도 3 내지 도 7에 도시된 물리적 ITS 및 물리적 일반 인터럽트 컨트롤러(GIC)와 동등할 수 있다.
임의적 구현에서, 가상 인터럽트는 가상 인터럽트 식별자에 고유하게 대응한다.
임의적 구현에서, 컴퓨팅 디바이스는 하드웨어 레이어에 기초하여 구현되는 물리적 인터럽트 변환 서비스(ITS) 및 물리적 일반 인터럽트 컨트롤러(GIC)를 포함한다.
물리적 ITS는 물리적 인터럽트 식별자에 기초하여 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하도록 구성된다.
물리적 GIC는 가상 인터럽트 식별자를 타겟 가상 프로세서에 전달하도록 구성된다.
임의적 구현에서, 가상 인터럽트 처리 유닛(801)은 가상 인터럽트 및 미리 구성된 제1 매핑 관계에 기초하여 가상 인터럽트에 대응하는 물리적 인터럽트 식별자를 획득하도록 추가로 구성되고, 제1 매핑 관계는 복수의 가상 인터럽트, 및 각각의 가상 인터럽트와 물리적 인터럽트 식별자 간의 대응관계를 나타낸다.
물리적 인터럽트 처리 유닛(802)은 물리적 인터럽트 식별자 및 미리 구성된 제2 매핑 관계에 기초하여 물리적 인터럽트에 대응하는 가상 인터럽트 식별자를 획득하도록 추가로 구성되고, 제2 매핑 관계는 복수의 물리적 인터럽트 식별자, 및 각각의 물리적 인터럽트 식별자와 가상 인터럽트 식별자 간의 대응관계를 나타낸다.
임의적 구현에서, 물리적 인터럽트 처리 유닛(802)은 물리적 인터럽트 식별자 및 미리 구성된 제3 매핑 관계에 기초하여 대응하는 가상 프로세서 식별자를 획득하도록 추가로 구성되고, 제3 매핑 관계는 복수의 물리적 인터럽트 식별자, 및 각각의 물리적 인터럽트 식별자와 가상 프로세서 식별자 간의 대응관계를 나타낸다.
임의적 구현에서, 물리적 인터럽트 처리 유닛(802)은:
물리적 인터럽트 식별자에 기초하여 물리적 인터럽트를 생성하고;
물리적 인터럽트에 기초하여 가상 인터럽트 식별자 및 가상 프로세서 식별자를 획득하도록
추가로 구성된다.
임의적 구현에서, 가상 인터럽트는 가상 디바이스 식별자 및 가상 인터럽트 벡터 식별자를 포함한다.
가상 인터럽트 처리 유닛(801)은 가상 인터럽트에 기초하여 가상 디바이스 식별자에 대응하는 물리적 디바이스 식별자 및 가상 인터럽트 벡터 식별자에 대응하는 물리적 인터럽트 벡터 식별자를 획득하도록 추가로 구성되고, 물리적 인터럽트 식별자는 물리적 디바이스 식별자 및 물리적 인터럽트 벡터 식별자를 포함한다.
임의적 구현에서, 물리적 인터럽트 처리 유닛(802)은 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하고 - 인터럽트 상태 정보는 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있는지를 나타내고, 인터럽트 상태 정보는 인터럽트 보류 상태, 인터럽트 우선순위 상태, 및 인터럽트 인에이블 상태 중 적어도 하나를 포함함 -; 인터럽트 상태 정보에 기초하여 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있음을 결정하도록 추가로 구성된다.
임의적 구현에서, 가상 인터럽트 처리 유닛(801)은:
가상 머신 라이브 마이그레이션 프로세스에서 하드웨어 레이어로부터 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하고 - 인터럽트 상태 정보는 물리적 인터럽트 식별자에 대응하는 가상 인터럽트 식별자가 가상 프로세서에 전달될 수 있는지를 나타내고, 인터럽트 상태 정보는 인터럽트 보류 상태, 인터럽트 우선순위 상태, 및 인터럽트 인에이블 상태 중 적어도 하나를 포함함 -; 인터럽트 상태 정보를 그 컴퓨팅 디바이스가 아닌 컴퓨팅 디바이스의 하드웨어 레이어에 기입하도록
추가로 구성된다.
본 출원은 또한 비휘발성 컴퓨터 판독가능 저장 매체를 제공하며, 비휘발성 컴퓨터 판독가능 저장 매체는 인터럽트 처리 방법을 수행하는 데 사용되는 컴퓨터 명령어들을 포함한다. 이 방법은 호스트 머신에 적용되며, 호스트 머신은 컴퓨팅 디바이스에 위치되고, 컴퓨팅 디바이스는 하드웨어 레이어를 포함한다. 비휘발성 컴퓨터 판독가능 저장 매체는 가상 인터럽트를 획득하기 위해 사용되는 제1 컴퓨터 명령어를 포함한다.
비휘발성 컴퓨터 판독가능 저장 매체는 가상 인터럽트에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하고, 물리적 인터럽트 식별자를 하드웨어 레이어에 전달하는 데 사용되는 제2 컴퓨터 명령어를 포함한다.
구현에서, 제1 컴퓨터 명령어는 가상 인터럽트 및 미리 구성된 제1 매핑 관계에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하는 데 사용된다.
구현에서, 가상 인터럽트는 가상 디바이스 식별자 및 가상 인터럽트 벡터 식별자를 포함한다.
제1 컴퓨터 명령어는 가상 인터럽트에 기초하여 가상 디바이스 식별자에 대응하는 물리적 디바이스 식별자 및 가상 인터럽트 벡터 식별자에 대응하는 물리적 인터럽트 벡터 식별자를 획득하도록 구성된다. 물리적 인터럽트 식별자는 물리적 디바이스 식별자 및 물리적 인터럽트 벡터 식별자를 포함한다.
구현에서, 비휘발성 컴퓨터 판독가능 저장 매체는 가상 머신 라이브 마이그레이션 프로세스에서 하드웨어 레이어로부터 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하고 - 인터럽트 상태 정보는 보류 정보, 우선순위 정보, 및 인에이블 정보 중 적어도 하나를 포함함 -; 인터럽트 상태 정보를 그 컴퓨팅 디바이스가 아닌 컴퓨팅 디바이스의 하드웨어 레이어에 기입하는 데 사용되는 제3 컴퓨터 명령어를 더 포함할 수 있다.
본 출원은 비휘발성 컴퓨터 판독가능 저장 매체를 추가로 제공한다. 비휘발성 컴퓨터 판독가능 저장 매체는 컴퓨터 명령어들을 포함한다. 컴퓨터 명령어들이 컴퓨터에 의해 실행될 때, 전술한 실시예들의 인터럽트 처리 방법이 구현될 수 있다.
도 9는 본 출원의 실시예에 따른 컴퓨팅 디바이스(900)의 개략도이다. 도 9에 도시된 바와 같이, 컴퓨팅 디바이스(900)는 버스를 통해 연결된 프로세서(901) 및 메모리(902)를 포함한다. 프로세서(901)는 전술한 실시예들에서 인터럽트 처리 방법을 구현하기 위해 메모리(902)의 코드를 호출할 수 있다.
본 기술분야의 통상의 기술자는, 편리하고 간략한 설명을 위해, 전술한 시스템, 장치 및 유닛의 상세한 작업 프로세스가 전술한 방법 실시예들의 대응하는 프로세스를 참조한다는 것을 명확하게 이해할 수 있다. 세부 사항들은 여기서 다시 설명되지 않는다.
본 출원에서 제공된 여러 실시예들에서, 개시된 시스템들, 장치들 및 방법들은 다른 방식들로 구현될 수 있음을 이해해야 한다. 예를 들어, 앞에서 설명된 장치 실시예들은 단지 예일 뿐이다. 예를 들어, 유닛들로의 구분은 단지 논리적인 기능 구분이고, 실제 구현 동안에는 다른 구분이 될 수 있다. 예를 들어, 복수의 유닛 또는 컴포넌트가 다른 시스템으로 결합 또는 통합될 수 있거나, 일부 특징들이 무시되거나 수행되지 않을 수 있다. 또한, 표시되거나 논의된 상호 결합들 또는 직접 결합들 또는 통신 연결들은 일부 인터페이스들을 통해 구현될 수 있다. 장치들 또는 유닛들 간의 간접 결합들 또는 통신 연결들은 전자적, 기계적 또는 기타 형태들로 구현될 수 있다.
별개의 부분들로서 설명된 유닛들은 물리적으로 분리되거나 분리되지 않을 수 있으며, 유닛들로서 표시되는 부분들은 물리적 유닛들이거나 아닐 수 있으며, 한 위치에 있을 수 있거나, 복수의 네트워크 유닛에 분산될 수 있다. 일부 또는 모든 유닛은 실시예들의 솔루션의 목적들을 달성하기 위한 실제 필요들에 따라 선택될 수 있다.
또한, 본 출원의 실시예들에서의 기능 유닛들은 하나의 프로세싱 유닛으로 통합될 수 있고, 유닛들 각각이 물리적으로 단독으로 존재할 수 있거나, 둘 이상의 유닛이 하나의 유닛으로 통합될 수 있다. 통합된 유닛은 하드웨어 형태로 구현될 수 있거나, 소프트웨어 기능 유닛의 형태로 구현될 수 있다.
통합된 유닛이 소프트웨어 기능 유닛의 형태로 구현되고, 독립된 제품으로서 판매 또는 사용되는 경우, 기능들은 컴퓨터 판독가능 저장 매체에 저장될 수 있다. 이러한 이해에 기초하여, 본질적으로 본 출원의 기술적 솔루션들, 또는 종래 기술에 기여하는 부분, 또는 기술적 솔루션들의 전부 또는 일부가 소프트웨어 제품의 형태로 구현될 수 있다. 컴퓨터 소프트웨어 제품은 저장 매체에 저장되며, 컴퓨터 디바이스(개인용 컴퓨터, 서버, 또는 다른 네트워크 디바이스일 수 있음)에게 본 출원의 도 2a의 실시예의 방법 단계들의 전부 또는 일부를 수행하도록 명령하기 위한 몇 가지 명령어들을 포함한다. 전술한 저장 매체는 USB 플래시 드라이브, 이동식 하드 디스크, 판독 전용 메모리(read-only memory, ROM), 랜덤 액세스 메모리(random access memory, RAM), 자기 디스크, 또는 광 디스크와 같이 프로그램 코드를 저장할 수 있는 임의의 매체를 포함한다.
결론적으로, 전술한 실시예들은 단지 본 출원의 기술적 솔루션들을 설명하도록 의도된 것이다. 본 출원은 전술한 실시예들을 참조하여 상세하게 설명되지만, 본 기술분야의 통상의 기술자들은 본 출원의 실시예들의 기술적 솔루션들의 범위로부터 벗어나지 않고서, 여전히 전술한 실시예들에 설명된 기술적 솔루션들을 수정하거나 그것의 일부 기술적 특징들에 대해 동등한 대체를 할 수 있음을 이해해야 한다.
Claims (31)
- 하드웨어 레이어 및 상기 하드웨어 레이어에서 실행되는 호스트 머신을 포함하는 컴퓨팅 디바이스로서,
상기 호스트 머신은:
가상 인터럽트를 획득하고,
상기 가상 인터럽트에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하고, 상기 물리적 인터럽트 식별자를 상기 하드웨어 레이어에 전달하도록
구성되고, 상기 하드웨어 레이어는:
상기 물리적 인터럽트 식별자에 기초하여, 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하고 - 상기 가상 인터럽트는 타겟 가상 프로세서를 인터럽트하도록 구성되고, 상기 가상 인터럽트 및 상기 물리적 인터럽트 식별자는 상기 가상 프로세서 식별자에 고유하게 대응하고, 상기 가상 프로세서 식별자는 상기 타겟 가상 프로세서를 나타냄 -,
상기 가상 인터럽트 식별자를 상기 타겟 가상 프로세서에 전달하도록
구성되는, 컴퓨팅 디바이스. - 제1항에 있어서, 상기 가상 인터럽트는 상기 가상 인터럽트 식별자에 고유하게 대응하는, 컴퓨팅 디바이스.
- 제1항 또는 제2항에 있어서, 상기 컴퓨팅 디바이스는 상기 하드웨어 레이어에 기초하여 구현되는 물리적 인터럽트 변환 서비스(interrupt translation service)(ITS) 및 물리적 일반 인터럽트 컨트롤러(generic interrupt controller)(GIC)를 포함하고;
상기 물리적 ITS는 상기 물리적 인터럽트 식별자에 기초하여, 상기 대응하는 가상 인터럽트 식별자 및 상기 대응하는 가상 프로세서 식별자를 획득하도록 구성되고;
상기 물리적 GIC는 상기 가상 인터럽트 식별자를 상기 타겟 가상 프로세서에 전달하도록 구성되는, 컴퓨팅 디바이스. - 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 호스트 머신은 상기 가상 인터럽트 및 미리 구성된 제1 매핑 관계에 기초하여, 상기 가상 인터럽트에 대응하는 상기 물리적 인터럽트 식별자를 획득하도록 추가로 구성되고, 상기 제1 매핑 관계는 복수의 가상 인터럽트, 및 각각의 가상 인터럽트와 물리적 인터럽트 식별자 간의 대응관계를 나타내고;
상기 하드웨어 레이어는 상기 물리적 인터럽트 식별자 및 미리 구성된 제2 매핑 관계에 기초하여, 상기 물리적 인터럽트에 대응하는 상기 가상 인터럽트 식별자를 획득하도록 추가로 구성되고, 상기 제2 매핑 관계는 복수의 물리적 인터럽트 식별자, 및 각각의 물리적 인터럽트 식별자와 가상 인터럽트 식별자 간의 대응관계를 나타내는, 컴퓨팅 디바이스. - 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 하드웨어 레이어는 상기 물리적 인터럽트 식별자 및 미리 구성된 제3 매핑 관계에 기초하여, 상기 대응하는 가상 프로세서 식별자를 획득하도록 추가로 구성되고, 상기 제3 매핑 관계는 복수의 물리적 인터럽트 식별자, 및 각각의 물리적 인터럽트 식별자와 가상 프로세서 식별자 간의 대응관계를 나타내는, 컴퓨팅 디바이스.
- 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 하드웨어 레이어는:
상기 물리적 인터럽트 식별자에 기초하여 물리적 인터럽트를 생성하고;
상기 물리적 인터럽트에 기초하여 상기 가상 인터럽트 식별자 및 상기 가상 프로세서 식별자를 획득하도록
추가로 구성되는, 컴퓨팅 디바이스. - 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 가상 인터럽트는 가상 디바이스 식별자 및 가상 인터럽트 벡터 식별자를 포함하고;
상기 호스트 머신은 상기 가상 인터럽트에 기초하여, 상기 가상 디바이스 식별자에 대응하는 물리적 디바이스 식별자 및 상기 가상 인터럽트 벡터 식별자에 대응하는 물리적 인터럽트 벡터 식별자를 획득하도록 추가로 구성되고, 상기 물리적 인터럽트 식별자는 상기 물리적 디바이스 식별자 및 상기 물리적 인터럽트 벡터 식별자를 포함하는, 컴퓨팅 디바이스. - 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 하드웨어 레이어는: 상기 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하고 - 상기 인터럽트 상태 정보는 상기 물리적 인터럽트 식별자에 대응하는 상기 가상 인터럽트 식별자가 상기 가상 프로세서에 전달될 수 있는지를 나타냄 -; 상기 인터럽트 상태 정보에 기초하여, 상기 가상 인터럽트 식별자가 상기 가상 프로세서에 전달될 수 있음을 결정하도록 추가로 구성되는, 컴퓨팅 디바이스.
- 제1항 내지 제8항 중 어느 한 항에 있어서, 상기 호스트 머신은:
가상 머신 라이브 마이그레이션 프로세스에서 상기 하드웨어 레이어로부터 상기 물리적 인터럽트 식별자에 대응하는 상기 인터럽트 상태 정보를 획득하고 - 상기 인터럽트 상태 정보는 상기 물리적 인터럽트 식별자에 대응하는 상기 가상 인터럽트 식별자가 상기 가상 프로세서에 전달될 수 있는지를 나타냄 -; 상기 인터럽트 상태 정보를 상기 컴퓨팅 디바이스가 아닌 컴퓨팅 디바이스의 하드웨어 레이어에 기입하도록
추가로 구성되는, 컴퓨팅 디바이스. - 하드웨어 레이어에서 실행되는 호스트 머신에 적용되는 인터럽트 처리 방법으로서,
가상 인터럽트를 획득하는 단계; 및
상기 가상 인터럽트에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하고, 상기 물리적 인터럽트 식별자를 상기 하드웨어 레이어에 전달하는 단계
를 포함하고, 그에 의해, 상기 하드웨어 레이어는 상기 물리적 인터럽트 식별자에 기초하여, 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하고 - 상기 가상 인터럽트는 타겟 가상 프로세서를 인터럽트하도록 구성되고, 상기 가상 인터럽트 및 상기 물리적 인터럽트 식별자는 상기 가상 프로세서 식별자에 고유하게 대응하고, 상기 가상 프로세서 식별자는 상기 타겟 가상 프로세서를 나타냄 -; 상기 가상 인터럽트 식별자를 상기 타겟 가상 프로세서에 전달하는, 방법. - 제10항에 있어서, 상기 가상 인터럽트는 상기 가상 인터럽트 식별자에 고유하게 대응하는, 방법.
- 제11항 또는 제12항에 있어서, 상기 가상 인터럽트에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하는 단계는:
상기 가상 인터럽트 및 미리 구성된 제1 매핑 관계에 기초하여, 상기 가상 인터럽트에 대응하는 상기 물리적 인터럽트 식별자를 획득하는 단계
를 포함하고, 상기 제1 매핑 관계는 복수의 가상 인터럽트, 및 각각의 가상 인터럽트와 물리적 인터럽트 식별자 간의 대응관계를 나타내는, 방법. - 제10항 내지 제12항 중 어느 한 항에 있어서, 상기 가상 인터럽트는 가상 디바이스 식별자 및 가상 인터럽트 벡터 식별자를 포함하고;
상기 가상 인터럽트에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하는 단계는:
상기 가상 인터럽트에 기초하여, 상기 가상 디바이스 식별자에 대응하는 물리적 디바이스 식별자 및 상기 가상 인터럽트 벡터 식별자에 대응하는 물리적 인터럽트 벡터 식별자를 획득하는 단계
를 포함하고, 상기 물리적 인터럽트 식별자는 상기 물리적 디바이스 식별자 및 상기 물리적 인터럽트 벡터 식별자를 포함하는, 방법. - 제10항 내지 제13항 중 어느 한 항에 있어서,
가상 머신 라이브 마이그레이션 프로세스에서 상기 하드웨어 레이어로부터 상기 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하는 단계 - 상기 인터럽트 상태 정보는 상기 물리적 인터럽트 식별자에 대응하는 상기 가상 인터럽트 식별자가 상기 가상 프로세서에 전달될 수 있는지를 나타냄 -; 및
상기 인터럽트 상태 정보를 상기 컴퓨팅 디바이스가 아닌 컴퓨팅 디바이스의 하드웨어 레이어에 기입하는 단계
를 더 포함하는, 방법. - 하드웨어 레이어 및 상기 하드웨어 레이어에서 실행되는 호스트 머신을 포함하는 컴퓨팅 디바이스에 적용되는 인터럽트 처리 방법으로서,
상기 하드웨어 레이어에 의해 물리적 인터럽트 식별자에 기초하여, 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하는 단계 - 상기 물리적 인터럽트 식별자는 가상 인터럽트에 대응하고 상기 가상 인터럽트에 기초하여 상기 호스트 머신에 의해 획득되며 상기 하드웨어 레이어에 송신되는 물리적 인터럽트 식별자이고, 상기 가상 인터럽트는 타겟 가상 프로세서를 인터럽트하도록 구성되고, 상기 가상 인터럽트 및 상기 물리적 인터럽트 식별자는 상기 가상 프로세서 식별자에 고유하게 대응하고, 상기 가상 프로세서 식별자는 상기 타겟 가상 프로세서를 나타냄 -; 및
상기 가상 인터럽트 식별자를 상기 타겟 가상 프로세서에 전달하는 단계
를 포함하는, 방법. - 제15항에 있어서, 상기 가상 인터럽트는 상기 가상 인터럽트 식별자에 고유하게 대응하는, 방법.
- 제15항 또는 제16항에 있어서, 상기 컴퓨팅 디바이스는 상기 하드웨어 레이어에 기초하여 구현되는 물리적 인터럽트 변환 서비스(ITS) 및 물리적 일반 인터럽트 컨트롤러(GIC)를 포함하고;
상기 하드웨어 레이어에 의해 상기 물리적 인터럽트 식별자에 기초하여, 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하는 단계는:
상기 물리적 ITS에 의해 상기 물리적 인터럽트 식별자에 기초하여, 상기 대응하는 가상 인터럽트 식별자 및 상기 대응하는 가상 프로세서 식별자를 획득하는 단계
를 포함하고, 상기 가상 인터럽트 식별자를 상기 타겟 가상 프로세서에 전달하는 단계는:
상기 물리적 GIC에 의해, 상기 가상 인터럽트 식별자를 상기 타겟 가상 프로세서에 전달하는 단계
를 포함하는, 방법. - 제15항 내지 제17항 중 어느 한 항에 있어서,
상기 하드웨어 레이어에 의해 상기 물리적 인터럽트 식별자에 기초하여, 대응하는 가상 인터럽트 식별자를 획득하는 단계는:
상기 하드웨어 레이어에 의해 상기 물리적 인터럽트 식별자 및 미리 구성된 제2 매핑 관계에 기초하여, 상기 물리적 인터럽트에 대응하는 상기 가상 인터럽트 식별자를 획득하는 단계를 포함하고, 상기 제2 매핑 관계는 복수의 물리적 인터럽트 식별자, 및 각각의 물리적 인터럽트 식별자와 가상 인터럽트 식별자 간의 대응관계를 나타내는, 방법. - 제15항 내지 제18항 중 어느 한 항에 있어서,
상기 물리적 인터럽트 식별자 및 미리 구성된 제3 매핑 관계에 기초하여, 상기 대응하는 가상 프로세서 식별자를 획득하는 단계
를 더 포함하고, 상기 제3 매핑 관계는 복수의 물리적 인터럽트 식별자, 및 각각의 물리적 인터럽트 식별자와 가상 프로세서 식별자 간의 대응관계를 나타내는, 방법. - 제15항 내지 제19항 중 어느 한 항에 있어서, 상기 하드웨어 레이어에 의해 상기 물리적 인터럽트 식별자에 기초하여, 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하는 단계는:
상기 하드웨어 레이어에 의해, 상기 물리적 인터럽트 식별자에 기초하여 물리적 인터럽트를 생성하는 단계; 및
상기 물리적 인터럽트에 기초하여 상기 가상 인터럽트 식별자 및 상기 가상 프로세서 식별자를 획득하는 단계
를 포함하는, 방법. - 제15항 내지 제20항 중 어느 한 항에 있어서,
상기 하드웨어 레이어에 의해, 상기 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하는 단계 - 상기 인터럽트 상태 정보는 상기 물리적 인터럽트 식별자에 대응하는 상기 가상 인터럽트 식별자가 상기 가상 프로세서에 전달될 수 있는지를 나타냄 -; 및
상기 인터럽트 상태 정보에 기초하여, 상기 가상 인터럽트 식별자가 상기 가상 프로세서에 전달될 수 있음을 결정하는 단계
를 더 포함하는, 방법. - 인터럽트 처리 장치로서,
가상 인터럽트를 획득하고, 상기 가상 인터럽트에 기초하여 대응하는 물리적 인터럽트 식별자를 획득하고, 상기 물리적 인터럽트 식별자를 하드웨어 레이어에 전달하도록 구성되는 가상 인터럽트 처리 유닛; 및
상기 물리적 인터럽트 식별자에 기초하여, 대응하는 가상 인터럽트 식별자 및 대응하는 가상 프로세서 식별자를 획득하고 - 상기 가상 인터럽트는 타겟 가상 프로세서를 인터럽트하도록 구성되고, 상기 가상 인터럽트 및 상기 물리적 인터럽트 식별자는 상기 가상 프로세서 식별자에 고유하게 대응하고, 상기 가상 프로세서 식별자는 상기 타겟 가상 프로세서를 나타냄 -; 상기 가상 인터럽트 식별자를 상기 타겟 가상 프로세서에 전달하도록 구성되는 물리적 인터럽트 처리 유닛
을 포함하는, 장치. - 제22항에 있어서, 상기 가상 인터럽트는 상기 가상 인터럽트 식별자에 고유하게 대응하는, 장치.
- 제22항 또는 제23항에 있어서, 컴퓨팅 디바이스는 상기 하드웨어 레이어에 기초하여 구현되는 물리적 인터럽트 변환 서비스(ITS) 및 물리적 일반 인터럽트 컨트롤러(GIC)를 포함하고;
상기 물리적 ITS는 상기 물리적 인터럽트 식별자에 기초하여, 상기 대응하는 가상 인터럽트 식별자 및 상기 대응하는 가상 프로세서 식별자를 획득하도록 구성되고;
상기 물리적 GIC는 상기 가상 인터럽트 식별자를 상기 타겟 가상 프로세서에 전달하도록 구성되는, 장치. - 제22항 내지 제24항 중 어느 한 항에 있어서, 상기 가상 인터럽트 처리 유닛은 상기 가상 인터럽트 및 미리 구성된 제1 매핑 관계에 기초하여, 상기 가상 인터럽트에 대응하는 상기 물리적 인터럽트 식별자를 획득하도록 추가로 구성되고, 상기 제1 매핑 관계는 복수의 가상 인터럽트, 및 각각의 가상 인터럽트와 물리적 인터럽트 식별자 간의 대응관계를 나타내고;
상기 물리적 인터럽트 처리 유닛은 상기 물리적 인터럽트 식별자 및 미리 구성된 제2 매핑 관계에 기초하여, 상기 물리적 인터럽트에 대응하는 상기 가상 인터럽트 식별자를 획득하도록 추가로 구성되고, 상기 제2 매핑 관계는 복수의 물리적 인터럽트 식별자, 및 각각의 물리적 인터럽트 식별자와 가상 인터럽트 식별자 간의 대응관계를 나타내는, 장치. - 제22항 내지 제25항 중 어느 한 항에 있어서, 상기 물리적 인터럽트 처리 유닛은 상기 물리적 인터럽트 식별자 및 미리 구성된 제3 매핑 관계에 기초하여, 상기 대응하는 가상 프로세서 식별자를 획득하도록 추가로 구성되고, 상기 제3 매핑 관계는 복수의 물리적 인터럽트 식별자, 및 각각의 물리적 인터럽트 식별자와 가상 프로세서 식별자 간의 대응관계를 나타내는, 장치.
- 제22항 내지 제26항 중 어느 한 항에 있어서, 상기 물리적 인터럽트 처리 유닛은:
상기 물리적 인터럽트 식별자에 기초하여 물리적 인터럽트를 생성하고;
상기 물리적 인터럽트에 기초하여 상기 가상 인터럽트 식별자 및 상기 가상 프로세서 식별자를 획득하도록
추가로 구성되는, 장치. - 제22항 내지 제27항 중 어느 한 항에 있어서, 상기 가상 인터럽트는 가상 디바이스 식별자 및 가상 인터럽트 벡터 식별자를 포함하고;
상기 가상 인터럽트 처리 유닛은 상기 가상 인터럽트에 기초하여, 상기 가상 디바이스 식별자에 대응하는 물리적 디바이스 식별자 및 상기 가상 인터럽트 벡터 식별자에 대응하는 물리적 인터럽트 벡터 식별자를 획득하도록 추가로 구성되고, 상기 물리적 인터럽트 식별자는 상기 물리적 디바이스 식별자 및 상기 물리적 인터럽트 벡터 식별자를 포함하는, 장치. - 제22항 내지 제28항 중 어느 한 항에 있어서, 상기 물리적 인터럽트 처리 유닛은 상기 물리적 인터럽트 식별자에 대응하는 인터럽트 상태 정보를 획득하고 - 상기 인터럽트 상태 정보는 상기 물리적 인터럽트 식별자에 대응하는 상기 가상 인터럽트 식별자가 상기 가상 프로세서에 전달될 수 있는지를 나타냄 -; 상기 인터럽트 상태 정보에 기초하여, 상기 가상 인터럽트 식별자가 상기 가상 프로세서에 전달될 수 있음을 결정하도록 추가로 구성되는, 장치.
- 제22항 내지 제29항 중 어느 한 항에 있어서, 상기 가상 인터럽트 처리 유닛은:
가상 머신 라이브 마이그레이션 프로세스에서 상기 하드웨어 레이어로부터 상기 물리적 인터럽트 식별자에 대응하는 상기 인터럽트 상태 정보를 획득하고 - 상기 인터럽트 상태 정보는 상기 물리적 인터럽트 식별자에 대응하는 상기 가상 인터럽트 식별자가 상기 가상 프로세서에 전달될 수 있는지를 나타냄 -; 상기 인터럽트 상태 정보를 상기 컴퓨팅 디바이스가 아닌 컴퓨팅 디바이스의 하드웨어 레이어에 기입하도록
추가로 구성되는, 장치. - 명령어들을 포함하는 컴퓨터 판독가능 매체로서,
상기 명령어들이 프로세싱 장치의 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨터 판독가능 매체는 제10항 내지 제21항 중 어느 한 항에 따른 방법을 수행하도록 동작되는, 컴퓨터 판독가능 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010604993.9 | 2020-06-29 | ||
CN202010604993.9A CN113934504A (zh) | 2020-06-29 | 2020-06-29 | 一种系统以及中断处理方法 |
PCT/CN2021/102011 WO2022001808A1 (zh) | 2020-06-29 | 2021-06-24 | 一种系统以及中断处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230025915A true KR20230025915A (ko) | 2023-02-23 |
Family
ID=79273031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020237002968A KR20230025915A (ko) | 2020-06-29 | 2021-06-24 | 시스템 및 인터럽트 처리 방법 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20230133273A1 (ko) |
EP (1) | EP4170492A4 (ko) |
JP (1) | JP2023532077A (ko) |
KR (1) | KR20230025915A (ko) |
CN (1) | CN113934504A (ko) |
BR (1) | BR112022026693A2 (ko) |
WO (1) | WO2022001808A1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114726657B (zh) * | 2022-03-21 | 2024-06-14 | 京东科技信息技术有限公司 | 中断管理和数据收发管理的方法、装置及智能网卡 |
CN116521324B (zh) * | 2023-06-30 | 2024-04-12 | 深圳中安辰鸿技术有限公司 | 中断虚拟化处理方法、装置及电子设备 |
CN116954830B (zh) * | 2023-09-18 | 2023-12-26 | 麒麟软件有限公司 | jailhouse下使虚拟机实现msi/x中断的方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61240333A (ja) * | 1985-04-17 | 1986-10-25 | Fujitsu Ltd | 入出力割込処理方式 |
US7840839B2 (en) * | 2007-11-06 | 2010-11-23 | Vmware, Inc. | Storage handling for fault tolerance in virtual machines |
US8489789B2 (en) * | 2010-02-05 | 2013-07-16 | Advanced Micro Devices, Inc. | Interrupt virtualization |
US9477505B2 (en) * | 2012-08-14 | 2016-10-25 | Oracle International Corporation | Method for reducing the overhead associated with a virtual machine exit when handling instructions related to descriptor tables |
CN103559087B (zh) * | 2013-10-31 | 2017-11-28 | 华为技术有限公司 | 一种虚拟处理器之间的中断的实现方法、相关装置和系统 |
KR101847518B1 (ko) * | 2014-06-20 | 2018-05-28 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 가상화 플랫폼에 의한 중단을 처리하는 및 관련 장치 |
WO2016092667A1 (ja) * | 2014-12-11 | 2016-06-16 | 株式会社日立製作所 | 計算機及び割込み制御方法 |
-
2020
- 2020-06-29 CN CN202010604993.9A patent/CN113934504A/zh active Pending
-
2021
- 2021-06-24 BR BR112022026693A patent/BR112022026693A2/pt unknown
- 2021-06-24 JP JP2022580544A patent/JP2023532077A/ja active Pending
- 2021-06-24 KR KR1020237002968A patent/KR20230025915A/ko not_active Application Discontinuation
- 2021-06-24 EP EP21832328.5A patent/EP4170492A4/en active Pending
- 2021-06-24 WO PCT/CN2021/102011 patent/WO2022001808A1/zh unknown
-
2022
- 2022-12-27 US US18/146,943 patent/US20230133273A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022001808A1 (zh) | 2022-01-06 |
EP4170492A1 (en) | 2023-04-26 |
US20230133273A1 (en) | 2023-05-04 |
EP4170492A4 (en) | 2023-12-13 |
JP2023532077A (ja) | 2023-07-26 |
BR112022026693A2 (pt) | 2023-01-24 |
CN113934504A (zh) | 2022-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11836515B2 (en) | Multi-hypervisor virtual machines | |
US10628330B2 (en) | VM inter-process communication | |
EP3554025B1 (en) | Method for forwarding packet and physical host | |
Chen et al. | Enabling FPGAs in the cloud | |
RU2532708C2 (ru) | Способ и устройство для осуществления операции ввода/вывода в среде виртуализации | |
Abramson et al. | Intel Virtualization Technology for Directed I/O. | |
US10176007B2 (en) | Guest code emulation by virtual machine function | |
US20230133273A1 (en) | System and interrupt handling method | |
CN103034524A (zh) | 半虚拟化的虚拟gpu | |
US10620963B2 (en) | Providing fallback drivers for IO devices in a computing system | |
US10754679B2 (en) | Method and apparatus for handling network I/O device virtualization | |
JP2023545818A (ja) | チップ・システム、仮想割り込み処理方法および対応する装置 | |
Rossier | EmbeddedXEN: A Revisited Architecture of the XEN hypervisor to support ARM-based embedded virtualization | |
Dall et al. | Optimizing the Design and Implementation of the Linux {ARM} Hypervisor | |
Tavares et al. | Rodosvisor—An ARINC 653 quasi-compliant hypervisor: CPU, memory and I/O virtualization | |
US20240111561A1 (en) | Requesting power management metrics for a parallel accelerated processor for a virtual function | |
US11113091B2 (en) | Apparatus for forwarding a mediated request to processing circuitry in response to a configuration request | |
Wyman et al. | Multiple-logical-channel subsystems: Increasing zSeries I/O scalability and connectivity | |
Ribeiro | VirtIO Infrastructure for a Static Partition Hypervisor: virtio-blk and virtio-console | |
CN114327741A (zh) | 服务器系统、容器设置方法及装置 | |
Reichenbach | System-call offloading via Linux’io_uring on the Jailhouse partitioning hypervisor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal |