云游戏中gpu资源共享的方法

文档序号:9274602阅读:1434来源:国知局
云游戏中gpu资源共享的方法
【技术领域】
[0001]本发明涉及GPU资源共享技术,具体地,涉及云游戏中GPU资源的系统设计共享方案。
【背景技术】
[0002]近年来网络带宽的提升使云游戏成为一种可行的游戏服务方案。在云游戏运行模式下,用户的客户端只传输用户操作命令以及接收游戏画面,所有的游戏都在服务器端运行及渲染,被渲染后的游戏画面经过网络传输到用户设备上解码显示。由于游戏不在用户本机运行,用户在没有高端处理器和显卡的条件下,依然可以流畅的玩对配置要求高的游戏。由于云游戏的服务器需要同时渲染多个玩家运行的游戏,这对服务器GPU提出了很大要求。
[0003]一个典型的图形处理器是由多个称为流多处理器(SM)的计算引擎组成。如nVidia GPU使用了 CUDA编程模型,对硬件进行抽象,包括三个基本概念:线程组的层次,共享内存,同步。提供了细粒度数据并行和线程并行,循环的粗粒度数据并行和任务并行。CUDA有可扩展的多线程流处理器(SMs)阵列构成。当执行CUDA的kernel时,grid的块就被分布到多处理器上。一个多处理器由8个标量处理器(SP)。每个SM有两个warp scheduler和 dispatch unit。
[0004]GPU供应商NVIDIA已经开始提供云游戏数据中心,针对于每个网络节点高性能地并发执行游戏计算。目前其第一代产品中平均一块显卡支持两个用户同时游戏,一个网络机柜支持480个用户,每个服务器功耗800到900瓦。显然,这种低利用率的硬件以及高耗电的云游戏服务在经济方面的竞争力非常差。
[0005]造成硬件低效一个主要原因是,单用户/单设备的模型早于云游戏的出现,系统很少设计为针对同时执行多个游戏的情况。从硬件结构到系统驱动,现有的云游戏服务端资源管理方案多数是对于单应用的GPU资源优化,而很少考虑多个用户的游戏在服务器上有大量重复数据。例如云游戏服务商OnLive在服务端给每个游戏实例分配一个GPU,如果多个用户在同一服务端运行相同的游戏,游戏中相同的纹理数据就会被处理多次,这些冗余的数据处理降低了服务器的性能且增加了功耗。

【发明内容】

[0006]为了减少云游戏服务器中冗余数据处理造成的效率损耗,本发明目的是,提出了一种在云游戏服务端共享GPU资源方法,即系统设计方案。
[0007]本发明的技术解决方案如下:一种云游戏中GPU资源共享的方法,其特征是,在云游戏服务端系统结构中,修改GPU驱动对纹理载入流程,以及修改GPU纹理缓存替换策略以达到资源共享以及优化性能;云游戏服务器GPU在渲染用户游戏时,若遇到载入纹理的请求,将使用纹理追踪模块判断纹理是否被载入到显存中,当发现纹理已经在显存中,则返回;在纹理追踪模块中记录纹理所在显存的位置,否则将其载入至显存并在纹理追踪模块中记录信息;针对纹理共享策略而采用优化GPU纹理缓存替换策略,即GPU纹理缓存替换策略MFU (最高频使用策略)。
[0008]对GPU驱动纹理载入流程的算法修改,包括GPU资源追踪模块以及GPU纹理载入算法;在GPU将内存中的纹理载入到显存中时,通过哈希算法得到纹理的标识,在资源追踪模块中通过标识判断此纹理是否已经被加载的显存中;如果已被加载,将所在位置的显存描述符传递给GPU,以便GPU在使用此纹理渲染时在显存中正确得到数据;相应地,GPU资源追踪模块记录所有已被载入到显存中的纹理的活跃程度,当显存空间不够用时,将显存中最不活跃的纹理替换出以释放显存空间。
[0009]当纹理缓存需要替换出时,随机tag为0000的行作为换出,若无tag为0000的缓存行,则选取tag视为数字最小的行换出。
[0010]针对纹理共享策略,设计实现新的GPU纹理缓存替换策略MFU。MFU策略来源于云游戏设备及网络中心里经常使用的内容流行理论,其思想是记录纹理缓存中每一个纹理最近30帧被使用的频繁程度,当新的纹理需要被替换如缓存时,将使用频繁度最低的纹理替换出。GPU纹理缓存替换策略MFU,即GPU纹理缓存时使用MFU替换算法:纹理缓存每一行添加的四个比特数据作为其tag,当为1111时表示此行在最近三十帧的活动情况最大,当为0000时表示此行在最近三十帧的活动情况最小即使用频繁度最低。
[0011]对于纹理缓存的每一行,增加四个比特记录这一行在最近三十帧的活动情况;纹理追踪模块对每一个纹理生成唯一标识,且保存其在显存中的位置以及引用计数;当纹理被游戏使用渲染时将其引用计数器加一,在使用结束时将引用计数器减一。
[0012]使用Murmur哈希算法算法给每个纹理生成唯一标识;使用对纹理生成的唯一标识符判断两个纹理是否相同,以及找出给定纹理在纹理追踪模块中记录的信息。
[0013]当GPU纹理缓存检测到连续15次缓存不命中时,认为GPU已经开始渲染不同的游戏,将纹理缓存中所有行全部换出。
[0014]本发明主要涉及两个主要的发明点,GPU纹理共享策略,GPU纹理缓存替换策略。
[0015]GPU纹理共享策略是通过对GPU驱动的修改,解决了多个用户在服务端运行相同游戏时,相同的游戏纹理数据在服务端被重复加载多次造成的冗余的DMA传输以及不必要的显存浪费等问题。纹理缓存替换策略是针对纹理共享策略而优化的GPU纹理缓存替换策略。通过对GPU纹理缓存替换策略的修改,提高了缓存的命中率以及降低了 GPU读取纹理的周期数。
[0016]本发明的有益效果是,通过共享GPU资源,增加了云游戏服务器中GPU纹理缓存的命中率,降低了服务器中DMA的传输以及显存的使用,提升了游戏性能,减少了 GPU服务器的耗电量。
【附图说明】
[0017]图1是云游戏系统的渲染流程框架。
[0018]图2是修改后的GPU纹理载入流程。
【具体实施方式】
[0019]下面对本发明的实施例作详细说明,本实施例在本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,本发明的适用平台不限于下述的实施例。
[0020]图1是现有技术中云游戏系统的架构示意图。在一个多用户的云游戏服务器中,每个用户(图上部的GUEST)应用调用一个标准的渲染API接口,用户的GPU驱动程序在用户主存中准备相应的对象并打包GPU命令。这些命令被传输到到虚拟的I/O队列,然后在后台被传输到主机(图下部的HO
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1