CN105164636B - 一种虚拟化环境中的数据通信的方法、装置及处理器 - Google Patents

一种虚拟化环境中的数据通信的方法、装置及处理器 Download PDF

Info

Publication number
CN105164636B
CN105164636B CN201480001007.3A CN201480001007A CN105164636B CN 105164636 B CN105164636 B CN 105164636B CN 201480001007 A CN201480001007 A CN 201480001007A CN 105164636 B CN105164636 B CN 105164636B
Authority
CN
China
Prior art keywords
function
write
stack
graphics
vertex cache
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.)
Active
Application number
CN201480001007.3A
Other languages
English (en)
Other versions
CN105164636A (zh
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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201810061103.7A priority Critical patent/CN108345492A/zh
Publication of CN105164636A publication Critical patent/CN105164636A/zh
Application granted granted Critical
Publication of CN105164636B publication Critical patent/CN105164636B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/003Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
    • G09G5/006Details of the interface to the display terminal
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication

Abstract

本发明实施例公开了一种虚拟化环境中的数据通信的方法、装置及处理器,通过图形处理程序通过图形处理接口调用图形驱动的写入函数,调用过程中的函数记录在函数栈中,根据所述图形驱动的写入函数的入口地址和所述函数栈的层数,确定所述图形处理接口的写入函数的入口地址,从所述图形处理接口的写入函数的入口地址中读取所述图形处理程序的顶点缓存的偏移量及长度,从而确定图形处理程序在顶点缓存中修改的数据区域,所述修改的数据区域即为图形渲染所必需的数据,用户虚拟机仅将图形渲染必需的数据发送到渲染服务器,从而避免非必要数据的传输,降低用户虚拟机与渲染服务器之间的通信开销,加快了渲染服务器的渲染速度,从而提高GPU虚拟化技术中共享的效率和用户体验。

Description

一种虚拟化环境中的数据通信的方法、装置及处理器
技术领域
本发明涉及通信技术领域,尤其是涉及一种虚拟化环境中的数据通信的方法、装置及处理器。
背景技术
在虚拟桌面场景下存在至少一台服务器和至少一台客户机,用户通过客户机上安装的虚拟桌面客户端登陆到服务器中的用户虚拟机(User Virtual Machine)上。虚拟机中可能会安装有依赖于GPU(Graphic Processing Unit,图形处理器)进行图形运算的图形处理程序,如AutoCAD、3Ds Max、Pro/E,3D(three-dimensional,三维)游戏等。当这些程序在虚拟机上运行时,GPU虚拟化技术可以使多台虚拟机共用一个物理显卡进行图形运算,来提高硬件资源的利用效率。用户虚拟机上的图形驱动(例如,用户态3D驱动以及内核态WDDM(Windows Display Driver Model,视窗图形驱动模型))获取各类软件及操作系统的图形指令(例如,3D图形指令以及2D GDI(Graphics Device Interface,图形设备接口)指令),并将上述图形指令及图形渲染所使用的数据发送到渲染服务器(Render Server),渲染服务器调用物理GPU进行指令的渲染并生成用户虚拟机的桌面图像,将生成的用户虚拟机桌面图像发送到客户端进行显示。
在上述过程中,大量的图形指令和数据会在用户虚拟机与渲染服务器之间进行通信,导致用户虚拟机与渲染服务器之间产生大量的通信开销,降低了GPU虚拟化技术中共享的效率和用户体验。
发明内容
本发明的目的在于提供一种虚拟化环境中的数据通信的方法、装置及处理器,用以提高GPU虚拟化技术中共享的效率与用户体验。
第一方面,本发明实施例提供了一种虚拟化环境中数据通信的方法,包括:
图形驱动接收图形处理接口发送的驱动函数调用请求,所述驱动函数调用请求为所述图形处理接口在接收到图形处理程序发送的系统函数调用请求后发送的,所述系统函数调用请求用于调用所述图形处理接口的写入函数,所述驱动函数调用请求用于调用所述图形驱动的写入函数,所述图形处理接口的写入函数的入口地址保存在函数栈中,所述图形驱动的写入函数的入口地址保存在所述函数栈中;
根据所述图形驱动的写入函数的入口地址和所述函数栈的层数,所述图形驱动确定所述图形处理接口的写入函数的入口地址,从所述图形处理接口的写入函数的入口地址中读取所述图形处理程序的顶点缓存的偏移量及长度;
所述图形驱动将所述顶点缓存的偏移量及长度对应的数据区域中的数据发送给渲染服务器。
在第一方面的第一种可能的实现方式中,根据所述图形驱动的写入函数的入口地址和所述函数栈的层数,所述图形驱动确定所述图形处理接口的写入函数的入口地址包括:
a.根据所述图形驱动的写入函数的入口地址,读取所述图形驱动所在的中央处理器上的扩展基址指针EBP寄存器中的值,所述EBP寄存器中的值为所述函数栈中上一层函数保存的栈帧地址;
b.读取所述函数栈中上一层函数保存的栈帧地址中的值,所述函数栈中上一层函数保存的栈帧地址中的值为所述函数栈中更上一层函数保存的栈帧地址,按照所述函数栈的层数n重复执行步骤b,第n-1次获得的栈帧地址即为所述图形处理接口的写入函数的入口地址。
结合所述第一方面或第一方面的第一种实现方式,在第一方面的第二种可能的实现方式中,所述方法还包括:
在所述图形驱动的写入函数中加入软中断;
运行测试程序调用所述图形驱动的写入函数,当所述测试程序通过所述图形处理接口调用所述图形驱动的写入函数,并执行到所述软中断时,根据测试程序调用位置与所述软中断位置,确定所述函数栈的层数。
在第一方面的第三种可能的实现方式中,在图形驱动接收图形处理接口发送的驱动函数调用请求之前,还包括:
所述图形驱动接收来自所述图形处理程序通过所述图形处理接口发送的应用编程接口调用请求,所述应用编程接口调用请求中包含顶点缓存长度和顶点缓存创建函数;
所述图形驱动根据所述顶点缓存的长度调用所述顶点缓存创建函数为所述图形处理程序分配所述顶点缓存。
结合本发明实施例第一方面或第一方面的第三种可能的实现方式中,在本发明实施例第四种可能的实现方式中,在读取所述顶点缓存的偏移量及长度之后,在将所述顶点缓存的偏移量及长度对应的数据区域中的数据发送给渲染服务器之前,所述方法还包括:
向所述图形处理程序发送锁定成功消息;
在所述图形处理程序在所述顶点缓存中完成数据写入操作后,接收所述图形处理程序发送的写入结束消息,所述写入操作的区域为所述顶点缓存的偏移量及长度对应的数据区域。
在第一方面的第五种可能的实现方式中,所述图形处理接口为Window Runtime接口。
在第一方面的第六种可能的实现方式中,所述图形处理接口的写入函数具体为windows中的Lock函数。
在第一方面的第七种可能的实现方式中,所述顶点缓存创建函数为windows中的create函数。
结合第一方面的第四种可能的实现方式,在第八种可能的实现方式中,所述写入结束消息用于调用所述图形驱动的unlock函数。
第二方面,本发明实施例提供了一种虚拟化环境中数据通信的装置,包括:
接收模块,用于接收图形处理接口发送的驱动函数调用请求,所述驱动函数调用请求为所述图形处理接口在接收到图形处理程序发送的系统函数调用请求后发送的,所述系统函数调用请求用于调用所述图形处理接口的写入函数,所述驱动函数调用请求用于调用所述图形驱动的写入函数,所述图形处理接口的写入函数的入口地址保存在函数栈中,所述图形驱动的写入函数的入口地址保存在所述函数栈中;
定位模块,用于根据所述图形驱动的写入函数的入口地址和所述函数栈的层数,确定所述图形处理接口的写入函数的入口地址,从所述图形处理接口的写入函数的入口地址中读取所述图形处理程序的顶点缓存的偏移量及长度;
发送模块,用于将所述顶点缓存的偏移量及长度对应的数据区域中的数据发送给渲染服务器。
在第二方面的第一种可能的实现方式中,所述定位模块具体包括:
第一定位单元,用于根据所述图形驱动的写入函数的入口地址,读取所述图形驱动所在的中央处理器上的扩展基址指针EBP寄存器中的值,所述EBP寄存器中的值为所述函数栈中上一层函数保存的栈帧地址;
第二定位单元,用于读取所述函数栈中上一层函数保存的栈帧地址中的值,所述函数栈中上一层函数保存的栈帧地址中的值为所述函数栈中更上一层函数保存的栈帧地址,按照所述函数栈的层数n重复执行本单元的读取步骤,第n-1次获得的栈帧地址即为所述图形处理接口的写入函数的入口地址。
在本发明实施例第二方面的第二种可能的实现方式中,所述装置还包括:
调试模块,用于在所述图形驱动的写入函数中加入软中断,运行测试程序调用所述图形驱动的写入函数,当所述测试程序通过所述图形处理接口调用所述图形驱动的写入函数,并执行到所述软中断时,根据测试程序调用位置与所述软中断位置,确定所述函数栈的层数。
在本发明实施例第二方面的第三种可能的实现方式中,所述接收模块,还用于接收来自所述图形处理程序通过所述图形处理接口发送的应用编程接口调用请求,所述应用编程接口调用请求中包含顶点缓存长度和顶点缓存创建函数;
所述装置还包括:顶点缓存创建模块,用于根据所述顶点缓存的长度调用所述顶点缓存创建函数为所述图形处理程序分配所述顶点缓存。
在本发明实施例第二方面的第四种可能的实现方式中,
所述发送模块,还用于向所述图形处理程序发送锁定成功消息;
所述接收模块,还用于在所述图形处理程序在所述顶点缓存中完成数据写入操作后,接收所述图形处理程序发送的写入结束消息,所述写入操作的区域为所述顶点缓存的偏移量及长度对应的数据区域。
第三方面,本发明实施例提供了一种处理器,用于执行第一方面任一一种可能的实现方式中的方法。
本发明实施例中,图形处理程序通过图形处理接口调用图形驱动的写入函数,调用过程中的函数记录在函数栈中,根据所述图形驱动的写入函数的入口地址和所述函数栈的层数,确定所述图形处理接口的写入函数的入口地址,从所述图形处理接口的写入函数的入口地址中读取所述图形处理程序的顶点缓存的偏移量及长度,从而确定图形处理程序在顶点缓存中修改的数据区域,所述修改的数据区域即为图形渲染所必需的数据,用户虚拟机仅将图形渲染必需的数据发送到渲染服务器,从而避免非必要数据的传输,降低用户虚拟机与渲染服务器之间的通信开销,加快了渲染服务器的渲染速度,从而提高GPU虚拟化技术中共享的效率和用户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种用户虚拟机调用图形处理指令的层次结构示意图;
图2是本发明实施例提供的一种虚拟化环境中数据通信的方法流程示意图;
图3是本发明实施例提供的另一种虚拟化环境中数据通信的方法流程示意图
图4是本发明实施例提供的函数栈在系统内存中的分布示意图;
图5是本发明实施例提供的一种虚拟化环境中数据通信的装置结构示意图;
图6是本发明实施例提供的一种虚拟化环境中数据通信的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明实施例提供的一种用户虚拟机调用图形处理指令的层次结构示意图,当用户的图形处理程序通过Windows Runtime接口进行图形处理API(application programming interface,应用编程接口)调用时,图形处理程序向WindowsRuntime接口发送API调用请求,Windows Runtime接口通过调用的线程向下调用图形驱动中注册的指令处理函数,具体的,该指令处理函数与图形处理程序发送到Windows Runtime接口的调用指令对应。如图1所示,在图形驱动中,逻辑上存在指令处理模块,指令A、指令B、指令C等等分别对应不同的指令处理函数,Windows Runtime接口根据图形处理程序发送的调用指令调用对应的图形驱动中的指令处理函数,例如Creat函数、unlock函数等等。
现有技术中,图形处理程序通过Windows Runtime接口向图形驱动发送图形处理指令,图形处理指令中会携带表示数据写入区域的调用信息,由于Windows Runtime接口的限制,在经过windows系统函数一系列的调用过程后,Windows Runtime接口无法将上述调用信息转发给图形驱动,从而使得图形驱动不能准确识别本次渲染相关的数据中,图形处理指令使用了哪些数据,用户更改了哪些数据。用户虚拟机只能将本次渲染相关的所有数据(即顶点缓存中的数据)全部传输至渲染服务器进行渲染,这种传输方式导致用户虚拟机与渲染服务器之间产生大量的通信开销。
本发明实施例通过使用栈回溯技术,透过Windows Runtime接口,获取图形处理程序执行API调用时使用的调用信息,根据获取的调用信息确定图形渲染所必需的数据,用户虚拟机仅将图形渲染必要的数据发送到渲染服务器,从而避免非必要数据的传输,降低用户虚拟机与渲染服务器之间的通信开销,加快了渲染服务器的渲染速度,从而提高GPU共享的效率和用户体验。
如图2所示,为本发明实施例提供的一种虚拟化环境中数据通信的方法,包括:
步骤201:图形驱动接收图形处理接口发送的驱动函数调用请求,所述驱动函数调用请求为所述图形处理接口在接收到图形处理程序发送的系统函数调用请求后发送的,所述系统函数调用请求用于调用所述图形处理接口的写入函数,所述驱动函数调用请求用于调用所述图形驱动的写入函数,所述图形处理接口的写入函数的入口地址保存在函数栈中,所述图形驱动的写入函数的入口地址保存在所述函数栈中;
步骤202:根据所述图形驱动的写入函数的入口地址和所述函数栈的层数,所述图形驱动确定所述图形处理接口的写入函数的入口地址,从所述图形处理接口的写入函数的入口地址中读取所述图形处理程序的顶点缓存的偏移量及长度;
步骤203:所述图形驱动将所述顶点缓存的偏移量及长度对应的数据区域中的数据发送给渲染服务器。
本发明实施例中,图形处理程序通过图形处理接口调用图形驱动的写入函数,调用过程中的函数记录在函数栈中,根据所述图形驱动的写入函数的入口地址和所述函数栈的层数,确定所述图形处理接口的写入函数的入口地址,从所述图形处理接口的写入函数的入口地址中读取所述图形处理程序的顶点缓存的偏移量及长度,从而确定图形处理程序在顶点缓存中修改的数据区域,所述修改的数据区域即为图形渲染所必需的数据,用户虚拟机仅将图形渲染必需的数据发送到渲染服务器,从而避免非必要数据的传输,降低用户虚拟机与渲染服务器之间的通信开销,加快了渲染服务器的渲染速度,从而提高GPU虚拟化技术中共享的效率和用户体验。
进一步的,假设确定的函数栈的层数为n,则根据所述图形驱动的写入函数的入口地址和所述函数栈的层数,所述图形驱动确定所述图形处理接口的写入函数的入口地址包括:
a.根据所述图形驱动的写入函数的入口地址,读取所述图形驱动所在的中央处理器上的扩展基址指针EBP(extended base pointer,扩展基址指针)寄存器中的值,所述EBP寄存器中的值为所述函数栈中上一层函数保存的栈帧地址;
b.读取所述函数栈中上一层函数保存的栈帧地址中的值,所述函数栈中上一层函数保存的栈帧地址中的值为所述函数栈中更上一层函数保存的栈帧地址,按照所述函数栈的层数n重复执行步骤b,第n-1次获得的栈帧地址即为所述图形处理接口的写入函数的入口地址。
上述的根据所述图形驱动的写入函数的入口地址和所述函数栈的层数,确定所述图形处理接口的写入函数的入口地址的技术,可以称为栈回溯技术,具体参见图4及图4的描述。
在本发明实施例一种具体的实现方式中,确定所述函数栈的层数可以采用下述方式:在所述图形驱动的写入函数中加入软中断;运行测试程序调用所述图形驱动的写入函数,当所述测试程序通过所述图形处理接口调用所述图形驱动的写入函数,并执行到所述软中断时,根据测试程序调用位置与所述软中断位置,确定所述函数栈的层数。
需要说明的是,所述测试程序为任一常用的图形处理程序即可。
上述函数栈层数确定过程中,本发明实施例在图形驱动的写入函数中加入软中断,测试程序通过图形处理接口调用图形驱动的写入函数,当程序运行到该写入函数的软中断处,程序暂停,此时可以运行windbg工具,即可打印并观察到从测试程序到图形处理接口,再到图形驱动的写入函数这一过程中经过的函数栈的层数。具体的,所述测试程序调用位置为测试程序向图形处理接口发送API调用请求时的函数调用位置,所述软中断位置即为图形驱动的写入函数的调用位置,二者之间(包含二者本身)的被调用的函数栈的总层数即为所述测试程序调用位置与所述软中断位置之间的函数栈的层数。一般情况下,上述函数栈涉及到的函数至少包含图形处理程序到图形处理接口时被调用的函数、windows内部调用的函数以及windows模块向图形驱动调用的函数。
本发明实施例通过通过在图形驱动的写入函数中加入软中断,根据测试程序调用位置与软中断位置,确定函数栈的层数,根据确定的函数栈的层数使用栈回溯技术,确定图形处理程序执行API调用时使用的参数,从而确定图形处理程序在顶点缓存中修改的数据区域,所述修改的数据区域即为图形渲染所必需的数据,用户虚拟机仅将图形渲染必需的数据发送到渲染服务器,从而避免非必要数据的传输,降低用户虚拟机与渲染服务器之间的通信开销,加快了渲染服务器的渲染速度,从而提高GPU共享的效率和用户体验。
如图3所示,为本发明实施例提供的另一种虚拟化环境中数据通信的方法,本实施例以典型的D3D9API调用为例进行说明。本实施例中,图形处理接口以Windows Runtime接口为例说明。
步骤301:在图形驱动的开发过程中,在所述图形驱动的写入函数中加入软中断,运行测试程序通过Windows Runtime接口调用所述图形驱动的写入函数,当所述测试程序执行到所述软中断时,运行调试工具,根据测试程序调用位置与所述软中断位置,确定函数栈的层数。
具体的,当所述测试程序执行到所述软中断处会暂停,此时运行调试工具(例如windbg等)对测试过程中调用的函数栈进行打印即可观察到当前调用的函数栈的情况,记录在软中断位置与测试程序调用位置之间的函数栈的层数,作为以后进行栈回溯的层数。
步骤302:图形处理程序向Windows Runtime接口发送API调用请求,所述API调用请求中包含顶点缓存长度和顶点缓存创建函数,用于向图形驱动申请图形处理所需的顶点缓存;
具体的,图形处理程序可以调用用户态图形驱动中VertexBuffer类中的CreateResource函数(又称为Create函数)进行顶点缓存的创建。
步骤303:Windows Runtime接口接收所述图形处理程序发送的API调用请求,调用一系列的Windows模块进行系统内部逻辑处理;
需要说明的是,本步骤中具体调用哪些Windows模块根据被调用函数确定,可以依据现有的Windows函数栈的操作方式进行,本发明实施例对此并不进行限定。具体的,当API调用请求调用的函数是CreateResource函数时,Windows模块的内部逻辑处理时按照现有的系统逻辑进行,逻辑处理涉及到的Windows模块和具体过程也按照现有处理方式进行,本发明实施例对此并不进行限定。
步骤304:被调用的Windows模块按照windows标准规范对来自图形处理程序的调用请求进行处理,通过用户态图形驱动的接口向图形驱动发送API调用请求,所述API调用请求中包含顶点缓存长度和顶点缓存创建函数。
具体的,Windows模块向图形驱动调用CreateResource()函数,通知图形驱动建立顶点缓存。
步骤305:图形驱动接收所述API调用请求,根根据所述顶点缓存长度调用所述顶点缓存创建函数在自身的上下文中为所述图形处理程序分配顶点缓存。执行为所述顶点缓存分配内存等操作;
步骤306:图形驱动通过Windows模块、Windows Runtime接口,向所述图形处理程序发送顶点缓存创建成功消息。具体的,图形驱动可以将顶点缓存的句柄携带在顶点缓存创建成功消息中返回给所述图形软件。
需要说明的是,步骤302-306介绍了图形处理程序通过Windows Runtime接口向图形驱动申请创建顶点缓存的过程。现有技术中存在的其他顶点缓存创建的方式也可以替换到本发明实施例中。
步骤307:图形处理程序接收到所述顶点缓存创建成功消息后,向WindowsRuntime接口发送系统函数调用请求,所述系统函数调用请求用于调用所述图形处理接口的写入函数,所述系统函数调用请求携带顶点缓存的偏移量和长度等信息,所述偏移量为待写入数据的起始地址,所述长度为从所述起始地址开始写入的数据长度。所述图形处理接口的写入函数的入口地址保存在函数栈中
所述图形处理接口的写入函数为VertexBuffer::Lock()函数。
步骤308:Windows Runtime接口接收所述系统函数调用请求,调用windows模块对所述系统函数调用请求进行Windows内部逻辑处理。
需要说明的是,Windows Runtime接口接收到来自图形处理程序的系统函数调用请求后,函数栈从此处开始进入系统内部逻辑,Windows Runtime接口将会调用一系列Windows模块,这些模块所实现的具体流程和功能依据现有技术中的标准规范即可,本发明对此并不进行限定。
步骤309:Windows Runtime接口经过所述Windows模块向图形驱动发送驱动函数调用请求,所述驱动函数调用请求用于调用所述图形驱动的写入函数。所述图形驱动的写入函数的入口地址保存在所述函数栈中
所述驱动函数调用请求具体可以通过调用所述图形驱动的写入函数来实现。所述图形驱动的写入函数具体为图形驱动的lock函数。
需要说明的是,在本步骤的驱动函数调用请求中,由于经过前一步骤的windows模块的内部处理逻辑,导致从Windows模块发送的驱动函数调用请求中无法携带顶点缓存的偏移量和长度,从而使得图形驱动此时无法获得图形处理程序修改顶点缓存数据的具体位置和长度。在现有技术中,如果缺少图形应用传入的顶点缓存的偏移量和长度,则图形驱动会模拟物理显卡驱动的工作方式,默认将整个顶点缓存的数据区域经由指令通信模块发送至渲染服务器,造成大量冗余数据的传输。
需要说明的是,图形驱动为所述顶点缓存分配的内存区域一般较大,比如1M,图形处理程序在单次数据写入的过程中,对分配的内存进行写入的数据大小一般比较小,举例来说,假设图形处理程序申请的顶点缓存总大小为1M。图形处理程序调用图形处理接口的写入函数执行绘图时,假设图形处理接口的写入函数中的调用信息为(100,16),即偏移量为100,长度为16,则调用信息(100,16)表示将在指定的顶点缓存中更新第100字节偏移处的16字节长度的数据。在传统方法中,为了执行本次渲染,用户虚拟机需要将顶点缓存的全部数据区域的数据(1M)发送到渲染服务器,但由于实际发生改变的数据仅为数据区域100字节偏移处的16字节长度的数据,按照传统方法将导致大量的通信开销。
步骤310:图形驱动接收所述Windows Runtime接口通过windows模块发送的驱动函数调用请求,确定所述驱动函数调用请求为所述图形处理程序需要对已创建的顶点缓存进行的数据写入。图形驱动根据步骤301中确定的所述函数栈的层数,确定所述图形处理接口的写入函数的入口地址,从所述图形处理接口的写入函数的入口地址中读取所述图形处理程序的顶点缓存的偏移量及长度。
具体的,根据所述图形驱动的写入函数的入口地址和所述函数栈的层数,所述图形驱动确定所述图形处理接口的写入函数的入口地址包括两个过程:
a.根据所述图形驱动的写入函数的入口地址,读取所述图形驱动所在的中央处理器上的扩展基址指针EBP寄存器中的值,所述EBP寄存器中的值为所述函数栈中上一层函数保存的栈帧地址;
b.读取所述函数栈中上一层函数保存的栈帧地址中的值,所述函数栈中上一层函数保存的栈帧地址中的值为所述函数栈中更上一层函数保存的栈帧地址,按照所述函数栈的层数n重复执行步骤b,第n-1次获得的栈帧地址即为所述图形处理接口的写入函数的入口地址。
在获取所述图形处理接口的写入函数的入口地址后,图形驱动从所述图形处理接口的写入函数的入口地址中读取顶点缓存的偏移量和长度。所述顶点缓存的偏移量和长度对应的数据区域即为图形处理程序申请进行数据写入的区域。
具体的,通过这种方式即可获得图形处理程序在调用Windows Runtime接口的VertexBuffer::Lock()函数时所传入的原始参数。
如图4所示,为本发明实施例提供的函数栈在系统内存中的分布结构示意图。以图4为例,本发明实施例对函数栈的层数以及具体的栈回溯的过程进行说明。
对函数栈的层数说明如下:函数栈的第一层为图形处理程序向Windows Runtime接口调用的VertexBuffer::lock函数;最后一层为图形驱动被调用的Lock函数;中间层为windows系统函数,中间层的windows系统函数的层数由程序执行过程中被调用的windows系统函数的数量决定。
对具体的栈回溯的过程说明如下:
在本例中,图形处理接口的写入函数为VertexBuffer::lock函数;Windows模块调用的系统函数可根据Windows现有的调用逻辑确定,本发明对此不进行限定。
在过程a中,图形驱动回溯当前EBP,从当前EBP的地址读取的值即为上一层Windows系统函数保存的栈帧地址;
在过程b中,图形驱动读取所述函数栈中上一层Windows系统函数保存的栈帧地址中的值。需要说明的是,Windows系统函数可以为多个,只需按层数进行回溯至最上一层Windows系统函数即可。读取的最上层Windows系统函数保存的栈帧地址中的值即为图形处理接口的写入函数的入口地址。从所述图形处理接口的写入函数的入口地址中读取顶点缓存的偏移量和长度,即获得参数(100,16),在获得了(100,16)这个参数后,即可确定本次调用只更新了顶点缓存数据区域偏移100字节处,长度为16字节的一段信息,仅将这16字节发送至指令通信模块。具体的,如图4所示,当函数栈为3层时,过程b需要执行的次数为2次。
进一步需要说明的是,EBP寄存器是X86CPU上的通用寄存器之一,在高级语言如C和C++运行时,每进行一次函数调用,EBP寄存器都将会自动存储最新函数保存的栈帧地址。故在EBP寄存器所指向的地址上方是本层函数的返回地址(即上一层函数保存的栈帧地址),下方是本层函数的局部变量等数据。
步骤311:图形驱动向图形处理程序发送锁定成功消息;
步骤312:图形处理程序在所述顶点缓存的偏移量和长度对应的数据区域进行写入;
步骤313:图形处理程序在写入完成后,向图形驱动发送写入结束消息;
具体的,图形处理程序可以通过Windows Runtime接口调用Unlock函数的方式通知图形驱动写入结束。
步骤314:图形驱动将所述顶点缓存的偏移量及长度对应的数据区域中的数据发送给指令通信模块,所述指令通信模块将获得的数据打包发送给渲染服务器进行渲染处理。
本发明实施例通过通过在图形处理接口的写入函数中加入软中断,根据测试程序调用位置与软中断位置,确定函数栈的层数,根据确定的函数栈的层数使用栈回溯技术,确定图形处理程序执行API调用时使用的参数,从而确定图形处理程序在顶点缓存中修改的数据区域,所述修改的数据区域即为图形渲染所必需的数据,用户虚拟机仅将图形渲染必需的数据发送到渲染服务器,从而避免非必要数据的传输,降低用户虚拟机与渲染服务器之间的通信开销,加快了渲染服务器的渲染速度,从而提高GPU共享的效率和用户体验。
与前述方法实施例相对应,如图5所示,为本发明实施例提供的一种虚拟化环境中数据通信的装置,包括:
接收模块503,用于接收图形处理接口发送的驱动函数调用请求,所述驱动函数调用请求为所述图形处理接口在接收到图形处理程序发送的系统函数调用请求后发送的,所述系统函数调用请求用于调用所述图形处理接口的写入函数,所述驱动函数调用请求用于调用所述图形驱动的写入函数,所述图形处理接口的写入函数的入口地址保存在函数栈中,所述图形驱动的写入函数的入口地址保存在所述函数栈中;
定位模块502,用于根据所述图形驱动的写入函数的入口地址和所述函数栈的层数,确定所述图形处理接口的写入函数的入口地址,从所述图形处理接口的写入函数的入口地址中读取所述图形处理程序的顶点缓存的偏移量及长度;
发送模块501,用于将所述顶点缓存的偏移量及长度对应的数据区域中的数据发送给渲染服务器。
本发明实施例中,图形处理程序通过图形处理接口调用图形驱动的写入函数,调用过程中的函数记录在函数栈中,根据所述图形驱动的写入函数的入口地址和所述函数栈的层数,确定所述图形处理接口的写入函数的入口地址,从所述图形处理接口的写入函数的入口地址中读取所述图形处理程序的顶点缓存的偏移量及长度,从而确定图形处理程序在顶点缓存中修改的数据区域,所述修改的数据区域即为图形渲染所必需的数据,用户虚拟机仅将图形渲染必需的数据发送到渲染服务器,从而避免非必要数据的传输,降低用户虚拟机与渲染服务器之间的通信开销,加快了渲染服务器的渲染速度,从而提高GPU虚拟化技术中共享的效率和用户体验。
进一步的,所述定位模块502具体包括:
第一定位单元5021,用于根据所述图形驱动的写入函数的入口地址,读取所述图形驱动所在的中央处理器上的扩展基址指针EBP寄存器中的值,所述EBP寄存器中的值为所述函数栈中上一层函数保存的栈帧地址;
第二定位单元5022,用于读取所述函数栈中上一层函数保存的栈帧地址中的值,所述函数栈中上一层函数保存的栈帧地址中的值为所述函数栈中更上一层函数保存的栈帧地址,按照所述函数栈的层数n重复执行本单元的读取步骤,第n-1次获得的栈帧地址即为所述图形处理接口的写入函数的入口地址。
如图5所示的装置,还包括:调试模块504,用于在所述图形驱动的写入函数中加入软中断,运行测试程序调用所述图形驱动的写入函数,当所述测试程序通过所述图形处理接口调用所述图形驱动的写入函数,并执行到所述软中断时,根据测试程序调用位置与所述软中断位置,确定所述函数栈的层数。
进一步的,所述接收模块503,还用于接收来自所述图形处理程序通过所述图形处理接口发送的应用编程接口调用请求,所述应用编程接口调用请求中包含顶点缓存长度和顶点缓存创建函数;
所述装置还包括:顶点缓存创建模块505,用于根据所述顶点缓存的长度调用所述顶点缓存创建函数为所述图形处理程序分配所述顶点缓存。
所述发送模块501,还用于向所述图形处理程序发送锁定成功消息;
所述接收模块503,还用于在所述图形处理程序在所述顶点缓存中完成数据写入操作后,接收所述图形处理程序发送的写入结束消息,所述写入操作的区域为所述顶点缓存的偏移量及长度对应的数据区域。
进一步地,如图6所示,本发明实施例提供了一种虚拟化环境中数据通信的硬件结构示意图,该硬件具体可以为服务器,包括至少一个处理器(例如CPU),至少一个网络接口或者其他通信接口,存储器,和至少一个通信总线,用于实现这些装置之间的连接通信。处理器用于执行存储器中存储的可执行模块,例如计算机程序。存储器可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个网络接口(可以是有线或者无线)实现该服务器与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
在一些实施方式中,存储器中存储了程序指令,程序指令可以被处理器执行,其中,程序指令可包括本发明上述实施例中指出的各个单元,各单元具体的实现方式可参见本发明上述实施例中的相应内容,这里不再赘述。
本发明实施例提供了一种虚拟化环境中数据通信的方法、装置及处理器,通过在写入函数中加入软中断,根据测试程序调用位置与软中断位置,确定函数栈的层数,根据确定的函数栈的层数使用栈回溯技术,确定图形处理程序执行API调用时使用的参数,从而确定图形处理程序在顶点缓存中修改的数据区域,所述修改的数据区域即为图形渲染所必需的数据,用户虚拟机仅将图形渲染必需的数据发送到渲染服务器,从而避免非必要数据的传输,降低用户虚拟机与渲染服务器之间的通信开销,从而提高GPU共享的效率和用户体验。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,资源管理服务器,或者诸如媒体网关等网络通信设备,等等)执行本发明各个实施例或者实施例的某些部分所述的方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (15)

1.一种虚拟化环境中数据通信的方法,其特征在于,包括:
图形驱动接收图形处理接口发送的驱动函数调用请求,所述驱动函数调用请求为所述图形处理接口在接收到图形处理程序发送的系统函数调用请求后发送的,所述系统函数调用请求用于调用所述图形处理接口的写入函数,所述驱动函数调用请求用于调用所述图形驱动的写入函数,所述图形处理接口的写入函数的入口地址保存在函数栈中,所述图形驱动的写入函数的入口地址保存在所述函数栈中;
根据所述图形驱动的写入函数的入口地址和所述函数栈的层数,所述图形驱动确定所述图形处理接口的写入函数的入口地址,从所述图形处理接口的写入函数的入口地址中读取所述图形处理程序的顶点缓存的偏移量及长度;
所述图形驱动将所述顶点缓存的偏移量及长度对应的数据区域中的数据发送给渲染服务器。
2.如权利要求1所述的方法,其特征在于,所述函数栈中每一层函数保存的栈帧地址中的值为所述函数栈中更上一层函数保存的栈帧地址,根据所述图形驱动的写入函数的入口地址和所述函数栈的层数,所述图形驱动确定所述图形处理接口的写入函数的入口地址包括:
a.根据所述图形驱动的写入函数的入口地址,读取所述图形驱动所在的中央处理器上的扩展基址指针EBP寄存器中的值,所述EBP寄存器中的值为所述函数栈中当前调用函数的上一层函数保存的栈帧地址;
确定所述函数栈的层数n,重复执行n-1次步骤b,第n-1次获得的栈帧地址即为所述图形处理接口的写入函数的入口地址;
b.调用所述函数栈中当前调用函数的上一层函数,读取所述函数栈中当前调用函数的上一层函数保存的栈帧地址中的值。
3.如权利要求2所述的方法,其特征在于,所述确定函数栈的层数n包括:
在所述图形驱动的写入函数中加入软中断;
运行测试程序调用所述图形驱动的写入函数,当所述测试程序通过所述图形处理接口调用所述图形驱动的写入函数,并执行到所述软中断时,根据测试程序调用位置与所述软中断位置,确定所述函数栈的层数。
4.如权利要求1所述的方法,其特征在于,在图形驱动接收图形处理接口发送的驱动函数调用请求之前,还包括:
所述图形驱动接收来自所述图形处理程序通过所述图形处理接口发送的应用编程接口调用请求,所述应用编程接口调用请求中包含顶点缓存长度和顶点缓存创建函数;
所述图形驱动根据所述顶点缓存的长度调用所述顶点缓存创建函数为所述图形处理程序分配所述顶点缓存。
5.如权利要求1或4所述的方法,其特征在于,在读取所述顶点缓存的偏移量及长度之后,在将所述顶点缓存的偏移量及长度对应的数据区域中的数据发送给渲染服务器之前,所述方法还包括:
向所述图形处理程序发送锁定成功消息;
在所述图形处理程序在所述顶点缓存中完成数据写入操作后,接收所述图形处理程序发送的写入结束消息,所述写入操作的区域为所述顶点缓存的偏移量及长度对应的数据区域。
6.如权利要求1所述的方法,其特征在于,所述图形处理接口为Window Runtime接口。
7.如权利要求6所述的方法,其特征在于,所述图形处理接口的写入函数具体为windows中的Lock函数。
8.如权利要求4所述的方法,其特征在于,所述顶点缓存创建函数为windows中的create函数。
9.如权利要求5所述的方法,其特征在于,所述写入结束消息用于调用所述图形驱动的unlock函数。
10.一种虚拟化环境中数据通信的装置,其特征在于,包括:
接收模块,用于接收图形处理接口发送的驱动函数调用请求,所述驱动函数调用请求为所述图形处理接口在接收到图形处理程序发送的系统函数调用请求后发送的,所述系统函数调用请求用于调用所述图形处理接口的写入函数,所述驱动函数调用请求用于调用图形驱动的写入函数,所述图形处理接口的写入函数的入口地址保存在函数栈中,所述图形驱动的写入函数的入口地址保存在所述函数栈中;
定位模块,用于根据所述图形驱动的写入函数的入口地址和所述函数栈的层数,确定所述图形处理接口的写入函数的入口地址,从所述图形处理接口的写入函数的入口地址中读取所述图形处理程序的顶点缓存的偏移量及长度;
发送模块,用于将所述顶点缓存的偏移量及长度对应的数据区域中的数据发送给渲染服务器。
11.如权利要求10所述的装置,其特征在于,所述函数栈中每一层函数保存的栈帧地址中的值为所述函数栈中更上一层函数保存的栈帧地址,所述定位模块具体包括:
第一定位单元,用于根据所述图形驱动的写入函数的入口地址,读取所述图形驱动所在的中央处理器上的扩展基址指针EBP寄存器中的值,所述EBP寄存器中的值为所述函数栈中当前调用函数的上一层函数保存的栈帧地址;
第二定位单元,用于调用所述函数栈中当前调用函数的上一层函数,读取所述函数栈中当前调用函数的上一层函数保存的栈帧地址中的值,确定所述函数栈的层数n,重复执行n-1次本单元的执行的步骤,第n-1次获得的栈帧地址即为所述图形处理接口的写入函数的入口地址。
12.如权利要求10或11所述的装置,其特征在于,还包括:
调试模块,用于在所述图形驱动的写入函数中加入软中断,运行测试程序调用所述图形驱动的写入函数,当所述测试程序通过所述图形处理接口调用所述图形驱动的写入函数,并执行到所述软中断时,根据测试程序调用位置与所述软中断位置,确定所述函数栈的层数。
13.如权利要求10所述的装置,其特征在于,
所述接收模块,还用于接收来自所述图形处理程序通过所述图形处理接口发送的应用编程接口调用请求,所述应用编程接口调用请求中包含顶点缓存长度和顶点缓存创建函数;
所述装置还包括:顶点缓存创建模块,用于根据所述顶点缓存的长度调用所述顶点缓存创建函数为所述图形处理程序分配所述顶点缓存。
14.如权利要求10所述的装置,其特征在于,所述发送模块,还用于向所述图形处理程序发送锁定成功消息;
所述接收模块,还用于在所述图形处理程序在所述顶点缓存中完成数据写入操作后,接收所述图形处理程序发送的写入结束消息,所述写入操作的区域为所述顶点缓存的偏移量及长度对应的数据区域。
15.一种处理器,其特征在于,用于执行存储器中的计算机程序,以执行如权利要求1-9任一所述的方法。
CN201480001007.3A 2014-04-08 2014-04-08 一种虚拟化环境中的数据通信的方法、装置及处理器 Active CN105164636B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810061103.7A CN108345492A (zh) 2014-04-08 2014-04-08 一种虚拟化环境中的数据通信的方法、装置及处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/074918 WO2015154226A1 (zh) 2014-04-08 2014-04-08 一种虚拟化环境中的数据通信的方法、装置及处理器

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201810061103.7A Division CN108345492A (zh) 2014-04-08 2014-04-08 一种虚拟化环境中的数据通信的方法、装置及处理器

