《使用SIMD指令的RDP位图散列加速.pdf》由会员分享,可在线阅读,更多相关《使用SIMD指令的RDP位图散列加速.pdf(18页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN102334097A43申请公布日20120125CN102334097ACN102334097A21申请号201080009748822申请日2010020512/393,95020090226USG06F9/44200601G06F9/345200601G06F7/2220060171申请人微软公司地址美国华盛顿州72发明人NY阿布多VA阿尔布74专利代理机构上海专利商标事务所有限公司31100代理人胡利鸣54发明名称使用SIMD指令的RDP位图散列加速57摘要公开了用于针对远程桌面协议RDP进行矢量化小块区分算法的系统、方法和计算机可读介质。服务器执行用于产生标识出该小。
2、块的大密钥的CBC变型的矢量化的散列算法,并且跟踪这些大密钥。在该算法的串行版本一次对图像的单个部分比如32位进行操作的情况下,矢量化的算法同时对这些部分中的多个进行操作。在服务器标识出小块已经通过RDP发送给客户端的情况下,由于服务器具有与该大密钥相匹配的第二大密钥,因此服务器将该大密钥发送给该客户端该客户端高速缓存所接收的小块并且该客户端将其用于访问合适的小块以供显示。在服务器标识出小块还未发送给客户端的情况下,服务器向客户端发送该小块。30优先权数据85PCT申请进入国家阶段日2011082586PCT申请的申请数据PCT/US2010/0232562010020587PCT申请的公布数。
3、据WO2010/098959EN2010090251INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书12页附图3页CN102334113A1/2页21一种用于在具有位宽的并行处理系统314上对图像进行归类的方法,该方法含有第一随机数和第二随机数,第一随机数与第二随机数不同,以及校验和、数据、第一密钥和第二密钥,该方法包括将该图像聚集成至少一个组,每个组都包括与该位宽相等数目的图像位206;为每个组执行散列206,包括将校验和设置为等于校验和加上该组;将数据设置为等于该组与数据之和乘以第一随机数并且加上第二随机数;将第一密钥设置为等于被该数据修改的第一密钥;以及将第。
4、二密钥设置为等于被该数据修改的第二密钥;以及将包括第一密钥和第二密钥的大密钥存储在大密钥存储中216。2如权利要求1所述的方法,其特征在于,还包括通过通信网络将该图像发送给客户端计算机。3如权利要求2所述的方法,其特征在于,通过通信网络将该图像发送给客户端计算机发生在下列动作以后确定大密钥不与大密钥存储中的任何其他大密钥匹配。4如权利要求3所述的方法,其特征在于,还包括向客户端发送该大密钥。5如权利要求4所述的方法,其特征在于,还包括向客户端计算机发送如下指示使用该大密钥从客户端散列中检索第二图像以及就好像客户端已经接收到该图像而不是该指示那样处理第二图像。6如权利要求2所述的方法,其特征在于。
5、,还包括在将该图像发送给客户端计算机之前对该图像进行编码。7如权利要求1所述的方法,其特征在于,还包括在对每组执行操作以前将校验和、数据、第一密钥和第二密钥中的每个设置为等于0。8如权利要求1所述的方法,其特征在于,第一密钥由该数据通过对第一密钥和该数据执行异或运算来修改,并且其中第二密钥由该数据通过对第二密钥和该数据执行异或运算来修改。9如权利要求1所述的方法,其特征在于,该图像具有起始和结尾,对每组执行的操作首先对最接近起始的还未执行对每组的操作的那组执行。10如权利要求1所述的方法,其特征在于,还包括当该图像大小除以位宽具有非0的余数位时,用串行密码块链接CBC算法对余数位进行散列以产生。
6、后第一密钥和后第二密钥,从而基于后第一密钥确定第一密钥,并且基于后第二密钥确定第二密钥。11如权利要求5所述的方法,其特征在于,该图像具有结尾、余数位,并且图像中没有比该余数位更接近该结尾的部分。12如权利要求1所述的方法,其特征在于,散列包括密码块链接CBC散列变型方案。13如权利要求1所述的方法,其特征在于,该图像包括屏幕抓取。14如权利要求1所述的方法,其特征在于,该图像包括以远程桌面协议RDP的小块。15一种用于在具有位宽的并行处理系统上对图像进行归类的系统,该方法含有第一权利要求书CN102334097ACN102334113A2/2页3随机数和第二随机数,第一随机数与第二随机数不同。
7、,以及校验和、数据、第一密钥和第二密钥,该系统包括处理器159;用于将将该图像聚集成至少一个组的电路,每个组都包括与该位宽相等数目的图像位206;用于为每个组执行散列208的电路,包括计算对该图像的运行引用,该运行引用包括校验和、第一密钥、第二密钥以及该数据,并且基于该运行引用、该组、数据、第一随机数、以及第二随机数计算出;以及用于将包括第一密钥和第二密钥的大密钥存储在大密钥存储214中的电路。权利要求书CN102334097ACN102334113A1/12页4使用SIMD指令的RDP位图散列加速背景技术0001尽管计算机曾经被隔离并且与其他计算机具有最少的或很少的交互,但是当今的计算机通过。
8、诸如局域网LAN和广域网WAN之类的通信网络与多种多样的其他计算机进行交互。随着因特网TM的广泛发展,计算机之间的连通性变得越来越重要,并开拓了许多新的应用和技术。大规模网络的增长以及低成本个人计算机的广泛可用性已经从根本上改变了许多人工作、交互、通信、以及玩乐的方式。0002一种联网的越来越流行的形式一般可以被称为虚拟计算系统,其可以使用诸如远程桌面协议RDP、独立计算体系结构ICA等等之类的协议,来与远程客户端共享桌面及其他应用程序。这样的计算系统通常将对键盘键的敲击和鼠标点击或选中从客户端传输到服务器,同时通过网络连接例如,因特网以另一方向将屏幕更新中继回去。因此,当在现实中在应用出现服。
9、务器侧时仅仅将所述应用的屏幕截图发送给客户端设备时,用户具有就好像他们的机器充当LAN的一部分的体验。0003两种常用的将图形数据发送到客户端的技术是发送向客户端的子例程告知要绘制什么以及如何绘制的图元和其他操作;以及向客户端发送位图图像以供显示。当图元的序列太复杂时,有时可能更有意义的是发送可以更简单地被显示的位图表示、而不是其他更复杂图元操作的可能长的序列。然而,由于大多数比特流压缩器的限制以及受限的网络带宽,不断地发送屏幕的完整位图表示可能是花费过大的。0004为了减轻这些问题,发送给客户端的帧比如应用窗口可以被细分为小块TILE。这些小块然后在客户端侧被高速缓存,并且当小块在两个位图之。
10、间重复时,服务器发送客户端显示被高速缓存的小块的指令而不是重新向客户机发送该小块。这尤其可以在小块频繁地重复的情况下显著地减少RDP会话的带宽成本。然而,当这样做时,处理资源于是必须专用于高速缓存小块。0005另外,分块算法常常被执行为使得最大化高速缓存命中的几率。在小块较小的情况下,几率更大的是小块将被使用两次在该帧内或者在未来的帧中。常常还存在最小有用小块大小,因为当小块过小时,从两个小块之间的高速缓存命中仅仅获得少的好处。0006这些RDP位图高速缓存算法和检测小块间差异“小块区分”对于将RDP显示流的带宽减小到通过LAN、WAN或无线局域网WLAN的传输可接受的水平而言是极重要的。这些。
11、高速缓存算法通常用服务器上的处理时间中央处理单元CPU的频率来换取为了服务器在网络的范围内将信息传输给客户端所需的数量减小的带宽。0007RDP位图高速缓存的主要处理成本之一是所使用的散列算法一种将较大图像数据变换成较小数据的算法,其中该较小数据可以用作诸如数列或树之类的分类的数据结构的索引。一些散列算法实现密码块链接CBC算法或者CBC算法的变型方案。然而,用在散列算法上的该处理时间可能制约服务器的伸缩性,因为所有可用的处理资源可以在任何其他资源比如服务器的网络带宽变为耗尽以前由RDP会话使用。该处理时间还增加了为了对图像帧进行编码所需的时间、这些帧可以被产生和发送给客户端的速率帧速FPS。。
12、说明书CN102334097ACN102334113A2/12页50008用当前并行处理器来提升散列算法的速度是困难的,因为CBC散列算法通常是串行的,这不是很好地有助于比如在单指令多数据SIMD处理器上进行并行处理。0009存在一类称为向量处理器的处理器,它们在它们的指令集体系结构ISA中具有SIMD指令。诸如NEHALEMTM处理器之类的某些INTELTMX86ISA处理器中的诸如SSE42指令之类的流式SIMD扩展SSE是这些SIMD指令的一种形式。这些处理器能够加快对某些类型的数据的处理,因为它们可以一次对大块的数据进行操作。例如,在处理图像的情况下,SIMD处理器可以利用单指令并行地。
13、对多个像素进行操作,而不是一次对单个像素进行操作。这不仅改善处理指令本身的性能,而且可以缩短从存储器取数据花费的时间。0010尽管SIMD指令提供用于改善某些类型的处理诸如处理图像数据以供压缩的性能的机会,但是为了实现该过程所需的算法和技术比在非向量处理器的情况下困难得多。必须加以特别注意的是数据流、以及将数据组织为使得并行地对它进行操作。为此,将会从新技术中得到的好处是增大对RDP小块的散列操作的并行性。发明内容0011用于加速的本技术通过如下方式利用并行处理如串行算法操作的那样并行地对多个位计算散列算法;以及然后将这些分开计算的散列组合以为图像确定散列。这使得处理所需的CPU时间的大大减小。
14、,而不增加冲突命中率到散列算法的两个不同的输入将产生相同的输出的比率仅仅少量增加。在许多RPD小块散列情况下,冲突命中率的该微小增加是可接受的。0012本技术可用于RDP小块归类之外的场景中,只要它们得益于散列速度的增加,同时接受冲突命中率的一些增加。该冲突命中率增加是非常微小的、大致为100/2192。0013在本申请的示例性实施例中,提供用于使用SIMD指令进行RDP位图散列算法加速的方法、系统和计算机可读存储介质。0014本技术在两种情况下为RDP提供显著收益。首先,CBC散列算法或CBC类型的散列算法可以用于计算位图小块的散列。如果再次遇到该位图小块,则散列函数将产生相同的高速缓存密钥。
15、,并且服务器可以通过避免重发该位图来节省带宽。0015其次,在RDP使用纯粹的屏幕抓取从另一程序的显示输出中提取出图像数据来运行的情况下,该相同的散列函数可以用于对每个新帧上的图像小块计算散列以执行哪些小块已经改变的逐帧的快速比较。0016这两种情况都意味着散列函数通常是RPD栈的CPU成本最高的函数,并且由于RDP在一些情况下是受CPU限制的,因此减小CPU成本可以允许增加RDP的吞吐量。0017本领域技术人员将理解,本发明的一个或多个方面可包括但不限于用于实现本发明的本文所述方面的电路和/或编程;该电路和/或编程实质上可以是配置成实现本文所述方面的硬件、软件和/或固件的任何组合,这取决于系。
16、统设计者的设计选择。0018以上是概述,并且因此必然包含细节的简化、一般化及省略。本领域技术人员将明白,本概述只是说明性的并且决不旨在是限制性的。附图说明0019参考附图来进一步描述用于用于散列加速的系统、方法和计算机可读介质,附说明书CN102334097ACN102334113A3/12页6图0020图1示出了可在其中体现了在此描述的散列加速的示例性通用计算环境。0021图2示出了用于散列加速的示例性操作过程。0022图3示出了客户端和服务器通过远程桌面协议RDP进行通信,其利用了上述加速小块区分技术。0023说明性实施例的详细描述0024图1是在其中可实现在此描述的技术的通用计算设备的框。
17、图。计算系统环境120只是合适的计算环境的一个示例,并且不旨在对所公开的主题的使用范围或功能提出任何限制。也不应该将计算环境120解释为对示例性操作环境120中示出的任一组件或其组合有任何依赖性或要求。在某些实施例中,所描绘的各种计算元素可包括被配置成实例化本公开的各具体方面的电路。例如,本公开中使用的术语电路可包括被配置成通过固件或开关来执行功能的专用硬件组件。其他示例中,术语电路可包括由实施可用于执行功能的逻辑的软件指令配置的通用处理单元、存储器等。在其中电路包括硬件和软件的组合的示例实施例中,实施者可以编写体现逻辑的源代码,且源代码可以被编译为可以由通用处理单元处理的机器可读代码。因为本。
18、领域技术人员可以明白现有技术已经进化到硬件、软件或硬件/软件组合之间几乎没有差别的地步,因而选择硬件或是软件来实现具体功能是留给实现者的设计选择。更具体地,本领域技术人员可以明白软件进程可被变换成等价的硬件结构,而硬件结构本身可被变换成等价的软件进程。因此,对于硬件实现还是软件实现的选择是设计选择并留给实现者。0025计算机141通常包括各种计算机可读介质。计算机可读介质可以是可以被计算机141访问的任何可用的介质,并包括易失性和非易失性介质,可移动的和不可移动的介质。系统存储器122包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器ROM123和随机存取存储器RAM160。基本。
19、输入/输出系统124BIOS包括如在启动时帮助在计算机141内的元件之间传输信息的基本例程,它通常储存在ROM123中。RAM160通常包含处理单元159可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非限制,图1示出操作系统125、应用程序126、其他程序模块127和程序数据128。0026计算机141也可以包括其他可移动的/不可移动的,易失性/非易失性的计算机存储介质。仅作为示例,图1示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器138,从可移动、非易失性磁盘154中读取或向其写入的磁盘驱动器139,以及从诸如CDROM或其他光学介质等可移动、非易失性光盘153。
20、中读取或向其写入的光盘驱动器140。可以在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器138通常由例如接口134等不可移动存储器接口连接至系统总线121,而磁盘驱动器139和光盘驱动器140通常由例如接口135等可移动存储器接口连接至系统总线121。0027以上讨论并在图1中示出的驱动器及其相关联的计算机存储介质为计算机141提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。在图1中,例如,硬盘驱动器138被示为存储操作系统158、应用程序157、其他程序模块1。
21、56和程序数据155。注意,这些组件可以与操作系统125、应用程序126、其他程序模块127和程序数据128相同,也可以与它们不同。向操作系统158、应用程序157、其他程序模块156,以及程序数据155提供说明书CN102334097ACN102334113A4/12页7了不同的编号,以说明,至少,它们是不同的副本。用户可以通过输入设备,例如键盘151和定点设备152通常是指鼠标、跟踪球或触摸垫向计算机141输入命令和信息。其他输入设备未示出可包括话筒、游戏杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其他输入设备通常通过耦合至系统总线的用户输入接口136连接至处理单元159,但也可以由其他。
22、接口和总线结构,例如并行端口、游戏端口或通用串行总线USB来连接。监视器142或其他类型的显示设备也可以通过诸如视频接口132之类的接口,连接到系统总线121。除监视器之外,计算机还可以包括可以通过输出外围接口133连接的诸如扬声器144和打印机143之类的其他外围输出设备。0028计算机141可以使用到一个或多个远程计算机如远程计算机146的逻辑连接,以在联网环境中操作。远程计算机146可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,并且通常包括许多或所有以上关于计算机141所描述的元件,尽管在图1中仅示出了存储器存储设备147。图1中所示的逻辑连接包括局域网LAN1。
23、45和广域网WAN149,但也可以包括其他网络。这样的联网环境在办公室、企业范围的计算机网络、内部网和因特网中是普遍现象。0029当用于LAN网络环境中时,计算机141通过网络接口或适配器137连接到LAN145。当在WAN联网环境中使用时,计算机141通常包括调制解调器150或用于通过例如因特网等WAN149建立通信的其他手段。调制解调器150,可以是内置的或外置的,可以经由用户输入接口136或其他适当的机制,连接到系统总线121。在联网环境中,参考计算机141所描述的程序模块,或其某些部分,可以存储在远程存储器存储设备中。作为示例而非限制,图1示出远程应用程序148驻留在存储器设备147上。
24、。可以理解的是,所示的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他手段。0030图2示出了用于散列加速的示例性操作过程。串行散列过程可以在从图像的前部开始并且处理到后部的情况下一次取一个DWORD的图像数据双字,在许多系统体系结构中,这是32位。其将为图像计算一个密钥,该密钥基于每个新的DWORD的所处理图像来更新。与之形成对比,示例性的本操作过程一次对多个DWORD进行操作。在一个DWORD包括32位并且处理器可以同时对128位进行操作的实施例中,这可以是4个DWORD的数据。该过程为图像保持四个部分密钥每个对应于一个被并行操作的DWORD并且那些四个部分密钥可以一旦在整个。
25、图像已经被处理时就被组合以产生最终密钥。0031任选操作202描绘了选择第一随机数和第二随机数,第一随机数与第二随机数不同。0032任选操作204描绘了将校验和、数据、第一密钥和第二密钥中的每个设置为等于0。在任何实施例中,校验和、数据、第一密钥和第二密钥在本操作开始以前都等于0,因此不必在此将其设置为0。在该技术使用这四个数来保持移动和的情况下,它们可以通过将其设置为0而被初始化。校验和和数据可以用作用于确定第一密钥和第二密钥的内部变量。第一密钥和第二密钥可以包括图像的大密钥,该大密钥之后被用于查找图像或对该图像的引用,比如供服务器来查找是否其已经向客户端发送了图像,或者供替代于已经被自己接。
26、收的图像接收大密钥的客户端来查找图像本身。将大密钥作为这两个分量第一密钥和第二密钥来计算并且然后对其进行组合要比计算单片密钥更快。0033操作206描绘了将图像聚集成至少一个组,每个组都包括与位宽相等数目的图像说明书CN102334097ACN102334113A5/12页8位。处理器可以一次对一个以上的数据位进行操作。例如,128位处理器可以一次对128个数据位进行操作。该处理器于是具有128位的“位宽”。那些128位不必属于同一数据结构,比如表示128位数的数据结构。更确切而言,该128位可以包括多条数据,比如四个离散的32位整数或者八个16位整数。在这种情况下,存在指令使得当对一组四个3。
27、2位整数执行操作时,该操作比如乘法、逻辑移位的结果不溢出为128位的邻接整数。0034在一实施例中,图像包括屏幕抓取SCRAPE。屏幕抓取包括从另一程序的显示输出中取得数据。由于该数据曾被另一程序打算显示在输出设备上,因此该数据通常缺乏归档或结构来帮助分析该数据。0035在一实施例中,图像包括以远程桌面协议RDP的小块,该小块包括位图。小块可以包括帧的子集,帧通常包括应用窗口。在典型的实施例中,帧被划分成多个矩形小块,并且仅仅被改变的那些小块需要被发送给客户端。0036在图像未按对齐边界对齐的实施例中,图像在第一位边界以前的最初的多位被用串行密码块链接CBC算法进行散列以产生前第一密钥和前第二。
28、密钥。例如,在本操作对128位并行操作并且图像未按128位边界对齐情况下,其中图像的56位在该图像的第一128位边界以前发生,则该56位被用串行CBC算法散列,并且所得到的前第一密钥和前第二密钥分别与接下来的操作的通过串行CBC算法所得到的第一密钥和第二密钥相组合。0037操作208描述了为每个组执行散列,包括将校验和设置为等于校验和加上该组;将数据设置为等于该组与数据之和乘以第一随机数并且与第二随机数相加;将第一密钥设置为等于被该数据修改的第一密钥;以及将第二密钥设置为等于被该数据修改的第二密钥。0038在一实施例中,第一密钥由数据通过对第一密钥和该数据执行异或运算来修改,并且第二密钥由数据。
29、通过对第二密钥和该数据执行异或运算来修改。异或是按位操作,其中在两个输入之一并且仅仅之一也是1的情况下,两个输入的结果才是1。例如,在“”表示异或运算的情况下,000,011,101,并且110。0039可以认为图像是具有起始和结尾,并且在一实施例中,对每组执行的操作首先对最接近起始的还未执行对每组的操作的那组执行。也就是说,该技术顺序地经过图像执行,其中一次取得一组位并且在对下一组位进行相同操作以前处理该组位,直到达到图像的结尾。0040在一实施例中,散列包括密码块链接CBC散列。0041任选操作210描绘了基于第一密钥的每DWORD大小的位来设置DWORD第一密钥;以及基于第二密钥的每DW。
30、ORD大小的位来设置DWORD第二密钥。0042在第一密钥和第二密钥每个都包括比处理器的位宽更少的位的情况下,计算部分密钥。当整个图像已经被处理时,这些部分密钥然后用于确定完全的第一密钥和第二密钥。采用第一密钥和第二密钥每个都包括32位并且位宽为128位的实施例。在该实施例中,图像的128位被同时处理,从而产生四个32位部分第一密钥和四个32位部分第二密钥。当整个图像已经被处理时,这四个部分密钥中的每个都然后用于确定完全密钥、或者DWORD第一密钥和DWORD第二密钥。0043在一实施例中,四个部分第一密钥用于通过将它们一起进行“异或”XOR来确定DWORD第一密钥。在四个部分第一密钥由KEY。
31、10、KEY11、KEY12和KEY13来表达时,说明书CN102334097ACN102334113A6/12页9该运算在逻辑上可以表达为KEY10KEY11KEY12KEY13。0044在一实施例中,四个部分第一密钥用于通过使用串行CBC串行算法对它们进行组合来确定DWORD第一密钥。在一实施例中,KEY10被用KEY11进行CBC散列,其结果被用KEY12进行CBC散列,该结果被用KEY13进行CBC散列。0045任选的操作212描绘了当图像大小除以位宽具有非0的余数位时,用串行算法对余数位进行散列以产生后第一密钥和后第二密钥,从而基于后第一密钥确定第一密钥,并且基于后第二密钥确定第二密。
32、钥。在图像具有可被位宽整除的位数目时,可以对图像的每个位进行上述操作中所描述的并行操作序列。然而,在图像具有不能被位宽整除的位数目时,可以与上面的并行散列不同地对这些最终位进行常规串行散列。所得到的后第一密钥和后第二密钥可以比如通过如下方式与第一密钥和第二密钥组合将第一密钥设置为对第一密钥和后第一密钥执行串行CBC散列的结果;以及将第二密钥设置为对第二密钥和后第二密钥执行串行CBC散列的结果。0046在一实施例中,图像具有结尾,并且图像中没有比余数位更接近该结尾的部分。也就是说,余数位将被认为是图像的最终位,并且它们应当在所有进行位已经以并行方式处理以后在一次一个位宽数目的位的情况下以串行方式。
33、处理。0047在一实施例中,从该串行处理中计算出的第一密钥和第二密钥与从上面的并行处理中计算出的第一密钥和第二密钥比如通过如下方式相组合对相应的第一密钥进行串行CBC散列以及对相应的第二密钥进行CBC散列;对相应的第一密钥以及相应的第二密钥进行XOR运算。0048操作214描绘了将包括第一密钥和第二密钥的大密钥存储在大密钥存储中。一旦经过散列,则图像就可以被存储在存储器地址处以及诸如树之类的数据结构中,并且数据然后用于访问该存储器地址的位置处的图像。例如,在使用数组存储器结构的情况下,数据可以充当该数组的索引,并且图像被存储在该数组的数据索引处。0049在每个密钥都包括32位的情况下,大密钥包。
34、括64位,因此针对大密钥存在264个可能的值。在一实施例中,尽管有冲突两个不同的图像小块对应于同一大密钥的可能性,但是发生这样的事情的几率小得在任何两个大密钥之间大致为264分之一以至于为了检测冲突所需的处理资源大大超过了检测一个小块图像并且标识出正确的小块图像使得忽略冲突并且可能使用不正确的图像的好处。0050操作216描绘了图像的编码。在一实施例中,这包括通过行程RUNLENGTH编码RLE对图像进行编码。在一实施例中,这可包括用不同的编解码器对图像的不同部分进行编码。例如,在图像的一部分必须以无损质量来显示的情况下,比如在该图像是由医师使用的医疗X射线的情况下,该图像可以用无损编解码器来。
35、编码。图像的另一部分可能是白色背景下的黑色文本,并且用RLE算法对其进行编码将把其空间减少最大量也将为无损的。在这种情况下,这两个编解码器可以用于图像的合适部分。在一实施例中,图像的颜色通道是分开的RGBA图像被分成单独的红R、绿G、蓝B和阿尔法A颜色通道,并且这些通道中的每个都被分开地编码。0051操作218描绘了通过通信网络将图像发送给客户端计算机。这在图像已经被发送给该客户端并且该客户端将其已接收的图像高速缓存的情况下是不需要的。在这种情况下,可以向客户端发送大密钥。客户端可以维护所接收图像的与执行本操作的装置所维护说明书CN102334097ACN102334113A7/12页10的散。
36、列表相似的散列表。在这种情况下,当其接收到大密钥时,客户端可以将该大密钥用作其散列结构的索引,接收相应的图像,以及按照如其在已经接收到图像而不是数据的情况下将会处理图像的那样处理该图像。0052图3示出了客户端和服务器通过远程桌面协议RDP进行通信,其利用了上述加速小块区分技术。服务器302包括RDP服务器304、密钥数据库306、以及至少一个位图图像308。图像308被划分成至少一个小块310,每个小块都包括位图。服务器302通过通信网络312与客户端314通信。客户端314包括RDP客户端316和小块数据库318,并且连接到显示设备320。0053在客户端314与服务器302之间的RDP会。
37、话中,服务器通过通信网络312发送与服务器302所执行的处理相对应的客户端图像信息。例如,客户端314可以在其在服务器上执行文本编辑器的情况下具有RDP会话。客户端314向服务器302发送命令,比如在当前编辑位置处将字符序列输入文本编辑器中或者打开新的文件。这些命令在服务器302上被处理,并且所得到的显示输出被发送回客户端314以供在显示设备320上显示。在这样的实施例中,图像308可以包括文本编辑器的在给定时刻的应用窗口。如果用户在应用窗口的底部附近添加新的文本,则应用窗口的顶部部分在短期内不会改变。因此,图像308可以被划分成小块310,并且当多个图像308随着时间被发送给客户端314时,。
38、每个图像308作为多个小块310被发送,只有与所有在先小块310不同的那些小块需要被发送。客户端314可以在小块高速缓存318中高速缓存之前接收的小块310,并且在小块310重复的情况下,服务器302可以向客户端314发送对该小块的指示、而不是小块308本身。现在被高速缓存在小块高速缓存318中的该第一小块不必与重复的小块处于相同位置。例如,在文本编辑会话的新文档的情况下,大多数小块将仅仅是空白空间,因此一个纯白小块将多次用于所有这些纯白小块。0054在服务器302首次接受针对图像308的请求时,其将取得第一块310并且对其进行散列以确定大密钥。在服务器306根据图2中所述技术对小块310进行。
39、散列的情况下,密钥可以包括第一密钥和第二密钥。然后,该服务器将使用RDP服务器304来将小块与表示小块310属于图像中的何处的指示一起发送给RDP客户端316,并且还将把该小块的大密钥存储在密钥数据库306中。密钥数据库可以包括诸如树之类的用于存储整数的各种数据结构。0055针对每个相继的块310,服务器302将为其确定大密钥,并且然后对照密钥数据库306检查该大密钥。在密钥数据库306中不存在匹配从而指示表示相同图像的小块之前还未被发送给客户端314的情况下,服务器302将如前面那样把该小块发送给客户端314并且将其大密钥存储在密钥数据库306中。客户端在RDP客户端316处接收小块,并且将。
40、其与大密钥一起高速缓存在小块高速缓存318中。大密钥可以用作用于例如通过充当散列表的索引来在小块高速缓存318中对图像进行定位的密钥。0056在密钥数据库306中存在与该小块的匹配的情况下,这意味着服务器302之前已经发送了与该小块表示相同图像的小块。因此,为了节省网络资源,服务器302将向客户端314发送相应的大密钥、而不是向客户端314发送小块310,其中大密钥包括较小量的数据。在第一密钥和第二密钥每个都包括32位数据的情况下,大密钥将包括64位。客户端314在RDP客户端316处接收该密钥和数据,并且RDP客户端314使用大密钥来在小块高速缓说明书CN102334097ACN102334。
41、113A8/12页11存320中对相应小块进行定位。0057在RDP客户端314接收到小块本身或者接收到相应大密钥并且在小块高速缓存318中查找到小块的情况下,该RDP现在具有该小块。RDP客户端316将一起接收表示小块310包括图像的哪个部分的指示和小块或大密钥。RDP客户端316然后将在客户端显示设备320上将小块310显示在图像的合适部分中。0058样本指令0059下面包括高级编程语言C类型句法的样本伪代码,该伪代码在向量处理器上执行时将类似于如图2的详细描述中所描述的那样以本公开的实施例的方式对图像进行操作。00600061说明书CN102334097ACN102334113A9/12。
42、页120062说明书CN102334097ACN102334113A10/12页130063说明书CN102334097ACN102334113A11/12页140064结语0065尽管已经结合各附图所示的较佳方面描述了本发明,但要理解,可使用其它相似方面或者可对所述方面进行修改或添加来执行本发明的相同功能而不脱离本发明。因此,本发明不应该仅限于任何单个方面,而是应该在根据所附权利要求书的广度和范围内解释。例如,本文描述的各种过程可用硬件或软件、或两者的组合来实现。因此,所公开的各实施例的方法和装置或其某些方面或部分可采用包含在诸如软盘、CDROM、硬盘驱动器或任何其他机器可读存储介质等有形介质中的程序代码即,指令的形式。当程序代码被加载到诸如计算机等机器并由其执行时,该机器变为被配置成实施所公开的各实施例的装置。除了此处明确阐述的具体实现之外,考虑此处所公开的说明书,其它方面和实现将对本说明书CN102334097ACN102334113A12/12页15领域的技术人员是显而易见的。说明书和所示实现旨在仅被认为是示例。说明书CN102334097ACN102334113A1/3页16图1说明书附图CN102334097ACN102334113A2/3页17图2说明书附图CN102334097ACN102334113A3/3页18图3说明书附图CN102334097A。