CN106649836B - 一种基于硬件查找表的模式字符的查找方法 - Google Patents
一种基于硬件查找表的模式字符的查找方法 Download PDFInfo
- Publication number
- CN106649836B CN106649836B CN201611249587.5A CN201611249587A CN106649836B CN 106649836 B CN106649836 B CN 106649836B CN 201611249587 A CN201611249587 A CN 201611249587A CN 106649836 B CN106649836 B CN 106649836B
- Authority
- CN
- China
- Prior art keywords
- character
- storage unit
- string
- memory block
- current
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及存储器技术领域,尤其涉及一种基于硬件查找表的模式字符的查找方法,存储区包括多个存储单元,存储单元于存储区内的访问地址的编址方式对应一预定编码字符集,还提供一模式字符串,存储单元的位宽等于模式字符串的字符长度,存储单元的每一位分别顺序对应模式字符串中的每个字符,通过将存储区中对应模式字符串中每个字符的存储单元的对应位,置逻辑值1,从而通过读取对应位实现模式字符的查找;上述技术方案采用硬件实现方式的查找匹配过程,不占用CPU资源,提高系统并行处理能力,利用硬件运行速度快的特点,在若干个硬件时钟周期内即可得到匹配结果,能对实时输入的高速待匹配数据流进行实时的查找匹配结果输出。
Description
技术领域
本发明涉及存储器技术领域,尤其涉及一种基于硬件查找表的模式字符的查找方法。
背景技术
字符串匹配即对一段数据进行指定字符串的查找匹配,可用于对带有指定特征字符串的一段数据进行筛选、过滤等应用。
现有字符串匹配方法多采用高级编程语言(如C语言,Java等)编程的软件方式实现匹配算法,例如:哈希、KMP算法等,通过不同的查找顺序减少得到匹配结果的时间。
但是,用高级编程语言编程运行于CPU(Central Processing Unit,中央处理器),以软件的形式实现字符串匹配的方法并行处理能力相对较差,速度相对较慢,需考虑运行软件算法的CPU调度问题,不适合用于对实时高速数据流进行字符串匹配。
发明内容
针对上述问题,本发明提出了一种基于硬件查找表的查找模式字符串的方法,所述硬件查找表包括至少一个存储区;
所述存储区包括多个存储单元,所述存储单元于所述存储区内的访问地址的编址方式对应一预定编码字符集,还提供一模式字符串,所述存储单元的位宽等于所述模式字符串的字符长度,所述存储单元的每一位分别顺序对应所述模式字符串中的每个字符;
还包括以下步骤:
步骤S1,将所述存储区中,对应所述模式字符串中每个字符的所述存储单元的对应位,置逻辑值1;
步骤S2,获取一目标字符串;
步骤S3,读取所述目标字符串的第一位;
步骤S4,定义读取到的所述字符为当前字符;
步骤S5,以所述预定编码字符集对所述当前字符进行解码,以获取所述当前字符对应的编码;
步骤S6,根据所述编码于所述存储区查找对应的所述存储单元;
步骤S7,于所述步骤S6查找到的所述存储单元中获取第一位;
步骤S8,判断所述步骤S7中获取的所述第一位的值是否为1,如果是则提供一数字值N,定义N=1,并执行所述步骤S9,如果否执行所述步骤S17;
步骤S9,判断所述模式字符串的字符长度是否等于1,如果是执行步骤S16;
步骤S10,判断所述目标字符串剩余的字符长度是否小于所述模式字符串的长度-N,如果是执行步骤S18;
步骤S11,读取所述目标字符串的下一位,定义读取到的字符为第二当前字符;
步骤S12,以所述预定编码字符集对所述第二当前字符进行解码,以获取所述第二当前字符对应的编码;
步骤S13,根据所述编码于所述存储区查找对应的所述存储单元;
步骤S14,令N=N+1,于所述步骤S13查找到的所述存储单元中获取第N位;
步骤S15,判断所述步骤S14中获取的所述第N位的值是否为1,如果是返回执行所述步骤S11,如果否执行所述步骤S17;
步骤S16,模式字符串查找成功,退出;
步骤S17,判断所述当前字符是否为所述目标字符串的最后一位,如果是执行步骤S18,如果否读取所述目标字符串的下一位,并定义读取到的字符为当前字符,返回所述步骤S5。
步骤S18,模式字符串查找失败。
上述的方法,其中,所述步骤S1包括以下步骤:
步骤S1A,读取所述模式字符串的第一位字符;
步骤S1B,定义读取到的所述字符为当前字符;
步骤S1C,以所述预定编码字符集对所述当前字符进行解码,以获取所述当前字符对应的编码;
步骤S1D,根据所述编码于所述存储区查找对应的所述存储单元;
步骤S1E,根据所述当前字符于所述模式字符串中的位置于所述步骤S1D查找到的所述存储单元中获取对应的位;
步骤S1F,将所述步骤S1E中获取的所述位置逻辑值1;
步骤S1G,判断所述当前字符是否为所述模式字符串的最后一位,如果是执行步骤S2,如果否读取所述模式字符串的下一位,并定义读取到的字符为当前字符,返回所述步骤S1C。
上述的方法,其中,所述预定编码字符集为ASCII编码字符集。
上述的方法,其中,所述存储单元的数量为128个。
上述的方法,其中,所述模式字符串的最大字符长度为8。
上述的方法,其中,所述步骤S16与所述步骤S17之间,还包括判断所述目标字符串剩余字符长度是否大于等于所述模式字符串的字符长度,若否则执行所述步骤S18。
一种基于硬件查找表的查找模式字符串的方法,所述硬件查找表包括多个如上任一所述的存储区,每个所述存储区中的存储单元的位宽不同。
上述的方法,其中,所述硬件查找表为静态随机存取存储器。
上述的方法,其中,所述存储区设置有8个。
上述的方法,其中,8个所述存储区按照所述存储单元位宽大小依次拼合排列,使不同的所述存储区中对应相同字符的所述存储单元以相同的访问地址进行访问。
上述的方法,其中,8个所述存储区按照所述存储单元位宽依次为8位,7位,6位,5位,4位,3位,2位,1位。
有益效果:本发明提出的一种基于硬件查找表的模式字符的查找方法,采用硬件实现方式的查找匹配过程,不占用CPU资源,提高系统并行处理能力,利用硬件运行速度快的特点,在若干个硬件时钟周期内即可得到匹配结果,能对实时输入的高速待匹配数据流进行实时的查找匹配结果输出。
附图说明
图1为本发明一实施例中基于硬件查找表的模式字符的查找方法的流程示意图;
图2为本发明一实施例中存储器的结构示意图;
图3为本发明一实施例中存储区的排列结构示意图;
图4为本发明一实施例中对一个字符长度的模式字符进行查找的示意图;
图5为本发明一实施例中对两个字符长度的模式字符进行查找的示意图。
具体实施方式
下面结合附图和实施例对本发明进行进一步说明。
在一个较佳的实施例中,如图1所示,提出了一种基于硬件查找表的查找模式字符串的方法,如图2所示,硬件查找表可以包括至少一个存储区10;
如图3所示,存储区10可以包括多个存储单元20,存储单元20于存储区10内的访问地址的编址方式对应一预定编码字符集,还提供一模式字符串,存储单元20的位宽等于模式字符串的字符长度,存储单元20的每一位分别顺序对应模式字符串中的每个字符;
还包括以下步骤:
步骤S1,将存储区10中,对应模式字符串中每个字符的存储单元20的对应位,置逻辑值1;
步骤S2,获取一目标字符串;
步骤S3,读取目标字符串的第一位;
步骤S4,定义读取到的字符为当前字符;
步骤S5,以预定编码字符集对当前字符进行解码,以获取当前字符对应的编码;
步骤S6,根据编码于存储区10查找对应的存储单元20;
步骤S7,于步骤S6查找到的存储单元20中获取第一位;
步骤S8,判断步骤S7中获取的第一位的值是否为1,如果是则提供一数字值N,定义N=1,并执行步骤S9,如果否执行步骤S17;
步骤S9,判断模式字符串的字符长度是否等于1,如果是执行步骤S16;
步骤S10,判断目标字符串剩余的字符长度是否小于模式字符串的长度-N,如果是执行步骤S18;
步骤S11,读取目标字符串的下一位,定义读取到的字符为第二当前字符;
步骤S12,以预定编码字符集对第二当前字符进行解码,以获取第二当前字符对应的编码;
步骤S13,根据编码于存储区10查找对应的存储单元20;
步骤S14,令N=N+1,于步骤S13查找到的存储单元20中获取第N位;
步骤S15,判断步骤S14中获取的第N位的值是否为1,如果是返回执行步骤S11,如果否执行步骤S17;
步骤S16,模式字符串查找成功,退出;
步骤S17,判断当前字符是否为目标字符串的最后一位,如果是执行步骤S18,如果否读取目标字符串的下一位,并定义读取到的字符为当前字符,返回步骤S5。
步骤S18,模式字符串查找失败。
在一个较佳的实施例中,步骤S1包括以下步骤:
步骤S1A,读取模式字符串的第一位字符;
步骤S1B,定义读取到的字符为当前字符;
步骤S1C,以预定编码字符集对当前字符进行解码,以获取当前字符对应的编码;
步骤S1D,根据编码于存储区查10找对应的存储单元20;
步骤S1E,根据当前字符于模式字符串中的位置于步骤S1D查找到的存储单元20中获取对应的位;
步骤S1F,将步骤S1E中获取的位置逻辑值1;
步骤S1G,判断当前字符是否为模式字符串的最后一位,如果是执行步骤S2,如果否读取模式字符串的下一位,并定义读取到的字符为当前字符,返回步骤S1C。
在一个较佳的实施例中,预定编码字符集可以为ASCII编码字符集,也可以是其他种类的编码字符集,此处的ASCII编码字符集只是其中一种情况,不应视为是对本发明的限制。
上述实施例中,优选地,存储单元20的数量为128个。
上述实施例中,优选地,模式字符串的最大字符长度为8。
在一个较佳的实施例中,步骤S16与步骤S17之间,还包括判断目标字符串剩余字符长度是否大于等于模式字符串的字符长度,若否则执行步骤S18。
在一个较佳的实施例中,还提供了一种基于硬件查找表的查找模式字符串的方法,硬件查找表包括多个如上任一的存储区10,每个存储区中的存储单元20的位宽不同。
在一个较佳的实施例中,硬件查找表为静态随机存取存储器。
在一个较佳的实施例中,存储区10设置有8个。
在一个较佳的实施例中,8个存储区10按照存储单元20位宽大小依次拼合排列,使不同的存储区10中对应相同字符的存储单元20以相同的访问地址进行访问。
在一个较佳的实施例中,如图3所示,8个存储区10按照存储单元20位宽依次为8位,7位,6位,5位,4位,3位,2位,1位。
具体地,图3中存储区10中的存储单元从右往左存储空间依次增加,最大存储空间为8位;图4中是对一个字符长度的模式字符进行查找的示意图;图5中是对两个字符长度的模式字符进行查找的示意图,在这种存储单元20从右往左存储空间依次增加的先定下,存储单元20的最大存储空间为8位,即能查找的模式串的最大字符长度为8个字符长度。
综上所述,本发明提出的一种基于硬件查找表的模式字符的查找方法,采用硬件实现方式的查找匹配过程,不占用CPU资源,提高系统并行处理能力,利用硬件运行速度快的特点,在若干个硬件时钟周期内即可得到匹配结果,能对实时输入的高速待匹配数据流进行实时的查找匹配结果输出。
通过说明和附图,给出了具体实施方式的特定结构的典型实施例,基于本发明精神,还可作其他的转换。尽管上述发明提出了现有的较佳实施例,然而,这些内容并不作为局限。
对于本领域的技术人员而言,阅读上述说明后,各种变化和修正无疑将显而易见。因此,所附的权利要求书应看作是涵盖本发明的真实意图和范围的全部变化和修正。在权利要求书范围内任何和所有等价的范围与内容,都应认为仍属本发明的意图和范围内。
Claims (11)
1.一种基于硬件查找表的查找模式字符串的方法,其特征在于,所述硬件查找表包括至少一个存储区;
所述存储区包括多个存储单元,所述存储单元于所述存储区内的访问地址的编址方式对应一预定编码字符集,还提供一模式字符串,所述存储单元的位宽等于所述模式字符串的字符长度,所述存储单元的每一位分别顺序对应所述模式字符串中的每个字符;
还包括以下步骤:
步骤S1,将所述存储区中,对应所述模式字符串中每个字符的所述存储单元的对应位,置逻辑值1;
步骤S2,获取一目标字符串;
步骤S3,读取所述目标字符串的第一位;
步骤S4,定义读取到的所述字符为当前字符;
步骤S5,以所述预定编码字符集对所述当前字符进行解码,以获取所述当前字符对应的编码;
步骤S6,根据所述编码于所述存储区查找对应的所述存储单元;
步骤S7,于所述步骤S6查找到的所述存储单元中获取第一位;
步骤S8,判断所述步骤S7中获取的所述第一位的值是否为1,如果是则提供一数字值N,定义N=1,并执行步骤S9,如果否执行步骤S17;
步骤S9,判断所述模式字符串的字符长度是否等于1,如果是执行步骤S16;
步骤S10,判断所述目标字符串剩余的字符长度是否小于所述模式字符串的长度-N,如果是执行步骤S18;
步骤S11,读取所述目标字符串的下一位,定义读取到的字符为第二当前字符;
步骤S12,以所述预定编码字符集对所述第二当前字符进行解码,以获取所述第二当前字符对应的编码;
步骤S13,根据所述编码于所述存储区查找对应的所述存储单元;
步骤S14,令N=N+1,于所述步骤S13查找到的所述存储单元中获取第N位;
步骤S15,判断所述步骤S14中获取的所述第N位的值是否为1,如果是返回执行所述步骤S11,如果否执行所述步骤S17;
步骤S16,所述模式字符串查找成功,退出;
步骤S17,判断所述当前字符是否为所述目标字符串的最后一位,如果是执行步骤S18,如果否读取所述目标字符串的下一位,并定义读取到的字符为当前字符,返回所述步骤S5;
步骤S18,模式字符串查找失败。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1包括以下步骤:
步骤S1A,读取所述模式字符串的第一位字符;
步骤S1B,定义读取到的所述字符为当前字符;
步骤S1C,以所述预定编码字符集对所述当前字符进行解码,以获取所述当前字符对应的编码;
步骤S1D,根据所述编码于所述存储区查找对应的所述存储单元;
步骤S1E,根据所述当前字符于所述模式字符串中的位置于所述步骤S1D查找到的所述存储单元中获取对应的位;
步骤S1F,将所述步骤S1E中获取的所述位置逻辑值1;
步骤S1G,判断所述当前字符是否为所述模式字符串的最后一位,如果是执行步骤S2,如果否读取所述模式字符串的下一位,并定义读取到的字符为当前字符,返回所述步骤S1C。
3.根据权利要求2所述的方法,其特征在于,所述预定编码字符集为ASCII编码字符集。
4.根据权利要求3所述的方法,其特征在于,所述存储单元的数量为128个。
5.根据权利要求1所述的方法,其特征在于,执行所述步骤S1之前,将所述存储区的每个存储单元的每一位置逻辑值0。
6.根据权利要求1所述的方法,其特征在于,所述步骤S16与所述步骤S17之间,还包括判断所述目标字符串剩余字符长度是否大于等于所述模式字符串的字符长度,若否则执行所述步骤S18。
7.一种基于硬件查找表的查找模式字符串的方法,其特征在于,所述硬件查找表包括多个如权利要求1-6中任一所述的方法中的所述存储区,每个所述存储区中的存储单元的位宽不同。
8.根据权利要求7所述的方法,其特征在于,所述硬件查找表为静态随机存取存储器。
9.根据权利要求7所述的方法,其特征在于,所述存储区设置有8个。
10.根据权利要求7所述的方法,其特征在于,8个所述存储区按照所述存储单元位宽大小依次拼合排列,使不同的所述存储区中对应相同字符的所述存储单元以相同的访问地址进行访问。
11.根据权利要求7所述的方法,其特征在于,8个所述存储区按照所述存储单元位宽依次为8位,7位,6位,5位,4位,3位,2位,1位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611249587.5A CN106649836B (zh) | 2016-12-29 | 2016-12-29 | 一种基于硬件查找表的模式字符的查找方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611249587.5A CN106649836B (zh) | 2016-12-29 | 2016-12-29 | 一种基于硬件查找表的模式字符的查找方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106649836A CN106649836A (zh) | 2017-05-10 |
CN106649836B true CN106649836B (zh) | 2019-11-29 |
Family
ID=58836163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611249587.5A Active CN106649836B (zh) | 2016-12-29 | 2016-12-29 | 一种基于硬件查找表的模式字符的查找方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106649836B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115220910B (zh) * | 2022-06-17 | 2024-04-19 | 中科驭数(北京)科技有限公司 | 一种资源调度方法、装置及设备 |
CN117332126A (zh) * | 2023-09-11 | 2024-01-02 | 中科驭数(北京)科技有限公司 | 字符串过滤方法、装置、加速卡及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101420440A (zh) * | 2008-12-05 | 2009-04-29 | 华为技术有限公司 | 字符串匹配处理方法及装置 |
CN102253957A (zh) * | 2011-04-13 | 2011-11-23 | 北京恒光创新科技股份有限公司 | 一种tcam多模式字符串匹配方法及装置 |
CN103425739A (zh) * | 2013-07-09 | 2013-12-04 | 国云科技股份有限公司 | 一种字符串匹配算法 |
CN103559018A (zh) * | 2013-10-23 | 2014-02-05 | 东软集团股份有限公司 | 基于gpu计算的字符串匹配方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9069547B2 (en) * | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
-
2016
- 2016-12-29 CN CN201611249587.5A patent/CN106649836B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101420440A (zh) * | 2008-12-05 | 2009-04-29 | 华为技术有限公司 | 字符串匹配处理方法及装置 |
CN102253957A (zh) * | 2011-04-13 | 2011-11-23 | 北京恒光创新科技股份有限公司 | 一种tcam多模式字符串匹配方法及装置 |
CN103425739A (zh) * | 2013-07-09 | 2013-12-04 | 国云科技股份有限公司 | 一种字符串匹配算法 |
CN103559018A (zh) * | 2013-10-23 | 2014-02-05 | 东软集团股份有限公司 | 基于gpu计算的字符串匹配方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106649836A (zh) | 2017-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Moens et al. | Frequent itemset mining for big data | |
KR102376117B1 (ko) | 병렬 결정 트리 프로세서 아키텍처 | |
US9442929B2 (en) | Determining documents that match a query | |
US20150262062A1 (en) | Decision tree threshold coding | |
Wang et al. | Indexing query graphs to speed up graph query processing | |
US20150178375A1 (en) | Method for searching tree using instruction of operating data having predetermined multiple bit widths | |
CN109388565B (zh) | 基于生成式对抗网络的软件系统性能优化方法 | |
CN101692651A (zh) | 一种哈希查找表的方法和装置 | |
US20140019486A1 (en) | Logic Content Processing for Hardware Acceleration of Multi-Pattern Search | |
CN107341507B (zh) | 一种基于gpu与级联哈希的快速图像sift特征匹配方法 | |
CN106649836B (zh) | 一种基于硬件查找表的模式字符的查找方法 | |
US20150262063A1 (en) | Decision tree processors | |
CN106599091A (zh) | 基于键值存储的rdf图结构存储和索引方法 | |
CN100476824C (zh) | 存储元素的方法与系统及查找元素的方法与系统 | |
CN103544109B (zh) | 一种组合测试用例生成方法 | |
Wu et al. | Efficient inner product approximation in hybrid spaces | |
EP3115909A1 (en) | Method and apparatus for multimedia content indexing and retrieval based on product quantization | |
CN107623524B (zh) | 一种基于硬件的Huffman编码方法及系统 | |
Kim et al. | A memory-efficient deterministic finite automaton-based bit-split string matching scheme using pattern uniqueness in deep packet inspection | |
US9697899B1 (en) | Parallel deflate decoding method and apparatus | |
CN104598567A (zh) | 一种基于Hadoop MapReduce编程框架的数据统计排重的方法 | |
EP3113038B1 (en) | A data handling method | |
Gong et al. | Enabling fast and memory-efficient acceleration for pattern matching workloads: The lightweight automata processing engine | |
CN108845844A (zh) | 一种状态转换方法及装置 | |
Salah et al. | Lazy-Merge: A Novel Implementation for Indexed Parallel $ K $-Way In-Place Merging |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |