DE112005002305B4 - Thread-Livelock-Einheit - Google Patents

Thread-Livelock-Einheit Download PDF

Info

Publication number
DE112005002305B4
DE112005002305B4 DE112005002305T DE112005002305T DE112005002305B4 DE 112005002305 B4 DE112005002305 B4 DE 112005002305B4 DE 112005002305 T DE112005002305 T DE 112005002305T DE 112005002305 T DE112005002305 T DE 112005002305T DE 112005002305 B4 DE112005002305 B4 DE 112005002305B4
Authority
DE
Germany
Prior art keywords
processor
logical processor
logical
state
thread
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
DE112005002305T
Other languages
English (en)
Other versions
DE112005002305T5 (de
Inventor
David Portland Burns
K. Hillsboro Venkatraman
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 DE112005002305T5 publication Critical patent/DE112005002305T5/de
Application granted granted Critical
Publication of DE112005002305B4 publication Critical patent/DE112005002305B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • 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

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Bus Control (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Power Sources (AREA)

Abstract

Simultaneous Multithreading Prozessor mit
a) einem Reorder Buffer (464),
b) mehreren logischen Prozessoren (150a–150n), die jeweils einen Thread (150) gleichzeitig ausführen,
c) einer jeweils einem logischen Prozessor (150a) zugeordneten Thread-Livelock-Einheit (165a),
d) einem jeweils einem logischen Prozessor (150a) zugeordneten Reorder-Buffer-Abschnitt,
e) wobei eine Thread-Livelock-Einheit (165a) eines logischen Prozessors (150a) in einem Anfangszählzustand (504) die Anzahl der Zyklen zählt seit dem Retirement des letzten Befehls im zugeordneten logischen Prozessor (150a) und, wenn kein Vorwärtsfortschritt für eine vorbestimmte Zeitdauer erfolgt, einen Mangel an einem Vorwärtsfortschritt bestimmt und in einen Anhaltedurchsetzungszustand (508) übergeht, in dem das Anhalten der anderen logischen Prozessoren angefordert wird,
f) wobei alternativ die Thread-Livelock-Einheit (165a) des logischen Prozessors (150a) direkt in den Anhaltedurchsetzungszustand (508) unter Umgehung des Anfangszählzustandes (504) übergeht, wenn sie bestimmt, dass der ihr zugeordnete Reorder Buffer Abschnitt leer ist.

Description

  • ALLGEMEINER STAND DER TECHNIK
  • TECHNISCHES GEBIET
  • Die vorliegende Offenlegung betrifft allgemein Informationsverarbeitungssysteme und insbesondere das Erfassen und Korrigieren von Livelock zwischen einer Mehrzahl von gleichzeitigen Threads in einem Multithreading-Verarbeitungssystem.
  • VERWANDTER STAND DER TECHNIK
  • Zur Steigerung der Leistung von Systemen zur Informationsverarbeitung, wie jene, die Mikroprozessoren enthalten, wurden sowohl Hardware- als auch Softwaretechniken eingesetzt. Hardwareseitig enthielten die die Mikroprozessorleistung verbessernden Ansätze für den Aufbau von Mikroprozessoren erhöhte Taktzahlen, Bildung von Pipelines, Verzweigungsvorhersage, superskalare Ausführung, Außer-der-Reihe-Ausführung und Caches. Viele solcher Ansätze haben zu erhöhten Transistorimpulszahlen geführt und hatten in einigen Fällen sogar eine Transistorimpulszahl zum Ergebnis, welche sich bei einer größeren Rate erhöhte als die Rate der verbesserten Leistung.
  • Statt des Bestrebens, die Leistung allein mittels zusätzlicher Transistoren zu erhöhen, umfassen andere Leistungsverbesserungen Softwaretechniken. Ein Softwareansatz, der eingesetzt worden ist, um die Prozessorleistung zu verbessern, ist als „Multithreading” (Mehrfädigkeit) bekannt. Beim Software-Multithreading kann ein Anweisungsstrom in mehrere Anweisungsströme geteilt werden, die parallel ausgeführt werden können. Alternativ können mehrere unabhängige Softwareströme parallel ausgeführt werden.
  • In einem Ansatz, der als Zeitscheiben-Multithreading oder Zeit-Multiplex-(„TMUX”)-Multithreading bekannt ist, schaltet eineinzelner Prozessor nach einer festen Zeitdauer zwischen mehreren Threads um. In noch einem anderen Ansatz schaltet ein einzelner Prozessor bei Auftreten eines Auslösungsereignisses, wie einem Cache-Miss langer Latenz, zwischen Threads um. Bei diesem letzteren Ansatz, der als Switch-on-Event-Multithreading (”SoEMT”) bekannt ist, ist zu einer gegebenen Zeit höchstens ein Thread aktiv.
  • Zunehmend wird Multithreading durch die Hardware unterstützt. In einem Ansatz können beispielsweise Prozessoren in einem Mehrfachprozessorsystem, wie einem Chip-Mehrfachprozessor-(”CMP”)-System, jeweils gleichzeitig auf einem der mehreren Software-Threads wirken. In einem weiteren Ansatz, der als gleichzeitiges Multithreading (”SMT”) bezeichnet wird, wird ein einziger physischer Prozessor dazu gebracht, für Betriebsprogramme und Nutzerprogramme als mehrere logische Prozessoren zu erscheinen. Bei SMT können mehrere Softwarethreads aktiv sein und ohne Umschalten auf einem auf einem einzigen Prozessor aktiv sein und ausführen. Das heißt, jeder logische Prozessor führt ein vollständiges Set des Architekturzustands, aber viele andere Ressourcen des physischen Prozessors, wie Caches, Ausführungseinheiten, Verzweigungsvorhersager, Steuerlogik und Bus werden gemeinsam verwendet. Bei SMT führen die von mehreren Softwarethreads kommenden Anweisungen somit auf jedem logischen Prozessor gleichzeitig aus.
  • Bei einem System, das die gleichzeitige Ausführung von Softwarethreads unterstützt, wie beispielsweise SMT- und/oder CMP-Systeme besteht die Möglichkeit, dass der Wettstreit um gemeinsam benutzte Ressourcen unter zwei oder mehreren gleichzeitig aktiven Threads mindestens einen der Threads daran hindern kann, einen Vorwärtsfortschritt (”forward progress”) zu machen. Diese Unfähigkeit eines Threads, aufgrund des Ressourcenwettstreits mit einem anderen aktiven Thread Vorwärtsfortschritt zu machen, kann als ”Livelock” bezeichnet werden.
  • Das Dokument US 6,542,921 B1 offenbart ein Verfahren und eine Vorrichtung zur Steuerung einer Verarbeitungspriorität, die abwechselnd einem ersten Thread und einem zweiten Thread in einem Multithreadingprozessor zugewiesen wird, um Deadlock- und Livelock-Probleme zwischen dem ersten und zweiten Thread zu vermeiden. Gemäß einer Ausführungsform wird die Verarbeitungspriorität anfangs dem ersten Thread für eine erste Zeitdauer zugewiesen. Anschließend wird bestimmt, ob die erste Zeitdauer in einem gegebenen Verarbeitungszyklus abgelaufen ist. Falls die erste Zeitdauer abgelaufen ist, wird die Verarbeitungspriorität dem zweiten Thread für eine zweite Dauer zugewiesen.
  • Es ist die Aufgabe der vorliegenden Erfindung, einen Simultaneous-Multithreading-Prozessor sowie eine entsprechendes Verfahren bereitzustellen, bei dem eine Livelock-Situation erfasst und aufgelöst werden kann.
  • Diese Aufgabe wird gelöst durch einen Simultaneous-Multithreading-Prozessor mit den Merkmalen gemäß Hauptanspruch 1 sowie ein Verfahren gemäß dem nebengeordneten Anspruch 10.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Ausführungsformen der vorliegenden Erfindung können unter Bezugnahme auf die folgenden Zeichnungen verstanden werden, in denen ähnliche Elemente durch ähnliche Zahlen angeben sind. Diese Zeichnungen sollen nicht einschränkend sein, sondern werden vielmehr bereitgestellt, um eine ausgewählte Ausführungsformen einer Vorrichtung, eines Systems und eines Verfahrens zum Erfassen und Korrigieren von Livelock unter einer Mehrzahl von gleichzeitigen Threads in einem Multithreading-Verarbeitungssystem zu veranschaulichen.
  • 1 ist ein Blockdiagramm mindestens einer Ausführungsform eines Prozessors, der eine Mehrzahl von Thread-Livelock-Einheiten enthält, die jeweils zum Bestimmen eines Thread-Fortschritts eines einer Mehrzahl von logischen Prozessoren vorgesehen sind.
  • 2 ist ein Blockdiagramm, das mindestens eine Ausführungsform eines Multithreading-Systems veranschaulicht, welches zur Ausführung der offengelegten Techniken fähig ist.
  • 3 ist ein Blockdiagramm, das eine Datenstation und ein Ausführungskern für mindestens eine Ausführungsform eines Prozessors veranschaulicht, welcher eine Thread-Livelock-Einheit für jeden einer Mehrzahl von logischen Prozessoren enthält.
  • 4 ist ein Blockdiagramm, das eine Speicherhierarchie für mindestens eine Ausführungsform eines Verarbeitungssystems veranschaulicht, welches eine Thread-Livelock-Einheit für jeden einer Mehrzahl von logischen Prozessoren enthält.
  • 5 und 6 sind Zustandsdiagramme, die mindestens eine Ausführungsform eines Verfahrens zum Erfassen und Milder von Livelock zwischen mehreren gleichzeitigen Threads veranschaulichen.
  • 7 ist ein Blockdiagramm, das die Rückstellbedingungen für den Eintritt in einen Ruhezustand für das in 5 und 6 veranschaulichte Verfahren veranschaulicht.
  • 8 ist ein Ablaufdiagramm, das mindestens eine Ausführungsform eines Verfahrens zum Vermitteln von Livelock-Prioritäts-Anforderungen unter einer Mehrzahl von Prozessoren veranschaulicht.
  • 9 ist ein Blockdiagramm, das mindestens eine Ausführungsform einer von Thread-Livelock-Einheiten und einer Speicher-Livelock-Einheit gemeinsam benutzten Livelock-Brecher-Logik veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten, wie beispielsweise Prozessorarten, Multithreading-Umgebungen und Mikroarchitekturstrukturen dargelegt worden, um ein gründlicheres Verständnis der vorliegenden Erfindung bereitzustellen. Einem Fachmann ist jedoch klar, dass die Erfindung ohne derartige spezifische Einzelheiten ausgeführt werden kann. Außerdem wurden einige wohlbekannte Strukturen, Schaltungen und dergleichen nicht in Einzelheiten gezeigt, um zu vermeiden, die vorliegende Erfindung undeutlich werden zu lassen.
  • Das hierin offengelegte Verfahren, die hierin offengelegte Vorrichtung und die hierin offengelegten Ausführungsformen des Systems sehen die Erfassung und Vermeidung von Livelock in einem Multithreading-Verarbeitungssystem vor. Bei mindestens einer offengelegten Ausführungsform enthalten Thread-Livelock-Einheiten einen Mechanismus zur Nachverfolgung des Rückzugs von Anweisungen eines Softwarethreads für einen logischen Prozessor. Die Nachverfolgung des Rückzugs ist nur ein Ansatz, um nachzuverfolgen, ob ein Thread Vorwärtsfortschritt macht. Obwohl die hierin erläuterten Ausführungsformen sich auf den Rückzug von Anweisungen als einen Indikator des Vorwärtsfortschritts konzentrieren, wird ein Fachmann erkennen, dass andere Ausführungsformen andere oder zusätzliche Indikatoren verwenden können, um zu bestimmen, ob ein Thread Vorwärtsfortschritt macht. Beispielsweise kann ein Thread-Fortschritt-Signal oder -Register ausgewertet, das Fortschreiten des Anweisungszeigers nachverfolgt oder jede andere Art von den Fortschritt anzeigenden Signalen oder Indikatoren können ausgewertet werden.
  • 1 veranschaulicht mindestens eine Ausführungsform eines Prozessors 104 und eines Vermittlers (arbitrator) 180 zur Ausführung von Multithreading. Der Prozessor 104 und der Vermittler 180 können sich in einem Einfach-Chip-Paket 103 befinden. Der Prozessor 104 kann zur Unterstützung gleichzeitigen Multithreadings mehrere logische Prozessoren 150a150n enthalten. In mindestens einer Ausführungsform verwendet der Prozessor 104 seine mehreren logischen Prozessoren 150a150n, um eine SMT-Verarbeitungsfähigkeit bereitzustellen. In solchen Ausführungsformen weist jeder logische Prozessor 150a150n seine eigene Anweisungsablaufsteuerung auf (siehe beispielsweise 340, 3). Bei solchen Ausführungsformen führt der logische Prozessor 150 seine eigene Version des Architekturzustands, obwohl die Ausführungsressourcen des einfachen Prozessorkerns 104 von allen gleichzeitigen SMT-Software-Threads gemeinsam benutzt werden können.
  • Bei SMT kann eine Mehrzahl von mehreren Software-Threads gleichzeitig, jeweils auf einem einer Mehrzahl von logischen Prozessoren 150, laufen. Die logischen Prozessoren 150a150n können hier auch gleichbedeutend mit „physischen Threads” bezeichnet werden. Wenn nicht ausdrücklich anders vermerkt, soll der Ausdruck „Thread” hierin, wenn ihm nicht der Zusatz „physisch” oder „Software” vorausgeht, zusammen einen aktiven logischen Prozessor und den zugehörigen Softwareanweisungsstrom, den der logische Prozessor ausführt, bezeichnen.
  • 1 zeigt, dass eine Thread-Livelock-Einheit („TLU”) 165a165n mit jedem der logischen Prozessoren 150a150n assoziiert sein kann. In mindestens einer Ausführungsform wird die TLU 165 somit auf einer pro-Thread-Basis für jeden physischen Thread 150a150a des Prozessors wiederholt. Die TLU 165 eines bestimmten physischen Threads 150 kann hierin zuweilen einfach als die „TLU” des physischen Threads bezeichnet werden.
  • 1 zeigt, dass der Prozessor 104 auch eine Speicher-Livelock-Einheit („MLU”) 166 enthalten kann. Eine Speicher-Livelock-Einheit 166 kann 1) auf der Basis von Speicher-Livelock-Indikatoren unter Speichervorgängen von gleichzeitigen Threads für einen einzigen Prozessor 104 erfassen und 2) Maßnahmen treffen, um einen solchen Livelock aufzulösen.
  • Die Funktionsweise der TLU 165 wird unten in Verbindung mit 5 bis 7 ausführlicher beschrieben. Allgemein kann eine Thread-Livelock-Einheit 165 1) auf der Basis bestimmter Thread-Livelock-Indikatoren bestimmen, dass der Software-Thread für ihren assoziierten logischen Prozessor keinen Vorwärtsfortschritt machen kann („durch Livelock verklemmt ist”), und 2) kann Maßnahmen treffen, um einen solchen Livelock aufzulösen. In mindestens einer Ausführungsform bestimmt die Thread-Livelock-Einheit 165 einen Mangel an Vorwärtsfortschritt, indem die Anzahl von Zyklen, seitdem ihr logischer Prozessor eine Anweisung zurückgezogen hat oder anderweitig einen möglichen Vorwärtsfortschritt aufgewiesen hat, gezählt wird. Ein bestimmter Zustand unter anderen, welche von der Thread-Livelock-Einheit 165 erfasst werden können, wird als „Anweisungsmangel” (Instruction Starvation) bezeichnet. Anweisungsmangel ist ein Zustand, bei dem ein erster Thread das Holen von Anweisungen für einen weiteren anderen Thread blockieren oder unzulässig verzögern kann. In der Folge wird der andere Thread als „instruction starved” oder I-starved” bezeichnet. Ein einen Anweisungsmangel erfahrender Thread erfährt eine Abwesenheit von zur Ausführung verfügbaren Anweisungen – er kann keinen Vorwärtsfortschritt machen, da er keine Anweisungen zurückziehen kann.
  • Wenn eine Thread-Livelock-Einheit 165 in dem Versuch, einen Livelock aufzulösen, Maßnahmen trifft, wird die Thread-Livelock-Einheit 165 hierin als „aktiv” bezeichnet. Eine Thread-Livelock-Einheit 165 kann „aktiv” werden, um eine beliebige verschiedener Livelock-Brecher-Maßnahmen zu treffen, welche in einem Versuch unternommen werden, den Vorwärtsfortschritt des Threads, mit dem die TLU 165 assoziiert ist, zu stimulieren. Die TLU 165 eines ersten logischen Prozessors kann beispielsweise in Reaktion auf die Unfähigkeit ihres assoziierten logischen Prozessors 150, Vorwärtsfortschritt zu machen, eine Maßnahme treffen, um anzufordern, dass ein oder mehrere andere logische Prozessoren angehalten werden, oder dass der Mikroarchitekturzustand für einen oder mehrere andere logische Prozessoren zurückgesetzt wird (hierin zuweilen als „vernichtet” bezeichnet). Eine aktive TLU 165 kann außerdem beispielsweise einen Livelock-Brecher aufrufen (siehe beispielsweise die Erläuterung des gemeinsam benutzten Livelock-Brechers 950 in Verbindung mit 9 unten), Maßnahmen zu treffen, um den Anweisungsmangel abzumildern. Eine aktive TLU 165 kann außerdem von dem Vermittler 180 Priorität anfordern, wenn ein Cache-Miss langer Latenz erfasst wird. Einige Ausführungsformen, die derartige Maßnahmen treffen, werden unten in Verbindung mit 57 ausführlicher beschrieben.
  • Gemäß einer Ausführungsform setzten die TLUs 165a165n zusammen mit dem Vermittler 180 eine Priorität unter den logischen Prozessoren 150a150n und der MLU 166 für einen Prozessor 104 durch, um Livelock-Bedingungen während der Ausführung von SMT-Softwarethreads zu erfassen und abzumildern. Außerdem können die TLUs 165a165n ihrerseits eine Priorität unter den logischen Prozessoren 150a150n durchsetzen, um bestimmte Livelock-Bedingungen zu erfassen und abzumildern. Schließlich kann der Vermittler 180 in einem Mehrfachkern-Verarbeitungssystem auch eine Priorität unter mehreren Kernen durchsetzen, um den Thread-Livelock abzumildern. In verschiedenen Ausführungsformen können einige oder alle dieser Merkmale jedoch vorliegen oder nicht vorliegen.
  • 2 ist ein Blockdiagramm, das mindestens eine Ausführungsform eines Mehrfachkern-Multithreading-Computersystems 200 zeigt, welches zu den offengelegten Techniken zum Erfassen und Abmildern von Livelock unter einer Mehrzahl gleichzeitiger Threads in der Lage ist. Ähnliche Elemente in 1 und 2 tragen ähnliche Bezugszahlen.
  • 2 zeigt, dass das Computersystem 200 mindestens einen Prozessorkern 104a und einen Speicher 202 enthält. Der Speicher 202 kann Daten 240 und Anweisungen 241 zum Steuern des Betriebs der Prozessoren 104a104n speichern. In mindestens einer Ausführungsform kann es sich bei dem Prozessor 104a um einen einer Mehrzahl von Prozessorkernen 104a-104n handeln, die sich in einem Einfach-Chip-Paket 103 befinden. Die zusätzlichen Prozessoren, einschließlich 104n, sind optional. Die optionale Natur der zusätzlichen Prozessoren wird in 2 durch Auslassungen und gestrichelte Linien angezeigt.
  • 2 zeigt, dass sich zusätzlich zu den Prozessorkernen 104a104n eine zusätzliche Logik 280 in dem Chippaket 103 befinden kann. Eine solche zusätzliche Logik 280 wird hierin zuweilen als der „Uncore” bezeichnet. Die zusätzliche Logik 280 kann einen Cache 251 und/oder eine Vermittlungs- und Steuerlogik 252 enthalten. Bei dem Cache 251 kann es sich um einen Cache mit auf letzter Ebene vereinigten, gemeinsam benutzten Daten und Anweisungen handeln, der von den Prozessoren 104a104n gemeinsam benutzt wird. Die Vermittlungs- und Steuerlogik 252 kann eine Punkt-zu-Punkt-Kommunikationssteuerung, eine globale Kommunikationsschlage und/oder eine Vermittlungslogik 180 enthalten (siehe 1).
  • Die zusätzliche Logik 280 kann auch optional eine integrierte Speichersteuerung 253 enthalten. Die integrierte Speichersteuerung 253 kann eine Schnittstelle für den Off-Chip-Speicher 202 bereitstellen. In derartigen Ausführungsformen unterstützt ein Chipset 255 in erster Linie eine graphikbezogene Funktionalität. Das Chipset 255 kann auch eine Konnektivität mit einer oder mehreren Eingabe/Ausgabe-(E/A)-Vorrichtungen 290 bereitstellen. In mindestens einer Ausführungsform kann das Chipset 255 eine oder mehrere Chipsetvorrichtungen enthalten, wobei jede Chipsetvorrichtung eine separate Schnittstellenfunktionalität bereitstellt. Eine der Chipsetvorrichtungen kann beispielsweise graphische Funktionalität unterstützen, während eine andere Chipsetvorrichtung E/A-Konnektivität und/oder -Schnittstelle mit einem Firmwarehub (nicht gezeigt) bereitstellen kann.
  • In Ausführungsformen, die keine integrierte Speichersteuerung 253 in dem Chippaket 103 enthalten, kann das Chipset 255 eine Schnittstelle zu dem Off-Chip-Speicher 202 bereitstellen. Für solche Ausführungsformen kann das Chipset 255 zusätzlich zu der Speichersteuerfunktionalität auch die oben beschriebene Graphik-, E/A- und/oder Firmware-Funktionalität bereitstellen.
  • Auch wenn Ausführungsformen des Systems 200 hier so erläutert werden, dass sie eine Punkt-zu-Punkt-Kommunikationssteuerung als Teil der Vermittlungs- und Steuerlogik 252 aufweisen, ist eine solche Steuerung nicht für alle Ausführungsformen erforderlich. Tatsächlich wird ein Fachmann erkennen, dass die Ausführungsformen des hier erläuterten Mechanismus zur Erfassung und Korrektur von Livelock in einem System ausgeführt werden kann, welches einen Multi-Drop-Bus oder andere Kommunikationstopologien einsetzt.
  • 2 zeigt, dass, wie in 1 gezeigt, mindestens eine Ausführungsform des einen oder mehreren Prozessorkernen 104a104n des Systems 200 ein Multithreading-Kern sein kann, der eine TLU 165 für jeden logischen Prozessor 150a150n enthält und auch eine Speicher-Livelock-Einheit 166 enthält.
  • In einer Ausführungsform des Verarbeitungssystems 200, welches eine Mehrzahl von Prozessorkernen 104a104n enthält, kann eine TLU für einen der physischen Prozessoren 150a150n in einem Prozessorkern 104a104n der Vermittlungslogik 180 signalisieren, wenn sie eine Korrekturmaßnahme getroffen hat, aber ihr assoziierter physischer Thread 150 weiter für Vorwärtsfortschritt beim Ausführen von Anweisungen für seinen assoziierten Software-Thread weiter unfähig ist. In solchen Fällen kann es sein, dass die Maßnahmen eines anderen Prozessorkerns 104 die Fähigkeit des ersten Prozessorkerns 104a für Vorwärtsfortschritt stören. Wie unten weiter erläutert, kann die Vermittlungslogik 180 dem anfordernden Kern 104 Priorität gewähren und/oder Maßnahmen treffen, die anderen Kerne „auszuschalten”.
  • Dementsprechend können die TLUs 165a165n für jeden Prozessorkern 104 zusammen mit den MLUs 166 für jeden Kern und der Vermittler 180 zusammen einen zusammenwirkenden Livelock-Reduzierer bilden. Der Livelock-Reduzierer kann somit eine Livelock-Schaltung für jeden Kern 104 enthalten, wobei die Livelock-Schaltung die TLUs 165a165n und die MLU 166 für den Kern enthalten kann. Wie unten ausführlicher beschrieben, kann der Livelock-Reduzierer Thread-Fortschrittinformationen über einen Thread von einem ersten Prozessorkern 104a empfangen und die Aktivität eines Threads eines zweiten Prozessorkerns 104n in Reaktion auf die Threadfortschrittinformationen über den ersten Prozessorkern 104a anpassen.
  • Wie unten ausführlicher beschrieben, kann mindestens eine Ausführungsform des Prozessors 104 dazu ausgelegt sein, in Reaktion auf die durch eine TLU 165 erfolgte Erfassung, dass der physische Thread 150 nicht in der Lage ist, für seinen aktuellen Anweisungsstrom Vorwärtsfortschritt zu machen, die Maßnahmenlogik der MLU 166 aufzurufen. Die MLU-Logik 166 kann beispielsweise aufgerufen werden, wenn eine TLU 165 Maßnahmen trifft, um den anweisungsseitigen (I-seitigen) Mangel (instruction side starvation) abzumildern. (Siehe unten stehenden Erläuterung des Zustands 604 aus 6).
  • 3 ist ein Blockdiagramm, das weitere Einzelheiten mindestens einer Ausführungsform eines Prozessors 104 zeigt, welcher in der Lage ist, die offengelegten Techniken zum Erfassen und Abmildern von Livelock-Zuständen unter einer Mehrzahl gleichzeitiger Threads auszuführen. Der Prozessor 104 kann eine Datenstation 320 enthalten, welche vorab diejenigen Anweisungen abruft, die wahrscheinlich ausgeführt werden sollen.
  • In mindestens einer Ausführungsform enthält die Datenstation eine Abruf-/Decodiereinheit 322, die für jeden der einen oder mehreren logischen Prozessoren 150a150n logisch unabhängige Ablaufsteuerungen 340a340n aufweist. Die Abruf-/Decodiereinheit 322 kann geeignete Anweisungen aus einem Anweisungscache abrufen (siehe beispielsweise I-Cache 444 in 4). Die Abruf-/Decodiereinheit 322 kann auch eine Decodierlogik enthalten, welche die Anweisungen in eine End- oder Zwischenform decodiert.
  • Die physische Abruf-/Decodiereinheit 322 enthält somit eine Mehrzahl logisch unabhängiger Ablaufsteuerungen 340a340n, die jeweils einem physischen Thread 150 entsprechen. Die Ablaufsteuerung 140 für einen physischen Thread 150 bestimmt die nächste Anweisung des assoziierten Software-Anweisungsstroms (der hier auch als „Software-Thread” bezeichnet wird), welcher von dem physischen Thread 150 ausgeführt werden soll. Die Ablaufsteuerungen 140a140n können Informationen von einem Verzweigungsvorhersager (siehe 432, 4) verwenden, um zu bestimmen, welche Anweisung als nächstes ausgeführt werden soll.
  • 3 zeigt, dass mindestens eine Ausführungsform des Prozessors 104 einen Ausführungskern 330 enthält, der die Anweisungen zur Ausführung vorbereitet, die Anweisungen ausführt und die ausgeführten Anweisungen zurückzieht. Der Ausführungskern 330 kann eine Außer-der-Reihe-Logik enthalten, um die Anweisungen für eine Ausführung außer der Reihe einzuteilen. Der Ausführungskern 330 kann eine oder mehrere Ressourcen 362 enthalten, die er verwendet, um den Strom der Anweisungen zu glätten und neuzuordnen, wenn sie durch die Ausführungspipeline strömen und zur Ausführung eingeteilt werden. Diese Ressourcen 362 können eine oder mehrere einer Anweisungsschlange enthalten, um nicht eingeteilte Anweisungen zu führen, Speicherpuffer, Lastanforderungspuffer zum Führen von Einträgen für nicht abgeschlossene Lastanweisungen, um Anforderungspuffer zu speichern, um Einträge für nicht abgeschlossene Speicheranweisungen, MLU (siehe 166, 1) und dergleichen zu führen.
  • Der Ausführungskern 330 kann eine Rückzugslogik enthalten, welche die Anweisungen, welche auf eine Außer-der-Reihe-Weise ausgeführt worden sind, wieder in der originalen Programmreihenfolge neuzuordnen. Eine solche Rückzugslogik kann mindestens eine Rückzugsschlange 364 enthalten, um Informationen für Anweisungen in der Ausführungspipeline zu führen, bis solche Anweisungen zurückgezogen werden. In mindestens einer Ausführungsform kann die Rückzugsschlange 364 zwischen den logischen Prozessoren 150a150n geteilt werden, so dass ein Teil der Rückzugsschlange jedem logischen Prozessor 150a150n zugewiesen wird. Alternativ kann eine separate Rückzugsschlange 364 für jeden logischen Prozessor 150a150n verwendet werden.
  • Die Rückzugslogik kann den Abschlussstatus der ausgeführten Anweisungen von den Ausführungseinheiten 360 empfangen und die Ergebnisse bearbeiten, so dass gemäß der Programmreihenfolge der richtige Architekturzustand festgelegt (oder zurückgezogen) wird. Die Rückzugslogik kann auch Thread-Livelock-Einheiten 165a165n enthalten. In mindestens einer Ausführungsform enthält der Prozessor 104 separate TLUs 165a165n für jeden logischen Prozessor 150a150n.
  • Ein Fachmann wird natürlich erkennen, dass der Ausführungskern 330 die Anweisungen in Programmreihenfolge bearbeiten kann und nicht notwendigerweise eine Außer-der-Reihe-Verarbeitung bereitstellen muss. In einem solchen Fall handelt es sich bei der Rückzugsschlange 364 nicht um einen Neuordnungspuffer, sondern einfach um einen Puffer, der Anweisungen in Programmreihenfolge führt, bis solche Anweisungen zurückgezogen werden. Analog enthalten die Ausführungsressourcen 362 für einen solchen In-Reihe-Prozessor keine Strukturen, deren Funktion es ist, Anweisungen für einen Außer-der-Reihen-Ausführung neuzuordnen und nachzuverfolgen.
  • In Artikel „A tour of the P6 micro architecture” der Intel Corporation, 1995, der unter der Internetadresse http://datasheets.chipdb.org/Intel/x86/P6/p6tour.pdf abrufbar ist, wird die Funktionsweise einer „Retire Unit”, d. h. Rückzugs-Einheit oder Rückordnungseinheit in einem Intel-Pentium-Prozessor beschrieben. Im Buch „Microcontroller und Microprozessoren” von U. Brinkschulte und T. Ungerer, Springerverlag, 2002, sind Einzelheiten zur Rückordnungsstufe in Microprozessoren angegeben.
  • 4 ist ein Blockdiagramm, das mindestens eine Ausführungsform eines Multithreading-Verarbeitungssystems 400 zeigt, welches außer der Reihe betrieben wird und in der Lage ist, die offen gelegten Techniken auszuführen. Ähnliche Elemente in 4 und 1, 2 und/oder 3 tragen ähnliche Bezugszahlen. 4 zeigt, dass das Verarbeitungssystem ein Speicheruntersystem 490, einen Prozessor 404 und eine Speichersteuerung 453 enthalten kann.
  • 4 zeigt, dass der Verarbeiter 404 eine Datenstation 420 gemäß der oben in Verbindung mit 3 beschriebenen Datenstation 320 aufweisen kann. Die Datenstation 420 liefert Anweisungsinformationen an einen Ausführungskern 430. In mindestens einer Ausführungsform kann die Datenstation 420 die Anweisungsinformationen in Programmreihenfolge an den Ausführungskern 430 liefern.
  • Die Datenstation 420 kann eine Abruf-/Decodiereinheit 322 mit mehreren unabhängigen logischen Ablaufsteuerungen 340a340n, eine für jeden von mehreren logischen Prozessoren 150a150n, enthalten. In mindestens einer Ausführungsform ruft die Datenstation 420 vorab die Anweisungen ab, die wahrscheinlich ausgeführt werden sollen. Eine Verzweigungsvorhersageeinheit 420 bestimmt, welche Anweisungen wahrscheinlich ausgeführt werden sollen.
  • In mindestens einer Ausführungsform bereitet der Ausführungskern 430 Anweisungen für die Außer-der-Reihe-Ausführung vor, führt die Anweisungen aus und zieht die ausgeführten Anweisungen zurück. Der Ausführungskern 430 kann TLUs 165 enthalten. Die Ausführungsressourcen 462 für den Prozessor 404 kann die MLU 166, eine Anweisungsschlange, Lastanforderungspuffer und Speicheranforderungspuffer enthalten.
  • Die MLU 166 ist dazu ausgelegt, den mit dem folgenden Aufbaumerkmal verbundenen Livelock aufzulösen: die logischen Prozessoren 150a150n können die Ressourcen eines Speichersystems 490 gemeinsam benutzen. Dementsprechend kann eine (in Programmreihenfolge) ältere Speicheranweisung von einem logischen Prozessor 150 durch eine jüngere Speicheranweisung von einem anderen logischen Prozessor 150 blockiert werden. Die MEU 166 ist so ausgelegt, diese Situation zu erfassen und zu korrigieren. Die MLU kann einen logischen Prozessor so anhalten, dass ein anderer logischer Prozessor einen oder mehrere Speichervorgänge abschließen kann.
  • Der Ausführungskern 430 kann eine Rückzugslogik enthalten, welche die Anweisungen, die auf eine Außer-der-Reihe-Weise ausgeführt worden sind, zurück in die originale Pro grammreihenfolge in eine als Neuordnungspuffer („ROB”) bezeichnete Rückzugsschlange 464 ordnet. Diese Rückzugslogik empfängt den Abschlusszustand der ausgeführten Anweisungen von den Ausführungseinheiten 360. Der Ausführungskern 430 kann mehr als einen Neuordnungspuffer 464 enthalten. Das heißt, ein Teil eines einfachen unterteilten Neuordnungspuffers 464 kann nicht zurückgezogene Anweisungsinformationen für alle logischen Prozessoren 150a150n führen. Alternativ kann ein separater Neuordnungspuffer 464 für jeden logischen Prozessor 150 geführt werden.
  • Der Ausführungskern 430 kann Verzweigungsverlaufsinformationen an den Verzweigungsvorhersager 432 an der Datenstation 420 des Prozessors 404 berichten, um die jüngsten bekannten guten Verzweigungsverlaufsinformationen zu übermitteln.
  • Der Begriff „Anweisungsinformationen” soll sich, wie hierin verwendet, auf Grundarbeitseinheiten in einem Endformat beziehen, das von dem Ausführungskern 430 verstanden und ausgeführt werden kann. Anweisungsinformationen können in einem Cache 425 gespeichert werden. Der Cache 425 kann als ein Ausführungsanweisungscache oder ein Ausführungsverfolgungscache implementiert sein. In Ausführungsformen, die einen Ausführungsanweisungscache verwenden, enthalten „Ausführungsinformationen” Anweisungen, die aus einem Anweisungscache 444 abgerufen worden sind. Solche abgerufenen Anweisungen können gegebenenfalls in Mikrooperationen decodiert werden, bevor sie in dem Ausführungsanweisungscache gespeichert werden. In Ausführungsformen, die einen Verfolgungscache verwenden, kann der Begriff „Anweisungsinformationen” Spuren von Mikrooperationen enthalten, die aus Makroanweisungen decodiert worden sind. In Ausführungsformen, die weder einen Ausführungsanweisungscache noch einen Verfolgungscache verwenden, können „Anweisungsinformationen” auch Bytes für Anweisungen enthalten, die in einem Anweisungscache (wie einem I-Cache 444) gespeichert werden können.
  • Das Verarbeitungssystem 400 enthält ein Speicheruntersystem 490, das einen oder mehrere Caches 442, 444 zusammen mit dem Speicher 202 enthält. Obwohl als solche in 4 nicht dargestellt, dürfte es einem Fachmann klar sein, dass ein Teil des einen oder beider Caches 442, 444 physisch als für den Prozessor 404 lokale On-Die-Caches ausgeführt sein können. Das Speicheruntersystem 490 kann als eine Speicherhierarchie ausgeführt sein und kann auch eine Verbindung 453 enthalten, um den Informationstransfer, wie Daten 240 und/oder Anweisungen 241 von dem Speicher 202 zu den Hierarchieebenen zu erleichtern.
  • Ein Fachmann erkennt, dass verschiedene Konfigurationen für eine Speicherhierarchie eingesetzt werden können, einschließlich nicht-inklusiver Hierarchiekonfigurationen.
  • Einem Fachmann dürfte klar sein, dass, obwohl in 4 ein Außer-der-Reihe-Verarbeitungssystem 400 dargestellt ist, die hier erläuterten Ausführungsformen gleichfalls auch auf In-Reihe-Verarbeitungssysteme anwendbar sind. Derartige In-Reihe-Verarbeitungssysteme enthalten in der Regel keinen ROB 464. Trotzdem können solche In-Reihe-Systeme noch eine Rückzugsschlange (siehe 364, 3) enthalten, um nicht zurückgezogene Anweisungen zu verfolgen.
  • 5, 6 und 7 stellen zusammen ein Zustandsdiagramm dar, das mindestens eine Ausführungsform eines Verfahrens 500 zum Bestimmen, dass unter einer Mehrzahl von gleichzeitigen Threads ein Livelock-Zustand besteht und zum Abmildern des Livelock-Zustands, zeigt. In mindestens einer Ausführungsform kann eine Thread-Livelock-Einheit, wie die in 1-4 dargestellte TLU 165, das Verfahren 500 ausführen. Die TLU 165 kann eine Hardwareeinheit sein, die das Verfahren 500 als eine Zustandsmaschine implementiert.
  • 5 wird nun unter Bezugnahme auf 3 und 4 erläutert. Als Hintergrund für 5 ist das Verständnis hilfreich, dass in mindestens einer Ausführungsform eines SMT-Prozessors, wie die in 3 bzw. 4 dargestellten Prozessoren 104 und 404, jeder logische Prozessor 150 ein vollständiges Set des Architekturzustands führt. Außerdem können bestimmte Merkmale des Prozessors, wie beispielsweise eine Rückzugsschlange 364 oder ROB 464, und Ausführungsressourcen 362, 462 Mikroarchitekturzustandsinformationen für jeden der gleichzeitig aktiven Software-Threads führen. Bei bestimmten Bedingungen kann ein aktiver Thread angehalten werden und der Mikroarchitekturzustand für den Thread kann von dem logischen SMT-Prozessor 150 gespült (flushed) oder „ausgeschaltet” („nuked”) werden. Durch Anhalten und „Ausschalten” („nuking”) des Mikroarchitekturzustands eines nicht-ausgewählten logischen Prozessors (der sehr wohl einen Vorwärtsfortschritt machen kann), kann somit einem ausgewählten logischen Prozessor Erleichterung von aktuellen Taktmustern geboten werden und er kann somit in der Lage sein, einen Vorwärtsfortschritt zu machen, ohne von den nicht-ausgewählten logischen Prozessoren gestört zu werden.
  • 5 zeigt, dass das Verfahren 500 einen Ruhezustand 502 enthält. 5 zeugt ferner, dass in den Ruhezustand 502 eingetreten 551 werden kann, wenn eine oder mehrere Rückstellbedingungen 501 erfüllt sind. Um 5 und 6 zu vereinfachen, zeigt der Pfeil 551 zwischen Block 501 und Zustand 502 die Erfüllung der Rückstellbedingungen 501 an. Einem Fachmann wird klar sein, dass der Übergang zu Zustand 502 für eine oder mehrere der Rückstellbedingungen von einem der in 5 und 6 gezeigten Zustände 504, 506, 508, 602, 604, 606 auftreten kann. Zur Vereinfachung sind in 5 und 6 keine Pfeile gezeigt, die solche Übergänge kennzeichnen.
  • Unter Bezugnahme auf 7 ist mindestens eine Ausführungsform der einen oder der mehreren Rückstellbedingungen 501 ersichtlich. 7 wird hier unter Bezugnahme auf 4 und 5 erläutert. In mindestens einer Ausführungsform können Rückstellbedingungen 501 entweder in einem Einfachkern-Verarbeitungssystem oder einem Mehrfachkern-Verarbeitungssystem angelegt werden. In der folgenden Erläuterung soll sich der Begriff „aktueller logischer Prozessor” auf den mit der TLU 165 assoziierten logischen Prozessor beziehen, der das Verfahren 500 ausführt, um zu bestimmen, ob die Rückstellbedingungen 501 gelten. Obwohl eine oder mehrere der anderen TLUs 165a165n in einem Prozessor 104 das Verfahren 500 somit gleichzeitig ausführen können, ist der „aktuelle logische Prozessor” der interessierende logische Prozessor, im Gegensatz zu den anderen logischen Prozessoren 150 eines Prozessors 104.
  • 7 zeigt, dass eine oder mehrere der Rückstellbedingungen 501 wahr werden kann, wenn die TLU 165 sich in einem anderen in 5 und 6 dargestellten Zustand befindet, einschließlich der Zustände 502, 504, 506, 508, 602, 606 und 604. Wenn eine oder mehrere der Rückstellbedingungen 501 wahr werden, wird ein Übergang zu Zustand 502 ausgelöst. Wie oben festgestellt, wird der Übergang von einem anderen Zustand zu Zustand 502 durch Pfeil 551 zusammengefasst, welcher den Übergang in einen Ruhezustand 502 von einem anderen Zustand anzeigt.
  • 7 zeigt, dass die Bedingung A der Rückstellbedingungen 501 anzeigt, dass eine TLU 165 in dem Ruhezustand 502 verbleiben/zu ihm zurückkehren sollte, wenn ihre TLU 165 deaktiviert wurde. Eine solche Bedingung A gibt die Annahme wieder, dass in mindestens einer Ausführungsform die TLU 165 deaktiviert sein kann. In mindestens einer Ausführungsform kann die TLU 165 während der Ausführung einer Ausnahme-Handhabungs-Routine deaktiviert sein. Während einer solchen Routine, die mittels Mikrocode oder sonstiger Firmware ausgeführt werden kann, kann die Livelock-Erfassung deaktiviert sein. Ein Beispiel einer Ausnahme, die dazu führen kann, dass eine TLU 165 deaktiviert wird, ist die Bestätigung eines Signals, wie eines Anhaltesignals, welches anzeigt, dass das Chipset (siehe z. B. 255, 2) angefordert hat, dass der Prozessor 104 in einen Zustand geringer Leistung übergeht.
  • 7 zeigt, dass die Bedingung B der Rückstellbedingungen 501 anzeigt, dass eine TLU 165 in den Ruhezustand 502 zurückkehren/darin verbleiben sollte, wenn ein Rückstellauslöser erfasst worden ist. Bei Erfassen eines solchen Rückstellauslösers, stellt die TLU 165 ihre Livelock-Bestimmungsaktivität effektiv durch Verbleiben im/Zurückkehren in den Ruhezustand 502 zurück. In mindestens einer Ausführungsform kann ein Rückstellungsauslöser durch ein vom Nutzer initiiertes Ereignis, wie der Aktivierung einer Initialisierungs-PIN oder einer Runterfahren-Rückstellung, aktiviert werden.
  • 7 zeigt, dass Bedingung C der Rückstellbedingungen 501 anzeigt, dass eine TLU 165 in dem Ruhezustand 502 verbleiben/in ihn zurückkehren sollte, wenn ihr assoziierter logischer Prozessor 150 sich im Ruhezustand befindet und daher aktuell nicht versucht, einen Software-Thread auszuführen. Eine solche Bedingung kann von der TLU 165 in mindestens einer Ausführungsform erfasst werden, indem ein Register untersucht wird, welches einen „Thread-Aktiv”-Indikator für die TLU 165 führt.
  • 7 zeigt, dass Bedingung D der Rückstellbedingungen 501 anzeigt, dass eine TLU 165 in dem Ruhezustand 502 verbleiben/in ihn zurückkehren sollte, wenn ein anderer logischer Prozessor 150 des Prozessorkerns 104 sich in einem exklusiven Zugriffsmodus befindet. Während des exklusiven Zugriffsmodus kann ein logischer Prozessor Maßnahmen treffen, über die andere logische Prozessoren Kenntnis haben müssen. Es kann beispielsweise Zeiten geben, wenn ein logischer Prozessor eine Anweisung ausführt, die das Neu-Unterteilen einer gemeinsam benutzten Ressource bewirkt, wie des ROB 464. Oder ein logischer Prozessor kann eine Anweisung ausführen, die eine globale Änderung vornimmt, wie das Setzen eines Cache-Deaktivierungs-Bits in einem Steuerregister. Unter solchen Umständen sollten alle anderen logischen Prozessoren die Ausführung anhalten, bis der exklusive Zugriffsvorgang abgeschlossen ist. Während einer solchen Zeit sollte eine angehaltene TLU 165 nicht erwarten, dass ihr logischer Prozessor Vorwärtsfortschritt macht und sollte daher in dem Ruhezustand 502 verbleiben/in ihn zurückkehren. In mindestens einer Ausführungsform kann die TLU 165 bestimmen, ob die Bedingung D erfüllt wird, indem sie ein gemeinsam benutztes Signal untersucht (welches beispielsweise in einem Mikroarchitekturregister wiedergegeben werden kann), um zu bestimmen, ob ein weiterer logischer Prozessor 150 des Prozessors 104 sich in einem exklusiven Zugriffsmodus befindet.
  • 7 zeigt, dass Bedingung E der Rückstellbedingungen 501 anzeigt, dass eine TLU 165 in dem Ruhezustand 502 verbleiben/in ihn zurückkehren sollte, wenn der logische Prozessor 150 der TLU 165 aus dem I-seitigen Starvation-Aktionszustand 604 heraus übergegangen ist (6). Ein solcher Übergang zeigt an, dass erfolgreiche Maßnahmen (unten mit Bezug auf Zustand 604 erläutert) getroffen worden sind, um zu versuchen, den I-seitigen Mangel (I-side starvation) an dem aktuellen logischen Prozessor 150 abzumildern, und die TLU 165 sollte daher in den Ruhezustand 502 zurückkehren, um eine neue Livelock-Erfassungssequenz zu starten, um den Starvation-Vermeidungsmaßnahmen Zeit zu geben zu wirken.
  • 7 zeigt ferner, dass Bedingung F der Rückstellbedingungen 501 anzeigt, dass eine TLU 165 im Ruhezustand 502 verbleiben/in ihn zurückkehren sollte, wenn die Speicher-Livelock-Einheit 166 aktuell aktiv ist. Über diese Bedingung F gibt die TLU 165 Priorität an die Speicher-Livelock-Einheit 166. Ein solches Priorisierungsschema ist nützlich, einen durch Konkurrenz zwischen einer TLU 165 und der MLU 166 induzierten Livelock zu verhindern. Das heißt, wie oben dargelegt, die MLU 166 kann einen Speichervorgang/Speichervorgänge eines logischen Prozessors 150 anhalten, so dass ein anderer logischer Prozessor einen oder mehrere Speichervorgänge abschließen kann. Ohne die Rückstellbedingung F kann der logische Prozessor fehlerhaft bestimmen, dass er aufgrund eines nicht wünschenswerten Livelock-Zustands nicht in der Lage ist, Vorwärtsfortschritt zu machen. Bedingung F stellt sicher, dass in solchen Situationen die TLU 165 Priorität an die MLU 166 gibt. Dementsprechend stellt die Bedingung F sicher, dass jede TLU 165 und die MLU 166 einander kennen und kooperativ zusammenarbeiten.
  • 7 zeigt ferner, dass Bedingung G der Rückstellbedingungen 501 anzeigt, dass eine TLU 165 in dem Ruhezustand 502 verbleiben/in ihn zurückkehren sollte, wenn eine „ausgeschaltete” Aktion („nuke action”) ihrem logischen Prozessor aufgegeben wurde. Eine ausgeschaltete Aktion für einen logischen Prozessor 150 hat das folgende Ergebnis: Die aktuelle Anweisung sowie andere Anweisungen, die notwendig sind, um die Ausführung des aktuellen Makrovorgangs abzuschließen, werden abgeschlossen. Alle weitere Anweisungsausführung wird angehalten und alle Pipelines und assoziierten Mikroarchitekturzustände für den logischen Prozessor 150 werden gespült (flushed). Auf diese Weise wird nicht nur die Verarbeitung für den Thread angehalten sondern sein Mikroarchitekturzustand wird gespült.
  • Bedingung G für einen aktuellen logischen Prozessor kann beispielsweise wahr sein, wenn von einem anderen der logischen Prozessoren 150a150n eine Alle-„Ausschalten”-Maßnahme initiiert worden ist. Eine solche Bedingung könnte beispielsweise erfüllt sein, wenn ein anderer logischer Prozessor als Ergebnis des Abschlusses von Zustand 606 eine Alle-„Ausschalten”-Maßnahme eingesetzt hat. In einem solchen Fall wird der aktuelle logische Prozessor zumindest in einer Ausführungsform angehalten und sein Mikroarchitekturzustand wird gespült; die TLU 165 für den aktuellen logischen Prozessor sollte daher in den Ruhezustand 502 zurückkehren.
  • Alternativ könnte Bedingung G für einen bestimmten logischen Prozessor erfüllt sein, auch wenn ein anderer logischer Prozessor Zustand 606 nicht abgeschlossen hat. Stattdessen kann eine „Ausschalten”-Maßnahme für den aktuellen logischen Prozessor 150 durch eines von mehreren Ereignissen in dem Prozessor initiiert werden, welche ansonsten nicht mit den Zuständen des Verfahrens 500 assoziiert sind. Das „Ausschalten”-Ereignis könnte beispielsweise als Ergebnis einer Unterbrechung dem aktuellen logischen Prozessor 150 aufgegeben werden, um eine präzise Ausnahme-Handhabung für einen Außer-der-Reihe-Prozessor 104 bereitzustellen.
  • 7 zeigt ferner, dass Bedingung H der Rückstellbedingungen 501 anzeigt, dass eine TLU 165 im Ruhezustand 502 verbleiben/in ihn zurückkehren sollte, wenn die TLU 165 eines anderen logischen Prozessors „aktiv” geworden ist und im Begriffist, Livelock-Brecher-Maßnahmen zu treffen. Durch Bedingung H ist eine zweite TLU 165 so ausgelegt, dass sie eine erste TLU 165 ergibt, wenn die erste TLU 165 von einer Erfassungsstufe (siehe 502, 504, 506) zu einer Stufe (siehe 508, 602, 606, 604) übergegangen ist, für die die erste TLU 165 „aktiv” in dem Sinne ist, dass sie eine Art von Korrekturmaßnahme trifft, um zu versuchen, einen Livelock-Zustand abzumildern. Die Erfüllung von Bedingung H erfordert, dass jede TLU 165 den Zustand der anderen TLUs 165 an dem Prozessor kennt (3 zeigt, dass mindestens in einer Ausführungsform alle TLUs 165a165n miteinander kommunizieren).
  • Es könnte eine Bindungssituation entstehen, in der mehr als eine TLU 165 versucht, während desselben Taktzyklus in einen aktiven Zustand überzugehen. In einem solchen Fall kann nur einer der anfordernden TLUs 165 Priorität gegeben werden. Priorität kann beispielsweise der TLU mit der niedrigsten Nummer gegeben werden (d. h. 165a hat eine höhere Priorität als 165b, so dass 165b in den Ruhezustand 502 zurückkehrt). Alternativ können viele andere Prioritätsauswahlmechanismen verwendet werden. In mindestens einer Ausführungsform wird der Prioritätsmechanismus durch einen Vermittler durchgesetzt (siehe z. B. 180 aus 1). Die Vermittlungsrichtlinie, die in solchen Fällen zum Zuweisen von Priorität verwendet wird, kann, muss aber nicht notwendigerweise dieselbe Richtlinie sein, die in dem unten mit Bezug auf 8 beschriebenen Block 806 verwendet wird.
  • 7 zeigt ferner, dass die Bedingung I der Rückstellbedingungen 501 anzeigt, dass eine TLU 165 in dem Ruhezustand 502 verbleiben/in ihn zurückkehren sollte, wenn sie gieriges Verhalten gezeigt hat und somit wahrscheinlich zu einem Livelock-Zustand an einem anderen logischen Prozessor 150 beiträgt. Ein solches gieriges Verhalten kann auf verschiedene Arten identifiziert werden. Das heißt, eine TLU 165 sollte nicht notwendigerweise in einem nicht-Ruhezustand bleiben, wenn der Anteil ihres logischen Prozessors 150 an ROB 364 aus einem anderen Grund als I-seitigem Mangel leer ist, wie einem Prozessor 150, dessen ROB-364-Anteil leer ist, da eine seiner Ausführungsressourcen voll ist.
  • Ein logischer Prozessor 150 kann beispielsweise gieriges Verhalten aufweisen, indem er eine Reihe von Speicheranweisungen ausgibt, die die Speicherbandbreite binden und dazu führen, dass der Puffer des aktuellen logischen Prozessors 150 voller Speicheranweisungen ist. In mindestens einer Ausführungsform kann das Verarbeiten von Anweisungen durch einen logischen Prozessor 50 angehalten werden, bis die Ausführungsressource (wie beispielsweise ein Pufferspeicher) nicht mehr voll ist. Während der Zeit, in der der logische Prozessor 150 somit angehalten ist, kann der ROB-364-Abschnitt des aktuellen logischen Prozessors leer sein, aber eine andere Ausführungsressource (d. h. der Pufferspeicher) ist voll. Für die Bedingung I kann das gierige Verhalten somit identifiziert werden, wenn der zugeteilte Abschnitt des ROB 364 für den aktuellen logischen Prozessor 150 leer ist, aber sein Pufferspeicher (oder jede andere spezifizierte Ausführungsressource) ist voll mit zurückgezogenen Speicheranweisungen, deren Daten noch nicht einem Cache oder Speicher zugewiesen wurden. In einem solchen Fall kehrt der aktuelle logische Prozessor 150 in den Ruhezustand 502 zurück und ergibt implizit Priorität, im Fall, dass eine TLU 165 eines anderen Prozessors aktiv werden muss.
  • 7 zeigt ferner, dass Bedingung J der Rückstellbedingungen 501 anzeigt, dass eine TLU 165 im Ruhezustand 502 verbleiben/in ihn zurückkehren sollte, wenn der logische Prozessor der TLU 165 zur Ausführung verfügbare Anweisungen hat und ein weiterer logischer Prozessor eine Hochprioritäts-Lock-Sequenz (high-priority lock sequence) ausführt. Eine Hochprioritäts-Lock-Sequenz kann beispielsweise eine atomische Anweisung sein. Bei einer atomischen Anweisung wirkt die Speicherlogik des Prozessors nur an dem gesperrten Thread, bis der gesperrte Vorgang abgeschlossen ist, unabhängig davon, wie lange das dauert. Diese Art von Hochprioritäts-Lock-Sequenz kann die höchste Priorität in dem Prozessor darstellen. Dementsprechend setzt die Rückstellbedingung J diese Priorität durch Verbleiben im/Zurückkehren in den Ruhezustand 502 durch, wenn ein anderer logischer Prozessor aktuell diese Art von Hochprioritäts-Lock-Operation (high-priority lock Operation) verarbeitet. Wenn der andere Prozessor eine Folge von Hochprioritäts-Lock-Operationen durchführt, so dass der aktuelle logische Prozessor 150 für eine lange Zeit keine seiner eigenen Speicheranweisungen ausführen kann, wird vermutlich die MLU 166 aufgerufen, um es dem aktuellen logischen Prozessor zu gestatten, seine Speicheranweisung auszuführen. Somit kann die MLU 166 vor dem Hintergrund der zwischen den beiden logischen Prozessoren widerstreitenden Speicheranweisungen einen logischen Prozessor davor schützen, aufgrund einer Folge von Hoch-Prioritäts-Locks auf einem anderen logischen Prozessor für eine unannehmbar lange Zeit angehalten zu werden.
  • Die Rückstellbedingung J ist jedoch nicht erfüllt, wenn der aktuelle logische Prozessor keine Anweisungen zur Ausführung hat (d. h. der ROB-Abschnitt 464 des aktuellen logischen Prozessors ist leer). Das heißt, wenn ein anderer logischer Prozessor aktuell eine Hochprioritäts-Lock-Operation verarbeitet, aber der ROB-Abschnitt 464 des aktuellen logischen Prozessors leer ist, kehrt die TLU 165 nicht in den Ruhezustand 502 zurück. Wenn der ROB-Abschnitt 464 leer ist, hat der aktuelle logische Prozessor keine Anweisungen zur Verarbeitung. Somit kann der Schutz des aktuellen logischen Prozessors, einer Reihe von Hochproritäts-Lock-Operationen, die von einem anderen logischen Prozessor ausgeführt werden, zu unterliegen, sich nicht auf die MLU 166 stützen. In einem solchen Fall ist die TLU 165 dafür verantwortlich, den aktuellen logischen Prozessor davor zu schützen, angesichts einer solchen Reihe von Hochprioritäts-Lock-Operationen zu lange angehalten zu werden. Dementsprechend sollte die gegenwärtige TLU 165 voranschreiten um bei Stufe 506 zu bestimmen, ob sie I-seitige Starvation-Vermeidungsmaßnahmen treffen sollte, wenn der aktuelle logische Prozessor 150 einen leeren ROB-Abschnitt 464 aufweist und auf einem anderen Thread ein Hoch-Prioritäts-Lock vorliegt.
  • 7 zeigt ferner, dass Bedingung K der Rückstellbedingungen 501 anzeigt, dass eine TLU 165 in dem Ruhezustand verbleiben/in ihn zurückkehren sollte, wenn der aktuelle logische Prozessor 150 Daten langer Latenz empfangen hat. In mindestens einer Ausführungsform ist Bedingung K erfüllt, wenn ein logischer Prozessor, der infolge eines Cache-Miss auf Daten oder Anweisungen gewartet hat, die Daten oder Anweisungen schließlich empfängt. Zu einer solchen Zeit sollte der aktuelle logische Prozessor in den Ruhezustand 502 zurückkehren. Der Grund dafür ist, dass, wenn der aktuelle logische Prozessor 150 in Reaktion auf die Erfüllung von Bedingung K nicht in den Ruhezustand 502 zurückkehrt, der logische Prozessor möglicherweise weiter fehlerhaft eine auf den Cache-Miss bezogene Prioritätsanforderung 530 an den Vermittler 180 sendet (1 und 2) (siehe Erläuterung des Zustands 506 unten).
  • 7 zeigt ferner, dass die Bedingung L der Rückstellbedingungen 401 anzeigt, dass eine TLU 165 in dem Ruhezustand 502 verbleiben/in ihn zurückkehren sollte, wenn der aktuelle logische Prozessor 150 während des relevanten Zeitrahmens mindestens eine Anweisung im Endformat zurückgezogen hat. In mindestens einer Ausführungsform handelt es sich bei der Anweisung im Endformat um eine Mikrooperation und bei der relevanten Zeitdauer um einen einzigen Taktzyklus. Wenn Bedingung L erfüllt ist, wird von dem aktuellen logischen Prozessor 150 gesagt, dass er in der Ausführung seines Threadanweisungsstroms einen Vorwärtsfortschritt gemacht hat. Dementsprechend besteht keine Livelock-Bedingung und die TLU 165 sollte in den Ruhezustand 502 zurückkehren oder in ihm verbleiben.
  • 7 zeigt ferner, dass die Bedingung M der Rückstellbedingungen 501 anzeigt, dass eine TLU 165 in dem Ruhezustand 502 verbleiben/in ihn zurückkehren sollte, wenn die Fähigkeit des logischen Prozessors, eine Prioritätsanforderung 530 an den Vermittler (180, 1 und 2) (siehe Erläuterung des Zustands 506 unten) zu senden, deaktiviert worden ist. Wenn die Fähigkeit des logischen Prozessors 150, eine Prioritätsanforderung 530 an den Vermittler 180 (1 und 2) deaktiviert ist, wird das bezeichnet als ein „Defeature” gilt. Die Bedingung M kann erfüllt sein, wenn 1), jede Bedingung, die andernfalls zum Senden einer Prioritätsanforderung 530 von einem Zustand 506 führen könnte, gilt und 2) das Defeature gilt.
  • Dementsprechend sollte der logische Prozessor 150 in dem Ruhezustand 502 verbleiben/in ihn zurückkehren, statt in dem Zustand 506 der Spezialfälle überzugehen/in ihm zu verbleiben (unten erläutert).
  • In mindestens einer Ausführungsform kann der erste Teil der Bedingung M (nämlich „1) jede Bedingung, die andernfalls zum Senden einer Prioritätsanforderung 530 von einem Zustand 506 (ihren könnte, gilt”) erfüllt sein, wenn der logische Prozessor 150 einen Cache-Miss auf dem Kern erfährt (Daten oder Anweisungen) und auf Anweisungen oder Daten von einer Quelle außerhalb des Kerns (wie beispielsweise der gemeinsam benutzte Cache 251 außerhalb des Kerns oder der Speicher 202 außerhalb des Chips) wartet. Zu einem solchen Miss kann es beispielsweise kommen, wenn 1) ein Cache-Miss für eine Lastanweisung aufgetreten ist und die Lastanweisung sich im Rückzug befindet, aber nicht zurückgezogen werden kann, da die Lastdaten auf dem Prozessorkern 104 nicht verfügbar sind (d. h. in keinem Cache auf dem Kern und auch nicht in den Lastpuffern („LDRBs”) verfügbar ist). Zu einem solchen Miss kann es beispielsweise auch kommen, wenn 2) der logische Prozessor 150 einen Miss auf dem Kern bei dem Abruf einer Anweisung erfährt und auf die Anweisungsinformationen von einer Quelle außerhalb des Kerns wartet (wie beispielsweise einem gemeinsam benutzten Cache 251 außerhalb des Kerns oder dem Speicher 202 außerhalb des Speichers) ODER 3), wenn der logische Prozessor 150 einen Miss auf dem Kern bei einer STA-Mikrooperation erfährt (bei der es sich um eine Endformat-Speicheradresse-Mikrooperation handeln kann, die mit einer Speicher-Makrooperation in Verbindung steht) und daher auf ein Wiedergewinnen der durch die Speicheradresse-Mikrooperation angegebenen Speicherstelle außerhalb des Kerns wartet.
  • Wiederum wird eine solche dritte Bedingung erfüllt, wenn sich die STA-Mikrooperation im Rückzug befindet, aber nicht zurückgezogen werden kann, weil die Speicherstelle (Speicheradresse), an die die mit der Speicheranweisung assoziierte Speicheranweisung geschrieben werden soll, sich nicht auf dem Prozessorkern 104, entweder in einem Cache oder den Pufferspeichern („STRBs”) befindet. In der Regel würde eine dieser Bedingungen bewirken, dass die TLU 165 in den Zustand der Spezialfälle 506 übergeht. Wenn das Defeature gilt, zeigt die Rückstellbedingung M jedoch an, dass ein solcher Übergang nicht auftreten sollte, da die Fähigkeit des logischen Prozessors 150, eine Prioritätsanforderung 530 unter solchen Bedingungen zu senden, deaktiviert worden ist.
  • Unter Bezugnahme auf 5 sind die anderen Zustände 504, 506 ersichtlich, in die die TLU 165 eintreten kann, um zu bestimmen, ob eine Livelock-Bedingung besteht. Solche Zustände 504, 506 werden zusammen mit dem Ruhezustand 502 hierin als „Erfassungs”-Zustande bezeichnet. Während sich die TLU 165 in einem solchen Erfassungszustand 502, 504, 504 befindet, wird sie nicht als „aktiv” angesehen, da sie lediglich auf bestimmte Bedingungen hin überwacht und keine bestätigende Maßnahmen trifft, um zu versuchen, einen Livelock zu brechen. Somit wird der logische Prozessor 150, während er sich in einem der Detektionszustände 502, 504, 506 befindet, keine Rückstellbedingung H der Rückstellbedingungen 501, die in Verbindung mit 7 erläutert worden sind, auslösen und wird daher nicht bewirken, dass die anderen logischen Prozessoren, sie 150a105n dem logischen Prozessor 150 Priorität zuweisen.
  • Der Eintritt in die beiden verbleibenden Erfassungszustände 504 und 506 wird dadurch unterschieden, ob die Bedingung, die den Übergang des logischen Prozessors 150 aus dem Ruhezustand 502 bewirkt hat, 1) eine ist, die eventuell von dem Senden einer Prioritätsanforderung 530 an den Vermittler 180 (1 und 2) profitieren würde, ODER 2) der Fall, dass der logische Prozessor 150 unter I-seitigem Mangel leiden kann, aber durch ein Hochprioritäts-Lock auf einem anderen Thread daran gehindert wird, Maßnahmen zu treffen (solche Bedingungen werden hier als „Spezialfälle” bezeichnet). Falls ja, geht die TLU 165 von dem Ruhezustand 502 in den Spezialfall-Zustand 506 über 552. Andenfalls geht die TLU 165 von dem Ruhezustand 502 in den Anfangszählzustand 504 über 553. Jeder dieser Zustände 504, 506 wird unten separat ausführlicher erläutert.
  • In den Spezialfallzustand 506 wird von dem Ruhezustand 502 eingetreten 552, wenn 1) keine der Rückstellbedingungen 501 gilt, UND 2)
    • a) der logische Prozessor 150 einen Cache-Miss auf dem Kern erfährt, ODER
    • b) der logische Prozessor 150 einen leeren ROB 464 aufweist, aber auf einem anderen logischen Prozessor eine Hoch-Prioritäts-(„HP”)-Sperrung abläuft.
  • In dem letzteren Fall (Bedingung 2b) kann der gegenwärtige logische Prozessor 150 Iseitigen Mangel erfahren. Der aktuelle logische Prozessor 150 kann jedoch auch einem Anhalten unterliegen, da ein weiterer Thread eine Hochprioritäts-Lock-Operation ausführt. Der aktuelle logische Prozessor 150 sollte dementsprechend nicht in einen „aktiven” Zustand fortschreiten, bis die Hochprioritäts-Lock-Operation aufgehoben wurde.
  • In dem ersten Fall (2a) erfährt der logische Prozessor 150 einen Cache-Miss auf dem Kern. In mindestens einer Ausführungsform kann ein solcher Cache-Miss auf dem Kern durch Untersuchen der drei oben in Verbindung mit Bedingung M der Rückstellbedingungen 501 bestimmt werden: Last- oder STA-Anweisung im Rückzug oder Anweisungsholen, das nicht abgeschlossen werden kann. Einem Fachmann ist natürlich klar, dass eine solche Ausführungsform nicht als beschränkend aufgefasst werden soll und das die Erfassung des Cache-Miss auf dem Kern für andere Ausführungsformen bestimmt werden soll, indem andere oder zusätzliche Bedingungen ausgewertet werden. Wenn ein logischer Prozessor 150 einen Cache-Miss auf dem Kern erfährt (und Defeature nicht gilt), dann geht die TLU 165 in den Spezialfallzustand 506 über 552, um das Senden eines Prioritätsanforderungssignals 530 and en Vermittler 180 zu ermöglichen, welches für andere logische Prozessoren minimal störend ist, anstelle des direkten Übergehens in einen schärferen Aktionszustand, wie beispielsweise einen Anhaltedurchsetzungszustand (stall assertion state) 508, der die Verarbeitung der anderen logischen Prozessoren ausdrücklich stört.
  • Während des Spezialfallzustands 506 kann die TLU 165 einen Zähler verwenden, um die Anzahl von Taktzyklen zu zählen, die seit dem Eintritt in den Spezialfallzustand 506 abgelaufen sind. Bei alternativen Ausführungsformen kann jeder andere Ansatz zum Messen der verstrichenen Zeit anstelle oder zusätzlich zu dem Zählen von Taktzyklen verwendet werden. Nach Ablauf einer vorbestimmten Anzahl von Taktzyklen (X), kann die TLU 165 eine Prioritätsanforderung 530 aufgeben. Die Prioritätsanforderung 530 wird ausgegeben, wenn 1) der aktuelle logische Prozessor 150 einen Cache-Miss erführt und 2) die vorbestimmte Zeitdauer (X) abgelaufen ist, nachdem die TLU 165 in das Auftreten des Spezialfallzustands 506 eingetreten ist.
  • Die Prioritätsanforderung 530 geht zu dem Vermittler 180 (1 und 2) und fordert an, dass der Vermittler 180 Speicheranforderungen für den aktuellen logischen Prozessor 150 mit höherer Priorität vergibt, als Speicheranforderungen von anderen logischen Prozessoren (siehe 150a150n). Alternativ kann die Prioritätsanforderung 530 anfordern, dass der Vermittler 180 Speicheranforderungen für den aktuellen Prozessorkern 104 Priorität gegenüber anderen Prozessorkernen in einer Mehrfachkernumgebung gibt (siehe 104a104n, 2). Bei der letzteren Ausführungsform ist die Prioritätsanforderung 530 in einem Einfachkern-System (siehe 1) nicht nützlich. Dementsprechend wird die optionale Natur einer kernspezifischen Prioritätsanforderung 530 für eine Einfachkern-Ausführungsform in 5 durch gestrichelte Linien angegeben. Nach Ausgeben der Prioritätsanforderung 530 kann die TLU 165 in dem Spezialfallzustand 506 bleiben, bis eine der unten erläuterten Ausgangsbedingungen gilt.
  • Der logische Prozessor bleibt 555 in dem Spezialfallzustand 506, solange wie der mit dem logischen Prozessor 150 der TLU 165 assoziierte Abschnitt des ROB 464 leer ist und jeder andere logische Prozessor, siehe 150a150n des Prozessorkerns 104 eine Hochprioritäts-Lock-Operation ausführt. Wenn die TLU 165 jedoch während des Spezialfallzustands 506 bestimmt, dass der HP-Sperr-Indikator für einen anderen logischen Prozessor von zutreffend zu unzutreffend übergegangen ist, verlässt die TLU 165 den Spezialfallzustand 506 und tritt 554 in einen „aktiven” Zustand ein, den Anhaltedurchsetzungszustand 508, während dem der aktuelle logische Prozessor 150 ein Anhalten anderen logischen Prozessoren aufgeben kann. Der Anfangszählzustand 504 wird somit umgangen, wenn der ROB-Abschnitt 464 leer ist. Der Übergang 554 von dem Zustand 506 in den Zustand 508 implementiert somit Hoch-Prioritäts-Verarbeitung, wenn der ROB-Abschnitt 464 leer ist, da er keine Zeit zum Ausführen des Anfangs-Countdown-Zustands 504 verbraucht. Der Countdown braucht zu lange, wenn der ROB 464 leer ist, der logische Prozessor hat in diesem Fall keine Anweisungen und die TLU 165 ist somit dazu ausgelegt, so früh wie möglich mehr Anweisungen in den ROB 464 zu bekommen.
  • 5 zeigt, dass die TLU 165 auch aus dem Spezialfallzustand 406 übergehen 556 kann, wenn sie bestimmt, dass die Speicher-Livelock-Einheit 166 für ihren Kern 104 ausgelöst worden ist. In einem solchen Fall geht die TLU 165 von dem Spezialfallzustand 506 in den Anfangszählzustand 504 über 556. Bei einer solchen Funktionsweise gibt die TLU 165 vorübergehende Priorität an die MLU 166, um es der MLU-Logik 166 zu gestatten, den potenziellen Livelock zu brechen, der sich als Folge des Cache-Miss langer Latenz auf dem Kern entwickelt hat, welchen der logische Prozessor 150 möglicherweise erfahrt (siehe die oben für den Eintritt in den Spezialfallzustand 506 erläuterte Bedingung 2a). Während ihrer Verarbeitung kann die MLU 166 einem bestimmten Thread Priorität zuweisen. Indem bei Übergang 556 der MLU 166 Priorität zugewiesen wird, vermeidet die TLU 165 effektiv die Zuweisung von Priorität an den aktuellen logischen Prozessor, während die TLU 166 Priorität an einen anderen logischen Prozessor 150 zugewiesen hat. Auf diese Weise arbeiten die TLUs 165 und die MLU 166 zusammen, um zu einer Zeit nur jeweils einem Thread Priorität zuzuweisen. Die TLU 165 geht somit 556 in den Anfangszählzustand 504 über, um der MLU 166 die volle vorbestimmte Zeitdauer Y zu gestatten (siehe weitere Erläuterung von Zustand 504 unten), bevor sie bestimmt, dass die MLU 166 nicht in der Lage war, den Speicher-Livelock abzumildern und dass der aktuelle logische Prozessor 150 nach einer annehmbaren Zeitdauer weiter nicht in der Lage ist, einen Vorwärtsfortschritt zu machen.
  • Es sei darauf hingewiesen, dass in Übereinstimmung mit Rückstellbedingung K, die oben in Verbindung mit 7 erläutert worden ist, die TLU 165 aus dem Anfangszählzustand 504 zurück in den Ruhezustand 502 übergeht, wenn die MLU 166 in der Lage ist, den Speicher-Livelock erfolgreich zu brechen, so dass die Cache-Miss-Information (Daten oder Anweisungen) schließlich empfangen wird.
  • Es sei auch darauf hingewiesen, dass in Übereinstimmung mit der Rückstellbedingung K der Übergang 551 von dem Spezialfallzustand 506 zurück in den Ruhezustand 502 auch ohne Unterstützung von der MLU 166, wenn als Teil der normalen Prozessor-Betriebsbedingungen die angeforderten Daten oder geholten Anweisungen schließlich empfangen werden.
  • Wenn weder die Spezialfallbedingungen bestehen (Cache-Miss auf dem Kern oder leerer ROB + HP-Sperre) und keine der Rückstellbedingungen 501 gelten, geht die TLU 165, wie oben festgestellt, 553 von dem Ruhezustand 502 in den Anfangszählzustand 504 über. Während des Anfangszählzustands führt die TLU 165 einen Timer, um zu bestimmen, ob die TLU 165 für eine vorbestimmte Zeitdauer Y in dem Anfangszählzustand 504 war. Diese vorbestimmte Zeitdauer Y kann so bestimmt werden, dass sie die Zeitdauer wiedergibt, nach der, wenn der aktuelle logische Prozessor 150 unfähig war, einen Vorwärtsfortschritt zu machen, angenommen wird, dass der aktuelle logische Prozessor 150 eine Livelock-Bedingung erfährt.
  • Für mindestens eine Ausführungsform führt die TLU 165 während des Anfangszählzustands 504 einen Countdown-Timer, wobei der Timer auf die vorbestimmte Zeitdauer, Y, eingestellt wird, und dann den Zähler jeden Taktzyklus dekrementiert. Wenn der Zähler 0 erreicht (oder ein anderer vorbestimmter Mindestwert), kann sich der logische Prozessor 150 in einer Livelock-Bedinging befinden und der Übergang in einen „aktiven” Zustand kann garantiert werden. Der Countdown des Timers von dem vorbestimmten Timerwert, Y, zu dem vorbestimmten Mindestwert, stellt somit für mindestens eine Ausführungsform eine vorbestimmte Anzahl von Taktzyklen dar, für die ein Mangel an Vorwärtsfortschritt toleriert wird.
  • Es sei darauf hingewiesen, dass, wenn eine Rückstellbedingung 501 während des Anfangszählzustands 504 wahr wird, die TLU 165 in den Ruhezustand 502 übergehen wird und der während des Anfangszählzustands verwendete Zähler re-initialisiert wird. Eine solche Rückstellbedingung, die Bedingung L, ist der Rückzug einer Endformat-Anweisung. Wenn ein solcher Rückzug nicht während des Anfangszählzustands 504 auftritt, macht der aktuelle logische Prozessor keinen Vorwärtsfortschritt bei der Ausführung seiner Anweisungen. Die anderen Rückstellbedingungen A-K und M können eine andere Anzeige wahrscheinlichen Vorwärtsprozesses darstellen. Wenn keine der Rückstellbedingungen während der vorbestimmten Anzahl von Taktzyklen auftreten, geht die TLU 165 von dem Anfangszählzustand 504 in den Anhaltedurchsetzungszustand 508 über 557.
  • 5 veranschaulicht somit, dass entweder von dem Anfangszählzustand 504 (siehe Übergang 557) oder von dem Spezialfallzustand 506 (siehe Übergang 554) in den Anhaltedurchsetzungszustand 508 eingetreten werden kann. Während des Anhaltedurchsetzungszustands 508 gibt die TLU 165 ein Anhaltesignal jedem logischen Prozessor 150a150n des Prozessors 104 auf, außer ihrem eigenen logischen Prozessor (d. h. der aktuelle logische Prozessor). Eine solche Maßnahme setzt eine Priorität unter allen logischen Prozessoren 150a150n für einen Prozessor 104 durch. In mindestens einer Ausführungsform macht das während des Anhaltedurchsetzungszustands 508 aufgegebene Anhaltesignal die anderen logischen Prozessoren (siehe 150a150n) unfähig, Anweisungen an die Ausführungseinheiten 360 auszugeben, während das Anhaltesignal aufgegeben wird. Die TLU 165 bleibt in dem Anhaltedurchsetzungszustand und fahrt mit dem Aufgeben des Signals an jeden anderen logischen Prozessor 150 des Prozessors 104 fort, bis eine der folgenden Ausgangsbedingungen erfüllt ist.
  • 5 zeigt, dass mindestens eine Ausführungsform der TLU 165 aus dem Anhaltedurchsetzungszustand 508 austreten kann, wenn eine vorbestimmte Zeitdauer, die als eine Anzahl Z1 von Taktzyklen wiedergegeben werden kann, ausgelaufen ist UND der Abschnitt des ROB 464, der mit dem aktuellen logischen Prozessor assoziiert ist, nicht leer ist. In einem solchen Fall erfährt der aktuelle 150 keinen Anweisungsmangel, da der entsprechende ROB-Abschnitt 464 nicht leer ist. Trotzdem hat der aktuelle logische Prozessor 150 ein Anhaltesignal allen anderen logischen Prozessoren für eine Zeitdauer von Z1 Taktzyklen aufgegeben und ist noch immer unfähig, einen Vorwärtsfortschritt zu erfahren. Das Anhalten der anderen logischen Prozessoren hat es dem aktuellen logischen Prozessor 150 nicht gestattet, Vorwärtsfortschritt zu machen, und daher sind zusätzliche Maßnahmen erforderlich, um zu versuchen, die Livelock-Bedingung abzumildern. Die TLU 165 geht somit von dem Zustand 602 aus 6 über, wenn eine solche Ausgangsbedingung gilt.
  • Wenn andererseits der für den aktuellen logischen Prozessor 150 zugewiesene Abschnitt des ROB 464 nicht leer ist, dann gilt die unmittelbar oben erläuterte erste Ausgangsbedingung für den Zustand 580 nicht. Da der ROB-Abschnitt 464 leer ist, kann der gegenwärtige logische Prozessor 150 einen Anweisungsmangel erfahren. Wenn der ROB-Abschnitt 464 leer ist, wartet die TLU 165 dementsprechend für eine vorbestimmte Zeitdauer Z2, bevor sie in den Zustand 604 aus 6 übergeht 559, wo der logische Prozessor 150 Maßnahmen treffen kann, um den Anweisungsmangel abzumildern.
  • Unter Bezugnahme auf 6, welche hier unter Bezugnahme auf 4 erläutert wird, ist ersichtlich, dass der I-seitige Starvation-Maßnahmen-Zustand 604 von dem Anhaltedurchsetzungszustand 508 in Reaktion darauf eingetreten werden kann, dass sein ROB-Abschnitt 464 für mindestens eine vorbestimmte Zeitdauer Z2 leer ist. Während des I-seitigen Starvation-Maßnahmenzustands 604 trifft die TLU 165 eine oder mehrere Maßnahmen, um zu versuchen, mehr Anweisungen in den ROB-Abschnitt 464 des aktuellen logischen Prozessors zu bekommen. Diese Anweisungen werden hier als Starvation-Vermeidungsmaßnahmen bezeichnet. Während des Zustands 640 setzt die TLU 165 das Anhaltesignal zurück (Deassert), welches während des Zustands 508 den anderen logischen Prozessor(en) 150a150n aufgegeben wurde. Während einer solchen Aufgabe (Assertion) konnte der aktuelle logische Prozessor 150 keinen Vorwärtsfortschritt machen, das Anhalten hat nicht geholfen und der aktuelle logische Prozessor 150 erfährt immer noch einem Mangel an Anweisungen (d. h. sein ROB 464 ist immer noch leer). Bei Eintritt in den Zustand 604 kann es tatsächlich der Fall sein, dass das während des Zustands 508 aufgegebene Anhaltesignal einen anderen logischen Prozessor daran gehindert hat, eine Ausführung einer Makroanweisung auszuführen, wodurch möglicherweise die Freigabe einer von dem aktuellen logischen Prozessor 150 gebrauchte Ressource verhindert wurde.
  • In der Zeit des Eintritts in den Zustand 604 wird angenommen, dass der aktuelle logische Prozessor tatsächlich unter einem anweisungsseitigen Mangel leidet (d. h. es mangelt ihm an Anweisungen, die zur Ausführung verfügbar sind). Zu einem solchen Mangel kann es infolge eines von mehreren Faktoren kommen. Bei mindestens einer Ausführungsform können zu solchen Faktoren gehören: Seine Anweisungsabholanforderung wird bei der (nicht gezeigten) Speicheranweisungsvermittlungslogik blockiert; einer oder mehrerer der logischen Prozessor(en) haben eine Reihe von Hochprioritäts-Lock-Operationen ausgeführt oder die Abholanweisung des aktuellen logischen Prozessors 150 hat wiederholt eine „Nicht bestätigt”-Antwort von einer Struktur empfangen, die zum Verarbeiten von Anforderungen an das Speichersystem verwendet wird.
  • Während des I-seitigen Starvation-Zustands 604 kann die TLU 165 die folgenden Maßnahmen treffen: 1) das Anhaltesignal an alle anderen logischen Prozessoren 150a150n des Prozessorkerns 104 rückstellen (Deassert); und 2) anfordern, dass dem aktuellen logischen Prozessor „Threadpriorität” gegeben wird. Die „Threadprioritäts”-Anforderung kann an die (nicht dargestellte) Threadprioritätslogik erfolgen. Wenn der aktuelle logische Prozessor Threadpriorität annimmt, kann die MLU 166 aufgerufen werden.
  • Kurze Bezugnahme auf 9 zeigt bestimmte Merkmale der TLU 165 und MLU 166, die während mindestens einer Ausführungsform des I-seitigen Starvation-Maßnahmenzustands 604 zusammenwirken (6). 9 wird hier unter Bezugnahme auf 3, 5 und 6 erläutert. 9 zeigt, dass jede TLU 165a165n einen Livelock-Erfasser 920 und einen Livelock-Brecher 930 enthalten kann. In mindestens einer Ausführungsform überwacht der Livelock-Erfasser 920 die Rückstellbedingungen 501 und führt die Erfassungszustände 502, 504, 506 aus. Der Livelock-Brecher 930 ist in mindestens einer Ausführungsform dafür verantwortlich, die Maßnahmen der „aktiven” Zustände 508, 602, 604 und 606 zu treffen.
  • 9 zeigt, dass die MLU 166 einen Speicher-Livelock-Brecher 940 enthält. Der Speicher-Livelock-Brecher 940 ist in mindestens einer Ausführungsform dafür verantwortlich, Maßnahmen zu treffen, um eine Speicher-Livelock-Bedingung abzumildern, wie beispielsweise eine verlängerte Cachefehler-Bedingung, wie oben erläutert.
  • 9 zeigt, dass der Speicher-Livelock-Brecher 940 der MLU eine gemeinsam benutzte Livelock-Brecher-Logik 950 enthalten kann. Die gemeinsam benutzte Livelock-Brecher-Logik 950 kann während des I-Seitigen Starvation-Maßnahmenzustands 640 in Reaktion darauf, dass der aktuelle logische Prozessor „Threadpriorität” erhält, aufgerufen werden. Die gemeinsam benutzte Livelock-Brecher-Logik 950 kann von der TLU 165 für jeden logischen Prozessor 150a150n auf dem Prozessorkern 104 aufgerufen werden.
  • Unter Bezugnahme auf 6 ist ersichtlich, dass aus dem I-seitigen Starvation-Maßnahmenzustand 604 ausgetreten werden kann, wenn dem logischen Prozessor 150, der unter I-seitigem Mangel leidet, für eine zusammenhängende Zeit N Threadpriorität zugewiesen wurde (was eine Anzahl von Taktzyklen wiedergeben kann), seitdem dem aktuellen logischen Prozessor zuerst „Threadpriorität” gegeben wurde. In einem solchen Fall geht die TLU 165 in den Abschaltzustand 606 über 651.
  • Es sei darauf hingewiesen, dass der Übergang 651 nur dann erfolgt, wenn die während des I-seitigen Maßnahmenzustands 604 getroffenen Maßnahmen nicht erfolgreich waren. Die wiederholte Erfassung eines Selbst-Modifizierenden-Codes (SMC), der durch einen anderen logischen Prozessor initiiert worden ist, kann beispielsweise den an Mangel leidenden Prozessor zwingen, Anweisungen wiederholt zu verwerfen und wieder zu holen, wodurch sein ROB-Abschnitt 464 leer gehalten wird. Die I-seitigen Starvation-Vermeidungsmaßnahmen, die während des Zustands 604 getroffen wurden, können beim Abmildern der Anweisungsmangelbedingung erfolgreich sein. Wenn dies zutrifft, werden die Anweisungen abgeholt und nicht an den zugewiesenen Teil des ROB 464 für den aktuellen logischen Prozessor 150 gesendet. In einem solchen Fall wird der aktuelle logische Prozessor 150, mindestens für eine Ausführungsform aus einer Anweisungs-Starvation-Bedingung übergegangen sein. Dementsprechend wird die Rückstellbedingung E gelten (siehe 501, 7) und die TLU 165 wird von dem I-seitigen Starvation-Maßnahmenzustand 640 in den Ruhezustand übergehen (siehe 5).
  • 6 zeigt, dass in den Abschalt-Countdown-Zustand 602 von dem Anhaltedurchsetzungszustand 508 eingetreten werden kann. Während des Abschalt-Countdown-Zustands 602 stellt die TLU 165 wieder das Anhaltesignal zurück (Deassert), welches während Zustand 508 aufgegeben wurde, an andere logische Prozessor(en) 150a150n. Während einer solchen Aufgabe (Assertion), konnte der aktuelle logische Prozessor 150 keinen Vorwärtsfortschritt machen, das Anhalten hat nicht geholfen. Tatsächlich kann es an dem Eintritt zu Zustand 602 der Fall sein, dass das während des Zustands 508 aufgegebene Anhaltesignal einen anderen logischen Prozessor 150 daran gehindert hat, die Ausführung einer Makroanweisung abzuschließen, wodurch die Freigabe einer Ressource verhindert wird, die von dem aktuellen logischen Prozessor 150 gebraucht wird. Das Anhalten kann aber die Zeitgebung des anderen logischen Prozessors gestört haben, was sich bei der Unterstützung des aktuellen logischen Prozessors 150 beim Vorwärtsfortschritt als günstig erweisen kann.
  • Wenn in den Abschalt-Countdown-Zustand 602 eingetreten worden ist, kann sich der aktuelle logische Prozessor 150 in einem Zustand befinden, der schließlich zu einem Vorwärtsfortschritt führen wird. Der aktuelle logische Prozessor 150 kann beispielsweise einem Speicher-Livelock unterliegen, für den die MLU 166 aktuell aktiv ist, aber mehr Zeit braucht, um ihre Livelock-Brecher-Verarbeitung abzuschließen. Während des Abschalt-Countdown-Zustands 602 wartet die TLU 165 während einer vorbestimmten Zeitdauer (die beispielsweise als eine Zählung von M Zyklen wiedergegeben werden kann) in der Hoffnung, dass der aktuelle logische Prozessor 150 eine der Rückstellbedingungen 501 erzielen wird. In mindestens einer Ausführungsform kann es sich bei den in 6 gezeigten M und N Zählwerten um dieselbe Zahl handeln, obwohl eine solche Gleichheit nicht für alle Ausführungsformen notwendig ist.
  • 6 zeigt, dass in mindestens einer Ausführungsform die TLU von dem Abschalt-Countdown-Zustand 602 in den Abschaltzustand 602 nach folgender Bedingung übergeht 652: dem aktuellen logischen Prozessor wurde „Threadpriorität” zugewiesen und hat für einen zusammenhängenden Zeitrahmen M die Threadpriorität gehalten. Während dieser Zeit war der aktuelle logische Prozessor 150 trotz seiner Threadpriorität nicht in der Lage, einen Vorwärtsfortschritt zu machen. Wie oben dargelegt, kann die TLU 165 auch in den Abschaltzustand 606 übergehen 651, wenn der aktuelle logische Prozessor an einem Anweisungsmangel leidet; das heißt, wenn die I-seitigen Starvation-Maßnahmen, die während Zustand 604 getroffen wurden, nicht erfolgreich waren.
  • Während des Zustands 606 gibt die TLU 165 ein kerninternes „Abschalt”-Signal an jeden der anderen logischen Prozessoren (siehe 150a150n) des Prozessorkerns 104 aus. Es wird gehofft, dass als Ergebnis einer solchen Maßnahme der aktuelle logische Prozessor 150 nun in der Lage sein wird, einen Vorwärtsfortschritt zu machen. Bei einer Ausführungsform mit einem einfachen Kern, die in 1 dargestellt ist, kann die Verarbeitung für das Verfahren 500 aus dem Zustand 606 (siehe Verbinder „C”) in den Ruhezustand 502 übergehen 654.
  • 6 zeigt, dass in den Abschaltzustand 606 auch in Reaktion auf ein externes Ereignis eingetreten werden kann 655, anstelle als Ergebnis eines der oben erläuterten Zustandsübergänge. Ein solches externes Ereignis kann beispielsweise der Empfang einer Alle-Threads-Abschalten-Anforderung sein, die von einer TLU 165 an einem anderen Kern im optionalen Zustand 608 (unten erläutert) erzeugt wurde.
  • Von Zustand 606 kann ein Übergang 653 in den optionalen Zustand erfolgen, wenn die kerninternen Alle-Threads-Abschalten-Signale, die während Zustand 606 ausgegeben wurden, nicht zu einem Vorwärtsfortschritt für den aktuellen logischen Prozessor in einer vorgegebenen Zeitdauer P führt. Es sei darauf hingewiesen, dass der Zustand 608 in 6 mit einer gestrichelten Linie angezeigt ist. Dies ist der Fall, weil der Übergang 653 und der Zustand 608 optional in dem Sinne sind, dass sie nur für Mehrfachkernausführungen gelten, wie die Ausführungsform 200, die in 2 dargestellt wurde. Bei Zustand 608 wird eine Alle-Kerne-Abschalten-Anforderung an den Vermittler 180 gesendet (1 und 2). In Reaktion auf die auf die in Zustand 608 erzeugte Anforderung initiiert mindestens eine Ausführungsform des Vermittlers 180 die folgenden Maßnahmen: Alle durch den Vermittler 180 geführten Schalgen werden für alle Threads 150a150n (außer dem aktuellen logischen Prozessor) an allen Kernen 104a140n gellert. Außerdem werden alle Alle-Kerne-Abschalten-Anforderungen blockiert (siehe Block 806 in 8), außer denen, die von dem aktuellen logischen Prozessor ausgehen. Schließlich wird eine Alle-Threads-Abschalten-Anforderung (siehe Erläuterung des Zustands 508 oben) für jeden anderen Prozessorkern 104a140n ausgegeben und auch für jeden anderen Thread 150a150n (außer dem aktuellen logischen Prozessor) an dem Prozessorkern 104, der mit dem aktuellen logischen Prozessor 150 assoziiert ist. (Wie oben dargelegt, kann eine solche Abschalt-Anforderung, wenn sie von den logischen Prozessoren der anderen Prozessorkerne empfangen wird, bewirken, dass die TLUs 165 für solche logische Prozessoren in den Zustand 606 eintreten – sie obige Erläuterung von Block 620). Vom Zustand 608 kehrt die TLU 165 in den Ruhezustand (siehe Verbinder „D”) über.
  • 8 ist ein Ablaufdiagramm, dass ein Verfahren 800 zum Verarbeiten von Alle-Kerne-Abschalten-Anforderungen zeigt, wie jeden, die während, des Zustands 608 für eine Mehrfachkern-Ausführungsform ausgegeben worden sind. In mindestens einer Ausführungsform kann das Verfahren 800 durch einen Vermittler, wie dem in 1 und 2 gezeigten Vermittler 180, ausgeführt werden. Der Vermittler kann mindestens in einer Ausführungsform wie ein Teil eines Abschnitts 280 außerhalb des Kerns 280 (2) der Logik enthalten sein, welche hierin als „Uncore” enthalten sein.
  • 8 zeigt, dass das Verfahren 800 bei Block 802 beginnt und zu Block 804 fortschreitet. Wenn eine einzelne Alle-Kerne-Abschalten-Anforderung erzeugt worden ist (d. h. von einer TLU 165 auf einem ersten Prozessorkern 104a), dann schreitet die Verarbeitung zu Block 806 voran. Wie oben in Verbindung mit der mit Zustand 608 assoziierten Verarbeitung beschrieben, wird dem anfordernden Kern 104a bei Block 806 Priorität zugewiesen und Alle-Kerne-Abschalten-Anforderungen von den verbleibenden Kernen 104a104n werden missachtet.
  • Die Verarbeitung schreitet von Block 806 zu Block 808 voran. Bei Block 808 wird eine Alle-Threads-Abschalten-Anforderung an alle anderen Kerne 104a104n, außer den Kern, von dem die ursprüngliche Alle-Kerne-Abschalten-Anforderung ausging, initiiert. Eine solche Anforderung kann von den anderen Kernen empfangen werden und dazu führen, dass sie in den Abschaltzustand 606 (siehe Block 620, 6) übergehen. Die Verarbeitung endet dann bei Block 814.
  • Wenn jedoch zwei oder mehr gleichzeitige Alle-Kerne-Abschalten-Anforderungen von mehreren Kernen empfangen werden, schreitet die Verarbeitung zu Block 810 von Block 104 voran. Bei Block 810 legt das Verfahren 800 eine Vermittlungsrichtlinie an, um einen der mehreren anfordernden Kerne als den Prioritätskern auszuwählen. In mindestens einer Ausführungsform kann der anfordernde Kern zusammen mit der Abschaltanforderung eine Kern-ID an den Vermittler zuführen. Der Vermittler 180 kann dann einen einfachen Auswahl-Algorithmus anlegen, wie das Auswählen des Kerns mit der höchsten oder niedrigsten ID, als den Prioritätskern. Von Block 810 schreitet die Verarbeitung zu Block 808 und dann zu Block 814 voran, wie in dem vorstehenden Abschnitt beschrieben.
  • Die vorstehende Erläuterung beschreibt ausgewählte Ausführungsformen von Verfahren, Systemen und Vorrichtungen zum Synchronisieren von Threadpriorität unter einer Mehrzahl von Threads, um einen Vorwärtsfortschritt bei der Ausführung von Threadanweisungen zu gestatten, während gleichzeitig die Priorität unter Livelock-Brecher-Logik, I-seitiger Starvation-Vermeidungs-Logik und Hoch-Prioritäts-Sperrverarbeitung erhalten wird. Die hier beschriebenen Mechanismen können mit Einfachkern- oder Mehrfachkern-Multithreading-Systemen verwendet werden. In der vorstehenden Beschreibung wurden verschiedene Aspekte der Verfahren, Systeme und Vorrichtungen beschrieben. Zu Erläuterungszwecken wurden spezifische Zahlen, Beispiele, Systeme und Konfigurationen dargelegt, um ein umfassenderes Verständnis bereitzustellen. Einem Fachmann ist jedoch klar, dass das beschriebene Verfahren und die beschriebene Vorrichtung ohne die spezifischen Einzelheiten ausgeführt werden können. In anderen Fällen wurden wohlbekannte Merkmale ausgelassen oder vereinfacht, um das Verfahren und die Vorrichtung nicht undeutlich zu machen.
  • Ausführungsformen der hier beschriebenen Verfahren können in Hardware, Hardware nachahmender Software, Firmware oder einer Kombination solcher Implementationsansätze implementiert werden. Ausführungsformen der Erfindung können für ein programmierbares System implementiert werden, welches mindestens einen Prozessor, ein Datenspeichersystem (enthaltend einen flüchtigen und nicht-flüchtigen Speicher und/oder Speicherelemente), mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung enthält. Zu Zwekken dieser Anmeldung enthält ein Verarbeitungssystem ein System, das einen Prozessor, wie beispielsweise einen Digitalsignalprozessor (DSP), eine Mikrosteuerung, eine anwendungsspezifische integrierte Schaltung (ASIC) oder einen Mikroprozessor enthält.
  • Ein Programm kann auf einem Speichermedium oder einer Speichervorrichtung gespeichert sein (z. B. Festplattenlaufwerk, Diskettenlaufwerk, ROM (Read Only Memory), CD-ROM-Vorrichtung, Flash-Speicher-Vorrichtung, DVID oder andere Speichervorrichtungen), welches durch programmierbare Verarbeitungssysteme für allgemeine oder spezielle Zwecke lesbar ist. Die Anweisungen, die einem Prozessor in einem Verarbeitungssystem zugänglich sind, stellen das Konfigurieren und Betreiben des Bearbeitungssystems sicher, wenn die Speichermedien oder Vorrichtungen durch das Verarbeitungssystem gelesen werden, um die hierin beschriebenen Prozeduren auszuführen. Ausführungsformen der Erfindung können auch so betrachtet werden, dass sie als ein maschinenlesbares Speichermedium implementiert sind, welches zur Verwendung mit einem Verarbeitungssystem konfiguriert ist, wobei das so konfigurierte Speichermedium bewirkt, dass das Verarbeitungssystem auf eine spezifische und vorbestimmte Weise betrieben wird, um die hier beschriebenen Funktionen auszuführen.
  • Mindestens eine Ausführungsform eines Beispiels eines solchen Verarbeitungssystems wird in 4 gezeigt. Das Beispielsystem 400 kann beispielsweise verwendet werden, um Livelock-Bedingungen zu erfassen und Korrekturmaßnahmen zu treffen, um zu versuchen, solche Bedingungen abzumildern. Das Beispielsystem 400 ist repräsentativ für Verarbeitungssysteme, die auf den von Intel erhältlichen Mikroprozessoren Pentium®, Pentium® Pro, Pentium® II, Pentium® III, Pentium® 4 und Itanium® und Itanium® 2 basieren, obwohl andere Systeme (einschließlich Personal Computers, PCs, die andere Mikroprozessoren, Arbeitsstationen, PDAs und anderen handgehaltenen Vorrichtungen, Set-Top-Boxen und dergleichen) auch verwendet werden können. Bei einer Ausführungsform kann das Beispielsystem eine Version des WindowsTM-Betriebssystems, das von Microsoft erhältlich ist, ausführen, obwohl auch andere Betriebssysteme und beispielsweise graphische Nutzerschnittstellen verwendet werden können.
  • Unter Bezugnahme auf 4 kann das Beispielverarbeitungssystem 400 ein Speichersystem 490 und einen Prozessor 404 enthalten. Speichersystem 490 kann Anweisungen 241 und Daten 240 zum Steuern des Betriebs eines Prozessors 404 speichern.
  • Speichersystem 490 soll eine verallgemeinerte Darstellung von Speicher sein und kann eine Mehrzahl von Speicherformen enthalten, wie Festplatte, CD-ROM, RAM (Random Access Memory), DRAM (Dynamic Random Access Memory), SRAM (Static Random Access Memory), Flashspeicher und verwandte Schaltungen. Das Speichersystem 490 kann Anweisungen 241 und/oder Daten speichern, die durch Datensignale dargestellt werden, welche von einem Prozessor 404 ausgeführt werden. Die Anweisungen 241 und/oder Daten 240 können einen Code zum Ausführen einer oder aller der hierin erläuterten Techniken enthalten.
  • Während bestimmte Ausführungsformen der vorliegenden Erfindung gezeigt und beschrieben wurden, wird es Fachleuten klar sein, dass Änderungen und Modifikationen vorgenommen werden können, ohne von der vorliegenden Erfindung in ihren weiteren Aspekten abzuweichen. Die oben erläuterten Zählerwerte X, Y, Z1, Z2, M, N, P können als Hochzähl- oder Herunterzähl-Zählerwerte verwendet werden. Jeder solcher Zählwerte kann, muss aber kein unterschiedlicher Wert sein. In mindestens einer Ausführungsform gilt P >> M, P >> N, Z1 > Y, Z2 > Y, P > Z1, P > Z2 und X > Z1. Voreinstellungen für solche Zählerwerte können in der Hardware vorgenommen. In einigen Ausführungsformen können voreingestellte Zählerwerte so programmierbar sein, dass sei beispielsweise durch einen Mikrocode oder andere Firmware oder einen Softwarecode modifiziert werden können.
  • Dementsprechend wird es einem Fachmann klar sein, dass Änderungen und Modifikationen vorgenommen werden können, ohne von dem Schutzumfang der vorliegenden Erfindung in ihren weiteren Aspekten abzuweichen. Die beigefügten Ansprüche sollen in ihrem Umfang daher alle solchen Änderungen und Modifikationen umfassen, welche in den eigentlichen Umfang der vorliegenden Erfindung fallen.

Claims (17)

  1. Simultaneous Multithreading Prozessor mit a) einem Reorder Buffer (464), b) mehreren logischen Prozessoren (150a150n), die jeweils einen Thread (150) gleichzeitig ausführen, c) einer jeweils einem logischen Prozessor (150a) zugeordneten Thread-Livelock-Einheit (165a), d) einem jeweils einem logischen Prozessor (150a) zugeordneten Reorder-Buffer-Abschnitt, e) wobei eine Thread-Livelock-Einheit (165a) eines logischen Prozessors (150a) in einem Anfangszählzustand (504) die Anzahl der Zyklen zählt seit dem Retirement des letzten Befehls im zugeordneten logischen Prozessor (150a) und, wenn kein Vorwärtsfortschritt für eine vorbestimmte Zeitdauer erfolgt, einen Mangel an einem Vorwärtsfortschritt bestimmt und in einen Anhaltedurchsetzungszustand (508) übergeht, in dem das Anhalten der anderen logischen Prozessoren angefordert wird, f) wobei alternativ die Thread-Livelock-Einheit (165a) des logischen Prozessors (150a) direkt in den Anhaltedurchsetzungszustand (508) unter Umgehung des Anfangszählzustandes (504) übergeht, wenn sie bestimmt, dass der ihr zugeordnete Reorder Buffer Abschnitt leer ist.
  2. Prozessor nach Anspruch 1, wobei: die Thread-Livelock-Einheit des logischen Prozessors direkt in den Anhaltedurchset zungszustand unter Umgehung des Anfangszählzustandes übergeht, wenn sie zusätzlich bestimmt, dass ein weiterer logischer Prozessor (150b) der mehreren logischen Prozessoren eine Hochprioritäts-Lock-Operation ausführt, die zum vorherigen Anhalten des logischen Prozessors (150a) geführt hat.
  3. Prozessor nach Anspruch 2, wobei die Thread-Livelock-Einheit (165a) ferner dafür vorgesehen ist, in Reaktion auf ein Bestimmen, dass eine Bedingung länger als eine erste Zeitdauer anhält, eine Priorität für den logischen Prozessor (150a) von einem Vermittler (180) über zumindest den weiteren logischen Prozessor (150b) der mehreren logischen Prozessoren anzufordern.
  4. Prozessor nach Anspruch 3, wobei die Bedingung einen On-Prozessor-Cache-Miss umfasst, und wobei der Vermittler (180) weiter dafür vorgesehen ist, in Reaktion auf ein Empfangen der Prioritätsanforderung von der Thread-Livelock-Einheit, Speicheranforderungen für den logischen Prozessor (150a) eine Priorität zu geben.
  5. Prozessor nach Anspruch 4, wobei eine Speicher-Livelock-Einheit (166) in Reaktion darauf, dass der Vermittler (180) Speicheranforderungen für den logischen Prozessor (150a) Priorität gibt, ausgelöst wird, und wobei nach der Prioritätsanforderung an den Vermittler (180) die Thread-Livelock-Einheit (165a) weiter vorgesehen ist, in Reaktion auf ein Auslösen der Speicher-Livelock-Einheit (166) in einen Wartezustand einzutreten, um der Speicher-Livelock-Einheit (166) eine Bestimmung, ob eine Livelock-Bedingung existiert, zu gestatten.
  6. Prozessor nach Anspruch 5, wobei der Wartezustand eine zweite Zeitdauer aufweist und wobei die Livelock-Einheit weiter dafür vorgesehen ist, in Reaktion auf ein Bestimmen, dass eine Livelock-Bedingung existiert, nach einem Ende der zweiten Zeitdauer, ein Anhalten des weiteren logischen Prozessors (150b) durchzusetzen.
  7. Prozessor nach Anspruch 6, wobei in Reaktion darauf, dass der mit dem logischen Prozessor (150a) assoziierte Reorder-Buffer-Abschnitt nach der zweiten Zeitdauer leer ist, die Thread-Livelock-Einheit (165a) eingerichtet ist, Starvations-Vermeidungsmaßnahmen, ausgewählt aus der folgenden Gruppe von Starvations-Vermeidungsmaßnahmen, durchzuführen: Aufheben des Anhaltens des weiteren logischen Prozessors (150b), Anfordern, dass dem logischen Prozessor (150a) Priorität gegeben wird und Auslösen der Speicher-Livelock-Einheit (166).
  8. Prozessor nach Anspruch 7, wobei: die Thread-Livelock-Einheit des weiteren einen Ausschaltungszustand (nuke state) für den weiteren logischen Prozessor (150b) in Reaktion darauf anfordert, dass der Reorder-Buffer-Abschnitt nach dem Ausführen der Starvations-Vermeidungsmaßnahmen für eine dritte Zeitdauer leer bleibt.
  9. Prozessor nach Anspruch 2, wobei der logische Prozessor (150a) und der weitere logische Prozessor (150b) ein Element jeweils ausgewählt aus einem Element der folgenden Gruppe von Elementen sind: Prozessor, Kern und Thread.
  10. Verfahren, welches in einem Simultaneous Multithreading Prozessor nach einem der vorhergehenden Ansprüche ausgeführt wird, umfassend: in einem Anfangszählzustand, durch eine Thread-Livelock-Einheit eines logischen Prozessors von mehreren logischen Prozessoren (150a150n) des Prozessors, Zählen der Anzahl der Zyklen seit dem Retirement eines letzten Befehls in einem zugeordneten logischen Prozessor; und wenn kein Vorwärtsfortschritt für eine bestimmte Zeitdauer erfolgt, Bestimmen eines Mangels an einem Vorwärtsfortschritt und Übergehen in einen Anhaltedurchsetzungszustand, in dem das Anhalten der anderen logischen Prozessoren (150a150n) angefordert wird; Alternativ, direktes Übergehen der Thread-Livelock-Einheit des logischen Prozessors (150a) in den Anhaltedurchsetzungszustand unter Umgehung des Anfangszählzustands, wenn sie bestimmt, dass der ihr zugeordnete Reorder Buffer Abschnitt leer ist.
  11. Verfahren nach Anspruch 10, welches ferner umfasst: Durchsetzen eines Anhaltevorgangs eines weiteren logischen Prozessors (150b) in Reaktion auf das Bestimmen, dass der logische Prozessor (150a) nicht in der Lage ist, einen Vorwärtsfortschritt bei der Ausführung wenigstens einer Anweisung zu machen; Bestimmen, ob der Anhaltevorgang des weiteren logischen Prozessors (150b) zu einem Vorwärtsfortschritt für den logischen Prozessor (150a) in Reaktion auf das Durchsetzen des Anhaltevorgangs geführt hat; Bestimmen, ob es dem logischen Prozessor (150a) an Anweisungen mangelt in Reaktion auf das Durchsetzen des Anhaltevorgangs; Treffen einer Starvation-Vermeidungsmaßnahm in Reaktion auf das Bestimmen, dass es dem logische Prozessor (150a) an Anweisungen mangelt und dass der Anhaltevorgang nicht zu einem Vorwärtsfortschritt bei dem logischen Prozessor (150a) führte, und Ausgeben eines Abschaltsignals zu zumindest dem weiteren logischen Prozessor (150b) in Reaktion darauf, dass es dem logischen Prozessor (150a) nach dem Treffen der Starvation-Vermeidungsmaßnahmen an Anweisungen mangelt. und.
  12. Verfahren nach Anspruch 11, wobei das Treffen der Starvation-Vermeidungsmaßnahmen ein Aufheben des Anhaltevorgangs des weiteren logischen Prozessors (150b) und ein Erhalten einer Priorität für den logischen Prozessor (150a) für eine Zeitdauer umfasst.
  13. Verfahren nach Anspruch 11, ferner umfassend: Aufheben des Anhaltevorgangs des weiteren logischen Prozessors (150b) in Reaktion auf das Bestimmen, dass es dem logischen Prozessor (150a) nicht an Anweisungen mangelt und dass der Anhaltevorgang nicht zu einem Vorwärtsfortschritt bei dem logischen Prozessor (150a) geführt hat; und Ausgeben des Abschaltsignals zu dem weiteren logischen Prozessor (150b) in Reaktion darauf, dass der logische Prozessor (150a) nach dem Aufheben des Anhaltevorgangs des weiteren logischen Prozessors (150b) keinen Vorwärtsfortschritt für eine Zeitdauer gemacht hat.
  14. Verfahren nach Anspruch 11, wobei Durchsetzen eines Anhaltevorgangs des weiteren logischen Prozessors (150b) ferner in Reaktion auf das Bestimmen geschieht, dass der weitere logische Prozessor (150b) keine Maßnahme zum Vermeiden eines Livelocks vornimmt.
  15. Verfahren nach Anspruch 11, wobei Durchsetzen eines Anhaltevorgangs des weiteren logischen Prozessors (150b) ferner in Reaktion auf das Bestimmen geschieht, dass der weitere logische Prozessor (150b) nicht eine Hochprioritäts-Lock-Operation ausführt.
  16. Verfahren nach Anspruch 11, wobei Durchsetzen eines Anhaltevorgangs des weiteren logischen Prozessors (150b) ferner in Reaktion auf das Bestimmen geschieht, dass der weitere logische Prozessor (150a) keine Hochprioritäts-Lockoperation durchführt.
  17. Verfahren nach Anspruch 11, wobei Durchsetzen eines Anhaltevorgangs des weiteren logischen Prozessors (150b) ferner in Reaktion auf das Bestimmen geschieht, dass der logische Prozessor (150a) unfähig war, mindestens für eine vorbestimmte Zeitdauer einen Vorwärtsfortschritt zu machen.
DE112005002305T 2004-09-23 2005-09-13 Thread-Livelock-Einheit Expired - Fee Related DE112005002305B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/948,878 2004-09-23
US10/948,878 US7748001B2 (en) 2004-09-23 2004-09-23 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
PCT/US2005/033699 WO2006034288A2 (en) 2004-09-23 2005-09-13 Thread livelock unit

Publications (2)

Publication Number Publication Date
DE112005002305T5 DE112005002305T5 (de) 2007-09-06
DE112005002305B4 true DE112005002305B4 (de) 2011-03-17

Family

ID=35997071

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112005002305T Expired - Fee Related DE112005002305B4 (de) 2004-09-23 2005-09-13 Thread-Livelock-Einheit

Country Status (7)

Country Link
US (2) US7748001B2 (de)
JP (1) JP4603583B2 (de)
KR (1) KR100880470B1 (de)
CN (2) CN101334721B (de)
DE (1) DE112005002305B4 (de)
TW (1) TWI298458B (de)
WO (1) WO2006034288A2 (de)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9626194B2 (en) * 2004-09-23 2017-04-18 Intel Corporation Thread livelock unit
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
US7525986B2 (en) * 2004-10-28 2009-04-28 Intel Corporation Starvation prevention scheme for a fixed priority PCI-Express arbiter with grant counters using arbitration pools
US7810083B2 (en) * 2004-12-30 2010-10-05 Intel Corporation Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
US7380038B2 (en) * 2005-02-04 2008-05-27 Microsoft Corporation Priority registers for biasing access to shared resources
WO2007031696A1 (en) * 2005-09-13 2007-03-22 Arm Limited Cache miss detection in a data processing apparatus
US7558946B2 (en) * 2005-12-12 2009-07-07 Intel Corporation Breaking a lock situation in a processor without detection of the lock situation using a multi-level approach
WO2007099273A1 (en) * 2006-03-03 2007-09-07 Arm Limited Monitoring values of signals within an integrated circuit
US20090031082A1 (en) * 2006-03-06 2009-01-29 Simon Andrew Ford Accessing a Cache in a Data Processing Apparatus
JP4557949B2 (ja) * 2006-04-10 2010-10-06 富士通株式会社 資源ブローカリングプログラム、該プログラムを記録した記録媒体、資源ブローカリング装置、および資源ブローカリング方法
US7434033B2 (en) * 2006-04-14 2008-10-07 International Business Machines Corporation Placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline
US7437539B2 (en) * 2006-04-14 2008-10-14 International Business Machines Corporation Issue unit for placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline
CN101443734B (zh) * 2006-05-17 2012-12-05 Nxp股份有限公司 多处理系统以及执行多个数据处理任务的方法
US20080046684A1 (en) * 2006-08-17 2008-02-21 International Business Machines Corporation Multithreaded multicore uniprocessor and a heterogeneous multiprocessor incorporating the same
JP4841358B2 (ja) 2006-08-18 2011-12-21 富士通株式会社 リクエスト送信制御装置およびリクエスト送信制御方法
US7590784B2 (en) * 2006-08-31 2009-09-15 Intel Corporation Detecting and resolving locks in a memory unit
US8276151B2 (en) * 2006-09-06 2012-09-25 International Business Machines Corporation Determination of running status of logical processor
CN100458751C (zh) * 2007-05-10 2009-02-04 忆正存储技术(深圳)有限公司 并行闪存控制器
US8117618B2 (en) * 2007-10-12 2012-02-14 Freescale Semiconductor, Inc. Forward progress mechanism for a multithreaded processor
JP4691153B2 (ja) * 2008-12-10 2011-06-01 富士通株式会社 マルチコアプロセッサ,制御方法および情報処理装置
US8392667B2 (en) * 2008-12-12 2013-03-05 Nvidia Corporation Deadlock avoidance by marking CPU traffic as special
JP5035469B2 (ja) * 2009-03-31 2012-09-26 富士通株式会社 データ転送回路及びデータ転送方法
US8352561B1 (en) 2009-07-24 2013-01-08 Google Inc. Electronic communication reminder technology
US8516577B2 (en) 2010-09-22 2013-08-20 Intel Corporation Regulating atomic memory operations to prevent denial of service attack
US8898434B2 (en) 2011-11-11 2014-11-25 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Optimizing system throughput by automatically altering thread co-execution based on operating system directives
US9323678B2 (en) * 2011-12-30 2016-04-26 Intel Corporation Identifying and prioritizing critical instructions within processor circuitry
US20130332910A1 (en) * 2012-05-22 2013-12-12 Nec Laboratories America, Inc. Dynamic livelock analysis of multi-threaded programs
US9336357B2 (en) 2012-09-28 2016-05-10 Intel Corporation Secure access management of devices
JP6201591B2 (ja) * 2013-09-30 2017-09-27 富士通株式会社 情報処理装置および情報処理装置の制御方法
US9575916B2 (en) 2014-01-06 2017-02-21 International Business Machines Corporation Apparatus and method for identifying performance bottlenecks in pipeline parallel processing environment
US9424160B2 (en) 2014-03-18 2016-08-23 International Business Machines Corporation Detection of data flow bottlenecks and disruptions based on operator timing profiles in a parallel processing environment
US9501377B2 (en) 2014-03-18 2016-11-22 International Business Machines Corporation Generating and implementing data integration job execution design recommendations
US9642787B2 (en) 2014-04-25 2017-05-09 The Procter & Gamble Company Method of inhibiting copper deposition on hair
US9626749B2 (en) 2014-12-10 2017-04-18 Intel Corporation Sub-pixel modification of digital images by locally shifting to an arbitrarily dense supergrid
US10248463B2 (en) * 2015-02-13 2019-04-02 Honeywell International Inc. Apparatus and method for managing a plurality of threads in an operating system
US10496553B2 (en) * 2015-05-01 2019-12-03 Hewlett Packard Enterprise Development Lp Throttled data memory access
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10191747B2 (en) * 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US9766946B2 (en) * 2015-11-11 2017-09-19 International Business Machines Corporation Selecting processor micro-threading mode
TWI597666B (zh) * 2015-12-28 2017-09-01 緯創資通股份有限公司 共享裝置的使用方法及資源共享系統
GB2558076B (en) * 2016-06-20 2019-02-20 Imagination Tech Ltd Livelock detection in a hardware design using formal verification
US10069949B2 (en) 2016-10-14 2018-09-04 Honeywell International Inc. System and method for enabling detection of messages having previously transited network devices in support of loop detection
US9798549B1 (en) 2016-10-31 2017-10-24 International Business Machines Corporation Out-of-order processor that avoids deadlock in processing queues by designating a most favored instruction
US10740102B2 (en) 2017-02-24 2020-08-11 Oracle International Corporation Hardware mechanism to mitigate stalling of a processor core
US10810086B2 (en) 2017-10-19 2020-10-20 Honeywell International Inc. System and method for emulation of enhanced application module redundancy (EAM-R)
US10783026B2 (en) 2018-02-15 2020-09-22 Honeywell International Inc. Apparatus and method for detecting network problems on redundant token bus control network using traffic sensor
JP7301892B2 (ja) 2018-07-02 2023-07-03 ドライブネッツ リミテッド マルチスレッドアプリケーションを実装するシステム
US10831563B2 (en) * 2019-03-19 2020-11-10 International Business Machines Corporation Deadlock resolution between distributed processes using process and aggregated information
CN110083387B (zh) 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 使用轮询机制的处理系统及其访存方法
CN110032453B (zh) 2019-04-19 2022-05-03 上海兆芯集成电路有限公司 用以任务调度与分配的处理系统及其加速方法
CN110058931B (zh) * 2019-04-19 2022-03-22 上海兆芯集成电路有限公司 用以任务调度的处理系统及其加速方法
CN110046053B (zh) 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 用以分配任务的处理系统及其访存方法
US11422849B2 (en) * 2019-08-22 2022-08-23 Intel Corporation Technology for dynamically grouping threads for energy efficiency
CN112187581B (zh) 2020-09-29 2022-08-02 北京百度网讯科技有限公司 服务信息处理方法、装置、设备及计算机存储介质
CN115408153B (zh) * 2022-08-26 2023-06-30 海光信息技术股份有限公司 多线程处理器的指令分发方法、装置和存储介质

