CN105354150A - 一种内容匹配方法和装置 - Google Patents
一种内容匹配方法和装置 Download PDFInfo
- Publication number
- CN105354150A CN105354150A CN201510730991.3A CN201510730991A CN105354150A CN 105354150 A CN105354150 A CN 105354150A CN 201510730991 A CN201510730991 A CN 201510730991A CN 105354150 A CN105354150 A CN 105354150A
- Authority
- CN
- China
- Prior art keywords
- cryptographic hash
- data
- address
- ram
- source data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种内容匹配方法,包括:根据本拍的Q字节的数据和上一拍的P-1字节的数据生成P+Q-1字节的待处理数据;根据宽度为P字节的滑窗将所述待处理数据划分为Q个P字节的源数据;将所述Q个P字节的源数据中各个源数据分别与对应的历史数据进行匹配处理,匹配处理后得到Q个P位的匹配结果;将所述Q个匹配结果中各个匹配结果以1位步长递增向低位移位后与运算得到本拍的P+Q-1位的匹配结果;将本拍的P+Q-1位的匹配结果和上一拍的P+Q-1位的匹配结果组合得到上一拍的Q位的匹配结果。本发明实施例还公开了一种内容匹配装置。采用本发明,能降低匹配过程的复杂度。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种内容匹配方法和装置。
背景技术
散列表(Hashtable,也叫哈希表),是根据关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数(也叫哈希函数),存放记录的数组叫做散列表。
LZ(LempelZiv)系列压缩算法是基于字典的压缩算法。LZ压缩算法的通用实现方法是先通过hashtable索引找到匹配位置,然后进行匹配比较,最后编码输出压缩结果,其中hashtable索引和匹配比较是最重要的两步操作。
现有技术中源数据与历史数据匹配得到匹配结果的流程为:首先待匹配的源数据按一定长度的滑窗分别得到多个的源数据;将多个源数据分别和对应的历史数据进行逐字节比较,得到比较结果,此处的历史数据是源数据通过hash索引寻找到的;将比较结果做一拍的延时;将本拍的比较结果和上一拍的比较结果综合比较分析,得到匹配结果。从上述过程可以看出,比较结果的数量会随着源数据的数据增加,综合分析多个比较结果得到最终匹配结果的过程逻辑复杂,资源消耗大,时序差,难以拓展。
发明内容
本发明实施例所要解决的技术问题在于,提供一种内容匹配方法和装置。可解决现有技术中匹配过程复杂的问题
为了解决上述技术问题,本发明实施例第一方面提供了一种内容匹配方法,包括:
根据本拍的Q字节的数据和上一拍的P-1字节的数据生成P+Q-1字节的待处理数据;其中,P和Q为正整数,且P+Q-1大于0;
根据宽度为P字节的滑窗将所述待处理数据划分为Q个P字节的源数据;
将所述Q个P字节的源数据中各个源数据分别与对应的历史数据进行匹配处理,匹配处理后得到Q个P位的匹配结果;
将所述Q个匹配结果中各个匹配结果以1位步长递增向低位移位后与运算得到本拍的P+Q-1位的匹配结果;
将本拍的P+Q-1位的匹配结果和上一拍的P+Q-1位的匹配结果组合得到上一拍的Q位的匹配结果。
结合第一方面,在第一种可能的实现方式中,所述将所述Q个P字节的源数据中各个源数据分布与对应的历史数据进行匹配,匹配处理后得到Q个P位的匹配结果包括:
计算所述各个源数据分别对应的哈希值,在存储器中查询哈希值对应的历史数据。
结合第一方面,在第二种可能的实现方式中,所述根据本拍的Q字节的数据和上一拍的P-1字节的数据生成P+Q-1字节的待处理数据之前,还包括:
待索引数据划分为2N个源数据;其中,Q=2N,N为正整数;
分别计算所述2N个源数据各自对应的哈希值,得到2N个哈希值;
将所述2N个哈希值存放到M个哈希值队列中;其中,所述M个哈希值队列各自对应2N/M个哈希值;其中,M为正整数,2N/M为正整数;
每次从所述M个哈希值队列各个哈希值队列中分别取出1个哈希值,得到M个哈希值,以及计算所述M个哈希值各自对应的子RAM地址;
若所述M个哈希值均不相同且所述M个哈希值各自对应的子RAM地址均不相同;
将所述M个哈希值各自对应的源数据存储在分布式随机存储器RAM中子RAM地址指向的子RAM中;
将M个源数据的地址存放在M个历史数据地址队列中,并根据M个历史地址队列中存放的地址得到所述2N个源数据各自对应的历史数据地址。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述分布式RAM中包含2K个子RAM,所述计算所述M个哈希值各自对应的RAM地址包括:
从所述M个哈希值中指定位置分别取出K位数据作为各自对应的子RAM地址;其中,K为正整数。
结合第一方面的第二种可能的实现方式,在第四种可能的实现方式中,还包括:
若所述M个哈希值中有相同的哈希值,根据预设算法将冲突的源数据映射到对应的子RAM中的新地址上;或
若所述M个哈希值不存在相同的哈希值但所述M个子RAM地址存在相同的子RAM地址,延时一拍;
将下一拍M个哈希值各自对应的源数据存储在分布式RAM中子RAM地址指向的子RAM中。
本发明实施例提供了一种内容匹配装置,包括:
生成模块,用于根据本拍的Q字节的数据和上一拍的P-1字节的数据生成P+Q-1字节的待处理数据;其中,P和Q为正整数,且P+Q-1大于0;
划分模块,用于根据宽度为P字节的滑窗将所述待处理数据划分为Q个P字节的源数据;
匹配模块,用于将所述Q个P字节的源数据中各个源数据分别与对应的历史数据进行匹配处理,匹配处理后得到Q个P位的匹配结果;
移位模块,用于将所述Q个匹配结果中各个匹配结果以1位步长递增向低位移位后与运算得到本拍的P+Q-1位的匹配结果;
组合模块,用于将本拍的P+Q-1位的匹配结果和上一拍的P+Q-1位的匹配结果组合得到上一拍的Q位的匹配结果。
结合第二方面,在第一种可能的实现方式中,所述匹配模块用于:
计算所述各个源数据分别对应的哈希值,在存储器中查询哈希值对应的历史数据。
结合第二方面,在第二种可能的实现方式中,还包括:
索引模块,用于待索引数据划分为2N个源数据;其中,Q=2N,N为正整数;
分别计算所述2N个源数据各自对应的哈希值,得到2N个哈希值;
将所述2N个哈希值存放到M个哈希值队列中;其中,所述M个哈希值队列各自对应2N/M个哈希值;其中,M为正整数,2N/M为正整数;
每次从所述M个哈希值队列各个哈希值队列中分别取出1个哈希值,得到M个哈希值,以及计算所述M个哈希值各自对应的子RAM地址;
若所述M个哈希值均不相同且所述M个哈希值各自对应的子RAM地址均不相同;
将所述M个哈希值各自对应的源数据存储在分布式RAM中子RAM地址指向的子RAM中;
将M个源数据的地址存放在M个历史数据地址队列中,并根据M个历史地址队列中存放的地址得到所述2N个源数据各自对应的历史数据地址。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述索引模块用于:
从所述M个哈希值中指定位置分别取出K位数据作为各自对应的子RAM地址;其中,K为正整数。
结合第二方面,在第四种可能的实现方式中,还包括:
冲突处理模块,用于若所述M个哈希值中有相同的哈希值,根据预设算法将冲突的源数据映射到对应的子RAM中的新地址上;或
若所述M个哈希值不存在相同的哈希值但所述M个子RAM地址存在相同的子RAM地址,延时一拍;
将下一拍M个哈希值各自对应的源数据存储在分布式RAM中子RAM地址指向的子RAM中。
第三方面提供了一种内容匹配装置,包括:
一个或多个处理器、存储器、总线系统、收发器以及一个或多个程序,所述处理器、所述存储器和所述收发器通过所述总线系统相连;
其中所述一个或多个程序被存储在所述存储器中,所述一个或多个程序包括指令,所述指令当被所述内容匹配装置执行时使所述内容匹配装置执行如权利要求第一方面以及第一方面第一种可能的实现方式至第四种可能的实现方式中任一项所述的方法。
第四方面提供了一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当内容匹配装置执行时使所述内容匹配装置执行如第一方面以及第一方面第一种可能的实现方式至第四种可能的实现方式中任一项所述方法。
实施本发明实施例,具有如下有益效果:
通过将本拍的源数据和上一拍的源数据进行组合,利用滑窗将组合后的数据进行划分,将划分后的各个数据和对应的历史数据进行匹配,通过移位组合的方式得到本拍的源数据的匹配结果和上一拍的源数据的匹配结果,避免多个匹配结果并行比较,降低了匹配过程的复杂度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种内容匹配方法的流程示意图;
图2是本发明实施例提供的一种内容匹配方法的流水线操作示意图;
图3是本发明实施例提供的源数据的索引流水线操作示意图;
图4是本发明实施例提供的源数据的索引流水线操作的具体示例图;
图5是本发明实施例提供的一种内容匹配方法的流水线操作的具体示例图;
图6是本发明实施例提供的匹配结果移位操作的示意图;
图7是本发明实施例提供的组合操作的示意图;
图8是本发明实施例提供的一种内容匹配装置的结构示意图;
图9是本发明实施例提供的一种内容匹配装置的另一结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1和图2,为本发明实施例提供的一种内容匹配方法的流程示意图,在本发明实施例中,所述方法包括:
S101、根据本拍的Q字节的数据和上一拍的P-1字节的数据生成P+Q-1字节的待处理数据。
具体的,本拍和上一拍指的是定时器根据预设的频率产生的脉冲,匹配装置每检测到一个脉冲到来就进行一次匹配处理。每一拍对应的数据的长度可以相等,也可以不相等。匹配装置获取本拍的Q字节的数据和上一拍的P-1字节的数据,将上一拍的P-1字节的数据和本拍的Q字节的数据组合成P+Q-1字节的待处理数据。其中,上一拍的P-1字节排列在本拍的Q字节的前面。参见图2,待处理数据为scr_data。
S102、根据宽度为P字节的滑窗将待处理数据划分为Q个P字节的源数据。
具体的,滑窗的长度为P字节,滑窗的初始位置与待处理数据的尾部和头部重合,配置装置每滑动一个字节后生成一个长度为P字节的源数据,当滑窗从待处理数据的头部滑动到尾部或从尾部滑动到头部时,一共生成Q个P字节的源数据。参见图2,生成的Q个P字节的源数据为:scr_data_0、scr_data_1、scr_data_2、……scr_data_Q-1。
S103、将Q个P字节的源数据中各个源数据分别与对应的历史数据进行匹配处理,匹配处理后得到Q个P位的匹配结果。
具体的,匹配装置获取Q个源数据各个源数据对应的历史数据,历史数据的长度和源数据的长度相等,匹配处理后得到Q个P位的匹配结果,其中,此时得到的匹配结果不是本拍的数据的匹配结果,而是基于上一次的匹配结果的编码。匹配规则如下:由匹配装置中的匹配单位完成各路源数据和历史数据的匹配操作,
Q个匹配单元分别为m0、m1、m2、m3、……mQ,每个匹配单元有两个状态s0状态和s1状态,每个匹配单元的初始状态均为s0状态,输入P字节的源数据和P字节的历史数据,每个匹配单元根据如下方法进行匹配和状态转换。
S0状态:如果源数据和历史数据不是全P字节匹配,匹配单元输出的匹配结果0000……000(共P个0)。如果全P字节匹配,匹配单元输出的匹配结果为000……1(P-1个1,1个1),同时匹配单元状态转换为S1状态。
S1:如果源数据和历史数据为全P字节匹配,匹配单元继续停留在S1状态,匹配单元的匹配输入匹配结果111……1(P个0)。非全P字节匹配的情况:3字节匹配,输出匹配结果1110,匹配单元转换为S0状态;2字节匹配,输出匹配结果1100,匹配单元转换为S0状态;1字节匹配,输出匹配结果1000,匹配单元转换为S0状态;0字节匹配,输出匹配结果0000,匹配单元转换为S0状态。其中,匹配结果中1的数量等于源数据和历史数据能匹配的字节的数量。
同时,如果有1个匹配单元转换为s1状态,则跟他紧接着的后面Q-1个匹配单元只能处于s0状态,且Q-1个匹配单元的匹配结果只能输出000……0(P个0),只有第Q+1个匹配单元才能正常操作。
例如:Q=4时,上一拍四个匹配单元输出的匹配结果分别为:m0_old、m1_old、m2_old,、m3_old
本拍四个匹配单元输出的匹配结果为:m0_new、m1_new,、m2_new、m3_new
此时如果m1_old为4字节匹配,m1_new为2字节匹配,m3_new为4字节匹配,则输出结果:
m0_old对应的匹配结果为0000,状态s0状态;m1_old对应的匹配结果为0001,状态为s1状态;m2_old、m3_old、m0_new强制输出匹配结果0000,状态s0状态;m1_new对应的匹配结果为1100,状态s0状态;m2_new对应的匹配结果为0000,状态为s0状态;m3_new对应的匹配结果为0001,状态为s1状态。
参见图2,Q个P字节的历史数据为:histry_data_0、histry_data_1、histry_data_2、……、histry_data_Q-1匹配处理由上述的匹配单元执行,每个匹配过程输入对应的P位的匹配结果。
S104、将Q个匹配结果中各个匹配结果根据步长为1递增向低位移位后进行与运算得到本拍的P+Q-1位的匹配结果。
具体的,Q个匹配结果中,首个匹配结果不进行移位,第2个匹配结果向低位移动1位,第3个匹配结果向地位移动2位,第N个匹配结果向地位移位N-1位,根据步长为1递增向低位移位,将移位后的各个匹配结果进行与运算后得到本拍的P+Q-1个匹配结果。
S105、将本拍的P+Q-1位的匹配结果和上一拍的P+Q-1位的匹配结果组合得到上一拍的Q位的匹配结果。
具体的,将本拍的P+Q-1位的匹配结果向低位移动P位后和上一拍的P+Q-1位的匹配结果进行与运算得到本拍的Q位匹配结果和上一拍的Q位匹配结果。
实施例本发明的实施例,通过将本拍的源数据和上一拍的源数据进行组合,利用滑窗将组合后的数据进行划分,将划分后的各个数据和对应的历史数据进行匹配,通过移位组合的方式得到本拍的源数据的匹配结果和上一拍的源数据的匹配结果,避免多个匹配结果并行比较,降低了匹配过程的复杂度。
可选的,所述将所述Q个P字节的源数据中各个源数据分布与对应的历史数据进行匹配,匹配处理后得到Q个P位的匹配结果包括:
计算所述各个源数据分别对应的哈希值,在存储器中查询哈希值对应的历史数据。
具体的,分别计算各个P位的源数据的哈希值,根据哈希值和存储地址的映射关系从存储器中查询哈希值对应的历史数据。
其中,计算哈希值的方法本发明不作限制,可以是MD4、MD5或SHA1等哈希算法。
可选的,所述根据本拍的Q字节的数据和上一拍的P-1字节的数据生成P+Q-1字节的待处理数据之前,还包括:
待索引数据划分为2N个源数据;
分别计算所述2N个源数据各自对应的哈希值,得到2N个哈希值;
将所述2N个哈希值存放到M个哈希值队列中;其中,所述M个哈希值队列各自对应2N/M个哈希值;
每次从所述M个哈希值队列各个哈希值队列中分别取出1个哈希值,得到M个哈希值,以及计算所述M个哈希值各自对应的子RAM地址;
若所述M个哈希值均不相同且所述M个哈希值各自对应的子RAM地址均不相同;
将所述M个哈希值各自对应的源数据存储在分布式RAM中RAM地址指向的RAM中;
将M个源数据的地址存放在M个历史数据地址队列中,并根据M个历史地址队列中存放的地址得到所述2N个源数据各自对应的历史数据地址。
参见图3,Q=2N,将待索引的数据划分为2N个源数据:data_0、data_1、……data_2N-1,源数据可以为字符串,分别计算2N个源数据各自对应的哈希值,得到2N个哈希值,其中,每个源数据采用相同的哈希算法计算哈希值,哈希算法的类型本发明不作限制。将2N个哈希值存放在M个哈希值队列中,每个哈希值队列存放2N/M个哈希值,其中,将2N个哈希值存放进M个哈希值队列的方法可以是:将第1个哈希值存放在第1个哈希值队列,第2个哈希值存放在第2个哈希值队列,直到第1个哈希值队列填满2N/M个哈希值后,继续填充第2个哈希值队列。当然也可以采用其他的方式填充哈希值,本发明不作限制。每次从每个哈希值队列中取出1个哈希值,得到M个哈希值,哈希值队列可以为先进先出队列,每次取出的哈希值可以为哈希值队列中的首个哈希值。分布是RAM中配置有2K个子RAM,匹配装置从各个哈希值中的特定位置取K位作为子RAM地址,本发明实施例中的特定位置不作限制,子RAM地址为分布式RAM中的子RAM的片选地址。匹配装置将得到的M个哈希值和M个子RAM地址执行预判逻辑处理:匹配装置比较M个哈希值是否存在相同和M个子RAM地址是否存在相同,即至少有2个哈希值相同,至少有2个子RAM地址相同。
M个哈希值中存在相同哈希值的处理过程:首个相同的哈希值只从对应的子RAM中读出历史数据地址,不更新进子RAM,后续相同的哈希值将上一个哈希值对应的数据作为历史数据地址,其中最后一个相同的哈希值需要更新进子RAM。
例如:假设M个哈希值中存在4个哈希值相同的,分别是第J、K、L、N个且(0<J<K<L<N<M),则本次这M个哈希值处理时,第J、K、L、N这四个哈希值,第J个只从子RAM中读出历史数据地址,不更新进子RAM,第K个把第J个的数据作为历史数据地址,不更新进子RAM,第L个把第K个的数据作为历史数据地址,不更新进子RAM,第N个把第L个的数据作为历史数据地址,同时把第N个的数据更新进子RAM。
M个子RAM地址存在相同时的处理过程:暂停一拍再进行处理。
例如:假设存在4个子RAM地址相同,分别是第X和Y个子RAM地址相同,第A和B个子RAM地址相同,分布式RAM共配置有2^k块子RAM,K的值越大,选择同一块子RAM的概率越小。
处理上述存在重复的子RAM地址的情况时,第一拍完成第X个哈希值和第A个哈希值的处理,第二拍完成第Y个哈希值和第B个哈希值的处理,其余哈希值在第一拍全部完成。
如果M个哈希值不相同且M个子RAM地址也不相同,M个哈希值进入到各自对应的子RAM中进行更新以及索引到子RAM中的历史数据地址进行输出,输出的M个历史数据地址分别放入到对应的历史数据地址队列中,将M个历史数据地址队列中的历史数据地址取出生成2N个历史数据地址,其中历史数据地址的取出方法为哈希值放入的逆过程。
可选的,所述分布式RAM中包含2K个子RAM,所述计算所述M个哈希值各自对应的RAM地址包括:
从所述M个哈希值中指定位置分别取出K位数据作为各自对应的RAM地址。
可选的,所述方法还包括:
若所述M个哈希值中有相同的哈希值,根据预设算法将冲突的源数据映射到对应的子RAM中的新地址上;或
若所述M个哈希值不存在相同的哈希值但所述M个子RAM地址存在相同的子RAM地址,延时一拍;
将下一拍M个哈希值各自对应的源数据存储在分布式RAM中RAM地址指向的RAM中。
参见图4,为本发明实施例提供的一种索引方法的处理流程示意图,在本发明实施例中,M=2,N=2,K=3,即输入4个源数据,哈希值队列和历史数据队列的数量为2,分布式RAM中配置8个子RAM。处理过程具体为:分别对4个源数据data_0、data_1、data_2和data_3进行哈希运算得到固定长度的哈希值,将源数据data_0的哈希值存放在哈希值队列hash_0中,源数据data_1的哈希值存放在哈希值队列hash_1中,源数据data_2的哈希值存放在哈希值队列hash_0中,源数据data_3的哈希值存放在哈希值队列hash_1中,匹配装置从两个哈希值队列中分别取1个哈希值,得到2个哈希值,以及去每个哈希值特定位置的值作为子RAM的地址,然后对2个哈希值和2个子RAM地址进行逻辑预判,判断哈希值是否存在相同以及子RAM地址是否存在相同,如果都为否,2个哈希值进入到对应的子RAM中更新和索引出子RAM中的历史数据地址,将得到的2个历史数据地址分别放入对应的历史数据地址队列中,然后从历史数据队列中取出历史数据地址,直到得到4个历史数据地址。
参见图5至图7,为本发明实施例提供的一种匹配方法的流程示意图,在本发明实施例中,P=4,Q=4,待处理数据scr_data的长度为7个字节,其中,待处理数据中的0、1、2、3表示本拍的4字节的数据的位置,-3、-2、-1表示上一拍的3字节的数据的位置。各个匹配过程输入的4字节的匹配结果:match_0、match_1、match_2和match_3,对各个匹配结果根据步长为1递增向低位进行移位后进行与运算。参见图6,match_0不进行移位,match_1向低位移动1位,match_2向低位移动2位,match_3向低位移动3位,将移位后的4匹配结果进行与运算得到7位的匹配结果,将本拍的7位的匹配结果和上一拍的7位的匹配结果组合得到上一拍的4位的匹配结果和本拍的4位的匹配结果,其中本拍的7位结果向低位移动P位,将移位后的本拍7位匹配结果和上一拍7位匹配结果进行与运算,具体过程参见图7所示。
具体的匹配过程为:例如一串数据流数据为……KFLIPABCDEFGHIJKXXXX……,然后假设历史数据有一段匹配为BCDEFGHIJ,此时上一拍7字节的src_data为FLIPABC,本拍的src_data为ABCDEFG,下一拍的src_data为EFGHIJK,再下一拍src_data为IJKXXXX。本拍的src_data_0为ABCD,src_data_1为BCDE,src_data_2为CDEF,src_data_3为DEFG。
整个匹配流程,各部分数据如下表所示:
表1
根据表中数值,最终得到3个match_out的结果,“PABC”—>0000表明没有匹配,“DEFG”—>0111表明在E的位置已经有4Byte匹配,即BCDE开始匹配,FG是连续匹配,“HIJK”—>1110表明HIJ位置为连续匹配,K无连续匹配,因此得到匹配数据为“BCDEFGHIJ”,匹配完毕。
参见图8,为本发明实施例提供的一种内容匹配装置的结构示意图,内容匹配装置80用于执行图1中的内容匹配方法,内容匹配装置80包括:生成模块801、划分模块802、匹配模块803、移位模块804和组合模块805
生成模块801,用于根据本拍的Q字节的数据和上一拍的P-1字节的数据生成P+Q-1字节的待处理数据;其中,P和Q为正整数,且P+Q-1大于0。
划分模块802,用于根据宽度为P字节的滑窗将所述待处理数据划分为Q个P字节的源数据。
匹配模块803,用于将所述Q个P字节的源数据中各个源数据分别与对应的历史数据进行匹配处理,匹配处理后得到Q个P位的匹配结果。
移位模块804,用于将所述Q个匹配结果中各个匹配结果以1位步长递增向低位移位后与运算得到本拍的P+Q-1位的匹配结果。
组合模块805,用于将本拍的P+Q-1位的匹配结果和上一拍的P+Q-1位的匹配结果组合得到上一拍的Q位的匹配结果。
可选的,匹配模块用于:
计算所述各个源数据分别对应的哈希值,在存储器中查询哈希值对应的历史数据。
可选的,内容匹配装置还包括:
索引模块,用于待索引数据划分为2N个源数据;其中,Q=2N,N为正整数;
分别计算所述2N个源数据各自对应的哈希值,得到2N个哈希值;
将所述2N个哈希值存放到M个哈希值队列中;其中,所述M个哈希值队列各自对应2N/M个哈希值;其中,M为正整数,2N/M为正整数;
每次从所述M个哈希值队列各个哈希值队列中分别取出1个哈希值,得到M个哈希值,以及计算所述M个哈希值各自对应的子RAM地址;
若所述M个哈希值均不相同且所述M个哈希值各自对应的子RAM地址均不相同;
将所述M个哈希值各自对应的源数据存储在分布式RAM中子RAM地址指向的子RAM中;
将M个源数据的地址存放在M个历史数据地址队列中,并根据M个历史地址队列中存放的地址得到所述2N个源数据各自对应的历史数据地址。
可选的,索引模块用于:
从所述M个哈希值中指定位置分别取出K位数据作为各自对应的子RAM地址;其中,K为正整数。
可选的,内容匹配装置还包括:
冲突处理模块,用于若所述M个哈希值中有相同的哈希值,根据预设算法将冲突的源数据映射到对应的子RAM中的新地址上;或
若所述M个哈希值不存在相同的哈希值但所述M个子RAM地址存在相同的子RAM地址,延时一拍;
将下一拍M个哈希值各自对应的源数据存储在分布式RAM中子RAM地址指向的子RAM中。
本发明实施例和方法实施例一基于同一构思,其带来的技术效果也相同,具体过程请参照方法实施例一的描述,此处不再赘述。
参见图9,为本发明实施例还提供的一种内容匹配装置,内容匹配装置包括处理器901、存储器902和通信接口903。通信接口903用于与外部设备进行通信。内容匹配装置中的处理器901的数量可以是一个或多个。本发明的一些实施例中,处理器901、存储器902和通信接口903可通过总线或其他方式连接。内容匹配装置可以用于执行图1所示的方法。关于本实施例涉及的术语的含义以及举例,可以参考图1对应的实施例。此处不再赘述。
其中,存储器902中存储程序代码。处理器901用于调用存储器902中存储的程序代码,用于执行以下操作:
根据本拍的Q字节的数据和上一拍的P-1字节的数据生成P+Q-1字节的待处理数据;其中,P和Q为正整数,且P+Q-1大于0;
根据宽度为P字节的滑窗将所述待处理数据划分为Q个P字节的源数据;
将所述Q个P字节的源数据中各个源数据分别与对应的历史数据进行匹配处理,匹配处理后得到Q个P位的匹配结果;
将所述Q个匹配结果中各个匹配结果以1位步长递增向低位移位后与运算得到本拍的P+Q-1位的匹配结果;
将本拍的P+Q-1位的匹配结果和上一拍的P+Q-1位的匹配结果组合得到上一拍的Q位的匹配结果。
可选的,处理器901执行所述将所述Q个P字节的源数据中各个源数据分布与对应的历史数据进行匹配,匹配处理后得到Q个P位的匹配结果包括:
计算所述各个源数据分别对应的哈希值,在存储器中查询哈希值对应的历史数据。
处理器901执行所述根据本拍的Q字节的数据和上一拍的P-1字节的数据生成P+Q-1字节的待处理数据之前,还用于执行:
待索引数据划分为2N个源数据;其中,Q=2N,N为正整数;
分别计算所述2N个源数据各自对应的哈希值,得到2N个哈希值;
将所述2N个哈希值存放到M个哈希值队列中;其中,所述M个哈希值队列各自对应2N/M个哈希值;其中,M为正整数,2N/M为正整数;
每次从所述M个哈希值队列各个哈希值队列中分别取出1个哈希值,得到M个哈希值,以及计算所述M个哈希值各自对应的子RAM地址;
若所述M个哈希值均不相同且所述M个哈希值各自对应的子RAM地址均不相同;
将所述M个哈希值各自对应的源数据存储在分布式随机存储器RAM中子RAM地址指向的子RAM中;
将M个源数据的地址存放在M个历史数据地址队列中,并根据M个历史地址队列中存放的地址得到所述2N个源数据各自对应的历史数据地址。
处理器901执行所述分布式RAM中包含2K个子RAM,所述计算所述M个哈希值各自对应的RAM地址包括:
从所述M个哈希值中指定位置分别取出K位数据作为各自对应的子RAM地址;其中,K为正整数。
其中,处理器901还用于执行:
若所述M个哈希值中有相同的哈希值,根据预设算法将冲突的源数据映射到对应的子RAM中的新地址上;或
若所述M个哈希值不存在相同的哈希值但所述M个子RAM地址存在相同的子RAM地址,延时一拍;
将下一拍M个哈希值各自对应的源数据存储在分布式RAM中子RAM地址指向的子RAM中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (10)
1.一种内容匹配方法,其特征在于,包括:
根据本拍的Q字节的数据和上一拍的P-1字节的数据生成P+Q-1字节的待处理数据;其中,P和Q为正整数,且P+Q-1大于0;
根据宽度为P字节的滑窗将所述待处理数据划分为Q个P字节的源数据;
将所述Q个P字节的源数据中各个源数据分别与对应的历史数据进行匹配处理,匹配处理后得到Q个P位的匹配结果;
将所述Q个匹配结果中各个匹配结果以1位步长递增向低位移位后与运算得到本拍的P+Q-1位的匹配结果;
将本拍的P+Q-1位的匹配结果和上一拍的P+Q-1位的匹配结果组合得到上一拍的Q位的匹配结果。
2.如权利要求1所述的方法,其特征在于,所述将所述Q个P字节的源数据中各个源数据分布与对应的历史数据进行匹配,匹配处理后得到Q个P位的匹配结果包括:
计算所述各个源数据分别对应的哈希值,在存储器中查询哈希值对应的历史数据。
3.如权利要求1所述的方法,其特征在于,所述根据本拍的Q字节的数据和上一拍的P-1字节的数据生成P+Q-1字节的待处理数据之前,还包括:
待索引数据划分为2N个源数据;其中,Q=2N,N为正整数;
分别计算所述2N个源数据各自对应的哈希值,得到2N个哈希值;
将所述2N个哈希值存放到M个哈希值队列中;其中,所述M个哈希值队列各自对应2N/M个哈希值;其中,M为正整数,2N/M为正整数;
每次从所述M个哈希值队列各个哈希值队列中分别取出1个哈希值,得到M个哈希值,以及计算所述M个哈希值各自对应的子RAM地址;
若所述M个哈希值均不相同且所述M个哈希值各自对应的子RAM地址均不相同;
将所述M个哈希值各自对应的源数据存储在分布式随机存储器RAM中子RAM地址指向的子RAM中;
将M个源数据的地址存放在M个历史数据地址队列中,并根据M个历史地址队列中存放的地址得到所述2N个源数据各自对应的历史数据地址。
4.如权利要求3所述的方法,其特征在于,所述分布式RAM中包含2K个子RAM,所述计算所述M个哈希值各自对应的RAM地址包括:
从所述M个哈希值中指定位置分别取出K位数据作为各自对应的子RAM地址;其中,K为正整数。
5.如权利要求3所述的方法,其特征在于,还包括:
若所述M个哈希值中有相同的哈希值,根据预设算法将冲突的源数据映射到对应的子RAM中的新地址上;或
若所述M个哈希值不存在相同的哈希值但所述M个子RAM地址存在相同的子RAM地址,延时一拍;
将下一拍M个哈希值各自对应的源数据存储在分布式RAM中子RAM地址指向的子RAM中。
6.一种内容匹配装置,其特征在于,包括:
生成模块,用于根据本拍的Q字节的数据和上一拍的P-1字节的数据生成P+Q-1字节的待处理数据;其中,P和Q为正整数,且P+Q-1大于0;
划分模块,用于根据宽度为P字节的滑窗将所述待处理数据划分为Q个P字节的源数据;
匹配模块,用于将所述Q个P字节的源数据中各个源数据分别与对应的历史数据进行匹配处理,匹配处理后得到Q个P位的匹配结果;
移位模块,用于将所述Q个匹配结果中各个匹配结果以1位步长递增向低位移位后与运算得到本拍的P+Q-1位的匹配结果;
组合模块,用于将本拍的P+Q-1位的匹配结果和上一拍的P+Q-1位的匹配结果组合得到上一拍的Q位的匹配结果。
7.如权利要求6所述的装置,其特征在于,所述匹配模块用于:
计算所述各个源数据分别对应的哈希值,在存储器中查询哈希值对应的历史数据。
8.如权利要求6所述的装置,其特征在于,还包括:
索引模块,用于待索引数据划分为2N个源数据;其中,Q=2N,N为正整数;
分别计算所述2N个源数据各自对应的哈希值,得到2N个哈希值;
将所述2N个哈希值存放到M个哈希值队列中;其中,所述M个哈希值队列各自对应2N/M个哈希值;其中,M为正整数,2N/M为正整数;
每次从所述M个哈希值队列各个哈希值队列中分别取出1个哈希值,得到M个哈希值,以及计算所述M个哈希值各自对应的子RAM地址;
若所述M个哈希值均不相同且所述M个哈希值各自对应的子RAM地址均不相同;
将所述M个哈希值各自对应的源数据存储在分布式RAM中子RAM地址指向的子RAM中;
将M个源数据的地址存放在M个历史数据地址队列中,并根据M个历史地址队列中存放的地址得到所述2N个源数据各自对应的历史数据地址。
9.如权利要求8所述的装置,其特征在于,所述索引模块用于:
从所述M个哈希值中指定位置分别取出K位数据作为各自对应的子RAM地址;其中,K为正整数。
10.如权利要求8所述的装置,其特征在于,还包括:
冲突处理模块,用于若所述M个哈希值中有相同的哈希值,根据预设算法将冲突的源数据映射到对应的子RAM中的新地址上;或
若所述M个哈希值不存在相同的哈希值但所述M个子RAM地址存在相同的子RAM地址,延时一拍;
将下一拍M个哈希值各自对应的源数据存储在分布式RAM中子RAM地址指向的子RAM中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510730991.3A CN105354150B (zh) | 2015-10-31 | 2015-10-31 | 一种内容匹配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510730991.3A CN105354150B (zh) | 2015-10-31 | 2015-10-31 | 一种内容匹配方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105354150A true CN105354150A (zh) | 2016-02-24 |
CN105354150B CN105354150B (zh) | 2018-03-16 |
Family
ID=55330124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510730991.3A Expired - Fee Related CN105354150B (zh) | 2015-10-31 | 2015-10-31 | 一种内容匹配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105354150B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109361398A (zh) * | 2018-10-11 | 2019-02-19 | 南威软件股份有限公司 | 一种基于并行和流水线设计的lz过程硬件压缩方法及系统 |
CN113377819A (zh) * | 2021-07-07 | 2021-09-10 | 山东方寸微电子科技有限公司 | 一种哈希表滚动查找方法、系统及芯片 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1691581A (zh) * | 2004-04-26 | 2005-11-02 | 彭诗力 | 基于特征值的多模式匹配算法及硬件实现 |
CN1809054A (zh) * | 2005-01-21 | 2006-07-26 | 华为技术有限公司 | 基于会话初始协议的消息文本解码器 |
JP2007316788A (ja) * | 2006-05-24 | 2007-12-06 | Sky Kk | 文書検索方法および文書検索装置 |
CN101420440A (zh) * | 2008-12-05 | 2009-04-29 | 华为技术有限公司 | 字符串匹配处理方法及装置 |
-
2015
- 2015-10-31 CN CN201510730991.3A patent/CN105354150B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1691581A (zh) * | 2004-04-26 | 2005-11-02 | 彭诗力 | 基于特征值的多模式匹配算法及硬件实现 |
CN1809054A (zh) * | 2005-01-21 | 2006-07-26 | 华为技术有限公司 | 基于会话初始协议的消息文本解码器 |
JP2007316788A (ja) * | 2006-05-24 | 2007-12-06 | Sky Kk | 文書検索方法および文書検索装置 |
CN101420440A (zh) * | 2008-12-05 | 2009-04-29 | 华为技术有限公司 | 字符串匹配处理方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109361398A (zh) * | 2018-10-11 | 2019-02-19 | 南威软件股份有限公司 | 一种基于并行和流水线设计的lz过程硬件压缩方法及系统 |
CN109361398B (zh) * | 2018-10-11 | 2022-12-30 | 南威软件股份有限公司 | 一种基于并行和流水线设计的lz过程硬件压缩方法及系统 |
CN113377819A (zh) * | 2021-07-07 | 2021-09-10 | 山东方寸微电子科技有限公司 | 一种哈希表滚动查找方法、系统及芯片 |
CN113377819B (zh) * | 2021-07-07 | 2023-02-03 | 山东方寸微电子科技有限公司 | 一种哈希表滚动查找方法、系统及芯片 |
Also Published As
Publication number | Publication date |
---|---|
CN105354150B (zh) | 2018-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9407286B2 (en) | Data compression apparatus, data compression method, and memory system including the data compression apparatus | |
CN106852185B (zh) | 基于字典的并行压缩编码器 | |
US9240237B2 (en) | Semiconductor device and method of writing/reading entry address into/from semiconductor device | |
CN107027036A (zh) | 一种fpga异构加速平台的解压缩方法、装置及系统 | |
TW303549B (zh) | ||
TWI836132B (zh) | 儲存系統以及用於動態地擴縮儲存系統的排序操作的方法 | |
US7054994B2 (en) | Multiple-RAM CAM device and method therefor | |
CN102970043A (zh) | 一种基于gzip的压缩硬件系统及其加速方法 | |
JPWO2003091872A1 (ja) | 並列マージソート処理装置及び方法並びにプログラム | |
CN114764407A (zh) | 加速器和词典解码的近存储加速的方法 | |
EP3051700A1 (en) | Hardware efficient fingerprinting | |
CN110278719A (zh) | 编码方法、解码方法和装置 | |
CN104081378A (zh) | 充分利用并行处理器用于数据处理 | |
CN103427844A (zh) | 一种基于gpu和cpu混合平台的高速无损数据压缩方法 | |
CN111625181A (zh) | 数据处理方法、独立硬盘冗余阵列控制器和数据存储系统 | |
US9384449B2 (en) | Parallel hardware searching system for building artificial intelligent computer | |
CN105354150A (zh) | 一种内容匹配方法和装置 | |
CN111008691B (zh) | 一种权值和激活值都二值化的卷积神经网络加速器架构 | |
CN105528183A (zh) | 一种存储数据的方法及存储设备 | |
CN104679507B (zh) | NAND Flash编程器烧录映像文件的生成方法及装置 | |
CN117271953A (zh) | 一种用于优化快速傅里叶变换的存内计算加速电路及方法 | |
CN111258541B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN107832086A (zh) | 计算机设备、程序写入方法及程序读取方法 | |
CN114070901B (zh) | 基于多数据对齐的数据发送和接收方法、装置和设备 | |
CN104252560A (zh) | 基于现场可编程门阵列的集中缓存式装置及设计方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180316 Termination date: 20191031 |