CN114281750A - 实现序列化及反序列化逻辑指针的方法、装置和存储介质 - Google Patents
实现序列化及反序列化逻辑指针的方法、装置和存储介质 Download PDFInfo
- Publication number
- CN114281750A CN114281750A CN202011043865.8A CN202011043865A CN114281750A CN 114281750 A CN114281750 A CN 114281750A CN 202011043865 A CN202011043865 A CN 202011043865A CN 114281750 A CN114281750 A CN 114281750A
- Authority
- CN
- China
- Prior art keywords
- identifier
- information
- virtual
- data
- name
- 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
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是示出本公开实施例的目的服务器端进行迁移恢复路径的示意图;
图18是示出本公开实施例的解串装置实现热迁移恢复路径的流程图;
图19是示出本公开实施例的解串装置反序列化协议层的流程图;
图20是示出本公开实施例的反序列化组态信息的流程图;
图21是示出本公开实施例的反序列化数据信息的流程图;
图22是示出本公开实施例的识别或取出序列化层的信息的流程图;
图23是示出本公开实施例的反序列化树数据的流程图;
图24是示出本公开实施例的反序列化嵌套数据的流程图;
图25是示出本公开实施例的嵌套数据的示意图;
图26是示出本公开实施例识别或取出第二层结构体的信息的流程图;
图27是示出本公开实施例的反序列化逻辑指针的流程图;
图28是示出本公开实施例的集成电路装置的结构图;以及
图29是示出本公开实施例的板卡的示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本公开的具体实施方式。
本公开涉及一种采用虚拟化技术的框架,应用在专用集成电路上,例如用于神经网络的机器学习设备上,该机器学习设备可以是卷积神经网络加速器。以下将以人工智能芯片示例说明。
图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 QOM 404的内存映射I/O空间时,VMLUQOM 404便将物理功能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个数值。
较为复杂的数据像是树数据、嵌套数据或逻辑指针等需要使用序列化层53。所谓树数据指的是二叉树,是一种树形结构类型,二叉树是多个元素(又称节点)的集合,该集合或者为空、或者由一个称为根的元素及两个不相交的、被分别称为左子树和右子树的二叉树所组成,是有序树。图7示出示例性的树数据,包括节点701至707,其中各节点对应有数值,例如节点701的数值为20、节点702的数值为8等。嵌套数据指的是在已有的表格、图像、图层或函数中再加进去一个或多个表格、图像、图层或函数的数据格式。逻辑指针是一个结构体通过添加标识,指向另一个结构体,在结构体之间建立关联。以下将逐一说明串化装置410如何序列化树数据、嵌套数据或逻辑指针。
当数据为树数据时,串化装置410在幻数标识符529标示所述树数据的信息的开始,在长度标识符530记载该序列化层53的长度,在字节次序标识符531标示该树数据以大端模式或小端模式存储的,在压缩标识符532标示该树数据的压缩形式,在类型标识符533标示类型为二元树,在键标识符534标示了该树数据的变量名称,在计数标识符535标示该树数据中的元素数量,在格式标识符536标示该树数据的元素格式。
数值标识符537则是记载该树数据的各元素数值,在记载这些数值时需要将树数据序列化,首先依特定顺序遍历此二元树,以形成序列化数据。所述特定顺序可以在协议里约定,为前序、中序、后序、逆后序其中之一,接着将遍历后的数值依序置入数值标识符537中。
前序遍历是对于当前树数据,先输出根节点,然后输出其左子树,依序直到没有左子树后,再输出其右子树。以图7的树数据为例,其根节点为节点701,故先记载节点701的数值20,再记载其左子树节点702的数值8,再记载其左子树节点703的数值4,节点703没有左子树,故记载NIL(表示为空),接着输出节点703的右子树,节点703也没有右子树,故再次记载NIL,往回到上一层节点702,其右子树为节点704,记载其值12,再记载其左子树节点705的数值10,节点705亦没有左子树和右子树,分别记载NIL,回到节点704的右子树706,记载其值14,节点706亦没有左子树和右子树,分别记载NIL,最后一路回到根节点701,其右子树为节点707,记载其值为22,节点707同样没有左子树和右子树,分别记载NIL,结束遍历流程。因此串化装置410以前序遍历图7的树数据时,所得序列化数据依序为:20、8、4、NIL、NIL、12、10、NIL、NIL、14、NIL、NIL、22、NIL、NIL,其数值标识符537如图8所示。
中序遍历则是对于当前节点,先输出其左子树,再输出该节点,最后输出其右子树。以图7为例,串化装置410以中序遍历时,所得序列化数据依序为:NIL、4、NIL、8、NIL、10、NIL、12、NIL、14、NIL、20、NIL、22、NIL。
后序遍历对于当前节点,先输出其左子树,然后输出其右子树,最后输出该节点。以图7为例,串化装置410以后序遍历时,所得序列化数据依序为:NIL、NIL、4、NIL、NIL、10、NIL、NIL、14、12、8、NIL、NIL、22、20。
逆后序遍历则是将后序遍历的结果反过来,同样以图7为例,串化装置410以逆后序遍历时,所得序列化数据依序为:20、22、NIL、NIL、8、12、14、NIL、NIL、10、NIL、NIL、4、NIL、NIL。
通过前述方式的任何一种,串化装置410将树数据转换成序列化数据,并将序列化数据置入数值标识符537中。此实施例并不限制遍历树数据的方式,但以前序方式遍历为佳。
在处理嵌套数据时,由于嵌套数据具有层次结构,因此在进行热迁移保存时,同样需要将嵌套数据依层次序列化记载。实际上,嵌套数据可能会包括多层嵌套结构,为方便说明,以下将以具有二层数据的嵌套数据为例。
串化装置410同样将嵌套数据以结构体方式展现,分为第一层结构体(上层结构体)及第二层结构体(下层结构体),即第二层结构体嵌套在第一层结构体中。串化装置410在生成待迁移信息时,在数据结构层52中会分为二段,第一段的符号标识符525(第一符号标识符)、类型标识符526(第一类型标识符)、键标识符527(第一键标识符)分别记载第一层结构体的相关信息,并在实体标识符528(第一实体标识符)中展开第一层结构体的序列化层53。
串化装置410在第一层结构体的序列化层53中生成各标识符如下:幻数标识符529标示第一层结构体序列化的开始,长度标识符530记载第一层结构体的序列化层53的长度,字节次序标识符531表示第一层结构体以大端模式或是小端模式存储的,压缩标识符532标示第一层结构体的压缩形式,类型标识符533标示第一层结构体的类型,键标识符534标示了第一层结构体中的变量名称,计数标识符535标示第一层结构体中的变量数量,格式标识符536标示第一层结构体的变量格式,数值标识符537则是记载第一层结构体的各变量数值。
在第一层结构体的实体标识符528之后,串化装置410紧接着生成描述第二层结构体。串化装置410生成键标识符527(第二键标识符)记载第二层结构体的名称,并在实体标识符528(第二实体标识符)中展开第二层结构体的序列化层53。第二层结构体的序列化层53的各标识符的记载方式与第一层结构体相同,不再赘述。
举例来说,假设有以下的嵌套数据:
前述代码表述了嵌套数据包括二层结构体,第一层结构体名称为“foo_nested”,包括了三个类型,第一类型是整数数字阵列,变量名称为“array”,数列为{26,91,1029};第二类型是第二层结构体,包括数字91和字串Hello world;第三类型是整数数字10029。
图9示出嵌套数据序列化时所生成的数据结构。由于此处仅用来表述嵌套数据的序列化,故协议层51的各标识符省略不表述。串化装置410生成的数据结构层52中,第一符号标识符901记载第一层结构体名称,即“.foo_nested”;第一类型标识符902记载第一层结构体类型,即“foo_nested_t”;第一键标识符903和第一实体标识符904记载第一类型的整数数字阵列{26,91,1029}的信息,其中第一键标识符903记载其变量名称为“.foo_nested.array”,第一实体标识符904记载阵列的3个数值,即整数数字26、91、1029,由于阵列为简单数据,故第一实体标识符904无需展开序列化层53。
在描述完第一类型的信息后,接着记载第二类型的信息。在第一实体标识符904后,为第二键标识符905记载第二类型,第二类型为嵌套数据的第二层结构体,其名称“foo1”,根据协议,第二键标识符905记载为“.foo_nested.foo1”,表示为“foo_nested”结构体下嵌套的“foo1”结构体。
串化装置410在第二实体标识符906展开序列化层53,用以表述第二层结构体,其中幻数标识符907标示第二层结构体的开始,长度标识符908记载该序列化层53的长度,字节次序标识符909表示第二层结构体以大端模式或小端模式存储的,压缩标识符910标示第二层结构体的压缩形式,第二符号标识符911记载第二层结构体名称,根据协议为“.foo_nested.foo1”;第二类型标识符912记载第二层结构体的类型名称,即“foo1_t”。由于第二层结构体的数据{91,“Hello world”}包括数字“91”和字串“Hello world”,串化装置410会以两套键标识符及实体标识符分别记载相关信息。第三键标识符913及第三实体标识符914用以记载该数字,其中第三键标识符913记载变量名称为“.foo_nested.foo1.integer”,而第三实体标识符914记载数值“91”;第四键标识符915及第四实体标识符916用以记载该字串,其中第四键标识符915记载变量名称为“.foo_nested.foo1.str”,而第四实体标识符916记载字串为“Hello world”。
第二类型的信息标识完毕后,接着在数据结构层52记载第三类型的信息。串化装置410在第二实体标识符906后,再加上第五键标识符917记载第三类型的变量名称,即“.foo_nested.seq”,以及在第五实体标识符918记载第三类型的变量数值,即“10029”。至此,串化装置410将所有嵌套数据的信息载入至待迁移信息中。
串化装置410在序列化逻辑指针时,同样地利用数据结构层52和序列化层53来完整表述指针指向的关系。
举例来说,假设有以下的结构体:
前述代码表述了第一结构体,其名称为“foo_nested”,包括了一个第一类型,其名称为“foo_nested_t”,该第一类型包括二个变量,第一个变量是逻辑指针“foo1”,其指向第二结构体foo2,第二个变量是整数,其名称为seq,数值为10029。而第二结构体foo2也包括了一个第二类型,其名称为“foo2_t”,第二类型包括一个整数变量,名称为“interger”,其数值为91。
图10示出串化装置410将上述包括逻辑指针的结构体序列化成待迁移信息的示意图。同样地,此处仅用来揭示逻辑指针的序列化,故协议层51的各标识符省略不谈。在数据结构层52中,串化装置410将第一符号标识符1001根据协议记载第一结构体的名称,即“.foo_nested”;第一类型标识符1002记载第一类型的名称,即“foo_nested_t”;第一键标识符1003和第一实体标识符1004记载逻辑指针的信息,第一键标识符1003根据协议记载逻辑指针名称为“.foo_nested.foo1”,第一实体标识符1004记载逻辑指针指向“.foo2”。接着第二键标识符1005和第二实体标识符1006记载第二变量的信息,第二键标识符1005根据协议记载第二变量名称为“.foo_nested.seq”,第二实体标识符1006记载第二变量的数值为“10029”。
串化装置410会适当地在同一个待迁移信息的数据结构中的某一段置入第二结构体foo2的信息。如图10所示,在第二实体标识符1006之后存在多个其他结构体的信息。在数据结构层52的某一段中,串化装置410接着记载第二结构体的信息,第二符号标识符1007记载第二结构体的名称,即“.foo2”,英文句号供系统识别此处为符号标识符,是一个结构体信息的开端;第二类型标识符1008记载第二类型的名称,即“foo2_t”;第三键标识符1009和第三实体标识符1010记载第二类型里的变量信息,第三键标识符1009记载变量名称为“.foo2.integer”,第三实体标识符1010记载该变量数值为“91”。
在图10的逻辑指针的示例中,由于变量足够简单,因此第一实体标识符1004、第二实体标识符1006和第三实体标识符1010均不需要展开如图5所示的序列化层53。本公开并不要求或限制每个待迁移信息的数据结构必须包括序列化层53或是序列化层53的每一个标识符。
综上所述,串化装置410在生成待迁移信息时,可以根据实际需求拼接多个标识符,以适当扩展数据结构层52和序列化层53的长度,再将待迁移信息的总字节数记载至字节标识符507中。换言之,数据结构层52和序列化层53可以包括多个符号标识符、类型标识符、键标识符或实体标识符串接在一块,分别记载不同的数据实体。
当串化装置410生成待迁移信息后,物理功能406在步骤307中发送待迁移信息至内核空间104的物理功能驱动程序403,完成数据序列化的过程。
本公开的另一个实施例是一种对系统进行热迁移保存路径的方法,更详细来说,此实施例是在步骤307中生成待迁移信息的数据结构的流程,图11示出其流程图。
在步骤1101中,接收热迁移启动请求,热迁移启动请求指定热迁移特定虚拟功能,所述特定虚拟功能为多个虚拟功能其中之一。在图3的步骤306中,物理功能驱动程序403发送热迁移启动请求以通知物理功能406准备进行迁移,物理功能406接收所述热迁移启动请求,其中指定了热迁移特定虚拟功能407。
在步骤1102中,生成待迁移信息的数据结构。串化装置410响应所述热迁移启动请求,生成待迁移信息的数据结构。此步骤更可细化为如图12所示的流程。
在步骤1201中,生成所述数据结构的协议层;在步骤1202中,生成所述数据结构的数据结构层;在步骤1203中,生成所述数据结构的序列化层。
在步骤1204中,在协议层中生成幻数标识符版本标识符、请求响应标识符、命令标识符、序号标识符、数据来源标识符、字节标识符、域标识符、保留标识符、载荷标识符等至少其中之一。
在步骤1205中,判断待迁移信息是组态或数据。
如为组态,则执行步骤1206,在数据结构层中生成域标识符、芯片标识符、板卡标识符、微控制器标识符、固件标识符、主机驱动标识符、虚拟机标识符、保留标识符、计算装置标识符、存储装置标识符、视频编解码装置标识符、JPEG编解码装置标识符、PCIe标识符等至少其中之一。
如为数据,则执行步骤1207,在数据结构层中生成符号标识符、类型标识符、键标识符及实体标识符等至少其中之一。
接着执行步骤1208,在序列化层中生成幻数标识符、长度标识符、字节次序标识符、压缩标识符、类型标识符、键标识符、计数标识符、格式标识符及数值标识符等至少其中之一。
这些标识符的定义及记载内容均已在前述实施例中说明,细节不再赘述。
在最后执行步骤1103,发送待迁移信息至内核空间。串化装置410生成待迁移信息后,物理功能406将待迁移信息发送至内核空间104的物理功能驱动程序403。
本公开的另一个实施例为一种序列化树数据的方法,其流程图如图13所示,包括以下步骤。在步骤1301中,响应热迁移启动请求以生成待迁移信息,所述待迁移信息的数据结构包括数值标识符;在步骤1302中,依特定顺序遍历所述树数据,以形成序列化数据;在步骤1303中,将所述序列化数据置入所述数值标识符中。序列化树数据的细节在前述实施例中已说明,故不再赘述。
本公开的另一个实施例为一种序列化嵌套数据的方法,所述嵌套数据至少包括第一层结构体及第二层结构体,串化装置410响应热迁移启动请求,生成待迁移信息,所述生成待迁移信息的步骤如图14所示。在步骤1401中,在所述待迁移信息的数据结构层中生成第一符号标识符,用以记载所述第一层结构体的名称;在步骤1402中,在序列化层中生成第二符号标识符,用以记载所述第二结构体的名称。序列化嵌套数据的细节在前述实施例中已说明,故不再赘述。
本公开的另一个实施例为一种序列化逻辑指针的方法,所述逻辑指针将第一结构体与第二结构体建立关联,其流程图如图15所示,包括以下步骤。在步骤1501中,响应热迁移启动请求以生成待迁移信息;在步骤1502中,在所述待迁移信息的数据结构中生成第一符号标识符及第一实体标识符;在步骤1503中,在所述第一符号标识符中置入所述第一结构体的名称;在步骤1504中,在所述第一实体标识符中置入所述逻辑指针的数值,所述逻辑指针的数值为所述第二结构体的名称。序列化逻辑指针的细节在前述实施例中已说明,故不再赘述。
通过上述各实施例的说明,本公开实现迁移保存路径中的数据序列化,在执行前述流程的同时,对于非特定虚拟功能及硬件来说,仍旧执行来自用户空间102的任务,不受影响。
本公开的另一个实施例是迁移恢复路径,此实施例的目的服务器亦为图1的系统,与源服务器具有同样的环境。图16是示出迁移恢复路径的流程图,图17则示出迁移恢复路径在图1环境中的示意图。更详细来说,此实施例是在图3及图4的实施例完成迁移保存路径后,接着将待迁移信息迁移到目的服务器上。
在步骤1601中,Libvirt 1701向QEMU 1702发起待迁移信息导入的请求。QEMU1702自片外接收在图3及图4的实施例中发出的待迁移指令,并初始化热迁移启动请求。所述片外指的是源服务器,源服务器与目的服务器可能在同一个硬件平台或不同硬件平台上。
在步骤1602中,VMLU QOM 1704向物理功能驱动程序1703发送待迁移信息。VMLUQOM 1704接收到待迁移指令后,响应热迁移启动请求,调用写入函数,将其中的待迁移信息发送至物理功能驱动程序1703。
在步骤1603中,物理功能1706接收待迁移信息。在前一个步骤中,VMLU QOM 1704将待迁移信息发送至物理功能驱动程序1703,物理功能驱动程序1703再将待迁移信息发送至物理功能1706。
在步骤1604中,针对特定虚拟功能1707及特定虚拟硬件1708恢复组态、数据及其上下文。
首先,物理功能1706闲置特定虚拟功能1707,使其暂时勿与用户空间102进行沟通,但其他的虚拟功能则照常运行。在闲置特定虚拟功能1707后,物理功能1706通过特定虚拟功能1707发送待迁移信息至特定虚拟硬件1708。
同样地,特定虚拟硬件1708可以是图1的虚拟计算装置、特定虚拟存储装置、虚拟视频编解码装置或是虚拟JPEG编解码装置。待迁移信息包括与特定虚拟硬件1708相关的驱动程序、固件和硬件信息、上下文信息及状态信息等。回复后,特定虚拟功能1707及特定虚拟硬件1708与特定虚拟功能407及特定虚拟硬件408具有完全相同的环境及数据。
在步骤1605中,物理功能1706向物理功能驱动程序1703报告迁移已经完成,当指令发送完毕后,物理功能1706发送结束信号至内核空间104的物理功能驱动程序603。
在步骤1606中,物理功能驱动程序1703通知VMLU QOM 1704热迁移已经完成,亦即物理功能驱动程序1703发送结束信号至QEMU 1702。
在步骤1607中,VMLU QOM 1704改变状态以便通知虚拟功能驱动程序1705热迁移已经完成。VMLU QOM 1704响应结束信号,通知虚拟功能驱动程序1705热迁移已完成,同时改变基地址寄存器的状态,指向目的服务器的特定虚拟功能1707及特定虚拟硬件1708。
在步骤1608中,虚拟功能驱动程序1705向虚拟功能驱动程序的接口1709发送控制信号,以重新接续执行客户操作系统的任务。
在步骤1609中,虚拟功能驱动程序的接口1709通知虚拟功能驱动程序1705重新接续执行客户操作系统的任务。虚拟功能驱动程序1705重新通过虚拟功能驱动程序的接口1709接收来自用户空间102的处理器的任务,这些任务不再访问源服务器的特定虚拟硬件408,而改以访问目的服务器的特定虚拟硬件1708。
在步骤1610中,VMLU QOM 1704通知Libvirt 1701热迁移完成,Libvirt 1701清理源服务器上所分配的硬件资源。至此完成迁移恢复路径。
结合前述迁移保存路径及迁移恢复路径的实施例,本公开得以实现虚拟化专用集成电路的热迁移。
更详细来说,图17的系统还包括解串装置1710,用以响应热迁移启动请求,在步骤1604中根据待迁移信息恢复特定虚拟功能1707的驱动程序、固件和特定虚拟硬件1708的信息、上下文信息及其状态信息等数据。此实施例的解串装置1710可以利用硬件或固件来实现。如是硬件,解串装置1710是配置在片上系统106中;如是固件,则存储在片上系统106的只读存储装置中。
解串装置1710实现热迁移恢复路径的方法,其流程如图18所述。在步骤1801中,解串装置1710接收待迁移信息。在步骤1802中,解串装置1710反序列化协议层51的信息,此步骤细化成图19的流程。
在步骤1901中,由于源服务器与目的服务器遵循相同的协议,因此解串装置1710可以识别图5的数据结构,其自幻数标识符501中识别这是待迁移信息的协议层51的开始。在步骤1902中,自版本标识符502中识别待迁移信息的版本,以确认目的服务器的系统版本等于或高于源服务器的系统版本。在步骤1903中,自请求响应标识符503中识别此信息指令为请求或是响应,如是请求,则继续执行迁移恢复路径,如为响应,表示此信息非待迁移信息,停止恢复。
接着在步骤1904中,自命令标识符504中识别待迁移信息的任务种类为迁移状态及数据或是更新数据字典。在步骤1905中,自序号标识符505中识别待迁移信息的流水号,以判断此待迁移信息在整个热迁移恢复路径中的排位。
接着在步骤1906中,自数据来源标识符506中识别特定虚拟套件,其中所述特定虚拟套件包括虚拟计算装置、虚拟视频编解码装置、虚拟JPEG编解码装置及虚拟存储装置至少其中之一,解串装置1710根据数据来源标识符506的信息将待迁移信息恢复至指定的特定虚拟套件。
接着在步骤1907中,自字节标识符507中识别待迁移信息的总字节数或是有效载荷的总字节数。在步骤1908中,自域标识符508取出特定虚拟功能的信息,将待迁移信息恢复至特定虚拟功能1707中。在步骤1909中,自载荷标识符510中取出数据结构层52的信息。
在步骤1803中,解串装置1710开始反序列化数据结构层52的信息,首先判断数据结构层52记载的是组态信息或是数据信息。
如果数据结构层52记载的是组态信息,则执行步骤1804,反序列化组态信息,此步骤细化成图20的流程。在步骤2001中,解串装置1710自域标识符511取出特定硬件的信息,准备将待迁移信息恢复至特定硬件1708中。在步骤2002中,自芯片标识符512中识别源服务器的芯片组型号,以判断是否与目的服务器的芯片组相容。在步骤2003中,自板卡标识符513中识别源服务器的板卡版本或型号,以判断是否与目的服务器的板卡相容。在步骤2004中,自微控制器标识符514中识别源服务器的微控制器的型号,以判断是否与目的服务器的微控制器相容。
在步骤2005中,接着自固件标识符515中识别源服务器的固件版本,以判断是否与目的服务器的固件相容。在步骤2006中,自主机驱动标识符516中识别源服务器的主机驱动软件版本,以判断是否与目的服务器的主机驱动软件相容。在步骤2007中,自虚拟机标识符517中识别源服务器的虚拟机驱动软件版本,以判断是否与目的服务器的虚拟机驱动软件相容。
接着在步骤2008中,取出特定装置标识符的信息,也就是自计算装置标识符519、存储装置标识符520、视频编解码装置标识符521、JPEG编解码装置标识符522取出信息以还原特定装置的组态,所述特定装置即是特定硬件1708,为虚拟计算装置、虚拟视频编解码装置、虚拟JPEG编解码装置及虚拟存储装置其中之一。
最后在步骤2009中,根据PCIe标识符523的信息还原虚拟接口的组态。
如果数据结构层52用以记载数据信息,则执行步骤1805,反序列化数据信息,此步骤细化成图21的流程。在步骤2101中,解串装置1710自符号标识符525识别标记结构体的开始并取出结构体的名称,更详细来说,由于符号标识符525包括前缀符号,因此解串装置1710先识别出前缀符号,便可根据前缀符号识别结构体的名称,以及之后的各种标识符。在步骤2102中,自类型标识符526识别类型。在步骤2103中,自键标识符527中取出变量的名称,同样地,由于键标识符527包括前缀符号,因此解串装置1710先识别出前缀符号,便可根据前缀符号取出变量的名称。在步骤2104中,自实体标识符528取出序列化层53的信息。
回到图18,接着执行步骤1806,识别或取出序列化层53的信息,此步骤细化成图22的流程。在步骤2201中,解串装置1710接着根据幻数标识符529识别序列化层53的开始。在步骤2202中,自长度标识符530中识别序列化层53的长度。在步骤2203中,自字节次序标识符531中识别数据的存储字节序为大端模式或小端模式。在步骤2204中,自压缩标识符532中识别所述数据的压缩形式。在步骤2205中,自类型标识符533识别类型。在步骤2206中,自键标识符534中取出变量名称。在步骤2207中,自计数标识符535中识别变量数量。在步骤2208中,自格式标识符536中识别变量格式。在步骤2209中,自数值标识符537中取出变量的数值或字串。
当反序列化时遇到较为复杂的数据时,例如树数据、嵌套数据或逻辑指针,解串装置1710会分别进行以下的反序列化的流程。
在反序列化树数据时,解串装置1710会执行图23的流程。在步骤2301中,自类型标识符533中识别类型为二元树。在步骤2302中,自键标识符534中取出树数据名称。在步骤2303中,自计数标识符535中识别树数据的元素数量。在步骤2304中,自格式标识符536中识别树数据的元素格式。在步骤2305中,自数值标识符537中取出序列化的元素数据。在步骤2306中,根据协议,依特定顺序还原成树数据。
在反序列化嵌套数据时,解串装置1710用以接收待迁移信息,所述待迁移信息的数据结构层52包括第一符号标识符,且序列化层53包括第二符号标识符,根据所述第一符号标识符取出第一序列化数据;根据所述第二符号标识符取出第二序列化数据;将所述第一序列化数据还原成所述第一层结构体;以及将所述第二序列化数据还原成所述第二层结构体。最后将所述第一层结构体及所述第二层结构体存储至内存里。
更详细来说,解串装置1710针对第一层结构体执行图24所示的流程。以下将以图25的嵌套数据作为例子说明。在步骤2401中,接收待迁移信息,所述待迁移信息的数据结构包括数据结构层52和序列化层53,其中数据结构层52包括第一符号标识符2501,序列化层53包括第二符号标识符2509。在步骤2402中,根据第一符号标识符2501识别并取出第一序列化数据,其结构体名称为“foo_nested”。在步骤2403中,自第一类型标识符2502还原第一类型,其类型名称为“foo_nested_t”。在步骤2404中,自第一键标识符2503还原第一层结构体中的变量名称,其为“foo1”。在步骤2405中,自第一实体标识符2504中取出序列化层53信息,也就是识别或取出第二层结构体的信息,此步骤可进一步细化成如图26所示的流程。
在步骤2601中,自幻数标识符2505中识别第二层结构体的开始。在步骤2602中,自长度标识符2506中识别的序列化层53的长度。在步骤2603中,自字节次序标识符2507中识别第二层结构体中数据的存储字节序。在步骤2604中,自压缩标识符2508中识别第二层结构体中数据的压缩形式。在步骤2605中,自第二符号标识符2509中识别第二层结构体的名称为“foo_nested_foo1”。在步骤2606中,自第二类型标识符2510中识别第二类型,其名称为“foo_t”。在步骤2607中,自计数标识符2511中识别变量数量。在步骤2608中,自格式标识符2512中识别变量格式。在步骤2609中,自第二键标识符2513中取出第一变量的名称“integer”。在步骤2610中,自第一数值标识符2514中取出第一变量的数值“91”。在步骤2611中,自第三键标识符2515中取出第二变量的名称“str”。在步骤2612中,自第二数值标识符2516中取出第二变量的字串“Hello world”。在步骤2613中,存储第一层及第二层结构体,即恢复第一层及第二层结构体下的所有信息。
在反序列化逻辑指针时,解串装置1710会执行图27的流程,同时参考图10中包括逻辑指针的待迁移信息。在步骤2701中,接收待迁移信息。在步骤2702中,自第一符号标识符1001中取出第一结构体的名称。在步骤2703中,自第一类型标识符1002中识别第一类型。在步骤2704中,自第一键标识符1003中取出逻辑指针的名称。在步骤2705中,自第一实体标识符1004中取出第二结构体的名称。在步骤2706中,自第二符号标识符1007中取出第二结构体的名称。在步骤2707中,自第二类型标识符1008中识别第二类型。在步骤2708中,自第二键标识符1009中取出变量的名称。在步骤2709中,自第二实体标识符1010中取出所述变量的信息。在步骤2710中,还原第一结构体及第二结构体的信息。
解串装置1710反序列化待迁移信息,并透过物理功能1706将源服务器中的特定虚拟功能407和特定硬件408的驱动程序、固件和硬件信息、上下文信息及其状态信息恢复到目的服务器上的特定虚拟功能1707和特定硬件1708的内存中。
图28是示出根据本公开实施例的一种集成电路装置2800的结构图。如图28所示,集成电路装置2800即是前述多个实施例中的片上系统106,其包括特定虚拟套件2802,特定虚拟套件2802为虚拟计算装置、虚拟视频编解码装置、虚拟JPEG编解码装置至少其中之一。另外,集成电路装置2800还包括通用互联接口2804和其他处理装置2806。
其他处理装置2806可以是中央处理器、图形处理器、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器,其数目不做限制而是依实际需要来确定。其他处理装置2806作为特定虚拟套件2802与外部数据和控制的接口,执行包括但不限于数据搬运,完成对特定虚拟套件2802的开启、停止等的基本控制。其他处理装置2806也可以和特定虚拟套件2802协作共同完成运算任务。
通用互联接口2804可以用于在特定虚拟套件2802与其他处理装置2806间传输数据和控制指令。例如,特定虚拟套件2802可以经由通用互联接口2804从其他处理装置2806中获取所需的输入数据,写入特定虚拟套件2802片上的存储单元。进一步,特定虚拟套件2802可以经由通用互联接口2804从其他处理装置2806中获取控制指令,写入特定虚拟套件2802片上的控制缓存。替代地或可选地,通用互联接口2804也可以读取特定虚拟套件2802的存储模块中的数据并传输给其他处理装置2806。
集成电路装置2800还包括存储装置2808,其可以分别与特定虚拟套件2802和其他处理装置2806连接。存储装置2808即为虚拟存储装置148,用于保存特定虚拟套件2802和其他处理装置2806的数据,尤其适用于所需要运算的数据在特定虚拟套件2802或其他处理装置2806的内部存储中无法全部保存的数据。
根据应用场景的不同,集成电路装置2800可以作为手机、机器人、无人机、视频采集等设备的片上系统(SOC),从而有效地降低控制部分的核心面积,提高处理速度并降低整体的功耗。在此情况时,集成电路装置2800的通用互联接口2804与设备的某些部件相连接。此处的某些部件可以例如是摄像头,显示器,鼠标,键盘,网卡或wifi接口。
本公开还揭露一种芯片或集成电路芯片,其包括了集成电路装置2800。本公开还揭露一种芯片封装结构,其包括了上述芯片。
本公开另一个实施例是一种板卡,其包括了上述芯片封装结构。参阅图29,板卡2900除了包括多个上述芯片2902以外,还可以包括其他的配套部件,该配套部件包括存储器件2904、接口装置2906和控制器件2908。
存储器件2904与芯片封装结构内的芯片2902通过总线2914连接,用于存储数据。存储器件2904可以包括多组存储单元2910。
接口装置2906与所述芯片封装结构内的芯片2902电连接。所述接口装置2906用于实现芯片2902与外部设备2912(例如服务器或计算机)之间的数据传输。在此实施例中,接口装置2906为标准PCIe接口,待处理的数据由服务器通过标准PCIe接口传递至芯片2902,实现数据转移。芯片2902的计算结果亦由接口装置2906传送回外部设备2912。
控制器件2908与芯片2902电连接,以便对芯片2902的状态进行监控。具体地,芯片2902与控制器件2908可以通过SPI接口电连接。控制器件2908可以包括单片机(“MCU”,Micro Controller Unit)。
本公开的另一个实施例是一种电子设备或装置,其包括了上述板卡2900。根据不同的应用场景,电子设备或装置可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本公开另一个实施例为一种计算机可读存储介质,其上存储有序列化或反序列化的计算机程序代码,当所述计算机程序代码由处理器运行时,执行前述的方法。
本公开可以实现将源服务器中的虚拟特定功能和虚拟硬件的驱动程序、固件和硬件信息、上下文信息及其状态信息热迁移到目的服务器上,其利用序列化的技术生成待迁移信息以方便传输,目的服务器再基于同样的协议反序列化待迁移信息,恢复其组态和数据。
依据以下条款可更好地理解前述内容:
条款A1、一种序列化逻辑指针的系统,包括:内存,用以存储第一结构体及第二结构体;以及串化装置,用以:响应热迁移启动请求以生成待迁移信息;在所述待迁移信息的数据结构中生成第一符号标识符及第一实体标识符;在所述第一符号标识符中置入所述第一结构体的名称;以及在所述第一实体标识符中置入所述逻辑指针的名称,所述逻辑指针的名称为所述第二结构体的名称。
条款A2、根据条款A1所述的系统,其中所述第一结构体包括至少一种第一类型,所述串化装置在所述数据结构中生成第一类型标识符,用以记载所述第一类型。
条款A3、根据条款A1所述的系统,其中所述串化装置在所述数据结构中生成第一键标识符,用以记载所述逻辑指针的名称。
条款A4、根据条款A1所述的系统,其中所述串化装置在所述数据结构中生成第二符号标识符,用以置入所述第二结构体的名称。
条款A5、根据条款A1所述的系统,其中所述第二结构体包括至少一种第二类型,所述串化装置在所述数据结构中生成第二类型标识符,用以记载所述第二类型。
条款A6、根据条款A5所述的系统,其中所述第二类型包括至少一个变量,所述串化装置在所述数据结构中生成第二键标识符,用以记载所述变量的名称。
条款A7、根据条款A6所述的系统,其中所述串化装置在所述数据结构中生成第二实体标识符,用以记载所述变量的信息。
条款A8、一种反序列化逻辑指针的系统,包括:解串装置,用以:接收待迁移信息,所述待迁移信息的数据结构包括第一符号标识符及第一实体标识符;自所述第一符号标识符中取出所述第一结构体的名称;以及自所述第一实体标识符中取出所述第二结构体的名称。
条款A9、根据条款A8所述的系统,其中所述第一结构体包括至少一种第一类型,所述数据结构包括第一类型标识符,所述解串装置自所述第一类型标识符中识别所述第一类型。
条款A10、根据条款A8所述的系统,其中所述数据结构包括第一键标识符,所述解串装置自所述第一键标识符中取出所述逻辑指针的名称。
条款A11、根据条款A8所述的系统,其中所述数据结构包括第二符号标识符,所述解串装置自所述第二符号标识符中取出所述第二结构体的名称,并与所述逻辑指针的名称进行比对。
条款A12、根据条款A8所述的系统,其中所述第二结构体包括至少一种第二类型,所述数据结构包括第二类型标识符,所述解串装置自所述第二类型标识符中识别所述第二类型。
条款A13、根据条款A12所述的系统,其中所述第二类型包括至少一个变量,所述数据结构包括第二键标识符,所述解串装置自所述第二键标识符中取出所述变量的名称。
条款A14、根据条款A13所述的系统,其中所述数据结构包括第二实体标识符,所述解串装置自所述第二实体标识符中取出所述变量的信息。
条款A15、一种集成电路装置,包括根据条款A1-13的任意一项所述的系统。
条款A16、一种板卡,包括根据条款A15所述的集成电路装置。
条款A17、一种序列化逻辑指针的方法,所述逻辑指针将第一结构体与第二结构体建立关联,所述方法包括:响应热迁移启动请求以生成待迁移信息;在所述待迁移信息的数据结构中生成第一符号标识符及第一实体标识符;在所述第一符号标识符中置入所述第一结构体的名称;以及在所述第一实体标识符中置入所述第二结构体的名称。
条款A18、一种反序列化逻辑指针的方法,包括:接收待迁移信息,所述待迁移信息的数据结构包括第一符号标识符及第一实体标识符;自所述第一符号标识符中取出所述第一结构体的名称;以及自所述第一实体标识符中取出所述第二结构体的名称。
条款A19、一种计算机可读存储介质,其上存储有处理逻辑指针的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行条款A17或18所述的方法。
Claims (19)
1.一种序列化逻辑指针的系统,包括:
内存,用以存储第一结构体及第二结构体;以及
串化装置,用以:
响应热迁移启动请求以生成待迁移信息;
在所述待迁移信息的数据结构中生成第一符号标识符及第一实体标识符;
在所述第一符号标识符中置入所述第一结构体的名称;以及
在所述第一实体标识符中置入所述逻辑指针的名称,所述逻辑指针的名称为所述第二结构体的名称。
2.根据权利要求1所述的系统,其中所述第一结构体包括至少一种第一类型,所述串化装置在所述数据结构中生成第一类型标识符,用以记载所述第一类型。
3.根据权利要求1所述的系统,其中所述串化装置在所述数据结构中生成第一键标识符,用以记载所述逻辑指针的名称。
4.根据权利要求1所述的系统,其中所述串化装置在所述数据结构中生成第二符号标识符,用以置入所述第二结构体的名称。
5.根据权利要求1所述的系统,其中所述第二结构体包括至少一种第二类型,所述串化装置在所述数据结构中生成第二类型标识符,用以记载所述第二类型。
6.根据权利要求5所述的系统,其中所述第二类型包括至少一个变量,所述串化装置在所述数据结构中生成第二键标识符,用以记载所述变量的名称。
7.根据权利要求6所述的系统,其中所述串化装置在所述数据结构中生成第二实体标识符,用以记载所述变量的信息。
8.一种反序列化逻辑指针的系统,包括:
解串装置,用以:
接收待迁移信息,所述待迁移信息的数据结构包括第一符号标识符及第一实体标识符;
自所述第一符号标识符中取出所述第一结构体的名称;以及
自所述第一实体标识符中取出所述第二结构体的名称。
9.根据权利要求8所述的系统,其中所述第一结构体包括至少一种第一类型,所述数据结构包括第一类型标识符,所述解串装置自所述第一类型标识符中识别所述第一类型。
10.根据权利要求8所述的系统,其中所述数据结构包括第一键标识符,所述解串装置自所述第一键标识符中取出所述逻辑指针的名称。
11.根据权利要求8所述的系统,其中所述数据结构包括第二符号标识符,所述解串装置自所述第二符号标识符中取出所述第二结构体的名称,并与所述逻辑指针的名称进行比对。
12.根据权利要求8所述的系统,其中所述第二结构体包括至少一种第二类型,所述数据结构包括第二类型标识符,所述解串装置自所述第二类型标识符中识别所述第二类型。
13.根据权利要求12所述的系统,其中所述第二类型包括至少一个变量,所述数据结构包括第二键标识符,所述解串装置自所述第二键标识符中取出所述变量的名称。
14.根据权利要求13所述的系统,其中所述数据结构包括第二实体标识符,所述解串装置自所述第二实体标识符中取出所述变量的信息。
15.一种集成电路装置,包括根据权利要求1-13的任意一项所述的系统。
16.一种板卡,包括根据权利要求15所述的集成电路装置。
17.一种序列化逻辑指针的方法,所述逻辑指针将第一结构体与第二结构体建立关联,所述方法包括:
响应热迁移启动请求以生成待迁移信息;
在所述待迁移信息的数据结构中生成第一符号标识符及第一实体标识符;
在所述第一符号标识符中置入所述第一结构体的名称;以及
在所述第一实体标识符中置入所述第二结构体的名称。
18.一种反序列化逻辑指针的方法,包括:
接收待迁移信息,所述待迁移信息的数据结构包括第一符号标识符及第一实体标识符;
自所述第一符号标识符中取出所述第一结构体的名称;以及
自所述第一实体标识符中取出所述第二结构体的名称。
19.一种计算机可读存储介质,其上存储有处理逻辑指针的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行权利要求17或18所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011043865.8A CN114281750A (zh) | 2020-09-28 | 2020-09-28 | 实现序列化及反序列化逻辑指针的方法、装置和存储介质 |
US18/003,689 US12067234B2 (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 |
---|---|---|---|
CN202011043865.8A CN114281750A (zh) | 2020-09-28 | 2020-09-28 | 实现序列化及反序列化逻辑指针的方法、装置和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114281750A true CN114281750A (zh) | 2022-04-05 |
Family
ID=80868082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011043865.8A Pending CN114281750A (zh) | 2020-09-28 | 2020-09-28 | 实现序列化及反序列化逻辑指针的方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114281750A (zh) |
-
2020
- 2020-09-28 CN CN202011043865.8A patent/CN114281750A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9817580B2 (en) | Secure migratable architecture having improved performance features | |
CN112286645B (zh) | 一种gpu资源池调度系统及方法 | |
CN115113973A (zh) | 可配置设备接口 | |
US10353826B2 (en) | Method and apparatus for fast context cloning in a data processing system | |
WO2017024783A1 (zh) | 一种虚拟化方法、装置和系统 | |
CN106775867B (zh) | Windows操作系统环境下的飞行模拟系统 | |
CN111309649B (zh) | 一种数据传输和任务处理方法、装置及设备 | |
CN114281467A (zh) | 实现热迁移的系统方法、装置和存储介质 | |
CN104731569A (zh) | 一种数据处理方法及相关设备 | |
WO2021223744A1 (zh) | 实现热迁移的方法、芯片、板卡和存储介质 | |
CN113326226A (zh) | 一种虚拟化的方法、装置、板卡及计算机可读存储介质 | |
CN112433823A (zh) | 动态虚拟化物理卡的设备及方法 | |
CN111857943B (zh) | 数据处理的方法、装置与设备 | |
WO2022062510A1 (zh) | 实现热迁移的设备及方法 | |
CN113568734A (zh) | 基于多核处理器的虚拟化方法、系统、多核处理器和电子设备 | |
CN114281750A (zh) | 实现序列化及反序列化逻辑指针的方法、装置和存储介质 | |
CN116382594A (zh) | 一种linux系统对数据库服务资源隔离的方法及装置 | |
CN114281749A (zh) | 实现序列化及反序列化树数据的装置、方法和存储介质 | |
CN114328366A (zh) | 实现序列化及反序列化嵌套数据的方法、装置和存储介质 | |
CN114281468A (zh) | 实现热迁移的装置、相关方法及其可读存储介质 | |
US20240354001A1 (en) | Device and method for implementing live migration | |
WO2021170054A1 (zh) | 一种虚拟化的方法、设备、板卡及计算机可读存储介质 | |
CN113326091A (zh) | 一种虚拟化的方法、设备、板卡及计算机可读存储介质 | |
CN113688064A (zh) | 一种在存储器中为数据分配存储地址的方法和设备 | |
CN111340202A (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 |