DE60115982T2 - Verfahren und Vorrichtung zum Zuordnen funktioneller Einheiten in einem Mehrfachthread-VLIM-Prozessor - Google Patents

Verfahren und Vorrichtung zum Zuordnen funktioneller Einheiten in einem Mehrfachthread-VLIM-Prozessor Download PDF

Info

Publication number
DE60115982T2
DE60115982T2 DE60115982T DE60115982T DE60115982T2 DE 60115982 T2 DE60115982 T2 DE 60115982T2 DE 60115982 T DE60115982 T DE 60115982T DE 60115982 T DE60115982 T DE 60115982T DE 60115982 T2 DE60115982 T2 DE 60115982T2
Authority
DE
Germany
Prior art keywords
thread
functional units
commands
instructions
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60115982T
Other languages
English (en)
Other versions
DE60115982D1 (de
Inventor
Alan David Berenbaum
Nevin Heintze
Tor E. Jeremiassen
Stefanos Kaxiras
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.)
Agere Systems LLC
Original Assignee
Agere Systems Guardian 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 Agere Systems Guardian Corp filed Critical Agere Systems Guardian Corp
Application granted granted Critical
Publication of DE60115982D1 publication Critical patent/DE60115982D1/de
Publication of DE60115982T2 publication Critical patent/DE60115982T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Description

  • Gebiet der Erfindung
  • Die Erfindung betrifft allgemein Mehrfachthread-Prozessoren (multithreaded processors), insbesondere ein Verfahren und eine Vorrichtung zum Zuordnen funktioneller Einheiten in derartigen Mehrfachthread-Prozessoren.
  • Hintergrund der Erfindung
  • Computerarchitekturen versuchen, Arbeiten rascher zu beenden. Eine Reihe von Architekturen wurde zur Ausnutzung von Programm-Parallelismus vorgeschlagen oder angeregt. Im Allgemeinen ist eine Architektur, die mehr als eine Operation zu einer Zeit ausführen kann, in der Lage, ein Programm schneller auszuführen als eine Architektur, die zu einer Zeit nur eine Operation ausführen kann. Die jüngsten Fortschritte auf dem Gebiet der Computerarchitektur betrafen Verfahren zum Ausführen von mehr als einer Operation zu einer Zeit, um dadurch die Programmoperationen zu beschleunigen. 1 zeigt eine konventionelle Mikroprozessor-Architektur 100. Der Mikroprozessor 100 enthält insbesondere einen Befehlszähler (PC) 110, einen Registersatz 120 und eine Anzahl von funktionellen Einheiten (FUs) 130-N. Die redundanten funktionellen Einheiten (FUs) 130-1 bis 130-N bilden die beispielhafte Mikroprozessor-Architektur 100 mit ausreichenden Hardware-Ressourcen zur Durchführung einer entsprechenden Anzahl von Operationen in paralleler Weise.
  • Eine Architektur, die Parallelismus in einem Programm ausnutzt, liefert Operanden an mehr als eine funktionelle Einheit zu einer gegebenen Zeit, um die Programmausführung zu beschleunigen. Es wurde eine Reihe von Architekturen vorgeschlagen oder angeregt, die eine Parallel-Architektur aufweisen, darunter sogenannte Superskala-Prozessoren, VLIW-Prozessoren, das sind Prozessoren für sehr lange Befehlswörter (very long instruction word) sowie Mehrfachthread- Prozessoren, die im Folgenden jeweils in Verbindung mit den 2, 4 bzw. 5 erläutert werden. Im Allgemeinen verwendet ein Superskalar-Prozessor Hardware während der Laufzeit, um dynamisch festzustellen, ob die Anzahl von Operationen aus einem einzigen Befehlsstrom unabhängig sind, und wenn dies so ist, führt der Prozessor die Befehle mit Hilfe paralleler arithmetisch-logischer Einheiten (ALUs) aus. Zwei Befehle werden dann unabhängig genannt, wenn keiner der Quell-Operanden von den Zieloperanden irgendeines Befehls abhängt, der ihnen vorausgeht. Ein Prozessor für sehr lange Befehlswörter (VLIW) wertet die Befehle während der Kompilierung aus und gruppiert die Operationen in passender Weise zur parallelen Ausführung, basierend auf Abhängigkeitsinformation. Ein Multithread-Prozessor hingegen führt mehr als einen Befehlsstrom parallel aus, anstatt den Versuch zu unternehmen, Parallelismus innerhalb eines einzelnen Befehlsstroms zu nutzen.
  • Eine in 2 dargestellte Superskalar-Prozessorarchitektur 200 besitzt eine Anzahl funktioneller Einheiten, die unabhängig arbeiten, soweit jede von ihnen mit zulässigen Daten versorgt wird. Beispielsweise besitzt gemäß 2 der Superskalar-Prozessor 200 drei funktionelle Einheiten, die als arithmetisch-logische Einheiten (ALUs) 230-N ausgeführt sind, und die jeweils gleichzeitig ein Resultat berechnen können. Der Superskalar-Prozessor 200 enthält neben einem Eingangsteil 208 mit einem Befehls-Hol-Block 210 einen Befehls-Dekodier-Block 215 und eine Befehlsablaufsteuerung 220 (Ausgabeblock). Der Befehls-Hol-Block 210 holt Befehle aus einer Eingangsschlange 205 eines Einzelthread-Befehlsstroms. Die Befehlsablaufsteuerung 220 identifiziert unabhängige Befehle, die sich simultan in den verfügbaren arithmetisch-logischen Einheiten (ALUs) 230-N in an sich bekannter Weise ausführen lassen. Der Refine-Block 250 ermöglicht eine Beendigung der Befehle und sorgt auch für eine Pufferung und eine Neuordnung der Schreibresultate beim Zurückschreiben in den Registersatz 240.
  • In dem in 3 dargestellten Programmfragment 310 sind Befehle in Stellen L1, L2 und L3 unabhängig, da keiner der Quelloperanden der Befehle L2 und L3 von den Zieloperanden irgendeines Befehls abhängt, der ihnen vorausgeht. Wenn der Befehlszähler (PC) auf die Stelle L1 gesetzt ist, schaut die Befehlsablaufsteuerung 220 in dem Befehlsstrom nach vorn und stellt fest, dass die Befehle L2 und L3 unabhängig sind, so dass alle drei gleichzeitig an die drei verfügbaren funktionellen Einheiten 230-N ausgegeben werden können. Bezüglich einer detaillierteren Diskussion von Superskalar-Prozessoren wird beispielsweise verwiesen auf James E. Smith und Gurindar, S. Sohi, "The Microarchitecture of Superscalar Processors" Proc. of the IEEE (Dec. 1995).
  • Wie bereits angesprochen, beruht ein Prozessor 400 für sehr lange Befehlswörter, wie er in 4 gezeigt ist, auf Software zum Nachweisen von Daten-Parallelismus während der Kompilierungszeit aus einem einzigen Befehlsstrom, anstatt mit Hilfe von Hardware dynamisch Parallelismus in der Laufzeit nachzuweisen. Ein VLIW-Compiler würde, wenn ihm der Quellcoder angeboten wird, der zum Generieren des Code-Fragments 310 in 3 benutzt wurde, die Befehlsunabhängigkeit nachweisen und einen einzigen, sehr langen Befehl aufbauen, welcher sämtliche drei Operationen umfasst. Während der Laufzeit würde die Ausgabelogik des Prozessors 400 diesen breiten Befehl innerhalb von einem Zyklus ausgeben, um Daten in Richtung sämtlicher verfügbaren funktionellen Einheiten 430-N zu leiten. Wie in 4 dargestellt ist, enthält ein Prozessor 400 für sehr lange Befehlswörter einen integrierten Hol-/Dekodier-Block 420, der die zuvor gruppierten Befehle 410 aus dem Speicher holt. Bezüglich einer detaillierteren Diskussion von Prozessoren für sehr lange Befehlswörter sei beispielsweise verwiesen auf Burton J. Smith "Architecture and Applications of the HEP Multiprocessor Computer System", SPIE Real Time Signal Processing IV, 241–248 (1981).
  • Eine Variante von VLIW-Prozessoren, beispielsweise repräsentiert durch die Multiflow-Architektur, diskutiert in Robert P. Colwell et al., "A VLIW Architecture for a Trace Scheduling Compiler", IEEE Transactions on Computers (August 1988) verwendet einen Befehl fester Breite, in welchem Felder vordefiniert sind, die Daten mit einem Mal zu sämtlichen funktionellen Einheiten 430-N lenken. Wenn sämtliche in dem breiten Befehl spezifizierten Operationen abgeschlossen sind, gibt der Prozessor einen neuen, mehrere Operationen umfassenden Befehl aus. Einige jüngere VLIW-Prozessoren, so zum Beispiel der C6x-Prozessor von Texas Instruments, Dallas, TX und der EPIC IA-64-Prozessor von Intel Corporation in Santa Clara, CA, machen stattdessen von einem Befehlspaket variabler Länge Gebrauch, welches eine oder mehrere Operationen in gebündelter Weise beinhaltet.
  • Ein Mehrfachthread-Prozessor 500, wie er in 5 dargestellt ist, erzielt Leistungsverbesserungen dadurch, dass er mehr als einen Befehlsstrom parallel ausführt, anstatt den Versuch zu unternehmen, Parallelismus innerhalb eines einzelnen Befehlsstroms zu nutzen. Der Multithread-Prozessor 500 nach 5 enthält einen Befehlszähler 510-N, einen Registersatz 520-N und eine funktionelle Einheit 530-N, jeweils einen entsprechenden Befehlsstrom N zugeordnet. Alternative Implementierungen des Mehrfachthread-Prozessors 500 haben von einer einzelnen funktionellen Einheit 530 Gebrauch gemacht, zusätzlich zu mehreren Registersätzen 520-N und Befehlszählern 510-N. Derartige, alternative Mehrfachthread-Prozessoren 500 sind in der Weise ausgelegt, dass der Prozessor 500 eine Befehlsausgabe von einem Befehlszähler/Registersatz 510-N/520-N zu einem anderen Befehlszähler/Registersatz 510-N/520-N innerhalb von einem oder zwei Zyklen umschalten kann. Ein Befehl mit langer Latenz, so zum Beispiel ein Ladebefehl (LOAD), kann sich damit überlappen mit kürzeren Operationen aus anderen Befehlsströmen. Die TERA-MTA-Architektur von der Firma Tera Computer Company, Seattle, WA, ist ein Beispiel für diesen Typ.
  • Eine Erweiterung der Mehrfachthread-Architektur 500, bezeichnet als Simultan-Mehrfachthreading, kombiniert die Superskalar-Architektur, die oben in Verbindung mit der 2 diskutiert wurde, mit Mehrfachthread-Entwürfen, die oben in Verbindung mit 5 diskutiert wurden. Bezüglich einer detaillierteren Diskussion von Simultan-Mehrfachthreading-Methoden sei beispielsweise verwiesen auf Dean Tullsun et al., "Silmultaneous Multithreading: Maximizing in-Chip Parallelism", Proc. of the 22nd Annual Int'l Symposium on Computer Architecture, 392–403 (Santa Margherita Ligure, Italy, June 1995). Allgemein ist anzumerken, dass bei einer Simultan-Mehrfachthreading-Architektur ein Pool von funktionellen Einheiten vorhanden ist, aus dem eine beliebige Anzahl dynamisch einem Befehl zuordbar ist, der aus irgendeinem aus einer Anzahl von Befehlszähler-/Registersatz-Strukturen stammen kann. Durch gemeinsames Verwenden der funktionellen Einheiten aus der Anzahl von Programm-Threads kann die Simultan-Mehrfachthreading-Architektur eine effizientere Nutzung der Hardware erreichen, als sie in 5 dargestellt ist.
  • Während die kombinierte Vorgehensweise in der Simultan-Mehrfachthreading-Architektur einer verbesserte Effizienz gegenüber individuellen Methoden der Superskalar-Architektur oder der Mehrfachthread-Architektur erreicht, erfordern Simultan-Mehrfachthread-Architekturen immer noch eine ausgeklügelte Ausgabelogik zum dynamischen Untersuchen von Befehlsströmen, um möglichen Parallelismus aufzuspüren. Deshalb besteht Bedarf an einer Mehrfachthread-Prozessorarchitektur, die keine dynamische Ermittlung, ob zwei Befehlsströme unabhängig sind oder nicht, erfordert. Ein weiterer Bedarf betrifft eine Mehrfachthread-Architektur, die Simultan-Mehrfachthreading ermöglicht. Ein noch weiterer Bedarf betrifft eine Mehrfachthread-Architektur, welche funktionelle Einheiten in solchen Mehrfachthread-Prozessoren auf Echtzeitbasis zuordnet.
  • Mombers F et al: "A multithreaded mutlimedia processor merging onchip multiprocessort and distributed vector pipelines", Circuits and Systems, 1999, ISCAS '99; proceeding of the 1999 IEEE International Symposium on Orlando, FI, USA 30 May–2 June 1999, Piscataway, NJ, USA, IEEE, US, 30 May 1999 (1999-05-30), Seiten 287–290, XP010341240 ISBN: 0-7803-5471-0 zeigt eine Ausgestaltung, bei dem jeder Prozessor ein Array von fünf Clustern aus drei funktionellen Einheiten enthält, die mit 32-Bit-Operanden arbeiten. Damit ist jede funktionelle Einheit speziell für die Ausführung spezieller Arten von Befehlen ausgerichtet.
  • Bekerman M et al: "Performance and hardware complexitiy tradeoffs in designing multithreaded architectures" Parallel Architecture and Compilation Techniques, 1996, Proceedings of the 1996 Conference on Boston, MA, USA 20–23 Oct. 1996, Los Alamitos, CA, USA, IEEE Comput. Soc, US, 20 October 1996 (1996-10-20), pages 24–34, XP010199377 ISBN: 0-8186-7632-9 zeigt, dass, wenn Befehle aus mehr als einem einzigen Thread einen speziellen Typ einer funktionellen Einheit erfordern, die freien funktionellen Einheiten zunächst Befehlen zugeordnet werden, die aus Threads mit höherer Priorität kommen. Damit ist jede funktionelle Einheit für die Ausführung spezieller Befehlsarten ausgerichtet.
  • Erfindungsgemäß wird ein Mehrfachthread-Prozessor für sehr lange Befehlswörter gemäß Anspruch 1 oder ein Verfahren zum Verarbeiten von Befehlen aus einem Mehrfachthread-Befehlsstrom oder ein Gegenstand zum Verarbeiten von Befehlen aus einem Mehrfachthread-Befehlsstrom gemäß Anspruch 15 geschaffen.
  • Offenbarung der Erfindung
  • Allgemein sind ein Verfahren und eine Vorrichtung zum Zuordnen funktioneller Einheiten in einem Mehrfachthread-Prozessor für sehr lange Befehlswörter offenbart. Die vorliegende Erfindung kombiniert die Methoden herkömmlicher Architekturen für sehr lange Befehlswörter mit herkömmlichen Mehrfachthread-Architekturen. Die erfindungsgemäße Kombinations-Architektur verringert die Ausführungszeit in einem individuellen Programm ebenso wie in Bezug auf eine Arbeitsbelastung.
  • Die vorliegende Erfindung nutzt einen Compiler zum Erkennen von Parallelismus in einer Mehrfachthread-Prozessorarchitektur. Damit wird eine Mehrfachthread-VLIW-Architektur offenbart, die Programm-Parallelismus durch Ausgabe von Mehrfachbefehlen ausnutzt, ähnlich wie Einzelthread-VLIW-Prozessoren, anhand einer einzelnen Programmablaufsteuerung, wobei außerdem Mehrfachprogramm-Ablaufsteuerungen, beispielsweise in Verbindung mit Simultan-Mehrfachthreading unterstützt werden, allerdings bei verringerter Komplexität der Ausgabelogik, da eine dynamische Ermittlung nicht erforderlich ist.
  • Die vorliegende Erfindung weist Befehle funktionellen Einheiten zu, so dass mehrere VLIW-Befehle innerhalb ein und desselben Zyklus an mehrere funktionelle Einheiten ausgegeben werden. Der Zuordnungsmechanismus gemäß der Erfindung belegt ein Pipeline-Stadium, bevor Argumente an funktionelle Einheiten abgesendet werden. Im Allgemeinen ermittelt die Zuordnungs-Stufe, wie die Befehle zur Maximierung der Effizienz gruppiert werden sollen, indem geeignete Befehle basierend auf Thread-Prioritäten oder Betriebsmittelverfügbarkeit oder beiden Kriterien ausgewählt und die Befehle den funktionellen Einheiten zugewiesen werden.
  • Die Zuordnungs-Stufe wählt die passenden M Befehle für die Ausführung aus den (bis zu) N·K Befehlen aus, die innerhalb der Pipeline geholt und dekodiert werden. Die Kriterien für die Befehlsauswahl sind Thread-Priorität oder Betriebs mittelverfügbarkeit oder beide. Unter den Thread-Priotitäts-Kriterien können verschiedene Threads unterschiedliche Prioritäten haben. Die Zuordnungsstufe wählt Paket (oder Instruktionen aus Paketen) für die Ausführung aus, die zu dem Thread mit der höchsten Priorität gehören, abhängig von der implementierten Prioritätsstrategie. Nach den Kriterien der Betriebsmittelverfügbarkeit kann ein Paket (mit bis zu K Befehlen) nur dann zugewiesen werden, wenn die Betriebsmittel (so zum Beispiel funktionelle Einheiten), die von dem Paket benötigt werden, im nächsten Zyklus zur Verfügung stehen. Funktionelle Einheiten berichten ihre Verfügbarkeit an die Zuordnungsstufe.
  • Ein umfassenderes Verständnis der Erfindung sowie weitere Merkmale und Vorteile der Erfindung ergeben sich durch Bezugnahme auf die nachfolgende detaillierte Beschreibung und die Zeichnungen.
  • Kurze Beschreibung der Zeichnungen
  • 1 zeigt eine herkömmliche verallgemeinerte Mikroprozessorarchitektur;
  • 2 ist ein schematisches Blockdiagramm einer herkömmlichen Superskalar-Prozessorarchitektur;
  • 3 ist ein Programmfragment, welches die Unabhängigkeit von Operationen veranschaulicht;
  • 4 ist ein schematisches Blockdiagramm einer herkömmlichen Prozessorarchitektur für sehr lange Befehlswörter (VLIW);
  • 5 ist ein schematisches Blockdiagramm eines herkömmlichen Mehrfachthread-Prozessors;
  • 6 veranschaulicht einen Mehrfachthread-VLIW-Prozessor gemäß der Erfindung;
  • 7A zeigt eine herkömmliche Pipeline für einen Mehrfachthread-Prozessor;
  • 7B zeigt ein Pipeline für einen Mehrfachthread-Prozessor gemäß der Erfindung; und
  • 8 ist ein schematisches Blockdiagramm einer Implementierung für die Zuordnungsstufe nach 7B.
  • Detaillierte Beschreibung
  • 6 zeigt einen Mehrfachthread-VLIW-Prozessor 600 gemäß der Erfindung. Wie in 6 gezeigt ist, gibt es drei Befehlsthreads, nämlich den Thread A (TA), den Thread B (TB) und den Thread C (TC), die jeweils bei dem Befehl Nummer n arbeiten. Darüber hinaus enthält der beispielhafte Mehrfachthread-VLIW-Prozessor 600 neun funktionelle Einheiten 620-1 bis 620-9, die unabhängig irgendeinem Thread TA-TC zugeordnet werden können. Da die Anzahl von Befehlen über die beispielhaften drei Threads TA-TC hinweg neun beträgt und die beispielhafte Anzahl verfügbarer funktioneller Einheiten 620 ebenfalls neun beträgt, kann jeder der Befehle von sämtlichen drei Threads TA-TC die Befehlspakete in einem Zyklus ausgeben und zu dem Befehl n-1 des nachfolgenden Zyklus weitergeben.
  • Es sei hier angemerkt, dass es allgemein eine Eins-zu-eins-Entsprechung zwischen Befehlen und die dadurch spezifizierte Operation gibt. Damit werden solche Terme hier austauschbar verwendet. Es sei ferner angemerkt, dass in der Situation, in der ein Befehl mehrere Operationen spezifiziert, davon ausgegangen wird, dass der Mehrfachthread-VLIW-Prozessor 600 eine oder mehrere funktionelle Mehrfachoperationseinheiten 620 zum Ausführen des mehrere Operationen spezifizierenden Befehls enthält. Ein Beispiel für eine Archtitektur, bei der mehrere Operationen spezifizierende Befehle verarbeitet werden können, ist der Computer mit komplexem Befehlssatz (CISC; complex instruction set computer).
  • Die vorliegende Erfindung ordnet Befehle funktionellen Einheiten zu, um Mehrfach-VLIW-Befehle innerhalb desselben Zyklus an mehrere funktionelle Einheiten auszugeben. Der Zuordnungsmechanismus der vorliegenden Erfindung belegt eine Pipelinestufe direkt vor dem Abschicken von Argumenten an funktionelle Einheiten. Dementsprechend veranschaulicht 7A eine herkömmliche Pi peline 700, bestehend aus einer Stufe "Holen" 710, in der aus dem Speicher ein Paket geholt wird, einer Stufe "Dekodieren" 720, in der die erforderlichen funktionellen Einheiten und Register für die geholten Befehle identifiziert werden, und eine Stufe "Ausführen" 730, in der die spezifizierten Operationen ausgeführt und die Ergebnisse verarbeitet werden.
  • In einer herkömmlichen VLIW-Architektur wird also ein bis zu K Befehle enthaltendes Paket in jedem Zyklus geholt (in der Holstufe 710). Es werden bis zu K Befehle in der Dekodierstufe 720 dekodiert und ein (bis zu) K funktionelle Einheiten (FUs) gesendet. Die den Befehlen entsprechenden Register werden gelesen, die funktionellen Einheiten bearbeiten die Werte, und die Resultate werden zurück in die Register geschrieben, was in der Ausführungsstufe 730 geschieht. Dabei wird angenommen, dass pro funktioneller Einheit bis zu drei Register gelesen und bis zu einem Register beschrieben werden kann.
  • 7B zeigt eine Pipeline 750 gemäß der Erfindung, bei der eine Zuordnungsstufe 780, die unten in Verbindung mit 8 näher erläutert wird, zwecks Implementierung von Mehrfachthread-VLIW-Prozessoren hinzugefügt ist. Grundsätzlich bestimmt die Zuordnungsstufe 780, wie die Operationen gemeinsam gruppiert werden müssen, um die Effizienz zu maximieren. Somit enthält die Pipeline 750 eine Holstufe 760, in der bis zu N Pakete aus dem Speicher geholt werden, eine Dekodierstufe 770, in der die funktionellen Einheiten und Register für die geholten Befehle identifiziert werden (bis zu N·K Befehle), eine Zuordnugnsstufe 780, in der die passenden Befehle ausgewählt und den FUs zugeordnet werden, und eine Ausführungsstufe 790, in der die spezifizierten Operationen ausgeführt und die Ergebnisse verarbeitet werden.
  • In dem Mehrfachthread-VLIW-Prozessor 600 gemäß der Erfindung werden bis zu N Threads hardwaremäßig unterstützt. N-Thread-Kontexte existieren und enthalten sämtliche möglichen Register eines einzelnen Threads und die gesamte benötigte Statusinformation. Ein Mehrfachthread-VLIW-Prozessor 600 besitzt M funktionelle Einheiten, wobei M größer oder gleich groß K ist. Die modifizierte Pipelinestufe 750, die in 7B gezeigt ist, arbeitet folgendermaßen: In jedem Zyklus werden bis zu N Pakete, (die jeweils bis zu K Befehle enthalten) im Zuge der Holstufe 760 geholt. Die Dekodierstufe 770 dekodiert bis zu N·K Befehle und bestimmt deren Anforderungen und zu lesende und zu beschreibende Register. Die Zuordnungsstufe 780 wählt M Befehle aus den (bis zu) N·K Befehlen aus und gibt sie an die M funktionellen Einheiten. Es wird davon ausgegangen, dass jede funktionelle Einheit bis zu drei Register lesen und ein Register beschreiben kann. In der Ausführungsstufe 790 lesen bis zu M funktionelle Einheiten bis zu 3·M Register und beschreiben bis zu M Register.
  • Die Zuordnungsstufe 780 wählt für die Ausführung die passenden M Befehle aus den (bis zu) N·K Befehlen aus, die in den Stufen 760 und 770 geholt und dekodiert wurden. Die Kriterien für die Auswahl sind die Thread-Priorität oder die Betriebsmittelverfügbarkeit oder beide. Unter den Thread-Prioritäts-Kriterien können unterschiedliche Threads unterschiedliche Prioritäten besitzen. Die Zuordnungsstufe 780 wählt die Pakete (oder Befehle aus den Paketen) für die Ausführung aus, die zu dem Thread mit der höchsten Priorität gemäß der implementierten Piroritätsstrategie gehören. Es lässt sich eine Mehrzahl von Prioritätsstrategien implentieren. Beispielsweise kann eine Prioritätsstrategie für einen N Kontexte (N Hardware-Threads) aufweisenden Mehrfachthread-VLIW-Prozessor N Prioritätsstufen haben. Der Thread mit der höchsten Priorität in dem Prozessor erhält eine Zuordnung vor jedem anderen Thread. Unter Threads gleicher Priorität wird derjenige bevorzugt, der am längsten auf eine Zuordnung gewartet hat.
  • Unter den Kriterien der Betriebsmittelverfügbarkeit lässt sich ein Paket mit (bis zu K Befehlen) nur dann zuordnen, wenn die Betriebsmittel (funktionelle Einheiten), die von dem Paket angefordert werden, für den nächsten Zyklus verfügbar sind. Funktionelle Einheiten berichten über ihre Verfügbarkeit an die Zuordnungsstufe 780.
  • 8 zeigt ein schematisches Blockdiagramm einer Implementierung der Zuordungsstufe 780. Wie in 8 gezeigt ist, enthält die zu implementierende Zuordnungsstufe 780 benötigte Hardware einen Prioritätskodierer 810 und zwei Crossbar-Schalter 820, 830. Im Allgemeinen untersucht der Prioritätskodierer 810 den Zustand der Mehrfachoperationen in jedem Thread ebenso wie den Zustand der verfügbaren funktionellen Einheiten. Der Prioritätskodierer 810 wählt die zur Ausführung gehenden Pakete aus und stellt den ersten Crossbar-Schalter 820 so ein, dass die Inhalte der passenden Register zu Beginn des nächsten Zyklus an die funktionellen Einheiten übertragen werden. Das Ausgangssignal des Prioritätskodierers 810 konfiguriert den ersten Crossbar-Schalter 820, um Daten aus den ausgewählten Threads zu den passenden funktionellen Einheiten zu leiten. Dies kann beispielsweise dadurch geschehen, dass die Registerkennungen (die eine Thread-Kennung beinhalten) an die funktionellen Einheiten senden und die funktionellen Einheiten die Registerinhalte über ein getrenntes Datennetzwerk lesen lassen, wobei der Crossbar-Schalter 810 dazu verwendet wird, die passenden Registerinhalte in Zwischenspeicher zu übertragen, die von den funktionellen Einheiten zu Beginn des nächsten Zyklus gelesen werden.
  • Von den seitens der Holstufe 760 (7B) geholten N Paketen wählt der Prioritätskodierer 810 bis zu N Pakete zur Ausführung abhängig von der Priorität und der Betriebsmittelverfügbarkeit aus. In anderen Worten: Der Prioritätskodierer wählt die Threads mit höchster Priorität, die keine nicht verfügbaren Betriebsmittel anfordern, für die Ausführung aus. Dann stellt er den ersten Crossbar-Schalter 810 ein. Die Eingangssignale des Crossbar-Schalters 810 leiten bis zu 3 K·N Eingangssignale zu bis zu 3·M Ausgängen. Der erste Crossbar-Schalter 810 hat die Fähigkeit, die Registerkennungen (oder die Inhalte der passenden Register) jedes Pakets zu den passenden funktionellen Einheiten zu leiten.
  • Da es bis zu N Threads gibt, die im selben Zyklus ausgewählt werden können, und jeder Thread ein Paket von bis zu K Befehlen ausgeben kann, wobei jeder Befehl bis zu 3 Register lesen kann, so gibt es für die Auswahl 3 K·N Registerkennungen. Da es nur M funktionelle Einheiten gibt und jede funktionelle Einheit einen einzigen Befehl akzeptieren kann, gibt es nur 3 M Registerkennungen, die zur Auswahl stehen. Aus diesem Grund implementiert der Crossbar-Schalter eine 3 K·N-zu-3M-Leitung von Registerkennungen (oder Registerinhalten).
  • Der Ausgangs-Crossbar-Schalter 830 leitet M Eingänge an N·M oder N·K Ausgänge. Der zweite Crossbar-Schalter 830 wird zur passenden Zeit eingerichtet, um die Ergebnisse von den funktionellen Einheiten zu den passenden Registern zurückzuführen. Der zweite Crossbar-Schalter 830 lässt sich implementieren als getrenntes Netzwerk, indem die Registerkennungen (die eine Thread-Kennung enthalten) zu den funktionellen Einheiten gesendet werden. Wenn eine funktionelle Einheit ein Ergebnis errechnet, leitet sie das Ergebnis zu einer gege benen Registerkennung. Es gibt M Ergebnisse, die bis zu N Threads geleitet werden müssen. Jeder Thread kann bis zu K Ergebnisse akzeptieren. Der zweite Crossbar-Schalter 830 leitet M Ergebnisse zu N·K möglichen Zielen. Der zweite Crossbar-Schalter 830 lässt sich implementieren in der Form von M Bussen, die sämtliche N Registerdateien verbinden. In diesem Fall werden M Ergebnisse zu N·M möglichen Zielen geleitet (wenn die Registerdateien in der Lage sind, M Ergebnisse zu akzeptieren).
  • Es versteht sich, dass die Ausführungsformen und ihre Abwandlungen, die oben dargestellt und beschrieben wurden, lediglich beispielhaft für die Prinzipien der Erfindung sind, und dass verschiedene Abwandlungen vom Fachmann implementiert werden können, ohne von dem durch die beigefügten Ansprüche definierten Schutzumfang abzuweichen.

Claims (17)

  1. Mehrfachthread-Prozessor für sehr große Befehlswörter, umfassend: eine Mehrzahl von funktionellen Einheiten (FU) zum Ausführen einer Mehrzahl von Befehlen aus einem Mehrfachthread-Befehlsstrom; und einen Zuteiler (820), der Befehle aus dem Befehlsstrom auswählt und die Befehle den mehreren funktionellen Einheiten zuleitet, dadurch gekennzeichnet, dass der Zuteiler dazu ausgebildet ist, die funktionellen Einheiten unabhängig irgendeinen Thread innerhalb des Mehrfachthread-Befehlsstroms zuzuteilen.
  2. Prozessor nach Anspruch 1, bei dem jeder Thread eine Priorität aufweist, wobei der Zuteiler dazu ausgebildet ist, die Befehle basierend auf der Thread-Priorität auszuwählen.
  3. Prozessor nach Anspruch 2, bei dem die Thread-Priorität ermöglicht, dass verschiedene Threads unterschiedliche Prioritäten besitzen.
  4. Prozessor nach Anspruch 2 oder 3, bei dem der Zuteiler (820) die Befehle, die zu dem Thread mit höchster Priorität gehören, auswählt und weiterleitet.
  5. Prozessor nach einem der Ansprüche 1–4, bei dem der Zuteiler zusätzlich dazu ausgebildet ist, die Befehle basierend auf Betriebsmittelverfügbarkeit auszuwählen.
  6. Prozessor nach Anspruch 5, bei dem die Betriebsmittelverfügbarkeit ermöglicht, die Befehle nur dann zuzuteilen, wenn die von den Befehlen benötigten Betriebsmittel für den nächsten Zyklus verfügbar sind.
  7. Prozessor nach Anspruch 5 oder 6, bei dem die Betriebsmittel die funktionellen Einheiten umfassen.
  8. Verfahren zum Verarbeiten von Befehlen aus einem Mehrfachthread-Prozessor für sehr große Befehlswerte, umfassend folgende Schritte: Ausführen (790) der Befehle unter Verwendung mehrerer funktioneller Einheiten; Auswählen (780) von Befehlen aus dem Befehlsstrom; und Weiterleiten der ausgewählten Befehle zu den mehreren funktionellen Einheiten, dadurch gekennzeichnet, dass die funktionellen Einheiten unabhängig irgendeinem Thread innerhalb des Mehrfachthread-Befehlsstroms zugeteilt werden.
  9. Verfahren nach Anspruch 8, bei dem die Threads eine Priorität aufweisen, wobei der Schritt des Auswählens von Befehlen aus dem Befehlsstrom auf der Thread-Priorität basiert.
  10. Verfahren nach Anspruch 9, bei dem die Priorität ermöglicht, dass unterschiedliche Threads verschiedene Prioritäten besitzen.
  11. Verfahren nach Anspruch 9 oder 10, bei dem der Auswählschritt die Befehle zur Ausführung auswählt, die zu dem Thread mit der höchsten Priorität gehören.
  12. Verfahren nach einem der Ansprüche 8–11, bei dem der Schritt des Auswählens von Befehlen aus dem Befehlsstrom auf Betriebsmittelverfügbarkeit basiert.
  13. Verfahren nach Anspruch 12, bei dem die Betriebsmittelverfügbarkeit ermöglicht, dass die Befehle nur dann zugeteilt werden, wenn die für die Befehle benötigten Betriebsmittel für den nächsten Zyklus verfügbar sind.
  14. Verfahren nach Anspruch 12, bei dem die Betriebsmittel die funktionellen Einheiten umfassen.
  15. Computerprogrammprodukt zum Verarbeiten von Befehlen aus einem Mehrfachthread-Befehlsstrom in einem Multithread-Prozessor für sehr große Befehlswörter, umfassend: ein computerlesbares Medium mit einer darauf ausgebildeten computerlesbaren Programmcodeeinrichtung, welche eine Programmcodeeinrichtung enthält, die den Computer veranlasst, die Befehle unter Verwendung einer Mehrzahl von funktionellen Einheiten auszuführen (790), Befehle aus dem Befehlsstrom auszuwählen (780); und die ausgewählten Befehle den mehreren funktionellen Einheiten zuzuleiten, dadurch gekennzeichnet, dass die funktionellen Einheiten unabhängig jedem Thread innerhalb des Mehrfachthread-Befehlsstrom zugeteilt werden.
  16. Computerprogrammprodukt nach Anspruch 15, bei dem die Threads eine Priorität aufweisen unter Schritt des Auswählens von Befehlen aus dem Befehlsstrom in Abhängigkeit der Thread-Priorität erfolgt.
  17. Computerprogrammprodukt nach Anspruch 15 oder 16, bei dem der Schritt des Auswählens von Befehlen abhängig von Betriebsmittelverfügbarkeit erfolgt.
