CN104991827A - 云游戏中gpu资源共享的方法 - Google Patents
云游戏中gpu资源共享的方法 Download PDFInfo
- Publication number
- CN104991827A CN104991827A CN201510362332.9A CN201510362332A CN104991827A CN 104991827 A CN104991827 A CN 104991827A CN 201510362332 A CN201510362332 A CN 201510362332A CN 104991827 A CN104991827 A CN 104991827A
- Authority
- CN
- China
- Prior art keywords
- texture
- gpu
- video memory
- loaded
- 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.)
- Pending
Links
Landscapes
- Image Generation (AREA)
Abstract
一种云游戏中GPU资源共享的方法,在云游戏服务端系统结构中,修改GPU驱动对纹理载入流程,以及修改GPU纹理缓存替换策略以达到资源共享以及优化性能;云游戏服务器GPU在渲染用户游戏时,若遇到载入纹理的请求,将使用纹理追踪模块判断纹理是否被载入到显存中,当发现纹理已经在显存中,则返回;在纹理追踪模块中记录纹理所在显存的位置,否则将其载入至显存并在纹理追踪模块中记录信息;针对纹理共享策略而采用优化GPU纹理缓存替换策略,即GPU纹理缓存替换策略MFU最高频使用策略。
Description
技术领域
本发明涉及GPU资源共享技术,具体地,涉及云游戏中GPU资源的系统设计共享方案。
背景技术
近年来网络带宽的提升使云游戏成为一种可行的游戏服务方案。在云游戏运行模式下,用户的客户端只传输用户操作命令以及接收游戏画面,所有的游戏都在服务器端运行及渲染,被渲染后的游戏画面经过网络传输到用户设备上解码显示。由于游戏不在用户本机运行,用户在没有高端处理器和显卡的条件下,依然可以流畅的玩对配置要求高的游戏。由于云游戏的服务器需要同时渲染多个玩家运行的游戏,这对服务器GPU提出了很大要求。
一个典型的图形处理器是由多个称为流多处理器(SM)的计算引擎组成。如nVidiaGPU使用了CUDA编程模型,对硬件进行抽象,包括三个基本概念:线程组的层次,共享内存,同步。提供了细粒度数据并行和线程并行,循环的粗粒度数据并行和任务并行。CUDA有可扩展的多线程流处理器(SMs)阵列构成。当执行CUDA的kernel时,grid的块就被分布到多处理器上。一个多处理器由8个标量处理器(SP)。每个SM有两个warpscheduler和dispatch unit。
GPU供应商NVIDIA已经开始提供云游戏数据中心,针对于每个网络节点高性能地并发执行游戏计算。目前其第一代产品中平均一块显卡支持两个用户同时游戏,一个网络机柜支持480个用户,每个服务器功耗800到900瓦。显然,这种低利用率的硬件以及高耗电的云游戏服务在经济方面的竞争力非常差。
造成硬件低效一个主要原因是,单用户/单设备的模型早于云游戏的出现,系统很少设计为针对同时执行多个游戏的情况。从硬件结构到系统驱动,现有的云游戏服务端资源管理方案多数是对于单应用的GPU资源优化,而很少考虑多个用户的游戏在服务器上有大量重复数据。例如云游戏服务商OnLive在服务端给每个游戏实例分配一个GPU,如果多个用户在同一服务端运行相同的游戏,游戏中相同的纹理数据就会被处理多次,这些冗余的数据处理降低了服务器的性能且增加了功耗。
发明内容
为了减少云游戏服务器中冗余数据处理造成的效率损耗,本发明目的是,提出了一种在云游戏服务端共享GPU资源方法,即系统设计方案。
本发明的技术解决方案如下:一种云游戏中GPU资源共享的方法,其特征是,在云游戏服务端系统结构中,修改GPU驱动对纹理载入流程,以及修改GPU纹理缓存替换策略以达到资源共享以及优化性能;云游戏服务器GPU在渲染用户游戏时,若遇到载入纹理的请求,将使用纹理追踪模块判断纹理是否被载入到显存中,当发现纹理已经在显存中,则返回;在纹理追踪模块中记录纹理所在显存的位置,否则将其载入至显存并在纹理追踪模块中记录信息;针对纹理共享策略而采用优化GPU纹理缓存替换策略,即GPU纹理缓存替换策略MFU(最高频使用策略)。
对GPU驱动纹理载入流程的算法修改,包括GPU资源追踪模块以及GPU纹理载入算法;在GPU将内存中的纹理载入到显存中时,通过哈希算法得到纹理的标识,在资源追踪模块中通过标识判断此纹理是否已经被加载的显存中;如果已被加载,将所在位置的显存描述符传递给GPU,以便GPU在使用此纹理渲染时在显存中正确得到数据;相应地,GPU资源追踪模块记录所有已被载入到显存中的纹理的活跃程度,当显存空间不够用时,将显存中最不活跃的纹理替换出以释放显存空间。
当纹理缓存需要替换出时,随机tag为0000的行作为换出,若无tag为0000的缓存行,则选取tag视为数字最小的行换出。
针对纹理共享策略,设计实现新的GPU纹理缓存替换策略MFU。MFU策略来源于云游戏设备及网络中心里经常使用的内容流行理论,其思想是记录纹理缓存中每一个纹理最近30帧被使用的频繁程度,当新的纹理需要被替换如缓存时,将使用频繁度最低的纹理替换出。GPU纹理缓存替换策略MFU,即GPU纹理缓存时使用MFU替换算法:纹理缓存每一行添加的四个比特数据作为其tag,当为1111时表示此行在最近三十帧的活动情况最大,当为0000时表示此行在最近三十帧的活动情况最小即使用频繁度最低。
对于纹理缓存的每一行,增加四个比特记录这一行在最近三十帧的活动情况;纹理追踪模块对每一个纹理生成唯一标识,且保存其在显存中的位置以及引用计数;当纹理被游戏使用渲染时将其引用计数器加一,在使用结束时将引用计数器减一。
使用Murmur哈希算法算法给每个纹理生成唯一标识;使用对纹理生成的唯一标识符判断两个纹理是否相同,以及找出给定纹理在纹理追踪模块中记录的信息。
当GPU纹理缓存检测到连续15次缓存不命中时,认为GPU已经开始渲染不同的游戏,将纹理缓存中所有行全部换出。
本发明主要涉及两个主要的发明点,GPU纹理共享策略,GPU纹理缓存替换策略。
GPU纹理共享策略是通过对GPU驱动的修改,解决了多个用户在服务端运行相同游戏时,相同的游戏纹理数据在服务端被重复加载多次造成的冗余的DMA传输以及不必要的显存浪费等问题。纹理缓存替换策略是针对纹理共享策略而优化的GPU纹理缓存替换策略。通过对GPU纹理缓存替换策略的修改,提高了缓存的命中率以及降低了GPU读取纹理的周期数。
本发明的有益效果是,通过共享GPU资源,增加了云游戏服务器中GPU纹理缓存的命中率,降低了服务器中DMA的传输以及显存的使用,提升了游戏性能,减少了GPU服务器的耗电量。
附图说明
图1是云游戏系统的渲染流程框架。
图2是修改后的GPU纹理载入流程。
具体实施方式
下面对本发明的实施例作详细说明,本实施例在本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,本发明的适用平台不限于下述的实施例。
图1是现有技术中云游戏系统的架构示意图。在一个多用户的云游戏服务器中,每个用户(图上部的GUEST)应用调用一个标准的渲染API接口,用户的GPU驱动程序在用户主存中准备相应的对象并打包GPU命令。这些命令被传输到到虚拟的I/O队列,然后在后台被传输到主机(图下部的HOST)上。
最后这些分发层用一种异步方式将命令发送到主机的显卡驱动上。用户内存中的内容以及对象在主机驱动程序的控制下被传送到主机的物理显存中。多个用户会激发多个游戏实例,这要求多个虚拟机遇驱动交互。
主机GPU驱动一旦受到一个请求,将会传输相应的内存对象以及在图形引擎上运行这个游戏实例。对于以帧为基础的调度算法中,GPU处理过程相同,在每隔一段时间渲染一次游戏。
我们在GPU驱动中增加一个资源追踪模块,资源追踪模块保存所有已经在显存中分配空间的纹理的信息。追踪模块给每一个纹理分配一个唯一的标识符,一个地址描述符以及计数器。地址描述符指向纹理在显存中的位置。计数器用来保存有多少个激活的调用在使用这个纹理。
当一个纹理加载请求出现时,GPU驱动会通过这个纹理的标识符在资源追踪模块确定此纹理是否经在显存中被加载。如果已经加载,则将其地址描述符传送给GPU。如果没有被加载,则按照正常的方式为其分配显存。然后更新此纹理在资源追踪模块的引用计数。
为纹理分配唯一且确定的标识符非常重要,在这里我们使用Murmur哈希算法得到纹理的标识符。如图2所示,图1通过哈希算法得到纹理的标识Texture,使用MurmurHashing哈希算法给每个纹理生成唯一标识,在资源追踪模块Search Resource Tracker中通过标识判断此纹理是否已经被加载的显存中;使用对纹理生成的唯一标识符判断两个纹理是否相同匹配,如果已被加载,将所在位置的显存描述符传递给GPU,以便GPU在使用此Transfer Texture纹理渲染时在显存中正确得到数据;纹理如果不Match匹配,Texture纹理无法应用;相应地,GPU资源追踪模块记录Reference Count++所有已被载入到显存中的纹理的活跃程度。
使用这种哈希算法的理由是其在对非加密数据进行哈希算法时效率较高。然而,此方案不仅限于这种哈希算法,也可以使用其他哈希算法保证标识符的唯一性,在这里仅作一种样例。
此外,我们对GPU的纹理缓存的结构做一定修改以得到更好的性能。我们使用一种新的Cache替换策略,称为Most-Frequently-Used(MFU最常使用)。为实现MFU替换策略,在每个cache行添加4bit的tag,这个tag里面的数据描述cache行在游戏最近30帧中被使用的频繁程度。最频繁的cache行的tag值为1111,使用频率最低的cache行的tag值为0000。当cache行需要被换出时,我们随机选择tag值为0000的cache行换出。此外,我们检测cache缺失情况,如果连续15次cache缺失的话,可以认为渲染的游戏实例有变化,纹理cache的所有行都被换出。
Claims (7)
1.一种云游戏中GPU资源共享的方法,其特征是,在云游戏服务端系统结构中,修改GPU驱动对纹理载入流程,以及修改GPU纹理缓存替换策略以达到资源共享以及优化性能;云游戏服务器GPU在渲染用户游戏时,若遇到载入纹理的请求,将使用纹理追踪模块判断纹理是否被载入到显存中,当发现纹理已经在显存中,则返回;在纹理追踪模块中记录纹理所在显存的位置,否则将其载入至显存并在纹理追踪模块中记录信息;针对纹理共享策略而采用优化GPU纹理缓存替换策略,即GPU纹理缓存替换策略MFU最高频使用策略。
2.根据权利要求1所述的方法,其特征是对GPU驱动纹理载入流程的算法修改,包括GPU资源追踪模块以及GPU纹理载入算法;在GPU将内存中的纹理载入到显存中时,通过哈希算法得到纹理的标识,在资源追踪模块中通过标识判断此纹理是否已经被加载的显存中;如果已被加载,将所在位置的显存描述符传递给GPU,以便GPU在使用此纹理渲染时在显存中正确得到数据;相应地,GPU资源追踪模块记录所有已被载入到显存中的纹理的活跃程度,当显存空间不够用时,将显存中最不活跃的纹理替换出以释放显存空间。
3.根据权利要求2所述的方法,其特征在于,纹理追踪模块对每一个纹理使用Murmur哈希算法算法给每个纹理生成唯一标识;且保存其在显存中的位置以及引用计数;使用对纹理生成的唯一标识符判断两个纹理是否相同,以及找出给定纹理在纹理追踪模块中记录的信息。
4.根据权利要求3所述的方法,其特征在于,纹理追踪模块对于纹理缓存的每一行,增加四个比特记录这一行在最近三十帧的活动情况;纹理追踪模块对每一个纹理生成唯一标识,且保存其在显存中的位置以及引用计数;当纹理被游戏使用渲染时将其引用计数器加一,在使用结束时将引用计数器减一。
5.根据权利要求1或2所述的方法,其特征在于,GPU纹理缓存使用MFU替换算法。记录纹理缓存中每一个纹理最近30帧被使用的频繁程度,当新的纹理需要被替换如缓存时,将使用频繁度最低的纹理替换出。GPU纹理缓存替换策略MFU,即GPU纹理缓存时使用MFU替换算法:纹理缓存每一行添加的四个比特数据作为其tag,当为1111时表示此行在最近三十帧的活动情况最大,当为0000时表示此行在最近三十帧的活动情况最小即使用频繁度最低。
6.根据权利要求5所述的的方法,其特征在于,纹理缓存MFU替换算法为,当纹理缓存需要替换出时,随机tag为0000的行作为换出,若无tag为0000的缓存行,则选取tag视为数字最小的行换出。
7.根据权利要求5所述的方法,其特征在于当GPU纹理缓存检测到连续15次缓存不命中时,认为GPU已经开始渲染不同的游戏,将纹理缓存中所有行全部换出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510362332.9A CN104991827A (zh) | 2015-06-26 | 2015-06-26 | 云游戏中gpu资源共享的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510362332.9A CN104991827A (zh) | 2015-06-26 | 2015-06-26 | 云游戏中gpu资源共享的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104991827A true CN104991827A (zh) | 2015-10-21 |
Family
ID=54303643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510362332.9A Pending CN104991827A (zh) | 2015-06-26 | 2015-06-26 | 云游戏中gpu资源共享的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104991827A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106127673A (zh) * | 2016-07-19 | 2016-11-16 | 腾讯科技(深圳)有限公司 | 一种视频处理方法、装置及计算机设备 |
CN107844511A (zh) * | 2017-06-16 | 2018-03-27 | 珠海金山网络游戏科技有限公司 | 一种基于周期成本的游戏资源缓存方法和系统 |
CN109589608A (zh) * | 2018-12-19 | 2019-04-09 | 网易(杭州)网络有限公司 | 保护游戏数据的方法和装置 |
CN110347462A (zh) * | 2019-06-21 | 2019-10-18 | 秦皇岛尼特智能科技有限公司 | 一种基于opengl的wmf消防图形处理方法及装置 |
CN110457135A (zh) * | 2019-08-09 | 2019-11-15 | 重庆紫光华山智安科技有限公司 | 一种资源调度方法、装置及共享gpu显存的方法 |
CN111028127A (zh) * | 2019-11-18 | 2020-04-17 | 中国航空工业集团公司西安航空计算技术研究所 | 一种gpu子纹理替换存储方法 |
CN111078412A (zh) * | 2019-12-12 | 2020-04-28 | 中山大学 | 一种通过api截获对gpu进行资源管理的方法 |
CN111508051A (zh) * | 2020-04-22 | 2020-08-07 | 浙江无端科技股份有限公司 | 一种纹理加载方法及相关装置 |
CN113342265A (zh) * | 2021-05-11 | 2021-09-03 | 中天恒星(上海)科技有限公司 | 缓存管理方法、装置、处理器及计算机装置 |
CN114022344A (zh) * | 2022-01-10 | 2022-02-08 | 北京蔚领时代科技有限公司 | 基于Linux服务器的Android容器渲染资源共享方法和装置 |
CN114377394A (zh) * | 2022-01-17 | 2022-04-22 | 北京永利信达科技有限公司 | 一种云游戏画面渲染方法及装置 |
EP4252875A3 (en) * | 2017-04-03 | 2023-11-29 | Sony Interactive Entertainment America LLC | Systems and methods for using a distributed game engine |
WO2024066828A1 (zh) * | 2022-09-26 | 2024-04-04 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、设备、计算机可读存储介质及计算机程序产品 |
CN118001741A (zh) * | 2024-04-09 | 2024-05-10 | 湖南速子文化科技有限公司 | 一种大量虚拟人物展示方法、系统、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692229A (zh) * | 2009-07-28 | 2010-04-07 | 武汉大学 | 基于数据内容的三维空间数据自适应多级缓存系统 |
CN102549547A (zh) * | 2009-10-09 | 2012-07-04 | 微软公司 | 纹理的自动运行时标识 |
WO2013069654A1 (en) * | 2011-11-07 | 2013-05-16 | Square Enix Holdings Co., Ltd. | Rendering system, rendering server, control method thereof, program, and recording medium |
CN103279430A (zh) * | 2012-07-27 | 2013-09-04 | 中南大学 | 图形处理单元中的缓存索引映射方法及装置 |
CN104052803A (zh) * | 2014-06-09 | 2014-09-17 | 国家超级计算深圳中心(深圳云计算中心) | 一种去中心化的分布式渲染方法及渲染系统 |
-
2015
- 2015-06-26 CN CN201510362332.9A patent/CN104991827A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692229A (zh) * | 2009-07-28 | 2010-04-07 | 武汉大学 | 基于数据内容的三维空间数据自适应多级缓存系统 |
CN102549547A (zh) * | 2009-10-09 | 2012-07-04 | 微软公司 | 纹理的自动运行时标识 |
WO2013069654A1 (en) * | 2011-11-07 | 2013-05-16 | Square Enix Holdings Co., Ltd. | Rendering system, rendering server, control method thereof, program, and recording medium |
CN103279430A (zh) * | 2012-07-27 | 2013-09-04 | 中南大学 | 图形处理单元中的缓存索引映射方法及装置 |
CN104052803A (zh) * | 2014-06-09 | 2014-09-17 | 国家超级计算深圳中心(深圳云计算中心) | 一种去中心化的分布式渲染方法及渲染系统 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106127673B (zh) * | 2016-07-19 | 2019-02-12 | 腾讯科技(深圳)有限公司 | 一种视频处理方法、装置及计算机设备 |
CN106127673A (zh) * | 2016-07-19 | 2016-11-16 | 腾讯科技(深圳)有限公司 | 一种视频处理方法、装置及计算机设备 |
EP4252875A3 (en) * | 2017-04-03 | 2023-11-29 | Sony Interactive Entertainment America LLC | Systems and methods for using a distributed game engine |
CN107844511A (zh) * | 2017-06-16 | 2018-03-27 | 珠海金山网络游戏科技有限公司 | 一种基于周期成本的游戏资源缓存方法和系统 |
CN107844511B (zh) * | 2017-06-16 | 2021-08-17 | 珠海金山网络游戏科技有限公司 | 一种基于周期成本的游戏资源缓存方法和系统 |
CN109589608A (zh) * | 2018-12-19 | 2019-04-09 | 网易(杭州)网络有限公司 | 保护游戏数据的方法和装置 |
CN110347462A (zh) * | 2019-06-21 | 2019-10-18 | 秦皇岛尼特智能科技有限公司 | 一种基于opengl的wmf消防图形处理方法及装置 |
CN110457135A (zh) * | 2019-08-09 | 2019-11-15 | 重庆紫光华山智安科技有限公司 | 一种资源调度方法、装置及共享gpu显存的方法 |
CN111028127A (zh) * | 2019-11-18 | 2020-04-17 | 中国航空工业集团公司西安航空计算技术研究所 | 一种gpu子纹理替换存储方法 |
CN111028127B (zh) * | 2019-11-18 | 2023-06-13 | 中国航空工业集团公司西安航空计算技术研究所 | 一种gpu子纹理替换存储方法 |
CN111078412B (zh) * | 2019-12-12 | 2023-03-14 | 中山大学 | 一种通过api截获对gpu进行资源管理的方法 |
CN111078412A (zh) * | 2019-12-12 | 2020-04-28 | 中山大学 | 一种通过api截获对gpu进行资源管理的方法 |
CN111508051A (zh) * | 2020-04-22 | 2020-08-07 | 浙江无端科技股份有限公司 | 一种纹理加载方法及相关装置 |
CN113342265B (zh) * | 2021-05-11 | 2023-11-24 | 中天恒星(上海)科技有限公司 | 缓存管理方法、装置、处理器及计算机装置 |
CN113342265A (zh) * | 2021-05-11 | 2021-09-03 | 中天恒星(上海)科技有限公司 | 缓存管理方法、装置、处理器及计算机装置 |
CN114022344A (zh) * | 2022-01-10 | 2022-02-08 | 北京蔚领时代科技有限公司 | 基于Linux服务器的Android容器渲染资源共享方法和装置 |
CN114377394A (zh) * | 2022-01-17 | 2022-04-22 | 北京永利信达科技有限公司 | 一种云游戏画面渲染方法及装置 |
WO2024066828A1 (zh) * | 2022-09-26 | 2024-04-04 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、设备、计算机可读存储介质及计算机程序产品 |
CN118001741A (zh) * | 2024-04-09 | 2024-05-10 | 湖南速子文化科技有限公司 | 一种大量虚拟人物展示方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104991827A (zh) | 云游戏中gpu资源共享的方法 | |
US10347013B2 (en) | Session idle optimization for streaming server | |
CN103412786B (zh) | 一种高性能服务器架构系统及数据处理方法 | |
CN101650698B (zh) | 直接存储器访问的实现方法 | |
CN101739290B (zh) | 用于保障多线程服务器应用的系统 | |
CN115211094B (zh) | 通过计算节点与存储服务器之间的PCI Express织构提供高速存储访问的网络架构系统 | |
CN103631634A (zh) | 实现图形处理器虚拟化的方法与装置 | |
CN107967180B (zh) | 基于numa虚拟化环境下资源全局亲和度网络优化方法和系统 | |
Zhang et al. | A cloud gaming system based on user-level virtualization and its resource scheduling | |
US9323679B2 (en) | System, method, and computer program product for managing cache miss requests | |
CN106390449A (zh) | 一种基于图形虚拟化技术的云游戏框架 | |
CN102541803A (zh) | 数据发送方法和计算机 | |
CN102929769A (zh) | 一种基于代理服务的虚拟机内部数据采集方法 | |
CN102801636A (zh) | 云计算平台云主机网络带宽限制的方法 | |
US20180108106A1 (en) | System and method for dynamically allocating resources among gpu shaders | |
CN108073457A (zh) | 一种超融合基础架构的分层资源管理方法、装置及系统 | |
US9936209B2 (en) | System and method for slice processing computer-related tasks | |
Sivaramakrishnan et al. | Next generation SPARC processor cache hierarchy | |
CN102495764A (zh) | 数据分流的实现方法和装置 | |
US9489707B2 (en) | Sampler load balancing | |
US8261117B2 (en) | Virtualization in a multi-core processor (MCP) | |
CN105323320B (zh) | 一种内容分发的方法及装置 | |
TW202236205A (zh) | 計算工作負載的光柵化 | |
Chang et al. | A 172.6 mW 43.8 GFLOPS energy-efficient scalable eight-core 3D graphics processor for mobile multimedia applications | |
Hsiao et al. | Efficient rendering and cache replacement mechanisms for hierarchical tiling in mobile GPUs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20151021 |