CN108268596A - 搜索存储在存储器中的数据的方法和系统 - Google Patents
搜索存储在存储器中的数据的方法和系统 Download PDFInfo
- Publication number
- CN108268596A CN108268596A CN201711351959.XA CN201711351959A CN108268596A CN 108268596 A CN108268596 A CN 108268596A CN 201711351959 A CN201711351959 A CN 201711351959A CN 108268596 A CN108268596 A CN 108268596A
- Authority
- CN
- China
- Prior art keywords
- regex
- data
- basic
- operations
- analytic tree
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- 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
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1453—Management of the data involved in backup or backup restore using de-duplication of the data
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于搜索存储在存储器中的数据的方法,该方法包括接收regex搜索请求,生成包括与regex搜索请求对应的基本regex运算的解析树,在相应的时间步中单独分析所生成的解析树的基本regex运算中的每一个,通过使用转换表确定数据是否存在、并使用反向转换表确定数据的存储器地址位置而与确定与所分析的基本regex运算对应的数据的存储器地址位置;以及,在分析所生成的解析树的所有基本regex运算后,输出匹配regex搜索请求的数据。
Description
相关申请的交叉引用
该申请要求2017年1月4日提交的美国临时专利申请第62/442,324号的优先权,通过引用将该美国临时专利申请的全部内容并入本文。
技术领域
根据本发明的实施例的一个或多个方面一般涉及正则表达式搜索,并且涉及用于原位正则表达式搜索的存储设备。
背景技术
数据去重(deduplication)或者数据重复消除指减少存储器装置中的冗余数据以由此降低存储装置的容量成本。在数据去重中,数据文件被分成一个或多个数据组或区。通过将多个由相同数据组成的数据块与单个存储的数据块相关联,数据块的重复备份可以通过计算机存储器减少或消除,由此减小存储器装置中的冗余的数据备份的数量。
因此,如果重复的数据备份可以减少到单个数据备份,则在使用相同量的物理资源时,存储器装置的总体可用容量增大。因为存储器装置的结果的经济化允许数据重写计算减少,并且因为已经存储在存储器中的重复数据块的写入请求可以被省略,通过有效地增大写入耐久性,实施数据去重的存储器装置的使用寿命可以被延长。
数据去重的传统方法常被用于硬盘驱动器。然而,感兴趣的是,在易失性存储器(诸如动态随机存储器(DRAM))的区域中提供细粒去重。
在数据搜索领域中,正则表达式(regular expression)(例如,简写为“regex”或“regexp”)是一种特殊文本字符串,用于在搜索时描述搜索模型以允许找到某些数据的模型和组。正则表达式(“regex”)运算可以包括子串匹配和/或模型匹配。因此,regex运算被广泛用在许多现代应用和许多领域中,诸如网络安全、文本分析、生物信息学和金融。
基于硬件的regex引擎的传统方案的问题包括:由于串流方法引起的、并且在NFAvs DFA技术之间低性能,DFA尽管具有相对低的性能,但因其低复杂性通常是优选的。此外,应注意的是,DFA在给定时间限制状态机处于单状态,而在状态机进入多状态时,NFA允许并行状态检索。另外,基于硬件的regex引擎实施方式的传统方案的问题在于,它们仍然具有有限的存储容量,并且它们需要串流数据以寻找regex匹配,同时具有高延迟、高能量和相对低的性能。
在背景技术部分中公开的以上信息仅是增强对本发明的背景的理解,并且因此其可以包含不构成现有技术的信息。
发明内容
本公开的实施例的方面涉及用于存储器内侧的原位模型匹配和子串匹配的系统和方法。
根据本发明的实施例,提供一种用于搜索存储在存储器中的数据的方法,该方法包括:接收regex搜索请求;生成包括与regex搜索请求对应的基本regex运算的解析树;在相应的时间步中单独分析所生成的解析树的基本regex运算中的每一个;通过使用转换表确定与所分析的基本regex运算对应的数据的存储器地址位置,以确定数据是否存在;并且,使用反向转换表确定数据的存储器地址位置;以及,在分析所生成的解析树的所有基本regex运算之后,输出匹配regex搜索请求的数据。
所述方法可以进一步包括使用逻辑门来处理基本regex运算,并且基本regex运算可以包括串联运算、或运算、闭包运算或括号运算中的至少一个种。
接收regex搜索请求可以包括在计算机应用程序处接收regex搜索请求。
生成包括基本regex运算的解析树可以包括在驱动器处接收regex搜索请求和使用驱动器来生成解析树。
输出匹配regex搜索请求的数据可以包括生成与数据对应的数值和地址位置。
确定与所分析的基本regex运算对应的数据的存储器地址位置可以包括使用指针指示数据的起始存储地址,并且使用计数器来指示从具有数据的起始存储地址起的存储地址的数量。
所述方法可以进一步包括以去重格式存储数据,其中使用相同的逻辑来存储数据和生成解析树。
所述方法可以进一步包括:设定最小子串匹配能力;提供滚动窗口,其覆盖与regex搜索请求对应的搜索模型的一部分;以及,在滚动窗口内找到匹配时,在滚动窗口内搜索具有在与匹配对应的数据的地址位置紧挨之前或紧随其后的地址位置的数据。
根据本发明的实施例,提供一种用于搜索存储在存储器中的数据的系统,该系统包括被配置成与主机CPU通信的regex模块的处理器,和在其上存储有指令的存储器,当处理器执行所述指令时,所述指令使处理器接收regex搜索请求,生成包括与regex搜索请求对应的基本regex运算的解析树,在相应的时间步中单独分析生成的解析树的基本regex运算中的每一个,确定与分析的基本regex运算对应的数据的存储器地址位置,并且在所生成的解析树的所有基本regex运算被分析之后,输出匹配regex搜索请求的数据。
基本regex运算可以包括串联运算、或运算、闭包运算或括号运算中的至少一个。
当被处理器执行时,所述指令可以使处理器通过在计算机应用程序处接收regex搜索请求来接收regex搜索请求。
当被处理器执行时,所述指令可以使处理器通过在驱动器处接收regex搜索请求和使用驱动器来生成解析树而生成包括基本regex运算的解析树。
当被处理器执行时,所述指令可以使处理器通过使用转换表来确定数据是否存在并使用反向转换表来确定数据的存储器地址位置,从而确定与分析的基本regex运算对应的数据的存储器地址位置。
当被处理器执行时,所述指令可以使处理器通过使用指针指示数据的起始存储地址,并且使用计数器来指示从具有数据的起始存储地址起的存储地址的数量,从而确定与分析的基本regex运算对应的数据的存储器地址位置。
当被处理器执行时,所述指令可以使处理器通过生成与数据对应的数值和地址位置,从而输出匹配regex搜索请求的数据。
根据本发明的实施例,提供一种用于搜索存储在存储器中的数据的系统,该系统包括:被配置成接收regex搜索请求的应用程序;被配置成生成包括与regex搜索请求对应的基本regex运算的解析树的驱动器;和regex模块,所述regex模块被配置成在相应的时间步中单独分析所生成的解析树的基本regex运算中的每一个,并且确定与分析的基本regex运算对应的数据的存储器地址位置,其中,应用程序被进一步配置成在所生成的解析树的所有基本regex运算被分析之后,输出匹配regex搜索请求的数据。
所述基本regex运算可以包括串联运算、或运算、闭包运算或括号运算中的至少一个。
所述驱动器可以被配置成在从应用程序接收regex搜索请求后生成包括基本regex运算的解析树。
所述regex模块可以被配置成通过使用转换表确定数据是否存在,并使用反向转换表确定数据的存储器地址位置,从而确定与分析的基本regex运算对应的数据的存储器地址位置。
所述regex模块可以被配置成通过使用指针指示数据的起始存储地址,并且使用计数器来指示从具有数据的起始存储地址起的存储地址的数量,从而确定与所分析的基本regex运算对应的数据的存储器地址位置。
所述应用程序可以被配置成通过从regex模块接收与数据对应的数值和地址位置而输出匹配regex搜索请求的数据。
因此,本发明的实施例提供一种新颖的底层架构,其能够在使用动态随机存储器(DRAM)的资源的同时在DRAM内提供原位模型匹配和子串匹配。与传统regex硬件加速器不同,所描述的实施例提供在存储器模块上提供大的存储容量,同时也提供对存储区域去重的能力,其方式是通过在DRAM上允许基于硬件的regex搜索请求,并且通过使用DRAM去重架构来实施regex搜索。
所述实施例还提供了一种新颖的滚动窗口方法,其用于找到存储在存储器块内的所有数据匹配。
所描述的实施例还提供了一种反向转换表,其用于以用于匹配的给定硬件粒度追踪所有数据匹配。
附图说明
通过参考说明书、权利要求和附图,本发明的实施例的这些和其它方面将被领会和理解,在附图中:
图1图示根据本发明的实施例的将复杂的普通regex运算减少成具有较小数量的基础基本regex运算的解析树的方法;
图2图示根据本发明的实施例的使用代表复杂的普通regex运算的解析树的方法,所述复杂的普通regex运算使用在不同时间步期间分别被执行以执行regex搜索请求的基本regex运算;
图3图示根据本发明的实施例的系统架构、regex模块架构和架构数据流的框图;和
图4图示描绘使用滚动窗口扫描方法来避免跨去重行的子串非对准的方法的框图。
具体实施方式
本公开的实施例的方面涉及用于在存储器内的原位模型和子串匹配的系统和方法。
通过参考实施例和附图的以下详细描述,可以更容易地理解发明构思的特征以及实现发明构思的方法。下文中,将参考附图更详细地描述示例实施例,贯穿全文,在附图中,相同的参考标记指示相同的元件。然而,本发明可以以各种不同形式体现,并且不应被理解为被限制到本文图示的实施例。相反,这些实施例被提供作为示例,使得本公开是彻底的和完整的,并且将本发明的方面和特征全面传达至本领域技术人员。因此,对本领域技术人员完全理解本发明的方面和特征而言不是必须的处理、元件和技术可以不被描述。除非另有说明,贯穿附图和书面说明书,相同的参考标记指示相同的元件,并且因此,将不重复其描述。在附图中,为清晰起见,元件、层和区域的相对尺寸可以被放大。
应理解,尽管术语“第一”、“第二”、“第三”等可以在文中用于描述各种元件、部件、区域、层和/或区段,但是这些元件、部件、区域、层和/或区段不应被这些术语限制。这些术语用于区分一个元件、部件、区域、层或区段与另一个元件、部件、区域、层或区段。因而,以下描述的第一元件、部件、区域、层或区段可以被称作第二元件、部件、区域、层或区段,而不背离本发明的精神和范围。
空间相对术语,诸如“在...之下”、“以下”、“较低”、“下方”、“上方”、“上”等在文中可以被使用以便解释,用于描述一个元件或特征相对另一元件或特征的图中示出的相对关系。应理解,空间相对术语,除了在附图中描绘的定向以外,还旨在包含装置在使用或操作中的各种定向。例如,如果附图中的装置被翻转,描述为在其它元件或特征“下方”或“以下”或“之下”的元件则可以被取向为在其它元件或特征的“上方”。因而,示例术语“下方”和“在...下方”可以包含上方和下方的定向。装置可以被另外地定向(例如,旋转90度或者在其它定向)并且文中使用的空间相对描述语应被相应地理解。
应理解的是,当元件、层、区域或部件被称为在另一元件、层、区域或部件“上”、“连接”或“耦合”到另一元件、层、区域或部件时,它可以直接在元件、层、区域或部件上、直接连接到或联接到元件、层、区域或部件,或者可以存在一个或多个中间的元件、层、区域或部件。另外,应理解,当元件或层被称为在两个元件或层之间时,可以是指仅该元件或层在两个元件或层之间,或者也可以存在一个或多个中间的元件或层。
文中使用的术语仅用于描述特定的实施例,并且不旨在限制本发明。如在文中使用的,单数形式也旨在包括复数形式,除非语境中另外清楚地指示。应理解,当术语“包括”、“包含”、“具有”在本说明书中被使用时,明确所陈述的特征、整数、步骤、操作、元件和/或部件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、部件或其群组的存在。如文中使用的,术语“和/或”包括相关的列出项中的一个或多个的任何和全部组合。诸如“...中的至少一个”的表示,当被用于一系列元件之后时,修饰所有元件而不是修饰该系列中的单个元件。
如这里使用的,术语“大体上”、“约”和相似术语被用于解释目的而非程度目的,旨在说明测量或计算值中的固有偏差,这些会被本领域技术人员所理解。此外,当描述本发明的实施例时,“可以”的使用指“本发明的一个或多个实施例。”如文中使用的,术语“使用”和“被使用”可以被认为分别与“利用”和“被利用”同义。并且,术语“示例性”旨在指示例或说明。
当某个实施例可以被不同地实施时,具体处理顺序可以被执行成不同于所描述的顺序。例如,两个连续描述的处理可以被基本上同时执行,或者以与所述顺序相反的顺序执行。
根据文中描述的实施例,电子或电气装置和/或任何其它相关装置或部件可以利用任何适当的硬件、固件(例如,专用集成电路)、软件、或软件、固件和硬件的组合来实施。例如,这些装置的各种部件可以被形成在一个集成电路(IC)芯片上或者在分开的IC芯片上。此外,这些装置的各种部件可以被实施在柔性印刷电路薄膜、带载封装(TCP)、印刷电路板(PCB)上,或者形成在一个衬底上。此外,这些装置的各种部件可以是处理或进程,其在一个或多个处理器中在一个或多个计算装置中运行,从而执行计算机程序指令并且与其它系统部件相互作用,用以执行文中描述的各种功能。计算机程序指令被存储在存储器(其可以在使用标准存储装置的计算装置中实施)中,例如随机存取存储器(RAM)。计算机程序指令也可以被存储在其它非暂时性计算机可读介质中,例如CD-ROM、闪存驱动等。并且,本领域技术人员应理解,各个计算装置的功能可以被组合或集合到单个计算装置中,或者特定计算装置的功能可以跨一个或多个其它计算装置分布,而不背离所述实施例的精神和范围。
除非另外限定,文中所使用的所有术语(包括技术和科学术语)具有本发明所属领域的普通技术人员通常理解的相同含义。应理解的是,诸如在通用字典中限定的那些术语应被理解为具有与它们在相关技术和/或本说明书的文中的含义一致的含义,并且不应被以理想化的或超常理地理解,除非文中清晰地如此限定。
图1图示根据本发明的实施例的将复杂的普通regex运算减少成具有较小数量的基础的基本regex运算的解析树的方法。
参考图1,传统的去重引擎(例如,去重RAM的去重引擎)识别和存储特定内容在存储器中,使得去重引擎可以将输入regex搜索请求分成基本模型。此后,去重哈希(hash)算法可以用于搜索数据匹配。因此,根据本实施例,传统的DRAM中去重系统的某些方面可以被重新用于实施regex搜索。本实施例的总体支持框架可以包括用于端到端方案的系统、微架构和驱动器。本实施例也可以提供能力以在实施用于子串匹配和模型匹配的新颖滚动窗口方法的同时调节符号粒度。本实施例可以进一步提供新颖的反向转换表设计和应用使用方法。可以通过实施regex搜索的构思来实施本实施例。
本实施例可以将包括将单个复杂模型的regex搜索请求分成基础模型,所述基础模型已经被去重并且使用哈希表存储,并且,所述基础模型可以被实施为多个去重简单模型。另外,哈希算法可以被用于搜索数据匹配,并提供框架以支持regex搜索请求的分解。就是说,本实施例的存储器模块的引擎可以将与一个或多个普通regex运算110对应的regex搜索请求分成解析树130,所述解析树130由相对小数量的基本regex运算120组成。
与regex搜索请求对应的普通regex运算110可以由基本regex运算120的不同相应组合等效代表,基本regex运算120可进而由运算树/解析树130代表。就是说,regex搜索请求逻辑上具有若干个复杂的普通regex运算110,它们可以被分成一系列的较简单的基本regex运算120。基本regex运算120可以被一起放在解析树130上,以重新形成与普通regex运算110对应的初始regex搜索请求。
因此,通过将复杂regex搜索请求转换成具有简单的基本regex运算120组成的解析树130(例如,由串联、“或”、闭包和括号运算器的组合组成),本实施例可以使用逻辑(例如,图3中的数字逻辑317)实施呈解析树130的形式的普通regex运算110。
为了实施普通regex运算110到基本regex运算120的解析树130的转换,本实施例提供逻辑317,其能够执行单独的基本regex运算120,并且也能够将单独的基本regex运算120组合到解析树130中以共同用作一个或多个普通regex运算110。
一旦regex搜索请求被转换成基本regex运算120的解析树130,这些基本regex运算120可以在去重的数据上执行。此外,本实施例提供反向转换表/反向查询表,用于存储与regex搜索请求对应的结果。
关于反向转换表,尽管去重表存储系统存储地址到内部位置地址或“转换表地址”(其为数据的哈希功能),但是反向转换表有效地存储反面。因此,正在被搜索的符号被散列,以计算“转换表地址”,其然后被用于索引到反向转换表中。结果提供存储被查询的符号的系统地址。
通过使用用户库340(图3)将regex搜索请求转换成解析树130,并且通过仅使用基本regex运算120(即,(or)、(CAT)、(*)、(),它们分别对应于“或”、串联、闭包和括号运算),regex搜索请求可以被分成解析树130。
在本实施例中,去重DRAM存储特定内容,并且旨在仅存储内容的一个副本。此后,去重DRAM也存储地址转换表以指示每个特定的数据副本被存储的地方,并且也指示有多少个特定数据的副本存在。因此,单独的regex搜索请求可以通过使用地址转换表和反向地址转换表来执行,如上所述。这可以通过使用后序解析树遍历和通过使用扩展的转换表240(见图2)标记符号匹配来完成。扩展的转换表240是上述转换表和反向转换表的组合。
因此,可以使用特定的内容领域来搜索特定的数据内容以找到期望的内容的匹配。然而,此后,有效搜索运算也应该指示期望的内容被存储在何处。就是说,扩展的转换表240可以被用于确定数据是否存在于存储器中的某个地方,而不能用于确定数据被定位在何处。因此,本实施例也提供另外的反向转换表,其与扩展的转换表240功能分开,以通过确定期望的数据内容的匹配位置来确定期望的数据内容被存储在何处。
图2图示根据本发明的实施例的使用代表复杂的普通regex运算的解析树的方法,所述复杂的普通regex运算使用在不同时间步期间分别被执行以执行regex搜索请求的基本regex运算。
参考图2,示出本实施例的方法的解析树130、扩展转换表240和时间步进程。就是,图2描绘示例regex搜索的时间进程的示例。
以下进一步详细描述的regex模块可以将本示例的regex搜索请求(例如,((a(a|b))*,或者“a”与“a”或“b”串联的闭包)分成具有不同分支的基本regex运算120的解析树130。就是说,在输入regex搜索请求处,regex搜索请求可以被分成正则表达式解析树130。
regex搜索请求的基本regex运算120可以在时间步210中逻辑地发展。在时间步210处,仅匹配解析树130的对应分支的对应基本regex运算120的数据被向前移动。就是说,本实施例使用的数字逻辑317(见图3)在相应时间步210中单独地处理基本regex运算120中的每一个,并且过滤掉与输入regex搜索请求220不相关的不想要的或不实用的数据。在每个时间步210处,本实施例使用标记/标签/指针230来指示与regex搜索请求220对应的适格的匹配,因为它们对应于该对应时间步210的基本regex运算120。这可以通过使用转换表240和反向转换表实现。转换表240指示数据模型(例如,8字节模型)的大小。
在本示例中,regex搜索请求220被输入。然后,regex搜索请求220被用于生成解析树130,解析树130由共同形成regex搜索请求220的单独的基本regex运算120组成。然后,regex搜索请求220的单独的基本regex运算120中的每一个按由解析树130指示的顺序在转换表240上搜索。就是说,通过对每个时间步210在解析树130中向上移动一步,本实施例的数字逻辑317在时间步210中进程。
对于第一时间步210a,响应于本示例的输入regex搜索请求(例如,“a”或“b”与“a”串联的闭包),确定存储器中存储“a”或“b”的位置。相应地,具有“a”或“b”的所有位置被使用指针230标记。另外地,计数器250被用于指示从指针230有多少存储地址或存储器地址位置符合于符合条件的数据。相应地,存储器中存储“a”或“b”的所有位置被以指针230标记,并且因为仅一个存储地址的最大值可以存储“a”或“b”,每个指针230具有“1”的对应计数器250。就是说,指针230指示匹配数据在标记的存储地址(例如,起始存储地址)处开始,并且计数器250指示从包括匹配数据的标记的存储地址起的存储地址的数量,匹配数据可以通过使用转换表240来完成。
对于第二时间步210b,解析树130的下一个基本regex运算120被分析(例如,与“a”相邻或与“b”相邻的“a”)。相应地,在存储器中在第一时间步210a中被以指针230标记的位置中,确定是否每个标记的位置也与至少一个“a”相邻。就是说,本实施例的数字逻辑317核查在第一时间步210中被标记的每一项,以确定数据是否包括与“a”或“b”相邻的“a”。相应地,由于缺少与“b”相邻的“a”,在第二时间步210b期间,图2中所示的孤立的“b”不被标记。
最后,对于第三时间步210c,解析树130的下一和最后基本regex运算120被分析(例如,“a”与“a”或“b”的串联的闭包)。相应地,在存储器中在第二时间步210b中被以指针230标记的位置中,确定连续的存储地址包括与输入regex搜索请求220对应的数据。相应地,计数器250和指针230被更新以指示匹配输入regex搜索请求220的数据块。
相应地,通过使用解析树,一旦运算的时间步210被完成,可以确定搜索的模型是否存在(例如,是否存在模型匹配)。如果与regex搜索请求220对应的搜索的模型存在,如可以使用扩展的转换表240来确定,则可以通过使用反向转换表来确定搜索的模型位于哪个数据块。
就是说,本实施例使用反向转换表,因为regex运算使用与regex搜索请求对应的数据的位置。然而,传统的去重路径通常仅能够确认数据的出现或存在。就是说,去重写路径通常仅能够确认搜索的数据在存储器中存在,但不能提供数据的具体位置。相应地,反向转换表可以确保匹配的位置的确定,以跨时间步210行进,如上所述。反向转换表可以被物理行ID(PLID)/转换表地址(TTA)索引,并且由此可以存储存储地址。相对大的反向转换表可以被用于抵消4字节以下的完美哈希效率。反向转换表可以具有与扩展的转换表240相同的设计,并且可以在低粒度处添加另外的开销。
另外,应理解,通过使用分开编程的用于尺寸效率的“子串匹配”和“模型匹配”,并且通过使用预哈希共用范围(例如,[0-9]、[a-z]等),同时并行查找以提高速度,本实施例提供提高的性能和效率。
图3图示根据本发明的实施例的系统架构、regex模块架构和架构数据流的框图。
参考图3,示例regex模块310可以包括:计数器311,其可以用于对regex搜索请求中的期望模型的连续匹配的数量进行计数;位向量312,其可以突出匹配的位置;状态机313;符号分配器314;DMA缓冲器315,其可以被用于实现从主机或远程服务器经由驱动器330的数据转移;程序寄存器318,其可以为可编程的特征指定输入;以及,如上所述的,逻辑(例如,数字逻辑)317和树解析器316。
在本实施例中,应用程序(例如,计算机应用程序,或者用户界面)350可以接收regex搜索请求220(例如,来自用户),并且可以提供输入regex搜索请求220到驱动器330。然后,驱动器330可以生成解析树130,可以基于生成的解析树130对regex模块310编程,并且可以经过程序寄存器318和CPU 320的数据缓冲器315到达regex模块310。
相应地,regex模块310接收与regex搜索请求220对应的信息,并且可以执行搜索,以由此提供经驱动器330处理的返回值和存储地址。就是说,因为regex模块310的处理器可以被配置成与主机CPU 320通信,所以regex模块310可以使用从驱动器330和CPU 320提供的信息来生成值和存储地址。值和存储地址可以对应于图2的指针230和计数器250,并且可以通过regex模块310传递到驱动器330。
驱动器330然后处理值和存储地址以检索作为regex搜索请求220的结果找到的数据,并且将输出数据140输出到输入regex搜索请求220的应用程序350。
如上所述,本实施例的微架构可以使用指针230和计数器250。指针230可以被用于指示对于给定的时间步210的所有的识别出的regex匹配的位置,并且也可以用于实施串联运算。计数器250可以用于对包括与给定的regex搜索请求的返回值中的匹配对应的数据的连续存储地址的数量。计数器250也可以被用于指示自与指针230对应的起始存储地址起的匹配数据的长度或大小。相应地,通过协调使用指针230和计数器250,返回值能够使用指针230来指示regex开始的存储地址,并且能够使用计数器250来指示包括regex搜索请求的返回值的匹配的指针230后有多少个存储地址。
本实施例的微架构也可以包括逻辑(例如,数字逻辑)317。逻辑317可以被用于识别给定的串流何时是相同的,可以被用于执行同时允许匹配,并且可以被用于实施“闭包”和“或”运算。本实施例的微架构也可以使用分开的时间步210来在每个时间步210梳理解析树130的regex,并且执行串联。
在本实施例中,对于不同的应用程序,符号粒度可以是不同的(例如,取决于应用程序350的类型)。就是说,对于模型匹配和子串匹配,可以存在不同的应用程序用途。此外,符号可以是约1-8个字符每个模型,其中对于子串,每个模型的符合长度/字节数量加高。
另外,应理解,随着数据的粒度大小的减小,花费通常可能增大。就是说,与regex搜索对应的粒度越精细,或者模型越小,用于追踪数据模型的去重花费的量越大。相应地,粒度可以影响子串匹配。
在一些实施方式中,DRAM装置可以具有分开的模型和子串模块以应对不同的粒度,这也可以由驱动器330程序化。例如,可能存在这样的字符串,其具有的大小与去重区中的一个的大小不一致,诸如如果存在8字节的去重区,并且如果存在32字节的字符串,则本实施例的去重引擎将跨至少四个8字节的去重区留下行迹。然而,去重区可能与搜索的数据不一致。
此外,取决于应用程序350的类型,不同的特征可以与本实施例相关联。例如,对于网络安全应用程序,本实施例可以使用“SNORT”规则集匹配,并且可以通过使用字符类来实施细粒的粒度。对于生物信息应用程序,本实施例可以实施DNA系列的模体搜索(例如,与A、T、C或G对应的单个字符),或者可以实施植入模体搜索(例如,17-25个字符,尽管不匹配可能减小子串长度)。
对于金融应用程序,本实施例可以使用情感分析以推动金融决策,并且可以使用名词、动词、哈希标签等,其可以仅几个字符长。对于大数据分析应用程序,本实施例可以使用文本预处理、监视、文本挖掘、推荐和位图索引,并且通常实施较大的符号粒度(例如,对于模型,1-8字节,或者对于子串,多于8字节,其中减小的粒度对应于更高的花费)。对于非常小的粒度搜索,使用可以被扩展,或者符号可以被填补到较大尺寸(例如,8个字节)。
图4图示描绘使用滚动窗口扫描方法来避免跨去重行的子串非对准(substringnon-alignment)的方法的框图。
参考图4,本实施例可以另外地使用分开用于子串匹配或模型匹配的驱动器程序,并且可以分开解决具体问题以获得更好的效率。当子串或模型与去重单元不一致时(例如,子串跨去重行的不一致),可能出现一个潜在的问题。通过使用本发明的实施例的滚动窗口扫描方法可以解决这样的潜在问题。滚动窗口410的架构可以设定应用条件,诸如具有64个字节的长度“N”的最小子串匹配长度/最小字符串搜索长度420,并且可以建立与最小子串匹配长度的一般相等的粒度表/滚动窗口410(例如,32个字节的滚动窗口长度“N/2”),由此实现相对高的效率。
滚动窗口410可以确保不一致的regex匹配被检测到。例如,应用程序可以首先设置有关最小子串匹配能力的条件,其方式是通过限制它为表格粒度表的两倍。相应地,窗口可以在搜索的模型上“滚动”直到中点。然后,在每一点处,在滚动窗口410中被覆盖的模型可以被搜索。如果在滚动窗口410中发现匹配,则匹配的前缀和后缀可以被寻找(即,在地址位置之前处和之后处的数据),由此确保获得全部的期望行的匹配。仅在当存在搜索的行与对应的前缀和后缀的匹配时,该实例才能被识别为regex匹配,并且被记录在位向量312中。
关于滚动窗口扫描方法,符号粒度提供使用查来选择粒度(在粒度,输入搜索请求被分解并且被搜索)的能力。滚动窗口机制是一种新颖的机制,其有助于匹配比单个字符大并且在查找表中跨多个条目的符号。
本实施例也可以直接搜索靠近匹配位置的前缀和后缀值。相应地,如果regex搜索结果命中字符串的任何一部分,则可以搜索靠近匹配位置的前缀和后缀值。就是说,前缀和后缀值可以被搜索,以确保整行被匹配,即使不一致(即,即使是跨行分布的)。
相应地,描述的实施例提供一种系统架构,其与模块系统芯片微架构、内核驱动器和相关框架联接。实施例提供以下:具有模型和子串匹配的原位regex搜索,其方式为通过在regex模型中串流而不使数据进入到存储器装置中;搜索与预定义的符合粒度不一致的数据匹配的滚动窗口方法;实施反向转换表以追踪数据匹配在大容量存储系统中的位置;以及去重和原位regex搜索的双组合机制。另外,对于在中间粒度的regex,描述的实施例允许有效率的去重比。
尽管已经参考其示例性实施例特别示出和描述了本发明,但本领域的普通技术人员应理解,可以对其进行各种改变而不背离如由以下权利要求和它们的功能等同所限定的本发明的范围。因此,本发明的技术范围不应被理解为限制到说明书中描述的那些,而是由所附权利要求和它们的功能等同来确定。
Claims (10)
1.一种搜索存储在存储器中的数据的方法,所述方法包括:
接收regex搜索请求;
生成解析树,所述解析树包括与所述regex搜索请求对应的基本regex运算;
在相应的时间步中,单独地分析所生成的解析树的每一个基本regex运算;
通过以下方式确定与所分析的基本regex运算对应的数据的存储器地址位置:
使用转换表确定所述数据是否存在;并且
使用反向转换表确定所述数据的存储器地址位置,所述数据以去重格式存储;以及
在分析所生成的解析树的所有基本regex运算之后,输出匹配所述regex搜索请求的数据。
2.根据权利要求1所述的方法,进一步包括使用逻辑门处理所述基本regex运算,其中,所述基本regex运算包括串联运算、或运算、闭包运算或括号运算中的至少一个。
3.根据权利要求1所述的方法,其中,接收所述regex搜索请求包括在计算机应用程序处接收所述regex搜索请求。
4.根据权利要求1所述的方法,其中,生成包括所述基本regex运算的解析树包括:
在驱动器处接收所述regex搜索请求;和
使用所述驱动器生成所述解析树。
5.根据权利要求1所述的方法,其中,输出匹配所述regex搜索请求的数据包括生成与所述数据对应的值和地址位置。
6.根据权利要求1所述的方法,其中,确定与所分析的基本regex运算对应的数据的存储器地址位置包括:
使用指针指示所述数据的起始存储地址;和
使用计数器指示从具有所述数据的所述起始存储地址起的存储地址的数量。
7.根据权利要求1所述的方法,进一步包括以去重格式存储所述数据,其中,使用相同的逻辑存储所述数据并生成所述解析树。
8.根据权利要求1所述的方法,进一步包括:
设定最小子串匹配能力;
提供滚动窗口,所述滚动窗口覆盖与所述regex搜索请求对应的搜索模型的一部分;和
一旦在所述滚动窗口内找到匹配,搜索具有紧接在与所述滚动窗口内的所述匹配对应的数据的地址位置之前或之后的地址位置的数据。
9.一种用于搜索存储在存储器中的数据的系统,所述系统包括:
regex模块处理器,其配置成与主机CPU通信;和
存储器,其具有存储在其上的指令,当所述指令被所述处理器执行时,使所述处理器:
接收regex搜索请求;
生成解析树,所述解析树包括与所述regex搜索请求对应的基本regex运算;
在相应的时间步中,单独地分析所生成的解析树的每一个基本regex运算;
确定与所分析的基本regex运算对应的数据的存储器地址位置;和在所生成的解析树的所有基本regex运算被分析之后,输出匹配所述regex搜索请求的数据。
10.一种用于搜索存储在存储器中的数据的系统,所述系统包括:
应用程序,其配置成接收regex搜索请求;
驱动器,其配置成生成解析树,所述解析树包括与所述regex搜索请求对应的基本regex运算;和
regex模块,所述regex模块被配置成:
在相应的时间步中单独地分析所生成的解析树的每一个基本regex运算;并且
确定与所分析的基本regex运算对应的数据的存储器地址位置,
其中,所述应用程序被进一步配置成在所生成的解析树的所有基本regex运算被分析之后,输出匹配所述regex搜索请求的数据。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762442324P | 2017-01-04 | 2017-01-04 | |
US62/442,324 | 2017-01-04 | ||
US15/470,709 US10282436B2 (en) | 2017-01-04 | 2017-03-27 | Memory apparatus for in-place regular expression search |
US15/470,709 | 2017-03-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108268596A true CN108268596A (zh) | 2018-07-10 |
CN108268596B CN108268596B (zh) | 2023-05-30 |
Family
ID=62711736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711351959.XA Active CN108268596B (zh) | 2017-01-04 | 2017-12-15 | 搜索存储在存储器中的数据的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10282436B2 (zh) |
KR (1) | KR102219948B1 (zh) |
CN (1) | CN108268596B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109376281A (zh) * | 2018-09-21 | 2019-02-22 | 长沙学院 | 比特位序列、数据搜索方法、搜索系统、社会网络分析系统、舆情监控系统 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11106663B1 (en) * | 2018-08-10 | 2021-08-31 | Synopsys, Inc. | Speeding matching search of hierarchical name structures |
CN109977298B (zh) * | 2019-02-15 | 2021-07-23 | 中国科学院信息工程研究所 | 一种从正则表达式中抽取最长精确子串的方法 |
CN113704574B (zh) * | 2021-08-27 | 2024-02-09 | 北京市律典通科技有限公司 | 地址标准化的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1462004A (zh) * | 2002-05-31 | 2003-12-17 | 思科技术公司 | 用于产生和使用改进的树形位图数据结构的方法和装置 |
US20040244039A1 (en) * | 2003-03-14 | 2004-12-02 | Taro Sugahara | Data search system and data search method using a global unique identifier |
US20050080986A1 (en) * | 2003-10-08 | 2005-04-14 | Samsung Electronics Co., Ltd. | Priority-based flash memory control apparatus for XIP in serial flash memory,memory management method using the same, and flash memory chip thereof |
CN101582280A (zh) * | 2008-05-15 | 2009-11-18 | 索尼株式会社 | 记录/再现装置和信息处理方法 |
CN102929793A (zh) * | 2011-08-08 | 2013-02-13 | 株式会社东芝 | 包括键-值存储的存储器系统 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6438560B1 (en) | 1999-09-16 | 2002-08-20 | International Business Machines Corporation | Reuse of immutable objects during object creation |
US7451143B2 (en) * | 2002-08-28 | 2008-11-11 | Cisco Technology, Inc. | Programmable rule processing apparatus for conducting high speed contextual searches and characterizations of patterns in data |
US7899977B2 (en) | 2006-12-08 | 2011-03-01 | Pandya Ashish A | Programmable intelligent search memory |
TWI499909B (zh) | 2007-01-26 | 2015-09-11 | Cheriton David | 階層式不可改變的內容可定址的記憶體處理器 |
US8504791B2 (en) | 2007-01-26 | 2013-08-06 | Hicamp Systems, Inc. | Hierarchical immutable content-addressable memory coprocessor |
US8239340B2 (en) | 2008-04-11 | 2012-08-07 | Trevor Hanson | Message conduit systems with algorithmic data stream control and methods for processing thereof |
US9471713B2 (en) | 2009-02-11 | 2016-10-18 | International Business Machines Corporation | Handling complex regex patterns storage-efficiently using the local result processor |
US7916510B1 (en) * | 2009-08-10 | 2011-03-29 | Netlogic Microsystems, Inc. | Reformulating regular expressions into architecture-dependent bit groups |
US8843508B2 (en) | 2009-12-21 | 2014-09-23 | At&T Intellectual Property I, L.P. | System and method for regular expression matching with multi-strings and intervals |
KR101083425B1 (ko) | 2011-01-12 | 2011-11-14 | 주식회사 피앤피시큐어 | 데이터베이스 검출시스템과 이를 이용한 검출방법 |
US8495334B2 (en) * | 2011-02-06 | 2013-07-23 | International Business Machines Corporation | Address translation for use in a pattern matching accelerator |
US8799188B2 (en) | 2011-02-08 | 2014-08-05 | International Business Machines Corporation | Algorithm engine for use in a pattern matching accelerator |
US9501421B1 (en) | 2011-07-05 | 2016-11-22 | Intel Corporation | Memory sharing and page deduplication using indirect lines |
US8681794B2 (en) | 2011-11-30 | 2014-03-25 | Broadcom Corporation | System and method for efficient matching of regular expression patterns across multiple packets |
US20130275699A1 (en) | 2012-03-23 | 2013-10-17 | Hicamp Systems, Inc. | Special memory access path with segment-offset addressing |
US9098587B2 (en) | 2013-01-15 | 2015-08-04 | Oracle International Corporation | Variable duration non-event pattern matching |
US9898410B2 (en) | 2013-09-10 | 2018-02-20 | Intel Corporation | Hybrid main memory using a fine-grain level of remapping |
US9792063B2 (en) | 2014-01-15 | 2017-10-17 | Intel Corporation | Deduplication-based data security |
US9740631B2 (en) * | 2014-10-07 | 2017-08-22 | Google Inc. | Hardware-assisted memory compression management using page filter and system MMU |
US10353965B2 (en) | 2016-09-26 | 2019-07-16 | Splunk Inc. | Data fabric service system architecture |
-
2017
- 2017-03-27 US US15/470,709 patent/US10282436B2/en active Active
- 2017-10-18 KR KR1020170135440A patent/KR102219948B1/ko active IP Right Grant
- 2017-12-15 CN CN201711351959.XA patent/CN108268596B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1462004A (zh) * | 2002-05-31 | 2003-12-17 | 思科技术公司 | 用于产生和使用改进的树形位图数据结构的方法和装置 |
US20040244039A1 (en) * | 2003-03-14 | 2004-12-02 | Taro Sugahara | Data search system and data search method using a global unique identifier |
US20050080986A1 (en) * | 2003-10-08 | 2005-04-14 | Samsung Electronics Co., Ltd. | Priority-based flash memory control apparatus for XIP in serial flash memory,memory management method using the same, and flash memory chip thereof |
CN101582280A (zh) * | 2008-05-15 | 2009-11-18 | 索尼株式会社 | 记录/再现装置和信息处理方法 |
CN102929793A (zh) * | 2011-08-08 | 2013-02-13 | 株式会社东芝 | 包括键-值存储的存储器系统 |
Non-Patent Citations (1)
Title |
---|
王佳英等: "一种空间高效的多核并行近似子串匹配方法", 《计算机研究与发展》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109376281A (zh) * | 2018-09-21 | 2019-02-22 | 长沙学院 | 比特位序列、数据搜索方法、搜索系统、社会网络分析系统、舆情监控系统 |
CN109376281B (zh) * | 2018-09-21 | 2021-10-22 | 长沙学院 | 比特位序列、数据搜索方法、搜索系统、社会网络分析系统、舆情监控系统 |
Also Published As
Publication number | Publication date |
---|---|
US10282436B2 (en) | 2019-05-07 |
KR20180080684A (ko) | 2018-07-12 |
KR102219948B1 (ko) | 2021-02-25 |
CN108268596B (zh) | 2023-05-30 |
US20180188968A1 (en) | 2018-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2885728B1 (en) | Hardware implementation of the aggregation/group by operation: hash-table method | |
Kohonen et al. | Logic Principles of Content-Addressable Memories | |
US10114908B2 (en) | Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data | |
US9026485B2 (en) | Pattern-recognition processor with matching-data reporting module | |
CN108268596A (zh) | 搜索存储在存储器中的数据的方法和系统 | |
US9262500B2 (en) | Memory system including key-value store | |
US20070239673A1 (en) | Removing nodes from a query tree based on a result set | |
Salami et al. | AxleDB: A novel programmable query processing platform on FPGA | |
US11556590B2 (en) | Search systems and methods utilizing search based user clustering | |
CN105637524A (zh) | 硬件平台中的资产管理设备和方法 | |
US8838873B2 (en) | Methods and apparatus for data access by a reprogrammable circuit module | |
CN106909554A (zh) | 一种数据库文本表数据的加载方法及装置 | |
CN105760418B (zh) | 用于对关系数据库表进行交叉列搜索的方法和系统 | |
US9665601B1 (en) | Using a member attribute to perform a database operation on a computing device | |
Salami et al. | Accelerating hash-based query processing operations on FPGAs by a hash table caching technique | |
US20230222108A1 (en) | Data analysis acceleration architecture | |
US7505997B1 (en) | Methods and apparatus for identifying cached objects with random numbers | |
US20170322963A1 (en) | Apparatus and Method for Creating User Defined Variable Size Tags on Records in RDBMS | |
US11176138B2 (en) | Caching techniques for query runtime state | |
US11157692B2 (en) | Neural networks using data processing units | |
Hollaar et al. | A specialized architecture for textual information retrieval | |
Pollack et al. | Fragmentation | |
US9823841B2 (en) | Associating keys with data and compute objects in a storage compute device | |
US20100057685A1 (en) | Information storage and retrieval system | |
Lu | CloudNotes--Annotation Management in Cloud-Based Platforms |
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 |