CN114281468A - 实现热迁移的装置、相关方法及其可读存储介质 - Google Patents

实现热迁移的装置、相关方法及其可读存储介质 Download PDF

Info

Publication number
CN114281468A
CN114281468A CN202011045841.6A CN202011045841A CN114281468A CN 114281468 A CN114281468 A CN 114281468A CN 202011045841 A CN202011045841 A CN 202011045841A CN 114281468 A CN114281468 A CN 114281468A
Authority
CN
China
Prior art keywords
identifier
information
virtual
migrated
type
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
CN202011045841.6A
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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN202011045841.6A priority Critical patent/CN114281468A/zh
Priority to US18/003,689 priority patent/US20230244380A1/en
Priority to PCT/CN2021/102073 priority patent/WO2022062510A1/zh
Publication of CN114281468A publication Critical patent/CN114281468A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及实现热迁移保存的系统、装置、板卡及生成或判读待迁移信息的方法及其可读存储介质,其中本公开的片上系统包括在集成电路装置中,该集成电路装置包括通用互联接口和其他处理装置。计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。集成电路装置还可以包括存储装置,存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据存储。

Description

实现热迁移的装置、相关方法及其可读存储介质
技术领域
本公开一般涉及计算机领域。更具体地,本公开涉及一种实现热迁移保存的系统、装置、板卡及生成或判读待迁移信息的方法及其可读存储介质。
背景技术
热迁移(Live Migration)又称为动态迁移、实时迁移,即虚拟机通过保存(SAVE)/恢复(LOAD)的程序,将整个虚拟机的运行状态完整保存下来,从一台物理服务器迁移到另一台物理服务器上。恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。
在人工智能领域中,由于专用集成电路(ASIC)的复杂度高,以至于无法完全实现热迁移。特别是在热迁移过程中,源服务器如何序列化信息以及目的服务器如何反序列化信息,是现有技术中需要解决的问题。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本公开的方案提供了一种实现热迁移保存的系统、装置、板卡及生成或判读待迁移信息的方法及其可读存储介质。
根据本公开的一方面,提供一种实现热迁移保存的系统,包括串化装置,用以:响应热迁移启动请求以生成待迁移信息的数据结构,所述待迁移信息包括结构体;在所述数据结构中生成符号标识符,用以标记所述结构体;以及在所述符号标识符中置入前缀符号及所述结构体的名称。
根据本公开的另一方面,提供一种实现热迁移恢复的系统,包括:只读存储装置及解串装置。只读存储装置存储有固件,所述固件包括物理功能,虚拟化为多个虚拟功能,所述物理功能接收待迁移信息,所述待迁移信息包括结构体,所述待迁移信息的数据结构包括符号标识符,用以标记所述结构体,所述符号标识符包括前缀符号及所述结构体的名称。解串装置用以根据所述前缀符号识别所述结构体的名称。
根据本公开的另一方面,提供一种集成电路装置,包括且前述任意一项所述的系统,以及提供一种板卡,包括所述的集成电路装置。
根据本公开的另一方面,提供一种生成待迁移信息的数据结构的方法,包括:接收热迁移启动请求;响应所述热迁移启动请求,生成所述数据结构,所述待迁移信息包括结构体,所述生成所述数据结构的步骤包括:生成符号标识符,用以标记所述结构体,所述符号标识符包括前缀符号及所述结构体的名称;以及发送所述待迁移信息。
根据本公开的另一方面,提供一种判读待迁移信息的方法,包括:接收所述待迁移信息,所述待迁移信息包括结构体,所述待迁移信息的数据结构包括符号标识符,用以标记所述结构体,所述符号标识符包括前缀符号及所述结构体的名称;识别所述前缀符号;以及根据所述前缀符号识别所述结构体的名称。
根据本公开的另一方面,提供一种计算机可读存储介质,其上存储有热迁移的计算机程序代码,当所述计算机程序代码由处理器运行时,执行前述的方法。
本公开可以实现将源服务器上的信息序列化,并在目的服务器上反序列化信息,达到热迁移的技术效果。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的说明以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示出本公开实施例的人工智能芯片框架的示意图;
图2是示出本公开实施例的计算装置的内部结构示意图;
图3是本公开实施例的迁移保存路径的流程图;
图4是示出本公开实施例的源服务器端进行迁移保存路径的示意图;
图5是示出待迁移信息的数据结构示意图;
图6是示出本公开实施例的结构体在数据结构层的示意图;
图7是示出生成待迁移信息的数据结构的流程图;
图8是示出生成待迁移信息的数据结构的流程图;
图9是示出本公开实施例的迁移恢复路径的流程图;
图10是示出本公开实施例的目的服务器端进行迁移恢复路径的示意图;
图11是示出本公开实施例的解串装置实现热迁移恢复路径的流程图;
图12是示出本公开实施例的解串装置反序列化协议层的流程图;
图13是示出本公开实施例的反序列化组态信息的流程图;
图14是示出本公开实施例的反序列化数据信息的流程图;
图15是示出本公开实施例的识别或取出序列化层的信息的流程图;
图16是示出本公开实施例的集成电路装置的结构图;以及
图17是示出本公开实施例的板卡的示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本公开的具体实施方式。
本公开涉及一种采用虚拟化技术的框架,应用在专用集成电路上,例如用于神经网络的机器学习设备上,该机器学习设备可以是卷积神经网络加速器。以下将以人工智能芯片示例说明。
图1是人工智能芯片虚拟化的框架图,该框架100包括用户空间102、内核空间104及片上系统106,在图上以虚线区隔开。用户空间102为用户程序的运行空间,只执行简单的运算,不能直接调用系统资源,必须通过系统接口,才能向内核空间104发出指令。内核空间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无异,故不赘述。
本公开的一种应用场景是云端的数据中心。数据中心需要进行维护工作,以确保整个系统的稳定性及流畅度,这些维护工作涉及到计算机共享、数据库备份、故障排除、资源分配不均(如负载过重、负载过轻)和日常维护等。数据中心在进行前述的维护工作的同时,又必须确保系统的正常运作,使得用户不会察觉到任何差异。本公开基于图1和图2的架构,实现一种热迁移技术,将整个虚拟机的运行状态完整保存下来,并快速的恢复到原有硬件平台甚至是不同硬件平台上。恢复以后,虚拟机仍旧平滑运行。
基于前述示例性的框架,本公开的热迁移方案分为两阶段:第一阶段是将源服务器上的组态及数据打包并发送至目的服务器,即迁移保存路径;第二阶段是将这些组态及数据放置到目的服务器的相应处,即迁移恢复路径。此热迁移方案是将整个虚拟机的运行状态及数据完整保存下来,再快速恢复到原有硬件平台甚至是不同硬件平台上。不论是否在同一个平台上,源服务器和目的服务器都具有如图1和图2所示的架构,且目的服务器的硬件、软件、固件版本需等于或高于源服务器的硬件、软件、固件版本,以确保在迁移恢复时目的服务器能正确识别信息。热迁移方案的两阶段将分别说明之。
图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所示的虚拟化人工智能片上系统106,而QEMU对象模型则是模拟PCIe。
更详细来说,VMLU QOM 404的作用是在QEMU 402中添加一个虚拟PCIe设备,作为QEMU对象模型注册到QEMU 402里,并向QEMU 402表明具备热迁移能力,同时提供热迁移相关的调度例程(dispatch routine)函数,如此QEMU 402在热迁移时才能顺利调度。在此步骤中,QEMU 402通过调度例程函数对物理功能驱动程序403进行操作,以通知并控制物理功能驱动程序403配合展开热迁移。
至于用户空间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存储在虚拟机内核空间中,对用户空间102而言,基于,在热迁移的过程中它所见到的就是前述的虚拟PCIe设备,有可读写的内存映射I/O空间,虚拟功能驱动程序405对内存映射I/O空间(即片上系统106)的读和写操作会被VMLU QOM 404捕捉并管理。对于读操作,VMLU QOM 404可以根据虚拟功能驱动程序405的需要返回应返回的值,使得虚拟功能驱动程序405和物理功能驱动程序403之间同步。
VMLU QOM 404通过调用物理功能驱动程序403的接口获取物理功能驱动程序403的迁移状态。当虚拟功能驱动程序405欲读取VMLU QOM404的内存映射I/O空间时,VMLU QOM404便将物理功能406的状态返回给虚拟功能驱动程序405,在此步骤中,VMLU QOM 404将物理功能驱动程序403准备进行热迁移的状态传递至虚拟功能驱动程序405。
在步骤304中,虚拟功能驱动程序405暂停执行来自用户空间102的任务。此实施例所采取的方式是,虚拟功能驱动程序405不把处理器的控制权返还给用户空间102的应用程序,客户操作系统便会继续等待,不会发出下一个任务给虚拟功能驱动程序405,以暂停执行用户空间102的任务。
在步骤305中,虚拟功能驱动程序405通知物理功能驱动程序403准备进行迁移。当暂停执行来自用户空间102的指令后,虚拟功能驱动程序405通知物理功能驱动程序403用户空间102已准备就绪,在热迁移期间不会有指令下发干扰。
在步骤306中,物理功能驱动程序403通知物理功能406准备进行迁移。物理功能驱动程序403发送热迁移启动请求至物理功能406,所述热迁移启动请求指定特定虚拟硬件408进行热迁移。特定虚拟硬件408为片上系统106多个虚拟硬件其中之一,为说明方便,在此假设热迁移启动请求是针对特定虚拟功能407及其相对应的特定虚拟硬件408。
特定虚拟硬件408可以是特定的虚拟计算装置,例如图1中的虚拟计算装置142,则待迁移信息包括虚拟计算装置142的组态、存储在虚拟共享存储单元的计算中间值,以及存储在虚拟存储单元核的数据等。特定虚拟硬件408也可以是图1的特定虚拟存储装置148,则待迁移信息包括存储在特定虚拟存储装置148的数据。特定虚拟硬件408还可以是虚拟视频编解码装置144或是虚拟JPEG编解码装置146,则待迁移信息包括虚拟视频编解码装置144或虚拟JPEG编解码装置146的组态,以及相应的编解码信息。
在步骤307中,物理功能406向物理功能驱动程序403上传包括特定虚拟功能407的驱动程序、固件和特定虚拟硬件408的信息、上下文信息及其状态信息的数据。首先,物理功能406发送指令至内核空间104的物理功能驱动程序403,所述指令记录了与特定虚拟硬件408有关的信息,使物理功能驱动程序403知悉有多少数据需要迁移。此时VMLU QOM 404处于停止-复制(stop and copy)阶段,不会为用户空间102分配物理资源,用户空间102自然没有时间片运行程序,进而中断用户空间102与特定虚拟功能407的联系,但其他的虚拟功能及其相对应的虚拟硬件则照常运行。在闲置特定虚拟功能407后,物理功能406自特定虚拟硬件408分批取出待迁移信息,并发送至物理功能驱动程序403。当待迁移信息发送完毕后,物理功能406发送结束信号至物理功能驱动程序403。
在步骤308中,VMLU QOM 404从物理功能驱动程序403获取待迁移信息。内核空间的物理功能驱动程序403将待迁移信息发送至VMLU QOM 404。
在步骤309中,VMLU QOM 404将待迁移信息嵌入待迁移指令中,传输到Libvirt401。
在步骤310中,当待迁移指令发送完毕后,物理功能406释放特定虚拟硬件408及特定虚拟功能407的资源,VMLU QOM 404发送结束信号至虚拟功能驱动程序405,虚拟功能驱动程序405发送控制信号至虚拟功能驱动程序的接口409,客户操作系统重启下发任务。结束整个迁移保存路径。
更详细来说,图4的系统还包括串化装置410,用以响应热迁移启动请求,在步骤307中把特定虚拟功能407的驱动程序、固件和特定虚拟硬件408的信息、上下文信息及其状态信息等数据序列化,以生成待迁移信息,上传至物理功能驱动程序403。此实施例的串化装置410可以利用硬件或固件来实现。如是硬件,串化装置410是配置在片上系统106中;如是固件,则存储在片上系统106的只读存储装置中。
为了确保目的服务器能顺利完成迁移恢复路径,在步骤307中生成的待迁移信息必须依循协议,源服务器基于该协议生成待迁移信息,目的服务器根据该协议判读待迁移信息,才能正确恢复组态和数据。为了完整描述特定虚拟功能407和特定硬件408的状态及数据,此实施例的协议规范的待迁移信息的数据结构如图5所示,串化装置410在此协议下生成三层框架:协议层51、数据结构层52及序列化层53。
协议层51用以记载待迁移信息的协议版本、数据的归属、长度等信息。在此实施例中,串化装置410在协议层51生成10个标识符,分别是幻数标识符501、版本标识符502、请求响应标识符503、命令标识符504、序号标识符505、数据来源标识符506、字节标识符507、域标识符508、保留标识符509、载荷标识符510。以下就这些标识符的作用进行示例性的说明。
幻数标识符501设置为4字节,用来标记待迁移信息的开始,更具体来说,幻数标识符501的字元是固定的,当目的服务器收到某个指令时,只要识别到幻数标识符501里的字元,就能知悉此为待迁移信息,进而启动迁移恢复路径的运行。
版本标识符502设置为2字节,用以标记待迁移信息的版本。如前所述,倘若源服务器的系统版本与目的服务器的系统版本不一致,特别是源服务器的系统版本高于目的服务器的系统版本时,会产生兼容性的问题,为了使目的服务器可以判断兼容性,协议层51利用版本标识符502来记载待迁移信息版本,也就是记载源服务器的系统版本。
请求响应标识符503设置为1字节,用以表示该指令是请求或响应。
命令标识符504设置为1字节,用以标示待迁移信息的任务种类,此实施例的任务种类包括迁移状态/数据和更新数据字典。迁移状态和数据已在前说明,不再赘述。数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,其目的是对数据的各个元素做出详细的说明。简而言之,数据字典是描述数据的信息集合,是对系统中使用的所有数据元素的定义的集合。更新数据字典便是更新数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述。
序号标识符505设置为4字节,用以记载待迁移信息的流水号,该流水号对应各待迁移信息间的先后顺序。
数据来源标识符506设置为2字节,用以记载待迁移信息中的信息来自哪个装置,即图4中的特定硬件408,也就是特定虚拟功能407对应的欲进行热迁移的虚拟计算装置、虚拟视频编解码装置、虚拟JPEG编解码装置及虚拟存储装置至少其中之一。
字节标识符507设置为8字节,用以记录待迁移信息的总字节数或是有效载荷的总字节数。
域标识符508用以标记欲进行热迁移的特定虚拟功能,即图4中的特定虚拟功能407。
保留标识符509设置为2字节,保留为日后需要记载其他信息时使用。
载荷标识符510则用以记载数据结构层52的信息。数据结构层52用于表示待迁移信息的组织结构。对于热迁移来说,通常不需要太过详细地描述数据拓扑以及数据结构之间的关联,原因是源服务器与目的服务器具有类似的甚至完全相同的框架,所以此实施例的数据结构层52不需记载太多的信息,只要让目的服务器有足够的信息来理解源服务器的待迁移信息即可。
本公开的待迁移信息分为两种,一种是组态,另一种是数据。
当待迁移信息是组态时,在此实施例中,串化装置410在数据结构层52中生成的协议框架如组态框架54所示,包括生成域标识符511、芯片标识符512、板卡标识符513、微控制器标识符514、固件标识符515、主机驱动标识符516、虚拟机标识符517、保留标识符518、计算装置标识符519、存储装置标识符520、视频编解码装置标识符521、JPEG编解码装置标识符522、PCIe标识符523及保留标识符524。
域标识符511用以标记特定虚拟功能407;芯片标识符512用以记载源服务器的芯片组型号;板卡标识符513用以记载源服务器的板卡版本或型号。
微控制器标识符514用以记载源服务器的微控制器的版本,微控制器在片上系统106中是一种通用控制元件,用来侦测或控制服务器环境的,例如侦测或控制服务器温度及工作频率等。
固件标识符515用以记载源服务器的固件版本;主机驱动标识符516用以记载源服务器的主机驱动软件版本;虚拟机标识符517用以记载源服务器的虚拟机驱动软件版本;保留标识符518和保留标识符524暂不使用,保留为日后需要记载其他信息时使用。
而计算装置标识符519、存储装置标识符520、视频编解码装置标识符521、JPEG编解码装置标识符522统称为特定装置标识符,用以记载图4中的特定硬件408的组态。更详细来说,计算装置标识符519用以记载源服务器的虚拟计算装置(如图1的虚拟计算装置142)的组态;存储装置标识符520用以记载源服务器的虚拟存储装置(如图1的虚拟存储装置148)的组态;视频编解码装置标识符521用以记载源服务器的虚拟视频编解码装置(如图1的虚拟视频编解码装置144)的组态;JPEG编解码装置标识符522用以记载源服务器的虚拟JPEG编解码装置(如图1的虚拟JPEG编解码装置146)的组态。
PCIe标识符523用以记载源服务器的虚拟接口(如图1的虚拟接口140)的组态,此处虚拟接口指的是指派给特定虚拟功能407的PCIe虚拟接口。
当待迁移信息是数据信息时,这些数据信息原本存储在内存中,此处的内存为特定硬件408可以直接访问的虚拟存储单位,可能是虚拟计算装置142、虚拟视频编解码装置144或虚拟JPEG编解码装置146的内部存储空间,例如虚拟计算装置142中的虚拟共享存储单元,内存也可以是虚拟存储装置148。串化装置410会生成数据框架55来搭载信息。此实施例考虑到某些复杂的场景可能需要描述数据之间的关联,因此串化装置410采用特定符号来显示数据之间的关联性,使得目的服务器可以根据这些信息完整并准确地恢复数据。
数据结构层52所记载的数据信息可能是类型不同但是又相关的若干数据。此实施例的串化装置410根据数据之间的关联性,定义一种结构体,其包括至少一个类型,每个类型又是由至少一个变量(即数据)所组成。换言之,数个相关的变量集合成一个类型,数个相关的类型集合成一个结构体。这些结构体、类型、变量及其关系均存储在前述的内存中。
在标记结构体时,串化装置410会在结构体名称前面添加前缀,用来作为表述结构体的起始符号,在此实施例中用字符串作为前缀符号,前缀符号可以是任何非英文字母和数字的字符,像是“.”、“$”、“/”、“#”、“%”、“&”、“*”及“-”等。为方便说明,以下将统一使用英文句号“.”作为前缀符号。
具体来说,串化装置410所生成的数据框架55包括符号标识符525、类型标识符526、键标识符527及实体标识符528,这些标识符用来描述及记载结构体、类型及变量。
符号标识符525用以标记结构体或是数据框架55的开始,串化装置410根据协议在符号标识符525中置入前缀符号及结构体的名称。以结构体名称为“foo_nested”为例,其符号标识符525记载为“.foo_nested”。由于源服务器与目的服务器遵循相同协议,因此当目的服务器识别到前缀符号“.”时,便知悉前缀符号后紧跟着是结构体名称,且之后的标识符均是该结构体的相关描述。
类型标识符526用以记载该结构体下的各种类型,类型包括树、图像、链表、堆、整数及浮点数等。类型的名称可以由串化装置410所定义或是数据存储在内存中所使用的。例如将整数a(其值为20)与整数b(其值为10)定义为该结构体下的同一类型,而串化装置410将此类型命名为“foo_nested_t”,则类型标识符526便记载整数a与整数b的类别名称“foo_nested_t”。
键标识符527用以记载在该类型下的变量名称。在标记变量时,根据协议,串化装置410会在变量名称前面添加前缀,其前缀为符号标识符525的内容加上前缀符号加上变量名称。以前述整数a与整数b为例,由于类型“foo_nested_t”具有2个变量整数a与整数b,因此串化装置410在数据框架55中先描述整数a,因此整数a的键标识符527为“.foo_nested.a”。实体标识符528接着记载变量的数值,整数a的数值为20,因此实体标识符528直接记载“20”。
由于类型“foo_nested_t”还有一个变量b,因此在描述整数a的键标识符527和实体标识符528后,会接续整数b的键标识符527和实体标识符528,分别记载“.foo_nested.b”及数值“10”。
此结构体“foo_nested”在数据结构层52的记载如图6所示。由前述说明可知,此实施例在待迁移信息中描述一个结构体时,先在符号标识符525记载结构体名称,在类型标识符526记载该结构体下的类型的名称,在键标识符527描述该类型下的变量名称,并在实体标识符528描述变量数值或字串。如果同一个类型具有多个变量,则在描述该类型的类型标识符526后重复键标识符527和实体标识符528,直到所有变量都描述完毕。倘若该结构体具有多个类型,则先描述第一个类型及第一个类型的所有变量,接着描述第二个类型及第二个类型的所有变量,以此类推,将该结构体的成员完整描述。
如果当变量是数值、字串、数列、列表等简单结构,则数据框架55已足够记载所有信息。当变量具有复杂结构时,实体标识符528会进一步展开成序列化层53,以将复杂结构序列化。回到图5,串化装置410在序列化层53下生成幻数标识符529、长度标识符530、字节次序标识符531、压缩标识符532、类型标识符533、键标识符534、计数标识符535、格式标识符536及数值标识符537。
幻数标识符529是特定字元,用以标示新数据段的开始,也就是序列化层53的开始,当目的服务器读取到幻数标识符529时,便能知悉接下来是序列化层53的信息并进行相应的处理。
长度标识符530用以表示该序列化层53的长度。
字节次序标识符531用以表示该序列化层53中的数据的存储字节序,一般是以大端模式或小端模式存储数据的。大端模式是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式类似于把数据当作字符串顺序处理,即地址由小向大增加,而数据从高位往低位存放。小端模式是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位有效地结合起来,高地址部分权值高,低地址部分权值低。
压缩标识符532用以标示数据信息的压缩形式。数据在进行传输时,会适当地进行压缩,以减少传输量,此实施例不限制压缩形式,但较佳的使用BDI(base deltaimmediate)压缩。
类型标识符533用以标示数据信息的类型。类型标识符533与类型标识符526所记载的内容不同,类型标识符526用以记载结构体下的各种类型,而类型标识符533用以标示数据本身的类型。
键标识符534用以标示类型标识符533中的类型下的变量名称。
计数标识符535用以标示类型标识符533中的类型下的变量数量。
格式标识符536用以标示类型标识符533中的类型下的变量格式,例如int 16、int32及int 64分别表示变量是16位整数、32位整数或是64位整数。
数值标识符537则是记载变量的数值或字串。在此实施例中,如果某一变量存在多个数值,则在格式标识符536后直接接续多个数值标识符537以分别记载每个数值,例如某变量为内含128个数值的列表,则类型标识符533标示数据为列表,计数标识符535标示共有128个数值,而数值标识符537会有128个,分别存放所述128个数值。
本公开的另一个实施例是一种对系统进行热迁移保存路径的方法,更详细来说,此实施例是在步骤307中生成待迁移信息的数据结构的流程,图7示出其流程图。
在步骤701中,接收热迁移启动请求,热迁移启动请求指定热迁移特定虚拟功能,所述特定虚拟功能为多个虚拟功能其中之一。在图3的步骤306中,物理功能驱动程序403发送热迁移启动请求以通知物理功能406准备进行迁移,物理功能406接收所述热迁移启动请求,其中指定了热迁移特定虚拟功能407。
在步骤702中,生成待迁移信息的数据结构。串化装置410响应所述热迁移启动请求,生成待迁移信息的数据结构。此步骤更可细化为如图8所示的流程。
在步骤801中,生成所述数据结构的协议层;在步骤802中,生成所述数据结构的数据结构层;在步骤803中,生成所述数据结构的序列化层。
在步骤804中,在协议层中生成幻数标识符版本标识符、请求响应标识符、命令标识符、序号标识符、数据来源标识符、字节标识符、域标识符、保留标识符、载荷标识符等至少其中之一。
在步骤805中,判断待迁移信息是组态或数据。
如为组态,则执行步骤806,在数据结构层中生成域标识符、芯片标识符、板卡标识符、微控制器标识符、固件标识符、主机驱动标识符、虚拟机标识符、保留标识符、计算装置标识符、存储装置标识符、视频编解码装置标识符、JPEG编解码装置标识符、PCIe标识符等至少其中之一。
如为数据,则执行步骤807,在数据结构层中生成符号标识符、类型标识符、键标识符及实体标识符等至少其中之一。
接着执行步骤808,在序列化层中生成幻数标识符、长度标识符、字节次序标识符、压缩标识符、类型标识符、键标识符、计数标识符、格式标识符及数值标识符等至少其中之一。
这些标识符的定义及记载内容均已在前述实施例中说明,细节不再赘述。
在最后执行步骤703,发送待迁移信息至内核空间。串化装置410生成待迁移信息后,物理功能406将待迁移信息发送至内核空间104的物理功能驱动程序403。
通过上述各实施例的说明,本公开实现迁移保存路径中的数据序列化,在执行前述流程的同时,对于非特定虚拟功能及硬件来说,仍旧执行来自用户空间102的任务,不受影响。
本公开的另一个实施例是迁移恢复路径,此实施例的目的服务器亦为图1的系统,与源服务器具有同样的环境。图9是示出迁移恢复路径的流程图,图10则示出迁移恢复路径在图1环境中的示意图。更详细来说,此实施例是在图3及图4的实施例完成迁移保存路径后,接着将待迁移信息迁移到目的服务器上。
在步骤901中,Libvirt 1001向QEMU 1002发起待迁移信息导入的请求。QEMU 1002自片外接收在图3及图4的实施例中发出的待迁移指令,并初始化热迁移启动请求。所述片外指的是源服务器,源服务器与目的服务器可能在同一个硬件平台或不同硬件平台上。
在步骤902中,VMLU QOM 1004向物理功能驱动程序1003发送待迁移信息。VMLUQOM 1004接收到待迁移指令后,响应热迁移启动请求,调用写入函数,将其中的待迁移信息发送至物理功能驱动程序1003。
在步骤903中,物理功能1006接收待迁移信息。在前一个步骤中,VMLU QOM 1004将待迁移信息发送至物理功能驱动程序1003,物理功能驱动程序1003再将待迁移信息发送至物理功能1006。
在步骤904中,针对特定虚拟功能1007及特定虚拟硬件1008恢复组态、数据及其上下文。
首先,物理功能1006闲置特定虚拟功能1007,使其暂时勿与用户空间102进行沟通,但其他的虚拟功能则照常运行。在闲置特定虚拟功能1007后,物理功能1006通过特定虚拟功能1007发送待迁移信息至特定虚拟硬件1008。
同样地,特定虚拟硬件1008可以是图1的虚拟计算装置、特定虚拟存储装置、虚拟视频编解码装置或是虚拟JPEG编解码装置。待迁移信息包括与特定虚拟硬件1008相关的驱动程序、固件和硬件信息、上下文信息及状态信息等。回复后,特定虚拟功能1007及特定虚拟硬件1008与特定虚拟功能407及特定虚拟硬件408具有完全相同的环境及数据。
在步骤905中,物理功能1006向物理功能驱动程序1003报告迁移已经完成,当指令发送完毕后,物理功能1006发送结束信号至内核空间104的物理功能驱动程序603。
在步骤906中,物理功能驱动程序1003通知VMLU QOM 1004热迁移已经完成,亦即物理功能驱动程序1003发送结束信号至QEMU 1002。
在步骤907中,VMLU QOM 1004改变状态以便通知虚拟功能驱动程序1005热迁移已经完成。VMLU QOM 1004响应结束信号,通知虚拟功能驱动程序1005热迁移已完成,同时改变基地址寄存器的状态,指向目的服务器的特定虚拟功能1007及特定虚拟硬件1008。
在步骤908中,虚拟功能驱动程序1005向虚拟功能驱动程序的接口1009发送控制信号,以重新接续执行客户操作系统的任务。
在步骤909中,虚拟功能驱动程序的接口1009通知虚拟功能驱动程序1005重新接续执行客户操作系统的任务。虚拟功能驱动程序1005重新通过虚拟功能驱动程序的接口1009接收来自用户空间102的处理器的任务,这些任务不再访问源服务器的特定虚拟硬件408,而改以访问目的服务器的特定虚拟硬件1008。
在步骤910中,VMLU QOM 1004通知Libvirt 1001热迁移完成,Libvirt 1001清理源服务器上所分配的硬件资源。至此完成迁移恢复路径。
结合前述迁移保存路径及迁移恢复路径的实施例,本公开得以实现虚拟化专用集成电路的热迁移。
更详细来说,图10的系统还包括解串装置1010,用以响应热迁移启动请求,在步骤904中根据待迁移信息恢复特定虚拟功能1007的驱动程序、固件和特定虚拟硬件1008的信息、上下文信息及其状态信息等数据。此实施例的解串装置1010可以利用硬件或固件来实现。如是硬件,解串装置1010是配置在片上系统106中;如是固件,则存储在片上系统106的只读存储装置中。
解串装置1010实现热迁移恢复路径的方法,其流程如图11所述。在步骤1101中,解串装置1010接收待迁移信息。在步骤1102中,解串装置1010反序列化协议层51的信息,此步骤细化成图12的流程。
在步骤1201中,由于源服务器与目的服务器遵循相同的协议,因此解串装置1010可以识别图5的数据结构,其自幻数标识符501中识别这是待迁移信息的协议层51的开始。在步骤1202中,自版本标识符502中识别待迁移信息的版本,以确认目的服务器的系统版本等于或高于源服务器的系统版本。在步骤1203中,自请求响应标识符503中识别此信息指令为请求或是响应,如是请求,则继续执行迁移恢复路径,如为响应,表示此信息非待迁移信息,停止恢复。
接着在步骤1204中,自命令标识符504中识别待迁移信息的任务种类为迁移状态及数据或是更新数据字典。在步骤1205中,自序号标识符505中识别待迁移信息的流水号,以判断此待迁移信息在整个热迁移恢复路径中的排位。
接着在步骤1206中,自数据来源标识符506中识别特定虚拟套件,其中所述特定虚拟套件包括虚拟计算装置、虚拟视频编解码装置、虚拟JPEG编解码装置及虚拟存储装置至少其中之一,解串装置1010根据数据来源标识符506的信息将待迁移信息恢复至指定的特定虚拟套件。
接着在步骤1207中,自字节标识符507中识别待迁移信息的总字节数或是有效载荷的总字节数。在步骤1208中,自域标识符508取出特定虚拟功能的信息,将待迁移信息恢复至特定虚拟功能1007中。在步骤1209中,自载荷标识符510中取出数据结构层52的信息。
在步骤1103中,解串装置1010开始反序列化数据结构层52的信息,首先判断数据结构层52记载的是组态信息或是数据信息。
如果数据结构层52记载的是组态信息,则执行步骤1104,反序列化组态信息,此步骤细化成图13的流程。在步骤1301中,解串装置1010自域标识符511取出特定硬件的信息,准备将待迁移信息恢复至特定硬件1008中。在步骤1302中,自芯片标识符512中识别源服务器的芯片组型号,以判断是否与目的服务器的芯片组相容。在步骤1303中,自板卡标识符513中识别源服务器的板卡版本或型号,以判断是否与目的服务器的板卡相容。在步骤1304中,自微控制器标识符514中识别源服务器的微控制器的型号,以判断是否与目的服务器的微控制器相容。
在步骤1305中,接着自固件标识符515中识别源服务器的固件版本,以判断是否与目的服务器的固件相容。在步骤1306中,自主机驱动标识符516中识别源服务器的主机驱动软件版本,以判断是否与目的服务器的主机驱动软件相容。在步骤1307中,自虚拟机标识符517中识别源服务器的虚拟机驱动软件版本,以判断是否与目的服务器的虚拟机驱动软件相容。
接着在步骤1308中,取出特定装置标识符的信息,也就是自计算装置标识符519、存储装置标识符520、视频编解码装置标识符521、JPEG编解码装置标识符522取出信息以还原特定装置的组态,所述特定装置即是特定硬件1008,为虚拟计算装置、虚拟视频编解码装置、虚拟JPEG编解码装置及虚拟存储装置其中之一。
最后在步骤1309中,根据PCIe标识符523的信息还原虚拟接口的组态。
如果数据结构层52用以记载数据信息,则执行步骤1105,反序列化数据信息,此步骤细化成图14的流程。在步骤1401中,解串装置1010自符号标识符525识别标记结构体的开始并取出结构体的名称,更详细来说,由于符号标识符525包括前缀符号,因此解串装置1010先识别出前缀符号,便可根据前缀符号识别结构体的名称,以及之后的各种标识符。在步骤1402中,自类型标识符526识别类型。在步骤1403中,自键标识符527中取出变量的名称,同样地,由于键标识符527包括前缀符号,因此解串装置1010先识别出前缀符号,便可根据前缀符号取出变量的名称。在步骤1404中,自实体标识符528取出序列化层53的信息。
回到图11,接着执行步骤1106,识别或取出序列化层53的信息,此步骤细化成图15的流程。在步骤1501中,解串装置1010接着根据幻数标识符529识别序列化层53的开始。在步骤1502中,自长度标识符530中识别序列化层53的长度。在步骤1503中,自字节次序标识符531中识别数据的存储字节序为大端模式或小端模式。在步骤1504中,自压缩标识符532中识别所述数据的压缩形式。在步骤1505中,自类型标识符533识别类型。在步骤1506中,自键标识符534中取出变量名称。在步骤1507中,自计数标识符535中识别变量数量。在步骤1508中,自格式标识符536中识别变量格式。在步骤1509中,自数值标识符537中取出变量的数值或字串。
解串装置1010反序列化待迁移信息,并透过物理功能1006将源服务器中的特定虚拟功能407和特定硬件408的驱动程序、固件和硬件信息、上下文信息及其状态信息恢复到目的服务器上的特定虚拟功能1007和特定硬件1008的内存中。
图16是示出根据本公开实施例的一种集成电路装置1600的结构图。如图16所示,集成电路装置1600即是前述多个实施例中的片上系统106,其包括特定虚拟套件1602,特定虚拟套件1602为虚拟计算装置、虚拟视频编解码装置、虚拟JPEG编解码装置至少其中之一。另外,集成电路装置1600还包括通用互联接口1604和其他处理装置1606。
其他处理装置1606可以是中央处理器、图形处理器、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器,其数目不做限制而是依实际需要来确定。其他处理装置1606作为特定虚拟套件1602与外部数据和控制的接口,执行包括但不限于数据搬运,完成对特定虚拟套件1602的开启、停止等的基本控制。其他处理装置1606也可以和特定虚拟套件1602协作共同完成运算任务。
通用互联接口1604可以用于在特定虚拟套件1602与其他处理装置1606间传输数据和控制指令。例如,特定虚拟套件1602可以经由通用互联接口1604从其他处理装置1606中获取所需的输入数据,写入特定虚拟套件1602片上的存储单元。进一步,特定虚拟套件1602可以经由通用互联接口1604从其他处理装置1606中获取控制指令,写入特定虚拟套件1602片上的控制缓存。替代地或可选地,通用互联接口1604也可以读取特定虚拟套件1602的存储模块中的数据并传输给其他处理装置1606。
集成电路装置1600还包括存储装置1608,其可以分别与特定虚拟套件1602和其他处理装置1606连接。存储装置1608即为虚拟存储装置148,用于保存特定虚拟套件1602和其他处理装置1606的数据,尤其适用于所需要运算的数据在特定虚拟套件1602或其他处理装置1606的内部存储中无法全部保存的数据。
根据应用场景的不同,集成电路装置1600可以作为手机、机器人、无人机、视频采集等设备的片上系统(SOC),从而有效地降低控制部分的核心面积,提高处理速度并降低整体的功耗。在此情况时,集成电路装置1600的通用互联接口1604与设备的某些部件相连接。此处的某些部件可以例如是摄像头,显示器,鼠标,键盘,网卡或wifi接口。
本公开还揭露一种芯片或集成电路芯片,其包括了集成电路装置1600。本公开还揭露一种芯片封装结构,其包括了上述芯片。
本公开另一个实施例是一种板卡,其包括了上述芯片封装结构。参阅图17,板卡1700除了包括多个上述芯片1702以外,还可以包括其他的配套部件,该配套部件包括存储器件1704、接口装置1706和控制器件1708。
存储器件1704与芯片封装结构内的芯片1702通过总线1714连接,用于存储数据。存储器件1704可以包括多组存储单元1710。
接口装置1706与所述芯片封装结构内的芯片1702电连接。所述接口装置1706用于实现芯片1702与外部设备1712(例如服务器或计算机)之间的数据传输。在此实施例中,接口装置1706为标准PCIe接口,待处理的数据由服务器通过标准PCIe接口传递至芯片1702,实现数据转移。芯片1702的计算结果亦由接口装置1706传送回外部设备1712。
控制器件1708与芯片1702电连接,以便对芯片1702的状态进行监控。具体地,芯片1702与控制器件1708可以通过SPI接口电连接。控制器件1708可以包括单片机(“MCU”,Micro Controller Unit)。
本公开的另一个实施例是一种电子设备或装置,其包括了上述板卡1700。根据不同的应用场景,电子设备或装置可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本公开另一个实施例为一种计算机可读存储介质,其上存储有热迁移的计算机程序代码,当所述计算机程序代码由处理器运行时,执行前述的方法。
本公开可以实现将源服务器中的虚拟特定功能和虚拟硬件的驱动程序、固件和硬件信息、上下文信息及其状态信息热迁移到目的服务器上,其利用序列化的技术生成待迁移信息以方便传输,目的服务器再基于同样的协议反序列化待迁移信息,恢复其组态和数据。
依据以下条款可更好地理解前述内容:
条款A1、一种实现热迁移保存的系统,包括串化装置,用以:响应热迁移启动请求以生成待迁移信息的数据结构,所述待迁移信息包括结构体;在所述数据结构中生成符号标识符,用以标记所述结构体;以及在所述符号标识符中置入前缀符号及所述结构体的名称。
条款A2、根据条款A1所述的系统,其中所述结构体包括至少一种类型,所述串化装置在所述数据结构中生成类型标识符,用以记载所述类型。
条款A3、根据条款A2所述的系统,其中所述类型包括至少一个变量,所述串化装置在所述数据结构中生成键标识符,用以标记所述变量。
条款A4、根据条款A3所述的系统,其中所述键标识符包括所述前缀符号、所述结构体的名称及所述变量的名称。
条款A5、一种实现热迁移恢复的系统,包括:只读存储装置,存储有固件,所述固件包括物理功能,虚拟化为多个虚拟功能,所述物理功能接收待迁移信息,所述待迁移信息包括结构体,所述待迁移信息的数据结构包括符号标识符,用以标记所述结构体,所述符号标识符包括前缀符号及所述结构体的名称;以及解串装置,用以根据所述前缀符号识别所述结构体的名称。
条款A6、根据条款A5所述的系统,其中所述结构体包括至少一种类型,所述数据结构还包括类型标识符,用以记载所述类型,所述解串装置根据所述类型标识符识别所述类型。
条款A7、根据条款A6所述的系统,其中所述类型包括至少一个变量,所述数据结构还包括键标识符,用以标记所述变量,所述解串装置根据所述键标识符识别所述变量。
条款A8、根据条款A7所述的系统,其中所述键标识符包括所述前缀符号、所述结构体的名称及所述变量的名称。
条款A9、一种集成电路装置,包括根据条款A1-8的任意一项所述的系统。
条款A10、一种板卡,包括根据条款A9所述的集成电路装置。
条款A11、一种生成待迁移信息的数据结构的方法,包括:接收热迁移启动请求;以及响应所述热迁移启动请求,生成所述数据结构,所述待迁移信息包括结构体,所述生成所述数据结构的步骤包括:生成符号标识符,用以标记所述结构体,所述符号标识符包括前缀符号及所述结构体的名称。
条款A12、根据条款A11所述的方法,其中所述结构体包括至少一种类型,所述生成所述数据结构的步骤还包括:生成类型标识符,用以记载所述类型。
条款A13、根据条款A12所述的方法,其中所述类型包括至少一个变量,所述生成所述数据结构的步骤还包括:生成键标识符,用以标记所述变量。
条款A14、根据条款A13所述的方法,其中所述键标识符包括所述前缀符号、所述结构体的名称及所述变量的名称。
条款A15、一种判读待迁移信息的方法,包括:接收所述待迁移信息,所述待迁移信息包括结构体,所述待迁移信息的数据结构包括符号标识符,用以标记所述结构体,所述符号标识符包括前缀符号及所述结构体的名称;识别所述前缀符号;以及根据所述前缀符号识别所述结构体的名称。
条款A16、根据条款A15所述的方法,其中所述结构体包括至少一种类型,所述数据结构还包括类型标识符,用以记载所述类型,所述方法还包括:根据所述类型标识符识别所述类型。
条款A17、根据条款A16所述的方法,其中所述类型包括至少一个变量,所述数据结构还包括键标识符,用以标记所述变量,所述方法还包括:根据所述键标识符识别所述变量。
条款A18、根据条款A17所述的方法,其中所述键标识符包括所述前缀符号、所述结构体的名称及所述变量的名称。
条款A19、一种计算机可读存储介质,其上存储有热迁移的计算机程序代码,当所述计算机程序代码由处理器运行时,执行条款A11或18所述的方法。

