DE10353268B3 - Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten - Google Patents

Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten Download PDF

Info

Publication number
DE10353268B3
DE10353268B3 DE10353268A DE10353268A DE10353268B3 DE 10353268 B3 DE10353268 B3 DE 10353268B3 DE 10353268 A DE10353268 A DE 10353268A DE 10353268 A DE10353268 A DE 10353268A DE 10353268 B3 DE10353268 B3 DE 10353268B3
Authority
DE
Germany
Prior art keywords
thread
unit
processor
standard
root
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 - Fee Related
Application number
DE10353268A
Other languages
English (en)
Inventor
Xiaoning Nie
Jinan Lin
Lajos Gazsi
Sönke MEHRGARDT
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE10353268A priority Critical patent/DE10353268B3/de
Priority to US10/987,935 priority patent/US7526636B2/en
Application granted granted Critical
Publication of DE10353268B3 publication Critical patent/DE10353268B3/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Abstract

Die vorliegende Erfindung betrifft einen parallelen Multithread-Prozessor (1) mit geteilten Kontexten, wobei M parallel verschaltete Standardprozessorrumpfeinheiten (2) zur Befehlsausführung von Programmbefehlen verschiedener Threads (T) und N Kontextspeicher (3), welche jeweils einen aktuellen Zustand eines Threads (T) zwischenspeichern, und eine Thread-Kontrolleinheit (4), durch die jede Standardprozessorrumpfeinheit (2) an jeden Kontextspeicher (3) schaltbar ist, bereitgestellt werden. Demnach stellt die Erfindung eine Prozessorarchitektur bereit, bei der eine Anzahl N an verschiedenen Kontextspeichern (3) bzw. entpsrechenden Threads (T) mit einer Anzahl M an Standardprozessorrumpfeinheiten (2) quasi voll-vernetzt ist. D. h. es wird nicht nur eine Parallelisierung der Standardprozessorrumpfeinheiten (2), sondern auch der Threads (T) bzw. der Kontextspeicher (3) genutzt.

Description

  • Die Erfindung betrifft einen parallelen Multithread-Prozessor (PMT) mit geteilten Kontexten, welcher mehrere parallel verschaltete Standardprozessorrumpfeinheiten (SPRE) zur Befehlsausführung von Programmbefehlen verschiedener Threads enthält. Der Multithread-Prozessor weist mehrere Kontextspeicher, die jeweils einen aktuellen Prozessor-Zustand eines aktuell ausgeführten Threads zwischenspeichern, und eine Thread-Kontrolleinheit auf, durch die jede Standardprozessorrumpfeinheit an jeden Kontextspeicher schaltbar ist.
  • Eingebettete Prozessoren und deren Architekturen werden an ihrer Rechenleistung, ihrem Leistungsverbrauch, ihrem Durchsatz, ihren Kosten und ihrer Echtzeitfähigkeit gemessen. Um den Durchsatz und die Prozessorgeschwindigkeit zu erhöhen, kommt das Prinzip des Pipelining zum Einsatz. Die Grundidee des Pipelining basiert darauf, beliebige Instruktionen bzw. Befehle in Bearbeitungsphasen gleicher zeitlicher Dauer zu unterteilen. Eine Pipeline mit verschiedenen Verarbeitungselementen ist dann möglich, wenn die Verarbeitung einer Instruktion selbst in mehrere Phasen mit disjunkten und nacheinander durchführbaren Prozessschritten einteilbar ist (wie in T. Bayerlein, 0. Hagenbruch: „Taschenbuch Mikroprozessortechnik", 2. Auflage Fachbuchverlag Leipzig im Karl Hanser Verlag München – Wien, ISBN 3-446-21686-3 beschrieben). Die ursprünglichen zwei Befehlsausführungsphasen des Von-Neumann-Modells, nämlich Befehlsholung und Befehlsbearbeitung werden dabei weiter unterteilt, da sich diese Teilung in zwei Phasen für ein Pipelining als zu grob erweist. Die bei RISC-Prozessoren im Wesentlichen angewendete Pipelinevariante beinhaltet vier Phasen der Befehlsbearbeitung, nämlich Befehlholen (Instruction Fetch), Befehlcodieren/Operandenholen (Instruction Decoding/Operand Fetch), Befehlausführung (Execution) und Zurückschreiben (Write Back).
  • In der ersten Phase, der Befehlholen-Phase, werden die Instruktionen aus dem Speicher in ein Pipelineregister des Prozessors geladen.
  • Die zweite Befehlsphase, die eine Befehldecodier/Operandenholen-Phase ist, besteht aus zwei datenunabhängigen Prozessschritten, nämlich dem Befehldecodieren und dem Holen von Operanden. Im Befehldecodier-Schritt werden in einer ersten Datenverarbeitung die im Befehlscode codierten Daten decodiert. Hierbei werden bekanntermaßen die Operationsvorschrift (Opcode), die Adressen der zu ladenden Operanden, die Adressierungsart und weitere Zusatzsignale bestimmt, die im Wesentlichen die nachfolgenden Befehlsausführungsphasen beeinflussen. Im Operandenholen-Prozessschritt werden alle adressierten Operanden aus den Registern des Prozessors geladen.
  • In der dritten Befehlsphase, der Befehlsausführungs-Phase, werden die Rechenoperationen entsprechend den decodierten Befehlen bzw. Instruktionen ausgeführt. Die Operation selbst, sowie die dabei in Anspruch genommenen Schaltungsteile bzw. Register des Prozessors sind im Wesentlichen von der Art des abzuarbeitenden Befehls abhängig.
  • Bekanntermaßen werden in der vierten und letzten Phase, der Zurückschreibe-Phase, die Ergebnisse der Operationen einschließlich sogenannter Zusatzsignale bzw. Statusflags bzw. Flags in die entsprechenden Register oder externen Speicher gespeichert. Mit dieser Phase ist die arithmetische Bearbeitung bzw. Abarbeitung eines Maschinenbefehls bzw. einer Maschineninstruktion beendet.
  • Eine herkömmliche Rechnerarchitektur einer Von-Neumann-Maschine weist eine Standardprozessoreinheit SPE auf, welche Instruktionen bzw. Programmbefehle eines Thread T (Kontrollfaden) abarbeitet.
  • Eine Standardprozessoreinheit SPE weist im Wesentlichen eine Befehlholeneinheit BHE, eine Befehldecodier/Operandenholeinheit BD/OHE, eine Befehlausführungseinheit BAE und eine Zurückschreibeeinheit ZSE, sowie Pipelineregister, eine Prozessorkontrolleinheit PKE, Registerfiles K, ein Programmzählregister PZR und einen Datenbus DB auf.
  • Ein Thread T bezeichnet einen Kontrollfaden eines Codes bzw. Quellcodes bzw. Programms, wobei innerhalb eines Threads T Datenabhängigkeiten bestehen und zwischen verschiedenen Threads T schwache Datenabhängigkeiten bestehen (wie in Kap. 3 in T. Bayerlein, 0. Hagenbruch: „Taschenbuch Mikroprozessortechnik", 2. Auflage Fachbuchverlag Leipzig im Karl Hanser Verlag München – Wien, ISBN 3-446-21686-3 beschrieben).
  • Eine Eigenschaft eines Prozesses ist, dass ein Prozess stets auf einen eigenen Speicherbereich zugreift. Ein Prozess besteht aus mehreren Threads. Demnach ist ein Thread ein Programmteil eines Prozesses. Ein Kontext eines Threads ist der Prozessorzustand eines Prozessors, welcher diesen Thread bzw. Instruktionen dieses Threads bearbeitet. Demnach ist der Kontext eines Threads definiert als ein temporärer Prozessorzustand während der Bearbeitung des Threads durch diesen Prozessor. Der Kontext wird von der Hardware des Prozessors, nämlich dem Programmzählregister PZR bzw. Programmcounter PC, dem Registerfile bzw. Kontextspeicher K und dem dazu gehörigen Statusregister SR gehalten.
  • 1 zeigt ein Beispiel zur Erläuterung der Problematik herkömmlicher Von-Neumann-Maschinen respektive ihres Durchsatzes und ihrer Blockierwahrscheinlichkeit. Die in 1 dargestellte Von-Neumann-Maschine bzw. Standardprozessoreinheit SPE weist entsprechend der Unterteilung einer Instruktion I in verschiedene Befehlsphasen eine hardwaretechnische Unterteilung (nicht gezeigt) des Prozessors in verschiedene Bauelemente, eine Befehlholeinheit BHE, eine Befehlsdecodier/Operandenholeinheit BD/OHE, eine Befehlsausführungseinheit BAE und eine Zurückschreibeeinheit ZSE auf. Die Standardprozessoreinheit SPE arbeitet nach dem Pipelineverfahren, wobei in 1 in jedem Taktzyklus t1, t2, tx zur Darstellung der Problematik die Befehlsdecodier/Operandenholeinheit BD/OHE der Standardprozessoreinheit SPE dargestellt ist.
  • Die Befehlsdecodier/Operandenholeinheit BD/OHE der Standardprozessoreinheit SPE decodiert zu jedem Taktzyklus ti eine j-te Instruktion Ikj eines Threads T-k. Nach dem Beispiel nach 1 bearbeitet die Befehldecodier/Operandenholeinheit BD/OHE zum Taktzyklus t1 die erste Instruktion IA1 des Threads T-A, im Taktzyklus t2 decodiert die Befehldecodier/Operandenholeinheit BD/OHE die zweite Instruktion IA2 des Threads T-A. Aufgrund der Instruktion I12 des Threads T-A tritt, weil beispielsweise Operanden respektive dieser Instruktion IA2 geholt werden müssen, auf welche gewartet werden muss, eine Blockierung der Pipeline der Standardprozessoreinheit SPE auf.
  • Nachdem die Befehldecodier/Operandenholeinheit BD/OHE aufgrund der Latenzzeit, verursacht durch die Instruktion I12, einige Taktzyklen keine Instruktion abarbeiten konnte, wird erst im Taktzyklus tx die Instruktion IA3 von Befehldecodier/Operandenholeinheit decodiert.
  • Die Standardprozessoreinheit SPE nach diesem Stand der Technik bearbeitet zu jedem Zeitpunkt (hier: t1, t2, tx) Befehle bzw. Instruktionen eines bestimmten Threads T-A. Ein Problem bei dieser einfachen Rechnerarchitektur tritt auf, wenn der abzuarbeitende Thread T-A temporär blockiert ist.
  • Eine temporäre Blockierung eines Threads T kann verschiedene Ursachen haben, beispielsweise durch eine Latenzzeit beim Zugriff auf einen externen Speicher bzw. auf ein internes Register.
  • Eine temporäre Blockierung der Standardprozessoreinheit SPE liegt vor, wenn die Prozessorpipeline bzw. der Befehlsdecoder keinen weiteren Programmbefehl bzw. keine weitere Instruktion eines Threads T verarbeiten kann bzw. zu dekodieren hat.
  • Ist ein Thread T, der von der Standardprozessoreinheit SPE bearbeitet wird, temporär blockiert, so ist auch für diese Zeit die Standardprozessoreinheit SPE blockiert. Eine Blockierung vermindert die Leistungsfähigkeit und den Durchsatz eines Prozessors erheblich. Die Wahrscheinlichkeit, dass ein Thread T durch eine interne Blockierung (z. B. durch eine Latenzzeit bei einem Registerzugriff) oder durch eine externe Blockierung (z. B. bei einem Cache-Miss) blockiert ist, wird als Blockierwahrscheinlichkeit pT des Threads bezeichnet. Nimmt man an, dass die Blockierwahrscheinlichkeit für einen Thread T pT sei, so ist die Blockierwahrscheinlichkeit pVN für die in 1 schematisch skizzierte Von-Neumann-Maschine ebenfalls pT.
  • Ein Mulithread-Prozessor MT ist ein Prozessor, welcher die Abarbeitung mehrerer Kontexte hardware-technisch bereitstellt, indem für die mehreren Kontexte jeweils ein Programmzählregister PZR, eine Registerbank RB und ein Statusregister SR vorgesehen sind.
  • In 2a ist schematisch ein herkömmlicher Multithread-Prozessor MT dargestellt, bei der eine Standardprozessoreinheit SPE mehrere Threads T bzw. Kontrollfäden, leichtgewichtige Tasks, separate Programmcodes, gemeinsame Datenbereiche abarbeitet. In 2a repräsentieren ohne Beschränkung der Allgemeinheit die Threads T-A, T-B eine beliebige Anzahl N an Threads und sind innerhalb eines Multithread-Prozessors MT mit der Standardprozessoreinheit SPE fest verdrahtet, wobei eine effizientere Umschaltung zwischen einzelnen Threads T gewährleistet wird. Dadurch vermindert sich die Blockierwahrscheinlichkeit pMT eines Multithread-Prozessors MT gegenüber der Blockierwahrscheinlichkeit pVN einer Von-Neumann-Maschine (1) bei gleichbleibender Thread-Blockierwahrscheinlichkeit pT, da ineffiziente Wartestellungen des Prozessors durch Ergebnisoperationen des Speichers minimiert werden. Um den angedeuteten Sachverhalt zu verdeutlichen, zeigt 2a die Befehldecodier/Operandenholeinheit BD/OHE der Standardprozessoreinheit SPE zu den Zeitpunkten t1, t2, t5 bei der Abarbeitung von Instruktionen IAj (T-A) des Threads (T-A) bzw. bei der Abarbeitung von Instruktionen IBj (T-B) des Threads (T-B). Zum Zeitpunkt t2 ist der Thread T-A ein blockierter Thread T*-A (vergleiche oben genannte Gründe) und wird durch den ebenfalls mit der Standardprozessoreinheit SPE fest verdrahteten Thread T-B substituiert. Im Folgenden (ab dem Zeitpunkt t5) bearbeitet die Standardprozessoreinheit SPE Instruktionen IBj des Thread T-B bis der Thread T-B blockiert ist. Bezeichnet weiterhin pT die Blockierwahrscheinlichkeit für einen Thread T, so ist die Blockierwahrscheinlichkeit pMT für einen Multithread-Prozessor MT abhängig von der Anzahl N der mit einer Standardprozessoreinheit SPE fest verdrahteten Kontextspeichern K-1 – K-N, wobei ein Kontextspeicher K-i die hardwaretechnische Implementierung eines Threads T-k bereitstellt. Die Blockierwahrscheinlichkeit pMT des Multithread-Prozessors MT ist bei einer Annahme der statistischen Unabhängigkeit der einzelnen Threads T, die jeweils unabhängige Datenbereiche repräsentieren, pT N. Die Blockierwahrscheinlichkeit pMT ist demnach zwar vermindert, der Durchsatz aber im Vergleich zu einer Von-Neumann-Maschine nach 1 nur unwesentlich erhöht.
  • Wird bei der Ausführung einer Instruktion bzw. eines Programmbefehls eines Threads T die Pipeline der Standardprozessoreinheit SPE blockiert, werden SPE intern Signale generiert, welche zur Steuerung des Thread-Umschaltens genutzt werden können.
  • In 2b ist ein schematisches Blockschaltbild eines herkömmlichen Multithread-Prozessors MT nach dem Stand der Technik mit einer Verbindung zu einem Befehlsspeicher BS und mit einer Verbindung zu einem Datenbus DB gezeigt. Ein herkömmlicher Multithread-Prozessor MT nach dem Stand der Technik weist im Wesentlichen eine Standardprozessoreinheit SPE, N Kontextspeicher K für N Threads T, eine Thread-Kontrolleinheit TKE und eine Prozessorkontrolleinheit PKE auf. Die genannten Bauelemente des Multithread-Prozessors MT sind im Wesentlichen über Datenleitungen DL, Adressleitungen AL und Multiplexer M', M'' miteinander verbunden. Jeder der N Kontextspeicher K weist ein Programmzählregister PZR, eine Registerbank RB und ein Statusregister SR auf. Durch einen N × 1 Multiplexer M' werden Daten aus den N Programmzählregistern PZR der N Kontextspeicher K auf eine Adressleitung AL, die mit dem Befehlsspeicher BS verbunden ist, gelegt. Basierend auf diesen Adressen werden die Instruktionen I der jeweiligen Threads T, die in dem Befehlsspeicher BS gespeichert sind, aus dem Befehlsspeicher BS geholt und der Standardprozessoreinheit SPE zur Verfügung gestellt. Die Standardprozessoreinheit SPE weist entsprechend den Phasen des Pipelineverfahrens einen Befehlsdecodier/Operandenholeinheit BD/OHE, eine Befehlsausführungseinheit BAE und eine Zurückschreibeeinheit ZSE auf.
  • Die durch das Befehlholen bereitgestellten Instruktionen I der N Threads T werden in der Befehlsdecodier/Operandenholeinheit BD/OHE decodiert und die adressierten Operanden werden aus der Registerbank RB bzw. Statusregister SR des entsprechenden Kontextsspeichers K des dazugehörigen Threads T über einen N × 1 Multiplexer M' ausgelesen. Die Befehlsausführungseinheit BAE führt anschließend die decodierte Instruktion I des Threads T mit ihren dazugehörigen Operanden aus und übergibt das Ergebnis der Operation sowie potentielle Flagdaten- bzw. Zusatzzeichen an die Zurückschreibeeinheit ZSE. Im Falle eines Speicherbefehls schreibt die Zurückschreibeeinheit ZSE die empfangenen Daten gegebenenfalls auf den Datenbus DB bzw. über einen 1 × N Multiplexer auf den jeweiligen Kontextspeicher K. Dabei werden die Ergebnisse der arithmetisch-logischen Operationen in der dazugehörigen Registerbank RB abgespeichert und die Flags bzw. Zusatzzeichen im dazugehörigen Statusregister SR abgelegt.
  • Die Flag- bzw. Zusatzzeichen der Statusregister SR stehen über einen N × 1 Multiplexer M' der Prozessorkontrolleinheit PKE, die über interne Steuersignale ISS den Befehlsdecodier/Operandenholeinheit BD/OHE, die Befehlsausführungseinheit BAE und die Zurückschreibeeinheit ZSE steuert, zur Verfügung.
  • Die Thread-Kontrolleinheit TKE steuert das Ein- und Auslesen der Kontextspeicher K über die jeweiligen Multiplexer M', M'' mittels Multiplexersteuersignale <t>. Bei einem Multiplexersteuersignal <t> bezeichnet t eine Threadnummer für einen Thread T. Die Thread-Kontrolleinheit TKE nutzt als Eingang interne Ereignissteuersignale ESS' und externe Ereignissteuersignale ESS'', wobei die internen Ereignissteuersignale ESS' von der Standardprozessoreinheit SPE bereitgestellt werden und die externen Ereignissteuersignale ESS'' von externen Einrichtungen wie z. B. externen Speichern oder dem Programmcode bereitgestellt werden.
  • Eine bekannte Weiterbildung des Standes der Technik zeigt 3a, wobei hier mehrere Multithread-Prozessoren MT parallel eingesetzt werden. Dabei steht jedem Standardprozessor SPE ein eigener Satz an Kontextspeicher K zur Verfügung, wobei die Kontextspeicher K mit der jeweiligen Standardprozessoreinheit SPE festverdrahtet sind.
  • 3a zeigt einen parallelen Multithread-Prozessor MT, wobei dieser zwei Standardprozessoreinheiten SPE-A, SPE-B und vier Kontextspeicher für vier disjunkte Threads T-A, T-B, T-C und T-D aufweist. Die Threads T-A, T-B bzw. ihre hardwaretechnischen Implementierungen bzw. Kontextspeicher K-A, K-B sind fest mit der Standardprozessoreinheit SPE-A verbunden bzw. verdrahtet. Entsprechend sind die Threads T-C, T-D bzw. ihre Kontextspeicher K-C, K-D fest mit der Standardprozessoreinheit SPE-B verbunden bzw. verdrahtet.
  • 3b zeigt zwei Befehldecodier/Operandenholeinheiten BD/OHE von zwei parallelen Standardprozessoreinheiten SPE-A, SPE-B, wobei die Blockierwahrscheinlichkeit des Gesamtsystems gleich der Blockierwahrscheinlichkeit eines Multithread-Prozessors MT nach 2a ist, und demnach pT N beträgt. Der Durchsatz der Anordnung nach 3b ist im Wesentlichen doppelt so groß wie der Durchsatz der Anordnung nach 2a. Allgemein ist der Durchsatz von M parallelen Multithread-Prozessors M mal so groß wie der eines einfachen Multithread-Prozessors MT, wobei allerdings die Blockierwahrscheinlichkeit des Gesamtsystems stark zunimmt.
  • Die Druckschrift US 6,507,862 B1 beschreibt einen Prozessor, der sowohl vertikales Multithreading als auch horizontales Multithreading ausführen kann. Dazu werden mehrere vertikalmultigethreadete Prozessoren parallel betrieben. Jedem vertikal-multigethreadeten Prozessor ist eine bestimmte Anzahl an Threads eindeutig zugeordnet.
  • In dem Dokument „A Survey of Processors with explicit Multithreading", erschienen in ACM-Computing Surveys, März 2003, PP. 29-63, zählen die Autoren Theo Ungerer, Borut Robič und Jurij Šilc eine Vielzahl bekannter Multithread-Prozessoren und Multithread-Techniken auf.
  • Es ist daher Aufgabe der vorliegenden Erfindung, einen Multithread-Prozessor zu schaffen, der eine minimale Blockierwahrscheinlichkeit und einen hohen Durchsatz bzw. Performance aufweist.
  • Diese Aufgabe wird erfindungsgemäß durch einen Multithread-Processor gemäß Anspruch 1 gelöst.
  • Die der vorliegenden Erfindung zugrundeliegende Idee besteht im Wesentlichen darin, die N Threads bzw. ihre entsprechenden N Kontextspeicher nicht wie bei herkömmlichen Multithread-Prozessoren nach dem Stand der Technik in Sätze zu unterteilen, wobei jeder dieser Sätze direkt mit einer zugehörigen Standardprozessorrumpfeinheit direkt verbunden bzw. verdrahtet ist, sondern die Kontextspeicher derart bereitzustellen, so dass jede Standardprozessorrumpfeinheit (SPRE) auf jeden Kontextspeicher Zugriff hat.
  • Dabei werden die Instruktionen der N Threads bzw. der N Kontextspeicher dynamisch an die M Standardrumpfprozessoreneinheiten verteilt.
  • Dabei werden die N Kontextspeicher und M Standardprozessorrumpfeinheiten durch Multiplexer angeschlossen. Bei der Ausführung der jeweiligen Instruktion bzw. des jeweiligen Programmbefehls in jeder Pipelinestufe eines jeden jeweiligen Prozessors bzw. jeder jeweiligen Standardprozessorrumpfeinheit wird der entsprechende Kontert über die Multiplexer ausgewählt, wobei jede Instruktion bzw. jeder Programmbefehl innerhalb der Standardprozessorrumpfeinheit ihren entsprechenden Kontext benötigt. Für die Auswahl des entsprechenden Kontextes werden Steuersignale <t,p> herangezogen, wobei t die Threadnummer und p die Standardprozessorrumpfnummer bzw. Nummer der Standardprozessorrumpfeinheit bezeichnet. Die Steuersignale <t,p> steuern bzw. schalten an den. Multiplexern.
  • Es wird dazu ein Multithread-Prozessor bereitgestellt, der aufweist: mehrere (M) parallel verschaltene Standardprozessorrumpfeinheiten (2; 2-1, ..., 2-M) zur Befehlsausführung von Programmbefehlen verschiedener Threads, wobei jede Standardprozessorrumpfeinheit (2; 2-1, ..., 2-M) zumindest eine Befehldecodiereinheit (2'; 2''-1, ..., 2''-M) und eine Befehlsausführungseinheit (2''; 2''-1, ..., 2''-M) aufweist; mehrere (N) Kontextspeicher (3; 3-1, ..., 3-N), die jeweils einen aktuellen Prozessor-Zustand eines Threads (T; T-1,..., T-N) zwischenspeichern, wobei jeder Kontextspeicher (3; 3-1,..., 3-N) zumindest ein Register (3', 3'', 3''') beinhaltet; und eine Thread-Kontrolleinheit (4), welche Multiplexersteuersignale (<t, p>) zur Steuerung von Multiplexern (10, 11) generiert, mit denen jede Standardprozessorrumpfeinheit (2; 2-1,..., 2-M) an jeden Kontextspeicher (3; 3-1,..., 3-N) zur Minimierung einer Blockierwahrscheinlichkeit des Multithread-Prozessors schaltbar ist.
  • Die Vorteile der erfindungsgemäßen Anordnung liegen insbesondere darin, dass durch die Zuordnung von N Threads bzw. N Kontextspeichern auf M Standardprozessorrumpfeinheiten eine minimale Blockierwahrscheinlichkeit sowie ein hoher Durchsatz erreicht werden.
  • Durch die Verwendung von Standardprozessorrumpfeinheiten ist das Gesamtsystem, im Wesentlichen die Anzahl der Standardprozessorrumpfeinheiten und die Anzahl der Threads, skalierbar und einzelne Baukomponenten sind einfach austauschbar.
  • Dadurch, dass die Standardprozessorrumpfeinheiten dem Pipelineprinzip nach Von-Neumann genügen, ist ferner eine deterministische Befehlsausführungszeit gegeben, welche die Anordnung nach der Erfindung echtzeitfähig macht.
  • In den Unteransprüchen finden sich vorteilhafte Weiterbildungen des parallelen Multithread-Prozessors (PMT) mit geteilten Kontexten.
  • Gemäß einer bevorzugten Weiterbildung weist jede Standardprozessorrumpfeinheit einen Befehlsdecoder auf.
  • Gemäß einer bevorzugten Weiterbildung weist jede Standardprozessorrumpfeinheit eine Operandenholeinheit auf.
  • Durch den Befehlsdecoder wird der Programmbefehl decodiert und potentielle Operanden werden mittels der Operandenholeinheit aus dem mittels der Steuersignale <t,p> selektierten Kontextspeicher zur weiteren Bearbeitung geholt.
  • Durch eine Befehlsausführungseinheit wird die auszuführende arithmetisch-logische Funktion mit den geholten Operanden ausgeführt.
  • Durch eine Zurückschreibeeinheit werden die Ergebnisse der arithmetisch-logischen Operationen sowie optional Zusatzzeichen bzw. Flags mittels Multiplexer und entsprechenden Steuersignalen <t,p> in die Kontextspeicher bzw. in den Datenspeicher geschrieben.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung weist jede Standardprozessorrumpfeinheit eine zugehörige Prozessor-Kontrolleinheit auf.
  • Durch die Prozessor-Kontrolleinheit wird jede Bearbeitungsphase bzw. Pipelinestufe jeder Standardprozessorrumpfeinheit einzeln durch interne Steuersignale für jede Pipelinestufe gesteuert.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung weist jeder Kontextspeicher ein Programmzählregister, eine Registerbank und ein Statusregister auf.
  • Das Programmzählregister dient zum Zwischenspeichern eines Programmzählers, durch welchen das Holen der Instruktionen der jeweiligen Threads aus dem Befehlsspeicher gesteuert wird.
  • Die Registerbank dient zum Zwischenspeichern von Operanden, wobei zum einen Operanden in die Operandenholeinheit geschrieben werden und nach der folgenden Befehlsausführungseinheit durch die Zurückschreibeeinheit wieder mit potentiell neuem Dateninhalt in die Register geschrieben werden.
  • Das Statusregister dient zum Zwischenspeichern von Zusatzzeichen bzw. Statusflags, wobei die Zusatzzeichen bzw. Statusflags sowohl für weitere arithmetisch-logische Operationen als auch der Prozessor-Kontrolleinheit als Eingangssignal zur Verfügung stehen.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung, ist die Anzahl M der Standardprozessorrumpfeinheiten kleiner oder gleich der Anzahl N der Kontextspeicher. In den Befehlszwischenspeichern stehen hierdurch zu jeder Zeit genügend Instruktionen von verschiedenen Threads für die M Standardprozessoren zur Verfügung und es entstehen keine bzw. minimale Latenzzeiten.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung ist mindestens ein Befehlszwischenspeicher vorgesehen, welcher oder welche in N, adressierbar die durch die Thread-Kontrolleinheit, Befehlszwischenspeicher teilbar ist bzw. sind, wobei die N Befehlszwischenspeicher an jede Standardprozessorrumpfeinheit schaltbar sind.
  • Durch die N Befehlszwischenspeicher stehen den M Standardprozessorrumpfeinheiten zu jeder Zeit Instruktionen der N Threads zur Verfügung, so dass die Blockierwahrscheinlichkeit aufgrund verringerter Wartezeiten minimiert wird.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung sind die Befehlszwischenspeicher zum Auslesen von Programmbefehlen durch die Thread-Kontrolleinheit an einen Befehlsspeicher schaltbar, wobei die aus dem Befehlsspeicher ausgelesenen Programmbefehle durch die Programmzählregister der Kontextspeicher adressiert sind.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung werden aus den Befehlszwischenspeicher (6) gleichzeitig bis zu M Befehle ausgelesen.
  • Durch die Adressierung der ausgelesenen Programmbefehle durch die Programmzählregister der Kontextspeicher und deren Steuerung durch die Thread-Kontrolleinheit mittels der Steuersignale <t,p> wird das Füllen der Befehlszwischenspeicher durch die Thread-Kontrolleinheit taktzyklussensitiv gesteuert, d.h. die Steuerung erfolgt derart, dass in jedem Taktzyklus jede Pipelinestufe jeder Standardprozessorrumpfeinheit mit dem entsprechenden Kontext angeschlossen ist. Die zentrale Steuerung durch die Thread- Kontrolleinheit ermöglicht ein optimiertes Füllen der Befehlszwischenspeicher und somit eine Minimierung von Blockierwahrscheinlichkeiten.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung werden die durch die Standardprozessorrumpfeinheiten errechneten Daten über einen Datenbus an einen Datenspeicher übertragen. Durch diese Schnittstelle nach außen zu einem Datenspeicher über einen Datenbus sind die errechneten Daten extern speicherbar.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung bearbeitet jede Standardprozessorrumpfeinheit die von der Thread-Kontrolleinheit zugeschalteten Programmbefehle sequentiell mittels eines Pipelineverfahrens. Dadurch werden mehrere Befehle quasi gleichzeitig in der Befehlsbearbeitung eines Prozessors gehalten, wobei jede Instruktion, angeschlossen an den entsprechenden Kontext, sich exklusiv in einer Pipelinestufe und damit einem exklusiv zugeordneten Teil des Prozesses befindet. Die Bereitstellung des Pipelineverfahrens hat eine Erhöhung des Durchsatzes einer Standardprozessorrumpfeinheit zur Folge.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung bearbeitet jede Standardprozessorrumpfeinheit einen zugeschalteten Programmbefehl, falls dieser kein Datenzugriffsbefehl ist, innerhalb einer vorbestimmten Anzahl von Taktzyklen.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung ist die Anzahl der vorgesehenen Befehlszwischenspeicher gleich der Anzahl der Kontextspeicher, so dass für jeden Thread bzw. Kontextspeicher ein eigener Befehlszwischenspeicher zur Verfügung steht, wobei der Befehlszwischenspeicher vorzugsweise nach der FIFO-Organisation (First In- First Out) Programmbefehle zwischenspeichert und weiterleitet.
  • Dies hat den Vorteil, dass die Instruktionen eines jeden Threads vor den Standardprozessorrumpfeinheiten geordnet vorliegen. Dadurch wird die Schaltzeit bei einem Threadwechsel einer Standardprozessorrumpfeinheit minimiert.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung empfängt die Thread-Kontrolleinheit eingangsseitig Ereignissteuersignale, speichert intern Zustände zwischen und generiert ausgangsseitig Multiplexersteuersignale.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung umfassen die von der Thread-Kontrolleinheit empfangenen Ereignissteuersignale sowohl interne Ereignissteuersignale als auch externe Ereignissteuersignale.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung werden die internen Ereignissteuersignale von den Standardprozessorrumpfeinheiten erzeugt.
  • Die Thread-Kontrolleinheit empfängt so Daten darüber, in welchen Betriebsmodi sich die einzelne Standardprozessorrumpfeinheiten befinden, so dass die Thread-Kontrolleinheit auf die verschiedenen Betriebsmodi der einzelnen Standardprozessorrumpfeinheiten entsprechend reagieren kann. Aus diesen Daten generiert die Thread-Kontrolleinheit die Steuersignale <t,p>, welche taktzyklussensitiv an die entsprechenden Multiplexer zur Steuerung der Multiplexer gesendet werden.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung werden die externen Ereignissteuersignale von externen Einrichtungen wie z. B. einem Interrupt oder externen Speichern erzeugt.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung können die Standardprozessorrumpfeinheiten aus einem Teil eines DSP-Prozessors, eines Protokollprozessors oder eines Universal-Prozessors (General-Purpose Processor) bestehen.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung kann die Befehlsausführungseinheit der Standardprozessorrumpfeinheit eine arithmetisch-logische Einheit (ALU) oder eine Adressengeneratoreinheit (AGU) sein.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung wird eine Befehlsholeinheit von einem Multiplexer, N Datenleitungen, N Befehlszwischenspeichern, N Datenleitungen und einem Multiplexer ausgebildet.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung steuert die Thread-Kontrolleinheit in Abhängigkeit von den Ereignissteuersignalen Schaltnetzwerke an. Dabei unterstützt die Threadkontrolleinheit folgende Funktionalitäten:
    Die Threadkontrolleinheit entscheidet, welche N Threads selektiert werden, damit Instruktionen dieser N Threads von der Befehlsholeinheit aus dem Befehlsspeicher geholt werden. Wenn N Instruktionen von mehreren Threads gleichzeitig von der Befehlsholeinheit aus dem Befehlsspeicher geholt werden können, stellt die Threadkontrolleinheit die entsprechenden N Threadnummern t zur Verfügung.
  • Die Threadkontrolleinheit entscheidet dynamisch, welche der M Standardprozessorrumpfeinheiten dem jeweiligen Thread zugeordnet wird, damit der Programmbefehl bzw die Instruktion eines Threads von der Befehlsholeinheit aus dem Befehlsspeicher geholt und auf die Pipeline der selektierten Standardprozessorrumpfeinheit geschaltet wird. Wenn M Programmbefehle gleichzeitig aus den Befehlszwischenspeichern in die jeweilige Pipeline durchgeschaltet werden, stellt die Thread-Kontrolleinheit die entsprechenden Standardprozessorrumpfnummer der entsprechenden Standardprozessorrumpfeinheit zur Verfügung.
  • Eine Instruktion eines Threads T-k, welche von der Befehlsholeinheit geholt worden ist, wird in den entsprechenden Befehlszwischenspeicher, welcher für den Thread T-k bereitgestellt ist, zwischengespeichert. Dabei ist der Multiplexer, welcher den entsprechenden Programmbefehl von der Befehlsholeinheit auf den entsprechenden Befehlszwischenspeicher für den Thread T-k anschließt, durch die von der Thread-Kontrolleinheit generierten Multiplexersteuersignale <t,p> gesteuert.
  • In der Pipelinestufe der Befehlsdecodier/Operandenholeinheit BD/OHE steuert das entsprechende verzögerte Steuersignal <t,p> einen Multiplexer, welcher den entsprechenden Kontext an die entsprechende Pipelinestufe anschließt, derart, dass die Registerbank mit der entsprechenden Standardprozessorrumpfeinheit verbunden wird. Nach der Befehlausführungseinheit und der Zurückschreibeeinheit steuert das erneut verzögerte Steuersignal <t,p> einen Multiplexer, welcher jede Standardprozessorrumpfeinheit mit dem entsprechenden Kontextspeicher anschließt, derart, dass in die entsprechenden Kontextspeicher bzw. Registerbänke geschrieben werden kann.
  • Auf einen Programmbefehl eines Threads <t>, welcher eine Blockierung auslöst, wird ein Exception-Ereignis-Signal <e> von der entsprechenden Standardprozessorrumpfeinheit generiert, wobei das Exception-Ereignis-Signal <e> Teil der internen Ereignissteuersignale einer jeden Standardprozessorrumpfeinheit ist.
  • Auf das jeweilige Exception-Ereignis-Signal <e> wird die Threadnummer des blockierten Threads <t> in einem Threadnummer-Zwischenspeicher innerhalb der Thread-Kontrolleinheit zwischengespeichert, wobei der wartende Thread T dann auf ein Thread-Reaktivierungssignal <x> wartet.
  • Ein Thread-Reaktivierungssignal <x> ist Teil der externen Ereignissteuersignale. Der Threadnummer-Zwischenspeicher für die wartenden Threads T kann alle Threadnummern der N Threads <t = [t1, ...,tn]> gleichzeitig zwischenspeichern, falls alle M Prozessoren blockiert sind.
  • Auf das entsprechende Exception-Ereignis-Signal <e> wird die Standardprozessorrumpfeinheitnummer <p>, auf welcher der blockierte Thread abgearbeitet worden ist, in einen Standardprozessorrumpfnummer-Zwischenspeicher, welcher innerhalb der Thread-Kontrolleinheit bereitgestellt ist, gespeichert. Die Standardprozessorrumpfnummer <p> kann überbrückt werden, d.h. ohne Zwischenspeicheurng weitergeleitet, um den Thread-Umschalt-Overhead zu reduzieren.
  • Auf ein Exception-Ereignis-Signal <e> wird innerhalb der Thread-Kontrolleinheit ein Umschalttriggersignal von dem wartenden Thread T generiert um der Thread-Kontrolleinheit anzuzeigen, ob es einen freien Prozessor und einen bereiten Thread T gibt. Die nächsten Instruktionen bzw. der nächste Programmbefehl wird von der Thread-Kontrolleinheit angesteuert.
  • Auf ein Thread-Reaktivierungssignal <x> wird eine Threadnummer <t> von dem Warteregister innerhalb der Thread-Kontrolleinheit in ein Bereitregister, welches innerhalb der Thread-Kontrolleinheit bereitgestellt ist, übertragen. Die Threadnummer <t> kann überbrückt werden, d.h. ohne Zwischenspeicherung weitergeleitet, um den Thread-Umschalt-Overhead zu reduzieren.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung weist die Thread-Kontrolleinheit mindestens einen Threadnummer-Zwischenspeicher, welcher eine Warteschlange von Threads speichert, wobei für einen Thread mindestens die Threadnummer und der entsprechende Threadzustand (ready, waiting) vorgesehen sind.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung weist die Thread-Kontrolleinheit mindestens einen Standardprozessorrumpfnummer-Zwischenspeicher auf. Diese speichert die Standardprozessorrumpfnummer, welche eine Standardprozessorrumpfeinheit, die zur Abarbeitung von Programmbefehlen zur Verfügung steht und nicht zum aktuellen Taktzyklus Programmbefehle abarbeitet, referenziert, zwischen.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung ist der Threadnummer-Zwischenspeicher und der Standardprozessorrumpfnummer-Zwischenspeicher jeweils ein FIFO-Speicher (First In – First Out).
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung wird eine Threadnummer, welche einen Thread T referenziert, in Abhängigkeit der Ereignissteuersignale in dem Threadnummer-Zwischenspeicher der Thread-Kontrolleinheit zwischengespeichert, falls der Thread T von keiner Standardprozessorrumpfeinheit bearbeitet wird.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung werden höchstens N Threadnummern in Abhängigkeit der Ereignissteuersignale mittels des Schaltnetzwerkes aus dem Threadnummer-Zwischenspeicher zur Bereitstellung einer geholten Threadnummer und zur Abarbeitung von Programmbefehlen des Threads T geholt.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung wird eine Standardprozessorrumpfnummer, welche eine bestimmte Standardprozessorrumpfeinheit referenziert, in Abhängigkeit der Ereignissteuersignale in dem Standardprozessorrumpfnummer-Zwischenspeicher zwischengespeichert, falls keine Programmbefehle eines Threads T von der bestimmten Standardprozessorrumpfeinheit bearbeitet werden.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung werden höchstens M Standardprozessorrumpfnummern in Abhängigkeit der Ereignissteuersignale mittels des Schaltnetzwerkes aus dem Standardprozessorrumpfnummer-Zwischenspeicher zur Bereitstellung von höchstens M geholten Standardprozessorrumpfnummern geholt, so dass Programmbefehle durch die mittels der Standardprozessorrumpfnummern referenzierten Standardprozessorrumpfeinheiten abgearbeitet werden.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung generiert die Thread-Kontrolleinheit mittels einer aus dem Threadnummer-Zwischenspeicher geholten Threadnummer und einer aus dem Standardprozessorrumpfnummer-Zwischenspeicher geholten Standardprozessorrumpfnummer ein Multiplexersteuersignal, so dass die Programmbefehle des mittels der geholten Threadnummer referenzierten Threads T durch die mittels der geholten Standardprozessorrumpfnummer referenzierten Standardprozessorrumpfeinheit abgearbeitet werden.
  • Gemäß einer weiteren bevorzugten Weiterbildung der Erfindung steuert das Multiplexersteuersignal zum jeweiligen richtigen Taktzyklus die N × M Multiplexer und die M × N Multiplexer jeweils dann, wenn sich die Adresse des Programmbefehls bzw. der Programmbefehl des mittels der Threadnummer referenzierten Threads, welcher durch die mittels der Standardprozessorrumpfnummer referenzierten Standardprozessorrumpfeinheit abgearbeitet werden soll, an der entsprechenden Stelle des parallelen Multithread-Prozessors befindet.
  • Ausführungsbeispiele der Erfindung sind in den Zeichnungen dargestellt und in der nachfolgenden Beschreibung näher erläutert. Gleiche Bezugszeichen in den Figuren bezeichnen gleiche oder funktionsgleiche Elemente.
  • Es zeigen:
  • 1 ein Ablaufdiagramm einer herkömmlichen Von-Neumann-Maschine nach dem Stand der Technik
  • 2a ein Ablaufdiagramm eines herkömmlichen Multithread-Prozessors nach dem Stand der Technik
  • 2b einen Blockschaltplan eines herkömmlichen Multithread-Prozessors nach dem Stand der Technik
  • 3a eine schematische Abbildung eines parallelen Multithread-Prozessors nach dem Stand der Technik
  • 3b ein Ablaufdiagramm eines herkömmlichen parallelen Multithread-Prozessors nach dem Stand der Technik
  • 4a eine schematische Abbildung eines erfindungsgemäßen parallelen Multithread-Prozessors mit geteiltem Kontext gemäß einer bevorzugten Ausführungsform der Erfindung
  • 4b ein Ablaufdiagramm der Threadbearbeitung durch den parallelen Multithread-Prozessor mit geteiltem Kontext
  • 4c eine Erweiterung eines parallelen Multithread-Prozessors mit geteiltem Kontext gemäß einer bevorzugten Ausführungsform der Erfindung nach 4a um eine Darstellung der Kontrollfäden eines Threads
  • 4d einen Mechanismus zur voll-vernetzten Thread-Verteilung bei einem parallelen Multithread-Prozessor mit geteiltem Kontext
  • 4e ein Blockschaltbild eines parallelen Multithread-Prozessors mit geteiltem Kontext gemäß einer bevorzugten Ausführungsform der Erfindung
  • 4f ein schematisches Blockschaltbild der Thread-Kontrolleinheit des parallelen Multithread-Prozessors mit geteiltem Kontext.
  • In den Figuren bezeichnen gleiche Bezugszeichen gleiche oder funktionsgleiche Bestandteile.
  • Obwohl die vorliegende Erfindung nachfolgende mit Bezug auf Prozessoren bzw. Mikroprozessoren bzw. deren Architekturen beschrieben wird, ist sie darauf nicht beschränkt, sondern auf vielfältige Weise einsetzbar.
  • In 4a ist schematisch eine erfindungsgemäße Anordnung eines parallelen Multithread-Prozessors 1 dargestellt. Ein paralleler Multithread-Prozessor 1 umfasst unter anderem eine Anzahl M an Standardprozessorrumpfeinheiten 2 und eine Anzahl N an Threads T, wobei für jeden Thread T hardware-technisch ein dazugehöriger Kontextspeicher 3 bereitgestellt ist. Die N Kontextspeicher 3 sind über M × N bzw. N × M Multiplexer 11, 10 (nicht gezeigt) mit den M Standardprozessorrumpfeinheiten 2 verbunden. Eine feste Zuordnung zwischen den N Kontextspeichern 3 bzw. den N Threads T und den M Standardprozessorrumpfeinheiten 2 besteht erfindungsgemäß nicht. Durch die Auflösung der festen Zuordnung zwischen den Kontextspeichern 3 und den Standardprozessorrumpfeinheiten 2 erhöht sich die Flexibilität der Rechnerarchitektur dahingehend, dass die Gesamtzahl der möglichen Tupel <t,p> deutlich erhöht wird, wobei ein Thread T, gesteuert durch das Multiplexersteuersignal <t>, zum Zeitpunkt t von einer Standardprozessorrumpfeinheit 2, gesteuert durch das Multiplexersteuersignal <p>, bearbeitet wird. Durch die erhöhte Flexibilität in der Zuordnung von Thread T auf eine Standardprozessorrumpfeinheit 2 ergeben sich für das Gesamtsystem eine geringere Blockierwahrscheinlichkeit, eine geringere Latenzzeit bei einem Speicherzugriff und daraus ein höherer Durchsatz bzw. Performance.
  • Entsprechend zu 3b stehen bei der in 4b gezeigten Ausführungsform des erfindungsgemäßen, parallelen Multithread-Prozessors 1 mit geteilten Kontexten zwei Standardprozessorrumpfeinheiten 2-1, 2-2 und vier verschiedene Threads T-1, T-2, T-3, T-4 zur Verfügung. Durch das gezeigte Beispiel bei dem vier verschiedene Threads T-1, T-2, T-3, T-4 von zwei Standardprozessorrumpfeinheiten 2-1, 2-2 bearbeitet werden, wird gezeigt, dass bei der erfindungsgemäßen Anordnung eines parallelen Multithread-Prozessors 1 mit geteiltem Kontext gegenüber einer herkömmlichen Anordnung eines parallelen Multithread-Prozessors MT nach 3b geringere Blockierwahrscheinlichkeiten und damit ein höherer Durchsatz bzw. Performance auftreten. In 4b sind die beiden Befehldecodier/Operandenholeinheit 2' der beiden Standardprozessorrumpfeinheiten 2-1, 2-2 dargestellt, die zu den Zeitpunkten t1, t2, t3 den Thread T-1 oder den Thread T-2 oder den Thread T-3 oder den Thread T-4 bearbeiten, wobei zu einem Zeitpunkt t1, t2 und t3 eine Standardprozessorrumpfeinheit 2-i jeweils einen anderen Thread T-j bearbeitet. Das Gesamtsystem ist nach diesem Beispiel dann blockiert, wenn zu einem definierten Zeitpunkt t mehr als zwei Threads temporär blockiert sind.
  • Figure 00250001
  • p2 ist die Blockierwahrscheinlichkeit bei gegebenem Beispiel (zwei Standardprozessorrumpfeinheiten bearbeiten vier Threads) nach der Anordnung eines parallelen Multithread-Prozessors MT ohne geteilten Kontext (3b) und p3 ist die Blockierwahrscheinlichkeit bei gegebenem Beispiel (zwei Standardprozessorrumpfeinheiten bearbeiten vier Threads) nach der erfindungsgemäßen Anordnung eines parallelen Multithread-Prozessors 1 mit geteiltem Kontext (4b).
  • Die Anordnung gemäß der Erfindung, d. h. ein paralleler Multithread-Prozessor 1 mit geteilten Kontext, weist eine geringere Blockierwahrscheinlichkeit als die Anordnung nach dem Stand der Technik auf. Durch die geringere Blockierwahrscheinlichkeit erhöht sich der Durchsatz des Gesamtsystems gegenüber der Anordnung nach dem Stand der Technik und Latenzzeiten verringern sich.
  • 4c stellt eine Erweiterung der 4a dar, wobei hier gezeigt wird, dass ein jeder Thread T aus aufeinanderfolgenden Instruktionen I besteht. Beispielsweise besteht der Thread T-1 aus der Abfolge der Instruktionen I11 I12, I13 etc.
  • In 4d ist ein Mechanismus zur voll-vernetzten Thread-Verteilung bei einem erfindungsgemäßen parallelen Multithread-Prozessor mit geteiltem Kontext dargestellt, bei dem ein erfindungsgemäßer paralleler Multithread-Prozessor 1 mit geteilten Kontexten Instruktionen verschiedener Threads T auch in einem potentiellen Blockierungsfall abarbeitet, wobei hierzu das Beispiel aus 4c herangezogen wird.
  • 4d zeigt wie die beiden Befehldecodier/Operandenholeinheiten 2' der beiden Standardprozessorrumpfeinheiten 2-1, 2-2 in zeitlicher Abfolge Instruktionen der Threads T-1, T-2, T-3 und T-4 bearbeiten. Vor dem Zeitpunkt t1 bearbeitet die Befehldecodier/Operandenholeinheit 2'-1 der Standardprozessorrumpfeinheit 2-1 Instruktionen des Threads T-1. Bei dem gezeigten Beispiel ist zum Zeitpunkt ti die Instruktion I14 des Threads T-1 temporär blockiert. Nachdem zum Zeitpunkt t1 die Standardprozessorrumpfeinheit 2-2 die Instruktion I24 des Threads T-2 bearbeitet, stehen der Standardprozessorrumpfeinheit 2-1 zum Zeitpunkt t1 noch die Threads T-3 und T-4 zur Verfügung. Der Standardprozessorrumpfeinheit 2-1 wird die Instruktion I31 des Threads 3 durch der Thread-Kontrolleinheit 4 zugewiesen. Die Befehldecodier/Operandenholeinheit 2'-1 der Standardprozessorrumpfeinheit 2-1 kann so zum Zeitpunkt ti die Instruktion I31 des Threads T-3 bearbeiten und wird somit nicht blockiert. Im Weiteren bearbeitet die Befehldecodier/Operandenholeinheit 2'-1 der Standardprozessorrumpfeinheit 2-1 Instruktionen des Thread T-3 bis der Thread T-3 temporär blockiert ist. Zum Zeitpunkt t2 ist eine Instruktion des Threads T-2 temporär blockiert. Diese blockierte Instruktion I26 wird wie vorher die blockierte Instruktion I14 zurück in den entsprechenden Kontextspeicher K geschrieben und durch die Instruktion I41 des Threads T-4 substituiert. Somit ist auch zum Zeitpunkt t2 die Standardprozessorrumpfeinheit 2-2 nicht blockiert.
  • In 4e ist ein Blockschaltbild einer besonders bevorzugten Ausführungsform eines erfindungsgemäßen parallelen Multithread-Prozessors 1 mit geteilten Kontexten dargestellt. Der Multithread-Prozessor 1 weist Verbindungen zu einem Befehlsspeicher 7 und zu einem Datenbus 8 auf. Des Weiteren enthält der Multithread-Prozessor 1M Standardprozessorrumpfeinheiten 2-1,..., 2-M, N Kontextspeicher 3-1,..., 3-N, eine Thread-Kontrolleinheit 4, M Prozessorkontrolleinheiten 5-1,..., 5-M, N Befehlszwischenspeicher 6-1,..., 6-N, N × M Multiplexer 10 und M × N Multiplexer 11.
  • Jede Standardprozessorrumpfeinheit 2 weist eine Befehlsdecodier/Operandenholeinheit 2', eine Befehlsausführungseinheit 2'' und eine Zurückschreibeeinheit 2''' auf, wobei die Befehlsdecodier/Operandenholeinheit 2', die Befehlsausführungseinheit 2'' und die Zurückschreibeeinheit 2''' zur Bearbeitung von Befehlen nach einem Pipelineverfahren angeordnet sind.
  • Die Befehlsholeinheit (17) weist einen Multiplexer (11), N Datenleitungen (14-4), N Befehlszwischenspeicher (6), N Datenleitungen (14-5) und einem Multiplexer (10) auf.
  • Für jede Standardprozessorrumpfeinheit 2-i ist eine zugehörige Prozessor-Kontrolleinheit 5-i vorgesehen. Eine Prozessor-Kontrolleinheit 5-i steuert ihre zugehörige Standardprozessorrumpfeinheit 2-i durch interne Steuersignale 12-i. Ein erstes internes Steuersignal 12'-i für die Befehlsdecodier/Operandenholeinheit steuert dabei die Befehlsdecodier/Operandenholeinheit 2'-i. Ein zweites internes Steuersignal 12''-i für die Befehlsausführungseinheit steuert die Befehlsausführungseinheit 2''-i und ein drittes internes Steuersignal 12'''-i für die Zurückschreibeeinheit steuert die Zurückschreibeeinheit 2'''-i.
  • Jeder Kontextspeicher 3-j weist ein Programmzählregister 3'-j, eine Registerbank 3''-j und ein Statusregister 3'''-j auf. Das Programmzählregister 3'-j speichert einen Programmzähler für einen Thread T-j zwischen. Über einen N × M Multiplexer 10 werden die Inhalte der N Programmzählregister 3' von N Threads T auf einen M-kanaligen Adressbus 16 gelegt.
  • Die durch die Dateninhalte der Programmzählregister 3' referenzierten M Instruktionen von Threads T werden über einen M-kanaligen Datenbus 13 aus dem Befehlsspeicher 7 von der Befehlseinheit 17 ausgelesen. Die ausgelesenen Dateninhalte werden über einen M ×N Multiplexer 11 in N Befehlszwischenspeicher 6 übertragen. Es ist für jeden der N Threads T ein zugehöriger Befehlszwischenspeicher 6 vorgesehen. Über einen N × M Multiplexer 10 werden aus den N Befehlszwischenspeichern 6 M Befehle auf M Datenleitungen 14-1 gelegt. Die M Instruktionen bzw. Befehle, die sich auf den Datenleitungen 14-1 befinden, werden auf die M Standardprozessorrumpfeinheiten 2 verteilt.
  • Die Befehlsdecodier/Operandenholeinheit 2'-i der Standardprozessorrumpfeinheiten 2-i decodiert beispielsweise einen Befehl des Thread T-j. Der decodierter Befehl des Threads T-j enthält unter anderem Adressen von Operanden, welche für die nachfolgende Befehlsausführung benötigt werden. Die adressierten Dateninhalte der Operanden sind in einem zum Thread T-j dazugehörigen Kontextspeicher 3-j gespeichert, genauer in der Registerbank 3'-j des Kontextspeichers 3-j. Über einen N × M Multiplexer 10 werden die Dateninhalte der Operanden aus der Registerbank 3'-j des Kontextspeichers 3-j zu der Befehlsdecodier/Operandenholeinheit 2'-i der Standardprozessorrumpfeinheit 2-i übertragen, wobei der Multiplexer 10 von der Thread-Kontrolleinheit 4 mittels des Multiplexersteuersignals <t,p>[e] gesteuert wird. Dieses Multiplexen wird über die Steuersignale <t,p> derart gesteuert, so dass der richtige Kontextspeicher 3-j an die entsprechende Pipelinestufe der richtigen Standardprozessorrumpfeinheit 2-i geschalten wird.
  • Die Befehlsausführungseinheit 2''-i der Standardprozessorrumpfeinheit 2-i führt die im Befehl des Threads T-j enthaltene arithmetisch-logische Operation mit den aus der Registerbank 3'-j geholten Operanden aus.
  • Nachdem die arithmetisch-logische Operation mit den geholten Operanden durchgeführt worden ist, wird das Ergebnis der Operation des Thread T-j bzw. Zusatzzeichen bzw. Flags von der Zurückschreibeeinheit 2'''-i auf eine Datenleitung 14-2 gelegt.
  • Dieselben Dateninhalte werden potentiell im Fall eines Speicherbefehls zusätzlich zu der Datenleitung 19-2 auf eine Datenleitung 14-3 gelegt. Die M Datenleitungen 14-3 sind für die Verbindung des Multithread-Prozessors 1 zum Datenbus 8 vorgesehen. Die Dateninhalte der M Ergebnisse der M Standardprozessorrumpfeinheiten werden über den Datenbus 8 an einen externen Speicher übertragen.
  • Über einen M × N Multiplexer 11 wird das Ergebnis der Operation des Threads T-j bzw. Zusatzzeichen bzw. Flags von der Datenleitung 14-2 genommen und das Ergebnis der arithmetisch-logischen Operation in die Registerbank 3'-j des Kontextspeichers 3-j und Zusatzzeichen bzw. Flags in das Statusregister 3''-j des Kontextspeichers 3-j übertragen.
  • Die Dateninhalte der N Statusregister 3'' werden mittels eines N × M Multiplexer 10 auf die Prozessorkontrolleinheiten 5 übertragen. Die Prozessor-Kontrolleinheit 5 beinhaltet für jede Standardprozessorrumpfeinheit 2-i eine Prozessor-Kontrolleinheit 5-i. Die Prozessor-Kontrolleinheit 5-i berechnet aus den Dateninhalten aus den Statusregistern 3''' interne Steuersignale 12, nämlich ein internes Steuersignal für die Befehldecodier/Operandenholeinheit 12', ein internes Steuersignal für die Befehlsausführungseinheit 12'', und ein internes Steuersignal für die Zurückschreibeeinheit 12'''.
  • Die Thread-Kontrolleinheit 4 steuert über die Multiplexersteuersignale <t,p>[a] – <t,p>[f] die Multiplexer 10 bzw. 11. Ein Multiplexersteuersignal <t,p> gibt beispielsweise an, welcher Thread T-j durch welche Standardprozessorrumpfeinheit 2-i bearbeitet wird, wobei t eine Threadnummer für den jeweiligen Thread T ist und p eine Standardprozessorrumpfeinheitnummer für die jeweilige Standardprozessorrumpfeinheit 2 ist.
  • Ein N × M Multiplexer 10 hat die Funktion, die Daten eines N-kanaligen Datenbusses auf einen M-kanaligen Datenbus zu legen.
  • Ein M × N Multiplexer 11 hat die Funktion, die Daten eines M-kanaligen Datenbusses auf einen N-kanaligen Datenbus zu legen.
  • Die M internen Ereignissteuersignale 9' beinhalten u. a. Daten über blockierte Threads T, interne Interrupts, Wartezeiten und Exception-Ereignis-Signale <e>, und stellen diese Daten der Thread-Kontrolleinheit 4 zur Verfügung.
  • Externe Ereignissteuersignale 9'' werden der Thread-Kontrolleinheit 4 durch externe Einrichtungen bereitgestellt. Beispiel hierfür sind externe Interrupts, welche von externen Einrichtungen generiert werden.
  • 4f zeigt ein schematisches Blockschaltbild der erfindungsgemäßen Thread-Kontrolleinheit des erfindungsgemäßen parallelen Multithread-Prozessors mit geteiltem Kontext.
  • Die Thread-Kontrolleinheit 4 weist ein Schaltnetzwerk 18, einen Threadnummmer-Zwischenspeicher 19 und einen Standardprozessorrumpfnummer-Zwischenspeicher 20 auf.
  • Eingangsseitig empfängt die Thread-Kontrolleinheit 4 die internen Ereignissteuersignale 9'-1 bis 9'-N und die externen Ereignissteuersignale 9''. Die eingangsseitig empfangenen Ereignissteuersignale 9 werden mittels des Schaltnetzwerkes 18, dem Threadnummer-Zwischenspeicher 19 und dem Standardprozessorrumpfnummer-Zwischenspeicher 20 verarbeitet. Durch die Verarbeitung werden die Multiplexersteuersignale <t,p>[a] – <t,p>[f] generiert und zum richtigen Taktzyklus an den entsprechenden N × M Multiplexer 10 (nicht gezeigt) bzw. an den entsprechenden M × N Multiplexer 11 (nicht gezeigt) gesendet.
  • Obwohl die vorliegende Erfindung vorstehend anhand bevorzugter Ausführungsbeispiele beschrieben wurde, ist sie darauf nicht beschränkt, sondern auf vielfältige Art und Weise modifizierbar.
  • MT
    Multithread-Prozessor
    SPE
    Standardprozessoreinheit
    SPE-A
    erste Standardprozessoreinheit
    SPE-B
    zweite Standardprozessoreinheit
    BD/OHE
    Befehlsdecodier/Operandenholeinheit
    BAE
    Befehlsausführungseinheit
    ZSE
    Zurückschreibeeinheit
    K; K-A,...,K-N
    Kontextspeicher
    PZR;PZR-A,...,PZR-N
    Programmzählregister
    RB;RB-A,...,RB-N
    Registerbank
    SR;SR-A,...,SR-N
    Statusregister
    TKE
    Thread-Kontrolleinheit
    PKE
    Prozessorkontrolleinheit
    BS
    Befehlsspeicher
    DB
    Datenbus
    NDK
    N-kanaliger Datenkanal
    ESS
    Ereignissteuersignale
    ESS'
    internes Ereignissteuersignal
    ESS''
    externe Ereignissteuersignale
    M'
    N×1 Multiplexer
    M''
    1×N Multiplexer
    <t>
    Multiplexersteuersignal
    ISS
    internes Steuersignal
    ISS'
    internes Steuersignal für
    Befehlsdecodier/Operandenholeinheit
    ISS''
    internes Steuersignal für
    Befehlsausführungseinheit
    ISS'''
    internes Steuersignal für
    Zurückschreibeeinheit
    T;T-A,...,T-N
    Thread
    T*;T*-1,...,T*-N
    blockierter Thread
    DL
    Datenleitung
    AL
    Adressleitung
    I
    Instruktion
    1
    paralleler Multithread-Prozessor
    2;2-1, ...2-M
    Standardprozessorrumpfeinheit
    2';2'-1,...2'-M
    Befehlsdecodier/Operandenholeinheit
    2'';2''-1,...2''-M
    Befehlsausführungseinheit
    2'''; 2'''-1,... 2'''-M
    Zurückschreibeeinheit
    3; 3-1,...,3-N
    Kontextspeicher
    3';3'-1,...,3'-N
    Programmzählregister
    3''; 3''1,..., 3''-N
    Registerbank
    3'''; 3'''-1,..., 3'''-N
    Statusregister
    4
    Thread-Kontrolleinheit
    5;5-1,...,5-M
    Prozessorkontrolleinheit
    6;6-1,...,6-N
    Befehlszwischenspeicher
    7
    Befehlsspeicher
    8
    Datenbus
    9
    Ereignissteuersignale
    9';9'-1,...,9'-N
    internes Ereignissteuersignal
    9''
    externe Ereignissteuersignale
    10
    N×M Multiplexer
    11
    M×N Multiplexer
    12;12-1,...,12-M
    internes Steuersignal
    12';12'-1,...,12'-M
    internes Steuersignal für
    Befehlsdecodier/Operandenholeinheit
    12''; 12''-1,..., 12''-M
    internes Steuersignal für
    Befehlsausführungseinheit
    12''';...,12'''-M
    internes Steuersignal für
    Zurückschreibeeinheit
    t
    Threadnummer
    p
    Standardprozessorrumpfnummer
    e
    Exception-Ereignis-Signal
    x
    Thread-Reaktivierungssignal
    <t,p>
    Multiplexersteuersignal
    13
    M-kanaliger Datenbus
    14;14-1,...,14-5
    Datenleitung
    15;15-1,...,15-4
    N-kanaliger Datenbus
    16
    M-kanaliger Adressbus
    17
    Befehlsholeinheit
    18
    Schaltnetzwerk
    19
    Threadnummer-Zwischenspeicher
    20
    Standardprozessorrumpfnummer-
    Zwischenspeicher

Claims (33)

  1. Multithread-Prozessor mit: a) mehreren (M) parallel verschaltenen Standardprozessorrumpfeinheiten (2; 2-1,..., 2-M) zur Befehlsausführung von Programmbefehlen verschiedener Threads, wobei jede Standardprozessorrumpfeinheit (2; 2-1, ..., 2-M) zumindest eine Befehldecodiereinheit (2'; 2'' -1, ..., 2''-M) und eine Befehlsausführungseinheit (2''; 2''-1, ..., 2''-M) aufweist; b) mehreren (N) Kontextspeichern (3; 3-1,..., 3-N), die jeweils einen aktuellen Prozessor-Zustand eines Threads (T; T-1,..., T-N) zwischenspeichern, wobei jeder Kontextspeicher (3; 3-1,...,3-N) zumindest ein Register (3', 3'', 3''') beinhaltet; c) und mit einer Thread-Kontrolleinheit (4), welche Multiplexersteuersignale(<t, p>) zur Steuerung von Multiplexern (10, 11) generiert, mit denen jede Standardprozessorrumpfeinheit (2; 2-1,..., 2-M) an jeden Kontextspeicher (3; 3-1,..., 3-N) zur Minimierung einer Blockierwahrscheinlichkeit des Multithread-Prozessors schaltbar ist.
  2. Multithread-Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit (2; 2-1,...,2-M) eine Befehldecodier und eine Operandenholeinheit (2; 2-1,...,2-M) zur Decodierung eines Programmbefehls und zum Holen innerhalb des Programmbefehls adressierter Operanden aufweist.
  3. Multithread-Prozessor nach Anspruch 1 und 2, dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit (2; 2-1,...,2-M) eine Befehlsausführungseinheit (2''; 2''-1,..., 2''-M) zum Ausführen des decodierten Programmbefehls aufweist.
  4. Multithread-Prozessor nach Anspruch 1 und 2, dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit (2; 2-1,...,2-M) eine Zurückschreibeeinheit (2'''; 2'''-1,..., 2'''-M) zum Zurückschreiben von Operationsergebnissen der ausgeführten Programmbefehle aufweist.
  5. Multithread-Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit (2; 2-1,...,2-M) eine zugehörige Prozessorkontrolleinheit (5; 5-1,...,5-M) enthält.
  6. Multithread-Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass jeder Kontextspeicher (3; 3-1,...,3-N) ein Programmzählregister (3; 3-1,...,3'-N) zum Zwischenspeichern eines Programmzählers, eine Registerbank zum Zwischenspeichern von Operanden und ein Statusregister (3'''; 3'''-1,..., 3'''-N) zum Zwischenspeichern von Statusflags aufweist.
  7. Multithread-Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass die Anzahl (M) der Standardprozessorrumpfeinheiten (2; 2-1,...,2-M) kleiner oder gleich der Anzahl (N) der Kontextspeicher (3; 3-1,...,3-N) ist.
  8. Multithread-Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass mindestens ein Befehlszwischenspeicher (6) vorgesehen ist, welcher oder welche in N, adressierbar die durch die Thread-Kontrolleinheit (4), Befehlszwischenspeicher (6) teilbar ist bzw. sind, wobei die N Befehlszwischenspeicher (6) an jede Standardprozessorrumpfeinheit (2; 2-1,...,2-M) schaltbar sind.
  9. Multithread-Prozessor nach Anspruch 8, dadurch gekennzeichnet, dass die Befehlszwischenspeicher (6) zum Auslesen von Programmbefehlen durch die Thread-Kontrolleinheit (4) an einen oder mehrere Befehlsspeicher schaltbar sind, wobei die aus dem Befehlsspeicher(7) ausgelesenen Programmbefehle durch die Programmzähler der Kontextspeicher (3; 3-1,...,3-N) adressiert sind.
  10. Multithread-Prozessor nach Anspruch 8, dadurch gekennzeichnet, dass aus den Befehlszwischenspeicher (6) gleichzeitig bis zu M Befehle ausgelesen werden.
  11. Multithread-Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass die Standardprozessorrumpfeinheiten (2; 2-1,...,2-M) die verarbeiteten Daten über einen Datenbus (8) an einen Datenspeicher abgeben.
  12. Multithread-Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit (2; 2-1,...,2-M) die ihr von der Thread-Kontrolleinheit (4) zugeschalteten Programmbefehle sequentiell in einem Pipeline-Verfahren bearbeitet.
  13. Multithread-Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass die parallel verschalteten Standardprozessorrumpfeinheiten (2; 2-1,...,2-M) identisch aufgebaut sind.
  14. Multithread-Prozessor nach Anspruch 12, dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit (2; 2-1,...,2-M) einen zugeschalteten Programmbefehl, falls dieser kein Datenzugriffsbefehl ist, innerhalb einer vorbestimmten Anzahl von Taktzyklen bearbeitet.
  15. Multithread-Prozessor nach Anspruch 9, dadurch gekennzeichnet, dass die Anzahl der vorgesehenen Befehlszwischenspeicher (6) der Anzahl (N) der Kontextspeicher (3) entspricht, wobei jeder Befehlszwischenspeicher (6) durch die entsprechende Threadnummer t ausgewählt wird.
  16. Multithread-Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass die Thread-Kontrolleinheit (4) eingangsseitig Ereignissteuersignale (9) empfängt, interne Zustände zwischenspeichert und ausgangsseitig Multiplexersteuersignale (<t,p>) erzeugt.
  17. Multithread-Prozessor nach Anspruch 16, dadurch gekennzeichnet, dass die Ereignissteuersignale (9) interne Ereignissteuersignale (9'; 9'-1,...,9'-N) und externe Ereignissteuersignale (9'') umfassen.
  18. Multithread-Prozessor nach Anspruch 17, dadurch gekennzeichnet, dass die internen Ereignissteuersignale (9'; 9'-1,...,9'-N) von den Standardprozessorrumpfeinheiten (2; 2-1,...,2-M) erzeugt werden.
  19. Multithread-Prozessor nach Anspruch 17, dadurch gekennzeichnet, dass die externen Ereignissteuersignale (9'') von externen Baugruppen erzeugt werden.
  20. Multithread-Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass die Standardprozessorrumpfeinheit (2; 2-1,...,2-M) aus einem Teil eines DSP-Prozessors, eines Protokollprozessors oder eines Universal-Prozessors besteht.
  21. Multithread-Prozessor nach Anspruch 2, dadurch gekennzeichnet, dass die Befehlsausführungseinheit (2'' ;2''-1,...,2''-M) einer Standardprozessorrumpfeinheit (2; 2-1,...,2-M) eine Arithmetisch-Logisch-Einheit (ALU) oder eine Adressengeneratoreinheit (AGU) ist.
  22. Multithread-Prozessor nach Anspruch 2, dadurch gekennzeichnet, dass eine Befehlsholeinheit (17) von einem Multiplexer (11), N Datenleitungen (14-4), N Befehlszwischenspeichern (6), N Datenleitungen (14-5) und einem Multiplexer (10) ausgebildet wird.
  23. Multithread-Prozessor nach Anspruch 2, dadurch gekennzeichnet, dass die Befehldecodier und die Operandenholeinheit (2') den Programmbefehl decodiert und potentiell innerhalb des Programmbefehls adressierte Operanden aus den mittels der Steuersignale <t,p> selektierten Kontextspeichern zur weiteren Bearbeitung holt.
  24. Multithread-Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass die Thread-Kontrolleinheit (4) ein Schaltnetzwerk (18) aufweist.
  25. Multithread-Prozessor nach Anspruch 24, dadurch gekennzeichnet, dass das Schaltnetzwerkes (18) der Thread-Kontrolleinheit (4) mindestens einen Threadnummer-Zwischenspeicher (19) aufweist, welcher eine Warteschlange von Threads speichert, wobei für einen Thread mindestens die Threadnummer (t) und der entsprechende Threadzustand (ready, waiting) vorgesehen sind.
  26. Multithread-Prozessor nach Anspruch 24, dadurch gekennzeichnet, dass das Schaltnetzwerkes (18) der Thread-Kontrolleinheit (4) mindestens einen Standardprozessorrumpfnummer-Zwischenspeicher (20) aufweist, welcher die Standardprozessorrumpfnummer (p) zwischenspeichert, welche eine Standardprozessorrumpfeinheit (2), welche zur Abarbeitung von Programmbefehlen zur Verfügung steht und nicht zum aktuellen Taktzyklus Programmbefehle abarbeitet, referenziert.
  27. Multithread-Prozessor nach Anspruch 25 und 26, dadurch gekennzeichnet, dass der Threadnummer-Zwischenspeicher (19) und der Standardprozessorrumpfnummer-Zwischenspeicher (20) jeweils ein FIFO-Speicher (First In – First Out) ist.
  28. Multithread-Prozessor nach Anspruch 25 und 26, dadurch gekennzeichnet, dass eine Threadnummer t, welche einen Thread T referenziert, in Abhängigkeit der Ereignissteuersignale (9) in dem Threadnummer-Zwischenspeicher (19) der Thread-Kontrolleinheit (4) zwischengespeichert wird, falls der Thread T von keiner Standardprozessorrumpfeinheit (2) bearbeitet wird.
  29. Multithread-Prozessor nach Anspruch 25 und 26, dadurch gekennzeichnet, dass höchstens N Threadnummern (t) in Abhängigkeit der Ereignissteuersignale (9) mittels des Schaltnetzwerkes (18) aus dem Threadnummer-Zwischenspeicher (19) zur Bereitstellung einer geholten Threadnummer (t) und zur Abarbeitung von Programmbefehlen des Threads T geholt werden.
  30. Multithread-Prozessor nach Anspruch 25 und 26, dadurch gekennzeichnet, dass eine Standardprozessorrumpfnummer (p), welche eine bestimmte Standardprozessorrumpfeinheit (2) referenziert, in Abhängigkeit der Ereignissteuersignale (9) in dem Standardprozessorrumpfnummer-Zwischenspeicher (20) zwischengespeichert wird, falls keine Programmbefehle eines Threads T von der bestimmten Standardprozessorrumpfeinheit (2) bearbeitet werden.
  31. Multithread-Prozessor nach Anspruch 25 und 26, dadurch gekennzeichnet, dass höchstens M Standardprozessorrumpfnummern (p) in Abhängigkeit der Ereignissteuersignale (9) mittels des Schaltnetzwerkes (18) aus dem Standardprozessorrumpfnummer-Zwischenspeicher (20) zur Bereitstellung von höchstens M geholten Standardprozessorrumpfnummern (p) geholt werden, so dass Programmbefehle durch die mittels der Standardprozessorrumpfnummern (p) referenzierten Standardprozessorrumpfeinheiten (2) abgearbeitet werden.
  32. Multithread-Prozessor nach Anspruch 29 und 31, dadurch gekennzeichnet, dass die Thread-Kontrolleinheit (4) mittels einer aus dem Threadnummer-Zwischenspeicher (19) geholten Threadnummer (t) und einer aus dem Standardprozessorrumpfnummer-Zwischenspeicher (20) geholten Standardprozessorrumpfnummer (p) ein Multiplexersteuersignal <t,p> generiert, so dass die Programmbefehle des mittels der geholten Threadnummer (t) referenzierten Threads T durch die mittels der geholten Standardprozessorrumpfnummer (p) referenzierten Standardprozessorrumpfeinheit (2) abgearbeitet werden.
  33. Multithread-Prozessor nach Anspruch 29, dadurch gekennzeichnet, dass das Multiplexersteuersignal <t,p> zum jeweiligen richtigen Taktzyklus die N × M Multiplexer (10) und die M × N Multiplexer (11) jeweils dann steuert, wenn sich die Adresse des Programmbefehls bzw. der Programmbefehl des mittels der Threadnummer (t) referenzierten Threads T, welcher durch die mittels der Standardprozessorrumpfnummer (p) referenzierten Standardprozessorrumpfeinheit (2) abgearbeitet werden soll, an der entsprechenden Stelle des parallelen Multithread-Prozessors befindet.
DE10353268A 2003-11-14 2003-11-14 Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten Expired - Fee Related DE10353268B3 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE10353268A DE10353268B3 (de) 2003-11-14 2003-11-14 Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten
US10/987,935 US7526636B2 (en) 2003-11-14 2004-11-12 Parallel multithread processor (PMT) with split contexts

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10353268A DE10353268B3 (de) 2003-11-14 2003-11-14 Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten

Publications (1)

Publication Number Publication Date
DE10353268B3 true DE10353268B3 (de) 2005-07-28

Family

ID=34706249

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10353268A Expired - Fee Related DE10353268B3 (de) 2003-11-14 2003-11-14 Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten

Country Status (2)

Country Link
US (1) US7526636B2 (de)
DE (1) DE10353268B3 (de)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102004009610B4 (de) * 2004-02-27 2007-08-16 Infineon Technologies Ag Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten
US8694976B2 (en) 2003-12-19 2014-04-08 Intel Corporation Sleep state mechanism for virtual multithreading
CN109726023A (zh) * 2018-12-12 2019-05-07 中国航空工业集团公司西安航空计算技术研究所 一种支持多线程多上下文的图形任务同步管理方法

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7033373B2 (en) 2000-11-03 2006-04-25 Satiety, Inc. Method and device for use in minimally invasive placement of space-occupying intragastric devices
US6558400B2 (en) 2001-05-30 2003-05-06 Satiety, Inc. Obesity treatment tools and methods
US6746460B2 (en) 2002-08-07 2004-06-08 Satiety, Inc. Intra-gastric fastening devices
US7214233B2 (en) 2002-08-30 2007-05-08 Satiety, Inc. Methods and devices for maintaining a space occupying device in a relatively fixed location within a stomach
US7033384B2 (en) 2002-08-30 2006-04-25 Satiety, Inc. Stented anchoring of gastric space-occupying devices
US7220237B2 (en) 2002-10-23 2007-05-22 Satiety, Inc. Method and device for use in endoscopic organ procedures
US7175638B2 (en) 2003-04-16 2007-02-13 Satiety, Inc. Method and devices for modifying the function of a body organ
US7097650B2 (en) 2003-10-14 2006-08-29 Satiety, Inc. System for tissue approximation and fixation
US7914543B2 (en) 2003-10-14 2011-03-29 Satiety, Inc. Single fold device for tissue fixation
US20050177176A1 (en) 2004-02-05 2005-08-11 Craig Gerbi Single-fold system for tissue approximation and fixation
EP1713402B1 (de) 2004-02-13 2018-07-04 Ethicon Endo-Surgery, Inc. Vorrichtung zur verminderung des rauminhalts eines magens
US7708684B2 (en) 2004-02-27 2010-05-04 Satiety, Inc. Methods and devices for reducing hollow organ volume
US9028511B2 (en) 2004-03-09 2015-05-12 Ethicon Endo-Surgery, Inc. Devices and methods for placement of partitions within a hollow body organ
US8628547B2 (en) 2004-03-09 2014-01-14 Ethicon Endo-Surgery, Inc. Devices and methods for placement of partitions within a hollow body organ
US8252009B2 (en) 2004-03-09 2012-08-28 Ethicon Endo-Surgery, Inc. Devices and methods for placement of partitions within a hollow body organ
US8449560B2 (en) 2004-03-09 2013-05-28 Satiety, Inc. Devices and methods for placement of partitions within a hollow body organ
WO2005097012A2 (en) 2004-03-26 2005-10-20 Satiety, Inc. Systems and methods for treating obesity
US20060106288A1 (en) 2004-11-17 2006-05-18 Roth Alex T Remote tissue retraction device
DE102005001025A1 (de) * 2005-01-07 2006-07-27 Infineon Technologies Ag Multithread-Prozessor mit Kontext-Umschaltung ohne Einschränkungen und/oder Zyklenverlust und Verfahren zum Betreiben eines solchen
US7363450B1 (en) * 2005-06-01 2008-04-22 Sun Microsystems, Inc. Method and apparatus for estimating multithreaded processor throughput based on processor cache performance
US8001549B2 (en) * 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
WO2009150815A1 (ja) * 2008-06-11 2009-12-17 パナソニック株式会社 マルチプロセッサシステム
JP5514120B2 (ja) * 2008-11-14 2014-06-04 株式会社日立メディコ 超音波診断装置及び超音波画像生成方法
KR101572879B1 (ko) 2009-04-29 2015-12-01 삼성전자주식회사 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
US8561078B2 (en) * 2011-09-27 2013-10-15 Throughputer, Inc. Task switching and inter-task communications for multi-core processors
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US20130117168A1 (en) 2011-11-04 2013-05-09 Mark Henrik Sandstrom Maximizing Throughput of Multi-user Parallel Data Processing Systems
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
US10856220B2 (en) 2015-12-21 2020-12-01 Apple Inc. Energy-efficient signal processing
GB2565338B (en) * 2017-08-10 2020-06-03 Mips Tech Llc Fault detecting and fault tolerant multi-threaded processors
US11645178B2 (en) 2018-07-27 2023-05-09 MIPS Tech, LLC Fail-safe semi-autonomous or autonomous vehicle processor array redundancy which permits an agent to perform a function based on comparing valid output from sets of redundant processors

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
GB2234613B (en) * 1989-08-03 1993-07-07 Sun Microsystems Inc Method and apparatus for switching context of state elements in a microprocessor
US5349680A (en) * 1990-11-07 1994-09-20 Kabushiki Kaisha Toshiba Information processing apparatus for executing application programs under control of a system program
US6629237B2 (en) * 2000-09-01 2003-09-30 Intel Corporation Solving parallel problems employing hardware multi-threading in a parallel processing environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
UNGERER, T. et al.: A Survey of Processors with Explicit Multithreading, ACM Computing Surveys, Vol. 35, No. 1, March 2003, pp. 29-63 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8694976B2 (en) 2003-12-19 2014-04-08 Intel Corporation Sleep state mechanism for virtual multithreading
DE102004009610B4 (de) * 2004-02-27 2007-08-16 Infineon Technologies Ag Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten
US7263604B2 (en) 2004-02-27 2007-08-28 Infineon Technologies Ag Heterogeneous parallel multithread processor (HPMT) with local context memory sets for respective processor type groups and global context memory
CN109726023A (zh) * 2018-12-12 2019-05-07 中国航空工业集团公司西安航空计算技术研究所 一种支持多线程多上下文的图形任务同步管理方法
CN109726023B (zh) * 2018-12-12 2023-05-23 中国航空工业集团公司西安航空计算技术研究所 一种支持多线程多上下文的图形任务同步管理方法

Also Published As

Publication number Publication date
US7526636B2 (en) 2009-04-28
US20050198476A1 (en) 2005-09-08

Similar Documents

Publication Publication Date Title
DE10353268B3 (de) Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten
DE60036016T2 (de) Schnell multithreading für eng gekoppelte multiprozessoren
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE19781850B4 (de) Mikroprozessor zum spekulativen Ausführen von Befehlen aus mehreren von einem Verzweigungsbefehl angezeigten Befehlsströmen, Verfahren und Computersystem mit Mikroprozessor
DE10085375B4 (de) Verfahren und Einrichtung für einen pipeline-verschachtelten Multi-Thread-Befehlsdecodierer
DE69332663T2 (de) Datenprozessor mit einem Cachespeicher
DE2224537C2 (de) Einrichtung und Verfahren zur Instruktionsauswahl in einem Fließbandprozessor
DE69932066T2 (de) Mechanismus zur &#34;store-to-load forwarding&#34;
DE112005002173B4 (de) Prozessor mit Abhängigkeitsmechanismus, um vorherzusagen, ob ein Ladevorgang von einem älteren Schreibvorgang abhängig ist
DE10085363B4 (de) Verfahren und Einrichtung zum Verwalten von Ressourcen in einem Multithreaded-Prozessor
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE112005002432B4 (de) Verfahren und Vorrichtung zum Bereitstellen eines Quellenoperanden für eine Instruktion in einem Prozessor
DE10392278T5 (de) Verfahren und Vorrichtung zur Speicherzugangssteuerung
DE102012210895A1 (de) Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor
DE102004009610B4 (de) Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten
DE10393803T5 (de) Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff
DE102014017744A1 (de) Weiche partitionierung eines registerspeicher-caches
DE10353267B3 (de) Multithread-Prozessorarchitektur zum getriggerten Thread-Umschalten ohne Zykluszeitverlust und ohne Umschalt-Programmbefehl
DE19824289A1 (de) Pipelineverarbeitungsmaschine
DE3740834A1 (de) Aufrechterhaltung der kohaerenz zwischen einem mikroprozessorenintegrierten cache-speicher und einem externen speicher
DE112004000741B4 (de) Spekulationszeiger zur Identifizierung datenspekulativer Operationen in einem Mikroprozessor
DE102013114508B4 (de) Blockbasierte Signalverarbeitung

Legal Events

Date Code Title Description
8100 Publication of the examined application without publication of unexamined application
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee