DE60030767T2 - Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor - Google Patents
Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor Download PDFInfo
- 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
Links
- 238000012545 processing Methods 0.000 claims abstract description 51
- 230000006870 function Effects 0.000 claims abstract description 17
- 238000000034 method Methods 0.000 claims description 36
- 230000008569 process Effects 0.000 claims description 14
- 230000011664 signaling Effects 0.000 claims description 14
- 238000004891 communication Methods 0.000 abstract description 13
- 238000012546 transfer Methods 0.000 description 26
- 230000007246 mechanism Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000003111 delayed effect Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000006855 networking Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Exchange Systems With Centralized Control (AREA)
- Communication Control (AREA)
- Bus Control (AREA)
- Time-Division Multiplex Systems (AREA)
- Small-Scale Networks (AREA)
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 von1 . -
3 ist ein Blockdiagramm einer Mikromaschinen-Funktionseinheit, die in dem Hardware-gestützten Multithread-Prozessor der1 und2 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 von1 , das die bei der Programmthread-Signalgabe verwendete Software darstellt. -
7A –7B 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 Kommunikationssystem10 einen parallelen, Hardware-gestützten Multithread-Prozessor12 . Der Hardware-gestützte Multithread-Prozessor12 ist mit einem Bus wie z.B. einem PCI-(Peripheral Component Interconnect)-Bus14 , einem Speichersystem16 und einem zweiten Bus18 gekoppelt. Das System10 ist besonders für Tasks nützlich, die in parallele Subtasks oder Funktionen gegliedert werden können. Der Hardware-gestützte Multithread-Prozessor12 ist besonders für Tasks nützlich, die bandbreiten- anstatt latenzorientiert sind. Der Hardware-gestützte Multithread-Prozessor12 hat mehrere Mikromaschinen22 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 Zentralsteuerung20 , die beim Laden von Microcode-Control für andere Ressourcen des Hardwaregestützten Multithread-Prozessors12 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 Prozessor20 eine auf Strong Arm® (Arm ist ein Warenzeichen von ARM Limited, Großbritannien) basierende Architektur. Der Universalmikroprozessor20 hat ein Betriebssystem. Durch das Betriebssystem kann der Prozessor20 Funktionen abrufen, um an Mikromaschinen22a –22f zu arbeiten. Der Prozessor20 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 Mikromaschinen22a –22f . Die Mikromaschinen22a –22f 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 Mikromaschinen22a –22f aktiv sein, während zu jedem Zeitpunkt immer nur eine tatsächlich arbeitet. - In einer Ausgestaltung gibt es sechs Mikromaschinen
22a –22f , jeweils mit Kapazitäten zum Verarbeiten von vier Hardware-Programmthreads. Die sechs Mikromaschinen22a –22f arbeiten mit Gemeinschaftsressourcen einschließlich dem Speichersystem16 und den Busschnittstellen24 und28 . Das Speichersystem16 beinhaltet eine SDRAM-(Synchronous Dynamic Random Access Memory)-Steuerung26a und eine SRAM-(Static Random Access Memory)-Steuerung26b . Der SDRAM-Speicher16a und die SDRAM-Steuerung26a werden gewöhnlich zum Verarbeiten großer Datenvolumen verwendet, z.B. zum Verarbeiten von Netzwerknutzlasten von Netzwerkpaketen. Die SRAM-Steuerung26b und der SRAM-Speicher16b werden in einer Vernetzungsimplementation für latenzarme Schnellzugriff-Tasks eingesetzt, z.B. Zugreifen auf Lookup-Tabellen, Speicher für den Kernprozessor20 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-Steuerung26a und die SDRAM-Steuerung26b , 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 MAC13a oder einem Gigabit Ethernet-Gerät13b . Im Allgemeinen kann der Hardware-gestützte Multithread-Prozessor12 als Netzwerkprozessor mit jedem Kommunikationsgeräte- oder Schnittstellentyp verbunden werden, der/die große Datenmengen empfängt/sendet. Der Netzwerkprozessor kann als Router10 in einer Vernetzungsanwendung dienen und Netzwerkpakete auf parallele Weise zwischen Geräten13a ,13b leiten. Mit dem Hardware-gestützten Multithread-Prozessor12 kann jedes Netzwerkpaket unabhängig verarbeitet werden. - Der Prozessor
12 beinhaltet eine Busschnittstelle28 , die den Prozessor mit dem zweiten Bus18 verbindet. Die Busschnittstelle28 koppelt in einer Ausgestaltung den Prozessor12 mit dem so genannten FBUS18 (FIFO-Bus). Die FBUS-Schnittstelle28 ist verantwortlich für das Steuern und Verbinden des Prozessors12 mit dem FBUS18 . Der FBUS18 ist ein 64 Bit breiter FIFO-Bus, der als Schnittstelle zu MAC-(Media Access Controller)-Geräten verwendet wird. Der Prozessor12 beinhaltet eine zweite Schnittstelle, z.B. eine PCI-Busschnittstelle24 , die andere auf dem PCI14 Bus befindliche Systemkomponenten mit dem Prozessor12 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 Prozessor12 die Bandbreite von mit dem Prozessor12 gekoppelten externen Bussen übersteigt. Der Prozessor12 beinhaltet einen internen Kernprozessorbus32 , z.B. einen ASB-Bus (Advanced System Bus), der den Prozessorkern20 mit den Speichersteuerungen26a ,26b und einem nachfolgend beschriebenen ASB-Umsetzer30 koppelt. Der ASB-Bus ist eine Teilmenge des so genannten AMBA-Busses, der mit dem Strong Arm Prozessorkern verwendet wird. Der Prozessor12 beinhaltet auch einen Privatbus34 , der die Mikromaschineneinheiten mit der SRAM-Steuerung26b , dem ASB-Umsetzer30 und der FBUS-Schnittstelle28 koppelt. Ein Speicherbus38 koppelt die Speichersteuerung26a ,26b mit den Busschnittstellen24 und28 und dem Speichersystem16 einschließlich dem für Boot-Operationen usw. verwendeten Flashrom16c . - Gemäß
2 beinhaltet jede der Mikromaschinen22a –22f einen Zuteiler, der Flags untersucht, um die verfügbaren Programmthreads zu ermitteln, an denen zu arbeiten ist. Jeder Programmthread von jeder der Mikromaschinen22a –22f kann auf die SDRAM-Steuerung26a , die SDRAM-Steuerung26b und die FBUS-Schnittstelle28 zugreifen. Die SDRAM-Steuerung26a und die SDRAM-Steuerung26b 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 Prozessor12 Speicherreferenzsortierung ausführen. Speicherreferenzsortierung reduziert Totzeiten oder Blasen, die bei Zugriffen auf SRAM auftreten. Speicherreferenzsortierung ermöglicht es dem Prozessor12 , 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 Speichersteuerung26b 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 Prozessor12 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-Schnittstelle28 beinhaltet auch eine Steuerung28a , die eine Kopfverarbeitung von eingehenden Paketen vom FBUS18 ausführt. Die Steuerung28a 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 Prozessorkern20 gesendet. Die FBUS-Schnittstelle28 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-Schnittstelle28 bietet die Fähigkeit, große Datenmengen mit einer Reihe von Ein- und Ausgabe-FIFOs29a –29b einzugeben. Von den FIFOs29a –29b rufen die Mikromaschinen22a –22f Daten von der SDRAM-Steuerung26a ab oder weisen sie an, Daten von einem Empfangs-FIFO, in dem Daten von einem Gerät auf dem Bus18 angekommen sind, in die FBUS-Schnittstelle28 zu verlegen. Die Daten können über einen direkten Speicherzugriff durch die Speichersteuerung26a zum SDRAM-Speicher16a gesendet werden. Ebenso können die Mikromaschinen Daten vom SDRAM26a zur Schnittstelle28 , hinaus zum FBUS18 , über die FBUS-Schnittstelle28 leiten. - Datenfunktionen werden unter den Mikrosteuerungen verteilt. Konnektivität zum SRAM
26a , SDRAM26b und FBUS28 erfolgt über Befehlsanforderungen. Eine Befehlsanforderung kann eine Speicheranforderung oder eine FBUS-Anforderung sein. So kann eine Befehlsanforderung beispielsweise Daten von einem in einer Mikromaschine22a 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 Mikromaschinen22a –22f 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 Mikromaschinen22a –22f . - Der Kernprozessor
20 kann auch auf die Gemeinschaftsressourcen zugreifen. Der Kernprozessor20 hat eine direkte Kommunikation mit der SDRAM-Steuerung26a zur Busschnittstelle24 und zur SRAM-Steueurung26b über den Bus32 . Zum Zugreifen auf die Mikromaschinen22a –22f und zum Übertragen von Registern, die sich in beliebigen der Mikromaschinen22a –22f befinden, greift der Kernprozessor20 mittels des ASB-Umsetzers30 über den Bus34 auf die Mikromaschinen22a –22f zu. Der ASB-Umsetzer30 führt eine Adressumsetzung zwischen FBUS-Mikromaschinen-Transferregisterorten und Kernprozessoradressen (d.h. ASB-Bus) aus, so dass der Kernprozessor20 auf Register zugreifen kann, die zu den Mikromaschinen22a –22c gehören. - Die Mikromaschinen
22 können den Registersatz zwar zum Austauschen von Daten verwenden, aber es ist auch ein Notizblockspeicher27 vorgesehen, so dass Mikromaschinen Daten in den Speicher schreiben können, so dass andere Mikromaschinen sie lesen können. Der Notizblock27 ist mit dem Bus34 gekoppelt. - Mikromaschinen:
-
3 zeigt ein Beispiel für eine der Mikromaschinen22a –22f , z.B. die Mikromaschine22f . Die Mikromaschine beinhaltet einen Steuerspeicher70 , der in einer Ausführung einen RAM von hier 1024 Worten von 32 Bit beinhaltet. Der RAM speichert ein Mikroprogramm, das vom Kernprozessor20 geladen werden kann. Die Mikromaschine22f beinhaltet auch Steuerlogik72 . Die Steuerlogik beinhaltet einen Befehlsdecoder73 und PC-(Programmzähler)-Einheiten72a –72d . Die vier Mikroprogrammzähler72a –72d werden in Hardware geführt. Die Mikromaschine22f beinhaltet auch Kontextevent-Umschaltlogik74 . Die Kontexteventlogik74 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. SRAM26a , SDRAM26b oder Prozessorkern20 , 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 Mikromaschine22f 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 Mikromaschinen22 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 Mikromaschine22f beinhaltet auch einen EBOX-(Execution Box)-Datenweg76 , der eine Rechenlogikeinheit76a und einen Universalregistersatz76b aufweist. Die Rechenlogikeinheit76a führt arithmetische und logische Funktionen sowie Verschiebungsfunktionen aus. Der Registersatz76b 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 Schreibtransferregisterstapel78 und einen Lesetransferstapel80 . Auch diese Register haben eine Fensterstruktur, so dass sie relativ und absolut adressierbar sind. Der Schreibtransferregisterstapel78 ist dort, wo sich Schreibdaten zu einer Ressource befinden. Ebenso ist der Leseregisterstapel80 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-Steuerung26a , die SDRAM-Steuerung26b oder der Kernprozessor20 , an den Kontext-Event-Zuteiler74 angelegt, der dann dem Programmthread mitteilt, dass die Daten verfügbar sind oder gesendet wurden. Beide Transferregisterbänke78 und80 sind über einen Datenpfad mit der EBOX (Execution Box)76 verbunden. In einer Ausführung hat das Lesetransferregister64 Register und das Schreibtransferregister64 Register. - Jede Mikromaschine
22a –22f 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-Speichersteuerung26a Speicherreferenz-Warteschlangen90 , bei denen Speicherreferenzanforderungen von den verschiedenen Mikromaschinen22a –22f ankommen. Die Speichersteuerung26a beinhaltet einen Zuteiler91 , 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 Befehlswarteschlange90 in der SDRAM-Steuerung26a . Wenn in der Referenzanforderung ein Bit mit der Bezeichnung „optimiertes MEM-Bit" gesetzt ist, dann wird die eingehende Referenzanforderung entweder in die Gerade-Bank-Warteschlange90a oder die Ungerade-Bank-Warteschlange90b sortiert. Wenn in der Speicherreferenzanforderung kein Speicheroptimierungsbit gesetzt ist, dann geht die Referenzanforderung vorgabemäßig in eine Ordnungswarteschlange90c . Die SDRAM-Steuerung26 ist ein Betriebsmittel, das von der FBUS-Schnittstelle28 , dem Kernprozessor20 und der PCI-Schnittstelle24 gemeinsam genutzt wird. Die SDRAM-Steuerung26 führt auch eine Zustandsmaschine zur Ausführung von atomaren READ-MODIFY-Write-Operationen. Die SDRAM-Steuerung26 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 Mikromaschine22f 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 Speichersteuerung26a 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 Ordnungswarteschlange90c 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ätswarteschlange90d . In der Hochprioritätswarteschlange90d 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-Warteschlange90a , die Ungerade-Bank-Warteschlange90b , die Ordnungswarteschlange90c 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-Bus92 . Die ASB-Busschnittstellenlogik93 verbindet den Kernprozessor20 mit der SDRAM-Steuerung26a . Wenn es eingehende Daten vom Kernprozessor20 über die ASB-Schnittstelle92 gibt, dann können die Daten im MEM ASB-Gerät98 gespeichert und nachfolgend aus dem MEM ASB Gerät98 durch die SDRAM-Schnittstelle110 zum SDRAM-Speicher16a entfernt werden. Obwohl dies nicht dargestellt ist, kann dieselbe Warteschlangenstruktur für die Lesevorgänge vorgesehen werden. Die SDRAM-Steuerung26a beinhaltet auch eine Maschine97 zum Ziehen von Daten aus den Mikromaschinen und dem PCI-Bus. - Zusätzliche Warteschlangen beinhalten die PCI-Adresswarteschlange
94 und die ASB-Lesen/Schreib- Warteschlange96 , die eine Reihe von Anforderungen enthält. Die Speicheranforderungen werden über den Multiplexer106 zur SDRAM-Schnittstelle110 gesendet. Der Multiplexer106 wird vom SDRAM-Zuteiler91 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-Steuerregister100 gespeicherten programmierbaren Wert fällt. -
5 zeigt die Speichersteuerung26b für den SRAM. Die Speichersteuerung26b beinhaltet eine Adress- und Befehlswarteschlange120 . Die Speichersteuerung26b wird auf der Basis des Speicheroperationstyps, d.h. Lesen oder Schreiben, optimiert. Die Adress- und Befehlswarteschlange120 beinhaltet eine Hochprioritätswarteschlange120a , eine Lesewarteschlange120b , die die vorherrschende Speicherreferenzfunktion ist, die ein SRAM ausführt, und eine Ordnungswarteschlange120c , 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 Befehlswarteschlange120 auch eine Schreibwarteschlange beinhalten. - Die SRAM-Steuerung
26b beinhaltet auch Kernbus-Schnittstellenlogik, d.h. den ASB-Bus122 . Die ASB-Busschnittstellenlogik122 verbindet den Kernprozessor20 mit der SRAM-Steuerung26b . Die SRAM-Steuerung26b beinhaltet auch eine Maschine127 zum Ziehen von Daten aus den Mikromaschinen und dem PCI-Bus. - Die Speicheranforderungen werden über den Multiplexer
126 zur SRAM-Schnittstelle140 gesendet. Der Multiplexer126 wird vom SRAM-Zuteiler131 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-Steuerregister130 gespeicherten programmierbaren Wertes fällt. Wenn die Steuerung zum Multiplexer126 eine Speicherreferenzanforderung wählt, dann wird die Speicherreferenzanforderung zu einem Decoder138 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 SRAM16b gemappt und 8 MB für Sonderfunktionen reserviert sind wie: Boot-Kapazität über Flashrom16c ; und Konsolenportzugang für MAC-Geräte13a ,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-Warteschlange120d . Die Read-Lock-Fail-Warteschlange120d dient zum Aufnehmen von Lese-Speicherreferenzanforderungen, die aufgrund einer auf einem Speicherteil existierenden Sperre versagen. -
6 zeigt die Kommunikation zwischen den Mikromaschinen22 und der FBUS-Schnittstellenlogik (FBI). Die FBUS-Schnittstelle28 in einer Netzwerkanwendung führt Kopfverarbeitung an eingehenden Paketen vom FBUS18 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 Kernprozessor28 für eine weitergehende Verarbeitung weitergeleitet. - Die FBI
28 hat einen Sende-FIFO182 , einen Empfangs-FIFO183 , eine Hash-Einheit188 und FBI-Steuer- und Statusregister189 . Diese vier Einheiten kommunizieren mit den Mikromaschinen22 über einen zeitmultiplexierten Zugriff auf den SRAM-Bus38 , der mit den Transferregistern78 ,80 in den Mikromaschinen verbunden ist. Das heißt, alle Kommunikationen zu und von den Mikromaschinen erfolgen über die Transferregister78 ,80 . Die FBUS-Schnittstelle28 hat eine Push-Zustandsmaschine200 zum Pushen von Daten in die Transferregister während der Zeitzyklen, in denen der SRAM den SRAM-Datenbus NICHT verwendet (Teil von Bus38 ), und eine Pull-Zustandsmaschine202 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 FBI28 eine FBI hash-Anforderung empfangen hat. Die Hash-Einheit188 ruft Hash-Keys von der anrufenden Mikromaschine22 ab. Nach dem Abrufen und Hashen der Keys werden die Indexe zurück zur anrufenden Mikromaschine22 gesendet. Es können unter einer einzigen FBI hash-Anforderung bis zu drei Hash-Vorgänge durchgeführt werden. Die Busse34 und38 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 Mikromaschine22 . - 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-Steuerung26a 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 Mikromaschinen22 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-Register212 zum Bereitstellen eines globalen Programmthread-Kommunikationsprogramms benutzt. Das Zerstörungsregister210 und ein thread_done-Register212 können als Steuer- und Statusregister189 ausgeführt werden. Sie sind der Deutlichkeit halber in der FBUS-Schnittstelle28 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.22b –22f . 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-Register212 , SRAM16b und im internen Notizblockspeicher186 (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
7A –7B , das Selbstzerstörungsregister210 erlaubt es einem Scheduler-Programmthread S (230 in7B ), Services von mehreren Programmthreads Pa–Pn anzufordern, die den angeforderten Service bereitstellen. Der erste Programmthread, z.B. Pi, der auf das self_destruct-Register210 zugreift (232 in7B ), nimmt die Anforderung. Nach dem Lesen durch einen Programmthread wird das „Selbstzerstörungsregister"210 genullt, d.h. gelöscht (234 in7B ). 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örungsregister210 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örungsregister210 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-Schnittstelle28 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 Verarbeitung246 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 FBI28 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ände296b 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)
- 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.
- Verfahren nach Anspruch 1, wobei die Arbeit das Verwenden von wenigstens einem Programm-Thread zum Prüfen eines Kopfteils des Pakets beinhaltet.
- Verfahren nach Anspruch 2, wobei die Arbeit ferner das Signalisieren mit dem wenigstens einen Programm-Thread beinhaltet, dass ein Paketkopf verarbeitet wurde.
- 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. - Verfahren nach Anspruch 1, wobei jeder Programm-Thread eine Meldung auf ein Register (
212 ) schreibt, die seinen aktuellen Status anzeigt. - 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. - Verfahren nach Anspruch 5, wobei Statusmeldungen 'belegt', 'nicht belegt', 'nicht belegt, aber wartet' beinhalten.
- 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.
- 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. - 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.
- 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. - 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. - 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. - 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. - 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. - Verfahren nach einem der vorherigen Ansprüche, wobei das empfangene Netzwerkpaket von einem Video-Access-Controller (
13a ,13b ) Port empfangen wird. - 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.
- 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. - 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. - 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. - 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. - 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. - 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. - Prozessor nach einem der Ansprüche 18 bis 23, wobei das empfangene Netzwerkpaket von einem Video-Access-Controller (
13a ,13b ) Port empfangen wird. - 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,
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US473799 | 1999-12-28 | ||
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)
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 |
EP1329816B1 (de) * | 1996-12-27 | 2011-06-22 | Richter, Thomas | 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 |
US7002982B1 (en) * | 1998-07-08 | 2006-02-21 | Broadcom Corporation | Apparatus and method for storing data |
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 |
US8230411B1 (en) | 1999-06-10 | 2012-07-24 | Martin Vorbach | Method for interleaving a program over a plurality of cells |
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 |
WO2001016702A1 (en) | 1999-09-01 | 2001-03-08 | 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 |
US6625654B1 (en) * | 1999-12-28 | 2003-09-23 | Intel Corporation | Thread signaling in multi-threaded network processor |
US6631430B1 (en) * | 1999-12-28 | 2003-10-07 | Intel Corporation | Optimizations to receive packet status from fifo bus |
US6661794B1 (en) | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
US6952824B1 (en) * | 1999-12-30 | 2005-10-04 | Intel Corporation | Multi-threaded sequenced receive for fast network port stream of packets |
US7480706B1 (en) * | 1999-12-30 | 2009-01-20 | Intel Corporation | Multi-threaded round-robin receive for fast network port |
JP2004506261A (ja) * | 2000-06-13 | 2004-02-26 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | パイプラインctプロトコルおよびct通信 |
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 |
AU2002220600A1 (en) * | 2000-10-06 | 2002-04-15 | Pact Informationstechnologie Gmbh | Cell system with segmented intermediate cell structure |
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 |
US20090210653A1 (en) * | 2001-03-05 | 2009-08-20 | Pact Xpp Technologies Ag | Method and device for treating and processing data |
US20070299993A1 (en) * | 2001-03-05 | 2007-12-27 | 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 |
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 |
US7844796B2 (en) * | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
US7444531B2 (en) * | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and 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 |
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 |
US6868476B2 (en) * | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
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とモデム |
EP1868111A1 (de) * | 2001-09-28 | 2007-12-19 | ConSentry Networks, Inc. | Multi-threaded Paketverarbeitungsmaschine für zustandsbehaftete Paketverarbeitung |
WO2003030012A1 (en) * | 2001-09-28 | 2003-04-10 | Tidal Networks, Inc. | Multi-threaded packet processing engine for stateful packet pro cessing |
US7126952B2 (en) * | 2001-09-28 | 2006-10-24 | Intel Corporation | Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method |
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 |
US7180887B1 (en) * | 2002-01-04 | 2007-02-20 | Radisys Patent Properties | Routing and forwarding table management for network processor architectures |
US7895239B2 (en) | 2002-01-04 | 2011-02-22 | Intel Corporation | Queue arrays in network devices |
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 |
AU2003214046A1 (en) * | 2002-01-18 | 2003-09-09 | Pact Xpp Technologies Ag | Method and device for partitioning large computer programs |
US8281108B2 (en) * | 2002-01-19 | 2012-10-02 | Martin Vorbach | Reconfigurable general purpose processor having time restricted configurations |
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 |
EP1514193B1 (de) | 2002-02-18 | 2008-07-23 | PACT XPP Technologies AG | Bussysteme und rekonfigurationsverfahren |
AU2003221510A1 (en) * | 2002-03-05 | 2003-09-16 | International Business Machines Corporation | Method of prefetching data/instructions |
US20060075211A1 (en) * | 2002-03-21 | 2006-04-06 | Martin Vorbach | Method and device for data processing |
US8914590B2 (en) * | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
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 |
WO2005010632A2 (en) * | 2003-06-17 | 2005-02-03 | Pact Xpp Technologies Ag | Data processing device and method |
US20110238948A1 (en) * | 2002-08-07 | 2011-09-29 | Martin Vorbach | Method and device for coupling a data processing unit and a data processing array |
AU2003286131A1 (en) * | 2002-08-07 | 2004-03-19 | 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 |
US7577816B2 (en) * | 2003-08-18 | 2009-08-18 | Cray Inc. | Remote translation mechanism for a multinode system |
US7394284B2 (en) * | 2002-09-06 | 2008-07-01 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
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 |
US9088474B2 (en) * | 2002-10-08 | 2015-07-21 | Broadcom Corporation | Advanced processor with interfacing messaging network to a CPU |
US7627721B2 (en) | 2002-10-08 | 2009-12-01 | Rmi Corporation | Advanced processor with cache coherency |
US7924828B2 (en) | 2002-10-08 | 2011-04-12 | Netlogic Microsystems, Inc. | Advanced processor with mechanism for fast packet queuing operations |
US7346757B2 (en) | 2002-10-08 | 2008-03-18 | Rmi Corporation | Advanced processor translation lookaside buffer management in a multithreaded system |
US8037224B2 (en) | 2002-10-08 | 2011-10-11 | Netlogic Microsystems, Inc. | Delegating network processor operations to star topology serial bus interfaces |
US7334086B2 (en) | 2002-10-08 | 2008-02-19 | Rmi Corporation | Advanced processor with system on a chip interconnect technology |
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 |
US8015567B2 (en) | 2002-10-08 | 2011-09-06 | Netlogic Microsystems, Inc. | Advanced processor with mechanism for packet distribution at high line rate |
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 |
US7984268B2 (en) * | 2002-10-08 | 2011-07-19 | Netlogic Microsystems, Inc. | Advanced processor scheduling in a multithreaded system |
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 |
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 |
JP2006524850A (ja) * | 2003-04-04 | 2006-11-02 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | データ処理方法およびデータ処理装置 |
US7500239B2 (en) * | 2003-05-23 | 2009-03-03 | Intel Corporation | Packet processing system |
WO2006082091A2 (en) * | 2005-02-07 | 2006-08-10 | Pact Xpp Technologies Ag | Low latency massive parallel data processing device |
JP4432388B2 (ja) * | 2003-08-12 | 2010-03-17 | 株式会社日立製作所 | 入出力制御装置 |
US7735088B1 (en) * | 2003-08-18 | 2010-06-08 | Cray Inc. | Scheduling synchronization of programs running as streams on multiple processors |
US8307194B1 (en) | 2003-08-18 | 2012-11-06 | Cray Inc. | Relaxed memory consistency model |
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 |
JP4700611B2 (ja) * | 2003-08-28 | 2011-06-15 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | データ処理装置およびデータ処理方法 |
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 |
US7509484B1 (en) | 2004-06-30 | 2009-03-24 | Sun Microsystems, Inc. | Handling cache misses by selectively flushing the pipeline |
US7290116B1 (en) | 2004-06-30 | 2007-10-30 | Sun Microsystems, Inc. | Level 2 cache index hashing to avoid hot spots |
US7185178B1 (en) | 2004-06-30 | 2007-02-27 | Sun Microsystems, Inc. | Fetch speculation in a multithreaded processor |
US7523330B2 (en) * | 2004-06-30 | 2009-04-21 | Sun Microsystems, Inc. | Thread-based clock enabling in a multi-threaded 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 |
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 |
US7330988B2 (en) * | 2004-06-30 | 2008-02-12 | Sun Microsystems, Inc. | Method and apparatus for power throttling in a multi-thread processor |
US7366829B1 (en) | 2004-06-30 | 2008-04-29 | Sun Microsystems, Inc. | TLB tag parity checking without CAM read |
US7373489B1 (en) | 2004-06-30 | 2008-05-13 | Sun Microsystems, Inc. | Apparatus and method for floating-point exception prediction and recovery |
US7774393B1 (en) | 2004-06-30 | 2010-08-10 | Oracle America, Inc. | Apparatus and method for integer to floating-point format conversion |
US7676655B2 (en) * | 2004-06-30 | 2010-03-09 | Sun Microsystems, Inc. | Single bit control of threads in a multithreaded multicore 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 |
US7343474B1 (en) | 2004-06-30 | 2008-03-11 | Sun Microsystems, Inc. | Minimal address state in a fine grain multithreaded processor |
US8095778B1 (en) | 2004-06-30 | 2012-01-10 | Open Computing Trust I & II | Method and system for sharing functional units of a multithreaded processor |
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 |
US7861063B1 (en) | 2004-06-30 | 2010-12-28 | Oracle America, Inc. | Delay slot handling in a processor |
US7401206B2 (en) * | 2004-06-30 | 2008-07-15 | Sun Microsystems, Inc. | Apparatus and method for fine-grained multithreading in a multipipelined processor core |
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 |
US7702887B1 (en) | 2004-06-30 | 2010-04-20 | Sun Microsystems, Inc. | Performance instrumentation in a fine grain multithreaded multicore 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 |
US7426630B1 (en) | 2004-06-30 | 2008-09-16 | Sun Microsystems, Inc. | Arbitration of window swap operations |
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 |
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 |
US20060009265A1 (en) * | 2004-06-30 | 2006-01-12 | Clapper Edward O | Communication blackout feature |
US7747771B1 (en) | 2004-06-30 | 2010-06-29 | Oracle America, Inc. | Register access protocol in a multihreaded multi-core processor |
US7178005B1 (en) | 2004-06-30 | 2007-02-13 | Sun Microsystems, Inc. | Efficient implementation of timers in a multithreaded processor |
US7890734B2 (en) * | 2004-06-30 | 2011-02-15 | Open Computing Trust I & II | Mechanism for selecting instructions for execution in a multithreaded 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 |
US7370243B1 (en) | 2004-06-30 | 2008-05-06 | Sun Microsystems, Inc. | Precise error handling in a fine grain multithreaded multicore processor |
US7434000B1 (en) | 2004-06-30 | 2008-10-07 | Sun Microsystems, Inc. | Handling duplicate cache misses in a multithreaded/multi-core processor |
US8225034B1 (en) | 2004-06-30 | 2012-07-17 | Oracle America, Inc. | Hybrid instruction buffer |
US7890735B2 (en) * | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
US9038070B2 (en) | 2004-09-14 | 2015-05-19 | Synopsys, Inc. | Debug in a multicore architecture |
GB0420442D0 (en) * | 2004-09-14 | 2004-10-20 | Ignios Ltd | 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 |
US7480781B2 (en) * | 2004-12-30 | 2009-01-20 | Intel Corporation | Apparatus and method to merge and align data from distributed memory controllers |
US7430643B2 (en) * | 2004-12-30 | 2008-09-30 | Sun Microsystems, Inc. | Multiple contexts for efficient use of translation lookaside buffer |
US7477641B2 (en) * | 2004-12-30 | 2009-01-13 | Intel Corporation | Providing access to data shared by packet processing threads |
US7703094B2 (en) * | 2004-12-30 | 2010-04-20 | Intel Corporation | Adaptive and dynamic filtering of threaded programs |
US8279886B2 (en) * | 2004-12-30 | 2012-10-02 | Intel Corporation | Dataport and methods thereof |
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 |
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 |
US7415034B2 (en) * | 2005-04-04 | 2008-08-19 | Sun Microsystems, Inc. | Virtualized partitionable shared network interface |
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 |
US7865624B1 (en) | 2005-04-04 | 2011-01-04 | Oracle America, Inc. | Lookup mechanism based on link layer semantics |
US7987306B2 (en) * | 2005-04-04 | 2011-07-26 | Oracle America, Inc. | Hiding system latencies in a throughput networking system |
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 |
US7353360B1 (en) | 2005-04-05 | 2008-04-01 | Sun Microsystems, Inc. | Method for maximizing page locality |
US8762595B1 (en) | 2005-04-05 | 2014-06-24 | Oracle America, Inc. | Method for sharing interfaces among multiple domain environments with enhanced hooks for exclusiveness |
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 |
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 |
US20060236011A1 (en) * | 2005-04-15 | 2006-10-19 | Charles Narad | Ring management |
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 |
US7920584B2 (en) * | 2005-05-04 | 2011-04-05 | Arm Limited | Data processing system |
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) |
CA2677131C (en) | 2007-02-06 | 2014-10-14 | Mba Sciences, 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 |
US8386254B2 (en) * | 2007-05-04 | 2013-02-26 | 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 |
US20090109967A1 (en) * | 2007-10-31 | 2009-04-30 | Anirban Banerjee | Method and system for remotely configuring an ethernet switch using ethernet packets |
US8059650B2 (en) * | 2007-10-31 | 2011-11-15 | Aruba Networks, Inc. | Hardware based parallel processing cores with multiple threads and multiple pipeline stages |
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 |
US8634415B2 (en) | 2011-02-16 | 2014-01-21 | Oracle International Corporation | Method and system for routing network traffic for a blade server |
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 |
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 |
WO2015069408A1 (en) * | 2013-11-05 | 2015-05-14 | Oracle International Corporation | System and method for supporting efficient packet processing model and optimized buffer utilization for packet processing in a network environment |
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)
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., Dallas | 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 |
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 |
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 |
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 |
KR970008523B1 (ko) | 1991-10-21 | 1997-05-24 | 가부시키가이샤 도시바 | 프로세서 |
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 |
DK0627100T3 (da) * | 1992-12-23 | 2000-06-26 | Ebauchesfabrik Eta Ag | Laveffekt-multitaskkontroller |
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 |
US6311286B1 (en) | 1993-04-30 | 2001-10-30 | Nec 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 |
RU2170494C2 (ru) * | 1995-12-29 | 2001-07-10 | Тикси. Ком ГмбХ Телекоммьюникейшн Системс | Способ и микрокомпьютерная система для автоматической безопасной и прямой передачи данных |
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 |
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 |
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 |
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 |
AU6586898A (en) * | 1997-03-21 | 1998-10-20 | 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 |
EP0918280B1 (de) * | 1997-11-19 | 2004-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 |
US6324624B1 (en) * | 1999-12-28 | 2001-11-27 | Intel Corporation | Read lock miss control and queue management |
US6625654B1 (en) * | 1999-12-28 | 2003-09-23 | Intel Corporation | Thread signaling in multi-threaded network processor |
US6560667B1 (en) * | 1999-12-28 | 2003-05-06 | Intel Corporation | Handling contiguous memory references in a multi-queue system |
US6307789B1 (en) * | 1999-12-28 | 2001-10-23 | Intel Corporation | Scratchpad memory |
US6584522B1 (en) * | 1999-12-30 | 2003-06-24 | Intel Corporation | Communication between processors |
US6952824B1 (en) * | 1999-12-30 | 2005-10-04 | Intel Corporation | Multi-threaded sequenced receive for fast network port stream of packets |
US6944850B2 (en) * | 2000-12-21 | 2005-09-13 | Intel Corporation | Hop method for stepping parallel hardware threads |
US6671827B2 (en) * | 2000-12-21 | 2003-12-30 | Intel Corporation | Journaling for parallel hardware threads in multithreaded processor |
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 |
-
1999
- 1999-12-28 US US09/473,799 patent/US6625654B1/en not_active Expired - Fee Related
-
2000
- 2000-12-08 SG SG200401921-2A patent/SG145543A1/en unknown
- 2000-12-08 WO PCT/US2000/042716 patent/WO2001048606A2/en active IP Right Grant
- 2000-12-08 DE DE60030767T patent/DE60030767T2/de not_active Expired - Lifetime
- 2000-12-08 AU AU43116/01A patent/AU4311601A/en not_active Abandoned
- 2000-12-08 EP EP00992412A patent/EP1242883B1/de not_active Expired - Lifetime
- 2000-12-08 CN CNB008191794A patent/CN100351798C/zh not_active Expired - Fee Related
- 2000-12-08 AT AT00992412T patent/ATE339724T1/de not_active IP Right Cessation
- 2000-12-19 TW TW089127208A patent/TW544629B/zh not_active IP Right Cessation
-
2001
- 2001-05-29 US US09/867,064 patent/US20020013861A1/en not_active Abandoned
-
2002
- 2002-10-21 HK HK02107607A patent/HK1046050A1/xx not_active IP Right Cessation
-
2003
- 2003-07-08 US US10/615,280 patent/US7111296B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20040098496A1 (en) | 2004-05-20 |
EP1242883B1 (de) | 2006-09-13 |
CN1643499A (zh) | 2005-07-20 |
US6625654B1 (en) | 2003-09-23 |
SG145543A1 (en) | 2008-09-29 |
WO2001048606A2 (en) | 2001-07-05 |
HK1046050A1 (en) | 2002-12-20 |
ATE339724T1 (de) | 2006-10-15 |
TW544629B (en) | 2003-08-01 |
US7111296B2 (en) | 2006-09-19 |
EP1242883A2 (de) | 2002-09-25 |
DE60030767D1 (de) | 2006-10-26 |
US20020013861A1 (en) | 2002-01-31 |
AU4311601A (en) | 2001-07-09 |
WO2001048606A3 (en) | 2002-07-11 |
CN100351798C (zh) | 2007-11-28 |
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 | |
DE60006270T2 (de) | Parallele prozessorarchitektur | |
DE68927375T2 (de) | Arbitrierung von Übertragungsanforderungen in einem Multiprozessor-Rechnersystem | |
DE112020002501T5 (de) | System und verfahren zur erleichterung eines effizienten lastausgleichs in einer netzwerkschnittstellensteuerung (nic) | |
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.) | |
DE69033272T2 (de) | Verbundarchitektur für ein hochgradig paralleles skalar/vektor-multiprozessorsystem | |
DE69419680T2 (de) | Skalierbare Unterbrechungsstruktur für ein Simultanverarbeitungssystem | |
DE3716229C2 (de) | Mikroprozessorchip mit einem Stapelrahmen-Cache | |
DE69424114T2 (de) | Nachrichtenübertragungssystem für Multiprozessorsystem mit verteiltem gemeinsamen Speicher und dazu gehöriges Nachrichtenübertragungsverfahren | |
DE102013017509B4 (de) | Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten | |
DE602004012106T2 (de) | Multikanal-DMA mit gemeinsamem FIFO-Puffer | |
DE102013017511B4 (de) | Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten | |
DE69433293T2 (de) | Netzwerkübertragungsverfahren für Systeme mit virtuellem Speicher | |
DE69519926T2 (de) | Verfahren und vorrichtung zum einhalten der transaktionssteuerung und zur unterstützung von verzögerten antworten in einer busbrücke | |
DE69320847T2 (de) | Verfahren und Anordnung zur Ausführung von Prozessen in einem Multiprozessor-System | |
DE60016283T2 (de) | Arbeitsbelastungsverwaltung in einer rechnerumgebung | |
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 | |
DE69325566T2 (de) | Verfahren und System zur Befehlszuteilung in einem superskalaren Prozessorsystem mit unabhängig zugänglichem Zwischenspeicher | |
DE3853162T2 (de) | Gemeinsamer intelligenter Speicher für die gegenseitige Verbindung von verteilten Mikroprozessoren. | |
DE112015005597T5 (de) | Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |