DE10296980B4 - Multi-Threaded-Prozessor und Verfahren zum Zuweisen eines Thread-Vorrangs in einem Multi-Threaded-Prozessor - Google Patents

Multi-Threaded-Prozessor und Verfahren zum Zuweisen eines Thread-Vorrangs in einem Multi-Threaded-Prozessor Download PDF

Info

Publication number
DE10296980B4
DE10296980B4 DE10296980T DE10296980T DE10296980B4 DE 10296980 B4 DE10296980 B4 DE 10296980B4 DE 10296980 T DE10296980 T DE 10296980T DE 10296980 T DE10296980 T DE 10296980T DE 10296980 B4 DE10296980 B4 DE 10296980B4
Authority
DE
Germany
Prior art keywords
thread
counter
processor
priority
value
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
DE10296980T
Other languages
English (en)
Other versions
DE10296980T5 (de
Inventor
Darrell Aloha BOGGS
David Portland Sager
Michael Portland Upton
James Portland Allen
David Portland Burns
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE10296980T5 publication Critical patent/DE10296980T5/de
Application granted granted Critical
Publication of DE10296980B4 publication Critical patent/DE10296980B4/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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 or 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Multi-threaded Prozessor zur Ausführung eines ersten (Thread 0) und eines zweiten (Thread 1) Threads,
a) wobei den Threads abwechselnd der Vorrang für eine vorgegebene Anzahl von Systemzyklen zugewiesen wird, wobei die Anzahl von einem Thread-Vorrang-Zähler gezählt wird, der mit einem dem Thread zugeordneten Anfangswert geladen und mit dem Systemtakt bis auf Null dekrementiert wird, wobei der Anfangswert auf einem in einem Startzähler gespeicherten Startwert basiert,
b) wobei der Prozessor eine Pipeline mit einer Abrufeinheit (11) zum Abrufen von Befehlen aus einem Speicher (5) und wenigstens einer Ausführungseinheit (41) aufweist,
c) wobei die Abrufeinheit (11) Befehle eines Threads abruft und in eine dem Thread zugeordnete erste Warteschlange (13) speichert,
d) wobei jedem Thread eine zweite Warteschlange (33) zum Speichern von der Ausführungseinheit zu liefernden Mikrobefehlen zugeordnet ist,
e) wobei eine Steuerlogik (35, 37) steuert, aus welcher zweiten Warteschlange (33) Mikrobefehle an die Ausführungseinheit geliefert werden, wobei...

Description

  • Die vorliegende Erfindung bezieht sich auf einen Multithreaded-Prozessor zur Ausführung eines ersten und eines zweiten Threads, wobei den Threads abwechselnd der Vorrang für eine vorgegebene Anzahl von Systemtaktzyklen zugewiesen wird, wobei die Anzahl in einem Thread-Vorrang-Zähler gezählt wird, der mit einem dem Thread zugeordneten Anfangswert geladen wird, wobei der Anfangswert auf einem in einem Startzähler gespeicherten Startwert basiert, wobei der Prozessor eine Pipeline mit einer Abrufeinheit zum Abrufen von Befehlen aus einem Speicher und wenigstens einer Ausführungseinheit aufweist, wobei die Abrufeinheit Befehle eines Threads abruft und in eine Warteschlage speichert. Ferner betrifft die Erfindung ein Verfahren zum abwechselnden Zuweisen eines Vorrangs für einen ersten und einen zweiten Thread in einem solchen Multithreaded-Prozessor. Ferner betrifft die Erfindung ein Computersystem mit einem solchen Prozessor.
  • Wie es im Stand der Technik bekannt ist, enthält ein Prozessor eine Vielzahl von Untermodulen, von denen jedes an die Ausführung spezieller Aufgaben angepaßt ist. Bei einem bekannten Prozessor umfassen diese Untermodule folgende: einen Befehls-Cache, eine Befehlsabrufeinheit zum Abrufen geeigneter Befehle aus dem Befehls-Cache; Decodierlogik, die den Befehl in ein endgültiges oder ein Zwischenformat decodiert, Mikrooperationslogik, die Zwischenbefehle in ein endgültiges Format zur Ausführung konvertiert; und eine Ausführungseinheit, die Befehle des endgültigen Formats ausführt (entweder bei einigen Beispielen aus der Decodierlogik oder bei anderen aus der Mikrooperationslogik). Hier werden die Befehle des endgültigen Formats als Mikrooperationen bezeichnet.
  • Von dem Prozessor auszuführender Programmcode kann manchmal in kleinere Komponenten unterteilt werden, die als „Threads” bezeichnet werden. Ein Thread ist eine Serie von Be fehlen, deren Ausführung eine gegebene Aufgabe erreicht. Beispielsweise könnte bei einer Videotelefonanwendung der Prozessor aufgerufen werden, einen Code auszuführen, um Videobilddaten sowie Audiodaten zu behandeln. Es könnte separate Codesequenzen geben, deren Ausführung derart gestaltet ist, daß sie jeweils diese Datenarten behandeln. So könnte ein erster Thread Befehle zur Videobilddatenverarbeitung und ein zweiter Thread Befehle zur Audiodatenverarbeitung enthalten. Anders ausgedrückt, ein Thread ist ein selbständiges Programm, dem üblicherweise ein Thread-Identifizierer zugeordnet ist, und während der Ausführung in einer Multi-Threaded-Umgebung kann sein Architekturzustand aufrechterhalten werden, während Befehle von einem anderen Thread ausgeführt werden.
  • Die Verwendung von mehrfädigen (multi-threaded) Prozessoren wurde im Stand der Technik vorgeschlagen. Bei einem solchen Prozessor kann zwischen der Ausführung von zwei oder mehr Threads umgeschaltet werden. Bei anderen mehrfädigen Prozessoren können die Threads gleichzeitig ausgeführt werden. Bei beiden Prozessoren gibt es keine Abgrenzung zwischen den Threads, wie diese behandelt werden. Insbesondere wird dem Code von einem Thread derselbe Vorrang beziehungsweise dieselbe Priorität gegeben, wie dem Code von einem anderen Thread. Dies könnte zu einem negativen Einfluß auf die Gesamtsystemleistung insbesondere dann führen, wenn die Ausführung kritischen Codes durch die Ausführung nicht-kritischen Codes ausgesetzt oder verlangsamt wird.
  • Ein Multi-threaded-Prozessor und ein Verfahren der eingangs genannten Art sind beispielsweise aus der WO 01/04750 A1 bekannt. Den beiden Threads wird abwechselnd ein Vorrang eingeräumt, wobei dann, wenn beide Threads gleichzeitig dieselbe Ressource benötigen, die Ressource demjenigen Thread zugeteilt wird, der gerade den Vorrang hat. Wenn beispielsweise beide Threads gleichzeitig einen Zugriff auf eine Ausführungseinheit benötigen, so erhält derjenige Thread den Zugriff, der den Vorrang hat. Die Druckschrift schlägt zur Vermeidung von Deadlock- und Lifelock-Zuständen vor, den Vorrang den beiden Threads abwechselnd zuzuteilen, wobei die Länge des Zeitfensters, in dem ein Thread den Vorrang erhält, in Abhängigkeit vom Verarbeitungsfortschritt des Threads eingestellt werden kann. Die Dauer des Zeitfensters richtet sich nach einem Anfangswert in einem Thread-Vorrang-Zähler. Der Anfangswert wird in den Zähler aus einem Startzähler geladen. Der Wert in dem Startzähler wiederum wird in Abhängigkeit vom Fortschritt des Threads geändert, wobei beispielsweise der Startzähler inkrementiert wird, wenn in einer aktuellen Verarbeitungsperiode (Zeitfenster) kein Befehl abgeschlossen (retired) wurde. Wenn jedoch ein Befehl abgeschlossen wurde, wird der Startzähler auf einen Anfangswert zurückgesetzt.
  • Diese Vorgehensweise hat Nachteile. Wenn beispielsweise ein Thread an Befehlen ”ausgehungert” wird (d. h. die Ressourcen zur Ausführung von Mikrobefehlen verfügbar sind, aber der Abruf von Befehlen eingeschränkt ist), kann es sein, dass die Zeit, die durch den Thread-Vorrang-Zähler zur Verfügung gestellt wird, nicht ausreicht, um einen Befehl abzurufen (beispielsweise dann, wenn der Befehlsabruf aufgrund eines erforderlichen Nachschlagens in einem TLB verlängert ist).
  • Aufgabe der Erfindung ist es daher, diesen Nachteil zu mindern oder zu beseitigen.
  • Diese Aufgabe wird erfindungsgemäß durch einen Multithreaded-Prozessor mit den Merkmalen des Anspruchs 1 gelöst. Ferner wird die Aufgabe durch ein Verfahren mit den Merkmalen des Anspruchs 9 bzw. ein Computersystem mit den Merkmalen des Anspruchs 10 gelöst. Vorteilhafte und/oder bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
  • Im folgenden wird die Erfindung anhand von in den Zeichnungen dargestellten bevorzugten Ausführungsformen näher erläutert.
  • 1 ist eine Blockdarstellung eines Computersystems, das gemäß einem Ausführungsbeispiel der vorliegenden Erfindung betrieben wird.
  • 2 ist eine Blockdarstellung eines Teils eines Prozessors, der in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist.
  • 3 ist ein Zustandsdiagramm für die Zuweisung eines Thread-Vorrangs gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
  • 4 ist ein Zustandsdiagramm für das Setzen des Startzählers für Thread 0 oder Thread 1 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
  • Es wird auf 1 Bezug genommen, in der eine Blockdarstellung eines Computersystems gezeigt ist, das gemäß einem Ausführungsbeispiel der vorliegenden Erfindung betrieben wird. Bei diesem Beispiel enthält das Computersystem 1 einen Prozes sor 3, welcher in der Lage ist, im Speicher 5 gespeicherten Code auszuführen. Bei diesem Beispiel speichert der Speicher 5 Code für verschiedene Threads, wie beispielsweise Code für Thread 0 (8), Thread 1 (9), etc. Wie es im Stand der Technik bekannt ist, kann der Code für beide Threads Teil einer Benutzeranwendung und des Betriebssystems sein.
  • Es wird auf 2 Bezug genommen, in der eine Blockdarstellung eines Prozessors (zum Beispiel eines Mikroprozessors, eines digitalen Signalprozessors oder dergleichen) gezeigt ist, der gemäß einem Ausführungsbeispiel der vorliegenden Erfindung betrieben wird. Bei diesem Ausführungsbeispiel ist der Prozessor ein mehrfädiger Prozessor, wobei der Prozessor 10 theoretisch in zwei oder mehr logische Prozessoren unterteilt ist. So wie er hier verwendet wird, bezieht sich der Begriff „Thread” auf eine Befehlscodesequenz. Bei einer Videotelefonanwendung beispielsweise könnte der Prozessor aufgerufen werden, um Befehlscode zum Behandeln von Videobilddaten sowie von Audiodaten auszuführen. Es könnte separate Codesequenzen geben, deren Ausführung zum Behandeln jeder dieser Datenarten ausgebildet ist. So könnte ein erster Thread Befehle für eine Videobilddatenverarbeitung enthalten, und ein zweiter Thread könnte Befehle für eine Audiodatenverarbeitung enthalten. Bei diesem Beispiel gibt es eine oder mehrere Ausführungseinheiten (zum Beispiel einschließend die Ausführungseinheit 41), welche einen oder mehrere Befehle gleichzeitig ausführen können. Der Prozessor 10 kann jedoch als zwei logische Prozessoren behandelt werden, wobei ein erster logischer Prozessor Befehle aus dem ersten Thread und ein zweiter logischer Prozessor Befehle aus dem zweiten Thread ausführt.
  • Bei diesem Ausführungsbeispiel des Prozessors 10 werden Befehle und/oder Bytes von Daten durch die Abrufeinheit 11 abgerufen und einer Warteschlange 13 zur Verfügung gestellt und als Teil der Thread 0-Warteschlange oder der Thread 1-Warteschlange gespeichert. Einem Fachmann ist es klar, daß die im Prozessor 10 verwendeten Warteschlangen verwendet werden können, um mehr als zwei Threads zu speichern. Befehle aus den beiden Threads werden an einen Multiplexer (MUX) 15 angelegt, und eine Steuerlogik 17 wird verwendet, um zu steuern, ob Befehle aus dem Thread 0 oder dem Thread 1 an eine Decodiereinheit 21 geliefert werden. Die Decodiereinheit 21 kann einen Befehl in zwei oder mehr Mikrobefehle konvertieren und die Mikrobefehle in die Warteschlange 23 liefern (bei einem RISC (Reduced Instruction Set Code)-Prozessor können sich die Befehle bereits in einem decodierten Format befinden, und die Decodiereinheit 21 konvertiert sie in ein Format zur Ausführung. Die Ausgaben der Warteschlange 23 werden an einen MUX 25 geliefert, welcher Befehle aus dem Thread 0 oder dem Thread 1 auf der Grundlage des Betriebs einer Steuerlogik 27 an eine Umbenennungs/Zuteilungs-Einheit 31 liefert. Die Umbenennungs/Zuteilungs-Einheit 31 wiederum liefert Befehle an die Warteschlange 33. Ein MUX 35 wählt zwischen der Thread 0-Warteschlange und der Thread 1-Warteschlange auf der Grundlage des Betriebs der Einplanungssteuerlogik 37 aus, welche beispielsweise Befehle aus Thread 0 und Thread 1 auf der Grundlage verfügbarer Ressourcen in der Ausführungseinheit 41 auswählen kann. Die Ausgabe des MUX 35 wird an eine Außer-Der-Reihe-Ausführungseinheit 41 bei diesem Ausführungsbeispiel geliefert, welche den Befehl ausführt. Der Befehl wird dann in die Warteschlange 43 gebracht. Die Ausgaben der Warteschlange 43 werden an einen MUX 45 geliefert, welcher Befehle aus Thread 0 und Thread 1 an eine Festschreibeeinheit (Retire Unit) 51 auf der Grundlage des Betriebs der Steuerlogik 47 sendet.
  • In 2 kann eine Verzweigungsvorhersageschaltung hinzugefügt werden, um die Effizienz des Prozessors 10 zu verbessern. Beispielsweise könnte eine Verzweigungsvorhersageschaltung zur Abrufeinheit 11 hinzugefügt werden. Wie es im Stand der Technik bekannt ist, betrifft eine Verzweigungsvorhersage ein Vorhersagen, ob ein Verzweigungsbefehl (zum Beispiel BNE-Branch if not equal) genommen wird, auf der Grundlage der Vorgeschichte der Ausführungscodesequenzen beispielsweise. Sobald eine Verzweigung vorhergesagt worden ist, kann der nächste Befehl in die „Pipeline” geladen werden (zum Beispiel die Einheiten, die zur Ausführungseinheit 41 hinführen), so daß dann, wenn die Verzweigung als genommen vorhergesagt wird, die rich tigen Befehle sofort für die Ausführungseinheit verfügbar sind. Wenn die Verzweigungsvorhersage falsch ist, dann sind die Befehle in der Pipeline nicht richtig und müssen hinausgespült werden, wobei die richtigen Befehle in die Pipeline geladen werden.
  • Bei einem Beispiel eines mehrfädigen (multi-threaded) Prozessors können zwei Threads parallel verarbeitet werden. Unter Berücksichtigung der hier angegebenen Lehren kann die vorliegende Erfindung auf drei oder mehr Threads, die parallel verarbeitet werden, ausgedehnt werden. Bei diesem Ausführungsbeispiel schließt der Begriff „parallel” eine gleichzeitige und/oder sukzessive Verarbeitung/Ausführung von Befehlen ein. Hier wird der Thread-Vorrang verwendet, um zu bestimmen, welcher Thread die Verwendung geteilter Ressourcen erlangt, wenn beide Threads dieselben Ressourcen gleichzeitig verwenden müssen. Der Thread-Vorrang könnte durch ein oder mehrere Signale gekennzeichnet werden, die in einem Speicherbereich 4 in dem Prozessor 10 (1) gespeichert werden. Beispielsweise würden Thread0Priority und Thread1Priority kennzeichnen, welcher der beiden Threads (Thread 0 oder Thread 1) den Vorrang gegenüber dem anderen aufweist. Bei einem Beispiel hat dann, wenn beide Signale ausgeschaltet sind, keiner der Threads einen Vorrang gegenüber dem anderen. Darüber hinaus können drei „Zähler” zur Verfügung gestellt werden, um die Zuweisung des Thread-Vorrangs zu unterstützen. Bei 2 könnten diese Zähler als Teil der Retire-Einheit 51 zur Verfügung gestellt werden. Zunächst wird ein Vorrang-Zähler (Precedence Counter) 52 zur Verfügung gestellt, welcher auf einen (unten beschriebenen) Anfangswert gesetzt wird – und bei diesem Ausführungsbeispiel – auf 0 herunterzählt. Wenn der Vorrang-Zähler 52 abgelaufen ist (das heißt 0 erreicht), ist dies eine Anzeige an den Prozessor 10, daß der Vorrang von dem Thread, der den Vorrang hat, auf den anderen Thread verschoben werden sollte. Ein Thread 0-Startzähler 53 und ein Thread 1-Startzähler 55 werden außerdem zur Verfügung gestellt, welche einen Wert speichern, der verwendet wird, um den Anfangswert des Vorrang-Zählers (unten beschrieben) zu setzen.
  • Gemäß Ausführungsbeispielen der vorliegenden Erfindung wird der Thread-Vorrang-Zähler so eingestellt, daß er ein geeignet dimensioniertes Zeitfenster auf der Grundlage des Voranschreitens eines Threads zur Verfügung stellt. Beispielsweise könnte das Voranschreiten des Threads auf der Grundlage der Anzahl der Mikrooperationen basieren, die festgeschrieben (retired) werden. Wenn der Thread-Vorrang-Zähler gesetzt wird (zum Beispiel nachdem er abgelaufen ist), kann er mit einem Wert neu geladen werden, der gleich einem mehrfachen des Werts (bis zu einem vorgegebenen Maximum) aus dem dem Thread, der demnächst den Vorrang haben wird, zugeordneten Startzähler ist. Demzufolge sollte der Startzähler einen Minimalwert von 1 haben. Wenn somit eine Mikrooperation durch die Retire-Einheit 51 festgeschrieben wird, kann der Startzähler für diesen Thread auf 1 gesetzt werden, so daß dann, wenn er erneut den Thread-Vorrang erlangt, der Thread-Vorrang-Zähler auf eine relativ geringe Zahl gesetzt werden wird. Wenn während der Zeit, in der ein Thread einen Vorrang hat, der Thread-Vorrang-Zähler abläuft und der Thread nicht in der Lage war, eine Mikrooperation während dieses Zeitfensters festzuschreiben, wird der Startzähler um einen Wert (beispielsweise 1) inkrementiert, so daß beim nächsten Mal, wenn der Thread den Vorrang hat, er mehr Zeit haben wird, um wenigstens eine Mikrooperation festzuschreiben (retire).
  • Die Verwendung dieses Verfahrens zum Zuweisen eines Vorrangs hat wenigstens zwei Nachteile. Zunächst gibt es die Möglichkeit, daß ein Thread weiterhin einen Thread-Vorrang hat, selbst wenn er Mikrooperationen festschreibt, während der andere Thread nicht in der Lage ist, Mikrooperationen während seiner Thread-Vorrang-Zeitfenster festzuschreiben. Wenn beispielsweise Thread 0 1000 aufeinanderfolgende Divisionsoperationen und ein großes Thread-Vorrang-Fenster enthält, während Thread 1 einen Divisionsbefehl enthält, könnte Thread 1 blockiert sein, bis die Ausführung von Thread 0 die 1000 Divisionsoperationen abschließt oder bis das Thread-Vorrang-Zeitfenster endet. Bei diesem Beispiel basiert das Thread-Vorrang-Zeitfenster auf der Zeitdauer, die der Thread-Vorrang- Zähler benötigt, um abzulaufen, nachdem er gesetzt worden ist. Wenn zweitens ein Thread bezüglich der Befehle „ausgehungert” wird (das heißt Ressourcen für die Ausführung von Mikrooperationen verfügbar sind, aber das Abrufen von Befehlen eingeschränkt ist), wenn dieser Thread den Vorrang erlangt, so kann die für den Thread-Vorrang-Zähler verfügbar gemachte Zeit möglicherweise nicht ausreichend sein, um das Abrufen eines Befehls zu ermöglichen. Dies ist beispielsweise dann zu erkennen, wenn ein Seiten-Fehlversuch-Behandler oder PMH (Page Miss Handler) verwendet wird, welcher Datenübersetzungsnachschlagepuffer und Befehlsübersetzungsnachschlagepuffer und Seiten- und Cachezeilenbegrenzungsangelegenheiten behandelt. In einem solchen Fall kann es sein, daß der PMH wegen eines TLB-Fehlversuchs schnell Befehle abrufen muß, aber nicht in der Lage ist, dies auszuführen. Demzufolge muß die Inkrementierung des Startzählers für diesen Thread mehrere Male ausgeführt werden, bevor die von dem Thread-Vorrang-Zähler zur Verfügung gestellte sich ergebende Zeit ausreichend ist, um das Abrufen von Befehlen zu ermöglichen (welche schließlich zu der Ausführung und dem Festschreiben von Mikrobefehlen für diesen Thread führen würde). Somit geht jedesmal dann, wenn die Ausführung von Thread 1 versucht wird und keine Befehle laden kann, Verarbeitungszeit für Thread 0 verloren, und die Verarbeitungszeit für den Befehlsladeausfall geht ebenso verloren.
  • Gemäß einem Ausführungsbeispiel der vorliegenden Erfindung werden ein System und ein Verfahren angegeben, welche die Leistungsfähigkeit eines mehrfädigen Prozessors über die Zuteilung eines Thread-Vorrangs verbessern. Es wird auf 3 Bezug genommen, in der ein Zustandsdiagramm für das Zuweisen eines Thread-Vorrangs gemäß einem Ausführungsbeispiel der vorliegenden Erfindung gezeigt ist. Im Zustand 61 verweist der Thread-Vorrang auf dem ersten Thread, Thread 0. Der Thread-Vorrang-Zähler wird bei diesem Ausführungsbeispiel in Übereinstimmung mit einem Systemtakt für den Prozessor dekrementiert 63. Wie es durch Block 65 angezeigt ist, ändert sich der Zustand vom Zustand 61 in den Zustand 67, wenn eine der folgenden Bedingungen erfüllt wird:
    • 1. Der Thread-Vorrang-Zähler hat 0 erreicht;
    • 2. Thread 0 schreibt eine Mikrooperation fest;
    • 3. Es gibt keine Anzeige einer bevorstehenden befehlsseitigen (Iside) Aushungerung für Thread 0 mehr.
  • Iside-Aushungerung liegt dann vor, wenn ein Thread keine Befehle abrufen kann, weil der andere Thread oder die anderen Threads ihn effektiv derart blockiert, daß er dies nicht ausführen kann. Hier ist eine Anzeige einer bevorstehenden Iside-Aushungerung eine Anzeige, daß eine solche Situation für einen Thread herannahen könnte. Eine Anzeige einer bevorstehenden Iside-Aushungerung könnte über die Überwachung eines oder mehrere Zustände oder Bedingungen vorweggenommen werden. Bei einem Ausführungsbeispiel können die Bedingungen eine oder mehrere der folgenden einschließen:
    • 1. Der Prozessor ist in einem Multi-Threaded-Verarbeitungsmodus im Unterschied zu einem Einzel-Thread-Verarbeitungsmodus und mehr als ein Thread ist aktiv.
    • 2. Der gerade betrachtet Thread weist keine Befehle in der Ausführungspipeline auf (zum Beispiel gibt es keine Befehle, die am MUX 35 darauf warten, daß die Einplanungssteuerlogik 37 bewirkt, daß Mikrooperationen für diesen Zweck an die Ausführungseinheit 41 (2) weitergeleitet werden).
    • 3. Die Ausgabe neuer Befehle in die Ausführungs-Pipeline wird nicht blockiert, weil der gerade betrachtete Thread eine benötigte Ressource gefüllt hat. Bei diesem Ausführungsbeispiel schließt die Ausführungspipeline die Verarbeitung von Befehlen aus dem MUX 35 über die Ausführungseinheit ein. Beispielsweise könnte die Ausführungseinheit 41 einen Speicher-Puffer für den aktuellen Thread enthalten, der mit Speicher-Befehlen gefüllt wird. In einem solchen Fall wird die Verarbeitung des Threads nicht notwendigerweise negativ beeinflußt durch das Fehlen des Befehlsabrufens, wohl aber durch die Verzögerung bei der Ausführung von Speicher-Befehlen.
    • 4. Einem Thread, der nicht der gerade betrachtet ist, wurde kein voller oder exklusiver Zugriff auf die Prozessormo dule gegeben. Mit anderen Worten, diese Bedingung ist nicht erfüllt, wenn einem anderen Thread ein voller oder exklusiver Zugriff auf Prozessormodule gegeben worden ist. In einer solchen Situation wäre irgendeine Befehlsaushungerung auf der Seite des gerade betrachteten Threads beabsichtigt.
    • 5. Der gerade betrachtete Thread befindet sich in einem Zustand, in dem er versucht, Befehle abzurufen. Beispielsweise enthalten viele Prozessoren, einschließlich derjenigen, die von der Intel Cooperation (Santa Clara, Californien) hergestellt werden, ein „Stoppe-Takt”-Pin. Ein Anlegen eines Signals an dieses Pin führt dazu, daß der Prozessor seine Ressourcen ausräumt. In diesem Fall können sämtliche Ressourcen frei von ausführbaren Befehlen für den betrachteten Thread sein. Dementsprechend würde das Fehlen des Befehlsabrufens in einem solchen Fall nicht als Aushungerung angesehen werden. Ein Umschalten aus einem Multi-Thread-Modus einen Einzel-Thread-Modus ist ein weiteres Beispiel, bei welchem eine Befehlsaushungerung nicht als ein Problem angesehen werden sollte.
    • 6. Ein Sicherungsprotokoll einer höheren Leistungsfähigkeit ist nicht aktiv. Wenn es beispielsweise tatsächlich ein anderes Protokoll gibt, um den Vorrang von einem Thread zu einem anderen umzuschalten, so kann das Abarbeiten dieses Protokolls mit einer Befehlsaushungerungsbehandlung gemäß der vorliegenden Erfindung einen negativen Einfluß auf die Prozessorleistung haben.
    • 7. Ein Befehlsaushungerungs-Freigabebit ist gesetzt (das heißt das Bit kann von einer Steuerlogik gesetzt werden, um Iside-Aushungerungs/Erfassungs/Auflösung auszuschalten.
    • 8. Der betrachtete Thread wartet nicht auf einen Befehlsabruf, der das Chip verlassen hat (zum Beispiel vom Prozessor weg, wie beispielsweise Hauptspeicher).
  • Wenn bei diesem Ausführungsbeispiel sämtliche überwachten Bedingungen erfüllt sind, dann gibt es eine Anzeige einer bevorstehenden Iside-Aushungerung für Thread 0. Obwohl acht Be dingungen oben präsentiert wurden, kann die vorliegende Erfindung auf zusätzliche Bedingungen oder eine geringeren Anzahl von Bedingungen ausgedehnt werden. Beispielsweise könnte die Anzeige einer bevorstehenden Iside-Aushungerung lediglich darauf basieren, daß die obigen Bedingungen 1, 2 und 5 wahr sind.
  • Im Block 67 wird der Thread-Vorrang von Thread 0 zu Thread 1 gewechselt. Der Thread-Vorrang-Zähler wird mit einem Wert von 16 multipliziert mit dem Wert in einem Startzähler eines zweiten Threads (Thread 1) geladen. Zu diesem Zeitpunkt werden die Thread-Vorrangsignale so umgeschaltet, daß sie anzeigen, daß Thread 1 den Vorrang über Thread 0 hat. Die Steuerung fährt dann zu Block 69 fort, wo Thread 1 den Vorrang hat und der Thread-Vorrang-Zähler in Übereinstimmung mit einem Systemtakt dekrementiert wird (Block 70). Wie es durch die Bedingungen in Block 71 angezeigt ist, ändert sich der Zustand von Block 69 zu Block 73, wenn eine oder mehrere Bedingungen erfüllt sind. Bei diesem Ausführungsbeispiel ändert sich der Zustand, wenn irgendeine der folgenden drei Bedingungen erfüllt ist:
    • 1. Der Thread-Vorrang-Zähler erreicht 0;
    • 2. Thread 0 schreibt eine Mikrooperation fest (retires);
    • 3. es gibt keine Anzeige einer bevorstehenden Iside(Instruction Side)-Aushungerung für Thread 1.
  • Im Zustand 73 wird der Thread-Vorrang-Zähler mit 16 multipliziert mit dem Wert im Startzähler des Thread 1 geladen, und die richtigen Thread-Vorrang-Signale werden so umgeschaltet, daß sie anzeigen, daß Thread 0 Vorrang hat. Die Steuerung kehrt dann zum Block 61 zurück. Beim Rücksetzen des Prozessors (Block 75) werden die Aktionen des Zustands 73 unternommen, und Thread 0 wird bei diesem Ausführungsbeispiel der Vorrang gegeben.
  • Es wird auf 4 Bezug genommen, in der ein Zustandsdiagramm zum Setzen des Startzählers eines der Threads 0 und 1 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung gezeigt ist. Beim Rücksetzen (Block 80) geht die Steuerung zum Block 81, wo der Wert für den Startzähler auf 1 gesetzt wird. Um vom Block 81 zum Block 82 zu gelangen, sollte eine von zwei Bedingungen (Block 85) erfüllt sein:
    • 1. Der Thread-Vorrang wurde zu einem anderen Thread umgeschaltet, bevor der gegenwärtige Thread in der Lage war, eine Mikrooperation festzuschreiben (to retire);
    • 2. es gibt eine Anzeige einer bevorstehenden befehlsseitigen Aushungerung für den aktuellen Thread.
  • Im Block 82 wird der Wert in dem Startzähler geometrisch modifiziert (indem beispielsweise ein binäres 1-Bit hineingeschoben und sämtliche Bits nach links verschoben werden). Beispielsweise würde ein Wert 1 zu einem Wert 3 gemacht werden, ein Wert 3 würde zu einem Wert 7 gemacht werden und ein Wert 2n-1 würde zu einem Wert 2n+1 – 1 gemacht werden (wobei n > 0 ist). Die Steuerung verbleibt beim Zustand 82, während es eine Anzeige einer bevorstehenden Iside-Aushungerung gibt (Block 86). Bei diesem Ausführungsbeispiel wird bei jedem Systemtakt der Wert in dem Startzähler inkrementiert, wie es oben erörtert worden ist, bis ein Maximalwert erreicht ist. Die Steuerung bewegt sich zurück zum Block 81, wenn eine der folgenden Bedingungen auftritt (Block 84):
    • 1. Eine Mikrooperation für diesen Thread wird festgeschrieben;
    • 2. es gibt keine Anzeige einer bevorstehenden befehlsseitigen Aushungerung für den Thread
  • Die Steuerung geht vom Block 82 zum Block 83, wenn „weitere Bedingungen” nicht erfüllt sind. Bei diesem Ausführungsbeispiel geht dann, wenn die Steuerung vom Block 81 zum Block 82 ging, weil der Thread-Vorrang zu einem anderen Thread umgeschaltet wurde, bevor der aktuelle Thread in der Lage war, eine Mikrooperation festzuschreiben, die Steuerung vom Block 82 zu 83, wenn folgende „weitere” Bedingungen nicht erfüllt sind:
    • 1. Der betrachtete Thread hat eine Mikrooperation festgeschrieben; und
    • 2. das Thread-Vorrangsignal wurde nicht zu dem betrachteten Thread umgeschaltet (Block 87). Mit anderen Worten, der Wert in dem Zähler soll bei demselben Wert gehalten werden, wenn der Thread keine Mikrooperation festgeschrieben hat und dieser Thread den Thread-Vorrang hat. Die Steuerung bleibt bei Block 83, wo der aktuelle Wert in dem Startzähler auf dem gleichen Wert gehalten wird, solange die anderen Bedingungen nicht erfüllt sind (Block 88). Die Steuerung kehrt zum Block 82 zurück, wenn eine der folgenden Bedingungen erfüllt ist (Block 89): 1. Der Thread-Vorrang schaltete aus dem aktuellen Thread zu einem anderen Thread um, bevor eine Mikrooperation festgeschrieben werden konnte; 2. es gibt eine Anzeige einer bevorstehenden befehlsseitigen Aushungerung für den Thread.
  • Die Steuerung geht vom Block 83 zum Block 81, wenn der Thread eine Mikrooperation festschreibt (retires) (Block 90). Schließlich geht die Steuerung vom Block 81 zum Block 83, wenn weitere Bedingungen nicht erfüllt sind (Block 91). Unter Verwendung des Verfahrens und Systems gemäß der vorliegenden Erfindung können die oben genannten Probleme vermieden werden. Die Implementierung der Ablaufdiagramme der 3 und 4 können durch eine geeignet konfigurierte Steuerlogik ausgeführt werden (die beispielsweise die Steuerlogik 37 in 2 einschließt). Alternativ kann die Steuerlogik ein Untermodul des Prozessors 10 sein, der Befehle ausführt, um die Ablaufdiagramme der 3 und 4 zu implementieren.
  • Obwohl verschiedene Ausführungsbeispiele speziell hier veranschaulicht und beschrieben worden sind, ist es klar, daß Modifikationen und Variationen der vorliegenden Erfindung durch die obigen Lehren abgedeckt sind und innerhalb des Umfangs der beigefügten Ansprüche liegen, ohne vom Geist und beabsichtigten Umfang der Erfindung abzuweichen.

Claims (10)

  1. Multi-threaded Prozessor zur Ausführung eines ersten (Thread 0) und eines zweiten (Thread 1) Threads, a) wobei den Threads abwechselnd der Vorrang für eine vorgegebene Anzahl von Systemzyklen zugewiesen wird, wobei die Anzahl von einem Thread-Vorrang-Zähler gezählt wird, der mit einem dem Thread zugeordneten Anfangswert geladen und mit dem Systemtakt bis auf Null dekrementiert wird, wobei der Anfangswert auf einem in einem Startzähler gespeicherten Startwert basiert, b) wobei der Prozessor eine Pipeline mit einer Abrufeinheit (11) zum Abrufen von Befehlen aus einem Speicher (5) und wenigstens einer Ausführungseinheit (41) aufweist, c) wobei die Abrufeinheit (11) Befehle eines Threads abruft und in eine dem Thread zugeordnete erste Warteschlange (13) speichert, d) wobei jedem Thread eine zweite Warteschlange (33) zum Speichern von der Ausführungseinheit zu liefernden Mikrobefehlen zugeordnet ist, e) wobei eine Steuerlogik (35, 37) steuert, aus welcher zweiten Warteschlange (33) Mikrobefehle an die Ausführungseinheit geliefert werden, wobei dann, wenn Mikrobefehle aus den den beiden Threads zugewiesenen Warteschlangen an dieselbe Ausführungseinheit geliefert werden sollen, die Steuerlogik die zweite Warteschlange desjenigen Threads auswählt, dem jeweils ein Vorrang zugewiesen ist, f) wobei für einen Thread f.1) zunächst ein vorläufiger Startwert in den Startzähler gespeichert wird, f.2) dann bestimmt wird, ob der Prozessor sich im Multi-threaded-Verarbeitungsmodus befindet, der Thread keine Befehle in der zweiten Warteschlange hat und die sich aus dem aktuellen Startwert ergebende Anzahl von Systemtaktzyklen nicht ausreicht, dass in dem dadurch bestimmten Zeitfenster das Abrufen eines Befehls durch die Abrufeinheit ermöglicht wird, und f.3) sofern dies der Fall ist, der Startwert inkrementiert wird.
  2. Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass der Thread-Vorrang-Zähler von dem Anfangswert auf Null heruntergezählt wird.
  3. Prozessor nach Anspruch 2, dadurch gekennzeichnet, dass der Thread-Vorrang-Zähler mit dem Systemtakt dekrementiert wird.
  4. Prozessor nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass der Anfangswert, mit dem der Thread-Vorrang-Zähler geladen wird, dem 16-fachen des in dem Startzähler gespeicherten Startwerts entspricht.
  5. Prozessor nach Anspruch 4, dadurch gekennzeichnet, dass der in dem Startzähler gespeicherte vorläufige Startwert gleich 1 ist.
  6. Prozessor nach Anspruch 4 oder 5, dadurch gekennzeichnet, dass der Startwert in dem Startzähler geometrisch inkrementiert wird, indem sämtliche Bits in dem Startzähler nach links verschoben und eine 1 in das letzte Bit hineingeschoben wird.
  7. Prozessor nach Anspruch 6, dadurch gekennzeichnet, dass der Startwert in dem Startzähler mit jedem Systemtakt inkrementiert wird, solange die im Schritt f.2) genannten Bedingungen vorliegen.
  8. Prozessor nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass der Startwert solange inkrementiert wird, bis ein Maximalwert erreicht ist.
  9. Verfahren zum abwechselnden Zuweisen eines Vorrangs für einen ersten und einen zweiten Thread in einem Multithreaded-Prozessor nach einem der Ansprüche 1 bis 8, wobei: der Vorrang einem ersten Thread (Thread 0) zugewiesen wird, ein dem ersten Thread zugeordneter Anfangswert in einen Thread-Vorrang-Zähler geladen und mit dem Systemtakt bis auf Null dekrementiert wird, wobei der Anfangswert auf einem in einem Startzähler gespeicherten Startwert basiert, bei Ablauf des Thread-Vorrang-Zählers der Vorrang dem zweiten Thread zugewiesen wird, wobei der Thread-Vorrang-Zähler mit einem dem zweiten Thread zugeordneten Anfangswert geladen wird, wobei für jeden Thread zunächst ein vorläufiger Startwert in den dem Thread zugeordneten Startzähler gespeichert wird, dann bestimmt wird, ob der Prozessor sich im Multi-threaded-Verarbeitungsmodus befindet, der Thread keine Befehle in einer Warteschlange hat, die der Ausführungseinheit zu liefernde Mikrobefehle enthält, und die sich aus dem aktuellen Startwert ergebende Anzahl von Systemtaktzyklen nicht ausreicht, dass in dem dadurch bestimmten Zeitfenster das Abrufen eines Befehls durch die Abrufeinheit ermöglicht wird, und sofern dies der Fall ist, der Startwert des Startzählers des ersten Threads inkrementiert wird.
  10. Computersystem zum Handhaben der parallelen Verarbeitung wenigstens eines ersten und zweiten Threads, aufweisend: einen Speicher zum Speichern von Befehlen für den ersten und den zweiten Thread; einen mit dem Speicher gekoppelten Multi-threaded-Prozessor nach einem der Ansprüche 1 bis 8.
DE10296980T 2001-06-22 2002-04-18 Multi-Threaded-Prozessor und Verfahren zum Zuweisen eines Thread-Vorrangs in einem Multi-Threaded-Prozessor Expired - Fee Related DE10296980B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/888,273 US7454600B2 (en) 2001-06-22 2001-06-22 Method and apparatus for assigning thread priority in a processor or the like
US09/888,273 2001-06-22
PCT/US2002/012339 WO2003001367A1 (en) 2001-06-22 2002-04-18 Method and apparatus for assigning thread priority in a multi-threaded processor

Publications (2)

Publication Number Publication Date
DE10296980T5 DE10296980T5 (de) 2004-10-07
DE10296980B4 true DE10296980B4 (de) 2010-04-22

Family

ID=25392895

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10296980T Expired - Fee Related DE10296980B4 (de) 2001-06-22 2002-04-18 Multi-Threaded-Prozessor und Verfahren zum Zuweisen eines Thread-Vorrangs in einem Multi-Threaded-Prozessor

Country Status (8)

Country Link
US (4) US7454600B2 (de)
CN (1) CN100517218C (de)
BR (1) BRPI0209387B1 (de)
DE (1) DE10296980B4 (de)
GB (1) GB2392751B (de)
HK (1) HK1068434A1 (de)
TW (1) TWI304181B (de)
WO (1) WO2003001367A1 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7454600B2 (en) 2001-06-22 2008-11-18 Intel Corporation Method and apparatus for assigning thread priority in a processor or the like
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
JP3892829B2 (ja) * 2003-06-27 2007-03-14 株式会社東芝 情報処理システムおよびメモリ管理方法
US7748001B2 (en) * 2004-09-23 2010-06-29 Intel Corporation Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time
US9626194B2 (en) 2004-09-23 2017-04-18 Intel Corporation Thread livelock unit
US8141087B2 (en) * 2006-03-31 2012-03-20 International Business Machines Corporation Resolving computing resource deadlocks based on priority and dependent processes
CN101082869A (zh) * 2006-05-29 2007-12-05 松下电器产业株式会社 信息处理装置及方法和记录了信息处理程序的记录介质
US20080077727A1 (en) * 2006-09-25 2008-03-27 Baca Jim S Multithreaded state machine in non-volatile memory devices
US8024731B1 (en) * 2007-04-25 2011-09-20 Apple Inc. Assigning priorities to threads of execution
US8285973B2 (en) * 2008-08-04 2012-10-09 International Business Machines Corporation Thread completion rate controlled scheduling
WO2010052679A1 (en) * 2008-11-10 2010-05-14 Nxp B.V. Resource controlling
US8386753B2 (en) * 2009-04-14 2013-02-26 International Business Machines Corporation Completion arbitration for more than two threads based on resource limitations
US8175759B2 (en) * 2009-06-22 2012-05-08 Honeywell International Inc. Systems and methods for validating predetermined events in reconfigurable control systems
US8695002B2 (en) * 2009-10-20 2014-04-08 Lantiq Deutschland Gmbh Multi-threaded processors and multi-processor systems comprising shared resources
CN106909444B (zh) * 2011-12-22 2021-01-12 英特尔公司 用于指定应用线程性能状态的指令的指令处理装置及相关方法
WO2013147852A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Instruction scheduling for a multi-strand out-of-order processor
US9229721B2 (en) * 2012-09-10 2016-01-05 Qualcomm Incorporated Executing subroutines in a multi-threaded processing system
US10360063B2 (en) * 2015-09-23 2019-07-23 Qualcomm Incorporated Proactive resource management for parallel work-stealing processing systems
CN108021597B (zh) * 2016-10-28 2022-02-08 阿里巴巴集团控股有限公司 一种并行计数器、服务器和一种计数方法
US11068274B2 (en) * 2017-12-15 2021-07-20 International Business Machines Corporation Prioritized instructions in an instruction completion table of a simultaneous multithreading processor
CN108279927B (zh) * 2017-12-26 2020-07-31 芯原微电子(上海)股份有限公司 可调整指令优先级的多通道指令控制方法及系统、控制器

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001004750A1 (en) * 1999-07-08 2001-01-18 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5220653A (en) 1990-10-26 1993-06-15 International Business Machines Corporation Scheduling input/output operations in multitasking systems
US5956722A (en) * 1997-09-23 1999-09-21 At&T Corp. Method for effective indexing of partially dynamic documents
US6105051A (en) 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6076157A (en) 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
FR2782422B1 (fr) * 1998-08-13 2000-09-15 St Microelectronics Sa Circuit de mesure d'intervalles de temps auto-calibre
US6834315B2 (en) * 2001-03-26 2004-12-21 International Business Machines Corporation Method, system, and program for prioritizing input/output (I/O) requests submitted to a device driver
US7454600B2 (en) 2001-06-22 2008-11-18 Intel Corporation Method and apparatus for assigning thread priority in a processor or the like

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001004750A1 (en) * 1999-07-08 2001-01-18 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Solomon,D.A., et.al.: Inside Microsoft Windows 2000, Third Edition. Chapter 6. Processes, Threads, and Jobs. Published 16.08.2000, , S.1-6, (last updated 06.07.2001), (recherchiert am 15.04.08) *
Solomon,D.A., et.al.: Inside Microsoft Windows 2000, Third Edition. Chapter 6. Processes, Threads, and Jobs. Published 16.08.2000, <http://www.microsoft.com/mspress/books/sampchap/4 354d.aspx>, S.1-6, (last updated 06.07.2001), (recherchiert am 15.04.08)

Also Published As

Publication number Publication date
US20110113222A1 (en) 2011-05-12
US20110239221A1 (en) 2011-09-29
GB2392751A (en) 2004-03-10
GB2392751B (en) 2005-11-02
US7877583B2 (en) 2011-01-25
US20020199088A1 (en) 2002-12-26
BRPI0209387B1 (pt) 2016-05-31
CN1518691A (zh) 2004-08-04
CN100517218C (zh) 2009-07-22
TWI304181B (en) 2008-12-11
WO2003001367A1 (en) 2003-01-03
US8850165B2 (en) 2014-09-30
US20090070562A1 (en) 2009-03-12
GB0323746D0 (en) 2003-11-12
US7987346B2 (en) 2011-07-26
HK1068434A1 (en) 2005-04-29
DE10296980T5 (de) 2004-10-07
US7454600B2 (en) 2008-11-18
BR0209387A (pt) 2004-07-06

Similar Documents

Publication Publication Date Title
DE10296980B4 (de) Multi-Threaded-Prozessor und Verfahren zum Zuweisen eines Thread-Vorrangs in einem Multi-Threaded-Prozessor
DE10085363B4 (de) Verfahren und Einrichtung zum Verwalten von Ressourcen in einem Multithreaded-Prozessor
DE60109748T2 (de) Verfahren und gerät zur ausführungsunterbrechung in einem prozessor
DE60032481T2 (de) Verfahren und vorrichtung zur threadumschaltung in einem multithreadprozessor
DE102014011332B4 (de) Priorisieren von anweisungen basierend auf typ
DE112018006124B4 (de) ZUSAMMENFÜHREN VON EINTRÄGEN GLOBALER ABSCHLUSSTABELLEN IN EINEM OoO-PROZESSOR
DE10353268B3 (de) Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten
DE69719235T2 (de) Prozessor und Verfahren zur spekulativen Ausführung von bedingten Verzweigungsbefehlen unter Verwendung einer von mehreren Verzweigungsvorhersageverfahren
DE112005002305B4 (de) Thread-Livelock-Einheit
DE69419680T2 (de) Skalierbare Unterbrechungsstruktur für ein Simultanverarbeitungssystem
DE69311330T2 (de) Befehlsablauffolgeplanung von einem risc-superskalarprozessor
DE3687666T2 (de) Verzweigungssteuerung in einem dreiphasen-pipeline-signalprozessor.
DE69807729T2 (de) Threadumschaltungssteuerung in einem multithreadprozessorsystem
DE69826418T2 (de) Anordnung zum Abtasten mehrerer Instruktionen in einer Prozessorpipeline
DE112011101086T5 (de) Optimieren von Energieverbrauch und Anwendungsleistung in einem Multithread-Mehrkernprozessorsystem
DE102012210895A1 (de) Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor
DE102014000384A1 (de) ZUWEISEN VON RESSOURCEN ZU THREADS AUF DER BASIS VON SPEKULATIONSMESSGRÖßEN
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE69621405T2 (de) Verarbeitungssystem, prozessor, befehlsstromspeicher und kompilierer
WO2006032617A1 (de) Verfahren zur abarbeitung eines computerprogramms auf einem computersystem
DE112004002505T5 (de) Entkoppeln der Anzahl der logischen Threads von der Anzahl der gleichzeitigen physischen Threads in einem Prozessor
DE102004009610B4 (de) Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten
DE202004021684U1 (de) Einrichtungen und Vorrichtungen zur Verwendung bei einem Scheduling
DE10063915B4 (de) Informationsverarbeitungsgerät, das eine Mehrzweckverarbeitung und Transaktionsverarbeitung ausführt
DE60201511T2 (de) Verfahren, system und computerprogrammprodukt zum manipulieren eines anweisungsflusses in einer pipeline eines prozessors

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 10296980

Country of ref document: DE

Date of ref document: 20041007

Kind code of ref document: P

8125 Change of the main classification

Ipc: G06F 948

8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee