KR20230084300A - 칩 시스템, 가상 인터럽트 처리 방법 및 대응하는 장치 - Google Patents
칩 시스템, 가상 인터럽트 처리 방법 및 대응하는 장치 Download PDFInfo
- Publication number
- KR20230084300A KR20230084300A KR1020237015942A KR20237015942A KR20230084300A KR 20230084300 A KR20230084300 A KR 20230084300A KR 1020237015942 A KR1020237015942 A KR 1020237015942A KR 20237015942 A KR20237015942 A KR 20237015942A KR 20230084300 A KR20230084300 A KR 20230084300A
- Authority
- KR
- South Korea
- Prior art keywords
- virtual
- interrupt
- processor
- identifier
- physical processor
- Prior art date
Links
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/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
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- 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
-
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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
-
- 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/45583—Memory management, e.g. access or allocation
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)
Abstract
칩 시스템이 제공되며, 이는 가상화 기술 분야에 적용된다. 칩 시스템은 소스 물리 프로세서(source physical processor), 제어 장치, 중간 장치, 송신 장치 및 타겟 물리 프로세서(target physical processor)를 포함한다. 호스트 머신 또는 가상 머신은 소스 물리 프로세서에서 실행된다. 제어 장치의 레지스터는, 호스트 머신 또는 가상 머신에 의해 기록되고 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신한다. 제어 장치는, 레지스터에 있고 가상 인터럽트를 트리거하는 데 사용되는 정보를 중간 장치로 전송한다. 중간 장치는 가상 인터럽트를 트리거하는 데 사용되는 정보에 기초하여 가상 인터럽트를 트리거하고, 가상 인터럽트를 송신 장치로 전송한다. 송신 장치는 가상 인터럽트를 타겟 물리 프로세서로 전송한다. 이 솔루션은 가상 인터럽트로 인해 발생하는, 가상 머신에서 호스트 머신으로 또는 호스트 머신의 사용자 모드에서 호스트 머신의 커널(kernel) 모드로 전환하는 것의 오버헤드(overhead)를 줄이는 데 사용된다.
Description
본 출원은 "칩 시스템, 가상 인터럽트 처리 방법 및 대응하는 장치(CHIP SYSTEM, VIRTUAL INTERRUPT PROCESSING METHOD, AND CORRESPONDING APPARATUS)"라는 명칭으로 2020년 10월 15일에 중국 특허청에 제출된 중국 특허 출원 번호 202011108332.3에 대한 우선권을 주장하며, 이는 그 전체 내용이 본 명세서에 참조로 포함된다.
본 출원은 가상화 기술 분야에 관한 것으로, 특히 칩 시스템, 가상 인터럽트 처리 방법 및 대응하는 장치에 관한 것이다.
가상 인터럽트는 가상화 기술의 필수 부분이다. 가상 머신(virtual machine, VM)은 컴퓨터 디바이스에서 실행된다. 컴퓨터 디바이스의 입/출력(input/output, I/O) 디바이스 또는 디스크와 같은 하드웨어 디바이스에 의해 가상 머신으로 전송되는 통지 및 가상 머신 내부의 다양한 유형의 동기화와 조정은 가상 인터럽트에 의존한다. 가상 인터럽트는 이벤트이다. 이러한 이벤트는 다양한 소스(source)를 가질 수 있으며, 이벤트에 대한 처리 프로세스는 소스에 따라 다르다. 그러나, 이러한 각 소스로부터의 이벤트는 가상 머신이 실행될 때 수신되는 인터럽트의 형태로 가상 머신에 통지된다.
가상 인터럽트의 소스에 관계없이, 가상 인터럽트가 가상 머신에 최종적으로 도달하기 전에 호스트 머신은 호스트 머신의 다양한 메커니즘을 사용하여 소스에서 타겟(target) 가상 머신으로 가상 인터럽트의 전송을 완료해야 한다. 가상 인터럽트를 전송하는 프로세스에서, 프로세서의 제어 흐름은 실행 중인 가상 머신에서 호스트 머신으로 전환되거나 호스트 머신의 사용자 모드에서 호스트 머신의 커널(kernel) 모드로 전환되어야 한다. 이로 인해 상대적으로 큰 스위칭 오버헤드(switching overhead)가 발생한다.
본 출원의 실시예는, 가상 머신에서 호스트 머신으로 또는 호스트 머신의 사용자 모드에서 호스트 머신의 커널(kernel) 모드로 전환할 때 가상 인터럽트로 인해 발생하는 스위칭 오버헤드(overhead)를 줄이기 위한 칩 시스템, 가상 인터럽트 처리 방법 및 대응하는 장치를 제공한다. 본 출원의 실시예는 대응하는 컴퓨터 디바이스, 컴퓨터 저장 매체, 컴퓨터 프로그램 제품 등을 추가로 제공한다.
본 출원의 제1 양태는 칩 시스템을 제공한다. 칩 시스템은 소스 물리 프로세서(source physical processor), 제어 장치, 중간 장치, 송신 장치 및 타겟 물리 프로세서(target physical processor)를 포함한다. 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성된다. 제어 장치는 레지스터를 포함한다. 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신 또는 가상 머신에서 비롯될 수 있다. 제어 장치는, 레지스터에 있고 가상 인터럽트를 트리거하는 데 사용되는 정보를 중간 장치로 전송하도록 구성된다. 중간 장치는 가상 인터럽트를 트리거하는 데 사용되는 정보에 기초하여 가상 인터럽트를 트리거하고 가상 인터럽트를 송신 장치로 전송하도록 구성된다. 송신 장치는 중간 장치로부터 가상 인터럽트를 수신하고 가상 인터럽트를 타겟 물리 프로세서로 전송하도록 구성된다.
본 출원에서, 칩 시스템은 시스템 온 칩(system on chip, SOC)일 수 있고, 소스 물리 프로세서 및 타겟 물리 프로세서는 각각 처리 유닛(processing unit), 예를 들어 물리적 코어일 수 있다. 제어 장치, 중간 장치 및 송신 장치는 모두 하드웨어 회로를 사용하여 구현될 수도 있고, 소프트웨어를 사용하여 구현될 수도 있다. 소스 물리 프로세서 및 타겟 물리 프로세서는 멀티코어 프로세서의 물리적 코어일 수 있다. 멀티코어 프로세서는 복수의 물리적 코어를 포함한다. 물리적 코어는 프로세서에 통합된 코어이다. 물리적 코어는 처리 유닛이다. 예를 들어, 듀얼코어 프로세서는 2개의 물리적 코어를 갖는 프로세서로 이해될 수 있다. 제어 장치 및 송신 장치는 멀티코어 프로세서에 배치될 수 있으며 소스 물리 프로세서 및 타겟 물리 프로세서에 결합된다. 중간 장치는 멀티코어 프로세서에 배치될 수도 있고, 멀티코어 프로세서에 결합된 주변 장치/주변 컴포넌트 상에 배치될 수도 있다. 시스템 온 칩은 멀티코어 프로세서 및 멀티코어 프로세서에 결합된 주변 장치/주변 컴포넌트를 포함할 수 있다. 칩 시스템의 모든 물리 프로세서는 소스 물리 프로세서로 사용될 수도 있고 타겟 물리 프로세서로 사용될 수도 있다.
본 출원에서, 가상 인터럽트(virtual interrupt)는 컴퓨터 디바이스의 하드웨어 디바이스, 호스트 머신, 가상 머신(virtual machine, VM)의 클럭(clock), 가상 머신의 가상 프로세서(virtual processor) 등에 의해 가상 머신으로 전송되는 인터럽트이다. 가상 인터럽트를 발생시키는 하드웨어 디바이스는 컴퓨터 디바이스의 디스크, 네트워크 어댑터, 오디오 어댑터, 마우스, 하드 디스크 등일 수 있다. 물리적 인터럽트는 하드웨어 디바이스에서 물리 프로세서로 보내는 인터럽트이다. 물리적 인터럽트는 호스트 머신에 의해 처리되고 가상 인터럽트는 가상 머신에 의해 처리된다.
본 출원의 실시예에서 언급되는 가상 프로세서의 구체적인 구현은 가상 중앙 처리 장치(virtual central processing unit, vCPU)일 수 있다는 점에 유의해야 한다. 후술되는 "vCPU"는 이해를 돕기 위해 "가상 프로세서"로 대체될 수 있다.
본 출원에서, 가상 인터럽트는 가상 로컬 인터럽트(virtual local interrupt), 가상 소프트웨어 인터럽트(virtual software interrupt), 가상 디바이스 인터럽트(virtual device interrupt) 및 직접 주변장치 인터럽트(direct peripheral interrupt)를 포함할 수 있다. 가상 로컬 인터럽트는 가상 머신이 시뮬레이트(simulate)한 가상 로컬 디바이스가 보내는 인터럽트 또는 가상 머신의 vCPU의 로컬 디바이스가 보내는 인터럽트(예를 들어, 가상 머신의 vCPU의 타이머가 보내는 클럭 인터럽트)를 의미한다. 가상 소프트웨어 인터럽트는 소프트웨어에 의해 트리거되며, 일반적으로 가상 머신의 vCPU에서 가상 머신의 다른 vCPU로 전송되는 인터럽트이다. 가상 머신은 복수의 vCPU를 가질 수 있으며, 이들 vCPU는 가상 머신의 서로 다른 작업들을 실행하기 위해 동일한 순간에 서로 다른 물리 프로세서들에서 실행될 수 있다. 서로 다른 vCPU들에 의해 실행되는 작업들이 서로 의존하거나 스케줄링되어야 하는 경우 가상 소프트웨어 인터럽트가 발생한다. 가상 디바이스 인터럽트는 하드웨어 디바이스를 시뮬레이트하는 호스트 머신에 의해 트리거되는 인터럽트를 의미하며, 예를 들어 가상 머신 디스크 제어기를 시뮬레이트하거나 다른 하드웨어 디바이스를 시뮬레이트하는 호스트 머신에 의해 발생되는 인터럽트를 의미한다.
본 출원에서, 제어 장치는 적어도 하나의 레지스터를 포함할 수 있으며, 각각의 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 한 가지 유형의 정보를 수신하도록 구성될 수 있다. 예를 들어, 3개의 레지스터가 포함되는데, 하나의 레지스터는 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고, 하나의 레지스터는 가상 소프트웨어 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되며, 하나의 레지스터는 가상 디바이스 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 물론, 제어 장치에서는 가상 인터럽트에 대해 하나의 레지스터만 구성될 수 있으며, 각 유형의 가상 인터럽트를 트리거하는 데 사용되는 정보는 서로 상이하다. 가상 인터럽트의 유형은 레지스터에 의해 수신된 정보를 사용하여 식별될 수 있다.
하나 이상의 중간 장치가 존재할 수 있다. 송신 장치는, 각각의 물리 프로세서가 하나의 송신 장치를 갖는 것일 수도 있고, 복수의 물리 프로세서가 하나의 송신 장치를 공유하는 것일 수도 있다.
제1 양태에서 가상 인터럽트 처리 전용 레지스터가 제어 장치에 배치된다는 것을 제1 양태를 통해 알 수 있다. 이러한 방식으로, 사용자 모드 또는 커널 모드의 호스트 머신 또는 가상 머신은 가상 인터럽트를 트리거하는 데 사용되는 정보를 레지스터에 직접 기록할 수 있다. 제어 장치는 가상 인터럽트를 트리거하는 데 사용되는 정보를 중간 장치로 전송할 수 있고, 중간 장치는 가상 인터럽트를 트리거한다. 또한, 중간 장치는 가상 인터럽트를 송신 장치로 전송하고, 송신 장치는 가상 인터럽트를 타겟 물리 프로세서로 전송한다. 본 출원에서 제공되는 솔루션에서, 호스트 머신 또는 가상 머신은 레지스터에 직접 액세스하고 가상 인터럽트를 트리거하는 데 사용되는 정보를 레지스터에 기록하여 가상 인터럽트가 전송되도록 할 수 있다. 따라서, 종래 기술과 비교하여 본 출원에서 제공되는 솔루션에서는 소스 물리 프로세서가 가상 머신에서 호스트 머신으로 전환할 필요가 없고, 소스 물리 프로세서가 호스트 머신의 사용자 모드에서 호스트 머신의 커널 모드로 전환할 필요가 없어, 가상 인터럽트 처리 중에 발생하는 스위칭 오버헤드를 줄이고 칩 시스템의 성능을 향상시킨다.
제1 양태의 가능한 구현에서, 가상 인터럽트는 가상 로컬 인터럽트이고, 타겟 물리 프로세서 및 소스 물리 프로세서는 동일한 물리 프로세서이고, 레지스터는, 가상 머신에 의해 기록되고 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 송신 장치는 가상 로컬 인터럽트를 가상 머신의 제1 가상 프로세서 vCPU로 전송하도록 구성되며, 여기서 제1 vCPU는 소스 물리 프로세서에서 실행된다.
이 가능한 구현에서, 가상 로컬 인터럽트는 코어 내의 인터럽트이므로 타겟 물리 프로세서와 소스 물리 프로세서는 동일한 물리 프로세서이다. 중간 장치는 타이머일 수 있고, 가상 로컬 인터럽트는 클럭 인터럽트일 수 있다. 하나의 물리 프로세서는 한 순간에 하나의 가상 머신의 하나의 vCPU만 실행하고, 가상 로컬 인터럽트를 가상 머신으로 전송하는 동작은 가상 로컬 인터럽트를 vCPU로 전송함으로써 완료될 수 있다. 가상 로컬 인터럽트를 처리하는 프로세스에서 소스 물리 프로세서가 가상 머신에서 호스트 머신으로 전환할 필요가 없으므로 가상 로컬 인터럽트 처리 중에 발생하는 스위칭 오버헤드를 줄이고 칩 시스템의 성능을 향상시킨다는 것을 이 가능한 구현을 통해 알 수 있다.
제1 양태의 가능한 구현에서, 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 가상 머신의 제1 vCPU에 의해 레지스터에 기록되는 제2 vCPU의 식별자를 포함하며, 여기서 제2 vCPU는 타겟 물리 프로세서에서 실행되는 가상 머신의 vCPU이다. 제어 장치는 레지스터로부터 제2 vCPU의 식별자를 판독하고, 가상 머신의 식별자를 획득하며, 가상 머신의 식별자 및 제2 vCPU의 식별자를 중간 장치로 전송하도록 구성된다. 중간 장치는, 가상 머신의 식별자 및 제2 vCPU의 식별자에 기초하여 제1 대응 관계로부터, 가상 머신의 식별자 및 제2 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하고 ― 제1 대응 관계는 타겟 물리 프로세서, 타겟 프로세서에서 실행되는 제2 vCPU 및 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 소프트웨어 인터럽트를 타겟 물리 프로세서에 대응하는 송신 장치로 전송하도록 구성된다. 송신 장치는 가상 소프트웨어 인터럽트를 타겟 물리 프로세서에서 실행되는 제2 vCPU로 전송하도록 구성된다.
이 가능한 구현에서, 가상 소프트웨어 인터럽트는 가상 머신의 제1 vCPU에서 가상 머신의 제2 vCPU로 전송되는 인터럽트이다. 따라서, 가상 머신의 제1 vCPU가 가상 소프트웨어 인터럽트를 트리거해야 할 때, 제2 vCPU의 식별자가 레지스터에 기록되어야 한다. 하나의 가상 머신은 복수의 vCPU를 가질 수 있으며, 하나의 가상 머신에 속한 vCPU들은 시분할 다중화 방식으로 하나의 물리 프로세서에서 실행될 수 있다. 예를 들어, 가상 머신 1의 vCPU1은 먼저 물리 프로세서 1에서 실행되고, 물리 프로세서 1이 vCPU1의 실행을 종료한 후 가상 머신 1의 vCPU2가 실행될 수 있다. 하나의 가상 머신에 속한 복수의 vCPU는 또한 서로 다른 물리 프로세서들에서 실행될 수 있으며, 서로 다른 vCPU들은 동일한 순간에 서로 다른 물리 프로세서들에서 실행될 수 있다. 예를 들어, 가상 머신 1의 vCPU 1은 물리 프로세서 1에서 실행되고, 가상 머신 1의 vCPU 2는 물리 프로세서 2에서 실행된다. 가상 소프트웨어 인터럽트 시나리오에서, 제1 vCPU는 소스 물리 프로세서에서 실행되고, 제2 vCPU는 타겟 물리 프로세서에서 실행된다. 제어 장치는, 소스 물리 프로세서에서 실행되는 가상 머신의 식별자를 저장하는 전용 레지스터로부터 가상 머신의 식별자를 획득할 수 있다. 각각의 가상 머신은 복수의 vCPU를 가질 수 있으며, 서로 다른 가상 머신의 vCPU의 식별자는 동일할 수 있다. 따라서, 제어 장치는 가상 머신의 식별자와 제2 vCPU의 식별자를 중간 장치로 전송해야 한다. 중간 장치는 제1 대응 관계를 저장할 수 있다. 제1 대응 관계는 인포지션(in-position) vCPU 식별자 그룹에 위치할 수 있다. 인포지션(in-position) vCPU 식별자 그룹은 칩 시스템의 각각의 물리 프로세서, 각각의 물리 프로세서에서 실행되는 vCPU 및 실행 중인 vCPU가 속한 가상 머신 간의 대응 관계를 기록한다. 본 출원에서, 물리 프로세서는 인포지션(in-position) vCPU 식별자 그룹을 검색함으로써 결정될 수 있다. 가상 소프트웨어 인터럽트를 처리하는 프로세스에서 소스 물리 프로세서가 가상 머신에서 호스트 머신으로 전환할 필요가 없으므로 가상 소프트웨어 인터럽트 처리 중에 발생하는 스위칭 오버헤드를 줄이고 칩 시스템의 성능을 향상시킨다는 것을 이 가능한 구현을 통해 알 수 있다.
제1 양태의 가능한 구현에서, 가상 인터럽트는 가상 디바이스 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신에 의해 레지스터에 기록되는 타겟 인터럽트 번호 및 가상 머신의 식별자를 포함하며, 여기서 타겟 인터럽트 번호는 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이다. 제어 장치는 레지스터로부터 타겟 인터럽트 번호 및 가상 머신의 식별자를 판독하고 가상 머신의 식별자 및 타겟 인터럽트 번호를 중간 장치로 전송하도록 구성된다. 중간 장치는, 가상 머신의 식별자 및 타겟 인터럽트 번호에 기초하여, 제2 대응 관계에서, 가상 머신의 식별자 및 타겟 인터럽트 번호에 대응하는 가상 머신의 제1 vCPU의 식별자를 검색하고 ― 제2 대응 관계는 가상 머신, 타겟 인터럽트 번호 및 제1 vCPU 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 머신의 식별자와 제1 vCPU의 식별자에 기초하여 제3 대응 관계로부터, 가상 머신의 식별자와 제1 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하고 ― 제3 대응 관계는 타겟 물리 프로세서, 타겟 프로세서에서 실행되는 제1 vCPU 및 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 디바이스 인터럽트를 타겟 물리 프로세서에 대응하는 송신 장치로 전송하도록 구성된다. 송신 장치는 가상 디바이스 인터럽트를 타겟 물리 프로세서에서 실행되는 제1 vCPU로 전송하도록 구성된다.
이 가능한 구현에서, 가상 디바이스 인터럽트는, 하드웨어 디바이스를 시뮬레이트할 때 사용자 모드의 호스트 머신에 의해 시뮬레이트된 하드웨어 디바이스에 의해 트리거되는 인터럽트이다. 복수의 유형의 하드웨어 디바이스가 존재할 수 있으며, 각 유형의 하드웨어 디바이스의 인터럽트 번호는 서로 상이하다. 호스트 머신이 디스크를 시뮬레이트하는 경우, 타겟 인터럽트 번호는 디스크의 인터럽트 번호이다. 호스트 머신이 복수의 가상 머신을 관리할 수 있기 때문에 호스트 머신은 가상 머신의 식별자와 타겟 인터럽트 번호를 레지스터에 기록해야 한다. 제2 대응 관계는 인터럽트 선호도(affinity) 테이블에 위치할 수 있다. 인터럽트 선호도 테이블은 가상 머신에 의해 구성될 수 있다. 따라서, 각각의 가상 머신에 대한 인터럽트 선호도 테이블이 존재한다. 이러한 방식으로, 가상 머신의 인터럽트 선호도 테이블을 가상 머신의 식별자에 기초하여 찾을 수 있고, 그런 다음, 타겟 인터럽트 번호에 기초하여 가상 머신의 인터럽트 선호도 테이블로부터 대응하는 vCPU를 결정할 수 있다. 타겟 인터럽트 번호는 10이다. 인터럽트 선호도 테이블 내의 인터럽트 번호 10이 vCPU ID1에 대응하는 경우, 타겟 인터럽트 번호에 대응하는 vCPU ID가 1이라고 판단할 수 있다. vCPU ID가 1이라고 판단한 후 라우팅 장치는 인포지션(in-position) vCPU 식별자 그룹에 기초하여, vCPU ID1에 대응하는 물리 프로세서를 찾을 수 있다. 인포지션(in-position) vCPU 식별자 그룹의 의미를 이해하기 위해서는 가상 소프트웨어 인터럽트에 관한 설명을 참조하고, 제3 대응 관계에 대해서는 제1 대응 관계를 참조한다. 가상 디바이스 인터럽트를 처리하는 프로세스에서 소스 물리 프로세서가 호스트 머신의 사용자 모드에서 호스트 머신의 커널 모드로 전환할 필요가 없으므로 가상 디바이스 인터럽트 처리 중에 발생하는 스위칭 오버헤드를 줄이고 칩 시스템의 성능을 향상시킨다는 것을 이 가능한 구현을 통해 알 수 있다.
제1 양태의 가능한 구현에서, 중간 장치는 어드레스 레지스터를 포함하며, 여기서 어드레스 레지스터는 메모리 내의 제2 대응 관계의 어드레스, 및 가상 머신의 식별자를 저장하도록 구성된다. 중간 장치는 가상 머신의 식별자에 기초하여 어드레스 레지스터를 검색하고, 어드레스 레지스터 내의 어드레스에 기초하여 메모리로부터 제2 대응 관계를 획득하도록 추가로 구성된다.
이 가능한 구현에서, 인터럽트 선호도 테이블은 중간 장치에 저장될 수도 있고 메모리에 저장될 수도 있다. 중간 장치는 각각의 물리 프로세서에 대한 어드레스 레지스터를 제공할 수 있다. 어드레스 레지스터는 베이스 어드레스(base address) 레지스터일 수 있으며, 베이스 어드레스 레지스터는 메모리 내의 인터럽트 선호도 테이블의 어드레스, 및 가상 머신의 식별자를 저장할 수 있다. 이러한 방식으로, 중간 장치의 저장 공간이 과도하게 사용되는 것을 피할 수 있다.
제1 양태의 가능한 구현에서, 송신 장치는 가상 인터럽트를 타겟 물리 프로세서의 펜딩 레지스터(pending register)에 기록하도록 구성되며, 여기서 펜딩 레지스터는 타겟 물리 프로세서에 의해 실행되는 절차의 명령을 수신하도록 구성된다.
이 가능한 구현에서, 펜딩 레지스터는 타겟 물리 프로세서에 의해 후속적으로 실행될 명령을 수신하고 가상 인터럽트를 펜딩 레지스터에 기록하도록 구성되어 타겟 물리 프로세서가 가상 인터럽트를 후속적으로 실행하도록 한다. 이러한 방식으로, 현재 실행되는 프로세스가 중단될 수 있고, 이로써 기존 솔루션에서 호스트 머신으로 전환하는 동작을 차폐할 수 있다. 이렇게 하면, 타겟 물리 프로세서를 가상 머신에서 호스트 머신으로 전환하는 오버헤드가 줄어든다.
본 출원의 제2 양태는 칩 시스템을 제공한다. 칩 시스템은 소스 물리 프로세서, 제어 장치, 중간 장치, 송신 장치 및 타겟 물리 프로세서를 포함한다. 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성된다. 칩 시스템은 가상 머신들 간의 직접 통신을 위한 하드웨어 디바이스를 더 포함한다. 중간 장치는, 하드웨어 디바이스에 의해 트리거되는 직접 주변장치 인터럽트(direct peripheral interrupt)를 수신하고, 직접 주변장치 인터럽트의 물리적 인터럽트 번호에 기초하여, 가상 인터럽트 테이블에서, 대응하는 가상 머신의 식별자 및 가상 인터럽트 번호를 검색하고 ― 가상 인터럽트 테이블은 물리적 인터럽트 번호, 가상 머신의 식별자 및 가상 인터럽트 번호 간의 대응 관계를 기록함 ―, 가상 머신의 식별자에 기초하여 대응하는 인터럽트 선호도 테이블을 결정하고, 인터럽트 선호도 테이블로부터, 가상 인터럽트 번호에 대응하는 타겟 가상 프로세서 vCPU의 식별자 및 가상 머신의 식별자를 결정하고 ― 인터럽트 선호도 테이블은 가상 인터럽트 번호와 가상 프로세서 간의 대응 관계를 기록함 ―, 타겟 vCPU의 식별자에 기초하여 인포지션(in-position) vCPU 식별자 그룹으로부터, 타겟 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하고, 직접 주변장치 인터럽트를 타겟 물리 프로세서에 대응하는 송신 장치로 전송하도록 구성된다. 송신 장치는 직접 주변장치 인터럽트를 타겟 물리 프로세서에서 실행되는 가상 머신으로 전송한다.
제2 양태에서, 직접 주변장치 인터럽트는 가상 머신에 직접 연결된 주변 장치에 의해 트리거되는 인터럽트, 예를 들어 가상 머신에 직접 연결된 그래픽 카드에 의해 발생되는 인터럽트를 의미한다. 직접 주변장치 인터럽트를 처리하는 프로세스에서, 가상 인터럽트 테이블, 인터럽트 선호도 테이블 및 인포지션(in-position) vCPU 식별자 그룹이 순차적으로 사용된다. 인터럽트 선호도 테이블 및 인포지션(in-position) vCPU 식별자 그룹을 이해하기 위해서는, 제1 양태의 가능한 구현들에 관한 설명을 참조한다. 다음은 가상 인터럽트 테이블에 대한 설명이다. 가상 인터럽트 테이블은 물리적 인터럽트 번호, 가상 머신의 식별자 및 가상 인터럽트 번호 간의 매핑 관계를 유지한다. 물리적 인터럽트 번호가 입력된 후 가상 머신의 식별자와 가상 인터럽트 번호가 출력될 수 있다. 직접 주변장치 인터럽트를 처리하는 프로세스에서, 중간 장치는 직접 주변장치가 보낸 물리적 인터럽트 번호를 수신하고, 물리적 인터럽트 번호에 기초하여 가상 인터럽트 테이블에서 대응하는 가상 머신 식별자 및 가상 인터럽트 번호를 검색한다. 예를 들어, 물리적 인터럽트 번호 100이 입력되면, 가상 머신 식별자 1과 가상 인터럽트 번호 10이 출력될 수 있다. 그 다음, 가상 머신의 식별자 1과 가상 인터럽트 번호 10에 기초하여 인터럽트 선호도 테이블을 검색하여 대응하는 vCPU ID를 찾는데, 예를 들어 vCPU ID는 1로 나온다. 또한, vCPU ID에 기초하여, 인포지션(in-position) vCPU 식별자 그룹에서 대응하는 물리 프로세서를 검색한다. 예를 들어, 물리 프로세서 1이 검색 결과로 나오면, 중간 장치는 직접 주변장치 인터럽트를 물리 프로세서 1에 대응하는 송신 장치로 전송할 수 있고, 송신 장치는 직접 주변장치 인터럽트를 vCPU ID1에 대응하는 vCPU로 전송한다.
제2 양태에서 제공되는 직접 주변장치 인터럽트를 처리하는 프로세스에서, 3개의 대응 관계를 검색함으로써 전송 프로세스가 완료될 수 있고, 따라서 직접 주변장치 인터럽트 처리의 유연성을 향상시킨다.
본 출원의 제3 양태는 제어 장치를 제공한다. 제어 장치는 칩 시스템에 적용된다. 칩 시스템은 소스 물리 프로세서, 중간 장치 및 송신 장치를 더 포함한다. 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성된다. 제어 장치는 레지스터를 포함한다. 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신 또는 가상 머신에서 비롯된다. 제어 장치는 가상 인터럽트를 트리거하는 데 사용되는 정보를 레지스터로부터 판독하고, 가상 인터럽트를 트리거하는 데 사용되는 정보를 중간 장치로 전송하도록 구성된다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 중간 장치가 가상 인터럽트를 트리거할 수 있도록 하는 데 사용되며, 가상 인터럽트는 송신 장치에 의해 타겟 물리 프로세서로 전송된다.
제3 양태의 가능한 구현에서, 가상 인터럽트는 가상 로컬 인터럽트이고, 타겟 물리 프로세서 및 소스 물리 프로세서는 동일한 물리 프로세서이고, 레지스터는, 가상 머신에 의해 기록되고 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 제어 장치는 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 중간 장치로 전송하도록 구성된다. 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보는 중간 장치가 가상 로컬 인터럽트를 트리거할 수 있도록 하는 데 사용되고, 가상 로컬 인터럽트는 송신 장치에 의해 가상 머신의 제1 가상 프로세서 vCPU로 전송되며, 제1 vCPU는 소스 물리 프로세서에서 실행된다.
제3 양태의 가능한 구현에서, 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 가상 머신의 제1 vCPU에 의해 레지스터에 기록되는 제2 vCPU의 식별자를 포함하며, 제2 vCPU는 타겟 물리 프로세서에서 실행되는 가상 머신의 vCPU이다. 제어 장치는 레지스터로부터 제2 vCPU의 식별자를 판독하고, 가상 머신의 식별자를 획득하며, 가상 머신의 식별자 및 제2 vCPU의 식별자를 중간 장치로 전송하도록 구성되며, 여기서 가상 머신의 식별자 및 제2 vCPU의 식별자는 중간 장치에 의해 타겟 물리 프로세서를 결정하고 가상 소프트웨어 인터럽트를 트리거하는 데 사용된다. 가상 소프트웨어 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제2 vCPU로 전송된다.
제3 양태의 가능한 구현에서, 가상 인터럽트는 가상 디바이스 인터럽트이다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신에 의해 레지스터에 기록되는 타겟 인터럽트 번호, 및 가상 머신의 식별자를 포함하며, 타겟 인터럽트 번호는 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이다. 제어 장치는 레지스터로부터 타겟 인터럽트 번호 및 가상 머신의 식별자를 판독하고, 타겟 인터럽트 번호 및 가상 머신의 식별자를 중간 장치로 전송하도록 구성된다. 가상 머신의 식별자와 타겟 인터럽트 번호는 중간 장치에 의해 타겟 물리 프로세서를 결정하고 가상 디바이스 인터럽트를 트리거하는 데 사용되며, 가상 디바이스 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제1 vCPU로 전송된다.
본 출원의 제4 양태는 중간 장치를 제공한다. 중간 장치는 칩 시스템에 적용된다. 칩 시스템은 소스 물리 프로세서, 제어 장치, 송신 장치 및 타겟 물리 프로세서를 더 포함한다. 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성된다. 제어 장치는 레지스터를 포함한다. 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신 또는 가상 머신에서 비롯된다. 중간 장치는 가상 인터럽트를 트리거하는 데 사용되는 정보를 제어 장치로부터 수신하고, 가상 인터럽트를 트리거하는 데 사용되는 정보에 기초하여 가상 인터럽트를 트리거하고, 가상 인터럽트를 송신 장치로 전송하도록 구성된다. 가상 인터럽트는 송신 장치에 의해 타겟 물리 프로세서로 전송된다.
제4 양태의 가능한 구현에서, 가상 인터럽트는 가상 로컬 인터럽트이고, 타겟 물리 프로세서 및 소스 물리 프로세서는 동일한 물리 프로세서이고, 레지스터는, 가상 머신에 의해 기록되고 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 중간 장치는 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보에 기초하여 가상 로컬 인터럽트를 트리거하고, 가상 로컬 인터럽트를 송신 장치로 전송하도록 구성된다. 가상 로컬 인터럽트는 송신 장치에 의해 가상 머신의 제1 가상 프로세서 vCPU로 전송되고, 제1 vCPU는 소스 물리 프로세서에서 실행된다.
제4 양태의 가능한 구현에서, 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 가상 머신의 제1 vCPU에 의해 레지스터에 기록되는 제2 vCPU의 식별자를 포함하고, 여기서 제2 vCPU는 타겟 물리 프로세서에서 실행되는 가상 머신의 vCPU이다. 중간 장치는 제어 장치로부터 가상 머신의 식별자 및 제2 vCPU의 식별자를 수신하고, 가상 머신의 식별자와 제2 vCPU의 식별자에 기초하여 제1 대응 관계로부터, 가상 머신의 식별자와 제2 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하고 ― 제1 대응 관계는 타겟 물리 프로세서, 타겟 프로세서에서 실행되는 제2 vCPU 및 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 소프트웨어 인터럽트를 트리거하며, 가상 소프트웨어 인터럽트를 타겟 물리 프로세서에 대응하는 송신 장치로 전송하도록 구성된다. 가상 소프트웨어 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제2 vCPU로 전송된다.
제4 양태의 가능한 구현에서, 가상 인터럽트는 가상 디바이스 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신에 의해 레지스터에 기록되는 타겟 인터럽트 번호 및 가상 머신의 식별자를 포함하며, 여기서 타겟 인터럽트 번호는 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이다. 중간 장치는 제어 장치로부터 가상 머신의 식별자 및 타겟 인터럽트 번호를 수신하고, 가상 머신의 식별자 및 타겟 인터럽트 번호에 기초하여, 제2 대응 관계에서, 가상 머신의 식별자 및 타겟 인터럽트 번호에 대응하는 가상 머신의 제1 vCPU의 식별자를 검색하고 ― 제2 대응 관계는 가상 머신, 타겟 인터럽트 번호 및 제1 vCPU 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 머신의 식별자와 제1 vCPU의 식별자에 기초하여 제3 대응 관계로부터, 가상 머신의 식별자와 제1 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하고 ― 제3 대응 관계는 타겟 물리 프로세서, 타겟 프로세서에서 실행되는 제1 vCPU 및 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 디바이스 인터럽트를 트리거하며, 가상 디바이스 인터럽트를 타겟 물리 프로세서에 대응하는 송신 장치로 전송하도록 구성된다. 가상 디바이스 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제1 vCPU로 전송된다.
제4 양태의 가능한 구현에서, 중간 장치는 어드레스 레지스터를 포함하며, 여기서 어드레스 레지스터는 메모리 내의 제2 대응 관계의 어드레스, 및 가상 머신의 식별자를 저장하도록 구성된다. 중간 장치는 가상 머신의 식별자에 기초하여 어드레스 레지스터를 검색하고, 어드레스 레지스터 내의 어드레스에 기초하여 메모리로부터 제2 대응 관계를 획득하도록 추가로 구성된다.
본 출원의 제5 양태는 송신 장치를 제공한다. 송신 장치는 칩 시스템에 적용된다. 칩 시스템은 소스 물리 프로세서, 중간 장치, 타겟 물리 프로세서 및 제어 장치를 더 포함한다. 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성된다. 제어 장치는 레지스터를 포함한다. 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신 또는 가상 머신에서 비롯된다. 송신 장치는 중간 장치로부터 가상 인터럽트를 수신하고 가상 인터럽트를 타겟 물리 프로세서로 전송하도록 구성된다.
제5 양태의 가능한 구현에서, 가상 인터럽트는 가상 로컬 인터럽트이고, 타겟 물리 프로세서 및 소스 물리 프로세서는 동일한 물리 프로세서이다. 송신 장치는 중간 장치로부터 가상 로컬 인터럽트를 수신하고 가상 로컬 인터럽트를 가상 머신의 제1 가상 프로세서 vCPU로 전송하도록 구성되며, 여기서 제1 vCPU는 소스 물리 프로세서에서 실행된다.
제5 양태의 가능한 구현에서, 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 가상 머신의 제1 vCPU에 의해 레지스터에 기록되는 제2 vCPU의 식별자를 포함하며, 제2 vCPU는 타겟 물리 프로세서에서 실행되는 가상 머신의 vCPU이다. 송신 장치는 중간 장치로부터 가상 소프트웨어 인터럽트를 수신하고 가상 소프트웨어 인터럽트를 타겟 물리 프로세서에서 실행되는 제2 vCPU로 전송하도록 구성된다.
제5 양태의 가능한 구현에서, 가상 인터럽트는 가상 디바이스 인터럽트이다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신에 의해 레지스터에 기록되는 타겟 인터럽트 번호, 및 가상 머신의 식별자를 포함하며, 타겟 인터럽트 번호는 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이다. 송신 장치는 중간 장치로부터 가상 디바이스 인터럽트를 수신하고, 가상 디바이스 인터럽트를 타겟 물리 프로세서에서 실행되는 제1 vCPU로 전송하도록 구성된다.
제5 양태의 가능한 구현에서, 송신 장치는 가상 인터럽트를 타겟 물리 프로세서의 펜딩 레지스터에 기록하도록 구성되며, 여기서 펜딩 레지스터는 타겟 물리 프로세서에 의해 실행되는 절차의 명령을 수신하도록 구성된다.
제3 양태 내지 제5 양태 및 제3 양태 내지 제5 양태의 임의의 가능한 구현에 기술된 특징 및 상응하는 의도된 효과에 대해서는, 제1 양태 및 제1 양태의 임의의 가능한 구현에 관한 설명을 참조한다. 자세한 내용은 여기서 다시 설명하지 않는다.
본 출원의 제6 양태는 가상 인터럽트 처리 방법을 제공한다. 이 방법은 칩 시스템의 제어 장치에 적용된다. 칩 시스템은 소스 물리 프로세서, 중간 장치, 송신 장치 및 타겟 물리 프로세서를 더 포함한다. 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성된다. 제어 장치는 레지스터를 포함한다. 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신 또는 가상 머신에서 비롯된다. 방법은, 가상 인터럽트를 트리거하는 데 사용되는 정보를 레지스터로부터 판독하는 단계 및 가상 인터럽트를 트리거하는 데 사용되는 정보를 중간 장치로 전송하는 단계를 포함한다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 중간 장치가 가상 인터럽트를 트리거할 수 있도록 하는 데 사용되며, 가상 인터럽트는 송신 장치에 의해 타겟 물리 프로세서로 전송된다.
제6 양태의 가능한 구현에서, 가상 인터럽트는 가상 로컬 인터럽트이고, 타겟 물리 프로세서 및 소스 물리 프로세서는 동일한 물리 프로세서이고, 레지스터는, 가상 머신에 의해 기록되고 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보는 중간 장치가 가상 로컬 인터럽트를 트리거할 수 있도록 하는 데 사용되고, 가상 로컬 인터럽트는 송신 장치에 의해 가상 머신의 제1 가상 프로세서 vCPU로 전송되며, 제1 vCPU는 소스 물리 프로세서에서 실행된다.
제6 양태의 가능한 구현에서, 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 가상 머신의 제1 vCPU에 의해 레지스터에 기록되는 제2 vCPU의 식별자를 포함하며, 제2 vCPU는 타겟 물리 프로세서에서 실행되는 가상 머신의 vCPU이다. 방법은 가상 머신의 식별자를 획득하는 단계, 및 가상 머신의 식별자 및 제2 vCPU의 식별자를 중간 장치로 전송하는 단계를 더 포함하며, 여기서 가상 머신의 식별자 및 제2 vCPU의 식별자는 중간 장치에 의해 타겟 물리 프로세서를 결정하고 가상 소프트웨어 인터럽트를 트리거하는 데 사용된다. 가상 소프트웨어 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제2 vCPU로 전송된다.
제6 양태의 가능한 구현에서, 가상 인터럽트는 가상 디바이스 인터럽트이다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신에 의해 레지스터에 기록되는 타겟 인터럽트 번호, 및 가상 머신의 식별자를 포함하며, 타겟 인터럽트 번호는 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이다. 가상 머신의 식별자와 타겟 인터럽트 번호는 중간 장치에 의해 타겟 물리 프로세서를 결정하고 가상 디바이스 인터럽트를 트리거하는 데 사용되며, 가상 디바이스 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제1 vCPU로 전송된다.
본 출원의 제7 양태는 가상 인터럽트 처리 방법을 제공한다. 이 방법은 칩 시스템의 중간 장치에 적용된다. 칩 시스템은 소스 물리 프로세서, 제어 장치, 송신 장치 및 타겟 물리 프로세서를 더 포함한다. 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성된다. 제어 장치는 레지스터를 포함한다. 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신 또는 가상 머신에서 비롯된다. 방법은, 가상 인터럽트를 트리거하는 데 사용되는 정보를 제어 장치로부터 수신하는 단계, 가상 인터럽트를 트리거하는 데 사용되는 정보에 기초하여 가상 인터럽트를 트리거하는 단계, 및 가상 인터럽트를 송신 장치로 전송하는 단계를 포함한다. 가상 인터럽트는 송신 장치에 의해 타겟 물리 프로세서로 전송된다.
제7 양태의 가능한 구현에서, 가상 인터럽트는 가상 로컬 인터럽트이고, 타겟 물리 프로세서 및 소스 물리 프로세서는 동일한 물리 프로세서이고, 레지스터는, 가상 머신에 의해 기록되고 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보는 가상 로컬 인터럽트를 트리거하는 데 사용되고, 가상 로컬 인터럽트는 송신 장치에 의해 가상 머신의 제1 가상 프로세서 vCPU로 전송되며, 제1 vCPU는 소스 물리 프로세서에서 실행된다.
제7 양태의 가능한 구현에서, 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 가상 머신의 제1 vCPU에 의해 레지스터에 기록되는 제2 vCPU의 식별자를 포함하며, 여기서 제2 vCPU는 타겟 물리 프로세서에서 실행되는 가상 머신의 vCPU이다. 가상 인터럽트를 트리거하는 데 사용되는 정보에 기초하여 가상 인터럽트를 트리거하는 전술한 단계는, 가상 머신의 식별자 및 제2 vCPU의 식별자에 기초하여 제1 대응 관계로부터, 가상 머신의 식별자 및 제2 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하는 단계 ― 제1 대응 관계는 타겟 물리 프로세서, 타겟 프로세서에서 실행되는 제2 vCPU 및 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 및 가상 소프트웨어 인터럽트를 트리거하는 단계를 포함한다. 가상 소프트웨어 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제2 vCPU로 전송된다.
제7 양태의 가능한 구현에서, 가상 인터럽트는 가상 디바이스 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신에 의해 레지스터에 기록되는 타겟 인터럽트 번호 및 가상 머신의 식별자를 포함하며, 여기서 타겟 인터럽트 번호는 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이다. 가상 인터럽트를 트리거하는 데 사용되는 정보에 기초하여 가상 인터럽트를 트리거하는 전술한 단계는, 가상 머신의 식별자 및 타겟 인터럽트 번호에 기초하여, 제2 대응 관계에서, 가상 머신의 식별자 및 타겟 인터럽트 번호에 대응하는 가상 머신의 제1 vCPU의 식별자를 검색하는 단계 ― 제2 대응 관계는 가상 머신, 타겟 인터럽트 번호 및 제1 vCPU 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 머신의 식별자와 제1 vCPU의 식별자에 기초하여 제3 대응 관계로부터, 가상 머신의 식별자와 제1 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하는 단계 ― 제3 대응 관계는 타겟 물리 프로세서, 타겟 프로세서에서 실행되는 제1 vCPU 및 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 및 가상 디바이스 인터럽트를 트리거하는 단계를 포함한다. 가상 디바이스 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제1 vCPU로 전송된다.
제7 양태의 가능한 구현에서, 방법은, 가상 머신의 식별자에 기초하여 어드레스 레지스터를 찾는 단계, 및 어드레스 레지스터 내의 어드레스에 기초하여 메모리로부터 제2 대응 관계를 획득하는 단계 ― 어드레스 레지스터는 메모리 내의 제2 대응 관계의 어드레스, 및 가상 머신의 식별자를 저장하도록 구성됨 ―를 더 포함한다.
본 출원의 제8 양태는 가상 인터럽트 처리 방법을 제공한다. 이 방법은 칩 시스템의 송신 장치에 적용된다. 칩 시스템은 소스 물리 프로세서, 중간 장치, 제어 장치 및 타겟 물리 프로세서를 더 포함한다. 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성된다. 제어 장치는 레지스터를 포함한다. 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신 또는 가상 머신에서 비롯된다. 방법은, 중간 장치로부터 가상 인터럽트를 수신하는 단계 및 가상 인터럽트를 타겟 물리 프로세서로 전송하는 단계를 포함한다.
제8 양태의 가능한 구현에서, 가상 인터럽트는 가상 로컬 인터럽트이고, 타겟 물리 프로세서 및 소스 물리 프로세서는 동일한 물리 프로세서이다. 가상 인터럽트를 타겟 물리 프로세서로 전송하는 전술한 단계는 가상 로컬 인터럽트를 가상 머신의 제1 가상 프로세서 vCPU로 전송하는 단계를 포함하며, 여기서 제1 vCPU는 소스 물리 프로세서에서 실행된다.
제8 양태의 가능한 구현에서, 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 가상 머신의 제1 vCPU에 의해 레지스터에 기록되는 제2 vCPU의 식별자를 포함하며, 제2 vCPU는 타겟 물리 프로세서에서 실행되는 가상 머신의 vCPU이다. 가상 인터럽트를 타겟 물리 프로세서로 전송하는 전술한 단계는, 가상 소프트웨어 인터럽트를 타겟 물리 프로세서에서 실행되는 제2 vCPU로 전송하는 단계를 포함한다.
제8 양태의 가능한 구현에서, 가상 인터럽트는 가상 디바이스 인터럽트이다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신에 의해 레지스터에 기록되는 타겟 인터럽트 번호, 및 가상 머신의 식별자를 포함하며, 타겟 인터럽트 번호는 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이다. 가상 인터럽트를 타겟 물리 프로세서로 전송하는 전술한 단계는, 가상 디바이스 인터럽트를 타겟 물리 프로세서에서 실행되는 제1 vCPU로 전송하는 단계를 포함한다.
제8 양태의 가능한 구현에서, 방법은 가상 인터럽트를 타겟 물리 프로세서의 펜딩 레지스터에 기록하는 단계를 더 포함하며, 여기서 펜딩 레지스터는 타겟 물리 프로세서에 의해 실행되는 절차의 명령을 수신하도록 구성된다.
제6 양태 내지 제8 양태 및 제6 양태 내지 제8 양태의 임의의 가능한 구현에 기술된 특징 및 상응하는 의도된 효과에 대해서는, 제1 양태 및 제1 양태의 임의의 가능한 구현에 관한 설명을 참조한다. 자세한 내용은 여기서 다시 설명하지 않는다.
본 출원의 제9 양태는 제어 장치를 제공한다. 제어 장치는 칩 시스템에 적용된다. 칩 시스템은 소스 물리 프로세서, 중간 장치, 송신 장치 및 타겟 물리 프로세서를 더 포함한다. 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성된다. 제어 장치는 레지스터를 포함한다. 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신 또는 가상 머신에서 비롯된다. 제어 장치는, 가상 인터럽트를 트리거하는 데 사용되는 정보를 레지스터로부터 판독하도록 구성된 판독 유닛, 및 가상 인터럽트를 트리거하는 데 사용되는 정보를 중간 장치로 전송하도록 구성된 송신 유닛을 포함한다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 중간 장치에 의해 가상 인터럽트를 트리거하는 데 사용되며, 가상 인터럽트는 송신 장치에 의해 타겟 물리 프로세서로 전송된다.
제9 양태의 가능한 구현에서, 가상 인터럽트는 가상 로컬 인터럽트이고, 타겟 물리 프로세서 및 소스 물리 프로세서는 동일한 물리 프로세서이고, 레지스터는, 가상 머신에 의해 기록되고 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보는 중간 장치가 가상 로컬 인터럽트를 트리거할 수 있도록 하는 데 사용되고, 가상 로컬 인터럽트는 송신 장치에 의해 가상 머신의 제1 가상 프로세서 vCPU로 전송되며, 제1 vCPU는 소스 물리 프로세서에서 실행된다.
제9 양태의 가능한 구현에서, 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 가상 머신의 제1 vCPU에 의해 레지스터에 기록되는 제2 vCPU의 식별자를 포함하고, 제2 vCPU는 타겟 물리 프로세서에서 실행되는 가상 머신의 vCPU이다. 제어 장치는, 가상 머신의 식별자를 획득하도록 구성된 처리 유닛, 및 가상 머신의 식별자 및 제2 vCPU의 식별자를 중간 장치로 전송하도록 구성된 송신 유닛을 더 포함하고, 여기서 가상 머신의 식별자 및 제2 vCPU의 식별자는 중간 장치에 의해 타겟 물리 프로세서를 결정하고 가상 소프트웨어 인터럽트를 트리거하는 데 사용된다. 가상 소프트웨어 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제2 vCPU로 전송된다.
제9 양태의 가능한 구현에서, 가상 인터럽트는 가상 디바이스 인터럽트이다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신에 의해 레지스터에 기록되는 타겟 인터럽트 번호, 및 가상 머신의 식별자를 포함하며, 타겟 인터럽트 번호는 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이다. 가상 머신의 식별자와 타겟 인터럽트 번호는 중간 장치에 의해 타겟 물리 프로세서를 결정하고 가상 디바이스 인터럽트를 트리거하는 데 사용되며, 가상 디바이스 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제1 vCPU로 전송된다.
본 출원의 제10 양태는 중간 장치를 제공한다. 중간 장치는 칩 시스템에 적용된다. 칩 시스템은 소스 물리 프로세서, 제어 장치, 송신 장치 및 타겟 물리 프로세서를 더 포함한다. 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성된다. 제어 장치는 레지스터를 포함한다. 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신 또는 가상 머신에서 비롯된다. 중간 장치는, 가상 인터럽트를 트리거하는 데 사용되는 정보를 제어 장치로부터 수신하도록 구성된 수신 유닛, 가상 인터럽트를 트리거하는 데 사용되는 정보에 기초하여 가상 인터럽트를 트리거하도록 구성된 처리 유닛, 및 가상 인터럽트를 송신 장치로 전송하도록 구성된 송신 유닛을 포함한다. 가상 인터럽트는 송신 장치에 의해 타겟 물리 프로세서로 전송된다.
제10 양태의 가능한 구현에서, 가상 인터럽트는 가상 로컬 인터럽트이고, 타겟 물리 프로세서 및 소스 물리 프로세서는 동일한 물리 프로세서이고, 레지스터는, 가상 머신에 의해 기록되고 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보는 가상 로컬 인터럽트를 트리거하는 데 사용되고, 가상 로컬 인터럽트는 송신 장치에 의해 가상 머신의 제1 가상 프로세서 vCPU로 전송되며, 제1 vCPU는 소스 물리 프로세서에서 실행된다.
제10 양태의 가능한 구현에서, 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 가상 머신의 제1 vCPU에 의해 레지스터에 기록되는 제2 vCPU의 식별자를 포함하며, 여기서 제2 vCPU는 타겟 물리 프로세서에서 실행되는 가상 머신의 vCPU이다. 처리 유닛은, 가상 머신의 식별자 및 제2 vCPU의 식별자에 기초하여 제1 대응 관계로부터, 가상 머신의 식별자 및 제2 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하고 ― 제1 대응 관계는 타겟 물리 프로세서, 타겟 프로세서에서 실행되는 제2 vCPU 및 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 소프트웨어 인터럽트를 트리거하도록 구성된다. 가상 소프트웨어 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제2 vCPU로 전송된다.
제10 양태의 가능한 구현에서, 가상 인터럽트는 가상 디바이스 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신에 의해 레지스터에 기록되는 타겟 인터럽트 번호 및 가상 머신의 식별자를 포함하며, 여기서 타겟 인터럽트 번호는 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이다. 처리 유닛은, 가상 머신의 식별자 및 타겟 인터럽트 번호에 기초하여, 제2 대응 관계에서, 가상 머신의 식별자 및 타겟 인터럽트 번호에 대응하는 가상 머신의 제1 vCPU의 식별자를 검색하고 ― 제2 대응 관계는 가상 머신, 타겟 인터럽트 번호 및 제1 vCPU 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 머신의 식별자와 제1 vCPU의 식별자에 기초하여 제3 대응 관계로부터, 가상 머신의 식별자와 제1 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하고 ― 제3 대응 관계는 타겟 물리 프로세서, 타겟 프로세서에서 실행되는 제1 vCPU 및 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 디바이스 인터럽트를 트리거하도록 구성된다. 가상 디바이스 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제1 vCPU로 전송된다.
제10 양태의 가능한 구현에서, 처리 유닛은 가상 머신의 식별자에 기초하여 어드레스 레지스터를 찾고, 어드레스 레지스터 내의 어드레스에 기초하여 메모리로부터 제2 대응 관계를 획득하도록 추가로 구성되며, 여기서 어드레스 레지스터는 메모리 내의 제2 대응 관계의 어드레스, 및 가상 머신의 식별자를 저장하도록 구성된다.
본 출원의 제11 양태는 송신 장치를 제공한다. 송신 장치는 칩 시스템에 적용된다. 칩 시스템은 소스 물리 프로세서, 중간 장치, 제어 장치 및 타겟 물리 프로세서를 더 포함한다. 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성된다. 제어 장치는 레지스터를 포함한다. 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신 또는 가상 머신에서 비롯된다. 송신 장치는, 중간 장치로부터 가상 인터럽트를 수신하도록 구성된 수신 유닛, 및 가상 인터럽트를 타겟 물리 프로세서로 전송하도록 구성된 송신 유닛을 포함한다.
제11 양태의 가능한 구현에서, 가상 인터럽트는 가상 로컬 인터럽트이고, 타겟 물리 프로세서 및 소스 물리 프로세서는 동일한 물리 프로세서이다. 송신 장치는 가상 로컬 인터럽트를 가상 머신의 제1 가상 프로세서 vCPU로 전송하도록 구성되며, 여기서 제1 vCPU는 소스 물리 프로세서에서 실행된다.
제11 양태의 가능한 구현에서, 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 가상 머신의 제1 vCPU에 의해 레지스터에 기록되는 제2 vCPU의 식별자를 포함하며, 제2 vCPU는 타겟 물리 프로세서에서 실행되는 가상 머신의 vCPU이다. 송신 장치는 가상 소프트웨어 인터럽트를 타겟 물리 프로세서에서 실행되는 제2 vCPU로 전송하도록 구성된다.
제11 양태의 가능한 구현에서, 가상 인터럽트는 가상 디바이스 인터럽트이다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신에 의해 레지스터에 기록되는 타겟 인터럽트 번호, 및 가상 머신의 식별자를 포함하며, 타겟 인터럽트 번호는 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이다. 송신 장치는 가상 디바이스 인터럽트를 타겟 물리 프로세서에서 실행되는 제1 vCPU로 전송하도록 구성된다.
제11 양태의 가능한 구현에서, 송신 유닛은 가상 인터럽트를 타겟 물리 프로세서의 펜딩 레지스터에 기록하도록 구성되며, 여기서 펜딩 레지스터는 타겟 물리 프로세서에 의해 실행되는 절차의 명령을 수신하도록 구성된다.
제9 양태 내지 제11 양태 및 제9 양태 내지 제11 양태의 임의의 가능한 구현에 기술된 특징 및 상응하는 의도된 효과에 대해서는, 제1 양태 및 제1 양태의 임의의 가능한 구현에 관한 설명을 참조한다. 자세한 내용은 여기서 다시 설명하지 않는다.
본 출원의 제12 양태는 하나 이상의 컴퓨터 실행 가능 명령을 저장하는 컴퓨터 판독 가능 저장 매체를 제공한다. 컴퓨터 실행 가능 명령이 프로세서에 의해 실행될 때, 프로세서는 제6 양태 또는 제6 양태의 가능한 구현들 중 어느 하나의 구현에 따른 방법을 수행한다.
본 출원의 제13 양태는 하나 이상의 컴퓨터 실행 가능 명령을 저장하는 컴퓨터 판독 가능 저장 매체를 제공한다. 컴퓨터 실행 가능 명령이 프로세서에 의해 실행될 때, 프로세서는 제7 양태 또는 제7 양태의 가능한 구현들 중 어느 하나의 구현에 따른 방법을 수행한다.
본 출원의 제14 양태는 하나 이상의 컴퓨터 실행 가능 명령을 저장하는 컴퓨터 판독 가능 저장 매체를 제공한다. 컴퓨터 실행 가능 명령이 프로세서에 의해 실행될 때, 프로세서는 제8 양태 또는 제8 양태의 가능한 구현들 중 어느 하나의 구현에 따른 방법을 수행한다.
본 출원의 제15 양태는 하나 이상의 컴퓨터 실행 가능 명령을 저장하는 컴퓨터 프로그램 제품을 제공한다. 컴퓨터 실행 가능 명령이 프로세서에 의해 실행될 때, 프로세서는 제6 양태 또는 제6 양태의 가능한 구현들 중 어느 하나의 구현에 따른 방법을 수행한다.
본 출원의 제16 양태는 하나 이상의 컴퓨터 실행 가능 명령을 저장하는 컴퓨터 프로그램 제품을 제공한다. 컴퓨터 실행 가능 명령이 프로세서에 의해 실행될 때, 프로세서는 제7 양태 또는 제7 양태의 가능한 구현들 중 어느 하나의 구현에 따른 방법을 수행한다.
본 출원의 제17 양태는 하나 이상의 컴퓨터 실행 가능 명령을 저장하는 컴퓨터 프로그램 제품을 제공한다. 컴퓨터 실행 가능 명령이 프로세서에 의해 실행될 때, 프로세서는 제8 양태 또는 제8 양태의 가능한 구현들 중 어느 하나의 구현에 따른 방법을 수행한다.
본 출원의 제18 양태는 컴퓨터 디바이스를 제공한다. 컴퓨터 디바이스는 제1 양태 또는 제1 양태의 가능한 구현들 중 어느 하나의 구현에 따른 칩 시스템을 포함한다.
본 출원의 제19 양태는 칩 시스템을 제공한다. 칩 시스템은 소스 물리 프로세서, 제어 장치, 송신 장치 및 타겟 물리 프로세서를 포함한다. 제어 장치는 제3 양태, 제9 양태, 제3 양태의 가능한 구현들 중 어느 하나의 구현 또는 제9 양태의 가능한 구현들 중 어느 하나의 구현에 따르고, 송신 장치는 제5 양태, 제11 양태, 제11 양태의 가능한 구현들 중 어느 하나의 구현, 또는 제5 양태의 가능한 구현들 중 어느 하나의 구현에 따른다.
일 구현에서, 칩 시스템은 제4 양태, 제10 양태, 제10 양태의 가능한 구현들 중 어느 하나의 구현, 또는 제4 양태의 가능한 구현들 중 어느 하나의 구현에 따른 중간 장치를 더 포함할 수 있다.
일 구현에서, 제19 양태에 따른 칩 시스템은 프로세서이고, 소스 물리 프로세서 및 타겟 물리 프로세서는 프로세서 내의 물리적 코어이고, 제어 장치는 프로세서에 위치하며 소스 물리 프로세서에 결합된 구성요소이고, 송신 장치는 프로세서에 위치한 구성 요소이며 타겟 물리 프로세서에 결합된다. 프로세서의 모든 물리적 코어가 가상 인터럽트의 수신기로서 사용될 수 있음을 이해할 수 있다. 따라서, 물리적 코어는 소스 물리 프로세서뿐 아니라 타겟 물리 프로세서로도 사용될 수 있다. 이에 상응하여, 물리적 코어에 결합된 것은 제어 장치 및 송신 장치를 모두 포함할 수 있다.
본 출원의 이 실시예에서 제공되는 칩 시스템에 따르면, 가상 인터럽트 처리 전용 레지스터가 제어 장치에 배치된다. 이러한 방식으로, 사용자 모드의 호스트 머신 또는 가상 머신은 가상 인터럽트를 트리거하는 데 사용되는 정보를 레지스터에 직접 기록할 수 있다. 제어 장치는 가상 인터럽트를 트리거하는 데 사용되는 정보를 중간 장치로 전송할 수 있고, 중간 장치는 가상 인터럽트를 트리거한다. 또한, 중간 장치는 가상 인터럽트를 송신 장치로 전송하고, 송신 장치는 가상 인터럽트를 타겟 물리 프로세서로 전송한다. 본 출원에서 제공되는 솔루션에서, 호스트 머신 또는 가상 머신은 레지스터에 직접 액세스하고 가상 인터럽트를 트리거하는 데 사용되는 정보를 레지스터에 기록하여 가상 인터럽트가 전송되도록 할 수 있다. 따라서, 종래 기술과 비교하여 본 출원에서 제공되는 솔루션에서는 소스 물리 프로세서가 가상 머신에서 호스트 머신으로 전환하거나 호스트 머신의 사용자 모드에서 호스트 머신의 커널 모드로 전환할 필요가 없어, 가상 인터럽트 처리 중에 발생하는 스위칭 오버헤드를 줄이고 칩 시스템의 성능을 향상시킨다.
도 1은 본 출원의 일 실시예에 따른 컴퓨터 디바이스의 구조의 개략도이다.
도 2는 본 출원의 일 실시예에 따른 가상 인터럽트의 유형의 개략도이다.
도 3은 본 출원의 일 실시예에 따른 칩 시스템의 구조의 개략도이다.
도 4는 본 출원의 일 실시예에 따른 칩 시스템의 또 다른 구조의 개략도이다.
도 5는 본 출원의 일 실시예에 따른 가상 클럭 인터럽트의 개략도이다.
도 6은 본 출원의 일 실시예에 따른 인포지션(in-position) 가상 프로세서 식별자 그룹의 일 예의 개략도이다.
도 7은 본 출원의 일 실시예에 따른 가상 소프트웨어 인터럽트의 일 예의 개략도이다.
도 8은 본 출원의 일 실시예에 따른 라우팅 장치의 구조의 개략도이다.
도 9는 본 출원의 일 실시예에 따른 직접 주변장치 인터럽트의 일 예의 개략도이다.
도 10은 본 출원의 일 실시예에 따른 RISC-V 마이크로아키텍처에서의 칩 시스템의 구조의 개략도이다.
도 11은 본 출원의 일 실시예에 따른 RISC-V 마이크로아키텍처에서 가상 클럭 인터럽트를 처리하는 프로세스의 개략도이다.
도 12는 본 출원의 일 실시예에 따른 RISC-V 마이크로아키텍처에서 가상 소프트웨어 인터럽트를 처리하는 프로세스의 개략도이다.
도 13은 본 출원의 일 실시예에 따른 RISC-V 마이크로아키텍처에서 가상 디바이스 인터럽트를 처리하는 프로세스의 개략도이다.
도 14는 본 출원의 일 실시예에 따른 RISC-V 마이크로아키텍처에서 가상 디바이스 인터럽트를 처리하는 또 다른 프로세스의 개략도이다.
도 15는 본 출원의 일 실시예에 따른 RISC-V 마이크로아키텍처에서 직접 주변장치 인터럽트를 처리하는 프로세스의 개략도이다.
도 16은 본 출원의 일 실시예에 따른 가상 인터럽트 처리 방법의 일 실시예의 개략도이다.
도 17은 본 출원의 일 실시예에 따른 제어 장치의 일 실시예의 개략도이다.
도 18은 본 출원의 일 실시예에 따른 중간 장치의 일 실시예의 개략도이다.
도 19는 본 출원의 일 실시예에 따른 송신 장치의 일 실시예의 개략도이다.
도 20은 본 출원의 일 실시예에 따른 컴퓨터 디바이스의 또 다른 구조의 개략도이다.
도 2는 본 출원의 일 실시예에 따른 가상 인터럽트의 유형의 개략도이다.
도 3은 본 출원의 일 실시예에 따른 칩 시스템의 구조의 개략도이다.
도 4는 본 출원의 일 실시예에 따른 칩 시스템의 또 다른 구조의 개략도이다.
도 5는 본 출원의 일 실시예에 따른 가상 클럭 인터럽트의 개략도이다.
도 6은 본 출원의 일 실시예에 따른 인포지션(in-position) 가상 프로세서 식별자 그룹의 일 예의 개략도이다.
도 7은 본 출원의 일 실시예에 따른 가상 소프트웨어 인터럽트의 일 예의 개략도이다.
도 8은 본 출원의 일 실시예에 따른 라우팅 장치의 구조의 개략도이다.
도 9는 본 출원의 일 실시예에 따른 직접 주변장치 인터럽트의 일 예의 개략도이다.
도 10은 본 출원의 일 실시예에 따른 RISC-V 마이크로아키텍처에서의 칩 시스템의 구조의 개략도이다.
도 11은 본 출원의 일 실시예에 따른 RISC-V 마이크로아키텍처에서 가상 클럭 인터럽트를 처리하는 프로세스의 개략도이다.
도 12는 본 출원의 일 실시예에 따른 RISC-V 마이크로아키텍처에서 가상 소프트웨어 인터럽트를 처리하는 프로세스의 개략도이다.
도 13은 본 출원의 일 실시예에 따른 RISC-V 마이크로아키텍처에서 가상 디바이스 인터럽트를 처리하는 프로세스의 개략도이다.
도 14는 본 출원의 일 실시예에 따른 RISC-V 마이크로아키텍처에서 가상 디바이스 인터럽트를 처리하는 또 다른 프로세스의 개략도이다.
도 15는 본 출원의 일 실시예에 따른 RISC-V 마이크로아키텍처에서 직접 주변장치 인터럽트를 처리하는 프로세스의 개략도이다.
도 16은 본 출원의 일 실시예에 따른 가상 인터럽트 처리 방법의 일 실시예의 개략도이다.
도 17은 본 출원의 일 실시예에 따른 제어 장치의 일 실시예의 개략도이다.
도 18은 본 출원의 일 실시예에 따른 중간 장치의 일 실시예의 개략도이다.
도 19는 본 출원의 일 실시예에 따른 송신 장치의 일 실시예의 개략도이다.
도 20은 본 출원의 일 실시예에 따른 컴퓨터 디바이스의 또 다른 구조의 개략도이다.
다음은 첨부된 도면을 참조하여 본 출원의 실시예를 설명한다. 당연히, 기술된 실시예들은 본 출원의 모든 실시예들이 아니라 일부 실시예들에 불과하다. 당업자는 기술의 발전과 새로운 시나리오의 출현으로 본 출원에서 제공되는 기술 솔루션이 유사한 기술 문제에도 적용될 수 있음을 알 수 있다.
본 출원의 명세서, 청구범위 및 첨부 도면에서 "제1(first)", "제2(second)" 등의 용어는 유사한 대상을 구별하기 위한 것으로 반드시 특정한 순서나 차례를 나타내는 것은 아니다. 이러한 방식으로 명명된 데이터는 적절한 상황에서 서로 교환 가능하여 본 명세서에 기술된 실시예가 본 명세서에 도시되거나 기술된 순서가 아닌 다른 순서로 구현될 수 있음을 이해해야 한다. 또한, "포함하다(include, contain)"라는 용어 및 이의 다른 변형은 비배타적 포함을 포괄하는 의미하며, 예를 들어 일련의 단계 또는 유닛을 포함하는 프로세스, 방법, 시스템, 제품 또는 디바이스는 명시적으로 나열된 이들 단계 또는 유닛으로 반드시 제한되는 것은 아니며, 명시적으로 나열되지 않거나 이러한 프로세스, 방법, 시스템, 제품 또는 디바이스에 내재하는 다른 단계 또는 유닛을 포함할 수 있다.
본 출원의 실시예는 가상 머신에서 호스트 머신으로 또는 호스트 머신의 사용자 모드에서 호스트 머신의 커널 모드로 전환할 때 가상 인터럽트로 인해 발생하는 스위칭 오버헤드를 줄이기 위한 칩 시스템, 가상 인터럽트 처리 방법 및 대응하는 장치를 제공한다. 본 출원의 실시예는 대응하는 컴퓨터 디바이스, 컴퓨터 저장 매체, 컴퓨터 프로그램 제품 등을 추가로 제공한다. 자세한 내용은 아래에서 별도로 설명한다.
가상화는 컴퓨터 디바이스의 하드웨어 계층에서 하드웨어 리소스(예를 들어, 프로세서, 메모리의 저장 공간 및 네트워크 리소스)를 가상화한 다음 사용을 위해 가상화된 하드웨어 리소스를 여러 가상 컴퓨터와 공유하는 것이다. 가상 컴퓨터는 모든 종류의 가상화된 디바이스에서 소프트웨어로 가상화된 실행 환경의 총칭으로, 이 개념에는 가상 머신 또는 컨테이너(container)가 포함된다.
도 1에 도시된 바와 같이, 컴퓨터 디바이스(100)는 하드웨어 계층(112), 호스트 계층(109) 및 가상화 계층을 포함한다. 가상화 계층은 가상 머신(101, 102)을 포함한다. 가상 머신의 수는 더 많거나 더 적을 수 있으며, 본 명세서에서는 가상 머신의 수가 2개인 경우를 예로 사용한다. 하드웨어 계층(112)은 프로세서 시스템(114), 메모리(113), 통신 인터페이스(115) 및 인터럽트 제어기(116)를 포함한다.
가상 머신(virtual machine, VM)은 가상화 소프트웨어를 사용하여 컴퓨터 디바이스에서 시뮬레이트된다. 게스트 운영체제(guest operating system, 게스트 OS)(도 1의 105, 106)는 가상 머신(도 1의 101, 102)에 설치될 수 있으며, 하나 이상의 응용 프로그램(도 1의 103, 104)이 게스트 운영체제에서 실행된다. 가상 머신은 추가로 네트워크 리소스에 액세스할 수 있다. 가상 머신에서 실행되는 응용 프로그램은 실제 컴퓨터에서 작동하는 것처럼 작동한다.
가상 프로세서(예를 들어, 도 1의 107 및 108)는 가상화 기술에서 공유 또는 슬라이싱 방식으로 사용하기 위해 가상 컴퓨터에 제공되는 처리 유닛, 예를 들어 가상 CPU(virtual central processing unit, vCPU)를 나타낸다. 하나의 가상 컴퓨터는 하나 이상의 가상 프로세서에 의해 서빙될 수 있다. 복수의 가상 프로세서가 있는 경우, 일반적으로 하나의 가상 프로세서는 주(primary) 가상 프로세서이고 나머지 프로세서들은 보조 가상 프로세서이다. 가상 머신에 포함된 가상 메모리와 같은 다른 가상 하드웨어 리소스는 도 1에 도시되지 않는다. 가상 프로세서는 가상화 소프트웨어를 사용하여 가상화를 통해 획득된다. 가상 프로세서의 실행은 실제로 다음과 같이 구현된다. 호스트의 물리적 코어 또는 프로세서가 소프트웨어 프로그램을 판독 및 실행한다. 예를 들어, 물리적 코어는 소프트웨어 프로그램을 판독하고 물리적 코어의 하드웨어 지원 가상화의 특정 모드(예를 들어, x86의 넌-루트(non-root) 모드)로 소프트웨어 프로그램을 실행하여 가상 프로세서를 구현한다. 가상 머신의 복수의 가상 프로세서는 서로 다른 물리적 코어에 위치할 수 있다. 본 출원의 실시예에서 언급되는 vCPU는 가상 프로세서의 선택적 특정 구현이라는 점에 유의해야 한다. 각 실시예에서 언급되는 "vCPU"는 이해를 돕기 위해 "가상 프로세서"로 대체될 수 있다.
가상 프로세서의 트랩인(trap in) 및 트랩아웃(trap out): 가상 시스템은 호스트 모드(host mode)와 게스트 모드(guest mode)의 두 가지 모드를 포함한다. 호스트 모드는 호스트의 권한 수준(privilege level), 예를 들어 호스트의 사용자 모드 또는 호스트의 커널 모드라고도 할 수 있다. 게스트 모드는 VM의 권한 수준, 예를 들어 VM의 사용자 모드 또는 VM의 커널 모드라고도 할 수 있다. 물리 프로세서가 게스트 모드에 진입할 때 이를 트랩인(가상)이라고 하며, 트랩인 프로세스는 물리 프로세서가 호스트 머신을 실행하는 것에서 가상 머신을 실행하는 것으로 전환하는 것으로도 이해할 수 있다. 물리 프로세서가 게스트 모드를 벗어날 때 이를 트랩아웃(가상)이라고 하며, 트랩아웃 프로세스는 물리 프로세서가 가상 머신을 실행하는 것에서 호스트 머신을 실행하는 것으로 전환하는 것으로도 이해할 수 있다. 트랩 아웃 후, 물리 프로세서는 가상 프로세서의 코드 실행을 일시적으로 중지한다. 따라서, 이 경우는 가상 프로세서가 실행되지 않는 것으로 이해할 수 있다. 가상 머신이 물리 프로세서에서 실행될 때, 가상 머신의 가상 프로세서가 실행된다. 하나의 가상 머신은 복수의 가상 프로세서를 가질 수 있다. 하나의 물리 프로세서는 한 순간에 가상 머신의 하나의 가상 프로세서만 실행한다. 동일한 가상 머신에 속하는 복수의 가상 프로세서는 시분할 다중화 방식으로 물리 프로세서에서 실행될 수 있다. 예를 들어, 가상 머신 1의 vCPU 1은 먼저 물리 프로세서 1에서 실행되고, 물리 프로세서 1이 vCPU 1의 실행을 종료한 후 가상 머신 1의 vCPU 2가 실행될 수 있다. 동일한 가상 머신에 속하는 복수의 vCPU는 대안적으로 서로 다른 물리 프로세서에서 실행될 수 있으며, 서로 다른 vCPU들은 동일한 순간에 서로 다른 물리 프로세서에서 실행될 수 있다. 예를 들어, 가상 머신 1의 vCPU 1은 물리 프로세서 1에서 실행되고, 가상 머신 1의 vCPU 2는 물리 프로세서 2에서 실행된다. 관리 계층으로서 호스트 머신(호스트) 계층(109)은, 하드웨어 리소스의 관리 및 할당을 완료하고, 가상 프로세서(107, 108), 가상 메모리, 가상 디스크 및 가상 네트워크 어댑터와 같은 가상 머신을 위한 다양한 가상 하드웨어 리소스를 제공하도록 구성되고, 추가로 가상 머신의 스케줄링 및 격리를 구현할 수 있다. 일부 구현에서, 호스트 계층(109)은 호스트 운영체제(111), 및 가상 머신 모니터(110)(virtual machine monitor, VMM)와 같은 가상 모니터링 장치를 포함한다. 가상 머신 모니터(110)는 호스트 운영체제(111) 내부 또는 호스트 운영체제(111) 외부에 배치될 수 있다. 또 다른 가상화 아키텍처에서, 가상 모니터링 장치는 하이퍼바이저(hypervisor) 또는 다른 유형의 가상 모니터링 장치로도 지칭될 수 있다. 호스트 계층(109)은 가상화 플랫폼으로도 지칭될 수 있으며, 때때로 호스트 계층은 줄여서 호스트로도 지칭될 수 있다. 호스트 머신의 권한 수준에는 사용자 모드와 커널 모드가 포함된다.
하드웨어 계층(112)은 가상화된 환경이 실행되는 하드웨어 플랫폼이다. 하드웨어 계층은 복수의 유형의 하드웨어를 포함할 수 있다. 도 1에 도시된 바와 같이, 하드웨어 계층은 프로세서 시스템(114) 및 메모리(113)를 포함할 수 있고, 통신 인터페이스(115)(예를 들어, 네트워크 인터페이스 카드(network interface card, NIC))를 추가로 포함할 수 있으며, 인터럽트 제어기(116), 입/출력(input/output, I/O) 디바이스 등을 추가로 포함할 수 있다. 프로세서 시스템(114)은 하나 이상의 프로세서, 예를 들어 도 1에 도시된 프로세서 1 및 프로세서 2를 포함할 수 있다. 각 프로세서는 복수의 물리적 코어를 포함할 수 있으며, 프로세서는 범용 레지스터 및 부동 소수점 레지스터와 같은 복수의 레지스터를 추가로 포함할 수 있다.
프로세서 시스템(114)은 복수의 프로세서, 예를 들어 도 1의 프로세서 1 및 프로세서 2를 포함할 수 있다. 도 1의 프로세서 1 및 프로세서 2는 모두 소스 물리 프로세서 및 타겟 물리 프로세서와 같은 물리 프로세서이다. 각 물리 프로세서는 물리적 코어로 이해할 수 있다. 프로세서 시스템(114)은 구체적으로 멀티코어 프로세서일 수 있고, 멀티코어 프로세서는 소스 물리 프로세서 및 타겟 물리 프로세서를 포함한다. 가상 프로세서는 물리적 코어에 바인딩될 수 있다. 즉, 가상 프로세서는 항상 특정 물리적 코어에서 실행되며 실행을 위해 다른 물리적 코어에 스케줄링될 수 없다. 이 경우, 가상 프로세서는 바인딩된 코어이다. 요구사항에 따라 실행을 위해 다른 물리적 코어에 가상 프로세서가 스케줄링될 수 있는 경우, 가상 프로세서는 바인딩된 코어가 아니다.
인터럽트 제어기(116)는 프로세서와 인터럽트 요청을 트리거하는 하드웨어 사이에 배치되고, 하드웨어에 의해 생성된 인터럽트 요청을 수집하고 특정 우선 순위에 기초하여 또는 다른 규칙에 따라 프로세서에 인터럽트 요청을 전송하도록 주로 구성된다. 예를 들어, 인터럽트 제어기는 APIC(advanced programmable interrupt controller)이다.
인터럽트(인터럽션)는 현재 프로그램의 명령 실행을 중지하고 인터럽트 서비스 루틴을 실행한다. 인터럽트는 가상 인터럽트와 물리적 인터럽트를 포함할 수 있다. 가상 인터럽트는, 컴퓨터 디바이스의 하드웨어 디바이스, 호스트 머신, 가상 머신(virtual machine, VM)의 클럭(clock), 가상 머신의 가상 프로세서(가상 중앙 처리 장치, vCPU) 등에 의해 가상 머신으로 통지되는 인터럽트를 말한다. 가상 인터럽트를 발생시키는 하드웨어 디바이스는 컴퓨터 디바이스의 디스크, 네트워크 어댑터, 오디오 어댑터, 마우스, 하드 디스크 등일 수 있다. 물리적 인터럽트는 하드웨어 디바이스에 의해 물리 프로세서로 통지되는 인터럽트이다. 물리적 인터럽트는 호스트 머신에 의해 처리되고 가상 인터럽트는 가상 머신에 의해 처리된다.
인터럽트 서비스 루틴(interrupt service routine, ISR)은 인터럽트 처리 기능이라고도 하며, 인터럽트 요청을 처리하는 데 사용되는 프로그램이다. 인터럽트 요청을 수신하면 프로세서는 현재 프로그램의 실행을 중지하고 인터럽트 요청에 대응하는 인터럽트 서비스 루틴을 실행한다.
메모리(113)에 의해 제공되는 저장 공간(어드레스 공간)은 사용을 위해 가상 머신과 호스트에 할당된다. 호스트 물리적 어드레스(host physical address, HPA)는 로컬 호스트(호스트)에 의해 사용될 수 있는 물리적 어드레스 공간이다. 호스트 가상 어드레스(host virtual address, HVA)는 로컬 호스트(호스트)에 의해 사용될 수 있는 가상 어드레스 공간이다. 게스트 물리적 어드레스(guest physical address, GPA)는 가상 머신의 게스트 운영체제에 의해 사용될 수 있는 물리적 어드레스 공간이다. 게스트 가상 어드레스(guest virtual address, GVA)는 가상 머신의 게스트 운영체제에 의해 사용될 수 있는 가상 어드레스 공간이다.
컴퓨터 디바이스(100)는 서버 또는 단말 디바이스와 같은 물리적 디바이스일 수 있다. 단말 디바이스는 무선 연결 기능이 있는 핸드헬드(handheld) 디바이스이거나 무선 모뎀에 연결된 다른 처리 디바이스일 수 있다. 예를 들어, 단말 디바이스는 휴대폰, 컴퓨터(personal computer, PC), 태블릿 컴퓨터, PDA(personal digital assistant), 휴대 인터넷 디바이스(mobile Internet device, MID), 웨어러블(wearable) 디바이스, 전자책 리더(e-book reader) 등일 수 있으며, 휴대형 모바일 디바이스, 주머니 크기의 모바일 디바이스, 핸드헬드 모바일 디바이스, 컴퓨터 내장형 모바일 디바이스, 또는 차량 탑재형 모바일 디바이스일 수도 있다.
컴퓨터 디바이스(100)의 가상 머신 또는 호스트 머신은 가상 인터럽트를 트리거하는 데 사용되는 정보를 전송할 수 있으므로, 본 출원의 이 실시예에서 제공되는 칩 시스템은 가상 인터럽트를 처리하는 대응하는 프로세스를 완료한다. 본 출원의 이 실시예에서 제공되는 칩 시스템은 도 1의 인터럽트 제어기 및 프로세서 시스템을 포함할 수도 있고, 도 1의 인터럽트 제어기 또는 프로세서 시스템을 포함할 수도 있다.
본 출원의 이 실시예에서, 도 2에 도시된 바와 같이, 가상 인터럽트는 가상 로컬 인터럽트(virtual local interrupt), 가상 소프트웨어 인터럽트(virtual software interrupt), 가상 디바이스 인터럽트(virtual device interrupt) 및 직접 주변장치 인터럽트(direct peripheral interrupt)를 포함할 수 있다. 가상 로컬 인터럽트는 가상 머신이 시뮬레이트한 가상 로컬 디바이스(예를 들어, 가상 타이머 또는 가상 마우스)가 전송하는 인터럽트 또는 가상 머신의 vCPU의 로컬 디바이스가 전송하는 인터럽트(예를 들어, 가상 머신의 vCPU의 타이머가 전송하는 인터럽트)를 지칭한다. 타이머가 전송하는 인터럽트를 클럭 인터럽트라고도 한다. 클럭 인터럽트는 가상 머신에 의해 설정된 시점에 도달했을 때 타이밍 방식으로 타이머에 의해 전송되는 인터럽트를 지칭한다. 가상 소프트웨어 인터럽트는 소프트웨어에 의해 트리거되며 일반적으로 가상 머신의 vCPU에서 가상 머신의 다른 vCPU로 전송되는 인터럽트이다. 예를 들어, 도 2에서, 제1 vCPU가 자신과 동일한 가상 머신에 속하는 제2 vCPU로 전송하는 인터럽트가 도시된다. 하나의 가상 머신은 복수의 vCPU를 가질 수 있으며, 이들 vCPU는 가상 머신의 서로 다른 작업들을 수행하기 위해 동일한 순간에 서로 다른 물리 프로세서들에서 실행될 수 있다. 서로 다른 vCPU들에 의해 실행되는 작업들이 서로 의존하거나 스케줄링되어야 하는 경우 가상 소프트웨어 인터럽트가 발생한다. 가상 디바이스 인터럽트는 하드웨어 디바이스를 시뮬레이트하는 호스트 머신에 의해 트리거되는 인터럽트를 의미하며, 예를 들어 가상 머신 디스크 제어기를 시뮬레이트하거나 다른 하드웨어 디바이스를 시뮬레이트하는 호스트 머신에 의해 발생되는 인터럽트를 의미한다. 직접 주변장치 인터럽트는 가상 머신에 직접 연결된 주변 장치에 의해 트리거된다(예를 들어, 가상 머신에 직접 연결된 그래픽 카드에 의해 발생된 인터럽트).
전술한 4가지 유형의 가상 인터럽트 중 가상 로컬 인터럽트, 가상 소프트웨어 인터럽트 및 가상 디바이스 인터럽트의 처리 프로세스의 경우, 가상 머신을 실행하는 물리 프로세서는 가상 머신에서 호스트 머신으로 전환하거나 호스트 머신의 사용자 모드에서 호스트 머신의 커널 모드로 전환해야 하며, 이는 상대적으로 높은 스위칭 오버헤드를 발생시킨다. 따라서, 본 출원의 실시예는 칩 시스템을 제공한다. 가상 인터럽트를 처리하는 프로세스에서, 가상 머신을 실행하는 물리 프로세서는 가상 머신에서 호스트 머신으로 전환하거나 호스트 머신의 사용자 모드에서 호스트 머신의 커널 모드로 전환할 필요가 없으므로 스위칭 오버헤드를 줄일 수 있다. 다음은 첨부된 도면을 참조하여 본 출원의 일 실시예에서 제공되는 칩 시스템을 설명한다.
도 3에 도시된 바와 같이, 본 출원의 이 실시예에서 제공되는 칩 시스템은 소스 물리 프로세서, 제어 장치, 중간 장치, 송신 장치 및 타겟 물리 프로세서를 포함한다. 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성된다. 제어 장치는 레지스터를 포함한다. 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신 또는 가상 머신에서 비롯될 수 있다. 제어 장치는, 레지스터에 있고 가상 인터럽트를 트리거하는 데 사용되는 정보를 중간 장치로 전송하도록 구성된다. 중간 장치는 가상 인터럽트를 트리거하는 데 사용되는 정보에 기초하여 가상 인터럽트를 트리거하고 가상 인터럽트를 송신 장치로 전송하도록 구성된다. 송신 장치는 중간 장치로부터 가상 인터럽트를 수신하고 가상 인터럽트를 타겟 물리 프로세서로 전송하도록 구성된다.
칩 시스템은 도 1에 도시된 컴퓨터 디바이스에 적용될 수 있으며, 칩 시스템은 도 1의 인터럽트 제어기 또는 프로세서 시스템일 수 있다.
본 출원의 이 실시예에서 제공되는 칩 시스템은 시스템 온 칩(system on chip, SOC)일 수 있고, 소스 물리 프로세서 및 타겟 물리 프로세서는 각각 처리 유닛(processing unit)일 수 있다. 소스 물리 프로세서 또는 타겟 물리 프로세서는 물리적 코어일 수 있으며 동일한 프로세서에 위치할 수 있다. 대안적으로, 소스 물리 프로세서와 타겟 물리 프로세서는 동일한 칩 시스템에 위치한 서로 다른 프로세서일 수 있다. 제어 장치, 중간 장치 및 송신 장치는 모두 하드웨어 회로를 사용하여 구현될 수 있다. 제어 장치 및 송신 장치는 멀티코어 프로세서에 배치될 수 있으며 소스 물리 프로세서 및 타겟 물리 프로세서에 결합된다. 중간 장치는 멀티코어 프로세서에 배치될 수도 있고, 멀티코어 프로세서에 결합된 주변 장치/주변 컴포넌트에 배치될 수도 있다. 시스템 온 칩은 멀티코어 프로세서 및 멀티코어 프로세서에 결합된 주변 장치/주변 컴포넌트를 포함할 수 있다. 칩 시스템의 모든 물리 프로세서는 소스 물리 프로세서로 사용될 수도 있고 타겟 물리 프로세서로 사용될 수도 있다.
본 출원에서는 소스 물리 프로세서와 타겟 물리 프로세서가 사용된다. 소스 물리 프로세서와 타겟 물리 프로세서는 하나의 멀티코어 프로세서에 있는 2개의 물리적 코어일 수도 있고 서로 다른 프로세서에 위치한 2개의 물리적 코어일 수도 있음에 유의해야 한다. 일 구현에서, 소스 물리 프로세서 및 타겟 물리 프로세서는 동일한 물리적 엔티티일 수 있다. 예를 들어, 가상 로컬 인터럽트 시나리오에서, 소스 물리 프로세서와 타겟 물리 프로세서는 동일한 물리 프로세서일 수 있다.
본 출원에서 제어 장치는 적어도 하나의 레지스터를 포함할 수 있으며, 여기서 각 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 한 가지 유형의 정보를 수신하도록 구성될 수 있다. 예를 들어, 3개의 레지스터가 포함되는데, 하나의 레지스터는 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고, 하나의 레지스터는 가상 소프트웨어 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되며, 하나의 레지스터는 가상 디바이스 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 물론, 제어 장치에서는, 가상 인터럽트에 대해 하나의 레지스터만 구성될 수 있으며, 각 유형의 가상 인터럽트를 트리거하는 데 사용되는 정보는 상이하다. 가상 인터럽트의 유형은 레지스터에 의해 수신된 정보를 사용하여 식별될 수 있다.
하나 이상의 중간 장치가 존재할 수 있다. 송신 장치는, 각각의 물리 프로세서가 하나의 송신 장치를 갖는 것일 수도 있고, 복수의 물리 프로세서가 하나의 송신 장치를 공유하는 것일 수도 있다.
본 출원의 이 실시예에서 제공되는 칩 시스템에서, 가상 인터럽트 처리 전용 레지스터가 제어 장치에 설정된다. 이러한 방식으로, 사용자 모드의 호스트 머신 또는 가상 머신은 가상 인터럽트를 트리거하는 데 사용되는 정보를 레지스터에 직접 기록할 수 있다. 제어 장치는 가상 인터럽트를 트리거하는 데 사용되는 정보를 중간 장치로 전송할 수 있고, 중간 장치는 가상 인터럽트를 트리거한다. 또한, 중간 장치는 가상 인터럽트를 송신 장치로 전송하고, 송신 장치는 가상 인터럽트를 타겟 물리 프로세서로 전송한다. 소스 물리 프로세서는 가상 머신에서 호스트 머신으로 전환하거나 호스트 머신의 사용자 모드에서 호스트 머신의 커널 모드로 전환할 필요가 없어, 가상 인터럽트 처리 중에 발생하는 스위칭 오버헤드를 줄이고 칩 시스템의 성능을 향상시킨다.
도 3에서, 중간 장치는 가상 로컬 인터럽트 발생 디바이스일 수도 있고 라우팅 장치일 수도 있다. 가상 인터럽트가 가상 로컬 인터럽트인 경우, 중간 장치는 로컬 인터럽트 발생 디바이스(예를 들어, 타이머)로 지칭될 수 있다. 가상 인터럽트가 가상 소프트웨어 인터럽트 또는 가상 디바이스 인터럽트인 경우, 중간 장치는 라우팅 장치로 지칭될 수 있다.
4가지 유형의 가상 인터럽트가 도 2에 기술된다. 도 4를 참조하고 제어 장치가 레지스터 1, 레지스터 2 및 레지스터 3을 포함하는 예를 이용하여, 아래에서 4가지 유형의 가상 인터럽트를 처리하는 프로세스를 설명한다. 레지스터 1은 가상 디바이스 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고, 레지스터 2는 가상 소프트웨어 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되며, 레지스터 3은 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다.
도 4에 도시된 칩 시스템에서, 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성되며, 호스트 머신 또는 가상 머신은 권한 수준(permission level) 1 및 권한 수준 2를 가질 수 있다. 권한 수준 1은 사용자 모드일 수 있고, 권한 수준 2는 커널 모드일 수 있다. 상이한 가상화 아키텍처에서, 권한 수준 1 및 권한 수준 2에 대응하는 상태는 상이할 수 있다. 이는 본 출원의 이 실시예에서 제한되지 않는다.
본 출원의 도 4에서, 4개의 상이한 선을 사용하여 4가지 유형의 가상 인터럽트가 표시된다. 숫자 1로 표시된 선은 가상 로컬 인터럽트를 처리하는 프로세스를 나타내고, 숫자 2로 표시된 선은 가상 소프트웨어 인터럽트를 처리하는 프로세스를 나타내고, 숫자 3으로 표시된 선은 가상 디바이스 인터럽트를 처리하는 프로세스를 나타내며, 숫자 4로 표시된 선은 직접 주변장치 인터럽트를 처리하는 프로세스를 나타낸다.
1. 가상 로컬 인터럽트
도 4에 도시된 바와 같이, 가상 로컬 인터럽트를 처리하는 프로세스에서, 관련 레지스터는 레지스터 3이며, 중간 장치는 로컬 인터럽트 발생 디바이스로 지칭될 수 있다. 가상 로컬 인터럽트는 코어 내의 인터럽트이기 때문에 타겟 물리 프로세서와 소스 물리 프로세서는 동일한 물리 프로세서이고 송신 장치는 소스 물리 프로세서에 대응한다.
레지스터는, 가상 머신에 의해 기록되고 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다.
로컬 인터럽트 발생 디바이스는 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보에 기초하여 가상 로컬 인터럽트를 발생시키도록 구성된다.
송신 장치는 가상 로컬 인터럽트를 가상 머신의 제1 가상 프로세서 vCPU로 전송하도록 구성되며, 여기서 제1 vCPU는 소스 물리 프로세서에서 실행된다.
본 출원의 이 실시예에서 제공되는 가상 로컬 인터럽트 처리 프로세스에 따르면, 하나의 물리 프로세서는 한 순간에 하나의 가상 머신의 하나의 vCPU만을 실행하고, 가상 로컬 인터럽트를 가상 머신으로 전송하는 동작은 가상 로컬 인터럽트를 vCPU로 전송함으로써 완료될 수 있다. 도 4의 로컬 인터럽트 발생 디바이스는 타이머일 수 있고, 가상 로컬 인터럽트는 클럭 인터럽트일 수 있다. 클럭 인터럽트 시나리오에서, 프로세스의 구현은 도 5를 참조하여 이해할 수 있다. 도 5에 도시된 바와 같이, 가상 머신은 인터럽트 시점을 제어 장치에 기록한다(이 프로세스는 도 4의 레지스터 3을 참조하여 이해할 수 있음). 제어 장치는 인터럽트 시점을 타이머에 기록하고 그에 따라 타이머가 시작된다. 사전 설정된 시점에 도달한 후 타이머는 클럭 인터럽트를 전송한다. 클럭 인터럽트를 수신한 후 송신 장치는 가상 머신의 제1 vCPU가 실행 중이라고 판단하고 클럭 인터럽트를 제1 vCPU로 전송한다.
가상 로컬 인터럽트를 처리하는 프로세스에서 소스 물리 프로세서가 가상 머신에서 호스트 머신으로 전환할 필요가 없으므로 가상 로컬 인터럽트 처리 중에 발생하는 스위칭 오버헤드를 줄이고 칩 시스템의 성능을 향상시킨다는 것을 도4 및 도 5의 프로세스를 통해 알 수 있다.
2. 가상 소프트웨어 인터럽트
도 4에 도시된 바와 같이, 가상 소프트웨어 인터럽트를 처리하는 프로세스에서, 관련 레지스터는 레지스터 2이고, 중간 장치는 라우팅 장치로 지칭될 수 있다. 가상 머신의 제1 vCPU는 소스 물리 프로세서에서 실행되고, 가상 머신의 제2 vCPU는 타겟 물리 프로세서에서 실행된다.
레지스터는 제1 vCPU에 의해 기록된 제2 vCPU의 식별자를 수신하도록 구성된다.
제어 장치는 레지스터로부터 제2 vCPU의 식별자를 판독하고, 가상 머신의 식별자를 획득하며, 가상 머신의 식별자 및 제2 vCPU의 식별자를 중간 장치로 전송하도록 구성된다.
중간 장치는, 가상 머신의 식별자 및 제2 vCPU의 식별자에 기초하여 제1 대응 관계로부터, 가상 머신의 식별자 및 제2 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하고 ― 제1 대응 관계는 타겟 물리 프로세서, 타겟 프로세서에서 실행되는 제2 vCPU 및 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 소프트웨어 인터럽트를 타겟 물리 프로세서에 대응하는 송신 장치로 전송하도록 구성된다.
송신 장치는 가상 소프트웨어 인터럽트를 타겟 물리 프로세서에서 실행되는 제2 vCPU로 전송하도록 구성된다.
본 출원의 이 실시예에서 가상 소프트웨어 인터럽트를 처리하는 프로세스에서, 제어 장치는 소스 물리 프로세서에서 실행되는 가상 머신의 식별자를 저장하는 전용 레지스터로부터 가상 머신의 식별자를 획득할 수 있다. 각 가상 머신은 복수의 vCPU를 가질 수 있으며, 서로 다른 가상 머신들의 vCPU들의 식별자들은 동일할 수 있다. 따라서, 제어 장치는 가상 머신의 식별자와 제2 vCPU의 식별자를 중간 장치로 전송해야 한다. 중간 장치는 제1 대응 관계를 저장할 수 있다. 제1 대응 관계는 인포지션(in-position) vCPU 식별자 그룹에 위치할 수 있다. 인포지션(in-position) vCPU 식별자 그룹은 칩 시스템의 각각의 물리 프로세서, 각각의 물리 프로세서에서 실행되는 vCPU 및 실행 중인 vCPU가 속한 가상 머신 간의 대응 관계를 기록한다. 본 출원에서, 타겟 물리 프로세서는 인포지션(in-position) vCPU 식별자 그룹을 검색하여 결정될 수 있다. 가상 소프트웨어 인터럽트를 처리하는 프로세스에서 소스 물리 프로세서가 가상 머신에서 호스트 머신으로 전환할 필요가 없으므로 가상 소프트웨어 인터럽트 처리 중에 발생하는 스위칭 오버헤드를 줄이고 칩 시스템의 성능을 향상시킨다는 것을 전술한 설명을 통해 알 수 있다.
인포지션(in-position) vCPU 식별자 그룹은 도 6을 참조하여 이해할 수 있다. 도 6에 표시된 것은, VM 1의 vCPU 1이 물리 프로세서 1에서 실행되고, VM 1의 vCPU 2가 물리 프로세서 2에서 실행되고, VM 2의 vCPU 1이 물리 프로세서 3에서 실행되며, VM 2의 vCPU 2가 물리 프로세서 4에서 실행된다는 것을 의미한다. 라우팅 장치가 제어 장치로부터 VM 1의 식별자와 vCPU 2의 식별자를 수신하는 경우, 도 6에 도시된 인포지션(in-position) vCPU 식별자 그룹에 기초하여, vCPU 2가 물리 프로세서 2에서 실행된다고 판단할 수 있다(즉, 가상 소프트웨어 인터럽트는 물리 프로세서 2에 대응하는 송신 장치로 전송될 수 있고, 물리 프로세서 2에 대응하는 송신 장치는 가상 소프트웨어 인터럽트를 물리 프로세서 2에서 실행되는 vCPU 2로 전송함).
인포지션(in-position) vCPU 식별자 그룹을 사용하여 제2 vCPU를 찾지 못한 경우, 이는 제2 vCPU가 현재 실행되고 있지 않음을 나타낸다. 이 경우, 라우팅 장치는 가상 소프트웨어 인터럽트를 소스 물리 프로세서의 송신 장치로 전송할 수 있고, 소스 물리 프로세서의 송신 장치는 가상 소프트웨어 인터럽트를 호스트 머신으로 전송하며, 제2 vCPU가 온라인 상태가 되어 실행된 후에, 호스트 머신은 가상 소프트웨어 인터럽트를 제2 vCPU로 전송한다.
물리 프로세서가 서로 다른 시간에 서로 다른 vCPU들을 실행할 수 있기 때문에 인포지션(in-position) vCPU 식별자 그룹의 대응 관계가 변경될 수 있다. 라우팅 장치의 인포지션(in-position) vCPU 식별자 그룹은 소스 물리 프로세서 상의 호스트 머신에 의해 관리될 수 있다.
본 출원의 이 실시예에서 가상 소프트웨어 인터럽트를 처리하는 프로세스는 도 7을 참조하여 이해할 수 있다. 가상 머신은 소스 물리 프로세서에서 실행되고, 가상 머신의 제1 vCPU는 소스 물리 프로세서에서 실행된다. 제2 vCPU는 다른 물리 프로세서에서 실행되며, 제1 vCPU는 가상 소프트웨어 인터럽트를 제2 vCPU로 전송해야 한다. 이 경우, 가상 머신의 제1 vCPU는 제2 vCPU의 식별자를 제어 장치의 레지스터 2에 기록한다. 제어 장치는 가상 머신의 식별자를 찾은 후, 가상 머신의 식별자와 제2 vCPU의 식별자를 라우팅 장치로 전송한다. 라우팅 장치는 예를 들어, 가상 머신의 식별자 및 제2 vCPU의 식별자에 기초하여 도 6에 도시된 인포지션(in-position) vCPU 식별자 그룹을 검색하고, 가상 머신의 식별자 및 제2 vCPU의 식별자에 대응하는 물리 프로세서가 타겟 물리 프로세서라고 판단한다. 그런 다음, 라우팅 장치는 가상 소프트웨어 인터럽트를 타겟 물리 프로세서에 대응하는 송신 장치로 전송하고, 타겟 물리 프로세서에 대응하는 송신 장치는 가상 소프트웨어 인터럽트를 제2 vCPU, 즉, 타겟 물리 프로세서에서 실행되는 가상 머신으로 전송한다.
본 출원의 이 실시예에 제공된 가상 소프트웨어 인터럽트를 처리하는 프로세스에서 소스 물리 프로세서가 가상 머신에서 호스트 머신으로 전환할 필요가 없으므로 가상 소프트웨어 인터럽트 처리 중에 발생하는 스위칭 오버헤드를 줄이고 칩 시스템의 성능을 향상시킨다는 것을 도 4, 도 6 및 도 7의 프로세스를 통해 알 수 있다.
3. 가상 디바이스 인터럽트
도 4에 도시된 바와 같이, 가상 디바이스 인터럽트를 처리하는 프로세스에서, 관련 레지스터는 레지스터 1이고 중간 장치는 라우팅 장치이다. 호스트 머신은 소스 물리 프로세서에서 실행되고, 호스트 머신은 사용자 모드에 있다.
레지스터는 호스트 머신에 의해 기록된 타겟 인터럽트 번호, 및 가상 머신의 식별자를 수신하도록 구성되며, 여기서 타겟 인터럽트 번호는 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이다.
제어 장치는 레지스터로부터 타겟 인터럽트 번호 및 가상 머신의 식별자를 판독하고, 가상 머신의 식별자 및 타겟 인터럽트 번호를 중간 장치로 전송하도록 구성된다.
중간 장치는, 가상 머신의 식별자 및 타겟 인터럽트 번호에 기초하여, 제2 대응 관계에서, 가상 머신에 속하고 가상 머신의 식별자 및 타겟 인터럽트 번호에 대응하는 제1 vCPU의 식별자를 검색하고 ― 제2 대응 관계는 가상 머신, 타겟 인터럽트 번호 및 제1 vCPU 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 머신의 식별자와 제1 vCPU의 식별자에 기초하여 제3 대응 관계로부터, 가상 머신의 식별자와 제1 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하고 ― 제3 대응 관계는 타겟 물리 프로세서, 타겟 프로세서에서 실행되는 제1 vCPU 및 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 디바이스 인터럽트를 타겟 물리 프로세서에 대응하는 송신 장치로 전송하도록 구성된다.
송신 장치는 가상 디바이스 인터럽트를 타겟 물리 프로세서에서 실행되는 제1 vCPU로 전송하도록 구성된다.
본 출원의 이 실시예에서, 가상 디바이스 인터럽트는, 사용자 모드의 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트이다. 복수의 유형의 하드웨어 디바이스가 존재할 수 있으며, 각 유형의 하드웨어 디바이스의 인터럽트 번호는 서로 다르다. 호스트 머신이 디스크를 시뮬레이트하는 경우, 타겟 인터럽트 번호는 디스크의 인터럽트 번호이다. 호스트 머신이 복수의 가상 머신을 관리할 수 있기 때문에 호스트 머신은 가상 머신의 식별자와 타겟 인터럽트 번호를 레지스터에 기록해야 한다. 제2 대응 관계는 인터럽트 선호도(affinity) 테이블에 위치할 수 있다. 인터럽트 선호도 테이블은 가상 머신에 의해 구성될 수 있다. 따라서, 각각의 가상 머신에 대한 인터럽트 선호도 테이블이 존재한다. 이러한 방식으로, 가상 머신의 식별자를 기반으로 가상 머신의 인터럽트 선호도 테이블을 찾을 수 있고, 그런 다음, 타겟 인터럽트 번호를 기반으로 가상 머신의 인터럽트 선호도 테이블로부터 대응하는 vCPU를 결정할 수 있다. 타겟 인터럽트 번호는 10이다. 인터럽트 선호도 테이블의 인터럽트 번호 10이 vCPU ID 1에 대응하는 경우, 타겟 인터럽트 번호에 대응하는 vCPU ID가 1이라고 판단할 수 있다. vCPU ID가 1이라고 판단한 후 라우팅 장치는 인포지션(in-position) vCPU 식별자 그룹에 기초하여, vCPU ID 1에 대응하는 물리 프로세서를 찾을 수 있다. 인포지션(in-position) vCPU 식별자 그룹의 의미를 이해하기 위해서는 가상 소프트웨어 인터럽트에 관한 설명을 참조하고, 제3 대응 관계에 대해서는 제1 대응 관계를 참조한다.
아래에서는 표 1을 참조하여 가상 머신의 인터럽트 선호도 테이블을 설명한다.
인터럽트 번호 | vCPU ID |
10 | 1 |
20 | 2 |
30 | 3 |
40 | 4 |
표 1은 단지 예일 뿐이며, 대응 관계는 표 1에 나열된 몇가지 유형으로 제한되지 않는다. 대안적으로 다른 표현 형태의 대응 관계가 존재할 수 있으며, 대응 관계의 수가 더 많을 수 있다. 표 1에 또 다른 열이 더 추가될 수 있으며, 추가된 열은 도 4에서 가상 머신의 식별자를 저장하는 데 사용된다.
인터럽트 선호도 테이블은 라우팅 장치에 저장될 수도 있고, 메모리에 저장될 수도 있다. 라우팅 장치는 각각의 물리 프로세서에 대한 어드레스 레지스터를 제공할 수 있다. 어드레스 레지스터는 베이스 어드레스 레지스터일 수 있다. 베이스 어드레스 레지스터는 메모리 내의 인터럽트 선호도 테이블의 어드레스, 및 가상 머신의 식별자를 저장할 수 있다. 도 8에 도시된 바와 같이, 라우팅 장치 상의 베이스 어드레스 레지스터 1은 물리 프로세서 1에 대응하고, 베이스 어드레스 레지스터 2는 물리 프로세서 2에 대응하고, 베이스 어드레스 레지스터 3은 물리 프로세서 3에 대응하며, 베이스 어드레스 레지스터 4는 물리 프로세서 4에 대응한다. 각 베이스 어드레스 레지스터의 어드레스는 하나의 인터럽트 선호도 테이블을 가리킨다. 예를 들어, 베이스 어드레스 레지스터 1은 인터럽트 선호도 테이블 1을 가리키고, 베이스 어드레스 레지스터 2는 인터럽트 선호도 테이블 2를 가리키고, 베이스 어드레스 레지스터 3은 인터럽트 선호도 테이블 3을 가리키며, 베이스 어드레스 레지스터 4는 인터럽트 선호도 테이블 4를 가리킨다. 동일한 가상 머신이 2개의 물리 프로세서에서 실행되는 경우, 2개의 물리 프로세서에 대응하는 베이스 어드레스 레지스터들의 어드레스들은 동일할 수 있으며 이들이 가리키는 인터럽트 선호도 테이블들은 동일한 테이블일 수 있다.
이러한 방식으로, 가상 디바이스 인터럽트를 처리하는 프로세스에서, 가상 머신은 타겟 인터럽트 번호를 레지스터 1에 기록하고, 제어 장치는 소스 물리 프로세서에서 실행되는 가상 머신을 저장하는 전용 레지스터로부터 현재 실행되는 가상 머신의 식별자를 판독한 후 타겟 인터럽트 번호 및 가상 머신의 식별자를 라우팅 장치로 전송한다. 라우팅 장치는 가상 머신의 식별자를 기반으로 대응하는 인터럽트 선호도 테이블을 결정한 다음, 타겟 인터럽트 번호를 이용하여 인터럽트 선호도 테이블에서 대응하는 vCPU의 식별자를 검색한다. 타겟 인터럽트 번호가 10인 경우, 대응하는 vCPU의 식별자가 1이라고 판단할 수 있다. vCPU의 식별자가 1이라고 판단한 후, 라우팅 장치는 도 6에 도시된 인포지션(in-position) vCPU 식별자 그룹에 기초하여, vCPU 1에 대응하는 프로세서가 물리 프로세서 1임을 확인할 수 있다. 라우팅 장치는 가상 디바이스 인터럽트를 물리 프로세서 1에 대응하는 송신 장치로 전송할 수 있고, 송신 장치는 가상 디바이스 인터럽트를 vCPU 1에 대응하는 제1 vCPU로 전송한다.
인포지션(in-position) vCPU 식별자 그룹을 사용하여 제1 vCPU를 찾지 못한 경우, 이는 제1 vCPU가 현재 실행되고 있지 않음을 나타낸다. 이 경우, 라우팅 장치는 가상 소프트웨어 인터럽트를 소스 물리 프로세서의 송신 장치로 전송할 수 있고, 소스 물리 프로세서의 송신 장치는 가상 소프트웨어 인터럽트를 호스트 머신으로 전송하며, 제1 vCPU가 온라인 상태가 되어 실행된 후에, 호스트 머신은 가상 소프트웨어 인터럽트를 제1 vCPU로 전송한다.
본 출원의 이 실시예에서 제공되는 가상 디바이스 인터럽트를 처리하는 프로세스에서 소스 물리 프로세서가 호스트 머신의 사용자 모드에서 호스트 머신의 커널 모드로 전환할 필요가 없으므로 가상 디바이스 인터럽트 처리 중에 발생하는 스위칭 오버헤드를 줄이고 칩 시스템의 성능을 향상시킨다는 것을 도 4, 표 1, 도 8 및 도 6의 프로세스를 통해 알 수 있다.
4. 직접 주변장치 인터럽트
도 4에 도시된 바와 같이, 직접 주변장치 인터럽트는 가상 머신에 직접 연결된 하드웨어 디바이스(예를 들어, 가상 머신에 직접 연결된 그래픽 카드)에 의해 트리거되는 인터럽트이다. 중간 장치는 라우팅 장치로 지칭될 수 있다. 직접 주변장치 인터럽트의 경우, 이러한 유형의 인터럽트 처리 프로세스는 라우팅 장치 및 송신 장치를 사용하여 구현될 수 있다. 이 프로세스는 다음 단계들을 포함한다.
중간 장치는, 하드웨어 디바이스에 의해 트리거되는 직접 주변장치 인터럽트를 수신하고, 직접 주변장치 인터럽트의 물리적 인터럽트 번호에 기초하여 가상 인터럽트 테이블에서, 대응하는 가상 머신의 식별자 및 가상 인터럽트 번호를 검색하고 ― 가상 인터럽트 테이블은 물리적 인터럽트 번호, 가상 머신의 식별자 및 가상 인터럽트 번호 간의 대응 관계를 기록함 ―, 가상 머신의 식별자에 기초하여 대응하는 인터럽트 선호도 테이블을 결정하고 인터럽트 선호도 테이블로부터, 가상 인터럽트 번호에 대응하는 타겟 가상 프로세서 vCPU의 식별자 및 가상 머신의 식별자를 결정하고 ― 인터럽트 선호도 테이블은 가상 프로세서와 가상 인터럽트 번호 간의 대응 관계를 기록함 ―, 타겟 vCPU의 식별자에 기초하여 인포지션(in-position) vCPU 식별자 그룹으로부터 타겟 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하며, 직접 주변장치 인터럽트를 타겟 물리 프로세서에 대응하는 송신 장치로 전송하도록 구성된다.
송신 장치는 직접 주변장치 인터럽트를 타겟 물리 프로세서에서 실행되는 가상 머신으로 전송하도록 구성된다.
본 출원의 이 실시예에서, 직접 주변장치 인터럽트를 처리하는 프로세스에서, 가상 인터럽트 테이블, 인터럽트 선호도 테이블 및 인포지션(in-position) vCPU 식별자 그룹이 순차적으로 사용된다. 인터럽트 선호도 테이블과 인포지션(in-position) vCPU 식별자 그룹에 대해서는 전술한 설명을 참조한다. 다음은 가상 인터럽트 테이블에 대한 설명이다.
가상 인터럽트 테이블은 물리적 인터럽트 번호, 가상 머신의 식별자 및 가상 인터럽트 번호 간의 매핑 관계를 유지한다. 물리적 인터럽트 번호가 입력된 후 가상 머신의 식별자 및 가상 인터럽트 번호가 출력될 수 있다. 가상 인터럽트 테이블은 표 2를 참조하여 이해할 수 있다.
물리적 인터럽트 번호 | 가상 머신의 식별자 | 가상 인터럽트 번호 |
100 | 1 | 10 |
200 | 2 | 20 |
300 | 3 | 30 |
400 | 4 | 40 |
표 2에 도시된 바와 같이, 물리적 인터럽트 번호 100이 입력되면 가상 머신의 식별자 1과 가상 인터럽트 번호 10이 출력될 수 있다. 본 출원의 가상 인터럽트 테이블은 라우팅 장치에 저장될 수도 있고, 메모리에 저장될 수도 있으며, 메모리 내의 가상 인터럽트 테이블의 위치는 베이스 어드레스 레지스터와 유사한 다른 레지스터를 사용하여 표시된다.
직접 주변장치 인터럽트를 처리하는 프로세스에서, 도 9에 도시된 바와 같이, 라우팅 장치는 직접 주변장치에 의해 전송된 물리적 인터럽트 번호를 수신하고, 물리적 인터럽트 번호를 이용하여 가상 인터럽트 테이블에서 대응하는 가상 머신의 식별자 및 가상 인터럽트 번호를 검색한다. 예를 들어, 물리적 인터럽트 번호 100이 입력되면, 가상 머신의 식별자 1과 가상 인터럽트 번호 10이 출력될 수 있다. 그런 다음, 가상 머신의 식별자 1과 가상 인터럽트 번호 10에 기초하여 표 1의 인터럽트 선호도 테이블을 검색하여 대응하는 vCPU의 식별자를 찾는다. 예를 들어, vCPU의 식별자는 1로 확인된다. 또한, vCPU 1에 기초하여, 도 6에 도시된 인포지션(in-position) vCPU의 식별자 그룹에서 대응하는 물리 프로세서를 검색한다. 예를 들어, 물리 프로세서 1을 찾은 경우, 라우팅 장치는 직접 주변장치 인터럽트를 물리 프로세서 1에 대응하는 송신 장치로 전송할 수 있고, 송신 장치는 직접 주변장치 인터럽트를 vCPU 1에 대응하는 제1 vCPU로 전송한다.
인포지션(in-position) vCPU 식별자 그룹을 사용하여 제1 vCPU를 찾지 못한 경우, 이는 제1 vCPU가 현재 실행되고 있지 않음을 나타낸다. 이 경우, 라우팅 장치는 가상 소프트웨어 인터럽트를 소스 물리 프로세서의 송신 장치로 전송할 수 있고, 소스 물리 프로세서의 송신 장치는 가상 소프트웨어 인터럽트를 호스트 머신으로 전송하며, 제1 vCPU가 온라인 상태가 되어 실행된 후에, 호스트 머신은 가상 소프트웨어 인터럽트를 제1 vCPU로 전송한다.
본 출원의 이 실시예에서 제공되는 직접 주변장치 인터럽트를 처리하는 프로세스에서 전송 프로세스가 3개의 대응 관계를 검색함으로써 완료될 수 있고, 이에 따라 직접 주변장치 인터럽트 처리의 유연성을 향상시킬 수 있다는 것을 도 4, 표 2, 표 1, 도 6 및 도 9의 프로세스를 통해 알 수 있다.
전술한 4가지 유형의 가상 인터럽트를 처리하는 프로세스에서, 송신 장치는 중간 장치로부터 전술한 4가지 유형의 가상 인터럽트 중 어느 하나를 수신한 후 가상 인터럽트를 대응하는 타겟 물리 프로세서로 전송한다. 전송 프로세스는 전술한 몇 가지 유형의 가상 인터럽트를 펜딩(pending) 레지스터에 기록하는 것일 수 있으며, 여기서 펜딩 레지스터는 이후에 타겟 물리 프로세서에 의해 실행될 명령을 수신하도록 구성된다. 가상 인터럽트가 펜딩 레지스터에 기록된 후 타겟 물리 프로세서는 가상 인터럽트를 실행한다. 이러한 방식으로, 현재 실행되는 절차가 중단될 수 있다. 타겟 vCPU가 실행 중인 경우, 타겟 vCPU는 중단되고 인터럽트가 타겟 vCPU로 전송된다. 호스트 머신이 실행 중인 경우, 호스트 머신은 중단되고 인터럽트는 실행 중인 호스트 머신으로 직접 전송된다. 대응하는 타겟 vCPU가 온라인 상태가 된 후, 호스트 머신은 인터럽트를 타겟 vCPU로 전달한다. 타겟 vCPU는 상술한 제1 vCPU 또는 제2 vCPU일 수 있다. 이러한 방식으로, 본 출원의 이 실시예에서 제공되는 솔루션에서는, 종래의 솔루션에서의 호스트 머신으로 전환하는 동작을 차폐할 수 있으므로 타겟 물리 프로세서를 가상 머신에서 호스트 머신으로 전환하는 오버헤드를 줄일 수 있다.
본 출원의 이 실시예에서 제공되는 칩 시스템은 RISC-V 마이크로아키텍처에 적용될 수 있다. RISC는 축소 명령 집합 컴퓨팅(reduced instruction set computing)이다. 도 10은 RISC-V 상의 칩 시스템의 구조의 개략도이다.
도 10에 도시된 바와 같이, 칩 시스템은 물리 프로세서와 상호 작용하도록 구성된 제어 장치와 송신 장치, 및 인터럽트 라우터를 포함한다. 인터럽트 라우터는 전술한 실시예들에서 설명된 라우팅 장치를 포함한다.
도 10에서, RISC-V-CPU는 RISC-V 아키텍처에서의 중앙 처리 장치를 나타내고, V=0은 호스트 머신을 나타내고, V=1은 가상 머신을 나타내고, HU 모드는 호스트 머신의 사용자 모드를 나타내고, HS 모드는 호스트 머신의 커널 모드를 나타내고, VU 모드는 가상 머신의 사용자 모드를 나타내며, VS 모드는 가상 머신의 커널 모드를 나타낸다. 수퍼바이저 발생 프로세서 간 인터럽트 로직(supervisor generate inter-processor interrupt, sgenipi)은 가상 소프트웨어 인터럽트 정보를 트리거하는 데 사용되고, 수퍼바이저 시간 비교 로직(supervisor time compare, stimecmp)은 가상 로컬 인터럽트 정보의 레지스터를 트리거하는 데 사용된다. V=1일 때(즉, 가상 머신이 RISC-V-CPU에서 실행될 때), 가상 소프트웨어 인터럽트를 트리거하는 데 사용되는 정보는 sgenipi를 통해 제어 장치의 가상 수퍼바이저 발생 프로세서 간 인터럽트(virtual supervisor generate inter-processor interrupt, vsgenipi) 레지스터로 전송될 수 있으며, 여기서 vsgenipi 레지스터는, 전술한 실시예에서 설명되고 가상 소프트웨어 인터럽트를 트리거하는 데 사용되는 정보를 수신하는 데 사용되는 레지스터(예를 들어, 레지스터 2)이다. 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보는 stimecmp를 통해 제어 장치의 가상 모니터 시간 비교(virtual supervisor time compare, vstimecmp) 레지스터로 전송될 수 있으며, 여기서 vstimecmp 레지스터는, 전술한 실시예에서 설명되고 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하는 데 사용되는 레지스터(예를 들어, 레지스터 3)이다. 사용자 발생 가상 수퍼바이저 외부 인터럽트(user generate virtual supervisor external interrupt, ugenvsei) 레지스터는 가상 디바이스 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된 레지스터(예를 들어, 전술한 실시예에서 설명된 레지스터 1)이다. 호스트 머신의 사용자 모드 가상 디바이스 시뮬레이션 로직을 통해, 가상 디바이스 인터럽트를 트리거하는 데 사용되는 정보가 ugenvsei 레지스터로 직접 전송될 수 있다.
인터럽트 라우터의 구현은, 가상 하트 공유 인터럽트 매핑(virtual hart shared interrupt mapping, vhsimap) 레지스터, 가상 테이블 베이스(virtual table base, vtblbase)(1-n) 레지스터 그룹 및 인터럽트 제어 인터페이스 매핑(interface mapping, ifmap) 레지스터 그룹을 포함한다. vhsimap(1-n) 레지스터는 메모리에 저장된 가상 인터럽트 테이블을 가리키는 데 사용된다. vtblbase(1-n) 레지스터 그룹의 각 vtblbase 레지스터는 RISC-V 시스템의 물리 프로세서에 대응하며, 물리 프로세서에서 실행되는 vCPU가 속한 가상 머신에 의해 정의된 가상 인터럽트 선호도 테이블을 가리키는 데 사용된다. ifmap(1-n) 레지스터 그룹이 제공되며, 여기서 각각의 ifmap(1-n) 레지스터는 시스템의 물리 프로세서에 대응하며, 물리 프로세서에서 실행되는 vCPU의 식별자 및 vCPU가 속한 가상 머신의 식별자를 기록하는 데 사용된다.
도 10에 도시된 RISC-V 아키텍처에서, 가상 클럭 인터럽트를 처리하는 프로세스는 도 11을 참조하여 이해할 수 있다.
도 11에 도시된 바와 같이, 가상 머신은 stimecmp를 통해 vstimecmp 레지스터에 인터럽트 시점을 기록하고, 제어 장치는 다음 가상 클럭 인터럽트를 트리거하는 시점을 가상 머신의 전용 클럭 디바이스에 기록한다. 인터럽션 시점이 되면 가상 머신의 전용 클럭 디바이스가 가상 클럭 인터럽트를 트리거한다. 가상 클럭 인터럽트는 송신 장치로 전송된다.
송신 장치는 CPU의 현재 가상화 상태 V에 기초하여 결정을 수행한다. V=1인 경우 송신 장치는 로컬 인터럽트를 VS 모드의 가상 머신으로 직접 전송하고, V=0인 경우 송신 장치는 로컬 인터럽트를 HS 모드의 호스트 머신으로 전송하며, 호스트 머신은 가상 머신을 대신하여 처리를 수행한다. 즉, 가상 머신이 온라인 상태가 된 후, 호스트 머신은 가상 클럭 인터럽트를 가상 머신으로 전달한다.
도 10에 도시된 RISC-V 아키텍처에서, 가상 소프트웨어 인터럽트를 처리하는 프로세스는 도 12를 참조하여 이해할 수 있다.
도 12에 도시된 바와 같이, 가상 머신의 vCPU(이 시나리오에서는 소스 vCPU로 지칭될 수 있음)는 CPU 1에서 실행된다. CPU 1은 전술한 실시예의 소스 물리 프로세서일 수 있다. 가상 머신의 소스 vCPU는 타겟 vCPU의 식별자를 sgenipi에 기록하고, 타겟 vCPU의 식별자를 sgenipi를 이용하여 제어 장치의 vsgenipi 레지스터에 기록한다. 제어 장치는 가상 머신의 식별자를 획득하고, 가상 머신의 식별자와 타겟 vCPU의 식별자(vhartid: RISC-V의 vCPU의 식별자)를 인터럽트 라우터로 전송한다. 인터럽트 라우터는 ifmapx를 검색하고, VM ID 및 vhartid를 포함하는 ifmapx 레지스터의 시퀀스 번호 x는 대응하는 물리 프로세서의 식별자(mhartid: RISC-V의 물리 프로세서의 식별자)이다. 이 시나리오에서 물리 프로세서의 식별자는 도 12의 CPU 2이다. CPU 2는 또한 전술한 실시예의 타겟 물리 프로세서를 참조하여 이해할 수 있다. 인터럽트 라우터는 가상 소프트웨어 인터럽트를 mhartid의 물리 프로세서의 송신 장치로 전송한다. 송신 장치는 물리 프로세서의 현재 가상화 상태를 결정한다. V=1인 경우, 송신 장치는 가상 소프트웨어 인터럽트를 가상 머신으로 직접 전송한다. V=0인 경우, 송신 장치는 가상 소프트웨어 인터럽트를 처리를 위해 호스트 머신으로 전송한다. 즉, 가상 머신이 온라인 상태가 된 후, 호스트 머신은 가상 소프트웨어 인터럽트를 가상 머신으로 전송한다.
도 10에 도시된 RISC-V 아키텍처에서, 가상 디바이스 인터럽트를 처리하는 프로세스는 도 13을 참조하여 이해할 수 있다.
도 13에 도시된 바와 같이, 사용자 모드의 호스트 머신은 가상 머신의 식별자와 가상 인터럽트 번호를 ugenvsei에 기록한다. 제어 장치는 가상 머신의 식별자와 가상 인터럽트 번호를 인터럽트 라우터로 전송한다. 인터럽트 라우터는 vtblbasex 레지스터를 검색하여, vtblbasex 레지스터에 속하고 가상 머신의 식별자를 갖는 vtblbasex 레지스터를 찾는다. 레지스터가 가리키는 메모리에 저장된 인터럽트 선호도 테이블이 검색된다. 인터럽트를 처리하는 vCPU의 vhartid가 인터럽트 선호도 테이블로부터 획득된다. 인터럽트 라우터는 ifmapx를 검색하여 VM ID와 vhartid를 갖는 레지스터에 대응하는 물리 프로세서의 시퀀스 번호 x를 찾으며, 여기서 x는 타겟 물리 프로세서의 mhartid이다. 인터럽트 라우터는 가상 디바이스 인터럽트를 mhartid의 물리 프로세서의 송신 장치로 전송한다. 송신 장치는 CPU의 현재 가상화 상태를 결정한다. V=1인 경우 송신 장치는 디바이스 인터럽트를 가상 머신으로 직접 전송하거나, V=0인 경우 송신 장치는 디바이스 인터럽트를 처리를 위해 호스트 머신으로 전송한다. 즉, 가상 머신이 온라인 상태가 된 후, 호스트 머신은 가상 디바이스 인터럽트를 가상 머신으로 전송한다.
도 10에 도시된 RISC-V 아키텍처에서, 가상 디바이스 인터럽트를 처리하는 또 다른 프로세스는 도 14를 참조하여 이해할 수 있다.
도 14에 도시된 바와 같이, 호스트 머신은 가상 머신의 식별자와 가상 인터럽트 번호를 ugenvsei에 기록한다. 제어 장치는 가상 머신의 식별자와 가상 인터럽트 번호를 인터럽트 라우터로 전송한다. 인터럽트 라우터는 vtblbasex를 구현하지 않으며, 디폴트(default)로 가상 머신을 갖는 임의의 vCPU에 가상 인터럽트를 전송한다. 그런 다음, 인터럽트 라우터는 ifmapx를 검색하여 가상 머신의 식별자를 갖는 레지스터에 대응하는 물리 프로세서의 시퀀스 번호 x를 찾으며, 여기서 x는 타겟 물리 프로세서의 mhartid이다. 인터럽트 라우터는 가상 디바이스 인터럽트를 mhartid의 물리 프로세서의 송신 장치로 전송한다. 송신 장치는 물리 프로세서의 현재 가상화 상태를 결정한다. V=1인 경우 송신 장치는 가상 디바이스 인터럽트를 가상 머신으로 직접 전송하거나, V=0인 경우 송신 장치는 가상 디바이스 인터럽트를 처리를 위해 호스트 머신으로 전송한다. 즉, 가상 머신이 온라인 상태가 된 후, 호스트 머신은 가상 디바이스 인터럽트를 가상 머신으로 전송한다.
도 10에 도시된 RISC-V 아키텍처에서, 직접 주변장치 인터럽트를 처리하는 프로세스는 도 15를 참조하여 이해할 수 있다.
도 15에 도시된 바와 같이, 가상 머신과 직접 통신하는 하드웨어 디바이스는 직접 주변장치 인터럽트를 트리거하고, 인터럽트 라우터는 vhlimap이 가리키는 가상 인터럽트 테이블을 검색하여, 인터럽트가 직접 연결된 가상 머신의 식별자, 및 인터럽트가 직접 연결된 후 가상 머신에서 고려되는 가상 인터럽트 번호를 찾는다. 인터럽트 라우터는 vtblbasex 레지스터를 검색하고, vtblbasex 레지스터에 속하고 VM ID를 갖는 vtblbasex를 찾으며, 레지스터가 가리키는 메모리에 저장된 가상 인터럽트 선호도 테이블을 검색한다. 인터럽트를 처리하는 vCPU의 vhartid는 인터럽트 선호도 테이블로부터 획득된다. 인터럽트 라우터는 ifmapx를 검색하여 VM ID와 vhartid를 갖는 레지스터에 대응하는 물리 프로세서의 시퀀스 번호 x를 찾으며, 여기서 x는 타겟 물리 프로세서의 mhartid이다. 인터럽트 라우터는 직접 주변장치 인터럽트를 mhartid의 물리 프로세서의 송신 장치로 전송한다. 송신 장치는 CPU의 현재 가상화 상태를 결정한다. V=1인 경우 송신 장치는 직접 주변장치 인터럽트를 가상 머신으로 직접 전송하거나, V=0인 경우 송신 장치는 직접 주변장치 인터럽트를 처리를 위해 호스트 머신으로 전송한다. 즉, 가상 머신이 온라인 상태가 된 후, 호스트 머신은 직접 주변장치 인터럽트를 가상 머신으로 전송한다.
본 출원의 이 실시예에서 제공되는 전술한 솔루션에 따르면, 가상 로컬 인터럽트는 제어 장치, 중간 장치 및 송신 장치를 사용하여 구현되므로 로컬 인터럽트 디바이스에서 vCPU까지는 전체 프로세스에서 호스트 머신으로 트랩아웃(trap out)되지 않는다. 제어 장치, 라우팅 장치 및 송신 장치를 사용함으로써, 가상 소프트웨어 인터럽트는 가상 머신과 호스트 머신 간의 소프트웨어 협력 없이 구현되며, 송신단 vCPU에서 수신단 vCPU까지는 전체 프로세스에서 호스트 머신으로 트랩아웃(trap out)되지 않는다. 제어 장치, 라우팅 장치 및 송신 장치를 사용함으로써, 가상 디바이스 인터럽트가 구현되고, 호스트 머신 아날로그 로직에서 수신단의 호스트 vCPU까지는 전체 프로세스에서 호스트 머신으로 트랩아웃(trap out)되지 않는다/컨텍스트를 전환하지 않는다. 따라서, 본 출원의 이 실시예에서 제공되는 솔루션은 I/O, 클럭, 스케줄링 등과 관련하여 가상 머신의 성능을 가속화할 수 있다. 시뮬레이션 데이터에 따르면, 이 솔루션을 사용하여 가상 로컬 인터럽트를 처리하면 Redis가 80% 향상되고, 가상 소프트웨어 인터럽트 처리는 6% 증가한다.
이상에서는 하드웨어 회로를 이용하여 가상 인터럽트를 처리하는 프로세스를 설명하였다. 본 출원의 이 실시예에서 제공되는 가상 인터럽트를 처리하는 프로세스는 소프트웨어를 사용하여 구현될 수도 있다. 소프트웨어를 사용하여 구현되는 프로세스는 또한 전술한 칩 시스템에 결합될 수 있다. 칩 시스템은 소스 물리 프로세서, 제어 장치, 중간 장치 및 송신 장치를 포함한다. 제어 장치는 레지스터를 포함한다. 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 제어 장치, 중간 장치 및 송신 장치의 기능은 소프트웨어 코드의 형태로 구현될 수 있다. 다음은 첨부된 도면을 참조하여 설명을 제공한다.
도 16에 도시된 바와 같이, 본 출원의 일 실시예에 따른 가상 인터럽트 처리 방법의 일 실시예는 다음 단계들을 포함한다.
101: 제어 장치는 가상 인터럽트를 트리거하는 데 사용되는 정보를 레지스터로부터 판독한다.
가상 인터럽트를 트리거하는 데 사용되는 정보는 소스 물리 프로세서에서 실행되는 호스트 머신 또는 가상 머신에서 비롯된다.
102: 제어 장치는 가상 인터럽트를 트리거하는 데 사용되는 정보를 중간 장치로 전송한다. 이에 상응하여, 중간 장치는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신한다.
103: 중간 장치는 가상 인터럽트를 트리거하는 데 사용되는 정보에 기초하여 가상 인터럽트를 트리거한다.
104: 중간 장치는 가상 인터럽트를 송신 장치로 전송한다. 이에 상응하여, 송신 장치는 가상 인터럽트를 수신한다.
105: 송신 장치는 가상 디바이스 인터럽트를 타겟 물리 프로세서로 전송한다.
본 출원의 이 실시예에서 제공되는 솔루션에 따르면, 가상 인터럽트 처리 전용 레지스터가 제어 장치에 배치된다. 이러한 방식으로, 사용자 모드의 호스트 머신 또는 가상 머신은 가상 인터럽트를 트리거하는 데 사용되는 정보를 레지스터에 직접 기록할 수 있다. 제어 장치는 가상 인터럽트를 트리거하는 데 사용되는 정보를 중간 장치로 전송할 수 있고, 중간 장치는 가상 인터럽트를 트리거한다. 또한, 중간 장치는 가상 인터럽트를 송신 장치로 전송하고, 송신 장치는 가상 인터럽트를 타겟 물리 프로세서로 전송한다. 본 출원에서 제공되는 솔루션에서, 호스트 머신 또는 가상 머신은 레지스터에 직접 액세스하고 가상 인터럽트를 트리거하는 데 사용되는 정보를 레지스터에 기록하여 가상 인터럽트가 전송되도록 할 수 있다. 따라서, 종래 기술과 비교하여 본 출원에서 제공되는 솔루션에서는 소스 물리 프로세서가 가상 머신에서 호스트 머신으로 전환될 필요가 없거나, 소스 물리 프로세서가 호스트 머신의 사용자 모드에서 호스트 머신의 커널 모드로 전환될 필요가 없어, 가상 인터럽트 처리 중에 발생하는 스위칭 오버헤드를 줄이고 칩 시스템의 성능을 향상시킨다.
가상 인터럽트가 가상 로컬 인터럽트일 때, 타겟 물리 프로세서와 소스 물리 프로세서는 동일한 물리 프로세서이다. 레지스터는, 가상 머신에 의해 기록되고 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신한다.
중간 장치는 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보에 기초하여 가상 로컬 인터럽트를 발생시킨다.
송신 장치는 가상 로컬 인터럽트를 가상 머신의 제1 가상 프로세서 vCPU로 전송하며, 여기서 제1 vCPU는 소스 물리 프로세서에서 실행된다.
가상 인터럽트가 가상 소프트웨어 인터럽트일 때, 단계 101에서 레지스터로부터 판독되고 가상 인터럽트를 트리거하는 데 사용되는 정보는 가상 머신의 제1 vCPU에 의해 레지스터에 기록되는 제2 vCPU의 식별자를 포함하며, 여기서 제2 vCPU는 타겟 물리 프로세서에서 실행되는 가상 머신의 vCPU이다.
단계 102 이전에 제어 장치는 가상 머신의 식별자를 획득한다. 이 경우, 단계 103은 특히, 가상 머신의 식별자 및 제2 vCPU의 식별자를 중간 장치로 전송하는 것을 포함한다.
단계 103은 특히 다음을 포함한다. 중간 장치는 가상 머신의 식별자와 제2 vCPU의 식별자에 기초하여 제1 대응 관계로부터, 가상 머신의 식별자와 제2 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하고 ― 제1 대응 관계는 타겟 물리 프로세서, 타겟 프로세서에서 실행되는 제2 vCPU 및 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 소프트웨어 인터럽트를 트리거한다.
단계 104는, 중간 장치가 가상 소프트웨어 인터럽트를 타겟 물리 프로세서에 대응하는 송신 장치로 전송하는 것을 포함한다.
단계 105는, 송신 장치가 가상 소프트웨어 인터럽트를 타겟 물리 프로세서에서 실행되는 제2 vCPU로 전송하는 것을 포함한다.
가상 인터럽트가 가상 디바이스 인터럽트일 때, 단계 101에서 레지스터로부터 판독되고 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신에 의해 레지스터에 기록되는 타겟 인터럽트 번호, 및 가상 머신의 식별자를 포함하며, 여기서 타겟 인터럽트 번호는 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이다.
단계 102는, 제어 장치가 가상 머신의 식별자 및 타겟 인터럽트 번호를 중간 장치로 전송하는 것을 포함한다.
단계 103은 다음을 포함한다. 중간 장치는 가상 머신의 식별자 및 타겟 인터럽트 번호에 기초하여, 제2 대응 관계에서, 가상 머신의 식별자 및 타겟 인터럽트 번호에 대응하는 가상 머신의 제1 vCPU의 식별자를 검색하고 ― 제2 대응 관계는 가상 머신, 타겟 인터럽트 번호 및 제1 vCPU 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 머신의 식별자와 제1 vCPU의 식별자에 기초하여 제3 대응 관계로부터, 가상 머신의 식별자와 제1 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하고 ― 제3 대응 관계는 타겟 물리 프로세서, 타겟 프로세서에서 실행되는 제1 vCPU 및 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 디바이스 인터럽트를 발생시킨다.
단계 104는, 중간 장치가 가상 디바이스 인터럽트를 타겟 물리 프로세서에 대응하는 송신 장치로 전송하는 것을 포함한다.
단계 105는, 송신 장치가 가상 디바이스 인터럽트를 타겟 물리 프로세서에서 실행되는 제1 vCPU로 전송하는 것을 포함한다.
소프트웨어를 사용하여 구현되는 제어 장치, 중간 장치 및 송신 장치의 기능은 도 2 내지 도 15에 대응하는 실시예들의 해당 내용을 참조하여 이해할 수 있으며, 자세한 내용은 여기서 다시 설명하지 않는다.
이상에서는 소프트웨어를 사용하여 구현되는 가상 인터럽트를 처리하는 방법에 대해 설명하였다. 이하에서는 첨부된 도면을 참조하여 전술한 가상 인터럽트 처리 방법을 구현하기 위한 장치를 설명한다.
도 17에 도시된 바와 같이, 본 출원의 이 실시예에서 제공되는 제어 장치(20)의 일 실시예는 다음 사항을 포함한다. 제어 장치(20)는 칩 시스템에 적용되고, 칩 시스템은 소스 물리 프로세서, 중간 장치, 송신 장치 및 타겟 물리 프로세서를 더 포함한다. 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성된다. 제어 장치는 레지스터를 포함하고, 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되며, 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신 또는 가상 머신에서 비롯된다. 제어 장치(20)는,
가상 인터럽트를 트리거하는 데 사용되는 정보를 레지스터로부터 판독하도록 구성된 판독 유닛(201), 및
판독 유닛(201)에 의해 판독되고 가상 인터럽트를 트리거하는 데 사용되는 정보를 중간 장치로 전송하도록 구성된 송신 유닛(202) ― 가상 인터럽트를 트리거하는 데 사용되는 정보는 중간 장치에 의해 가상 인터럽트를 트리거하는 데 사용되고, 가상 인터럽트는 송신 장치에 의해 타겟 물리 프로세서로 전송됨 ―을 포함한다.
선택적으로, 가상 인터럽트는 가상 로컬 인터럽트이고, 타겟 물리 프로세서와 소스 물리 프로세서는 동일한 물리 프로세서이며, 레지스터는, 가상 머신에 의해 기록되고 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보는 중간 장치가 가상 로컬 인터럽트를 트리거할 수 있도록 하는 데 사용되고, 가상 로컬 인터럽트는 송신 장치에 의해 가상 머신의 제1 가상 프로세서 vCPU로 전송되며, 제1 vCPU는 소스 물리 프로세서에서 실행된다.
선택적으로, 가상 인터럽트는 가상 소프트웨어 인터럽트이다. 가상 인터럽트를 트리거하는 데 사용되는 정보에는 가상 머신의 제1 vCPU에 의해 기록되는 제2 vCPU의 식별자가 포함되며, 여기서 제2 vCPU는 타겟 물리 프로세서에서 실행되는 가상 머신의 vCPU이다. 제어 장치(20)는 처리 유닛(203)을 더 포함한다.
처리 유닛(203)은 가상 머신의 식별자를 획득하도록 구성된다.
송신 유닛(202)은 가상 머신의 식별자를 중간 장치로 전송하도록 구성되며, 여기서 가상 머신의 식별자 및 제2 vCPU의 식별자는 중간 장치에 의해 타겟 물리 프로세서를 결정하고 가상 소프트웨어 인터럽트를 트리거하는 데 사용되고, 가상 소프트웨어 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제2 vCPU로 전송된다.
선택적으로, 가상 인터럽트는 가상 디바이스 인터럽트이다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신에 의해 레지스터에 기록되는 타겟 인터럽트 번호, 및 가상 머신의 식별자를 포함하며, 타겟 인터럽트 번호는 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이다. 가상 머신의 식별자와 타겟 인터럽트 번호는 중간 장치에 의해 타겟 물리 프로세서를 결정하고 가상 디바이스 인터럽트를 트리거하는 데 사용되며, 가상 디바이스 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제1 vCPU로 전송된다.
도 18에 도시된 바와 같이, 본 출원의 일 실시예에 따른 중간 장치(30)의 일 실시예는 다음 사항을 포함한다. 중간 장치(30)는 칩 시스템에 적용되며, 칩 시스템은 소스 물리 프로세서, 제어 장치, 송신 장치 및 타겟 물리 프로세서를 더 포함한다. 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성된다. 제어 장치는 레지스터를 포함하며, 여기서 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신 또는 가상 머신에서 비롯된다. 중간 장치(30)는,
가상 인터럽트를 트리거하는 데 사용되는, 제어 장치로부터의 정보를 수신하도록 구성된 수신 유닛(301),
가상 인터럽트를 트리거하는 데 사용되는 정보에 기초하여 가상 인터럽트를 트리거하도록 구성된 처리 유닛(302), 및
가상 인터럽트를 송신 장치로 전송하도록 구성된 송신 유닛(303) ― 가상 인터럽트는 송신 장치에 의해 타겟 물리 프로세서로 전송됨 ―을 포함한다.
선택적으로, 가상 인터럽트는 가상 로컬 인터럽트이고, 타겟 물리 프로세서와 소스 물리 프로세서는 동일한 물리 프로세서이며, 레지스터는, 가상 머신에 의해 기록되고 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성된다. 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보는 가상 로컬 인터럽트를 트리거하는 데 사용되고, 가상 로컬 인터럽트는 송신 장치에 의해 가상 머신의 제1 가상 프로세서 vCPU로 전송되며, 제1 vCPU는 소스 물리 프로세서에서 실행된다.
선택적으로, 가상 인터럽트는 가상 소프트웨어 인터럽트이다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 가상 머신의 제1 vCPU에 의해 기록되는 제2 vCPU의 식별자를 포함하며, 여기서 제2 vCPU는 타겟 물리 프로세서에서 실행되는 가상 머신의 vCPU이다.
처리 유닛(302)은, 가상 머신의 식별자와 제2 vCPU의 식별자에 기초하여 제1 대응 관계로부터, 가상 머신의 식별자와 제2 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하고 ― 제1 대응 관계는 타겟 물리 프로세서, 타겟 프로세서에서 실행되는 제2 vCPU 및 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 소프트웨어 인터럽트를 트리거하도록 구성되며, 여기서 가상 소프트웨어 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제2 vCPU로 전송된다.
선택적으로, 가상 인터럽트는 가상 디바이스 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신에 의해 레지스터에 기록되는 타겟 인터럽트 번호, 및 가상 머신의 식별자를 포함하며, 여기서 타겟 인터럽트 번호는 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이다.
처리 유닛(302)은, 가상 머신의 식별자 및 타겟 인터럽트 번호에 기초하여, 제2 대응 관계에서, 가상 머신의 식별자 및 타겟 인터럽트 번호에 대응하는 가상 머신의 제1 vCPU의 식별자를 검색하고 ― 제2 대응 관계는 가상 머신, 타겟 인터럽트 번호 및 제1 vCPU 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 머신의 식별자와 제1 vCPU의 식별자에 기초하여 제3 대응 관계로부터, 가상 머신의 식별자와 제1 vCPU의 식별자에 대응하는 타겟 물리 프로세서를 결정하고 ― 제3 대응 관계는 타겟 물리 프로세서, 타겟 프로세서에서 실행되는 제1 vCPU 및 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 가상 디바이스 인터럽트를 트리거하도록 구성되며, 여기서 가상 디바이스 인터럽트는 송신 장치에 의해 타겟 물리 프로세서의 제1 vCPU로 전송된다.
선택적으로, 처리 유닛(302)은 가상 머신의 식별자에 기초하여 어드레스 레지스터를 찾고, 어드레스 레지스터 내의 어드레스에 기초하여 메모리로부터 제2 대응 관계를 획득하도록 추가로 구성되며, 여기서 어드레스 레지스터는 메모리 내의 제2 대응 관계의 어드레스 및 가상 머신의 식별자를 저장하도록 구성된다.
도 19에 도시된 바와 같이, 본 출원의 일 실시예에 따른 송신 장치(40)의 일 실시예는 다음 사항을 포함한다. 송신 장치(40)는 칩 시스템에 적용되며, 칩 시스템은 소스 물리 프로세서, 중간 장치, 제어 장치 및 타겟 물리 프로세서를 더 포함한다. 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성된다. 제어 장치는 레지스터를 포함하며, 여기서 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신 또는 가상 머신에서 비롯된다. 송신 장치(40)는,
중간 장치로부터 가상 인터럽트를 수신하도록 구성된 수신 유닛(401), 및
가상 인터럽트를 타겟 물리 프로세서로 전송하도록 구성된 송신 유닛(402)을 포함한다.
선택적으로, 가상 인터럽트는 가상 로컬 인터럽트이고, 타겟 물리 프로세서와 소스 물리 프로세서는 동일한 물리 프로세서이다. 송신 유닛(402)은 가상 로컬 인터럽트를 가상 머신의 제1 가상 프로세서 vCPU로 전송하도록 구성되며, 여기서 제1 vCPU는 소스 물리 프로세서에서 실행된다.
선택적으로, 가상 인터럽트는 가상 소프트웨어 인터럽트이다. 가상 인터럽트를 트리거하는 데 사용되는 정보는 가상 머신의 제1 vCPU에 의해 기록되는 제2 vCPU의 식별자를 포함하며, 여기서 제2 vCPU는 타겟 물리 프로세서에서 실행되는 가상 머신의 vCPU이다.
송신 유닛(402)은 가상 소프트웨어 인터럽트를 타겟 물리 프로세서에서 실행되는 제2 vCPU로 전송하도록 구성된다.
선택적으로, 가상 인터럽트는 가상 디바이스 인터럽트이고, 가상 인터럽트를 트리거하는 데 사용되는 정보는 호스트 머신에 의해 레지스터에 기록되는 타겟 인터럽트 번호, 및 가상 머신의 식별자를 포함하며, 여기서 타겟 인터럽트 번호는 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이다.
송신 유닛(402)은 가상 디바이스 인터럽트를 타겟 물리 프로세서에서 실행되는 제1 vCPU로 전송하도록 구성된다.
선택적으로, 송신 유닛(402)은 가상 인터럽트를 타겟 물리 프로세서의 펜딩 레지스터에 기록하도록 구성되며, 여기서 펜딩 레지스터는 타겟 물리 프로세서에 의해 실행되는 절차의 명령을 수신하도록 구성된다.
도 17 내지 도 19에 설명된 솔루션들에 대해서는, 도 2 내지 도 15에 대응하는 실시예들의 해당 내용을 참조한다. 자세한 내용은 여기서 다시 설명하지 않는다.
도 20은 본 출원의 일 실시예에 따른 컴퓨터 디바이스(50)의 가능한 논리적 구조의 개략도이다. 컴퓨터 디바이스(50)는 도 17 내지 도 19에서 설명된 제어 장치, 중간 장치 또는 송신 장치를 포함할 수 있다. 컴퓨터 디바이스(50)는 프로세서(501), 통신 인터페이스(502), 메모리(503) 및 버스(504)를 포함한다. 프로세서(501), 통신 인터페이스(502) 및 메모리(503)는 버스(504)를 통해 서로 연결된다. 본 출원의 이 실시예에서, 프로세서(501)는 컴퓨터 디바이스(50)의 동작을 제어 및 관리하도록 구성된다. 예를 들어, 프로세서(501)는 도 16의 방법 실시예의 단계 101 또는 단계 103을 수행하도록 구성된다. 메모리(503)는 컴퓨터 디바이스(50)의 프로그램 코드 및 데이터를 저장하도록 구성된다. 통신 인터페이스(502)는 도 16의 방법 실시예의 단계 102, 단계 104 또는 단계 105를 수행하도록 구성될 수 있다.
또한, 프로세서(501)는 중앙 처리 장치, 범용 프로세서, 디지털 신호 프로세서, 주문형 집적 회로, 필드 프로그래밍 가능 게이트 어레이, 다른 프로그래밍 가능 논리 디바이스, 트랜지스터 논리 디바이스, 하드웨어 구성요소, 또는 이들의 조합일 수 있다. 프로세서는 본 출원에 개시된 내용을 참조하여 설명된 다양한 예시적 논리 블록, 모듈 및 회로를 구현하거나 실행할 수 있다. 대안적으로, 프로세서(501)는 컴퓨팅 기능을 구현하는 프로세서의 조합, 예를 들어, 하나 이상의 마이크로프로세서의 조합 또는 디지털 신호 프로세서와 마이크로프로세서의 조합일 수 있다. 버스(504)는 PCI 표준(Peripheral Component Interconnect) 버스, EISA(Extended Industry Standard Architecture) 버스 등일 수 있다. 버스는 어드레스 버스, 데이터 버스, 제어 버스 등으로 분류될 수 있다. 표현의 용이함을 위해 도 20에서는 하나의 굵은 선으로만 버스를 나타내지만, 이는 버스가 하나뿐이거나 버스 종류가 하나뿐이라는 의미는 아니다.
본 출원의 또 다른 실시예에서, 컴퓨터 판독 가능 저장 매체가 추가로 제공된다. 컴퓨터 판독 가능 저장 매체는 컴퓨터 실행 가능 명령을 저장한다. 디바이스의 프로세서가 컴퓨터 실행 가능 명령을 실행할 때, 디바이스는 도 16에서 제어 장치, 중간 장치 또는 송신 장치에 의해 수행되는 가상 인터럽트 처리 방법을 수행한다.
본 출원의 또 다른 실시예에서, 컴퓨터 프로그램 제품이 추가로 제공된다. 컴퓨터 프로그램 제품은 컴퓨터 실행 가능 명령을 포함하고, 컴퓨터 실행 가능 명령은 컴퓨터 판독 가능 저장 매체에 저장된다. 디바이스의 프로세서가 컴퓨터 실행 가능 명령을 실행할 때, 디바이스는 도 16에서 제어 장치, 중간 장치 또는 송신 장치에 의해 수행되는 가상 인터럽트 처리 방법을 수행한다.
본 출원의 또 다른 실시예는 칩 시스템을 추가로 제공한다. 칩 시스템은 소스 물리 프로세서, 제어 장치, 송신 장치 및 타겟 물리 프로세서를 포함한다. 제어 장치는 도 2 내지 도 15의 실시예들에서 설명된 제어 장치이고, 송신 장치는 도 2 내지 도 15의 실시예들에서 설명된 송신 장치이다.
가능한 일 실시예에서, 칩 시스템은 도 2 내지 도 15의 실시예들에서 설명된 중간 장치를 더 포함할 수 있다.
가능한 일 실시예에서, 칩 시스템은 프로세서이고, 소스 물리 프로세서 및 타겟 물리 프로세서는 프로세서 내의 물리적 코어이고, 제어 장치는 프로세서에 위치하며 소스 물리 프로세서에 결합된 구성요소이고, 송신 장치는 프로세서에 위치한 구성 요소이며 타겟 물리 프로세서에 결합된다. 프로세서의 모든 물리적 코어가 가상 인터럽트의 수신기로서 사용될 수 있음을 이해할 수 있다. 따라서, 물리적 코어는 소스 물리 프로세서뿐 아니라 타겟 물리 프로세서로도 사용될 수 있다. 이에 상응하여, 물리적 코어에 결합된 것은 제어 장치 및 송신 장치를 모두 포함할 수 있다.
당업자는, 본 명세서에 개시된 실시예들에 기술된 예와 조합하여 유닛 및 알고리즘 단계가 전자 하드웨어 또는 컴퓨터 소프트웨어와 전자 하드웨어의 조합에 의해 구현될 수 있음을 알 수 있다. 기능이 하드웨어로 수행되는지 소프트웨어로 수행되는지 여부는 기술 솔루션의 특정 적용 및 설계 제약 조건에 따라 다르다. 당업자는 각각의 특정 적용에 대해 설명한 기능을 구현하기 위해 상이한 방법을 사용할 수 있지만, 구현이 본 출원의 실시예들의 범위를 벗어나는 것으로 간주되어서는 안 된다.
용이하고 간략한 설명을 위해, 전술한 시스템, 장치 및 유닛의 상세한 작동 프로세스에 대해서는 전술한 방법 실시예들의 해당 프로세스를 참조할 수 있음이 당업자에게 명확하게 이해될 수 있으며, 세부 내용은 여기서 다시 설명하지 않는다.
본 출원의 실시예들에 제공된 여러 실시예들에서, 개시된 시스템, 장치 및 방법이 다른 방식으로 구현될 수 있음을 이해해야 한다. 예를 들어, 기술된 장치 실시예는 단지 예시일 뿐이다. 예를 들어, 유닛으로 구분하는 것은 논리적 기능의 구분일 뿐이며 실제 구현 시 다르게 구분될 수 있다. 예를 들어, 복수의 유닛 또는 구성요소가 다른 시스템으로 결합 또는 통합될 수 있거나, 일부 특징이 무시되거나 수행되지 않을 수 있다. 또한, 도시되거나 논의된 상호 결합 또는 직접 결합 또는 통신 연결은 몇몇 인터페이스를 사용하여 구현될 수 있다. 장치들 또는 유닛들 간의 간접 결합 또는 통신 연결은 전기적, 기계적 또는 기타 형태로 구현될 수 있다.
별도의 부분으로서 기술된 유닛들은 물리적으로 분리될 수도 있고 그렇지 않을 수도 있으며, 유닛으로서 표시된 부분들은 물리적 유닛일 수도 있고 아닐 수도 있다(즉, 한 위치에 위치할 수도 있고, 복수의 네트워크 유닛에 분산될 수도 있음). 일부 또는 모든 유닛은 실시예들의 솔루션의 목적을 달성하기 위한 실제 요구사항에 기초하여 선택될 수 있다.
또한, 본 출원의 실시예들의 기능 유닛들은 하나의 처리 유닛으로 통합될 수 있거나, 각각의 유닛이 물리적으로 단독으로 존재할 수 있거나, 둘 이상의 유닛이 하나의 유닛으로 통합된다.
기능이 소프트웨어 기능 유닛의 형태로 구현되어 독립된 제품으로 판매되거나 사용되는 경우, 기능은 컴퓨터 판독 가능 저장 매체에 저장될 수 있다. 이러한 이해를 바탕으로, 본 출원의 실시예들의 본질적인 기술 솔루션 또는 종래 기술에 기여하는 부분 또는 기술 솔루션의 일부가 소프트웨어 제품의 형태로 구현될 수 있다. 컴퓨터 소프트웨어 제품은 저장 매체에 저장되며, 본 출원의 실시예들에 기술된 방법의 모든 단계 또는 일부 단계를 수행하도록 컴퓨터 디바이스(개인용 컴퓨터, 서버, 또는 네트워크 디바이스 등일 수 있음)에 명령하기 위한 몇 가지 명령을 포함한다. 전술한 저장 매체는, USB 플래시 드라이브, 착탈식 하드 디스크 드라이브, 읽기 전용 메모리(Read-Only Memory, ROM), 랜덤 액세스 메모리(Random Access Memory, RAM), 자기 디스크 또는 광 디스크와 같이 프로그램 코드를 저장할 수 있는 모든 매체를 포함한다.
전술한 설명은 단지 본 출원의 실시예의 특정 구현일 뿐이며, 본 출원의 실시예의 보호 범위를 제한하려는 것이 아니다. 본 출원의 실시예에 개시된 기술적 범위 내에서 당업자에 의해 용이하게 파악된 모든 변형 또는 교체는 본 출원의 실시예의 보호 범위 내에 속할 것이다. 따라서, 본 출원의 실시예의 보호 범위는 청구범위의 보호 범위에 종속되어야 한다.
Claims (37)
- 칩 시스템으로서,
소스 물리 프로세서(source physical processor), 제어 장치, 중간 장치, 송신 장치 및 타겟 물리 프로세서(target physical processor)를 포함하되,
상기 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성되고, 상기 제어 장치는 레지스터를 포함하고, 상기 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 호스트 머신 또는 상기 가상 머신에서 비롯되고,
상기 제어 장치는, 상기 레지스터에 있고 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보를 상기 중간 장치로 전송하도록 구성되고,
상기 중간 장치는 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보에 기초하여 상기 가상 인터럽트를 트리거하고 상기 가상 인터럽트를 상기 송신 장치로 전송하도록 구성되며,
상기 송신 장치는 상기 중간 장치로부터 상기 가상 인터럽트를 수신하고 상기 가상 인터럽트를 상기 타겟 물리 프로세서로 전송하도록 구성되는,
칩 시스템. - 제1항에 있어서,
상기 가상 인터럽트는 가상 로컬 인터럽트이고, 상기 타겟 물리 프로세서와 상기 소스 물리 프로세서는 동일한 물리 프로세서이고,
상기 레지스터는, 상기 가상 머신에 의해 기록되고 상기 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고,
상기 송신 장치는 상기 가상 로컬 인터럽트를 상기 가상 머신의 제1 가상 프로세서로 전송하도록 구성되는 ― 상기 제1 가상 프로세서는 상기 소스 물리 프로세서에서 실행됨 ―,
칩 시스템. - 제1항에 있어서,
상기 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 가상 머신의 제1 가상 프로세서에 의해 상기 레지스터에 기록되는 제2 가상 프로세서의 식별자를 포함하고, 상기 제2 가상 프로세서는, 상기 가상 머신에 속하고 상기 타겟 물리 프로세서에서 실행되는 가상 프로세서이고,
상기 제어 장치는 상기 레지스터로부터 상기 제2 가상 프로세서의 상기 식별자를 판독하고, 상기 가상 머신의 식별자를 획득하며, 상기 가상 머신의 상기 식별자 및 상기 제2 가상 프로세서의 상기 식별자를 상기 중간 장치로 전송하도록 구성되고,
상기 중간 장치는,
상기 가상 머신의 상기 식별자 및 상기 제2 가상 프로세서의 상기 식별자에 기초하여 제1 대응 관계로부터, 상기 가상 머신의 상기 식별자 및 상기 제2 가상 프로세서의 상기 식별자에 대응하는 상기 타겟 물리 프로세서를 결정하고 ― 상기 제1 대응 관계는, 상기 타겟 물리 프로세서, 상기 타겟 프로세서에서 실행되는 상기 제2 가상 프로세서 및 상기 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―,
상기 가상 소프트웨어 인터럽트를 상기 타겟 물리 프로세서에 대응하는 상기 송신 장치로 전송하도록 구성되며,
상기 송신 장치는 상기 가상 소프트웨어 인터럽트를 상기 타겟 물리 프로세서에서 실행되는 상기 제2 가상 프로세서로 전송하도록 구성되는,
칩 시스템. - 제1항에 있어서,
상기 가상 인터럽트는 가상 디바이스 인터럽트이고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 호스트 머신에 의해 상기 레지스터에 기록된 타겟 인터럽트 번호, 및 상기 가상 머신의 식별자를 포함하고, 상기 타겟 인터럽트 번호는 상기 호스트 머신이 하드웨어 디바이스를 시뮬레이트(simulate)할 때 트리거되는 인터럽트의 식별자이고,
상기 제어 장치는 상기 레지스터로부터 상기 타겟 인터럽트 번호 및 상기 가상 머신의 상기 식별자를 판독하고, 상기 가상 머신의 상기 식별자 및 상기 타겟 인터럽트 번호를 상기 중간 장치로 전송하도록 구성되고,
상기 중간 장치는,
상기 가상 머신의 상기 식별자 및 상기 타겟 인터럽트 번호에 기초하여, 제2 대응 관계에서, 상기 가상 머신에 속하고 상기 가상 머신의 상기 식별자 및 상기 타겟 인터럽트 번호에 대응하는 제1 가상 프로세서의 식별자를 검색하고 ― 상기 제2 대응 관계는 상기 가상 머신, 상기 타겟 인터럽트 번호 및 상기 제1 가상 프로세서 간의 대응 관계를 기록하는데 사용됨 ―,
상기 가상 머신의 상기 식별자와 상기 제1 가상 프로세서의 상기 식별자에 기초하여 제3 대응 관계로부터, 상기 가상 머신의 상기 식별자와 상기 제1 가상 프로세서의 상기 식별자에 대응하는 상기 타겟 물리 프로세서를 결정하고 ― 상기 제3 대응 관계는 상기 타겟 물리 프로세서, 상기 타겟 프로세서에서 실행되는 상기 제1 가상 프로세서 및 상기 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―,
상기 가상 디바이스 인터럽트를 상기 타겟 물리 프로세서에 대응하는 상기 송신 장치로 전송하도록 구성되고,
상기 송신 장치는 상기 가상 디바이스 인터럽트를 상기 타겟 물리 프로세서에서 실행되는 상기 제1 가상 프로세서로 전송하도록 구성되는,
칩 시스템. - 제4항에 있어서,
상기 중간 장치는 어드레스 레지스터를 포함하고, 상기 어드레스 레지스터는 메모리 내의 상기 제2 대응 관계의 어드레스, 및 상기 가상 머신의 상기 식별자를 저장하도록 구성되고,
상기 중간 장치는 상기 가상 머신의 상기 식별자에 기초하여 상기 어드레스 레지스터를 찾고, 상기 어드레스 레지스터 내의 상기 어드레스에 기초하여 상기 메모리로부터 상기 제2 대응 관계를 획득하도록 추가로 구성되는,
칩 시스템. - 제어 장치로서,
상기 제어 장치는 칩 시스템에 사용되고, 상기 칩 시스템은 소스 물리 프로세서, 중간 장치, 송신 장치 및 타겟 물리 프로세서를 더 포함하고, 상기 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성되고, 상기 제어 장치는 레지스터를 포함하고, 상기 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 호스트 머신 또는 상기 가상 머신에서 비롯되며,
상기 제어 장치는 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보를 상기 레지스터로부터 판독하고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보를 상기 중간 장치로 전송하도록 구성되는 ― 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 중간 장치가 상기 가상 인터럽트를 트리거할 수 있도록 하는 데 사용되며, 상기 가상 인터럽트는 상기 송신 장치에 의해 상기 타겟 물리 프로세서로 전송됨 ―,
제어 장치. - 제6항에 있어서,
상기 가상 인터럽트는 가상 로컬 인터럽트이고, 상기 타겟 물리 프로세서와 상기 소스 물리 프로세서는 동일한 물리 프로세서이고, 상기 레지스터는, 상기 가상 머신에 의해 기록되고 상기 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고,
상기 제어 장치는 상기 가상 로컬 인터럽트를 트리거하는 데 사용되는 상기 정보를 상기 중간 장치로 전송하도록 구성되는 ― 상기 가상 로컬 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 중간 장치가 상기 가상 로컬 인터럽트를 트리거할 수 있도록 하는 데 사용되며, 상기 가상 로컬 인터럽트는 상기 송신 장치에 의해 상기 가상 머신의 제1 가상 프로세서로 전송되고, 상기 제1 가상 프로세서는 상기 소스 물리 프로세서에서 실행됨 ―,
제어 장치. - 제6항에 있어서,
상기 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 가상 머신의 제1 가상 프로세서에 의해 상기 레지스터에 기록되는 제2 가상 프로세서의 식별자를 포함하고, 상기 제2 가상 프로세서는, 상기 가상 머신에 속하고 상기 타겟 물리 프로세서에서 실행되는 가상 프로세서이고,
상기 제어 장치는 상기 레지스터로부터 상기 제2 가상 프로세서의 상기 식별자를 판독하고, 상기 가상 머신의 식별자를 획득하며, 상기 가상 머신의 상기 식별자 및 상기 제2 가상 프로세서의 상기 식별자를 상기 중간 장치로 전송하도록 구성되는 ― 상기 가상 머신의 상기 식별자 및 상기 제2 가상 프로세서의 상기 식별자는 상기 중간 장치에 의해 상기 타겟 물리 프로세서를 결정하고 상기 가상 소프트웨어 인터럽트를 트리거하는 데 사용되고, 상기 가상 소프트웨어 인터럽트는 상기 송신 장치에 의해 상기 타겟 물리 프로세서의 상기 제2 가상 프로세서로 전송됨 ―,
제어 장치. - 제6항에 있어서,
상기 가상 인터럽트는 가상 디바이스 인터럽트이고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 호스트 머신에 의해 상기 레지스터에 기록된 타겟 인터럽트 번호, 및 상기 가상 머신의 식별자를 포함하고, 상기 타겟 인터럽트 번호는 상기 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이고,
상기 제어 장치는 상기 레지스터로부터 상기 타겟 인터럽트 번호 및 상기 가상 머신의 상기 식별자를 판독하고 상기 가상 머신의 상기 식별자 및 상기 타겟 인터럽트 번호를 상기 중간 장치로 전송하도록 구성되는 ― 상기 가상 머신의 상기 식별자 및 상기 타겟 인터럽트 번호는 상기 중간 장치에 의해 상기 타겟 물리 프로세서를 결정하고 상기 가상 디바이스 인터럽트를 트리거하는 데 사용되며, 상기 가상 디바이스 인터럽트는 상기 송신 장치에 의해 상기 타겟 물리 프로세서의 상기 가상 머신의 제1 가상 프로세서로 전송됨 ―,
제어 장치. - 중간 장치로서,
상기 중간 장치는 칩 시스템에 사용되고, 상기 칩 시스템은 소스 물리 프로세서, 제어 장치, 송신 장치 및 타겟 물리 프로세서를 더 포함하고, 상기 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성되고, 상기 제어 장치는 레지스터를 포함하고, 상기 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 호스트 머신 또는 상기 가상 머신에서 비롯되며,
상기 중간 장치는 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보를 상기 제어 장치로부터 수신하고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보에 기초하여 상기 가상 인터럽트를 트리거하며, 상기 가상 인터럽트를 상기 송신 장치로 전송하도록 구성되는 ― 상기 가상 인터럽트는 상기 송신 장치에 의해 상기 타겟 물리 프로세서로 전송됨 ―,
중간 장치. - 제10항에 있어서,
상기 가상 인터럽트는 가상 로컬 인터럽트이고, 상기 타겟 물리 프로세서와 상기 소스 물리 프로세서는 동일한 물리 프로세서이고, 상기 레지스터는, 상기 가상 머신에 의해 기록되고 상기 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고,
상기 중간 장치는 상기 가상 로컬 인터럽트를 트리거하는 데 사용되는 상기 정보에 기초하여 가상 로컬 인터럽트를 트리거하고, 상기 가상 로컬 인터럽트를 상기 송신 장치로 전송하도록 구성되는 ― 상기 가상 로컬 인터럽트는 상기 송신 장치에 의해 상기 가상 머신의 제1 가상 프로세서로 전송되고, 상기 제1 가상 프로세서는 상기 소스 물리 프로세서에서 실행됨 ―,
중간 장치. - 제10항에 있어서,
상기 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 가상 머신의 제1 가상 프로세서에 의해 상기 레지스터에 기록되는 제2 가상 프로세서의 식별자를 포함하고, 상기 제2 가상 프로세서는, 상기 가상 머신에 속하고 상기 타겟 물리 프로세서에서 실행되는 가상 프로세서이고,
상기 중간 장치는,
상기 제어 장치로부터 상기 가상 머신의 식별자 및 상기 제2 가상 프로세서의 상기 식별자를 수신하고,
상기 가상 머신의 상기 식별자 및 상기 제2 가상 프로세서의 상기 식별자에 기초하여 제1 대응 관계로부터, 상기 가상 머신의 상기 식별자 및 상기 제2 가상 프로세서의 상기 식별자에 대응하는 상기 타겟 물리 프로세서를 결정하고 ― 상기 제1 대응 관계는, 상기 타겟 물리 프로세서, 상기 타겟 프로세서에서 실행되는 상기 제2 가상 프로세서 및 상기 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―,
상기 가상 소프트웨어 인터럽트를 트리거하며,
상기 가상 소프트웨어 인터럽트를 상기 타겟 물리 프로세서에 대응하는 상기 송신 장치로 전송하도록 구성되는 ― 상기 가상 소프트웨어 인터럽트는 상기 송신 장치에 의해 상기 타겟 물리 프로세서의 상기 제2 가상 프로세서로 전송됨 ―,
중간 장치. - 제10항에 있어서,
상기 가상 인터럽트는 가상 디바이스 인터럽트이고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 호스트 머신에 의해 상기 레지스터에 기록된 타겟 인터럽트 번호, 및 상기 가상 머신의 식별자를 포함하고, 상기 타겟 인터럽트 번호는 상기 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이고,
상기 중간 장치는,
상기 제어 장치로부터 상기 가상 머신의 상기 식별자 및 상기 타겟 인터럽트 번호를 수신하고,
상기 가상 머신의 상기 식별자 및 상기 타겟 인터럽트 번호에 기초하여, 제2 대응 관계에서, 상기 가상 머신에 속하고 상기 가상 머신의 상기 식별자 및 상기 타겟 인터럽트 번호에 대응하는 제1 가상 프로세서의 식별자를 검색하고 ― 상기 제2 대응 관계는 상기 가상 머신, 상기 타겟 인터럽트 번호 및 상기 제1 가상 프로세서 간의 대응 관계를 기록하는데 사용됨 ―,
상기 가상 머신의 상기 식별자와 상기 제1 가상 프로세서의 상기 식별자에 기초하여 제3 대응 관계로부터, 상기 가상 머신의 상기 식별자와 상기 제1 가상 프로세서의 상기 식별자에 대응하는 상기 타겟 물리 프로세서를 결정하고 ― 상기 제3 대응 관계는 상기 타겟 물리 프로세서, 상기 타겟 프로세서에서 실행되는 상기 제1 가상 프로세서 및 상기 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―,
상기 가상 디바이스 인터럽트를 트리거하며,
상기 가상 디바이스 인터럽트를 상기 타겟 물리 프로세서에 대응하는 상기 송신 장치로 전송하도록 구성되는 ― 상기 가상 디바이스 인터럽트는 상기 송신 장치에 의해 상기 타겟 물리 프로세서의 상기 제1 가상 프로세서로 전송됨 ―,
중간 장치. - 제13항에 있어서,
상기 중간 장치는 어드레스 레지스터를 포함하고, 상기 어드레스 레지스터는 메모리 내의 상기 제2 대응 관계의 어드레스, 및 상기 가상 머신의 상기 식별자를 저장하도록 구성되고,
상기 중간 장치는 상기 가상 머신의 상기 식별자에 기초하여 상기 어드레스 레지스터를 찾고, 상기 어드레스 레지스터 내의 상기 어드레스에 기초하여 상기 메모리로부터 상기 제2 대응 관계를 획득하도록 추가로 구성되는,
중간 장치. - 송신 장치로서,
상기 송신 장치는 칩 시스템에 사용되고, 상기 칩 시스템은 소스 물리 프로세서, 중간 장치, 제어 장치 및 타겟 물리 프로세서를 더 포함하고, 상기 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성되고, 상기 제어 장치는 레지스터를 포함하고, 상기 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 호스트 머신 또는 상기 가상 머신에서 비롯되며,
상기 송신 장치는 상기 중간 장치로부터 상기 가상 인터럽트를 수신하고 상기 가상 인터럽트를 상기 타겟 물리 프로세서로 전송하도록 구성되는,
송신 장치. - 제15항에 있어서,
상기 가상 인터럽트는 가상 로컬 인터럽트이고, 상기 타겟 물리 프로세서 및 상기 소스 물리 프로세서는 동일한 물리 프로세서이고,
상기 송신 장치는 상기 중간 장치로부터 상기 가상 로컬 인터럽트를 수신하고, 상기 가상 로컬 인터럽트를 상기 가상 머신의 제1 가상 프로세서로 전송하도록 구성되는 ― 상기 제1 가상 프로세서는 상기 소스 물리 프로세서에서 실행됨 ―,
송신 장치. - 제15항에 있어서,
상기 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 가상 머신의 제1 가상 프로세서에 의해 상기 레지스터에 기록되는 제2 가상 프로세서의 식별자를 포함하고, 상기 제2 가상 프로세서는, 상기 가상 머신에 속하고 상기 타겟 물리 프로세서에서 실행되는 가상 프로세서이고,
상기 송신 장치는 상기 중간 장치로부터 상기 가상 소프트웨어 인터럽트를 수신하고, 상기 가상 소프트웨어 인터럽트를 상기 타겟 물리 프로세서에서 실행되는 상기 제2 가상 프로세서로 전송하도록 구성되는,
송신 장치. - 제15항에 있어서,
상기 가상 인터럽트는 가상 디바이스 인터럽트이고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 호스트 머신에 의해 상기 레지스터에 기록된 타겟 인터럽트 번호, 및 상기 가상 머신의 식별자를 포함하고, 상기 타겟 인터럽트 번호는 상기 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이고,
상기 송신 장치는 상기 중간 장치로부터 상기 가상 디바이스 인터럽트를 수신하고, 상기 가상 디바이스 인터럽트를 상기 타겟 물리 프로세서에서 실행되는 제1 가상 프로세서로 전송하도록 구성되는,
송신 장치. - 제15항 내지 제18항 중 어느 한 항에 있어서,
상기 송신 장치는 상기 가상 인터럽트를 상기 타겟 물리 프로세서의 펜딩 레지스터(pending register)에 기록하도록 구성되는 ― 상기 펜딩 레지스터는 상기 타겟 물리 프로세서에 의해 실행되는 절차의 명령을 수신하도록 구성됨 ―,
송신 장치. - 가상 인터럽트 처리 방법으로서,
상기 방법은 칩 시스템의 제어 장치에 적용되고, 상기 칩 시스템은 소스 물리 프로세서, 중간 장치, 송신 장치 및 타겟 물리 프로세서를 더 포함하고, 상기 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성되고, 상기 제어 장치는 레지스터를 포함하고, 상기 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 호스트 머신 또는 상기 가상 머신에서 비롯되며,
상기 방법은,
상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보를 상기 레지스터로부터 판독하는 단계, 및
상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보를 상기 중간 장치로 전송하는 단계 ― 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 중간 장치가 상기 가상 인터럽트를 트리거할 수 있도록 하는 데 사용되며, 상기 가상 인터럽트는 상기 송신 장치에 의해 상기 타겟 물리 프로세서로 전송됨 ―를 포함하는,
가상 인터럽트 처리 방법. - 제20항에 있어서,
상기 가상 인터럽트는 가상 로컬 인터럽트이고, 상기 타겟 물리 프로세서와 상기 소스 물리 프로세서는 동일한 물리 프로세서이고, 상기 레지스터는, 상기 가상 머신에 의해 기록되고 상기 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고,
상기 가상 로컬 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 중간 장치에 의해 상기 가상 로컬 인터럽트를 트리거하는 데 사용되고, 상기 가상 로컬 인터럽트는 상기 송신 장치에 의해 상기 가상 머신의 제1 가상 프로세서로 전송되고, 상기 제1 가상 프로세서는 상기 소스 물리 프로세서에서 실행되는,
가상 인터럽트 처리 방법. - 제20항에 있어서,
상기 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 가상 머신의 제1 가상 프로세서에 의해 상기 레지스터에 기록되는 제2 가상 프로세서의 식별자를 포함하고, 상기 제2 가상 프로세서는, 상기 가상 머신에 속하고 상기 타겟 물리 프로세서에서 실행되는 가상 프로세서이고,
상기 방법은,
상기 가상 머신의 식별자를 획득하는 단계, 및
상기 가상 머신의 상기 식별자를 상기 중간 장치로 전송하는 단계 ― 상기 가상 머신의 상기 식별자 및 상기 제2 가상 프로세서의 상기 식별자는 상기 중간 장치에 의해 상기 타겟 물리 프로세서를 결정하고 상기 가상 소프트웨어 인터럽트를 트리거하는 데 사용되고, 상기 가상 소프트웨어 인터럽트는 상기 송신 장치에 의해 상기 타겟 물리 프로세서의 상기 제2 가상 프로세서로 전송됨 ―를 더 포함하는,
가상 인터럽트 처리 방법. - 제20항에 있어서,
상기 가상 인터럽트는 가상 디바이스 인터럽트이고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 호스트 머신에 의해 상기 레지스터에 기록된 타겟 인터럽트 번호, 및 상기 가상 머신의 식별자를 포함하고, 상기 타겟 인터럽트 번호는 상기 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이고, 상기 가상 머신의 상기 식별자 및 상기 타겟 인터럽트 번호는 상기 중간 장치에 의해 상기 타겟 물리 프로세서를 결정하고 상기 가상 디바이스 인터럽트를 트리거하는 데 사용되며, 상기 가상 디바이스 인터럽트는 상기 송신 장치에 의해 상기 타겟 물리 프로세서의 제1 가상 프로세서로 전송되는,
가상 인터럽트 처리 방법. - 가상 인터럽트 처리 방법으로서,
상기 방법은 칩 시스템의 중간 장치에 적용되고, 상기 칩 시스템은 소스 물리 프로세서, 제어 장치, 송신 장치 및 타겟 물리 프로세서를 더 포함하고, 상기 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성되고, 상기 제어 장치는 레지스터를 포함하고, 상기 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 호스트 머신 또는 상기 가상 머신에서 비롯되며,
상기 방법은,
상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보를 상기 제어 장치로부터 수신하는 단계,
상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보에 기초하여 상기 가상 인터럽트를 트리거하는 단계, 및
상기 가상 인터럽트를 상기 송신 장치로 전송하는 단계 ― 상기 가상 인터럽트는 상기 송신 장치에 의해 상기 타겟 물리 프로세서로 전송됨 ―를 포함하는,
가상 인터럽트 처리 방법. - 제24항에 있어서,
상기 가상 인터럽트는 가상 로컬 인터럽트이고, 상기 타겟 물리 프로세서와 상기 소스 물리 프로세서는 동일한 물리 프로세서이고, 상기 레지스터는, 상기 가상 머신에 의해 기록되고 상기 가상 로컬 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고,
상기 가상 로컬 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 가상 로컬 인터럽트를 트리거하는 데 사용되고, 상기 가상 로컬 인터럽트는 상기 송신 장치에 의해 상기 가상 머신의 제1 가상 프로세서로 전송되며, 상기 제1 가상 프로세서는 상기 소스 물리 프로세서에서 실행되는,
가상 인터럽트 처리 방법. - 제24항에 있어서,
상기 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 가상 머신의 제1 가상 프로세서에 의해 상기 레지스터에 기록되는 제2 가상 프로세서의 식별자를 포함하고, 상기 제2 가상 프로세서는, 상기 가상 머신에 속하고 상기 타겟 물리 프로세서에서 실행되는 가상 프로세서이고,
상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보에 기초하여 상기 가상 인터럽트를 트리거하는 상기 단계는,
상기 가상 머신의 상기 식별자 및 상기 제2 가상 프로세서의 상기 식별자에 기초하여 제1 대응 관계로부터, 상기 가상 머신의 상기 식별자 및 상기 제2 가상 프로세서의 상기 식별자에 대응하는 상기 타겟 물리 프로세서를 결정하는 단계 ― 상기 제1 대응 관계는, 상기 타겟 물리 프로세서, 상기 타겟 프로세서에서 실행되는 상기 제2 가상 프로세서 및 상기 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 및
상기 가상 소프트웨어 인터럽트를 트리거하는 단계 ― 상기 가상 소프트웨어 인터럽트는 상기 송신 장치에 의해 상기 타겟 물리 프로세서의 상기 제2 가상 프로세서로 전송됨 ―를 포함하는,
가상 인터럽트 처리 방법. - 제24항에 있어서,
상기 가상 인터럽트는 가상 디바이스 인터럽트이고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 호스트 머신에 의해 상기 레지스터에 기록된 타겟 인터럽트 번호, 및 상기 가상 머신의 식별자를 포함하고, 상기 타겟 인터럽트 번호는 상기 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이고,
상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보에 기초하여 상기 가상 인터럽트를 트리거하는 상기 단계는,
상기 가상 머신의 상기 식별자 및 상기 타겟 인터럽트 번호에 기초하여, 제2 대응 관계에서, 상기 가상 머신에 속하고 상기 가상 머신의 상기 식별자 및 상기 타겟 인터럽트 번호에 대응하는 제1 가상 프로세서의 식별자를 검색하는 단계 ― 상기 제2 대응 관계는 상기 가상 머신, 상기 타겟 인터럽트 번호 및 상기 제1 가상 프로세서 간의 대응 관계를 기록하는데 사용됨 ―,
상기 가상 머신의 상기 식별자와 상기 제1 가상 프로세서의 상기 식별자에 기초하여 제3 대응 관계로부터, 상기 가상 머신의 상기 식별자와 상기 제1 가상 프로세서의 상기 식별자에 대응하는 상기 타겟 물리 프로세서를 결정하는 단계 ― 상기 제3 대응 관계는 상기 타겟 물리 프로세서, 상기 타겟 프로세서에서 실행되는 상기 제1 가상 프로세서 및 상기 가상 머신 간의 대응 관계를 기록하는 데 사용됨 ―, 및
상기 가상 디바이스 인터럽트를 트리거하는 단계 ― 상기 가상 디바이스 인터럽트는 상기 송신 장치에 의해 상기 타겟 물리 프로세서의 상기 제1 가상 프로세서로 전송됨 ―를 포함하는,
가상 인터럽트 처리 방법. - 제27항에 있어서,
상기 방법은,
상기 가상 머신의 상기 식별자에 기초하여 어드레스 레지스터를 찾고, 상기 어드레스 레지스터 내의 어드레스에 기초하여 메모리로부터 상기 제2 대응 관계를 획득하는 단계 ― 상기 어드레스 레지스터는 상기 메모리 내의 상기 제2 대응 관계의 상기 어드레스, 및 상기 가상 머신의 상기 식별자를 저장하도록 구성됨 ―를 더 포함하는,
가상 인터럽트 처리 방법. - 가상 인터럽트 처리 방법으로서,
상기 방법은 칩 시스템의 송신 장치에 적용되고, 상기 칩 시스템은 소스 물리 프로세서, 중간 장치, 제어 장치 및 타겟 물리 프로세서를 더 포함하고, 상기 소스 물리 프로세서는 호스트 머신 또는 가상 머신을 실행하도록 구성되고, 상기 제어 장치는 레지스터를 포함하고, 상기 레지스터는 가상 인터럽트를 트리거하는 데 사용되는 정보를 수신하도록 구성되고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 호스트 머신 또는 상기 가상 머신에서 비롯되며,
상기 방법은,
상기 중간 장치로부터 상기 가상 인터럽트를 수신하는 단계, 및
상기 가상 인터럽트를 상기 타겟 물리 프로세서로 전송하는 단계를 포함하는,
가상 인터럽트 처리 방법. - 제29항에 있어서,
상기 가상 인터럽트는 가상 로컬 인터럽트이고, 상기 타겟 물리 프로세서 및 상기 소스 물리 프로세서는 동일한 물리 프로세서이고,
상기 가상 인터럽트를 상기 타겟 물리 프로세서로 전송하는 상기 단계는,
상기 가상 로컬 인터럽트를 상기 가상 머신의 제1 가상 프로세서로 전송하는 단계 ― 상기 제1 가상 프로세서는 상기 소스 물리 프로세서에서 실행됨 ―를 포함하는,
가상 인터럽트 처리 방법. - 제29항에 있어서,
상기 가상 인터럽트는 가상 소프트웨어 인터럽트이고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 가상 머신의 제1 가상 프로세서에 의해 상기 레지스터에 기록되는 제2 가상 프로세서의 식별자를 포함하고, 상기 제2 가상 프로세서는, 상기 가상 머신에 속하고 상기 타겟 물리 프로세서에서 실행되는 가상 프로세서이고,
상기 가상 인터럽트를 상기 타겟 물리 프로세서로 전송하는 상기 단계는,
상기 가상 소프트웨어 인터럽트를 상기 타겟 물리 프로세서에서 실행되는 상기 제2 가상 프로세서로 전송하는 단계를 포함하는,
가상 인터럽트 처리 방법. - 제29항에 있어서,
상기 가상 인터럽트는 가상 디바이스 인터럽트이고, 상기 가상 인터럽트를 트리거하는 데 사용되는 상기 정보는 상기 호스트 머신에 의해 상기 레지스터에 기록된 타겟 인터럽트 번호, 및 상기 가상 머신의 식별자를 포함하고, 상기 타겟 인터럽트 번호는 상기 호스트 머신이 하드웨어 디바이스를 시뮬레이트할 때 트리거되는 인터럽트의 식별자이고,
상기 가상 인터럽트를 상기 타겟 물리 프로세서로 전송하는 상기 단계는,
상기 가상 디바이스 인터럽트를 상기 타겟 물리 프로세서에서 실행되는 제1 가상 프로세서로 전송하는 단계를 포함하는,
가상 인터럽트 처리 방법. - 제29항 내지 제32항 중 어느 한 항에 있어서,
상기 방법은,
상기 가상 인터럽트를 상기 타겟 물리 프로세서의 펜딩 레지스터에 기록하는 단계 ― 상기 펜딩 레지스터는 상기 타겟 물리 프로세서에 의해 실행되는 절차의 명령을 수신하도록 구성됨 ―를 더 포함하는,
가상 인터럽트 처리 방법. - 칩 시스템으로서,
소스 물리 프로세서, 제어 장치, 송신 장치 및 타겟 물리 프로세서를 포함하되,
상기 제어 장치는 제6항 내지 제9항 중 어느 한 항에 따른 제어 장치이고, 상기 송신 장치는 제15항 내지 제19항 중 어느 한 항에 따른 송신 장치인,
칩 시스템. - 제34항에 있어서,
상기 칩 시스템은 중간 장치를 더 포함하고, 상기 중간 장치는 제10항 내지 제14항 중 어느 한 항에 따른 중간 장치인,
칩 시스템. - 컴퓨터 판독 가능 저장 매체로서,
상기 컴퓨터 판독 가능 저장 매체는 컴퓨터 프로그램을 저장하고, 상기 컴퓨터 프로그램이 프로세서에 의해 수행될 때, 제20항 내지 제23항 중 어느 한 항에 따른 방법이 구현되거나, 제24항 내지 제28항 중 어느 한 항에 따른 방법이 구현되거나, 제29항 내지 제33항 중 어느 한 항에 따른 방법이 구현되는,
컴퓨터 판독 가능 저장 매체. - 컴퓨터 디바이스로서,
제1항 내지 제5항 중 어느 한 항에 따른 칩 시스템을 포함하거나 제34항 또는 제35항에 따른 칩 시스템을 포함하는,
컴퓨터 디바이스.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011108332.3A CN114371907A (zh) | 2020-10-15 | 2020-10-15 | 一种芯片系统、处理虚拟中断的方法及相应装置 |
CN202011108332.3 | 2020-10-15 | ||
PCT/CN2021/123497 WO2022078375A1 (zh) | 2020-10-15 | 2021-10-13 | 一种芯片系统、处理虚拟中断的方法及相应装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230084300A true KR20230084300A (ko) | 2023-06-12 |
Family
ID=81137817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020237015942A KR20230084300A (ko) | 2020-10-15 | 2021-10-13 | 칩 시스템, 가상 인터럽트 처리 방법 및 대응하는 장치 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20230259380A1 (ko) |
EP (1) | EP4220394A4 (ko) |
JP (1) | JP2023545818A (ko) |
KR (1) | KR20230084300A (ko) |
CN (1) | CN114371907A (ko) |
WO (1) | WO2022078375A1 (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117632533A (zh) * | 2022-08-19 | 2024-03-01 | 华为技术有限公司 | 一种中断消息处理方法及装置 |
CN118152063A (zh) * | 2022-12-05 | 2024-06-07 | 中兴通讯股份有限公司 | 中断请求处理方法、系统、设备及计算机可读存储介质 |
CN116107697B (zh) * | 2023-01-04 | 2023-10-31 | 芯动微电子科技(武汉)有限公司 | 一种不同操作系统之间互相通信的方法及系统 |
CN116320469B (zh) * | 2023-05-16 | 2024-03-01 | 摩尔线程智能科技(北京)有限责任公司 | 一种虚拟化视频编解码系统及方法、电子设备和存储介质 |
CN116521324B (zh) * | 2023-06-30 | 2024-04-12 | 深圳中安辰鸿技术有限公司 | 中断虚拟化处理方法、装置及电子设备 |
CN117272412B (zh) * | 2023-11-21 | 2024-03-15 | 芯来智融半导体科技(上海)有限公司 | 中断控制寄存器保护方法、装置、计算机设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100547571C (zh) * | 2006-08-29 | 2009-10-07 | 联想(北京)有限公司 | 一种虚拟机系统及其硬件设备中断处理方法 |
ATE542177T1 (de) * | 2008-08-19 | 2012-02-15 | St Microelectronics Rousset | Weiterleitungsverfahren eines unterbrechungssignals direkt an eine virtuelle bearbeitungseinheit in einem system mit einer oder mehreren physischen bearbeitungseinheiten |
US9436626B2 (en) * | 2012-08-09 | 2016-09-06 | Freescale Semiconductor, Inc. | Processor interrupt interface with interrupt partitioning and virtualization enhancements |
CN103559087B (zh) * | 2013-10-31 | 2017-11-28 | 华为技术有限公司 | 一种虚拟处理器之间的中断的实现方法、相关装置和系统 |
WO2015192381A1 (zh) * | 2014-06-20 | 2015-12-23 | 华为技术有限公司 | 虚拟化平台处理中断方法和相关设备 |
CN107038061B (zh) * | 2017-04-14 | 2019-07-05 | 上海交通大学 | 一种基于numa和硬件辅助技术的高效网络io处理方法 |
CN110609730B (zh) * | 2018-06-14 | 2023-04-07 | 阿里巴巴集团控股有限公司 | 一种实现虚拟处理器间中断透传的方法及设备 |
-
2020
- 2020-10-15 CN CN202011108332.3A patent/CN114371907A/zh active Pending
-
2021
- 2021-10-13 KR KR1020237015942A patent/KR20230084300A/ko active Search and Examination
- 2021-10-13 EP EP21879418.8A patent/EP4220394A4/en active Pending
- 2021-10-13 JP JP2023522963A patent/JP2023545818A/ja active Pending
- 2021-10-13 WO PCT/CN2021/123497 patent/WO2022078375A1/zh active Application Filing
-
2023
- 2023-04-14 US US18/300,515 patent/US20230259380A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230259380A1 (en) | 2023-08-17 |
JP2023545818A (ja) | 2023-10-31 |
WO2022078375A1 (zh) | 2022-04-21 |
EP4220394A4 (en) | 2024-03-20 |
CN114371907A (zh) | 2022-04-19 |
EP4220394A1 (en) | 2023-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20230084300A (ko) | 칩 시스템, 가상 인터럽트 처리 방법 및 대응하는 장치 | |
RU2532708C2 (ru) | Способ и устройство для осуществления операции ввода/вывода в среде виртуализации | |
EP3388934A1 (en) | Method and apparatus for processing read/write request in physical host | |
US10185514B2 (en) | Virtual machine trigger | |
US10176007B2 (en) | Guest code emulation by virtual machine function | |
US20230124004A1 (en) | Method for handling exception or interrupt in heterogeneous instruction set architecture and apparatus | |
JP7538950B2 (ja) | コンピュータデバイス、例外処理方法および割り込み処理方法 | |
Lim et al. | NEVE: Nested virtualization extensions for ARM | |
US20230133273A1 (en) | System and interrupt handling method | |
US9069741B2 (en) | Emulating level triggered interrupts of physical devices assigned to virtual machine | |
WO2020177567A1 (zh) | 一种迁移数据的方法、装置及系统 | |
KR101077908B1 (ko) | 서버 가상화 장치 | |
CN112559120B (zh) | 定制化pcie总线io虚拟化支撑方法 | |
CN113703913A (zh) | 设备测试方法及装置 | |
US20120054773A1 (en) | Processor support for secure device driver architecture | |
CN114356812B (zh) | 中断处理方法、装置、电子设备及计算机可读存储介质 | |
CN113760767A (zh) | 操作系统的调试方法、装置、电子设备及计算机可读存储介质 | |
Zhang et al. | Research on virtualization technology of IO device: Hui-Min Zhang, Hai-Rong Hu & Yang-Xia Xiang Lu-Lu Fang | |
Elisei et al. | bhyvearm64: Generic Interrupt Controller Version 3 Virtualization | |
JP2005056019A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |