首页 / 专利库 / 电脑图像 / 图形处理单元 / 传输硬件渲染的图形数据

传输硬件渲染的图形数据

阅读:1032发布:2020-07-04

专利汇可以提供传输硬件渲染的图形数据专利检索,专利查询,专利分析的服务。并且公开了用于将数据从主机计算设备传输到客户端计算设备的方法和系统。该数据可包括图形数据,该图形数据在被传输前可能需要通过诸如 图形处理单元 (GPU)的 渲染 器进行附加的处理。当被转发给专用 硬件 组件时,例如该硬件组件可将GPU与 控制器 和一个或多个网络 接口 相结合,图形数据可被渲染、封装和传输而不被提供给主机计算设备的系统 存储器 或以其它方式涉及主机计算设备。包含被渲染的图形数据的数据包可由与主机计算设备的主机处理器不同的第二处理器生成。,下面是传输硬件渲染的图形数据专利的具体信息内容。

1.一种将图形数据从主机设备传输至客户端设备的方法,包括:
通过所述主机设备的第一处理器在所述主机设备的系统存储器中存储与托管的桌面环境相关的数据;
通过所述第一处理器从所述系统存储器取回所述数据;
通过所述第一处理器确定所述数据包括图形数据;
基于确定所述数据包括图形数据,将所述图形数据传递至图形处理单元用于处理;
通过所述图形处理单元处理所述图形数据,生成处理的图形数据;以及在不将所述处理的图形数据存储在所述系统存储器中的方式下:
将所述处理的图形数据传递至与所述第一处理器不同的第二处理器,
基于所述处理的图形数据,通过所述第二处理器生成一个或多个图形数据包,以及将所述一个或多个图形数据包传输至所述客户端设备。
2.如权利要求1所述的方法,其中,将所述一个或多个图形数据包传输至所述客户端设备是基于所述第二处理器将所述一个或多个图形数据包插入数据包流中来执行的,其中所述数据包流包括一个或多个非图形数据包。
3.如权利要求2所述的方法,其中,将所述一个或多个图形数据包插入所述数据包流是基于所述第二处理器将所述一个或多个图形数据包插入两个非图形数据包之间来执行的。
4.如权利要求2所述的方法,其中,将所述一个或多个图形数据包插入所述数据包流是基于所述第二处理器确定一个或多个占位符图形数据包存在于所述数据包流中以及将所述一个或多个占位符图形数据包替换为所述一个或多个图形数据包来执行的。
5.如权利要求1所述的方法,还包括:
打开与所述客户端设备的第一连接,其中,所述第一连接被配置用于传输非图形数据;
打开与所述客户端设备的第二连接,其中,所述第二连接被配置用于传输图形数据;以及
其中,将所述一个或多个图形数据包传输至所述客户端设备通过使用所述第二连接传输所述一个或多个图形数据包来执行。
6.如权利要求5所述的方法,其中,打开与所述客户端设备的所述第一连接是由所述第一处理器执行的,并且其中,打开与所述客户端设备的所述第二连接是由所述第一处理器执行的。
7.如权利要求1所述的方法,其中,硬件组件与所述主机设备通信,
其中,所述硬件组件包括所述图形处理单元和网络接口
其中,将所述图形数据传递至所述图形处理单元用于处理被基于所述第一处理器将所述图形数据传递至所述硬件组件执行,以及
其中,将所述一个或多个图形数据包传输至所述客户端被使用所述网络接口执行。
8.如权利要求7所述的方法,其中,所述硬件组件包括所述第二处理器。
9.一种用于将图形数据从主机设备传输至客户端设备的装置,包括:
图形处理单元;
网络接口;
第一处理器;
第二处理器;以及
一个或多个存储设备,所述一个或多个存储设备存储可执行指令,当所述可执行指令被执行时,促使所述装置:
通过所述第一处理器在系统存储器中存储与托管的桌面环境相关的数据;
通过所述第一处理器从所述系统存储器取回所述数据;
通过所述第一处理器确定所述数据包括图形数据;
基于确定所述数据包括图形数据,将所述图形数据传递至所述图形处理单元用于处理;
通过所述图形处理单元处理所述图形数据,产生处理的图形数据;以及在不将所述处理的图形数据存储在所述系统存储器中的方式下:
将所述处理的图形数据传递至所述第二处理器,
基于所述处理的图形数据,通过所述第二处理器生成一个或多个图形数据包,以及使用所述网络接口将所述一个或多个图形数据包传输到所述客户端设备。
10.如权利要求9所述的装置,其中,所述图形处理单元被物理地设置在计算机硬件组件上且所述第二处理器被物理地设置在所述计算机硬件组件上。
11.如权利要求9所述的装置,其中,所述图形处理单元被物理地设置在计算机硬件组件上且所述网络接口被物理地设置在所述计算机硬件组件上。
12.如权利要求9所述的装置,其中,所述第二处理器被物理地设置在计算机硬件组件上且所述网络接口被物理地设置在所述计算机硬件组件上。
13.如权利要求9所述的装置,其中,促使所述装置将所述一个或多个图形数据包传输到所述客户端设备是通过促使所述装置传输数据包流来执行的,并且其中,当所述可执行指令被执行时促使所述装置:
截取存在于所述数据包流中的一个或多个占位符图形数据包;以及
在所述数据包流中将所述一个或多个占位符图形数据包替换为所述一个或多个图形数据包。
14.如权利要求9所述的装置,其中,促使所述装置将所述一个或多个图形数据包传输到所述客户端设备是通过促使所述装置传输数据包流来执行的,并且其中,当所述可执行指令被执行时促使所述装置:
将所述一个或多个图形数据包插入到所述数据包流中在两个非图形数据包之间。
15.如权利要求9所述的装置,其中,当所述可执行指令被执行时促使所述装置:
打开与所述客户端设备的第一连接,其中,所述第一连接被配置用于传输非图形数据;
打开与所述客户端设备的第二连接,其中,所述第二连接被配置用于传输图形数据;以及
其中,促使所述装置将所述一个或多个图形数据包传输至所述客户端设备是通过促使所述装置使用所述第二连接传输所述一个或多个图形数据包来执行的。
16.一种存储可执行指令的非暂时性计算机可读介质,其中,当所述可执行指令被执行时,促使装置:
通过所述装置的第一处理器在所述装置的系统存储器中存储与托管的桌面环境相关的数据;
通过所述第一处理器从所述系统存储器取回所述数据;
通过所述第一处理器确定所述数据包括图形数据;
基于确定所述数据包括图形数据,将所述图形数据传递至图形处理单元用于处理;
通过所述图形处理单元处理所述图形数据,生成处理的图形数据;以及在不将所述处理的图形数据存储在所述系统存储器中的方式下:
将所述处理的图形数据传递至与所述第一处理器不同的第二处理器,
基于所述处理的数据,通过所述第二处理器生成一个或多个图形数据包,以及将所述一个或多个图形数据包传输到客户端设备。
17.如权利要求16所述的非暂时性计算机可读介质,其中,促使所述装置将所述一个或多个图形数据包传输到所述客户端设备是通过促使所述装置传输数据包流来执行的,并且其中,当所述可执行指令被执行时,促使所述装置:
截取存在于所述数据包流中的一个或多个占位符图形数据包;以及
在所述数据包流中将所述一个或多个占位符图形数据包替换为所述一个或多个图形数据包。
18.如权利要求16所述的非暂时性计算机可读介质,其中,促使所述装置将所述一个或多个图形数据包传输到所述客户端设备是通过促使所述装置传输数据包流来执行的,并且其中,当所述可执行指令被执行时,促使所述装置:
将所述一个或多个图形数据包插入到所述数据包流中在两个非图形数据包之间。
19.如权利要求16所述的非暂时性计算机可读介质,其中,当所述可执行指令被执行时,促使所述装置:
打开与所述客户端设备的第一连接;
打开与所述客户端设备的第二连接;以及
其中,促使所述装置将所述一个或多个图形数据包传输到所述客户端设备是通过促使所述装置使用所述第二连接传输所述一个或多个图形数据包来执行的。
20.如权利要求19所述的非暂时性计算机可读介质,其中,当所述可执行指令被执行时,促使所述装置:
将所述第一连接配置为传输非图形数据;
将所述第二连接配置为传输图形数据。

说明书全文

传输硬件渲染的图形数据

[0001] 其它申请的交叉引用
[0002] 本申请要求2013年9月19日提交的、序列号为61/879,764的、题目为“传输硬件渲染的图形数据(Transmitting Hardware-Rendered Graphical Data)”的未决美国申请的优先权。
[0003] 领域
[0004] 本公开涉及用于托管的应用的用户界面。本公开还涉及将远程托管的应用集成到本地计算设备中的桌面环境的方法和系统。另外,本公开涉及用于将在主机计算设备上生成的数据传输到客户端计算设备的方法和系统。
[0005] 背景
[0006] 远程应用和/或远程桌面被广泛地用于消费者和企业应用中。消费者通常更喜欢远程应用或桌面,因为它们提供了本地自定义安装的安全简单的替代方案,其可证明在技术上要求高的或易受恶意软件的攻击。企业管理者通常由于其可扩展性、安全性和与平台无关的可访问性而选择远程应用或桌面而不是本地安装。
[0007] 来自远程应用和/或远程桌面的数据可要求图形数据被从远程主机设备传输到客户端设备。例如,远程主机可渲染最终在显示设备上显示的图形数据。在传输到客户端设备前,可能需要在远程主机设备上处理、渲染或以其他方式获得图形数据。例如,远程主机可包括被配置为将图形数据渲染成桌面或应用的图像的图形处理单元(GPU)设备。然而,GPU习惯上被设计和生产用于将输出引导到本地连接的显示设备,如监视器。GPU习惯上并不像在远程访问环境中的情况一样被设计为通过网络连接发送图形数据用于经由客户端设备的输出。因此,对从主机设备被传输到客户端设备的图形数据的处理、渲染和封装可能要求主机设备执行到/来自主机设备的系统存储器的大量的存储和取回操作。执行这些操作可能是时间密集型和计算密集型任务,导致系统的低效率。
[0008] 简要概述
[0009] 下文呈现本文所述的各个方面的简要概述。该概述并非广泛综述,且并不旨在标识主要或关键元素或描绘任何权利要求的范围。以下概述仅仅以简化形式呈现一些概念,作为对以下提供的更详细描述的介绍性前序。
[0010] 为克服上述现有技术中的限制,并克服在阅读和理解本说明书时将变得明显的其他限制,本文所述方面涉及更快且更有效地从诸如GPU的渲染设备传输图形数据。换句话说,存在对用于远程主机将GPU数据传输给客户端设备以供客户端设备在渲染诸如应用和桌面的远程访问服务时使用的有效方式的需求。本文描述的方面满足该需求和解决现有技术的其他不足。
[0011] 本文描述的第一方面提供用于将来自主机设备的图形数据传递给客户端设备的方法。具有系统存储器的主机设备的第一处理器可确定要传输给客户端设备的数据部分。当随后确定数据部分是图形数据时,该图形数据可被传递用于例如通过诸如硬件渲染器渲染。然后,基于被渲染的图形数据的一个或多个图形数据包可通过第二处理器生成,而不将所渲染的图形数据或图形数据包提供给系统存储器或以其他方式涉及系统存储器。然后,图形数据包可被发送给客户端设备,且也不将所渲染的图形数据或图形数据包提供给系统存储器或以其他方式涉及系统存储器。
[0012] 本文描述的第二方面提供具有图形处理单元、网络接口、处理器和存储器的装置。该处理器可接收数据部分并确定该数据部分是否是图形数据。如果是,该处理器可将图形数据传递给图形处理单元进行处理。在处理后,可基于图形数据生成一个或多个图形数据包,而不将图形数据或图形数据包提供给系统存储器或以其他方式涉及系统存储器。然后,可使用网络接口将图形数据包传输到远程设备。
[0013] 本文描述的一些方面提供诸如通过在两个非图形数据包之间将一个或多个图形数据包插入数据包流来发送图形数据包的方法。其它方面提供诸如通过打开设备之间的第一和第二连接来发送图形数据包的方法。第一连接可被配置用于传输非图形数据,而第二连接可被配置用于传输图形数据。可使用第二连接传输图形数据。其它方面提供用于截取已经存在于数据包流中的一个或多个占位符图形数据包并将一个或多个占位符图形数据包替换为一个或多个所生成的图形数据包。
[0014] 附图描述
[0015] 可通过参照下面结合附图考虑的描述获得对本文描述的方面和其优势的更充分的理解,在附图中相似的参考数字表示相似的特征,且其中:
[0016] 图1描绘的是可依据本文描述的一个或多个方面使用的说明性计算机系统结构。
[0017] 图2描绘的是可依据本文描述的一个或多个方面使用的说明性远程访问系统结构。
[0018] 图3描绘的是可依据本文描述的一个或多个方面使用的说明性计算机系统框图
[0019] 图4A描绘的是可依据本文描述的一个或多个方面使用的示例性控制器系统结构。
[0020] 图4B描绘的是可依据本文描述的一个或多个方面使用的示例性软件组件
[0021] 图5描绘的是,依据本文描述的一个或多个方面,通过将图形数据包插进数据流来传输图形数据的说明性方法。
[0022] 图6描绘的是,依据本文描述的一个或多个方面,通过在主机计算设备和客户端计算设备之间打开的第二连接来传输图形数据的说明性方法。
[0023] 图7描绘的是,依据本文描述的一个或多个方面,通过截取数据流中的占位符数据包并将它们替换为图形数据包来传输图形数据的说明性方法。
[0024] 图8描绘的是,依据本文描述的一个或多个方面,图形数据通过图形数据处理和传输系统的说明性数据流。
[0025] 详细描述
[0026] 在各个实施方案的下列描述中,参考了上面确认并形成各个实施方案的一部分的附图,并且其中以说明各个实施方案的方式示出,本文所描述的各方面可在各个实施方案中被实践。应当理解的是,可利用其他实施方案,并且在不脱离本文所描述的范围的情况下可做出结构和功能的修改。各种方面能够是其他实施方案并能够以各种不同的方式实践或执行。
[0027] 作为对下面更详细的描述的主题的概括介绍,本文描述的各方面通过在一些方面确定传输给客户端设备的数据部分是图形数据还是非图形数据来提供从主机计算设备的图形渲染器到客户端设备更快且更有效的图形数据传输。如果数据是图形数据,该数据被传递给图形渲染器。具有与主机计算设备的通用处理器不同的处理器的控制器基于所渲染的数据生成一个或多个图形数据包。然后,所生成的图形数据包被发送给客户端设备。
[0028] 在生成一个或多个图形数据包之后,控制器可准备用于传输给客户端设备的一个或多个图形数据包。在一些方面,该准备可通过将图形数据包插进将被从主机计算设备传输的数据流中而进行。在一些方面,该准备可包括截取数据流中的占位符数据包并将占位符数据包替换为所生成的数据包。在一些方面,该准备可包括准备用于通过被配置用于图形数据的连接的传输的图形数据,该用于图形数据的连接与用于非图形数据的连接分离。
[0029] 应当理解的是,本文所使用的短语和术语是出于描述的目的,并且不应被视为限制性的。更确切地说,本文所使用的短语和术语被给出它们最广泛的解释和意义。“包括”和“包含”及其变型的使用旨在包括下文中列出的项目及其等效物以及附加项目及其等效物。术语“安装”、“连接”、“耦合”、“定位”、“啮合”和类似术语的使用旨在包括直接和间接的安装、连接、耦合、定位和啮合。
[0030] 计算机软件、硬件和网络可用于多种不同的系统环境中,除了别的之外,包括单机、连网、远程访问(又叫做远程桌面)、虚拟化和/或基于的环境。图1示出系统结构和数据处理设备的一个示例,其可用于在单机和/或联网环境中实施本发明的一个或多个说明性方面。各个网络节点103、105、107和109可经由诸如互联网的广域网(WAN)101进行互连。还可使用或可选地使用其他网络,包括私有内联网、企业网络、LAN、城域网(MAN)无线网、个人网络(PAN)等。网络101用于说明的目的并且可以用更少或附加的计算机网络来代替。局域网(LAN)可具有任何已知的LAN拓扑中的一个或多个,并且可使用多种不同协议中的一个或多个,诸如以太网。设备103、105、107、109和其他设备(未示出)可经由双绞线、同轴电缆、光纤、无线电波或其他通信媒介连接到一个或多个网络。
[0031] 本文所使用以及附图中所描述的术语“网络”不仅指其中远程存储设备经由一个或多个通信路径耦合在一起的系统,还指有时可耦合到该类系统的具有存储能的单机设备。因此,术语“网络”不仅包括“物理网络”还包括“内容网络”,其由单个实体引起的、驻留在所有的物理网络上的数据组成。
[0032] 组件可包括数据服务器103、网络服务器105和客户端计算机107、109。数据服务器103提供对数据库和控制软件的总体访问、控制和管理,以用于执行本文所描述的发明的一个或多个说明性方面。数据服务器103可连接到网络服务器105,其中用户通过该网络服务器105根据请求与数据交互并获得数据。可选地,数据服务器103可充当网络服务器本身,并直接地连接到互联网。数据服务器103可通过网络101(例如,互联网)经由直接或间接连接或经由一些其他网络连接到网络服务器105。用户可使用远程计算机107、109与数据服务器
103交互,如使用经由网络服务器105托管的一个或多个对外公开的网站连接至数据服务器
103的网络浏览器。客户端计算机107、109可用于与数据服务器合作以访问存储在其中的数据,或可用于其它目的。例如,如本领域中已知的,用户可使用互联网浏览器从客户端设备
107访问网络服务器105,或通过执行经由计算机网络(如互联网)与网络服务器105和/或数据服务器103通信的软件应用来访问网络服务器105。
[0033] 服务器和应用可被组合在相同的物理机器上,并且保留不同的虚拟或逻辑地址,或可驻留在不同的物理机器上。图1仅示出可以被使用的网络结构的一个示例,并且本领域中的技术人员应当理解,如在本文进一步所描述的,所使用的特定网络结构和数据处理设备可以改变,并且对于它们提供的功能来说是次要的。例如,通过网络服务器105和数据服务器103提供的服务可被组合在单一服务器上。
[0034] 每个组件103、105、107、109可以是任何类型的已知计算机、服务器或数据处理设备。例如,数据服务器103可包括控制速率服务器103的总体操作的处理器111。数据服务器103还可包括RAM 113、ROM 115、网络接口117、输入/输出接口119(例如,键盘鼠标、显示器、打印机等等),以及存储器121。网络接口可被直接耦合或通过工业标准的外围组件互连高速(PCIe)连接器、通用串行总线(USB)连接器或其他适合类型的连接器耦合。
[0035] I/O 119可包括用于读取、写入、显示和/或打印数据或文件的各种接口单元和驱动器。存储器121还可存储用于控制数据处理设备103的总体操作的操作系统软件123、用于指示数据服务器103执行本文描述的本发明的方面的控制逻辑125、以及提供辅助、支持、和/或其它可能或可能不与本发明的方面结合使用的功能的其它应用程序软件127。本文中,控制逻辑还可被称为数据服务器软件125。数据服务器软件的功能可指基于被编码到控制逻辑中的规则自动进行的操作或决定、通过用户将输入提供到系统中来手动进行的操作或决定和/或基于用户输入(例如,查询、数据更新等等)的自动处理的组合。
[0036] 存储器121还可存储在执行本发明的一个或多个方面中使用的数据,包括第一数据库129和第二数据库131。在一些实施方案中,第一数据库可包括第二数据库(例如,作为分离的表、报告等)。即,该信息可存储在单个数据库中,或分离成不同的逻辑、虚拟或物理数据库,其取决于系统设计。设备105、107、109可以具有如关于设备103所述的相似或不同的结构。本领域技术人员应理解,如本文所述的数据处理设备103(或设备105、107、109)的功能可遍布多个数据处理设备,例如,以将处理负载分配到多个计算机、以基于地理位置、用户访问级别、服务质量(QoS)等分开事务。
[0037] 一个或多个方面可以在通过本文所描述的一个或多个计算机或其他设备执行的、诸如一个或多个程序模中的计算机可用或可读数据和/或计算机可执行指令来体现。通常,程序模块包括例程、程序、对象、组件、数据结构等等,当被计算机或其他设备中的处理器执行时,该程序模块执行特定任务或实施特定抽象数据类型。该模块可以用源代码编程语言来写,随后被编译用于执行,或可以用诸如(但不限于)HTML或XML的脚本语言来写。计算机可执行指令可被存储在诸如非易失性存储设备的计算机可读介质上。可利用任何适当的计算机可读存储介质,包括硬盘、CD-ROM、光学存储设备、磁性存储设备和/或其任何组合。另外,可以用电磁波的形式在源和目的之间传递表示本文所描述的数据或事件的各种传输(非存储)介质,该电磁波通过诸如金属丝、光纤、和/或无线传输介质(例如,空气和/或空间)的信号-传导介质传播。本文所描述的各个方面可被体现为方法、数据处理系统计算机程序产品。因此,可在软件、固件和/或硬件或诸如集成电路、现场可编程阵列(FPGA)的硬件等效物等等中全部或部分地实施各种功能。特定数据结构可以被用于更有效实施本发明的一个或多个方面,并且预期此类数据结构在本文所述的计算机可执行指令和计算机可用数据的范围内。
[0038] 图2示出依据本公开的一个或多个实施方案的计算环境200的框图。计算环境200包括主机计算设备201(如并入使用至少一个处理器和至少一个存储器的任何计算设备)和主机硬件子组件251。主机计算设备201可对应于结合图1所示的组件103、105、107或109。依据一个或多个方面,主机计算设备201可以是在被配置成为客户端访问设备提供虚拟机的单服务器或多服务器桌面虚拟化系统(例如云系统)中的服务器。主机计算设备201可具有用于控制服务器及其包括随机存取存储器(RAM)205、非易失性存储器207、输入/输出(I/O)模块209和存储器215的相关部件的总体操作的通用处理器203。
[0039] I/O模块209可以包括鼠标、键盘、触摸屏、扫描器、光学读取器和/或主机计算装置201的用户可以通过其可以提供输入的触针(或其他输入设备),并且还可以包括用于提供音频输出的扬声器和用于提供文本、音像和/或图形输出的视频显示设备的一个或多个。软件可被存储在存储器215和/或其它存储装置内以向通用处理器203提供用于使主机计算设备201和/或主机硬件子组件251能够执行各种功能的指令。例如,存储器215可存储由主机计算设备201使用的软件,如操作系统213、应用程序219和相关数据库217。可选地,主机计算设备201的部分或全部计算机可执行指令可体现在存储在非易失性存储器207中的固件中。非易失性存储器207可包括诸如只读存储器(ROM)、电可擦除ROM或闪存。
[0040] 主机计算设备201可实施结合图1所示的数据处理设备的任何部分或全部,且可经由一个或多个电信连接被通信地耦合至一个或多个计算客户端设备240、242。一个或多个客户端计算设备240、242中的每一个计算客户端设备可包括瘦客户端。瘦客户端可单独或结合主机硬件子组件251依赖主机计算设备201以生成并传递各种应用。可经由WAN访问一个或多个客户端计算设备240,同时可通过LAN访问其它一个或多个客户端计算设备242。客户端计算设备240、242可包括桌面计算机、便携电脑、移动通信设备或包括至少一个处理器和至少一个存储器的任何数码设备。该一个或多个客户端计算设备240、242可包括很多或全部上文关于主机计算设备201所述的元件,包括下面将详细描述的主机硬件子组件251的元件。在图2中描绘的网络连接包括局域网(LAN)225和广域网(WAN)227,但还可包括其它网络(未示出)。主机计算设备201可通过网络接口或适配器221连接至LAN 225。主机计算设备201可包括调制解调器223或其他WAN网络接口用于通过WAN 227来利用互联网230建立通信。应理解,所示的网络连接是说明性的且可使用在主机计算设备201和一个或多个客户端计算设备240、242之间建立通信链接的其它装置。主机计算设备201和/或一个或多个客户端计算设备240、242还可包括任何类型的便携无线计算设备(如移动电话、智能手机、PDA、笔记本等)。一个或多个客户端计算设备240、242中的每一个客户端计算设备可以与结合图
1所述的计算设备107和109相同。
[0041] 在一些实施方案中,主机计算设备201可执行远程呈现客户端或其它客户端或使用瘦客户端或远程显示协议以采集由在主机计算设备201上执行的应用生成的显示输出并将应用显示输出传输给该一个或多个远程客户端计算设备240、242的程序。瘦客户端或远程显示协议可以是下列协议中的任何一个协议:由佛罗里达州劳德代尔堡的Citrix系统公司开发的独立计算结构(ICA)协议;或由华盛顿雷德蒙德的微软公司开发的远程桌面协议(RDP)。
[0042] 在一些实施方案中,主机计算设备201可以是任何服务器类型。在其他实施方案中,主机计算设备201可以是下列服务器类型中的任何一个:文件服务器、应用服务器、网站服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器、防火墙、网站服务器、应用服务器或作为主应用服务器、执行活动目录的服务器、或执行应用加速程序的服务器,其中所述应用加速程序提供防火墙功能、应用功能或负载平衡功能。一些实施方案包括主机计算设备201,其接收来自客户端计算设备240的请求,将该请求转发至服务器(未示出)并使用来自第二服务器的响应对由客户端设备240生成的请求进行响应。主机计算设备201可获得可用于客户端设备240中的一个客户端设备的应用枚举以及与应用服务器(未示出)相关的地址信息。然后,主机计算设备201可例如使用网络接口呈现对客户端的请求的响应,并与一个或多个客户端计算设备240直接通信以给一个或多个客户端计算设备240提供对所识别的应用的访问。
[0043] 在一些实施方案中,客户端计算设备240可以是寻求对由主机计算设备201提供的资源的访问的客户端节点。在其它实施方案中,主机计算设备201可向客户端计算设备240或客户端节点提供对托管资源的访问。在一些实施方案中,除主机计算设备201外,一个或多个服务器(未示出)可充当主节点以便主节点与一个或多个客户端计算设备240通信。在一些实施方案中,主节点可识别与托管所请求的应用的(一个或多个服务器中的一个)服务器相关的地址信息并将该地址信息提供给一个或多个客户端计算设备240。然而,在其它实施方案中,主节点可以是客户端节点集群、设备或一个或多个客户端计算设备240处的服务器场。
[0044] 主机计算设备201可通过互联网230将数据传输给如图2所示的客户端设备240、242。WAN 227和/或LAN 225可包括一个或多个子网络,并可使用客户端计算设备240、主机计算设备201、数码设备(未示出)和包含在计算环境200中的网络设备(未示出)的任意组合进行实施。互联网230可使用下列网络类型的任意组合进行实施:ATM(异步传输模式)、SONET(同步光学网络)、SDH(同步数字体系)、无线和/或有线线路。WAN 227和LAN 225的网络拓扑在不同的实施方案中可能不同,并且可能的网络拓扑包括但不限于:总线网络拓扑、星形网络拓扑、环形网络拓扑、基于中继器的网络拓扑或分层星形网络拓扑。另外的实施方案可包括使用协议在移动设备之间通信的移动电话网络,其中该协议可包括但不限于:
AMPS、TDMA、CDMA、GSM、GPRS、UMTS、LTE、WiMAX、EDGE或能够在移动设备之间传输数据的任何其它协议。
[0045] 如上面提到的,计算环境200包括主机硬件组件251,其包括图形处理单元(GPU)253、控制器255,且可包括用于通过与上面讨论的WAN 227和LAN 225类似的网络传输数据的一个或多个网络接口257。主机首要计算设备202和主机硬件组件251经由链接250被可操作地连接在一起,链接250可以是但不限于诸如系统总线的任何物理链接。另外地或可选地,链接250可以是与上面讨论的包括(仅作为示例)WAN 227和LAN 225的任何链接相似的任何网络链接。硬件组件257的子组件可被物理地耦合在单一设备上或单一设备内,诸如单一物理卡或物理组件,诸如PCI(外围组件互联)卡。可选地,GPU 253、控制器255和网络接口
257可被物理地设置在计算环境200的独立的卡、组件或子组件上,包括作为主机首要计算设备202的一部分。例如,在一些实施方案中,GPU 253、控制器255和网络接口257可被物理地设置在不同的物理卡或组件上并使用耦合各个子组件的各个输入端和输出端的公共总线或互联电线被可操作地耦合。GPU 253和控制器255可经由数字视频接口(DVI)或一个或多个高清多媒体接口(HDMI)连接器和/或电缆或其他适当的连接器相连接。在另一个实例中,网络接口257、LAN接口221和WAN接口223可以全部是相同的接口,它们被可操作地连接至主机首要计算设备202和主机硬件组件251。
[0046] 图3示出主机计算设备的软件和硬件组件的框图以及在主机计算设备的各种资源之间的数据流。在一些实施方案中,软件组件301可包括托管的桌面环境和应用303以及操作系统305。托管的桌面环境303可以是基于服务器或基于远程的应用,其由主机计算设备201代表客户端设备240的用户执行。在一些实施方案中,主机计算设备201可使用诸如由佛罗里达州劳德代尔堡的Citrix系统公司开发的独立计算结构(ICA)协议或由华盛顿雷德蒙德的微软公司开发的远程桌面协议(RDP)的瘦客户端或远程显示协议向客户端计算设备显示输出数据。
[0047] 托管的桌面环境303可包括用户会话,该用户会话包括远程表示层协议栈。在一些实施方案中,控制托管的桌面环境303的进程和处理器可操作或执行软件指令和/或数据以与在客户端设备240上执行的代理服务(未示出)通信。另外,控制托管的桌面环境303的进程和处理器可操作或执行软件指令以传输和接收来自主机系统存储器307的其他数据和指令。主机系统存储器307可包括上述关于图2所讨论的随机存取存储器(RAM)205或非易失性存储器207。
[0048] 操作系统软件305可实施上述关于图1所讨论的操作系统123的特征,用于控制数据处理设备的总体操作。另外地或可选地,操作系统软件305可包括用于实现托管的桌面环境与应用303和客户端设备240之间的传输和接收的控制逻辑、数据和指令。另外,执行该控制逻辑、数据和指令的进程或处理器可操作或执行软件指令和/或数据以传输和接收来自主机系统存储器307的其他数据和指令。
[0049] 托管的桌面环境和应用303可将数据和指令传输给硬件子组件251的资源和组件。在一些实施方案中,可经由链接309和311分别将图形数据和非图形数据从托管的桌面环境和应用303传输至图形处理单元253和控制器255。在其它实施方案中,类似地可使用单一链接诸如,比如,链接313将图形和非图形数据传输至控制器255。在一些实施方案中,也可在托管的桌面环境与应用303和网络接口257之间建立数据链接315,以便不使用控制器255的资源将数据传输给客户端。图3示出当利用操作系统305的诸如硬件驱动器的软件和固件资源时的数据链接309、311、313和315。然而,在一些实施方案中,数据链接309、311、313和315可被实施而依靠这些操作系统资源。一些实施方案可包括可选的网络交换机330,其是可配置用于处理和按规定路线发送数据的物理或逻辑设备。该可选的网络交换机可包括用于上述讨论的网络接口的多个端口,该网络接口包括LAN接口221、WAN接口223和网络接口257。
[0050] 上述组件允许图形数据通过网络被传输,而不先将图形数据(或通过网络传输的数据)提供给与通用或主机处理器通信的系统存储器或以其它方式涉及系统存储器。系统存储器可以是,例如,系统RAM(如系统RAM205)、非易失性存储器(如非易失性存储器207)或可直接被通用或主机处理器(如主机处理器203)使用的其他存储器。事实上,如图3的数据流所示,可能受到诸如渲染和处理的进一步的处理以用于传输的图形数据可通过网络被直接从硬件组件251的组合的GPU/控制器/网络接口传输至一个或多个客户端设备。
[0051] 图4A示出示例性控制器系统结构。具体地说,该说明性的结构提供关于控制器255的一个或多个实施方案的额外的细节。控制器255的任何部分可在硬件、软件、固件或其组合或其类似的组件中实施。例如,控制器255可用片上系统(SOC)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或处理器和存储器的任何组合实施。例如,包括控制器255的各种硬件电路块的实例可包括图形数据压缩器401、数据包生成器403、数据包截取器405、数据包插进器407、数据包再同步器409、连接处理程序411和/或处理器413。控制器255可包括控制器存储器415,其可被配置用于存储由处理器413执行的指令和/或数据。控制器255还可包括输入和输出资源417,其可被配置以接收来自主机首要计算设备202的任何一个或多个组件的、包括图形和非图形数据的任何数据。另外,控制器255可经由输入和输出模块417被连接至GPU 253,以及网络接口257(如果存在的话)。
[0052] 进一步参考图4B,其示出促进往返主机首要计算设备202和主机硬件组件251的数据通信的软件组件440的示例性结构。在一些变型中,软件组件可被实施为应用219中的一个应用,且在一些实例中,可通过主机处理器203被执行。软件组件440可被配置为促进来自主机计算设备201和到客户端设备240、242的数据通信。另外地和可选地,软件组件440可被存储在控制器存储器315中。软件组件可被配置了控制器管理器453和VDI(虚拟桌面基础结构)协议生成器451。在一些实施方案中,VDI协议生成器451和控制器管理器453可以是单一应用的一部分。通用处理器203可执行存储在主机存储器215中的数据以调用控制器管理器453和VDI协议生成器451。
[0053] VDI协议生成器451可被配置为生成关于VDI协议的数据和/或指令。VDI协议包括诸如ICA(独立计算结构)的表示层协议,例如从佛罗里达州劳德代尔堡的Citrix系统公司购买的ICA和/或任何其它VDI协议。
[0054] 控制器管理器453可被配置为生成数据和/或指令以促进主机计算设备201的各种资源和控制器255的各种资源之间的通信。
[0055] 图5-7呈现了将硬件渲染的图形数据从主机计算设备201传递到客户端设备240的说明性方法。这些说明性方法可在实施各种硬件和软件组件或图1-4描绘的其它资源的一个或多个系统上实施。如上所述,该硬件渲染的图形数据可并入由在主机计算设备201上执行的应用生成的用于客户端设备的显示输出。因此,硬件渲染的图形数据可包括需要传输至客户端计算设备240的图形数据。
[0056] 参考图5,其示出通过将图形数据插进数据流来将来自主机计算设备201的图形数据传输给客户端设备240的方法,在步骤501可生成连接句柄。
[0057] 连接句柄可包括关于主机计算设备201和客户端设备240之间的一个或多个连接的信息,该一个或多个连接使用上面描述的各种网络和子网络。连接句柄还可包括关于用于在主机计算设备201和客户端设备240和242之间发送数据的远程表示协议的信息。
[0058] 在一些实施方案中,连接句柄可由主机首要计算设备202的一个或多个软件应用和/或硬件模块生成,包括由操作系统213和控制器管理器453生成。一些实施方案可经由特定的硬件寻址消息将连接句柄从控制器管理器453传递到控制器255及其资源。在其它实施方案中,连接句柄可通过控制器255在软件和/或硬件中生成,包括通过连接句柄模块411生成。
[0059] 在步骤503,可生成图形数据包模板(此处也可互换地称为模板)。图形数据包模板可包括描述在主机计算设备201和一个或多个客户端设备(如客户机240)之间传输诸如图形数据的数据的包的形成和结构的信息。模板还可包括描述用于在主机计算设备和客户端设备240和242之间传送数据的远程表示协议的信息。另外,图形数据包模板可包括描述组件255形成图形数据包的方式的信息。
[0060] 模板可用任何机器可读语言编写,机器可读语言包括但不限于诸如可扩展标记语言(XML)的标记语言和/或诸如JavaScript对象表示法(JSON)或YAML非标记语言(YAML)的数据序列化格式。在一些实施方案中,图形数据包模板可由主机首要计算设备202的一个或多个软件应用和/或硬件模块生成,包括由存在于应用存储器219中的控制器管理器353单独生成,或与操作系统213协同工作或结合生成。在一些实施方案中,图形数据包模板可通过控制器255在软件和/或硬件中生成,包括通过数据包生成器模块403生成。
[0061] 在一些实施方案中,步骤501和503可被当作初始步骤,其在主机计算设备201和客户端计算设备240之间的连接被建立时发生。另外地和可选地,在一些实施方案中,可很少(如,依据周期性调度或以被编码到软件组件中的特定次数)生成模板并将该模板存储在主机计算设备201的各个资源中。在一些变型中,模板可被用于多个主机-客户端通信会话。因此,步骤501和503的顺序可以是可反转的;即,可在生成连接句柄之前生成模板。
[0062] 在步骤505之前,可确定数据的某些部分将被从主机计算设备201传送到客户端设备240。这可能是因为例如之前传送的数据过期而需要对数据刷新。另外地和可选地,由于或响应于由主机计算设备201或客户端设备240或在主机计算设备201或客户端设备240上执行的某个动作,数据部分将被传送。例如,可确定缓冲区可能需要更新。在一些实施方案中,帧缓冲区可包括桌面环境和/或在桌面环境上运行的应用的图像。
[0063] 在步骤505,可以确定将被传送的数据部分是图形数据还是非图形数据。在一些变型中,图形数据可以是需要在诸如GPU 253的渲染器处附加处理、渲染和/或获得的数据。非图形数据可以是可被传送而不需要不可忽略的附加处理或渲染的数据。在一些实施方案中,软件组件440的控制器管理器453或一些其它软件资源可执行步骤505的确定。
[0064] 例如,将被传送的数据部分可包括PCI数据,且步骤505的确定可通过软件组件440的驱动器(如Citrix的PCI总线驱动器、多路复用/多路分配驱动器或滤波器驱动器)执行。驱动器可执行确定并基于数据源给将被传送的数据加上标签(如,图形数据可来自GPU适配器驱动器,非图形数据可来自以太网驱动器)。在加上标签后,依据数据是图形还是非图形数据,将被传送的数据可穿过信道(如PCIe信道)被多路复用用于处理。处理可包括依据标签将数据放置在两个处理队列(如,一个用于图形数据而一个用于非图形数据)中的一个队列中,并在准备好进一步处理时分派来自各自队列的数据(如,来自图形数据队列的数据可被分派给GPU用于如描述的从步骤507开始的处理,来自非图形队列的数据可被分派给控制器255用于如描述的从步骤513开始的处理)。
[0065] 在其它实施方案中,图形和非图形数据类似地可从首要计算设备202被传递给控制器255或硬件组件253的其它资源。随后,控制器255(或硬件组件253的其它资源)可通过其硬件和/或软件资源的操作来执行确定。当确定数据部分是图形数据时,例如,从控制器255将图形数据传送或传递到GPU 253用于渲染和处理。
[0066] 在步骤507,GPU可渲染图形数据。如上所讨论的,GPU 253可以是能够执行各种计算和指令以将GPU接收的数据渲染成图形显示输出(此处也可互换地称为所渲染的图形数据)的图形处理单元。在一些实施方案中,通过GPU 253渲染和处理可包括通过GPU的一个或多个处理器压缩数据。GPU 253还可将图形命令转换为帧缓冲区数据。
[0067] 当GPU 253已经完成这些计算,所渲染和处理的图形数据可被传送或以其它方式转发给控制器255,如步骤509所示。在一些实施方案中,从GPU 253到控制器255的该传递可在调度的基础上被执行。在其它实施方案中,该传递可由GPU 253给控制器255通知图形数据已经被渲染且当前存在于GPU 253的存储器中引起。在其它实施方案中,该传递可由控制器255针对所渲染的图形数据轮询GPU 253而引起。当所渲染的图形数据已经被传送给控制器255,所渲染的图形数据可选地通过控制器255的任何一个或多个资源操作。例如,所渲染的图形数据可通过图形数据压缩器401压缩用于传递。
[0068] 在步骤511,所渲染的图形数据可依据图形数据包模板的参数进行封装,引起生成的图形数据包。例如,控制器255可依据包含在模板内的描述数据包的形成和结构的信息创建一个或多个数据包。随后,控制器255可插入或以其它方式将所渲染的图形数据包含在一个或多个数据包里。
[0069] 在一些实施方案中,控制器255可对所渲染的图形数据执行附加的处理。例如,控制器255可对所渲染的图形数据执行光学字符识别(OCR)和/或小帧变化检测。所渲染的图形数据可通过诸如2DRLE的软件图像压缩算法被压缩。所渲染的图形数据可向图形数据压缩器401(如,深度压缩ASIC)传递用于压缩。在一些实施方案中,所渲染的图形数据的特定部分可通过软件图像压缩算法被压缩,同时剩余部分可通过图形数据压缩器401被压缩。
[0070] 图形数据压缩器401可被配置为以包括各种被设计用于视频的压缩技术(如,VC1、H.264或H.265)的各种方式压缩数据(如,用于压缩的进入帧缓冲区数据,或其它所渲染的图形数据)。在一些实施方案中,图形数据压缩器401可压缩数据并将所压缩的数据(和任何需要的内部状态数据)存储在输出缓冲区中。当新数据到达图形数据压缩器401将被压缩时,输出缓冲区中的数据可被替换和/或被丢弃,且被压缩的新数据(和任何新的内部状态数据)可被存储在输出缓冲区中用于在请求时传递到处理器(如处理器413)。这种实施方案的优点在于压缩数据可以准备好用于传递给请求处理器。
[0071] 在其它实施方案中,图形数据压缩器401可将进入数据存储在进入缓冲区中。当图形数据压缩器401接收到新数据时,在进入缓冲区中的数据可被新数据覆盖或替换。当处理器(如处理器413)请求压缩数据时,图形数据压缩器401可继续进行压缩当前存储在进入缓冲区的数据。当接收到请求时,图形数据压缩器401可压缩当前存储在进入缓冲区的数据并将所产生的压缩后的数据发送给请求处理器。这种实施方案的优点是降低了图形数据压缩器401的硬件设计的复杂度(如,因为图形数据压缩器401可不必考虑多个内部状态和在多个内部状态间切换)。
[0072] 如果数据部分是非图形数据,然后该非图形数据可在步骤513被转发给控制器255。转发可采用各种形式。例如,非图形数据可通过控制器255取回或通过首要计算设备
202被传送给控制器255。在一些实施方案中,取回可由于数据可用于取回的信号通过首要计算设备202的资源被发送给控制器255而发生。在一些实施方案中,取回可由于控制器255对非图形数据的资源轮询而发生。非图形数据可在传递给控制器255时已经被形成数据包,或可通过控制器255的资源被封装成一个或多个非图形数据包。
[0073] 在步骤515,在从主机计算设备201传输到客户端设备240之前,非图形数据包和图形数据包可被合并成单一数据包流。例如,图形数据包可通过控制器255或控制器255的诸如数据包插进器407的一个或多个资源的操作被插进到不间断的非图形数据包流。在一些实施方案中,插进可以固定常规间隔发生,在插进后,在数据包流中的每n个数据包或数据包组是图形数据包或图形数据包组。在一些实施方案中,插进只在还没传送至客户端设备240的图形数据存在于控制器255的存储器中时发生。
[0074] 图6示出使用控制器255将图形数据从主机计算设备201传输至客户端设备240的另一种方法。图6示出适合在使用主机计算设备与客户端设备之间的第一和第二连接的实施方案中实施的方法。第一连接可被配置用于非图形数据,而第二连接可被配置用于图形数据。以这种方式,可增加主机计算设备和客户端设备之间被传输的数据量。另外,尽管因为主机计算设备和客户端设备之间的所有连接的总吞吐量有上限而使得数据量不能被增加(例如,因为客户端设备240具有最大通信带宽容量),但仍然可在图形数据的传输中实现更大的效率,因为使用第二连接传输图形数据可降低在数据流中寻找将插入图形数据的适合位置的需求。
[0075] 在步骤601,主机计算设备201或在其上执行的应用可操作以启动在主机计算设备201和在客户端设备240上有终结点的第一连接。然后,在步骤603,控制器管理器453可操作以指示控制器255倾听关于在主机计算设备201和在客户端设备240上有终结点的第二连接的信息。在其中一个或两个终结点处,该第二连接可使用网络接口的不同的物理或逻辑端口建立。例如,第一连接可使用主机计算设备201的逻辑端口A建立,而第二连接可使用主机计算设备201的逻辑端口B建立。主机计算设备的端口配置与客户机的端口配置可以不同。
例如,第一和第二连接可在主机计算设备201的不同的物理端口上,但是在不同的逻辑端口使用客户机240的相同的物理端口。当然,相反的或其它端口配置也是可能的。
[0076] 在步骤605,第二连接可被客户机240启动。在一些实例中,主机计算设备201可操作以启动第二连接。
[0077] 在步骤607,可进行关于将被传送至客户机的数据部分是图形数据还是非图形数据的确定。该步骤的执行可类似于图5的步骤505。另外,类似于上述结合图5的步骤505所讨论的,在步骤607之前,可确定数据的特定部分将被从主机计算设备201传送到客户机240。
[0078] 在步骤609,如果数据部分是非图形数据,该非图形数据可使用上面描述的第一连接来从主机计算设备传送至客户机240。在一些实施方案中,非图形数据可通过控制器255取回(如,响应于发送给控制器的、数据可用于取回的信号)或通过主机首要计算设备202传送至控制器255。在一些变化中,非图形数据可在传递给控制器255时已经被形成用于传输的数据包,或可通过控制器255被进行封装。可选地,通信可独立于控制器255的操作、经由主机首要计算设备202的资源直接操作网络接口221和223发生。
[0079] 在步骤611,如果数据部分是图形数据,数据部分可被传送或传递至GPU用于渲染和处理。当GPU 253已经完成其处理时(所得到的是所渲染的图形数据),所渲染的图形数据可在步骤613被传送至控制器255。在一些实施方案中,该传递可在调度的基础上被执行。在其它实施方案中,该传递可由于GPU给控制器255通知图形数据已经被渲染且当前存在于GPU 253的存储器中而引起。在其它实施方案中,该传递可由于控制器255针对所渲染的图形数据轮询GPU 253而引起。当所渲染的图形数据已经被传送至控制器,所渲染的图形数据可选地通过控制器255操作。例如,所渲染的图形数据可通过图形数据压缩器401进行压缩用于传递。在步骤615,可依据与上面结合图5的步骤503和511所描述的图形数据包模板类似的图形数据包模板的参数,通过控制器来封装所渲染的图形数据。步骤615可产生一个或多个图形数据包。
[0080] 在步骤617,使用第二连接,一个或多个图形数据包可从主机计算设备201被传送至客户机240。
[0081] 图7示出使用控制器255将图形数据从主机计算设备201传输至客户端设备240的另一种说明性方法。该说明性方法包括的方面涉及在数据流中的占位符数据包的使用。
[0082] 在步骤701,数据可从主机首要计算设备202被传送至控制器255。在步骤703,可进行关于数据部分是图形还是非图形数据的确定。步骤703的执行可类似于上述讨论的图5的步骤505和图6的步骤607。对于图形数据,步骤705、707和709可分别类似于图5的步骤507、509和511进行。因此,在步骤705,将通过GPU处理的图形数据传送至GPU并进行渲染;在步骤
707,所渲染的图形数据被传送或返回到控制器255;而在步骤709,图形数据包被生成用于接收自GPU的所渲染的图形数据。当然,在一些实施方案中,这些图形数据包符合由主机首要计算设备202的应用资源或控制器255的硬件和软件资源生成的模板。
[0083] 在步骤711,非图形数据可包括一个或多个占位符图形数据包。例如,这些占位符数据包可以是空或“壳”数据包用于被所生成的图形数据包最终替换。在一些变型中,这些占位符数据包可依据特定的可解译的语言模式生成并包含一些数据。包含在占位符数据包中的数据可以是图形数据。控制器255可操作以截取这些占位符数据包,例如通过基于例如特定的可解译的语言模式的数据包截取器405的操作,该特定的可解译的语言模式形成占位符数据包结构、包含在占位符数据包中的图形数据或空占位符数据包的基础。例如,当尝试截取占位符数据包时,数据包可被扫描以确定其是否包含指示该数据包是占位符数据包的特定标记。如果该数据包不是占位符数据包,该数据包可被向前转发用于传输。另一方面,如果发现该数据表是占位符数据包,数据包截取器405可给处理器413传输标志,处理器413进而可向图形数据压缩器401发送关于压缩后的数据的请求(如,如上述结合步骤511所讨论的,图形数据压缩器401可以用压缩后的数据响应于上述请求)。
[0084] 在步骤713,在由步骤709生成的图形数据包和/或经由处理器413接收的来自图形数据压缩器401的图形数据传输以前,占位符数据包可被替换。例如,压缩后的图形数据可与文本和小帧数据结合。用于包含在占位符数据包中的数据可基于处理器413、图形数据压缩器401和主机计算设备201之间共享的标签信息被匹配在一起。所得的数据包可被传递至网络接口用于作为完整的图形数据包传输。占位符数据包的替换可包括解译包含在占位符数据包中的可解译语言。由于一个或多个占位符图形数据包用图形数据包的替换需要足够的处理时间使数据包去同步,在一些实施方案中,数据包可使用再同步器资源409来再同步,所得到的是再同步数据包流。图8示出从主机计算设备201到此处示出为移动设备的客户端设备242的说明性数据流动路径。用于客户端设备240的数据流动路径将类似地进行。在点801以前,将被传送的数据部分可从包括非易失性存储器207或存储器215的主机计算设备201的另一个存储器取回或推入主机系统工作存储器(系统RAM 205)。当然,将被传送的数据部分可经由包括输入/输出模块209的路径到达。
[0085] 在点801,包含通用处理器203的一个或多个处理器可执行指令以依据存储在存储器215中的指令操作数据,该指令包括各种应用219的指令。如点801所示,数据部分可根据需要被恢复至主机系统存储器。如点803所示,数据部分可保留在应用工作空间内用于作为一个或多个应用的一部分的附加处理。在一些变型中,在点801的数据的处理可包括通过软件组件440的处理,软件组件440包括协议生成器451和控制器管理器453。
[0086] 在点805,数据部分可从应用和/或系统RAM被取回或被推入主机硬件组件251。当接收到数据时,主机硬件组件可准备数据以用于传输至客户端设备242。如上所述,这可包括关于数据是否是需要通过诸如GPU 253的渲染器进行附加处理的图形数据的确定。因此,如图所示,数据部分可在点807通过GPU 253、控制器255和/或网络接口257进行处理。在一些实施方案中,该处理可与控制器存储器415中的图形数据的中间存储一起发生。当然,该处理还可包括控制器255的一个或多个资源的操作,如压缩器401、数据包再同步器409和数据包生成器403。在点807的各种处理的细节在上面结合各种示例性实施方案和方法进行了讨论。
[0087] 在点809,所渲染的图形数据可经由控制器255使用本文描述的方法中的任何一种方法被传输至客户端设备。例如,图形数据包(如,图5-7的图形数据包)可被插进非图形数据包流、可替换数据流中的占位符数据包或使用第二连接被传输而非图形数据包经由分离的第一连接被发送。
[0088] 由上面可见,上面的处理允许需要通过渲染器进行附加处理的图形数据在被渲染器处理后通过网络传输,而不需要将数据提供给诸如系统RAM的系统存储器。如所说明的,在通过组合的GPU/控制器/网络接口渲染和封装之后,图形数据可直接从组合的GPU/控制器/网络接口通过网络进行传输。
[0089] 尽管已经以特定于结构特征和/或方法行为的语言描述了主题,但是应理解的是,在任何权利要求中所限定的主题不必局限于以上所描述的具体特征或行为。相反,上述的具体特征和动作作为所附权利要求的示例性实现来描述。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