GPU虚拟化实现方法以及顶点数据缓存方法和相关装置制造方法及图纸

技术编号:9642296 阅读:127 留言:0更新日期:2014-02-07 00:41
本发明专利技术公开了一种GPU虚拟化实现方法以及顶点数据缓存方法和相关装置,图形客户端截获顶点数组类指令;进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以创建第二缓存区,第二缓存区与第一缓存区形成顶点数据的映射关系;在本地数据中进行查询,若本地数据中存在一顶点数据与截获的顶点数据一致,则将顶点数组类指令打包并发送至图形服务器以根据第二缓存区的顶点数据和打包的顶点数组类指令渲染出图片,若不存在,则分解顶点数组类指令,并发送至图形服务器以根据分解的顶点数组类指令渲染出图片,通过上述方式,本发明专利技术能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。

【技术实现步骤摘要】
GPU虚拟化实现方法以及顶点数据缓存方法和相关装置
本专利技术涉及虚拟化
,特别是涉及一种GPU虚拟化实现方法以及顶点数据缓存方法和相关装置。
技术介绍
GPU(GraphicProcessingUnit,图像处理器单元)主要是进行浮点运算和并行计算的,常用于专业的图形运算。GPU虚拟化技术就是要让运行在数据中心服务器上的虚拟化实例共享同一块或多块GPU处理器进行图形运算。从目前已经实现的产品来看,基于DirectX3d的虚拟化解决方案已经比较成熟,无论是性能、体验等方面都已经接近于物理机的水平;而在更广泛应用的高清制图领域,绝大部分3D软件更多的是基于Opengl(OpenGraphicsLibrary,开放的图形程序接口)规范来实现的,这一领域才是企业最迫切希望解决的应用难题。基于Opengl指令的GPU虚拟化技术的实现目前现存的有开源代码Chromium,Chromium本质上是实现了一种跨网络远程渲染过程。在Chromium架构中,顶点数组允许Opengl驱动程序直接从应用程序的内存中获取顶点、颜色、法线向量等属性。顶点数组的使用能最小化函数调用的开销,减少必须打包到显示驱动中命令缓存区的数据量。但是,在远程渲染过程中,从应用层截获到的顶点数组指针是在图形客户端分配出来的,若直接将顶点数组指针透传到图形服务器进行使用会产生错误。Chromium将一个glArrayElement指令调用分解为等价的glVertex3f、glNormal3f、glColor3f或glTexCoord2f调用,即把glArrayElement的传指针类参数指令转化为一系列传值类参数指令,分解后的指令数目是分解前指令数目的100多倍,会使网络传输的数据量陡然增加,会产生大量的延时,占用传输通道的带宽,增加内存共享对CPU的消耗,造成VM(VirtualMachineware,虚拟机)密度低,成本较高。
技术实现思路
本专利技术实施方式提供一种GPU虚拟化实现方法以及顶点数据缓存方法和相关装置,能大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。第一方面提供一种GPU虚拟化实现方法,包括:图形客户端截获顶点数组类指令;进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以创建第二缓存区,第二缓存区与第一缓存区形成顶点数据的映射关系,顶点数据从顶点数组类指令中获取,包括顶点数组指针和顶点数组长度;在本地数据中进行查询,若本地数据中存在一顶点数据与截获的顶点数据一致,则将顶点数组类指令打包并发送至图形服务器,以使得图形服务器根据第二缓存区的顶点数据和打包的顶点数组类指令渲染出图片,若不存在,则分解顶点数组类指令并发送至图形服务器,以使得图形服务器根据分解的顶点数组类指令渲染出图片,其中,本地数据为预存在图形客户端的顶点数据,该顶点数据不需分解即可发送并使用于图形服务器。在第一方面的第一种可能的实现方式中,方法还包括:图形客户端通过数据通道接收图形服务器发送的图片并贴至图形设备接口;通过图形设备接口将顶点数组类指令重定向至TC端以执行顶点数组类指令并生成屏幕画面。在第一方面的第二种可能的实现方式中,进行顶点数据缓存以创建第一缓存区包括:如果新增的顶点数据为历史数据,但缓存的第一缓存区已释放或者其顶点数组长度需要更新为更大的值,则创建临时缓存区;将新增的顶点数据拷贝到临时缓存区中;将顶点数据从临时缓存区拷贝至第一缓存区。在第一方面的第三种可能的实现方式中,进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以创建第二缓存区,第二缓存区与第一缓存区形成顶点数据的映射关系包括:进行顶点数据缓存,并创建第一缓存区;发送同步指令给图形服务器以创建第二缓存区,同步指令包括顶点数组指针,第二缓存区通过顶点数组指针与第一缓存区形成顶点数据的映射关系。在第一方面的第四种可能的实现方式中,第一缓存区位于图形客户端中。在第一方面的第五种可能的实现方式中,第一缓存区位于共享内存中。第二方面提供一种GPU虚拟化实现方法,包括:接收同步指令并创建第二缓存区以进行顶点数据缓存,第二缓存区与图形客户端的第一缓存区形成顶点数据的映射关系,顶点数据包括顶点数组指针和顶点数组长度;根据顶点数组指针判断第二缓存区是否缓存有对应的顶点数据,如果有,则接收图形客户端通过数据通道发送经打包的顶点数组类指令,并根据第二缓存区的顶点数据和打包的顶点数组类指令渲染出图片以发送给图形客户端;如果没有,则接收图形客户端发送的经分解后的顶点数组类指令,并根据经分解后的顶点数组类指令渲染出图片以发送给图形客户端。在第二方面的第一种可能的实现方式中,接收同步指令并创建第二缓存区以进行顶点数据缓存,第二缓存区与图形客户端的第一缓存区形成顶点数据的映射关系包括:接收图形客户端发送的同步指令,其中,同步指令包括顶点数组指针;根据同步指令创建第二缓存区以进行顶点数据缓存,第二缓存区通过顶点数组指针与图形客户端的第一缓存区形成顶点数据的映射关系。在第二方面的第二种可能的实现方式中,第二缓存区位于图形服务器中。在第二方面的第三种可能的实现方式中,第二缓存区位于共享内存中。第三方面提供一种GPU中顶点数据缓存的方法,包括:通过图形客户端创建第一缓存区,进行顶点数据缓存,以缓存单元模式为载体进行学习、预测和校正,进而判断缓存的顶点数据是否存在于本地数据中,若存在,则对顶点数组类指令进行缓存优化,若不存在,则分解顶点数组类指令,其中,顶点数据从顶点数组类指令中获取,包括顶点数组指针和顶点数组长度;发送同步指令至图形服务器,其中,同步指令包括顶点数组指针;通过图形服务器根据同步指令创建第二缓存区,进行顶点数据缓存,第二缓存区通过顶点数组指针与第一缓存区形成顶点数据的映射关系。在第三方面的第一种可能的实现方式中,进行顶点数据缓存是以缓存单元模式为载体进行学习、预测和校正,包括顶点数组指针以及顶点数组长度的学习、预测和校正。在第三方面的第二种可能的实现方式中,缓存单元模式包括:指明顶点数组的首地址和每字节的长度;根据首地址的偏移量绘制几何单元。在第三方面的第三种可能的实现方式中,顶点数组指针的学习、预测和校正包括:获取顶点数组类指令;用顶点数组指针作Hash查找;判断是否命中,如果是,则设置为当前的缓存数据指针,供画顶点指针使用;如果否,将顶点数组指针及相关特征信息添加到Hashtable中;透传缓存数据指针。在第三方面的第四种可能的实现方式中,顶点数组长度的学习、预测和校正包括:获取画顶点指令;判断顶点数据是否已做缓存,如果是,则判断顶点缓存数据是否存在于本地数据中,如果是,则透传画顶点指针,如果否,则分解画顶点指针;如果顶点数据未做缓存,则判断顶点数组长度是否需要更新,如果需要,则更新顶点数组长度,如果不需要,则分解画顶点指针,其中,本地数据为预存在图形客户端的顶点数据,该顶点数据不需分解即可发送并使用于图形服务器。第四方面提供一种GPU图形客户端,包括指令获取模块、第一缓存模块、查询模块以及发送模块,其中:指令获取模块用于截获顶点数组类指令;第一缓存模块用于进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以创建第二缓存区,第二缓存区与第一缓存本文档来自技高网
...
GPU虚拟化实现方法以及顶点数据缓存方法和相关装置

【技术保护点】
一种GPU虚拟化实现方法,其特征在于,所述方法包括:图形客户端截获顶点数组类指令;进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以创建第二缓存区,所述第二缓存区与所述第一缓存区形成顶点数据的映射关系,所述顶点数据从所述顶点数组类指令中获取,包括顶点数组指针和顶点数组长度;在本地数据中进行查询,若所述本地数据中存在一顶点数据与截获的所述顶点数据一致,则将所述顶点数组类指令打包并发送至所述图形服务器,以使得所述图形服务器根据所述第二缓存区的所述顶点数据和打包的所述顶点数组类指令渲染出图片,若不存在,则分解所述顶点数组类指令并发送至所述图形服务器,以使得所述图形服务器根据分解的所述顶点数组类指令渲染出图片,其中,所述本地数据为预存在所述图形客户端的顶点数据,该顶点数据不需分解即可发送并使用于所述图形服务器。

【技术特征摘要】
1.一种GPU虚拟化实现方法,其特征在于,所述方法包括:图形客户端截获顶点数组类指令;进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以创建第二缓存区,所述第二缓存区与所述第一缓存区形成顶点数据的映射关系,所述顶点数据从所述顶点数组类指令中获取,包括顶点数组指针和顶点数组长度;在本地数据中进行查询,若所述本地数据中存在一顶点数据与截获的所述顶点数据一致,则将所述顶点数组类指令打包并发送至所述图形服务器,以使得所述图形服务器根据所述第二缓存区的所述顶点数据和打包的所述顶点数组类指令渲染出图片,若不存在,则分解所述顶点数组类指令并发送至所述图形服务器,以使得所述图形服务器根据分解的所述顶点数组类指令渲染出图片,其中,所述本地数据为预存在所述图形客户端的顶点数据,该顶点数据不需分解即可发送并使用于所述图形服务器。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述图形客户端通过数据通道接收所述图形服务器发送的图片并贴至图形设备接口;通过所述图形设备接口将所述顶点数组类指令重定向至TC端以执行所述顶点数组类指令并生成屏幕画面。3.根据权利要求1所述的方法,其特征在于,所述进行顶点数据缓存以创建第一缓存区包括:如果新增的顶点数据为历史数据,但缓存的所述第一缓存区已释放或者其顶点数组长度需要更新为更大的值,则创建临时缓存区;将所述新增的顶点数据拷贝到所述临时缓存区中;将所述顶点数据从所述临时缓存区拷贝至所述第一缓存区。4.根据权利要求1所述的方法,其特征在于,所述进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以建立第二缓存区,所述第二缓存区与所述第一缓存区形成顶点数据的映射关系包括:进行所述顶点数据缓存,并创建所述第一缓存区;发送同步指令给所述图形服务器以创建第二缓存区,所述同步指令包括所述顶点数组指针,所述第二缓存区通过所述顶点数组指针与所述第一缓存区形成顶点数据的映射关系。5.根据权利要求1所述的方法,其特征在于,所述第一缓存区位于所述图形客户端中。6.根据权利要求1所述的方法,其特征在于,所述第一缓存区位于共享内存中。7.一种GPU虚拟化实现方法,其特征在于,所述方法包括:根据接收的同步指令创建第二缓存区以进行顶点数据缓存,所述第二缓存区与图形客户端的第一缓存区形成顶点数据的映射关系,所述顶点数据包括顶点数组指针和顶点数组长度;根据所述顶点数组指针判断所述第二缓存区是否缓存有对应的顶点数据,如果有,则接收所述图形客户端发送的经打包的顶点数组类指令,并根据所述第二缓存区的所述顶点数据和所述打包的顶点数组类指令渲染出图片以发送给所述图形客户端,如果没有,则接收所述图形客户端发送的经分解后的顶点数组类指令,并根据所述经分解后的顶点数组类指令渲染出图片以发送给所述图形客户端。8.根据权利要求7所述的方法,其特征在于,所述接收同步指令并创建第二缓存区以进行顶点数据缓存,所述第二缓存区与图形客户端的第一缓存区形成所述顶点数据的映射关系包括:接收所述图形客户端发送的同步指令,其中,所述同步指令包括顶点数组指针;根据所述同步指令创建所述第二缓存区以进行顶点数据缓存,所述第二缓存区通过所述顶点数组指针与所述图形客户端的所述第一缓存区形成所述顶点数据的映射关系。9.根据权利要求7所述的方法,其特征在于,所述第二缓存区位于图形服务器中。10.根据权利要求7所述的方法,其特征在于,所述第二缓存区位于共享内存中。11.一种GPU虚拟化中顶点数据缓存的方法,其特征在于,所述方法包括:通过图形客户端创建第一缓存区,进行顶点数据缓存,以缓存单元模式为载体进行学习、预测和校正,进而判断缓存的所述顶点数据是否存在于本地数据中,若存在,则对顶点数组类指令进行缓存优化,若不存在,则分解所述顶点数组类指令,其中,所述顶点数据从所述顶点数组类指令中获取,包括顶点数组指针和顶点数组长度;发送同步指令至图形服务器,其中,所述同步指令包括所述顶点数组指针;通过所述图形服务器根据所述同步指令创建第二缓存区,进行顶点数据缓存,所述第二缓存区通过所述顶点数组指针与所述第一缓存区形成顶点数据的映射关系。12.根据权利要求11所述的方法,其特征在于,所述进行顶点数据缓存是以缓存单元模式为载体进行学习、预测和校正,包括顶点数组指针以及顶点数组长度的学习、预测和校正。13.根据权利要求12所述的方法,其特征在于,所述缓存单元模式包括:指明所述顶点数组的首地址和每字节的长度;根据所述首地址的偏移量绘制几何单元。14.根据权利要求12所述的方法,其特征在于,所述顶点数组指针的学习、预测和校正包括:获取顶点数组类指令;用所述顶点数组指针作Hash查找;判断是否命中,如果是,则设置为当前的缓存数据指针,供画顶点指针使用;如果否,将顶点数组指针及相关特征信息添加到Hashtable中;透传所述缓存数据指针。15.根据权利要求12所述的方法,其特征在于,所述顶点数组长度的学习、预测和校正包括:获取画顶点指令;判断所述顶点数据是否已做缓存,如果是,则判断顶点缓存数据是否存在于本地数据中,如果是,则透传画顶点指针,如果否,则分解所述画顶点指针;如果所述顶点数据未做缓存,则判断所述顶点数组长度是否需要更新,如果需要,则更新所述顶点数组长度,如果不需要,则分解所述画顶点指...

【专利技术属性】
技术研发人员:徐利成
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1