DE60132117T2 - Verfahren und einrichtung zum speichern und anpassen beliebig breiter ausdrücke an inhaltsadressierbare speicher - Google Patents

Verfahren und einrichtung zum speichern und anpassen beliebig breiter ausdrücke an inhaltsadressierbare speicher Download PDF

Info

Publication number
DE60132117T2
DE60132117T2 DE60132117T DE60132117T DE60132117T2 DE 60132117 T2 DE60132117 T2 DE 60132117T2 DE 60132117 T DE60132117 T DE 60132117T DE 60132117 T DE60132117 T DE 60132117T DE 60132117 T2 DE60132117 T2 DE 60132117T2
Authority
DE
Germany
Prior art keywords
cam
word
words
search
value
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
DE60132117T
Other languages
English (en)
Other versions
DE60132117D1 (de
Inventor
Kjell Gunnar Torkelsson
Johan Mathijs Ditmar
Lars-Örjan KLING
Hakan Otto Ahl
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.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
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 Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Application granted granted Critical
Publication of DE60132117D1 publication Critical patent/DE60132117D1/de
Publication of DE60132117T2 publication Critical patent/DE60132117T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Fluid-Damping Devices (AREA)
  • Devices For Checking Fares Or Tickets At Control Points (AREA)
  • Management Or Editing Of Information On Record Carriers (AREA)
  • Image Analysis (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung betrifft ein Verfahren zum Speichern breiter Ausdrücke in einem Assoziativspeicher (CAM – Content Addressable Memory) mit einem Satz von CAM-Elementen einer geringeren Breite und Anpassen von breiten Ausdrücken an die Inhalte des Satzes von CAM-Elementen.
  • Hintergrund der Erfindung
  • Ein Assoziativspeicher (CAM) ist ein Speichergerät, das während der letzten Jahre in einigen Anwendungen zunehmend wertvoller wurde. Ein CAM kann ein schnelles Speichern und Suchoperationen durchführen. Der CAM stellt einen Leistungsfähigkeitsvorteil über Speichersuchalgorithmen bereit, wie zum Beispiel binäre und Baum-basierte Suchen, oder Look-Aside-Tag-Puffer (Zur-Seite-Schau-Etikett-Puffer) durch Vergleichen der gewünschten Information gegen die gesamte Liste von vorgespeicherten Daten, was oft in einer Verringerung der Suchzeit in einer Größenordnung resultiert. Ist einmal Information an einem CAM-Ort gespeichert, wird diese durch Vergleichen jeden Bits in dem CAM mit dem Bit der Daten in einem Suchausdruck gefunden. Falls es eine Übereinstimmung für jedes Bit in einem Ort mit jedem entsprechenden Bit in dem Suchausdruck gibt, wird eine Ausgabe von dem CAM erhalten, die ein Assoziationswert oder eine Adresse ist, die zu einer verknüpften Information zeigt. Die verknüpfte Information kann in einem herkömmlichen Speichergerät, wie zum Beispiel einem RAM gespeichert werden. In Abhängigkeit der Anwendung kann das RAM Information oder Anweisungen oder Operationen oder Ähnliches enthalten, die angezeigt oder durchgeführt werden sollen, wenn es eine Übereinstimmung zwischen dem Suchausdruck und der Information gibt, die in dem CAM gespeichert ist. Daher werden bei einem CAM die Daten zugeführt und die Adresse wird erhalten.
  • Da der CAM keine Adressleitungen benötigt, um Daten zu finden, kann die Tiefe eines Speichersystems unter Verwendung eines CAMs soweit ausgedehnt werden wie gewünscht, jedoch ist die Breite durch die Größe des Chips begrenzt. Zum Beispiel kann ein CAM-Chip 64 bis 128 Bits breit sein, jedoch 32768 Einträge tief. Es ist ziemlich leicht, die Tiefe des CAMs auszudehnen, da die Adressierung insgesamt in sich selbst geschlossen ist.
  • Einige CAMs werden so genannte ternäre CAMs genannt, in denen die gespeicherten Daten Bitwerte von 0,1 oder X enthalten können, wobei X „ist egal" ist, das heißt der Wert entspricht sowohl 0 als auch 1.
  • Die Funktion und Vorteile des CAM-Speichers machen diesen sehr geeignet für Anwendungen und Operationen, wie zum Beispiel LANs, Datenbankverwaltung, Dateispeicherverwaltung, Nachschlagen zur Mustererkennung und Ähnliches und dieser ist besonders geeignet zum Durchführen von Suchoperationen. Zum Beispiel können die CAMs in Verbindung mit einer Internetprotokoll-Klassifikation (IP – Internet Protocol) verwendet werden, die in Routern (Vermitlungsknoten) durchgeführt wird. Das heißt der Prozess eines Klassifizierens von IP-Paketen in Kategorien, der eine spezielle Behandlung erfordert. Ein Untersatz einer IP-Klassifikation ist ein IP-Filtern. Ein IP-Filtern ist ein Sicherheitsmerkmal, das IP-Verkehr durch Erlauben oder Ablehnen von Paketen durch Anwenden bestimmter Regeln beschränkt. Auf diese Weise können Benutzer auf spezifische Domänen oder Anwendungen auf dem Internet beschränkt werden. Um eine Klassifikation durchzuführen, müssen IP-Header (Header – Kopfdatensatz) von Paketen, die einen Router erreichen, mit Mustern verglichen werden, die in einer Tabelle gespeichert sind, was eine Ausgabe erzeugt, die das Paket klassifiziert. Üblicherweise wird diese Tabelle in einem Speicher gespeichert und ein Vergleichen wird in einer Software durchgeführt.
  • Aufgrund von anwachsenden Leistungsfähigkeitsanforderungen und größeren und breiteren Suchsätzen werden Softwarebasierte Suchalgorithmen zu langsam und alternative Implementationen müssen berücksichtigt werden. Eine derartige Alternative ist es einen CAM zu verwenden. Kommerziell verfügbare CAMs sind jedoch nicht breit genug für eine Klassifizierung der IP-Version 6 (IPv6). Gegenwärtig sind die breitesten CAMs, die verfügbar sind, 136 Bits breit, was genug ist, um eine 128-Bit-Breite IPv6-Adresse zu enthalten. Wenn jedoch Pakete in einem Router klassifiziert werden, ist es nötig, eine Anzahl von Feldern in dem Header zu berücksichtigen, wie zum Beispiel die Zieladresse, die 128 Bit breit ist und die Quelladresse, die ebenso 128 Bit breit ist. Es kann ebenso erforderlich sein, weitere Information zu berücksichtigen, die insgesamt mehrere Hundert Bit erfordert. Es ist daher nicht möglich, die kommerziell verfügbaren CAMs in einem IPv6-Router in einer herkömmlichen Weise zu verwenden.
  • In XP000277663, T. Moors und A. Cantoni, „Cascade Content-Addressable Memories" sind unterschiedliche Verfahren von kaskadierenden CAM-Geräten offenbart, um Systeme größerer Abmessungen zu erzielen. Die Verfahren umfassen Bilden einer Verkettung von CAMs, um die Anzahl von Elementen zu erhöhen und möglicherweise Carry-Lookahead-Logik (Trage-Vorschau-Logik) zu verwenden, um die Geschwindigkeit zu erhöhen, bei der das Freigabesignal sich durch die Kaskade ausbreitet. Um die Datengröße zu erhöhen, ist es offenbart, die Kennsätze (Labels) in getrennten CAMs zu replizieren, um den Datenspeicher zu verwenden, der in einem primären CAM verfügbar ist, um ein sekundäres CAM/RAM zu indizieren oder eine Redundanz in Kennsätzen zu verringern. Um die Kennsatzgröße zu erhöhen, ist es gezeigt, eine Elementenkaskade mit oder ohne ein Schieberegister, eine Master-Slave-Kaskade oder eine Trie-Kaskade zu verwenden.
  • Die Anmeldung WO 01 11630 handhabt eine Übereinstimmungsauflösung für einen Assoziativspeicher. Das Bestimmen einer besten Übereinstimmung aus einer Vielzahl von Übereinstimmungen in einer Suche auf dem Assoziativspeicher ist offenbart. Ein Prioritätsfeld ist mit jedem Datengegenstand verknüpft, der in dem Speicher gespeichert ist. Eine Übereinstimmungsauflösungsstruktur vergleicht die Prioritätsfelder eines Vergleichen von Datengegenständen, um einen Datengegenstand mit der höchsten Priorität zu bestimmen, der als beste Übereinstimmung für eine bestimmte Sucheingabe angezeigt wird.
  • Kurze Beschreibung der Erfindung
  • Das Ziel der Erfindung ist es, ein Verfahren bereitzustellen, in dem CAMs einer geringeren Breite verwendet werden, um Ausdrücke in CAMs zu speichern und Ausdrücke mit den Inhalten des CAMs abzugleichen, wobei die Breite des Ausdrucks größer als die Breite des verwendeten CAMs ist, z. B. Emulieren eines breiten CAMs mit einem Satz kleinerer CAMs. Der Begriff „Ausdruck" in diesem Zusammenhang muss als eine Reihe von einer beliebigen Anzahl von Bits verstanden werden, wobei jedes Bit 0,1 und möglicherweise X sein kann, falls ternäre CAMs verwendet werden, wobei der Ausdruck Information oder Daten umfasst, wie zum Beispiel Wörter, Adressen, Port-Nummern und Ähnliches.
  • Um ein breites CAM unter Verwendung einer Struktur von verknüpften weniger breiten CAMs zu emulieren, wird der weite Ausdruck in kleinere Teile geteilt, hiernach bezeichnet als CAM-Wörter, wobei jedes CAM-Wort einem CAM-Element zugeordnet ist und in dem CAM-Element gespeichert wird. Ein CAM-Element kann in diesem Zusammenhang ein physikalisches CAM oder ein dedizierter Teil eines CAMs sein. In jedem Fall ist das CAM-Element von einer geringeren Breite als der breite Ausdruck.
  • Jedes CAM-Wort, das in dem jeweiligen CAM-Element gespeichert wird, wird ein Assoziationswert als Ausgabe zugeordnet, wobei der Wert mit einem anderen CAM-Wort kombiniert wird, das einem anderen CAM-Element zugeordnet ist. Derartige Verknüpfungen zwischen den CAM-Wörtern und den CAM-Elementen können durch Verwenden eines seriellen oder eines parallelen Schemas oder irgendeiner Kombination von diesen durchgeführt werden.
  • In einem seriellen Schema wird jedes CAM-Wort dem nachfolgenden CAM-Wort des gespeicherten Ausdrucks zugeordnet, wodurch eine serielle Verbindung zwischen den CAM-Wörtern gebildet wird. In einem parallelen Schema wird jedes CAM-Wort mit zumindest den CAM-Wörtern des gespeicherten Ausdrucks verknüpft, wodurch eine parallele Verbindung zwischen den CAM-Wörtern gebildet wird.
  • Ein CAM-Wort, das zu einem CAM-Element zugeordnet ist, wird dem Ausgabewert des vollständigen Ausdrucks zugeordnet. Dieses CAM-Element wird als ein letztes CAM-Element bezeichnet. Das CAM-Wort für dieses letzte CAM-Element muss direkt oder indirekt mit allen anderen CAM-Wörtern der CAM-Elemente verknüpft werden, so dass dieses verifiziert, dass alle CAM-Wörter zusammen den vollständigen Ausdruck bilden.
  • Wenn ein Vergleichen durchgeführt wird, wird der zu vergleichende Ausdruck, hiernach bezeichnet als Suchausdruck, in kleinere Teile, Suchworte, geteilt, wobei jedes Suchwort mit den Inhalten des entsprechenden CAM-Elements, den CAM-Worten, in einer sequentiellen Reihenfolge durch das CAM-Element verglichen wird. Wenn eine Übereinstimmung zwischen einem CAM-Wort des CAM-Elements und dem spezifischen Suchwort erhalten wird, z. B. einem Teil des gesuchten Ausdrucks, wird der Ausgabewert des CAM-Wortes mit der Eingabe seines zugeordneten CAM-Elements kombiniert, das dem gleichen Schema wie oben folgt.
  • Die Ausgabe des letzten CAM-Elements ist die resultierende Ausgabe des gesamten emulierten CAM. Der Ausgabewert kann direkt verwendet werden, wie zum Beispiel Ablehnen oder Erlauben eines Paketzugangs zu LAN-Ressourcen, wenn eine Übereinstimmung gefunden wird oder der Wert kann in Kombination mit zum Beispiel einem RAM-Speicher verwendet werden, der Information und/oder Daten enthält, wie zum Beispiel Weiterleiten eines Paketes an einen spezifischen Port in einem Router, wenn eine Anpassung gefunden wird, wobei die Information hinsichtlich des Ports in einem Speicherort gespeichert wird, der mit dem gespeicherten und verglichenen CAM-Wort verknüpft ist.
  • Da ein CAM lediglich einen Wert zurückgeben kann, werden mehrfache Übereinstimmungen nicht detektiert, was der Fall bei ternären CAMs sein könnte, wobei einige Bits X oder zum Beispiel 0 oder 1 sein könnten und lediglich die Ausgabe des CAM-Wortes mit der höchsten Priorität zurückgegeben wird. In den meisten CAMs ist die Priorität sequentiell und fallend, d. h. die CAM-Wörter an der Spitze des CAMs haben höhere Priorität, hauptsächlich aufgrund der sequentiellen Suchweise. Jedoch könnte es andere Prioritätsreihenfolgen geben, wie zum Beispiel ansteigend oder dass jedes gespeicherte CAM-Wort eine individuelle Priorität ungeachtet seiner Position in dem CAM empfängt. Jedoch könnte das CAM-Wort mit einer höchsten Priorität nicht Teil des vollständigen Vergleichsausdrucks sein, sondern dies ist ein CAM-Wort mit einer niedrigeren Priorität. Um dies aufzulösen, werden zusätzliche CAM-Wörter, genannt „Anteile", zu dem CAM hinzugefügt.
  • Anteile sind das Ergebnis einer Operation einer Anzahl von gespeicherten CAM-Wörtern. Fall sich zwei CAM-Wörter überschneiden, d. h. es existieren Suchwörter, für die beide dieser CAM-Wörter übereinstimmen, muss ein Anteil erzeugt werden. Die Erzeugung des Anteils ist derart, dass für diejenigen Bits des verglichenen CAM-Wortes, die gleich sind, die entsprechenden Bits des Anteils diesen Wert empfangen und für die Bits, die in einem der CAM-Worte X sind und in dem anderen CAM-Wort als (0 oder 1) definiert sind, die entsprechenden Bits des Anteils den definierten Wert empfangen. In dieser Weise stimmt der Anteil mit allen Suchworten überein, für die alle seine Argumente übereinstimmen. Es ist weiter erforderlich, den Anteil über die CAM-Worte zu priorisieren, aus denen dieser erzeugt wurde, d. h. Speichern des Anteils über diesen, damit diese jene überdeckt oder abschattet, so dass bei einer Suche das Suchwort den Anteil zuerst erreicht.
  • Gemäß der Erfindung können die CAM-Elemente in Schichten mit unterschiedlicher Priorität geteilt werden, so dass Anteile, die aufgrund von zwei sich überschneidenden CAM-Wörtern erzeugt sind, auf einer höheren Schicht angeordnet sind, als die sich überschneidenden Worte, wodurch die Priorisierung der Anteile in Bezug auf die CAM-Worte sichergestellt und ermöglicht wird.
  • Unter Verwendung von Anteilen ist es möglich, mehrere Übereinstimmungen unter Verwendung eines Ausgabewertes zu detektieren. In dieser Weise werden alle vollständigen Ausdrücke, die möglicherweise übereinstimmen sondiert.
  • Um alle möglichen Fälle mehrfacher Übereinstimmungen in einem CAM-Element abzudecken, müssen alle möglichen Anteile hinzugefügt werden, basierend auf irgendeiner Kombination und Anzahl von CAM-Worten, die gleichzeitig übereinstimmen können. Darüber hinaus muss jeder Anteil hinzugefügt werden, so dass dieser über die ursprünglichen CAM-Worte und ebenso über andere Anteile priorisiert wird, die weniger Argumente aufweisen.
  • Schließlich können CAM-Worte ausgelassen werden, falls die Verbindung aller CAM-Worte, die eine höhere Priorität aufweisen, diese abschattet. Mit dem Verfahren gemäß der Erfindung können breite Ausdrücke in einem Satz schmalerer CAMs gespeichert werden. Dies ermöglicht eine effiziente Suche nach Ausdrücken mit beliebiger Breite unter Verwendung kommerziell verfügbarer Schaltkreise. Eine Alternative zu dem Verfahren gemäß der Erfindung ist ein Speicher-basierter Algorithmus, wie zum Beispiel eine binäre oder Baum-basierte Suche. CAMs liefern den Leistungsfähigkeitsvorteil über diese Art von Algorithmen durch Vergleichen des Ausdrucks, den wir gegen die gesamte Liste von vorgespeicherten CAM-Wörtern gleichzeitig vergleichen wollen, was eine Verringerung der Suchzeit in Größenordnungen ergibt. Unter Verwendung von CAMs werden Suchen in einer konstanten Zeit durchgeführt und die Suchzeit hängt lediglich von der benötigten Anzahl von CAM-Aufrufen ab und daher der Breite der Ausdrücke.
  • Diese und andere Vorteile und Aspekte der Erfindung werden aus der folgenden detaillierten Beschreibung und den begleitenden Zeichnungen ersichtlich.
  • Kurze Beschreibung der Zeichnungen
  • In der folgenden detaillierten Beschreibung der Erfindung wird auf die begleitenden Zeichnungen Bezug genommen, von denen
  • 1 eine schematische Darstellung eines Speicherns breiter Suchausdrücke in schmaleren CAM-Elementen unter Verwendung eines seriellen Schemas gemäß der Erfindung zeigt;
  • 2 eine schematische Darstellung eines Speicherns breiter Suchausdrücke in drei schmaleren CAM-Elementen unter Verwendung eines parallelen Schemas gemäß der Erfindung zeigt,
  • 3a–e eine Verbindung zwischen CAM-Worten in unterschiedlichen CAM-Elementen zeigt,
  • 4 CAM-Worte A und B zeigt, die als numerische Bereiche dargestellt sind,
  • 5 CAM-Worte A, B und A ∩ mit B zeigt, die als numerische Bereiche dargestellt sind,
  • 6 CAM-Worte A, B und C zeigt, die als numerische Bereiche dargestellt sind,
  • 7 CAM-Worte A, B und C zeigt, die als numerische Bereiche dargestellt sind und die Anteile gemäß der Erfindung verwenden,
  • 8 schematisch ein berechnendes Gerät gemäß der Erfindung zeigt.
  • Detaillierte Beschreibung der Erfindung
  • Die vorliegende Erfindung betrifft ein Speichern und Suchen in CAMs und insbesondere ternären CAMs. Suchen in CAMs werden durch Vergleichen eines Suchausdrucks durchgeführt, der als eine Eingabe zu dem CAM zugeführt wird, mit Mustern (CAM-Worten), die in dem CAM gespeichert sind. Falls ein CAM-Wort mit dem Suchausdruck übereinstimmt, wird eine Übereinstimmung angezeigt und ein Ausgabewert wird zurückgegeben. Der Ausgabewert kann eine Adresse sein, die verwendet werden kann, um auf einen Speicher zuzugreifen, zum Beispiel einen RAM-Speicher, in dem der entsprechende Ausgabewert für diese Übereinstimmung spezifiziert ist. In diesem Dokument bezeichnet der Begriff CAM diese Kombination.
  • In einem ternären CAM können CAM-Worte Bit-Werte von 0,1 und X umfassen, wobei X sowohl 0 als auch 1 in dem Suchwort entspricht.
  • Nehmen wir an, dass die Ausdrücke oder Einträge, die verwendet werden und die gespeichert werden sollen, breiter als die Breite des verwendeten CAMs sind. Gemäß der Erfindung wird der Ausdruck 31 in Teile geteilt, hier als CAM-Worte 32 bezeichnet. Jeder Teil ist an einem Ort eines CAM-Elements 33 gespeichert, wobei jedes CAM-Element 33 weniger breit als die gesamte Breite des Ausdrucks 31 ist. Jedes CAM-Element 33 kann entweder ein physikalisches CAM oder ein dedizierter Teil eines CAMs sein und kann von unterschiedlicher Größe hinsichtlich einer Bit-Breite und Anzahl von Speicherorten (Tiefe des CAMs) sein. Falls die CAM-Elemente in einem physikalischen CAM angeordnet sind, können Teile der Bits des CAMs verwendet werden, um anzuzeigen, dass eine bestimmte Anzahl von Orten zu einem bestimmten CAM-Element gehört. Jedes CAM-Wort 32 des Ausdrucks wird in einem Wort-Feld 34 eines spezifischen CAM-Elements gespeichert und jedes CAM-Wort wird mit anderen CAM-Worten durch Verwenden eines Assoziationswertes 35 verbunden (symbolisch angezeigt mittels eines Pfeils in 1 und 2), wobei der Assoziationswert 35 der Ausgabewert von einem CAM-Wort ist und wobei der Ausgabewert in einem Anhang angeordnet ist, der hiernach Auswahlfeld 36 bezeichnet wird, das mit dem Wortfeld 34 des verknüpften CAM-Wortes in einem anderen CAM-Element 33 verbunden ist. Zumindest eines der CAM-Elemente 33 weist ein Auswahlfeld 36 auf.
  • Ein Ansatz gemäß der Erfindung ist es, diese CAM-Elemente 33 seriell zu verbinden. Das serielle Schema kann wie folgt beschrieben werden: teste die Anzahl von Bits, die in das erste CAM-Element passen und speichere diesen Teil des Ausdrucks 31, das CAM-Wort 32, in dem Wortfeld 34 des CAM-Elements 33. Eine nachfolgende Anzahl von Bits des Ausdrucks wird gegen das nächste CAM-Element getestet und dieser CAM-Wert wird in dem nächsten CAM-Element gespeichert. Der Assoziationswert 35 des ersten CAM-Wortes wird in das Auswahlfeld 36 des nachfolgenden CAM-Wortes eingegeben. Der Prozess wird wiederholt, bis der gesamte Ausdruck in den CAM-Elementen 33 gespeichert ist, wobei jedes CAM-Wort mit nachfolgenden CAM-Worten durch die Assoziationswerte 35 verknüpft ist, 1.
  • 1 kann außer zum Darstellen eines Speicherns breiter Ausdrücke 31 verwendet werden, um ein Vergleichen von Suchausdrücken mit Ausdrücken darzustellen, die in den CAMs gespeichert sind. In der folgenden Beschreibung eines Vergleichens bezeichnet ein Bezugszeichen 31 einen Suchausdruck und das Bezugszeichen 32 ein Suchwort.
  • Wenn ein Vergleichen durchgeführt werden soll, wird der Suchausdruck 31 in eine Anzahl von Teilen, Suchwörter 32, geteilt, wobei jedes Suchwort 32 eine Bit-Breite aufweist, die seinem CAM-Element 33 entspricht. Das erste Suchwort 32 wird mit den CAM-Wörtern in den Wortfeldern 34 des ersten CAM-Elements verglichen. Wenn eine Übereinstimmung erhalten wird, wird der Ausgabewert des verglichenen CAM-Wortes, der Assoziationswert 35, mit dem nächsten Suchwort kombiniert. Das nächste Suchwort wird zusammen mit dem Assoziationswert 35, der aus der ersten Übereinstimmung erhalten wird, gegen die CAM-Wörter in dem zweiten CAM-Element getestet. Wenn eine Übereinstimmung zwischen dem Suchwort 32 und einem CAM-Wort erhalten wird und der Assoziationswert 35, der mit dem Suchwort kombiniert ist, mit den Inhalten des Auswahlfeldes 36 übereinstimmt, wird ein Ausgabewert erhalten, Assoziationswert 35, der wiederum mit dem nächsten Teil des Ausdrucks kombiniert wird. Das Verfahren fährt fort, bis eine Übereinstimmung zwischen allen Suchworten und den CAM-Worten der CAM-Elemente erhalten wird.
  • Wenn eine vollständige Übereinstimmung des spezifischen CAM-Wortes erhalten wird, wird ein Assoziationswert für den vollständigen Ausdruck zurückgegeben. Der Assoziationswert kann als eine Adresse eines herkömmlichen RAM-Speichers verwendet werden.
  • Die Anzahl von CAM-Elementen 33, die erforderlich sind, um das breite Suchwort 31 zu vergleichen, ist derart, dass die Gesamtbreite aller Wortfelder 34 größer oder gleich der Breite des Suchwortes ist, das verglichen werden soll.
  • Ein anderer Ansatz der Erfindung ist es, ein paralleles Schema zu verwenden. Mit dem parallelen Schema wird die Breite des Ausdrucks 31 überprüft, um eine Anzahl von CAM-Elementen 33, die für ein Speichern benötigt werden, basierend auf einem Wissen der Breite jedes verfügbaren CAM-Elements aufzubauen. Der erste Teil des Ausdrucks, das erste CAM-Wort 32, wird in einem Wortfeld 34 in einem ersten CAM-Element gespeichert. Der Assoziationswert 35 des CAM-Wortes wird in ein Auswahlfeld 36 des letzten CAM-Elements eingegeben, das zum Speichern des bestimmten Ausdrucks 31 erforderlich ist. Der nächste Teil des Ausdrucks wird in dem Wortfeld eines anderen CAM-Elements gespeichert und sein Assoziationswert 35 wird in einem weiteren Auswahlfeld 36 in dem letzten CAM-Element eingegeben. Das Verfahren fährt fort, bis alle Teile des Ausdrucks in CAM-Elementen 33 gespeichert sind. Das letzte CAM-Element weist daher eine Anzahl von Auswahlfeldern 36 auf, die der Anzahl von CAM-Elementen entsprechen, die zum Speichern des Ausdrucks außer für den letzten Teil des Ausdrucks verwendet werden (falls es einen gibt). Dieses Schema ist in 2 für drei CAM-Elemente dargestellt.
  • Wenn ein Vergleichen mit dem parallelen Schema durchgeführt werden soll, wird der erste Teil des Suchausdrucks 31, Suchwort 32, mit den Inhalten der Wortfelder 34 des ersten CAM-Elements 33 verglichen. Wenn eine Übereinstimmung zwischen dem Suchwort 32 und einem CAM-Wort erhalten wird, wird der Assoziationswert 35 des CAM-Wortes als Eingabe in das letzte CAM-Element eingegeben. Die anderen Teile des Suchausdrucks 31 werden in der gleichen Weise mit den CAM-Worten der entsprechenden CAM-Elemente verglichen. Jede Übereinstimmung erzeugt einen Assoziationswert 35, der als eine Eingabe in das letzte CAM-Element verwendet wird. In dem letzten CAM-Element in dem parallelen Schema werden die Assoziationswerte 35 aller vorherigen CAM-Elemente in einen Satz von Auswahlfeldern 36 kombiniert und dieser Satz wird zusammen mit dem verbleibenden Wortfeld (falls es eines gibt) getestet.
  • Es ist selbstverständlich, dass die parallelen und seriellen Schema, die oben beschrieben sind, in komplexere Schemata kombiniert werden können. Zum Beispiel kann in einer seriellen Struktur jedes CAM-Element durch eine parallele Struktur von CAM-Elementen ersetzt werden und umgekehrt. In dieser Weise können Strukturen beliebiger Komplexität errichtet werden.
  • Eine Art eines Bildens von Schemata ist es, die CAM-Elemente mit einem Steuer-Bit bereitzustellen. Das Steuer-Bit kann verwendet werden, um anzuzeigen, ob oder ob nicht die CAM-Worte des CAM-Elements mit Auswahlfeldern bereitgestellt sind oder in anderen Worten, ob das Element dem seriellen Schema oder dem parallelen Schema folgt. Das Steuer-Bit kann zum Beispiel auf 0 gesetzt werden, falls das CAM-Element keine Auswahlfelder aufweist und auf 1, falls das CAM-Element Auswahlfelder aufweist. Schemata die einfache Kombinationen des parallelen und des seriellen Schemas sind, können mittels Verwenden eines einzelnen Steuer-Bits durchgeführt werden. Mehr als ein Steuer-Bit kann erforderlich sein, um komplexere Schemata zu bilden.
  • Im Allgemeinen benötigt das serielle Schema weniger CAM-Einträge als ein paralleles, während das parallele Schema eine Suchzeit begünstigt, insbesondere falls parallele Zweige zu unterschiedlichen physikalischen CAMs zugeordnet sind.
  • Die obigen Schemata funktionieren wie beschrieben, falls es lediglich einzelne Übereinstimmungen in den CAM-Elementen gibt, z. B. wenn die Bits des Suchwortes und der CAM-Wörter lediglich definierte Werte 0 oder 1 aufweisen können. Wenn ternäre CAMs verwendet werden, können die CAM-Worte Bit-Werte von 0,1 und X umfassen, was mehrere Übereinstimmungen ermöglicht. X entspricht sowohl 0 und 1 in dem Suchwort. Falls mehrere Übereinstimmungen möglich sind, wird lediglich die Übereinstimmung mit der höchsten Priorität in dem CAM detektiert. Dieses Wort könnte kein Teil des vollständigen Vergleichsausdrucks sein, sondern dies ist ein CAM-Wort mit niedriger Priorität.
  • Ein Beispiel davon wird in 3a gezeigt. Nehmen wir an, dass wir zwei Ausdrücke A:x0x000 und B:x01x10 mit Ausgabewerten 00 bzw. 01 haben, wie in 3a gezeigt. Nehmen wir weiter an, dass die verwendeten CAM-Elemente Wortfelder aufweisen, von denen jedes maximal vier Bits enthalten kann und die eine fallende Prioritätsreihenfolge aufweisen. In Realität können die CAM-Elemente breiter als diejenigen sein und sind dies beinahe meistens, jedoch wird hier vier für eine Klarheit verwendet. A und B werden gemäß der Erfindung derart gespeichert, dass die vier ersten Bits, CAM-Worte a0 und b0, der Ausdrücke in dem ersten CAM-Element gespeichert werden. Diesen CAM-Worten werden Ausgabewerte 00 bzw. 01 gegeben. Der Rest der Bits, CAM-Worte a1 und b1, der Ausdrücke A und B werden in dem nachfolgenden CAM-Element gespeichert, wobei den Auswahlfeldern dieser CAM-Worte die entsprechenden Werte 00 bzw. 01 gegeben wird. Die Ausgabewerte der Ausdrücke A und B werden zu dem letzten CAM-Element zugeordnet.
  • Falls ein Suchausdruck wie 001010 gegen die Inhalte des CAM-Elements verglichen werden soll, 3b, wird der Suchausdruck derart geteilt, dass die ersten vier Bits, Suchwort, mit den CAM-Worten des ersten Elements verglichen werden. Wie aus der Figur erkannt werden kann, stimmt das Suchwort sowohl mit den CAM-Worten a0 als auch b0 überein, aufgrund des X-Wertes in Bit drei und vier von a0 und b0. Jedoch wird lediglich a0 überprüft und verglichen, da es höher priorisiert ist. Die Übereinstimmung erzeugt einen Ausgabewert 00, der mit dem nachfolgenden Suchwort 10 kombiniert wird. Dies erzeugt jedoch keine Übereinstimmung in dem nachfolgenden CAM-Element, da 0010 dort nicht gespeichert ist. Dies geschieht, da die Übereinstimmung in dem ersten CAM-Element keine korrekte Übereinstimmung war.
  • Die Lösung gemäß der Erfindung ist es, die CAM-Worte in CAM-Elemente umzuwandeln, die einen zugeordneten CAM in der Art und Weise aufweisen, dass lediglich einzelne Übereinstimmungen möglich sind.
  • In 4 werden zwei CAM-Worte, A und B, als ein „Bereich" von numerischen Werten dargestellt, die CAM-Worte darstellen, mit denen sie übereinstimmen. Beachten wir, dass diese Bereiche nicht notwendigerweise zusammenhängend sind, jedoch einen Satz von Suchworten darstellen, die mit einem CAM-Wort übereinstimmen, das aus einer Anzahl von Bits besteht, bei dem die Bits die Werte 0,1 und X aufweisen können.
  • Um lediglich einzelne Übereinstimmungen zu erzielen, können A und B mit drei Ausdrücken ersetzt werden:
    • 1. Werte, die sowohl A als auch B entsprechen,
    • 2. Werte, die lediglich A entsprechen und
    • 3. Werte, die lediglich B entsprechen.
  • Gemäß der Erfindung wird ein Ausdruck „Anteil" verwendet, mit dem es möglich ist, den Ausdruck 1 zu konstruieren, das heißt, der sowohl mit A als auch mit B übereinstimmt. Der Ausdruck „Anteil" wird im Detail unten definiert und beschrieben. Es gibt jedoch keinen leichten Weg, die Fälle 2 und 3 auszudrücken.
  • Dies wird durch Verwenden der Tatsache gelöst, dass der CAM Übereinstimmungen wie oben beschrieben priorisiert, zum Beispiel werden die Ausdrücke gemäß der Reihenfolge gespeichert, siehe 5.
  • 5 stellt dar, dass die drei Bereiche in 4 durch die Ausdrücke „A∩B" (A und B) und die ursprünglichen Ausdrücke unter der Voraussetzung dargestellt werden können, dass A∩B priorisiert ist, wodurch die unerwünschten Bereiche von A und B „überschattet" werden.
  • Der Anteil von zwei Worten kann unter Verwendung des Bitweisen Operators berechnet werden, der unten in Tabelle 1 definiert ist. Falls ein oder mehrere Bits in dem Ergebnis dieses Operators die 0 enthalten, gibt es keinen Anteil.
    Figure 00160001
    Tabelle 1.
  • Nehmen wir an, dass zwei breite Ausdrücke A und B in CAM-Elementen gespeichert sind. A und B wurden in die Teile a0, a1, ... und b0, b1, ... aufgeteilt, die zu unterschiedlichen CAM-Elementen hinzugefügt werden, wie oben in Verbindung mit 3a beschrieben.
  • Falls a0∩b0 ≠∅, wie in 3a und b gezeigt, ist es erforderlich einen Anteil in dem ersten CAM-Element hinzuzufügen. Der Anteil wird durch Verwenden des Bit-Operators erzeugt und in dem in 3a–c gezeigten Beispiel enthält der Anteil den Wert X010. Um den Anteil zu priorisieren, wird dieser oberhalb der CAM-Worte angeordnet. Diesem Anteil muss weiter ein Assoziationswert zugeordnet werden, der mit den Auswahlfeldern von sowohl a1 als auch b1 übereinstimmt, um die Anteilsoperation durchzuführen.
  • Eine Weise diesen Effekt zu erzielen ist es, Kopien von a1 und b1 (bzw. a1' und b1') zu erzeugen und Auswahlfeldern zuzuordnen, die mit dem Assoziationswert von a0∩b0 übereinstimmen, 3c. In dem gezeigten Fall wird der Assoziationswert des Anteils auf 11 gesetzt, genauso wie die Auswahlfelder der Kopien.
  • Ein anderer Weg diesen Effekt zu erreichen, ist es, X-Werte in den Auswahlfeldern von a1 und b1 zu verwenden, 3d, und/oder X in einem Assoziationswert von a0∩b0, 3e, derart, dass a1 und b1 nicht kopiert werden müssen.
  • Das Konzept der Anteile kann für jede Anzahl von CAM-Worten ausgedehnt werden. Der Anteil von X CAM-Worten wird dann als der Satz von Mustern definiert, für die alle diese CAM-Worte übereinstimmen.
  • Um lediglich einzelne Übereinstimmungen zu erzielen, ist es nicht genug den Anteil von A, B und C (A∩B∩C) hinzuzufügen, da dieser lediglich den Fall abdeckt, wenn alle drei CAM-Wörter übereinstimmen. Um die Fälle abzudecken, wenn lediglich A und B, A und C oder B und C übereinstimmen, sollten wir A∩B, A∩C und B∩C hinzufügen, wie in 7 gezeigt. Im Allgemeinen sollten alle Anteile für irgendeine Anzahl und Kombination von CAM-Worten hinzugefügt werden, so dass alle Kombinationen mehrfacher Übereinstimmungen abgedeckt werden.
  • In diesem Beispiel werden die CAM-Worte B und A∩C vollständig von CAM-Worten abgedeckt, die priorisiert sind, da CAM-Worte, die höher in dem CAM sind, derart priorisiert sind, dass der Anteil priorisiert ist. B und A∩C können daher niemals ihren Wert zurückgeben und können ausgelassen werden.
  • Das Überprüfen, ob CAM-Worte sich überschneiden, kann entweder jedes Mal durchgeführt werden, wenn ein neues CAM-Wort gespeichert werden soll oder nachdem ein Satz von CAM-Worten gespeichert wird.
  • In einigen Fällen ist der resultierende Anteil von zwei sich überschneidenden CAM-Worten der gleiche wie eines der CAM-Worte. Als ein Beispiel wird ein zu speicherndes CAM-Wort 10XX gegen das CAM-Wort geprüft, das in dem CAM-Element enthalten ist. Nehmen wir an, dass eines der CAM-Worte 1XXX ist. Da sich diese überschneiden, ist gemäß der Erfindung ein Anteil aufgrund der zweiten Bits erforderlich. Jedoch ist der resultierende Anteil 10XX der gleiche wie das CAM-Wort, das gespeichert werden soll, das heißt, falls das CAM-Wort eingegeben würde, würde es vollständig von dem Anteil aufgrund der Priorität überschattet. Daher braucht das überschattete CAM-Wort nicht eingegeben zu werden und der Anteil erhält den Assoziationswert, den das CAM-Wort erhalten sollte. Es könnte ebenso sein, dass der Anteil der gleiche ist wie ein gespeichertes CAM-Wort. Aufgrund der Priorisierung überschattet der Anteil vollständig und das überschattete CAM-Wort kann entfernt werden und möglicherweise ebenso die CAM-Worte, die mit diesem verknüpft sind.
  • Für einige Anwendungen ist es möglich, die Anzahl von benötigten Anteilen durch ein Verringern der Anzahl von Einträgen, CAM-Worten, zu verringern, falls bekannte Beschränkungen und Beziehungen innerhalb von Datensätzen ausgenutzt werden können. Zum Beispiel ist es für IP-Adressen in vielen Anwendungen lediglich von Bedeutung, X'e an nachfolgenden Positionen an dem Ende des Wortes aufzuweisen. Falls es diesem Datenfeld zugewiesen wird, das einzige Feld in einem CAM-Element zu sein, überschattet jeder Anteil einen seiner Einträge, was in keinen zusätzlichen Einträgen resultiert.
  • Die Anzahl von Einträgen, die als ein Ergebnis eines Hinzufügens von Anteilen hinzugefügt werden, kann verringert werden, falls ein geeignetes Schema eines Verwendens von X-Werten in Auswahlfeldern verwendet wird. Zusätzliche Assoziationswerte können X-Werte unter Verwendung von globalen Eingabemasken enthalten. Ein Schema, das dieses verwendet, kann ebenso vorgesehen sein, um die Anzahl von Einträgen zu verringern.
  • Die vorliegende Erfindung kann in jedem Gerät implementiert sein, das zum Berechnen digitaler Information unter Verwendung von CAMs vorgesehen und verwendet wird, wie zum Beispiel Router, Allzweckcomputer und Ähnliches. Die Erfindung wird vorzugsweise in der Software des Gerätes zum Durchführen des Speicherns und Vergleichens in den CAM-Elementen implementiert. Wie zuvor erwähnt ist die Erfindung sowohl auf mehrere schmalere CAMs anwendbar, bei denen jedes CAM ein CAM-Element ist, oder dass ein großes CAM in mehrere CAM-Elemente aufgeteilt wird, oder einer Kombination von diesen. 8 zeigt ein schematisches Beispiel eines Routers 10, in dem die vorliegende Erfindung verwendet werden kann. In dem Router werden die Adressen der eingehenden Pakete bei der eingehenden Verbindung 12 in der Weiterleitungstabelle 14 (Routingtabelle) mit der Tabellennachschlagefunktion 16 überprüft, der die CAMs und die Vorrichtung zum Aufteilen der Adressinformation in Teile, die Vorrichtung zum Vergleichen der Teile in den CAM-Elementen und die Vorrichtung zum Kombinieren der Übereinstimmung in den CAM-Elementen lokalisiert sind umfasst. In Abhängigkeit des Ergebnisses des Vergleichs, werden die Pakete zu der IP-Klassifikationsfunktion 18 gesendet, die entscheidet, das IP-Paket zu verwerfen, dieses an Software zum weiteren Verarbeiten zu senden oder das Paket an die ausgebende Verbindung 20 über ein schaltendes Gerät 22 zu senden.
  • Der Ausgabewert der Übereinstimmung in dem CAM kann in diesem Zusammenhang verwendet werden, um Information von einer anderen Speichervorrichtung zu erhalten, die Information und Daten hinsichtlich der Adressen umfasst, an die die Pakete zu senden sind oder Anweisungen, wie das Paket zu behandeln oder zu verarbeiten ist. In einigen Anwendungen wird die IP-Klassifikationsfunktion vor der Tabellennachschlagefunktion angeordnet. Es kann ebenso mehrere andere Funktionen und Merkmale geben, die in dem Router zum Handhaben von Paketen umfasst sind. Da diese keinen Teil der Erfindung bilden, werden diese nicht im Detail beschrieben.
  • Das Handhaben der CAMs gemäß der vorliegenden Erfindung wird vorzugsweise in der Software des berechnenden Gerätes in der Form einer Computerprogramm-Codevorrichtung oder Software-Codeteilen implementiert, obwohl es natürlich möglich ist, die Erfindung in der Hardware des berechnenden Gerätes zu implementieren. Die Software kann in einer geeigneten Speichervorrichtung, wie zum Beispiel ROM, EPROM, RAM, SDRAM, optischen oder magnetischen Disks sowie in einer verteilten Weise gespeichert werden.
  • Es ist selbstverständlich, dass die oben beschriebenen und in den Zeichnungen gezeigten Ausführungen als nicht-beschränkende Beispiele der vorliegenden Erfindung betrachtet werden und dass der Schutzumfang durch die Patentansprüche definiert ist.

Claims (15)

  1. Verfahren zum Speichern von Ausdrücken (31) beliebiger Breite in Assoziativspeichern (CAMs – content addressable memories) (33), wobei das Verfahren die Schritte umfasst: – Teilen des Ausdrucks in eine Anzahl von fortlaufenden Teilen, die hiernach CAM-Wörter genannt werden; – Speichern jedes CAM-Wortes in einem jeweiligen CAM-Element (33), wobei die CAM-Elemente eine Anzahl von physikalischen CAMs und/oder bestimmte Teile eines physikalischen CAMS sind; – Verknüpfen jedes CAM-Wortes (32) mit den anderen CAM-Wörtern des Ausdrucks, wobei alle der verknüpften CAM-Worte den gespeicherten Ausdruck ausdrücken; – Notieren eines CAM-Wortes, das sich mit einem oder mehreren der CAM-Worte eines CAM-Elementes (33) überschneidet gekennzeichnet durch: – Erzeugen eines Wortes, hiernach Anteil (X010) genannt, für das diejenigen Bits der überschneidenden CAM-Worte (32), die einen gleichen Wert aufweisen, die entsprechenden Bits des Anteils diesen Wert empfangen und für das diejenigen Bits, die in lediglich einem der überschneidenden CAM-Worte definiert sind, die entsprechenden Bits des Anteils den definierten Wert empfangen; – Hinzufügen des Anteils zu dem CAM (33) und Speichern von diesem über seine CAM-Worte; – Zuordnen eines Assoziationswertes (35) zu dem Anteil und Setzen des Assoziationswertes, um mit den Assoziationswerten der überschneidenden Worte überein zu stimmen.
  2. Verfahren nach Anspruch 1, wobei dieses die Schritte eines Zuordnens eines Assoziationswertes (35) zu jedem CAM-Wort und Zuordnen eines Auswahlwertes zu jedem verknüpften CAM-Wort umfasst, wobei der Auswahlwert mit dem Assoziationswert übereinstimmt.
  3. Verfahren nach Anspruch 1 oder 2, wobei jedes CAM-Wort (32) mit seinem nachfolgenden CAM-Wort verknüpft wird.
  4. Verfahren nach Anspruch 1 oder 3, wobei jedes CAM-Wort (32) mit dem letzten CAM-Wort des Ausdrucks (31) verknüpft wird.
  5. Verfahren nach Anspruch 1 oder 2, wobei zumindest ein erstes CAM-Wort (32) mit seinem nachfolgenden CAM-Wort verknüpft wird und wobei zumindest ein zweites CAM-Wort mit einem dritten CAM-Wort verknüpft wird, wobei das dritte CAM-Wort ein anderes CAM-Wort als das nachfolgende CAM-Wort des zweiten CAM-Wortes ist.
  6. Verfahren nach einem der Ansprüche 1–5, wobei jedes CAM-Element (33) eine Breite aufweist, die weniger als die Breite des Ausdrucks (31) ist.
  7. Verfahren nach Anspruch 1, wobei dieses die Schritte eines Kopierens der Worte, die mit den übereinstimmenden Worten verknüpft sind und eines Zuordnens von Auswahlfeldern (36) zu den kopierten Wörtern umfasst, wobei die Auswahlfelder mit dem Assoziationswert des Anteils übereinstimmen.
  8. Verfahren nach einem der vorhergehenden Ansprüche, mit einem weiteren Schritt eines Zuordnens einer höheren Priorität zu dem Anteil (X010) als den überschneidenden Worten.
  9. Verfahren zum Vergleichen von Suchausdrücken (31) einer beliebigen Breite mit Ausdrücken, die in CAMs gespeichert sind, nach Anspruch 1, wobei das Verfahren die Schritte umfasst: – Teilen des Suchausdrucks in fortlaufende Teile, die hiernach Suchworte (32) genannt werden; – Vergleichen jedes Suchwortes mit den CAM-Worten eines jeweiligen CAM-Elementes (33) einer Anzahl von CAM-Elementen, um eine Übereinstimmung zwischen dem Suchwort (32) und einem CAM-Wort zu erhalten, gekennzeichnet durch: – Verknüpfen der Übereinstimmungen miteinander, wobei die assoziierten Übereinstimmungen dem Ausdruck (31) entsprechen; – Erhalten eines Ausgabewertes aus der Übereinstimmung.
  10. Verfahren nach Anspruch 9 und Anspruch 3, wobei eine Übereinstimmung zwischen einem Suchwortes (32) und einem CAM-Wort einen Assoziationswert (35) bereitstellt, wobei der Assoziationswert zusammen mit dem nachfolgenden Suchwort zum Vergleichen des nachfolgenden Suchwortes mit den CAM-Worten seines CAM-Elementes (33) verwendet wird.
  11. Verfahren nach Anspruch 9 und Anspruch 4, wobei eine Übereinstimmung zwischen einem Suchwort (32) und den CAM-Worten seines CAM-Elementes (33) für alle Suchworte des Ausdrucks (31) Assoziationswerte (35) mit dem letzten Suchwert des Ausdrucks bereitstellen.
  12. Verfahren nach Anspruch 9 und Anspruch 5, wobei eine Übereinstimmung zwischen zumindest einem ersten Suchwort (32) und einem CAM-Wort einen ersten Assoziationswert (35) bereitstellt, wobei der erste Assoziationswert zusammen mit dem nachfolgenden Suchwort zum Vergleichen des nachfolgenden Suchwortes mit den CAM-Worten seines CAM-Elementes (33) verwendet wird und wobei eine Übereinstimmung zwischen zumindest einem zweiten Suchwort (32) und einem CAM-Wort einen zweiten Assoziationswert (35) bereitstellt, wobei der zweite Assoziationswert zusammen mit zumindest einem anderen Assoziationswert zum Vergleichen eines der Suchworte des Ausdrucks (31) verwendet wird.
  13. Gerät (10) zum Speichern von Ausdrucken (31) einer beliebigen Breite in Assoziativspeichern (CAMs – content addressable memories) (33), mit: – einer Vorrichtung (16) zum Teilen des Ausdrucks in eine Anzahl von fortlaufenden Teilen, die hiernach CAM-Worte (32) genannte werden; – einer Vorrichtung zum Speichern jeden Wortes in einem jeweiligen CAM-Element (33), wobei die CAM-Elemente eine Anzahl physikalischer CAMs und/oder bestimmter Teile eines physikalischen CAMs sind; – einer Vorrichtung zum Verknüpfen jedes CAM-Wortes mit den anderen CAM-Worten des Ausdrucks (31), wobei alle der verknüpften CAM-Worte den gespeicherten Ausdruck ausdrücken; – einer Vorrichtung (16) zum Notieren eines CAM-Wortes, das sich mit einem oder mehreren der CAM-Worte eines CAM-Elementes überschneidet; gekennzeichnet durch: – eine Vorrichtung (16), zum Erzeugen eines Wortes, hiernach Anteil (X010) genannt, für das diejenigen Bits der überschneidenden CAM-Worte (32), die einen gleichen Wert aufweisen, die entsprechenden Bits des Anteils diesen Wert empfangen und für das diejenigen Bits, die in lediglich einem der überschneidenden CAM-Worte definiert sind, die entsprechenden Bits des Anteils den definierten Wert empfangen; – eine Vorrichtung zum Hinzufügen des Anteils zu dem CAM (33) und Speichern von diesem über seine CAM-Worte (32); – eine Vorrichtung zum Zuordnen eines Assoziationswertes (35) zu dem Anteil und Setzen des Assoziationswertes, um mit den Assoziationswerten der überschneidenden Worte überein zu stimmen.
  14. Gerät nach Anspruch 13, wobei dieses eine Vorrichtung (16) zum Zuordnen des Assoziationswertes (35) zu jedem CAM-Wort umfasst und zum Zuordnen eines Auswahlwertes zu jedem verknüpften CAM-Wort, wobei der Auswahlwert mit dem Assoziationswert übereinstimmt.
  15. Gerät (10) zum Vergleichen von Suchausdrücken (31) einer beliebigen Breite mit Ausdrücken, die in Assoziativspeichern (CAMs) (33) gespeichert sind, nach Anspruch 13, mit: – einer Vorrichtung (16) zum Teilen des Suchausdrucks in fortlaufende Teile, die hiernach Suchworte (32) genannt werden; – einer Vorrichtung (16) zum Vergleichen jedes der Suchworte mit den CAM-Worten eines jeweiligen CAM-Elementes (33) einer Anzahl von CAM-Elementen, um eine Übereinstimmung zwischen dem Suchwort und einem CAM-Wort zu erhalten, gekennzeichnet durch: – eine Vorrichtung (16) zum Verknüpfen der Übereinstimmung miteinander, wobei die verknüpften Übereinstimmungen dem Ausdruck (31) entsprechen, und – eine Vorrichtung zum Erhalten eines Ausgabewertes aus der Übereinstimmung.
DE60132117T 2001-04-03 2001-04-03 Verfahren und einrichtung zum speichern und anpassen beliebig breiter ausdrücke an inhaltsadressierbare speicher Expired - Lifetime DE60132117T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/SE2001/000719 WO2002082458A1 (en) 2001-04-03 2001-04-03 Method and device for storing and matching arbitrary wide expressions to content addresseable memories

Publications (2)

Publication Number Publication Date
DE60132117D1 DE60132117D1 (de) 2008-02-07
DE60132117T2 true DE60132117T2 (de) 2008-12-11

Family

ID=20283196

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60132117T Expired - Lifetime DE60132117T2 (de) 2001-04-03 2001-04-03 Verfahren und einrichtung zum speichern und anpassen beliebig breiter ausdrücke an inhaltsadressierbare speicher

Country Status (6)

Country Link
US (1) US7054996B2 (de)
EP (1) EP1393322B1 (de)
AT (1) ATE382182T1 (de)
DE (1) DE60132117T2 (de)
ES (1) ES2296752T3 (de)
WO (1) WO2002082458A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7177978B2 (en) * 2002-08-10 2007-02-13 Cisco Technology, Inc. Generating and merging lookup results to apply multiple features
US11461666B2 (en) * 2015-06-23 2022-10-04 Gamesys, Ltd. Systems and methods for binary tree storage

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10190744A (ja) * 1996-12-26 1998-07-21 Toshiba Corp 情報記憶装置
US6574702B2 (en) * 1999-02-23 2003-06-03 Netlogic Microsystems, Inc. Method and apparatus for determining an exact match in a content addressable memory device
US6748484B1 (en) * 1999-08-11 2004-06-08 Intel Corporation Match resolution circuit for an associative memory
CA2321466C (en) * 2000-09-29 2006-06-06 Mosaid Technologies Incorporated Priority encoder circuit and method
US6665202B2 (en) * 2001-09-25 2003-12-16 Integrated Device Technology, Inc. Content addressable memory (CAM) devices that can identify highest priority matches in non-sectored CAM arrays and methods of operating same

Also Published As

Publication number Publication date
EP1393322B1 (de) 2007-12-26
ATE382182T1 (de) 2008-01-15
WO2002082458A1 (en) 2002-10-17
ES2296752T3 (es) 2008-05-01
US7054996B2 (en) 2006-05-30
US20040111556A1 (en) 2004-06-10
EP1393322A1 (de) 2004-03-03
DE60132117D1 (de) 2008-02-07

Similar Documents

Publication Publication Date Title
DE60026229T2 (de) Verfahren und Vorrichtung für Klassifizierung von Datenpaketen
DE10393053B4 (de) Bereichsbasierte Mehrfeldkorrelation - Paketklassifizierung mit logorithmischem Zeitverhalten
DE602004011721T2 (de) Zugriffssteurungsmechanismus für Router
DE69829645T2 (de) Verfahren zur Änderung von dynamischen Entscheidungsbäume
DE60307241T2 (de) Vlan tabellenverwaltungssystem in hardwarebasierten paketvermittlungsstellen für speichereffizientes auslesen und einschreiben
DE69636761T2 (de) Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum
DE60300333T2 (de) Verfahren und Vorrichtung für ein flexibles Rahmenverarbeitungs und Klassifikationssystem
DE60029710T2 (de) Schnelle und adaptive Paketverarbeitungsvorrichtung und Verfahren unter Verwendung von Eingangspaketenszusammenfassungsinformation
DE60222575T2 (de) Verfahren zur Generierung eines DFA-Automaten, wobei Übergänge zwecks Speichereinsparung in Klassen gruppiert werden
DE60305035T2 (de) Anpassen des längsten präfix unter verwendung von baumartigen "bitmap" datenstrukturen
DE602004010976T2 (de) Datenstruktur für bereichspezifizierte Algorithmen
EP0010195B1 (de) Vorrichtung zur Adressumwandlung in einer Datenverarbeitungsanlage
DE602004010922T2 (de) Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen
DE60214670T2 (de) Verfahren und vorrichtung zur leitweglenkungstabellenverwaltung
DE10297269B4 (de) Kennzeichnung von Paketen mit einem Nachschlageschlüssel zur leichteren Verwendung eines gemeinsamen Paketweiterleitungs-Cache
DE10035043A1 (de) Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen Optimierungsanfragen
DE10058443A1 (de) Verfahren zum Klassifizieren von Datenpaketen
DE69912410T2 (de) Schnelles zeichenkettensuchen und -indizieren
DE3991231C2 (de) Vektorprozessor und Verfahren zum Suchen einer Stichwortzeichenfolge in einer Textzeichenfolge
DE10085387T5 (de) Verfahren und Vorrichtung zur Adresssuche längster Übereinstimmung
DE60118973T2 (de) Verfahren zum abfragen einer struktur komprimierter daten
DE60032674T2 (de) Verfahren zum Suchen von Adressen
DE112019002591T5 (de) Weiterleitungselement-datenebene mit flussgrössendetektor
DE102018212297A1 (de) Verwendung von programmierbaren Switching-Chips als künstliche neuronale Netzwerk Module
DE60309611T2 (de) Verfahren und Vorrichtung zur Verarbeitung von Datenpaketen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition