DE60316774T2 - Verkettung von mehrfadenprozessorkernen zur bearbeitung von datenpaketen - Google Patents
Verkettung von mehrfadenprozessorkernen zur bearbeitung von datenpaketen Download PDFInfo
- Publication number
- DE60316774T2 DE60316774T2 DE60316774T DE60316774T DE60316774T2 DE 60316774 T2 DE60316774 T2 DE 60316774T2 DE 60316774 T DE60316774 T DE 60316774T DE 60316774 T DE60316774 T DE 60316774T DE 60316774 T2 DE60316774 T2 DE 60316774T2
- Authority
- DE
- Germany
- Prior art keywords
- programming
- tasks
- context
- contexts
- 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
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- 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/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
Description
- Parallelverarbeitung ist eine effiziente Form der Informationsverarbeitung gleichzeitiger Ereignisse in einem Computerprozess. Parallelverarbeitung erfordert im Gegensatz zu sequentieller Verarbeitung die gleichzeitige Ausführung vieler Programme in einem Computer. Im Zusammenhang eines Parallelprozessors umfasst die Parallelität das Ausführen von mehr als einer Sache zur gleichen Zeit. Anders als bei einem seriellen Paradigma, bei dem alle Aufgaben an einer einzigen Station oder einer Pipelinemaschine ausgeführt werden, in der alle Aufgaben an spezialisierten Stationen ausgeführt werden, werden bei der parallelen Verarbeitung viele Stationen bereitgestellt, von denen jede in der Lage ist, verschiedene Aufgaben gleichzeitig auszuführen. Eine Anzahl von Stationen arbeitet gleichzeitig und unabhängig an denselben oder gemeinsamen Elementen einer Computeraufgabe.
- In den folgenden Veröffentlichungen werden verschiedene Beispiele für die parallele Verarbeitung gegeben. In dem Dokument von Schmidt und Suda, "The Performance of Alternative Threading Architecture for Parallel Communication Subsystems", wird eine aufgabenbasierte Threadarchitektur offenbart, bei der Protokollaufgaben parallel ausgeführt werden und durch das Weiterleiten von Steuernachrichten und Datennachrichten zueinander zum Koordinieren paralleler Protokollverarbeitung kommunizieren, und auch eine nachrichtenbasierte Threadarchitektur wird untersucht. In
US-A-5,913,059 wird die Ausführung mehrerer Threads offenbart. In "Understanding Network Processors", einer Diplomarbeit an der University of California, Berkeley, September 2001, von Niraj Shah, wird eine programmierbare Pipeline von Prozessoren offenbart und Moors et al., "Cascading Content-Addressable Memories", IEEE MICRO 12(3), S. 56–66, offenbart inhaltsadressierbare Speicher. Schließlich offenbart das DokumentWO 0148606 - Dementsprechend kann die Verwendung oder Anwendung paralleler Verarbeitung Computeraufgaben lösen.
- KURZE DARSTELLUNG DER ERFINDUNG
- Ein Aspekt der Erfindung stellt ein Verfahren zum Erstellen einer Vielzahl von Pipelines, wie in Anspruch 1 dargelegt, bereit. Weitere Aspekte der Erfindung stellen einen Prozessor, ein Mehrfachverarbeitungssystem und ein Computerprogrammprodukt, wie in den Ansprüchen 20, 27 bzw. 28 dargelegt, bereit.
- KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein Blockdiagramm eines Kommunikationssystems, das einen hardwarebasierten Mehrfachthreadprozessor einsetzt; -
2 ist ein Blockdiagramm einer Funktionseinheit einer Programmiermaschine, die in dem hardwarebasierten Mehrfachthreadprozessor aus1 eingesetzt wird; -
3 ist ein Blockdiagramm eines Kontextzustandübergangs; -
4 ist ein Blockdiagramm eines kontextadressierbaren Speichers (CAM); -
5 ist ein ausführliches Blockdiagramm eines CAM-Prozesses; -
6 ist ein vereinfachtes Blockdiagramm eines Kontextpipelineprozesses. - BESCHREIBUNG
- Architektur
- Unter Bezugnahme auf
1 enthält ein Computerverarbeitungssystem10 einen parallelen, hardwarebasierten Mehrfachthread-Netzwerkprozessor12 . Der hardwarebasierte Mehrfachthread-Prozessor12 ist mit einem Speichersystem oder einer Speicherressource14 gekoppelt. Das Speichersystem14 enthält einen dynamischen Direktzugriffsspeicher (DRAM)14a und einen statischen Direktzugriffsspeicher (SRAM)14b . Das Verarbeitungssystem10 ist insbesondere für Aufgaben nützlich, die in parallele Unteraufgaben oder Funktionen aufgeteilt werden können. Insbesondere eignet sich der hardwarebasierte Mehrfachthreadprozessor12 für Aufgaben, die eher bandbreitenorientiert als latenzorientiert sind. Der hardwarebasierte Mehrfachthreadprozessor12 weist mehrere funktionale Mikromaschinen oder Programmiermaschinen16 auf, welche jeweils mehrere hardwaregesteuerte Threads aufweisen, die gleichzeitig aktiv sind und unabhängig an einer spezifischen Aufgabe arbeiten. - Die Programmiermaschinen
16 führen jeweils Programmzähler in der Hardware und mit den Programmzählern verbundene Zustände. Effektiv können entsprechende Untergruppen des Kontextes oder der Threads gleichzeitig auf jeder der Programmiermaschinen16 aktiv sein, während nur eine zu einer gegebenen Zeit aktuell betrieben wird. - In diesem Beispiel werden in
1 acht Programmiermaschinen16a –16h dargestellt. Jede Maschine der Programmiermaschinen16a –16h verarbeitet acht Hardwarethreads oder Kontexte. Die acht Programmiermaschinen16a –16h arbeiten mit gemeinsamen Ressourcen, einschließlich einer Speicherressource14 und (nicht gezeigten) Busschnittstellen. Der hardwarebasierte Mehrfachthreadprozessor12 enthält einen dynamischen Direktzugriffsspeicher-(DRAM)-Controller18a und einen statischen Direktzugriffsspeicher-(SRAM)-Controller18b . Der DRAM-Speicher14a und der DRAM-Controller18a werden in der Regel zum Verarbeiten großer Datenvolumina verwendet, z. B. beim Verarbeiten von Netzwerknutzlasten von Netzwerkpaketen. Der SRAM-Speicher14b und der SRAM-Controller18b werden bei einer Netzwerkimplementation für geringe Latenz und Aufgaben mit schnellem Zugriff verwendet, z. B. das Zugreifen auf Nachschlagetabellen für den Speicher für den Kernprozessor20 und dergleichen. - Die acht Programmiermaschinen
16a –16h greifen auf der Grundlage von Eigenschaften der Daten entweder auf den DRAM-Speicher14a oder SRAM-Speicher14b zu. Somit werden Daten mit geringer Latenz und geringer Bandbreite in dem SRAM-Speicher14b gespeichert und von dort abgefragt, während Daten höherer Bandbreite, für die die Latenz nicht so entscheidend ist, in dem DRAM-Speicher14a gespeichert und von dort abgerufen werden. Die Programmiermaschinen16a –16h können Speicherreferenzanweisungen entweder auf den DRAM-Controller18a oder den SRAM-Controller18b ausführen. - Der hardwarebasierte Mehrfachthreadprozessor
12 enthält auch einen Prozessorkern20 zum Laden der Mikrocodesteuerung für die Programmiermaschinen16a –16h . In diesem Beispiel handelt es sich bei dem Prozessorkern20 um eine XSkaleTM-basierte Architektur. - Der Prozessorkern
20 führt Allzweckcomputerfunktionen, wie das Handhaben von Protokollen, Ausnahmen und zusätzlicher Unterstützung für die Paketverarbeitung aus, bei der die Programmiermaschinen16 die Pakete für ausführlichere Verarbeitung, wie in Grenzbedingungen, weiterleiten. - Der Prozessorkern
20 weist ein (nicht gezeigtes) Betriebssystem auf. Über das Betriebssystem (Operating System, OS) kann der Prozessorkern20 Funktionen aufrufen, die auf den Programmiermaschinen16a –16h betrieben werden. Der Prozessorkern20 kann jedes unterstützte OS, insbesondere ein Echtzeit-OS verwenden. Für den als eine XSkaleTM-Architektur implementierten Prozessorkern20 kann ein Betriebssystem, wie beispielsweise Microsoft NT Echtzeit, VXWorks und μCOS oder ein über das Internet erhältliches Freeware-Betriebssystem verwendet werden. - Vorteile der hardwarebasierten Mehrfachthreadarchitektur können durch den SRAM- oder DRAM-Speicherzugriff erklärt werden. Beispielsweise bewirkt ein von einem Kontext (z. B. Thread_0) von einer der Programmiermaschinen
16 angeforderter SRAM-Zugriff, dass der SRAM-Controller18b einen Zugriff auf den SRAM-Speicher14b initiiert. Der SRAM-Controller18b greift auf den SRAM-Speicher14b zu, ruft die Daten aus dem SRAM-Speicher14b ab und gibt die Daten an eine anfordernde Programmiermaschine. - Wenn eine der Programmiermaschinen
16a –16h nur einen einzigen betreibbaren Thread aufweisen würde, würde diese Programmiermaschine während eines SRAM-Zugriffs im Ruhezustand sein, während Daten von dem SRAM-Speicher14b zurückgeholt werden würden. - Durch den in jeder der Programmmiermaschinen
16a –16h eingesetzten Hardwarekontextaustausch in jeder der Programmiermaschinen16a –16h können alle Kontexte mit eindeutigen Programmzählern in derselben Programmiermaschine ausgeführt werden. Somit kann ein anderer Thread, z. B. Thread_1, funktionieren, während der erste Thread, Thread_0, darauf wartet, dass die gelesenen Daten zurückgegeben werden. Während der Ausführung kann Thread_1 auf den DRAM-Speicher14a zugreifen. Während Thread_1 auf der DRAM-Einheit und Thread_0 auf der SRAM-Einheit betrieben wird, kann ein neuer Thread, z. B. Thread_2 nun in der Programmiermaschine betrieben werden. Thread_2 kann für eine bestimmte Zeitdauer betrieben werden, bis er auf den Speicher zugreifen oder eine andere Operation mit langer Latenz ausführen muss, wie beispielsweise das Vornehmen eines Zugriffs auf eine Busschnittstelle. Daher kann der Mehrfachthreadprozessor12 eine Busoperation, eine SRAM-Operation und eine DRAM-Operation aufweisen, die alle von einer der Programmiermaschinen16 ausgeführt oder betrieben werden und mehrere Threads oder Kontexte zur Verarbeitung von mehr Arbeit aufweisen können. - Das Austauschen von Hardwarekontext synchronisiert außerdem den Abschluss von Aufgaben. Beispielsweise können zwei Threads auf die gemeinsame Speicherressource, z. B. den SRAM-Speicher
14b zugreifen. Jede der getrennten Funktionseinheiten, z. B. der SRAM-Controller18b und der DRAM-Controller18a , gibt bei Abschluss einer von einem der Programmiermaschinenthreads oder -kontexten angeforderten Aufgaben ein Flag zurück, um den Abschluss einer Operation zu signalisieren. Wenn die Programmiermaschinen16a –16h das Flag empfangen, können die Programmiermaschinen16a –16h bestimmen, welcher Thread eingestellt werden soll. - Ein Anwendungsbeispiel für den hardwarebasierten Mehrfachthreadprozessor
12 ist ein Netzwerkprozessor. Als Netzwerkprozessor bildet der hardwarebasierte Mehrfachthreadprozessor12 eine Schnittstelle zu Netzwerkvorrichtungen, wie eine MAC-(Media Access Controller)-Vorrichtung, z. B. eine 10/100BaseT-Octal MAC oder Gigabit-Ethernet-Vorrichtung. Als Netzwerkprozessor kann der hardwarebasierte Mehrfachthreadprozessor12 allgemein eine Schnittstelle zu jeder Art von Kommunikationsvorrichtung oder eine Schnittstelle bilden, die große Datenmengen sendet oder empfängt. Das in einer Netzwerkanwendung funktionierende Computerprozessorsystem10 kann Netzwerkpakete empfangen und diese Pakete parallel verarbeiten. - Programmiermaschinen
- Unter Bezugnahme auf
2 wird eine Programmiermaschine16a der Programmiermaschinen16a –16h gezeigt. Die Programmiermaschine16a enthält einen Steuerspeicher30 , der in einem Beispiel einen RAM von 4096 Anweisungen, die jeweils 40 Bit breit sind, enthält. Der RAM speichert ein Mikroprogramm, welches von der Programmiermaschine16a ausgeführt wird. Das Mikroprogramm in dem Steuerspeicher30 kann durch den Prozessorkern20 geladen werden (1 ). - Zusätzlich zu Ereignissignalen, die auf einem ausführenden Thread lokal sind, setzt die Programmiermaschine
16a globale Signalisierungszustände ein. Bei Signalisierungszuständen kann ein ausführender Thread einen Signalzustand an alle Programmiermaschinen16a –16h rundsenden. Jeder und alle Threads der Programmiermaschine können zu diesen Signalisierungszuständen abzweigen. Diese Signalisierungszustände können zur Bestimmung der Verfügbarkeit einer Ressource oder zur Bestimmung verwendet werden, ob eine Ressource zur Wartung fällig ist. Die Kontextereignislogik weist eine Vermittlung für die acht (8) Threads auf. In einem Beispiel handelt es sich bei der Vermittlung um einen Rundlaufmechanismus. Es könnten andere Techniken verwendet werden, zu denen Prioritätsschlangenbildung oder gewichtete faire Schlangenbildung gehören. - Wie oben beschrieben, unterstützt die Programmiermaschine
16a die Mehrfachthreadausführung von acht Kontexten. Dies ermöglicht, dass ein Thread mit der Ausführung startet, kurz nachdem ein anderer Thread einen Speicherbezug ausgibt und auf den Abschluss dieses Bezugs warten muss, bevor er weitere Arbeit ausführen kann. Die Mehrfachthreadausführung ist für das Aufrechterhalten effizienter Hardwareausführung der Programmiermaschine16a entscheidend, da die Speicherlatenz signifikant ist. Die Mehrfachthreadausführung gestattet es der Programmiermaschine16 , Speicherlatenz zu verbergen, indem nützliche unabhängige Arbeit über verschiedene Threads ausgeführt wird. - Zur Ermöglichung des effizienten Austauschs von Kontext weist die Programmiermaschine
16a ihren eigenen Registersatz, Programmzähler und kontextspezifische lokale Register auf. Das Vorliegen einer Kopie pro Kontext entfernt den Bedarf, kontextspezifische Informationen zu und von gemeinsamem Speicher und Programmiermaschinenregistern für jeden Kontextaustausch zu bewegen. Der schnelle Kontextaustausch ermöglicht es, dass Kontext Berechnungen ausführt; während andere Kontexte zum Abschluss auf Eingabe/Ausgabe (E/A) warten, in der Regel externe Speicherzugriffe oder auf ein Signal eines anderen Kontexts oder einer anderen Hardwareeinheit. - Die Programmiermaschine
16a führt beispielsweise die acht Kontexte aus, indem acht Programmzähler und acht kontextbezogene Registersätze geführt werden. Es können acht unterschiedliche Arten kontextbezogener Register vorliegen, nämlich Allzweckregister (GPR)32 , Interprogrammagentregister (nicht gezeigt), statische Direktzugriffsspeicher(SRAM)-Eingabetransferregister24 , dynamische Direktzugriffsspeicher-(DRAM)-Eingabetransferregister36 , SRAM-Ausgabetransferregister38 , DRAM-Ausgabetransferregister40 . - Die GPR
32 werden für allgemeine Programmierzwecke verwendet. Die GPR32 werden ausschließlich unter Programmsteuerung gelesen und beschrieben. Wenn die GPR32 als Quelle in einer Anweisung verwendet werden, führen sie einer Ausführungsdatenstrecke44 Operanden zu. Wenn sie als ein Ziel in einer Anweisung verwendet werden, wird das Ergebnis der Ausführungsdatenstrecke44 in die GPR32 geschrieben. Die Programmmiermaschine16a enthält auch E/A-Transferregister34 ,36 ,38 und40 , die zum Übertragen von Daten zu und von der Programmiermaschine16a und Stellen außerhalb der Programmiermaschine16a , dem DRAM-Speicher14a , dem SRAM-Speicher14b usw. verwendet werden. - Es wird auch ein lokaler Speicher
42 verwendet. Der lokale Speicher42 ist ein adressierbarer Speicher, der sich in der Programmiermaschine16a befindet. Der lokale Speicher42 wird ausschließlich unter Programmsteuerung gelesen und beschrieben. Der lokale Speicher42 enthält auch Variablen, die von allen Programmiermaschinen16a –16h gemeinsam verwendet werden. Gemeinsam verwendete Variablen werden in verschiedenen zugewiesenen Aufgaben während den funktiona len Pipelinestufen durch die Programmiermaschinen16a –16h modifiziert, welche als nächstes beschrieben werden. Die gemeinsam verwendeten Variablen enthalten einen kritischen Abschnitt, der die Lese-Modifikations-Schreib-Zeiten definiert. Die Implementation und die Verwendung des kritischen Abschnitts in dem Computerverarbeitungssystem10 wird ebenfalls unten beschrieben. - Programmiermaschinenkontexte
- Jede der Programmiermaschinen
16 unterstützt Mehrfachthreadausführung von acht Kontexten. Ein Grund dafür ist, dass ein Thread, direkt nachdem ein anderer Thread einen Speicherbezug ausgibt und vor Ausführung weiterer Arbeit auf den Abschluss dieses Bezugs warten muss, mit der Ausführung beginnen kann. Dieses Verhalten ist für das Führen der effizienten Hardwareausführung der Programmiermaschinen16a –16f kritisch, da die Speicherlatenz signifikant ist. Wenn nur eine einzige Threadausführung unterstützt werden würde, befände sich anders ausgedrückt die Programmiermaschine für eine signifikante Zyklusanzahl im Leerlauf, während sie auf den Abschluss von Bezügen wartet, und dadurch würde der Gesamtberechnungsdurchsatz verringert. Die Mehrfachthreadausführung ermöglicht es einer Programmiermaschine, durch Ausführen nützlicher unabhängiger Arbeit über mehrere Threads Speicherlatenz zu verbergen. - Die Programmiermaschinen
16a –16h verfügen jeweils über acht Kontexte. Um einen effizienten Austausch von Kontexten zu ermöglichen, weist jede Programmiermaschine ihren eigenen Registersatz, Programmzähler und kontextspezifische lokale Register auf. Das Vorhandensein von einer Kopie pro Kontext macht das Bewegen kontextspezifischer Informationen zu/von gemeinsam benutztem Speicher und von Programmiermaschinenregistern für jeden Kontexttausch unnötig. Ein schneller Austausch von Kontext ermöglicht einem Kontext die Ausführung von Berechnung, während andere Kontexte für den Abschluss auf E/A, in der Regel externe Speicherzugriffe oder auf ein Signal von einem anderen Kontext oder einer anderen Hardwareeinheit warten. - Dementsprechend zeigt
3 die Zustandsübergänge100 für einen Kontext. Jeder der acht Kontexte wird sich in einem der oben beschriebenen Zustände befinden. Höchstens ein Kontext kann sich in dem Ausführungszustand befinden und eine beliebige Anzahl von Kontexten kann sich in einem der anderen Zustände befinden: - 1) Inaktiver Zustand (
100a ) – Weil einige Anwendungen möglicherweise nicht alle acht Kontexte benötigen, befindet sich ein Kontext im inaktiven Zustand, wenn sein CTXAktivierungs-(Kontextaktivierungs-)Steuer- und Statusregister(CRS)-Aktivierungsbit '0' ist. - 2) Bereitschaftszustand (
100b ) – Obwohl der Kontext in diesem Zustand zur Ausführung bereit ist, kann er nicht verarbeitet werden, da ein anderer Kontext immer noch ausgeführt wird. Wenn der ausführende Kontext in einen Schlafzustand übergeht, wählt die Vermittlung des Kontexts der Maschine den nächsten Kontext aus allen Kontexten im Bereitschaftszustand aus, der in den Ausführungszustand übergeht. Bei der Vermittlung handelt es sich um einen Rundlauf. - 3) Ausführungszustand
(
100c ) – Ein Kontext befindet sich in einem Ausführungszustand, wenn seine Kontextzahl sich in Aktiv CTX Status CSR befindet. Der (nicht gezeigte) Programmzähler des ausführenden Kontexts wird verwendet, um Anweisungen aus dem Steuerspeicher50 abzurufen. Ein Kontext bleibt in dem Ausführungszustand, bis er eine Anweisung ausführt, die bewirkt, dass er in den Schlafzustand eintritt. Zu einer Zeit kann sich höchstens ein Kontext im Ausführungszustand befinden. - 4) Schlafzustand (
100d ) – Ein Kontext wartet auf das Auftreten eines oder mehrerer in CTX Nr Aufwach Ereignisse CSR festgelegter Ereignisse, wobei Nr. acht unterschiedliche Kontexte anzeigt, wie z. B. Nr. 0 bis Nr. 7, typischerweise, aber nicht beschränkt auf einen E/A-Zugriff. In diesem Zustand vermittelt der Kontext keinen Eintritt in den Ausführungszustand. - Unter Bezugnahme auf
2 enthält jede Programmiermaschine vier Arten von 32-Bit-Datenstreckenregistern, wie unten beschrieben. Die 256 Allgemeinregister, 128 Register des nächsten Nachbarn, 512 Transferregister und 640 32-Bitworte des lokalen Speichers. - Allgemeinregister
- Die Programmiermaschine
16a enthält Allgemeinregister (GPR)52 , die für allgemeine Programmmierzwecke verwendet werden. Sie werden ausschließlich unter Programmsteuerung gelesen und beschrieben. Wenn die GPR2 als eine Quelle in einer Anweisung verwendet werden, führen sie einer Ausführungsdatenstrecke56 Operanden zu. Wenn sie in einer Anweisung als Ziel verwendet werden, werden die Ergebnisse der Ausführungsdatenstrecke56 in die GPR52 geschrieben. Die GPR52 sind physisch und logisch in zwei Bänken, GPR A52a und GPR B52b , enthalten, wie in3 gezeigt. - Transferregister
- Die Programmiermaschine
16a enthält auch Transferregister58 und60 . Die Transferregister34 ,36 ,38 und40 werden zum Übertragen von Daten zu und von der Programmmiermaschine16a und Stellen außerhalb der Programmiermaschine, z. B. DRAM, SRAM usw., verwendet. Wie in2 gezeigt, gibt es vier Arten von Transferregistern, und zwar Eingabetransferregister und Ausgabetransferregister. - Wenn die Eingabetransferregister als Quelle in einer Anweisung verwendet werden, führen sie der Ausführungsdatenstrecke
44 Operanden zu. Wenn die Ausgabetransferregister als ein Ziel in einer Anweisung verwendet werden, werden sie mit den Ergebnissen aus der Ausgabendatenstrecke44 beschrieben. - Lokale Steuer- und Statusregister (CSRs)
- Lokale Steuer- und Statusregister (CSR)
66 sind bezüglich der Ausführungsdatenstrecke56 lokal und enthalten spezielle Informationen. Sie können durch spezielle Anweisungen (local_csr_rd und local_csr_wr) gelesen und beschrieben werden und in der Regel wird weniger häufig auf sie zugegriffen, als Datenstreckenregister. - Register der nächsten Nachbarn
- Die Programmiermaschine
16a enthält auch 128 Register der nächsten Nachbarn (NN)54 . Wenn ein NN-Register54 als eine Quelle in einer Anweisung verwendet wird, führt es der Ausführungsdatenstrecke44 ebenfalls Operanden zu. Das NN-Register54 wird entweder von einer externen Einheit beschrieben, wie einer angrenzenden Programmiermaschine, aber darauf nicht beschränkt, oder von derselben Programmiermaschine16a , in der das NN-Register resident ist. Das spezifische Register wird durch eine kontextbezogene Operation ausgewählt, wobei die Registernummer in der Anweisung codiert ist, oder als in einer Ringoperation, die beispielsweise über NN_Setzen (NN-Schreibadresse) und NN_Holen (NN-Leseadresse) in den CSR-Registern ausgewählt wird. - Die NN_Setzen-Register werden verwendet, wenn die vorherige benachbarte Programmmiermaschine eine Anweisung mit NN_Setzen als Ziel ausführt. Das durch den Wert in diesem Registern ausgewählte NN-Register
54 wird beschrieben, und der Wert in dem NN_Setzen-Register wird dann inkrementiert (ein Wert von 127 wird zu 0). Der Wert in diesem Register wird mit dem Wert in dem NN_Holen-Register verglichen, um zu bestimmen, wann NN_Voll- und NN_Leer-Statussignale bestätigt werden sollen. - Die NN_Holen-Register werden verwendet, wenn das NN-Register
54 als eine Quelle abgerufen wird, die im Quellenfeld der Anweisung angegeben wird. Das durch den Wert in diesem Registern ausgewählte NN-Register54 wird gelesen, und der Wert in dem NN_Holen-Register wird dann inkrementiert (ein Wert von 127 wird zu 0). Der Wert in diesem Register wird mit dem Wert in dem NN_Setzen-Register verglichen, um zu bestimmen, wann NN_Voll- und NN_Leer-Statussignale bestätigt werden sollen. - Insbesondere, wenn das NN-Register
54 als ein Ziel in einer Anweisung verwendet wird, werden die Anweisungsergebnisdaten aus der Programmiermaschine16a , in der Regel zu einer anderen, angrenzenden Programmiermaschine gesendet. Wenn das NN-Register54 als ein Ziel in einer Anweisung verwendet wird, werden andererseits die Anweisungsergebnisdaten in das ausgewählte NN-Register54 in der Programmiermaschine16a geschrieben. Die Daten werden nicht aus der Programmiermaschine16a gesendet, wie der Fall wäre, wenn das NN-Register54 als ein Ziel verwendet werden würde. Das NN-Register54 wird in einem Kontextpipelineverfahren verwendet, wie unten beschrieben. - Lokaler Speicher
- Die Programmiermaschine
16a enthält 640 32-Bitwörter in einem lokalen Speicher42 . Bei dem lokalen Speicher handelt es sich um adressierbaren Speicher, der sich in der Programmiermaschine16a befindet. Der lokale Speicher42 wird ausschließlich unter Programmsteuerung gelesen und beschrieben. Als Quelle führt der lokale Speicher der Ausführungsdatenstrecke44 Operanden zu und als Ziel empfängt er Ergebnisse. Der spezifische lokale Speicherort, der ausgewählt wird, basiert auf dem Wert in einem der LM_Addr-Register53 , der durch local_CSR_wr-Anweisungen geschrieben wird. Pro Kontext gibt es zwei LM_Addr-Register53 sowie eine Arbeitskopie von jedem. Wenn ein Kontext in den Schlafzustand100d übergeht, wird der Wert der Arbeitskopien in die Kontextkopie von LM_Adds platziert. Wenn der Kontext in den Ausführungszustand übergeht, wird der Wert seiner Kopie von LM_Addr in die Arbeitskopien platziert. Die Auswahl von LM_Addr_0 oder LM_Addr_1 erfolgt in der Anweisung. Es ist auch möglich, beide oder eine LM_Addrs als global zu verwenden, indem CTX_Aktivierung [LM_Addr_0_Global] und/oder CTX_Aktivierung [LM_Addr_1_Global] gesetzt wird. Bei globaler Verwendung benutzen alle Kontexte die Arbeitskopie von LM_Addr anstelle ihrer eigenen kontextspezifischen Kopie. - Der lokale Speicher
42 enthält auch von den Programmiermaschinen16a –16h gemeinsam benutzte Variablen. Gemeinsam verwendete Variabeln werden in verschiedenen zugewiesenen Aufgaben modifiziert, die während Pipelinestufen von den Programmiermaschinen16a –16h verwendet werden. Die gemeinsam benutzten Variablen enthalten einen kritischen Sektor, der ihre Lese-Modifikations-Schreib-Zeiten definiert. - Kritischer Abschnitt
- Die Pipelinestufen der Programmiermaschinen
16a –16h enthalten eine Mindestauflösung, die durch die Differenz zwischen dem kritischen Abschnitt der gemeinsam verwendeten Variablen und der Ankunftszeit eines nachfolgenden Pakets definiert wird. Die dem kritischen Abschnitt zugeteilte Zeit muss unter der Ankunftszeit des nachfolgenden Pakets liegen, das die Mindestauflösung der Pipelinestufe bestimmt. Die Latenz eines Speicherlesens gefolgt von den Anweisungen, eine Variable zu modifizieren, gefolgt von einem Schreiben, übersteigt die Paketankunftsgeschwindigkeit für Pakte der Minimalgröße bei weitem. Daher muss der kritische Abschnitt so gehalten werden, dass er geringer als die Ankunftszeit des nachfolgenden Pakets ist. - Ausführungsdatenstrecke
- Die Programmiermaschine
16a enthält auch die Ausführungsdatenstrecke44 , die einen oder zwei Operanden aufnehmen, eine Operation ausführen und gegebenenfalls ein Ergebnis zurückschreiben kann. Die Quellen und Ziele können GPR32 , Transferregister34 ,36 ,38 und40 , NN-Register54 und der lokale Speicher42 sein. Die Operationen sind Verschieben, Addieren/Subtrahieren, Logische, Multiplizieren, Byteausrichten und erstes Bit finden. Die Ausführungsdatenstrecke44 enthält auch einen inhaltsadressierbaren Speicher (CAM)64 . - Inhaltsadressierbarer Speicher (CAM)
-
4 zeigt ein CAM-Blockdiagramm102 . Die Programmiermaschine16a enthält den CAM64 mit 16 Einträgen und zugeordneter Steuerlogik104 . Jeder Eintrag speichert einen 32-Bitwert, der mit einem Quelloperanden verglichen werden kann. Alle Einträge werden parallel verglichen und das Ergebnis des Nachschlagens ist ein 6-Bit-Wert. Das 6-Bitergebnis besteht aus einem 2-Bitcode, an den eine 4-Bit-Eintragsnummer106 angehängt ist. Zwei Ergebnisse eines Nachschlagens108 sind möglich. Ein erstes Ergebnis ist ein Fehlschlagen (0)110 , bei dem sich kein Nachschlagewert in dem CAM64 befindet und die Eintragszahl der zuletzt verwendete Eintrag (LRU) ist, der als vorgeschlagener zu ersetzender Eintrag verwendet wird. Das zweite Ergebnis kann ein Treffer (1)112 sein, bei dem sich der Nachschlagewert in dem CAM64 befindet und die Eintragsnummer ein passender Eintrag ist. - Die LRU-Logik
104 führt eine zeitlich geordnete Liste der Verwendung von Einträgen für den CAM64 . Wenn ein Eintrag geladen wird oder zu einem Nachschlagen108 passt, wird er als MRU (Zuletzt verwendet) markiert. Ein Nachschlagen, das fehlschlägt, modifiziert die LRU-Liste nicht. - Unter Bezugnahme auf
5 wird ein beispielhafter CAM-Prozess120 gezeigt. Die Programmiermaschine16a verwendet beispielsweise einen 16-Eintrag-Cache oder einen CAM64 mit einer LRU-Ersetzungsrichtlinie zum Speichern einer Liste zuletzt verwendeter Variablen, die zu einer Zeit in acht (8) aktiven Kontexten oder Threads verwendet werden. Die Threads werden unter Verwendung einer Lesephase122 und einer (nicht gezeigten) Modifikations-Schreibphase in Reihenfolge ausgeführt. Während der Lesephase122 fordert ein Kontext eine Variable an und der CAM64 wird daraufhin überprüft, ob die benötigte Variable gecacht ist (124 ). Wenn der CAM64 einen Treffer anzeigt, ist kein Lesen notwendig und der Inhalt des CAM64 gibt die Stelle der Variable in dem CAM an (126 ). Außerdem wird der aktualisierte Wert der Variable in dem Cache gespeichert, wenn dieser Kontext für seine Modifikations-Schreib-Phase aktiv wird, wobei der Kontext den Wert direkt aus dem CAM64 liest (128 ). - Wenn der CAM
64 während der Lesephase122 ein Fehlschlagen anzeigt, wird andererseits ein Lesen der benötigten Variable initiiert (130 ). In der Folge wird die Ausführungszeit für die verbleibenden sieben (7) Kontexte verwendet, um die Latenz des Lesen vollkommen zu verbergen (132 ). Die Variable ist außerdem an der Modifikations-Schreib-Stufe dieses Kontexts verfügbar (132 ). Die Schreiblatenz des kritischen Abschnitts wird vermieden, da die Variable in dem CAM64 bereits gültig ist, wenn sie kürzlich verwendet wurde. Als nächstes wird der CAM beschrieben oder aktualisiert (134 ). Der Inhalt des CAM64 stellt die Stelle der gecachten LRU-Variable bereit, wobei die neue Variable die zuvor verwendete Variable überschreibt (136 ). - Danach liest der Kontext den Wert direkt aus dem CAM
64 (136 ) und der Kontext kehrt zum Anfang der Lesephase zurück (122 ). In der Folge wird jede Programmiermaschine zu einer Pipelinestufe, die eine spezialisierte Aufgabe der Paketverarbeitung ausführt, wobei auch der für bestimmte Aufgaben verwendete Kontext oder die Variable(n) überwacht wird/werden. - Kontextpipelining
- Unter Bezugnahme auf
6 zeigt ein Kontextpipelinestrom130 die bestimmten Abschnitten einer Verarbeitungsaufgabe eines Pakets oder eine Zelle zugewiesenen Programmiermaschinen16a –16h . Der Kontext für eine bestimmte zugewiesene Aufgabe wird auf den Programmiermaschinen16a –16h unter Verwendung des CAM64a –64c geführt. Die Pakete werden unter Verwendung der NN-Register54a –54c zum Weiterleiten von Daten von einer Programmiermaschine zu einer nachfolgenden, benachbarten Programmiermaschine pipelineartig wie auf einem Fließband verarbeitet. Die Daten werden von einer Stufe132a zu einer nachfolgenden Stufe132b und dann von Stufe132b zu Stufe132c der Pipeline usw. weitergeleitet. Anders ausgedrückt werden Daten zu der nächsten Stufe der Pipeline weitergeleitet, wodurch die Stufen des Prozessorzyklus einander überlappen können. Während eine Anweisung ausgeführt wird, kann beispielsweise die nächste Anweisung geholt werden, was bedeutet, dass sich zu einer beliebigen Zeit mehr als eine Anweisung "in der Pipeline" befinden kann, jeweils in einer unterschiedlichen Verarbeitungsstufe. - Daten können beispielsweise von einer Programmiermaschine
16 zur nächsten Programmiermaschine16 in der Pipeline unter Verwendung der NN-Register54a –54c vorwärts weitergeleitet werden. Dieses Implementationsverfahren der Pipelineverarbeitung hat den Vorteil, dass die in dem CAM64a –64c für jede Stufe132a –c enthaltene Informationen durchgängig für alle acht Kontexte der Pipelinestufe gültig sind. Das Kontextpipelineverfahren kann verwendet werden, wenn Mindestdaten aus dem zu verarbeitenden Paket durch die Kontextpipeline130 fortschreiten müssen. - Andere Ausführungsformen
- Es versteht sich, dass das obige Beispiel zwar in Verbindung mit der ausführlichen Beschreibung davon beschrieben worden ist, die vorstehende Beschreibung den Schutzumfang der Erfindung jedoch veranschaulichen und nicht einschränken soll, der durch den Schutzumfang der beigefügten Ansprüche definiert wird. Weitere Aspekte, Vorteile und Modifikationen fallen in den Schutzumfang der folgenden Ansprüche.
Claims (28)
- Verfahren, umfassend: Erstellen einer Vielzahl von Pipeline-Stufen (
132a –132c ), wobei jede Pipeline-Stufe (132a –132 ) mindestens eine Programmiermaschine (16a –16h ) umfasst; und an jeder Pipeline-Stufe (132a –132c ): Zuweisen einer oder mehrerer Aufgaben zur Verarbeitung in der mindestens einen Programmiermaschine (16a –16h ); Verwalten paralleler Verarbeitung der einen oder mehreren Aufgaben, einschließlich Erstellen eines Kontexts für jede der einen oder mehreren Aufgaben, wobei mindestens eine der einen oder mehreren Aufgaben die Ausführung mehrerer Anweisungen erfordert; Umschalten von der Verarbeitung eines der Kontexte zu einem anderen der Kontexte auf der Basis eines Ausführungsstatus einer Aufgabe durch mindestens eine der Programmiermaschinen; Bilden eines oder mehrerer nicht auf den Kontext bezogenen Register (54a –54c ), die in jeder der Programmiermaschinen (16a –16c ) resident sind, wobei mindestens eines der nicht auf den Kontext bezogenen Register in jeder der Programmiermaschinen (16a –16c ) zum Übertragen von Daten zwischen Programmiermaschinen (16a –16c ) verwendet wird; und Erstellen einer oder mehrerer Pipelines und Durchleiten von mit der einen oder mehreren Aufgaben verbundenen Daten an eine nachfolgende Pipeline-Stufe (132a –132c ) nach Abschluss der einen oder mehreren Aufgaben und Übertragen von Daten von dem mindestens einen nicht auf den Kontext bezogenen Register (54a –54c ) an ein anderes nicht auf den Kontext bezogenes Register (54a –54c ), das in einer benachbarten Programmiermaschine (16a –16c ) resident ist. - Verfahren nach Anspruch 1, wobei das Erstellen der Kontexte für die zugewiesenen Aufgaben das Bereitstel len eines softwaregesteuerten Caches (
64 ,102 ) umfasst. - Verfahren nach Anspruch 2, wobei der softwaregesteuerte Cache ein CAM-Speicher (Content Addressable Memory) (
64 ,102 ) ist. - Verfahren nach Anspruch 1, wobei das Bilden mindestens eines der nicht auf den Kontext bezogenen Register ferner das Bilden mindestens eines Registers des nächsten Nachbarn (
54a –54c ) umfasst, welches in jeder der Programmiermaschinen (16a –16c ) resident ist. - Verfahren nach Anspruch 4, wobei das Erstellen der einen oder der mehreren Pipelines ferner das Übertragen von Daten von dem mindestens einen Register des nächsten Nachbarn (
54a –54c ), das in einer der Programmiermaschinen (16a –16c ) resident ist, an ein nachfolgendes Register des nächsten Nachbarn (54a –54c ) umfasst, das in einer benachbarten Programmiermaschine (16a –16c ) resident ist. - Verfahren nach Anspruch 5, wobei die eine der Programmiermaschinen die aktuell betriebene Pipeline-Stufe (
132a –132c ) der einen oder mehreren Pipelines führt und die benachbarte Programmiermaschine (16a –16c ) eine nachfolgende Pipeline-Stufe (132a –132c ) der einen oder mehreren Pipelines führt. - Verfahren nach Anspruch 1, ferner umfassend das Modifizieren von Variablen in den zugewiesenen Aufgaben, die in den Pipeline-Stufen (
132a –132c ) durch die Programmiermaschinen (16a –16c ) verwendet werden. - Verfahren nach Anspruch 7, wobei die Variablen gemeinsam benutzte Variablen sind, die von den Programmiermaschinen (
16a –16c ) der Pipeline-Stufen (132a –132c ) verwendet werden und einen kritischen Abschnitt enthalten, der die Lese-Modifikations-Schreib-Zeit der gemeinsam benutzten Variablen definiert. - Verfahren nach Anspruch 8, ferner umfassend das Definieren einer Mindestauflösung der Pipeline-Stufe (
132a –132c ), die durch den Unterschied zwischen dem kritischen Abschnitt der gemeinsam benutzten Variablen und der Ankunftszeit eines nachfolgenden Pakets definiert wird, wobei der kritische Abschnitt geringer als die Ankunftszeit des nachfolgenden Pakets ist. - Verfahren nach Anspruch 3, wobei jede der Programmiermaschinen (
16a –16c ) eine Vielzahl von Kontexten gleichzeitig ausführt. - Verfahren nach Anspruch 10, wobei die Vielzahl von Kontexten in einer Reihenfolge ausgeführt wird.
- Verfahren nach Anspruch 11, wobei die Ausführung der Anweisungen in jedem Kontext eine Lesephase und eine Schreib-Modifikations-Phase enthält.
- Verfahren nach Anspruch 12, wobei der CAM (
64 ,102 ) eine Vielzahl von Einträgen zum Überwachen der am weitesten zurückliegend benutzten Variablen enthält. - Verfahren nach Anspruch 13, wobei die Lesephase das Bestimmen des Cachezustands einer gemeinsam benutzten Variable in dem CAM (
64 ,102 ) und das Aktualisieren eines Werts für die gemeinsam benutzte Variable umfasst, wenn die gemeinsam benutzte Variable in dem CAM (64 ,102 ) gecacht wird. - Verfahren nach Anspruch 13, wobei die Lesephase ein Lesen der gemeinsam benutzten Variable aus einem loka len Speicher in mindestens einem der Vielzahl von Kontexten ausführt.
- Verfahren nach Anspruch 15, wobei die verbleibende Vielzahl von Kontexten eine Latenzzeit des Lesens verbergen, indem sie andere zugewiesene Aufgabe zur Verarbeitung von Paketen ausführen.
- Verfahren nach Anspruch 15, wobei die gemeinsam benutzte Variable in dem CAM (
64 ,102 ) gecacht wird und zur Verarbeitung in der Modifikations-Schreib-Phase in dem mindestens einen der Vielzahl von Kontexten verfügbar ist. - Verfahren nach Anspruch 1, wobei mindestens eine Programmiermaschine (
16a –16h ) mehrere mit einer ersten der mehreren Aufgaben verbundene Anweisungen ausführt und zu einer zweiten der mehreren Aufgaben umschaltet, wenn eine mit der ersten der mehreren Aufgaben verbundene Anweisung eine Lange-Latenz-Operation umfasst. - Verfahren nach Anspruch 1, bei dem die mindestens eine Programmiermaschine (
16a –16h ) mehrere mit einer ersten der mehreren Aufgaben verbundene Anweisung ausführt und zu einer zweiten der mehreren Aufgaben umschaltet, wenn eine mit der ersten der mehreren Aufgaben verbundene Anweisung den Zugriff auf den Speicher (14a ,14b ) erfordert. - Prozessor, umfassend: eine oder mehrere Programmiermaschinen (
16a –16c ), die in einer Vielzahl von Pipeline-Stufen (132a –132c ) angeordnet sind und wobei an jeder Pipeline-Stufe (132a –132c ) mindestens eine Programmiermaschine (16a –16h ) zum Ausführen von Folgendem ausgebildet ist: Verwalten der parallelen Verarbeitung einer oder mehrerer Aufgaben, einschließlich des Einrichtens eines Kontexts für jede der einen oder mehreren Aufgaben, wobei mindestens eine der Aufgaben die Ausführung mehrerer Anweisungen erfordert; Umschalten von der Verarbeitung eines der Kontexte zu einem anderen der Kontexte auf der Basis eines Ausführungsstatus einer Aufgabe durch mindestens eine der Programmiermaschinen; Bilden eines oder mehrerer nicht auf den Kontext bezogenen Register (54a –54c ), die in jeder der Programmiermaschinen (16 –16c ) resident sind, wobei mindestens eines der nicht auf den Kontext bezogenen Register in jeder der Programmiermaschinen (16a –16c ) zum Übertragen von Daten zwischen Programmiermaschinen (16a –16c ) verwendet wird; und Erstellen einer oder mehrerer Pipelines und Durchleiten von mit der einen oder mehreren Aufgaben verbundenen Daten an eine nachfolgende Pipeline-Stufe (132a –132c ) nach Abschluss der einen oder mehreren Aufgaben und Übertragen von Daten von dem mindestens einen nicht auf den Kontext bezogenen Register (54a –54c ) an ein anderes nicht auf den Kontext bezogenes Register (54a –54c ), das in einer benachbarten Programmiermaschine (16a –16c ) resident ist. - Prozessor nach Anspruch 20, wobei das mindestens eine nicht auf den Kontext bezogene Register ferner mindestens ein Register des nächsten Nachbarn (
54a –54c ) umfasst, das in der mindestens einen Programmiermaschine resident ist, und das Erstellen der einen oder mehreren Pipelines ferner das Übertragen von Daten von dem Register des nächsten Nachbarn (54a –54c ), das in der mindestens einen Programmiermaschine (16a –16c ) resident ist, an ein nachfolgendes Register des nächsten Nachbarn (54a –54c ) umfasst, das in einer nachfolgenden Programmiermaschine (16a –16c ) resident ist. - Prozessor nach Anspruch 21, wobei jede der Programmiermaschinen (
16a –16h ) einen CAM (Content Addressable Memory) (64 ,102 ) enthält. - Prozessor nach Anspruch 22, wobei der CAM (
64 ,102 ) eine Vielzahl von Einträgen zum Überwachen der am weitesten zurückliegend verwendeten Variablen enthält. - Prozessor nach Anspruch 22, ferner umfassend gemeinsam benutzte Variabeln, die durch die Pipeline-Stufen (
132a –132c ) der Vielzahl von Programmiermaschinen (16a –16b ) verwendet werden, wobei die gemeinsam benutzten Variablen einen kritischen Abschnitt umfassen, der die Lese-Modifikations-Schreibzeit der gemeinsam benutzten Variablen umfasst. - Prozessor nach Anspruch 24, ferner umfassend eine Mindestauflösung der Pipeline-Stufe (
132a –132c ) die durch die Differenz zwischen dem kritischen Abschnitt der gemeinsam benutzten Variablen und der Ankunftszeit eines nachfolgenden Pakets definiert wird, wobei der kritische Abschnitt geringer als die Ankunftszeit des nachfolgenden Pakets ist. - Prozessor nach Anspruch 22, wobei die Vielzahl von Kontexten in Reihenfolge ausgeführt werden, wobei die Reihenfolge eine Lesephase und eine Schreib-Modifikations-Phase enthält, wobei die Lesephase das Bestimmen des Cachezustands einer gemeinsam benutzten Variabeln in dem CAM (
64 ,102 ) und das Aktualisieren eines Werts für die gemeinsam benutzte Variable umfasst, wenn die gemeinsam benutzte Variable in dem CAM (64 ,102 ) gecacht ist, und wobei die Lesephase ein Lesen der gemeinsam benutzten Variablen aus einem lokalen Speicher in mindestens einem der Vielzahl von Kontexten ausführt. - Multiverarbeitungssystem, umfassend einen oder mehrere Prozessoren (
12 ) nach einem der Ansprüche 20 bis 26. - Computerprogrammprodukt, das in einem computerlesbaren Medium gespeichert wird, wobei das Programm eine Vielzahl von Anweisungen umfasst, die bei der Ausführung bewirken, dass der mindestens eine Prozessor (
12 ) das Verfahren nach einem der Ansprüche 1 bis 5 implementiert.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/057,723 US7181594B2 (en) | 2002-01-25 | 2002-01-25 | Context pipelines |
US57723 | 2002-01-25 | ||
PCT/US2003/001580 WO2003065207A2 (en) | 2002-01-25 | 2003-01-16 | Pipelines of multithreaded processor cores for packet processing |
Publications (2)
Publication Number | Publication Date |
---|---|
DE60316774D1 DE60316774D1 (de) | 2007-11-22 |
DE60316774T2 true DE60316774T2 (de) | 2008-08-28 |
Family
ID=27609476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE60316774T Expired - Lifetime DE60316774T2 (de) | 2002-01-25 | 2003-01-16 | Verkettung von mehrfadenprozessorkernen zur bearbeitung von datenpaketen |
Country Status (11)
Country | Link |
---|---|
US (1) | US7181594B2 (de) |
EP (1) | EP1481323B1 (de) |
KR (1) | KR100613923B1 (de) |
CN (1) | CN100440151C (de) |
AT (1) | ATE375552T1 (de) |
AU (1) | AU2003209290A1 (de) |
CA (1) | CA2473551C (de) |
DE (1) | DE60316774T2 (de) |
HK (1) | HK1072298A1 (de) |
TW (1) | TWI231914B (de) |
WO (1) | WO2003065207A2 (de) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7546444B1 (en) | 1999-09-01 | 2009-06-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
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 |
US20020053017A1 (en) * | 2000-09-01 | 2002-05-02 | Adiletta Matthew J. | Register instructions for a 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 |
US7437724B2 (en) * | 2002-04-03 | 2008-10-14 | Intel Corporation | Registers for data transfers |
US20040034858A1 (en) * | 2002-08-14 | 2004-02-19 | Kushlis Robert J. | Programming a multi-threaded processor |
US9330060B1 (en) * | 2003-04-15 | 2016-05-03 | Nvidia Corporation | Method and device for encoding and decoding video image data |
US20060236011A1 (en) * | 2005-04-15 | 2006-10-19 | Charles Narad | Ring management |
US7853951B2 (en) * | 2005-07-25 | 2010-12-14 | Intel Corporation | Lock sequencing to reorder and grant lock requests from multiple program threads |
US20070044103A1 (en) * | 2005-07-25 | 2007-02-22 | Mark Rosenbluth | Inter-thread communication of lock protected data |
US20070124728A1 (en) * | 2005-11-28 | 2007-05-31 | Mark Rosenbluth | Passing work between threads |
US7624250B2 (en) | 2005-12-05 | 2009-11-24 | Intel Corporation | Heterogeneous multi-core processor having dedicated connections between processor cores |
US20070140282A1 (en) * | 2005-12-21 | 2007-06-21 | Sridhar Lakshmanamurthy | Managing on-chip queues in switched fabric networks |
US20070245074A1 (en) * | 2006-03-30 | 2007-10-18 | Rosenbluth Mark B | Ring with on-chip buffer for efficient message passing |
JP5256685B2 (ja) * | 2007-10-18 | 2013-08-07 | 日本電気株式会社 | 情報処理装置 |
US7926013B2 (en) * | 2007-12-31 | 2011-04-12 | Intel Corporation | Validating continuous signal phase matching in high-speed nets routed as differential pairs |
JP5514120B2 (ja) * | 2008-11-14 | 2014-06-04 | 株式会社日立メディコ | 超音波診断装置及び超音波画像生成方法 |
US8127262B1 (en) * | 2008-12-18 | 2012-02-28 | Xilinx, Inc. | Communicating state data between stages of pipelined packet processor |
US10565126B2 (en) | 2017-07-14 | 2020-02-18 | Arm Limited | Method and apparatus for two-layer copy-on-write |
US10489304B2 (en) | 2017-07-14 | 2019-11-26 | Arm Limited | Memory address translation |
US10353826B2 (en) * | 2017-07-14 | 2019-07-16 | Arm Limited | Method and apparatus for fast context cloning in a data processing system |
US10613989B2 (en) | 2017-07-14 | 2020-04-07 | Arm Limited | Fast address translation for virtual machines |
US10467159B2 (en) | 2017-07-14 | 2019-11-05 | Arm Limited | Memory node controller |
US10534719B2 (en) | 2017-07-14 | 2020-01-14 | Arm Limited | Memory system for a data processing network |
US10592424B2 (en) | 2017-07-14 | 2020-03-17 | Arm Limited | Range-based memory system |
US10884850B2 (en) | 2018-07-24 | 2021-01-05 | Arm Limited | Fault tolerant memory system |
Family Cites Families (109)
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 |
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 |
US4745544A (en) * | 1985-12-12 | 1988-05-17 | Texas Instruments Incorporated | Master/slave sequencing processor with forced I/O |
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 |
US5142683A (en) * | 1987-03-09 | 1992-08-25 | Unisys Corporation | Intercomputer communication control apparatus and method |
US4866664A (en) * | 1987-03-09 | 1989-09-12 | Unisys Corporation | Intercomputer communication control apparatus & method |
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 |
DE69132495T2 (de) * | 1990-03-16 | 2001-06-13 | Texas Instruments Inc | Verteilter Verarbeitungsspeicher |
US5390329A (en) * | 1990-06-11 | 1995-02-14 | Cray Research, Inc. | Responding to service requests using minimal system-side context in a multiprocessor environment |
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 |
US5347648A (en) * | 1990-06-29 | 1994-09-13 | Digital Equipment Corporation | Ensuring write ordering under writeback cache error conditions |
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 |
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 |
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 |
DE69231957T2 (de) * | 1991-10-21 | 2002-04-04 | Toshiba Kawasaki Kk | Hochgeschwindigkeitsprozessor zum fähiger Abhandeln mehrerer Unterbrechungen |
US5452437A (en) * | 1991-11-18 | 1995-09-19 | Motorola, Inc. | Methods of debugging multiprocessor system |
US5442797A (en) * | 1991-12-04 | 1995-08-15 | Casavant; Thomas L. | Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging |
JP2823767B2 (ja) * | 1992-02-03 | 1998-11-11 | 松下電器産業株式会社 | レジスタファイル |
US5459842A (en) * | 1992-06-26 | 1995-10-17 | International Business Machines Corporation | System for combining data from multiple CPU write requests via buffers and using read-modify-write operation to write the combined data to the memory |
DE4223600C2 (de) * | 1992-07-17 | 1994-10-13 | Ibm | Mehrprozessor-Computersystem und Verfahren zum Übertragen von Steuerinformationen und Dateninformation zwischen wenigstens zwei Prozessoreinheiten eines Computersystems |
ATE188559T1 (de) * | 1992-12-23 | 2000-01-15 | Centre Electron Horloger | Multi-tasking-steuerungsgerät mit geringem energieverbrauch |
EP0680640A1 (de) * | 1993-01-22 | 1995-11-08 | University Corporation For Atmospheric Research | Multipipelinemultiprozessorsystem |
US5404464A (en) * | 1993-02-11 | 1995-04-04 | Ast Research, Inc. | Bus control system and method that selectively generate an early address strobe |
US5448702A (en) * | 1993-03-02 | 1995-09-05 | International Business Machines Corporation | Adapters with descriptor queue management capability |
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 |
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 |
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 | 富士通株式会社 | キュー装置 |
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 |
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 |
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 |
US5699537A (en) * | 1995-12-22 | 1997-12-16 | Intel Corporation | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions |
DE19681186D2 (de) | 1995-12-29 | 1999-03-11 | Tixi Com Gmbh | Verfahren und Mikrocomputersystem zur automatischen, sicheren und direkten Datenübertragung |
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 |
US5784649A (en) * | 1996-03-13 | 1998-07-21 | Diamond Multimedia Systems, Inc. | Multi-threaded FIFO pool buffer and bus transfer control system |
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 |
KR100219597B1 (ko) * | 1996-03-30 | 1999-09-01 | 윤종용 | 씨디-롬 드라이브에서의 큐잉 제어 방법 |
US5956518A (en) * | 1996-04-11 | 1999-09-21 | Massachusetts Institute Of Technology | Intermediate-grain reconfigurable processing device |
US5946487A (en) * | 1996-06-10 | 1999-08-31 | Lsi Logic Corporation | Object-oriented multi-media architecture |
KR980004067A (ko) * | 1996-06-25 | 1998-03-30 | 김광호 | 멀티프로세서 시스템의 데이터 송수신장치 및 방법 |
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 |
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 |
US6058465A (en) | 1996-08-19 | 2000-05-02 | Nguyen; Le Trong | Single-instruction-multiple-data processing in a multimedia signal processor |
JP2970553B2 (ja) * | 1996-08-30 | 1999-11-02 | 日本電気株式会社 | マルチスレッド実行方法 |
US5812868A (en) * | 1996-09-16 | 1998-09-22 | Motorola Inc. | Method and apparatus for selecting a register file in a data processing system |
US5860158A (en) * | 1996-11-15 | 1999-01-12 | Samsung Electronics Company, Ltd. | Cache control unit with a cache request transaction-oriented protocol |
US5905876A (en) * | 1996-12-16 | 1999-05-18 | Intel Corporation | Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system |
US5854922A (en) * | 1997-01-16 | 1998-12-29 | Ford Motor Company | Micro-sequencer apparatus and method of combination state machine and instruction memory |
US5961628A (en) | 1997-01-28 | 1999-10-05 | Samsung Electronics Co., Ltd. | Load and store unit for a vector processor |
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 |
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 |
US6006321A (en) * | 1997-06-13 | 1999-12-21 | Malleable Technologies, Inc. | Programmable logic datapath that may be used in a field programmable device |
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 |
US5938736A (en) * | 1997-06-30 | 1999-08-17 | Sun Microsystems, Inc. | Search engine architecture for a high performance multi-layer switch element |
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 |
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 |
US5948081A (en) * | 1997-12-22 | 1999-09-07 | Compaq Computer Corporation | System for flushing queued memory write request corresponding to a queued read request and all prior write requests with counter indicating requests to be flushed |
US5970013A (en) | 1998-02-26 | 1999-10-19 | Lucent Technologies Inc. | Adaptive addressable circuit redundancy method and apparatus with broadcast write |
US6067300A (en) * | 1998-06-11 | 2000-05-23 | Cabletron Systems, Inc. | Method and apparatus for optimizing the transfer of data packets between local area networks |
US6327650B1 (en) * | 1999-02-12 | 2001-12-04 | Vsli Technology, Inc. | Pipelined multiprocessing with upstream processor concurrently writing to local register and to register of downstream processor |
US6745317B1 (en) * | 1999-07-30 | 2004-06-01 | Broadcom Corporation | Three level direct communication connections between neighboring multiple context processing elements |
US7546444B1 (en) * | 1999-09-01 | 2009-06-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
US6625654B1 (en) * | 1999-12-28 | 2003-09-23 | Intel Corporation | Thread signaling in multi-threaded network processor |
US6665755B2 (en) * | 2000-12-22 | 2003-12-16 | Nortel Networks Limited | External memory engine selectable pipeline architecture |
-
2002
- 2002-01-25 US US10/057,723 patent/US7181594B2/en not_active Expired - Fee Related
-
2003
- 2003-01-16 CN CNB038024640A patent/CN100440151C/zh not_active Expired - Fee Related
- 2003-01-16 AT AT03707442T patent/ATE375552T1/de not_active IP Right Cessation
- 2003-01-16 DE DE60316774T patent/DE60316774T2/de not_active Expired - Lifetime
- 2003-01-16 WO PCT/US2003/001580 patent/WO2003065207A2/en active IP Right Grant
- 2003-01-16 KR KR1020037017289A patent/KR100613923B1/ko not_active IP Right Cessation
- 2003-01-16 EP EP03707442A patent/EP1481323B1/de not_active Expired - Lifetime
- 2003-01-16 AU AU2003209290A patent/AU2003209290A1/en not_active Abandoned
- 2003-01-16 CA CA002473551A patent/CA2473551C/en not_active Expired - Fee Related
- 2003-01-24 TW TW092101590A patent/TWI231914B/zh not_active IP Right Cessation
-
2005
- 2005-03-10 HK HK05102095A patent/HK1072298A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US20030145173A1 (en) | 2003-07-31 |
US7181594B2 (en) | 2007-02-20 |
KR100613923B1 (ko) | 2006-08-18 |
CN100440151C (zh) | 2008-12-03 |
CA2473551C (en) | 2009-01-06 |
WO2003065207A3 (en) | 2004-05-27 |
TW200307214A (en) | 2003-12-01 |
AU2003209290A1 (en) | 2003-09-02 |
ATE375552T1 (de) | 2007-10-15 |
EP1481323A2 (de) | 2004-12-01 |
TWI231914B (en) | 2005-05-01 |
CN1820253A (zh) | 2006-08-16 |
WO2003065207A2 (en) | 2003-08-07 |
HK1072298A1 (en) | 2005-08-19 |
CA2473551A1 (en) | 2003-08-07 |
KR20040017251A (ko) | 2004-02-26 |
DE60316774D1 (de) | 2007-11-22 |
EP1481323B1 (de) | 2007-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE60316774T2 (de) | Verkettung von mehrfadenprozessorkernen zur bearbeitung von datenpaketen | |
DE60015395T2 (de) | Speicher, der zwischen verarbeitenden threads geteilt ist | |
DE60006270T2 (de) | Parallele prozessorarchitektur | |
DE60030767T2 (de) | Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor | |
DE60011797T2 (de) | Ausführung von mehreren fäden in einem parallelprozessor | |
DE60010907T2 (de) | Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter | |
DE3716229C2 (de) | Mikroprozessorchip mit einem Stapelrahmen-Cache | |
DE69721640T2 (de) | Multiprozessor-Rechnersystem und Verfahren zur Steuerung des Verkehrsflusses | |
DE69727773T2 (de) | Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor | |
DE112005000706B4 (de) | Verfahren und System zum Bereitstellen von Multi-Threading auf Nutzerebene | |
DE2716369C2 (de) | ||
DE2230102C2 (de) | Mikroprogrammierter Prozessor mit bitparalleler Datenübertragung | |
DE69932066T2 (de) | Mechanismus zur "store-to-load forwarding" | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE60005002T2 (de) | Vertikal-threaded prozessor mit multidimensionalem speicher | |
DE112015005597T5 (de) | Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor | |
DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
DE69826404T2 (de) | Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen | |
DE112013003731T5 (de) | Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading | |
DE112010004322T5 (de) | Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge | |
DE1966633B2 (de) | Datenverarbeitungsanlage mit überlappter Arbeitswelse bei Verwendung eines Haupt- und Pufferspeichers | |
DE10110504A1 (de) | Controller für Prozessoren mit mehreren Befehlsthreads | |
DE112010005821T5 (de) | Kontextwechsel | |
DE4335475A1 (de) | Datenverarbeitungseinrichtung mit Cache-Speicher | |
DE19545179A1 (de) | Vektorspeicheroperationen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |