DE112004001129T5 - Gemeinsame Nutzungstechnik für Cross-Thread Register - Google Patents
Gemeinsame Nutzungstechnik für Cross-Thread Register Download PDFInfo
- Publication number
- DE112004001129T5 DE112004001129T5 DE112004001129T DE112004001129T DE112004001129T5 DE 112004001129 T5 DE112004001129 T5 DE 112004001129T5 DE 112004001129 T DE112004001129 T DE 112004001129T DE 112004001129 T DE112004001129 T DE 112004001129T DE 112004001129 T5 DE112004001129 T5 DE 112004001129T5
- Authority
- DE
- Germany
- Prior art keywords
- registers
- physical
- mode
- thread
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 25
- 238000004590 computer program Methods 0.000 claims abstract 2
- 238000013507 mapping Methods 0.000 claims description 7
- 230000007704 transition Effects 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 description 3
- 238000010420 art technique Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 229910044991 metal oxide Inorganic materials 0.000 description 2
- 150000004706 metal oxides Chemical class 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 241000700159 Rattus Species 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
Vorrichtung,
die folgendes umfaßt:
eine physikalische Registerdatei, in der mit Befehlen eines Computerprogramms assoziierte Daten in einer Reihenfolge gespeichert sind, die davon unabhängig ist, ob ein Prozessor, der die Befehle ausführt, sich in einem Multi-Thread-Modus (MT-Modus) oder einem Single-Thread-Modus (ST-Modus) befindet.
eine physikalische Registerdatei, in der mit Befehlen eines Computerprogramms assoziierte Daten in einer Reihenfolge gespeichert sind, die davon unabhängig ist, ob ein Prozessor, der die Befehle ausführt, sich in einem Multi-Thread-Modus (MT-Modus) oder einem Single-Thread-Modus (ST-Modus) befindet.
Description
- GEBIET DER ERFINDUNG
- Die Ausführungsformen der Erfindung betreffen eine Mikroprozessorarchitektur. Ganz besonders betreffen die Ausführungsformen der Erfindung eine Technik zur gemeinsamen Nutzung von Registerressourcen in einem Mikroprozessor.
- ALLGEMEINER STAND DER TECHNIK
- In typischen superskalaren Hochleistungsmikroprozessoren besteht eine Technik zum Verbessern der Leistung in der Registerumbenennung, wobei logische Register, auf die von den Befehlen verwiesen wird, auf einen größeren Satz von physikalischen Registern abgebildet werden. Diese physikalische Registerabbildung hilft dabei, falsche Abhängigkeiten zu eliminieren, die in der lokalen Registerabbildung vorliegen würden. Herkömmlicherweise würden Strukturen wie eine Register-Alias-Tabelle (RAT) die Logisch-zu-physikalisch-Abbildungen speichern, wohingegen eine andere Struktur, wie eine Freelist-Tabelle (Freispeicherliste, „Freelist"), die die nicht genutzten oder „freien" physikalischen Register festhalten würde, bis sie von der Umbenennungseinheit zugeordnet und verwendet werden.
- In Multithreaded-Prozessoren (mehrfädigen Prozessoren), die die Fähigkeit aufweisen, mehrere Threads (Fäden) gleichzeitig auszuführen, kann eine Technik zum Zuordnen von physikalischen Registern aus der Freelist entweder eine hart partitionierte Freelist oder eine gemeinsam genutzte einsetzen. Eine Technik mit gemeinsam genutzter Freelist erfordert für gewöhnlich eine größere Freelist-Tabelle und assoziierte Logik, hat jedoch dadurch einen Leistungsvorteil, daß sie alle Register in der Freelist aufweist, die einem aktiven Thread zur Verfügung stehen, wenn der Prozessor im Single-Thread-Modus (einfädigen Modus) läuft. Eine Technik mit hart partitionierter Freelist erfordert weniger Hardware, kann jedoch die Leistung einschränken, da die Anzahl von Registern pro Thread festgelegt ist.
- Ein Beispiel einer Technik zur Zuordnung von gemeinsam genutzten Registern des Stands der Technik für einen zweifädigen Prozessor ist in
1 dargestellt. Wenn ein Register für einen oder beide Threads zugeordnet wird, wird es aus der Freelist105 gelesen und als ein umbenanntes Register in die entsprechende RAT110 geschrieben. Des weiteren überwacht eine separate Struktur, wie ein Rückordnungspuffer (Re-Order Buffer, ROB)115 , zugeordnete Register, so daß diese zur Freelist zurückgegeben werden können, wenn sie nicht mehr benötigt werden. - Es wäre für die gemeinsam genutzte Freelist selbst schwierig, die Registerfreigabe handzuhaben, da zwischen den zwei Threads keine garantierte Rückordnungsreihenfolge besteht. Die Anzahl von Einträgen in der Freelist ist mit der Anzahl von physikalischen Registern identisch und die Freelist wird beim Zurücksetzen mit jeder physikalischen Registernummer initialisiert. Diese initialisierten Register können dann in die RAT eines oder beider Threads zugeordnet werden.
- Die Menge an Hardware, die für eine bestimmte Anzahl von physikalischen Registern notwendig ist, kann mit einer Technik zur Zuordnung von hart partitionierten Registern verringert werden. Ein Beispiel des Stands der Technik einer Technik zur Zuordnung von hart partitionierten Registern ist in
2 dargestellt. Die Technik zur Zuordnung von hart partitionierten Registern von2 legt fest, welche Register für jeden Thread verwendet werden können. Des weiteren sind, wenn ein Thread inaktiv ist, die ihm zugewiesenen Register ungenutzt, was ebenso physikalischen Registerplatz verschwendet. - Im Beispiel des Stands der Technik von
2 können eine RAT210 und eine Freelist205 mit den physikalischen Registernummern initialisiert werden, was jeder Freelist gestattet, nur die derzeit nicht von der RAT verwendeten Register zu überwachen, wodurch die Größe der Freelist begrenzt wird. Angenommen, daß jeder Thread Befehle in der Programmreihenfolge rückordnet, kann jede Freelist die Registerfreigabe ohne einen ROB abwickeln, wodurch die Notwendigkeit einer separaten Struktur zum Durchführen der Neuzuordnung reduziert wird. - Das Beispiel des Stands der Technik von
1 maximiert die Größe der Freelist, die einem bestimmten Thread zur Verfügung steht, bedingt jedoch die Verwendung von zusätzlicher Hardware, nämlich des ROB, zum Neuzuordnen von Registern in der Freelist. Andererseits ermöglicht das Beispiel des Stands der Technik von2 , Register in die Freelist ohne Verwendung eines ROB neuzuzuordnen, verringert jedoch die Anzahl von Freelisteinträgen, die einem einzigen Thread zur Verfügung stehen. - KURZBESCHREIBUNG DER ZEICHNUNGEN
- Die Ausführungsformen der Erfindung sind beispielhaft und nicht einschränkend in den Figuren der begleitenden Zeichnungen dargestellt, in denen gleiche Bezugszahlen ähnliche Elemente bezeichnen.
-
1 stellt eine Technik zur gemeinsamen Nutzung von Registern des Stands der Technik für einen Multithreaded-Prozessor dar, der den einem einzigen Thread zur Verfügung stehenden Freelistplatz maximiert. -
2 stellt eine Technik zur gemeinsamen Nutzung von Registern des Stands der Technik dar, der die Verwendung von zusätzlichen Hardwarestrukturen zum Neuzuordnen von rückgeordneten Befehlen in der Freelist reduziert. -
3 stellt ein Computersystem dar, in dem mindestens eine Ausführungsform der Erfindung verwendet werden kann. -
4 stellt eine Mikroprozessorarchitektur dar, in der mindestens eine Ausführungsform der Erfindung verwendet werden kann. -
5 stellt eine Technik zur gemeinsamen Nutzung von Registern im Single-Thread-Modus (einfädigen Modus) gemäß einer Ausführungsform der Erfindung dar. -
6 stellt eine Technik zur gemeinsamen Nutzung von Registern im Multi-Thread-Modus (mehrfädigen Modus) gemäß einer Ausführungsform der Erfindung dar. -
7 ist ein Ablaufdiagramm, das verschiedene auszuführende Arbeitsschritte darstellt. - AUSFÜHRLICHE BESCHREIBUNG
- Die Ausführungsformen der Erfindung betreffen eine Mikroprozessorarchitektur. Ganz besonders betreffen die Ausführungsformen der Erfindung eine Technik zur gemeinsamen Nutzung von Registerressourcen in einem Mikroprozessor für mehrere Threads von Befehlen, die es erleichtert, eine optimale Anzahl von physikalischen Registern auf eine gewünschte Anzahl von logischen Registern abzubilden, ohne einen beträchtlichen Hardware-Overhead mit sich zu bringen.
- In mindestens einer Ausführungsform der Erfindung wird eine Technik verwendet, die mit einer Technik zur gemeinsamen Nutzung von hart partitionierten Registern assoziierte Hardwarekosten mit sich bringt, die jedoch einem Thread mehr Register zur Verfügung stellt, wenn ein anderer Thread inaktiv ist.
-
3 stellt ein Computersystem dar, in dem mindestens eine Ausführungsform der Erfindung verwendet werden kann. Ein Prozessor305 greift auf Daten von einem Zwischenspeicher310 und einem Hauptspeicher315 zu. In dem Prozessor von3 ist eine Ausführungsform306 der Erfindung dargestellt. Es können jedoch andere Ausführungsformen der Erfindung in anderen Einrichtungen im System, wie einem separaten Busagenten, implementiert oder über das System als Hardware, Software oder eine beliebige Kombination davon verteilt sein. - Der Hauptspeicher kann in verschiedenen Speicherquellen implementiert sein, wie einem dynamischen Direktzugriffsspeicher (dynamic random access memory, DRAM), einem Festplattenlaufwerk (hard disk drive, HDD)
320 oder einer Speicherquelle, die sich über eine Netzschnittstelle330 von dem Computersystem entfernt befindet, die verschiedene Speichereinrichtungen und -technologien umfaßt. Der Zwischenspeicher kann sich entweder im Prozessor oder in direkter Nähe des Prozessors befinden, wie auf dem lokalen Bus307 des Prozessors. Des weiteren kann der Zwischenspeicher relativ schnelle Speicherzellen enthalten, wie eine Zelle mit sechs Transistoren (6T-Zelle) oder eine andere Speicherzelle mit ungefähr gleicher oder schnellerer Zugriffsgeschwindigkeit. -
4 stellt einen Mikroprozessor dar, in dem mindestens eine Ausführungsform der Erfindung verwendet werden kann. Der Prozessor400 weist eine Ausführungseinheit420 , eine Planungseinheit415 , eine Umbenennungseinheit410 , eine Rückordnungseinheit425 und eine Dekodiereinheit405 auf. - In einer Ausführungsform der Erfindung ist der Mikroprozessor ein superskalarer Pipeline-Prozessor, der mehrere Verarbeitungsfunktionalitätsstufen in einer Reihen- und/oder Parallelkonfiguration umfassen kann. Dementsprechend können mehrere Befehle gleichzeitig im Prozessor verarbeitet werden, jeder in einer anderen Pipelinestufe. Des weiteren kann die Ausführungseinheit Teil eines Ausführungsclusters sein, um Befehle eines ähnlichen Typs oder mit ähnlichen Attributen, wie Latenzzeittoleranz, zu verarbeiten. In anderen Ausführungsformen kann die Ausführungseinheit eine einzige Ausführungseinheit sein.
- Die Planungseinheit kann verschiedene funktionelle Einheiten enthalten, einschließlich Ausführungsformen der Erfindung
413 . Andere Ausführungsformen der Erfindung können sich an anderer Stelle in der Prozessorarchitektur von4 befinden, einschließlich der Umbenennungseinheit407 . -
5 stellt eine Architektur zur gemeinsamen Nutzung von Registern gemäß einer Ausführungsform der Erfindung dar, die eine Anhebung der Anzahl von Registern erleichtert, die im Single-Thread-Ausführungsmodus zur Verfügung stehen, ohne die Hardwarekosten einer Architektur mit völlig gemeinsam genutzten Freelists mit sich zu bringen. Diese Architektur initialisiert beide RATs501 ,502 , die Thread 0 bzw. Thread 1 entsprechen, mit Registerumbenennungen, ungeachtet dessen, ob der Prozessor sich im Single-Thread-Modus (ST-Modus) oder Multi-Thread-Modus (MT-Modus) befindet. Die Freelist505 wird mit den verbleibenden Umbenennungsregistern initialisiert und überprüft den Modus des Prozessors (ST oder MT). Wenn der Prozessor sich im MT-Modus befindet, partitioniert die Freelist sich selbst, so daß jede Hälfte der Freelist einem anderen Thread zur Verfügung steht. Im ST-Modus stehen alle Register in der Freelist dem aktiven Thread zur Verfügung. - In der Ausführungsform von
5 , die zwei Threads, acht logische Register pro Thread und insgesamt achtundzwanzig physikalische Register510 umfaßt, ist auch der Anfangszustand der Maschine, wenn sie sich im ST-Modus befindet, angezeigt. Insbesondere die letzten acht Einträge des physikalischen Registerplatzes werden für Thread 1 (derzeit inaktiv) verwendet, wohingegen die ersten zwanzig Einträge Thread 0 zur Verfügung stehen. - Wenn der Prozessor vom ST-Modus in den MT-Modus umschaltet, partitioniert sich die Freelist selbst in zwei Teile, wobei jede Hälfte für einen anderen Thread verwendet wird. Dies ist der Technik zur gemeinsamen Nutzung von hart partitionierten Registern des Stands der Technik ähnlich, wobei der Hauptunterschied darin besteht, daß der Satz von physikalischen Registern, die jedem Thread zugeteilt werden, vom Zustand der Freelist zum Zeitpunkt des Übergangs von ST zu MT anstatt von einem vorbestimmten Satz von physikalischen Registern pro Thread abhängt. Dies bedeutet, daß von jedem Thread verwendete Register in der physikalischen Registerdatei willkürlich über die physikalische Registerdatei verteilt werden.
-
6 stellt den Zustand der Architektur nach einem Übergang von MT zu ST gemäß einer Ausführungsform der Erfindung dar. Insbesondere departioniert die Freelist601 sich bei einem Übergang von MT zu ST selbst und ermöglicht, Register, die zu diesem Zeitpunkt in der Freelist verbleiben, dem aktiven Thread zuzuordnen. Der inaktive Thread605 wird nach wie vor acht Register aufweisen, die in der physikalischen Registerdatei in willkürlichen Positionen zugeordnet sind (und vom aktiven Thread nicht verwendbar sind). Der aktive Thread610 wird wiederum zwanzig physikalische Register aufweisen, mit denen die acht lokalen Register abzubilden sind. - Verschiedene Gesichtspunkte von Ausführungsformen der Erfindung können unter Verwendung von CMOS-Schaltkreisen (complementary metal-oxide semiconductor, Komplementär-Metalloxid-Halbleiter) und logischen Einrichtungen (Hardware) implementiert werden, wohingegen andere Gesichtspunkte unter Verwendung von auf einem maschinenlesbaren Datenträger (Software) gespeicherten Befehlen implementiert werden können, die, wenn sie von einem Prozessor ausgeführt werden, bewirken würden, daß der Prozessor ein Verfahren zum Durchführen von Ausführungsformen der Erfindung ausführt. Des weiteren können manche Ausführungsformen der Erfindung ausschließlich in Hardware ausgeführt werden, wohingegen andere Ausführungsform ausschließlich in Software ausgeführt werden können.
-
7 ist ein Ablaufdiagramm, das verschiedene an mindestens einer Ausführungsform der Erfindung auszuführende Arbeitsschritte darstellt. Im Arbeitsschritt701 befindet sich die Ausführungsform der Erfindung im ST-Modus und ist zum Zuordnen und Umbenennen von acht Registern in der physikalischen Registerdatei initialisiert. Des weiteren sind zwölf weitere ungenutzte Register in der physikalischen Registerdatei in der Freelist aufgeführt, die vom aktiven Thread zu verwenden sind. Wenn der Prozessor, in dem die Ausführungsform der Erfindung von7 ausgeführt wird, im Arbeitsschritt705 in den MT-Modus umschaltet, wird die Freelist im Arbeitsschritt710 in zwei Teile unterteilt und der zweite Thread kann die Register verwenden, die in seiner Hälfte der Freelist angegeben sind. Wenn etwaige der Register rückgeordnet sind, gibt die Freelist diese Register im Arbeitsschritt715 dementsprechend wider, ganz gleich, ob im MT- oder ST-Modus. Wenn die in7 dargestellte Ausführungsform der Erfindung nicht zwischen dem MT- und dem ST-Modus umschaltet, werden die RAT und die Freelist im Arbeitsschritt720 gemäß der Register aktualisiert, die von folgenden Befehlen verwendet werden. - Obwohl die Erfindung mit Bezugnahme auf veranschaulichende Ausführungsformen beschrieben worden ist, soll die Beschreibung nicht in einem einschränkenden Sinne ausgelegt werden. Verschiedene Modifikationen der veranschaulichenden Ausführungsformen sowie andere Ausführungsformen, die Fachmännern der Technik, welche die Erfindung betrifft, offensichtlich sein werden, sollen als im Sinn und Schutzumfang der Erfindung liegend angesehen werden.
- Eine Technik zum gemeinsamen Nutzen von Ressourcen innerhalb eines Mikroprozessors. Ausführungen der Erfindung beziehen sich auf eine gemeinsame Nutzung eines Registers innerhalb eines Mikroprozessors für Mehrfach-Threads von Instruktionen, die eine optimale Anzahl von physikalischen Registern ermöglicht, die auf eine gewünschte Anzahl logischer Register abgebildet werden sollen, ohne signifikante Hardwareanforderungen zu erzeugen.
Claims (30)
- Vorrichtung, die folgendes umfaßt: eine physikalische Registerdatei, in der mit Befehlen eines Computerprogramms assoziierte Daten in einer Reihenfolge gespeichert sind, die davon unabhängig ist, ob ein Prozessor, der die Befehle ausführt, sich in einem Multi-Thread-Modus (MT-Modus) oder einem Single-Thread-Modus (ST-Modus) befindet.
- Vorrichtung nach Anspruch 1, die weiterhin mindestens eine Registerzuordnungstabelle (register allocation table, RAT) umfaßt, um die Zuordnung der Daten von logischen Registern zu physikalischen Registern in der physikalischen Registerdatei anzuzeigen.
- Vorrichtung nach Anspruch 1, die weiterhin eine Liste von physikalischen Registern in der physikalischen Registerdatei umfaßt, die nicht einem logischen Register zugeordnet sind, wobei Einträge in der Liste vollständig einem ersten Thread zugeordnet werden, während der Prozessor sich im ST-Modus befindet, und Einträge in der Liste partitioniert werden, so daß ein erster Teil der Einträge einem ersten Thread und ein zweiter Teil der Einträge einem zweiten Thread zugeordnet werden, während der Prozessor sich im MT-Modus befindet.
- Vorrichtung nach Anspruch 3, wobei ein erster Teil aller physikalischen Register in der physikalischen Registerdatei dem ersten Thread und ein zweiter Teil aller physikalischen Register in der physikalischen Registerdatei dem zweiten Thread zugeordnet werden, wenn der Prozessor sich im ST-Modus befindet, wobei der erste Teil aller physikalischen Register größer als der zweite Teil aller physikalischen Register ist.
- Vorrichtung nach Anspruch 4, wobei der zweite Thread inaktiv ist, wenn der Prozessor sich im ST-Modus befindet.
- Vorrichtung nach Anspruch 4, wobei der erste Teil aller physikalischen Register in der physikalischen Registerdatei dem ersten Thread zugeordnet bleibt, nachdem der Prozessor in den MT-Modus übergegangen ist, bis Befehle, die mit Daten im ersten Teil aller physikalischen Register in der Registerdatei assoziiert sind, rückgeordnet werden.
- Vorrichtung nach Anspruch 6, wobei die mit den rückgeordneten Befehlen assoziierten physikalischen Register in der Liste von physikalischen Registern angezeigt werden.
- Vorrichtung, die folgendes umfaßt: ein erstes Mittel zum Anzeigen von Registern in einer physikalischen Registerdatei zur Verwendung von einem Mikroprozessor, die nicht logischen Registern zugeordnet sind, wobei das erste Mittel während eines zweiten Betriebsmodus des Mikroprozessors partitioniert und während eines ersten Betriebsmodus des Mikroprozessors nicht partitioniert wird; ein zweites Mittel zum Zuordnen der logischen Register zu den physikalischen Registern.
- Vorrichtung nach Anspruch 8, wobei die logischen Register den physikalischen Registern unabhängig von der relativen Position der logischen Register zueinander zugeordnet werden.
- Vorrichtung nach Anspruch 9, wobei das zweite Mittel eine Registerzuordnungstabelle umfaßt, um die Zuordnung der logischen Register zu den physikalischen Registern anzuzeigen.
- Vorrichtung nach Anspruch 9, wobei das zweite Mittel mehrere Registerzuordnungstabellen umfaßt, um die Zuordnung der logischen Register zu den physikalischen Registern anzuzeigen, wobei jede der mehreren Registerzuordnungstabellen mit einem separaten Thread von Befehlen assoziiert ist.
- Vorrichtung nach Anspruch 11, wobei es sich bei dem ersten Betriebsmodus um einen Single-Thread-Modus und bei dem zweiten Modus um einen Multiple-Thread-Modus handelt.
- Vorrichtung nach Anspruch 12, wobei es sich bei dem ersten Mittel um eine Registerdatei handelt, die eine Liste der physikalischen Register umfaßt, die nicht den logischen Registern zugeordnet sind.
- Vorrichtung nach Anspruch 13, wobei die Summe der Anzahl von physikalischen Registern in der Liste und der Anzahl von logischen Registern, die mit einem einzigen Thread assoziiert sind, der Anzahl von physikalischen Registern in der physikalischen Registerdatei entspricht.
- Vorrichtung nach Anspruch 14, wobei das erste physikalische Register in der Liste angezeigt wird, nachdem ein Befehl, der mit in dem ersten physikalischen Register gespeicherten Daten assoziiert ist, rückgeordnet worden ist.
- System, das folgendes umfaßt: eine Speichereinheit zum Speicher eines ersten und eines zweiten Thread von Befehlen; einen Prozessor zum Durchführen des ersten und des zweiten Thread von Befehlen, wobei der Prozessor eine physikalische Registerdatei umfaßt, wobei dem ersten und dem zweiten Thread von Befehlen entsprechende Daten in einer Reihenfolge gespeichert sind, die davon unabhängig ist, ob der Prozessor sich in einem Multi-Thread-Modus (MT-Modus) oder einem Single-Thread-Modus (ST-Modus) befindet.
- System nach Anspruch 16, wobei der Prozessor weiterhin mindestens eine Registerzuordnungstabelle (register allocation table, RAT) umfaßt, um die Zuordnung der Daten von logischen Registern zu physikalischen Registern in der physikalischen Registerdatei anzuzeigen.
- System nach Anspruch 16, das weiterhin eine Liste von physikalischen Registern umfaßt, die nicht einem logischen Register zugeordnet sind, wobei Einträge in der Liste vollständig dem ersten Thread zugeordnet werden, während der Prozessor sich im ST-Modus befindet, und Einträge in der Liste partitioniert werden, so daß ein erster Teil der Einträge dem ersten Thread und ein zweiter Teil der Einträge dem zweiten Thread zugeordnet werden, während der Prozessor sich im MT-Modus befindet.
- System nach Anspruch 18, wobei ein erster Teil aller physikalischen Register in der physikalischen Registerdatei dem ersten Thread und ein zweiter Teil aller physikalischen Register in der physikalischen Registerdatei dem zweiten Thread zugeordnet werden, wenn der Prozessor sich im ST-Modus befindet, wobei der erste Teil aller physikalischen Register größer als der zweite Teil aller physikalischen Register ist.
- System nach Anspruch 19, wobei der zweite Thread inaktiv ist, wenn der Prozessor sich im ST-Modus befindet.
- System nach Anspruch 19, wobei der erste Teil aller physikalischen Register in der physikalischen Registerdatei dem ersten Thread zugeordnet bleibt, nachdem der Prozessor in den MT-Modus übergegangen ist, bis Befehle, die mit Daten im ersten Teil aller physikalischen Register in der Registerdatei assoziiert sind, rückgeordnet werden.
- System nach Anspruch 21, wobei die mit den rückgeordneten Befehlen assoziierten physikalischen Register in der Liste von physikalischen Registern angezeigt werden.
- Verfahren, das folgendes umfaßt: Initialisieren einer Registerzuordnungstabelle (register allocation table, RAT), um eine erste Gruppe von logischen Registern auf eine zweite Gruppe von physikalischen Registern abzubilden; Unterteilen einer Freelist von Registern in zwei Teile, wenn ein mit der Freelist assoziierter Prozessor sich im Multi-Thread-Modus (MT-Modus) befindet; Rückgängigmachen der Unterteilung der Freelist von Registern, wenn der Prozessor sich im Single-Thread-Modus (ST-Modus) befindet.
- Verfahren nach Anspruch 23, das weiterhin ein Übergehen vom ST-Modus in den MT-Modus umfaßt, wobei die zweite Gruppe von physikalischen Registern über eine physikalische Registerdatei verteilt ist.
- Verfahren nach Anspruch 24, wobei die zweite Gruppe von physikalischen Registern nach dem Übergang vom ST-Modus in den MT-Modus über die physikalische Registerdatei verteilt bleibt.
- Verfahren nach Anspruch 23, das weiterhin ein Übergehen vom MT-Modus in den ST-Modus umfaßt, wobei die zweite Gruppe von physikalischen Registern über eine physikalische Registerdatei verteilt ist.
- Verfahren nach Anspruch 26, wobei die zweite Gruppe von physikalischen Registern nach dem Übergang vom MT-Modus in den ST-Modus über die physikalische Registerdatei verteilt bleibt.
- Verfahren nach Anspruch 23, wobei die logischen Register den physikalischen Registern unabhängig von der relativen Position der logischen Register zueinander zugeordnet werden.
- Verfahren nach Anspruch 28, wobei die Summe der Einträge in der Freelist und der Anzahl von logischen Registern, die mit einem einzigen Thread assoziiert sind, der Anzahl von physikalischen Registern in der physikalischen Registerdatei entspricht.
- Verfahren nach Anspruch 29, das weiterhin ein Anzeigen eines ersten physikalischen Registers in der Freelist umfaßt, nachdem ein Befehl, der mit in dem ersten physikalischen Register gespeicherten Daten assoziiert ist, rückgeordnet worden ist.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/609,264 US20040268093A1 (en) | 2003-06-26 | 2003-06-26 | Cross-thread register sharing technique |
US10/609,264 | 2003-06-26 | ||
PCT/US2004/018419 WO2005006185A2 (en) | 2003-06-26 | 2004-06-09 | Cross-thread register sharing technique |
Publications (2)
Publication Number | Publication Date |
---|---|
DE112004001129T5 true DE112004001129T5 (de) | 2006-05-11 |
DE112004001129B4 DE112004001129B4 (de) | 2008-04-30 |
Family
ID=33540820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112004001129T Expired - Fee Related DE112004001129B4 (de) | 2003-06-26 | 2004-06-09 | Gemeinsame Nutzungstechnik für Cross-Thread Register |
Country Status (5)
Country | Link |
---|---|
US (1) | US20040268093A1 (de) |
JP (1) | JP2007520768A (de) |
CN (1) | CN1577260B (de) |
DE (1) | DE112004001129B4 (de) |
WO (1) | WO2005006185A2 (de) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006120367A1 (en) * | 2005-05-11 | 2006-11-16 | Arm Limited | A data processing apparatus and method employing multiple register sets |
US7624257B2 (en) * | 2005-11-30 | 2009-11-24 | International Business Machines Corporation | Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads |
WO2008049938A1 (es) * | 2006-10-27 | 2008-05-02 | Intel Corporation | Comunicación entre múltiples secuencias de procesamiento en un procesador |
US8347068B2 (en) * | 2007-04-04 | 2013-01-01 | International Business Machines Corporation | Multi-mode register rename mechanism that augments logical registers by switching a physical register from the register rename buffer when switching between in-order and out-of-order instruction processing in a simultaneous multi-threaded microprocessor |
US8245016B2 (en) * | 2007-09-28 | 2012-08-14 | International Business Machines Corporation | Multi-threaded processing |
US8250345B2 (en) * | 2007-09-28 | 2012-08-21 | International Business Machines Corporation | Structure for multi-threaded processing |
US9025592B2 (en) * | 2008-05-21 | 2015-05-05 | Telefonaktiebolaget L M Ericsson (Publ) | Blade cluster switching center server and method for signaling |
US20090327661A1 (en) * | 2008-06-30 | 2009-12-31 | Zeev Sperber | Mechanisms to handle free physical register identifiers for smt out-of-order processors |
US9501285B2 (en) | 2010-05-27 | 2016-11-22 | International Business Machines Corporation | Register allocation to threads |
US8561070B2 (en) | 2010-12-02 | 2013-10-15 | International Business Machines Corporation | Creating a thread of execution in a computer processor without operating system intervention |
US8572628B2 (en) | 2010-12-02 | 2013-10-29 | International Business Machines Corporation | Inter-thread data communications in a computer processor |
JP5283739B2 (ja) * | 2011-09-27 | 2013-09-04 | インテル・コーポレーション | プロセッサ内のマルチスレッド間通信 |
WO2013099414A1 (ja) * | 2011-12-26 | 2013-07-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | レジスタ・マッピング方法 |
US10534614B2 (en) * | 2012-06-08 | 2020-01-14 | MIPS Tech, LLC | Rescheduling threads using different cores in a multithreaded microprocessor having a shared register pool |
GB2499277B (en) * | 2012-08-30 | 2014-04-02 | Imagination Tech Ltd | Global register protection in a multi-threaded processor |
US9582287B2 (en) * | 2012-09-27 | 2017-02-28 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
US9395988B2 (en) * | 2013-03-08 | 2016-07-19 | Samsung Electronics Co., Ltd. | Micro-ops including packed source and destination fields |
JP5986543B2 (ja) * | 2013-07-19 | 2016-09-06 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | アーキテクチャレジスタの割り付け方法、割り付け装置及び割り付けプログラム |
GB2522290B (en) * | 2014-07-14 | 2015-12-09 | Imagination Tech Ltd | Running a 32-bit operating system on a 64-bit machine |
US20160147536A1 (en) * | 2014-11-24 | 2016-05-26 | International Business Machines Corporation | Transitioning the Processor Core from Thread to Lane Mode and Enabling Data Transfer Between the Two Modes |
US11016770B2 (en) * | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US11126433B2 (en) * | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
CN106201989B (zh) * | 2016-06-28 | 2019-06-11 | 上海兆芯集成电路有限公司 | 具有从空闲列表的处理器和使用其回收物理寄存器的方法 |
US11132228B2 (en) * | 2018-03-21 | 2021-09-28 | International Business Machines Corporation | SMT processor to create a virtual vector register file for a borrower thread from a number of donated vector register files |
US11593108B2 (en) * | 2021-06-07 | 2023-02-28 | International Business Machines Corporation | Sharing instruction cache footprint between multiple threads |
US11593109B2 (en) | 2021-06-07 | 2023-02-28 | International Business Machines Corporation | Sharing instruction cache lines between multiple threads |
CN114168197B (zh) * | 2021-12-09 | 2023-05-23 | 海光信息技术股份有限公司 | 指令执行方法、处理器以及电子装置 |
CN118245188A (zh) * | 2024-03-29 | 2024-06-25 | 海光信息技术股份有限公司 | 线程控制方法及装置、处理器和计算机可读存储介质 |
CN118377536B (zh) * | 2024-06-24 | 2024-10-01 | 山东浪潮科学研究院有限公司 | 寄存器资源动态调度系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6697935B1 (en) * | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US6092175A (en) * | 1998-04-02 | 2000-07-18 | University Of Washington | Shared register storage mechanisms for multithreaded computer systems with out-of-order execution |
US20010042187A1 (en) * | 1998-12-03 | 2001-11-15 | Marc Tremblay | Variable issue-width vliw processor |
US6357016B1 (en) * | 1999-12-09 | 2002-03-12 | Intel Corporation | Method and apparatus for disabling a clock signal within a multithreaded processor |
US7051329B1 (en) * | 1999-12-28 | 2006-05-23 | Intel Corporation | Method and apparatus for managing resources in a multithreaded processor |
GB2368932B (en) * | 2000-11-02 | 2003-04-16 | Siroyan Ltd | Register file circuitry |
US6954846B2 (en) * | 2001-08-07 | 2005-10-11 | Sun Microsystems, Inc. | Microprocessor and method for giving each thread exclusive access to one register file in a multi-threading mode and for giving an active thread access to multiple register files in a single thread mode |
-
2003
- 2003-06-26 US US10/609,264 patent/US20040268093A1/en not_active Abandoned
-
2004
- 2004-06-02 CN CN200410046147.0A patent/CN1577260B/zh not_active Expired - Fee Related
- 2004-06-09 WO PCT/US2004/018419 patent/WO2005006185A2/en active Application Filing
- 2004-06-09 JP JP2006515362A patent/JP2007520768A/ja active Pending
- 2004-06-09 DE DE112004001129T patent/DE112004001129B4/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20040268093A1 (en) | 2004-12-30 |
WO2005006185A2 (en) | 2005-01-20 |
CN1577260A (zh) | 2005-02-09 |
JP2007520768A (ja) | 2007-07-26 |
DE112004001129B4 (de) | 2008-04-30 |
CN1577260B (zh) | 2012-10-10 |
WO2005006185A3 (en) | 2005-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112004001129B4 (de) | Gemeinsame Nutzungstechnik für Cross-Thread Register | |
DE69311330T2 (de) | Befehlsablauffolgeplanung von einem risc-superskalarprozessor | |
DE69211231T2 (de) | Verfahren und Vorrichtung zur Verwaltung eines gemeinsam genutzten Speichers ausserhalb des Bildschirms | |
DE69803624T2 (de) | Verfahren und Vorrichtung zur generationellen Freispeichersammlung in einem gemeinsam verwendeten Heapspeicher mittels mehrerer Prozessoreinheiten | |
DE60033994T2 (de) | Verfahren und System zur Ausgabe an und zum Ordnen von Befehlen in einem Festplattenlaufwerk | |
DE3750306T2 (de) | System zum Gewährleisten der logischen Unversehrtheit von Daten. | |
DE60015395T2 (de) | Speicher, der zwischen verarbeitenden threads geteilt ist | |
DE3889578T2 (de) | Vorrichtung zur Sicherung und Rückspeicherung einer Registerinformation. | |
DE112012000303B4 (de) | Dynamische binäre Optimierung | |
DE102005029852B4 (de) | Steueranordnung zum Freigeben einer oder mehrerer virtueller Speicherseiten nach Beendigung eines Programms in einem Multiprozessorcomputersystem | |
DE102007006190B4 (de) | Techniken zur Verwendung von Speicher-Attributen | |
DE69320847T2 (de) | Verfahren und Anordnung zur Ausführung von Prozessen in einem Multiprozessor-System | |
DE102007025397B4 (de) | System mit mehreren Prozessoren und Verfahren zu seinem Betrieb | |
DE69305366T2 (de) | System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführung | |
DE69114333T2 (de) | Rechner mit der Fähigkeit mehrere Befehle gleichzeitig auszuführen. | |
DE10297166T5 (de) | Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen | |
DE2414311C2 (de) | Speicherschutzeinrichtung | |
DE112006003453T5 (de) | Per-Satz-Relaxation der Cache-Inklusion | |
DE60001170T2 (de) | Betriebsystemsseitenplazierung zum maximieren der cachedatenwiederverwendung | |
DE102008058209A1 (de) | Anordnung und Verfahren um zu verhindern, dass ein Anwenderbetriebssystem in einem VMM System eine Anordnung abschaltet, die von einem Servicebetriebssystem verwendet wird | |
DE112005002370T5 (de) | Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen | |
DE112012004629T5 (de) | Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene | |
DE69325473T2 (de) | Virtuelles Speichersystem verwendendes Datenverarbeitungssystem und -verfahren | |
DE112011100098B4 (de) | Effiziente Mehrkernverarbeitung von Ereignissen | |
DE112019000189T5 (de) | Programmausführungs-steuerverfahren und fahrzeugsteuervorrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8364 | No opposition during term of opposition | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |
Effective date: 20140101 |