DE3650156T2 - Auf regeln basiertes datenwiederauffindverfahren und anordnung. - Google Patents

Auf regeln basiertes datenwiederauffindverfahren und anordnung.

Info

Publication number
DE3650156T2
DE3650156T2 DE3650156T DE3650156T DE3650156T2 DE 3650156 T2 DE3650156 T2 DE 3650156T2 DE 3650156 T DE3650156 T DE 3650156T DE 3650156 T DE3650156 T DE 3650156T DE 3650156 T2 DE3650156 T2 DE 3650156T2
Authority
DE
Germany
Prior art keywords
symbol
sequence
delimiter
data
query
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE3650156T
Other languages
English (en)
Other versions
DE3650156D1 (de
Inventor
Erik Brunvand
Alan Davis
Ian Robinson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Schlumberger Technologies Inc
Original Assignee
Schlumberger Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Schlumberger Technologies Inc filed Critical Schlumberger Technologies Inc
Publication of DE3650156D1 publication Critical patent/DE3650156D1/de
Application granted granted Critical
Publication of DE3650156T2 publication Critical patent/DE3650156T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)
  • Threshing Machine Elements (AREA)

Description

  • Die vorliegende Erfindung betrifft im allgemeinen das Gebiet der Datenverarbeitungsanlagen und insbesondere Speichersysteme zur Anwendung in Datenverarbeitungsanlagen.
  • Im wesentlichen setzen alle in Systemen der Künstlichen Intelligenz eingesetzte Datenverarbeitungsanlagen voraus, daß Informationen abgespeichert und wahlweise abgerufen werden. Diese Informationen sind im allgemeinen in der Form einer in einem Speicher abgespeicherten Datenbank organisiert, die aus einer Anzahl Datensätzen besteht, die jeweils einzeln abgerufen werden. Im Normalfall wird jeder Datensatz als Einheit abgerufen. Das einfachste Beispiel für das Abrufen aus einer Datenbank besteht darin, daß alle Datensätze abgerufen werden, die ein oder mehrere Schlüsselwörter enthalten. Zum Beispiel könnte die Datenbank aus allen Artikeln einer bestimmten Gruppe wissenschaftlicher Journale bestehen, wobei jeweils ein Artikel in einem Datensatz enthalten ist. Hier könnte jemand alle Artikel abrufen wollen, die ein oder mehrere Schlüsselwörter enthalten, wie z. B. alle Artikel, die die Wörter "Computerberechnung" oder "Künstliche Intelligenz" enthalten.
  • In "Expertensystemen" ist die Datenbank in Regeln kodifiziert, die wiederholt nach Regeln durchsucht werden müssen, die einer gegebenen Spezifikation oder "Abfragefolge" genügen. Dieser Suchtyp, der als "regelbezogene" Suche bezeichnet werden kann, unterscheidet sich signifikant von der Suche nach Datensätzen, die ein oder mehrere Schlüsselwörter enthalten, wie oben beschrieben ist. In einer regelbezogenen Suche muß das System wählen, welche der vielen, in der Datenbank enthaltenen Regeln dem angezeigten Problem am nächsten kommt. Diese Wahl hängt ab von den Daten und den Beziehungen zwischen den Variablen in dem zur Lösung anstehenden Problem. Das Expertensystem muß die Regeln auswählen, die die gleichen Daten und/oder Beziehungen zwischen den Variablen enthalten. Eine Schlüsselwortsuche erfordert nur, daß das System Regeln auswählt, die die gleichen Daten enthalten. Zum Beispiel könnten diese Regeln die folgende Form haben:
  • Wenn < Bedingung> dann < Handlung oder Schlußfolgerung> . Eine der Regeln in der Datenbank könnte sein wie folgt: Wenn < x ißt> dann < x ist hungrig> .
  • Wenn das Problem die Information enthält "Peter ißt", würde sich das System vor die Aufgabe gestellt sehen, alle Regeln zu durchsuchen nach einer, in der es heißt: (x ißt).
  • Hier ist x ein variables Element, das in der bekannten Information durch jedes beliebige Element ersetzt werden kann. Damit würde die obige Regel mit jeder anderen abgerufen, die "ißt" enthält. Sobald das System diese Regel abgerufen hat, substituiert es x durch Peter und schließt daraus, daß Peter hungrig ist.
  • Die regelbezogene Suche unterscheidet sich signifikant von der einfachen Schlüsselwort- oder Schlüsselelementsuche, in der alle Datensätze, die ein oder mehrere Schlüsselwörter enthalten, abgerufen werden. In einer regelbezogenen Suche sind sowohl die Anzahl als auch die Reihenfolge der in den Datenbank-Sätzen enthaltenen Elemente bedeutsam. Betrachten wir eine Datenbank, die die drei Datensätze (a,x,b), (a,z,b) und (b, (d,e),a) enthält. Eine Suche nach allen Datensätzen, die "a" und "b" enthalten, würde alle obigen Datensätze abrufen. Jedoch würde eine Suche nach allen "Regeln" der Form (a,b) von keinem der Datensätze erfüllt sein, weil jeder Datensatz 3 Elemente enthält und die verlangte Regel nur zwei. Eine Abfrage nach allen Regeln der Form (a,?,b), wobei ? ein variables Element kennzeichnet, das von jeder Konstanten, jedem Unterausdruck oder jeder sonstigen Variablen erfüllt wird, würde die ersten beiden Datensätze abrufen, jedoch nicht dem dritten, weil "a" und "b" im dritten Datensatz in der falschen Reihenfolge auftreten. Daher kann auch mit dem Variablenkonzept ein regelbezogenes Abrufsystem zur Auswahl von Datensätzen auf der Grundlage von Schlüsselelementen in einer nicht vorgegebenen Reihenfolge in herkömmlicher Weise nicht benutzt werden.
  • Auf ähnliche Weise ist ein Schlüsselwort-Abrufsystem nicht besonders für das regel-basierte Abrufproblem geeignet, weil es viele Datensätze abrufen würde, in denen die Elemente in der falschen Reihenfolge auftreten oder mit unerwünschten zusätzlichen Elementen versetzt vorhanden sind. Diese Extra- Datensätze müßten vom System verworfen werden, nachdem sie abgerufen wären, was sowohl Verarbeitungszeit als auch zusätzlichen Speicherplatz zum Abspeichern der unerwünschten Regeln in Anspruch nehmen würde.
  • Die Probleme, die aus der Reihenfolge entstehen, in denen die Elemente abgespeichert sind, lassen sich überwinden durch Einsatz eines "Tags" (Identifizierungskennzeichens) an jedem Element in der Datenbank und Abfassen der Abfrage in Form dieser Identifizierungskennzeichen. Solche Systeme sind geoffenbart in "Rete: A fast algorithm for the many pattern/many object pattern match problem", Artificial Intelligence, 19, Seite 17-37, North-Holland Publishing Co., Amsterdam, NL, und im US-Patent 4,027,288. Sobald einmal die Struktur der Datensätze definiert ist (d.i. die Datensätze in Elemente unterteilt sind), können die Elemente nicht mehr verändert werden, ohne die Datenbank neu zu strukturieren. Als Ergebnis erlauben solche Systeme keine Suche nach variablen Unterausdrücken in einem gegebenen Datenbankelement. Der Stand der Technik gemäß dem einleitenden Teil der Ansprüche 1 und 13 ist bekannt als "Prolog-Systeme" (Programmieren in Prolog, W.F. Clockskin und C.S. Mellish, 2. Ausgabe, Springer-Verlag, Berlin, Heidelberg, New York, London, Paris, Tokio).
  • Ein Problem beim Implementieren von Systemen Künstlicher Intelligenz unter Verwendung derzeit verfügbarer Rechner- Hardware ist die Zeit, die erforderlich ist, um eine große Datenbank nach Datensätzen zu durchsuchen, die einer bestimmten Abfragesequenz entsprechen. Um nützlich zu sein, muß ein solches System eine große Menge Datensätze enthalten. Da nun die zum Durchsuchen der Datenbank erforderliche Zeit proportional der Länge der Datenbank ist, wird ein System mit einer festen Suchgeschwindigkeit, das durch den Zusatz neuer Informationen in der Form neuer Regeln "smarter" geworden ist, andererseits auch langsamer. Dieses Problem läßt sich nur lösen durch Steigern der Suchgeschwindigkeit des Systems, wenn die Größe der zu durchsuchenden Datenbank zunimmt.
  • Trotz der zahlreichen Verbesserungen, die auf dem Gebiet der Technik der der integrierten Schaltkreise gemacht wurden, unterscheiden sich moderne Computer nur sehr wenig von der ursprünglichen Konzeption Von Neumanns. Die klassische Von- Neumann-Maschine besteht aus einer Zentraleinheit und einem gesonderten Speicher, der in Wörter fester Länge organisiert ist. Die Zentraleinheit holt Daten aus dem Speicher, immer nur ein Wort auf einmal, durch Festlegen der Adresse des gewünschten Worts, d.i. seiner Adresse gerechnet vom Speicheranfang an. Bei der Durchführung der obigen Suche würde eine Zentraleinheit vom Von-Neumann-Typ der Reihe nach jedes Wort der Datenbank aus dem Speicher abrufen und mit jedem der Schlüsselwörter in der Abfragefolge vergleichen, die auch im Speicher abgespeichert sind.
  • Da es eine Grenze der Geschwindigkeit gibt, mit der eine einzige Zentraleinheit laufen kann, sind Maschinen vom Von- Neumann-Typ in der Praxis bei der Größe der Datenbank beschränkt, auf die zugegriffen werden kann. Auch bei Geschwindigkeiten von 10 Millionen Vergleichen in der Sekunde würde sich eine Von-Neumann-Maschine schwer tun, den Inhalt einer Bibliothek zu durchsuchen, die beispielsweise nur die Gerichtsentscheidungen aus den verschiedenen Gerichtsbezirke in den Vereinigten Staaten enthält.
  • Zusätzlich zu den Geschwindigkeitseinschränkungen zeigt die Von-Neumann-Architektur auch noch eine Anzahl Einschränkungen wegen der ihr innewohnenden Hardwareabhängigkeit. Um eine Speicheradresse anzugeben, wird eine feste Anzahl Adressenzeilen benutzt. Ein System mit N Adressenzeilen kann einen Speicher mit 2N Wörtern adressieren und nicht mehr. Um die Speicherkapazität über diese Grenze hinaus zu vergrößern, muß man die Anzahl der Adressenzeilen vergrößern. Das bedingt sowohl Hardware- als auch Softwareänderungen, da die meisten Systeme eine maximale Speichergröße vorschreiben, die der Befehlssatz des Computers adressieren kann. Ferner, wenn ein Teil des Speichers durch eine Funktionsstörung einer seiner Komponenten ausfällt, ist es schwierig, diesen Speicherteil ohne Umprogrammieren auf ein unbeschädigtes Speichersegment umzulegen. Mit der Vergrößerung der Speicher infolge der Notwendigkeit, eine immer größere Anzahl Datenwörter abzuspeichern, wird auch die Anfälligkeit für eine solche Funktionsstörung in einem Speicherteil immer größer.
  • Schließlich erfordert das Problem des Durchsuchens einer großen Datenbank nur einen kleinen Teil der Befehle, die in einer herkömmlichen Zentraleinheit vorhanden sind. Eine typische Zentraleinheit hält buchstäblich hunderte von Befehlen zur Ausführung bereit, die sich von Ausgabe/Eingabebefehlen zur Kommunikation mit der Außenwelt bis zu mathematischen Befehlen zur Kombination von Speicherwörtern, die Zahlen darstellen, erstrecken. Das Problem der Datenbankdurchsuchung benötigt aber höchstens 10 bis 20 dieser Befehle. Daher ist das Problem der Durchsuchung einer Datenbank eine Unterforderung des Befehlssatzes der Zentraleinheit.
  • Die Geschwindigkeitsbeschränkungen der Zentraleinheit können im gewissen Maße überwunden werden durch den Bau eines Systems mit mehreren Zentraleinheiten, wobei jede einen Zugriff auf den Speicher hat. Diese Lösung hat jedoch ihre Grenzen. Die Anzahl der Zentraleinheiten, die sich in einen gegebenen Speicher teilen, wird letztlich beschränkt durch die Zeit, die jede Zentraleinheit braucht um auf den Speicher zuzugreifen. Wenn der Speicherbus für jede Zentraleinheit 1/10 der Zeit freigehalten werden muß, dann können sich höchstens 10 Zentraleinheiten in den gleichen Speicher teilen. Somit ist die Vervielfältigung der Zentraleinheit nicht die beste Lösung zur Überwindung der Geschwindigkeitsbeschränkungen der Von-Neumann-Maschinen.
  • Auch wenn jemand durch den Einsatz mehrfacher Zentraleinheiten die Suchzeit effektiv beschränken könnte, hat man noch immer mir den Hardware-bedingten Einschränkungen zu tun. Früher oder später wird man die Datenbank über diese Hardwareeinschränkungen hinaus vergrößern wollen, was bei Von-Neumann- Maschinen nur sehr schwer möglich ist.
  • Im Idealfall würde man gern einen modularen Speicher haben, der jederzeit zu einem System hinzugefügt werden kann, wenn mehr Speicherplatz für die Datenbank gefordert wird, ohne daß die Anzahl der Adressenzeilen gleichzeitig erhöht werden muß. Diese Fähigkeit zur Speichererweiterung wird bei solchen Künstlichen Intelligenz-Systemen immer wichtiger, wo man versucht, eine Maschine zu bauen, die in der Lage ist, immer größer werdende Informationsmengen zu speichern und zu benutzen.
  • Gemäß einem Aspekt der vorliegenden Erfindung ist vorgesehen ein Speichersystem zum Abspeichern und Wiederabrufen von einer oder mehreren Datensymbolfolgen, wobei dieses Speichersystem beinhaltet: Speichermittel zum Abspeichern der Datensymbolfolgen, Mittel zum Aufnehmen einer Abfragesymbolfolge, und Mittel zum Abrufen jeder Datensymbolfolge aus diesen Speichermitteln entsprechend der Abfragefolge, wobei diese Symbole Konstante, Variable und Begrenzer darstellen, diese Begrenzer entsprechend paarweise vorhanden sind, wobei ein Anfangsbegrenzer zum Markieren des Anfangs einer Symbol folge oder Symbolunterfolge, die in eine Symbol folge eingebettet ist, benutzt wird und der entsprechende Endbegrenzer dazu benutzt wird, das Ende der Symbolfolge bzw. -unterfolge anzuzeigen, und in der eine Datensymbolfolge als der Fragesymbolfolge entsprechend definiert ist, wenn die zwei Folgen durch Austauschen jeder Variablen durch eine Konstante oder Kombination von Konstanten und Begrenzern identisch gemacht werden können, wobei die Kombination mit einem Begrenzer beginnt und mit einem Begrenzer endet, wobei die Mittel zum Abrufen jeder Datensymbolfolge aus diesem Speichermittel entsprechend der Abfragesymbolfolge enthalten: Erste Anzeigemittel zum Identifizieren eines Datenfolgesymbols, zweite Anzeigemittel zum Identifizieren eines Abfragefolgesymbols, Vergleichsmittel zum Vergleichen des Datenfolgesymbols, das durch das erste Anzeigemittel identifiziert wird, mit dem Abfragefolgesymbol, das durch das zweite Anzeigemittel identifiziert wird, und zum Generieren eines Ausgangssignals mit entweder einem Gleich-Status, der anzeigt, daß die zwei verglichenen Symbole gleich waren oder daß wenigstens eines dieser Symbole eine Variable war, oder mit einem Ungleich- Status, der anzeigt, daß die zwei Symbole unterschiedlich waren und keines der beiden eine Variable war, auf dieses Ausgangssignal der Vergleichsmittel ansprechende Flaggenmittel, die die Generierung eines Ausgangssignal anzeigen, das im Ungleich-Status ist, Anzeigevorschubmittel, die Mittel, die bewirken, daß diese ersten Anzeigemittel das erste Symbol einer ausgewählten Datenfolge anzeigen, diese zweiten Anzeigemittel das erste Symbol der Abfragefolge anzeigen, und diese Vergleichsmittel die identifizierten Symbole vergleichen, und Mittel, die bewirken, daß diese ersten Anzeigemittel das nächste Datenfolgesymbol identifizieren, und die zweiten Anzeigemittel ein nächstes Abfragefolgesymbol identifizieren, und diese Vergleichsmittel die identifizierten Symbole vergleichen, bis eine Beendigungsbedingung erfaßt wird, enthalten, und Mittel, die auf die Beendigungsbedingung ansprechen, um die gewählte Datenfolge ausgeben, wenn die Flaggenmittel anzeigen, daß keiner der Vergleiche zur Generierung eines Ungleich-Ausgangssignals geführt hat.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung ist vorgesehen ein Verfahren zum Abrufen einer Datensymbolfolge, die einer Abfragesymbolfolge entspricht, die sich aus den gleichen drei Symboltypen zusammensetzen, in einem Speichersystem, mit Speichermitteln, in denen eine oder mehrerer Datensymbolfolgen gespeichert sind, bestehend aus den folgenden Schritten: (a) Empfangen einer Abfragesymbolfolge; und (b) Abrufen jeder Datensymbolfolge aus den Speichermitteln entsprechend dieser eingegangenen Abfragefolge, in der diese Datensymbolfolge und diese Abfragesymbolfolge so definiert sind, daß sie drei Symboltypen enthalten, und zwar Konstante, Variable und Begrenzer, diese Begrenzer entsprechend paarweise vorhanden sind, wobei ein Anfangsbegrenzer zum Markieren des Anfangs einer Symbol folge oder Symbolunterfolge, die in eine Symbol folge eingebettet ist, benutzt wird und der entsprechende Endbegrenzer dazu benutzt wird, das Ende der Symbol folge bzw. -unterfolge anzuzeigen, und in der eine Datensymbolfolge als der Fragesymbolfolge entsprechend definiert ist, wenn die zwei Folgen durch Austauschen jeder Variablen durch eine Konstante oder Kombination von Konstanten und Begrenzern identisch gemacht werden können, wobei die Kombination mit einem Begrenzer beginnt und mit einem Begrenzer endet, wobei dieses Verfahren ferner die Schritte beinhaltet: (c) Setzen einer Flagge in einen ersten Zustand, (d) Anzeigen eines ersten Datenfolgesymbols in der Datensymbolfolge, (e) Anzeigen eines ersten Abfragefolgesymbols in der Abfragesymbolfolge, (f) Vergleichen der in Schritt (d) und (e) gekennzeichneten Symbole, (g) Setzen der Flagge in einen zweiten Zustand, wenn die angezeigten Symbole nicht übereinstimmen, (h) Anzeigen eines nächsten Datenfolgesymbols und eines nächsten Abfragefolgesymbols, wobei das nächste Datenfolgesymbol dasjenige ist, das dem vorher angezeigten Datenfolgesymbol in der Datensymbolfolge folgt, und das nächste Abfragefolgesymbol dasjenige ist, das dem vorher angezeigten Abfragefolgesymbol in der Abfragesymbolfolge folgt, es sei denn, die vorher angezeigten und verglichenen Symbole seien ein Anfangsbegrenzer und eine Variable, in diesem Fall folgt Schritt (i), (i) Bestimmen des dem Anfangsbegrenzer entsprechenden Endbegrenzers, die nächsten anzuzeigenden Symbole sind das der Variablen und das dem dem Endbegrenzer entsprechenden Anfangsbegrenzer folgende Symbol, (j) Wiederholen der Schritte (d) bis (j), bis das letzte Symbol in der Abfragesymbolfolge verglichen wurde, (k) Abrufen der Datenfolge, wenn die Flagge im ersten Zustand steht.
  • Somit besteht die vorliegende Erfindung aus einem Speichersystem zum Abspeichern und Abrufen von Symbol folgen, die dazu benutzt werden können, Regeln in Systemen Künstlicher Intelligenz darzustellen. Die abgespeicherten Datenfolgen bestehen aus einer Vielzahl von Symbolen, wobei jedes Symbol zu einer von drei Klassen gehört: Konstante, Variable oder Begrenzer. Diese Begrenzer sind jeweils paarweise vorhanden, wobei ein Anfangsbegrenzer zum Markieren des Anfangs einer Symbolfolge oder Symbolunterfolge, die in eine Symbol folge eingebettet ist, benutzt wird und der entsprechende Endbegrenzer dazu benutzt wird, das Ende der Symbol folge bzw. -unterfolge anzuzeigen. Abgespeicherte Datenfolgen werden durch das Gerät der vorliegenden Erfindung abgerufen als Antwort auf eine Fragesequenz, die aus einer Vielzahl von Symbolen besteht, die zu den gleichen drei Klassen gehören wie die Symbole, aus denen die abgespeicherten Datenfolgen bestehen. Eine abgespeicherte Datenfolge wird abgerufen als Antwort auf eine gegebene Fragesequenz, wenn die zwei Sequenzen durch Ersetzen jedes variablen Elements, das in den beiden Sequenzen vorkommt, durch eine Konstante oder eine Kombination von Konstanten und Begrenzern identisch gemacht werden können, wobei diese Kombination mit einem Anfangsbegrenzer anfängt und mit einem Endbegrenzer schließt. Für jedes ersetzte variable Element können unterschiedliche Konstante oder deren Kombinationen benutzt werden. Das Gerät besteht aus einem Speicher, einem Mittel zum Aufnehmen einer Fragesequenz, die an das Gerät gekoppelt ist, und einem Datenverarbeitungssystem zum Vergleichen der Fragesequenz mit jeder der gespeicherten Datensequenzen und Abrufen derjenigen Datensequenzen, die der Fragesequenz entsprechen. Das Datenverarbeitungssystem kann so strukturiert sein, daß es eine Vielzahl von Prozessoren enthält, die parallel arbeiten, wobei jeder an einer anderen Gruppe abgespeicherter Datensequenzsymbole arbeitet, um auf diese Weise die Zeit einzusparen, die zum Auffinden der zu einer gegebenen Fragesequenz passenden Datensequenz benötigt wird.
  • Auf diese Weise können die Ausführungsformen der vorliegenden Erfindung ein verbessertes Speichersystem zum Abspeichern und Abrufen der Regeln dienen, die auf regel-gegründete Systeme der Künstlichen Intelligenz anwendbar sind.
  • Sie können auch die zum Abrufen dieser Regeln benötigt Zeit durch Einsatz von parallelen Bearbeitungsvorgängen reduzieren.
  • Jetzt sollen einige Beispiele für die Erfindung beschrieben werden.
  • Fig. 1 ist ein Blockdiagramm eines Speichersystems, das die vorliegende Erfindung implementiert.
  • Fig. 2 zeigt eine beispielhafte Zuweisung von Speicherplatz zum Abspeichern einer Datensequenz im Speichersystem der Fig. 1.
  • Fig. 3, ist ein Blockdiagramm eines Speichersystems, in dem auch die Fragesequenz im Gerät abgespeichert wird.
  • Fig. 4 ist eine Blockdiagramm einer zweiten Ausführungsform der vorliegenden Erfindung.
  • Fig. 5 ist ein detaillierteres Blockdiagramm des Abrufprozessors gemäß Fig. 4.
  • Fig. 6 ist ein Blockdiagramm einer dritten erfindungsgemäßen Ausführungsform.
  • Gemäß einem Beispiel der vorliegenden Erfindung wird eine Regel abgespeichert in der Form einer Symbolkette, die drei Elementtypen enthalten kann: Begrenzer, Konstante und Variable. Begrenzer, dargestellt durch "(" und ")", werden benutzt, um die Grenzen der Datensequenzen und Unterausdrücke innerhalb der Datensequenzen zu kennzeichnen. Die Zeichenkette (a,b, (f,g),c) stellt eine Datensequenz dar, in der "a" das erste Element, "b" das zweite, die Kombination "f,g" das dritte und "c" das vierte ist. Konstante sind Elemente, die Festwerte haben, z. B. "ißt" und "hungrig" im obigen Problem. Eine Abfrage nach (a,b,c) kann nur dann befriedigt werden, wenn alle drei Konstanten a, b und c vorkommen, und zwar in der gezeigten Reihenfolge, und kein anderes Element zwischen ihnen liegt. Variable, die durch "?" oder "?x", wobei x ein wahlweiser Name ist, gekennzeichnet sind, können durch eine beliebige Konstante oder eine andere Variable oder Kombination aus Konstanten und Variablen, die durch ein Paar Begrenzer eingegrenzt sind, befriedigt werden. Sie stellen eine Kurzschrift für "paßt zu allem" dar. Somit wird eine Anforderung zum Finden aller Datenfolgen der Form (a,?,b) zurückgeben: (a,x,b), (a,?,b), (a,z,b) (a,(d,e),b) usw.
  • Im obigen Beispiel würde also der Speicher nach Regeln der Form "(wenn, (?x, ißt), dann, (?x, ist, ?y))" durchsucht. Eine Abfrage nach allen Datensequenzen der Form "(wenn, ?, dann, ?)" würde alle "wenn-dann" Datenfolgen einschließlich der oben genannten abrufen. Dieser Typ Paßt-Regel-Syntax ist dem Fachmann bekannt, der mit der Programmsprache Prolog vertraut ist (PROGRAMMING IN PROLOG, W.F. Clocksin und C.S. Mellish, 2. Ausgabe, 1984, Springer-Verlag, Berlin, Heidelberg, New York, London, Paris, Tokio).
  • Da nun in herkömmlichen Systemen die Suchzeit proportional zur Länge der durchsuchten Datenbank ist, läßt sich die Suchzeit verkürzen durch Aufteilen des Speichers, der die Datenbank speichert, in eine Reihe Untereinheiten, die jede mit ihrer eigenen Prozessoreinheit ausgestattet ist. Das ist gleichbedeutend mit dem Aufteilen der Suchaufgabe auf eine Reihe von kleineren Von-Neumann-Maschinen, die jede genügend Speicherplatz enthält, um den relevanten Teil der Fragesequenz und eine oder mehrere Datensequenzen aufzunehmen. Die schnellste Suche mit einem solchen System würde realisiert mit einem System, das eine Verarbeitungseinheit in jedes Speicherwort eingebaut hätte. Dann würde in einem einzigen Speicherzyklus der Speicher sich selbst mit einem Fragesymbol vergleichen und jede Datenfolge identifizieren, in der das Fragesymbol auftaucht. Das optimale Verhältnis der Datenbankwörter mit den Prozessoreinheiten hängt eindeutig von der Komplexheit der Verarbeitungseinheit gegenüber der des Speichers ab. Da die Verarbeitungseinheit nur ein paar Befehle benötigt, um die Suchfunktion auszuführen, kann sie eine viel einfachere Konstruktion haben, als eine Zentralprozessoreinheit für allgemeine Zwecke. Dementsprechend ist eine relative hohe Dichte der Prozessoreinheiten möglich.
  • Dieser Typ einer sich hochwiederholenden Modularstruktur ist besonders geeignet für moderne integrierte VLSI-Schaltkreis- Fertigungstechniken.
  • Dieser Typ sich wiederholender Rechnerhardware ist auch gut geeignet für das Datenbank-Suchproblem, weil sich die Verarbeitungszeit nicht verlängert, wenn die Datenbankgröße zunimmt, weil ja jede Speicherkapazitätseinheit ihre eigene Suchkapazität in der Form der eingebauten Prozessoreinheit bei sich hat. Daher nimmt die Rechnerkapazität des Systems mit der Vergrößerung der Datenbank zu. Ferner benötigt die Zentralprozessoreinheit des Systems, anders als die Prozessoreinheiten, die die Suchfunktion im Speicher ausführen, bei dieser Art Konstruktion verhältnismäßig wenig zusätzlichen Platz. Sie braucht nicht Adressen und sonstige Daten, die dem Speicherinhalt zugeordnet sind, zu verfolgen. Sie muß nur die Fragesequenz an eine Speichereinheit schicken, die aus einer Anzahl Modulen besteht, mit den Befehlen, wo das Ergebnis der Suche abgespeichert werden soll.
  • Ein Blockdiagramm eines Geräts, das die vorliegende Erfindung ausführt, ist schematisch unter 10 in Fig. 1 dargestellt. Allgemein gesprochen, besteht es aus einem Speichermittel 12, das an Abrufmittel 32 gekoppelt ist, und aus Aufnahmemitteln 46 zum Kuppeln einer Fragesequenz mit dem Gerät und Auslesen der bestimmten Datensequenz auf einen Bus 47, der das erfindungsgemäße Gerät mit einem äußeren Datenverarbeitungssystem verbindet. Der Speicher ist in Abteile 14 unterteilt. Jedes Abteil wird zum Abspeichern eines Datensequenzsymbols benutzt, aus denen die Datensymbolsequenz besteht, die als Antwort auf eine Fragesymbolsequenz abgerufen werden soll, die über den Kommunikationsbus geschickt wurde. Eine typische Datensymbolsequenz die im Speichermittel 12 abgespeichert ist, wird unter 21 in Fig. 2 gezeigt. Sie besteht aus drei Arten von Symbolen: Konstante, Begrenzer und Variable. Konstante sind durch Buchstaben des Alphabets, Variable durch "?" und Begrenzer durch "(" bzw. ")" gekennzeichnet. Alle Datensequenzen beginnen und enden mit jeweils einem Begrenzer. Andere Ausführungsformen, in denen die Datensequenzen mit anderen, "besonderen" Symbolen anfangen und enden, oder in denen die Information, die das Ende der Datensequenz spezifiziert, in einem besonderen Symbol codiert ist, das vor dem Ende der Datensequenz steht, sind für den Fachmann für Datenverarbeitungssysteme offensichtlich. Eine Datensequenz kann auch Untersequenzen von Symbolen enthalten, die in der Datensequenz eingebettet sind. Solche Untersequenzen beginnen und enden ebenfalls mit Begrenzern. Die Untersequenz, die in Fig. 2 bei 23 beginnt und bei 25 endet, ist typisch für solche Untersequenzen.
  • Nehmen wir wieder Bezug auf Fig. 1; das Abrufmittel 32 ruft alle gespeicherten Datensequenzen ab, die der Fragesequenz entsprechen, die auf dem Kommunikationsbus 47 an dieses angekoppelt sind. Eine Datensequenz ist definiert als einer gegebenen Fragesequenz entsprechend, wenn die zwei Sequenzen durch Ersatz jeder Variablen durch eine Konstante oder eine Konstantenkombination identisch gemacht werden können, wobei diese Konstantenkombination jeweils mit einem Begrenzer beginnt und endet. Die Konstante oder Konstantenkombination wird sich in der Regel bei jeder ersetzten Variablen unterscheiden. Zum Beispiel kann die Datensequenz
  • (a,?,d,e,(k,l),e)
  • identisch gemacht werden mit der Fragesequenz
  • (a, f, d, e, ?, e)
  • durch Ersatz der Variablen in der Datensequenz durch die Konstante "f", und der Variablen in der Fragesequenz durch die Kombination (k,l), d. h. eine Kombination aus Konstanten, die mit einem Begrenzer beginnt und endet.
  • Eine Suche nach allen Datensequenzen, die einer bestimmten Fragesequenz entsprechen, erfordert drei Schritte. Zunächst muß das Gerät für die Suche initialisiert werden. Das beinhaltet das Setzen bestimmter Indikatoren, die nachstehend beschrieben werden. Zweitens muß die anzuwendende Fragesequenz dem Abrufmittel 32 über das Empfangsmittel 46 mitgeteilt werden. Das Abrufmittel 32 führt dann eine Anzahl paarweiser Vergleiche zwischen den Symbolen in der Fragesequenz und den Symbolen in den gespeicherten Datensequenzen durch. Schließlich werden diejenigen Datensequenzen, die der Fragesequenz entsprechen, über den Kommunikationsbus 47 durch das Empfangsmittel 46 ausgelesen. Die genaue Reihenfolge dieser Schritte ist unterschiedlich, je nach der spezifischen Ausführungsform des erfindungsgemäßen Geräts, wie nachstehend noch beschrieben wird.
  • Das in der erfindungsgemäßen bevorzugten Ausführungsform eingesetzte Speichermittel 12 kann entweder ein Festwertspeicher (ROM) oder ein Lese/Schreibspeicher sein. In Systemen, in denen die von den abgespeicherten Datenfolgen dargestellten Datenbanken nicht aktualisiert werden, ist ein Festwertspeicher vorzuziehen, da ein solcher Speicher weniger anfällig für Störungen aus Hintergrundrauschen und sonstigen Quellen ist. Bei Systemen, die die im erfindungsgemäßen Gerät abgespeicherte Datenbank je nach dem besonderen Problem verändern, das von einem äußeren Datenverarbeitungssystem bearbeitet wird, ist ein Speicher vorzuziehen, der sich leicht umprogrammieren läßt. In der bevorzugten Ausführungsform wird dieses Umprogrammieren eingeleitet durch Senden eines oder mehrerer Fragesequenzsymbole für besondere Zwecke an das Abrufmittel 32, gefolgt von einer oder mehreren Datenfolgen, die im Speicher abzuspeichern sind. Weitere Speichermittel, die selektiv umprogrammiert werden können, wie z. B. ein elektrisch löschbarer Festwertspeicher (EEROM), sind dem Fachmann für Datenverarbeitungs-Hardware geläufig.
  • Ein Gerät, das die vorliegende Erfindung implementiert und das keine Parallelverarbeitung praktiziert, ist in Fig. 3 unter 140 gezeigt. Allgemein gesprochen besteht es aus einem Speichermittel 212 zum Abspeichern der Datensymbolsequenzen, einem Abrufmittel 232 zum Durchführen der erforderlichen Operationen, um diese Datensymbolsequenzen abzurufen, und einem Empfangsmittel 246 zum Koppeln einer Fragesequenz an das Gerät. In dieser Ausführungsform enthält das Empfangsmittel 246 ein Abfragespeichermittel 22 zum Abspeichern der Abfragesequenz sowie einen Empfangsschaltkreis 45 zum Ankoppeln des Geräts an den Bus 47. Ausführungsformen, die dieses Abfragespeichermittel nicht benötigen, werden nachstehend beschrieben. Es wird angenommen, daß die Abfragesequenz durch ein äußeres Datenverarbeitungssystem, das mit dem Gerät über das Empfangsmittel 246 an einem Kommunikationsbus 47 herkömmlicher Konstruktion liegt, an das Gerät geschickt wird.
  • Das Speichermittel 212 besteht aus einer Mehrzahl von Datenabteilen 214, die dazu verwendet werden, jeweils ein Datensymbol abzuspeichern. In der bevorzugten Ausführungsform besteht jedes Datenabteil aus einer Vielzahl von Ein-Bit- Speicherzellen 16, die sich in zwei Gruppen unterteilen, eine Datengruppe 20 und eine Identifikationsgruppe 18, wie in Fig. 3(a) gezeigt wird. Die Identifikationsgruppe wird benutzt, um die Information abzuspeichern, die den Symboltyp, d.i. Konstante, Variable oder Begrenzer, kennzeichnet, der im Abteil abgespeichert ist. Da es diese drei Symboltypen gibt, müssen mindestens zwei Binärbits für diesen Zweck zugewiesen werden. Die Datengruppe wird benutzt, um Informationen abzuspeichern, die relevant für das bestimmte, im Abteil abgespeicherte Symbol sind.
  • Wenn z. B. das im Abteil abgespeicherte Symbol die Konstante "a" war, würde die Identifikationsgruppe den Code für eine Konstante, und die Datengruppe würde den Code für "a" enthalten. Die Anzahl der möglichen Konstanten beträgt 2N, wobei N die Anzahl der Bits in der Datengruppe 20 ist. In der bevorzugten Ausführungsform ist N größer als 30, daher ist die Anzahl der unterschiedlichen Konstanten über eine Milliarde. Also kann eine einzige Konstante ein Wort oder einen ganzen englischen Ausdruck beinhalten, nicht nur die Buchstaben des Alphabets, wie in den obigen Beispielen. Ein System mit N=7 würde nützlich sein, um Datensequenzen abzurufen, bei denen die Symbole die im Standard-ASCII-Code codierten Buchstaben des Alphabets darstellen.
  • Begrenzer treten immer paarweise auf. Wenn ein Abteil zum Abspeichern eines Anfangsbegrenzer benutzt wird, wird seine zugeordnete Datengruppe 20 in der bevorzugten Ausführungsform dazu benutzt, die Information abzuspeichern, die nötig ist, um den Ort seines entsprechenden Endbegrenzers anzuzeigen. Wenn z. B. jedes Begrenzerpaar durch eine Kennung gekennzeichnet ist, wird die Kennung in der Datengruppe 20 der Abteile abgespeichert, die benutzt wird, um jeden Begrenzer abzuspeichern.
  • Im Falle einer Variablen kann ein wahlweiser Name in der Datengruppe 20 abgespeichert werden. Obwohl dieser Name von der vorliegenden Vorrichtung nicht benutzt wird, ist er nützlich, wenn man die Datensequenz so machen will, daß sie mehr der englischen Sprache ähnelt. Ferner kann ein solcher Name von anderen, auf höherer Ebene arbeitenden Algorithmen benutzt werden, die Entscheidungen auf der Grundlage anderer Variablentypen treffen. In diesem Falle würde die vorliegende Vorrichtung dazu benutzt werden, Datensequenzen zur Verwendung in einer Datenverarbeitung auszuwählen, die diesen höheren Algorithmus anwenden, der dann eine Teilmenge zu der vom vorliegenden Gerät gelieferten auswählen würde.
  • Wie in Fig. 3 gezeigt wird, enthält das Abfragespeichermittel 22 auch eine Vielzahl von Datenabteilen, gezeigt unter 24, deren jedes aus einer Vielzahl Ein-Bit-Speicherzellen 16 besteht, die in eine Identifizierungsgruppe 28 und eine Datengruppe 30 unterteilt sind, wie in Fig. 3(b) gezeigt wird. Die Identifizierungsgruppe 28 enthält Informationen, die den Typ des im Datenabteil abgespeicherten Fragesymbols kennzeichnen, und die Datengruppe 30 enthält Informationen, die für das bestimmte abgespeicherte Symbol relevant sind. In der bevorzugten Ausführungsform sind die Identifizierungs- und Datengruppen, die für die Fragesymbole benutzt werden, die gleichen, wie sie für die Datensymbole benutzt werden.
  • Das Abrufmittel 232 vergleicht die im Abfragespeichermittel 22 abgespeicherte Fragesequenz mit jeder im Speichermittel 212 abgespeicherten Datensequenz. Dieser Vergleich wird ausgeführt als eine Reihe paarweiser Vergleiche zwischen jeweils einem Fragesequenzsymbol und einem entsprechenden Symbol in der verglichenen Datensequenz. Die ersten zu vergleichenden Symbole sind die ersten Symbole jeder Sequenz. Die nachfolgenden zu vergleichenden Symbole hängen ab vom vorangehenden Vergleich. Wenn der vorangehende Vergleich keine Variable und einen Anfangsbegrenzer betrifft, ist das nächste zu vergleichende Fragesequenzsymbol dasjenige, das auf das Fragesequenzsymbol des vorangehenden Vergleichs folgt, und das nächste Datensequenzsymbol wird dasjenige sein, das auf das Datensequenzsymbol des vorangehenden Vergleichs folgt.
  • Wenn eine Variable in einer Sequenz mit einem Anfangsbegrenzer verglichen wird, der den Anfang einer Untersequenz von Symbolen in der anderen Sequenz markiert, sind die nächsten zu vergleichenden Symbole das auf die Variable folgende Symbol und das auf den Begrenzer folgende Symbol, der das Ende der betreffenden Untersequenz kennzeichnet. Das ermöglicht es, daß eine Variable in einer Sequenz durch eine eingebettete Untersequenz beliebiger Länge in der anderen Sequenz befriedigt wird. Wenn zum Beispiel die Datensequenz
  • (a,?,x)
  • mit der Fragesequenz
  • (a,(k,m),y)
  • verglichen werden soll, wären die vom Abrufmittel 232 auszuführenden paarweisen Vergleiche wie folgt. Zunächst würde das "(" in der Datensequenz mit dem "(" in der Fragesequenz verglichen. Als nächstes würde das "a" in der Datensequenz mit dem "a" in der Fragesequenz verglichen. Als drittes würde das "?" in der Datensequenz mit dem "(" in der Fragesequenz verglichen. Da das "(" den Anfang der Untersequenz "k,m" markiert, wären die nächsten zu vergleichenden Symbole das "y", das dem ")" in der Fragesequenz folgt, und das "x", das dem "?" in der Datensequenz folgt.
  • Wegen dieser "Sprünge" über die Untersequenzen sind erste und zweite Indikatormittel zum Anzeigen des jeweils nächsten Symbols in jeder Sequenz erforderlich, das im nächsten paarweisen Vergleich zwischen einem aus dieser Sequenz genommenen Datensequenzsymbol und einem aus der Fragesequenz genommenen Fragesequenzsymbol benutzt wird. Diese zwei Indikatoren sind erforderlich für jede Datensequenz, die im Speichermittel 212 abgespeichert ist und die aktiv mit der Fragesequenz verglichen wird. In der Ausführungsform gemäß Fig. 3 wird nur jeweils eine Datensequenz gleichzeitig verglichen. Andere Ausführungsformen, in denen eine ganze Anzahl Datensequenzen gleichzeitig verglichen werden, werden nachstehend besprochen. Die bevorzugte Methode zur Implementierung dieser Indikatoren hängt ab von der Speicherweise, die für die Datensequenz gewählt wird. Verschiedene Alternativen werden nachstehend besprochen.
  • Hier muß darauf hingewiesen werden, daß eine gegebene Untersequenz, die in einer Daten- oder Fragesequenz eingebettet ist, selbst auch eine oder mehrere Untersequenzen enthalten kann. So kann z. B. die zu vergleichende Datensequenz die folgenden Symbole aufweisen:
  • (a,b,(d,e,(f,g),h),i).
  • Es muß also ein Mittel vorgesehen werden, das sicherstellt, welcher Endbegrenzer ")", der das Ende einer Sequenz bzw. Untersequenz markiert, zu einem gegebenen Anfangsbegrenzer "(" gehört, der den Anfang der Sequenz bzw. Untersequenz markiert, die "übersprungen" werden muß. Vorzugsweise werden drei Mittel angewandt. Erstens kann einem jeden Begrenzerpaar eine Kennung zugeordnet sein. Z.B. kann jedes Begrenzerpaar in der obigen Sequenz eine zugeordnete Zahl aufweisen, z. B. (&sub0;a,b, (&sub1;d,e, (&sub2;f,g)&sub2;,h,i)&sub1;,k)&sub0;. Wenn dann das Abrufmittel ein "(" erfaßt, braucht es nur die zugeordnete Kennung zu lesen und dann in der betreffenden Sequenz nach vorwärts zu suchen, bis es ein ")" mit der gleichen Kennung antrifft. Damit dieses System erfolgreich arbeitet, darf eine Kennung, die für ein bestimmtes Begrenzerpaar benutzt wird, innerhalb der durch dieses Begrenzerpaar gekennzeichneten Untersequenz nicht noch einmal verwendet werden.
  • Zweitens, der Ort des jeweils zugehörigen Endbegrenzers kann mit jedem Anfangsbegrenzer gespeichert werden, der den Anfang einer Folge oder Unterfolge von Symbolen kennzeichnet. Das Abrufmittel würde dann auf den Ort "springen", der im Anfangsbegrenzer angegeben ist. In der bevorzugten Ausführungsform, die dieses Mittel einsetzt, wird dieser Ort als die Anzahl der Symbole abgespeichert, die zu überspringen sind, um das nächste Symbol nach dem zugehörigen Endbegrenzer zu erreichen. Diese Form der Codierung des Orts des zugehörigen Endbegrenzers hat zwei Vorteile. Erstens ist er unabhängig von der absoluten Adresse der Daten- oder Fragesequenz, in der er vorkommt. Daher kann eine Datenfolge im Speicher ohne Änderung dieser Sprungadresse umgespeichert werden. Zweitens ist der benötigte Speicherplatz zum Abspeichern dieser Information im allgemeinen kleiner als er für die Abspeicherung des Begrenzers in Bezug auf einen Festpunkt im Speicher erforderlich ist, weil die Sprungzahl kleiner ist als die maximale Länge der abgespeicherten Datensequenz. Ein System, das den Speicherort des zugehörigen Endbegrenzers als Sprungort benutzt, würde eine Zahl für jeden Anfangsbegrenzer abspeichern müssen, die ebenso groß ist wie die Anzahl Symbole, die im Speichermittel 212 abgespeichert sind.
  • Schließlich kann der Ort des jeweils zugeordneten Endbegrenzer festgestellt werden durch Zählen der Anzahl der Anfangs- und Endbegrenzer, die nach dem betreffenden Anfangsbegrenzer angetroffen werden. So könnte z. B. das Abrufmittel 232 einen Zähler enthalten, mit dem die Anzahl der Anfangs- und Endbegrenzer gezählt würden, die das Abrufmittel beim symbolweisen Durchsuchen der Sequenz, die der Anfangsbegrenzer enthält, antrifft. Der Zähler würde jedesmal dann inkrementiert, wenn er auf einen Anfangsbegrenzer stößt, und jedesmal dann dekrementiert, wenn er auf einen Endbegrenzer stößt.
  • Wenn dann der Zähler in seinen Anfangszustand zurückkehrt, wäre die vom Originalanfangsbegrenzer markierte Untersequenz übersprungen. Das nächste in einem Vergleich zu benutzende Symbol wäre dann das nach dem Endbegrenzer, was den Zähler wieder in seinen Anfangszustand zurückstellen würde. Hier muß der Anfangsbegrenzer vom Zähler ebenfalls erfaßt werden.
  • Wie oben gesagt, führt das Abrufmittel 232 paarweise Vergleiche zwischen einem Fragesequenzsymbol und einem Datensequenzsymbol aus. Nehmen wir wieder Bezug auf Fig. 3, das zu vergleichende Datensequenzsymbol ist durch ein erstes Indikatormittel 34 gekennzeichnet. Das beim Vergleich zu benutzende Fragesequenzsymbol wird durch ein zweites Indikatormittel 36 gekennzeichnet. In der bevorzugten Ausführungsform besteht jedes dieser Indikatormittel 34, 36 aus einem Zeiger, der unter 33 und 37 dargestellt wird, und der mittels eines Schieberegisters implementiert wird, das entlang der ganzen Länge des betreffenden Speicherblocks läuft. Ein Bit in diesem Schieberegister wird auf "1" gesetzt und die übrigen Bits sind auf "0" gesetzt. Der Zeiger wird vorgeschoben durch Senden eines Schiebebefehls an dieses Register.
  • Die durch dieses erste und zweite Indikatormittel angezeigten Symbole werden durch ein Vergleichermittel 28 verglichen. Das vom ersten Indikatormittel 34 angezeigte Datensymbol wird durch eine erste Leitwegbestimmungsschaltung 40, die Teil des ersten Indikatormittels 34 ist, in das Vergleichermittel 28 geschickt. Auf ähnliche Weise wird das Fragesequenzsymbol, das vom zweiten Indikatormittel 36 angezeigt wird, durch eine zweite Leitwegbestimmungsschaltung 42, die Teil des zweiten Indikatormittels 36 ist, in das Vergleichermittel 28 geschickt. In der bevorzugten Ausführungsform sind diese Schiebeschaltungen 40 und 42 herkömmliche Multiplexerschaltungen.
  • Das Vergleichermittel 28 generiert ein Ausgangssignal, das zwei alternative Zustände hat, "paßt" und "paßt nicht". Das "Paßt"-Signal wird generiert, wenn die zwei verglichenen Symbole gleich sind oder eines derselben eine Variable ist. Ein Flaggenmittel 48 mit zwei alternativen Zuständen überwacht dieses Ausgangssignal. Das Flaggenmittel 48 wird auf den ersten oder "Paßt"-Zustand gesetzt, wenn ein Vergleich zwischen dem ersten Fragesequenzsymbol und dem entsprechenden Symbol in einer der Datensequenzen beginnt. Wenn einer der paarweisen Vergleiche zwischen einem Fragesymbol und einem Datensymbol aus dieser Datensequenz keinen "Paßt"-Ausgang generiert, wird das Flaggenmittel 48 auf den zweiten, d.i. den "Paßt nicht"-Zustand gesetzt, der anzeigt, daß die betreffende Datensequenz nicht mit der Fragesequenz übereinstimmt, und der Vergleichsprozeß wird abgebrochen. Wenn das Flaggenmittel 48 nach dem Vergleich des letzten Fragesequenzsymbols mit seinem entsprechenden Datensequenzsymbol in der betreffenden Datensequenz noch immer im ersten Zustand steht, dann bewirkt es, daß diese Datensequenz vom Aufnahmemittel 46 ausgelesen wird.
  • Ein Indikatorvorschubmittel 44, das im Abrufmittel 232 enthalten ist, wird benutzt, um das erste und das zweite Indikatormittel zu steuern und die verschiedenen Initialisierungsprozesse auszuführen. In dieser Ausführungsform wird die Aufnahme des letzten Symbols in der Fragesequenz dazu benutzt, das Anlaufen der Vergleichsoperationen zu signalisieren. Das Indikatorvorschubmittel stellt das erste Indikatormittel 34 auf Anzeigen des ersten Symbols in der ersten Datensequenz, die im Speichermittel 212 abgespeichert ist, und das zweite Indikatormittel 36 auf Anzeigen des ersten Symbols der Fragesequenz. Das Indikatorvorschubmittel initialisiert dann das Flaggenmittel 48 in seinen ersten Zustand und läßt den ersten Vergleich anlaufen durch Signalisieren an das Vergleichermittel 28. Nach Abschluß jedes Vergleichs testet das Indikatorvorschubmittel 44 das Flaggenmittel 48, um festzustellen, ob es auf seinen zweiten Zustand gesetzt wurde, um anzuzeigen, daß die Symbole nicht passen. Wenn das Flaggenmittel 48 im zweiten Zustand ist, schiebt das Indikatorvorschubmittel das erste Indikatormittel 34 auf das erste Symbol der nächsten Datensequenz, stellt das zweite Indikatormittel 36 zurück, um auf das erste Symbol der Fragesequenz zu zeigen, setzt das Flaggenmittel 48 auf seinen ersten Zustand, und signalisiert dann, daß die angezeigten Symbole verglichen werden.
  • Wenn das Flaggenmittel 48 anzeigt, daß die zwei Symbole passen, prüft das Indikatorvorschubmittel 44, ob das letzte Symbol der Fragesequenz mit dem entsprechenden Datensequenzsymbol verglichen wurde. Wenn ja, signalisiert das Indikatorvorschubmittel 44 dem Empfangskreis 45 im Empfangsmittel 246, die betreffende Datensequenz auszulesen. Es schiebt dann das erste Indikatormittel 34 auf das erste Symbol der nächsten Datensequenz vor, setzt das zweite Indikatormittel auf das erste Fragesequenzsymbol zurück, und signalisiert dem Vergleichermittel zu beginnen.
  • Wenn das letzte verglichene Fragesymbol nicht das letzte Symbol in der Fragesequenz war, schiebt das Indikatorvorschubmittel 44 das erste Indikatormittel 34 auf das Datensequenzsymbol, das auf das eben verglichene folgt, und das zweite Indikatormittel 36 auf das nächste Fragesequenzsymbol vor, das auf das eben verglichene folgt, falls nicht eines der eben verglichenen Symbole eine Variable und das andere ein Anfangsbegrenzer war. In diesem Fall schiebt das Indikatorvorschubmittel 44 das Indikatormittel in der Sequenz, in der die Variable steht, auf das Symbol vor, das auf diese Variable folgt, und es schiebt das Indikatormittel in der Sequenz mit dem Anfangsbegrenzer auf das Symbol vor, das dem Endbegrenzer folgt, der zu dem betreffenden Anfangsbegrenzer gehört.
  • Sobald das letzte Datensequenzsymbol der letzten im Speichermittel 212 abgespeicherten Datensequenz vom Vergleichermittel 38 verglichen wurde, tritt das Indikatorvorschubmittel 44 in einen Wartezustand ein, bis eine weitere Fragesequenz zum Aufnahmemittel 46 geschickt wird.
  • Das Indikatorvorschubmittel 44 kann auch Datensequenzen vom Aufnahmemittel in das Speichermittel 212 kopieren. In der bevorzugten Ausführungsform wird das durch ein vorbestimmtes Symbol angezeigt, das der betreffenden Datensequenz vorgestellt wird. Ausführungsformen, bei denen diese Funktion durch ein Signal auf einer oder mehreren Busleitungen 47 signalisiert wird, sind für den Fachmann offensichtlich.
  • Die Wahl der Speichermittel und Abrufmittel hängt im allgemeinen von den Forderungen an Geschwindigkeit und Speicherdichte im Datenverarbeitungssystem ab, mit denen das erfindungsgemäße Gerät gekoppelt wird. Im Prinzip können die Datensequenzen in einem beliebigen einer Anzahl unterschiedlicher physikalischer Speichermittel abgespeichert werden, wie nachstehend noch beschrieben wird. In der bevorzugten Ausführungsform wird eine parallele Verarbeitung angewandt, um die zum Abrufen der abgespeicherten Datensequenz benötigte Zeit möglichst zu reduzieren. Zu diesem Zweck wird das Abrufmittel 32 mit einer Anzahl Abrufprozessoren zum Vergleichen eines Fragesequenzsymbols mit einem Datensequenzsymbol implementiert. Die Zeit, die zum Durchsuchen der abgespeicherten Datensequenzen nach denjenigen Sequenzen, die einer bestimmten Fragesequenz entsprechen, benötigt wird, hängt ab von der Geschwindigkeit und der Anzahl dieser Abrufprozessoren. Ein System, in dem das Verhältnis der Prozessoren zu den Speicherstellen groß ist, wird die entsprechenden Datensequenzen in der kürzesten Zeit abrufen, wobei die kürzeste Abrufzeit erreichbar ist mit einem Prozessor je abgespeicherte Datensequenz, die eine genügend große Geschwindigkeit aufweisen, um sicherzustellen, daß jedes Datensequenzsymbol, das mit einer gegebenen Fragesequenz verglichen werden muß, für den entsprechenden Abrufprozessor verfügbar ist, wenn die Fragesequenz in das vorliegende Gerät eingegeben wird.
  • Dieses System wird eine geringere Speicherdichte und höhere Kosten je abgespeichertes Datensymbol haben, als Systeme mit weniger Abrufprozessoren, bei dem die Schaltungsvorrichtungen, die zum Bau der zusätzlichen Abrufprozessoren benutzt würden, dazu verwendet werden, zusätzliche Speicherabteile aufzubauen. Somit gibt es einen Kompromiß zwischen Geschwindigkeit und Kosten je abgespeichertem Datensymbol.
  • Die möglichen Speichervorrichtungen zum Abspeichern der Datensequenzen können unterteilt werden in zwei übergeordnete Klassen, statische und umlaufende Speichervorrichtungen. Standardspeicherchips mit wahlweisem Zugriff, die in Rechnerspeichervorrichtungen benutzt werden, sind typisch für statische Speichervorrichtungen. Drehende Speichervorrichtungen, wie magnetische und optische Platten sowie Schieberegister-Speicherschleifen sind typisch für umlaufende Speichervorrichtungen. Der benutzte Speichervorrichtungstyp bestimmt den optimalen Modus, in dem die Fragesequenz mit den Datensequenzen verglichen wird.
  • Wenn für die Datensequenzen ein statisches Speichersystem benutzt wurde, ist ein passendes System, in dem die Fragesequenz an den Datensequenzen vorbei "umläuft", optimal. Hier wird jedes Symbol der Fragesequenz mit dem entsprechenden Symbol in jeder der abgespeicherten Datensequenzen verglichen. Wenn alle Vergleiche, die ein bestimmtes Fragesequenzsymbol betreffen, abgeschlossen sind, wird das nächste Fragesequenzsymbol mit jedem der entsprechenden Symbole in den abgespeicherten Datensequenzen verglichen, und so weiter. Jeder der Datensequenzen muß eine Flagge zugeordnet werden, um alle Datensequenzen verfolgen zu können, die möglicherweise zu den betreffenden Fragesequenzen auf jeder Stufe der Vergleichsoperation passen könnte. Die Flagge wird zu Beginn der Abrufoperation gesetzt. Wenn einer der paarweisen Vergleiche negativ ausfällt, wird die dieser Datensequenz, die das nicht passende Symbol enthält, zugeordnete Flagge zurückgesetzt. Diejenigen Datensequenzen, die dann noch immer mit einer Flagge in deren Anfangszustand markiert sind, nachdem das letzte Fragesequenzsymbol mit den entsprechenden Symbolen in den abgespeicherten Sequenzen verglichen wurde, werden dann an das externe Datenverarbeitungssystem gekoppelt, mit dem das erfindungsgemäße Gerät verbunden ist.
  • Diese Ausführungsform setzt lediglich voraus, daß das jetzt benutzte Fragesequenzsymbol, das in den paarweisen Vergleichen benutzt wird, in der vorliegenden Vorrichtung abgespeichert wird.
  • Es ist daher einsetzbar für Suchen, die Fragesequenzen beliebiger Länge beinhalten. Da eine Variable in einer Datensequenz einer sehr lange Untersequenz in der Fragesequenz entsprechen kann, ist es nicht möglich, im vorhinein die längste Fragesequenz zu bestimmen, die angetroffen werden kann, selbst wenn man die maximale Länge der Datensequenzen kennt, die im Gerät abgespeichert werden müssen.
  • Eine Ausführungsform der vorliegenden Erfindung, die ein statisches Speichersystem für dieses Abspeichern der Datensequenzen und multiple Prozessoren zur Durchführung der Vergleiche anwendet, ist in Fig. 4 bei 80 dargestellt. Hier wurde das Speichermittel 12, das in Fig. 1 gezeigt wird, implementiert als eine Vielzahl gesonderter statischer Speicher 92. Jeder statische Speicher 92 besteht aus einem zusammenhängenden Block von Abteilen 144. Jedes Abteil 144 wird benutzt, um ein Datensequenzsymbol abzuspeichern, wie oben unter Bezugnahme auf Fig. 3 beschrieben ist. Jeder der statischen Speicher 92 ist mit einem gesonderten Abrufprozessor 94 verbunden, der einen Vergleichsschaltkreis zum Durchführen aller paarweisen Vergleiche zwischen den im genannten statischen Speicher abgespeicherten Datensequenzsymbolen und einem Fragesequenzsymbol enthält, das über den Bus 86 an das erfindungsgemäße Gerät gekoppelt ist. In der bevorzugten Version dieser Ausführungsform wird dieses Fragesymbol in einem Puffer 82 gehalten, der aus einem Block Ein-Bit-Speicherzellen gebildet wird, ähnlich dem, der in den Abteilen 144 verwendet wird, mit denen die Datensequenzsymbole abgespeichert werden. Das Aufnahmemittel 84 lädt den Puffer 82 aus dem Kommunikationsbus 86, der die vorliegende Erfindung mit einem externen Datenverarbeitungssystem verbindet. Die einzelnen Abrufprozessoren 94 kommunizieren miteinander und mit dem Abrufmittel 84 über einen zweiten Bus 98. Die Inhalte des Puffers 82 werden jedem einzelnen Abrufprozessor 94 über einen Fragebus 99 übermittelt. Ausführungsformen, in denen der Puffer 82 im externen Datenprozessorsystem enthalten ist, das an das erfindungsgemäße Gerät gekoppelt ist, sind dem Fachmann natürlich ohne weiteres geläufig.
  • Ein Blockschaltbild mit weiteren Einzelheiten eines beispielhaften Abrufprozessors 94 und des ihm zugeordneten statischen Speichers 92 wird unter 93 in Fig. 5 gezeigt. Jeder Abrufprozessor 94 enthält ein Vergleichermittel 122 zum Vergleichen eines Datensequenzsymbols, das im statischen Speicher 92 abgespeichert ist, der mit dem Abrufprozessor 94 gekoppelt ist, mit dem Fragesymbol, das vom Fragebus 99 her geliefert wird. Das mit dem Fragesymbol zu vergleichende Datensequenzsymbol wird identifiziert durch ein Indikatormittel 120, das eine Leitwegbestimmungsschaltung 126 zum Ankoppeln dieses Datensequenzsymbols mit dem Vergleichermittel 122 und einen Zeiger 121 enthält. Dieses Indikatormittel 120 wird gesteuert von einem Indikatorvorschubmittel 124.
  • Da diese Ausführungsform durch Vergleichen eines gegebenen Fragesymbols mit jedem entsprechenden Symbol in jeder der abgespeicherten Datensequenzen arbeitet, bevor es zum Vergleichen des nächsten Fragesymbols übergeht, muß ein gesondertes Zeigermittel für jede Datensequenz vorgesehen werden, das jeweils auf das nächste Datensequenzsymbol in der betreffenden Datensequenz zeigt, die mit einem Fragesymbol verglichen werden muß. Diese Zeiger sind in einem gesonderten Zeigerspeichermittel 100 abgespeichert, das mit dem Indikatorvorschubmittel 124 gekoppelt ist. Das Zeigerspeichermittel 100 ist unterteilt in Zeiger 102, die jeweils aus drei Gruppen Ein-Bit-Speicherzellen 108 bestehen, wie in Fig. 5(a) gezeigt wird.
  • Jeder Zeiger spezifiziert ein Symbolpaar, das durch dieses Vergleichermittel 122 verglichen werden muß, d.i. ein Symbol aus der Fragesequenz und ein Symbol aus einer Datensequenz, die im statischen Speicher 92 abgespeichert ist, der mit dem Vergleichermittel 122 gekoppelt ist. Die Zeigergruppe 106 zeigt auf den Ort des nächsten zu vergleichenden Datensequenzsymbols, das in einer der Datensequenzen mit den Symbolen verglichen wird, die im statischen Speicher 92 abgespeichert sind, der mit dem betreffenden Indikatorvorschubmittel 124 verbunden ist. Die zweite Gruppe besteht aus einer Halt-Flagge 104 und hat einen von zwei alternativen Zuständen "Halt" und "Bereit". Der Zustand "Halt" zeigt an, daß das mit dem Datensequenzsymbol, dessen Ort in der ersten Gruppe 106 angegeben ist, zu vergleichende Fragesequenzsymbol noch nicht auf dem Fragebus 99 liegt. Die dritte Gruppe 107 wird benutzt, um Informationen abzuspeichern, die zur Identifizierung eines Fragesequenz-Endbegrenzers benutzt wird, der zu einem gegebenen Fragesequenz-Anfangsbegrenzer gehört.
  • Das zweite Indikatormittel 36 und die zweite Leitwegbestimmungsschaltung 42, die in der Ausführungsform gemäß Fig. 3 gezeigt werden, sind in dieser Ausführungsform nicht erforderlich. Die Halt-Flagge 104 und die dritte Gruppe 107 übernehmen die gleiche Funktion wie das zweite Indikatormittel 36, das in der Ausführung gemäß Fig. 3 gezeigt wird; d. h., sie identifizieren das nächste Fragesequenzsymbol, das in der paarweisen Vergleichsoperation benutzt werden soll. Da zu einer gegebenen Zeit immer nur ein einziges Fragesymbol verfügbar ist, ist auch nur eine Vorrichtung mit zwei Zuständen erforderlich, um anzuzeigen, ob das derzeitige Fragesymbol oder ein noch zu empfangendes Fragesymbol das zu vergleichende ist. Die zweite Leitwegbestimmungsschaltung 42 ist in dieser Ausführungsform nicht nötig. In der Ausführungsform gemäß Fig. 4 wird diese Leitwegbestimmungsfunktion durch das externe Datenverarbeitungssystem ausgeführt, das die Suchsequenz Symbol für Symbol an das erfindungsgemäße Gerät schickt.
  • Da nun jedes Suchsymbol an den Abrufprozessor 94 auf dem Fragebus 99 gekoppelt ist, läuft das Indikatorvorschubmittel 124 zyklisch durch die Zeiger 102 im zugeordneten Zeigerspeichermittel 100. Für jeden Zeiger 102, dessen zugeordnete Halt-Flagge 104 im Bereit-Zustand steht, bewirkt das Indikatorvorschubmittel 124, daß das Vergleichermittel 122 das von der Zeigergruppe identifizierte Datensequenzsymbol 106 dieses Zeigers 102 mit dem Fragesequenzsymbol auf dem Fragebus 99 vergleicht. Wenn das Vergleichermittel 122 ein Ausgangssignal generiert, das anzeigt, daß das betreffende Datensequenzsymbol zu dem Fragesymbol paßt, verändert das Indikatorvorschubmittel 124 die Zeigergruppe 106, die der betreffenden Datensequenz zugeordnet ist, so daß sie das nächste Datensequenzsymbol in der Datensequenz identifiziert, das im paarweisen Vergleich mit einem Fragesymbol benutzt werden soll. Das Vergleichermittel 122 generiert dieses Ausgangssignal und zeigt an, daß das betreffende Datensequenzsymbol zu dem Fragesymbol paßt, wenn die beiden Symbole identisch sind oder wenn eines dieser Symbole eine Variable ist.
  • Wenn ein variables Datensequenzsymbol mit einem Anfangsbegrenzer-Fragesequenzsymbol auf dem Fragebus 99 verglichen wird, setzt das Indikatorvorschubmittel die Halt-Flagge 104 im Zeiger 102, der das betreffende variable Datensequenzsymbol spezifiziert, und speichert die benötigten Daten zur Erkennung des entsprechenden Endbegrenzers in der dritten Gruppe 107 dieses Zeigers 102 ab. Wen das Indikatorvorschubmittel auf eine Halt-Flagge 104 im Halt-Zustand trifft, prüft es das derzeit auf dem Fragebus 99 liegende Fragesymbol, ob es der Endbegrenzer entsprechend einem Anfangsbegrenzer ist, der bewirkt hat, daß die Halt-Flagge 104 in den Halt-Zustand gesetzt wurde. Wenn es so ist, setzt das Indikatorvorschubmittel die Halt-Flagge 104 wieder zurück in den Bereit- Zustand.
  • Wenn ein Datensequenzsymbol, das von einem der Zeiger 102 angezeigt wird, keinen Ausgang aus dem Vergleichermittel 122 generiert, was andeutet, daß das Symbol dem Fragesequenzsymbol entspricht, mit dem es verglichen wurde, wird die Zeigergruppe 106 im entsprechenden Zeiger 102 auf einen vorgegebenen Wert gesetzt, der andeutet, daß der Zeiger nicht mehr arbeitet, um ein bestimmtes Datensequenzsymbol zu kennzeichnen. Wenn alle Indikatoren in diesen vorgegebenen Zustand gesetzt sind, dann gibt es keine Datensequenz im Gerät, die der Fragesequenz entspricht, und ein besonderes Ausgangssignal wird über den Kommunikationsbus 86 zu dem externen Prozessor geführt, der mit dem erfindungsgemäßen Gerät gekoppelt ist. Das ermöglicht, daß der externe Datenprozessor die Fragesequenz abbricht, um Zeit zu sparen.
  • Wenn eine bestimmte Datensequenz Speicherabteile 144 in mehr als einem statischen Speicher 92 besetzt, dann wird das Indikatorvorschubmittel 124 in einem Abrufprozessor 94 dem benachbarten Indikatorvorschubmittel 124 über den Bus 98 signalisieren, wenn der nächste zu machende Vergleich mit einem Symbol von dieser Datensequenz ein Symbol betrifft, das in einem Speicherabteil 144 im benachbarten statischen Speicher 92 abgespeichert ist. Dieses benachbarte Indikatorvorschubmittel 124 ordnet dann in seinem Zeigerspeicherblock 100 dieser Datensequenz einen Zeiger 102 zu.
  • Nachdem das letzte Fragesymbol auf den Fragebus übertragen und mit seinem entsprechenden Datensequenzsymbol verglichen wurde, wird jede Datensequenz, die alle paarweisen Vergleiche durchlaufen hat, wie von den Zeigern 102 in den empfangenden Prozessoren angezeigt wird, dann über den Kommunikationsbus 86 an das externe Datenverarbeitungssystem ausgelesen. Dieses sind dann die Datensequenzen, in denen das letzte Symbol der Datensequenz mit dem letzten Symbol dieser Fragesequenz verglichen wurde.
  • Der Grad der Parallelverarbeitung, der möglich ist, hängt ab von der Anzahl der Abrufprozessoren 94. Da nur ein Datensequenzsymbol aus jeder abgespeicherten Datensequenz mit einem gegebenen Fragesymbol verglichen wird, wird der höchste Grad der parallelen Verarbeitung erreicht, wenn jeweils ein Abrufprozessor 94 je abgespeicherter Datensequenz vorhanden ist.
  • Wenn ein umlaufendes Abspeichersystem für die Datensequenzen verwendet wird, kann die Fragesequenz statisch bleiben und die Datensequenzen werden mit ihr verglichen, wobei jede Datensequenz an der Fragesequenz "vorbeiströmt". Eine Ausführungsform der vorliegenden Erfindung, die einen umlaufenden Speicher verwendet, wird unter 50 in Fig. 6 dargestellt. Die Datensequenzen sind in einer Speicherschleife 52 gespeichert, die eine Vielzahl von Speicherabteilen 314 aufweist, wobei jedes Abteil Speicherplatz für ein Datensequenzsymbol bietet. Die Abteile können aus einem Ein-Bit- Speicherzellenblock aufgebaut sein in einer Weise, die der Ausführungsform in Fig. 3 ähnlich ist, wobei jedes Abteil in eine Identifizierungsgruppe und eine Datengruppe unterteilt ist, die die gleichen Funktionen ausüben, wie die entsprechenden Gruppen in dieser Ausführungsform. Die Daten, die in der Speicherschleife 52 abgespeichert sind, laufen an einem Abgriffspunkt 54 vorbei, der zum Ankoppeln an ein Vergleichermittel 238 und zum Lesen und Schreiben durch das Indikatorvorschubmittel 244 dient. In dieser Ausführungsform werden die Funktionen des ersten Indikatormittels 34, das in Fig. 3 gezeigt wird, durch eine Halt-Flagge 56 ausgeübt, die zwei alternative Zustände, "Halt" und "Bereit" aufweist, die jeweils anzeigen, ob das im jetzigen Augenblick an das Vergleichermittel 238 gekoppelte Datensequenzsymbol mit dem Fragesymbol, das durch das Indikatormittel 236 identifiziert wird, verglichen werden soll oder nicht. Wenn die Halt-Flagge im Halt-Zustand ist, wird das Vergleichermittel 238 vom Vergleichen mit dem in diesem Augenblick am Abgriffspunkt 54 stehenden Datensequenzsymbol abgehalten. Das Indikatorvorschubmittel 244 setzt die Halt-Flagge in den Bereit-Zustand, wenn das erste Fragesymbol der Fragesequenz mit dem ersten Datensequenzsymbol verglichen wird. Die Halt-Flagge 56 wird in den Halt-Zustand gesetzt, wenn ein variables Fragesequenzsymbol mit einem Anfangsbegrenzer verglichen wird. Die Halt- Flagge 56 wird in den Bereit-Zustand zurückgesetzt, wenn der Endbegrenzer, der zu diesem Anfangsbegrenzer gehört, der bewirkt hat, daß die Halt-Flagge 56 in den Halt-Zustand gesetzt wurde, vom Indikatorvorschubmittel 244 am Zugriffspunkt 54 abgelesen wird.
  • Das Fragesequenzsymbol, das in jedem Vergleich benutzt werden muß, wird gekennzeichnet durch ein Indikatormittel 236. Das Anzeigemittel 236 wird gesteuert vom Indikatorvorschubmittel 244. Es enthält eine Leitwegbestimmungsschaltung 242 zum Ankoppeln des bestimmten Suchsymbols an das Vergleichermittel 238, und einen Zeiger 237 zum Identifizieren eines Abteils in einem Fragespeichermittel 222, in dem die Fragesequenz abgespeichert ist.
  • Ein Flaggenmittel 248 wird benutzt, um Datensequenzen zu kennzeichnen, in denen alle paarweisen Vergleiche zwischen Datensequenzsymbolen, die in einer dieser Sequenzen enthalten sind, und Fragesymbolen aus den Fragesequenzen dahin geführt haben, daß das Vergleichermittel 238, das genau so arbeitet wie das Vergleichermittel 38 in Fig. 3, ein "Paßt"-Signal ausgegeben hat. Diese flaggengekennzeichneten Sequenzen werden durch das Aufnahmemittel 246 ausgelesen, nachdem das letzte Fragesequenzsymbol mit dem letzten Datensequenzsymbol in der betreffenden Datensequenz verglichen wurde.
  • Im Gegensatz zum statischen Speichersystem gemäß Fig. 4 fordert diese Ausführungsform, daß das erfindungsgemäße Gerät Speicherraum für die gesamte Fragesequenz bietet, nicht nur für das gerade in dieser Sequenz gesuchte Symbol. Die Fragesequenz wird abgespeichert im Fragespeichermittel 222, wie bereits oben erwähnt, welches ein Teil des Aufnahmemittels 246 ist. Dieser Speicher ist unterteilt in Abteile mit der gleichen Struktur, wie sie unter Bezugnahme auf das Fragespeichermittel 22 in der Ausführungsform gemäß Fig. 3 beschrieben wurde. Die Forderung, daß die gesamte Fragesequenz im erfindungsgemäßen Gerät enthalten sein muß, legt der Länge der Fragesequenz, die durchsucht werden kann, gewisse Beschränkungen auf. Das ist jedoch keine ernstliche Beschränkung, weil man üblicherweise die längste Fragesequenz abschätzen kann, die wahrscheinlich benutzt werden muß. Als Alternative kann die Fragesequenz in eine Reihe kleinerer Sequenzen unterteilt werden und ein Mittel kann eingebaut sein, das ohne das Gerät rückzustellen eine zweite Fragesequenz lädt, und dann den Vergleichsprozeß fortsetzt.
  • Die Fragesequenz wird in das Gerät der vorliegenden Erfindung gemäß Fig. 6 geladen durch Senden eines besonderen vorgewählten Fragesignals zum Aufnahmemittel 246, gefolgt von der betreffenden Fragesequenz. Die Aufnahme des Endes der Fragesequenz, das durch den Endbegrenzer signalisiert wird, der dem entsprechenden, den Anfang der Fragesequenz markierenden Anfangsbegrenzer entspricht, wird benutzt, um den Vergleichsprozeß anlaufen zu lassen. Bei Eingang dieses Signals setzt das Indikatorvorschubmittel 244 die verschiedenen Flaggen auf ihren Anfangszustand in einer analogen Weise, wie sie für das Indikatorvorschubmittel 44 gemäß der Ausführungsform in Fig. 3 gezeigt wurde, wobei das zweite Indikatormittel 236 das erste Symbol der Fragesequenz anzeigt und dann darauf wartet, daß das erste Symbol einer Datensequenz am Abgriffspunkt gelesen wird. Sobald das erste Symbol ansteht, beginnt der Vergleichsprozeß auf eine Weise, die analog zu der der Ausführungsform der vorliegenden Erfindung nach der Beschreibung in Fig. 3 ist.
  • Sowohl in der statischen als auch in der umlaufenden Ausführungsform der vorliegenden Erfindung kann das Abrufmittel 232 bzw. 332 aus Standard-Mikroprozessorchips aufgebaut sein. Als Alternative kann auch ein besonderer Prozessor konstruiert werden, der Methoden anwendet, die dem Fachmann für VLSI-Schaltungskonstruktionen vertraut sind. Dieser Prozessor kann auf dem gleichen VLSI-Chip wie das erste und das zweites Speichermittel implementiert sein.
  • Die Wahl, welche der oben beschriebenen Ausführungsformen optimal für ein gegebenes System ist, hängt im allgemeinen von der Speicherdichte und Vergleichsgeschwindigkeit ab, die vom gewünschten System gefordert werden. Ein statisches System, so ähnlich wie es in den Fig. 4 und 5 beschrieben ist, in denen jeweils ein Abrufprozessor 94 für jede Datenspeicher-Datensequenz vorgesehen ist, würde die kürzestmögliche Suchzeit erfordern. Ein solches System könnte jedes Symbol der Fragesequenz mit dem entsprechenden Symbol jeder der abgespeicherten Datensequenzen in einem einzigen Vergleichszyklus vergleichen. Da jedoch der "Chip-Raum", der zum Bau der Abrufprozessoren benötigt würde, den zum Bau eines Abteils zum Abspeichern eines Symbols benötigten Chip-Raum übersteigt, und da die potentielle Zahl der Datensequenzen groß ist, würde ein solcher Speichertyp eine sehr geringe Speicherdichte aufweisen und somit hohe Kosten per abgespeichertes Symbol verursachen.
  • Ein System auf der Grundlage eines umlaufenden Speichers mit einem statischen Speicherpuffer für die Fragesequenz bietet eine höhere Speicherdichte und oft geringere Kosten. Drehende Speichermedien, wie z. B. Magnetplatten, sind in der Lage, Daten abzuspeichern mit Kosten per Wort, die viel geringer sind als die Standard-Speicherchips mit wahlfreiem Zugriff (RAM). Optische Platten haben ein Potential für höhere Speicherdichten als Speicher in integrierten Schaltkreisen, zu einem Bruchteil der Kosten je abgespeichertem Symbol. Diese Vorrichtungen sind jedoch inhärent langsamer als das oben besprochene statische Datensequenz-Abspeichersystem, weil immer darauf gewartet werden muß, daß das aufgerufene Datensymbol am Abgriffspunkt vorbeiläuft. Diese Forderung stellt die Zeit ein, die zum Abschluß einer Suche in der Ausführungsform mit umlaufenden Speicher der vorliegenden Erfindung gegeben ist. Wenn eine bestimmte Datensequenz nicht mit der Fragesequenz übereinstimmt, muß das Abrufmittel trotzdem warten, bis die gesamte Datensequenz am Abgriffspunkt vorbeigelaufen ist. Daher ist die Zeit zur Durchführung der Suche gleich der Zeit, die gewartet werden muß, bis der gesamte Inhalt der Speicherschleife am Abgriffspunkt vorbeigelaufen ist.
  • Im Gegensatz dazu ist die maximal benötigte Zeit zur Durchführung einer Suche in der erfindungsgemäßen Ausführungsform mit statischem Speicher, die einen Abrufprozessor mit einer Vergleichsschaltung je abgespeicherter Datensequenz aufweist, diejenige Zeit, die benötigt wird, die Fragesequenz zu lesen. Wenn in der Ausführungsform mit statischem Speicher alle Datensequenzen im paarweisen Vergleichsprozeß bereits frühzeitig einen "Paßt-nicht" Ausgang zeigen, kann dieses Ergebnis unmittelbar ausgegeben werden, und die nächste Suche kann anlaufen, ohne daß man auf den Eingang der ganzen Fragesequenz warten muß.
  • Die Geschwindigkeitsbeschränkungen der umlaufenden Speichersysteme lassen sich im gewissen Maß überwinden durch Einsatz mehrerer paralleler Ablesestationen. Jede Station sieht die an unterschiedlichen Abgriffspunkten in der Umlaufschleife vorbeifließenden Daten. Jeder Abgriffspunkt enthält dann einen gesonderten Abrufprozessor mit Zugriff auf die Fragesequenz. Somit reduziert sich die Zeit, die zum Lesen des gesamten Speichers erforderlich ist, um einen Faktor gleich der Zahl der Zugriffspunkte.
  • Zwar ist die vorliegende Erfindung in erster Linie für den Einsatz in Küstlichen-Intelligenz-Systemen gedacht, sie kann aber auch ohne ein externes Datenverarbeitungssystem benutzt werden. Zum Beispiel würde ein System, das aus einer Tastatur und einem Anzeigebildschirm besteht, bereits ausreichen, um das Gerät der vorliegenden Erfindung zu betreiben. In diesem einfachen System könnten die Datensequenzen in der Form einer fest in einem Festwertspeicher (ROM) abgespeicherten Bibliothek vorliegen. Die Einträge in diese Bibliothek würden durch Tippen der Symbole zur Kennzeichnung der zugehörigen Fragesequenz ausgewählt werden. Der Abrufprozessor wäre dann so programmiert daß er auf bestimmte Steuertasten zur Steuerung des Informationsflusses zum und vom Gerät anspricht.

Claims (16)

1. Speichersystem zum Abspeichern und Wiederabrufen von einer oder mehreren Datensymbolfolgen, wobei dieses Speichersystem beinhaltet: Speichermittel (12, 212) zum Abspeichern der Datensymbolfolgen; Mittel (46, 246) zum Aufnehmen einer Abfragesymbolfolge; und Mittel zum Abrufen (32, 232) jeder Datensymbolfolge aus diesen Speichermitteln (12, 212) entsprechend der Abfragefolge, wobei diese Symbole Konstante, Variable und Begrenzer darstellen, diese Begrenzer entsprechend paarweise vorhanden sind, wobei ein Anfangsbegrenzer zum Markieren des Anfangs einer Symbolfolge oder Symbolunterfolge, die in eine Symbolfolge eingebettet ist, benutzt wird und der entsprechende Endbegrenzer dazu benutzt wird, das Ende der Symbolfolge bzw. -unterfolge anzuzeigen, und in der eine Datensymbolfolge als der Fragesymbolfolge entsprechend definiert ist, wenn die zwei Folgen durch Austauschen jeder Variablen durch eine Konstante oder Kombination von Konstanten und Begrenzern identisch gemacht werden können, wobei die Kombination mit einem Begrenzer beginnt und mit einem Begrenzer endet; dadurch gekennzeichnet, daß die Mittel (32, 232) zum Abrufen jeder Datensymbolfolge aus diesem Speichermittel (12, 212) entsprechend der Abfragesymbolfolge enthalten: Erste Anzeigemittel (34) zum Identifizieren eines Datenfolgesymbols; zweite Anzeigemittel (36) zum Identifizieren eines Abfragefolgesymbols; Vergleichsmittel (28) zum Vergleichen des Datenfolgesymbols, das durch das erste Anzeigemittel (34) identifiziert wird, mit dem Abfragefolgesymbol, das durch das zweite Anzeigemittel (36) identifiziert wird, und zum Generieren eines Ausgangssignals mit entweder einem Gleich-Status, der anzeigt, daß die zwei verglichenen Symbole gleich waren oder daß wenigstens eines dieser Symbole eine Variable war, oder mit einem Ungleich- Status, der anzeigt, daß die zwei Symbole unterschiedlich waren und keines der beiden eine Variable war; auf dieses Ausgangssignal der Vergleichsmittel (28) ansprechende Flaggenmittel (48), die die Generierung eines Ausgangssignal anzeigen, das im Ungleich-Status ist; Anzeigevorschubmittel (44), die Mittel, die bewirken, daß diese ersten Anzeigemittel (34) das erste Symbol einer ausgewählten Datenfolge anzeigen, diese zweiten Anzeigemittel (36) das erste Symbol der Abfragefolge anzeigen, und diese Vergleichsmittel (28) die identifizierten Symbole vergleichen, und Mittel, die bewirken, daß diese ersten Anzeigemittel (34) das nächste Datenfolgesymbol identifizieren, und die zweiten Anzeigemittel (36) ein nächstes Abfragefolgesymbol identifizieren, und diese Vergleichsmittel (28) die identifizierten Symbole vergleichen, bis eine Beendigungsbedingung erfaßt wird, enthalten; und Mittel (45), die auf die Beendigungsbedingung ansprechen, um die gewählte Datenfolge ausgeben, wenn die Flaggenmittel (48) anzeigen, daß keiner der Vergleiche zur Generierung eines Ungleich-Ausgangssignals geführt hat.
2. Ein Speichersystem gemäß Anspruch 1, in dem die Beendigungsbedingung so definiert ist, daß sie dann eintritt, wenn das Vergleichermittel (28) das letzte Symbol der Abfragefolge mit einem Datenfolgesymbol vergleicht.
3. Ein Speichersystem gemäß Anspruch 1, in dem die Beendigungsbedingung so definiert ist, daß sie dann eintritt, wenn das Vergleichermittel (28) das letzte Symbol der ausgewählten Datenfolge mit einem Abfragefolgesymbol vergleicht.
4. Ein Speichersystem gemäß Anspruch 1, in dem die Beendigungsbedingung so definiert ist, daß sie dann eintritt, wenn das Vergleichermittel (28) das letzte Symbol der ausgewählten Datenfolge mit dem letzten Symbol der Abfragefolge vergleicht oder ein Ausgangssignal im Ungleich-Status generiert wird.
5. Ein Speichersystem gemäß einem beliebigen der Ansprüche 1 bis 4, in dem das Anzeigevorschubmittel (44) Mittel zum Bestimmen des Endbegrenzers entsprechend einem Anfangsbegrenzer in der gewählten Datenfolge bzw. der Abfragefolge beinhaltet, und das nächste Datenfolgesymbol und das nächste Abfragefolgesymbol, das vom Anzeigevorschubmittel (44) als nächstes zu identifizierendes bestimmt wird, das nächste sequentielle Datenfolgesymbol nach dem vorher vom Vergleichermittel (28) verglichenen, und das nächste sequentielle Abfragesymbol nach dem vorher vom Vergleichermittel (28) verglichenen ist, falls nicht die vorher verglichenen Symbole eine Variable und ein Anfangsbegrenzer sind, in welchem Fall diese nächsten Symbole das der Variablen folgende Symbol und das dem Endbegrenzer entsprechend dem Anfangsbegrenzer folgende Symbol sind.
6. Ein Speichersystem gemäß Anspruch 5, in dem die Mittel zum Bestimmen, welcher Endbegrenzer einem gegebenen Anfangsbegrenzer entspricht, Mittel zum Abspeichern eines Kennzeichens mit jedem dieser Begrenzer enthält, wobei das Kennzeichen für jeden dieser Begrenzer eines entsprechenden Begrenzerpaars jeweils das gleiche ist und dieses Kennzeichen in einem anderen Begrenzerpaar innerhalb der Folge bzw. Unterfolge von Symbolen, die durch dieses Begrenzerpaar gekennzeichnet sind, nicht wiederholt wird.
7. Ein Speichersystem gemäß Anspruch 5, in dem die Mittel zum Bestimmen, welcher Endbegrenzer einem gegebenen Anfangsbegrenzer entspricht, Mittel zum Abspeichern des Orts des entsprechenden Endbegrenzers als Teil jedes Anfangsbegrenzers in der Symbol folge, die den betreffenden Anfangsbegrenzer enthält, einschließt.
8. Ein Speichersystem gemäß Anspruch 5, in dem die Mittel zum Bestimmen, welcher Endbegrenzer einem gegebenen Anfangsbegrenzer in einer Symbol folge entspricht, Mittel zum Zählen der Begrenzer enthalten, wobei diese Zählmittel auf einen gegebenen Anfangszustand initialisiert werden, wenn das zweite Anzeigemittel (36) das erste Symbol der Fragesymbolfolge anzeigt, und diese Zählmittel jedesmal inkrementiert werden, wenn ein offener Begrenzer in einer Symbolfolge festgestellt wird, und diese Zählmittel jeweils um einen gleichen Betrag dekrementiert werden, wenn in der Symbolfolge ein Endbegrenzer festgestellt wird, wobei der entsprechende Endbegrenzer derjenige ist, der bewirkt, daß diese Zählmittel in ihren Anfangszustand zurückkehren.
9. Ein Speichersystem gemäß einem der vorstehenden Ansprüche, in dem die Speichermittel (212) eine Vielzahl von Abteilen (214) enthalten, wobei jedes Abteil dazu benutzt wird, ein Symbol abzuspeichern und einen Block zusammenhängender Ein-Bit-Speicherzellen umfaßt, und in dem dieses Abteil (214) in eine Identifizierungsgruppe (18) und eine Datengruppe (20) unterteilt ist, wobei die Identifizierungsgruppe (18) wenigstens zwei Ein-Bit-Speicherzellen (16) zum Identifizieren des Typs der in diesem Abteil (214) abgespeicherten Symbole, und die Datengruppe (20) den Rest dieser Ein-Bit-Speicherzellen (16) enthält.
10. Ein Speichersystem gemäß Anspruch 9 als Unteranspruch zu Anspruch 5, in dem die Mittel zum Bestimmen, welcher Endbegrenzer einem gegebenen Anfangsbegrenzer entspricht, Mittel in einem Abteil (214) enthält, dessen Identifizierungsgruppe (18) anzeigt, daß dieses Abteil (214) einen Anfangsbegrenzer zum Abspeichern von Daten in der Datengruppe (20) speichert, die die Identität des diesem Anfangsbegrenzer entsprechenden Endbegrenzers anzeigt.
11. Ein Speichersystem gemäß Anspruch 1, in dem die Mittel zum Abrufen (32, 232) beinhalten: Mittel zum Identifizieren des einem gegebenen Anfangsbegrenzer entsprechenden Endbegrenzers; Mittel zum Spezifizieren entsprechender Symbolpaare, die ein Symbol aus der Abfragefolge und ein Symbol aus der entsprechenden Datenfolge umfassen; Mittel zum Vergleichen jedes spezifizierten Symbolpaars, wobei diese Vergleichermittel (28) ein Ausgangssignal generieren, das entweder einen Gleich-Status, der anzeigt, daß die verglichenen Symbole gleich oder wenigstens eines dieser Symbole eine Variable war, oder einen Ungleich-Status, der anzeigt, daß die Symbole nicht gleich und keines dieser Symbole eine Variable war, aufweist; Anzeigevorschubmittel (44) enthaltend Mittel, die bewirken, daß diese Spezifizierungsmittel zum anfänglichen Spezifizieren als erstes entsprechendes Symbolpaar das jeweils erste Symbol einer Datenfolge und das erste Symbol einer Abfragefolge enthalten, wobei diese Vergleichermittel (28) als Reaktion darauf tätig werden, um dieses erste entsprechende Symbolpaar zu vergleichen; Mittel die bewirken, daß diese Spezifizierungsmittel sukzessiv ein nachfolgendes entsprechendes Symbolpaar vergleichen, das aus einem nächsten Datenfolgesymbol und einem nächsten Abfragefolgesymbol besteht, jedes Mal, wenn das Vergleichermittel (28) ein Gleich- Ausgangssignal erzeugt und keines der verglichenen Symbole das letzte aus einer Datenfolge bzw. aus der Abfragefolge war, diese Vergleichermittel (28) als Reaktion darauf tätig werden, um dieses nachfolgende entsprechende Symbolpaar zu vergleichen, in dem dieses nächste Datenfolgesymbol das anschließende Datensymbol nach dem vom vorangehenden vom Vergleichermittel (28) verglichenen Datensymbol ist, und das nächste Abfragefolgesymbol das abschließende Abfragefolgesymbol nach dem vorangehenden, vom Vergleichermittel (28) verglichenen Abfragefolgesymbol ist, es sei denn, der vorherige Vergleich war zwischen einer Variablen und einem Anfangsbegrenzer, in welchem Fall die nächsten zu spezifizierenden Symbole das danebenliegende Symbol nach der Variablen und das danebenliegende Symbol nach dem dem Anfangsbegrenzer entsprechenden Endbegrenzer sind; und Mittel zum Auslesen jeder Datenfolge, für die wenigstens das letzte Symbol dieser Datenfolge mit dem letzten Symbol der Abfragefolge verglichen wurde.
12. Ein Speichersystem gemäß Anspruch 11, in dem diese Speichermittel (212) eine Vielzahl zusammenhängender Abteilblöcke (214) aufweisen, von denen jedes Abteil (214) ein Datenfolgesymbol abspeichert, die Vergleichermittel (28) eine Vielzahl von Vergleicherschaltkreisen (122) aufweisen, wobei einer dieser Vergleicherschaltkreise (122) in Wirkverbindung mit jedem dieser Blöcke steht, jeder dieser Vergleicherschaltkreise den Vergleich zwischen dem spezifizierten entsprechenden Symbolpaar durchführt, das ein Datenfolgesymbol in dem Abteilblock in Wirkverbindung mit diesem Vergleicherschaltkreis (122) beinhaltet.
13. Ein Verfahren zum Abrufen einer Datensymbolfolge, die einer Abfragesymbolfolge entspricht, die sich aus den gleichen drei Symboltypen zusammensetzen, in einem Speichersystem, mit Speichermitteln, in denen eine oder mehrerer Datensymbolfolgen gespeichert sind, bestehend aus den folgenden Schritten:
(a) Empfangen einer Abfragesymbolfolge; und
(b) Abrufen jeder Datensymbolfolge aus den Speichermitteln entsprechend dieser eingegangenen Abfragefolge, in der diese Datensymbolfolge und diese Abfragesymbolfolge so definiert sind, daß sie drei Symboltypen enthalten, und zwar Konstante, Variable und Begrenzer, diese Begrenzer entsprechend paarweise vorhanden sind, wobei ein Anfangsbegrenzer zum Markieren des Anfangs einer Symbolfolge oder Symbolunterfolge, die in eine Symbol folge eingebettet ist, benutzt wird und der entsprechende Endbegrenzer dazu benutzt wird, das Ende der Symbol folge bzw. -unterfolge anzuzeigen, und in der eine Datensymbolfolge als der Fragesymbolfolge entsprechend definiert ist, wenn die zwei Folgen durch Austauschen jeder Variablen durch eine Konstante oder Kombination von Konstanten und Begrenzern identisch gemacht werden können, wobei die Kombination mit einem Begrenzer beginnt und mit einem Begrenzer endet; wobei dieses Verfahren ferner durch die folgenden Schritte gekennzeichnet ist:
(c) Setzen einer Flagge in einen ersten Zustand;
(d) Anzeigen eines ersten Datenfolgesymbols in der Datensymbolfolge;
(e) Anzeigen eines ersten Abfragefolgesymbols in der Abfragesymbolfolge;
(f) Vergleichen der in Schritt (d) und (e) gekennzeichneten Symbole;
(g) Setzen der Flagge in einen zweiten Zustand, wenn die angezeigten Symbole nicht übereinstimmen;
(h) Anzeigen eines nächsten Datenfolgesymbols und eines nächsten Abfragefolgesymbols, wobei das nächste Datenfolgesymbol dasjenige ist, das dem vorher angezeigten Datenfolgesymbol in der Datensymbolfolge folgt, und das nächste Abfragefolgesymbol dasjenige ist, das dem vorher angezeigten Abfragefolgesymbol in der Abfragesymbolfolge folgt, es sei denn, die vorher angezeigten und verglichenen Symbole seien ein Anfangsbegrenzer und eine Variable; in diesem Fall folgt Schritt (1);
(i) Bestimmen des dem Anfangsbegrenzer entsprechenden Endbegrenzers; die nächsten anzuzeigenden Symbole sind das der Variablen und das dem dem Endbegrenzer entsprechenden Anfangsbegrenzer folgende Symbol;
(j) Wiederholen der Schritte (d) bis (j), bis das letzte Symbol in der Abfragesymbolfolge verglichen wurde;
(k) Abrufen der Datenfolge, wenn die Flagge im ersten Zustand steht.
14. Verfahren gemäß Anspruch 13, in dem der Schritt zur Bestimmung, welcher Endbegrenzer in der Datensymbolfolge oder in der Abfragesymbolfolge einem gegebenen Anfangsbegrenzer entspricht, den Schritt des Lesens eines Kennzeichens beinhaltet, das als Teil des Anfangsbegrenzers abgespeichert wurde und den diesem Anfangsbegrenzer entsprechenden Endbegrenzer identifiziert.
15. Verfahren gemäß Anspruch 13, in dem der Schritt des Bestimmens, welcher Endbegrenzer in der Datensymbolfolge oder in der Abfragesymbolfolge einem gegebenen Anfangsbegrenzer entspricht, die folgenden Schritte umfaßt: Setzen eines Zählers auf einen Anfangszustand, wenn der Anfangsbegrenzer mit der Variablen verglichen wird; Lesen jedes nachfolgenden Symbols der Folge, die diesen Anfangsbegrenzer enthält; Inkrementieren des Zählers jedesmal, wenn ein Anfangsbegrenzer erfaßt wird, und Dekrementieren des Zählers um einen gleichen Betrag jedesmal wenn ein Endbegrenzer erfaßt wird; und Identifizieren des Endbegrenzers, der bewirkt, daß der Zähler in seinen Anfangszustand zurückkehrt, als entsprechenden Endbegrenzer.
16. Verfahren gemäß Anspruch 13, in dem der Schritt des Bestimmens, welcher Endbegrenzer einem gegebenen Anfangsbegrenzer in der Datensymbolfolge oder in der Abfragesymbolfolge entspricht, das Lesen von Daten beinhaltet, die als Teil des Anfangsbegrenzers abgespeichert sind und die den Ort des Endbegrenzers in der Folge, die den Anfangsbegrenzer enthält, spezifizieren.
DE3650156T 1985-08-13 1986-08-12 Auf regeln basiertes datenwiederauffindverfahren und anordnung. Expired - Fee Related DE3650156T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/765,387 US4748439A (en) 1985-08-13 1985-08-13 Memory apparatus and method for retrieving sequences of symbols including variable elements
PCT/US1986/001662 WO1987001221A1 (en) 1985-08-13 1986-08-12 Rule-based data retrieval method and apparatus

Publications (2)

Publication Number Publication Date
DE3650156D1 DE3650156D1 (de) 1995-01-12
DE3650156T2 true DE3650156T2 (de) 1995-04-20

Family

ID=25073431

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3650156T Expired - Fee Related DE3650156T2 (de) 1985-08-13 1986-08-12 Auf regeln basiertes datenwiederauffindverfahren und anordnung.

Country Status (7)

Country Link
US (1) US4748439A (de)
EP (1) EP0233272B1 (de)
JP (1) JP2511435B2 (de)
AT (1) ATE114838T1 (de)
CA (1) CA1269460A (de)
DE (1) DE3650156T2 (de)
WO (1) WO1987001221A1 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0652502B2 (ja) * 1987-05-06 1994-07-06 株式会社日立製作所 推論方法
KR920002853B1 (ko) * 1987-06-03 1992-04-06 미쓰비시덴기 가부시기가이샤 논리형언어의 데이타 처리방법
JPS647232A (en) * 1987-06-30 1989-01-11 Toshiba Corp Inference processor
US5072367A (en) * 1987-10-01 1991-12-10 International Business Machines Corporation System using two passes searching to locate record having only parameters and corresponding values of an input record
JP2624751B2 (ja) * 1988-03-09 1997-06-25 株式会社日立製作所 コンパイル型知識処理ツールの高速推論方法
US5218669A (en) * 1988-03-11 1993-06-08 International Chip Corporation VLSI hardware implemented rule-based expert system apparatus and method
US5214779A (en) * 1988-06-30 1993-05-25 International Business Machines Corporation Variable construct representation embedded in data stream which references definition for dynamically generating data used in processing the data stream
JPH0245831A (ja) * 1988-08-08 1990-02-15 Ricoh Co Ltd 知識推諭処理装置
US4964063A (en) * 1988-09-15 1990-10-16 Unisys Corporation System and method for frame and unit-like symbolic access to knowledge represented by conceptual structures
US5777608A (en) * 1989-03-10 1998-07-07 Board Of Regents, The University Of Texas System Apparatus and method for in-parallel scan-line graphics rendering using content-searchable memories
US4989180A (en) * 1989-03-10 1991-01-29 Board Of Regents, The University Of Texas System Dynamic memory with logic-in-refresh
US5758148A (en) * 1989-03-10 1998-05-26 Board Of Regents, The University Of Texas System System and method for searching a data base using a content-searchable memory
US5020019A (en) * 1989-05-29 1991-05-28 Ricoh Company, Ltd. Document retrieval system
US5259066A (en) * 1990-04-16 1993-11-02 Schmidt Richard Q Associative program control
US5615305A (en) * 1990-11-08 1997-03-25 Hughes Missile Systems Company Neural processor element
US5138296A (en) * 1991-12-12 1992-08-11 Allen-Bradley Company, Inc. Electric switch
GB9300715D0 (en) * 1993-01-14 1993-03-03 Esselte Dymo Nv Label printing apparatus
JP2667352B2 (ja) * 1993-04-05 1997-10-27 インターナショナル・ビジネス・マシーンズ・コーポレイション データ検索装置および方法
JPH09507596A (ja) * 1994-01-10 1997-07-29 ザ、ダウ、ケミカル、カンパニー 大多重化スーパスカラー・ハーバード・アーキテクチャ・コンピュータ
US5555424A (en) * 1994-10-06 1996-09-10 The Dow Chemical Company Extended Harvard architecture computer memory system with programmable variable address increment
US5913216A (en) * 1996-03-19 1999-06-15 Lucent Technologies, Inc. Sequential pattern memory searching and storage management technique
US5794235A (en) * 1996-04-12 1998-08-11 International Business Machines Corporation System and method for dynamic retrieval of relevant information by monitoring active data streams
US6148034A (en) * 1996-12-05 2000-11-14 Linden Technology Limited Apparatus and method for determining video encoding motion compensation vectors
US6442543B1 (en) * 1997-07-25 2002-08-27 Amazon.Com, Inc. Method and apparatus for changing temporal database information
US6185556B1 (en) * 1999-05-04 2001-02-06 Amazon.Com, Inc. Method and apparatus for changing temporal database
US5999924A (en) * 1997-07-25 1999-12-07 Amazon.Com, Inc. Method and apparatus for producing sequenced queries
US7788382B1 (en) * 2002-03-26 2010-08-31 Good Technology, Inc. Server initiated synchronization
JP2006333438A (ja) * 2005-04-28 2006-12-07 Fujitsu Ten Ltd ゲートウェイ装置及びルーティング方法
US9208259B2 (en) * 2009-12-02 2015-12-08 International Business Machines Corporation Using symbols to search local and remote data stores
US9779195B2 (en) 2012-12-04 2017-10-03 The Mathworks, Inc. Model-based retiming with functional equivalence constraints
US8990739B2 (en) * 2012-12-04 2015-03-24 The Mathworks, Inc. Model-based retiming with functional equivalence constraints

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3245052A (en) * 1962-05-17 1966-04-05 Rca Corp Content addressed memory
US3358270A (en) * 1962-11-05 1967-12-12 Gen Electric Information storage and retrieval system
US3701980A (en) * 1970-08-03 1972-10-31 Gen Electric High density four-transistor mos content addressed memory
US3906455A (en) * 1974-03-15 1975-09-16 Boeing Computer Services Inc Associative memory device
FR2293741A1 (fr) * 1974-12-04 1976-07-02 Anvar Procede et systeme de rapprochement iteratif et simultane de donnees avec un ensemble de donnees de reference
US4027288A (en) * 1976-02-09 1977-05-31 Burroughs Corporation Self-managing variable field storage system for handling nested data structures
US4390945A (en) * 1980-08-25 1983-06-28 Burroughs Corporation Self-managing variable field storage station employing a cursor for handling nested data structures
US4451901A (en) * 1982-01-21 1984-05-29 General Electric Company High speed search system
JPS5939784A (ja) * 1982-08-30 1984-03-05 三菱マテリアル株式会社 表面被覆黒鉛製高温加熱部材

Also Published As

Publication number Publication date
JP2511435B2 (ja) 1996-06-26
EP0233272A4 (de) 1989-06-13
US4748439A (en) 1988-05-31
EP0233272A1 (de) 1987-08-26
CA1269460A (en) 1990-05-22
WO1987001221A1 (en) 1987-02-26
JPS63500548A (ja) 1988-02-25
DE3650156D1 (de) 1995-01-12
ATE114838T1 (de) 1994-12-15
EP0233272B1 (de) 1994-11-30

Similar Documents

Publication Publication Date Title
DE3650156T2 (de) Auf regeln basiertes datenwiederauffindverfahren und anordnung.
DE2554442C2 (de) Vorrichtung zum Vergleich logischer Größen mit einer Gruppe logischer Bezugsgrößen
DE3688738T2 (de) Musteradressierbarer speicher.
DE2515696C2 (de) Datenverarbeitungssystem
DE68907518T2 (de) Inhaltsadressierte Speicheranordnung.
DE3750492T2 (de) Datenbanksystem für Parallelprozessor.
DE3750277T2 (de) Verfahren und Vorrichtung zur Rückgewinnung von Symbolketten aus Daten.
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE2712575C2 (de) Assoziatives Speichersystem in hochintegrierter Halbleitertechnik
DE2224537A1 (de) Einrichtung und verfahren zur instruktionsselektion
DE2324731A1 (de) Festzustandsspeicher fuer mehrdimensionalen zugriff
DE10255128A1 (de) Computer-implementierte PDF-Dokumentenverwaltung
DE2621882A1 (de) Dynamischer digitalspeicher mit ununterbrochen umlaufendem datenfluss
DE2221442A1 (de) Assoziativspeicher
DE1524898C3 (de) Datenspeicher mit direktem mehrdimensionalen Zugriff zur gleichzeitigen Entnahme mehrerer Wörter
DE3518818A1 (de) Datenverarbeitungsvorrichtung und verfahren und vorrichtung zur umsetzung von datenelementen
DE3688737T2 (de) Kontextadressierbarer umlaufspeicher.
DE68921214T2 (de) ZUR SPEICHERUNG VON ZWEI ZUGEHöRIGEN DATENEINHEITEN ANGEPASSTES SPEICHERSYSTEM.
DE1499713A1 (de) Verfahren und Schaltungsanordnung zum Packen von Informationen in einem zyklisch umlaufenden Speicher mit wahlfreiem Zugriff zu den auf den Spuren befindlichen Speicherzellen
EP1204917B1 (de) Operandenstapelspeicher und verfahren zum betreiben eines operandenstapelspeichers
DE1295656B (de) Assoziativer Speicher
DD294115A5 (de) Vorrichtung und verfahren zur signalverarbeitung
DE2750126A1 (de) Datenverarbeitungssystem mit einem zwischenpufferspeicher
DE3587612T2 (de) Suchverfahren für Assoziationsmatrix.
DE2911147C2 (de)

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee