用于云游戏的高速保存数据存储的制作方法

文档序号:33644816发布日期:2023-03-29 03:15阅读:43来源:国知局
用于云游戏的高速保存数据存储的制作方法
用于云游戏的高速保存数据存储


背景技术:

1.视频游戏产业多年以来已经发生了许多变化。随着计算能力的扩大,视频游戏的开发者同样已经创建利用不断增长的计算能力的游戏软件。为此,视频游戏开发者一直在编码结合复杂运算和数学的游戏,以产生非常真实的游戏体验。
2.除适应日益扩大的计算能力外,游戏开发者也在开发增加用户与游戏系统之间的交互的在线游戏。交互式在线游戏向用户提供与互联网上的其他用户交互地比赛或一起玩并且捕获此类交互的能力。另外,随着基于云的计算的增长趋势,游戏开发者正在开发利用增加的计算能力和增加的用户交互性来玩现有传统游戏和开发新游戏的新方式。基于云的计算系统可包括基于云的处理服务器,所述服务器执行游戏应用,并且与存在于游戏玩家的位置的远程客户端系统进行通信,其中远程客户端系统可被配置来从游戏玩家接收输入并且在显示器上渲染视频以供游戏玩家观看。在这种背景下本发明应运而生。


技术实现要素:

3.在示例性实施方案中,公开了一种云游戏系统。所述云游戏系统包括:云游戏服务器,所述云游戏服务器被配置来根据从用户的控制器装置接收的输入执行视频游戏。云游戏服务器被配置来将反映所述用户玩所述视频游戏的视频流直接传输到所述用户的本地计算系统;所述云游戏系统还包括云存储服务器。所述云存储服务器包括用于存储所述用户的用户数据的数据存储装置。所述用户数据包括记录所述用户玩所述视频游戏的数据。所述云游戏系统还包括与所述云游戏服务器和所述云存储服务器两者进行数据通信的管理服务器。所述管理服务器包括以比在所述云存储服务器内的所述数据存储装置更高的数据速率和更低的延时操作的高速数据存储装置。所述管理服务器被编程为接收由在所述云游戏服务器上执行的所述视频游戏发出的数据访问请求。所述数据访问请求识别存储在所述云存储服务器内的所述数据存储装置中的请求数据。所述管理服务器被编程为将所述请求数据从所述云存储服务器内的所述数据存储装置复制到所述高速数据存储装置中。所述管理服务器被编程为使用所述高速数据存储装置响应所述数据访问请求,来代替让所述云存储服务器响应所述数据访问请求。
4.在示例性实施方案中,公开了一种用于操作云游戏系统的方法。所述方法包括根据从用户的控制器装置接收的输入在云游戏服务器上执行视频游戏。所述方法还包括操作所述云游戏服务器以将反映所述用户玩所述视频游戏的视频流直接传输到所述用户的本地计算系统。所述方法还包括将所述用户的用户数据存储在云存储服务器中。所述用户数据包括记录所述用户玩所述视频游戏的数据。所述方法还包括在管理服务器处接收数据访问请求。所述数据访问请求由在所述云游戏服务器上执行的所述视频游戏发出。所述数据访问请求识别存储在所述云存储服务器内的数据存储装置中的请求数据。所述方法还包括将所述请求数据从所述云存储服务器内的所述数据存储装置复制到所述管理服务器内的所述高速数据存储装置中。所述高速数据存储装置以比所述云存储服务器内的所述数据存储装置更高的数据速率和更低的延时操作。所述方法还包括使用所述管理服务器中的所述
高速数据存储装置响应所述数据访问请求来代替让所述云存储服务器响应所述数据访问请求。
附图说明
5.图1示出根据一些实施方案的云游戏系统。
6.图2示出根据一些实施方案的以下的方式的过程图:通过云游戏服务器使用控制路径api调用以触发将数据从云存储服务器中的较慢数据存储装置传送到管理服务器中的高速数据存储装置,然后通过云游戏服务器的数据路径api调用以访问所传送的数据。
7.图3示出根据一些实施方案的云游戏服务器和管理服务器的一些内部部件的示例性图。
8.图4示出根据一些实施方案的用于操作云游戏系统的方法的流程图。
具体实施方式
9.在以下描述中,阐述多个具体细节以提供对本公开的透彻理解。然而,对于本领域技术人员将显而易见的是,可在没有这些具体细节的一些或所有的情况下实践本公开的实施方案。在其他情况下,没有详细描述众所周知的处理操作以免不必要地使本公开模糊。
10.下一代视频游戏控制台具有非常快的数据存储解决方案,诸如nvme(快速非易失性存储器)ssd(固态驱动器),其比当前可获得的数据存储解决方案诸如hdd(硬盘驱动器)快得多。下一代视频游戏控制台的非常快数据存储解决方案对云游戏提出了挑战,所述云游戏依赖于用于存储游戏数据以及用户数据诸如用于保存游戏的共享存储服务器。在常规的云游戏系统中,用户数据通常存储在云存储解决方案诸如云存储服务器中,其以hdd级别的数据存储性能操作以降低成本。然而,随着下一代视频游戏控制台的出现,至少需要nvme级别的数据存储性能才能满足游戏控制台游戏(视频游戏)的数据访问期望。
11.本文公开系统和方法以满足针对在线视频游戏执行提供nvme级数据存储性能的挑战,同时还继续使用具有成本效益的hdd技术以存储与在线视频游戏进行相关联的用户数据。应当理解,如本文所用的术语在线视频游戏是指由云计算系统供给到客户端计算装置以供用户在客户端计算装置上玩的视频游戏。如本文所指代的在线视频游戏可以是单个玩家视频游戏或多玩家视频游戏。本文所公开的系统和方法的原理是:在执行在线视频游戏的云游戏服务器与云数据存储解决方案之间提供密切的数据通信,其中执行在线视频游戏当前所需的数据存储在管理服务器内的快速数据存储装置/系统中,而保存数据和执行在线视频游戏不迫切需要的其他游戏相关数据存储在较慢、更具成本效益的云存储服务器中。
12.图1示出根据一些实施方案的云游戏系统100。云游戏系统100包括:包括多(n)个云游戏服务器103-1至103-n的云游戏服务器机架101。在一些实施方案中,云游戏服务器103-1至103-n的数量(n)可高达100或甚至更多。云游戏服务器机架101还包括多(x)个管理服务器105-1至105-x和一个或多个存储服务器107。存储服务器107包括大量数据存储装置107a,诸如hdd和/或ssd。存储服务器107存储可供用于在云游戏系统100上玩的所有视频游戏。每个管理服务器105-1至105-x负责管理云游戏会话。而且,给定的管理服务器105-1至105-x可负责同时管理多个云游戏会话。在一些实施方案中,每个管理服务器105-1至105-x
操作以在需要时启动一个或多个云游戏服务器103-1至103-n,将请求的视频游戏从存储服务器107加载到云游戏服务器103-1至103-n中的给定一者,开始在云游戏服务器103-1至103-n中的给定一者上执行所请求的视频游戏,将用户登录到云游戏服务器103-1至103-n中的给定一者中,并且为登录用户挂载来自云存储服务器109的用户数据111,以及其他操作。
13.在一些实施方案中,存储服务器107可由存储配置替代,在所述存储配置中hdd和/或ssd通过配备网络接口卡(nic)和小型中央处理单元(cpu)转变成迷你服务器。这种存储配置的示例是嵌入式ssd(essd)。例如,在一些essd中,使用倒装芯片封装工艺中的球栅阵列(bga)格式将存储器控制器集成电路(ic)芯片与ssd组合在单个封装中。在一些实施方案中,包括ic芯片和ssd的单个封装可在不使用模块连接器的情况下直接安装到印刷电路板(母板)。当然,应当理解,在各种实施方案中存在可取代存储服务器107的许多可能的essd配置。针对使用essd代替存储服务器107的一个动机是:由于存储数据通信变得比网络数据通信更快,传统的存储服务器不再具有很好的扩展性。在一些实施方案中,当使用essd存储配置来代替存储服务器107时,游戏可跨多个essd进行条带化。在这些实施方案中,云游戏服务器103-1至103-n将需要针对游戏的不同部分接触不同驱动器(不同essd)。而且,在一些实施方案中,essd的使用可扩展到云存储服务器109。在此类实施方案中,将需要具有许多essd的集群,其中管理服务器105-1至105-x用于向云游戏服务器103-1至103-n隐藏基于essd的云存储服务器109实施细节。
14.在云游戏(或在线游戏)中,用户(游戏玩家)121操作本地计算系统120以通过诸如互联网的网络123登录到云游戏系统100中,并且玩在云游戏服务器103-1至103-n中的一个或多个上远程执行的在线视频游戏。在一些实施方案中,用户121通过管理服务器105-1至105-x中的一个登录到云游戏系统100中。然而,应当理解,存在涉及用户121的登录的各种云服务。例如,存在涉及用于认证用户121、用于确保用户121具有足够质量的互联网连接、以及用于查找用户121附近的用户121可登录的可用服务器的云服务。在一些实施方案中,本地计算系统120包括游戏控制器125和诸如电视或监视器的显示装置126。在一些实施方案中,本地计算系统120包括连接到显示装置126的软件狗128,其中软件狗128被配置来实现游戏控制器125与显示装置126之间的数据通信,使得显示装置126的网络接口控制器(nic)可用于将信号从游戏控制器125传输到网络123。在一些实施方案中,本地计算系统120还包括本地游戏控制台127。在这些实施方案中,由游戏控制器125生成的信号可使用本地游戏控制台127的nic通过本地游戏控制台127传输到网络123。而且,在一些实施方案中,游戏控制器125可通过诸如wifi网络的局域网将信号直接传达到网络123。而且,在一些实施方案中,用户121可在本地计算系统120之外的本地计算装置上玩在线视频游戏。例如,在一些实施方案中,用户121可在这种移动电话、平板、笔记本电脑、智能汽车系统等移动计算装置上玩在线视频游戏。而且,在一些实施方案中,用户121可在桌面计算系统上玩在线视频游戏。为了便于描述,本文对本地计算系统120的标引也传达了对用户121可玩在线视频游戏所在的任何其他计算装置的标引。
15.另外,在各种实施方案中,数据(诸如视频流数据或音频数据或触觉反馈数据)通过网络123从云游戏系统100传达到本地计算系统120。在一些实施方案中,数据通过网络123从云游戏系统100传达到显示装置126。在一些实施方案中,数据通过网络123从云游戏
系统100传达到本地游戏控制台127,并且从本地游戏控制台127传达到显示装置126。而且,在一些实施方案中,数据通过网络123从云游戏系统100传达到游戏控制器125。
16.在游戏进行期间,用户121生成通过网络123传输到云游戏服务器103-1至103-n的游戏命令。在一些实施方案中,用户121使用游戏控制器125来生成游戏命令,所述游戏命令以信号形式从游戏控制器125传输到网络123并且传输到云游戏服务器103-1至103-n上。在一些实施方案中,游戏命令以信号形式从游戏控制器125传输到本地游戏控制台127或者传输到显示装置126,游戏命令通过网络123从所述本地游戏控制台或所述显示装置传输到云游戏服务器103-1至103-n。在各种实施方案中,以信号形式的游戏命令从游戏控制器125传输到网络123可通过有线网络连接或无线网络连接或其组合来完成。云游戏服务器103-1至103-n根据从用户121接收的游戏命令来执行视频游戏以生成反映用户玩视频游戏的视频流。所述视频流通过网络123从云游戏服务器103-1至103-n传输到用户121的本地计算系统120以在显示装置126上显示。
17.云游戏服务器103-1至103-n使用网络存储协议117从存储服务器107加载所有游戏数据113和游戏可执行文件115。在一些实施方案中,网络存储协议117利用块存储,诸如iscsi(内部小型计算机系统接口)等。在一些实施方案中,网络存储协议利用文件存储,诸如nfs(网络文件系统)或cifs(通用互联网文件系统)等。在一些实施方案中,云游戏服务器103-1至103-n可能受限于支持的网络存储协议117。例如,在一些实施方案中,由于缺少软件驱动程序,云游戏服务器103-1至103-n可能受限于支持的网络存储协议117。或者,在一些实施方案中,由于一些网络存储协议使用过多的资源诸如cpu使用和/或存储器使用,云游戏服务器103-1至103-n可能受限于支持的网络存储协议117。在一些实施方案中,由于云游戏服务器103-1至103-n可能受限于支持的网络存储协议117,云游戏服务器103-1至103-n对用户数据111的访问可通过管理服务器105-1至105-x完成,其中管理服务器105-1至105-x充当代理。在这些实施方案中,管理服务器105-1至105-x挂载来自云存储服务器109的用户数据111并且使用由云游戏服务器103-1至103-n支持的数据存储协议将用户数据111暴露给云游戏服务器103-1至103-n。
18.在各种实施方案中,云存储服务器109通过各种数据存储协议(诸如通过对象存储、或文件存储、或块存储、或其他数据存储协议)来暴露数据存储。管理服务器105-1至105-x被配备为与云存储服务器109使用的任何数据存储协议进行交接,无论它是对象存储、文件存储还是块存储、还是其他数据存储协议。管理服务器105-1至105-x还被配置来通过各种数据存储协议诸如对象存储、文件存储或块存储、或其他数据存储协议,暴露其自身的数据存储。并且,管理服务器105-1至105-x暴露其自身数据存储的数据存储协议可与云存储服务器109暴露其自身数据存储的数据存储协议相同或不同。例如,在一些实施方案中,管理服务器105-1至105-x被编程为挂载来自云存储系统109的对象存储作为文件系统,并且继而将挂载的文件系统展示给云游戏服务器103-1至103-n。类似地,在另一示例性实施方案中,管理服务器105-1至105-x被编程为挂载来自云存储系统109的块存储作为文件系统,并且继而将挂载的文件系统展示给云游戏服务器103-1至103-n的nfs协议。在一些实施方案中,块存储基于ceph rbd(rados(可靠自主分布式对象存储)块装置)。然而,在其他实施方案中,块存储可基于任何类型的块数据存储协议。
19.让管理服务器105-1至105-x在云游戏服务器103-1至103-n与云存储服务器109之
间的数据路径中充当代理可在履行由云游戏服务器103-1至103-n发出的数据访问请求中增加一些延时。然而,让管理服务器105-1至105-x在云游戏服务器103-1至103-n与云存储服务器109之间的数据路径中充当代理在云存储服务器109与云游戏服务器103-1至103-n之间如何管理数据传送方面提供了更大的灵活性。例如,在一些实施方案中,如果需要的话,管理服务器105-1至105-x可操作以缓冲数据输入/输出请求(由云游戏服务器103-1至103-n发出)和/或高速缓存数据。例如,如果云存储服务器109繁忙或出于某种原因不能立即可用,管理服务器105-1至105-x可通过缓冲由云游戏服务器103-1至103-n发出的数据输入/输出请求来吸收云存储服务器109的这种可用性缺失。
20.通常,云游戏服务器103-1至103-n与管理服务器105-1至105-x/云存储服务器109之间的交互在某种程度上是解耦的。例如,云游戏服务器103-1至103-n展示为网络文件系统,和某一网络存储软件为云游戏服务器103-1至103-n管理数据读取和写入操作。在此情况下,管理服务器105-1至105-x只是简单地涉及挂载来自云存储服务器109的数据,但不知道在云游戏服务器103-1至103-n上执行的视频游戏正在读取或写入哪些数据或者视频游戏正在访问哪些数据。
21.下一代游戏控制台将使用快速nvme数据存储驱动器,其以每秒4-5千兆字节(gb/s)的数据速率操作。用于对比,如当前在云存储系统109中使用的2.5英寸hdd在每秒100兆字节(mb/s)的数据速率处达到峰值。而且,hdd具有比nvme数据存储驱动器高得多的延时。例如,典型的hdd延时在约10毫秒延伸至约20毫秒的范围内,而典型的nvme数据存储驱动器延时小于约0.1毫秒。随着存储性能的提高,在视频游戏的编程中反映的对视频游戏能够以多快的速度访问数据存储的期望也在增加。视频游戏通常对数据存储性能做出假设。如果实际的数据存储性能与视频游戏假设的数据存储性能相差太多,则视频游戏可能崩溃或者在视频游戏内可能发生某一其他未定义的行为。
22.在一些实施方案中,通常在没有修改的情况下,在本地游戏控制台127上使用/执行的相同视频游戏也存储在存储服务器107中并且由云游戏中的云游戏服务器103-1至103-n执行。这些视频游戏是使用基于在本地游戏控制台127上执行的视频游戏的性能假设来开发的,其具有特别是关于数据读取和写入操作的更快存储解决方案。因此,当相同视频游戏在云游戏服务器103-1至103-n上执行时,针对云游戏服务器103-1至103-n实施的数据存储解决方案的性能应基本匹配或超过本地游戏控制台127上可用的本地数据存储解决方案的性能。
23.云游戏系统100中实施的数据存储解决方案需要更新,以跟上下一代视频游戏的数据读取和写入性能期望,如在下一代本地游戏控制台127上实施的非常快的数据存储解决方案所设定。在一些实施方案中,可更新现有的云存储服务器109以使用快速nvme存储解决方案。然而,这种途径出奇昂贵。因此,针对平衡解决方案的目标是保持存储在云存储服务器109中的性能受限的hdd上的数据以降低费用,同时还通过在管理服务器105-1至105-x内的快速存储确保视频游戏当前所需的数据可用。此目标可通过云游戏服务器103-1至103-n与云存储解决方案之间的密切合作来实现,这本质上是对云游戏服务器103-1至103-n与管理服务器105-1至105-x/云存储服务器109之间的交互的常规解耦的逆转。在一些实施方案中,云游戏服务器103-1至103-n与云存储解决方案之间的密切合作将涉及挂钩到由在云游戏服务器103-1至103-n上执行的视频游戏调用的文件系统api(应用编程接口)中,
以便获取有关视频游戏当前正在访问哪些数据、视频游戏接着/很快可能访问哪些数据、以及何时使用特定数据完成视频游戏的信息。
24.文件系统访问api出于特定原因触发在特定时间发生的数据访问。各种操作系统遵循posix(便携式操作系统接口)标准,所述标准在包括文件系统访问的许多操作系统概念上定义api。用于文件系统访问的最常见的posix api中的四种是“打开”、“关闭”、“读取”和“写入”。“打开”api用于打开文件。“关闭”api用于关闭文件并且触发将数据写回数据存储装置,如果数据尚未被写回数据存储装置。“读取”api用于读取数据。“写入”api用于写入数据。“打开”和“关闭”api被视为控制路径api,其为用于获取文件访问或修改许可的api。“读取”和“写入”api被视为数据路径api,其为用于访问或修改数据的api。
25.在一些实施方案中,视频游戏控制台api利用posix api,但具有一些添加。在常规的个人计算机或服务器计算机上,通常存在单个数据存储装置诸如hdd或ssd,所述存储装置具有一个或多个分区,并且其中每个分区配置有文件系统。视频游戏控制台的存储系统以类似于个人计算机或服务器计算机的存储系统的方式配置。然而,在视频游戏控制台上,出于安全和用户隔离的原因,保存数据和其他用户数据通常存储在保存数据磁盘映像中,其中每个保存数据磁盘映像对应于用于视频游戏的单个保存槽。每个保存数据磁盘映像都具有自己的文件系统,其需要在使用之前挂载并且在使用之后解除挂载。“挂载”操作和“解除挂载”操作由被视为控制路径api的相应api执行。因此,视频游戏控制台中的数据访问流程的示例如下:1)(任选,根据需要)创建保存数据磁盘映像,2)挂载保存数据磁盘映像,3)打开文件,4)读取和/或写入来自/到文件的数据,5)关闭文件,以及6)解除挂载保存数据磁盘映像。
26.视频游戏中的数据访问流程的性能关键部分在使用“读取”和“写入”api的数据路径中。在数据“读取”操作的情况下,视频游戏可能期望数据在一定量的时间内被传送回以便支持视频游戏的继续正确执行。类似地,在数据“写入”操作的情况下,视频游戏可能期望数据在一定量的时间内被写入以便支持视频游戏的继续正确执行。如果存储解决方案无法在所需的时间量内执行数据“读取”和/或“写入”操作,则在视频游戏的执行内可能发生坏事。可能发生的这些坏事的确切类型取决于视频游戏的设计和如何写入视频游戏代码。可能发生的这些坏事的类型的一些示例包括视频游戏崩溃、视频游戏内的未定义行为、和/或在视频游戏内卡顿等等。
27.当视频游戏调用数据“读取”api或数据“写入”api时,视频游戏将一个或多个标记传递给被调用的api。可设置这些标记来控制如何执行被调用的api。视频游戏中的数据读取和数据写入行为两者取决于视频游戏传递给所调用的api的标记和如何结构化视频游戏。例如,在一些视频游戏中,数据读取和数据写入操作可标记为同步,这意指数据“读取”api和数据“写入”api将阻止继续的视频游戏执行,直到数据读取和数据写入操作完成。如果写入视频游戏以从一段进行游戏渲染的代码调用同步数据读取或数据写入,则每当读取或写入操作由于慢速存储装置而耗时更长才能完成时,视频游戏可能变慢或卡顿。然而,如果视频游戏将数据写入操作标记为通常针对数据写入操作完成的异步,则然后视频游戏将要写入的数据交给操作系统并且继续执行视频游戏,而无需等待要写入的数据。视频游戏中数据读取和数据写入操作的位置以及与数据读取和数据写入操作相关联的标记取决于视频游戏的设计。写入良好的视频游戏将至少尝试在视频游戏代码的智能区域中执行数据
读取和数据写入操作,以避免干扰流畅的视频游戏执行。
28.控制路径api诸如“挂载”、“打开”、“关闭”和“解除挂载”也很重要,但通常被期望阻止视频游戏的继续执行,直到它们完成。因此,及时执行控制路径api对视频游戏的性能通常不是那么关键。例如,视频游戏无法对数据存储做任何事情直到“挂载”和“打开”api调用已经完成,并且视频游戏设计者意识到了这一点。控制路径api用于本文所公开的系统和方法,以满足具有平衡存储解决方案的目标,所述解决方案继续将数据存储在云存储服务器109中性能受限的hdd上以减少费用,同时还确保视频游戏当前所需的数据可从管理服务器105-1至105-x内的存储装置快速获得。
29.现代视频游戏生成大量用户数据。根据视频游戏和视频游戏平台(视频游戏控制台),可存在为给定用户针对视频游戏生成许多不同类型的用户数据。例如,在一些实施方案中,用户数据包括:用户的保存数据、用户的下载数据、用户的记录数据(其为用户在缓冲区中或最近玩的时间量内游戏进行的记录)、用户的奖品数据、用户的配置文件数据、用户的视频数据、用户的音频数据、用户的暂停和恢复数据(其捕获在特定时间的在线游戏系统的整个状态)、以及针对用户的其他类型的数据。保存数据是用户数据的一部分并且通常是用于视频游戏的数据图像,其包括有关在特定保存时间的游戏内的游戏状态和用户状态的所有数据。由于视频游戏是由用户玩的,因此可存在针对用户创建的许多保存数据图像。例如,在一些实施方案中,用户的保存数据在游戏进行期间的特定点处(诸如当从一个级别过渡到另一个级别时、或者当从一个场景改变到另一个场景时、以及在触发保存数据生成的许多其他时间/实例中)生成。而且,在一些实施方案中,保存数据的生成通过用户的菜单选择来触发。用户的保存数据磁盘映像大小为几兆字节(mb)。
30.在一些实施方案中,不同类型的用户数据可能具有不同类型的输入/输出(i/o)要求,例如,不同类型的数据访问性能要求。因此,在一些实施方案中,不同类型的用户数据可存储在满足不同类型i/o要求的不同云存储系统或不同云存储服务器上。而且,在一些实施方案中,某数据的可靠性不如其他数据的可靠性重要。这个意义上的数据可靠性是指确保的数据的保护和可用性。例如,用户的保存数据的可靠性极其重要。但是,大小巨大的挂起和恢复数据的可靠性可能并不那么关键。因此,丢失用户的挂起和恢复数据对用户的损害可能不如丢失用户的保存数据对用户的损害。而且,在一些实施方案中,一些类型的用户数据具有与其相关联的有限寿命。例如,系统更新或视频游戏更新可能导致一些类型的用户数据不再与用户玩视频游戏兼容或相关。而且,在一些实施方案中,不同类型的数据可具有不同的加载定时要求。例如,当用户登录系统时,可能需要立即将系统数据和/或用户配置文件数据从云存储服务器109加载到管理服务器105-1至105-x中。并且,当特定游戏开始时,其他数据可从云存储服务器109加载到管理服务器105-1至105-x中。考虑到各种类型的用户数据和系统数据在i/o需求、可靠性、寿命和加载定时中的可能变型,存储用户数据和系统数据的云存储服务器可存在不同性能层级和不同可靠性层级。
31.控制路径api提供有关视频游戏将要访问什么数据的信息。例如,如果视频游戏要从特定保存数据磁盘映像中的特定文件读取数据,则视频游戏必须首先通过“挂载”api调用挂载特定保存数据磁盘映像,并且然后通过“打开”api调用打开所挂载的保存数据磁盘映像内的特定文件。在这种情况下,由视频游戏调用“挂载”api和/或“打开”api提供视频游戏将要访问特定保存数据磁盘映像中的数据的信息。在一些实施方案中,从在云游戏服务
器103-1至103-n上执行的视频游戏进行的控制路径api调用获得的信息被用于触发来自较慢的基于hdd的云存储服务器109的与控制路径api调用相关联的数据的提前检索,并且将检索到的数据存储在管理服务器105-1至105-x内的高速存储器中。然后,通过访问在管理服务器105-1至105-x内的高速存储器内的数据,将以高速完成针对所检索数据的由视频游戏进行的任何后续数据路径api调用。然后,当用管理服务器105-1至105-x内的高速存储器中的数据完成视频游戏时(诸如当做完“解除挂载”控制路径api调用时),管理服务器105-1至105-x内的高速存储器中的数据被刷新回到较慢的基于hdd的云存储服务器109,其中刷新意指管理服务器105-1至105-x内的高速存储器中的数据被复制到较慢的基于hdd的云存储服务器109,并且然后从管理服务器105-1至105-x内的高速存储器中移除。根据实施方式,“写入”api调用可能已经将数据写回到云存储服务器109。这可以以对正在执行的视频游戏透明的方式通过操作系统发生。“解除挂载”api调用总是强制刷新要解除挂载到云存储服务器109的数据。然而,如果数据已经作为正常操作进程通过“写入”api调用写回到云存储服务器109,则然后在进行“解除挂载”api调用时不必进行数据刷新,因为数据已经写回到云存储服务器109。
32.图2示出根据一些实施方案的以下方式的过程图:通过云游戏服务器103-1使用控制路径api调用以触发将数据从云存储服务器109中较慢数据存储装置传送到管理服务器105-1中的高速数据存储装置119,然后通过云游戏服务器103-1的数据路径api调用以访问所传送的数据。在第一步骤中,云游戏服务器103-1发出控制路径api调用以挂载特定保存数据磁盘映像(图2的示例中的保存数据2)。作为响应,管理服务器105-1挂载特定保存磁盘映像。在第二步骤中,将云游戏服务器103-1至103-n请求挂载的特定保存磁盘映像(例如,保存数据2)从云存储服务器109复制到管理服务器105-1中的高速数据存储装置119。在一些实施方案中,高速数据存储装置119是计算机存储器装置,诸如ram或存储类存储器、或者基本上等效于ram和/或存储类存储器的另一类型的计算机存储器。在一些实施方案中,高速数据存储装置119是nvme级存储装置诸如ssd。在第三步骤中,云游戏服务器103-1发出一个或多个数据路径api调用以读取和/或写入来自/到特定保存磁盘映像的数据。然而,不是让云存储服务器109为来自云游戏服务器103-1的数据路径api调用提供服务,而是由当前在它的高速数据存储119中具有特定保存磁盘映像的管理服务器105-1为数据路径api调用提供服务。
33.在第四步骤中,云游戏服务器103-1发出控制路径api调用以解除挂载特定保存数据磁盘映像。响应于解除挂载api调用,存储系统执行第五步骤,其中管理服务器105-1操作以将当前在它的高速数据存储装置119中的特定保存磁盘映像的数据复制回到云存储服务器109。在一些实施方案中,如果写入到高速数据存储装置119中的特定保存磁盘映像的数据在正常操作进程期间被复制回到云存储服务器109(例如,当它被写入到高速数据存储装置119中时),在由云游戏服务器103-1发出解除挂载api调用时,可能不存在需要复制回到云存储服务器109的任何数据。应当理解,响应于云游戏服务器103-1的解除挂载api调用,管理服务器105-1操作以确保特定保存磁盘映像的当前数据(如发出解除挂载api调用时存储在管理服务器105-1的高速数据存储装置119中)也存储在云存储服务器109中。一旦管理服务器105-1确认特定保存磁盘映像的所有当前数据正确存储在云存储服务器109中,管理服务器105-1根据解除挂载api调用操作以解除挂载特定保存磁盘映像。
34.在一些实施方案中,当用户正在玩视频游戏时,用户的游戏数据被维护在管理服务器105-1至105-x中。管理服务器105-1至105-x应具有足够的存储容量以处理用户玩视频游戏期间的存储需求。在一些实施方案中,管理服务器105-1至105-x操作以储备针对每个活跃用户的存储量。在管理服务器105-1至105-x上的存储压力/过载的情况下,作为一种选项,管理服务器105-1至105-x可指示存储访问api调用由云存储服务器109处理而不是由管理服务器105-1至105-x处理。作为另一种选项,管理服务器105-1至105-x可将一些数据刷新回到云存储服务器109以减轻管理服务器105-1至105-x上的存储压力/过载。在这种情况下,管理服务器105-1至105-x将全部数据或部分数据刷新回到云存储服务器109。在一些实施方案中,操作以将数据从管理服务器105-1至105-x刷新回到云存储服务器109以便减轻管理服务器105-1至105-x上的存储压力/过载将基于当前具有存储在管理服务器105-1至105-x中的数据的所有用户的当前存储需求和使用模式的分析。在一些实施方案中,如果管理服务器105-1至105-x将数据刷新回到云存储服务器109以减轻存储压力/过载,则管理服务器105-1至105-x将从云存储服务器109复制回一些数据,以期望其被在由管理服务器105-1至105-x提供服务的一个或多个云游戏服务器103-1至103-n上执行的一个或多个视频游戏需要。在一些实施方案中,当视频游戏将数据写入管理服务器105-1至105-x时,所述数据将维护在管理服务器105-1至105-x中以供视频游戏访问,即使所述数据在某个时间被复制到云存储服务器109。在一些实施方案中,存在用于在给定时间对存储在管理服务器105-1至105-x中的数据进行分类而实施的各种算法,以便在管理服务器105-1至105-x上存在压力/过载的情况下优先将数据刷新回到云存储服务器109。而且,在一些实施方案中,在管理服务器105-1至105-x上的存储压力/过载的情况下,作为另一种选项,管理服务器105-1至105-x可通知云游戏服务器103-1至103-n和/或或视频游戏存储压力/过载情况,并且让云游戏服务器103-1至103-n和/或或视频游戏触发将数据刷新回到云存储服务器109以缓解存储压力/过载情况。此选项可用于当管理服务器105-1至105-x操作以将数据刷新回到云存储服务器109时,通过阻止云游戏服务器103-1至103-n和/或或视频游戏进行任何数据更新来防止数据丢失。
35.在一些实施方案中,图2的过程在用户开始在线游戏会话时可能特别有益。当用户启动在线视频游戏时,云游戏服务器103-1至103-n必须从存储服务器107加载在线视频游戏的可执行代码。而且,云游戏服务器103-1至103-n可能必须加载其他数据诸如音频数据和/或织构日等其他数据以启动视频游戏。云游戏服务器103-1至103-n加载此数据并且将视频游戏执行到游戏菜单展示状态耗费一些时间诸如大约5秒。这时间可用于将用户的用户数据从云存储服务器109加载到管理服务器105-1至105-x中。例如,在视频游戏启动的这时间可用于从云存储服务器109向管理服务器105-1至105-x加载对应于用户在视频游戏中的最后保存点的用户的用户数据。然后,当视频游戏展示诸如新游戏或加载游戏的游戏菜单选项时,用户在视频游戏中的最后保存点的用户的用户数据已经存储在管理服务器105-1至105-x的高速数据存储装置119中,并且准备好在用户选择从最后保存点继续玩视频游戏的情况下由云游戏服务器103-1至103-n立即快速访问。然后,当用户选择加载之前保存的游戏时,打开api调用使得在云游戏服务器103-1至103-n上执行的视频游戏打开用户的先前保存数据磁盘映像中的保存数据文件。此打开api调用由管理服务器105-1至105-x处理,使得请求的保存数据文件从管理服务器105-1至105-x中的高速数据存储装置119读取,
而不是从较慢的云存储服务器109读取。应当理解,通过从管理服务器105-1至105-x中的高速数据存储装置119读取用户的保存数据文件,用户能够更快地开始玩视频游戏。在云游戏服务器103-1至103-n上执行视频游戏期间,视频游戏可发出另外的数据存储访问api调用,其触发将另外的数据从云存储服务器109复制到管理服务器105-1至105-x中的高速数据存储装置119,使得视频游戏请求的数据可从管理服务器105-1至105-x中的高速数据存储装置119高速访问。
36.在一些实施方案中,云游戏服务器103-1至103-n维护用户数据存储在云存储服务器109中的何处的数据库。在一些实施方案中,管理服务器105-1至105-x将云游戏服务器103-1至103-n从云存储服务器109屏蔽,使得云游戏系统103-1至103-n不需要跟踪数据存储在云存储服务器109中的何处。在一些实施方案中,管理服务器105-1至105-x维护包括指示各种数据存储在云存储服务器109中何处的信息的存储跟踪数据库。当管理服务器105-1至105-x通过数据存储访问api调用从云游戏服务器103-1至103-n获得对特定类型的用户数据的请求时,管理服务器105-1至105-x操作以查询存储跟踪数据库以确定所述请求数据位于的云存储服务器109的身份,以及所述请求数据位于所识别的云存储服务器109中的何处。然后,管理服务器105-1至105-x向所识别的云存储服务器109发送对数据的请求。在一些实施方案中,存储跟踪数据库存储在云存储服务器109上,并且加载到管理服务器105-1至105-x的高速数据存储装置119中,其中存储跟踪数据库被访问和查询。
37.在一些实施方案中,查询管理服务器105-1至105-x上的存储跟踪数据库以确定哪些用户数据文件需要在其他数据中心更新,以便维持多个数据中心中的用户数据的当前冗余和同步,因为用户正在行进和/或出于数据备份目的、和/或出于某个其他原因。而且,在一些实施方案中,用户将在本地游戏控制台127上玩视频游戏,而不是在云游戏服务器103-1至103-n上。在这些实施方案中,当本地游戏控制台127需要通过管理服务器105-1至105-x访问存储在云存储服务器109上的数据时,使用管理系统105-1至105-x上的存储跟踪数据库。而且,在一些实施方案中,管理服务器105-1至105-x上的存储跟踪数据库用于实现用户在本地游戏控制台127上的视频游戏的本地进行与用户在云游戏服务器103-1至103-n上的视频游戏的云游戏进行的同步。
38.在一些实施方案中,本地游戏控制台127配备有ssd,其通过向其写入数据而损耗。出于知道这一点,视频游戏开发者对视频游戏进行编程来以考虑ssd有限寿命的方式指导存储操作,这对应于ssd内的存储器单元可承受的有限数量的编程/写入周期。而且,考虑到向ssd写入少量数据特别成问题,视频游戏开发者对视频游戏进行编程。因此,对于许多视频游戏,配备ssd的本地游戏控制台127中的闪存存储器不被允许将小块数据写入ssd,并且反而必须保留数据直到积累足够的数据以写入更大的数据块到ssd。为了减少到ssd的写入/程序周期的量,视频游戏被编程为使用“事务”进行存储访问。使用事务进行存储访问还有利于降低数据损坏的风险等。使用事务进行存储访问背后的想法是,视频游戏仍然使用posix api调用诸如读取、写入等,但是写入的任何数据仅存储在ram中直到事务完成,此时视频游戏调用“提交”api以触发将存储在ram中的数据刷新到ssd中。解除挂载api是一种“隐式提交”。因此,在使用事务进行存储访问的配备ssd的本地游戏控制台127中的数据访问流程如下:1)(任选,根据需要)创建保存数据磁盘映像,2)创建事务资源,3)挂载保存数据磁盘映像,4)打开文件,5)读取和/或写入来自/到文件的数据(仅写入到ram),6)关闭文
件,7)提交数据,8)移除事务资源,以及9)解除挂载保存数据磁盘映像。假定云游戏系统可执行在配备ssd的本地游戏控制台127上执行的相同视频游戏,云游戏服务器103-1至103-n、管理服务器105-1至105-x、以及云存储服务器109被共同配置来处理用于存储访问的事务的使用。
39.在一些实施方案中,事务数据缓冲区可由视频游戏或云游戏系统103-1至103-n提供。在一些实施方案中,事务数据缓冲区在ram中。在一些实施方案中,云游戏系统103-1至103-n让视频游戏提供事务缓冲区,因为事务缓冲区的大小较小。而且,通过让视频游戏提供事务缓冲区,视频游戏意识到事务缓冲区的容量有限。在一些实施方案中,当视频游戏使用标准数据路径“写入api”写入过多数据时,写入操作将失败,其中没有足够空间来完成写入操作的错误。
40.在一些实施方案中,当云游戏服务器103-1至103-n调用提交api时,云游戏服务器103-1至103-n允许管理服务器105-1至105-x也将其缓冲区改变提交回到云存储服务器109。在一些实施方案中,如果提交api调用是模块化api调用(默认情况下或通过设置标记),则提交api调用使视频游戏等待,直到管理服务器105-1至105-x完成将数据刷新回到云存储服务器109。否则,在管理服务器105-1至105-x崩溃的情况下,可能发生数据损坏。
41.在一些实施方案中,为了防止数据损坏,存在恢复到执行提交/解除挂载操作之前存在的数据状态的机制,仅仅以防在提交/解除挂载操作期间发生电源故障或其他错误情况。例如,在一些实施方案中,在提交数据之前,系统读取期望被更新的任何数据,使得在提交操作出现问题的情况下可恢复读取的数据。在一些实施方案中,管理服务器105-1至105-x被编程为在执行提交api操作之前读取期望被更新的任何数据。管理服务器105-1至105-x被编程为跟踪请求改变什么数据以及如何请求改变所述数据。而且,在一些实施方案中,云存储服务器109被配置来支持事务。在这些实施方案中,在由管理服务器105-1至105-x挂载时,云存储服务器109跟踪数据变化。然后,提交/解除挂载api调用触发数据改变的刷新。如果从管理服务器105-1至105-x到云存储服务器109的数据改变的刷新不成功,则云存储服务器109可用于恢复数据改变。
42.图3示出根据一些实施方案的云游戏服务器103-1和管理服务器105-1的一些内部部件的示例性图。云游戏服务器103-1的根复合体311具有通过pcie(外围部件快速互连)链路309连接到pcie交换机305的pcie端口315的pcie端口313。而且,管理服务器105-1的根复合体317具有通过pcie链路307连接到pcie交换机305的pcie端口319的pcie端口316。pcie交换机305包括桥接管理服务器105-1和云游戏服务器103-1的存储器地址空间的逻辑。例如,用于桥接管理服务器105-1和云游戏服务器103-1的存储器地址空间的逻辑可包括非透明桥(ntb)或特殊直接存储器访问(dma)引擎,所述ntb或dma引擎能够与管理服务器105-1和云游戏服务器103-1两者通信并且处理所需的任何存储器地址转换。在一些实施方案中,可在pcie交换机305内实现dma引擎。应当理解,云游戏服务器103-1的根复合体311和管理服务器105-1的根复合体317两者都包括pcie接口或等效接口,诸如根据例如由gen-z联盟开发的gen-z通信/互连规范定义的gen-z接口,或基本上等效于pcie接口或gen-z接口的其他未来开发的接口。
43.例如,在一些实施方案中,pcie交换机305任选地包括ntb 321。如果pcie交换机305包括ntb 321并且处于ntb模式,则ntb 321用于将由云游戏服务器103-1写入到数据i/o
(输入/输出)命令缓冲区的存储器访问命令中的物理存储器地址转换为管理服务器105-1的计算机存储器323内的可由管理服务器105-1达到的存储器地址。ntb321在功能上操作以修改pcie事务层的存储器地址,在所述事务层中,事务层包(tlp)被组装和分解。在一些实施方案中,ntb 321还操作以修改请求者标识符。如果云游戏服务器103-1诸如通过存储cpu 331生成命令缓冲区,则所述命令缓冲区最终被根复合体311包裹在tlp中。存储cpu 331操作以确保由存储cpu 331生成的命令缓冲区内的任何存储器地址的正确性。而且,在云管理服务器105-1需要将数据写回到云游戏服务器103-1的情况下,存储cpu 331操作以确保命令缓冲区内的任何存储器地址都是转换后的地址。当云游戏服务器103-1将命令缓冲区写入管理服务器105-1中的存储器地址时,ntb 321开始起作用。在这种情况下,通过ntb 321和/或通过管理服务器105-1的计算机存储器323中的输出存储器管理单元(iommu)381来转换命令缓冲区被写入到的存储器地址。iommu 381将装置可见的虚拟存储器地址映射到物理存储器地址。而且,在这种情况下,ntb 321或iommu 381不修改命令缓冲区本身的内容。
44.ntb模式使得多个根复合体能够彼此通信,即与彼此交换数据。在一些实施方案中,如果pcie交换机305连接到仅ntb装置连接到的次级pcie交换机,则次级pcie交换机不需要使用ntb,这是因为它将仅转发事务层包(tlp)。计算机存储器323表示参照图2所提及的高速数据存储装置119。在各种实施方案中,计算机存储器323可以是ram或存储类存储器,或基本上等效于ram和/或存储类存储器的另一类型的计算机存储器。ntb 321处置数据i/o命令缓冲区中的存储器地址的转换,并且将转换后的存储器地址提供给管理服务器105-1。如果pcie交换机305不使用ntb 321,则可生成写入到数据i/o命令缓冲区的存储器访问命令以包括其他元数据,诸如主机标识符或其他类型的元数据,所述其他元数据可用于确定数据i/o命令缓冲区中的存储器地址应映射到的在管理服务器105-1的计算机存储器323中的存储器地址。在pcie交换机305不使用ntb 321的一些实施方案中,可使用dma引擎来跨越pcie交换机305将包发送到正确的目的地。而且,在一些实施方案中,如果pcie交换机305不使用ntb 321并且连接到次级pcie交换机,则次级pcie交换机操作以将包转发到正确的目的地。
45.云游戏服务器103-1包括连接到内部数据总线327的至少一个cpu 325。在各种实施方案中,云游戏服务器103-1还可包括:连接到内部数据总线327的gpu 329中的一个或多个,和/或连接到内部数据总线327的存储cpu 331中的一个或多个,和/或连接到内部数据总线327的解密/加密引擎333中的一个或多个,和/或连接到内部数据总线327的解压缩/压缩引擎335中的一个或多个。内部数据总线327连接到云游戏服务器103-1的根复合体311。在各种实施方案中,gpu 329是被配置来执行用于渲染图像、动画和视频以用于在电子显示屏上显示的并行操作的处理器。而且,在一些实施方案中,gpu 329的并行处理能力可用于需要重复计算的非图形应用中的矢量处理。
46.在各种实施方案中,存储cpu 331被配置来处理对存储命令的请求并且将存储分派在特定类型的存储介质上。在各种实施方案中,存储cpu 331和主cpu 325可具有相同或不同的架构。例如,在一些实施方案中,存储cpu 331可以是高级risc(精简指令集计算机)机器(arm)处理器或mips处理器,而主cpu 325是x86处理器。应当理解,在各种实施方案中,存储cpu 331可以是基本上任何类型的合适的计算机处理器,而主cpu 325可以是基本上任何类型的合适的计算机处理器。而且,在一些实施方案中,云游戏服务器103-1至103-n不是
具有主cpu 325和存储cpu 331两者,而是仅包括也处理本可由存储cpu 331执行的操作的主cpu 325。然而,出于本文描述的目的,云游戏服务器103-1至103-n被视为包括主cpu 325和存储cpu 331两者。存储cpu 331向其分派数据以进行存储的存储介质的特定类型可根据存储介质的性能能力(例如,数据读取速度和/或数据写入速度)和/或数据存储在存储介质上的形式(例如,基于文件的数据存储、基于文件夹的数据存储或基于字节的数据存储)而变化。在一些实施方案中,存储cpu 331操作以将数据分成多个数据块以放置到云游戏服务器103-1的计算机存储器337中的相应位置中,其中计算机存储器337中的各个存储位置是基于存储表而跟踪和更新的。在各种实施方案中,计算机存储器337可以是ram或存储类存储器,或基本上等效于ram和/或存储类存储器的另一类型的计算机存储器。存储cpu 331还可用以基于每秒输入/输出操作数(iops)而优化存储。在一些实施方案中,基于iops的存储优化可与可用存储介质的访问速度相关,所述可用存储介质可包括旋转存储介质、固态存储介质和/或混合存储介质。在各种实施方案中,解密/加密引擎333是被配置用于并且专用于应用密码算法来对加密的数据进行解密和对未加密的数据进行加密的处理器。在各种实施方案中,解压缩/压缩引擎335被配置用于并且专用于应用算法来将压缩数据解压缩和压缩非压缩数据。
47.在一些实施方案中,云游戏服务器103-1的计算机存储器337连接到根复合体311。在一些实施方案中,云游戏服务器103-1还包括连接到根复合体311的dma控制器339。在一些实施方案中,计算机存储器337和/或dma控制器339能够连接到内部数据总线327,如分别由线361和363所示。而且,在一些实施方案中,云游戏服务器103-1可包括通过pcie链路343连接到根复合体311的pcie端口345的nvme ssd 341中的一个或多个。而且,在一些实施方案中,云游戏服务器103-1可包括通过pcie链路349连接到根复合体311的pcie端口351的sata控制器347中的一个或多个。sata控制器347可用作在hdd 353中的一个或多个与pcie织构之间的桥。而且,在各种实施方案中,一个或多个其他支持pcie的部件装置355能够通过相应的pcie链路359连接到根复合体311的相应的pcie端口357。在各种实施方案中,其他支持pcie的部件装置355可包括一个或多个gpu、一个或多个现场可编程门阵列(fpga)、一个或多个网络适配器、一个或多个ssd、一个或多个sata/hhd以及其他装置。应当理解,通过示例的方式提供了图3所示的云游戏服务器103-1的架构。在各种实施方案中,云游戏服务器103-1可包括比图3的示例中示出的部件更多或更少的部件。
48.管理服务器105-1包括连接到内部数据总线367的至少一个cpu365。在各种实施方案中,管理服务器105-1还可包括连接到内部数据总线367的gpu 369中的一个或多个和/或连接到内部数据总线367的网络接口卡(nic)373中的一个或多个。内部数据总线367连接到管理服务器105-1的根复合体317。管理服务器105-1还可包括连接到根复合体317的nvme ssd 371中的一个或多个。而且,在一些实施方案中,gpu 369和/或nic 373和/或其他装置可被配置来使用pcie,并且能够直接连接到根复合体317,而不是连接到内部数据总线367。
49.本文所公开的系统和方法利用连接云游戏服务器103-1与云管理服务器105-1的pcie织构以允许云游戏服务器103-1上的cpu 325和/或存储cpu 331和/或dma控制器339(和/或其他装置)指示在管理服务器105-1的计算机存储器323与云游戏服务器103-1的计算机存储器337之间进行消息发送和数据复制,反之亦然。使用pcie织构连接云游戏服务器103-1和管理服务器105-1并且在配置pcie交换机305之后的结果是跨云游戏服务器103-1
和管理服务器105-1的“共享存储器”机制。云游戏服务器103-1可以非常少的开销(例如,如箭头379所指示在绕过管理服务器105-1的cpu 365的情况下)直接访问管理服务器105-1内的计算机存储器323的指定部分377。云游戏服务器103-1对管理服务器105-1内的计算机存储器323的直接访问可由云游戏服务器103-1内的能够管理数据存储请求并且通过根复合体311连接到pcie交换机305的任何装置(诸如cpu 325和/或存储cpu 331和/或dma控制器339)指示。然而,应当理解,云游戏服务器103-1的cpu 325来管理数据存储请求可能不是最高效的使用。因此,存储cpu 331和/或dma控制器339可主要用于通过生成写入到管理服务器105-1的计算机存储器323中的数据i/o命令缓冲区的存储器访问命令,来管理云游戏服务器103-1的数据存储请求。
50.除提供“共享存储器”机制之外,通过pcie交换机305将云游戏服务器103-1连接到管理服务器105-1提供通过将消息直接写入到云游戏服务器103-1的计算机存储器337中或管理服务器105-1的计算机存储器323中或pcie交换机305内的某一存储器中,将“消息”从云游戏服务器103-1发送到管理服务器105-1,且反之亦然。在云游戏服务器103-1与管理服务器105-1之间的消息发送可用于促进执行写入到数据i/o命令缓冲区的存储器访问命令。例如,如果云游戏服务器103-1期望管理服务器105-1执行导致某一请求数据从数据存储装置中检索并且存储在存在于云游戏服务器103-1与管理服务器105-1之间的共享存储器中的某处的某一存储器访问命令,则可由管理服务器105-1向由云游戏服务器103-1监控的存储器位置写入消息,以通知云游戏服务器103-1何时以及何处可由管理服务器105-1使用请求数据。
51.在一些实施方案中,可由云游戏服务器103-1或管理服务器105-1将消息发送到通过pcie交换机305暴露的一个或多个门铃寄存器375。在一些实施方案中,由云游戏服务器103-1写入门铃寄存器375将导致在管理服务器105-1上触发中断,这继而导致管理服务器105-1处理中断。在一些实施方案中,管理服务器105-1对中断的处理导致管理服务器105-1从存在于云游戏服务器103-1与管理服务器105-1之间的共享存储器中的指定位置读取消息(一些数据)。类似地,管理服务器105-1写入门铃寄存器375将导致在云游戏服务器103-1上触发中断,这继而导致云游戏服务器103-1处理中断。在一些实施方案中,云游戏服务器103-1对中断的处理导致云游戏服务器103-1从存在于云游戏服务器103-1与管理服务器105-1之间的共享存储器中的指定位置读取消息(一些数据)。
52.消息的内容取决于使用情况。在一些使用情况下,消息可传达从存储装置读取一定量数据并且将读取的数据存储在存在于云游戏服务器103-1与管理服务器105-1之间的共享存储器中的请求。然后,在消息中的请求完成之后,可发送另一消息以通知完成。例如,如果云游戏服务器103-1发送请求管理服务器105-1从数据存储装置读取一些特定数据的第一消息,则管理服务器105-1将执行第一消息中的请求,并且然后发送通知云游戏服务器103-1完成第一消息请求并且其中特定请求的数据存储在存在于云游戏服务器103-1与管理服务器105-1之间的共享存储器中的第二消息。
53.云游戏服务器103-1和管理服务器105-1是各自具有自己的存储器映射的独立系统。存储器映射保存计算机存储器和系统中的其他装置的存储器地址。pcie交换机305占据了云游戏服务器103-1和管理服务器105-1的每个存储器映射中的存储器地址空间的用户可配置的区域。在各种实施方案中,根据pcie交换机305的配置,云游戏服务器103-1的计算
机存储器337中的物理存储器地址可映射到管理服务器105-1的计算机存储器323中的相同或不同的物理存储器地址。
54.在一些实施方案中,出于安全起见和/或其他原因,云管理服务器105-1可被配置来诸如通过实现将装置可见的虚拟存储器地址映射到物理存储器地址的iommu 381来隐藏其实际的物理存储器地址。iommu 381被配置来将装置存储器地址映射到物理存储器地址,而常规存储器管理单元(mmu)被配置来将虚拟存储器地址映射到物理存储器地址。对于常规mmu,虚拟存储器地址是连续的,因此应用能够看到存储器块(例如,64mb的存储器块)并且在所述存储器块上操作,但实际上mmu将连续的虚拟存储器地址映射到多个分开的物理存储器地址,并且向应用隐藏存储器映射。类似于常规mmu,iommu 381将对云游戏服务器103-1可见的虚拟存储器地址映射到计算机存储器323中的多个分开的物理存储器地址,并且向管理服务器105-1隐藏存储器映射。以这种方式,使用iommu 381允许云游戏服务器103-1看到管理服务器105-1上存在的连续虚拟存储器地址块,同时隐藏了连续虚拟存储器地址块实际上如何映射到跨管理服务器105-1的计算机存储器323的不同物理存储器地址的复杂性。在一些实施方案中,iommu 381被包括在管理服务器105-1的根复合体317中。在一些实施方案中,云游戏服务器103-1的根复合体311还可包括iommu 383。
55.在图3的配置中,iommu 381可允许云游戏服务器103-1将特定存储器地址(装置地址)视为与管理服务器105-1的计算机存储器323中的特定物理存储器地址具有一一对应关系,但实际上iommu381可将由云游戏服务器103-1所查看的特定存储器地址重新映射到管理服务器105-1的计算机存储器323中的不同物理存储器地址。而且,在一些实施方案中,iommu 381可用于阻止访问管理服务器105-1的计算机存储器323中的未被授权由云游戏服务器103-1访问的一个或多个指定物理存储器区域。而且,因为iommu 381对云游戏服务器103-1有效地隐藏管理服务器105-1的计算机存储器323中的存储器碎片,所以使用iommu 381可简化云游戏服务器103-1中的dma传送操作。例如,如果iommu 381未用于将计算机存储器323中的碎片化物理存储器地址作为连续的虚拟存储器地址块展示给云游戏服务器103-1,则云游戏服务器103-1将需要执行多次dma传送操作或分散/收集事务来跨计算机存储器323中的碎片化物理存储器地址读取数据。然而,通过使用iommu 381来将计算机存储器323中的碎片化物理存储器地址作为连续的虚拟存储器地址块展示给云游戏服务器103-1,云游戏服务器103-1能够执行单次dma传送操作来跨计算机存储器323中的碎片化物理存储器地址读取数据。
56.在一些实施方案中,管理服务器105-1通过nic 373连接到云存储系统390,如连接392所指出的那样。云存储系统390包括一个或多个云存储服务器109-1至109-y。每个云存储服务器109-1至109-y包括相应的nic 387-1至387-y。而且,每个云存储服务器109-1至109-y分别包括一个或多个hdd 389-1至389-y。而且,在一些实施方案中,云存储服务器109-1至109-y中的一些包括一个或多个nvme ssd或其他类型的数据存储装置。在一些实施方案中,云存储系统390被配置和操作以将数据存储分布在多个物理存储介质(hdd)之间,并且利用数据去重方法来优化多个物理存储介质的使用。云存储系统390可访问/控制的多个物理存储介质可位于通过高速互连以及高速交换机互连的多个不同的存储盒中。在一些实施方案中,包括云存储系统390可访问/控制的多个物理存储介质的多个不同的存储盒可安装在数据中心内的单独位置,或者安装在地理上分布的多个数据中心中。在一些实施方
案中,可使用高速缓存系统在多个数据中心之间管理数据存储,使得可将特定请求实体(例如,由用户用来玩云游戏应用的特定远程客户端装置)利用或需要的数据移动到最靠近所述请求实体或为所述请求实体提供可接受的服务质量的特定数据中心。在一些实施方案中,高速缓存系统可利用被定义为将用户数据和/或游戏数据迁移到特定数据中心的迁移算法。
57.对游戏数据的访问通常是只读的。然而,对保存数据的访问包括读取和写入操作两者。对用户数据的访问可由管理服务器105-1至105-x管理。管理服务器105-1至105-x挂载从云存储服务器109-1至109-y请求的保存数据磁盘映像,并且实现与云存储服务器109-1至109-y的数据通信所需的协议。在各种实施方案中,管理服务器105-1至105-x与云存储服务器109-1至109-y之间的数据通信可采用各种数据通信协议,诸如基于tcp的数据通信协议例如ceph、nfs、amazon s3(基于http)等,或某一其他类型的对象、文件或块存储协议。如上所述,在一些实施方案中,云游戏服务器103-1至103-n使用快速pci与管理服务器105-1至105-x进行数据通信。在一些实施方案中,云游戏服务器103-1至103-n经由连接到nic 373的nic 393通过网络与管理服务器105-1至105-x进行数据通信,如连接394所指出的那样。云游戏服务器103-1至103-n与管理服务器105-1至105-x之间的数据通信根据诸如以太网(tcp/ip)、rdma、infiniband等的各种数据通信协议中的一种或多种进行。
58.保存数据(和其他用户数据)所遵循的数据通信路径有点类似于游戏数据。在两种情况下,云游戏服务器103-1至103-n的cpu 325生成对应于不同控制路径api和数据路径api的命令缓冲区。命令缓冲区由云游戏服务器103-1至103-n的存储cpu 331处理。存储cpu 331将命令缓冲区的传输引导至管理服务器105-1至105-x,所述管理服务器将具有来自云存储服务器109-1至109-y中的一个或多个挂载的云存储。在一些实施方案中,控制路径api可通过诸如以太网、rdma、infiniband等的网络连接传输。然而,性能关键命令缓冲区诸如那些包括数据路径api的命令缓冲区将通过快速数据连接(诸如通过pcie织构)传输到管理服务器105-1至105-x。管理服务器105-1至105-x被编程为操作cpu 365以接收和处理从云游戏服务器103-1至103-n接收的命令缓冲区。根据从云游戏服务器103-1至103-n接收的命令缓冲区,管理服务器105-1至105-x操作以使用诸如以太网、ceph、nfs、s3等的网络协议根据需要从云存储系统390检索数据。例如,在一些实施方案中,“mountsavediskimage”控制路径api触发将数据从给定云存储服务器109-1至109-y中的hdd389-1至389-y传送到在管理服务器105-1至105-x内的ram 323或nvme ssd 371。在一些实施方案中,读取/写入数据路径api访问或修改管理服务器105-1至105-x的ram 323中的数据。将数据写回到云存储系统390的过程取决于是否使用事务。在不使用事务的情况下,写入/关闭/解除挂载api将数据从管理服务器105-1至105-x刷新回到云存储系统390。在使用事务的情况下,提交api将数据中的任何改变从管理服务器105-1至105-x刷新回到云存储系统390。
59.本文公开云游戏系统100的各种实施方案,包括云游戏服务器103(其中云游戏服务器103是云游戏服务器103-1至103-n中的任一个)、云存储服务器109(其中云存储服务器109是云存储服务器109-1至109-y中的任一个)和管理服务器105(其中管理服务器105是管理服务器105-1至105-x中的任一个)。云游戏服务器103被配置来根据从用户121的控制器装置125接收的输入来执行视频游戏。云游戏服务器103被配置来将反映用户121玩视频游戏的视频流直接传输到用户121的本地计算系统120。云存储服务器109与云游戏服务器103
进行数据通信。云存储服务器109包括用于存储针对用户121的用户数据的数据存储装置389(其中数据存储装置389是对应的云存储服务器109-1至109-中的数据存储装置389-1至389-y)。用户数据包括记录用户121玩视频游戏的数据。管理服务器105与云游戏服务器103和云存储服务器109两者进行数据通信。管理服务器105包括以比在云存储服务器109内的数据存储装置更高的数据速率和更低的延时操作的高速数据存储装置诸如nvme ssd 371。在一些实施方案中,云存储服务器109内的数据存储装置为hdd,并且高速存储装置为nvme ssd。管理服务器105被编程为接收由在云游戏服务器103上执行的视频游戏发出的数据访问请求。数据访问请求识别存储在云存储服务器109内的数据存储装置389中的请求数据。管理服务器105被编程为将请求数据从云存储服务器109内的数据存储装置389复制到管理服务器105内的高速数据存储装置371中。管理服务器105也被编程为使用高速数据存储装置371来响应数据访问请求,来代替让云存储服务器109来响应数据访问请求。
60.应当理解,管理服务器105-1至105-x与云存储服务器109之间存在存储性能差异,其中管理服务器105-1至105-x的nvme ssd操作以提供数据给云游戏服务器103-1至103-n比云存储服务器109的hdd快得多。管理服务器105-1至105-x与云存储服务器109之间的网络性能也存在差异,其中管理服务器105-1至105-x与云存储服务器109相比,向和从云游戏服务器103-1至103-n提供更高的网络数据传输速率(更高的网络带宽)。通过使用管理服务器105-1至105-x作为数据高速缓存,可限制与云存储服务器109的网络通信的数据加载。使用管理服务器105-1至105-x作为数据高速缓存确保可以非常高的性能完成从云存储服务器109的读取操作。在一些实施方案中,在没有让管理服务器105-1至105-x提供高速缓存的情况下,与云存储服务器109的有效数据通信带宽可能显著降低。
61.在一些实施方案中,云存储服务器109位于与云游戏服务器103-1至103-n不同的位置中。在一些实施方案中,多个云游戏服务器103-1至103-n被放置在互联网服务提供商(isp)处。由于isp免费提供电源和互联网连接,因此出于可操作原因,这更便宜。在此类实施方案中,isp的数据中心与云游戏数据中心之间的网络带宽应该很好,但不一定足够好以让云游戏服务器103-1至103-n将数据直接写入云存储服务器109中的nvme ssd驱动器。因此,在这些实施方案中,由管理服务器105-1至105-x提供的数据高速缓存功能仍然是有益的,即使云存储服务器109实现比hdd更快的nvme ssd驱动器。
62.在一些实施方案中,管理服务器105被编程为使用第一网络存储协议与云存储服务器109进行双向数据通信,并且管理服务器105被编程为使用不同于第一网络存储协议的第二网络存储协议与云游戏服务器103进行双向数据通信。在一些实施方案中,第二网络存储协议是pcie。
63.在一些实施方案中,由在云游戏服务器103上执行的视频游戏发出的数据访问请求是挂载特定数据分组的请求。管理服务器105被编程为通过使用高速存储装置371来响应由在云游戏服务器103上执行的视频游戏发出的对特定数据分组的后续数据访问请求,来代替让云存储服务器109响应后续数据访问请求。在一些实施方案中,特定数据分组是数据对象、数据文件或数据块。在一些实施方案中,特定数据分组是视频游戏的保存数据磁盘映像,其包括用户玩视频游戏的保存数据。
64.在一些实施方案中,由在云游戏服务器103上执行的视频游戏发出的后续数据访问请求是读取api调用或写入api调用或解除挂载api调用或提交api调用。在一些实施方案
中,管理服务器105被编程为通过将数据写入管理服务器105内的高速存储装置371内的特定数据分组来响应写入api调用。在一些实施方案中,管理服务器105被编程为通过将数据写入管理服务器105内的高速存储装置371内的特定数据分组和在云存储服务器109内的数据存储装置389中的特定数据分组两者来响应写入api调用。在一些实施方案中,管理服务器105被编程为通过从管理服务器105内的高速存储装置371内的特定数据分组读取数据来响应读取api调用。在一些实施方案中,管理服务器105被编程为通过确保当前在管理服务器105内的高速存储装置371内的特定数据分组中的所有数据当前也存在于云存储服务器109内的数据存储装置389中的特定数据分组中来响应解除挂载api调用和提交api调用。
65.图4示出根据一些实施方案的用于操作云游戏系统100的方法的流程图。所述方法包括用于根据从用户121的控制器装置125接收的输入在云游戏服务器103上执行视频游戏的操作401。所述方法还包括用于操作云游戏服务器103以将反映用户121玩视频游戏的视频流直接传输到用户121的本地计算系统120的操作403。所述方法还包括用于将针对用户121的用户数据存储在云存储服务器109中的操作405。用户数据包括记录用户121玩视频游戏的数据。所述方法还包括用于在管理服务器105处接收数据访问请求的操作407。所述数据访问请求由在所述云游戏服务器103上执行的所述视频游戏发出。数据访问请求识别存储在云存储服务器109内的数据存储装置389中的请求数据。所述方法还包括用于将请求数据从云存储服务器109内的数据存储装置389复制到管理服务器105内的高速数据存储装置371中的操作409。高速数据存储装置371以比在云存储服务器109内的数据存储装置389更高的数据速率和更低的延时操作。在一些实施方案中,云存储服务器109内的数据存储装置389是hdd,并且管理服务器105内的高速存储装置371是nvme ssd。所述方法还包括用于使用管理服务器105中的高速数据存储装置371以响应数据访问请求来代替让云存储服务器109响应数据访问请求的操作411。
66.在一些实施方案中,所述方法包括:使用第一网络存储协议在管理服务器105与云存储服务器109之间进行双向数据通信,以及使用第二网络存储协议在管理服务器105与云游戏服务器103之间进行双向数据通信,其中第二网络存储协议不同于第一网络存储协议。在一些实施方案中,第二网络存储协议是pcie。
67.在一些实施方案中,数据访问请求是挂载特定数据分组的请求。在一些实施方案中,特定数据分组是数据对象、数据文件或数据块。在一些实施方案中,特定数据分组是视频游戏的保存数据磁盘映像,其包括用户玩视频游戏的保存数据。所述方法还包括在管理服务器105处接收后续数据访问请求,其中后续数据访问请求由在云游戏服务器103上执行的视频游戏发出,并且其中后续数据访问请求针对特定数据分组。所述方法还包括使用管理服务器105中的高速数据存储装置371来响应后续数据访问请求,来代替让云存储服务器109响应后续数据访问请求。
68.在一些实施方案中,后续数据访问请求是读取api调用或写入api调用或解除挂载api调用或提交api调用。在一些实施方案中,所述方法包括操作管理服务器105以通过将数据写入管理服务器105内的高速存储装置371内的特定数据分组来响应写入api调用。在一些实施方案中,所述方法包括操作管理服务器105以通过将数据写入管理服务器105内的高速存储装置371内的特定数据分组和在云存储服务器109内的数据存储装置389中的特定数据分组两者来响应写入api调用。在一些实施方案中,所述方法包括操作管理服务器105以
通过从管理服务器105内的高速存储装置371内的特定数据分组读取数据来响应读取api调用。在一些实施方案中,所述方法包括操作管理服务器105以通过确保当前在管理服务器105内的高速存储装置371内的特定数据分组中的所有数据当前也存在于云存储服务器109内的数据存储装置389中的特定数据分组中来响应解除挂载api调用和提交api调用。
69.在一些实施方案中,管理服务器105-1至105-x的cpu 365被配置来实施图4的方法,包括与图4的方法相关联的任何任选和/或辅助操作。在一些实施方案中,用于执行图4的方法的操作的计算机可执行程序指令存储在管理服务器105-1至105-x的计算机存储器323中。
70.如本文所述,向用户提供访问以在云游戏系统100内玩在线视频游戏。可在广阔的地理区域上提供对云游戏系统100的访问。云计算是一种计算方式,其中动态可扩展和通常虚拟化的资源通过互联网作为服务提供。用户不需要成为支持他们的计算“云”中的技术基础设施方面的专家。云计算可分为不同的服务,诸如基础设施即服务(iaas)、平台即服务(paas)和软件即服务(saas)。云计算服务通常提供从web浏览器访问的常用在线应用诸如视频游戏,而软件和数据则存储在云中的服务器计算系统上。基于在计算机网络图中如何描绘互联网,术语云被用作用于互联网的隐喻,并且是用于它所隐藏的复杂基础设施的抽象概念。
71.在一些实施方案中,在线视频游戏可由分布式游戏引擎执行。在这些实施方案中,分布式游戏引擎可以在诸如云游戏服务器103-1到103-n的多个处理实体上执行,使得每个处理实体执行在线视频游戏在其上运行的给定游戏引擎的功能段。游戏引擎将每个处理实体仅仅视为计算节点。游戏引擎通常执行一系列功能多样的操作,以执行视频游戏应用以及用户体验的另外服务。例如,游戏引擎实现游戏逻辑,执行游戏计算、物理、几何变换、渲染、照明、着色、音频以及另外的游戏内或游戏相关服务。由游戏引擎执行的另外的服务可包括:例如消息收发、社交实用程序、音频通信、游戏进行重播功能、帮助功能等。虽然游戏引擎有时可在由特定服务器的管理程序虚拟化的操作系统上执行,但是在其他实施方案中,游戏引擎本身分布在多个处理实体之间,其中每个处理实体可驻留在数据中心的不同服务器单元上。在一些实施方案中,多个处理实体包括服务器单元、虚拟机和容器、以及其他类型的处理实体中的一个或多个,这取决于每个游戏引擎段的需要。例如,如果游戏引擎段负责相机变换,则可向所述特定游戏引擎段提供与图形处理单元(gpu)相关联的虚拟机,因为所述引擎段将进行大量相对简单的数学运算(例如,矩阵变换)。而且,例如,可向需要更少但更复杂的运算的其他游戏引擎段提供与一个或多个更高功率的中央处理单元(cpu)相关联的处理实体。在一些实施方案中,单个云游戏服务器103-1可为不同用户托管多个轻量级游戏(其中重量与计算资源消耗有关)。在这些实施方案中,将共享云游戏服务器103-1(包括其存储cpu 331和其他部件)。云游戏服务器103-1的这种共享可导致用于存储请求和/或负载均衡的不同级别的优先级,因为网络/pcie连接将被共享并且每个用户都应获得相当量的时间。在一些实施方案中,单个云游戏服务器103-1可托管轻量游戏和较重游戏(其中重量与计算资源消耗有关)两者。
72.通过分布游戏引擎,游戏引擎提供有不受物理服务器单元的能力约束的弹性计算性质。替代地,在需要时,向游戏引擎提供更多或更少的计算节点以满足在线视频游戏的需求。从在线视频游戏和视频游戏玩家的角度来看,跨多个计算节点分布的游戏引擎与在单
个处理实体上执行的非分布式游戏引擎没有区别,因为游戏引擎管理器或监督器分布工作负荷并且无缝地整合结果以向玩家提供在线视频游戏输出分量。
73.在一些实施方案中,用户/玩家通过客户端装置(包括处理器、显示器和输入/输出(i/o)装置)(诸如本地计算系统120)访问由云游戏系统100提供的远程服务。在各种实施方案中,客户端装置可以是个人计算机、移动电话、上网本计算机、平板计算机、个人数字助理装置或其他类型的计算装置。在一些实施方案中,在云游戏服务器103-1至103-n上执行的nic识别客户端正在使用的客户端装置的类型并且根据需要调整云游戏服务器103-1至103-n与客户端装置之间的数据通信方法。在一些实施方案中,客户端装置使用标准通信方法诸如html(超文本标记语言)或tcp/ip(传输控制协议/互联网协议)或webrtc(web实时通信),以通过互联网访问云游戏服务器103-1至103-n。
74.应当理解,可针对特定平台和特定相关联的控制器装置开发给定的在线视频游戏或游戏应用。然而,当通过如本文所提及的云游戏系统100使得这种在线视频游戏可用时,用户可使用不同的控制器装置来访问在线视频游戏。例如,可能已经为游戏控制台及其相关联的控制器开发了视频游戏,但是用户可能正在使用键盘和鼠标从个人计算机访问视频游戏的基于云的版本。在这种情况下,输入参数配置可定义可从用户的可用控制器装置(在这种情况下,键盘和鼠标)生成的输入到对于执行视频游戏的基于云的版本可接受的输入的映射。
75.在另一示例中,用户可通过平板计算装置、触摸屏智能手机或其他触摸屏驱动装置来访问云游戏系统100。在这种示例中,客户端装置和控制器装置一起集成在同一装置中,其中输入通过检测到的触摸屏输入/手势来提供。对于这种装置,输入参数配置可定义与视频游戏的游戏输入相对应的特定触摸屏输入。例如,在在线视频游戏的运行期间,按钮、方向盘和/或其他类型的输入元件可能被显示或覆盖,以指示用户可触摸以生成游戏输入的触摸屏上的位置。而且,诸如在特定方向上的划动或指定触摸动作等手势也可被检测为游戏输入。在一些实施方案中,可例如在开始玩在线视频游戏之前向用户提供指示如何通过触摸屏提供输入以便玩游戏的指南,以便使用户适应在触摸屏上操作控件。
76.在一些实施方案中,客户端装置用作用于控制器装置的连接点。更具体地,控制器装置通过无线或有线连接与客户端装置通信以将输入从控制器装置传输到客户端装置。客户端装置继而可处理这些输入,并且经由可通过诸如路由器的本地联网装置来访问的网络123将输入数据传输到云游戏服务器103-1至103-n。然而,在其他实施方案中,控制器本身可以是具有通过网络123将输入直接传达到云游戏服务器103-1至103-n的能力的联网装置,而无需首先通过客户端装置传达此类输入。例如,控制器可连接到本地联网装置(诸如前述路由器)以向云游戏服务器103-1至103-n发送数据并且从所述云游戏服务器接收数据。因此,尽管可能仍然需要客户端装置接收来自基于云的视频游戏的视频输出并且将其渲染在本地显示器上,但是通过允许控制器通过网络直接将输入数据发送到云游戏服务器103-1至103-n从而绕过客户端装置,可减少输入延时。
77.在一些实施方案中,联网控制器和客户端装置可被配置来将某些类型的输入直接从控制器发送到云游戏服务器103-1至103-n,并且通过客户端装置将其他类型的输入发送到云游戏服务器103-1至103-n。例如,检测不依赖于控制器本身以外的任何附加硬件或处理的输入可通过网络123从控制器直接发送到云游戏服务器103-1至103-n,从而绕过客户
端装置。此类输入可包括:按钮输入、操纵杆输入、嵌入式运动检测输入(例如,从加速度计、磁力计、和/或陀螺仪得出的输入)、以及其他类型的输入。然而,利用附加硬件或需要由客户端装置进行处理的输入可从控制器发送到客户端装置,并且然后从客户端装置发送到云游戏服务器103-1至103-n。这些输入可包括从游戏环境捕获的视频或捕获的音频,其在被传输到云游戏服务器103-1至103-n之前可能需要由客户端装置进行处理。另外,来自控制器的运动检测硬件的输入可由客户端装置结合所捕获的视频进行处理以检测控制器的位置和运动,随后客户端装置将所述位置和运动传达到云游戏服务器103-1至103-n。应当理解,根据各种实施方案的控制器装置还可从客户端装置或直接从云游戏服务器103-1至103-n接收数据(例如,反馈数据)。
78.本公开的实施方案可用包括手持式装置、微处理器系统、基于微处理器的或可编程的消费电子产品、小型计算机、大型计算机等的各种计算机系统配置来实践。还可在分布式计算环境中实践本公开的实施方案,在所述分布式计算环境中,通过基于有线或无线网络链接的远程处理装置执行任务。
79.尽管一些方法操作可以本文的具体顺序来描述,但是应当理解,其他内务操作可以在方法操作之间执行,和/或可调整方法操作,使得它们在稍微不同的时间发生,或者可以分布在允许以与处理相关联的各种间隔发生处理操作的系统中,只要方法操作的处理以提供方法的成功实施的方式执行即可。
80.本文所公开的一些实施方案可被制造为计算机可读介质上的计算机可读代码。计算机可读介质是能够存储数据的任何数据存储装置,所述数据此后能够被计算机系统读取。计算机可读介质的示例包括硬盘驱动器、网络附接存储装置(nas)、只读存储器、随机存取存储器、cd-rom、cd-r、cd-rw、磁带以及其他光学和非光学数据存储装置。在一些实施方案中,计算机可读介质可包括分布在网络耦合的计算机系统上的计算机可读有形介质,使得以分布式方式存储和执行计算机可读代码。
81.实施方案的前面描述已经提供用于说明和描述目的,并且不旨在详尽的或限制性的。特定实施方案的各个元件或特征通常不局限于所述特定实施方案,而是在适当的情况下是可互换的,并且可被用在选定实施方案中,即使所述实施方案没有具体示出或描述。以此方式,来自本文所公开的一个或多个实施方案的一个或多个特征可与本文所公开的一个或多个其他实施方案的一个或多个特征组合以形成未在本文中明确公开而是在本文中隐含公开的另一实施方案。此其他实施方案也可在许多方面有所变化。此类实施方案变化不应被视为脱离本文公开,并且所有此类实施方案变化和修改旨在被包括在本文所提供的公开的范围内。
82.尽管出于清楚理解的目的而略微详细地描述了前述实施方案,但将显而易见,可在所附权利要求的范围内实践某些变化和修改。因此,本文所公开的实施方案被认为是说明性的而非限制性的,并且因此不限于仅本文给出的细节,而是可以在所附权利要求的范围和等效物内进行修改。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1