DE60318722T2 - Eine programmierbare regelverarbeitungsvorrichtung für hochgeschwindigkeits-kontextsuchen und -erkennung von mustern in daten - Google Patents

Eine programmierbare regelverarbeitungsvorrichtung für hochgeschwindigkeits-kontextsuchen und -erkennung von mustern in daten Download PDF

Info

Publication number
DE60318722T2
DE60318722T2 DE60318722T DE60318722T DE60318722T2 DE 60318722 T2 DE60318722 T2 DE 60318722T2 DE 60318722 T DE60318722 T DE 60318722T DE 60318722 T DE60318722 T DE 60318722T DE 60318722 T2 DE60318722 T2 DE 60318722T2
Authority
DE
Germany
Prior art keywords
search
array
pattern
rule processor
rule
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
DE60318722T
Other languages
English (en)
Other versions
DE60318722D1 (de
Inventor
Harshvardhan Santa Clara SHARANGPANI
Rajesh Santa Clara PATIL
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.)
Cisco Systems Inc
Original Assignee
Cisco Systems Inc
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 Cisco Systems Inc filed Critical Cisco Systems Inc
Application granted granted Critical
Publication of DE60318722D1 publication Critical patent/DE60318722D1/de
Publication of DE60318722T2 publication Critical patent/DE60318722T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft das Gebiet der Informationsverarbeitung, insbesondere das Gebiet der Inhaltsanalytik und -verarbeitung.
  • HINTERGRUND DER ERFINDUNG
  • Signifikante Entwicklungstendenzen in der Datenverarbeitung und bei Kommunikationen führen zu dem Aufkommen von Umgebungen, die voll sind von Inhaltsanalytik und -verarbeitung. Diese Umgebungen erfordern eine hohe Performanz sowie auch Programmierbarkeit bei einer bestimmten Klasse von Funktionen, nämlich dem Suchen, dem Parsing, der Analyse, der Interpretation und der Transformation eines Inhalts in Nachrichten, Dokumenten oder Paketen. Bekannte Gebiete, die eine solche reichliche Inhaltsanalytik sowie Inhaltsverarbeitung beanspruchen, umfassen die inhaltssensitive Vernetzung, inhaltsbasierte Sicherheitssysteme, die Überwachung, die verteilte Datenverarbeitung, die drahtlose Kommunikation, Mensch-Computer-Schnittstellen, Informationsspeicherungs- und Informationswiedergewinnungssysteme, die Inhaltssuche im semantischen Web, die Bioinformatik und andere.
  • Das Gebiet der inhaltssensitiven Vernetzung erfordert das Durchsuchen und die Prüfung des Inhalts im Innern von Paketen oder Nachrichten, um festzustellen, wohin solche Pakete und Nachrichten geroutet oder weitergeleitet werden sollen. Eine solche Prüfung muß bei durchlaufenden Nachrichten bei "Leitungsgeschwindigkeit" durchgeführt werden, welches die Datenübertragungsrate der Netzwerkverbindung ist. Wenn man voraussetzt, dass Leitungsgeschwindigkeiten in modernen Netzwerken von 100 MBits/Sekunde bis zu 40 GBits/Sekunde reichen, besteht ein gewaltiger Druck bezüglich der Geschwindigkeit, bei der die Inhaltsprüfungsfunktion durchgeführt werden muß.
  • Inhaltsbasierte Sicherheitssysteme und Überwachungs- und Kontrollsysteme müssen den Inhalt von Nachrichten oder Paketen analysieren und einen Satz von Regeln anlegen, um festzustellen, ob eine Sicherheitsverletzung oder die Möglichkeit eines Eindringens bzw. Angriffs besteht. Typischerweise müssen bei modernen Netzwerkeindringungserkennungssystemen (NIDS; network intrusion detection systems) eine große Anzahl von Mustern, Regeln und Ausdrücken an die Eingangs-Payload bei Leitungsgeschwindigkeit angelegt werden, um zu gewährleisten, dass alle potentiellen Systemverletzbarkeiten aufgedeckt werden. Wenn man voraussetzt, dass sich die Netzwerk- und Datenverarbeitungsinfrastruktur immer weiter entwickelt, werden weiterhin neue Verletzbarkeiten auftauchen. Darüber hinaus werden immer ausgeklügeltere Angriffe von Eindringlingen verwendet, um sich einer Entdeckung zu entziehen. Eindringungserkennungssysteme müssen in der Lage sein, alle bekannten Angriffe auf das System erkennen zu können, und müssen auch intelligent genug sein, um ein ungewöhnliches und verdächtiges Verhalten erfassen zu können, das neue Angriffe anzeigt. Alle diese Faktoren führen zu einem Bedürfnis nach sowohl einer Programmierbarkeit sowie auch einer extrem hohen Leistung bezüglich der Inhaltsanalyse und -verarbeitung.
  • Mit dem Erscheinen der verteilten und gebündelten Datenverarbeitung werden die Aufgaben nun auf mehrere Computer oder Server verteilt, die zusammenarbeiten und miteinander kommunizieren, um den Verbundjob fertig zu stellen. Diese Verteilung führt zu einem schnellen Anstieg der Computerkommunikation, wodurch eine hohe Performanz bei einer solchen Nachrichtenverarbeitung verlangt wird. Mit dem Aufkommen von XML (Extensible Markup Language; erweiterbare Auszeichnungssprache) als dem neuen Standard für den universellen Datenaustausch kommunizieren Anwendungen nun unter Verwendung von XML als dem "Anwendungsschicht-Datentransport" miteinander. Nachrichten und Dokumente werden nun in eine XML-Auszeichnung eingebettet. Die gesamte Nachrichtenverarbeitung erfordert zuerst einmal, dass das XML-Dokument geparst wird und der relevante Inhalt extrahiert und interpretiert wird, woraufhin dann jegliche benötigte Transformation und Filterung folgen. Da diese Funktionen bei einer hohen Nachrichtenübertragungsrate durchgeführt werden müssen, werden sie rechnerisch sehr anspruchsvoll.
  • Mit der Zunahme von ungebundenen Kommunikationsnetzwerken und drahtlosen Netzwerken gibt es einen Anstieg bei dem Zugriff auf Informationen von der drahtlosen Vorrichtung. Bei dem gegebenen leichten Formfaktor der Client-Vorrichtung ist es wichtig, dass die Daten, die zu dieser Vorrichtung geliefert werden, gefiltert werden, und dass die Payload (Nutzlast) klein gehalten wird. Umgebungen der Zukunft werden den XML-Inhalt von der drahtgebundenen Infrastruktur in einen leichtgewichtigen Inhalt (unter Verwendung der Wireless Markup Language (drahtlosen Auszeichnungssprache) bzw. WML) in der drahtlosen Infrastruktur filtern und transformieren. Durch die zunehmende Verwendung von drahtlosen Netzwerken wird diese Inhaltstransformationsfunktion so allgemein üblich sein, dass eine effiziente Lösung für deren Handhabung benötigt werden wird.
  • Eine weitere aufkommende wichtige Notwendigkeit ist die Fähigkeit, mit Computern unter Verwendung von Schnittstellen zum Menschen, wie etwa Sprache, kommunizieren und interagieren zu können. Die Sprachverarbeitung und die Verarbeitung natürlicher Sprache sind extrem intensiv bezüglich der Inhaltssuche, der lexikalischen Analyse, des Inhalts-Parsing und der Grammatikverarbeitung. Wenn ein Sprachstrom einmal in Text umgewandelt worden ist, müssen Sprachsysteme große Vokabulare sowie auch syntaktische und semantische Regeln an den ankommenden Textstrom anlegen, um die Sprache zu verstehen.
  • Das Aufkommen und das Wachsen des World-Wide Web (weltweiten Netzes) hat den Informationswiedergewinnungs-(IR; information retrieval)-Systemen eine gewaltige Rechenbelastung auferlegt. Informationen werden dem Web kontinuierlich mit einer hohen Rate hinzugefügt. Diese Informationen werden typischerweise gegenüber einem erschöpfenden Vokabular von Worten vollständig indexiert und werden Datenbanken von Suchmaschinen und IR-Systemen hinzugefügt. Da Informationen ständig erschaffen und hinzugefügt werden, müssen Indexierer "immer eingeschaltet" sein. Um eine effiziente kontextabhängige Suche in Echtzeit bereitzustellen, ist es notwendig, dass ein Hochleistungs-Musterabstimmungs- bzw. -abgleichsystem für die Indexierungsfunktion vorhanden ist.
  • Ein weiteres Gebiet, das eine reichhaltige Inhaltsanalytik und Inhaltsverarbeitung beansprucht, ist das Gebiet der Bioinformatik. Die Genanalytik und die Proteomik erfordern die Anwendung von komplexen Such- und Analysealgorithmen bei Gensequenzen und Genstrukturen. Wiederum erfordert eine solche Berechnung Hochleistungs-Such-, -Analyse- und -Interpretations-Fähigkeiten.
  • Somit werden aufkommende Computer- und Kommunikationsumgebungen der Zukunft eine reichhaltige Analyse und Verarbeitung des Inhalts beanspruchen. Solche Umgebungen werden effiziente und programmierbare Lösungen für die folgenden Funktionen benötigen – Suchen, lexikalische Analyse, Parsing (Syntaxanalyse), Charakterisierung, Interpretation, Filterung und Transformation von Inhalt in Dokumenten, Nachrichten oder Paketen.
  • Wesentlich für diese reichhaltigen Inhaltsverarbeitungsfunktionen sind Operationen zur Durchführung einer kontextabhängigen und inhaltsbasierten Suche und Navigation und eines reichhaltigen assoziativen Nachschlagens.
  • Im Stand der Technik ist die Such- und Nachschlageverarbeitung bis heute typischerweise auf eine von zwei Arten durchgeführt worden. Erstens ist eine solche Verarbeitung unter Verwendung von festgelegten anwendungsspezifischen integrierten Schaltungs-(ASIC; application specific integrated circuits)-Lösungen durchgeführt worden, die eine Kombination aus inhaltsadressierbaren Speichern (CAMs; content addressable memories), einer Komparator-Hardware und einer dedizierten Logik verwenden. So sind zum Beispiel Suchregeln in einem inhaltsadressierbaren Speicher gespeichert, und die Daten werden quer durch die Struktur geströmt, wobei diese gleichzeitig um 1 Byte oder 1 Wort verschoben werden. Alternativ dazu sind spezifische Komparatoren an festen Stellen angeordnet, um spezifische Werte in den ankommenden Daten zu erkennen. Das Vorkommen von Übereinstimmungen wird aufgezeichnet und von der dedizierten Logik gemäß den Anforderungen der Zielanwendung verarbeitet. Obwohl der festgelegte ASIC-Lösungsweg die Performanz steigern kann, mangelt es ihm an einer leichten Programmierbarkeit, und folglich ist seine Anwendung stark eingeschränkt. Des Weiteren sind die Kosten, die mit dem Entwerfen und dem fabrikmäßigen Herstellen von spezifischen Chips für jede Lösung, auf die abgezielt wird, verbunden sind, unerschwinglich.
  • Zweitens sind traditionelle Universalmikroprozessoren dazu verwendet worden, reichhaltige Such- und Nachschlagefunktionen und die assoziierte Inhaltsverarbeitung zu handhaben. Mikroprozessoren sind voll programmierbare Vorrichtungen und sind in der Lage, die entstehenden Bedürfnisse von Problemen anzugehen – durch ein einfaches Neuprogrammieren der Software kann die neue Funktionalität neu entwickelt werden. Aber der traditionelle Mikroprozessor ist bezüglich des Leistungsgrades, den er der reichhaltigen Inhaltsanalytik und der Inhaltsverarbeitung anbieten kann, begrenzt.
  • Die Leistungsbeschränkung bezüglich der Inhaltsanalytik liegt in der Natur des Designs und der Entwicklung der Mikroprozessorarchitektur. Der Mikroprozessor wurde ursprünglich als eine Recheneinheit erschaffen, die arithmetische Operationen bei Wörtern mit 1, 2, 4, 8 Bytes durchführt. Später, als sich das Gebiet der Datenverarbeitung weiterentwickelte, wurde dem Mikroprozessor zunehmend immer mehr Funktionalität hinzugefügt, um auf die aufkommenden Gebiete abzuzielen. Als eine Folge davon ist der Universalmikroprozessor zwar über einen sehr weiten Bereich von Anwendungen funktionell, ist aber nicht sehr gut auf eine Anwendung im Besonderen eingestellt. Grundsätzlich weist die Mikroprozessorarchitektur, was die Bedürfnisse der Inhaltsanalytik betrifft, zwei Hauptbeschränkungen auf – (1) ihr fehlt die Fähigkeit, gleichzeitig umfangreiche parallele und Fein-Musterabstimmungs- und -vergleichsoperationen bei großen Datensätzen durchführen zu können, und (2) fehlt ihr die Fähigkeit, schnelle und mehrere Zustandsübergänge und effiziente mehrdirektionale Steuerungsablaufänderungen auf der Grundlage von eingegebenen Daten durchführen zu können.
  • Der Befehlssatz des Mikroprozessors ist ein skalarer Befehlssatz, so dass die Befehle in einer einzigen geordneten Sequenz ausgeführt werden müssen. Die Befehlssätze von typischen Mikroprozessoren ermöglichen den Vergleich einer einzigen 64-Bit-Größe, die in einem Register gespeichert ist, mit einer anderen 64-Bit-Größe, die in einem anderen Register gespeichert ist. Der Vergleich wird so durchgeführt, dass die beiden Operanden ausgerichtet sind. Wenn der Vergleich zu dem Zweck einer Mustersuche durchgeführt wird, dann muß er wiederholt aufgerufen werden, nachdem einer oder beide der Operanden jedes Mal um eine variable Anzahl an Bytes verschoben worden ist/sind. Oftmals wird ein solches wiederholtes Verschieben in einer Schleife mit einer Steuerungsablaufänderung durchgeführt, die bei jeder Iteration die Steuerung von dem Code an der Unterseite der Schleife zu dem Code an der Oberseite der Schleife transferiert. Steuerungsablaufänderungen in dem Mikroprozessor werden erzielt, indem zu einer neuen Codesequenz gesprungen wird. Da moderne Mikroprozessoren in hohem Maße gepipelinet sind (in der Größenordnung von 20–30 Stufen in Produkten wie etwa den Pentium III und Pentium IV Prozessoren der Firma Intel Corporation aus Santa Clara, Kalifornien), ist der Leistungsverlust, der durch das Springen herbeigeführt wird, beträchtlich. Die gesamte Mikroprozessor-Pipeline muß bei einem durchgeführten Sprung geleert werden. Folglich müssen hoch entwickelte Sprungvorhersagetechniken bei solchen Prozessoren angewendet werden, um die Pipeline in einem ausreichenden Maße mit Befehlen von dem gewünschten Pfad unmittelbar nach den Steuerungsablaufänderungen versorgt zu halten. Aber die meisten Sprungvorhersagetechniken stellen nur empirische und statistische Leistungsverbesserungen bereit, wie etwa, dass Steuerungsablaufänderungen meistens ein Langsamerwerden sowie auch einen Nondeterminismus in dem Leistungsgrad einführen, der geliefert werden kann.
  • Eine Anzahl von Such- und Musterabstimmungsalgorithmen sind entwickelt worden, um den Mikroprozessor aufs Beste auszunutzen. Der Boyer-Moore-Algorithmus wird weit und breit als eine der bestbekannten Techniken betrachtet, die bei einem Mikroprozessor verwendet werden, um das Auftreten von Mustern in einem gegebenen Datensatz zu finden. Der Algorithmus verarbeitet nur ein Muster gleichzeitig und muß wiederholt aufgerufen werden, wenn mehr als ein Muster in einem Datensatz gesucht werden soll. Für jedes zu suchende Muster schreitet er sequentiell durch den Datensatz voran und stellt selektive Vergleiche auf der Basis von Beobachtungen an, die aus der Vorcharakterisierung des Musters erhalten werden. Dieser Algorithmus stellt eine exzellente Leistung im Vergleich zu anderen Musterabstimmungsalgorithmen bereit, indem er die gesamte Anzahl an Vergleichen innerhalb eines gegeben Datensatzes reduziert. Aber auf Grund der sequentiellen Natur des Algorithmus ist die Leistung durch fundamentale Beschränkungen der Mikroprozessorarchitektur, nämlich den skalaren Befehlssatz und den Verlust, der durch den Sprung herbeigeführt wird, begrenzt.
  • Infolge der oben erwähnten architektonischen Beschränkungen des Mikroprozessors werden die Effizienz und die Fähigkeit von herkömmlichen Mikroprozessoren durch die aufkommenden Datenverarbeitungs- und Kommuni kationsumgebungen, die vorher beschrieben wurden, stark herausgefordert. Mehrere Datenpunkte können bereitgestellt werden, um diese Argumente zu unterstützen. So ist es zum Beispiel in einem Netzwerkeindringungserkennungssystem (NIDS) wie etwa Snort bereits wünschenswert, bei ankommenden Paketen eine Signaturerkennung von Hunderten von Strings anzuwenden. Das Durchführen dieses Arbeitspensums mit Signaturen von 8-Byte-Mustern in einem 3 GHz Pentium IV Prozessor in einem kommerziellen Mikroprozessorbasierten System, das eine verbesserte Version des Boyer-Moore-Musterabstimmungsalgorithmus verwendet, begrenzt die Paketübertragungsrate auf weniger als 50 Mbps. In ähnlicher Weise ist das Parsen von XML-Dokumenten auf einer solchen Plattform auf den Bereich von 10 MB/s beschränkt, und die Sprachverarbeitung ist auf 1 Echtzeitstrom bei beschränkten Grammatiken und Vokabularen begrenzt. Diese Datenpunkte zeigen an, dass der herkömmliche Prozessor von 2003 oder 2004 in der Lage sein wird, eine reichhaltige Inhaltsanalytik und -verarbeitung bei Übertragungsraten um den Bereich von 100 Mbps herum bereitzustellen. Aber bis zu diesem Zeitrahmen werden Datenübertragungsraten von zwischen 1 Gbps bis 10 Gbps in Unternehmensnetzwerken und -umgebungen nicht unüblich sein. Es ist eindeutig, dass es eine starke Inkongruenz von ein oder zwei Größenordnungen zwischen der Leistung, die von dem herkömmlichen Mikroprozessor geliefert werden kann, und derjenigen gibt, die von der Umgebung gefordert wird. Es ist zwar möglich, mehrere parallele Mikroprozessorsysteme zu verwenden, um einige der gewünschten Funktionen bei der Zielübertragungsrate auszuführen, aber dies erhöht beträchtlich die Kosten des Systems. Es besteht also eindeutig ein Bedarf an einer effizienteren Lösung für diese Zielfunktionen.
  • Es besteht ein Bedarf an einer neuen Lösung für programmierbare Verarbeitungsvorrichtungen, die für die Inhaltsanalytik und -verarbeitung geeigneter ist und die bei einem Satz von Funktionen effizient ist, der die kontextabhängige Suche, die lexikalische Analyse, das Parsing, die Interpretation und die Transformation von Inhalt bei Nachrichten, Paketen oder Dokumenten umfasst.
  • Die veröffentlichte US-Patentanmeldung US 2002/0087537 (Evans) wurde von dem Europäischen Patentamt als D1 zitiert. Sie betrifft ein Verfahren und eine Vorrichtung für eine parallele Suche durch einen Datenstrom. Ein Suche nach der "Methode der rohen Gewalt" wird durch den Datenstrom hindurch ausgeführt, und zwar unter Verwendung einer Registerbank und von Komparatoren, um schnell ein oder mehrere Muster in dem Datenstrom zu finden. Der physische Raum wird der Geschwindigkeit geopfert, indem mehrere Komparatoren in der gleichen Registerbank verwendet werden. Der Ausgang der Komparatoren wird in eine Decodierschaltung eingespeist, die die Stellen der Übereinstimmungen und Nichtübereinstimmungen ermittelt. Übereinstimmungen werden gegenüber einer Datenbank/Tabelle verglichen, um ihre Signifikanz zu bestimmen.
  • In Übereinstimmung mit der vorliegenden Erfindung gibt es einen Regelprozessor zum Durchführen von Suchen, wobei der Prozessor Folgendes aufweist:
    eine Vielzahl von Eingangs-Payload-Suchregistern;
    eine Suche-Ausführungsmaschine, die mit der Vielzahl von Suchregistern gekoppelt ist, um eine oder mehrere Suchen nach Inhalt in den Suchregistern über eine parallele Musterabstimmung im Ansprechen auf das Ausführen eines oder mehrerer Suchbefehle durchzuführen, die die eine oder die mehreren Mustersuchen spezifizieren und ein oder mehrere Muster dem Inhalt in den Suchregistern präsentieren, wobei wenigstens ein Suchbefehl in dem einen oder den mehreren Suchbefehlen Opcode-Informationen enthält, um einen Suchoperationstyp, Musterinformationen, um ein zu lokalisierendes Muster zu spezifizieren, eine Maske, um einen Teil der Musterinformationen zu spezifizieren, der das Muster enthält, und ein Paar Offsets anzugeben, um Start- und Endegrenzen von Stellen in den Suchregistern für die Suche für den wenigstens einen Suchbefehl zu spezifizieren.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird aus der ausführlichen, unten angegebenen Beschreibung und aus den beigefügten Zeichnungen verschiedener Ausführungsbeispiele der Erfindung noch besser verständlich, die aber nicht zur Beschränkung der Erfindung auf die spezifischen Ausführungsbeispiele, sondern lediglich zur Erläuterung und zum Verständnis betrachtet werden sollen.
  • 1 ist ein Blockdiagramm eines Ausführungsbeispiels eines Regelprozessors mit einer Suchvorrichtung.
  • 2A ist ein Blockdiagramm eines Ausführungsbeispiels eines Suchregisters und der Suche-Ausführungs-Hardware.
  • 21B ist ein Blockdiagramm eines Ausführungsbeispiels eines Sucharray.
  • 3A ist ein Blockdiagramm eines Ausführungsbeispiels eines Sortierers.
  • 3B ist ein Blockdiagramm eines Ausführungsbeispiels eines Bereichsauswahlmechanismus in einem Sortierer.
  • 4 ist ein Schaltplan eines Ausführungsbeispiels eines Sucharray.
  • 5 veranschaulicht eine beispielhafte Mikroarchitektur eines Regelprozessors, die aus vier Verarbeitungsstufen besteht.
  • 6 veranschaulicht einen beispielhaften Pseudocode eines komplexen Musterabstimmungs-Regelsatzes und den entsprechenden Mikrocode für einen beispielhaften Regelprozessor.
  • 7 veranschaulicht die Pipeline-Ausführung des Mikrocodes, der in 6 gezeigt ist, Takt um Takt.
  • AUSFÜHRLICHE BESCHREIBUNG DER VORLIEGENDEN ERFINDUNG
  • Es wird eine programmierbare Regelverarbeitungsvorrichtung zum Ausführen von kontextabhängigen Suchen mit hoher Geschwindigkeit nach willkürlich langen Mustern in einem Dokument, einer Nachricht oder einem anderen Inhalt beschrieben. Der Regelprozessor stellt eine Architektur bereit, die auf die Inhaltssuche und -analyse zugeschnitten ist. In einem Ausführungsbeispiel gestattet der Regelprozessor ein schnelles paralleles und rekursives Sequentialisieren von Regeln gegenüber einer Inhalts-Payload, wodurch eine effiziente Verarbeitung von Arbeitspensen erlaubt wird, die intensiv in Bezug auf Regelgrammatiken sind.
  • Architektonisch verwendet der Regelprozessor einen Satz von Eingangs-Payload-Suchregistern. Eine Suchregisterdatei enthält die Eingangsdaten (oder die Inhalts-Payload), die verschiedenen Suchregeln präsentiert werden sollen. Daten können in die Suchregister von dem Speicher aus geladen werden, oder können in die Suchregister und aus diesen heraus von und zu anderen Res sourcen in dem Regelprozessor bewegt werden. In einem Ausführungsbeispiel kann eine Vielfalt von Suchen bei dem Inhalt der Suchregister durchgeführt werden. Diese Suchen sind in der Form von Suchbefehlen oder Suchregeln spezifiziert, die den Payload-Daten präsentiert werden. Eine Suche-Ausführungs-Hardware ist mit den Suchregistern gekoppelt. Diese Hardware führt die Musterabstimmungs- und Verarbeitungsfunktionalität durch, die benötigt wird, um die Ergebnisse der Suchfunktion zu berechnen.
  • 1 ist ein Blockdiagramm eines Ausführungsbeispiels eines Regelprozessors, der Suchregister 101 und eine Suche-Ausführungs-Hardware 102 umfasst. Ein Suchbefehl 103 wird den Suchregistern 101 und der Suche-Ausführungs-Hardware 102 präsentiert. Der Prozessor umfasst ferner eine Befehlsspeichervorrichtung, die als Regel-/Befehlsspeicher 104 bezeichnet wird, und eine Vorrichtung zur Steuerung des Ablaufs von Befehlen, die in einem Ausführungsbeispiel eine Befehls-Ablaufssteuerung 105 und einen Befehlszeiger 106 umfasst.
  • In einem Ausführungsbeispiel umfassen die Suchregister 101 eine Registerdatei mit 2K Einträgen von jeweils einem Byte, wobei die Werte in den Suchregistern 101 durch eine 11-Bit-Registeradresse adressiert werden. Deshalb können 2 KB an Inhaltsdaten, die gesucht werden sollen, in die Suchregister 101 geladen werden.
  • Eine typische Suche erfordert, dass ein Befehl oder eine Regel den Suchregistern präsentiert wird. Die Regel spezifiziert ein Muster zusammen mit einem oder mehreren zusätzlichen Suchparametern. In einem Ausführungsbeispiel sendet die Suchfunktion eine Anzahl von Ergebnissen zurück. Diese umfassen eine Angabe dahingehend, ob eine Übereinstimmung zwischen dem Muster und dem Inhalt in den Suchregistern gefunden wurde oder nicht, und auch eine Übereinstimmungsstelle, die angibt, wo in den Payload-Suchregistern die Übereinstimmung aufgetreten ist.
  • Weitere Suchsteuerparameter werden von dem Regelprozessor der Suche-Ausführungs-Hardware 102 bereitgestellt. Suchbefehle können einen Maskenvektor zusammen mit einem Satz von Bytes bereitstellen, die das Zielsuchmuster umfassen. Der Maskenvektor kann aus Bits bestehen, die dem Zielmuster-Byte bzw. den Zielmuster-Bytes entsprechen. In einem Ausführungsbeispiel werden spezifische Bytes in dem Zielmuster, die während der Suchoperation ignoriert werden sollen, ausgewählt, indem die entsprechenden Bits in dem Maskenvektor auf eine vorbestimmte logische Ebene von 0 oder 1 gesetzt werden. Auf diese Weise kann das Zielmuster, das in der Suche verwendet wird, größenmäßig reduziert werden. Außerdem können die Regelverarbeitungsbefehle Start- und Endestellen spezifizieren, die ein Suchfenster oder einen Bereich an Bytes in den Suchregistern 101 bilden, innerhalb dem die Suche beschränkt ist.
  • Zusätzliche Parameter für Suchbefehle können eine Sprungadresse umfassen, die von dem Regelprozessor in dem Falle einer nicht erfolgreichen Suche verwendet werden soll. Dieses Merkmal würde die Leistung des Regelprozessors steigern, wenn Suchen nach Strings von Bytes, die beträchtlich länger als die Breite des Datenpfades der Suche-Ausführungs-Hardware 102 sind, ohne irgendwelche Übereinstimmungen fehlschlagen, oder nach einem Abgleich von nur den ersten paar Bytes mit den Inhalten der Suchregistern 101 fehlschlagen. Der Regelprozessor kann die restlichen Suchbefehle für den aktuellen String überspringen, indem er zu dem Befehl springt, der auf den letzten Suchbefehl für den aktuellen String folgt.
  • Ein Beispiel eines Suchbefehls ist ein Fenster-Finde-Erste-Vorwärts-Befehl (windowed-find-first-forward instruction). In einem Ausführungsbeispiel sendet die Suche in einer Fenster-Finde-Erste-Vorwärts-Suche, bei der ein 8-Byte-Muster, das in einer oder durch eine Regel spezifiziert ist, eine 8-Bit-Maske, eine Startstelle-Offset-Adresse, die auf ein Startbyte in den 2 KB von Inhaltsdaten (z. B. Dokumentdaten) in den Suchregistern 101 zeigt, und eine Endestelle-Offset-Adresse, die auf ein Endebyte in den 2 KB von Inhaltsdaten (z. B. Dokumentdaten) in den Suchregistern 101 zeigt, vorgegeben sind, die Startadresse (z. B. einen 11-Bit-Vektor) in den Suchregistern 101 des ersten Strings nach der spezifizierten Startstelle-Adresse, die mit dem abgedeckten Muster übereinstimmt, zurück, vorausgesetzt diese Adresse startet vor der Endestelle-Offset-Adresse. In einem anderen Beispiel kann eine Fenster-Finde-Erste-Rückwärts-Suche (windowed-find-first-reverse search) durchgeführt werden. In einem Ausführungsbeispiel sendet die Suche in einer Fenster-Finde-Erste-Rückwärts-Suche, bei der ein 8-Byte-Muster in der Regel, eine 8-Bit- Maske, eine Startstelle-Offset-Adresse, die auf ein Startbyte in den 2 KB an Inhalt in den Suchregistern 101 zeigt, und eine Endestelle-Adresse, die auf ein Endebyte in den 2 KB an Inhalt in den Suchregistern 101 zeigt, vorgegeben sind, die Startadresse (z. B. einen 11-Bit-Vektor) des letzten Strings vor der spezifizierten Endestelle-Adresse zurück, die mit dem abgedeckten Muster übereinstimmt, vorausgesetzt diese Adresse startet nach der Startstelle-Offset-Adresse.
  • Der Regelprozessor stellt auch eine Steuerungsspeichervorrichtung bzw. einen Regelspeicher 104 bereit, der Regeln oder Regelsätze enthält, die an die Payload-Daten angelegt werden sollen. In einem Ausführungsbeispiel hält der Speicher 104 Regelsätze oder Sequenzen von Befehlen oder Codesequenzen, die Muster, Regeln, Ausdrücke oder Grammatiken beschreiben, die an die Suchregister 101 angelegt werden müssen und in diesen entdeckt werden müssen. Das Regelvokabular kann einen Bereich von Operationen spezifizieren, der globale oder lokale (Fenster-)Suchen mit entweder exakten Übereinstimmungen oder teilweisen Übereinstimmungen, mit individuellen und mehrfachen Übereinstimmungsinformationen, die einigen Registern geliefert werden, Primitiven zum Erzeugen von Offsets und Adressen in der Ausgangs-Payload des Regelprozessors, sowie auch logische Operatoren und Rechenoperatoren, die an die Suchergebnisse angelegt werden sollen, umfasst, aber nicht darauf begrenzt ist. Solche Regeln können aus mehreren Feldern zusammengesetzt sein, die die verschiedenen, oben beschriebenen Parameter spezifizieren. Jeder Parameter kann direkt in der Regel spezifiziert werden oder alternativ indirekt durch die Verwendung eines Zeigers auf eine Register- oder eine Speicherstelle spezifiziert werden, die den zu verwendenden Wert enthält. In Ausführungsbeispielen, in denen sowohl direkte als auch indirekte Spezifikationen zulässig sind, kann jedes dieser Felder ein zusätzliches Unterfeld enthalten, das anzeigt, ob die direkte oder die indirekte Spezifikation verwendet wird.
  • In der nachfolgenden Beschreibung werden zahlreiche Einzelheiten dargelegt, um ein vollständiges Verständnis der vorliegenden Erfindung bereitzustellen. Es wird aber einem Fachmann auf dem Gebiet offensichtlich sein, dass die vorliegende Erfindung ohne diese spezifischen Einzelheiten praktiziert werden kann. In anderen Fällen werden bekannte Strukturen und Vorrichtun gen eher in Blockdiagrammform als in Einzelheiten gezeigt, um ein Unverständlich machen der vorliegenden Erfindung zu vermeiden.
  • Einige Teile der ausführlichen Beschreibungen, die folgen, werden in Form von Algorithmen und symbolischen Repräsentationen von Operationen bei Datenbits innerhalb eines Computerspeichers präsentiert. Diese algorithmischen Beschreibungen und Repräsentationen sind die Mittel, die von den Fachleuten auf dem Gebiet der Datenverarbeitungskünste verwendet werden, um den Inhalt ihrer Arbeit anderen Fachleuten auf diesem Gebiet höchst effektiv zu vermitteln. Ein Algorithmus wird hierbei und im Allgemeinen als eine selbstkonsistente Sequenz von Schritten verstanden, die zu einem gewünschten Resultat führt. Die Schritte sind diejenigen, die eine physikalische Manipulation von physikalischen Größen erfordern. Für Gewöhnlich, obwohl nicht notwendigerweise, nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die gespeichert, transferiert, kombiniert, verglichen und auf andere Weise manipuliert werden können. Es hat sich hin und wieder als praktisch erwiesen, vor allem aus Gründen der allgemeinen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen.
  • Man sollte sich aber daran erinnern, dass alle diese und ähnliche Begriffe mit den geeigneten physikalischen Größen assoziiert werden sollen und lediglich praktische Bezeichnungen sind, die für diese Größen verwendet werden. Wenn nicht ausdrücklich anderweitig angegeben ist, wie dies aus der nachfolgenden Erörterung offensichtlich wird, besteht ein Verständnis dahingehend, dass sich durch die ganze Beschreibung hindurch Erörterungen, die Begriffe wie "Verarbeiten" oder "Datenverarbeitung" oder "Berechnen" oder "Bestimmen" oder "Anzeigen" oder dergleichen verwenden, auf die Aktion und die Prozesse eines Computersystems oder einer ähnlichen elektronischen Datenverarbeitungsvorrichtung beziehen, die Daten, die als physikalische (elektronische) Größen innerhalb der Register und Speicher des Computersystems repräsentiert sind, in andere Daten manipulieren und transformieren, die auf ähnliche Weise als physikalische Größen in den Speichern oder Registern des Computersystems oder anderen solchen Informationsspeicherungs-, -übertragungs- oder -anzeigevorrichtungen repräsentiert werden.
  • Die vorliegende Erfindung betrifft auch eine Vorrichtung zum Durchführen der hier genannten Operationen. Diese Vorrichtung kann speziell für die benötigten Zwecke konstruiert sein, oder sie kann einen Universalcomputer umfassen, der von einem Computerprogramm, das in dem Computer gespeichert ist, selektiv aktiviert oder rekonfiguriert wird. Ein solches Computerprogramm kann in einem computerlesbaren Speichermedium gespeichert sein, wie etwa, aber nicht beschränkt auf jede Art von Disks, einschließlich Floppy Disks, CDs, CD-ROMs und magnetooptische Disks, Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs), EPROMs, EEPROMs, magnetische oder optische Karten oder irgendeine andere Art von Medien, die für das Speichern von elektronischen Befehlen geeignet sind, und die jeweils mit einem Computersystembus gekoppelt sind.
  • Die hier präsentierten Algorithmen und Darstellungen sind nicht inhärent auf einen speziellen Computer oder irgendeine spezielle andere Vorrichtung bezogen. Verschiedene Universalsysteme können mit Programmen gemäß den hier gegebenen Lehren verwendet werden, oder es kann sich als praktisch erweisen, eine spezialisiertere Vorrichtung zu konstruieren, um die benötigten Verfahrensschritte durchzuführen. Die benötigte Struktur für eine Vielfalt dieser Systeme wird aus der unten aufgeführten Beschreibung offensichtlich werden. Außerdem ist die vorliegende Erfindung nicht unter Bezugnahme auf eine bestimmte Programmiersprache beschrieben. Es wird klar sein, dass eine Vielfalt von Programmiersprachen verwendet werden kann, um die Lehren der Erfindung, wie sie hier beschrieben ist, zu implementieren.
  • Ein maschinenlesbares Medium umfasst jeden Mechanismus zum Speichern oder Übertragen von Informationen in einer Form, die von einer Maschine (z. B. einem Computer) gelesen werden kann. Zum Beispiel umfasst ein maschinenlesbares Medium einen Nur-Lese-Speicher ("ROM"); einen Direktzugriffsspeicher ("RAM"); Magnetplattenspeichermedien; optische Speichermedien; Flash-Speicher-Vorrichtungen; elektrische, optische, akustische oder irgendeine andere Form von Fortpflanzungssignalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale, etc.); etc..
  • Eine beispielhafte Regelmaschinenarchitektur
  • Eine Regelverarbeitungsarchitektur wird für die Verwendung in einem Regelprozessor für die Inhaltsanalyse beschrieben, die ein paralleles und rekursives Sequentialisieren von Regeln gegenüber der Inhalts-Payload gestattet. Die Architektur sorgt für eine parallele Musterabstimmungsfähigkeit, die mit der Fähigkeit gekoppelt ist, mehrere schnelle inhaltsbasierte Zustandsübergänge zu machen.
  • In einem Ausführungsbeispiel umfasst der Regelprozessor eine Befehls- oder Regel-Ablaufsteuerung zum Anwenden von Regel für die Ausführung von einer Programmspeichervorrichtung bei einem Inhalt, der in den Suchregistern enthalten ist. Die Regeln und der Inhalt werden von einer Ausführungsmaschine verarbeitet, die ein Regelvokabular unterstützt, das speziell auf eine oder mehrere Operationen, wie etwa zum Beispiel Musterabstimmungs-, lexikalische Analyse-, Parsing- und Interpretationsfunktionen, zugeschnitten ist.
  • In einem Ausführungsbeispiel führt der Regelprozessor Sequenzen von priorisierten und gerichteten Suchen nach eingebundenen und nicht eingebundenen Mustern und auf Fenster und Bereiche festgelegte Suchen für ein willkürlich langes Muster durch, das an irgendeiner willkürlichen Stelle in einem Dokument, einem Strom, einer Nachricht oder einem Paket startet. Die Muster sowie auch die Bereichssteuerung und der Programmsteuerungsablauf (z. B. Sprungadressen) können statisch in Regeln spezifiziert werden, die in der Programmspeichervorrichtung enthalten sind, oder dynamisch indirekt aus einer Registerdatei unter Verwendung eines Zeigers oder Indexes, der in einer Regel dargelegt ist, ausgewählt werden. Dies ermöglicht eine kraftvolle, dynamische und kontextabhängige Musterabstimmung.
  • Der Regelprozessor führt Suchen durch, indem er zum Teil eine spezialisierte Musterabstimmungs-Hardwarestruktur verwendet, die mit den Suchregistern gekoppelt ist. In einem Ausführungsbeispiel unterstützt der Regelprozessor eine reichhaltige Such-, Sortier- und Priorisierungsfunktionalität. In einem Ausführungsbeispiel ist die Regelverarbeitungs-Hardware als eine vierstufige Pipeline mit einem Sucharray und einem Sortiererblock organisiert, die direkt auf 2 KB von Inhaltsdaten (z. B. Dokumentdaten) wirken, die in den Suchregistern enthalten sind. Die vier Stufen sind: (1) Regelabruf aus dem Regelspeicher und Regeldecodierung, (2) Regelassemblierung von indirekten Fel dern, (3) Suche-Ausführungsoperationen bei Werten in den Suchregistern, und (4) Sortieroperationen bei den Ergebnissen der Suchoperationen, gefolgt von der Zustellung der Ergebnisse.
  • Der Regelprozessor präsentiert eine oder mehrere Regeln einer Suche einer Suchregisterstruktur. In einem Ausführungsbeispiel ist das Suchregister eine 2 KB Registerdatei, wobei jeder Eintrag eine Breite von einem Byte aufweist. Zu suchende Daten werden in die Suchregisterdatei geladen. Jede Regel spezifiziert ein Muster, das der Suchregisterdatei präsentiert wird, um festzustellen, ob das Muster in den darin gespeicherten Daten vorhanden ist. Es kann auch eine Maske bereitgestellt werden, um das Muster weiter zu konfigurieren und/oder um die Größe des Musters, das in der Suche verwendet wird, zu reduzieren.
  • 1 ist ein Blockdiagramm eines Ausführungsbeispiels eines Regelprozessors. Unter Bezugnahme auf 1 wird den Suchregistern 101 und der Suche-Ausführungs-Hardware 102 kollektiv ein Suchbefehl 103 eingegeben. Der Suchbefehl 103 wird in 2A weiter veranschaulicht. Unter Bezugnahme auf 2A umfasst ein Suchbefehl 201 einen Opcode 201a, der den Typ der Suchoperation, ein Suchmuster 201b, eine Maske 201c, die die Bytes in dem Muster spezifiziert, die für den aktuellen Suchbefehl relevant sind, und zwei Offsets 201d und 201e beschreibt, die jeweils die Start- und Endegrenzen der Stellen in dem Suchregister spezifizieren, die für den aktuellen Suchbefehl relevant sind. Die Suche-Ausführungseinheit 202 gibt ein Ergebnis 203 aus, das in einem Ausführungsbeispiel aus einer Angabe des Erfolgs der Suchoperation besteht und zusätzlich einen oder mehrere Parameter wie etwa, aber nicht beschränkt auf einen Index umfasst, der die Stelle in dem Suchregister angibt, die den Suchbefehl der Suchoperation befriedigt hat.
  • Die Suche-Ausführungs-Hardware 202 umfasst ein Suchregister 202a und einen Sortierer 202b, wie dies in 2A gezeigt ist. Das Suchregister 202a speichert suchbare Daten, die der Inhalt von einem Dokument, einer Nachricht, einem Paket oder irgendeiner anderen bekannten Quelle von Daten sein können, die einer Suche unterzogen werden können. Die Größe des Suchregisters 202a kann willkürlich M Bytes sein und ist in einem Ausführungsbeispiel in einem größeren Array, das ein Sucharray 202c genannt wird, mit M Reihen von jeweils N Bytes organisiert. Daten von dem Suchregister 202a werden in einer replizierten Art und Weise im Innern des Sucharray gespeichert. Dieses Ausführungsbeispiel des Suchregisters kann aus mehreren Gründen, einschließlich der besseren Leistung für Suchen bei Mustern von N kontinuierlichen Bytes, bevorzugt sein.
  • In einem Ausführungsbeispiel werden Daten, die gesucht werden sollen, in dem Suchregister 202a durch die Verwendung eines Datengenerators 213 auf der Grundlage von von dem Adressengenerator 211 erzeugten Adressen gespeichert, die von dem Adressendecodierer 212 decodiert werden. Der Prozess des Speicherns erfordert auch das Aufzeichnen der Größe der suchbaren Daten im Suchregister 202a. Für Datensätze, die größenmäßig kleiner als die Kapazität des Suchregisters 202a sind, stellt das Suchregister 202a einen Mechanismus zur Beschränkung der Suchoperation auf die passenden Daten bereit. In einem Ausführungsbeispiel kann der Datengenerator 213 ein Muster speichern, das von vornherein so erstellt worden ist, dass es Daten repräsentiert, die für Suchoperationen in den restlichen Stellen des Sucharray 202c ignoriert werden, oder in einem alternativen Ausführungsbeispiel deaktiviert das Suchregister 202a die entsprechenden Stellen des Sucharray 202c aus der Teilnahme an Suchoperationen.
  • Zusätzlich zu der Fähigkeit, ein spezifiziertes Muster zu lokalisieren, kann das Suchregister 202a auch die Fähigkeit bereitstellen, spezielle Suchen wie etwa Groß-/Kleinbuchstaben-unabhängige Suchen bei Zeichendaten durchzuführen. Zur Unterstützung solcher und anderer spezieller Suchen kann das Suchregister 202a zusätzliche Informationen speichern, die mit jedem Byte an suchbaren Daten assoziiert sind. In einem Ausführungsbeispiel kann das Suchregister 202a spezielle Bitvektoren speichern, die mit allen suchbaren Daten assoziiert sind, die Groß-/Kleinbuchstaben-unabhängige Suchen oder Suchen nach Zeichen erlauben, die zu einer vordefinierten Klasse von Zeichen gehören.
  • Unabhängig von der Art und Weise, in der die suchbaren Daten überall in dem Sucharray 202c organisiert sind, empfängt das Sucharray 202c ein Muster 201b und eine Maske 201c. Das Muster 201b wird mit Einträgen in dem Sucharray 202c verglichen. In einem Ausführungsbeispiel weist das Sucharray 202c M Reihen von N Bytes auf, wobei N die gleiche Anzahl an Bytes ist, die sich in dem Muster 201b befinden. Die Maske 201c stellt eine Angabe derjenigen Bytes in dem Muster 201b bereit, die kein Teil des gesuchten Musters sind. Mit anderen Worten, wenn das Muster 201b ein Muster ist, das weniger als N Bytes beinhaltet, dann spezifiziert die Maske 201c, welche Bytes des Musters 201b das Sucharray 202c ignorieren soll. In einem Ausführungsbeispiel weist das Sucharray 202c eine Ausgangsleitung für jede der M Reihen in dem Sucharray 202c auf, die angibt, ob das gesuchte Muster mit den Inhaltsdaten übereinstimmte, die in dieser bestimmten Reihe gespeichert sind. In einem Ausführungsbeispiel lag eine Übereinstimmung des Musters mit den Inhaltsdaten in der bestimmten Reihe vor, wenn der Ausgang eine 1 ist. Die M Ausgangsleitungen des Sucharray 202c sind mit den Eingängen des Sortierers 202b gekoppelt.
  • Der Sortierer 202b ist auch gekoppelt, um Offsets 201d und 201e zu empfangen, die jeweils einen Start- und Endepunkt eines Bereichs in dem Suchregister 202a angeben, der gesucht werden soll. In einem Ausführungsbeispiel sind diese Offsets Log2M-Bit-Zahlen. Auf der Basis der Übereinstimmungsangabeleitungen von dem Sucharray 202c und des Start- und Endebereichs, wie er von den Offsets 201d und 201e spezifiziert ist, verarbeitet der Sortierer 202b die Ergebnisse des Sucharray 202c. Eine solche Verarbeitung kann das Durchführen von einer oder mehreren Operationen umfassen. Diese Operationen können Indexauflösungsfunktionen sein, die einen spezifischen Übereinstimmungsindex gemäß dem Typ der Operation ausgeben. In einem Ausführungsbeispiel umfassen die Operationen Find_First_Forward (Finde_Erste_Vorwärts), Find_First_Reverse (Finde_Erste_Rückwärts) und Find_Population_Count (Finde_Bestandszählung). Die Operationen werden durch den Opcode 201a in dem Suchbefehl 201 spezifiziert. Der Sortierer 202b kann Zwischenergebnisse oder Endergebnisse von vorhergehenden Operationen speichern, die in nachfolgenden Operationen in Verbindung mit den Übereinstimmungsangabeleitungen von dem Sucharray 202c verwendet werden können. Auf diese Weise kann der Sortierer 202b verwendet werden, um progressiv durch den suchbaren Datensatz zu navigieren, indem er eine Reihe von Operationen ausgibt, die die Ergebnisse von vorhergehenden Operationen verwenden. Außerdem kann der Sortierer 202b auch mit einer Registerdatei für die Speicherung von Ergebnissen vorhergehender Operationen zur Verwen dung in späteren Operationen, die ausgeführt werden können, nachdem eine willkürliche Anzahl von anderen Operationen ausgeführt worden ist, gekoppelt sein. Die Ergebnisse des Sortierers 202b können auch mit der Regelprozessor-Befehls-Ablaufsteuerung, wie etwa der Befehls-Ablaufsteuerung 105 von 1, gekoppelt sein, um Regelprogramm-Offsets (z. B. Sprungadressen) zu erzeugen oder bei deren Erzeugung zu assistieren.
  • Nach dem Verarbeiten erzeugt der Sortierer 202b Ausgaben, die angeben, ob eine Übereinstimmung vorliegt, und einen Index, der mit der Übereinstimmung assoziiert ist. Der Index kann die Stelle (Adresse) in dem Suchregister 202a angeben, an der im Hinblick auf die Oberseite des Suchregisters 202a die erste Übereinstimmung auftritt oder die letzte Übereinstimmung auftritt. Alternativ dazu kann der Index die Anzahl an Übereinstimmungen angeben, die innerhalb des Bereichs, der von den Offsets spezifiziert ist, aufgetreten sind.
  • Es sei angemerkt, dass der Bereich, der von den Offsets spezifiziert wird, dynamisch geändert werden kann. Zum Beispiel kann ein erster Suchbefehl an das Sucharray 202c anfänglich angelegt werden, während ein Bereich, der von dem Offset 201d und dem Offset 201e spezifiziert wird, alle Reihen des Sucharray 202c umfasst. Aber nach dem ersten Suchbefehl und nachdem eine Übereinstimmung identifiziert ist, können die Start- und Endebereiche in einem nachfolgenden Suchbefehl derart geändert werden, dass die Suche von einer Stelle aus beginnt, die die Übereinstimmungsleitungen umfasst, die in dem Bereich gefunden wurden, der von dem vorhergehenden Suchbefehl spezifiziert wurde. Diese Fähigkeit wird dadurch erreicht, dass die Funktionalität des indirekten Vorgehens verwendet wird, die es Feldern einer Regel oder eines Befehls erlaubt, Bezug auf Werte in einer Universalregisterdatei zu nehmen.
  • In 2A besteht das Sucharray 202c in einem Ausführungsbeispiel aus 2K Reihen von jeweils 8 Bytes. Somit hält das Suchregister 202a 2K Bytes an Daten. Das Sucharray 202c hält replizierte Daten. Jeder 8-Byte-String, der mit einem bestimmten Byte in dem Suchregister 202a beginnt, wird als eine bestimmte Reihe von Bytes in dem Sucharray 202c gespeichert. Diese Strings bestehen aus dem bestimmten Byte aus dem Suchregister 202a und zusätzlich 7 aufeinanderfolgenden Bytes, die auf dieses Byte in dem Suchregister 202a folgen. Somit hält jede Reihe des Sucharray 202c die 7 höchstwertigen Bytes der vorhergehenden Reihe und außerdem ein unmittelbar nachfolgendes Byte höherer Ordnung, das rechts von diesen 7 Bytes angehängt wird.
  • Daten werden in das Sucharray 202c durch den Datengenerator 213 geladen, der in einem Ausführungsbeispiel die geeigneten 8 Bytes an Daten für jede Reihe aus den Quelldaten liefert.
  • In einem Ausführungsbeispiel wird ein 8-Byte-Suchmuster in jedem Suchbefehl präsentiert. Das Suchmuster ist mit dem Sucharray 202c derart ausgerichtet, dass jeder der 8 Spalten in dem Array ein einzigartiges Byte präsentiert wird. Dies ist in 2B gezeigt. Unter Bezugnahme auf 2B werden die Zustands-Bytes 1 bis 8 in dem Sucharray für jede der Reihen 1 bis 2K gespeichert. Für jedes Byte, das als ein Element des Sucharray von 2K Reihen und 8 Spalten gespeichert ist, wie in 2B gezeigt ist, existiert eine Signalleitung 310. Zum Beispiel erzeugt das Byte 1 der Reihe 1 die Signalleitung 31011 , das Byte 2 der Reihe 1 erzeugt die Signalleitung 31012 , das Byte 1 der Reihe 2 erzeugt die Signalleitung 31021 , und so weiter. Das Signal für jedes Byte wird während einer Suchoperation aktiviert, wenn das gespeicherte Byte mit dem Byte des Suchmusters übereinstimmt, das der gleichen Spalte präsentiert wird, zu der das Element gehört. In diesem Ausführungsbeispiel, bei dem jede Reihe 8 Bytes enthält, werden 8 Signalleitungen, zum Beispiel 31011 bis 31018 , verwendet, um jede der Byte-Ebenen-Übereinstimmungen in der Reihe anzugeben. Die Byte-Ebenen-Übereinstimmungen für jede Reihe werden zusammen mit den Masken von den Masken 102c in den Reihen-&Masken-Resolver-Blöcken 311 einer UND-Funktion unterzogen. Das Ergebnis der UND-Funktion ist eine Angabe, ob eine Übereinstimmung in jeder Reihe aufgetreten ist. In diesem Ausführungsbeispiel, bei dem das Sucharray 2K Reihen umfasst, werden 2K Übereinstimmungsleitungen zu dem Sortierer ausgegeben. Die Schaltungsstruktur von zwei der Byte-Elemente 312 in diesem Array ist in 4 gezeigt. Die Schaltung arbeitet in einer Art und Weise, die eine vollständig parallele Suchoperation bereitstellt, indem eine gleichzeitige Suche innerhalb aller ihrer Reihen in einer Taktperiode durchgeführt wird. Wenn eine Suchoperation durchgeführt wird, geben alle Byte-Ebenen-Übereinstimmungsleitungen 401 in einer Spalte gleichzeitig Übereinstimmungen mit ihren jeweiligen gespeicherten Bytes an. Eine Suchoperation wird in allen Spalten gleichzeitig aufgerufen, wodurch es dem abgedeckten Reduktionsblock in jeder Rei he erlaubt wird, eine Reihen-Ebenen-Übereinstimmung anzugeben. Auf diese Weise wird in diesem Ausführungsbeispiel des Sucharray in einem einzigen Takt eine parallele Suche von allen 2K Strings in dem Suchregister, die aus 8 zusammenhängenden Bytes bestehen, durchgeführt, und die Ergebnisse werden in den 2K Übereinstimmungsleitungen angegeben.
  • 3A ist ein Blockdiagramm eines Ausführungsbeispiels eines Sortierers. Unter Bezugnahme auf 3A sind die Übereinstimmungsleitungen 310 von dem Sucharray mit einer Bereichsabdeckungs- und -auswahleinheit 301 gekoppelt und finden in diese Eingang. In einem Ausführungsbeispiel umfassen Übereinstimmungsleitungen 310 die Übereinstimmung 1 bis zu der Übereinstimmung 2048. Die Bereichsabdeckungs- und -auswahleinheit 301 empfängt ein Paar von Offsets, die einen Bereich von Reihen der M Übereinstimmungsleitungen aus dem Sucharray spezifizieren, um eine weitere Verarbeitung durchzuführen. In einem Ausführungsbeispiel sind die Offsets 11-Bit-Zahlen, die in 2K Maskenbits umgewandelt werden, die zusammen mit den Übereinstimmungsleitungen einer UND-Funktion unterzogen werden können, um einen Ausgang bereitzustellen. Ein solches Beispiel ist in 3B gezeigt, in der der Offset für den Startbereich in ein oder mehrere Nullen umgewandelt wird, wobei die restlichen Bits ein Eins-Bit sind, während der Offset für das Ende des Bereichs komplett in Nullen beginnend von der Unterseite bis hoch zu einem bestimmten Punkt, nachdem alle Bits Einsen sein werden, umgewandelt wird. Indem diese Register mit den Übereinstimmungsleitungen einer UND-Funktion unterzogen werden, werden die Übereinstimmungen, die in dem spezifizierten Start- und Endebereich auftreten, ohne Änderung ausgegeben, während andere Übereinstimmungsleitungen außerhalb des Bereichs abgedeckt werden (z. B. auf eine vorbestimmte Logik-Ebene geändert werden).
  • Der Ausgang der Bereichsabdeckungs- und -auswahleinheit 301 ist mit den Eingängen der Indexauflösungsfunktionen-Einheit 302 gekoppelt. In einem Ausführungsbeispiel umfasst die Indexauflösungsfunktionen-Einheit 302 eine oder mehrere Funktionen, die bei den Ausgängen der Bereichsabdeckungs- und -auswahleinheit 301 durchgeführt werden. Zum Beispiel umfasst der Sortierer, wie gezeigt ist, einen aufsteigenden Prioritätscodierer 302A, um das erste Auftreten (im Hinblick auf die Oberseite des Sucharray) einer Übereinstimmung zwischen dem spezifizierten Muster von N Bytes und den Inhaltsdaten in dem Sucharray zu finden, wie dies von den nicht abgedeckten Übereinstimmungsleitungen angegeben ist. Ein absteigender Prioritätscodierer 302B kann ebenfalls enthalten sein, um das letzte Auftreten (im Hinblick auf die Oberseite des Sucharray) einer Übereinstimmung zwischen dem N-Byte-Muster und den Inhaltsdaten in dem Sucharray zu finden, wie dies von den nicht abgedeckten Übereinstimmungsleitungen angegeben ist. Ein Bestands- bzw. Populationszähler 302C gibt die Anzahl an Übereinstimmungen an, die zwischen dem N-Byte-Muster und den Daten in dem Sucharray auftreten, wie dies von den nicht abgedeckten Übereinstimmungsleitungen angezeigt ist. Es können auch andere Indexselektoren verwendet werden.
  • Die Ausgänge der Indexauflösungsfunktionen-Einheit 302 werden in eine Indexkombinierungs- und -auswahleinheit 303 eingegeben, die auch gekoppelt ist, um den Opcode 102a zu empfangen. Der Opcode 102a ist in dem Suchbefehl spezifiziert und wählt einen der Indexauflösungsfunktionsausgänge als den Ausgang des Sortierers aus. Die Indexkombinierungs- und -auswahleinheit 303 erzeigt einen Übereinstimmungsindikator 321, der angibt, dass es eine Übereinstimmung gegeben hat, zusammen mit einem Index 322, der die Stelle innerhalb des Sucharray der Daten angibt, die entweder das erste Auftreten einer Übereinstimmung ist, wenn der Ausgang des aufsteigenden Prioritätscodierers 302A ausgewählt ist, das letzte Auftreten einer Übereinstimmung in dem Falle ist, dass der Ausgang des absteigenden Prioritätscodierers 302B ausgewählt ist, die Anzahl an Übereinstimmungen in den nicht abgedeckten Übereinstimmungsleitungen angibt, wenn der Bestandszähler 302C ausgewählt ist, etc.. Nach der Berechnung der Ausgänge, nämlich des Übereinstimmungsindikators 321 und des Index 322, können diese verwendet werden, um die Ausführung eines oder mehrerer Suchbefehle, die noch folgen, zu steuern, indem die Ausgänge in Universalregistern gespeichert werden und eine indirekte Spezifikation in nachfolgenden Befehlen verwendet wird, indem zu einer spezifizierten Adresse in dem Befehlsspeicher (z. B. dem Befehlsspeicher 104) in Abhängigkeit von dem Übereinstimmungsindikator 321 gesprungen wird, oder durch ähnliche Techniken.
  • 5 veranschaulicht die Mikroarchitektur eines Regelprozessors, der eine Suchvorrichtung umfasst. Unter Bezugnahme auf 5 werden die Speicherbefehle in einem Befehlsspeicher 501 gespeichert. Die Befehle werden von der Ablaufkontrolle unter Verwendung eines Befehlsabruf-Zeigerregisters 502 ausgewählt. Die Befehle werden durch einen Decodierer 503 decodiert. Die einzelnen Untermengen jedes Befehls werden entweder aus dem Befehl herausgenommen oder aus der Universalregisterdatei 504 abgerufen. Dann werden die verschiedenen Untermengen jedes Befehls zu den separaten Einheiten, nämlich dem Sucharray 505, dem Sortierer 506, der eine Sortiereinheit 506a gefolgt von einer Charakterisierungseinheit 506b umfasst, einer herkömmlichen arithmetischen logischen Einheit (ALU; arithmetic logic unit) 507, wie diese oben dargelegt sind, geliefert. In einem Ausführungsbeispiel folgt die Verarbeitung jedes Befehls einer 4-Stufen-Pipeline, die aus (i) einer Befehlsabrufstufe 508, (ii) einer Befehlsassemblierungsstufe 509, (iii) einer Suche-/Ausführungsstufe 510 und (iv) einer Sortier- und Ergebnisbereitstellungs- und/oder Sprungstufe 511 besteht, wie diese vorher beschrieben wurden.
  • In einem Ausführungsbeispiel umfasst das Regel maschinenbefehlsformat ein 128-Bit-Regelformat. Die 128 Bits der Regel werden in Untermengen aufgeteilt, die verschiedene Felder enthalten, um Betriebsanweisungen an verschiedene Hardware-Maschinen in dem Regelprozessor auszugeben. In einem Ausführungsbeispiel enthält die Suchuntermenge ein Suchen-/Sortieren-Opcode-Feld (5 Bits), ein Musterfeld (in einem Ausführungsbeispiel beträgt dieses 65 Bits, die einen 8-Byte-Wert oder einen Zeiger auf eine Stelle, die einen 8-Byte-Wert bereitstellt, zusammen mit einem zusätzlichen Bit enthalten, das spezifiziert, ob der 8-Byte-Wert in dem Befehl ein Zeiger ist oder nicht), ein Byte-Ebenen-Maskenfeld (in einem Ausführungsbeispiel 8 Bits), ein Startstellen-Adressenfeld (in einem Ausführungsbeispiel beträgt dieses Feld 12 Bits, die einen 11-Bit-Wert oder einen Zeiger auf ein Register umfassen, das einen 11-Bit-Wert bereitstellt, und ein zusätzliches Bit enthalten, um anzugeben, ob die Startstellenadresse den 11-Bit-Wert oder einen solchen Zeiger enthält), ein Endestellen-Adressenfeld (in einem Ausführungsbeispiel enthält dieses Feld 12 Bits, die einen 11-Bit-Wert oder einen Zeiger auf ein Register, das einen 11-Bit-Wert bereitstellt, mit einem zusätzlichen Bit umfassen, um zu spezifizieren, ob die Endestellen-Adresseninformation ein Zeiger ist oder nicht), ein Ergebnisregisterfeld, das spezifiziert, wohin die Ergebnisse der Suchoperationen zurückgesendet werden sollen (in einem Ausführungsbeispiel umfasst dieses Feld 6 Bits) und ein Sprungadressenfeld (in einem Ausführungsbeispiel umfasst dieses Feld 20 Bits, die einen 19-Bit-Wert oder einen Zeiger auf ein Register, das ei nen 19-Bit-Wert bereitstellt, mit einem zusätzlichen Bit umfassen, um zu spezifizieren, ob die Sprungadresseninformation ein Zeiger ist oder nicht).
  • 6 veranschaulicht einen beispielhaften Pseudocode 601 eines Regelsatzes, der von einem Ausführungsbeispiel des Regelprozessors, das oben beschrieben ist, verarbeitet werden kann. Die Regel weist mehrere Muster mit einigen spezifischen Einschränkungen bezüglich den Stellen auf, an denen solche Muster in einer Nachricht oder in einem Dokument oder Paket eventuell existieren können. Die Beschränkungen werden in dem Pseudocode durch die Verwendung von Schlüsselwörtern wie VOR (BEFORE) und UND (AND) ausgedrückt. Für die Zwecke der Einfachheit werden die Muster in 601 in diesem Beispiel ohne irgendwelche zusätzlichen Begrenzungszeichen zwischen Strings verwendet, wie dies in der Praxis der Fall sein kann. Ebenfalls in 6 ist eine Liste 602 des entsprechenden Mikrocodes für den beispielhaften Regelprozessor gezeigt. Das Format der Befehle ist derart, wie es vorher beschrieben worden ist. Wenn man den ersten Befehl 603 für die Veranschaulichung verwendet, so besteht er aus dem FIND_FIRST_FORWARD-Opcode, bei dem alle 8 Bytes des Musters "cp/bin/" relevant für die Suche sind (durch die Verwendung von 0 × FF als Maske), wobei die Start- und Ende-Offsets als konstante Werte (durch die Verwendung von Indirektes-Vorgehen-Flags) ausgedrückt sind, um den Start und das Ende der suchbaren Payload zu kennzeichnen, die in den Suchregistern gehalten wird. Aus Gründen der Kürze ist die Ableitung der konstanten Zahlen hier ausgelassen worden. Das Ergebnis dieses Opcodes ist so gezeigt, dass es in das Universalregister A geladen wird, und schließlich wird die Sprungadresse als der konstante Wert von 11 spezifiziert, welches der Befehl ist, der auf das Mikrocode-Stück folgen würde, das in 6 gezeigt ist. Dieser Befehl wird bewirken, dass die Suche-Ausführungs-Hardware nach dem Auftreten von "cp/bin/" in den Byte-Stellen 0 × 03D und 0 × 0800 der Suchregister 202a suchen wird. Alle Reihen in dem Sucharray 202c, die damit übereinstimmen, werden ihre jeweiligen Übereinstimmungsleitungen 310 am Ende der Suche-Ausführungsstufe 510 der Mikroarchitektur-Pipeline aktivieren. In der Sortier- und Sprungstufe 511 wandelt der Sortierer 202b 0 x 03D und 0 x 0800 in Bitvektoren um, wie dies in 3B veranschaulicht ist. Die Bitvektoren werden verwendet, um die Bereichsabdeckungs- und -auswahlfunktion 301 durchzuführen, um alle Übereinstimmungen, die außerhalb des Stellenfensters von 0 × 03D bis 0 × 0800 starten, zu negieren. Aus den restlichen Übereinstimmun gen, die sich nun innerhalb des Stellenfensters befinden, wählt der Opcode dieses Befehls den aufsteigenden Prioritätscodierer 302A aus den Indexauflösungsfunktionen 302 aus, um die Übereinstimmung mit der kleinsten Zahl in eine binäre codierte 11-Bit-Stelle umzuwandeln. Wenn eine solche Übereinstimmung gefunden wurde, würde die Übereinstimmung 321 aktiviert und der Index 322 würde die 11-Bit-Stelle enthalten. Wenn die Übereinstimmung 321 nicht aktiviert werden sollte, weil keine Übereinstimmung gefunden wurde, würde die Befehls-Ablaufsteuerung 105 die Sprungadresse 0 × B in den Befehlszeiger 106 laden. Der Index 322 würde durch die Steuerungsschaltung der Registerdatei 504 in das Universalregister A geladen. Das Laden in das Universalregister A und das Laden des Befehlszeigers, falls zutreffend, wird an dem Ende der Sortier- und Sprungausführungsstufe 511 vollendet sein. Der zweite Befehl 604, FIND_FORWARD_ANCHORED (FINDE_VORWÄRTS_EINGEBUNDEN), veranschaulicht weiter das reichhaltige Vokabular der beispielhaften Regelmaschine. Er ist eine Variante von FIND_FIRST_FORWARD darin, dass die Übereinstimmung an dem Start_Offset beginnen muß, damit die Suche erfolgreich ist.
  • 7 veranschaulicht das Ausführen des Mikrocodes, der in 6 gezeigt ist, in der Mikroarchitektur des beispielhaften Regelprozessors, der in 5 gezeigt ist. Die Tabelle 701 zeigt die Ausführung quer durch mehrere Taktzyklen. Zu Zwecken der Einfachheit wird angenommen, dass alle Suchbefehle darin erfolgreich sind, die spezifizierten Muster in den Suchregistern zu finden. Die Ausführung schreitet in einer Pipeline-Weise durch die 4 Stufen voran, die in 5 beschrieben sind. Durch die Verwendung der indirekten Spezifikation kann die Ausführung eines Suchbefehls die Offsets verwenden, die in dem unmittelbar vorausgehenden Befehl berechnet wurden. Deshalb werden die Befehle 1 bis 8 in aufeinanderfolgenden Zyklen ausgeführt. Der Befehl 8 ist ein Sprung, der von dem Ergebnis des Vergleichs der Inhalte des Universalregisters A und des Universalregisters B anhängig ist, die jeweils im Taktzyklus 8 und Taktzyklus 9 berechnet werden. Der Sprung wird im Taktzyklus 11 ausgeführt, und die Befehlsausführung ist im Taktzyklus 14 vollendet. Auf diese Weise wird der komplexe Musterabstimmungsausdruck, der unter Verwendung des Pseudocodes 601 beschrieben ist, in nur 14 Taktzyklen ausgeführt, wobei das reichhaltige Befehlsvokabular des beispielhaften Regelprozessors verwendet wird. Dieses Beispiel veranschaulicht die Fähigkeit und die Effizienz des beispielhaften Regelprozessors bei der Ausführung von Funktionen, die die dynamische und kontextabhängige Suche und Analyse von Dokumenten, Nachrichten oder Paketen umfassen.
  • Während viele Änderungen und Modifikationen der vorliegenden Erfindung einem Durchschnittsfachmann zweifellos nach dem Lesen der obigen Beschreibung offensichtlich werden, ist es selbstverständlich, dass jedes spezielle Ausführungsbeispiel, das zur Veranschaulichung gezeigt und beschrieben wurde, in keinster Weise als beschränkend betrachtet werden soll. Deshalb sind Bezugnahmen auf Einzelheiten verschiedener Ausführungsbeispiele nicht als Beschränkung des Schutzumfangs der Ansprüche gedacht, die in sich selber nur diejenigen Merkmale rezitieren, die als essentiell für die Erfindung betrachtet werden.

Claims (40)

  1. Regelprozessor zum Durchführen von Suchen, wobei der Prozessor aufweist: eine Vielzahl von Eingangs-Payload-Suchregistern (101, 202a); eine Suche-Ausführungsmaschine (202), die mit der Vielzahl von Suchregistern gekoppelt ist, um eine oder mehrere Suchen nach Inhalt in den Suchregistern über parallele Musterabstimmung im Ansprechen auf das Ausführen eines oder mehrerer Suchbefehle (103) durchzuführen, die die eine oder die mehreren Mustersuchen spezifizieren und ein oder mehrere Muster dem Inhalt in den Suchregistern präsentieren, dadurch gekennzeichnet, dass wenigstens ein Suchbefehl (201) in dem einen oder den mehreren Suchbefehlen Opcode-Informationen (201a) enthält, um einen Suchoperationstyp anzugeben, Musterinformationen (201b), um ein zu lokalisierendes Muster zu spezifizieren, eine Maske (201c), um einen Teil der Musterinformationen zu spezifizieren, der das Muster enthält, und ein Paar Offsets (201d, 201e), um Start- und Endegrenzen von Stellen in den Suchregistern für die Suche für den wenigstens einen Suchbefehl zu spezifizieren.
  2. Regelprozessor nach Anspruch 1, wobei Felder des einen oder der mehreren Suchbefehle mit der Vielzahl von Suchregistern (101, 202a) und der Suche-Ausführungsmaschine (202) gekoppelt sind.
  3. Regelprozessor nach Anspruch 1 oder 2, wobei der wenigstens eine der Befehle (201) eine Fenster-Finde-Erste-Vorwärts-Suche (windowed-find-first-forward search) spezifiziert.
  4. Regelprozessor nach einem der vorhergehenden Ansprüche, wobei die Suche-Ausführungsmaschine (202) wenigstens einen Ergebnisausgang erzeugt, der Erfolg bei der Suche des Inhalts in den Suchregistern (101, 202a) angibt.
  5. Regelprozessor nach einem der vorhergehenden Ansprüche, wobei der wenigstens eine Ergebnisausgang eine Angabe umfasst, ob zwischen einem in wenigstens einem der Befehle (103) spezifizierten Muster und dem Inhalt in der Vielzahl von Suchregistern (101, 202a) eine Übereinstimmung aufgetreten ist.
  6. Regelprozessor nach einem der vorhergehenden Ansprüche, wobei der wenigstens eine Ergebnisausgang eine Angabe über eine Stelle in der Vielzahl von Suchregistern (101, 202a) umfasst, an der eine Übereinstimmung zwischen einem in wenigstens einem der Befehle (103) spezifizierten Muster und dem Inhalt in den Suchregistern (101, 202a) aufgetreten ist.
  7. Regelprozessor nach einem der vorhergehenden Ansprüche, wobei wenigstens ein Suchbefehl (201) ein Feld aufweist, das einen Parameter spezifiziert, der zu verwenden ist, um die Suche zu steuern, oder einen Zeiger in einen Speicher, der den Parameter speichert, um die Suche zu steuern.
  8. Regelprozessor nach Anspruch 7, wobei der Zeiger auf ein Universalregister zeigt.
  9. Regelprozessor nach Anspruch 7, wobei der Wert, auf den der Zeiger zeigt, das Ergebnis einer von der Suche-Ausführungsmaschine (202) vorher durchgeführten Suche ist.
  10. Regelprozessor nach Anspruch 7, wobei der Wert einem einer Gruppe umfassend eine Maske, einen Suchfensterparameter und einen Steuerparameter entspricht.
  11. Regelprozessor nach einem der vorhergehenden Ansprüche, wobei die Vielzahl von Eingangs-Payload-Suchregistern (101, 202a9 eine Registerdatei (504) umfassen.
  12. Regelprozessor nach Anspruch 11, wobei die Registerdatei (504) jeweils 2K Einträge eines Bytes aufweist.
  13. Regelprozessor nach Anspruch 11, wobei die Registerdatei (504) eine Vielzahl von durch eine 11-Bit-Registeradresse adressierten Einträgen aufweist.
  14. Regelprozessor nach einem der vorhergehenden Ansprüche, der des Weiteren einen Speicher (501) aufweist zum Speichern eines oder mehrerer Suchbefehle (103), die auf Daten in den Suchregistern (101, 202a) anzuwenden sind.
  15. Regelprozessor nach einem der vorhergehenden Ansprüche, wobei die Suchbefehle die Suche-Ausführungsmaschine (202) dazu veranlassen, Suchen nach willkürlich langen Mustern in dem Inhalt in den Suchregistern (101, 202a) durchzuführen.
  16. Regelprozessor nach einem der vorhergehenden Ansprüche, der des Weiteren eine Befehls-Ablaufsteuerung (105) aufweist zum Anlegen eines oder mehrerer Suchbefehle (103) an die Suche-Ausführungsmaschine (202).
  17. Regelprozessor nach Anspruch 16, wobei der eine oder die mehreren Suchbefehle (103) wenigstens einen Muster-, Bereichssteuerungs- und Programmsteuerungsfluss spezifizieren.
  18. Regelprozessor nach Anspruch 16, wobei der eine oder die mehreren Suchbefehle (103) einen Zeiger aufweisen, um eine Speicherstelle zu spezifizieren, die Informationen speichert, die wenigstens einen Muster-, Bereichssteuerungs- und Programmsteuerungsfluss spezifizieren.
  19. Regelprozessor nach einem der vorhergehenden Ansprüche, wobei die Suche-Ausführungsmaschine (202) eine erste Ausgangs-Anzeige aufweist, die den Sucherfolg der Ausführung eines Suchbefehls (103, 201) angibt, und eine zweite Ausgangs-Anzeige, die eine Stelle in den Suchregistern (101, 202a) eines von dem einen Suchbefehl spezifizierten Musters angibt.
  20. Regelprozessor nach einem der vorhergehenden Ansprüche, wobei die Suche-Ausführungsmaschine (202) aufweist: ein Sucharray (202c, 505), das an die Vielzahl von Eingangs-Payload-Suchregistern (101, 202a) gekoppelt ist, wobei der Inhalt in der Vielzahl von Suchregistern repliziert und in dem Sucharray gespeichert wird; und einen Sortierer (506), der an das Sucharray gekoppelt ist, um die eine oder die mehreren Operationen im Ansprechen auf von einer oder mehreren Suchbefehlen spezifizierten Informationen durchzuführen.
  21. Regelprozessor nach Anspruch 20, wobei das Sucharray M Übereinstimmungsleitungen (310) aufweist, wobei jede der M Übereinstimmungsleitungen mit einer in dem Sucharray (202c, 505) gespeicherten Datengruppe assoziiert ist und angibt, ob ein von dem einen oder den mehreren Suchbefehlen (103) spezifiziertes Muster mit Daten in der in dem Sucharray (202c, 505) gespeicherten assoziierten Datengruppe übereinstimmt.
  22. Regelprozessor nach Anspruch 21, wobei der Sortierer (506) so gekoppelt ist, dass er die M Übereinstimmungsleitungen empfängt, um die eine oder die mehreren Operationen durchzuführen, die mit durch die M Übereinstimmungsleitungen angegebenen Übereinstimmungen assoziiert sind.
  23. Regelprozessor nach Anspruch 22, wobei die Informationen einen Bereich spezifizieren und der Sortierer (506) die M Übereinstimmungsleitungen nur in dem spezifizierten Bereich sortiert.
  24. Regelprozessor nach Anspruch 23, wobei der Bereich in dem Suchbefehl (103) spezifiziert ist.
  25. Regelprozessor nach Anspruch 23, wobei die Informationen eine Stelle in einem Speicher (501) spezifizieren, an der der Bereich gespeichert ist.
  26. Regelprozessor nach Anspruch 25, wobei der Speicher (501) eine Registerdatei (504) ist.
  27. Regelprozessor nach Anspruch 20, wobei das Sucharray (505) einen ersten Eingang aufweist, um Bits, die das Muster enthalten, zu empfangen, und einen zweiten Eingang für eine Maske (201c), wobei das Sucharray (505) Null oder mehr Bits der dem Muster entsprechenden Bits basierend auf der Maske abdeckt.
  28. Regelprozessor nach Anspruch 27, wobei die Bits, die das Muster enthalten, N Bytes aufweisen und die Maske N Bits aufweist, wobei jedes der N Bits mit einem anderen der N Bytes assoziiert ist, wobei das Sucharray eines der N Bytes des Musters abdeckt, wenn sich sein assoziiertes Bit der N-Bit Maske in einem ersten Zustand befindet.
  29. Regelprozessor nach Anspruch 20, wobei der Sortierer (506) einen ersten Ausgang aufweist, der angibt, ob eine oder mehrere der Übereinstimmungsleitungen übereinstimmen, und einen zweiten Ausgang, der ein Ergebnis der Durchführung der einen oder mehreren Operationen angibt.
  30. Regelprozessor nach Anspruch 29, wobei der zweite Ausgang eine Stelle in dem Sucharray (505) eines ersten Auftretens einer Übereinstimmung zwischen dem Muster und in dem Sucharray gespeicherten Daten in Bezug auf eine Seite des Sucharrays angibt.
  31. Regelprozessor nach Anspruch 28, wobei der zweite Ausgang eine Anzahl von Übereinstimmungen in einem Bereich der M Übereinstimmungsleitungen (310) angibt.
  32. Regelprozessor nach Anspruch 20, wobei der Sortierer (506) im Ansprechen auf eine Bereichsmaske arbeitet, um einen oder mehrere Ausgänge des Sucharrays (202c) für eine Suchoperation auszublenden.
  33. Regelprozessor nach Anspruch 20, wobei der Sortierer (506) des Weiteren aufweist: einen Prioritätscodierer (302A, B), um eine Stelle in dem Sucharray (505) zu identifizieren, die den M Übereinstimmungsleitungen (310) entspricht, die einem ersten Auftreten einer Übereinstimmung zwischen dem Muster und in dem Sucharray (505) gespeicherten Daten in Bezug auf eine Seite des Sucharrays entsprechen.
  34. Regelprozessor nach Anspruch 33, wobei der Prioritätscodierer ein aufsteigender Prioritätscodierer (302A) ist und die eine Seite des Sucharrays (505) die Oberseite des Sucharrays ist.
  35. Regelprozessor nach Anspruch 33, wobei der Prioritätscodierer ein absteigender Prioritätscodierer (302B) ist und die eine Seite des Sucharrays (505) die Unterseite des Sucharrays ist.
  36. Regelprozessor nach Anspruch 20, wobei der Sortierer (506) des Weiteren einen Zähler aufweist, um die Anzahl von Übereinstimmungen in dem Sucharray zu bestimmen.
  37. Regelprozessor nach Anspruch 20, wobei der Sortierer (506) des Weiteren aufweist: einen aufsteigenden Prioritätscodierer (302A), um eine Stelle in dem Sucharray (505) zu identifizieren, die den M Übereinstimmungsleitungen (310) entspricht, die einem ersten Auftreten einer Übereinstimmung zwischen dem Muster und in dem Sucharray gespeicherten Daten in Bezug auf die Oberseite des Sucharrays entsprechen; einen absteigenden Prioritätscodierer (302B), um eine Stelle in dem Sucharray (202c) zu identifizieren, die den M Übereinstimmungsleitungen (310) entspricht, die einem ersten Auftreten einer Übereinstimmung zwischen dem Muster und in dem Sucharray gespeicherten Daten in Bezug auf die Unterseite des Sucharrays entsprechen; einen Zähler, um die Anzahl von Übereinstimmungen in einem Bereich der M Übereinstimmungsleitungen zu bestimmen; und eine Auswahlvorrichtung, die an den aufsteigenden Prioritätscodierer, den absteigenden Prioritätscodierer und den Zähler gekoppelt ist und einen ersten Ausgang aufweist, wobei die Auswahlvorrichtung so betreibbar ist, dass sie einen Ausgang des aufsteigenden Prioritätscodierers, des absteigenden Prioritätscodierers und des Zählers als ersten Ausgang des Sortierers auswählt.
  38. Regelprozessor nach Anspruch 37, wobei die Auswahlvorrichtung einen zweiten Ausgang aufweist, der angibt, ob zwischen dem Muster und Daten in dem Sucharray eine Übereinstimmung aufgetreten ist.
  39. Regelprozessor nach Anspruch 20, wobei das Sucharray (202c) aufweist: eine Vielzahl von Reihen von Speicherstellen, um Datenbytes zu speichern; eine Vielzahl von Reihen von Byte-Komparatoren, um Bytes der in der Vielzahl von Reihen von Speicherstellen gespeicherten Daten mit Bytes des Musters zu vergleichen, wobei jeder Komparator der Vielzahl von Reihen von Byte-Komparatoren einen Ausgang aufweist; eine Vielzahl abgedeckter Reduktionseinheiten, wobei jede der Vielzahl abgedeckter Reduktionseinheiten so gekoppelt ist, dass sie Byte-Masken und Komparatorausgänge von Komparatoren in einer Reihe von Byte-Komparatoren empfängt, wobei die Vielzahl abgedeckter Reduktionseinheiten einzelne Komparatorausgänge basierend auf den Byte-Masken abdecken und nicht abgedeckte Komparator-Ausgänge für jede Reihe in einer einer Vielzahl von Maskenleitungen kombinieren.
  40. Regelprozessor nach einem der vorhergehenden Ansprüche, der des Weiteren aufweist: einen Regelspeicher zum Speichern einer Vielzahl von Regeln; eine Regel-Ablaufsteuerung, die an den Regelspeicher gekoppelt ist, um eine oder mehrere Regeln zur Ausführung auszuwählen; und einen Decoder (503), um die eine oder die mehreren Regeln, die von der Regel-Ablaufsteuerung ausgewählt worden sind, zu decodieren, wobei der Decoder an das Sucharray (202c) und den Sortierer (506) gekoppelt ist, um dem Sucharray und dem Sortierer decodierte Informationen zu liefern.
DE60318722T 2002-08-28 2003-08-28 Eine programmierbare regelverarbeitungsvorrichtung für hochgeschwindigkeits-kontextsuchen und -erkennung von mustern in daten Expired - Fee Related DE60318722T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US40683402P 2002-08-28 2002-08-28
US406834P 2002-08-28
US10/650,363 US7451143B2 (en) 2002-08-28 2003-08-27 Programmable rule processing apparatus for conducting high speed contextual searches and characterizations of patterns in data
US650363 2003-08-27
PCT/US2003/027518 WO2004021170A2 (en) 2002-08-28 2003-08-28 Programmable rule processing apparatus for conducting high speed contextual searches & characterzations of patterns in data

Publications (2)

Publication Number Publication Date
DE60318722D1 DE60318722D1 (de) 2008-03-06
DE60318722T2 true DE60318722T2 (de) 2009-01-15

Family

ID=31997681

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60318722T Expired - Fee Related DE60318722T2 (de) 2002-08-28 2003-08-28 Eine programmierbare regelverarbeitungsvorrichtung für hochgeschwindigkeits-kontextsuchen und -erkennung von mustern in daten

Country Status (8)

Country Link
US (1) US7451143B2 (de)
EP (1) EP1535197B1 (de)
JP (1) JP4555088B2 (de)
KR (1) KR101012623B1 (de)
AT (1) ATE384299T1 (de)
AU (1) AU2003272259A1 (de)
DE (1) DE60318722T2 (de)
WO (1) WO2004021170A2 (de)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US6986110B1 (en) * 2003-01-02 2006-01-10 Hewlett-Packard Development Company, L.P. Automated method and system for backtracing of instruction parameters from specified instruction in test cases
US7546234B1 (en) 2003-01-08 2009-06-09 Xambala, Inc. Semantic processing engine
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7643826B2 (en) * 2004-01-07 2010-01-05 Hewlett-Packard Development Company, L.P. Mobile care engine system
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US20060198174A1 (en) * 2005-02-21 2006-09-07 Yuji Sato Contents Providing System, Output Control Device, and Output Control Program
US7710988B1 (en) 2005-03-11 2010-05-04 Xambala Corporation Method and system for non-deterministic finite automaton filtering
US20060215291A1 (en) * 2005-03-24 2006-09-28 Jaquette Glen A Data string searching
JP4581962B2 (ja) * 2005-10-27 2010-11-17 株式会社日立製作所 情報検索システムとインデクス管理方法およびプログラム
EP2025095A2 (de) 2006-06-08 2009-02-18 Hewlett-Packard Development Company, L.P. Geräteverwaltung in einem netzwerk
WO2008014454A2 (en) 2006-07-27 2008-01-31 Hewlett-Packard Development Company, L.P. User experience and dependency management in a mobile device
TW200821913A (en) * 2006-11-15 2008-05-16 Univ Nat Chiao Tung String matching system by using bloom filter to achieve sub-linear computation time and method thereof
US7743231B2 (en) * 2007-02-27 2010-06-22 International Business Machines Corporation Fast sparse list walker
US7861157B1 (en) * 2007-03-26 2010-12-28 Lsi Corporation System and method of processing streaming XML data
US20090254694A1 (en) * 2008-04-02 2009-10-08 Zikbit Ltd. Memory device with integrated parallel processing
US20100057737A1 (en) 2008-08-29 2010-03-04 Oracle International Corporation Detection of non-occurrences of events using pattern matching
KR101276796B1 (ko) * 2008-12-03 2013-07-30 한국전자통신연구원 패턴 매칭 장치 및 방법
US8145859B2 (en) * 2009-03-02 2012-03-27 Oracle International Corporation Method and system for spilling from a queue to a persistent store
US8387076B2 (en) 2009-07-21 2013-02-26 Oracle International Corporation Standardized database connectivity support for an event processing server
US8321450B2 (en) 2009-07-21 2012-11-27 Oracle International Corporation Standardized database connectivity support for an event processing server in an embedded context
US8527458B2 (en) 2009-08-03 2013-09-03 Oracle International Corporation Logging framework for a data stream processing server
US8386466B2 (en) 2009-08-03 2013-02-26 Oracle International Corporation Log visualization tool for a data stream processing server
US9430494B2 (en) 2009-12-28 2016-08-30 Oracle International Corporation Spatial data cartridge for event processing systems
US9305057B2 (en) 2009-12-28 2016-04-05 Oracle International Corporation Extensible indexing framework using data cartridges
US8959106B2 (en) 2009-12-28 2015-02-17 Oracle International Corporation Class loading using java data cartridges
JP5728932B2 (ja) * 2010-02-09 2015-06-03 日産自動車株式会社 車両の警報音発生装置
US8713049B2 (en) 2010-09-17 2014-04-29 Oracle International Corporation Support for a parameterized query/view in complex event processing
US9189280B2 (en) 2010-11-18 2015-11-17 Oracle International Corporation Tracking large numbers of moving objects in an event processing system
US9002859B1 (en) 2010-12-17 2015-04-07 Moonshadow Mobile, Inc. Systems and methods for high-speed searching and filtering of large datasets
WO2012097009A2 (en) 2011-01-10 2012-07-19 Ward Roy W Systems and methods for high-speed searching and filtering of large datasets
US8639870B2 (en) 2011-01-14 2014-01-28 Oracle International Corporation String searching within peripheral storage devices
US8990416B2 (en) 2011-05-06 2015-03-24 Oracle International Corporation Support for a new insert stream (ISTREAM) operation in complex event processing (CEP)
US9329975B2 (en) 2011-07-07 2016-05-03 Oracle International Corporation Continuous query language (CQL) debugger in complex event processing (CEP)
US9171054B1 (en) 2012-01-04 2015-10-27 Moonshadow Mobile, Inc. Systems and methods for high-speed searching and filtering of large datasets
US8990204B1 (en) 2012-01-17 2015-03-24 Roy W. Ward Processing and storage of spatial data
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
US11288277B2 (en) 2012-09-28 2022-03-29 Oracle International Corporation Operator sharing for continuous queries over archived relations
US10956422B2 (en) 2012-12-05 2021-03-23 Oracle International Corporation Integrating event processing with map-reduce
US9098587B2 (en) 2013-01-15 2015-08-04 Oracle International Corporation Variable duration non-event pattern matching
US10298444B2 (en) 2013-01-15 2019-05-21 Oracle International Corporation Variable duration windows on continuous data streams
US9047249B2 (en) 2013-02-19 2015-06-02 Oracle International Corporation Handling faults in a continuous event processing (CEP) system
US9390135B2 (en) 2013-02-19 2016-07-12 Oracle International Corporation Executing continuous event processing (CEP) queries in parallel
US9418113B2 (en) 2013-05-30 2016-08-16 Oracle International Corporation Value based windows on relations in continuous data streams
CN104252469B (zh) 2013-06-27 2017-10-20 国际商业机器公司 用于模式匹配的方法、设备和电路
US9934279B2 (en) 2013-12-05 2018-04-03 Oracle International Corporation Pattern matching across multiple input data streams
US9244978B2 (en) 2014-06-11 2016-01-26 Oracle International Corporation Custom partitioning of a data stream
US9712645B2 (en) 2014-06-26 2017-07-18 Oracle International Corporation Embedded event processing
US10120907B2 (en) 2014-09-24 2018-11-06 Oracle International Corporation Scaling event processing using distributed flows and map-reduce operations
US9886486B2 (en) 2014-09-24 2018-02-06 Oracle International Corporation Enriching events with dynamically typed big data for event processing
WO2017018901A1 (en) 2015-07-24 2017-02-02 Oracle International Corporation Visually exploring and analyzing event streams
US10282486B2 (en) * 2015-09-08 2019-05-07 Micron Technology, Inc. Methods and apparatuses for searching data stored in a memory array using a replicated data pattern
WO2017135837A1 (en) 2016-02-01 2017-08-10 Oracle International Corporation Pattern based automated test data generation
WO2017135838A1 (en) 2016-02-01 2017-08-10 Oracle International Corporation Level of detail control for geostreaming
US10521411B2 (en) 2016-08-10 2019-12-31 Moonshadow Mobile, Inc. Systems, methods, and data structures for high-speed searching or filtering of large datasets
US10282436B2 (en) * 2017-01-04 2019-05-07 Samsung Electronics Co., Ltd. Memory apparatus for in-place regular expression search
US11379281B2 (en) * 2020-11-18 2022-07-05 Akamai Technologies, Inc. Detection and optimization of content in the payloads of API messages

Family Cites Families (42)

* Cited by examiner, † Cited by third party
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
US4760523A (en) 1984-06-29 1988-07-26 Trw Inc. Fast search processor
JPS6244829A (ja) * 1985-08-22 1987-02-26 Matsushita Graphic Commun Syst Inc パタ−ン抽出方法
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
US5060143A (en) * 1988-08-10 1991-10-22 Bell Communications Research, Inc. System for string searching including parallel comparison of candidate data block-by-block
US4965472A (en) 1988-08-11 1990-10-23 Cypress Semiconductor Corp. Programmable high speed state machine with sequencing capabilities
US5050075A (en) * 1988-10-04 1991-09-17 Bell Communications Research, Inc. High performance VLSI data filter
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
US5101376A (en) 1989-07-31 1992-03-31 Hitachi, Ltd. Integrated microprocessor with associative memory device
US5163016A (en) 1990-03-06 1992-11-10 At&T Bell Laboratories Analytical development and verification of control-intensive systems
JPH0535570A (ja) * 1990-05-16 1993-02-12 Internatl Business Mach Corp <Ibm> コピーされたデータ・オブジエクトの文脈探索の方法
US5497488A (en) * 1990-06-12 1996-03-05 Hitachi, Ltd. System for parallel string search with a function-directed parallel collation of a first partition of each string followed by matching of second partitions
EP0485690B1 (de) * 1990-11-13 1999-05-26 International Business Machines Corporation Paralleles Assoziativprozessor-System
JP2842712B2 (ja) 1990-11-30 1999-01-06 大同ほくさん株式会社 めつき方法
JPH04315259A (ja) * 1991-04-12 1992-11-06 Nippon Telegr & Teleph Corp <Ntt> 文字列照合処理方式
US5511213A (en) 1992-05-08 1996-04-23 Correa; Nelson Associative memory processor architecture for the efficient execution of parsing algorithms for natural language processing and pattern recognition
JPH06202849A (ja) * 1992-12-28 1994-07-22 Toshiba Corp 情報処理装置
JPH07506207A (ja) 1993-02-23 1995-07-06 ゼロックス コーポレイション 文字認識におけるストリングのカテゴライズ
US5586288A (en) * 1993-09-22 1996-12-17 Hilevel Technology, Inc. Memory interface chip with rapid search capability
US5623680A (en) 1993-12-28 1997-04-22 Lucent Technologies Inc. Finite state machine for process control
US5649149A (en) 1994-08-01 1997-07-15 Cypress Semiconductor Corporation Integrated content addressable memory array with processing logical and a host computer interface
US6070252A (en) 1994-09-30 2000-05-30 Intel Corporation Method and apparatus for interactive built-in-self-testing with user-programmable test patterns
US5905902A (en) 1995-09-28 1999-05-18 Intel Corporation Programmable state machine employing a cache-like arrangement
US5949251A (en) 1997-08-01 1999-09-07 Vlsi Technology, Inc. Register-based programmable post-silicon system to patch and dynamically modify the behavior of synchronous state machines
US6073098A (en) 1997-11-21 2000-06-06 At&T Corporation Method and apparatus for generating deterministic approximate weighted finite-state automata
US5974525A (en) 1997-12-05 1999-10-26 Intel Corporation System for allowing multiple instructions to use the same logical registers by remapping them to separate physical segment registers when the first is being utilized
US6253112B1 (en) 1998-09-17 2001-06-26 Lucent Technologies Inc. Method of and apparatus for constructing a complex control system and the complex control system created thereby
US6380924B1 (en) 1998-10-22 2002-04-30 Young Yee Mouse/keyboard capture recorder (MCR) apparatus and methodology
US6327508B1 (en) 1998-12-10 2001-12-04 Advanced Micro Devices, Inc. Programmable state machine
US6269189B1 (en) * 1998-12-29 2001-07-31 Xerox Corporation Finding selected character strings in text and providing information relating to the selected character strings
US6212625B1 (en) 1999-05-25 2001-04-03 Advanced Micro Devices, Inc. General purpose dynamically programmable state engine for executing finite state machines
JP3700574B2 (ja) * 1999-11-19 2005-09-28 日本電信電話株式会社 検索成功信号先読み式出力データ選択装置
JP4558879B2 (ja) 2000-02-15 2010-10-06 富士通株式会社 テーブルを用いたデータ処理装置および処理システム
WO2002033582A2 (en) * 2000-10-16 2002-04-25 Text Analysis International, Inc. Method for analyzing text and method for builing text analyzers
US6708168B2 (en) 2000-12-29 2004-03-16 Nortel Networks Limited Method and apparatus for searching a data stream for character patterns
US7181386B2 (en) 2001-11-15 2007-02-20 At&T Corp. Systems and methods for generating weighted finite-state automata representing grammars
US20030125931A1 (en) * 2001-12-07 2003-07-03 Shannon Roy Campbell Method for matching strings
US6876559B1 (en) 2002-02-01 2005-04-05 Netlogic Microsystems, Inc. Block-writable content addressable memory device
US6952694B2 (en) 2002-06-13 2005-10-04 Intel Corporation Full regular expression search of network traffic
US7119577B2 (en) 2002-08-28 2006-10-10 Cisco Systems, Inc. Method and apparatus for efficient implementation and evaluation of state machines and programmable finite state automata
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
US7085918B2 (en) 2003-01-09 2006-08-01 Cisco Systems, Inc. Methods and apparatuses for evaluation of regular expressions of arbitrary size

Also Published As

Publication number Publication date
US7451143B2 (en) 2008-11-11
EP1535197A2 (de) 2005-06-01
DE60318722D1 (de) 2008-03-06
WO2004021170A2 (en) 2004-03-11
EP1535197B1 (de) 2008-01-16
WO2004021170A3 (en) 2004-12-09
KR20050050099A (ko) 2005-05-27
US20040059725A1 (en) 2004-03-25
AU2003272259A8 (en) 2004-03-19
AU2003272259A1 (en) 2004-03-19
KR101012623B1 (ko) 2011-02-09
ATE384299T1 (de) 2008-02-15
JP4555088B2 (ja) 2010-09-29
JP2005537592A (ja) 2005-12-08

Similar Documents

Publication Publication Date Title
DE60318722T2 (de) Eine programmierbare regelverarbeitungsvorrichtung für hochgeschwindigkeits-kontextsuchen und -erkennung von mustern in daten
DE3991231C2 (de) Vektorprozessor und Verfahren zum Suchen einer Stichwortzeichenfolge in einer Textzeichenfolge
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
DE60222575T2 (de) Verfahren zur Generierung eines DFA-Automaten, wobei Übergänge zwecks Speichereinsparung in Klassen gruppiert werden
DE102019109847A1 (de) Beschleunigung der matrixmultplikation dünnbesetzter matrizen unter verwendung einer spaltenfaltung und -verdichtung
DE102004030034A1 (de) Anweisungssatzerweiterung mit einem 3-Byte-Escape-Opcode
DE4334294C1 (de) Prozessor für Zeichenketten variabler Länge
DE2421130C2 (de)
DE69820230T2 (de) N-weg verarbeitung von bitketten in einer datenflussarchitektur
DE102022105748A1 (de) Effiziente optimierung für den einsatz und die ausführung neuronaler netze
DE102018212297B4 (de) Verwendung von programmierbaren Switching-Chips als künstliche neuronale Netzwerk Module
DE102018129032A1 (de) Hardwarebeschleuniger für sql-scans
DE112019005382T5 (de) Auslegung und durchführung einer zeichenmustererkennung in einer schaltung auf datenebene
JP2002530747A (ja) 処理回路及び検索プロセッサ回路
US5047951A (en) Inference processor using meta knowledge
DE69819543T2 (de) Verfahren und gerät zur bearbeitung einer anfrage gemäss einer booleanregel
DE2159884A1 (de) Verfahren zur maschinellen Erkennung von Zeichen
JP3073208B2 (ja) データ選出装置
DE19746393A1 (de) Dynamisches Mustererkennungssystem
DE112016007194T5 (de) Verfahren zum Erzeugen eines Zeichenkettenwörterbuchs, Verfahren zum Suchen eines Zeichenkettenwörterbuchs und ein System zum Verarbeiten eines Zeichenkettenwörterbuchs
DE202023107143U1 (de) System zur Verbesserung der ausgewogenen iterativen Reduktion und Clusterbildung unter Verwendung von Hierarchien (BIRCH) Clustering
DE202022100124U1 (de) Ein paralleler Webverzeichniskonstruktor (PWDC) zur automatischen Erstellung von Webverzeichnissen
DE112021006877T5 (de) System mit mehreren stapeln in einem prozessor ohne effektiven adressgenerator
Pottosin Optimal state assignment of synchronous parallel automata
EP3531299A1 (de) Computerimplementiertes verfahren zum abfragen eines suchraums

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M

8339 Ceased/non-payment of the annual fee