基于图像的远程访问系统的制作方法

文档序号:7942968阅读:242来源:国知局
专利名称:基于图像的远程访问系统的制作方法
基于图像的远程访问系统
背景技术
随着广域网(WAN)持续扩张,客户端/服务器计算模型已经类似地看到多种企业 和家庭用户对其应用的增加。在客户端/服务器模型中,一个或多个服务器计算机(通常是 具有大量处理能力和诸如存储器和数据存储空间之类的其他资源的非常快的计算机)被 设置在中心位置,所述服务器从该中心位置与若干较小的且功能不那么强的客户端计算机 通过网络(例如,因特网)进行通信。所述服务器被配置为运行被设计为受操作所述客户 端计算机的用户控制的软件应用。这些通常大且复杂的软件应用在服务器上执行并且实施 完成用户发起的任务所需的大部分计算,因此利用(如与客户端的那些处理资源相比)服 务器的优越的处理资源。在客户端计算机上执行的软件将用户发出的命令转发到在服务器上执行的软件 应用。所述软件还从服务器软件应用接收响应和/或结果以用于在客户端计算机处向用户 呈现。客户端/服务器模型的示例是远程桌面客户端/服务器应用。所述服务器计算机执 行完整操作系统的实例及其相关联的应用,以及服务器侧远程桌面应用,该服务器侧远程 桌面应用将由服务器内的图形适配器在所述操作系统实例的控制下生成的显示输出重定 向(redirect)到客户端计算机。所述客户端计算机执行客户端侧远程桌面应用,该客户端 侧远程桌面应用显示由在所述服务器计算机上运行的操作系统生成的输出(例如,诸如微 软 Windows 之类的窗口式操作系统中的桌面和窗口)。所述客户端侧远程桌面应用还 接受来自用户(例如,来自键盘和鼠标)的输入,并且将在客户端计算机处接收的用户输入 重定向到服务器计算机。客户端计算机与服务器计算机之间的通信通过诸如例如因特网之 类的网络进行。为了进一步将客户端的计算负担转移到服务器,并且因此进一步降低客户端的 复杂性和成本,已经开发了将大量的图形处理从客户端转移到服务器的软件和硬件。在 这样的系统中,所述服务器(例如,经由服务器内的图形处理单元(GPU))处理并格式化 图形数据并且将该数据存储在帧缓冲器中。但是取代在本地附接的显示单元上为用户本 地地呈现帧缓冲器数据,所述帧缓冲器数据通过网络被传输到瘦客户端、台式个人计算机 (PC)或网络附接的显示设备,其显示所述数据而不需要由客户端本地GPU进行处理和/ 或格式化。参见例如,Stafford-Fraser等人(下文为“Stafford”)的标题为“Computer NetworkArchitecture and Method of Providing Display Data" W^H^^Jiit^^ 2005/0193396。这种系统中的图形适配器因此在服务器内被“虚拟化”。尽管这种虚拟化的图形适配器用于简化客户端硬件和软件,但是相应地增加了对 服务器硬件和软件的要求。尽管在客户端/服务器模型中将预期这一点(并且这实际上是 所述模型的目标之一),但是当Mafford的虚拟化的图形适配器与需要多个显示器的客户 端一起使用时所述效应得到倍增(multiplied)。例如,如果具有多个显示器的客户端PC被 具有多个显示器的简化客户端(有时被称为“瘦客户端”)取代,并且Mafford的所述虚拟 化的图形适配器被用在服务器侧,则必须在服务器处针对每个客户端执行多个虚拟化的图 形适配器(每个显示器一个)。结果,当与针对每个客户端执行仅仅单个虚拟化适配器实例的服务器的需求相比时,针对每个客户端在服务器处所需的资源可能由于执行多个虚拟化 的显示适配器实例而显著增加。


为了详细描述本发明的示范性实施例,现在将参照附图,在附图中图1示出根据至少一些说明性实施例的远程访问客户端/服务器系统的硬件组 件;图2示出根据至少一些说明性实施例的图1的远程访问客户端/服务器系统的软 件组件;图3A示出根据至少一些说明性实施例的适合实现图1的服务器计算机的计算机 系统;图;3B示出根据至少一些说明性实施例的图3A的计算机系统的框图;图3C示出根据至少一些说明性实施例的适合实现图1的客户端设备的至少一部 分的计算机系统的框图;以及图4A和4B示出根据至少一些说明性实施例的用于使用图1和2的服务器计算机 和客户端设备来分发、处理和显示图形数据的方法。标记和命名法某些术语贯穿下面的说明书和权利要求而被用于指代特定的系统组件。如本领域 技术人员将理解的,计算机厂商可以以不同名称指代一个组件。该文档不打算区分名称不 同但功能相同的组件。在下面的讨论和权利要求中,术语“包含”和“包括”是以开放式的 方式使用的,并且因此应当被解释为意思是“包括,但不限于...”。而且,术语“耦合”意欲 表示间接的、直接的、光学的或无线电连接。因此,如果第一设备耦合到第二设备,则该连接 可以是通过直接电连接、通过经由其他设备和连接的间接电连接、通过光学电连接或通过 无线电连接。此外,术语“系统”指代两个或更多硬件和/或软件组件的集合,并且可以用 于指代电子设备,比如计算机、计算机的一部分、计算机的组合等等。而且,术语“软件”包 括任何能够在处理器上运行的可执行代码,而不管用于存储所述软件的介质如何。因此,存 储在非易失性存储器中的代码(有时被称为“嵌入式固件”)包含在软件的定义内。
具体实施例方式下面的讨论针对本发明的各种实施例。尽管这些实施例中的一个或多个可能是优 选的,但是所公开的实施例不应当被解释为或以其他方式被使用为限制包含权利要求的本 公开的范围。此外,本领域技术人员将理解,下面的描述具有广泛的应用,并且任何实施例 的讨论仅意在例证该实施例,并且不打算暗示包含权利要求的本公开的范围被限于该实施 例。图1示出根据至少一些说明性实施例的适合用于实现基于图像的远程访问系统 的客户端/服务器计算系统。服务器计算机110包括耦合到存储器112、网络接口(网络I/ F) 116和图形适配器120的处理器114。图形适配器120包括多个帧缓冲器(例如,用于存 储如下面所解释的那样呈现在显示器上的处理的图像数据的帧缓冲器A(12》和帧缓冲器 B(124))。图形适配器120还耦合到存储器112,从而允许图形适配器在处理器114很少介入或不介入的情况下(例如,经由直接存储器访问(DMA)传输)从存储器112传输待(例 如由具有图形适配器120的图形处理单元(GPU)(未示出))处理的数据。在至少一些说明 性实施例中,存储器112还可以包括帧缓冲器(未示出)。服务器计算机110经由网络140(例如,因特网)耦合到客户端设备150。服务器 计算机将存储在至少一个帧缓冲器122或IM中的图形图像数据传输到客户端设备150以 用于呈现为在客户端显示器168和178的每一个上显示的图像。客户端设备150包括网络 接口和路由器(网络I/F和路由器)152,其耦合到图形控制单元(图形控制单元)160和 170中的每一个。图形控制单元160和170中的每一个分别耦合到显示设备168和178。网 络接口和路由器152还耦合到键盘巧4和鼠标156。所述图形控制单元160和170中的每 一个包括耦合到网络接口和路由器152以及帧缓冲器(164,174)的处理器(162,172)。每个帧缓冲器包括与来自服务器计算机110内的帧缓冲器的子区域的数据对应 的数据。在图1的说明性实施例中,例如,客户端帧缓冲器164包括与来自服务器帧缓冲器 124的左子区域的数据对应的左数据165。类似地,客户端帧缓冲器174包括与来自服务器 帧缓冲器124的右子区域的数据对应的右数据175。来自每个帧缓冲器内的数据被对应的 显示器接口(166,176)读出,所述显示器接口基于存储在对应的帧缓冲器中的数据生成在 每个显示器168和178上呈现图像所必需的控制和数据信号。所述控制和数据信号可以是 数字信号、模拟信号或数字和模拟信号二者的组合。服务器计算机110和客户端设备150 二者的帧缓冲器被用于存储已被(例如处理 器114或图形适配器120)处理的图像数据。这种处理可以包括将诸如几何对象(例如,线、 正方形、三角形)之类的对象转换为被显示的图像,并且/或者将高级的二维和三维变换应 用到复杂的图像,比如照明、阴影、遮蔽和纹理映射,这些示例只是举几个例子。这样的操作 的最终结果是待呈现在一个或多个显示设备上的所得图像的表示。这种表示可以存储在帧 缓冲器中,所述帧缓冲器是用于存储与所表示的图像相关联的数据从而使得所述缓冲器内 的每个位置对应于屏幕上的像素的专用存储器设备或存储器的区域。例如,在至少一些说明性实施例中,单个像素由32位值表示(例如,由4个字节表 示,每个字节分别表示像素的原色红、绿和蓝的8位强度值和不透明值alpha(RGBA))。因 此,如果被显示的图像的每一行具有由2560个RGBA值表示的2560个像素(例如,作为大 小为2560 X IOM像素的图像的一部分),则对于一个或多个显示器上的像素的每个扫描线 而言,10240个数据字节被存储在所述帧缓冲器中、存储在所述帧缓冲器的存储器或存储器 区域内连续寻址的位置中。通过连续地将所述数据存储为连续的RGBA值,所述数据可以以 它将被呈现在显示设备上的次序被读出,从而简化从缓冲器中提取数据的过程。而且,每个 扫描线的数据可被存储为使得单个存储器设备行对应于单个扫描线。因此,如果存储器行 的大小被确定为超过扫描线所需的数据量的下一个最大的二进制倍数(binary multiple) (在所述示例中为16384个字节),则可以使用存储器地址的最高有效位或较高位来寻址单 个扫描线,同时较低位可以用于寻址行或扫描线的像素数据。由于图像数据被组织并存储在帧缓冲器内的方式,图像内的区域可被直接映射到 存储所述图像的帧缓冲器的地址空间内的区域。因此,在示出了表示待显示的图像的左侧 和右侧的两个区域的图1的说明性实施例中,所述帧缓冲器的每一行可以被划分为在对应 于图像的左侧的第一地址范围(例如,所述行的前5120字节、即字节0-5120)内存储的像素值,和在对应于所述图像的右侧的第二地址范围(例如,所述行的接下来的5120字节、即 字节5120-10239)内存储的像素值。可以通过将一个或多个偏移值应用到区域相对像素χ-y坐标来相对于区域引用 该区域的像素值。在上述示例中,右区域的像素(0,0)(即右区域的原点处)的像素数据在 帧缓冲器内被存储在缓冲器的第一行的位置5120-5123处(即行0的像素1观0)。所述像 素数据开始地址可以通过将合适的像素坐标偏移加到像素的区域相对χ坐标、将所得的偏 移像素坐标乘以每像素的字节数量、并且加上将每缓冲器行的字节乘以y坐标所得的乘积 来确定(例如,开始字节地址=4*(x+1280)+16384*y)。也可以执行这些计算的逆运算以根 据帧缓冲器地址确定区域相对像素坐标。行和偏移计算的相似分组也可以用于定义图像的 垂直划分的区域。本领域普通技术人员将认识到,任意数量的垂直或水平区域或垂直和水 平区域二者可被定义在帧缓冲器内,并且许多其他坐标到地址和地址到坐标变换可以被应 用到本文所述的实施例。所有这样的区域数量(number)和区域组合以及所有这样的坐标 和地址变换处于本公开的范围内。继续参考图1的说明性实施例,服务器计算机110包括至少两个帧缓冲器(例如, 帧缓冲器122和124)。交替地利用新显示数据来更新每个帧缓冲器,以便生成差数据,即识 别在一个帧缓冲器的更新与另一个帧缓冲器的随后更新之间已经变化的数据。例如,在至 少一些说明性实施例中,最初在预定义的间隔(例如,对应于60赫兹显示帧速率的16.67 毫秒间隔)期间用图像数据装载帧缓冲器122。在所述间隔结束时,对图像的任何更新被重 定向到帧缓冲器124(其也存储初始图像的拷贝),同时帧缓冲器122内的初始图像数据被 传输给客户端设备150以供显示。在下一个间隔结束时,将所述帧缓冲器122和IM的内容进行(逐字节)比较以识 别在所述间隔期间变化的那些数据字节。只有在所述间隔期间变化的那些数据字节(即, 差数据)被传输到客户端设备150,这减少了针对从帧到帧变化不太大的图像所传输的数 据的量。一旦所述差数据被识别,所述帧缓冲器就再次被交换(swap),并且来自帧缓冲器 124的数据被拷贝到帧缓冲器122,从而使得可以利用较新的数据来更新帧缓冲器122,同 时从帧缓冲器1 提取所述差数据以用于传输到客户端设备150。在至少一些说明性实施 例中,包括最新的数据的帧缓冲器的完整内容(针对所有区域)被周期性地传输到客户端 设备150,而不生成差数据。这些“参考帧”(它们有时候被这样称呼)在某些差数据未被 客户端设备150接收的情况下被传输(例如,如果无连接网络事务(比如IP数据报)被用 于发送所述数据并且所述消息由于网络中断而丢失)。仍然参照图1的说明性实施例,一旦已经生成差数据,它就被按子区域细分并且 消息被从服务器计算机110发送到客户端设备150,其中每个消息仅仅包括用于特定子区 域的数据。所述消息还包括子区域标识符。当具有差数据的消息被客户端设备150接收到 时,网络接口和路由器152根据所述消息内的子区域标识符来确定所接收的差数据对应于 哪个子区域。然后,所述差数据被发送到耦合到对应于所识别的子区域的显示器的图形控 制单元。在至少一些说明性实施例中,在转发差数据之前可以从用于通过网络传送所述数 据的消息中解封装所述差数据。在其他说明性实施例中,可以转发整个消息并且由接收差 数据的图形控制单元从网络消息中对其解封装。在至少一些说明性实施例中,所述差数据在根据传输控制协议/网际协议(TCP/IP)网络协议格式化的消息内被接收,并且通过使用 网络接口和路由器152与每个图形控制单元之间的单独的通用串行总线(USB)通信链路而 被传输到合适的图形控制单元。键盘巧4和鼠标156也经由单独的USB链路耦合到网络接 口和路由器152,如图1所示。继续参照图1,每个图形控制单元的处理器(图形控制单元160的处理器162,和 图形控制单元170的处理器17 接收对应于耦合到相应的图形控制单元的显示器(显示 器168或显示器178)的差数据,并且利用合适的数据来更新它们相应的客户端帧缓冲器。 因此,从计算机服务器110接收的对应于帧缓冲器的左子区域的差数据被网络接口和路由 器152路由到处理器162,处理器162使用所述差数据来更新帧缓冲器164内的左数据165。 然后,所述数据被显示器接口 166用来更新显示设备168上呈现的图像。针对来自服务器 计算机110的右子区域帧缓冲器数据,由图形控制单元170、处理器172和显示器接口 176 执行类似的操作,这导致右数据在帧缓冲器174内被更新并且被呈现在显示设备178上。如上面的描述所表明的,在客户端设备处执行的操作需要的图形计算能力比服务 器计算机110所需的少。这是因为以下事实计算上密集的图形处理操作由图形适配器120 执行,该图像适配器然后向客户端设备传输需要少得多的处理的数据,甚至在压缩和解压 缩被发送到客户端设备150的图像数据的实施例中也是如此。这导致有时所称的“瘦”客 户端,所述“瘦”客户端是就实现客户端设备150的功能的硬件和软件两方面而言的。计算 机服务器110与客户端设备150之间的帧缓冲器数据的使用,而不是需要大量图形处理的 数据(例如几何对象数据)的使用,导致使用容易地且廉价地被缩放的瘦客户端进行操作 的基于图像的远程访问系统。在至少一些说明性实施例中,从服务器计算机110传输到客户端设备150的图像 数据(包括差数据、参考帧或二者)在被传输之前被压缩以进一步减少传输图像数据所需 的带宽。在至少一些说明性实施例中,所述压缩由处理器114执行,而在其他说明性实施例 中,所述压缩由图形适配器120执行。解压缩由客户端设备150的处理器162和172执行, 每个处理器解压缩对应于它们相应的子区域和显示器的所接收的数据。所述压缩/解压缩 可以使用许多已知的压缩/解压缩(CODEC)算法中的任意一个来实现,可以包括有损和无 损压缩/解压缩技术二者,并且可以包括硬件和软件实现方式二者以及硬件和软件实现方 式的组合。所有这样的CODEC算法、技术和实现方式都在本公开的范围内。图2示出根据至少一些说明性实施例的实现本文所描述的系统和方法的至少一 些功能的软件组件的框图。主操作系统210在服务器计算机110上执行并且提供操作环境, 服务器侧远程访问软件212在该操作环境下执行。客户操作系统214在服务器侧远程访问 软件212提供的环境内执行,服务器侧远程访问软件212将图形适配器120暴露于在客户 操作系统214下执行的视频设备驱动器216。在至少一些说明性实施例(未示出)中,两个或更多客户操作系统在服务器侧远 程访问软件212下并发地执行,所述服务器侧远程访问软件仲裁对图形适配器120的访问。 作为这种仲裁的结果,图形适配器120作为专用资源被暴露于每个客户操作系统,即使它 实际上在所述客户操作系统之间被共享。在至少一些说明性实施例中未被服务器计算机 110用来在本地驱动显示设备的图形适配器因此作为“卸载(offload)”图形处理器来操 作,该“卸载”图形处理器作为共享资源而被服务器侧远程访问软件212管理。在其他说明性实施例中,由服务器侧远程访问软件212为每个客户操作系统实例实现虚拟化的图形适 配器。继续参照图2,一旦帧缓冲器内的数据已经被更新,客户端接口软件(客户端I/ F)218(服务器侧远程访问软件212的一部分)就生成如前所述的差数据(以及任何参考 帧)、按子区域划分图像数据(差数据和/或参考帧数据)、以及生成待传输到客户端设备 150的消息(具有适当的对应子区域标识符)。在其中图像数据压缩由图1的服务器处理 器114执行的至少一些实施例中,所述图像数据(差数据和/或参考帧数据)由客户端接 口软件218压缩。在至少一些说明性实施例中,客户端接口软件218所传输的图像数据被在网络接 口和路由器152上(例如网络接口和路由器152内的处理器(未示出)上)执行的网络接 口和路由软件252接收并处理。客户端接口软件252实现网络协议栈(例如,TCP/IP协议 栈),其中客户端设备150作为网络可寻址的TCP/IP设备而被访问。客户端路由软件252 将所接收的图像数据消息转换为适合于向图形控制单元传输的格式(例如,USB事务),并 且基于所接收的消息内的子区域标识符将所述图像数据路由到合适的图形控制单元。分别 在客户端处理器162和172上执行的客户端远程访问软件260和270提取(并且如果需要, 则解压缩)所接收的图像数据并且更新所对应的客户端帧缓冲器(164或174)。在所述的说明性实施例中,在服务器计算机110和客户端设备150这二者中所存 在的各种处理器上执行的软件实施本文所述的许多功能。然而,本领域普通技术人员将认 识到,其他说明性实施例可以以软件或硬件(例如,使用专用集成电路(ASIC))或通过软件 和硬件的组合实现至少一些所述功能,并且所有这样的实施例都在本公开的范围内。在至少一些说明性实施例中,网络接口和路由器软件252与客户端接口软件218 协力操作以向本文所描述的远程访问系统的用户提供配置接口。所述配置接口允许用户指 定耦合到客户端设备150的每个图形控制单元的显示设备(图1的168和178)的布局、 相对位置和分辨率。例如,如果两个显示器被组织为从左到右且每个显示设备的分辨率为 1280X10M,则所述配置接口将允许使用客户端设备指定所述配置。所述配置信息(即,显 示器分辨率、显示设备的数量和显示设备的相对位置)将被发送到服务器并且被用于分别 配置所述子区域。在图1和2所描述和示出的示例中,服务器将具有由两个子区域构成的 2560X1024的单个虚拟显示器分辨率,每个子区域的分辨率为1280 X IOM,且原点位置分 别为(0,0)和(1280,0) ο因为图2中的示例的客户操作系统214被配置为仅仅识别单个图形适配器,所以 可以独立于如客户操作系统214所看到的图形适配器的配置来完成对显示器数量和每个 单独的显示器的分辨率的改变。在其他说明性实施例中,在客户操作系统级别处对图形适 配器的配置的改变(例如,通过由客户操作系统所提供的实用工具改变屏幕分辨率)可以 被客户端接口软件218关联到在服务器计算机110和客户端设备150 二者处的子区域和显 示器配置的改变。基于操作系统和基于远程访问软件的配置实用工具的其他配置和组合对 本领域普通技术人员而言将变得显而易见,并且所有这样的配置和组合都在本公开的范围 内。图3A和:3B示出适合用于实现图1的服务器计算机110的说明性计算机系统300。 图3C类似地示出适合用于实现网络接口和路由器152以及图形控制单元160和170的每一个的至少一部分的简化的计算机系统390 (相对于图:3B的系统被简化)。如图3A和;3B 所示,说明性计算机系统300包括机箱380、显示器340和输入设备370。计算机系统300 包括处理逻辑302、易失性储存装置310和非易失性储存装置364。图3C的计算机系统390 类似地包括处理逻辑391、易失性储存装置393和非易失性储存装置397。继续参照图3A、 3B和3C,处理逻辑302和处理逻辑391 二者都可以以硬件(例如微处理器)、软件(例如 微代码)或硬件和软件的组合实现。计算机系统300和391还包括计算机可读介质。所述 计算机可读介质可以包括易失性储存装置310和393(例如,随机存取存储器(RAM))、非易 失性储存装置364和397 (例如,闪速RAM、只读存储器(ROM)、硬盘驱动器、软盘(例如软盘 376)、紧致盘只读存储器(⑶-ROM,例如⑶378)),或其组合。易失性储存装置310、易失性储存装置393、非易失性储存装置364和非易失性储 存装置397中的任一个或所有这些包括例如分别由处理逻辑302或391执行的并且向计算 机系统300和390提供本文所述的一些或所有功能的软件。计算机系统300还包括使得 计算机系统300能够经由局域网和/或有线或无线广域网接收信息的网络接口(网络I/ F)362,其在图3A的示例中用以太网插口 392表示。计算机系统390包括通信接口(通信 I/F)398,其执行与网络接口 362的功能相似的功能。视频接口(视频I/F) 342耦合到计 算机系统300中的显示器340。在用于实现图形控制单元160和170的计算机系统390的 至少一些说明性实施例中(在用于实现网络接口和路由器152的计算机系统390的至少一 些说明性实施例中不存在图形控制单元160和170),显示器接口(显示器I/F)395耦合到 显示器396。当在本地操作计算机系统300时,用户经由耦合到外设接口 368的输入设备 370(例如键盘)和/或点击设备372(例如鼠标)与所述系统进行交互。当操作计算机系 统390时(例如,当用于实现网络接口和路由器152时),用户类似地经由耦合到外设接口 399的输入设备394和点击设备392(在用于实现图形控制单元160和170的计算机系统 390的至少一些说明性实施例中这些都不存在)与所述系统交互。计算机系统300的显示 器;340、连同输入设备370和/或点击设备372(以及类似地计算机系统390的显示器168 和178、输入设备394和点击设备39 可以一起作为用户接口操作。计算机系统300可以是基于总线的计算机,其具有多种总线,所述总线通过一 系列包括存储器控制器集线器(MCH) 304(有时被称为“北桥”)和接口控制器集线器 (ICH) 306(有时被称为“南桥”)的集线器或桥来互连图:3B中示出的各种元件。图:3B的说 明性示例的总线包括将处理逻辑302耦合到MCH 304的前端总线303 ;将视频接口 342耦 合到MCH 304的加速图形端口(AGP)总线341 ;将网络接口 362、非易失性储存装置364、外 设接口 368和ICH 306彼此耦合的外围组件互连(PCI)总线361 ;将一个或多个高速PCI设 备352耦合到MCH 304的高速PCI (PCIe)总线351 ;以及将MCH 304耦合到易失性储存装 置310内的双列直插式存储器模块(DIMM) 320和330的存储器总线311。计算机系统390也可以是基于总线的计算机,其具有将图3C所示的各种元件彼此 耦合的PCI总线394,所述元件包括处理器391、易失性储存装置393、显示器接口 395、非易 失性储存装置397、通信接口 398和外设接口 399。计算机系统300的外设接口 368接受来自输入设备370和诸如点击设备372之类 的其他输入设备的信号,并且将所述信号变换为适合用于在PCI总线361上传送的形式。计 算机系统390的外设接口 399类似地接受来自输入设备394和诸如点击设备392之类的其他输入设备的信号,并且将所述信号变换为适合用于在PCI总线394上传送的形式。计算 机系统300的显示器接口 342可以包括接受来自AGP总线341的信息并且将它变换为适用 于显示器340的形式的图形卡或其他合适的视频接口。计算机系统390的显示器接口 395 可以包括接受来自PCI总线394的帧缓冲器数据并且将它变换为适用于显示器396的形式 的视频控制逻辑。计算机系统300的处理逻辑302收集来自其他系统元件的信息,包括来自外设接 口 368的输入数据、和来自非易失性储存装置364或易失性储存装置310或来自经由网络 接口 362耦合到局域网或广域网的其他系统(例如用于存储并分发可执行代码的拷贝的服 务器)的程序指令和其他数据。处理逻辑302执行所述程序指令(例如,服务器远程访问 软件21 并相应地处理所述数据。所述程序指令可以进一步配置处理逻辑302以将数据 发送到其他系统元件,所述数据比如经由视频接口 342和显示器340呈现给用户的信息。 网络接口 362使得处理逻辑302能够经由网络(例如因特网)与其他系统进行通信。易失 性储存装置310可以充当用于处理逻辑302的信息的低等待时间(low-latency)临时储存 器,并且非易失性储存装置364可以充当信息的长期(但更高等待时间的)储存器。计算机系统390的处理逻辑391类似地收集来自其他系统元件的信息,包括来自 外设接口 399的输入数据、和来自非易失性储存装置397或易失性储存装置393或来自可 经由通信接口 399被计算机系统390访问的其他外部系统(例如用于存储并分发可执行代 码的拷贝的服务器)的程序指令和其他数据。处理逻辑391执行所述程序指令(例如,客 户端远程访问软件260和270)并相应地处理所述数据。所述程序指令可以进一步配置处 理逻辑391以将数据发送到其他系统元件,所述数据比如经由显示器接口 395和显示器396 呈现给用户的信息。通信接口 398使得处理逻辑391能够与其他系统进行通信。易失性储 存装置393可以充当用于处理逻辑391的信息的低等待时间临时储存器,并且非易失性储 存装置397可以充当信息的长期(但更高等待时间的)储存器。处理逻辑302并且因此作为整体的计算机系统300根据存储在非易失性储存装置 364上或经由网络接口 362接收的一个或多个程序操作。处理逻辑302可以将所述程序的 部分拷贝到易失性储存装置310中以便更快速访问,并且可以响应于输入设备370的用户 启动而在程序之间切换或执行附加程序。所述附加程序可以从非易失性储存装置364中取 回或可以经由网络接口 362而从其他位置取回或接收。这些程序的一个或多个在计算机系 统300上执行,从而使得所述计算机系统执行本文公开的至少一些功能。同样,处理逻辑391并且因此作为整体的计算机系统390根据存储在非易失性储 存装置397上或经由通信接口 398接收的一个或多个程序操作。处理逻辑391可以将所述 程序的部分拷贝到易失性储存装置393中以便更快速访问,并且可以响应于输入设备394 的用户启动而在程序之间切换或执行附加程序。所述附加程序可以从非易失性储存装置 397中取回或可以经由通信接口 398而从其他位置取回或接收。这些程序的一个或多个在 计算机系统390上执行,从而使得所述计算机系统执行本文公开的至少一些功能。尽管本文所述的说明性实施例使用2个显示器作为客户端设备150的一部分,但 是本领域普通技术人员将认识到其他说明性实施例可以包括以多种配置组织的任意数量 的显示器。示例可以包括被组织为整体显示器的上半部和下半部的2个显示器,或显示器 的4X3矩阵,这只是举几个例子。显示器的所有这样的配置和数量都在本公开的范围内。
由于简化了客户端设备150的组件的设计,所以可以减小所述客户端设备的整体 尺寸和轮廓(profile)。例如,在至少一些说明性实施例中,图形控制单元可被减小至类似 USB存储棒(有时被称为“dongle”)的外壳,其用VGA连接器耦合到显示器并且用USB连 接器耦合到网络接口和路由器。在其他说明性实施例中,所述图形控制单元可以集成在所 述显示设备外壳内,其中USB电缆将网络接口和路由器耦合到每个组合的图形控制单元/ 显示设备。其他外壳配置对本领域普通技术人员而言将变得显而易见,并且所有这样的配 置都在本公开的范围内。图4A示出根据至少一些说明性实施例的用于在基于图像的远程访问系统的服务 器内生成并分发图形图像数据的方法400。在服务器帧缓冲器内的图像数据被划分为子区 域(块40 之后,通过将包括当前图像数据的帧缓冲器与包括较旧的帧数据的另一个帧缓 冲器相比较来生成差数据(块404)。所述差数据基于包含所述数据的帧缓冲器子区域而被 划分(块406),并且用于每个区域的数据被压缩(块408)。在至少一些说明性实施例中, 省略了块408的压缩。一旦所述数据被压缩,就形成消息,其中每个消息包括对应于单个子 区域的差数据,并且进一步包括对应的子区域标识符,并且将具有差数据的消息传输到客 户端设备(块410),从而结束所述方法(块412)。在至少一些说明性实施例中,除了差数 据之外,子区域特定的参考帧也被传输到客户端。图4B示出根据至少一些说明性实施例的用于在基于图像的远程访问系统的客户 端内接收并路由图形图像数据的方法450。在接收到与服务器帧缓冲器内的子区域相关联 的图形图像数据后,所述图像数据被路由到耦合到与相同的子区域相关联的显示器的图形 控制单元(块45 。在至少一些说明性实施例中,所接收的图形图像数据包括如由方法400 描述的那样所生成的差数据,而在其他说明性实施例中,所接收的图形图像数据还可以包 括参考帧数据。一旦所述图形图像数据被路由到图形控制单元,所述数据就被解压缩(块 454)。在至少一些说明性实施例中,省略了块454的解压缩。在解压缩之后,图形图像数据 被用于更新对应于与所述数据的子区域相关联的显示器的客户端帧缓冲器(块456),从而 结束所述方法(块458)。上面的讨论意欲说明本发明的原理和各种实施例。对于本领域技术人员来说,一 旦完全理解上述公开,许多变形和修改将变得清楚。例如,尽管所述说明性实施例描述了使 用USB接口在网络接口和路由器与其他客户端组件之间进行通信,但是其他说明性实施例 包括其他合适的通信接口,并且所有这样的通信接口都在本公开的范围内。而且,尽管所述 服务器计算机被描述为使用双缓冲的帧缓冲器,并且所述客户端设备被描述为使用单缓冲 的帧缓冲器,但是任意数量的附加帧缓冲器可以在所述的服务器计算机和客户端设备内使 用,并且所有这样的帧缓冲器配置都在本公开的范围内。此外,尽管在一些说明性实施例中 可能仅仅描述了差数据,但是除了如本文所描述的那样生成和分发差数据之外,所描述的 系统和方法也应用于参考帧和参考帧数据的附加分发。而且,尽管本文所描述的实施例包 括主操作系统,但是其他说明性实施例包括不需要主操作系统的服务器远程访问软件,或 者包括作为客户或主操作系统的服务执行的服务器远程访问软件。而且,尽管在所述的说 明性实施例中示出配置有单个图形适配器的客户操作系统,但是其他说明性实施例可以包 括配置有多个图形适配器(真实的或虚拟的)的客户操作系统,每个图形适配器配置有如 本文所述的多个子区域和显示设备。下面的权利要求意欲被解释为包括所有这样的变形和修改。
权利要求
1.一种方法,包括将存储在与图形适配器相关联的第一帧缓冲器中的图形数据划分为多个子区域,所述 多个子区域的每一个唯一地与多个显示器之一相关联,并且所述帧缓冲器内的每个位置包 括与待呈现在显示器上的像素相关联的数据;通过将也与所述图形适配器相关联并且包括先前呈现在所述多个显示器上的数据的 第二帧缓冲器中存储的数据与第一帧缓冲器中存储的数据相比较来生成差数据;以及在消息内通过网络将至少部分差数据传输到包括所述多个显示器的客户端设备,所述 消息包括与子区域相关联的差数据,并且进一步包括与所述子区域相关联的标识符; 其中所述差数据能够用于更新所述多个显示器上所呈现的图像。
2.权利要求1的方法,进一步包括在所述传输之前压缩所述差数据。
3.权利要求2的方法,进一步包括在所述传输之后在客户端工作站处解压缩所述差数据。
4.权利要求1的方法,进一步包括 在客户端设备处接收所述消息;基于所述消息内的标识符将所述消息内的差数据路由到所述多个显示器中的显示器;以及使用所述消息内的差数据来更新所述显示器上呈现的图像。
5.权利要求1的方法,进一步包括操作所述客户端设备以配置由所述图形适配器生成 的图像的分辨率。
6.权利要求1的方法,进一步包括操作所述客户端设备以定义第一帧缓冲器内的所述 多个子区域、将标识符与所述多个子区域中的每一个相关联、以及将所述多个子区域中的 每一个与所述多个显示器之一唯一地相关联。
7.一种系统,包括服务器计算机,所述服务器计算机包括 服务器处理逻辑;服务器存储器,其耦合到所述服务器处理逻辑;以及图形适配器,其耦合到所述服务器处理逻辑和服务器存储器,所述图形适配器包括多 个服务器帧缓冲器,所述多个服务器帧缓冲器中的每一个内的每个位置包括与待呈现在显 示器上的像素相关联的数据;其中第一服务器帧缓冲器内存储的数据被分组为第一服务器帧缓冲器内的子区域,每 个子区域唯一地与多个显示设备中的一个显示设备相关联;以及其中通过确定第一服务器帧缓冲器中存储的数据与第二服务器帧缓冲器中存储的数 据之间的差来生成用于更新呈现在所述多个显示设备中至少一个上的图像的差数据,第二 服务器帧缓冲器中的数据先前已经被显示。
8.权利要求7的系统,其中所述差数据由所述服务器处理逻辑或所述图形适配器生成。
9.权利要求7的系统,其中所述图形适配器是包括图形处理逻辑并且进一步包括含有 所述多个帧缓冲器的图形存储器的真实的图形适配器。
10.权利要求7的系统,其中所述图形适配器是虚拟的图形适配器并且所述服务器存储器包括所述多个帧缓冲器。
11.权利要求7的系统,进一步包括耦合到所述服务器处理逻辑的服务器网络接口,其 中包括与所述多个子区域中的子区域相关联的差数据的消息由网络接口通过网络传输到 客户端设备,所述消息进一步包括与所述子区域相关联的标识符。
12.权利要求11的系统,其中所述差数据在被传输到客户端设备之前被服务器处理逻 辑压缩。
13.权利要求11的系统,其中所述客户端设备包括 客户端网络接口和路由器;多个图形控制单元,其耦合到所述客户端网络接口和路由器,每个图形控制单元生成 视频控制和数据信号;以及所述多个显示设备,每个显示设备耦合到所述多个图形控制单元中的图形控制单元; 其中所述客户端网络接口和路由器从服务器计算机接收消息并且基于所述消息内的 标识符将该消息路由到所述多个图形控制单元之一;以及其中所述图形控制单元使用所述消息内的差数据来更新耦合到所述图形控制单元的 所述多个显示设备中的显示设备上呈现的图像。
14.权利要求13的系统,其中如果从客户端网络接口和路由器接收的消息内的差数据 先前被服务器计算机压缩,则所述多个图形控制单元中的每一个解压缩所述差数据。
15.权利要求13的系统,进一步包括 鼠标,其耦合到客户端网络接口和路由器; 键盘,其耦合到客户端网络接口和路由器;其中来自键盘和鼠标的数据被客户端网络接口接收并且通过网络被传输到服务器计 算机。
16.一种计算机可读介质,包括使得第一处理器进行下列操作的软件将存储在与图形适配器相关联的第一帧缓冲器中的图形数据划分为多个子区域,所述 多个子区域中的每一个唯一地与多个显示器之一相关联,并且所述帧缓冲器内的每个位置 包括与待呈现在显示器上的像素相关联的数据;通过将也与所述图形适配器相关联并且包括先前呈现在所述多个显示器上的数据的 第二帧缓冲器中存储的数据与第一帧缓冲器中存储的数据相比较来生成差数据;以及通过网络在消息内将至少部分差数据传输到包括所述多个显示器的客户端设备,所述 消息包括与子区域相关联的差数据,并且进一步包括与所述子区域相关联的标识符; 其中所述差数据能够用于更新所述多个显示器上所呈现的图像。
17.权利要求16的计算机可读介质,其中所述软件进一步使得第一处理器在传输之前 压缩所述差数据。
18.权利要求17的计算机可读介质,其中所述软件使得第二处理器在传输之后在客户 端工作站处解压缩所述差数据。
19.权利要求16的计算机可读介质,其中所述软件使得第二处理器使用所述消息内的 差数据来更新所述多个显示器中的显示器上呈现的图像。
20.权利要求19的计算机可读介质,其中所述软件使得第三处理器在客户端设备处接 收所述消息,并且基于所述消息内的标识符将所述消息内的差数据路由到与所述显示器相关联的图形控制单元。
全文摘要
本文描述了基于图像的远程访问系统和方法。至少一些说明性实施例包括一种方法,该方法包括将与图形适配器相关联的第一帧缓冲器(402)中的图形数据划分为多个子区域(所述子区域的每一个唯一地与多个显示器之一相关联,并且所述帧缓冲器内的每个位置包括待呈现在显示器上的像素数据),通过将也与所述图形适配器相关联并且包括先前呈现的显示数据的第二帧缓冲器中的数据与第一帧缓冲器中的数据相比较来生成差数据(404);以及在消息内通过网络将至少部分差数据(410)传输到包括所述多个显示器的客户端设备(所述消息包括与子区域(406)相关联的差数据以及子区域标识符)。所述差数据能够用于更新所述多个显示器上的图像。
文档编号H04L12/28GK102047612SQ200880129365
公开日2011年5月4日 申请日期2008年3月24日 优先权日2008年3月24日
发明者D·A·托马斯, R·M·霍奇穆思 申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1