CN114371907A - 一种芯片系统、处理虚拟中断的方法及相应装置 - Google Patents

一种芯片系统、处理虚拟中断的方法及相应装置 Download PDF

Info

Publication number
CN114371907A
CN114371907A CN202011108332.3A CN202011108332A CN114371907A CN 114371907 A CN114371907 A CN 114371907A CN 202011108332 A CN202011108332 A CN 202011108332A CN 114371907 A CN114371907 A CN 114371907A
Authority
CN
China
Prior art keywords
virtual
interrupt
processor
physical processor
virtual machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011108332.3A
Other languages
English (en)
Inventor
赵思齐
蒋毅飞
邓凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202011108332.3A priority Critical patent/CN114371907A/zh
Priority to EP21879418.8A priority patent/EP4220394A4/en
Priority to PCT/CN2021/123497 priority patent/WO2022078375A1/zh
Priority to KR1020237015942A priority patent/KR20230084300A/ko
Priority to JP2023522963A priority patent/JP2023545818A/ja
Publication of CN114371907A publication Critical patent/CN114371907A/zh
Priority to US18/300,515 priority patent/US20230259380A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory 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

本申请公开了一种芯片系统,应用于虚拟化技术领域。该芯片系统包括源物理处理器、控制装置、中间装置、发送装置以及目标物理处理器,源物理处理器上运行有宿主机或虚拟机,控制装置中的寄存器接收宿主机或虚拟机写入的用于触发虚拟中断的信息,控制装置将寄存器中的用于触发虚拟中断的信息发送给中间装置;中间装置根据用于触发虚拟中断的信息触发虚拟中断,并将虚拟中断发送给发送装置;发送装置将虚拟中断发送给目标物理处理器。该方案用于减少因虚拟中断产生的从虚拟机到宿主机,或者从宿主机的用户态切换到宿主机的内核态的切换开销。

Description

