CN1306449C - 并行模式检测引擎集成电路、相关方法及数据处理系统 - Google Patents

并行模式检测引擎集成电路、相关方法及数据处理系统 Download PDF

Info

Publication number
CN1306449C
CN1306449C CNB2005100001359A CN200510000135A CN1306449C CN 1306449 C CN1306449 C CN 1306449C CN B2005100001359 A CNB2005100001359 A CN B2005100001359A CN 200510000135 A CN200510000135 A CN 200510000135A CN 1306449 C CN1306449 C CN 1306449C
Authority
CN
China
Prior art keywords
data
processing unit
pattern
input
sequence
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
Application number
CNB2005100001359A
Other languages
English (en)
Other versions
CN1641685A (zh
Inventor
K·A·克拉韦克
A·G·塞义迪
J·M·斯莱费尔德
P·R·塔恩霍夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Trend Technology Corp.
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1641685A publication Critical patent/CN1641685A/zh
Application granted granted Critical
Publication of CN1306449C publication Critical patent/CN1306449C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/75Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
    • G06V10/751Comparing pixel values or logical combinations thereof, or feature values having positional relevance, e.g. template matching

Abstract

一种并行模式检测引擎(PPDE)包括多个被定制为执行各种模式识别方式的处理单元(PU)。将不同模式装入到这些PU中,并且将待匹配的输入数据并行地提供给这些PU。每个模式具有一操作码,其定义了当在一个时钟周期中输入数据流中的一特定数据与被比较的相应数据匹配或者不匹配时所采取的动作。每个PU传递所选的信息,从而可将这些PU级联起来,以使得对于一特定的输入数据流能够匹配更长的模式或者允许并行处理更多的模式。

Description

并行模式检测引擎集成电路、相关方法及数据处理系统
技术领域
本发明一般涉及用于执行快速部分或精确模式(pattern)匹配的方法和系统。
背景技术
识别一组数据中的模式在很多领域包括语音识别、图像处理、地震数据等中都是重要的。某些图像处理器收集图像数据并随后预处理该数据以使其与基准数据相关联。其他系统例如语音识别系统是实时的,其中实时地将输入数据与基准数据相比较以识别模式。一旦模式被“识别”或与基准相匹配,则系统可输出该基准。例如,语音识别系统可输出与被处理的语音模式等价的文本。其他系统如生物系统可使用类似技术来确定分子串例如DNA的序列。
在某些系统中,需要发现嵌入连续数据流中的模式。在非对齐的数据流中,如果实施的仅是单一的逐字节比较,则存在可能错失模式的情况。当在输入流或要检测的模式中存在重复的或嵌套重复的模式时,将发生可能错失模式的情况。包含正被寻找的序列的一基准模式(RP)被装入存储器中,在存储器中该序列的每个元素具有唯一地址。将与输入模式(IP)的第一个元素相比较的、该RP的第一个元素的地址被装入一地址寄存器中。该地址寄存器称为“指针”。在通常情况下,可向一指针装入一或者递增(增加)或者递减(减少)的地址。该指针所指向的元素被检索出来并与随时钟输入或装入一比较器中的输入元素(IE)进行比较。
在模式识别中,经常希望将一IP的各元素与很多RP进行比较。例如,可能希望比较从扫描一指纹得到的一IP(对于在指纹技术中定义的某些特征组合,典型地为1千字节大小)与一RP库(存档的所有扫描结果)。为快速完成工作,可将每个RP的元素并行地与IP中的元素相比较。每个RP可能有重复的子串(短模式),这些子串是嵌入该RP中的较小的模式。因为RP库可能非常大,所需的处理量可能是相当大的。希望有一种方法来减少保存这些RP所需的存储量。如果能够减少用来表示RP的数据的量,则也会减少装载和卸载RP所需的时间。并行处理也可用于每个RP和IP被装入不同的处理单元以确定匹配的场合。
生物系统中的其他模式识别处理可能需要比较一IP与所存储的大量具有重复的子串的RP。在小的并行处理单元中的处理可能受限于RP所需的存储器大小。用于化学分析、生物分析等的便携式的、廉价的处理系统也会受限于快速处理大量RP所需的存储量。
模式检测或识别是当今很多应用的瓶颈,并且软件解决方案无法达到所需的性能。希望有一种用于快速匹配模式的可扩展的硬件解决方案。还希望有一种允许多种方式(mode)的模式识别的系统。某些应用要求在输入数据流中的模式与希望的目标模式的精确匹配。在其他情况下,希望确定最长的匹配、最大字符数的匹配、或者需要各种字符包含或排除的“模糊”匹配。
因此,需要一种用于模式检测的、方式可编程的、并包括大量并行处理单元的方法和系统,其是可扩展的以使能可变模式长度的匹配,以及允许添加附加的处理单元以加速匹配速度。
发明内容
一种并行模式检测引擎(PPDE)包括大量小的执行模式检测的处理单元(PU)构建块。这些处理单元具有多种模式检测方式,并且每个都具有用于存储模式的存储器。一个大的并行接口总线将输入数据提供给一输入缓冲器。所选的输入数据并行地与每个处理单元连接,从而每个处理单元并行地比较在并行总线上接收到的输入数据。每个处理单元也连接到一并行地址总线,从而检测模式数据可有选择地装入每个处理单元。每个处理单元的地址包括其标识(ID)。根据其特定方式产生其检测模式与输入数据中的一模式的匹配的处理单元使其相应ID由一ID选择单元转送到一输出缓冲器。来自输出缓冲器的数据被耦合到所述接口总线,以便发送一特定输入数据流比较的结果。每个处理单元具有一“链接的”(chaining)级联的通信接口,该通信接口允许一特定处理单元耦合到其相应的相邻处理单元,以产生比单个处理单元能够处理的更大的检测模式或确定特定类型的模式匹配。所述并行输入总线结构和链接通信接口便利了添加平行模式检测引擎组来创建更大的系统,以便提高速度或者处理大量的模式或者达到为了这两者。
更为优选地,本发明提供的集成电路的M个处理单元中的每一个具有控制寄存器,用于存储所述匹配方式数据,其中所述匹配方式数据确定用于产生该匹配信号和该匹配数据的标准。
更为优选地,当所选模式与输入数据进行比较时,该所选模式的一些位由存储在屏蔽寄存器中的屏蔽数据所屏蔽,该屏蔽数据指示所选模式的哪些位不进行比较。
以上相当粗略地概述了本发明的特征和技术优点,以便更好地理解以下对本发明的详细描述。本发明的其他特征和优点将在下文中描述,它们构成了本发明要求保护的主题。
附图说明
为了更完整地理解本发明及其优点,现结合附图参照以下描述,在附图中:
图1是根据本发明的实施例由N个处理单元构成的并行模式检测引擎(PPDE)的结构框图;
图2A-2D是可以为图1的N个处理单元(PU)中的每一个编程的4种匹配方式的框图;
图3是示出本发明的PPDE的可伸缩性的各种方式的图示;
图4是在本发明的实施例中使用的方法步骤的流程图;
图5是根据本发明的实施例的单个PU的概略框图;
图6是根据本发明的实施例的单个PU的详细框图;
图7是一PU体系结构的详细框图;
图8是单个PU的一特定实现的电路图;
图9是本发明的实施例中的方法步骤的流程图;
图10是适于实施本发明的实施例的数据处理系统;以及
图11A-11G描述了根据本发明的实施例的各种方式的模式匹配中的操作。
具体实施方式
在以下描述中,提出了很多特定细节,以便提供对本发明的充分理解。然而对本领域的技术人员显然的是,可以没有这些特定细节而实施本发明。在其他一些情况下,公知的电路将以框图的形式示出,以免因不必要的细节模糊本发明。一般来说,省略了有关定时、通信协议中的数据格式等等的细节,只要这些细节对于充分理解本发明不是必要的并且处于相关领域的普通技术人员的技能范围内的。
现在参照附图,其中所示的元件不一定是按比例显示的,并且相同或相似的元件在若干视图中都以相同的标号标示。
软件中数据流的顺序匹配目前是一种中央处理单元(CPU)密集的任务。因此很难获得高性能。模式匹配处理单元(此后称为PU)体系结构可提供高性能的匹配,因为它是一件专用于模式匹配的硬件。该PU提供了更有效的搜索(匹配),因为每个输入模式被并行地与相应的目标模式进行匹配。并行匹配之所以可能,是因为可以级联几乎不限数量的PU。此外,每个PU具有这样的内建功能,其可通过纳入这样一些方式而减少所需PU的数量,这些方式允许包括通配符(目标模式中的任意字符)、多个通配符和反向操作的匹配。PU体系结构的快速模式检测能力在网络侵入检测、数据库扫描和移动设备安全性应用中是有用的。此外,使用其内建的距离计算,可实现在图像处理和生命科学应用中特别有用的“模糊”模式检测。
图5是根据本发明的实施例的一PU 500的概略框图。PU 500从标识(ID)总线501、控制总线502和输入数据总线503接收输入。来自各总线的输入被缓冲在ID寄存器509、控制寄存器505和输入数据寄存器504中。来自控制寄存器505的控制数据被耦合到控制逻辑电路508,该电路也从存储器507接收数据。来自输入数据寄存器504的输入数据被耦合到存储器507、地址电路506、屏蔽电路510。地址电路506将地址耦合到存储器507。地址电路506也耦合到屏蔽电路510和输出电路512。输出电路512接收来自ID寄存器509、地址电路506和距离电路511的数据,并有选择地将数据耦合到输出总线513。
图6是根据本发明的实施例的PU 500的另一更详细的框图。为清楚起见,重复了图5所示的方框。PU 500从标识(ID)总线501、控制总线502和输入数据总线503接收输入。各总线的输入被缓冲在ID寄存器509、控制寄存器505和输入数据寄存器504中。存储器507是一具有用于模式数据601和操作码(Opcode)602的字段的寄存器阵列。存储器507存储与输入数据相比较的模式。操作码602定义正在执行哪种类型的模式比较。操作码602和来自控制寄存器505的控制位被耦合到控制逻辑电路508。模式数据601被耦合到屏蔽电路510中的屏蔽寄存器603。屏蔽寄存器603的输出在逻辑与605中合并,以产生对距离电路511中的分量距离计算单元610的输入。类似地屏蔽寄存器603的输出在逻辑与606中合并,以形成对数据选择器604的输入。数据选择器604在来自输入寄存器504的输入数据和来自地址寄存器614的地址之间进行选择以提供对分量距离计算单元610的输入。地址寄存器614将地址耦合到存储器507。分量距离计算单元610将输出耦合到模式距离计算单元611。当前的距离计算结果被存储在距离寄存器612中。当前的距离计算结果被向回耦合到模式距离计算单元611和比较电路607。将距离寄存器612的输出与存储在最终距离寄存器中的值相比较,以产生输出GT 615。GT代表“大于”,并且当存储在最终距离寄存器中的值大于存储在距离寄存器中的值时,该信号被置为有效。存储在最终距离寄存器608中的最终距离值是由距离选择器609从输入寄存器504或距离寄存器612中的选择的。
每个PU 500具有有限的存储器来存储模式数据601。如果一模式较长,则可能合并几个PU 500单元来存储模式数据601的一个长序列。例如,如果使用两个PU 500,则当一模式检测阶段开始时,使用该两个PU 500单元中的第一个的存储器507。根据匹配方式和操作码602来修改该第一个PU 500的地址指针。当地址指针到达其最后存储器位置时,将一最后信号650发送给该两个PU 500单元中的第二个,以便使用存储在该第二个PU500中的、模式数据601的剩余部分来继续匹配过程。在此情况下,使用控制总线502中的控制数据来初始化该第二个PU 500,因此仅当该第二个PU 500接收到来自该第一个PU 500的“最后”信号650时,它才开始匹配。另外在此情况下,如果在匹配过程中指出了“重新装载”指针地址,则必须更新用于该模式数据601的长序列的该两个PU 500单元的地址指针。这是通过向适当的PU 500(其包含开始的模式601字节)发送“重新装载”信号651来完成的。因为在一模式数据601序列中的字节数不是特别限定的,可能以上述方式使用多于两个PU 500单元。再次地,控制总线502上的初始化控制数据配置PU 500以作为独立的PU或者级联的PU运行。
当匹配方式是“模糊”匹配时,模式距离计算单元611计算存储在距离寄存器612中的当前距离值。如果使用了两个或更多级联在一起的PU500单元来存储用于模糊匹配的模式数据601,则通过距离信号652将距离值发送给级联中的下一个PU 500,从而可确定最终的距离值,并将其存储在级联中的最后一个PU 500的最终距离寄存器608中。
图7是电路PU 500的更多细节的框图。将待比较的模式预装入到存储器(寄存器文件)507中作为一些字节,其中每个字节存储为位[11:4]中的8位。每个操作码602存储为位[3:0]。将输入数据流750与由读地址614所确定的、存储器507中的存储的字节相比较。比较和距离单元511为该比较操作计算距离。匹配逻辑709产生被耦合到重新装载逻辑710、递增逻辑711或保持逻辑712的逻辑信号。多种类型的匹配都是可能的,如由与模式的每个字节一起存储在存储器507中的操作码602所确定的那样。取决于操作码602以及比较和距离单元511中的比较的结果,重新装载逻辑710、递增逻辑711和保持逻辑712中的逻辑确定是否保持当前读地址、递增当前读地址到下一个值、或者将该读地址重新装载为其初始值以便在该模式的开始进行比较。选择线逻辑705由启动逻辑713通过启动信号730使能。取决于重新装载逻辑710、递增逻辑711和保持逻辑712的输出逻辑状态,对多路转换器(MUX)704的输入之一,即保持723、递增722或重新装载721,将成为逻辑1,从而分别选择输入703、702或701。递增1(714)向当前读地址添加1并产生输入702。当前读地址被耦合到保持703,并且该模式中的首地址是从714耦合的。寄存器614在操作码602的控制下被装入该模式中的首地址。包重置信号751重置读地址。如果活动信号706是逻辑0,则选择线逻辑705被切断(degate),从而所有的输入保持703、递增702和重新装载701是逻辑0,并且MUX 704被切断。为允许多个PU(例如PU 500)的级联,信号730和ID 707被耦合到下一个PU。类似地,PU 500从上一个PU接收ID 752和活动信号753。启动逻辑713通过信号线790被耦合到前一个PU。
图8是PU 500的电路的更详细的电路图。图8示出了用于选择线逻辑705(与门760-762)、重新装载逻辑710(或门763和与门764-765)、递增逻辑711(或门766和与门767-769)以及保持逻辑712(与门770)的更详细的电路。反相器780-784用于产生操作码602信号的补码。
以下描述将参照图5、6、7和8,因为这些图以不同程度的细节示出了PU 500。
该快速模式匹配技术利用了每个PU 500中的本地存储器(例如寄存器阵列507),其包含一模式601和指定了各选项的标志位(操作码602)。这些选项可包括单个通配符、多个通配符、最后以及反向匹配操作。单个通配符匹配意味着如果已设置了单个通配符匹配操作码602的字节匹配输入流中的当前字节,则指示匹配。多个通配符匹配意味着如果不定数量的成序列的字节不与具有多个通配符操作码602的字节匹配,则指示匹配。反向匹配意味着如果除了具有反向操作码602的字节之外的每个字节都与输入流中的一字节匹配,则指示匹配。最后操作码602意味着该字节是一模式中的最后一个字节。
全局寄存器包括ID寄存器509、读地址寄存器614、控制寄存器505和寄存器阵列507中的寄存器。其他全局寄存器,即活动寄存器706、匹配寄存器708和选择寄存器(未示出)可用于指定PU 500为活动的、已匹配的、或已被选择来写入配置数据。一PU 500的ID是在包含多个PU的整个芯片中的唯一的ID,并用来确定在被并行地耦合到多于一个PU 500的数据流中已检测到什么模式。计数器714用来在存储的模式601中进行索引,以便与输入数据流(来自输入总线503)中的字节801进行比较,并且比较单元511中的比较器(未示出)将模式601与输入数据801一次一个字节地进行比较。
当PU 500开始在线时,所有寄存器被初始化为0(重置)。接着PU 500从输入总线503接收到唯一的ID,并将其存储在ID寄存器509中。然后PU 500等待,直到接收到其他命令。第一个命令是选择命令,其启动PU 500接收进一步的只适用于PU 500的配置命令。此时可装载全局寄存器。将包括模式数据601和相应的操作码数据602的数据字节发送给寄存器阵列507。当配置完成并且活动寄存器被置为“活动的”时,PU 500等待包重置信号751以使能读地址614。这表明一个新的输入包正被发送给PU 500以开始匹配阶段。
在匹配阶段,每个时钟周期发送给PU 500一个字节。PU 500比较存储在寄存器阵列507的当前寄存器阵列位置(由地址614确定)中的字节(601)与输入寄存器504中的输入字节,并检查用于存储在601中的模式的、当前寄存器阵列位置的字节的操作码(602)。如果存在匹配,或者该操作码602被置为单个通配符匹配,则递增指针以在地址寄存器614中选择下一个读地址。如果用于模式601中的当前字节的操作码602被设置为多个通配符,则地址寄存器614的指针保持其当前值。如果未发现匹配,则重新装载该指针。该过程继续进行,直到该指针位于模式的最后位置并且发生匹配。此时,在PU 500中匹配寄存器被置位。该过程的最后阶段是报告发现的匹配。如果匹配寄存器708置位,则输出逻辑电路512发送PU500的ID到输出总线513。
图1是并行模式检测引擎(PPDE)100集成电路(IC)体系结构的框图。PPDE 100提供了多方式模式匹配,并具有高度灵活的、大规模并行的体系结构。PPDE 100可执行精确、模糊、最长和最大字符的模式匹配。可得益于PPDE 100的高性能模式匹配的某些可能应用有:网络侵入检测、数据库搜索图像处理、无损压缩、和实时数据处理(声音、EKG、MRI等)。PPDE 100的体系结构是高度灵活和可伸缩的,并可使其适应于特定应用。
PPDE 100是一种包括多个PU 500单元和其他逻辑功能的集成电路。输入/输出(I/O)接口101将PPDE芯片100耦合到系统功能。I/O接口101将64位的输入数据耦合到IC输入总线120,后者转而耦合到输入缓冲器103。将数据写入输入缓冲器103中由写地址102确定的位置。使用读地址108将数据从输入缓冲器103中读出。数据是使用由选择线逻辑109控制的多路转换器(MUX)115以8位字节从输入缓冲器103中读出的。输入总线503被耦合到N个PU 500单元中的每一个。I/O接口101也将控制数据耦合到全局控制107,后者将ID总线501上的24位ID数据和控制总线502上的4位控制数据发送给每个PU 500单元(PU1-PUn)。
图9是根据本发明的实施例的使用一PU 500的模式匹配中的方法步骤的流程图。在步骤901中,接收到一包重置信号,其表明PU500的配置已完成,并且一新包(输入模式)正被发送到PU,并且它应当开始匹配过程。在步骤902,检索出模式的第一模式字节。在步骤903,将该第一模式字节与输入数据中的第一个字节进行比较,并进行检验以确定它们是否匹配。该第一模式字节由地址指针(指针)指明。如果在步骤903中存在匹配,则在步骤910进行检验以确定是否已为当前模式字节(在该第一遍,当前模式字节为第一模式字节)将操作码602设置为“匹配”。如果操作码602已被设置为“匹配”,则将指针增加1以移到下一个模式字节,因为这是所希望的结果。如果当前模式字节的操作码602未被设置为“匹配”,则在步骤911检验操作码602以确定它是否已被设置为“反向”。如果操作码602已被设置为“反向”,则这不是所希望的结果,并且在步骤913将指针重新装载回到第一模式字节,如果它尚未装载第一模式字节的话。然后分支回到步骤902。如果在步骤911中操作码602未被设置为“反向”,则检验操作码602以确定它是已被设置为“最后”,从而表明该模式字节是该模式中的最后一个字节。如果操作码602在步骤912未被设置为“最后”,则在步骤914指针递增,并且分支回到步骤902。如果操作码602在步骤912已被设置为“最后”,则将指针“冻结”,并分支回到步骤901,等待一个新的包重置信号来重新开始匹配处理。
如果在步骤903中模式字节和输入数据字节不匹配,则在步骤904进行检验以确定是否已为该模式字节将操作码602设置为“匹配”。如果在步骤904中确定操作码602已被设置为“匹配”,则这不是所希望的结果,并且在步骤913将指针重新装载回到第一模式字节,如果它尚未装载第一模式字节的话。然后分支回到步骤902。如果在步骤904中确定操作码602未被设置为“匹配”,则在步骤905进行检验以确定操作码602是否已被设置为“反向”。如果在步骤905中确定操作码602已被设置为“反向”,则这是所希望的结果,并且在步骤914指针递增,并且分支回到步骤902。如果在步骤905中确定操作码602未被设置为“反向”,则在步骤906进行检验以确定操作码602是否已被设置为“通配符”。如果在步骤906中确定操作码602已被设置为“通配符”,则这是所希望的结果,并且在步骤914指针递增,并且分支回到步骤902。如果在步骤906中确定操作码602未被设置为“通配符”,则在步骤907进行检验以确定操作码602是否已被设置为“多个通配符”。如果在步骤907中确定操作码602已被设置为“多个通配符”,则在步骤908中保持该指针,并且分支回到步骤902。如果在步骤907中确定操作码602未被设置为“多个通配符”,则在步骤909重新装载指针,并且分支回到902。
参照图9所讨论的操作称为正则表达式匹配。在由根据本发明的实施例的包含了多个PU 500单元的PPDE所使用的匹配方式中使用了这些正则表达式。
图11A-11G示出了当将一模式601与一输入数据流750进行比较时采取的动作。图11A示出了这样一种情形1100的3个时钟周期,在这种情形中,输入数据750是“AAC”,将其与身为“ABC”的模式数据601进行比较,其中每个模式字节具有一操作码602。动作1101是响应于操作码602而采取的。在时钟周期1,指针614开始于模式601中的字节(“A”)。输入数据750的第一个字节也是“A”。模式601中的第一字节的操作码602被设置为“匹配”。因为输入数据750的第一个字节和模式601匹配,并且操作码601被设置为“匹配”,所以指针递增而移到模式601中的第二个字节“B”。这是在一个时钟周期中发生的,因此,在第二个时钟周期(其被标记为1102,因为其对于图11A中的特定模式是有重要意义的),将输入模式750中的第二字节(“A”)与模式601中的第二字节(“B”)进行比较。模式602的第二字节的操作码602被设置为“匹配”。因为这两个字节不匹配,所以模式601中的序列“AB”不能如操作码602所要求的那样与输入数据750的前两个字节“AA”匹配。因此,在时钟周期2(1102)中,以模式602的第一个字节的地址重新装载指针614,并再次进行比较。在时钟周期3,将输入数据750中的第三个字节与模式602中的第一个字节“A”进行比较。
图11B示出了这样一种情形1110,其中输入数据流750的字节序列“CDE”确实与匹配模式602“CDE”匹配,但其中一个模式字节的操作码602被设置为“反向”,指示在输入数据750中的一字节与模式601中的一字节之间的匹配不是所希望的。在时钟周期1,输入数据750中的第一字节“C”与模式601中的“C”匹配,并且操作码602被设置为“匹配”。因为这是所希望的结果,指针614递增,并且将输入数据750的第二字节(“D”)与模式601的第二字节(“D”)进行比较,并且这两个字节确实匹配。但是,操作码602已被设置为“反向”因而匹配不是所希望的,因此在时钟周期2(1103)指针614被重新装载,并且再次选择模式601的第一字节。在时钟周期3,将输入数据750的第三字节“E”与模式601的第一字节“C”进行比较。图11B的例子是“寻找”一输入序列“C!DE”,其中“!D”表示除“D”之外的任何字符是可接受的。
图11C示出了这样一种情形1120,其中一完整的模式601被显示为具有一被设置为“最后”的操作码602。在时钟周期1,输入数据750中的第一字节“F”与模式601中的第一个字节“F”匹配,并且操作码602被设置为“匹配”。因为这是正确的结果,指针614递增。在时钟周期2,输入数据750的第二字节“G”与模式601的第二字节“G”相匹配,并且操作码602已被设置为“匹配”。再次地,指针614递增,因为这是正确的结果。在时钟周期3(1104),输入数据750的第三字节“H”与模式601的第三字节“H”匹配。在这种情况下,操作码602已被设置为“最后”,表明该第三个字节是一完整模式601(在该情况中为“FGH”)中的最后一个字节。在这种情况下,在输入数据750中检测到了模式“FGH”,并且可使一匹配信号有效。因为还存在其他输入数据750,将指针614重新装载回到模式601的第一个字节,并且匹配过程继续“寻找”在输入数据750的随后字节中完整的模式“FGH”的其他出现。
图11D示出了这样一种情形1130,其中一模式601字节具有被设置为“反向”的操作码602,并且字节不匹配。在时钟周期1,输入数据750中的第一字节“I”与模式601中的第一个字节“I”匹配,并且操作码602被设置为“匹配”。因为这是所希望的结果,指针614递增,并且将输入数据750的第二字节“J”与模式601的第二字节“I”相比较,并且这些字节不匹配。然而,操作码602已被设置为“反向”,因而不匹配是所希望的结果;因此,在时钟周期2(1105),指针614递增,并且再次选择模式601的第三个字节“K”。在时钟周期3,将输入数据750的第三字节“K”与模式601的第三字节“K”比较。再次地,检测到匹配,并且指针614递增。图11D的例子是“寻找”一输入序列“I!JK”,其中“!J”表示除“J”之外的任何字符是可接受的。
图11E示出了这样一种情形1140,其中模式601匹配输入数据750中的一序列,并且操作码602被设置为“匹配”。在时钟周期1,指针614开始于模式601中的字节(“L”)。输入数据750中的第一字节也是“L”。模式601中的第一字节的操作码602被设置为“匹配”。因为输入数据750中的第一字节与模式601匹配,并且操作码602被设置为“匹配”,指针614递增到模式601中的第二个字节“M”。在第二个时钟周期,将输入数据750中的第二字节(“M”)与模式601中的第二字节(“M”)相比较。模式601的第二个字节“M”的操作码602已被设置为“匹配”。因为这两个字节匹配,指针614再次递增。在时钟周期3,将输入数据750中的第三字节“N”与模式601的第三字节“N”比较。因为它们匹配,指针再次递增。图11E示出了模式601中的“LMN”与输入数据750中的序列“LMN”的部分匹配。
图11F示出了这样一种情形1150,其中没有模式匹配,并且已为模式601中的一字节设置了通配符操作码。在时钟周期1,输入数据750中的“O”与模式601中“O”匹配。因为操作码602被设置为“匹配”,指针614递增。在第二个时钟周期,模式601的第二字节“O”与输入数据750的第二字节“P”不匹配。然而,因为操作码602已被设置为“通配符”,任何字符都是可接受的,因而指针614再次递增。在时钟周期3,模式601的第三字节“Q”与输入数据750中的第三字节“Q”匹配,因而指针614递增。在这种情况下,发现了“O·Q”,其中“·”表示任何字符。
图11G示出了这样一种情形1160,其中没有模式匹配,并且模式601中的一字节具有已被设置为“多个通配符”(简单地示为“多个”)的操作码602。在时钟周期1,模式601中的第一字节“T”不与输入数据750中的第一个字节“R”匹配。然而,因为操作码602被设置为“多个”,指针614保持在其当前位置(在该情况中,为模式601的第一个字节)。在时钟周期2,模式601的第一个字节“T”不与输入数据750中的第二字节匹配。因为操作码602仍被设置为“多个”,指针614被保持在模式601的第一个字节。在时钟周期3,模式601的第一个字节“T”确实与输入数据750的第三字节匹配,因而指针614递增到模式601的第二个字节。在时钟周期4,模式601的第二个字节确实与输入数据750的第四个字节匹配,因而指针614再次递增。在时钟周期5(未示出),模式601的第三个字节与输入数据750的第五个字节匹配,并且检测到输入数据750中的模式“TUV”。
PPDE 100具有4种匹配方式:精确的、最长的、最大的和模糊的。精确匹配可用于对齐或非对齐数据,并且可包含正则表达式例如单个通配符、多个通配符、反向、或包含集(inclusive set)。精确匹配方式可用于诸如网络侵入等应用中,其中线路速度匹配是关键性的,并且只需要二元的匹配或不匹配响应。
在最长匹配方式中,每个PU 500跟踪连续的匹配字节的数量,并且直到一模式包的末尾才重置。在最长匹配方式中,每个PU 500将匹配字节的数量与其ID一起输出给ID选择单元114(图1)。然后ID选择单元114将具有最大数量的匹配字节的PU 500的ID以及该最长匹配的长度值输出给输出缓冲器105。
在最大匹配方式中,每个PU 500跟踪匹配字节的数量,并且直到一模式包的末尾才重置。在这种方式中,每个PU 500将匹配字节的数量与其ID一起输出给ID选择单元114。然后ID选择单元114将具有最大数量的匹配的PU 500的ID以及该最大数量的值输出给输出缓冲器105。
在模糊匹配方式中,每个PU 500“寻找”接近的模式,并且然后将具有最接近的匹配的PU 500的ID以及一相应的量化了该匹配的接近程度的距离值输出给ID选择单元114,后者转而将结果输出给输出缓冲器105。该距离是在输入模式和先前存储在存储器中的基准模式(RP)之间进行比较的结果。距离计算方法是基于用户可选择的准则。可使用若干准则,并且准则可使用“差异的绝对值”算符。在曼哈坦(Manhattan)距离的情况下,可将连续的初级距离相加,即dist=sum(abs(IEi-REi)),或者在最大准则的情况下,选择其中的最大值来确定最终的距离。即dist=max(abs(IEi-Rei)),其中IEi(输入元素)和REi(基准元素)分别是输入模式IP和存储的原型基准模式RP的第i个分量(变量i的变化范围为1到k)。注意“abs”是“绝对值”的通常缩写。也存在其他准则,例如诸如dist=square root(sum(IEi-REi)2等L2准则。L2准则被称为“欧几里德的”,而曼哈坦及最大准则是“非欧几里德的”准则的例子。其他欧几里德或非欧几里德准则(例如“匹配/不匹配”)是本领域的技术人员已知的。特别地,由“match(IEi,REi)”算符所表示的“匹配/非匹配”准则被广泛使用。最接近的匹配是具有最低结果的模式。模糊匹配在图像处理以及其中输入数据流具有施加于数据之上的白噪声的实时数据处理中是有用的。
图2A示出了使用根据本发明的实施例的PPDE 100的精确匹配方式200的一例子。模式203对应于标号为1-n并标识了PPDE 100中所包含n个PU 500单元的各ID号码205。输入模式201将被并行发送这n个PU 500单元中的每一个。在该方式中,PPDE 100被编程为去寻找是否在输入数据流201中存在这n个模式中的任何一个。通过查看,可以看到只有模式“4”以其精确的序列存在于所示输入数据流201的一部分中。在这种情况下,具有该精确匹配的PU 500的ID(在该情况中,该ID是“4”)将被输出(输出204)给ID选择单元114(未示出),而后者将把该值发送给输出缓冲器105(未示出)。
图2B示出了使用根据本发明的实施例的PPDE 100的最长匹配方式220的一例子。再次地,输入数据流201被并行耦合到具有标号为1-n的ID号码205的n个PU 500单元。在该方式中,PPDE 100被编程为去确定模式213中的在输入数据流201中出现的最多的连续字节。再次地,通过查看,可以看到模式“4”具有带有出现在输入数据流201中的5个连续字节“ABCDE”的最长匹配。在这种情况下,具有该最长匹配的PU 500的ID(在该情况中,该ID是“4”)将和最长匹配值“5”一起被输出(输出204)给ID选择单元114(未示出),而后者将把该值发送给输出缓冲器105(未示出)。
图2C示出了使用根据本发明的实施例的PPDE 100的最大匹配方式230的一例子。再次地,输入数据流212被并行耦合到具有标号为1-n的ID号码205的n个PU 500单元。在该方式中,PPDE 100被编程为去确定模式223中的在输入数据流212中出现的未必呈连续顺序的最大数量的字节。再次地,通过查看,可以看到模式“4”具有带有出现在输入数据流212中的5个匹配字节“ACYEF”的最大数量。在这种情况下,具有该最大数量匹配的PU 500的ID(在该情况中,该ID是“4”)将和该最大数量值“5”一起被输出(输出206)给ID选择单元114(未示出),而后者将把该值发送给输出缓冲器105(未示出)。
图2D示出了使用根据本发明的实施例的PPDE 100的模糊匹配方式240的一例子。输入数据流222被并行耦合到具有标号为1-n的ID号码205的n个PU 500单元。在该例子中,输入数据流222是模拟信号,其将被数字化,并且每个8位输入值将被并行发送给n个PU 500单元。在该方式中,PPDE 100被编程为去确定其中哪一个模式233最接近地匹配输入数据流222。再次地,通过查看,可以看到模式“4”具有最接近的匹配。在实际操作中,将使用距离电路611(未示出)来进行这种判定。在这种情况下,具有该最接近匹配的PU 500的ID(在该情况中,该ID是“4”)将和该距离值“10”一起被输出给ID选择单元114(未示出),而后者将把该值发送给输出缓冲器105(未示出)。
图3是示出了PPDE 100的可伸缩性的框图。PPDE 100的体系结构允许将多个芯片级联起来。可使用这一特征或者增加处理单元的数量,或者通过将输入数据在若干芯片之间划分而提高性能。图3示出了芯片的数量和PU 500单元的数量之间的直接相关性。方框303示出了一个PPDE 100芯片的标准性能。当沿着X轴添加PPDE 100芯片时(通过级联),性能就提高了。此外,当沿着Y轴增加每个PPDE 100芯片的PU 500单元的数量时,性能也提高了。方框301示出了通过添加4个芯片(1500个PU 500单元),处理速度提高到对于1500个模式的8Gb/sec。方框304示出了使用4个芯片来增加模式的数量,而同时保持2Gb/sec的处理速度。方框302示出了添加5组耦合起来以处理6000个模式的4个芯片,从而使得系统可以10Gb/sec的速度处理6000个模式。
图4是在本发明的实施例中使用的方法步骤的流程图。在步骤401,将模式数据的N个序列装入M个处理单元(PU)500,以便比较模式数据和输入数据。在步骤402,将确定每个PU 500的唯一ID的标识数据(ID)装入每个PU 500中。在步骤403,将匹配方式数据装入每个PU 500中,从而设定指示在所选模式数据和输入数据中已出现匹配的标准。在步骤404中,将第一个输入数据并行发送给M个PU 500单元中的每一个。在步骤405,在同一时钟周期中,将第一个输入数据与由PU 500中的地址指针所选择的所选模式数据进行比较,并在M个PU 500单元中的每一个中产生一比较输出信号。在步骤406,响应于比较输出信号的逻辑状态和与所选模式数据一起存储在每个PU单元中的操作码,修改每个PU 500单元中的地址指针。在步骤407,响应于指示在输入数据中已检测到所选模式数据的一模式匹配信号,从所述ID数据中选择一匹配ID。在步骤408,存储该匹配ID和对应于该匹配ID的匹配数据。在步骤409,进行检验以确定是否已处理了所有输入数据。如果在步骤409的检验的结果是“否”,则在步骤411将其他输入数据并行发送给PU 500单元。如果在步骤409的检验的结果是“是”,则在步骤410该过程结束。
图10示出了用于实施本发明的一典型硬件环境,其中示出了一根据本发明的工作站的典型硬件配置,其具有带有一个或多个PPDE 100芯片的中央处理单元(CPU)1034以及通过系统总线1012互连的其他单元。图10示出的工作站包括随机存取存储器(RAM)1014,只读存储器(ROM)1016,和用于将外围设备例如盘单元1020和磁带驱动器1040连接到总线1012的输入/输出(I/O)适配器1018,用于将键盘1024、鼠标1026、扬声器1028、话筒1032、和/或诸如触摸屏设备(未示出)等其他用户接口设备连接到总线1012的用户接口器,用于将该工作站连接到数据处理网络的通信适配器1035,以及用于将总线1012连接到显示设备1038的显示适配器1036。可以从各种源包括网络1041、盘单元1020、磁带驱动器1040或者从各种输入设备例如话筒1032、键盘1024等将输入数据(输入数据流、模式数据和各种控制数据)提供给CPU1034中的PPDE 100芯片。其他输入设备,例如指纹阅读器和语音识别单元,可提供输入数据流,该些输入数据流将使用根据本发明的实施例的一个或多个PPDE 100芯片与存储的模式进行匹配。
尽管已详细描述了本发明及其优点,应当理解在此可以进行各种改变、替换和变更,而不脱离由所附权利要求所定义的本发明的精神和范围。

Claims (32)

1.一种用于检测输入数据序列中的一个或多个模式的并行模式检测引擎集成电路,包括:
输入/输出接口,其用于将数据耦合进入或出自该并行模式检测引擎;
M个处理单元,该M个处理单元中的每一个都具有比较电路,该比较电路用于将输入数据序列的每一个与存储在该M个处理单元中的每一个中的模式相比较,并产生比较输出,其中响应于该比较输出的逻辑状态和与该模式一起存储的操作码,修改该M个处理单元中的每一个中的选择该模式的地址指针;
输入总线,其用于将该输入数据序列并行地耦合到该M个处理单元中的每一个;
输出总线,其被耦合到该输入/输出接口,用于将输出数据发送到该输入/输出接口;
控制电路,其被耦合到该输入/输出接口,并将控制数据总线上的控制数据和标识总线上的标识耦合到该M个处理单元中的每一个;
标识选择电路,其用于响应于模式匹配信号和匹配方式数据而从标识该M个处理单元的标识数据中选择匹配标识,其中该匹配标识和相应于该匹配标识的匹配数据存储在暂时寄存器中作为输出数据;以及
级联电路,其被从该M个处理单元中的每一个耦合到该M个处理单元中的一个或多个相邻的处理单元,用于响应于所述控制数据在一个或多个由从该M个处理单元中选择的两个或更多相邻的处理单元组成的组之间有选择地耦合链接数据。
2.如权利要求1所述的并行模式检测引擎集成电路,进一步包括输入缓冲器,该输入缓冲器耦合到该输入/输出接口上,以便接收和在一写地址上写入输入数据作为并行数据。
3.如权利要求2所述的并行模式检测引擎集成电路,进一步包括耦合到该输入总线和输入缓冲器上的多路转换器,其用于顺序地将来自该输入缓冲器数据的单个数据耦合到该输入总线上,其中使用一读地址选择并行数据。
4.如权利要求1所述的并行模式检测引擎集成电路,进一步包括耦合到该输出总线和暂时寄存器的输出缓冲器,该暂时寄存器接收输出数据并在一写地址上向该输出缓冲器写入输出数据,输出缓冲器相应于一读地址将输出数据耦合到该输出总线上。
5.如权利要求1所述的并行模式检测引擎集成电路,其中该M个处理单元中的每一个具有标识寄存器,用于存储从该控制电路发送的唯一标识。
6.如权利要求1所述的并行模式检测引擎集成电路,其中该M个处理单元中的每一个具有控制寄存器,用于存储所述匹配方式数据,其中所述匹配方式数据确定用于产生该匹配信号和该匹配数据的标准。
7.如权利要求1所述的并行模式检测引擎集成电路,其中该M个处理单元中的每一个具有存储器寄存器阵列,用于存储模式序列以及相应的操作码,该操作码由地址寄存器寻址,该地址寄存器由所述地址指针索引。
8.如权利要求1所述的并行模式检测引擎集成电路,其中所述级联电路使能两个或更多处理单元的存储的模式链接在一起,作为使用该链接数据的单个模式。
9.如权利要求8所述的并行模式检测引擎集成电路,其中该链接数据阻止索引一个处理单元的指针,直到与该级联电路耦合的一相邻处理单元已比较了最后模式与输入数据。
10.如权利要求1所述的并行模式检测引擎集成电路,其中在该M个处理单元中的每一个中的比较电路在同一个时钟信号周期里完成输入数据与所选模式的比较并且产生比较输出并且修改所述地址指针。
11.如权利要求1所述的并行模式检测引擎集成电路,其中该M个处理单元中的每一个中的匹配方式数据设置一匹配方式,该匹配方式包括:
精确匹配方式,其中模式匹配指示模式的序列与输入数据的序列精确址匹配,
最长匹配方式,其中模式匹配指示与该匹配标识相应的模式的特定序列具有与输入数据序列中的一数据序列相匹配的成序列的最大数量的数据,其中该匹配数据指示该最大数量的值;
最大匹配方式,其中模式匹配指示与该匹配标识相应的模式字节的特定序列具有与输入数据的一不连续序列相匹配的成不连续序列的最大数量的数据,其中该匹配数据指示该最大数量的值;以及
模糊匹配方式,其中模式匹配指示与该匹配标识相应的模式的特定序列具有由一距离值确定的与输入数据序列的最接近匹配,其中该匹配数据指示该距离值。
12.如权利要求1所述的并行模式检测引擎集成电路,其中该操作码是从这样一组操作码中选择的,该组操作码包括:
匹配操作码,其指示如果比较输出是逻辑1则地址指针递增,并且如果比较输出是逻辑0则将地址指针重新装载为其初始值;
反向操作码,其指示如果比较输出是逻辑0则地址指针将递增,并且如果比较输出是逻辑1则将地址指针重新装载为其初始值;
通配符操作码,其指示如果比较输出是逻辑0或逻辑1则地址指针递增;
多个通配符操作码,其指示如果比较输出是逻辑0则地址指针保持,否则地址指针递增;以及
最后操作码,其指示如果比较输出是逻辑1则地址指针被冻结直到匹配过程接收到重置信号,并且如果比较输出是逻辑0则将地址指针重新装载为其初始值。
13.如权利要求1所述的并行模式检测引擎集成电路,其中当所选模式与输入数据进行比较时,该所选模式的一些位由存储在屏蔽寄存器中的屏蔽数据所屏蔽,该屏蔽数据指示所选模式的哪些位不进行比较。
14.一种使用并行模式检测引擎来确定在输入数据序列中是否出现N个模式序列中的任何一个的方法,其包括以下步骤:
a)将该N个模式序列装入M个处理单元,该M个处理单元中的每一个具有比较电路,用于并行地将输入数据序列中的每一个与存储在该M个处理单元中的该N个模式序列中的每一个中的一所选模式进行比较;
b)将标识数据装入该M个处理单元中的每一个,其中该标识数据确定该M个处理单元中的每一个的标识;
c)将匹配方式数据装入该M个处理单元中的每一个,该匹配方式数据设定了用于确定何时已满足了指示在输入数据序列中已检测到该N个模式序列中的一个的条件的标准;
d)将第一输入数据并行地耦合到该M个处理单元中的每一个;
e)在同一时钟周期内将该第一输入数据与由该M个处理单元中的每一个中的地址指针确定的所选模式进行比较,并在该M个处理单元中的每一个中产生比较输出;
f)响应于相应的比较输出的逻辑状态和在该M个处理单元中的每一个中与该所选模式一起存储的操作码,修改该M个处理单元中的每一个中的该地址指针的值;
g)响应于指示已检测到该N个模式序列中的一个的模式匹配信号,从该标识数据中选择匹配标识;
h)将该匹配标识与相应于该匹配标识的匹配数据存储起来;以及
i)将其他输入数据并行发送给所述M个处理单元,重复步骤e)-h),直到已比较了该输入数据序列的最后一个输入数据。
15.如权利要求14所述的方法,其中将级联电路从该M个处理单元中的每一个耦合到该M个处理单元中的一个或多个相邻的处理单元,以便响应于装入选自该M个处理单元的两个或更多相邻的处理单元中的控制数据而有选择地在该两个或更多相邻的处理单元之间耦合链接数据。
16.如权利要求14所述的方法,其中将该N个模式序列中的一个分割,并装入该M个处理单元中的两个或更多个中。
17.如权利要求14所述的方法,其中该M个处理单元中的每一个具有控制寄存器,用于存储该匹配方式数据,其中该匹配方式数据确定用于产生所述匹配信号和所述匹配数据的标准。
18.如权利要求17所述的方法,其中该M个处理单元中的每一个具有存储器寄存器阵列,用于存储模式序列以及由地址寄存器寻址的相应的操作码,该地址寄存器由所述地址指针索引。
19.如权利要求15所述的方法,其中该级联电路使能两个或更多处理单元的存储的模式链接在一起,作为使用该链接数据的单个模式。
20.如权利要求19所述的方法,其中该链接的数据阻止索引一个处理单元的指针,直到与该级联电路耦合的相邻的一处理单元已完成最后一个模式与输入数据的比较。
21.如权利要求14所述的方法,其中该M个处理单元中每一个中的比较电路在同一个时钟信号周期中完成输入数据与所选模式的比较并产生比较输出并且修改所述地址指针。
22.如权利要求14所述的方法,其中该M个处理单元中的每一个中的匹配方式数据设置一匹配方式,该匹配方式包括:
精确匹配方式,其中模式匹配指示模式的序列与输入数据的序列精确地匹配,
最长匹配方式,其中模式匹配指示与该匹配标识相应的模式的特定序列具有与输入数据序列中的一数据序列相匹配的成序列的最大数量的数据,其中该匹配数据指示该最大数量的值;
最大匹配方式,其中模式匹配指示与该匹配标识相应的模式的特定序列具有与输入数据的一不连续序列相匹配的最大数量的数据,其中该匹配数据指示该最大数量的值;以及
模糊匹配方式,其中模式匹配指示与该匹配标识相应的模式的特定序列具有由一距离值确定的与输入数据序列的最接近匹配,其中该匹配数据指示该距离值。
23.如权利要求18所述的方法,其中所述操作码是从一组操作码中选择的,该组操作码包括:
匹配操作码,其指示如果比较输出是逻辑1则地址指针递增,并且如果比较输出是逻辑0则将地址指针重新装载为其初始值;
反向操作码,其指示如果比较输出是逻辑0则地址指针将递增,并且如果比较输出是逻辑1则将地址指针重新装载为其初始值;
通配符操作码,其指示如果比较输出是逻辑0或逻辑1则地址指针递增;
多个通配符操作码,其指示如果比较输出是逻辑0则地址指针保持,否则地址指针递增;以及
最后操作码,其指示如果比较输出是逻辑1则地址指针被冻结直到匹配过程接收到重置信号,并且如果比较输出是逻辑0则将地址指针重新装载为其初始值。
24.一种数据处理系统,包括:
中央处理单元;
随机存取存储器;
一个或多个并行模式检测引擎集成电路;以及
将该中央处理单元、该随机存取存储器及该一个或多个并行模式检测引擎相耦合的总线,其中每个并行模式检测引擎具有:
输入/输出接口,其用于将数据耦合进入或出自该并行模式检测引擎;
M个处理单元,该M个处理单元中的每一个都具有比较电路,该比较电路用于将输入数据序列的每一个与存储在该M个处理单元中的每一个中的模式相比较,并产生比较输出,其中响应于该比较输出的逻辑状态和与该模式数据一起存储的操作码,修改该M个处理单元中的每一个中的选择该模式数据的地址指针;
输入总线,其用于将该输入数据序列并行地耦合到该M个处理单元中的每一个;
输出总线,其被耦合到该输入/输出接口,用于将输出数据发送到该输入/输出接口;
控制电路,其被耦合到该输入/输出接口,并将控制数据总线上的控制数据和标识总线上的标识耦合到该M个处理单元中的每一个;
标识选择电路,其用于响应于模式匹配信号和匹配方式数据而从标识该M个处理单元的标识数据中选择匹配标识,其中该匹配标识和相应于该匹配标识的匹配数据存储在暂时寄存器中作为输出数据;以及
级联电路,其从该M个处理单元中的每一个耦合到该M个处理单元中的一个或多个相邻的处理单元,用于响应于所述控制数据在一个或多个由从该M个处理单元中选择的两个或更多相邻的处理单元组成的组之间有选择地耦合链接数据。
25.如权利要求24所述的数据处理系统,其中该M个处理单元中的每一个具有标识寄存器,用于存储从该控制电路发送的唯一标识。
26.如权利要求24所述的数据处理系统,其中该M个处理单元中的每一个具有存储器寄存器阵列,用于存储模式序列以及相应的操作码,该操作码由地址寄存器寻址,该地址寄存器由所述地址指针索引。
27.如权利要求24所述的数据处理系统,其中所述级联电路使能两个或更多处理单元的存储的模式链接在一起,作为使用该链接数据的单个模式。
28.如权利要求27所述的数据处理系统,其中该链接数据阻止索引一个处理单元的指针,直到与该级联电路耦合的一相邻处理单元已比较了最后模式与输入数据。
29.如权利要求24所述的数据处理系统,其中在该M个处理单元中的每一个中的比较电路在同一个时钟信号周期里完成输入数据与所选模式的比较并且产生比较输出并且修改所述地址指针。
30.如权利要求24所述的数据处理系统,其中该M个处理单元中的每一个中的匹配方式数据设置一匹配方式,该匹配方式包括:
精确匹配方式,其中模式匹配指示模式的序列与输入数据的序列精确地匹配,
最长匹配方式,其中模式匹配指示与该匹配标识相应的模式的特定序列具有与输入数据序列中的一数据序列相匹配的成序列的最大数量的数据,其中该匹配数据指示该最大数量的值;
最大匹配方式,其中模式匹配指示与该匹配标识相应的模式的特定序列具有与输入数据的一不连续序列相匹配的最大数量的数据,其中该匹配数据指示该最大数量的值;以及
模糊匹配方式,其中模式匹配指示与该匹配标识相应的模式的特定序列具有由一距离值确定的与输入数据序列的最接近匹配,其中该匹配数据指示该距离值。
31.如权利要求30所述的数据处理系统,其中该操作码是从这样一组操作码中选择的,该组操作码包括:
匹配操作码,其指示如果比较输出是逻辑1则地址指针递增,并且如果比较输出是逻辑0则将地址指针重新装载为其初始值;
反向操作码,其指示如果比较输出是逻辑0则地址指针将递增,并且如果比较输出是逻辑1则将地址指针重新装载为其初始值;
通配符操作码,其指示如果比较输出是逻辑0或逻辑1则地址指针递增;
多个通配符操作码,其指示如果比较输出是逻辑0则地址指针将保持,否则地址指针递增;以及
最后操作码,其指示如果比较输出是逻辑1则地址指针被冻结直到匹配过程接收到重置,并且如果比较输出是逻辑0则将地址指针重新装载为其初始值。
32.如权利要求30所述的数据处理系统,其中当所选模式与输入数据进行比较时,该所选模式的一些位由存储在屏蔽寄存器中的屏蔽数据所屏蔽,该屏蔽数据指示所选模式的哪些位不进行比较。
CNB2005100001359A 2004-01-14 2005-01-04 并行模式检测引擎集成电路、相关方法及数据处理系统 Expired - Fee Related CN1306449C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/757,187 2004-01-14
US10/757,187 US7243165B2 (en) 2004-01-14 2004-01-14 Parallel pattern detection engine

Publications (2)

Publication Number Publication Date
CN1641685A CN1641685A (zh) 2005-07-20
CN1306449C true CN1306449C (zh) 2007-03-21

Family

ID=34740002

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100001359A Expired - Fee Related CN1306449C (zh) 2004-01-14 2005-01-04 并行模式检测引擎集成电路、相关方法及数据处理系统

Country Status (2)

Country Link
US (4) US7243165B2 (zh)
CN (1) CN1306449C (zh)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7366352B2 (en) * 2003-03-20 2008-04-29 International Business Machines Corporation Method and apparatus for performing fast closest match in pattern recognition
US7526804B2 (en) * 2004-02-02 2009-04-28 Microsoft Corporation Hardware assist for pattern matches
US7392229B2 (en) * 2005-02-12 2008-06-24 Curtis L. Harris General purpose set theoretic processor
US7639611B2 (en) * 2006-03-10 2009-12-29 Alcatel-Lucent Usa Inc. Method and apparatus for payload-based flow estimation
US8065249B1 (en) 2006-10-13 2011-11-22 Harris Curtis L GPSTP with enhanced aggregation functionality
US7774286B1 (en) 2006-10-24 2010-08-10 Harris Curtis L GPSTP with multiple thread functionality
EP1983718A1 (en) * 2007-04-17 2008-10-22 Danmarks Tekniske Universitet Method and apparatus for inspection of compressed data packages
US7917684B2 (en) 2008-11-05 2011-03-29 Micron Technology, Inc. Bus translator
US20100138575A1 (en) 2008-12-01 2010-06-03 Micron Technology, Inc. Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices
US8140780B2 (en) * 2008-12-31 2012-03-20 Micron Technology, Inc. Systems, methods, and devices for configuring a device
US20100174887A1 (en) 2009-01-07 2010-07-08 Micron Technology Inc. Buses for Pattern-Recognition Processors
WO2011058392A1 (en) * 2009-11-11 2011-05-19 Vl C.V. Integrated circuit arrangement for buffering service requests
US9323994B2 (en) 2009-12-15 2016-04-26 Micron Technology, Inc. Multi-level hierarchical routing matrices for pattern-recognition processors
US9881099B2 (en) * 2010-05-24 2018-01-30 International Business Machines Corporation System, method and computer program product for data transfer management
US8667230B1 (en) * 2010-10-19 2014-03-04 Curtis L. Harris Recognition and recall memory
US20120150887A1 (en) * 2010-12-08 2012-06-14 Clark Christopher F Pattern matching
US8799188B2 (en) * 2011-02-08 2014-08-05 International Business Machines Corporation Algorithm engine for use in a pattern matching accelerator
US8402003B2 (en) * 2011-02-08 2013-03-19 International Business Machines Corporation Performance monitoring mechanism for use in a pattern matching accelerator
CN102565851A (zh) * 2011-12-16 2012-07-11 中国石油集团川庆钻探工程有限公司地球物理勘探公司 地震资料数据的存储方法
US20130275709A1 (en) 2012-04-12 2013-10-17 Micron Technology, Inc. Methods for reading data from a storage buffer including delaying activation of a column select
US9524248B2 (en) 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US9703574B2 (en) 2013-03-15 2017-07-11 Micron Technology, Inc. Overflow detection and correction in state machine engines
US9448965B2 (en) 2013-03-15 2016-09-20 Micron Technology, Inc. Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine
KR102214028B1 (ko) 2014-09-22 2021-02-09 삼성전자주식회사 가변구조형 스케일러를 포함하는 애플리케이션 프로세서와 이를 포함하는 장치들
US10387804B2 (en) * 2014-09-30 2019-08-20 BoonLogic Implementations of, and methods of use for a pattern memory engine applying associative pattern memory for pattern recognition
US9916347B2 (en) * 2014-12-29 2018-03-13 International Business Machines Corporation Rapid searching and matching of data to a dynamic set of signatures facilitating parallel processing and hardware acceleration
US11366675B2 (en) 2014-12-30 2022-06-21 Micron Technology, Inc. Systems and devices for accessing a state machine
US10769099B2 (en) 2014-12-30 2020-09-08 Micron Technology, Inc. Devices for time division multiplexing of state machine engine signals
WO2016109570A1 (en) 2014-12-30 2016-07-07 Micron Technology, Inc Systems and devices for accessing a state machine
US9438612B1 (en) * 2015-03-23 2016-09-06 Fortinet, Inc. Calculating consecutive matches using parallel computing
US10977309B2 (en) 2015-10-06 2021-04-13 Micron Technology, Inc. Methods and systems for creating networks
US10846103B2 (en) 2015-10-06 2020-11-24 Micron Technology, Inc. Methods and systems for representing processing resources
US10691964B2 (en) 2015-10-06 2020-06-23 Micron Technology, Inc. Methods and systems for event reporting
CN111463203A (zh) * 2016-03-07 2020-07-28 杭州海存信息技术有限公司 兼具图像识别功能的存储器
WO2017152828A1 (zh) * 2016-03-07 2017-09-14 成都海存艾匹科技有限公司 含有三维存储阵列的分布式模式处理器
US9653180B1 (en) * 2016-05-26 2017-05-16 Sandisk Technologies Llc System method and apparatus for screening a memory system
KR20170136829A (ko) 2016-06-02 2017-12-12 삼성전자주식회사 반도체 장치, 메모리 장치 및 메모리 장치의 동작 방법
US10146555B2 (en) 2016-07-21 2018-12-04 Micron Technology, Inc. Adaptive routing to avoid non-repairable memory and logic defects on automata processor
US10019311B2 (en) 2016-09-29 2018-07-10 Micron Technology, Inc. Validation of a symbol response memory
US10268602B2 (en) 2016-09-29 2019-04-23 Micron Technology, Inc. System and method for individual addressing
US10929764B2 (en) 2016-10-20 2021-02-23 Micron Technology, Inc. Boolean satisfiability
US10592450B2 (en) 2016-10-20 2020-03-17 Micron Technology, Inc. Custom compute cores in integrated circuit devices
US10489159B2 (en) 2016-12-21 2019-11-26 Microsoft Technology Licensing, Llc Pipelined decompression of sliding window compressed data
US10483981B2 (en) * 2016-12-30 2019-11-19 Microsoft Technology Licensing, Llc Highspeed/low power symbol compare
US10691361B2 (en) 2017-02-24 2020-06-23 Microsoft Technology Licensing, Llc Multi-format pipelined hardware decompressor
CN110383777B (zh) * 2017-03-28 2022-04-08 马维尔亚洲私人有限公司 端口扩展器设备的灵活处理器
CN110398617B (zh) * 2018-04-25 2022-03-25 晶豪科技股份有限公司 测试装置及折叠探针卡测试系统
CN114121083A (zh) * 2020-08-26 2022-03-01 长鑫存储技术(上海)有限公司 接口电路、数据传输电路以及存储器
CN117041363A (zh) * 2023-10-09 2023-11-10 井芯微电子技术(天津)有限公司 自定义数据包实现多器件级联配置的方法、装置和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4510617A (en) * 1981-02-20 1985-04-09 Nippon Electric Co., Ltd. Character recognition system utilizing pattern matching method
US4651341A (en) * 1982-09-14 1987-03-17 Fujitsu Limited Pattern recognition apparatus and a pattern recognition method
US5465305A (en) * 1991-11-08 1995-11-07 Canon Kabushiki Kaisha Character recognition method and apparatus for preparing a plurality of character recognition processes in parallel
US5568563A (en) * 1993-05-17 1996-10-22 Mitsubishi Denki Kabushiki Kaisha Method and apparatus of pattern recognition

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4384273A (en) * 1981-03-20 1983-05-17 Bell Telephone Laboratories, Incorporated Time warp signal recognition processor for matching signal patterns
US4541115A (en) * 1983-02-08 1985-09-10 Pattern Processing Technologies, Inc. Pattern processing system
US4783803A (en) * 1985-11-12 1988-11-08 Dragon Systems, Inc. Speech recognition apparatus and method
US5051947A (en) * 1985-12-10 1991-09-24 Trw Inc. High-speed single-pass textual search processor for locating exact and inexact matches of a search pattern in a textual stream
US5014327A (en) * 1987-06-15 1991-05-07 Digital Equipment Corporation Parallel associative memory having improved selection and decision mechanisms for recognizing and sorting relevant patterns
US5396588A (en) * 1990-07-03 1995-03-07 Froessl; Horst Data processing using digitized images
GB2253296B (en) * 1991-02-28 1995-05-24 Toshiba Kk Pattern recognition apparatus
US5684701A (en) * 1995-06-07 1997-11-04 Automotive Technologies International, Inc. Method and apparatus for sensing a vehicle crash
EP0567680B1 (en) * 1992-04-30 1999-09-22 International Business Machines Corporation Pattern recognition and validation, especially for hand-written signatures
US5377348A (en) * 1992-06-04 1994-12-27 International Business Machines Corporation System for searching a data base by creating a marking matrix in which two dimensional patterns control the search and selection
US5386384A (en) * 1993-03-09 1995-01-31 California Institute Of Technology Parallel CCD memory chip and method of matching therewith
US5383142A (en) * 1993-10-01 1995-01-17 Hewlett-Packard Company Fast circuit and method for detecting predetermined bit patterns
US5548775A (en) * 1993-12-30 1996-08-20 International Business Machines Corporation System and method for adaptive active monitoring of high speed data streams using finite state machines
US5629752A (en) * 1994-10-28 1997-05-13 Fuji Photo Film Co., Ltd. Method of determining an exposure amount using optical recognition of facial features
NO309169B1 (no) * 1998-11-13 2000-12-18 Interagon As Sokeprosessor
US6675163B1 (en) * 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
JP2004013504A (ja) * 2002-06-06 2004-01-15 Univ Hiroshima パターン認識システム、このシステムに用いられる連想メモリ装置及びパターン認識処理方法
US7464254B2 (en) * 2003-01-09 2008-12-09 Cisco Technology, Inc. Programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4510617A (en) * 1981-02-20 1985-04-09 Nippon Electric Co., Ltd. Character recognition system utilizing pattern matching method
US4651341A (en) * 1982-09-14 1987-03-17 Fujitsu Limited Pattern recognition apparatus and a pattern recognition method
US5465305A (en) * 1991-11-08 1995-11-07 Canon Kabushiki Kaisha Character recognition method and apparatus for preparing a plurality of character recognition processes in parallel
US5568563A (en) * 1993-05-17 1996-10-22 Mitsubishi Denki Kabushiki Kaisha Method and apparatus of pattern recognition

