-
Gebiet der
Erfindung
-
Diese
Erfindung betrifft im Allgemeinen globale assoziative Speichersysteme
und im Speziellen eine Hardwareimplementierung eines Tupelraums.
-
Hintergrund
der Erfindung
-
Tupelräume bieten
eine einzigartige Form der Flexibilität beim gemeinsamen Benutzen
von Information, sowie der Koordination von Anwendungen. Wie unten
detaillierter beschrieben wird, sind Tupel eine Sammlung von Schlüsselwert-Paaren,
die in einem Tupelraum gespeichert sind, der auf der Basis des Zusammenpassens
von Anti-Tupeln mit Tupeln abgefragt werden kann. Das originale
Linda Model von David Gelernter (N. Carriero und D. Gelernter, „Linda
in context", Communications
of the ACM, 32(4):444-458, April 1989) fand weit verbreitete Verwendung
bei gemeinschaftlichen Systemen. Tupelräume wurden jedoch typischer Weise
in Software implementiert, was für
die Skalierbarkeit und die Ansprechempfindlichkeit von feinkörnigen und
großräumigen Systemen
ungeeignet ist.
-
Die
Verwendung von nach Maß angefertigter
Hardware, um Modelle feinkörniger
und großräumiger Systeme
auszuführen,
leidet auch unter einer Menge von Nachteilen. Erstens treten Speicherhandhabungs-Probleme
auf, da Tupel jede beliebige Länge
haben können,
und frei in den Tupelraum eingefügt
und daraus gelöscht
werden können,
mit dem Ergebnis, dass eine fragmentierte Speicherstruktur erzeugt
wird, die Lücken
unterschiedlicher Länge
hinterlässt,
wo Tupel entfernt wurden. Dies wiederum führt zu Problemen beim Bestimmen,
wo neue Tupel oder Anti-Tupel in den Speicher gestellt werden sollen.
-
Zweitens
ist es schwierig, eine parallele Suche in Einklang zu bringen, während eine
angemessene Hardwarekomplexität
aufrechterhalten wird. Auch ist es schwierig, spezielle Hardware
für den
Hardware-Tupelraum zu entwerfen, so dass diese auf sehr große Speichergrößen skaliert
werden kann, ohne dass dies erhebliche Steigerungen der Komplexität und der
Kosten nach sich zieht.
-
Der
Bedarf für
eine Hardwareunterstützung,
um eine verbesserte Skalierbarkeit und Ansprechempfindlichkeit für einen
Tupelraum zu ermöglichen,
wurde im World-Wide-Web- Konsortium
erkannt, und ist in dem Dokument „Tuplets: Words for a Tuple
Space Machine" von
Duncan Campbell berichtet worden. Dies ist ein technischer Bericht
für das
Computerwissenschaftliche Institut in York und er wurde als YCS-97
bezeichnet.
-
Campbell
beschreibt die Verwendung eines inhaltsadressierbaren Speichers
(CAM) für
die Implementierung eines Tupelraums. Auf CAMs wird über den
Inhalt ihres Speichers zugegriffen, anstatt durch direktes Adressieren,
was im Fall einer Tupelsuche vorteilhaft ist, da der Speicher den
Eintrag zurückgeben
wird, der mit dem Inhalt verknüpft
ist, der ihm präsentiert
wird, was eine natürliche
Lösung
für das
Zuordnen ist. Jedoch identifiziert Campbell, wie oben erörtert wird,
ein Hauptproblem, das bei der Speicherhandhabung in dem Fall von
Feldern mit variabler Länge
bei Tupelräumen
auftritt.
-
Wie
Campbell richtig aufzeigt, kann die Anzahl der Schlüssel, da
Tupel Ansammlungen von Schlüsselwertpaaren
sind, beschränkt
werden, so dass ein Hash-Codieren angewendet werden kann, um Darstellungen
konstanter Länge
der Schlüssel
für den
Speicher zu erzeugen. In praktischen Anwendungen können die Werte
jedoch nicht so beschränkt
werden. Campbell entwickelt ein Schema, das er als Tuplets bezeichnet,
wobei Felder (welche sowohl Schlüssel
als auch Werte enthalten) für
eine Speicherung in dem Speicher in Gruppierungen fixer Länge aufgebrochen
werden können.
Dies ist analog zu dem ATM-Verfahren,
Pakete längerer Längen für das Schalten
in Zellen fixer Länge
zu segmentieren, basierend auf der Voraussetzung, dass solch eine
Segmentierung gleichmäßigere und
realisierbare Hardwarelösungen
erzeugt. Tuplets (so wie ATM-Zellen) können bei Bedarf wieder in Tupel
(Pakete) zusammengesetzt werden.
-
Eine
Schwierigkeit mit der von Campbell vorgeschlagenen Tuplet/Cam Lösung ist,
dass die Inhaltssuche komplex ist, und eine sehr große Menge
an Silikon-Hardware und Platzangebot benötigt, um sie umzusetzen. Dieses
Problem ist besonders wichtig in Systemen, die für eine feinkörnige Steuerung
eines Systembetriebes verwendet werden. Herkömmliche Tupelräume sind
als Software umgesetzt und werden für eine grobkörnige Koordinierung
von Anwendungen verwendet. In solchen Systemen werden verhältnismäßig wenige Tupel
verwendet, und die Koordinierung ist verhältnismäßig selten. Solche Systeme
werden verwendet, um zwischen Anwendungen zu kommunizieren (z.B.
starten einer Anwendung, wenn eine andere endet, etc.). Es bestehen
jedoch jetzt Möglichkeiten,
dass Tupelräume
ein feinkörniges
Verhalten von Systemen koordinieren, wobei Anwendungen ihre Handlungen
basierend auf momentanen Zusammenhängen von Benutzern und Netzwerk,
dem Betrieb anderer Anwendungen, etc. modifizieren. Solch eine feinkörnige Steuerung
des Verhaltens kann auf Systeme, wie etwa Telephonnetzwerke, Netzwerke
von PDAs, etc. angewendet werden. In solchen Systemen wird eine
verhältnismäßig viel
größere Anzahl
von Tupeln verwendet, und das mit verhältnismäßig viel größeren Raten. Hardwarelösungen sind
in solchen Anwendungen aufgrund ihrer Geschwindigkeit attraktiv.
Obwohl Campbells Tuplet-Lösung dem
Geschwindigkeitskriterium entspricht, leidet es unter größeren Unzulänglichkeiten
hinsichtlich der Kosten und der Skalierung auf verhältnismäßig größere Größen, die für feinkörnige Anwendungen
erforderlich sind. Lösungen
für diese
Probleme müssen
sich gut auf die Anzahl von Benutzern anpassen und wenig kosten.
-
Die
US-5615360 beschreibt auch ein Computersystem mit einem inhaltsadressierbaren
Speicher, der einen Tupelraum enthält, wobei eine Vielzahl von
Operatoren eingesetzt werden, um die Tupehaum-Operationen durchzuführen. Zu
solchen Operationen können
die Suche in einem Speicherbereich nach zusammenpassenden Tupeln,
das selektive Hinzufügen
von Tupeln zu einem Speicherbereich und das Entfernen von Tupeln
davon, und das Steuern eines Anwendungsprogramms in Abhängigkeit
von der Anwesenheit eines zusammenpassenden Tupels zählen. Dieses
System leidet auch unter dem Problem, dass es komplex und teuer in
der Umsetzung ist.
-
Zusammenfassung
der Erfindung
-
Gemäß der vorliegenden
Erfindung werden ein Hardware-unterstützter Tupelraum und ein Verfahren der
Handhabung eines in einem Speicher implementierten Tupelraums bereitgestellt,
wie dies in den Ansprüchen
1 und 7 festgelegt ist.
-
Die
Erfindung hat den Vorteil, dass herkömmlicher kostengünstiger
RAM verwendet werden kann, um einen Tupelraum zu implementieren
zusammen mit einem Verfahren zur Inhaltssuche, welches das im Stand der
Technik identifizierte Problem der variablen Längen stark vereinfacht und
löst. Das
Verfahren der vorliegenden Erfindung durchsucht in vorteilhafter
Weise den Speicher sequentiell, sodass, wenn es mit einem schnellen
RAM und FPGA- oder ASIC-Technologie, sowie mit geeigneten Datenstrukturen
und Suchalgorithmen implementiert ist, die sequentielle Suche sehr
schnell wird. Des Weiteren können
parallele Speicherbänke verwendet
werden, die nebeneinander sequentiell durchsucht werden können, um
die Geschwindigkeit zu verbessern. Zusätzlich kann das Verfahren den
Speicher in einer Weise, die für
die Einfüge-
und Suchprozesse unsichtbar ist, automatisch defragmentieren.
-
Kurze Beschreibung
der Zeichnungen
-
Eine
detaillierte Beschreibung der Erfindung ist hierin unten dargelegt,
mit Bezugnahme auf die einzige Zeichnung, welche ein Blockdiagramm
eines Hardware-unterstützten Tupel-Raums
gemäß der bevorzugten
Ausführungsform
ist.
-
Detaillierte
Beschreibung der bevorzugten Ausführungsform
-
Bevor
die Erfindung detailliert erörtert
wird, wird unten eine kurze Einführung
in die grundlegenden Strukturen und Operationen eines Tupel-Raumes
dargelegt.
-
Ein
Tupel-Raum ist ein Satz von nach Typ/Wert geordneten Paaren, welche
Ingles oder Felder genannt werden. Jedes Ingel besteht aus einem
Typ (z.B. Name) und einem Wert (z.B. John Doe). Somit könnte ein
Tupel, welches einen Angestellten einer Firma beschreibt, beispielsweise
wie folgt sein:
- {:Name John Doe :Alter 37 :Mitarbeiternummer
12345 :Start_Datum 810126 :Position T12}
-
Der
Tupel-Raum ermöglicht
eine Koordination, indem er Abfragen basierend auf dem Zusammenpassen
von Tupeln und Anti-Tupeln zulässt.
Ein Anti-Tupel ist ein Tupel, das als eine Abfrage in einem Tupel-Raum verwendet
werden kann. In der Form ist es identisch zu einem Tupel, außer das
der Wert von jedem oder allen Feldern durch ein „?" ersetzt werden kann, was eine „nicht
beachten"-Bedingung
anzeigt. Tupel-Räume
werden aufgebaut, um Tupeln Anti-Tupeln zuzuordnen, welche in allen
Feldern übereinstimmen,
außer
in dem, das von der ?-Abfrage angezeigt ist. Somit würde das
Anti-Tupel:
- {:Name ? :Alter 37 :Mitarbeiternummer ? :Start_Datum
? :Position T12}
die Tupel für alle Angestellten der Position
T12 zurückgeben,
die 37 Jahre alt sind.
-
Die
herkömmlichen
Operationen des Tupel-Raums bestehen aus:
Poke-Stelle ein Tupel
in den Tupel-Raum. Es kann eine Dauer festgelegt werden, für wie lang
dieses Tupel in den Raum verbleiben soll. Dies kann jede Zeitdauer
sein, bis zu unbegrenzt.
Peek-Frage den Tupel-Raum mit einem
Anti-Tupel ab. Diese Abfrage kann so bestimmt sein, dass sie für irgendeine
Zeitdauer bis hin zu unbegrenzt andauert. Kopien zusammenpassender
Tupel werden durch die Schnittstelle zurückgegeben und die Tupel verbleiben
in den Tupel-Raum.
Pick-Abfrage des Tupel-Raums mit einem Anti-Tupel.
Diese Abfrage kann so bestimmt sein, dass sie für jeden Zeitraum bis hin zu
unbegrenzt andauert. Kopien zusammenpassender Tupel werden durch
die Schnittstelle zurückgegeben,
und die Tupel werden von dem Tupel-Raum entfernt.
Cancel-Entferne,
mit dem bestimmten Anti-Tupel, alle zusammenpassenden Anti-Tupel von dem Tupel-Raum. Tupel
selbst können
direkt durch eine geeignete Pick-Anfrage entfernt werden.
-
Es
können
zusätzliche
Operationen bereitgestellt werden, wie etwa in der gemeinsam anhängigen UK-Patentanmeldung
Nr. 0200745.8, Mitel, mit dem Titel „Tuple Space Operations for
Fine Grained Control".
-
Nun
zugewandt auf das Blockdiagramm, ist ein Hardware-basierender Tupel-Raum
gemäß der vorliegenden
Erfindung gezeigt. Ein Eingabe/Ausgabe-Puffer- und Steuerungsblock 10 ist
vorgesehen, einschließlich
Eingabe-Ausgabe-Puffern, einer Suchlogik, und Speicherhandhabungskomponenten.
Die Eingabe-Ausgabe-Puffer verknüpfen
das Gerät
mit der äußeren Umwelt.
Die Suchlogik und die Speicherhandhabungs-Funktionen führen die
allgemeine Speichersteuerung für
das Gerät
durch, und führen
alle Suchen aus. Es ist ein Tupel-Speicher 12 vorgesehen,
um die Tupel zu speichern, und ein Anti-Tupel-Speicher 14 ist
vorgesehen um die Anti-Tupel zu speichern, welche beide unter Verwendung
herkömmlichen
RAMs aufgeführt sind.
Es kann ein paralleler RAM verwendet werden, um die Größe des Tupelraums
zu erweitern, und dieser kann parallel durchsucht werden, um seine
Suchgeschwindigkeit für
die Ansprechempfindlichkeit zu vergrößern.
-
Die
Verwendung von RAM verringert die Kosten und die Komplexität des Systems
mit Bezug auf die CAM-Lösung
von Campbell erheblich. Um die Geschwindigkeitsprobleme zu behandeln,
die mit der Verwendung herkömmlichen
RAMs für
eine sequenzielle Suche verbunden sind, werden Tupel-Attribute in
einem Feld gespeichert, und verwendet, um einen Mechanismus bereitzustellen,
wobei unmögliche
Tupel-Zuordnungen (unterschiedliche Anzahl von Schlüsselwertpaaren)
identifiziert werden können,
ohne dass man nach dem Tupel in dem Speicher suchen muss. Im Speziellen
wird ein Tupel-Attribut-Feldspeicher (TAM) bereitstellt, welcher
wichtige Attribute der gespeicherten Tupel und Anti-Tupel enthält. Es werden
zwei bestimmte TAMs bereitgestellt – der Tupel-TAM (TTAM 16)
für die
Tupel-Speicherung und der Anti-Tupel-TAM (ATAM 18) für die Speicherung
der Anti-Tupel.
-
Die
Struktur der Daten in jedem TAM ist wie folgt:
-
Die
TAM-Felder 16 und 18 können verwendet werden, um den
Zuordnungsprozess des Tupel-Raums zu beschleunigen. Insbesondere
enthält
jedes TAM-Feld zusätzlich
zu dem Startpunkt im Speicher zusätzliche Informationen über das
Tupel. Tupel/Anti-Tupel passen nur dann zusammen, wenn sie dieselbe
Anzahl von Schlüsselwert-Paaren
enthalten. Diese Information kann leicht von den ankommenden Tupeln/Anti-Tupeln
erhalten, und mit der Information in dem Feld verglichen werden.
Nur die Tupel, in denen die Anzahl der Schlüsselwert-Paare zusammenpassen,
werden für
ein weiteres Zuordnen, indem auf die Tupel selbst im Speicher zugegriffen
wird, berücksichtigt.
-
Indem
es Tupel gibt, welche sich in der Anzahl von Schlüsselwert-Feldern
unterscheiden, um bestimmte Klassen zu identifizieren, werden somit
nur diese Tupel mit derselben Anzahl dieser Felder verglichen. Indem
die Tupel absichtlich nach ihrer Größe geordnet werden, um sie
gemäß ihrer
Klasse zu unterscheiden, wird eine verbesserte Suchgeschwindigkeit
erzielt.
-
Zusätzlich,
wie dies in der UK-Patentanmeldung Nr. 0200745.8, Mitel, mit dem
Titel „Tuple
Space Operations for Fine Grained Control" offenbart ist, können Tupel und Anti-Tupel aktiviert oder
deaktiviert werden. Im Speziellen können Tupel und Anti-Tupel so
markiert werden, dass sie von dem Zuordnungsprozess ausgeschlossen
werden. Wenn das Aktivierungs-Flag gesetzt ist, wird das Tupel in
den Zuordnungsprozess aufgenommen. Wenn es nicht gesetzt ist, dann
wird es von dem Prozess ausgeschlossen. Wie dies in der oben erwähnten Patentanmeldung
angezeigt wird, kann dies die Systemgeschwindigkeit und die Ansprechempfindlichkeit
für Anwendungen,
in denen eine große
Anzahl von Tupeln oder Anti-Tupeln für die Zusammenarbeit in verschiedenen
Systemzuständen
verwendet werden, verbessern. Anstatt Zeit durch das Entfernen und
Eingeben von Tupeln und Anti-Tupeln bei jeder Zustandsänderung
zu verschwenden, können
sie, unter Verwendung der in der oben erwähnten Offenbarung beschriebenen
Techniken, in großen
Mengen aktiviert oder deaktiviert werden.
-
Tupel
und Anti-Tupel werden in ihren entsprechenden Speichern 12 und 14 in
zusammenhängenden Gruppierungen
gespeichert, die mit dem Anfang jedes Speichers beginnen. Alle niedrigeren
Tupel werden nach oben bewegt, um die Lücken in den Gruppierungen aufzufüllen, die
von gestrichenen Tupeln erzeugt werden. Neue Tupel werden dann am
Ende des Speichers eingefügt.
Wenn ein neues Tupel unbekannter Länge erhalten wird, ist, im
Gegensatz zu den oben erörterten
Hardware-basierenden Systemen des Standes der Technik, keine Handlung
erforderlich, um einen ausreichend bemessenen Freiraum im Speicher
zu finden, um es zu fassen. Stattdessen wird das Tupel an das untere
Ende des Speichers platziert. Dies bildet auch einen Gegensatz zu
Software-basierten Speicherhandhabungs-Techniken, in denen die Fragmentierung
ein wesentliches und häufiges
Problem ist, welches viel Echtzeitverarbeitung benötigt.
-
Indem
einen Zeitlimit-Wert für
jedes Tupel verfolgt wird, wird ein effizienter Zeitmessungs-basierter Speicherbereinigungs-Prozess
bereitgestellt, um das Problem verwaister Tupel zu handhaben, deren
Besitzerobjekte beendet wurden, oder diese irrtümlich vergessen haben. Diese
Tupel können
den Speicher füllen, was
zu Handhabungsproblemen führt,
die einen Software-Eingriff und periodische Wieder-Initiierung des
Freiraums erfordert. Gemäß der vorliegenden
Erfindung werden die Zeitlimit-Werte in der Hardware eingeführt. Abgelaufene
Tupel werden automatisch von dem Speicherhandhabungs-Prozess des
Blocks 10 einfach als gestrichen markiert und dann von
dem Speicher entfernt, wie detaillierter unten beschrieben ist.
-
Tupel
werden in dem Tupel-Speicher 12 so gespeichert, dass individuelle
Schlüssel
und Werte von der Suchlogik des Blocks 10 ermittelt werden
können.
Es gibt mehrere wohl bekannte Verfahren, um diese Funktion durchzuführen, einschließlich der
Verwendung spezieller Begrenzungs-Markierungen, der Zuweisung auf fixe
entsprechende Speicherstellen, wie etwa Wortgrenzen, etc. Die Details,
wie Tupel ermittelt werden, sind für die vorliegende Erfindung
nicht wichtig. Eine bestimmte Ausführung ist unten dargelegt.
-
Der
Betrieb der vorliegenden Erfindung wird unten mit Bezugnahme auf
eine typische Pick-Operation dargelegt. Die Operationen für Poke,
Peek und Cancel sind ähnlich,
und wären
einem Fachmann nach Durchlesen dieser Beschreibung klar.
-
Mit
der Peek-Operation, wird ein Anti-Tupel von einem externen Prozess
empfangen, und in die Eingabe-Ausgabe-Puffer des Blocks 10 gestellt.
Die oben beschriebenen Attribute für das eingehende Anti-Tupel werden
dann extrahiert, und im Gegenzug von der Such-Logik des Blocks 10 mit
den Attributen der in dem TTAM 16 gespeicherten Tupel verglichen.
-
Anfänglich wird
der Zustand des Aktivierungs-Flags geprüft. Wenn dieses für ein bestimmtes
Tupel nicht gesetzt ist, wird das Tupel deaktiviert, und nicht für das Vergleichen
verwendet, wie oben beschrieben. In diesem Fall bewegt sich die
Suche zum nächsten
Tupel. Wenn für
dieses nächste
Tupel das Aktivierungs-Flag gesetzt ist, wird das Tupel für den Vergleich
verwendet, etc. Als nächstes
wird die Anzahl der Schlüsselwert-Paar-Attribute
der Anti-Tupel und der ausgewählten
Tupel verglichen. Wenn diese nicht passen, dann gibt es keine Möglichkeit,
dass das Tupel passt, und die Suche bewegt sich im Gegenzug zum
nächsten
Tupel. Wie zu sehen sein wird, führt
das Vergleichen von Attributen zu einer schnellen Suche, welche
die Gesamtgeschwindigkeit der Suche verbessert, indem unmögliche Übereinstimmungen
ausgeschlossen werden.
-
Die
Reihenfolge dieser Prüfungen
ist nicht wichtig, und kann in der Anwendung umgekehrt werden. Die
Analyse bestimmter Anwendungen kann aufdecken, dass mehr Suchzeit
gespart werden kann, indem in einer Reihenfolge oder einer anderen
gesucht wird. Diese Reihenfolge ist daher Anwendungs-spezifisch,
und kann optional von dem Benutzer mit einer Logik in dem Gerät ausgewählt werden,
wenn dies gewünscht
wird.
-
Wenn
die vorläufige
Suche erfolgreich ist, führt
die Suchlogik eine herkömmliche
sequenzielle Suche durch, wobei im Gegenzug Schlüssel und Werte für die Tupel
aus dem Tupel-Speicher 12 entnommen werden, und mit den
entsprechenden Stellen in dem empfangenen Anti-Tupel verglichen
werden. Dieser Vergleich beginnt an der Stelle im Speicher, die
von dem TTAM-Startadressen-Attribut für das Tupel angezeigt wird.
Die Suche fährt
Stelle für
Stelle fort, bis entweder das Ende des Tupels erreicht ist, was
anzeigt, dass eine Übereinstimmung
gefunden wurde, oder bis der erste Unterschied gefunden wird. Wenn
ein Unterschied gefunden wird, dann untersucht die Such-Logik das
nächste
Tupel. Da dies eine Pick-Operation ist, wird, wenn eine Übereinstimmung
gefunden wird, eine Kopie des Tupels zu dem Eingangs/Ausgangs-Puffern
verschoben, und das Streich-Flag wird in der TTAM-Stelle für das übereinstimmende
Tupel gesetzt. Am Ende des Prozesses wird der Tupel-Wert in der
Eingabe-Ausgabe verwendet, um das übereinstimmende Tupel zu dem
anfordernden Prozess zurückzugeben.
Die gesetzte Streich-Markierung zeigt der Suchlogik an, dass das
Tupel von dem Speicher entfernt werden soll (dies wird unten mit
Bezugnahme auf den Speicher-Handhabungs-Abschnitt detailliert beschrieben).
Die Suche fährt
Tupel für
Tupel fort, bis alle Tupel-Attribute in TTAM 16 geprüft worden sind.
-
Am
Ende des Prozesses werden die Atribute des empfangene Anti-Tupels
an das untere Ende des ATAM-Speichers 18 gestellt, und
das Anti-Tupel selbst wird an das untere Ende des Anti-Tupel-Speichers 14 gestellt.
Dann wird der Speicherhandhabungsprozess auf den Inhalt des Tupel-Speichers
und des ATAM-Speichers angewandt, wie detaillierter unten beschrieben
wird.
-
Der
oben dargelegte Algorithmus kann parallel quer über mehr als eine Kopie des
Speicherlements in dem Blockdiagramm verwendet werden. In so einem
Fall werden die TAM-, ATAM-, -Tupel-Speicher- und -Anti-Tupel-Speicher-Elemente
nach Bedarf nachgebildet, und das Eingangs/Ausgangs-Element wird
modifiziert, um von allen Speicherblöcken zurückgegebene Tupel aufzunehmen,
und um den geeignetsten Speicherblock auszuwählen, um die eingehenden Tupel
oder Anti-Tupel zu speichern.
-
Der
Speicherhandhabungsprozess von Block 10 führt eine
Suche durch, und eine darin eingenistete Speicherverschiebungs-Operation
für eine „Speicherbereinigung" für gestrichene
Tupel. Das Verfahren beginnt in dem passenden TAM-Speicher. Der
oben beschriebenen PICK-Operation zufolge gibt es, da der TTAM 16 verwendet
wurde, eine Möglichkeit,
dass einige Tupel gestrichen worden sind (d.h. die Tupel, die zu
dem empfangenen Anti-Tupel passen, und daher von dem Tupelspeicher „aufgepickt" wurden). Das Verfahren durchsucht
Attribute beginnend vom Anfang des TTAM 16. Wenn ein gestrichenes
Tupel aufgefunden wird (d.h. das Streich-Flag wurde gesetzt), wird
die Startadresse des gestrichenen Tupels gemeinsam mit der Startadresse
des Tupels unmittelbar darunter gespeichert, wodurch ein Speicheradressen-Versatz
festgelegt wird. Der Inhalt des Tupelspeichers 12 wird
dann Byte für
Byte gemäß dem angezeigten
Versatz nach Oben bewegt. Diese Verschiebungsoperation wird fortgeführt, bis
das letzte (d.h. das unterste) Tupel des Tupelspeichers 12 nach
oben bewegt worden ist. Das streicht das „Aufgepickte" Tupel effektiv und
erzeugt zusätzlich
Platz am Ende des Tupelspeichers 12. Als nächstes werden
die Daten in dem TTAM 16 um eine Stelle nach oben verschoben,
um das Attribut des gestrichenen Tupels zu entfernen.
-
Das
Verfahren wird dann am Beginn des Speichers 12 wieder begonnen
und es fährt
mit der Suche nach gestrichenen Tupeln fort und entfernt diese,
bis es das Ende des TTAM 16 erreicht. Dieses rekursive
Verfahren macht die Entwicklung des Hardware-Algorithmus besonders
einfach. Ein Fachmann wird jedoch erkennen, dass andere Algorithmen
verwendet werden können.
-
Es
sind Variationen und Modifikationen der bevorzugten Ausführungsform
beabsichtigt. Beispielsweise könnte
der Speicherhandhabungsprozess nur dann durchgeführt werden, wenn keine Anti-Tupel-
oder Tupel-Suchoperationen anhängig
sind, anstatt am Ende einer bestimmten Tupel- oder Anti-tupel-Suchoperation zu
beginnen. Diese Alternative ergibt den Vorteil einer erhöhten Systemgeschwindigkeit,
da keine Zeit mit dem Aufräumen
des Speichers verschwendet wird, wenn Suchanfragen anhängig sind,
was besonders vorteilhaft in Systemen ist, bei denen die Anfragen
stark gehäuft
auftreten (z.B. Telephonie und andere Systeme, die in Reaktion auf
Menschliche Eingriffe agieren). In dieser Alternative wird während des
Suchprozesses das Streich-Flag zusätzlich zu den Attributen der
Anzahl an Schlüsslwert-Paaren
untersucht. Wenn das Streich-Flag gesetzt ist, muss das Suchverfahren
das Tupel nicht nach einer möglichen Übereinstimmung
untersuchen.
-
Es
wird angenommen, dass diese und alle anderen solchen alternativen
Ausführungsformen
in den Umfang der Erfindung fallen, wie sie durch die angefügten Ansprüche festgelegt
ist.