优选实施方式的详细描述
本发明涉及多用户远程终端(RT)计算机系统的改进。尽管所述实施方式涉及多用户RT计算机系统,相同的原理和特征可以同样适用于其它类型的单用户系统和其它类型的瘦客户机。
参照图1,本发明提供了多用户计算机系统100的高效体系结构。被称作“主机120”的基于多用户服务器的计算机120为多个各自利用某种形式远程终端的多个用户处理应用程序。包括本地终端110主要用于单用户或管理任务,并且主机120产生显示更新网络流通过有线网络290发往RT 300、302以及304等等的每一个,或者通过无线网络290发往显示器306。RT的用户能够分时共享主计算机120,如同这是他们自己的本地计算机一样,并且以在本地计算机上可获得的相同类型的用户体验而获得对所有类型的图形、文本和视频内容的完全支持。附加连接292可以是连接到WAN、存储子系统、其它主机或各种其它数据中心连接,它可以采用千兆以太网、10G以太网、iSCSI、光纤信道(FC)、光纤信道IP(FCIP)或者另一电学或光学连接的形式。连接242可以将其它数据或视频源连接到主机系统120。
在整个文件中,“主机”可以是指可用多种方法配置成支持基于多用户服务器的计算的主机120、主机200或主机400。多主机120可以群集在一起以形成可动态共享的计算资源。在每一主机120中,多计算机主机200可以采用通过底板连接的机架中刀片的形式或者另一多处理器配置而组装在一起。虚拟化单用户操作系统(OS)的各种多用户操作系统或软件可以部署在一个或多个处理器刀片或主板上。诸如Citrix或Windows Server的操作系统被设计成多用户OS。尽管不是特别地为多用户而设计,Windows XP可以通过诸如VMWARE或Xen Source的较低层虚拟化软件或者如同多用户OS一样快地执行用户切换的其它手段的帮助而用于这样的配置中。不同的管理控制可以使得RT和程序静态或动态地在处理器间移动。负载平衡可由操作系统对每个处理器执行,或者该系统可以在多个处理器间执行负载平衡。
图2是服务器系统的一个刀片200的框图,在该服务器系统中每一刀片自身可以是主计算机120或者可将多个刀片装在机架上以创建能力更强的主计算机120。根据本发明的一个实施方式,单个刀片(主板)系统200或多个刀片200可用于多用户系统100。主机系统120具有的刀片和CPU越多,能够同时支持的用户越多。主计算机200的基本元件最好包括,但不限于CPU子系统202、总线桥控制器204、诸如PCI快速的主系统总线206、本地I/O 208、主RAM 210和图形和显示控制器212及其可能的自带存储器218。图形和显示控制器212可以有允许本地连接222连到本地终端110的接口220。程序源和多媒体位流可以通过网络接口209之一或经由带有I/O路径246的程序源240之一进入主计算机200。网络控制器228也处理显示更新流,并且通过一个或多个网络连接290向各个RT 300-306等等提供网络通信。这些网络连接可以是有线或无线的。
在其它配置中,一个以上的CPU子系统202可以共享诸如图形与视频显示控制器212和终端服务加速器224之类的设备中的一个或多个。其它系统可以分割,其中网络控制器228可由多主机系统200共享。系统总线206可以连接到底板总线以在系统中的多个刀片之间进行连接。路径226可以共享底板总线206,或者可以具有额外的系统间总线。系统中可以包括一个以上的网络控制器228,其中一个用于通往多个远程终端的连接290,另一个网络控制器(未示出)执行到其它刀片、其它服务器系统或诸如存储系统的其它数据中心设备的基础设施网络连接。每一个CPU子系统202可以包括多个处理器核心,其中每个核心可以同时执行一个以上的线程。
主计算机200最好包括连接到主系统总线206的终端服务加速器(TSA)224,并且可以具有到网络控制器228的输出路径226。TSA 224可以包括专用RAM 230,或者可以共享主系统RAM 210、图形和显示控制器RAM 218、或网络控制器RAM232。主RAM 210可以如RAM 234处所示地与CPU子系统202更紧密地相关联。另外,当主机系统200可以共享主RAM 210时,与图形和显示控制器212相关联的RAM 218可能就不必要了。
TSA 224的功能是卸载主CPU 202对每个RT的一些管理,并且加速一些已卸载的处理,使每个RT都具有经改进的显示支持。卸载与加速支持的类型包括将图形操作封装到远程图形命令中、协助确定将哪些能力和位图高速缓存在每一RT处以确定哪些图形命令最为合适、编码并封装需要传送到RT的位图以及最佳地管理多媒体位流。
还可以支持诸如检查和封装可扩展标记语言(XML)通信量、简单对象访问协议(SOAP)、HTTP通信量、Java虚拟机(JVM)以及与基于因特网的通信相关联的其它通信量的附加功能。主机系统连同TSA 224一起可以使RT在执行任何所需的反垃圾邮件、反病毒、内容过滤、访问限制执行或基于其它分组过滤的算法的同时,有效地执行对整个因特网的远程访问。在主机是因特网访问的代理的情况下,这种附加功能可能对于支持RT因特网浏览会特别有用。尽管系统中可能有一些冗余,但这种方法可以提供比在主机系统和WAN之间利用的因特网安全设备更具体的用户控制。
RT上的特殊浏览器可以使用基于因特网的通信量的其它增强手段,其中可能包括在RT显示设备及RT内的执行能力的基础上对基于因特网的内容进行重新格式化或重新编码。例如,如果RT设备是屏幕分辨率有限的蜂窝电话或者个人数字助理(PDA),TSA 224可以将高分辨率内容过滤成低分辨率图像用于更快更适当地显示。TSA 224可以运行其它更智能的web页面解释算法,以便执行诸如移除横幅广告及其它无关信息的功能,使核心信息可被发送到蜂窝电话。诸如那些利用Active-X控件、Macromedia Flash或者其它运行时间程序的其它类型的web内容可能与诸如电话或PDA的设备并不兼容。TSA 224可作为媒介并在Active-X控件之后将显示数据传送给等待着的PDA。也可以执行应用层正则表达式(RegEx)内容处理。也可以执行重新编码以提高客户机的安全性。尽管可XML和SOAP可能遭到劫持和其它形式的病毒通行,TSA 224可以将XML和SOAP重新编码成安全的显示格式,使RT客户机不会遭受这种风险。
多媒体位流可以包括已为压缩格式的视频流,该视频流存储在主机系统200本地或者经由系统网络接口290或程序源接口246之一来接收。在一些配置中,多媒体位流已经是与目标RT兼容的格式。在这种情况下,TSA 224将位流封装成适当的分组格式以向RT传输。封装可以包括添加报头信息,诸如视频显示窗口的原点,或者修改分组组织,诸如将传输流转换成具有不同分组大小的程序流。
在很多情况下,多媒体位流将不会采用容易被目标RT处理的格式,或者不采用适于网络连接的格式。在这种情况下,TSA 224执行对多媒体位流解码与重新编码、译码或变码流的更复杂的步骤。例如,传入多媒体位流可以是编码的HDTVMPEG-2流。如果RT处的窗口尺寸设置为320×240的小窗口,节省网络带宽并使TSA 224将视频译码和变码流成表示所需显示窗口大小的低比特率是有意义的。类似地,如果传入视频采用RT不能解码的格式,则TSA 224可以将视频译码成可兼容的格式。即使格式可兼容,也可能存在诸如数字版权管理(DRM)加密方案的其它不兼容。TSA 224也可以从一个DRM或加密方案转换到适于目标RT的方案。
微软的远程桌面协议(RDP)为压缩视频位流提供了明显低效的处理。利用RDP,主机系统内的驱动器检测位流并将其解码成独立于设备的位图(DIB)。随后将DIB转换成RDP传输命令,并且尝试通过网络将DIB格式数据传输到RT。在大多数情况下,只有几个DIB数据帧到达RT而用于显示。因此,主机CPU执行解码以及通过网络以低效率格式发送已解码数据的效率都不高。其它基于RDP的图形操作同样使用DIB。
传统的图形位图,诸如来自网站的那些,也需要从主机系统200传输到RT。TSA 224可以对诸如DIB的传统图形位图执行各种级别的编码。对图形位图的编码可以是无损耗或者有损耗的,其目标是提供原始图形质量的视觉上不可分辨的表示。TSA 224的简化软件接口可以仅仅包括通过RDP API与主CPU的进行接口,而更积极的实现可以使得TSA 224能够访问底层DriectX驱动程序框架。已编码的DIB传输和特定压缩视频域传输不是标准RDP实现的一部分。因此,这些传输可以被背负到现有RDP传输格式中,作为某些类型的专有RDP扩展来运行或者在RDP框架外运行。
某些版本的主机操作系统和RDP需要满足RDP协议的额外安全要求。可能需要RDP客户机与主机交换密钥以使用加密的分组。因为TSA 224截取RDP客户机分组,TSA 224可以包括对密钥交换与解密的适当加速与卸载以与主机处理器通信。另外,为了维护系统安全,TSA 224和网络控制器228将确保与RT的所有通信都被适当地加密。
图3是根据本发明一个实施方式的远程终端(RT)300的框图,该远程终端较佳地包括但不限于,显示屏310、本地RAM 312和远程终端系统控制器314。远程终端系统控制器314包括键盘、鼠标和I/O控制子系统316,该I/O控制子系统具有用于鼠标318、键盘320和诸如用于再现音频的扬声器的其它各种各样设备322的对应连接或具有可以支持各种设备的通用串行总线(USB)连接。也可以包括用于通过安全手段(包括生物统计或安全卡)支持用户验证的其它集成或外围连接。这些连接可被指定为诸如PS/2型键盘或鼠标连接的单一用途,或者诸如USB的通用用途。在其它实施方式中,I/O可以包括游戏控制器、本地无线连接、IR连接或根本没有连接。远程终端系统300也可以包括诸如DVD驱动器的其它外围设备。
本发明的一些实施方式在远程终端系统300处不需要任何输入。这种系统的一个例子是零售商店或电子广告牌,其中不同的显示器可用在不同的地点,并且可以显示各种资讯和娱乐信息。每个显示器可以独立运作并且可以基于各种因素更新。类似的安全系统还可以包括诸如信息亭或银行里的自动取款机(ATM)的某些接受触摸屏输入的显示器。诸如娱乐游戏机的其它安全系统也可以基于此类远程终端。
网络控制器336支持网络路径290上的安全协议,在该网络路径上,所支持的网络可以是有线或者无线的,并且通过网络传送的数据可以经由密钥交换而加密。用于每个远程显示系统300的所支持网络需要由图2的网络控制器228直接或通过某类网桥予以支持。普通网络的示例是以太网,诸如运行某类以太网的CAT 5线路,较佳的千兆以太网,其中I/O控制路径可以使用诸如标准传输控制协议和因特网协议(TCP/IP)的以太网支持协议或与UDP传输相结合的某种形式的轻量握手。诸如实时数据流协议(RTSP)和连同实时控制协议(RTCP)一起的实时传输协议(RTP)的产业成果可用于加强数据分组传输,并且可通过增加中继转发协议得到进一步加强。诸如层3差分服务代码点(DSCP)、作为数字生活网络联盟(DLNA)一部分的WMM协议、微软的Qwave(高质量音视频体验)、uPnP(通用即插即用)、QoS(服务质量)和802.1p协议的围绕使用服务质量(QoS)成果的其它新近成果也是使用现有网络标准的改进方法。
除了用于支持I/O设备的数据分组之外,网络还承载已封装、已编码的显示命令以及显示所需的数据。CPU 324与网络控制器336、2D绘图引擎332、3D绘图引擎334、数据解码器326、视频解码器328和显示控制器330相协作,以支持可能在主机计算机上呈现的所有类型的可视数据表示,并且将他们在显示屏310上本地显示。对RT包括显示处理块的任何特定组合没有要求。虽然更有可能具有至少一类解码器或绘图引擎,但是极瘦的RT可能仅仅包括带有进行显示处理的CPU的显示控制器330。
RT可以首先通过从带有由主计算机200通过网络提供的附加信息的本地闪存(未示出)引导而被初始化。在RT初始化的过程中,RT系统控制器314和显示屏310之间的连接可用于反向或双向模式,这可采用诸如显示数据信道(DDC)接口、扩展显示标识数据(EDID)及其它扩展的标准来标识显示监视器的能力。经由键盘、鼠标和I/O控制器316的USB连接也可以用于与显示屏310的连接。诸如可用的分辨率和控制的信息随后由CPU 324处理。系统300可以实现诸如uPnP的协议或能与主机200通信的另一发现机制。在初始化通信的过程中,CPU 324可以向主机200提供包括显示监视器信息的RT信息,以便每个RT可以在主机一侧例示。
初始显示屏可以来自闪存或者主计算机200。在显示数据的第一个完整帧之后,主计算机200只需要通过网络290发送部分帧信息以作为显示更新网络流的一部分。如果显示器的像素并不从前一帧发生变化,则显示控制器330可以用来自本地RAM存储器312的前一帧内容来刷新显示屏310。
显示更新经由网络流发送,并且可以由已封装的2D绘图命令、3D绘图命令、已编码的显示数据或已编码的视频数据组成。网络控制器326接收网络显示流,并且CPU 324从封装报头中确定功能单元332、334、326和328中的哪一个是该分组所需要的。功能单元执行必要的处理步骤以绘制或者解码图像数据,并且用新的图像来更新RAM 312的适当区域。在下一刷新周期中,显示控制器330将该已更新帧用于显示屏310。
显示控制器330将当前图像帧的表示从RAM 312传输到显示屏310。通常,该图像以准备显示的格式存储在RAM 312中,但是在RAM成本成问题的系统中,可采用已编码的格式来存储该图像或部分该图像。外部RAM 312可以由远程终端系统控制器314内的大型缓冲器所代替。显示控制器330也可能会将存储在RAM312中的两个或更多显示面相结合以便合成用于显示的输出图像。可以将不同的混合操作连同合成操作一起执行。
CPU 324与TSA 224相通信以便最好地设立和管理RT的总体显示操作。初始设立可以包括列举RT系统控制器314所支持的功能类型、显示屏310的规格、RAM312可用于缓冲和高速缓存数据的量、由2D绘图引擎332所支持的指令集、由3D绘图引擎334所支持的指令集、由数据解码器326所支持的格式、由视频解码器328所支持的格式以及显示控制器330的能力。在运行时期间的其它管理优化包括在RAM 312中管理和高速缓存显示位图,从而无需重发它们。
图4示出了对主机系统200进行数处改变的多用户主机系统400的第二优选实施方式。首先,用更强大的图形处理单元(GPU-P)412来代替图形与视频显示控制器212,该图形处理单元包括经由分组而对选择性显示更新的支持,并且可以遵循某些或者全部所提出的VESA(视频电子标准协会)的数字分组视频链接(DPVL)标准。其次,用TSA-G 424来代替TSA 224,TSA-G 424被改进成经由系统总线206更直接地支持来自GPU-P 412的分组显示更新,或者较佳地支持可以是串行数字视频输出SDVO1与SDVO2的输入路径414和416或具有不同总线带宽、信令协议和频率的一般端口。示例包括:数字视频输出(DVO)、数字可视接口(DVI)、高清多媒体接口(HDMI)、显示端口或其它的低电压差分信令(LVDS)、最小跳变差分信令(TMDS)以及PCI Express(快速)或另一方案。显示输出路径可以在足以在高刷新率下输出多帧视频的速度下运行,其中帧可以是与一个以上目标RT相对应的选择性更新矩形。类似于TSA 224,TSA-G 424可以经由主系统总线206通过专用链路426连接到网络控制器228,或者经由系统级芯片(SOC)实现而更紧密地集成。
除了执行传统图形处理之外,GPU-P 412生成指示哪一部分显示被改变的选择性更新。选择性更新可以采用通过视频输出路径414或416或者通过主系统总线206的输出的矩形或拼接片的形式。矩形更新包括分组报头以指示窗口的原点、尺寸和格式。原点可以用来指示哪一RT是目的地。也可以使用拼接片,并且可以将其标准化为一个或多个固定的大小,这样报头可能需要更少的信息来描述拼接片。诸如在RT处是否以及如何缩放矩形或拼接片的其它信息也可以包括在报头中。其它形式的选择性更新包括对BitBlt、Area Fill(区域填充)以及Pattern Fill(模式填充)的支持,其中并不发送大块数据,而是将最小量的数据连同用于在RT上执行的操作的命令参数一起发送。其它报头支持视频流、同步锁相、缩放视频流、伽马表(Gamma Table)和帧缓冲控制(Frame Buffer Control)形式的更新。建议DPVL规范详述了对连同其报头一起的选择性更新的一个可能实现。
通过将RAM 418组织成各自包含用于多个RT的显示数据的各种表面,可将一个GPU-P 412有效地虚拟化成由系统对所有RT 300使用。GPU-P 412的2D、3D以及视频图形处理器(未示出)较佳地用于实现高图形和视频性能。图形处理单元可以包括2D图形、3D图形、视频编码、视频解码、缩放、视频处理以及其它先进像素处理。GPU-P 412的显示控制器也可以执行诸如混合和键控视频和图形数据的功能,以及总体屏幕刷新操作。除了用于主和辅显示表面的RAM 418外,还有足够的屏外存储器来支持各种3D和视频操作。作为管理选择性更新的DPVL方法的替换,在RAM 418内可以有选择性更新缓冲存储器(S-缓冲器)404。在一个实施方式中S-缓冲器404存储与用于各个虚拟显示的每个拼接片相对应的状态位、签名或者状态位与签名两者。在另一实施方式中,S-缓冲器404存储带有或不带有报头的拼接片自身、状态位和签名信息,其中拼接片被安排成输出用于选择性更新。
图形引擎和显示控制器通常会合成与每个RT显示器主表面对应的完整显示图像。RAM 418将会有效地包含所有RT的显示帧阵列。DPVL允许高达64K×64K的虚拟显示,其中主要应用于多监视器支持。在这一应用中,RT显示可被映射到64K×64K阵列中。因为这一应用涉及多个独立RT,GPU-P 412可以添加不同的安全特征以保护不同的显示区域,并且防止用户能够访问另一用户的帧缓冲器。出于安全性和可靠性考虑,系统较佳地包括防止对显示存储器受保护部分的未授权访问的硬件加锁。
图5示出了图4存储器418的示例配置,其中虚拟显示空间被设置为水平3200像素和垂直4800像素。存储器418被划分成8个1600×1200的显示区域,分别标记为520、522、524、526、528、530、532和534。典型的高质量显示模式可配置成每像素24位的位深度,尽管该配置往往使用每像素32位,如同在RAM 418中所组织的那样,以便在由图形和视频处理器访问显示器时更容易将额外8位安排和用于其它目的。就GPU-P 412而言,对拼接存储器的说明在本质上是概念性的。实际的RAM寻址还会涉及到存储器页面大小以及其它因素。
图5在显示区域528进一步示出了显示更新矩形550。1600×1200显示的虚线540对应于被称为分区的256×256像素的更粗糙的块边界。从显示窗口550显而易见,显示窗口界线的安排并不一定与分区界线对齐。这是典型的情形,因为用户会在显示屏上对窗口随意调整大小和定位。为了支持不需要更新整个帧的远程屏幕更新,受显示窗口550所影响的每个分区需要被更新。而且,显示窗口550内的数据类型和周边显示像素可能是完全不同的类型并且不相关。这样,基于编码算法的分区如果有损耗,则需要确保不存在与分区的边缘或者与显示窗口550的边界相关联的视觉伪像。实际的编码过程可以在诸如8×8或16×16的比分区小的块上发生。因此,优选的实施方式使用确定性的编码算法,其中不管周边像素如何,对于一组像素仍可以得到相同的结果,并且对窗口的任意安排不会产生伪像。
编码方案的块边界对拼接片而言也是一种考虑因素。例如,编码方案可能需要8像素倍数的块边界。如果源拼接片不是8像素的倍数,那就需要用周边数据来填补。在另一种情况下,往往更优选地将块边界定向到屏幕而非特定的用户放置矩形或拼接片。如果用户操作80×80像素的窗口,即使理论上可以将它置为在水平和垂直方向都使用10个8×8块的最小值(总共100块),更有可能的是它在每个方向上的跨度为11个块(121块)。矩形更新以及矩形的任何进行编码将因此对88×88像素(121块)进行编码,其中需要填补某些周边像素。尽管DVPL规范并不将矩形编码当作选择性更新方案的一部分,在DVPL中可能有其它的粒度限制,这将导致使用DVPL CRTC输出机制的模8像素的合适大小的矩形边界。
也可以支持带有不同大小显示的RT。在一个示例中,GPU-P 412可以支持任意数量任意大小的显示。在另一示例中,可以比较简单地支持作为子窗口的较小显示或者作为跨越一个以上显示区域的覆盖窗口的较大显示。如矩形536所刻划,1920×1080的窗口将需要同时使用532和534两个区域。尽管这样浪费面积,但是比为每一显示创建定制大小更简单地实现。因为GPU-P 412的选择性矩形更新机制,仅仅屏幕的相关区域被地传送。当DVPL动态控制CRTC控制寄存器以管理选择性更新时,诸如S-缓冲器的其它更灵活的机制可被实现为需要更少的处理器干预。
更灵活的系统还可以将DVPL矩形的概念拆分为诸如拼接片的更多的规则大小的实体。在具有任意矩形大小的报头信息的效率和使用较不灵活拼接片大小但更多屏幕数据的潜在更简单的报头之间存在折衷。在一个优选的实施方式中,拼接片可被动态设置为块大小的任意倍数,其中块大小是用于数据编码算法的最小实体。块可以被定向到源图像或者被定向到屏幕的固定块位置。拼接片的大小会包括在报头信息中。
诸如530的存储器区域可被指定为S-缓冲器404以管理选择性更新。在一个实施方式中,S-缓冲器包括相应于显示帧520、522、524和526的拼接片的状态位,其中状态位指示拼接片是否需要选择性更新。S-缓冲器404还可以为每个拼接片存储签名,该签名随后用于确定对选择性更新的需要。在另一实施方式中,来自帧520、522、524和526的需要选择性更新的拼接片被复制到存储器区域530并排队用于选择性更新输出。已排队的拼接片可以包括各种报头、状态和签名信息。
图6A示出了图5显示映射536的更详细的视图,该显示映射具有1920×1080的称作1080P的高清电视(HDTV)分辨率。在图6A中固定大小的矩形614根据屏幕位置边界而定向。每个矩形都横向160像素纵向120像素。每行有12个矩形(12×160=1920),每列有9个矩形(9×120=1080)。系统可以将这些矩形用作构成选择性更新基础的拼接片。在图6B中另一系统进一步将矩形614分为含有80×40像素的拼接片620,并且系统可以选择这些更小的拼接片作为选择性更新的基础。更灵活的系统可以利用由6个拼接片620组成的较大矩形614和这些拼接片自身,并且使用报头信息来描绘在任一给定时刻输出哪一类型。
在这两种情况下,构成编码算法基础的块容纳在拼接片或矩形内。假定8×8块,每个拼接片具有10×5配置的块,每个矩形具有20×15配置的块。利用较大矩形和较小三角形两者的系统在确定选择性更新要求时可以对于这两者使用不同的机制。在一个优选的实施方式中,较大矩形可以具有指示它们是否已变化的关联状态位,并且较小的拼接片可以利用签名来做出这一判定。这些状态位和签名可以如下面所描述地用S-缓冲器来管理。
GPU-P 412可以集成该处理以直接执行对拼接片的选择性编码,或者每个拼接片可以使用选择性更新过程来检查并输出到TSA-G 424而且将会包括适当的报头。该报头将由TSA-G 424处理,并且基于报头内的字段,TSA-G 424将会知晓这些拼接片所针对的RT以及显示屏上的位置。在适当的情况下,TSA-G 424将会把拼接片编码成压缩格式、调整任何所需的报头信息以及提供拼接片和报头以供进一步网络处理。
GPU-P 412和TSA-G 424可以不同地划分选择性更新过程。在某些情况下,GPU-P 412可以执行完全的管理,并且会仅向TSA-G 424发送需要更新的拼接片。在其它的情况下,需要TSA-G 424执行对片的进一步过滤以便确定哪些片真正需要更新。在GPU-P 412内,选择性更新机制可以被硬件化或者需要CPU干预,可以跨越绘图引擎和选择性更新刷新引擎来实现该硬件。还可以在GPU-P 412或者TSA-G 424中执行对拼接片的编码。GPU-P 412还可以通过数字视频总线向TSA-G424输出RT的图形绘制命令,或者软件驱动器可以直接向TSA-G 424提供这些命令。
对于选择性拼接片更新,在第一实施方式中,使用S-缓冲器,其中GPU-P 412具有管理每个拼接片状态位的绘图引擎和当管理每个拼接片的选择性显示更新时监控这些状态位的选择性更新刷新引擎。如同3D图形中使用的Z-缓冲器一样,S-缓冲器可被实现成单独的数据存储面。如同Z-缓冲器一样,增强的GPU-P 412的硬件绘图操作可以更新S-缓冲器状态位而无需额外命令。选择性更新硬件随后使用这些状态位以确定在RT处哪些拼接片需要更新。与显示控制器的刷新周期类似,选择性更新硬件可以周期性地遍历S-缓冲器并且读取这些状态位。基于状态位的状态,选择性更新硬件或是忽略无需更新的拼接片,或是读取用于选择性更新的拼接片、将该拼接片连同报头信息一起输出并且相应地更新状态位。在一个效率较低的实现中,GPU-P可以使用更传统的图形绘制操作来生成S-缓冲器。
在无需特定S-缓冲器硬件的另一优选实施方式中,GPU-P 412可以管理需要更新的串连拼接片的选择性更新缓冲器。选择性更新缓冲器可以构造在单独的存储区域中。每次GPU-P执行改变拼接片的操作,它会随后将该拼接片复制到选择性更新缓冲器。报头信息可以存储在每个拼接片的起始处,并且这些拼接片可以打包在一起。设置显示控制器以使用选择性更新缓冲器,并且使用标准显示控制器输出操作通过刷新端口将其输出。GPU-P 412可以管理诸如环形缓冲器之类的一个或多个缓冲器或串连拼接片的链接缓冲器列表,并且通过被TSA-G 424视为拼接片列表的SDVO输出来提供连续输出。对于GPU-P,可以使用各种方案来判断列表中布置的优先级。对于利用具有较少的用于支持多个RT的特定硬件和具有很少或没有特定选择性更新硬件的GPU-P,这种方法可能是最有效率的。
在另一优选的实施方式中,TSA-G 424与GPU-P 412一起操作以决定在RT 300处的哪些拼接片需要更新。GPU-P 412在逐拼接片的基础上管理状态位的能力可能非常困难,可以将这些拼接片组合成大的拼接片或者完整虚拟RT显示并且对于状态位仅仅具有有限的颗度。将大拼接片减小为小拼接片更新可以基于跟踪每个拼接片的签名来执行。签名通常在第一次处理拼接片时生成并且对照后续签名来检查。签名可以由根据传入数据或与GPU-P 412的选择性更新硬件相结合来操作的TSA-G 424生成并处理。如果TSA-G 424为每个拼接片执行签名检查,则到每个RT 300的网络带宽可以得到保持。如果GPU-P 412执行签名检查,那么通过视频路径到TSA-G 424的带宽也将得到保持。GPU-P 412可以生成并管理与拼接片对应的签名存储面,其中状态位可以是签名面或单独面的一部分。或者,状态位和签名位可以由GPU-P 412在RAM高速缓存中管理,并且用链接列表来管理。
取决于由主机400上的图形操作生成的图形命令类型和RT 300的能力,该命令可以被封装并发送以在RT处执行,或者该命令可以由GPU-P 412本地执行。在很多情况下,尽管该命令被发送以在RT处执行,但是为了保存虚拟显示的本地副本,该命令也由GPU-P 412本地执行。理想的情况是,用状态位滤除作为冗余的本地图形命令的结果而改变的任何拼接片以防止不必要的拼接片更新分组被发送到RT。发送该命令而非已编码的拼接片通常需要较少的带宽,但是并不可能总是如此。人工管理选择性更新缓冲器的系统也会考虑正向RT发送的命令。将由在RT执行的命令来更新的拼接片在理想情况下不被GPU-P 412放置到选择性更新缓冲器中。
在另一示例中,旨在RT的图形命令由TSA-G 424处理,并且被拆分成已编码数据传送和已修改图形命令。例如,主机系统可能希望执行从屏外存储器或模式到屏上存储器的BitBlt操作。这在GPU-P 412子系统可以容易地被执行。然而,在RT处,为BitBlt请求的源数据没有被高速缓存。因此为了能够发送图形命令,可能有必要首先编码、封装以及发送源数据或模式到RT,然后封装并发送已修改图形命令到RT。这一过程可由TSA-G 424卸载。当DirectX驱动器有可能将命令漏过随后将这些命令输出到TSA-G 424的GPU-P 412时,DirectX驱动器将这些命令直接传递到TSA-G 424往往更加高效。
图7示出了TSA 224或TSA-G 424的一个优选实施方式的子系统700和TSA724的功能块。该子系统与在主机200或主机400上运行的跟踪软件相通信,它包括到主机系统总线206的连接,并且可能包括经由路径226到网络子系统的直接连接。在TSA-G 424的情况下,TSA 724也可能包括经由路径SDVO1 414和SDVO2416的到图形控制器GPU-P 412的直接连接。路径416可以是第二SDVO2 416或者到另一子系统的连接。存储器730包括在子系统中,它可以嵌入TSA 724或外部存储器子系统中。每个功能块还也可以包括它自身的内部存储器。
系统控制器708管理到主机系统和其它子系统的接口,并且对TSA 724执行某些设置和管理。DirectX解释器704卸载在主机系统上运行的DirectX软件驱动器以管理2D图形命令、3D图形命令、视频流以及其它窗口功能。与RDP解释器702以及数据/视频编码器和代码转换器706相组合,TSA 724使主机处理器免于执行管理RT的很多高强度计算方面,并且也可以优化要从主机系统向各个RT发送的命令、数据和视频流。
在系统200中基于主机的GPU 212不用于RT显示支持的情况下,TSA子系统700可以执行多种基于图形的优化。各种模式BitBlt、源到屏目的地BitBlt以及其它位图传输可由RDP解释器702来加强。RDP解释器702可以截取来自主机的调用,经由数据/视频编码器和代码转换器706将源数据、模式或位图编码成更高效的格式,经由系统控制器708传输这些已编码数据、模式或位图,最后向RT 300发出经修改的图形命令。目的地RT接收这些已编码源数据、模式或位图,按需对其进行解码,在接收到已修改图形命令时执行预期操作。对已编码数据和已修改命令的传输可以采用由TSA子系统700和RT 300所支持的RDP传输或者类RDP传输。
对于系统200中的视频流,DirectX解释器704可以截取并卸载视频流处理,并且向目标RT提供最佳流。卸载的第一步是确定主机处理器没有在主机CPU上执行视频解码。基于主机的解码有一些缺点,其中最重要的两个是,第一,它需要大量的CPU周期来执行实际的解码。第二,在主机处解码视频帧并不一定是使帧在目标RT处显示的最好方法。相反,DirectX解释器704截取在某些版本MicrosoftWindows
中可能需要使用DirectShow的DirectX调用,以便可以在其仍在压缩形式下访问视频流。为了使RDP继续正常的操作,DirectX解释器704可能需要向RDP接口提供模拟帧。
同时,系统控制器708获知RT能够解码何种视频流格式,从主机系统到RT的标称网络吞吐量是多少,以及视频流所针对何种分辨率和显示特性。获知这一信息,系统控制器708设置数据/视频编码器和代码转换器706来处理传入视频流以便为网络、RT和显示输出要求生成理想的流。这可能需要从一种编码格式译码到另一种、从一种比特率转换到另一种、改变帧率、改变显示格式、改变分辨率或者以上的某些组合。RDP解释器702和系统控制器708随后封装已处理的位流,并且通过主系统总线206或者直接连接226发送以进行网络处理。
在系统400的情况下,TSA子系统700可以包括相对于系统200所描述的功能,但是还包括对与GPU-P 412结合操作的额外支持。有若干方法使RDP 702和GPU-P 412交互,并且TSA子系统700的操作将会相应地改变。在这里详细地考虑了两种实施方式,第一种是“终止与再生”,第二种是“卸载与增强”。这些实施方式的变形也是可能的,这些变形可以利用每个实施方式的诸方面。
在“终止与再生”的情况下,RDP客户机在主机系统上运行。只要涉及到主机,RDP操作便终止并且RDP客户机利用GPU-P 412创建虚拟显示。如前所述,GPU-P 412使用虚拟显示空间通过创建单个大型的显示映射来支持多个虚拟RT,其中在该映射内每个用户被偏移,或者其中每个虚拟显示被视为具有自己的映射的单独显示。RDP客户机软件可能需要在需要安全客户机通信的RDP主机的TSA子系统700内利用密钥交换和安全处理。当RDP客户机接收到来自RDP主机的命令时,该客户机利用GPU-P 412将显示帧递送到显示子系统中。GPU-P 412随后生成适当的选择性更新,该选择性更新将通过路径414发送出去。
包括矩形拼接片的选择性更新分组随后被编码、封装并转发以供网络传送。使用“终止与再生”来代替仅仅传送绘图命令到RT 300的主要原因是RT处不支持请求命令。同样起作用的其它更细微的原因是基于带宽、命令的类型或序列、RT的相关性能。
“卸载与增强”可以用重定向DirectX视频和数据流的跟踪软件层进行。DirectX解释器704截取主机DirectX调用。所截取的调用被卸载到完成DirectX调用功能的数据/视频编码器和代码转换器706中。卸载该功能使得主机CPU 202对于多用户系统的其它用户是可用的。编码和译码可以利用允许最佳处理的对显示环境和网络带宽的理解来完成。
当图形命令在本地执行并且转发到RT用于执行时,RDP解释器702也可以用于管理状态位。主机图形执行该命令的原因是,可以管理帧缓冲器的当前副本以备后续使用。因为图形命令在RT处被执行,作为图形命令的结果而在主机上改变的拼接片无需使选择性更新硬件发送已编码的拼接片。为了防止如此,RDP解释器702需要计算哪些拼接片受到图形命令的影响。可以管理S-缓冲器中对应于这些拼接片的状态位,以便不执行基于拼接片的选择性更新。
跟踪软件层也可以用于协助对已改变的显示帧的编码选择,以及用于要求生成显示更新流。执行编码是为了减少远程显示系统300再生由主计算机的图形和显示控制器412生成的显示数据所需要的数据。跟踪软件层可以帮助标识拼接片内的数据类型以便可以执行最佳类型的编码。某些RT可能没有足够的图形处理能力来执行图形命令,但可以向其发送已由GPU-P 412处理过的已编码数据。
例如,如果跟踪软件层标识出拼接片的表面是实时视频,那么具有平稳空间转换和时间局部性的更高效的视频编码方案可以用于这些拼接片。如果跟踪软件层标识出拼接片的表面大部分是文本,那么可以采用对文本的陡沿和充足的空白空间更有效的编码方案。识别哪一类型的数据在哪一区域是一个复杂的问题。然而,跟踪软件层的这一实施方式允许到协助该标识的主机操作系统及主机显示系统的图形驱动器体系结构的接口。例如,在Microsoft Windows
中,利用某种DirectShow命令的表面可能是视频数据,然而使用通常与文本相关联的颜色扩展位块传输(BitBlits)的表面可能是文本。每种操作系统和图形驱动器体系结构将会具有它自己的特征指示器。其它实现可以执行多种类型的并行数据编码,并且随后基于编码器反馈选择使用产生最佳结果的编码方案。
某些类型的编码方案对特定类型的数据特别有用,而某些编码方案对这类数据较不敏感。例如,RLE对文本相当好而对视频相当差,基于DCT的方案对视频相当好而对文本相当差,基于小波变换的方案对视频和文本都可以表现良好。尽管在该系统中可以使用任何类型的无损耗或有损耗编码,小波变换编码(也可以是无损耗或有损耗类型)尤其是带有可对每个拼接片进行编码而不考虑周边拼接片的确定性算术编码器的渐进小波变换特别适合于这一应用。改进该过程用于更好的实时执行的JPEG2000小波编码器的衍生物是一个可能的实现。
图8是一个优选的实施方式子系统800(图2的820和图4的840)的框图,该子系统用于卸载和加速联网、安全、终端服务、存储以及来自主机处理器的诸如因特网访问的其它任务。卸载子系统800主要通过系统总线206与主机系统200或400通信。连接SDVO1 414和SDVO2 416是任选的,并且为包括用于RT的图形处理的主机系统或者为通过网络提供单个远程键盘、视频和鼠标(KVM)的重定向以便系统管理的较简单图形系统而被纳入。这些连接可以是直接的或者通过接口芯片850。接口控制810管理各种I/O连接。网络接口可以包括到WAN和RT的访问。诸如千兆以太网的高速网络是较佳的,但是并不总是实用的。诸如10/100以太网、电力线以太网、基于同轴电缆的以太网、基于电话线的以太网或者诸如802.11a、b、g、n、s的无线以太网标准之类的低速网络及其未来衍生物和超宽带(UWB)版本也可以得到支持。
为了方便通过使用主网络连接和在主机CPU上运行的软件来在“带内(inband)”远程控制主机,可以实现并使用KVM。或者KVM可以通过使用尽可能少的主系统资源来在“带外(out of band)”操作。当在“带外”使用时,可能出现使用网络接口而非“带内”主网络连接的视频监视。另外,代替在主处理器上运行的用于远程KVM功能的软件,特别的独立底板管理控制器(BMC)也通常被包括在内。BMC可以运行诸如智能平台管理接口(IPMI)的协议。BMC可以提供其自身的网络接口或可以支持到主网络控制器的侧端口连接。
为了支持对不同卸载任务的动态处理,卸载子系统800使用可编程和可配置并且当工作负荷改变时能够快速进行任务切换和重新配置的处理块。各种存储块可包括在每个处理块中,并且较大的存储器830也可以被包括。CPU 808是包括其自己的高速缓冲存储器的普通可编程处理器,并且可以为卸载子系统800执行内务处理和管理以及执行一些较高层协议和接口处理。网络处理器和MAC控制器806管理卸载子系统的网络接口控制(NIC)功能,并且可以管理多个双向通信通道。诸如内容地址存储器(CAM)特定内部存储器以及常规存储器也可以包括在NIC 806内。完整的NIC 806功能可能需要来自安全处理器(SP)804和可配置数据处理器(CDP)802的额外处理。
可配置数据处理器802可被设计成,容易被重新配置以便在通常与专用硬件块相关联的吞吐量下执行不同的处理。通过利用CDP 802而非专用硬件,不同的卸载任务可由同一硬件执行。用于设计诸如可重新配置数据路径、动态指令集、超长指令字(VLIW)、单指令多数据(SIMD)、多指令多数据(MIMD)、数字信令处理(DSP)以及其它形式的可重新配置计算之类的CDP的现有技术方法可以进行组合,以便执行超高性能的计算。安全处理器804可由某种形式的CDP 802、更专用的硬件或者CDP 802与用于加密技术及密钥相关功能的额外专用硬件块的组合来实现。
为了终端服务加速,CDP 802可被配置成,对拼接片和矩形的执行数据编码、对视频或数据执行各种形式的译码或转码、生成和比较拼接片签名以及在TSA 224或424部分描述的其它任务。为了存储加速,CDP 802可被配置成,用于iSCSI、光纤信道(FC)、光纤通道因特网协议(FCIP)以及因特网协议相关任务的不同方面。连接416可被配置成连接到FC而非SDVO2。为了因特网内容加速,CDP可被配置成,处理可扩展标记语言(XML)通信量、简单对象访问协议(SOAP)、HTTP通信量、Java虚拟机(JVM)以及与基于因特网的通信相关联的其它通信量。
为了管理通过SDVO1 214和SDVO2 216路径传入的数据,可以提供特定的缓冲和处理,或者可以将CDP 802配置成执行特定任务,这些任务可能包括将较大的矩形解构成拼接片、处理拼接片(包括签名生成和比较)以及当各种分组与目标RT相关时对它们进行管理。在前的拼接片签名可以存储在子系统800内,使得当接收到新的拼接片时可以对签名进行比较。
GPU可以具有用于包括VGA、DVO、DVI、SDVO、显示端口或者任意数量的较高速或较低速端口的显示输出端口的任意数量的物理和逻辑连接。这样,在GPU显示输出端口和卸载子系统800之间可能需要接口芯片850。来自卸载子系统的连接816可被实现为任意带宽的PCI快速端口。在一个优选的实施方式中,卸载子系统800充当PCI快速根控制器,并且接口控制810管理PCI快速端口。接口芯片可以执行某些缓冲以及某些所需预处理。例如,接口芯片可以缓冲多条显示数据线,并执行数据打包、格式转换、色空间转换、子带分解或者任意数量的其它功能。在一个优选的实施方式中,通过DVO连接416从图形芯片输出的是24位RGB数据。接口芯片850缓冲RGB数据,将它转换成YUV 4:4:4数据,并将这些像素拆分成单独的Y、U和V数据分组。使用接口控制810的卸载子系统800执行PCI快速根控制,并且Y、U和V数据分组通过路径816发送到存储器830的不同区域。
卸载子系统800可以由可编程解决方案来实现,该解决方案还解决若干不相关操作的一般卸载任务。服务器可以受益于对网络、存储、安全以及其它任务的卸载。可以将卸载处理器设计成静态或动态地平衡各种卸载任务,并且对任何给定的工作负荷加快系统的总吞吐量。例如,服务器可能在白天为瘦客户机执行基于服务器的计算,而在晚上运行大型数据库操作。在白天,卸载引擎将运行对TSA描述的操作。在晚上卸载引擎将运行iSCSI加速以从磁盘存储器系统访问大型数据库。这种灵活性可以由跟踪各种工作负荷的板上或片上管理处理器进行管理。在卸载任务之间切换的颗度可以极小。可以将卸载引擎设计成执行极快的上下文转接,使其能够在单一会话中为同一会话执行网络、终端服务、存储、安全以及其它卸载任务。
图9是根据本发明一个实施方式的用于执行终端服务加速过程的方法步骤的流程图。为了清楚起见,参考显示包括视频的数据来讨论该过程。然而,可以预期,涉及音频、键盘、鼠标和其它数据的过程同样适用于本发明。最初,在步骤910中,基于多用户服务器的计算机200或400和远程终端系统300遵循不同过程来初始化和设置各种子系统的主机侧和终端侧以便启动每个RT。在步骤912中,在主机200或主机400上的跟踪软件层与TSA 224或TSA-G 424结合操作来处理各种图形和视频调用,以便确定需要执行哪些操作以及在何处执行。注意主机系统200并不利用常驻主机GPU或虚拟帧缓冲器来执行RT图形操作。
如果图形操作包括2D绘图,那么,在步骤924中,2D绘图引擎GPU-P 412较佳地将这些操作处理成RAM 430中的适当虚拟显示。类似地,在步骤926中由GPU 412对RAM中的适当的虚拟显示执行3D绘图。在步骤928中,TSA 224或TSA-G 424可以确定视频或图形命令将被转发到适当RT。到步骤940的流程可以不受旁路步骤928的影响。在步骤940中,GPU-P 412将每个虚拟显示合成为适于显示的帧。这一合成可以用CPU子系统202、2D引擎、3D引擎以及GPU 412内的任何视频处理元件的操作的任意组合来执行。作为合成步骤的一部分,由于GPU-P 412在图形处理硬件中包含S-缓冲器管理,绘图引擎为相应的拼接片更新S-缓冲器。
如返回路径944所示,GPU-P 412可以根据需要返回处理同一RT或不同RT的下一帧。一旦执行了合成操作,步骤946便管理拼接片和适当位置处相关联的S-缓冲器状态位及签名位。步骤946考虑经过可能影响S-缓冲器状态位的视频和图形旁路步骤928处理的任何图形和视频操作。例如,如果绘图操作在步骤924执行并经由步骤928旁路到远程终端,则不需要对绘图操作在RT处发生时受该操作影响的拼接片执行选择性更新。
随着拼接片的状态位和签名在步骤946中被处理(该过程可以发生在GPU-P412内或者与TSA-G 424相结合),步骤950便可以执行这些拼接片的选择性更新。这些拼接片的大小可以固定或者可变。包括在拼接片内的报头信息将会指示格式以及预期的远程终端目标。在步骤954中,TSA-G 424对从步骤950接收到的拼接片执行必要的编码。该编码较佳地是确定性的方案,其中拼接片以及周边的拼接片内的数据定向不需要在编码步骤中予以考虑。同样在步骤954中,步骤928之后的视频数据和图形命令被处理。视频数据可以在比特率或帧率改变的情况下被转码,在频率域或者空间域缩放以及在必要时被译码成不同的编码标准。经由返回路径968的网络反馈连同RT一起可以帮助确定编码步骤954。
步骤954还执行需要额外处理的任何图形操作,其中可能需要对图形数据进行编码。在步骤958中,TSA-G 424对前一步骤中处理过的图形命令、数据传输或者视频传输执行进一步的封装。这一步骤中还在诸如带宽、等待时间、特定分组大小以及传输问题之类的网络特性方面考虑网络反馈。在步骤962中,已封装的分组经由网络控制器228进行处理,并且该分组沿着网络传送到适当的RT 300。
网络处理步骤962使用来自系统控制的信息。该信息可以包括关于哪一远程显示需要哪些帧更新数据流、何种类型的网络传输协议用于每个帧更新流以及每个帧更新流的每一部分的优先级和重试特性如何的信息。网络处理步骤962利用网络控制器228来管理任意数量的网络连接。各种网络可以包括千兆以太网、10/100以太网、电力线以太网、基于同轴电缆的以太网、基于电话线的以太网或者诸如802.11a、b、g、n、s的无线以太网标准以及未来衍生物。其它非以太网连接也是可能的,并且可以包括USB、1394a、1394b、1394c或者诸如超宽带(UWB)或WiMAX的其它无线协议。
图10是根据本发明一个实施方式的用于执行网络接收和显示过程的方法的步骤流程图。为了清楚起见,参考显示包括视频的数据来讨论该过程。然而,可以预期的是,涉及音频和其它数据的过程同样适用于本发明。
在图10的实施方式中,最初,在步骤1012中,远程终端300较佳地经由路径290从主计算机200接收网络传送。随后,在步骤1014中,网络控制器336较佳地执行网络处理过程来执行网络协议以便接收所发送的数据,无论该传输是有线还是无线的。
在步骤1020中,CPU 324解释传入传输以确定该传输针对哪一功能单元。如果传入传输是2D图形命令,那么CPU 324将会经由2D绘图引擎332初始化操作;如果是3D命令,那么经由3D绘图引擎334;如果是视频数据流,那么经由视频解码器328;以及如果是编码的数据拼接片,那么经由数据解码器326。某些绘图命令可能使用绘图引擎和数据解码器326两者。
数量改变的命令和数据传输可能发生,各种功能单元操作并且较佳地将数据信息操作成适当的可显示格式。在步骤1030中,来自每个功能单元的已操作的数据经由帧管理器330来组合,并且可以产生经更新的显示帧到RAM 312中。经更新的显示帧可以包括来自先前帧的显示帧数据、已操作并且已解码的新帧数据、以及用于隐藏在新帧数据传输过程中发生的显示数据差错所需的任何处理。
最后,在步骤1040中,显示控制器330向远程终端显示屏310提供最近完成的显示帧数据,以供远程终端系统300的用户观看。显示刷新是通常在远程终端控制器314和显示310之间以每秒60到72次运行以避免闪烁的异步操作。在步骤1030中,产生新的显示帧通常是很少经常发生的,尽管必要时可能以每秒30帧或以上发生。在没有屏幕保护程序或断电模式的情况下,在显示刷新过程中如反馈路径1050所指示,显示处理器将会继续用最近完成的显示帧更新远程显示屏310。
本发明因此实现了支持用户可以在各种应用中有效利用的远程终端的基于多用户服务器的计算机系统。例如,企业可能在一个地点部署计算机系统架,而在远程地点用户的桌上向他们提供的简单便宜的远程终端系统300。通过LAN、WAN或者通过另一连接可以支持不同的远程地点。RT可以是台式个人计算机或者笔记本式个人计算机,或者在另一系统中可以是诸如蜂窝电话、个人数字助理的专门设备,或者与诸如便携式视频播放器、游戏机或远程控制系统的其它消费品相结合。用户可以灵活地利用多用户系统100的主计算机来获得主计算机系统所能提供给本地用户的相同级别的软件兼容性和类似级别的性能。因此,本发明有效地实现了利用各种不同组件来促进最优系统协作性和功能性的灵活多用户系统。
以上参考优选的实施方式对本发明进行了说明。根据本公开,其它实施方式对本领域技术人员而言将会是显而易见的。例如,除了在以上优选的实施方式中所描述的那些配置外,很容易使用其它配置实现本发明。另外,,本发明还可以有效地与除了以上作为优选实施方式所描述的以外的其它系统结合使用。因此,本发明仅由所附权利要求书限定,旨在涵盖对优选实施方式的这些或其它变化。