CN113626131A - 实现热迁移的方法、芯片、板卡和存储介质 - Google Patents
实现热迁移的方法、芯片、板卡和存储介质 Download PDFInfo
- Publication number
- CN113626131A CN113626131A CN202010379648.XA CN202010379648A CN113626131A CN 113626131 A CN113626131 A CN 113626131A CN 202010379648 A CN202010379648 A CN 202010379648A CN 113626131 A CN113626131 A CN 113626131A
- Authority
- CN
- China
- Prior art keywords
- virtual
- hardware
- data
- migrated
- user
- 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.)
- Granted
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
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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
Abstract
本公开涉及实现热迁移的方法、装置及可读存储介质,其中本公开的计算装置包括在集成电路装置中,该集成电路装置包括通用互联接口和其他处理装置。计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。集成电路装置还可以包括存储装置,存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据存储。
Description
技术领域
本公开一般涉及计算机领域。更具体地,本公开涉及一种实现热迁移的方法、芯片、板卡及计算机可读存储介质。
背景技术
热迁移(Live Migration)又称为动态迁移、实时迁移,即虚拟机通过保存(SAVE)/恢复(LOAD)的程序,将整个虚拟机的运行状态完整保存下来,从一台物理服务器迁移到另一台物理服务器上。恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。
在人工智能领域中,由于专用集成电路(ASIC)的复杂度高,以至于无法完全实现热迁移。随着云计算的发达,在云端采用人工智能芯片的服务器均需要利用虚拟化,以保障用户的独立运算空间,而热迁移可以提供稳定的服务,因此如何在人工智能芯片上实现热迁移是现有技术中需要解决的问题。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本公开的方案提供了一种实现热迁移的方法、芯片、板卡及计算机可读存储介质。
根据本公开的第一方面,提供一种实现热迁移的系统,连接至内核空间,所述系统包括硬件及只读存储器。硬件虚拟化为多个虚拟硬件,只读存储器存储有固件,该固件包括物理功能,用以:接收来自所述内核空间的热迁移启动请求,所述热迁移启动请求指定特定虚拟硬件,所述特定虚拟硬件为所述多个虚拟硬件其中之一;发送待迁移指令至所述内核空间,所述待迁移指令记录待迁移数据,所述待迁移数据关联至所述特定虚拟硬件;自所述特定虚拟硬件分批取出所述待迁移数据并发送至所述内核空间;以及当所述待迁移数据发送完毕后,发送结束信号至所述内核空间。
根据本公开的第二方面,提供一种实现热迁移的系统,连接至内核空间,所述系统包括硬件及只读存储器。硬件虚拟化为多个虚拟硬件。只读存储器存储有固件,该固件包括:物理功能及多个虚拟功能。物理功能用以接收待迁移数据,所述待迁移数据关联至特定虚拟硬件,所述特定虚拟硬件为所述多个虚拟硬件其中之一,多个虚拟功能受所述物理功能管理,所述特定虚拟硬件对应一个虚拟功能,物理功能通过所述虚拟功能发送所述待迁移数据至所述特定虚拟硬件。当所述待迁移数据发送完毕后,所述物理功能发送结束信号至所述内核空间。
根据本公开的第三方面,提供一种集成电路装置,包括前述的系统,亦提供一种板卡,包括前述的集成电路装置。
根据本公开的第四方面,提供一种对系统进行热迁移保存路径的方法,所述系统包括硬件,虚拟化为多个虚拟硬件。所述方法包括:接收热迁移启动请求,所述热迁移启动请求指定特定虚拟硬件,所述特定虚拟硬件为所述多个虚拟硬件其中之一;闲置特定虚拟功能,所述特定虚拟功能对应至所述特定虚拟硬件;自所述特定虚拟硬件分批发送待迁移数据;以及当所述待迁移数据发送完毕后,发送结束信号。
根据本公开的第五方面,提供一种对系统进行热迁移恢复路径的方法,所述系统包括硬件,虚拟化为多个虚拟硬件。所述方法包括:接收待迁移数据,所述热迁移数据对应至特定虚拟硬件,所述特定虚拟硬件为所述多个虚拟硬件其中之一;闲置特定虚拟功能,所述特定虚拟功能对应至所述特定虚拟硬件;通过特定虚拟功能发送所述待迁移数据至所述特定虚拟硬件;以及当所述待迁移数据发送完毕后,发送结束信号。
根据本公开的第六方面,提供一种计算机可读存储介质,其上存储有热迁移的计算机程序代码,当所述计算机程序代码由处理器运行时,执行前述的方法。
本公开可以实现将虚拟化设备的信息从源服务器热迁移至目的服务器上。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的说明以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示出本公开实施例的人工智能芯片框架的示意图;
图2是示出本公开实施例的计算装置的内部结构示意图;
图3是本公开实施例的迁移保存路径的流程图;
图4是示出本公开实施例的源服务器端进行迁移保存路径的示意图;
图5是本公开实施例的迁移恢复路径的流程图;
图6是示出本公开实施例的目的服务器端进行迁移恢复路径的示意图;
图7是示出本公开实施例的集成电路装置的结构图;以及
图8是示出本公开实施例的板卡的示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本公开的具体实施方式。
本公开涉及一种采用虚拟化技术的框架,应用在专用集成电路上,例如用于神经网络的机器学习设备上,该机器学习设备可以是卷积神经网络加速器。以下将以人工智能芯片示例说明。
图1是人工智能芯片虚拟化的框架图,该框架100包括用户空间102、内核空间104及片上系统106,在图上以虚线区隔开。用户空间102为用户程序的运行空间,只执行简单的运算,不能直接调用系统资源,必须通过系统接口,才能向内核发出指令。内核空间104是内核代码运行的空间,可以执行任意命令,调用系统的一切资源。片上系统106为人工智能芯片的各模块,通过内核空间104与用户空间102进行协作。
在此实施例中,用户空间102的硬件统一称之为器或设备,片上系统106的硬件统一称之为装置或单元,作为区分。这样的安排只为了更清楚的描述此实施例的技术,并非对本公开的技术做任何的限制。
除非另行强调,此实施例以将一个部件虚拟化为四个虚拟部件来示例说明,但本公开不限制虚拟部件的数量。
用户空间102在未运行虚拟化前,是由硬件监测器工具108所控制,通过调用接口获取片上系统106的信息。硬件监测器工具108不仅可以采集片上系统106的信息,还可以实时获取上层软件对片上系统106资源的开销,为用户实时掌握当前片上系统106的详细信息和状态,这些详细信息和状态可以是:硬件设备型号、固件版本号、驱动版本号、设备利用率、存储装置开销状态、板卡功耗和板卡峰值功耗、快速外设组件互连(PCIe)等数十种数据。基于硬件监测器工具108的版本及使用场景的不同,所监测的信息内容及数量会有所差异。
在系统启动虚拟化后,用户空间102的操作改由用户虚拟机110接管,用户虚拟机110是对真实计算环境的抽象和模拟,系统会分配一套数据结构来管理用户虚拟机110的状态,其数据结构包括全套寄存器、物理内存的使用情况、虚拟设备的状态等等。此实施例的用户空间102的物理空间虚拟化为四个虚拟空间112、114、116、118,这四个虚拟空间112、114、116、118独立互不影响,可分别搭载不同的客户操作系统,如图中所示的客户操作系统1、客户操作系统2、客户操作系统3及客户操作系统4,客户操作系统可以是Windows、Linux、Unix、iOS、安卓等,每个客户操作系统上分别运行不同的应用程序。
在本公开的环境里,用户虚拟机110是以快速仿真器(QEMU)来实现。QEMU是一个用C语言编写的开源虚拟化软件,通过动态二进制转换将接口虚拟化,并提供一系列的硬件模型,使得客户操作系统1、客户操作系统2、客户操作系统3、客户操作系统4都认为自己直接访问片上系统106。用户空间102包括处理器、存储器、I/O设备等,QEMU可以将用户空间102的处理器虚拟化为四个虚拟处理器,并将存储器虚拟化为四个虚拟存储器,亦将I/O设备的虚拟化为四个虚拟I/O设备。每个客户操作系统各占用一部分用户空间102的资源,例如各占四分之一,也就是分别能访问一个虚拟处理器、一个虚拟存储器及一个虚拟I/O设备,以执行该客户操作系统的任务。通过这种模式,客户操作系统1、客户操作系统2、客户操作系统3、客户操作系统4就能独立运作。
内核空间104载有内核虚拟机120及芯片驱动程序122。内核虚拟机120与QEMU搭配,主要负责内核空间104及片上系统106的虚拟化,使得每个客户操作系统在访问片上系统106时都能获得自己的地址空间。更详细来说,映射给客户操作系统的片上系统106上的空间实际上是映射给这个进程的虚拟部件。
内核虚拟机120包括物理功能驱动程序,是一个专门管理SR-IOV设备全局功能的驱动程序,一般需要具有比普通虚拟机更高的权限才能对其进行操作。物理功能驱动程序包含了所有传统驱动程序的功能,用户空间102能够访问片上系统106的I/O资源。
从用户虚拟机110的角度来看,在虚拟机运行期间,QEMU通过内核虚拟机120提供的系统调用接口进行内核设置,QEMU使用了内核虚拟机120的虚拟化功能,为自己的虚拟机提供硬件虚拟化加速以提高虚拟机的性能。从内核虚拟机120的角度来看,当用户无法直接跟内核空间104交互时,需要借助用户空间102的管理工具,因此需要借助QEMU这个运行在用户空间102的工具。
芯片驱动程序122用以驱动物理功能(physical function,PF)126,在虚拟机运行期间,用户空间102不由硬件监测器工具108经芯片驱动程序122来访问片上系统106,因此客户操作系统1、客户操作系统2、客户操作系统3、客户操作系统4分别配置有用户端内核空间124,用以载入芯片驱动程序122,使得各客户操作系统依然可以驱动片上系统106。
片上系统106是通过单根I/O虚拟化(single root I/O virtualization,SR-IOV)技术来执行虚拟化的,更详细来说,在本公开的环境里,SR-IOV技术是以软硬件结合实现的,使得片上系统106的各部件虚拟化。SR-IOV技术是一种虚拟化解决方案,允许在虚拟机之间高效共享PCIe资源,SR-IOV技术使得单个PCIe资源可由片上系统106的多个虚拟部件共享,为这些虚拟部件提供专用的资源。这样,每个虚拟部件都有自己对应的唯一可访问的资源。
此实施例的片上系统106包含硬件和固件。硬件包括只读存储器ROM(未显示于图中),用以存储固件,而固件包括物理功能126,用于支持或协作SR-IOV的PCIe功能,物理功能126拥有完全配置PCIe资源的权力。在实施SR-IOV技术时,物理功能126会虚拟化出多个虚拟功能(virtual function,VF)128,在此实施例中为四个虚拟功能128。虚拟功能128是一种轻量级PCIe功能,受物理功能126管理,可与物理功能126以及与同一物理功能126关联的其他虚拟功能128共享PCIe物理资源。虚拟功能128仅允许控制物理功能126配置给自己的资源。
一旦在物理功能126中启用了SR-IOV,各个虚拟功能128就可以通过自身的总线、设备和功能编号去访问自己的PCIe配置空间。每个虚拟功能128都具有一个内存空间,用于映射其寄存器集。虚拟功能128驱动程序对寄存器集进行操作以启用其功能,并直接指定给对应的用户虚拟机110。虽然是虚拟的,但会让用户虚拟机110认为是实际存在的PCIe设备。
片上系统106的硬件还包括计算装置130、视频编解码装置132、JPEG编解码装置134、存储装置136及PCIe 138。在此实施例中,计算装置130为智能处理装置(intelligentprocessing unit,IPU),用以执行神经网络的卷积计算;视频编解码装置132用以对视频数据进行编解码;JPEG编解码装置134用以对采用JPEG算法的静态图片进行编解码;存储装置136可以为动态随机存取存储器(DRAM),用以存储数据;PCIe 138即为前述的PCIe,在虚拟机运行期间,PCIe 138会虚拟化为四个虚拟接口140,虚拟功能128与虚拟接口140为一对一对应关系,也就是第一虚拟功能对接第一虚拟接口,第二虚拟功能对接第二虚拟接口,以此类推。
通过SR-IOV技术,计算装置130虚拟化为四个虚拟计算装置142、将视频编解码装置132虚拟化为四个虚拟视频编解码装置144、将JPEG编解码装置134虚拟化为四个虚拟JPEG编解码装置146、将存储装置136虚拟化为四个虚拟存储装置148。
每个客户操作系统分别配置一组虚拟套件,每组虚拟套件包括一个用户虚拟机110、一个虚拟接口140、一个虚拟功能128、一个虚拟计算装置142、一个虚拟视频编解码装置144、一个虚拟JPEG编解码装置146及一个虚拟存储装置148。每组虚拟套件各自独立运行互不影响,用来执行相对应的客户操作系统所交付的任务,以确定每个客户操作系统能通过所配置的虚拟接口140及虚拟功能128访问所配置的虚拟计算装置142、虚拟视频编解码装置144、虚拟JPEG编解码装置146及虚拟存储装置148。
更详细来说,每个客户操作系统在执行任务时,响应任务的不同,所需访问的硬件可能也不同,例如:某个任务是进行矩阵卷积计算,则该客户操作系统会通过所配置的虚拟接口140及虚拟功能128访问所配置的虚拟计算装置142;如某个任务是进行视频编解码,则该客户操作系统会通过所配置的虚拟接口140及虚拟功能128访问所配置的虚拟视频编解码装置144;如某个任务是进行JPEG编解码,则该客户操作系统会通过所配置的虚拟接口140及虚拟功能128访问所配置的虚拟JPEG编解码装置146;如某个任务是读取或写入数据,则该客户操作系统会通过所配置的虚拟接口140及虚拟功能128访问所配置的虚拟存储装置148。
图2示出了一种计算装置130的内部结构示意图。计算装置130共有十六个处理单元核(处理单元核0至处理单元核15),用于执行矩阵计算任务,每四个处理单元核组成一个处理单元组,也就是集群(cluster)。更详细来说,处理单元核0至处理单元核3组成第一集群202,处理单元核4至处理单元核7组成第二集群204,处理单元核8至处理单元核11组成第三集群206,处理单元核12至处理单元核15组成第四集群208。计算装置130基本上是以集群为单元执行计算任务。
计算装置130还包括存储单元核210及共享存储单元212。存储单元核210主要用于控制数据交换,作为计算装置130与存储装置136沟通的渠道。共享存储单元212用以暂存这些集群202、204、206、208的计算中间值。在虚拟化运行期间,存储单元核210会切分为四个虚拟存储单元核,共享存储单元212也同样会切分为四个虚拟共享存储单元。
每个虚拟计算装置142分别配置一个虚拟存储单元核、一个虚拟共享存储单元以及一个集群,以支撑特定客户操作系统的任务。同样地,每个虚拟计算装置142各自独立运作,互不影响。
计算装置130的集群数量至少应与虚拟计算装置142的数量相同,以确保每个虚拟计算装置142能配置一个集群,当集群数量多于虚拟计算装置142的数量时,便可以根据实际需求,将集群适当地配置给虚拟计算装置142,以增加硬件配置弹性。
此实施例的视频编解码装置132包括六个视频编解码单元。视频编解码装置132可以弹性地根据虚拟部件的数量以及所需资源,以视频编解码单元为单位做弹性的调配。例如:视频编解码装置132虚拟化为四个虚拟视频编解码装置144,假设第一虚拟视频编解码装置及第二虚拟视频编解码装置需要较多的视频编解码资源,则可以分别配置两个视频编解码单元给第一虚拟视频编解码装置及第二虚拟视频编解码装置,而分别配置一个视频编解码单元给其他虚拟视频编解码装置144。又例如:视频编解码装置132虚拟化为三个虚拟视频编解码装置144,在任一个虚拟视频编解码装置均不需要较多的视频编解码资源的情况下,则可以分别配置两个视频编解码单元给每个虚拟视频编解码装置144。
视频编解码单元的数量至少应与虚拟视频编解码装置144的数量相同,以确保每个虚拟视频编解码装置144能配置一个视频编解码单元,当视频编解码单元数量多于虚拟视频编解码装置144的数量时,便可以根据实际需求,将视频编解码单元适当地配置给虚拟视频编解码装置144,以增加硬件配置弹性。
同样地,此实施例的JPEG编解码装置134包括六个JPEG编解码单元。JPEG编解码装置134可以弹性地根据虚拟部件的数量以及所需资源,以JPEG编解码单元为单位做弹性的调配,其调配方式与视频编解码装置132无异,故不赘述。
存储装置136可以采用非统一内存存取(non-uniform memory access,NUMA)架构,包括多个DDR通道,存储装置136可以弹性地根据虚拟部件的数量以及所需资源,以DDR通道为单位做弹性的调配,其调配方式与计算装置130、视频编解码装置132及JPEG编解码装置134无异,故不赘述。
基于前述示例性的框架,本公开的热迁移方案分为两阶段:第一阶段是将源服务器上的组态及数据打包并发送至目的服务器,即迁移保存路径;第二阶段是将这些组态及数据放置到目的服务器的相应处,即迁移恢复路径。此热迁移方案是将整个虚拟机的运行状态完整保存下来,同时快速恢复到原有硬件平台甚至是不同硬件平台上,换言之,源服务器和目的服务器可以在同一个硬件平台或不同硬件平台上。恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。前述两阶段将分别说明之。
图3是示出本公开的一个实施例,其为迁移保存路径的流程图,此实施例的源服务器可以是图1所揭示的系统,图4则示出具有图1架构的源服务器端进行迁移保存路径的示意图。此实施例在用户空间102仍在运行时将片上系统106上的特定虚拟硬件相关的驱动程序、固件和硬件信息、上下文信息及其状态信息打包好自源服务器端送出,所述的“状态信息”可以包括虚拟功能的驱动程序的状态信息、固件和硬件的状态信息、状态机、寄存器、硬件内部状态的上下文状态信息、软件的状态机、变量、常量运行时的上下文状态信息等。
在步骤301中,虚拟化管理软件向仿真虚拟机QEMU 402发起迁移请求。此实施例的虚拟化管理软件是Libvirt 401,Libvirt 401是一种用于管理虚拟化平台的开源应用程序编程接口(API)、后台程序和管理工具,它可以用来管理QEMU 402的虚拟化技术。当片上系统106出现故障、资源分配不均(如负载过重、负载过轻)等情况时,Libvirt 401便可启动热迁移来保证虚拟机业务的正常运行。
在步骤302中,QEMU 402通知物理功能驱动程序403启动迁移,即QEMU 402初始化热迁移启动请求。此实施例提供一种模型来管理整个迁移保存路径的过程,该模型为虚拟机器学习单元QEMU对象模型(VMLU QOM),其中虚拟机器学习单元指的是针对图1所示的虚拟化人工智能片上系统,而QEMU对象模型则是模拟特定架构的处理器以及装置与总线的关系。
在模拟特定架构的处理器方面,VMLU QOM 404针对图1的人工智能片上系统的特性模拟出处理器模型。在模拟装置与总线的关系方面,由于片上系统106会通过PCIe 138与内核空间104联系,这种装置连接总线、总线连接装置的关系,由VMLU QOM 404模拟。
至于用户空间102和物理功能驱动程序403之间的互动,便是通过VMLU QOM 404的内存映射I/O(Memory mapping I/O,MMIO)实现的。内存映射I/O是PCI规范的一部分,I/O设备被放置在内存空间而不是I/O空间。从用户空间102的处理器的角度来看,内存映射I/O后系统访问其他设备是与访问内存相同的,简化了程序设计的难度和接口的复杂性。
在此步骤中,QEMU 402中的VMLU QOM 404初始化热迁移启动请求,并将热迁移启动请求发送至物理功能驱动程序403。
在步骤303中,物理功能驱动程序403通知虚拟功能驱动程序405启动迁移。虚拟功能驱动程序405存储在虚拟机内核空间中,基于VMLU QOM 404的内存映射I/O,片上系统106的硬件在虚拟功能驱动程序405看来像一块内存,虚拟功能驱动程序405对内存映射I/O空间(即片上系统106)的读和写操作会被VMLU QOM 404捕捉并管理。对于读操作,VMLU QOM404可以根据虚拟功能驱动程序405的需要返回应返回的值,使得虚拟功能驱动程序405和物理功能驱动程序403之间同步。
VMLU QOM 404通过调用物理功能驱动程序403的接口获取物理功能驱动程序403的迁移状态。当虚拟功能驱动程序405欲读取VMLU QOM 404的内存映射I/O空间时,VMLUQOM 404便将物理功能406的状态返回给虚拟功能驱动程序405,在此步骤中,VMLU QOM 404将物理功能驱动程序403准备进行热迁移的状态传递至虚拟功能驱动程序405。
在步骤304中,虚拟功能驱动程序405暂停执行来自用户空间102的处理器的任务。此实施例所采取的方式是,虚拟功能驱动程序405不返回控制指令至用户空间102的客户操作系统,客户操作系统未收到控制指令,便会继续等待,不会发出下一个任务给虚拟功能驱动程序405,以暂停执行用户空间端的任务。
在步骤305中,虚拟功能驱动程序405通知物理功能驱动程序403准备进行迁移。当暂停执行来自用户空间102的指令后,虚拟功能驱动程序405通知物理功能驱动程序403用户空间102已准备就绪,在热迁移期间不会有指令下发干扰。
在步骤306中,物理功能驱动程序403通知物理功能406准备进行迁移。物理功能驱动程序403发送热迁移启动请求至物理功能406,所述热迁移启动请求指定特定虚拟硬件408进行热迁移,特定虚拟硬件408为片上系统106多个虚拟硬件其中之一,亦即,所述热迁移启动请求记载针对特定虚拟硬件408进行热迁移。为说明方便,在此假设热迁移启动请求是针对特定虚拟功能407及其相对应的特定虚拟硬件408。
特定虚拟硬件408可以是特定的虚拟计算装置,例如图1中的虚拟计算装置142,则待迁移数据包括存储在虚拟共享存储单元的计算中间值,以及存储在虚拟存储单元核的数据。特定虚拟硬件408也可以是图1的特定虚拟存储装置148,则待迁移数据包括存储在特定虚拟存储装置148的数据。特定虚拟硬件408还可以是虚拟视频编解码装置144或是虚拟JPEG编解码装置146,则待迁移数据包括相应的编解码信息。
在步骤307中,物理功能406向物理功能驱动程序403上传包括特定虚拟功能407的驱动程序、固件和特定虚拟硬件408的信息、上下文信息及其状态信息的数据。首先,物理功能406发送待迁移指令至内核空间104的物理功能驱动程序403,所述待迁移指令记录了与特定虚拟硬件408有关的待迁移数据,使物理功能驱动程序403知悉有多少数据需要迁移。接着,物理功能406响应热迁移启动请求,闲置特定虚拟功能407,使其暂时勿与用户空间102进行沟通,但其他的虚拟功能及其相对应的虚拟硬件则照常运行。在闲置特定虚拟功能407后,物理功能406自特定虚拟硬件408分批取出待迁移数据,并发送至物理功能驱动程序403。当待迁移数据发送完毕后,物理功能406发送结束信号至物理功能驱动程序403。
在步骤308,VMLU QOM 404从物理功能驱动程序403获取待迁移数据。内核空间的物理功能驱动程序403先将待迁移指令发送至用户虚拟机里的VMLU QOM 404,再将待迁移数据发送至VMLU QOM 404。VMLU QOM 404接收到待迁移指令后,调用读取函数,从物理功能驱动程序403获取待迁移数据。
在步骤309中,VMLU QOM 404将待迁移数据传输到Libvirt 401。
在步骤310中,当待迁移数据发送完毕后,物理功能406释放特定虚拟硬件408及特定虚拟功能407的资源,VMLU QOM 404发送结束信号至虚拟功能驱动程序405,虚拟功能驱动程序405发送控制信号至虚拟功能驱动程序的接口409,客户操作系统接续下发任务。
通过上述的流程,此实施例实现迁移保存路径,在执行前述流程的同时,对于非特定虚拟功能及硬件来说,仍旧执行来自用户空间102的任务,不受影响。
本公开的另一个实施例是迁移恢复路径,此实施例的目的服务器亦为图1的系统,与源服务器具有同样的环境。图5是示出迁移恢复路径的流程图,图6则示出迁移恢复路径在图1环境中的示意图。更详细来说,此实施例是在图3及图4的实施例完成迁移保存路径后,接着将待迁移数据迁移到目的服务器上。
在步骤501中,Libvirt 601向QEMU 602发起待迁移数据导入的请求。QEMU 602自片外接收在前一个实施例中发出的待迁移数据,并初始化热迁移启动请求。所述片外指的是源服务器,源服务器与目的服务器可能在同一个硬件平台或不同硬件平台上。
在步骤502中,VMLU QOM 604向物理功能驱动程序603发送待迁移数据。VMLU QOM604接收到待迁移数据后,响应热迁移启动请求,调用写入函数,将待迁移数据发送至物理功能驱动程序603。
在步骤503中,物理功能606接收待迁移数据。在前一个步骤中,VMLU QOM 604将待迁移数据发送至物理功能驱动程序603,物理功能驱动程序603再将待迁移数据发送至物理功能606。
在步骤504中,针对特定虚拟功能607及特定虚拟硬件608恢复组态、数据及其上下文。
首先,物理功能606闲置特定虚拟功能607,使其暂时勿与用户空间102进行沟通,但其他的虚拟功能则照常运行。在闲置特定虚拟功能607后,物理功能606通过特定虚拟功能607发送待迁移数据至特定虚拟硬件608。
同样地,特定虚拟硬件608可以是图1的虚拟计算装置、特定虚拟存储装置、虚拟视频编解码装置或是虚拟JPEG编解码装置。待迁移数据包括与特定虚拟硬件608相关的驱动程序、固件和硬件信息、上下文信息及状态信息等。回复后,特定虚拟功能607及特定虚拟硬件608与特定虚拟功能407及特定虚拟硬件408具有完全相同的环境及数据。
在步骤505中,物理功能606向物理功能驱动程序603报告迁移已经完成。当待迁移数据发送完毕后,物理功能606发送结束信号至内核空间104的物理功能驱动程序603。
在步骤506中,物理功能驱动程序603通知VMLU QOM 604热迁移已经完成,亦即物理功能驱动程序603发送结束信号至QEMU 602。
在步骤507中,VMLU QOM 604改变状态以便通知虚拟功能驱动程序605热迁移已经完成。VMLU QOM 604响应结束信号,通知虚拟功能驱动程序605热迁移已完成,同时改变基地址寄存器的状态,指向目的服务器的特定虚拟功能607及特定虚拟硬件608。
在步骤508中,虚拟功能驱动程序605向虚拟功能驱动程序的接口609发送控制信号,以重新接续执行客户操作系统的任务。
在步骤509中,虚拟功能驱动程序的接口609通知虚拟功能驱动程序605重新接续执行客户操作系统的任务。虚拟功能驱动程序605重新通过虚拟功能驱动程序的接口609接收来自用户空间102的处理器的任务,这些任务不再访问源服务器的特定虚拟硬件408,而改以访问目的服务器的特定虚拟硬件608。
在步骤510中,VMLU QOM 604通知Libvirt 601热迁移完成,Libvirt601清理源服务器上所分配的硬件资源。至此完成迁移恢复路径。
结合前述迁移保存路径及迁移恢复路径的实施例,本公开得以实现虚拟化专用集成电路的热迁移。
图7是示出根据本公开实施例的一种集成电路装置700的结构图。如图7所示,集成电路装置700即是前述多个实施例中的人工智能片上系统,其包括计算装置702,计算装置702可以是图1的计算装置130。另外,集成电路装置700还包括通用互联接口704和其他处理装置706。
其他处理装置706可以是中央处理器、图形处理器、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器,其数目不做限制而是依实际需要来确定。其他处理装置706作为计算装置702与外部数据和控制的接口,执行包括但不限于数据搬运,完成对计算装置702的开启、停止等的基本控制。其他处理装置706也可以和计算装置702协作共同完成运算任务。
通用互联接口704可以用于在计算装置702与其他处理装置706间传输数据和控制指令。例如,计算装置702可以经由通用互联接口704从其他处理装置706中获取所需的输入数据,写入计算装置702片上的存储单元。进一步,计算装置702可以经由通用互联接口704从其他处理装置706中获取控制指令,写入计算装置702片上的控制缓存。替代地或可选地,通用互联接口704也可以读取计算装置702的存储模块中的数据并传输给其他处理装置706。
集成电路装置700还包括存储装置708,其可以分别与计算装置702和其他处理装置706连接。存储装置708用于保存计算装置702和其他处理装置706的数据,尤其适用于所需要运算的数据在计算装置702或其他处理装置706的内部存储中无法全部保存的数据。
根据应用场景的不同,集成电路装置700可以作为手机、机器人、无人机、视频采集等设备的片上系统(SOC),从而有效地降低控制部分的核心面积,提高处理速度并降低整体的功耗。在此情况时,集成电路装置700的通用互联接口704与设备的某些部件相连接。此处的某些部件可以例如是摄像头,显示器,鼠标,键盘,网卡或wifi接口。
本公开还揭露一种芯片或集成电路芯片,其包括了集成电路装置700。本公开还揭露一种芯片封装结构,其包括了上述芯片。
本公开另一个实施例是一种板卡,其包括了上述芯片封装结构。参阅图8,板卡800除了包括多个上述芯片802以外,还可以包括其他的配套部件,该配套部件包括存储器件804、接口装置806和控制器件808。
存储器件804与芯片封装结构内的芯片802通过总线814连接,用于存储数据。存储器件804可以包括多组存储单元810。
接口装置806与所述芯片封装结构内的芯片802电连接。所述接口装置806用于实现芯片802与外部设备812(例如服务器或计算机)之间的数据传输。在此实施例中,接口装置806为标准PCIe接口,待处理的数据由服务器通过标准PCIe接口传递至芯片802,实现数据转移。芯片802的计算结果亦由接口装置806传送回外部设备812。
控制器件808与芯片802电连接,以便对芯片802的状态进行监控。具体地,芯片802与控制器件808可以通过SPI接口电连接。控制器件808可以包括单片机(“MCU”,MicroController Unit)。
本公开的另一个实施例是一种电子设备或装置,其包括了上述板卡800。根据不同的应用场景,电子设备或装置可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本公开另一个实施例为一种计算机可读存储介质,其上存储有热迁移的计算机程序代码,当所述计算机程序代码由处理器运行时,执行如图3或图5所述的方法。
本公开可以实现将源服务器中的虚拟硬件的驱动程序、固件和硬件信息、上下文信息及其状态信息热迁移到目的服务器上,特别是热迁移专用集成电路的虚拟计算装置、虚拟视频编解码装置、虚拟JPEG编解码装置等。
依据以下条款可更好地理解前述内容:
条款A1、一种实现热迁移的系统,连接至内核空间,包括:硬件,虚拟化为多个虚拟硬件;以及只读存储器,存储有固件,该固件包括:物理功能,用以:接收来自所述内核空间的热迁移启动请求,所述热迁移启动请求指定特定虚拟硬件,所述特定虚拟硬件为所述多个虚拟硬件其中之一;发送待迁移指令至所述内核空间,所述待迁移指令记录待迁移数据,所述待迁移数据关联至所述特定虚拟硬件;自所述特定虚拟硬件分批取出所述待迁移数据并发送至所述内核空间;以及当所述待迁移数据发送完毕后,发送结束信号至所述内核空间。
条款A2、根据A1所述的系统,其中所述硬件包括计算装置,所述特定虚拟硬件为特定虚拟计算装置,所述计算装置包括:智能处理装置,用以执行神经网络的卷积计算;以及共享存储单元,用以暂存所述卷积计算的计算中间值,所述共享存储单元虚拟化为多个虚拟共享存储单元,所述特定虚拟计算装置对应一个虚拟共享存储单元;其中,所述待迁移数据包括存储在所述虚拟共享存储单元的计算中间值。
条款A3、根据A2所述的系统,其中所述计算装置还包括:存储单元核,虚拟化为多个虚拟存储单元核,所述特定虚拟计算装置配置一个虚拟存储单元核;其中,所述待迁移数据包括存储在所述虚拟存储单元核的数据。
条款A4、根据A1所述的系统,其中所述硬件包括存储装置,虚拟化为多个虚拟存储装置,所述特定虚拟硬件为特定虚拟存储装置,所述待迁移数据包括存储在所述特定虚拟存储装置的数据。
条款A5、根据A1所述的系统,其中所述硬件包括视频编解码装置,所述特定虚拟硬件为特定虚拟视频编解码装置。
条款A6、根据A1所述的系统,其中所述硬件包括JPEG编解码装置,所述特定虚拟硬件为特定虚拟JPEG编解码装置。
条款A7、根据A1所述的系统,其中所述固件还包括多个虚拟功能,受所述物理功能管理,所述特定虚拟硬件对应一个虚拟功能,所述物理功能响应所述热迁移启动请求,闲置所述虚拟功能。
条款A8、根据A1所述的系统,其中当所述待迁移数据发送完毕后,所述物理功能释放所述硬件及所述虚拟功能。
条款A9、根据A1所述的系统,其中所述待迁移数据包括驱动程序、固件和硬件信息、上下文信息及状态信息其中之一。
条款A10、根据A1所述的系统,其中所述内核空间连接至用户空间,所述用户空间载有用户虚拟机,所述用户虚拟机初始化所述热迁移启动请求。
条款A11、根据A10所述的系统,其中所述用户虚拟机为快速仿真器。
条款A12、根据A10所述的系统,其中所述内核空间将所述待迁移指令发送至所述用户虚拟机,并将所述待迁移数据发送至所述用户虚拟机。
条款A13、根据A10所述的系统,其中所述内核空间载有物理功能驱动程序,所述用户空间包括用户端内核空间,所述用户端内核空间载有虚拟功能驱动程序,所述物理功能驱动程序接收来自所述用户虚拟机的所述热迁移启动请求并发送至所述虚拟功能驱动程序,所述虚拟功能驱动程序暂停执行来自所述用户空间的任务。
条款A14、根据A13所述的系统,其中所述虚拟功能驱动程序不返回控制指令至所述用户空间,以暂停执行所述任务。
条款A15、根据A13所述的系统,其中所述内核空间发送所述结束信号至所述虚拟功能驱动程序,所述虚拟功能驱动程序接续执行所述任务。
条款A16、根据A13所述的系统,其中当暂停执行来自所述用户空间的任务后,所述虚拟功能驱动程序通知所述物理功能驱动程序,所述物理功能驱动程序发送所述热迁移启动请求至所述物理功能。
条款A17、一种实现热迁移的系统,连接至内核空间,包括:硬件,虚拟化为多个虚拟硬件;以及只读存储器,存储有固件,该固件包括:物理功能,用以接收待迁移数据,所述待迁移数据关联至特定虚拟硬件,所述特定虚拟硬件为所述多个虚拟硬件其中之一;以及多个虚拟功能,受所述物理功能管理,所述特定虚拟硬件对应一个虚拟功能;其中,所述物理功能通过所述虚拟功能发送所述待迁移数据至所述特定虚拟硬件;当所述待迁移数据发送完毕后,所述物理功能发送结束信号至所述内核空间。
条款A18、根据A17所述的系统,其中所述硬件包括计算装置,所述特定虚拟硬件为特定虚拟计算装置,所述计算装置包括:智能处理装置,用以执行神经网络的卷积计算;以及共享存储单元,用以暂存所述卷积计算的计算中间值,所述共享存储单元虚拟化为多个虚拟共享存储单元,所述特定虚拟计算装置对应一个虚拟共享存储单元;其中,所述虚拟功能将所述待迁移数据中的计算中间值存储至所述虚拟共享存储单元。
条款A19、根据A18所述的系统,其中所述计算装置还包括:存储单元核,虚拟化为多个虚拟存储单元核,所述特定虚拟计算装置配置一个虚拟存储单元核;其中,所述虚拟功能将所述待迁移数据中的相应数据存储至所述虚拟存储单元核。
条款A20、根据A17所述的系统,其中所述硬件包括存储装置,虚拟化为多个虚拟存储装置,所述特定虚拟硬件为特定虚拟存储装置,所述虚拟功能将所述待迁移数据中的相应数据存储至所述虚拟存储装置。
条款A21、根据A17所述的系统,其中所述硬件包括视频编解码装置,所述特定虚拟硬件为特定虚拟视频编解码装置。
条款A22、根据A17所述的系统,其中所述硬件包括JPEG编解码装置,所述特定虚拟硬件为特定虚拟JPEG编解码装置。
条款A23、根据A17所述的系统,其中所述待迁移数据包括驱动程序、固件和硬件信息、上下文信息及状态信息其中之一。
条款A24、根据A17所述的系统,其中所述内核空间连接至用户空间,所述用户空间载有用户虚拟机,所述用户虚拟机自片外接收所述待迁移数据并初始化热迁移启动请求。
条款A25、根据A24所述的系统,其中所述用户虚拟机为快速仿真器。
条款A26、根据A24所述的系统,其中所述内核空间载有物理功能驱动程序,用以自所述用户虚拟机接收所述待迁移数据,并响应所述热迁移启动请求,将所述待迁移数据发送至所述物理功能。
条款A27、根据A26所述的系统,其中所述物理功能驱动程序发送所述结束信号至所述用户虚拟机。
条款A28、根据A27所述的系统,其中所述用户空间包括用户端内核空间,所述用户端内核空间载有虚拟功能驱动程序,所述用户虚拟机响应所述结束信号,通知所述虚拟功能驱动程序所述热迁移已完成,所述虚拟功能驱动程序接收来自所述用户空间的任务,所述任务控制所述特定虚拟硬件。
条款A29、根据A28所述的系统,其中所述用户虚拟机响应所述结束信号,改变基地址寄存器的状态,所述基地址寄存器指向所述特定虚拟硬件。
条款A30、一种集成电路装置,包括条款A1-29的任意一项所述的系统。
条款A31、一种板卡,包括条款A30所述的集成电路装置。
条款A32、一种对系统进行热迁移保存路径的方法,所述系统包括硬件,虚拟化为多个虚拟硬件,所述方法包括:接收热迁移启动请求,所述热迁移启动请求指定特定虚拟硬件,所述特定虚拟硬件为所述多个虚拟硬件其中之一;闲置特定虚拟功能,所述特定虚拟功能对应至所述特定虚拟硬件;自所述特定虚拟硬件分批发送待迁移数据;以及当所述待迁移数据发送完毕后,发送结束信号。
条款A33、根据A32所述的方法,其中所述硬件为人工智能片上系统的计算装置、存储装置、视频编解码装置及JPEG编解码装置其中之一。
条款A34、一种对系统进行热迁移恢复路径的方法,所述系统包括硬件,虚拟化为多个虚拟硬件,所述方法包括:接收待迁移数据,所述热迁移数据对应至特定虚拟硬件,所述特定虚拟硬件为所述多个虚拟硬件其中之一;闲置特定虚拟功能,所述特定虚拟功能对应至所述特定虚拟硬件;通过特定虚拟功能发送所述待迁移数据至所述特定虚拟硬件;以及当所述待迁移数据发送完毕后,发送结束信号。
条款A35、根据A34所述的方法,其中所述硬件为人工智能片上系统的计算装置、存储装置、视频编解码装置及JPEG编解码装置其中之一。
条款A36、一种计算机可读存储介质,其上存储有热迁移的计算机程序代码,当所述计算机程序代码由处理器运行时,执行条款A 32-35的任意一项所述的方法。
Claims (36)
1.一种实现热迁移的系统,连接至内核空间,包括:
硬件,虚拟化为多个虚拟硬件;以及
只读存储器,存储有固件,该固件包括:
物理功能,用以:
接收来自所述内核空间的热迁移启动请求,所述热迁移启动请求指定特定虚拟硬件,所述特定虚拟硬件为所述多个虚拟硬件其中之一;
发送待迁移指令至所述内核空间,所述待迁移指令记录待迁移数据,所述待迁移数据关联至所述特定虚拟硬件;
自所述特定虚拟硬件分批取出所述待迁移数据并发送至所述内核空间;以及
当所述待迁移数据发送完毕后,发送结束信号至所述内核空间。
2.根据权利要求1所述的系统,其中所述硬件包括计算装置,所述特定虚拟硬件为特定虚拟计算装置,所述计算装置包括:
智能处理装置,用以执行神经网络的卷积计算;以及
共享存储单元,用以暂存所述卷积计算的计算中间值,所述共享存储单元虚拟化为多个虚拟共享存储单元,所述特定虚拟计算装置对应一个虚拟共享存储单元;
其中,所述待迁移数据包括存储在所述虚拟共享存储单元的计算中间值。
3.根据权利要求2所述的系统,其中所述计算装置还包括:
存储单元核,虚拟化为多个虚拟存储单元核,所述特定虚拟计算装置配置一个虚拟存储单元核;
其中,所述待迁移数据包括存储在所述虚拟存储单元核的数据。
4.根据权利要求1所述的系统,其中所述硬件包括存储装置,虚拟化为多个虚拟存储装置,所述特定虚拟硬件为特定虚拟存储装置,所述待迁移数据包括存储在所述特定虚拟存储装置的数据。
5.根据权利要求1所述的系统,其中所述硬件包括视频编解码装置,所述特定虚拟硬件为特定虚拟视频编解码装置。
6.根据权利要求1所述的系统,其中所述硬件包括JPEG编解码装置,所述特定虚拟硬件为特定虚拟JPEG编解码装置。
7.根据权利要求1所述的系统,其中所述固件还包括多个虚拟功能,受所述物理功能管理,所述特定虚拟硬件对应一个虚拟功能,所述物理功能响应所述热迁移启动请求,闲置所述虚拟功能。
8.根据权利要求1所述的系统,其中当所述待迁移数据发送完毕后,所述物理功能释放所述硬件及所述虚拟功能。
9.根据权利要求1所述的系统,其中所述待迁移数据包括驱动程序、固件和硬件信息、上下文信息及状态信息其中之一。
10.根据权利要求1所述的系统,其中所述内核空间连接至用户空间,所述用户空间载有用户虚拟机,所述用户虚拟机初始化所述热迁移启动请求。
11.根据权利要求10所述的系统,其中所述用户虚拟机为快速仿真器。
12.根据权利要求10所述的系统,其中所述内核空间将所述待迁移指令发送至所述用户虚拟机,并将所述待迁移数据发送至所述用户虚拟机。
13.根据权利要求10所述的系统,其中所述内核空间载有物理功能驱动程序,所述用户空间包括用户端内核空间,所述用户端内核空间载有虚拟功能驱动程序,所述物理功能驱动程序接收来自所述用户虚拟机的所述热迁移启动请求并发送至所述虚拟功能驱动程序,所述虚拟功能驱动程序暂停执行来自所述用户空间的任务。
14.根据权利要求13所述的系统,其中所述虚拟功能驱动程序不返回控制指令至所述用户空间,以暂停执行所述任务。
15.根据权利要求13所述的系统,其中所述内核空间发送所述结束信号至所述虚拟功能驱动程序,所述虚拟功能驱动程序接续执行所述任务。
16.根据权利要求13所述的系统,其中当暂停执行来自所述用户空间的任务后,所述虚拟功能驱动程序通知所述物理功能驱动程序,所述物理功能驱动程序发送所述热迁移启动请求至所述物理功能。
17.一种实现热迁移的系统,连接至内核空间,包括:
硬件,虚拟化为多个虚拟硬件;以及
只读存储器,存储有固件,该固件包括:
物理功能,用以接收待迁移数据,所述待迁移数据关联至特定虚拟硬件,所述特定虚拟硬件为所述多个虚拟硬件其中之一;以及
多个虚拟功能,受所述物理功能管理,所述特定虚拟硬件对应一个虚拟功能;
其中,所述物理功能通过所述虚拟功能发送所述待迁移数据至所述特定虚拟硬件;当所述待迁移数据发送完毕后,所述物理功能发送结束信号至所述内核空间。
18.根据权利要求17所述的系统,其中所述硬件包括计算装置,所述特定虚拟硬件为特定虚拟计算装置,所述计算装置包括:
智能处理装置,用以执行神经网络的卷积计算;以及
共享存储单元,用以暂存所述卷积计算的计算中间值,所述共享存储单元虚拟化为多个虚拟共享存储单元,所述特定虚拟计算装置对应一个虚拟共享存储单元;
其中,所述虚拟功能将所述待迁移数据中的计算中间值存储至所述虚拟共享存储单元。
19.根据权利要求18所述的系统,其中所述计算装置还包括:
存储单元核,虚拟化为多个虚拟存储单元核,所述特定虚拟计算装置配置一个虚拟存储单元核;
其中,所述虚拟功能将所述待迁移数据中的相应数据存储至所述虚拟存储单元核。
20.根据权利要求17所述的系统,其中所述硬件包括存储装置,虚拟化为多个虚拟存储装置,所述特定虚拟硬件为特定虚拟存储装置,所述虚拟功能将所述待迁移数据中的相应数据存储至所述虚拟存储装置。
21.根据权利要求17所述的系统,其中所述硬件包括视频编解码装置,所述特定虚拟硬件为特定虚拟视频编解码装置。
22.根据权利要求17所述的系统,其中所述硬件包括JPEG编解码装置,所述特定虚拟硬件为特定虚拟JPEG编解码装置。
23.根据权利要求17所述的系统,其中所述待迁移数据包括驱动程序、固件和硬件信息、上下文信息及状态信息其中之一。
24.根据权利要求17所述的系统,其中所述内核空间连接至用户空间,所述用户空间载有用户虚拟机,所述用户虚拟机自片外接收所述待迁移数据并初始化热迁移启动请求。
25.根据权利要求24所述的系统,其中所述用户虚拟机为快速仿真器。
26.根据权利要求24所述的系统,其中所述内核空间载有物理功能驱动程序,用以自所述用户虚拟机接收所述待迁移数据,并响应所述热迁移启动请求,将所述待迁移数据发送至所述物理功能。
27.根据权利要求26所述的系统,其中所述物理功能驱动程序发送所述结束信号至所述用户虚拟机。
28.根据权利要求27所述的系统,其中所述用户空间包括用户端内核空间,所述用户端内核空间载有虚拟功能驱动程序,所述用户虚拟机响应所述结束信号,通知所述虚拟功能驱动程序所述热迁移已完成,所述虚拟功能驱动程序接收来自所述用户空间的任务,所述任务控制所述特定虚拟硬件。
29.根据权利要求28所述的系统,其中所述用户虚拟机响应所述结束信号,改变基地址寄存器的状态,所述基地址寄存器指向所述特定虚拟硬件。
30.一种集成电路装置,包括根据权利要求1-29的任意一项所述的系统。
31.一种板卡,包括根据权利要求30所述的集成电路装置。
32.一种对系统进行热迁移保存路径的方法,所述系统包括硬件,虚拟化为多个虚拟硬件,所述方法包括:
接收热迁移启动请求,所述热迁移启动请求指定特定虚拟硬件,所述特定虚拟硬件为所述多个虚拟硬件其中之一;
闲置特定虚拟功能,所述特定虚拟功能对应至所述特定虚拟硬件;
自所述特定虚拟硬件分批发送待迁移数据;以及
当所述待迁移数据发送完毕后,发送结束信号。
33.根据权利要求32所述的方法,其中所述硬件为人工智能片上系统的计算装置、存储装置、视频编解码装置及JPEG编解码装置其中之一。
34.一种对系统进行热迁移恢复路径的方法,所述系统包括硬件,虚拟化为多个虚拟硬件,所述方法包括:
接收待迁移数据,所述热迁移数据对应至特定虚拟硬件,所述特定虚拟硬件为所述多个虚拟硬件其中之一;
闲置特定虚拟功能,所述特定虚拟功能对应至所述特定虚拟硬件;
通过特定虚拟功能发送所述待迁移数据至所述特定虚拟硬件;以及
当所述待迁移数据发送完毕后,发送结束信号。
35.根据权利要求34所述的方法,其中所述硬件为人工智能片上系统的计算装置、存储装置、视频编解码装置及JPEG编解码装置其中之一。
36.一种计算机可读存储介质,其上存储有热迁移的计算机程序代码,当所述计算机程序代码由处理器运行时,执行权利要求32-35的任意一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010379648.XA CN113626131B (zh) | 2020-05-07 | 2020-05-07 | 实现热迁移的方法、芯片、板卡和存储介质 |
US17/923,677 US20230185595A1 (en) | 2020-05-07 | 2021-05-07 | Method for realizing live migration, chip, board, and storage medium |
EP21800406.7A EP4148568A1 (en) | 2020-05-07 | 2021-05-07 | Method for realizing live migration, chip, board, and storage medium |
PCT/CN2021/092199 WO2021223744A1 (zh) | 2020-05-07 | 2021-05-07 | 实现热迁移的方法、芯片、板卡和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010379648.XA CN113626131B (zh) | 2020-05-07 | 2020-05-07 | 实现热迁移的方法、芯片、板卡和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113626131A true CN113626131A (zh) | 2021-11-09 |
CN113626131B CN113626131B (zh) | 2023-03-28 |
Family
ID=78377071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010379648.XA Active CN113626131B (zh) | 2020-05-07 | 2020-05-07 | 实现热迁移的方法、芯片、板卡和存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230185595A1 (zh) |
EP (1) | EP4148568A1 (zh) |
CN (1) | CN113626131B (zh) |
WO (1) | WO2021223744A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114500718B (zh) * | 2021-12-27 | 2023-11-03 | 天翼云科技有限公司 | 一种云手机管理方法及装置 |
CN114691300A (zh) * | 2022-03-25 | 2022-07-01 | 阿里巴巴(中国)有限公司 | 一种虚拟机实例的热迁移方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101398770A (zh) * | 2007-09-30 | 2009-04-01 | 赛门铁克公司 | 迁移一个或多个虚拟机的系统和方法 |
US20100083276A1 (en) * | 2008-09-30 | 2010-04-01 | Microsoft Corporation | On-the-fly replacement of physical hardware with emulation |
US20110066597A1 (en) * | 2009-09-14 | 2011-03-17 | Vmware, Inc. | Method and System for Performing Live Migration of Persistent Data of a Virtual Machine |
US20130238786A1 (en) * | 2012-03-08 | 2013-09-12 | Empire Technology Development Llc | Secure migration of virtual machines |
WO2017020927A1 (en) * | 2015-07-31 | 2017-02-09 | Hewlett-Packard Development Company, L P | Migration of computer systems |
CN108037980A (zh) * | 2018-01-02 | 2018-05-15 | 腾讯科技(深圳)有限公司 | 控制执行虚拟机热迁移的方法、装置和可读存储介质 |
US20190129744A1 (en) * | 2016-06-29 | 2019-05-02 | Altera Corporation | Live migration of hardware accelerated applications |
US20190361732A1 (en) * | 2018-05-25 | 2019-11-28 | Vmware, Inc. | Live migration of a virtualized compute accelerator workload |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262557B (zh) * | 2010-05-25 | 2015-01-21 | 运软网络科技(上海)有限公司 | 通过总线架构构建虚拟机监控器的方法及性能服务框架 |
KR20120117151A (ko) * | 2011-04-14 | 2012-10-24 | 삼성전자주식회사 | 디바이스에서 가상 머신 마이그레이션 과정을 수행하기 위한 장치 및 방법 |
CN108121574B (zh) * | 2016-11-29 | 2021-09-24 | 阿里巴巴集团控股有限公司 | 一种内核模块的热升级方法、装置及虚拟机系统 |
-
2020
- 2020-05-07 CN CN202010379648.XA patent/CN113626131B/zh active Active
-
2021
- 2021-05-07 EP EP21800406.7A patent/EP4148568A1/en active Pending
- 2021-05-07 US US17/923,677 patent/US20230185595A1/en active Pending
- 2021-05-07 WO PCT/CN2021/092199 patent/WO2021223744A1/zh unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101398770A (zh) * | 2007-09-30 | 2009-04-01 | 赛门铁克公司 | 迁移一个或多个虚拟机的系统和方法 |
US20100083276A1 (en) * | 2008-09-30 | 2010-04-01 | Microsoft Corporation | On-the-fly replacement of physical hardware with emulation |
US20110066597A1 (en) * | 2009-09-14 | 2011-03-17 | Vmware, Inc. | Method and System for Performing Live Migration of Persistent Data of a Virtual Machine |
US20130238786A1 (en) * | 2012-03-08 | 2013-09-12 | Empire Technology Development Llc | Secure migration of virtual machines |
WO2017020927A1 (en) * | 2015-07-31 | 2017-02-09 | Hewlett-Packard Development Company, L P | Migration of computer systems |
US20190129744A1 (en) * | 2016-06-29 | 2019-05-02 | Altera Corporation | Live migration of hardware accelerated applications |
CN108037980A (zh) * | 2018-01-02 | 2018-05-15 | 腾讯科技(深圳)有限公司 | 控制执行虚拟机热迁移的方法、装置和可读存储介质 |
US20190361732A1 (en) * | 2018-05-25 | 2019-11-28 | Vmware, Inc. | Live migration of a virtualized compute accelerator workload |
Non-Patent Citations (1)
Title |
---|
孙彩兰: "私有云研究与设计", 《好家长》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113626131B (zh) | 2023-03-28 |
WO2021223744A1 (zh) | 2021-11-11 |
EP4148568A1 (en) | 2023-03-15 |
US20230185595A1 (en) | 2023-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1674987B1 (en) | Systems and methods for exposing processor topology for virtual machines | |
CN112286645B (zh) | 一种gpu资源池调度系统及方法 | |
US10176007B2 (en) | Guest code emulation by virtual machine function | |
US9798565B2 (en) | Data processing system and method having an operating system that communicates with an accelerator independently of a hypervisor | |
CN103034524A (zh) | 半虚拟化的虚拟gpu | |
CN113326226A (zh) | 一种虚拟化的方法、装置、板卡及计算机可读存储介质 | |
CN104714846A (zh) | 资源处理方法、操作系统及设备 | |
CN106844007A (zh) | 一种基于空间复用的虚拟化方法与系统 | |
US20180217859A1 (en) | Technologies for duplicating virtual machine states | |
CN113626131B (zh) | 实现热迁移的方法、芯片、板卡和存储介质 | |
WO2019028682A1 (zh) | 一种多系统共享内存的管理方法及装置 | |
US20220012087A1 (en) | Virtual Machine Migration Method and System | |
CN113934504A (zh) | 一种系统以及中断处理方法 | |
CN113568734A (zh) | 基于多核处理器的虚拟化方法、系统、多核处理器和电子设备 | |
CN112433823A (zh) | 动态虚拟化物理卡的设备及方法 | |
CN113326091A (zh) | 一种虚拟化的方法、设备、板卡及计算机可读存储介质 | |
CN114281467A (zh) | 实现热迁移的系统方法、装置和存储介质 | |
CN115904617A (zh) | 一种基于sr-iov技术的gpu虚拟化实现方法 | |
WO2022062510A1 (zh) | 实现热迁移的设备及方法 | |
CN113326118A (zh) | 基于多核处理器的虚拟化方法、系统、多核处理器和电子设备 | |
CN114281468A (zh) | 实现热迁移的装置、相关方法及其可读存储介质 | |
US8402191B2 (en) | Computing element virtualization | |
CN113326110A (zh) | 一种片上系统及板卡 | |
CN114328366A (zh) | 实现序列化及反序列化嵌套数据的方法、装置和存储介质 | |
WO2021170055A1 (zh) | 一种虚拟化的方法、设备、板卡及计算机可读存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |