DE602004009574T2 - System und verfahren zum modifizieren von daten, die von einer quelle zu einem bestimmungsort übermittelt werden - Google Patents

System und verfahren zum modifizieren von daten, die von einer quelle zu einem bestimmungsort übermittelt werden Download PDF

Info

Publication number
DE602004009574T2
DE602004009574T2 DE602004009574T DE602004009574T DE602004009574T2 DE 602004009574 T2 DE602004009574 T2 DE 602004009574T2 DE 602004009574 T DE602004009574 T DE 602004009574T DE 602004009574 T DE602004009574 T DE 602004009574T DE 602004009574 T2 DE602004009574 T2 DE 602004009574T2
Authority
DE
Germany
Prior art keywords
data
bitmask
entry
addresses
instructions
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
DE602004009574T
Other languages
English (en)
Other versions
DE602004009574D1 (de
Inventor
John W. Cary MARSHALL
Vinayak K. Morrisville PARAMESHWARA
Jeffrey B. Cary SCOTT
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.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of DE602004009574D1 publication Critical patent/DE602004009574D1/de
Application granted granted Critical
Publication of DE602004009574T2 publication Critical patent/DE602004009574T2/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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Circuits Of Receivers In General (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Computer And Data Communications (AREA)

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft die Computervernetzung und insbesondere die Modifizierung von Daten, die von einer Quelle zu einem Ziel übertragen werden.
  • Hintergrundinformationen
  • Ein Computernetzwerk ist eine geografisch verteilte Ansammlung von miteinander verbundenen Netzwerkverbindungen und -segmenten zum Transportieren von Daten zwischen Knoten, wie etwa Computern. Es stehen viele Typen von Netzwerksegmenten zur Verfügung, wobei die Typen von lokalen Netzwerken (LANs) bis zu Weitbereichsnetzen (WANs) reichen. Endknoten, wie zum Beispiel Personalcomputer oder Arbeitsplatzrechner, kommunizieren typischerweise über das Netzwerk, indem sie diskrete Rahmen oder Pakete von Daten in Übereinstimmung mit vordefinierten Protokollen austauschen. In diesem Kontext besteht ein Protokoll aus einem Satz von Regeln, die definieren, wie die Knoten miteinander interagieren.
  • Computernetzwerke können ferner durch einen Zwischenknoten, wie zum Beispiel einen Switch oder einen Router, miteinander verbunden sein, die eine Vielzahl von Ports aufweisen, die mit den Netzwerken gekoppelt sein können. Zum Beispiel kann ein Switch verwendet werden, um eine "Vermittlungs"-Funktion für die Übertragung von Informationen zwischen einer Vielzahl von LANs bei einer hohen Geschwindigkeit bereitzustellen. Die Vermittlungsfunktion umfasst das Empfangen eines Datenpakets an einem Quellport, das von einem Quellknoten stammt, und das Übertragen dieses Pakets zu wenigstens einem Zielport für die Weiterleitung zu einem Zielknoten.
  • Ein Router kann verwendet werden, um LANs miteinander zu verbinden, die unterschiedliche LAN-Standards ausführen, und/oder um eine Funktionalität auf höherer Ebene als ein Switch bereitzustellen. Wenn die LAN-Standards, die mit den Quell- und Zielknoten assoziiert sind, verschieden sind (z. B. Ethernet und Token Ring), dann kann der Router auch das Format des Pa kets so ändern, dass es von dem Zielknoten empfangen werden kann. Router arbeiten typischerweise auf der Netzwerkschicht eines Kommunikations-Protokollstack, der von dem Netzwerk verwendet wird, wie etwa die Internetwork-Schicht der Transmission Control Protocol/Internet Protocol(TCP/IP)-Kommunikationsarchitektur.
  • Router führen auch verschiedene Funktionen durch, die mit der Modifizierung von Daten assoziiert sind, die von einer Quelle zu einem Ziel übertragen werden, wie etwa die Verarbeitung von Paketen, die von dem Router empfangen werden. Diese Funktionen können das Einfügen, das Löschen oder das Ersetzen von Informationen in einem Paket umfassen. So unterstützen einige Router zum Beispiel das Multi-Protocol Label Switching(MPLS)-Protokoll. Das MPLS-Protokoll stellt ein Verfahren zur Zuordnung von Labels bereit, die Router davon unterrichten, wohin sie ein Paket senden sollen, und von der Priorität unterrichten, mit der das Paket empfangen werden soll. In Übereinstimmung mit MPLS werden Pakete auf einem Label-Switched Path (LSP) übertragen. Ein LSP ist ein Simplexpfad, der typischerweise eine Sequenz von Labels umfasst, die jeden Knoten entlang des Pfads von einem Quell-Label Edge Router (LER) zu einem Ziel-LER repräsentieren. Ein LER ist eine Vorrichtung (z. B. ein Router), die an der Kante des Anschlussnetzes und des MPLS-Netzwerks arbeitet, und ist typischerweise mit der Zuweisung und der Entfernung von LEPs befasst, wenn Verkehr ein MPLS-Netzwerk betritt oder verlässt. In einer typischen Anordnung wird ein LSP erzeugt, indem die Labels verkettet werden, um den Pfad zu bilden. Der LSP wird dann in den Header des Pakets an dem Quell-LER eingefügt. Wenn das Paket den Ziel-LER erreicht, werden die Labels aus dem Paket-Header gelöscht (entfernt), und das Paket wird weiter verarbeitet, z. B. wird das Paket weitergeleitet.
  • Ein LER verwendet oftmals einen Prozessor (CPU), um die LSPs einzufügen und zu löschen, die in den Paketen enthalten sind, die über ein MPLS-Netzwerk übertragen werden. Für Gewöhnlich führt der Prozessor auch andere Aufgaben für den LER durch, wie etwa die Implementierung unterschiedlicher Routing-Protokolle und die allgemeine Verwaltung des LER. Aber die Benutzung des Prozessors für das Einfügen und Löschen von LSPs in Paketen kann eine nicht sehr effiziente Benutzung der Ressourcen des Prozessor bedeuten. Das Einfügen und Löschen von LSPs verbraucht oftmals Zeit und Speicherres sourcen und kann wertvolle Prozessorressourcen verschwenden, die besser zur Durchführung von anderen Aufgaben verwendet werden könnten, wie zum Beispiel das Ausführen von Routing-Protokollen.
  • Zum Beispiel umfasst das Erzeugen und Einfügen eines LSP in ein Paket oftmals (i) das Erzeugen des LSP durch das Bewegen von verschiedenen Stücken von Daten von verschiedenen Speicherplätzen in einen einzigen Speicherbereich und (ii) das Einfügen des LSP in den Header des Pakets, was des Weiteren das Trennen des Paket-Header in vorausgehende und hinten anhängende Teile umfassen kann, bevor der LSP zwischen den Teilen eingefügt wird. Dieser Prozess ist eindeutig mit einer großen Menge von Berechnungsressourcen und Speicherbandbreite verbunden. In Abhängigkeit von dem Betrag an Verkehr, der verarbeitet wird, kann es sein, dass ein maßloser Betrag an Prozessorressourcen der Modifizierung des Datenverkehrs gewidmet werden muss, z. B. der Verarbeitung von LSPs, was die Fähigkeit des Prozessors beeinträchtigen kann, andere Aufgaben durchzuführen, wie etwa die Verarbeitung anderer Pakete, die Verwaltung von Routing-Tabellen und das Reagieren auf andere Router in dem Netzwerk. Dies wiederum kann zu einer verringerten Paketverarbeitungsperformanz (d. h., Paketdurchsatz) des Routers führen. Darüber hinaus können diese Aufgaben in einigen Fällen zeitkritisch sein und erfordern es, dass der Prozessor die Aufgabe innerhalb eines bestimmten Zeitfensters erledigt. Ein Beispiel für eine solche Aufgabe ist das Senden eines "Keep-Alive"-Pakets innerhalb eines bestimmten Zeitrahmens, damit der Router von dem Netzwerk bestätigt wird. Wenn der Prozessor einen beträchtlichen Teil seiner Ressourcen der Modifizierung von Daten widmet, die von einer Quelle zu einem Ziel übertragen werden, kann es sein, dass nicht genügend Ressourcen übrig bleiben, um diese zeitkritischen Aufgaben durchzuführen.
  • Die US-A-6275508 B1 offenbart eine Technik zur Verarbeitung von Datagramm-Headern unter Verwendung einer dedizierten Hardware-Logik, die eine massive Parallelität verwendet, um hohe Geschwindigkeiten zu erzielen. Eingabe-FIFOs liefern Daten zu der Hardware-Logik (eine Sequencer-Einheit und eine L2-Header-Einheit), die jedes Byte an Daten parallel verarbeitet. Die Hardware-Logik liest vorbestimmte Anweisungen aus einem Write Control Store (WCS) aus und führt diese aus, um die Daten zu modifizieren.
  • Die US-A-2002/009050 A1 offenbart eine Technik zur Reduzierung der Verarbeitungslast in einer Netzwerk-Datenpaket-Verarbeitungsvorrichtung, die in einem Label-Switched Network verwendet wird. Dies wird dadurch erreicht, dass eine Vielzahl von Labels in der Form eines Label-Stack an das Paket angehängt werden, wenn dieses das Netzwerk betritt, und danach ein Zeiger verwendet wird, um auf spezifische Labels innerhalb des Label-Stack hinzuweisen, anstatt dass es Knoten innerhalb des Netzwerks erlaubt wird, Labels dem Paket hinzuzufügen oder aus diesem zu löschen, wenn das Paket das Netzwerk durchquert.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung stellt ein Verfahren zur Modifizierung von Daten bereit, die von einer Quelle zu einem Ziel übertragen werden, wobei das Verfahren die folgenden Schritte umfasst:
    Lesen einer oder mehrerer Anweisungen mittels eines Prozessors, wobei jede Anweisung eine Operation zur Modifizierung der Daten angibt;
    Erzeugen in Reaktion auf die eine oder mehreren Anweisungen eines oder mehrerer Befehle, wobei jeder Befehl mit einer Operation zur Modifizierung der Daten assoziiert ist;
    Platzieren der erzeugten Befehle in einer Datenstruktur;
    Initiieren der Übertragung von Daten von der Quelle zu dem Ziel;
    Durchführen mittels einer Vorrichtung, die unabhängig von dem Prozessor arbeitet, der Operationen, die mit den Befehlen assoziiert sind, die in der Datenstruktur enthalten sind, um die Daten so zu modifizieren, wie dies von den Befehlen angewiesen wird, während die Daten von der Quelle zu dem Ziel übertragen werden.
  • In dem veranschaulichten Ausführungsbeispiel ist die Quelle ein Kontextspeicher, das Ziel ist ein Ausgabepufferspeicher, die Datenstruktur ist eine Befehlstabelle, die einen oder mehrere Einträge umfasst, und die Daten sind ein Paket-Header, der in dem Kontextspeicher enthalten ist (d. h., Kontextdaten). Der Prozessor führt Anweisungen aus, um Operationen durchzuführen, die die Kontextdaten modifizieren, wie zum Beispiel das Einfügen von Daten in die und das Löschen von Daten aus den Kontextdaten. Die Anweisungen erzeugen Befehle, die mit den Operationen assoziiert sind; diese Befehle werden dann in Einträge platziert, die in der Befehlsta belle enthalten sind. Bei Vollendung der Verarbeitung der Kontextdaten führt der Prozessor einen Sendebefehl aus und weist einen Data Mover an, die Kontextdaten aus dem Kontextspeicher in den Ausgabepufferspeicher zu übertragen. Während die Kontextdaten übertragen werden, prüft der Data Mover die Einträge in der Befehlstabelle und modifiziert die Daten, wie dies von den Befehlen angewiesen wird, die in den Einträgen enthalten sind.
  • Vorteilhafterweise ist die erfinderische Technik eine Verbesserung gegenüber Techniken aus dem Stand der Technik, weil sie es ermöglicht, dass Daten, die von einer Quelle zu einem Ziel übertragen werden, modifiziert werden, ohne dass eine beträchtliche Nutzung von Prozessorressourcen notwendig ist. Statt dessen gibt der Prozessor in Übereinstimmung mit der erfinderischen Technik lediglich Befehle an einen Assistenten (Data Mover) zur Modifizierung der Daten aus. Die Befehle werden dann ohne Verwendung von Prozessorressourcen durchgeführt, wenn die Daten von der Quelle zu dem Ziel übertragen werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die obigen und weitere Vorteile der Erfindung können unter Bezugnahme auf die nachfolgende Beschreibung in Verbindung mit den beigefügten Zeichnungen, in denen gleiche Bezugszeichen identische oder funktional ähnliche Elemente angeben, besser verstanden werden.
  • 1 ist ein schematisches Blockdiagramm eines Datennetzwerks, das auf vorteilhafte Weise mit der vorliegenden Erfindung verwendet werden kann;
  • 2 ist ein schematisches Blockdiagramm auf hoher Ebene eines Zwischenknotens, der auf vorteilhafte Weise mit der vorliegenden Erfindung verwendet werden kann;
  • 3 ist ein schematisches Blockdiagramm einer Weiterleitungsmaschine, die als eine systolische Gruppierung von Prozessoren organisiert ist, die auf vorteilhafte Weise mit der vorliegenden Erfindung verwendet werden kann;
  • 4 ist ein schematisches Blockdiagramm eines Prozessor-Cluster, der auf vorteilhafte Weise mit der vorliegenden Erfindung verwendet werden kann;
  • 5 ist ein schematisches Blockdiagramm eines Befehlstabelleneintrags, der auf vorteilhafte Weise mit der vorliegenden Erfindung verwendet werden kann;
  • 6 ist ein schematisches Blockdiagramm einer Bitmaske, die auf vorteilhafte Weise mit der vorliegenden Erfindung verwendet werden kann;
  • 7 ist ein partielles schematisches Blockdiagramm einer Ausgabepufferspeicher-Logik, die auf vorteilhafte Weise mit der vorliegenden Erfindung verwendet werden kann;
  • 8 ist eine Auflistung von beispielhaften Anweisungen, die auf vorteilhafte Weise mit der vorliegenden Erfindung verwendet werden können;
  • 9A9C sind Ablaufdiagramme einer Sequenz von Schritten, die auf vorteilhafte Weise verwendet werden können, um die vorliegende Erfindung zu implementieren; und
  • 10 ist ein Zustandsautomatendiagramm, das auf vorteilhafte Weise verwendet werden kann, um einen Zustandsautomaten so zu konfigurieren, dass der in Übereinstimmung mit der vorliegenden Erfindung arbeitet.
  • AUSFÜHRLICHE BESCHREIBUNG EINES VERANSCHAULICHENDEN AUSFÜHRUNGSBEISPIELS
  • 1 ist ein schematisches Blockdiagramm eines Computernetzwerks 100, das auf vorteilhafte Weise mit der vorliegenden Erfindung verwendet werden kann. Das Computernetzwerk 100 umfasst eine Ansammlung von Kommunikationsverbindungen und -segmenten, die mit einer Vielzahl von Knoten, wie zum Beispiel Endknoten 110 und Zwischenknoten 200, verbunden sind. Die Netzwerkverbindungen und -segmente können lokale Netzwerke (LANs) 120, Weitbereichsnetzwerke (WANs), wie etwa das Internet 170, und WAN-Verbindungen 130 umfassen, die durch Zwischenknoten 200 miteinander verbunden sind, um ein Verbundnetz von Computerknoten zu bilden. Diese miteinander vernetzten Knoten kommunizieren miteinander, indem sie Datenpakete in Übereinstimmung mit einem vordefinierten Satz von Protokollen, wie zum Beispiel dem Transmission Control Protocol/Internet Protocol (TCP/IP) und dem Internetwork Packet eXchange (PIX) Protokoll, austauschen.
  • 2 ist ein schematisches Blockdiagramm auf hoher Ebene eines Zwischenknotens 200, der aus veranschaulichenden Gründen ein Router ist. Ein Beispiel für einen Router, der auf vorteilhafte Weise mit der vorliegenden Erfindung verwendet werden kann, ist der Cisco 10000 Series Internet Router, der von Cisco Systems Incorporated, San Jose, Kalifornien erhältlich ist. Der Knoten 200 umfasst eine Vielzahl von miteinander verbundenen Komponenten, die eine Weiterleitungsmaschine 300, verschiedene Speicher, eine Warteschlangenbildungslogik 210 und Netzwerk-Schnittstellenkarten (Leitungskarten) 240 umfassen. Die Operationen dieser Komponenten werden vorzugsweise synchron durch ein Taktmodul 270 gesteuert, obwohl die gruppierten Elemente der Weiterleitungsmaschine 300 operativ so konfiguriert sein können, dass sie asynchron funktionieren. In dem veranschaulichenden Ausführungsbeispiel erzeugt das Taktmodul 270 Taktsignale bei einer Frequenz von z. B. 200 Megahertz (d. h., Taktzyklen von 5 Nanosekunden), und verteilt sie global über Taktleitungen zu den Komponenten des Zwischenknotens.
  • Die Speicher umfassen allgemein Direktzugriffsspeicher-(RAM)-Speicherstellen, die durch die Weiterleitungsmaschine 300 adressierbar sind, und eine Logik zum Speichern von Datenstrukturen, auf die von den Komponenten zugegriffen wird, und von Software-Programmen, die Programme einschließen, die Ausführungsformen der vorliegenden Erfindung implementieren. Ein Betriebssystem, von dem Teile typischerweise im Speicher resident sind und von der Weiterleitungsmaschine 300 ausgeführt werden, organisiert funktionell den Knoten 200, indem es unter anderem Netzwerkoperationen zur Unterstützung von Software-Prozessen aufruft, die in dem Knoten 200 ablaufen. Es wird den Fachleuten auf dem Gebiet offensichtlich sein, dass andere Speichereinrichtungen, die verschiedene computerlesbare Medien einschließen, zum Speichern und zum Ausführen von Programmanweisungen verwendet werden können, die Bestandteil der erfinderischen Technik und des erfinderischen Mechanismus sind, die hier beschrieben sind.
  • Die Pufferspeicher- und Warteschlangenbildungseinheit (BQU; buffer and queuing unit) 210 ist mit einem Paketspeicher 220 zum Speichern von Paketen und einem Warteschlangenspeicher 220 zum Speichern von Netzwerk- und Verbindungsschicht-Headern der Pakete in Datenstrukturen, wie etwa Verbundlisten, die als Warteschlangen organisiert sind (nicht gezeigt), verbunden. Die BQU 210 umfasst des Weiteren Schnittstellenschaltungen für das Verbinden der Weiterleitungsmaschine 300 mit einer Vielzahl von Leitungskarten 240 über eine Selektorschaltung 250, die einen Arbiter 255 aufweist. Die Leitungskarten 240 können zum Beispiel Ports des Typs Asynchronous Transfer Mode (ATM), Fast Ethernet (FE) und Gigabit Ethernet (GE) umfas sen, von denen jeder herkömmliche Schnittstellenschaltungen, die die Signal-, elektrischen und mechanischen Charakteristiken enthalten können, und Austauschschaltungen umfasst, die für die Verbindung mit den physikalischen Medien und den Protokollen, die über diese Medien ablaufen, benötigt werden.
  • Ein Routing-Prozessor 260 führt herkömmliche Routing-Protokolle für die Kommunikation direkt mit der Weiterleitungsmaschine 300 aus. Die Routing-Protokolle umfassen im Allgemeinen topologische Informationsaustausche zwischen Zwischenknoten, um bevorzugte Pfade durch das Netzwerk auf der Basis zum Beispiel der Ziel-IP-Adressen zu bestimmen. Diese Protokolle stellen Informationen bereit, die von dem Prozessor 260 verwendet werden, um Weiterleitungstabellen zu erstellen und zu verwalten. Die Tabellen werden in die externen Speicher 340 als Weiterleitungsinformationsbasis-(FIB; forwarding information base)-Tabellen geladen, die von der Maschine 300 verwendet werden, um zum Beispiel Schicht-2-(L2)- und Schicht-3-(L3)-Weiterleitungsoperationen durchzuführen. Wenn ein Header zum Beispiel in Übereinstimmung mit einem IP-Routing verarbeitet wird, bestimmt die Maschine 300, wohin das Paket gesendet werden soll, in dem sie in die FIB unter Verwendung einer IP-Adresse des Header indexiert. Die Ausführung der Weiterleitungsoperationen führen dazu, dass die Ziel-Media Access Control-(MAC)-Adressen der Header von der Weiterleitungsmaschine 300 neu geschrieben werden, um Ausgangsports für die Pakete zu identifizieren.
  • Die Weiterleitungsmaschine 300 umfasst ein symmetrisches Multiprozessorsystem, das eine Vielzahl von Verarbeitungselementen oder Prozessoren aufweist. 3 ist ein partielles schematisches Blockdiagramm der Weiterleitungsmaschine 300, das eine Vielzahl von Prozessoren (TMCs) 450 umfasst, die als eine multidimensionale systolische Gruppierung organisiert sind. Jeder Prozessor 450 ist vorzugsweise ein überlappender Prozessor, der unter anderem eine Vielzahl von arithmetischen logischen Einheiten (ALUs; arithmetic logic units) und eine Registerdatei enthält, die eine Vielzahl von Mehrzweckregistern aufweist, die Zwischenergebnisinformationen speichern, die von den ALUs verarbeitet worden sind. Die Prozessoren 450 können in mehrere Reihen und Spalten gruppiert werden. In dem veranschaulichenden Ausführungsbeispiel sind die Prozessoren in acht (8) Reihen und zwei (2) Spalten in einer 8 × 2-Gruppierungs-Konfiguration gruppiert, die zwischen einem Ein gabepufferspeicher 360 und einem Ausgabepufferspeicher 700 eingebettet ist. Aber es sei angemerkt, dass andere Anordnungen, wie zum Beispiel 4 × 4- oder 8 × 2- oder 8 × 1-Gruppierungs-Konfigurationen vorteilhafterweise mit der vorliegenden Erfindung verwendet werden können. Wie hier angemerkt ist, kann ein einzelner Prozessor, der mehrere Ausführungs-Threads unterstützt, die Erfindung vorteilhaft nutzen.
  • Die Weiterleitungsmaschine 300 ist mit einer Vielzahl von externen Speicherressourcen 340 über Speichersteuerungen 375 gekoppelt. Der externe Speicher 340 ist vorzugsweise als eine oder mehrere Speicherbänke organisiert und unter Verwendung von Fast Cycle Random Access Memory(FCRAM)-Vorrichtungen implementiert, obwohl andere Vorrichtungen wie etwa die Reduced Latency Dynamic Random Access Memory(RLDRAM)-Vorrichtungen oder Static Random Access Memory(SRAM)-Vorrichtungen verwendet werden können. Der externe Speicher 340 ist ein externer "Spalten"-Speicher, der so konfiguriert ist, dass er permanente Daten (z. B. Weiterleitungstabellen, Warteschlangen), die als eine Reihe von Datenstrukturen organisiert sind, zur Verwendung bei der Verarbeitung von temporären Daten (z. B. Paketen) speichern kann. Jede Speichersteuerung 375 enthält eine Logik, die den Zugriff auf Speicherplätze ermöglicht, die in dem assoziierten externen Speicher 340 enthalten sind. Wie es hier verwendet wird, umfasst ein Speichersubsystem einen externen Speicher 340 und dessen assoziierte Speichersteuerung 375. Die Prozessoren 450 einer Spalte sind mit einem bestimmten externen Speichersubsystem gekoppelt. Zum Beispiel sind die Prozessoren der Spalte Eins (d. h., TMC1 in den Reihen Null bis N) mit einem externen Speichersubsystem gekoppelt, das die externe Speichersteuerung B 375b und den externen Speicher B 340b umfasst.
  • Die Prozessoren 450 einer Reihe sind als ein Cluster 400 organisiert, der einen Kontextspeicher 430 umfasst, der so konfiguriert ist, dass er Kontextinformationen (z. B. Paket-Header) hält, die von den Prozessoren 450 verarbeitet werden. 4 ist ein schematisches Blockdiagramm eines Cluster 400. Jeder Prozessor 450 des Cluster ist mit einem Anweisungsspeicher (TRAM) 420, der so konfiguriert ist, dass er Anweisungen für die Ausführung durch den Prozessor 450 speichert, einer Steuerregistereinheit 410, dem Kontextspeicher 430 und einer Speicherverwaltungseinheit (MMU; memory management unit) 460 gekoppelt. Die Steuerregistereinheit 410 umfasst verschiedene Mehrzweck- und Steuerregister, die jeweils für die Speicherung verwendet werden und dazu verwendet werden, die Operation der TMCs 450 zu steuern. Die MMU 460 ist unter anderem dazu konfiguriert, die Prozessoren 450 in die Lage zu versetzen, auf den externen Speicher 340 durch die externen Speichersteuerung 375 zugreifen zu können.
  • Der Kontextspeicher 430 ist ein RAM, das so konfiguriert ist, dass es temporäre (Kontext)-Daten, wie etwa Paket-Header, hält. Der lokale Speicher 434 ist ein internes RAM, das so konfiguriert ist, dass es verschiedene Daten hält, auf die zugriffen wird, die für die Prozessoren 450 in einem Cluster 400 zugänglich sind. Es sollte angemerkt werden, dass andere Formen von Speichern, wie etwa ein interner oder ein externer Spaltenspeicher (z. B. der Speicher 340), die für die Prozessoren 450 einer bestimmten Spalte zugänglich sind, mit der vorliegenden Erfindung verwendet werden können.
  • Die Prozessoren 450 jedes Cluster 400 führen Operationen bei den temporären Daten aus, die in den Kontextspeicher 430 von dem Eingabepufferspeicher 360 geladen worden sind, wohingegen die Prozessoren jeder Spalte parallel arbeiten, um im Wesentlichen die gleiche Operation bei den temporären Daten durchzuführen, aber mit einer verschobenen Phase. Temporäre Daten werden zwischen den Eingabe- und Ausgabepufferspeichern der Maschine 300 über einen Datenpfadkanal 440 weitergeleitet, der von einer Data-Mover-Schaltung 470 bereitgestellt wird, die mit dem Prozessor 450 gekoppelt ist. Die Kontextdaten, die durch den Cluster 400 fließen, werden in dem Kontextspeicher 430 zusammen mit anderen Daten und Zeigern gespeichert, die auf Daten und verschiedene Datenstrukturen (z. B. Tabellen) hinweisen, die zum Beispiel in dem externen Speicher 340 für die Verwendung durch den Prozessor 450 gespeichert sind.
  • Der Data Mover 470 umfasst eine Logik, die es ermöglicht, dass Daten von dem Kontextspeicher 430 zu dem Ausgabepufferspeicher 700 in Übereinstimmung mit der erfinderischen Technik transferiert werden können. Zu diesem Zweck umfasst der Data Mover 470 unter anderem eine Logik, die eine Befehlstabelle 500, einen Zustandsautomaten 474 und eine Schnittstellenlogik 472 implementiert. Die Schnittstellenlogik 472 umfasst eine Logik, die den Data Mover 470 mit dem Ausgabepufferspeicher 700 verbindet, und ermöglichest es zu veranschaulichenden Zwecken, dass eine 16-Byte-Dateneinheit und eine assoziierte 2-Byte-Bitmaske zwischen dem Data Mover 470 und dem Ausgabepufferspeicher 700 transferiert werden können. Der Zustandsautomat 474 enthält eine kombinatorische und sequentielle Logik, die so konfiguriert ist, dass sie einen herkömmlichen Zustandsautomaten implementiert, der unter anderem den Transfer von Daten von dem Kontextspeicher 430 zu dem Ausgabepufferspeicher 700 ermöglicht.
  • In dem veranschaulichten Ausführungsbeispiel werden die Daten, die von dem Kontextspeicher 430 zu dem Ausgabepufferspeicher 700 transferiert werden, durch Befehle modifiziert, die von den Prozessoren 450 erzeugt werden. Diese Befehle enthalten Operationen, wie zum Beispiel Dateneinfüge- und Datenlöschoperationen, die es ermöglichen, dass Daten jeweils in die übertragenen Daten eingefügt und aus diesen gelöscht werden können. Die Befehle, die von den Prozessoren 450 erzeugt werden, werden in einer Befehlstabelle 500 gehalten, die eine Datenstruktur ist, die zu illustrativen Zwecken als eine Tabelle konfiguriert ist, die einen oder mehrere Einträge enthält. Es sollte angemerkt werden, dass andere Typen von Datenstrukturen verwendet werden können, um die Befehlstabelle 500 zu implementieren, wie zum Beispiel eine Array, eine Verbundliste, eine Variable, ein Register oder eine Registerdatei. Jeder Eintrag hält einen Befehl, der mit einer Operation (z. B. einer Dateneinfügeoperation oder einer Datenlöschoperation) assoziiert ist, die bei den Daten durchgeführt wird, die von dem Kontextspeicher 430 zu dem Ausgabepufferspeicher 370 übertragen werden.
  • 5 ist ein schematisches Blockdiagramm eines Befehlstabelleneintrags 510, der auf vorteilhafte Weise mit der vorliegenden Erfindung verwendet werden kann. Der Eintrag 510 enthält ein Operationscode-Feld (OP_CODE-Feld) 520, ein Kontextspeicher-(Quell)-Adressenfeld (C_ADDR-Feld) 540, ein Längenfeld (LEN-Feld) 560 und ein externes Adressenfeld (X_ADDR-Feld) 580. Das OP_CODE-Feld 520 hält einen Wert, der mit der Operation (z. B. Daten einfügen, Daten löschen) assoziiert ist, die bei den Daten durchgeführt wird, die übertragen werden. Jede Operation ist außerdem mit einer Anfangsadresse, einer Länge und optional mit einer externen Adresse assoziiert. Das C_ADDR-Feld 540 hält eine Adresse, die die Anfangsadresse der Daten in einem Kon textspeicher repräsentiert, an der die Operation 520 durchgeführt wird. Das LEN-Feld 560 hält einen Wert, der zum Beispiel den Betrag an Daten-Bytes repräsentiert, auf den von dem Operationscode 520 eingewirkt wird. Das X_ADDR-Feld 580 hält eine Adresse, die mit externen Daten assoziiert ist, die zum Beispiel in die übertragenen Daten eingefügt werden.
  • Wie angemerkt ist, werden zwischen dem Data Mover 470 und dem Ausgabepufferspeicher 700 zu illustrativen Zwecken 16 Bytes an Daten pro Zeitpunkt übertragen. Die Daten werden von einer 2-Byte-Bitmaske begleitet, die mit den 16 Bytes an Daten assoziiert ist und die angibt, welche Bytes innerhalb der Daten "gültig" (freigegeben) und welche "nicht gültig" (nicht freigegeben) sind. Wie dies hier verwendet wird, ist ein Byte "gültig", wenn es einen gültigen Datenwert enthält, und ist "ungültig", wenn es keinen gültigen Datenwert enthält (d. h., einen Datenwert, der "nicht definiert" ist). Es sollte angemerkt werden, dass, obwohl in dem veranschaulichten Ausführungsbeispiel die Bitmaske gültige und ungültige Bytes in den Daten repräsentiert, auch Bitmasken, die z. B. gültige oder ungültige Bits oder Worte in den übertragenen Daten repräsentieren, den Vorteil aus der erfinderischen Technik nutzen können.
  • 6 ist ein schematisches Blockdiagramm einer Bitmaske 600, die auf vorteilhafte Weise mit der vorliegenden Erfindung verwendet werden kann. Zu veranschaulichenden Zwecken umfasst die Bitmaske 600 16 Ein-Bit-"Byte-Freigabe"-(BE; byte enable)-Felder 620a–p, wobei jedes Feld mit einem Byte in der Dateneinheit assoziiert ist und einen Wert enthält, der anzeigt, ob das assoziierte Datenbyte gültig oder ungültig ist. Zum Beispiel entspricht BE0 620a dem Byte in der Position Null (Byte 0) in der Dateneinheit und gibt an, ob das Byte 0 einen gültigen oder ungültigen Bytewert enthält. Zu veranschaulichenden Zwecken gibt das Konfigurieren des Feldes 620 derart, dass es eine Null enthält, an, dass das entsprechende Byte ungültig ist. In ähnlicher Weise gibt das Konfigurieren des Feldes 620 derart, dass es eine Eins enthält, an, dass das entsprechende Byte gültig ist.
  • Der Ausgabepufferspeicher 700 enthält eine Schnittstellenlogik 710, die so konfiguriert ist, dass sie Daten und Byte-Freigabe-Informationen erfasst, die von dem Data Mover 470 übertragen werden. 7 ist ein partielles schematisches Blockdiagramm der Schnittstellenlogik 710, die eine Datenlenklogik 720, ein Arbeitsregister 740 und eine Ausgabewarteschlange 780 umfasst. Die Datenlenklogik 720 enthält eine Logik, die so konfiguriert ist, dass sie gültige Datenbytes, die von dem Data Mover 470 erfasst worden sind, in das Arbeitsregister 740, welches zu veranschaulichenden Zwecken ein Schieberegister ist, "lenkt" (überträgt). Die Ausgabewarteschlange 780 ist zu veranschaulichenden Zwecken eine First-In-First-Out-(FIFO)-Warteschlange, die einen oder mehrere Einträge 782 umfasst, die jeweils gültige Daten halten, die von dem Arbeitsregister 740 übertragen worden sind. Daten und Byte-Freigabe-Informationen, die von der Schnittstellenlogik 472 des Data Mover erfasst worden sind, werden zu der Datenlenklogik 720 übertragen, die gültige Datenbytes, die in den Daten enthalten sind, in das Arbeitsregister lenkt, indem sie die gültigen Bytes in das Register 740 verschiebt. Die Datenlenklogik weist dann das Arbeitsregister an, die gültigen Daten zu einem Eintrag 782 an dem hinteren Ende der Ausgabe-FIFO-Warteschlange 780 zu transferieren.
  • Die vorliegende Erfindung betrifft eine effiziente Technik zur Modifizierung von Daten, die von einer Quelle (z. B. dem Kontextspeicher 430) zu einem Ziel (z. B. dem Ausgabepufferspeicher 700) eines Zwischenknotens, wie etwa einem Router 200, übertragen werden. Gemäß der Technik werden Befehle, die Operationen enthalten, die die Daten modifizieren, von zum Beispiel dem Prozessor 450 erzeugt und in eine Datenstruktur (z. B. eine Befehlstabelle 500) platziert. Die Operationen, die mit den Befehlen assoziiert sind, modifizieren die Daten je nach Anweisung durch die Befehle, wenn die Daten von der Quelle zu dem Ziel übertragen werden.
  • In dem veranschaulichten Ausführungsbeispiel modifiziert ein Prozessor 450 Daten (z. B. fügt er Daten in diese ein oder löscht Daten aus diesen), die von dem Kontextspeicher 430 zu dem Ausgabepufferspeicher 700 übertragen werden, indem er Anweisungen ausführt, um Befehle zu erzeugen, die die Modifikation spezifizieren, die durchgeführt wird. 8 veranschaulicht eine Reihe von beispielhaften Anweisungen 800, die verwendet werden können, um Daten in die transferierten Daten einzufügen oder Daten aus diesen zu löschen. Die Anweisung 810 ist eine Kontextspeicher-Dateneinfügeanweisung (xcmi), die bewirkt, dass "Einfügedaten" in die Daten eingefügt werden, die von dem Kontextspeicher 430 zu dem Ausgabepufferspeicher 700 übertragen werden. Die Anweisung 810 spezifiziert eine Operation (d. h., xcmi), die "Daten einfügen" angibt sowie verschiedene Argumente/Parameter, die einen Betrag an Daten, der eingefügt werden soll (z. B. 2 Bytes), einschließen, eine Kontextspeicheradresse, an der die Daten eingefügt werden sollen (d. h., 110), und eine Adresse der Einfügedaten (d. h., 500). Es sei angemerkt, dass die Adresse der Einfügedaten eine Adresse in zum Beispiel dem Kontextspeicher 430, dem lokalen Speicher 434 oder dem externen Speicher 340 sein kann. Die Anweisung 820 ist eine Kontextspeicherlöschanweisung (xcmd), die bewirkt, dass Daten aus den Daten gelöscht werden, die von dem Kontextspeicher 430 zu dem Ausgabepufferspeicher 700 übertragen werden. Die Anweisung 820 spezifiziert eine Operation (d. h., xcmd), die "Daten löschen", einen Betrag an Daten, der gelöscht werden soll (d. h., 2 Bytes), und eine Kontextspeicheradresse angibt, an der die Daten gelöscht werden (d. h., 118). Die Anweisung 830 ist eine Kontextspeichersendeanweisung (xmt), die bewirkt, dass Daten von dem Kontextspeicher 430 zu dem Ausgabepufferspeicher 700 übertragen werden. Die Anweisung 830 spezifiziert eine Operation (d. h., xmt), die Sendedaten, eine Anfangs-Kontextspeicheradresse (d. h., 100) und einen Betrag an Daten, der übertragen werden soll, in zum Beispiel Bytes (d. h., 64) angibt.
  • Die 9A9C sind Ablaufdiagramme, die eine Reihe von Schritten veranschaulichen, die verwendet werden können, um die Anweisungen 800 in Übereinstimmung mit der erfinderischen Technik zu verarbeiten. Unter Bezugnahme auch auf 8 ruft der Prozessor 450 beim Schritt 910 eine erste Anweisung 810 ab und stellt fest, ob die Anweisung eine Kontextspeichereinfügeanweisung ist (Schritt 920). Wenn nicht, dann geht die Sequenz weiter zum Schritt 930. Da die Anweisung, wie oben angemerkt worden ist, eine Kontextspeichereinfügeanweisung ist, geht die Sequenz zum Schritt 925 weiter, bei dem der Prozessor 450 einen Befehl zur Einfügung von Daten in das Paket erzeugt, wie dies von der Anweisung 810 spezifiziert ist, und den Befehl in einem Befehlstabelleneintrag 510 platziert. Insbesondere erzeugt der Prozessor 450 den Befehl, indem er Werte erzeugt, die den Operationscode, die Kontextspeicheradresse, die Länge und die Adresse der Einfügedaten repräsentiert, die in der Anweisung 810 spezifiziert sind. Der Prozessor 450 platziert diese Werte dann jeweils in den Feldern OP_CODE 520, C_ADDR 540, LEN 560 und X_ADDR 580 des Eintrags 510 in der Befehlstabelle 500.
  • Die Sequenz geht dann weiter zum Schritt 942, bei dem die nächste Anweisung abgerufen wird, bevor sie zum Schritt 920 zurückkehrt. Es sei angenommen, dass die Anweisung 820 die nächste Anweisung ist. Beim Schritt 920 wird eine Überprüfung durchgeführt, um festzustellen, ob die Anweisung 820 eine Kontextspeichereinfügeanweisung ist. Da die Anweisung 820 keine Kontextspeichereinfügeanweisung ist, geht die Sequenz weiter zum Schritt 920, bei dem eine Überprüfung durchgeführt wird, um festzustellen, ob die Anweisung 820 eine Kontextspeicherlöschanweisung ist.
  • Da die Anweisung 820, wie oben angemerkt worden ist, eine Kontextspeicherlöschanweisung ist, geht die Sequenz weiter zum Schritt 935, bei dem der Prozessor 450 einen Befehl zur Löschung von Daten aus dem Paket erzeugt, wie dies von der Anweisung 820 spezifiziert ist, und den Befehl in einem Befehlstabelleneintrag 510 platziert. Insbesondere erzeugt der Prozessor 450 den Befehl, indem er Werte erzeugt, die den Operationscode, die Kontextspeicheradresse und die Länge repräsentieren, die in der Anweisung 820 spezifiziert sind. Der Prozessor 450 platziert dann diese Werte jeweils in den Feldern OP_CODE 520, C_ADDR 540 und LEN 560 des Eintrags 510 in der Befehlstabelle 500.
  • Die Sequenz geht dann weiter zum Schritt 942, bei dem die nächste Anweisung abgerufen wird, bevor sie wieder zurück zum Schritt 920 geht. Es sei angenommen, dass die Anweisung 830 die nächste Anweisung ist. Beim Schritt 920 wird, wie oben angemerkt, eine Überprüfung durchgeführt, um festzustellen, ob die Anweisung 830 eine Kontextspeichereinfügeoperation ist. Da die Anweisung 830 keine Kontextspeichereinfügeoperation ist, geht die Sequenz weiter zum Schritt 930, bei dem die Anweisung 830 überprüft wird, um festzustellen, ob sie eine Kontextspeicherlöschanweisung ist. Da die Anweisung 830 keine Kontextspeicherlöschanweisung ist, geht die Sequenz weiter zum Schritt 940, bei dem eine Überprüfung durchgeführt wird, um festzustellen, ob die Anweisung 830 eine Kontextspeichersendeanweisung ist. Da die Anweisung 830, wie oben angemerkt, eine Kontextspeichersendeanweisung ist, geht die Sequenz weiter zum Schritt 945 (9B), bei dem der Prozessor den Data Mover 470 anweist, Daten aus dem Kontextspeicher 430 zu dem Ausgabepufferspeicher 700 zu transferieren. Insbesondere weist der Prozessor 450 den Data Mover 470 an, 64 Bytes an Daten aus dem Kontextspeicher 470 ausgehend von der Kontextspeicherstelle 100 zu dem Ausgabepufferspeicher 700 zu transferieren. Beim Schritt 947 erfasst der Data Mover 470 16 Bytes an Daten aus dem Kontextspeicher ausgehend von der Adresse 100.
  • Beim Schritt 950 durchsucht der Data Mover 470 die Befehlstabelle 500 nach einem Eintrag 510 in der Befehlstabelle, der mit dem Bereich von Adressen übereinstimmt, der mit den erfassten Daten assoziiert ist. Ein Eintrag 510 passt zu dem Bereich von Adressen, der mit den erfassten Daten assoziiert ist, wenn der Bereich von Adressen, der durch die Kombination aus den Inhalten des C_ADDR-Feldes 540 und des LEN-Feldes 560 spezifiziert ist, den Bereich von Adressen überlappt, der mit den erfassten Daten assoziiert ist. Zum Beispiel umfasst der Bereich von Adressen, der mit den erfassten Daten assoziiert ist, Kontextspeicheradressen in dem Bereich von 100 bis 115. Der Adressenbereich, der von der Anweisung 810 spezifiziert wird, überlappt diesen Bereich; deshalb ist der Eintrag 510, der mit der Anweisung 810 assoziiert ist, ein übereinstimmender Eintrag. Beim Schritt 955 nimmt der Data Mover 470 dann, wenn kein übereinstimmender Eintrag gefunden wird, an, dass die erfassten Daten nicht modifiziert sind, und die Sequenz geht weiter zum Schritt 960, bei dem eine Bitmaske für die erfassten Daten erzeugt wird, wie dies oben beschrieben worden ist, und die Bitmaske und die Daten werden zu dem Ausgabepufferspeicher transferiert. Wenn andererseits ein übereinstimmender Eintrag gefunden wird, geht die Sequenz zum Schritt 965. Es sei angenommen, dass ein übereinstimmender Eintrag 510, der mit der Anweisung 810 assoziiert ist, gefunden worden ist.
  • Beim Schritt 965 wird der Inhalt des OP_CODE-Feldes 520 des übereinstimmenden Eintrags untersucht, um festzustellen, ob er eine "Datenlösch"-Operation repräsentiert. Wenn dem so ist, dann geht die Sequenz weiter zum Schritt 970; anderenfalls geht die Sequenz weiter zum Schritt 975 (9C). Wie oben angegeben worden ist, gibt der Inhalt des OP_CODE-Feldes 520 in dem übereinstimmenden Eintrag 510 eine Dateneinfügeoperation an; deshalb geht die Sequenz weiter zum Schritt 975.
  • Beim Schritt 975 erzeugt der Data Mover 470 eine Bitmaske 600 für die "vorausgehenden Daten" in den erfassten Kontextspeicherdaten und überträgt die erfassten Daten und die Bitmaske 600 zu dem Ausgabepufferspeicher 700.
  • Wie sie hier verwendet werden, beziehen sich die vorausgehenden Daten auf die Daten in den erfassten Kontextspeicherdaten, die den Daten vorausgehen, die eingefügt werden. Wie zum Beispiel oben angemerkt worden ist, reichen die Adressen, die von den erfassten Kontextspeicherdaten repräsentiert werden, von 100 bis 115, und der C_ADDR-Wert des übereinstimmenden Eintrags ist 110. Deshalb umfassen die vorausgehenden Daten die gültigen Datenbytes, die aus den Kontextspeicheradressstellen 100 bis 109 erfasst wurden. Der Data Mover 470 erzeugt die Bitmaske für die vorausgehenden Daten, indem er die Bits in der Maske 600 markiert, die die Bytestellen 100 bis 109 repräsentieren (d. h., BE0 620a bis BE9 620j), um anzuzeigen, dass die Daten gültig sind, und indem er die restlichen Bits in der Maske 600 (d. h., BE10 620k bis BE15 620p) markiert, um anzuzeigen, dass die restlichen Daten ungültig sind (in Bezug darauf, dass es sich um vorausgehende Daten handelt). Der Data Mover 470 überträgt dann die erfassten Daten zusammen mit der Bitmaske 600 zu der Ausgabepufferspeicher-Logik 700, die die Daten und die Bitmaske so verarbeitet, wie dies oben beschrieben worden ist.
  • Beim Schritt 977 erfasst der Data Mover 470 "Einfügedaten", d. h., Daten, die in den Strom von Daten eingefügt werden, die von dem Kontextspeicher 430 zu dem Ausgabepufferspeicher 700 übertragen werden. Beim Schritt 980 erzeugt der Data Mover 470 eine Bitmaske 600 für die erfassten Einfügedaten und transferiert die erfassten Einfügedaten und die Bitmaske 600 zu dem Ausgabepufferspeicher 700. Insbesondere ruft der Data Mover 470 die Inhalte des LEN-Feldes 560 und des X_ADDR-Feldes 580 des übereinstimmenden Eintrags 510 ab. Der Data Mover erfasst dann zum Beispiel 16 Bytes oder die Anzahl an Bytes, die von dem Inhalt des LEN-Feldes 560 spezifiziert wird, je nachdem, welches weniger ist, der Einfügedaten ausgehend von der Adresse, die in dem X_ADDR-Feld 580 des übereinstimmenden Eintrags spezifiziert ist. Der Data Mover 470 erzeugt dann eine Bitmaske 600 für die erfassten Einfügedaten, wie dies oben beschrieben worden ist. Die Einfügedaten und die Bitmaske 600 werden dann zu dem Ausgabepufferspeicher 700 übertragen, bei dem sie weiter verarbeitet werden.
  • Zum Beispiel enthält das LEN-Feld 560 in dem übereinstimmenden Eintrag 510, der mit der Anweisung 810 assoziiert ist, einen Wert, der zwei Bytes an Einfügedaten angibt. Der Data Mover 470 ruft die beiden Bytes an Einfüge daten aus der Stelle ab, die von dem X_ADDR-Feld 580 spezifiziert ist (d. h., 500). Die Bitmaske 600 wird dann erzeugt, indem die Byte-Freigabe-Bits markiert werden, die zum Beispiel den Bytes 0 und 1 entsprechen (BE0 620a und BE1 620b), um anzuzeigen, dass sie gültig sind, und indem die restlichen Bits, d. h. BE2 620c bis BE15 620p, markiert werden, um anzuzeigen, dass sie ungültig sind. Die Einfügedaten werden dann in die Bytepositionen 0 und 1 einer 16-Byte-Dateneinheit platziert, die zusammen mit der erzeugten Bitmaske 600 zu dem Ausgabepufferspeicher 700 übertragen wird.
  • Beim Schritt 982 stellt der Data Mover 470 fest, ob alle Einfügedaten, die von dem LEN-Feld 560 des übereinstimmenden Eintrags spezifiziert sind, übertragen worden sind. Wenn nicht, dann geht die Sequenz weiter zum Schritt 984, bei dem die nächsten Einfügedaten erfasst werden. Die Schritte 980 bis 984 werden wiederholt, bis alle Einfügedaten, die durch die Kombination der Inhalte der Felder X_ADDR 580 und LEN 560 des übereinstimmenden Eintrags repräsentiert werden, zu dem Ausgabepufferspeicher 700 übertragen worden sind.
  • Die Sequenz geht dann weiter zum Schritt 985, bei dem der Data Mover 470 eine Bitmaske 600 erzeugt, die die nachlaufenden bzw. hinten anhängenden Daten repräsentiert, und zwar in einer Art und Weise, wie dies oben beschrieben ist, und die erfassten Kontextspeicherdaten und die erzeugte Bitmaske 600 zu dem Ausgabepufferspeicher 700 überträgt. So wie sie hier verwendet werden, sind die nachlaufenden bzw. hinten anhängenden Daten die gültigen Daten in den erfassten Kontextspeicherdaten, die nicht als die vorausgehenden Daten beim Schritt 975 übertragen worden sind. Zum Beispiel umfassen die vorausgehenden Daten, wie dies oben angemerkt worden ist, die Bytes 0 bis 9 in den erfassten Kontextspeicherdaten. Die restlichen gültigen Daten, d. h., die Bytes 10 bis 15 in den erfassten Kontextspeicherdaten, umfassen die hinten anhängenden Daten. Deshalb erzeugt der Data Mover 470 eine Bitmaske 600, um die hinten anhängenden Daten zu repräsentieren, indem er anzeigt, dass in der Bitmaske die Bytes 0 bis 9 ungültige Daten enthalten und die Bytes 10 bis 15 gültige Daten enthalten. Die erzeugte Bitmaske 600 und die erfassten Kontextspeicherdaten werden dann zu dem Ausgabepufferspeicher 700 übertragen.
  • Die Sequenz geht dann weiter zum Schritt 990 (9B), bei dem der Data Mover 470 feststellt, ob der Betrag an Daten, der von der Sendeanweisung 830 spezifiziert ist, übertragen worden ist. Wenn ja, dann geht die Sequenz weiter zum Schritt 994; anderenfalls geht die Sequenz zum Schritt 992 weiter, bei dem die nächsten Kontextspeicherdaten erfasst werden, bevor sie zum Schritt 950 zurückkehrt. Da die Sendeanweisung 830 64 Bytes spezifiziert und nur 18 Bytes übertragen worden sind (d. h., 10 Bytes an vorausgehenden Daten, 2 Bytes an Einfügedaten und 6 Bytes an hinten anhängenden Daten), erfasst der Data Mover 470 die nächsten 16 Bytes der Kontextspeicherdaten und geht zum Schritt 950 weiter.
  • Beim Schritt 950 durchsucht der Data Mover 470 die Befehlstabelle, wie dies oben beschrieben worden ist, und lokalisiert einen übereinstimmenden Eintrag 500 (Schritt 955), der Informationen enthält, die von der Anweisung 820 spezifiziert sind. Die Sequenz geht dann weiter zum Schritt 965, bei dem der Data Mover 470 das OP_CODE-Feld 520 des übereinstimmenden Eintrags prüft, um festzustellen, ob er eine Löschoperation spezifiziert. Wie oben angemerkt worden ist, enthält das OP_CODE-Feld 520 einen Wert, der eine Löschoperation anzeigt, so dass die Sequenz zum Schritt 970 weitergeht, bei dem der Data Mover 470 eine Bitmaske 600 in einer Art und Weise erzeugt, wie dies oben beschrieben ist, die die gelöschten Daten repräsentiert. Der Data Mover 470 überträgt dann die Bitmaske 600 und die erfassten Daten zu dem Ausgabepufferspeicher. Insbesondere untersucht der Data Mover 470 die Inhalte des C_ADDR-Feldes 540 und des LEN-Feldes 560 des übereinstimmenden Eintrags 500 und bestimmt die Bytes in den erfassten Kontextspeicherdaten, die gelöscht sind. Der Data Mover 470 erzeugt dann die Bitmaske 600, wie oben beschrieben, was das Markieren der Bits, die den gelöschten Bytes entsprechen, als ungültig einschließt.
  • Es sei zum Beispiel angenommen, dass die erfassten Kontextspeicherdaten mit den Kontextspeicher-Adressstellen 116 bis 131 assoziiert sind, und dass ein übereinstimmender Eintrag 510, der in der Befehlstabelle 500 gefunden wurde, Informationen enthält, die von der Anweisung 820 spezifiziert werden. Der Data Mover 470 erzeugt eine Bitmaske 600, bei der das Bit BE2 620c und das Bit BE3 620d markiert sind, um anzugeben, das die Daten, die von diesen Bits repräsentiert werden, ungültig sind. Der Data Mover 470 markiert die rest lichen Bits (d. h., BE0 620a, BE1 620b und BE4 620e bis BE15 620p), um anzugeben, dass die Daten, die von diesen Bits repräsentiert werden, gültig sind. Die erzeugte Bitmaske 600 und die erfassten Kontextspeicherdaten werden dann zu dem Ausgabepufferspeicher 700 transferiert, bei dem sie weiter verarbeitet werden.
  • Die Schritte 950 bis 992 werden wiederholt, bis alle Daten, die in der Kontextspeichersendeanweisung spezifiziert sind, übertragen worden sind. Die Sequenz geht dann weiter zum Schritt 994, bei dem die Einträge 510 in der Befehlstabelle gelöscht werden, und geht dann weiter zum Schritt 995, bei dem die Sequenz endet.
  • 10 ist ein Zustandsdiagramm 1000, das verwendet werden kann, um den Zustandsautomaten 474 so zu konfigurieren, dass der in Übereinstimung mit der erfinderischen Technik arbeitet. Der Zustandsautomat 474 beginnt in einem "Ruhe"-Zustand 1010. Der Prozessor 450 führt eine Kontextspeichersendeanweisung aus und weist den Data Mover 470 an, die Daten von dem Kontextspeicher zu dem Ausgabepufferspeicher zu übertragen, wie dies oben beschrieben worden ist. Der Zustandsautomat 474 geht von dem "Ruhe"-Zustand 1010 zu dem Zustand "Kontextdaten erfassen und Befehlstabelle durchsuchen" 1020 weiter. Beim Zustand 1020 weist der Zustandsautomat 474 den Data Mover 470 an, Kontextspeicherdaten (z. B. 16 Datenbytes) aus dem Kontextspeicher 430 zu erfassen. Der Zustandsautomat 474 durchsucht dann die Befehlstabelle 500 und stellt fest, ob die Adresse irgendeiner der erfassten Kontextspeicherdaten in den Bereich von Adressen fällt, der von der Kombination der Inhalte der Felder C_ADDR 540 und LEN 560 eines übereinstimmenden Eintrags 510 in der Befehlstabelle 500 repräsentiert wird. Falls nicht, dann geht der Zustandsautomat 474 weiter zu dem Zustand "Bitmaske erzeugen" 1030, bei dem er eine Bitmaske 600 für die erfassten Daten erzeugt, wie dies oben beschrieben worden ist. Der Zustandsautomat 474 überträgt dann die Daten und die erzeugte Bitmaske zu dem Ausgabepufferspeicher und kehrt zu dem "Kontextdaten erfassen und Befehlstabelle durchsuchen"-Zustand 1020 zurück.
  • Wenn die Adresse irgendeiner der erfassten Kontextspeicherdaten in den Bereich von Adressen fällt, der durch die Kombination der Inhalte der Fel der C_ADDR 540 und LEN 560 in dem übereinstimmenden Eintrag 510 repräsentiert wird, geht der Zustandsautomat 474 weiter zu dem Zustand "OP_CODE des übereinstimmenden Eintrags prüfen" 1040 weiter, bei dem der Data Mover 470 das OP_CODE-Feld 520 des übereinstimmenden Eintrags 510 prüft. Wenn das OP_CODE-Feld 520 einen Wert enthält, der eine "Daten-Iösch"-Operation angibt, dann geht der Zustandsautomat 474 weiter zu dem Zustand "Löschdaten-Bitmaske erzeugen" 1050, bei dem eine Bitmaske 600, die die gelöschten Daten repräsentiert, erzeugt wird, wie dies oben beschrieben ist. Die Daten und die erzeugte Bitmaske werden dann zu dem Ausgabepufferspeicher 700 übertragen, und der Zustandsautomat 474 kehrt zu dem Zustand "Kontextdaten erfassen und Befehlstabelle durchsuchen" 1020 zurück.
  • Wenn das OP_CODE-Feld 520 einen Wert enthält, der eine "Dateneinfüge"-Operation angibt, dann geht der Zustandsautomat 474 zu dem Zustand" Bitmaske für die vorausgehenden Daten erzeugen" 1060 weiter, bei dem die Bitmaske 600 für die vorausgehenden Daten erzeugt wird, wie dies oben beschrieben ist. Die Daten und die erzeugte Bitmaske werden dann zu dem Ausgabepufferspeicher 700 übertragen, und der Zustandsautomat 474 geht zu dem Zustand "Einfügedaten erfassen, Einfügedaten-Freigabe-Bitmaske erzeugen, und Daten und die Bitmaske zu dem Ausgabepufferspeicher übertragen" 1070 weiter, bei dem die Einfügedaten erfasst werden, die Einfügebitmasken 600 erzeugt werden und die erfassten Einfügedaten und die assoziierten Bitmasken 600 zu dem Ausgabepufferspeicher übertragen werden, wie dies oben beschrieben ist. Der Zustandsautomat 474 kehrt zu diesem Zustand 1070 zurück, bis alle Einfügedaten (die von dem Wert des LEN-Feldes 560 des übereinstimmenden Eintrags bestimmt sind) übertragen worden sind. Der Zustandsautomat 474 geht dann weiter zu dem Zustand "Bitmaske für die hinten anhängenden Daten erzeugen" 1080, bei dem die Bitmaske 600 für die "hinten anhängenden Daten" erzeugt wird, wie dies oben beschrieben worden ist. Die erzeugte Bitmaske 600 und die hinten anhängenden Daten werden dann zu dem Ausgabepufferspeicher 700 übertragen und der Zustandsautomat 474 kehrt zu dem "Kontextdaten erfassen und Befehlstabelle durchsuchen"-Zustand 1020 zurück. Nachdem alle Daten übertragen worden sind, die von der Sendeanweisung spezifiziert sind, kehrt der Zustandsautomat zu dem "Ruhe"-Zustand 1010 zurück.
  • Obwohl das oben beschriebene Ausführungsbeispiel der Erfindung die Erfindung so beschreibt, dass sie unter Verwendung verschiedener Hardware-Vorrichtung implementiert ist, ist dies nicht als eine Beschränkung der Erfindung gedacht. Vielmehr kann die Erfindung als Ganzes oder zum Teil in Software implementiert werden, die als ein computerlesbaren Medium, wie etwa ein Dynamic Random Access Memory (DRAM) oder eine Diskette, gespeichert ist, das von einem Computer ausführbare Anweisungen zur Ausführung in einem Prozessor enthält. Zum Beispiel kann die Befehlstabelle als eine Software-Datenstruktur, wie etwa eine Tabelle, eine Verbundliste, eine Array, eine Variable, ein Register oder eine Registerdatei, implementiert werden. Darüber hinaus kann das Platzieren von Befehlen in die Befehlstabelle sowie auch die Funktionen, die von dem Data Mover durchgeführt werden, der den Zustandsautomat enthält, als Software-Routinen oder -Funktionen implementiert werden.
  • Es sollte weiter angemerkt werden, dass, obwohl das oben beschriebene Ausführungsbeispiel der Erfindung die erfinderische Technik verwendet, um Daten zu modifizieren, die von einem Kontextspeicher zu einem Ausgabepufferspeicher transferiert werden, in anderen Ausführungsbeispielen der Erfindung die erfinderische Technik verwendet wird, um Daten umzuwandeln (zu modifizieren), die von einer Quelle zu einem Ziel übertragen werden. So wird in einem Ausführungsbeispiel der Erfindung die erfinderische Technik zum Beispiel dazu verwendet, Daten (z. B. Einfügedaten, Löschdaten) zu modifizieren, die von einer Quelle, wie etwa einem Knoten in einem Netzwerk, erfasst wurden, und zu einem Ziel, wie etwa eine Speichervorrichtung, die mit dem Netzwerk verbunden ist, transferiert werden. Darüber hinaus sollte es klar sein, dass die erfinderische Technik dazu verwendet werden kann, Daten, die von einer Quelle zu einem Ziel übertragen werden, auf andere Weise als durch das Einfügen oder das Löschen von Daten in die bzw. aus den Daten, die übertragen werden, umzuwandeln (zu modifizieren). Zum Beispiel kann die erfinderische Technik bei der Verschlüsselung von Daten, die von der Quelle zu dem Ziel übertragen werden, angewendet werden.
  • Die obige Beschreibung ist auf spezifische Ausführungsbeispiele der vorliegenden Erfindung gerichtet worden. Es wird offensichtlich sein, dass andere Variationen und Modifikationen bei den beschriebenen Ausführungsbei spielen unter Erreichung einiger oder aller ihrer Vorteile durchgeführt werden können.

Claims (21)

  1. Verfahren zur Modifizierung von Daten, die von einer Quelle (430) zu einem Ziel (700) übertragen werden, wobei das Verfahren die folgenden Schritte umfasst: (i) Lesen (910) einer oder mehrerer Anweisungen mittels eines Prozessors (450), wobei jede Anweisung eine Operation zur Modifizierung der Daten angibt; (ii) Erzeugen (925, 935) in Reaktion auf die eine oder mehreren Anweisungen eines oder mehrerer Befehle, wobei jeder Befehl mit einer Operation zur Modifizierung der Daten assoziiert ist; Platzieren (925, 935) der erzeugten Befehle in einer Datenstruktur (500); Initiieren (945) der Übertragung von Daten von der Quelle (430) zu dem Ziel (700); (iii) Durchführen (960, 970, 980, 985) mittels einer Vorrichtung (470), die unabhängig von dem Prozessor (450) arbeitet, der Operationen, die mit den Befehlen assoziiert sind, die in der Datenstruktur (500) enthalten sind, um die Daten so zu modifizieren, wie dies von den Befehlen angewiesen wird, während die Daten von der Quelle zu dem Ziel übertragen werden.
  2. Verfahren nach Anspruch 1, das des Weiteren den folgenden Schritt umfasst: Erfassen (947) der Daten von der Quelle (430).
  3. Verfahren nach Anspruch 2, das des Weiteren die folgenden Schritte umfasst: Erzeugen einer Bitmaske (600), die mit den erfassten Daten assoziiert ist; und Übertragen der Bitmaske (600) und der erfassten Daten zu dem Ziel (700).
  4. Verfahren nach Anspruch 2, wobei die Datenstruktur (500) einen oder mehrere Einträge (510) umfasst, wobei jeder Eintrag mit einem Befehl assoziiert ist und der Eintrag Informationen, die mit einem Bereich von Adressen (540) assoziiert sind, und einen Operationscode (520) enthält, die mit dem Befehl assoziiert sind.
  5. Verfahren nach Anspruch 4, das des Weiteren den folgenden Schritt umfasst: Durchsuchen (950) der Datenstruktur (500) nach einem Eintrag, der Informationen enthält, die mit einem Bereich von Adressen assoziiert sind, der mit einem Bereich von Adressen übereinstimmt, der mit den erfassten Daten assoziiert ist; wenn ein übereinstimmender Eintrag gefunden wird, Bestimmen (930), ob ein Operationscode (520), der in dem übereinstimmenden Eintrag enthalten ist, eine Datenlöschoperation angibt; und falls dem so ist, Erzeugen (970) einer Lösch-Bitmaske, die Daten repräsentiert, die in den erfassten Daten gelöscht sind, und Übertragen der Lösch-Bitmaske und der erfassten Daten zu dem Ziel.
  6. Verfahren nach Anspruch 4, das die folgenden Schritte umfasst: Durchsuchen (950) der Datenstruktur nach einem Eintrag, der Informationen enthält, die mit einem Bereich von Adressen assoziiert sind, der mit einem Bereich von Adressen übereinstimmt, der mit den erfassten Daten assoziiert ist; wenn ein übereinstimmender Eintrag gefunden wird, Bestimmen (920), ob ein Operationscode (520), der in einem übereinstimmenden Eintrag enthalten ist, einen Dateneinfügeoperation angibt; und falls dem so ist, a) Erzeugen (975) einer Führungs-Bitmaske, die vorausgehende Daten repräsentiert, die in den erfassten Daten enthalten sind, b) Übertragen (975) der Führungs-Bitmaske und der erfassten Daten zu dem Ziel, c) Erfassen von Einfügedaten (977), d) Erzeugen (980) einer Einfügedaten-Bitmaske, die die Einfügedaten repräsentiert, e) Übertragen (985) der Einfügedaten-Bitmaske und der Einfügedaten zu dem Ziel, f) Erzeugen (985) einer Nachlauf-Bitmaske, die hinten anhängende Daten repräsentiert, die in den erfassten Daten enthalten sind, und g) Übertragen (985) der Nachlauf-Bitmaske und der erfassten Daten zu dem Ziel.
  7. Verfahren nach Anspruch 4, wobei jeder Eintrag (510) eine Länge (560) und eine Quelladresse (540) enthält, die mit dem Befehl assoziiert sind.
  8. Verfahren nach Anspruch 7, das den folgenden Schritt umfasst: Durchsuchen der Datenstruktur (500) nach einem Eintrag, der Informationen enthält, die mit einem Bereich von Adressen, die durch die Kombination aus der Länge und der Quelladresse spezifiziert sind, die in dem Eintrag enthalten sind, assoziiert sind, der mit einem Bereich von Adressen übereinstimmt, der mit den erfassten Daten assoziiert ist.
  9. Verfahren nach Anspruch 1, wobei die Datenstruktur (500) eine Tabelle ist.
  10. Verfahren nach Anspruch 1, das den folgenden Schritt umfasst: Löschen (994) der Datenstruktur.
  11. Verfahren nach Anspruch 1, wobei die Quelle ein Kontextspeicher (430) ist.
  12. Verfahren nach Anspruch 1, wobei das Ziel ein Ausgabepufferspeicher (700) ist.
  13. System mit: einem Kontextspeicher (430), der so konfiguriert ist, dass er Daten hält; einer Datenstruktur (500), vorzugsweise einer Tabelle, die so konfiguriert ist, dass sie einen oder mehrere Befehle hält; einem Prozessor (450), der so konfiguriert ist, dass er eine oder mehrere Anweisungen liest, wobei jede Anweisung eine Operation zur Modifizierung der Daten angibt, und dass er in Reaktion auf diese eine oder mehreren Anweisungen einen oder mehrere Befehle zur Modifizierung der Daten erzeugt, wobei der Prozessor des Weiteren so konfiguriert ist, dass er die Befehle in die Datenstruktur platziert; einem Ausgabepufferspeicher (700); und einem Data Mover (470), der mit dem Kontextspeicher und dem Ausgabepufferspeicher gekoppelt ist und so konfiguriert ist, dass er die Daten aus dem Kontextspeicher erfasst, um die Daten so zu modifizieren, wie dies von den Befehlen angewiesen wird, die in der Datenstruktur enthalten sind, und dass er die modifizierten Daten zu dem Ausgabepuffer überträgt.
  14. System nach Anspruch 13, wobei die Datenstruktur (500) einen oder mehrere Einträge umfasst, wobei jeder Eintrag mit einem Befehl assoziiert ist und der Eintrag Informationen, die mit einem Bereich von Adressen assoziiert sind, und einen Operationscode (520) enthält, die mit dem Befehl assoziiert sind, und/oder wobei der Data Mover (470) so konfiguriert ist, dass er die Datenstruktur (500) nach einem Eintrag durchsucht, der Informationen enthält, die mit einem Bereich von Adressen assoziiert sind, der mit einem Bereich von Adressen übereinstimmt, der mit den erfassten Daten assoziiert ist, und dass er dann, wenn ein übereinstimmender Eintrag gefunden wird, bestimmt, ob der Operationscode (520), der in dem übereinstimmenden Eintrag enthalten ist, eine Datenlöschoperation angibt, und dass er, falls dem so ist, eine Lösch-Bitmaske erzeugt (970), die Daten repräsentiert, die in den erfassten Daten gelöscht sind, und/oder wobei der Data Mover (470) so konfiguriert ist, dass er die Datenstruktur nach einem Eintrag durchsucht, der Informationen enthält, die mit einem Bereich von Adressen assoziiert sind, der mit einem Bereich von Adressen übereinstimmt, der mit den erfassten Daten assoziiert ist, und dass er dann, wenn ein übereinstimmender Eintrag gefunden wird, bestimmt, ob der Operationscode (520), der in dem übereinstimmenden Eintrag enthalten ist, eine Dateneinfügeoperation angibt, und dass er, falls dem so ist, (i) eine Führungs-Bitmaske erzeugt (975), die vorausgehende Daten repräsentiert, die in den erfassten Daten enthalten sind, (ii) die Führungs-Bitmaske und die erfassten Daten zu dem Ziel (700) überträgt, (iii) Einfügedaten (977) erfasst, (iv) eine Einfügedaten-Bitmaske erzeugt (980), die die Einfügedaten repräsentiert, (v) die Einfügedaten-Bitmaske und die Einfügedaten zu dem Ziel überträgt, (vi) eine Nachlauf-Bitmaske erzeugt (985), die hinten anhängende Daten repräsentiert, die in den erfassten Daten enthalten sind, und (vii) die Nachlauf-Bitmaske und die erfassten Daten zu dem Ziel überträgt, wobei vorzugsweise jeder Eintrag in der Datenstruktur (500) eine Länge und eine Quelladresse enthält, die mit dem Befehl assoziiert sind, und wobei des Weiteren vorzugsweise der Data Mover (470) so konfiguriert ist, dass er die Datenstruktur (500) nach einem Eintrag durchsucht, der Informationen enthält, die mit einem Bereich von Adressen, die durch die Kombination aus der Länge und der Quelladresse spezifiziert sind, die in dem Eintrag enthalten sind, assoziiert sind, der mit einem Bereich von Adressen übereinstimmt, der mit den erfassten Daten assoziiert ist, wobei optional der Data Mover (470) so konfiguriert ist, dass er eine Bitmaske erzeugt, die mit den Daten assoziiert ist, und die Bitmaske zu dem Ausgabepufferspeicher überträgt, wobei der Ausgabepufferspeicher (700) vorzugsweise Folgendes umfasst: eine Datensteuerungslogik, die so konfiguriert ist, dass sie die Bitmaske verwendet, um gültige Daten zu identifizieren, die in den übertragenen Daten enthalten sind; ein Arbeitsregister, das mit der Datensteuerungslogik gekoppelt ist und so konfiguriert ist, dass es die gültigen Daten hält, die von der Datensteuerungslogik übertragen werden; und eine Ausgabewarteschlange, die mit dem Arbeitsregister gekoppelt ist und so konfiguriert ist, dass sie die gültigen Daten hält, die von dem Arbeitsregister übertragen werden.
  15. Vorrichtung zur Modifizierung von Daten, die von einer Quelle (430) zu einem Ziel (700) übertragen werden, wobei die Vorrichtung Folgendes umfasst: eine Einrichtung zum Lesen einer oder mehrerer Anweisungen, wobei jede Anweisung eine Operation zur Modifizierung der Daten angibt; eine Einrichtung zum Erzeugen in Reaktion auf eine oder mehrere Anweisungen eines oder mehrerer Befehle, wobei jeder Befehl mit einer Operation zur Modifizierung der Daten assoziiert ist; eine Einrichtung zum Platzieren der Befehle in die Datenstruktur (500); eine Einrichtung zum Initiieren der Übertragung von Daten von der Quelle zu dem Ziel; und eine Einrichtung zum Durchführen, unabhängig von der Einrichtung zum Erzeugen, der Operationen, die mit den Befehlen assoziiert sind, die in der Datenstruktur (500) enthalten sind, um die Daten so zu modifizieren, wie dies von den Befehlen angewiesen wird, während die Daten von der Quelle (430) zu dem Ziel (700) übertragen werden.
  16. Vorrichtung nach Anspruch 15, die Folgendes umfasst: eine Einrichtung zum Erfassen der Daten von der Quelle (430).
  17. Vorrichtung nach Anspruch 16, die Folgendes umfasst: eine Einrichtung zum Erzeugen einer Bitmaske (600), die mit den erfassten Daten assoziiert ist; und eine Einrichtung zum Übertragen der Bitmaske und der erfassten Daten zu dem Ziel.
  18. Vorrichtung nach Anspruch 16, wobei die Datenstruktur (500) einen oder mehrere Einträge umfasst, wobei jeder Eintrag mit einem Befehl assoziiert ist und der Eintrag Informationen, die mit einem Bereich von Adressen assoziiert sind, und einen Operationscode (520) enthält, die mit dem Befehl assoziiert sind.
  19. Vorrichtung nach Anspruch 18, die Folgendes umfasst: eine Einrichtung zum Durchsuchen der Datenstruktur (500) nach einem Eintrag, der Informationen enthält, die mit einem Bereich von Adressen assoziiert sind, der mit einem Bereich von Adressen übereinstimmt, der mit den erfassten Daten assoziiert ist; eine Einrichtung zum Bestimmen, ob der Operationscode (520), der in dem übereinstimmenden Eintrag enthalten ist, eine Datenlöschoperation angibt; und eine Einrichtung zum Erzeugen einer Lösch-Bitmaske, die Daten repräsentiert, die in den erfassten Daten gelöscht sind, und zum Übertragen der Lösch-Bitmaske und der erfassten Daten zu dem Ziel, wenn der Operationscode (520) in dem übereinstimmenden Eintrag eine Datenlöschoperation angibt.
  20. Vorrichtung nach Anspruch 18, die Folgendes umfasst: eine Einrichtung zum Durchsuchen der Datenstruktur nach einem Eintrag, der Informationen enthält, die mit einem Bereich von Adressen assoziiert sind, der mit einem Bereich von Adressen übereinstimmt, der mit den erfassten Daten assoziiert ist; eine Einrichtung zum Bestimmen, ob der Operationscode (520), der in einem übereinstimmenden Eintrag enthalten ist, eine Dateneinfügeoperation angibt; und eine Einrichtung zum (i) Erzeugen einer Führungs-Bitmaske, die vorausgehende Daten repräsentiert, die in den erfassten Daten enthalten sind, (ii) Übertragen der Führungs-Bitmaske und der erfassten Daten zu dem Ziel, (iii) Erfassen der Einfügedaten, (iv) Erzeugen einer Einfügedaten-Bitmaske, die die Einfügedaten repräsentiert, (v) Übertragen der Einfügedaten-Bitmaske und der Einfügedaten zu dem Ziel, (vi) Erzeugen einer Nachlauf-Bitmaske, die hinten anhängende Daten repräsentiert, die in den erfassten Daten enthalten sind, und (vii) Übertragen der Nachlauf-Bitmaske und der erfassten Daten zu dem Ziel, wenn der Operationscode (520) eine Dateneinfügeoperation angibt.
  21. Computerprogramm, Computerprogrammerzeugnis oder computerlesbares Medium, das ein Computerprogramm einschließt, wobei das Computerprogramm von einem Computer ausführbare Anweisungen zur Durchführung der Schritte (i) und (ii) gemäß einem der Ansprüche 1 bis 12, wenn das Computerprogramm auf einem Prozessor abläuft, und zum Durchführen des Schrittes (iii) gemäß einem der Ansprüche 1 bis 12 umfasst, wenn es auf einer separaten Vorrichtung abläuft.
