《数据匹配方法和数据匹配装置.pdf》由会员分享,可在线阅读,更多相关《数据匹配方法和数据匹配装置.pdf(23页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN101996139A43申请公布日20110330CN101996139ACN101996139A21申请号200910091700522申请日20090828G06F12/06200601G06F17/30200601H03M7/3020060171申请人百度在线网络技术北京有限公司地址100080北京市海淀区北四环西路58号理想国际大厦12层72发明人欧阳剑刘承辉盛克华唐会军74专利代理机构北京同立钧成知识产权代理有限公司11205代理人张红莲54发明名称数据匹配方法和数据匹配装置57摘要本发明提供一种数据匹配方法和数据匹配装置,其中,该方法包括历史数据存储窗口将待输入字。
2、符之前预定字节的历史字符保存在历史数据存储窗口的随机存储器中;哈希计算单元计算待输入字符的哈希值,根据哈希值确定与待输入字符对应的字符索引,并将字符索引存储在哈希计算单元的随机存储器中,其中,字符索引为与待输入字符对应的历史字符在历史数据存储窗口的随机存储器中的位置信息;匹配查找单元获取哈希计算单元的随机存储器中的字符索引,并根据字符索引对待输入字符和历史字符进行匹配。通过上述处理,能够提高LZ77算法的处理效率,极大地节省了CPU与存储器的资源。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书4页说明书9页附图9页CN101996144A1/4页21一种数据匹配方法,。
3、其特征在于,包括历史数据存储窗口将待输入字符之前预定字节的历史字符保存在所述历史数据存储窗口的随机存储器中;哈希计算单元计算所述待输入字符的哈希值,根据所述哈希值确定与所述待输入字符对应的字符索引,并将所述字符索引存储在所述哈希计算单元的随机存储器中,其中,所述字符索引为与所述待输入字符对应的历史字符在所述历史数据存储窗口的随机存储器中的位置信息;匹配查找单元获取所述哈希计算单元的随机存储器中的字符索引,并根据所述字符索引对所述待输入字符和所述历史字符进行匹配。2根据权利要求1所述的方法,其特征在于,所述历史数据存储窗口的随机存储器为16个可单独寻址的分布式随机存储器,其中,每个可单独寻址的分。
4、布式随机存储器均具有两个独立的读端口。3根据权利要求2所述的方法,其特征在于,所述历史数据存储窗口将待输入字符之前预定字节的历史字符保存在所述历史数据存储窗口的随机存储器中包括所述历史数据存储窗口从第1个可单独寻址的分布式随机存储器开始,将所述历史字符顺序放入所述16个可单独寻址的分布式随机存储器中,如果将所述历史字符放入最后1个可单独寻址的分布式随机存储器后,还存在未放入的历史字符,则将所述未放入的历史字符从所述第1个可单独寻址的分布式随机存储器开始,再次顺序放入所述16个可单独寻址的分布式随机存储器,依次循环,直到将所述预定字节的历史字符全部放入所述16个可单独寻址的分布式随机存储器中为止。
5、,其中,每个可单独寻址的分布式随机存储器最多存储1千字节历史字符。4根据权利要求3所述的方法,其特征在于,所述预定字节为16千字节。5根据权利要求4所述的方法,其特征在于,所述哈希计算单元将所述字符索引存储在所述哈希计算单元的随机存储器中包括所述哈希计算单元以所述哈希值为地址,将对应于所述哈希值的至少两个字符索引分别存储在不同的哈希计算单元的随机存储器中,其中,所述哈希计算单元的随机存储器包括至少两个随机存储器;如果在所述哈希计算单元的随机存储器中,已经存储以所述哈希值为地址的旧字符索引,则使用新字符索引替代所述旧字符索引。6根据权利要求5所述的方法,其特征在于,所述匹配查找单元获取所述哈希计。
6、算单元的随机存储器中的字符索引之前,所述方法还包括所述哈希计算单元读取所述字符索引,并将所述字符索引发送到所述匹配查找单元。7根据权利要求6所述的方法,其特征在于,所述哈希计算单元读取所述哈希计算单元的随机存储器中的字符索引包括所述哈希计算单元直接从所述哈希计算单元的随机存储器中读取所述字符索引;或者,在所述字符索引还未写入所述哈希计算单元的随机存储器的情况下,直接读取未存储的所述字符索引。8根据权利要求7所述的方法,其特征在于,所述匹配查找单元根据所述字符索引对权利要求书CN101996139ACN101996144A2/4页3所述待输入字符和所述历史字符进行匹配包括所述匹配查找单元根据所述。
7、字符索引产生并存储所述历史数据存储窗口的读地址;所述匹配查找单元根据所述读地址从所述历史数据存储窗口中的所述16个可单独寻址的分布式随机存储器中读取并存储32字节的历史字符,并根据所述读地址的低4位从所述32字节的历史字符中选择并存储有效的26字节的历史字符;在新发起的匹配查找中,所述匹配查找单元根据所述字符索引对所述匹配查找单元的移位寄存器的低24位中存储的3字节的待输入字符和所述26字节的历史字符中的3字节历史字符进行匹配;如果所述3字节的待输入字符匹配命中,在第二个周期内,所述匹配查找单元获取与当前待输入字符对应的至少两个字符索引,并根据与所述当前待输入字符对应的至少两个字符索引对存储在。
8、所述匹配查找单元的移位寄存器的16至23位中的所述当前待输入字符和所述26字节的历史字符中相应的1字节历史字符进行匹配操作,如果所述当前待输入字符匹配成功,则继续对下一个当前待输入字符进行匹配,依次类推,直到匹配结束,如果所述当前待输入字符匹配失败,则结束匹配;在匹配结束后,得到第一匹配结果。9根据权利要求8所述的方法,其特征在于,还包括如果所述3字节的待输入字符匹配命中,在所述第二个周期内,所述匹配查找单元根据所述字符索引对所述匹配查找单元的移位寄存器中存储的所述当前待输入字符以及所述当前待输入字符之前的两个待输入字符和所述26字节的历史字符中的3字节历史字符再次进行匹配;如果再次进行的匹配。
9、为命中,在第三个周期内,所述匹配查找单元获取与所述当前待输入字符的后一个待输入字符对应的至少两个字符索引,并根据与所述后一个待输入字符对应的至少两个字符索引对存储在所述匹配查找单元的移位寄存器的16至23位中的所述后一个待输入字符和所述26字节的历史字符中相应的1字节历史字符进行匹配操作,如果所述后一个待输入字符匹配成功,则继续对下一个待输入字符进行匹配,依次类推,直到匹配结束,如果所述后一个待输入字符匹配失败,则结束匹配;在匹配结束后,得到第二匹配结果。10根据权利要求9所述的方法,其特征在于,还包括比较所述第一匹配结果和所述第二匹配结果,确定匹配字符最长的匹配结果并输出,将另一匹配结果按照。
10、不匹配输出。11一种数据匹配装置,其特征在于,包括历史数据存储窗口,用于保存待输入字符之前预定字节的历史字符;哈希计算单元,用于计算所述待输入字符的哈希值,根据所述哈希值确定与所述待输入字符对应的字符索引,并将所述字符索引存储在所述哈希计算单元的随机存储器中,其中,所述字符索引为与所述待输入字符对应的历史字符在所述历史数据存储窗口的随机存储器中的位置信息;匹配查找单元,用于获取所述哈希计算单元的随机存储器中的字符索引,并根据所述字符索引对所述待输入字符和所述历史字符进行匹配。12根据权利要求11所述的装置,其特征在于,所述历史数据存储窗口具体包括权利要求书CN101996139ACN10199。
11、6144A3/4页416个可单独寻址的分布式随机存储器,用于从第1个可单独寻址的分布式随机存储器开始,顺序存储所述历史字符,如果最后1个可单独寻址的分布式随机存储器存储所述历史字符后,还存在未存储的历史字符,则从所述第1个可单独寻址的分布式随机存储器开始,再次顺序存储所述未存储的历史字符,依次循环,直到将所述预定字节的历史字符全部存储为止,其中,每个可单独寻址的分布式随机存储器最多存储1千字节历史字符。13根据权利要求12所述的装置,其特征在于,所述哈希计算单元具体包括哈希计算模块,用于计算所述待输入字符的哈希值;写管理模块,用于将对应于所述哈希值的至少两个字符索引分别存储在哈希计算单元的第一。
12、随机存储器、哈希计算单元的第二随机存储器中;所述哈希计算单元的第一随机存储器,用于以所述哈希值为地址,存储对应于所述哈希值的一个字符索引,如果已经存储以所述哈希值为地址的旧字符索引,则使用新字符索引替代所述旧字符索引;所述哈希计算单元的第二随机存储器,用于以所述哈希值为地址,存储对应于所述哈希值的另一个字符索引,如果已经存储以所述哈希值为地址的旧字符索引,则使用新字符索引替代所述旧字符索引;读管理模块,用于直接从所述哈希计算单元的第一随机存储器和所述哈希计算单元的第二随机存储器中读取所述字符索引;或者,在所述字符索引还未写入所述哈希计算单元的第一随机存储器和所述哈希计算单元的第二随机存储器的情。
13、况下,直接从所述写管理模块读取未存储的所述字符索引。14根据权利要求13所述的装置,其特征在于,匹配查找单元具体包括前端处理单元,用于获取所述哈希计算单元的随机存储器中的字符索引,并根据所述字符索引对所述待输入字符和所述历史字符进行匹配,并发送匹配结果;后端处理单元,用于接收所述匹配结果,并根据所述匹配结果计算匹配距离、匹配长度、以及不匹配时输出的字符。15根据权利要求14所述的装置,其特征在于,所述前端处理单元具体包括地址管理模块,用于根据所述字符索引产生并存储所述历史数据存储窗口的读地址;匹配查找单元的移位寄存器,用于存储所述待输入字符;数据选择模块,用于根据所述读地址从所述历史数据存储窗。
14、口中的所述16个可单独寻址的分布式随机存储器中读取并存储32字节的历史字符,并根据所述读地址的低4位从所述32字节的历史字符中选择并存储有效的26字节的历史字符;查询匹配模块,用于在新发起的匹配查找中,根据所述字符索引对所述匹配查找单元的移位寄存器的低24位中存储的3字节的待输入字符和所述26字节的历史字符中的3字节历史字符进行匹配;如果所述3字节的待输入字符匹配命中,在第二个周期内,获取与当前待输入字符对应的至少两个字符索引,并根据与所述当前待输入字符对应的至少两个字符索引对存储在所述匹配查找单元的移位寄存器的16至23位中的所述当前待输入字符和所述26字节的历史字符中相应的1字节历史字符进。
15、行匹配操作,如果所述当前待输入字符匹配成功,则继续对下一个当前待输入字符进行匹配,依次类推,直到匹配结束,如果所述当前待输入字符匹配失败,则结束匹配;在匹配结束后,得到第一匹配结果。16根据权利要求15所述的装置,其特征在于,所述查询匹配模块进一步用于权利要求书CN101996139ACN101996144A4/4页5如果所述3字节的待输入字符匹配命中,在所述第二个周期内,根据所述字符索引对所述匹配查找单元的移位寄存器中存储的所述当前待输入字符以及所述当前待输入字符之前的两个待输入字符和所述26字节的历史字符中的3字节历史字符再次进行匹配;如果再次进行的匹配为命中,在第三个周期内,获取与所述当。
16、前待输入字符的后一个待输入字符对应的至少两个字符索引,并根据与所述后一个待输入字符对应的至少两个字符索引对存储在所述匹配查找单元的移位寄存器的16至23位中的所述后一个待输入字符和所述26字节的历史字符中相应的1字节历史字符进行匹配操作,如果所述后一个待输入字符匹配成功,则继续对下一个待输入字符进行匹配,依次类推,直到匹配结束,如果所述后一个待输入字符匹配失败,则结束匹配;在匹配结束后,得到第二匹配结果。17根据权利要求16所述的装置,其特征在于,所述前端处理单元还包括匹配逻辑控制模块,用于比较所述第一匹配结果和所述第二匹配结果,确定匹配字符最长的匹配结果并输出,将另一匹配结果按照不匹配输出。。
17、18根据权利要求11至17中任一项所述的装置,其特征在于,所述数据匹配装置基于可编程门阵列。权利要求书CN101996139ACN101996144A1/9页6数据匹配方法和数据匹配装置技术领域0001本发明实施例涉及数据压缩技术领域,尤其涉及一种数据匹配方法和数据匹配装置。背景技术0002目前,为了减少数据需要的存储介质,提高数据传输效率,数据压缩在互联网、数据库、存储应用中应用非常广泛,包括数据库应用、数据备份、压缩文件系统、网页WEB前端服务等。其中,GZIP压缩算法是目前应用最广泛的一种压缩算法,例如,在WEB服务器软件例如,APACHE、IIS上使用GZIP对网页进行压缩,从而提高访。
18、问响应速度。0003在相关技术中,GZIP压缩算法包括两部分LZ77算法与哈夫曼HUFFMAN编码。LZ77算法通过对原始数据进行去冗余处理以达到压缩的目的。该算法的软件实现方法是在一个数据窗口内该数据窗口的大小一般为32KB,不断的迭代寻找最佳的匹配数据串进而消除冗余,并依赖中央处理器CENTRALPROCESSINGUNIT;以下简称CPU对数据进行压缩。0004在匹配查找过程中,为了快速向前定位可能匹配的数据,对每个比特BYTE的待输入字符,会计算一个HASH值,如果两个字符的HASH值相同,则可能存在匹配。在目前的实现方法中,会用一个链表数据结构保存所有HASH值相同的字符索引,对每个。
19、输入字符,首先计算其HASH值,然后使用HASH值寻址到对应的链表,依次把字符索引取出进行匹配查找,最后会把当前字符的索引插入链表供后面字符的匹配查找使用。0005在实现本发明过程中,发明人发现现有技术中至少存在如下问题0006使用软件对LZ77算法进行串行处理的效率非常低,并且消耗大量的CPU与存储器MEMORY资源,成为软件实现LZ77算法的性能瓶颈。发明内容0007本发明实施例提供一种数据匹配方法和数据匹配装置,用以解决现有技术中使用软件对LZ77算法进行串行处理的效率低、且消耗大量的CPU与存储器资源的缺陷,实现通过基于可编程门阵列的硬件来实现LZ77算法。0008本发明实施例提供一种。
20、数据匹配方法,包括0009历史数据存储窗口将待输入字符之前预定字节的历史字符保存在历史数据存储窗口的随机存储器中;哈希计算单元计算待输入字符的哈希值,根据哈希值确定与待输入字符对应的字符索引,并将字符索引存储在哈希计算单元的随机存储器中,其中,字符索引为与待输入字符对应的历史字符在历史数据存储窗口的随机存储器中的位置信息;匹配查找单元获取哈希计算单元的随机存储器中的字符索引,并根据字符索引对待输入字符和历史字符进行匹配。0010本发明实施例还提供一种数据匹配装置,包括0011历史数据存储窗口,用于保存待输入字符之前预定字节的历史字符;哈希计算单说明书CN101996139ACN10199614。
21、4A2/9页7元,用于计算待输入字符的哈希值,根据哈希值确定与待输入字符对应的字符索引,并将字符索引存储在哈希计算单元的随机存储器中,其中,字符索引为与待输入字符对应的历史字符在历史数据存储窗口的随机存储器中的位置信息;匹配查找单元,用于获取哈希计算单元的随机存储器中的字符索引,并根据字符索引对待输入字符和历史字符进行匹配。0012本发明实施例的数据匹配方法和数据匹配装置,通过基于可编程门阵列的硬件来实现LZ77算法,克服了现有技术中使用软件对LZ77算法进行串行处理的效率低、且消耗大量的CPU与存储器资源的缺陷,能够提高LZ77算法的处理效率,极大地节省了CPU与存储器的资源。附图说明001。
22、3为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。0014图1是根据本发明实施例的数据匹配装置的结构示意图;0015图2是根据本发明实施例的历史数据存储窗口分布式存储结构的示意图;0016图3是根据本发明实施例的交叉存储方式的示意图;0017图4是根据本发明实施例的哈希计算单元的随机存储器的结构示意图;0018图5是根据本发明实施例的哈希计算单元的结构示意图;0019图6是根据本发明实施例。
23、的匹配查找单元的结构示意图;0020图7是根据本发明实施例的前端处理单元的结构示意图;0021图8是根据本发明实施例的地址管理模块的结构示意图;0022图9是根据本发明实施例的数据选择模块的结构示意图;0023图10是根据本发明实施例的查询匹配模块的结构示意图;0024图11是根据本发明实施例的后端处理单元的结构示意图;0025图12是根据本发明实施例的数据匹配方法的流程图。具体实施方式0026根据本发明的实施例,LZ77算法的硬件实现可以基于专用集成电路APPLICATIONSPECIFICINTEGRATEDCIRCUIT;以下简称ASIC是或现场可编程门阵列FIELDPROGRAMMAB。
24、LEGATEARRAY;以下简称FPGA。其中,基于ASIC的方法因为一次投入高,开发周期长,最终产品不灵活等缺点,不太适合产品更新换代快、需求灵活多变的互联网应用。基于FPGA的方法一次投入适中,开发周期短,产品灵活可编程,因此在本发明实施例中,采用基于低端低成本FPGA的硬件来实现LZ77算法。0027下面结合附图和具体实施例进一步说明本发明实施例的技术方案。0028根据本发明的实施例,提供了一种数据匹配装置,图1是根据本发明实施例的数据匹配装置的结构示意图,如图1所示,根据本发明实施例的数据匹配装置包括历史数据存储窗口10、哈希HASH计算单元12、匹配查找单元14。下面,对上述各个模块。
25、进行详细的说明。说明书CN101996139ACN101996144A3/9页80029历史数据存储窗口10用于保存待输入字符之前预定字节的历史字符,在本发明的实施例中,优选地,上述预定字节为16千字节。0030具体地,LZ77算法需要定义一个历史数据存储窗口,其大小一般为32KB,当前待输入字符会在这个历史数据存储窗口里面查找匹配。在基于低端低成本FPGA的解决方案中,因为片内受随机存储器RANDOMACCESSMEMORY;以下简称RAM资源的限制,所以将历史数据存储窗口10的大小设置为16KB,虽然历史数据存储窗口10的大小变成了16KB,但是,16KB的历史数据存储窗口10对压缩率影响。
26、仅在1左右,非常之小。0031为了对待输入字符进行流式处理、以及多个匹配查找并发进行,本发明实施例的历史数据存储窗口10对历史字符的存储做了如下优化0032一、在多路进行匹配查找时,每个周期内有多个读请求访问历史数据存储窗口10,因此,必须采用新的存储结构来避免读冲突,在本发明实施例中,采用分布式的RAM结构,每个RAM可以独立寻址,并且具有两个独立的读端口。在本发明的实施例中,如图2所示,16KB的历史数据存储窗口采用16个独立的RAM存储历史字符,包括第一RAM21、第二RAM22、第十六RAM216,每个RAM存储1KB的历史字符,这样每个周期CYCLE可以支持32个并发的读访问。003。
27、3二、为了打破数据局部性,降低多个读操作同时访问同一个RAM的概率,本发明实施例采用交叉INTERLEAVE的方式存储历史字符,可以提高RAM的使用效率。0034具体地,输入的字符最有可能与最近的1KB之内的历史字符匹配,这会导致在匹配查找过程中,大部分的读访问集中在这1KB的数据,存储这1KB数据的RAM因为读端口不足而导致无法读取数据。采用交叉存储方式,把数据均匀分布存储在各个RAM里面,消除了数据局部性,使每个RAM的负载均衡。其中,如图3所示,交叉存储方式具体包括从第1个可单独寻址的分布式随机存储器开始,顺序存储历史字符,如果最后1个可单独寻址的分布式随机存储器存储历史字符后,还存在未。
28、存储的历史字符,则从第1个可单独寻址的分布式随机存储器开始,再次顺序存储所述未存储的历史字符,依次循环,直到将所述预定字节的历史字符全部存储为止。例如,将03B的历史字符存储在第一RAM中,将47B的历史字符存储在第二RAM中,将6063B的历史字符存储在第十六RAM中,将6467B的历史字符存储在第一RAM中,将6871B的历史字符存储在第而RAM中。0035三、历史数据存储窗口10的数据端口由1BYTE变成4BYTE,并且每个周期会从4个RAM里面读取共16BYTE的数据,这样可以使读请求的次数降低到原来的1/16。0036从上述的描述可以看出,与现有技术中采用32KB的历史数据存储窗口,。
29、历史字符按照正常顺序存储,同一时刻只能读取一个历史字符相比,本发明实施例的基于FPGA的硬件虽然资源受到限制,只能使用16KB的历史数据窗口,但是,本发明实施例采用16个分布式可独立寻址的RAM,每个RAM存储1KB的历史数据,有两个独立的读端口,每个数据端口位宽是4BYTE,极大地提高了读访问的并发性;此外,历史字符是以交叉方式进行存储管理,可以降低因为数据局部性造成的读冲突。0037哈希计算单元12,用于计算待输入字符的哈希值,根据待输入字符的哈希值确定与待输入字符对应的字符索引,并将字符索引存储在哈希计算单元的随机存储器中,其中,字符索引为与待输入字符对应的历史字符在历史数据存储窗口的随。
30、机存储器中的位置信息。说明书CN101996139ACN101996144A4/9页90038具体地,为了在一个周期内把HASH值相同的字符索引取出来,提高匹配处理的并发性,因此必须使用新的存储结构代替链表。本发明实施例把对应于同一个HASH值的字符索引存储在不同的RAM里面,每个RAM可以用HASH值作为地址去存储和读取匹配字符索引。如图4所示,在本发明实施例的低端FPGA中,由于受到片内RAM资源的限制,对于每个HASH值,在哈希计算单元的第一随机存储器41和哈希计算单元的第二随机存储器42中分别保存2个最近的字符索引,从而保证每个周期可以读取2个字符索引。在实际应用中,该结构可以灵活扩展。
31、到保存更多个字符索引。对于每个待输入字符,哈希计算单元12先计算其HASH值,并用HASH值作为地址访问哈希计算单元的第一随机存储器与哈希计算单元的第二随机存储器,读取有效的字符索引,然后把当前字符索引写到HASH值对应的存储位置,如果哈希计算单元的第一随机存储器与哈希计算单元的第二随机存储器已经存储两个有效的字符索引,则使用新字符索引替代旧字符索引。0039根据本发明的实施例,哈希计算单元12中除哈希计算单元的第一随机存储器41和哈希计算单元的第二随机存储器42外,如图5所示,还包括如下模块哈希计算模块51、写管理模块52、读管理模块53、字符索引过滤模块54。0040其中,哈希计算模块51。
32、用于计算待输入字符的哈希值;随后,将计算的哈希值发送到写管理模块52,写管理模块52将对应于哈希值的至少两个字符索引分别存储在哈希计算单元的第一随机存储器41和哈希计算单元的第二随机存储器42中;0041随后,读管理模块53就可以直接从哈希计算单元的第一随机存储器41和哈希计算单元的第二随机存储器42中读取字符索引;在字符索引还未写入哈希计算单元的第一随机存储器41和哈希计算单元的第二随机存储器42的情况下,读管理模块53还可以直接从写管理模块读取未存储的字符索引。具体地,因为RAM的写操作要2个周期才能生效,如果在这两个周期内需要读取待写入的数据,读管理模块53则从写管理模块52的缓存中直接。
33、读取字符索引。最后,字符索引过滤模块54将读管理模块53输出的无效的地址进行过滤并输出。其中,上述的无效地址是指偏移量超过历史数据窗口的地址等。0042从上述描述可以看出,相对于现有技术中使用链表来存储和管理字符索引,本发明实施例使用两套独立的RAM,对每个HASH值,保存最近的2个字符索引,可以并发读取两个甚至多个字符索引,提高了处理性能。0043匹配查找单元14,用于获取哈希计算单元12的随机存储器即,哈希计算单元的第一随机存储器41和哈希计算单元的第二随机存储器42中的字符索引,并根据字符索引对待输入字符和历史字符进行匹配。0044具体地,如图6所示,匹配查找单元14包括前端处理单元60。
34、、后端处理单元62,其中,前端处理单元60用于获取哈希计算单元的随机存储器中的字符索引,并根据获取的字符索引对待输入字符和历史字符进行匹配,并发送匹配结果;后端处理单元62用于接收匹配结果,并根据匹配结果计算匹配距离、匹配长度、以及不匹配时输出的字符。0045具体地,为了提高压缩率,匹配查找单元14支持LAZZY匹配。LAZZY匹配是指当前待输入字符的匹配查找完成后并不马上输出,而是等下一个待输入字符的匹配完成后,比较这两个匹配结果,选择最长的匹配输出,另外一个字符按照不匹配输出。对于每个待输入字符,从HASH2LOOKUP模块读取两个匹配字符索引,然后发起2路匹配查找,对于下一CYCLE输入。
35、的字符,同样从哈希计算单元12读取两个匹配字符索引,如果前一字符匹配命中,则说明书CN101996139ACN101996144A5/9页10发起2路LAZZY匹配查找,因此,系统最多同时共有4路匹配查找在同时进行。前端处理单元60把4路匹配查找的信息发送给后端处理单元62,后端处理单元62负责计算每路匹配查找的匹配距离,匹配长度,和不匹配时要输出的字符。0046下面,对前端处理单元60的结构进行详细说明,如图7所示,前端处理单元60包括地址管理模块70、匹配查找单元的移位寄存器71、数据选择模块72、查询匹配模块73、匹配逻辑控制模块74。下面,对上述各个模块分别进行说明。0047具体地,如。
36、图8所示,地址管理模块70主要用于根据字符索引产生并存储历史数据存储窗口10的读地址;因为历史数据窗口由16个独立的RAM构成,每个RAM两个读端口,因此共需要管理32个读地址。在没有匹配的时候,读地址来自哈希计算单元12的两个字符索引,匹配过程中读地址是上一次读地址加上偏移量。由于历史字符从历史数据存储窗口10读回来时,需要根据读地址对历史字符进行裁剪选择TRUNCATE,所以读地址必须寄存直到历史字符返回。0048匹配查找单元的移位寄存器71用于存储待输入字符;具体地,匹配查找单元的移位寄存器71采用一个40BIT移位寄存器寄存待输入字符,每发起一次新的匹配查找,匹配查找单元的移位寄存器7。
37、1的低24BIT3BYTE和来自历史数据窗口的3BYTE字符进行比较,如果相同,则这次匹配命中。在匹配命中后,每个周期使用匹配查找单元的移位寄存器71的1623BIT和来自历史数据窗口的一个BYTE数据比较以判断匹配是否在持续。0049数据选择模块72用于根据读地址从历史数据存储窗口中的16个可单独寻址的分布式随机存储器中读取并存储32字节的历史字符,并根据读地址的低4位从32字节的历史字符中选择并存储有效的26字节的历史字符;0050具体地,如图9所示,数据选择模块72从历史数据窗口的16个分布式RAM的32个读端口中选择2路有效的32BYTE历史字符,每路是16BYTE,这16BYTE数据。
38、里面只有13BYTE在当次匹配中是用到的,因此数据剪裁单元还会根据读地址的低4BIT来选取有效的13BYTE数据,用来进行匹配查找。移位单元把已经匹配过的字符向右移走,保证字符数据寄存器里面的数据都是没有使用过的。0051查询匹配模块73,用于在新发起的匹配查找中,根据字符索引对匹配查找单元的移位寄存器的低24位中存储的3字节的待输入字符和26字节的历史字符中的3字节历史字符进行匹配;如果3字节的待输入字符匹配命中,则意味着一次新的匹配查找开始在第二个周期内,获取与当前待输入字符对应的至少两个字符索引,并根据与当前待输入字符对应的至少两个字符索引对存储在匹配查找单元的移位寄存器的16至23位中。
39、的当前待输入字符和26字节的历史字符中相应的1字节历史字符进行匹配操作,如果当前待输入字符匹配成功,则继续对下一个当前待输入字符进行匹配,依次类推,直到匹配结束,如果当前待输入字符匹配失败,则结束匹配;在匹配结束后,得到第一匹配结果。0052也就是说,如图10所示,查询匹配模块73通过比较来自匹配查找单元的移位寄存器71和数据选择模块72的数据,以判断什么时候产生新的匹配,当前匹配什么时候结束等。判断一个新匹配的开始时,在检测新哈希匹配及检测新懒惰匹配单元中,需要同时比较3BYTE的数据,在匹配过程中,在检测哈希匹配及检测懒惰匹配单元中,每个周期只需要比较1BYTE数据,如果匹配的长度大于25。
40、5、遇到文件末尾、或者新输入的字符与来自历史字符窗口的数据不相等,则当前匹配结束。说明书CN101996139ACN101996144A6/9页110053查询匹配模块73还用于如果3字节的待输入字符匹配命中,在第二个周期内,针对当前待输入字符,发起一次和上述匹配查找并发进行的匹配查找,具体为根据字符索引对匹配查找单元的移位寄存器中存储的当前待输入字符以及当前待输入字符之前的两个待输入字符和26字节的历史字符中的3字节历史字符再次进行匹配;如果再次进行的匹配为命中,在第三个周期内,获取与当前待输入字符的后一个待输入字符对应的至少两个字符索引,并根据与后一个待输入字符对应的至少两个字符索引对存储。
41、在匹配查找单元的移位寄存器的16至23位中的后一个待输入字符和26字节的历史字符中相应的1字节历史字符进行匹配操作,如果后一个待输入字符匹配成功,则继续对下一个待输入字符进行匹配,依次类推,直到匹配结束,如果后一个待输入字符匹配失败,则结束匹配;在匹配结束后,得到第二匹配结果。0054通过上述处理,在匹配过程中,最多有4路匹配查找在同时进行,4路并发匹配查找意味着可能有4次读请求同时访问一个RAM,但每个保存历史数据的RAM只有2个读端口,这就导致了结构冒险。为了解决这个问题,匹配查找单元每次读请求会读取13BYTE数据,因此后面至少有10个周期不需要读取新数据,因此4次读请求可以错开发送,消。
42、除了读冲突。0055匹配逻辑控制模块74用于比较第一匹配结果和第二匹配结果,确定匹配字符最长的匹配结果并输出,将另一匹配结果按照不匹配输出。在将匹配结果输出后,针对当前待输入字符重新发起上述过程的匹配查找。0056此外,匹配逻辑控制模块还用于产生整个模块的控制信号和异常处理。0057前端处理单元60经过上述处理后,就会将匹配结果发送到后端处理单元62,后端处理单元62的结构示意图如图11所示,后端处理单元62的计算哈希匹配0的匹配长度及距离单元、计算哈希匹配1的匹配长度及距离单元、计算懒惰匹配0的匹配长度及距离单元、计算懒惰匹配1的匹配长度及距离单元根据前端的输出计算每个匹配的长度,距离和不匹。
43、配时该输出的字符,其中,上述四个单元由匹配查找有限状态机控制,最终输出不匹配的字符输出、哈希匹配输出、懒惰匹配输出,上述三个输出经过多路选择后,随后,由多路选择在4路匹配中选择匹配最长的一路输出包括字符、匹配长度、匹配距离。0058从上述描述可以看出,相对于现有技术在查找匹配过程中每次只发起一路匹配查找,各个匹配查找串行完成来说,根据本发明实施例的硬件实现方法可以同时发起4路匹配查找,可以极大提高处理能力。需要说明的是,目前实现的硬件支持4次并发匹配查找,但硬件构架可以灵活扩展到支持8次及更多的并发匹配查找。0059在实际的应用中,可以将本发明实施例的技术方案应用于各种需要进行数据压缩的应用环。
44、境中,例如,透明压缩文件系统用于对应用程序做完全透明的压缩和解压,并且能够选择性地使用软件压缩方式和硬件压缩方式。将本发明实施例的数据匹配装置应用于该透明压缩文件系统中,在该透明压缩文件系统高负载情况下能够节省3040的CPU使用率,并使其写性能具有非常明显的优势。通过使用本发明实施例的数据匹配装置,避免了数据压缩时对系统CPU的消耗,进而改善了系统的整体性能。数据经该压缩文件系统的压缩后,能够节约超过50的磁盘存储容量。此外,在实际应用中,还可以通过修改网页服务器软件中的ZLIB库,使用硬件压缩的方式取代软件压缩方式,并将本发明实施例的技术方案应用于网页服务器软件,能够极大提高系统每秒处理页。
45、面请求的数目。说明书CN101996139ACN101996144A7/9页120060通过上述处理,本发明实施例基于低端低成本的FPGA,利用较少的硬件资源实现LZ77算法,最终的压缩率和软件实现方法非常接近,但每个FPGA的处理带宽是软件压缩方式的2倍多,且每秒处理事务的能力是单个CPU的6倍,可以达到CPU无法达到的处理能力。0061以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施。
46、例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。0062根据本发明的实施例,提供了一种数据匹配方法,图12是根据本发明实施例的数据匹配方法的流程图,如图12所示,根据本发明实施例的数据匹配方法包括0063步骤1201,历史数据存储窗口将待输入字符之前预定字节的历史字符保存在历史数据存储窗口的随机存储器中;其中,历史数据存储窗口的随机存储器为16个可单独寻址的分布式随机存储器,每个可单独寻址的分布式随机存储器均具有两个独立的读端口;此外,在本发明实施例中,优选地,上述预定字节为16千字节。需要说明的是,历史数据存储窗口的处理可以参照上述装置实施中相应的内容进行理解。
47、,其结构示意图可以参照图2进行理解,在此不再赘述。0064在步骤1201中,历史数据存储窗口将待输入字符之前预定字节的历史字符保存在历史数据存储窗口的随机存储器中的处理具体包括0065历史数据存储窗口从第1个可单独寻址的分布式随机存储器开始,将历史字符顺序放入16个可单独寻址的分布式随机存储器中,如果将历史字符放入最后1个可单独寻址的分布式随机存储器后,还存在未放入的历史字符,则将未放入的历史字符从第1个可单独寻址的分布式随机存储器开始,再次顺序放入16个可单独寻址的分布式随机存储器,依次循环,直到将预定字节的历史字符全部放入16个可单独寻址的分布式随机存储器中为止,其中,每个可单独寻址的分布。
48、式随机存储器最多存储1千字节历史字符。上述过程可以参照图3进行理解。0066步骤1202,哈希计算单元计算待输入字符的哈希值,根据哈希值确定与待输入字符对应的字符索引,并将字符索引存储在哈希计算单元的随机存储器中,其中,字符索引为与待输入字符对应的历史字符在历史数据存储窗口的随机存储器中的位置信息;0067具体地,在步骤1202中,哈希计算单元将字符索引存储在哈希计算单元的随机存储器中的处理具体包括0068哈希计算单元以哈希值为地址,将对应于哈希值的至少两个字符索引分别存储在不同的哈希计算单元的随机存储器中,其中,哈希计算单元的随机存储器包括至少两个随机存储器;如果在哈希计算单元的随机存储器中。
49、,已经存储以哈希值为地址的旧字符索引,则使用新字符索引替代旧字符索引。0069有关哈希计算单元的相关处理可以参照上述实施例中的相关内容进行理解,相关的结构示意图可以参照图4、图5进行理解,在此不再赘述。0070随后,哈希计算单元读取字符索引,并将字符索引发送到匹配查找单元。在实际应用中,哈希计算单元可以直接从哈希计算单元的随机存储器中读取字符索引;在字符索引还未写入哈希计算单元的随机存储器的情况下,哈希计算单元也可以直接读取未存储的字说明书CN101996139ACN101996144A8/9页13符索引。0071步骤1203,匹配查找单元获取哈希计算单元的随机存储器中的字符索引,并根据字符索引对待输入字符和历史字符进行匹配。0072在步骤1203中,匹配查找单元根据字符索引对待输入字符和历史字符进行匹配的具体处理包括0073步骤1、匹配查找单元根据字符索引产生并存储历史数据存储窗口的读地址;0074步骤2、匹配查找单元根据读地址从历史数据存储窗口中的16个可单独寻址的分布式随机存储器中读取并存储32字节的历史字符,并根据读地址的低4位从32字节的历史字符中选择并存储有效的26字节的历史字符;0075步骤3、在新发起的匹配查找中,匹配查找单元根据字符索引对匹配查找单元的移位寄存器的低24位中存储的3字节第1、2、3个待输入字符的待输入字符和26字节的历史字符中的3字节历史。