将参考模板同步到数据流的方法和信息处理系统的制作方法

文档序号:7815906阅读:220来源:国知局
将参考模板同步到数据流的方法和信息处理系统的制作方法
【专利摘要】本发明提供了一种方法,其中,通过给锁步缓冲器和先行缓冲器加载从参考模板中检索的模板数据块,数据流编码器将参考模板重新同步到数据流。数据流编码器确定锁步缓冲器的模板数据不同于数据流数据块,并且转而,保存先行缓冲器中的模板数据块以用于随后的重新同步。转而,数据流编码器对先行缓冲器的保存的模板数据与随后的数据流数据块进行匹配,并且据此将参考模板重新同步到数据流。
【专利说明】将参考模板同步到数据流的方法和信息处理系统

【技术领域】
[0001]本发明涉及具有先行同步的差分编码器。更具体地,本发明涉及响应于检测到参考模板不再与数据流消息同步、使用先行缓冲器将参考模板重新同步到数据流消息的差分编码器。

【背景技术】
[0002]企业数据中心可以用于服务多种不同类型的工作负载,包括可以起源于企业的客户端的客户工作负载以及支持企业的业务流程的组织工作负载。通常,客户和组织工作负载的处理要求跨数据中心的内部和/或外部数据网络的大量的数据和消息的通信。
[0003]在企业数据中心环境中,并且更一般地,在许多数据处理环境中,网络带宽是限制可以利用数据处理环境的资源来执行的有用工作量的稀缺资源。因此,已经研发了各种各样的技术以降低用于存储和/或传达消息和/或数据文件的带宽和存储要求。这些技术包含以比其原始的未压缩的形式更加紧凑的形式表示数据(例如消息或数据文件)的数据压缩。
[0004]常用的压缩技术包含运行长度编码(RLE)、算术编码、Huffman编码、基于字典的编码和增量编码。增量编码将数据表达为参考数据与要被编码的数据之间的差异。参考数据与要被编码的数据之间的差异然后可以代替要被编码的数据被存储或发送。


【发明内容】

[0005]根据本发明的一个实施例,提供了一种方法,其中,通过给锁步缓冲器和先行缓冲器加载从参考模板中检索的模板数据块,数据流编码器将参考模板重新同步到数据流。数据流编码器确定锁步缓冲器的模板数据不同于数据流数据块,并且转而,保存先行缓冲器中的模板数据块以用于随后的重新同步。转而,数据流编码器对先行缓冲器的保存的模板数据与随后的数据流数据块进行匹配,并且据此将参考模板重新同步到数据流。
[0006]前述内容是概要,因而必然含有对细节的简化、概括和省略;因此,本领域技术人员应理解,本概要仅仅是说明性的,并且不旨在以任何方式进行限制。仅由权利要求所限定的本发明的其它方面、发明特征和优点在下面阐述的非限制性详细描述中将变得显而易见。

【专利附图】

【附图说明】
[0007]通过参照附图,本发明可以被更好地理解,并且对于本领域技术人员其众多的目的、特征和优点变得显而易见,其中:
[0008]图1是示出发送基于比较数据流消息与参考模板编码的差分数据的数据流编码器的一个不例的图;
[0009]图2是示出包含针对各种消息类型采集的、其转而用于确定消息类型模板和针对每个消息类型的先行缓冲器偏移的消息类型数据的示例性表格的图;
[0010]图3A是示出使用缓冲器比较模板数据块与数据流数据块的先行比较器的一个示例的图;
[0011]图3B是示出在失去同步之后重新同步到数据流消息的参考模板的一个示例的图;
[0012]图4A是示出同步到不包含模板数据块的数据流消息的参考模板的一个示例的图;
[0013]图4B是示出在失去同步之后重新同步到数据流消息的参考模板的一个示例的图;
[0014]图5是示出在生成用于消息类型的参考模板以及存储先行偏移值以对应参考模板中所采取的步骤的流程图;
[0015]图6是示出用于基于参考模板编码数据流所采取的步骤的一个示例的流程图;
[0016]图7是示出由数据流解码器采取以解码编码的差分数据流的步骤的示例的流程图;
[0017]图8是本文所描述的方法可在其中实现的数据处理系统的框图;以及
[0018]图9提供了对图8中示出的信息处理系统环境的扩展,以说明本文中所描述的方法可以在种类广泛的信息处理系统上执行,该信息处理系统是在网络环境中操作的。

【具体实施方式】
[0019]本文中所使用的术语仅仅是为了描述特定实施例的目的,并且不旨在于限制本发明。如本文中所使用的,单数形式“一”、“一个”和“该”旨在也包含复数形式,除非上下文另外明确指示。将进一步理解的是,术语“包括”和/或“其包括”在该说明书中被使用时指定所陈述的特征、整数、步骤、操作、元件和/或部件的存在,但是不排除一个或多个其它特征、整数、步骤、操作、元件、部件和/或它们的组的存在或增加。
[0020]如特别要求的,在下面的权利要求中的所有装置或步骤加功能元件的对应结构、材料、行为和等效物旨在包含用于结合其它要求的元件执行功能的任何结构、材料或行为。对本发明的描述已经为了说明和描述的目的而给出,但是不旨在是穷举式的或者限于以所公开形式的发明。在不脱离本发明的范围和精神的情况下,对于本领域普通技术人员来说许多修改和变化将是显而易见的。实施例被选择和描述,以便最好地解释本发明的原理和实际应用,并且以使得其他本领域普通技术人员能够将用于具有各种修改的各种实施例的本发明理解为适合于所考虑的特定用途。
[0021]如将由本领域技术人员理解的,本发明的方面可以被体现为系统、方法或计算机程序产品。据此,本发明的方面可以采取在本文中一般可以全部被称为“电路”、“模块”或“系统”的完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或者组合软件和硬件方面的实施例的形式。此外,本发明的方面可以采取体现在具有计算机可读程序代码体现在其上的一个或多个计算机可读介质(或多个介质)中的计算机程序产品的形式。
[0022]可以利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质可以是例如(但不限于)电子的、磁的、光学的、电磁的、红外线的或半导体系统、装置或设备,或者前述的任何合适组合。计算机可读存储介质的更具体示例(非穷举式列表)将包含以下各项:具有一条或多条导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPR0M或闪速存储器)、光纤、便携紧缩盘只读存储器(CD-ROM)、光存储设备、磁存储设备或者前述的任何合适组合。在本文档的上下文中,计算机可读存储介质可以是能够含有或存储用于由指令执行系统、装置或设备或者与它们连接使用的程序的任何有形介质。
[0023]计算机可读信号介质可以包括具有计算机可读程序代码体现在其中的传播数据信号,例如,在基带中或作为载波的一部分。这样的传播信号可以采取各种各样形式中的任一个,包含(但不限于)电磁的、光学的或者其任何合适组合。计算机可读信号介质可以是其不是计算机可读存储介质并且可以传达、传播或者传输用于由指令执行系统、装置或设备或者与它们连接使用的程序的任何计算机可读介质。
[0024]体现在计算机可读介质上的程序代码可以使用任何适当的介质来发送,包含(但不限于)无线、有线、光纤电缆、RF等、或者前述的任何合适组合的。
[0025]用于执行针对本发明方面的操作的计算机程序代码可以以一个或多个编程语言的任意组合来编写,包含诸如Java、Smalltalk, C++等之类的面向对象的编程语言以及诸如“C”编程语言或类似编程语言之类的传统的过程编程语言。程序代码可以作为独立的软件包完全在用户的计算机上、部分在用户的计算机上、部分在用户的计算机上并且部分在远程计算机上或者完全在远程计算机或服务器上执行。在后面的情景中,远程计算机可以通过任意类型的网络连接到用户的计算机,包含局域网(LAN)或广域网(WAN),或者可以进行到外部计算机的连接(例如,通过使用互联网服务提供商的互联网)。
[0026]下面参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本发明的方面。将理解的是,流程图图示和/或框图的每个方框以及在流程图图示和/或框图中的方框的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器以产生机器,使得经由计算机或其它可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图方框或多个方框中指定的功能/行为的装置。
[0027]这些计算机程序指令还可以被存储在可以引导计算机、其它可编程数据处理装置或其它设备以特定方式起作用的计算机可读介质中,使得存储在计算机可读介质中的指令产生一件包含实现在流程图和/或框图方框或多个方框中指定的功能/行为的指令的制造品(manufacture)。
[0028]计算机程序指令还可以被加载到计算机、其它可编程数据处理装置或其它设备上以使得一系列操作步骤在计算机、其它可编程装置或其它设备上被执行以产生计算机实现的过程,使得在计算机或其它可编程装置上执行的指令提供用于实现在流程图和/或框图方框或多个方框中指定的功能/行为的过程。
[0029]附图中的流程图和框图图示了根据本发明各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。就这一点而言,流程图或框图中的每个方框均可以表示包括用于实现指定的逻辑功能(或多个功能)的一个或多个可执行指令的代码的模块、段或一部分。还应当注意的是,在一些备选实施方式中,在方框中提到的功能可以不按附图中提到的顺序发生。例如,取决于所涉及的功能,连续示出的两个方框实际上可以大致同时被执行,或者有时方框可以以相反的顺序被执行。还应注意的是,框图和/或流程图图示中的每个方框以及在框图和/或流程图图示中的方框的组合可以由执行指定功能或行为的特殊用途的基于硬件的系统或者特殊用途的硬件和计算机指令的组合来实现。
[0030]以下详细描述将整体遵循如上面阐述的
【发明内容】
,根据需要进一步解释和展开对本发明的各种方面和实施例的限定。
[0031]图1是示出发送基于对输入的数据流消息与参考模板进行比较而编码的差分数据的数据流编码器的一个示例的图。数据流编码器100接收包含各种数据流消息132、134和136 (例如,简单对象访问协议(SOAP)消息)的数据流130。数据流编码器100包含标识各个消息132至136各自的消息类型(例如,消息类型A)并且从模板存储145中检索对应参考模板的先行比较器110。转而,先行比较器110将检索的参考模板中的数据块(例如,一组模板数据的字节)同步到数据流消息中的数据块(例如,流数据的字节)。在一个实施例中,基于对相同消息类型的消息之间的共同内容的分析来预生成参考模板(对于进一步的细节,见图2和对应正文)。
[0032]数据流编码器100依照指针编码或者文字编码(数据流字节中的文字被直接编码)来编码输入的数据流130中的数据块。指针编码对指针信息进行编码(例如,在参考模板中的位置和参考模板中匹配字节的数目),并且提供增加的数据压缩,因为指针编码要求较少的位以编码数据流中相同数目的数据字节。此外,指针编码要求数据流位置与参考模板中对应位置之间的同步。
[0033]为了在失去同步之后高效地将数据流消息重新同步到参考模板,先行比较器110采用利用锁步缓冲器112以及先行缓冲器114和116的先行同步技术。锁步缓冲器112存储来自对应于锁步指针122的模板数据位置的模板数据块,并且在与输入的数据流相同的速率下前进(增量)。先行缓冲器114和116存储来自分别对应于先行指针124和126的模板数据位置的模板数据块。如本文中所讨论的,先行指针124和126在锁步缓冲器112被同步到数据流130 (匹配数据)时前进,但是在锁步缓冲器112失去与数据流130的同步时不前进。因此,先行缓冲器124和/或126存储最终被匹配到数据流数据130的模板数据块(对于进一步的细节,见图3A、3B、4A、4B和对应正文)。
[0034]在数据流与锁步缓冲器112之间的数据块比较结果是命中(匹配)时,先行比较器I1发送对应于锁步指针122的匹配的指针信息给编码器150以用于编码。同样,数据流编码器100通过计算机网络发送作为编码的数据流160的编码的指针信息给数据流解码器170。在一个实施例中,指针信息包含在参考模板中的位置和匹配的匹配字节的数目,诸如“在位置132处,16个字节”。
[0035]在接收侧,数据流解码器170接收编码的数据流160并且解码编码的指针信息(经由解码器175)。同样,数据流解码器170基于解码的指针信息从匹配参考模板140的参考模板180中提取模板数据字节。转而,数据流解码器170将提取的模板数据传输到后处理195以用于进一步的处理(解码的数据流190)。
[0036]回来参照先行比较器110,在锁步缓冲器112失去与数据流130的同步时,先行比较器I1发送实际的数据流数据给编码器150以用于编码并用于经由编码的数据流160传输到数据流解码器170。如下面更详细讨论的,通过匹配存储在先行缓冲器114和/或116中的模板数据块与随后接收到的数据流数据,先行比较器110将数据流130重新同步到参考模板140。
[0037]图2是示出包含针对各种消息类型采集的、其转而被用于确定消息类型模板和针对每个消息类型的先行缓冲器偏移的消息类型数据的示例性表格的图。表200包含针对八个不同消息类型的样本数据,诸如八个不同的SOAP(简单对象访问协议)消息。列210包含用于八个不同消息类型的消息类型标识符。列220包含针对每个消息类型所提取的样本消息的数目,并且列230包含每个消息类型的平均大小。例如,表200示出1504个消息类型A消息被取样,并且消息类型A消息的平均大小是23762字节。
[0038]列240包含相同消息类型的消息之间的共同内容的量,并且列250包含共同内容与每个消息类型的平均大小的比值。如所示,消息类型A消息具有22670字节的共同内容,这相当于95.4%的百分比。换句话说,通过基于共同内容创建针对消息类型A消息类型的参考模板,参考模板中95.4%的字节(平均)应当匹配数据流中的消息类型A消息。
[0039]图3A是示出用于比较模板数据块与数据流数据块的先行比较器110的缓冲器的一个示例的图。在图3A中示出的示例示出,参考模板140包含十个数据块BI至BlO (每个块可以含有多于一个字节),并且数据流消息136包含相同的十个数据块加上另外的数据部分300,该另外的数据部分包含五个另外的数据块的。
[0040]先行缓冲器114和116从锁步缓冲器112偏移预定义的量(对于进一步的细节,见图5和对应正文)。图3A示出先行缓冲器114偏移一个数据块,并且先行缓冲器116偏移七个数据块。在一个实施例中,先行缓冲器114偏移一个数据块以使得具有另外的数据部分的数据流消息(图3A中示出的)的迅速重新同步能够进行,并且在该实施例中,先行缓冲器116偏移的数据块的量对应于不包含在数据流消息中的最大的潜在的模板数据部分大小(对于进一步的细节,见图4A、4B和对应正文)。在另一实施例中,先行比较器110可以使用比本文中所公开的数目更多或更少的先行缓冲器。
[0041]在锁步缓冲器112的指针122前进以指向“块2”时,锁步缓冲器112从模板加载块2数据块。同样地,指针124和126前进,并且先行缓冲器114加载块3数据块,先行缓冲器116存储块9数据块。然而,在先行比较器110对锁步缓冲器112的内容与新的块310进行比较时,先行比较器110确定未命中(miss),并且转而,先行缓冲器114的指针冻结并且块3保持存储在先行缓冲器114中。同样地,先行缓冲器116的指针冻结并且块9保持存储在先行缓冲器116中。然而,因为先行比较器110继续从数据流消息136接收新的数据块并且试图同步数据流消息136与参考模板140,锁步缓冲器112的指针继续前进(对于进一步的细节,见图3B和对应正文)。
[0042]图3B是示出在失去同步之后重新同步到数据流消息的参考模板的一个示例的图。图3B示出了前进通过参考模板140的块3、4、5、6、7和8的锁步缓冲器112,其数据与数据流消息136中随后的数据块相比较。因为数据流消息136包含另外的数据部分300,数据流消息136不再与参考模板140同步,从而由先行比较器110生成未命中。然而,在先行比较器110接收数据流消息136的块3(350)时,先行比较器110匹配数据流数据块与先行缓冲器114的数据(如上面讨论的其被冻结)。因此,先行比较器110将锁步缓冲器112的指针信息更新成先行缓冲器114的指针的信息,并且转而,重新同步数据流消息136与参考模板140。例如,假设先行缓冲器114指向参考模板中的位置“632”,先行比较器110更新锁步缓冲器以指向位置“632”。此外,先行比较器110解冻先行缓冲器,并且将它们的指针设置成相对于锁步缓冲器的新位置的预定义的先行偏移值。
[0043]图4A是示出同步到不包含模板数据块的数据流消息的参考模板的一个示例的图。在图4A中示出的示例示出,参考模板400包含十个数据块(BI至B10),并且数据流消息134包含十个数据块中的六个(不包含的模板数据部分410不包含在数据流消息134中)。
[0044]在锁步缓冲器112存储块2并且先行比较器110比较锁步缓冲器112的内容与数据流消息134的块6时,先行比较器110确定未命中,并且转而,缓冲器114的指针冻结并且数据块3保持在先行缓冲器114中。同样地,先行缓冲器116的指针冻结并且数据块9保持在先行缓冲器116中。因为先行比较器110从数据流消息134接收随后的数据块并且试图同步数据流消息136与参考模板140,锁步缓冲器112的指针继续前进(对于进一步的细节,见图4B和对应正文)。
[0045]图4B是示出在失去同步之后重新同步到数据流消息的参考模板的一个示例的图。图4B示出了前进通过参考模板400的数据块3、4和5 (先行比较器110将其与数据流消息134的数据块7、8和9相比较)的锁步缓冲器112。因为数据流消息134不包含数据块2至5,先行比较器110相对于锁步缓冲器112的内容确定未命中。然而,在先行比较器110比较数据块9(440)与先行缓冲器116的数据(如上面讨论的其被冻结)时,先行比较器110确定命中(匹配)。因此,先行比较器110将锁步缓冲器112的指针信息更新成先行缓冲器116的指针的信息,并且转而,重新同步数据流消息134与参考模板400。此外,先行比较器110解冻先行缓冲器,并且将它们的指针设置成相对于锁步缓冲器的新位置的预定义的先行偏移值。
[0046]图5是示出在生成针对消息类型的参考模板以及存储先行偏移值以对应参考模板时所采取的步骤的流程图。处理开始于500,于是在510处处理选择第一消息类型。例如,处理可以选择图2中的“消息类型A”作为第一消息类型。在520处,处理将先行缓冲器1(114)的偏移值设置成最小偏移值,诸如一个数据块。如本文中所讨论的,在数据流包含另外的数据部分时,先行缓冲器1114可以被用于重新同步参考模板与数据流。通过将先行缓冲器I的偏移值配置在最小值处,重新同步发生在另外的数据部分结束之后不久(对于进一步的细节,见图3A、3B和对应正文)。
[0047]在530处,基于例如在消息类型评估期间找到的共同内容,处理生成针对所选择的消息类型的模板。例如,图2示出了针对每个消息类型的共同内容的量(列240),并且基于在分析期间标识的共同内容,处理生成消息类型模板。如本领域技术人员可以理解的,参考模板可以使用最长共同子序列提取技术来生成。在一个实施例中,样本消息中的一个可以被挑选作为模板。
[0048]在540处,处理从相同消息类型的不同消息中标识最大的潜在的不包含的模板数据部分大小(相对于生成的参考模板,其不包含在不同消息中)。例如,消息类型A的模板可以包含22670字节,并且在评估期间消息中的一个是22000字节,因为包含在模板中的670个连续字节不包含在消息中。在该示例中,最大的潜在的不包含的模板数据部分大小是670字节。
[0049]在550处,处理设置比最大的潜在的不包含的模板数据部分大小更大的(例如,大一个块)缓冲器2 (116)的先行偏移值。如本文中所讨论的,在其中参考模板包含模板数据部分(该部分不包含在数据流消息中)的情况下,先行缓冲器2被用于重新同步数据流与参考模板(对于进一步的细节,见图4A、4B和对应正文)。在一个实施例中,处理可以缓冲器2的先行偏移值设置成小于最大的潜在的不包含的模板数据部分大小的值,这对于具有大的不包含的模板数据部分的消息来说可能降低同步性能,但是减少了用于同步消息与较小的不包含的模板数据部分的时间。在另一实施例中,处理可以使用具有不同先行偏移值的多于两个的先行缓冲器。
[0050]就是否存在更多的消息类型(针对其生成模板并且针对消息类型配置先行偏移值)做出确定(决策560)。如果存在更多的消息类型,决策560分支到“是”分支,其循环回去以选择和分析下一个消息类型。该循环继续,直到处理已经生成模板并且已经针对每个消息类型配置对应先行偏移值,此时决策560分支到“否”分支,于是处理结束于570。
[0051]图6是示出基于参考模板编码数据流所采取的步骤的一个示例的流程图。处理开始于600,于是处理接收数据流上的消息,并且在602处标识消息的消息类型(例如,消息类型A、消息类型B等)。在605处,处理选择对应于标识的消息类型的参考模板并且设置对应于消息类型的先行缓冲器偏移。基于指针的对应指针信息,处理还将模板数据块加载到锁步缓冲器和先行缓冲器中。在一个实施例中,处理通过计算机网络发送消息类型标识符,所以接收解码器可以加载对应于消息类型的参考模板,为解码做准备(对于进一步的细节,见图7和对应正文)。
[0052]在步骤610处,处理接收数据流消息中的第一数据块并且比较数据流数据块与加载在锁步缓冲器(锁步缓冲器112)中的模板值。就数据流数据是否匹配锁步缓冲器值做出确定(决策615)。如果匹配存在,决策615分支到“是”分支,于是处理编码由锁步缓冲器的指针指向的模板数据块位置620。同样,在接收系统的解码器解码编码的模板数据块位置时,解码器从模板数据块位置检索对应数据块(对于进一步的细节,见图7和对应正文)。
[0053]就数据流消息中是否存在更多的数据块做出确定(决策625)。如果数据流消息中存在更多的数据块,决策625分支到“是”分支,于是处理使所有缓冲器指针(锁步指针122以及先行指针124和126)前进,并且取样数据流中的下一个数据流数据块¢30)。另一方面,如果数据流消息中不存在更多的数据块,决策625分支到“否”分支,于是就数据流上是否存在更多的数据流消息做出确定(决策628)。如果存在更多的数据流消息,决策628分支到“是”分支,其循环回去以接收下一个数据流消息,加载对应参考模板以及加载对应先行缓冲器偏移值。另一方面,如果数据流已经结束,决策628分支到“否”分支,于是处理结束于629。
[0054]回来参照决策615,在数据流数据与锁步缓冲器值之间不发生匹配时,决策615分支到“否”分支,于是在640处处理编码数据流数据块。在645处,处理冻结先行缓冲器(指针),从而维持当前加载的模板数据块值。
[0055]在650处,处理使锁步缓冲器(缓冲器112)前进并且取样下一个数据流数据块。在655处,处理比较先行缓冲器值与取样的数据流数据块。在一个实施例中,处理从输入流接收η字节的数据,并且缓冲器各自包含2η字节的模板数据。在该实施例中,缓冲器中的比较需要“η+1”个比较,使得比较各自比较模板数据与缓冲器中不同的连续的η个字节。例如,如果η = 8,处理比较输入数据的字节O至7与缓冲器的字节O至7,然后缓冲器的字节I至8,然后字节2至9等。
[0056]就是否包含在一个缓冲器(锁步或先行)中的一个数据块匹配取样的数据流数据块做出确定(缓冲器命中,决策660)。如果不存在缓冲器命中,决策660分支到“否”分支,于是在665处,处理编码输入流值。在步骤650处,处理取样下一个数据流数据块并且使锁步缓冲器指针前进(在继续冻结先行缓冲器指针的同时)。
[0057]回来参照决策660,在取样的输入流值匹配一个先行缓冲器值时,决策660分支到“是”分支,于是在670处,处理编码匹配的先行缓冲器指针的信息(位置和匹配字节的数目)。在一个实施例中,缓冲器可以是“2η”字节,其中“η”是在输入流中取样的字节的数目。在该实施例中,处理增量式地检查输入字节的η位与缓冲器中的2η字节。例如,模板缓冲器可以含有模板的字节48至63 (16字节),并且输入宽度是8字节。在该示例中,处理比较字节48至55与输入样本,然后字节49至56,然后字节50至57等。在该示例中,如果在字节50至57处发生匹配,处理编码指针位置“50” (以及诸如匹配字节的数目之类的其它相关的指针信息)。
[0058]在685处,通过将锁步缓冲器的指针信息更新成对应于匹配的先行缓冲器的指针的指针信息,处理重新同步锁步缓冲器与数据流。在690处,处理解冻先行缓冲器,并且使先行缓冲器从锁步缓冲器前进到预定义的先行偏移值,以开始取样数据流。在一个实施例中,处理可以等待以重新同步锁步缓冲器,直到检测到先行缓冲器与数据流之间的多个连续匹配,以便避免过早的同步。处理然后行进以确定是否更多数据块和/或消息包含在数据流中(决策625和628),并且如上面所讨论的,处理数据块和/或更多的消息。
[0059]图7是示出由数据流解码器采取以解码编码的差分数据流的步骤的示例的流程图。处理开始于700,于是在710处,处理接收第一消息类型标识符和编码的消息。在一个实施例中,数据流在数据头中包含消息类型标识符,该消息类型标识符指示正接收的编码消息的类型。在720处,处理选择对应于接收的消息类型标识符(例如,消息类型Α)的参考模板。
[0060]在725处,处理解码第一数据块,并且就解码的数据块是否包含对应于模板数据块位置的指针信息做出确定(决策730)。如果解码的数据块包含指针信息,决策730分支至IJ “是”分支,于是处理从模板180中对应模板数据块位置处检索数据块,并且发送检索的数据块给后处理(740)。
[0061]另一方面,如果解码的数据块不是对应于模板数据块位置的指针信息,而是实际的数据流数据,决策730分支到“否”分支,于是处理发送解码的数据流数据给后处理(760)。就处理是否已经到达接收的消息的结尾做出确定(决策770)。如果还没有到达消息的结尾,决策770分支到“否”分支,于是处理循环回去以解码消息中的下一个数据块。该循环继续,直到消息已经被处理完,此时决策770分支到“是”分支,于是就编码的数据流中是否存在更多的消息要处理做出确定(决策780)。如果存在更多的消息要处理,决策780分支到“是”分支,其循环回去以接收下一个消息并且基于下一个消息类型检索参考模板。该循环继续,直到数据流结束,此时决策780分支到“否”分支,于是处理结束于790。
[0062]图8图示了信息处理系统800,其是有执行本文中所描述的计算操作能力的计算机系统的简化示例。信息处理系统800包含耦合到处理器接口总线812的一个或多个处理器810。处理器接口总线812将处理器810连接到北桥(Northbridge) 815,其还被称为存储器控制器中枢(MCH)。北桥815连接到系统存储器820,并且提供用于处理器(或多个处理器)810访问系统存储器的装置。图形控制器825也连接到北桥815。在一个实施例中,PCI Express总线818将北桥815连接到图形控制器825。图形控制器825连接到诸如计算机监控器之类的显示设备830。
[0063]北桥815和南桥(Southbridge)835使用总线819连接到彼此。在一个实施例中,总线是在北桥815与南桥835之间的每个方向中高速传递数据的直接媒体接口(DMI)总线。在另一实施例中,外围部件互连(PCI)总线连接北桥和南桥。南桥835(还被称为I/O控制器中枢(ICH))是通常实现在比由北桥提供的性能更慢的速度下操作的性能的芯片。南桥835通常提供用于连接各种部件的各种总线。这些总线包含例如PCI和PCI Express总线、ISA总线、系统管理总线(SMBus或SMB)和/或低引脚数(LPC)总线。LPC总线常常连接诸如引导ROM 896和“旧有”1/0设备(使用“超级I/O”芯片)之类的低带宽设备。“旧有”1/0设备(898)可以包含例如串行和并行端口、键盘、鼠标和/或软盘控制器。LPC总线还将南桥835连接到受信任的平台模块(TPM)895。常常包含在南桥835中的其它部件包含直接存储器存取(DMA)控制器、可编程中断控制器(PIC)以及使用总线884将南桥835连接到诸如硬盘驱动器之类的非易失性存储设备885的存储设备控制器。
[0064]快速卡(ExpressCard)855是将热插拔设备连接到信息处理系统的插槽。快速卡855支持PCI Express和USB连接两者,因为它使用通用串行总线(USB)和PCI Express总线两者连接到南桥835。南桥835包含提供USB连接给连接到USB的设备的USB控制器840。这些设备包含摄像头(相机)850、红外(IR)接收器848、键盘和触控板844以及提供无线个人区域网络(PAN)的蓝牙设备846。USB控制器840还提供USB连接给其它杂项USB连接的设备842,诸如鼠标、可移除的非易失性存储设备845、调制解调器、网卡、ISDN连接器、传真机、打印机、USB集线器和许多其它类型的USB连接的设备。虽然可移除的非易失性存储设备845被示出为USB连接的设备,可移除的非易失性存储设备845也可以使用诸如火线接口等等之类的不同接口来连接。
[0065]无线局域网(LAN)设备875经由PCI或PCI Express总线872连接到南桥835。LAN设备875通常实现所有使用相同协议以在信息处理系统800与另一计算机系统或设备之间进行无线通信的空中调制技术的IEEE 802.11标准之一。光学存储设备890使用串行ATA(SATA)总线888连接到南桥835。串行ATA适配器和设备在高速串行链路之上进行通信。串行ATA总线还将南桥835连接到诸如硬盘驱动器之类的其它形式的存储设备。诸如声卡之类的音频电路装置860经由总线858连接到南桥835。音频电路装置860还提供诸如音频输入和光学数字音频输入端口 862、光学数字输出和耳机插孔864、内部扬声器866和内部麦克风868之类的功能。以太网控制器870使用诸如PCI或PCI Express总线之类的总线连接到南桥835。以太网控制器870将信息处理系统800连接到诸如局域网(LAN)、因特网和其它公共和私人计算机网络之类的计算机网络。
[0066]虽然图8示出了一种信息处理系统,信息处理系统可以采取许多形式。例如,信息处理系统可以采取台式、服务器、便携式、膝上型、笔记本或其它形状因子的计算机或数据处理系统的形式。此外,信息处理系统可以采取诸如个人数字助理(PDA)、游戏设备、ATM机、便携式电话设备、通信设备或者包含处理器和存储器的其它设备之类的其它形状因子。
[0067]在图8中示出和在本文中所描述的、用于提供安全功能的受信任的平台模块(TPM895)只是硬件安全模块(HSM)的一个示例。因此,本文中所描述和要求的TPM包含任何类型的HSM,包括(但不限于)符合题为“受信任的平台模块(TPM)规范版本1.2”的受信任的计算组(TCG)标准的硬件安全设备。TPM是硬件安全子系统,其可以被并入到任何数目的信息处理系统(诸如在图9中概述的那些)中。
[0068]图9提供了对图8中示出的信息处理系统环境的扩展,以说明本文中所描述的方法可以在其在网络环境中操作的种类广泛的信息处理系统上来执行。信息处理系统的类型范围从诸如手持计算机/移动电话910之类的小型手持设备到诸如主机计算机970之类的大型主机系统。手持计算机910的示例包含个人数字助理(PDA)、诸如MP3播放器之类的个人娱乐设备、便携式电视和紧缩盘播放器。信息处理系统的其它示例包含笔输入或平板电脑920、膝上型或笔记本电脑930、工作站940、个人计算机系统950和服务器960。在图9中未单独示出的其它类型的信息处理系统由信息处理系统980表示。如示出的,各种信息处理系统可以使用计算机网络900被联网在一起。可以用于互连各种信息处理系统的计算机网络的类型包含局域网(LAN)、无线局域网(WLAN)、因特网、公共交换电话网(PSTN)、其它无线网络以及可以用于互连信息处理系统的任何其它网络拓扑。许多信息处理系统包含诸如硬盘驱动器和/或非易失性存储器之类的非易失性数据存储。图9中示出的一些信息处理系统描绘了单独的非易失性数据存储(服务器960利用非易失性数据存储965,主机计算机970利用非易失性数据存储975,并且信息处理系统980利用非易失性数据存储985)。非易失性数据存储可以是在各种信息处理系统外部的部件或者可以是在一个信息处理系统内部的部件。此外,通过使用诸如将可移除的非易失性存储设备845连接到USB端口或者信息处理系统的其它连接器之类的各种技术,可移除的非易失性存储设备845可以在两个或多个信息处理系统之间共享。
[0069]虽然已经示出和描述了本发明的特定实施例,基于本文中的教导,对于本领域技术人员将是明显的是,在不脱离该发明及其更广泛方面的情况下可以做出改变和修改。因此,所附权利要求要在它们的范围内包含所有这些改变和修改,如在该发明的真实精神和范围内。此外,要理解的是,本发明仅由所附权利要求限定。将由本领域技术人员理解的是,如果旨在具体数目的引入的权利要求元件,这种意图将在权利要求中明确记载,并且在缺乏这样的记载的情况下,没有这样的限制被给出。对于作为对理解的帮助的非限制性示例,以下所附权利要求含有引入短语“至少一个”和“一个或多个”的用法,以引入权利要求元件。然而,这些短语的使用不应当被解释成暗示,权利要求元件通过不定冠词“一”或“一个”的引入将含有这些引入的权利要求元件的任何特定的权利要求限制于仅仅含有一个这样的元件的公开内容,即使在相同的权利要求包含引入短语“一个或多个”或“至少一个”以及诸如“一”或“一个”之类的不定冠词时;类似情况同样适用于权利要求中对定冠词的使用。
【权利要求】
1.一种将参考模板同步到数据流的方法,所述方法包括: 由一个或多个处理器给第一缓冲器加载第一数据块并且给第二缓冲器加载第二数据块,所述第一数据块和所述第二数据块从参考模板中被检索; 响应于确定所述第一数据块不同于包含在数据流中的数据流数据块,由所述一个或多个处理器中的至少一个处理器保存所述第二缓冲器中的所述第二数据块;以及 响应于确定保存的所述第二数据块与包含在所述数据流中的随后的数据流数据块相匹配,由所述一个或多个处理器中的至少一个处理器将所述参考模板同步到所述数据流。
2.根据权利要求1所述的方法,其中所述同步包含基于对应于所述第二缓冲器的先行指针位置更新对应于所述第一缓冲器的锁步指针位置。
3.根据权利要求2所述的方法,进一步包括: 响应于所述第一数据块不同于所述数据流数据块的所述确定: 使所述锁步指针位置前进;和 禁止所述先行指针位置前进。
4.根据权利要求2所述的方法,其中在加载所述第一缓冲器和所述第二缓冲器之前,所述方法进一步包括: 确定将从所述参考模板中排除的最大的潜在的模板数据部分; 基于所述最大的潜在的模板数据部分大小配置先行偏移值;以及 基于所述锁步指针位置和所述先行偏移值设置所述先行指针位置。
5.根据权利要求4所述的方法,其中响应于所述锁步指针位置的更新,基于更新的所述锁步指针位置和所述先行偏移值更新所述先行指针位置。
6.根据权利要求2所述的方法,进一步包括: 响应于保存的所述第二数据块与所述随后的数据流数据块相匹配: 编码包含所述先行指针位置的指针信息;和 发送编码的所述指针信息给接收方计算机系统。
7.根据权利要求6所述的方法,进一步包括: 由所述接收方计算机系统解码编码的所述指针信息;和 由所述接收方计算机系统根据解码的所述指针信息从接收方参考模板中检索接收方模板数据。
8.根据权利要求1所述的方法,其中所述数据流数据块被包含在数据流消息中,所述方法进一步包括: 标识对应于所述数据流消息的消息类型;和 基于标识的所述消息类型,从多个参考模板中选择所述参考模板。
9.根据权利要求8所述的方法,其中所述随后的数据流数据块在另外的数据部分之后,所述另外的数据部分包含在所述数据流消息中并且不包含在所述参考模板中。
10.根据权利要求8所述的方法,其中所述第二数据块在模板数据部分之后,所述模板数据部分包含在所述参考模板中并且不包含在所述数据流消息中。
11.根据权利要求1所述的方法,其中所述第二数据块是所述数据流数据块的两倍宽,所述方法进一步包括: 响应于从所述参考模板中检索的多个第二数据块与包含在所述数据流中的多个随后的数据流数据块的匹配,执行所述同步。
12.—种信息处理系统,包括: 一个或多个处理器; 可访问所述一个或多个处理器中至少一个处理器的多个缓冲器; 耦合到所述一个或多个处理器中至少一个处理器的存储器; 存储在所述存储器中并且由所述一个或多个处理器中至少一个处理器执行的指令组,以便执行包括以下各项的动作: 给第一缓冲器加载第一数据块并且给第二缓冲器加载第二数据块,其中所述第一数据块和所述第二数据块从参考模板中被检索,所述第一缓冲器和所述第二缓冲器包含在所述多个缓冲器中; 响应于确定所述第一数据块不同于包含在数据流中的数据流数据块,保存所述第二缓冲器中的所述第二数据块;以及 响应于确定保存的所述第二数据块与包含在所述数据流中的随后的数据流数据块相匹配,将所述参考模板同步到所述数据流。
13.根据权利要求12所述的信息处理系统,其中所述同步包含基于对应于所述第二缓冲器的先行指针位置更新对应于所述第一缓冲器的锁步指针位置。
14.根据权利要求13所述的信息处理系统,其中响应于所述第一数据块不同于所述数据流数据块的所述确定,在由所述一个或多个处理器中至少一个处理器执行时,所述指令组执行包括以下各项的进一步的动作: 使所述锁步指针位置前进;和 禁止所述先行指针位置前进。
15.根据权利要求13所述的信息处理系统,其中在加载所述第一缓冲器和所述第二缓冲器之前,在由所述一个或多个处理器中至少一个处理器执行时,所述指令组执行包括以下各项的进一步的动作: 确定将从所述参考模板中排除的最大的潜在的模板数据部分; 基于所述最大的潜在的模板数据部分大小配置先行偏移值;以及 基于所述锁步指针位置和所述先行偏移值设置所述先行指针位置。
16.根据权利要求13所述的信息处理系统,其中响应于保存的所述第二数据块与所述随后的数据流数据块相匹配,在由所述一个或多个处理器中至少一个处理器执行时,所述指令组执行包括以下各项的进一步的动作: 编码包含所述先行指针位置的指针信息;和 发送所述编码的指针信息给接收方计算机系统。
【文档编号】H04L1/00GK104518850SQ201410510811
【公开日】2015年4月15日 申请日期:2014年9月28日 优先权日:2013年10月2日
【发明者】K·B·阿加瓦尔, M·A·保利尼 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1