DE112006004005T5 - Kommunikation zwischen Mehrfach-Ausführungsfolgen in einem Prozessor - Google Patents

Kommunikation zwischen Mehrfach-Ausführungsfolgen in einem Prozessor Download PDF

Info

Publication number
DE112006004005T5
DE112006004005T5 DE112006004005T DE112006004005T DE112006004005T5 DE 112006004005 T5 DE112006004005 T5 DE 112006004005T5 DE 112006004005 T DE112006004005 T DE 112006004005T DE 112006004005 T DE112006004005 T DE 112006004005T DE 112006004005 T5 DE112006004005 T5 DE 112006004005T5
Authority
DE
Germany
Prior art keywords
execution
register
execution sequence
register file
flag
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.)
Withdrawn
Application number
DE112006004005T
Other languages
English (en)
Inventor
Enric Gibert
Josep M. Codina
Fernando Latorre
José Alejandro Piñeiro
Pedro López
Antonio González
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 DE112006004005T5 publication Critical patent/DE112006004005T5/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline 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/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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

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)
  • Executing Machine-Instructions (AREA)

Abstract

Ein Verfahren umfassend:
Zugreifen auf eine Registerdatei einer zweiten Ausführungskette oder Ausführungsfolge durch einen Kern mit dem Ziel, einen Quelloperanden für einen Befehl einer ersten Ausführungskette oder Ausführungsfolge während der Abarbeitung des Befehls der ersten Ausführungsfolge im Kern zu erhalten.

Description

  • Hintergrund
  • Die Prozessoren haben sich zu sehr komplizierten Einrichtungen entwickelt, die zahlreiche Strukturen und komplexe Steuerungstechniken umfassen, damit Befehle und Daten diese zur Ausführung der unterschiedlichen geforderten Operationen durchlaufen können. Zur Verbesserung der Prozessorleistung wird in gewissen Prozessoren die Parallelität auf Befehlsebene genutzt (ILP – "instruction level parallelism"). Obwohl diese Techniken eine Erhöhung der Leistung ermöglichen, kann dies auch zu einer erhöhten Leistungsaufnahme und einer größeren Komplexität des Entwurfs führen. Dementsprechend werden gewisse Prozessoren mit dem Ziel entwickelt, mehrfache Ausführungsketten oder Ausführungsfolgen in Zusammenwirken mit Architekturen zu ermöglichen, welche die Parallelität auf der Ebene von Ausführungsfolgen (TLP – "thread level parallelism") unterstützen und ausnutzen. Besagte Prozessoren können Mehrfachkerne beinhalten, häufig viele kleine Kerne zur simultanen Abarbeitung von Ausführungsfolgen in Reihe (SMT – "simultaneous multithreading").
  • Derartige Kerne mit Abarbeitung in Reihe können jedoch weniger effektiv sein als Kerne, die auf eine Einhaltung der Reihenfolge in der Verwendung von ILP verzichten. Das heißt, während die Prozessoren mit Abarbeitung in Reihe in der Lage sind, parallele Anwendungen effizient zu organisieren, kann es sein, dass Anwendungen mit einer einzigen Ausführungsfolge und seriellen Codeabschnitten der parallelen Anwendungen sich in derartigen Architekturen nicht effizient verhalten. Dementsprechend können bestimmte Prozessoren besagte Anwendungen trennen oder aufteilen, um im Detail zerlegte Ausführungsfolgen mit dem Ziel abzuarbeiten, die Komplexität niedrig zu halten und gleichzeitig die Leistungsfähigkeit zu erhöhen. Dies kann jedoch eine übermäßige Anzahl von Organisationsprozessen zur Folge haben, wenn eine erste Ausführungsfolge versucht, Informationen einer zweiten Ausführungsfolge zu benutzen.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein Flussdiagramm eines Verfahrens entsprechend einer Ausführung der vorliegenden Erfindung.
  • 2 ist ein Blockdiagramm einer Merkertabelle entsprechend einer Ausführung der vorliegenden Erfindung.
  • 3 ist ein Blockdiagramm einer Implementierung der Abarbeitung von Befehlen entsprechend einer Ausführung der vorliegenden Erfindung.
  • 4 ist ein Flussdiagramm eines Verfahrens zur Generierung von Flussmarkeninformation entsprechend einer Ausführung der vorliegenden Erfindung.
  • 5 ist ein Blockdiagramm eines Systems entsprechend einer Ausführung der vorliegenden Erfindung.
  • Ausführliche Beschreibung
  • In den verschiedenen Ausführungen kann eine Vielzahl von in einem Prozessorkern realisierten oder abgearbeiteten Ausführungsfolgen auf Werte zugreifen, die in einer Registerdatei enthalten sind, die einer anderen Ausführungsfolge zugeordnet ist. Über einen derartigen Kommunikationskanal können die Ausführungen zu effizientem Funktionieren mit mehrfachen simultanen Ausführungsfolgen oder -ketten (SMT – "simultaneous multithreading") befähigt werden. Zum Beispiel ist es möglich, eine erste und eine zweite Ausführungsfolge in einem einzigen Prozessorkern mit Abarbeitung in Reihe auszuführen, beispielsweise in einem SMT-Prozessor. Es kann eine Steuerung mit dem Ziel bereitgestellt werden, ein Modell Erzeuger/Verbraucher zu schaffen, das einen Zugriff der zweiten Ausführungsfolge auf die von der ersten Ausführungsfolge generierten Datenwerte ermöglicht und umgekehrt. Jede der Ausführungsfolgen kann zum Lesen des Zustands der Strukturregister oder der Architektur der anderen Ausführungsfolge während der Abarbeitung befähigt sein, hierdurch wird eine Synchronisation zwischen den Ausführungsfolgen mit einer sehr niedrigen Organisationsaktivität ermöglicht.
  • Um ein Lesen der korrekten Werte bei einem Zugriff auf die gegebenen Register zu ermöglichen, kann eine Synchronisationssteuerung derart bereitgestellt werden, dass die verbrauchende Ausführungsfolge die richtigen Daten in der erzeugenden Ausführungsfolge liest. In verschiedenen Ausführungen kann eine Struktur einer Merkertabelle, so wie sie in Zusammenhang mit der Ausgabe oder Zuordnung von Befehlen verwendbar ist, Synchronisationsmerker enthalten. Genauer gesagt kann jeder Eintrag in die Struktur der Merkertabelle für ein Register einer ersten Ausführungsfolge einen Synchronisationsmerker für das entsprechende Register der zweiten Ausführungsfolge enthalten und umgekehrt. Die Verwendung dieses Merkers kann verhindern, dass ein verbrauchender Befehl fortgesetzt wird, während der erzeugende Befehl der anderen Ausführungsfolge abgearbeitet wird, so dass der gewünschte Wert in der Registerdatei des Erzeugers bereitsteht. Um diese Synchronisierung zu nutzen, können bestimmte Ausführungen den Befehlen zugeordnete Flussinformationen bereitstellen. Zum Beispiel ist es möglich, zusammen mit dem Inhalt eines Befehls Angaben zum Ablauf oder Flussmarken bereitzustellen. Ein Befehl kann in einer Ausführung einen Operationscode, Quell- und Zieloperanden sowie Flussmarken für jeden der Quell- und Zieloperanden beinhalten. Wie zusätzlich nachfolgend beschrieben wird, können unterschiedliche Mechanismen die Erzeugung der Flussmarken für die entsprechenden Befehle übernehmen. Beispielsweise kann eine Compilerunterstützung derart bereitgestellt werden, dass eine Erzeugung dieser Flussmarken während des Kompilierens entsprechend den unterstützten Befehlen einer Befehlssatz-Architektur (ISA – "instruction set architecture") erfolgt. In weiteren Implementierungen kann ein Optimierungsmechanismus, zum Beispiel eine Optimierungseinrichtung auf der Grundlage von Hardware oder Software, die Steuerung des Codeflusses analysieren und dementsprechend Flussmarken generieren. Damit ist es möglich, mehrfache Ausführungsfolgen mit einem Zerlegungsgrad bis auf Befehlsebene zu synchronisieren.
  • Gewisse Merkmale können sich des Registerzugriffs und der Synchronisation bedienen, die durch bestimmte Ausführungen der vorliegenden Erfindung bereitgestellt werden. Beispielsweise kann ein Speichermechanismus einer Ausführungsfolge mit geringer Organisationsaktivität den Zugriff auf die Registerdateien weiterer Ausführungsfolgen nutzen. Damit ist es möglich, den Aufwand für das Kopieren aller Register des Kontexts einer speichernden Ausführungsfolge in den Kontext einer anderen Ausführungsfolge zu vermeiden, die auf den Speicher zugreift. Dies ergibt sich aus der Möglichkeit, die entsprechenden verbrauchenden Befehle in der Speicher-Ausführungsfolge zu markieren, so dass diese ihrerseits die Operanden aus der Registerdatei der speichernden Ausführungsfolge lesen.
  • Entsprechend den unterschiedlichen Ausführungen ist eine Verringerung der mit der kooperativen Abarbeitung zweier im Detail zerlegter Ausführungsfolgen verbundenen Organisationsprozesse möglich. Demzufolge können bestimmte Ausführungen in Zusammenhang mit der Unterstützung der spekulativen Abarbeitung mit Mehrfach-Ausführungsfolgen sowie der Hinterlegung der Ausführungsfolgen verwendet werden. Darüber hinaus ist eine Anwendung bestimmter Ausführungen in Zusammenhang mit so genannten Hilfs-Ausführungsfolgen möglich, die zur Übernahme spezifischer Aufgaben während der Abarbeitung einer anderen Ausführungsfolge initiiert werden können. Es ist jedoch zu verstehen, dass das Gebiet der vorliegenden Erfindung nicht hierauf beschränkt ist und der Registerzugriff und die Synchronisationsmechanismen in zahlreichen anderen Implementierungen einsetzbar sind unter Einschluss anderer Prozessorarchitekturen, Systeme usw.
  • Nachfolgend wird auf 1 Bezug genommen, in der ein Flussdiagramm eines Verfahrens gemäß einer Ausführung der vorliegenden Erfindung dargestellt ist. Wie aus 1 hervorgeht, ist das Verfahren 10 zur Ausführung eines Befehls einer ersten Ausführungsfolge oder Ausführungskette einsetzbar, die auf die Information in einer Registerdatei einer zweiten Ausführungsfolge zugreifen kann. Das Verfahren 10 kann wie in 1 dargestellt mit dem Empfang eines Befehls der ersten Ausführungsfolge zu dessen Abarbeitung beginnen (Block 20). Zum Beispiel kann ein Befehlsdekoder eines Prozessors den Befehl erhalten und dekodieren. Die Befehle können in einer Ausführung einen Operationscode beinhalten, der dazu bestimmt ist, einen Typ der auszuführenden Operation anzugeben und die Quell- und Zieloperanden zu identifizieren. Darüber hinaus kann der Befehl Information enthalten die angibt, ob ein Zugriff auf einen der Quell- oder Zieloperanden in einer entfernten Registerdatei erfolgen soll, zum Beispiel auf eine Registerdatei, die einer zweiten Ausführungsfolge zugeordnet ist, oder ob einer der besagten Operanden für diese bereitzustellen ist. Auch wenn die Beschreibung hier als entfernte Registerdatei erfolgt ist, ist zu verstehen, dass es sich sowohl um eine lokale Registerdatei und eine entfernte Registerdatei in einem einzigen Prozessorkern als auch um einen Mehrfach-Prozessor oder einen Prozessor mit Mehrfachkernen handeln kann, der zum Beispiel eine bestimmte Anzahl von Kernen zur Ausführung in Reihe beinhaltet.
  • Weiterhin in Bezug auf 1 kann anschließend festgestellt werden, ob ein Quelloperand des Befehls aus einer entfernten Ausführungskette oder Ausführungsfolge zu gewinnen ist (in Rhombus 30). Das heißt, auf der Grundlage der Flussmarkeninformation (in einer der Ausführungen) lässt sich bestimmen, ob ein Quelloperand aus einer entfernten Ausführungsfolge zu gewinnen ist, zum Beispiel aus einer zweiten Ausführungsfolge, der eine Registerdatei im Kern der SMT zugeordnet ist. Wenn dies der Fall ist, geht die Steuerung an Rhombus 40 über, hier kann bestimmt werden, ob die besagtem Operanden oder allen besagten entfernten Quelloperanden zugeordneten Synchronisationsmerker aktiv sind. Das heißt, es ist möglich, eine Merkertabelle oder eine andere Speicherstruktur zu analysieren, die Zustandsinformation bezüglich der Verfügbarkeit von Werten in gegebenen Registern identifiziert um zu bestimmen, ob alle Quelloperanden, die aus der entfernten Registerdatei gewonnen werden, die gewünschten Werte enthalten. Mit anderen Worten lässt sich bestimmen, ob eine erzeugende Ausführungsfolge eine Operation abgeschlossen hat, von der ein abhängiger Befehl der ersten Ausführungsfolge abhängt. Wenn der (die) Synchronisationsmerker nicht aktiv ist (sind), kann der Rhombus 40 eine Schleife zu sich selbst schließen und die Ausführung des Befehls übernehmen, bis die Synchronisationsmerker vorhanden sind. Wenn die Synchronisationsmerker auftreten bedeutet dies, dass die gewünschten Werte im entfernten Register vorhanden sind, die Steuerung geht damit wie nachstehend erläutert an Rhombus 45 über.
  • Wird weiterhin mit Bezug auf 1 festgestellt, dass kein Quelloperand von einer entfernten Ausführungsfolge herrührt (in Rhombus 30), oder dass die mit allen entfernten Quelloperanden verknüpften Synchronisationsmerker aktiv sind (wie in Rhombus 40 festgestellt wird), geht die Steuerung an Rhombus 45 über, in dem bestimmt wird, ob ein Quelloperand von der lokalen Ausführungsfolge herrührt (das heißt von der ersten Ausführungsfolge). Wenn dies der Fall ist, geht die Steuerung an Rhombus 50 über in dem bestimmt wird, ob die dem oder allen lokalen Quelloperanden zugeordneten Vorbereitungs- oder Verfügbarkeitsmerker aktiv sind. Es ist zum Beispiel möglich, auf die Merkertabelle zuzugreifen um festzustellen, ob ein Merker aktiv ist, der anzeigt, dass ein vorhergehender erzeugender Befehl der ersten Ausführungsfolge abgeschlossen ist, so dass die abhängige Operation der gleichen Ausführungsfolge unter Verwendung des richtigen Werts ausgeführt werden kann. Anderenfalls führt der Rhombus 50 zu sich selbst zurück und bildet eine Schleife.
  • Von den beiden Rhomben 45 und 50 geht die Steuerung an Block 60 über, in dem der Befehl zu seiner Ausführung ausgegeben wird. Eine Befehlsausgabe wie zum Beispiel eine Zuordnungseinrichtung, eine Reservestation oder eine andere Struktur, die eine Merkertabelle oder eine ähnliche Zustandsspeicherung enthält, kann den Befehl zu seiner Ausführung oder Abarbeitung ausgeben. Dementsprechend kann eine Ausführungseinheit wie zum Beispiel eine Integer-Einheit, eine Gleitkomma-Einheit (FPU – "floating point unit") oder eine andere ähnliche Einheit über die spezifizierte Registerdatei auf die angegebenen Quelloperanden zugreifen (Block 70). Für lokale Quelloperanden kann daher ein Zugriff auf die lokale, der Ausführungsfolge zugeordnete Registerdatei erfolgen um die Quelloperanden zu erhalten, während für die entfernten Quelloperanden ein Zugriff auf die der zweiten Ausführungsfolge zugeordnete Registerdatei erfolgen kann, beispielsweise die entfernte Registerdatei.
  • Weiterhin mit Bezug auf 1 kann anschließend der Befehl ausgeführt werden (Block 80). Es ist zum Beispiel möglich, zwei Quelloperanden zu summieren um ein gewünschtes Ergebnis zu erhalten, das in einem Zieloperanden abgelegt wird, zum Beispiel in einem Zieloperanden der ersten Registerdatei. Auf der Grundlage des erfolgreichen Abschlusses des Befehls kann eine Aktualisierung diverser Merker erfolgen (Block 90). Genauer gesagt ist es möglich, die betreffenden Verfügbarkeitsmerker und Synchronisationsmerker in einer Merkertabelle zu aktualisieren. In Fortsetzung des vorhergehend beschriebenen Beispiels ist es möglich, den dem Zielregister zugeordneten Vorbereitungs- oder Verfügbarkeitsmerker entsprechend zu setzen, wenn angezeigt wird, dass der Zieloperand ein lokaler Operand ist. Andererseits kann der Synchronisationsmerker dieses Registers rückgesetzt werden um anzuzeigen, dass eine Synchronisation dieses Wertes nicht erforderlich ist. Wird dagegen angegeben, dass der Zieloperand entfernt genutzt werden soll, ist es möglich, einen Synchronisationsmerker der entfernten Registerdatei (zum Beispiel der zweiten) entsprechend zu setzen. Darüber hinaus kann ein Verfügbarkeitsmerker der lokalen Registerdatei gesetzt werden. Auf diese Weise können sowohl eine entfernte Ausführungsfolge wie auch die lokale Ausführungsfolge auf den Zieloperanden als einen Quelloperanden zugreifen, damit wird ein effizientes Funktionieren Erzeuger/Verbraucher sowohl innerhalb derselben Ausführungsfolge wie auch zwischen Ausführungsfolgen erreicht. Auch wenn in der Ausführung in 1 diese konkrete Implementierung gezeigt wird, ist zu verstehen, dass der Geltungsbereich der vorliegenden Erfindung nicht auf diesen Aspekt beschränkt ist.
  • Innerhalb eines Prozessors können verschiedene Strukturen vorhanden sein, um einen Registerzugriff sowie Synchronisationsmechanismen entsprechend einer Ausführung der vorliegenden Erfindung zu ermöglichen. Nachfolgend wird auf 2 Bezug genommen, die ein Blockdiagramm einer Merkertabelle entsprechend einer Ausführung der vorliegenden Erfindung zeigt und die Unterstützung der Synchronisation zwischen mehrfachen Ausführungsfolgen beinhaltet. Wie in 2 dargestellt kann eine Merkertabelle 100 aus einem im Prozessorkern vorhandenen Speicher bestehen und Einträge zur Speicherung von Zustandsinformation umfassen, die den Registern der mehrfachen Registerdateien zugeordnet sind. In der in 2 dargestellten Ausführung können insbesondere sowohl eine erste Ausführungsfolge als auch eine zweite Ausführungsfolge Einträge in jedes der in ihrer Registerdatei vorhandenen Register einzigen. Demzufolge kann eine erste Ausführungsfolge wie in 2 dargestellt eine Mehrzahl von Einträgen 112a112n (allgemein Eintrag 112) umfassen. Jeder Eintrag 112 kann unter Verwendung eines Registerzeigers (ID) indexiert sein und jeder Eintrag kann Zustandsinformation beinhalten. In der speziellen in 2 dargestellten Ausführung können ein Vorbereitungs- oder Verfügbarkeitsmerker 114a114n (allgemein Verfügbarkeitsmerker 114) und ein Synchronisationsmerker 116a116n (allgemein Synchronisationsmerker 116) vorhanden sein. Der Verfügbarkeitsmerker 114 kann verwendet werden um anzuzeigen, wann der entsprechende in dem identifizierten Register gespeicherte Operand zur Verwendung in verbrauchenden Operationen dieser Ausführungsfolge bereitsteht, während der Synchronisationsmerker 116 anzeigen kann, ob ein entfernter Operand, auf den die lokale Ausführungsfolge zugreifen muss, für den Zugriff von Seiten der lokalen Ausführungsfolge bereitsteht, das heißt, ob ein erzeugender Befehl der (entfernten) erzeugenden Ausführungsfolge ausgeführt wurde und der entsprechende Wert auf der gewünschten Position gespeichert ist. Es ist zu beachten, dass eine zweite Ausführungsfolge 120 ebenfalls eine Mehrzahl von Einträgen 122a122n (allgemein Eintrag 122) beinhalten kann, die jeweils einem Register ihrer Registerdatei zugeordnet sind. In gleicher Weise kann jeder Eintrag 122 einen entsprechenden Verfügbarkeitsmerker 124a124n (allgemein Verfügbarkeitsmerker 124) sowie einen Synchronisationsmerker 126a126n (allgemein Synchronisationsmerker 126) beinhalten. An Stelle unabhängiger Einträge für jede Ausführungsfolge ist es möglich, eine Merkertabelle derart zu installieren, dass sie einen einzigen Eintrag für jedes entsprechende Register der mehrfachen Ausführungsfolgen enthält, so dass unterschiedliche Abschnitte des Eintrags den jeweiligen Ausführungsfolgen zugeordnet sind. Auch wenn in der Ausführung in 2 diese spezielle Konfiguration gezeigt wird, ist zu verstehen, dass der Geltungsbereich der vorliegenden Erfindung nicht auf diesen Aspekt beschränkt ist und in den einzelnen Ausführungen Erzeugung, Speicherung und Verwendung der den Registerdateien der unterschiedlichen Ausführungsfolgen zugeordneten Statusinformation in unterschiedlicher Weise ausgeführt werden können. Unterschiedliche Prozessorarchitekturen können zum Beispiel verschiedene Steuerungskonfigurationen aufweisen, um die Befehle zu analysieren und an eine oder mehrere Ausführungseinheiten des Prozessors auszugeben. Gewisse Prozessoren können Zuordnungseinrichtungen, Reservestationen, Merkertabellen, Controller und sonstige Logikeinrichtungen beinhalten um zu bestimmen, wann für einen dekodierten Befehl die unterschiedlichen für seine Ausführung erforderlichen Ressourcen verfügbar sind und den Befehl entsprechend einem Kriterium der Abarbeitung in Serie oder außerhalb der Serie auszuwählen, der einer Ausführungseinheit zu übergeben ist. In verschiedenen Ausführungen kann die Merkertabelle 100 Teil einer Befehlsausgabe bilden, die in einer beliebigen Form in einer gegebenen Prozessorarchitektur verfügbar ist, oder kann mit besagter Befehlsausgabe oder einer anderen ähnlichen Logik verbunden sein, um zu ermöglichen, dass die Entscheidungen zur Befehlsausgabe auf der Grundlage der in der Merkertabelle 100 enthaltenen Information getroffen werden.
  • Wie vorstehend beschrieben kann in den unterschiedlichen Ausführungen die einem Befehl zugeordnete Flussinformation analysiert werden um zu bestimmen, ob ein Befehl auf die in einem Register einer anderen Ausführungsfolge vorhandene Information zugreifen muss und/oder ob eine andere Ausführungsfolge auf das Ergebnis des Befehls zugreifen kann. Nachfolgend wird auf 3 Bezug genommen, in der ein Blockdiagramm einer Implementierung der Befehlsabarbeitung gemäß einer Ausführung der vorliegenden Erfindung dargestellt ist. Wie in 3 gezeigt wird, kann ein System 200 eine Ausführungseinheit 230 beinhalten, die mit den Eingangsdaten unterschiedliche Operationen ausführt. In der in 3 dargestellten Ausführung können eine erste Registerdatei 220 und eine zweite Registerdatei 225 mit der Ausführungseinheit 230 verbunden sein. In der Ausführung nach 3 kann die erste Registerdatei 220 einer ersten Ausführungsfolge und die zweite Registerdatei 225 einer zweiten Ausführungsfolge zugeordnet sein. Auch wenn in der Ausführung nach 3 unabhängige Registerdateien dargestellt sind, ist zu verstehen, dass in gewissen Implementierungen eine globale Registerdatei vorhanden sein kann, so dass ein erster Teil logisch der ersten Ausführungsfolge und ein zweiter Teil logisch der zweiten Ausführungsfolge zugeordnet ist. Wie in 3 dargestellt kann ein von der ersten Ausführungsfolge herrührender Befehl 205, der in der Ausführungseinheit 230 abzuarbeiten ist, einen Operationscode enthalten, um einen bestimmten Befehlstyp zu identifizieren, zum Beispiel eine Addition, eine Multiplikation oder eine sonstige Operation. Der Befehl 205 identifiziert außerdem ein Ziel für das Ergebnis, das heißt einen Zieloperanden, der einem ersten Register rax entsprechen kann. Diesem Operanden ist ein Speicherplatzmerker zugeordnet, der in 3 als ENTFERNTES_ZIEL ("REMOTE_DEST") gekennzeichnet ist. Wie in 3 dargestellt, besitzt dieser Speicherplatzmerker einen Wert Eins, damit wird angezeigt, dass auf diesen Zieloperanden später eine entfernte Ausführungsfolge zugreifen muss, das heißt, die zweite Ausführungsfolge im Beispiel nach 3, und dass auf diesen ebenfalls ein Zugriff durch verbrauchende Befehle der lokalen Ausführungsfolge erfolgen kann. Wie zusätzlich gezeigt identifiziert der Befehl 205 ebenfalls zwei Quelloperanden, insbesondere einen ersten Quelloperanden (SRC1), der auf ein Register rbx zugreift. Da ein Speicherplatzmerker für diesen Quelloperanden (das heißt, ENTFERNTER_SRC – "REMOTE_SRC") auf einen Wert Eins gesetzt ist, kann ein Zugriff auf diesen Quelloperanden von einer entfernten Registerdatei aus erfolgen, das heißt, durch die Registerdatei 225. In ähnlicher Weise beinhaltet der Befehl 205 einen zweiten Quelloperanden (SRC2), der zum Zugriff auf ein zweites Register rcx bestimmt ist und aus der ersten Registerdatei 220 erhalten werden kann, der lokale Merker für diesen zweiten Quelloperanden (das heißt, ENTFERNTER_SRC) wird demzufolge auf einen Wert Null gesetzt.
  • Da ein Zugriff auf einen der Quelloperanden über eine andere Registerdatei erfolgen muss, das heißt, über die zweite Registerdatei 225, kann der Befehl 205 nicht ausgeführt werden, bevor ein diesem Quelloperanden zugeordneter Synchronisationsmerker aktiv ist (der zum Beispiel gesetzt wurde). Andererseits kann der Befehl 205 nicht ausgeführt werden, bevor ein dem zweiten Quelloperanden zugeordneter Verfügbarkeitsmerker ebenfalls aktiv ist. Wie in 3 dargestellt enthält die Merkertabelle 100 einen ersten Eintrag 112b, der dem ersten Quelloperanden zugeordnet ist, und einen zweiten Eintrag 112c, der dem zweiten Operanden zugeordnet ist. Wenn der Wert des Verfügbarkeitsmerkers 114c und ebenfalls der Wert des Synchronisationsmerkers 116b gesetzt ist, kann eine Ausgabe des Befehls 205 an die Ausführungseinheit 230 erfolgen. Dies ist der Fall, da in den Registern Register rbx der ersten Registerdatei 225 und rcx der zweiten Registerdatei 220 die erforderlichen Werte vorhanden sind. Demzufolge kann die Ausführungseinheit 230 rcx in der ersten Registerdatei 220 und rbx in der zweiten Registerdatei 225 lesen. Nach Ausführung des Befehls wird das Ergebnis im Zielregister rax der ersten Registerdatei 220 gespeichert. Andererseits kann eine Aktualisierung der einzelnen Verfügbarkeits- und Synchronisationsmerker erfolgen. Wie in 3 dargestellt wird nach der Ausführung speziell ein der ersten Ausführungsfolge zugeordneter Eintrag 112a aktualisiert, so dass ein Verfügbarkeitsmerker 114a einen Wert Eins und ein Synchronisationsmerker 116 einen Wert Null aufweist. Andererseits kann der der zweiten Ausführungsfolge zugeordnete Eintrag 126a einen entsprechenden Synchronisationsmerker 116a aufweisen, der auf einen Wert Eins gesetzt ist um anzuzeigen, dass im Register rax der entsprechende Wert verfügbar ist, der als Quelloperand für einen verbrauchenden Befehl der zweiten Ausführungsfolge dient. Auch wenn in der Ausführung in 3 diese spezielle Implementierung gezeigt wird, ist der Geltungsbereich der vorliegenden Erfindung nicht auf diesen Aspekt beschränkt.
  • Wie in 3 zusätzlich dargestellt, kann das System 200 einen Controller 250 umfassen. Der Controller 250 kann verschiedene Kombinationen von Hardware oder physischen Einrichtungen, Software oder Programmierung, Firmware oder in der Hardware permanent installierte Logik oder Kombinationen derselben enthalten mit dem Ziel der Ausgabe von Befehlen von jeder der Ausführungsfolgen an die Ausführungseinheit 230. Wie in 3 dargestellt, kann der Controller 250 mit der Merkertabelle 100 verbunden sein, um die in dieser in den einzelnen Einträgen enthaltene Zustandsinformation zu analysieren und um auf der Grundlage der Analyse der zugeordneten Verfügbarkeits- und Synchronisationsmerker zu bestimmen, ob die Quelloperanden eines gegebenen Befehls für die Ausführung bereit stehen. In einer Ausführung kann der Controller 250 eine logische Funktion nutzen, um die Befehlsausgabe zu ermöglichen, wenn die Quelloperanden des Befehls verfügbar sind. Sind zum Beispiel in einer Implementierung lokale Quellen angegeben (das heißt, die den Operanden zugeordneten Speicherstellenmerker zeigen auf lokal, sie haben beispielsweise einen niedrigen logischen Wert), kann die logische Funktion einer logischen Operation UND ("AND"), entsprechen, wobei die Verfügbarkeitsmerker für die lokalen Quelloperanden analysiert werden um festzustellen, ob beide auf einen Zustand verfügbar oder bereit zeigen. Wenn dies nicht der Fall ist, wird der Befehl angehalten bis die beiden Verfügbarkeitsmerker gesetzt sind, zum Beispiel auf einen logischen Zustand hoch, der einen Zustand der Verfügbarkeit anzeigt. Wird dagegen angezeigt, dass einer der beiden Quelloperanden entfernten Ursprungs ist, kann die logische Funktion einer logischen Operation UND ("AND") entsprechen, mit der ein lokaler Verfügbarkeitsmerker für den lokalen Operanden und ein lokaler Synchronisationsmerker für den entfernten Operanden daraufhin geprüft werden, ob beide die Verfügbarkeit der Operanden anzeigen. Wenn dies der Fall ist, wird die Operation fortgesetzt, anderenfalls kann der Controller 250 die Operation so lange anhalten, bis die beiden genannten Quelloperanden bereit stehen entsprechend den Angaben der zugeordneten Verfügbarkeits- und Synchronisationsmerker. Obwohl diese spezielle Implementierung beschrieben wurde, ist der Geltungsbereich der vorliegenden Erfindung nicht hierauf beschränkt und es sind zahlreiche andere Arten der Analyse der in einer Merkertabelle oder einer anderen Struktur enthaltenen Information anwendbar um zu bestimmen, wann die Quelloperanden zur Verwendung in einem verbrauchenden Befehl bereitstehen. Beispielsweise kann in anderen Implementierungen ein Mehrfachkern-Prozessor, zum Beispiel ein Doppelkern-Prozessor oder ein Prozessor mit zahlreichen Kernen, die Ausführungen der vorliegenden Erfindung in ähnlicher Weise praktisch umsetzen. In gewissen Implementierungen kann eine erste Ausführungsfolge, die in einem ersten Kern abgearbeitet wird, auf eine Registerdatei zugreifen, die einer entfernten Ausführungsfolge zugeordnet ist und in einem anderen Kern abgearbeitet wird. Hierbei kann jedoch eine bestimmte Menge von Organisationsprozessen oder Organisationsaktivitäten erforderlich werden, um auf besagte entfernte Registerdateien während der Ausführung einer gegebenen Ausführungsfolge zuzugreifen.
  • Dementsprechend können basierend auf der dem Befehl zugeordneten Flussinformation, also auf der Grundlage der Merker oder Flussmarken für die unterschiedlichen Quell- und Zieloperanden, der einfache Zugriff auf eine andere Registerdatei sowie die Synchronisation ermöglicht werden. In den unterschiedlichen Implementierungen können verschiedene Einheiten Ausführungsfolgen und den entsprechenden Code generieren, zum Beispiel eine dynamische Optimierungseinrichtung, ein Compiler, eine Hardware-Optimierungseinrichtung usw. Unabhängig davon, welche der Einheiten den besagten Code generiert, können die Befehle mit geeigneten Flussmarken gekennzeichnet werden. Andererseits kann die Einheit garantieren, dass ein an einer Beziehung Erzeuger/Verbraucher beteiligtes Register während des Ablaufs der erzeugenden Ausführungsfolge nicht vor dem Lesen durch die verbrauchende Ausführungsfolge neu definiert worden ist. In den unterschiedlichen Ausführungen können Synchronisationspunkte zwischen den Ausführungsfolgen festgelegt werden, sodass die erzeugende Ausführungsfolge nicht fortgesetzt wird, bevor die verbrauchende Ausführungsfolge den zugeordneten Wert gelesen hat. Obwohl der Geltungsbereich der vorliegenden Erfindung nicht auf diesen Aspekt beschränkt ist, können besagte Synchronisationspunkte unter Verwendung der vorstehend beschriebenen Synchronisationsmerker implementiert werden. Auch wenn die Flussmarken in der beschriebenen Ausführung nach 3 zum Beispiel Merker mit einem einzigen Bit sein können, die zur Anzeige bestimmt sind, ob ein Operand in einer lokalen oder in einer entfernten Position vorliegt, können diese Speicherplatzmerker zum Beispiel in anderen Ausführungen auf mehrere Bits erweitert werden, um die Anwesenheit in mehr als einer dieser Ausführungsfolgen anzuzeigen. Das heißt, in bestimmten Implementierungen können mehr als zwei Ausführungsfolgen in einem Kern oder in mehreren gegebenen Kernen abgearbeitet werden. Im Verlauf der Abarbeitung einer beliebigen dieser Ausführungsfolgen kann ein Zugriff auf die jeweils einer anderen Ausführungsfolge zugeordneten Registerdateien entsprechend den in den Befehlen vorhandenen Flussmarken und der Information in einer Merkertabelle oder einer anderen ähnlichen Struktur erfolgen, die dazu bestimmt ist, die Verfügbarkeit der entfernten Operanden anzuzeigen, zum Beispiel mittels der entsprechenden Synchronisationsmerker der diesen mehrfachen Ausführungsfolgen zugeordneten Registerdateien.
  • In gewissen Ausführungen können Codeabschnitte durch eine dynamische Optimierungseinrichtung erzeugt werden. In anderen Implementierungen ist es jedoch möglich, Einrichtungen auf der Basis von Compilern oder anderen Mechanismen zur Erzeugung von Befehlen mit einer geeigneten Flussmarkeninformation zu verwenden. Nachfolgend wird auf 4 Bezug genommen, in der ein Flussdiagramm eines Verfahrens zur Erzeugung von Flussmarkeninformation gemäß einer Ausführung der vorliegenden Erfindung dargestellt ist. Wie in 4 gezeigt kann das Verfahren 300 in einem nicht synchronisierten Zustand mit der Initialisierung der Synchronisationsmerker für die erste und die zweite Ausführungsfolge beginnen (Block 310). Die beiden Ausführungsfolgen können zum Beispiel von einer dynamischen Optimierungseinrichtung erzeugte Codeabschnitte sein. Die mehrfachen Codeabschnitte können weiterhin gleichzeitig durch unterschiedliche Ausführungsfolgen eines einzigen Prozessorkerns abgearbeitet werden, also durch die erste und die zweite Ausführungsfolge. Um eine korrekte Zuordnung der unterschiedlichen Operanden zu erreichen, werden die Synchronisationsmerker in einem nicht synchronisierten Zustand initialisiert, in gewissen Ausführungen zum Beispiel auf einen logischen Wert Null. Es ist zu beachten, dass diese Abschnitte durch die dynamische Optimierungseinrichtung identifiziert werden, die Optimierungseinrichtung kann kontrollieren, welche der Register in erzeugender/verbrauchender Funktion beteiligt sind, die Optimierungseinrichtung ist auf diese Weise in der Lage, ebenfalls das Vorhandensein eines Synchronisationspunkts zu überwachen, also des Zeitpunkts, zu dem eine Synchronisation der Operanden möglich ist. Wenngleich ein für einen entfernten Verbrauch bestimmtes Register in der erzeugenden Ausführungsfolge vielfach definiert werden kann, ist die Optimierungseinrichtung in der Lage zu garantieren, dass die letzte Definition eines Registers vor dessen Verwendung durch einen Verbraucher die Definition ist, welche die Beziehung zwischen Erzeuger und Verbraucher herstellt.
  • Weiterhin mit Bezug auf 4 kann die Steuerung anschließend an den Rhombus 320 übergehen, in dem bestimmt wird, ob ein Operand durch eine einzige Ausführungsfolge sowohl erzeugt als auch verbraucht wird. Wenn der Operand in einer einzigen Ausführungsfolge verwendet wird, geht die Steuerung an Block 330 über, in welchem der Speicherplatz zur Verwendung in den Flussmarken der Befehle angegeben werden kann, die den Operanden benutzen. Wenn dieser Operand verwendet wird, entweder als Quell- oder als Zieloperand, kann sich ein entsprechender Speicherplatzmerker, das heißt eine Flussmarke, speziell in einem zurückgesetzten Zustand befinden (zum Beispiel eine logische Null) um anzuzeigen, dass dieser Operand nur lokal benutzt wird.
  • Weiterhin mit Bezug auf 4 kann die Steuerung an Rhombus 340 übergehen, wenn in Rhombus 320 festgestellt wird, dass ein Operand von mehrfachen Ausführungsfolgen benutzt wird. In Rhombus 340 wird festgestellt, ob der identifizierte Operand ein Zieloperand ist, der von einer anderen Ausführungsfolge zu verbrauchen ist. Wenn dies der Fall ist, geht die Steuerung an Block 350 über, in dem lokale Verwendungen des Zieloperanden an Hand von Flussmarken der erzeugenden Befehle so lange identifiziert werden, bis eine letzte Definition des Zieloperanden erreicht ist (das heißt, die letzte Definition vor der Benutzung durch die verbrauchende Ausführungsfolge). Nachdem diese letzte Definition erreicht wurde, geht die Steuerung an Block 360 über, in dem dieser Befehl durch eine Flussmarke identifiziert werden kann, um die entfernte Verwendung des Zieloperanden anzuzeigen. Mit anderen Worten, dieser Befehl kann einen Speicherplatzmerker für den Zieloperanden in gesetztem Zustand beinhalten (zum Beispiel eine logische Eins). Von Block 360 geht die Steuerung an den Rhombus 370 über in dem bestimmt wird, ob ein Quelloperand durch die andere Ausführungsfolge erzeugt werden muss. Wenn dies nicht der Fall ist, kehrt die Steuerung zu dem vorhergehend erläuterten Block 330 zurück, in dem die dem Operanden zugeordneten Flussmarken als lokal gekennzeichnet werden (das heißt, mit einem logischen Wert Null).
  • Wird dagegen weiterhin mit Bezug auf 4 in Rhombus 370 festgestellt, dass der Quelloperand durch eine andere Ausführungsfolge zu erzeugen ist, geht die Steuerung an Block 380 über, in dem die Verwendung eines entfernten Quelloperanden in den Flussmarken der verbrauchenden Befehle dieser Ausführungskette oder Ausführungsfolge angegeben wird, bis dieses Register durch einen in der Ausführungsfolge enthaltenen Befehl neu definiert wird (Block 380). Das heißt, die Befehle der verbrauchenden Ausführungsfolge können auf den Wert der Daten der entfernten Registerdatei so lange zugreifen, bis dieses Register durch die erzeugende Ausführungsfolge neu definiert wird. Wenn dieses Ereignis eintritt (falls es eintritt), geht die Steuerung an Block 390 über, in dem die lokale Verwendung des Quelloperanden in den Flussmarken der verbrauchenden Befehle gekennzeichnet wird. Das heißt, wenn ein verbrauchender Befehl das Register in der Weise neu definiert, dass ein anderer Wert eingetragen wird, der als Quelloperand für nachfolgende Befehle der gleichen Ausführungsfolge verwendet wird, können die nachfolgenden Befehle der gleichen Ausführungsfolge entsprechende Flussmarken aufweisen um anzuzeigen, dass es jetzt möglich ist, den Quelloperanden lokal zu erhalten. Auch wenn in der Ausführung in 4 diese spezielle Implementierung gezeigt wird, ist der Geltungsbereich der vorliegenden Erfindung nicht auf diesen Aspekt beschränkt.
  • Demzufolge ist es in den unterschiedlichen Realisierungen möglich, zwei Ausführungsfolgen, die im gleichen Prozessorkern ablaufen, mittels direktem Zugriff auf die jeweilige Registerdatei der anderen Ausführungsfolge zu synchronisieren. Der Zugriff auf die Information auf Registerebene ermöglicht eine Verminderung der Organisationsaktivitäten zur Synchronisierung, die mit dem Erhalt von Information einer anderen Ausführungsfolge über einen indirekten Speicher verbunden sind und kann die Bandbreiteprobleme des Speichers vermindern oder beseitigen. Die Verwendung der im Kern vorhandenen Registerdateien ermöglicht eine Kommunikation von Werten mit 64 Bit oder 128 Bit zwischen zwei im gleichen Kern ablaufenden Ausführungsfolgen. Auf diese Weise besteht keine Notwendigkeit, einen Registerzustand für eine gerade hinterlegte Ausführungsfolge zu reproduzieren oder zu kopieren, da die von dieser gerade hinterlegten Ausführungsfolge zu verwendenden Operanden direkt aus der Registerdatei der hinterlegenden Ausführungsfolge gelesen werden können. Das Gebiet der vorliegenden Erfindung ist jedoch nicht auf diesen Aspekt beschränkt, gewisse Ausführungen sind in Paradigmen sequentieller im Detail zerlegter Verarbeitung wie zum Beispiel unter Verwendung mehrfacher Ausführungsfolgen, in der Verarbeitung von Hilfs-Ausführungsfolgen und in Ausführungsfolgen mit Vorwärtsablauf anwendbar. Dies ermöglicht eine Verminderung der Zahl der in besagten Ausführungsfolgen vorhandenen Befehle, da eine Kopie oder sonstige Befehle vermieden werden, die den Architekturzustand einer ersten Registerdatei wiedergeben. Stattdessen können diese zusätzlichen Ausführungsfolgen die erforderliche Information direkt aus der Registerdatei der anderen Ausführungsfolge erhalten.
  • Es ist möglich, die Ausführungen in zahlreichen Arten unterschiedlicher Systeme zu implementieren. Nachfolgend wird auf 5 Bezug genommen, in der ein Blockdiagramm eines Systems gemäß einer Ausführung der vorliegenden Erfindung dargestellt ist. Wie in 5 gezeigt, ist das Mehrprozessorsystem 500 ein System mit Punkt-zu-Punkt-Verbindungen und umfasst einen ersten Prozessor 570 und einen zweiten Prozessor 580, die über eine Punkt-zu-Punkt-Verbindung 550 miteinander verbunden sind. Wie in 5 gezeigt kann jeder der Prozessoren 570 und 580 ein Mehrkern-Prozessor sein, der einen ersten und einen zweiten Prozessorkern enthält (das heißt, die Prozessorkerne 574a und 574b sowie die Prozessorkerne 584a und 584b). Es ist zu beachten, dass jeder der Kerne mehrere Registerdateien enthalten kann, von denen jede zur Verwendung durch eine unterschiedliche Ausführungsfolge vorgesehen ist. Andererseits kann jeder Kern Hardware, Software oder Firmware oder permanent in der Hardware installierte Logik enthalten, um entsprechend einer Ausführung der vorliegenden Erfindung den direkten Zugriff einer verbrauchenden Ausführungsfolge auf eine Registerdatei der erzeugenden Ausführungsfolge über Flussmarken und Synchronisationsmerker zu ermöglichen. In gewissen Implementierungen kann eine im Prozessorkern 574a ablaufende Ausführungsfolge auf eine Registerdatei zugreifen, die einer im Prozessorkern 574b ablaufende Ausführungsfolge zugeordnet ist und umgekehrt.
  • Der erste Prozessor 570 beinhaltet darüber hinaus Punkt-zu-Punkt Schnittstellen (P-P) 576 und 578. Analog dazu beinhaltet der zweite Prozessor 580 Schnittstellen P-P 586 und 588. Wie in 5 dargestellt koppeln die Konzentratoren der Speichercontroller MCH 572 und 582 (MCH – "memory controller hub") die Prozessoren mit den zugehörigen Speichern, das heißt, mit einem Speicher 532 und einem Speicher 534, die Teile eines lokal mit den entsprechenden Prozessoren verbundenen Hauptspeichers sein können.
  • Der erste Prozessor 570 und der zweite Prozessor 580 können mit einem Chipsatz 590 über Punkt-zu-Punkt-Verbindungen 552 und 554 gekoppelt sein. Wie aus 5 hervorgeht, beinhaltet der Chipsatz 590 Punkt-zu-Punkt Schnittstellen 594 und 598. Darüber hinaus umfasst der Chipsatz 590 eine Schnittstelle 592 zur Kopplung des Chipsatzes 590 mit einem Generator zur Erzeugung von Hochleistungsgraphiken 538. In einer Ausführung kann ein Bus 539 eines verbesserten Graphikkarten-Anschlusses (AGP – "Advanced Graphics Port") zur Kopplung zwischen dem Graphikgenerator 538 und dem Chipsatz 590 verwendet werden. Der Bus AGP 539 genügt der Spezifizierung des verbesserten Graphikkarten-Anschlusses, Revision 2.0, veröffentlicht am 7. Mai 1998 von der Intel Corporation, Santa Clara, Kalifornien. Alternativ ist eine Kopplung dieser Komponenten über eine Punkt-zu-Punkt Verbindung 539 möglich.
  • Der Chipsatz 590 kann seinerseits an einen ersten Bus 516 über eine Schnittstelle 596 angeschlossen sein. Der erste Bus 516 kann in einer Ausführung aus einem Bus zum Anschluss peripherer Komponenten (PCI – "Peripheral Component Interconnect") bestehen, wie er in der Spezifikation des PCI Local Bus, Produktionsversion, Revision 2.1 vom Juni 1995 definiert ist oder kann ein Bus wie der PCI ExpressTM oder ein anderer Bus zur Zusammenschaltung von Ein- und Ausgängen (I/O) der dritten Generation sein, wobei der Geltungsbereich der vorliegenden Erfindung nicht hierauf beschränkt ist.
  • Wie in 5 dargestellt können verschiedene Ein-/Ausgabegeräte 514 an einen ersten Bus 516 zusammen mit einer Busbrücke 518 angeschlossen sein, die den ersten Bus 516 mit einem zweiten Bus 520 verbindet. Der zweite Bus 520 kann in einer Ausführung ein Bus mit niedriger Pin-Zahl (LPC – "Low pin bus") sein. An den zweiten Bus 520 können unterschiedliche Geräte angeschlossen werden, darunter beispielsweise eine Tastatur/Maus 522, Kommunikationseinrichtungen 526 und eine Datenspeichereinheit 528 wie zum Beispiel ein Plattenlaufwerk oder ein anderer Massenspeicher, der in einer Ausführung einen Code 530 enthalten kann. Weiterhin kann an den zweiten Bus 520 ein Audio-Ein-/Ausgabegerät 524 angeschlossen sein. Es ist zu beachten, dass auch andere Architekturen möglich sind. In einem System kann beispielsweise an Stelle der Architektur Punkt-zu-Punkt nach 5 ein Bus mit Mehrfachanschluss oder eine sonstige ähnliche Architektur implementiert sein.
  • Die Ausführungen können in Form von Code implementiert und auf einem Speichermedium gespeichert sein, auf dem Befehle gespeichert sind, die zur Programmierung eines Systems zur Abarbeitung der Befehle dienen können. Das Speichermedium kann beliebige Arten von Platten unter Einschluss von flexiblen Platten, optischen Platten, Nur-Lese Kompakt-Disk (CD-ROM), wieder beschreibbare Kompakt-Disk (CD-RW) und magnetooptische Platten, Halbleitereinrichtungen wie Nur-Lesespeicher (ROM), Speicher mit wahlfreiem Zugriff (RAM) wie dynamische Speicher mit wahlfreiem Zugriff (DRAM), statische Speicher mit wahlfreiem Zugriff (SRAM), programmierbare, löschbare Nur-Lesespeicher (EPROM), Speicher mit Impulsauffrischung ("flash memories"), programmierbare, elektrisch löschbare Nur-Lesespeicher (EEPROM), Magnetkarten oder optische Karten oder jedes beliebige sonstige Medium umfassen, das zur Speicherung elektronischer Befehle geeignet ist, ohne sich hierauf zu beschränken.
  • Obwohl die vorliegende Erfindung in Zusammenhang mit einer begrenzten Zahl von Ausführungen beschrieben wurde, erkennen Fachleute auf dem Gebiet zahlreiche Abwandlungen und Varianten derselben. Es wird beabsichtigt, dass die beigefügten Patentansprüche alle diese Abwandlungen und Varianten umfassen, insoweit diese im tatsächlichen Geist und Umfang der vorliegenden Erfindung enthalten sind.
  • Zusammenfassung
  • Die Erfindung betrifft die Kommunikation zwischen mehrfachen Ausführungsfolgen in einem Prozessor. Die Erfindung beinhaltet in einer Ausführung ein Verfahren zum Zugriff auf einer ersten Ausführungsfolge zugeordnete Register während eine zweite Ausführungsfolge abgearbeitet oder ausgeführt wird. In einer ähnlichen Ausführung kann die Erfindung verwendet werden für: Verhindern der Abarbeitung eines Befehls der ersten Ausführungsfolge, der auf einen Quelloperanden einer Registerdatei einer zweiten Ausführungsfolge zugreifen muss, wenn ein dem Quelloperanden zugeordneter Synchronisationsmerker anzeigt, dass eine erzeugende Operation der zweiten Ausführungsfolge nicht abgeschlossen ist, und Ausführung des Befehls, wenn der Synchronisationsmerker anzeigt, dass die erzeugende Operation der zweiten Ausführungsfolge abgeschlossen ist. Darüber hinaus werden weitere Ausführungen beschrieben und beansprucht.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • - Spezifizierung des verbesserten Graphikkarten-Anschlusses, Revision 2.0, veröffentlicht am 7. Mai 1998 von der Intel Corporation, Santa Clara, Kalifornien [0029]
    • - Spezifikation des PCI Local Bus, Produktionsversion, Revision 2.1 vom Juni 1995 [0030]

Claims (30)

  1. Ein Verfahren umfassend: Zugreifen auf eine Registerdatei einer zweiten Ausführungskette oder Ausführungsfolge durch einen Kern mit dem Ziel, einen Quelloperanden für einen Befehl einer ersten Ausführungskette oder Ausführungsfolge während der Abarbeitung des Befehls der ersten Ausführungsfolge im Kern zu erhalten.
  2. Verfahren nach Anspruch 1, zusätzlich umfassend: Verhindern, dass der Befehl der ersten Ausführungsfolge ausgeführt oder abgearbeitet wird, wenn ein einem durch den Quelloperanden identifizierten Register zugeordneter Synchronisationsmerker sich in einem ersten Anzeigezustand des Fehlens der Beendigung einer erzeugenden Operation der zweiten Ausführungsfolge befindet; und Ausführen des Befehls der ersten Ausführungsfolge, wenn sich der dem Register zugeordnete Synchronisationsmerker in einem zweiten Anzeigezustand der Beendigung der erzeugenden Operation der zweiten Ausführungsfolge befindet.
  3. Verfahren nach Anspruch 2, zusätzlich umfassend das Setzen des Synchronisationsmerkers in einem Eintrag einer Merkertabelle für das Register nach Abschluss der erzeugenden Operation.
  4. Verfahren nach Anspruch 3, zusätzlich umfassend das Setzen des Synchronisationsmerkers im Eintrag der Merkertabelle für das der ersten Ausführungsfolge zugeordnete Register und Rücksetzen des Synchronisationsmerkers im Eintrag der Merkertabelle für das der zweiten Ausführungsfolge zugeordnete Register nach Abschluss der erzeugenden Operation.
  5. Verfahren nach Anspruch 2, zusätzlich umfassend das Ausführen der erzeugenden Operation der zweiten Ausführungsfolge und des Befehls der ersten Ausführungsfolge im Kern derart, dass der Kern einen gemeinsamen Kern umfasst, in dem sowohl die erste Ausführungsfolge wie auch die zweite Ausführungsfolge abzuarbeiten sind.
  6. Verfahren nach Anspruch 1, zusätzlich umfassend das Dekodieren des Befehls der ersten Ausführungsfolge derart, dass der Befehl einen Positionsmerker für den Quelloperanden umfasst, wobei der Positionsmerker die Position des Quelloperanden in einem Register der Registerdatei der zweiten Ausführungsfolge angibt.
  7. Verfahren nach Anspruch 6, zusätzlich umfassend das Speichern eines Ergebnisses des Befehls der ersten Ausführungsfolge in einem Zielregister und Aktualisieren eines Synchronisationsmerkers für das Zielregister auf der Grundlage eines Positionsmerkers für einen entsprechenden im Befehl der ersten Ausführungsfolge vorliegenden Zieloperanden.
  8. Ein Gerät umfassend: eine Speicherung, die zum Speichern von Einträgen bestimmt ist, von denen jeder einem Register einer ersten Registerdatei einer ersten Ausführungsfolge entspricht, wobei jeder der Einträge einen Synchronisationsmerker umfassen muss, der vorgesehen ist um anzuzeigen, ob eine erzeugende Operation einer zweiten Ausführungsfolge abgeschlossen ist, die als Zieloperand ein entsprechendes Register einer zweiten Registerdatei der zweiten Ausführungsfolge zu benutzen hat.
  9. Gerät nach Anspruch 8, zusätzlich umfassend einen Controller, der zur Aktualisierung des Synchronisationsmerkers der ersten Ausführungsfolge eines Eintrags für das entsprechende Register vorgesehenen ist, nachdem die zweite Ausführungsfolge einen Befehl ausgeführt hat, der das entsprechende Register der zweiten Registerdatei als Zieloperand benutzt, wobei der Befehl einen Positionsmerker für den Zieloperanden beinhaltet, der die Nutzung des entsprechenden Registers durch die ersten Ausführungsfolge anzeigt.
  10. Gerät nach Anspruch 8, wobei die Speicherung eine Merkertabelle eines Kerns umfasst.
  11. Gerät nach Anspruch 10, wobei der Kern gleichzeitig die erste Ausführungsfolge und die zweite Ausführungsfolge abarbeitet oder ausführt und die zweite Ausführungsfolge die erste Registerdatei und die zweite Registerdatei benutzt.
  12. Gerät nach Anspruch 11, wobei der Kern während der Ausführung der ersten Ausführungsfolge auf die zweite Registerdatei zuzugreifen hat.
  13. Gerät nach Anspruch 12, wobei der Kern auf die zweite Registerdatei auf der Grundlage eines Positionsmerkers für einen Quelloperanden eines Befehls der ersten Ausführungsfolge zugreifen muss.
  14. Gerät nach Anspruch 13, wobei der Kern auf die zweite Registerdatei zusätzlich auf der Grundlage des Synchronisationsmerkers eines Eintrags für das entsprechende Register zuzugreifen hat.
  15. Gerät nach Anspruch 8, wobei das Gerät einen Kern umfasst, der die Speicherung, die erste Registerdatei, die zweite Registerdatei und eine Ausführungseinheit umfasst, wobei die Ausführungseinheit dazu bestimmt ist, aus einem Register der zweiten Registerdatei einen Quelloperanden für die Ausführung eines Befehls der ersten Ausführungsfolge auf der Grundlage eines Speicherplatzmerkers des Befehls zu erhalten.
  16. Gerät nach Anspruch 15 in welchem zu verhindern ist, dass der Befehl der ersten Ausführungsfolge ausgeführt oder abgearbeitet wird, wenn der Synchronisationsmerker eines mit dem Register der zweiten Registerdatei verbundenen Eintrags einen Zustand fehlenden Abschlusses eines erzeugenden Befehls der zweiten Ausführungsfolge anzeigt.
  17. Ein System umfassend: eine erste Registerdatei, die eine Mehrzahl von Registern beinhaltet, die zur Speicherung von Daten einer ersten Ausführungsfolge bestimmt sind; eine zweite Registerdatei, die eine Mehrzahl von Registern beinhaltet, die zur Speicherung von Daten einer zweiten Ausführungsfolge bestimmt sind; eine Ausführungseinheit, die mit der ersten Registerdatei und mit der zweiten Registerdatei verbunden ist, um Befehle der ersten Ausführungsfolge und der zweiten Ausführungsfolge abzuarbeiten, wobei die Ausführungseinheit dazu bestimmt ist, auf die erste Registerdatei zum Erhalt eines Quelloperanden für die Ausführung eines Befehls der zweiten Ausführungsfolge zuzugreifen; und einen mit der Ausführungseinheit verbundenen dynamischen Speicher mit wahlfreiem Zugriff (DRAM – "dynamic random access memory").
  18. System nach Anspruch 17, wobei die Ausführungseinheit dazu bestimmt ist, auf die erste Registerdatei auf der Grundlage einer Anzeige des Befehls der zweiten Ausführungsfolge zuzugreifen, wobei die Anzeige das Vorliegen des Quelloperanden in der Registerdatei anzeigen muss.
  19. System nach Anspruch 18, zusätzlich umfassend eine mit der Ausführungseinheit verbundene Befehlsausgabe zur Unterbrechung der Zuweisung eines Befehls der zweiten Ausführungsfolge bis ein Synchronisationsmerker aktiviert ist, der einem dem Quelloperanden zugeordneten Register zugeordnet ist.
  20. System nach Anspruch 19, wobei die Befehlsausgabe dazu bestimmt ist, nach Abarbeitung eines erzeugenden Befehls der ersten Ausführungsfolge den dem Register zugeordneten Synchronisationsmerker einzutragen.
  21. System nach Anspruch 20, wobei die Befehlsausgabe dazu bestimmt ist, nach Abarbeitung eines erzeugenden Befehls der ersten Ausführungsfolge zusätzlich einen dem Registerdatei zugeordneten Vorbereitungs- oder Verfügbarkeitsmerker einzutragen.
  22. System nach Anspruch 21, wobei die Befehlsausgabe dazu bestimmt ist, den Synchronisationsmerker und den Verfügbarkeitsmerker in einen Eintrag einer dem Register entsprechenden Merkertabelle einzutragen.
  23. System nach Anspruch 17, zusätzlich umfassend einen ersten Kern, der die Ausführungseinheit, die erste Registerdatei und die zweite Registerdatei beinhaltet, wobei der erste Kern die Befehle der ersten Ausführungsfolge und der zweiten Ausführungsfolge zu bearbeiten oder auszuführen hat.
  24. System nach Anspruch 23, zusätzlich umfassend: einen zweiten Kern, der eine zweite Ausführungseinheit und eine dritte Registerdatei beinhaltet, wobei der zweite Kern dazu bestimmt ist, Befehle einer dritten Ausführungsfolge abzuarbeiten, wobei der zweite Kern auf mindestens eine der ersten Registerdatei und der zweiten Registerdatei zugreifen muss, um einen Quelloperanden zur Verwendung in einer dritten Ausführungsfolge zu erhalten.
  25. System nach Anspruch 17, zusätzlich umfassend eine vereinheitlichte Registerdatei, welche die erste Registerdatei und die zweite Registerdatei beinhaltet.
  26. Ein maschinenlesbares Medium auf dem Befehle gespeichert sind, wobei deren Ausführung oder Abarbeitung auf einer Maschine bewirkt, dass die Maschine ein Verfahren realisiert, umfassend: Zugreifen auf eine Registerdatei einer ersten Ausführungskette oder Ausführungsfolge mit dem Ziel, einen Register-Quelloperanden zur Ausführung eines Befehls einer zweiten Ausführungsfolge zu erhalten, wenn der Befehl eine Anzeige für den Register-Quelloperanden beinhaltet, die auf die erste Ausführungsfolge zeigt.
  27. Maschinenlesbares Medium nach Anspruch 26, wobei das Verfahren zusätzlich das Zugreifen auf eine Registerdatei der zweiten Ausführungsfolge mit dem Ziel umfasst, einen Register-Quelloperanden zur Ausführung eines Befehls der ersten Ausführungsfolge zu erhalten, wenn der Befehl eine Anzeige für den Register-Quelloperanden beinhaltet, die auf die zweiten Ausführungsfolge zeigt.
  28. Maschinenlesbares Medium nach Anspruch 26, wobei das Verfahren zusätzlich umfasst das Verhindern der Ausführung des Befehls der zweiten Ausführungsfolge bis ein einem durch den Register-Quelloperanden identifizierten Register zugeordneter Merker aktiviert ist, wobei der Merker den Abschluss einer erzeugenden Operation der ersten Ausführungsfolge anzeigt.
  29. Maschinenlesbares Medium nach Anspruch 26, wobei das Verfahren zusätzlich das Ausführen des Befehls der zweiten Ausführungsfolge und das anschließende Aktivieren eines Synchronisationsmerkers umfasst, der einem durch einen Register-Zieloperanden des Befehls der zweiten Ausführungsfolge identifizierten Register zugeordnet ist, wenn der Befehl eine Anzeige für den Register-Zieloperanden enthält, die auf die ersten Ausführungsfolge zeigt.
  30. Maschinenlesbares Medium nach Anspruch 26, wobei das Verfahren zusätzlich umfasst das Ablegen der zweiten Ausführungsfolge von Seiten der ersten Ausführungsfolge ohne Wiedergabe eines Zustands der ersten Ausführungsfolge in der zweiten Ausführungsfolge und Veranlassen, dass die zweite Ausführungsfolge während der Ausführung des Befehls der zweiten Ausführungsfolge auf die Registerdatei der ersten Ausführungsfolge zugreift.
