DE10296989B4 - Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms - Google Patents
Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms Download PDFInfo
- Publication number
- DE10296989B4 DE10296989B4 DE10296989T DE10296989T DE10296989B4 DE 10296989 B4 DE10296989 B4 DE 10296989B4 DE 10296989 T DE10296989 T DE 10296989T DE 10296989 T DE10296989 T DE 10296989T DE 10296989 B4 DE10296989 B4 DE 10296989B4
- Authority
- DE
- Germany
- Prior art keywords
- processor
- buffer
- thread
- memory
- register file
- 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
Links
- 239000000872 buffer Substances 0.000 claims abstract description 109
- 238000000034 method Methods 0.000 claims description 17
- 239000012160 loading buffer Substances 0.000 claims description 10
- 230000001419 dependent effect Effects 0.000 claims description 6
- 238000005192 partition Methods 0.000 claims description 6
- 238000013459 approach Methods 0.000 claims 1
- 230000003287 optical effect Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 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/46—Multiprogramming arrangements
-
- 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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
-
- 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
-
- 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/3842—Speculative instruction execution
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
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)
Abstract
Vorrichtung,
welche umfaßt:
einen ersten Prozessor und einen zweiten Prozessor;
mehrere an den ersten Prozessor und den zweiten Prozessor angekoppelte Speichereinrichtungen;
einen an den ersten Prozessor und den zweiten Prozessor angekoppelten Registerfilepuffer;
einen an den ersten Prozessor und den zweiten Prozessor angekoppelten Trace-Puffer;
wobei der erste Prozessor und der zweite Prozessor dafür eingerichtet sind, unter Verwendung von Multi-Thread-Betriebsmitteln Ein-Thread-Anwendungen durchzuführen, indem
der erste Prozessor mehrere Anweisungen in einem ersten Thread ausführt, wobei alle in das Registerfile des ersten Prozessors geschriebenen Werte auch in den Registerfilepuffer geschrieben werden;
der zweite Prozessor nach Anweisung durch den ersten Prozessor mit der Programmausführung desselben Thread an einer stromabwärts befindlichen Stelle beginnt, wobei der zweite Prozessor die von dem zweiten Prozessor zur Ausführung des Thread benötigten Eingangsregisterwerte bei Bedarf aus dem Registerfilepuffer liest, wobei ein Scoreboard in der Dekodierungsstufe des zweiten Prozessors dazu benutzt wird, zu verfolgen, welche...
einen ersten Prozessor und einen zweiten Prozessor;
mehrere an den ersten Prozessor und den zweiten Prozessor angekoppelte Speichereinrichtungen;
einen an den ersten Prozessor und den zweiten Prozessor angekoppelten Registerfilepuffer;
einen an den ersten Prozessor und den zweiten Prozessor angekoppelten Trace-Puffer;
wobei der erste Prozessor und der zweite Prozessor dafür eingerichtet sind, unter Verwendung von Multi-Thread-Betriebsmitteln Ein-Thread-Anwendungen durchzuführen, indem
der erste Prozessor mehrere Anweisungen in einem ersten Thread ausführt, wobei alle in das Registerfile des ersten Prozessors geschriebenen Werte auch in den Registerfilepuffer geschrieben werden;
der zweite Prozessor nach Anweisung durch den ersten Prozessor mit der Programmausführung desselben Thread an einer stromabwärts befindlichen Stelle beginnt, wobei der zweite Prozessor die von dem zweiten Prozessor zur Ausführung des Thread benötigten Eingangsregisterwerte bei Bedarf aus dem Registerfilepuffer liest, wobei ein Scoreboard in der Dekodierungsstufe des zweiten Prozessors dazu benutzt wird, zu verfolgen, welche...
Description
- HINTERGRUND DER ERFINDUNG
- Technisches Gebiet
- Die vorliegende Erfindung betrifft Multiprozessoren und insbesondere ein Verfahren und eine Vorrichtung zur Multi-Thread-Ausführung von Ein-Thread-Programmen.
- Allgemeiner Stand der Technik
- Bei vielen derzeitigen Verarbeitungssystemen, wie zum Beispiel PCs (Personal Computers), spielen Einchip-Multiprozessoren (CMP) eine wichtige Rolle bei der Ausführung von Multi-Thread-Programmen. Die Threads, die diese Prozessoren verarbeiten und ausführen können, sind unabhängig voneinander. Zum Beispiel können Threads aus unabhängigen Programmen oder aus demselben Programm abgeleitet werden. Bestimmte Threads sind kompiliert, wodurch Threads erzeugt werden, die untereinander keine Abhängigkeiten aufweisen. Bei einer Multi-Thread-Umgebung ist es jedoch zu schwierig, bestimmte Ein-Thread-Anwendungen explizit in mehrere Threads umzusetzen. Außerdem wird durch Ausführen bestehender Ein-Thread-Binärdateien auf einem Multi-Thread-Prozessor die Multi-Thread-Fähigkeit des Chips nicht ausgenutzt.
- H. Akkary und M.A. Driscoll offenbaren in „A dynamic multithreading processor" erschienen in International Symposium an Microarchitecture, Proceedings of the 31st annual ACM/IEEE International Symposium an Microarchitecture, Dallas (1998), Seiten 226–236, eine Prozessorarchitektur mit einem einzelnen Out-Of- Order-Prozessor, der in der Lage ist, gleichzeitig mehrere Threads durchzuführen. Es ist offenbart, einen spekulativen Thread auszuführen und die Ergebnisse in mehreren Trace-Puffern zwischenzuspeichern, um sie bei der Ausführungs des Haupt-Threads ggf. zu übernehmen.
- Die vorliegende Erfindung bezieht sich auf eine Vorrichtung gemäß Anspruch 1 und auf ein Verfahren gemäß Anspruch 11.
- KURZE BESCHREIBUNG DER ZEICHNUNGEN
- Die Erfindung wird in den Figuren der beigefügten Zeichnungen, in denen gleiche Bezugszahlen ähnliche Elemente angeben, beispielhaft und nicht als Einschränkung dargestellt. Es ist zu beachten, daß Verweise auf "eine" Ausführungsform in der vorliegenden Offenbarung nicht unbedingt auf dieselbe Ausführungsform verweisen und solche Verweise "mindestens eine" bedeuten.
-
1 zeigt eine Ausführungsform der Erfindung. -
2 zeigt einen Übergabe-Prozessor einer Ausführungsform der Erfindung. -
3 zeigt einen spekulativen Prozessor einer Ausführungsform der Erfindung. -
4 zeigt einen Speicherweiterleitungspuffer einer Ausführungsform der Erfindung. -
5 zeigt einen Ladeordnungspuffer einer Ausführungsform der Erfindung. -
6 zeigt eine Ausführungsform der Erfindung mit einem System. -
7 zeigt ein Blockschaltbild einer Ausführungsform der Erfindung. - AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
- Die Erfindung betrifft allgemein eine Vorrichtung und ein Verfahren für Multi-Thread-Ausführung von Ein-Thread-Programmen. Mit Bezug auf die Figuren werden nun beispielhafte Ausführungsformen der Erfindung beschrieben. Die beispielhaften Ausführungsformen werden angegeben, um die Erfindung zu veranschaulichen und sollten nicht als den Schutzumfang der Erfindung einschränkend betrachtet werden.
-
1 zeigt eine Ausführungsform der Erfindung, die einen Multiprozessor100 umfaßt. Bei einer Ausführungsform der Erfindung ist der Multiprozessor100 ein Doppelkern-Einchipmultiprozessor (CMP). Der Multiprozessor100 umfaßt ferner eine Übergabe-Zentralverarbeitungseinheit (CPU)110 , eine spekulative CPU120 , einen Registerfilepuffer130 , einen Trace-Puffer, einen Ladepuffer150 (der auch als Ladeordnungspuffer bekannt ist), einen Speicherpuffer160 (der auch als Speicherweiterleitungspuffer bekannt ist), L1-Cache175 , L2-Cache170 , L0-Anweisungscache (I-Cache)180 und L0-Datencache (D-Cache)190 . Bei einer Ausführungsform der Erfindung umfaßt der L0-I-Cache180 zwei L0-I- Cachekomponenten. Eine der L0-I-Komponenten des Cache180 ist an den Übergabe-Prozessor110 angekoppelt, und die andere L0-I-Komponente des Cache180 ist an den spekulativen Prozessor120 angekoppelt. Bei dieser Ausführungsform der Erfindung führen die beiden I-Cache-Komponenten Duplikatinformationen. Bei einer Ausführungsform der Erfindung werden aus einer der L0-I-Komponenten des Cache180 Abrufanforderungen an den L1-Cache175 ausgegeben. Aus dem L1-Cache175 abgerufene Zeilen werden in den L0-I-Cache180 gefüllt, der an den spekulativen/gefüllten Prozessor120 und den Übergabe-Prozessor110 angekoppelt ist. - Bei einer Ausführungsform der Erfindung umfaßt der L0-D-Cache
190 zwei L0-D-Cachekomponenten. Eine der L0-D-Komponenten des Cache190 ist an den Übergabe-Prozessor110 und die andere L0-D-Komponente des Cache190 an den spekulativen Prozessor120 angekoppelt. Bei dieser Ausführungsform der Erfindung führen die beiden L0-D-Cachekomponenten Duplikatinformationen. Bei dieser Ausführungsform der Erfindung werden dem spekulativen Prozessor120 zugeordnete Speicheranweisungen/-Befehle (Speichervorgänge) nicht in den L0-D-Cache190 geschrieben. Bei dieser Ausführungsform der Erfindung werden Zeilenlese- und -schreibanforderungen aus einer der L0-D-Cachekomponenten an den L1-Cache175 ausgegeben. Aus dem L1-Cache175 abgerufene Zeilen werden in L0-D-Komponenten des Cache190 gefüllt, die an den Übergabe-Prozessor110 und den spekulativen Prozessor120 angekoppelt sind. Aus dem Übergabe-Prozessor110 ausgegebene Speichervorgänge werden in die L0-D-Cachekomponente geschrieben, die an den spekulativen Prozessor120 angekoppelt ist. Indem sich exakte Kopien von Daten in jeder L0-D-Cachekomponente befinden, ist kein internes Snooping notwendig. - Bei einer Ausführungsform der Erfindung umfaßt der Registerfilepuffer
130 einen Integer-Registerpuffer und einen Prädikatregisterfilepuffer. Bei einer Ausführungsform der Erfindung umfaßt der Integer-Registerfilepuffer mehrere Schreib-Ports, mehrere Checkpoints und mindestens einen Lese-Port. Der Integer-Registerfilepuffer dient zum Übermitteln von Registerwerten aus dem Übergabe-Prozessor110 zu dem spekulativen Prozessor120 . Bei einer Ausführungsform der Erfindung umfaßt der Integer-Registerfilepuffer acht (8) Schreib-Ports, vier (4) Checkpoints und einen (1) Lese-Port, um auf beliebige der Checkpoint-Kontexte zuzugreifen. Bei einer Ausführungsform der Erfindung weist der Integer-Registerfilepuffer ein acht (8) Register breites Array und sechzehn (16) Zeilen auf. Bei einer Ausführungsform der Erfindung umfaßt der Prädikatregisterfilepuffer mehrere Schreib-Ports, mehrere Checkpoints und mindestens einen Lese-Port. Der Prädikatregisterfilepuffer dient zum Übermitteln von Registerwerten aus dem Übergabe-Prozessor110 zu dem spekulativen Prozessor120 und einem an den spekulativen Prozessor120 angekoppelten Registerfile der zweiten Ebene. Bei einer Ausführungsform der Erfindung umfaßt der Prädikatregisterfilepuffer acht (8) Schreib-Ports, vier (4) Checkpoints und einen (1) Lese-Port zum Zugreifen auf beliebige der Checkpoint-Kontexte. Bei einer Ausführungsform der Erfindung weist der Prädikatregisterfilepuffer ein acht (8) Register breites Array und acht (8) Zeilen auf. -
2 zeigt die Übergabe-CPU110 . Bei einer Ausführungsform der Erfindung umfaßt die Übergabe-CPU110 einen Dekodierer211 , ein Scoreboard214 , ein Registerfile212 und Ausführungseinheiten213 . Ähnlich zeigt3 die spekulative CPU120 . Bei einer Ausführungsform der Erfindung umfaßt die spekulative CPU120 einen Dekodierer321 , ein Scoreboard324 , ein Registerfile322 und Ausführungseinheiten323 . Der L2-Cache170 und der L1-Cache175 werden von der Übergabe-CPU110 und der spekulativen CPU120 gemeinsam benutzt. Bei einer Ausführungsform der Erfindung ist der Multiprozessor100 fähig, explizit Multi-Thread-Programme auszuführen. Bei einer anderen Ausführungsform ist der Multiprozessor100 fähig, Ein-Thread-Anwendungen auszuführen, während eine Multi-Thread-Umgebung benutzt wird, ohne die Ein-Thread-Anwendung in einen expliziten Mehrfach-Thread umzusetzen. - Bei einer Ausführungsform der Erfindung beginnt die Programmausführung als ein einzelner Thread auf der Übergabe-CPU
110 oder der spekulativen CPU120 . Bei einer Ausführungsform der Erfindung führt die Übergabe-CPU110 Abruf, Dekodierung, Ausführung und Aktualisierung des Registerfiles212 sowie Ausgeben von Ladeanweisungen/-Befehlen (Ladevorgängen) und Speicheroperationen in den Speicher nach Anweisung durch das Programm durch. Während die Anweisungen dekodiert werden, kann die Übergabe-CPU110 die spekulative CPU120 anwei sen, mit der Ausführung eines spekulativen Threads bei einem bestimmten Programmzählerwert zu beginnen. Dieser Programmzählerwert kann die Adresse der nächsten Anweisung im Speicher sein oder kann durch den Compiler als ein Hint (Hinweis) geliefert werden. Zum Beispiel kann ein Fork an der nächsten Anweisungsadresse ein an einer Call-Anweisung geforkter Thread sein. Die spekulative CPU120 führt ihre Threadausführung fort, bis ein Programmzähler in der Übergabe-CPU110 denselben Punkt in der Programmausführung erreicht, für den der Programmzähler des spekulativen Threads zeigt. Jede Anweisung in dem Programm wird deshalb von der Übergabe-CPU110 abgerufen, ausgegeben und übergeben, auch wenn eine Anweisung zu einem spekulativen Thread gehört. - Bei einer Ausführungsform der Erfindung hat die Doppelausführungsarchitektur des Multiprozessors
100 insofern einen Vorteil, als daß die spekulative CPU120 , die weiter im Programm ausführt, ein hocheffizientes Vorabrufen von Anweisungen und Daten gewährleistet. Außerdem bestimmt die spekulative CPU120 die Richtung vieler Verzweigungen, bevor der Steuerfluß der Übergabe-CPU110 diese Verzweigungen erreicht. Bei einer Ausführungsform der Erfindung empfängt die Übergabe-CPU110 Informationen bezüglich der Steuerflußrichtung von der spekulativen CPU120 , und deshalb kann die Übergabe-CPU110 für viele Verzweigungen eine Verzweigungsvorhersage und die zugeordneten Fehlvorhersagekosten vermeiden. Bei einer Ausführungsform der Erfindung können bei abhängigen und benachbarten Anweisungen, die korrekt durch den spekulativen Thread ausgeführt werden, die Ergebnisse gleichzeitig in einem Übergabezyklus durch die Übergabe-CPU110 übergeben werden, wodurch Zeit gespart wird, die normalerweise zum seriellen Ausführen und Propagieren von Ergebnissen zwischen abhängigen Anweisungen erforderlich ist. - Bei einer Ausführungsform der Erfindung werden Eingangsregisterwerte für den spekulativen Thread durch den Registerpuffer
130 übermittelt. Alle in das Registerfile212 der Übergabe-CPU110 geschriebenen Werte werden auch in den Registerfilepuffer130 geschrieben. Bei einer Ausführungsform der Erfindung ist, wenn der spekulative Thread gespawned wird, ein Schnappschuß des Registerfiles212 in dem Registerfilepuffer130 , der sich zwischen der Übergabe-CPU110 und der spekulativen CPU120 befindet, verfügbar. Anfänglich weisen, wenn ein spe kulativer Thread gestartet wird, keine der Register der spekulativen CPU120 den darin gespeicherten Eingangswert auf. Eingangsregister, die benötigt werden, können dann bei Bedarf aus dem Registerfilepuffer130 gelesen werden. Bei der Erfindung wird das Scoreboard324 in der Dekodierungsstufe der spekulativen CPU120 dazu benutzt, zu verfolgen, welche Register aus dem Registerfilepuffer130 geladen oder durch den spekulativen Thread geschrieben werden. Diese Register sind in dem Registerfile322 gültig. Alle anderen Register werden bei Bedarf aus dem Registerfilepuffer130 gelesen. - Bei einer Ausführungsform der Erfindung werden Eingangsspeicherwerte für den spekulativen Thread aus der kohärenten Cache-Hierarchie gelesen, wodurch der spekulative Thread auf durch den Übergabe-Thread modifizierten Speicher zugreifen kann. Bei einer Ausführungsform der Erfindung wird ein Cache-Kohärenzschema verwendet, bei dem der D-Cache
190 ein Durchschreibecache und der L2-Cache170 ein Rückschreibecache ist, der ein Cache-Kohärenzprotokoll des Typs MESI verwendet (M: modifiziert; E: exklusiv; S: gemeinsam genutzt; I: ungültig). Es ist jedoch zu beachten, daß bei anderen Ausführungsformen der Erfindung auch andere Cache-Kohärenzprotokolle verwendet werden können. - Abhängig von dem Datenfluß in einem bestimmten Programm kann die Übergabe-CPU
110 bestimmte Register- oder Speichereingangswerte erzeugen, nachdem diese Eingaben durch den spekulativen Thread gelesen werden. Bei einer Ausführungsform der Erfindung wird, um die durch den Register- und Speicherdatenfluß auferlegten Beschränkungen zu lockern, eine Wertevorhersage verwendet, um dem spekulativen Thread Anfangseingangswerte zuzuführen. Bei einer Ausführungsform der Erfindung wird ein einfaches Wertevorhersageverfahren mit passiver Vorhersage verwendet. Bei dieser Ausführungsform wird angenommen, daß Register- und Speichereingangswerte zum Zeitpunkt des Spawnens des spekulativen Threads bereits durch die Übergabe-CPU110 erzeugt worden sind. - Bei einer Ausführungsform der Erfindung werden spekulative Ergebnisse in das Registerfile
322 der CPU120 sowie in den Trace-Puffer140 geschrieben. Bei einer Ausführungsform der Erfindung ist der Trace-Puffer140 ein zirkulärer Puffer, der als ein Array mit Kopf- und Schlußzeigern implementiert ist. Bei einer Ausführungsform der Erfindung weisen die Kopf- und Schlußzeiger ein Umlaufbit auf. Bei einer Ausführungsform der Erfindung weist der Trace-Puffer140 ein Array mit einem Lese-Port und einem Schreib-Port auf. Bei dieser Ausführungsform der Erfindung enthält jeder Eintrag genug Byte zum Speichern der Ergebnisse einer Anzahl von Anweisungen, die mindestens gleich der Ausgabebreite der Übergabe-CPU110 ist. Bei dieser Ausführungsform der Erfindung weist jeder Eintrag ein Bit pro Anweisung auf, wobei ein zweiter Schreib-Port zum Markieren falsch vorhergesagter Ladeoperationen dient. - Bei einer Ausführungsform der Erfindung enthält der Trace-Puffer
140 einhundertachtundzwanzig (128) Einträge, die jeweils Ergebnisse für sechs (6) Anweisungen speichern können. Bei einer Ausführungsform der Erfindung enthält der Trace-Puffer140 vier (4) Partitionen zur Unterstützung von vier (4) Threads. Bei einer Ausführungsform der Erfindung umfaßt der Trace-Puffer140 sechzehn (16) Byte zum Speichern von zwei Ausgaben pro Anweisung, vier (4) Byte zum Speichern umbenannter Register und ein (1) Bit zum Markieren, wenn eine Anweisung eine falsch vorhergesagte Ladeoperation ist. Bei einer Ausführungsform der Erfindung kann das falsch vorhergesagte Ladeoperationsbit durch sechs (6) Schreib-Ports aus dem Ladepuffer150 gesetzt werden. Bei einer Ausführungsform der Erfindung wird, wenn eine Thread-Partition voll ist, die spekulative Ausführung fortgesetzt, um in dem LO-I-Cache180 und dem L0-D-Cache190 vorabzurufen, aber es werden keine Ergebnisse in den Trace-Puffer geschrieben. - Bei einer Ausführungsform der Erfindung besitzt die Übergabe-CPU
110 ein Scoreboard214 , das ein Bit pro Register umfaßt. Bei dieser Ausführungsform der Erfindung bewirkt jede Modifikation eines Registers durch die Übergabe-CPU110 zwischen dem Fork-Punkt und dem Join-Punkt eines spekulativen Threads, daß das Register-Scoreboard-Bit gesetzt wird. Während die Übergabe-CPU110 die Ergebnisse des spekulativen Threads zurückzieht, führt sie in dem Scoreboard214 kontinuierlich Buch über alle Register, die falsch vorhergesagt werden. Bei dieser Ausführungsform der Erfindung werden Anweisungen, deren Quellenregister-Scoreboard-Bit gelöscht sind, sicher in das Registerfile212 übergeben. Solche Anweisungen müssen nicht ausgeführt werden, auch wenn sie abhängig sind. Es gibt jedoch bestimmte Ausnahmen, wie zum Beispiel Ladeoperationen und Speicheroperationen. Ausnahmen für Ladeoperation und Speicheroperation müssen an Speicherausführungseinheiten213 ausgegeben werden, um Cache-Verfehlungen zu versorgen und auf Speicherordnungsverletzungen zu prüfen. Außerdem werden Zweigausführungsergebnisse aus der spekulativen CPU120 zu der Übergabe-CPU110 gesendet. Die Zweigvorhersage in der Übergabe-CPU110 kann für bestimmte oder alle durch die spekulative CPU120 ausgeführte Zweige umgangen werden. - Bei einer Ausführungsform der Erfindung snoopen dem Übergabe-Prozessor
110 zugeordnete Ladeoperationen und Speicheroperationen den Ladepuffer150 . Bei einer Ausführungsform der Erfindung wird, wenn eine Anweisung neu abgespielt wird oder wenn eine Anweisung eine falsch vorhergesagte Ladeoperation ist, wird das zugeordnete Zielregisterbit der Anweisung in dem Scoreboard214 gesetzt. Wenn die Anweisung sauber ist, wird ihr Zielregisterbit in dem Scoreboard214 gelöscht. Man beachte, daß eine Anweisung sauber ist, wenn ihre Quellen sauber sind. Das Scoreboard214 wird gelöscht, wenn alle spekulativen Threadanweisungen übergeben sind. - Bei einer Ausführungsform der Erfindung gibt die spekulative CPU
120 keine Speicheranweisungen an den Speicher aus. Bei dieser Ausführungsform der Erfindung werden Speicheranweisungen in den Speicherpuffer160 aufgegeben und Ladeanweisungen werden in den Ladepuffer150 aufgegeben. Bei einer Ausführungsform der Erfindung ist der Speicherpuffer160 ein vollassoziativer Speicherweiterleitungspuffer.4 zeigt die Struktur des Speicherpuffers160 in einer Ausführungsform der Erfindung. In dem Speicherpuffer160 (siehe4 ) umfaßt jeder Eintrag410 einen Etikettenteil420 , einen Gültig-Teil430 , einen Datenteil440 , die Speicheridentifikation (ID)450 und den Thread-ID-Teil460 . Bei einer Ausführungsform der Erfindung enthält der Datenteil440 acht (8) Datenbyte. Bei einer Ausführungsform der Erfindung hält der Gültig-Teil430 acht (8) Bit. Die Speicher-ID450 ist eine eindeutige Speicheranweisungs-ID der letzten in einen Eintrag410 zu schreibenden Speicheranweisung. Bei einer Ausführungsform der Erfindung greifen spekulative Ladeoperationen gleichzeitig mit einem Zugriff auf den L0-D-Cache190 auf den Speicherpuffer160 zu. Wenn die Ladeoperation auf eine Speicheranweisung in dem Speicherpuffer160 stößt, wird der L0-D-Cache190 umgangen und es wird eine Ladeoperation von dem Speicherpuffer160 gelesen. In diesem Fall wird auch die Speicher-ID450 mit den Daten ausgelesen. - Bei einer Ausführungsform der Erfindung kann der spekulative Prozessor
120 Ladedaten entweder aus dem Speicherpuffer160 oder dem L0-D-Cache190 , der dem spekulativen Prozessor120 zugeordnet ist, erhalten. Bei einer Ausführungsform der Erfindung werden Ladeoperationen in den Ladepuffer150 aufgegeben. Bei dieser Ausführungsform der Erfindung wird, wenn eine Ladeoperation aufgegeben wird, im Fall eines Überlaufs des Ladepuffers150 ein Falsch-vorhergesagte-Ladeoperation-Bit in dem Trace-Puffer140 gesetzt. - Bei einer Ausführungsform der Erfindung weist der Speicherpuffer
160 einhundertachtundzwanzig (128) Einträge auf, wobei die Einträge vierfach (4-fach) mengenassoziativ sind. Bei einer Ausführungsform der Erfindung weist der Speicherpuffer160 zwei (2) Speicher- und zwei (2) Lade-Ports auf. Bei einer Ausführungsform der Erfindung ermöglicht der Speicherpuffer160 einen teilweisen Etiketten-Vergleich unter Verwendung virtueller Adressen zur Weiterleitung und einen vollständigen physischen Etiketten-Vergleich zur Validierung der Weiterleitung von Speicher-IDs. Bei einer Ausführungsform der Erfindung speichert der Speicherpuffer160 in den Datenteil440 geschriebene Daten beginnend von dem ersten Byte, um eine Synchronisierungsverzögerung zu vermeiden. Bei einer Ausführungsform der Erfindung weist der Speicherpuffer160 eine Ersetzungsregel auf, die die älteste Speicheroperation bei einer Speicherverfehlung ersetzt und andernfalls einen Treffereintrag ersetzt. Bei einer Ausführungsform der Erfindung ist die Thread-ID460 ein Index auf eine Partition in dem Trace-Puffer140 und weist ein Umlaufbit auf. Bei einer Ausführungsform der Erfindung wird durch Verwendung eines Ports (nicht gezeigt) eines inhaltsadressierbaren Speichers (CAM) für die Thread-ID ein globales Rücksetzen der Thread-Einträge durchgeführt. - Bei einer Ausführungsform der Erfindung werden spekulative Ladeoperationen in dem Ladepuffer
150 aufgegeben. Bei einer Ausführungsform der Erfindung ist der Ladepuffer150 ein an die Übergabe-CPU110 angekoppelter mengenassoziativer Ladepuffer.5 zeigt die Struktur des Ladepuffers150 . In dem (in5 dargestellten) Ladepuffer150 umfaßt jeder Eintrag510 einen Etikettenteil520 , einen Eintrag-Gültig-Bit-Teil530 , die Lade-ID540 und die Lade-Thread-ID550 . Bei einer Ausführungsform der Erfindung umfaßt der Etikettenteil520 ein teilweises Adressenetikett. Bei einer anderen Ausführungsform weist jeder Eintrag510 zusätzlich eine Speicher-Thread-ID, eine Speicher-ID und ein Speicher-Gültig-Bit (nicht gezeigt) auf. Die Speicher-ID ist die ID der weiterleitenden Speicheranweisung, wenn die Ladeanweisung auf den Speicherpuffer160 getroffen ist. - Bei einer Ausführungsform der Erfindung ist die Speicher-ID und/oder die Last-ID
550 ein Index in einen Eintrag in dem Trace-Puffer140 , der pro Anweisung eindeutig ist. Bei einer Ausführungsform der Erfindung wird das Speicher-Gültig-Bit auf Null („0") gesetzt, wenn eine Ladeoperation auf den Speicherpuffer160 trifft. Bei dieser Ausführungsform der Erfindung wird das Speicher-Gültig-Bit auf eins („1") gesetzt, wenn die Ladeoperation den Speicherpuffer160 verfehlt hat. Bei einer Ausführungsform der Erfindung löscht eine wiederabgespielte Speicheroperation, die eine übereinstimmende Speicher-ID aufweist, das Speicher-Gültig-Bit (setzt es auf „0") und setzt das Falsch-vorhergesagt-Bit in dem Ladeeintrag in den Trace-Puffer140 . Bei einer Ausführungsform der Erfindung löscht eine spätere Speicheroperation in dem Programm, die mit dem Etikettenteil520 übereinstimmt, das Speicher-Gültig-Bit (setzt es auf „0") und setzt das Falsch-vorhergesagt-Bit in dem Ladeeintrag in den Trace-Puffer140 . Bei einer Ausführungsform der Erfindung setzt eine saubere (nicht wiederabgespielte) Speicheroperation, die mit der Speicher-ID übereinstimmt, das Speicher-Gültig-Bit auf eins („1"). Bei einer Ausführungsform der Erfindung wird, wenn eine saubere (nicht wieder- abgespielte) Ladeoperation mit keinem Etikett520 übereinstimmt, oder bei einem Ladervergleichsetikett520 mit gelöschtem (auf „0" gesetztem) Speicher-Gültig-Bit die Pipeline entleert, das Falsch-vorhergesagt-Bit in dem Ladeeintrag in den Trace-Puffer140 wird auf eins („1") gesetzt und die Ladeanweisung wird neu gestartet. Bei einer Ausführungsform der Erfindung wird, wenn ein Ladeeintrag zurückgezogen wird, der Eintrag-Gültig-Bit-Teil530 gelöscht. - Bei einer Ausführungsform der Erfindung weist der Ladepuffer
150 vierundsechzig (64) Einträge auf, die vierfach (4-fach) mengenassoziativ sind. Bei einer Ausführungsform der Erfindung weist der Ladepuffer150 eine Regel auf, die eine älteste Ladeoperation ersetzt. Bei einer Ausführungsform der Erfindung wird durch Verwendung eines (nicht gezeigten) Thread-ID-CAM-Ports ein globales Rücksetzen der Thread-Einträge durchgeführt. - Bei einer Ausführungsform der Erfindung gibt die Übergabe-CPU
110 alle Ladeoperationen und Speicheroperationen an die Speicherausführungseinheiten213 (Adressenerzeugungseinheit, Ladepuffer, Daten-Cache) aus, einschließlich Ladeoperationen, die korrekt durch den spekulativen Prozessor120 ausgeführt wurden. Gültige Ladedaten mit potentiell abhängigen Anweisungen könnten auch dann übergeben werden, wenn eine durch den Übergabeprozessor110 ausgegebene Ladeanweisung den L0-D-Cache190 verfehlt. Bei einer Ausführungsform der Erfindung wird eine Ladeverfehlungsanforderung zu dem L2-Cache170 gesendet, um die Zeile zu füllen, aber es wird verhindert, daß die Rückkehrdaten das Registerfile212 beschreiben. Bei einer Ausführungsform der Erfindung greift jede Ladeanweisung auf den Ladepuffer150 zu. Eine Ladeverfehlung des Ladepuffers150 bewirkt eine Entleerung der Pipeline und einen Neustart der Ladeanweisung und aller ihr folgenden Anweisungen. - Bei einer Ausführungsform der Erfindung greifen auch Speicheroperationen auf den Ladepuffer
150 zu. Bei einer Ausführungsform der Erfindung wird, wenn eine Adressenübereinstimmungsspeicheroperation, die auch mit der Speicher-ID540 übereinstimmt, das Gültigkeitsbit530 in einem Eintrag510 gesetzt. Bei dieser Ausführungsform der Erfindung invalidiert eine spätere Speicheroperation, die auf einen Eintrag510 trifft, den Eintrag510 . Bei dieser Ausführungsform der Erfindung wird, wenn eine Speicheroperation einen Eintrag510 invalidiert, eine LadeID550 zur Indizierung des Trace-Puffers140 verwendet, um das Verfehlung-vorhergesagte-Ladeoperation-Bit zu setzen. Bei dieser Ausführungsform der Erfindung wird, wenn eine Ladeoperation abgerufen wird und das Falsch-vorhergesagte-Ladeoperation-Bit in dem Trace-Puffer140 gesetzt gefunden wird, ein Registerbit in dem Scoreboard214 gesetzt. Diese Register-Scoreboard-Bit kann auch als das Lade-Ziel-Scoreboard-Bit bezeichnet werden. Bei dieser Ausführungsform der Erfindung verringert diese Optimierung die Anzahl von Entleerungen, die als Ergebnis von Ladeverfehlungen in dem Ladepuffer150 auftreten. Es sollte beachtet werden, daß die Übergabe-CPU110 gleichzeitig den Trace-Puffer140 und den L0-I-Cache180 liest. Bei dieser Ausführungsform der Erfin dung gibt dieses gleichzeitige Lesen des Trace-Puffers140 und des L0-I-Cache180 das Setzen eines Scoreboard-Registerbit in dem Scoreboard214 für eine falsch vorhergesagte Ladeanweisung rechtzeitig frei, ohne daß die Ausführungspipeline angehalten werden muß. - Bei einer Ausführungsform der Erfindung beginnt die Ausführung des „Wiederabspielmodus" bei der ersten Anweisung eines spekulativen Threads. Wenn eine Partition in dem Trace-Puffer
140 leer wird, werden der Wiederabspielmodus sowie die Ausführung des spekulativen Threads beendet. Bei einer Ausführungsform der Erfindung werden Anweisungsausgabe- und Registerumbenennungsstufen folgendermaßen modifiziert: keine Registerumbenennung, da der Trace-Puffer140 Namen liefert; alle Anweisungen bis zu der nächsten wiederabgespielten Anweisung, einschließlich abhängige Anweisungen, werden ausgegeben; saubere (nicht wieder- abgespielte) Anweisungen werden als Leeranweisungen (No-Operation-Anweisungen (NOPs)) ausgegeben; alle Ladeoperationen und Speicheroperationen werden an den Speicher ausgegeben und saubere Anweisungsergebnisse werden aus dem Trace-Puffer140 in das Registerfile130 übergeben. -
6 zeigt ein System mit einer Ausführungsform der Erfindung. Das System600 umfaßt einen Multiprozessor100 , Hauptspeicher610 , eine Nordbrücke620 , eine Verteilerverbindung630 und eine Südbrücke640 . Die Nordbrücke620 ist in der Regel hauptsächlich für die Multiprozessorschnittstelle verantwortlich. Zusätzlich kann die Nordbrücke620 auch Steuerungen unter anderem für einen beschleunigten Graphikport (AGP), Speicher610 und eine Verteilerverbindung630 aufweisen. Die Südbrücke640 ist in der Regel unter anderem für eine Festplattensteuerung, eine Host-Steuerung des universellen seriellen Busses (USB), eine Eingabe-/Ausgabe-(E/A-)Steuerung und etwaige integrierte Sound-Einrichtungen verantwortlich. -
7 zeigt einen Prozess für eine Ausführungsform der Erfindung. Der Prozess700 beginnt mit dem Block170 , der die Ausführung eines Programm-Threads durch einen ersten Prozessor, wie zum Beispiel den Übergabe-Prozessor110 , startet. Der Block720 ruft Befehle durch den ersten Prozessor ab. Der Block730 dekodiert Befehle durch den ersten Prozessor. Der Block740 weist einen zweiten Prozessor, wie zum Beispiel den spekulativen Prozessor120 , an, mit der Programmausführung desselben Threads wie der erste Prozessor zu beginnen, aber an einer weiter stromabwärts in dem Programm befindlichen Stelle. Der Block750 beginnt mit der Ausführung des Programm-Threads durch den zweiten Prozessor. Im Block751 ruft der zweite Prozessor Befehle ab. Im Block752 führt der zweite Prozessor eine Dekodierung durch. Im Block753 aktualisiert der zweite Prozessor ein Registerfile. Im Block754 sendet der zweite Prozessor Steuerflußinformationen zu dem ersten Prozessor. Im Block760 aktualisiert der erste Prozessor ein Registerfile. Block770 bestimmt, ob der erste Prozessor denselben Ausführungspunkt wie der zweite Prozessor erreicht hat. Wenn Block770 bestimmt, daß der erste Prozessor noch nicht denselben Punkt in dem Programm erreicht hat, wird der Prozess700 mit dem Block780 fortgesetzt, um die Ausführung fortzusetzen. Wenn Block770 bestimmt, daß der erste Prozessor denselben Punkt in der Ausführung wie der zweite Prozessor erreicht hat, bestimmt Block790 , ob das Programm abgeschlossen ist. Wenn Block790 bestimmt, daß das Programm abgeschlossen ist, stoppt der Prozessor700 , andernfalls wird der Prozess700 bei A fortgesetzt. - Bei Benutzung der oben besprochenen Ausführungsformen der Erfindung kann die Leistungsfähigkeit bei der Ausführung von Ein-Thread-Anwendungen als Ergebnis des spekulativen Multi-Thread-Vorabrufens mit großer Reichweite und der Vorausführung gesteigert werden. Die Ausführungsformen der Erfindung können mit in-Reihenfolge- und außer-Reihenfolge-Multi-Thread-Prozessoren implementiert werden.
- Die obigen Ausführungsformen können auch auf einer Einrichtung oder einem maschinenlesbaren Medium gespeichert und durch eine Maschine gelesen werden, um Anweisungen durchzuführen. Das maschinenlesbare Medium umfaßt jeden beliebigen Mechanismus, der Informationen in durch eine Maschine (z. B. einen Computer) lesbare Form bereitstellt (d. h. speichert und/oder überträgt). Maschinenlesbare Medien sind zum Beispiel Nurlesespeicher (ROM); Direktzugriffspeicher (RAM); magnetische Plattenspeichermedien; optische Speichermedien; Flash-Speicherbausteine; elektrische, optische, akustische oder anderweitig propagierte Signale (z. B. Trägerwellen, Infrarotsignale, Digitalsignale usw.). Die Einrichtung bzw. das maschinenlesbare Medium kann einen Halbleiterspeicherbaustein und/oder eine rotierende magnetische oder optische Platte enthalten. Die Einrichtung oder das maschinenlesbare Medium können verteilt sein, wenn Partitionen von Anweisungen auf verschiedene Maschinen aufgetrennt wurden, wie zum Beispiel über eine Verbindung von Computern.
- Obwohl beispielhafte Ausführungsformen beschrieben und in den beigefügten Zeichnungen gezeigt wurden, versteht sich, daß diese Ausführungsformen die allgemeine Erfindung lediglich veranschaulichen und nicht einschränken, und daß die vorliegende Erfindung nicht auf die spezifischen gezeigten und beschriebenen Konstruktionen und Anordnungen begrenzt ist, da Durchschnittsfachleuten verschiedene andere Modifikationen einfallen können.
Claims (25)
- Vorrichtung, welche umfaßt: einen ersten Prozessor und einen zweiten Prozessor; mehrere an den ersten Prozessor und den zweiten Prozessor angekoppelte Speichereinrichtungen; einen an den ersten Prozessor und den zweiten Prozessor angekoppelten Registerfilepuffer; einen an den ersten Prozessor und den zweiten Prozessor angekoppelten Trace-Puffer; wobei der erste Prozessor und der zweite Prozessor dafür eingerichtet sind, unter Verwendung von Multi-Thread-Betriebsmitteln Ein-Thread-Anwendungen durchzuführen, indem der erste Prozessor mehrere Anweisungen in einem ersten Thread ausführt, wobei alle in das Registerfile des ersten Prozessors geschriebenen Werte auch in den Registerfilepuffer geschrieben werden; der zweite Prozessor nach Anweisung durch den ersten Prozessor mit der Programmausführung desselben Thread an einer stromabwärts befindlichen Stelle beginnt, wobei der zweite Prozessor die von dem zweiten Prozessor zur Ausführung des Thread benötigten Eingangsregisterwerte bei Bedarf aus dem Registerfilepuffer liest, wobei ein Scoreboard in der Dekodierungsstufe des zweiten Prozessors dazu benutzt wird, zu verfolgen, welche Register bei der Ausführung des Thread durch den zweiten Prozessor geschrieben sind oder aus dem Registerfilepuffer bei Bedarf noch gelesen werden müssen; die Ergebnisse bei der Ausführung des Thread durch den zweiten Prozessor in das Registerfile des zweiten Prozessors sowie in den Trace-Puffer geschrieben werden; der zweite Prozessor Steuerflußinformationen zu dem ersten Prozessor sendet; und wenn der erste Prozessor einen Punkt im Thread erreicht hat, an dem der zweite Prozessor war, der erste Prozessor die Ausführung eines Teils von Anweisungen des Thread durch Übergeben der Ergebnisse des Teils von Anweisungen aus dem Trace-Puffer in das Registerfile des ersten Prozessors vermeidet.
- Vorrichtung nach Anspruch 1, wobei die Speichervorrichtungen mehrere Cache-Einrichtungen umfassen.
- Vorrichtung nach Anspruch 1, bei welcher der erste Prozessor an mindestens eine von mehreren Daten-Cache-Einrichtungen der Ebene Null (L0) und an mindestens eine von mehreren L0-Anweisungs-Cache-Einrichtungen angekoppelt ist, und der zweite Prozessor an mindestens eine der mehreren L0-Daten-Cache-Einrichtungen und mindestens eine der mehreren L0-Anweisungs-Cache-Einrichtungen angekoppelt ist.
- Vorrichtung nach Anspruch 3, wobei jede der L0-Daten-Cache-Einrichtungen exakte Kopien von Daten-Cache-Anweisungen aufweist und jede der mehreren L0-Anweisungs-Cache-Einrichtungen exakte Kopien von Anweisungs-Cache-Anweisungen aufweist.
- Vorrichtung nach Anspruch 1, wobei die Speicheranweisungspuffer mindestens einen Speicherweiterleitungspuffer und mindestens einen Ladeordnungspuffer enthalten.
- Vorrichtung nach Anspruch 5, wobei mindestens ein Speicherweiterleitungspuffer eine Struktur mit mehreren Einträgen umfaßt, wobei jeder der mehreren Einträge einen Etikettenteil, einen Gültigkeitsteil, einen Datenteil, einen Speicheranweisungsidentifikations-(ID-)Teil und einen Thread-ID-Teil aufweist.
- Vorrichtung nach Anspruch 6, wobei der mindestens eine Ladeordnungspuffer eine Struktur mit mehreren Einträgen umfaßt, wobei jeder der Einträge einen Etikettenteil, einen Eintraggültigkeitsteil, einen Ladeidentifikations-(ID-)Teil und einen Lade-Thread-ID-Teil aufweist.
- Vorrichtung nach Anspruch 7, wobei jeder der mehreren Einträge weiterhin einen Speicher-Thread-ID-Teil, einen Speicheranweisungs-ID-Teil und einen Speicheranweisungsgültigkeitsteil aufweist.
- Vorrichtung nach Anspruch 1, wobei der Trace-Puffer ein zirkulärer Puffer mit einem Array mit Kopf- und Schlußzeigern ist, wobei die Kopf- und Schlußzeiger ein Umlaufbit aufweisen.
- Vorrichtung nach Anspruch 1, wobei der Registerfilepuffer einen Integer-Registerfilepuffer und einen Prädikat-Registerfilepuffer umfaßt.
- Verfahren mit den folgenden Schritten: Ausführen mehrerer Anweisungen in einem ersten Thread durch einen ersten Prozessor, wobei alle in das Registerfile des ersten Prozessors geschriebenen Werte auch in einen Registerfilepuffer geschrieben werden; Ausführen der mehreren Anweisungen in dem ersten Thread durch einen zweiten Prozessor nach Anweisung durch den ersten Prozessor, wobei der zweite Prozessor die Programmausführung desselben Thread an einer stromabwärts befindlichen Stelle beginnt und die von dem zweiten Prozessor zur Ausführung des Thread benötigten Eingangsregisterwerte bei Bedarf aus dem Registerfilepuffer liest, wobei ein Scoreboard in der Dekodierungsstufe des zweiten Prozessors dazu benutzt wird, zu verfolgen, welche Register bei der Ausführung des Thread durch den zweiten Prozessor geschrieben sind oder aus dem Registerfilepuffer bei Bedarf noch gelesen werden müssen; Schreiben der Ergebnisse bei der Ausführung des Thread durch den zweiten Prozessor in das Registerfile des zweiten Prozessors sowie in einen Trace-Puffer; Senden von Steuerflußinformationen von dem zweiten Prozessor zu dem ersten Prozessor; und wenn der erste Prozessor einen Punkt im Thread erreicht hat, an dem der zweite Prozessor war, der erste Prozessor die Ausführung eines Teils von Anweisungen des Thread durch Übergeben der Ergebnisse des Teils von Anweisungen aus dem Trace-Puffer in das Registerfile des ersten Prozessors vermeidet.
- Verfahren nach Anspruch 11, welches weiterhin umfaßt: Duplizieren von Speicherinformationen in separaten Speichereinrichtungen für einen unabhängigen Zugriff durch den ersten Prozessor und den zweiten Prozessor.
- Verfahren nach Anspruch 13, welches weiterhin umfaßt: Löschen eines Speichergültigkeitsbits und Setzen eines Falsch-vorhergesagt-Bits in einem Ladeeintrag in dem Trace-Puffer, wenn eine wiederabgespielte Speicheranweisung einen übereinstimmenden Speicheridentifikations-(ID-)Teil aufweist.
- Verfahren nach Anspruch 11, welches weiterhin umfaßt: Setzen eines Speichergültigkeitsbit, wenn eine Speicheranweisung, die nicht wiederabgespielt wird, mit einem Speicheridentifikations-(ID-)Teil übereinstimmt.
- Verfahren nach Anspruch 11, welches weiterhin umfaßt: Entleeren einer Pipeline, Setzen eines Falsch-vorhergesagt-Bit in einem Ladeeintrag in dem Trace-Puffer und Neustarten einer Ladeanweisung, wenn eine der Ladeoperationen nicht wieder- abgespielt wird und nicht mit einem Etikettenteil in einem Ladepuffer übereinstimmt und/oder die Ladeanweisung mit dem Etikettenteil in dem Ladepuffer übereinstimmt, während ein Speicher-Gültig-Bit nicht gesetzt ist.
- Verfahren nach Anspruch 11, welches weiterhin umfaßt: Ausführen eines Wiederabspielmodus bei einer ersten Anweisung eines spekulativen Threads; Beenden des Abspielmodus und der Ausführung des spekulativen Threads, wenn sich eine Partition in dem Trace-Puffer einem Leer-Zustand nähert.
- Verfahren nach Anspruch 11, welches weiterhin umfaßt: Bereitstellen von Namen aus dem Trace-Puffer, um eine Registerumbenennung auszuschließen; Ausgeben aller Anweisungen bis zu einer nächsten wiederabgespielten Anweisung, einschließlich abhängiger Anweisungen; Ausgeben von Anweisungen, die nicht wiederabgespielt werden, als Leeranweisung (NOPs); Ausgeben aller Ladeanweisungen und Speicheranweisungen an den Speicher; Übergeben nicht wiederabgespielter Anweisungen aus dem Trace-Puffer an das Registerfile.
- Verfahren nach Anspruch 11, welches weiterhin umfaßt: Löschen eines Gültig-Bit in einem Eintrag in einem Ladepuffer, wenn der Ladeeintrag zurückgezogen wird.
- System, umfassend eine Vorrichtung nach Anspruch 1 mit einem an den ersten Prozessor und den zweiten Prozessor angekoppelten Bus sowie einem an den Bus angekoppelten Hauptspeicher.
- System nach Anspruch 19, wobei die lokalen Speichereinrichtungen mehrere Cache-Einrichtungen umfassen.
- System nach Anspruch 20, wobei der erste Prozessor an mindestens eine von mehreren Daten-Cache-Einrichtungen der Ebene Null (L0) und an mindestens eine von mehreren L0-Anweisungs-Cache-Einrichtungen angekoppelt ist, und der zweite Prozessor an mindestens eine der L0-Daten-Cache-Einrichtungen und mindestens eine der L0-Anweisungs-Cache-Einrichtungen angekoppelt ist.
- System nach Anspruch 21, wobei jede der L0-Daten-Cache-Einrichtungen exakte Kopien von Daten-Cache-Anweisungen aufweist und jede der L0-Anweisungs-Cache-Einrichtungen exakte Kopien von Anweisungs-Cache-Anweisungen aufweist.
- System nach Anspruch 21, wobei der erste Prozessor und der zweite Prozessor jeweils eine Cache-Einrichtung der ersten Ebene (L1) und eine Cache-Einrichtung der zweiten Ebene (L2) gemeinsam benutzen.
- System nach Anspruch 19, wobei die mehreren Speicheranweisungspuffer mindestens einen Speicherweiterleitungspuffer und mindestens einen Ladeordnungspuffer enthalten.
- System nach Anspruch 24, wobei der mindestens eine Speicherweiterleitungspuffer eine Struktur mit mehreren Einträgen umfaßt, wobei jeder der mehreren Einträge einen Etikettenteil, einen Gültigkeitsteil, einen Datenteil, einen Speicheranweisungsidentifikations-(ID-)Teil und einen Thread-ID-Teil aufweist.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/896,526 | 2001-06-28 | ||
US09/896,526 US7752423B2 (en) | 2001-06-28 | 2001-06-28 | Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor |
PCT/US2002/019101 WO2003003196A2 (en) | 2001-06-28 | 2002-06-14 | A multithreaded processor capable of implicit multithreaded execution of a single-thread program |
Publications (2)
Publication Number | Publication Date |
---|---|
DE10296989T5 DE10296989T5 (de) | 2004-10-14 |
DE10296989B4 true DE10296989B4 (de) | 2008-06-26 |
Family
ID=25406358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10296989T Expired - Fee Related DE10296989B4 (de) | 2001-06-28 | 2002-06-14 | Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms |
Country Status (8)
Country | Link |
---|---|
US (1) | US7752423B2 (de) |
JP (1) | JP2005521924A (de) |
KR (1) | KR100783828B1 (de) |
CN (1) | CN100403257C (de) |
DE (1) | DE10296989B4 (de) |
GB (2) | GB2393297B (de) |
HK (1) | HK1062056A1 (de) |
WO (1) | WO2003003196A2 (de) |
Families Citing this family (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030188141A1 (en) * | 2002-03-29 | 2003-10-02 | Shailender Chaudhry | Time-multiplexed speculative multi-threading to support single-threaded applications |
US7739483B2 (en) * | 2001-09-28 | 2010-06-15 | Intel Corporation | Method and apparatus for increasing load bandwidth |
US7500240B2 (en) * | 2002-01-15 | 2009-03-03 | Intel Corporation | Apparatus and method for scheduling threads in multi-threading processors |
US7000091B2 (en) * | 2002-08-08 | 2006-02-14 | Hewlett-Packard Development Company, L.P. | System and method for independent branching in systems with plural processing elements |
US20040193849A1 (en) * | 2003-03-25 | 2004-09-30 | Dundas James D. | Predicated load miss handling |
US7496915B2 (en) * | 2003-04-24 | 2009-02-24 | International Business Machines Corporation | Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes |
US20040225870A1 (en) * | 2003-05-07 | 2004-11-11 | Srinivasan Srikanth T. | Method and apparatus for reducing wrong path execution in a speculative multi-threaded processor |
US20040255104A1 (en) * | 2003-06-12 | 2004-12-16 | Intel Corporation | Method and apparatus for recycling candidate branch outcomes after a wrong-path execution in a superscalar processor |
US7444497B2 (en) * | 2003-12-30 | 2008-10-28 | Intel Corporation | Managing external memory updates for fault detection in redundant multithreading systems using speculative memory support |
US7299336B2 (en) * | 2004-08-18 | 2007-11-20 | International Business Machines Corporation | Scaling address space utilization in a multi-threaded, multi-processor computer |
US7278058B1 (en) * | 2004-08-25 | 2007-10-02 | Unisys Corporation | Methods and apparatus to diagnose software |
US7774531B1 (en) * | 2005-09-13 | 2010-08-10 | Oracle America, Inc. | Allocating processor resources during speculative execution using a temporal ordering policy |
WO2007038445A2 (en) * | 2005-09-26 | 2007-04-05 | Advanced Cluster Systems, Llc | Clustered computer system |
US8082289B2 (en) * | 2006-06-13 | 2011-12-20 | Advanced Cluster Systems, Inc. | Cluster computing support for application programs |
CN101529377B (zh) * | 2006-10-27 | 2016-09-07 | 英特尔公司 | 处理器中多线程之间通信的方法、装置和系统 |
US7797514B2 (en) * | 2006-11-16 | 2010-09-14 | Texas Instruments Incorporated | Scalable multi-threaded sequencing/synchronizing processor architecture |
US7650485B1 (en) * | 2007-04-10 | 2010-01-19 | Sun Microsystems, Inc. | Structure and method for achieving very large lookahead instruction window via non-sequential instruction fetch and issue |
US8484516B2 (en) * | 2007-04-11 | 2013-07-09 | Qualcomm Incorporated | Inter-thread trace alignment method and system for a multi-threaded processor |
JP5105359B2 (ja) * | 2007-12-14 | 2012-12-26 | 富士通株式会社 | 中央処理装置、選択回路および選択方法 |
US9098625B2 (en) * | 2008-02-29 | 2015-08-04 | International Business Machines Corporation | Viral trace |
US8195896B2 (en) * | 2008-06-10 | 2012-06-05 | International Business Machines Corporation | Resource sharing techniques in a parallel processing computing system utilizing locks by replicating or shadowing execution contexts |
KR101233810B1 (ko) * | 2008-06-17 | 2013-02-18 | 주식회사 미라지웍스 | 컴퓨터의 시스템자원 및 프로세스의 보호 및 격리장치와 그방법 |
US8933953B2 (en) * | 2008-06-30 | 2015-01-13 | Intel Corporation | Managing active thread dependencies in graphics processing |
US9672019B2 (en) | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US10621092B2 (en) | 2008-11-24 | 2020-04-14 | Intel Corporation | Merging level cache and data cache units having indicator bits related to speculative execution |
US9189233B2 (en) | 2008-11-24 | 2015-11-17 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
JP5547208B2 (ja) * | 2008-11-24 | 2014-07-09 | インテル コーポレイション | シーケンシャル・プログラムを複数スレッドに分解し、スレッドを実行し、シーケンシャルな実行を再構成するシステム、方法および装置 |
US9690625B2 (en) * | 2009-06-16 | 2017-06-27 | Oracle America, Inc. | System and method for out-of-order resource allocation and deallocation in a threaded machine |
US20110320787A1 (en) * | 2010-06-28 | 2011-12-29 | Qualcomm Incorporated | Indirect Branch Hint |
US9424190B2 (en) * | 2011-08-19 | 2016-08-23 | Freescale Semiconductor, Inc. | Data processing system operable in single and multi-thread modes and having multiple caches and method of operation |
US9317429B2 (en) * | 2011-09-30 | 2016-04-19 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy over common memory channels |
EP2761464B1 (de) | 2011-09-30 | 2018-10-24 | Intel Corporation | Vorrichtung und verfahren zur implementierung einer mehrstufigen speicherhierarchie mit verschiedenen betriebsarten |
EP3712774B1 (de) | 2011-09-30 | 2023-02-15 | Tahoe Research, Ltd. | Vorrichtung und verfahren zur implementierung einer mehrstufigen speicherhierarchie |
WO2013048493A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Memory channel that supports near memory and far memory access |
US9417855B2 (en) | 2011-09-30 | 2016-08-16 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
US8966232B2 (en) * | 2012-02-10 | 2015-02-24 | Freescale Semiconductor, Inc. | Data processing system operable in single and multi-thread modes and having multiple caches and method of operation |
EP2862061A4 (de) | 2012-06-15 | 2016-12-21 | Soft Machines Inc | Speicherwarteschlange für virtuelle last mit dynamischem versandfenster mit einheitlicher struktur |
TWI599879B (zh) | 2012-06-15 | 2017-09-21 | 英特爾股份有限公司 | 在處理器中之免消歧義失序載入儲存佇列方法和微處理器 |
KR20170102576A (ko) | 2012-06-15 | 2017-09-11 | 인텔 코포레이션 | 분산된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐 |
KR101996592B1 (ko) | 2012-06-15 | 2019-07-04 | 인텔 코포레이션 | 명확화 없는 비순차 load store 큐를 갖는 재정렬된 투기적 명령어 시퀀스들 |
CN104583956B (zh) | 2012-06-15 | 2019-01-04 | 英特尔公司 | 用于实现加载存储重新排序和优化的指令定义 |
KR101804027B1 (ko) * | 2012-06-15 | 2017-12-01 | 인텔 코포레이션 | 메모리로부터 순차적으로 판독하는 load들을 구성하는 메모리 일관성 모델에서 비순차 load들을 갖는 세마포어 방법 및 시스템 |
CN104823168B (zh) | 2012-06-15 | 2018-11-09 | 英特尔公司 | 用于实现从由加载存储重新排序和优化导致的推测性转发遗漏预测/错误中恢复的方法和系统 |
US9384002B2 (en) * | 2012-11-16 | 2016-07-05 | International Business Machines Corporation | Speculative finish of instruction execution in a processor core |
WO2014142704A1 (en) | 2013-03-15 | 2014-09-18 | Intel Corporation | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture |
CN104111868B (zh) * | 2013-04-22 | 2017-08-11 | 华为技术有限公司 | 一种推测多线程调度方法及装置 |
US9891936B2 (en) | 2013-09-27 | 2018-02-13 | Intel Corporation | Method and apparatus for page-level monitoring |
CN104794128B (zh) * | 2014-01-20 | 2018-06-22 | 阿里巴巴集团控股有限公司 | 数据处理方法和装置 |
US9354883B2 (en) * | 2014-03-27 | 2016-05-31 | International Business Machines Corporation | Dynamic enablement of multithreading |
TWI553484B (zh) * | 2014-04-01 | 2016-10-11 | Nat Univ Chung Cheng | 前瞻臆測處理裝置及其處理方法 |
KR20160054850A (ko) * | 2014-11-07 | 2016-05-17 | 삼성전자주식회사 | 다수의 프로세서들을 운용하는 장치 및 방법 |
GB2549239A (en) | 2014-11-13 | 2017-10-18 | Advanced Risc Mach Ltd | Context sensitive barriers in data processing |
US9928075B2 (en) * | 2015-02-13 | 2018-03-27 | International Business Machines Corporation | Load queue entry reuse for operand store compare history table update |
US9715390B2 (en) * | 2015-04-19 | 2017-07-25 | Centipede Semi Ltd. | Run-time parallelization of code execution based on an approximate register-access specification |
US10558463B2 (en) | 2016-06-03 | 2020-02-11 | Synopsys, Inc. | Communication between threads of multi-thread processor |
US10318302B2 (en) * | 2016-06-03 | 2019-06-11 | Synopsys, Inc. | Thread switching in microprocessor without full save and restore of register file |
US10628320B2 (en) | 2016-06-03 | 2020-04-21 | Synopsys, Inc. | Modulization of cache structure utilizing independent tag array and data array in microprocessor |
US10552158B2 (en) | 2016-08-18 | 2020-02-04 | Synopsys, Inc. | Reorder buffer scoreboard having multiple valid bits to indicate a location of data |
US10613859B2 (en) | 2016-08-18 | 2020-04-07 | Synopsys, Inc. | Triple-pass execution using a retire queue having a functional unit to independently execute long latency instructions and dependent instructions |
US10489273B2 (en) | 2016-10-20 | 2019-11-26 | Microsoft Technology Licensing, Llc | Reuse of a related thread's cache while recording a trace file of code execution |
CN115408291A (zh) * | 2016-11-11 | 2022-11-29 | 微软技术许可有限责任公司 | 用于时间旅行调试和分析的计算机系统、计算机系统处实施的方法和硬件存储设备 |
CN109937408A (zh) * | 2016-11-14 | 2019-06-25 | 深圳市大疆创新科技有限公司 | 处理器间的数据流调度 |
US10275250B2 (en) * | 2017-03-06 | 2019-04-30 | Arm Limited | Defer buffer |
US10318332B2 (en) | 2017-04-01 | 2019-06-11 | Microsoft Technology Licensing, Llc | Virtual machine execution tracing |
US10356015B2 (en) * | 2017-04-27 | 2019-07-16 | Dell Products L.P. | Execution traces |
CN109375991B (zh) * | 2017-08-10 | 2021-07-27 | 中国石油化工股份有限公司 | 一种将单进程改造为多进程的方法及系统 |
US11907091B2 (en) | 2018-02-16 | 2024-02-20 | Microsoft Technology Licensing, Llc | Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches |
CN117270972B (zh) * | 2023-11-21 | 2024-03-15 | 芯来智融半导体科技(上海)有限公司 | 指令处理方法、装置、设备和介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5642478A (en) * | 1994-12-29 | 1997-06-24 | International Business Machines Corporation | Distributed trace data acquisition system |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69131228T2 (de) * | 1990-08-23 | 1999-09-23 | Cray Research Inc | Doppelebenenablauffolgeplanung von prozessen |
US6161167A (en) | 1997-06-27 | 2000-12-12 | Advanced Micro Devices, Inc. | Fully associate cache employing LRU groups for cache replacement and mechanism for selecting an LRU group |
US6233599B1 (en) | 1997-07-10 | 2001-05-15 | International Business Machines Corporation | Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers |
US5961631A (en) * | 1997-07-16 | 1999-10-05 | Arm Limited | Data processing apparatus and method for pre-fetching an instruction in to an instruction cache |
US6463522B1 (en) * | 1997-12-16 | 2002-10-08 | Intel Corporation | Memory system for ordering load and store instructions in a processor that performs multithread execution |
US6507862B1 (en) | 1999-05-11 | 2003-01-14 | Sun Microsystems, Inc. | Switching method in a multi-threaded processor |
US6353881B1 (en) * | 1999-05-17 | 2002-03-05 | Sun Microsystems, Inc. | Supporting space-time dimensional program execution by selectively versioning memory updates |
US6574725B1 (en) | 1999-11-01 | 2003-06-03 | Advanced Micro Devices, Inc. | Method and mechanism for speculatively executing threads of instructions |
US6629271B1 (en) * | 1999-12-28 | 2003-09-30 | Intel Corporation | Technique for synchronizing faults in a processor having a replay system |
US20010037447A1 (en) | 2000-04-19 | 2001-11-01 | Mukherjee Shubhendu S. | Simultaneous and redundantly threaded processor branch outcome queue |
US6598122B2 (en) * | 2000-04-19 | 2003-07-22 | Hewlett-Packard Development Company, L.P. | Active load address buffer |
US6757811B1 (en) * | 2000-04-19 | 2004-06-29 | Hewlett-Packard Development Company, L.P. | Slack fetch to improve performance in a simultaneous and redundantly threaded processor |
US7017073B2 (en) * | 2001-02-28 | 2006-03-21 | International Business Machines Corporation | Method and apparatus for fault-tolerance via dual thread crosschecking |
US6928645B2 (en) * | 2001-03-30 | 2005-08-09 | Intel Corporation | Software-based speculative pre-computation and multithreading |
-
2001
- 2001-06-28 US US09/896,526 patent/US7752423B2/en not_active Expired - Fee Related
-
2002
- 2002-06-14 WO PCT/US2002/019101 patent/WO2003003196A2/en active Application Filing
- 2002-06-14 DE DE10296989T patent/DE10296989B4/de not_active Expired - Fee Related
- 2002-06-14 KR KR1020037016962A patent/KR100783828B1/ko not_active IP Right Cessation
- 2002-06-14 GB GB0329899A patent/GB2393297B/en not_active Expired - Fee Related
- 2002-06-14 GB GB0507006A patent/GB2412204B/en not_active Expired - Fee Related
- 2002-06-14 JP JP2003509306A patent/JP2005521924A/ja active Pending
- 2002-06-14 CN CNB028128540A patent/CN100403257C/zh not_active Expired - Fee Related
-
2004
- 2004-07-08 HK HK04104979A patent/HK1062056A1/xx not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5642478A (en) * | 1994-12-29 | 1997-06-24 | International Business Machines Corporation | Distributed trace data acquisition system |
Non-Patent Citations (4)
Title |
---|
AKKARY,H. et al.: A dynamic multithreading proces- sor. In: Proceedings of the 31st annual ACM/IEEE international symposium on Microarchitecture, Dallas, Texas, USA, 1998, pp. 226-236 |
AKKARY,H. et al.: A dynamic multithreading processor. In: Proceedings of the 31st annual ACM/IEEE international symposium on Microarchitecture, Dallas, Texas, USA, 1998, pp. 226-236 * |
ROTH, A. et al.: Speculative Data-Driven Multi- threading. In: Proceedings of the 7th Internatio- nal Conference on High Performance Computer Archi- tecture (HPCA-7). Jan. 22-24, 2001 Monterrey, Mexico, S. 37-48 |
ROTH, A. et al.: Speculative Data-Driven Multithreading. In: Proceedings of the 7th International Conference on High Performance Computer Architecture (HPCA-7). Jan. 22-24, 2001 Monterrey, Mexico, S. 37-48 * |
Also Published As
Publication number | Publication date |
---|---|
WO2003003196A3 (en) | 2003-05-01 |
GB2393297B (en) | 2005-11-23 |
GB2393297A (en) | 2004-03-24 |
CN100403257C (zh) | 2008-07-16 |
HK1062056A1 (en) | 2004-10-15 |
KR100783828B1 (ko) | 2007-12-10 |
GB0507006D0 (en) | 2005-05-11 |
US7752423B2 (en) | 2010-07-06 |
WO2003003196A2 (en) | 2003-01-09 |
GB2412204A (en) | 2005-09-21 |
JP2005521924A (ja) | 2005-07-21 |
US20030005266A1 (en) | 2003-01-02 |
CN1732433A (zh) | 2006-02-08 |
GB0329899D0 (en) | 2004-01-28 |
DE10296989T5 (de) | 2004-10-14 |
KR20040022436A (ko) | 2004-03-12 |
GB2412204B (en) | 2005-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE10296989B4 (de) | Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms | |
Boroumand et al. | CoNDA: Efficient cache coherence support for near-data accelerators | |
DE112010003492B4 (de) | Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung | |
DE68923490T2 (de) | Prüfpunkt-Wiederholungssystem. | |
US8661204B2 (en) | Mechanism to support flexible decoupled transactional memory | |
DE112007003801B3 (de) | Vorrichtung mit einer speichereinheit und einer logik zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren | |
DE69127726T2 (de) | Kombinierte Warteschlange für Entwertungen und Rücklaufdaten in einem Multiprozessorsystem | |
DE68926059T2 (de) | Organisation einer integrierten Cache-Einheit zur flexiblen Verwendung beim Entwurf von Cache-Systemen | |
DE60038693T2 (de) | Verfahren und vorrichtung zur ausschaltung eines taktsignals in einem vielfadenprozessor | |
US7925839B1 (en) | System and method for performing memory operations in a computing system | |
US20070192540A1 (en) | Architectural support for thread level speculative execution | |
DE102016219651A1 (de) | Für Vorabzugriff unempfindlicher transaktionsgebundener Speicher | |
DE112011100715T5 (de) | Hardware-hilfs-thread | |
DE112013003731T5 (de) | Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading | |
DE202007019502U1 (de) | Globaler Überlauf für virtualisierten Transaktionsspeicher | |
DE112011104596T5 (de) | Systeme, Vorrichtungen und Verfahren für ein Hardware- und Softwaresystem zum automatischen Zerlegen eines Programms in mehrere parallele Threads | |
DE112010004971T5 (de) | Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen | |
DE112006001698T5 (de) | Grundfunktionen zum Verbessern von Thread-Level Spekulation | |
DE112005003339T5 (de) | Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung | |
Prvulovic et al. | Removing architectural bottlenecks to the scalability of speculative parallelization | |
DE102005032949A1 (de) | Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren | |
DE102018002294A1 (de) | Effizientes bereichsbasiertes speicher-rückschreiben zum verbessern der host-zu-geräte-kommunikation für optimale energie und leistung | |
DE102018004727A1 (de) | Verfahren und System zum Durchführen von Datenbewegungsoperationen mit Lese-Snapshot und In-Place-Schreibaktualisierung | |
DE102018001537A1 (de) | System, vorrichtung und verfahren zum selektiven freigeben einer instruktionshandhabung auf lokalitäts-basis | |
DE10045188B4 (de) | Cacheadresskonfliktvorrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law |
Ref document number: 10296989 Country of ref document: DE Date of ref document: 20041014 Kind code of ref document: P |
|
8125 | Change of the main classification |
Ipc: G06F 946 |
|
8364 | No opposition during term of opposition | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |