CN102334097A - 使用simd指令的rdp位图散列加速 - Google Patents

使用simd指令的rdp位图散列加速 Download PDF

Info

Publication number
CN102334097A
CN102334097A CN2010800097488A CN201080009748A CN102334097A CN 102334097 A CN102334097 A CN 102334097A CN 2010800097488 A CN2010800097488 A CN 2010800097488A CN 201080009748 A CN201080009748 A CN 201080009748A CN 102334097 A CN102334097 A CN 102334097A
Authority
CN
China
Prior art keywords
key
image
data
client
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2010800097488A
Other languages
English (en)
Other versions
CN102334097B (zh
Inventor
N·Y·阿布多
V·A·阿尔布
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102334097A publication Critical patent/CN102334097A/zh
Application granted granted Critical
Publication of CN102334097B publication Critical patent/CN102334097B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • G06F3/1462Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay with means for detecting differences between the image stored in the host and the images displayed on the remote displays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography
    • G06Q2220/10Usage protection of distributed data files
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/02Handling of images in compressed format, e.g. JPEG, MPEG
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/122Tiling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Processing (AREA)

Abstract

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

Description

使用SIMD指令的RDP位图散列加速
背景技术
尽管计算机曾经被隔离并且与其他计算机具有最少的或很少的交互,但是当今的计算机通过诸如局域网(LAN)和广域网(WAN)之类的通信网络与多种多样的其他计算机进行交互。随着因特网TM的广泛发展,计算机之间的连通性变得越来越重要,并开拓了许多新的应用和技术。大规模网络的增长以及低成本个人计算机的广泛可用性已经从根本上改变了许多人工作、交互、通信、以及玩乐的方式。
一种联网的越来越流行的形式一般可以被称为虚拟计算系统,其可以使用诸如远程桌面协议(RDP)、独立计算体系结构(ICA)等等之类的协议,来与远程客户端共享桌面及其他应用程序。这样的计算系统通常将对键盘键的敲击和鼠标点击或选中从客户端传输到服务器,同时通过网络连接(例如,因特网)以另一方向将屏幕更新中继回去。因此,当在现实中在应用出现服务器侧时仅仅将所述应用的屏幕截图发送给客户端设备时,用户具有就好像他们的机器充当LAN的一部分的体验。
两种常用的将图形数据发送到客户端的技术是:发送向客户端的子例程告知要绘制什么以及如何绘制的图元和其他操作;以及向客户端发送位图图像以供显示。当图元的序列太复杂时,有时可能更有意义的是发送可以更简单地被显示的位图表示、而不是其他更复杂图元操作的可能长的序列。然而,由于大多数比特流压缩器的限制以及受限的网络带宽,不断地发送屏幕的完整位图表示可能是花费过大的。
为了减轻这些问题,发送给客户端的帧(比如应用窗口)可以被细分为小块(tile)。这些小块然后在客户端侧被高速缓存,并且当小块在两个位图之间重复时,服务器发送客户端显示被高速缓存的小块的指令而不是重新向客户机发送该小块。这尤其可以在小块频繁地重复的情况下显著地减少RDP会话的带宽成本。然而,当这样做时,处理资源于是必须专用于高速缓存小块。
另外,分块算法常常被执行为使得最大化高速缓存命中的几率。在小块较小的情况下,几率更大的是小块将被使用两次(在该帧内或者在未来的帧中)。常常还存在最小有用小块大小,因为当小块过小时,从两个小块之间的高速缓存命中仅仅获得少的好处。
这些RDP位图高速缓存算法和检测小块间差异(“小块区分”)对于将RDP显示流的带宽减小到通过LAN、WAN或无线局域网(wLAN)的传输可接受的水平而言是极重要的。这些高速缓存算法通常用服务器上的处理时间(中央处理单元(CPU)的频率)来换取为了服务器在网络的范围内将信息传输给客户端所需的数量减小的带宽。
RDP位图高速缓存的主要处理成本之一是所使用的散列算法——一种将较大图像数据变换成较小数据的算法,其中该较小数据可以用作诸如数列或树之类的分类的数据结构的索引。一些散列算法实现密码块链接(CBC)算法或者CBC算法的变型方案。然而,用在散列算法上的该处理时间可能制约服务器的伸缩性,因为所有可用的处理资源可以在任何其他资源——比如服务器的网络带宽——变为耗尽以前由RDP会话使用。该处理时间还增加了为了对图像帧进行编码所需的时间、这些帧可以被产生和发送给客户端的速率(帧速(FPS))。
用当前并行处理器来提升散列算法的速度是困难的,因为CBC散列算法通常是串行的,这不是很好地有助于比如在单指令多数据(SIMD)处理器上进行并行处理。
存在一类称为向量处理器的处理器,它们在它们的指令集体系结构(ISA)中具有SIMD指令。诸如NEHALEMTM处理器之类的某些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的详细描述中所描述的那样以本公开的实施例的方式对图像进行操作。
Figure BPA00001425029300121
Figure BPA00001425029300131
Figure BPA00001425029300141
Figure BPA00001425029300151
结语
尽管已经结合各附图所示的较佳方面描述了本发明,但要理解,可使用其它相似方面或者可对所述方面进行修改或添加来执行本发明的相同功能而不脱离本发明。因此,本发明不应该仅限于任何单个方面,而是应该在根据所附权利要求书的广度和范围内解释。例如,本文描述的各种过程可用硬件或软件、或两者的组合来实现。因此,所公开的各实施例的方法和装置或其某些方面或部分可采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其他机器可读存储介质等有形介质中的程序代码(即,指令)的形式。当程序代码被加载到诸如计算机等机器并由其执行时,该机器变为被配置成实施所公开的各实施例的装置。除了此处明确阐述的具体实现之外,考虑此处所公开的说明书,其它方面和实现将对本领域的技术人员是显而易见的。说明书和所示实现旨在仅被认为是示例。

Claims (15)

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.一种用于在具有位宽的并行处理系统上对图像进行归类的系统,该方法含有第一随机数和第二随机数,第一随机数与第二随机数不同,以及校验和、数据、第一密钥和第二密钥,该系统包括:
处理器(159);
用于将将该图像聚集成至少一个组的电路,每个组都包括与该位宽相等数目的图像位(206);
用于为每个组执行散列(208)的电路,包括:
计算对该图像的运行引用,该运行引用包括校验和、第一密钥、第二密钥以及该数据,并且基于该运行引用、该组、数据、第一随机数、以及第二随机数计算出;以及
用于将包括第一密钥和第二密钥的大密钥存储在大密钥存储(214)中的电路。
CN2010800097488A 2009-02-26 2010-02-05 使用simd指令的rdp位图散列加速 Expired - Fee Related CN102334097B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/393,950 US9071843B2 (en) 2009-02-26 2009-02-26 RDP bitmap hash acceleration using SIMD instructions
US12/393,950 2009-02-26
PCT/US2010/023256 WO2010098959A2 (en) 2009-02-26 2010-02-05 Rdp bitmap hash acceleration using simd instructions

Publications (2)

Publication Number Publication Date
CN102334097A true CN102334097A (zh) 2012-01-25
CN102334097B CN102334097B (zh) 2013-07-17

Family

ID=42631017

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010800097488A Expired - Fee Related CN102334097B (zh) 2009-02-26 2010-02-05 使用simd指令的rdp位图散列加速

Country Status (11)

Country Link
US (1) US9071843B2 (zh)
EP (1) EP2401673B1 (zh)
JP (1) JP5750786B2 (zh)
KR (1) KR101651309B1 (zh)
CN (1) CN102334097B (zh)
AU (1) AU2010218303B2 (zh)
BR (1) BRPI1007170A2 (zh)
CA (1) CA2750195C (zh)
RU (1) RU2542935C2 (zh)
SG (2) SG172840A1 (zh)
WO (1) WO2010098959A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104881886A (zh) * 2015-05-14 2015-09-02 大连民族学院 用链码编码彩色动画图像的方法
CN108419076A (zh) * 2012-09-29 2018-08-17 华为技术有限公司 视频编码及解码方法、装置及系统

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110225566A1 (en) * 2010-03-10 2011-09-15 Microsoft Corporation Testing user interfaces in multiple execution environments
GB2481613A (en) * 2010-06-30 2012-01-04 Skype Ltd Updating regions of shared images using a server that records image status
GB2481612A (en) 2010-06-30 2012-01-04 Skype Ltd Updating image regions in a shared image system
KR101451381B1 (ko) 2011-04-12 2014-10-16 어플라이드 사이언스, 인코포레이티드 헌혈을 관리하는 시스템 및 방법
US8737724B2 (en) 2011-06-10 2014-05-27 Microsoft Corporation Image type classifier for improved remote presentation session compression
US9354764B2 (en) 2012-06-29 2016-05-31 Dell Products L.P. Playback of flash content at a client by redirecting execution of a script by a flash redirection plugin at a server to a flash redirection browser at the client
US9626450B2 (en) 2012-06-29 2017-04-18 Dell Products L.P. Flash redirection with browser calls caching
US8924478B2 (en) * 2012-12-29 2014-12-30 Futurewei Technologies, Inc. Virtual desktop infrastructure (VDI) login acceleration
CA2950317C (en) * 2014-05-27 2021-11-02 Tsx Inc. Parallel processing of hash functions
AU2015266570B2 (en) 2014-05-30 2020-02-27 Applied Science, Inc. Systems and methods for managing blood donations
WO2017165454A1 (en) * 2016-03-21 2017-09-28 Deep Space Industries Inc. Method for remote system onboard software updating and protection

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030188195A1 (en) * 2002-04-01 2003-10-02 Abdo Nadim Y. Automatic re-authentication
CN1630246A (zh) * 2003-12-15 2005-06-22 联想(北京)有限公司 一种远程桌面获取数据的实现方法
WO2005064506A1 (en) * 2003-12-29 2005-07-14 Innoka Oy Method and arrangement for real-time betting with an off-line terminal
CN1694058A (zh) * 2005-04-30 2005-11-09 广东威创日新电子有限公司 一种基于服务器端/客户端结构远程显示处理方法
US20060177056A1 (en) * 2003-07-10 2006-08-10 Peter Rostin Secure seed generation protocol
CN101014127A (zh) * 2007-01-26 2007-08-08 华中科技大学 普适环境下的远程桌面同步方法
US20080002894A1 (en) * 2006-06-29 2008-01-03 Winbond Electronics Corporation Signature-based video redirection
CN101268674A (zh) * 2005-09-23 2008-09-17 三星电子株式会社 提供远程用户界面的设备和方法
US20080313545A1 (en) * 2007-06-13 2008-12-18 Microsoft Corporation Systems and methods for providing desktop or application remoting to a web browser

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4424841A (en) * 1982-09-30 1984-01-10 Smith J Rudy Modular stacking bag
US4868877A (en) * 1988-02-12 1989-09-19 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
JPH04148372A (ja) 1990-10-11 1992-05-21 Fujitsu Ltd ハッシュ値算出処理方式
US6437803B1 (en) * 1998-05-29 2002-08-20 Citrix Systems, Inc. System and method for combining local and remote windows into a single desktop environment
JPH10301491A (ja) * 1997-04-28 1998-11-13 Ibm Japan Ltd 暗号通信方法とシステム
US6075938A (en) 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US20050160272A1 (en) * 1999-10-28 2005-07-21 Timecertain, Llc System and method for providing trusted time in content of digital data files
US7143294B1 (en) 1999-10-29 2006-11-28 Broadcom Corporation Apparatus and method for secure field upgradability with unpredictable ciphertext
JP2002251373A (ja) 2001-02-23 2002-09-06 Hitachi Ltd ネットワークシステム及びネットワーク端末
JP4326186B2 (ja) 2002-04-15 2009-09-02 ソニー株式会社 情報処理装置および方法
US7353382B2 (en) * 2002-08-08 2008-04-01 Fujitsu Limited Security framework and protocol for universal pervasive transactions
US7606314B2 (en) * 2002-08-29 2009-10-20 Raritan America, Inc. Method and apparatus for caching, compressing and transmitting video signals
US7027143B1 (en) 2002-10-15 2006-04-11 Kla-Tencor Technologies Corp. Methods and systems for inspecting reticles using aerial imaging at off-stepper wavelengths
US7359184B2 (en) * 2002-10-31 2008-04-15 Hotwire Development Llc Notebook computer protection device
US8417913B2 (en) 2003-11-13 2013-04-09 International Business Machines Corporation Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages
US7353388B1 (en) * 2004-02-09 2008-04-01 Avaya Technology Corp. Key server for securing IP telephony registration, control, and maintenance
US20060005031A1 (en) 2004-06-15 2006-01-05 Apostolopoulos John G Methods and systems for utilizing a single cryptographic integrity check to generate multiple cryptographic integrity check values for components of transcodable content
US7293035B2 (en) 2004-06-30 2007-11-06 International Business Machines Corporation System and method for performing compression/encryption on data such that the number of duplicate blocks in the transformed data is increased
US7672005B1 (en) * 2004-06-30 2010-03-02 Teradici Corporation Methods and apparatus for scan block caching
US7822278B1 (en) * 2005-09-20 2010-10-26 Teradici Corporation Methods and apparatus for encoding a digital video signal
US8319728B2 (en) * 2005-10-17 2012-11-27 Avocent Huntsville Corporation Input-device movement to cursor movement correlator
US8112513B2 (en) * 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US7434002B1 (en) 2006-04-24 2008-10-07 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
US20070201201A1 (en) * 2006-07-12 2007-08-30 Daley Charles A Iii Bag computer
JP4850645B2 (ja) 2006-09-14 2012-01-11 キヤノン株式会社 画像再生装置及び画像再生方法
JP4201037B2 (ja) * 2006-09-14 2008-12-24 ソニー株式会社 レンズ鏡筒回転型撮像装置
WO2009029842A1 (en) * 2007-08-31 2009-03-05 Exegy Incorporated Method and apparatus for hardware-accelerated encryption/decryption
WO2009070339A1 (en) 2007-11-28 2009-06-04 Atrua Technologies, Inc. System for and method of locking and unlocking a secret using a fingerprint

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030188195A1 (en) * 2002-04-01 2003-10-02 Abdo Nadim Y. Automatic re-authentication
US20060177056A1 (en) * 2003-07-10 2006-08-10 Peter Rostin Secure seed generation protocol
CN1630246A (zh) * 2003-12-15 2005-06-22 联想(北京)有限公司 一种远程桌面获取数据的实现方法
WO2005064506A1 (en) * 2003-12-29 2005-07-14 Innoka Oy Method and arrangement for real-time betting with an off-line terminal
CN1694058A (zh) * 2005-04-30 2005-11-09 广东威创日新电子有限公司 一种基于服务器端/客户端结构远程显示处理方法
CN101268674A (zh) * 2005-09-23 2008-09-17 三星电子株式会社 提供远程用户界面的设备和方法
US20080002894A1 (en) * 2006-06-29 2008-01-03 Winbond Electronics Corporation Signature-based video redirection
CN101014127A (zh) * 2007-01-26 2007-08-08 华中科技大学 普适环境下的远程桌面同步方法
US20080313545A1 (en) * 2007-06-13 2008-12-18 Microsoft Corporation Systems and methods for providing desktop or application remoting to a web browser

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108419076A (zh) * 2012-09-29 2018-08-17 华为技术有限公司 视频编码及解码方法、装置及系统
US11089319B2 (en) 2012-09-29 2021-08-10 Huawei Technologies Co., Ltd. Video encoding and decoding method, apparatus and system
CN108419076B (zh) * 2012-09-29 2022-04-29 华为技术有限公司 视频编码及解码方法、装置及系统
US11533501B2 (en) 2012-09-29 2022-12-20 Huawei Technologies Co., Ltd. Video encoding and decoding method, apparatus and system
CN104881886A (zh) * 2015-05-14 2015-09-02 大连民族学院 用链码编码彩色动画图像的方法

Also Published As

Publication number Publication date
CA2750195A1 (en) 2010-09-02
AU2010218303B2 (en) 2014-05-29
US9071843B2 (en) 2015-06-30
RU2542935C2 (ru) 2015-02-27
KR20110129382A (ko) 2011-12-01
JP2012519327A (ja) 2012-08-23
EP2401673B1 (en) 2017-01-18
EP2401673A2 (en) 2012-01-04
EP2401673A4 (en) 2016-03-16
SG172840A1 (en) 2011-08-29
BRPI1007170A2 (pt) 2018-03-13
SG2014008197A (en) 2014-04-28
RU2011135548A (ru) 2013-02-27
KR101651309B1 (ko) 2016-09-05
CN102334097B (zh) 2013-07-17
US20100215280A1 (en) 2010-08-26
JP5750786B2 (ja) 2015-07-22
WO2010098959A3 (en) 2010-12-09
CA2750195C (en) 2016-09-20
WO2010098959A2 (en) 2010-09-02
AU2010218303A1 (en) 2011-07-28

Similar Documents

Publication Publication Date Title
CN102334097B (zh) 使用simd指令的rdp位图散列加速
CN102246524B (zh) 使用单指令、多派遣指令的远程桌面协议压缩加速
US10554220B1 (en) Managing compression and storage of genomic data
US7907069B2 (en) Fast compression method for scientific data
US8761528B2 (en) Compression of image data
US6885319B2 (en) System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US6819271B2 (en) Parallel compression and decompression system and method having multiple parallel compression and decompression engines
ES2600756T3 (es) Sistema y procedimiento para facilitar la compresión de imágenes de documento utilizando una máscara
CN101611402B (zh) 用于优化数据集的变化的系统和方法
US7652595B2 (en) Generating a data stream and identifying positions within a data stream
CN102222314B (zh) 用并行处理从源位图标识并提取模式来加速位图远程发送
US9590655B2 (en) Scalable high-bandwidth architecture for lossless compression
US20140039866A1 (en) Optimizing quantum simulations by intelligent permutation
US20140040849A1 (en) Quantum gate optimizations
CN114222129A (zh) 图像压缩编码方法、装置、计算机设备和存储介质
CN102811347A (zh) 图像处理装置、图像处理方法和程序
CN108668169B (zh) 图像信息处理方法及装置、存储介质
US10678505B2 (en) Subset encoding method: increasing pattern density for finite automata
RU2090011C1 (ru) Устройство кодирования-декодирования видеосигнала изображений
CN110175269B (zh) 一种顶点索引的压缩及解压缩方法、装置及计算机存储介质
CN116644083B (zh) 数据更新方法、装置、设备及存储介质
CN106851323A (zh) 解码方法及解码装置
CN117808656A (zh) 使用重建信息归属的无载体图像隐写方法、存储介质及电子装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150421

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150421

Address after: Washington State

Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130717