数据压缩器以及数据压缩方法技术

技术编号:24456443 阅读:27 留言:0更新日期:2020-06-10 15:41
本发明专利技术公开一种数据压缩器及数据压缩方法,该数据压缩器包括:一哈希运算硬件,被配置为根据取自一原始数据串的一输入哈希键产生一哈希值,自一哈希表取得对应该哈希值的一哈希行,比对该哈希行的多个储存格,寻找对应该输入哈希键的至少一匹配哈希键;以及一储存器,储存该哈希表;该哈希行包括一前缀地址栏,储存一前缀地址。该哈希行的多个储存格各自载有一哈希键以及一偏移量,且该哈希运算硬件根据该前缀地址及所述匹配哈希键的该偏移量得到所述匹配哈希键的地址。

Data compressor and data compression method

【技术实现步骤摘要】
数据压缩器以及数据压缩方法
本案是关于数据压缩技术,特别有关于滑动窗口压缩。
技术介绍
基于哈希的滑动窗口压缩技术中往往会以一哈希表结构储存位于滑动窗口中的一定数量(例如,2KB、4KB或32KB)的历史数据的哈希键及其地址,供匹配比对参考,以获得哈希匹配结果(如,哈希键相符)。然后根据哈希匹配结果进行进一步的匹配(如,相符长度),以将原始数据串中的部分数据串以匹配数据(包括例如距离、匹配长度)取代,以达到数据压缩效果。历史数据的哈希键及其地址的储存需要相当空间。如何节省历史数据的哈希键及其地址的储存空间,为本
一项重要课题。
技术实现思路
本案为滑动窗口压缩提出一种历史数据的哈希表储存结构,精简储存历史数据。滑动窗口压缩常使用哈希(Hash)运算。本案提出哈希运算的哈希表中的哈希行(Hashline)储存格式。根据本案一种实施方式实现的一数据压缩器包括一哈希运算硬件以及一储存器。该哈希运算硬件被配置为根据取自一原始数据串的一输入哈希键(currentHashkey)产生一哈希值(Hashvalue),自一哈希表(Hashtable)取得对应该哈希值的一哈希行,比对该哈希行的多个储存格(entries),寻找对应该输入哈希键的至少一匹配哈希键(matchedHashkey)。该储存器储存该哈希表。该哈希行包括一前缀(prefix)地址栏,储存一前缀地址(prefixaddress)。该哈希行的所述储存格各自载有一哈希键(HashKey)以及一偏移量(offset)。该哈希运算硬件根据该前缀地址及所述匹配哈希键的该偏移量得到所述匹配哈希键的地址(address)。一种实施方式中,该哈希运算硬件根据该前缀地址及各偏移量得到所述储存格各自对应的哈希键的地址,并将所述对应的哈希键的地址与该输入哈希键的地址超过一滑动窗口范围的储存格设定为无效。一种实施方式中,该哈希运算硬件根据该前缀地址判断所述储存格既有储存的哈希键的地址是否都超过一滑动窗口范围,如果所述储存格既有储存的哈希键的地址都超过一滑动窗口范围,将所述储存格设定为无效。一种实施方式中,该哈希运算硬件选择该哈希行的所述储存格之一将该输入哈希键、以及该输入哈希键的偏移量存入。一种实施方式中,该哈希行的所述储存格内容若都为有效,该哈希运算硬件释出所述储存格之一将储存该输入哈希键、以及该输入哈希键的偏移量存入。所释出的储存格所载哈希键的地址与该输入哈希键的地址相距最远。一种实施方式中,该哈希行包括一有效标示栏,该有效标示栏包括多个栏位以分别标示所述储存格各自有效与否。一种实施方式中,该前缀地址以及该偏移量间有一重叠比特。一种实施方式中,该前缀地址为Prefix[(N-1):(M-1)]。N以及M为数值。M小于N。上述偏移量为Offset[(M-1):0]。Prefix[M-1]以及Offset[M-1]即上述重叠比特(bit)。一种实施方式中,该哈希运算硬件根据{Prefix[(N-1):(M-1)],(M-1)’b0}+Offset[(M-1):0]得到所对应的哈希键的地址,其中,(M-1)’b0表示M-1个二进制0。一种实施方式中,N为32,M为16。该输入哈希键的地址为cur_addr[31:0]。该前缀地址的一旧版数值为prefix_old[31:15]。上述储存格既有储存的偏移量为offset_old[15:0]。该哈希运算硬件将cur_addr[31:16]减去prefix_old[31:16],获得的数值为d。该哈希运算硬件更判读prefix_old[15]以及cur_addr[15]。d大于1时,该哈希运算硬件以{cur_addr[31:16],1’b0}更新该前缀地址,并更新该有效标示栏以标示所述储存格既有储存的内容无效。d大于1时,该哈希运算硬件更以cur_addr[15:0]作为该输入哈希键的偏移量存入该哈希表。d为1、prefix_old[15]为0、且cur_addr[15]为0时,该哈希运算硬件以{prefix_old[31:16],1’b1}更新该前缀地址,以{1’b0,offset_old[14:0]}更新所述储存格既有储存的偏移量,且以{1’b1,cur_addr[14:0]}作为该输入哈希键的偏移量存入该哈希表。d为1、prefix_old[15]为1、且cur_addr[15]为0时,该哈希运算硬件以{1’b1,cur_addr[14:0]}作为该输入哈希键的偏移量存入该哈希表。d为1、prefix_old[15]为0、且cur_addr[15]为1时,该哈希运算硬件以{cur_addr[31:16],1’b0}更新该前缀地址,更新该有效标示栏,标示所述储存格既有储存的内容无效,并以cur_addr[15:0]作为该输入哈希键的偏移量存入该哈希表。d为1、prefix_old[15]为1、且cur_addr[15]为1时,该哈希运算硬件以{cur_addr[31:16],1’b0}更新该前缀地址,以{1’b0,offset_old[14:0]}更新所述储存格既有储存的偏移量,并以cur_addr[15:0]作为该输入哈希键的偏移量存入该哈希表。d为0且prefix_old[15]为0时,该哈希运算硬件以cur_addr[15:0]作为该输入哈希键的偏移量存入该哈希表。前述哈希运算硬件可以其他结构实现。采用前述哈希行储存格式的数据压缩方法也属于本案应用。根据本案一种实施方式实现的一种数据压缩方法包括:根据取自一原始数据串的一输入哈希键产生一哈希值;自一哈希表取得对应该哈希值的一哈希行,其中,该哈希行包括一前缀地址栏,储存一前缀地址;比对该哈希行的多个储存格,寻找对应该输入哈希键的至少一匹配哈希键,其中,该哈希行的所述储存格各自载有一哈希键以及一偏移量;及根据该前缀地址及所述匹配哈希键的该偏移量得到所述匹配哈希键的地址。本专利技术中,哈希表的每一哈希行中包含一个前缀地址栏和多个储存格,每个储存格用于储存一个哈希键及其地址的偏移量,而前缀地址栏用于储存同一哈希行中各个哈希键共用的前缀地址。由于只使用一个前缀地址栏就可以储存同一哈希行中所有哈希键共用的前缀地址,因而不需要分别为各个哈希键的前缀地址单独分配储存空间,从而节省了用于储存历史数据的哈希键及其地址的储存空间。下文特举实施例,并配合附图,详细说明本
技术实现思路
。附图说明图1示出一异构计算平台(HeterogeneousComputingPlatform)100;图2为根据本案一种实施方式示出一数据压缩器200;图3举例说明该数据压缩器200使用到的哈希运算;图4根据本案一种实施方式示出一哈希行的储存格式400;图5示出前缀地址Prefix[31:15]以及偏移量Offset[15:0],两者有一比特([15])重叠;图6A以及图6B显示32KB滑动窗口的跨界状况;图7示出一表格700,显示本本文档来自技高网
...

【技术保护点】
1.一种数据压缩器,包括:/n一哈希运算硬件,被配置为根据取自一原始数据串的一输入哈希键产生一哈希值,自一哈希表取得对应该哈希值的一哈希行,比对该哈希行的多个储存格,寻找对应该输入哈希键的至少一匹配哈希键;以及/n一储存器,储存该哈希表,/n其中:/n该哈希行包括一前缀地址栏,储存一前缀地址;且/n该哈希行的所述储存格各自载有一哈希键以及一偏移量;/n其中,该哈希运算硬件根据该前缀地址及所述匹配哈希键的该偏移量得到所述匹配哈希键的地址。/n

【技术特征摘要】
1.一种数据压缩器,包括:
一哈希运算硬件,被配置为根据取自一原始数据串的一输入哈希键产生一哈希值,自一哈希表取得对应该哈希值的一哈希行,比对该哈希行的多个储存格,寻找对应该输入哈希键的至少一匹配哈希键;以及
一储存器,储存该哈希表,
其中:
该哈希行包括一前缀地址栏,储存一前缀地址;且
该哈希行的所述储存格各自载有一哈希键以及一偏移量;
其中,该哈希运算硬件根据该前缀地址及所述匹配哈希键的该偏移量得到所述匹配哈希键的地址。


2.根据权利要求1所述的数据压缩器,其中:
该哈希运算硬件根据该前缀地址及各偏移量得到所述储存格各自对应的哈希键的地址,并将所述对应的哈希键的地址与该输入哈希键的地址超过一滑动窗口范围的储存格设定为无效。


3.根据权利要求1所述的数据压缩器,其中:
该哈希运算硬件根据该前缀地址判断所述储存格既有储存的哈希键的地址是否都超过一滑动窗口范围,如果所述储存格既有储存的哈希键的地址都超过一滑动窗口范围,将所述储存格设定为无效。


4.根据权利要求1所述的数据压缩器,其中:
该哈希运算硬件选择该哈希行的所述储存格之一将该输入哈希键、以及该输入哈希键的偏移量存入。


5.根据权利要求4所述的数据压缩器,其中:
该哈希行的所述储存格若都为有效,该哈希运算硬件释出所述储存格之一将该输入哈希键、以及该输入哈希键的偏移量存入;且
所释出的储存格所载哈希键的地址与该输入哈希键的地址相距最远。


6.根据权利要求1所述的数据压缩器,其中:
该哈希行包括一有效标示栏,该有效标示栏包括多个栏位以分别标示所述储存格各自有效与否。


7.根据权利要求1所述的数据压缩器,其中:
该前缀地址以及该偏移量间有一重叠比特。


8.根据权利要求7所述的数据压缩器,其中:
该前缀地址为Prefix[(N-1):(M-1)],N以及M为数值,M小于N;
上述偏移量为Offset[(M-1):0];且
Prefix[M-1]以及Offset[M-1]即上述重叠比特。


9.根据权利要求8所述的数据压缩器,其中:
该哈希运算硬件根据{Prefix[(N-1):(M-1)],(M-1)’b0}+Offset[(M-1):0]得到所对应的哈希键的地址,其中,(M-1)’b0表示M-1个二进制0。


10.根据权利要求8所述的数据压缩器,其中,如果N为32,M为16,则:
该输入哈希键的地址为cur_addr[31:0];
该前缀地址的一旧版数值为prefix_old[31:15];
该哈希运算硬件将cur_addr[31:16]减去prefix_old[31:16],获得的数值为d;
d大于1时,该哈希运算硬件以{cur_addr[31:16],1’b0}更新该前缀地址,并更新该哈希行的一有效标示栏以标示所述储存格既有储存的内容无效,其中该有效标示栏包括多个栏位以分别标示所述储存格各自有效与否;且
d大于1时,该哈希运算硬件更以cur_addr[15:0]作为该输入哈希键的偏移量存入该哈希表。


11.根据权利要求8所述的数据压缩器,其中,如果N为32,M为16,则:
该输入哈希键的地址为cur_addr[31:0];
该前缀地址的一旧版数值为prefix_old[31:15];
该哈希运算硬件将cur_addr[31:16]减去prefix_old[31:16],获得的数值为d;
所述储存格既有储存的偏移量为offset_old[15:0];
该哈希运算硬件更判读prefix_old[15]以及cur_addr[15],其中:
d为1、prefix_old[15]为0、且cur_addr[15]为0时,该哈希运算硬件以{prefix_old[31:16],1’b1}更新该前缀地址,以{1’b0,offset_old[14:0]}更新所述储存格既有储存的偏移量,且以{1’b1,cur_addr[14:0]}作为该输入哈希键的偏移量存入该哈希表;
d为1、prefix_old[15]为1、且cur_addr[15]为0时,该哈希运算硬件以{1’b1,cur_addr[14:0]}作为该输入哈希键的偏移量存入该哈希表;
d为1、prefix_old[15]为0、且cur_addr[15]为1时,该哈希运算硬件以{cur_addr[31:16],1’b0}更新该前缀地址,更新该哈希行的一有效标示栏以标示所述储存格既有储存的内容无效,并以cur_addr[15:0]作为该输入哈希键的偏移量存入该哈希表,其中该有效标示栏包括多个栏位以分别标示所述储存格各自有效与否;
d为1、prefix_old[15]为1、且cur_addr[15]为1时,该哈希运算硬件以{cur_addr[31:16],1’b0}更新该前缀地址,以{1’b0,offset_old[14:0]}更新所述储存格既有储存的偏移量,并以cur_addr[15:0]作为该输入哈希键的偏移量存入该哈希表;且
d为0且prefix_old[15]为0时,该哈希运...

【专利技术属性】
技术研发人员:李琳惠志强
申请(专利权)人:上海兆芯集成电路有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1