DE112006004005T 2006-10-27 2006-10-27 Kommunikation zwischen Mehrfach-Ausführungsfolgen in einem Prozessor Withdrawn DE112006004005T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/ES2006/070162 WO2008049938A1 (es) 2006-10-27 2006-10-27 Comunicación entre múltiples secuencias de procesamiento en un procesador

Publications (1)

Publication Number Publication Date
DE112006004005T5 true DE112006004005T5 (de) 2009-06-10

Family

ID=39324164

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112006004005T Withdrawn DE112006004005T5 (de) 2006-10-27 2006-10-27 Kommunikation zwischen Mehrfach-Ausführungsfolgen in einem Prozessor

Country Status (5)

Country Link
US (1) US8261046B2 (de)
JP (1) JP2010500679A (de)
CN (1) CN101529377B (de)
DE (1) DE112006004005T5 (de)
WO (1) WO2008049938A1 (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2159692A4 (de) * 2007-06-20 2010-09-15 Fujitsu Ltd Informationsprozessor und lastarbitrierungs-steuerverfahren
US8832712B2 (en) * 2009-09-09 2014-09-09 Ati Technologies Ulc System and method for synchronizing threads using shared memory having different buffer portions for local and remote cores in a multi-processor system
US8650554B2 (en) 2010-04-27 2014-02-11 International Business Machines Corporation Single thread performance in an in-order multi-threaded processor
US8667253B2 (en) 2010-08-04 2014-03-04 International Business Machines Corporation Initiating assist thread upon asynchronous event for processing simultaneously with controlling thread and updating its running status in status register
US8713290B2 (en) 2010-09-20 2014-04-29 International Business Machines Corporation Scaleable status tracking of multiple assist hardware threads
US8793474B2 (en) 2010-09-20 2014-07-29 International Business Machines Corporation Obtaining and releasing hardware threads without hypervisor involvement
US8572628B2 (en) 2010-12-02 2013-10-29 International Business Machines Corporation Inter-thread data communications in a computer processor
US8561070B2 (en) 2010-12-02 2013-10-15 International Business Machines Corporation Creating a thread of execution in a computer processor without operating system intervention
US9529596B2 (en) * 2011-07-01 2016-12-27 Intel Corporation Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits
WO2014142704A1 (en) 2013-03-15 2014-09-18 Intel Corporation Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture
US9389871B2 (en) 2013-03-15 2016-07-12 Intel Corporation Combined floating point multiplier adder with intermediate rounding logic
US9348595B1 (en) 2014-12-22 2016-05-24 Centipede Semi Ltd. Run-time code parallelization with continuous monitoring of repetitive instruction sequences
US9135015B1 (en) 2014-12-25 2015-09-15 Centipede Semi Ltd. Run-time code parallelization with monitoring of repetitive instruction sequences during branch mis-prediction
US9208066B1 (en) 2015-03-04 2015-12-08 Centipede Semi Ltd. Run-time code parallelization with approximate monitoring of instruction sequences
EP3274815B1 (de) * 2015-03-27 2021-12-22 Intel Corporation Vorrichtung und verfahren zur kommunikation zwischen strängen
US10296350B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences
US10296346B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences based on pre-monitoring
US9715390B2 (en) 2015-04-19 2017-07-25 Centipede Semi Ltd. Run-time parallelization of code execution based on an approximate register-access specification
US10423415B2 (en) * 2017-04-01 2019-09-24 Intel Corporation Hierarchical general register file (GRF) for execution block
US11119774B2 (en) 2019-09-06 2021-09-14 International Business Machines Corporation Slice-target register file for microprocessor
US11093246B2 (en) 2019-09-06 2021-08-17 International Business Machines Corporation Banked slice-target register file for wide dataflow execution in a microprocessor
US11157276B2 (en) 2019-09-06 2021-10-26 International Business Machines Corporation Thread-based organization of slice target register file entry in a microprocessor to permit writing scalar or vector data to portions of a single register file entry
US11816486B2 (en) * 2022-01-18 2023-11-14 Nxp B.V. Efficient inter-thread communication between hardware processing threads of a hardware multithreaded processor by selective aliasing of register blocks
CN114610394B (zh) * 2022-03-14 2023-12-22 海飞科(南京)信息技术有限公司 指令调度的方法、处理电路和电子设备
CN117170750B (zh) * 2023-09-04 2024-04-30 上海合芯数字科技有限公司 多源操作数指令的调度方法、装置、处理器、设备及介质

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2537526B2 (ja) * 1987-12-02 1996-09-25 富士通株式会社 マルチプロセッサシステム
US5187796A (en) * 1988-03-29 1993-02-16 Computer Motion, Inc. Three-dimensional vector co-processor having I, J, and K register files and I, J, and K execution units
DE4129614C2 (de) * 1990-09-07 2002-03-21 Hitachi Ltd System und Verfahren zur Datenverarbeitung
JP2834298B2 (ja) * 1990-09-19 1998-12-09 株式会社日立製作所 データ処理装置及びデータ処理方法
JPH06242948A (ja) * 1993-02-16 1994-09-02 Fujitsu Ltd パイプライン処理計算機
US5694565A (en) 1995-09-11 1997-12-02 International Business Machines Corporation Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
JP2970553B2 (ja) * 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
US5887166A (en) * 1996-12-16 1999-03-23 International Business Machines Corporation Method and system for constructing a program including a navigation instruction
US5845307A (en) * 1997-01-27 1998-12-01 Sun Microsystems, Inc. Auxiliary register file accessing technique
WO1999008185A1 (en) * 1997-08-06 1999-02-18 Advanced Micro Devices, Inc. A dependency table for reducing dependency checking hardware
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US6317820B1 (en) * 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism
US6286027B1 (en) * 1998-11-30 2001-09-04 Lucent Technologies Inc. Two step thread creation with register renaming
US20030188141A1 (en) * 2002-03-29 2003-10-02 Shailender Chaudhry Time-multiplexed speculative multi-threading to support single-threaded applications
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US20020103847A1 (en) * 2001-02-01 2002-08-01 Hanan Potash Efficient mechanism for inter-thread communication within a multi-threaded computer system
US6928645B2 (en) * 2001-03-30 2005-08-09 Intel Corporation Software-based speculative pre-computation and multithreading
US6950927B1 (en) * 2001-04-13 2005-09-27 The United States Of America As Represented By The Secretary Of The Navy System and method for instruction-level parallelism in a programmable multiple network processor environment
US6976155B2 (en) * 2001-06-12 2005-12-13 Intel Corporation Method and apparatus for communicating between processing entities in a multi-processor
US7752423B2 (en) * 2001-06-28 2010-07-06 Intel Corporation Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor
US7185338B2 (en) * 2002-10-15 2007-02-27 Sun Microsystems, Inc. Processor with speculative multithreading and hardware to support multithreading software
US7484075B2 (en) * 2002-12-16 2009-01-27 International Business Machines Corporation Method and apparatus for providing fast remote register access in a clustered VLIW processor using partitioned register files
US20040268093A1 (en) * 2003-06-26 2004-12-30 Samra Nicholas G Cross-thread register sharing technique
US7596682B2 (en) * 2004-04-08 2009-09-29 International Business Machines Corporation Architected register file system utilizes status and control registers to control read/write operations between threads
US8166282B2 (en) * 2004-07-21 2012-04-24 Intel Corporation Multi-version register file for multithreading processors with live-in precomputation
US7610470B2 (en) * 2007-02-06 2009-10-27 Sun Microsystems, Inc. Preventing register data flow hazards in an SST processor
US20080229062A1 (en) * 2007-03-12 2008-09-18 Lorenzo Di Gregorio Method of sharing registers in a processor and processor
US8898438B2 (en) * 2007-03-14 2014-11-25 XMOS Ltd. Processor architecture for use in scheduling threads in response to communication activity
US9047197B2 (en) * 2007-10-23 2015-06-02 Oracle America, Inc. Non-coherent store instruction for fast inter-strand data communication for processors with write-through L1 caches

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Spezifikation des PCI Local Bus, Produktionsversion, Revision 2.1 vom Juni 1995
Spezifizierung des verbesserten Graphikkarten-Anschlusses, Revision 2.0, veröffentlicht am 7. Mai 1998 von der Intel Corporation, Santa Clara, Kalifornien

Also Published As

Publication number Publication date
US20100005277A1 (en) 2010-01-07
WO2008049938A1 (es) 2008-05-02
US8261046B2 (en) 2012-09-04
JP2010500679A (ja) 2010-01-07
CN101529377B (zh) 2016-09-07
CN101529377A (zh) 2009-09-09

Similar Documents

Publication Publication Date Title
DE112006004005T5 (de) Kommunikation zwischen Mehrfach-Ausführungsfolgen in einem Prozessor
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE112011101364B4 (de) Fehlerbehebung in Multithread-Code
DE112011105042B4 (de) Indikatoren zur Aufzeichnung einer letzten Verzweigung für einen Transaktionsspeicher
DE112010003595B4 (de) Verfahren, Systeme und maschinenverarbeitbares Medium zur Bereitstellung einer verteiltenPrädikatvorhersage
DE102015112202A1 (de) Kombinieren von Pfaden
DE102010051477B4 (de) Verfahren in einer computerplattform sowie computerplattform zum gemeinsamen benutzen von virtuellen speicherbasierten mehrversionsdaten zwischen den verschiedenartigen prozessoren der computerplattform
DE2714805C2 (de)
DE112011104555B4 (de) Vektorkonfliktinstruktionen
DE68929483T2 (de) Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist.
DE69933088T2 (de) Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten
DE19534752A1 (de) Verfahren und System zum Liefern einer Unterstützung für eine spekulative Ausführung
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE102013017982A1 (de) COMPILER gesteuerte Gebietsdisponierung für SIMD-Ausführung von Strängen
DE10297624T5 (de) Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen
DE112011101391T5 (de) GPU-fähige Datenbanksysteme
DE19960050A1 (de) Grafische Benutzerschnittstelle zur Entwicklung von Anwendungsbeispielen unter Verwendung einer Testobjektbibliothek
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE19914210A1 (de) Verfahren und Vorrichtung für eine gestaffelte Ausführung einer Anweisung
EP0432802A2 (de) Verfahren für die automatische Syntaxanalyse (Parsen) des Textes von Computer-Programmen in Kompilierern
DE102018109538A1 (de) Techniken zum umfassenden Synchronisieren einer Ausführung von Threads
DE102013013137A1 (de) Mehrstufige registerumbenennung durch entfernen von abhängigkeiten
EP0825540B1 (de) Prozessor mit Pipelining-Aufbau

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140501