DE60030767T2 - Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor - Google Patents

Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor Download PDF

Info

Publication number
DE60030767T2
DE60030767T2 DE60030767T DE60030767T DE60030767T2 DE 60030767 T2 DE60030767 T2 DE 60030767T2 DE 60030767 T DE60030767 T DE 60030767T DE 60030767 T DE60030767 T DE 60030767T DE 60030767 T2 DE60030767 T2 DE 60030767T2
Authority
DE
Germany
Prior art keywords
processing
thread
program
threads
register
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
DE60030767T
Other languages
English (en)
Other versions
DE60030767D1 (de
Inventor
Gilbert Framingham WOLRICH
Donald Shrewsbury HOOPER
Debra Sudbury BERNSTEIN
J. Matthew Worcester ADILETTA
William Southboro WHEELER
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE60030767D1 publication Critical patent/DE60030767D1/de
Application granted granted Critical
Publication of DE60030767T2 publication Critical patent/DE60030767T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft die Netzwerkpaketverarbeitung.
  • Parallelverarbeitung ist eine effiziente Form der Infarmationsverarbeitung von parallelen Events in einem Rechenprozess. Parallelverarbeitung verlangt die parallele Ausführung vieler Programme in einem Computer im Gegensatz zur sequentiellen Verarbeitung. Im Zusammenhang mit einem Parallelprozessor beinhaltet Parallelismus die Verrichtung von mehr als einer Sache gleichzeitig. Im Gegensatz zu einem seriellen Paradigma, bei dem alle Tasks nacheinander an einer einzelnen Station ausgeführt werden, oder einer Pipeline-strukturierten Maschine, in der Tasks in Spezialstationen ausgeführt werden, sind bei Parallelverarbeitung mehrere Stationen vorhanden, die jeweils alle Tasks ausführen können. Das heißt, im Allgemeinen arbeiten alle oder mehrere der Stationen gleichzeitig und unabhängig an denselben oder gemeinsamen Elementen eines Problems. Bestimmte Probleme sind für eine Lösung durch Anwenden von Parallelverarbeitung geeignet.
  • Douglas C. Schmidt und Tatsuya Suda: „The Performance of Alternative Threading Architectures for Parallel Communication Subsystems",
    URL:http://www.us.wustl.edu/schmidt/PDF/JPDC-96.pdf,
    offenbart von einer Netzwerkschnittstelle empfangene Netzwerkpakete. Eine Netzwerkschnittstelle oder ein Paketfilter führt Demultiplexieroperationen aus, um den Thread für die Assoziation mit jeder Meldung zu ermitteln. Meldungsparallelismus assoziiert einen separaten Thread mit jeder eingehenden Meldung.
  • ZUSAMMENFASSUNG
  • Die Erfindung ist in ihren verschiedenen Aspekten in den Hauptansprüchen unten definiert, auf die nunmehr Bezug genommen werden sollte. Vorteilhafte Merkmale sind in den Nebenansprüchen dargelegt.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm eines Kommunikationssystems, das mit einem Hardware-gestützten Multithread-Prozessor arbeitet.
  • 2 ist ein ausführliches Blockdiagramm des Hardware-gestützten Multithread-Prozessors von 1.
  • 3 ist ein Blockdiagramm einer Mikromaschinen-Funktionseinheit, die in dem Hardware-gestützten Multithread-Prozessor der 1 und 2 eingesetzt wird.
  • 4 ist ein Blockdiagramm einer in dem Hardwaregestützten Multithread-Prozessor verwendeten Speichersteuerung für eine Breitbandoperation.
  • 5 ist ein Blockdiagramm einer in dem Hardwaregestützten Multithread-Prozessor verwendeten Speichersteuerung für latenzbegrenzte Operationen.
  • 6 ist ein Blockdiagramm einer Kommunikationsbusschnittstelle im Prozessor von 1, das die bei der Programmthread-Signalgabe verwendete Software darstellt.
  • 7A7B sind bildliche Darstellungen und ein Fließschema, das für das Verständnis der Programmthread-Signalisierung mit einem COR-(Clear-On-Read)-Register nützlich ist.
  • 8 ist ein Fließschema eines Inter-Thread-Signalisierungsprogramms.
  • 9 ist ein Fließschema eines Programmthread-Statusberichtsverfahrens.
  • BESCHREIBUNG
  • Architektur:
  • Gemäß 1 beinhaltet ein Kommunikationssystem 10 einen parallelen, Hardware-gestützten Multithread-Prozessor 12. Der Hardware-gestützte Multithread-Prozessor 12 ist mit einem Bus wie z.B. einem PCI-(Peripheral Component Interconnect)-Bus 14, einem Speichersystem 16 und einem zweiten Bus 18 gekoppelt. Das System 10 ist besonders für Tasks nützlich, die in parallele Subtasks oder Funktionen gegliedert werden können. Der Hardware-gestützte Multithread-Prozessor 12 ist besonders für Tasks nützlich, die bandbreiten- anstatt latenzorientiert sind. Der Hardware-gestützte Multithread-Prozessor 12 hat mehrere Mikromaschinen 22 jeweils mit mehreren Hardware-gesteuerten Programmthreads, die gleichzeitig aktiv sein und unabhängig an einer Task arbeiten können.
  • Der Hardware-gestützte Multithread-Prozessor 12 beinhaltet auch eine Zentralsteuerung 20, die beim Laden von Microcode-Control für andere Ressourcen des Hardwaregestützten Multithread-Prozessors 12 assistieren, und führt andere allgemeine Computerfunktionen wie Handhabung von Protokollen, Ausnahmen, zusätzliche Unterstützung für Paketverarbeitung aus, wo die Mikromaschinen die Pakete für eine weiterführende Verarbeitung wie z.B. unter Grenzbedingungen weiterleiten. In einer Ausgestaltung ist der Prozessor 20 eine auf Strong Arm® (Arm ist ein Warenzeichen von ARM Limited, Großbritannien) basierende Architektur. Der Universalmikroprozessor 20 hat ein Betriebssystem. Durch das Betriebssystem kann der Prozessor 20 Funktionen abrufen, um an Mikromaschinen 22a22f zu arbeiten. Der Prozessor 20 kann jedes unterstützte Betriebssystem verwenden, vorzugsweise ein Echtzeit-Betriebssystem. Für den als Strong Arm Architektur implementierten Kernprozessor können Betriebssysteme wie z.B. Microsoft NT Real-Time, VXWorks und μCUS verwendet werden, ein Freeware-Betriebssystem, das über das Internet erhältlich ist.
  • Der Hardware-gestützte Multithread-Prozessor 12 beinhaltet auch mehrere Mikromaschinen 22a22f. Die Mikromaschinen 22a22f führen jeweils mehrere Programmzähler in Hardware und Zustände in Verbindung mit den Programmzählern. Es kann effektiv eine entsprechende Mehrzahl von Programmthread-Sätzen gleichzeitig auf jeder der Mikromaschinen 22a22f aktiv sein, während zu jedem Zeitpunkt immer nur eine tatsächlich arbeitet.
  • In einer Ausgestaltung gibt es sechs Mikromaschinen 22a22f, jeweils mit Kapazitäten zum Verarbeiten von vier Hardware-Programmthreads. Die sechs Mikromaschinen 22a22f arbeiten mit Gemeinschaftsressourcen einschließlich dem Speichersystem 16 und den Busschnittstellen 24 und 28. Das Speichersystem 16 beinhaltet eine SDRAM-(Synchronous Dynamic Random Access Memory)-Steuerung 26a und eine SRAM-(Static Random Access Memory)-Steuerung 26b. Der SDRAM-Speicher 16a und die SDRAM-Steuerung 26a werden gewöhnlich zum Verarbeiten großer Datenvolumen verwendet, z.B. zum Verarbeiten von Netzwerknutzlasten von Netzwerkpaketen. Die SRAM-Steuerung 26b und der SRAM-Speicher 16b werden in einer Vernetzungsimplementation für latenzarme Schnellzugriff-Tasks eingesetzt, z.B. Zugreifen auf Lookup-Tabellen, Speicher für den Kernprozessor 20 usw.
  • Hardware-Kontextumlagerung ermöglicht es, dass andere Kontexte mit eindeutigen Programmzählern in derselben Mikromaschine laufen. Hardware-Kontextumlagerung synchronisiert auch den Vollzug von Tasks. So könnten z.B. zwei Programmthreads dieselbe Gemeinschaftsressource, z.B. SRAM, anfordern. Jede dieser separaten Funktionseinheiten, z.B. die FBUS-Schnittstelle 28, die SRAM-Steuerung 26a und die SDRAM-Steuerung 26b, melden, wenn sie eine angeforderte Task von einem der Mikromaschinen-Programmthread-Kontexten erledigt haben, einen Flag zum Signalisieren des Vollzugs einer Operation zurück. Wenn der Flag von der Mikromaschine empfangen wird, dann kann die Mikromaschine ermitteln, welcher Programmthread einzuschalten ist.
  • Als Netzwerkprozessor, z.B. ein Router, ist der Hardware-gestützte Multithread-Prozessor 12 mit Netzwerkgeräten wie z.B. einem Media-Access-Controller-Gerät verbunden, z.B. einem 10/100BaseT Octal MAC 13a oder einem Gigabit Ethernet-Gerät 13b. Im Allgemeinen kann der Hardware-gestützte Multithread-Prozessor 12 als Netzwerkprozessor mit jedem Kommunikationsgeräte- oder Schnittstellentyp verbunden werden, der/die große Datenmengen empfängt/sendet. Der Netzwerkprozessor kann als Router 10 in einer Vernetzungsanwendung dienen und Netzwerkpakete auf parallele Weise zwischen Geräten 13a, 13b leiten. Mit dem Hardware-gestützten Multithread-Prozessor 12 kann jedes Netzwerkpaket unabhängig verarbeitet werden.
  • Der Prozessor 12 beinhaltet eine Busschnittstelle 28, die den Prozessor mit dem zweiten Bus 18 verbindet. Die Busschnittstelle 28 koppelt in einer Ausgestaltung den Prozessor 12 mit dem so genannten FBUS 18 (FIFO-Bus). Die FBUS-Schnittstelle 28 ist verantwortlich für das Steuern und Verbinden des Prozessors 12 mit dem FBUS 18. Der FBUS 18 ist ein 64 Bit breiter FIFO-Bus, der als Schnittstelle zu MAC-(Media Access Controller)-Geräten verwendet wird. Der Prozessor 12 beinhaltet eine zweite Schnittstelle, z.B. eine PCI-Busschnittstelle 24, die andere auf dem PCI 14 Bus befindliche Systemkomponenten mit dem Prozessor 12 koppelt.
  • Die Funktionseinheiten sind mit einem oder mehreren internen Bussen gekoppelt. Die internen Busse sind duale 32-Bit-Busse (d.h. ein Bus zum Lesen und einer zum Schreiben). Der Hardware-gestützte Multithread-Prozessor 12 ist auch so aufgebaut, dass die Summe der Bandbreiten der internen Busse im Prozessor 12 die Bandbreite von mit dem Prozessor 12 gekoppelten externen Bussen übersteigt. Der Prozessor 12 beinhaltet einen internen Kernprozessorbus 32, z.B. einen ASB-Bus (Advanced System Bus), der den Prozessorkern 20 mit den Speichersteuerungen 26a, 26b und einem nachfolgend beschriebenen ASB-Umsetzer 30 koppelt. Der ASB-Bus ist eine Teilmenge des so genannten AMBA-Busses, der mit dem Strong Arm Prozessorkern verwendet wird. Der Prozessor 12 beinhaltet auch einen Privatbus 34, der die Mikromaschineneinheiten mit der SRAM-Steuerung 26b, dem ASB-Umsetzer 30 und der FBUS-Schnittstelle 28 koppelt. Ein Speicherbus 38 koppelt die Speichersteuerung 26a, 26b mit den Busschnittstellen 24 und 28 und dem Speichersystem 16 einschließlich dem für Boot-Operationen usw. verwendeten Flashrom 16c.
  • Gemäß 2 beinhaltet jede der Mikromaschinen 22a22f einen Zuteiler, der Flags untersucht, um die verfügbaren Programmthreads zu ermitteln, an denen zu arbeiten ist. Jeder Programmthread von jeder der Mikromaschinen 22a22f kann auf die SDRAM-Steuerung 26a, die SDRAM-Steuerung 26b und die FBUS-Schnittstelle 28 zugreifen. Die SDRAM-Steuerung 26a und die SDRAM-Steuerung 26b beinhalten jeweils mehrere Warteschlangen zum Speichern ausstehender Speicherreferenzanforderungen. Die Warteschlangen halten entweder die Speicherreferenzen in Ordnung oder ordnen Speicherreferenzen so an, dass Speicherbandbreite optimiert wird.
  • Wenn das Speichersubsystem 16 mit von Natur aus unabhängigen Speicheranforderungen geflutet wird, dann kann der Prozessor 12 Speicherreferenzsortierung ausführen. Speicherreferenzsortierung reduziert Totzeiten oder Blasen, die bei Zugriffen auf SRAM auftreten. Speicherreferenzsortierung ermöglicht es dem Prozessor 12, Referenzen auf Speicher so zu organisieren, dass auf lange Folgen von Lesevorgängen lange Ketten von Schreibvorgängen folgen können.
  • Referenzsortierung hilft dabei, parallele Hardware-Kontext-Programmthreads zu führen. Referenzsortierung erlaubt das Verbergen von Vorladungen (Precharges) von einer DRAM-Bank zur anderen. Wenn das Speichersystem 16b zu einer ungeraden Bank und einer geraden Bank organisiert wird, während der Prozessor an der ungeraden Bank arbeitet, dann kann die Speichersteuerung 26b mit dem Vorladen der geraden Bank starten. Vorladen ist dann möglich, wenn Speicherreferenzen zwischen ungeraden und geraden Banken abwechseln. Durch Ordnen von Speicherreferenzen so, dass Zugriffe auf entgegengesetzte Bänke abgewechselt werden, verbessert der Prozessor 12 die SDRAM-Bandbreite. Zusätzlich können andere Optimierungen zur Anwendung kommen, wie zum Beispiel: Zusammenführungsoptimierungen, bei denen zusammenführbare Operationen vor dem Speicherzugriff zusammengeführt werden; Open-Page-Optimierungen, bei denen durch Untersuchen von Adressen eine geöffnete Speicherseite nicht neu geöffnet wird; Verkettung, die eine Spezialhandhabung zusammenhängender Speicherreferenzen und Auffrischungsmechanismen zulassen.
  • Die FBUS-Schnittstelle 28 unterstützt Sende- und Empfangsflags für jeden Port, den ein MAC-Gerät unterstützt, zusammen mit einem Interrupt-Flag, der anzeigt, wenn ein Service gerechtfertigt ist. Die FBUS-Schnittstelle 28 beinhaltet auch eine Steuerung 28a, die eine Kopfverarbeitung von eingehenden Paketen vom FBUS 18 ausführt. Die Steuerung 28a extrahiert die Paketköpfe und führt ein mikroprogrammierbares Ursprung/Ziel/Protokoll-Hash-Lookup (für Adressglättung verwendet) in SRAM durch. Wenn die Hash-Funktion nicht erfolgreich ist, dann wird der Paketkopf für eine zusätzliche Verarbeitung zum Prozessorkern 20 gesendet. Die FBUS-Schnittstelle 28 unterstützt die folgenden internen Datentransaktionen
    FBUS-Einheit (Gemeinschaftsbus-SRAM) zu/von Mikromaschine
    FBUS-Einheit (über Privatbus) Schreibvorgänge von SDRAM-Einheit
    FBUS-Einheit (über Mbus) Lesevorgänge zu SDRAM
  • Der FBUS 18 ist ein standardmäßiger Industriebus und beinhaltet einen Datenbus, z.B. 64 Bit breit, und Seitenbandsteuerung für Adress- und Lese/Schreib-Steuerung. Die FBUS-Schnittstelle 28 bietet die Fähigkeit, große Datenmengen mit einer Reihe von Ein- und Ausgabe-FIFOs 29a29b einzugeben. Von den FIFOs 29a29b rufen die Mikromaschinen 22a22f Daten von der SDRAM-Steuerung 26a ab oder weisen sie an, Daten von einem Empfangs-FIFO, in dem Daten von einem Gerät auf dem Bus 18 angekommen sind, in die FBUS-Schnittstelle 28 zu verlegen. Die Daten können über einen direkten Speicherzugriff durch die Speichersteuerung 26a zum SDRAM-Speicher 16a gesendet werden. Ebenso können die Mikromaschinen Daten vom SDRAM 26a zur Schnittstelle 28, hinaus zum FBUS 18, über die FBUS-Schnittstelle 28 leiten.
  • Datenfunktionen werden unter den Mikrosteuerungen verteilt. Konnektivität zum SRAM 26a, SDRAM 26b und FBUS 28 erfolgt über Befehlsanforderungen. Eine Befehlsanforderung kann eine Speicheranforderung oder eine FBUS-Anforderung sein. So kann eine Befehlsanforderung beispielsweise Daten von einem in einer Mikromaschine 22a befindlichen Register zu einer Gemeinschaftsressource verlegen, z.B. eine SDRAM-Position, eine SRAM-Position, eine Flash-Speicher- oder eine MAC-Adresse. Die Befehle werden zu jeder der Funktionseinheiten und den Gemeinschaftsressourcen ausgesendet. Die Gemeinschaftsressourcen brauchen die Daten jedoch nicht lokal gepuffert zu halten. Stattdessen greifen die Gemeinschaftsressourcen auf in den Mikromaschinen befindliche verteilte Daten zu. So können Mikromaschinen 22a22f lokalen Zugang zu Daten haben und es braucht ihnen kein Zugang auf einem Bus gewährt werden, so dass keine Konkurrenz um den Bus entsteht. Mit diesem Merkmal gibt es eine 0-Zyklus-Verweilzeit zum Warten auf Daten innerhalb der Mikromaschinen 22a22f.
  • Der Kernprozessor 20 kann auch auf die Gemeinschaftsressourcen zugreifen. Der Kernprozessor 20 hat eine direkte Kommunikation mit der SDRAM-Steuerung 26a zur Busschnittstelle 24 und zur SRAM-Steueurung 26b über den Bus 32. Zum Zugreifen auf die Mikromaschinen 22a22f und zum Übertragen von Registern, die sich in beliebigen der Mikromaschinen 22a22f befinden, greift der Kernprozessor 20 mittels des ASB-Umsetzers 30 über den Bus 34 auf die Mikromaschinen 22a22f zu. Der ASB-Umsetzer 30 führt eine Adressumsetzung zwischen FBUS-Mikromaschinen-Transferregisterorten und Kernprozessoradressen (d.h. ASB-Bus) aus, so dass der Kernprozessor 20 auf Register zugreifen kann, die zu den Mikromaschinen 22a22c gehören.
  • Die Mikromaschinen 22 können den Registersatz zwar zum Austauschen von Daten verwenden, aber es ist auch ein Notizblockspeicher 27 vorgesehen, so dass Mikromaschinen Daten in den Speicher schreiben können, so dass andere Mikromaschinen sie lesen können. Der Notizblock 27 ist mit dem Bus 34 gekoppelt.
  • Mikromaschinen:
  • 3 zeigt ein Beispiel für eine der Mikromaschinen 22a22f, z.B. die Mikromaschine 22f. Die Mikromaschine beinhaltet einen Steuerspeicher 70, der in einer Ausführung einen RAM von hier 1024 Worten von 32 Bit beinhaltet. Der RAM speichert ein Mikroprogramm, das vom Kernprozessor 20 geladen werden kann. Die Mikromaschine 22f beinhaltet auch Steuerlogik 72. Die Steuerlogik beinhaltet einen Befehlsdecoder 73 und PC-(Programmzähler)-Einheiten 72a72d. Die vier Mikroprogrammzähler 72a72d werden in Hardware geführt. Die Mikromaschine 22f beinhaltet auch Kontextevent-Umschaltlogik 74. Die Kontexteventlogik 74 empfängt Meldungen (z.B. SEQ_#_EVENT_RESPONSE; FBI_EVENT_RESPONSE; SRAM_EVENT_RESPONSE; SDRAM_EVENT_RESPONSE; und ASB_EVENT_RESPONSE) von jeder der Gemeinschaftsressourcen, z.B. SRAM 26a, SDRAM 26b oder Prozessorkern 20, Steuer- und Statusregister usw. Diese Meldungen geben Informationen darüber, ob eine angeforderte Funktion abgeschlossen ist. Je nachdem, ob eine von einem Programmthread angeforderte Funktion abgeschlossen ist und den Abschluss signalisiert hat oder nicht, muss der Programmthread auf das Vollzugssignal warten, und wenn der Programmthread zur Arbeit freigegeben ist, dann wird er auf eine verfügbare Programmthread-Liste (nicht dargestellt) gesetzt. Die Mikromaschine 22f kann maximal z.B. 4 Programmthreads verfügbar haben.
  • Zusätzlich zu Event-Signalen, die lokal auf einem ausführenden Programmthread sind, verwenden die Mikromaschinen 22 globale Signalisierungszustände. Mit Signalisierungszuständen kann ein ausführender Programmthread einen Signalzustand zu allen Mikromaschinen 22 rundsenden. Jeder Programmthread in den Mikromaschinen kann auf diese Signalisierungszustände abzweigen. Diese Signalisierungszustände können verwendet werden, um die Verfügbarkeit einer Ressource oder den Service-Bedarf einer Ressource zu ermitteln.
  • Die Kontext-Event-Logik 74 hat Arbitrierung für die vier (4) Programmthreads. In einer Ausgestaltung ist die Arbitrierung ein Round-Robin-Mechanismus. Es können auch andere Techniken zum Einsatz kommen, einschließlich Priority-Queuing oder Weighted-Fair-Queuing. Die Mikromaschine 22f beinhaltet auch einen EBOX-(Execution Box)-Datenweg 76, der eine Rechenlogikeinheit 76a und einen Universalregistersatz 76b aufweist. Die Rechenlogikeinheit 76a führt arithmetische und logische Funktionen sowie Verschiebungsfunktionen aus. Der Registersatz 76b hat eine relativ große Zahl von Universalregistern. In dieser Ausführung gibt es 64 Universalregister in einer ersten Bank, Bank A, und 64 in einer zweiten Bank, Bank B. Die Universalregister haben eine Fensterstruktur, so dass sie relativ und absolut adressierbar sind.
  • Die Mikromaschine 22f beinhaltet auch einen Schreibtransferregisterstapel 78 und einen Lesetransferstapel 80. Auch diese Register haben eine Fensterstruktur, so dass sie relativ und absolut adressierbar sind. Der Schreibtransferregisterstapel 78 ist dort, wo sich Schreibdaten zu einer Ressource befinden. Ebenso ist der Leseregisterstapel 80 für Rückgabedaten von einer Gemeinschaftsressource. Nach oder gleichzeitig mit der Datenankunft wird ein Event-Signal von der jeweiligen Gemeinschaftsressource, z.B. die SRAM-Steuerung 26a, die SDRAM-Steuerung 26b oder der Kernprozessor 20, an den Kontext-Event-Zuteiler 74 angelegt, der dann dem Programmthread mitteilt, dass die Daten verfügbar sind oder gesendet wurden. Beide Transferregisterbänke 78 und 80 sind über einen Datenpfad mit der EBOX (Execution Box) 76 verbunden. In einer Ausführung hat das Lesetransferregister 64 Register und das Schreibtransferregister 64 Register.
  • Jede Mikromaschine 22a22f unterstützt die Multithread-Ausführung von vier Kontexten. Ein Grund hierfür ist, es einem Programmthread zu gestatten, die Ausführung zu starten, unmittelbar nachdem ein anderer Programmthread eine Speicherreferenz ausgibt und warten muss, bis diese Referenz fertig ist, bevor weitere Arbeit ausgeführt wird. Dieses Verhalten ist für die Unterhaltung einer effizienten Hardware-Ausführung der Mikromaschinen wesentlich, weil Speicherlatenz signifikant ist. Anders ausgedrückt, wenn nur eine einzelne Programmthread-Ausführung unterstützt würde, dann würden die Mikromaschinen recht viele Zyklen lang untätig warten, bis Referenzen zurückkommen, wodurch der Gesamtrechendurchsatz reduziert würde. Eine Multithread-Ausführung lässt es zu, dass Mikromaschinen Speicherlatenz verbergen, indem sie nützliche unabhängige Arbeiten über mehrere Programmthreads ausführen. Es sind zwei Synchronisationsmechanismen vorgesehen, damit ein Programmthread eine SRAM- oder SDRAM-Referenz ausgeben und dann auf den Zeitpunkt synchronisieren kann, an dem diese Referenz vollzogen wird.
  • Ein Mechanismus ist Sofortsynchronisation (Immediate Synchronisation). Bei Sofortsynchronisation gibt die Mikromaschine die Referenz aus und lagert sie sofort aus diesem Kontext aus. Dem Kontext wird signalisiert, wenn die entsprechende Referenz vollzogen ist. Nach der Signalisierung wird der Kontext wieder zur Ausführung eingelagert, wenn ein Kontextumlagerungsevent auftritt und er an der Reihe ist. Daher wird vom Standpunkt eines Befehlsstroms eines einzelnen Kontexts aus gesehen das Mikrowort nach der Ausgabe der Speicherreferenz erst dann ausgeführt, wenn die Referenz fertig ist.
  • Ein zweiter Mechanismus ist verzögerte Synchronisation (Delayed Synchronisation). Bei verzögerter Synchronisation gibt die Mikromaschine die Referenz aus und fährt dann mit der Ausführung einer anderen nützlichen Arbeit unabhängig von der Referenz fort. Irgendwann später könnte es notwendig werden, den Ausführungsstrom des Programmthread auf den Vollzug der ausgegebenen Referenz zu synchronisieren, bevor weitere Arbeiten ausgeführt werden. An diesem Punkt wird ein Synchronisationsmikrowort ausgeführt, das entweder den aktuellen Programmthread auslagert und ihn irgendwann später wieder einlagert, wenn die Referenz fertig ist, oder mit der Ausführung des aktuellen Programmthreads fortfährt, weil die Referenz bereits fertig ist. Eine verzögerte Synchronisation wird mit zwei verschiedenen Signalisierungsansätzen ausgeführt
  • Wenn die Speicherreferenz mit einem Transferregister assoziiert ist, dann wird das Signal, von dem der Programmthread ausgelöst wird, erzeugt, wenn das entsprechende Transferregister-Gültig-Bit gesetzt oder gelöscht ist. So würde beispielsweise einem SRAM-Lesevorgang, der Daten im Transferregister A ablegt, signalisiert, wenn das gültige Bit für A gesetzt ist. Wenn die Speicherreferenz mit dem Transfer-FIFO oder dem Empfangs-FIFO anstatt einem Transferregister assoziiert ist, dann wird das Signal erzeugt, wenn die Referenz in der SDRAM-Steuerung 26a fertig ist. Nur ein Signalzustand pro Kontext wird im Scheduler der Mikromaschinen gehalten, daher kann bei diesem Ansatz nur ein ausstehendes Signal existieren.
  • Gemäß 4 beinhaltet die SDRAM-Speichersteuerung 26a Speicherreferenz-Warteschlangen 90, bei denen Speicherreferenzanforderungen von den verschiedenen Mikromaschinen 22a22f ankommen. Die Speichersteuerung 26a beinhaltet einen Zuteiler 91, der die nächste der Mikromaschinen-Referenzanforderungen dafür auswählt, zu einer der Funktionseinheiten zu gehen. Angesichts der Tatsache, dass eine der Mikromaschinen eine Referenzanforderung bereitstellt, kommt die Referenzanforderung durch die Adress- und Befehlswarteschlange 90 in der SDRAM-Steuerung 26a. Wenn in der Referenzanforderung ein Bit mit der Bezeichnung „optimiertes MEM-Bit" gesetzt ist, dann wird die eingehende Referenzanforderung entweder in die Gerade-Bank-Warteschlange 90a oder die Ungerade-Bank-Warteschlange 90b sortiert. Wenn in der Speicherreferenzanforderung kein Speicheroptimierungsbit gesetzt ist, dann geht die Referenzanforderung vorgabemäßig in eine Ordnungswarteschlange 90c. Die SDRAM-Steuerung 26 ist ein Betriebsmittel, das von der FBUS-Schnittstelle 28, dem Kernprozessor 20 und der PCI-Schnittstelle 24 gemeinsam genutzt wird. Die SDRAM-Steuerung 26 führt auch eine Zustandsmaschine zur Ausführung von atomaren READ-MODIFY-Write-Operationen. Die SDRAM-Steuerung 26 führt auch Byte-Justierung für Anforderungen von Daten vom SDRAM aus.
  • Die Ordnungswarteschlange 90c hält die Reihenfolge von Referenzanforderungen von den Mikromaschinen. Mit einer Serie von Ungerade- und Gerade-Bank-Referenzen ist es evtl. erforderlich, dass ein Signal nur nach dem Abschluss einer Folge von Speicherreferenzen sowohl zu den ungeraden als auch zu den geraden Bänken zurückgegeben wird. Wenn die Mikromaschine 22f die Speicherreferenzen in Ungerade- und Gerade-Bank-Referenzen sortiert und in einer der Bänke, z.B. der geraden Bank, die Speicherreferenzen vor der ungeraden Bank ausgehen, aber das Signal auf der letzten geraden Referenz aufgedrückt wird, dann wäre es denkbar, dass die Speichersteuerung 26a ein Signal zu einer Mikromaschine zurücksendet, dass die Speicheranforderung fertig war, obwohl die Ungerade-Bank-Referenz noch nicht erledigt war. Dies könnte ein Kohärenzproblem verursachen. Die Ordnungswarteschlange 90c lässt es zu, dass in einer Mikromaschine mehrere Speicherreferenzen ausstehen, von denen nur die letzte Speicherreferenz einen Vollzug zu signalisieren braucht.
  • Die SDRAM-Steuerung 26a beinhaltet auch eine Hochprioritätswarteschlange 90d. In der Hochprioritätswarteschlange 90d geht eine eingehende Speicherreferenz von einer der Mikromaschinen direkt zur Hochprioritätswarteschlange und wird mit einer höheren Priorität bearbeitet als andere Speicherreferenzen in den anderen Warteschlangen. Alle diese Warteschlangen, die Gerade-Bank-Warteschlange 90a, die Ungerade-Bank-Warteschlange 90b, die Ordnungswarteschlange 90c und die Hochprioritätswarteschlange, werden in einer einzigen RAM-Struktur ausgeführt, die logisch in vier unterschiedliche Fenster segmentiert ist, wobei jedes Fenster seinen eigenen Kopf- und Endezeiger hat. Da Füllen- und Leeren-Operationen nur eine einzige Eingabe und eine einzige Ausgabe sind, können sie in dieselbe RAM-Struktur gesetzt werden, um die Dichte von RAM-Strukturen zu erhöhen.
  • Die SDRAM-Steuerung 26a beinhaltet auch Kernbus-Schnittstellenlogik, d.h. den ASB-Bus 92. Die ASB-Busschnittstellenlogik 93 verbindet den Kernprozessor 20 mit der SDRAM-Steuerung 26a. Wenn es eingehende Daten vom Kernprozessor 20 über die ASB-Schnittstelle 92 gibt, dann können die Daten im MEM ASB-Gerät 98 gespeichert und nachfolgend aus dem MEM ASB Gerät 98 durch die SDRAM-Schnittstelle 110 zum SDRAM-Speicher 16a entfernt werden. Obwohl dies nicht dargestellt ist, kann dieselbe Warteschlangenstruktur für die Lesevorgänge vorgesehen werden. Die SDRAM-Steuerung 26a beinhaltet auch eine Maschine 97 zum Ziehen von Daten aus den Mikromaschinen und dem PCI-Bus.
  • Zusätzliche Warteschlangen beinhalten die PCI-Adresswarteschlange 94 und die ASB-Lesen/Schreib- Warteschlange 96, die eine Reihe von Anforderungen enthält. Die Speicheranforderungen werden über den Multiplexer 106 zur SDRAM-Schnittstelle 110 gesendet. Der Multiplexer 106 wird vom SDRAM-Zuteiler 91 gesteuert, der erfasst, wie voll die einzelnen Warteschlangen sind, sowie den Status der Anforderungen, und der aufgrund dessen eine Entscheidung über die Priorität auf der Basis eines in einem Prioritäts-Service-Steuerregister 100 gespeicherten programmierbaren Wert fällt.
  • 5 zeigt die Speichersteuerung 26b für den SRAM. Die Speichersteuerung 26b beinhaltet eine Adress- und Befehlswarteschlange 120. Die Speichersteuerung 26b wird auf der Basis des Speicheroperationstyps, d.h. Lesen oder Schreiben, optimiert. Die Adress- und Befehlswarteschlange 120 beinhaltet eine Hochprioritätswarteschlange 120a, eine Lesewarteschlange 120b, die die vorherrschende Speicherreferenzfunktion ist, die ein SRAM ausführt, und eine Ordnungswarteschlange 120c, die im Allgemeinen alle Schreibvorgänge zum SRAM und alle Lesevorgänge beinhaltet, die zu nichtoptimieren sind. Obwohl dies nicht gezeigt ist, könnte die Adress- und Befehlswarteschlange 120 auch eine Schreibwarteschlange beinhalten.
  • Die SRAM-Steuerung 26b beinhaltet auch Kernbus-Schnittstellenlogik, d.h. den ASB-Bus 122. Die ASB-Busschnittstellenlogik 122 verbindet den Kernprozessor 20 mit der SRAM-Steuerung 26b. Die SRAM-Steuerung 26b beinhaltet auch eine Maschine 127 zum Ziehen von Daten aus den Mikromaschinen und dem PCI-Bus.
  • Die Speicheranforderungen werden über den Multiplexer 126 zur SRAM-Schnittstelle 140 gesendet. Der Multiplexer 126 wird vom SRAM-Zuteiler 131 gesteuert, der erfasst, wie voll die einzelnen Warteschlangen sind, sowie den Status der Anforderungen, und der anhand dessen eine Entscheidung über die Priorität auf der Basis eines in einem Prioritäts-Service-Steuerregister 130 gespeicherten programmierbaren Wertes fällt. Wenn die Steuerung zum Multiplexer 126 eine Speicherreferenzanforderung wählt, dann wird die Speicherreferenzanforderung zu einem Decoder 138 gesendet, wo sie decodiert und eine Adresse erzeugt wird.
  • Die SRAM-Einheit behält die Kontrolle über den Memory Mapped Off-Chip SRAM und den Expansion ROM. Die SRAM-Steuerung 26b kann z.B. 16 MB adressieren, von denen z.B. 8 MB für SRAM 16b gemappt und 8 MB für Sonderfunktionen reserviert sind wie: Boot-Kapazität über Flashrom 16c; und Konsolenportzugang für MAC-Geräte 13a, 13b und Zugang zu assoziierten (RMON) Zählern. Der SRAM wird für lokale Lookup-Tabellen und Warteschlangen-Managementfunktionen verwendet.
  • Die SRAM-Steuerung 26b unterstützt die folgenden Transaktionen:
    Mikromaschinenanforderungen (über Privatbus) zu/von SRAM
    Kernprozessor (über ASB-Bus) zu/von SRAM
  • Die Adress- und Befehlswarteschlange 120 beinhaltet auch eine Read-Lock-Fail-Warteschlange 120d. Die Read-Lock-Fail-Warteschlange 120d dient zum Aufnehmen von Lese-Speicherreferenzanforderungen, die aufgrund einer auf einem Speicherteil existierenden Sperre versagen.
  • 6 zeigt die Kommunikation zwischen den Mikromaschinen 22 und der FBUS-Schnittstellenlogik (FBI). Die FBUS-Schnittstelle 28 in einer Netzwerkanwendung führt Kopfverarbeitung an eingehenden Paketen vom FBUS 18 durch. Eine Hauptfunktion, die die FBUS-Schnittstelle ausführt, ist die Extraktion von Paketköpfen und ein mikroprogrammierbares Ursprung/Ziel/Protokoll-Hash-Lookup im SRAM. Wenn die Hash-Funktion nicht erfolgreich ist, dann wird der Paketkopf zum Kernprozessor 28 für eine weitergehende Verarbeitung weitergeleitet.
  • Die FBI 28 hat einen Sende-FIFO 182, einen Empfangs-FIFO 183, eine Hash-Einheit 188 und FBI-Steuer- und Statusregister 189. Diese vier Einheiten kommunizieren mit den Mikromaschinen 22 über einen zeitmultiplexierten Zugriff auf den SRAM-Bus 38, der mit den Transferregistern 78, 80 in den Mikromaschinen verbunden ist. Das heißt, alle Kommunikationen zu und von den Mikromaschinen erfolgen über die Transferregister 78, 80. Die FBUS-Schnittstelle 28 hat eine Push-Zustandsmaschine 200 zum Pushen von Daten in die Transferregister während der Zeitzyklen, in denen der SRAM den SRAM-Datenbus NICHT verwendet (Teil von Bus 38), und eine Pull-Zustandsmaschine 202 zum Abrufen von Daten aus den Transferregistern in der jeweiligen Mikromaschine.
  • Die Hash-Einheit hat ein Paar FIFOs 188a, 188b. Die Hash-Einheit ermittelt, wenn die FBI 28 eine FBI hash-Anforderung empfangen hat. Die Hash-Einheit 188 ruft Hash-Keys von der anrufenden Mikromaschine 22 ab. Nach dem Abrufen und Hashen der Keys werden die Indexe zurück zur anrufenden Mikromaschine 22 gesendet. Es können unter einer einzigen FBI hash-Anforderung bis zu drei Hash-Vorgänge durchgeführt werden. Die Busse 34 und 38 gehen jeweils in eine Richtung: SDRAM_push/pull data und Sbus_push/pull_data. Jeder dieser Busse benötigt Steuersignale zum Senden von Lese/Schreib-Controls zu den Transferregistern der entsprechenden Mikromaschine 22.
  • Im Allgemeinen benötigen Transferregister Schutz vor dem sie kontrollierenden Kontext, um die Lesekorrektheit zu garantieren. Speziell, wenn ein Schreibtransferregister von einem thread_1 benutzt wird, um Daten zum SDRAM 16a zu senden, dann überschreibt thread_1 dieses Register erst dann, wenn das Signal zurück von der SDRAM-Steuerung 26a anzeigt, dass dieses Register weitergeleitet wurde und jetzt wiederverwendet werden kann. Nicht jeder Schreibvorgang braucht ein Signal zurück vom Ziel, das anzeigt, dass die Funktion vollzogen wurde, weil die Vollzugsreihenfolge, wenn der Programmthread auf dieselbe Befehlswarteschlange an diesem Ziel mit mehreren Anforderungen schreibt, innerhalb dieser Befehlswarteschlange garantiert wird, so dass nur der letzte Befehl eine Signalisierung zurück zum Programmthread benötigt. Wenn der Programmthread jedoch mehrere Befehlswarteschlangen verwendet (Ordnen und Lesen), dann werden diese Befehlswarteschlangen in separate Kontexttasks unterteilt, so dass die Ordnung über Kontextumlagerung bewahrt bleiben kann. Der zu Beginn dieses Absatzes gezeigte Ausnahmefall bezieht sich auf eine bestimmte Operationsklasse unter Verwendung eines unangeforderten PUSH zu Transferregistern von der FBI für FBUS-Statusinformationen. Um Lese/Schreib-Determinismus auf den Transferregistern zu schützen, legt die FBI beim Einrichten dieser speziellen FBI-Push-Operationen ein spezielles Push_protect-Signal an.
  • Jede Mikromaschine 22, die die freilaufende FBI-Push-Technik anwendet, muss vor dem Zugreifen auf die Transferregister durch die vereinbarten FBUS-Schnittstelle/Mikromaschine den Schutzflag testen. Ist der Flag nicht gesetzt, dann können die Mikromaschinen 22 auf die Transferregister zugreifen. Wenn der Flag gesetzt ist, dann muss der Kontext N Zyklen lang warten, bevor auf die Register zugegriffen werden kann. Diese Zahl wird a priori durch die Anzahl der gepushten Transferregister, plus einem Frontend-Schutzfenster, bestimmt. Die Mikromaschine testet diesen Flag, bewegt dann die Daten von den Lesetransferregistern zu GPRs in angrenzenden Zyklen, so dass die Push-Maschine nicht mit dem Mikromaschinen-Lesevorgang kollidiert.
  • Thread-Signalisierung für Paketverarbeitung
  • Für Paketverarbeitung werden spezielle Techniken wie z.B. Interthread-Kommunikationen zum Kommunizieren von Status, ein Selbstzerstörungsregister 210, damit Programmthreads Tasks selbst zuweisen können, und ein thread_done-Register 212 zum Bereitstellen eines globalen Programmthread-Kommunikationsprogramms benutzt. Das Zerstörungsregister 210 und ein thread_done-Register 212 können als Steuer- und Statusregister 189 ausgeführt werden. Sie sind der Deutlichkeit halber in der FBUS-Schnittstelle 28 außerhalb des mit CSR integrierten Blocks zu sehen. Netzwerkfunktionen werden im Netzwerkprozessor mit mehreren Programmthreads ausgeführt, z.B. Kontexte zum Verarbeiten von Netzwerkpaketen. So könnten z.B. Scheduler-Programmthreads in einer der Mikroprogrammmaschinen, z.B. 22a, ausgeführt werden, während Verarbeitungs-Programmthreads in den übrigen Maschinen ausgeführt werden könnten, z.B. 22b22f. Die Programmthreads (Verarbeitungs- oder Planungsprogrammthreads) verwenden Interthread-Kommunikationen zum Kommunizieren von Status.
  • Programmthreads werden spezielle Tasks wie z.B. Empfangs- und Sende-Scheduling, Empfangsverarbeitung und Sendeverarbeitung usw. zugewiesen. Task-Zuweisung und Task-Vollzug werden zwischen Programmthreads durch Inter-Thread-Signalierung, Register mit spezialisierten Lese- und Schreibcharakteristiken, z.B. Selbstzerstörungsregister 210 und Thread-done-Register 212, SRAM 16b und im internen Notizblockspeicher 186 (6) gespeicherte Daten aufgrund von Operationen wie Bit setzen und Bit löschen übermittelt.
  • Der Netzwerkprozessor 10 beinhaltet ein allgemeines Kontextkommunikationssignalisierungsprotokoll, das es zulässt, dass jeder Kontext ein Signal setzt, das von jedem anderen Kontext erfasst werden kann. Dadurch können kooperierende Programmthreads ein Semaphor verwenden und so mit Microcode-gesteuerter Verarbeitung koordinieren.
  • Die Verarbeitung von Netzwerkpaketen kann mit mehreren Programmthreads erfolgen. Typischerweise gibt es für Netzwerkverarbeitung einen Empfangs-Scheduler, einen Sende-Scheduler und Verarbeitungsprogrammthreads. Ein Scheduler-(Empfangen oder Senden)-Programmthread koordiniert die Menge an zu verrichtender Arbeit und die Reihenfolge der Arbeit durch Verarbeitungsprogrammthreads. Der Scheduler-Programmthread weist Verarbeitungsprogrammthreads Tasks zu und in einigen Fällen können Verarbeitungsprogrammthreads Tasks anderen Verarbeitungsprogrammthreads zuweisen. So bestimmt beispielsweise ein Scheduler, welche Ports bedient werden müssen und weist Verarbeitungsprogrammthreads Tasks zu und koordiniert sie, um inhärente Speicherlatenz durch parallele Verarbeitung mehrerer Programmthreads zu überwinden.
  • In einigen Beispielen kann mit langsamen Ports ein Verarbeitungsprogrammthread die Verarbeitung an einem Teil eines Pakets und ein zweiter Verarbeitungsprogrammthread den Rest des Pakets verarbeiten, oder in einigen Fällen verwendet der Scheduler den nächsten verfügbaren Programmthread. Bei schnelleren Ports, z.B. Gigabit-Ports, wo 64-Byte-Pakete sehr schnell empfangen werden, kann der Scheduler M Pakete zum nächsten verfügbaren Programmthread zuweisen. Die Programmthreads signalisieren einander, welchen Teil eines Pakets der Programmthread verarbeitet hat, sowie seinen Status.
  • Ein Programmthread kann zum Verarbeiten der ersten 64 Byte eines Pakets zugewiesen werden. Wenn der Programmthread fertig ist, dann hat er Daten zum Setzen von Signalen zum Aufwecken des nächsten für die Verarbeitung der nächsten 64 Bytes zugewiesenen Programmthreads. Der Programmthread kann ein Register und eine Adresse des Registers auf eine zuvor zugewiesenen Speicherstelle schreiben, z.B. Notizblockregister. Der Programmthread setzt Signale zum Aufwecken des nächsten zum Bearbeiten des nächsten Byte des Pakets zugewiesenen Programmthread.
  • Mit Bezug auf die 7A7B, das Selbstzerstörungsregister 210 erlaubt es einem Scheduler-Programmthread S (230 in 7B), Services von mehreren Programmthreads Pa–Pn anzufordern, die den angeforderten Service bereitstellen. Der erste Programmthread, z.B. Pi, der auf das self_destruct-Register 210 zugreift (232 in 7B), nimmt die Anforderung. Nach dem Lesen durch einen Programmthread wird das „Selbstzerstörungsregister" 210 genullt, d.h. gelöscht (234 in 7B). Andere Programmthreads, die diese Anforderung erfüllen können, erhalten keine aktive Anforderung mehr. So kann z.B. ein Programmkontext durch Schreiben auf das Selbstzerstörungsregister 210 eine Task zur Zuweisung zum ersten bereiten Kontexts anfordern. Ein Kontext prüft auf Zuweisung durch Lesen des „Selbstzerstörungsregisters" 210. Wenn der Wert des Selbstzerstörungsregisters O ist, dann ist gerade keine neue Task zur Zuweisung zum Programmthread verfügbar. Dies könnte anzeigen, dass es keine neuen Tasks gibt oder dass evtl. ein anderer Programmthread sich selbst für die Task zugewiesen und das Selbstzerstörungsregister 210 gelöscht hat. Wenn der Wert nicht null ist, wird der Inhalt des Selbstzerstörungsregisters zum Ermitteln der Task interpretiert und das Register wird nach dem Lesen durch den Kontext gelöscht. So warten Kontexte, die dieses Register zur Zuweisung lesen, bis die nächste Task-Anweisung auf das Register geschrieben wurde.
  • Gemäß 8 werden für Vernetzungsanwendungen typischerweise unterschiedliche Programmtexte zum Ausführen spezieller Systemtasks verwendet. Tasks sind u.a. das Empfangen von Planungsdaten, das Empfangen von Verarbeitungskontexten, das Senden einer Zuteilung, das Senden von Planungsdaten, das Senden von Füll- und Prozessorkernkommunikationen.
  • Der Empfangs-Scheduler leitet den Empfang von z.B. 64 oder 128 Bytes Eingangsdaten ein (242), indem er einen Befehl zur FBI-Schnittstelle 28 sendet, der einen Port vorgibt, von dem die Daten extrahiert werden, und das Empfangs-FIFO-Element zum Puffern dieser Daten, sowie den Mikromaschinenkontext, der nach dem Abrufen der Empfangsdaten zu avisieren ist.
  • Der Empfangs-Scheduler-Thread 244 sendet ein Signal zum vorgegebenen Mikromaschinen-Programmthread, das einen vorgegebenen Kontext aktiviert. Der Kontext liest das FBI-Empfangssteuerregister zum Einholen der notwendigen Empfangsinformationen zur Verarbeitung (d.h. Port, Empfangs-FIFO-Elementort, Byte-Zahl, Paketanfang, Paketende, Fehlerstatus). Wenn ein Paketanfang angezeigt wird, dann ist der Empfangs-Scheduler-Programmthread dafür verantwortlich zu ermitteln, wo im SDRAM die Daten gespeichert werden (d.h. die Ausgangswarteschlange zum Einführen des Pakets), und die Paketdaten auf den SDRAM zu schreiben. Wenn dies nicht der Anfang eines Pakets ist, dann ermittelt der Empfangsprogrammthread, wo die früheren Daten dieses Pakets gespeichert wurden, um mit der Verarbeitung 246 des Pakets fortzufahren. Wenn die Paketende-Anzeige empfangen wird (248) (oder nach dem ersten 64-Byte-Abschnitt, wenn die Empfangen-bis-Senden-Latenz optimiert wird), fügt der Empfangsprogrammthread das Paket zur Warteschlange hinzu, ermittelt durch Verarbeitung des Paketkopfes.
  • Die Programmthreads kommunizieren auch mit einer Gemeinschaftsressource durch einen Bit-Setzen- und Bit-Löschen-Mechanismus, der einen Bitvektor bereitstellt. Dieser Mechanismus erlaubt das Setzen und Löschen individueller Bits und das Ausführen eines Tests und das Setzen individueller Bits zum Steuern einer Gemeinschaftsressource. Der Bitvektor signalisiert, wenn Ausgangswarteschlangen nicht leer sind. Wenn ein Empfangsprogrammthread ein Paket in eine Warteschlange einreiht, dann setzt der Empfangs-Scheduler 250 ein Bit. Der Sende-Scheduler kann den Bitvektor untersuchen, um den Status aller Warteschlangen zu ermitteln.
  • Die Bit-Setzen- und Bit-Löschen-Operationen am Bitvektor können entweder im Notizblock-RAM oder -SRAM erfolgen. Wenn der Scheduler zwischen Programmthreads auf derselben Mikromaschine 22 kommuniziert, dann kann der Bitvektor im Registersatz gespeichert werden, weil jeder Kontext die Register des anderen Kontexts lesen kann. So wird z.B. ein Leer- oder Nicht-leer-Status jeder Ausgangswarteschlange durch einen Bitvektor im internen Notizblockspeicher unterstützt. Wenn ein Empfangsprogrammthread ein Paket in eine Warteschlange einreiht, dann verwendet der Empfangsprogrammthread den Notizblockbit-setzen-Befehl zum Setzen eines Bits im Warteschlangen-Statusbitvektor, um anzuzeigen, dass die Warteschlange jetzt wenigstens einen Eintrag hat. Der Sendezuteiler durchsucht (270) den Warteschlangen-Bitvektor nach Nicht-leer-Warteschlangen (z.B. Bitx gesetzt), um sendebereite Pakete zu ermitteln. Wenn ein Paket aus einer Warteschlange zum Senden herausgenommen wird (272), wenn die Warteschlange leer wird (274), dann gibt der Sendezuteiler (276) einen Bit-Löschen-Befehl an das entsprechende Bit des Warteschlangen-Bitvektors aus.
  • Mit Bezug auf 9, das thread_done-Register ist auch auf der FBI 28 und ist ein Register, in dem Bits von verschiedenen Programmthreads gesetzt werden können. Jeder Programmthread kann z.B. zwei Bits zum Übermitteln seines Status zu allen anderen Programmthreads benutzen. Es kann auch ein Scheduler-Programmthread den Status aller seiner Verarbeitungsprogrammthreads lesen (292). Nach dem Vollzug einer Empfangstask (282) schreibt (284) ein „Empfangs"-Programmthread einen Vollzugscode in das „thread_done"-Register. Der Empfangs-Programmthread wird nach dem Schreiben in das thread done-Register inaktiv (286). Dieser Empfangs-Programmthread wartet auf ein anderes Signal von der FBI, das anzeigt, dass eine andere Empfangs-Task zugewiesen wurde. Programmthreads 1–16 haben 2-Bit-Felder für „thread_done_1", und Programmthreads 17–24 haben 2-Bit-Felder für „thread_done_2". Das 2-Bit-Feld lässt es zu, dass ein Programmthread unterschiedliche Task-Vollzugsebenen kommuniziert.
  • So kann beispielsweise der Scheduler den 2-Bit-Status „01" verwenden, um anzuzeigen, dass Daten zum SDRAM bewegt wurden, die Paketverarbeitung noch läuft und Zeiger gespeichert wurden; Bit 10 kann anzeigen, dass Daten zum SDRAM bewegt wurden, die Paketverarbeitung noch läuft und Zeiger nicht gespeichert wurden; und Bit 11 kann anzeigen, dass die Paketverarbeitung vollzogen ist. Somit können die Zustände 296a vom Empfänger-Scheduler-Programmthread zum Zuweisen (297a) eines anderen Thread zum Verarbeiten einer Task verwendet werden, wenn Daten verfügbar werden, während die Zustände 296b vom Empfangs-Scheduler zum Zuweisen (297b) desselben Threads verwendet werden können, um die Verarbeitung fortzusetzen, wenn die Daten verfügbar sind.
  • Die genaue Interpretation der Meldung kann von einer Software-Konvention festgelegt werden, die zwischen einem Scheduler-Programmthread und Verarbeitungsprogrammthreads festgelegt wird, die vom Scheduler-Programmthread aufgerufen wird. Das heißt, die Statusmeldungen können sich je nachdem ändern, ob die Konvention zum Empfangen (wie oben), zum Senden ist, usw. Im Allgemeinen beinhalten die Statusmeldungen „belegt", „nicht belegt", „nicht belegt, wartet aber". Die Statusmeldung „nicht belegt, wartet aber" signalisiert, dass der aktuelle Programmthread die Verarbeitung eines Teils eines Pakets abgeschlossen hat und vermutlich zur Ausführung einer Folgetask an dem Paket zugewiesen wird, wenn Daten verfügbar gemacht werden. Sie kann verwendet werden, wenn der Programmthread Daten von einem Port erwartet und keinen Kontext gespeichert hat, so dass er den Rest dieses Pakets verarbeiten soll.
  • Der Scheduler-Programmthread liest das „thread done" Register, um den Vollzugsstatus von Tasks zu ermitteln, die er anderen Programmthreads zugewiesen hat. Das „thread done" Register wird als Write-one-to-clear-Register implementiert, so dass der Scheduler nur die Felder löschen kann, die er erkannt hat.
  • Andere Ausgestaltungen
  • Es ist zu verstehen, dass die Erfindung zwar ausführlich in Verbindung mit der ausführlichen Beschreibung davon beschrieben wurde, dass die obige Beschreibung aber lediglich illustrativ sein und den Umfang der Erfindung nicht begrenzen soll, der durch die beiliegenden Ansprüche definiert wird. Weitere Aspekte, Vorteile und Modifikationen liegen im Rahmen der folgenden Ansprüche.

Claims (25)

  1. Verfahren zur Netzwerkpaketverarbeitung, das die folgenden Schritte umfasst: Empfangen von Netzwerkpaketen; und Arbeiten an Netzwerkpaketen mit einer Mehrzahl von Programm-Threads zum Verarbeiten der Pakete; wobei das Verfahren dadurch gekennzeichnet ist, dass mehrere Threads unterschiedliche Teile eines empfangenen Netzwerkpakets verarbeiten, wobei aufeinander folgende der mehreren Threads aufeinander folgende Teile des Netzwerkpakets verarbeiten.
  2. Verfahren nach Anspruch 1, wobei die Arbeit das Verwenden von wenigstens einem Programm-Thread zum Prüfen eines Kopfteils des Pakets beinhaltet.
  3. Verfahren nach Anspruch 2, wobei die Arbeit ferner das Signalisieren mit dem wenigstens einen Programm-Thread beinhaltet, dass ein Paketkopf verarbeitet wurde.
  4. Verfahren nach Anspruch 1, wobei die Mehrzahl von Programm-Threads Scheduler-Programm-Threads (230) zum Planen von Aufgabenreihenfolgen zur Verarbeitung und Verarbeitungsprogramm-Threads (Pa–Pn) sind, die Pakete gemäß von den Scheduler-Programm-Threads (230) zugewiesenen Aufgabenzuweisungen verarbeiten.
  5. Verfahren nach Anspruch 1, wobei jeder Programm-Thread eine Meldung auf ein Register (212) schreibt, die seinen aktuellen Status anzeigt.
  6. Verfahren nach Anspruch 5, wobei die Interpretation der Meldung durch eine Software-Konvention festgelegt wird, die zwischen einem Scheduler-Programm-Thread (230) und Verarbeitungs-Programm-Threads (Pa–Pn) festgelegt wird, die vom Scheduler-Programm-Thread (230) abgerufen wird.
  7. Verfahren nach Anspruch 5, wobei Statusmeldungen 'belegt', 'nicht belegt', 'nicht belegt, aber wartet' beinhalten.
  8. Verfahren nach Anspruch 5, wobei eine Statusmeldung 'nicht belegt, aber wartet' beinhaltet und wobei der Status 'nicht belegt, aber wartet' signalisiert, dass der aktuelle Programm-Thread die Verarbeitung eines Teils eines Pakets vollendet hat und vermutlich zur Ausführung einer nachfolgenden Aufgabe an dem Paket zugewiesen wird, wenn Daten zur Fortsetzung der Verarbeitung des Programm-Threads zur Verfügung gestellt werden.
  9. Verfahren nach Anspruch 5, wobei das Register ein global zugängiges Register (212) ist, das von allen aktuellen Programm-Threads gelesen oder beschrieben werden kann.
  10. Verfahren nach Anspruch 4, wobei Scheduler-Programm-Threads jedes beliebige aus einer Mehrzahl von Verarbeitungsprogramm-Threads (Pa–Pn) zum Handhaben der Verarbeitung einer Aufgabe planen können.
  11. Verfahren nach Anspruch 10, wobei der Scheduler-Programm-Thread (230) ein Register (210) mit einer Adresse schreibt, die einer Position der Daten für die Mehrzahl von Verarbeitungsprogramm-Threads entspricht.
  12. Verfahren nach Anspruch 11, wobei ein ausgewählter aus der Mehrzahl von Verarbeitungsprogramm-Threads (Pa–Pn), die die Aufgabe handhaben können, das Register (210) liest, um die Position der Daten. einzuholen.
  13. Verfahren nach Anspruch 12, wobei der ausgewählte aus der Mehrzahl von Verarbeitungsprogramm-Threads (Pa–Pn) das Register (210) liest, um die Position der Daten einzuholen und sich selbst zur Verarbeitung der vom Scheduler-Programm-Thread (230) angeforderten Aufgabe zuzuweisen.
  14. Verfahren nach Anspruch 12, wobei der ausgewählte aus der Mehrzahl von Verarbeitungs-Threads (Pa–Pn) das Register (210) liest, um die Position der Daten einzuholen, während das Register durch Lesen des Registers (210) von dem Programm-Thread gelöscht wird, um sich selbst zur Verarbeitung der Aufgabe zuzuweisen.
  15. Verfahren nach Anspruch 13, wobei ein anderer aus der Mehrzahl von Verarbeitungsprogramm-Threads (Pa–Pn), die der Aufgabe zugewiesen werden können, bei dem Versuch, das Register (210) zu lesen, nachdem es gelöscht wurde, einen Nullwert erhält, der anzeigt, dass dem Verarbeitungsprogramm-Thread derzeit keine Aufgabe zugewiesen werden kann.
  16. Verfahren nach einem der vorherigen Ansprüche, wobei das empfangene Netzwerkpaket von einem Video-Access-Controller (13a, 13b) Port empfangen wird.
  17. Verfahren nach einem der vorherigen Ansprüche, wobei ein Thread die Verarbeitung an einem Teil eines Pakets ausführt und ein zweiter Thread den Rest des Pakets verarbeitet.
  18. Paralleler, Hardware-gestützter Multithread-Prozessor (12) zum Empfangen von Netzwerkpaketen, der Folgendes umfasst: einen Universalprozessor (20), der Systemfunktionen koordiniert; und eine Mehrzahl von Mikromaschinen (22), die mehrere Programm-Threads unterstütien und an den Netzwerkpaketen mit einer Mehrzahl von Programm-Threads arbeiten, um eine Verarbeitung der Pakete zu bewirken; wobei der Prozessor dadurch gekennzeichnet ist, dass: mehrere Threads unterschiedliche Teile eines empfangenen Netzwerkpakets verarbeiten, wobei aufeinander folgende der mehreren Threads aufeinander folgende Teile des Netzwerkpakets verarbeiten.
  19. Prozessor (20) nach Anspruch 18, wobei eine aus der Mehrzahl von Mikromaschinen (22) Scheduler-Programm-Threads (230) ausführt und die übrigen Mikromaschinen (22) Verarbeitungsprogramm-Threads (Pa–Pn) ausführen.
  20. Prozessor (20) nach Anspruch 18, der ferner ein globales Thread-Statusregister (212) umfasst, wobei jeder Programm-Thread eine Meldung auf das globale Statusregister (212) schreibt, die seinen aktuellen Status anzeigt.
  21. Prozessor (20) nach Anspruch 20, wobei die Interpretation der Meldung durch eine Software-Konvention festgelegt ist, die zwischen einem Scheduler-Programm-Thread (230) und den Verarbeitungsprogramm-Threads (Pa–Pn) bestimmt wird, die vom Scheduler-Programm-Thread (230) abgerufen werden.
  22. Prozessor (20) nach Anspruch 18, der ferner Folgendes umfasst: ein Einmal-Lesen-Register (210), wobei der Scheduler-Programm-Thread (230) das Einmal-Lesen-Register (210) mit einer Adresse schreibt, die einer Datenposition für die Mehrzahl von Verarbeitungsprogramm-Threads (Pa–Pn) entspricht, und wenn ein ausgewählter aus der Mehrzahl von Verarbeitungsprogramm-Threads (Pa–Pn) das Register (210) liest, um die Datenposition einzuholen, sich selbst zum Verarbeiten der Aufgabe zuweist, die von dem Scheduler-Programm-Thread (230) angefordert wurde, während das Register (210) durch Lesen des Registers durch den Programm-Thread gelöscht wird.
  23. Prozessor (20) nach Anspruch 22, wobei ein anderer aus der Mehrzahl der Verarbeitungsprogramm-Threads (Pa–Pn), die der Aufgabe zugewiesen werden können, bei dem Versuch, das Einmal-Lesen-Register (210) zu lesen, nachdem es gelöscht wurde, einen Nullwert erhält, der anzeigt, dass dem Verarbeitungsprogramm-Thread (Pa–Pn) derzeit keine Aufgabe zugewiesen werden kann.
  24. Prozessor nach einem der Ansprüche 18 bis 23, wobei das empfangene Netzwerkpaket von einem Video-Access-Controller (13a, 13b) Port empfangen wird.
  25. Prozessor nach einem der Ansprüche 18 bis 24, wobei ein Thread die Verarbeitung an einem Teil eines Pakets ausführt und ein zweiter Thread den Rest eines Pakets verarbeitet,
DE60030767T 1999-12-28 2000-12-08 Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor Expired - Lifetime DE60030767T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US473799 1983-03-09
US09/473,799 US6625654B1 (en) 1999-12-28 1999-12-28 Thread signaling in multi-threaded network processor
PCT/US2000/042716 WO2001048606A2 (en) 1999-12-28 2000-12-08 Allocation of data to threads in multi-threaded network processor

Publications (2)

Publication Number Publication Date
DE60030767D1 DE60030767D1 (de) 2006-10-26
DE60030767T2 true DE60030767T2 (de) 2007-11-08

Family

ID=23881024

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60030767T Expired - Lifetime DE60030767T2 (de) 1999-12-28 2000-12-08 Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor

Country Status (10)

Country Link
US (3) US6625654B1 (de)
EP (1) EP1242883B1 (de)
CN (1) CN100351798C (de)
AT (1) ATE339724T1 (de)
AU (1) AU4311601A (de)
DE (1) DE60030767T2 (de)
HK (1) HK1046050A1 (de)
SG (1) SG145543A1 (de)
TW (1) TW544629B (de)
WO (1) WO2001048606A2 (de)

Families Citing this family (213)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2728559B1 (fr) * 1994-12-23 1997-01-31 Saint Gobain Vitrage Substrats en verre revetus d'un empilement de couches minces a proprietes de reflexion dans l'infrarouge et/ou dans le domaine du rayonnement solaire
US7266725B2 (en) * 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19651075A1 (de) * 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) * 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
ATE243390T1 (de) * 1996-12-27 2003-07-15 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen umladen von datenflussprozessoren (dfps) sowie bausteinen mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen (fpgas, dpgas, o.dgl.)
DE19654846A1 (de) * 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) * 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US7065050B1 (en) * 1998-07-08 2006-06-20 Broadcom Corporation Apparatus and method for controlling data flow in a network switch
US20030095967A1 (en) * 1999-01-25 2003-05-22 Mackay Fabienne BAFF, inhibitors thereof and their use in the modulation of B-cell response and treatment of autoimmune disorders
AU5805300A (en) 1999-06-10 2001-01-02 Pact Informationstechnologie Gmbh Sequence partitioning in cell structures
US7017020B2 (en) * 1999-07-16 2006-03-21 Broadcom Corporation Apparatus and method for optimizing access to memory
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6631430B1 (en) * 1999-12-28 2003-10-07 Intel Corporation Optimizations to receive packet status from fifo bus
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US7480706B1 (en) * 1999-12-30 2009-01-20 Intel Corporation Multi-threaded round-robin receive for fast network port
US6952824B1 (en) * 1999-12-30 2005-10-04 Intel Corporation Multi-threaded sequenced receive for fast network port stream of packets
EP1342158B1 (de) 2000-06-13 2010-08-04 Richter, Thomas Pipeline ct-protokolle und -kommunikation
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7595659B2 (en) * 2000-10-09 2009-09-29 Pact Xpp Technologies Ag Logic cell array and bus system
US8058899B2 (en) * 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US7051330B1 (en) * 2000-11-21 2006-05-23 Microsoft Corporation Generic application server and method of operation therefor
US7131125B2 (en) * 2000-12-22 2006-10-31 Nortel Networks Limited Method and system for sharing a computer resource between instruction threads of a multi-threaded process
US7444531B2 (en) * 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7844796B2 (en) * 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US20070299993A1 (en) * 2001-03-05 2007-12-27 Pact Xpp Technologies Ag Method and Device for Treating and Processing Data
US9037807B2 (en) * 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US20090300262A1 (en) * 2001-03-05 2009-12-03 Martin Vorbach Methods and devices for treating and/or processing data
US20090210653A1 (en) * 2001-03-05 2009-08-20 Pact Xpp Technologies Ag Method and device for treating and processing data
US7581076B2 (en) * 2001-03-05 2009-08-25 Pact Xpp Technologies Ag Methods and devices for treating and/or processing data
US7657877B2 (en) * 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
US7996827B2 (en) * 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US6868476B2 (en) * 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7225281B2 (en) * 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
US7216204B2 (en) * 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US7434191B2 (en) * 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
JP2003099272A (ja) * 2001-09-20 2003-04-04 Ricoh Co Ltd タスク切替システムと方法およびdspとモデム
EP1436724A4 (de) * 2001-09-28 2007-10-03 Consentry Networks Inc Mehr-thread-paketverarbeitungs-engine zur vorsichtigen paketverarbeitung
US7126952B2 (en) * 2001-09-28 2006-10-24 Intel Corporation Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method
EP1868111A1 (de) * 2001-09-28 2007-12-19 ConSentry Networks, Inc. Multi-threaded Paketverarbeitungsmaschine für zustandsbehaftete Paketverarbeitung
US6904040B2 (en) * 2001-10-05 2005-06-07 International Business Machines Corporaiton Packet preprocessing interface for multiprocessor network handler
US7577822B2 (en) * 2001-12-14 2009-08-18 Pact Xpp Technologies Ag Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization
US7107413B2 (en) * 2001-12-17 2006-09-12 Intel Corporation Write queue descriptor count instruction for high speed queuing
US7895239B2 (en) 2002-01-04 2011-02-22 Intel Corporation Queue arrays in network devices
US7180887B1 (en) * 2002-01-04 2007-02-20 Radisys Patent Properties Routing and forwarding table management for network processor architectures
US6934951B2 (en) * 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
WO2003071418A2 (de) * 2002-01-18 2003-08-28 Pact Xpp Technologies Ag Übersetzungsverfahren
EP1483682A2 (de) * 2002-01-19 2004-12-08 PACT XPP Technologies AG Reconfigurierbarer prozessor
US7610451B2 (en) * 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
US7181594B2 (en) * 2002-01-25 2007-02-20 Intel Corporation Context pipelines
EP2043000B1 (de) 2002-02-18 2011-12-21 Richter, Thomas Bussysteme und Rekonfigurationsverfahren
CA2478007A1 (en) * 2002-03-05 2003-09-12 International Business Machines Corporation Method of prefetching data/instructions related to externally triggered events
US8914590B2 (en) * 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
WO2003081454A2 (de) * 2002-03-21 2003-10-02 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
GB0209670D0 (en) * 2002-04-26 2002-06-05 Easics Nv Efficient packet processing pipelining device and method
US7376950B2 (en) 2002-05-08 2008-05-20 Intel Corporation Signal aggregation
US7269752B2 (en) * 2002-06-04 2007-09-11 Lucent Technologies Inc. Dynamically controlling power consumption within a network node
US20030231627A1 (en) * 2002-06-04 2003-12-18 Rajesh John Arbitration logic for assigning input packet to available thread of a multi-threaded multi-engine network processor
US20030233485A1 (en) * 2002-06-13 2003-12-18 Mircrosoft Corporation Event queue
JP2004062446A (ja) * 2002-07-26 2004-02-26 Ibm Japan Ltd 情報収集システム、アプリケーションサーバ、情報収集方法、およびプログラム
US7657861B2 (en) * 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US7124196B2 (en) * 2002-08-07 2006-10-17 Intel Corporation Processing a network packet using queues
AU2003286131A1 (en) * 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US20110238948A1 (en) * 2002-08-07 2011-09-29 Martin Vorbach Method and device for coupling a data processing unit and a data processing array
US7577816B2 (en) * 2003-08-18 2009-08-18 Cray Inc. Remote translation mechanism for a multinode system
JP4388895B2 (ja) 2002-09-06 2009-12-24 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト リコンフィギュアラブルなシーケンサ構造
US7627721B2 (en) * 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
US8478811B2 (en) * 2002-10-08 2013-07-02 Netlogic Microsystems, Inc. Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US7961723B2 (en) * 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US7334086B2 (en) 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US8176298B2 (en) * 2002-10-08 2012-05-08 Netlogic Microsystems, Inc. Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline
US9088474B2 (en) * 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US7346757B2 (en) 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US7924828B2 (en) 2002-10-08 2011-04-12 Netlogic Microsystems, Inc. Advanced processor with mechanism for fast packet queuing operations
US20050033889A1 (en) * 2002-10-08 2005-02-10 Hass David T. Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip
US7984268B2 (en) * 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US8015567B2 (en) 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US7039914B2 (en) 2003-03-07 2006-05-02 Cisco Technology, Inc. Message processing in network forwarding engine by tracking order of assigned thread in order group
DE112004000026D2 (de) * 2003-04-04 2006-06-14 Pact Xpp Technologies Ag Verfahren und Vorrichtung für die Datenverarbeitung
US7500239B2 (en) * 2003-05-23 2009-03-03 Intel Corporation Packet processing system
EP1634182A2 (de) * 2003-06-17 2006-03-15 PACT XPP Technologies AG Datenverarbeitungseinrichtung und verfahren
JP4432388B2 (ja) * 2003-08-12 2010-03-17 株式会社日立製作所 入出力制御装置
US8307194B1 (en) 2003-08-18 2012-11-06 Cray Inc. Relaxed memory consistency model
US7735088B1 (en) * 2003-08-18 2010-06-08 Cray Inc. Scheduling synchronization of programs running as streams on multiple processors
US7743223B2 (en) * 2003-08-18 2010-06-22 Cray Inc. Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system
US7421565B1 (en) 2003-08-18 2008-09-02 Cray Inc. Method and apparatus for indirectly addressed vector load-add -store across multi-processors
EP1676208A2 (de) * 2003-08-28 2006-07-05 PACT XPP Technologies AG Datenverarbeitungseinrichtung und verfahren
US7376952B2 (en) * 2003-09-15 2008-05-20 Intel Corporation Optimizing critical section microblocks by controlling thread execution
US20050096999A1 (en) * 2003-11-05 2005-05-05 Chicago Mercantile Exchange Trade engine processing of mass quote messages and resulting production of market data
US7213099B2 (en) * 2003-12-30 2007-05-01 Intel Corporation Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches
JP2005276165A (ja) * 2004-02-27 2005-10-06 Sony Corp 情報処理装置、ネットワークシステム状況呈示方法およびコンピュータプログラム
JP4586526B2 (ja) 2004-02-27 2010-11-24 ソニー株式会社 情報処理装置、情報処理方法、情報処理システムおよび情報処理用プログラム
US20060048156A1 (en) * 2004-04-02 2006-03-02 Lim Soon C Unified control store
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US7185178B1 (en) 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
US7178005B1 (en) 2004-06-30 2007-02-13 Sun Microsystems, Inc. Efficient implementation of timers in a multithreaded processor
US7370243B1 (en) 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7890734B2 (en) 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7343474B1 (en) 2004-06-30 2008-03-11 Sun Microsystems, Inc. Minimal address state in a fine grain multithreaded processor
US7523330B2 (en) * 2004-06-30 2009-04-21 Sun Microsystems, Inc. Thread-based clock enabling in a multi-threaded processor
US7774393B1 (en) 2004-06-30 2010-08-10 Oracle America, Inc. Apparatus and method for integer to floating-point format conversion
US8095778B1 (en) 2004-06-30 2012-01-10 Open Computing Trust I & II Method and system for sharing functional units of a multithreaded processor
US20060009265A1 (en) * 2004-06-30 2006-01-12 Clapper Edward O Communication blackout feature
US7543132B1 (en) 2004-06-30 2009-06-02 Sun Microsystems, Inc. Optimizing hardware TLB reload performance in a highly-threaded processor with multiple page sizes
US7747771B1 (en) 2004-06-30 2010-06-29 Oracle America, Inc. Register access protocol in a multihreaded multi-core processor
US7434000B1 (en) 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US7437538B1 (en) 2004-06-30 2008-10-14 Sun Microsystems, Inc. Apparatus and method for reducing execution latency of floating point operations having special case operands
US7519796B1 (en) 2004-06-30 2009-04-14 Sun Microsystems, Inc. Efficient utilization of a store buffer using counters
US7383403B1 (en) 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers in a fine grain multithreaded processor
US7373489B1 (en) 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US7353364B1 (en) 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units
US7861063B1 (en) 2004-06-30 2010-12-28 Oracle America, Inc. Delay slot handling in a processor
US7941642B1 (en) 2004-06-30 2011-05-10 Oracle America, Inc. Method for selecting between divide instructions associated with respective threads in a multi-threaded processor
US8225034B1 (en) 2004-06-30 2012-07-17 Oracle America, Inc. Hybrid instruction buffer
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7426630B1 (en) 2004-06-30 2008-09-16 Sun Microsystems, Inc. Arbitration of window swap operations
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US7478225B1 (en) 2004-06-30 2009-01-13 Sun Microsystems, Inc. Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor
US7216216B1 (en) 2004-06-30 2007-05-08 Sun Microsystems, Inc. Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window
US7366829B1 (en) 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US7676655B2 (en) * 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US7533248B1 (en) 2004-06-30 2009-05-12 Sun Microsystems, Inc. Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
GB0420442D0 (en) * 2004-09-14 2004-10-20 Ignios Ltd Debug in a multicore architecture
US9038070B2 (en) 2004-09-14 2015-05-19 Synopsys, Inc. Debug in a multicore architecture
US7277990B2 (en) 2004-09-30 2007-10-02 Sanjeev Jain Method and apparatus providing efficient queue descriptor memory access
US20060067348A1 (en) * 2004-09-30 2006-03-30 Sanjeev Jain System and method for efficient memory access of queue control data structures
US7765547B2 (en) * 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US8037250B1 (en) 2004-12-09 2011-10-11 Oracle America, Inc. Arbitrating cache misses in a multithreaded/multi-core processor
US8756605B2 (en) * 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US7418543B2 (en) 2004-12-21 2008-08-26 Intel Corporation Processor having content addressable memory with command ordering
US7555630B2 (en) 2004-12-21 2009-06-30 Intel Corporation Method and apparatus to provide efficient communication between multi-threaded processing elements in a processor unit
US20060140203A1 (en) * 2004-12-28 2006-06-29 Sanjeev Jain System and method for packet queuing
US7467256B2 (en) * 2004-12-28 2008-12-16 Intel Corporation Processor having content addressable memory for block-based queue structures
US8279886B2 (en) 2004-12-30 2012-10-02 Intel Corporation Dataport and methods thereof
US7703094B2 (en) * 2004-12-30 2010-04-20 Intel Corporation Adaptive and dynamic filtering of threaded programs
US7477641B2 (en) * 2004-12-30 2009-01-13 Intel Corporation Providing access to data shared by packet processing threads
US7430643B2 (en) * 2004-12-30 2008-09-30 Sun Microsystems, Inc. Multiple contexts for efficient use of translation lookaside buffer
US7480781B2 (en) * 2004-12-30 2009-01-20 Intel Corporation Apparatus and method to merge and align data from distributed memory controllers
US20090031104A1 (en) * 2005-02-07 2009-01-29 Martin Vorbach Low Latency Massive Parallel Data Processing Device
US7992144B1 (en) 2005-04-04 2011-08-02 Oracle America, Inc. Method and apparatus for separating and isolating control of processing entities in a network interface
US7987306B2 (en) * 2005-04-04 2011-07-26 Oracle America, Inc. Hiding system latencies in a throughput networking system
US7529245B1 (en) 2005-04-04 2009-05-05 Sun Microsystems, Inc. Reorder mechanism for use in a relaxed order input/output system
US7443878B2 (en) * 2005-04-04 2008-10-28 Sun Microsystems, Inc. System for scaling by parallelizing network workload
US7415035B1 (en) 2005-04-04 2008-08-19 Sun Microsystems, Inc. Device driver access method into a virtualized network interface
US7779164B2 (en) * 2005-04-04 2010-08-17 Oracle America, Inc. Asymmetrical data processing partition
US7415034B2 (en) * 2005-04-04 2008-08-19 Sun Microsystems, Inc. Virtualized partitionable shared network interface
US7865624B1 (en) 2005-04-04 2011-01-04 Oracle America, Inc. Lookup mechanism based on link layer semantics
US8762595B1 (en) 2005-04-05 2014-06-24 Oracle America, Inc. Method for sharing interfaces among multiple domain environments with enhanced hooks for exclusiveness
US8510491B1 (en) 2005-04-05 2013-08-13 Oracle America, Inc. Method and apparatus for efficient interrupt event notification for a scalable input/output device
US7843926B1 (en) 2005-04-05 2010-11-30 Oracle America, Inc. System for providing virtualization of network interfaces at various layers
US7567567B2 (en) * 2005-04-05 2009-07-28 Sun Microsystems, Inc. Network system including packet classification for partitioned resources
US7353360B1 (en) 2005-04-05 2008-04-01 Sun Microsystems, Inc. Method for maximizing page locality
US7889734B1 (en) 2005-04-05 2011-02-15 Oracle America, Inc. Method and apparatus for arbitrarily mapping functions to preassigned processing entities in a network system
US7664127B1 (en) 2005-04-05 2010-02-16 Sun Microsystems, Inc. Method for resolving mutex contention in a network system
US20060236011A1 (en) * 2005-04-15 2006-10-19 Charles Narad Ring management
US7920584B2 (en) * 2005-05-04 2011-04-05 Arm Limited Data processing system
US7630388B2 (en) * 2005-05-04 2009-12-08 Arm Limited Software defined FIFO memory for storing a set of data from a stream of source data
WO2006117504A1 (en) * 2005-05-04 2006-11-09 Arm Limited Use of a data engine within a data processing apparatus
US20070044103A1 (en) * 2005-07-25 2007-02-22 Mark Rosenbluth Inter-thread communication of lock protected data
US7853951B2 (en) * 2005-07-25 2010-12-14 Intel Corporation Lock sequencing to reorder and grant lock requests from multiple program threads
US20070124728A1 (en) * 2005-11-28 2007-05-31 Mark Rosenbluth Passing work between threads
US20070157030A1 (en) * 2005-12-30 2007-07-05 Feghali Wajdi K Cryptographic system component
EP1974265A1 (de) * 2006-01-18 2008-10-01 PACT XPP Technologies AG Hardwaredefinitionsverfahren
US20070192766A1 (en) * 2006-02-13 2007-08-16 Ketan Padalia Apparatus and methods for parallelizing integrated circuit computer-aided design software
US20070245074A1 (en) * 2006-03-30 2007-10-18 Rosenbluth Mark B Ring with on-chip buffer for efficient message passing
US20080004876A1 (en) * 2006-06-30 2008-01-03 Chuang He Non-enrolled continuous dictation
US7711807B2 (en) * 2006-07-27 2010-05-04 Intel Corporation Selective filtering of exception data units
US20080134189A1 (en) * 2006-10-05 2008-06-05 Holt John M Job scheduling amongst multiple computers
US9794378B2 (en) 2006-11-08 2017-10-17 Standard Microsystems Corporation Network traffic controller (NTC)
AU2008213820B2 (en) 2007-02-06 2013-09-05 Reneo, Inc. A resource tracking method and apparatus
US8898438B2 (en) * 2007-03-14 2014-11-25 XMOS Ltd. Processor architecture for use in scheduling threads in response to communication activity
US7680909B2 (en) * 2007-03-21 2010-03-16 Ittiam Systems (P) Ltd. Method for configuration of a processing unit
WO2008137616A1 (en) * 2007-05-04 2008-11-13 Nuance Communications, Inc. Multi-class constrained maximum likelihood linear regression
US7958333B2 (en) * 2007-05-30 2011-06-07 XMOS Ltd. Processor with memory access stage adapted to fetch an instruction of a thread when no memory access operation is detected
US8059650B2 (en) * 2007-10-31 2011-11-15 Aruba Networks, Inc. Hardware based parallel processing cores with multiple threads and multiple pipeline stages
US20090109967A1 (en) * 2007-10-31 2009-04-30 Anirban Banerjee Method and system for remotely configuring an ethernet switch using ethernet packets
US7926013B2 (en) * 2007-12-31 2011-04-12 Intel Corporation Validating continuous signal phase matching in high-speed nets routed as differential pairs
US9063778B2 (en) * 2008-01-09 2015-06-23 Microsoft Technology Licensing, Llc Fair stateless model checking
US9596324B2 (en) * 2008-02-08 2017-03-14 Broadcom Corporation System and method for parsing and allocating a plurality of packets to processor core threads
CN101237346B (zh) * 2008-02-29 2012-01-11 中兴通讯股份有限公司 网络处理器及网络处理器的读写串口的方法
US8024719B2 (en) 2008-11-03 2011-09-20 Advanced Micro Devices, Inc. Bounded hash table sorting in a dynamic program profiling system
US20100115494A1 (en) * 2008-11-03 2010-05-06 Gorton Jr Richard C System for dynamic program profiling
US8478948B2 (en) * 2008-12-04 2013-07-02 Oracle America, Inc. Method and system for efficient tracing and profiling of memory accesses during program execution
US8667253B2 (en) 2010-08-04 2014-03-04 International Business Machines Corporation Initiating assist thread upon asynchronous event for processing simultaneously with controlling thread and updating its running status in status register
US8713290B2 (en) * 2010-09-20 2014-04-29 International Business Machines Corporation Scaleable status tracking of multiple assist hardware threads
US8793474B2 (en) 2010-09-20 2014-07-29 International Business Machines Corporation Obtaining and releasing hardware threads without hypervisor involvement
US8732711B2 (en) * 2010-09-24 2014-05-20 Nvidia Corporation Two-level scheduler for multi-threaded processing
US9858241B2 (en) * 2013-11-05 2018-01-02 Oracle International Corporation System and method for supporting optimized buffer utilization for packet processing in a networking device
US8634415B2 (en) 2011-02-16 2014-01-21 Oracle International Corporation Method and system for routing network traffic for a blade server
GB2495959A (en) 2011-10-26 2013-05-01 Imagination Tech Ltd Multi-threaded memory access processor
US8984183B2 (en) 2011-12-16 2015-03-17 Nvidia Corporation Signaling, ordering, and execution of dynamically generated tasks in a processing system
US8625422B1 (en) 2012-12-20 2014-01-07 Unbound Networks Parallel processing using multi-core processor
US9563561B2 (en) * 2013-06-25 2017-02-07 Intel Corporation Initiation of cache flushes and invalidations on graphics processors
CN105706058B (zh) * 2013-11-05 2019-09-20 甲骨文国际公司 用于支持网络环境中高效的分组处理模型和用于分组处理的优化的缓冲区利用的系统和方法
US9489327B2 (en) 2013-11-05 2016-11-08 Oracle International Corporation System and method for supporting an efficient packet processing model in a network environment
CN103955445B (zh) * 2014-04-30 2017-04-05 华为技术有限公司 一种数据处理方法、处理器及数据处理设备
CN104899006B (zh) * 2015-05-25 2018-03-30 中孚信息股份有限公司 一种多系统平台的多进程并行处理方法
CN105183553A (zh) * 2015-10-31 2015-12-23 山东智洋电气股份有限公司 软总线程序并发资源分配方法
US10706101B2 (en) 2016-04-14 2020-07-07 Advanced Micro Devices, Inc. Bucketized hash tables with remap entries
US10838656B2 (en) 2016-12-20 2020-11-17 Mediatek Inc. Parallel memory access to on-chip memory containing regions of different addressing schemes by threads executed on parallel processing units
CN111459630B (zh) * 2020-03-24 2023-12-08 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 采用硬件多线程机制的网络处理器

Family Cites Families (165)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3373408A (en) 1965-04-16 1968-03-12 Rca Corp Computer capable of switching between programs without storage and retrieval of the contents of operation registers
US3478322A (en) 1967-05-23 1969-11-11 Ibm Data processor employing electronically changeable control storage
BE795789A (fr) 1972-03-08 1973-06-18 Burroughs Corp Microprogramme comportant une micro-instruction de recouvrement
IT986411B (it) 1973-06-05 1975-01-30 Olivetti E C Spa Sistema per trasferire il control lo delle elaborazioni da un primo livello prioritario ad un secondo livello prioritario
US4016548A (en) 1975-04-11 1977-04-05 Sperry Rand Corporation Communication multiplexer module
CH584488A5 (de) 1975-05-05 1977-01-31 Ibm
US4075691A (en) 1975-11-06 1978-02-21 Bunker Ramo Corporation Communication control unit
US4130890A (en) 1977-06-08 1978-12-19 Itt Industries, Inc. Integrated DDC memory with bitwise erase
JPS56164464A (en) 1980-05-21 1981-12-17 Tatsuo Nogi Parallel processing computer
US4400770A (en) 1980-11-10 1983-08-23 International Business Machines Corporation Cache synonym detection and handling means
CA1179069A (en) 1981-04-10 1984-12-04 Yasushi Fukunaga Data transmission apparatus for a multiprocessor system
US4831358A (en) 1982-12-21 1989-05-16 Texas Instruments Incorporated Communications system employing control line minimization
JPS6031648A (ja) * 1983-07-29 1985-02-18 Sharp Corp マルチ・タスク制御方法
US4745544A (en) 1985-12-12 1988-05-17 Texas Instruments Incorporated Master/slave sequencing processor with forced I/O
US4788640A (en) 1986-01-17 1988-11-29 Intel Corporation Priority logic system
US5297260A (en) 1986-03-12 1994-03-22 Hitachi, Ltd. Processor having a plurality of CPUS with one CPU being normally connected to common bus
US4866664A (en) 1987-03-09 1989-09-12 Unisys Corporation Intercomputer communication control apparatus & method
US5142683A (en) 1987-03-09 1992-08-25 Unisys Corporation Intercomputer communication control apparatus and method
US5115507A (en) 1987-12-23 1992-05-19 U.S. Philips Corp. System for management of the priorities of access to a memory and its application
FR2625340B1 (fr) 1987-12-23 1990-05-04 Labo Electronique Physique Systeme graphique avec controleur graphique et controleur de dram
DE68913629T2 (de) 1988-03-14 1994-06-16 Unisys Corp Satzverriegelungsprozessor für vielfachverarbeitungsdatensystem.
US5155854A (en) 1989-02-03 1992-10-13 Digital Equipment Corporation System for arbitrating communication requests using multi-pass control unit based on availability of system resources
US5155831A (en) 1989-04-24 1992-10-13 International Business Machines Corporation Data processing system with fast queue store interposed between store-through caches and a main memory
US5168555A (en) 1989-09-06 1992-12-01 Unisys Corporation Initial program load control
US5263169A (en) 1989-11-03 1993-11-16 Zoran Corporation Bus arbitration and resource management for concurrent vector signal processor architecture
DE3942977A1 (de) 1989-12-23 1991-06-27 Standard Elektrik Lorenz Ag Verfahren zum wiederherstellen der richtigen zellfolge, insbesondere in einer atm-vermittlungsstelle, sowie ausgangseinheit hierfuer
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
DE69132495T2 (de) 1990-03-16 2001-06-13 Texas Instruments Inc Verteilter Verarbeitungsspeicher
US5390329A (en) 1990-06-11 1995-02-14 Cray Research, Inc. Responding to service requests using minimal system-side context in a multiprocessor environment
US5404482A (en) 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills
US5347648A (en) 1990-06-29 1994-09-13 Digital Equipment Corporation Ensuring write ordering under writeback cache error conditions
US5193167A (en) * 1990-06-29 1993-03-09 Digital Equipment Corporation Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system
US5432918A (en) 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
AU630299B2 (en) 1990-07-10 1992-10-22 Fujitsu Limited A data gathering/scattering system in a parallel computer
US5367678A (en) 1990-12-06 1994-11-22 The Regents Of The University Of California Multiprocessor system having statically determining resource allocation schedule at compile time and the using of static schedule with processor signals to control the execution time dynamically
KR960001273B1 (ko) * 1991-04-30 1996-01-25 가부시키가이샤 도시바 단일칩 마이크로컴퓨터
US5255239A (en) 1991-08-13 1993-10-19 Cypress Semiconductor Corporation Bidirectional first-in-first-out memory device with transparent and user-testable capabilities
US5623489A (en) 1991-09-26 1997-04-22 Ipc Information Systems, Inc. Channel allocation system for distributed digital switching network
US5392412A (en) 1991-10-03 1995-02-21 Standard Microsystems Corporation Data communication controller for use with a single-port data packet buffer
GB2260429B (en) 1991-10-11 1995-05-24 Intel Corp Versatile cache memory
US5392391A (en) 1991-10-18 1995-02-21 Lsi Logic Corporation High performance graphics applications controller
EP0538817B1 (de) 1991-10-21 2001-07-25 Kabushiki Kaisha Toshiba Hochgeschwindigkeitsprozessor zum fähiger Abhandeln mehrerer Unterbrechungen
US5452437A (en) 1991-11-18 1995-09-19 Motorola, Inc. Methods of debugging multiprocessor system
US5442797A (en) 1991-12-04 1995-08-15 Casavant; Thomas L. Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging
JP2823767B2 (ja) 1992-02-03 1998-11-11 松下電器産業株式会社 レジスタファイル
US5459842A (en) 1992-06-26 1995-10-17 International Business Machines Corporation System for combining data from multiple CPU write requests via buffers and using read-modify-write operation to write the combined data to the memory
DE4223600C2 (de) 1992-07-17 1994-10-13 Ibm Mehrprozessor-Computersystem und Verfahren zum Übertragen von Steuerinformationen und Dateninformation zwischen wenigstens zwei Prozessoreinheiten eines Computersystems
US5404484A (en) 1992-09-16 1995-04-04 Hewlett-Packard Company Cache system for reducing memory latency times
ATE188559T1 (de) * 1992-12-23 2000-01-15 Centre Electron Horloger Multi-tasking-steuerungsgerät mit geringem energieverbrauch
US5448702A (en) 1993-03-02 1995-09-05 International Business Machines Corporation Adapters with descriptor queue management capability
DE69429204T2 (de) * 1993-03-26 2002-07-25 Cabletron Systems Inc Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk
US5522069A (en) 1993-04-30 1996-05-28 Zenith Data Systems Corporation Symmetric multiprocessing system with unified environment and distributed system functions
CA2122182A1 (en) 1993-05-20 1994-11-21 Rene Leblanc Method for rapid prototyping of programming problems
JPH0740746A (ja) 1993-07-29 1995-02-10 Aisin Seiki Co Ltd 車両用サンルーフ装置のチエツク機構
CA2107299C (en) 1993-09-29 1997-02-25 Mehrad Yasrebi High performance machine for switched communications in a heterogenous data processing network gateway
US5446736A (en) * 1993-10-07 1995-08-29 Ast Research, Inc. Method and apparatus for connecting a node to a wireless network using a standard protocol
US5450351A (en) 1993-11-19 1995-09-12 International Business Machines Corporation Content addressable memory implementation with random access memory
US5740402A (en) 1993-12-15 1998-04-14 Silicon Graphics, Inc. Conflict resolution in interleaved memory systems with multiple parallel accesses
US5490204A (en) 1994-03-01 1996-02-06 Safco Corporation Automated quality assessment system for cellular networks
US5835755A (en) 1994-04-04 1998-11-10 At&T Global Information Solutions Company Multi-processor computer system for operating parallel client/server database processes
JP3547482B2 (ja) * 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
US5542088A (en) 1994-04-29 1996-07-30 Intergraph Corporation Method and apparatus for enabling control of task execution
US5721870A (en) 1994-05-25 1998-02-24 Nec Corporation Lock control for a shared main storage data processing system
US5544236A (en) 1994-06-10 1996-08-06 At&T Corp. Access to unsubscribed features
US5574922A (en) 1994-06-17 1996-11-12 Apple Computer, Inc. Processor with sequences of processor instructions for locked memory updates
US5781774A (en) 1994-06-29 1998-07-14 Intel Corporation Processor having operating modes for an upgradeable multiprocessor computer system
JP3810449B2 (ja) 1994-07-20 2006-08-16 富士通株式会社 キュー装置
US5568476A (en) 1994-10-26 1996-10-22 3Com Corporation Method and apparatus for avoiding packet loss on a CSMA/CD-type local area network using receive-sense-based jam signal
JP3169779B2 (ja) * 1994-12-19 2001-05-28 日本電気株式会社 マルチスレッドプロセッサ
US5550816A (en) 1994-12-29 1996-08-27 Storage Technology Corporation Method and apparatus for virtual switching
US5784712A (en) 1995-03-01 1998-07-21 Unisys Corporation Method and apparatus for locally generating addressing information for a memory access
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
US5649157A (en) 1995-03-30 1997-07-15 Hewlett-Packard Co. Memory controller with priority queues
US5886992A (en) 1995-04-14 1999-03-23 Valtion Teknillinen Tutkimuskeskus Frame synchronized ring system and method
US5758184A (en) * 1995-04-24 1998-05-26 Microsoft Corporation System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads
US5592622A (en) 1995-05-10 1997-01-07 3Com Corporation Network intermediate system with message passing architecture
JPH08320797A (ja) 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
US5828746A (en) 1995-06-07 1998-10-27 Lucent Technologies Inc. Telecommunications network
US5828863A (en) 1995-06-09 1998-10-27 Canon Information Systems, Inc. Interface device connected between a LAN and a printer for outputting formatted debug information about the printer to the printer
US5613071A (en) 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system
US5680641A (en) 1995-08-16 1997-10-21 Sharp Microelectronics Technology, Inc. Multiple register bank system for concurrent I/O operation in a CPU datapath
US5940612A (en) 1995-09-27 1999-08-17 International Business Machines Corporation System and method for queuing of tasks in a multiprocessing system
US5689566A (en) * 1995-10-24 1997-11-18 Nguyen; Minhtam C. Network with secure communications sessions
US5809530A (en) 1995-11-13 1998-09-15 Motorola, Inc. Method and apparatus for processing multiple cache misses using reload folding and store merging
KR0150072B1 (ko) 1995-11-30 1998-10-15 양승택 병렬처리 컴퓨터 시스템에서의 메모리 데이타 경로 제어장치
US5796413A (en) 1995-12-06 1998-08-18 Compaq Computer Corporation Graphics controller utilizing video memory to provide macro command capability and enhanched command buffering
US5940866A (en) 1995-12-13 1999-08-17 International Business Machines Corporation Information handling system having a local address queue for local storage of command blocks transferred from a host processing side
US5850530A (en) 1995-12-18 1998-12-15 International Business Machines Corporation Method and apparatus for improving bus efficiency by enabling arbitration based upon availability of completion data
US5699537A (en) 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions
DE19681186D2 (de) * 1995-12-29 1999-03-11 Tixi Com Gmbh Verfahren und Mikrocomputersystem zur automatischen, sicheren und direkten Datenübertragung
US6201807B1 (en) * 1996-02-27 2001-03-13 Lucent Technologies Real-time hardware method and apparatus for reducing queue processing
US5761507A (en) 1996-03-05 1998-06-02 International Business Machines Corporation Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling
US5809235A (en) 1996-03-08 1998-09-15 International Business Machines Corporation Object oriented network event management framework
US5764915A (en) 1996-03-08 1998-06-09 International Business Machines Corporation Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack
US5797043A (en) 1996-03-13 1998-08-18 Diamond Multimedia Systems, Inc. System for managing the transfer of data between FIFOs within pool memory and peripherals being programmable with identifications of the FIFOs
US5784649A (en) 1996-03-13 1998-07-21 Diamond Multimedia Systems, Inc. Multi-threaded FIFO pool buffer and bus transfer control system
US6199133B1 (en) * 1996-03-29 2001-03-06 Compaq Computer Corporation Management communication bus for networking devices
KR100219597B1 (ko) 1996-03-30 1999-09-01 윤종용 씨디-롬 드라이브에서의 큐잉 제어 방법
GB2311882B (en) * 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
JP3541335B2 (ja) * 1996-06-28 2004-07-07 富士通株式会社 情報処理装置及び分散処理制御方法
US5937187A (en) 1996-07-01 1999-08-10 Sun Microsystems, Inc. Method and apparatus for execution and preemption control of computer process entities
JPH1049381A (ja) * 1996-07-04 1998-02-20 Internatl Business Mach Corp <Ibm> 複数のデータ処理要求の処理方法及び処理システム、プログラムの実行方法及びシステム
US6023742A (en) * 1996-07-18 2000-02-08 University Of Washington Reconfigurable computing architecture for providing pipelined data paths
US5745913A (en) 1996-08-05 1998-04-28 Exponential Technology, Inc. Multi-processor DRAM controller that prioritizes row-miss requests to stale banks
US5928736A (en) 1996-09-09 1999-07-27 Raytheon Company Composite structure having integrated aperture and method for its preparation
US5812868A (en) 1996-09-16 1998-09-22 Motorola Inc. Method and apparatus for selecting a register file in a data processing system
US6072781A (en) * 1996-10-22 2000-06-06 International Business Machines Corporation Multi-tasking adapter for parallel network applications
US5860158A (en) 1996-11-15 1999-01-12 Samsung Electronics Company, Ltd. Cache control unit with a cache request transaction-oriented protocol
US5905876A (en) 1996-12-16 1999-05-18 Intel Corporation Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system
US6212542B1 (en) * 1996-12-16 2001-04-03 International Business Machines Corporation Method and system for executing a program within a multiscalar processor by processing linked thread descriptors
US5854922A (en) 1997-01-16 1998-12-29 Ford Motor Company Micro-sequencer apparatus and method of combination state machine and instruction memory
US6256115B1 (en) * 1997-02-21 2001-07-03 Worldquest Network, Inc. Facsimile network
US6269391B1 (en) * 1997-02-24 2001-07-31 Novell, Inc. Multi-processor scheduling kernel
US5742587A (en) 1997-02-28 1998-04-21 Lanart Corporation Load balancing port switching hub
US5905889A (en) 1997-03-20 1999-05-18 International Business Machines Corporation Resource management system using next available integer from an integer pool and returning the integer thereto as the next available integer upon completion of use
WO1998043193A2 (en) * 1997-03-21 1998-10-01 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
US5918235A (en) * 1997-04-04 1999-06-29 Hewlett-Packard Company Object surrogate with active computation and probablistic counter
US6535878B1 (en) * 1997-05-02 2003-03-18 Roxio, Inc. Method and system for providing on-line interactivity over a server-client network
US5983274A (en) * 1997-05-08 1999-11-09 Microsoft Corporation Creation and use of control information associated with packetized network data by protocol drivers and device drivers
US6182177B1 (en) * 1997-06-13 2001-01-30 Intel Corporation Method and apparatus for maintaining one or more queues of elements such as commands using one or more token queues
US6092158A (en) * 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
US6067585A (en) * 1997-06-23 2000-05-23 Compaq Computer Corporation Adaptive interface controller that can operate with segments of different protocol and transmission rates in a single integrated device
US5870597A (en) * 1997-06-25 1999-02-09 Sun Microsystems, Inc. Method for speculative calculation of physical register addresses in an out of order processor
KR100216371B1 (ko) * 1997-06-30 1999-08-16 윤종용 고장 감내형 대용량 ATM 스위치 및 2nXn 다중화스위치에서의 셀프라우팅 방법
US5887134A (en) 1997-06-30 1999-03-23 Sun Microsystems System and method for preserving message order while employing both programmed I/O and DMA operations
US6393483B1 (en) * 1997-06-30 2002-05-21 Adaptec, Inc. Method and apparatus for network interface card load balancing and port aggregation
US6247025B1 (en) * 1997-07-17 2001-06-12 International Business Machines Corporation Locking and unlocking mechanism for controlling concurrent access to objects
US6170051B1 (en) * 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6014729A (en) * 1997-09-29 2000-01-11 Firstpass, Inc. Shared memory arbitration apparatus and method
US6085294A (en) * 1997-10-24 2000-07-04 Compaq Computer Corporation Distributed data dependency stall mechanism
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US5915123A (en) 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
DE69822591T2 (de) * 1997-11-19 2005-03-24 Imec Vzw System und Verfahren zur Kontextumschaltung über vorbestimmte Unterbrechungspunkte
US6360262B1 (en) * 1997-11-24 2002-03-19 International Business Machines Corporation Mapping web server objects to TCP/IP ports
US6070231A (en) * 1997-12-02 2000-05-30 Intel Corporation Method and apparatus for processing memory requests that require coherency transactions
JPH11203860A (ja) * 1998-01-07 1999-07-30 Nec Corp 半導体記憶装置
US6415338B1 (en) * 1998-02-11 2002-07-02 Globespan, Inc. System for writing a data value at a starting address to a number of consecutive locations equal to a segment length identifier
US6223238B1 (en) * 1998-03-31 2001-04-24 Micron Electronics, Inc. Method of peer-to-peer mastering over a computer bus
US6079008A (en) * 1998-04-03 2000-06-20 Patton Electronics Co. Multiple thread multiple data predictive coded parallel processing system and method
KR100280460B1 (ko) * 1998-04-08 2001-02-01 김영환 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
US6092127A (en) * 1998-05-15 2000-07-18 Hewlett-Packard Company Dynamic allocation and reallocation of buffers in links of chained DMA operations by receiving notification of buffer full and maintaining a queue of buffers available
US6373848B1 (en) * 1998-07-28 2002-04-16 International Business Machines Corporation Architecture for a multi-port adapter with a single media access control (MAC)
US6073215A (en) * 1998-08-03 2000-06-06 Motorola, Inc. Data processing system having a data prefetch mechanism and method therefor
US6393026B1 (en) * 1998-09-17 2002-05-21 Nortel Networks Limited Data packet processing system and method for a router
US6366998B1 (en) * 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6347344B1 (en) * 1998-10-14 2002-02-12 Hitachi, Ltd. Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor
US6212611B1 (en) * 1998-11-03 2001-04-03 Intel Corporation Method and apparatus for providing a pipelined memory controller
US6389449B1 (en) * 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US6338078B1 (en) * 1998-12-17 2002-01-08 International Business Machines Corporation System and method for sequencing packets for multiprocessor parallelization in a computer network system
US6466898B1 (en) * 1999-01-12 2002-10-15 Terence Chan Multithreaded, mixed hardware description languages logic simulation on engineering workstations
US6356692B1 (en) * 1999-02-04 2002-03-12 Hitachi, Ltd. Optical module, transmitter, receiver, optical switch, optical communication unit, add-and-drop multiplexing unit, and method for manufacturing the optical module
US6256713B1 (en) * 1999-04-29 2001-07-03 International Business Machines Corporation Bus optimization with read/write coherence including ordering responsive to collisions
US6427196B1 (en) * 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
US6529983B1 (en) * 1999-11-03 2003-03-04 Cisco Technology, Inc. Group and virtual locking mechanism for inter processor synchronization
US6532509B1 (en) * 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) * 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6307789B1 (en) * 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6324624B1 (en) * 1999-12-28 2001-11-27 Intel Corporation Read lock miss control and queue management
US6560667B1 (en) * 1999-12-28 2003-05-06 Intel Corporation Handling contiguous memory references in a multi-queue system
US6952824B1 (en) * 1999-12-30 2005-10-04 Intel Corporation Multi-threaded sequenced receive for fast network port stream of packets
US6584522B1 (en) * 1999-12-30 2003-06-24 Intel Corporation Communication between processors
US6671827B2 (en) * 2000-12-21 2003-12-30 Intel Corporation Journaling for parallel hardware threads in multithreaded processor
US6944850B2 (en) * 2000-12-21 2005-09-13 Intel Corporation Hop method for stepping parallel hardware threads
US6934951B2 (en) * 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section

Also Published As

Publication number Publication date
US20040098496A1 (en) 2004-05-20
DE60030767D1 (de) 2006-10-26
WO2001048606A2 (en) 2001-07-05
EP1242883B1 (de) 2006-09-13
US6625654B1 (en) 2003-09-23
AU4311601A (en) 2001-07-09
EP1242883A2 (de) 2002-09-25
SG145543A1 (en) 2008-09-29
CN100351798C (zh) 2007-11-28
WO2001048606A3 (en) 2002-07-11
TW544629B (en) 2003-08-01
US20020013861A1 (en) 2002-01-31
US7111296B2 (en) 2006-09-19
CN1643499A (zh) 2005-07-20
ATE339724T1 (de) 2006-10-15
HK1046050A1 (en) 2002-12-20

Similar Documents

Publication Publication Date Title
DE60030767T2 (de) Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor
DE60011797T2 (de) Ausführung von mehreren fäden in einem parallelprozessor
DE60015395T2 (de) Speicher, der zwischen verarbeitenden threads geteilt ist
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE112020002754T5 (de) System und verfahren zur erleichterung eines effizienten nachrichtenabgleichs in einer netzwerkschnittstellensteuerung (nic)
DE60006270T2 (de) Parallele prozessorarchitektur
DE69734129T2 (de) Hierarchisches Datenverarbeitungssystem mit symetrischen Multiprozessoren
EP1057117B1 (de) VERFAHREN ZUM HIERARCHISCHEN CACHEN VON KONFIGURATIONSDATEN VON DATENFLUSSPROZESSOREN UND BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALER PROGRAMMIERBARER ZELLSTRUKTUR (FPGAs, DPGAs, o.dgl.)
DE3716229C2 (de) Mikroprozessorchip mit einem Stapelrahmen-Cache
DE602004012106T2 (de) Multikanal-DMA mit gemeinsamem FIFO-Puffer
DE69433293T2 (de) Netzwerkübertragungsverfahren für Systeme mit virtuellem Speicher
DE60037065T2 (de) Übertragungsteuerung mit Naben- und Torachitektur
DE60212626T2 (de) Endknotenunterteilung mittels lokaler identifikatoren
DE112006001590B4 (de) Vorrichtung, Verfahren und System zur Datenverarbeitung auf Transportschichtebene
DE60221030T2 (de) Verfahren, einrichtung und rechnerprogramm für die entkapselung und verkapselung von paketen mit mehreren kopffeldern
DE19983737B3 (de) System zum Neuordnen von Befehlen, die von einer Speichersteuerung zu Speichervorrichtungen ausgegeben werden, unter Verhinderung von Kollision
DE60016283T2 (de) Arbeitsbelastungsverwaltung in einer rechnerumgebung
EP1282862B1 (de) Verteilte speichersteuerung und bandbreitenoptimierung
DE19983745B9 (de) Verwendung von Seitenetikettregistern um einen Zustand von physikalischen Seiten in einer Speichervorrichtung zu verfolgen
DE60316774T2 (de) Verkettung von mehrfadenprozessorkernen zur bearbeitung von datenpaketen
DE112015005597T5 (de) Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE102013017509A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE102013017510A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE112005003204T5 (de) Verfahren und Vorrichtung zum Unterstützen mehrerer Speicherbänke mit einem Speicherblock

Legal Events

Date Code Title Description
8364 No opposition during term of opposition