-
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 112a–112n (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 114a–114n (allgemein
Verfügbarkeitsmerker 114) und ein Synchronisationsmerker 116a–116n (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 122a–122n (allgemein
Eintrag 122) beinhalten kann, die jeweils einem Register
ihrer Registerdatei zugeordnet sind. In gleicher Weise kann jeder
Eintrag 122 einen entsprechenden Verfügbarkeitsmerker 124a–124n (allgemein
Verfügbarkeitsmerker 124) sowie einen Synchronisationsmerker 126a–126n (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]