DE3688738T2 - Musteradressierbarer speicher. - Google Patents
Musteradressierbarer speicher.Info
- Publication number
- DE3688738T2 DE3688738T2 DE86905116T DE3688738T DE3688738T2 DE 3688738 T2 DE3688738 T2 DE 3688738T2 DE 86905116 T DE86905116 T DE 86905116T DE 3688738 T DE3688738 T DE 3688738T DE 3688738 T2 DE3688738 T2 DE 3688738T2
- Authority
- DE
- Germany
- Prior art keywords
- symbol
- memory
- state
- compartment
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 claims abstract description 192
- 230000004044 response Effects 0.000 claims abstract description 9
- 230000008859 change Effects 0.000 claims description 2
- 230000003213 activating effect Effects 0.000 claims 6
- 230000004913 activation Effects 0.000 claims 3
- 230000008878 coupling Effects 0.000 claims 2
- 238000010168 coupling process Methods 0.000 claims 2
- 238000005859 coupling reaction Methods 0.000 claims 2
- 230000001419 dependent effect Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 32
- 238000000034 method Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000007257 malfunction Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000002243 precursor Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query 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)
- Holo Graphy (AREA)
- Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (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 genügen. Diese gegebene Spezifikation kann als "Abfragefolge" bezeichnet werden. Dieser Suchtyp, der als "Regel-bezogene" 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. Das System muß 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. 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 Regel-bezogene 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 den 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.
- Ein beim Bau von Speichersystemen zur Anwendung in Datenbank- Abrufoperationen auftretendes Problem ist die Schwierigkeit, ein System zu bauen, das auf effiziente Weise sowohl für Schlüsselwort-spezifische als auch regelbezogene Suche benutzt werden kann. Um eine regelbezogene Suche in einem System durchführen zu können, das für Schlüsselwortsuche ausgelegt ist, muß man zunächst alle Datensätze auswählen, die die im Problem gefundenen Elemente enthalten.
- Diese Datensätze werden dann weiter geprüft, um festzustellen, welche ggf. zu dem vorgegebenen Problem gehören. Datensätze, die die falsche Anzahl Elemente enthalten oder in denen die Elemente in der falschen Reihenfolge auftreten, müssen ausgesondert werden.
- Ein weiteres Problem, das beim Implementieren künstlicher Intelligenzsysteme unter Benutzung der derzeitigen Computerhardware auftritt, ist die Zeit, die erforderlich ist, um eine große Datenbank nach Datensätzen zu durchsuchen, die mit einer gegebenen Abfragefolge übereinstimmen. Um nützlich zu sein, muß ein solches System eine große Anzahl Datensätze enthalten. Da die Zeit, die zum Durchsuchen der Datenbank erforderlich ist, proportional zur Länge der Datenbank ist, wird ein System mit einer festen Durchsuchungsgeschwindigkeit, das durch Anfügen neuer Informationen in der Form neuer Regeln "schlauer" wird, auch langsamer. Dieses Problem läßt sich nur durch Erhöhung der Suchgeschwindigkeit des Systems lösen, wenn die Größe der zu durchsuchenden Datenbank erhöht wird.
- Trotz der zahlreichen Verbesserungen, die auf dem Gebiet 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, gerechnet vom Speicheranfang aus. 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 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 Ausgabe/Eingabebefehlen zur Ausführung bereit, die sich von Befehlen 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.
- Rechnersysteme nicht vom Von-Neumann-Typ für zu vergleichende Texte sind auf dem Stand der Technik bekannt. Z.B. offenbart die Internationale Anmeldung WO 85/00681 eine Muster-vergleichende Schaltung, die den beinahe-simultanen Vergleich ganzer Textzeilen mit einem Testmuster ermöglicht. Diese Schaltung benutzt eine Anzahl Vergleichsschaltungen zum Vergleichen aufeinanderfolgender Stellen in den Textzeilen mit den individuellen Symbolen im Testmuster. Diese Systeme sehen jedoch keine wirksame Methode zum Durchsuchen der Textzeilen nach Mustern vor, die eingebettete Unterausdrücke variabler Länge beinhalten. Auf ähnliche Weise sehen diese Systeme auch keine wirksame Methode vor, um Testmuster zu behandeln, die Unterausdrücke variabler Länge enthalten. Damit sind solche Systeme unwirksam, wenn sie für Regelbezogene Suche eingesetzt werden sollen.
- Die vorliegende, beanspruchte Erfindung besteht aus einem Speichersystem zum Speichern und Abrufen von Datenfolgen aus Symbolen als Antwort auf eine Abfragefolge. Jede dieser Folgen weist drei Symboltypen auf: Konstante, Begrenzer und Variable. Eine Datenfolge wird abgerufen als Antwort auf eine Abfragefolge, wenn die zwei Folgen durch Ersetzen der Variablen in den einzelnen Folgen durch Konstante oder Kombinationen von Konstanten und Abgrenzern identisch gemacht werden können, wobei diese Kombinationen jeweils mit einem Begrenzer beginnen und enden. Diese Bestimmung wird gemacht durch Durchführung einer Anzahl paarweiser Vergleiche zwischen Symbolen, die aus den einzelnen Datenfolgen ausgewählt werden, und den entsprechenden Abfragefolgensymbolen. Die Datenfolgen, die jeden dieser paarweisen Tests bestehen, werden abgerufen.
- Die Datenfolgen werden in einer aus einer Vielzahl von Abteilen bestehenden Speichermatrix abgespeichert, wobei jedes dieser Abteile dazu benutzt wird, jeweils ein Symbol aus einer Datenfolge abzuspeichern. Nebeneinanderliegende Symbole in der Datenfolge werden in nebeneinanderliegenden Abteilen in der Speichermatrix abgespeichert. Die Abfragefolge wird vorzugsweise über einen Bus, der das Speichersystem mit einem externen Datenverarbeitungssystem verbindet, Symbol für Symbol an das Speichersystem geschickt. Jedes Abfragesymbol wird mit allen entsprechenden Symbolen in jeder der Datenfolgen verglichen, bevor das nächste Abfragesymbol eingeht. Jedem Datenabteil ist eine Marke zugeordnet, die anzeigt, ob das betreffende Abteil im Augenblick aktiviert ist. Die in den einzelnen aktivierten Abteilen abgespeicherten Symbole müssen mit dem nächsten eingehenden Abfragesymbol verglichen werden. Diese Marken werden vor dem Beginn der paarweisen Vergleiche initialisiert, um anzuzeigen, daß alle Abteile aktiviert sind. Nach diesem paarweisen Vergleich wird die Marke, die dem gerade verglichenen Abteil zugeordnet ist, in den inaktiven Zustand rückgestellt. Jeder erfolgreiche paarweise Vergleich ergibt daher, daß mindestens ein Abteil, das mit der Datenfolge, die das erfolgreich verglichene Symbol enthält, in den aktiven Zustand gesetzt wird. Diese Datenfolgen, die jeden der paarweisen Vergleiche mit den entsprechenden Abfragesymbolen erfolgreich bestehen, enthalten mindestens ein Symbol, das in einem Abteil im aktiven Zustand abgespeichert ist. Folgen, die ein in einem Abteil im aktiven Zustand abgespeichertes Symbol enthalten, können nach Eingang und Vergleich des letzten Abfragesymbols aus gelesen werden.
- Zwecks Reduzierung der Zeit, die zum Durchsuchen des Speichers nach allen Datenfolgen, die einer gegebenen Abfrage folge entsprechen, benötigt wird, werden Mehrfachverarbeitungseinheiten eingesetzt. Die verschiedenen paarweisen Vergleiche werden durch ein Vielzahl logischer Schaltungen durchgeführt. Die Speicherabteile sind unterteilt in Blöcke oder Segmente, die jeweils einen oder auch mehrere Abteile per Block enthalten. Mit jedem Block ist eine logische Schaltung verbunden. Jede logische Schaltung führt die verschiedenen paarweisen Vergleiche an den Abteilen im Block durch, mit denen sie verbunden ist.
- Zusätzlich zur Durchführung der regelbezogenen Suche kann das Speichersystem auch wirksam alle Datensätze abrufen, die eine vorgegebene Liste Schlüsselwörter enthalten. Das geschieht durch Einschluß eines besonderen Symbols, des sog. Gumpf- Symbols.
- Es ist daher Aufgabe der vorliegenden Erfindung, ein verbessertes Speichersystem zum Abspeichern und Abrufen von Regeln auf der Grundlage des Inhalts dieser Regeln anstatt auf der Grundlage ihrer Speicherstelle im Speicher bereitzustellen.
- Eine weitere Aufgabe der vorliegenden Erfindung ist die Bereitstellung eines Speichersystems, das auch zum Abrufen von Datensätzen einsetzbar ist, die ein oder mehrere Schlüsselwörter oder -elemente beinhalten.
- Noch eine weitere Aufgabe der vorliegenden Erfindung ist die Verkürzung der Zeit, die erforderlich ist, die Datensätze abzurufen, die einer gegebenen Abfragefolge entsprechen durch Einsatz von vervielfältigter Rechnerhardware, die die Suchfunktionen ausführt.
- Diese und noch weitere Aufgaben der vorliegenden Erfindung werden ersichtlich aus der nachstehenden detaillierten Beschreibung der Erfindung anhand der begleitenden Zeichnungen.
- Fig. 1 ist ein Blockschaltbild eines Speichersystems gemäß der vorliegenden Erfindung.
- Fig. 2 zeigt die Schritte in einer beispielhaften Suche nach Daten, die im Speichersystem gemäß Fig. 1 abgespeichert sind.
- Fig. 3 zeigt die Schritte in einer zweiten beispielhaften Suche nach Daten, die im Speichersystem gemäß Fig. 1 abgespeichert sind.
- Fig. 4 zeigt die Schritte in einer dritten beispielhaften Suche nach Daten, die im Speichersystem gemäß Fig. 1 abgespeichert sind.
- Fig. 5 zeigt die Anwendung eines Gumpf-Symbols, das mit dem Element "*" gekennzeichnet ist, um die Suche nach Schlüsselelementen zu vereinfachen.
- Fig. 6 ist ein Blockschaltbild einer bevorzugten Ausführungsform der vorliegenden Erfindung.
- Fig. 7 ist eine Schemazeichnung der "Überbrückungsdrahtschaltung" in der Anwendung auf die bevorzugte Ausführungsform.
- Fig. 8 zeigt eine zweite bevorzugte Ausführungsform der vorliegenden Erfindung.
- Fig. 9 zeigt den Überbrückungsdraht, der in der Ausführungsform gemäß Fig. 8 zum Einsatz kommt.
- Fig. 10 ist eine detaillierte Darstellung der Multiplexersteuerschaltung gemäß Fig. 8.
- Im Speichersystem der vorliegenden Erfindung wird eine Regel in der Form einer Symbolzeichenkette, genannt Datenfolge, abgespeichert, die drei Typen von Elementen - Begrenzer, Konstante und Variable - aufweisen kann. Begrenzer, gekennzeichnet mit "(" und ")", werden benutzt, um die Grenzen von Datenfolgen und Unterausdrücken innerhalb der Datenfolgen zu kennzeichnen. Die Symbolkette (a,b,(f,g),c) repräsentiert eine Datenfolge, deren erstes Element "a" ist, deren zweites "b", das dritte die Kombination (f,g) und das vierte Element "c" sind. Konstante sind Elemente mit festen Werten, z. B. "ißt" und "hungrig" im obigen Problem. Eine Abfrage nach (a,b,c) kann nur dann erfüllt werden, wenn alle drei Konstanten, a, b und c, in der angegebenen Reihenfolge vorliegen und kein anderes Element zwischen ihnen steht. Variable, gekennzeichnet mit "?" oder "?x", wobei x ein wahlweiser Name ist, können durch eine beliebige Konstante oder eine andere Variable erfüllt werden. Sie besagen in Kurzschrift "paßt zu allem". Somit würde eine Abfrage nach Auffinden aller Datenfolgen der Form (a,?,b) als Lösung ergeben (a,x,b), (a,?,b), (a,z,b), (a,(d,e),b) usw.
- Im obigen Beispiel würde der Speicher nach Datenfolgen der Form "(wenn,(?x, ißt), dann, (?x, ist, ?y))" durchsucht werden. Eine Abfrage nach allen Datenfolgen der Form "(wenn, ?, dann, ?)" würde alle "wenn-dann" Datenfolgen einschließlich der oben angegebenen abrufen.
- Da die Suchzeit proportional zur Länge der durchsuchten Datenbank ist, läßt sich die Suchzeit verkürzen durch Aufteilen des Speichers, der die Datenbank abspeichert, in mehrere Untereinheiten, die jede mit ihrer eigenen Zentraleinheit ausgestattet ist. Das ist gleichbedeutend mit Aufteilen der Suchaufgabe zwischen einer Anzahl kleinerer Von- Neumann-Maschinen, deren jede einen ausreichenden Speicher aufweist, um die Abfragefolge oder die Liste der Schlüsselwörter, die bei der Schlüsselelementsuche benutzt werden, und ein oder zwei Wörter der Datenbank abzuspeichern. Die schnellste Suche mit einem solchen System würde realisiert werden mit einem Speicher, bei dem in jedem Speicherwort eine Zentraleinheit eingebaut ist. Dann könnte sich der Speicher in einem Speicherzyklus selbst mit einem Schlüsselwort vergleichen und die Datenfolge identifizieren, in der das Schlüsselwort vorkommt. Das optimale Verhältnis der Datenbankwörter zu den Zentraleinheiten würde klar von der Komplexität der Zentraleinheit im Vergleich zu der des Speichers abhängen. Da die Zentraleinheit nur ein paar Befehle braucht, um die Suchfunktion durchzuführen, könnte sie viel einfacher konstruiert sein, als die allgemein verwendbaren Zentraleinheiten. Somit wird eine verhältnismäßig hohe Dichte der Zentraleinheit möglich. Dieser Typ der hoch-wiederholten Modularstruktur ist besonders geeignet für die Herstellung von höchstintegrierten (VLSI) Schaltungen.
- Dieser Typ sich wiederholender Rechnerhardware ist ferner gut geeignet für das Datenbank-Suchproblem, weil die Verarbeitungszeit nicht mit der Größe der Datenbank zunimmt, weil jede Speicherkapazitätseinheit ihre eigene Suchkapazität in der Form seiner eingebauten Zentraleinheit mit sich trägt. Daher nimmt die Rechnerkapazität des Systems mit der Datenbankvergrößerung zu. Ferner nimmt die Zentraleinheit des Systems, im Gegensatz zu den Verarbeitungseinheiten, die die Suchfunktionen im Speicher ausführen, bei dieser Art Konstruktion verhältnismäßig wenig zusätzlichen Raum ein. Sie braucht keine Adressen oder sonstige mit dem Speicherinhalt zusammenhängende Daten zu verfolgen. Sie muß lediglich die Abfragefolge in eine Speichereinheit einspeisen, die aus einer Anzahl Modulen mit Befehlen besteht, wo die Ergebnisse der Suche abgespeichert werden sollen.
- In Fig. 1 wird bei 10 ein erfindungsgemäßes Speichersystem schematisch dargestellt. Es beinhaltet einen mit dem Gerät gekoppelten Empfangsteil 40 zum Empfangen eines Abfrage-Symbols, bestehend aus einer Empfangsschaltung 41 zum Anschluß des Geräts an einen Bus 11 herkömmlicher Konstruktion sowie aus einem Puffer 12 zum Abspeichern eines Abfragesymbols. Dieses Abfragesymbol enthält eines der Symbole der Abfragefolge, die benutzt werden, um vorzugeben, welche der abgespeicherten Datenfolgen abgerufen werden sollen. Ein Speicherblock 16 speichert die Symbol-Datenfolgen ab, die als Antwort auf die Abfragefolge abgerufen werden sollen. Ein Vergleichsmittel 14, das mit dem Puffer 12 und dem Speicherblock 16 verbunden ist, führt die Vergleichsoperationen durch, die erforderlich sind, um sicherzustellen, daß eine bestimmte Datenfolge der Abfragefolge entspricht.
- Der Speicherblock unterteilt sich in eine Vielzahl von Abteilen 18, von denen jedes zum Abspeichern eines Datenfolgesymbols benutzt wird. Ein typisches Abteil wird in Fig. 1(a) gezeigt. Jedes Abteil enthält eine feste Anzahl Ein-Bit- Speicherzellen 17 und unterteilt sich in zwei Gruppen, eine Identifikationsgruppe 24 und eine Datengruppe 26. Die Identifikationsgruppe wird benutzt, um den Datentyp zu kennzeichnen, der in einem Abteil abgespeichert ist, z. B., ob es sich um eine Konstante, eine Variable oder einen Begrenzer handelt. Die Datengruppe wird benutzt, um die zu dem bestimmten, im Abteil abgespeicherten Symbol gehörigen Informationen abzuspeichern. Wenn z. B. die Konstante "a" in einem Abteil abgespeichert werden soll, wird die Datengruppe die Binärdarstellung von "a" enthalten und die Identifikationsgruppe wird den Code für eine Konstante enthalten. Jedem Datenabteil sind weitere fünf Ein-Bit-Speicherzellen zugeordnet, die ein Halte-Bit 20, ein Token-Bit 22, ein Lösch-Bit 30, ein Lesezeiger-Bit 32 und ein Schreibzeiger-Bit 34 enthalten. Jede dieser Speicherzellen kann in einem von zwei Zuständen sein, entweder im Gesetztzustand oder im Rückstellzustand. Die Anwendung dieser Speicherzellen wird nachstehend noch im einzelnen behandelt.
- Auch der Puffer 12 beinhaltet eine Vielzahl von Ein-Bit- Speicherzellen 17 und unterteilt sich in eine Identifizierungsgruppe 43 und eine Datengruppe 42. Diese Gruppen erfüllen die gleichen Funktionen wie die entsprechenden Gruppen in den Abteilen 18. Die fünf obengenannten zusätzlichen Ein-Bit-Speicherzellen, die in den Abteilen 18 vorkommen, fehlen jedoch im Puffer 12.
- In der bevorzugten Ausführung ist die Anzahl der Bits in der Datengruppe der einzelnen Abteile größer als 30. Das gibt genügend Platz, um über eine Milliarde unterschiedlicher Konstanten kennzeichnen zu können. In den Beispielen werden nur zu Darstellungszwecken die Buchstaben des Alphabets benutzt. In der Praxis würde jeder Konstanten ein Code zugeordnet, der entweder ein Wort der englischen Sprache oder aber ein ganzer Ausdruck oder ein ganzer Satz wäre. Z.B. würde in den obigen Beispielen das Wort "eats" [ißt] durch eine einzige Konstante dargestellt werden. Eine zweite Konstante könnte für das Wort "hungry" [hungrig] benutzt werden. Die Entsprechungen zwischen einem besonderen Code, der aus einer Zahl zwischen 1 und einer Milliarde besteht, und seinem zugeordneten englischen Äquivalent kann in einer Tabelle abgespeichert sein, oder der Code kann so ausgearbeitet sein, daß er dem englischen Äquivalent direkt entspricht, d. h. der Code könnte eine Kombination von 7-Bit-ASCII-Codes sein, die das betreffende Wort buchstabengetreu wiedergeben. Wenn eine Tabelle benutzt wird, könnte diese Tabelle in einer Hilfsspeichereinrichtung abgespeichert sein oder könnte im erfindungsgemäßen Gerät in der Form von Datenfolgen abgespeichert sein. Wenn z. B. der Code 500 der Konstanten, die "eats" darstellt, zugeordnet wäre, könnte in der vorliegenden Erfindung eine Datenfolge der Form (500,#,e,a,t,s) abgespeichert sein. Um das englische Äquivalent der Konstanten mit dem Code 500 abzurufen, würde man den erfindungsgemäßen Speicher nach Folgen der Form (500,#, . . .) durchsuchen. Hier ist # ein besonderer Code, der benutzt würde, um diese Tabellenfolgen von anderen Datenfolgen zu unterscheiden.
- Die vorliegende Erfindung ruft alle abgespeicherten Symbol- Datenfolgen ab, die einer bestimmten Abfragefolge entsprechen. Eine Abrufoperation besteht aus drei Schritten. Zunächst wird das Gerät initialisiert, wie nachstehend beschrieben wird. Zweitens wird die in der Suche zu benutzende Abfragefolge über den Bus 11 an das erfindungsgemäße Gerät geschickt. Schließlich werden die der Abfragefolge entsprechenden Datenfolgen über den Bus 11 an das externe Datenverarbeitungssystem geschickt, das die Abfragefolge an das erfindungsgemäße Gerät gegeben hat.
- Jede Datenfolge wird in einer Anzahl paarweiser Vergleiche, die jeweils ein Symbol aus der Abfragefolge und ein Symbol aus der betreffenden Datenfolge betreffen, gegen die Abfragefolge geprüft. Die Abfragefolge wird als eine geordnete Symbolliste, ein Symbol nach dem anderen, an das erfindungsgemäße Gerät geschickt. Alle paarweisen Vergleiche mit einem gegebenen Abfragesymbol werden ausgeführt, bevor das nächste Abfragesymbol an das Gerät geschickt wird. Nur solche Daten werden gegen das augenblicklich ins Speichersystem eingespeiste Abfragesymbol geprüft, die bereits durch die vorangehenden paarweisen Vergleiche gelaufen sind.
- Die gegen das derzeitige Abfragesymbol zu prüfenden Datensymbole sind durch das Token 22 identifiziert. Ein gesetztes Token zeigt an, daß das in dem durch diese Token zugeordneten Abteil abgespeicherte Symbol gegen das derzeitige Abfragesymbol geprüft werden soll. Das Vergleichsmittel 14 vergleicht alle mit einem gesetzten Token markierten Symbole gegen das aktuelle Abfragesymbol. Nach Abschluß des paarweisen Vergleichs stellt das Vergleichsmittel das Token zurück. Wenn das geprüfte Datensymbol mit dem Abfragesymbol, mit dem es verglichen wurde, übereinstimmt, setzt das Vergleichsmittel 14 das Token des nächsten zu vergleichenden Datensymbols in der betreffenden Datenfolge in den Gesetzt- Zustand. Nachstehend wird ein Token, das als im gesetzten bzw. rückgestellten Zustand bezeichnet werden soll, als gesetztes bzw. rückgestelltes Token angesprochen. Auf ähnliche Weise wird die Operation zum Ändern des Zustands des Token in den gesetzten bzw. rückgestellten Zustand als Setzen bzw. Rückstellen der Token bezeichnet.
- Zusätzlich zum Bereitstellen eines Mittels zum Anzeigen des nächsten zu prüfenden Datensymbols in den einzelnen abgespeicherten Datenfolgen, wenn das Token im gesetzten d.i. aktiven Zustand ist, bietet das Token auch ein Mittel zum Markieren derjenigen Datenfolgen, die die vorherigen paarweisen Vergleiche mit der Abfragefolge bereits durchlaufen haben. Wenn das Speichersystem vor dem Anlaufen der Abfragefolge initialisiert wird, werden alle Token der Datenabteile gesetzt. Bei jeder dieser paarweisen Vergleiche, in denen ein Datensymbol einer gegebenen Datenfolge mit dem Abfragesymbol übereinstimmt, wird ein neues Token in der betreffenden Datenfolge gesetzt. Wenn der paarweise Vergleich erfolglos war, wird kein neues Token in der betreffenden Datenfolge gesetzt. Da das Vergleichsmittel 14 das Token des im letzten Vergleich, d. h. am Ende des Vergleichs benutzten Datensymbols rückstellt, d. h. seinen Zustand aufinaktiv ändert, wird eine Datenfolge, in der der paarweise Vergleich erfolglos bleibt, kein Abteil mit einem gesetzten Token mehr aufweisen. In einer Regel-bezogenen Suche enthalten die Folgen, die die vorherigen paarweisen Vergleiche nicht erfolgreich durchlaufen haben, kein Abteil mit gesetztem Token. Somit bietet das Token auch ein Mittel zum Markieren derjenigen Folgen, die als Antwort auf die Abfragefolge abgerufen werden sollen.
- Beim Vergleich einer gegebenen Datenfolge mit einer Abfragefolge in einer Regel-bezogenen Suche führt das Vergleichsmittel 14 eine Reihe paarweiser Vergleiche zwischen einer Abfragefolge und einem entsprechenden Symbol in der verglichenen Datenfolge durch. Die ersten zu vergleichenden Symbole sind die ersten Symbole in der Folge. Die anschließend zu vergleichenden Symbole hängen ab von den im vorangehenden Vergleich verglichenen Symbolen. Wenn der vorherige Vergleich keinen Öffnungsbegrenzer und keine Variable betrifft, ist das nächstfolgende Abfragesymbol, das verglichen werden muß, das nächste, auf das vorhergehende Abfragefolgesymbol folgende Symbol, und das nächste benutzte Datenfolgesymbol ist das nächste Symbol, das dem im vorhergehenden Vergleich benutzten Datenfolgesymbol folgt. Wenn in einer Folge eine Variable mit einem Öffnungsbegrenzer in der anderen Folge verglichen wird, sind die nächsten zu vergleichenden Symbole das der Variablen folgende und das dem Abschlußbegrenzer, der dem Öffnungsbegrenzer entspricht, folgende Symbol. Das ermöglicht es, daß eine Variable in einer Folge mit einer eingebetteten Unterfolge beliebiger Länge in der anderen Folge zufriedenstellend verglichen wird. Wenn z. B. die Datenfolge
- (a,?,x)
- verglichen würde mit der Abfragefolge
- (a,(k,m),y)
- wäre der paarweise durchgeführte Vergleich, der vom Vergleichsmittel 14 ausgeführt würde, wie folgt: Zunächst würde das "(" in der Datenfolge verglichen mit dem "(" in der Abfragefolge. Dann würde das "a" in der Datenfolge mit dem "a" der Abfragefolge verglichen. Als drittes würde das "?" in der Datenfolge verglichen werden mit dem "(" in der Abfragefolge. Da "(" den Beginn der Unter-Folge "k,m" markiert, würden die nächsten zu vergleichenden Symbole das dem ")" in der Abfragefolge folgende "y" und das dem "?" in der Datenfolge folgende x sein.
- Hier muß darauf hingewiesen werden, daß ein in einer Datenfolge oder in einer Abfragefolge eingebetteter Unterausdruck seinerseits eine oder mehrere Unterfolgen enthalten kann. Somit muß irgendein Mittel vorgesehen werden, daß sichergestellt ist, welcher Abschlußbegrenzer ")" zu einem gegebenen Öffnungsbegrenzer "(" gehört und der den Beginn einer Folge oder Unterfolge markiert, die "übersprungen" werden muß. In der bevorzugten Ausführungsform wird jedem entsprechenden Begrenzerpaar eine Kennung zugeordnet. Wenn das Vergleichsmittel 14 ein "(" erfaßt, liest es die entsprechende Kennung und sucht dann nach vorwärts in der betreffenden Folge, bis es ein ")" mit der gleichen Kennung findet. Damit dieses System störungsfrei arbeitet, darf eine Kennung, mit der ein bestimmtes Begrenzerpaar gekennzeichnet ist, innerhalb der durch dieses Paar gekennzeichneten Unterfolge nicht noch einmal vorkommen.
- Die bevorzugte Kennung ist der Grad der Verschachtelung des von den Begrenzern bezeichneten Unterausdrucks. Jede Datenfolge, und auch die Abfragefolge, beginnt und endet mit einem Begrenzer der definitionsgemäß den Verschachtelungsgrad 0 aufweist. Einer in der Folge des Grads n enthaltene Unterfolge wird der Verschachtelungsgrad n+1 zugewiesen. Daher hat eine Unterfolge in einer Datenfolge den Verschachtelungsgrad 1. Eine Unterfolge dieser Unterfolge hat den Verschachtelungsgrad 2, usw. Diese Verschachtelungsgrade werden zusammen mit jedem Öffnungsbegrenzer und mit dem entsprechenden Abschlußbegrenzer in der Datengruppe des Abteils abgespeichert, in dem der Begrenzer gespeichert ist.
- Eine in einer Folge vom Verschachtelungsgrad n enthaltene Variable kann nur mit einer Unterfolge vom Verschachtelungsgrad n+1 verglichen werden. Somit kann auch den einzelnen Variablen eine Kennung zugeordnet werden, die den Grad der Verschachtelung der Unterfolgen anzeigt, die gegen diese Variable erfolgreich verglichen werden können. In einer bevorzugten Ausführungsform ist aus den nachstehend beschriebenen Gründen auch jeder Variablen eine Kennung zugeordnet. Diese Kennung wird in der Identifizierungsgruppe des Abteils abgespeichert, in dem die Variable gespeichert ist, und ist gleich dem Verschachtelungsgrad der Unterfolge, mit der sie übereinstimmen kann. Das Vergleichsmittel 14 benutzt in Wirklichkeit diese Kennung anstatt der, die mit "(", ")" abgespeichert ist, wenn ein Unterausdruck, der mit einer Variablen übereinstimmt, übersprungen werden soll.
- In Fig. 2 wird eine einfaches Beispiel einer Regel-bezogenen Suche gezeigt, das erfindungsgemäß durchgeführt wird. Im gezeigten Speicherblock sind zwei Datenfolgen abgespeichert, die Folgen (a,?) und (b,c). Diese Folgen sind abgespeichert in den Abteilen 1-4 bzw. 5-8. Die zu suchende Abfragefolge ist (a,b). Jedes Abteil in Fig. 2 ist beziffert, und zwar lediglich, um die Besprechung dieses Beispiels zu erleichtern.
- Zu Beginn der Suche sind alle Token 22 gesetzt, wie in der Fig. 2(a) durch die ausgefüllten Kreise angedeutet wird. Jedes Symbol der Abfragefolge wird gesondert gesucht wie folgt. Jedes in einem Abteil mit einem gesetzten Token abgespeicherte Symbol wird verglichen mit dem aktuellen, in der Abfragefolge gesuchten Element, wie es im Kasten über dem Speicherblock gezeigt ist. Im Falle des ersten Abfrageelements (&sub0; sind alle Token gesetzt, also werden alle Abteile mit "(&sub0;" verglichen. Die Abteile 1 und 5 stimmen überein. Für alle Abteile, die nicht übereinstimmen, werden die Token rückgestellt und keine neuen Token werden gesetzt, wie die Leerkreise andeuten. Schließlich werden die Token der Abteile 2 und 6 gesetzt als Reaktion auf die Übereinstimmungen in den Abteilen 1 und 5. Jetzt wiederholt sich der Prozeß für das zweite Symbol "a" der Abfragefolge. Der Zustand der Token zu Beginn der zweiten Vergleichsoperation wird in Fig. 2(b) dargestellt. Nur die Token der Abteile 2 und 6 sind jetzt gesetzt. Daher werden nur diese Abteile mit dem Abfragesymbol "a" verglichen. Von diesen stimmt nur Abteil 2 überein. Deshalb wird am Ende der zweiten Operation nur das Token an Abteil 3 gesetzt, das sich aus der Übereinstimmung beim Vergleich in Abteil 2 herleitet, wie in Fig. 2(c) gezeigt wird. Im nächsten Vergleichsschritt wird Abteil 3, das das einzige Abteil mit einem gesetzten Token ist, mit dem Abfragesymbol "b" verglichen. Da das Abteil 3 ein variables Symbol, gekennzeichnet mit "?&sub1;" enthält, paßt es zu jeder Konstanten in der Abfragefolge. Somit wird das Token an Abteil 3 rückgestellt und das Token von Abteil 4 wird gesetzt. Im nächsten Vergleichsschritt wird Abteil 4 mit ")&sub0;" in der Abfragefolge verglichen. Am Ende des Abfragefolgevergleichs sind gesetzte Token nach allen Datenfolgen im Speicher vorhanden, die mit der Abfragefolge übereinstimmen, was im vorliegenden Beispiel nach der ersten Datenfolge sein würde (der einzigen, die mit der Abfragefolge übereinstimmt), wie in Fig. 2(d) gezeigt wird.
- Das Verfahren, das das Vergleichsmittel 14 anwendet, um über einen Unterausdruck "hinwegzuspringen", der mit einer Variablen verglichen wird, hängt davon ab, ob der Unterausdruck in einer Abfragefolge oder in einer Datenfolge enthalten war. Der Fall, in dem eine Variable in der Abfragefolge mit einem Unterausdruck in einer Datenfolge verglichen wird, ist in Fig. 3 dargestellt. Hier wird die Abfragefolge (&sub0;a,?&sub1;)&sub0; mit der Datenfolge (&sub0;a,(&sub1;,b)&sub2;c,d)&sub2;)&sub1;)&sub0; verglichen. Wenn das ?&sub1; in der Fragefolge mit dem "(&sub1;" in der Datenfolge verglichen wird, muß das Vergleichsmittel 14 in der betreffenden Datenfolge nach vorwärts suchen, bis es das zugehörige ")&sub1;" findet, und das Token auf das Abteil setzten, das demjenigen folgt, das das ")&sub1;" enthält. Das wird in zwei Schritten gemacht. Erstens, das Token des Abteils, das das ")&sub1;" enthält, wird gesetzt und das Token des Abteils, das das "(&sub1;" enthält, wird rückgestellt. Besondere Hardware zum Durchführen dieses Sprungs wird nachstehend in weiteren Einzelheiten besprochen. Zweitens wird das ?&sub1; mit dem ")&sub1;" verglichen, und da eine Variable mit jedem beliebigen Datensymbol übereinstimmt, wird zum Ende des Vergleichs das Token des nachfolgenden Abteils gesetzt. In der bevorzugten Ausführungsform wird das in einem einzigen Schritt ausgeführt.
- Fig. 4 illustriert den Fall, daß die zu überspringende Unterfolge in einer Abfragefolge enthalten ist. Hier wird die Datenfolge (&sub0;a,?&sub1;)&sub0; mit der Abfragefolge (&sub0;a,(&sub1;b,(&sub2;c,d)&sub2;)&sub1;)&sub0; verglichen. Nachdem das Vergleichsmittel 14 das ?&sub1; mit dem (&sub1; in der Abfragefolge vergleicht, muß es warten, bis das entsprechende ")&sub1;" in der Abfragefolge an das erfindungsgemäße Gerät gekoppelt ist, bevor es den nächsten Vergleich eines Datensymbols in der das ?&sub1; enthaltenden Datenfolge machen kann. Weitere Vergleiche, betreffend Datenfolgesymbole aus anderen Datenfolgen, können weiterlaufen während das Vergleichsmittel 14 auf das ")&sub1;" wartet. Dieser Wartestatus wird aufgerufen durch Setzen des Halte-Bits 20 das dem das ?&sub1; enthaltenden Abteil zugeordnet ist. Ein gesetztes Halte-Bit zeigt an, daß das Abteil noch nicht bereit ist zum Vergleich mit einem Abfragesymbol. Wenn das Vergleichsmittel 14 ein Symbol in einem Abteil mit einem gesetzten Halte-Bit vergleicht, tut es nichts, es sei denn, das Abfragesymbol sei ein Abschlußbegrenzer mit der gleichen Kennung, wie sie im Abteil mit dem betreffenden ? enthalten ist. In diesem Fall wird, sobald das ")&sub1;" an das Gerät gekoppelt ist, das Vergleichsmittel 14 sowohl das Halte-Bit als auch das Token rückstellen und das Token des Abteils setzen, das dem Abteil mit dem ? folgt.
- Verschiedene Merkmale sind in das erfindungsgemäße Gerät aufgenommen worden, um das Suchen auf der Grundlage ausschließlich von Schlüsselwörtern zu ermöglichen, im Gegensatz zu der oben beschriebenen Regel-bezogenen Suche. Zunächst muß die Abfragefolge nicht unbedingt mit einem "(" beginnen oder mit einem ")" enden, obwohl die abgespeicherten Datenfolgen mit einem (&sub0; und einem )&sub0; beginnen bzw. enden müssen. Das macht es möglich, nach allen Folgen, die ein bestimmtes Element "a" enthalten, zu suchen, durch Setzen aller Token, Vergleichen mit der Ein-Symbol-Fragefolge "a", und dann Auslesen aller Datenfolgen, die mindestens noch ein Symbol in einem Abteil abgespeichert haben, das eine gesetztes Token aufweist.
- Wenn man alle Datenfolgen finden will, die ein "a" enthalten, das irgendwo in der Datenfolge von einem "b" gefolgt wird, kann der obige Prozeß zweimal wiederholt werden. Zunächst werden alle Datenfolgen, die "a" enthalten, markiert und in irgendeinem Hilfsspeicher unter der Steuerung der Zentraleinheit abgespeichert. Dann werden alle Datenfolgen, die "b" enthalten, markiert und mit denen verglichen, die im Hilfsspeicher abgespeichert sind. Diejenigen, die beiden Gruppen gemeinsam sind, werden ausgelesen. Diese Methode würde zwar funktionieren, sie ist aber ziemlich langwierig und benötigt einen signifikant großen Hilfsspeicherplatz, wenn viele Datenfolgen das erste Symbol enthalten.
- Um das zu vermeiden, wird ein vierter Symboltyp, ein Gumpf, bezeichnet durch das Symbol "*", definiert. Wenn das Vergleichsmittel ein * in der Abfragefolge feststellt, werden alle Token zwischen den jetzt gesetzten und dem nächsten )&sub0; gesetzt. Das ermöglicht, daß die Vergleichsprozesse an jedem beliebigen Abteil unterhalb des * fortgesetzt werden. Die Operation des Gumpfs wird in Fig. 5 gezeigt. In dem in Fig. 5 dargestellten Fall wird die Abfragefolge (a,*,f) verglichen mit einer Datenfolge (a,b,(c,d),e,f) die im Speicher abgespeichert wird. Nach der Übereinstimmung des "a" steht ein gesetztes Token an Abteil 3, wie in Fig. 5(a) dargestellt wird. Nach Erfassen des * in der Abfragefolge sind alle Token vom derzeitigen an Abteil 3 bis zum )&sub0; an Abteil 10 gesetzt. Wenn also in der Abfragefolge als nächstes das "f" gesucht wird, werden die Abteile 3 bis einschl. 10 betrachtet, nicht nur Abteil 4. Da Abteil 9 ein "f" enthält, werden die Vergleiche mit dem Abfragesymbol "f" dazu führen, daß in Abteil 10 ein Token gesetzt wird, wie in Fig. 5(c) gezeigt ist. Daher markiert die Abfragefolge (a,*,f) alle Datenfolgen die ein "a" gefolgt von einem "f" irgendwo in der Datenfolge enthalten. Weitere Beispiele für die Anwendung des Gumpf-Symbols in einer Abfragefolge werden nachstehend diskutiert.
- Auch kann ein Gumpf in eine Datenfolge aufgenommen werden, was dazu führt, daß die diesen Gumpf enthaltende Datenfolge ausgewählt wird, wenn der vor diesem Gumpf stehende Teil der betreffenden Datenfolge mit dem Teil der Abfragefolge übereinstimmt, der vor dem Fragesymbol steht, das durch das Vergleichsmittel 14 mit dem Gumpf verglichen wird. Wenn ein Fragesymbol mit einem Gumpf verglichen wird, wird die Haltemarke des Abteils, in dem der Gumpf steht, gesetzt. Diese Haltemarke bleibt gesetzt, bis das erfindungsgemäße Gerät rückgestellt wird oder bis ein "genauer" Vergleichsbefehl gegeben wird. Der genaue Vergleichsbefehl wird nachstehend beschrieben. Zusätzlich wird nach jedem Vergleich zwischen dem Gumpf in diesem Abteil und einer Abfragefolge das Token in dem auf den Gumpf folgenden Abteil gesetzt. Das ermöglicht es, daß dieser Vergleich im Abteil nach dem den Gumpf enthaltenden Abteil jederzeit fortgesetzt wird, sobald ein Abfragesymbol, das mit dem in diesem Abteil enthaltenen übereinstimmt an den Speicher gekoppelt wird.
- Sobald die gesamte Abfragefolge in den Speicher geschickt ist, muß das Ergebnis ausgelesen werden. Das geschieht durch Markieren des Anfangs jeder Datenfolge, die der Abfragefolge genügt, und anschließende Auslese der einzelnen markierten Datenfolgen. Als "Marke" wird ein Token benutzt. Am Ende des Vergleichens erscheint ein gesetztes Token irgendwo in jeder Datenfolge, die der Abfragefolge entspricht bzw. unmittelbar hinter dieser Datenfolge. In Falle eines "Regel-bezogenen" Vergleichs wird das Token gesetzt und zwar genau hinter dem Ende der Datenfolge. Im Falle einer Suche nach "Schlüsselelementen" erscheint es hinter dem letzten Datenfolgesymbol, das übereinstimmt. Vorzugsweise wird eine Anweisung vorgesehen, die diese gesetzten Token zurück an den Anfang der Datenfolge, in der sie auftreten, "springen" läßt, d. h., das Token wird zurückbewegt zum ersten (&sub0; das über den einzelnen gesetzten Token erscheint. Das markiert den Umfang der einzelnen verglichenen Datenfolgen, was das Auslesen der Folge erleichtert.
- In der bevorzugten Ausführungsform, jetzt unter erneuter Bezugnahme auf Fig. 1, werden Datenfolgen vom erfindungsgemäßen Gerät, jeweils ein Symbol nach dem anderen, über den Bus 11 eingelesen, der benutzt wird, um Abfragefolgen auf das erfindungsgemäße Gerät zu legen. Das Abteil, das das zu lesenden Symbole enthält, wird vom Vergleichsmittel 14 und vom Empfangsmittel 41 mit dem Bus 11 verbunden. Das anzuschließende Abteil wird durch ein gelesenes Zeigerbit 32 vorgeschrieben. Zu gegebener Zeit kann immer nur ein Lesezeiger-Bit gesetzt werden. Das dieses gesetzte Bit aufweisende Abteil wird während des Auslesens vom Vergleichsmittel 14 mit dem Bus 11 verbunden. Die Stellung des gesetzten Bits im Speicherblock 16 kann verändert werden durch Ausführen einer der folgenden drei Befehle, die nachstehend detailliert beschrieben werden. Auf ähnliche Weise werden in der bevorzugten Ausführungsform Datenfolgen vom Bus 11 her in das erfindungsgemäße Gerät geschrieben. Das Abteil, das das auf den Bus 11 gegebene Symbol abspeichern soll, wird durch ein Schreibzeiger-Bit 34 vorgeschrieben, das ähnlich arbeitet wie das oben besprochene Lesezeigerbit 32. Während dieser Schreiboperation, die nachstehend detailliert besprochen werden soll, ist das das gesetzte Schreibzeiger-Bit aufweisende Abteil über das Vergleichsmittel 14 mit dem Bus 11 verbunden. Die Stellung des gesetzten Schreibzeiger-Bits verändert sich durch Senden eines geeigneten Schreibbefehls an das Gerät.
- Sobald eine Datenfolge im erfindungsgemäßen Gerät abgespeichert ist, kann sie gelöscht werden durch Setzen des Löschbits 30 in jedem Abteil, das ein Symbol der betreffenden Folge enthält. Das Vergleichsmittel 14 ignoriert alle Abteile, die gesetzte Löschbits enthalten, wenn es die paarweisen Vergleiche zwischen dem Abfragesymbol und den im erfindungsgemäßen Gerät gespeicherten Symbolen durchführt.
- Um die erforderliche Zeit zum Finden aller abgespeicherten Datenfolgen, die einer gegebenen Abfragefolge entsprechen, zu verkürzen, ist der Speicherblock 16 in eine Anzahl Segmente unterteilt, wie in Fig. 6 dargestellt ist. Jedes Segment besteht aus einem oder mehreren aneinanderliegenden Abteilen. Das Vergleichsmittel 14' beinhaltet eine Vielzahl von Vergleichsschaltungen 82, wobei jeder dieser Schaltkreise 82 über eine herkömmliche Multiplexerschaltung 88 an ein solches Segment angeschlossen ist. Jede Vergleichsschaltung bewirkt die Ausführung der paarweisen Vergleiche zwischen den Symbolen, die in dem mit ihm verbundenen Speichersegment abgespeichert sind, und dem Abfragesymbol, das gerade mit dem erfindungsgemäßen Gerät gekoppelt ist und im Abfragepuffer 12' abgespeichert ist. Das betreffende Abfragesymbol wird vom Puffer 12' an die einzelnen Vergleichsschaltungen auf einem Abfragebus 86 gegeben. Wenn ein neues Abfragesymbol an den Abfragebus 86 gekoppelt wird, gibt der Empfangskreis 41' ein Signal an die Vergleichsschaltungen auf dem Bus 84. Jede Vergleichsschaltung durchsucht dann die Speicherabteile unter seiner Kontrolle und vergleicht das in jedem betreffenden Abteil im aktiven Zustand abgespeicherte Symbol mit dem Abfragesymbol. Da die einzelnen Vergleichskreise parallel arbeiten, verkürzt sich die Suchzeit um einen Faktor, der gleich ist der Anzahl der Vergleichskreise im Vergleich zu einem System mit nur einem solchen Schaltkreis.
- Jede Vergleichsschaltung 82 ist ferner über den Bus 84 mit den Vergleichsschaltungen verbunden, die die Vergleiche mit den Symbolen durchführen, die in den Segmenten 80 auf beiden Seiten des Segments abgespeichert sind, das an diesen Schaltkreis angeschlossen ist. Der Bus 84 liefert ein Mittel, durch das eine Vergleichsschaltung ein Token in einem Segment 80 setzen kann, das neben dem liegt, das mit ihm verbunden ist. Wenn eine Vergleichsschaltung 82 ein abgespeichertes Symbol findet, das mit dem Abfragesymbol übereinstimmt, muß er das Token des Abteils setzen, das hinter dem liegt, der das Symbol enthält. Wenn dieses Abteil in dem Segment 80 hinter denjenigen liegt, das es kontrolliert, gibt es ein Signal an die Vergleichsschaltung 82, die dieses anliegende Segment steuert, um das betreffende Token zu setzen.
- Vorstehend ist eine ganze Reihe Anwendungen aufgelistet, in der Token zwischen nicht-nebeneinanderliegenden Abteilen übertragen werden müssen, d. h., an einem Abteil wird ein erstes Token rückgestellt und ein zweites Token wird an einem Abteil gesetzt, das mindestens 2 Abteile hinter dem ersten Abteil steht. Z.B., wenn die Abfragefolge ein ?x enthält, das mit einem (x verglichen werden soll, dann muß das Token auf das Abteil springen, das als nächstes auf das Abteil folgt, das das zugehörige )x abgespeichert hat. In der erfindungsgemäß bevorzugten Ausführungsform wird das erreicht durch eine "Brücke", die Teil des Vergleichsmittels 14 ist und die über die ganzen Länge des Speicherblocks läuft, wie in Fig. 6 unter 132 gezeigt wird. Jedes Token ist durch einen Schaltkreis 95 mit einem Bus 130 verbunden. Eine in weitere Einzelheiten gehende schematische Darstellung dieser Schaltung wird in Fig. 7 gezeigt. Jeder Schaltkreis 95 weist drei Schalter, die unter 150, 152 und 154 gezeigt werden, sowie einen Steuerkreis 142 auf. Die Steuerkreise 142 kommunizieren über einen Steuerbus 90. Unterbrechungen in einer "Brücke" 144 können durch Öffnen eines geeigneten "Unterbrecherschalters" 150 an jedem beliebigen Abteil eingeführt werden.
- Jedes Token hat einen Eingangsanschluß 156 und einen Ausgangsanschluß 158. Sowohl der Eingangsanschluß als auch der Ausgangsanschluß jedes Tokens kann mit der Brücke verbunden werden, entweder vor oder nach der Unterbrechung. Z.B. um den Eingangsanschluß 156 mit der Brücke vor einer Unterbrechung zu verknüpfen, wird Schalter 154 mit dem Anschluß 156 verbunden. Um den Eingangsanschluß nach der Unterbrechung zu verbinden, wird Schalter 152 mit dem Anschluß 156 verbunden. Ein Signal auf dem Eingang eines Tokens führt zum Setzen desselben. Der Ausgangsanschluß kann auf ähnliche Weise entweder nach oder vor der Unterbrechung verbunden sein. Die Brücke bietet ein Mittel zum Anschließen des Ausgangsanschlusses eines bestimmten Abteils an den Eingangsanschluß eines oder mehrerer bestimmter Abteile. Der Betrieb der Brücke wird koordiniert durch eine Schnittstellen-Schaltung 133, die vom Eingangsschaltkreis 41 gesteuert wird.
- Die Schnittstellenschaltung 133 übermittelt die Begrenzerkennungen, bei denen die Brücke unterbrochen werden muß, sowie die Kombinationen, wie die Schalter bei den einzelnen gesetzten Token geschlossen und die Schaltkreise 95 unterbrochen werden müssen. Sie bekommt diese Information von einer oder mehreren der Vergleichsschaltungen 82 und der Empfangsschaltung 41' auf dem Bus 84. Bei dieser Schaltung handelt es sich um eine Logikschaltung herkömmlicher Konstruktion.
- Wenn ein ?x mit einem (x im Speicher verglichen wird, werden an allen Abteilen, die ein )x aufweisen, Unterbrechungen eingeführt durch Übermitteln eines Befehls an den Steuerbus 90 zu den Steuerschaltungen 142, die die Unterbrecherschalter 150 an allen Stellen öffnen, die ein )x aufweisen. Unterbrechungen werden auch in die Abteile mit gesetzten Token durch Öffnen der Unterbrechungsschalter 150 an diesen Stellen eingeführt. Die Token-Ausgangsanschlüsse aus den Abteilen mit gesetzten Token sind vor den Unterbrechungen mit der Brücke 144 verbunden durch Verbindung der Schalter 154 mit den Ausgangsanschlüssen 158. Die Token-Eingangsanschlüsse an Abteilen mit einem )x sind mit der Brücke 144 hinter den Unterbrechungen verbunden durch Verbinden der Schalter 152 mit den Eingangsanschlüssen 156. Hier muß darauf hingewiesen werden, daß infolge der Verwendung von Unterbrechungen in der Brücke 144 dafür ein einziger Draht durch den Speicher benutzt werden kann. Da die zwei Abteile, die als Quelle und Ziel der Token dienen, direkt verbunden werden, findet die Übertragung in einer Zeit statt, die unabhängig von der Anzahl der übersprungenen Abteile ist. Daher stört sie die Vergleiche nicht, die an anderen Speicherabteilen stattfinden, die vom einfachen Konstanten/Konstanten-Typ sind oder in denen das Token eine unterschiedliche Anzahl Abteile hinunterbewegt wird.
- Die Brücke wird auch benutzt, wenn in der Abfragefolge ein * auftritt. Hier werden die Unterbrechungen am oben spezifizierten Token sowie an Abteilen eingeführt, die ein )&sub0; enthalten. Alle dazwischen liegenden Abteile haben ihre Tokeneingänge mit der Leitung verbunden, was bewirkt, daß alle Token zwischen dem gesetzten Token und dem )&sub0; gesetzt werden.
- Schließlich benutzt der Befehl, der das gesetzte Token an den Anfang der Datenfolge rückt, in der es auftritt, ebenfalls die Brücke 144. Hier werden die Unterbrechungen an dem Abteil eingeführt, dessen Token gesetzt ist, sowie an allen Abteilen, die ein (&sub0; enthalten. In diesem Fall jedoch wird der Ausgang des gesetzten Token mit einem Punkt hinter der Unterbrechung in der Brücke 144 verbunden, und der Eingang des Token am Abteil, das das (&sub0; enthält, wird mit einem Punkt Vor der Unterbrechung verbunden.
- Eine zweite Ausführungsform der vorliegenden Erfindung wird in Fig. 8 unter 210 gezeigt. Diese Ausführungsform ermöglicht eine bedeutsame Verkürzung der Zeit, die zum Durchsuchen des Speichers auf Datenfolgen benötigt wird, die zu einer bestimmten Abfragefolge passen, wenn nur sehr wenige solcher Datenfolgen vorhanden sind. Das wird erreicht durch Überspringen von Speicherteilen, die gar kein gesetztes Token enthalten. In dieser bevorzugten Ausführungsform wird der Speicherblock 211, der zum Abspeichern der Datenfolgesymbole benutzt wird, in eine Vielzahl Seiten unterteilt, für die 212 typisch ist. In der Ausführungsform gemäß Fig. 8 gibt es vier Seiten. Ausführungen mit anderen Seitenzahlen sind dem Fachmann ohne weiteres klar. Jede Seite 212 hat N Abteile. Jedes Abteil ist identisch mit dem Abteil, das im Zusammenhang mit Fig. 1(a) beschrieben wurde. Eine gegebene Datenfolge wird in einem zusammenhängenden Abteilblock gemäß 213 abgespeichert. Für die Zwecke der Abspeicherung von Datenfolgesymbolen werden die Seitengrenzen ignoriert. Das erste Datenfolgesymbol der ersten Datenfolge wird im ersten Abteil der ersten Seite, das zweite Datenfolgesymbol im zweiten Abteil der ersten Seite abgespeichert, usw. Wenn auf einer gegebenen Seite nicht genug Abteile sind, um eine Datenfolge unterzubringen, wird die Folge auf der nächsten Seite fortgesetzt.
- Die Vergleiche zwischen den im Speicherblock 211 abgespeicherten Datenfolgesymbolen und einem gegebenen Abfragefolgesymbol werden von einer Vielzahl Vergleichsschaltungen 214 durchgeführt. Es gibt N solche Vergleichsschaltungen. Jede Vergleichsschaltung führt die entsprechenden Vergleiche zwischen dem in einem gegebenen Abteil auf den einzelnen Seiten 212 abgespeicherten Datenfolgesymbol und dem Abfragefolgesymbol durch, das in dem betreffenden Augenblick in das erfindungsgemäße Gerät eingespeist wird. Die erste Vergleichsschaltung vergleicht die im ersten Abteil jeder Seite abgespeicherten Datenfolgesymbole mit dem Abfragefolgesymbol, das am Bus 218 steht. Die zweite Vergleichsschaltung vergleicht die im zweiten Abteil auf jeder Seite abgespeicherten Datenfolgesymbole mit diesem Abfragefolgesymbol usw. Das laufend mit den im Speicherblock 211 abgespeicherten Datenfolgesymbolen verglichene Abfragefolgesymbol wird den einzelnen Vergleichsschaltungen 214 über einen Bus 218 zugeführt.
- Zu einer gegebenen Zeit ist immer nur eine Seite des Speicherblocks 211 für diesen Vergleichsprozeß aktiviert.
- Diese Seite ist über eine Vielzahl von Multiplexer- Schaltungen 216 mit den Vergleichsschaltungen 214 verbunden. Es gibt für jede Vergleichsschaltung 214 eine solche Multiplexer-Schaltung 216. Alle Abteile auf einer gegebenen Seite werden mit dem aktuellen Abfragefolgesymbol verglichen, bevor auf die nächste Seite übergegangen wird.
- Wenn das Datenfolgesymbol, das im I-ten Abteil der gerade aktiven Seite abgespeichert ist, mit dem Abfragefolgesymbol übereinstimmt, gibt die I-te Vergleichsschaltung 214 ein Signal an die (I+1)-te Vergleichsschaltung, das Token des (I+1)-ten Abteils zu setzen. Das Signal wird auf den Bus 219 gegeben, der die Vergleichsschaltungen 214 verbindet. Wenn I=N ist, d. h. das letzte Abteil auf der aktiven Seite mit dem Abfragefolgesymbol übereinstimmt, dann schickt die N-te Vergleichsschaltung an die erste Vergleichsschaltung ein Signal, das erste Token der nächsten Seite zu setzen, wenn diese Seite aktiviert wird.
- Wenn ein variables Abfragefolgesymbol auf den Bus 218 gegeben wird, kann ein Überspringen eines Unterausdrucks in einem oder mehreren der in Block 211 abgespeicherten Datenfolgen erforderlich werden. Wenn von der Vergleichsschaltung 214 ein Sprung angezeigt wird, d. h. ein variables Abfragefolgesymbol mit einem Öffnungsbegrenzer verglichen wird, wird dieser Sprung ausgeführt durch Signale auf einer Brücke 220, die mit jeder der Vergleichsschaltungen 214 über zwei Schalter 226 verbunden ist.
- Diese Brücke arbeitet auf ähnliche Weise wie in Fig. 7 gezeigt wird. Die Brückenschaltung wird in Fig. 9 unter 230 genauer gezeigt.
- Nehmen wir jetzt Bezug auf Fig. 9; jede Vergleichsschaltung 214 steht mit der Brücke 220 über einen Eingangsanschluß 240 und einen Ausgangsanschluß 242 in Verbindung. Ein Signal auf dem Eingangsanschluß 240 bewirkt, daß die Vergleichsschaltung 214 das Token des aktuell angeschlossenen Abteils setzt. Ein Signal liegt auf dem Ausgangsanschluß 242, wenn das Token im Abteil, das in diesem Augenblick mit der Vergleichsschaltung verbunden ist, gesetzt ist. Jede Vergleichsschaltung 214 steuert drei Schalter, die Schalter 244, 246 und 248, die der Brücke 220 beigeordnet sind. Der Schalter 248 ermöglicht, daß eine Unterbrechung in der Brücke an der Stelle entsteht, wo sie die Vergleichsschaltung 214 steuert. Der Schalter 242 wird benutzt, um entweder den Eingangsanschluß 240 oder den Ausgangsanschluß 242 mit der Brücke 220 hinter dieser Unterbrechung zu verbinden. Der Schalter 244 wird benutzt, um entweder den Eingangsanschluß 240 oder den Ausgangsanschluß 242 vor dieser Unterbrechung an die Brücke 220 zu legen.
- Diese Schalter werden benutzt, um ein Token zwischen den Abteilen zu "überspringen". Wenn z. B. ein ?x mit einem (x Verglichen wird, bewirkt jede in diesem Augenblick an ein Abteil mit einem abgespeicherten )x angeschlossene Schaltung, daß durch Öffnen des Schalters 248 unter ihrer Steuerung an seiner Stelle eine Unterbrechung in die Brücke eingeführt wird. Jede Vergleichsschaltung 214 überprüft ferner, ob sie in diesem Augenblick an ein Abteil angeschlossen ist, in dem entweder ein (x oder ein )x vorkommt. Wenn sie an ein Abteil angeschlossen ist, in dem ein (x steht, legt sie seinen Ausgangsanschluß 242 vor dem von ihr gesteuerten Schalter 248 durch Betätigung des entsprechenden Schalters 246 auf die Brücke 220. Liegt sie aber an einem Abteil, in dem ein )x vorkommt, legt sie seinen Eingangsanschluß 240 durch Betätigung des entsprechenden Schalters 246 hinter dem von ihr gesteuerten Schalter 248 auf die Brücke 220. Das Signal auf der Brücke 220 bei der letzten Vergleichsschaltung wird in einem Speicherkreis 249 abgespeichert, der über eine Leitung 250 an der ersten Vergleichsschaltung 214 mit der Brücke 220 verbunden ist. Diese Speicherschaltung bewirkt, daß ein Sprung auf der nächsten Seite fortgesetzt wird, sobald diese Seite aktiviert wird.
- Wenn ein Sprung erfordert, daß ein Token auf eine Seite gesetzt wird, die auf die im Augenblick aktiven Seite folgt, steht das entsprechende Signal zu Beginn der Vergleiche für diese Seite, wenn sie aktiviert wird, an der Brücke.
- Wenn das aktuelle Abfragefolgesymbol ein "*" ist, werden am Ort jedes gesetzten Tokens und am Ort jedes )&sub0; Unterbrechungen eingeleitet. Alle Abteile mit einem gesetzten Token liegen über den entsprechenden Schalter 246 an der Brücke 220. Die Eingangsanschlüsse 240 aller Abteile ohne gesetztes Token liegen über die Schalter 244 an der Brücke.
- Ein gesetztes Token kann durch Einführen von Unterbrechungen in der Drahtbrücke 220 an allen Stellen, an denen ein (&sub0; steht, an den Anfang einer Datenfolge geschoben werden, in der es auftritt. Die Eingangsanschlüsse 240 aller Stellen mit einem (&sub0; liegen über Schalter 246 an der Brücke 220. Die Ausgangsanschlüsse 242 der Stellen mit gesetzten Token liegen über Schalter 244 an der Brücke.
- Eine beträchtliche Steigerung der Vergleichsgeschwindigkeit läßt sich erzielen durch Überspringen von Speicherseiten, in denen kein Token gesetzt ist. Wieder nehmen wir hier Bezug auf Fig. 8; die Multiplexerschaltungen 212 werden durch eine Multiplexer-Steuerschaltung 222 gesteuert, die mittels Signalen auf dem Bus 224 die gerade aktive Seite 212 spezifiziert. Ein Vergleichszyklus läuft an, sobald ein neues Abfragefolgesymbol in das erfindungsgemäße Gerät eingespeist wird. Wie nachstehend noch näher beschrieben wird, prüft die Multiplexer-Steuerschaltung 222 die Token auf jeder Seite 212 des Speicherblocks 211, und entscheidet, ob mindestens ein Token auf dieser Seite gesetzt ist. Wenn nicht, markiert die Multiplexer-Steuerschaltung 222 diese Seite zum Überspringen. Dann bewirkt die Multiplexer-Steuerschaltung 222, daß die Multiplexerschaltungen 216 die erste nicht übersprungene Seite an die Vergleichsschaltung 214 legt. Am Ende der Vergleiche, die die Speicherabteile dieser Seite betreffen, bewirkt die Multiplexer-Steuerschaltung 222, daß die nächste Seite, die mindestens ein gesetztes Token aufweist, über die Multiplexerschaltungen 216 an die Vergleichsschaltung 214 gelegt wird. Das wiederholt sich, bis die Vergleiche zwischen dem aktuellen Abfragefolgesymbol und den auf der letzten Seite abgespeicherten Datenfolgesymbolen abgeschlossen sind.
- Es gibt zwei Sonderfälle, in denen eine Seite, die eigentlich übersprungen werden sollte, für einen Vergleich angewählt wird, trotz des Umstands, daß sie zu Beginn des Vergleichszyklus kein gesetztes Token enthält. Im ersten Fall ist das Abfragefolgesymbol ein ?x. Da das möglicherweise eine Sprungbedingung signalisiert, die möglicherweise zum Setzen eines Token auf einer der Seiten führen würde, werden alle Seiten für Vergleiche aktiviert. Im zweiten Fall wird das letzte Abteil der aktuellen Seite erfolgreich mit dem aktuellen Abfragesymbol verglichen. Hier muß ein Token auf das erste Abteil der nächsten Seite geschoben werden. Damit wird die nächste Seite für Vergleiche aktiviert, auch wenn sie im Augenblick keine gesetzten Token enthält.
- In Fig. 10 wird die Multiplexer-Steuerschaltung 222 in größeren Einzelheiten gezeigt. Die Multiplexer-Steuerschaltung 222 ist ein modifiziertes Schieberegister mit einer binären Speicherzelle 260 je Seite. Dieses Schieberegister liefert in Kombination mit den Multiplexerschaltungen ein Mittel zum Spezifizieren einer bestimmten Speicherseite. Nur eine einzige Speicherzelle 260 enthält zu einem gegebenen Zeitpunkt eine "1". Jede Speicherzelle 260 weist einen Ausgangsanschluß 262 auf, der durch eine Ader des Busses 224 mit einem entsprechenden Gatter in jeder der Multiplexerschaltungen 216 verbunden ist. Wenn eine Speicherzelle 260 eine "1" enthält, wird die entsprechende Speicherseite 212 des Speicherblocks 211 durch die Multiplexerschaltungen 216 an die Vergleichsschaltungen 214 gelegt. Nachfolgende Seiten des Speicherblocks 211 sind auf diese Weise durch Schieben des Inhalts jeder Speicherzelle 260 in eine Speicherzelle in der Schieberegisterkette, die dieser Speicherzelle folgt, angeschlossen. Wenn der Steuerschaltung 264 die "1" hinten in der Leitung 266 entdeckt, ist der Vergleichszyklus abgeschlossen.
- Jede Speicherzelle 260 ist mit einem Leitwegschalter 270 in Reihe geschaltet. Jeder Leitwegschalter 270 ermöglicht es, daß die darauffolgende Speicherzelle 260 aus dem Schieberegisterpfad "ausgespart" wird und verhindert auf diese Weise, daß diese Seite an die Vergleichsschaltungen 214 gelegt wird. Jeder Leitwegschalter 270 wird von Signalen an einem Steueranschluß 274 gesteuert. Dieser Steueranschluß wird mit dem Ausgang eines Zwischenspeicherflipflops 276 verbunden. Jedes Zwischenspeicherflipflop liefert die Mittel zum Aktivieren von Vergleichen auf der entsprechenden Speicherseite. Das Zwischenspeicherflipflop 276 wird zu Beginn des Vergleichszyklus als Reaktion auf Speichersteuersignale von der Steuerschaltung 264 gestellt, die auf einen Speichersteueranschluß 277 an jedem Zwischenspeicherflipflop 276 gegeben werden. Die in den einzelnen Zwischenspeicherflipflops 276 gespeicherten Daten werden gesteuert von dem Ausgang einer ODER-Schaltung 280, deren Eingänge 282 an den Token in den entsprechenden Seite 212 im Speicherblock 211 liegen. Das Zwischenspeicherflipflop 276 stellt seinerseits die Stellung des an ihn angeschlossenen Schalters 270. Wenn in einer gegebenen Seite zu Beginn des Vergleichszyklus keine Token gesetzt sind, wird das Zwischenspeicherflipflop 276, das dieser Seite entspricht, so gesetzt, daß es bewirkt, daß die entsprechende Speicherzelle 260 übersprungen wird. Somit spezifiziert jedes Zwischenspeicherflipflop einen von zwei möglichen Zuständen für die entsprechende Speicherseite. Im ersten Zustand ist die entsprechende Speicherseite aktiviert und wird am entsprechenden Punkt des Vergleichszyklus zum Anschluß an die Vergleichsschaltungen angewählt. Im zweiten Zustand wird sie aus dem Speicher "ausgespart".
- Seiten, die zum "Aussparen" markiert sind, werden reaktiviert durch Rückstellen des entsprechenden Zwischenspeicherflipflops 276 wenn einer der beiden oben diskutierten Fälle durch den Steuerschaltkreis 264 festgestellt wird. Jedes der Zwischenspeicherflipflops 276 kann gesondert rückgestellt werden durch ein Rückstellsignal, das auf einen Rückstellanschluß 284 der einzelnen Zwischenspeicherflipflops 276 gegeben wird. Jeder dieser Rückstellanschlüsse 284 liegt am Rückstellbus der Steuerschaltung 264. Nach dem Rückstellen bewirkt ein Zwischenspeicherflipflop 276, daß der entsprechende Schalter 270 die entsprechende Speicherzelle 260 in die Schieberegisterkette einschließt. Wenn ein variables Abfragefolgesymbol an das erfindungsgemäße Gerät gelegt wird, bewirkt die Steuerschaltung 264, daß jedes Zwischenspeicherflipflop 276 rückgestellt wird.
- Der Steuerkreis 264 überwacht ferner den Ausgang der letzten Vergleichsschaltung 214, der auf dem mit ihm verbundenen Bus 219 steht. Wenn dieser Ausgang ein Signal ist, das angibt, daß das erste Token auf der nächsten Seite gesetzt werden muß, stellt der Steuerkreis das Zwischenspeicherflipflop entsprechend der Speicherzelle 260 zurück, die auf diejenige folgt, die in diesem Augenblick eine "1" abgespeichert hat. Somit werden Seiten, die zum Aussparen markiert sind, reaktiviert, wenn sie ein gesetztes Token aufnehmen sollen.
- In der bevorzugten Ausführungsform reagieren die Vergleichsmittel 14 auf dreizehn Befehle, die sich in fünf Klassen unterteilen lassen: Initialisierung, Vergleichen, Löschen, Eingabe und Ausgabe sowie Speicherbereinigung. Alle von der erfindungsgemäßen Vorrichtung durchzuführenden Operationen werden spezifiziert durch Senden einer oder mehrerer dieser Befehle zu den Vergleichsmitteln 14 auf Bus 11. Jeder Befehl besteht aus einem Operationscode, der den Befehl spezifiziert, und ggf. einem Abfragesymbol. Es gibt vier Initialisierungsbefehle. Der erste, bezeichnet als EMP, "leert" den Speicherblock 16 indem er bewirkt, daß in jedem Abteil das Löschbit 30 gesetzt wird. Der zweite, bezeichnet als RWT, setzt die Schreibzeigerbits 34 auf das erste Abteil im Speicherblock. Der dritte, bezeichnet als RRD, setzt die Lesezeigerbits 32 auf das erste Abteil im Speicherblock. Der vierte, bezeichnet als CLM, setzt alle Token 22 und stellt die Haltebits 20 zurück. Dieser letztere Befehl initialisiert des Speichersystem für eine neue Wiederauffindoperation.
- Es gibt zwei Vergleichsbefehle, die bezeichnet werden als "genau übereinstimmend" und "nicht genau übereinstimmend". Der genau übereinstimmende Vergleichsbefehl, bezeichnet als EXM, erfordert, daß das im Befehl enthaltene Abfragesymbol ganz genau mit dem Symbol übereinstimmt, das in dem zu vergleichenden Abteil abgespeichert ist, wobei in diesem Fall das Token des dem mit dem Abfragesymbol verglichenen Abteils gesetzt wird. Hier wird ein ? in der Abfragefolge nur dann berücksichtigt, wenn es genau einem anderen ? im Speicherabteil entspricht, d. h., ein ? in der Abfragefolge stimmt nicht mit einem eingebetteten Unterausdruck im Speicher oder auch nur mit einer Konstanten im Speicher überein. Dieser Befehl wird vornehmlich als Vorläufer für den nachstehend diskutierten Löschbefehl benutzt.
- Bei nicht genauer Übereinstimmung, bezeichnet als NEM, hängt die vom Vergleichsmittel 14 unternommene Aktion vom Status des Rückhaltebits und von Token des Abteils ab, das mit dem im Befehl enthaltenen Abfragesymbol verglichen werden soll. Wenn das Token nicht gesetzt ist, findet keine Aktion statt. Für die weitere Diskussion wollen wir annehmen, daß das Token gesetzt ist. Wenn die Identifizierungsgruppe 24 des verglichenen Abteils anzeigt, daß das Abteil eine Konstante enthält, und die Identifizierungsgruppe des Abfragesymbols anzeigt, daß auch das Abfragesymbol eine Konstante ist, vergleicht das Vergleichsmittel 14 die Datengruppe 26 des Abteils mit der Datengruppe des Abfragesymbols. Wenn der Vergleich positiv ausfällt, wird das Speicher-Token für das nächste Abteil gesetzt und das Token für das aktuelle Abteil wird rückgestellt. Ähnlich wird; wenn die Identifizierungsgruppe einen Begrenzer mit einer Kennung x anzeigt, und die Abfragesymbol-Identifikationsgruppe den gleichen Begrenzer mit der gleichen Kennung anzeigt, das nächste Token gesetzt und das aktuelle Token rückgestellt.
- Wenn die Kennzeichnungsgruppe des Abteils eine Variable mit einer Kennung "x" anzeigt, hängt die anlaufende Aktion vom Status des Haltebits 20 sowie auch von der Kennzeichnungsgruppe des Abfragesymbols ab. Wenn das Haltebit nicht gesetzt ist, müssen drei Fälle betrachtet werden, d. h., die Kennzeichnungsgruppe des Abfragesymbols zeigt an, daß das Abfragesymbol eine Konstante, eine Variable oder ein Begrenzer ist. Die ersten beiden Fälle bewirken, daß das nächste Token gesetzt und das aktuelle Token rückgestellt wird. Ein Begrenzer mit einer Kennung "x" bewirkt, daß das Haltebit gesetzt wird.
- Wenn das Haltebit gesetzt ist, müssen wieder die drei Möglichkeiten für den Vergleich des Abfragesymbols unterschieden werden: Eine Konstante, eine Variable, oder ein Begrenzer. Wenn die Kennzeichnungsgruppe eine Variable oder eine Konstante anzeigt, wird keine Aktion unternommen. Wenn die Kennzeichnungsgruppe des Abfragesymbols einen Abschlußbegrenzer anzeigt, wird seine Kennung mit der Kennung der im Abteil abgespeicherten Variablen verglichen. Wenn die Kennungen nicht übereinstimmen, wird keine Aktion unternommen. Wenn die Kennungen übereinstimmen, wird das Haltebit rückgestellt, das nächste Token in der Datenfolge wird gesetzt und das aktuelle Token wird rückgestellt.
- Wenn die Abfragesymbol-Kennzeichnungsgruppe eine Variable anzeigt, hängt die Ausgabe an die nächste Stufe von der Kennzeichnungsgruppe des Abteils ab. Wenn die Abteils-Kennzeichnungsgruppe eine Variable oder eine Konstante anzeigt, wird das nächste Token in der Datenfolge gesetzt und das aktuelle Token wird rückgestellt. Wenn die Kennzeichnungsgruppe einen Öffnungsbegrenzer mit einer Kennung "x" anzeigt, wird das Token auf das Abteil, das den zugehörigen Abschlußbegrenzer mit einer Kennung x enthält, durch Rückstellen des Token des aktuellen Abteils und Setzen des Tokens des Abteils, das den betreffenden Begrenzer enthält, "übertragen". Das Token dieses Abteils wird dann rückgestellt und das Token des nachfolgenden Abteils wird rückgestellt. Das geschieht durch Verbinden des Tokenausgangs des gesetzten Token am Abteil, das das (x enthält, mit der Token-Eingangslogik für das Token am Abteil, das das )x enthält, unter Benutzung der Brücke, wie oben erklärt.
- Wenn das Abfragefolgesymbol ein "*" ist, werden die Token aller Abteile zwischen jedem gesetzten Token und dem Ende der Datenfolge, in der sie auftreten, gesetzt. Das wird erreicht durch Verbinden des Tokenausgangs der Abteile mit den gesetzten Token zur Brücke und Verbindung aller Tokeneingänge der Abteile zwischen dem gesetzten Token und dem nächsten )&sub0; zur Brücke mit eingeführten Unterbrechungen an den Stellen, die mit )&sub0; markiert sind.
- Wenn das Token des Abteils, das ein "*" enthält, gesetzt ist, setzt das Vergleichsmittel 14 auch das Haltebit 20. Solange das Haltebit an einem Abteil gesetzt ist, das ein "*" enthält, setzt das Vergleichsmittel nach jedem positiven Vergleich das Token des Abteils, das auf dasjenige mit dem * folgt.
- Alle Datenfolgen, die mit einer gegebenen Abfragefolge übereinstimmen, werden identifiziert durch Senden einer Folge von NEM-Befehlen, wobei in jedem Befehl ein Abfragesymbol enthalten ist. Am Ende der Abfragefolge tritt nach jeder Datenfolge, die mit der Abfragefolge übereinstimmt, ein gesetztes Token auf. Das Token muß an den Anfang der betreffenden Daten folge zurückbewegt werden, bevor die Datenfolge ausgelesen werden kann. Um das zu bewirken, ist ein mit TBK bezeichneter Befehl vorgesehen, der jedes Token zurück zum ersten davor angetroffenen "(&sub0;" bewegt. Das geschieht durch Benutzen der oben beschriebenen Brücke. Unterbrechungen werden an allen Stellen mit (&sub0; eingeführt und das Token wird dann durch Verbinden des Tokenausgangs des gesetzten Tokens und der Token-Eingänge aller Abteile, die ein (&sub0; enthalten, mit der Brücke, zurück zum nächsten Abteil mit einem (&sub0; geführt.
- Zur Eingabe und Ausgabe der Datenfolgen gibt es 4 Befehle. Es gibt drei Lesebefehle: Bewegen des Lesezeigers vorwärts und rückwärts und Daten-Lesen. Die Befehle zum Bewegen des Lesezeigers nach vorwärts und nach rückwärts, bezeichnet als RFD und EBD, bewirken, daß der Lesezeiger auf das erste gesetzte Token geführt wird, das der Zeiger antrifft, wenn er aus seinem aktuellen Abteil vorwärts bzw. rückwärts geführt wird. Der Datenlesebefehl, bezeichnet als RDS, legt den Inhalt des aktuell vom Lesezeiger gekennzeichneten Abteils auf den Bus 11, so daß ihn das externe Datenverarbeitungssystem lesen kann. Der Lesezeiger wird nach jedem Datenlesebefehl um ein Abteil nach vorne bewegt. Wenn der Lesezeiger das Ende des Speicherblocks erreicht, wird ein Signal, das das angibt, auf dem Bus 11 zum externen Datenverarbeitungssystem geschickt.
- Um also alle Datenfolgen zu lesen, die mit einer gegebenen Abfragefolge übereinstimmen, stellt man mit Hilfe des RRD- Initialisierungsbefehls den Lesezeiger auf das erste Abteil im Speicher zurück. Dann wird der Zeiger unter Verwendung des RFD-Befehls zur ersten übereinstimmenden Datenfolge vorwärts bewegt. Als nächstes wird dann der Zeiger mit dem Befehl RFD auf die erste übereinstimmende Datenfolge vorgeschoben. Dann wird die betreffende Datenfolge unter Verwendung einer Reihe von RDS Befehlen jeweils Symbol für Symbol ausgelesen. Wenn das )&sub0;, das das Ende der Datenfolge markiert, ausgelesen wird, wird ein neuer RFD Befehl gegeben, um den Lesezeiger auf die nächste übereinstimmende Datenfolge zu setzen. Die oben beschriebene Auslesefolge wird dann für die nächste Folge wiederholt. Sobald ein RFD Befehl oder ein RDS Befehl signalisiert, daß das Ende des Speicherblocks erreicht ist, ist das Auslesen abgeschlossen.
- Es gibt nur einen einzigen Schreibbefehl. Der Schreibzeiger steht immer auf dem ersten freien Abteil nach den abgespeicherten Datenfolgen. Der Schreibbefehl kopiert die Daten auf dem Bus 11 in das Abteil und schiebt dann den Schreibzeiger um ein Abteil vorwärts. Wenn der Schreibzeiger das Ende des Speicherblocks erreicht, wird ein Signal auf Bus 11 an das externe Datenverarbeitungssystem geschickt. Dann muß der nachstehend beschriebene Speicherbereinigungsbefehl ausgeführt werden, um Platz für neue Daten zu machen.
- Zum Laden des Speicherblocks mit Datenfolgen wird er zunächst geleert und dann wird der Schreibzeiger mit Hilfe der geeigneten Initialisierungsbefehle auf das erste Abteil im Speicherblock gestellt. Jede Datenfolge wird an das erfindungsgemäße Gerät geschickt, jeweils Symbol für Symbol, wobei jedes Symbol in einem Schreibbefehl enthalten ist. Am Ende der Schreibbefehle werden die gespeicherten Datenfolgen in einem zusammenhängenden Block mit Speicherabteilen gefunden, beginnend mit dem ersten Abteil des Speicherblocks 16. Der Schreibzeiger wird auf das erste freie Abteil nach den abgespeicherten Datenfolgen gestellt.
- Der Speicher unterstützt einen Löschbefehl, der benutzt wird, alle Löschbits in den Abteilen zu setzen, die beim Vergleichsprozeß ignoriert und später unter Verwendung des nachstehend beschriebenen Speicherbereinigungsbefehls gelöscht werden. Der Löschbefehl bewirkt, daß alle Löschbits gesetzt werden zwischen einem gesetzten Token und dem Beginn der Datenfolge, in der es gesetzt ist, d. h. zwischen einem gesetzten Token und dem ersten dahinterliegenden (&sub0;. Um sicher zu sein, daß die gesamte Datenfolge zum Löschen markiert ist, muß das Übereinstimmungs-Token am Ende der zu löschenden Datenfolge gesetzt sein.
- Um eine gegebene Datenfolge zu löschen, durchsucht man zunächst den Speicher unter Verwendung des Befehls EXM auf alle Folgen, die mit dieser Folge übereinstimmen. Das läßt die betreffende Sequenz mit einem gesetzten Token direkt hinter dem Abteil, das das Zeichen )&sub0; enthält, das das Ende der Folge markiert. Dann kann der Löschbefehl gegeben werden, was bewirkt, daß die gewünschte Folge alle Abteile, in der sie abgespeichert ist, zum Löschen markiert. Diese Abteile werden in der nachfolgenden Operationen ignoriert. Um diesen Platz zum Speichern zusätzlicher Datenfolgen freizumachen, muß der nachstehend beschriebene Speicherbereinigungsbefehl benutzt werden.
- Der Speicherbereinigungsbefehl kopiert den Inhalt des Speicherblocks 16 auf sich selbst, so daß freier Platz in der Form gelöschter Datenfolgen zu einem Ort hinter den abgespeicherten Datenfolgen bewegt wird, wo er zum Speichern neuer Datenfolgen bereit ist. Bevor der Speicherbereinigungsbefehl ausgeführt werden kann, müssen die Lese- und Schreibzeiger mit Hilfe der geeigneten Initialisierungsbefehle wieder oben an die Speicheranordnung gelegt werden. Der Speicherbereinigungsbefehl bewirkt, daß der Speicher zwischen Lesen des vom Lesezeiger bezeichneten Abteils und Wiedereinschreiben in das von Schreibzeiger markierte Abteil hin- und herpendelt, bis der Lesezeiger das Ende des Speichers erreicht und der Prozeß zum Ende kommt. Zwar wird der Lesespeicher am Ende jedes Lese-Schreib-Zyklus vorgeschoben, jedoch wird der Schreibzeiger nur dann vorgeschoben, wenn das rückgeschriebene Symbol noch das Löschbit gesetzt hat. Das bewirkt, daß die in gelöschten Abteilen gespeicherten Daten durch Daten aus nichtgelöschten Abteilen ersetzt werden.
- Diese 13 Befehle, zusammen mit dem Zeichen *, liefern ein Mittel zum Durchsuchen sowohl im Regel-Modus als auch im Schlüsselelemente-Modus. Eine Regel-bezogene Suche mit dem Befehl NEM wird wie folgt durchgeführt. Zunächst wird der Speicher mit CLM rückgestellt. Dann wird die Abfragefolge, die die abzurufenden Datenfolgen spezifiziert, unter Verwendung des Befehls NEM mit jedem Symbol, eins nach dem anderen, an den Speicher geschickt. Nach Senden des letzten Symbols werden die Token durch den Befehl TBK wieder auf den Anfang der Datenfolgen gestellt, die mit den Abfragefolgen übereinstimmen. Zum Auslesen der angewählten Datenfolgen wird der Zeiger mit Hilfe von RRD zunächst an den Kopf des Speichers gestellt. Der Zeiger wird dann mit RFD auf die erste ausgewählte Datenfolge (d.i. die erste Datenfolge mit einem gesetzten Token) vorgeschoben. Dann wird mit RDS jedes Symbol dieser Datenfolge gelesen, ein Symbol nach dem anderen, bis ein )&sub0; gelesen wird, das das Ende der Datenfolge anzeigt. Hierauf wird der Zeiger mit Hilfe von RFD auf die nächste zu lesende Datenfolge bewegt, und der Prozeß wiederholt sich, bis der Lesezeiger das Ende des Speicherblocks 16 erreicht hat, wie durch ein Signal auf dem Bus 11 angezeigt wird.
- Schlüsselelementsuchen beginnen ebenfalls mit Rückstellen des Speichers mit CLM und die Ergebnisse werden auf die gleiche Weise ausgelesen wie bei Regel-bezogenen Suchen. In den folgenden Beispielen werden CLM und die Ausleseprozeduren ausgelassen.
- Beispiel 1 - finde alle Datenfolgen enthaltend x und y in dieser Reihenfolge.
- EXM x
- NEM *
- EXM y
- Beispiel 2 - finde alle Datenfolgen mit x und y in beliebiger Reihenfolge.
- EXM x
- TBK
- NEM *
- EXM y
- Die Befehlsfolge TBK gefolgt von NEM * setzt alle Token in einer Datenfolge mit mindestens einem gesetzten Token. Somit wird jede Datenfolge mit "x" re-initialisiert für die Suche nach "y".
- Hier muß darauf hingewiesen werden, daß in vielen Suchläufen keine Datenfolge vorhanden ist, die der Abfragefolge entspricht. Das wird oft deutlich, nachdem die ersten paar Symbole gesucht wurden, nach dem Suchen der ersten wenigen Symbole bleiben keine Token gesetzt. Um Suchzeit einzusparen wird durch das Gerät ein Signal auf den Bus 11 ausgegeben, das anzeigt, daß kein Token gesetzt bleibt. Das ermöglicht es dem externen Datenverarbeitungssystem, den Rest der Suche abzubrechen und so Verarbeitungszeit zu sparen.
- Die bevorzugte Ausführungsform wendet zum Abspeichern der Datenfolgen einen Speicherblock an, der sowohl gelesen als auch beschrieben werden kann. Dem Fachmann ist klar, daß auch ein System mit einem Festwertspeicher gebaut werden könnte. Hier würden die Kennungs- und Datengruppen aus Festwertspeicher-Vorrichtungen gebaut werden, während die fünf jedem Abteil zugeordneten Einbit-Speicherzellen aus Lese/Schreibspeicher-Elementen aufgebaut wären. Ein solches System wäre brauchbar für Anwendungen, die sich auf eine feste Datenbank stützen.
Claims (13)
1. Ein Speichersystem (10) zum Abspeichern und Abrufen von
Symboldatenfolgen als Antwort auf eine Abfragefolge aus einem
oder mehreren Symbolen, wobei dieses Speichersystem umfaßt
Mittel (40) zum Empfangen eines Abfragesymbols, die mit
diesem Speichersystem gekoppelt sind, Speichermittel (16)
enthaftend eine Vielzahl aneinanderliegender Speicherabteile
(18) zum Abspeichern einer oder mehrerer Symboldatenfolgen,
wobei jeweils eines dieser Symbole in jeweils einem dieser
Abteile (18) abgespeichert wird, und Vergleichsmittel (14)
zum Vergleichen der in diesen einzelnen Abteilen
abgespeicherten Symboldatenfolgen mit diesem(n)
Abfragesymbol(en), gekennzeichnet durch Anzeigemittel (22), die
jeweils mit den einzelnen Abteilen (18) in Wirkverbindung
stehen, zur Anzeige eines Zustands für jedes dieser Abteile
(18), wobei diese Anzeigemittel (22) zwei Zustände aufweisen,
und zwar einen aktiven und einen inaktiven Zustand; Mittel,
die auf ein erstes Signal ansprechen, das mit diesem
Speichermittel (16) gekoppelt ist, um die Ersteinstellung des
angezeigten Zustands dieser jeweiligen Anzeigemittel (22) in
den aktiven Zustand durchzuführen; wobei diese
Vergleichsmittel (14) ferner aufweisen: Mittel zum Ändern des Zustands
der Anzeigemittel (22) in den inaktiven Zustand, nachdem der
Vergleich gemacht wurde, und Mittel zum Setzen des Zustands
der Anzeigemittel (22), die in Wirkverbindung mit dem jeweils
nächsten Abteil stehen, in den aktiven Zustand, wenn das
Datenfolgesymbol mit dem Fragesymbol übereinstimmt, wobei
dieses Speichermittel ferner auf ein zweites Signal
ansprechende Mittel (32) umfaßt, die mit dem Speichersystem
gekoppelt sind, um die einzelnen abgespeicherten
Symboldatenfolgen abzurufen, in denen das im letzten Vergleich in
dieser Datenfolge benutzte Symbol in einem Abteil (18)
abgespeichert
ist, dessen entsprechendes Anzeigemittel (22) am
Ende des letzten Vergleichs im aktiven Zustand ist.
2. Ein Speichersystem gemäß Anspruch 1, enthaltend Mittel
(34) zum Bewirken einer Signaldatenfolge, die mit dem
Speichersystem gekoppelt sind, um in diesem Speichermittel
(16) abgespeichert zu werden.
3. Ein Speichersystem gemäß Anspruch 1 oder Anspruch 2, in
dem dieses Anzeigemittel (22) eine Ein-Bit-Speicherzelle (22)
enthält, wobei jeweils eine solche gesonderte Speicherzelle
mit den einzelnen Abteilen (18) in Wirkverbindung steht.
4. Ein Speichersystem gemäß einem beliebigen der
vorstehenden Ansprüche, in dem dieses Speichermittel (16) eine
Vielzahl aneinanderliegender Segmente (80) aus
Speicherabteilen (18) enthält, wobei jedes Segment (80) eines oder
mehrere aneinanderliegende Speicherabteile (18) aufweist, und
in dem das Vergleichsmittel (14) eine Vielzahl von
Vergleichsschaltungen (82) beinhaltet, wobei jeweils eine solche
Vergleichsschaltung (82) mit den einzelnen Segmenten (80) in
Wirkverbindung steht, und in dem jede dieser
Vergleichsschaltungen (82) Mittel zum Vergleichen des Fragesymbols mit
dem jeweiligen in einem Abteil (18) abgespeicherten
Datenfolgesymbol enthält, das im entsprechenden Segment der
Vergleichsschaltung (82) enthalten ist, und dessen Anzeigemittel
(22) im aktiven Zustand ist.
5. Ein Speichersystem gemäß einem beliebigen der
vorstehenden Ansprüche, in dem die Datenfolgesymbole drei
Symboltypen aufweisen, nämlich Konstante, Variable und
Begrenzer, in dem das Fragesymbol einen dieser drei
Symboltypen enthält, und in dem das Einstellmittel bewirkt, daß der
Zustand des Anzeigemittels (22) in Wirkverbindung mit dem
nächsten auf den aktiven Zustand einzustellenden Abteil
steht, wenn eines dieser Fragesymbole oder dieser
Datenfolgesymbole, die von dem Vergleichsmittel (14) verglichen werden,
eine Variable und das andere entweder eine Variable oder eine
Konstante ist.
6. Ein Speichersystem gemäß Anspruch 5, in dem die
Begrenzer in entsprechenden Paaren auftreten, wobei ein
Öffnungsbegrenzer den Anfang einer Symbolfolge bzw. einer in
eine Symbol folge eingebetteten Symbol-Unterfolge definiert,
und der zugehörige Abschlußbegrenzer das Ende der Symbol folge
bzw. der Symbol-Unterfolge definiert, das Vergleichsmittel
(14) ferner Mittel zur Identifizierung des zu einem
bestimmten Öffnungsbegrenzer gehörigen Abschlußbegrenzers in einer
Symbolfolge enthält, und in dem das Vergleichsmittel (14) den
Zustand des in den inaktiven Zustand zu setzenden, in
Wirkverbindung mit dem Abteil (18), das diesen Öffnungsbegrenzer
enthält, stehenden Anzeigemittels (22) einstellt, und den
?Zustand des in den aktiven Zustand zu setzenden, in
Wirkverbindung mit dem Abteil (18), das dem den entsprechenden
Abschlußbegrenzer enthaltenden Abteil (18) folgt, stehenden
Anzeigemittels (22) einstellt, wenn das Vergleichsmittel (14)
ein Datenfolgesymbol, das ein Öffnungsbegrenzer ist, mit
einem variablen Fragesymbol vergleicht.
7. Ein Speichersystem gemäß Anspruch 6, umfassend
Haltemittel (20) in Wirkverbindung mit jedem dieser Datenabteile
(18), wobei jedes Haltemittel (20) einen "Bereit"-Zustand und
einen "Nicht-Bereit"-Zustand aufweist, wobei der "Nicht-
Bereit"-Zustand anzeigt, daß das mit dem im Abteil (18)
abgespeicherten Datenfolgesymbol zu vergleichende Fragesymbol
noch nicht an das Speichersystem auf dem Ankoppelmittel
angekoppelt ist, während der "Bereit"-Zustand anzeigt, daß das
in diesem Abteil (18) abgespeicherte Symbol mit dem nächsten
Fragesymbol verglichen werden kann, sofern das mit diesem
Abteil (18) in Wirkverbindung stehende Anzeigemittel (22)
ebenfalls im aktiven Zustand ist, und in dem das
Vergleichsmittel (14) Mittel zum Setzen des Zustands jedes dieser
Haltemittel (20) in einen "Nicht-Bereit"-Zustand enthält,
wenn das Haltemittel (20) in Wirkverbindung mit einem im
aktiven Zustand befindlichen Abteil (18) steht, das ein
variables Datenfolgesymbol enthält und durch das
Vergleichsmittel (14) mit einem Öffnungsbegrenzersymbol verglichen
wird, wenn das Mittel zum Verändern des Zustands dieses
Anzeigemittels (22) daran gehindert wird, nach Durchführung
des Vergleichs das Anzeigemittel (22) in einen inaktiven
Zustand zu versetzen, wenn dieses Vergleichsmittel (14) ein
Abteil (18) im aktiven Zustand vergleicht, das auch im
"Nicht-Bereit"-Zustand ist, wobei dieses Vergleichsmittel
(14) Mittel zum Setzen des Zustands jedes dieser Haltemittel
(20) in einen "Bereit"-Zustand beinhaltet, wenn das
Vergleichsmittel (14) das dem Öffnungsbegrenzer-Fragesymbol, das
die Änderung des Zustands dieses Haltemittels (20) in den
"Nicht-Bereit-Zustand bewirkt hat, zugehörigen
Abschlußbegrenzer-Fragesymbol erfaßt, und wobei das Vergleichsmittel
(14) als Antwort darauf bewirkt, daß das Anzeigemittel (22),
das mit dem Abteil (18) in Wirkverbindung steht, in den
inaktiven Zustand versetzt wird, und daß das Anzeigemittel
(22), das mit dem Abteil (18) das diesem Abteil (18) folgt,
in Wirkverbindung steht, in den aktiven Zustand versetzt
wird.
8. Ein Speichersystem gemäß Anspruch 6 oder Anspruch 7, in
dem das Datenfolgesymbol und das Fragesymbol ferner ein
Gumpf-Symbol enthalten, und in dem das Vergleichsmittel (14)
Mittel zum Feststellen eines an das Speichersystem
angekoppelten Gumpf-Fragesymbols auf diesem Koppelsystem enthält,
sowie zum Bewirken, daß alle mit den Abteilen (18) in
Wirkverbindung stehenden Anzeigemittel (22) zwischen dem einen,
das das mit dem Gumpf-Fragesymbol verglichene
Datenfolgesymbol enthält, und dem einen nach demjenigen, das den das
Ende der Datenfolge, in der das Datenfolgesymbol enthalten
war, kennzeichnenden Abschlußbegrenzer enthält, in den
aktiven Zustand gesetzt werden.
9. Speichersystem gemäß Anspruch 8, in dem das
Vergleichsmittel (14) Mittel zum Erfassen eines Gumpf-Datenfolgesymbols
enthält, und in dem dieses Vergleichsmittel (14) Mittel
enthält, um das Anzeigemittel (22) des Abteils nach
demjenigen,
das das Gumpf-Datenfolgesymbol enthält, in den
aktiven Zustand zu setzen, sowie Mittel enthält, um das
Mittel zum Verändern des Zustands dieses Anzeigemittels (22)
in den inaktiven Zustand daran zu hindern, den Zustand des
Anzeigemittels (22), das mit dem das Gumpf-Symbol
enthaltenden Abteil in Wirkverbindung steht, in einen inaktiven
Zustand zu setzten.
10. Speichersystem gemäß Anspruch 7 oder 8 oder 9 in
Abhängigkeit von Anspruch 7, in dem jedes dieser Abteile (18)
eine Vielzahl von Ein-Bit-Speicherzellen (17) enthält, wobei
dieses Abteil in eine Identifizierungsgruppe (24) und eine
Datengruppe (26) unterteilt ist, wobei diese
Identifizierungsgruppe mindestens zwei Speicherzellen (17) zur
Spezifizierung des in diesem Abteil (18) gespeicherten Symbols
aufweist, und diese Datengruppe den Rest der Speicherzellen
(17) in diesem Abteil (18) enthält, und in dem dieses Mittel
zur Identifizierung des einem gegebenen Öffnungsbegrenzer
zugehörigen Abschlußbegrenzers jeweils eine Kennung enthält,
die in der Datengruppe der einzelnen einen Begrenzer
enthaltenden Abteile abgespeichert ist, wobei diese Kennung für
jedes entsprechende Begrenzerpaar jeweils die gleiche ist und
diese Kennung in der Datengruppe eines Begrenzers, der in der
Symbolfolge bzw. -unterfolge enthalten ist, die durch dieses
entsprechende Begrenzerpaar markiert ist, kein zweites Mal
auftritt.
11. Speichersystem gemäß einem beliebigen der Ansprüche 6
bis 10, in dem das Anzeigemittel (22) eine Vielzahl von Ein-
Bit-Speicherzellen (22) aufweist, wobei jeweils eine dieser
Speicherzellen in Wirkverbindung mit jeweils einem Abteil
(18) steht, und in dem das Setzen des Zustands einer oder
mehrerer dieser Speicherzellen beinhaltet: ein Eingangsmittel
zum Setzen des Zustands jeder dieser Speicherzellen als
Reaktion auf ein Signal an einer Eingangsklemme (156), die
mit jeder der Speicherzellen in Wirkverbindung steht; ein
Ausgangsmittel zum Ausgeben des Zustands jeder dieser
Speicherzellen über eine Ausgangsklemme (158), die mit jeder
dieser Speicherzellen (22) in Wirkverbindung steht; einen
Sprungpfad (144) mit einer Vielzahl diskreter Schaltelemente,
wobei jeweils eines dieser Schaltelemente in Wirkverbindung
an der Speicherzelle (22) anliegend ist; Mittel (150), die
selektiv bewirken, daß dieser Sprungpfad an einem Punkt, der
in Wirkverbindung an diese einzelnen Speicherzellen anliegt,
nicht-leitend ist; Mittel (152) zum Anschließen der
Eingangsklemme (156) jeder dieser Speicherzellen an diesem Sprungpfad
(144) an einem Punkt auf entweder der einen oder der anderen
Seite des in Wirkverbindung anliegenden Schaltelements, das
der jeweiligen Speicherzelle zugeordnet ist; und Mittel (154)
zum Anschließen der Ausgangsklemme (158) jeder dieser
Speicherzellen (22) an dem Sprungpfad an einem Punkt entweder
auf der einen oder auf der anderen Seite des in
Wirkverbindung anliegenden Schaltelements, das der jeweiligen
Speicherzelle (22) zugeordnet ist.
12. Speichersystem gemäß einem beliebigen der vorstehenden
Ansprüche, in dem das Speichermittel (211) in eine Vielzahl
von Datenseiten (212) unterteilt ist, jede
Speicher-Datenseite (212) aus aneinanderliegenden Segmenten von N dieser
Speicherabteile (18) besteht, wobei die ersten N
Speicherabteile (18) dieses Speichermittels auf der ersten Datenseite
sind, die zweiten N Speicherabteile (18) dieses
Speichermittels auf der zweiten Datenseite sind usw., wobei eine
Datenfolge in einem aneinanderliegenden Speicherzellenblock
(213) in diesem Speichermittel (211) sind, ungeachtet der
Unterteilung in Speicher-Datenseiten (212), und wobei das
Vergleichsmittel (14) Mittel (216) zum Bezeichnen einer
Speicher-Datenseite (212) enthält; mit jeder
Speicher-Datenseite (212) Aktivierungsmittel gekoppelt sind, um einen von
zwei Zuständen für die Speicher-Datenseite (212) zu
kennzeichnen, an die es gekoppelt ist, wobei diese Zustände einen
ersten Zustand, der diese Speicher-Datenseite (212)
aktiviert, so daß sie von diesem Speicher-Datenseiten
Bestimmungsmittel (216) angesprochen wird, und einen zweiten
Zustand, der verhindert, daß diese Speicher-Datenseite (212)
von diesem Datenseiten-Bestimmungsmittel (216) angesprochen
wird; N Vergleicherschaltkreise (214) in Wirkverbindung mit
diesem Speichermittel (211) und miteinander stehen, wobei der
I-te dieser Vergleicherkreise Vergleiche zwischen einem
Abfragefolgesymbol, das an dieses Speichersystem gekoppelt ist,
und einem Datenfolgesymbol, das in dem I-ten Abteil auf der
vom Seitenbestimmungsmittel (216) angesprochenen Seite
abgespeichert ist; Mittel, die bewirken, daß diese
Aktivierungsmittel diesen ersten Zustand für alle Seiten
einrichten, die wenigstens ein Speicherabteil mit einem
Anzeigemittel (22) im aktiven Zustand aufweisen, und die bewirken,
daß diese Aktivierungsmittel diesen zweiten Zustand für alle
anderen Seiten (212) einrichten; Mittel, die bewirken, daß
die Mittel (216) zum Einrichten der Speicherseiten die erste
Seite mit einem Aktivierungsmittel zum Aktivieren dieser
ersten Seite einrichten; Mittel, die bewirken, daß diese
Akt?vierungsmittel, die mit jeder Speicherseite gekoppelt
sind, diesen ersten Zustand einstellen, wenn ein variables
Abfragefolgesymbol an dieses Speichermittel (211) angekoppelt
wird, auch wenn keine Speicherabteile (18) auf einer
gegebenen Seite ein Anzeigemittel (22) im aktivierten Zustand
haben; Mittel, die bewirken, daß diese Aktivierungsmittel
diesen ersten Zustand für die Speicherseite (212)
vorschreiben, die auf die Speicherseite (212) folgt, die gerade
von diesen Speicherseiten-ansprechenden Mitteln (216)
angesprochen wird, wenn das Datenfolgesymbol, das im ersten
Speicherabteil (18) auf der derzeit angesprochenen
Speicherseite abgespeichert ist, mit dem Abfragefolgesymbol, das an
das Speichersystem angekoppelt ist, übereinstimmt; und
Mittel, die bewirken, daß diese Mittel (216) zum Ansprechen
der Speicher-Datenseite die jeweils nächste Speicherseite
(212) ansprechen, die ein Aktivierungsmittel aufweist, das
diesen ersten Zustand einstellt, bis alle Speicherseiten
(212), die ein Aktivierungsmittel im ersten Zustand
aufweisen, so angesprochen worden sind.
13. Speichersystem gemäß einem beliebigen der obigen
Ansprüche, in der Form eines einzelnen, integrierten
Schaltkreis-Chips.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/765,370 US4747072A (en) | 1985-08-13 | 1985-08-13 | Pattern addressable memory |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3688738D1 DE3688738D1 (de) | 1993-08-26 |
DE3688738T2 true DE3688738T2 (de) | 1993-11-11 |
Family
ID=25073394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE86905116T Expired - Fee Related DE3688738T2 (de) | 1985-08-13 | 1986-08-12 | Musteradressierbarer speicher. |
Country Status (7)
Country | Link |
---|---|
US (1) | US4747072A (de) |
EP (1) | EP0232386B1 (de) |
JP (1) | JP2511434B2 (de) |
AT (1) | ATE91816T1 (de) |
CA (1) | CA1263762A (de) |
DE (1) | DE3688738T2 (de) |
WO (1) | WO1987001219A1 (de) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5051947A (en) * | 1985-12-10 | 1991-09-24 | Trw Inc. | High-speed single-pass textual search processor for locating exact and inexact matches of a search pattern in a textual stream |
US4841473A (en) * | 1986-12-19 | 1989-06-20 | Robert S. Salzman | Computer architecture providing programmable degrees of an almost condition |
US5161230A (en) * | 1987-06-05 | 1992-11-03 | Trw Inc. | Multifield identification circuit and related method of operation |
US4989180A (en) * | 1989-03-10 | 1991-01-29 | Board Of Regents, The University Of Texas System | Dynamic memory with logic-in-refresh |
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 |
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 |
US5161225A (en) * | 1989-10-23 | 1992-11-03 | International Business Machines Corporation | Persistent stream for processing time consuming and reusable queries in an object oriented database management system |
JPH0833862B2 (ja) * | 1989-10-23 | 1996-03-29 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | オブジエクト指向コンピユータ・システム |
US5161223A (en) * | 1989-10-23 | 1992-11-03 | International Business Machines Corporation | Resumeable batch query for processing time consuming queries in an object oriented database management system |
US5483480A (en) * | 1993-07-22 | 1996-01-09 | Kawasaki Steel Corporation | Method of using associative memories and an associative memory |
US5499360A (en) * | 1994-02-28 | 1996-03-12 | Panasonic Technolgies, Inc. | Method for proximity searching with range testing and range adjustment |
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 |
DE10106340A1 (de) * | 2001-02-09 | 2002-08-29 | Europ Lab Molekularbiolog | Schaltung zur Verarbeitung von Daten |
US6766317B2 (en) | 2001-07-18 | 2004-07-20 | Alliance Semiconductor | Range check cell and a method for the use thereof |
US7392229B2 (en) * | 2005-02-12 | 2008-06-24 | Curtis L. Harris | General purpose set theoretic processor |
US8065249B1 (en) | 2006-10-13 | 2011-11-22 | Harris Curtis L | GPSTP with enhanced aggregation functionality |
US7774286B1 (en) | 2006-10-24 | 2010-08-10 | Harris Curtis L | GPSTP with multiple thread functionality |
US8667230B1 (en) | 2010-10-19 | 2014-03-04 | Curtis L. Harris | Recognition and recall memory |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3167740A (en) * | 1961-04-12 | 1965-01-26 | Ibm | Data comparison system utilizing a universal character |
US3245052A (en) * | 1962-05-17 | 1966-04-05 | Rca Corp | Content addressed memory |
US3646523A (en) * | 1969-09-24 | 1972-02-29 | Ibm | Computer |
JPS4953346A (de) * | 1972-09-25 | 1974-05-23 | ||
US3906455A (en) * | 1974-03-15 | 1975-09-16 | Boeing Computer Services Inc | Associative memory device |
US4450520A (en) * | 1981-03-11 | 1984-05-22 | University Of Illinois Foundation | Method and system for matching encoded characters |
US4499553A (en) * | 1981-09-30 | 1985-02-12 | Dickinson Robert V | Locating digital coded words which are both acceptable misspellings and acceptable inflections of digital coded query words |
US4451901A (en) * | 1982-01-21 | 1984-05-29 | General Electric Company | High speed search system |
US4550436A (en) | 1983-07-26 | 1985-10-29 | At&T Bell Laboratories | Parallel text matching methods and apparatus |
-
1985
- 1985-08-13 US US06/765,370 patent/US4747072A/en not_active Expired - Lifetime
-
1986
- 1986-08-12 EP EP86905116A patent/EP0232386B1/de not_active Expired - Lifetime
- 1986-08-12 CA CA000515788A patent/CA1263762A/en not_active Expired
- 1986-08-12 WO PCT/US1986/001663 patent/WO1987001219A1/en active IP Right Grant
- 1986-08-12 AT AT86905116T patent/ATE91816T1/de not_active IP Right Cessation
- 1986-08-12 JP JP61504442A patent/JP2511434B2/ja not_active Expired - Lifetime
- 1986-08-12 DE DE86905116T patent/DE3688738T2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO1987001219A1 (en) | 1987-02-26 |
US4747072A (en) | 1988-05-24 |
EP0232386A4 (de) | 1989-06-21 |
JPS63500479A (ja) | 1988-02-18 |
CA1263762A (en) | 1989-12-05 |
ATE91816T1 (de) | 1993-08-15 |
DE3688738D1 (de) | 1993-08-26 |
EP0232386A1 (de) | 1987-08-19 |
JP2511434B2 (ja) | 1996-06-26 |
EP0232386B1 (de) | 1993-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3650156T2 (de) | Auf regeln basiertes datenwiederauffindverfahren und anordnung. | |
DE3688738T2 (de) | Musteradressierbarer speicher. | |
DE3650360T2 (de) | Schneller Suchprozessor. | |
DE2554442C2 (de) | Vorrichtung zum Vergleich logischer Größen mit einer Gruppe logischer Bezugsgrößen | |
DE3854481T2 (de) | Datenverarbeitungsverfahren in einem dezentralisierten Verarbeitungssystem. | |
DE3750492T2 (de) | Datenbanksystem für Parallelprozessor. | |
DE69032712T2 (de) | Hierarchischer vorsuch-typ dokument suchverfahren, vorrichtung dazu, sowie eine magnetische plattenanordnung für diese vorrichtung | |
DE68928213T2 (de) | Inhaltadressierte Speicherzellenanordnung | |
DE2415900C3 (de) | Rechenautomat mit mehreren mit je einem Vorratsspeicher versehenen Rechenanlagen | |
DE68907518T2 (de) | Inhaltsadressierte Speicheranordnung. | |
DE1499182C3 (de) | Datenspeichersystem | |
DE3750277T2 (de) | Verfahren und Vorrichtung zur Rückgewinnung von Symbolketten aus Daten. | |
DE69027932T2 (de) | Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen | |
DE2755897A1 (de) | Ein/ausgabe-system | |
DE68928187T2 (de) | Inhaltadressierte Speicherzellenanordnung | |
DE68929080T2 (de) | Anordnung zum Speichern von Informationen für einen Datenanbieterprozessor | |
DE3781794T2 (de) | Vorrichtung und verfahren zum versehen eines cachespeichers mit einer schreiboperation mit zwei systemtaktzyklen. | |
DE3327379A1 (de) | Einrichtung und verfahren zum umordnen von datensaetzen | |
DE3441640A1 (de) | Streifenfeldspeichercontroller | |
DE2221442A1 (de) | Assoziativspeicher | |
DE69131954T2 (de) | Zeichenfolgensuchgerät und -system | |
DE3518818A1 (de) | Datenverarbeitungsvorrichtung und verfahren und vorrichtung zur umsetzung von datenelementen | |
DE3688737T2 (de) | Kontextadressierbarer umlaufspeicher. | |
DE1499713A1 (de) | Verfahren und Schaltungsanordnung zum Packen von Informationen in einem zyklisch umlaufenden Speicher mit wahlfreiem Zugriff zu den auf den Spuren befindlichen Speicherzellen | |
DE2613800C2 (de) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |