【技术实现步骤摘要】
数据压缩器以及数据压缩方法
本案是关于数据压缩技术,特别有关于滑动窗口压缩。
技术介绍
基于哈希的滑动窗口压缩技术中往往会以一哈希表结构储存位于滑动窗口中的一定数量(例如,2KB、4KB或32KB)的历史数据的哈希键及其地址,供匹配比对参考,以获得哈希匹配结果(如,哈希键相符)。然后根据哈希匹配结果进行进一步的匹配(如,相符长度),以将原始数据串中的部分数据串以匹配数据(包括例如距离、匹配长度)取代,以达到数据压缩效果。历史数据的哈希键及其地址的储存需要相当空间。如何节省历史数据的哈希键及其地址的储存空间,为本
一项重要课题。
技术实现思路
本案为滑动窗口压缩提出一种历史数据的哈希表储存结构,精简储存历史数据。滑动窗口压缩常使用哈希(Hash)运算。本案提出哈希运算的哈希表中的哈希行(Hashline)储存格式。根据本案一种实施方式实现的一数据压缩器包括一哈希运算硬件以及一储存器。该哈希运算硬件被配置为根据取自一原始数据串的一输入哈希键(currentHashkey)产生一哈希值(Hashvalue),自一哈希表(Hashtable)取得对应该哈希值的一哈希行,比对该哈希行的多个储存格(entries),寻找对应该输入哈希键的至少一匹配哈希键(matchedHashkey)。该储存器储存该哈希表。该哈希行包括一前缀(prefix)地址栏,储存一前缀地址(prefixaddress)。该哈希行的所述储存格各自载有一哈希键(HashKey)以及一偏移量(offset)。该 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。