Claims (19)

1.一种实现热迁移保存的系统,包括串化装置,用以:
响应热迁移启动请求以生成待迁移信息的数据结构,所述待迁移信息包括结构体;
在所述数据结构中生成符号标识符,用以标记所述结构体;以及
在所述符号标识符中置入前缀符号及所述结构体的名称。
2.根据权利要求1所述的系统,其中所述结构体包括至少一种类型,所述串化装置在所述数据结构中生成类型标识符,用以记载所述类型。
3.根据权利要求2所述的系统,其中所述类型包括至少一个变量,所述串化装置在所述数据结构中生成键标识符,用以标记所述变量。
4.根据权利要求3所述的系统,其中所述键标识符包括所述前缀符号、所述结构体的名称及所述变量的名称。
5.一种实现热迁移恢复的系统,包括:
只读存储装置,存储有固件,所述固件包括物理功能,虚拟化为多个虚拟功能,所述物理功能接收待迁移信息,所述待迁移信息包括结构体,所述待迁移信息的数据结构包括符号标识符,用以标记所述结构体,所述符号标识符包括前缀符号及所述结构体的名称;以及
解串装置,用以根据所述前缀符号识别所述结构体的名称。
6.根据权利要求5所述的系统,其中所述结构体包括至少一种类型,所述数据结构还包括类型标识符,用以记载所述类型,所述解串装置根据所述类型标识符识别所述类型。
7.根据权利要求6所述的系统,其中所述类型包括至少一个变量,所述数据结构还包括键标识符,用以标记所述变量,所述解串装置根据所述键标识符识别所述变量。
8.根据权利要求7所述的系统,其中所述键标识符包括所述前缀符号、所述结构体的名称及所述变量的名称。
9.一种集成电路装置,包括根据权利要求1-8的任意一项所述的系统。
10.一种板卡,包括根据权利要求9所述的集成电路装置。
11.一种生成待迁移信息的数据结构的方法,包括:
接收热迁移启动请求;以及
响应所述热迁移启动请求,生成所述数据结构,所述待迁移信息包括结构体,所述生成所述数据结构的步骤包括:生成符号标识符,用以标记所述结构体,所述符号标识符包括前缀符号及所述结构体的名称。
12.根据权利要求11所述的方法,其中所述结构体包括至少一种类型,所述生成所述数据结构的步骤还包括:生成类型标识符,用以记载所述类型。
13.根据权利要求12所述的方法,其中所述类型包括至少一个变量,所述生成所述数据结构的步骤还包括:生成键标识符,用以标记所述变量。
14.根据权利要求13所述的方法,其中所述键标识符包括所述前缀符号、所述结构体的名称及所述变量的名称。
15.一种判读待迁移信息的方法,包括:
接收所述待迁移信息,所述待迁移信息包括结构体,所述待迁移信息的数据结构包括符号标识符,用以标记所述结构体,所述符号标识符包括前缀符号及所述结构体的名称;
识别所述前缀符号;以及
根据所述前缀符号识别所述结构体的名称。
16.根据权利要求15所述的方法,其中所述结构体包括至少一种类型,所述数据结构还包括类型标识符,用以记载所述类型,所述方法还包括:
根据所述类型标识符识别所述类型。
17.根据权利要求16所述的方法,其中所述类型包括至少一个变量,所述数据结构还包括键标识符,用以标记所述变量,所述方法还包括:
根据所述键标识符识别所述变量。
18.根据权利要求17所述的方法,其中所述键标识符包括所述前缀符号、所述结构体的名称及所述变量的名称。
19.一种计算机可读存储介质,其上存储有热迁移的计算机程序代码,当所述计算机程序代码由处理器运行时,执行权利要求11或18所述的方法。
CN202011045841.6A 2020-09-28 2020-09-28 实现热迁移的装置、相关方法及其可读存储介质 Pending CN114281468A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202011045841.6A CN114281468A (zh) 2020-09-28 2020-09-28 实现热迁移的装置、相关方法及其可读存储介质
US18/003,689 US20230244380A1 (en) 2020-09-28 2021-06-24 Device and method for implementing live migration
PCT/CN2021/102073 WO2022062510A1 (zh) 2020-09-28 2021-06-24 实现热迁移的设备及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011045841.6A CN114281468A (zh) 2020-09-28 2020-09-28 实现热迁移的装置、相关方法及其可读存储介质

Publications (1)

Publication Number Publication Date
CN114281468A true CN114281468A (zh) 2022-04-05

Family

ID=80868101

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011045841.6A Pending CN114281468A (zh) 2020-09-28 2020-09-28 实现热迁移的装置、相关方法及其可读存储介质

Country Status (1)

Country Link
CN (1) CN114281468A (zh)

Similar Documents

Publication Publication Date Title
US20210232528A1 (en) Configurable device interface
US4814975A (en) Virtual machine system and method for controlling machines of different architectures
RU2532708C2 (ru) Способ и устройство для осуществления операции ввода/вывода в среде виртуализации
WO2017066944A1 (zh) 一种存储设备访问方法、装置和系统
US9697024B2 (en) Interrupt management method, and computer implementing the interrupt management method
US20180074843A1 (en) System, method, and computer program product for linking devices for coordinated operation
US10915348B2 (en) Technologies for duplicating virtual machine states
CN103034524A (zh) 半虚拟化的虚拟gpu
JP2015503784A (ja) グラフィックス処理部における仮想マシン間の移行
WO2022001808A1 (zh) 一种系统以及中断处理方法
CN113806006A (zh) 一种异构指令集架构下异常或中断的处理方法、装置
CN113326226A (zh) 一种虚拟化的方法、装置、板卡及计算机可读存储介质
WO2021223744A1 (zh) 实现热迁移的方法、芯片、板卡和存储介质
CN114281467A (zh) 实现热迁移的系统方法、装置和存储介质
CN115988218A (zh) 一种虚拟化视频编解码系统、电子设备和存储介质
CN111857943B (zh) 数据处理的方法、装置与设备
CN112433823A (zh) 动态虚拟化物理卡的设备及方法
WO2022062510A1 (zh) 实现热迁移的设备及方法
CN113568734A (zh) 基于多核处理器的虚拟化方法、系统、多核处理器和电子设备
WO2020177567A1 (zh) 一种迁移数据的方法、装置及系统
CN116954830A (zh) jailhouse下使虚拟机实现msi/x中断的方法
EP4350507A1 (en) Data processing system, method and apparatus
CN114281468A (zh) 实现热迁移的装置、相关方法及其可读存储介质
CN114281749A (zh) 实现序列化及反序列化树数据的装置、方法和存储介质
CN114328366A (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