一种芯片系统、处理虚拟中断的方法及相应装置
技术领域
本申请涉及虚拟化技术领域,具体涉及一种芯片系统、处理虚拟中断的方法及相应装置。
背景技术
虚拟中断是虚拟化技术的必要组成部分,虚拟机(virtual machine,VM)运行于计算机设备中,该计算机设备中的磁盘、输入/输出(input/output,I/O)设备等硬件设备对虚拟机的通知,以及虚拟机内部的各种同步以及协调工作都依赖于虚拟中断。虚拟中断是一种事件,这类事件可以有各种来源,来源不同,针对该事件的处理过程也会有不同,但每种来源的这类事件都会以虚拟机运行时收到中断的形式通知到虚拟机。
无论是哪种来源的虚拟中断,在虚拟中断最终到达虚拟机之前,宿主机需要利用自身的各种机制完成将虚拟中断从源头发送到目的虚拟机的工作。在发送该虚拟中断过程中,需要处理器的控制流从正在执行的虚拟机切换到宿主机,或者从宿主机的用户态切换到宿主机的内核态,产生了较大的切换开销。
发明内容
本申请实施例提供一种芯片系统、处理虚拟中断的方法及相应装置,用于减少因虚拟中断产生的从虚拟机到宿主机,或者从宿主机的用户态切换到宿主机的内核态的切换开销。本申请实施例还提供了相应的计算机设备、计算机存储介质以及计算机程序产品等。
本申请第一方面提供一种芯片系统,包括:源物理处理器、控制装置、中间装置、发送装置以及目标物理处理器,源物理处理器用于运行宿主机或虚拟机,控制装置包括寄存器,寄存器用于接收用于触发虚拟中断的信息,用于触发虚拟中断的信息可以来自于宿主机或虚拟机;控制装置用于:将寄存器中的用于触发虚拟中断的信息发送给中间装置;中间装置用于:根据用于触发虚拟中断的信息触发虚拟中断,并将虚拟中断发送给发送装置;发送装置用于:接收来自于中间装置的虚拟中断,并将虚拟中断发送给目标物理处理器。
本申请中,该芯片系统可以是片上系统(system on chip,SOC),源物理处理器和目标物理处理器可以分别是一个处理单元(processing unit),例如一个物理核。控制装置、中间装置和发送装置都可以是通过硬件电路来实现的,也可以是通过软件实现的。源物理处理器和目标物理处理器可以为多核处理器中的物理核,多核处理器包括多个物理核,物理核为集成在处理器中的内核,物理核是一种处理单元,比如双核处理器可以理解为具有两个物理核的处理器。控制装置和发送装置可以部署在该多核处理器中,与源物理处理器和目标物理处理器耦合。中间装置可以部署在该多核处理器中,也可以部署在与多核处理器耦合的外围设备/外围组件上。片上系统可以包括多核处理器和与多核处理器耦合的外围设备/外围组件。芯片系统中的任一个物理处理器既可以作为源物理处理器,也可以作为目标物理处理器。
本申请中,虚拟中断(virtual interrupt)指的是计算机设备中的硬件设备、宿主机、该虚拟机的时钟或虚拟机的虚拟处理器(virtual processer)等发送给虚拟机(virtual machine,VM)的中断,产生该虚拟中断的硬件设备可以是计算机设备中的磁盘、网卡、声卡、鼠标、硬盘等。物理中断指的是硬件设备发送给物理处理器的中断。物理中断是由宿主机处理,而虚拟中断是由虚拟机处理。
需要注意的是,本申请各个实施例提到的虚拟处理器的一种具体实现方式可以为虚拟中央处理器(virtual central processing unit,vCPU)。后续提到的“vCPU”也可以替换为“虚拟处理器”来理解。
本申请中,虚拟中断可以包括虚拟局部中断(virtual local interrupt),虚拟软件中断(virtual software interrupt),虚拟设备中断(virtual device interrupt)和直通外设中断(direct peripheral interrupt)。其中,虚拟局部中断指由虚拟机模拟的虚拟局部设备发出的中断或虚拟机的某个vCPU的局部设备发出的中断,例如:虚拟机的某个vCPU的计时器发出的时钟中断。虚拟软件中断指由软件触发的,通常指虚拟机的一个vCPU发给该虚拟机的另一个vCPU的中断,一个虚拟机可以有多个vCPU,这些vCPU在一个时刻可以运行在不同的物理处理器上来执行虚拟机的不同任务,当不同的vCPU之间所执行的任务有依赖关系或需要调度时,就会发生虚拟软件中断。虚拟设备中断指由宿主机模拟硬件设备触发的中断,例如宿主机模拟虚拟机磁盘控制器或模拟其他硬件设备产生的中断。
本申请中,控制装置中可以包括至少一个寄存器,其中,可以是每个寄存器用于接收一种类型的用于触发虚拟中断的信息。如:包括三个寄存器,一个寄存器用于接收用于触发虚拟局部中断的信息,一个寄存器用于接收用于触发虚拟软件中断的信息,一个寄存器用于接收用于触发虚拟设备中断的信息。当然,该控制装置中,针对虚拟中断也可以只配置一个寄存器,用于触发每种类型的虚拟中断的信息不同,可以通过寄存器接收的信息来识别虚拟中断的类型。
中间装置可以有一个,也可以有多个。发送装置可以是每个物理处理器有一个发送装置,也可以是多个物理处理器共用一个发送装置。
由上述第一方面可知,该第一方面在控制装置中设置专用于处理虚拟中断的寄存器,这样,处于用户态或内核态的宿主机或虚拟机可以直接将用于触发虚拟中断的信息写入该寄存器中,控制装置可以将该用于触发虚拟中断的信息发送给中间装置,由中间装置触发虚拟中断,并且,中间装置将该虚拟中断发送给发送装置,由发送装置将该虚拟中断发送给目标物理处理器。本申请提供的方案中,宿主机或虚拟机均可以直接访问寄存器,将用于触发虚拟中断的信息写入寄存器,从而将虚拟中断发送出去;因此相比于现有技术,本申请提供的方案不需要源物理处理器执行从虚拟机到宿主机的切换,也不需要源物理处理器执行从宿主机的用户态到宿主机的内核态的切换,从而减少了处理虚拟中断产生的切换开销,提高了芯片系统的性能。
在第一方面的一种可能的实现方式中,虚拟中断为虚拟局部中断,目标物理处理器和源物理处理器为同一物理处理器;寄存器用于:接收虚拟机写入的用于触发虚拟局部中断的信息;发送装置用于:将虚拟局部中断发送给虚拟机的第一虚拟处理器vCPU,第一vCPU运行在源物理处理器上。
该种可能的实现方式中,因为虚拟局部中断是核内中断,所以,目标物理处理器和源物理处理器为同一物理处理器。中间装置可以为计时器,该虚拟局部中断可以为时钟中断。一个物理处理器一个时刻只会运行一个虚拟机的一个vCPU,将虚拟局部中断发送给该vCPU,即可完成将该虚拟局部中断发送给虚拟机的操作。由该可能的实现方式可知,处理该虚拟局部中断的过程不需要源物理处理器执行从虚拟机到宿主机的切换,从而减少了处理虚拟局部中断产生的切换开销,提高了芯片系统的性能。
在第一方面的一种可能的实现方式中,虚拟中断为虚拟软件中断,用于触发虚拟中断的信息包括虚拟机的第一vCPU写入寄存器的第二vCPU的标识,第二vCPU为运行于目标物理处理器上的虚拟机的vCPU;控制装置用于:从寄存器读取第二vCPU的标识,并获取虚拟机的标识;以及,将虚拟机的标识和第二vCPU的标识发送给中间装置;中间装置用于:根据虚拟机的标识和第二vCPU的标识,从第一对应关系中确定与虚拟机的标识和第二vCPU的标识对应的目标物理处理器;其中,第一对应关系用于记录目标物理处理器、目标处理器上运行的第二vCPU以及虚拟机之间的对应关系;将虚拟软件中断发送给与目标物理处理器对应的发送装置;发送装置用于:将虚拟软件中断发送给运行于目标物理处理器的第二vCPU。
该种可能的实现方式中,虚拟软件中断是虚拟机的第一vCPU发给该虚拟机的第二vCPU的中断。因此,虚拟机的第一vCPU要触发该虚拟软件中断时,需要向寄存器中写入第二vCPU的标识。一个虚拟机可以有多个vCPU,归属于同一个虚拟机的vCPU可以采用分时复用的方式在一个物理处理器上运行,如:在物理处理器1上先运行虚拟机1的vCPU1,物理处理器1结束该vCPU1的运行后,可以再运行该虚拟机1的vCPU2,同属于一个虚拟机的多个vCPU也可以运行在不同的物理处理器上,一个时刻可以在不同的物理处理器上运行不同的vCPU,如:在物理处理器1上运行虚拟机1的vCPU1,在物理处理器2上运行虚拟机1的vCPU2。该虚拟软件中断的场景中,第一vCPU运行于源物理处理器上,第二vCPU运行于目标物理处理器上。控制装置可以从专门用于存储源物理处理器上所运行的虚拟机的标识的寄存器中获取该虚拟机的标识。因为,每个虚拟机都可以有多个vCPU,不同虚拟机的vCPU的标识可能是相同的,所以,控制装置需要向中间装置发送该虚拟机的标识和第二vCPU的标识。中间装置上可以存储上述第一对应关系,该第一对应关系可以位于在位vCPU标识组中,该在位vCPU标识组中记录有该芯片系统中的每个物理处理器、每个物理处理器运行的vCPU,以及在运行的vCPU所属的虚拟机之间的对应关系,本申请可以通过查找在位vCPU标识组的方式来目标物理处理器。由该可能的实现方式可知,处理该虚拟软件中断的过程不需要源物理处理器执行从虚拟机到宿主机的切换,从而减少了处理虚拟软件中断产生的切换开销,提高了芯片系统的性能。
在第一方面的一种可能的实现方式中,虚拟中断为虚拟设备中断,用于触发虚拟中断的信息包括宿主机写入寄存器的目标中断号和虚拟机的标识,目标中断号为宿主机模拟硬件设备时所触发的中断的标识;控制装置用于:从寄存器读取目标中断号和虚拟机的标识,并将虚拟机的标识和目标中断号发送给中间装置;中间装置用于:根据虚拟机的标识和目标中断号,在第二对应关系中查找与虚拟机的标识和目标中断号对应的虚拟机的第一vCPU的标识,第二对应关系用于记录虚拟机、目标中断号和第一vCPU之间的对应关系;根据虚拟机的标识和第一vCPU的标识,从第三对应关系中确定与虚拟机的标识和第一vCPU的标识对应的目标物理处理器;其中,第三对应关系用于记录目标物理处理器、目标处理器上运行的第一vCPU以及虚拟机之间的对应关系;将虚拟设备中断发送给与目标物理处理器对应的发送装置;发送装置用于:将虚拟设备中断发送给运行于目标物理处理器的第一vCPU。
该种可能的实现方式中,虚拟设备中断是处于用户态的宿主机模拟硬件设备触发的中断。硬件设备的类型可以有多种,每种类型的硬件设备的中断号不相同,若宿主机模拟的是磁盘,则该目标中断号为磁盘的中断号。因为宿主机所管理的虚拟机可以有多个,所以,宿主机需要向寄存器中写入该虚拟机的标识和目标中断号。第二对应关系可以位于中断亲和性表中。该中断亲和性表可以是虚拟机配置的,所以,针对每个虚拟机都有一个中断亲和性表。这样,就可以根据该虚拟机的标识找到该虚拟机的中断亲和性表,然后,在根据该目标中断号从该虚拟机的中断亲和性表中确定出对应的vCPU,目标中断号是10,若中断亲和性表中,中断号10与vCPU ID1对应,则可以确定目标中断号对应的vCPU ID为1。路由装置确定vCPU ID为1后,可以根据在位vCPU标识组查找到该vCPU ID1对应的物理处理器,在位vCPU标识组的含义可以参阅前述虚拟软件中断部分的描述进行理解,第三对应关系也可以参考前述第一对应关系进行理解。由该可能的实现方式可知,处理该虚拟设备中断的过程不需要源物理处理器执行从宿主机的用户态到宿主机的内核态的切换,从而减少了处理虚拟设备中断产生的切换开销,提高了芯片系统的性能。
在第一方面的一种可能的实现方式中,中间装置包括地址寄存器,地址寄存器用于存储第二对应关系在内存中的地址以及虚拟机的标识;中间装置还用于:根据虚拟机的标识查找到地址寄存器,根据地址寄存器中的地址从内存中获取第二对应关系。
该种可能的实现方式中,上述中断亲和性表可以存储在中间装置中,也可以存储在内存中,该中间装置中可以为每个物理处理器提供一个地址寄存器,该地址寄存器可以是基地址寄存器,该基地址寄存器中可以存储该中断亲和性表在内存的地址以及虚拟机的标识。这样可以避免占用太多中间装置的存储空间。
在第一方面的一种可能的实现方式中,发送装置用于:将虚拟中断写入目标物理处理器的待处理寄存器中,待处理寄存器用于接收目标物理处理器所执行流程的命令。
该种可能的实现方式中,该待处理寄存器用于接收目标物理处理器接下来所要执行的命令,将该虚拟中断写入到该待处理寄存器中,那么该目标物理处理器接下来就会执行该虚拟中断,这样就可以打断当前在执行的流程,从而屏蔽现有方案中切换到宿主机的动作。减少了目标物理处理器从虚拟机到宿主机的切换开销。
本申请第二方面提供一种芯片系统,该芯片系统包括源物理处理器、控制装置、中间装置、发送装置以及目标物理处理器,源物理处理器用于运行宿主机或虚拟机;该芯片系统还包括虚拟机与虚拟机直接通信的硬件设备;中间装置用于:接收硬件设备触发的直通外设中断;根据直通外设中断的物理中断号,从虚拟中断表中查找对应的虚拟机的标识和虚拟中断号,虚拟中断表中记录有物理中断号与虚拟机的标识和虚拟中断号的对应关系;根据虚拟机的标识确定对应的中断亲和性表,从中断亲和性表中确定虚拟机的标识和虚拟中断号对应的目标虚拟处理器vCPU的标识,中断亲和性表中记录虚拟中断号与虚拟处理器的对应关系;根据目标vCPU的标识,从在位vCPU标识组中确定目标vCPU的标识对应的目标物理处理器;将直通外设中断发送给目标物理处理器对应的发送装置。发送装置将直通外设中断发送给目标物理处理器上运行的虚拟机。
该第二方面中,直通外设中断指由直通给虚拟机的外部设备触发的,例如直通给虚拟机的显卡产生的中断。在处理直通外设中断的过程中,会依次使用到虚拟中断表、中断亲和性表和在位vCPU标识组,中断亲和性表和在位vCPU标识组可以参阅前面第一方面的可能的实现方式中的描述进行理解,下面介绍虚拟中断表。虚拟中断表维护物理中断号与虚拟机的标识和虚拟中断号的对应关系,输入一个物理中断号,可以输出虚拟机的标识和虚拟中断号。该处理直通外设中断的过程中,中间装置接收直通外设发送的物理中断号,通过该物理中断号在虚拟中断表中查找对应的虚拟机的标识和虚拟中断号,例如:输入一个物理中断号100,可以输出虚拟机的标识1和虚拟中断号10。然后,根据虚拟机的标识1和虚拟中断号10查找中断亲和性表,查找到对应的vCPU ID,如:查找到vCPU ID为1。再进一步根据该vCPU ID从在位vCPU标识组中查找对应的物理处理器,如:查找到物理处理器1,则中间装置可以将直通外设中断发送给物理处理器1对应的发送装置,由该发送装置将该直通外设中断发送给vCPU ID1对应的vCPU。
该第二方面提供的直通外设中断的处理过程,通过三个对应关系的查找就可以完成发送过程,提高了直通外设中断处理的灵活性。
本申请第三方面提供一种控制装置,该控制装置应用于芯片系统,芯片系统还包括源物理处理器、中间装置和发送装置,源物理处理器用于运行宿主机或虚拟机,控制装置包括寄存器;寄存器用于接收用于触发虚拟中断的信息,用于触发虚拟中断的信息来自于宿主机或虚拟机;控制装置用于:从寄存器中读取用于触发虚拟中断的信息,并将用于触发虚拟中断的信息发送给中间装置,用于触发虚拟中断的信息用于使得中间装置触发虚拟中断,虚拟中断由发送装置发送给目标物理处理器。
在第三方面的一种可能的实现方式中,虚拟中断为虚拟局部中断,目标物理处理器和源物理处理器为同一物理处理器,寄存器用于接收虚拟机写入的用于触发虚拟局部中断的信息;控制装置用于:将用于触发虚拟局部中断的信息发送给中间装置,用于触发虚拟局部中断的信息用于使得中间装置触发虚拟局部中断,虚拟局部中断由发送装置发送给虚拟机的第一虚拟处理器vCPU,第一vCPU运行在源物理处理器上。
在第三方面的一种可能的实现方式中,虚拟中断为虚拟软件中断,用于触发虚拟中断的信息包括虚拟机的第一VCPU写入寄存器的第二vCPU的标识,第二vCPU为运行于目标物理处理器上的虚拟机的vCPU;控制装置用于:从寄存器读取第二vCPU的标识,并获取虚拟机的标识;以及,将虚拟机的标识和第二vCPU的标识发送给中间装置,虚拟机的标识和第二vCPU的标识用于中间装置确定目标物理处理器并触发虚拟软件中断,虚拟软件中断由发送装置发送给目标物理处理器的第二vCPU。
在第三方面的一种可能的实现方式中,虚拟中断为虚拟设备中断,用于触发虚拟中断的信息包括宿主机写入寄存器的目标中断号和虚拟机的标识,目标中断号为宿主机模拟硬件设备时所触发的中断的标识;控制装置用于:从寄存器读取目标中断号和虚拟机的标识,并将虚拟机的标识和目标中断号发送给中间装置,虚拟机的标识和目标中断号用于中间装置确定目标物理处理器并触发虚拟设备中断,虚拟设备中断由发送装置发送给目标物理处理器的虚拟机的第一vCPU。
本申请第四方面提供一种中间装置,该中间装置应用于芯片系统,芯片系统还包括源物理处理器、控制装置、发送装置以及目标物理处理器,源物理处理器用于运行宿主机或虚拟机,控制装置包括寄存器;寄存器用于接收用于触发虚拟中断的信息,用于触发虚拟中断的信息来自于宿主机或虚拟机;中间装置用于:接收来自控制装置的用于触发虚拟中断的信息,根据用于触发虚拟中断的信息触发虚拟中断,并将虚拟中断发送给发送装置,虚拟中断由发送装置发送给目标物理处理器。
在第四方面的一种可能的实现方式中,虚拟中断为虚拟局部中断,目标物理处理器和源物理处理器为同一物理处理器,寄存器用于接收虚拟机写入的用于触发虚拟局部中断的信息;中间装置用于:根据用于触发虚拟局部中断的信息,触发虚拟局部中断,并将虚拟局部中断发送给发送装置,虚拟局部中断由发送装置发送给虚拟机的第一虚拟处理器vCPU,第一vCPU运行在源物理处理器上。
在第四方面的一种可能的实现方式中,虚拟中断为虚拟软件中断,用于触发虚拟中断的信息包括虚拟机的第一vCPU写入寄存器的第二vCPU的标识,第二vCPU为运行于目标物理处理器上的虚拟机的vCPU;中间装置用于:接收来自控制装置的虚拟机的标识和第二vCPU的标识;根据虚拟机的标识和第二vCPU的标识,从第一对应关系中确定与虚拟机的标识和第二vCPU的标识对应的目标物理处理器;其中,第一对应关系用于记录目标物理处理器、目标处理器上运行的第二vCPU以及虚拟机之间的对应关系;触发虚拟软件中断;将虚拟软件中断发送给与目标物理处理器对应的发送装置,虚拟软件中断由发送装置发送给目标物理处理器的第二vCPU。
在第四方面的一种可能的实现方式中,虚拟中断为虚拟设备中断,用于触发虚拟中断的信息包括宿主机写入寄存器的目标中断号和虚拟机的标识,目标中断号为宿主机模拟硬件设备时所触发的中断的标识;中间装置用于:接收来自控制设备的虚拟机的标识和目标中断号;根据虚拟机的标识和目标中断号,在第二对应关系中查找与虚拟机的标识和目标中断号对应的虚拟机的第一vCPU的标识,第二对应关系用于记录虚拟机、目标中断号和第一vCPU之间的对应关系;根据虚拟机的标识和第一vCPU的标识,从第三对应关系中确定与虚拟机的标识和第一vCPU的标识对应的目标物理处理器;其中,第三对应关系用于记录目标物理处理器、目标处理器上运行的第一vCPU以及虚拟机之间的对应关系;触发虚拟设备中断;将虚拟设备中断发送给与目标物理处理器对应的发送装置,虚拟设备中断由发送装置发送给目标物理处理器的第一vCPU。
在第四方面的一种可能的实现方式中,中间装置包括地址寄存器,地址寄存器用于存储第二对应关系在内存中的地址以及虚拟机的标识;中间装置还用于:根据虚拟机的标识查找到地址寄存器,根据地址寄存器中的地址从内存中获取第二对应关系。
本申请第五方面提供一种发送装置,该发送装置应用于芯片系统,芯片系统还包括源物理处理器、中间装置、以及目标物理处理器控制装置,源物理处理器用于运行宿主机或虚拟机,控制装置包括寄存器;寄存器用于接收用于触发虚拟中断的信息,用于触发虚拟中断的信息来自于宿主机或虚拟机;发送装置用于:接收来自于中间装置的虚拟中断,并将虚拟中断发送给目标物理处理器。
在第五方面的一种可能的实现方式中,虚拟中断为虚拟局部中断,目标物理处理器和源物理处理器为同一物理处理器;发送装置用于:接收来自中间装置的虚拟局部中断,并将虚拟局部中断发送给虚拟机的第一虚拟处理器vCPU,第一vCPU运行在源物理处理器上。
在第五方面的一种可能的实现方式中,虚拟中断为虚拟软件中断,用于触发虚拟中断的信息包括虚拟机的第一vCPU写入寄存器的第二vCPU的标识,第二vCPU为运行于目标物理处理器上的虚拟机的vCPU;发送装置用于:接收来自中间装置的虚拟软件中断,并将虚拟软件中断发送给运行于目标物理处理器的第二vCPU。
在第五方面的一种可能的实现方式中,虚拟中断为虚拟设备中断,用于触发虚拟中断的信息包括宿主机写入寄存器的目标中断号和虚拟机的标识,目标中断号为宿主机模拟硬件设备时所触发的中断的标识;发送装置用于:接收来自中间装置的虚拟设备中断,并将虚拟设备中断发送给运行于目标物理处理器的第一vCPU。
在第五方面的一种可能的实现方式中,发送装置用于:将虚拟中断写入目标物理处理器的待处理寄存器中,待处理寄存器用于接收目标物理处理器所执行流程的命令。
以上第三方面至第五方面,以及其中任一种可能的实现方式中所描述的特征,以及相应的有意效果,都可以参阅第一方面,以及第一方面的任一可能的实现方式中的描述进行理解,此处不再重复赘述。
本申请第六方面提供一种处理虚拟中断的方法,该方法应用于芯片系统中的控制装置,该芯片系统还包括源物理处理器、中间装置、发送装置以及目标物理处理器,源物理处理器用于运行宿主机或虚拟机,控制装置包括寄存器;寄存器用于接收用于触发虚拟中断的信息,该用于触发虚拟中断的信息来自于宿主机或虚拟机,该方法包括:从寄存器中读取用于触发虚拟中断的信息;将用于触发虚拟中断的信息发送给中间装置,用于触发虚拟中断的信息用于中间装置触发虚拟中断,虚拟中断由发送装置发送给目标物理处理器。
在第六方面的一种可能的实现方式中,虚拟中断为虚拟局部中断,目标物理处理器和源物理处理器为同一物理处理器,寄存器用于接收虚拟机写入的用于触发虚拟局部中断的信息;用于触发虚拟局部中断的信息用于使得中间装置触发虚拟局部中断,虚拟局部中断由发送装置发送给虚拟机的第一虚拟处理器vCPU,第一vCPU运行在源物理处理器上。
在第六方面的一种可能的实现方式中,虚拟中断为虚拟软件中断,用于触发虚拟中断的信息包括虚拟机的第一VCPU写入寄存器的第二vCPU的标识,第二vCPU为运行于目标物理处理器上的虚拟机的vCPU;该方法还包括:获取虚拟机的标识;将虚拟机的标识发送给中间装置,虚拟机的标识和第二vCPU的标识用于中间装置确定目标物理处理器并触发虚拟软件中断,虚拟软件中断由发送装置发送给目标物理处理器的第二vCPU。
在第六方面的一种可能的实现方式中,虚拟中断为虚拟设备中断,用于触发虚拟中断的信息包括宿主机写入寄存器的目标中断号和虚拟机的标识,目标中断号为宿主机模拟硬件设备时所触发的中断的标识;虚拟机的标识和目标中断号用于中间装置确定目标物理处理器并触发虚拟设备中断,虚拟设备中断由发送装置发送给目标物理处理器的第一vCPU。
本申请第七方面提供一种处理虚拟中断的方法,该方法应用于芯片系统中的中间装置,芯片系统还包括源物理处理器、控制装置、发送装置以及目标物理处理器,源物理处理器用于运行宿主机或虚拟机,控制装置包括寄存器;寄存器用于接收用于触发虚拟中断的信息,该用于触发虚拟中断的信息来自于宿主机或虚拟机,该方法包括:接收来自控制装置的用于触发虚拟中断的信息;根据用于触发虚拟中断的信息触发虚拟中断;将虚拟中断发送给发送装置,虚拟中断由发送装置发送给目标物理处理器。
在第七方面的一种可能的实现方式中,虚拟中断为虚拟局部中断,目标物理处理器和源物理处理器为同一物理处理器,寄存器用于接收虚拟机写入的用于触发虚拟局部中断的信息;用于触发虚拟局部中断的信息用于触发虚拟局部中断,虚拟局部中断由发送装置发送给虚拟机的第一虚拟处理器vCPU,第一vCPU运行在源物理处理器上。
在第七方面的一种可能的实现方式中,虚拟中断为虚拟软件中断,用于触发虚拟中断的信息包括虚拟机的第一vCPU写入寄存器的第二vCPU的标识,第二vCPU为运行于目标物理处理器上的虚拟机的vCPU;上述步骤:根据用于触发虚拟中断的信息触发虚拟中断,包括:根据虚拟机的标识和第二vCPU的标识,从第一对应关系中确定与虚拟机的标识和第二vCPU的标识对应的目标物理处理器;其中,第一对应关系用于记录目标物理处理器、目标处理器上运行的第二vCPU以及虚拟机之间的对应关系;触发虚拟软件中断,虚拟软件中断由发送装置发送给目标物理处理器的第二vCPU。
在第七方面的一种可能的实现方式中,虚拟中断为虚拟设备中断,用于触发虚拟中断的信息包括宿主机写入寄存器的目标中断号和虚拟机的标识,目标中断号为宿主机模拟硬件设备时所触发的中断的标识;上述步骤:根据用于触发虚拟中断的信息触发虚拟中断,包括:根据虚拟机的标识和目标中断号,在第二对应关系中查找与虚拟机的标识和目标中断号对应的虚拟机的第一vCPU的标识,第二对应关系用于记录虚拟机、目标中断号和第一vCPU之间的对应关系;根据虚拟机的标识和第一vCPU的标识,从第三对应关系中确定与虚拟机的标识和第一vCPU的标识对应的目标物理处理器;其中,第三对应关系用于记录目标物理处理器、目标处理器上运行的第一vCPU以及虚拟机之间的对应关系;触发虚拟设备中断,虚拟设备中断由发送装置发送给目标物理处理器的第一vCPU。
在第七方面的一种可能的实现方式中,该方法还包括:根据虚拟机的标识查找到地址寄存器,根据地址寄存器中的地址从内存中获取第二对应关系,地址寄存器用于存储第二对应关系在内存中的地址以及虚拟机的标识。
本申请第八方面提供一种处理虚拟中断的方法,该方法应用于芯片系统中的发送装置,芯片系统还包括源物理处理器、中间装置、控制装置以及目标物理处理器,源物理处理器用于运行宿主机或虚拟机,控制装置包括寄存器;寄存器用于接收用于触发虚拟中断的信息,该用于触发虚拟中断的信息来自于宿主机或虚拟机,该方法包括:接收来自于中间装置的虚拟中断;将虚拟中断发送给目标物理处理器。
在第八方面的一种可能的实现方式中,虚拟中断为虚拟局部中断,目标物理处理器和源物理处理器为同一物理处理器;上述步骤:将虚拟中断发送给目标物理处理器,包括:将虚拟局部中断发送给虚拟机的第一虚拟处理器vCPU,第一vCPU运行在源物理处理器上。
在第八方面的一种可能的实现方式中,虚拟中断为虚拟软件中断,用于触发虚拟中断的信息包括虚拟机的第一vCPU写入寄存器的第二vCPU的标识,第二vCPU为运行于目标物理处理器上的虚拟机的vCPU;上述步骤:将虚拟中断发送给目标物理处理器,包括:将虚拟软件中断发送给运行于目标物理处理器的第二vCPU。
在第八方面的一种可能的实现方式中,虚拟中断为虚拟设备中断,用于触发虚拟中断的信息包括宿主机写入寄存器的目标中断号和虚拟机的标识,目标中断号为宿主机模拟硬件设备时所触发的中断的标识;上述步骤:将虚拟中断发送给目标物理处理器,包括:将虚拟设备中断发送给运行于目标物理处理器的第一vCPU。
在第八方面的一种可能的实现方式中,该方法还包括:将虚拟中断写入目标物理处理器的待处理寄存器中,待处理寄存器用于接收目标物理处理器所执行流程的命令。
以上第六方面至第八方面,以及其中任一种可能的实现方式中所描述的特征,以及相应的有意效果,都可以参阅第一方面,以及第一方面的任一可能的实现方式中的描述进行理解,此处不再重复赘述。
本申请第九方面提供一种控制装置,该控制装置应用于芯片系统中,该芯片系统还包括源物理处理器、中间装置、发送装置以及目标物理处理器,源物理处理器用于运行宿主机或虚拟机,控制装置包括寄存器;寄存器用于接收用于触发虚拟中断的信息,该用于触发虚拟中断的信息来自于宿主机或虚拟机,该控制装置包括:读取单元,用于从寄存器中读取用于触发虚拟中断的信息;发送单元,用于将用于触发虚拟中断的信息发送给中间装置,用于触发虚拟中断的信息用于中间装置触发虚拟中断,虚拟中断由发送装置发送给目标物理处理器。
在第九方面的一种可能的实现方式中,虚拟中断为虚拟局部中断,目标物理处理器和源物理处理器为同一物理处理器,寄存器用于接收虚拟机写入的用于触发虚拟局部中断的信息;用于触发虚拟局部中断的信息用于使得中间装置触发虚拟局部中断,虚拟局部中断由发送装置发送给虚拟机的第一虚拟处理器vCPU,第一vCPU运行在源物理处理器上。
在第九方面的一种可能的实现方式中,虚拟中断为虚拟软件中断,用于触发虚拟中断的信息包括虚拟机的第一VCPU写入寄存器的第二vCPU的标识,第二vCPU为运行于目标物理处理器上的虚拟机的vCPU;该控制装置还包括处理单元,该处理单元,用于获取虚拟机的标识;发送单元,用于将虚拟机的标识发送给中间装置,虚拟机的标识和第二vCPU的标识用于中间装置确定目标物理处理器并触发虚拟软件中断,虚拟软件中断由发送装置发送给目标物理处理器的第二vCPU。
在第九方面的一种可能的实现方式中,虚拟中断为虚拟设备中断,用于触发虚拟中断的信息包括宿主机写入寄存器的目标中断号和虚拟机的标识,目标中断号为宿主机模拟硬件设备时所触发的中断的标识;虚拟机的标识和目标中断号用于中间装置确定目标物理处理器并触发虚拟设备中断,虚拟设备中断由发送装置发送给目标物理处理器的第一vCPU。
本申请第十方面提供一种中间装置,该中间装置应用于芯片系统中,该芯片系统还包括源物理处理器、控制装置、发送装置以及目标物理处理器,源物理处理器用于运行宿主机或虚拟机,控制装置包括寄存器;寄存器用于接收用于触发虚拟中断的信息,该用于触发虚拟中断的信息来自于宿主机或虚拟机,该中间装置包括:接收单元,用于接收来自控制装置的用于触发虚拟中断的信息;处理单元,用于根据用于触发虚拟中断的信息触发虚拟中断;发送单元,用于将虚拟中断发送给发送装置,虚拟中断由发送装置发送给目标物理处理器。
在第十方面的一种可能的实现方式中,虚拟中断为虚拟局部中断,目标物理处理器和源物理处理器为同一物理处理器,寄存器用于接收虚拟机写入的用于触发虚拟局部中断的信息;用于触发虚拟局部中断的信息用于触发虚拟局部中断,虚拟局部中断由发送装置发送给虚拟机的第一虚拟处理器vCPU,第一vCPU运行在源物理处理器上。
在第十方面的一种可能的实现方式中,虚拟中断为虚拟软件中断,用于触发虚拟中断的信息包括虚拟机的第一vCPU写入寄存器的第二vCPU的标识,第二vCPU为运行于目标物理处理器上的虚拟机的vCPU;处理单元,用于根据虚拟机的标识和第二vCPU的标识,从第一对应关系中确定与虚拟机的标识和第二vCPU的标识对应的目标物理处理器;其中,第一对应关系用于记录目标物理处理器、目标处理器上运行的第二vCPU以及虚拟机之间的对应关系;触发虚拟软件中断,虚拟软件中断由发送装置发送给目标物理处理器的第二vCPU。
在第十方面的一种可能的实现方式中,虚拟中断为虚拟设备中断,用于触发虚拟中断的信息包括宿主机写入寄存器的目标中断号和虚拟机的标识,目标中断号为宿主机模拟硬件设备时所触发的中断的标识;处理单元,用于根据虚拟机的标识和目标中断号,在第二对应关系中查找与虚拟机的标识和目标中断号对应的虚拟机的第一vCPU的标识,第二对应关系用于记录虚拟机、目标中断号和第一vCPU之间的对应关系;根据虚拟机的标识和第一vCPU的标识,从第三对应关系中确定与虚拟机的标识和第一vCPU的标识对应的目标物理处理器;其中,第三对应关系用于记录目标物理处理器、目标处理器上运行的第一vCPU以及虚拟机之间的对应关系;触发虚拟设备中断,虚拟设备中断由发送装置发送给目标物理处理器的第一vCPU。
在第十方面的一种可能的实现方式中,该处理单元,还用于根据虚拟机的标识查找到地址寄存器,根据地址寄存器中的地址从内存中获取第二对应关系,地址寄存器用于存储第二对应关系在内存中的地址以及虚拟机的标识。
本申请第十一方面提供一种发送装置,该发送装置应用于芯片系统中,该芯片系统还包括源物理处理器、中间装置、控制装置以及目标物理处理器,源物理处理器用于运行宿主机或虚拟机,控制装置包括寄存器;寄存器用于接收用于触发虚拟中断的信息,该用于触发虚拟中断的信息来自于宿主机或虚拟机,发送装置包括:接收单元,用于接收来自于中间装置的虚拟中断;发送单元,用于将虚拟中断发送给目标物理处理器。
在第十一方面的一种可能的实现方式中,虚拟中断为虚拟局部中断,目标物理处理器和源物理处理器为同一物理处理器;发送单元,用于将虚拟局部中断发送给虚拟机的第一虚拟处理器vCPU,第一vCPU运行在源物理处理器上。
在第十一方面的一种可能的实现方式中,虚拟中断为虚拟软件中断,用于触发虚拟中断的信息包括虚拟机的第一vCPU写入寄存器的第二vCPU的标识,第二vCPU为运行于目标物理处理器上的虚拟机的vCPU;发送单元,用于将虚拟软件中断发送给运行于目标物理处理器的第二vCPU。
在第十一方面的一种可能的实现方式中,虚拟中断为虚拟设备中断,用于触发虚拟中断的信息包括宿主机写入寄存器的目标中断号和虚拟机的标识,目标中断号为宿主机模拟硬件设备时所触发的中断的标识;发送单元,用于将虚拟设备中断发送给运行于目标物理处理器的第一vCPU。
在第十一方面的一种可能的实现方式中,发送单元,用于将虚拟中断写入目标物理处理器的待处理寄存器中,待处理寄存器用于接收目标物理处理器所执行流程的命令。
以上第九方面至第十一方面,以及其中任一种可能的实现方式中所描述的特征,以及相应的有意效果,都可以参阅第一方面,以及第一方面的任一可能的实现方式中的描述进行理解,此处不再重复赘述。
本申请第十二方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当计算机执行指令被处理器执行时,处理器执行如上述第六方面或第六方面任意一种可能的实现方式的方法。
本申请第十三方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当计算机执行指令被处理器执行时,处理器执行如上述第七方面或第七方面任意一种可能的实现方式的方法。
本申请第十四方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当计算机执行指令被处理器执行时,处理器执行如上述第八方面或第八方面任意一种可能的实现方式的方法。
本申请第十五方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当计算机执行指令被处理器执行时,处理器执行如上述第六方面或第六方面任意一种可能的实现方式的方法。
本申请第十六方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当计算机执行指令被处理器执行时,处理器执行如上述第七方面或第七方面任意一种可能的实现方式的方法。
本申请第十七方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当计算机执行指令被处理器执行时,处理器执行如上述第八方面或第八方面任意一种可能的实现方式的方法。
本申请第十八方面提供一种计算机设备,该计算机设备包括上述第一方面或第一方面任一可能的实现方式所述的芯片系统。
本申请第十九方面提供一种芯片系统,该芯片系统包括源物理处理器、控制装置和发送装置以及目标物理处理器。控制装置如前述第三方面、第九方面、第三方面任一可能的实现方式或第九方面任一可能的实现方式,发送装置如前述第五方面、第十一方面、第十一方面任一可能的实现方式或第五方面任一可能的实现方式。
在一种实现方式中,该芯片系统还可以包括如前述第四方面、第十方面、第十方面任一可能的实现方式或第四方面任一可能的实现方式所述的中间装置。
在一种实现方式中,第十九方面提供的芯片系统为一个处理器,源物理处理器和目标物理处理器是该处理器中的物理核,而控制装置位于该处理器中、与源物理处理器耦合的组件,发送装置是位于该处理器中、与目标物理处理器耦合的组件。可以理解的是,由于处理器中任一个物理核都可能作为虚拟中断的接收方,因此一个物理核可以即作为源物理处理器的角色,又承担目标物理处理器的角色。对应的,与该物理核耦合的可以既包括控制装置也包括发送装置。
本申请实施例提供的芯片系统,在控制装置中设置专用于处理虚拟中断的寄存器,这样,处于用户态的宿主机或虚拟机可以直接将用于触发虚拟中断的信息写入该寄存器中,控制装置可以将该用于触发虚拟中断的信息发送给中间装置,由中间装置触发虚拟中断,并且,中间装置将该虚拟中断发送给发送装置,由发送装置将该虚拟中断发送给目标物理处理器。本申请提供的方案中,宿主机或虚拟机均可以直接访问寄存器,将用于触发虚拟中断的信息写入寄存器,从而将虚拟中断发送出去;因此相比于现有技术,本申请提供的方案不需要源物理处理器执行从虚拟机到宿主机的切换,或者执行从宿主机的用户态到宿主机的内核态的切换,从而减少了处理虚拟中断产生的切换开销,提高了芯片系统的性能。
附图说明
图1是本申请实施例提供的计算机设备的一结构示意图;
图2是本申请实施例提供的虚拟中断的类型示意图;
图3是本申请实施例提供的芯片系统的一结构示意图;
图4是本申请实施例提供的芯片系统的另一结构示意图;
图5是本申请实施例提供的虚拟时钟中断的一示意图;
图6是本申请实施例提供的在位虚拟处理器标识组的一示例示意图;
图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所示,计算机设备100包括硬件层112、宿主机层109和虚拟化层,虚拟化层包含虚拟机101和102。虚拟机的个数还可以更多或更少,在此只以两个为例。硬件层112包括处理器系统114、存储器113、通信接口115和中断控制器116。
虚拟机(virtual machine,VM)是通过虚拟化软件在计算机设备上模拟出的。虚拟机(图1中101和102)上可以安装客户操作系统(guest operating system,guest OS)(图1中105和106),客户操作系统上运行有一个或多个应用程序(图1中103和104)。虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,就像是在真正的计算机中工作。
虚拟处理器(如图1中107和108):在虚拟化技术下,代表以共享或者分片方式提供给虚拟计算机使用的处理单元,例如虚拟CPU(virtual central processing unit,vCPU)。一台虚拟计算机可以有一个或多个虚拟处理器为其服务,当存在多个虚拟处理器时,通常有一个虚拟处理器为主虚拟处理器,其他为从虚拟处理器。虚拟机包含的虚拟存储器等其他虚拟硬件资源在图1中未示出。虚拟处理器是通过虚拟化软件虚拟出的,它的运行实际是宿主机的处理器或物理核读取并运行软件程序实现的,例如一个物理核读取软件程序并在该物理核的硬件辅助虚拟化的特定模式(例如x86的non-Root模式)下运行该软件程序以实现一个虚拟处理器。一台虚拟机的多个虚拟处理器可以位于不同的物理核上。需要注意的是,本申请各个实施例提到的vCPU是虚拟处理器的一种可选的具体实现方式。各个实施例中提到的“vCPU”可以替换为“虚拟处理器”来理解。
虚拟处理器陷入(trap in)和虚拟处理器陷出(trap out):虚拟化系统包括两种模式:宿主模式(host mode)与客户模式(guest mode)。宿主模式也可以称为是host的特权级,如:host的用户态或host的内核态,客户模式也可以称为是VM的特权级,如:VM的用户态或VM的内核态。当一个物理处理器进入客户模式,叫做陷入(虚拟),陷入的过程也可以理解为是物理处理器从运行宿主机切换到运行虚拟机;当该物理处理器离开客户模式,叫陷出(虚拟),陷出的过程也可以理解为是物理处理器从运行虚拟机切换到运行宿主机。陷出后物理处理器将暂时不执行该虚拟处理器的代码,所以此时可以理解为虚拟处理器没有运行。物理处理器上运行虚拟机时,会运行该虚拟机的一个虚拟处理器,一个虚拟机可以有多个虚拟处理器,一个物理处理器在一个时刻只运行该虚拟机的一个虚拟处理器,属于同一个虚拟机的多个虚拟处理器可以采用分时复用的方式在该物理处理器上运行,如:在物理处理器1上先运行虚拟机1的vCPU1,物理处理器1结束该vCPU1的运行后,可以再运行该虚拟机1的vCPU2。同属于一个虚拟机的多个vCPU也可以运行在不同的物理处理器上,一个时刻可以在不同的物理处理器上运行不同的vCPU,如:在物理处理器1上运行虚拟机1的vCPU1,在物理处理器2上运行虚拟机1的vCPU2。宿主机(host)层109作为管理层,用以完成硬件资源的管理、分配,为虚拟机提供各种虚拟的硬件资源,如虚拟处理器(107,108)、虚拟内存、虚拟磁盘、虚拟网卡等,还可以实现虚拟机的调度和隔离等。在一些实现方式下,宿主机层109可以包括宿主机操作系统111和虚拟监控装置,例如虚拟机监视器110(virtualmachine 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:设置在触发中断请求的硬件和处理器之间,主要用于收集各个硬件产生的中断请求,并按照一定的优先级或其他规则发送给处理器。例如高级可编程中断控制器(advanced programmable interrupt controller,APIC)。
中断(interruption)是指暂停当前程序的指令转而执行中断服务程序。中断可以包括虚拟中断和物理中断,虚拟中断指的是计算机设备中的硬件设备、宿主机、该虚拟机的时钟或虚拟机的虚拟处理器(virtual central processing unit,vCPU)等通知给虚拟机(virtual machine,VM)的中断,产生该虚拟中断的硬件设备可以是计算机设备中的磁盘、网卡、声卡、鼠标、硬盘等。物理中断指的是硬件设备通知给物理处理器的中断。物理中断是由宿主机处理,而虚拟中断是由虚拟机处理。
中断服务程序(interrupt service routine,ISR),还可称为中断处理函数,是用于处理中断请求的程序。当处理器接收到中断请求时,暂时停止当前程序的执行转而执行该中断请求对应的中断服务程序。
存储器113提供的存储空间(地址空间)被划分给虚拟机和宿主机使用。宿主机物理地址(host physical address,HPA)指的是本地主机(宿主机)可以使用的物理地址空间;宿主机虚拟地址(host virtual address,HVA)是本地主机(宿主机)可使用的虚拟地址空间。客户机物理地址(guest physical address,GPA)是虚拟机的客户操作系统可使用的物理地址空间;客户机虚拟地址(guest virtual address,GVA)是虚拟机的客户操作系统可使用的虚拟地址空间。
计算机设备100可以为物理设备,例如服务器或终端设备。终端设备可以是具有无线连接功能的手持式设备、或连接到无线调制解调器的其他处理设备。例如,可以为移动电话、计算机(personal computer,PC)、平板电脑、个人数码助理(personal digitalassistant,PDA)、移动互联网设备(mobile Internet device,MID)、可穿戴设备和电子书阅读器(e-book reader)等;也可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动设备。
上述计算机设备100中的虚拟机或宿主机可以发送用于触发虚拟中断的信息,进而由本申请实施例提供的芯片系统来完成相应的处理虚拟中断的过程。本申请实施例提供的芯片系统可以包括上述图1中的中断控制器和处理器系统,也可以包括上述图1中的中断控制器或处理器系统。
目标物理处理器目标物理处理器本申请实施例中,如图2所示,虚拟中断可以包括虚拟局部中断(virtual local interrupt),虚拟软件中断(virtual softwareinterrupt),虚拟设备中断(virtual device interrupt)和直通外设中断(directperipheral interrupt)。其中,虚拟局部中断指由虚拟机模拟的例如:虚拟计时器、虚拟鼠标等虚拟局部设备发出的中断或虚拟机的某个vCPU的局部设备发出的中断,例如:虚拟机的某个vCPU的计时器发出的中断,计时器发出的中断也称时钟中断,时钟中断指的是计时器通过计时的方式,在达到虚拟机配置的时间点时计时器所发出的中断。虚拟软件中断指由软件触发的,通常指虚拟机的一个vCPU发给该虚拟机的另一个vCPU的中断,如图2中的同属于一个虚拟机的第一vCPU向第二vCPU发出的中断,一个虚拟机可以有多个vCPU,这些vCPU在一个时刻可以运行在不同的物理处理器上来执行虚拟机的不同任务,当不同的vCPU之间所执行的任务有依赖关系或需要调度时,就会发生虚拟软件中断。虚拟设备中断指由宿主机模拟硬件设备触发的中断,例如宿主机模拟虚拟机磁盘控制器或模拟其他硬件设备产生的中断。直通外设中断指由直通给虚拟机的外部设备触发的,例如直通给虚拟机的显卡产生的中断。
上述四种虚拟中断中,对虚拟局部中断,虚拟软件中断和虚拟设备中断的处理过程需要运行虚拟机的物理处理器由虚拟机切换到宿主机,或者由宿主机的用户态切换到宿主机的内核态,带来了较大的切换开销。为此,本申请实施例提供一种芯片系统,在对处理虚拟中断的过程中,不需要运行虚拟机的物理处理器从虚拟机切换到宿主机,或者由宿主机的用户态切换到宿主机的内核态,可以节省切换开销。下面结合附图介绍本申请实施例提供的芯片系统。
如图3所示,本申请实施例提供的芯片系统包括:源物理处理器、控制装置、中间装置和发送装置以及目标物理处理器,源物理处理器用于运行宿主机或虚拟机,控制装置包括寄存器,寄存器用于接收用于触发虚拟中断的信息,该用于触发虚拟中断的信息可以来自于宿主机或虚拟机;控制装置用于:将寄存器中的用于触发虚拟中断的信息发送给中间装置;中间装置用于:根据用于触发虚拟中断的信息触发虚拟中断,并将虚拟中断发送给发送装置;发送装置用于:接收来自于中间装置的虚拟中断,并将虚拟中断发送给目标物理处理器。
该芯片系统可以应用于上述图1所示的计算机设备中,该芯片系统可以是上述图1中的中断控制器或处理器系统。
本申请实施例提供的芯片系统可以是片上系统(system on chip,SOC),源物理处理器和目标物理处理器可以分别是一个处理单元(processing unit。源物理处理器或目标物理处理器可以为物理核,并位于同一个处理器中;源物理处理器和目标物理处理器也可以是位于同一个芯片系统中的不同的处理器。控制装置、中间装置和发送装置都可以是通过硬件电路来实现的。控制装置和发送装置可以部署在该多核处理器中,与源物理处理器和目标物理处理器耦合。中间装置可以部署在该多核处理器中,也可以部署在与多核处理器耦合的外围设备/外围组件上。片上系统可以包括多核处理器和与多核处理器耦合的外围设备/外围组件。芯片系统中的任一个物理处理器既可以作为源物理处理器,也可以作为目标物理处理器。
本申请中使用了源物理处理器和目标物理处理器,需要说明的是,源物理处理器和目标物理处理器可以是一个多核处理器中的两个物理核,也可以是位于不同处理器中的两个物理核。在一种实现方式中,源物理处理器和目标物理处理器可以是同一个物理实体,例如:虚拟局部中断的场景中,源物理处理器和目标物理处理器可以是同一物理处理器。
本申请中,控制装置中可以包括至少一个寄存器,其中,可以是每个寄存器用于接收一种类型的用于触发虚拟中断的信息。如:包括三个寄存器,一个寄存器用于接收用于触发虚拟局部中断的信息,一个寄存器用于接收用于触发虚拟软件中断的信息,一个寄存器用于接收用于触发虚拟设备中断的信息。当然,该控制装置中,针对虚拟中断也可以只配置一个寄存器,用于触发每种类型的虚拟中断的信息不同,可以通过寄存器接收的信息来识别虚拟中断的类型。
中间装置可以有一个,也可以有多个。发送装置可以是每个物理处理器有一个发送装置,也可以是多个物理处理器共用一个发送装置。
本申请实施例提供的芯片系统,在控制装置中设置专用于处理虚拟中断的寄存器,这样,处于用户态的宿主机或虚拟机可以直接将用于触发虚拟中断的信息写入该寄存器中,控制装置可以将该用于触发虚拟中断的信息发送给中间装置,由中间装置触发虚拟中断,并且,中间装置将该虚拟中断发送给发送装置,由发送装置将该虚拟中断发送给目标物理处理器,不需要源物理处理器执行从虚拟机到宿主机的切换,或者执行从宿主机的用户态到宿主机的内核态的切换,从而减少了处理虚拟中断产生的切换开销,提高了芯片系统的性能。
上述图3中,中间装置可以是虚拟局部中断产生器件,也可以是路由装置,若虚拟中断是虚拟局部中断,则该中间装置可以称为局部中断产生器件(如:计时器),若虚拟中断是虚拟软件中断或虚拟设备中断,则该中间装置可以称为路由装置。
发送装置前述图2中介绍了虚拟中断的四种类型,下面结合图4,以控制装置中包括寄存器1、寄存器2和寄存器3为例,介绍处理这四种类型的虚拟中断的过程,其中,寄存器1用于接收用于触发虚拟设备中断的信息,寄存器2用于接收用于触发虚拟软件中断的信息,寄存器3用于接收用于触发虚拟局部中断的信息。
图4所示的芯片系统中,源物理处理器用于运行宿主机或虚拟机,宿主机或虚拟机都可以有权限级一和权限级二,其中,权限级一可以是用户态,权限级二可以是内核态。在不同的虚拟化架构中,权限级一和权限级二所对应的状态可能会有不同,对此,本申请实施例中不作限定。
本申请图4中用四种不同的线条标示了四种类型的虚拟中断,其中,用数字1标记的线条表示的是处理虚拟局部中断的过程,用数字2标记的线条表示的是处理虚拟软件中断的过程,用数字3标记的线条表示的是处理虚拟设备中断的过程,用数字4标记的线条表示的是处理直通外设中断的过程。
1、虚拟局部中断。
如图4所示,在处理虚拟局部中断过程中,涉及到的寄存器为寄存器3,中间装置可以称为局部中断产生器件。因为虚拟局部中断是核内中断,所以,目标物理处理器和源物理处理器为同一物理处理器,发送装置与源物理处理器对应。
寄存器用于:接收虚拟机写入的用于触发虚拟局部中断的信息。
局部中断产生器件用于:根据该用于触发虚拟局部中断的信息产生虚拟局部中断。
发送装置用于:将虚拟局部中断发送给虚拟机的第一虚拟处理器vCPU,第一vCPU运行在源物理处理器上。
本申请实施例提供的处理虚拟局部中断的过程,一个物理处理器一个时刻只会运行一个虚拟机的一个vCPU,将虚拟局部中断发送给该vCPU,即可完成将该虚拟局部中断发送给虚拟机的操作。上述图4中的局部中断产生器件可以为计时器,该虚拟局部中断可以为时钟中断。在时钟中断的场景,该过程的实现可以参阅图5进行理解。如图5所示,虚拟机会将中断时间写入控制装置中,(该过程可以参阅图4中的第三寄存器进行理解),控制装置会将该中断时间写入计时器中,计时器随之启动,预设时间达到后计时器就发出时钟中断,发送装置接收到该时钟中断后,判断虚拟机的第一vCPU在运行,则将该时钟中断发送给第一vCPU。
由上述图4和图5的过程可知,处理该虚拟局部中断的过程不需要源物理处理器执行从虚拟机到宿主机的切换,从而减少了处理虚拟局部中断产生的切换开销,提高了芯片系统的性能。
2、虚拟软件中断。
如图4所示,在处理虚拟软件中断过程中,涉及到的寄存器为寄存器2,中间装置可以称为路由装置。源物理处理器上运行虚拟机的第一vCPU,目标物理处理器上运行虚拟机的第二vCPU。
寄存器用于:接收第一vCPU写入的第二vCPU的标识。
控制装置用于:从寄存器读取第二vCPU的标识,并获取虚拟机的标识;以及,将虚拟机的标识和第二vCPU的标识发送给中间装置。
中间装置用于:根据虚拟机的标识和第二vCPU的标识,从第一对应关系中确定与虚拟机的标识和第二vCPU的标识对应的目标物理处理器;其中,第一对应关系用于记录目标物理处理器、目标处理器上运行的第二vCPU以及虚拟机之间的对应关系;将虚拟软件中断发送给与目标物理处理器对应的发送装置。
发送装置用于:将虚拟软件中断发送给运行于目标物理处理器的第二vCPU。
本申请实施例处理虚拟软件中断的过程中,控制装置可以从专门用于存储源物理处理器上所运行的虚拟机的标识的寄存器中获取该虚拟机的标识。因为,每个虚拟机都可以有多个vCPU,不同虚拟机的vCPU的标识可能是相同的,所以,控制装置需要向中间装置发送该虚拟机的标识和第二vCPU的标识。中间装置上可以存储上述第一对应关系,该第一对应关系可以位于在位vCPU标识组中,该在位vCPU标识组中记录有该芯片系统中的每个物理处理器、每个物理处理器运行的vCPU,以及在运行的vCPU所属的虚拟机之间的对应关系,本申请可以通过查找在位vCPU标识组的方式来目标物理处理器。由上述描述可知,处理该虚拟软件中断的过程不需要源物理处理器执行从虚拟机到宿主机的切换,从而减少了处理虚拟软件中断产生的切换开销,提高了芯片系统的性能。
上述在位vCPU标识组可以参阅图6进行理解。图6所表示的含义为:物理处理器1上运行着VM1的vCPU1,物理处理器2上运行着VM1的vCPU2,物理处理器3上运行着VM2的vCPU1,物理处理器4上运行着VM2的vCPU2。若路由装置从控制装置接收到的是VM1的标识和vCPU2的标识,则可以根据图6所示的在位vCPU标识组可以确定vCPU2在物理处理器2上运行,即可将该虚拟软件中断发送给该物理处理器2对应的发送装置,由物理处理器2对应的发送装置将该虚拟软件中断发送给运行在物理处理器2上的vCPU2。
若经过上述在位vCPU标识组没有查找到第二vCPU,则表示第二vCPU目前没有运行,则路由装置可以将该虚拟软件中断发送给源物理处理器的发送装置,由源物理处理器的发送装置将该虚拟软件中断发送给宿主机,待第二vCPU上线运行后,由宿主机将该虚拟软件中断发送给该第二vCPU。
因为,物理处理器在不同的时间可能运行不同的vCPU,所以,在位vCPU标识组中的对应关系是变化的,该在位vCPU标识组上述路由装置中的在位vCPU标识组可以是源物理处理器上的宿主机来管理的。
本申请实施例处理虚拟软件中断的过程可以参阅图7进行理解。源物理处理器上运行虚拟机,虚拟机的第一vCPU在源物理处理器上运行。第二vCPU运行于另一物理处理器上,第一vCPU要向第二vCPU发送虚拟软件中断,则虚拟机的第一vCPU向控制装置的寄存器2写入第二vCPU的标识。控制装置查找到虚拟机的标识,然后将该虚拟机的标识和第二vCPU的标识发送给路由装置。路由装置根据虚拟机的标识和第二vCPU的标识查找例如图6中所示的在位vCPU标识组,确定出虚拟机的标识和第二vCPU的标识所对应的物理处理器为目标物理处理器,则路由装置将虚拟软件中断发送给目标物理处理器对应的发送装置,由目标物理处理器对应的发送装置将该虚拟软件中断发送给第二vCPU,也就是发送给在目标物理处理器上运行的虚拟机。
由上述图4、图6和图7的过程可知,本申请实施例提供的虚拟软件中断的处理过程,不需要源物理处理器执行从虚拟机到宿主机的切换,从而减少了处理虚拟软件中断产生的切换开销,提高了芯片系统的性能。
3、虚拟设备中断。
如图4所示,在处理虚拟设备中断过程中,涉及的寄存器为寄存器1,中间装置为路由装置。源物理处理器上运行宿主机,且该宿主机处于用户态。
寄存器用于:接收宿主机写入的目标中断号和虚拟机的标识,目标中断号为宿主机模拟硬件设备时所触发的中断的标识。
控制装置用于:从寄存器读取目标中断号和虚拟机的标识,并将虚拟机的标识和目标中断号发送给中间装置。
中间装置用于:根据虚拟机的标识和目标中断号,在第二对应关系中查找与虚拟机的标识和目标中断号对应的虚拟机的第一vCPU的标识,第二对应关系用于记录虚拟机、目标中断号和第一vCPU之间的对应关系;根据虚拟机的标识和第一vCPU的标识,从第三对应关系中确定与虚拟机的标识和第一vCPU的标识对应的目标物理处理器;其中,第三对应关系用于记录目标物理处理器、目标处理器上运行的第一vCPU以及虚拟机之间的对应关系;将虚拟设备中断发送给与目标物理处理器对应的发送装置。
发送装置用于:将虚拟设备中断发送给运行于目标物理处理器的第一vCPU。
本申请实施例中,虚拟设备中断是处于用户态的宿主机模拟硬件设备触发的中断。硬件设备的类型可以有多种,每种类型的硬件设备的中断号不相同,若宿主机模拟的是磁盘,则该目标中断号为磁盘的中断号。因为宿主机所管理的虚拟机可以有多个,所以,宿主机需要向寄存器中写入该虚拟机的标识和目标中断号。第二对应关系可以位于中断亲和性表中。该中断亲和性表可以是虚拟机配置的,所以,针对每个虚拟机都有一个中断亲和性表。这样,就可以根据该虚拟机的标识找到该虚拟机的中断亲和性表,然后,在根据该目标中断号从该虚拟机的中断亲和性表中确定出对应的vCPU,目标中断号是10,若中断亲和性表中,中断号10与vCPU ID1对应,则可以确定目标中断号对应的vCPU ID为1。路由装置确定vCPU ID为1后,可以根据在位vCPU标识组查找到该vCPU ID1对应的物理处理器,在位vCPU标识组的含义可以参阅前述虚拟软件中断部分的描述进行理解,第三对应关系也可以参考前述第一对应关系进行理解。
下面参阅表1理解虚拟机的中断亲和性表。
表1:图4中的虚拟机的中断亲和性表
中断号 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。若两个物理处理器上运行的是同一个虚拟机,那么两个物理处理器对应的基地址寄存器中的地址可以是相同的,所指向的中断亲和性表可以是同一张表。
这样,在处理虚拟设备中断的过程中,虚拟机向寄存器1中写入目标中断号,控制装置从专门用于存储源物理处理器上运行的虚拟机的寄存器中读取当前在运行的虚拟机的标识,然后,控制装置将该目标中断号和虚拟机的标识发送给路由装置。路由装置根据该虚拟机的标识确定对应的中断亲和性表,再使用目标中断号从该中断亲和性表中查找到对应的vCPU的标识,若目标中断号是10,则可以确定对应的vCPU的标识为1。路由装置确定vCPU的标识为1后,可以根据图6所示的在位vCPU标识组查找到该vCPU 1对应的处理器为物理处理器1。路由装置可以将虚拟设备中断发送给物理处理器1对应的发送装置,由该发送装置将该虚拟设备中断发送给vCPU1对应的第一vCPU。
若经过上述在位vCPU标识组没有查找到第一vCPU,则表示第一vCPU目前没有运行,则路由装置可以将该虚拟软件中断发送给源物理处理器的发送装置,由源物理处理器的发送装置将该虚拟软件中断发送给宿主机,待第一vCPU上线运行后,由宿主机将该虚拟软件中断发送给该第一vCPU。
由上述图4、表1、图8和图6的过程可知,本申请实施例提供的虚拟设备中断的处理过程,不需要源物理处理器执行从宿主机的用户态到宿主机的内核态的切换,从而减少了处理虚拟设备中断产生的切换开销,提高了芯片系统的性能。
4、直通外设中断。
如图4所示,直通外设中断是由与虚拟机直通的硬件设备触发的中断,如与虚拟机直通的显卡,中间装置可以称为路由装置,该直通外设中断通过路由装置和发送装置即可完成该类型的中断处理过程,该过程包括:
中间装置用于:接收硬件设备触发的直通外设中断;根据直通外设中断的物理中断号,从虚拟中断表中查找对应的虚拟机的标识和虚拟中断号,虚拟中断表中记录有物理中断号与虚拟机的标识和虚拟中断号的对应关系;根据虚拟机的标识确定对应的中断亲和性表,从中断亲和性表中确定虚拟机的标识和虚拟中断号对应的目标虚拟处理器vCPU的标识,中断亲和性表中记录虚拟中断号与虚拟处理器的对应关系;根据目标vCPU的标识,从在位vCPU标识组中确定目标vCPU的标识对应的目标物理处理器;将直通外设中断发送给目标物理处理器对应的发送装置。
发送装置用于:将直通外设中断发送给目标物理处理器上运行的虚拟机。
本申请实施例在处理直通外设中断的过程中,会依次使用到虚拟中断表、中断亲和性表和在位vCPU标识组,中断亲和性表和在位vCPU标识组可以参阅前面的描述进行理解,下面介绍虚拟中断表。
虚拟中断表维护物理中断号与虚拟机的标识和虚拟中断号的对应关系,输入一个物理中断号,可以输出虚拟机的标识和虚拟中断号。该虚拟中断表可以参阅表2进行理解。
表2:虚拟中断表
物理中断号 虚拟机的标识 虚拟中断号
100 1 10
200 2 20
300 3 30
400 4 40
如表1所示,输入一个物理中断号100,可以输出虚拟机的标识1和虚拟中断号10。本申请中的虚拟中断表可以存储在路由装置中,也可以存储在内存中,通过类似于基地址寄存器的另一寄存器来指示该虚拟中断表在内存中的位置。
该处理直通外设中断的过程中,如图9所示,路由装置接收直通外设发送的物理中断号,通过该物理中断号在虚拟中断表中查找对应的虚拟机的标识和虚拟中断号,例如:输入一个物理中断号100,可以输出虚拟机的标识1和虚拟中断号10。然后,根据虚拟机的标识1和虚拟中断号10查找表1的中断亲和性表,查找到对应的vCPU的标识,如:查找到vCPU的标识为1。再进一步根据该vCPU1从图6所示的在位vCPU标识组中查找对应的物理处理器,如:查找到物理处理器1,则路由装置可以将直通外设中断发送给物理处理器1对应的发送装置,由该发送装置将该直通外设中断发送给vCPU1对应的第一vCPU。
若经过上述在位vCPU标识组没有查找到第一vCPU,则表示第一vCPU目前没有运行,则路由装置可以将该虚拟软件中断发送给源物理处理器的发送装置,由源物理处理器的发送装置将该虚拟软件中断发送给宿主机,待第一vCPU上线运行后,由宿主机将该虚拟软件中断发送给该第一vCPU。
由上述图4、表2、表1、图6和图9的过程可知,本申请实施例提供的直通外设中断的处理过程,通过三个对应关系的查找就可以完成发送过程,提高了直通外设中断处理的灵活性。
处理上述四种类型的虚拟中断的过程中,发送装置在接收来自中间装置的上述四种类型的虚拟中断的任意一种后,都进行发送给对应的目标物理处理器,该发送过程可以是将上述几种类型的虚拟中断写入待处理(pending)寄存器中,该待处理寄存器用于接收目标物理处理器接下来所要执行的命令,将该虚拟中断写入到该待处理寄存器中,那么该目标物理处理器接下来就会执行该虚拟中断,这样就可以打断当前在执行的流程,若目标vCPU正在执行,打断目标vCPU,将该中断发送给目标vCPU。若宿主机正在执行,打断宿主机,将该中断直接发送给正在运行的宿主机,待相应的目标vCPU上线后,再由宿主机将该中断传递给目标vCPU,目标vCPU可以是前述描述的第一vCPU或第二vCPU,这样,本申请实施例提供的方案就可以屏蔽现有方案中切换到宿主机的动作,减少了目标物理处理器从虚拟机到宿主机的切换开销。
本申请实施例提供的芯片系统可以应用于RISC-V微架构上,其中,RISC为精简指令集计算(reduced instruction set computing),如图10所示为芯片系统在RISC-V上的一结构示意图。
如图10所示,芯片系统包括用于与物理处理器交互的控制装置和发送装置和中断路由器。中断路由器包括上述实施例所描述的路由装置。
图10中,RISC-V-CPU表示RISC-V架构中的中央处理器单元,V=0表示宿主机,V=1表示虚拟机,HU-mode表示宿主机的用户模式,HS-mode表示宿主机的内核模式,VU-mode表示虚拟机的用户模式,VS-mode表示虚拟机的内核模式。监管器生成处理器间中断逻辑(supervisor generate inter-processor interrupt,sgenipi)用于触发虚拟软件中断的信息,监管器时间比较逻辑(supervisor time compare,stimecmp)用于触发虚拟局部中断的信息的寄存器。在V=1时,也就是RISC-V-CPU上运行虚拟机时,可以通过sgenipi发送用于触发虚拟软件中断的信息到控制装置的虚拟监管器生成处理器间中断(virtualsupervisor 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)寄存器,每个对应系统内的一个物理处理器,用于记录该物理处理器上正在运行的vCPU的vCPU的标识和所属的虚拟机的标识。
在上述图10所示的RISC-V架构中,处理虚拟时钟中断的过程可以参阅图11进行理解。
如图11所示,虚拟机利用stimecmp向vstimecmp寄存器写入中断时间,控制装置将下次虚拟时钟中断触发的时间写入虚拟机专用的时钟设备。中断时间到达,该虚拟机专用的时钟设备触发虚拟时钟中断。该虚拟时钟中断发送给发送装置。
发送装置根据当前CPU的虚拟化状态V判断,若V=1,直接给VS-mode的虚拟机发送局部中断,若V=0,发送给HS-mode的宿主机,由宿主机代为处理,即在虚拟机上线后,宿主机再将该虚拟时钟中断传递给虚拟机。
在上述图10所示的RISC-V架构中,处理虚拟软件中断的过程可以参阅图12进行理解。
如图12所示,虚拟机的一个vCPU(该场景中可以称为源vCPU)运行在CPU1上,该CPU1可以为前述实施例中的源物理处理器,虚拟机的源vCPU将目标vCPU的标识写入sgenipi,通过该sgenipi将目标vCPU的标识写入控制装置中的vsgenipi寄存器,控制装置获取到虚拟机的标识,并将虚拟机的标识和目标vCPU的标识(vhartid:RISC-V中表示vCPU的标识)发送给中断路由器,中断路由器查找ifmapx,包含该VMID和vhartid的ifmapx寄存器的序号x即为对应的物理处理器的标识(mhartid:RISC-V中表示物理处理器的标识)。该场景中,该物理处理器的标识为图12中的CPU2,该CPU2也可以参阅前述实施例中的目标物理处理器进行理解。中断路由器向上述mhartid的物理处理器的发送装置发送虚拟软件中断,该发送装置判断当前物理处理器的虚拟化状态,若V=1,发送装置直接给虚拟机发送该虚拟软件中断,若V=0,发送装置将该虚拟软件中断发送给宿主机代为处理,即在虚拟机上线后,宿主机再将该虚拟软件中断发送给虚拟机。
在上述图10所示的RISC-V架构中,处理虚拟设备中断的过程可以参阅图13进行理解。
如图13所示,处于用户态的宿主机向ugenvsei写入虚拟机的标识和虚拟中断号。控制装置将虚拟机的标识和虚拟中断号发送给中断路由器。中断路由器查找vtblbasex寄存器,找到具有该虚拟机的标识的vtblbasex寄存器中的一个。查找该寄存器指向的内存所保存的中断亲和性表。从中断亲和性表中获得由虚拟机定义的处理该中断的vCPU的vhartid。中断路由器查找ifmapx,找到具有该VMID和vhartid的寄存器对应的物理处理器的序号x,该x为目标物理处理器的mhartid。中断路由器向上述mhartid的物理处理器的发送装置发送虚拟设备中断,发送装置判断当前CPU的虚拟化状态,若V=1,直接给虚拟机发送设备中断,若V=0,发送给宿主机代为处理,即在虚拟机上线后,宿主机再将该虚拟设备中断发送给虚拟机。
在上述图10所示的RISC-V架构中,处理虚拟设备中断的另一过程可以参阅图14进行理解。
如图14所示,宿主机向ugenvsei写入虚拟机的标识和虚拟中断号。控制装置将虚拟机的标识和虚拟中断号发送给中断路由器。中断路由器没有实现vtblbasex,默认将虚拟中断发送给具有该虚拟机的任意的vCPU。然后,中断路由器查找ifmapx,找到具有该虚拟机的标识的寄存器对应的物理处理器的序号x,该x为目标物理处理器的mhartid。中断路由器向上述mhartid的物理处理器的发送装置发送虚拟设备中断,发送装置判断当前物理处理器的虚拟化状态,若V=1,直接给虚拟机发送虚拟设备中断,若V=0,发送给宿主机代为处理,即在虚拟机上线后,宿主机再将该虚拟设备中断发送给虚拟机。
在上述图10所示的RISC-V架构中,处理直通外设中断的过程可以参阅图15进行理解。
如图15所示,与虚拟机直接通信的硬件设备触发直通外设中断,中断路由器查找vhlimap指向的虚拟中断表,找出该中断直通给的虚拟机的虚拟机的标识,以及直通后虚拟机内认为的该虚拟中断号。中断路由器查找vtblbasex寄存器,找到具有该VM ID的vtblbasex寄存器中的一个,查找该寄存器指向的内存所保存的虚拟中断亲和性表。从中断亲和性表中获得由虚拟机定义的处理该中断的vCPU的vhartid。中断路由器查找ifmapx,找到具有该VMID和vhartid的寄存器对应的物理处理器的序号x,该x为目标物理处理器的mhartid。中断路由器向上述mhartid的物理处理器的发送装置发送直通外设中断,发送装置判断当前CPU的虚拟化状态,若V=1,直接给虚拟机发送直通外设中断,若V=0,发送给宿主机代为处理,即在虚拟机上线后,宿主机再将该直通外设中断发送给虚拟机。
本申请实施例提供的上述方案,通过控制装置,中间装置、发送装置实现虚拟局部中断从局部中断设备到vCPU全程不陷出到宿主机。通过控制装置,路由装置,发送装置实现虚拟软件中断无需虚拟机和宿主机之间的软件配合,从发送端vCPU到接收端vCPU全程不陷出到宿主机。通过控制装置,路由装置,发送装置实现虚拟设备中断从宿主机模拟逻辑到接收端宿主vCPU全程不切换上下文/陷出到宿主机。因此,本申请实施例提供的方案可以加速虚拟机I/O,时钟,调度等方面的性能,仿真数据表明采用本方案处理虚拟局部中断,Redis有80%提升。处理虚拟软件中断有6%提升。
以上描述了通过硬件电路的方式实现的处理虚拟中断的过程,本申请实施例提供的处理虚拟中断的过程还可以通过软件的方式来实现,该软件实现的过程也可以结合在上述的芯片系统中,该芯片系统包括源物理处理器、控制装置、中间装置和发送装置,控制装置包括寄存器;该寄存器用于接收用于触发虚拟中断的信息,关于控制装置、中间装置和发送装置的功能可以通过软件代码的形式来实现,下面结合附图进行介绍。
如图16所示,本申请实施例提供的处理虚拟中断的方法的一实施例包括:
101、控制装置从寄存器中读取用于触发虚拟中断的信息。
该用于触发虚拟中断的信息来源于运行于源物理处理器中的宿主机或虚拟机。
102、控制装置将用于触发虚拟中断的信息发送给中间装置,对应地,中间装置接收该用于触发虚拟中断的信息。
103、中间装置根据用于触发虚拟中断的信息触发虚拟中断。
104、中间装置将虚拟中断发送给发送装置,对应地,发送装置接收虚拟中断。
105、发送装置将虚拟中断发送给目标物理处理器。本申请实施例提供的方案,在控制装置中设置专用于处理虚拟中断的寄存器,这样,处于用户态的宿主机或虚拟机可以直接将用于触发虚拟中断的信息写入该寄存器中,控制装置可以将该用于触发虚拟中断的信息发送给中间装置,由中间装置触发虚拟中断,并且,中间装置将该虚拟中断发送给发送装置,由发送装置将该虚拟中断发送给目标物理处理器。本申请提供的方案中,宿主机或虚拟机均可以直接访问寄存器,将用于触发虚拟中断的信息写入寄存器,从而将虚拟中断发送出去;因此相比于现有技术,本申请提供的方案不需要源物理处理器执行从虚拟机到宿主机的切换,或者源物理处理器执行从宿主机的用户态到宿主机的内核态的切换,从而减少了处理虚拟中断产生的切换开销,提高了芯片系统的性能。
该虚拟中断为虚拟局部中断时,目标物理处理器和源物理处理器为同一物理处理器;寄存器接收虚拟机写入的用于触发虚拟局部中断的信息。
中间装置根据该用于触发虚拟局部中断的信息产生虚拟局部中断。
发送装置将将虚拟局部中断发送给虚拟机的第一虚拟处理器vCPU,第一vCPU运行在源物理处理器上。
该虚拟中断为虚拟软件中断时,上述步骤101从寄存器中读取的用于触发虚拟中断的信息包括虚拟机的第一vCPU写入寄存器的第二vCPU的标识,第二vCPU为运行于目标物理处理器上的虚拟机的vCPU。
步骤102之前,控制装置获取虚拟机的标识;则步骤103具体包括将虚拟机的标识和第二vCPU的标识发送给中间装置。
步骤103具体包括中间装置根据虚拟机的标识和第二vCPU的标识,从第一对应关系中确定与虚拟机的标识和第二vCPU的标识对应的目标物理处理器;其中,第一对应关系用于记录目标物理处理器、目标处理器上运行的第二vCPU以及虚拟机之间的对应关系;触发虚拟软件中断。
步骤104包括:中间装置将虚拟软件中断发送给与目标物理处理器对应的发送装置。
步骤105包括:发送装置将虚拟软件中断发送给运行于目标物理处理器的第二vCPU。
该虚拟中断为虚拟设备中断时,上述步骤101从寄存器中读取的用于触发虚拟中断的信息包括宿主机写入寄存器的目标中断号和虚拟机的标识,目标中断号为宿主机模拟硬件设备时所触发的中断的标识。
步骤102包括:控制装置将虚拟机的标识和目标中断号发送给中间装置。
步骤103包括:中间装置根据虚拟机的标识和目标中断号,在第二对应关系中查找与虚拟机的标识和目标中断号对应的虚拟机的第一vCPU的标识,第二对应关系用于记录虚拟机、目标中断号和第一vCPU之间的对应关系;根据虚拟机的标识和第一vCPU的标识,从第三对应关系中确定与虚拟机的标识和第一vCPU的标识对应的目标物理处理器;其中,第三对应关系用于记录目标物理处理器、目标处理器上运行的第一vCPU以及虚拟机之间的对应关系;生成虚拟设备中断。
步骤104包括:中间装置将虚拟设备中断发送给与目标物理处理器对应的发送装置。
步骤105包括:发送装置将虚拟设备中断发送给运行于目标物理处理器的第一vCPU。
以上,通过软件的方式来实现的控制装置、中间装置以及发送装置的功能,可以参阅上述图2至图15所对应的实施例中的相应内容进行理解,此处不作重复赘述。
以上介绍了通过软件实现的处理虚拟中断的方法,下面结合附图介绍实现上述处理虚拟中断的方法的装置。
如图17所示,本申请实施例提供的控制装置20的一实施例包括:该控制装置20应用于芯片系统中,该芯片系统还包括源物理处理器、中间装置、发送装置以及目标物理处理器,源物理处理器用于运行宿主机或虚拟机,控制装置包括寄存器;寄存器用于接收用于触发虚拟中断的信息,该用于触发虚拟中断的信息来自于宿主机或虚拟机,该控制装置20包括:
读取单元201,用于从寄存器中读取用于触发虚拟中断的信息。
发送单元202,用于将读取单元201读取的用于触发虚拟中断的信息发送给中间装置,用于触发虚拟中断的信息用于中间装置触发虚拟中断,虚拟中断由发送装置发送给目标物理处理器。
可选地,虚拟中断为虚拟局部中断,目标物理处理器和源物理处理器为同一物理处理器,寄存器用于接收虚拟机写入的用于触发虚拟局部中断的信息;用于触发虚拟局部中断的信息用于使得中间装置触发虚拟局部中断,虚拟局部中断由发送装置发送给虚拟机的第一虚拟处理器vCPU,第一vCPU运行在源物理处理器上。
可选地,虚拟中断为虚拟软件中断,用于触发虚拟中断的信息包括虚拟机的第一VCPU写入寄存器的第二vCPU的标识,第二vCPU为运行于目标物理处理器上的虚拟机的vCPU;该控制装置20还包括处理单元203。
处理单元203,用于获取虚拟机的标识。
发送单元202,用于将虚拟机的标识发送给中间装置,虚拟机的标识和第二vCPU的标识用于中间装置确定目标物理处理器并触发虚拟软件中断,虚拟软件中断由发送装置发送给目标物理处理器的第二vCPU。
可选地,虚拟中断为虚拟设备中断,用于触发虚拟中断的信息包括宿主机写入寄存器的目标中断号和虚拟机的标识,目标中断号为宿主机模拟硬件设备时所触发的中断的标识;虚拟机的标识和目标中断号用于中间装置确定目标物理处理器并触发虚拟设备中断,虚拟设备中断由发送装置发送给目标物理处理器的第一vCPU。
如图18所示,本申请实施例提供的中间装置30的一实施例包括:该中间装置30应用于芯片系统中,该芯片系统还包括源物理处理器、控制装置、发送装置以及目标物理处理器,源物理处理器用于运行宿主机或虚拟机,控制装置包括寄存器;寄存器用于接收用于触发虚拟中断的信息,该用于触发虚拟中断的信息来自于宿主机或虚拟机,该中间装置30包括:
接收单元301,用于接收来自控制装置的用于触发虚拟中断的信息。
处理单元302,用于根据用于触发虚拟中断的信息触发虚拟中断。
发送单元303,用于将虚拟中断发送给发送装置,虚拟中断由发送装置发送给目标物理处理器。
可选地,虚拟中断为虚拟局部中断,目标物理处理器和源物理处理器为同一物理处理器,寄存器用于接收虚拟机写入的用于触发虚拟局部中断的信息;用于触发虚拟局部中断的信息用于触发虚拟局部中断,虚拟局部中断由发送装置发送给虚拟机的第一虚拟处理器vCPU,第一vCPU运行在源物理处理器上。
可选地,虚拟中断为虚拟软件中断,用于触发虚拟中断的信息包括虚拟机的第一vCPU写入寄存器的第二vCPU的标识,第二vCPU为运行于目标物理处理器上的虚拟机的vCPU。
处理单元302,用于根据虚拟机的标识和第二vCPU的标识,从第一对应关系中确定与虚拟机的标识和第二vCPU的标识对应的目标物理处理器;其中,第一对应关系用于记录目标物理处理器、目标处理器上运行的第二vCPU以及虚拟机之间的对应关系;触发虚拟软件中断,虚拟软件中断由发送装置发送给目标物理处理器的第二vCPU。
可选地,虚拟中断为虚拟设备中断,用于触发虚拟中断的信息包括宿主机写入寄存器的目标中断号和虚拟机的标识,目标中断号为宿主机模拟硬件设备时所触发的中断的标识。
处理单元302,用于根据虚拟机的标识和目标中断号,在第二对应关系中查找与虚拟机的标识和目标中断号对应的虚拟机的第一vCPU的标识,第二对应关系用于记录虚拟机、目标中断号和第一vCPU之间的对应关系;根据虚拟机的标识和第一vCPU的标识,从第三对应关系中确定与虚拟机的标识和第一vCPU的标识对应的目标物理处理器;其中,第三对应关系用于记录目标物理处理器、目标处理器上运行的第一vCPU以及虚拟机之间的对应关系;触发虚拟设备中断,虚拟设备中断由发送装置发送给目标物理处理器的第一vCPU。
可选地,该处理单元302,还用于根据虚拟机的标识查找到地址寄存器,根据地址寄存器中的地址从内存中获取第二对应关系,地址寄存器用于存储第二对应关系在内存中的地址以及虚拟机的标识。
如图19所示,本申请实施例提供的发送装置40的一实施例包括:该发送装置40应用于芯片系统中,该芯片系统还包括源物理处理器、中间装置、控制装置以及目标物理处理器,源物理处理器用于运行宿主机或虚拟机,控制装置包括寄存器;寄存器用于接收用于触发虚拟中断的信息,该用于触发虚拟中断的信息来自于宿主机或虚拟机,发送装置40包括:
接收单元401,用于接收来自于中间装置的虚拟中断。
发送单元402,用于将虚拟中断发送给目标物理处理器。
可选地,虚拟中断为虚拟局部中断,目标物理处理器和源物理处理器为同一物理处理器;发送单元402,用于将虚拟局部中断发送给虚拟机的第一虚拟处理器vCPU,第一vCPU运行在源物理处理器上。
可选地,虚拟中断为虚拟软件中断,用于触发虚拟中断的信息包括虚拟机的第一vCPU写入寄存器的第二vCPU的标识,第二vCPU为运行于目标物理处理器上的虚拟机的vCPU。
发送单元402,用于将虚拟软件中断发送给运行于目标物理处理器的第二vCPU。
可选地,虚拟中断为虚拟设备中断,用于触发虚拟中断的信息包括宿主机写入寄存器的目标中断号和虚拟机的标识,目标中断号为宿主机模拟硬件设备时所触发的中断的标识。
发送单元402,用于将虚拟设备中断发送给运行于目标物理处理器的第一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可以是外设部件互连标准(PeripheralComponent Interconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图20中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请的另一实施例中,还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当设备的处理器执行该计算机执行指令时,设备执行上述图16中的控制装置、中间装置或发送装置所执行的处理虚拟中断的方法。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;当设备的处理器执行该计算机执行指令时,设备执行上述图16中的控制装置、中间装置或发送装置所执行的处理虚拟中断的方法。
本申请另一实施例中还提供一种芯片系统,该芯片系统包括源物理处理器、控制装置和发送装置以及目标物理处理器。控制装置如前述图2至图15的实施例所描述的控制装置,发送装置如前述图2至图15的实施例所描述的发送装置。
在一可能实施例中,该芯片系统还可以包括如前述图2至图15的实施例所描述的中间装置。
在一可能实施例中,该芯片系统为一个处理器,源物理处理器和目标物理处理器是该处理器中的物理核,而控制装置位于该处理器中、与源物理处理器耦合的组件,发送装置是位于该处理器中、与目标物理处理器耦合的组件。可以理解的是,由于处理器中任一个物理核都可能作为虚拟中断的接收方,因此一个物理核可以即作为源物理处理器的角色,又承担目标物理处理器的角色。对应的,与该物理核耦合的可以既包括控制装置也包括发送装置。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以权利要求的保护范围为准。

Claims (37)

1.一种芯片系统,其特征在于,包括:源物理处理器、控制装置、中间装置、发送装置以及目标物理处理器,所述源物理处理器用于运行宿主机或虚拟机,所述控制装置包括寄存器,所述寄存器用于接收用于触发虚拟中断的信息,所述用于触发虚拟中断的信息来自于所述宿主机或所述虚拟机;
所述控制装置用于:将所述寄存器中的所述用于触发虚拟中断的信息发送给中间装置;
所述中间装置用于:根据所述用于触发虚拟中断的信息触发所述虚拟中断,并将所述虚拟中断发送给所述发送装置;
所述发送装置用于:接收来自于所述中间装置的所述虚拟中断,并将所述虚拟中断发送给所述目标物理处理器。
2.根据权利要求1所述的芯片系统,其特征在于,所述虚拟中断为虚拟局部中断,所述目标物理处理器和所述源物理处理器为同一物理处理器;
所述寄存器用于:接收所述虚拟机写入的用于触发所述虚拟局部中断的信息;
所述发送装置用于:将所述虚拟局部中断发送给所述虚拟机的第一虚拟处理器,所述第一虚拟处理器运行在所述源物理处理器上。
3.根据权利要求1所述的芯片系统,其特征在于,所述虚拟中断为虚拟软件中断,所述用于触发虚拟中断的信息包括所述虚拟机的第一虚拟处理器写入所述寄存器的第二虚拟处理器的标识,所述第二虚拟处理器为运行于所述目标物理处理器上的所述虚拟机的虚拟处理器;
所述控制装置用于:从所述寄存器读取所述第二虚拟处理器的标识,并获取所述虚拟机的标识;以及,将所述虚拟机的标识和所述第二虚拟处理器的标识发送给所述中间装置;
所述中间装置用于:
根据所述虚拟机的标识和所述第二虚拟处理器的标识,从第一对应关系中确定与所述虚拟机的标识和所述第二虚拟处理器的标识对应的所述目标物理处理器;其中,所述第一对应关系用于记录所述目标物理处理器、所述目标处理器上运行的第二虚拟处理器以及所述虚拟机之间的对应关系;
将所述虚拟软件中断发送给与所述目标物理处理器对应的所述发送装置;
所述发送装置用于:将所述虚拟软件中断发送给运行于所述目标物理处理器的所述第二虚拟处理器。
4.根据权利要求1所述的芯片系统,其特征在于,所述虚拟中断为虚拟设备中断,所述用于触发虚拟中断的信息包括所述宿主机写入所述寄存器的目标中断号和所述虚拟机的标识,所述目标中断号为所述宿主机模拟硬件设备时所触发的中断的标识;
所述控制装置用于:从所述寄存器读取所述目标中断号和所述虚拟机的标识,并将所述虚拟机的标识和所述目标中断号发送给所述中间装置;
所述中间装置用于:
根据所述虚拟机的标识和所述目标中断号,在第二对应关系中查找与所述虚拟机的标识和所述目标中断号对应的所述虚拟机的第一虚拟处理器的标识,所述第二对应关系用于记录所述虚拟机、所述目标中断号和所述第一虚拟处理器之间的对应关系;
根据所述虚拟机的标识和所述第一虚拟处理器的标识,从第三对应关系中确定与所述虚拟机的标识和所述第一虚拟处理器的标识对应的所述目标物理处理器;其中,所述第三对应关系用于记录所述目标物理处理器、所述目标处理器上运行的所述第一虚拟处理器以及所述虚拟机之间的对应关系;
将所述虚拟设备中断发送给与所述目标物理处理器对应的所述发送装置;
所述发送装置用于:将所述虚拟设备中断发送给运行于所述目标物理处理器的所述第一虚拟处理器。
5.根据权利要求4所述的芯片系统,其特征在于,所述中间装置包括地址寄存器,所述地址寄存器用于存储所述第二对应关系在内存中的地址以及所述虚拟机的标识;
所述中间装置还用于:根据所述虚拟机的标识查找到所述地址寄存器,根据所述地址寄存器中的地址从所述内存中获取所述第二对应关系。
6.一种控制装置,其特征在于,所述控制装置应用于芯片系统,所述芯片系统还包括源物理处理器、中间装置、发送装置以及目标物理处理器,所述源物理处理器用于运行宿主机或虚拟机,所述控制装置包括寄存器;所述寄存器用于接收用于触发虚拟中断的信息,所述用于触发虚拟中断的信息来自于所述宿主机或所述虚拟机;
所述控制装置用于:从所述寄存器中读取所述用于触发虚拟中断的信息,并将所述用于触发虚拟中断的信息发送给所述中间装置,所述用于触发虚拟中断的信息用于使得所述中间装置触发所述虚拟中断,所述虚拟中断由所述发送装置发送给所述目标物理处理器。
7.根据权利要求6所述的控制装置,其特征在于,所述虚拟中断为虚拟局部中断,所述目标物理处理器和所述源物理处理器为同一物理处理器,所述寄存器用于接收所述虚拟机写入的用于触发所述虚拟局部中断的信息;
所述控制装置用于:将所述用于触发所述虚拟局部中断的信息发送给所述中间装置,所述用于触发所述虚拟局部中断的信息用于使得所述中间装置触发所述虚拟局部中断,所述虚拟局部中断由所述发送装置发送给所述虚拟机的第一虚拟处理器,所述第一虚拟处理器运行在所述源物理处理器上。
8.根据权利要求6所述的控制装置,其特征在于,所述虚拟中断为虚拟软件中断,所述用于触发虚拟中断的信息包括所述虚拟机的第一虚拟处理器写入所述寄存器的第二虚拟处理器的标识,所述第二虚拟处理器为运行于所述目标物理处理器上的所述虚拟机的虚拟处理器;
所述控制装置用于:从所述寄存器读取所述第二虚拟处理器的标识,并获取所述虚拟机的标识;以及,将所述虚拟机的标识和所述第二虚拟处理器的标识发送给所述中间装置,所述虚拟机的标识和所述第二虚拟处理器的标识用于所述中间装置确定目标物理处理器并触发所述虚拟软件中断,所述虚拟软件中断由所述发送装置发送给所述目标物理处理器的所述第二虚拟处理器。
9.根据权利要求6所述的控制装置,其特征在于,所述虚拟中断为虚拟设备中断,所述用于触发虚拟中断的信息包括所述宿主机写入所述寄存器的目标中断号和所述虚拟机的标识,所述目标中断号为所述宿主机模拟硬件设备时所触发的中断的标识;
所述控制装置用于:从所述寄存器读取所述目标中断号和所述虚拟机的标识,并将所述虚拟机的标识和所述目标中断号发送给所述中间装置,所述虚拟机的标识和所述目标中断号用于所述中间装置确定目标物理处理器并触发所述虚拟设备中断,所述虚拟设备中断由所述发送装置发送给所述目标物理处理器的所述虚拟机的第一虚拟处理器。
10.一种中间装置,其特征在于,所述中间装置应用于芯片系统,所述芯片系统还包括源物理处理器、控制装置、发送装置以及目标物理处理器,所述源物理处理器用于运行宿主机或虚拟机,所述控制装置包括寄存器;所述寄存器用于接收用于触发虚拟中断的信息,所述用于触发虚拟中断的信息来自于所述宿主机或所述虚拟机;
所述中间装置用于:接收来自所述控制装置的所述用于触发虚拟中断的信息,根据所述用于触发虚拟中断的信息触发所述虚拟中断,并将所述虚拟中断发送给所述发送装置,所述虚拟中断由所述发送装置发送给所述目标物理处理器。
11.根据权利要求10所述的中间装置,其特征在于,所述虚拟中断为虚拟局部中断,所述目标物理处理器和所述源物理处理器为同一物理处理器,所述寄存器用于接收所述虚拟机写入的用于触发所述虚拟局部中断的信息;
所述中间装置用于:根据所述用于触发所述虚拟局部中断的信息,触发所述虚拟局部中断,并将所述虚拟局部中断发送给所述发送装置,所述虚拟局部中断由所述发送装置发送给所述虚拟机的第一虚拟处理器,所述第一虚拟处理器运行在所述源物理处理器上。
12.根据权利要求10所述的中间装置,其特征在于,所述虚拟中断为虚拟软件中断,所述用于触发虚拟中断的信息包括所述虚拟机的第一虚拟处理器写入所述寄存器的第二虚拟处理器的标识,所述第二虚拟处理器为运行于所述目标物理处理器上的所述虚拟机的虚拟处理器;
所述中间装置用于:
接收来自所述控制装置的所述虚拟机的标识和所述第二虚拟处理器的标识;
根据所述虚拟机的标识和所述第二虚拟处理器的标识,从第一对应关系中确定与所述虚拟机的标识和所述第二虚拟处理器的标识对应的所述目标物理处理器;其中,所述第一对应关系用于记录所述目标物理处理器、所述目标处理器上运行的第二虚拟处理器以及所述虚拟机之间的对应关系;
触发所述虚拟软件中断;
将所述虚拟软件中断发送给与所述目标物理处理器对应的所述发送装置,所述虚拟软件中断由所述发送装置发送给所述目标物理处理器的所述第二虚拟处理器。
13.根据权利要求10所述的中间装置,其特征在于,所述虚拟中断为虚拟设备中断,所述用于触发虚拟中断的信息包括所述宿主机写入所述寄存器的目标中断号和所述虚拟机的标识,所述目标中断号为所述宿主机模拟硬件设备时所触发的中断的标识;
所述中间装置用于:
接收来自所述控制设备的虚拟机的标识和所述目标中断号;
根据所述虚拟机的标识和所述目标中断号,在第二对应关系中查找与所述虚拟机的标识和所述目标中断号对应的所述虚拟机的第一虚拟处理器的标识,所述第二对应关系用于记录所述虚拟机、所述目标中断号和所述第一虚拟处理器之间的对应关系;
根据所述虚拟机的标识和所述第一虚拟处理器的标识,从第三对应关系中确定与所述虚拟机的标识和所述第一虚拟处理器的标识对应的所述目标物理处理器;其中,所述第三对应关系用于记录所述目标物理处理器、所述目标处理器上运行的所述第一虚拟处理器以及所述虚拟机之间的对应关系;
触发所述虚拟设备中断;
将所述虚拟设备中断发送给与所述目标物理处理器对应的所述发送装置,所述虚拟设备中断由所述发送装置发送给所述目标物理处理器的所述第一虚拟处理器。
14.根据权利要求13所述的中间装置,其特征在于,所述中间装置包括地址寄存器,所述地址寄存器用于存储所述第二对应关系在内存中的地址以及所述虚拟机的标识;
所述中间装置还用于:根据所述虚拟机的标识查找到所述地址寄存器,根据所述地址寄存器中的地址从所述内存中获取所述第二对应关系。
15.一种发送装置,其特征在于,所述发送装置应用于芯片系统,所述芯片系统还包括源物理处理器、中间装置、控制装置以及目标物理处理器,所述源物理处理器用于运行宿主机或虚拟机,所述控制装置包括寄存器;所述寄存器用于接收用于触发虚拟中断的信息,所述用于触发虚拟中断的信息来自于所述宿主机或所述虚拟机;
所述发送装置用于:接收来自于所述中间装置的所述虚拟中断,并将所述虚拟中断发送给所述目标物理处理器。
16.根据权利要求15所述的发送装置,其特征在于,所述虚拟中断为虚拟局部中断,所述目标物理处理器和所述源物理处理器为同一物理处理器;
所述发送装置用于:接收来自所述中间装置的所述虚拟局部中断,并将所述虚拟局部中断发送给所述虚拟机的第一虚拟处理器,所述第一虚拟处理器运行在所述源物理处理器上。
17.根据权利要求15所述的发送装置,其特征在于,所述虚拟中断为虚拟软件中断,所述用于触发虚拟中断的信息包括所述虚拟机的第一虚拟处理器写入所述寄存器的第二虚拟处理器的标识,所述第二虚拟处理器为运行于所述目标物理处理器上的所述虚拟机的虚拟处理器;
所述发送装置用于:接收来自所述中间装置的所述虚拟软件中断,并将所述虚拟软件中断发送给运行于所述目标物理处理器的所述第二虚拟处理器。
18.根据权利要求15所述的发送装置,其特征在于,所述虚拟中断为虚拟设备中断,所述用于触发虚拟中断的信息包括所述宿主机写入所述寄存器的目标中断号和所述虚拟机的标识,所述目标中断号为所述宿主机模拟硬件设备时所触发的中断的标识;
所述发送装置用于:接收来自所述中间装置的所述虚拟设备中断,并将所述虚拟设备中断发送给运行于所述目标物理处理器的第一虚拟处理器。
19.根据权利要求15-18任一项所述的发送装置,其特征在于,
所述发送装置用于:将所述虚拟中断写入所述目标物理处理器的待处理寄存器中,所述待处理寄存器用于接收所述目标物理处理器所执行流程的命令。
20.一种处理虚拟中断的方法,其特征在于,所述方法应用于芯片系统中的控制装置,所述芯片系统还包括源物理处理器、中间装置、发送装置以及目标物理处理器,所述源物理处理器用于运行宿主机或虚拟机,所述控制装置包括寄存器;所述寄存器用于接收用于触发虚拟中断的信息,所述用于触发虚拟中断的信息来自于所述宿主机或所述虚拟机,所述方法包括:
从所述寄存器中读取所述用于触发虚拟中断的信息;
将所述用于触发虚拟中断的信息发送给所述中间装置,所述用于触发虚拟中断的信息用于使得所述中间装置触发所述虚拟中断,所述虚拟中断由所述发送装置发送给所述目标物理处理器。
21.根据权利要求20所述的方法,其特征在于,所述虚拟中断为虚拟局部中断,所述目标物理处理器和所述源物理处理器为同一物理处理器,所述寄存器用于接收所述虚拟机写入的用于触发所述虚拟局部中断的信息;
所述用于触发所述虚拟局部中断的信息用于所述中间装置触发所述虚拟局部中断,所述虚拟局部中断由所述发送装置发送给所述虚拟机的第一虚拟处理器,所述第一虚拟处理器运行在所述源物理处理器上。
22.根据权利要求20所述的方法,其特征在于,所述虚拟中断为虚拟软件中断,所述用于触发虚拟中断的信息包括所述虚拟机的第一虚拟处理器写入所述寄存器的第二虚拟处理器的标识,所述第二虚拟处理器为运行于所述目标物理处理器上的所述虚拟机的虚拟处理器;所述方法还包括:
获取所述虚拟机的标识;
将所述虚拟机的标识发送给所述中间装置,所述虚拟机的标识和所述第二虚拟处理器的标识用于所述中间装置确定目标物理处理器并触发所述虚拟软件中断,所述虚拟软件中断由所述发送装置发送给所述目标物理处理器的所述第二虚拟处理器。
23.根据权利要求20所述的方法,其特征在于,所述虚拟中断为虚拟设备中断,所述用于触发虚拟中断的信息包括所述宿主机写入所述寄存器的目标中断号和所述虚拟机的标识,所述目标中断号为所述宿主机模拟硬件设备时所触发的中断的标识;所述虚拟机的标识和所述目标中断号用于所述中间装置确定目标物理处理器并触发所述虚拟设备中断,所述虚拟设备中断由所述发送装置发送给所述目标物理处理器的所述第一虚拟处理器。
24.一种处理虚拟中断的方法,其特征在于,所述方法应用于芯片系统中的中间装置,所述芯片系统还包括源物理处理器、控制装置、发送装置以及目标物理处理器,所述源物理处理器用于运行宿主机或虚拟机,所述控制装置包括寄存器;所述寄存器用于接收用于触发虚拟中断的信息,所述用于触发虚拟中断的信息来自于所述宿主机或所述虚拟机,所述方法包括:
接收来自所述控制装置的所述用于触发虚拟中断的信息;
根据所述用于触发虚拟中断的信息触发所述虚拟中断;
将所述虚拟中断发送给所述发送装置,所述虚拟中断由所述发送装置发送给所述目标物理处理器。
25.根据权利要求24所述的方法,其特征在于,所述虚拟中断为虚拟局部中断,所述目标物理处理器和所述源物理处理器为同一物理处理器,所述寄存器用于接收所述虚拟机写入的用于触发所述虚拟局部中断的信息;
所述用于触发所述虚拟局部中断的信息用于触发所述虚拟局部中断,所述虚拟局部中断由所述发送装置发送给所述虚拟机的第一虚拟处理器,所述第一虚拟处理器运行在所述源物理处理器上。
26.根据权利要求24所述的方法,其特征在于,所述虚拟中断为虚拟软件中断,所述用于触发虚拟中断的信息包括所述虚拟机的第一虚拟处理器写入所述寄存器的第二虚拟处理器的标识,所述第二虚拟处理器为运行于所述目标物理处理器上的所述虚拟机的虚拟处理器;
所述根据所述用于触发虚拟中断的信息触发所述虚拟中断,包括:
根据所述虚拟机的标识和所述第二虚拟处理器的标识,从第一对应关系中确定与所述虚拟机的标识和所述第二虚拟处理器的标识对应的所述目标物理处理器;其中,所述第一对应关系用于记录所述目标物理处理器、所述目标处理器上运行的第二虚拟处理器以及所述虚拟机之间的对应关系;
触发所述虚拟软件中断,所述虚拟软件中断由所述发送装置发送给所述目标物理处理器的所述第二虚拟处理器。
27.根据权利要求24所述的方法,其特征在于,所述虚拟中断为虚拟设备中断,所述用于触发虚拟中断的信息包括所述宿主机写入所述寄存器的目标中断号和所述虚拟机的标识,所述目标中断号为所述宿主机模拟硬件设备时所触发的中断的标识;
所述根据所述用于触发虚拟中断的信息触发所述虚拟中断,包括:
根据所述虚拟机的标识和所述目标中断号,在第二对应关系中查找与所述虚拟机的标识和所述目标中断号对应的所述虚拟机的第一虚拟处理器的标识,所述第二对应关系用于记录所述虚拟机、所述目标中断号和所述第一虚拟处理器之间的对应关系;
根据所述虚拟机的标识和所述第一虚拟处理器的标识,从第三对应关系中确定与所述虚拟机的标识和所述第一虚拟处理器的标识对应的所述目标物理处理器;其中,所述第三对应关系用于记录所述目标物理处理器、所述目标处理器上运行的所述第一虚拟处理器以及所述虚拟机之间的对应关系;
触发所述虚拟设备中断,所述虚拟设备中断由所述发送装置发送给所述目标物理处理器的所述第一虚拟处理器。
28.根据权利要求27所述的方法,其特征在于,所述方法还包括:
根据所述虚拟机的标识查找到地址寄存器,根据所述地址寄存器中的地址从所述内存中获取所述第二对应关系,所述地址寄存器用于存储所述第二对应关系在内存中的地址以及所述虚拟机的标识。
29.一种处理虚拟中断的方法,其特征在于,所述方法应用于芯片系统中的发送装置,所述芯片系统还包括源物理处理器、中间装置、控制装置以及目标物理处理器,所述源物理处理器用于运行宿主机或虚拟机,所述控制装置包括寄存器;所述寄存器用于接收用于触发虚拟中断的信息,所述用于触发虚拟中断的信息来自于所述宿主机或所述虚拟机,所述方法包括:
接收来自于所述中间装置的所述虚拟中断;
将所述虚拟中断发送给所述目标物理处理器。
30.根据权利要求29所述的方法,其特征在于,所述虚拟中断为虚拟局部中断,所述目标物理处理器和所述源物理处理器为同一物理处理器;
所述将所述虚拟中断发送给目标物理处理器,包括:
将所述虚拟局部中断发送给所述虚拟机的第一虚拟处理器,所述第一虚拟处理器运行在所述源物理处理器上。
31.根据权利要求29所述的方法,其特征在于,所述虚拟中断为虚拟软件中断,所述用于触发虚拟中断的信息包括所述虚拟机的第一虚拟处理器写入所述寄存器的第二虚拟处理器的标识,所述第二虚拟处理器为运行于所述目标物理处理器上的所述虚拟机的虚拟处理器;
所述将所述虚拟中断发送给目标物理处理器,包括:
将所述虚拟软件中断发送给运行于所述目标物理处理器的所述第二虚拟处理器。
32.根据权利要求29所述的方法,其特征在于,所述虚拟中断为虚拟设备中断,所述用于触发虚拟中断的信息包括所述宿主机写入所述寄存器的目标中断号和所述虚拟机的标识,所述目标中断号为所述宿主机模拟硬件设备时所触发的中断的标识;
所述将所述虚拟中断发送给目标物理处理器,包括:
将所述虚拟设备中断发送给运行于所述目标物理处理器的第一虚拟处理器。
33.根据权利要求29-32任一项所述的方法,其特征在于,所述方法还包括:
将所述虚拟中断写入所述目标物理处理器的待处理寄存器中,所述待处理寄存器用于接收所述目标物理处理器所执行流程的命令。
34.一种芯片系统,其特征在于,包括源物理处理器、控制装置和发送装置以及目标物理处理器,所述控制装置为上述权利要求6-9任一项所述的控制装置,所述发送装置为上述权利要求15-19任一项所述的发送装置。
35.根据权利要求33所述的芯片系统,其特征在于,所述芯片系统还包括中间装置,所述中间装置为上述权利要求10-14任一项所述的中间装置。
36.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求20-23任一项所述的方法,或者,执行时实现如权利要求24-28任一项所述的方法,或者,执行时实现如权利要求29-33任一项所述的方法。
37.一种计算机设备,其特征在于,所述计算机设备包括上述权利要求1-5任一项所述的芯片系统,或者包括上述权利要求34或35所述的芯片系统。
CN202011108332.3A 2020-10-15 2020-10-15 一种芯片系统、处理虚拟中断的方法及相应装置 Pending CN114371907A (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN202011108332.3A CN114371907A (zh) 2020-10-15 2020-10-15 一种芯片系统、处理虚拟中断的方法及相应装置
EP21879418.8A EP4220394A4 (en) 2020-10-15 2021-10-13 CHIP SYSTEM, METHOD FOR PROCESSING A VIRTUAL INTERRUPTION AND ASSOCIATED DEVICE
PCT/CN2021/123497 WO2022078375A1 (zh) 2020-10-15 2021-10-13 一种芯片系统、处理虚拟中断的方法及相应装置
KR1020237015942A KR20230084300A (ko) 2020-10-15 2021-10-13 칩 시스템, 가상 인터럽트 처리 방법 및 대응하는 장치
JP2023522963A JP2023545818A (ja) 2020-10-15 2021-10-13 チップ・システム、仮想割り込み処理方法および対応する装置
US18/300,515 US20230259380A1 (en) 2020-10-15 2023-04-14 Chip system, virtual interrupt processing method, and corresponding apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011108332.3A CN114371907A (zh) 2020-10-15 2020-10-15 一种芯片系统、处理虚拟中断的方法及相应装置

Publications (1)

Publication Number Publication Date
CN114371907A true CN114371907A (zh) 2022-04-19

Family

ID=81137817

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011108332.3A Pending CN114371907A (zh) 2020-10-15 2020-10-15 一种芯片系统、处理虚拟中断的方法及相应装置

Country Status (6)

Country Link
US (1) US20230259380A1 (zh)
EP (1) EP4220394A4 (zh)
JP (1) JP2023545818A (zh)
KR (1) KR20230084300A (zh)
CN (1) CN114371907A (zh)
WO (1) WO2022078375A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116107697A (zh) * 2023-01-04 2023-05-12 芯动微电子科技(武汉)有限公司 一种不同操作系统之间互相通信的方法及系统
CN116320469A (zh) * 2023-05-16 2023-06-23 摩尔线程智能科技(北京)有限责任公司 一种虚拟化视频编解码系统及方法、电子设备和存储介质
CN116521324A (zh) * 2023-06-30 2023-08-01 深圳中安辰鸿技术有限公司 中断虚拟化处理方法、装置及电子设备
WO2024037482A1 (zh) * 2022-08-19 2024-02-22 华为技术有限公司 一种中断消息处理方法及装置
WO2024120118A1 (zh) * 2022-12-05 2024-06-13 中兴通讯股份有限公司 中断请求处理方法、系统、设备及计算机可读存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117272412B (zh) * 2023-11-21 2024-03-15 芯来智融半导体科技(上海)有限公司 中断控制寄存器保护方法、装置、计算机设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
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 阿里巴巴集团控股有限公司 一种实现虚拟处理器间中断透传的方法及设备

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024037482A1 (zh) * 2022-08-19 2024-02-22 华为技术有限公司 一种中断消息处理方法及装置
WO2024120118A1 (zh) * 2022-12-05 2024-06-13 中兴通讯股份有限公司 中断请求处理方法、系统、设备及计算机可读存储介质
CN116107697A (zh) * 2023-01-04 2023-05-12 芯动微电子科技(武汉)有限公司 一种不同操作系统之间互相通信的方法及系统
CN116107697B (zh) * 2023-01-04 2023-10-31 芯动微电子科技(武汉)有限公司 一种不同操作系统之间互相通信的方法及系统
CN116320469A (zh) * 2023-05-16 2023-06-23 摩尔线程智能科技(北京)有限责任公司 一种虚拟化视频编解码系统及方法、电子设备和存储介质
CN116320469B (zh) * 2023-05-16 2024-03-01 摩尔线程智能科技(北京)有限责任公司 一种虚拟化视频编解码系统及方法、电子设备和存储介质
CN116521324A (zh) * 2023-06-30 2023-08-01 深圳中安辰鸿技术有限公司 中断虚拟化处理方法、装置及电子设备
CN116521324B (zh) * 2023-06-30 2024-04-12 深圳中安辰鸿技术有限公司 中断虚拟化处理方法、装置及电子设备

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
KR20230084300A (ko) 2023-06-12
EP4220394A1 (en) 2023-08-02

Similar Documents

Publication Publication Date Title
CN114371907A (zh) 一种芯片系统、处理虚拟中断的方法及相应装置
Ben-Yehuda et al. The turtles project: Design and implementation of nested virtualization
JP5608243B2 (ja) 仮想化環境においてi/o処理を行う方法および装置
CN101268445B (zh) 用于向多核环境中的应用程序提供实时线程服务的方法、装置
KR101574403B1 (ko) 결합된 가상 그래픽 장치
JP7538950B2 (ja) コンピュータデバイス、例外処理方法および割り込み処理方法
EP4152149A1 (en) Method and apparatus for processing exception or interrupt under heterogeneous instruction set architecture
Varanasi Implementing Hardware-supported Virtualization in OKL4 on ARM
RU2562372C2 (ru) Активация/деактивация адаптеров вычислительной среды
CN101751284A (zh) 一种分布式虚拟机监控器的i/o资源调度方法
CN112783601A (zh) 一种异构系统的中断处理方法、装置、设备及存储介质
CN115988217A (zh) 一种虚拟化视频编解码系统、电子设备和存储介质
CN101876954A (zh) 一种虚拟机控制系统及其工作方法
CN115988218A (zh) 一种虚拟化视频编解码系统、电子设备和存储介质
CN114398172A (zh) 资源配置方法、装置、电子设备及计算机可读存储介质
CN112330229A (zh) 资源调度方法、装置、电子设备及计算机可读存储介质
US20050091022A1 (en) Ultra fast multi-processor system simulation using dedicated virtual machines
Baldin et al. Proteus, a hybrid virtualization platform for embedded systems
CN112559120B (zh) 定制化pcie总线io虚拟化支撑方法
Im et al. On-demand virtualization for live migration in bare metal cloud
ul Ain et al. Httm-design and implementation of a type-2 hypervisor for mips64 based systems
Mhatre et al. On the simulation of hypervisor instructions for accurate timing simulation of virtualized systems
Mhatre et al. On making xen detect hypercalls and memory accesses for simulating virtualization-enabled processors
US20120054773A1 (en) Processor support for secure device driver architecture
Oikawa et al. Linux/RTOS hybrid operating environment on gandalf virtual machine monitor

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination