DE60120790T2 - Methode und gerät zum durchsuchen von tabellen in hoher geschwindigkeit - Google Patents

Methode und gerät zum durchsuchen von tabellen in hoher geschwindigkeit Download PDF

Info

Publication number
DE60120790T2
DE60120790T2 DE60120790T DE60120790T DE60120790T2 DE 60120790 T2 DE60120790 T2 DE 60120790T2 DE 60120790 T DE60120790 T DE 60120790T DE 60120790 T DE60120790 T DE 60120790T DE 60120790 T2 DE60120790 T2 DE 60120790T2
Authority
DE
Germany
Prior art keywords
search
agents
match
entries
unit
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
DE60120790T
Other languages
English (en)
Other versions
DE60120790D1 (de
Inventor
Sungik Dennis Saratoga LEE
Veng-Chong Michael San Jose LAU
Adrien Pei-Feng San Jose WANG
Bernard Chuen-Shen San Jose SHUNG
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.)
Broadcom Corp
Original Assignee
Broadcom Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Broadcom Corp filed Critical Broadcom Corp
Publication of DE60120790D1 publication Critical patent/DE60120790D1/de
Application granted granted Critical
Publication of DE60120790T2 publication Critical patent/DE60120790T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Wire Bonding (AREA)
  • Radar Systems Or Details Thereof (AREA)

Description

  • Die vorliegende Anmeldung beansprucht die Priorität der am 09.03.2000 hinterlegten Vorläufigen US-Patentanmeldung mit dem amtlichen Aktenzeichen Nr. 60/188,335. Auf den Inhalt dieser Patentanmeldung wird hiermit vollinhaltlich Bezug genommen.
  • HINTERGRUND DER ERFINDUNG
  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft allgemein ein Verfahren und eine Vorrichtung zum Suchen einer elektronisch gespeicherten Informationstabelle, die eine Mehrzahl von Tabelleneinträgen enthält, und genauer ein Verfahren und eine Vorrichtung zum Erleichtern einer linearen Hochgeschwindigkeitsdurchsuchung einer Tabelle durch eine Mehrzahl von Agenten, von denen jeweils gefordert wird, dass sie viele Einträge der Tabelle unter Verwendung von verschiedenen Suchargumenten durchsuchen.
  • BESCHREIBUNG DES EINSCHLÄGIGEN STANDES DER TECHNIK
  • Auf den Gebieten der elektronischen Datenkommunikationen und Datenverarbeitung werden elektronisch gespeicherte Tabellen in einer großen Vielfalt von Anwendungen verwendet, um ein Mapping zwischen zwei oder mehr Informationsräumen zur Verfügung zu stellen. Die Tabellen mit Informationen, die eine Mehrzahl von Einträgen enthalten, können gemäß vielen verschiedenen Verfahren durchsucht werden.
  • Im Allgemeinen durchsucht ein Suchagent eine Tabelle unter Verwendung eines Suchargumentes und kann einen oder mehr Tabelleneinträge lesen, um je nach den Anforderungen bestimmter Anwendungen einen exakten Abgleich oder einen besten Abgleich zu bestimmen. Es ist ein allgemeines Entwurfserfordernis, dass von jedem von einer Mehrzahl von Suchagenten mit verschiedenen Suchargumenten verlangt wird, eine einzelne Informationstabelle zu durchsuchen. Für Anwendungen, bei denen es im allgemeinen nicht machbar ist, eine Vielzahl von Speichervorrichtungen zu verwenden, welche die Informationstabelle speichern, wird typischerweise eine Arbitrationsmethode angewendet, um Anforderungen von jedem der Suchagenten für einen Zugriff auf die einzelne Tabelle aufzulösen.
  • Es wurden viele Algorithmen und Vorrichtungen zum effizienten Durchsuchen von Tabellen mit Informationen entwickelt. Ein grundlegendes Verfahren, das rein auf der Menge von Ressourcen beruht, ist die lineare Suche, wobei eine Vorrichtung eine Tabelle linear, Eintrag um Eintrag, durchsucht. Eine lineare Suche ist das einfachste Suchverfahren und ist ideal zum Durchsuchen von kleinen Tabellen in Anwendungen mit langsamen Sucherfordernissen. Die lineare Suche wird jedoch unpraktikabel, sobald die Tabellengröße zunimmt, da die maximale Suchzeit proportional zur Tabellengröße ist.
  • Um die Tabellensuchzeit zu verkürzen, können binäre Suchverfahren verwendet werden, wobei alle Einträge der Tabelle in einer bestimmten Reihenfolge sortiert werden, und die Suchzeiten sind gleich log2 (Tabellengröße). Binäre Suchverfahren sind insbesondere wünschenswert für das Durchsuchen von großen Tabellen unter Verwendung von Software, jedoch ist das Sortieren der Tabelleneinträge in einer bestimmten Reihenfolge keine einfache Aufgabe. Aufgrund dieses hohen Wartungserfordernisses ist es häufig nicht durchführbar, die binäre Suche als Hardware auszuführen.
  • Eines der schnellsten Verfahren der Tabellensuche verwendet eine inhaltsadressierbare Speicher (CAM)-Suche, wobei alle Tabelleneinträge gleichzeitig mit einem Suchargument verglichen werden, und das Suchergebnis sofort an einen Ausgang geliefert wird. Eine CAM-Suche stellt jedoch eine hohe Suchleistung auf Kosten der Ausführung einer größeren Logik unter Verwendung einer größeren Menge von Siliziumplatz zur Verfügung. Darüber hinaus gibt es typischerweise eine Grenze für die Größe von Vergleichsfeldern (d.h. der Datenbreite) und die Größe von Nutzlastfeldern, die bei einer CAM-Suche verwendet werden können.
  • Einige der üblichsten Verfahren der Tabellensuche wenden Hash-Algorithmen an, bei denen Tabelleneinträge gemäß dem bestimmten Typ von Hash-Algorithmus (d.h. crc32) in verschiedene Buckets gruppiert werden. Suchsysteme, die Hash-Algorithmen anwenden, sind in der Lage, den Suchbereich auf eine spezifische Stelle (ein Bucket) einzuengen, und dies begrenzt die maximale Suchzeit. Die maximale Tabellensuchzeit basiert auf der Größe des Bucket, und die Tabellensuchzeit bleibt konstant, auch wenn sich die Anzahl von Buckets vergrößert. Während die Anzahl der Tabelleneinträge zunimmt, erhöht sich auch die Möglichkeit, dass zwei oder mehr Einträge in einen gleichen Bucket gehasht werden. Falls der maximale Tabelleneintrag (die Tabellengröße) beträchtlich größer als die typische Anzahl von Einträgen ist, die zur gleichen Zeit verwendet werden, und der Hash-Algorithmus die Einträge gleichmäßig verteilt, besteht durchaus die Möglichkeit, dass sich ein oder zwei Einträge in einem Bucket befinden. In diesem Fall ist die durchschnittliche Suchzeit eher kurz (ein oder zwei Taktzyklen pro Suche). Ein guter Hash-Algorithmus verstreut Tabelleneinträge gleichmäßig über die Suchtabelle, jedoch besteht eine Möglichkeit, dass viele Tabelleneinträge in das gleiche Bucket gehasht werden können. Somit ist die Verwendung von 100 Prozent einer Tabelle nicht praktisch, und die Größe der Tabelle muss oft viel größer als die typische Anzahl von Tabelleneinträgen sein.
  • Auf dem Gebiet der Datenkommunikationen gibt es viele Anwendungen, wobei es erforderlich ist, dass jeder von einer Mehrzahl von Suchagenten eine einzelne Informationstabelle durchsucht. Bei Routing- und Schaltvorrichtungen wird häufig eine Informationstabelle verwendet, um einen Mappingmechanismus zum Weiterleiten von Daten zur Verfügung zu stellen, typischerweise in Form eines Paketes (z.B. eines Ethernet-Paketes), von einer Stelle zu einer anderen Stelle.
  • Während Pakete an jedem von einer Mehrzahl von zugeordneten Ports einer Schalt- oder Routervorrichtung eintreffen, muss eine Mehrzahl von Port-Suchagenten, die jeweils einem der Ports zugeordnet sind, in der Tabelle gespeicherte Informationen durchsuchen, um eine angemessene Aktion zu bestimmen. Falls die Tabelle beispielsweise einen Eintrag enthält, der eine Richtung für das angekommene Paket zur Verfügung stellt, leitet die Vorrichtung das Paket in die angegebene Richtung weiter. Falls die Tabelle keinen Eintrag enthält, der eine Richtung für das angekommene Paket zur Verfügung stellt, kann die Vorrichtung das Paket basierend auf einer vorgegebenen Einstellung behandeln. Beispiele für vorgegebene Einstellungen umfassen das Senden des Paketes an alle verfügbaren Ports (Broadcasting), Senden des Paketes an eine zentrale Verarbeitungseinheit (CPU) für eine Analyse gemäß einer vorausgehend definierten Gruppe von Regeln, oder Fallenlassen des Paketes. Für Ethernet-Routinganwendungen wird eine Informationstabelle typischerweise auf der Grundlagen von bestimmten Feldern (z.B. einer Mediumzugriffsteuerungs(MAC)-Adresse, einer Ix-Adresse, einer Virtual LAN ID o.dgl.) eines Paketes organisiert.
  • Wenn bestimmte Felder des Paketes mit bestimmten Feldern der Tabelle übereinstimmen, verwendet die Vorrichtung die entsprechenden Informationen in der Tabelle, um das Paket weiter zu leiten.
  • Bei herkömmlichen Tabellensuchsystemen, bei denen es erforderlich ist, dass eine Mehrzahl von Suchagenten eine einzelne Informationstabelle durchsucht, wird typischerweise ein "Pull"-Suchverfahren angewendet, wobei es erforderlich ist, dass jeder der Suchagenten eine Tabellensuche initiiert. Es wird üblicherweise eine Arbitrationsmethode angewendet, um Anforderungen aufzulösen, die von jedem von einer Mehrzahl von Suchagenten für einen Zugriff auf die einzelne Tabelle initiiert wurden.
  • 1 zeigt ein verallgemeinertes Blockdiagramm eines herkömmlichen Tabelleninformationen-Suchsystems unter 10, wobei das System gemäß herkömmlichen Pull-Suchmethoden arbeitet. Das System 10 weist eine Mehrzahl von N + 1 Suchagenten 12 auf, die als AGENT_0, AGENT_1, ... AGENT_N bezeichnet sind. Als ein Beispiel kann jeder der Suchagenten 12 ein Portagent sein, der kommunikationsmäßig mit einem Empfangsport einer Schaltvorrichtung gekoppelt ist. Jeder der Suchagenten 12 weist einen Empfängerport 14 zum Empfangen eines Suchargumentes (z.B. einer Bestimmungsadresse einer Datenhülle) auf; einen Arbitrations-Anforderungssignal-Ausgangsport 16 zum Liefern eines von einer Mehrzahl von N + 1 Anforderungssignalen, die als REQ_0, REQ_1, ... REQ_N bezeichnet sind; einen Arbitrationserteilungssignal-Eingangsport 18 zum Empfangen eines zugeordneten von einer Mehrzahl von N + 1 Erteilungssignalen, die als GNT_0, GNT_1, ... GNT_N bezeichnet sind; einen Tabellendateneingangsport 20 zum Empfangen von Tabelleninformationen über einen Tabellendatenbus 21, wie weiter unten erläutert wird; und einen Speicheradressen-Ausgangsport 22 zum Liefern von Adressenwerten an einen Suchadressenbus 23, wie weiter unten erläutert wird.
  • Das System 10 weist ferner auf eine Arbitrationslogikeinheit 26 mit einer Mehrzahl von Anforderungssignal-Eingangsports 28 zum Empfangen von zugeordneten der Arbitrations-Anforderungssignale, und eine Mehrzahl von N + 1 Arbitrations-Erteilungssignal-Ausgangsports 30, die jeweils ein zugeordnetes der Arbitrations-Erteilungssignale an den Port 18 eines zugeordneten der Agenten 12 liefern; und eine Tabelleninformationen-Speichereinheit 36 zum Speichern einer Informationstabelle, die einen Tabellendaten-Ausgangsport 38 zum Liefern von Tabellendaten an den Tabellendaten-Eingangsport 20 von ausgewählten der Suchagenten 12 über den Bus 21 aufweist, und einen Suchadressen-Eingangsport 40 zum Empfangen der Speicheradressenwerte von den Ports 22 von ausgewählten der Agenten 12.
  • Die Tabelleninformationen-Speichereinheit 36 ist typischerweise unter Verwendung von SRAM (Static Random Access Memory)-Technologie ausgeführt, weshalb jeweils nur auf einen der Einträge der darin gespeicherten Informationstabelle zugegriffen werden kann. Wegen dieses grundlegenden Merkmals der SRAM-Technologie kann jeweils nur einer der Agenten 12 auf die Tabelleninformationeneinheit 36 zugreifen. Es kann jedoch jeder der Agenten 12 einen verschiedenen Suchargumentwert zum Durchsuchen der in der Speichereinheit 36 gespeicherten Tabelle besitzen, so dass ein Konflikt besteht.
  • Da jeweils nur auf einen der in der Speichereinheit 36 gespeicherten Tabelleneinträge zugegriffen werden kann, wird die Arbitrationslogikeinheit 26 benötigt, um zwischen Anforderungen zu vermitteln, die von den Suchagenten 12 für einen Zugriff auf die Speichereinheit empfangen werden. Die Arbitrationslogikeinheit 26 empfängt die Anforderungen und löst sie auf, und gestattet, dass entsprechende der Suchagenten 12 ausgewählt werden. Im Ansprechen auf das Aktivieren des zugeordneten Erteilungssignals beginnt ein ausgewählter Suchagent 12, einen oder mehr Adressenwerte sequentiell über den Bus 23 an den Port 40 der Speichereinheit 36 zu liefern. Im Ansprechen auf jeden der Adressenwerte liefert die Speichereinheit die Inhalte eines an der angegebenen Adresse gespeicherten Tabelleneintrags an alle Agenten über den Datenbus, obgleich nur ausgewählte Agenten die Daten aus dem Speicher verarbeiten. Jeder der Agenten hat die Funktion, einen Suchvorgang auszuführen, um einen Abgleich zwischen dem Suchargumentwert und einem der Tabelleneinträge zu bestimmen. Falls das Suchsystem jeden Tabelleneintrag durchsuchen muss, um einen besten verfügbaren Abgleich anstelle eines exakten Abgleichs zu bestimmen, wird die erforderliche Suchzeit sehr lang.
  • Ein Problem im Zusammenhang mit dem Tabellensuchsystem 10 des Standes der Technik besteht darin, dass das System nicht auf eine große Anzahl von Suchagenten 12 skalierbar ist, da jeweils nur einer der Agenten 12 auf die Tabelleninformationeneinheit 36 zugreifen kann, so dass bei einer zunehmenden Anzahl von Suchagenten die insgesamt erforderliche Suchzeit zum Verarbeiten aller Suchargument linear zunimmt, gemäß "Pull"-Suchmethoden jeweils nur ein Suchargument verarbeitet werden kann. Anders ausgedrückt, die Gesamtzahl von Zyklen, die für eine Suche erforderlich ist, ist proportional zu der Anzahl von Suchagenten.
  • Beispielsweise nimmt in einer Schaltvorrichtung, während die Anzahl von Port-Suchagenten (mit jeweils einer anderen Bestimmungsadresse eines zugeordneten ankommenden Paketes) linear zunimmt, die erforderliche Suchzeit linear zu, da gemäß "Pull"-Suchmethoden jeweils nur ein Paket verarbeitet werden kann. Dies wird zu einem engen Flaschenhals, wenn es nötig ist, dass die Schaltvorrichtung eine große Anzahl von Paketen gleichzeitig verarbeitet. Wenn z.B. die minimale Paketweiterleitungszeit 80 Taktzyklen beträgt und die maximale Suchzeit acht Taktzyklen beträgt, kann die Schaltvorrichtung ein Maximum von zehn Paketen zur selben Zeit weiter leiten. Falls die Schaltvorrichtung gleichzeitig mehr als zehn Pakete weiter leiten soll, wird die Suchtabelle unter Verwendung einer "Pull"-Suchmethode zu einem Leistungsflaschenhals. Dies ist von besonderer Wichtigkeit, wenn die maximale Suchzeit sehr lang ist. Falls das Suchsystem jeden Tabelleneintrag durchsuchen soll, um einen besten verfügbaren Abgleich anstatt eines exakten Abgleichs zu bestimmen, ist die Suchzeit zum Verarbeiten mehrerer Pakete ziemlich lang.
  • Das Dokument "SCHULTZ K J ET AL.: "Architectures for large-capacity CAMs" INTEGRATION, THE VLSI JOURNAL, NORTH-HOLLAND PUBLISHING COMPANY. AMSTERDAM, NL, Vol. 18, No. 2, 1. Juni 1995 (1995-06-01), S. 151–171, ISBN: 0167-9260" beschreibt mehrere Speicherarchitekturen zum Überwinden von Nachteilen der Schaltungsdichte von inhaltsadressierbaren Speichern (CAMs).
  • Es ist eine Aufgabe der vorliegenden Erfindung, ein Verfahren und eine Vorrichtung zum Erleichtern einer linearen Hochgeschwindigkeitsdurchsuchung einer Informationstabelle durch eine Mehrzahl von Suchagenten zur Verfügung zu stellen, die jeweils die Inhalte von vielen Einträgen der Tabelle unter Verwendung von verschiedenen Suchargumenten durchsuchen sollen.
  • Es ist auch eine Aufgabe der vorliegenden Erfindung, ein hochleistungsfähiges und kostengünstiges Verfahren sowie eine solche Vorrichtung zum Erleichtern einer linearen Hochgeschwindigkeitsdurchsuchung einer Tabelle durch eine Mehrzahl von Suchagenten zur Verfügung zu stellen.
  • Es ist eine weitere Aufgabe der vorliegenden Erfindung, ein Verfahren und eine Vorrichtung zum Erleichtern einer linearen Hochgeschwindigkeitsdurchsuchung einer Informationstabelle durch eine Mehrzahl von Agenten zur Verfügung zu stellen, wobei die Anzahl von Suchagenten leicht skalierbar ist, ohne dabei Suchleistung zu opfern.
  • Diese Aufgaben werden durch ein Tabellensuchverfahren gemäß den Angaben in Patentanspruch 1 und ein Tabellensuchsystem gemäß den Angaben in Patentanspruch 10 gelöst.
  • Vorteilhafte Ausführungsformen der Erfindung sind in den Unteransprüchen definiert.
  • Bei einer Ausführungsform ist die vorliegende Erfindung auf ein Tabellensuchverfahren gerichtet. Bei dem Verfahren wird mindestens eine Speichereinheit vorgesehen, die eine Informationstabelle mit einer Mehrzahl von Dateneinträgen aufweist, und es wird eine Mehrzahl von Suchagenten vorgesehen, wobei jeder Agent kommunikationsmäßig mit der Speichereinheit gekoppelt ist. Jeder der Suchagenten empfängt einen zugeordneten Suchwert und empfängt auch einen Tabelleneintrag von der Mehrzahl von Dateneinträgen. Die Agenten verarbeiten den Tabelleneintrag, um zu bestimmen, ob ein Abgleich zwischen dem zugeordneten Suchwert und dem Tabelleneintrag auftritt.
  • Darüber hinaus kann das Tabellensuchverfahren angewendet werden, wenn die Speichereinheit eine Mehrzahl von Tabellen aufweist und die Agenten sowohl den Tabelleneintrag als auch eine Tabellenadresse empfangen, die einer ausgewählten Tabelle der Mehrzahl von Tabellen zugeordnet ist. Die Abgleichbestimmung kann als ein zugeordnetes bestes Abgleichen einer Mehrzahl von Tabelleneinträgen gemäß einem Longest-Prefix-Match-Suchvorgang oder einem Policy-Match-Suchvorgang bewerkstelligt werden.
  • Das Tabellensuchverfahren stellt auch eine Controllereinheit zur Verfügung, welche die Speichereinheit steuert und eine Reihe von Speicheradressenwerten an die Speichereinheit durch die Controllereinheit zur Verfügung stellt. In diesem Fall basieren die von jedem der Agenten empfangenen Tabelleneinträge auf den Speicherad ressenwerten. Zusätzlich ist jeder der Agenten kommunikationsmäßig mit der Controllereinheit gekoppelt, und jeder der Agenten liefert ein Suche-Freigabesignal an die Controllereinheit im Ansprechen auf den Empfang des zugeordneten Suchwertes. Somit liefert die Controllereinheit nicht die Reihe von Speicheradressenwerten, bis ein Suche-Freigabesignal von mindestens einem der Agenten empfangen wird.
  • Bei einer Ausführungsform ist die vorliegende Erfindung auf ein Tabellensuchverfahren gerichtet. Bei dem Verfahren wird mindestens eine Speichereinheit mit einer Informationstabelle vorgesehen, die eine Mehrzahl von Dateneinträgen und eine Mehrzahl von Suchagenten aufweist, wobei jeder Agent kommunikationsmäßig mit der Speichereinheit gekoppelt ist. Ein Tabelleneintrag von der Mehrzahl von Dateneinträgen wird durch die mindestens eine Speichereinheit an jeden der Agenten ausgesendet ("broadcast"), wobei jeder der Suchagenten bestimmt, ob ein Abgleich zwischen dem zugeordneten Suchwert und dem Tabelleneintrag auftritt.
  • Die vorliegende Erfindung ist auch auf ein Tabellensuchsystem gerichtet, welches aufweist: eine Speichereinheit zum Speichern einer Informationstabelle, welche eine Mehrzahl von Dateneinträgen beinhaltet, die jeweils Dateninhalte aufweisen; eine Mehrzahl von Suchagenten, die jeweils kommunikationsmäßig mit der Speichereinheit gekoppelt sind und einen Port zum Empfangen eines zugeordneten Suchargumentwertes aufweisen; und eine Speicher-Controllereinheit, die eine Oberflächenschnittstelle zwischen der Speichereinheit und jedem der Agenten zur Verfügung stellt. Die Controllereinheit ist zum Steuern der Speichereinheit operativ, um während eines jeden von einer Mehrzahl von Operationszyklen die Inhalte eines aktuellen der Tabelleneinträge an jeden der Agenten zu liefern. Jeder der Suchagenten ist operativ, um einen zugeordneten, am besten übereinstimmenden der Dateneinträge basierend auf Vergleichen zwischen dem zugeordneten Argumentwert und den Inhalten der von der Speichereinheit gelieferten Dateneinträge zu bestimmen.
  • Bei einer Ausführungsform der vorliegenden Erfindung ist jeder der Suchagenten operativ, um den zugeordneten, am besten übereinstimmenden der Dateneinträge gemäß einem Longest-Prefix-Match-Suchvorgang zu bestimmen. Bei einer anderen Ausführungsform der vorliegenden Erfindung ist jeder der Suchagenten operativ, um den zugeordneten, am besten übereinstimmenden der Dateneinträge gemäß einem Policy-Match-Suchvorgang zu bestimmen.
  • Die Controllereinheit steuert die Speichereinheit, indem sie eine Reihe von Speicheradressenwerten an die Speichereinheit liefert. Die Speichereinheit spricht auf die Speicheradressenwerte an und ist operativ, um die Inhalte eines der Tabelleneinträge während jedes der Zyklen an jeden der Agenten zu liefern.
  • Ein wichtiger Vorteil des linearen Aussendesuche ("broadcast linear search")-Verfahrens und der entsprechenden Vorrichtung der vorliegenden Erfindung besteht darin, dass es das Problem des Leistungsflaschenhalses im Zusammenhang mit der Tabellensuche löst, unter Verwendung von Schiebesuchmethoden, wobei eine Mehrzahl von Paketen gleichzeitig durchsucht und weiter geleitet werden kann. Gemäß Schiebesuchmethoden bleibt die gesamte Suchzeit konstant, wenn die Anzahl von Suchagenten zunimmt. Dieses Verfahren ist ideal, wenn mehrere Agenten während einer gegebenen Zeitperiode ein gleiches Feld durchsuchen müssen. Beispielsweise muss jeder Agent jeden der Tabelleneinträge durchsuchen, um einen besten Abgleich zu bestimmen, wenn die Priorität des besten Abgleichs nicht in der Reihenfolge ist.
  • Diese und weitere Aufgaben, Merkmale und Vorteile der Erfindung ergeben sich aus der nachfolgenden Beschreibung der bevorzugten Ausführungsform in Verbindung mit der beigefügten Zeichnung.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • 1 ist ein verallgemeinertes Schaltungsblockdiagramm zur Veranschaulichung eines herkömmlichen Tabellensuchsystems mit einer Arbitrationseinheit zum Auflösen von Anforderungen von einer Mehrzahl von Suchagenten für den Zugriff auf eine Informationstabelle gemäß einem Suchverfahren des Standes der Technik vom Pull-Typ.
  • 2A ist ein verallgemeinertes Schaltungsblockdiagramm zur Veranschaulichung eines linearen Aussendesuchsystems gemäß der vorliegenden Erfindung, wobei das System eine Controllereinheit aufweist, die eine zentralisierte Schnittstelle zwischen einer Informationstabelle und einer Mehrzahl von Suchagenten zur Verfügung stellt, und die Steuereinheit operativ ist, um die Inhalte von Tabelleneinträge gleichzeitig an alle der Agenten zu schieben.
  • 2B ist ein Tabellendiagramm, das allgemein eine beispielhafte Informationstabelle veranschaulicht, die unter Verwendung des linearen Aussendesuchsystems von 2A durchsucht werden kann.
  • 2C ist ein verallgemeinertes Schaltungsblockdiagramm, das Komponenten eines der Suchagenten von 2A veranschaulicht, wobei der Agent operativ ist, um einen besten Abgleich zu bestimmen.
  • 3 ist ein verallgemeinertes Schaltungsblockdiagramm zur Veranschaulichung einer Datenweiterleitungsvorrichtung, die ein lineares Aussendesuchsystem gemäß der vorliegenden Erfindung aufweist.
  • 4 ist ein Tabellendiagramm, das allgemein eine Longest-Prefix-Match-Tabelle (LPM-Tabelle) mit Informationen veranschaulicht, welche durch das lineare Aussendesuchsystem der Datenweiterleitungsvorrichtung von 3 durchsucht wird.
  • 5 ist ein verallgemeinertes Schaltungsblockdiagramm zur Veranschaulichung von Komponenten eines von einer Mehrzahl von Portagenten des linearen Aussendesuchsystems von 3.
  • 6 ist ein Tabellendiagramm, das allgemein eine Policy-Matching-Tabelle (PM-Tabelle) von Informationen veranschaulicht, die durch das lineare Aussendesuchsystem der Datenweiterleitungsvorrichtung von 3 gemäß einer alternativen Ausführungsform der vorliegenden Erfindung durchsucht wird.
  • 7 ist ein verallgemeinertes Schaltungsblockdiagramm zur Veranschaulichung eines linearen Aussendesuchsystems gemäß einer alternativen Ausführungsform der Erfindung.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • 2A zeigt ein verallgemeinertes Schaltungsblockdiagramm, das ein lineares Aussendesuchsystem bei 50 gemäß der vorliegenden Erfindung veranschaulicht. Das System 50 weist auf eine Mehrzahl von N Suchagenten 52, die mit AGENT_1, AGENT_2, ... AGENT_N bezeichnet sind, von denen jeder einen Suchargument- Eingangsport 53 zum Empfangen von Suchargumentwerten aufweist, einen Suche-Freigabeausgang 54 zum Liefern eines zugeordneten von einer Mehrzahl von Suche-Freigabesignalen, die mit SEARCH_EN_1, SEARCH_EN_2, ... SEARCH_EN_N bezeichnet sind, und einen Dateneingangsport 56, der kommunikationsmäßig mit einem Datenbus 57 gekoppelt ist, wie weiter unten erläutert ist. Jeder Agent weist auch einen Eingangsport 58 auf, der die Tabellenadresse der aktuellen Daten von der Tabellenspeichereinheit empfängt. Obgleich nur eine Tabellenspeichereinheit 60 in 2A veranschaulicht ist, kann das System bei bestimmten Ausführungsformen mehrere Tabellenspeichereinheiten aufweisen, oder eine Tabellenspeichereinheit kann mehrere Tabellen aufweisen, und die Tabellenadresse ist dafür wichtig, es den Agenten zu ermöglichen, zwischen Tabellenspeichereinheiten oder Tabellen zu unterscheiden.
  • Das System weist auch eine Tabellenspeichereinheit 60 zum Speichern einer Informationstabelle auf, die einen Datenausgangsport 62 aufweist, um Tabelleninformationen an den Port 56 eines jeden der Suchagenten 52 über den Datenbus 57 zu liefern, und einen Adressensteuersignal-Eingangsport 64 zum Empfangen eines Adressensteuersignals, um die Tabellenspeichereinheit anzuweisen, auf bestimmte Tabelleneinträge an bestimmten Speicheradressen zuzugreifen, und die Dateninhalte der Einträge ihrem Datenausgangsport 62 zur Verfügung zu stellen. Eine Tabellensteuereinheit 68 ist ebenfalls Teil des Systems und weist einen Adressensteuersignal-Ausgangsport 70 auf, um das Adressensteuersignal an den Port 64 der Tabellenspeichereinheit zu liefern, und weist auch eine Mehrzahl von N Suche-Freigabeeingänge 72 zum Empfangen von zugeordneten der Suche-Freigabesignale von zugeordneten der Suchagenten 52 auf. Die Tabellensteuereinheit 68 weist auch einen Port 74 auf, der die Tabellenadresse der aktuellen Daten von der angegebenen Tabelle liefert, von der die aktuelle Daten kommen. Bei einer Ausführungsform ist die Speichereinheit 60 eine SRAM(Static Random Access Memory)-Vorrichtung, und jeder von einer Mehrzahl von Tabelleneinträgen ist an einer zugeordneten Adresse der SRAM-Vorrichtung gespeichert.
  • 2B zeigt ein Tabellendiagramm, das allgemein eine beispielhafte Informationstabelle bei 80 veranschaulicht, die unter Verwendung des linearen Aussendesuchsystems 50 (2A) durchsucht werden kann. Die Tabelle 80 weist eine Mehrzahl von Tabelleneinträgen 82 auf, die jeweils ein zugeordnetes Suchargumentfeld 84 und mindestens ein zugeordnetes Informationsfeld 86 aufweisen. Die Tabelle 80 ist in der Tabellenspeichereinheit 60 (2A) gespeichert. Bei der Ausführungsform der vorliegenden Erfindung, bei der die Tabellenspeichereinheit 60 (2A) eine SRAM-Vorrichtung ist, kann jeweils nur auf einen Tabelleneintrag 82 an der Speichereinheit zugegriffen werden.
  • Unter erneuter Bezugnahme auf 2A muss jeder der Suchagenten 52, der zugeordnete Suchargumentwerte an seinem Port 53 empfängt, eine lineare Durchsuchung der Inhalte der Tabelleneinträge 82 (2B) durchführen, um Tabelleneinträge zu finden, die mit zugeordneten Suchargumentwerten übereinstimmen, um einen Abgleich zu bestimmen. Wie ferner im Nachfolgenden erläutert wird, weist jeder der Agenten eine Logik zum Vergleichen der Inhalte der Tabelleneinträge 82 (2B) mit Suchargumentwerten auf. Gemäß der linearen Suche muss jeder der Agenten mindestens eine Mehrzahl von Tabelleneinträgen durchsuchen, bevor er einen Abgleich bestimmt. Bei einer Ausführungsform muss jeder der Agenten 52 alle der Tabelleneinträge 82 (2B) durchsuchen und einen besten Abgleich für jeden zugeordneten Suchargumentwert durch Vergleichen des zugeordneten Suchargumentwertes mit den Inhalten von einem oder beiden der Inhalte des Suchargumentfeldes 84 (2B) und des Tabelleninformationsfeldes (bzw. der Tabelleninformationsfelder) 86 (2B) bestimmen. Die Priorität des Abgleichs kann auch durch die Adresse der Tabelle beschrieben werden, und diese kann dazu verwendet werden, die Bestimmung des Abgleichs durchzuführen. Obgleich die vorliegende Erfindung nicht auf die Suche nach einem besten Abgleich beschränkt ist, sind einige wenige Beispiele für Anwendungen des linearen Aussendesuchsystems 50 für eine lineare Suchanwendung für den besten Abgleich im Nachfolgenden beschrieben.
  • Gemäß der vorliegenden Erfindung stellt die Tabellen-Controllereinheit 68 eine zentralisierte Schnittstelle zwischen der Tabellenspeichereinheit 60 und jedem der Suchagenten 52 zur Verfügung. Die Controllereinheit 68 ist operativ, um die Inhalte der Tabelleneinträge 82 (2B) jeweils einzeln an den Dateneingangsport 56 von jedem der Suchagenten gleichzeitig über den Datenbus 57 zu schieben. Anders als Tabellensuchsysteme des Standes der Technik, die gemäß einem Suchverfahren vom Pull-Typ arbeiten, ist es nicht erforderlich, dass die Agenten 52 einen Zugriff auf eine bestimmte Stelle der Tabellenspeichereinheit 60 jeweils einzeln initiieren, weshalb keine Arbitrationslogik erforderlich ist, um Anforderungen von Agenten 52 für einen Zugriff auf die Speichereinheit aufzulösen. Bei der vorliegenden Erfindung werden die Inhalte der Tabelleneinträge jeweils einzeln an jeden der Agenten gleich zeitig "geschoben", wie im Nachfolgenden ausführlich erläutert wird. Daher kann jeder der Agenten 52 gleichzeitig auf die einzelne Tabellenspeichereinheit 60 zugreifen, um eine lineare Durchsuchung der Tabelle durchzuführen, und die Suchleistung insgesamt wird verbessert. Auch werden die Ausführungskosten minimiert, da nicht eine verschiedene Speichereinheit für jeden Agenten erforderlich ist.
  • Wenn ein gültiger Suchargumentwert an dem Port 53 des einen der Suchagenten 52 empfangen wird, ist der Suchagent operativ, sein zugeordnetes Suche-Freigabesignal zu aktivieren, das an seinem Port 54 erzeugt wird. Die Tabellen-Controllereinheit 68 spricht auf das Aktivieren von mindestens einem der N Suche-Freigabesignal an, und ist operativ, um mit dem sequentiellen Zugreifen auf die Tabelleneinträge 82 (2B) der in der Tabellenspeichereinheit 60 gespeicherten Tabelle zu beginnen, indem sie sequentiell Speicheradressenwerte an den Port 64 der Speichereinheit über das am Port 70 des Controllers erzeugte Adressensteuersignal überträgt. Im Ansprechen auf das Adressensteuersignal schiebt die Tabellenspeichereinheit die Sequenz der Tabelleneinträge 82 (2B), welche die Inhalte der Tabelleneinträge enthalten, an den Port 56 eines jeden der Agenten 52 über den Datenbus 57. Bei einer Ausführungsform der vorliegenden Erfindung schiebt die Tabellenspeichereinheit 60, unter der Steuerung der Tabellensteuereinheit 68, einen der Tabelleneinträge 82 (2B) bei jedem Zyklus eines Taktes (nicht gezeigt) an jeden der Agenten 52. Für Anwendungen, bei denen jeder der Agenten 52 dazu ausgelegt ist, einen Suchalgorithmus vom besten Abgleichtyp durchzuführen, müssen die tatsächlichen Inhalte eines jeden der Tabelleneinträge 82 (2B) an jeden der Agenten 52 geliefert werden, weil die Abgleichspriorität der Einträge durch das Lesen zumindest von ausgewählten Abschnitten der Inhalte der Einträge oder der Adresse des Eintrags in dem Speicher bestimmt werden muss. Dies trifft insbesondere auf Suchalgorithmen zu, bei denen die Tabelleneinträge nicht in irgendeiner bestimmten Reihenfolge sortiert werden.
  • Es wird angemerkt, dass, wenn einer der Agenten 52 sein zugeordnetes Suche-Freigabesignal aktiviert, der Tabellencontroller 68 bereits im Begriff sein kann, die Tabelleneinträge sequentiell zu senden. Daher kann ein Portagent anfänglich die Inhalte eines anderen Eintrags als des Eintrags an der Spitze der Liste empfangen, d.h. eines anderen Eintrags als desjenigen Eintrags, der an der ersten Speicheradresse gespeichert ist, auf die sequentiell durch den Controller 68 zugegriffen wird. Wenn jeder der Agenten dazu ausgelegt ist, einen Suchalgorithmus vom besten Abgleichtyp durchzuführen, wobei die Inhalte eines jeden einer vorgegebenen Anzahl von Tabelleneinträge 82 (2B) durch jeden der Agenten verarbeitet werden muss, bevor ein bester Abgleich erreicht wird, muss daher jeder der Agenten Einrichtungen zum Zählen der Anzahl von Tabelleneinträgen aufweisen, die von dem Agenten verarbeitet werden, da der Tabellencontroller 68 fortfährt, Einträge zu senden, bis keines der an seinen Ports 72 empfangenen Suche-Freigabesignale aktiviert ist.
  • Obgleich 2A eine einzelne Tabellenspeichereinheit 60 zeigt, ist die Erfindung auch dann anwendbar, wenn mehrere Tabellenspeichereinheiten verwendet werden. Um die Anzahl von Einträgen für einige Anwendungen zu erhöhen, können mehrere Tabellen den Inhalt zur gleichen Zeit aussenden. Somit hätte jede zusätzliche Tabellenspeichereinheit auch Verbindungen mit den Agenten, wie in 2A für die Tabellenspeichereinheit 60 und die Agenten 52 gezeigt ist. Um beispielsweise 128 Regeln in 64 Taktzyklen zu durchsuchen, muss jeder Agent die Tabelleneinträge von zwei Tabellen zur gleichen Zeit empfangen, und die Gesamtanzahl von Regeln ist linear proportional zu der Anzahl von 64 Eintragtabellen.
  • 2C zeigt ein schematisches Schaltungsblockdiagramm zur Veranschaulichung von Komponenten bei 90 von einem der Suchagenten 52 (2A), die für einen linearen Suchalgorithmus vom besten Abgleichtyp ausgelegt sind. Jeder der Suchagenten 52 weist auf eine Vergleichslogikeinheit 92 mit einem Eingangsport, der zum Empfangen von Suchargumentwerten mit dem Port 53 des Agent verbunden ist, und einen Ausgangsport, der mit dem Port 54 des Agenten verbunden ist, um das zugeordnete Suche-Freigabesignal zur Verfügung zu stellen. Jeder Suchagent weist auch einen Datenport auf, der mit dem Port 56 des Agenten verbunden ist, um Tabellendaten zu empfangen, welche die Inhalte der Tabelleneinträge 82 (2B) beinhalten, die sequentiell von der Tabellenspeichereinheit durch den Tabellencontroller ausgesendet werden; eine Inhaltsregistereinheit 94, die kommunikationsmäßig mit der Vergleichslogikeinheit 92 gekoppelt ist, wie durch eine Leitung 96 veranschaulicht ist; und eine Abgleichqualitätsregistereinheit 98, die kommunikationsmäßig mit der Vergleichslogikeinheit 92 gekoppelt ist, wie ebenfalls durch die Leitung 96 veranschaulicht ist.
  • Gemäß der vorliegenden Erfindung kann die Vergleichslogikeinheit 92 dazu ausgelegt sein, jeden aktuelle Suchargumentwert mit jedem der Tabelleneinträge 82 (2B) gemäß einer linearen Suchmethode zu vergleichen, die auf eine spezifische Anwendung zugeschnitten ist. Für jeden aktuellen der Tabelleneinträge 82 (2B), die sequentiell über den Datenport 56 empfangen werden, ist die Vergleichslogikeinheit 92 operativ, um die folgenden Schritte durchzuführen: Vergleichen des aktuellen Suchargumentwertes mit einem ausgewählten Abschnitt der Dateninhalte des aktuellen Tabelleneintrags; Bestimmen, ob ein Abgleich zwischen dem aktuellen Suchargumentwert und dem ausgewählten Abschnitt der Dateninhalte des aktuellen Tabelleneintrags vorliegt, basierend auf Kriterien, die auf eine spezifische Anwendung zugeschnitten sind; und falls ein Abgleich für den aktuellen Tabelleneintrag bestimmt wird, Bestimmen eines dem übereinstimmenden Tabelleneintrag zugeordneten Abgleichqualitätswertes, wobei der Abgleichqualitätswert die Qualität des Abgleichs zwischen dem aktuellen Suchargumentwert und dem ausgewählten Abschnitt der Dateninhalte des aktuellen Eintrags angibt.
  • Die Inhaltsregistereinheit 94 stellt ein vorübergehendes Speichern der Inhalte der gegenwärtig ausgewählten, übereinstimmenden der Tabelleneinträge zur Verfügung, die gegenwärtig von der Vergleichslogikeinheit 92 als ein möglicher bester Abgleich ausgewählt wurden. Die Abgleichqualitätsregistereinheit 98 stellt ein vorübergehendes Speichern von Abgleichqualitätswerten zur Verfügung, die gegenwärtig ausgewählten, übereinstimmenden Tabelleneinträgen zugeordnet wurden. Gemäß der vorliegenden Erfindung sind die Regeln zum Bestimmen der Abgleichqualitätswert anwendungsspezifisch. Beispiele für bestimmte Ausführungsformen sind im Nachfolgenden ausführlich beschrieben. Bei einer Ausführungsform der vorliegenden Erfindung wird der Abgleichqualitätswert, der jedem übereinstimmenden Tabelleneintrag zugeordnet ist, durch Lesen eines bestimmten Feldes des übereinstimmenden Tabelleneintrags bestimmt.
  • Im Betrieb der Suchagenteinheit 52 werden die Inhalte der Temporärspeicherregister 94 und 98 durch die Vergleichslogikeinheit auf vorgegebene Werte initialisiert. Bei jedem Zyklus, in dem ein aktueller der Tabelleneinträge 82 (2B) empfangen wird, führt die Vergleichslogikeinheit 92 im Allgemeinen die folgenden Schritte aus: Vergleichen eines ausgewählten Abschnitts der Dateninhalte des aktuellen Tabelleneintrags mit dem Suchargumentwert, um zu bestimmen, ob ein aktueller Abgleich vorliegt; falls ein aktueller Abgleich vorliegt, Bestimmen eines aktuellen Abgleichqualitätswertes, der dem aktuellen Tabelleneintrag zugeordnet ist, wobei der Abgleichqualitätswert die Qualität des Abgleichs zwischen dem ausgewählten Abschnitt der Dateninhalte des aktuellen Tabelleneintrages und dem Suchargument wert angibt; Vergleichen des aktuellen Abgleichqualitätswertes mit den Inhalten des Abgleichqualitätsregisters 98, um zu bestimmen, ob der aktuelle übereinstimmende Tabelleneintrag einen Abgleich liefert, der wünschenswerter ist als ein übereinstimmender Tabelleneintrag, der dem im dem Register 98 gespeicherten Abgleichqualitätswert zugeordnet ist; und falls der aktuelle übereinstimmende Tabelleneintrag einen wünschenswerteren Abgleich zur Verfügung stellt als der Eintrag, der dem in dem Register 98 gespeicherten Abgleichqualitätswert zugeordnet ist, Ersetzen der Inhalte des Abgleichqualitätsregisters 98 mit dem aktuellen Abgleichqualitätswert, und Ersetzen der Inhalte der Registereinheit 94 mit den Dateninhalten des aktuellen übereinstimmenden Tabelleneintrags. Dieser Zyklus wird für eine vorgegebene Anzahl von Tabelleneinträgen 82 (2B) wiederholt, und nach einer Anzahl von Taktzyklen, die gleich der vorgegebenen Anzahl von Einträgen ist, speichert die Inhaltsregistereinheit 94 die Inhalte eines übereinstimmenden Tabelleneintrags, der den höchsten Qualitätsbegleichwert besitzt, und somit den besten verfügbaren Abgleich.
  • Bei verschiedenen Ausführungsformen der vorliegenden Erfindung kann das lineare Aussendesuchsystem 50 (2A) bei jedem von einer Vielfalt von elektronischen Systemen angewendet werden, um die Tabellensuche durch eine Mehrzahl von Agenten zu vereinfachen, die jeweils die Inhalte von vielen Einträgen der Tabelle unter Verwendung von verschiedenen Suchargumenten durchsuchen sollen. Bei einer Ausführungsform der vorliegenden Erfindung wird das lineare Aussendesuchsystem der vorliegenden Erfindung in einer Datenweiterleitungsvorrichtung verwendet, wobei die in der Speichereinheit 60 (2A) gespeicherte Tabelle Datenweiterleitungsinformationen zum Bestimmen von optimalen Weiterleitungsrouten für Abschnitte von Daten (z.B. Datenpaketen) aufweist, und wobei jeder der Suchagenten 52 (2A) operativ ist, um die optimalen Weiterleitungsrouten für jeden der Abschnitte von Daten zu bestimmen. Beispiele für Datenweiterleitungsvorrichtungen, bei denen das lineare Aussendesuchsystem der vorliegenden Erfindung angewendet werden kann, umfassen Netzwerkschaltvorrichtungen, Netzwerkroutervorrichtungen, Bridges, Gateways, und jegliche andere Datenweiterleitungsvorrichtung.
  • 3 zeigt ein verallgemeinertes Schaltungsblockdiagramm zur Veranschaulichung einer Datenweiterleitungsvorrichtung bei 100, die ein lineares Aussendesuchsystem gemäß der vorliegenden Erfindung aufweist. Bei der dargestellten Ausführungsform ist die Datenweiterleitungsvorrichtung 100 eine Routervorrichtung, die in einem Internetprotokoll(IP)-Netzwerk zum Routen von IP-Paketen basierend auf Netzwerkschicht(Schicht 3)-Informationen verwendet wird. Bei einer alternativen Ausführungsform kann die Datenweiterleitungsvorrichtung 100 eine Schaltvorrichtung sein, die in einem Netzwerk zum Schalten von Paketen basierend auf Datenlinkschicht(Schicht 2)-Informationen (z.B. MAC-Adresseninformationen) verwendet wird.
  • Die Datenweiterleitungsvorrichtung 100 weist: eine Mehrzahl von N Paketweiterleitungsmodulen 102 auf, die als MODULE_0, MODULE_1, ... MODULE_N bezeichnet sind, und die jeweils aufweisen: einen Paketempfangsport 104 zum Empfangen von IP-Datenpaketen über einen zugeordneten Quellport der Vorrichtung 100, einen verarbeitete-Pakete-Ausgangsport 106 zum Liefern von Datenpaketen, die gemäß der linearen Aussendesuche der vorliegenden Verfahren verarbeitet wurden, wie weiter unten erläutert ist, einen Suchetreffer-Eingangsport 108 zum Empfangen eines zugeordneten von einer Mehrzahl von N Suchetreffersignalen, die mit HIT_0, HIT_1, ... HIT_N bezeichnet sind, wie weiter unten erläutert ist, einen Suche-erledigt-Eingangsport 110 zum Empfangen eines zugeordneten einer Mehrzahl von N Sucheerledigt-Signalen, die mit DN_0, DN_1, ... DN_N bezeichnet sind, wie weiter unten erläutert ist, einen Paket-fertig-Ausgangsport 112 zum Liefern eines zugeordneten von einer Mehrzahl von N Paket-fertig-Signalen, die mit RDY_0, RDY_1, ... RDY_N bezeichnet sind, wie weiter unten erläutert ist, und einen Datenport 114 zum Liefern von geparsten Abschnitten der empfangenen Datenpakete zur Verwendung als Suchargumentwert zum Durchsuchen einer Tabelle, und auch zum Empfangen von Tabellensuchergebnissen, wie weiter unten erläutert ist; einen gemeinsam genutzten Paketpuffer 116 mit einem Datenport, der kommunikationsmäßig mit dem verarbeitete-Pakete-Ausgangsport 116 eines jeden der Paketweiterleitungsmodule über einen Bus 119 gekoppelt ist; und eine Mehrzahl von N Portagenten 120, die mit AGENT_0, AGENT_1, ... AGENT_N bezeichnet sind, die jeweils einem der Paketweiterleitungsmodul 102 zugeordnet sind und einen Suchetreffer-Ausgangsport 122 zum Liefern eines zugeordneten der Suchetreffersignal an den Port 108 des zugeordneten Paketweiterleitungsmoduls 102 aufweisen, einen Suche-erledigt-Ausgangsport 124 zum Liefern eines zugeordneten der Suche-erledigt-Signale an den Port 110 des zugeordneten Paketweiterleitungsmoduls, einen Paket-fertig-Eingangsport 126 zum Empfangen eines zugeordneten der fertig-Signale von dem Port 112 des zugeordneten Paketweiterleitungsmoduls, einen Datenport 128, der kommunikationsmäßig mit dem Datenport 114 des zugeordneten Paketweiterleitungsmoduls gekoppelt ist, einen Suche-Freigabe-Ausgangsport 130 zum Liefern eines zugeordneten von einer Mehr zahl von N Suche-Freigabesignalen, die mit SEARCH_EN_0, SEARCH_EN_1, ... SEARCH_EN_N bezeichnet sind, wie weiter unten erläutert ist, und einen Tabellendaten-Eingangsport 132, der unten weiter erläutert wird. Jeder Agent besitzt auch einen Eingangsport 129, der die Tabellenadresse der aktuellen Daten von der Tabellenspeichereinheit empfängt. Bei einer Ausführungsform der vorliegenden Erfindung weist die Vorrichtung 100 N = 22 Portagenten zum Empfangen von Datenpaketen von zwölf 1 GBit-Ports (nicht gezeigt) der Vorrichtung und einem 10 GBit-Port (nicht gezeigt) der Vorrichtung auf.
  • Die Vorrichtung 100 weist ferner auf eine Speichereinheit 134 zum Speichern einer Datenweiterleitungs-Informationstabelle mit einer Mehrzahl von Einträgen und einem Datenausgangsport 136 zum Senden der Dateninhalte eines jeden der Einträge an den Dateneingangsport 132 eines jeden der Portagenten 120, und einen Speicheradressensteuerungs-Eingangsport 138 zum Empfangen eines Speicheradressensteuersignals zum Zugreifen auf bestimmte der Einträge; und eine Tabellen-Controllereinheit 140 mit einer Mehrzahl von N Suche-Freigabeeingängen 142 jeweils zum Empfangen eines zugeordneten der Suche-Freigabesignale von dem Port 130 eines zugeordneten der Portagenten 120, einen Adressensteuersignal-Ausgangsport 144 zum Liefern des Adressensteuersignals an den Port 138 der Tabellenspeichereinheit 134. Die Tabellen-Controllereinheit 140 weist auch einen Port 149 auf, der die Tabellenadresse der aktuellen Daten von der spezifischen Tabelle liefert, von der die aktuellen Daten stammen. Bei einer Ausführungsform ist die Tabellenspeichereinheit 134 eine SRAM-Vorrichtung, und jeder der Tabelleneinträge wird an einer zugeordneten Speicheradresse gespeichert.
  • Jedes der Paketweiterleitungsmodule 102 weist auf: einen First-In-First-Out (FIFO)-Puffer (nicht gezeigt) zum vorübergehenden Speichern der über den Port 104 empfangenen IP-Pakete, während Suchoperationen durchgeführt werden, um geeignete Routing-Informationen zu bestimmen, die dem empfangenen Paket zugeordnet sind, wie weiter unten erläutert ist; eine Parserlogik (nicht gezeigt), die zum Parsen der empfangenen Pakete operativ ist, und eine Internetprotokoll(IP)-Bestimmungsadresse aus den Paketen extrahiert zur Verwendung als Suchargumente an die in der Speichereinheit 134 gespeicherten Tabelle, um die geeigneten Weiterleitungsinformationen zu bestimmen, die dem Paket zugeordnet sind; und eine Ersetzungslogik zum Ersetzen von vorgegebenen Feldern der empfangenen Pakete mit Informationen, die aus der in der Speichereinheit 134 gespeicherten Tabelle ausgelesen werden, wie im Folgenden ferner erläutert ist. Jedes Paketweiterleitungsmodul 102 ist operativ, um eine IP-Adresse zu liefern, die von den empfangenen Datenpaketen an den Datenport 128 seines zugeordneten Portagenten 120 geparst wird.
  • Wenn ein gültiges Datenpaket von einem der Paketweiterleitungsmodule 102 empfangen wird, ist das Modul operativ, um sein zugeordnetes Paket-fertig-Signal zu aktivieren, das an seinem Port 112 erzeugt wird. Im Wesentlichen zur gleichen Zeit liefert das Paketweiterleitungsmodul 102 eine IP-Adresse, die ein 32-Bitwert ist, von seinem Datenport 114 an den Port 128 seines zugeordneten Portagenten 120. Jeder der Portagenten 120 spricht auf die Aktivierung des zugeordneten Paket-fertig-Signals an, das an seinem Port 126 empfangen wird, und ist operativ, um sein zugeordnetes Suche-Freigabesignal zu aktivieren, das an seinem Port 130 zur Verfügung gestellt wird. Die Tabellen-Controllereinheit 140 spricht auf das Aktivieren von mindestens einem der N Suche-Freigabesignale an und ist operativ, um mit dem sequentiellen Zugreifen auf Tabelleneinträge der in der Speichereinheit 134 gespeicherten Tabelle zu beginnen, indem sie über das an dem Port 144 erzeugte Adressensteuersignal sequentiell Speicheradressenwerte an den Port 138 der Speichereinheit überträgt. Im Ansprechen auf das Adressensteuersignal schiebt die Tabellenspeichereinheit 134 die Sequenz der Tabelleneinträge, jeweils einzeln, einschließlich der Inhalte der Tabelleneinträge, über den Datenbus 133 an den Port 132 eines jeden der Agenten 120. Bei einer Ausführungsform der vorliegenden Erfindung schiebt die Tabellenspeichereinheit 134 unter Steuerung durch die Tabellensteuereinheit 140 bei jedem Zyklus eines Taktes (nicht gezeigt) einen der Tabelleneinträge an jeden der Agenten.
  • 4 zeigt ein Tabellendiagramm, das allgemein eine Longest-Prefix-Match-Tabelle (LPM) der Informationen bei 180 veranschaulicht, die gemäß einer Ausführungsform der vorliegenden Erfindung in der Tabellenspeichereinheit 134 (3) gespeichert sind. Bei verschiedenen Ausführungsformen der vorliegenden Erfindung kann die in der Speichereinheit 134 gespeicherte Informationstabelle verschiedene Typen von Tabelleninformationen beinhalten mit Dateneinträgen, die für verschiedene Typen von Tabellensuchalgorithmen geeignet sind. Bei einer alternativen Ausführungsform, die im Nachfolgenden weiter erläutert ist, ist die Tabelle eine Policy-Match(PM)-Informationstabelle.
  • Die Tabelle 180 weist auf: eine Mehrzahl von Tabelleneinträgen 182, die jeweils einer Speicherfeldadresse zum Speichern eines zugeordneten Speicheradressenwertes der Speichereinheit 184 zugeordnet sind; ein zugeordnetes IP-Adressenfeld 186 zum Speichern eines zugeordneten 32 Bit-IP-Adressenwertes; ein Maskenwertfeld 188 zum Speichern eines zugeordneten 5 Bit-Maskenwertes zur Verwendung gemäß der LPM-Suche; ein zugeordnetes MAC-Adressenfeld 190 zum Speichern eines zugeordneten 48 Bit-MAC-Adressenwertes; ein Zielportfeld 192 zum Speichern eines zugeordneten 5 Bit-Zielportwertes, der einen zugeordneten Zielport der Routing-Vorrichtung 100 (3) angibt; und ein VLAN-Identifikationsfeld (VLAN ID-Feld) 194 zum Speichern eines zugeordneten 12 Bit-VLAN ID-Wertes. Bei der beschriebenen Ausführungsform weist die Tabelle 180 64 der Tabelleneinträge 182 auf, und die Tabellen-Controllereinheit 140 (3) liefert bei jedem Takt SRAM-Adressenwerte zwischen 6'H0 und 6'H3f. Im Ansprechen auf jeden Adressenwert sendet die Tabellenspeichereinheit 134 (3) 102 Bits von Daten (fünf verkettete Felder) aus. Bei einer Ausführungsform der vorliegenden Erfindung wird das Senden angehalten, um Leistung zu sparen, wenn die LPM-Suche (unter Verwendung eines Konfigurationsbits) deaktiviert wird oder wenn keine Notwendigkeit besteht, auf die LPM-Tabelle zuzugreifen (wenn kein vorliegendes Paket in einem Paketverarbeitungsagenten, und kein vorliegender CPU-Zugriff vorhanden ist).
  • 5 zeigt bei 200 ein verallgemeinertes Schaltungsblockdiagramm zur Veranschaulichung von Komponenten von einem der Portagenten 120 (3). Bei der dargestellten Ausführungsform weist der Suchagent 120 auf eine Vergleichslogikeinheit 202 mit einem Port, der mit dem Port 122 des Agenten 120 verbunden ist, zum Liefern des zugeordneten Suchetreffersignals, einen Port, der mit dem Port 124 des Agenten zum Liefern des zugeordneten Suche-erledigt-Signals verbunden ist, einen Port, der mit dem Port 126 des Agenten zum Empfangen des zugeordneten Paket-fertig-Signals verbunden ist, einen Port, der mit dem Port 128 des Agenten zum Empfangen der IP-Adressenwerte verbunden ist, welche von den Datenpaketen geparst werden, die von dem zugeordneten Weiterleitungsmodul 102 empfangen werden (3), einen Port, der mit dem Port 130 des Agenten zum Liefern des zugeordneten Suche-Freigabesignals verbunden ist, einen Port, der mit dem Port 132 des Portagenten zum Empfangen der Dateninhalte der Tabelleninformationen verbunden ist, welche von der Tabellenspeichereinheit 134 ausgesendet werden (3), und einen Port 204; und eine Temporärregistereinheit 206, die kommunikationsmäßig mit dem Port 204 der Vergleichslogikeinheit 202 gekoppelt ist, wie durch eine Leitung 208 veranschaulicht ist. Die Temporärregistereinheit 206 weist auf: ein Temporär-Maskenlängeregister 210, das kommunikationsmäßig mit der Vergleichslogikeinheit 202 gekoppelt ist; ein Temporär-MAC-Adressenregister 212, das kommunikationsmäßig mit der Vergleichslogikeinheit gekoppelt ist; ein Temporär-Portnummerregister 214, das kommunikationsmäßig mit der Vergleichslogikeinheit 202 gekoppelt ist; und ein Temporär-VLAN ID-Register 216, das kommunikationsmäßig mit der Vergleichslogikeinheit 202 gekoppelt ist.
  • Bei einer Ausführungsform der vorliegenden Erfindung ist die Vergleichslogikeinheit 202 operativ, um einen LPM-Suchalgorithmus durchzuführen, der LPM-Maskier- und Vergleichsoperationen umfasst, wobei unmaskierte Abschnitte eines jeden der empfangenen IP-Adressenwerte, die über den Port 128 des Portagenten empfangen werden, mit unmaskierten Abschnitten der Inhalte des IP-Adressenfeldes 186 (4) eines jeden der Tabelleneinträge 182 gemäß dem LPM-Algorithmus verglichen werden. Für jeden aktuellen der Tabelleneinträge 82 (2B), die sequentiell über den Datenport 132 des Portagenten empfangen werden, liest die Vergleichslogikeinheit 202 zuerst die Inhalte des Maskenwertfeldes 188 (4) aus, um einen Maskenwert M zu bestimmen, der dem aktuellen Eintrag zugeordnet ist. Die Vergleichslogikeinheit 202 ist dann operativ, um den unmaskierten Abschnitt des aktuellen IP-Adressenwertes mit dem unmaskierten Abschnitt der Inhalte des IP-Adressenfeldes des aktuellen Eintrages zu vergleichen, wobei die geringstwertigen M Bits eines jeden der verglichenen Werte ausmaskiert werden.
  • Gemäß der LPM-Suche wird ein bester verfügbarer Abgleich für einen bestimmten empfangenen IP-Adressenwert bestimmt durch eine Bestimmung, welcher der Tabelleneinträge einen IP-Adressenwert in seinem Feld 186 (4) aufweist, der die größte Anzahl von höchstwertigen Bits beinhaltet, die mit zugeordneten höchstwertigen Bits des bestimmten IP-Adressenwertes übereinstimmen. Beispielsweise in dem Fall von 32 Bit-IP-Adressenwerten, falls die Tabellensuche zwei übereinstimmende Tabelleneinträge ergibt (einen, bei dem die Inhalte des Tabelleneintrags 20 übereinstimmende Bits aufweisen, und einen, bei dem die Inhalte des Tabelleneintrags 19 übereinstimmende Bits aufweisen), wird der Tabelleneintrag mit der größten Anzahl von übereinstimmenden Bits (20 Abgleiche) gewählt. In dem Fall einer 32 Bit-IF-Adresse ist der längste mögliche Abgleich eine Übereinstimmung aller 32 Bits, wobei es sich um einen exakten Abgleich handelt, während der kürzeste mögliche Abgleich eine Übereinstimmung von nur einem Bit ist. Das LPM durchsucht alle Tabelleneinträge und findet den besten verfügbaren Abgleich.
  • Die Temporärregistereinheit 206 stellt ein vorübergehendes Speichern der Inhalte der gegenwärtig ausgewählten der Tabelleneinträge zur Verfügung, die gegenwärtig von der Vergleichslogikeinheit 202 als ein möglicher bester Abgleich ausgewählt wurden. Im Besonderen stellt das Maskenlängeregister 210 ein Speichern des Maskenwertes eines vorübergehend ausgewählten der Tabelleneinträge zur Verfügung, das MAC-Adressenregister 212 stellt ein Speichern des MAC-Adressenwertes eines vorübergehend ausgewählten der Tabelleneinträge zur Verfügung, das Portnummerregister stellt ein Speichern der Portnummer von einem vorübergehend ausgewählten der Tabelleneinträge zur Verfügung, und das VLAN ID-Register 216 stellt ein Speichern des VLAN ID-Adressenwertes eines vorübergehend ausgewählten der Tabelleneinträge zur Verfügung.
  • Im Betrieb des Suchagenten 120 werden die Inhalte der Temporärspeicherregister 212, 214 und 216 durch die Vergleichslogikeinheit 202 anfänglich auf Null gesetzt. Auch jedes Bit des Temporär-Maskenlängeregisters 210 wird von der Vergleichslogikeinheit 202 anfänglich auf hex 1 F gesetzt. Bei einer Ausführungsform der vorliegenden Erfindung ist das Temporär-Maskenlängeregister 210 ein 5 Bit-Register, das ein Speichern eines Maskenlänge-Dezimalwertes von 32 zur Verfügung stellt, was das Maskieren von bis zu 32 Bits der IF-Adressenwerte ausmacht, die gemäß einem Schritt des LPM-Suchalgorithmus verglichen werden. Bei dieser Ausführungsform werden die Inhalte des Temporär-Maskenlängeregisters 210 anfänglich auf 1 F (Hexadezimal) gesetzt.
  • Für jede bestimmte empfangene IP-Adresse, die über den Datenport 128 des Agenten von dem zugeordneten Paketweiterleitungsmodule 102 empfangen wird (3), führt die Vergleichslogikeinheit 202 bei jedem Zyklus, in dem ein aktueller der Tabelleneinträge 182 (4) von der Tabellenspeichereinheit 134 empfangen wird (3), die LPM-Suchoperation durch, um den aktuellen Eintrag zu verarbeiten. Für jeden aktuellen der Tabelleneinträge umfasst die von der Vergleichslogikeinheit 202 ausgeführte LPM-Suchoperation: Lesen der Inhalte des Maskenwertfeldes 188 (4) des aktuellen Tabelleneintrags, um einen aktuellen Maskenwert M zu bestimmen, der dem aktuellen Eintrag zugeordnet ist; Vergleichen eines unmaskierten Abschnitts des empfangenen IP-Adressenwertes mit einem unmaskierten Ab schnitt der Inhalte des IP-Adressenfeldes 186 (4) des aktuellen Eintrags, wobei die geringstwertigen M Bits eines jeden der verglichenen Werte ausmaskiert werden; Bestimmen, ob ein Abgleich vorliegt; und, falls ein Abgleich vorliegt, daraufhin Bestimmen, ob der aktuelle Maskenwert geringer als die gespeicherten Inhalte des Temporär-Maskenlängeregisters 210 ist; und falls der aktuelle Maskenwert geringer als die gespeicherten Inhalte des Temporär-Maskenlängeregisters 210 ist, Ersetzen der Inhalte des Temporär-Maskenlängeregisters 210 mit dem aktuellen Maskenwert, und Ersetzen der Inhalte der Temporärregister 212, 214 und 216 mit dem MAC-Adressenwert, Zielportnummerwert, und VLAN ID-Wert des aktuellen Tabelleneintrags.
  • Falls die Vergleichslogikeinheit 202 bestimmt, dass ein Abgleich zwischen dem angegebenen unmaskierten Abschnitt des empfangenen IP-Adressenwertes und dem angegebenen unmaskierten Abschnitt der Inhalte des IP-Adressenfeldes 186 vorliegt (4), und falls der aktuelle Maskenwert geringer als die gespeicherten Inhalte des Temporär-Maskenlängeregisters 210 ist, dann aktiviert die Vergleichslogikeinheit 202 das zugeordnete Suchetreffersignal, das am Port 122 des Portagenten zur Verfügung gestellt wird. Sobald es aktiviert wurde, bleibt das Suchetreffersignal aktiviert, bis alle der 64 Tabelleneinträge 182 (4) empfangen und von der Vergleichslogikeinheit verarbeitet worden sind. Nachdem alle der 64 Tabelleneinträge empfangen und verarbeitet worden sind, aktiviert die Vergleichslogikeinheit das zugeordnete Suche-erledigt-Signal, das am Port 124 des Portagenten zur Verfügung gestellt wird, und liefert die endgültigen gespeicherten Inhalte der Temporärregister 212, 214 und 216 (einschließlich eines MAC-Adressenwertes, einer Weiterleitungsportnummer, und eines VLAN ID-Wertes des am besten übereinstimmenden Tabelleneintrags) an das zugeordneten der Paketweiterleitungsmodule 102 (3) über den Datenport 128 des Portagenten. Falls das zugeordnete Suchetreffersignal zu dem Zeitpunkt, an dem das zugeordnete Suche-erledigt-Signal aktiviert wird, nicht aktiviert ist, bestimmt das zugeordnete Paketweiterleitungsmodul 102 (3), das diese Signale empfängt, dass für den aktuellen empfangenen IP-Adressenwert, d.h. für das aktuelle Paket, kein Abgleich gefunden wurde. Wie bereits erwähnt wurde, weist jedes der Paketweiterleitungsmodule 102 (3) auf einen FIFO-Puffer (nicht gezeigt) zum vorübergehenden Speichern der Pakete, die über seinen Empfangsport 104 empfangen werden, während Suchoperationen durchgeführt werden, um geeignete Routing-Informationen zu bestimmen; und eine Ersetzungslogik zum Ersetzen von Feldern der empfangenen Pakete mit Informationen, die in dem am besten über einstimmenden Tabelleneintrag enthalten sind. Bei der Ausführungsform, bei der die Datenweiterleitungsvorrichtung 100 (3) eine Netzwerkschicht-Routervorrichtung ist, in der die empfangenen Datenpakete basierend auf ihrer IP-Adresse geroutet werden, werden die MAC-Adressenwerte und VLAN ID-Werte der Pakete ersetzt, wenn ein übereinstimmender Tabelleneintrag gefunden wird.
  • Unter der Voraussetzung, dass ein Abgleich wie oben beschrieben gefunden wurde, ist jedes der Paketweiterleitungsmodule 102 (3) operativ, um das MAC-Adressenfeld und das VLAN ID-Feld der empfangenen Pakete mit der MAC-Adresse und der VLAN ID des am besten übereinstimmenden der Tabelleneinträge 182 zu ersetzen (4). Jedes der Paketweiterleitungsmodule 102 (3) ist ferner operativ, um das geroutete Datenpaket, bei dem Felder ersetzt wurden, falls ein Abgleich gefunden wurde, an den Port 118 des gemeinsam genutzten Paketpuffers 116 über den Bus 119 zu übertragen.
  • 6 zeigt ein Tabellendiagramm, das allgemein eine Policy-Matching-Tabelle (PM-Tabelle) von Informationen bei 240 veranschaulicht, die in der Tabellenspeichereinheit 134 gespeichert sind (3), gemäß einer anderen Ausführungsform der vorliegenden Erfindung. Die Tabelle 240 weist eine Mehrzahl von Tabelleneinträgen 242 auf, die jeweils umfassen: ein IP-Bestimmungsadressen(IPDA)-Feld 244 zum Speichern eines zugeordneten 32 Bit-IP-Bestimmungsadressenwertes; ein IP-Quelladressen(IPSA)-Feld 186 zum Speichern eines zugeordneten 32 Bit-IP-Quelladressenwertes; ein TDS/UDS-Feld 248 zum Speichern eines zugeordneten TDS/UDS-Wertes; ein TSS/USS-Feld 250 zum Speichern eines zugeordneten TSS/USS-Wertes; ein Protokollfeld 252 zum Speichern eines zugeordneten Protokollwertes; ein Type-Of-Service(TOS)-Feld 254 zum Speichern eines zugeordneten TOS-Wertes; und mindestens ein programmierbares Feld 256 zum Speichern von zugeordneten programmierbaren Parametern.
  • Die Abgleichfelder 244 bis 256 der Tabelle 240 werden zusammen mit entsprechenden Aktionen (Paket weiter leiten, Paket fallen lassen, VLAN ID ändern, Priorität ändern) verwendet.
  • Ein Beispiel für eine PM-Regel ist: "(1) zulassen, dass das Paket nur an das IP-Unternetz von 0ABC_XX:XX weiter geleitet wird; (2) alle anderen Pakete sollen fallen gelassen werden. Jedes Paket mit einer TCP-Quellportnummer von größer als 'd15 sollte DSCP zu 6'b11 0000 ändern und an CPU senden." Um einen Konflikt zu lösen, der entsteht, wenn für mehr als eine Regel ein Abgleich vorliegt, sollten die Regeln in der PM-Tabelle Vorrang haben. Die PM-Suche ist jedoch ein Best-Match-Suchalgorithmus, da es nötig sein kann, dass ein Portagent jeden Eintrag der Tabelle 240 durchsucht, bevor er einen besten verfügbaren Abgleich findet. Die PM-Suche wird üblicherweise in Firewall-Anwendungen allgemein für Sicherheitszwecke angewendet. Basierend auf PM-Tabelleninformationen kann ein Anwender der Vorrichtung 100 (3) Aktionen (Policies) definieren, die programmierbar sind. Ein übliches Beispiel für eine Policy-Regel umfasst Regeln zum Fallenlassen eines jeden Paketes, das von einer Konkurrenzfirma stammt.
  • 7 veranschaulicht ein verallgemeinertes Schaltungsblockdiagramm einer alternativen Ausführungsform der Erfindung. In den 2A und 3 besitzt die Tabelleneinheit eine direkte Verbindung mit jedem der Agenten. Je nach der Anzahl von Agenten können die Verbindungen eine Menge Platz einnehmen. Um das hohe Ausfächern aus dem Tabellenspeicher zu minimieren, ist es eine Alternative, die Daten unter Verwendung einer Ringtopographie zu liefern. Der Tabellencontroller 302 liefert eine Adresse an die Tabellenspeichereinheit 301, und der Tabelleneintrag und die Adresse werden an einen ersten Portagenten 300 gesendet. Daraufhin werden die Daten und die Adresse an den nächsten Portagenten 300 weiter geleitet, und so weiter. In diesem Modus können Daten N Taktzyklen am N-ten Port benötigen; das Ausfächern beträgt jedoch nur Eins. Die Einschränkung dieses Modus ist es, dass die Tabelleneinträge kontinuierlich ausgesendet werden müssen.

Claims (17)

  1. Tabellensuchverfahren, wobei das Verfahren die Schritte aufweist: Vorsehen mindestens einer Speichereinheit (60) mit einer darin gespeicherten Informationstabelle (80), welche eine Mehrzahl von Dateneinträgen (82) beinhaltet, die jeweils Dateninhalte aufweisen; Vorsehen einer Mehrzahl von Suchagenten (52), die jeweils kommunikationsmäßig mit der Speichereinheit (60) gekoppelt sind, wobei jeder der Suchagenten (52) an einem Port (53) einen zugeordneten Suchargumentwert empfängt; Vorsehen einer zentralisierten Schnittstelle zwischen der Speichereinheit (60) und jedem der Agenten (52) durch eine Speicher-Controllereinheit (68); Senden der Inhalte eines aktuellen der Tabelleneinträge (82) durch die mindestens eine Speichereinheit (60) an jeden der Agenten (52) während eines jeden von einer Mehrzahl von Operationszyklen, wobei die Speichereinheit (60) durch die Speicher-Controllereinheit (68) gesteuert wird; wobei jeder der Suchagenten (52) einen zugeordneten, am besten übereinstimmenden der Dateneinträge (82) basierend auf Vergleichen zwischen dem zugeordneten Suchargumentwert und den Inhalten der von der Speichereinheit (60) gesendeten Dateneinträge (82) bestimmt.
  2. Tabellensuchverfahren nach Anspruch 1, wobei der Schritt des Sendens mindestens eines Tabelleneintrags (82) das gleichzeitige Senden von mehreren Tabelleneinträgen (82) umfasst, und die Suchagenten (52) bestimmen, ob ein Abgleich zwischen den mehreren Tabelleneinträgen (82) und dem zugeordneten Suchwert vorliegt.
  3. Tabellensuchverfahren nach Anspruch 1, wobei der Schritt des Sendens mindestens eines Tabelleneintrags (82) das gleichzeitige Senden des mindestens einen Tabelleneintrags (82) an jeden der Mehrzahl von Suchagenten (52) umfasst.
  4. Tabellensuchverfahren nach Anspruch 1, wobei der Schritt des Sendens mindestens eines Tabelleneintrags (82) das Liefern des mindestens einen Tabelleneintrags (82) an einen ersten Suchagenten von der Mehrzahl von Suchagen ten (52) aufweist, wobei der erste Suchagent den mindestens einen Tabelleneintrag (82) an einen nächsten Suchagenten weitergibt, so dass alle der Mehrzahl von Suchagenten (52) nacheinander den mindestens einen Tabelleneintrag (82) erhalten.
  5. Tabellensuchverfahren nach Anspruch 1, wobei der Schritt des Vorsehens mindestens einer Speichereinheit (60) das Vorsehen mindestens einer Speichereinheit (60) mit einer Mehrzahl von Tabellen umfasst, und der Schritt des Sendens mindestens eines Tabelleneintrags (82) das Senden des mindestens einen Tabelleneintrags (82) und einer Tabellenadresse, welche einer ausgewählten Tabelle der Mehrzahl von Tabellen zugeordnet ist, umfasst.
  6. Tabellensuchverfahren nach Anspruch 1, wobei die Suchagenten (52) den Abgleich als einen zugeordneten, am besten übereinstimmenden von einer Mehrzahl von Tabelleneinträgen (82) gemäß einem Longest-Prefix-Match-Suchvorgang bestimmen.
  7. Tabellensuchverfahren nach Anspruch 1, wobei die Suchagenten (52) den Abgleich als einen zugeordneten, am besten übereinstimmenden von einer Mehrzahl von Tabelleneinträgen (82) gemäß einem Policy-Match-Suchvorgang bestimmen.
  8. Tabellensuchverfahren nach Anspruch 1, welches ferner die folgenden Schritte aufweist: Liefern einer Reihe von Speicheradresswerten an die Speichereinheit (60) durch die Controllereinheit (68), wobei die Speichereinheit (60) auf die Speicheradresswerte anspricht, und an jeden der Agenten (52) gesendete Tabelleneinträge (82) auf der Reihe von Speicheradresswerten basieren.
  9. Tabellensuchverfahren nach Anspruch 8, wobei jeder der Agenten (52) kommunikationsmäßig mit der Controllereinheit (68) gekoppelt ist, und jeder der Agenten (52) im Ansprechen auf den Empfang des zugeordneten Suchwertes ein Suche-Freigabesignal an die Controllereinheit (68) liefert, wobei der Schritt des Lieferns der Reihe von Speicheradresswerten im Ansprechen auf das Suche-Freigabesignal durch mindestens einen der Agenten (52) stattfindet.
  10. Tabellensuchsystem, welches aufweist: eine Speichereinheit (60) zum Speichern einer Informationstabelle (80), welche eine Mehrzahl von Dateneinträgen (82) beinhaltet, die jeweils Dateninhalte aufweisen; eine Mehrzahl von Suchagenten (52), die jeweils kommunikationsmäßig mit der Speichereinheit (60) gekoppelt sind und einen Port (53) zum Empfangen eines zugeordneten Suchargumentwertes aufweisen; und eine Speicher-Controllereinheit (68), die eine zentralisierte Schnittstelle zwischen der Speichereinheit (60) und jedem der Agenten (52) zur Verfügung stellt, wobei die Controllereinheit (68) zum Steuern der Speichereinheit (60) operativ ist, um während eines jeden von einer Mehrzahl von Operationszyklen die Inhalte eines aktuellen der Tabelleneinträge (82) an jeden der Agenten (52) zu senden; wobei jeder der Suchagenten (52) operativ ist, um einen zugeordneten, am besten übereinstimmenden der Dateneinträge (82) basierend auf Vergleichen zwischen dem zugeordneten Argumentwert und den Inhalten der von der Speichereinheit (60) gesendeten Dateneinträge (82) zu bestimmen.
  11. Tabellensuchsystem nach Anspruch 10, wobei die Speichereinheit (60) eine statische Direktzugriffsspeicher(SRAM)-Einheit aufweist.
  12. Tabellensuchsystem nach Anspruch 10, wobei jeder der Suchagenten (52) operativ ist, um den zugeordneten, am besten übereinstimmenden der Dateneinträge (82) gemäß einem Longest-Prefix-Match-Suchvorgang zu bestimmen.
  13. Tabellensuchsystem nach Anspruch 10, wobei jeder der Suchagenten (52) operativ ist, um den zugeordneten, am besten übereinstimmenden der Dateneinträge (82) gemäß einem Policy-Match-Suchvorgang zu bestimmen.
  14. Tabellensuchsystem nach Anspruch 10, wobei die Controllereinheit (68) die Speichereinheit (60) steuert, indem sie eine Reihe von Speicheradresswerten an die Speichereinheit (60) liefert, und wobei die Speichereinheit (60) auf die Speicheradresswerte anspricht und operativ ist, um während jedes der Zyklen die Inhalte eines der Tabelleneinträge (82) an jeden der Agenten (52) zu senden.
  15. Tabellensuchsystem nach Anspruch 14, wobei jeder der Agenten (52) kommunikationsmäßig mit der Controllereinheit (68) gekoppelt ist, um ein zugeordnetes der Mehrzahl von Suche-Freigabesignalen an die Controllereinheit (68) zu liefern, und jeder der Agenten (52) operativ ist, um das zugeordnete Freigabesignal im Ansprechen auf den Empfang des zugeordneten Suchargumentwertes zu aktivieren, wobei die Controllereinheit (68) operativ ist, um die Reihe von Speicheradresswerten im Ansprechen auf die Aktivierung mindestens eines der Suche-Freigabesignale an die Speichereinheit (60) zu liefern.
  16. Tabellensuchsystem nach Anspruch 10, wobei jeder der Agenten (52) ferner aufweist: eine Vergleichslogikeinheit (92) zum Empfangen des zugeordneten Suchargumentwertes und zum Empfangen der von der Speichereinheit (60) gelieferten Inhalte der Tabelleneinträge (82); ein Datenregister, das kommunikationsmäßig mit der Vergleichslogikeinheit (92) gekoppelt ist; ein Abgleichqualitätsregister, das kommunikationsmäßig mit der Vergleichslogikeinheit (92) gekoppelt ist, wobei das Qualitätsregister vorübergehend ausgewählte Abgleichqualitätswerte speichert, die den vorübergehend ausgewählten der Einträge (82) zugeordnet sind; wobei die Vergleichslogikeinheit (92) während jedes der Zyklen operativ ist, um einen Tabellensuchvorgang nach einem besten Abgleich durchzuführen, der die folgenden Schritte umfasst: Vergleichen des zugeordneten Argumentwertes mit einem ausgewählten Abschnitt der Inhalte des aktuellen Eintrags, um zu bestimmen, ob ein aktueller Abgleich vorliegt, und falls ein aktueller Abgleich zwischen dem zugeordneten Argumentwert und dem ausgewählten Abschnitt der Inhalte des aktuellen Eintrags bestimmt wurde, Bestimmen eines dem aktuellen Eintrag zugeordneten aktuellen Abgleichqualitätswertes, wobei der aktuelle Abgleichqualitätswert eine Qualität des aktuellen Abgleichs angibt, Vergleichen des aktuellen Abgleichqualitätswertes mit einem vorherigen, vorübergehend ausgewählten Abgleichqualitätswert, der in dem Abgleichqualitätsregister gespeichert ist, um zu bestimmen, ob der aktuelle Abgleich ein wünschenswerterer Abgleich ist als ein Abgleich, der dem vorherigen, vorübergehend ausgewählten Abgleichqualitätswert zugeordnet ist, und falls der aktuelle Abgleich ein wünschenswerterer Abgleich ist als ein Abgleich, der dem vorherigen, vorübergehend ausgewählten Abgleichqualitätswert zugeordnet ist, Ersetzen der Inhalte des Abgleichqualitätsregisters durch den aktuellen Abgleichqualitätswert, und Ersetzen der Inhalte des Datenregisters durch die Dateninhalte des aktuellen Eintrags.
  17. Tabellensuchsystem nach Anspruch 16, wobei: die Informationstabelle (80) eine Policy-Match-Tabelle ist; jeder der Dateneinträge (82) Argumentfelder zum Speichern von zugeordneten gespeicherten Argumentwerten und Maskenwertfelder zum Speichern von zugeordneten Maskenwerten aufweist; und der Suchvorgang das Vergleichen eines unmaskierten Abschnitts des zugeordneten empfangenen Argumentwertes mit einem unmaskierten Abschnitt des gespeicherten Argumentwertes des aktuellen Eintrags umfasst, wobei jeder der unmaskierten Abschnitte des empfangenen Argumentwertes und des gespeicherten Argumentwertes durch das Maskieren einer Anzahl von niedrigstwertigen Bits definiert ist, die durch den Maskenwert des aktuellen Eintrags angegeben wird.
DE60120790T 2000-03-09 2001-03-09 Methode und gerät zum durchsuchen von tabellen in hoher geschwindigkeit Expired - Lifetime DE60120790T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US18833500P 2000-03-09 2000-03-09
US188335P 2000-03-09
PCT/US2001/004955 WO2001065909A2 (en) 2000-03-09 2001-03-09 Method and apparatus for high speed table search

Publications (2)

Publication Number Publication Date
DE60120790D1 DE60120790D1 (de) 2006-07-27
DE60120790T2 true DE60120790T2 (de) 2007-06-14

Family

ID=22692730

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60120790T Expired - Lifetime DE60120790T2 (de) 2000-03-09 2001-03-09 Methode und gerät zum durchsuchen von tabellen in hoher geschwindigkeit

Country Status (6)

Country Link
US (2) US6678678B2 (de)
EP (1) EP1405202B1 (de)
AT (1) ATE330285T1 (de)
AU (1) AU2001245285A1 (de)
DE (1) DE60120790T2 (de)
WO (1) WO2001065909A2 (de)

Families Citing this family (164)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6807518B1 (en) * 2000-04-13 2004-10-19 Ford Motor Company Method for analyzing product information
US20020120751A1 (en) * 2001-02-23 2002-08-29 Chris Del Sordo Control channel protocol and hardware-independent downstream services software design for broadband devices
JP2002334114A (ja) * 2001-05-10 2002-11-22 Allied Tereshisu Kk テーブル管理方法及び装置
DE10147419A1 (de) * 2001-09-26 2003-04-24 Siemens Ag Verfahren zur Erstellung einer dynamischen Adresstabelle für einen Koppelknoten in einem Datennetz und Verfahren zur Übertragung eines Datentelegramms
US7218639B2 (en) * 2001-11-01 2007-05-15 The Furukawa Electric Co., Ltd. Network system, transmission method, and computer program
US7373659B1 (en) * 2001-12-20 2008-05-13 Mcafee, Inc. System, method and computer program product for applying prioritized security policies with predetermined limitations
US7035844B2 (en) * 2002-02-25 2006-04-25 Lsi Logic Corporation FFS search and edit pipeline separation
US7263091B1 (en) * 2002-05-23 2007-08-28 Juniper Networks, Inc. Scalable routing system
US7039018B2 (en) * 2002-07-17 2006-05-02 Intel Corporation Technique to improve network routing using best-match and exact-match techniques
US7877504B2 (en) * 2002-08-29 2011-01-25 Intel Corporation Techniques for entry lookups
US20050005026A1 (en) * 2003-07-03 2005-01-06 International Business Machines Corporation Method and apparatus for managing a remote data processing system
US7308505B2 (en) * 2003-12-17 2007-12-11 International Business Machines Corporation Method, system and program product for facilitating forwarding of data packets through a node of a data transfer network using multiple types of forwarding tables
US20050210008A1 (en) * 2004-03-18 2005-09-22 Bao Tran Systems and methods for analyzing documents over a network
WO2005104456A1 (ja) * 2004-03-31 2005-11-03 Ipt Corporation 固定長データの検索装置および検索管理方法
JP4700452B2 (ja) * 2005-09-16 2011-06-15 株式会社リコー 情報管理装置、情報管理方法、情報管理プログラムおよび記録媒体
CN100442772C (zh) * 2005-10-19 2008-12-10 华为技术有限公司 一种桥接转发方法
US7984180B2 (en) 2005-10-20 2011-07-19 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
US7921185B2 (en) * 2006-03-29 2011-04-05 Dell Products L.P. System and method for managing switch and information handling system SAS protocol communication
WO2008068161A1 (en) * 2006-12-06 2008-06-12 Telefonaktiebolaget Lm Ericsson (Publ) Extended vlan classification
US7877398B2 (en) * 2007-11-19 2011-01-25 International Business Machines Corporation Masking related sensitive data in groups
US8291058B2 (en) * 2010-02-19 2012-10-16 Intrusion, Inc. High speed network data extractor
US9106711B2 (en) * 2012-09-04 2015-08-11 Telefonaktiebolaget L M Ericsson (Publ) Minimizing mapping and signaling for data path aggregation
CN103873373B (zh) * 2012-12-11 2017-05-17 杭州华三通信技术有限公司 一种组播数据报文转发方法及设备
US9158667B2 (en) 2013-03-04 2015-10-13 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US8964496B2 (en) 2013-07-26 2015-02-24 Micron Technology, Inc. Apparatuses and methods for performing compare operations using sensing circuitry
US8971124B1 (en) 2013-08-08 2015-03-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9153305B2 (en) 2013-08-30 2015-10-06 Micron Technology, Inc. Independently addressable memory array address spaces
US9019785B2 (en) 2013-09-19 2015-04-28 Micron Technology, Inc. Data shifting via a number of isolation devices
US9449675B2 (en) 2013-10-31 2016-09-20 Micron Technology, Inc. Apparatuses and methods for identifying an extremum value stored in an array of memory cells
US9430191B2 (en) 2013-11-08 2016-08-30 Micron Technology, Inc. Division operations for memory
US9934856B2 (en) 2014-03-31 2018-04-03 Micron Technology, Inc. Apparatuses and methods for comparing data patterns in memory
WO2015165104A1 (zh) 2014-04-30 2015-11-05 华为技术有限公司 查找装置及方法
US9786335B2 (en) 2014-06-05 2017-10-10 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9711207B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9779019B2 (en) 2014-06-05 2017-10-03 Micron Technology, Inc. Data storage layout
US9830999B2 (en) 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
US9910787B2 (en) 2014-06-05 2018-03-06 Micron Technology, Inc. Virtual address table
US9455020B2 (en) 2014-06-05 2016-09-27 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
US9496023B2 (en) 2014-06-05 2016-11-15 Micron Technology, Inc. Comparison operations on logical representations of values in memory
US9704540B2 (en) 2014-06-05 2017-07-11 Micron Technology, Inc. Apparatuses and methods for parity determination using sensing circuitry
US10074407B2 (en) 2014-06-05 2018-09-11 Micron Technology, Inc. Apparatuses and methods for performing invert operations using sensing circuitry
US9711206B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9449674B2 (en) 2014-06-05 2016-09-20 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9747961B2 (en) 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US10068652B2 (en) 2014-09-03 2018-09-04 Micron Technology, Inc. Apparatuses and methods for determining population count
US9898252B2 (en) 2014-09-03 2018-02-20 Micron Technology, Inc. Multiplication operations in memory
US9589602B2 (en) 2014-09-03 2017-03-07 Micron Technology, Inc. Comparison operations in memory
US9740607B2 (en) 2014-09-03 2017-08-22 Micron Technology, Inc. Swap operations in memory
US9904515B2 (en) 2014-09-03 2018-02-27 Micron Technology, Inc. Multiplication operations in memory
US9847110B2 (en) 2014-09-03 2017-12-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector
US9836218B2 (en) 2014-10-03 2017-12-05 Micron Technology, Inc. Computing reduction and prefix sum operations in memory
US9940026B2 (en) 2014-10-03 2018-04-10 Micron Technology, Inc. Multidimensional contiguous memory allocation
US10163467B2 (en) 2014-10-16 2018-12-25 Micron Technology, Inc. Multiple endianness compatibility
US10147480B2 (en) 2014-10-24 2018-12-04 Micron Technology, Inc. Sort operation in memory
US9779784B2 (en) 2014-10-29 2017-10-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US10073635B2 (en) 2014-12-01 2018-09-11 Micron Technology, Inc. Multiple endianness compatibility
US9747960B2 (en) 2014-12-01 2017-08-29 Micron Technology, Inc. Apparatuses and methods for converting a mask to an index
US10061590B2 (en) 2015-01-07 2018-08-28 Micron Technology, Inc. Generating and executing a control flow
US10032493B2 (en) 2015-01-07 2018-07-24 Micron Technology, Inc. Longest element length determination in memory
US9954771B1 (en) * 2015-01-30 2018-04-24 Marvell Israel (M.I.S.L) Ltd. Packet distribution with prefetch in a parallel processing network device
US9583163B2 (en) 2015-02-03 2017-02-28 Micron Technology, Inc. Loop structure for operations in memory
CN107408405B (zh) 2015-02-06 2021-03-05 美光科技公司 用于并行写入到多个存储器装置位置的设备及方法
WO2016126472A1 (en) 2015-02-06 2016-08-11 Micron Technology, Inc. Apparatuses and methods for scatter and gather
CN107408404B (zh) 2015-02-06 2021-02-12 美光科技公司 用于存储器装置的设备及方法以作为程序指令的存储
CN107408408B (zh) 2015-03-10 2021-03-05 美光科技公司 用于移位决定的装置及方法
US9741399B2 (en) 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
US9898253B2 (en) 2015-03-11 2018-02-20 Micron Technology, Inc. Division operations on variable length elements in memory
WO2016144726A1 (en) 2015-03-12 2016-09-15 Micron Technology, Inc. Apparatuses and methods for data movement
US10146537B2 (en) 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
US10049054B2 (en) 2015-04-01 2018-08-14 Micron Technology, Inc. Virtual register file
US10140104B2 (en) 2015-04-14 2018-11-27 Micron Technology, Inc. Target architecture determination
US9959923B2 (en) 2015-04-16 2018-05-01 Micron Technology, Inc. Apparatuses and methods to reverse data stored in memory
US10073786B2 (en) 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
US9704541B2 (en) 2015-06-12 2017-07-11 Micron Technology, Inc. Simulating access lines
US9921777B2 (en) 2015-06-22 2018-03-20 Micron Technology, Inc. Apparatuses and methods for data transfer from sensing circuitry to a controller
US9996479B2 (en) 2015-08-17 2018-06-12 Micron Technology, Inc. Encryption of executables in computational memory
US9905276B2 (en) 2015-12-21 2018-02-27 Micron Technology, Inc. Control of sensing components in association with performing operations
US9952925B2 (en) 2016-01-06 2018-04-24 Micron Technology, Inc. Error code calculation on sensing circuitry
US10048888B2 (en) 2016-02-10 2018-08-14 Micron Technology, Inc. Apparatuses and methods for partitioned parallel data movement
US9892767B2 (en) 2016-02-12 2018-02-13 Micron Technology, Inc. Data gathering in memory
US9971541B2 (en) 2016-02-17 2018-05-15 Micron Technology, Inc. Apparatuses and methods for data movement
US9899070B2 (en) 2016-02-19 2018-02-20 Micron Technology, Inc. Modified decode for corner turn
US10956439B2 (en) 2016-02-19 2021-03-23 Micron Technology, Inc. Data transfer with a bit vector operation device
US9697876B1 (en) 2016-03-01 2017-07-04 Micron Technology, Inc. Vertical bit vector shift in memory
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US10262721B2 (en) 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
US10379772B2 (en) 2016-03-16 2019-08-13 Micron Technology, Inc. Apparatuses and methods for operations using compressed and decompressed data
US9910637B2 (en) 2016-03-17 2018-03-06 Micron Technology, Inc. Signed division in memory
US10388393B2 (en) 2016-03-22 2019-08-20 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10120740B2 (en) 2016-03-22 2018-11-06 Micron Technology, Inc. Apparatus and methods for debugging on a memory device
US11074988B2 (en) 2016-03-22 2021-07-27 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10977033B2 (en) 2016-03-25 2021-04-13 Micron Technology, Inc. Mask patterns generated in memory from seed vectors
US10474581B2 (en) 2016-03-25 2019-11-12 Micron Technology, Inc. Apparatuses and methods for cache operations
US10074416B2 (en) 2016-03-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for data movement
US10430244B2 (en) 2016-03-28 2019-10-01 Micron Technology, Inc. Apparatuses and methods to determine timing of operations
US10453502B2 (en) 2016-04-04 2019-10-22 Micron Technology, Inc. Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions
US10607665B2 (en) 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US9818459B2 (en) 2016-04-19 2017-11-14 Micron Technology, Inc. Invert operations using sensing circuitry
US9659605B1 (en) 2016-04-20 2017-05-23 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10153008B2 (en) 2016-04-20 2018-12-11 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10042608B2 (en) 2016-05-11 2018-08-07 Micron Technology, Inc. Signed division in memory
US9659610B1 (en) 2016-05-18 2017-05-23 Micron Technology, Inc. Apparatuses and methods for shifting data
US10049707B2 (en) 2016-06-03 2018-08-14 Micron Technology, Inc. Shifting data
US10387046B2 (en) 2016-06-22 2019-08-20 Micron Technology, Inc. Bank to bank data transfer
US10037785B2 (en) 2016-07-08 2018-07-31 Micron Technology, Inc. Scan chain operation in sensing circuitry
US10388360B2 (en) 2016-07-19 2019-08-20 Micron Technology, Inc. Utilization of data stored in an edge section of an array
US10733089B2 (en) 2016-07-20 2020-08-04 Micron Technology, Inc. Apparatuses and methods for write address tracking
US10387299B2 (en) 2016-07-20 2019-08-20 Micron Technology, Inc. Apparatuses and methods for transferring data
US9972367B2 (en) 2016-07-21 2018-05-15 Micron Technology, Inc. Shifting data in sensing circuitry
US9767864B1 (en) 2016-07-21 2017-09-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in a sensing circuitry element
US10303632B2 (en) 2016-07-26 2019-05-28 Micron Technology, Inc. Accessing status information
US10468087B2 (en) 2016-07-28 2019-11-05 Micron Technology, Inc. Apparatuses and methods for operations in a self-refresh state
US9990181B2 (en) 2016-08-03 2018-06-05 Micron Technology, Inc. Apparatuses and methods for random number generation
US11029951B2 (en) 2016-08-15 2021-06-08 Micron Technology, Inc. Smallest or largest value element determination
US10606587B2 (en) 2016-08-24 2020-03-31 Micron Technology, Inc. Apparatus and methods related to microcode instructions indicating instruction types
US10466928B2 (en) 2016-09-15 2019-11-05 Micron Technology, Inc. Updating a register in memory
US10387058B2 (en) 2016-09-29 2019-08-20 Micron Technology, Inc. Apparatuses and methods to change data category values
US10014034B2 (en) 2016-10-06 2018-07-03 Micron Technology, Inc. Shifting data in sensing circuitry
US10529409B2 (en) 2016-10-13 2020-01-07 Micron Technology, Inc. Apparatuses and methods to perform logical operations using sensing circuitry
US9805772B1 (en) 2016-10-20 2017-10-31 Micron Technology, Inc. Apparatuses and methods to selectively perform logical operations
CN207637499U (zh) 2016-11-08 2018-07-20 美光科技公司 用于形成在存储器单元阵列上方的计算组件的设备
US10423353B2 (en) 2016-11-11 2019-09-24 Micron Technology, Inc. Apparatuses and methods for memory alignment
US9761300B1 (en) 2016-11-22 2017-09-12 Micron Technology, Inc. Data shift apparatuses and methods
US10402340B2 (en) 2017-02-21 2019-09-03 Micron Technology, Inc. Memory array page table walk
US10403352B2 (en) 2017-02-22 2019-09-03 Micron Technology, Inc. Apparatuses and methods for compute in data path
US10268389B2 (en) 2017-02-22 2019-04-23 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10838899B2 (en) 2017-03-21 2020-11-17 Micron Technology, Inc. Apparatuses and methods for in-memory data switching networks
US11222260B2 (en) 2017-03-22 2022-01-11 Micron Technology, Inc. Apparatuses and methods for operating neural networks
US10185674B2 (en) 2017-03-22 2019-01-22 Micron Technology, Inc. Apparatus and methods for in data path compute operations
US10049721B1 (en) 2017-03-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10147467B2 (en) 2017-04-17 2018-12-04 Micron Technology, Inc. Element value comparison in memory
US10043570B1 (en) 2017-04-17 2018-08-07 Micron Technology, Inc. Signed element compare in memory
US9997212B1 (en) 2017-04-24 2018-06-12 Micron Technology, Inc. Accessing data in memory
US10942843B2 (en) 2017-04-25 2021-03-09 Micron Technology, Inc. Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes
US10236038B2 (en) 2017-05-15 2019-03-19 Micron Technology, Inc. Bank to bank data transfer
US10068664B1 (en) 2017-05-19 2018-09-04 Micron Technology, Inc. Column repair in memory
US10013197B1 (en) 2017-06-01 2018-07-03 Micron Technology, Inc. Shift skip
US10262701B2 (en) 2017-06-07 2019-04-16 Micron Technology, Inc. Data transfer between subarrays in memory
US10152271B1 (en) 2017-06-07 2018-12-11 Micron Technology, Inc. Data replication
US10318168B2 (en) 2017-06-19 2019-06-11 Micron Technology, Inc. Apparatuses and methods for simultaneous in data path compute operations
US10162005B1 (en) 2017-08-09 2018-12-25 Micron Technology, Inc. Scan chain operations
US10534553B2 (en) 2017-08-30 2020-01-14 Micron Technology, Inc. Memory array accessibility
US10416927B2 (en) 2017-08-31 2019-09-17 Micron Technology, Inc. Processing in memory
US10346092B2 (en) 2017-08-31 2019-07-09 Micron Technology, Inc. Apparatuses and methods for in-memory operations using timing circuitry
US10741239B2 (en) 2017-08-31 2020-08-11 Micron Technology, Inc. Processing in memory device including a row address strobe manager
US10409739B2 (en) 2017-10-24 2019-09-10 Micron Technology, Inc. Command selection policy
US10522210B2 (en) 2017-12-14 2019-12-31 Micron Technology, Inc. Apparatuses and methods for subarray addressing
US10332586B1 (en) 2017-12-19 2019-06-25 Micron Technology, Inc. Apparatuses and methods for subrow addressing
US10614875B2 (en) 2018-01-30 2020-04-07 Micron Technology, Inc. Logical operations using memory cells
US10437557B2 (en) 2018-01-31 2019-10-08 Micron Technology, Inc. Determination of a match between data values stored by several arrays
US11194477B2 (en) 2018-01-31 2021-12-07 Micron Technology, Inc. Determination of a match between data values stored by three or more arrays
US10725696B2 (en) 2018-04-12 2020-07-28 Micron Technology, Inc. Command selection policy with read priority
US10440341B1 (en) 2018-06-07 2019-10-08 Micron Technology, Inc. Image processor formed in an array of memory cells
US10769071B2 (en) 2018-10-10 2020-09-08 Micron Technology, Inc. Coherent memory access
US11175915B2 (en) 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
US10483978B1 (en) 2018-10-16 2019-11-19 Micron Technology, Inc. Memory device processing
US11184446B2 (en) 2018-12-05 2021-11-23 Micron Technology, Inc. Methods and apparatus for incentivizing participation in fog networks
WO2020172290A1 (en) * 2019-02-19 2020-08-27 Marcroft Kyle Mitchell Systems, methods, and devices for the sorting of digital lists
US10867655B1 (en) 2019-07-08 2020-12-15 Micron Technology, Inc. Methods and apparatus for dynamically adjusting performance of partitioned memory
US11360768B2 (en) 2019-08-14 2022-06-14 Micron Technolgy, Inc. Bit string operations in memory
US11449577B2 (en) 2019-11-20 2022-09-20 Micron Technology, Inc. Methods and apparatus for performing video processing matrix operations within a memory array
US11853385B2 (en) 2019-12-05 2023-12-26 Micron Technology, Inc. Methods and apparatus for performing diversity matrix operations within a memory array
US11537319B2 (en) * 2019-12-11 2022-12-27 Advanced Micro Devices, Inc. Content addressable memory with sub-field minimum and maximum clamping
US11227641B1 (en) 2020-07-21 2022-01-18 Micron Technology, Inc. Arithmetic operations in memory

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4899334A (en) 1987-10-19 1990-02-06 Oki Electric Industry Co., Ltd. Self-routing multistage switching network for fast packet switching system
EP0439507B1 (de) 1988-10-20 1996-04-24 CHUNG, David Siu Fu Speicherstruktur und verwendung
US5253248A (en) 1990-07-03 1993-10-12 At&T Bell Laboratories Congestion control for connectionless traffic in data networks via alternate routing
GB9023867D0 (en) 1990-11-02 1990-12-12 Mv Ltd Improvements relating to a fault tolerant storage system
JPH04189023A (ja) 1990-11-22 1992-07-07 Victor Co Of Japan Ltd パルス同期化回路
JPH04214290A (ja) 1990-12-12 1992-08-05 Mitsubishi Electric Corp 半導体記憶装置
JPH05183828A (ja) 1991-12-27 1993-07-23 Sony Corp 電子機器
EP0556148B1 (de) 1992-01-10 1998-07-22 Digital Equipment Corporation Verfahren zur Verbindung einer Leitungskarte mit einer Adressenerkennungseinheit
US5390173A (en) 1992-10-22 1995-02-14 Digital Equipment Corporation Packet format in hub for packet data communications system
DE69324204T2 (de) 1992-10-22 1999-12-23 Cabletron Systems Inc Aufsuchen von Adressen bei Paketübertragung mittels Hashing und eines inhaltsadressierten Speichers
US5696899A (en) 1992-11-18 1997-12-09 Canon Kabushiki Kaisha Method and apparatus for adaptively determining the format of data packets carried on a local area network
US5473607A (en) 1993-08-09 1995-12-05 Grand Junction Networks, Inc. Packet filtering for data networks
US5499295A (en) 1993-08-31 1996-03-12 Ericsson Inc. Method and apparatus for feature authorization and software copy protection in RF communications devices
US5802287A (en) 1993-10-20 1998-09-01 Lsi Logic Corporation Single chip universal protocol multi-function ATM network interface
US5887187A (en) 1993-10-20 1999-03-23 Lsi Logic Corporation Single chip network adapter apparatus
US5579301A (en) 1994-02-28 1996-11-26 Micom Communications Corp. System for, and method of, managing voice congestion in a network environment
US5459717A (en) 1994-03-25 1995-10-17 Sprint International Communications Corporation Method and apparatus for routing messagers in an electronic messaging system
US5555398A (en) 1994-04-15 1996-09-10 Intel Corporation Write back cache coherency module for systems with a write through cache supporting bus
FR2725573B1 (fr) 1994-10-11 1996-11-15 Thomson Csf Procede et dispositif pour le controle de congestion des echanges sporadiques de paquets de donnees dans un reseau de transmission numerique
EP0719065A1 (de) 1994-12-20 1996-06-26 International Business Machines Corporation Mehrzweck-Paketvermittlungsknoten für ein Datenübertragungsnetz
US5790539A (en) 1995-01-26 1998-08-04 Chao; Hung-Hsiang Jonathan ASIC chip for implementing a scaleable multicast ATM switch
US5644784A (en) 1995-03-03 1997-07-01 Intel Corporation Linear list based DMA control structure
US5664116A (en) 1995-07-07 1997-09-02 Sun Microsystems, Inc. Buffering of data for transmission in a computer communication system interface
US5684800A (en) 1995-11-15 1997-11-04 Cabletron Systems, Inc. Method for establishing restricted broadcast groups in a switched network
US5781549A (en) 1996-02-23 1998-07-14 Allied Telesyn International Corp. Method and apparatus for switching data packets in a data network
US5940596A (en) 1996-03-25 1999-08-17 I-Cube, Inc. Clustered address caching system for a network switch
US5828653A (en) 1996-04-26 1998-10-27 Cascade Communications Corp. Quality of service priority subclasses
US5748631A (en) 1996-05-09 1998-05-05 Maker Communications, Inc. Asynchronous transfer mode cell processing system with multiple cell source multiplexing
US5787084A (en) 1996-06-05 1998-07-28 Compaq Computer Corporation Multicast data communications switching system and associated method
US5802052A (en) 1996-06-26 1998-09-01 Level One Communication, Inc. Scalable high performance switch element for a shared memory packet or ATM cell switch fabric
US5898687A (en) 1996-07-24 1999-04-27 Cisco Systems, Inc. Arbitration mechanism for a multicast logic engine of a switching fabric circuit
GB9618132D0 (en) 1996-08-30 1996-10-09 Sgs Thomson Microelectronics Improvements in or relating to an ATM switch
US5845081A (en) 1996-09-03 1998-12-01 Sun Microsystems, Inc. Using objects to discover network information about a remote network having a different network protocol
US5831980A (en) 1996-09-13 1998-11-03 Lsi Logic Corporation Shared memory fabric architecture for very high speed ATM switches
US5842038A (en) 1996-10-10 1998-11-24 Unisys Corporation Optimized input/output memory access request system and method
JP3123447B2 (ja) 1996-11-13 2001-01-09 日本電気株式会社 Atm交換機のスイッチ制御回路
EP0849917B1 (de) 1996-12-20 2005-07-20 International Business Machines Corporation Vermittlungssystem
US6233246B1 (en) 1996-12-30 2001-05-15 Compaq Computer Corporation Network switch with statistics read accesses
DE19703833A1 (de) 1997-02-01 1998-08-06 Philips Patentverwaltung Koppeleinrichtung
US6452933B1 (en) 1997-02-07 2002-09-17 Lucent Technologies Inc. Fair queuing system with adaptive bandwidth redistribution
US6061351A (en) 1997-02-14 2000-05-09 Advanced Micro Devices, Inc. Multicopy queue structure with searchable cache area
US6175902B1 (en) 1997-12-18 2001-01-16 Advanced Micro Devices, Inc. Method and apparatus for maintaining a time order by physical ordering in a memory
US5892922A (en) 1997-02-28 1999-04-06 3Com Corporation Virtual local area network memory access system
US6011795A (en) 1997-03-20 2000-01-04 Washington University Method and apparatus for fast hierarchical address lookup using controlled expansion of prefixes
US5983223A (en) * 1997-05-06 1999-11-09 Novell, Inc. Method and apparatus for determining a longest matching prefix from a dictionary of prefixes
US5920566A (en) 1997-06-30 1999-07-06 Sun Microsystems, Inc. Routing in a multi-layer distributed network element
US6088356A (en) 1997-06-30 2000-07-11 Sun Microsystems, Inc. System and method for a multi-layer network element
US6021132A (en) 1997-06-30 2000-02-01 Sun Microsystems, Inc. Shared memory management in a switched network element
US6094435A (en) 1997-06-30 2000-07-25 Sun Microsystems, Inc. System and method for a quality of service in a multi-layer network element
US6246680B1 (en) 1997-06-30 2001-06-12 Sun Microsystems, Inc. Highly integrated multi-layer switch element architecture
US6014380A (en) 1997-06-30 2000-01-11 Sun Microsystems, Inc. Mechanism for packet field replacement in a multi-layer distributed network element
US5909686A (en) 1997-06-30 1999-06-01 Sun Microsystems, Inc. Hardware-assisted central processing unit access to a forwarding database
US6016310A (en) 1997-06-30 2000-01-18 Sun Microsystems, Inc. Trunking support in a high performance network device
US6115378A (en) 1997-06-30 2000-09-05 Sun Microsystems, Inc. Multi-layer distributed network element
US6119196A (en) 1997-06-30 2000-09-12 Sun Microsystems, Inc. System having multiple arbitrating levels for arbitrating access to a shared memory by network ports operating at different data rates
US5918074A (en) 1997-07-25 1999-06-29 Neonet Llc System architecture for and method of dual path data processing and management of packets and/or cells and the like
US6041053A (en) 1997-09-18 2000-03-21 Microsfot Corporation Technique for efficiently classifying packets using a trie-indexed hierarchy forest that accommodates wildcards
JP2959539B2 (ja) 1997-10-01 1999-10-06 日本電気株式会社 バッファ制御方法および装置
US6185185B1 (en) 1997-11-21 2001-02-06 International Business Machines Corporation Methods, systems and computer program products for suppressing multiple destination traffic in a computer network
ES2175813T3 (es) * 1997-11-24 2002-11-16 British Telecomm Gestion de informacion y recuperacion de terminos clave.
GB2337905B (en) 1998-05-28 2003-02-12 3Com Technologies Ltd Buffer management in network devices
JP3278406B2 (ja) * 1998-12-10 2002-04-30 富士通株式会社 ドキュメント検索仲介装置、ドキュメント検索システム、および、ドキュメント検索仲介プログラムを記録した記録媒体
US6523023B1 (en) * 1999-09-22 2003-02-18 Networks Associates Technology, Inc. Method system and computer program product for distributed internet information search and retrieval

Also Published As

Publication number Publication date
ATE330285T1 (de) 2006-07-15
WO2001065909A3 (en) 2003-12-31
EP1405202B1 (de) 2006-06-14
DE60120790D1 (de) 2006-07-27
US20010032201A1 (en) 2001-10-18
WO2001065909A2 (en) 2001-09-13
US20040139071A1 (en) 2004-07-15
US6678678B2 (en) 2004-01-13
US7260565B2 (en) 2007-08-21
AU2001245285A1 (en) 2001-09-17
EP1405202A2 (de) 2004-04-07

Similar Documents

Publication Publication Date Title
DE60120790T2 (de) Methode und gerät zum durchsuchen von tabellen in hoher geschwindigkeit
DE60133352T2 (de) Gebundene Netzvermittlungskonfiguration
DE69836684T2 (de) Unterstützung von vollständigen bäumen in hochleistungsnetzwerkgeräten
DE60126222T2 (de) Verbundene Netzvermittlungskonfiguration
DE60127794T2 (de) Gebundene Netzschalterkonfiguration
DE69834122T2 (de) Verbindingsunterstützung in einer hochleistungsnetzwerkvorrichtung
DE69826680T2 (de) Hochintegrierte mehrschichtige Vermittlungsstellenelementarchitektur
DE60021846T2 (de) Leitweglenkungsanordnung
DE60126223T2 (de) Anordnung zur Verbindung von Netzvermittlungsstellen
DE60109972T2 (de) Prioirtätsauswahlverfahren für ein Datenkommunikationsschalter
DE60031515T2 (de) Netzwerkvermittlung
DE60309947T2 (de) Hochgeschwindigkeitsprotokoll für die Verbindung von modularen Netzwerkelementen
DE69935683T2 (de) Paketversendegerät mit einer Flussnachweistabelle
DE69834823T2 (de) Paketvermittlungsvorrichtung und -verfahren mit zentraler Speicherarchitektur
DE69912294T2 (de) Telekommunikationsnetzwerk mit veränderlichen adressenlernen, vermittlung und wegleitung
DE69832769T2 (de) Netzwerkkommunikationsvorrichtung mit gebundenen Toren für erhöhte Bandbreite
DE60300333T2 (de) Verfahren und Vorrichtung für ein flexibles Rahmenverarbeitungs und Klassifikationssystem
DE60016574T2 (de) Verfahren und vorrichtung zur belastungsverteilung uphänging von datenflussen
DE60212916T2 (de) Verfahren und Vorrichtung zum Ermöglichen von Zugriffen in einer Vermittlungsstelle
DE60031516T2 (de) Verfahren und gerät für die verwaltung eines netzflusses in einer hochleistungs-netzschnittstelle
DE60015186T2 (de) Verfahren und system für rahmen- und protokollklassifikation
DE60038538T2 (de) Vermittlungseinrichtung und Vermittlungsverfahren
EP2882144B1 (de) Verfahren und Filteranordnung zum Filtern von über einen seriellen Datenbus eines Kommunikationsnetzwerks in einem Teilnehmer des Netzwerks eingehenden Nachrichten
DE60112011T2 (de) Verfahren und Vorrichtung zum Filtern von Paketen basierend auf Datenströme unter Verwendung von Addressentabellen
DE60116401T2 (de) Netzwerkvermittlung mit der Möglichkeit Anschlüsse zu blockieren

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M