Publications (2)

Publication Number Publication Date
CN105164636A CN105164636A (zh) 2015-12-16
CN105164636B true CN105164636B (zh) 2018-02-13

Family

ID=54287086

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201810061103.7A Withdrawn CN108345492A (zh) 2014-04-08 2014-04-08 一种虚拟化环境中的数据通信的方法、装置及处理器
CN201480001007.3A Active CN105164636B (zh) 2014-04-08 2014-04-08 一种虚拟化环境中的数据通信的方法、装置及处理器

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201810061103.7A Withdrawn CN108345492A (zh) 2014-04-08 2014-04-08 一种虚拟化环境中的数据通信的方法、装置及处理器

Country Status (4)

Country Link
US (1) US10733687B2 (zh)
EP (1) EP3113015B1 (zh)
CN (2) CN108345492A (zh)
WO (1) WO2015154226A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109409085A (zh) * 2018-09-21 2019-03-01 中国科学院信息工程研究所 处理堆栈中返回地址被篡改的方法及装置
CN110580674B (zh) * 2019-07-24 2024-01-16 西安万像电子科技有限公司 信息处理方法、装置及系统
CN111866065A (zh) * 2020-06-03 2020-10-30 西安万像电子科技有限公司 渲染图像回传的方法及装置
CN114461516B (zh) * 2021-12-23 2024-03-29 连邦网络科技服务南通有限公司 一种可数据自动删除的软件图形接口测试方法及服务器

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735756B1 (en) * 2002-02-22 2004-05-11 Xilinx, Inc. Method and architecture for dynamic device drivers
CN1980237A (zh) * 2005-12-09 2007-06-13 北京瑞星国际软件有限公司 识别访问网络的模块的方法及装置
CN101211309A (zh) * 2006-12-29 2008-07-02 中兴通讯股份有限公司 嵌入式系统中进程异常跟踪定位的方法
CN102890643A (zh) * 2012-07-26 2013-01-23 上海交通大学 基于应用效果即时反馈的显卡虚拟化下的资源调度系统
CN103294439A (zh) * 2013-06-28 2013-09-11 华为技术有限公司 一种图像更新方法、系统及装置
CN103559078A (zh) * 2013-11-08 2014-02-05 华为技术有限公司 Gpu虚拟化实现方法以及顶点数据缓存方法和相关装置
CN103631634A (zh) * 2012-08-24 2014-03-12 中国电信股份有限公司 实现图形处理器虚拟化的方法与装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6809735B1 (en) * 2002-01-08 2004-10-26 Apple Computer, Inc. Virtualization of graphics resources
US8289339B2 (en) * 2007-08-01 2012-10-16 Northrop Grumman Systems Corporation Method, apparatus and computer program product for enhanced radar video processing
US8463980B2 (en) 2010-09-30 2013-06-11 Microsoft Corporation Shared memory between child and parent partitions
KR20120062170A (ko) * 2010-12-06 2012-06-14 삼성전자주식회사 가상 모니터 제어장치 및 그 제어방법
US9542715B2 (en) * 2012-05-02 2017-01-10 Nvidia Corporation Memory space mapping techniques for server based graphics processing
US9465717B2 (en) * 2013-03-14 2016-10-11 Riverbed Technology, Inc. Native code profiler framework
US9766892B2 (en) * 2014-12-23 2017-09-19 Intel Corporation Method and apparatus for efficient execution of nested branches on a graphics processor unit

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735756B1 (en) * 2002-02-22 2004-05-11 Xilinx, Inc. Method and architecture for dynamic device drivers
CN1980237A (zh) * 2005-12-09 2007-06-13 北京瑞星国际软件有限公司 识别访问网络的模块的方法及装置
CN101211309A (zh) * 2006-12-29 2008-07-02 中兴通讯股份有限公司 嵌入式系统中进程异常跟踪定位的方法
CN102890643A (zh) * 2012-07-26 2013-01-23 上海交通大学 基于应用效果即时反馈的显卡虚拟化下的资源调度系统
CN103631634A (zh) * 2012-08-24 2014-03-12 中国电信股份有限公司 实现图形处理器虚拟化的方法与装置
CN103294439A (zh) * 2013-06-28 2013-09-11 华为技术有限公司 一种图像更新方法、系统及装置
CN103559078A (zh) * 2013-11-08 2014-02-05 华为技术有限公司 Gpu虚拟化实现方法以及顶点数据缓存方法和相关装置

