DE602004010922T2 - Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen - Google Patents

Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen Download PDF

Info

Publication number
DE602004010922T2
DE602004010922T2 DE602004010922T DE602004010922T DE602004010922T2 DE 602004010922 T2 DE602004010922 T2 DE 602004010922T2 DE 602004010922 T DE602004010922 T DE 602004010922T DE 602004010922 T DE602004010922 T DE 602004010922T DE 602004010922 T2 DE602004010922 T2 DE 602004010922T2
Authority
DE
Germany
Prior art keywords
entry
bits
entries
bit
cam
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.)
Active
Application number
DE602004010922T
Other languages
English (en)
Other versions
DE602004010922D1 (de
Inventor
Madian Los Altos Hills SOMASUNDARAM
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.)
Spans Logic Inc
Original Assignee
Spans Logic Inc
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 Spans Logic Inc filed Critical Spans Logic Inc
Publication of DE602004010922D1 publication Critical patent/DE602004010922D1/de
Application granted granted Critical
Publication of DE602004010922T2 publication Critical patent/DE602004010922T2/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • 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
    • 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

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft im Allgemeinen inhaltsadressierbare Speicher (CAM: Content Addressable Memories), die auch assoziative Speicher genannt werden.
  • 2. Beschreibung des Stands der Technik
  • Ein inhaltsadressierbarer Speicher (CAM) weist eine Anzahl von Speicherpositionen auf, in denen Daten gespeichert werden können. Wenn Daten in einer Speicherposition gespeichert werden, kann der Speicherort mit Hilfe des Inhaltes (Datenwert) des Speicherorts adressiert werden. Ein Eingangswort wird mit einer Tabelle von zulässigen Werten verglichen. Wenn eine Übereinstimmung vorliegt, wird der Speicherort des übereinstimmenden Wortes zurückgegeben. Der Speicherort wird üblicherweise verwendet, um eine darauf bezogene Tabelle zu adressieren und ein entsprechendes Wort wird zurückgegeben. Eine Anwendung von CAMs besteht bei der Internetprotokoll (IP) Paketklassifizierung, wobei IP Adressen und andere Felder eines Internetpakets in Netzwerk-Switches und Routern verglichen werden. In einer allgemeinen Formen von IP Adressen, die Subnetzadresse (subnet address) oder Adressenpräfix genannt werden, werden bestimmte Werte für eine bestimmte Anzahl von Bits festgelegt und die restlichen Bits der Adresse werden als "x" (don't care) Bits festgelegt. Ein Beispiel für IPv4 Adressen wird nachfolgend angegeben:
    0110 1100 0111 xxxx xxxx xxxx xxxx xxxx
  • Die Bits, die nicht x (don't care) entsprechen, bilden den Präfix der Adresse und die Anzahl der Präfixbits wird Präfixlänge genannt. Eine Untermenge der Klassifizierungsanwendung dient zum Identifizieren der übereinstimmenden Präfixe, das die größte Anzahl von Präfixbits aufweist. In der allgemeineren Klassifizierungsanwendung müssen mehrere Felder gleichzeitig übereinstimmen. Eine Beispielspezifikation für die Klassifizierung ist in der Tabelle der 19 gezeigt.
  • Zusätzliche Felder können in der Klassifizierung verwendet werden, z. B. 144 Bits zur Spezifizierung können für die Klassifizierung für das Internetprotokoll der Version vier (IPv4) verwendet werden. Bei dem Internetprotokoll der Version sechs (IPV6) beträgt die Länge jedes Adressfeldes 128 Bits und eine Klassifizierungsspezifikation kann 576 Bits übersteigen. Eine Schlüsseleigenschaft der Klassifizierungsspezifikationen besteht darin, dass jedes der Felder x (don't care) Bits aufweisen kann. Solche CAMs für die Klassifizierung müssen x (don't care) Bits zulassen, die nicht notwendigerweise zueinander benachbart sind. Eine Klasse von CAMs, die ternäre CAMs genannt wird, wurde vorgeschlagen, um diese Notwendigkeit zu adressieren, wobei ein zusätzliches Bit, das jedem Datenbit zugeordnet wird, das Maskierungsbit genannt wird.
  • Es gibt jedoch viele Nachteile bei der herkömmlichen ternären CAM Struktur. Da jede Zelle zwei Speicherzellen umfasst sowie eine Maskierungs- und Vergleichschaltung, erfordert die Implementierung einer Tabelle der Größe w × 2n w × 2n + 1 Speicherelemente und w × 2n Maskierungs- und Vergleichsschaltungen. Da jedes Nachschlagen in der Tabelle die Aktivierung aller Zellen erfordert, ist die Leistungsaufnahme proportional zu w × 2n. Für große Werte von n sind die Kosten bemerkenswert und die Leistungsaufnahme untragbar. Da zusätzlich die Vergleichslogik in jeder Zelle wiederholt wird, ist es aufwendig und schwierig, verschiedene Arten von Vergleich bereitzustellen und das typische CAM stellt lediglich einen Bit-für-Bit-Vergleich zur Verfügung.
  • Um diese Nachteile zu vermeiden, offenbart US 6,289,414 B1 ein Verfahren, das teilweise ein Sortieren der ternären hierarchischen Adressen und ihre zugeordneten Maskierungseinträge sowohl in binär als auch in ternär inhaltsadressierbaren Speichern (CAM) verwendet. Dieses Verfahren ermöglicht schnelleres Suchen und eine Reduzierung der Adresstabellengröße, die bei der Verarbeitung der Kommunikationssystemadresse zum Identifizieren der Quelle und des Ziels aller digitalen Paketdaten erlaubt.
  • Die vorliegende Erfindung versucht die Handhabung von inhaltsadressierbaren Speichern (CAMs) zu verbessern. Was insbesondere benötigt wird, ist ein inhaltsadressierbares Speichersystem, das a) die Anzahl von notwendigen Vergleichen reduziert, b) Feldanordnungen aus reinem Speicher verwendet, c) Vergleicher von den Speicherelementen trennt, und d) bestimmte Einträge als potentielle Übereinstimmungen auswählt, bevor alle Bits miteinander verglichen werden. Diese Änderung führen zu einer verringerten Implementierungsgröße, indem die Anzahl der Speicherelemente und Vergleicher reduziert wird, und die Energieaufnahme durch einen effizienteren Vergleich der Dateneinträge verringert wird.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Diese Aufgabe wird durch das erfinderische Verfahren, das in Anspruch 1 definiert ist, erreicht. Gemäß der vorliegenden Erfindung wird ein Verfahren bereitgestellt, um inhaltsadressierbare Speicher zu implementieren, die für eine Internetpaketklassifizierung geeignet sind, dass die Kosten wenig mehr als ein Speicherelement pro Bit reduziert. Die vorliegende Erfindung ermöglicht erhebliche Leistungseinsparungen sogar bei viel größeren CAM Tabellen. Die bevorzugte Ausführungsform stellt einen breiten Bereich von Nachschlagfunktionen mit einer einzigen Struktur zur Verfügung. Der Bereich der Optionen kann während des Entwurfstadiums (Entwurfsskalierung), während der Herstellung der Chips (Maskenprogrammierbarkeit), bevor das CAM in eine bestimmte Verwendung (Feldprogrammierbarkeit) eingesetzt wird, zwischen Zyklen der CAM Programmierung (Umprogrammierbarkeit) oder sogar zwischen Zyklen der CAM Verwendung (Umkonfigurierbarkeit) genutzt werden. Eine Ausführungsform der vorliegenden Erfindung erlaubt verschiedene Arten des Vergleichs einschließlich eines Bit-für-Bit-Vergleichs und Bereichsvergleiche. In weiteren Ausführungsformen können verschiedene Typen des Vergleichs in dem gleichen CAM Wort gemischt werden oder verschiedene CAM Einträge können Gegenstand verschiedener Arten von Vergleichen sein.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt ein herkömmliches CAM System.
  • 2 zeigt eine herkömmliche ternäres CAM Feldanordnung.
  • 3A zeigt ein Blockdiagramm eines CAM gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 3B zeigt ein Blockdiagramm eines Systems, das ein CAM gemäß einer Ausführungsform der vorliegenden Erfindung verwendet.
  • 3C zeigt ein Flussdiagramm der Steuerphasentechnik gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 3D zeigt ein Flussdiagramm der Datenphasentechnik gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 4 zeigt eine Beispieltabelle von CAM Einträgen.
  • 5 zeigt ein Beispiel, wie CAM Einträge in Gruppen aufgeteilt werden können, gemäß einer Ausführungsform der Erfindung.
  • 6 zeigt Konfigurationswerte für die erste Gruppe, die in dem in 5 dargestellten Beispiel gezeigt ist, gemäß einer Ausführungsform.
  • 7 zeigt eine Eintragsauswahlschaltung basierend auf ternären CAM Bits gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 8 zeigt, wie ein Einträge so gruppiert werden können, dass x (don't care) Werte nicht in der Eintragsauswahleinheit erforderlich sind, gemäß einer Ausführungsform der vorliegenden Erfindung; und
  • 9 zeigt ein Codierschema, um Präfixspezifikationen darzustellen, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 10 zeigt eine komprimierte Spezifikation für die dritte Gruppe der 8 gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 11 ist ein Beispiel einer Eintragsauswahltabelle gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 12 zeigt ein Beispiel einer Eintragsauswahltabelle, die in vier Segmente aufgeteilt ist, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 13 zeigt die logische Operation einer 2-stufigen Eintragsauswahleinheit gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 14 zeigt ein Beispiel einer Implementierung einer 2-stufigen Eintragsauswahleinheit gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 15 zeigt eine Bit-Auswahlschaltung gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 16 zeigt den Verfahrensablauf beim Auswählen von Bits von einer Eingabe gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 17A zeigt eine überlappenden Bit-Auswahlschaltung gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 17B zeigt, wie Segmente der überlappenden Bit-Auswahlschaltung verbunden sind, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 18 zeigt den Verfahrensablauf beim Auswählen von Bits bei einer überlappenden Bit-Auswahlschaltung gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 19 zeigt das Format einer Beispielklassifizierungsspezifikation gemäß einer Ausführungsform der vorliegenden Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Ausführungsformen der vorliegenden Erfindung werden nun in Bezug auf die Figuren beschrieben, wobei gleiche Bezugszeichen gleiche oder funktional ähnliche Elemente bezeichnen. Auch in den Figuren entsprechen die am weitesten links stehenden Ziffer(n) jeder Bezugszeichen der Figur, in der die Bezugsnummer zuerst verwendet wird.
  • 1 zeigt ein typisches System mit einem CAM. Ein Eingabewort der Breite w 101 Bit mit einer Tabelle von zulässigen Werten 102 verglichen. Wenn eine Übereinstimmung vorliegt, wird der Speicherort des übereinstimmenden Ortes 103 zurückgegeben. Der Speicherort wird üblicherweise verwendet, um eine darauf bezogene Tabelle 104 zu adressieren und ein entsprechendes Wort 105 wird zurückgegeben.
  • 2 zeigt eine herkömmliche ternäres CAM Feldanordnung. Daten werden in dem Datenregister D 201 gespeichert und die Maske wird in dem Maskenregister M 202 gespeichert. Während eines Vergleichs wird der zu vergleichende Wert auf die Spaltenleitungen Col 203 angeordnet. Die Vergleichsschaltung C 204 vergleicht die Datenwerte mit den Col Zeilenleitungswerten und überträgt das Ergebnis des Vergleichs auf die Übereinstimmungsleitungen 205, wenn der Wert des Maskierungsregisters angibt, dass das Datenbit für den Vergleich gültig ist. Die Zelle 206 ist w mal angeordnet, um eine Zeile der Breite w 207 zu bilden und die Zeile ist 2n mal angeordnet, um die Tabelle zu bilden. Da mehrere Zeilen mit einer bestimmten Eingabe übereinstimmen können, wird eine Prioritätsschaltung 208 verwendet, um eine der Übereinstimmungszeilen auszuwählen.
  • Das Blockdiagramm der 3A zeigt einen CAM 300 mit einer Kapazität von N × n Einträgen gemäß einer Ausführungsform der vorliegenden Erfindung. Es gibt N Blocke, Block-1 320 bis Block-N 321. In jedem Block gibt es einen Spezifizierungsspeicher 301, der bis zu n Einträgen speichern kann. Die Eintragsbitauswahlschaltung 302 wählt bestimmte Bits aus dem Eingangswort 303 der Breite w aus. Die Eintragsauswahlschaltung 305 verwendet die ausgewählten Bits 304 der Breite sw, um einen der n Einträgen aus dem Spezifizierungsspeicher auszuwählen. Der ausgewählte Eintrag, der bei 306 ausgegeben wird, wird optional durch die Interpretationsschaltung 307 modifiziert und bei 308 ausgegeben. Die Eingabe 303 wird optional durch das Vergleichstor und Modifizierungsschaltung 316 modifiziert und bei 310 ausgegeben. Die Vergleichsschaltung 309 vergleicht 308 gegen 310 und gibt an, ob die Eingabe mit dem ausgewählten Eintrag in der Übereinstimmungszeile 311 übereinstimmt. Die Adresse des ausgewählten Eintrags innerhalb des Blocks wird als Addr 312 ausgegeben. Es liegen N Übereinstimmungsindikatoren vor, einer von jedem der N Blöcke und einer, aus denen von der Prioritätsschaltung 313 ausgewählt wird, dessen Ausgabe Match 315 eingestellt wird, wenn mindestens einer der Blöcke eine Übereinstimmung angibt. Die ausgegebene Ausgewählte Adresse 314 kombiniert die Identität der Gruppe, die durch die Prioritätsschaltung ausgewählt wird und die Adresse des übereinstimmenden Eintrags innerhalb dieses Blockes.
  • Der CAM 300 kann in einem System, das in 3B dargestellt ist, verwendet werden. Bei einer Ausführungsform gibt es zwei Phasen der Verwendung des CAMs 300: eine Steuerphase, während der das CAM 300 mit Einträgen geladen wird, und eine Datenphase, während der das CAM 300 die Eingangswerte mit den gespeicherten Einträgen vergleicht und das Ergebnis zurückgibt. Der Überwachungsprozessor 331 hat die Aufgabe, die Konfigurationsregister und Speicher der CAM 300 mit Einträgen zu laden. Ist dieser geladen, arbeitet das CAM 300 in der Datenphase unabhängig, wo es Eingaben 303 akzeptiert, diese mit den Einträgen vergleicht und den resultierenden Übereinstimmungsindikator 315 und die ausgewählte Adresse 314 zurückgibt.
  • Das Ziel in der Steuerphase besteht darin, den CAM 300 so zu laden, dass nur ein Eintrag in jedem Block des CAMs mit einer bestimmten Eingabe möglicherweise übereinstimmen kann. Eine Art, dieses Ziel zu erreichen, ist durch den Verfahrensablauf, der in 3C dargestellt ist, dargestellt. Der Anfangspunkt 350 ist eine Tabelle mit bis zu N × n Einträgen. In einem ersten Schritt 351 werden die Einträge in N Gruppen unterteilt, von denen jede nicht mehr als n Einträge umfasst, so dass innerhalb jeder Gruppe nicht mehr als ein Eintrag mit einer bestimmten Eingabe übereinstimmen kann. Die nächsten drei Schritte werden für jede in dem Schritt 351 gebildeten Gruppe wiederholt. In Schritt 352 werden die Einträge der Gruppe in den Spezifizierungsspeicher 301 eines neuen Blocks in dem CAM 300 geladen. In Schritt 353 werden bestimmte Bitpositionen für die Gruppe ausgewählt, so dass die Werte der ausgewählten Bitpositionen ausreichend sind, um einzelnen Eintrag von dem Rest der Einträge dieser Gruppe zu unterscheiden. In dem nächsten Schritt 354 wird die Eintragsbitauswahl 302 mit den Bitposition, die in Schritt 353 ausgewählt sind, konfiguriert. Dann wird in Schritt 355 die Eintragsauswahl 305 so konfiguriert, dass sie die Unterscheidungsbits der Einträge an Speicherorten aufweist, die den Speicherorten der Einträge in dem Spezifizierungsspeicher 301 entsprechen.
  • Das Ziel der Datenphase wird durch das CAM 300 erreicht. Jeder Block des CAM 300 arbeitet, wie durch das Flussdiagramm der 3D dargestellt ist. In Schritt 361 werden die Bitpositionen, die in der Eintragsbitauswahl konfiguriert sind, von der Eingabe 303 gelesen. In Schritt 362 wählt die Eintragsauswahl 305 zumeist einen einzelnen Eintrag anhand der in Schritt 361 gelesenen Bitwerte aus. In dem folgenden Schritt 363 wird der ausgewählte Eintrag aus dem Spezifizierungsspeicher 301 gelesen. In dem optionalen Schritt 364 wird der Wert von dem Spezifizierungsspeicher durch die Interpretationsschaltung 307 modifiziert und/oder die Eingabe wird durch die Vergleichsbitauswahl und Interpretationsschaltung 316 modifiziert. In Schritt 365 vergleicht die Vergleichsschaltung 309 die optional modifizierten Werte von Schritt 364 miteinander und gibt das Ergebnis aus. In Schritt 366 wählt die Prioritätsschaltung 313 eines der Ergebnisse aus allen Blöcken aus und gibt das ausgewählte Ergebnis aus.
  • Die Arbeitsweise 300 kann mit der Beispieltabelle der CAM Einträge, die in 4 gezeigt sind, dargstellt werden. Die Beispieltabelle weist 20 Einträge von jeweils 13 Bits auf, wobei jedes Bit 3 mögliche Zustände annehmen kann, 0, 1 und x. Die Tabelle kann in Gruppen von fünf Einträgen oder weniger, wie es in 5 gezeigt ist, aufgeteilt werden, so dass nur ein Eintrag mit jeder möglichen Eingabe übereinstimmen kann. Innerhalb jeder Gruppe sind wenige Bits ausreichend, um eindeutig zwischen den Einträgen zu unterscheiden und diese Bits sind schattiert (hervorgehoben) dargestellt. Es kann mehr als einen Weg geben, die Einträge zu gruppieren, und es kann mehr als eine Gruppe von sich unterscheidenden Schaltungsbits geben. Für diese Zwecke der verschiedenen Ausführungsformen der vorliegenden Erfindung ist die besondere Auswahl der Gruppen oder Bits nicht relevant. Die Eintragsbitauswahlschaltung 302 ist so konfiguriert, dass die hervorgehobenen Bits jeder Gruppe automatisch als Eingabe in der Eintragsauswahlschaltung 305 auswählt werden. Die potentiellen Ausgaben der Eintragsbitauswahl 302 sind in der Tabelle der 5 als SB0, SB1, SB2 und SB3 gezeigt. Die akzeptierbaren Werte von SB0 – 3 für eine Gruppe, werden in die Eintragsauswahl 305 geladen. Die Gruppeneinträge werden in den Spezifizierungsspeicher 301 an den selben Speicherort geladen, an dem die ausgewählten Bits für diesen Eintrag in der Eintragsauswahl 305 gefunden wurden. Wenn der Eingabewert von SB0 – 3 mit einem der akzeptierbaren Werte übereinstimmt, wird der entsprechende Eintrag in dem Spezifizierungsspeicher ausgewählt und als eine potentielle Übereinstimmung über die Leitungen 306 ausgegeben. In diesem Beispiel wird die Interpretierungsschaltung 305 konfiguriert, um die Ausgabe nicht zu modifizieren, und die Vergleichs, Tor – und Modifizierungsschaltung 316 wird konfiguriert, um alle Eingangsbits auszugeben, so dass die ausgewählte Eingabe direkt mit dem Eingangswort verglichen wird. Die 6 zeigt die Konfiguration und die Werte für die erste Gruppe und die Ergebnisse einer Beispieleingabe. Die Eintragsbitauswahl 302 wählt Bits 0, 5, 6, 12 als Eingaben für die Eintragsauswahlschaltung 305 aus. Die ausgewählten Bits stimmten mit der zweiten Eingabe der Eintragsauswahleinheit 305 überein. Der zweite Eintrag des Spezifizierungsspeichers 301 wird ausgelesen und mit allen Bits der Eingabe 303 verglichen, was zu einer Übereinstimmung führt.
  • Ausführungsformen der vorliegenden Erfindung stellen eine Verbesserung gegenüber herkömmlichen CAMs dar, weil die Spezifizierungsspeicherblöcke Speicheranordnungen entsprechen, die aus reinen RAM Zellen (nicht aus herkömmlichen ternären CAM Zellen) zusammengesetzt sind. Die Größe einer RAM Zelle ist kleiner als die einer CAM Zelle. Im Falle einer statischen RAM Technologie kann die reine RAM Zelle ein Drittel bis zu einem Fünftel der Größe einer ternären CAM Zelle entsprechen. Die Größe kann sogar weiter reduziert werden, indem die DRAM oder 1-T SRAM Technologien verwendet werden, so dass die Speicherzellen, die in Ausführungen der vorliegenden Erfindung verwendet werden, kleiner als ein Zehntel der Größe der CAM Zelle betragen. So wird die Größe einer CAM Implementierung viel kleiner (1/3 bis 1/10) in der Größe als eine äquivalente Größe eines herkömmlichen CAMs. Somit kann bei einer bestimmten Größe des Siliziums ein CAM gemäß der vorliegenden Erfindung Tabellen aufweisen, die drei bis zehn mal größer sind, verglichen mit herkömmlichen CAMs. Die Kosten pro Bit für die vorliegende Erfindung können in der Größenordnung von 10 mal billiger sein.
  • Bei einem herkömmlichen CAM wird eine Vergleichsschaltung in jeder Zelle der Feldanordnung angebaut. Somit aktiviert jede Eingabe so viele Vergleichsschaltungen wie Bits in dem CAM vorhanden sind. In der Ausführung von der vorliegenden Erfindung gibt es nur einen Vergleicher für eine Eingabebreite pro Gruppe, abgesehen von den wenigen schmaleren Vergleichern, die in der Eintragsauswahlschaltung verwendet werden. Somit ist auch die Leistungsaufnahme für die Berechnung einer Übereinstimmung um einen Faktor reduziert, der annähernd der Größe der Gruppe entspricht.
  • Ein Aspekt der Ausführungsform der vorliegenden Erfindung, der diese von herkömmlichen CAM Vorrichtungen unterscheidet, besteht in der Trennung der Speicherelemente von den Berechnungs-/Vergleichselementen. Diese Trennung erlaubt den zwei Elementen unabhängig bezüglich Leistung und Kosten optimiert zu werden. Zum Beispiel können die Vergleiche, die in Ausführungsformen der vorliegenden Erfindung verwendet werden, anspruchsvollere Leistungsmanagementtechniken verwenden, da die Komplexität über die große Anzahl von Elementen in jedem Block amortisiert wird. Als weiteres Beispiel können die Speicherblöcke geringere Spannungshübe verwenden, ohne durch die Anorderungen der Vergleicher beschränkt zu werden.
  • Da die Implementierungsgröße und die Leistungsaufnahme viel kleiner sind als bei herkömmlichen CAMs, sind die Ausführungsformen der vorliegenden Erfindung viel einfacher zu integrieren. Es können nicht nur viel größere CAM Tabellen auf einem einzelnen Chip integriert werden, sondern auch sehr große CAM Tabellen können auf dem selben Chip mit komplexen Logikfunktionen wie Netzwerkprozessoren, Datenverkehr-Managern und Sicherheits-Chips integriert werden. Durch Auftrennen der Vergleichsfunktion von dem Speicher in dem CAM können komplexere Vergleichsfunktionen (z. B. Bereichsvergleiche) ohne erhebliche zusätzliche Kosten implementiert werden.
  • In der Steuerphase gibt es eine Vielzahl von Wegen, das Gruppieren der Einträge zu erreichen. Der effizienteste Weg die Einträge zu gruppieren, hängt von den Eigenschaften der Tabelle der Einträge ab. Wenn z. B. die Einträge keine x (don't care) Werte umfassen, ist die Aufgabe des Auffindens von Einträgen, die zu einer Gruppe gehörig annehmbar sind, geradlinig, da alle Einträge per Definition eindeutig sind und so jede vorgegebene Eingabe nur mit einem bestimmten Eintrag übereinstimmen kann, unbeachtet dessen, wie die Einträge gruppiert sind. Dies ist der Fall für mehrere Tabellen, was bei Netzwerktechnik üblich ist, einschließlich dessen, was in der Netzwerksprache eine Flusstabelle (flow table) genannt wird. In der typischen Weiterleitungstabelle, die bei Netzwerkanwendungen verwendet wird, weisen die Tabelleneinträge die Form von Präfixadressen auf, und weisen somit x (don't care) Bits auf, die aneinander benachbart sind. Dieser Fall kann auf mehrere Arten behandelt werden, z. B. mit einer Strategie des Gruppierens von Einträgen durch die Anzahl der in ihnen enthaltenen x (don't care) Bits. In dem allgemeineren Klassifizierungsfall kann es notwendig sein, komplexere Strategien anzuwenden. Zum Beispiel können die Einträge deterministisch gruppiert werden, indem ein zweistufiger Ansatz verwendet wird. Während eines ersten Durchlaufs werden die Daten in einen Baum mit drei potentiellen Zweigen von jedem Knoten organisiert. In einem zweiten Durchlauf kann der Baum auf eine Vielzahl von Arten durchlaufen werden, um die Gruppen zu bilden. Eine Idee, die in dem Baumdurchlauf sehr gut funktioniert, besteht darin, dass jeder Knoten, der sowohl einen 0-Zweig als auch einen 1-Zweig aufweist, einen Eintrag aus dem 0-Zweig und einen Eintrag aus dem 1-Zweig aufgreift. Die zwei Einträge, die auf diese Weise ausgewählt werden, können nicht gleichzeitig übereinstimmen, da sie in dieser Position sich unterscheiden. Eine weitere Option besteht darin, eine statistische Information zu verwenden, z. B. bezüglich von IP Adressen, um die Bitpositionen zu identifizieren, die verwendet werden, um die Daten in jeder Gruppe zu unterscheiden. In dieser Technik unterscheidet sich das Flussdiagramm von 3C dadurch, dass die sich unterscheidenden Bitpositionen zuerst ausgewählt werden, und dann die Gruppen ausgebildet werden. In dieser Technik ist es nicht notwendig, dass die gleiche Gruppe von Bitpositionen für alle Gruppen in dem CAM verwendet werden; eine Gruppe kann verwendet werden, bis eine Unterscheidung zwischen den verbleibenden Einträgen schwierig wird, und dann kann eine weitere Gruppe verwendet werden. Eine Variation dieser Technik besteht darin, die Gruppe der sich unterscheidenden Bitpositionen zufällig auszuwählen. Dies funktioniert gut, wenn man es mit großen Tabellen mit einer guten Verteilung der Werte innerhalb der entsprechenden Tabelle zu tun hat.
  • Der Auswahl der Einträge für eine Gruppe hat auch Auswirkungen auf die sich unterscheidenden Bitpositionen für diese Gruppe und daher auf die Anzahl der Bitpositionen, die für die Eintragsauswahleinheit 305 ausgewählt werden. Obwohl die Eintragsauswahleinheit ausgebildet sein kann, um jede Anzahl von Bitpositionen zu handhaben, kann die Logik vereinfacht werden, wenn die Steuerphase eine minimale Anzahl von sich unterscheidenden Bitpositionen für jede Gruppe auswählt. Die kleinste Anzahl von sich unterscheidenden Bitpositionen ist logt der Anzahl der Einträge in der Gruppe und die größte Notwendige ist eins weniger als die Anzahl der Einträge in der betreffenden Gruppe. Sowohl die Baumdurchlauftechnik als auch die Technik des Auswählens der Bitposition (zufällig oder mit einem a priori statistischen Wissen) vor dem Auswählen der Gruppen kann helfen, minimale Anzahlen von sich unterscheidenden Bitpositionen auszuwählen.
  • Eine weitere Überlegung beim Gruppieren von Einträgen und der Auswahl von Bitpositionen besteht darin, ob x (don't care) Werten in den sich unterscheidenden Bitpositionen für jede der Gruppen erlaubt sind. Die Implementierung der Eintragsauswahlschaltung kann vereinfacht werden, indem nicht zugelassen wird, dass x (don't care) Werte in den sich unterscheidenden Positionen vorkommen. In diesem Fall besteht die Steuerphase darin, Einträge so zu gruppieren, dass Unterscheidungen zwischen den Einträgen in jeder Gruppe vorgenommen werden können, indem nur diejenigen Bitpositionen berücksichtigt werden, in denen keine x (don't care) Werte innerhalb der Gruppe vorliegen. Ein Beispiel dieser Strategie ist in 8 gezeigt, worin die Einträge der Tabelle der 4 so gruppiert worden sind, dass x (don't care) Werte nicht in der Eintragsauswahl benötigt werden.
  • Eine Implementierung der Eintragsauswahlschaltung 305 basierend auf CAM Bits ist in 7 gezeigt. Sie verwendet ein herkömmliches CAM 701 einer Breite, die ausreichend ist, um die ausgewählten Bits zu speichern. Die Tiefe der Tabelle entspricht der Anzahl der Einträge in einer Gruppe. Die ausgewählten Bits 702 wählen zumeist einen der Einträge aus und das CAM gibt einen Zeiger 703 an die auf das ausgewählte Bit basierende Eintragsspezifikation, die eine Übereinstimmung aufweist, zurück. Da nicht alle Einträge in einer Gruppe definiert werden können (wie in Gruppe 4 der 5) wird ein gültiges Bit 704 jedem Auswahlkriterium hinzugefügt. Das gültige Bit kann als ungültig festgelegt werden, wenn kein Eintrag an diesem Speicherort vorliegt. Die CAM Zellen, die in dieser Implementierung verwendet werden, müssen ternär sein, wenn x (don't care) Werte in den sich unterscheidenden Bits wie in 5 gezeigt ist, erlaubt sind, können jedoch binär sein, wenn x (don't care) Werte nicht wie in 8 gezeigt ist, erlaubt sind.
  • Die Größe der Eintragsauswahlschaltung 305 kann mit Hilfe einer mehrstufigen Technik weiter reduziert werden. 11 zeigt ein Beispiel einer Eintragsauswahlinformation, bei der 8 ausgewählte Bits verwendet werden, um aus 16 Einträgen auszuwählen. In 12 wurde die Information in vier Segmente gemäß der Größe der Anzahl, die durch die Bits gebildet wird, unterteilt. Einige der Bits, die grau schattiert sind, werden verwendet, um zwischen den Einträgen zu unterscheiden. Die Eintragsauswahl wird in zwei Stufen vorgenommen. In der ersten Stufe werden alle ausgewählten Bits SB0 – 7 verwendet, um zu entscheiden, welche Segmente angewendet werden und in der zweiten Stufe werden einige der SB0 – 7 Bits verwendet, um einen Eintrag in dem Segment auszuwählen. 13 zeigt die logische Operation einer 2-stufigen Eintragsauswahl 305. 14 zeigt eine beispielhafte Implementierung. Die ausgewählten Bits Sel1 werden durch einer Größenvergleichsanordnung 1401 verwendet, um eine Speicherzeile auszuwählen, die eine Information über Unterscheidungsbits für die Stufe 2 (1402) und einen Adressoffset 1403 in einem CAM 1404 eines zweistufigen Bitwertes enthält. Die Information der für die zweite Stufe benötigten Bits wird an die zweite Bitauswahlschaltung 1405 geleitet, die die geeigneten Bits herausgreift, um diese als Eingang dem CAM zur Verfügung zu stellen. Eine einstufige Auswahl würde ein 16 × 8 CAM für die Beispieltabelle der 11 erfordern. Die 2-stufige Auswahlimplementierung der 12 fordert drei 8 Bit Größenvergleicher und einen 16 × 3 CAM. In einigen Fällen kann das CAM durch einen Decoder ersetzt werden. Mehrstufige Schaltungen reduzieren die Implementierungskosten, insbesondere wenn die Gruppengröße groß ist, und viele Bits in der Eintragsauswahleinheit vorhanden sind, wodurch die Latenz für die Transistoreffizienz ausgeglichen wird.
  • In dem Fall, bei dem die Steuerphase sicherstellen kann, dass die Anzahl von ausgewählten Bits genau logt der Gruppengröße entspricht, kann die Eintragsauswahlschaltung auf einen einfachen Decodierer vereinfacht werden.
  • 15 zeigt eine Beispielsimplementierung einer Bitauswahlschaltung. Die Bits in der Eingabe 1501, die ausgewählt werden sollen, werden durch einen "1" Wert in dem Auswahlregister SEL 1502 angegeben. Wenn ein Laden angezeigt wird, werden die ausgewählten Bits in das Schieberegister 1503 geladen. In diesem Beispiel liegen zwei Bits in jeder Schieberegisterzelle vor, wobei F/E 1505 angibt, ob das Schieberegisterbit gefüllt oder leer ist und VAL 1506 den Wert angibt, wenn dieses gefüllt ist. Wenn somit ein Bit geladen wird, wird das entsprechende F/E Bit auf „gefallt" eingestellt. Alle weiteren F/E Bits werden auf "leer" eingestellt. Wenn das Laden beendet ist, wird das Schieberegister für das Schieben aktiviert. Das Schieben wird in einer Reihe von Schritten durchgeführt. In jedem Schritt bewegt das Schieberegister Werte von einem "gefüllten" Speicherort zu dem benachbarten Speicherort zur Linken, wenn dieser "leer" ist. Nach dem Beenden eines solchen Schiebevorgangs, wird der ursprüngliche Speicherort auf "leer" festgelegt und der neue Speicherort auf "gefüllt" festgelegt. Das Schieben wird fortgesetzt, bis keine weiteren Verschiebungen mehr möglich sind. Die Schiebesteuerschaltung 1507 verwendet den Wert des F/E Bits von dem aktuellen Speicherort und der vorangehende Speicherort, um die Entscheidung darüber zu treffen, ob ein Verschieben erlaubt ist, und ist verantwortlich für das Setzen und Rücksetzen des F/E Bits sowohl an dem aktuellen als auch an dem vorangehenden Speicherort. Die Abfolge der Schritte für eine Beispielbitauswahl ist in 16 gezeigt. Durch den letzten Schritt (Schritt 5) werden alle ausgewählten Bits an den am weitest links stehenden Bits positioniert und die Bits werden an die Ausgangsleitungen SBit 1504 durch das Out Signal geleitet. Wenn das Schieberegister asynchron ist, können alle Schritte in einem Zyklus des CAM beendet werden.
  • Die im schlimmsten Fall benötigte Anzahl von Schritten, die notwendig ist, um die relevanten Bits an die Stelle der höchstwertigen Bits zu verschieben, kann mit Hilfe des Schemas der 17 reduziert werden. Die Schieberegisterlänge wird in zwei weitere Segmente mit jeweils einer Länge von sw Bits, wie es in 17B gezeigt ist, unterteilt. Die Ausgabe 1701 der am weitesten links stehenden Bits jedes Schieberegisters wird mit dem Eingang 1702 des am weitesten rechts stehenden Bits verbunden, um ein zirkulares Schieberegister auszubilden. Ein zusätzliches Bit POS 1703 wird verwendet, um die letzte Position der verschobenen Bits in jedem Segment anzugeben. Während des Verschiebungsprozesses sind keine Verschiebungen von einem Bit mit POS = 1 mit einem Bit mit POS = 0 erlaubt. Die Verschiebesteuerung für jeden Speicherort berücksichtigt den POS Wert sowie den F/E Wert des aktuellen Speicherortes und des vorangehenden Speicherortes. Die Segmente überlappen sich so, dass die Ausgabe von jedem ersten Bit jedes Segments 1704 mit dem ersten Bit der Ausgabe der Bitauswahleinheit S-Bit1 1705 verbunden ist. Auf ähnliche Weise sind die zweiten Bitausgaben aller Segmente mit den SBit-2 verbunden usw. Die POS Bits sind so konfiguriert, dass das POS Bit für ein Segment für jede vorgegebene SBit Speicherort auf 1 eingestellt wird und so dass in jedem bestimmten Segment alle POS Bits einander benachbart sind. Sind einmal die Schieberegister der Segmente durch die Eingaben geladen, beginnt das zirkuläre Verschieben und durch den letzten Schritt werden alle ausgewählten Bits so positioniert, dass sie von dem am weitesten links stehenden SBit in geeigneter Weise ausgerichtet sind. Da darin Schieberegister verwendet werden, kann die Reihenfolge der ausgewählten Bits von der ursprünglichen Eingabe verschieden sein. 18 zeigt den Verfahrensablauf. Wenn das Verschieben beendet ist, wie es in Schritt 2 gezeigt ist, haben die zwei zirkulären Schieberegister (Ringschieberegister) ihre gefüllten Bit so angeordnet, dass keine Überlappung besteht, und die Werte können auf die Ausgangsleitungen geladen werden. Der Wert wird nur ausgegeben, wenn das POS Bit für diesen Speicherort festgelegt ist. Durch das Überlappen wird die Zeit zum Beenden der Bitauswahlprozedur reduziert, in diesem Beispiel von 5 Schritten auf 2 Schritte. Wenn die Länge des Segments geringer ist als die Anzahl der ausgewählten Bits, werden zusätzliche Konfigurationsbits benötigt, um die verschobenen Werte in jedem Segment zur geeigneten Ausgangsleitung zu leiten.
  • In einem herkömmlichen CAM ist die Interpretation der Werte der Speicherzellen in dem CAM durch die Logik in der CAM Zelle beschränkt. Somit wird in einer typischen ternären CAM Zelle eine Speicherzelle immer als eine Maske interpretiert, die angibt, ob der Wert x (don't care) entspricht oder nicht und die weitere Speicherzelle wird als der nicht x Wert interpretiert. Ausführungsformen der vorliegenden Erfindung trennen die Interpretationsfunktion von dem Speicher in dem CAM, wodurch viele Optionen ermöglicht werden, welche Art von Werten in dem Spezifizierungsspeicher 301 gespeichert werden. Diese Optionen umfassen binäre, ternäre Bereichsspezifikationen und komprimierte Spezifikationen, sind jedoch nicht auf diese beschränkt. In dem Fall der binären Spezifikation können w Speicherbits für eine Eingabe der Größe w Bit verwendet werden. Im Falle einer ternären Spezifikation 2w Speicherbits können für eine Eingabe der Größe w Bit verwendet werden. Für die Bereichsspezifikation ist es möglich, zwei Felder zum Definieren des Beginns und dem Ende eines Bereiches zu definieren oder ein Start und ein Zähler ist eine andere Art einen Bereich zu definieren. Es ist auch möglich, Bereichsfelder zu definieren, die die Form von größer als oder kleiner als usw. aufweisen.
  • Viele Darstellungen von komprimierten Feldern sind möglich. Als ein Beispiel erfordern Subnetzwerk-Adressfelder (auch Präfixadressen genannt) der Breite w Bits 2w Speicherzellen in herkömmlichen ternären CAMs, jedoch ist es durch Verwenden des Codierschemas, das in 9 gezeigt ist, möglich, die Präfixadressen von w Bits mit gerade w + 1 Bits in Ausführungsformen der vorliegenden Erfindung zu repräsentieren. Das zusätzliche Bit wird am Ende der w Bits angehängt und wird verwendet, anzugeben, wenn das vorangehende Bit verglichen werden soll oder nicht. Wenn das Bit nicht verglichen werden soll, gibt der Wert des Bits an, ob das nächste Bit verglichen werden soll. Der Prozess wird fortgesetzt, bis ein Bit angibt, dass das nächste Bit verglichen werden soll. Nach diesem Punkt sind alle Bits verglichen. Es ist auch möglich, die Speicheranforderung durch Gruppeneinträge so zu reduzieren, dass die Spezifikation der Maskenbits (die angegeben, welche Bits verglichen werden sollen) für die gesamte Gruppe gleich ist. Beide Techniken werden in 10 verwendet, die Titelgruppe der 8 als ein Beispiel verwendet. Der Spezifizierungsspeicher 1001 weist keine x Werte auf, hat jedoch zwei neue Bits X1 und X2, die mit den Präfixbits 0–4 und Bits 5–9 zugeordnet sind. Die Interpretationsschaltung 1002 ist ausgebildet, um diese Felder als Präfixwerte zu erkennen. Da zusätzlich Bit 12 für die gesamte Gruppe "x" entspricht, wird die Interpretationsschaltung konfiguriert, um Bit 12 als x (don't care) zu behandeln. Der Spezifizierungsspeicher kann in Bit 12 willkürliche Werte aufweisen. Die Interpretationsschaltung stellt den ursprüngliche Eintrag aus der codierten Form her, und der wiederhergestellte Eintrag wird mit den Eingaben mit Hilfe der Vergleichsschaltung 1003 verglichen.
  • Mit Bezug auf die Interpretationstechniken der vorliegenden Erfindung gibt es eine Anzahl von verfügbaren Optionen als mögliche Ausführungsformen der vorliegenden Erfindung. Die Interpretationsoptionen sind komplementär zu den Codierungsoptionen in dem Spezifizierungsspeicher. Zusätzlich zu den bereits oben erwähnten Optionen ist es möglich, Laufzeitfehlerüberprüfungen und Fehlerkorrektur dieser Schaltung hinzuzufügen. Dies entspricht einer Funktion, die sehr schwierig in einem typischen ternären CAM zur Verfügung zu stellen ist. Es ist auch möglich, die Interpretation der Einträge von Eintrag zu Eintrag in der gleichen Gruppe zu variieren, wenn zusätzliche Codebits in dem Spezifizierungsspeicher vorgesehen werden, um anzugeben, wie der Eintrag interpretiert werden soll. Dies kann nützlich sein, wobei die "Bedeutung" von bestimmten Bits in der Eingabe sich mit den Werten von bestimmten weiteren Bits ändert.
  • Verschiedene Vergleichsoptionen (oder weitere Operationen) sind für die Implementierung von Vergleichen durch die Schaltung 309 verfügbar, einschließlich eines Bit für Bit Vergleichs, Bereichsvergleichs und verschiedene "weiche" Vergleiche, ist jedoch nicht darauf beschränkt. Der Bit für Bit Vergleich entspricht dem herkömmlichen CAM Ansatz. Ein Bereichsvergleich ist möglich, um eine günstige Implementierung zu erreichen, da die Bereichsberechnung einmal für die Gruppe durchgeführt wird. Bestimmte Formen des Bereichsvergleichs können Toleranzen bei den Werten zulassen oder die Berechnung von Vektorabständen erlauben. Dies kann bei "weichen" Vergleichen wie z. B. Stimmabdrücken und Bildern nützlich sein. Im Allgemeinen werden die Kombination von Optionen, in welcher Weise Bits interpretiert werden und die Optionen in dem Vergleichsblock erlauben Komplexe ALU ähnliche Funktionalität in Ausführungsformen der vorliegenden Erfindung. Da die Logik, die beim Durchführen dieser komplexeren Operationen verwendet wird, für jede Gruppe dupliziert wird, unterstützt nicht jede Speicherzelle bei der vorliegenden Erfindung eine komplexere Logik zu moderaten Kosten.
  • Die soweit gezeigten Beispiele verwenden das gesamte Eingabewort in der Vergleichsschaltung, so dass die Vergleichs, Tor- und Modifizierungsschaltung optional ist. Jedoch kann in bestimmten Ausführungsformen der vorliegenden Erfindung diese Schaltung für eine zusätzliche nützliche Funktionalität bereitgestellt werden. Es ist z. B. möglich, weniger Bits, als der Eingabewert enthält, in die Vergleichsschaltung zu leiten, wenn z. B. Bits, die in der Eintragsauswahlschaltung verwendet werden, nicht erneut verglichen werden müssen. Dies reduziert die Anzahl von Speicherbits in dem Spezifizierungsspeicher. Es ist auch möglich, in dieser Schaltung zu überprüfen, ob bestimmte Bedingungen durch die Eingabe erfüllt werden, bevor das Durchführen einer Operation in dem Block erlaubt wird. Dies ist insbesondere nützlich, wenn während der Steuerphase alle Einträge in einer Gruppe so ausgewählt werden, dass alle Einträge in dieser Gruppe bestimmte Kriterien erfüllen. Diese Kriterien können dann zu Durchlasskriterien werden, die durch den Vergleichs-, Tor- und Modifizierungsschaltung bewirkt wird. In diesem Fall werden nicht alle Blöcke des CAM 300 während jedes Vergleichsvorgangs aktiviert, was weiterhin zu einer Leistungseinsparung führt.

Claims (1)

  1. Verfahren zum Implementieren von inhaltsadressierbaren Speichern mit den folgenden Schritten: a) Aufteilen von Einträgen eines inhaltsadressierbaren Speichers in verschiedene Gruppen, wobei nicht mehr als ein Eintrag einer der Gruppen mit einer vorgegebenen Eingabe übereinstimmen kann und wobei eine der verschiedenen Gruppen so gruppiert ist, dass die Angabe, welche Bits verglichen werden sollen, für die gesamte Gruppe gemeinsam ist; b) Auswählen einer Anzahl von Bitpositionen für jede der Gruppen als sich unterscheidende Bitpositionen, wobei die Werte der Einträge in den ausgewählten sich unterscheidenden Bitpositionen ausreichend sind, um die Einträge in jeder der Gruppen eindeutig zu identifizieren, und wobei die Werte der Einträge an den ausgewählten, sich unterscheidenden Bitpositionen in jeder der Gruppen nicht "don't care"-Werte sind; c) Konfigurieren einer Eintragsbitauswahlschaltung (302) mit den ausgewählten, sich unterscheidenden Bitpositionen, d) Konfigurieren einer Eintragsauswahlschaltung (305) mit Werten aus den Einträgen an den sich unterscheidenden Bitpositionen, wobei die Eintragauswahlschaltung (305) einem binären inhaltsadressierbaren Speicher entspricht, und wobei die Eintragauswahlschaltung (305) weiterhin eine mehrstufige Schaltung umfasst, um die Übereinstimmungsfunktion durchzuführen; e) Laden der Einträge in einen Angabenspeicher (301) an Positionen, die den sich unterscheidenden Bits in der Eintragsauswahlschaltung (305) entsprechen; f) Auswählen der Bits von der Eingabe an Positionen, die in der Eintragbitauswahlschaltung (302) konfiguriert sind; g) Überprüfen der Übereinstimmung des Werts des ausgewählten Eingabebits und zumindest eines der Werte, die in der Eintragauswahlschaltung (305) konfiguriert sind; h) Auslesen eines Eintrags aus dem Angabenspeicher (301) an der Position, die der Übereinstimmungsposition in der Eintragsauswahlschaltung (305) entspricht; i) Modifizieren des Eintrags, der aus dem Angabenspeicher (301) ausgelesen wird; j) Vergleichen des modifizierten Eintrags mit der Eingabe (203), und k) Ausgeben von Ergebnissen des Vergleichs.
DE602004010922T 2003-10-11 2004-10-12 Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen Active DE602004010922T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US51076103P 2003-10-11 2003-10-11
US510761P 2003-10-11
PCT/US2004/033802 WO2005038591A2 (en) 2003-10-11 2004-10-12 Memory and power efficient mechanism for fast table lookup

Publications (2)

Publication Number Publication Date
DE602004010922D1 DE602004010922D1 (de) 2008-02-07
DE602004010922T2 true DE602004010922T2 (de) 2008-12-18

Family

ID=34465145

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004010922T Active DE602004010922T2 (de) 2003-10-11 2004-10-12 Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen

Country Status (8)

Country Link
US (6) US7162572B2 (de)
EP (1) EP1671217B1 (de)
JP (1) JP2007508653A (de)
CN (1) CN100440169C (de)
AT (1) ATE382166T1 (de)
CA (1) CA2540213C (de)
DE (1) DE602004010922T2 (de)
WO (1) WO2005038591A2 (de)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1671217B1 (de) * 2003-10-11 2007-12-26 Spans Logic Inc. Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen
US7230839B2 (en) * 2003-10-21 2007-06-12 Stmicroelectronics, Inc. Magnitude content addressable memory
US8656039B2 (en) 2003-12-10 2014-02-18 Mcafee, Inc. Rule parser
US8548170B2 (en) 2003-12-10 2013-10-01 Mcafee, Inc. Document de-registration
US7774604B2 (en) * 2003-12-10 2010-08-10 Mcafee, Inc. Verifying captured objects before presentation
US7984175B2 (en) 2003-12-10 2011-07-19 Mcafee, Inc. Method and apparatus for data capture and analysis system
US7814327B2 (en) * 2003-12-10 2010-10-12 Mcafee, Inc. Document registration
US20050131876A1 (en) * 2003-12-10 2005-06-16 Ahuja Ratinder Paul S. Graphical user interface for capture system
US7899828B2 (en) 2003-12-10 2011-03-01 Mcafee, Inc. Tag data structure for maintaining relational data over captured objects
US7930540B2 (en) * 2004-01-22 2011-04-19 Mcafee, Inc. Cryptographic policy enforcement
US7219188B1 (en) * 2004-02-06 2007-05-15 Netlogic Microsystems, Inc. Segmented content addressable memory array and priority encoder
US7962591B2 (en) 2004-06-23 2011-06-14 Mcafee, Inc. Object classification in a capture system
US8886677B1 (en) 2004-07-23 2014-11-11 Netlogic Microsystems, Inc. Integrated search engine devices that support LPM search operations using span prefix masks that encode key prefix length
US7653619B1 (en) 2004-07-23 2010-01-26 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that support variable tree height
US7603346B1 (en) 2004-07-23 2009-10-13 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and b-tree maintenance sub-engines therein
US7747599B1 (en) 2004-07-23 2010-06-29 Netlogic Microsystems, Inc. Integrated search engine devices that utilize hierarchical memories containing b-trees and span prefix masks to support longest prefix match search operations
US7725450B1 (en) 2004-07-23 2010-05-25 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that maintain search coherence during multi-cycle update operations
US8560534B2 (en) 2004-08-23 2013-10-15 Mcafee, Inc. Database for a capture system
US7949849B2 (en) 2004-08-24 2011-05-24 Mcafee, Inc. File system for a capture system
US7907608B2 (en) 2005-08-12 2011-03-15 Mcafee, Inc. High speed packet capture
US7818326B2 (en) * 2005-08-31 2010-10-19 Mcafee, Inc. System and method for word indexing in a capture system and querying thereof
US7730011B1 (en) 2005-10-19 2010-06-01 Mcafee, Inc. Attributes of captured objects in a capture system
US7657104B2 (en) 2005-11-21 2010-02-02 Mcafee, Inc. Identifying image type in a capture system
KR100705593B1 (ko) * 2006-01-25 2007-04-09 삼성전자주식회사 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법
EP1821571A1 (de) * 2006-02-15 2007-08-22 Oticon A/S Schleifenantenne für In-dem-Ohr-Hörereinrichtung
US8504537B2 (en) 2006-03-24 2013-08-06 Mcafee, Inc. Signature distribution in a document registration system
US8010689B2 (en) * 2006-05-22 2011-08-30 Mcafee, Inc. Locational tagging in a capture system
US7958227B2 (en) 2006-05-22 2011-06-07 Mcafee, Inc. Attributes of captured objects in a capture system
US7689614B2 (en) 2006-05-22 2010-03-30 Mcafee, Inc. Query generation for a capture system
CN100590614C (zh) * 2006-08-23 2010-02-17 联想(北京)有限公司 一种虚拟技术下硬盘数据的保护方法和保护系统
US7697518B1 (en) 2006-09-15 2010-04-13 Netlogic Microsystems, Inc. Integrated search engine devices and methods of updating same using node splitting and merging operations
US7987205B1 (en) 2006-11-27 2011-07-26 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations
US7953721B1 (en) 2006-11-27 2011-05-31 Netlogic Microsystems, Inc. Integrated search engine devices that support database key dumping and methods of operating same
US8086641B1 (en) 2006-11-27 2011-12-27 Netlogic Microsystems, Inc. Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same
US7831626B1 (en) 2006-11-27 2010-11-09 Netlogic Microsystems, Inc. Integrated search engine devices having a plurality of multi-way trees of search keys therein that share a common root node
US7886176B1 (en) 2007-09-24 2011-02-08 Integrated Device Technology, Inc. DDR memory system for measuring a clock signal by identifying a delay value corresponding to a changed logic state during clock signal transitions
US7716204B1 (en) 2007-12-21 2010-05-11 Netlogic Microsystems, Inc. Handle allocation managers and methods for integated circuit search engine devices
TWI348297B (en) * 2008-01-25 2011-09-01 Univ Nat Taiwan Two-stage computer network packet classification method and system
JP5140849B2 (ja) 2008-02-13 2013-02-13 ルネサスエレクトロニクス株式会社 内容参照メモリ
US7801877B1 (en) 2008-04-14 2010-09-21 Netlogic Microsystems, Inc. Handle memory access managers and methods for integrated circuit search engine devices
US8205242B2 (en) 2008-07-10 2012-06-19 Mcafee, Inc. System and method for data mining and security policy management
US9253154B2 (en) 2008-08-12 2016-02-02 Mcafee, Inc. Configuration management for a capture/registration system
KR101111661B1 (ko) * 2008-12-10 2012-02-14 주식회사 다인정공 파이프렌치
US8850591B2 (en) 2009-01-13 2014-09-30 Mcafee, Inc. System and method for concept building
US8706709B2 (en) 2009-01-15 2014-04-22 Mcafee, Inc. System and method for intelligent term grouping
US8473442B1 (en) 2009-02-25 2013-06-25 Mcafee, Inc. System and method for intelligent state management
US8984431B2 (en) 2009-03-16 2015-03-17 Apple Inc. Device, method, and graphical user interface for moving a current position in content at a variable scrubbing rate
US8667121B2 (en) 2009-03-25 2014-03-04 Mcafee, Inc. System and method for managing data and policies
US8447722B1 (en) 2009-03-25 2013-05-21 Mcafee, Inc. System and method for data mining and security policy management
KR20100107801A (ko) * 2009-03-26 2010-10-06 삼성전자주식회사 무선 통신 시스템에서 안테나 선택을 위한 장치 및 방법
US8806615B2 (en) 2010-11-04 2014-08-12 Mcafee, Inc. System and method for protecting specified data combinations
US9436402B1 (en) 2011-04-18 2016-09-06 Micron Technology, Inc. Methods and apparatus for pattern matching
US8700561B2 (en) 2011-12-27 2014-04-15 Mcafee, Inc. System and method for providing data protection workflows in a network environment
US9245626B2 (en) 2012-10-26 2016-01-26 Cisco Technology, Inc. System and method for packet classification and internet protocol lookup in a network environment
US20210398325A1 (en) * 2020-06-22 2021-12-23 Advanced Micro Devices, Inc. Delta triplet index compression

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4758982A (en) * 1986-01-08 1988-07-19 Advanced Micro Devices, Inc. Quasi content addressable memory
US4882583A (en) * 1988-05-31 1989-11-21 International Business Machines Corporation Modified sliding block code for limiting error propagation
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
US6715028B1 (en) * 1993-11-19 2004-03-30 Kabushiki Kaisha Toshiba Data selecting memory device and selected data transfer device
US5488364A (en) * 1994-02-28 1996-01-30 Sam H. Eulmi Recursive data compression
US6098150A (en) * 1995-11-17 2000-08-01 Sun Microsystems, Inc. Method and apparatus for fetching information from a cache memory
US5918245A (en) * 1996-03-13 1999-06-29 Sun Microsystems, Inc. Microprocessor having a cache memory system using multi-level cache set prediction
US5897655A (en) * 1996-12-10 1999-04-27 International Business Machines Corporation System and method for cache replacement within a cache set based on valid, modified or least recently used status in order of preference
US6016533A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
CN1169302C (zh) * 1998-09-14 2004-09-29 西加特技术有限责任公司 用于对24比特序列数据的编码和解码技术
US6289414B1 (en) * 1998-10-08 2001-09-11 Music Semiconductors, Inc. Partially ordered cams used in ternary hierarchical address searching/sorting
US6266262B1 (en) 1998-11-05 2001-07-24 Lara Technology, Inc. Enhanced binary content addressable memory for longest prefix address matching
US6417788B1 (en) * 1999-07-09 2002-07-09 Maxtor Corporation High rate runlength limited codes for 10-bit ECC symbols
CA2277717C (en) 1999-07-12 2006-12-05 Mosaid Technologies Incorporated Circuit and method for multiple match detection in content addressable memories
US6560610B1 (en) 1999-08-10 2003-05-06 Washington University Data structure using a tree bitmap and method for rapid classification of data in a database
US6757779B1 (en) * 1999-09-23 2004-06-29 Netlogic Microsystems, Inc. Content addressable memory with selectable mask write mode
US6542391B2 (en) * 2000-06-08 2003-04-01 Netlogic Microsystems, Inc. Content addressable memory with configurable class-based storage partition
US6944709B2 (en) * 1999-09-23 2005-09-13 Netlogic Microsystems, Inc. Content addressable memory with block-programmable mask write mode, word width and priority
US6934795B2 (en) * 1999-09-23 2005-08-23 Netlogic Microsystems, Inc. Content addressable memory with programmable word width and programmable priority
US6331961B1 (en) 2000-06-09 2001-12-18 Silicon Access Networks, Inc. DRAM based refresh-free ternary CAM
JP4596733B2 (ja) * 2000-11-21 2010-12-15 アスペックス・セミコンダクター・リミテッド 内容照合(連想)記憶装置に関する改良
US6910097B1 (en) * 2001-04-09 2005-06-21 Netlogic Microsystems, Inc. Classless interdomain routing using binary content addressable memory
JP2003157677A (ja) * 2001-11-16 2003-05-30 Fujitsu Ltd 連想メモリ及びそのメモリセル
US6745280B2 (en) * 2002-03-28 2004-06-01 Integrated Device Technology, Inc. Content addressable memories having entries stored therein with independently searchable weight fields and methods of operating same
CN1396524A (zh) * 2002-08-26 2003-02-12 中国电子科技集团公司第十三研究所 内容联想式存储器
US20040044868A1 (en) * 2002-08-30 2004-03-04 Intel Corporation Method and apparatus for high-speed longest prefix match of keys in a memory
US7054995B2 (en) * 2003-04-23 2006-05-30 Integrated Silicon Solution, Inc. Dynamic linking of banks in configurable content addressable memory systems
US6812870B1 (en) * 2003-09-11 2004-11-02 Xilinx, Inc. Enhanced 8b/10b encoding/decoding and applications thereof
EP1671217B1 (de) * 2003-10-11 2007-12-26 Spans Logic Inc. Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen

Also Published As

Publication number Publication date
US7292162B2 (en) 2007-11-06
CA2540213A1 (en) 2005-04-28
EP1671217B1 (de) 2007-12-26
US20060253646A1 (en) 2006-11-09
EP1671217A2 (de) 2006-06-21
US20060253647A1 (en) 2006-11-09
US7296113B2 (en) 2007-11-13
US7406561B2 (en) 2008-07-29
US20060253648A1 (en) 2006-11-09
WO2005038591A2 (en) 2005-04-28
US7296114B2 (en) 2007-11-13
US7321952B2 (en) 2008-01-22
WO2005038591A3 (en) 2006-05-18
US20050138279A1 (en) 2005-06-23
CA2540213C (en) 2013-02-12
CN100440169C (zh) 2008-12-03
US20070285290A1 (en) 2007-12-13
DE602004010922D1 (de) 2008-02-07
US20060259682A1 (en) 2006-11-16
EP1671217A4 (de) 2006-11-02
JP2007508653A (ja) 2007-04-05
CN1867901A (zh) 2006-11-22
ATE382166T1 (de) 2008-01-15
US7162572B2 (en) 2007-01-09

Similar Documents

Publication Publication Date Title
DE602004010922T2 (de) Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen
EP0010195B1 (de) Vorrichtung zur Adressumwandlung in einer Datenverarbeitungsanlage
DE2646163C3 (de) Schaltungsanordnung zum Ersetzen fehlerhafter Informationen in Speicherplätzen eines nicht veränderbaren Speichers
DE2139731C2 (de) Anordnung zur Code-Umsetzung
DE2646162C3 (de) Schaltungsanordnung zum Ersetzen fehlerhafter Informationen in Speicherplätzen eines nicht veränderbaren Speichers
DE2730328B2 (de) Schaltungsanordnung zur Feststellung des bestübereinstimmenden Datenworts von in einem Datenwort-Speicher gespeicherten Datenworten mit einem Suchwort
DE2712575C2 (de) Assoziatives Speichersystem in hochintegrierter Halbleitertechnik
DE19839205A1 (de) Assoziativspeicher mit einer Maskenfunktion zur Verwendung in einem Netzwerkrouter
DE2208664A1 (de) Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge
DE69722085T2 (de) Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Botschaften
WO1999017226A1 (de) Verfahren zum hinzufügen bzw. entfernen einer adresse in einem teilbesetzten, nicht-balancierten binären baum
DE2421130C2 (de)
DE2926322A1 (de) Speicher-subsystem
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge
DE69933043T2 (de) Verfahren und vorrichtung für einen adaptiven generator von adressennachschlagtabellen
DE2218839B2 (de) Einrichtung zur Zuteilung von Speicheradressen zu einer Gruppe von Datenelementen
DE3137704C2 (de) Vorrichtung zum Decodieren eines baumförmigen Codes variabler Länge
DE4210109C2 (de) Sortiervorrichtung zum Sortieren von Daten und Sortierverfahren
DE2121490A1 (de) Orthogonaler Datenspeicher
DE2729361A1 (de) Speicherschaltung
DE2164718A1 (de) Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/Ausgabe-Einheiten mittels einer Zentraleinheit
DE2519195A1 (de) Assoziativspeicher
DE2525287A1 (de) Assoziativspeicher
DE1808159A1 (de) Einrichtung zur Umwandlung von Dualzahlen in binaer codierte Dezimalzahlen in paralleler Darstellung
DE19531635C1 (de) Ordnungsverfahren für Zugehörigkeitsfunktionswerte lingustischer Eingangswerte in einem Fuzzy-Logic-Prozessor und Anordnungen zu deren Durchführung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition