CN113326121A - 一种机器学习设备及板卡 - Google Patents
一种机器学习设备及板卡 Download PDFInfo
- Publication number
- CN113326121A CN113326121A CN202011177207.8A CN202011177207A CN113326121A CN 113326121 A CN113326121 A CN 113326121A CN 202011177207 A CN202011177207 A CN 202011177207A CN 113326121 A CN113326121 A CN 113326121A
- Authority
- CN
- China
- Prior art keywords
- virtual
- machine learning
- video codec
- chip
- devices
- 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
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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
-
- 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]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开涉及一种机器学习设备及板卡,其中所述机器学习设备及板卡可以包括用户空间、内核空间及片上系统,该片上系统可以包括计算装置、视频编解码装置、JPEG编解码装置及存储装置,这些装置与用户空间、内核空间进行交互,共同完成指定的计算操作。
Description
技术领域
本公开一般地涉及计算机领域。更具体地,本公开涉及一种虚拟化机器学习设备及板卡。
背景技术
时间片轮转调度在计算机领域是使用最广泛的算法。每个进程被分配一个时间段,称作时间片,即该进程允许运行的时间。如果在时间片结束时进程还在运行,则该进程会暂停并将处理器资源分配给另一个进程。如果进程在时间片结束前阻塞或结束,则处理器当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完分配给它的时间片后,它的其他任务被移到队列的末尾。
时间片轮转调度存在许多问题,例如服务质量(QoS)、隔离性与队首阻塞(HOL)皆无法保证。特别是在人工智能芯片领域,其需要大量的运算资源,如采用时间片轮转调度配置计算机资源,将会导致运行效益太低,因此如何获得一种合理配置硬件资源的技术方案仍是现有技术中需要解决的问题。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本公开的方案提供了一种机器学习设备及板卡。
在一个方面中,本公开揭露一种机器学习设备,包括N个虚拟部件及 M个单元,N与M为正整数,M大于N,其中每个虚拟部件配置至少一个单元,以执行所述虚拟部件的任务。
在另一个方面中,本公开揭露一种板卡,其包括上述的机器学习设备。
本公开的虚拟化技术将片上系统的资源切分成多个虚拟部件,供用户空间的多个虚拟机同时使用,提供了绝佳的资源共享与并行、隔离性、配置灵活性和安全性。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的说明以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示出本公开实施例的框架图;
图2是示出本公开实施例的计算装置的内部结构示意图;
图3是示出本公开实施例弹性调配集群的示意图;
图4是示出本公开另一实施例的板卡的示意图;
图5是示出本公开另一实施例的用户空间虚拟化的流程图;
图6是示出本公开另一实施例的片上系统虚拟化的流程图;以及
图7是示出本公开另一实施例的计算装置虚拟化的流程图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本公开的具体实施方式。
虚拟化是一种将一个计算机设备虚拟为多个虚拟机的技术。当在一台计算机上同时运行多个虚拟机时,每个虚拟机可运行不同的操作系统,在操作系统上运行的应用程序可以在独立的空间内互不影响,从而显著提高计算机的工作效率。
虚拟化技术与多任务或是超线程技术是不同的。多任务是指在一个操作系统中多个程序同时运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序在运行,每一个操作系统都运行在各自相对应的虚拟机上。超线程技术是单处理器模拟双处理器来平衡程序运行性能,这两个模拟出来的处理器是不能分离的,只能协同工作,而在虚拟化技术中,虚拟处理器或部件是独立运作的。
虚拟化技术通常是采用软件重新定义划分计算机的物理资源,以实现计算机资源的动态分配和灵活调度,进而提高资源利用率。
在本公开中会涉及到硬件、软件、固件的描述,硬件包括各类装置、单元、器、设备等,软件包括各类操作系统、机、程序、工具等,固件包括功能等,当涉及硬件、软件、固件的总称时,以部件描述之。这样的安排只为了更清楚的描述本公开的技术,并非对本公开的技术做任何的限制。
本公开的一个实施例是一种采用虚拟化技术的框架,应用在人工智能芯片上。更详细来说,是用于神经网络的机器学习设备上,该机器学习设备可以是卷积神经网络加速器。图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上的空间实际上是映射给这个进程的虚拟部件。
从用户虚拟机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可以弹性地根据虚拟部件的数量以及所需资源,以集群为单位做弹性的调配。图3是示出可能的分配方式。第一种示例性的分配方式302即为前述有四个虚拟计算装置142的情况,每个虚拟计算装置142 配置一个集群。第二种示例性的分配方式304为三个虚拟计算装置142的情况,假设第一虚拟计算装置需要使用较多的硬件资源,因此配置两个集群,而第二虚拟计算装置及第三虚拟计算装置分别配置一个集群。第三种示例性的分配方式306为两个虚拟计算装置142均分集群资源的情况,即各配置两个集群。第四种示例性的分配方式308同样是有两个虚拟计算装置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所示的框架,与前述实施例不同处在于PCIe138被虚拟化为六个虚拟接口140,其他部件则维持四个虚拟部件。在此实施例中,系统会以所有部件中最少虚拟部件数量作为虚拟化运行的基础,也就是四个虚拟部件。在这种情况下,PCIe 138将有两个闲置虚拟接口140,QEMU可以选择关闭或不配置这两个闲置的虚拟接口 140,或是将这两个虚拟接口140纳入虚拟化运行中,例如:第一虚拟功能及第二虚拟功能需要较多的接口资源,则QEMU可以分别配置两个虚拟接口140给第一虚拟功能及第二虚拟功能,而分别配置一个虚拟接口给其他虚拟功能。
本公开还揭露另一个实施例,为一种板卡,其包括了如图1的框架。如图4所示,板卡400包括至少一个芯片402(图中仅示出两个)、存储装置404、接口装置406和控制器件408。
图4的芯片402整合了图1的计算装置130、视频编解码装置132及 JPEG编解码装置143等,可以处于多负载和轻负载等不同的工作状态。通过控制器件408可以实现对芯片402中的计算装置130、视频编解码装置132及JPEG编解码装置143的工作状态的调控。
存储装置404与芯片402通过总线414连接,用于存储数据。存储装置404即为图1的存储装置136,如前所述,其包括多组DDR通道410。每一组DDR通道410可以包括多个DDR4颗粒(芯片)。每一组DDR通道410与芯片402通过总线414连接。
接口装置406即为图1的PCIe 138,与所述芯片封装结构内的芯片402 电连接。接口装置406用于实现芯片402与外部设备412(即用户空间102) 之间的数据传输。待处理的任务由外部设备412通过PCIe接口传递至芯片402,实现数据转移。接口装置406还可以是其他的接口,本公开并不限制接口的具体表现形式,能够实现虚拟化功能即可。另外,芯片402的计算结果仍由接口装置406传送回外部设备412。
控制器件408即为图1的内核空间104,与芯片402电连接,以便对芯片402的状态进行监控。具体地,芯片402与控制器件408可以通过SPI 接口电连接。控制器件408可以包括单片机(micro controller unit,MCU),并存储有内核虚拟机120和芯片驱动程序122。
本公开还揭露了一种电子设备或装置,其包括了上述板卡400。根据不同的应用场景,电子设备或装置可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本公开的另一个实施例为一种虚拟化的方法,更具体来说,是针对图 1的框架100进行虚拟化的方法,其应用在神经网络的机器学习设备上,该机器学习设备可以是卷积神经网络加速器。
用户空间102在未被虚拟化前,是由硬件监测器工具108所控制,通过调用接口获取片上系统106的信息。硬件监测器工具108不仅可以采集片上系统106的信息,还可以实时获取上层软件对片上系统106资源的开销,为用户空间102实时显示当前片上系统106的详细信息和状态。
图5示出虚拟化用户空间102的流程图。
在虚拟运行期间,用户空间102改由用户虚拟机110接管,用户虚拟机110是对真实计算环境的抽象和模拟,系统会分配一套数据结构来管理用户虚拟机110的状态,数据结构包括全套寄存器、物理内存的使用情况、虚拟设备的状态等等。用户虚拟机110是以QEMU来实现。用户空间102 包括处理器、存储器、I/O设备等。
在执行步骤502时,QEMU虚拟化用户空间102的处理器,以产生四个虚拟处理器。在执行步骤504时,QEMU虚拟化用户空间102的存储器,以产生四个虚拟存储器。在执行步骤506时,QEMU虚拟化用户空间102 的I/O设备,以产生四个虚拟I/O设备。
在执行步骤508时,QEMU分别配置这些虚拟处理器其中之一给每个客户操作系统。在执行步骤510时,QEMU分别配置这些虚拟存储器其中之一给每个客户操作系统。在执行步骤512时,QEMU分别配置这些虚拟 I/O设备其中之一给每个客户操作系统。
执行完前述步骤后,每个客户操作系统各占用一部分用户空间102端的资源,例如各占四分之一。更详细来说,每个客户操作系统分别能访问一个虚拟处理器、一个虚拟存储器及一个虚拟I/O设备,以执行该客户操作系统的任务。通过这种模式,客户操作系统1、客户操作系统2、客户操作系统3、客户操作系统4就能独立运作。
片上系统106的固件包括物理功能126,硬件包括计算装置130、视频编解码装置132、JPEG编解码装置134、存储装置136及PCIe 138。在 SR-IOV的环境下,片上系统106虚拟化是基于SR-IOV技术来实现的,其流程如图6所示。
在执行步骤602时,虚拟化PCIe 138,以产生至少四个虚拟接口140。在执行步骤604时,虚拟化物理功能126,以产生四个虚拟功能128。在执行步骤606时,虚拟化计算装置130,以产生四个虚拟计算装置142。
在执行步骤608时,虚拟化视频编解码装置132,以产生四个虚拟视频编解码装置144。更详细来说,此实施例的视频编解码装置132包括六个视频编解码单元,这些视频编解码单元其中之一会配置给每个虚拟视频编解码装置144。视频编解码装置132可以弹性地根据虚拟部件的数量以及所需资源,以视频编解码单元为单位做弹性的调配。视频编解码单元的数量至少应与虚拟视频编解码装置144的数量相同,以确保每个虚拟视频编解码装置144能配置一个视频编解码单元,当视频编解码单元数量多于虚拟视频编解码装置144的数量时,便可以根据实际需求,将视频编解码单元适当地配置给虚拟视频编解码装置144,以增加硬件配置弹性。
接着执行步骤610,虚拟化JPEG编解码装置134,以产生四个虚拟 JPEG编解码装置146。更详细来说,此实施例的JPEG编解码装置134包括六个JPEG编解码单元,这些JPEG编解码单元其中之一会配置给每个虚拟JPEG编解码装置146。JPEG编解码装置134可以弹性地根据虚拟部件的数量以及所需资源,以JPEG编解码单元为单位做弹性的调配。JPEG 编解码单元的数量至少应与虚拟JPEG编解码装置146的数量相同,以确保每个虚拟JPEG编解码装置146能配置一个JPEG编解码单元,当JPEG 编解码单元数量多于虚拟JPEG编解码装置146的数量时,便可以根据实际需求,将JPEG编解码单元适当地配置给虚拟JPEG编解码装置146,以增加硬件配置弹性。
在执行步骤612时,虚拟化存储装置136,以产生四个虚拟存储装置 148。在此步骤中,存储装置136中的DDR通道至少其中之一被配置给每个虚拟存储装置。同样地,存储装置136可以弹性地根据虚拟部件的数量以及所需资源,以DDR通道为单位做弹性的调配。
在执行步骤614时,配置这些虚拟接口140其中之一给每个客户操作系统。在执行步骤616时,配置这些虚拟功能128其中之一给每个客户操作系统。在执行步骤618时,配置这些虚拟计算装置142其中之一给每个客户操作系统。在执行步骤620时,配置这些虚拟视频编解码装置144其中之一给每个客户操作系统。在执行步骤622时,配置这些虚拟JPEG编解码装置146其中之一给每个客户操作系统。在执行步骤624时,配置这些虚拟存储装置148其中之一给每个客户操作系统。
执行完图5和图6的步骤后,每个客户操作系统分别配置一组虚拟套件,每组虚拟套件包括一个处理器、一个存储器、一个用户虚拟机110、一个虚拟接口140、一个虚拟功能128、一个虚拟计算装置142、一个虚拟视频编解码装置144、一个虚拟JPEG编解码装置146及一个虚拟存储装置148。每组虚拟套件各自独立运行互不影响,用来执行相对应的客户操作系统所交付的任务,以确定每个客户操作系统能通过所配置的虚拟接口 140及虚拟功能128访问所配置的虚拟计算装置142、虚拟视频编解码装置144、虚拟JPEG编解码装置146及虚拟存储装置148。
图7示出了计算装置130基于SR-IOV技术在进行虚拟化时的流程图。计算装置130共有十六个处理单元核(处理单元核0至处理单元核15),用于执行矩阵计算任务。
在执行步骤702时,将每四个处理单元核组成一个集群,计算装置130 基本上是以集群为单元执行计算任务。
计算装置130还包括存储单元核210及共享存储单元212。在执行步骤704时,虚拟化存储单元核210,以产生四个虚拟存储单元核。在执行步骤706时,虚拟化共享存储单元212,以产生四个虚拟共享存储单元。在执行步骤708时,配置这些集群其中之一给虚拟计算装置142。在执行步骤710时,配置这些虚拟存储单元核其中之一给虚拟计算装置142。在执行步骤712时,配置这些虚拟共享存储单元其中之一给虚拟计算装置 142。
更详细来说,在执行步骤708时,计算装置130可以弹性地根据虚拟部件的数量以及所需资源,以集群为单位做弹性的调配。计算装置130的集群数量至少应与虚拟计算装置142的数量相同,以确保每个虚拟计算装置142能配置一个集群,当集群数量多于虚拟计算装置142的数量时,便可以根据实际需求,将集群适当地配置给虚拟计算装置142,以增加硬件配置弹性。
在执行完图7的步骤后,每个虚拟计算装置142分别配置一个虚拟存储单元核、一个虚拟共享存储单元以及一个集群,以支撑特定客户操作系统的计算任务。同样地,每个虚拟计算装置142各自独立运作,互不影响。
本公开另一实施例是一种计算机可读存储介质,其上存储有基于机器学习设备进行虚拟化的计算机程序代码,当所述计算机程序代码由处理器运行时,可以执行前述实施例的方法,例如图5、图6、图7所示的技术方案。
本公开的虚拟化技术基于SR-IOV,将片上系统的资源切分成多个虚拟部件,供用户空间的多个虚拟机同时使用。该技术将硬件资源(计算资源及存储资源等)进行完整的切分,并非基于时间片的共享机制,从而避免了基于时间片调度方式带来的服务质量与队首阻塞等问题,同时提供了绝佳的资源共享与并行、隔离性、配置灵活性和安全性。
依据以下条款可更好地理解前述内容:
条款A1、一种机器学习设备,包括:N个虚拟部件,N为正整数;以及M个单元,M为正整数,M大于N;其中,每个虚拟部件配置至少一个单元,以执行所述虚拟部件的任务。
条款A2、根据条款A1所述的机器学习设备,其中M-N个单元闲置。
条款A3、根据条款A1所述的机器学习设备,其中M-N个单元配置给所述N个虚拟部件中的部分虚拟部件,使得所述部分虚拟部件配置多个单元。
条款A4、根据条款A1所述的机器学习设备,其中所述虚拟部件为虚拟计算装置,所述单元为集群。
条款A5、根据条款A1所述的机器学习设备,其中所述虚拟部件为虚拟视频编解码装置,所述单元为视频编解码单元。
条款A6、根据条款A1所述的机器学习设备,其中所述虚拟部件为虚拟JPEG编解码装置,所述单元为JPEG编解码单元。
条款A7、根据条款A1所述的机器学习设备,其中所述虚拟部件为虚拟存储装置,所述单元为DDR通道。
条款A8、根据条款A1所述的机器学习设备,其中所述单元为虚拟接口。
条款A9、一种板卡,包括根据条款A1-8任一项所述的机器学习设备。
Claims (9)
1.一种机器学习设备,包括:
N个虚拟部件,N为正整数;以及
M个单元,M为正整数,M大于N;
其中,每个虚拟部件配置至少一个单元,以执行所述虚拟部件的任务。
2.根据权利要求1所述的机器学习设备,其中M-N个单元闲置。
3.根据权利要求1所述的机器学习设备,其中M-N个单元配置给所述N个虚拟部件中的部分虚拟部件,使得所述部分虚拟部件配置多个单元。
4.根据权利要求1所述的机器学习设备,其中所述虚拟部件为虚拟计算装置,所述单元为集群。
5.根据权利要求1所述的机器学习设备,其中所述虚拟部件为虚拟视频编解码装置,所述单元为视频编解码单元。
6.根据权利要求1所述的机器学习设备,其中所述虚拟部件为虚拟JPEG编解码装置,所述单元为JPEG编解码单元。
7.根据权利要求1所述的机器学习设备,其中所述虚拟部件为虚拟存储装置,所述单元为DDR通道。
8.根据权利要求1所述的机器学习设备,其中所述单元为虚拟接口。
9.一种板卡,包括根据权利要求1-8任一项所述的机器学习设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011177207.8A CN113326121A (zh) | 2020-02-28 | 2020-02-28 | 一种机器学习设备及板卡 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011177207.8A CN113326121A (zh) | 2020-02-28 | 2020-02-28 | 一种机器学习设备及板卡 |
CN202010131485.3A CN113326109A (zh) | 2020-02-28 | 2020-02-28 | 一种虚拟化的方法、设备、板卡及计算机可读存储介质 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010131485.3A Division CN113326109A (zh) | 2020-02-28 | 2020-02-28 | 一种虚拟化的方法、设备、板卡及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113326121A true CN113326121A (zh) | 2021-08-31 |
Family
ID=77412939
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011177207.8A Pending CN113326121A (zh) | 2020-02-28 | 2020-02-28 | 一种机器学习设备及板卡 |
CN202010131485.3A Pending CN113326109A (zh) | 2020-02-28 | 2020-02-28 | 一种虚拟化的方法、设备、板卡及计算机可读存储介质 |
CN202011177174.7A Pending CN113326110A (zh) | 2020-02-28 | 2020-02-28 | 一种片上系统及板卡 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010131485.3A Pending CN113326109A (zh) | 2020-02-28 | 2020-02-28 | 一种虚拟化的方法、设备、板卡及计算机可读存储介质 |
CN202011177174.7A Pending CN113326110A (zh) | 2020-02-28 | 2020-02-28 | 一种片上系统及板卡 |
Country Status (1)
Country | Link |
---|---|
CN (3) | CN113326121A (zh) |
-
2020
- 2020-02-28 CN CN202011177207.8A patent/CN113326121A/zh active Pending
- 2020-02-28 CN CN202010131485.3A patent/CN113326109A/zh active Pending
- 2020-02-28 CN CN202011177174.7A patent/CN113326110A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN113326109A (zh) | 2021-08-31 |
CN113326110A (zh) | 2021-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113326226A (zh) | 一种虚拟化的方法、装置、板卡及计算机可读存储介质 | |
CN109522087B (zh) | 基于国产申威处理器的虚拟机构建方法和系统 | |
EP1674987B1 (en) | Systems and methods for exposing processor topology for virtual machines | |
JP6564838B2 (ja) | インダストリアル・インターネットオペレーティングシステムに基づくマルチオペレーティングシステム運行方法および装置 | |
EP3074866A1 (en) | Apparatus and method for scheduling graphics processing unit workloads from virtual machines | |
CN101887378A (zh) | 一种半实物实时仿真机和半实物实时仿真系统 | |
CN112433823A (zh) | 动态虚拟化物理卡的设备及方法 | |
WO2021223744A1 (zh) | 实现热迁移的方法、芯片、板卡和存储介质 | |
CN114138423A (zh) | 基于国产gpu显卡的虚拟化构建系统及方法 | |
CN115904617A (zh) | 一种基于sr-iov技术的gpu虚拟化实现方法 | |
CN113568734A (zh) | 基于多核处理器的虚拟化方法、系统、多核处理器和电子设备 | |
CN113326118A (zh) | 基于多核处理器的虚拟化方法、系统、多核处理器和电子设备 | |
CN113326091A (zh) | 一种虚拟化的方法、设备、板卡及计算机可读存储介质 | |
CN116578416B (zh) | 一种基于gpu虚拟化的信号级仿真加速方法 | |
WO2021170054A1 (zh) | 一种虚拟化的方法、设备、板卡及计算机可读存储介质 | |
CN113326121A (zh) | 一种机器学习设备及板卡 | |
CN113326092A (zh) | 一种虚拟化的方法、设备、板卡及计算机可读存储介质 | |
WO2021170055A1 (zh) | 一种虚拟化的方法、设备、板卡及计算机可读存储介质 | |
CN109683971A (zh) | 一种物联网系统的硬件驱动复用方法 | |
KR101334842B1 (ko) | 가상화 지원 단말 플랫폼을 위한 가상머신 관리장치 및 방법 | |
CN114816648A (zh) | 一种计算装置和计算方法 | |
CN114281468A (zh) | 实现热迁移的装置、相关方法及其可读存储介质 | |
US20240272927A1 (en) | Method for resource allocation for applications and/or application containers in a distributed system of heterogeneous compute nodes | |
Patil et al. | Implementing application specific RTOS policies using reflection | |
EP4414843A1 (en) | Systems and methods for creating isolated partitions in a multi-core processing system |
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 |