-
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.
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.