CN102084357B - 检索装置以及检索方法 - Google Patents
检索装置以及检索方法 Download PDFInfo
- Publication number
- CN102084357B CN102084357B CN200880130230.2A CN200880130230A CN102084357B CN 102084357 B CN102084357 B CN 102084357B CN 200880130230 A CN200880130230 A CN 200880130230A CN 102084357 B CN102084357 B CN 102084357B
- Authority
- CN
- China
- Prior art keywords
- record
- retrieval
- core
- computer processor
- scheduler
- 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.)
- Expired - Fee Related
Links
Images
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/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/81—Indexing, e.g. XML tags; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
检索装置包括:CPU;以及具有调度器和多个检索核的加速器。所述CPU按所输入的检索表达式来生成自动机,所述调度器将处理对象文本以被排序的记录的单位分配给所述各检索核。所述各检索核对所述被分配的各记录分别并行地进行自动机匹配,所述CPU按所述各记录的所述排序的顺序对所述各记录单位的匹配结果进行逻辑表达式评价。由此,能够减少各匹配装置(检索核)和CPU处理的并行动作的开销来进行数据传递并可实现系统的高速化。
Description
技术领域
本申请涉及检索装置以及检索方法,尤其涉及从作为输入字符串的文本中检索作为任意字符串的模式(pattern)的检索装置以及检索方法,其中输入字符串是应用自动机处理技术而提供的。
背景技术
近年来,在各种各样的领域,信息量爆炸性地增长。并且,根据领域,信息量从千兆字节量级(gigabate order)变成兆兆字节量级(terabyteorder),从这样浩瀚的数据中难以在短时间内取出所期望的数据。
从所提供的文本中检索任意类型模式的模式匹配被应用于字符处理软件或数据库检索等各种领域中。
即,近年来,对以XML数据库为主的需要模式匹配(检索)处理的应用程序的需求具有增长的趋势,并且为了使其高速化而提出了将进行模式匹配的自动机匹配装置(检索核)安装在处理器上的方法。
并且,以往在具有多个这样的匹配装置的处理器系统中,研究了对一个应匹配的文本如何高速地进行匹配。
具体来说,以往提出了使用具有多个匹配装置的处理器系统来一次对多个字符进行匹配的方法。
并且,以往为了使用具有多个匹配装置的处理器系统来执行并行处理还提出了分割匹配文本的方法。
专利文献1:日本专利文献特开2005-242672号公报;
专利文献2:日本专利申请特许第2865831号公报。
发明内容
发明要解决的问题
以往,提出了使用具有多个匹配装置的处理器系统来进行文本的匹配的技术方案。
然而,例如在数据库直接由多个XML文本群构成的XML数据库系统的匹配(检索)处理中,若从一开始就进行模式匹配,则由于各XML文本之间并行程度高,因此通过增加匹配装置的安装数量等来并行地执行匹配处理,从而能够容易地提高处理速度。然而这会增加CPU利用该匹配结果所进行的后处理的比重。
此外,当使匹配处理和CPU的后处理并行进行时,用于减少其开销的数据传递方法以及控制方式对于提高检索(匹配)系统整体的速度来说很重要。
并且还需要规定在保持各匹配结果的文本单位的顺序关系的同时通过CPU进行后处理的机制。例如,在XML数据库系统中的检索中,如果XML文本的CPU处理顺序与在XML数据库中管理的顺序每次都不同,则检索结果每次都按不同的顺序显示,从而对于用户来说是难以使用的系统。
因此,还需要规定基于通过并行动作按不同顺序完成匹配的匹配结果而在可按记录顺序进行后处理的阶段并行处理的有效的机制。
本申请就是鉴于上述现有以及相关技术中的问题而完成的,其目的在于,提供一种可减少各匹配装置(检索核)和CPU处理的并行动作的开销来进行数据交接并可实现系统的高速化的检索装置以及检索方法。
用于解决问题的手段
根据第一实施方式,提供一种检索装置,包括:CPU;以及具有调度器和多个检索核的加速器。所述CPU按照被输入的检索表达式来生成自动机,所述调度器将处理对象文本以被排序的记录的单位分配给所述各检索核。并且,所述各检索核对所述被分配的各记录分别并行地进行自动机匹配,所述CPU按所述各记录的所述排序的顺序对所述各记录单位的匹配结果进行逻辑表达式评价。
根据第二实施方式,提供一种使用了检索装置的检索方法,其中所述检索装置包括CPU、以及具有调度器和多个检索核的加速器。所述CPU按照被输入的检索表达式来生成自动机,所述调度器将处理对象文本以被排序的记录的单位分配给所述各检索核。并且,所述各检索核对所述被分配的各记录分别并行地进行匹配处理,所述CPU按所述各记录的所述排序的顺序对所述各记录单位的匹配结果进行逻辑表达式评价。
根据第三的实施方式,提供一种使计算机执行以下步骤的检索程序,其中,所述计算机包括:CPU;以及具有调度器和多个检索核的加速器,所述步骤包括:使所述CPU按照被输入的检索表达式来生成自动机的步骤;使所述调度器将处理对象文本以被排序的记录的单位分配给所述各检索核的步骤;使所述各检索核对所述被分配的各记录分别并行地进行自动机匹配的步骤;以及使所述CPU按所述各记录的所述排序的顺序对所述各记录单位的匹配结果进行逻辑表达式评价的步骤。
发明效果
根据各实施方式,能够提供可减少各匹配装置和CPU处理的并行动作的开销来进行数据交接并可实现系统的高速化的检索装置以及检索方法。
附图说明
图1A是用于说明作为自动机的关键词检索算法的一个例子的σ(Sigma)算法的图(之一);
图1B是用于说明作为自动机的关键词检索算法的一个例子的σ(Sigma)算法的图(之二);
图2是用于简要地说明检索装置的一个例子的图;
图3是简要地示出现有的检索装置中的检索顺序的一个例子的图;
图4是简要地示出根据现有的检索方法的处理顺序的图;
图5是简要地示出本实施方式的检索装置中的检索顺序的一个例子的图;
图6是简要地示出根据本实施方式的检索方法的处理顺序的图;
图7是示出检索装置的一个实施例的主要部分的框图;
图8是示出检索装置的其他实施例的主要部分的框图;
图9是简要地示出适用各实施例的检索服务器的一个例子的图;
图10是简要地示出包含图9的检索服务器的检索系统的整体构成的图;
图11是用于说明根据记录ID确定记录的处理的图;
图12是用于说明各模块的作用的图;
图13是用于说明各API函数和调用过程的图;
图14是示出控制数据的详细的数据结构的图;
图15是用于说明共享数据结构的图;
图16是用于说明各数据的写入以及读出关系的图(之一);
图17是用于说明各数据的写入以及读出关系的图(之二);
图18A是用于说明调度器的动作的图(之一);
图18B是用于说明调度器的动作的图(之二);
图18C是用于说明调度器的动作的图(之三);
图19A是用于说明事件缓冲器控制问题的图(之一);
图19B是用于说明事件缓冲器控制问题的图(之二);
图19C是用于说明事件缓冲器控制问题的图(之三);
图20A是用于说明各数据的写入和读出关系的图(之一);
图20B是用于说明各数据的写入和读出关系的图(之二);
图20C是用于说明各数据的写入和读出关系的图(之三);
图21是用于说明事件缓冲器控制用信息的图;
图22A是用于说明事件缓冲器冲掉时的动作例的图(之一);
图22B是用于说明事件缓冲器冲掉时的动作例的图(之一);
图22C是用于说明事件缓冲器冲掉时的动作例的图(之一);
图23是用于将API函数和调用过程与流程图关联起来进行说明的图;
图24是示出σ检索处理的一个例子的流程图;
图25是逐条目等候图24的σ评价时的流程图;
图26是针对每多个条目等候图24的σ评价时的流程图;
图27是示出σ评价处理的一个例子的流程图;
图28是示出σ缓冲器满处理的一个例子的流程图。
附图标记说明
11检索对象文档
12输入字符
13当前状态
14输入地址
15存储器
16输出数据
17下一个状态
AC加速器
CHIP半导体芯片
DS定向服务器(director server)
MEM存储器控制器
NET网络
PB处理器盒
PM处理器模块
PS处理器系统(检索装置)
RS机架系统(rack system)
SC检索核(匹配装置)
SD调度器
SS检索服务器
STR储存装置
具体实施方式
首先,在详细说明检索装置以及检索方法的实施例之前,先参考附图说明现有技术及其问题。
图1A以及图1B是用于说明作为自动机的关键词检索算法的一个例子的σ算法的图。图1A以及图1B示出了从检索对象文档中检索是否存在关键词“blue”、“green”、“red”以及“yellow”的例子。
首先,如图1A所示,生成与各关键词条件对应的自动机。具体来说,生成从以“0”表示的根转移各关键词的开头字符“b”、“g”、“r”、“y”并进而转移到各关键词串的字符的自动机。
如果直到各关键词串的末尾字符为止都一致,则认为该关键词串被检索到。这里,例如在关键词串“green”中包含有“re”,若之后有“d”就与“red”一致,因此,如图1A所示存在从“green”的中途向“red”的“d”转移的路径。
检索从根开始,若自动机内有关键词则依次转移,如果读取到与关键词无关的字符就返回到根。
例如,如图1B所示,当输入了包含“black”的文档时,转移到“blue”的开头的“b”,接着转移到“l”,但由于接下来是“a”,因此返回到根。
如此,如果文档内存在自动机的关键词串,则检索到各关键词串的末尾字符为止并输出“命中(Hit)”信息,表明存在关键词串。其中,在自动机检索中,通过节点或“状态”来表示是位于各关键词串的第几个字符处。例如,根的状态为1,若位于“blue”的“b”处则状态为2、若位于″u″处则状态为4。
图2是用于简要地说明检索装置的一个例子的图,用于说明利用了确定性有限状态自动机的检索装置的图。
如图2所示,当输入了存储在盘装置等中的检索对象文档11时,从其中依次提取字符字节码12。在以下的说明中,字符字节码12为8比特,并形成256条目。
将组合保存在寄存器中的当前状态(表示当前状态的数据)13和字符字节码12而成的索引作为形成检索关键词自动机的存储器15的输入地址14。
被输入了输入地址14的存储器15输出输出数据16,该输出数据中包含下一个状态17以及命中信息(命中值)。并且,下一个状态17将变成当前状态13。
图3是简要地示出现有检索装置中的检索顺序的一个例子的图,图4是简要地示出根据现有检索方法的处理顺序的图。
如图3所示,现有检索装置中的检索顺序例如如下:一旦输入检索表达式(30),则生成自动机(31),并使用该自动机重复进行记录匹配(32a、32b、…)以及逻辑表达式评价(33a、33b、…)。
其中,自动机的生成31、记录的匹配32a、32b、…以及逻辑表达式评价33a、33b、…都由CPU(处理装置)进行。
并且,如图4所示,在通过现有检索方法进行的处理顺序中,必须按记录的顺序进行使用了自动机的记录匹配→匹配结果的呈现(presentation)→逻辑表达式评价→检索结果的呈现。
即,在现有检索方法的处理顺序中,在进行了记录a的匹配(1)之后,进行记录a的评价(2),接着在进行了记录b的匹配(3)之后,进行记录b的评价(4),然后在进行了记录c的匹配(5)之后,进行记录c的评价(6)。并且,检索结果需要按记录的顺序维持。
在现有的检索装置以及检索方法中,各匹配装置和CPU处理的并行动作的开销大,系统动作迟缓,或者必须将检索结果按记录顺序维持。
以下,参考附图对检索装置以及检索方法的实施例进行说明,在此之前,作为一个例子,对XML数据库检索用加速器(AC)进行说明。
检索用数据库软件被移植到面向例如需要IA服务器难以处理的大规模XML数据库的用户而安装了高性能处理器的专用服务器设备中,面向该专用服务器的处理器安装进行XML记录匹配处理的加速器(AC)来提高处理速度。
首先,对应用于本实施方式的检索装置(处理器系统)的加速器(调度器SD以及检索核(匹配装置)SC)的概要进行说明。即,说明加速器的概要、块构成以及动作,还说明各模块的作用。
本实施方式的检索装置是进行例如XML数据库中的字符串的检索的装置,进行从该数据库中检索与用户所提供的检索表达式匹配的数据的处理。
在所使用的检索算法中,例如生成与所提供的检索表达式对应的自动机,将作为XML数据的管理单位的记录作为该自动机的输入而提供并由此进行匹配。
在本实施方式的检索装置中的检索处理大体上分为记录匹配和逻辑表达式评价两个处理。加速器负责其中的记录匹配处理。
图5是简要地示出本实施方式的检索装置中的检索顺序的一个例子的图。
比较图5和上述图3可知,在本实施方式的检索装置的检索顺序中,记录匹配32a、32b、…和逻辑表达式评价33a、33b并不是全部都通过CPU来处理,而是一些处理通过加速器AC来处理,加速器AC具有调度器SD以及多个自动机处理装置(例如,4个检索核)SC。
即,调度器SD进行记录分配34a、34b、…,并且检索核SC进行自动机的登记35以及记录匹配32。如上所述,通过安装调度器SD以及多个检索核SC作为加速器AC,使得记录匹配本身被并行处理以提高处理速度,并且与逻辑表达式评价并行地动作。
图6是简要地示出根据本实施方式的检索方法的处理顺序的图。
比较图6和上述图4可知,首先,在参考标号61中,通过加速器AC的4个检索核SC并行地对4个记录匹配进行处理(1)。另外,在参考标号62中,通过采用保持记录顺序的阵列和保持匹配结果的缓冲器这样的构成,消除按匹配顺序维持记录的需要,实现并行处理。另外,如参考标号63那样,逻辑表达式评价需要由CPU按照XML记录的顺序依次进行处理。
图7是示出检索装置的一个实施例的主要部分的框图。
如图7所示,各检索核SC自主地访问主存储器并读取存储在各主存储器中的XML数据的各记录(XML数据库以称作记录的单位保持数据)进行匹配,并将作为匹配结果的命中信息写入到共享数据中,该共享数据位于能由CPU高速访问的L2高速缓冲存储器或者工作存储器(WorkRAM)中。
被CPU和加速器AC共享的控制数据大致分为2个阵列。其中之一是保持记录信息(记录的开头指针等)的记录种类阵列,另一个是保存匹配结果的事件缓冲器阵列。
调度器(调度器电路)SD监视从各检索核SC通知的空闲状态,向空闲的检索核传递记录信息,并指示进行匹配。CPU利用命中信息与加速器AC并行地进行逻辑表达式评价。
图8是示出检索装置的其他实施例的主要部分的框图。
图8所示的实施例是设置了两个上述图7所示构成的实施例,并将其构成为一个芯片。
如图8所示,在本实施例中,一个半导体芯片(LSI)CHIP具有两组的图7所示的CPU、加速器AC以及L2高速缓冲存储器。即,半导体芯片CHIP具有2个CPU系统PS,各CPU系统PS具有CPU核、加速器AC以及L2高速缓冲存储器(或Work RAM),该加速器AC具有核调度器SD以及多个(图中为4个)检索核SC。
另外,图7以及图8的构成只是例子,例如一个半导体芯片CHIP也可以被构成为具有2组或4组等的CPU和加速器AC,该加速器AC具有调度器SD以及8个检索核SC。
图9是简要地示出应用了各实施例的检索服务器的一个例子的图,并且图10是简要地示出包含图9的检索服务器的检索系统的整体构成的图。在图9以及图10中,参考标号SS表示检索服务器、RS表示机架系统、PB表示处理器盒、PM表示处理器模块、PS表示处理器系统(检索装置)。
在图9中,检索服务器SS由1个机架系统RS构成,该机架系统RS具有多个(例如,15个)处理器盒PB,并且,各处理器盒PB分别具有多个(例如,28个)处理器模块PM。
另外,各处理器模块PM分别具有3个半导体芯片CHIP和3个主存储器,并且,各半导体芯片CHIP具有2个处理器系统PS,各处理器系统PS由一个CPU和加速器AC构成,加速器AC具有调度器SD和4个检索核SC。
这里,匹配处理能够通过例如设置在各处理器系统PS上的各检索核SC以各记录为单位随机(不按次序)地执行,但逻辑表达式评价通过例如CPU按照XML数据的记录顺序进行。
在各检索核SC中例如分别内置有可高速访问的高速缓冲存储器(临时高速缓冲存储器),在该高速缓冲存储器中生成并存储自动机。
如图10所示,数据管理部由定向服务器DS以及储存服务器STR构成,另外,检索处理部由检索服务器SS构成。检索服务器SS经由例如LAN等网络NET与定向服务器DS连接,并例如对储存服务器STR中的文档数据进行处理,该储存服务器STR与该定向服务器DS连接并存储有XML这样的结构化文档数据。
如上所述,例如在图9所示的检索服务器中,与2个CPU核×(系统的芯片个数)相等数目的处理器将包含在XML数据中的所有记录分割成与处理器个数相同的数目并分别负责各个独立地进行检索处理。
具体来说,例如当CPU总数为256并且有记录ID为0000至FFFF的记录时,将记录如使得记录ID为0000~00FF、0100~01FF、…这样分割为256个,并由各处理器分别负责。
另外,在如图10所示的检索系统中,在系统启动后,保存在储存装置STR中的XML数据库通过定向服务器DS被分割,被分配给检索服务器SS的各处理器(CPU),并被保存到对应的存储器中。
当检索开始时,首先检索表达式被发送给检索服务器SS,检索服务器SS生成自动机并将其保存在各加速器AC中。然后,各CPU将自己负责的XML数据库的片段提供到加速器AC中进行匹配。
图9以及图10所示的检索装置以及检索系统只是例子,毋庸置疑,可根据所应用的系统的规模或所要求的检索功能等来进行各种改变。例如,在更大规模的系统中,也可以构成为由多台机架系统RS构成检索服务器SS,并通过多台定向服务器DS进行管理。
图11是用于说明根据记录ID来确定记录的处理的图,并示出了XML数据的数据结构。
如图11所示,各记录使用XML数据表XDT、记录索引表RIT以及被称为存储器数据信息MDI的结构体来管理。
首先,XML数据表XDT中容纳有XML数据整体的信息,并包含指向记录索引表RIT的指针。
记录索引表RIT是指向存储器数据信息MDI的指针阵列,各元素通过记录ID的高位2字节来识别。
存储器数据信息MDI是将各记录的记录信息作为成员的结构体阵列,各元素通过记录ID的低位2字节来识别。另外,记录信息中包含指向记录的指针,记录是加速器AC进行匹配的单位。
如参考图6所述,匹配处理能够以各记录为单位随机(不按顺序)地执行,但逻辑表达式评价需要按该XML数据的记录顺序进行。
图12是用于说明各模块的作用的图。
如图12所示,模块大致分为软件和硬件。并且软件分为应用(应用程序)以及驱动器,另外硬件分为调度器SD以及检索核SC。
应用(Sigma Evaluation:σ评价)进行逻辑表达式评价,若检测出缓冲器满,则调用σ缓冲器满。
驱动器分为σ检索(Sigma Search)以及σ缓冲器满(Sigma BufferFull)。σ检索参考XML的索引,顺序地取出指向记录的指针,并将其登记到种类阵列中。以适当的定时(轮询)观察缓冲器状态,并启动逻辑表达式评价函数。并且,若逻辑表达式评价函数结束,则冲掉在那之前的种类阵列条目。然后,以适当的定时(若逻辑表达式评价函数结束,则对评价完成记录个数进行计数,设置阈值并启动等)将记录信息补充到种类阵列中。
若逻辑表达式评价进行到事件缓冲器末端,则调用σ缓冲器满。然后,对事件缓冲器进行冲刷,并进行等待直到当前逻辑表达式评价中的记录的匹配结果完成或下一个事件缓冲器满为止。
若存在空闲状态的检索核SC,则调度器SD将登记在种类阵列中的尚未开始匹配的开头的记录信息(指针等)分配给检索核SC,指示开始检索。
一旦记录信息被提供给检索核SC,则检索核SC从存储器读入记录的字符串并进行匹配。若命中则写入到事件缓冲器中。若出现越过事件缓冲器或类似情况,适当地改变缓冲器状态标志。若匹配结束,则向调度器SD通知空闲状态并停止。若出现事件缓冲器满等,则中止,等待事件缓冲器被冲刷。
接下来,说明加速器AC的驱动器软件和应用的关系。
图13是用于说明各API函数和调用过程的图,并示出了应用、API函数、驱动器(加速器库138)以及加速器AC的关系。
如图13所示,首先,当提供了检索表达式时,在应用侧生成对应的自动机(131)。并且,调用σ分配处理(Sigma Alloc Handle)函数以及σ配置(Sigma Config)函数,来进行加速器AC的初始设定(工作区域的获取132以及环境设定133)。另外,σ配置函数也可以只在启动系统时调用。
然后,通过调用σ登记(Sigma Registration)函数来将生成的自动机登记到加速器AC(134)。并且,调用σ检索(Sigma Search)来开始检索处理主体(启动匹配执行:135)。通过该σ检索函数执行整个检索,应用等待结束。
最后,调用σ释放处理(Sigma Free Handle)函数来结束一系列的检索处理(释放工作区域136)。σ检索函数指示加速器AC进行记录的匹配,调用σ评价(Sigma Evaluation)函数来对完成了逻辑表达式评价准备的记录进行逻辑表达式评价(137)。另外,σ缓冲器满(Sigma BufferFull)函数在保持匹配结果的事件缓冲器被切换时被调用。
接下来,说明本加速器AC的控制方式。
首先,对作为控制数据的记录种类阵列和事件缓冲器阵列进行详细说明。并且,关于加速器的各动作,对作为主要的动作的检索动作(与σ检索函数对应)进行说明,并说明整体控制的转移概况。然后,对余下的自动机登记动作(与σ登记(Sigma Registration)函数对应)以及环境设定动作(与σ配置(Sigma Config)函数对应)进行说明。
图14是示出控制数据的详细的数据结构的图。
首先,如图14所示,控制数据大致分为管理各记录的信息的记录种类阵列和写入通过检索核进行的匹配结果的事件缓冲器阵列这两种。
XML数据的各记录按XML数据的索引顺序被保存在记录种类阵列的各行中,并且其中存储了匹配和逻辑表达式评价已完成的记录的行被释放,然后,当使用到末端行时,循环返回到开头行来使用。
这里,各项目具有以下的含义。
·匹配状态标志:该标志记录该记录的检索核的匹配状态,被使用在可否进行逻辑表达式评价的判定、以及缓冲器冲刷时的逻辑表达式评价可否重新开始的判定中。另外,标记的含义如下。
0:匹配尚未结束并且匹配没有越过事件缓冲器。
1:至少有一个匹配越过了事件缓冲器。
2:匹配结束。
·检索核编号:是对其记录进行匹配或已匹配的检索核的编号,当冲刷缓冲器时被使用。
·*记录:是指向XML数据的记录的开头地址的指针,在匹配开始时传递到检索核中被使用。以下,“*”表示地址。
·有效标志:是表示该行是否正被使用的标记,用于检查在调度器将该行拿到自己缓冲器内时是否有效。
0:未使用。
1:使用。
·记录ID(Record ID):用于逻辑表达式评价,并不直接参与本发明的控制。
·*事件缓冲器:是指向存储有匹配结果的事件缓冲器区域的指针,用于逻辑表达式评价。
“*登记top”以及“*登记bottom”这两个指针变量指向当前正被使用的行的开头地址以及末端地址,并由驱动器函数σ检索(SigmaSearch)来保持。下一检索top指针变量指向当前登记着的记录中尚未开始匹配的行的开头地址,并被保持在调度器内的寄存器中。
由检索核进行的匹配结果被写入事件缓冲器阵列中。图14示出了检索核为4个(检索核0、1、2、3:SC)、并且分配给各检索核的区域为4个事件缓冲器(A、B、C、D)的情况。
在各事件缓冲器的末尾条目中预先写入有指向下一个事件缓冲器(例如,若是A则B、若是B则C、…)的指针。并且,例如如图14中的检索核0的事件缓冲器所示,检索核以及逻辑表达式评价函数(SigmaEvaluation:σ评价)分别能够自动地转移到下一个缓冲器。
在图14中,粗虚线RET表示在逻辑表达式评价中当前参考的最后条目的位置,并且细虚线WET表示通过匹配核当前正在写入匹配结果的最后条目WET。并且,粗线NR表示该记录的匹配尚未结束。缓冲器个数实际上假设为2个。
作为控制所需的其他数据,还有缓冲器距离。该距离表示在检索核和逻辑表达式评价中当前被使用的事件缓冲器之间的距离,例如,在图14的检索核0中写入有“4”。该数据被保持在检索核内部的寄存器中,每当检索核越过事件缓冲器时加“1”(+1),并且每当事件缓冲器被冲刷时减“1”(-1)。
上述数据不仅被用于检索核的动作,而且在缓冲器冲刷时的动作判定中还被驱动器(CPU侧)参考,因此,其拷贝还被复制到置于调度器(SD)中的映射(map)IO寄存器中(或者,检索核的缓冲器距离寄存器被置于存储器映射上)。
图15是用于说明共享数据的结构(控制数据的配置)的图。
如图15所示,记录种类阵列以及事件缓冲器阵列被置于L2高速缓冲存储器或工作RAM(WorkRAM)区域中。
缓冲器距离原始值被置于检索核(SC)的内部,缓冲器距离的拷贝被置于调度器(SD)中。下一匹配top被置于调度器内部。另外,在图15中还描绘出了后面用于说明检索动作的位于调度器和检索核SC内的寄存器。
这里,调度器具有以下的含义。
·空闲(idle)标志:表示各检索核的状态。
0:空闲状态。
1:忙碌状态。
·*下一检索top:是指向保存有下一个匹配的记录信息的种类阵列的条目地址的寄存器。
·记录信息缓冲器:是临时存储记录种类阵列的条目的缓冲器,其个数与检索核个数相等。从*下一匹配top读出与缓冲器个数相等个数的信息,但是如果种类阵列的有效标志为“0”则丢弃,*下一匹配top在经过适当周期之后再次被读取。
·缓冲器距离拷贝:放置检索核的缓冲器距离的拷贝。
·冲刷完成标志:用于等待事件缓冲器冲刷。
·*登记bottom拷贝:保持*登记bottom变量的拷贝。当调度器缓冲记录信息时,使用于防止下一匹配top超越。
另外,检索核具有以下的含义。
·字符缓冲器:是用于临时保存要匹配的记录的几十字节左右的缓冲器,检索核从其中每次使用一个字符,并使自动机移动来进行匹配。
·*事件缓冲器:是指向作为由各匹配核写入记录匹配的命中信息的目的地的事件缓冲器的指针。
·缓冲器距离:用于逻辑表达式评价和匹配的同步,并且是该检索核的事件缓冲器中的当前的逻辑表达式评价读出位置和匹配结果写入位置的以缓冲器个数为单位的距离。初始值为“0”,并且写入仅由检索核进行。在写入匹配结果的期间到达至当前的缓冲器末端的定时加“1”(+1),并且当被指示事件缓冲器冲刷时减“1”(-1)。
图16以及图17是用于说明各数据的写入以及读出关系的图。
如图16所示,首先,各数据的写入很多情况下是从σ检索(SigmaSearch)向记录种类阵列的写入,这是因为在σ检索中参考XML数据索引来取出记录信息并将其保存到种类阵列中。从检索核向记录种类阵列的写入是当开始记录匹配时决定的记录的管理信息,另外,从检索核向事件缓冲器阵列的写入是匹配命中信息。
另外,当读出数据时,σ检索查看种类阵列的状态标志,这是为了进行σ评价(Sigma Evaluation)启动可能判定。σ评价从种类阵列中读出在开始逻辑表达式评价时所需的记录管理信息,从事件缓冲器中读出用于逻辑表达式评价的命中信息。
σ缓冲器满(Sigma Buffer Full)从种类阵列中读入在缓冲器满时的控制中所需的信息(记录ID以及*事件缓冲器)。调度器从种类阵列中取出用于检索核开始匹配的信息(*记录)。
接下来,对作为本加速器主要的处理的检索动作(从σ检索函数被调用起到其结束为止)进行说明。
首先,对事件缓冲器的控制(事件缓冲器的读写的同步方法)进行说明。
如图16以及图17所示,事件缓冲器是用于保存匹配结果的缓冲器,当匹配命中时该结果从检索核直接匹配被写入到事件缓冲器中,并由逻辑表达式评价函数读出并使用。
事件缓冲器是分配给每个检索核的区域,并且通过将该区域分割成2个以上的事件缓冲器来使用。由于区域是有限的,因此早晚要将缓冲器冲刷后再次使用。该冲刷通过使用σ缓冲器满函数来取得同步。
这里,必要的条件判定如下。
A)σ评价函数的可启动条件判定。
B)σ缓冲器满函数的可结束条件判定(σ评价的重新开始)。
C)写入检索核的匹配结果、并判定有没有超越。
在一些情况下,只有越过事件缓冲器的信息是无法顺利进行的,例如若没有匹配越过事件缓冲器的信息和该记录的匹配已结束的信息这2个信息则无法顺利进行。例如,在假定只有缓冲器距离且其大于等于2、并且假定逻辑表达式评价可继续进行到下一个缓冲器的情况下,如果越过2个事件缓冲器结束的记录(使用2个半左右的事件缓冲器的记录)的匹配已完成,并且该检索核在该记录的匹配之后保持空闲状态,就会死锁(deadlock)。
因此,在本实施例的控制方法中,当进行上述的处理时,使用上述的状态标志(控制数据)和缓冲器距离(被保持在检索核内寄存器中,并且被复制在IO寄存器中)。
这里,说明各变量的操作规则。
首先,关于缓冲器距离的规则如下所述。
·若匹配进行到缓冲器末端,则加“1”(+1);
·若从σ缓冲器满接收到通知,则减“1”(-1)。
另外,关于状态标志的规则如下。
·初始状态为“0”;
·若匹配越过事件缓冲器,则设为“1”;
·若匹配已结束,则设为“2”。
这里,需要的条件判定方法如下。
A)σ评价函数的可启动条件判定。
·从种类阵列的开头开始记录状态标志不为“0”,则可启动。
B)σ缓冲器满函数的可结束条件判定(σ评价的重新开始)。
·若缓冲器距离大于等于“2”,则可结束(冲刷完成前)。
·若缓冲器距离大于等于“1”,则可结束(冲刷完成后)。
·若记录状态标志为“2”,则可结束。
C)写入检索核的匹配结果,判定有无超越。
·若缓冲器距离小于事件缓冲器个数(图16的例中为4),则未发生超越。
接下来,利用检索动作的2个例子进行说明。其中一个动作是没有发生事件缓冲器冲刷的通常的例子,另一个是事件缓冲器被冲刷时的例子。
图18A~图18C是用于说明调度器的动作的图,示出了检索动作中随时间经过的动作。
在图18A~图18C中,位于图中的上部分的块(CPU、L2高速缓冲存储器(或者Work RAM)、加速器、存储器)表示硬件类,位于它们内部的小块表示动作实体。为了简化说明,在图18A~图18C中示出了2个检索核SC(检索核0以及1)的构成,另外,假定记录按A、B、C、…的顺序排列。
即,条件是:检索核为2个、以及记录顺序为A、B、C、…,情况概要是:即使记录B匹配结束,也由于记录A匹配未结束而等待评价,并且即使记录C匹配结束,也由于记录D匹配未结束而等待评价。
接下来,对图18A~图18C中的左侧所示的(1)~(6)的各时间范围中的各动作实体的动作进行说明。
在时间范围(1)中
·σ检索(Sigma Search):当σ检索函数开始时,参考位于存储器中的XML数据的记录索引,获取与种类阵列的条目个数相等数目的记录信息种类阵列。适当改变登记top、bottom指针。在该阶段,登记top指向第一个条目、登记bottom指向最下面的条目。并且,将登记bottom复制到调度器的映射IO寄存器的登记bottom。
·σ评价(Sigma Evaluation):不存在。
·调度器:空闲模式。
·检索核:空闲模式。
在时间范围(2)中
·σ检索:将调度器变更为检索模式,开始逻辑表达式评价的等待。对登记top指针所指向的种类阵列条目(其中保存有记录A的记录信息)的记录状态标志进行轮询。在该时间点,由于标记为“0”,因此不进行任何动作。
·σ评价:不存在。
·调度器:转移到检索模式,从匹配top寄存器所指向的种类阵列条目中将2个记录信息保存到自己电路内的记录信息缓冲器(其个数相当于检索核的个数)中。将匹配top寄存器“+2”(使指针前进2个条目)。
并且,查看各检索核的空闲标志,检索核0和1为空闲状态,因此传递记录信息(指向记录的指针以及指向种类阵列条目的指针)、指示开始匹配,并将空闲标志设置为忙碌状态。然后,再次与上述同样地将记录信息缓冲到自己电路内。
接下来,再次监视空闲标志寄存器,并进行等待,直到能够将下一个记录分配给检索核为止。在该时间点,由于是忙碌状态,因此等待至变成空闲状态。
·检索核:各检索核0和1从指向从调度器传递过来的记录的指针开始进行匹配。首先,向传递而来的*种类阵列所指向的条目的检索核编号和*事件缓冲器分别写入自己核编号和位于自己电路内的*事件缓冲器寄存器的内容。并且,从存储器将从*记录起连续的几十个字节(字符缓冲器大小)的数据(字符缓冲器大小的字符串)取入到自己电路内的字符缓冲器中。
然后,从字符缓冲器每次使用一个字符,使保存在自己核内的自动机转移。若自动机为命中状态,则向自己核内的*事件缓冲器寄存器所指向的事件缓冲器条目中写入命中信息,使*事件缓冲器寄存器“+1”。每当命中时进行同样的处理。根据命中时的写入模式,也可以进行覆盖或者不写入等的动作。
这里,在字符缓冲器变空之前同样地取入接下来的几十字节,以使检索核不中止。虽然早晚会到达至记录末端,但这由检索核通过查看记录字符串来自己判别。
如果已到达末端,则将空闲状态通知给调度器(将空闲状态写入调度器的空闲标志),同时将种类阵列的记录状态标志设为“2”(记录匹配结束)。在该时间点,由于检索核0以及1均没有完成匹配,因此继续进行记录的读入和自动机转移。
在时间范围(3)中
·σ检索:继续进行(2)的轮询。在该时间点,虽然记录B结束了匹配,但由于开头记录A尚未结束匹配,因此继续进行轮询。
·σ评价:不存在。
·调度器:在每个周期查看检索核的空闲标志。由于不久后检索核1的空闲标志变为“0(空闲状态)”,因此向检索核传递第三个记录C的记录信息并指示进行匹配。并且,与(2)同样地将检索核1的空闲标志设为“1(忙碌状态)”,从种类阵列再次缓冲一个记录的记录信息。
·检索核:检索核0以及1继续进行字符串读入和自动机迁移,并且若命中则写入到事件缓冲器中。稍后,检索核1匹配结束,因此将调度器的空闲标志变更为“0”(空闲状态),将“2”写入到从调度器传递的*种类阵列所指向的条目的记录状态标志中。
在时间范围(4)中
·σ检索:继续进行(2)的轮询。在该时间点,由于记录A的记录状态标志变成了“2”,因此可进行逻辑表达式评价。还接着查看接下来的条目的标志,由于第二个条目为止可进行逻辑表达式评价,因此启动σ评价以对记录A和记录B进行逻辑表达式评价(传递记录A的种类阵列条目的地址和可评价记录数2作为参数)。
·σ评价:对记录A和记录B进行逻辑表达式评价,使用种类阵列的*事件缓冲器从事件缓冲器读取匹配结果进行逻辑表达式评价。记录ID(Record ID)虽使用于处理,但与本加速器无关。在该时间点,逻辑表达式评价尚未结束。
·调度器:进行与(3)同样的动作。这里,检索核0的记录A结束匹配,因此将下一个记录D分配给检索核0并指示进行匹配。与(3)一样,等待下一个记录的分配。
·检索核:进行与(3)同样的动作。检索核0被分配下一个记录D并开始进行匹配,检索核1继续进行记录C的匹配。
在时间范围(5)中
·σ检索:不进行任何动作。
·σ评价:继续进行逻辑表达式评价。
·调度器:进行与(3)同样的动作。这里,检索核0的记录D结束匹配,因此将下一个记录E分配给检索核0并指示进行匹配。与(3)一样,等待下一个记录的分配。
·检索核:进行与(3)同样的动作。检索核0被分配下一个记录E并开始进行匹配,检索核1继续进行记录C的匹配。
在时间范围(6)中
·σ检索:处理从σ评价返回。由于种类阵列中保存有记录A和记录B的条目不再需要,因此与(1)同样地参考XML数据索引,将接下来的2个新记录信息保存到种类阵列中。将检索top“+2”,将检索bottom“+2”(在阵列末尾元素之后接下来循环到开头元素)。
将检索bottom复制到调度器的映射寄存器。再次等待逻辑表达式评价变得可能,并对记录C的状态标志进行轮询,由于是“2”,因此在该时间点上可立即进行逻辑表达式评价。与(4)同样地指定记录C以及D,启动σ评价。
·σ评价:继续进行记录A以及B的逻辑表达式评价并完成该评价。之后,再次被调用,开始进行记录C以及D的逻辑表达式评价。
·调度器:进行与(3)同样的动作。这里,检索核1的记录C结束匹配,因此将下一个记录F分配给检索核1并指示进行匹配。与(3)一样,等待下一个记录的分配。
·检索核:进行与(3)同样的动作。检索核1被分配下一个记录F并开始进行匹配,检索核0继续进行记录E的匹配。
这里,图18A~图18C中的σ检索的用虚线包围的部分SSR、以及调度器的用虚线包围的部分SDR被重复。如上所述,在匹配处理中,与记录顺序无关并且也不管在先记录的匹配没有结束,只要检索核空闲,下一个记录就立即开始(参考箭头LB)。然而,逻辑表达式评价需要按记录顺序进行等待(参考箭头LR)。该控制使用种类阵列来进行。
另外,在图18A~图18C所示的实施例中,虽说明了在用于可否进行逻辑表达式评价的判定的信息(*登记top的状态标志)的等候中采用轮询的情况,但也可以使用硬件的中断。
图19A~图19C是用于说明事件缓冲器控制的问题的图,并示出了事件缓冲器为4个的情况。即,由于事件缓冲器是有限的,因此仅使用表示记录缓冲器的匹配结束的标志无法进行控制。另外,在图19A~图19C中,参考标号SP表示匹配结果起点、EP表示匹配结果终点、WP表示匹配结果写入位置、RP表示匹配结果读出位置。
首先,如图19A所示,没有问题的情况是匹配结果全都被集中在一个缓冲器内的情况。
接下来,作为有问题的第一种情况,如图19B所示,如果匹配结果大于所有事件缓冲器,则在此情况下,逻辑表达式评价不开始,处理陷入停顿。
并且,作为有问题的第二种情况,如图19C所示,如果写入超过了读出,则在此情况下,需要取得匹配和逻辑表达式评价的同步。
图20A~图20C是用于说明各数据的写入和读出关系的图,示出了以以各缓冲器为单位开始逻辑表达式评价并管理冲刷的情形。
首先,在图19B所示的匹配结果大于所有事件缓冲器的情况下(有问题的第一种情况),如图20A的PP1所示的那样,将匹配到达事件缓冲器的末端的信息附加到匹配信息标记中,在到达时间点上判定为能够进行逻辑表达式评价。
接下来,在图19C所示的写入超过读出的情况下(有问题的第二种情况),如图20B的PP2所示,追加保持匹配和逻辑表达式评价的距离的寄存器,以缓冲器为单位防止匹配的超出。
并且,如图20C的PP3所示,也可以在逻辑表达式评价进行至事件缓冲器末端时,冲刷该缓冲器。
在记录有分配给某一检索核的记录匹配结果(逻辑表达式评价)的事件缓冲器(本地存储器:例如,L2高速缓冲存储器)的末端EP中记载了指向其下一个事件缓冲器(存储区域)的开头的指针(SP’)。
图21是用于说明事件缓冲器控制用信息的图,与上述图15对应。
如图21所示,用于使逻辑表达式评价和匹配同步的缓冲器距离被保存在调度器SD中的缓冲器距离寄存器PQ1中,用于事件缓冲器冲刷的等待的冲刷完成标志被保存在调度器SD中的冲刷完成标志PQ2中。
另外,各检索核SC(检索核0~3)的空闲状态(空状态)被保持在调度器SD中设置的寄存器PQ3中,使得调度器SD能够判断空着的检索核。
管理共享数据中的多个记录的管理信息被临时保持在调度器SD中设置的缓冲器PQ4中。
并且,匹配状态标志记录通过检索核进行的记录的匹配状态,并被使用于逻辑表达式评价可否进行的判定以及缓冲器冲刷时的逻辑表达式评价可否重新开始的判定,因此,例如被保存在L2高速缓冲存储器的PQ5中。检索核编号是对记录进行匹配或者已匹配的检索核的编号,当冲刷缓冲器时被使用,例如被保存在L2高速缓冲存储器的PQ6中。
图22A~图22C是用于说明事件缓冲器冲刷时的动作例的图,示出了事件缓冲器冲刷时随时间经过的动作。
在参考图18A~图18C说明的例子中,假定事件缓冲器大小无限大的情形进行了说明。然而,实际上事件缓冲器大小是有限的,因此将事件缓冲器分割成2个以上来交替使用。这里,说明这种情形的例子。
另外,为了简化说明,在图22A~图22C中,示出了检索核为一个并且事件缓冲器为2个的构成,并且示出了某记录A的匹配结果的大小达到总计2个以上的事件缓冲器大小的情形。
即,条件是:检索核为一个并且事件缓冲器为2个;情况概要是:记录A的匹配越过了缓冲器,因此可进行评价;在第一次缓冲器冲刷时,记录A的匹配越过了第二个缓冲器,因此可结束;并且,在第二次缓冲器冲刷时,记录A的匹配没有越过第三个缓冲器,因此进行等候。
接下来,说明图22A~图22C中左侧所示的(1)~(7)的各时间范围中的各动作实体的动作。
在时间范围(1)中
·σ检索:对记录A的状态标志进行轮询以等待记录A的逻辑表达式评价变得可能。在该阶段,σ检索持续轮询。
·σ评价:不存在。
·σ缓冲器满:不存在。
·调度器:通过查看检索核的空闲(idle)标志来等待下一个记录B的分配变得可能。在该阶段,由于该标志维持“1”(忙碌状态),因此继续等待。
·检索核:处于记录A的匹配过程中,与通常时一样,从存储器取出记录字符串并使自动机转移。并且,若命中则将命中信息写入到事件缓冲器中。在写入命中信息的期间,如果写入目的地地址到达至第一个事件缓冲器的末端,则向种类阵列的状态标志写入“1”(通知越过了事件缓冲器)。然后,将缓冲器距离寄存器“+1”。
在时间范围(2)中
·σ检索:当对状态标志进行轮询时,由于状态标志为“1”,因此调用σ评价,以对记录A进行逻辑表达式评价。
·σ评价:与通常时一样,对所递来的记录A开始进行逻辑表达式评价。此时,从事件缓冲器参考命中信息。
·σ缓冲器满:不存在。
·调度器:与(1)相同,无变化。
·检索核:将命中信息写入到第二个事件缓冲器。此外,与(1)相同。
在时间范围(3)中
·σ检索:等待σ评价完成。
·σ评价:继续进行(2)的逻辑表达式评价。
·σ缓冲器满:不存在。
·调度器:与(2)相同,无变化。
·检索核:与(1)一样,在写入命中信息的期间,写入目的地地址到达至第一个事件缓冲器的末端。这一次,由于状态标志为“1”,因此不特意向外部进行通知。将缓冲器距离寄存器“+1”。此时,缓冲器距离寄存器=2,不小于事件缓冲器个数(2个),因此第一个事件缓冲器被逻辑表达式评价消耗,但该评价尚未结束,因此该检索核中止。
在时间范围(4)中
·σ检索:与(3)同样地等待σ评价结束。
·σ评价:由于逻辑表达式评价中所参考的事件缓冲器的命中信息的内容表示缓冲器末端(在事件缓冲器的末端预先写入有表示末端的比特模式和指向下一个事件缓冲器的指针),因此调用σ缓冲器满。将指向该记录的种类阵列条目的指针传递给参数。不久,σ缓冲器满结束,从下一个事件缓冲器的开头起重新开始逻辑表达式评价。
·σ缓冲器满:从传来的指向种类阵列条目的指针推测出检索核编号。并且,检查对应的冲刷完成标志是否为“0”。由于为“0”,因此向标志写入“1”,并获得缓冲器距离拷贝。
另外,将检索核编号传递给调度器,指示该检索核的事件缓冲器冲刷(在该例子中,由于只有一个检索核,因此没有必要指定检索核编号,但在一般情况下是需要的。)
接下来,判断之前获得的缓冲器距离拷贝(IO寄存器)是否为2以上或者状态标志是否为“2”。由于缓冲器距离拷贝为“2”,因此函数可立即结束。进行等待直到逻辑表达式评价可重新开始。
·调度器:由于接收了冲刷指示和检索核编号0,因此向对应的检索核0下达冲刷指示。
·检索核:由于在中止当中接收到冲刷指示命令,因此将缓冲器距离寄存器“-1”,将该内容覆盖到调度器的缓冲器距离寄存器的拷贝上。并且,将冲刷完成标志设为“0”。并且,由于缓冲器距离为“1”,因此重新开始匹配。
在时间范围(5)中
·σ检索:与(4)同样地等待σ缓冲器满结束。
·σ评价:与(4)同样地由于已达到事件缓冲器末端,因此再次调用σ缓冲器满。此后,等待σ缓冲器满结束。
·σ缓冲器满:直到向调度器发出指示为止与(4)一样。若在该时间点冲刷完成标志为“1”,则进行等待(前1次的冲刷。在该情况下没有关系)。接下来,由于预先保存的缓冲器距离为“1”,因此对冲刷完成标志和缓冲器距离进行轮询并等候。等待成为(冲刷完成标志=0并且(缓冲器距离≥1或者状态标志=2))。
·调度器:与(4)同样地指示冲刷。
·检索核:与(4)同样地进行冲刷,并继续进行匹配。
在时间范围(6)中
·σ检索:与(5)同样地等待σ评价结束。
·σ评价:等待σ缓冲器满结束。稍后,σ缓冲器满结束,从下一个事件缓冲器的开头重新开始逻辑表达式评价。
·σ缓冲器满:接(5)之后继续轮询,稍后,缓冲器距离=1,但状态标志=2,因此结束。
·调度器:等待下一个记录的分配,由于从检索核0通知来空闲状态,因此分配下一个记录B。再次填充记录信息缓冲器,变成等待分配下一个记录的状态。
·检索核:记录匹配完成,并将其通知给种类阵列和调度器。传来下一个记录B,从而开始匹配。
在时间范围(7)中
·σ检索:接在(6)之后继续等待σ评价结束。不久σ评价结束,向空的种类阵列条目填充接下来的记录信息,等待逻辑表达式评价变得可能。在该时间点,由于记录B的匹配尚未结束,因此进行等待。
·σ评价:逻辑表达式评价结束,函数结束。
·σ缓冲器满:不存在。
·调度器:接在(6)之后继续等待下一个记录的分配。
·检索核:接在(6)之后继续匹配记录B。
以上,对实施例中的动作进行了说明,下面,参考流程图对各函数的检索动作进行说明。
图23是用于与流程图关联起来说明API函数和调用过程的图。在图23中,左侧部分的图相当于将图5所示的检索顺序图改写的图,中间部分的图与用于说明各API函数和调用过程的图13相同。
如图23所示,本实施例作为对象的动作是与检索顺序图中的记录匹配处理、匹配结果处理、逻辑表达式评价处理以及检索结果处理对应的检索动作。这里,在检索动作(在图23中用粗线包围的部分)中,匹配执行启动13与图24所示的σ检索处理对应,逻辑表达式评价137与图27所示的σ评价处理对应,并且,加速器库138内的缓冲器满处理139与图28所示的σ缓冲器满处理对应。
以下,参考各流程图来说明σ检索处理、σ评价处理以及σ缓冲器满处理。
图24是示出σ检索处理的一个例子的流程图。这里,σ检索(SigmaSearch)处理是主程序,是用于开始检索动作的处理(函数)。
一旦开始σ检索处理,首先在步骤ST1中,首先参考(扫描)XML索引,将记录信息存储到种类阵列中,然后前进到步骤ST2。
在步骤ST2中,将加速器改为匹配模式,前进到步骤ST3,并进行轮询。这里,在轮询中,对下一个评价记录条目的状态标志进行轮询。
并且,如果逻辑表达式评价可进行,则在步骤ST4中,确定σ评价(Sigma Evaluation)的参数,前进到步骤ST5,调用σ评价。这里,也可以对传递的记录的个数设置下限或上限。
接下来,前进到步骤ST6,等待σ评价结束,然后前进到步骤ST7,若σ评价已结束,则向存储有已传递的记录信息的种类阵列条目中填充新的记录信息,并前进到步骤ST8。
在步骤ST8中,判定XML数据的XML索引是否已到达末端。在步骤ST8中,当判定为XML数据的XML索引没有到达末端时,返回到步骤ST3,重复同样的处理。
另一方面,在步骤ST8中,当判定出XML数据的XML索引已到达末端时,前进到步骤ST9,向加速器通知向空闲状态的转移条件,并前进到步骤ST10。
在步骤ST10中,判定逻辑表达式评价是否结束,当判定为逻辑表达式评价已结束时,结束函数,否则返回到步骤ST3的轮询,重复同样的处理。
图25是示出逐条目等待图24的σ评价时的流程图,图26是针对每多个条目等待图24的σ评价时的流程图。
如图25所示,当逐条目等候图24的σ评价时,首先在步骤ST21中,向种类阵列的所有条目按记录顺序(记录被排序的顺序)保存记录管理信息,接着前进到步骤ST22,启动加速器。
然后,前进到步骤ST23,等候种类阵列的开头条目的匹配完成,前进到步骤ST24。在步骤ST24中,执行开头条目记录的逻辑表达式评价,然后前进到步骤ST25。
在步骤ST25中,向种类阵列填充一个记录的记录管理信息,使开头条目前进1。
然后,前进到步骤ST26,判定数据库的所有记录的处理是否都结束,若判定出没有结束,则返回到步骤ST23,重复同样的处理,若判断出数据库的所有记录的处理都结束,则结束处理。
如图26所示,当针对每多个条目等候图24的σ评价时,首先在步骤ST31中,向种类阵列的所有条目按记录顺序保存记录管理信息,接着前进到步骤ST32,启动加速器。
然后,前进到步骤ST33,等候种类阵列的开头条目的匹配完成,前进到步骤ST34。在步骤ST34中,按记录顺序对下述多个记录进行逻辑表达式评价,所述多个记录是从开头条目起按记录顺序连续地完成匹配的记录,然后前进到步骤ST35。
在步骤ST35中,向种类阵列中填充与进行了逻辑表达式评价的记录数相同数目的记录管理信息,并且使开头条目前进已处理条目的个数。
然后,前进到步骤ST36,判定对数据库的所有记录的处理是否都结束,若判定出没有结束,则返回步骤ST33,重复同样的处理,若判定出数据库的所有记录的处理都结束,则结束处理。
图27是示出σ评价处理的一个例子的流程图。这里,σ评价(SigmaEvaluation)是用于进行逻辑表达式评价的函数,如果在σ检索中判断出可进行逻辑表达式评价,则被调用。
如图27所示,当被请求的开头记录的种类阵列条目地址和从该地址开始的记录个数被传递到该函数时,首先在步骤ST41中,设为a=(记录种类结构体阵列的当前记录的事件缓冲器的地址)、b=1,然后前进到步骤ST42。在步骤ST42中,从种类阵列中获取记录ID,前进到通常动作的步骤ST5(通常动作环)。即,将开头记录作为当前记录开始进行逻辑表达式评价,从事件缓冲器读取各条目并进行评价。
步骤ST5包括步骤ST51~ST54,首先在步骤ST51中,读取a所指的匹配结果,执行逻辑表达式评价。
接下来,前进到步骤ST52,a++,进而前进到步骤ST53,判定是否(a所指的条目)==(记录结果的末端条目)。
在步骤ST53中,当判定出(a表示的先前的条目)==(记录结果的末端条目)时,前进到记录结束时的环(步骤ST6)的步骤ST61,相反,当判定出(a所指的条目)==(记录结果的末端条目)时,前进到步骤ST54。
在步骤ST61中,判定是否b==(已传递的记录个数),当判定出b==(已传递的记录个数)时,在步骤ST62中,设定a=(下一个记录匹配结果的开头地址),b++,返回到步骤ST42,重复同样的处理。并且,在步骤ST61中,当判定出b==(已传递的记录个数)时,结束处理。
即,如果当前记录结束,则设定下一个记录,返回到通常动作,若当前记录没有结束,则处理结束。
在步骤ST54中,判定是否(a所指的条目)==(事件缓冲器末端的条目),当判定出(a所示的条目)==(事件缓冲器末端的条目)时,前进到缓冲器满时的步骤ST7中的步骤ST71,启动σ缓冲器满,并前进到步骤ST72。
然后,在步骤ST72中,设定a=(下一个事件缓冲器的开头条目的地址),并返回到步骤ST51,并且当在步骤ST54中判定出*a==事件缓冲器末端的条目时,也返回到步骤ST51,重复同样的处理。
即,若到达事件缓冲器末端,则调用σ缓冲器满,并且处理等待返回,然后回到通常动作。
图28是示出σ缓冲器满处理的一个例子的流程图。这里,σ缓冲器满(Sigma Buffer Full)是负责进行事件缓冲器的切换的函数,其指示对应的检索核的事件缓冲器的冲刷,并且如果在σ评价中已到达事件缓冲器末端,则被调用。
如图28所示,首先在步骤ST81中,检索与传来的种类阵列元素对应的检索核编号,前进到步骤ST82。即,要冲刷的事件缓冲器的种类阵列条目的地址被作为参数传递,检索核编号使用该地址参考种类阵列来获得。
在步骤ST82中,判定是否冲刷完成标志=1,并进行处理直到判定冲刷完成标志=1为否定,一旦判定冲刷完成标志=1为否定,就前进到步骤ST83。
在步骤ST83中,设为冲刷完成标志=1,前进到步骤ST84,获得缓冲器距离拷贝。即,进行等待直到对该检索核的上一次冲刷指示准备就绪,若可下达冲刷指示,则在该时间点获得作为调度器的IO寄存器的缓冲器距离拷贝。
并且,进入到步骤ST85,向调度器指示缓冲器冲刷并通知检索核编号,前进到步骤ST86。
在步骤ST86中,判定是否缓冲器距离拷贝≥2、或者状态标志=2,当判定出缓冲器距离拷贝≥2不成立且状态标志=2也不成立时,前进到进行轮询的步骤ST9,当判定出缓冲器距离拷贝≥2或状态标志=2时,结束处理。
即,根据先前获得的缓冲器距离拷贝的值和种类阵列的状态标志来判定可否结束。如果结束,则重新开始逻辑表达式评价。
然后,在步骤ST9的步骤ST91~ST93中,对冲刷完成标志进行轮询,接着,对状态标志和缓冲器距离拷贝进行轮询,等候可能状态。
即,在步骤ST91中,判定是否冲刷完成标志=0,并继续处理,直到判定出冲刷完成标志=0,当判定出冲刷完成标志=0时,前进到步骤ST92,再次获得缓冲器距离拷贝,前进到步骤ST93。
在步骤ST93中,判定是否缓冲器距离≥1或者状态标志=2,当判定出缓冲器距离拷贝≥2不成立并且状态标志=2也不成立时,返回到步骤ST92,重复同样的处理,当判定出缓冲器距离≥1或状态标志=2时,结束处理。
在上述的各实施例中,虽然主要说明了进行自动机处理的检索装置以及检索方法,但也能够适用于其输入数据以及中间数据具有特点的通常的并行处理系统,尤其适用于按预定规则对具有上述特点的数据进行处理的检索装置以及检索方法。
Claims (19)
1.一种检索装置,包括:CPU、具有调度器和多个计算机处理器检索核的加速器装置、事件缓冲器、以及记录种类阵列,所述检索装置的特征在于,
所述CPU按照被输入的检索表达式来生成用于在所述加速器装置的所述各计算机处理器检索核上执行的自动机,
所述调度器将处理对象文本以被排序的记录的单位分配给所述各计算机处理器检索核,
所述各计算机处理器检索核对所述被分配的各记录分别并行地进行自动机记录匹配,
所述CPU按所述各记录的所述排序的顺序对以所述各记录单位从所述加速器装置的所述各计算机处理器检索核获得的匹配结果进行逻辑表达式评价,
所述事件缓冲器保存所述加速器装置执行的自动机记录匹配的结果,
所述记录种类阵列以所述排序的顺序保存所述事件缓冲器中的匹配结果的指针以通过消除按匹配顺序维持匹配结果记录的需要来实现并行处理。
2.如权利要求1所述的检索装置,其特征在于,
所述处理对象文本的所述各记录以及所述各记录的所述匹配结果在各自的数据大小上不具有规则性。
3.如权利要求1所述的检索装置,其特征在于,
所述检索装置还包括本地存储器,该本地存储器保存所述CPU以及所述各计算机处理器检索核的共享数据,
所述共享数据包括所述事件缓冲器、所述记录种类阵列,以及管理信息,所述管理信息用于管理多个记录,
所述各记录的所述排序作为所述管理信息被保持在所述本地存储器中。
4.如权利要求3所述的检索装置,其特征在于,
将所述本地存储器的2个或2个以上存储区域分配给所述各计算机处理器检索核。
5.如权利要求4所述的检索装置,其特征在于,
分配给所述各计算机处理器检索核的所述存储区域的末端记载了指向下一个存储区域的开头的指针。
6.如权利要求3所述的检索装置,其特征在于,
所述管理信息通过阵列或列表结构来保持应匹配的文本群的顺序。
7.如权利要求3所述的检索装置,其特征在于,
所述调度器读入所述管理信息,按所述排序的顺序将所述管理信息分配给空闲的所述计算机处理器检索核并指示进行匹配,计算机处理器检索核随机完成匹配。
8.如权利要求7所述的检索装置,其特征在于,
所述调度器包括寄存器,该寄存器保持用于判断所述空闲的所述计算机处理器检索核的信息。
9.如权利要求8所述的检索装置,其特征在于,
所述调度器包括临时保存所述管理信息的缓冲器。
10.如权利要求1至9中任一项所述的检索装置,其特征在于,
所述处理对象文本是结构化文档,
所述各计算机处理器检索核从所述结构化文档的数据中检索预定的字符串。
11.如权利要求10所述的检索装置,其特征在于,
所述结构化文档是XML文档。
12.一种半导体芯片,其特征在于,结合了多个权利要求1至11中任一项所述的检索装置。
13.如权利要求12所述的半导体芯片,其特征在于,所述半导体芯片具有2个权利要求1至8中任一项所述的检索装置。
14.一种处理器模块,其特征在于,
结合了多个权利要求12或13所述的半导体芯片,并且
具有针对所述各半导体芯片分别设置的多个存储器。
15.一种检索服务器,其特征在于,
结合多个权利要求14所述的处理器模块,并且
具有所述各检索核能够访问的主存储装置。
16.一种检索系统,其特征在于,包括:
权利要求15所述的检索服务器;
保存有检索对象的数据的储存服务器;以及
对所述检索服务器以及所述储存服务器进行管理的定向服务器。
17.一种检索装置执行的检索方法,
所述检索方法包括:
在检索装置中配置CPU,具有调度器和多个计算机处理器检索核的加速器装置、事件缓冲器、以及记录种类阵列,
配置所述检索装置来执行以下处理:通过所述CPU按照被输入的检索表达式来生成用于在所述加速器装置的所述各计算机处理器检索核上执行的自动机,通过所述加速器装置的所述调度器将处理对象文本以被排序的记录的单位分配给所述加速器装置的所述各计算机处理器检索核,
通过所述加速器装置的所述各计算机处理器检索核对所述被分配的各记录分别并行地进行自动机记录匹配,通过所述CPU按所述各记录的所述排序的顺序对以所述各记录单位从所述加速器装置的所述各计算机处理器检索核获得的匹配结果进行逻辑表达式评价,
将来自所述加速器装置的自动机记录匹配结果存储在事件缓冲器中,
以所述排序的顺序将所述事件缓冲器中的匹配结果的指针保存在记录种类阵列中,以通过消除按匹配顺序维持匹配结果记录的需要来实现并行处理。
18.如权利要求17所述的检索方法,其特征在于,
所述处理对象文本的所述各记录以及所述各记录的所述匹配结果在各自的数据大小上不具有规则性。
19.如权利要求17或18所述的检索方法,其特征在于,
所述调度器读入管理信息,按所述排序的顺序将所述管理信息分配给空闲的所述计算机处理器检索核并指示进行匹配,计算机处理器检索核随机完成匹配,其中,所述管理信息是在所述CPU以及所述计算机处理器检索核的共享数据中用于管理多个记录的信息。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2008/061913 WO2010001464A1 (ja) | 2008-07-01 | 2008-07-01 | 検索装置および検索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102084357A CN102084357A (zh) | 2011-06-01 |
CN102084357B true CN102084357B (zh) | 2014-06-04 |
Family
ID=41465580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880130230.2A Expired - Fee Related CN102084357B (zh) | 2008-07-01 | 2008-07-01 | 检索装置以及检索方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8423499B2 (zh) |
JP (1) | JP5110162B2 (zh) |
CN (1) | CN102084357B (zh) |
WO (1) | WO2010001464A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5195408B2 (ja) * | 2008-12-25 | 2013-05-08 | 富士通セミコンダクター株式会社 | マルチコアシステム |
US10698953B2 (en) * | 2009-10-30 | 2020-06-30 | Oracle International Corporation | Efficient XML tree indexing structure over XML content |
CN103064841A (zh) * | 2011-10-20 | 2013-04-24 | 北京中搜网络技术股份有限公司 | 检索装置和检索方法 |
WO2014163072A1 (ja) * | 2013-04-01 | 2014-10-09 | 日本電気株式会社 | 情報処理装置、情報処理方法およびプログラム |
CN103699418B (zh) * | 2013-12-27 | 2016-08-24 | 飞天诚信科技股份有限公司 | 一种检索外部sd卡的方法及装置 |
US10860577B2 (en) * | 2015-12-24 | 2020-12-08 | Hitachi, Ltd. | Search processing system and method for processing search requests involving data transfer amount unknown to host |
CN110827108B (zh) * | 2018-08-13 | 2023-05-26 | 阿里巴巴集团控股有限公司 | 信息搜索方法、搜索请求控制方法及系统 |
KR20210149327A (ko) | 2020-06-02 | 2021-12-09 | 에스케이하이닉스 주식회사 | 역색인 구조를 이용하여 검색을 수행하는 하드웨어 가속기 및 이를 포함하는 검색 시스템 |
US11640380B2 (en) | 2021-03-10 | 2023-05-02 | Oracle International Corporation | Technique of comprehensively supporting multi-value, multi-field, multilevel, multi-position functional index over stored aggregately stored data in RDBMS |
CN113468047B (zh) * | 2021-06-17 | 2022-05-17 | 天津大学 | 基于启发式规则的并发式自适应随机测试方法 |
CN116521969B (zh) * | 2023-02-28 | 2023-12-29 | 华为云计算技术有限公司 | 一种数据检索方法、服务端、系统及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4876643A (en) * | 1987-06-24 | 1989-10-24 | Kabushiki Kaisha Toshiba | Parallel searching system having a master processor for controlling plural slave processors for independently processing respective search requests |
CN1229218A (zh) * | 1998-03-17 | 1999-09-22 | 松下电器产业株式会社 | 信息检索装置和方法 |
CN101187937A (zh) * | 2007-10-30 | 2008-05-28 | 北京航空航天大学 | 网格环境下模式复用的异构数据库访问和集成方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4550436A (en) * | 1983-07-26 | 1985-10-29 | At&T Bell Laboratories | Parallel text matching methods and apparatus |
US5452451A (en) * | 1989-06-15 | 1995-09-19 | Hitachi, Ltd. | System for plural-string search with a parallel collation of a first partition of each string followed by finite automata matching of second partitions |
JP2865831B2 (ja) | 1990-08-31 | 1999-03-08 | 株式会社日立製作所 | 並列ストリング・サーチ装置 |
JPH0696124A (ja) * | 1992-09-11 | 1994-04-08 | Sumitomo Metal Ind Ltd | 情報検索装置 |
EP1402254A1 (en) * | 2001-05-04 | 2004-03-31 | Paracel, Inc. | Method and apparatus for high-speed approximate sub-string searches |
US20050165765A1 (en) * | 2003-03-18 | 2005-07-28 | Fujitsu Limited | Information search system, information search method, information search apparatus, and recording medium to which information search program, is recorded and which can be read by computer |
WO2004084095A1 (ja) * | 2003-03-18 | 2004-09-30 | Fujitsu Limited | 情報検索システム |
JP4111064B2 (ja) | 2003-04-21 | 2008-07-02 | コクヨ株式会社 | 部材の取付構造 |
US7685254B2 (en) * | 2003-06-10 | 2010-03-23 | Pandya Ashish A | Runtime adaptable search processor |
JP4347087B2 (ja) * | 2004-02-26 | 2009-10-21 | 日本電信電話株式会社 | パターンマッチング装置および方法ならびにプログラム |
US7590620B1 (en) * | 2004-06-18 | 2009-09-15 | Google Inc. | System and method for analyzing data records |
WO2007103397A2 (en) * | 2006-03-07 | 2007-09-13 | The Regents Of The University Of California | Pattern matching technique for high throughput network processing |
JP4422697B2 (ja) * | 2006-05-08 | 2010-02-24 | 株式会社日立製作所 | データベース管理システムおよび問合せの処理方法 |
US7996348B2 (en) * | 2006-12-08 | 2011-08-09 | Pandya Ashish A | 100GBPS security and search architecture using programmable intelligent search memory (PRISM) that comprises one or more bit interval counters |
US8055601B2 (en) * | 2006-12-08 | 2011-11-08 | Pandya Ashish A | Compiler for compiling content search rules comprising a regular expression using a programmable intelligent search memory (PRISM) and vectors |
US9021582B2 (en) * | 2007-04-24 | 2015-04-28 | Juniper Networks, Inc. | Parallelized pattern matching using non-deterministic finite automata |
US9164945B2 (en) * | 2008-12-01 | 2015-10-20 | Micron Technology, Inc. | Devices, systems, and methods to synchronize parallel processing of a single data stream |
-
2008
- 2008-07-01 CN CN200880130230.2A patent/CN102084357B/zh not_active Expired - Fee Related
- 2008-07-01 WO PCT/JP2008/061913 patent/WO2010001464A1/ja active Application Filing
- 2008-07-01 JP JP2010518850A patent/JP5110162B2/ja not_active Expired - Fee Related
-
2010
- 2010-12-21 US US12/974,877 patent/US8423499B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4876643A (en) * | 1987-06-24 | 1989-10-24 | Kabushiki Kaisha Toshiba | Parallel searching system having a master processor for controlling plural slave processors for independently processing respective search requests |
CN1229218A (zh) * | 1998-03-17 | 1999-09-22 | 松下电器产业株式会社 | 信息检索装置和方法 |
CN101187937A (zh) * | 2007-10-30 | 2008-05-28 | 北京航空航天大学 | 网格环境下模式复用的异构数据库访问和集成方法 |
Non-Patent Citations (1)
Title |
---|
JP特开平6-96124 1994.04.08 |
Also Published As
Publication number | Publication date |
---|---|
JP5110162B2 (ja) | 2012-12-26 |
US20110093429A1 (en) | 2011-04-21 |
CN102084357A (zh) | 2011-06-01 |
JPWO2010001464A1 (ja) | 2011-12-15 |
WO2010001464A1 (ja) | 2010-01-07 |
US8423499B2 (en) | 2013-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102084357B (zh) | 检索装置以及检索方法 | |
CN100541665C (zh) | 可编程并行查找存储器 | |
CN100421088C (zh) | 用于管理高速缓存数据的数字数据处理设备和方法 | |
US7284102B2 (en) | System and method of re-ordering store operations within a processor | |
CN109085997A (zh) | 用于非易失性存储器的存储器高效持续键值储存 | |
CN105117355A (zh) | 存储器、存储器系统及其数据处理方法 | |
CN107844266A (zh) | 使用映射表的缓冲区分配和存储器管理 | |
CN108205499A (zh) | 用于将数据处理转移到混合存储设备的方法和装置 | |
CN108959113A (zh) | 用于闪存感知堆存储器管理的方法和系统 | |
CN108139882B (zh) | 针对网络装置实施阶层分布式链接列表的系统及方法 | |
US20100312968A1 (en) | Arithmetic processing apparatus and method of controlling the same | |
CN110096221A (zh) | 存储器系统及其控制方法 | |
JPH01500377A (ja) | 2個のシステムクロックサイクルを利用する書込み動作をもったキャッシュメモリユニットを供与する装置及び方法 | |
CN1545658A (zh) | 具有双端口存储器仿真配置的交换结构 | |
CN115454502B (zh) | 用于调度simt架构处理器的返回数据的方法及相应处理器 | |
CN105393210A (zh) | 用于模拟共享存储器结构的存储器单元 | |
CN101692213B (zh) | 通用串行总线主机控制方法和通用串行总线主机控制器 | |
CN109074313A (zh) | 缓存和方法 | |
CN115168248A (zh) | 支持simt架构的高速缓冲存储器及相应处理器 | |
CN1607510B (zh) | 改善高速缓存性能的方法和系统 | |
CN1804792B (zh) | 在长等待时间指令执行期间允许存储转发的方法和系统 | |
CN103577347A (zh) | 用于操作存储器设备的方法和用于存储器操作的系统 | |
US10372337B2 (en) | Write request processing method and memory controller | |
US20210318955A1 (en) | System and method for allocating memory space | |
CN1052562A (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 | ||
C14 | Grant of patent or utility model | ||
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: 20140604 Termination date: 20180701 |