DE60102230T2 - Mehrfacheintragsvergleich in einem inhaltsadressierbaren speicher - Google Patents

Mehrfacheintragsvergleich in einem inhaltsadressierbaren speicher Download PDF

Info

Publication number
DE60102230T2
DE60102230T2 DE60102230T DE60102230T DE60102230T2 DE 60102230 T2 DE60102230 T2 DE 60102230T2 DE 60102230 T DE60102230 T DE 60102230T DE 60102230 T DE60102230 T DE 60102230T DE 60102230 T2 DE60102230 T2 DE 60102230T2
Authority
DE
Germany
Prior art keywords
carrier
data
comparand
signal
stored
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
DE60102230T
Other languages
English (en)
Other versions
DE60102230D1 (de
Inventor
Örjan Lars KLING
Otto Hakan AHL
Gunnar Kjell TORKELSSON
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
Publication of DE60102230D1 publication Critical patent/DE60102230D1/de
Application granted granted Critical
Publication of DE60102230T2 publication Critical patent/DE60102230T2/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
    • G11C15/04Digital 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 using semiconductor elements
    • 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

Description

  • HINTERGRUND
  • Die vorliegende Erfindung bezieht sich auf Computerspeichervorrichtungen und insbesondere auf inhaltsadressierbare Speicher.
  • Ein konventioneller inhaltsadressierbarer Speicher (CAM) 101 ist in 1 dargestellt. Ein CAM 101 kann als eine computerzugreifbare Speichervorrichtung betrachtet werden, die im Vergleich zu typischen adressierbaren Speichern einen inversen Typ eines Zugriffs aufweist. Zum Beispiel wird auf einen typischen Zufalls-Zugriffs-Speicher, bzw. Random Access Memory (RAM), mittels eines Adress-Ports zugegriffen. Man liefert eine Adresse an den Adress-Port, und der RAM liefert an seinen Ausgang den Datenwert, der auf dem Speicherplatz gespeichert ist, der durch die Adresse bezeichnet wird. Im Gegensatz greift man auf einen CAM 101 zu durch Liefern von Daten, die von Interesse sind (bezeichnet als ein "Comparand"), an einen Comparand-Eingangs-Port 103. Der Comparand wird repräsentiert als ein Dreifach-Wert für jedes Bit "0", "1" oder "*", wobei der letzte als eine Wild Card interpretiert wird. Jeder Speichereintrag 105 in dem CAM 101 schließt eine Logik ein oder gehört anderweitig dazu, die den in dem Eintrag 105 gespeicherten Wert mit dem Comparand vergleicht. (Jeder Wert wird so betrachtet, dass er auf einen Wert "*" passt.) Die resultierenden Signale, die jeweils anzeigen, ob eine Übereinstimmung aufgetreten ist, werden an einen Prioritätskodierer 107 geliefert, der eine Adresse 109 erzeugt, die einen der passenden (matching) Einträge anzeigt (z.B. die niedrigste Adresse, die zu einem passenden Eintrag 105 gehört).
  • CAMs werden zunehmend verwendet, um massive parallele Suchen über eine große Anzahl von Daten zu implementieren. Zum Beispiel erfordern in dem Internetprotokoll (IP) das Weiterleiten und Klassifizieren von Paketen jeweils eine Suche einer großen bis massiven Datenbasis. Ein IP-Weiterleitungsverweis bzw. -lookup ist das Problem des Verwendens der Bestimmungsadresse eines ankommenden Paketes, um einen passenden unter Zig-Tausenden von Routing-Tafel-Einträgen zu finden. Ist einmal ein bester passender Eintrag gefunden, wird er verwendet, um den nächsten Sprung für das Paket zu bestimmen. Die Routing-Tafel kann verschiedene passende Einträge enthalten, wobei der mit der geringsten Anzahl von "Wild Cards" als die beste Übereinstimmung (matching) betrachtet wird.
  • IP-Klassifizierung ist das mehr generelle Problem einer Verwendung ausgewählter Teile der IP und höherer Pegel-Header eines hereinkommenden Paketes, um einen passenden unter hundert bis tausend Klassifikationseinträgen zu finden. Ist einmal ein höchster Prioritätseintrag gefunden, wird er für verschiedene Zwecke verwendet, etwa Filtern, IP-Sicherheitsauswahl und virtuelles Routing.
  • Das IP-Weiterleitungslookup-Problem kann behandelt werden durch Erweitern des Basis-CAM-Prinzips, um den Bits von gespeicherten Dateneinträgen zu erlauben, Wild-Card-Werte anzunehmen. Auf diese Weise erweiterte CAMs werden Dreifach-CAMs genannt. Mit einem derartigen erweiterten CAM werden die Routing-Tafel-Einträge einer nach dem anderen direkt in dem CAM gespeichert. Die Bestimmungsadresse des Pakets wird einfach dem CAM als ein Comparand präsentiert (ohne Wild Cards), der die Übereinstimmung in einem einzelnen Zugriff durchführt. Die Adresse, die durch den CAM erzeugt wird, wird verwendet, um weitere (nicht zugehörige) Routing-Daten von einem Standard-RAM zu lesen.
  • Die Aufgabe eines Aktualisierens bzw. Updatens des CAM ist einfach, da alle Daten direkt mit einem Routing-Eintrag korrespondieren. Die einzige Berücksichtigung ist, dass Einträge in der Reihenfolge gespeichert werden sollten, die auf der Anzahl von Wild Cards beruhen. Somit kann eine Wiederplatzierung notwendig sein, wenn Updates gemacht werden.
  • Durch konventionelle CAMs wird das IP-Klassifikationsproblem verbessert, aber nicht völlig behandelt. Durch Betrachten aller möglichen Übereinstimmungsstrategien erscheint es zur Zeit, dass das triviale Verfahren einer Übereinstimmung gegen jeden Tafeleintrag durch Lesen desselben, einer nach den anderen, Performance-Erfordernissen nicht gerecht wird. Somit sind verschiedene Verfahren verwendet worden, die Baum-Repräsentationen verwenden. Insbesondere kann die Routing-Tafel in einen Baum kompiliert werden, der in einem RAM gespeichert ist. Der Baum ist von den Wurzeln bis zu den Blättern durchquert. In jedem Knoten wird ein Unterfeld der Bestimmungsadresse zusammen mit Knoten-spezifischen Daten verwendet, um zu entscheiden, welcher Zweig des Baums als der nächste Schritt ausgewählt wird. Die Routing-Einträge gehören zu einigen Knoten oder Blättern in dem Baum. Schließlich wird eine beste Übereinstimmung gefunden.
  • Das Problem bei diesen Verfahren ist, dass sie abhängig von Implementationsauswahlen entweder eine große Anzahl von Zyklen benötigen, um den Baum zu durchqueren, oder alternativ eine große Verschwendung von Speicher benötigen (einige Größenordnungen mehr als für die Einträge benötigt). Dieses Problem ist insbesondere unter Berücksichtigung des Klassifikationsproblems akut, weil die Übereinstimmungskriterien ziemlich allgemein sind und die Anzahl von Bits zum übereinstimmen sehr hoch ist. Eine mögliche Lösung ist es, das Problem in ein mehrdimensionales Suchproblem aufzuteilen, wobei jedes oder eine Anzahl von Feldern in den Headern eine Dimension repräsentiert. Vielfach einfachere Suchen werden dann in jeder Dimension durchgeführt, und die Ergebnisse werden in irgendeiner Weise in einem zweiten Schritt kombiniert. Jedoch werden verschiedene Klassifikationseinträge sich miteinander überlappen, wenn sie in eine Dimension projiziert werden, die eine außerordentliche Komplexität in beiden Schritten des Problems erzeugt.
  • Anwenden eines konventionellen CAM auf das IP-Klassifikationsproblem vereinfacht die Suche in jeder der Dimensionen. Jedoch stellt die Verwendung von konventionellen CAMs keine direkte Lösung bereit, um die Ergebnisse in dem oben beschriebenen zweiten Schritt des mehrdimensionalen Übereinstimmungsproblems zu kombinieren.
  • Wie gewöhnliche Speicher, ist ein konventioneller CAM als eine Anzahl von Einträgen angeordnet, wobei jeder ein Datenwort einer festgelegten Breite hält. Ein übereinstimmen ist begrenzt auf diese Breite. Konventionelle CAMs bieten keinen allgemeinen und schnellen Weg, um Übereinstimmungen zu einem Comparand größer als die Breite einer Zelle zu machen.
  • US 5,440,715 offenbart einen CAM, der eine Möglichkeit aufweist, um einen sequentiellen Vergleich einer variablen Anzahl von mehrfachen CAM-Worten bereitzustellen.
  • ZUSAMMENFASSUNG
  • Gemäß einem Aspekt der vorliegenden Erfindung wird das vorherige und andere Ziele erreicht durch einen inhaltsadressierbaren Speicher, der eine Matrix von Zellen umfasst, die (n+1) Spalten und m Zeilen aufweist, wobei n und m jeweils ganze Zahlen größer oder gleich 1 sind, und wobei jede Zeile von Zellen umfasst: n Datenspeicherzellen, eine Trägerspeicherzelle, eine Wortvergleichslogik und eine Trägerschreiblogik.
  • Jede der n Datenspeicherzellen umfasst: eine Speicherlogik zum Speichern eines entsprechenden einen von n Datensignalen, einen Eingang zum Empfangen eines entsprechenden einen von n Comparand-Datensignalen und eine Bit-Vergleichslogik, die ein Bit-Vergleichssignal erzeugt, das anzeigt, ob das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt.
  • Die Trägerspeicherzelle umfasst: einen ersten Eingang zum Empfangen eines Trägerdatensignals, eine Speicherlogik zum Speichern des Trägerdatensignals, einen zweiten Eingang zum Empfangen eines Träger-Comparand-Datensignals und eine Trägervergleichslogik, die ein Trägervergleichsignal erzeugt, das anzeigt, ob das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt.
  • Die Wortvergleichlogik erzeugt ein Wortvergleichsignal, das anzeigt, ob jedes der Bit-Vergleichsignale in der Zeile anzeigt, dass das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt, und dass das Trägervergleichsignal in der Zeile anzeigt, dass das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt.
  • Die Trägerschreiblogik erzeugt ein Trägerspeicherzellenschreibsignal nur, wenn das durch die Wortvergleichslogik in einer vorangegangenen Zeile von Zellen erzeugte Wortvergleichsignal anzeigt, dass jedes der Bit-Vergleichsignale in der vorangegangen Zeile anzeigt, dass das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt, und dass das Trägervergleichsignal in der vorangegangenen Zeile anzeigt, dass das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt.
  • Gemäß einem anderen Aspekt der Erfindung kann jedes der n Comparand-Datensignale und der Träger-Comparand-Datensignale ein Dreifach-Wert sein, ausgewählt aus einer Gruppe von Werten, die aus "0", "1" und "don't care" besteht, und wobei der "don't care"-Wert auf irgendeinen der Dreifach-Werte passt.
  • Gemäß einem anderen Aspekt der Erfindung umfasst die Trägerschreiblogik weiterhin einen Schreibeingangs-Port zum Empfangen eines Trägerschreibsignals, und die Trägerschreiblogik erzeugt das Trägerspeicherzellenschreibsignal nur, wenn das Trägerschreibsignal durchgesetzt wird und das durch die Wortvergleichslogik erzeugte Wortvergleichsignal in einer vorangegangenen Zeile von Zellen anzeigt, dass jedes der Bit-Vergleichsignale in der vorangegangenen Zelle anzeigt, dass das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt und dass das Trägervergleichsignal in der vorangegangenen Zeile anzeigt, dass das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt.
  • Gemäß einem anderen Aspekt der Erfindung umfasst die Wortvergleichslogik das Bit-Vergleichssignal in der Zeile, die zusammen "wire ANDed" ist.
  • Gemäß einem anderen Aspekt der Erfindung werden Techniken und Vorrichtungen zum Betreiben des erfinderischen inhaltsadressierbaren Speichers bereitgestellt. Die Betriebstechniken schließen ein: Speichern von einem oder mehreren Daten-Merkmalen bzw. -Items in dem inhaltsadressierbaren Speicher, wobei jedes Daten-Item eine Mehrzahl von Bruchteilen umfasst, die voneinander unterscheidbar sind, und wobei für jedes Daten-Item die Bruchteile in verschiedenen Zeilen des inhaltsadressierbaren Speichers gespeichert sind, Löschen des gespeicherten Trägerdatensignals in jeder der Zeilen und sequentielles Liefern von Bruchteilen eines Comparand-Daten-Items an die Eingänge an die n Datenspeicherzellen und an die zweiten Eingänge der Trägerspeicherzellen, wobei ein erster der Bruchteile des Comparand-Daten-Items einen Trägerteil umfasst, der nicht gleich einem "1"-Wert gesetzt ist, und verbleibende der Bruchteile des Comparand-Daten-Items jeweils einen Trägerteil umfassen, der gleich einem "1"-Wert gesetzt ist, wobei ein Durchsetzen von einem der Wortvergleichssignale anzeigt, dass alle der Bruchteile von einem gespeicherten Daten-Item auf die entsprechenden gelieferten Bruchteile des Comparand-Daten-Items passen.
  • Beim Praktizieren einiger Ausführungsbeispiele dieses Aspektes der Erfindung werden die Bruchteile in aufeinanderfolgenden Zeilen des inhaltsadressierbaren Speichers gespeichert.
  • Gemäß einem anderen Aspekt der Erfindung kann jeder Bruchteil des Comparand-Daten-Items umfassen: einen Comparand-Datenbruchteil, einen Comparand-Tag-Teil und einen Trägerteil. Der Comparand-Tag-Teil kann nützlich sein zum Beispiel zum Spezifizieren, welche Position der Bruchteil in der Sequenz von Bruchteilen besetzt, die das Comparand-Daten-Item ausmachen. Durch Setzen von Werten der Comparand-Tag-Teile, derart dass für jeden Bruchteil des Comparand-Daten-Items der Comparand-Tag-Teil auf einen Wert gesetzt wird, der den Bruchteil von anderen Bruchteilen des Comparand-Daten-Items unterscheidet, ist der Verwender in der Lage sicherzustellen, dass eine Übereinstimmung nur auftritt, wenn die gleichen Sequenzen von Bruchteilen in dem inhaltsadressierbaren Speicher gefunden werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Ziele und Vorteile der Erfindung werden durch Lesen der folgenden detaillierten Beschreibung in Verbindung mit den Zeichnungen verstanden, in denen
  • 1 ein Blockdiagramm eines konventionellen inhaltsadressierbaren Speichers ist,
  • 2 ein Blockdiagramm einer Speichermatrix eines konventionellen CAM ist,
  • 3 ein Blockdiagramm einer Speichermatrix ist, die gemäß einem Aspekt der Erfindung erweitert worden ist, und
  • 4 eine beispielhafte Technik zum Verwenden des erfinderischen CAM ist zum Durchführen einer Übereinstimmungsoperation über mehrere Einträge.
  • DETAILLIERTE BESCHREIBUNG
  • Die verschiedenen Merkmale der Erfindung werden nun beschrieben unter Bezugnahme auf die Figuren, in denen gleiche Teile jeweils mit gleichen Bezugszeichen bezeichnet werden.
  • Die Erfindung bezieht sich auf Verfahren und Vorrichtungen für Übereinstimmungen über mehrere Einträge in einem CAM. Gemäß einem Aspekt der Erfindung wird das erreicht durch Bereitstellen einer speziellen Trägerzellenlogik in dem Speicher. Die Trägerzellenlogik erlaubt jeder Zelle, eine Übereinstimmung zu erzeugen, die nicht nur darauf basiert, ob dieser Zelleninhalt auf einen derzeit angewendeten Comparand passt, sondern auch, ob eine benachbarte Zelle auf einen zuvor angewendeten Comparand passt.
  • Diese und andere Aspekte der Erfindung werden nun detaillierter beschrieben in Verbindung mit einer Anzahl beispielhafter Ausführungsformen. Um das Verständnis der Erfindung zu erleichtern, werden eine Anzahl von Aspekte der Erfindung beschrieben, betreffend Abfolgen von Aktionen, die durch Elemente spezialisierter Hardware oder eines Computersystems durchgeführt werden. Es wird bemerkt, dass in jedem der Ausführungsbeispiele die verschiedenen Aktionen durch spezialisierte Schaltkreise (z.B. diskrete Logik- Gatter, untereinander verbunden, um eine spezialisierte Funktion durchzuführen), durch Programmbefehle, die durch einen oder mehr Prozessoren ausgeführt werden, oder durch eine Kombination von beiden durchgeführt werden können. Darüber hinaus kann die Erfindung zusätzlich betrachtet werden als in Gänze verkörpert innerhalb jeder Form von computerlesbarem Speichermedium, das Signale gespeichert hält, die einen geeigneten Satz von Computerbefehlen repräsentieren, die einen Prozessor veranlassen, die darin beschriebene Technik auszuführen. Computerlesbare Speichermedien schließen statische oder dynamische Zufallszugriffsspeicher bzw. Random Access Memories (SRAM oder DRAM), Nur-Lesespeicher bzw. Read Only Memory (ROM), magnetische Speichermedien (z.B. Disketten, Platten oder Bänder) und optische Medien (z.B. Compact Disk ROM oder CD-ROM) ein, sind jedoch nicht darauf beschränkt. Somit werden die verschiedenen Aspekte der Erfindung in vielen verschiedenen Formen verkörpert, und all diese Formen werden als innerhalb des Schutzbereiches der Erfindung liegend betrachtet. Für jeden der verschiedenen Aspekte der Erfindung kann irgendeine derartige Form von Ausführungsbeispielen hiernach bezeichnet werden als "Logik, die" eine beschriebene Aktion durchführt.
  • Bezugnehmend auf 2 ist dies ein Blockdiagramm einer Speichermatrix 201 eines konventionellen CAM 101. Der CAM 101 ist organisiert als m Einträge, wobei jeder ein Wort von n Bits hält. Jede CAM-Zelle ui.j speichert ein Daten-Bit si,j eines Wortes i. Die n Vertikal-Datenleitungen dj halten die Comparand-Eingangsdaten während einer Übereinstimmung. Die m horizontalen "wired AND"-Leitungen, &i, berechnen das Ergebnis einer Übereinstimmung. Dieses Ergebnis wird durch Verstärker 302 verstärkt und als ein Ausgang an den Prioritäts-Codierer (in 2 nicht gezeigt) präsentiert auf m passenden Signalen mi. Die Logik zum Schreiben von Daten in die Zellen ist bekannt und für die Erfindung nicht relevant.
  • Somit wurde die Datenschreiblogik der Einfachheit halber in. der Figur ausgelassen.
  • Konventionelle CAMs können ebenso Teil-Übereinstimmungen ausführen. In diesem mehr allgemeinen Fall sind sowohl die Comparand-Daten als auch die gespeicherten Daten Dreifach-Werte {0,1,*}, wobei "*" einen "don't care"-Status repräsentiert, der auf alles passt. In der Praxis sind die n Horizontal-Datenleitungen gewöhnlich als doppelte physikalische Leitungen implementiert, wobei die Dreifach-Werte als ein Paar von binären Werten kodiert sind. Die tatsächliche Kodierung ist nicht wichtig für die Erfindung, jedoch wird in dieser Beschreibung die Abstraktion von einfachen Datenleitungen, die Dreifach-Werte tragen, aufrechterhalten.
  • Die Funktion der Zellen und die Ergebnisberechnungslogik wird in einer funktionalen Notation wie folgt definiert:
  • Zelle ui,j: &i,j = if (si,j ≈ dj) then 1 else 0
  • Result logici &i = if (∀/j &i,j=1) then 1 else 0 mi = &i wobei der Übereinstimmungsoperator ≈ gegeben ist durch: (x ≈ y) = if (x=y or x=* or y=*) then "true" else "false"
  • 3 ist ein Blockdiagramm einer ähnlichen Speichermatrix 301, die gemäß einem Aspekt der Erfindung erweitert wurde. Zusätzlich zu den oben beschriebenen Zellen ui,j ist eine spezielle CAM-Trägerzelle vi für jedes Wort i eingeführt. Jede der CAM-Trägerzellen vi speichert ein Trägerdaten-Bit ci, das das Ergebnis eines vorhergehenden Übereinstimmungsergebnisses für das vorhergehende Wort i-1 spiegelt (z.B. in der beispielhaften Ausführungsform ist das vorherige Wort das Wort unmittelbar über dem derzeit betrachteten Wort).
  • Die CAM-Trägerzelle vi partizipiert als eine gewöhnliche Zelle während einer Übereinstimmungsoperation. Für diesen Zweck wird eine Wortvergleichlogik &i bereitgestellt, die ein Wortvergleichssignal mi erzeugt, das anzeigt, ob jedes der Bit-Vergleichssignale in der Zeile anzeigt, dass das gespeicherte eine der n Datensignale si,j auf das empfangene eine der n Comparand-Datensignale dj passt, und dass das Trägervergleichssignal in der Zeile anzeigt, dass das gespeicherte Trägerdatensignal ci auf das empfangene Träger-Comparand-Datensignal d0 passt.
  • Die CAM-Trägerzelle vi kann auch als ein Ergebnis der Übereinstimmungsoperation geschrieben werden. Eine vertikale Trägerdatenleitung, cd, hält die Werte, die optional geschrieben werden müssen, und eine vertikale Trägerschreibleitung, cw, muss durchgesetzt werden, um die CAM-Trägerzellen vi bedingt zu schreiben. Die Phrase "bedingt schreiben" wurde im vorangegangenen Satz verwendet, weil die cw-Leitung nicht selbst bestimmt, ob der Wert auf der cd-Leitung in eine CAM-Trägerzelle vi getaktet wird. Vielmehr wird für jede der CAM-Trägerzellen vi eine Trägerschreiblogik 303 bereitgestellt, die ein Trägerschreibsignal cwi erzeugt, das ermöglicht, dass die Trägerschreiboperation durchgeführt, wenn, und nur wenn, die Trägerschreibleitung, cw, aktiv ist und eine Übereinstimmung für das unmittelbar vorherige Wort i-1 vorliegt (die letztere Bedingung wird angezeigt durch die Durchsetzung des Übereinstimmungssignals mi–1). In der beispielhaften Ausführungsform ist die Trägerschreiblogik 303 als ein logisches AND-Gatter implementiert. In alternativen Ausführungsformen können jedoch äquivalente Logikkonfigurationen anstelle dessen verwendet werden.
  • Die Funktion der Zellen ui,j und vi und die Ergebnisberechnungslogik für die beispielhafte Ausführungsform der Erfindung ist durch das Folgende gegeben:
  • Zelle ui,j &i,j = if (si,j ≈ dj) then 1 else 0, for j ∊ {1..n}
  • Trägerzelle vi: &i,o = if (ci ≈ d0) then 1 else 0 ci' = if (cw=1 and mi–1=1) then cd else ci
  • Result logici &i = if (∀j &i,j=1) then 1 else 0 mi = &i wobei der Übereinstimmungsoperator ≈ wieder gegeben ist durch: (x ≈ y) = if (x=y or x=* or y=*) then "true" else "false", und wobei die Notation ci' den Wert von ci in dem nächsten Taktzyklus bezeichnet.
  • Man bemerke, dass m0 als ein neuer Eingang zu der Zellenmatrix eingegeben wurde. Der Wert von m0 ist 0, solange nicht anderweitig bezeichnet. Weiterhin wurde eine weitere Horizontaldatenleitung d0 als ein neuer Eingang in die Zellenmatrix eingeführt zum Tragen des Comparand-Werts, der zu jeder der CAM-Trägerzellen vi geliefert wird.
  • Die oben unter Bezugnahme auf 3 beschriebene beispielhafte Vorrichtung kann für eine Übereinstimmung über mehrfache Einträge verwendet werden. Eine beispielhafte Technik, um dieses auszuführen, wird nun unter Bezugnahme auf 4 beschrieben. Ein gespeichertes Datenmerkmal, das mehr als einen einfachen Eintrag besetzt, wird in q kleinere Bruchteile geteilt, die mit S1 bis Sq bezeichnet werden. Ein einzigartiger Tag-Wert t, der von 1 bis q reicht, wird für jede Art des Bruchteils eingeführt. Jeder Eintrag in dem CAM hält einen Datenbruchteil, hinzugefügt durch seinen korrespondierenden Tag-Wert. Bruchteile, die zu den gleichen Originaldaten gehören, werden in aufeinanderfolgenden Einträgen gespeichert (z.B. unmittelbar aufeinanderfolgend) und in der inneren Reihenfolge ihrer korrespondierenden Tag-Werte. Die Bruchteile und ihre korrespondierenden Tags werden den konventionellen CAM-Zellen ui,n...ui,1 gespeichert. Eine hinreichende Anzahl von konventionellen CAM-Zellen sollten den Tag-Bits zugewiesen sein, um zu erlauben, dass sie die den höchsten Tag-Wert q repräsentieren. Die verbleibenden konventionellen CAM-Zellen für jedes Wort können zugewiesen sein zum Speichern einer der Bruchteile. Die CAM-Trägerzelle vi speichert anfänglich einen unbekannten Wert, der in 4 durch das "?"-Symbol gezeigt ist.
  • Der Comparand-Wert ist ähnlich in korrespondierende Bruchteile geteilt, die hier mit D1 bis Dq bezeichnet werden. Für jeden der Comparand-Bruchteile D1 bis Dq repräsentieren einige der Bits Bruchteildaten, die passen, andere Bits repräsentieren Tag-Bits, die passen, und noch andere Bits repräsentieren ein Träger-Bit, das passt. Der Zweck der Tag-Bits ist es, das Markieren von Bruchteilen als zugehörig zu einer besonderen Position zu ermöglichen (z.B. erste, zweite, dritte,...) innerhalb des vollständig gespeicherten Datenmerkmals, so dass, wenn eine Übereinstimmungsoperation durchgeführt wird, ein Comparand-Wert nicht nur den gewünschten Bruchdatenteil spezifizieren kann, sondern auch den Tag-Wert zum Anzeigen, welcher Bruchteil gesucht wird.
  • Der Algorithmus zum übereinstimmen über die mehrfachen Bruchteile kann wie folgt spezifiziert werden (wobei der Text rechts von dem "/*" einen Kommentar anzeigt):
    • Lasse D den durch dn...do gebildeten Bit-Vektor bezeichnen und lasse <x,y,z> die Teilung dieses Vektors sein in x = der Comparand-Datenbruchteil,
    • dd...dt+i y = der Comparand-Tag-Teil dt...di; und z = der Trägerteil do, wobei t die Anzahl von Bits in dem Tag ist.
    • Do Zyklus 0: d=<*,*,*>, cd=0, cw=1, m0=1 /* lösche alle Träger-Bits Zyklus 1: d=<D1,1,*>, cd=1, cw=1 Zyklen 2 bis q: For p=2 to q do Zyklus p: D=<DP,p,1>, cd=1, cw=1 /* Übereinstimmungsdaten /* Tag und vorherige Übereinstimmungen
  • In Zyklus 0 sind die Comparand-Daten "don't care", was bedeutet, dass jeder Eintrag passt. Als ein Ergebnis werden alle Trägerzellen mit einem 0-Wert initialisiert.
  • In Zyklus 1 wird der erste Bruchteil des Comparands, hinzugefügt durch einen Tag-Wert von 1 und einen "don't care"-Wert auf dem Trägerteil, auf den Comparand-Datenleitungen dargestellt. Alle Einträge, die einen ersten Datenbruchteil aufweisen, der auf die ersten Comparand-Daten passt, werden passen. Das Ergebnis ist, dass für jeden derartigen Eintrag die Trägerzelle des nächsten Eintrags, die den zweiten Datenbruchteil hält, mit einem "1"-Wert geschrieben wird.
  • In Zyklus 2 wird der erste Bruchteil des Comparands, fortgesetzt durch einen Tag-Wert von 2 und einen Trägerwert von 1, auf den Comparand-Datenleitungen dargestellt. Alle Einträge, die einen zweiten Datenbruchteil aufweisen, der auf den zweiten Comparand-Daten passt, und für die der vorherige Eintrag eine Übereinstimmung in dem vorherigen Zyklus darstellte, werden passen. Das Ergebnis ist, dass für jeden derartigen Eintrag die Trägerzelle des nächsten Eintrags, die den dritten Datenteil hält, mit einem "1"-Wert geschrieben wird.
  • Dieselbe Art von Operation wird für alle verbleibenden Bruchteile ausgeführt. Das Ergebnis in jedem Zyklus ist, dass das Träger-Bit in dem nächsten Zyklus geschrieben wird, wenn Übereinstimmungen für alle vorherigen Bruchteile vorlagen. Somit wird in dem letzten Zyklus nur eine Übereinstimmung bei einem Eintrag vorliegen, wenn alle Bruchteile, die zu den gleichen original gespeicherten Daten gehören, auf die korrespondierenden Bruchteile der Comparand-Daten in geeigneter Reihenfolge passen.
  • Folglich stellt am Ende des letzten Zyklus ein Prioritätskodierer, wie der in 1 gezeigte Prioritätskodierer 107, die Adresse des letzten Bruchteils von vollständig gespeicherten Daten dar, die auf einen vollständigen Operand passen.
  • Die Erfindung ist nützlich zum Speichern und übereinstimmen gegen beliebig lange Daten in einem CAM. Für einige spezielle Fälle können andere spezifische Verfahren verwendet werden, um auf lange Daten zu passen, die wiederholte Zugriffe auf den CAM verwenden. Jedoch ist die Wartezeit viel höher und der Speicherverbrauch oft höher.
  • Die Erfindung kann in allen technischen Gebieten verwendet werden, die ein zeitkritisches, nicht-triviales Übereinstimmungsproblem enthalten. Ein Beispiel ist das IP-Klassifikationsproblem, das in Internet-Routern vorliegt, wie in dem HINTERGRUND-Kapitel beschrieben. Um den erfinderischen CAM anzuwenden, um ein derartiges Problem zu lösen, werden verschieden relevante Felder von Klassifikationseinträgen in aufeinanderfolgenden Adressen des CAM gespeichert. Der erfinderische CAM erlaubt, dass logische "AND"-Bedingungen durchgeführt werden zwischen aufeinanderfolgenden Einträgen über verschiedene Zyklen, und erlaubt somit ein übereinstimmen von beliebig langen Daten. Das Ergebnis ist unmittelbar erhältlich als eine Adresse nach dem letzten Zyklus, ohne dass irgendeine Kombination von Ergebnissen benötigt wird.
  • In anderen Aspekten der Erfindung können Datenbruchteile, andere als der erste und der letzte, ausgelassen werden, bei denen alle Bits einen "don't care"-Wert aufweisen.
  • In noch einem anderen Aspekt der Erfindung brauchen die Tag-Werte nicht ein solcher zu sein, wie in den obigen beispielhaften Ausführungsbeispielen gezeigt ist. Anstelle dessen werden irgendwelche Werte es tun, solange die Reihenfolge zwischen verschiedenen Arten von Bruchteilen gehalten wird. Anders ausgedrückt kann für jeden Bruchteil des Comparand-Datenmerkmals der Comparand-Tag-Teil auf irgendeinen Wert gesetzt werden, der den Bruchteil von anderen Bruchteilen des Comparand-Datenmerkmals unterscheidet. In dem Übereinstimmungsalgorithmus bedeutet dies, dass die Konstanten 1 bis q, die für den Tag verwendet werden, durch unterscheidbare Variablen T1 bis Tq ersetzt werden können.
  • Diese Flexibilität beim Spezifizieren der Tag-Werte erlaubt dem erfinderischen CAM angewendet zu werden, um das Problem von Übereinstimmung von einer Mehrzahl von verschiedenen Comparand-Datenmerkmalen effizient zu lösen, wobei jede der Comparand-Datenmerkmalen einen gemeinsamen Teil und einen nicht-gemeinsamen Teil aufweist. Der gemeinsame Teil ist der gleiche für alle Comparand-Datenmerkmale, wobei der nicht-gemeinsame Teil eines Comparand-Datenmerkmals unterschiedlich zu den nicht-gemeinsamen Teilen der anderen Datenmerkmale ist. Dies ist nützlich bei dem IP-Klassifikationsproblem, das in Internet-Routern vorliegt, wie in dem HINTERGRUND-Kapitel beschrieben. Beispielsweise, angenommen, es ist gewünscht, drei Klassifikationen durchzuführen, die als R, S und T bezeichnet sind, und dass A, B, C, D, E, F und G verschiedene Parameter zum übereinstimmen sind. Nun angenommen, dass:
    • R passen soll mit A, B, C, D;
    • S passen soll mit A, B, C, E; und
    • T passen soll mit A, B, F, G.
  • Natürlich könnte man diese Klassifikationen sequentiell durchführen, jedes mal aufeinanderfolgend über alle vier Parameter. Jedoch erlaubt die Struktur des erfinderischen CAM, die Klassifikationen effizienter durchzuführen durch Darstellen der Parameter (zusammen mit ihren entsprechenden Tags) als Comparand-Datenmerkmale an den CAM in der folgenden Reihenfolge:
    • Rücksetzzyklus (löscht alle Träger-Bits)
    • Comparand-Datenmerkmal = A
    • Comparand-Datenmerkmal = B
    • Comparand-Datenmerkmal = C
    • Comparand-Datenmerkmal = D und verwende Ergebnis zum Verweis auf Ergebnis von R
    • Comparand-Datenmerkmal = E und verwende Ergebnis zum Verweis auf Ergebnis von S
    • Comparand-Datenmerkmal = F
    • Comparand-Datenmerkmal = G und verwende Ergebnis zum Verweis auf Ergebnis von T.
  • Es wird beobachtet, dass die obige Strategie in Teilen effektiv ist, weil nach ihrer anfänglichen Rücksetzung an keinem Punkt des Prozesses Träger-Bits nachfolgend zurückgesetzt werden. Folglich bleibt ein Träger-Bit gesetzt, wenn es einmal anzeigt, dass die Sequenz A, B, C gefunden wurde, und erlaubt somit, dass Comparand-Datenmerkmale D und E, individuell getestet werden. Ähnlich bleibt das Träger-Bit gesetzt, das anzeigt, dass die Sequenz A, B platziert wurde, und erlaubt somit das spätere Testen für die verbliebenen Parameter F und G.
  • Die Erfindung wurde beschrieben unter Bezugnahme auf eine besondere Ausführungsform. Jedoch wird es dem Fachmann hinlänglich klar sein, dass es möglich ist, die Erfindung in anderen spezifischen Formen als denen der oben beschriebenen bevorzugten Ausführungsform auszuführen. Dies kann getan werden, ohne von dem Schutzumfang der Erfindung abzurücken.
  • Zum Beispiel wird es hinlänglich deutlich für den gewöhnlichen Fachmann, dass, während eine beispielhafte Ausführungsform der Erfindung in den Begriffen "Zeilen" und "Spalten" einer Matrix von Zellen beschrieben wurde, alternative Ausführungsformen abgeleitet werden können durch Auswechseln der Funktionen von Zeilen und Spalten. Folglich sollen die Begriffe "Zeilen" und "Spalten" in einer allgemeineren Bedeutung bezüglich der ersten und zweiten orthogonalen Richtungen verstanden werden, so wie sie in der Beschreibung als auch in den Ansprüchen verwendet wurden.
  • Ähnlich stellt die beispielhafte Ausführungsform Daten dar, die in aufeinanderfolgenden Zeilen in einer von-oben-nach-unten-Richtung gespeichert sind. Jedoch können alternative Ausführungsformen der Erfindung leicht angeordnet werden, um in anderen Richtungen, wie etwa von unten-nach-oben zu funktionieren. Folglich soll die Verwendung der Begriffe innerhalb dieser Beschreibung ebenso wie in den Ansprüchen, wie etwa "vorherige", "nächste" und dergleichen, nicht derart begriffen werden, dass sie nur die Richtungen in dem beispielhaften Ausführungsbeispiel darstellen, sondern sollen anstelle dessen sich allgemeiner auf das beziehen, was als "vorherige" oder "nächste" (etc.) bezeichnet wird relativ zu einer vorbestimmten Ausrichtung, ungeachtet dessen, ob die vorbestimmte Ausrichtung eine von-oben-nach-unten, von-unten-nach-oben oder eine andere ist.
  • Somit ist das bevorzugte Ausführungsbeispiel nur illustrativ und soll nicht in irgendeiner Weise restriktiv betrachtet werden. Der Schutzbereich der Erfindung wird durch die nachfolgenden Ansprüche im Lichte der vorangegangenen Beschreibung gegeben.

Claims (14)

  1. Ein inhaltsadressierbarer Speicher, umfassend: eine Matrix von Zellen, die (n+1) Spalten und m Zeilen aufweist, wobei n und m jeweils ganze Zahlen größer oder gleich 1 bzw. 2 sind und wobei jede Zeile von Zellen umfasst: n Datenspeicherzellen, jede umfassend: eine Speicherlogik zum Speichern eines jeweiligen von n Datensignalen; einen Eingang zum Empfangen eines jeweiligen von n Comparand-Datensignalen; und eine Bit-Vergleichslogik, die ein Bit-Vergleichssignal erzeugt, das anzeigt, ob das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt; eine Trägerspeicherzelle umfassend: einen ersten Eingang zum Empfangen eines Trägerdatensignals; eine Speicherlogik zum Speichern des Trägerdatensignals; einen zweiten Eingang zum Empfangen eines Träger-Comparand-Datensignals; und eine Trägervergleichslogik, die ein Trägervergleichssignal erzeugt, das anzeigt, ob das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt; eine Wortvergleichslogik, die ein Wortvergleichssignal erzeugt, das anzeigt, ob jedes der Bit-Vergleichssignale in der Zeile anzeigt, dass das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt und dass das Trägervergleichssignal in der Zeile anzeigt, dass das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt; und eine Trägerschreiblogik, die ein Trägerspeicherzellenschreibsignal nur erzeugt, wenn das durch die Wortvergleichslogik erzeugte Wortvergleichssignal in einer vorangegangenen Zeile von Zellen anzeigt, dass jedes der Bit-Vergleichssignale in der vorangegangenen Zeile anzeigt, dass das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt und dass das Trägervergleichssignal in der vorangegangenen Zeile anzeigt, dass das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt.
  2. Inhaltsadressierbarer Speicher gemäß Anspruch 1, wobei: jedes der n Comparand-Datensignale und der Träger-Comparand-Datensignale ein Dreifachwert ist, der aus einer Gruppe von Werten ausgewählt wird, die aus "0", "1" und "don't care" besteht; und der "don't care"-Wert auf irgendeinen der Dreifachwerte passt.
  3. Inhaltsadressierbarer Speicher nach Anspruch 1, wobei die Trägerschreiblogik weiterhin einen Schreibeingangsport zum Empfangen eines Trägerschreibsignals umfasst, und wobei die Trägerschreiblogik das Trägerspeicherzellenschreibsignal nur erzeugt, wenn das Trägerschreibsignal durchgesetzt wird und das wortvergleichssignal, das durch die Wortvergleichslogik erzeugt wird, in einer vorangegangenen Zeile von Zellen anzeigt, dass jedes der Bit-Vergleichssignale in der vorangegangenen Zeile anzeigt, dass das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt und dass das Trägervergleichssignal in der vorangegangenen Zeile anzeigt, dass das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt.
  4. Inhaltsadressierbarer Speicher nach Anspruch 1, wobei die Wortvergleichslogik die Bit-Vergleichssignale in der Zeile, die zusammen "wire ANDed" ist, umfasst.
  5. Verfahren zum Betreiben eines inhaltsadressierbaren Speichers, der eine Matrix von Zellen umfasst, die (n+1) Spalten und m Zeilen umfasst, wobei n und m jeweils ganze Zahlen größer oder gleich 1 bzw. 2 sind, und wobei jede Zeile von Zellen umfasst: n Datenspeicherzellen, jede umfassend: eine Speicherlogik zum Speichern eines jeweiligen von n Datensignalen; einen Eingang zum Empfangen eines jeweiligen von n Comparand-Datensignalen; und eine Bit-Vergleichslogik, die ein Bit-Vergleichssignal erzeugt, das anzeigt, ob das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt; eine Trägerspeicherzelle, umfassend: einen ersten Eingang zum Empfangen eines Trägerdatensignals; eine Speicherlogik zum Speichern des Trägerdatensignals; einen zweiten Eingang zum Empfangen eines Träger-Comparand-Datensignals; und eine Trägervergleichslogik, die ein Trägervergleichssignal erzeugt, das anzeigt, ob das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt; eine Wortvergleichslogik, die ein Wortvergleichssignal erzeugt, das anzeigt, ob jedes der Bit-Vergleichssignale in der Zeile anzeigt, dass das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt und dass das Trägervergleichssignal in der Zeile anzeigt, dass das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt; und eine Trägerschreiblogik, die ein Trägerspeicherzellenschreibsignal nur erzeugt, wenn das Wortvergleichssignal, das durch die Wortvergleichslogik erzeugt wird, in einer vorangegangenen Zeile von Zellen anzeigt, dass jedes der Bit-Vergleichssignale in der vorangegangenen Zeile anzeigt, dass das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt und dass das Trägervergleichssignal in der vorangegangenen Zeile anzeigt, dass das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt, wobei das Verfahren umfasst: Speichern eines oder mehrerer Datenmerkmale in dem inhaltsadressierbaren Speicher, wobei jedes Datenmerkmal eine Mehrzahl von Bruchteilen umfasst, die von einander unterscheidbar sind, und wobei für jedes Datenmerkmal die Bruchteile in verschiedenen Zeilen des inhaltsadressierbaren Speichers gespeichert sind; Löschen des gespeicherten Trägerdatensignals in jeder der Zeilen; und sequenzielles Liefern der Bruchteile eines Comparand-Datenmerkmals zu den Eingängen zu den n Datenspeicherzellen und zu den zweiten Eingängen der Trägerspeicherzellen; wobei: ein erster der Bruchteile der Comparand-Datenmerkmale einen Trägerteil umfasst, der nicht gleich eines "1"-Wertes gesetzt ist; und die verbliebenen der Bruchteile des Comparand-Datenmerkmals jeweils einen Trägerteil umfassen, der gleich einem "1"-Wert gesetzt ist, wodurch eine Durchsetzung von einem der Wortvergleichssignale anzeigt, dass alle der Bruchteile eines gespeicherten Datenmerkmals auf die jeweiligen gelieferten Bruchteile des Comparand-Datenmerkmals passen.
  6. Verfahren gemäß Anspruch 5, wobei die Bruchteile in aufeinander folgenden Zeilen des inhaltsadressierbaren Speichers gespeichert sind.
  7. Verfahren gemäß Anspruch 5, wobei jeder Bruchteil der Comparand-Datenmerkmale umfasst: einen Comparand-Datenbruchteil; einen Comparand-Tag-Teil; und einen Trägerteil.
  8. Verfahren gemäß Anspruch 7, wobei für jeden Bruchteil des Comparand-Datenmerkmals der Comparand-Tag-Teil auf einen Wert gesetzt ist, der den Bruchteil von anderen Bruchteilen des Comparand-Datenmerkmals unterscheidet.
  9. Eine Vorrichtung zum Betreiben eines inhaltsadressierbaren Speichers, der umfasst: eine Matrix von Zellen, die (n+1) Spalten und m Zeilen aufweist, wobei n und m jeweils ganze Zahlen größer oder gleich 1 bzw. 2 sind und wobei jede Zeile von Zellen umfasst n Datenspeicherzellen, jede umfassend: eine Speicherlogik zum Speichern eines jeweiligen von n Datensignalen; einen Eingang zum Empfangen eines jeweiligen von n Comparand-Datensignalen; und eine Bit-Vergleichslogik, die ein Bit-Vergleichssignal erzeugt, das anzeigt, ob das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt; eine Trägerspeicherzelle umfassend: einen ersten Eingang zum Empfangen eines Trägerdatensignals; eine Speicherlogik zum Speichern des Trägerdatensignals; einen zweiten Eingang zum Empfangen eines Träger-Comparand-Datensignals; und eine Trägervergleichslogik, die ein Trägervergleichssignal erzeugt, das anzeigt, ob das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt; eine Wortvergleichslogik, die ein Wortvergleichssignal erzeugt, das anzeigt, ob jedes der Bit-Vergleichssignale in der Zeile anzeigt, dass das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt und dass das Trägervergleichssignal in der Zeile anzeigt, dass das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt; und eine Trägerschreiblogik, die ein Trägerspeicherzellenschreibsignal nur erzeugt, wenn das Wortvergleichssignal, das durch die Wortvergleichslogik erzeugt wird, in einer vorangegangenen Zeile von Zellen anzeigt, dass jedes der Bit-Vergleichssignale in der vorangegangenen Zeile anzeigt, dass das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt und dass das Trägervergleichssignal in der vorangegangenen Zeile anzeigt, dass das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt, wobei die Vorrichtung umfasst: eine Logik, die ein oder mehrere Datenmerkmale in dem inhaltsadressierbaren Speicher speichert, wobei jedes Datenmerkmal eine Mehrzahl von Bruchteilen umfasst, die von einander unterscheidbar sind, und wobei für jedes Datenmerkmal die Bruchteile in verschiedenen Zeilen des inhaltsadressierbaren Speichers gespeichert sind; eine Logik, die das gespeicherte Trägerdatensignal in jeder der Zeilen löscht; und eine Logik, die sequenziell Bruchteile eines Comparand-Datenmerkmals zu den Eingängen der n Datenspeicherzellen und zu den zweiten Eingängen der Trägerspeicherzellen liefert, wobei: ein erster der Bruchteile des Comparand-Datenmerkmals einen Trägerteil umfasst, der nicht gleich einem "1"-Wert gesetzt ist; und verbliebene der Bruchteile des Comparand-Datenmerkmals jeweils einen Trägerteil umfassen, der gleich einem "1"-Wert gesetzt ist, wodurch eine Durchsetzung von einem der Wortvergleichssignale anzeigt, dass alle der Bruchteile eines gespeicherten Datenmerkmals auf die jeweiligen gelieferten Bruchteile des Comparand-Datenmerkmals passen.
  10. Vorrichtung gemäß Anspruch 9, wobei die Bruchteile in aufeinanderfolgenden Zeilen des inhaltsadressierbaren Speichers gespeichert sind.
  11. Vorrichtung gemäß Anspruch 9, wobei jeder Bruchteil des Comparand-Datenmerkmals umfasst: einen Comparand-Datenbruchteil; einen Comparand-Tag-Teil; und einen Trägerteil.
  12. Vorrichtung gemäß Anspruch 11, wobei für jeden Bruchteil des Comparand-Datenmerkmals der Comparand-Tag-Teil auf einen Wert gesetzt wird, der den Bruchteil von anderen Bruchteilen des Comparand-Datenmerkmals unterscheidet.
  13. Ein Verfahren zum Betreiben eines inhaltsadressierbaren Speichers, der eine Matrix von Zellen umfasst, die (n+1) Spalten und m Zeilen aufweist, wobei n und m jeweils ganze Zahlen größer oder gleich 1 bzw. 2 sind, wobei jede Zeile von Zellen umfasst: n Datenspeicherzellen, jede umfassend: eine Speicherlogik zum Speichern eines jeweiligen von n Datensignalen; einen Eingang zum Empfangen eines jeweiligen von n Comparand-Datensignalen; und eine Bit-Vergleichslogik, die ein Bit-Vergleichssignal erzeugt, das anzeigt, ob das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt; eine Trägerspeicherzelle umfassend: einen ersten Eingang zum Empfangen eines Trägerdatensignals; eine Speicherlogik zum Speichern des Trägerdatensignals; einen zweiten Eingang zum Empfangen eines Träger-Comparand-Datensignals; und eine Trägervergleichslogik, die ein Trägervergleichssignal erzeugt, das anzeigt, ob das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt; eine Wortvergleichslogik, die ein Wortvergleichssignal erzeugt, das anzeigt, ob jedes der Bit-Vergleichssignale in der Zeile anzeigt, dass das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt und dass das Trägervergleichssignal in der Zeile anzeigt, dass das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt; und eine Trägerschreiblogik, die ein Trägerspeicherzellenschreibsignal nur erzeugt, wenn das Wortvergleichssignal, das durch die Wortvergleichslogik erzeugt wird, in einer vorangegangenen Zeile von Zellen anzeigt, dass jedes der Bit-Vergleichssignale in der vorangegangenen Zeile anzeigt, dass das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt und dass das Trägervergleichssignal in der vorangegangenen Zeile anzeigt, dass das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt, wobei das Verfahren umfasst: Speichern eines oder mehrerer Datenmerkmale in dem inhaltsadressierbaren Speicher speichert, wobei jedes Datenmerkmal eine Mehrzahl von Bruchteilen umfasst, die unterscheidbar von einander sind, und wobei für jedes Datenmerkmal die Bruchteile in verschiedenen Zeilen des inhaltsadressierbaren Speichers gespeichert sind; Löschen der gespeicherten Trägerdatensignale in jeder der Zeilen; sequenzielles Liefern von einem oder mehreren gemeinsamen Bruchteilen und einem oder mehreren nicht gemeinsamen Bruchteilen eines ersten Comparand-Datenmerkmals zu den Eingängen der n Datenspeicherzellen und der zweiten Eingänge der Trägerspeicherzellen, wobei: ein erster der gemeinsamen Bruchteile des ersten Comparand-Datenmerkmals einen Trägerteil umfasst, der nicht gleich einem "1"-Wert gesetzt ist; verbliebene der gemeinsamen Bruchteile des ersten Comparand-Datenmerkmals jeweils einen Trägerteil umfassen, der gleich einem "1"-Wert gesetzt ist, und der eine oder mehrere erste nicht gemeinsame Bruchteile des ersten Comparand-Datenmerkmals jeweils einen Trägerteil umfassen, der gleich einem "1"-Wert gesetzt ist, wodurch eine Durchsetzung von einem der Wortvergleichssignale anzeigt, dass alle der Bruchteile eines gespeicherten Datenmerkmals auf die jeweiligen gelieferten gemeinsamen und ersten nicht gemeinsamen Bruchteile des ersten Comparand-Datenmerkmals passen; und sequenzielles Liefern eines oder mehrerer zweiter nicht gemeinsamer Bruchteile eines zweiten Comparand-Datenmerkmals zu den Eingängen der n Datenspeicherzellen und zu den zweiten Eingängen der Trägerspeicherzellen, wobei die einen oder mehreren zweiten nicht gemeinsamen Bruchteile des zweiten Comparand-Datenmerkmals jeweils einen Trägerteil umfassen, der gleich eines "1"-Wertes gesetzt ist, wodurch eine Durchsetzung von einem der Wortvergleichssignale anzeigt, dass alle der Bruchteile des gespeicherten Datenmerkmals auf die jeweiligen gelieferten gemeinsamen und zweiten nicht gemeinsamen Bruchteile des zweiten Comparand-Datenmerkmals passen.
  14. Eine Vorrichtung zum Betreiben eines inhaltsadressierbaren Speichers, der umfasst: eine Matrix von Zellen, die (n+1) Spalten und m Zeilen aufweist, wobei n und m jeweils ganze Zahlen größer oder gleich 1 bzw. 2 sind und wobei jede Zeile von Zellen umfasst: n Datenspeicherzellen, jeweils umfassend: eine Speicherlogik zum Speichern eines jeweiligen von n Datensignalen; einen Eingang zum Empfangen eines jeweiligen von n Comparand-Datensignalen; und eine Bit-Vergleichslogik, die ein Bit-Vergleichssignal erzeugt, das anzeigt, ob das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt; eine Trägerspeicherzelle umfassend: einen ersten Eingang zum Empfangen eines Trägerdatensignals; eine Speicherlogik zum Speichern des Trägerdatensignals; einen zweiten Eingang zum Empfangen eines Träger-Comparand-Datensignals; und eine Trägervergleichslogik, die ein Trägervergleichssignal erzeugt, das anzeigt, ob das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt; eine Wortvergleichslogik, die ein Wortvergleichssignal erzeugt, das anzeigt, ob jedes der Bit-Vergleichssignale in der Zeile anzeigt, dass das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt und dass das Trägervergleichssignal in der Zeile anzeigt, dass das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt; und eine Trägerschreiblogik, die ein Trägerspeicherzellenschreibsignal nur erzeugt, wenn das Wortvergleichssignal, das durch die Wortvergleichslogik erzeugt wird, in einer vorangegangenen Zeile von Zellen anzeigt, dass jedes der Bit-Vergleichssignale in der vorangegangenen Zeile anzeigt, dass das gespeicherte eine der n Datensignale auf das empfangene eine der n Comparand-Datensignale passt, und dass das Trägervergleichssignal in der vorangegangenen Zeile anzeigt, dass das gespeicherte Trägerdatensignal auf das empfangene Träger-Comparand-Datensignal passt, wobei die Vorrichtung umfasst: eine Logik, die ein oder mehrere Datenmerkmale in dem inhaltsadressierbaren Speicher speichert, wobei jedes Datenmerkmal eine Mehrzahl von Bruchteilen umfasst, die von einander unterscheidbar sind, und wobei für jedes Datenmerkmal die Bruchteile in verschiedenen Zeilen des inhaltsadressierbaren Speichers gespeichert sind; eine Logik, die das gespeicherte Trägerdatensignal in jeder der Zeilen löscht; eine Logik, die sequenziell einen oder mehrere gemeinsame Bruchteile und einen oder mehrere nicht gemeinsame Bruchteile eines ersten Comparand-Datenmerkmals zu den Eingängen der n Datenspeicherzellen und zu den zweiten Eingängen der Trägerspeicherzellen liefert, wobei: ein erster der gemeinsamen Bruchteile des ersten Comparand-Datenmerkmals einen Trägerteil umfasst, der nicht gleich einem "1"-Wert gesetzt ist; verbliebene der gemeinsamen Bruchteile des ersten Comparand-Datenmerkmals jeweils einen Trägerteil umfassen, der gleich eines "1"-Wertes gesetzt ist; und der eine oder mehrere erste nicht gemeinsame Bruchteile von dem ersten Comparand-Datenmerkmal jeweils einen Trägerteil umfassen, der gleich einem "1"-Wert gesetzt ist, wodurch eine Durchsetzung von einem der Wortvergleichssignale anzeigt, dass alle der Bruchteile eines gespeicherten Datenmerkmals auf die jeweiligen gelieferten gemeinsamen und ersten nicht gemeinsamen Bruchteile des ersten Comparand-Datenmerkmals passen; und eine Logik, die sequenziell einen oder mehrere zweite nicht gemeinsame Bruchteile eines zweiten Comparand-Datenmerkmals zu den Eingängen der n Datenspeicherzellen und zu den zweiten Eingängen der Trägerspeicherzellen liefert, wobei die einen oder mehreren zweiten nicht gemeinsamen Bruchteile des zweiten Comparand-Datenmerkmals jeweils einen Trägerteil umfassen, der gleich einem "1"-Wert gesetzt ist, wodurch eine Durchsetzung von einem der Wortvergleichssignale anzeigt, dass alle der Bruchteile eines gespeicherten Datenmerkmals auf die jeweiligen gelieferten, gemeinsamen und zweiten nicht gemeinsamen Bruchteile des zweiten Comparand-Datenmerkmals passen.
DE60102230T 2000-03-08 2001-03-07 Mehrfacheintragsvergleich in einem inhaltsadressierbaren speicher Expired - Lifetime DE60102230T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US18789500P 2000-03-08 2000-03-08
US187895P 2000-03-08
US666844 2000-09-21
US09/666,844 US6259620B1 (en) 2000-03-08 2000-09-21 Multiple entry matching in a content addressable memory
PCT/SE2001/000483 WO2001067456A2 (en) 2000-03-08 2001-03-07 Multiple entry matching in a content addressable memory

Publications (2)

Publication Number Publication Date
DE60102230D1 DE60102230D1 (de) 2004-04-08
DE60102230T2 true DE60102230T2 (de) 2005-03-03

Family

ID=26883517

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60102230T Expired - Lifetime DE60102230T2 (de) 2000-03-08 2001-03-07 Mehrfacheintragsvergleich in einem inhaltsadressierbaren speicher

Country Status (6)

Country Link
US (1) US6259620B1 (de)
EP (1) EP1281178B1 (de)
AT (1) ATE261177T1 (de)
AU (1) AU2001239616A1 (de)
DE (1) DE60102230T2 (de)
WO (1) WO2001067456A2 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6615210B1 (en) * 2000-02-04 2003-09-02 Broad Web Corporation Bit stream ternary match scheme
JP2002237190A (ja) * 2001-02-07 2002-08-23 Kawasaki Microelectronics Kk 連想メモリ装置およびその構成方法
US6512684B2 (en) * 2001-06-11 2003-01-28 International Business Machines Corporation Content addressable memory having cascaded sub-entry architecture
US7136961B2 (en) * 2002-11-13 2006-11-14 Mosaid Technologies, Inc. Method and apparatus for wide word deletion in content addressable memories
US7181568B2 (en) * 2004-03-25 2007-02-20 Intel Corporation Content addressable memory to identify subtag matches
US20060212426A1 (en) * 2004-12-21 2006-09-21 Udaya Shakara Efficient CAM-based techniques to perform string searches in packet payloads
US20060190679A1 (en) * 2005-02-18 2006-08-24 Albrecht Alan R Content addressable memory supporting multiple width searches
US8050185B2 (en) * 2005-08-24 2011-11-01 Hewlett-Packard Development Company, L.P. Sampling of network traffic based on CAM lookup
RU2509383C2 (ru) * 2012-04-06 2014-03-10 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Юго-Западный государственный университет" (ЮЗГУ) Способ параллельного поиска и замены строки и однородная запоминающая матрица для его реализации
US9859006B1 (en) * 2016-06-17 2018-01-02 Globalfoundries Inc. Algorithmic N search/M write ternary content addressable memory (TCAM)

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4959811A (en) * 1986-11-03 1990-09-25 Texas Instruments Incorporated Content addressable memory including comparison inhibit and shift register circuits
US5440715A (en) * 1990-06-27 1995-08-08 Advanced Micro Devices, Inc. Method and apparatus for expanding the width of a content addressable memory using a continuation bit
US5226005A (en) 1990-11-19 1993-07-06 Unisys Corporation Dual ported content addressable memory cell and array
JP2728819B2 (ja) 1991-12-18 1998-03-18 川崎製鉄株式会社 半導体集積回路
JP2775549B2 (ja) 1992-05-08 1998-07-16 三菱電機株式会社 連想メモリセルおよび連想メモリ回路
GB9213821D0 (en) 1992-06-30 1992-08-12 Inmos Ltd Content addressable memory
US5568415A (en) 1993-02-19 1996-10-22 Digital Equipment Corporation Content addressable memory having a pair of memory cells storing don't care states for address translation
US6000008A (en) 1993-03-11 1999-12-07 Cabletron Systems, Inc. Method and apparatus for matching data items of variable length in a content addressable memory
US5454094A (en) 1993-06-24 1995-09-26 Hal Computer Systems, Inc. Method and apparatus for detecting multiple matches in a content addressable memory
JP3169155B2 (ja) 1993-12-22 2001-05-21 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 情報をキャッシュするための回路
US5568416A (en) 1994-03-24 1996-10-22 Kawasaki Steel Corporation Associative memory
US5446686A (en) 1994-08-02 1995-08-29 Sun Microsystems, Inc. Method and appartus for detecting multiple address matches in a content addressable memory
JP2812262B2 (ja) 1995-08-31 1998-10-22 日本電気株式会社 連想記憶装置
US5796758A (en) 1996-10-08 1998-08-18 International Business Machines Corporation Self-checking content-addressable memory and method of operation for detecting multiple selected word lines
US6081440A (en) * 1998-11-05 2000-06-27 Lara Technology, Inc. Ternary content addressable memory (CAM) having fast insertion and deletion of data values
US5999435A (en) 1999-01-15 1999-12-07 Fast-Chip, Inc. Content addressable memory device
US6108227A (en) * 1999-07-23 2000-08-22 Lara Technology, Inc. Content addressable memory having binary and ternary modes of operation

Also Published As

Publication number Publication date
WO2001067456A3 (en) 2002-02-07
EP1281178A2 (de) 2003-02-05
ATE261177T1 (de) 2004-03-15
EP1281178B1 (de) 2004-03-03
WO2001067456A2 (en) 2001-09-13
AU2001239616A1 (en) 2001-09-17
US6259620B1 (en) 2001-07-10
DE60102230D1 (de) 2004-04-08

Similar Documents

Publication Publication Date Title
DE3902425C2 (de)
DE602004011721T2 (de) Zugriffssteurungsmechanismus für Router
DE60305035T2 (de) Anpassen des längsten präfix unter verwendung von baumartigen &#34;bitmap&#34; datenstrukturen
DE69636761T2 (de) Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum
DE3618163C2 (de) Speichermanagementanordnung für ein Mikroprozessorsystem
DE10035043A1 (de) Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen Optimierungsanfragen
DE60102230T2 (de) Mehrfacheintragsvergleich in einem inhaltsadressierbaren speicher
DE60006971T2 (de) Bedingte befehlsausführung in einem rechner
DE112019003326T5 (de) Speichererweiterte neuronale netzwerkarchitekturen eines codierers-decodierers
DE102020133266A1 (de) Technologien zur Verfeinerung von stochastischen Ähnlichkeitssuchekandidaten
DE10116639A1 (de) Schreib/Lese-Abgleichschema zur Portverringerung in Mehrfachport-SRAM-Zellen
DE112019005382T5 (de) Auslegung und durchführung einer zeichenmustererkennung in einer schaltung auf datenebene
DE69629540T2 (de) Verfahren und Gerät zum Sortieren von Elementen
DE2121490A1 (de) Orthogonaler Datenspeicher
DE10105627B4 (de) Mehrfachanschlussspeichereinrichtung, Verfahren und System zum Betrieb einer Mehrfachanschlussspeichereinrichtung
DE102019112186A1 (de) Doppelladebefehl
EP1204917B1 (de) Operandenstapelspeicher und verfahren zum betreiben eines operandenstapelspeichers
DE1295656B (de) Assoziativer Speicher
DE19924288A1 (de) Integrierter Speicher
DE60209201T2 (de) Verfahren zum Speichern von Registereigenschaften in einer Datenstruktur und dazugehörige Datenstruktur
EP0748479B1 (de) Mustererkennungsverfahren und -system mit einem oder mehreren prozessoren
DE10313645B4 (de) System mit einer Datenverarbeitungseinrichtung und einer Speichereinrichtung
DE102023201557A1 (de) Effiziente speichernutzung für kartesische produkte von regeln
DE102022203284A1 (de) Prozessor zur Durchführung einer vorbestimmten Rechenoperation und Recheneinheit
DE2840384C2 (de)

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8364 No opposition during term of opposition