DE60115982T 2000-03-30 2001-03-29 Verfahren und Vorrichtung zum Zuordnen funktioneller Einheiten in einem Mehrfachthread-VLIM-Prozessor Expired - Lifetime DE60115982T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/538,670 US7007153B1 (en) 2000-03-30 2000-03-30 Method and apparatus for allocating functional units in a multithreaded VLIW processor
US538670 2000-03-30

Publications (2)

Publication Number Publication Date
DE60115982D1 DE60115982D1 (de) 2006-01-26
DE60115982T2 true DE60115982T2 (de) 2006-09-14

Family

ID=24147921

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60115982T Expired - Lifetime DE60115982T2 (de) 2000-03-30 2001-03-29 Verfahren und Vorrichtung zum Zuordnen funktioneller Einheiten in einem Mehrfachthread-VLIM-Prozessor

Country Status (7)

Country Link
US (1) US7007153B1 (de)
EP (1) EP1148414B1 (de)
JP (1) JP3832623B2 (de)
KR (1) KR20010095069A (de)
CA (1) CA2337172C (de)
DE (1) DE60115982T2 (de)
TW (1) TW514827B (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7096343B1 (en) 2000-03-30 2006-08-22 Agere Systems Inc. Method and apparatus for splitting packets in multithreaded VLIW processor
WO2002046887A2 (en) * 2000-10-23 2002-06-13 Xyron Corporation Concurrent-multitasking processor
US6934951B2 (en) * 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
US7360062B2 (en) 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
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
US7401208B2 (en) 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
GB0407384D0 (en) 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
US8533716B2 (en) 2004-03-31 2013-09-10 Synopsys, Inc. Resource management in a multicore architecture
US7506140B2 (en) * 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
US7664936B2 (en) * 2005-02-04 2010-02-16 Mips Technologies, Inc. Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages
US7657883B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
US7752627B2 (en) 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US7853777B2 (en) * 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US7631130B2 (en) * 2005-02-04 2009-12-08 Mips Technologies, Inc Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
US7681014B2 (en) 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7490230B2 (en) 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US7657891B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7613904B2 (en) * 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US7254697B2 (en) * 2005-02-11 2007-08-07 International Business Machines Corporation Method and apparatus for dynamic modification of microprocessor instruction group at dispatch
US7395414B2 (en) * 2005-02-11 2008-07-01 International Business Machines Corporation Dynamic recalculation of resource vector at issue queue for steering of dependent instructions
US7961745B2 (en) * 2006-09-16 2011-06-14 Mips Technologies, Inc. Bifurcated transaction selector supporting dynamic priorities in multi-port switch
US7990989B2 (en) * 2006-09-16 2011-08-02 Mips Technologies, Inc. Transaction selector employing transaction queue group priorities in multi-port switch
US7773621B2 (en) * 2006-09-16 2010-08-10 Mips Technologies, Inc. Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch
US7760748B2 (en) * 2006-09-16 2010-07-20 Mips Technologies, Inc. Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch
GB2466984B (en) 2009-01-16 2011-07-27 Imagination Tech Ltd Multi-threaded data processing system
CN101901130B (zh) * 2010-07-26 2014-01-08 清华大学 一种指令分配和预处理指令译码的装置
KR102177871B1 (ko) * 2013-12-20 2020-11-12 삼성전자주식회사 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법
RU2016134918A (ru) * 2014-03-27 2018-03-01 Интел Корпорейшн Логика обработки и способ диспетчеризации команд от многочисленных нитей
US11068274B2 (en) * 2017-12-15 2021-07-20 International Business Machines Corporation Prioritized instructions in an instruction completion table of a simultaneous multithreading processor
CN109491798A (zh) * 2018-11-27 2019-03-19 郑州云海信息技术有限公司 一种资源分配的方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
JPH09265397A (ja) * 1996-03-29 1997-10-07 Hitachi Ltd Vliw命令用プロセッサ
JP3745450B2 (ja) * 1996-05-13 2006-02-15 株式会社ルネサステクノロジ 並列処理プロセッサ
DE69739726D1 (de) 1996-08-27 2010-02-11 Panasonic Corp Vielfadenprozessor zur Verarbeitung von mehreren Befehlsströmen unabhängig von einander durch eine flexible Durchsatzsteuerung in jedem Befehlsstrom
US5890009A (en) * 1996-12-12 1999-03-30 International Business Machines Corporation VLIW architecture and method for expanding a parcel
US6170051B1 (en) * 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
KR100280460B1 (ko) * 1998-04-08 2001-02-01 김영환 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
US6317820B1 (en) * 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism

Also Published As

Publication number Publication date
EP1148414B1 (de) 2005-12-21
KR20010095069A (ko) 2001-11-03
JP2001306323A (ja) 2001-11-02
US7007153B1 (en) 2006-02-28
CA2337172A1 (en) 2001-09-30
EP1148414A3 (de) 2003-05-14
JP3832623B2 (ja) 2006-10-11
CA2337172C (en) 2006-12-19
DE60115982D1 (de) 2006-01-26
EP1148414A2 (de) 2001-10-24
TW514827B (en) 2002-12-21

Similar Documents

Publication Publication Date Title
DE60115982T2 (de) Verfahren und Vorrichtung zum Zuordnen funktioneller Einheiten in einem Mehrfachthread-VLIM-Prozessor
DE60131214T2 (de) Verfahren und Anordnung zur Freilassung von Funktionseinheiten in einem multithreaded VLIW-Prozessor
DE10085363B4 (de) Verfahren und Einrichtung zum Verwalten von Ressourcen in einem Multithreaded-Prozessor
DE4217012C2 (de) Mit einer Vielzahl von Befehlsströmen und statischer Verschachtelung arbeitender Mikroprozessor
DE112005000706B4 (de) Verfahren und System zum Bereitstellen von Multi-Threading auf Nutzerebene
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE69909829T2 (de) Vielfadenprozessor für faden-softwareanwendungen
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE60011797T2 (de) Ausführung von mehreren fäden in einem parallelprozessor
DE4301417C2 (de) Computersystem mit Einrichtung zur parallelen Befehlsausführung
DE102018005172A1 (de) Prozessoren, verfahren und systeme mit einem konfigurierbaren räumlichen beschleuniger
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE69933088T2 (de) Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE102018006791A1 (de) Prozessoren, Verfahren und Systeme mit einem konfigurierbaren räumlichen Beschleuniger mit einem Sequenzer-Datenflussoperator
DE19506990A1 (de) Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten
DE69831344T2 (de) Effiziente verarbeitung von gebündelten sprungbefehlen
DE69835425T2 (de) Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur
DE112015004983T5 (de) Parallel-Slice-Prozessor mit einer Lade-Speicher-Umlaufwarteschlange für eine schnelle Freigabe von Einträgen in einer Ausgabewarteschlange
DE102015002383A1 (de) Verfahren und Vorrichtung zum Implementieren einer dynamischen Out-of-order-Prozessorpipeline
DE102012216565A1 (de) Decodierzeit-computeranweisungsoptimierung
DE19527031A1 (de) Verbesserte Vorrichtung zum Reduzieren von Verzögerungen aufgrund von Verzweigungen
DE19735348A1 (de) Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern

Legal Events

Date Code Title Description
8364 No opposition during term of opposition