DE60307688T2 - Hardware-unterstützter Tupelraum - Google Patents

Hardware-unterstützter Tupelraum Download PDF

Info

Publication number
DE60307688T2
DE60307688T2 DE60307688T DE60307688T DE60307688T2 DE 60307688 T2 DE60307688 T2 DE 60307688T2 DE 60307688 T DE60307688 T DE 60307688T DE 60307688 T DE60307688 T DE 60307688T DE 60307688 T2 DE60307688 T2 DE 60307688T2
Authority
DE
Germany
Prior art keywords
tuples
tuple
memory
key
value pairs
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 - Lifetime
Application number
DE60307688T
Other languages
English (en)
Other versions
DE60307688D1 (de
Inventor
Thomas RR3 Carp Ontario Gray
Charles Kingston Rae
Derrek Kingston Wood
Aubert Kingston Pereira
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitel Networks Corp
Original Assignee
Mitel Networks Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitel Networks Corp filed Critical Mitel Networks Corp
Application granted granted Critical
Publication of DE60307688D1 publication Critical patent/DE60307688D1/de
Publication of DE60307688T2 publication Critical patent/DE60307688T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

  • 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:
    Figure 00060001
  • 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.

Claims (10)

  1. Hardwareunterstützter Tupelraum, gekennzeichnet durch: – einen Tupelspeicher (12) für das Speichern von Tupeln von Schlüsselwertpaaren von Daten; – einen Anti-Tupelspeicher (14) für das Speichern von Anti-Tupeln von Schlüsselwertpaaren von Daten; – einen Tupelmerkmal-Feldspeicher (16, 18) für das Speichern ausgewählter Merkmale von entsprechenden der Tupeln und Anti-Tupeln, und – eine Eingabe/Ausgabe- und Speichersteuerungs-Schnittstelle (10) für i) das austauschen von Tupeln und Anti-Tupeln zwischen einem extenen Prozess und den Tupel- und Anti-Tupel-Speichern, ii) das Durchführen von Durchsuchungen des Tupelmerkmal-Feldspeichers, um möglicherweise dazupassende Tupeln und Anti-Tupeln zu identifizieren, und iii) nachfolgendes Vergleichen der Schlüsselwertpaare der möglicherweise dazupassenden Tupeln und Anti-Tupeln, um tatsächlich dazupassende Tupeln und Anti-Tupeln zu identifizieren.
  2. Hardwareunterstützter Tupelraum nach Anspruch 1, dadurch gekennzeichnet, dass der Tupelspeicher und der Anti-Tupelspeicher unter Verwendung eines RAM implementiert sind.
  3. Hardwareunterstützter Tupelraum nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass zumindest eines der ausgewählten Merkmale – die Nummer der Schlüsselwertepaare von jedem der Tupeln und Anti-Tupeln angibt, und/oder – eine Markierung ist, die angibt, ob die entsprechenden der Tupeln und Anti-Tupeln aktiviert sind, damit sie in die Durchsuchungen einbezogen werden, oder deaktiviert sind, damit sie von den Durchsuchungen ausgeschlossen werden.
  4. Hardwareunterstützter Tupelraum nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass zumindest eines der ausgewählten Merkmale die Startadressen in dem Tupelspeicher und dem Anti-Tupelspeicher für jedes der Tupeln bzw. Anti-Tupeln angibt; und/oder die Länge von jedem der Tupeln und Anti-Tupeln in Worten angibt.
  5. Hardwareunterstützter Tupelraum nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass zumindest eines der ausgewählten Merkmale eine absolute Systemzeit angibt, zu der jedes der Tupeln und Anti-Tupeln gelöscht werden soll.
  6. Hardwareunterstützter Tupelraum nach Anspruch 1, dadurch gekennzeichnet, dass der Tupelmerkmal-Feldspeicher einen ersten Feldspeicher für das Speichern von Merkmalen von den Tupeln in dem Tupelspeicher und einen zweiten Feldspeicher für das Speichern von Merkmalen von den Anti-Tupeln in dem Anti-Tupelspeicher aufweist.
  7. Verfahren für das Handhaben eines in einem Speicher implementierten Tupelraums, gekennzeichnet durch: – Speichern von Tupeln von Schlüsselwertpaaren von Daten in einem Tupelspeicher (12); – Speichern von Anti-Tupeln von Schlüsselwertpaaren von Daten in einem Anti-Tupelspeicher (14); – Speichern ausgewählter Merkmale von entsprechenden der Tupeln und Anti-Tupeln; – Durchführen von Durchsuchungen der ausgewählten Merkmale, um möglicherweise dazupassende Tupeln und Anti-Tupeln zu identifizieren, und – nachfolgend Vergleichen der Schlüsselwertpaare der möglicherweise dazupassenden Tupeln und Anti-Tupeln, um tatsächlich dazupassende Tupeln und Anti-Tupeln zu identifizieren.
  8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, dass zumindest eines der ausgewählten Merkmale die Nummer der Schlüsselwertepaare von jedem der Tupeln und Anti-Tupeln angibt, und dadurch, dass die Durchsuchungen es beinhalten, die Nummer der Schlüsselwertepaare von jedem der Tupeln und Anti-Tupeln zu vergleichen, um die möglicherweise dazupassenden Tupeln und Anti-Tupeln zu identifizieren; beziehungsweise die Startadressen in dem Speicher angibt, um die Schlüsselwertpaare von den möglicherweise dazupassenden Tupeln und Anti-Tupeln zu vergleichen.
  9. Verfahren nach Anspruch 7 oder 8, dadurch gekennzeichnet, dass zumindest eines der ausgewählten Merkmale die Länge von jedem der Tupeln und Anti-Tupeln in Worten bereitstellt, und dadurch, dass Durchsuchungen es beinhalten, die Länge von jedem der Tupeln und Anti-Tupeln zu vergleichen, um die möglicherweise dazupassenden Tupeln und Anti-Tupeln zu identifizieren.
  10. Verfahren nach Anspruch 7, dadurch gekennzeichnet, dass zumindest eines der ausgewählten Merkmale eine Markierung ist, die angibt, ob ein entsprechendes der Tupeln oder Anti-Tupeln gelöscht werden soll, und zumindest ein weiteres ausgewähltes Merkmal eine Startadresse in dem Speicher für das Tupel, beziehungsweise Anti-Tupel angibt, und dadurch, dass das Verfahren weiters das Durchsuchen der Merkmale nach der Markierung aufweist, und in Reaktion auf das Auffinden der Markierung, das verschieben von nachfolgenden der Tupeln und Anti-Tupeln aufwärts in dem Speicher, beginnend unmittelbar unter der Startadresse, wobei das entsprechende eine der Tupeln oder Anti-Tupeln entfernt wird.
DE60307688T 2002-01-14 2003-01-14 Hardware-unterstützter Tupelraum Expired - Lifetime DE60307688T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB0200747.4A GB0200747D0 (en) 2002-01-14 2002-01-14 Hardware-assisted tuple space
GB0200747 2002-01-14

Publications (2)

Publication Number Publication Date
DE60307688D1 DE60307688D1 (de) 2006-10-05
DE60307688T2 true DE60307688T2 (de) 2007-09-06

Family

ID=9929033

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60307688T Expired - Lifetime DE60307688T2 (de) 2002-01-14 2003-01-14 Hardware-unterstützter Tupelraum

Country Status (5)

Country Link
US (1) US6931491B2 (de)
EP (1) EP1329807B1 (de)
CA (1) CA2416013C (de)
DE (1) DE60307688T2 (de)
GB (1) GB0200747D0 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0200745D0 (en) * 2002-01-14 2002-02-27 Mitel Knowledge Corp Tuple space operations for fine grained system control
JP5762878B2 (ja) * 2011-08-08 2015-08-12 株式会社東芝 key−valueストアを有するメモリシステム
JP5992577B2 (ja) * 2015-06-09 2016-09-14 株式会社東芝 メモリ、データ処理方法、及びメモリシステム
US10203911B2 (en) * 2016-05-18 2019-02-12 Friday Harbor Llc Content addressable memory (CAM) implemented tuple spaces
US10678562B2 (en) 2016-11-17 2020-06-09 K&M Systems, Inc. Systems and methods for facilitating real-time analytics

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615360A (en) * 1990-11-13 1997-03-25 International Business Machines Corporation Method for interfacing applications with a content addressable memory
US5893108A (en) 1994-12-29 1999-04-06 International Business Machines Corporation System, method, and computer program product for efficiently translating relational tuples to object-oriented objects
GB2382946A (en) * 2001-12-06 2003-06-11 Mitel Knowledge Corp Displaying user availability
GB0200746D0 (en) * 2002-01-14 2002-02-27 Mitel Knowledge Corp Method and apparatus for establishing and maintaining voice communication among a community of interest
GB0200745D0 (en) * 2002-01-14 2002-02-27 Mitel Knowledge Corp Tuple space operations for fine grained system control
JP2004076125A (ja) * 2002-08-21 2004-03-11 Komatsu Ltd 転動部材

Also Published As

Publication number Publication date
DE60307688D1 (de) 2006-10-05
CA2416013C (en) 2007-04-24
EP1329807B1 (de) 2006-08-23
US20030135695A1 (en) 2003-07-17
CA2416013A1 (en) 2003-07-14
EP1329807A1 (de) 2003-07-23
GB0200747D0 (en) 2002-02-27
US6931491B2 (en) 2005-08-16

Similar Documents

Publication Publication Date Title
DE69912410T2 (de) Schnelles zeichenkettensuchen und -indizieren
DE69915462T2 (de) Sehr leistungsstarker objektcache
DE69031491T2 (de) Hypertextdatenverarbeitungssystem und Verfahren
DE69024932T2 (de) Verfahren um Dokumente, die ein bestimmtes Attribut haben, mit Hilfe eines vektorrelationalen charakteristischen Objektes zu identifizieren
DE60307241T2 (de) Vlan tabellenverwaltungssystem in hardwarebasierten paketvermittlungsstellen für speichereffizientes auslesen und einschreiben
DE112008003826B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE3780807T2 (de) Verfahren zum schnellen oeffnen von mit pfadnamen identifizierten plattendateien.
DE112017002941T5 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE112015000218T5 (de) Verfahren, System und Computerprogramm zum Abtasten einer Mehrzahl von Speicherbereichen in einem Arbeitsspeicher nach einer spezifizierten Anzahl von Ergebnissen
DE102007037646B4 (de) Computerspeichersystem und Verfahren zum Indizieren, Durchsuchen und zur Datenwiedergewinnung von Datenbanken
DE19954534A1 (de) Rückwärtsindexieren von Zeichenketten in einer relationalen Datenbank zum Suchen mit Joker
DE102013206744A1 (de) Deduplizierende speicherung mit verbesserter erkennung von häufigen blöcken
WO2015090668A1 (de) Posix-kompatibles dateisystem, verfahren zum erzeugen einer dateiliste und speichervorrichtung
DE102005019842A1 (de) System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher
DE60306209T2 (de) Verfahren, mobile vorrichtungen und rechnerlesbare media zur datenverwaltung
DE69127399T2 (de) Verfahren zur automatischen Löschung vorübergehender Dokumentverbindungen in einem Datenverarbeitungssystem
DE10162495A1 (de) Erweiterbare Datenbank
DE112019006530T5 (de) Markieren von betroffenen ähnlichkeitsgruppen in freispeichersammeloperationen in duplizierten speichersystemen
DE102021108455B4 (de) Erzeugen von Snapshots eines Schlüssel-Wert-Index
DE3855494T2 (de) Abfragevorrichtung und -methode
DE60307527T2 (de) Tupleraumoperationen für eine feinkörnige Systemsteuerung
DE112019000627T5 (de) Speicherstrukturbasiertes Coherency Directory Cache
DE602004008240T2 (de) Verfahren zum Verwalten von defekten Speicherblöcken in einem nicht-flüchtigen Speicher und nicht-flüchtiger Speicher zur Ausführung des Verfahrens
EP1276056B1 (de) Verfahren zum Verwalten einer Datenbank
DE60307688T2 (de) Hardware-unterstützter Tupelraum

Legal Events

Date Code Title Description
8364 No opposition during term of opposition