DE602004009574T 2003-06-25 2004-06-23 System und verfahren zum modifizieren von daten, die von einer quelle zu einem bestimmungsort übermittelt werden Expired - Lifetime DE602004009574T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/603,872 US7937495B2 (en) 2003-06-25 2003-06-25 System and method for modifying data transferred from a source to a destination
US603872 2003-06-25
PCT/US2004/020166 WO2005002178A1 (en) 2003-06-25 2004-06-23 System and method for modifying data transferred from a source to a destination

Publications (2)

Publication Number Publication Date
DE602004009574D1 DE602004009574D1 (de) 2007-11-29
DE602004009574T2 true DE602004009574T2 (de) 2008-07-31

Family

ID=33552181

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004009574T Expired - Lifetime DE602004009574T2 (de) 2003-06-25 2004-06-23 System und verfahren zum modifizieren von daten, die von einer quelle zu einem bestimmungsort übermittelt werden

Country Status (6)

Country Link
US (1) US7937495B2 (de)
EP (1) EP1636969B1 (de)
CN (1) CN1781293B (de)
AT (1) ATE376319T1 (de)
DE (1) DE602004009574T2 (de)
WO (1) WO2005002178A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9002497B2 (en) * 2003-07-03 2015-04-07 Kla-Tencor Technologies Corp. Methods and systems for inspection of wafers and reticles using designer intent data
US7447203B2 (en) 2003-07-29 2008-11-04 At&T Intellectual Property I, L.P. Broadband access for virtual private networks
EP1684164A1 (de) * 2005-01-13 2006-07-26 Thomson Licensing Datenübertragungssystem
US8453147B2 (en) * 2006-06-05 2013-05-28 Cisco Technology, Inc. Techniques for reducing thread overhead for systems with multiple multi-threaded processors
US8041929B2 (en) 2006-06-16 2011-10-18 Cisco Technology, Inc. Techniques for hardware-assisted multi-threaded processing
US8010966B2 (en) * 2006-09-27 2011-08-30 Cisco Technology, Inc. Multi-threaded processing using path locks
US7399036B2 (en) 2006-12-01 2008-07-15 Sabic Innovative Plastics Ip B.V. Molded plastic universal seat
CN102595388B (zh) * 2008-04-30 2015-09-30 华为技术有限公司 处理用户设备上下文的方法和装置
US8751795B2 (en) * 2010-09-14 2014-06-10 Mo-Dv, Inc. Secure transfer and tracking of data using removable non-volatile memory devices
EP2541851A1 (de) * 2011-06-30 2013-01-02 Astrium Limited Vorrichtung und Verfahren zur Verwendung in einem Netzwerk auf SpaceWire-Basis
US9355279B1 (en) 2013-03-29 2016-05-31 Secturion Systems, Inc. Multi-tenancy architecture
US9374344B1 (en) 2013-03-29 2016-06-21 Secturion Systems, Inc. Secure end-to-end communication system
US9317718B1 (en) * 2013-03-29 2016-04-19 Secturion Systems, Inc. Security device with programmable systolic-matrix cryptographic module and programmable input/output interface
US9524399B1 (en) 2013-04-01 2016-12-20 Secturion Systems, Inc. Multi-level independent security architecture
US11283774B2 (en) 2015-09-17 2022-03-22 Secturion Systems, Inc. Cloud storage using encryption gateway with certificate authority identification
US10708236B2 (en) 2015-10-26 2020-07-07 Secturion Systems, Inc. Multi-independent level secure (MILS) storage encryption
US11940939B2 (en) 2022-03-07 2024-03-26 Qualcomm Incorporated Encoding byte information on a data bus with separate code

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5212569A (en) * 1989-06-29 1993-05-18 Fuji Photo Film Co., Ltd. Light beam scanning apparatus capable of changing the scanning density
US5930359A (en) * 1996-09-23 1999-07-27 Motorola, Inc. Cascadable content addressable memory and system
US6122275A (en) * 1996-09-26 2000-09-19 Lucent Technologies Inc. Real-time processing for virtual circuits in packet switching
US6032190A (en) * 1997-10-03 2000-02-29 Ascend Communications, Inc. System and method for processing data packets
US6275508B1 (en) * 1998-04-21 2001-08-14 Nexabit Networks, Llc Method of and system for processing datagram headers for high speed computer network interfaces at low clock speeds, utilizing scalable algorithms for performing such network header adaptation (SAPNA)
US7100020B1 (en) * 1998-05-08 2006-08-29 Freescale Semiconductor, Inc. Digital communications processor
US6438678B1 (en) * 1998-06-15 2002-08-20 Cisco Technology, Inc. Apparatus and method for operating on data in a data communications system
US6728249B2 (en) * 1998-06-27 2004-04-27 Intel Corporation System and method for performing cut-through forwarding in an ATM network supporting LAN emulation
US6195739B1 (en) * 1998-06-29 2001-02-27 Cisco Technology, Inc. Method and apparatus for passing data among processor complex stages of a pipelined processing engine
US6539026B1 (en) * 1999-03-15 2003-03-25 Cisco Technology, Inc. Apparatus and method for delay management in a data communications network
US6490280B1 (en) * 1999-03-31 2002-12-03 Advanced Micro Devices, Inc. Frame assembly in dequeuing block
JP3543952B2 (ja) * 2000-07-21 2004-07-21 日本電気株式会社 Mplsパケット転送方法およびパケット交換機
US7031325B1 (en) * 2001-04-04 2006-04-18 Advanced Micro Devices, Inc. Method and apparatus for enabling a network device to operate in accordance with multiple protocols
US6944168B2 (en) * 2001-05-04 2005-09-13 Slt Logic Llc System and method for providing transformation of multi-protocol packets in a data stream
US7333502B2 (en) * 2002-02-04 2008-02-19 Intel Corporation Services processor having a queue operations unit and an output scheduler
US20050232303A1 (en) * 2002-04-26 2005-10-20 Koen Deforche Efficient packet processing pipeline device and method

Also Published As

Publication number Publication date
CN1781293B (zh) 2012-02-29
ATE376319T1 (de) 2007-11-15
WO2005002178A1 (en) 2005-01-06
US7937495B2 (en) 2011-05-03
EP1636969A1 (de) 2006-03-22
CN1781293A (zh) 2006-05-31
DE602004009574D1 (de) 2007-11-29
EP1636969B1 (de) 2007-10-17
US20050010690A1 (en) 2005-01-13

Similar Documents

Publication Publication Date Title
DE602004009574T2 (de) System und verfahren zum modifizieren von daten, die von einer quelle zu einem bestimmungsort übermittelt werden
DE60221030T2 (de) Verfahren, einrichtung und rechnerprogramm für die entkapselung und verkapselung von paketen mit mehreren kopffeldern
DE69130881T2 (de) Massiv paralleler Rechner mit auf Schlangen basiertem Nachrichtenablieferungssystem
DE69425757T2 (de) Sucheinrichtung für paketnetzwerk
DE102013209118B4 (de) Beibehaltung und Änderung von Netzwerküberlastungsbenachrichtigungen während der Übertragung von Netzwerkdaten zwischen einem physischen Netzwerk und einem virtuellen Netzwerk
DE60313371T2 (de) Verwendung von baumartigen "Bitmap" Datenstrukturen
DE60026676T2 (de) Paketklassifizierungsautomat
DE69737361T2 (de) Schnelle vermittlungsvorrichtung
DE69328841T2 (de) Mehrfachprozessorrechnersystem
DE69810511T2 (de) Mehrfachprotokoll paketübersetzer
DE69328666T2 (de) Verfahren und Gerät um eine Anzahl Rechner als einen einzigen Host auf dem Netz erscheinen zu lassen
DE112015004008B4 (de) Selektives abtasten von netzwerkpaketverkehr unter verwendung von virtuelle-maschinen-werkzeugplattformen auf cloud-basis
DE60021846T2 (de) Leitweglenkungsanordnung
DE60222622T2 (de) Verfahren und Vorrichtung zur Paketkopfteilverarbeitung
DE69123149T2 (de) Nachrichtweglenking-Apparat
DE68925557T2 (de) Verfahren zum Zugriff von Daten in einer Tabelle und seine Anwendung zum Lenken von Daten zwischen entfernten Stationen
DE60033529T2 (de) Netzprozessor, speicherorganisation und verfahren
DE69935608T2 (de) Verfahren und system zur multiprotokoll-konversionshilfe für einen netzbeschleuniger
DE112011103561T5 (de) Netzwerkprozessor und Verfahren zum Beschleunigen der Datenpaket-Syntaxanalyse
DE68923951T2 (de) Hochgeschwindigkeits-Kombinierschalter mit Einzelfifo.
DE69330675T2 (de) Verbesserte Paketstruktur für Netzschicht
DE602004011638T2 (de) Verringern von Pufferanforderungen in einem Nachrichtenübermittlungssystem
DE69937185T2 (de) Verfahren und vorrichtung zum paketbeförderungsnachschlagen mit einer reduzierten anzahl von speicherzugriffen
DE10028563B4 (de) Kommunikationssteuerungseinheit
DE60015186T2 (de) Verfahren und system für rahmen- und protokollklassifikation

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