Also Published As

Publication number Publication date
US20050154802A1 (en) 2005-07-14
US20070150621A1 (en) 2007-06-28
US7444434B2 (en) 2008-10-28
CN1641685A (zh) 2005-07-20
US20070150623A1 (en) 2007-06-28
US20070150622A1 (en) 2007-06-28
US7243165B2 (en) 2007-07-10
US7502875B2 (en) 2009-03-10

Similar Documents

Publication Publication Date Title
CN1306449C (zh) 并行模式检测引擎集成电路、相关方法及数据处理系统
CN100350769C (zh) 使用网络处理器和并行模式检测引擎检测侵入
US11836081B2 (en) Methods and systems for handling data received by a state machine engine
US20230214282A1 (en) Programmable device, hierarchical parallel machines, and methods for providing state information
US7464254B2 (en) Programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data
US9886017B2 (en) Counter operation in a state machine lattice
US20200334533A1 (en) Methods and systems for data analysis in a state machine
US7185175B2 (en) Configurable bi-directional bus for communicating between autonomous units
CN100483402C (zh) 用于执行高速上下文检索和数据模式特征描述的可编程规则处理设备
CN1447941A (zh) 搜索不同尺寸的字
Kim Energy-Efficient Accelerator Design for Emerging Applications
CN112463821A (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
ASS Succession or assignment of patent right

Owner name: TREND TECHNOLOGY CORP.

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORP.

Effective date: 20100715

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: NEW YORK, THE USA TO: TOKYO METROPOLIS, JAPAN

TR01 Transfer of patent right

Effective date of registration: 20100715

Address after: Tokyo, Japan, Japan

Patentee after: Trend Technology Corp.

Address before: American New York

Patentee before: International Business Machines Corp.

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: 20070321

Termination date: 20200104