CN117332126A - 字符串过滤方法、装置、加速卡及介质 - Google Patents
字符串过滤方法、装置、加速卡及介质 Download PDFInfo
- Publication number
- CN117332126A CN117332126A CN202311166977.6A CN202311166977A CN117332126A CN 117332126 A CN117332126 A CN 117332126A CN 202311166977 A CN202311166977 A CN 202311166977A CN 117332126 A CN117332126 A CN 117332126A
- Authority
- CN
- China
- Prior art keywords
- filtering
- target
- character string
- sub
- result
- 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.)
- Pending
Links
- 238000001914 filtration Methods 0.000 title claims abstract description 306
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000001133 acceleration Effects 0.000 title claims abstract description 18
- 239000000872 buffer Substances 0.000 claims description 25
- 230000003139 buffering effect Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 5
- 230000001502 supplementing effect Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 239000000306 component Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
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/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种字符串过滤方法、装置、加速卡及介质。该字符串过滤方法包括:从主计算设备接收待过滤数据和过滤参数,并存储在所述加速卡的存储区;通过所述加速卡的核,从所述存储区读取所述待过滤数据和所述过滤参数;通过所述核,利用所述过滤参数过滤所述待过滤数据,得到字符串过滤结果,存入所述存储区;从所述存储区返回所述字符串过滤结果到所述主计算设备。减少对主计算设备的算力占用,提高字符串过滤的效率。本公开实施例减少了对主计算设备的算力占用,提高字符串过滤的效率。
Description
技术领域
本公开涉及数据处理领域,尤其涉及一种字符串过滤方法、装置、加速卡及介质。
背景技术
字符串过滤是指在待过滤数据中找到与目标字符串符合预定关系的数据段。例如,ABC集团下属的实体名为ABCx、ABCy等。假设目标字符串是ABC,预定关系是“大于”,如果在待过滤数据中某一数据段“大于”目标字符串ABC,其很可能代表ABC集团下属的实体,则可以利用这一过滤出的信息进行后续数据处理。
现有技术中进行字符串过滤,是通过主计算设备执行数据库函数实现的,例如通过数据库中的过滤函数实现。但它会占用主计算设备的算力,而主计算设备还有其它任务执行,造成过滤效率低。
发明内容
有鉴于此,本公开实施例提供一种字符串过滤方法、装置、加速卡及介质,它能够减少对主计算设备的算力占用,提高字符串过滤的效率。
根据本公开实施例的第一方面,提供了一种字符串过滤方法,用于与主计算设备配套使用的加速卡,包括:
从所述主计算设备接收待过滤数据和过滤参数,并存储在所述加速卡的存储区;
通过所述加速卡的核,从所述存储区读取所述待过滤数据和所述过滤参数;
通过所述核,利用所述过滤参数过滤所述待过滤数据,得到字符串过滤结果,存入所述存储区;
从所述存储区返回所述字符串过滤结果到所述主计算设备。
根据本公开实施例的第二方面,提供了一种字符串过滤装置,用于与主计算设备配套使用的加速卡,包括:
第一存储单元,用于从所述主计算设备接收待过滤数据和过滤参数,并存储在所述加速卡的存储区;
第一读取单元,用于通过所述加速卡的核,从所述存储区读取所述待过滤数据和所述过滤参数;
过滤单元,用于通过所述核,利用所述过滤参数过滤所述待过滤数据,得到字符串过滤结果,存入所述存储区;
返回单元,用于从所述存储区返回所述字符串过滤结果到所述主计算设备。
根据本公开实施例的第三方面,提供了一种加速卡,包括:
存储区,用于存储从所述主计算设备接收的待过滤数据和过滤参数;
核,用于从所述存储区读取所述待过滤数据和所述过滤参数,利用所述过滤参数过滤所述待过滤数据,得到字符串过滤结果,存入所述存储区,并将所述字符串过滤结果从所述存储区返回到所述主计算设备。
根据本公开实施例的第四方面,提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码被处理器运行时,使处理器执行根据如上所述的方法。
根据本公开的实施例,当主计算设备需要进行字符串过滤时,将待过滤数据和过滤参数发送到加速卡执行。加速卡具有核和存储区。核具有专用的用于字符串过滤的处理能力,而存储区能够存储待过滤数据和过滤参数。通过核能够读取存储区中的待过滤数据和过滤参数,并能利用过滤参数过滤待过滤数据,将得到的过滤结果存储到存储区,发送回主计算设备。本公开实施例中,由于字符串过滤在加速卡中执行,解放了主计算设备的算力,且加速卡具有核与存储区分离的结构,通过核与存储区的配合,提高了字符串过滤的执行效率。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本公开实施例字符串过滤方法应用于的系统构架图;
图2为根据本公开一个实施例的字符串过滤方法的流程图;
图3为图2的步骤210在存储区存储待过滤数据的示意图;
图4为图2的步骤230的一种实施方式的流程图;
图5为图2的步骤230的一种实施方式的示意图;
图6为图4的步骤2301的一种实施方式的流程图;
图7A-图7E是图4的步骤2301的一种实施方式的示意图;
图8A示出了过滤参数的一种数据格式结构图;
图8B示出了图8A的情况下待过滤数据中的一个目标数据段的示意图;
图8C示出了过滤参数的另一种数据格式结构图;
图8D示出了图8C的情况下待过滤数据中的一个目标数据段的示意图;
图9为图4的步骤2302的一种实施方式的流程图;
图10为图4的步骤2302的一种实施方式的示意图;
图11为图9的步骤23023的一种实施方式的流程图;
图12为图9的步骤23023的一种实施方式的硬件支持图;
图13为根据本公开一个实施例的字符串过滤装置的框图;
图14为实施图2所示的字符串过滤方法的加速卡结构图。
具体实施方式
为了使本领域的人员更好地理解本申请实施例中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请实施例保护的范围。
下面结合本申请实施例附图进一步说明本申请实施例具体实现。
字符串过滤是指在待过滤数据中找到与目标字符串符合预定关系的数据段。例如,ABC集团下属的实体名为ABCx、ABCy等。假设待过滤数据是A市各实体的安检记录,安检记录的各数据段为安检记录的各个记录项,其中某些记录项包含实体名称等。如果要在所有安检记录中识别出ABC集团下属实体的安检数据,则将目标字符串设为ABC,将预定关系设为“大于”,将各个安检记录项与ABC比较,如果安检记录项“大于”目标字符串ABC,其很可能代表ABC集团下属的实体,则可以获取该安检记录项所在的安检记录用于进一步的数据处理。
现有技术中进行字符串过滤,是通过主计算设备执行数据库函数实现的,例如通过数据库中的过滤函数实现。但它会占用主计算设备的算力,而主计算设备还有其它任务执行,造成过滤效率低。
图1为本公开实施例字符串过滤方法应用于的系统构架图。该系统构架包括主计算设备和加速卡。主计算设备是执行字符串过滤所在的任务的设备。如上例中,如果字符串过滤具体是指在安检记录中识别出ABC集团下属的实体名,则主计算设备就是基于安检记录执行安检处理的设备。加速卡是插接到主计算设备上的、用于提高主计算设备在某一方面的处理速度的附属设备。在本公开实施例中,它用于提高主计算设备字符串过滤的速度。
主计算设备可以是客户端,也可以是服务器。它可以体现为桌面计算机、膝上型计算机、手机、PDA、专用终端,也可以体现为若干终端组成的集群,另外,它还可以是一台终端上划分出来的一部分,如虚拟机。加速卡可以体现为附属设备(如插接在卡槽上的卡),也可以体现为与主计算设备通过接口连接的另一台独立的设备。
本公开实施例中,主计算设备执行任务。当任务的一部分需要进行字符串过滤时(如在基于安检记录执行安检处理时需要在安检记录中识别出ABC集团下属的实体名),将与字符串过滤相关的数据传输到加速卡,由加速卡获得字符串过滤结果后,将字符串过滤结果传输回主计算设备,从而减轻主计算设备进行字符串过滤的负担,解放主计算设备的算力用于其它任务。由于加速卡具有核与存储区分离的结构,通过核与存储区的配合,提高了字符串过滤的执行效率。
如图1所示,主计算设备包括处理器和内存。处理器是用于执行主计算设备的任务的核心部件。内存是存储主计算设备的任务需要的数据、以及主计算设备执行任务产生的中间结果和最终结果的部件。与字符串过滤相关的数据一开始也存储在内存中。将需要执行字符串过滤时,处理器将与字符串过滤相关的数据从内存调出,通过主计算设备和加速卡之间的通道发送到加速卡。当加速卡具有标准的PCIe接口时,加速卡通过PCIe插槽插在主计算设备上。主计算设备和加速卡之间的通道是PCIe通道。
加速卡包括核和存储区。核是加速卡中专用于进行字符串过滤的处理单元。由于该核被设计专用于字符串过滤,因此,它能够提高字符串过滤的效率。存储区是加速卡中用于存储与字符串过滤相关的数据的专门区域。由于加速卡中既具有核(处理单元),又具有存储区,因此,它在字符串过滤时,不用调用主计算设备中的处理器和内存,避免来回占用主计算设备和加速卡之间的通道,从而减少传输开销。由于加速卡中处理单元与存储区分离的结构,使得它在进行字符串过滤时通过核与存储区的相互配合,达到更高的字符串过滤效率。
如图2所示,根据本公开的一个实施例,提供了一种字符串过滤方法200。该字符串过滤方法可以由图1的加速卡执行。该字符串过滤方法200包括:
步骤210、从主计算设备接收待过滤数据和过滤参数,并存储在加速卡的存储区;
步骤220、通过加速卡的核,从存储区读取待过滤数据和过滤参数;
步骤230、通过核,利用过滤参数过滤待过滤数据,得到字符串过滤结果,存入存储区;
步骤240、从存储区返回字符串过滤结果到主计算设备。
步骤210中的待过滤数据是指要在其中查找与目标字符串符合预定关系的数据段的数据。在前面的例子中,如果要在所有安检记录中识别出ABC集团下属实体的安检数据,则待过滤数据是所有安检记录。数据段是指数据的组成要素。例如,安检记录由安检记录项组成,则数据段是安检记录项。
步骤210中的过滤参数是在待过滤数据中进行字符串过滤所用的参数。它包括目标字符串和目标过滤操作符等。目标字符串是指在待过滤数据中过滤的字符串。在前面的例子中,如果要在所有安检记录中识别出ABC集团下属实体的安检数据,则目标字符串是ABC。在待过滤数据中过滤目标字符串,并不一定是要在待过滤数据中找到与目标字符串相同的数据段,而是要找到与目标字符串符合预定关系的数据段。目标过滤操作符即体现该预定关系的操作符。在前面的例子中,如果要在所有安检记录中识别出ABC集团下属实体的安检数据,则目标过滤操作符是“大于”。因为ABC集团下属的实体名为ABCx、ABCy等,在某一字段大于ABC的情况下,基本上表示该字段是ABC集团下属的实体。如后面的图8A和图8C所示,过滤参数还可以包括其它内容,如后结合图8A和图8C详述。
步骤230中的字符串过滤结果是指在待过滤数据中是否找到与目标字符串符合预定关系的数据段的结果。如果在待过滤数据中找到了与目标字符串符合预定关系的数据段,字符串过滤结果可以置第一值,例如置1。否则,字符串过滤结果可以置第二值,例如置0。
在步骤210中,主计算设备需要执行字符串过滤时,将待过滤数据和过滤参数发送到加速卡。加速卡将待过滤数据和过滤参数存储在存储区。在步骤220中,加速卡的核从存储区读取待过滤数据和过滤参数。在步骤230中,核利用过滤参数过滤待过滤数据,得到字符串过滤结果,存入存储区。例如,待过滤数据是“……ABCy……”。过滤参数中的目标字符串是“ABC”和目标过滤操作符是“>”,则得到字符串过滤结果“……1……”。在步骤240中,从加速卡的存储区返回字符串过滤结果到主计算设备。
在上述实施例中,当主计算设备需要进行字符串过滤时,将待过滤数据和过滤参数发送到加速卡执行。加速卡具有核和存储区。核具有专用的用于字符串过滤的处理能力,而存储区能够存储待过滤数据和过滤参数。通过核能够读取存储区中的待过滤数据和过滤参数,并能利用过滤参数过滤待过滤数据,将得到的过滤结果存储到存储区,发送回主计算设备。本公开实施例中,由于字符串过滤在加速卡中执行,解放了主计算设备的算力,且加速卡具有核与存储区分离的结构,通过核与存储区的配合,提高了字符串过滤的执行效率。
下面对步骤210-240进行详细描述。
在步骤210中,加速卡从主计算设备接收待过滤数据和过滤参数,并存储在加速卡的存储区。
待过滤数据的一个例子是A市所有实体的安检数据,因此,待过滤数据可能是不定长的。但是,加速卡的存储区是按照存储单元来存储数据的,如图3所示。因此,它会把不定长的待过滤数据按照存储单元长度分成存储单元存储。如图3所示,存储单元长度假设为128位。待过滤数据为“abcde3f4079mgtf4680ff98v9”,共25个字符,每个字符占用8位,共200位。因此,要将200位的前128位(16个字符)分配到第一存储单元,将200位的后72位(9个字符)分配到第二存储单元。
存储区存储过滤参数,也基于类似的原理。
在步骤220中,通过加速卡的核,从存储区读取待过滤数据和过滤参数。如图3所示,核从存储区的第一存储单元和第二存储第一连续读出待过滤数据“abcde3f4079mgtf4680ff98v9”,并读取过滤参数(未示)。
在步骤230中,通过核,利用过滤参数过滤待过滤数据,得到字符串过滤结果,存入存储区。
如图4所示,在一个实施例中,步骤230可以包括:
步骤2301、将待过滤数据分成多个目标数据段;
步骤2302、基于每个目标数据段与目标字符串是否符合目标过滤操作符,确定目标数据段对应的子过滤结果;
步骤2303、将多个目标数据段对应的子过滤结果整合成字符串过滤结果,存入存储区。
待过滤数据中包含不同类型的数据段。例如,A市各实体的安检记录包含实体名称、实体规模、实体成立年限、实体性质等多个类型的记录项。只有在一种类型的数据段中找到与目标字符串符合目标过滤操作符的匹配,才能认为过滤成功,在多个连续的数据段中找到与目标字符串的匹配没有意义。因此,在步骤2301中,要按照目标数据段长度,把待过滤数据分成多个目标数据段。例如,实体名称、实体规模、实体成立年限等一般都各自占用40位。图3的存储区中,每个字符占用8位,这时将图3的“abcde”作为第一个目标数据段,将“3f407”作为第二个目标数据段,将“9mgtf”作为第三个目标数据段,将“4680f”作为第四个目标数据段,将“f98v9”作为第五个目标数据段,如图5所示。
接着,在步骤2302中,基于每个目标数据段与目标字符串是否符合目标过滤操作符,确定目标数据段对应的子过滤结果。如图5所示,目标字符串为“abcde”,目标过滤操作符是“=”。第一个目标数据段“abcde”与目标字符串“abcde”相等,第一个目标数据段对应的子过滤结果为“1”。第二个目标数据段“3f407”与目标字符串“abcde”不相等,第二个目标数据段对应的子过滤结果为“0”。第三个目标数据段“9mgtf”与目标字符串“abcde”不相等,第三个目标数据段对应的子过滤结果为“0”。第四个目标数据段“4680f”与目标字符串“abcde”不相等,第四个目标数据段对应的子过滤结果为“0”。第五个目标数据段“f98v9”与目标字符串“abcde”不相等,第五个目标数据段对应的子过滤结果为“0”。
接着,在步骤2303中,将多个目标数据段对应的子过滤结果整合成字符串过滤结果,存入存储区。如图5所示,将五个目标数据段对应的子过滤结果“1”、“0”、“0”、“0”、“0”整合为“10000”,存入存储区。
步骤2301-2303的好处是,不是在待过滤数据中整体找到与目标字符串符合目标过滤操作符的匹配就认为过滤成功,而是在待过滤数据的一种特定类型的数据段中找到与目标字符串符合目标过滤操作符的匹配,才认为过滤成功,提高了字符串过滤的准确率。
下面对上述的步骤2301的具体实施进行详细描述。
如图6所示,在一个实施例中,步骤2301包括:
步骤23011、将待过滤数据按照存储区的存储单元长度,存储到存储区的多个连续存储单元;
步骤23012、将起始指针位置初始化为多个连续存储单元中的第一个存储单元的首位位置,将目标存储单元初始化为第一个存储单元;
步骤23013、执行第一循环过程,第一循环过程包括:从起始指针位置开始,在目标存储单元中,按照目标数据段长度截取目标数据段,并对起始指针位置增加目标数据段长度,且如果起始指针位置变成大于存储单元长度,从起始指针位置中减去存储单元长度,并将目标存储单元更新为下一个存储单元,其中,存储单元长度大于目标数据段长度。
对于步骤23011,上面已结合图3例示了将待过滤数据按照存储单元长度,存储到存储区的多个连续存储单元的过程,故不再赘述。
下面结合图7A-图7E详细描述步骤23012-23013的具体过程。
如图7A所示,目标数据段长度与存储单元长度一般不相同。通常,目标数据段长度小于存储单元长度。这时,需要从存储单元中一个个地截取出对应的目标数据段。截取过程是循环的。为了表示该截取过程,设置起始指针位置和目标存储单元。起始指针位置是当前循环中要截取的目标数据段的首位位置。目标存储单元是起始指针位置所在的存储单元。
一开始,将多个连续存储单元中的第一个存储单元的首位位置作为起始指针位置,如图7A中的第一存储单元中的“起始指针位置1”。将第一存储单元作为目标存储单元。
如图7A所示,从起始指针位置1开始,在第一存储单元中,按照目标数据段长度40位截取第一目标数据段,即“abcde”,占用位1-位40。接着,对起始指针位置1增加目标数据段长度40。起始指针位置1变成41。
如图7B所示,从起始指针位置41开始,在第一存储单元中,按照目标数据段长度40位截取第二目标数据段,即“3f407”,占用位41-位80。接着,对起始指针位置41增加目标数据段长度40。起始指针位置41变成81。
如图7C所示,从起始指针位置81开始,在第一存储单元中,按照目标数据段长度40位截取第三目标数据段,即“9mgtf”,占用位81-位120。接着,对起始指针位置81增加目标数据段长度40。起始指针位置81变成121。
如图7D所示,从起始指针位置121开始,在第一存储单元中,按照目标数据段长度40位截取第四目标数据段,但第一存储单元中只剩字符“4”,即最后8位。接着,从第二存储单元的开头取剩下的32位,即取“680f”。第四目标数据段为“4680f”,占用第一存储单元的位121-128、以及第二存储单元的位1-32。接着,对起始指针位置121增加目标数据段长度40。起始指针位置121变成161。由于161大于128,从161中减去128,得到33。起始指针位置121变成33。目标存储单元变成第二存储单元。
如图7E所示,从起始指针位置33开始,在第二存储单元中,按照目标数据段长度40位截取第五目标数据段,即“f98v9”,占用位33-位72。此时,待过滤数据已经全部取完,第一循环过程结束。得到的目标数据段有“abcde”、“3f407”、“9mgtf”、“4680f”、和“f98v9”。
步骤23011-23013的好处是,通过设置起始指针位置、和目标存储单元,并设置第一循环过程,使得能够在待过滤数据中,按照起始指针位置、和目标存储单元循环取出目标数据段,提高了目标数据段的分割效率。
上面的描述中提到目标数据段长度。下面描述一下目标数据段长度是如何确定的。
图8A示出了一种过滤参数的数据结构。在图8A的实施例中,过滤参数包括目标字符串、目标过滤操作符、待过滤数据格式和目标数据段数目。目标字符串和目标过滤操作符在上文中已经详细描述。
待过滤数据格式是指待过滤数据的存储格式,具体是指是否带有数据段长度字段。例如,如果待过滤数据中带有数据段长度字段,待过滤数据格式置第一值,如“1”;如果待过滤数据中不带有数据段长度字段,待过滤数据格式置第二值,如“0”。
如果带有数据段长度字段,从数据段长度字段中就可以确定目标数据段长度。如果不带有数据段长度字段,还需要额外确定目标数据段长度。图8B示出了图8A的情况下待过滤数据中的一个目标数据段的示意图。如图8B所示,“4000”是数据段长度字段,每个字符占8位,因此,共占用32位。第一位的4表示目标数据长度为4*8=32位,因此,在“4000”的后面取32位,即“abcd”,就得到相应的目标数据段。
注意,图8B中的数据段长度字段的字符是由低位到高位排列的。第一个字符4是最低8位表示的字符。如果数据段长度字段为“4200”,可能代表目标数据段长度为24*8=192。应当理解,在其它实施例中,数据段长度字段的字符也可以由高位到低位排列。
目标数据段数目是指待过滤数据中含有的目标数据段的数目。关于这一点,将在后文中详细描述。
图8C示出了另一种过滤参数的数据结构。如图8A的区别是,在图8C中,待过滤数据格式指示待过滤数据不带有数据段长度字段。由于待过滤数据不带有数据段长度字段,过滤参数中就需要含有数据段长度信息。可以从数据段长度信息中读出目标数据段长度。例如,数据段长度信息为5,因此,可以读出目标数据段长度为5*8=40位。
图8D示出了图8C的情况下待过滤数据中的一个目标数据段的示意图。可见,待过滤数据中不带有数据段长度字段。根据目标数据段长度40位,可以获取5个字符的目标数据段“abcde”。
上述目标数据段长度的确定方式的好处是,通过设置待过滤数据格式,可以让其指示待过滤数据带有数据段长度,也可以让其指示待过滤数据不带有数据段长度。在带有数据段长度和不带有数据段长度时,目标数据段长度的确定方式不同,从而提高了确定目标数据段长度的灵活性。
下面对上述的步骤2302的具体实施进行详细描述。
在一个实施例中,如图9所示,步骤2302包括:
步骤23021、将目标数据段和目标字符串分别按照存储单元长度进行补位,得到补位后目标数据段和补位后目标字符串;
步骤23022、将补位后目标数据段分成第一数目个第一子段,将补位后目标字符串分成第一数目个第二子段;
步骤23023、基于每个第一子段、以及与第一子段对应的第二子段是否符合目标过滤操作符,确定目标数据段对应的子过滤结果。
在步骤23021中,将目标数据段按照存储单元长度进行补位,得到补位后目标数据段。如图10所示,补位前的目标数据段是“abcde”,按照128位进行补位后(不足128位的用0补位),得到补位后的目标数据段“abcde00000000000”,这里的每个字符代表8位。将目标字符串按照存储单元长度进行补位,得到补位后目标字符串。如图10所示,补位前的目标字符串是“abcde”,按照128位进行补位后(不足128位的用0补位),得到补位后的目标字符串“abcde00000000000”。
补位的作用在于:虽然前面的实施例中,每个目标数据段具有同样的目标数据段长度,但实际上,各个目标数据段的目标数据段长度可以不同。例如,实体名称、实体规模、实体成立年限等的长度一般会不同,因此,对应的目标数据段长度可能不同。在各个目标数据段的目标数据段长度不同的情况下,为了方便比较,比较可行的方法是将它们按照一个较大的标准位数进行补位,从而统一后续的比较过程。
接着,在步骤23022中,将补位后目标数据段分成第一数目个第一子段,将补位后目标字符串分成第一数目个第二子段。如图10所示,在等分的情况下,如果第一数目为4,将补位后的目标数据段“abcde00000000000”分成4个第一子段“abcd”、“e000”、“0000”和“0000”,将补位后的目标字符串“abcde00000000000”也分成4个第二子段“abcd”、“e000”、“0000”和“0000”。
接着,在步骤23023中,可以确定每个第一子段、以及与第一子段对应的第二子段是否符合目标过滤操作符,得到是否符合目标过滤操作符的结果,并根据这些结果,得到该目标数据段对应的子过滤结果。如图10所示,目标过滤操作符为“=”。确定第一个第一子段“abcd”、第一个第二子段“abcd”相等,第二个第一子段“e000”、第二个第二子段“e000”相等,第三个第一子段“0000”、第三个第二子段“0000”相等,第四个第一子段“0000”、第一个第二子段“0000”相等。由于这些判定结果都是相等,因此子过滤结果是第一值,如“1”。
步骤23021-23023的优点在于,将补位后目标数据段分成第一数目个第一子段,将补位后目标字符串分成第一数目个第二子段,这样就可以设置并行的进程来并行判定每个第一子段和对应的第二子段是否符合目标过滤操作符,相对于串行逐位逐字符判定目标数据段和目标字符串是否符合目标过滤操作符的方案,大大提高了确定子过滤结果的效率。
下面对上述的步骤23023的具体实施进行详细描述。
在一个实施例中,如图11所示,步骤23023包括:
步骤230231、针对每个第一子段,分别确定第一子段是否大于、小于和等于与第一子段对应的第二子段的第一比较结果、第二比较结果、和第三比较结果;
步骤230232、基于多个第一子段的第一比较结果、第二比较结果和第三比较结果,确定与多个过滤操作符对应的过滤操作结果;
步骤230233、从与多个过滤操作符对应的过滤操作结果中,获取与目标过滤操作符对应的过滤操作结果,作为子过滤结果。
下面结合图12的存储区内部结构图,对步骤230231-230233进行详细描述。
如图12所示,存储区包含目标数据段补位寄存器、目标字符串补位寄存器、第一数目个第一子段缓存器、第一数据个第二子段缓存器、与第一数目个第一子段对应的第一数目个比较器组、和过滤操作结果缓存器组。
目标数据段补位寄存器用于对目标数据段进行补位,并存储补位后的目标数据段。如图12所示,补位前的目标数据段为“abcde”,在目标数据段补位寄存器中将不足存储单元长度的部分补成“0”,得到补位后的目标数据段“abcde00000000000”,放置在目标数据段补位寄存器中。补位前的目标字符串为“abcd”,在目标字符串补位寄存器中将不足存储单元长度的部分补成“0”,得到补位后的目标字符串“abcd000000000000”,放置在目标字符串补位寄存器中。
第一数目个第一子段缓存器分别缓存第一数目个第一子段。第一数目个第二子段缓存器与第一数目个第一子段缓存器一一对应,用于缓存第一数目个第二子段。如图12所示,4个第一子段缓存器分别缓存补位后的目标数据段“abcde00000000000”分割成的4个第一子段“abcd”、“e000”、“0000”和“0000”。4个第二子段缓存器分别缓存补位后的目标字符串“abcd000000000000”分割成的4个第二子段“abcd”、“0000”、“0000”和“0000”。
在步骤230231中,将第一子段、和与第一子段对应的第二子段,输入与第一子段对应的比较器组,得到第一比较结果、第二比较结果、和第三比较结果。具体地说,从第一子段缓存器获取第一子段,从与第一子段缓存器对应的第二子段缓存器获取第二子段,将获取的第一子段和第二子段输入与第一子段对应的比较器组。每个比较器组包括大于比较器、小于比较器、和等于比较器。大于比较器输出第一比较结果。小于比较器输出第二比较结果。等于比较器输出第三比较结果。
如图12所示,从第一个第一子段缓存器获取第一个第一子段“abcd”,从第一个第二子段缓存器获取第一个第二子段“abcd”,将第一个第一子段“abcd”和第一个第二子段“abcd”输入第一个比较器组。由于“abcd”等于“abcd”,因此第一个比较器组中的等于比较器输出的第三比较结果为第一值,例如“1”,大于比较器和小于比较器分别输出的第一比较结果和第二比较结果为第二值,例如“0”。
同理,从第二个第一子段缓存器获取第二个第一子段“e000”,从第二个第二子段缓存器获取第二个第二子段“0000”,将第二个第一子段“e000”和第二个第二子段“0000”输入第二个比较器组。由于“e000”大于“0000”(字符串比较时符号的值大于数字的值),因此第二个比较器组中的大于比较器输出的第一比较结果为第一值,例如“1”,小于比较器和等于比较器分别输出的第二比较结果和第三比较结果为第二值,例如“0”。
从第三个第一子段缓存器获取第三个第一子段“0000”,从第三个第二子段缓存器获取第三个第二子段“0000”,将第三个第一子段“0000”和第三个第二子段“000”输入第三个比较器组。由于“0000”等于“0000”,因此第三个比较器组中的等于比较器输出的第三比较结果为第一值,例如“1”,大于比较器和小于比较器分别输出的第一比较结果和第二比较结果为第二值,例如“0”。
从第四个第一子段缓存器获取第四个第一子段“0000”,从第四个第二子段缓存器获取第四个第二子段“0000”,将第四个第一子段“0000”和第四个第二子段“0000”输入第四个比较器组。由于“0000”等于“0000”,因此第四个比较器组中的等于比较器输出的第三比较结果为第一值,例如“1”,大于比较器和小于比较器分别输出的第一比较结果和第二比较结果为第二值,例如“0”。
接着,在步骤230232中,基于多个第一子段的第一比较结果、第二比较结果和第三比较结果,确定与多个过滤操作符对应的过滤操作结果。过滤操作结果表示目标数据段与目标字符串是否符合相应的过滤操作符。
例如,假设有6种过滤操作符,分别是“=”、“≠”、“>”、“≧”、“<”和“≦”。
“=”对应的过滤操作结果为第一值(如“1”),表示目标数据段与目标字符串相等。“=”对应的过滤操作结果为第二值(如“0”),表示目标数据段与目标字符串不相等。
“≠”对应的过滤操作结果为第一值(如“1”),表示目标数据段与目标字符串不相等。“≠”对应的过滤操作结果为第二值(如“0”),表示目标数据段与目标字符串相等。
“>”对应的过滤操作结果为第一值(如“1”),表示目标数据段大于目标字符串。“>”对应的过滤操作结果为第二值(如“0”),表示目标数据段不大于目标字符串。
“≧”对应的过滤操作结果为第一值(如“1”),表示目标数据段大于等于目标字符串。“≧”对应的过滤操作结果为第二值(如“0”),表示目标数据段小于目标字符串。
“<”对应的过滤操作结果为第一值(如“1”),表示目标数据段小于目标字符串。“<”对应的过滤操作结果为第二值(如“0”),表示目标数据段不小于目标字符串。
“≦”对应的过滤操作结果为第一值(如“1”),表示目标数据段小于等于目标字符串。“≦”对应的过滤操作结果为第二值(如“0”),表示目标数据段大于目标字符串。
注意,上述“=”、“>”、“<”是指目标数据段整体等于、大于、小于目标字符串整体,它与图12中各比较器组中的等于比较器、大于比较器、小于比较器判定的等于、大于、小于是不一样的。图12中各比较器组中的等于比较器、大于比较器、小于比较器判定的是目标数据段分成的第一子段、和目标字符串分成的第二子段的等于、大于、小于。因此,在步骤230232中,要根据各比较器组中的等于比较器、大于比较器、小于比较器判定的等于、大于、小于的结果,判定目标数据段整体等于、不等于、大于、大于等于、小于、小于等于目标字符串整体。如图12所示,由于比较器组1、比较器组3、比较器组4的等于比较器的第三比较结果为1,但比较器组2的大于比较器的第一比较结果为1,说明目标数据段的前面一部分字符与目标字符串的前面一部分字符相同,后面一部分字符与目标字符串的后面一部分字符也相同,中间一部分字符大于目标字符串的中间一部分字符,因此,整体而言,目标数据段是大于目标字符串的。
图12仅仅是针对过滤操作符为“>”的情况进行了举例。针对过滤操作符为“=”、“≠”、“≧”、“<”和“≦”的情况,下面结合下面的表1详细讲解判定方法。
/>
/>
表1
针对过滤操作符为“=”的情况,如果多个第一子段的第三比较结果都为第一值(例如“1”),确定“=”对应的过滤操作结果为第一值(例如“1”)。反之,确定“=”对应的过滤操作结果为第二值(例如“0”)。也就是说,只有每个第一子段与相应的第二子段都相同,目标数据段与目标字符串整体才是相同的。
以上述表1的第一条为例,待过滤数据格式为1,说明目标数据段是带有数据段长度字段的。对于目标数据段"4,0,0,0,a,b,c,d",从数据段长度字段"4,0,0,0"确定目标数据段长度为4*8=32位,即4个字符,因此,目标数据段为"a,b,c,d"。补位后目标数据段为"a,b,c,d,0,0,0,0,0,0,0,0,0,0,0,0",分割成的4个第一字段为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。目标字符串为"a,b,c,d"。补位后目标字符串为"a,b,c,d,0,0,0,0,0,0,0,0,0,0,0,0",分割成的4个第二字段为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。这种情况下,图12中4个比较器组的第三比较结果(等于比较器的输出)都是1。因此,“=”对应的过滤操作结果为1。
如果目标数据段变成"3,0,0,0,a,b,c",补位后目标数据段为"a,b,c,0,0,0,0,0,0,0,0,0,0,0,0,0",分割成的4个第一字段为"a,b,c,0“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。4个第二字段仍然为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。图12中比较器组1的第三比较结果(等于比较器的输出)不是1。因此,“=”对应的过滤操作结果为0。
针对过滤操作符为“≠”的情况,如果多个第一子段的第三比较结果不都为第一值(例如“1”),确定“≠”对应的过滤操作结果为第一值(例如“1”)。反之,确定“≠”对应的过滤操作结果为第二值(例如“0”)。也就是说,只要有一个第一子段与相应的第二子段不相同,目标数据段与目标字符串整体就是不同的。
以上述表1的第二条为例。对于目标数据段"4,0,0,0,a,b,c,d",补位后目标数据段分割成的4个第一字段为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。补位后目标字符串分割成的4个第二字段为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。因此,图12中4个比较器组的第三比较结果(等于比较器的输出)都是1。因此,“≠”对应的过滤操作结果为0。
如果目标数据段变成"3,0,0,0,a,b,c",补位后目标数据段分割成的4个第一字段为"a,b,c,0“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。4个第二字段仍然为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。图12中比较器组1的第三比较结果(等于比较器的输出)不是1。因此,“≠”对应的过滤操作结果为1。
针对过滤操作符为“>”的情况,如果多个第一子段中的至少一个连续的第一子段的第一比较结果都为第一值(例如“1”),其余的第一子段的第三比较结果都为第一值(例如“1”),确定大于操作符对应的过滤操作结果为第一值(例如“1”)。反之,确定大于操作符对应的过滤操作结果为第二值(例如“0”)。也就是说,如图12所示,目标数据段可能前面有一部分字符与目标字符串的前面一部分字符相同,后面有一部分字符与目标字符串的后面一部分字符也相同,中间有一部分字符大于目标字符串的中间一部分字符。整体而言,目标数据段是大于目标字符串的。
以上述表1的第三条为例。对于目标数据段"4,0,0,0,a,b,c,d",补位后目标数据段分割成的4个第一字段为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。补位后目标字符串分割成的4个第二字段为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。因此,图12中4个比较器组的第三比较结果(等于比较器的输出)都是1。因此,“>”对应的过滤操作结果为0。
如果目标数据段变成"3,0,0,0,a,b,c",补位后目标数据段分割成的4个第一字段为"a,b,c,0“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。4个第二字段仍然为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。图12中比较器组1的第三比较结果(等于比较器的输出)不是1,但其第一比较结果(大于比较器的输出)也不是1。因此,“>”对应的过滤操作结果为0。
针对过滤操作符为“≧”的情况,如果多个第一子段中的至少一个连续的第一子段的第一比较结果都为第一值(例如“1”),其余的第一子段的第三比较结果都为第一值(例如“1”),或者多个第一子段的第三比较结果都为第一值(例如“1”),确定大于等于操作符对应的过滤操作结果为第一值(例如“1”)。反之,确定大于等于操作符对应的过滤操作结果为第二值(例如“0”)。
以上述表1的第四条为例。对于目标数据段"4,0,0,0,a,b,c,d",补位后目标数据段分割成的4个第一字段为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。补位后目标字符串分割成的4个第二字段为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。因此,图12中4个比较器组的第三比较结果(等于比较器的输出)都是1。因此,“≧”对应的过滤操作结果为1。
如果目标数据段变成"3,0,0,0,a,b,c",补位后目标数据段分割成的4个第一字段为"a,b,c,0“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。4个第二字段仍然为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。图12中比较器组1的第三比较结果(等于比较器的输出)不是1,但其第一比较结果(大于比较器的输出)也不是1。因此,“≧”对应的过滤操作结果为0。
针对过滤操作符为“<”的情况,如果多个第一子段中的至少一个连续的第一子段的第二比较结果都为第一值(例如“1”),其余的第一子段的第三比较结果都为第一值(例如“1”),确定小于操作符对应的过滤操作结果为第一值(例如“1”)。反之,确定小于操作符对应的过滤操作结果为第二值(例如“0”)。也就是说,目标数据段可能前面有一部分字符与目标字符串的前面一部分字符相同,后面有一部分字符与目标字符串的后面一部分字符也相同,中间有一部分字符小于目标字符串的中间一部分字符。整体而言,目标数据段是小于目标字符串的。
以上述表1的第五条为例。对于目标数据段"4,0,0,0,a,b,c,d",补位后目标数据段分割成的4个第一字段为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。补位后目标字符串分割成的4个第二字段为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。因此,图12中4个比较器组的第三比较结果(等于比较器的输出)都是1。因此,“<”对应的过滤操作结果为0。
如果目标数据段变成"3,0,0,0,a,b,c",补位后目标数据段分割成的4个第一字段为"a,b,c,0“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。4个第二字段仍然为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。图12中比较器组1的第三比较结果(等于比较器的输出)不是1,其第二比较结果(小于比较器的输出)是1。因此,“<”对应的过滤操作结果为1。
针对过滤操作符为“≦”的情况,如果多个第一子段中的至少一个连续的第一子段的第二比较结果都为第一值(例如“1”),其余的第一子段的第三比较结果都为第一值(例如“1”),或者多个第一子段的第三比较结果都为第一值(例如“1”),确定小于等于操作符对应的过滤操作结果为第一值(例如“1”)。否则,确定小于等于操作符对应的过滤操作结果为第二值(例如“0”)。
以上述表1的第六条为例。对于目标数据段"4,0,0,0,a,b,c,d",补位后目标数据段分割成的4个第一字段为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。补位后目标字符串分割成的4个第二字段为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。因此,图12中4个比较器组的第三比较结果(等于比较器的输出)都是1。因此,“≦”对应的过滤操作结果为1。
如果目标数据段变成"3,0,0,0,a,b,c",补位后目标数据段分割成的4个第一字段为"a,b,c,0“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。4个第二字段仍然为"a,b,c,d“、”0,0,0,0“、”0,0,0,0”、”0,0,0,0"。图12中比较器组1的第三比较结果(等于比较器的输出)不是1,但其第二比较结果(小于比较器的输出)是1。因此,“≦”对应的过滤操作结果为1。
对于表1中的第七至十二条,它对应于目标数据段不带有数据段长度字段的情况。目标数据段不带有数据段长度字段,但是可以从过滤参数的数据段长度信息中得到目标数据段长度。表1中的第七至十二条中,目标数据段长度为5。除了这一点,它与第一至六条是类似的。可以通过与第一至六条类似的方式,确定六种过滤操作符对应的过滤操作结果,不再赘述。
上述根据多个比较器组的第一比较结果、第二比较结果、第三比较结果,确定与六种过滤操作符对应的过滤操作结果的具体实施例的有益效果是,可以针对每种过滤操作符,设计多个比较器组的第一比较结果、第二比较结果、第三比较结果需要满足的条件,并根据该条件,确定与过滤操作符对应的过滤操作结果,从而提高了确定过滤操作结果的效率和准确性。
接着,在步骤230233中,从与多个过滤操作符对应的过滤操作结果中,获取与目标过滤操作符对应的过滤操作结果,作为子过滤结果。具体地,将与多个过滤操作符对应的过滤操作结果缓存到如图12所示的过滤操作结果缓存器组,并从过滤操作结果缓存器组中获取与目标过滤操作符对应的过滤操作结果,作为子过滤结果。
过滤操作结果缓存器组是指用于缓存多个过滤操作符对应的过滤操作结果的缓存器组。如图12所示,它可以包含“=”、“≠”、“>”、“≧”、“<”和“≦”分别对应的过滤操作结果缓存器,用于缓存“=”、“≠”、“>”、“≧”、“<”和“≦”分别对应的过滤操作结果。它还可以包含备用缓存器,用于缓存之后可能会增加的过滤操作符对应的过滤操作结果。
通过图12的硬件结构,同时获得了各种过滤操作符对应的过滤操作结果,放在过滤操作结果缓存器组。当获得了实际需要使用的目标过滤操作符后,就从过滤操作结果缓存器组中相应的位置取出,达到了无论需要何种过滤操作符对应的过滤操作结果,都能够快速获得的效果,提高了获取过滤操作结果的效率。虽然,在图12中对多种过滤操作符都要进行过滤,但图12是硬件实现,是由图12的硬件一次性针对多种过滤操作符同时过滤的,避免了软件代码顺序进行过滤带来的低效率。另外,图12中,虽然每个比较器组的大于比较器、小于比较器、等于比较器要同时进行大于、小于、等于的比较,但由于是硬件实现,可以高效同时实现多组大于、小于、等于的比较,提高了过滤处理的效率。
步骤230231-230233的有益效果是,借助于硬件比较的方式,一次性针对每个第一子段,获得大于、小于、等于第二子段的三种比较结果,并基于每个比较器组中的三种比较结果,一次性针对多种过滤操作符,生成多种过滤操作符对应的过滤操作结果。从与多个过滤操作符对应的过滤操作结果中,可以根据需要选取与目标过滤操作符对应的过滤操作结果。这种方式既一次性满足多种需要,提高过滤的多样性,同时采用硬件的方式提高过滤效率。
另外,如图8A和图8C所示,过滤参数还包括目标数据段数目。这个字段主要是用于确定步骤2302的执行次数的。在步骤2301后,可以基于目标数据段数目,确定步骤2302的执行次数。一般来说,该执行次数与目标数据段数目相同。然后,基于确定的执行次数执行步骤2302。设置目标数据段数目的好处是,能够预先获得确定目标数据段对应的子过滤结果的执行次数,从而控制图12的硬件的循环执行次数,提高硬件利用率。
根据本申请实施例中的再一方面,参照图13,示出了本实施例中提供的一种字符串过滤装置300的结构图,该字符串过滤装置300包括:
第一存储单元310,用于从主计算设备接收待过滤数据和过滤参数,并存储在加速卡的存储区;
第一读取单元320,用于通过加速卡的核,从存储区读取待过滤数据和过滤参数;
过滤单元330,用于通过核,利用过滤参数过滤待过滤数据,得到字符串过滤结果,存入存储区;
返回单元340,用于从存储区返回字符串过滤结果到主计算设备。
可选地,过滤参数包括目标字符串和目标过滤操作符;
过滤单元330具体用于:
将待过滤数据分成多个目标数据段;
基于每个目标数据段与目标字符串是否符合目标过滤操作符,确定目标数据段对应的子过滤结果;
将多个目标数据段对应的子过滤结果整合成字符串过滤结果,存入存储区。
可选地,过滤单元330具体用于:
将待过滤数据按照存储区的存储单元长度,存储到存储区的多个连续存储单元;
将起始指针位置初始化为多个连续存储单元中的第一个存储单元的首位位置,将目标存储单元初始化为第一个存储单元;
执行第一循环过程,第一循环过程包括:从起始指针位置开始,在目标存储单元中,按照目标数据段长度截取目标数据段,并对起始指针位置增加目标数据段长度,且如果起始指针位置变成大于存储单元长度,从起始指针位置中减去存储单元长度,并将目标存储单元更新为下一个存储单元,其中,存储单元长度大于目标数据段长度。
可选地,过滤参数包括待过滤数据格式;
目标数据段长度通过以下方式确定:
如果待过滤数据格式指示待过滤数据带有数据段长度字段,从数据段长度字段中,获取目标数据段长度;否则,基于过滤参数中包含的数据段长度信息,确定目标数据段长度。
可选地,过滤单元330具体用于:
将目标数据段和目标字符串分别按照存储单元长度进行补位,得到补位后目标数据段和补位后目标字符串;
将补位后目标数据段分成第一数目个第一子段,将补位后目标字符串分成第一数目个第二子段;
基于每个第一子段、以及与第一子段对应的第二子段是否符合目标过滤操作符,确定目标数据段对应的子过滤结果。
可选地,过滤单元330具体用于:
针对每个第一子段,分别确定第一子段是否大于、小于和等于与第一子段对应的第二子段的第一比较结果、第二比较结果、和第三比较结果;
基于多个第一子段的第一比较结果、第二比较结果和第三比较结果,确定与多个过滤操作符对应的过滤操作结果;
从与多个过滤操作符对应的过滤操作结果中,获取与目标过滤操作符对应的过滤操作结果,作为子过滤结果。
可选地,存储区包含:与第一数目个第一子段对应的第一数目个比较器组,比较器组包括大于比较器、小于比较器、和等于比较器;过滤操作结果缓存器组,用于缓存与多个过滤操作符对应的过滤操作结果;
过滤单元330具体用于:将第一子段、和与第一子段对应的第二子段,输入与第一子段对应的比较器组,得到第一比较结果、第二比较结果、和第三比较结果;将与多个过滤操作符对应的过滤操作结果缓存到过滤操作结果缓存器组,并从过滤操作结果缓存器组中获取与目标过滤操作符对应的过滤操作结果,作为子过滤结果。
可选地,存储区还包括用于缓存第一数目个第一子段的第一数目个第一子段缓存器;与第一数目个第一子段缓存器对应的、用于缓存第一数目个第二子段的第一数目个第二子段缓存器;
过滤单元330具体用于包括:从第一子段缓存器获取第一子段,从与第一子段缓存器对应的第二子段缓存器获取第二子段,将获取的第一子段和第二子段输入与第一子段对应的比较器组。
可选地,多个过滤操作符包括等于操作符、不等于操作符、大于操作符、大于等于操作符、小于操作符、小于等于操作符;
过滤单元330具体用于:
如果多个第一子段的第三比较结果都为第一值,确定等于操作符对应的过滤操作结果为第一值;
如果多个第一子段的第三比较结果不都为第一值,确定不等于操作符对应的过滤操作结果为第一值;
如果多个第一子段中的至少一个连续的第一子段的第一比较结果都为第一值,其余的第一子段的第三比较结果都为第一值,确定大于操作符对应的过滤操作结果为第一值;
如果多个第一子段中的至少一个连续的第一子段的第一比较结果都为第一值,其余的第一子段的第三比较结果都为第一值,或者多个第一子段的第三比较结果都为第一值,确定大于等于操作符对应的过滤操作结果为第一值;
如果多个第一子段中的至少一个连续的第一子段的第二比较结果都为第一值,其余的第一子段的第三比较结果都为第一值,确定小于操作符对应的过滤操作结果为第一值;
如果多个第一子段中的至少一个连续的第一子段的第二比较结果都为第一值,其余的第一子段的第三比较结果都为第一值,或者多个第一子段的第三比较结果都为第一值,确定小于等于操作符对应的过滤操作结果为第一值。
可选地,过滤参数还包括目标数据段数目;
过滤单元330具体用于:基于目标数据段数目,确定基于每个目标数据段与目标字符串是否符合目标过滤操作符确定目标数据段对应的子过滤结果的执行次数;基于执行次数,基于每个目标数据段与目标字符串是否符合目标过滤操作符,确定目标数据段对应的子过滤结果。
本实施例的字符串过滤装置300用于实现前述多个方法实施例中相应的字符串过滤方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的字符串过滤装置300中的各个单元的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。
下面参照图14来描述根据本公开的实施方式的加速卡400。图14显示的加速卡400仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
图8所示的加速卡400可以包括但不限于:至少一个处理单元410、至少一个存储单元420、连接不同系统组件(包括存储单元420和处理单元410)的总线430。存储单元420存储有程序代码,程序代码可以被处理单元410执行,使得处理单元410执行本说明书上述示例性方法的描述部分中描述的根据本发明各种示例性实施方式的步骤。
存储单元420可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)4201和/或高速缓存存储单元4202,还可以进一步包括只读存储单元(ROM)4203。
存储单元420还可以包括具有一组(至少一个)程序模块8205的程序/实用工具4204,这样的程序模块4205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线430可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
加速卡400也可以与一个或多个外部设备500(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与加速卡400交互的设备通信,和/或与使得该加速卡400能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口450进行。并且,加速卡400还可以通过网络适配器460与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器460通过总线430与加速卡400的其它模块通信。应当明白,尽管图中未示出,加速卡400可以使用其它硬件和/或软件模块实现,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机程序介质,其上存储有计算机可读指令,当计算机可读指令被计算机的处理器执行时,使计算机执行上述方法实施例部分描述的方法。
根据本公开的一个实施例,还提供了一种用于实现上述方法实施例中的方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
Claims (10)
1.一种字符串过滤方法,用于与主计算设备配套使用的加速卡,其特征在于,包括:
从所述主计算设备接收待过滤数据和过滤参数,并存储在所述加速卡的存储区;
通过所述加速卡的核,从所述存储区读取所述待过滤数据和所述过滤参数;
通过所述核,利用所述过滤参数过滤所述待过滤数据,得到字符串过滤结果,存入所述存储区;
从所述存储区返回所述字符串过滤结果到所述主计算设备。
2.根据权利要求1所述的字符串过滤方法,其特征在于,所述过滤参数包括目标字符串和目标过滤操作符;
所述利用所述过滤参数过滤所述待过滤数据,得到字符串过滤结果,存入所述存储区,包括:
将所述待过滤数据分成多个目标数据段;
基于每个所述目标数据段与所述目标字符串是否符合所述目标过滤操作符,确定所述目标数据段对应的子过滤结果;
将多个所述目标数据段对应的子过滤结果整合成所述字符串过滤结果,存入所述存储区。
3.根据权利要求2所述的字符串过滤方法,其特征在于,所述将所述待过滤数据分成多个目标数据段,包括:
将所述待过滤数据按照所述存储区的存储单元长度,存储到所述存储区的多个连续存储单元;
将起始指针位置初始化为多个所述连续存储单元中的第一个存储单元的首位位置,将目标存储单元初始化为所述第一个存储单元;
执行第一循环过程,所述第一循环过程包括:从所述起始指针位置开始,在所述目标存储单元中,按照目标数据段长度截取所述目标数据段,并对所述起始指针位置增加所述目标数据段长度,且如果所述起始指针位置变成大于所述存储单元长度,从所述起始指针位置中减去所述存储单元长度,并将所述目标存储单元更新为下一个存储单元,其中,所述存储单元长度大于所述目标数据段长度。
4.根据权利要求3所述的字符串过滤方法,其特征在于,所述过滤参数包括待过滤数据格式;
所述目标数据段长度通过以下方式确定:
如果所述待过滤数据格式指示所述待过滤数据带有数据段长度字段,从所述数据段长度字段中,获取所述目标数据段长度;否则,基于所述过滤参数中包含的数据段长度信息,确定所述目标数据段长度。
5.根据权利要求2所述的字符串过滤方法,其特征在于,所述基于每个所述目标数据段与所述目标字符串是否符合所述目标过滤操作符,确定所述目标数据段对应的子过滤结果,包括:
将所述目标数据段和所述目标字符串分别按照存储单元长度进行补位,得到补位后目标数据段和补位后目标字符串;
将所述补位后目标数据段分成第一数目个第一子段,将所述补位后目标字符串分成所述第一数目个第二子段;
基于每个所述第一子段、以及与所述第一子段对应的所述第二子段是否符合所述目标过滤操作符,确定所述目标数据段对应的所述子过滤结果。
6.根据权利要求5所述的字符串过滤方法,其特征在于,所述基于每个所述第一子段、以及与所述第一子段对应的所述第二子段是否符合所述目标过滤操作符,确定所述目标数据段对应的所述子过滤结果,包括:
针对每个所述第一子段,分别确定所述第一子段是否大于、小于和等于与所述第一子段对应的所述第二子段的第一比较结果、第二比较结果、和第三比较结果;
基于多个所述第一子段的所述第一比较结果、所述第二比较结果和所述第三比较结果,确定与多个过滤操作符对应的过滤操作结果;
从与多个所述过滤操作符对应的所述过滤操作结果中,获取与所述目标过滤操作符对应的所述过滤操作结果,作为所述子过滤结果。
7.根据权利要求6所述的字符串过滤方法,其特征在于,所述存储区包含:与第一数目个所述第一子段对应的第一数目个比较器组,所述比较器组包括大于比较器、小于比较器、和等于比较器;过滤操作结果缓存器组,用于缓存与多个过滤操作符对应的过滤操作结果;
所述针对每个所述第一子段,分别确定所述第一子段是否大于、小于和等于与所述第一子段对应的所述第二子段的第一比较结果、第二比较结果、和第三比较结果,包括:将所述第一子段、和与所述第一子段对应的所述第二子段,输入与所述第一子段对应的所述比较器组,得到所述第一比较结果、所述第二比较结果、和所述第三比较结果;
所述从与多个所述过滤操作符对应的所述过滤操作结果中,获取与所述目标过滤操作符对应的所述过滤操作结果,作为所述子过滤结果,包括:将与多个过滤操作符对应的所述过滤操作结果缓存到所述过滤操作结果缓存器组,并从所述过滤操作结果缓存器组中获取与所述目标过滤操作符对应的所述过滤操作结果,作为所述子过滤结果。
8.一种字符串过滤装置,用于与主计算设备配套使用的加速卡,其特征在于,包括:
第一存储单元,用于从所述主计算设备接收待过滤数据和过滤参数,并存储在所述加速卡的存储区;
第一读取单元,用于通过所述加速卡的核,从所述存储区读取所述待过滤数据和所述过滤参数;
过滤单元,用于通过所述核,利用所述过滤参数过滤所述待过滤数据,得到字符串过滤结果,存入所述存储区;
返回单元,用于从所述存储区返回所述字符串过滤结果到所述主计算设备。
9.一种加速卡,其特征在于,包括:
存储区,用于存储从所述主计算设备接收的待过滤数据和过滤参数;
核,用于从所述存储区读取所述待过滤数据和所述过滤参数,利用所述过滤参数过滤所述待过滤数据,得到字符串过滤结果,存入所述存储区,并将所述字符串过滤结果从所述存储区返回到所述主计算设备。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码被处理器运行时,使处理器执行根据权利要求1-7中任一个所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311166977.6A CN117332126A (zh) | 2023-09-11 | 2023-09-11 | 字符串过滤方法、装置、加速卡及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311166977.6A CN117332126A (zh) | 2023-09-11 | 2023-09-11 | 字符串过滤方法、装置、加速卡及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117332126A true CN117332126A (zh) | 2024-01-02 |
Family
ID=89289303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311166977.6A Pending CN117332126A (zh) | 2023-09-11 | 2023-09-11 | 字符串过滤方法、装置、加速卡及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117332126A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6714927B1 (en) * | 1999-08-17 | 2004-03-30 | Ricoh Company, Ltd. | Apparatus for retrieving documents |
CN105550169A (zh) * | 2015-12-11 | 2016-05-04 | 北京奇虎科技有限公司 | 一种基于字符长度识别兴趣点名称的方法和装置 |
CN106649836A (zh) * | 2016-12-29 | 2017-05-10 | 武汉新芯集成电路制造有限公司 | 一种基于硬件查找表的模式字符的查找方法 |
CN108762812A (zh) * | 2018-05-21 | 2018-11-06 | 北京中科睿芯科技有限公司 | 面向通用字符串处理的硬件加速结构装置及控制方法 |
CN112632343A (zh) * | 2020-12-30 | 2021-04-09 | 深圳大普微电子科技有限公司 | 一种字符串匹配方法、装置、设备及可读存储介质 |
CN115712601A (zh) * | 2022-11-29 | 2023-02-24 | 上海通联金融服务有限公司 | 一种基于springbatch批量读取定长文件的方法 |
CN116561051A (zh) * | 2023-04-10 | 2023-08-08 | 中科驭数(北京)科技有限公司 | 一种硬件加速卡和异构计算系统 |
-
2023
- 2023-09-11 CN CN202311166977.6A patent/CN117332126A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6714927B1 (en) * | 1999-08-17 | 2004-03-30 | Ricoh Company, Ltd. | Apparatus for retrieving documents |
CN105550169A (zh) * | 2015-12-11 | 2016-05-04 | 北京奇虎科技有限公司 | 一种基于字符长度识别兴趣点名称的方法和装置 |
CN106649836A (zh) * | 2016-12-29 | 2017-05-10 | 武汉新芯集成电路制造有限公司 | 一种基于硬件查找表的模式字符的查找方法 |
CN108762812A (zh) * | 2018-05-21 | 2018-11-06 | 北京中科睿芯科技有限公司 | 面向通用字符串处理的硬件加速结构装置及控制方法 |
CN112632343A (zh) * | 2020-12-30 | 2021-04-09 | 深圳大普微电子科技有限公司 | 一种字符串匹配方法、装置、设备及可读存储介质 |
CN115712601A (zh) * | 2022-11-29 | 2023-02-24 | 上海通联金融服务有限公司 | 一种基于springbatch批量读取定长文件的方法 |
CN116561051A (zh) * | 2023-04-10 | 2023-08-08 | 中科驭数(北京)科技有限公司 | 一种硬件加速卡和异构计算系统 |
Non-Patent Citations (1)
Title |
---|
林跃进主编: ".NET编程技术", 31 August 2012, 东软电子出版社, pages: 39 - 45 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111090628B (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
US8788471B2 (en) | Matching transactions in multi-level records | |
US7594098B2 (en) | Processes and devices for compression and decompression of executable code by a microprocessor with RISC architecture and related system | |
CN111095421B (zh) | 基因文件的上下文感知增量算法 | |
CN111460815B (zh) | 规则处理方法、装置、介质及电子设备 | |
CN112860706A (zh) | 一种业务的处理方法、装置、设备及存储介质 | |
CN111858586A (zh) | 一种数据处理的方法和装置 | |
CN110737678B (zh) | 一种数据查找方法、装置、设备和存储介质 | |
CN109634983B (zh) | 召回兴趣点信息的确定方法、装置、设备和介质 | |
CN117332126A (zh) | 字符串过滤方法、装置、加速卡及介质 | |
CN114781322B (zh) | Cpu芯片仿真加速中针对无mmu环境的内存状态恢复方法 | |
CN115982310A (zh) | 一种自带验证功能的链表生成方法及电子设备 | |
CN115495212A (zh) | 任务队列处理方法、装置、设备、存储介质及程序产品 | |
CN107832341B (zh) | Agnss用户去重统计方法 | |
CN109491620B (zh) | 存储数据重写方法、装置、服务器及存储介质 | |
CN114518841A (zh) | 存储器中处理器和使用存储器中处理器输出指令的方法 | |
CN111352769B (zh) | 恢复数据库的方法、恢复服务器及计算机可读存储介质 | |
US9171032B2 (en) | Radix sort with read-only key | |
CN108182127B (zh) | 一种提取已删除文件碎片的方法、终端设备及存储介质 | |
CN113495651A (zh) | 一种窗口控制方法和装置 | |
CN112818710A (zh) | 一种异步网络机器翻译请求的处理方法、装置 | |
CN116804915B (zh) | 基于存储器的数据交互方法、处理器、设备以及介质 | |
US11770345B2 (en) | Data transfer device for receiving data from a host device and method therefor | |
US20240028519A1 (en) | Data processing method, electronic device and computer program product | |
CN111639055B (zh) | 差分包计算方法、装置、设备及存储介质 |
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 |