使用SIMD指令的RDP位图散列加速.pdf

上传人:b*** 文档编号:1036363 上传时间:2018-03-27 格式:PDF 页数:18 大小:751.64KB
返回 下载 相关 举报
摘要
申请专利号:

CN201080009748.8

申请日:

2010.02.05

公开号:

CN102334097A

公开日:

2012.01.25

当前法律状态:

授权

有效性:

有权

法律详情:

专利权的转移IPC(主分类):G06F 9/44变更事项:专利权人变更前权利人:微软公司变更后权利人:微软技术许可有限责任公司变更事项:地址变更前权利人:美国华盛顿州变更后权利人:美国华盛顿州登记生效日:20150421|||授权|||实质审查的生效IPC(主分类):G06F 9/44申请日:20100205|||公开

IPC分类号:

G06F9/44; G06F9/345; G06F7/22

主分类号:

G06F9/44

申请人:

微软公司

发明人:

N·Y·阿布多; V·A·阿尔布

地址:

美国华盛顿州

优先权:

2009.02.26 US 12/393,950

专利代理机构:

上海专利商标事务所有限公司 31100

代理人:

胡利鸣

PDF下载: PDF下载
内容摘要

公开了用于针对远程桌面协议(RDP)进行矢量化小块区分算法的系统、方法和计算机可读介质。服务器执行用于产生标识出该小块的大密钥的CBC变型的矢量化的散列算法,并且跟踪这些大密钥。在该算法的串行版本一次对图像的单个部分——比如32位——进行操作的情况下,矢量化的算法同时对这些部分中的多个进行操作。在服务器标识出小块已经通过RDP发送给客户端的情况下,由于服务器具有与该大密钥相匹配的第二大密钥,因此服务器将该大密钥发送给该客户端——该客户端高速缓存所接收的小块——并且该客户端将其用于访问合适的小块以供显示。在服务器标识出小块还未发送给客户端的情况下,服务器向客户端发送该小块。

权利要求书

1: 一种用于在具有位宽的并行处理系统 (314) 上对图像进行归类的方法, 该方法含有 第一随机数和第二随机数, 第一随机数与第二随机数不同, 以及校验和、 数据、 第一密钥和 第二密钥, 该方法包括 : 将该图像聚集成至少一个组, 每个组都包括与该位宽相等数目的图像位 (206) ; 为每个组执行散列 (206), 包括 : 将校验和设置为等于校验和加上该组 ; 将数据设置为等于该组与数据之和乘以第一随机数并且加上第二随机数 ; 将第一密钥设置为等于被该数据修改的第一密钥 ; 以及 将第二密钥设置为等于被该数据修改的第二密钥 ; 以及 将包括第一密钥和第二密钥的大密钥存储在大密钥存储中 (216)。
2: 如权利要求 1 所述的方法, 其特征在于, 还包括 : 通过通信网络将该图像发送给客户端计算机。
3: 如权利要求 2 所述的方法, 其特征在于, 通过通信网络将该图像发送给客户端计算 机发生在下列动作以后 : 确定大密钥不与大密钥存储中的任何其他大密钥匹配。
4: 如权利要求 3 所述的方法, 其特征在于, 还包括 : 向客户端发送该大密钥。
5: 如权利要求 4 所述的方法, 其特征在于, 还包括 : 向客户端计算机发送如下指示 : 使用该大密钥从客户端散列中检索第二图像以及就好 像客户端已经接收到该图像而不是该指示那样处理第二图像。
6: 如权利要求 2 所述的方法, 其特征在于, 还包括 : 在将该图像发送给客户端计算机之前对该图像进行编码。
7: 如权利要求 1 所述的方法, 其特征在于, 还包括 : 在对每组执行操作以前将校验和、 数据、 第一密钥和第二密钥中的每个设置为等于 0。
8: 如权利要求 1 所述的方法, 其特征在于, 第一密钥由该数据通过对第一密钥和该数 据执行异或运算来修改, 并且其中第二密钥由该数据通过对第二密钥和该数据执行异或运 算来修改。
9: 如权利要求 1 所述的方法, 其特征在于, 该图像具有起始和结尾, 对每组执行的操作 首先对最接近起始的还未执行对每组的操作的那组执行。
10: 如权利要求 1 所述的方法, 其特征在于, 还包括 : 当该图像大小除以位宽具有非 0 的余数位时, 用串行密码块链接 (CBC) 算法对余数位 进行散列以产生后第一密钥和后第二密钥, 从而基于后第一密钥确定第一密钥, 并且基于 后第二密钥确定第二密钥。
11: 如权利要求 5 所述的方法, 其特征在于, 该图像具有结尾、 余数位, 并且图像中没有 比该余数位更接近该结尾的部分。
12: 如权利要求 1 所述的方法, 其特征在于, 散列包括密码块链接 (CBC) 散列变型方案。
13: 如权利要求 1 所述的方法, 其特征在于, 该图像包括屏幕抓取。
14: 如权利要求 1 所述的方法, 其特征在于, 该图像包括以远程桌面协议 (RDP) 的小块。
15: 一种用于在具有位宽的并行处理系统上对图像进行归类的系统, 该方法含有第一 2 随机数和第二随机数, 第一随机数与第二随机数不同, 以及校验和、 数据、 第一密钥和第二 密钥, 该系统包括 : 处理器 (159) ; 用于将将该图像聚集成至少一个组的电路, 每个组都包括与该位宽相等数目的图像位 (206) ; 用于为每个组执行散列 (208) 的电路, 包括 : 计算对该图像的运行引用, 该运行引用包括校验和、 第一密钥、 第二密钥以及该数据, 并且基于该运行引用、 该组、 数据、 第一随机数、 以及第二随机数计算出 ; 以及 用于将包括第一密钥和第二密钥的大密钥存储在大密钥存储 (214) 中的电路。

说明书


使用 SIMD 指令的 RDP 位图散列加速

    背景技术 尽管计算机曾经被隔离并且与其他计算机具有最少的或很少的交互, 但是当今的 计算机通过诸如局域网 (LAN) 和广域网 (WAN) 之类的通信网络与多种多样的其他计算机进 行交互。 随着因特网 TM 的广泛发展, 计算机之间的连通性变得越来越重要, 并开拓了许多新 的应用和技术。 大规模网络的增长以及低成本个人计算机的广泛可用性已经从根本上改变 了许多人工作、 交互、 通信、 以及玩乐的方式。
     一种联网的越来越流行的形式一般可以被称为虚拟计算系统, 其可以使用诸如远 程桌面协议 (RDP)、 独立计算体系结构 (ICA) 等等之类的协议, 来与远程客户端共享桌面及 其他应用程序。 这样的计算系统通常将对键盘键的敲击和鼠标点击或选中从客户端传输到 服务器, 同时通过网络连接 ( 例如, 因特网 ) 以另一方向将屏幕更新中继回去。因此, 当在 现实中在应用出现服务器侧时仅仅将所述应用的屏幕截图发送给客户端设备时, 用户具有 就好像他们的机器充当 LAN 的一部分的体验。
     两种常用的将图形数据发送到客户端的技术是 : 发送向客户端的子例程告知要绘 制什么以及如何绘制的图元和其他操作 ; 以及向客户端发送位图图像以供显示。当图元的 序列太复杂时, 有时可能更有意义的是发送可以更简单地被显示的位图表示、 而不是其他 更复杂图元操作的可能长的序列。然而, 由于大多数比特流压缩器的限制以及受限的网络 带宽, 不断地发送屏幕的完整位图表示可能是花费过大的。
     为了减轻这些问题, 发送给客户端的帧 ( 比如应用窗口 ) 可以被细分为小块 (tile)。 这些小块然后在客户端侧被高速缓存, 并且当小块在两个位图之间重复时, 服务器 发送客户端显示被高速缓存的小块的指令而不是重新向客户机发送该小块。 这尤其可以在 小块频繁地重复的情况下显著地减少 RDP 会话的带宽成本。然而, 当这样做时, 处理资源于 是必须专用于高速缓存小块。
     另外, 分块算法常常被执行为使得最大化高速缓存命中的几率。在小块较小的情 况下, 几率更大的是小块将被使用两次 ( 在该帧内或者在未来的帧中 )。 常常还存在最小有 用小块大小, 因为当小块过小时, 从两个小块之间的高速缓存命中仅仅获得少的好处。
     这些 RDP 位图高速缓存算法和检测小块间差异 (“小块区分” ) 对于将 RDP 显示 流的带宽减小到通过 LAN、 WAN 或无线局域网 (wLAN) 的传输可接受的水平而言是极重要的。 这些高速缓存算法通常用服务器上的处理时间 ( 中央处理单元 (CPU) 的频率 ) 来换取为了 服务器在网络的范围内将信息传输给客户端所需的数量减小的带宽。
     RDP 位图高速缓存的主要处理成本之一是所使用的散列算法——一种将较大图像 数据变换成较小数据的算法, 其中该较小数据可以用作诸如数列或树之类的分类的数据结 构的索引。一些散列算法实现密码块链接 (CBC) 算法或者 CBC 算法的变型方案。然而, 用 在散列算法上的该处理时间可能制约服务器的伸缩性, 因为所有可用的处理资源可以在任 何其他资源——比如服务器的网络带宽——变为耗尽以前由 RDP 会话使用。该处理时间还 增加了为了对图像帧进行编码所需的时间、 这些帧可以被产生和发送给客户端的速率 ( 帧 速 (FPS))。
     用当前并行处理器来提升散列算法的速度是困难的, 因为 CBC 散列算法通常是串 行的, 这不是很好地有助于比如在单指令多数据 (SIMD) 处理器上进行并行处理。
     存在一类称为向量处理器的处理器, 它们在它们的指令集体系结构 (ISA) 中具有 TM SIMD 指令。诸如 NEHALEM 处理器之类的某些 INTELTM x86ISA 处理器中的诸如 SSE 4.2 指 令之类的流式 SIMD 扩展 (SSE) 是这些 SIMD 指令的一种形式。这些处理器能够加快对某些 类型的数据的处理, 因为它们可以一次对大块的数据进行操作。例如, 在处理图像的情况 下, SIMD 处理器可以利用单指令并行地对多个像素进行操作, 而不是一次对单个像素进行 操作。这不仅改善处理指令本身的性能, 而且可以缩短从存储器取数据花费的时间。
     尽管 SIMD 指令提供用于改善某些类型的处理 ( 诸如处理图像数据以供压缩 ) 的 性能的机会, 但是为了实现该过程所需的算法和技术比在非向量处理器的情况下困难得 多。必须加以特别注意的是数据流、 以及将数据组织为使得并行地对它进行操作。为此, 将 会从新技术中得到的好处是增大对 RDP 小块的散列操作的并行性。 发明内容 用于加速的本技术通过如下方式利用并行处理 : 如串行算法操作的那样并行地对 多个位计算散列算法 ; 以及然后将这些分开计算的散列组合以为图像确定散列。这使得处 理所需的 CPU 时间的大大减小, 而不增加冲突命中率——到散列算法的两个不同的输入将 产生相同的输出的比率——仅仅少量增加。在许多 RPD 小块散列情况下, 冲突命中率的该 微小增加是可接受的。
     本技术可用于 RDP 小块归类之外的场景中, 只要它们得益于散列速度的增加, 同 时接受冲突命中率的一些增加。该冲突命中率增加是非常微小的、 大致为 (100/2^192)%。
     在本申请的示例性实施例中, 提供用于使用 SIMD 指令进行 RDP 位图散列算法加速 的方法、 系统和计算机可读存储介质。
     本技术在两种情况下为 RDP 提供显著收益。首先, CBC 散列算法或 CBC 类型的散 列算法可以用于计算位图小块的散列。如果再次遇到该位图小块, 则散列函数将产生相同 的高速缓存密钥, 并且服务器可以通过避免重发该位图来节省带宽。
     其次, 在 RDP 使用纯粹的屏幕抓取 ( 从另一程序的显示输出中提取出图像数据 ) 来运行的情况下, 该相同的散列函数可以用于对每个新帧上的图像小块计算散列以执行哪 些小块已经改变的逐帧的快速比较。
     这两种情况都意味着散列函数通常是 RPD 栈的 CPU 成本最高的函数, 并且由于 RDP 在一些情况下是受 CPU 限制的, 因此减小 CPU 成本可以允许增加 RDP 的吞吐量。
     本领域技术人员将理解, 本发明的一个或多个方面可包括但不限于用于实现本发 明的本文所述方面的电路和 / 或编程 ; 该电路和 / 或编程实质上可以是配置成实现本文所 述方面的硬件、 软件和 / 或固件的任何组合, 这取决于系统设计者的设计选择。
     以上是概述, 并且因此必然包含细节的简化、 一般化及省略。 本领域技术人员将明 白, 本概述只是说明性的并且决不旨在是限制性的。
     附图说明
     参考附图来进一步描述用于用于散列加速的系统、 方法和计算机可读介质, 附图: 图 1 示出了可在其中体现了在此描述的散列加速的示例性通用计算环境。
     图 2 示出了用于散列加速的示例性操作过程。
     图 3 示出了客户端和服务器通过远程桌面协议 (RDP) 进行通信, 其利用了上述加 速小块区分技术。
     说明性实施例的详细描述
     图 1 是在其中可实现在此描述的技术的通用计算设备的框图。计算系统环境 120 只是合适的计算环境的一个示例, 并且不旨在对所公开的主题的使用范围或功能提出任何 限制。也不应该将计算环境 120 解释为对示例性操作环境 120 中示出的任一组件或其组合 有任何依赖性或要求。在某些实施例中, 所描绘的各种计算元素可包括被配置成实例化本 公开的各具体方面的电路。例如, 本公开中使用的术语电路可包括被配置成通过固件或开 关来执行功能的专用硬件组件。其他示例中, 术语电路可包括由实施可用于执行功能的逻 辑的软件指令配置的通用处理单元、 存储器等。在其中电路包括硬件和软件的组合的示例 实施例中, 实施者可以编写体现逻辑的源代码, 且源代码可以被编译为可以由通用处理单 元处理的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件、 软件或 硬件 / 软件组合之间几乎没有差别的地步, 因而选择硬件或是软件来实现具体功能是留给 实现者的设计选择。更具体地, 本领域技术人员可以明白软件进程可被变换成等价的硬件 结构, 而硬件结构本身可被变换成等价的软件进程。 因此, 对于硬件实现还是软件实现的选 择是设计选择并留给实现者。
     计算机 141 通常包括各种计算机可读介质。计算机可读介质可以是可以被计算机 141 访问的任何可用的介质, 并包括易失性和非易失性介质, 可移动的和不可移动的介质。 系统存储器 122 包括易失性和 / 或非易失性存储器形式的计算机存储介质, 如只读存储器 (ROM)123 和随机存取存储器 (RAM)160。基本输入 / 输出系统 124(BIOS) 包括如在启动时 帮助在计算机 141 内的元件之间传输信息的基本例程, 它通常储存在 ROM 123 中。RAM 160 通常包含处理单元 159 可以立即访问和 / 或目前正在操作的数据和 / 或程序模块。作为示 例而非限制, 图 1 示出操作系统 125、 应用程序 126、 其他程序模块 127 和程序数据 128。
     计算机 141 也可以包括其他可移动的 / 不可移动的, 易失性 / 非易失性的计算机 存储介质。仅作为示例, 图 1 示出了从不可移动、 非易失性磁介质中读取或向其写入的硬盘 驱动器 138, 从可移动、 非易失性磁盘 154 中读取或向其写入的磁盘驱动器 139, 以及从诸如 CD ROM 或其他光学介质等可移动、 非易失性光盘 153 中读取或向其写入的光盘驱动器 140。 可以在示例性操作环境中使用的其他可移动 / 不可移动、 易失性 / 非易失性计算机存储介 质包括但不限于, 磁带盒、 闪存卡、 数字多功能盘、 数字录像带、 固态 RAM、 固态 ROM 等等。硬 盘驱动器 138 通常由例如接口 134 等不可移动存储器接口连接至系统总线 121, 而磁盘驱动 器 139 和光盘驱动器 140 通常由例如接口 135 等可移动存储器接口连接至系统总线 121。
     以上讨论并在图 1 中示出的驱动器及其相关联的计算机存储介质为计算机 141 提 供了对计算机可读指令、 数据结构、 程序模块和其他数据的存储。在图 1 中, 例如, 硬盘驱动 器 138 被示为存储操作系统 158、 应用程序 157、 其他程序模块 156 和程序数据 155。注意, 这些组件可以与操作系统 125、 应用程序 126、 其他程序模块 127 和程序数据 128 相同, 也可 以与它们不同。向操作系统 158、 应用程序 157、 其他程序模块 156, 以及程序数据 155 提供
     了不同的编号, 以说明, 至少, 它们是不同的副本。用户可以通过输入设备, 例如键盘 151 和 定点设备 152——通常是指鼠标、 跟踪球或触摸垫——向计算机 141 输入命令和信息。其 他输入设备 ( 未示出 ) 可包括话筒、 游戏杆、 游戏手柄、 圆盘式卫星天线、 扫描仪等。这些 和其他输入设备通常通过耦合至系统总线的用户输入接口 136 连接至处理单元 159, 但也 可以由其他接口和总线结构, 例如并行端口、 游戏端口或通用串行总线 (USB) 来连接。监视 器 142 或其他类型的显示设备也可以通过诸如视频接口 132 之类的接口, 连接到系统总线 121。除监视器之外, 计算机还可以包括可以通过输出外围接口 133 连接的诸如扬声器 144 和打印机 143 之类的其他外围输出设备。
     计算机 141 可以使用到一个或多个远程计算机 ( 如远程计算机 146) 的逻辑连接, 以在联网环境中操作。远程计算机 146 可以是个人计算机、 服务器、 路由器、 网络 PC、 对等 设备或其他常见网络节点, 并且通常包括许多或所有以上关于计算机 141 所描述的元件, 尽管在图 1 中仅示出了存储器存储设备 147。图 1 中所示的逻辑连接包括局域网 (LAN)145 和广域网 (WAN)149, 但也可以包括其他网络。 这样的联网环境在办公室、 企业范围的计算机 网络、 内部网和因特网中是普遍现象。
     当用于 LAN 网络环境中时, 计算机 141 通过网络接口或适配器 137 连接到 LAN 145。当在 WAN 联网环境中使用时, 计算机 141 通常包括调制解调器 150 或用于通过例如 因特网等 WAN 149 建立通信的其他手段。调制解调器 150, 可以是内置的或外置的, 可以经 由用户输入接口 136 或其他适当的机制, 连接到系统总线 121。在联网环境中, 参考计算机 141 所描述的程序模块, 或其某些部分, 可以存储在远程存储器存储设备中。作为示例而非 限制, 图 1 示出远程应用程序 148 驻留在存储器设备 147 上。可以理解的是, 所示的网络连 接是示例性的, 并且可以使用在计算机之间建立通信链路的其他手段。
     图 2 示出了用于散列加速的示例性操作过程。串行散列过程可以在从图像的前部 开始并且处理到后部的情况下一次取一个 DWORD 的图像数据 ( 双字, 在许多系统体系结构 中, 这是 32 位 )。 其将为图像计算一个密钥, 该密钥基于每个新的 DWORD 的所处理图像来更 新。与之形成对比, 示例性的本操作过程一次对多个 DWORD 进行操作。在一个 DWORD 包括 32 位并且处理器可以同时对 128 位进行操作的实施例中, 这可以是 4 个 DWORD 的数据。该 过程为图像保持四个部分密钥——每个对应于一个被并行操作的 DWORD——并且那些四个 部分密钥可以一旦在整个图像已经被处理时就被组合以产生最终密钥。
     任选操作 202 描绘了选择第一随机数和第二随机数, 第一随机数与第二随机数不 同。
     任选操作 204 描绘了将校验和、 数据、 第一密钥和第二密钥中的每个设置为等于 0。 在任何实施例中, 校验和、 数据、 第一密钥和第二密钥在本操作开始以前都等于 0, 因此不 必在此将其设置为 0。 在该技术使用这四个数来保持移动和的情况下, 它们可以通过将其设 置为 0 而被初始化。校验和和数据可以用作用于确定第一密钥和第二密钥的内部变量。第 一密钥和第二密钥可以包括图像的大密钥, 该大密钥之后被用于查找图像或对该图像的引 用, 比如供服务器来查找是否其已经向客户端发送了图像, 或者供替代于已经被自己接收 的图像接收大密钥的客户端来查找图像本身。 将大密钥作为这两个分量——第一密钥和第 二密钥——来计算并且然后对其进行组合要比计算单片密钥更快。
     操作 206 描绘了将图像聚集成至少一个组, 每个组都包括与位宽相等数目的图像位。处理器可以一次对一个以上的数据位进行操作。例如, 128 位处理器可以一次对 128 个 数据位进行操作。该处理器于是具有 128 位的 “位宽” 。那些 128 位不必属于同一数据结 构, 比如表示 128 位数的数据结构。更确切而言, 该 128 位可以包括多条数据, 比如四个离 散的 32 位整数或者八个 16 位整数。在这种情况下, 存在指令使得当对一组四个 32 位整数 执行操作时, 该操作 ( 比如乘法、 逻辑移位 ) 的结果不溢出为 128 位的邻接整数。
     在一实施例中, 图像包括屏幕抓取 (scrape)。屏幕抓取包括从另一程序的显示输 出中取得数据。由于该数据曾被另一程序打算显示在输出设备上, 因此该数据通常缺乏归 档或结构来帮助分析该数据。
     在一实施例中, 图像包括以远程桌面协议 (RDP) 的小块, 该小块包括位图。小块可 以包括帧的子集, 帧通常包括应用窗口。在典型的实施例中, 帧被划分成多个矩形小块, 并 且仅仅被改变的那些小块需要被发送给客户端。
     在图像未按对齐边界对齐的实施例中, 图像在第一位边界以前的最初的多位被用 串行密码块链接 (CBC) 算法进行散列以产生前第一密钥和前第二密钥。例如, 在本操作对 128 位并行操作并且图像未按 128 位边界对齐情况下, 其中图像的 56 位在该图像的第一 128 位边界以前发生, 则该 56 位被用串行 CBC 算法散列, 并且所得到的前第一密钥和前第二 密钥分别与接下来的操作的通过串行 CBC 算法所得到的第一密钥和第二密钥相组合。 操作 208 描述了为每个组执行散列, 包括 : 将校验和设置为等于校验和加上该组 ; 将数据设置为等于该组与数据之和乘以第一随机数并且与第二随机数相加 ; 将第一密钥设 置为等于被该数据修改的第一密钥 ; 以及将第二密钥设置为等于被该数据修改的第二密 钥。
     在一实施例中, 第一密钥由数据通过对第一密钥和该数据执行异或运算来修改, 并且第二密钥由数据通过对第二密钥和该数据执行异或运算来修改。异或是按位操作, 其 中在两个输入之一并且仅仅之一也是 1 的情况下, 两个输入的结果才是 1。例如, 在 “^” 表 示异或运算的情况下, 0^0 = 0, 0^1 = 1, 1^0 = 1, 并且 1^1 = 0。
     可以认为图像是具有起始和结尾, 并且在一实施例中, 对每组执行的操作首先对 最接近起始的还未执行对每组的操作的那组执行。 也就是说, 该技术顺序地经过图像执行, 其中一次取得一组位并且在对下一组位进行相同操作以前处理该组位, 直到达到图像的结 尾。
     在一实施例中, 散列包括密码块链接 (CBC) 散列。
     任选操作 210 描绘了 : 基于第一密钥的每 DWORD 大小的位来设置 DWORD 第一密钥 ; 以及基于第二密钥的每 DWORD 大小的位来设置 DWORD 第二密钥。
     在第一密钥和第二密钥每个都包括比处理器的位宽更少的位的情况下, 计算部分 密钥。 当整个图像已经被处理时, 这些部分密钥然后用于确定完全的第一密钥和第二密钥。 采用第一密钥和第二密钥每个都包括 32 位并且位宽为 128 位的实施例。在该实施例中, 图 像的 128 位被同时处理, 从而产生四个 32 位部分第一密钥和四个 32 位部分第二密钥。 当整 个图像已经被处理时, 这四个部分密钥中的每个都然后用于确定完全密钥、 或者 DWORD 第 一密钥和 DWORD 第二密钥。
     在一实施例中, 四个部分第一密钥用于通过将它们一起进行 “异或” (XOR) 来确定 DWORD 第一密钥。 在四个部分第一密钥由 Key1[0]、 Key1[1]、 Key1[2] 和 Key1[3] 来表达时,
     该运算在逻辑上可以表达为 Key1[0]^Key1[1]^Key1[2]^Key1[3]。
     在一实施例中, 四个部分第一密钥用于通过使用串行 CBC 串行算法对它们进行组 合来确定 DWORD 第一密钥。在一实施例中, Key1[0] 被用 Key1[1] 进行 CBC 散列, 其结果被 用 Key1[2] 进行 CBC 散列, 该结果被用 Key1[3] 进行 CBC 散列。
     任选的操作 212 描绘了 : 当图像大小除以位宽具有非 0 的余数位时, 用串行算法对 余数位进行散列以产生后第一密钥和后第二密钥, 从而基于后第一密钥确定第一密钥, 并 且基于后第二密钥确定第二密钥。在图像具有可被位宽整除的位数目时, 可以对图像的每 个位进行上述操作中所描述的并行操作序列。然而, 在图像具有不能被位宽整除的位数目 时, 可以与上面的并行散列不同地对这些最终位进行常规串行散列。所得到的后第一密钥 和后第二密钥可以比如通过如下方式与第一密钥和第二密钥组合 : 将第一密钥设置为对第 一密钥和后第一密钥执行串行 CBC 散列的结果 ; 以及将第二密钥设置为对第二密钥和后第 二密钥执行串行 CBC 散列的结果。
     在一实施例中, 图像具有结尾, 并且图像中没有比余数位更接近该结尾的部分。 也 就是说, 余数位将被认为是图像的最终位, 并且它们应当在所有进行位已经以并行方式处 理以后在一次一个位宽数目的位的情况下以串行方式处理。
     在一实施例中, 从该串行处理中计算出的第一密钥和第二密钥与从上面的并行处 理中计算出的第一密钥和第二密钥比如通过如下方式相组合 : 对相应的第一密钥进行串行 CBC 散列以及对相应的第二密钥进行 CBC 散列 ; 对相应的第一密钥以及相应的第二密钥进 行 XOR 运算。
     操作 214 描绘了将包括第一密钥和第二密钥的大密钥存储在大密钥存储中。一旦 经过散列, 则图像就可以被存储在存储器地址处以及诸如树之类的数据结构中, 并且数据 然后用于访问该存储器地址的位置处的图像。 例如, 在使用数组存储器结构的情况下, 数据 可以充当该数组的索引, 并且图像被存储在该数组的数据索引处。
     在每个密钥都包括 32 位的情况下, 大密钥包括 64 位, 因此针对大密钥存在 2^64 个可能的值。在一实施例中, 尽管有冲突 ( 两个不同的图像小块对应于同一大密钥 ) 的可 能性, 但是发生这样的事情的几率小得 ( 在任何两个大密钥之间大致为 2^64 分之一 ) 以至 于为了检测冲突所需的处理资源大大超过了检测一个小块图像并且标识出正确的小块图 像使得忽略冲突并且可能使用不正确的图像的好处。
     操作 216 描绘了图像的编码。在一实施例中, 这包括通过行程 (run-length) 编码 (RLE) 对图像进行编码。在一实施例中, 这可包括用不同的编解码器对图像的不同部分进 行编码。 例如, 在图像的一部分必须以无损质量来显示的情况下, 比如在该图像是由医师使 用的医疗 x 射线的情况下, 该图像可以用无损编解码器来编码。图像的另一部分可能是白 色背景下的黑色文本, 并且用 RLE 算法对其进行编码将把其空间减少最大量 ( 也将为无损 的 )。在这种情况下, 这两个编解码器可以用于图像的合适部分。在一实施例中, 图像的颜 色通道是分开的——RGBA 图像被分成单独的红 (R)、 绿 (G)、 蓝 (B) 和阿尔法 (A) 颜色通道, 并且这些通道中的每个都被分开地编码。
     操作 218 描绘了通过通信网络将图像发送给客户端计算机。这在图像已经被发送 给该客户端并且该客户端将其已接收的图像高速缓存的情况下是不需要的。在这种情况 下, 可以向客户端发送大密钥。客户端可以维护所接收图像的与执行本操作的装置所维护的散列表相似的散列表。 在这种情况下, 当其接收到大密钥时, 客户端可以将该大密钥用作 其散列结构的索引, 接收相应的图像, 以及按照如其在已经接收到图像而不是数据的情况 下将会处理图像的那样处理该图像。
     图 3 示出了客户端和服务器通过远程桌面协议 (RDP) 进行通信, 其利用了上述加 速小块区分技术。服务器 302 包括 RDP 服务器 304、 密钥数据库 306、 以及至少一个位图图 像 308。图像 308 被划分成至少一个小块 310, 每个小块都包括位图。服务器 302 通过通信 网络 312 与客户端 314 通信。客户端 314 包括 RDP 客户端 316 和小块数据库 318, 并且连接 到显示设备 320。
     在客户端 314 与服务器 302 之间的 RDP 会话中, 服务器通过通信网络 312 发送与 服务器 302 所执行的处理相对应的客户端图像信息。例如, 客户端 314 可以在其在服务器 上执行文本编辑器的情况下具有 RDP 会话。客户端 314 向服务器 302 发送命令, 比如在当 前编辑位置处将字符序列输入文本编辑器中或者打开新的文件。这些命令在服务器 302 上 被处理, 并且所得到的显示输出被发送回客户端 314 以供在显示设备 320 上显示。在这样 的实施例中, 图像 308 可以包括文本编辑器的在给定时刻的应用窗口。如果用户在应用窗 口的底部附近添加新的文本, 则应用窗口的顶部部分在短期内不会改变。因此, 图像 308 可 以被划分成小块 310, 并且当多个图像 308 随着时间被发送给客户端 314 时, 每个图像 308 作为多个小块 310 被发送, 只有与所有在先小块 310 不同的那些小块需要被发送。客户端 314 可以在小块高速缓存 318 中高速缓存之前接收的小块 310, 并且在小块 310 重复的情况 下, 服务器 302 可以向客户端 314 发送对该小块的指示、 而不是小块 308 本身。现在被高速 缓存在小块高速缓存 318 中的该第一小块不必与重复的小块处于相同位置。例如, 在文本 编辑会话的新文档的情况下, 大多数小块将仅仅是空白空间, 因此一个纯白小块将多次用 于所有这些纯白小块。
     在服务器 302 首次接受针对图像 308 的请求时, 其将取得第一块 310 并且对其进 行散列以确定大密钥。在服务器 306 根据图 2 中所述技术对小块 310 进行散列的情况下, 密钥可以包括第一密钥和第二密钥。然后, 该服务器将使用 RDP 服务器 304 来将小块与表 示小块 310 属于图像中的何处的指示一起发送给 RDP 客户端 316, 并且还将把该小块的大密 钥存储在密钥数据库 306 中。密钥数据库可以包括诸如树之类的用于存储整数的各种数据 结构。
     针对每个相继的块 310, 服务器 302 将为其确定大密钥, 并且然后对照密钥数据库 306 检查该大密钥。在密钥数据库 306 中不存在匹配从而指示表示相同图像的小块之前还 未被发送给客户端 314 的情况下, 服务器 302 将如前面那样把该小块发送给客户端 314 并 且将其大密钥存储在密钥数据库 306 中。客户端在 RDP 客户端 316 处接收小块, 并且将其 与大密钥一起高速缓存在小块高速缓存 318 中。大密钥可以用作用于例如通过充当散列表 的索引来在小块高速缓存 318 中对图像进行定位的密钥。
     在密钥数据库 306 中存在与该小块的匹配的情况下, 这意味着服务器 302 之前已 经发送了与该小块表示相同图像的小块。因此, 为了节省网络资源, 服务器 302 将向客户端 314 发送相应的大密钥、 而不是向客户端 314 发送小块 310, 其中大密钥包括较小量的数据。 在第一密钥和第二密钥每个都包括 32 位数据的情况下, 大密钥将包括 64 位。客户端 314 在 RDP 客户端 316 处接收该密钥和数据, 并且 RDP 客户端 314 使用大密钥来在小块高速缓存 320 中对相应小块进行定位。
     在 RDP 客户端 314 接收到小块本身或者接收到相应大密钥并且在小块高速缓存 318 中查找到小块的情况下, 该 RDP 现在具有该小块。RDP 客户端 316 将一起接收表示小块 310 包括图像的哪个部分的指示和小块或大密钥。RDP 客户端 316 然后将在客户端显示设 备 320 上将小块 310 显示在图像的合适部分中。
     样本指令
     下面包括高级编程语言 C 类型句法的样本伪代码, 该伪代码在向量处理器上执行 时将类似于如图 2 的详细描述中所描述的那样以本公开的实施例的方式对图像进行操作。
     结语
     尽管已经结合各附图所示的较佳方面描述了本发明, 但要理解, 可使用其它相似 方面或者可对所述方面进行修改或添加来执行本发明的相同功能而不脱离本发明。因此, 本发明不应该仅限于任何单个方面, 而是应该在根据所附权利要求书的广度和范围内解 释。例如, 本文描述的各种过程可用硬件或软件、 或两者的组合来实现。因此, 所公开的各 实施例的方法和装置或其某些方面或部分可采用包含在诸如软盘、 CD-ROM、 硬盘驱动器或 任何其他机器可读存储介质等有形介质中的程序代码 ( 即, 指令 ) 的形式。当程序代码被 加载到诸如计算机等机器并由其执行时, 该机器变为被配置成实施所公开的各实施例的装 置。 除了此处明确阐述的具体实现之外, 考虑此处所公开的说明书, 其它方面和实现将对本
     领域的技术人员是显而易见的。说明书和所示实现旨在仅被认为是示例。

使用SIMD指令的RDP位图散列加速.pdf_第1页
第1页 / 共18页
使用SIMD指令的RDP位图散列加速.pdf_第2页
第2页 / 共18页
使用SIMD指令的RDP位图散列加速.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《使用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。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1