Also Published As

Publication number Publication date
EP3113015B1 (en) 2020-08-26
CN108345492A (zh) 2018-07-31
EP3113015A1 (en) 2017-01-04
CN105164636A (zh) 2015-12-16
US20170018052A1 (en) 2017-01-19
EP3113015A4 (en) 2017-05-17
US10733687B2 (en) 2020-08-04
WO2015154226A1 (zh) 2015-10-15

Similar Documents

Publication Publication Date Title
WO2021051914A1 (zh) 基于gpu资源的数据处理方法、电子设备及系统
US8102391B2 (en) Hybrid rendering of image data utilizing streaming geometry frontend interconnected to physical rendering backend through dynamic accelerated data structure generator
EP1921584B1 (en) Graphics processing apparatus, graphics library module, and graphics processing method
CN104965757B (zh) 虚拟机热迁移的方法、虚拟机迁移管理装置及系统
US8773449B2 (en) Rendering of stereoscopic images with multithreaded rendering software pipeline
CN105164636B (zh) 一种虚拟化环境中的数据通信的方法、装置及处理器
CN107251004A (zh) 通过使用欺骗时钟及细粒度频率控制实现的向后兼容性
US20080192063A1 (en) Managing Multiple Contexts in a Decentralized Graphics Processing Unit
US9563466B2 (en) Method and apparatus for supporting programmable software context state execution during hardware context restore flow
CN102648450A (zh) 用于并行命令列表生成的硬件
US8564600B2 (en) Streaming physics collision detection in multithreaded rendering software pipeline
US20230360321A1 (en) Shader binding management in ray tracing
CN109885464B (zh) 一种基于开放图形库的数据处理方法及系统
CN104820582A (zh) 一种基于Navigator的多核嵌入式DSP并行编程模型实现方法
CN105677491B (zh) 一种数据传输方法及装置
CN107783886A (zh) 一种获取运行帧率的方法及终端
JPH10111858A (ja) グラフィクス・パイプラインを並列化する方法及び装置
US11244419B2 (en) Method and apparatus for hardware accelerated graphics rendering in bridge APIs
CN107608806A (zh) 一种虚拟机间快速访问传输数据的系统及方法
US10733689B2 (en) Data processing
CN103914333B (zh) 基于片上网络互连的多核存储系统仿真器
CN106598696A (zh) 一种虚拟机之间数据交互的方法及装置
Faryabi Data-oriented Design approach for processor intensive games
CN114924837A (zh) 数据处理方法、电子设备和可读存储介质
CN109983435B (zh) 图形处理方法及相关装置和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220223

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee after: Huawei Cloud Computing Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right