DE3650360T2 - Schneller Suchprozessor. - Google Patents
Schneller Suchprozessor.Info
- Publication number
- DE3650360T2 DE3650360T2 DE3650360T DE3650360T DE3650360T2 DE 3650360 T2 DE3650360 T2 DE 3650360T2 DE 3650360 T DE3650360 T DE 3650360T DE 3650360 T DE3650360 T DE 3650360T DE 3650360 T2 DE3650360 T2 DE 3650360T2
- Authority
- DE
- Germany
- Prior art keywords
- search
- match
- cell
- cells
- line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
- Die Erfindung betrifft allgemein informationsverarbeitende Systeme und insbesondere Spezial-Prozessoren zum Durchsuchen von Datenbanken, um besondere Datenmuster zu finden. Diese Art der Verarbeitung tritt in einer Anzahl verschiedener Zusammenhänge auf, aber sie kann am besten im Sinne eines Durchsuchens einer Datenbank zum Finden jedes Auftretens eines besonderen Wortes oder Ausdrucks verstanden werden. In der Vergangenheit ist auf üblicher Hardware laufende Computersoftware verwendet worden, um ein solches Suchen auszuführen, aber man hat herausgefunden, daß dieses unter einer Anzahl praktischer Einschränkungen leidet.
- Übliche Hardware zum sequentiellen Durchsuchen einer großen Datenbank von Anfang bis Ende wird wahrscheinlich so viel Zeit benötigen, daß sie vollständig unbrauchbar ist, und verschiedene Softwaretechniken sind verwendet worden, um die Daten so zu organisieren, daß das System für eine als typisch betrachtete Suche eine verhältnismäßig gute Leistung aufweist. Diese Techniken umfassen für gewöhnlich eine irgendwie geartete Indizierungsmethode, bei der große Tabellen die Stelle oder Stellen jedes Elements in der Datenbank enthalten. Diese Indextabellen können hinsichtlich ihrer Größe mit der eigentlichen Datenbank vergleichbar sein, und es ist häufig aufwendig, sie aufzubauen und zu organisieren. Überdies ist ein Indextabellen erforderndes System unpraktisch beim Durchsuchen von Datenbanken, deren Inhalt sich mit der Zeit ändert.
- Auch bei der Verwendung von Indexstrukturen hängt das softwaremäßige Suchen sehr stark von der Anzahl und Komplexität der für eine gegebene Suchaufgabe gestellten Suchbedingungen ab, und der verwendete Allzweckcomputer hat einen Betriebssystem- Overhead, der den Suchvorgang weiter verlangsamt. Im Ergebnis ist der tatsächlich erzielbare Datenverarbeitungsdurchsatz normalerweise nur ein Bruchteil des maximalen Datendurchsatzes von Massenspeichern, auf denen Datenbanken normalerweise gespeichert sind.
- Wegen der Einschränkungen von softwaregesteuerten Suchtechniken sind Hardwareeinrichtungen zum Unterstützen des Suchvorganges entwickelt worden. Diese bilden zwei Klassen: Assoziativspeicher und Spezialprozessoren. Assoziativspeicher sind Speichereinrichtungen, die ihren Inhalt mit einem auf einem gemeinsamen Bus vorgegebenen Muster zu vergleichen vermögen. Solche Speicher sind für große Datenbanken unerschwinglich teuer und haben jedenfalls begrenzten Nutzen, weil sie typischerweise nur Vergleichsvorgänge auf genaue Übereinstimmung ausführen können.
- Spezialprozessoren zur Datensuche verwenden billigen Speicher, auf dessen Daten eine dedizierte Mustervergleichsschaltung zugreift. Die Suchbedingungen werden typischerweise vor der Suche im Prozessor gespeichert, und die Daten werden während der Suche dem Prozessor zugeführt. Eine besonders wünschenswerte Ausgestaltung eines Spezialprozessors vereinigt dessen gesamte Logik auf einem einzigen Chip einer integrierten Schaltung, wobei eine auf der Verwendung mehrerer miteinander verbundenen Chips beruhende Erweiterungsfähigkeit gegeben ist.
- Ein solcher Prozessor, von Mead und Kollegen beim California Institute of Technology, verwendet einen 128-Bit-Vergleicher, um Texteingaben mit einem residenten Muster zu vergleichen (siehe Mead, C.A., Pashley, R.D., Britton, L.D., Daimon, Y.T. und Sando, S.F.: "128-bit-Multi-Comparator", IEEE Journal Solid State Circuits, SC-11(5):692-695, Oktober 1976). Ein Maskenregister ermöglicht das Äquivalent vom "Wert egal"-Zeichen veränderlicher Länge im Muster. Mit anderen Worten kann das Muster ein Segment veränderlicher Länge enthalten, dessen Inhalt den Vergleichsvorgang nicht beeinflußt.
- Foster und Kung haben einen systolischen Mustervergleichschip vorgeschlagen, der zwei Arten von Zellen aufweist (siehe Foster, M.J. und Kung, H.T. "The Design of Special-Purpose VLSI Chips", IEEE Computer, 13(1), Januar 1980). Der Prozessor speichert das gerade gesuchte Muster nicht und erfordert, daß es auf einem zu den gerade durchsuchten Daten parallelen Datenpfad umläuft. Das systolische Bauprinzip dieses Prozessors, das eine Pipeline miteinander verbundener Zellen bedingt, die jeweils nur mit ihren unmittelbaren Nachbarn Signale austauschen, machen ihn für ein Layout hoher Dichte in integrierten Schaltungen besonders gut einsetzbar.
- Ein zweiter systolischer Entwurf mit einer eine Pipeline aus einem einzigen Zellentyp aufweisenden Struktur ist von Mukhopadhyay von der University of Central Florida vorgeschlagen worden (siehe Mukhopadhyay, A., "VLSI Hardware Algorithms", In: Rabbat, G. (Hrsg.), Hardware and Software Concepts in VLSI, Kapitel 4, Seiten 72-94, Van Nostrand Reinhold, 1983). Bei diesem System wird ein Muster von einem Ende der Pipeline aus eingelesen, und zu durchsuchende Textdaten werden vom anderen Ende aus eingelesen. Das System läßt "Wert egal"-Zeichen fester und variabler Länge zu.
- Auch wenn diese und andere vorgeschlagene Systeme eine Mustersuche bei hoher Geschwindigkeit mit unterschiedlichen "Wert egal"-Fähigkeiten ausführen, stellen sie doch keine vollständigen Datensuchsysteme dar. Beispielsweise führen diese Systeme keine Booleschen Funktionen aus, keine komplexen Näherungsfunktionen, und sie bewältigen keine ungefähren Übereinstimmungen. Dementsprechend hätte ein auf Grundlage solcher Vorrichtungen aufgebautes System eine nicht vorhersagbare Antwortzeit, abhängig davon, ob bei irgendeiner besonderen Suchanfrage die Spezialhardware eingesetzt werden kann. Das ist in vielerlei Hinsicht dasselbe Problem wie bei gewöhnlichen Softwarelösungen.
- Die am 24. April 1985 eingereichte US-Anmeldung 726,457 mit dem Titel "A Fast Search Processor", auf die verwiesen wird und die eine teilweise Fortführung der am 29. Juni 1984 eingereichten Anmeldung 626,432 (veröffentlicht als US-A 4,760,523) mit demselben Titel ist, die im Hinblick auf die Erfindung keinen Stand der Technik bilden, stellte einen wesentlichen Schritt nach vorn bei der Lösung der Probleme des Stands der Technik dar. Jedoch sind die in den Anmeldungen, auf die verwiesen wird, offenbarten und beanspruchten Systeme hinsichtlich einiger wichtiger Gesichtspunkte eingeschränkt. Insbesondere konnte das frühere System mit einer begrenzten Anzahl Rechtschreibfehler in dem durchsuchten Text zurechtkommen, aber es war nicht fähig, fehlende oder zusätzliche Zeichen im Text zu behandeln. Ohne die Fähigkeit zum Behandeln fehlender oder zusätzlicher Zeichen könnte ein Suchmuster mit einem nur kleinen Rechtschreibfehler bei der Textsuche einen Fehlschlag ergeben.
- Auch wird auf unsere frühere Europäische Patentanmeldung EP-A-0 222 940 hingewiesen, die für die vorliegende Anmeldung nur nach Art. 54(3) EPÜ zum Stand der Technik gehört. Die Anmerkungen im vorigen Absatz treffen ebenso auf den in dieser früheren Anmeldung offenbarten "Fast Search Processor" zu.
- Ein weiteres Informationssuchsystem, das für die Erfindung relevante Hintergrundinformation über den Stand der Technik bildet, ist in einem weiteren Artikel von Amar Mukhopadhyay offenbart, mit dem Titel "A backend machine architecture for information retrieval", veröffentlicht von Butterworths 1981 in Proceedings of the Conference on Research and Development in Information Retrieval. Der Oberbegriff der beigefügten Ansprüche 1 und 10 beruht auf dieser Offenbarung.
- Man wird anerkennen, daß das in den Anmeldungen, auf die oben verwiesen wurde, offenbarte und beanspruchte System noch verbesserungsfähig ist. Idealerweise sollte ein Suchprozessor fähig sein, Suchmuster auch dann zu erkennen, wenn der Text eine beschränkte Anzahl von zusätzlichen Zeichen oder fehlenden Zeichen enthält, ebenso wie bei Schreibfehlern mit der richtigen Zeichenanzahl. Die Erfindung zielt in diese Richtung und darauf, ein Hochgeschwindigkeits-Textsuchsystem bereitzustellen, das viele verschiedene Suchfunktionen ausführen kann.
- Die Erfindung besteht in einem schnellen Suchprozessor, und in einem darauf bezogenen Verfahren zu dessen Verwendung, der viele verschiedene Suchfunktionen ausführen kann, einschließlich des Erkennens von Suchmustern mit fehlenden oder zusätzlichen Zeichen. Ein weiterer wichtiger Gesichtspunkt der Erfindung ist die Fähigkeit, einen Textstrom in Gebieten zu durchsuchen, die Segmente genannt werden und beispielsweise Sätze, Textseiten oder eine ausgewählte Anzahl aufeinanderfolgender Zeichen oder Wörter sein können. Ein Satz und eine Seite sind Beispiele "fester" Segmente oder Fenster. Eine Suche könnte unterschiedliche Musterzusammenstellungen festlegen, die innerhalb eines Segments, beispielsweise eines Satzes, gefunden werden müssen. Wenn die Suche eine Musterzusammenstellung festlegen würde, die innerhalb irgendwelcher 200 aufeinanderfolgender Zeichen gefunden werden müßte, wäre dies ein Beispiel einer Suche mit einem "gleitenden" Segment oder Fenster.
- Die wesentlichen Merkmale des erfindungsgemäßen Suchprozessors sind im beigefügten Anspruch 1 wiedergegeben.
- Das erfindungsgemäße Verfahren ist im beigefügten Anspruch 10 wiedergegeben.
- Der erfindungsgemäße Suchprozessor vermag eine Funktion "Aufzählungsübereinstimmung" innerhalb eines angegebenen Segments auszuführen. Eine Aufzählungsübereinstimmung ist als eine Suchbedingung definiert, die festlegt, daß der Suchprozessor nur dann eine Übereinstimmung meldet, wenn die Anzahl des Auftretens eines Musters in einem Textsegment größer als, kleiner als oder gleich einer angegebenen Anzahl ist.
- Der Suchprozessor vermag auch eine Funktion "Aufzählungsteilmenge" auszuführen, was bedeutet, daß eine Übereinstimmung gemeldet wird, wenn verschiedene aus einer Menge oder Liste von Suchbegriffen ausgewählte Muster eine angegebene Anzahl von Malen aufgetreten sind. Zum Beispiel könnte eine Suche so festgelegt sein, daß zumindest zwei aus einer Menge von den drei Suchbegriffen "a", "b" und "c" innerhalb eines angegebenen Segments gefunden werden sollen, oder daß zwei Begriffe aus der aus "zumindest drei "a"", "zumindest vier "b"" und "höchstens ein "c"" bestehenden Menge gefunden werden sollen. Die Komplexität einer Suche kann weiter vergrößert werden, indem Boolesche Ausdrücke als Suchbegriffe aufgenommen werden, und indem weiterhin Aufzählungsteilmengen in den Suchbegriffen anderer Aufzählungsteilmengen verschachtelt werden. Wie aus der detaillierten Beschreibung deutlich werden wird, ist der erfindungsgemäße Suchprozessor ein überaus leistungsfähiges Suchwerkzeug, das nach Textmustern von einem sehr einfachen bis zu einem sehr komplexen Aufbau mit überaus hoher Geschwindigkeit zu suchen vermag.
- Die Übereinstimmungslogik der Zellen kann Mittel zum Erkennen fehlender und zusätzlicher Zeichen im durchsuchten Textstrom aufweisen.
- Insbesondere kann der Prozessor gemäß einer bevorzugten Ausführungsform der Erfindung Mittel zum Speichern eines ersten Übereinstimmungsergebnisses, das einem ersten Suchbegriff zugeordnet ist, auf einer zusätzlichen, die Zellen verbindenden Leitung aufweisen, Mittel zum Erzeugen eines zweiten Übereinstimmungsergebnisses, das einen zweiten Suchbegriff betrifft, und Mittel zum logischen Verknüpfen der ersten und zweiten Übereinstimmungsergebnisse zur Ausgabe aus den hintereinandergeschalteten Zellen. Der Prozessor kann auch Mittel aufweisen zum Erzeugen zusätzlicher Übereinstimmungsergebnisse, die zusätzlichen Suchbegriffen zugeordnet sind, welche in einer verschachtelten Anordnung mit den ersten und zweiten Suchbegriffen logisch verknüpft werden können.
- Der erfindungsgemäße Prozessor kann auch Mittel zum Zählen der Anzahl des Auftretens ausgewählter Suchbegriffe aufweisen, um für das Suchen von Aufzählungsbedingungen im Textstrom zu sorgen. Zum Suchen mit einem festen Fenster weist der Prozessor ferner Mittel zum Erkennen von Grenzen vordefinierter Textsegmente im Textstrom auf und Mittel, um ein Ausführen der Suchfunktionen nur innerhalb eines festen Fensters eines Textsegments zu ermöglichen.
- Gemäß einem weiteren Gesichtspunkt der Erfindung, nach dem ein Suchen in Gleitfenstern ausgeführt wird, weist der erfindungsgemäße Prozessor auch Mittel zum Erkennen der Grenzen vordefinierter Textsegmente im Textstrom auf, Mittel zum Zählen der Segmente, um zu bestimmen, ob ein Suchbegriffin einer angegebenen Anzahl von Textsegmenten aufgetreten ist, und Mittel zum Erzeugen eines Übereinstimmungssignals nur dann, wenn die angegebenen Suchbegriffe gemeinsam in der angegebenen Anzahl von Textsegmenten aufgetreten sind. Der Prozessor kann auch Mittel zum Verringern der Anzahl erzeugter Übereinstimmungssignale aufweisen, indem die Übereinstimmungssignale mit einem von den Segmentgrenzen abgeleiteten Signal UND-verknüpft werden.
- Das erfindungsgemäße Verfahren kann die Schritte aufweisen, ein erstes Übereinstimmungsergebnis, das einem ersten Suchbegriff zugeordnet ist, auf einer zusätzlichen, die Zellen verbindenden Leitung zu speichern, ein zweites Übereinstimmungsergebnis, das sich auf einen zweiten Suchbegriff bezieht, zu erzeugen und das erste und das zweite Übereinstimmungsergebnis zum Ausgeben aus den hintereinandergeschalteten Zellen logisch zu verknüpfen. Vorzugsweise weist das Verfahren ferner den Schritt auf, zusätzliche Übereinstimmungsergebnisse zu erzeugen, die zusätzlichen Suchbegriffen zugeordnet sind, welche in einer verschachtelten Anordnung mit den ersten und zweiten Suchbegriffen logisch verknüpft werden können.
- Für einige Sucharten kann das Verfahren auch den Schritt aufweisen, die Anzahl des Auftretens ausgewählter Suchbegriffe zu zählen, um für das Suchen nach Aufzählungsbedingungen im Textstrom zu sorgen.
- Zum Suchen in einem festen Fenster eines vordefinierten Textsegments kann das Verfahren die Schritte aufweisen, Grenzen vordefinierter Textsegmente im Textstrom zu erkennen und zu ermöglichen, daß die Suchfunktionen nur in einem festen Fenster eines Textsegments ausgeführt werden. Zum Suchen in einem gleitenden Textsegment weist das Verfahren auch die Schritte auf, die Grenzen vordefinierter Textsegmente im Textstrom zu erkennen, die Anzahl von Segmenten zu zählen, um zu bestimmen, ob ein Suchbegriff in einer angegebenen Anzahl von Textsegmenten aufgetreten ist, und ein Übereinstimmungssignal nur dann zu erzeugen, wenn die angegebenen Suchbegriffe gemeinsam in der angegebenen Anzahl Textsegmente aufgetreten sind. Diese Erscheinungsform der Erfindung kann auch beinhalten, die Anzahl erzeugter Übereinstimmungssignale zu verringern, indem die Übereinstimmungssignale mit einem von den Segmentgrenzen abgeleiteten Signal UND-verknüpft werden.
- Eine weitere Erscheinungsform der Erfindung betrifft die Möglichkeit, die Zellen so zu programmieren, daß die beschränkte Länge eines Zählers in jeder Zelle auf einen beliebig großen Zähler ausgedehnt wird. In der veranschaulichenden Ausführungsform der Erfindung ist der Zähler in jeder Zelle auf eine Länge von 8 Bits beschränkt, aber benachbarte Zellen können eingesetzt werden, um einen größeren Zähler bereitzustellen, beispielsweise einen Zähler mit 32 Bits. Auf diese Weise beschränkt die kleine Zählergröße in jeder Zelle die Fähigkeit des Prozessors nicht, eine Vielzahl von Suchvorgängen auszuführen, die es mit sich bringen, viele Zeichen, Worte oder Sätze zu zählen.
- Eine weitere Erscheinungsform der Erfindung betrifft das Ansammeln von Ergebnissen des Prozessors. Text muß seriell durch den Prozessor geleitet werden, und Übereinstimmungsanzeigesignale verlassen den Prozessor im Gleichtakt mit dem Text und auf einer zu der Zeichenleitung parallelen Leitung. Mehrfache Suchanfragen können behandelt werden, indem die mehrfachen Suchergebnisse auf zusätzliche Leitungen durch den Prozessor gegeben werden. Jedoch ist die Anzahl von Anfragen, die auf diese Weise behandelt werden können, durch die Anzahl der von den Prozessorzellen bereitgestellten Leitungen beschränkt. Gemäß dieser Ausführungsform der Erfindung werden Übereinstimmungssignale in Ergebnissammelmitteln gesammelt, die in der bevorzugten Ausführungsform der Erfindung als eine Ergebnis-Pipeline ausgeführt sind, in die Übereinstimmungssignale von den Ergebnisabgriffsstellen in der Zellen-Pipeline gelangen. Die Ergebnis-Pipeline kann so viele Übereinstimmungssignale von bis zu Tausenden getrennten, in der Zellenpipeline gespeicherten Suchanfragen behandeln, und sie weist Mittel zum Vermeiden von Kollisionen auf, um sicherzustellen, daß mehrfache Ergebnisse nicht wegen der möglichen Überlappung der Zeitpunkte, zu denen sie auftreten, verlorengehen.
- Man wird aus dem Bisherigen erkennen, daß die Erfindung einen wesentlichen Fortschritt auf dem Gebiet der Spezial-Suchproessoren darstellt. Insbesondere sieht die Erfindung eine sehr effiziente Methode zum Durchsuchen eines seriellen Textstroms nach vordefinierten Suchmustern vor, die fehlerhafte, fehlende oder zusätzliche Zeichen im Textstrom aufweisen können. Weiterhin kann der erfindungsgemäße Prozessor Aufzählungssuchen und Suchen nach Teilmengen von Musterbegriffen in festen oder gleitenden Fenstern ausführen und verschiedene Boolesche Ausdrücke von Suchbegriffen zulassen. Die Suchfunktionen können auf viele verschiedene Arten kombiniert und in mehreren Stufen verschachtelt werden. Schließlich stellt die Erfindung Mittel bereit, um die Suchergebnisse so zu sammeln, daß mehrfache Suchen während eines einzigen Durchlaufs des Textstroms durchgeführt werden können. Andere Erscheinungsformen und Vorteile der Erfindung werden aus der folgenden detaillierteren Beschreibung in Verbindung mit den beigefügten Zeichnungen deutlich werden.
- Fig. 1 ist ein Blockschaltbild eines mit einem Host-System verbundenen schnellen Suchprozessors;
- Fig. 2 ist ein Blockschaltbild einer Anzahl von Zellen des erfindungsgemäßen Suchprozessors, die in Form einer Zellen-Pipeline miteinander verschaltet sind;
- Fig. 3a ist eine eine einfache Suchsequenz in der Struktur der Erfindung zeigende Tabelle für eine Suchbedingung genauer Übereinstimmung;
- Fig. 3b ist eine Zeichnung ähnlich wie Fig. 3a, bei der der Text jedoch ein fehlendes Zeichen aufweist;
- Fig. 3c ist eine Zeichnung ähnlich wie Fig. 3a, bei der jedoch der Text ein zusätzliches Zeichen aufweist;
- Fig. 3d ist eine Zeichnung ähnlich wie Fig. 3a, bei der jedoch der Text ein falsches Zeichen aufweist;
- Fig. 3e ist eine Zeichnung ähnlich wie Fig. 3a, bei der jedoch der Text keine Fehler aufweist und eine Fehlertoleranz der Größe 2 angegeben ist;
- Fig. 4a ist ein schematisches Schaltbild der Vergleichslogik einer Zelle;
- Fig. 4b ist ein schematisches Schaltbild der Übereinstimmungslogik einer Zelle des Prozessors;
- Fig. 4c ist ein schematisches Schaltbild der Akkumulatorlogik einer Zelle;
- Fig. 4d ist ein schematisches Schaltbild der Zählerlogik einer Zelle;
- Fig. 4e ist ein schematisches Schaltbild der Inkrement- und Dekrementlogik einer Zelle;
- Fig. 4f ist ein schematisches Schaltbild der Logik zum Adressieren zusätzlicher Leitungen der Zellenstruktur;
- Fig. 5a ist ein die mit Hinweis auf Fig. 3 beschriebene einfache Suchfunktion zeigendes Schaltbild;
- Fig. 5b ist eine Fig. 5a entsprechende Mikrocode-Auflistung;
- Fig. 6a ist ein die Suchfunktion der Alternativenbildung zeigendes Schaltbild;
- Fig. 6b ist eine Fig. 6a entsprechende Mikrocode-Auflistung;
- Fig. 7a ist ein Schaltbild, das eine komplexere Suche mit Alternativen aufweist;
- Fig. 7b ist eine Fig. 7a entsprechende Mikrocode-Auflistung;
- Fig. 8a ist ein eine einfache Suche in einem festen Fenster zeigendes Schaltbild;
- Fig. 8b ist eine Fig. 8a entsprechende Mikrocode-Auflistung;
- Fig. 9a ist ein Schaltbild, das eine komplexere Suche mit Aufzählungsbedingungen in einem festen Fenster zeigt;
- Fig. 9b ist eine Fig. 9a entsprechende Mikrocode-Auflistung;
- Fig. 10a ist ein Schaltbild, das eine Suche nach einer ausgewählten Teilmenge von Suchbegriffen in einem festen Fenster zeigt;
- Fig. 10b ist eine Fig. 10a entsprechende Mikrocode-Auflistung;
- Fig. 11a ist ein Schaltbild, das eine Suche nach einfachen angegebenen Bedingungen in einem Gleitfenster zeigt;
- Fig. 11b ist eine Fig. 11a entsprechende Mikrocode-Auflistung;
- Fig. 12a ist ein Schaltbild, das eine Suche nach komplexen Aufzählungsbedingungen in einem Gleitfenster zeigt;
- Fig. 12b ist eine Fig. 12a entsprechende Mikrocode-Auflistung;
- Fig. 13a ist ein Schaltbild, das eine Suche mit einer
- "Wert egal"-Zeichenkette veränderlicher Länge zeigt;
- Fig. 13b ist eine Fig. 13a entsprechende Mikrocode-Auflistung;
- Fig. 14a ist ein Schaltbild, das eine Suche mit einer "Wert egal"-Zeichenkette fester Länge zeigt;
- Fig. 14b ist eine Fig. 14a entsprechende Mikrocode-Auflistung;
- Fig. 15a ist ein Schaltbild, das den Betrieb eines Zählers mit erweiterter Länge bei einer Suche zeigt;
- Fig. 15b ist eine Fig. 15a entsprechende Mikrocode-Auflistung;
- Fig. 16 ist ein Blockschaltbild, das die Ergebnissammelpipeline der Erfindung zeigt, und
- Fig. 17 ist ein Blockschaltbild, das die in dem Prozessor verwendete Logik zum Abgreifen des Ergebnisses zeigt.
- Wie zur Veranschaulichung in den Zeichnungen gezeigt, betrifft die Erfindung Spezialprozessoren zum Durchsuchen von Datenströmen, die beispielsweise von Datenbanken stammen. Idealerweise sollte ein schneller Suchprozessor viele verschiedene Arten von Textanfragen behandeln können, und er sollte die Anfragen schnell bearbeiten können und vorzugsweise die Fähigkeit haben, mehrfache Anfragen gleichzeitig zu behandeln. Wie der erfindungsgemäße Prozessor diese und andere Anforderungen erfüllt, wird in den folgenden Abschnitten beschrieben:
- Als vorläufige Definition sei bemerkt, daß ein "Suchmuster" irgendeine Zusammenstellung von Zeichen bedeutet, die gefunden oder mit einem Textstrom verglichen werden soll. Ein "Suchausdruck" ist ein Abschnitt eines Suchmusters, der ein logisches Element einer besonderen Suchanfrage bildet. Ein Suchausdruck kann eine Zeichenkette, beispielsweise ein Wort, sein, oder ein komplexer Ausdruck mit Booleschen Verknüpfungen von Zeichenketten und Aufzählungen, die eine gewünschte Anzahl des Auftretens von Zeichenketten anzeigen. Ein Suchausdruck kann auch andere Suchausdrücke in einer Anordnung mit mehreren Verschachtelungsebenen kombinieren.
- Wie in Fig. 1 gezeigt, weist die Umgebung, in der die Erfindung verwendet wird, ein Host-Rechnersystem auf, bezeichnet mit Bezugszeichen l. Das Host-System 1 umfaßt eine Datenquelle 2, einen Host-Prozessor 3 und einen Ergebnisspeicher 4 und kann im Detail irgendeine geeignete Architektur aufweisen. Typischerweise ist die Datenquelle 2 ein Hochgeschwindigkeits-Speichersystem mit einer magnetischen Platte, der Host-Prozessor 3 ist ein üblicher Allzweckprozessor und der Speicher 4 ist ein üblicher Speicher mit wahlfreiem Zugriff.
- Der schnelle Suchprozessor der Erfindung, mit Bezugszeichen 5 bezeichnet, erhält Daten von der Datenquelle 2 über eine Leitung 8 und überträgt Ergebnisse über eine Leitung 9 an einen Ausgangspuffer 10 und von dort über eine Leitung 11 geringer Geschwindigkeit an den Ergebnisspeicher 4.
- Der Suchprozessor 5 ist von Signalen, die über eine Leitung 12 vom Host-Prozessor 3 empfangen werden, zum Betrieb in einem Initialisierungsmodus und in einem Suchmodus gesteuert.
- In dem Initialisierungsmodus werden Werte von zu suchenden Mustern und Werte von die Ausführung der Suche steuernden Merkern über die Leitung 12 in den Suchprozessor 5 geladen. Insbesondere werden die Werte eines Musterregisters, eines Maskenregisters, eines Toleranzregisters und einer Anzahl programmierbarer Merker während des Initialisierungsmodus in jede Zelle geladen. Diese Register und Merker werden unten definiert.
- Dann, im Suchmodus durchsucht der Prozessor einen mit hoher Geschwindigkeit auf der Leitung 8 bereitgestellten Datenstrom und überträgt Übereinstimmungsergebnisse mit derselben hohen Geschwindigkeit auf der Leitung 9 an den Ausgangspuffer 10. Ein Entwurfsziel für den Suchprozessor 5 ist dessen Fähigkeit, den Datenstrom mit einer Geschwindigkeit zu durchsuchen, die der Zugriffsrate auf die Datenquelle 2 vergleichbar ist. Große Datenbanken können dann in vernünftiger Zeit seriell durchsucht werden, ohne komplexe und kostenträchtige Indizierungsmethoden zu verwenden.
- Der Suchprozessor der bevorzugten Ausführungsform der Erfindung weist mehrere identische Zellen auf, von denen drei bei 20 bis 22 in Fig. 2 gezeigt sind. Der Aufbau jeder Zelle wird bald im Detail erläutert werden, aber für die anfängliche Erläuterung muß nur berücksichtigt werden, daß jede Zelle eine Zeichenleitung, bezeichnet mit C(8) und eine Übereinstimmungsleitung M(3) aufweist, wobei die Ziffern in Klammern die Bit-Anzahl der Leitung anzeigen, so daß die Zeichenleitung 8 Bits und die Übereinstimmungsleitung 3 Bits aufweist. Die miteinander verbundenen Zellen weisen auch eine Akkumulatorleitung A, eine Leitung F zum dynamischen Rücksetzen, eine Ladeleitung L, eine Inkrementleitung I, eine Dekrementleitung D und 12 Allzweckleitungen auf, allgemein mit Tn bezeichnet. Daher werden die Zellen miteinander durch insgesamt 28 Leitungen verbunden, und zwar 8 Zeichenleitungen, 3 Übereinstimmungsleitungen, 12 Allzweckleitungen, und 5 andere Leitungen.
- Jede der die Zellen verbindenden Leitungen ist in jeder Zelle mindestens einem Register zugeordnet. Die Eingabesignale an jede Zelle sind mit dem Index i bezeichnet, und die Ausgabesignale von jeder Zelle sind mit dem Index o bezeichnet. Beispielsweise ist das Eingabesignal auf der Akkumulatorleitung Ai und das Ausgabesignal auf der Akkumulatorleitung ist Ao. Wie erläutert werden wird, sind einige der Leitungen in jeder Zelle einem zweiten Register zugeordnet. Beispielsweise hat die Übereinstimmungsleitung ein Übereinstimmungsregister und ein in Serie mit diesem geschaltetes Übereinstimmungsverzögerungsregister. Die Aufgabe des Übereinstimmungsverzögerungsregisters wird aus dem einfachen Suchbeispiel deutlich werden, das in dem nächsten Beschreibungsabschnitt beschrieben werden soll.
- Aufeinanderfolgende Zeichen der durchsuchten Datenbank werden auf der Leitung 8 von der Datenquelle 2 empfangen und die Zeichenleitung C entlang von Zelle zu Zelle weitergeleitet. Die Übereinstimmungsleitung M ist die Leitung, auf der im Prozessor Übereinstimmungsergebnisse erzeugt und von Zelle zu Zelle weitergeleitet werden. Die Übereinstimmungsleitung zeigt eine Übereinstimmung durch einen Wert ungleich Null an. Eine Null auf der Übereinstimmungsleitung stellt eine Nicht-Übereinstimmung dar. Anstatt einen einfachen binären Übereinstimmungs- oder Nicht-Übereinstimmungswert zu übertragen, wird die Übereinstimmungsleitung allgemeiner verwendet, um einen mehrwertigen Übereinstimmungswert zu übertragen, der den Grad der Übereinstimmung anzeigt, d. h. die Anzahl der zwischen dem Suchmuster und dem durchsuchten Text nicht-übereinstimmenden Zeichen. Dieser Übereinstimmungswert wird bei einer ausgewählten Zelle, normalerweise der ersten in einem Suchmuster, auf eine Zahl zwischen 1 und 7 initialisiert. Diese Zahl ist um 1 größer als die Maximalzahl von Fehlern, die in dem Textstrom toleriert werden können. Die Fehler können falsche Zeichen, fehlende Zeichen oder zusätzliche Zeichen sein, von denen jedes dazu führt, daß der Wert auf der Übereinstimmungsleitung um 1 dekrementiert wird. Wenn der Wert der Übereinstimmungsleitung auf 0 dekrementiert worden ist, wird gesagt, daß keine Übereinstimmung zwischen dem Suchmuster und dem untersuchten Abschnitt des Textstroms besteht.
- Die Arbeitsschritte der Zellen erfolgen gemäß einer verhältnismäßig einfachen logischen Sequenz, die von Zelle zu Zelle identisch ist. Bei jedem Taktzyklus und in jeder Zelle wird das gegenwärtig in der Zelle befindliche Zeichen mit einem vorher während der Initialisierungsphase in der Zelle gespeicherten Musterzeichen verglichen. Beispielsweise seien die Buchstaben C-A-T die in den Zellen 20 bis 22 gespeicherten Musterzeichen. Wenn die Zeichen C-A-T in dem Eingangsdatenstrom auftreten, ergibt das eintreffende Zeichen C eine Übereinstimmung mit dem Muster C in der ersten Zelle 20. Wenn das Zeichen C zur zweiten Zelle 21 weiterläuft, folgt ihm auf der Übereinstimmungsleitung M ein die Übereinstimmung in der ersten Zelle anzeigender Übereinstimmungswert. Genauer wird die Anzeige einer Übereinstimmung gleichzeitig an die zweite Zelle übertragen, während das nächste Datenzeichen dem übereinstimmenden folgt. Zwei Taktzyklen nach der Übereinstimmung der Zeichen C wird das eintreffende Zeichen A der zweiten Zelle 21 zugeführt und eine Übereinstimmung mit dem Musterzeichen A in dieser Zelle wird gefunden. Die Architektur der einzelnen Zellen ist derart, daß der auf der Übereinstimmungsleitung M1 die erste Zelle 20 verlassende Übereinstimmungswert durch die zweite Zelle 21 geleitet wird, wenn auch in dieser Zelle eine Übereinstimmung gefunden wird. Auf ähnliche Weise verläßt, wenn das eintreffende Zeichen T als mit dem in der dritten Zelle 22 gespeicherten Muster übereinstimmend erkannt wird, der Übereinstimmungswert auf der Übereinstimmungsleitung M die dritte Zelle. Bei diesem Beispiel ist die dritte Zelle die letzte im Muster und, wie erläutert werden wird, enthält sie einen Programmerker, der die Wirkung hat, den Übereinstimmungswert von der Übereinstimmungsleitung M auf eine der anderen durch den Prozessor verlaufenden Leitungen zu übertragen. Typischerweise, wie aus den zu erläuternden Beispielen deutlich werden wird, wird die Akkumulator- oder A- Leitung benutzt, um Übereinstimmungsergebnisse von der Übereinstimmungsleitung zu sammeln und zu kombinieren. Die Weiterleitung von Übereinstimmungswerten von Zelle zu Zelle wird unten im Abschnitt "einfache Suchfunktion" genauer beschrieben.
- In den Fig. 4a bis 4f sind sechs Signalarten gezeigt, jede mit ihrer eigenen Namenskonvention:
- 1. Steuersignale:
- Diese umfassen die Signale trans, dump, init1, init2, init2x, init3 und init4. Diese Signale werden allen Zellen im Prozessor gemeinsam zugeführt, aber sie werden nur während der Initialisierung und in einem Diagnosemodus verwendet, der keinen Bestandteil der Erfindung darstellt. Während des Ausführens einer Suche sind diese Steuersignale auf 0 gesetzt.
- 2. Register:
- Register sind Speichereinrichtungen, die den an ihre Eingänge angelegten Wert zu dem Zeitpunkt einer steigenden Flanke eines Taktimpulses übernehmen. Alle Register werden von denselben Taktsignalen gesteuert, so daß sie alle zur selben Zeit während eines Taktzyklus einen neuen Wert aufnehmen. Die Register sind mit einem Buchstaben oder zwei Buchstaben (Großbuchstaben) benannt. Sie umfassen die Datenpfadregister M(3), A, L, I, D, F, C(8)und T(12), den Zähler K(8) und die Verzögerungsregister DL, DA, DD, DM, IP und DP.
- 3. Eingangssignale:
- Dies sind die Datenpfadeingänge einer Zelle, die von den entsprechenden Ausgängen der in der den Prozessor bildenden Zellenpipeline vorhergehenden Zelle beschickt werden. Der Signalname besteht aus dem entsprechenden Registernamen, gefolgt von einem kleinen i.
- 4. Ausgangssignale:
- Jedes Dateneingangssignal hat ein entsprechendes Ausgangssignal, bezeichnet mit einem angehängten kleinen o und verbunden mit dem entsprechenden Eingang der nächsten Zelle in der Pipeline.
- 5. Steuermerker (flags):
- Dies sind Register, die nur während der Initialisierungsphase einen neuen Wert einnehmen. Sie bilden ein mikrocodiertes Programm, das das nachfolgende Verhalten jeder Zelle während des Ausführens einer Suche bestimmt. Sie sind mit einer Bezeichnung aus mindestens zwei Großbuchstaben benannt, wie beispielsweise PATT(8), MASK(8), LEN(8), MS(2), OS(3) usw. Eine vollständige Auflistung der Steuermerker ist unten in dem Beschreibungsabschnitt mit dem Titel "Initialisierung" enthalten.
- 6. Interne Signale:
- Alle anderen Signalnamen bezeichnen interne Signale. Sie enthalten immer einen Kleinbuchstaben und weisen keine besondere Bedeutung außer zum Definieren und Erläutern von Signalpfaden in den Zellen auf. Einige interne Signale werden als Eingaben an logische Elemente in der Zelle verwendet, d. h. die Namen werden verwendet, um Signalpfade festzulegen, ohne in den Zeichnungen eine Verbindungslinie zu ziehen.
- Die Vergleichslogik ist in Fig. 4a gezeigt und weist ein Zeichenregister C(8), ein Musterregister PATT(8) und ein Maskenregister MASK(8) auf. Das Zeichenregister ist mit den Eingangs- und Ausgangszeichenleitungen verbunden und speichert das augenblicklich durch die Zelle laufende Textzeichen. Das Musterregister wird verwendet, um ein Zeichen eines Suchmusters vor dem Beginn einer Suche mit dem Prozessor zu speichern. Das Maskenregister ist ein weiteres Acht-Bit-Register, das vor einer Suche initialisiert wird. Es wird verwendet, um Bits wahlweise durch eine Maskierung aus dem Vergleichsprozeß zwischen dem Zeichenregister und dem Musterregister auszuschließen. Beispielsweise kann das Maskenregister so gesetzt werden, daß es durch eine Maskierung eine Bit-Stelle ausschließt, die Großbuchstaben von Kleinbuchstaben unterscheidet, so daß die Vergleichslogik unabhängig von der Unterscheidung zwischen Groß- und Kleinbuchstaben eine Übereinstimmung finden wird.
- Die Vergleichslogik weist auch 8 Exklusiv-ODER-Gatter 26 (XOR- Gatter) mit negierten Ausgängen auf, die so angeschlossen sind, daß sie Eingaben vom Zeichenregister und dem Musterregister erhalten. Jedes der XOR-Gatter 26 erzeugt eine Ausgabe "1", wenn beide Eingänge übereinstimmen, und eine Ausgabe "0", wenn die Eingänge nicht übereinstimmen. Die acht Ausgaben der XOR-Gatter 26 werden von 8 ODER-Gattern 28 mit den 8 entsprechenden Bits des Maskenregisters durch eine ODER-Verknüpfung verbunden. Eine "1" in einer Bit-Stelle eines Maskenregisters erzeugt deshalb immer eine Ausgabe "1" des entsprechenden ODER-Gatters 28. Die Ausgaben der ODER-Gatter 28 werden in einem einzigen UND-Gatter 29 durch eine UND-Verknüpfung verbunden, dessen Ausgabe ein zusammengesetztes Übereinstimmungssignal ist, das CeqP genannt wird (character equals pattern - Zeichen stimmt mit Muster überein).
- Die Übereinstimmungslogik ist in Fig. 4b gezeigt und ist für den Betrieb des erfindungsgemäßen Suchprozessors entscheidend. Die meisten Hardwareelemente der Logik werden in diesem Abschnitt beschrieben, und die Funktionen werden eingeführt werden, wenn später die verschiedenen Suchoperationen beschrieben werden.
- Die Übereinstimmungslogik weist ein 3-Bit-Übereinstimmungsregister M(3) auf, das von der Leitung Mi Eingangsdaten erhält, und ein Übereinstimmungsverzögerungsregister DM(3), das Daten vom Übereinstimmungsregister über unterschiedliche Wege erhält und der Ausgangsübereinstimmungsleitung Mo Ausgangsdaten zuführt. Auch wird ein Toleranzregister TOL(3) verwendet, um Übereinstimmungswerte auf die Übereinstimmungsleitung zu laden, und eine Anzahl Multiplexer (MUX) zum wahlweisen Leiten von Daten durch die Übereinstimmungslogik sind vorgesehen. Jeder der in der Übereinstimmungslogik und in anderen Bereichen der Zellenschaltbilder enthaltenen 2-Eingangs-Multiplexer hat 2 Dateneingänge, bezeichnet als "0"-Eingang und "1"-Eingang, und einen Steuereingang, um auszuwählen, welcher der Dateneingänge durch den Multiplexer auf einen einzigen Ausgang geschaltet werden soll. Die bei jedem Multiplexer verwendete Konvention ist, daß, wenn der Steuereingang eine logische "1" aufweist, der "1"- Dateneingang ausgewählt ist, und wenn der Steuereingang eine logische "0" aufweist, der "0"-Dateneingang gewählt ist.
- Auch andere Multiplexer mit mehr Eingängen finden sich in den verschiedenen Logikdiagrammen und arbeiten ähnlich wie die Einrichtungen mit 2 Eingängen. Beispielsweise weist ein 4-Eingangs-MUX eine 2-Bit-Steuerleitung mit 4 möglichen digitalen Werten auf, um einen der 4 Eingabewerte auszuwählen.
- Der Ausgang des Übereinstimmungsregisters M ist mit dem "0"- Eingang eines MUX 30 verbunden, der eingesetzt wird, um entweder den vom Übereinstimmungsregister erhaltenen Übereinstimmungswert oder einen neuen vom Toleranzregister TOL(3) erhaltenen Übereinstimmungswert auszuwählen. Das Toleranzregister ist mit dem "1"-Eingang des MUX 30 über ein UND-Gatter 32 verbunden, dessen anderer Eingang von der Ausgabe eines MUX 34 mit 4 Eingängen beschickt wird. Der MUX 34 wählt eine Quelle für die Bestimmung aus, ob die Übereinstimmungsleitung einen neuen Übereinstimmungswert oder eine Null erhalten wird. Die möglichen Quellen sind eine Eingabe logisch "1", die, wenn sie ausgewählt wird, immer den neuen Toleranzwert lädt, die Bedingung des Registers A, Beschreibung folgt, die Bedingung, daß M, d. h. der im Übereinstimmungsregister M gespeicherte Wert, größer als Null ist (Mgt0 - M greater than 0), oder die Bedingung einer der Allzweckleitungen (Tn). Ein programmierbarer Merker für die M-Quelle, MS(2), steuert die Auswahl, von welcher Bedingung bestimmt wird, ob das Toleranzregister oder der Wert Null auf die Übereinstimmungsleitung geladen wird.
- Der MUX 30 ist von einem Signal "Lade Toleranz", LT, gesteuert, das an den Steuereingang des MUX über ein UND-Gatter 36, dessen andere Eingabe ein Signal ist, das normalerweise "1" ist, angelegt ist. Daher wird, wenn das LT-Signal eine logische "0" ist, wie es meistens der Fall sein wird, der Wert im Register M über den MUX 30 an dessen Ausgangsleitung übertragen, auf der der Wert mit Mw bezeichnet wird. Die Leitung Mw ist in zwei Pfade aufgespaltet, von denen einer unmittelbar zum Eingang "1" eines weiteren MUX 38 führt und der andere durch eine Dekrementschaltung 40 verläuft, nach der das Signal Mwm1 bezeichnet wird (für Mw minus 1). Die Dekrementschaltung erzeugt einen Wert, der um 1 kleiner als der Eingangswert ist, außer wenn der Eingangswert 0 ist; in diesem Fall wird eine 0 erzeugt. Dieses Signal läuft durch ein UND-Gatter 42, dessen Zweck erläutert werden wird, und läuft von da als Signal My weiter zum Eingang "0" des MUX 38.
- Der MUX 38 führt eine der wichtigsten Funktionen des Prozessors aus, nämlich das wahlweise Dekrementieren des Übereinstimmungswertes auf der Leitung M. Die Steuerleitung für diesen MUX ist aus einem Übereinstimmungssignal abgeleitet, das durch ein Vergleichen des eintreffenden Textzeichens mit einem gespeicherten Muster erhalten wird, wie oben unter Hinweis auf Fig. 4a in dem Abschnitt "Vergleichslogik" beschrieben. Die Vergleichslogik von Fig. 4a erzeugt ein CeqP (Zeichen stimmt mit Muster überein; character equals pattern) genanntes Übereinstimmungssignal, und dieses Signal wird zum Steuern des MUX 38 über eine Zusatzlogik verwendet, die einen weiteren MUX 44, ein Exklusiv- ODER-Gatter 46 (XOR-Gatter) und ein ODER-Gatter 48 aufweist. Der MUX 44 wählt zwischen dem Signal CeqP und einem alternativen Signal, das von irgendeiner der Allzweckleitungen Tn stammt, aus, gesteuert von einem CT bezeichneten Signal. Die Ausgabe dieses MUX 44 wird dem XOR-Gatter 46 eingegeben, dessen andere Eingabe ein IC bezeichnetes Steuersignal ist, um einen negierten Vergleich durchzuführen, der es erlaubt, die Bedeutung des Übereinstimmungssignals zu negieren. Schließlich wird das Übereinstimmungssignal durch ein ODER-Gatter 48 geleitet, um den MUX 38 zu steuern. Grundsätzlich wird der Eingang Mw ausgewählt, wenn eine Übereinstimmung auftritt, d. h., wenn der Übereinstimmungswert nicht geändert wird, und der Wert My wird ausgewählt, wenn keine Übereinstimmung auftritt, d. h., wenn der dekrementierte Wert ausgewählt wird. Der Ausgang des MUX 38 ist mit Mz bezeichnet.
- Das Signal Mz wird an den Eingang "1" eines weiteren MUX 50 eingegeben, dessen Zweck das Erkennen zusätzlicher Zeichen ist, und verläßt diesen als Signal Ms, das dem Verzögerungsregister DM eingegeben wird. Der Ausgang des Registers DM ist dem Eingang "0" eines weiteren MUX 52 zugeführt, der beim Erkennen fehlender Zeichen verwendet wird, und verläßt diesen als Signal Mt. Das letztgenannte Signal wird als Eingabe "0" noch eines weiteren MUX 54 eingesetzt, der verwendet wird, um das wahlweise Umgehen des Verzögerungsregisters in einigen Fällen zu steuern. Der Ausgang dieses letztgenannten MUX 54 ist das Ausgangssignal Mo auf der Übereinstimmungsleitung.
- In dem einfachen Fall, bei dem kein neuer Übereinstimmungswert in diese Zelle geladen worden ist, leitet die Übereinstimmungslogik während ihrer Tätigkeit in jedem Taktzyklus einen neuen Eingangswert Mi an das Übereinstimmungsregister weiter, und sie leitet den vorher im Übereinstimmungsregister M gespeicherten Wert an das Übereinstimmungsverzögerungsregister DM weiter, dessen Inhalt als Mo ausgegeben wird. Die Schlüsselfunktion der Übereinstimmungslogik ist es, den an das Verzögerungsregister weitergeleiteten Übereinstimmungswert zu dekrementieren, wenn zwischen dem bei der Zelle ankommenden Zeichen und dem in der Zelle gespeicherten Muster keine Übereinstimmung festgestellt wird. Diese vorläufige Erläuterung der Übereinstimmungslogik sollte ein Verstehen einer einfachen Suche erlauben, die mit Hinweis auf Fig. 3 beschrieben werden wird.
- Der Ablauf der Suche kann am besten anhand besonderer, in Fig. 3a bis 3e gezeigter Beispiele erläutert werden. In diesen Figuren sind drei aufeinanderfolgende Zellen, mit c1, c&sub2; und c&sub3; bezeichnet, mit einem in dem eintreffenden Datenstrom zu suchenden Muster initialisiert (während der Initialisierungsphase). Im Beispiel ist das Suchmuster das Wort CAT. Die Musterregister der Zellen enthalten die Buchstaben C, A bzw. T. Das Toleranzregister der ersten Zelle (der Zelle c&sub1;) ist mit der gewünschten Übereinstimmungstoleranz initialisiert. Im Beispiel wird diese als "1" angenommen, was heißt, daß eine genaue Übereinstimmung gewünscht ist. Die Toleranzregister der anderen Zellen werden nicht verwendet.
- Nach der Initialisierung weisen die Zellen den folgenden Inhalt auf: Muster Maske Toleranz (Alle anderen Merker sind auf 0 gesetzt.)
- Ein spezielles Bit im Maskenmerker ist gesetzt, um eine Übereinstimmung unabhängig davon hervorzurufen, ob in den Daten Groß- oder Kleinbuchstaben auftreten. Dies ist durch den Buchstaben U angezeigt.
- Wenn ein Buchstabe C der ersten Zelle c&sub1; eingegeben wird, wird eine Übereinstimmung festgestellt und ein Übereinstimmungswert "1" wird zum Übereinstimmungsverzögerungsregister DM übertragen. Der Zweck des Verzögerungsregisters ist, die Übertragungsrate des Übereinstimmungswertes auf der Übereinstimmungsleitung mit der der Daten auf der Zeichenleitung in Einklang zu bringen. Für ein Suchmuster mit n Zeichen dauert es 2n Taktzyklen, eine n-Zeichen-Sequenz im Datenstrom vollständig durch das Suchmuster hindurchzureichen. Deshalb ist es erforderlich, um ein Übereinstimmungsergebnis vom Prozessor bereitzustellen, wenn das letzte Zeichen des Datenstroms ihn verläßt, daß die Werte auf der Übereinstimmungsleitung entlang der Leitung mit der halben Zeichentaktrate vorrücken. Das Verzögerungsregister an jeder Zellenstelle dient zur Behandlung dieser Zeittaktunterschiede. Eine andere Betrachtungsweise, um die Notwendigkeit der Verzögerung einzusehen, ist, die Anzahl von Taktzyklen zu betrachten, die zwischen dem Vergleich zweier benachbarter Zeichen auftreten müssen. Nach dem Vergleich der Zeichen C in Zelle c&sub1;, gezeigt in Zeile (b) von Fig. 3, müssen zwei Taktzyklen auftreten, bevor die Zeichen A für die Übereinstimmungserkennungszelle c&sub2; ausgerichtet sind, wie in Zeile (d) gezeigt.
- In Zeile (a) von Fig. 3 ist gezeigt, wie sich die Buchstaben CATX dem Suchmuster nähern. Die beiden Ziffern in jeder Zelle stellen die Übereinstimmungswerte im Register M bzw. dem Übereinstimmungsverzögerungsregister dar. Anfänglich betragen diese Werte alle 0. In Zeile (b) ist der Buchstabe C zur ersten Zelle c&sub1; vorgerückt, und eine "1" ist vom Toleranzregister in das Register M eingegeben worden. In Zeile (c) ist der Buchstabe C zur zweiten Zelle c&sub2; vorgerückt und der Buchstabe A befindet sich in der ersten Zelle c&sub1;. Weil in der vorhergehenden Zeile eine Übereinstimmung in der ersten Zelle c&sub1; aufgetreten ist, rückt ein Übereinstimmungswert "1" zum Verzögerungsregister in dieser Zelle vor. Beim nächsten Taktzyklus, in Zeile (d) gezeigt, wird die "1" vom Verzögerungsregister der ersten Zelle in das Register M der zweiten Zelle c&sub2; geschoben, wo das Datenzeichen A mit dem A des Suchmusters ausgerichtet ist. Beim nächsten Zyklus, in Zeile (e), rückt die "1" in das Verzögerungsregister der zweiten Zelle c&sub2; vor, weil vorher in dieser Zelle eine Übereinstimmung aufgetreten ist. Beim nächsten Zyklus, in Zeile (f), wird die "1" an das Register M der dritten Zelle c&sub3; geleitet, wo die Zeichen T nun übereinstimmen. In Zeile (g) bewegt sich die "1" zum Verzögerungsregister der dritten Zelle c&sub3;, wegen der vorherigen Übereinstimmung in dieser Zelle. Der abschließende Schritt ist in Zeile (h) gezeigt, in der der Übereinstimmungswert "1" das Suchmuster mit dem Buchstaben x verläßt, der dem im Datenstrom gefundenen Muster unmittelbar folgt. Man erkennt, daß der Übereinstimmungswert nur dann durch das Suchmuster von Zellen weitergeleitet wird, wenn in jeder aufeinanderfolgenden Zelle des Musters eine Übereinstimmung erkannt worden ist.
- Wenn ein Übereinstimmungswert größer als "1" bei dem ersten Zeichen des Suchmusters eingesetzt worden wäre, hätten ein oder mehrere Fehler im Datenstrom toleriert werden können. Beispielsweise würde, wenn ein Übereinstimmungswert "3" verwendet würde, CAT ein Ergebnis "3" hervorrufen, COT ein Ergebnis "2" und COP ein Ergebnis "1". Jeder Fehler dekrementiert den Übereinstimmungswert um "1". Bei einem Muster mit 3 Buchstaben müßten alle 3 Buchstaben fehlerhaft sein, um den Übereinstimmungswert auf Null zu verringern.
- Die bis jetzt beschriebene Übereinstimmungslogik vermag falsche Zeichen im Textstrom innerhalb der durch das Toleranzregister gesetzten Grenze zu tolerieren, aber ein fehlendes oder zusätzliches Zeichen hätte die Wirkung, daß die folgenden Zeichen nicht erkannt werden. Die Übereinstimmungslogik der Erfindung weist jedoch Mittel auf, um fehlende und zusätzliche Zeichen im Textstrom zu erkennen.
- Das grundlegende Konzept der Logik zur Behandlung fehlender oder zusätzlicher Zeichen ist, daß jede Zelle ständig annimmt, daß das gerade verglichene jeweilige Zeichen entweder korrekt, fehlend, zusätzlich oder fehlerhaft sein kann, und daß sie bei jedem Taktzyklus die "beste" Interpretation wählt, d. h., die Interpretation, die die wenigsten Fehler und den höchsten Übereinstimmungswert ergibt.
- Um ein fehlendes Zeichen zu behandeln, muß eine Zelle das Verzögerungsübereinstimmungsregister DM umgehen, so daß der Übereinstimmungswert gleichzeitig mit dem nächsten Zeichen im Textstrom an die nächste Zelle weitergeleitet wird. Jedoch wird der Übereinstimmungswert dekrementiert, weil ein fehlendes Zeichen einen Übereinstimmungsfehler bildet. Fig. 3b veranschaulicht dies. Das Muster ist CAT, mit einer Toleranz eines Fehlers, d. h., einem Toleranzwert 2. Der eintreffende Text ist CTX, wobei X das dem gewünschten Muster folgende Zeichen ist und der Buchstabe A fehlt. Das Zeichen C stimmt in Schritt (b) überein, wie in Fig. 3a, und hinterläßt einen Übereinstimmungswert 2 im Verzögerungsregister DM, den das nächste Zeichen in Schritt (c) in die nächste Zelle mitnimmt. Jedoch ist in diesem Beispiel T und nicht A das nächste Zeichen. T stimmt nicht überein, und normalerweise würde M dekrementiert und in DM gesichert, während das T in die T-Zelle mit einer 0 auf der Leitung M geschoben werden würde und somit der Übereinstimmungsfaden verloren wäre. Mit der Logik für fehlende und zusätzliche Zeichen nimmt jedoch die A-Zelle an, daß A fehlen könnte, so daß sie das Textzeichen T in die T-Zelle schiebt, zusammen mit dem Übereinstimmungswert M-1, d. h., 2-1=1, und das Register DM umgeht. Zu bemerken ist, daß DM wie vorher trotzdem auf 1 gesetzt wird. Jedoch geht dieser Faden zwei Schritte später bei Schritt (G) unter, während der Faden eines fehlenden Zeichens fortbesteht, weil T im Text mit der T-Zelle in Schritt (e) eine Übereinstimmung ergibt.
- Um ein zusätzliches Zeichen im Text zu behandeln, muß der Prozessor den Wert DM einen zusätzlichen Zyklus lang halten, um dem folgenden Musterzeichen Zeit zu geben, den Übereinstimmungswert "einzuholen". Jedoch wird der in DM gehaltene Übereinstimmungswert dekrementiert, weil das zusätzliche Zeichen einen Übereinstimmungsfehler bildet. Fig. 3c gibt ein Beispiel der Verarbeitung zusätzlicher Zeichen, bei dem das Muster CATS mit höchstens einem Fehler ist und der eintreffende Text CAXTS lautet. Normalerweise würde dieser Text nicht mit dem in den Zellen gespeicherten Muster übereinstimmen, weil das zusätzliche Zeichen X die Suche den Faden verlieren lassen würde. Jedoch wird durch die Logik für fehlende und zusätzliche Zeichen der Wert DM während eines zusätzlichen Zyklus in der A-Zelle festgehalten, so daß T bis zum Suchfaden aufholen kann. Daher stimmt, wie vorher, C bei Schritt (b) mit der C-Zelle überein und hinterläßt eine 2 in DM, die das A bei Schritt (d) in die A-Zelle mitführt. A stimmt auch überein und hinterläßt in DM eine 2, die vom nächsten Zeichen in die T-Zelle mitgeführt werden soll. Das nächste Zeichen, bei Schritt (f), ist nicht ein T, sondern ein X. Das X würde normalerweise den Wert 2 des Wertes DM in der A-Zelle tragen und einen Wert 0 zurücklassen. Jedoch wird, wenn die Logik für fehlende oder zusätzliche Zeichen freigegeben ist, der Wert 2 in DM einen Zyklus lang zurückgehalten und auf 1 dekrementiert, in Schritt (f), in der Erwartung, daß der Faden mit dem nächsten Zeichen nach dem X wiederaufgenommen werden kann. Tatsächlich ist das nächste Zeichen das gewünschte T, das dann während des Zyklus (g) den Wert 1 aus DM in die T-Zelle trägt und so den Faden wiederaufnimmt. Das T stimmt überein und hinterläßt beim Schritt (h) eine 1 in DM. Dann trägt S diese in die S-Zelle und ruft bei Schritt (i) eine Übereinstimmung hervor. Dieser Übereinstimmungswert verläßt das Muster mit dem nächsten Zeichen, bei Schritt (k), und ergibt ein Übereinstimmungsergebnis.
- Auf den ersten Blick scheint es, daß es bei jeder Zelle schwierig ist, zu entscheiden, ob das gegenwärtig verglichene Zeichen fehlt, zusätzlich, fehlerhaft oder richtig ist. Die Lösung ist, eine Logik vorzusehen, die alle diese Möglichkeiten gleichzeitig vorsieht, und dann das Ergebnis auszuwählen, das den höchsten Übereinstimmungswert ergibt. So kann der nächste Wert von DM in einem gegebenen Zyklus entweder von M stammen, wenn das Zeichen übereinstimmt, von M-1, wenn das Zeichen nicht übereinstimmt, oder von DM-1, wenn das letzte Zeichen sich als zusätzliches Zeichen herausstellt. DM wird dann auf den größeren Wert von DM-1 und M-k gesetzt, wobei k 1 ist, wenn keine Übereinstimmung auftritt, und sonst 0. Ähnlich kann der Ausgangsübereinstimmungswert Mo einer Zelle entweder DM sein, wenn das Muster ohne irgendwelche fehlende oder zusätzliche Zeichen übereinstimmt, oder M-1, wenn das Zeichen für die augenblickliche Zelle fehlt. Wieder wird Mo auf den größeren Wert von DM und M- 1 gesetzt. Dies wird vom Vergleicher 62 und dem MUX 52 in der Übereinstimmungslogik von Fig. 4b bewirkt.
- Im allgemeinen werden für eine genau übereinstimmende Zeichenkette 2e+1 aufeinanderfolgende Übereinstimmungen hervorgerufen, wobei e die Anzahl tolerierter Fehler ist, die um 1 geringer als der anfänglich auf die Übereinstimmungsleitung M gegebene Wert des Toleranzregisters ist. Beispielsweise ist in Fig. 3e das Muster CAT mit höchstens einem Fehler. Wenn CATX im Text auftritt, werden drei Übereinstimmungen erzeugt. Eine erste Übereinstimmung wird auf das A folgend erzeugt, denn CA ist CAT mit einem fehlenden Zeichen. Natürlich wird auf die genaue Übereinstimmung CAT folgend eine Übereinstimmung erzeugt. Dann wird eine dritte Übereinstimmung, dem X folgend, erzeugt, denn CATX ist CAT mit einem zusätzlichen Zeichen.
- Der Vollständigkeit halber veranschaulicht Fig. 3d, wie das Muster CAT mit höchstens einem Fehler mit dem Text CQT verglichen wird, d. h. den Fall eines falschen Zeichens. Wie in der Figur zu sehen ist, verschwinden die Fäden eines fehlenden und zusätzlichen Zeichens am Ende der Zeichenkette, und eine einzige Übereinstimmung wird, dem T folgend, erzeugt.
- Der Steuermerker für fehlende/zusätzliche Zeichen (ME control flag) gibt die Logik für fehlende/zusätzliche Zeichen in jeder Zelle frei. Wenn der Merker auf Null oder Aus steht, toleriert die Zelle keine fehlenden oder zusätzlichen Zeichen und verhält sich, als ob die Logik nicht vorhanden wäre.
- Die Übereinstimmungslogik, die die Funktion für fehlende Zeichen ausführt, weist einen nach Vorwärtspfad (feed-forward path) für das Signal My (den dekrementierten Übereinstimmungswert) zum Eingang "0" eines MUX 60 auf. Die Eingabe "1" des MUX 60 stammt vom Signal Mw (dem nicht-dekrementierten Wert M), und das Steuersignal für den MUX ist ein HYP genannter Merker, der für eine noch zu beschreibende besondere Trennungsfunktion verwendet wird. Normalerweise ist der Merker HYP 0, und der Eingang "0" ist so ausgewählt, um durch den MUX durchgeschaltet zu werden, dessen Ausgang Mr bezeichnet ist und mit dem Eingang "1" des MUX 62 verbunden ist. Das Signal Mr ist das Vorwärtssignal, das das Verzögerungsregister umgeht und von der Dekrementschaltung 40 dekrementiert worden ist. Das an den MUX 52 angelegte Steuersignal bestimmt, welcher Eingang gewählt werden soll, beruhend auf den Werten von Mr und dem Wert im Verzögerungsregister DM. Ein Vergleicher 62 erhält als Eingaben die Werte von Mr und DM und erzeugt als Ausgabe ein binäres Signal MrgtDM, das anzeigt, ob Mr größer als DM ist. Dieses Signal wird in einem UND-Gatter 64 mit einem ME bezeichneten Merker UND-ver-knüpft, der auf "1" gesetzt ist, um die Logik für fehlende/zusätzliche Zeichen freizugeben. Wenn Mr größer ist als der Wert DM ist, wird der Eingang "1" des MUX 52 gewählt, so daß der Umgehungspfad den Übereinstimmungswert der Ausgangsleitung Mo zuführt.
- Die die Verarbeitung zusätzlicher Zeichen ausführenden Elemente der Übereinstimmungslogik weisen einen weiteren MUX 66 auf, mit einem unmittelbar von der Ausgabe des Verzögerungsregisters versorgten Eingang "1", und einem Eingang "0", der aus derselben Quelle, jedoch durch eine Dekrementschaltung 68, versorgt wird. Der Ausgang dieses MUX, Mu bezeichnet, ist mit dem Eingang "0" eines MUX 50 verbunden. Die Steuerschaltung für diesen MUX weist einen Vergleicher 70, ein ODER-Gatter 72 und einen weiteren MUX 74 auf. Der Vergleicher 70 erzeugt eine Ausgabe logisch "1" nur dann, wenn Mz, die normale Eingabe an das Verzögerungsregister, größer als Mu, der vom Ausgang des Verzögerungsregisters rückgeführte übereinstimmungswert, ist. Dieses Signal wird mit dem negierten Merker ME ODER-verknüpft. Wie oben erläutert, ist der Merker ME auf "1" gesetzt, um die Logik für fehlende/zusätzliche Zeichen freizugeben. Deshalb ist, wenn ME 0 ist, die Ausgabe des ODER-Gatters 72 "1", und dieser Wert wird durch den MUX 74 geleitet, um den Eingang "1" des MUX 50 auszuwählen, so daß der Rückführungspfad für zusätzliche Zeichen nicht beachtet wird. Wenn ME "1" ist, muß Mz größer als Mu sein, damit derselbe Eingang von MUX 50 ausgewählt wird. Wenn Mu größer als oder gleich Mz ist, wird der den Wert Mu übertragende Rückführungspfad als Eingabe ausgewählt.
- Der Merker MBT, der für "muß-dort-sein" ("must-be-there") steht, wird eingesetzt, um den Übereinstimmungswert in einer Zelle zwangsweise auf Null zu setzen, statt ihn lediglich zu dekrementieren, wenn das Musterzeichen nicht an der erwarteten Stelle im Textstrom auftritt.
- Der Merker PASS wird eingesetzt, um durch Verwendung des MUX 54 zu ermöglichen, daß die Leitung M durchgängig (transparent) erscheint. Das Ausgangssignal Mo wird auf den Wert in M gesetzt, statt daß es vom Verzögerungsregister DM stammt.
- Der Merker CT (Zeichenübereinstimmung auf T - character match on T) erlaubt, die Vergleichslogik beim MUX 44 zu umgehen. Wenn CT gesetzt ("1") ist, betrachtet die Übereinstimmungslogik Tn, um zu entscheiden, ob eine Übereinstimmung besteht. Somit ist es möglich, komplexe Muster zu vergleichen, den sich ergebenden Übereinstimmungswert auf einer Leitung T zu sichern und ihn dann später zur wiederholten Verwendung in anderen Mustern zurückzuholen, bei einem Aufwand von nur einer Zelle pro Verwendung. Dies ist besonders zum Vergleichen nicht-alphabetischer Zeichen mit geringem Aufwand hilfreich, weil man im allgemeinen Segmente finden möchte, die an ihren Anfängen und Enden durch nicht-alphabetische Zeichen begrenzt sind. Der Einsatz des Merkers CT verringert die für diese Suchart erforderliche Anzahl von Zellen beträchtlich.
- Der Merker HYP wird eingesetzt, um die besondere Trennstrich- Behandlungsfunktion des Prozessors freizugeben. Typischerweise können Wörter im Text durch ein Trennstrich-Zeichen unterbrochen sein, auf das eine Anzahl Leerzeichen und "Neue Zeile"- oder "Neue Seite"-Zeichen folgt. Wörter mit Trennstrich sind ohne besondere Verarbeitung schwierig zu erkennen, weil man eine Suchanfrage zusammenstellen müßte, die alle möglichen Trennalternativen einschließt. Eine HYP-Funktionszelle wird an jeder Stelle in einem Wort eingefügt, an der ein Trennstrich auftreten kann. Normalerweise leitet eine HYP-Zelle einfach den Übereinstimmungswert in M an Mo weiter und wirkt so als eine durchgängige Zelle. Dies wird vom MUX 60 bewirkt. Das Musterregister ist auf ein Trennstrich-Zeichen gesetzt, typischerweise "-", aber möglicherweise ein anderes Zeichen. Tn ist vorher so gesetzt worden, daß es mit nicht druckenden Zeichen ("white space characters"), die auf einen Trennstrich folgen können, beispielsweise "Leerraum", "Tabulator", "Neue Zeile" oder "Neue Seite", eine Übereinstimmung ergibt. Wenn ein Trennstrich- Zeichen eine Übereinstimmung ergibt, geht die Zelle in einen Modus über, in dem DM so lange auf dem gegenwärtigen Wert gehalten wird, wie der Wert aus Tn 1 ist, d. h., so lange, wie lediglich nichtdruckende Zeichen dem Trennstrich folgen. Immer wenn ein druckendes Zeichen eintrifft, wird DM dekrementiert. Dies wird vom MUX 66 bewirkt. Im Ergebnis wird ein ein Wort unterbrechender Trennstrich überbrückt, und die Daten über fehlende/zusätzliche Zeichen werden nicht beeinträchtigt.
- Die Akkumulatorleitung oder Leitung A wird verwendet, um Suchergebnisse auf unterschiedliche Arten zu verknüpfen. Wie in Fig. 4c gezeigt, weist die Akkumulatorlogik ein Ein-Bit-Akkumulatorregister A auf, einen MUX 80 mit acht Eingängen, um einen Operand zum Verknüpfen mit dem Wert des Registers A auszuwählen, und einen MUX 82 mit vier Eingängen, um eine logische Funktion festzulegen, die auf dem Inhalt des Registers A und dem gewählten Operand auszuführen ist. Weiter gibt es ein Verzögerungsakkumulatorregister DA, das den vorher im Register A gespeicherten Wert enthält.
- Der MUX 80 wird von einem OS(3) bezeichneten Drei-Bit-Merker zur Auswahl des Operanden gesteuert. Grundsätzlich kann die Akkumulatorlogik irgendeine ausgewählte logische Funktion auf irgendeinem ausgewählten Operanden und dem auf der Leitung A eintreffenden Wert ausführen. Unter den zur Auswahl bereitstehenden Operanden sind: ein Signal, das anzeigt, daß das Übereinstimmungsregister größer als Null ist (Mgt0); zwei von einem Zähler K in der Zelle stammende Signale, ein den Zustand irgendeiner ausgewählten Speicherleitung Tn anzeigendes Signal, ein eine Überlaufausgabe des Zählers K anzeigendes Signal, ein von dem Verzögerungsakkumulator DA stammendes Signal und ein von der Vergleichslogik stammendes Übereinstimmungssignal CeqP.
- Der ausgewählte Operand und das Signal des Registers A werden als das Zwei-Bit-Steuersignal an den MUX 82 angelegt. Die Dateneingänge des MUX sind vier binäre Signale, bezeichnet mit AF für Akkumulatorfunktion. Die Signale AF legen die logische Funktion fest, die auf den zwei Steuersignaleingängen ausgeführt werden soll. Im Ergebnis bilden die Signale AF eine Wahrheitstafel der sich beim Anwenden der gewünschten Funktion auf die zwei Steuersignaleingänge ergebenden Ergebnisse. Ein einfaches Beispiel wird das verdeutlichen.
- Angenommen, der Inhalt des Registers A soll mit einem von der Bedingung, daß die Übereinstimmungsleitung größer als Null ist, stammenden Signal logisch UND-verknüpft werden. Der Merker OS wird so gesetzt, daß der Eingang Mgt0 des MUX 80 als der gewünschte Operand ausgewählt wird. Die Wahrheitstabelle für die gewünschte UND-Funktion ist derart, daß die Funktion A UND der Operand in allen Fällen "0" ergibt, außer wenn sowohl A als auch der Operand "1" sind. Daher sind die an die Eingänge AF angelegten Werte 0001. Die Ausgabe des MUX 82, d. h., das Signal Ao, ist "0", wenn die Eingaben (A und Operand) "00", "01" oder "10" sind, aber sie ist "1", wenn die Eingaben "11" sind. Andere logische Verknüpfungen des Registers A und eines ausgewählten Operanden können durch geeignete Auswahl der A-Funktionssignale AF bereitgestellt werden. Auf diese Weise kann die Leitung A verwendet werden, um Ergebnisse von der Leitung M, von anderen Leitungen und auch vom gegenwärtigen Übereinstimmungssignal zu verknüpfen, wobei die Signale den Zustand des Zählers, ein Übertragssignal des Zählers und das verzögerte Signal A, nämlich DA, bezeichnen.
- Das Verzögerungsakkumulatorregister DA wird von einer Logik geladen, die nur allgemein durch Bezugszeichen 84 bezeichnet ist, und deren Zweck die Initialisierungsvorgänge betrifft. Zwei UND-Gatter 86 sind angeschlossen, um Eingaben sowohl vom Register A als auch dem Register DA zu erhalten, und um zwei Ausgangssignale zu erzeugen, von denen eines anzeigt, wenn das Register A von "0" nach "1" übergeht, und das andere anzeigt, wenn das Register A von "1" nach "0" übergeht. Diese Signale werden in der Inkrement- und Dekrementlogik verwendet, die im Zusammenhang mit Teilmengensuchen beschrieben wird.
- Wie in Fig. 4d gezeigt, wird die Zählerlogik eingesetzt, um den Betrieb eines Zählers K(8) in jeder der Zellen zu steuern. Grundsätzlich wird der Zähler mit einem in einem Längenregister LEN gespeicherten Wert geladen, wenn ein von einem Zählerladequellen-Merker (CLS - counter load source) gewähltes binäres Signal einen Wert "1" hat. Weiter wird der Zähler entsprechend der Bedingung einer Dekrementquelle, mit DEC bezeichnet, inkrementiert oder dekrementiert. Der gegenwärtig im Zähler gespeicherte Wert ist verfügbar, um als Bedingung für verschiedene in der Zelle getroffene Entscheidungen zu dienen. Insbesondere wird das Laden des Zählers von einem MUX 90 mit acht Eingängen gesteuert, der ein Drei-Bit-Steuersignal CLS aufweist, um die Ladequelle aus den acht Eingängen auszuwählen. Die möglichen, das Laden des Zählers veranlassenden Bedingungen sind: Übereinstimmungsregister größer als Null (Mgt0), Leitung L ist "1", Leitung A ist "1", eine "1" auf einer ausgewählten Allzweckleitung Tn und drei von Verknüpfungen anderer Signale abgeleitete zusammengesetzte Ladesignale. Auch eine logische "0" kann als Eingabe an den MUX 90 gewählt werden, um ein Laden des Zählers unter allen Umständen zu verhindern.
- Das Auswählen einer Bedingung zum Inkrementieren oder Dekrementieren des Zählers wird auf ähnliche Weise durchgeführt, wobei MUX 96, gesteuert von einem DEC bezeichneten Drei-Bit-Signal, eingesetzt wird. Die zum Steuern des Zählers K eingesetzten möglichen Bedingungen sind: Eine "1" auf der Leitung A, eine Übereinstimmungsleitung größer als Null, eine "1" auf irgendeiner ausgewählten Allzweckleitung Tn, eine "1" auf der Leitung L oder eine "1" auf der Leitung D. Eine feste "1" oder eine feste "0" können als Eingabe gewählt werden, um ein Wechseln des Zählers sicherzustellen oder auszuschließen.
- Die acht Zählerbits werden logisch verknüpft, um verschiedene Bedingungen anzeigende Signale bereitzustellen, wie beispielsweise K ist gleich Null, ist gleich Eins oder minus Eins, kleiner als Null, kleiner als oder gleich Null usw. Diese Bedingungen werden ihrerseits mit anderen Signalen verknüpft, um die Signale KPeq0 und KPIt0 zu erzeugen, was für "K' ist gleich Null" ("K prime equal to zero") und "K' kleiner als Null" ("K prime less than zero") steht, wobei K' der Zustand ist, den der Zähler im nächsten Taktzyklus einnehmen wird.
- Diese in Fig. 4e gezeigte Logik wird eingesetzt, um die Bedingungen auf der Leitung I und der Leitung D des Prozessors zu steuern. Eingabesignale Ii und Di treffen auf den Leitungen I und D ein und sind mit dem Inkrementregister I bzw. dem Dekrementregister D verbunden. Die allgemein mit dem Bezugszeichen 100 bezeichnete Logik erhält von der Akkumulatorlogik Signale A01 und A10, die positive bzw. negative Übergänge des Wertes auf der Leitung A anzeigen, und erzeugt entsprechende Inkrement- und Dekrementsignale zur weiteren Verarbeitung in der Inkrement- und Dekrementlogik. Die allgemein mit dem Bezugszeichen 102 bezeichnete Logik ist eine Logik zum Vermeiden von Kollisionen, deren Notwendigkeit aus der Beschreibung von Suchen nach Teilmengen von Suchbegriffen deutlich hervorgehen wird.
- Grundsätzlich ist die Hauptfunktion der Inkrement- und Dekrementlogik, Signale zu übertragen, die Übergänge im Zustand des Registers A anzeigen. Wie man sehen wird, ist diese Funktion beim Ausführen von Suchen, bei denen Teilmengen von Suchbegriffen gefunden werden, nützlich. Die Logik 102 zum Vermeiden von Kollisionen ist wegen des Problems erforderlich, das auftreten kann, wenn ein Übergang im Register A einer Zelle nicht auf der Leitung I oder D aufgenommen werden kann, weil die Leitung bereits ein von ihrem Eingang stammendes Signal "1" führt. In einem solchen Fall speichert die Logik 102 die Übergangsinformation in einem der Register IP und DP, für "anstehendes Inkrement" ("increment pending") und "anstehendes Dekrement" ("decrement pending"), von wo sie später auf die Leitung I oder D übertragen wird, wenn keine Kollision mit auf den Eingängen Ii oder Di eintreffenden Daten stattfindet.
- Wie in Fig. 4f gezeigt, gibt es zwölf durch die Zellen des Suchprozessors laufende und sie verbindende Allzweckleitungen, bezeichnet mit Tn. Sie werden zum Speichern von Zwischen-Übereinstimmungsergebnissen in zwölf entsprechenden Ein-Bit-Registern T4 bis T15 eingesetzt. Jede Zelle enthält Logik zum Aus lesen eines ausgewählten Registers der Allzweckregister und Logik zum Schreiben auf eine ausgewählte Leitung der Allzweckleitungen. Die Leselogik weist einen MUX 104 mit sechzehn Eingängen auf, mit zwölf von den Ausgängen der zwölf Allzweckregister versorgten Eingabeleitungen und vier anderen besonderen und nützlichen Eingängen. Die vier anderen Eingänge stammen vom Register F, vom Register L und von einer logischen "1" und einer logischen "0". Vier Adressleitungen ADR steuern den MUX 104 und bewirken eine Auswahl eines der sechzehn Eingänge, wobei der Ausgang mit Tn bezeichnet und für eine Anzahl verschiedener Zwecke verfügbar ist, wie beispielsweise, das Laden des Toleranzregisters auszulösen oder in der Akkumulatorlogik als ein Operand zu wirken.
- Ein Adreßdecoder 106 weist einen programmierbaren Vier-Bit- Adreßmerker ADR auf, der einen von sechzehn Ausgängen anwählt und eingesetzt wird, um eine von vierzehn Leitungen für die Datenausgabe auszuwählen. Die vierzehn Leitungen sind die zwölf Allzweckleitungen T4 bis T15 und die Leitungen F und L. Zwei der Ausgänge des Decoders 106 werden nicht verwendet. Jeder der vierzehn Ausgänge des Decoders 106 ist als Steuereingang mit einem entsprechenden MUX von vierzehn MUX 108 verbunden. Der Eingang "0" jedes der MUX 108 stammt unmittelbar aus dem entsprechenden Register. Die Eingänge "1" werden von einer gemeinsamen Neue-Daten-Leitung 110 versorgt, die vom Ausgang eines MUX 112 mit acht Eingängen stammt, der einen drei Bit breiten Steuereingang aufweist, welcher mit WRS, für Schreibquelle ("write source"), bezeichnet ist. Dieser MUX 112 ermöglicht es, eine Datenquelle zum Schreiben auf eine ausgewählte Ausgangsleitung auszuwählen. Die zur Wahl stehenden Quellen umfassen: Die Leitung Tn vom MUX 104, das Register T0 unmittelbar, die Register A, I, D und L, das Übertragsignal K und das Signal Mgt0 (Übereinstimmungswert größer als Null - match value greater than zero).
- In jeder Zelle ist es möglich, diese Logik einzusetzen, um von einem angegebenen Allzweckregister zu lesen und um, in der gleichen Zelle, von einer ausgewählten Datenquelle in dasselbe Allzweckregister zu schreiben. Die die Allzweckregister steuernde Logik stellt eine höchst vielseitige Anordnung zum Handhaben von Übereinstimmungswerten und anderen Daten in der erfindungsgemäßen Zellenstruktur bereit. Übereinstimmungswerte können in verschachtelten Komplexitätsstufen gespeichert und abgerufen werden, und die Behandlung der gemeinsam eingesetzten Leitungen F und L mit derselben Logik vereinfacht viele der Suchfunktionen.
- Die in den vorherigen Abschnitten beschriebene Hardware vermag in vielen verschiedenen Funktionsweisen zu arbeiten, die, wenn sie verknüpft und rekursiv verschachtelt werden, viele verschiedene Suchfunktionen ergeben. Jedoch können, zum Zwecke der Erläuterung, die Suchfunktionen hinsichtlich ihrer allgemeineren Eigenschaften diskutiert werden. Die einfache Suche mit einer einfachen Zeichenkette ist schon diskutiert worden und wird in Form eines Schaubilds zusammengefaßt. Die nächste Komplexitätsstufe ist die wahlweise Zeichenkette, die ähnlich dem einfachen Fall ist, aber nach Alternativmustern sucht, wie beispielsweise CAT oder DOG im selben Textstrom.
- Die Komplexität wird weiter erhöht, wenn das Suchen in Segmenten oder Textfenstern ausgeführt werden soll. Ein Fenster ist irgendein Textsegment, das durch ein Muster an seinen Grenzen festgelegt ist, wie beispielsweise ein Satz, ein Absatz, ein Dokument usw. Wenn man nach allen Musterübereinstimmungen innerhalb beispielsweise eines Satzes sucht, ist dies ein Beispiel eines "festen" Fensters. Die Suche kann sein, alle Übereinstimmungen von CAT und DOG in einem einzigen Satz zu finden. Der Suchprozessor würde dann jeden Satz auf die Anwesenheit des gewünschten Suchmusters untersuchen, und würde Übereinstimmungssignale zur Ausgabe aus dem Prozessor in Gleichtakt mit dem Textstrom erzeugen.
- Ein Gleitfenster ist eines, das beim Suchen nach den gewünschten Musterübereinstimmungen am Textstrom entlang "gleitet". Zum Beispiel sei jedes Auftreten von CAT und DOG in drei aufeinanderfolgenden Sätzen zu finden. Die Sätze, in denen eine Übereinstimmung gefunden wird, könnten die Sätze 1-3, 2-4, 3-6 oder irgendein anderes Textsegment mit drei Sätzen sein, was zur Erklärung dient, warum die Segmente als "gleitend" bezeichnet werden.
- Ein weiteres optionales Kennzeichen von Suchfunktionen ist, daß sie einfache Aufzählungsbedingungen enthalten, wie beispielsweise:
- "mindestens 1 CAT" und "höchstens 0 DOG"
- oder auch komplexere Aufzählungsbedingungen, wie beispielsweise:
- "mindestens 3 CAT" und "höchstens 2 DOG".
- Ein weiteres optionales Kennzeichen betrifft das Suchen nach einer Teilmenge von Suchbegriffen. Beispielsweise ist das Finden von mindestens zwei Begriffen aus CAT, DOG und MOUSE in einem angegebenen Fenster, fest oder gleitend, eine einfache Teilmengensuche, bei der das Auffinden jedes Begriffs auf eine einfache Aufzählung von mindestens 1 oder höchstens 0 beschränkt ist. Eine komplexe Teilmengensuche betrifft Begriffe wie:
- "in 5 Sätzen (mindestens 2 (mindestens 3 CAT, mindestens 4 DOG, höchstens 1 MOUSE))".
- Zu bemerken ist, daß dies nicht nur komplexe Aufzählungsbegriffe beinhaltet, sondern auch zwei verschachtelte Komplexitätsstufen.
- Ein weiteres optionales Kennzeichen ist das Auftreten beliebiger Boole'scher Ausdrücke in der Suchangabe, wie beispielsweise:
- (CAT und DOG) oder (KITTEN und PUPPY).
- Im erfindungsgemäßen Suchprozessor können diese Kennzeichen in verschiedenen Zusammenstellungen und in verschiedenen Verschachtelungs- oder Rekursionsstufen auftreten. Eine Diskussion aller möglichen Zusammenstellungen wäre unpraktisch, aber Beispiele der Suchfunktionskennzeichen werden nun gegeben.
- Jede der Fig. 5a bis 15a wird von Mikrocode-Auflistungen begleitet, die die entsprechenden Einstellungen der programmierbaren Merker in allen Zellen des Suchmusters angeben. Die verwendete Vereinbarung ist, daß, wenn ein Merker ein Einzelbit- Merker ist, nur sein Name genannt wird, wie bei LT. Dies heißt, daß der Merker auf "1" gesetzt ist. Für Mehrbit-Merker ist die Einstellung des Merkers angegeben, wie bei AF=6. Alle nicht genannten Merker werden als Null angenommen.
- Ein Beispiel der einfachen Zeichenkettensuche ist in der Diskussion von Fig. 3 gegeben worden, in der Übereinstimmungssignale für das Suchmuster CAT erzeugt wurden. Fig. 5 zeigt diese Suche in Form eines Schaubilds. Die Buchstaben C, A, T bedeuten, daß getrennte Zellen für jedes Musterzeichen bestehen, und der Buchstabe M links im Diagramm kennzeichnet die Leitung M, die die einzige für die einfache Suche benötigte Leitung ist. Die Ziffer "1" unter der C-Zelle kennzeichnet, daß eine Toleranz 1 in das Register M dieser Zelle geladen ist.
- Ohne den Begriff der Fenster einzuführen, kann die einfache Zeichenkettensuche hinsichtlich ihrer Komplexität nicht vernünftig erweitert werden, außer indem der Begriff der Alternative, wie im nächsten Beispiel diskutiert, hinzugefügt wird. Es macht wenig Sinn, beispielsweise eine einfache Suche im gesamten Textstrom nach dem Muster CAT und nicht DOG auszuführen. Auch der Suchbegriff CAT und DOG hat wenig praktischen Wert, wenn er auf den gesamten Textstrom einer großen Datenbank angewendet wird und nicht auf ein vordefiniertes Textsegment beschränkt ist, beispielsweise auf einen Satz oder mehrere aufeinanderfolgende Wörter.
- Das in Fig. 6 gezeigte Beispiel betrifft die Alternativsuche CAT oder DOG oder MOUSE. Diese Suche bezieht die Leitung M und die Leitung A ein, und die die Suchbegriffe trennenden senkrechten Linien zeigen die Alternative an, d. h. die logische Funktion ODER. Wieder wird ein Übereinstimmungswert "1" bei der C-Zelle des Begriffs CAT auf die Leitung M gelegt. Beim Ende des Begriffs CAT wird der Übereinstimmungswert der Leitung M auf die Leitung A übertragen, indem das Signal Mgt0 durch den MUX 80 der Akkumulatorlogik (Fig. 4c) ausgewählt wird, und indem die A-Funktionsbits AF gewählt werden, um das Signal Mgt0 zur Ausgabe auf die Leitung A zu kopieren. Wie man sich erinnern wird, sorgt die Akkumulatorlogik für eine logische Verknüpfung irgendeines ausgewählten Operanden mit dem Wert des Registers A der Zelle. In diesem Fall ist der ausgewählte Operand das einen Übereinstimmungswert ungleich Null anzeigende Signal Mgt0, und die in den Bits AF ausgewählte logische Funktion stellt sicher, daß der Wert Mgt0 unmittelbar an den A- Ausgang Ao übertragen wird, ohne den Wert im Register A zu berücksichtigen. Somit werden die Bits AF auf die Werte 0101 initialisiert, und das Ausgangssignal Ao ist nur dann "1", wenn der Operand Mgt0 "1" ist. Die Übereinstimmungsleitung wird bei Beginn des Ausdrucks DOG wieder auf "1" zurückgesetzt, indem ein Toleranzwert "1" in die D-Zelle von DOG geladen wird. Beim Ende des Begriffs DOG wird die Übereinstimmungsleitung mit der Leitung A ODER-verknüpft. Dies wird wiederum durch eine geeignete Einstellung der Akkumulatorlogik erzielt. Genauer wird das Signal Mgt0 wieder als Operand ausgewählt, und die Wahrheitstabelle der ODER-Funktion wird in die Bits AF in der Akkumulatorlogik programmiert. Genauer werden die Bits AF auf die Werte 0111 initialisiert, so daß die Ausgabe Ao "1" ist, wenn entweder A oder Mgt0 oder beide eine "1" aufweisen.
- Der gleiche Vorgang wird für den Suchbegriff MOUSE wiederholt, wobei der Übereinstimmungswert von MOUSE mit denen von CAT und DOG auf der Leitung A ODER-verknüpft wird, und die Leitung A dann das gewünschte Suchergebnis überträgt. Die logischen ODER- Verknüpfungen können mit anderen Zellen verbunden werden, außer bei der letzten Zelle in der Alternativenkette. Daher ist die Anzahl der benötigten Zellen gleich der Gesamtanzahl von Zeichen plus eins.
- Ein komplexeres Beispiel einer einfachen Zeichenkettensuche mit Alternativen ist in Fig. 7 gezeigt. Die Suche ist so aufgebaut, daß sie Übereinstimmungen für die Wörter "alternatively", "alternatingly" und "alternately" findet. Der Übereinstimmungswert der gemeinsamen Wurzel "alterna" wird auf der Leitung L gehalten, die verwendet wird, um ein Laden der Leitung M mit einem Übereinstimmungswert "1" beim Beginn jedes der Ausdrücke "tive", "ting" und "te" zu veranlassen. Die Ergebnisse dieser Suchbegriffe werden auf der Leitung A ODER-verknüpft, und die Ausgabe der drei ODER-Verknüpfungen wird verwendet, um die Leitung M nochmals zu laden, um nach dem Begriff "ly" zu suchen. Komplexere Verschachtelungsstufen sind natürlich möglich.
- Fig. 8 zeigt einen einfachen Fall, bei dem die Suche nach CAT und nicht DOG innerhalb eines Satzes erfolgt. Der erste Teil einer Suche in einem festen Fenster ist, Fenstergrenzen zu finden. Im Fall eines Satzfenstes sind die Grenzen ein Punkt, ein Fragezeichen oder ein Ausrufezeichen. Die Suche nach diesen Zeichen in der Alternative wird in gleicher Weise wie bei der einfachen Alternativensuche ausgeführt. Die Ergebnisse werden auf der Leitung A ODER-verknüpft. Dann werden die Ergebnisse der Satzerkennung auf die Ladeleitung L übertragen, die dann eingesetzt wird, um das Laden eines Zählerwertes am Ende jedes der Suchbegriffe CAT und DOG auszulösen. In die die Suchbegriffe beginnenden Zeichenzellen sind Übereinstimmungswerte geladen, und ein Übereinstimmungswert wird auf der Leitung M erzeugt, wenn eine Übereinstimmung festgestellt wird. Dieser Übereinstimmungswert wird, wenn er größer als Null ist, verwendet, um den Zähler in der dem Suchbegriff folgenden Zelle zu dekrementieren. Grundsätzlich wird dies bewirkt, indem die Zählerlogik initialisiert wird, wobei ein Merker DEC mit dem Wert 001 verwendet wird, um den Eingang Mgt0 des MUX 96 auszuwählen, dessen Ausgang verwendet wird, um den Zähler zu dekrementieren. Wenn beispielsweise ein CAT gefunden wird, wird der Zähler auf Null dekrementiert, und die Null-Bedingung des Zählers wird verwendet, um eine "1" auf die Leitung A anzulegen. Ein Strom von Werten "1" wird fortwährend auf die Leitung A angelegt, bis das nächste Satztrennzeichen gefunden ist. Im Fall des Suchbegriffs DOG wird die Erkennung eines Musters DOG negiert und dann mit der Leitung A UND-verknüpft, weil die geforderte Suche nicht DOG war. Die logiscne Verknüpfung von A und dem negierten Operanden wird durch eine geeignete Einstellung der A-Funktionsleitungen AF in der Akkumulatorlogik bewirkt.
- Ein komplexerer Fall mit einem festen Fenster ist in Fig. 9 gezeigt. Die Suche erfolgt nach mindestens 3 "CAT" und höchstens 1 "DOG" innerhalb eines Satzes. Dies funktioniert ähnlich wie der in Fig. 8 gezeigte Fall, außer daß die Zähler mit Werten größer als Null geladen werden, um die Aufzählungsbedingungen der Suche zu behandeln. Wie im vorherigen Beispiel wird das Laden der Zähler mittels eines Signals von der Ladeleitung L durchgeführt, die eine Anzeige von Satzgrenzen überträgt. Das Zählerlängenregister LEN(8) wird vorher auf den gewünschten Wert initialisiert, und das Vorhandensein einer "1" auf der Leitung L wird durch den MUX 90 erkannt, dessen Steuereingänge vom Merker CLS auf 000 gesetzt sind, um die Leitung L als die Signalquelle auszuwählen, die das Laden des Zählers vom Längenregister auslöst. Der "DOG"-Zähler wird dadurch auf "2" gesetzt, so daß das Erkennen zweier Begriffe "DOG" ein Abschalten der UND-verknüpften Ausgabe auf der Leitung A ergibt. Wenn mindestens drei Begriffe "CAT" erkannt werden, und höchstens ein Begriff "DOG", wird das Übereinstimmungsergebnis aus der UND- Verknüpfung auf der Leitung A einen Übereinstimmungswert "1" erzeugen.
- Bei diesen Suchen können die auf den Akkumulator gegebenen Ströme von Werten "1" sich auf einen relativ großen Abschnitt des Satzes erstrecken, auch wenn sie mit anderen Begriffen UND- verknüpft werden. Um die Anzahl von Übereinstimmungsbedingungen zu verringern, die vielleicht von einer einzigen Übereinstimmung der gewünschten Verknüpfung von Suchtermen erzeugt werden, kann die Leitung A mit den Satztrennsignalen auf Leitung L UND- verknüpft werden, um für das ganze Satzsegment ein einziges Ausgangsübereinstimmungssignal bereitzustellen. Diese UND- Funktion wird in der derselben Weise wie die anderen logischen Operationen in der Akkumulatorlogik ausgeführt. Die mehrfachen Übereinstimmungswerte erscheinen auf der Leitung A, und in einer getrennten Zelle wird die Akkumulatorlogik programmiert, die Leitung L als Operand auszuwählen, indem der Merker OS auf 100 initialisiert wird, und die UND-Funktion wird im MUX 82 ausgewählt, indem der Merker AF auf 0001 initialisiert wird.
- Fig. 10 zeigt eine einfache Teilmengensuche in einem festen Fenster. Wie in dem vorher erläuterten Fall eines festen Fensters werden Fenstergrenzen, beispielsweise Satzenden, durch eine Anzahl alternativer Zeichenmuster erkannt. Übereinstimmungswerte werden auf der Leitung M erzeugt und auf die Ladeleitung L übertragen. Die Ladeleitung wird verwendet, um einen Zähler mit einer "1" am Ende jedes zu erkennenden Suchbegriffs zu laden. Im Beispiel fordert die Suchanfrage, mindestens zwei Begriffe aus der Begriffsmenge CAT, DOG und MOUSE im festen Fenster zu finden. Wenn eine Übereinstimmung für einen der Begriffe erkannt wird, wird dessen Übereinstimmungsleitung verwendet, um den dem Begriff folgenden Zähler zu dekrementieren. Somit wird, wenn ein CAT erkannt wird, der entsprechende Zähler auf Null dekrementiert. Wenn mehr als ein CAT im selben Satz erkannt wird, zeigt der Zähler trotzdem Null an, weil alle Zähler von der Art sind, die bei Null "stehenbleibt", statt auf einen negativen Zählerstand von eins zu wechseln. Die Akkumulatorlogik in den Zellen am Ende jedes Suchbegriffs ist so eingestellt, daß sie, im Falle eines erkannten Zählerstands von Null, eine "1" auf die Leitung A gibt. Jeder dieser einen Zählerstand enthaltenden Zelle folgt eine als Differenzierer eingerichtete Zelle, d. h., sie überwacht den Zustand der Leitung A und erzeugt Signale, die Änderungen in der Leitung A von "0" auf "1" oder von "1" auf "0" anzeigen. Genauer erzeugt die Differenziererzelle eine "1" auf der Inkrementleitung I, wenn A von "0" auf "1" wechselt, und erzeugt eine "1" auf der Dekrementleitung D, wenn A von "1" auf "0" wechselt. Um eine Zelle zum Ausführen dieser Funktion einzurichten, ist nur erforderlich, einen Differenzierermerker DF zu setzen, um die den Inkrement- und Dekrementleitungen zugeordnete geeignete Logik freizugeben. Wenn die Leitung A auf "1" wechselt, weil einer der Suchbegriffe erkannt wurde, beispielsweise CAT, erzeugt die zugeordnete Differenziererzelle eine "1" auf der Inkrementleitung I. Die Leitung A, wie sie von der Differenziererzelle gesehen wird, bleibt auf "1", weil der Zähler auf Null bleibt, auch wenn weitere Begriffe CAT erkannt werden. Jedoch wird am Ende des Satzes oder des anderen festgelegten Fensters der Zähler auf "1" zurückgesetzt, und die Leitung A wird auf "0" fallen. Dies hat zur Folge, daß am Satzende eine "1" auf der Dekrementleitung erzeugt wird.
- Am Ende des Suchmusters wirkt eine einzige Zelle als Integrierer. Sie erhält die Leitungen I und D und weist einen beim Beginn der Suche anfänglich mit -n geladenen Zähler auf, wobei n die Anzahl von in der Teilmenge zu findenden Begriffen ist. Beispielsweise wird, wenn die Suche mindestens zwei Begriffe aus der Menge CAT, DOG und MOUSE finden soll, der Integrierer anfänglich mit -2 geladen. Wenn einer der Suchbegriffe gefunden ist und "1" auf der Leitung I erscheint, wird der Integriererzähler inkrementiert, d. h., er wird um Eins weniger negativ.
- Wenn irgendwelche zwei Begriffe der Suchbegriffe im Fenster gefunden sind, wird der Integriererzähler auf Null stehen. Seine Logik A ist so eingestellt, daß sie eine "1" auf die Leitung A gibt, wenn der Zähler K größer als oder gleich Null ist. Deshalb wird die Ausgabe der Suchanfrage auf der Leitung A gehalten.
- Es ist zu bemerken, daß der Zähler im Integrierer zwischen Sätzen nicht zurückgesetzt werden braucht, weil das Erkennen jedes Suchbegriffs nicht nur das Erzeugen einer "1" auf der Leitung I bewirkt, sondern auch das darauffolgende Erzeugen einer "1" auf der Leitung D am Satzende. Deshalb setzt sich der Zähler in der Integriererzelle von Fenster zu Fenster selbsttätig zurück. Aus praktischen Gründen wird jedoch der Integrierer am Ende eines
- festen Fensters wieder geladen, um mögliche Kollisionen zu vermeiden, die sich aus mehrfachen Dekrementsignalen am Ende eines Satzes ergeben.
- Weil zwei oder mehr der Suchbegriffe zu übereinstimmenden Zeiten gefunden werden könnten, könnten sich auf der Leitung I Kollisionen ergeben. Ein einfaches Beispiels einer eine Kollision ergebenden Suchanfrage wäre es, mindestens zwei Begriffe aus der Menge AT, HAT und THAT zu finden. Wenn das Wort THAT im Text auftreten würde, würde eine Übereinstimmung erzeugt werden, immer wenn das letzte T das Ende eines Suchbegriffs durchlaufen würde. Deshalb würde das letzte T dazu neigen, Übereinstimmungssignale aufzunehmen, wenn es das Suchmuster entlangläuft, und ein Konflikt der Verwendung der Leitung I würde sich ergeben. Eine solche Kollision würde das Nicht-Erkennen eines oder mehrerer der Begriffe und ein fehlerhaftes Suchergebnis bewirken. Um diese Möglichkeit zu minimieren, weist die Kollisionsvermeidungslogik in der Leitung D und die Logik der Leitung I einen Merker IP (I anstehend) und einen Merker DP (D anstehend) auf. Wenn die Bedingung auf der Leitung A das Erzeugen einer "1" auf der Leitung I erfordert, aber das Register I bereits einen Zustand "1" einnimmt, setzt die Kollisionsvermeidungslogik den Merker IP, der gesetzt bleibt, bis das Register I auf Null zurückkehrt, was eine freie "Zeitscheibe" zum Einfügen des anstehenden Zustands "1" auf der Leitung I anzeigt.
- Diese Logik bewirkt, daß einige der Signale I und D bei der Integriererzelle später ankommen, als sie würden, wenn es die Kollisionsmöglichkeit nicht gäbe. Die Alternative wäre, mehrere Leitungen für die Leitungen I und D zu verwenden, aber dies würde die Kosten der Zelle erhöhen, ohne ihre Funktionalität in irgendeiner praktischen Hinsicht zu verbessern. Suchen, die wahrscheinlich Kollisionen hervorrufen könnten, sind einfach genug zu erkennen und zu vermeiden, und die Kollisionsvermeidungslogik stellt eine vernünftige Lösung dar, ohne die Integrität der Suchergebnisse ernsthaft zu beeinträchtigen.
- Eine weitere Komplexitätsstufe wird der einfachen Suche im festen Fenster hinzugefügt, wenn die Suche nach aufgezählten Suchbegriffen erfolgt, wie beispielsweise: mindestens 2 von (mindestens 3 CAT, mindestens 4 DOG, höchstens 1 MOUSE), in einem Satz. Dasselbe Prinzip wird eingesetzt, außer daß der jedem Suchbegriff folgende Zähler mit einem Wert geladen wird, der größer als Eins sein kann. Auch werden die "höchstens" -Begriffe in der dem Suchbegriff folgenden Zählerzelle von einer anderen Logik behandelt, so daß das Erkennen des Übergangs auf der Leitung A invertiert ist. Auch wird für einen "höchstens"-Begriff der Zähler auf Eins mehr gesetzt, als der Begriff angibt, d. h., in diesem Beispiel auf "2". Dies führt zum Erzeugen einer "1" auf der Leitung D, wenn zwei oder mehr Begriffe MOUSE erkannt werden. Wie vorher wird eine "1" auf der Leitung I erzeugt, wenn die angegebene Anzahl von "mindestens"-Begriffen erkannt wird.
- Die Integriererzelle arbeitet wie vorher, um die Signale I und D zu integrieren, aber ihr Anfangswert wird zum Behandeln der "höchstens"-Begriffe gewählt. Im Beispiel ist der Begriff "höchstens 1" bereits erfüllt, bevor die Suche beginnt', so daß der Zählerstand in der Integriererzelle auf -1 initialisiert wird. Das Erfüllen eines der anderen Begriffe würde eine Übereinstimmung ergeben, aber wenn zwei Begriffe MOUSE in einem Satz gefunden würden, wäre der "höchstens"-Begriff nicht mehr erfüllt, und der Zählerstand des Integrierers würde durch eine "1" auf der Leitung D dekrementiert werden.
- Fig. 11 ist ein Beispiel einer einfachen Gleitfenstersuche, um in fünf Sätzen eine Verknüpfung von Suchbegriffen zu finden. Jeder Begriff in der einfachen Suche muß entweder ein Begriff "mindestens 1" oder ein Begriff "höchstens 0" sein, der einer Negation äquivalent ist. Beispielsweise ist CAT und DOG die in dem Schaubild von Fig. 11 gezeigte Suchanfrage. Man wird sich erinnern, daß bei der Suche mit festem Fenster die Segmentgrenzen verwendet werden, um Zähler zu laden, die dann durch Übereinstimmungsergebnisse auf der Leitung M dekrementiert werden. Bei der Gleitfenstersuche wird das Erkennen von Segmentgrenzen verwendet, um Zähler zu dekrementieren, die vom Erkennen eines Suchbegriffs auf der Leitung M geladen werden. Das Suchmuster weist jeden der Begriffe, gefolgt von einer Zählerzelle, auf. Beispielsweise wird beim Erkennen von CAT im Textstrom der sich ergebende Wert ungleich Null auf der Übereinstimmungsleitung verwendet, um den Zähler in der folgenden Zelle zu laden. Dann wird jede darauffolgende Segmentgrenze, die vorher auf der Leitung M erkannt und auf eine Leitung T übertragen wurde, verwendet, um den Zähler zu dekrementieren. Nach dem Durchlauf von fünf Sätzen wird der Zähler auf Null dekrementiert sein. Die Zählerwerte werden logisch verknüpft, indem ein Zählerstand ungleich Null erkannt wird und er mit anderen Zählerständen ungleich Null auf der Leitung A UND-verknüpft wird, indem eine geeignete Einstellung der Akkumulatorlogik eingesetzt wird. Dementsprechend wird die Leitung A verwendet, um das Ergebnis der Suche auszugeben.
- Weil die UND-Verknüpfung auch einer Anzahl von Suchbegriffen immer noch lange Übereinstimmungsketten des Prozessors erzeugen kann, ist es wünschenswert, die Anzahl von Übereinstimmungen zu verringern, indem das Ergebnis auf der Leitung A mit dem immer noch auf der Leitung T gesicherten Satzgrenzensignal UND-verknüpft wird. Für eine weitere Verringerung der Übereinstimmungen erzeugt die bevorzugte Ausführungsform der Erfindung nur eine Übereinstimmung für jeweils n Segmenttrennzeichen, wobei n die für das Gleitfenster festgelegte Breite ist.
- Die einfache Gleitfenstersuche wird sehr kompliziert, wenn Aufzählungsbegriffe in die Suchanfrage eingeführt werden, wie beispielsweise: mindestens 3 CAT und mindestens 3 DOG in fünf Sätzen. Die Suche ist in Fig. 12 durch ein Schaubild dargestellt.
- Wieder werden die Segmentgrenzen auf der Leitung M in einem vorhergehenden Abschnitt des Suchmusters erkannt, und die Segmentgrenzensignale werden auf einer Leitung T gesichert und zum Dekrementieren von Zählern verwendet. In dem komplexen Fall ist es jedoch notwendig, über die letzten n Vorkommnisse eines Suchbegriffes buchzuführen, wobei n die Anzahl im Ausdruck "mindestens n" ist. Beispielsweise muß, wenn die Suche nach mindestens drei CAT erfolgt, der Prozessor über die jüngsten drei Vorkommnisse des Begriffs CAT buchführen und bestimmen, ob sich alle drei in dem angegebenen Gleitfenster befanden. Dies erfordert drei Zähler für den Begriff CAT, und, wenn der andere Begriff mindestens drei DOG ist, muß es drei Zählerzellen für den Begriff DOG geben. Im allgemeinen Fall erfordert jeder Begriff "mindestens n" n Zähler zum Bestimmen, ob die jüngsten n Vorkommnisse des Begriffs in dem Gleitfenster aufgetreten sind.
- Fig. 12 zeigt die für n=3 benötigte Logik. Dem Muster CAT in der Zellenkette folgt ein erster zyklischer Zähler C1. Er dient zum Zählen der Anzahl von Vorkommnissen von CAT, und um bei jedem dritten Auftreten, wenn der zyklische Zähler Null ist, eine besondere Aktion auszuführen. Die besondere Aktion ist, die Übereinstimmungsleitung auf Null zu setzen, so daß der Übereinstimmungswert nicht weiter die Zellenpipeline entlang läuft, und eine "1" an die Leitung L anzulegen, und den zyklischen Zähler aus dem Register LEN wieder zu laden. Die anderen zwei Vorkommnisse in jeweils drei Übereinstimmungswerten für CAT werden die Übereinstimmungsleitungen entlang an die folgenden Zellen weitergeleitet und bewirken, daß der zyklische Zähler um Eins dekrementiert wird. Wenn die Leitung L den Wert "1" einnimmt, wird dies von einer ersten Fensterzählzelle W1, unmittelbar stromabwärts der Zelle C1, verwendet und führt dazu, daß der Zähler der Zelle W1 mit der Anzahl von Segmenten in einem Fenster geladen wird, in diesem Fall mit der Zahl +5. Bei jedem nachfolgenden Auftreten einer Segmentgrenze, als Signal auf der Leitung Ti angezeigt, wird der Zähler in W1 dekrementiert. Solange der Zähler ungleich Null bleibt, zeigt dies an, daß der von der Zelle C1 erkannte Ausdruck CAT im Gleitfenster aufgetreten ist.
- Als nächstes befindet sich in der Pipeline ein zweiter zyklischer Zähler C2, der dazu dient, jedes zweite Auftreten eines ihn erreichenden CAT zu erkennen, nachdem die Zelle C1 jedes dritte Auftreten entfernt hat. Dazu wird die Zelle C2 mit einem Zählerstand +1 geladen und auf Null heruntergezählt. Die Zelle C2 erkennt jedes zweite der verbleibenden Vorkommnisse von CAT und verarbeitet deshalb auch jedes dritte Auftreten der ursprünglichen Vorkommnisse von CAT. Wie bei Zelle C1 löscht die Zelle C2 die Leitung M, wenn eine der Zeichenketten CAT erkannt wird, und legt eine "1" an die Leitung L an, die in der nächsten Zelle W2 erkannt und verwendet wird, um den Zähler in dieser Zelle zu laden. Die Zelle W2 zählt auch Segmentgrenzen und bleibt solange ungleich Null, wie zumindest eine der erkannten Zeichenketten CAT in dem bezeichneten Fenster aufgetreten ist.
- Nachdem die Zellen C1 und C2 zwei von jeweils drei Übereinstimmungen des Begriffs CAT "herausgenommen" haben, durchläuft die verbleibende eine von jeweils drei Übereinstimmungen die letzte Zelle in der Sequenz, die ein dritter Fensterzähler W3 ist. Dieser Zähler wird unmittelbar von der Übereinstimmungsleitung geladen und von den Segmentgrenzensignalen auf der Leitung Ti dekrementiert. Wieder ist ein Zählerstand ungleich Null in der Zelle W3 vorhanden, solange eine erkannte Übereinstimmung in dem angegebenen Fenster aufgetreten ist. Die gewünschte Übereinstimmungsbedingung wird erhalten, indem die drei Zählerungleich-Null-Bedingungen der Zellen W1, W2 und W3 auf der Leitung A des Prozessors UND-verknüpft werden.
- Es ist lediglich erforderlich, die zyklischen Zähler einmal zu Beginn einer Suche zu initialisieren. Sie werden entweder auf Null zurückgesetzt oder durch die Leitung F vom Register LEN geladen.
- Mengensuchen können auch in einem Gleitfenster ausgeführt werden, indem die bei den Teilmengensuchen mit festem Fenster beschriebenen Differenzierer- und Integriererzellen eingesetzt werden.
- Ein verknüpftes Fenster ist eine generalisierte Form eines festen Fensters. In einem festen Fenster legt ein einziges Muster sowohl den Anfang als auch das Ende des Fensters fest. Es ist jedoch auch möglich, daß ein Fenster verschiedene Anfangs- und Endmuster aufweist. Fig. 13 veranschaulicht die Anfrage
- CAT {höchstens 10*} DOG
- wobei das Zeichen * mit jedem Textzeichen übereinstimmt. Dieses Muster stimmt mit jedem Auftreten von DOG überein, das auf ein Auftreten von CAT in den vorhergehenden zehn Zeichen folgt. In diesem Beispiel wird die Zeichenkette CAT verglichen und das Übereinstimmungsergebnis auf die Leitung L übertragen. Die dem Muster CAT folgende Zelle ist so initialisiert, daß alle Bits des Registers MASK auf "1" gesetzt sind, so daß sie mit jedem Zeichen im Text eine Übereinstimmung ergibt. Das Übereinstimmungsausgangssignal Mo ist deshalb immer "1". Die nächste Zelle in der Folge weist einen Zähler auf, der mit einem Zählerstand 11 (dezimal) geladen wird, wenn das Laden von einem Wert ungleich Null auf der Leitung L ausgelöst wird. Der Zähler wird von einem Wert ungleich Null auf der Leitung M dekrementiert. Nach dem Erkennen von CAT und dem Laden des Zählers wird ein Strom von Dekrementiersignalen am Zähler anliegen, weil der Ausgang der vorhergehenden Zelle immer "1" ist. Der Wert des Zählers wird von der nächstfolgenden Zelle überwacht, deren Akkumulatorlogik so initialisiert ist, daß eine Ausgabe "1" nur dann auf der Leitung A erzeugt wird, wenn der Zählerwert ungleich Null ist. Daher wird die Leitung A der dem Zähler folgenden Zelle einen Strom von zehn Werten "1" liefern, die auf das Erkennen der Zeichenkette CAT folgen. In der D-Zelle des Musters DOG wird das Toleranzregister nach dem Erkennen einer "1" auf der Leitung A geladen. Deshalb wird der Übereinstimmungswert während der zehn auf CAT folgenden Zeichen ständig geladen, und von dem gesamten Suchmuster wird als Ergebnis eine Übereinstimmung erzeugt werden, wenn eine Zeichenkette DOG erkannt wird.
- Diese Art der Suche ist auch als eine ""Wert egal"-Suche variabler Länge" bekannt. DOG stimmt nur dann überein, wenn der erste Buchstabe von DOG innerhalb von zehn Zeichen nach dem letzten Buchstaben von CAT auftritt. "Wert egal"-Suchen fester Länge können von derselben Vorrichtung behandelt werden. Beispielsweise stimmt das Muster
- CAT {mindestens 10 und höchstens 10*} DOG
- nur dann mit DOG überein, wenn ein CAT genau zehn Zeichen vor dem D von DOG übereinstimmte. Diese Suche ist in Fig. 14 veranschaulicht. Wie vorher wird CAT verglichen und das Ergebnis auf die Leitung L übertragen. Die immer übereinstimmende Zelle erzeugt einen Strom von Werten "1" auf der Leitung M, der verwendet wird, um das Laden zweier nachfolgender Zähler auszulösen. Der erste Zähler wird mit einem Zählerstand 10 geladen und von der Übereinstimmungsleitung dekrementiert und erzeugt ein Zählerstand-gleich-Null-Signal auf der Leitung A. Dies berechnet die Bedingung "mindestens 10". Der zweite Zähler wird mit einem Zählerstand 11 geladen und auch von der Leitung M dekrementiert. Sein Zählerstand-gleich-Null-Wert wird negiert und mit dem von dem ersten Zähler stammenden Wert der Leitung A UND- verknüpft. Der zweite Zähler erzeugt ein Signal "höchstens 10", und die logische UND-Verknüpfung der zwei Signale der Zählerzellen erzeugt, zehn Zeichen nach dem T in CAT, eine einzige "1". Diese Übereinstimmung wird verwendet, um das Laden eines Übereinstimmungswertes für die Suche nach DOG auszulösen. Deshalb stimmt DOG nur überein, wenn es genau zehn Zeichen nach dem Ende von CAT beginnt.
- Diese Technik ist beliebig erweiterbar, um jede Verknüpfung von Bereichen zu erlauben. Somit stimmt
- CAT {3 bis 4 oder 9 bis 12*} DOG
- nur dann mit DOG überein, wenn CAT 3, 4, 9, 10, 11 oder 12 Zeichen vorher eine Übereinstimmung ergibt.
- "Wert egal"-Zeichen variabler und fester Länge können auch mit einer ähnlichen Technik behandelt werden. Somit stimmt
- CAT {höchstens 10* und kein } DOG
- nur dann mit DOG überein, wenn ein CAT innerhalb der letzten zehn Zeichen eine Übereinstimmung ergeben hat und alle diese Zeichen Punkte sind. Das Muster bezeichnet eine Zelle, die mit allen Zeichen außer einem Punkt eine Übereinstimmung ergibt. Dies wird erreicht, indem das Musterregister auf einen Punkt gesetzt wird und der Merker IC oder "negierter Vergleich" gesetzt wird, um die Richtung des Vergleichs zu negieren. Somit sorgen verknüpfte Fenster für einen überaus vielseitigen Mechanismus zum Vergleichen einer Vielzahl von Musterarten, unter denen "Wert egal" -Muster fester und variabler Länge nur Sonderfälle sind.
- Eine Zellenanordnung eines Suchprozessors kann so eingestellt werden, daß Zähler benachbarter Zellen miteinander verbunden werden, um einen einzigen virtuellen Zähler mit N-mal so vielen Bits wie ein einziger Zähler zu bilden, der acht Bits hat, wobei N die Anzahl derartiger benachbarter Zellen ist. Diese erweiterten Zähler können in den meisten Fällen eingesetzt werden, bei denen ein Einzelzellenzähler eingesetzt wird. Die einzige Ausnahme sind die bei komplexen Gleitfenstern verwendeten zyklischen Zähler. Jedoch besteht dort in der Praxis wenig Bedarf für einen großen zyklischen Zähler.
- Der Mechanismus zum Erweitern von Zählern ist in Fig. 15a veranschaulicht. Dies ist ein 32 Bit breiter zusammengesetzter Zähler, der von einer Milliarde nach unten zählt und bei Null verbleibt, wobei er auf der Leitung A Werte "1" erzeugt, während er auf Null steht. Er wird von L geladen und von M dekrementiert.
- Der grundlegende Mechanismus ist, den ersten Zähler in der Kette die geringstwertigen acht Bits zählen zu lassen, den nächsten Zähler die nächsten acht Bits usw., wobei der letzte Zähler die höchstwertigen acht Bits behandelt. Das vom ersten Zähler stammende Übertragsbit wird auf die Leitung T7 geschrieben, indem der Merker WKC (schreibe Übertrag - write K carry) verwendet wird. Dieser Übertrag wird mit dem Signal M der nächsten Zählerstufe UND-verknüpft, um das Dekrementierungssignal für diese Zählerstufe zu ergeben, indem der Merker EXT (Zählererweiterung - counter extension) in dieser Stufe verwendet wird. Der Übertrag wird zur Verwendung durch die nächste Zählerstufe in der Kette wieder auf die Leitung T7 geschrieben. In jeder außer der letzten Zählerstufe ist der Merker WRAP gesetzt, was bewirkt, daß die Zähler bei Null "umschlagen", indem sie in der acht Bit breiten Zählerstufe von 0 auf -1 oder dezimal 255 zählen. Wenn die höchstwertige Zählerstufe Null erreicht, bleibt sie bei Null und erzeugt fortwährend Werte "1" auf der Leitung A, bis sie wieder geladen wird. Die geringerwertigen Zählerstufen zählen weiter, aber sie haben keine Auswirkungen auf die höchstwertige Stufe. Zu bemerken ist, daß die oberste Zählerstufe genau dann Null erreicht, wenn die unteren Stufen jeweils auf 255 umgeschlagen sind. Die oberste Stufe erreicht dann Null, wenn der Zähler insgesamt 28(N-1)W-1 erreicht, wobei N die Anzahl von Stufen im Zähler ist. Um dies auszugleichen, muß 2 8(N-1)-1 zu dem zusammengesetzten Register LEN hinzugezählt werden, so daß die richtige Anzahl gezählt worden ist, wenn die oberste Stufe Null erreicht. Ein ähnliches Verfahren kann für Gleitfensterzähler und Teilmengenzähler eingesetzt werden. Somit stellt die geringe Größe der Zählerregister des Prozessors in der Praxis keine Beschränkung der Leistungsfähigkeit des Prozessors dar, Suchvorgänge auszuführen, bei denen das Zählen mit großen Zahlen auftritt.
- Wie oben erwähnt, ist ein Ziel der Erfindung, einen Prozessor bereitzustellen, der eine große Anzahl Suchanfragen während eines einzigen Durchlauf s des Textstroms zu beantworten vermag. Dies wird mittels einer Ergebnispipeline vereinfacht, die zu der bereits im einzelnen beschriebenen Zellenpipeline parallel verläuft. Die Logik der Ergebnispipeline hat die folgenden günstigen Eigenschaften: a) Sie ist leicht zum Behandeln jeder Anzahl gleichzeitiger Suchanfragen erweiterbar. b) Sie behandelt Kollisionen auf optimale Weise, so daß unterschiedliche, mit demselben Zeichen eine Übereinstimmung ergebende Anfragen keine Kollision verursachen. c) Bis zu sechs Kollisionen hintereinander können ausgeglichen werden, ohne unrichtige Ergebnisse zu verursachen. Unter der Annahme, daß Übereinstimmungen einzeln (eine zu einem Zeitpunkt) und zufällig auftreten, ist das Risiko von mehr als sechs aufeinanderfolgenden Kollisionen überaus gering. Jedoch wird, wenn die Kollisionsvermeidung fehlschlägt, das Fehlschlagen immer erkannt. d) Sie benötigt ein Minimum an außerhalb der eigentlichen Zellenhardware angeordneter Logik, und die Hardware kann mit sehr hohen Geschwindigkeiten arbeiten.
- Die Ergebnispipeline, die als Schaubild in Fig. 16 gezeigt ist, ist sechzehn Bits breit. Ein Bit überträgt ein Platz-leer- Signal, drei Bits übertragen eine Ergebnismarke, noch zu erläutern, und die restlichen zwölf Bits werden eingesetzt, um eine Abgriffsstellenadresse zu übertragen, die die Quelle der in der Pipeline übertragenen Ergebnisse anzeigt.
- In der gegenwärtig bevorzugten Ausführungsform der Erfindung befindet sich jeweils nach sechzehn hintereinandergeschalteten Zellen eine Ergebnisabgriffsstelle, und jeweils acht dieser Abgriffsstellen sind mit einer einzigen Verzögerungsstufe der Ergebnispipeline verbunden. Dies heißt, daß die Ergebnispipeline, wenn sie mit derselben Rate wie die Zellenpipeline getaktet wird, Daten mit der 128-fachen Geschwindigkeit bewegt. Deshalb können bis zu acht Ergebnisse, von acht Ergebnisabgriffsstellen, um eine einzige Verzögerungsstufe oder einen einzigen Platz der Ergebnispipeline wetteifern.
- Die Arbeitsweise der Ergebnisabgriffsstellen ist in Fig. 17 dargestellt. Ein Übereinstimmungssignal von einer der Ergebnisabgriffsstellen, von denen es eine für jeweils sechzehn Zellen gibt, wird einer Vier-Bit-Zustandsmaschine 150 eingegeben. Die Zustandsmaschine 150 hat ein Vier-Bit-Zustandsregister 152, von dem ein Bit zum Speichern eines Anforderungssignals eingesetzt wird, und die übrigen drei Bits zum Speichern einer Ergebnismarke F eingesetzt werden. Wenn ein Übereinstimmungssignal von der Zellenpipeline eintrifft, wird eine Anforderung an eine Arbitrierungsschaltung 154 nach einem freien Platz in der Ergebnispipeline ausgeführt. Auch wird das Anforderungsbit des Zustandsregisters auf "1" gesetzt. Die drei Bits F sind anfänglich gleich Null. Die Arbitrierungsschaltung 154 erhält Anforderungen von bis zu acht Ergebnisabgriffsstellen und bestätigt nur zu jedem Zeitpunkt eine. Im Falle eines Konflikts wählt die Arbitrierungsschaltung die früheste Anforderung nach einem Platz aus und bestätigt sie zuerst. In jedem Fall bestätigt die Arbitrierungsschaltung für jeden Platz, der für sie in der Ergebnispipeline verfügbar ist, nur eine Anforderung.
- Wenn die Zustandsmaschine innerhalb des gegenwärtigen Taktzyklus kein Bestätigungssignal erhält, inkrementiert sie ihr drei Bit breites Feld F um eins und wartet weiter auf eine Bestätigung. Wenn im nächsten Taktzyklus eine solche erhalten wird, heißt dies, daß die Arbitrierungsschaltung die Anforderung auf die Ergebnispipeline setzen konnte, jedoch einen Taktzyklus, nachdem die Anforderung durchgeführt wurde. Die Zustandsmaschine inkrementiert den Zähler F weiterhin, solange keine Bestätigung empfangen wurde, und kann mit den drei Bits F ihres Zustandsregisters bis maximal sechs (110 binär) heraufzählen. Wenn die Anforderung sieben oder mehr Zyklen warten muß, wird der Zustand als Fehlerbedingung betrachtet. Überdies wird, wenn ein weiteres Übereinstimmungssignal von der Zellenpipeline eintrifft, während eine Anforderung noch bei der Arbitrierungsschaltung ansteht, ein Zählerstand von sieben in die Bits geschrieben, um einen nicht auflösbaren Konflikt anzuzeigen. Wenn eine Bestätigung eingeht, enthalten die auf die Ergebnispipeline gegebenen Daten den Zählerstand F als Ergebnismarke, die den Fehlergrad oder den Zeitversatz der Übereinstimmungsinformation anzeigt, und eine zwölf Bit breite Ergebnisabgriffsstellenadresse, um den Platz anzuzeigen, von dem ein Übereinstimmungssignal stammt.
- Die Ergebnispipelinestruktur erlaubt, bis zu Hunderten von Suchanfragen gleichzeitig mit einem geringen Risiko eines ernsten Fehlers zu verarbeiten. Die Struktur ist einfach und erlaubt trotzdem, Ergebnisse von vielen Ergebnisabgriffsstellen zu sammeln. Überdies ist die Möglichkeit eines von einer Ergebniskollision verursachten Fehlers statistisch überaus unwahrscheinlich. Jedenfalls können Fehler dieser Art in Kauf genommen werden und gegebenenfalls durch eine wiederholte Ausführung einer Suchanfrage behandelt werden.
- Das letzte zu betrachtende Thema ist der Mechanismus, durch den die Zellen im Suchprozessor anfänglich geladen werden, bevor eine Suche ausgeführt wird. Die genaue bei diesem Vorgang eingesetzte Technik wird nicht als Bestandteil der beanspruchten Erfindung betrachtet und wird deshalb nur allgemein erläutert. Grundsätzlich wird die Initialisierung ausgeführt, indem Initialisierungsdaten in die Zellenpipeline geschoben werden, indem sie unter Verwendung des "trans" bezeichneten Steuersignals als Schieberegister eingestellt wird. Dann werden, indem eine Kombination der "dump", I0 und I1 bezeichneten Steuersignale verwendet wird, die anfänglichen Datenwerte von den Registern der Zellenleitungen in die verschiedenen Register und Programmmerker der Zellen geschoben. Die Initialisierungsphase wird von drei Steuerleitungen gesteuert, bezeichnet "dump", I1 und I0. Die Zustände dieser Leitungen steuern die von dem Prozessor ausgeführte Funktion, wie im folgenden dargestellt ist: dump Funktion Suchmodus im Normalbetrieb Initialisierungsimpuls - Durchgang 1 Durchgang 2 Durchgang 3 auf die Datenpfadleitungen gemultiplexter interner Zustand Rücksetzen Dummyzelle Datenpfad Setzen Dummyzelle Datenpfad Durchgang 4
- Die folgende Tabelle zeigt den Zusammenhang zwischen den die Initialisierungsdaten empfangenden Datenleitungen und den Merkern oder Registern, in denen diese Daten während der Initialisierungsphase gespeichert werden. Weil die Anzahl interner Merker und Register die Anzahl von Datenleitungen übersteigt, werden vier Durchgänge benötigt, um alle Merker und Register zu initialisieren. Beispielsweise werden im ersten Durchgang die Musterregister-Bits PAT0 bis PAT7 über die Zeichenregister C0 bis C7 geladen. Datenleitungen Zu initialisierende Merker und Register Datenpfadregister Durchgang 1 (init1) Dump
- Mit der Funktion "dump" können, zu Diagnosezwecken, die internen Zustände verschiedener Register im Multiplex-Verfahren auf die Datenpfadleitungen gelegt werden.
- Obwohl die programmierbaren Zustandsregister und -merker in den Prozessorzellen mit irgendeinem verfügbaren Mittel programmiert werden können, um eine Suche einzuleiten, eignet sich die Prozessorstruktur problemlos für den Einsatz einer Compiler- Sprache, um die anfänglichen Einstellungen der Zellen anzugeben, beruhend auf einer Beschreibung der Suchanfrage, die in einer bedeutungstragenden Hochsprache erfolgen kann. Dies ist erzielt worden, aber wird nicht als Teil der hier beanspruchten Erfindung betrachtet.
- Aus der obigen Beschreibung beispielhafter Funktionen und der detaillierten Hardware-Strukturen der Erfindung erkennt man, daß der Suchprozessor in vielen verschiedenen Betriebsweisen betrieben werden kann, um viele verschiedene Suchformate und -funktionen bereitzustellen. Die Fähigkeit des Prozessors, fehlende, zusätzliche und fehlerhafte Zeichen zu behandeln, ist eines seiner wichtigsten Merkmale. Wenn dieses jedoch mit der Fähigkeit verbunden wird, einfache und komplexe Suchen in festen oder gleitenden Fenstern im Textstrom durchzuführen, wird deutlich, daß die Erfindung einen überaus leistungsfähigen Suchprozessor darstellt. Nicht nur kann er eine Vielzahl komplexer Suchfunktionen behandeln, einzeln oder kombiniert, sondern er vermag mit überaus hoher Geschwindigkeit betrieben zu werden, wobei die Zeichen durch den Prozessor mit einer Rate von ungefähr 15 Megahertz hindurchströmen.
- Man wird erkennen, daß, obwohl eine besondere Ausführungsform der Erfindung und einige besondere Beispiele ihrer Funktionen zum Zwecke der Veranschaulichung detailliert beschrieben worden sind, verschiedene Veränderungen durchgeführt werden können, ohne die Erfindung zu verlassen. Dementsprechend soll die Erfindung, außer durch die beigefügten Ansprüche, nicht beschränkt sein.
Claims (15)
1. Spezial-Suchprozessor mit:
mehreren hintereinandergeschalteten Zellen (20-22), von
denen jede ein Musterregister (PATT(8)) zum Speichern eines
Zeichens eines zu suchenden Musters aufweist, ein
Zeichenregister (C(8)) zum Speichern eines Zeichens eines zu
durchsuchenden Datenstroms, eine Übereinstimmungslogik (Fig. 4b) und
eine Vergleichslogik (Fig. 4a) mit einem Vergleicher zum
Erzeugen eines Zellenübereinstimmungssignals durch einen
Vergleich des im Zeichenregister gespeicherten Zeichens mit dem im
Musterregister gespeicherten Zeichen, und ein
Übereinstimmungsregister (M(3)) zum Speichern eines Übereinstimmungswertes, der
eine Übereinstimmung zwischen einem Suchmuster und dein
Datenstrom anzeigt, und zum Erkennen einer durch das
Zellenübereinstimmungssignal angezeigten Abweichung;
einer Einrichtung zum Hintereinanderschalten der
Zeichenregister der mehreren Zellen, um eine Zeichenleitung zu bilden;
einer Einrichtung zum Hintereinanderschalten der
Übereinstimmungsregister der mehreren Zellen, um eine
Übereinstimmungsleitung zu bilden;
einer Einrichtung zum Initialisieren der Zellen, so daß
diese das Suchmuster enthalten; und
einer Takteinrichtung, um den Datenstrom von Zelle zu Zelle
durch die Zeichenleitung zu leiten;
und wobei Zeichen im Suchmuster mit Zeichen im Datenstrom
sequentiell verglichen werden und Übereinstimmungswerte die
Übereinstimmungsleitung entlang synchron mit der Bewegung des
Datenstroms die Zeichenleitung entlang weitergeleitet werden,
um genaue und ungefähre Übereinstimmungen zwischen dem Suchmuster
und Zeichenketten im Datenstrom anzuzeigen, und wobei ungefähre
Übereinstimmungen falsche, fehlende oder zusätzliche Zeichen
einbeziehen;
dadurch gekennzeichnet, daß jede der Zellen aufweist:
ein Akkumulatorregister (A) zum Speichern eines von einem
Akkumulatorregister einer benachbarten Zelle abgeleiteten
Binärwertes, und
eine Akkumulatorlogik (Fig. 4c) zum Verändern eines im
Akkumulatorregister (A) enthaltenen Wertes zur Ausgabe an eine
nächste Zelle, indem das Akkumulatorregister mit einer
ausgewählten Bedingung der Zelle gemäß einer vorgewählten logischen
Funktion verknüpft wird;
und der Prozessor weiter aufweist:
eine Einrichtung zum Hintereinanderschalten der
Akkumulatorregister (A) der mehreren Zellen, um eine
hintereinandergeschaltete Akkumulatorleitung zu bilden; und
mehrere zusätzliche Register (T4-T15) in jeder Zelle, wobei
sich entsprechende Register hintereinandergeschaltet sind, um
mehrere zusätzliche Leitungen durch die Zellen zum Speichern
und Weiterleiten von Zwischen-Übereinstimmungssignalen zu bilden;
und wobei im Betrieb:
die Register und die Übereinstimmungslogik einer ersten
Teilmenge der mehreren Zellen initialisiert werden, um Grenzen
zwischen vorbestimmten Textsegmenten zu erkennen und um auf der
Akkumulatorleitung ein das Erkennen einer solchen Grenze
anzeigendes Signal zu erzeugen, die Register und die
Übereinstimmungslogik einer zweiten Teilmenge der mehreren Zellen
initialisiert werden, um ein gemeinsames Auftreten ausgewählter
Suchmuster zu erkennen; und das Signal auf der
Akkumulatorleitung als Bedingung für die zweite Teilmenge von Zellen
verwendet wird, um eine Suche nach den ausgewählten Suchmustern
innerhalb der vorbestimmten Textsegmente auszuführen.
2. Spezial-Suchprozessor nach Anspruch 1, bei dem:
der Prozessor weiter einen Zähler (K(8)) in jeder Zelle
aufweist, und eine Zählersteuerlogik (Fig. 4d) zum Laden,
Inkrementieren und Dekrementieren des Zählers; und
die Übereinstimmungslogik und die Zählersteuerlogik eine
Einrichtung zum Laden eines ausgewählten Zählers aufweisen, um
anzuzeigen, wie oft eine Suchmusterkette innerhalb eines
Textsegments gefunden werden soll, und eine Einrichtung zum
Dekrementieren des Zählers immer dann, wenn die Suchmusterkette gefunden
ist, und eine Einrichtung zum Übertragen eines Zählerwertes von
Null an die Akkumulatorleitung, um eine gewünschte
Übereinstimmung zumindest in der im Zähler gespeicherten Anzahl
anzuzeigen.
3. Spezial-Suchprozessor nach Anspruch 2, bei dem:
die Einrichtung zum Laden des Zählers auf das Erkennen von
Segmentgrenzen anspricht, wobei der Zähler bei Beginn jedes
neuen Textsegmentes zurückgesetzt wird, um anzuzeigen, wie oft
eine Suchmusterkette innerhalb des Segments gefunden werden
soll, so daß eine gewünschte Suche bei jedem neuen Textsegment
wiederbegonnen wird.
4. Spezial-Suchprozessor nach Anspruch 2 oder 3, bei dem:
der Suchprozessor verwendet wird, um eine gewünschte
Teilmenge von mindestens n Begriffen aus einer Menge von in
Suchbegriffen innerhalb eines angegebenen Textsegments zu finden;
jede Zelle ein Inkrementregister (I) und ein
Dekrementregister (D) aufweist, wobei die Inkrementregister der Zellen
hintereinandergeschaltet sind, um eine Inkrementleitung zu
bilden, und die Dekrementregister der Zellen
hintereinandergeschaltet sind, um eine Dekrementleitung zu bilden;
die Musterregister (PATT(8)) dazu eingerichtet sind, die m
Suchbegriffe festzulegen und einen Übereinstimmungswert auf
einer ausgewählten Leitung zu liefern, der den Beginn eines
Textsegments anzeigt;
der den Beginn eines Textsegments anzeigende
Übereinstimmungswert verwendet wird, um den Zähler (K8) in einer Zählerzelle,
die unmittelbar jeder Zellensequenz folgt, deren Musterregister
einen Suchbegriff festlegen, mit einem Zählerstand von Eins
zu laden;
ein übereinstimmender Suchbegriff ein Dekrementieren des
Zählers in der nächsten unmittelbar folgenden Zählerzelle und
das Erzeugen eines Signals "1" auf der Akkumulatorleitung bewirkt;
jede einer Zählerzelle folgende Zelle als eine
Unterscheidungseinrichtung eingerichtet ist, um eine Ausgabe "1" auf der
Inkrementleitung bereitzustellen, immer wenn der Akkumulator
den Wert "1" einnimmt, und eine Ausgabe "1" auf der
Dekrementleitung bereitzustellen, immer wenn der Akkumulator den Wert
"0" einnimmt;
eine den in Suchbegriffen folgende Endzelle als eine
Summiereinrichtung arbeitet, mit einem anfangs auf einen Wert von
-n gesetzten Zähler, der von einer "1" auf der Inkrementleitung
inkrementiert und von einer "1" auf der Dekrementleitung
dekrementiert wird, wobei ein Auffinden der gewünschten Teilmenge
von Begriffen dadurch angezeigt wird, daß der Zähler in einer
Endzelle den Wert Null einnimmt.
5. Spezial-Suchprozessor nach Anspruch 4, ferner mit:
einer den Inkrement- und Dekrementleitungen zugeordneten
Logikeinrichtung (Fig. 4e) zum Vermeiden möglicher Kollisionen
zwischen Werten "1", die von unterschiedlichen Suchbegriffen
zugeordneten Zellen auf die Inkrement- und Dekrementleitungen
gegeben werden.
6. Spezial-Suchprozessor nach Anspruch 2, 3, 4 oder 5, bei
dem:
der Suchprozessor verwendet wird, um eine Kombination von
Suchbegriffen innerhalb eines Gleitfensters von n Textsegmenten
zu finden;
eine jedem Suchbegriff entsprechende Zellensequenz einen
Übereinstimmungswert ungleich Null auf der
Übereinstimmungsleitung erzeugt, wenn für den Suchbegriff eine Übereinstimmung
gefunden wird, und dieser Übereinstimmungswert verwendet wird,
um den Zähler in der einer Sequenz von Zellen, deren
Musterregister den Suchbegriff festlegen, unmittelbar folgenden Zelle
mit n zu laden;
Zellen, die Sequenzen von Zellen unmittelbar vorausgehen,
deren Musterregister die Suchbegriffe festlegen, verwendet
werden,
um Segmentgrenzen zu erkennen und Übereinstimmungswerte zu
erzeugen, die auf einer der zusätzlichen Leitungen im Prozessor
gesichert werden und verwendet werden, um die Zähler zu
dekrementieren, so daß jeder Zähler auf Null heruntergezählt sein
wird, nachdem ihn n Textsegmente passiert haben; und
Anzeigen von Zählerständen ungleich Null von allen Zählern
auf der Akkumulatorleitung UND-verknüpft werden, um das
Vorkommen aller Suchbegriffe in n aufeinanderfolgenden
Textsegmenten anzuzeigen.
7. Spezial-Suchprozessor nach Anspruch 6, ferner mit:
einer Einrichtung zum Verringern der Anzahl der von dem
Prozessor erzeugten Übereinstimmungssignale.
8. Spezial-Suchprozessor nach Anspruch 7, bei dem:
die Einrichtung zum Verringern der Anzahl von
Übereinstimmungssignalen eine Einrichtung zur UND-Verknüpfung der
Übereinstimmungswerte mit ausgewählten
Segmentgrenzen-Übereinstimmungswerten, die auf einer der zusätzlichen Leitungen gesichert
sind, aufweist.
9. Spezial-Suchprozessor nach Anspruch 7 oder 8, ferner mit:
einer Einrichtung zum Zählen der Anzahl des Auftretens
jedes der Suchbegriffe, um ein Erkennen von
Aufzählungs-Suchbegriffen innerhalb eines gleitenden Fensters von n Textsegmenten
zu erlauben.
10. Verfahren zum Durchsuchen eines Textstromes nach einem
Suchmuster, bei dem:
ein Suchmuster von Textzeichen in mehreren
hintereinandergeschalteten Vergleichszellen (20-22) gespeichert wird;
der Textstrom Zeichen für Zeichen durch die Vergleichszellen
(20-22) synchron zu einem Taktzyklus geschoben wird, wobei das
Suchmuster und der Textstrom entgegengesetzt ausgerichtet sind
und ein erstes Zeichen des Suchmusters zunächst auf ein erstes
Zeichen im Textstrom trifft;
Zeichen im Suchmuster mit Zeichen im Textstrom an jeder
Stelle des Textstroms verglichen werden, wenn dieser durch die
Vergleichszellen geschoben wird; und
Zellenübereinstimmungssignale in den Vergleichszellen als
Ergebnis des Vergleichsschritts erzeugt werden;
gekennzeichnet durch die Schritte:
einen Übereinstimmungswert anfangs auf einen ausgewählten
Toleranzwert in einer ausgewählten Zelle zu setzen;
einen Übereinstimmungswert gleichzeitig mit einem Zeichen
des Textstroms von einer benachbarten Zelle zu erhalten;
den erhaltenen Übereinstimmungswert zu dekrementieren,
wenn in der Zelle kein Zellenübereinstimmungssignal auftritt;
den empfangenen und möglicherweise dekrementierten
Übereinstimmungswert während eines Taktzyklus zu speichern;
dann den gespeicherten Übereinstimmungswert an die
nächstfolgende benachbarte Zelle zu übertragen, wobei die
Übereinstimmungswerte durch die Vergleichszellen halb so schnell weitergeleitet
werden, wie der Textstrom durch die Vergleichszellen geschoben
wird;
genaue Übereinstimmungen zwischen dem Suchmuster und
Zeichenketten im Textstrom zu erkennen, indem Übereinstimmungswerte
erkannt werden, die aus den Zellen heraus mit einem gegenüber
dem Toleranzwert nicht verringerten Wert weitergeleitet werden;
und
ungefähre Übereinstimmungen in Form von falschen,
zusätzlichen oder fehlenden Zeichen in jeder Zeichenkette, verglichen
mit dem Suchmuster, zu erkennen;
Grenzen vorbestimmter Textsegmente innerhalb des Textstroms
zu erkennen, indem Zellen verwendet werden, bei denen die Grenzen
als Teil eines Suchmusters gespeichert sind; und
bei dem Schritt des Erkennens von Grenzen Freigabesignale
in den Zellen zu erzeugen; die Freigabesignale anderen Zellen
zuzuführen, so daß es möglich wird, Suchfunktionen nur innerhalb
eines durch die erkannten Grenzen festgelegten Fensters von
mindestens einem Textsegment auszuführen.
11. Verfahren nach Anspruch 10, weiter mit den Schritten:
ein erstes Übereinstimmungsergebnis, das einem ersten
Suchbegriff des Suchmusters zugeordnet ist und in einer dem Ende
des ersten Suchbegriffs entsprechenden Zelle erzeugt wurde, auf
einer die Zellen verbindenden Übereinstimmungsleitung zu
speichern;
ein zweites Übereinstimmungsergebnis zu erzeugen, das
einem zweiten Suchbegriff des Suchmusters in einer dem Ende des
zweiten Suchbegriffs entsprechenden Zelle zugeordnet ist; und
die ersten und zweiten Übereinstimmungsergebnisse zur
Ausgabe durch die hintereinandergeschalteten Zellen logisch zu
verknüpfen.
12. Verfahren nach Anspruch 11, ferner mit den Schritten:
zusätzliche Übereinstimmungsergebnisse zu erzeugen, die
zusätzlichen Suchbegriffen im Suchmuster zugeordnet sind, die
verschachtelt mit den ersten und zweiten Suchbegriffen logisch
verknüpft werden können.
13. Verfahren nach Anspruch 11 oder 12, ferner mit dem Schritt:
das Auftreten ausgewählter Suchbegriffe in Zählerzellen,
die den ausgewählten Suchbegriffen zugeordnet sind, zu zählen,
um das Suchen von Aufzählungsbedingungen innerhalb des
Textstroms zu ermöglichen.
14. Verfahren nach Anspruch 10, ferner mit den Schritten:
Textsegmente in als Zählzellen eingerichteten Zellen zu
zählen, um zu bestimmen, ob ein Suchbegriff innerhalb einer
angegebenen Anzahl von Textsegmenten aufgetreten ist;
das Auftreten ausgewählter Suchbegriffe innerhalb von
Textsegmenten zu zählen, indem weitere als Zählzellen eingerichtete
Zellen verwendet werden; und
ein Übereinstimmungssignal nur dann zu erzeugen, wenn
angegebene Suchbegriffe innerhalb der angegebenen Anzahl von
Textsegmenten gemeinsam aufgetreten sind.
15. Verfahren nach Anspruch 14, ferner mit dem Schritt:
die Anzahl der erzeugten Übereinstimmungssignale zu
verringern, indem die Übereinstimmungssignale mit einem von den Grenzen
der vorbestimmten Textsegmente abgeleiteten Signal UND-verknüpft
werden.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US06/807,903 US5051947A (en) | 1985-12-10 | 1985-12-10 | High-speed single-pass textual search processor for locating exact and inexact matches of a search pattern in a textual stream |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE3650360D1 DE3650360D1 (de) | 1995-09-07 |
| DE3650360T2 true DE3650360T2 (de) | 1996-03-28 |
Family
ID=25197395
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE3650360T Expired - Fee Related DE3650360T2 (de) | 1985-12-10 | 1986-11-25 | Schneller Suchprozessor. |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US5051947A (de) |
| EP (1) | EP0233401B1 (de) |
| JP (1) | JPH0797374B2 (de) |
| DE (1) | DE3650360T2 (de) |
| IL (1) | IL80646A (de) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE10106340A1 (de) * | 2001-02-09 | 2002-08-29 | Europ Lab Molekularbiolog | Schaltung zur Verarbeitung von Daten |
Families Citing this family (89)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5450598A (en) * | 1985-12-27 | 1995-09-12 | Xerox Corporation | Finite state machine data storage where data transition is accomplished without the use of pointers |
| JP2790466B2 (ja) * | 1988-10-18 | 1998-08-27 | 株式会社日立製作所 | 文字列検索方法及び装置 |
| US5231599A (en) * | 1988-12-01 | 1993-07-27 | Bull Hn Information Systems Inc. | Semantic interpreter for an incoming data stream |
| EP0463164A4 (en) * | 1989-03-14 | 1992-12-16 | Kabushiki Kaisha Dainichi | Data retrieval device and data editing apparatus using this device |
| US5469354A (en) * | 1989-06-14 | 1995-11-21 | Hitachi, Ltd. | Document data processing method and apparatus for document retrieval |
| 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 |
| US5479654A (en) * | 1990-04-26 | 1995-12-26 | Squibb Data Systems, Inc. | Apparatus and method for reconstructing a file from a difference signature and an original file |
| US6816872B1 (en) | 1990-04-26 | 2004-11-09 | Timespring Software Corporation | Apparatus and method for reconstructing a file from a difference signature and an original file |
| 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 |
| GB9023096D0 (en) * | 1990-10-24 | 1990-12-05 | Int Computers Ltd | Database search processor |
| CA2067633C (en) * | 1991-07-24 | 1996-10-01 | Eric Jonathan Bauer | Method and apparatus for accessing a computer-based file system |
| US5426779A (en) * | 1991-09-13 | 1995-06-20 | Salient Software, Inc. | Method and apparatus for locating longest prior target string matching current string in buffer |
| US5379420A (en) * | 1991-12-26 | 1995-01-03 | Trw Inc. | High-speed data searching apparatus and method capable of operation in retrospective and dissemination modes |
| US6131092A (en) * | 1992-08-07 | 2000-10-10 | Masand; Brij | System and method for identifying matches of query patterns to document text in a document textbase |
| EP0664910A1 (de) * | 1992-10-16 | 1995-08-02 | HALAAS, Arne | Nichtnumerischer koprozessor |
| GB2274182B (en) * | 1993-01-09 | 1996-09-25 | Digital Equipment Int | Database co-processor |
| US5586288A (en) * | 1993-09-22 | 1996-12-17 | Hilevel Technology, Inc. | Memory interface chip with rapid search capability |
| DE4430195B4 (de) * | 1993-12-13 | 2004-09-23 | Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto | Verfahren zur Auswertung von Booleschen Ausdrücken |
| US6269363B1 (en) * | 1994-01-24 | 2001-07-31 | Yossi Matias | Method of accessing data using approximate data structures by relaxing the operations that define same |
| US5553272A (en) * | 1994-09-30 | 1996-09-03 | The University Of South Florida | VLSI circuit structure for determining the edit distance between strings |
| US5757959A (en) * | 1995-04-05 | 1998-05-26 | Panasonic Technologies, Inc. | System and method for handwriting matching using edit distance computation in a systolic array processor |
| US5615135A (en) * | 1995-06-01 | 1997-03-25 | International Business Machines Corporation | Event driven interface having a dynamically reconfigurable counter for monitoring a high speed data network according to changing traffic events |
| WO1996041281A1 (en) * | 1995-06-07 | 1996-12-19 | International Language Engineering Corporation | Machine assisted translation tools |
| US5778243A (en) * | 1996-07-03 | 1998-07-07 | International Business Machines Corporation | Multi-threaded cell for a memory |
| US5794254A (en) * | 1996-12-03 | 1998-08-11 | Fairbanks Systems Group | Incremental computer file backup using a two-step comparison of first two characters in the block and a signature with pre-stored character and signature sets |
| US6038665A (en) * | 1996-12-03 | 2000-03-14 | Fairbanks Systems Group | System and method for backing up computer files over a wide area computer network |
| DE59809964D1 (de) * | 1997-11-26 | 2003-11-27 | Infineon Technologies Ag | Verfahren und Vorrichtung zum Auslesen, Modifizieren und Überschreiben von in einer Speichereinrichtung gespeicherten Daten |
| US6205482B1 (en) * | 1998-02-19 | 2001-03-20 | Ameritech Corporation | System and method for executing a request from a client application |
| US6112288A (en) * | 1998-05-19 | 2000-08-29 | Paracel, Inc. | Dynamic configurable system of parallel modules comprising chain of chips comprising parallel pipeline chain of processors with master controller feeding command and data |
| US6167400A (en) * | 1998-07-31 | 2000-12-26 | Neo-Core | Method of performing a sliding window search |
| NO309169B1 (no) | 1998-11-13 | 2000-12-18 | Interagon As | Sokeprosessor |
| US6947931B1 (en) | 2000-04-06 | 2005-09-20 | International Business Machines Corporation | Longest prefix match (LPM) algorithm implementation for a network processor |
| US7013394B1 (en) | 2000-04-18 | 2006-03-14 | International Business Machines Corporation | Data flow pattern recognition and manipulation |
| US6708168B2 (en) * | 2000-12-29 | 2004-03-16 | Nortel Networks Limited | Method and apparatus for searching a data stream for character patterns |
| KR20030047991A (ko) * | 2001-05-17 | 2003-06-18 | 멤콜 엘엘씨 | 상이한 크기를 갖는 단어의 탐색 |
| US6918037B2 (en) * | 2001-09-27 | 2005-07-12 | Intel Corporation | Method and apparatus for command perception by data value sequencing, allowing a bounded total amount of spurious data |
| US6901354B2 (en) * | 2001-09-27 | 2005-05-31 | Intel Corporation | Method and apparatus for command perception by data value sequencing, allowing finite amount of unrelated interim data |
| US6959297B2 (en) * | 2002-04-25 | 2005-10-25 | Winnow Technology, Llc | System and process for searching within a data stream using a pointer matrix and a trap matrix |
| US7451143B2 (en) * | 2002-08-28 | 2008-11-11 | Cisco Technology, Inc. | Programmable rule processing apparatus for conducting high speed contextual searches and characterizations of patterns in data |
| US7596553B2 (en) * | 2002-10-11 | 2009-09-29 | Avaya Inc. | String matching using data bit masks |
| US7134143B2 (en) * | 2003-02-04 | 2006-11-07 | Stellenberg Gerald S | Method and apparatus for data packet pattern matching |
| 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 |
| US7243165B2 (en) * | 2004-01-14 | 2007-07-10 | International Business Machines Corporation | Parallel pattern detection engine |
| US7392229B2 (en) * | 2005-02-12 | 2008-06-24 | Curtis L. Harris | General purpose set theoretic processor |
| JP4470913B2 (ja) * | 2005-07-14 | 2010-06-02 | セイコーエプソン株式会社 | 文字列検索装置およびプログラム |
| JP4930379B2 (ja) * | 2005-12-12 | 2012-05-16 | 日本電気株式会社 | 類似文検索方法、類似文検索システム及び類似文検索用プログラム |
| US20070179935A1 (en) * | 2006-01-31 | 2007-08-02 | Tsern-Huei Lee | Apparatus and method for efficient data pre-filtering in a data stream |
| US7624105B2 (en) * | 2006-09-19 | 2009-11-24 | Netlogic Microsystems, Inc. | Search engine having multiple co-processors for performing inexact pattern search operations |
| US8065249B1 (en) | 2006-10-13 | 2011-11-22 | Harris Curtis L | GPSTP with enhanced aggregation functionality |
| US7774286B1 (en) | 2006-10-24 | 2010-08-10 | Harris Curtis L | GPSTP with multiple thread functionality |
| US8954484B2 (en) * | 2009-06-12 | 2015-02-10 | Cray Inc. | Inclusive or bit matrix to compare multiple corresponding subfields |
| JP5335227B2 (ja) * | 2007-12-10 | 2013-11-06 | 京セラ株式会社 | 情報端末装置 |
| US8498956B2 (en) | 2008-08-29 | 2013-07-30 | Oracle International Corporation | Techniques for matching a certain class of regular expression-based patterns in data streams |
| 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 |
| US8386466B2 (en) | 2009-08-03 | 2013-02-26 | Oracle International Corporation | Log visualization tool for a data stream processing server |
| US8527458B2 (en) | 2009-08-03 | 2013-09-03 | Oracle International Corporation | Logging framework for a data stream processing server |
| US9305057B2 (en) | 2009-12-28 | 2016-04-05 | Oracle International Corporation | Extensible indexing framework using data cartridges |
| US9430494B2 (en) | 2009-12-28 | 2016-08-30 | Oracle International Corporation | Spatial data cartridge for event processing systems |
| US8959106B2 (en) | 2009-12-28 | 2015-02-17 | Oracle International Corporation | Class loading using java data cartridges |
| US8572106B1 (en) | 2010-07-16 | 2013-10-29 | Netlogic Microsystems, Inc. | Memory management in a token stitcher for a content search system having pipelined engines |
| US8700593B1 (en) | 2010-07-16 | 2014-04-15 | Netlogic Microsystems, Inc. | Content search system having pipelined engines and a token stitcher |
| US8589405B1 (en) | 2010-07-16 | 2013-11-19 | Netlogic Microsystems, Inc. | Token stitcher for a content search system having pipelined engines |
| US8713049B2 (en) | 2010-09-17 | 2014-04-29 | Oracle International Corporation | Support for a parameterized query/view in complex event processing |
| US8667230B1 (en) | 2010-10-19 | 2014-03-04 | Curtis L. Harris | Recognition and recall memory |
| US9189280B2 (en) | 2010-11-18 | 2015-11-17 | Oracle International Corporation | Tracking large numbers of moving objects in an event processing system |
| 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) |
| 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 |
| US9563599B2 (en) * | 2013-11-04 | 2017-02-07 | Lewis Rhodes Labs, Inc. | Computing architecture for operating on sequential data |
| US9996387B2 (en) | 2013-11-04 | 2018-06-12 | Lewis Rhodes Labs, Inc. | Context switching for computing architecture operating on sequential data |
| 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 |
| CN105335747B (zh) * | 2014-08-04 | 2019-03-29 | 联想(北京)有限公司 | 一种数据处理方法及电子设备 |
| 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 |
| WO2017135838A1 (en) | 2016-02-01 | 2017-08-10 | Oracle International Corporation | Level of detail control for geostreaming |
| WO2017135837A1 (en) | 2016-02-01 | 2017-08-10 | Oracle International Corporation | Pattern based automated test data generation |
| US9892789B1 (en) | 2017-01-16 | 2018-02-13 | International Business Machines Corporation | Content addressable memory with match hit quality indication |
Family Cites Families (18)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US626432A (en) | 1899-06-06 | Casket-carrier | ||
| GB1497678A (en) * | 1975-02-21 | 1978-01-12 | Int Computers Ltd | Data processing systems |
| US4094001A (en) * | 1977-03-23 | 1978-06-06 | General Electric Company | Digital logic circuits for comparing ordered character strings of variable length |
| US4205302A (en) * | 1977-10-28 | 1980-05-27 | Einar Godo | Word recognizing system |
| FR2458848B1 (fr) * | 1979-06-11 | 1986-02-28 | Iria | Procede et appareil informatique de reconnaissance des mots |
| DE3069324D1 (en) * | 1980-12-19 | 1984-10-31 | Ibm | Interactive data retrieval apparatus |
| US4450520A (en) * | 1981-03-11 | 1984-05-22 | University Of Illinois Foundation | Method and system for matching encoded characters |
| US4495566A (en) * | 1981-09-30 | 1985-01-22 | System Development Corporation | Method and means using digital data processing means for locating representations in a stored textual data base |
| US4451901A (en) * | 1982-01-21 | 1984-05-29 | General Electric Company | High speed search system |
| US4625295A (en) * | 1982-01-25 | 1986-11-25 | Skinner James T | Textual comparison system for locating desired character strings and delimiter characters |
| US4531201A (en) * | 1982-01-25 | 1985-07-23 | Skinner Jr James T | Text comparator |
| US4674066A (en) * | 1983-02-18 | 1987-06-16 | Houghton Mifflin Company | Textual database system using skeletonization and phonetic replacement to retrieve words matching or similar to query words |
| US4575795A (en) * | 1983-04-01 | 1986-03-11 | Honeywell Information Systems Inc. | Apparatus for detecting a predetermined character of a data string |
| 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 |
| EP0222940B1 (de) * | 1985-10-31 | 1992-02-19 | Trw Inc. | Schneller Recherchenprozessor und Verfahren für seine Benutzung |
| JPS6128134A (ja) * | 1984-07-18 | 1986-02-07 | Nec Corp | 記号列照合装置とその制御方式 |
| US4747072A (en) * | 1985-08-13 | 1988-05-24 | Fairchild Camera And Instrument Corporation | Pattern addressable memory |
-
1985
- 1985-12-10 US US06/807,903 patent/US5051947A/en not_active Expired - Lifetime
-
1986
- 1986-11-14 IL IL80646A patent/IL80646A/xx not_active IP Right Cessation
- 1986-11-25 EP EP86309162A patent/EP0233401B1/de not_active Expired - Lifetime
- 1986-11-25 DE DE3650360T patent/DE3650360T2/de not_active Expired - Fee Related
- 1986-12-10 JP JP61294598A patent/JPH0797374B2/ja not_active Expired - Lifetime
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE10106340A1 (de) * | 2001-02-09 | 2002-08-29 | Europ Lab Molekularbiolog | Schaltung zur Verarbeitung von Daten |
Also Published As
| Publication number | Publication date |
|---|---|
| IL80646A (en) | 1991-06-30 |
| JPS62217321A (ja) | 1987-09-24 |
| JPH0797374B2 (ja) | 1995-10-18 |
| US5051947A (en) | 1991-09-24 |
| EP0233401A2 (de) | 1987-08-26 |
| EP0233401A3 (de) | 1991-10-30 |
| IL80646A0 (en) | 1987-02-27 |
| EP0233401B1 (de) | 1995-08-02 |
| DE3650360D1 (de) | 1995-09-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE3650360T2 (de) | Schneller Suchprozessor. | |
| DE3650156T2 (de) | Auf regeln basiertes datenwiederauffindverfahren und anordnung. | |
| DE69032576T2 (de) | Dynamische Optimierung eines einzelnen relationalen Zugriffs | |
| DE3750277T2 (de) | Verfahren und Vorrichtung zur Rückgewinnung von Symbolketten aus Daten. | |
| DE69622776T2 (de) | Von Multitasking gebrauch machendes Sortieren | |
| DE2554442C2 (de) | Vorrichtung zum Vergleich logischer Größen mit einer Gruppe logischer Bezugsgrößen | |
| DE3788750T2 (de) | Schätzeinrichtung des Indexschlüsselbereiches. | |
| DE68926347T2 (de) | Speicherstruktur und verwendung | |
| DE69636761T2 (de) | Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum | |
| DE3689357T2 (de) | Digitaler Lese-/Schreibspeicher. | |
| DE69900854T2 (de) | Ein suchsystem und verfahren zum zurückholen von daten und die anwendung in einem suchgerät | |
| DE3586603T2 (de) | Datenprozessor fuer interpretierende und kompilierte sprache. | |
| DE2415900C3 (de) | Rechenautomat mit mehreren mit je einem Vorratsspeicher versehenen Rechenanlagen | |
| DE69131956T2 (de) | Verarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher | |
| DE3688738T2 (de) | Musteradressierbarer speicher. | |
| DE3486211T2 (de) | Kodebestimmung mit einem auf Halbaddierer basierten Operandenvergleicher. | |
| DE3882772T2 (de) | Vektorprozessor angepasst zum Sortieren von Vektordaten. | |
| DE2502910C2 (de) | Informations-Sortiereinrichtung | |
| DE69934195T2 (de) | Identifikation einer Wortgruppe durch modifizierte Schlüsselwörter, die aus Transformationen von aufeinanderfolgenden Suffixen erzeugt sind | |
| DE2712575C2 (de) | Assoziatives Speichersystem in hochintegrierter Halbleitertechnik | |
| DE69032828T2 (de) | Sortierbeschleuniger, der einen in beide Richtungen arbeitenden Sortierer als Mischer verwendet | |
| DE3588212T2 (de) | Verfahren und Gerät zum Suchen von Daten | |
| DE2421130C2 (de) | ||
| DE2000340A1 (de) | Verfahren und Vorrichtung zum Suchen verdichteter gespeicherter Informationen | |
| DE69324967T2 (de) | Cache-Speicherfehlgriffvorhersageverfahren und -vorrichtung für einen nach Seiten organisierten Hauptspeicher in einem Datenverarbeitungssystem |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8364 | No opposition during term of opposition | ||
| 8327 | Change in the person/name/address of the patent owner |
Owner name: NORTHROP GRUMMAN CORP. (N.D.GES.D.STAATES DELAWARE |
|
| 8339 | Ceased/non-payment of the annual fee |