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 PDF

Info

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
Application number
DE10296989T
Other languages
English (en)
Other versions
DE10296989T5 (de
Inventor
Haitham Portland Akkary
Sebastien Hillsboro Hily
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE10296989T5 publication Critical patent/DE10296989T5/de
Application granted granted Critical
Publication of DE10296989B4 publication Critical patent/DE10296989B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result 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...

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 Multiprozessor 100 umfaßt. Bei einer Ausführungsform der Erfindung ist der Multiprozessor 100 ein Doppelkern-Einchipmultiprozessor (CMP). Der Multiprozessor 100 umfaßt ferner eine Übergabe-Zentralverarbeitungseinheit (CPU) 110, eine spekulative CPU 120, einen Registerfilepuffer 130, einen Trace-Puffer, einen Ladepuffer 150 (der auch als Ladeordnungspuffer bekannt ist), einen Speicherpuffer 160 (der auch als Speicherweiterleitungspuffer bekannt ist), L1-Cache 175, L2-Cache 170, L0-Anweisungscache (I-Cache) 180 und L0-Datencache (D-Cache) 190. Bei einer Ausführungsform der Erfindung umfaßt der L0-I-Cache 180 zwei L0-I- Cachekomponenten. Eine der L0-I-Komponenten des Cache 180 ist an den Übergabe-Prozessor 110 angekoppelt, und die andere L0-I-Komponente des Cache 180 ist an den spekulativen Prozessor 120 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 Cache 180 Abrufanforderungen an den L1-Cache 175 ausgegeben. Aus dem L1-Cache 175 abgerufene Zeilen werden in den L0-I-Cache 180 gefüllt, der an den spekulativen/gefüllten Prozessor 120 und den Übergabe-Prozessor 110 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 Cache 190 ist an den Übergabe-Prozessor 110 und die andere L0-D-Komponente des Cache 190 an den spekulativen Prozessor 120 angekoppelt. Bei dieser Ausführungsform der Erfindung führen die beiden L0-D-Cachekomponenten Duplikatinformationen. Bei dieser Ausführungsform der Erfindung werden dem spekulativen Prozessor 120 zugeordnete Speicheranweisungen/-Befehle (Speichervorgänge) nicht in den L0-D-Cache 190 geschrieben. Bei dieser Ausführungsform der Erfindung werden Zeilenlese- und -schreibanforderungen aus einer der L0-D-Cachekomponenten an den L1-Cache 175 ausgegeben. Aus dem L1-Cache 175 abgerufene Zeilen werden in L0-D-Komponenten des Cache 190 gefüllt, die an den Übergabe-Prozessor 110 und den spekulativen Prozessor 120 angekoppelt sind. Aus dem Übergabe-Prozessor 110 ausgegebene Speichervorgänge werden in die L0-D-Cachekomponente geschrieben, die an den spekulativen Prozessor 120 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-Prozessor 110 zu dem spekulativen Prozessor 120. 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-Prozessor 110 zu dem spekulativen Prozessor 120 und einem an den spekulativen Prozessor 120 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-CPU 110. Bei einer Ausführungsform der Erfindung umfaßt die Übergabe-CPU 110 einen Dekodierer 211, ein Scoreboard 214, ein Registerfile 212 und Ausführungseinheiten 213. Ähnlich zeigt 3 die spekulative CPU 120. Bei einer Ausführungsform der Erfindung umfaßt die spekulative CPU 120 einen Dekodierer 321, ein Scoreboard 324, ein Registerfile 322 und Ausführungseinheiten 323. Der L2-Cache 170 und der L1-Cache 175 werden von der Übergabe-CPU 110 und der spekulativen CPU 120 gemeinsam benutzt. Bei einer Ausführungsform der Erfindung ist der Multiprozessor 100 fähig, explizit Multi-Thread-Programme auszuführen. Bei einer anderen Ausführungsform ist der Multiprozessor 100 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 CPU 120. Bei einer Ausführungsform der Erfindung führt die Übergabe-CPU 110 Abruf, Dekodierung, Ausführung und Aktualisierung des Registerfiles 212 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-CPU 110 die spekulative CPU 120 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 CPU 120 führt ihre Threadausführung fort, bis ein Programmzähler in der Übergabe-CPU 110 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-CPU 110 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 CPU 120, die weiter im Programm ausführt, ein hocheffizientes Vorabrufen von Anweisungen und Daten gewährleistet. Außerdem bestimmt die spekulative CPU 120 die Richtung vieler Verzweigungen, bevor der Steuerfluß der Übergabe-CPU 110 diese Verzweigungen erreicht. Bei einer Ausführungsform der Erfindung empfängt die Übergabe-CPU 110 Informationen bezüglich der Steuerflußrichtung von der spekulativen CPU 120, und deshalb kann die Übergabe-CPU 110 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-CPU 110 ü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 Registerfile 212 der Übergabe-CPU 110 geschriebenen Werte werden auch in den Registerfilepuffer 130 geschrieben. Bei einer Ausführungsform der Erfindung ist, wenn der spekulative Thread gespawned wird, ein Schnappschuß des Registerfiles 212 in dem Registerfilepuffer 130, der sich zwischen der Übergabe-CPU 110 und der spekulativen CPU 120 befindet, verfügbar. Anfänglich weisen, wenn ein spe kulativer Thread gestartet wird, keine der Register der spekulativen CPU 120 den darin gespeicherten Eingangswert auf. Eingangsregister, die benötigt werden, können dann bei Bedarf aus dem Registerfilepuffer 130 gelesen werden. Bei der Erfindung wird das Scoreboard 324 in der Dekodierungsstufe der spekulativen CPU 120 dazu benutzt, zu verfolgen, welche Register aus dem Registerfilepuffer 130 geladen oder durch den spekulativen Thread geschrieben werden. Diese Register sind in dem Registerfile 322 gültig. Alle anderen Register werden bei Bedarf aus dem Registerfilepuffer 130 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-Cache 170 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-CPU 110 erzeugt worden sind.
  • Bei einer Ausführungsform der Erfindung werden spekulative Ergebnisse in das Registerfile 322 der CPU 120 sowie in den Trace-Puffer 140 geschrieben. Bei einer Ausführungsform der Erfindung ist der Trace-Puffer 140 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-Puffer 140 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-CPU 110 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-Puffer 140 vier (4) Partitionen zur Unterstützung von vier (4) Threads. Bei einer Ausführungsform der Erfindung umfaßt der Trace-Puffer 140 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 Ladepuffer 150 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-Cache 180 und dem L0-D-Cache 190 vorabzurufen, aber es werden keine Ergebnisse in den Trace-Puffer geschrieben.
  • Bei einer Ausführungsform der Erfindung besitzt die Übergabe-CPU 110 ein Scoreboard 214, das ein Bit pro Register umfaßt. Bei dieser Ausführungsform der Erfindung bewirkt jede Modifikation eines Registers durch die Übergabe-CPU 110 zwischen dem Fork-Punkt und dem Join-Punkt eines spekulativen Threads, daß das Register-Scoreboard-Bit gesetzt wird. Während die Übergabe-CPU 110 die Ergebnisse des spekulativen Threads zurückzieht, führt sie in dem Scoreboard 214 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 Registerfile 212 ü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ührungseinheiten 213 ausgegeben werden, um Cache-Verfehlungen zu versorgen und auf Speicherordnungsverletzungen zu prüfen. Außerdem werden Zweigausführungsergebnisse aus der spekulativen CPU 120 zu der Übergabe-CPU 110 gesendet. Die Zweigvorhersage in der Übergabe-CPU 110 kann für bestimmte oder alle durch die spekulative CPU 120 ausgeführte Zweige umgangen werden.
  • Bei einer Ausführungsform der Erfindung snoopen dem Übergabe-Prozessor 110 zugeordnete Ladeoperationen und Speicheroperationen den Ladepuffer 150. 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 Scoreboard 214 gesetzt. Wenn die Anweisung sauber ist, wird ihr Zielregisterbit in dem Scoreboard 214 gelöscht. Man beachte, daß eine Anweisung sauber ist, wenn ihre Quellen sauber sind. Das Scoreboard 214 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 Speicherpuffer 160 aufgegeben und Ladeanweisungen werden in den Ladepuffer 150 aufgegeben. Bei einer Ausführungsform der Erfindung ist der Speicherpuffer 160 ein vollassoziativer Speicherweiterleitungspuffer. 4 zeigt die Struktur des Speicherpuffers 160 in einer Ausführungsform der Erfindung. In dem Speicherpuffer 160 (siehe 4) umfaßt jeder Eintrag 410 einen Etikettenteil 420, einen Gültig-Teil 430, einen Datenteil 440, die Speicheridentifikation (ID) 450 und den Thread-ID-Teil 460. Bei einer Ausführungsform der Erfindung enthält der Datenteil 440 acht (8) Datenbyte. Bei einer Ausführungsform der Erfindung hält der Gültig-Teil 430 acht (8) Bit. Die Speicher-ID 450 ist eine eindeutige Speicheranweisungs-ID der letzten in einen Eintrag 410 zu schreibenden Speicheranweisung. Bei einer Ausführungsform der Erfindung greifen spekulative Ladeoperationen gleichzeitig mit einem Zugriff auf den L0-D-Cache 190 auf den Speicherpuffer 160 zu. Wenn die Ladeoperation auf eine Speicheranweisung in dem Speicherpuffer 160 stößt, wird der L0-D-Cache 190 umgangen und es wird eine Ladeoperation von dem Speicherpuffer 160 gelesen. In diesem Fall wird auch die Speicher-ID 450 mit den Daten ausgelesen.
  • Bei einer Ausführungsform der Erfindung kann der spekulative Prozessor 120 Ladedaten entweder aus dem Speicherpuffer 160 oder dem L0-D-Cache 190, der dem spekulativen Prozessor 120 zugeordnet ist, erhalten. Bei einer Ausführungsform der Erfindung werden Ladeoperationen in den Ladepuffer 150 aufgegeben. Bei dieser Ausführungsform der Erfindung wird, wenn eine Ladeoperation aufgegeben wird, im Fall eines Überlaufs des Ladepuffers 150 ein Falsch-vorhergesagte-Ladeoperation-Bit in dem Trace-Puffer 140 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 Speicherpuffer 160 zwei (2) Speicher- und zwei (2) Lade-Ports auf. Bei einer Ausführungsform der Erfindung ermöglicht der Speicherpuffer 160 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 Speicherpuffer 160 in den Datenteil 440 geschriebene Daten beginnend von dem ersten Byte, um eine Synchronisierungsverzögerung zu vermeiden. Bei einer Ausführungsform der Erfindung weist der Speicherpuffer 160 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-ID 460 ein Index auf eine Partition in dem Trace-Puffer 140 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 Ladepuffer 150 ein an die Übergabe-CPU 110 angekoppelter mengenassoziativer Ladepuffer. 5 zeigt die Struktur des Ladepuffers 150. In dem (in 5 dargestellten) Ladepuffer 150 umfaßt jeder Eintrag 510 einen Etikettenteil 520, einen Eintrag-Gültig-Bit-Teil 530, die Lade-ID 540 und die Lade-Thread-ID 550. Bei einer Ausführungsform der Erfindung umfaßt der Etikettenteil 520 ein teilweises Adressenetikett. Bei einer anderen Ausführungsform weist jeder Eintrag 510 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 Speicherpuffer 160 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-Puffer 140, 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 Speicherpuffer 160 trifft. Bei dieser Ausführungsform der Erfindung wird das Speicher-Gültig-Bit auf eins („1") gesetzt, wenn die Ladeoperation den Speicherpuffer 160 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-Puffer 140. Bei einer Ausführungsform der Erfindung löscht eine spätere Speicheroperation in dem Programm, die mit dem Etikettenteil 520 übereinstimmt, das Speicher-Gültig-Bit (setzt es auf „0") und setzt das Falsch-vorhergesagt-Bit in dem Ladeeintrag in den Trace-Puffer 140. 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 Etikett 520 übereinstimmt, oder bei einem Ladervergleichsetikett 520 mit gelöschtem (auf „0" gesetztem) Speicher-Gültig-Bit die Pipeline entleert, das Falsch-vorhergesagt-Bit in dem Ladeeintrag in den Trace-Puffer 140 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-Teil 530 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 Ladepuffer 150 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ührungseinheiten 213 (Adressenerzeugungseinheit, Ladepuffer, Daten-Cache) aus, einschließlich Ladeoperationen, die korrekt durch den spekulativen Prozessor 120 ausgeführt wurden. Gültige Ladedaten mit potentiell abhängigen Anweisungen könnten auch dann übergeben werden, wenn eine durch den Übergabeprozessor 110 ausgegebene Ladeanweisung den L0-D-Cache 190 verfehlt. Bei einer Ausführungsform der Erfindung wird eine Ladeverfehlungsanforderung zu dem L2-Cache 170 gesendet, um die Zeile zu füllen, aber es wird verhindert, daß die Rückkehrdaten das Registerfile 212 beschreiben. Bei einer Ausführungsform der Erfindung greift jede Ladeanweisung auf den Ladepuffer 150 zu. Eine Ladeverfehlung des Ladepuffers 150 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-ID 540 übereinstimmt, das Gültigkeitsbit 530 in einem Eintrag 510 gesetzt. Bei dieser Ausführungsform der Erfindung invalidiert eine spätere Speicheroperation, die auf einen Eintrag 510 trifft, den Eintrag 510. Bei dieser Ausführungsform der Erfindung wird, wenn eine Speicheroperation einen Eintrag 510 invalidiert, eine LadeID 550 zur Indizierung des Trace-Puffers 140 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-Puffer 140 gesetzt gefunden wird, ein Registerbit in dem Scoreboard 214 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 Ladepuffer 150 auftreten. Es sollte beachtet werden, daß die Übergabe-CPU 110 gleichzeitig den Trace-Puffer 140 und den L0-I-Cache 180 liest. Bei dieser Ausführungsform der Erfin dung gibt dieses gleichzeitige Lesen des Trace-Puffers 140 und des L0-I-Cache 180 das Setzen eines Scoreboard-Registerbit in dem Scoreboard 214 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-Puffer 140 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-Puffer 140 in das Registerfile 130 übergeben.
  • 6 zeigt ein System mit einer Ausführungsform der Erfindung. Das System 600 umfaßt einen Multiprozessor 100, Hauptspeicher 610, eine Nordbrücke 620, eine Verteilerverbindung 630 und eine Südbrücke 640. Die Nordbrücke 620 ist in der Regel hauptsächlich für die Multiprozessorschnittstelle verantwortlich. Zusätzlich kann die Nordbrücke 620 auch Steuerungen unter anderem für einen beschleunigten Graphikport (AGP), Speicher 610 und eine Verteilerverbindung 630 aufweisen. Die Südbrücke 640 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 Prozess 700 beginnt mit dem Block 170, der die Ausführung eines Programm-Threads durch einen ersten Prozessor, wie zum Beispiel den Übergabe-Prozessor 110, startet. Der Block 720 ruft Befehle durch den ersten Prozessor ab. Der Block 730 dekodiert Befehle durch den ersten Prozessor. Der Block 740 weist einen zweiten Prozessor, wie zum Beispiel den spekulativen Prozessor 120, 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 Block 750 beginnt mit der Ausführung des Programm-Threads durch den zweiten Prozessor. Im Block 751 ruft der zweite Prozessor Befehle ab. Im Block 752 führt der zweite Prozessor eine Dekodierung durch. Im Block 753 aktualisiert der zweite Prozessor ein Registerfile. Im Block 754 sendet der zweite Prozessor Steuerflußinformationen zu dem ersten Prozessor. Im Block 760 aktualisiert der erste Prozessor ein Registerfile. Block 770 bestimmt, ob der erste Prozessor denselben Ausführungspunkt wie der zweite Prozessor erreicht hat. Wenn Block 770 bestimmt, daß der erste Prozessor noch nicht denselben Punkt in dem Programm erreicht hat, wird der Prozess 700 mit dem Block 780 fortgesetzt, um die Ausführung fortzusetzen. Wenn Block 770 bestimmt, daß der erste Prozessor denselben Punkt in der Ausführung wie der zweite Prozessor erreicht hat, bestimmt Block 790, ob das Programm abgeschlossen ist. Wenn Block 790 bestimmt, daß das Programm abgeschlossen ist, stoppt der Prozessor 700, andernfalls wird der Prozess 700 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)

  1. 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.
  2. Vorrichtung nach Anspruch 1, wobei die Speichervorrichtungen mehrere Cache-Einrichtungen umfassen.
  3. 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.
  4. 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.
  5. Vorrichtung nach Anspruch 1, wobei die Speicheranweisungspuffer mindestens einen Speicherweiterleitungspuffer und mindestens einen Ladeordnungspuffer enthalten.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. Vorrichtung nach Anspruch 1, wobei der Registerfilepuffer einen Integer-Registerfilepuffer und einen Prädikat-Registerfilepuffer umfaßt.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. System nach Anspruch 19, wobei die lokalen Speichereinrichtungen mehrere Cache-Einrichtungen umfassen.
  21. 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.
  22. 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.
  23. 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.
  24. System nach Anspruch 19, wobei die mehreren Speicheranweisungspuffer mindestens einen Speicherweiterleitungspuffer und mindestens einen Ladeordnungspuffer enthalten.
  25. 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.
DE10296989T 2001-06-28 2002-06-14 Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms Expired - Fee Related DE10296989B4 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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