含冗余的数据压缩与解压缩的系统和方法_2

文档序号:9326869阅读:来源:国知局
RAM)或其他非易失性存储设备,存储器114和144还可用来在处理器112和142执行指令时存储临时参数或其他中间信息。在被存储于可访问处理器112和142的非临时性存储媒介(例如存储设备116和146)后,这些指令使计算机系统110和140成为定制执行指令指定运算的特殊用途机器。这些指令可组织成不同软件模块,举例来说,不同软件模块可包含要素(例如软件要素、面向对象的软件要素、分类要素以及任务要素)、过程、功能、域、步骤、子程序、程序代码片段、驱动器、固件、微代码、电路、数据、数据库、数据结构、表、阵列以及变量。
[0027]通常,此处引用的“模块”一词是指硬件或固件中包含的逻辑或指软件指令的集合,可能具有入口和出口点,用编程语言如Java、Lua、C或C++编写。软件模块可汇编或链接至可执行程序,安装于动态链接库或编写在如BASIC、Perl或Python解译程序语言中。还应当注意到,软件模块可从其他模块或其自身中随时被调用,和/或可响应于检测到的项目或干扰被调用,用于在计算设备上执行的软件模块可提供在计算机可读媒介上,如压缩盘、数字录像盘、闪存驱动器、磁盘、或任何其他有形媒介,或数字下载件(通常以压缩件或安装格式存储,在执行前需要安装、解压缩或解密);这些软件代码可部分或全部存储在执行计算设备的存储器上,由计算设备执行;软件指令可嵌入固件中,如可擦可编程只读存储器(EPROM)。还应当注意,硬件模块可包括连接的逻辑单元,如选择器开关和触发器,和/或可包括可编程单元,如可编程序门阵列或处理器。此中描述的模块或计算设备功能最优由软件模块实现,但是可由硬件或固件替换。一般来说,虽然为实体组织或存储,此中描述的模块是指可与其他模块结合或可分割为子模块的逻辑模块。
[0028]计算机系统110和140可以采用定制硬连接逻辑、一个或多个特定用途集成电路或现场可编程门阵列、结合计算机系统促使或安排计算机系统110和140成为特殊用途机器的固件和/或程序逻辑实现此中描述的技术。根据一些实施方式,此中描述的运算、功能、技术或其他特征由计算机系统110和140并且响应于执行分别包含于存储器114和144中的一个或多个指令的一个或多个序列的处理器112和142执行,这些指令可从其他存储媒介如存储设备116和146中读入存储器114和144,包含于存储器114和144中的指令序列的执行促使处理器112和142执行此中描述的处理步骤。在替换实施方式中,硬连接电路替换为或结合软件指令。
[0029]此中使用的术语“非临时性媒介”是指用于存储促使机器以特殊方式运行的数据或指令的任何非临时性媒介,这些非临时性媒介可包括非易失性媒介和/或易失性媒介。举例来说,非易失性媒介可包含动态存储器如存储器114和144,非临时性媒介的通常形式包含例如软盘、软磁盘、硬盘、固态驱动器、磁带或其他任何磁性数据存储媒介、CD-ROM、其他任何光学数据存储媒介、其他任何具有空穴阵列的实体媒介、随机存取存储器、可编程只读存储器、可擦可编程只读存储器、快擦编程只读存储器、其他任何存储芯片或盒式存储器、以及等同网络版。
[0030]网络界面118和148可提供联结网络130的双向数据通信,例如,网络界面118和148可以为综合服务数字网络(ISDN)卡、光缆调制解调器、卫星调制解调器或调制解调器以提供与相应类型电话线的数据通信连接;另一个例子,网络界面118和148可以为局域网(LAN)卡,提供与兼容LAN的数据通信连接。在这样任一实施中,网络界面118和148可发送和接收载有代表各种类型信息的数字数据流的电信号、电磁信号或光信号,并将数据流提供给存储设备116和146,处理器112和142可将数据转换为不同形式(例如通过执行软件指令来压缩或解压缩数据),然后将转换后的数据存储在存储设备中(例如存储设备116和146),以及/或者将转换后的数据通过网络界面118和148在网络130上传输。
[0031]图2示出本发明实施方式的示例系统200的框图。在一些实施方式中,系统200如同图1中的系统110 —样实现,包含数据压缩模块230、数据解压缩模块250、历史数据管理器270以及探索握手模块290,在通过处理器(例如图1中的处理器112)执行时,数据压缩模块230、数据解压缩模块250、历史数据管理器270以及探索握手模块290中的至少部分可检索和/或更新存储于存储设备160中的历史数据294以及一个或多个表296。虽然图2显示系统200既包含数据压缩模块230又包含数据解压缩模块250,应当理解为,系统200可以只包含数据压缩模块230来压缩数据,而接收系统(例如图1所示的系统140)可以只包含数据解压缩模块250来接收来自系统200的压缩数据,然后将数据解压缩。此外,虽然图2显示历史数据294和表296为两个独立的整体,应当理解为两者均可以为数据结构的一部分。
[0032]历史数据294包含最近压缩的数据和/或因解压缩其他数据而最近生成的数据,表296包含便于在历史数据294中查找数据片段的信息。在一些实施方式中,历史数据294包含系统200认为对于特定传输来说是冗余的数据,例如,当系统200接收指示传输数据至接收系统(例如图1所示的系统140)的指令,系统200可能认为待传输数据的至少一部分已经是存储于系统140中的相应历史数据的一部分,因此使数据的这部分成为冗余而不需要传输冗余数据。使用表296中的信息时,系统200在历史数据294中可查找并定位冗余数据,定位冗余数据后,且知道系统140已经存储相同冗余数据,系统200向系统140传输表示冗余数据和历史数据294(和/或存储于系统140的相应历史数据)之间关系的信息,这种关系可以为例如存储于系统140的相应历史数据中的冗余数据的位置或大小,这种关系通常可以用比冗余数据本身更少的数据来表示,因此,关系信息的传输,而不是冗余数据,可节省传输在其上进行的媒介(如图1所示的网络130)的带宽。系统200还可压缩上述信息来进一步减少传输数据的大小,历史数据294和表296的进一步详细信息将在下面讨论。
[0033]数据压缩模块230可接收原始数据(例如来自图1中的处理器112执行的另一运用)和指令来压缩原始数据,数据压缩模块230然后可利用表296中的信息来从历史数据294中寻找原始数据,历史数据294的一部分可以存储在存储器(例如图1中存储114)和/或存储设备(例如图1中的存储设备116)中。如果数据压缩模块230从历史数据294中找到了原始数据,数据压缩模块230可以产生引用令牌,该引用令牌包含协助接收系统从相应历史数据中找到原始数据的相同片段的信息,包含在引用令牌中的该信息可指示在历史数据294中的位置以及与原始数据相匹配的数据的长度,然后引用令牌被传输至接收系统。另一方面,如果数据压缩模块230不能从历史数据294中找到原始数据,原始数据将作为原始令牌的一部分被传输至接收系统。在一些实施方式中,输入数据也可添加至历史数据294中,将在更新的历史数据294中定位所添加输入数据的信息在表296中更新。在一些实施方式中,令牌流可利用一个或多个无损数据流压缩算法在传输前被压缩。在一些实施方式中,令牌流(已压缩或未压缩)可通过如图1所示的网络界面118包格式化,包格式化的令牌流可在网络(如图1所示的网络130)上传输。数据压缩模块还可以添加原始数据到历史数据294中,将在更新的历史数据294中定位所添加数据的信息在表296中更新。
[0034]数据解压缩模块250可从数据压缩模块230所传输的令牌流中重建数据流,接收及多路分解包格式化后的数据以检索含有引用和/或原始令牌的数据包(如果为压缩数据,并解压缩多路分解的数据)得到令牌流,在此之后,数据解压缩模块250可从令牌流中识别引用令牌和/或原始令牌,数据解压缩模块250可基于引用令牌的位置和长度信息从历史数据294中检索与引用令牌相关联的数据,添加检索到的数据至输出数据流即例如处理器112上执行的另一应用,对于原始令牌,数据解压缩模块250可添加包含有原始令牌的原始数据至输出数据流。数据解压缩模块250还可更新历史数据294来包含输出数据流,将在更新的历史数据294中定位所添加数据的信息在表296中更新。
[0035]历史数据管理器270在数据压缩模块230和数据解压缩模块250执行更新时管理历史数据294的创建与删除,例如,历史数据管理器270可以删除历史数据294中占有新历史数据的空间的旧数据,历史数据管理器270亦可与接收系统同步,或与系统200从其处接收关于历史数据变化的数据的其他系统同步,这样,参与令牌流传输的两边具有相同的历史数据。压缩历史数据同步和管理的方法和系统的【具体实施方式】在2014年I月10日提交的发明名称为压缩历史数据同步的方法和装置的美国临时专利申请N0.61/926,145中已经描述,上述专利申请的全部内容在此以引用方式并入作为参考。
[0036]探索握手模块290判定通信节点是否支持与本发明的实施方式一致的压缩和/或解压缩方法,例如,判定可包含节点是否包含数据压缩模块230和/或数据解压缩模块250以及是否可以根据本发明的实施方式处理(和/或传输)引用令牌和原始令牌。压缩设备握手和挖掘的方法和系统的【具体实施方式】在2014年I月19日提交的发明名称为压缩设备握手和挖掘的方法和系统的美国临时专利申请N0.6
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1