Citations (1)

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

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US621254A (en) 1899-03-14 Track-sight
JP3760035B2 (ja) * 1996-08-27 2006-03-29 松下電器産業株式会社 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ
JPH10111828A (ja) * 1996-09-27 1998-04-28 Internatl Business Mach Corp <Ibm> メモリシステム、データ転送方法
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
WO1999019805A1 (en) * 1997-10-10 1999-04-22 Rambus Incorporated Method and apparatus for two step memory write operations
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6216178B1 (en) * 1998-11-16 2001-04-10 Infineon Technologies Ag Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6543002B1 (en) * 1999-11-04 2003-04-01 International Business Machines Corporation Recovery from hang condition in a microprocessor
US6898617B2 (en) * 1999-11-18 2005-05-24 International Business Machines Corporation Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations by dynamically altering eligible thread pools
US6618825B1 (en) * 2000-04-20 2003-09-09 Hewlett Packard Development Company, L.P. Hierarchy of fault isolation timers
US7024509B2 (en) * 2000-08-31 2006-04-04 Hewlett-Packard Development Company, L.P. Passive release avoidance technique
US6880073B2 (en) * 2000-12-28 2005-04-12 International Business Machines Corporation Speculative execution of instructions and processes before completion of preceding barrier operations
US7401211B2 (en) 2000-12-29 2008-07-15 Intel Corporation Method for converting pipeline stalls caused by instructions with long latency memory accesses to pipeline flushes in a multithreaded processor
US6651158B2 (en) 2001-06-22 2003-11-18 Intel Corporation Determination of approaching instruction starvation of threads based on a plurality of conditions
US7454600B2 (en) * 2001-06-22 2008-11-18 Intel Corporation Method and apparatus for assigning thread priority in a processor or the like
US7248585B2 (en) * 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
US6968431B2 (en) * 2001-11-15 2005-11-22 International Business Machines Corporation Method and apparatus for livelock prevention in a multiprocessor system
US7065596B2 (en) * 2002-09-19 2006-06-20 Intel Corporation Method and apparatus to resolve instruction starvation
US7000047B2 (en) * 2003-04-23 2006-02-14 International Business Machines Corporation Mechanism for effectively handling livelocks in a simultaneous multithreading processor
US20040216103A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Mechanism for detecting and handling a starvation of a thread in a multithreading processor environment
US7401207B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
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
US7437539B2 (en) * 2006-04-14 2008-10-14 International Business Machines Corporation Issue unit for placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline
US7434033B2 (en) * 2006-04-14 2008-10-07 International Business Machines Corporation Placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline

Patent Citations (1)

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

Also Published As

Publication number Publication date
WO2006034288A2 (en) 2006-03-30
JP2008513894A (ja) 2008-05-01
US20100229172A1 (en) 2010-09-09
US7748001B2 (en) 2010-06-29
US20060064695A1 (en) 2006-03-23
CN101334721A (zh) 2008-12-31
WO2006034288A3 (en) 2006-11-23
CN101031877B (zh) 2010-05-05
CN101031877A (zh) 2007-09-05
KR20070055554A (ko) 2007-05-30
US8276149B2 (en) 2012-09-25
CN101334721B (zh) 2013-06-19
DE112005002305T5 (de) 2007-09-06
JP4603583B2 (ja) 2010-12-22
KR100880470B1 (ko) 2009-01-28
TW200632740A (en) 2006-09-16
TWI298458B (en) 2008-07-01

Similar Documents

Publication Publication Date Title
DE112005002305B4 (de) Thread-Livelock-Einheit
DE69721961T2 (de) Mikroprozessor mit einem Nachschreibcachespeicher
DE60038693T2 (de) Verfahren und vorrichtung zur ausschaltung eines taktsignals in einem vielfadenprozessor
DE10297596B4 (de) Verfahren und Vorrichtung zum Suspendieren der Ausführung eines Threads, bis ein spezifizierter Speicherzugriff auftritt
DE112004002296B4 (de) Anwenderprogrammierbares Multithreading mit geringem Overhead
DE60210633T2 (de) Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung
DE10085363B4 (de) Verfahren und Einrichtung zum Verwalten von Ressourcen in einem Multithreaded-Prozessor
DE112010003330B4 (de) Einrichten von Prüfpunkten bei Cachespeichern für die spekulative Versionierung
DE60029619T2 (de) Verfahren, vorrichtung, medium und programm zur aufnahme und zum verlassen von mehreren fäden in einem vielfadenprozessor
DE60032481T2 (de) Verfahren und vorrichtung zur threadumschaltung in einem multithreadprozessor
DE112005000706B4 (de) Verfahren und System zum Bereitstellen von Multi-Threading auf Nutzerebene
DE69908193T2 (de) Ausführung von speicher- und ladeoperationen mittels einer linkdatei
DE102008062692B4 (de) Eingebettetes Mikrocontrollersystem und Verfahren zur Konfiguration eines eingebetteten Mikrocontrollersystems mit gesteuertem Schaltmodus
DE112011105042B4 (de) Indikatoren zur Aufzeichnung einer letzten Verzweigung für einen Transaktionsspeicher
DE112005002173B4 (de) Prozessor mit Abhängigkeitsmechanismus, um vorherzusagen, ob ein Ladevorgang von einem älteren Schreibvorgang abhängig ist
DE112006001698T5 (de) Grundfunktionen zum Verbessern von Thread-Level Spekulation
DE102013214756B4 (de) Verfahren zum verwalten einer task-ausführung in einem mehrkernprozessor
DE112004001133T5 (de) Warteschlangen-Sperren mit Monitor-Memory-Wait
DE112005001515T5 (de) Verfahren und Vorrichtung zur spekulativen Ausführung von nicht kollisionsbehafteten Sperrbefehlen
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE112004002267T5 (de) Ruhezustandsmechansimus für virtuelles Multithreading
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE112011100715T5 (de) Hardware-hilfs-thread
DE112008003457T5 (de) Mechanismus zum operativen Analysieren von Programmsoftware, die auf einem Prozessor abgearbeitet wird
DE102010052680A1 (de) Ein Befehl, um einen Prozessor-Wartezustand zu ermöglichen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R020 Patent grant now final

Effective date: 20110703

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee