视频编解码卡虚拟化方法、装置、存储介质及终端与流程

文档序号:31126090发布日期:2022-08-13 03:29阅读:193来源:国知局
视频编解码卡虚拟化方法、装置、存储介质及终端与流程

1.本发明涉及视频编解码领域,特别是涉及视频编解码卡虚拟化方法、装置、存储介质及终端。


背景技术:

2.随着互联网的飞速发展,各种外设的虚拟化在服务器领域有越来越大的需求。外设的虚拟化对提高硬件资源的利用率、满足日益增长的市场需求具有重要意义。其中,视频编解码领域是虚拟化技术的重要应用领域。
3.现有的视频编解码卡虚拟化技术主要通过分时复用来共享硬件设备,为每一个虚拟机创建对应的虚拟视频编解码卡,每个虚拟视频编解码卡包括模拟物理视频编解码卡的寄存器。当虚拟机向物理视频编解码卡发送命令和数据时,其首先将命令和数据的地址写到虚拟视频编解码卡的虚拟寄存器上,然后虚拟视频编解码卡调度器选中一个虚拟视频编解码卡,并把虚拟视频编解码卡的虚拟寄存器全部刷新到真实的硬件设备上,即物理视频编解码卡,物理视频编解码卡执行相应的视频编解码操作。
4.现有的视频编解码卡虚拟化技术具有以下缺陷:其一,调度算法需要在主机(host)侧存储多份虚拟设备,当寄存器很多时(vpu(video processing unit,视频处理单元单元)的寄存器多达上千个)需占用较多内存,而且寄存器的刷新效率低下;其二,虚拟设备的调度机制的设计及实现成本较高。


技术实现要素:

5.鉴于以上所述现有技术的缺点,本发明的目的在于提供视频编解码卡虚拟化方法、装置、存储介质及终端,用于解决现有技术中视频编解码卡虚拟化占用内存较多、寄存器刷新效率低下且成本较高的问题。
6.为实现上述目的及其它相关目的,本发明的第一方面提供一种视频编解码卡虚拟化方法,其包括:接收视频编解码指令,所述视频编解码指令包括优先级信息;创建虚拟视频编解码卡,所述虚拟视频编解码卡基于所述视频编解码指令打包生成视频编解码请求;将所述视频编解码请求发送至物理视频编解码卡,以供物理视频编解码卡基于所述优先级信息执行视频编解码操作。
7.于本发明的第一方面的一些实施例中,所述物理视频编解码卡包括视频编解码单元、微处理单元、内存单元和总线接口单元,所述视频编解码卡虚拟化方法包括:物理视频编解码卡通过所述总线接口单元接收所述视频编解码请求,并将其存储至所述内存单元;所述微处理单元上的固件解析所述视频编解码请求;所述视频编解码单元基于解析后的视频编解码请求执行视频编解码操作。
8.于本发明的第一方面的一些实施例中,所述视频编解码请求的生成方式包括:主机基于设备虚拟化基础架构创建与所述虚拟机对应的虚拟视频编解码卡,该虚拟视频编解码卡不保留所述物理视频编解码卡的所有寄存器;所述设备虚拟化基础架构基于所接收的
视频编解码指令驱动所述虚拟视频编解码卡生成所述视频编解码请求。
9.于本发明的第一方面的一些实施例中,所述视频编解码卡虚拟化方法包括:利用vfio-mdev(virtual function i/o mediated devices)设备虚拟化基础架构通过主机的驱动层创建与虚拟机对应的虚拟视频编解码卡;所述虚拟视频编解码卡接收虚拟机发送的所述视频编解码指令后,由vfio-mdev设备虚拟化基础架构驱动生成所述视频编解码请求。
10.于本发明的第一方面的一些实施例中,所述视频编解码卡虚拟化方法包括:基于所述优先级信息设计服务质量策略以提供不同的用户服务。
11.为实现上述目的及其它相关目的,本发明的第二方面提供一种视频编解码卡虚拟化装置,其包括:指令接收模块,用于接收视频编解码指令,所述视频编解码指令包括优先级信息;编解码请求生成模块,用于创建虚拟视频编解码卡,所述虚拟视频编解码卡基于所述视频编解码指令打包生成视频编解码请求;编解码模块,用于将所述视频编解码请求发送至物理视频编解码卡,以供物理视频编解码卡基于所述优先级信息执行视频编解码操作。
12.为实现上述目的及其它相关目的,本发明的第三方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述视频编解码卡虚拟化方法。
13.为实现上述目的及其它相关目的,本发明的第四方面提供一种电子终端,包括:处理器及存储器;所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行所述视频编解码卡虚拟化方法。
14.如上所述,本发明提出一种视频编解码卡虚拟化方法、装置、存储介质及终端,具有以下有益效果:克服了传统分时复用共享硬件设备的视频编解码虚拟化方法的缺陷,提出一种能够更高效地利用硬件资源的新思路,其通过将视频编解码指令打包生成包含优先级信息的请求,即将分时共享方式优化为优先级请求队列方式,实现视频编解码卡的虚拟化。本发明中视频编解码请求(v-request)的响应粒度小于虚拟设备的切换粒度;无需刷新全部寄存器,节省总线接口带宽;无需实现虚拟视频编解码卡的调度机制,简化了主机(host)侧驱动程序的设计;进一步地,设计服务质量策略(qos,quality of service)来提供不同的用户服务,提高用户体验;通过物理视频编解码卡的固件(firmware)对视频编解码请求进行解析,能更好地保护企业信息(如vpu ip信息)的安全性;充分利用了物理视频编解码卡上的微处理器资源。
附图说明
15.图1显示为本发明一实施例中一种视频编解码卡虚拟化方法的流程示意图。
16.图2显示为本发明一实施例中一种视频编解码卡的结构框图。
17.图3显示为本发明一实施例中一种基于分时复用的视频编解码卡虚拟化方法的工作原理示意图。
18.图4显示为本发明一实施例中一种基于优先级请求队列的视频编解码卡虚拟化方法的工作原理示意图。
19.图5显示为本发明一实施例中一种视频编解码卡虚拟化装置的结构示意图。
20.图6显示为本发明一实施例中一种电子终端的结构示意图。
具体实施方式
21.以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其它优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
22.需要说明的是,在下述描述中,参考附图,附图描述了本发明的若干实施例。应当理解,还可使用其它实施例,并且可以在不背离本发明的精神和范围的情况下进行机械组成、结构、电气以及操作上的改变。下面的详细描述不应该被认为是限制性的,并且本发明的实施例的范围仅由公布的专利的权利要求书所限定。这里使用的术语仅是为了描述特定实施例,而并非旨在限制本发明。空间相关的术语,例如“上”、“下”、“左”、“右”、“下面”、“下方”、“下部”、“上方”、“上部”等,可在文中使用以便于说明图中所示的一个元件或特征与另一元件或特征的关系。
23.在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”、“固持”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
24.再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其它特征、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“a、b或c”或者“a、b和/或c”意味着“以下任一个:a;b;c;a和b;a和c;b和c;a、b和c”。仅当元件、功能或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
25.本发明的目的在于提供一种视频编解码卡虚拟化方法、装置、存储介质及终端,用于解决现有技术中视频编解码卡虚拟化占用内存较多、寄存器刷新效率低下且成本较高的问题。
26.为了使本发明的目的、技术方案及优点更加清楚明白,通过下述实施例并结合附图,对本发明实施例中的技术方案进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。下文实施例主要以linux系统及其设备虚拟化基础架构vfio-mdev为例对本发明进行说明,但本方法并不仅仅限于linux系统或设备虚拟化基础架构vfio-mdev。
27.实施例一
28.如图1所示,本发明实施例提出一种视频编解码卡虚拟化方法的流程示意图,该方法具体包括步骤如下:
29.步骤s11.接收视频编解码指令,所述视频编解码指令包括优先级信息。该视频编解码指令可以由虚拟机客户端发送,并可将待编解码的数据或数据地址信息同时发送至服务端。该优先级信息为基于预设的优先级规则赋予客户端的信息。
30.步骤s12.创建虚拟视频编解码卡,所述虚拟视频编解码卡基于所述视频编解码指令打包生成视频编解码请求。其中,虚拟视频编解码卡与物理视频编解码卡(真实的硬件设备)之间存在映射关系,虚拟机通过操作虚拟视频编解码卡来使用对应的硬件设备。并且打包生成的视频编解码请求包含优先级信息。
31.在本实施例较佳实施方式中,所述视频编解码请求的生成方式包括:主机基于设备虚拟化基础架构创建与所述虚拟机对应的虚拟视频编解码卡,该虚拟视频编解码卡不保留所述物理视频编解码卡的所有寄存器;所述设备虚拟化基础架构基于所接收的视频编解码指令驱动所述虚拟视频编解码卡生成所述视频编解码请求。
32.以linux系统为例,其包括vfio-mdev设备虚拟化基础架构;所述视频编解码卡虚拟化方法包括:vfio-mdev设备虚拟化基础架构通过主机的驱动层创建与虚拟机对应的虚拟视频编解码卡;所述虚拟视频编解码卡接收虚拟机发送的所述视频编解码指令后,由vfio-mdev设备虚拟化基础架构驱动生成所述视频编解码请求。
33.步骤s13.将所述视频编解码请求发送至物理视频编解码卡,以供物理视频编解码卡基于所述优先级信息执行视频编解码操作。物理视频编解码卡基于请求中的优先级信息生成请求队列,即优先级请求队列。
34.在本实施例较佳实施方式中,所述物理视频编解码卡包括视频编解码单元、微处理单元、内存单元和总线接口单元,所述视频编解码卡虚拟化方法包括:物理视频编解码卡通过所述总线接口单元接收所述视频编解码请求,并将其存储至所述内存单元;所述微处理单元上的固件解析所述视频编解码请求;所述视频编解码单元基于解析后的视频编解码请求执行视频编解码操作。
35.如图2所示,作为可选实施方式,本发明实施例提出一种视频编解码卡的结构框图,该视频编解码卡包括视频编解码单元21(优选为vpu)、内存单元22(优选为ddr(双倍速率同步动态随机存储器))、微处理单元23和总线接口单元24(优选pcie总线(peripheral component interconnect express高速串行计算机扩展总线))。
36.视频编解码卡通过服务器主机的pcie插槽与主机通信连接,服务器主机运行视频编解码卡的驱动程序以驱动视频编解码卡工作。其工作原理表述如下:服务器主机将待编解码的命令和数据通过总线接口单元24发送到视频编解码单元21的寄存器和内存单元22,视频编解码单元21执行编解码操作获得处理后数据,主机从视频编解码卡处取回处理后数据。视频编解码卡上的微处理单元23主要用于是检测卡的工作状态。
37.在本实施例较佳实施方式中,所述视频编解码卡虚拟化方法包括:基于所述优先级信息设计服务质量策略(qos,quality of service)以提供不同的用户服务,即为不同的用户提供对应服务。qos是网络与用户之间以及网络上互相通信的用户之间关于信息传输与共享的质的约定,当网络过载或拥塞时,qos能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行。
38.本实施例分别给出一种基于分时复用的视频编解码卡虚拟化方法的工作原理示意图(图3)和一种基于优先级请求队列的视频编解码卡虚拟化方法的工作原理示意图(图4)。
39.如图3所示,基于分时复用的视频编解码卡虚拟化方法中,虚拟机(vm)与物理主机(host)中的虚拟视频编解码卡(virtual video card)一一对应,且虚拟视频编解码卡包括
虚拟寄存器(v-registers,模拟物理视频编解码卡的寄存器)。其工作流程如下:vfio-mdev通过在主机的驱动层创建虚拟视频编解码卡,虚拟机将视频编解码指令和待处理数据的地址写到虚拟视频编解码卡的虚拟寄存器上;虚拟编解码卡调度器选中一个虚拟编解码卡,并将选中的虚拟编解码卡的虚拟寄存器全部刷新到物理视频编解码卡(hw video card)的寄存器(registers)上,使物理视频编解码卡执行相应的视频编解码操作。
40.如图4所示,基于优先级请求队列的视频编解码卡虚拟化方法中,虚拟机(vm)与物理主机(host)中的虚拟视频编解码卡(virtual video card)一一对应,且虚拟视频编解码卡不包括虚拟寄存器。当虚拟机操作虚拟视频编解码卡时,主机上的vfio-mdev驱动生成视频编解码请求(v-request)并发送给物理视频编解码卡;物理视频编解码卡生成视频编解码请求队列(request-queues),其上的固件firmware按照优先级响应v-request并操作视频编解码单元(vpu)执行相应的视频编解码操作。
41.在一些实施方式中,所述视频编解码卡虚拟化方法可应用于控制器,所述电控单元例如为arm(advanced risc machines)控制器、fpga(field programmable gate array)控制器、soc(system on chip)控制器、dsp(digital signal processing)控制器、或者mcu(microcontroller unit)控制器等等。在一些实施方式中,所述视频编解码卡虚拟化方法也可应用于包括存储器、存储控制器、一个或多个处理单元(cpu)、外设接口、rf电路、音频电路、扬声器、麦克风、输入/输出(i/o)子系统、显示屏、其它输出或控制设备,以及外部端口等组件的计算机;所述计算机包括但不限于如台式电脑、笔记本电脑、平板电脑、智能手机、智能电视、个人数字助理(personal digital assistant,简称pda)等个人电脑。在另一些实施方式中,所述视频编解码卡虚拟化方法还可应用于服务器,所述服务器可以根据功能、负载等多种因素布置在一个或多个实体服务器上,也可以由分布的或集中的服务器集群构成。
42.实施例二
43.如图5所示,本发明实施例提出一种视频编解码卡虚拟化装置的结构示意图,其包括:指令接收模块51,用于接收视频编解码指令,所述视频编解码指令包括优先级信息;编解码请求生成模块52,用于创建虚拟视频编解码卡,所述虚拟视频编解码卡基于所述视频编解码指令打包生成视频编解码请求;编解码模块53,用于将所述视频编解码请求发送至物理视频编解码卡,以供物理视频编解码卡基于所述优先级信息执行视频编解码操作。
44.需要说明的是,本实施例提供的模块与上文中提供的方法、实施方式类似,故不再赘述。另外需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,编解码模块53可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上编解码模块53的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
45.例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,简称asic),或,一个或多个数字信号处理器(digital signal processor,简称dsp),或,一个或者多个现场可编程门阵列(field programmable gate array,简称fpga)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,简称cpu)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。
46.实施例三
47.如图6所示,本发明实施例提供一种电子终端的结构示意图。本实施例提供的电子终端,包括:处理器61、存储器62、通信器63;存储器62通过系统总线与处理器61和通信器63连接并完成相互间的通信,存储器62用于存储计算机程序,通信器63用于和其它设备进行通信,处理器61用于运行计算机程序,使电子终端执行如上视频编解码卡虚拟化方法的各个步骤。
48.上述提到的系统总线可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于实现数据库访问装置与其它设备(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(random access memory,简称ram),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
49.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
50.实施例四
51.本发明实施例提出一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前文所述视频编解码卡虚拟化方法。
52.本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
53.综上所述,本发明提供一种视频编解码卡虚拟化方法、装置、存储介质及终端,通过将视频编解码指令打包生成包含优先级信息的请求,即将分时共享方式优化为优先级请求队列方式,实现视频编解码卡的虚拟化。本发明中视频编解码请求的响应粒度小于虚拟设备的切换粒度;无需模拟全部的寄存器,也无需刷新全部寄存器,节省总线接口带宽和主机存储空间;无需实现虚拟视频编解码卡的调度机制,简化了主机侧驱动程序的设计,节约人力;进一步地,设计服务质量策略来为不同用户提供不同的服务,提高用户体验;通过物理视频编解码卡的固件对视频编解码请求进行解析,能更好地保护企业信息的安全性;充
分利用了物理视频编解码卡上的微处理器资源。因此,本发明有效克服了现有技术中视频编解码卡虚拟化占用内存较多、寄存器刷新效率低下且成本较高的问题,具有高度产业利用价值。
54.上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1