-
Hintergrund
-
Die
vorliegende Offenbarung bezieht sich allgemein auf das Gebiet der
Elektronik. Eine Ausführungsform
der Erfindung bezieht sich insbesondere auf unbeschränkte Transaktionsspeichersysteme.
-
Um
die Leistungsfähigkeit
zu steigern, können
manche Rechnersysteme mehrere Ausführungsstränge gleichzeitig ausführen. Bevor
ein Ausführungsstrang
auf eine gemeinsame Ressource zugreift, kann er im allgemeinen eine
Verriegelung der gemeinsamen Ressource erlangen. In Situationen,
in denen es sich bei der gemeinsamen Ressource um eine in einem
Speicher gespeicherte Datenstruktur handelt, können alle Ausführungsstränge, die
auf dieselbe Ressource zuzugreifen versuchen, im Hinblick auf die
durch den Sperrmechanismus bereitgestellte wechselseitige Ausschließlichkeit
ihre Operationen seriell auszuführen.
Dies kann sich nachteilig auf die Systemleistungsfähigkeit
auswirken und Programmfehlfunktionen hervorrufen, beispielsweise aufgrund
von Systemblockadefehlern.
-
Um
die sich aus der Verwendung von Sperrmechanismen ergebenden Leistungsstörungen zu vermindern,
können
einige Rechnersysteme Transaktionsspeicher verwenden. Transaktionsspeicher beziehen
sich im allgemeinen auf ein Synchronisierungsmodell, das mehreren
Ausführungssträngen erlaubt,
gleichzeitig auf eine gemeinsame Ressource (wie beispielsweise eine
in einem Speicher gespeicherte Datenstruktur) zuzugreifen, ohne
eine Verriegelung zu erlangen, solange die Zugriffe nicht in Konflikt
miteinander stehen, beispielsweise solange die Zugriffe auf unterschiedliche
Bereiche der gemeinsamen Ressource gerichtet sind.
-
Ein
Transaktionsspeicher kann mittels eines Lookup-Tabellen-Mechanismus
implementiert werden. Um auf eine gemeinsame Ressource zuzugreifen,
kann ein Ausführungsstrang
insbesondere zunächst
eine in einem Speicher gespeicherte Tabelle überprüfen, um zu bestimmen, ob ein
anderer Ausführungsstrang
auf denselben Bereich der gemeinsamen Ressource zu greift. Der Zugriff
auf eine in einem Speicher gespeicherte Tabelle kann einen Overhead erzeugen,
der die Leistungsfähigkeit
herabsetzt.
-
Kurze Beschreibung der Zeichnungen
-
Die
ausführliche
Beschreibung wird mit Bezug auf die begleitenden Figuren gegeben.
In den Figuren bestimmt die ganz links stehende Ziffer (bzw. die
ganz links stehenden Ziffern) eines Bezugszeichens die Figur, in
der das Bezugszeichen zum ersten Mal auftritt. Die Verwendung derselben
Bezugszeichen in unterschiedlichen Figuren zeigt ähnliche oder
identische Elemente an.
-
Die 1, 6 und 7 veranschaulichen
Blockdiagramme von Ausführungsformen
von Rechnersystemen, die zur Implementierung verschiedener hier
diskutierter Ausführungsformen
verwendet werden können.
-
2 veranschaulicht
ein Blockdiagramm von Teilen eines Prozessorkerns gemäß einer
Ausführungsform
der Erfindung.
-
Die 3 bis 5 veranschaulichen
Blockdiagramme von Verfahren entsprechend verschiedener Ausführungsformen
der Erfindung.
-
Ausführliche Beschreibung
-
In
der nachfolgenden Beschreibung werden zahlreiche spezifische Einzelheiten
ausgeführt,
um ein tief greifendes Verständnis
verschiedener Ausführungsformen
zu ermöglichen.
Einige Ausführungsformen
können
jedoch ohne die spezifischen Einzelheiten zur Ausführung gebracht
werden. In anderen Fällen
sind wohlbekannte Verfahren, Prozeduren, Komponenten und Schaltungen
nicht in ihren Einzelheiten beschrieben worden, um die speziellen Ausführungsformen
nicht zu verdecken.
-
Einige
der hier erörterten
Ausführungsformen
können
effiziente Mechanismen für
unbeschränkte
Transaktionsspeichersysteme bereitstellen, die eine Kombination
der Methoden des Hardware-Transaktionsspeichers (hardware transactional memory,
HTM) und Software- Transaktionsspeichers (software
transactional memory, STM) Methoden verwenden, wie beispielsweise
die mit Bezug auf die Rechnersysteme der 1 bis 7 erörterten
Ausführungsformen.
Spezieller veranschaulicht 1 ein Blockdiagramm
eines Rechnersystems 100 gemäß einer Ausführungsform
der Erfindung. Das System 100 kann einen oder mehrere Prozessoren 102-1 bis 102-N (hier
als „Prozessoren 102" oder allgemeiner
als „Prozessor 102" bezeichnet) umfassen. Die
Prozessoren 102 können über eine
Verbindungsleitung oder einen Bus 104 kommunizieren. Jeder
der Prozessoren kann verschiedene Komponenten enthalten, von denen
einige der Klarheit halber nur mit Bezug auf den Prozessor 102-1 erörtert werden. Demzufolge
kann jeder der übrigen
Prozessoren 102-2 bis 102-N die gleichen oder ähnliche
Komponenten, wie sie mit Bezug auf den Prozessor 102-1 erörtert sind,
enthalten. Zusätzlich
sind die hier erörterten
Ausführungsformen
nicht auf Multiprozessor-Rechnersysteme
beschränkt
und können
in einem Einzelprozessor-Rechnersystem angewendet werden.
-
In
einer Ausführungsform
kann der Prozessor 102-1 einen oder mehrere Prozessorkerne 106-1 bis 106-M (hier
als „Kerne 106" oder allgemeiner
als „Kern 106" bezeichnet), einen
Cache-Speicher 108 und/oder
einen Router 110 umfassen. Die Prozessorkerne 106 können auf
einem einzelnen IC-Chip (integrated circuit, IC) implementiert sein.
Der Chip kann darüber
hinaus einen oder mehrere gemeinsame und/oder private Cache-Speicher
(wie beispielsweise den Cache-Speicher 108), Busse oder
Verbindungsleitungen (wie beispielsweise einen Bus 112),
Speichersteuerungen (wie beispielsweise die mit Bezug auf 6 und 7 erörterten)
oder andere Komponenten enthalten.
-
In
einer Ausführungsform
kann der Router 110 verwendet werden, um zwischen den verschiedenen
Komponenten des Prozessors 102-1 und/oder des Systems 100 zu
kommunizieren. Überdies
kann der Prozessor 102-1 mehr als einen Router 110 umfassen.
Darüber
hinaus können
die Vielzahl von Routern (110) in Verbindung stehen, um
ein Datenrouting zwischen verschiedenen Komponenten innerhalb oder
außerhalb
des Prozessors 102-1 zu ermöglichen.
-
Der
Cache-Speicher 108 kann zusätzlich Daten (beispielsweise
solche, die Befehle umfassen) speichern, die von einer oder mehreren
Komponenten des Prozessors 102-1 verwendet werden. Der Cache-Speicher 108 kann
beispielsweise in einem Speicher 114 gespeicherte Daten
lokal für
einen schnelleren Zugriff durch Komponenten des Prozessors 102-1 zwischenspeichern.
Wie in 1 gezeigt, kann der Speicher 114 über die
Verbindungsleitung 104 in Verbindung mit den Prozessoren 102-1 stehen.
In einer Ausführungsform
kann der (eventuell gemeinsam benutzte) Cache-Speicher 108 einen oder
mehrere Level 2 (L2)-Cache-Speicher, einen Schlusslevel-Cache-Speicher
(last level cache, LLC) oder andere Arten von Cache-Speichern umfassen. Jeder
der Kerne 106 oder Prozessoren 102 kann auch einen
Level 1 (L1)-Cache-Speicher umfassen. Verschiedene Komponenten
des Prozessors 102-1 können über einen
Bus (beispielsweise den Bus 112) und/oder eine Speichersteuerung
oder ein Hub direkt mit dem Cache-Speicher 108 kommunizieren.
Der Prozessor 102-1 kann auch mehr als einen Cache-Speicher
umfassen. Wie mit Bezug auf 2 ausführlicher
erörtert
werden wird, kann der Speicher 114 auch eine Seitentabelle 116 umfassen,
die Informationen bezüglich
der Abbildung zwischen virtuellen und physikalischen Adressen speichert.
-
2 veranschaulicht
ein Blockdiagramm von Teilen eines Prozessorkerns 106 gemäß einer Ausführungsform
der Erfindung. Ein oder mehrere Prozessorkerne (wie beispielsweise
der Prozessorkern 106) können auf einem einzelnen IC-Chip
(oder Die) implementiert sein, wie mit Bezug auf 1 erörtert. Darüber hinaus
kann der Chip einen oder mehrere gemeinsame und/oder private Cache-Speicher (beispielsweise
den Cache-Speicher 108 der 1), Verbindungsleitungen
(beispielsweise die Verbindungsleitungen 104 und/oder 112 der 1),
Speichersteuerungen oder andere Komponenten umfassen.
-
Wie
in 2 veranschaulicht, kann der Prozessorkern 106 eine
Abrufeinheit 202 umfassen, um Befehle zur Ausführung durch
den Kern 106 abzurufen. Die Befehle können aus jeder Speichervorrichtung
wie beispielsweise dem Speicher 114 und/oder den mit Bezug
auf die 6 und 7 erörterten Speichervorrichtungen
abgerufen werden. Der Kern 106 kann auch eine Dekodiereinheit 204 umfassen, um
die abgerufenen Befehle zu decodieren. Die Dekodiereinheit 204 kann
die abgerufenen Befehle beispielsweise in mehrere Mikrooperationen
(micro operations, μops)
decodieren.
-
Der
Kern 106 kann zusätzlich
eine Ablaufeinheit 206 umfassen. Die Ablaufeinheit 206 kann
verschiedene Operationen ausführen,
die mit dem Speichern dekodierter Befehle (wie sie beispielsweise von
der Dekodiereinheit 204 empfangen werden) verbunden sind,
bis die Befehle versandfertig sind, beispielsweise bis alle Quellwerte
eines dekodierten Befehls verfügbar
werden. In einer Ausführungsform kann
die Ablaufeinheit 206 dekodierte Befehle zur Ausführung an
eine Ausführungseinheit 208 disponieren
und/oder ausgeben (oder versenden). Die Ausführungseinheit 208 kann
die versandten Befehle ausführen,
nachdem sie (beispiels weise durch die Dekodiereinheit 204)
dekodiert und (beispielsweise durch die Ablaufeinheit 206)
versandt worden sind. In einer Ausführungsform kann die Ausführungseinheit 208 mehr
als eine Ausführungseinheit
umfassen, wie beispielsweise eine Speicherausführeinheit, eine Ganzzahl-Ausführungseinheit,
eine Gleitkommazahl-Ausführungseinheit
oder andere Ausführungseinheiten.
Die Ausführungseinheit 208 kann
auch Befehle außer
der Reihenfolge ausführen.
Folglich kann der Prozessorkern 106 in einer Ausführungsform
ein Außer-der-Reihe-Prozessorkern (out-of-order
processor core) sein. Der Kern 106 kann auch eine Ausscheideeinheit 210 umfassen.
Die Ausscheideeinheit 210 kann ausgeführte Befehle ausscheiden, nachdem
sie erfolgreich ausgeführt
worden sind. In einer Ausführungsform
kann ein Ausscheiden der ausgeführten
Befehle dazu führen,
dass ein Prozessorzustand von der Ausführung der Befehle entbunden wird,
die von den Befehlen verwendeten physikalischen Register freigegeben
werden usw.
-
Wie
in 2 veranschaulicht, kann der Kern 106 auch
einen Spur-Cachespeicher (trace cache) oder einen Mikrocode-Nur-Lesespeicher
(μROM) 212 umfassen,
um Mikrocode und/oder Spuren von Befehlen, die (beispielsweise durch
die Abrufeinheit 202) abgerufen worden sind, zu speichern.
Der in dem μROM 212 gespeicherte
Mikrocode kann verwendet werden, um verschiedene Hardware-Komponenten
des Kerns 106 zu konfigurieren. In einer Ausführungsform
kann der in dem μROM 212 gespeicherte
Mikrocode aus einer anderen in Verbindung mit dem Prozessorkern 106 stehenden
Komponente geladen werden, wie beispielsweise einem rechnerlesbaren
Medium oder einer anderen mit Bezug auf die 6 und 7 erörterten
Speichervorrichtung.
-
Der
Prozessorkern 106 kann auch einen Datenübersetzungs-Look-Aside-Puffer
(DTLB) 214 umfassen, um Teile der Seitentabelle 116 zu
speichern (oder zwischenzuspeichern). In einer Ausführungsform
kann es sich bei dem DTLB 214 um einen inhaltsadressierbaren
Speicher (CAM) handeln. Darüber
hinaus kann der Prozessorkern 106 eine Buseinheit 216 umfassen,
um die Kommunikation zwischen Komponenten des Prozessorkerns 106 und
anderen Komponenten (wie beispielsweise den mit Bezug auf 1 erörterten
Komponenten) über
einen oder mehrere Busse (beispielsweise die Busse 104 und/oder 112)
zu ermöglichen.
Die Seitentabelle 116 und der DTLB 214 können einen
oder mehrere Einträge
umfassen. In einer Ausführungsform
speichert der DTLB 214 für jeden Eintrag Informationen
wie beispielsweise eine virtuelle Adresse 218 (die beispielsweise
eine Speicheradresse virtuell identifizieren kann), eine physikalische
Adresse 220 (die beispielsweise eine der virtuellen Adresse 218 entsprechende
physikalische Adresse in dem Speicher 114 oder einem anderen
Speicher identifizieren kann), ein Besitz-Flag 222 (das
beispielsweise einen oder mehrere Bits zur Identifizierung eines
Besitzers, eines Besitzerstatus und/oder eines Besitzerzugriffstyps
(beispielsweise Schreib- oder Lesezugriff) des entsprechenden Eintrags
oder einer Seite innerhalb des DTLB 214 umfasst) und/oder
ein Spekulativ-Flag 224 (das beispielsweise von einem Ausführungsstrang
oder einem Speichervorgang verwendet werden kann, um anzuzeigen,
dass auf den entsprechenden Eintrag (oder auf die entsprechende
Seite) spekulativ zugegriffen wird) speichern. In einer Ausführungsform
kann die Seitentabelle 116 auch die Felder 218 bis 224 für jeden
Eintrag umfassen.
-
In
einer Ausführungsform
kann die Seitentabelle 116 für jeden Eintrag Informationen
wie beispielsweise eine virtuelle Adressmarke 226, eine physikalische
Adressmarke 228 und/oder physikalische Adressdaten 230 speichern.
Wie hier mit Bezug auf die 3 bis 5 näher erörtert wird,
können die
Marken 226 und 228 zum Durchsuchen der Seitentabelle 116 verwendet
werden (um beispielsweise physikalische Adressdaten 230 zu
erhalten).
-
In
einer Ausführungsform
kann ein Seitentabellen-Basiszeiger 232 auf die Basis der
Seitentabelle 116 zeigen. Zusätzlich kann ein Seitentabellen-Begrenzungszeiger 234 auf
den Kopf (oder letzten Eintrag) der Seitentabelle 116 zeigen.
Die Zeiger 232 und 234 können in Hardware-Registern
oder als Variablen in einem Speicher (wie beispielsweise dem Speicher 114)
gespeichert werden. Der Kern 106 kann auch ein Transaktionsdeskriptor-Register 236 umfassen,
um beispielsweise einen Deskriptor zu speichern, der einem oder
mehreren Befehlen einer Transaktionsspeicher-Anfrage entspricht.
Weitere Einzelheiten bezüglich
der Operationen, die sich auf die im Zusammenhang mit den 1 und 2 diskutierten
Komponenten beziehen, werden mit Bezug auf die in den 3 bis 5 veranschaulicht
Verfahren erörtert.
-
Spezieller
veranschaulicht 3 ein Blockdiagramm einer Ausführungsform
eines Verfahrens 300 zum Ausführen eines oder mehrerer Befehle,
die HTM- und/oder STM-Transaktionen
entsprechen. In einer Ausführungsform
können
verschiedene mit Bezug auf die 1 und 2 sowie 6 und 7 erörterte Komponenten
zur Ausführung
einer oder mehrerer der mit Bezug auf 3 erörterten
Operationen verwendet werden.
-
Bezug
nehmend auf die 1 bis 3, kann
bei einer Operation 302 ein von dem Kern 106 ausgeführter Ausführungsstrang
eine HTM-Transaktion beginnen. Der Ausführungsstrang kann einen oder
mehrere von dem Kern 106 ausgeführte Befehle umfassen (304).
Folglich kann der Ausführungsstrang
einen oder mehrere Befehle umfassen, die einer HTM-Zugriffsanfrage
(wie beispielsweise einer oder mehrerer Lade- oder Speicheroperationen)
entsprechen. Falls ein Konflikt mit einem anderen Befehl (der ein
dem gleichen Ausführungsstrang
oder einem anderen Ausführungsstrang,
beispielsweise einem auf einem unterschiedlichen Prozessorkern laufenden
Ausführungsstrang
entsprechender Befehl sein kann) bei einer Operation 306 auftritt,
wird die Hardware-Transaktion bei einer Operation 308 abgebrochen.
Ein im Konflikt stehender Befehl kann beispielsweise einen Snoop
auf einen für
einen Eintrag in dem DTLB 214 aussenden, auf den die HTM-Transaktion
der Operation 302 zugreift (oder als im Zugriff stehend
markiert hat, wie durch einen im Spekulativ-Flag 224 gespeicherten
Wert angezeigt wird).
-
Falls
bei der Operation 306 keine Konflikte auftreten, kann der
Kern 106 bei einer Operation 312 bestimmen, ob
die dem HTM von Operation 302 entsprechende Hardware-Transaktion
bei einer Operation 310 ausgeführt wurde (beispielsweise durch
die Ausscheideeinheit 210). Falls die Hardware-Transaktion
ausgeführt
wurde, kann der Kern 106 die entsprechenden Daten in dem
Speicher 114, der Seitentabelle 116 und/oder dem
DTLB 214 aktualisieren. Wenn andernfalls die Hardware-Transaktion
(oder einer ihrer Befehle) bei der Operation 310 nicht
ausgeführt
wird, kann der Kern 106 bestimmen, ob der Ausführungsfehler
auf einem Hardware-Überlauf
beruht (314), beispielsweise wegen eines Cache-Speicher-Überlaufs,
einer Ausnahmebedingung, eines Interrupts, einer Ausnahme, einem
Seitenfehler, einem Eingabe/Ausgabe-Befehl oder anderen Hardware-Überlauf-Bedingungen.
Falls kein Hardware-Überlauf
eintritt (314), kann der Kern 106 mit der Operation 304 fortfahren,
beispielsweise die verbleibenden Befehle, die der HTM-Transaktion
der Operation 302 entsprechen, ausführen. Im Fall eines Hardware-Überlaufs
(314) kann der Kern 106 bei Operation 320 eine
STM-Transaktion
beginnen. In einer Ausführungsform
können
der HTM von Operation 302 und der STM von Operation 320 auf
denselben Zugriff (beispielsweise eine oder mehrere Lese- oder Schreib-Operationen)
auf den Speicher 114 gerichtet sein. Sobald also in einer
Ausführungsform
der HTM von Operation 302 aufgrund eines Hardware-Überlaufs
bei Operation 422 nicht ausführt, kann dieselbe Speicheroperation
(oder können
dieselben Speicheroperationen) durch den STM von Operation 320 ausgeführt werden.
Bei einer Operation 322 kann der Kern 106 einen
oder mehrere Befehle entsprechend dem STM ausführen. Folglich kann der Ausführungsstrang
einen oder mehrere Befehle umfassen, die einer STM-Zugriffsanfrage
(wie beispielsweise einer oder mehreren Lade- oder Speicheroperationen)
entsprechen. Bei einer Operation 324 kann der Kern 106 bestimmen,
ob die STM-Transaktion ausgeführt
wurde. Falls die STM-Transaktion ausgeführt bleibt (324),
kann der Kern 106 mit der Ausführung der verbleibenden Befehle
entsprechend der STM-Transaktion der Operation 320 fortfahren.
Falls die Software-Transaktion ausgeführt ist (324), kann
der Kern 106 bei der Operation 312 die entsprechenden
Daten in dem Speicher 114, der Seitentabelle 116 und/oder dem
DTLB 214 aktualisieren. In einer Ausführungsform kann die Operation 312 atomar
ausgeführt
werden, sodass beispielsweise nach einer Ausführung (bei den Operationen 310 und/oder 324)
die spekulativen Aktualisierungen atomar sichtbar werden.
-
Wie
weiterhin mit Bezug auf die 4 und 5 erörtert werden
wird, kann der Kern 106 in einer Ausführungsform die mit Bezug auf
das Verfahren 300 erörterten
Befehle spekulativ ausführen.
Beispielsweise kann der Kern 106 bei den Operationen 302 und/oder 320 einen
Wert in dem Spekulativ-Flag 224 speichern, um anzuzeigen,
dass auf den zugehörigen
Eintrag in dem DTLB 214 und/oder der Seitentabelle 116 spekulativ
zugegriffen wird. Sobald der HTM (bei Operation 308) abbricht
oder die HTM- oder STM-Transaktionen bei Operation 312 erfolgreich
ausgeführt
ist, kann der Kern 106 das Spekulativ-Flag 224 aktualisieren,
um anzuzeigen, dass auf den entsprechenden Eintrag nicht länger spekulativ zugegriffen
wird. In einer Ausführungsform
kann der Konflikt der Operation 306 durch einen Snoop-Zugriff auf
einen Eintrag, der (beispielsweise durch das Spekulativ-Flag 224)
durch die HTM-Transaktion
von Operation 302 als spekulativ zugegriffen markiert worden
ist, hervorgerufen werden. In Übereinstimmung
mit wenigstens einer Befehlssatz-Architektur kann der Snoop durch
einen Besitzanfrage-Befehl (request for ownership instruction, „RFO") ausgelöst werden.
Entsprechend kann ein Prozessorkern 106 einen DTLB-Eintrag
(214) in exklusiven Besitz nehmen, um beispielsweise die
entsprechenden Einträge
in anderen DTLB-Speichern anderer Prozessorkerne außer Kraft
zu setzen.
-
Weiterhin
können
in einer Ausführungsform DTLB-Abschüsse (shoot
downs) verwendet werden, um in einem Mehrkernprozessor (beispielsweise
Prozessor 102-1) die Kohärenz der DTLBs (214A)
aufrecht zu erhalten. DTLB-Abschüsse
beziehen sich allgemein auf Situationen, in denen ein Ausführungsstrang
eine Änderung
(oder Änderungen)
an einer Seitentabelle (116) vornimmt und als Ergebnis
ein Signal zu anderen Kernen (106) gesendet wird, um den zugehörigen Eintrag
aus ihren entsprechenden DTLB 214 zu entfernen. Die Felder 226 bis 230 der Seitentabelle 116 können in
einer Ausführungsform zusätzlich verwendet
werden, um Kohärenzprotokolle
zwischenzuspeichern. Beispielsweise können der DTLB 214 (und
die Seitentabelle 116) in einem identifizierbaren Bereich
des physikalischen Speichers (beispielsweise innerhalb des Speichers 114),
wie zum Beispiel dem durch die Zeiger 232 und 234 angezeigten
Bereich, gespeichert werden. Wenn der Kern 106 (oder ein
in dem Kern 106 bereitgestellter Snoop-Filter) einen Snoop-Zugriff
auf den Bus 104/112) erfasst, weiß er unter
Bezugnahme auf die Felder 226 bis 230 in der Seitentabelle 116,
ob der Snoop-Zugriff für
den DTLB 214 oder die Cache-Speicher bestimmt ist. Wenn
ein Prozessorkern 106 einen DTLB-Eintrag 214 in
Besitz nehmen will, kann er in einer Ausführungsform eine Snoop-Anfrage nach der
entsprechenden physikalischen Adresse senden, die dann unter Verwendung
der physikalischen Adressmarke 226 in der Seitentabelle 116 nachgeschlagen
wird, und optional können
die in dem physikalischen Adressdatenfeld 230 gespeicherten
Daten bereitgestellt werden.
-
4 veranschaulicht
ein Blockdiagramm einer Ausführung
eines Verfahrens 400 zum Ausführen einer oder mehrerer Befehle
entsprechend einer HTM-Transaktion. In einer Ausführungsform
veranschaulicht 4 weitere Einzelheiten zu einigen
der mit Bezug auf das Verfahren 300 der 3 erörterten Operationen.
Zusätzlich
können
verschiedene mit Bezug auf die 1 bis 2 und 6 bis 7 erörterten
Bauelemente verwendet werden, um eine oder mehrere der mit Bezug
auf 4 erörterten Operationen
auszuführen.
-
Bezug
nehmend auf die 1 bis 4, kann
der Kern 106 bei den Operationen 402 bis 404 eine
HTM-Transaktion beginnen und entsprechend der HTM-Transaktion einen
oder mehrere Befehle ausführen,
wie mit Bezug auf die Operationen 302 bis 304 erörtert. Bei
einer Operation 406 kann der Kern 106 bestimmen,
ob eine Besitzeranfrage für
einen DTLB-Eintrag vorliegt, auf den spekulativ zugegriffen wird,
beispielsweise durch einen anderen Befehl, wie mit Bezug auf Operation 306 erörtert. Falls
eine Besitzeranfrage vorliegt (406), kann die HTM-Transaktion der Operation 402 abgebrochen
werden. Nach dem Abbrechen der HTM-Transaktion kann in einer Ausführungsform
die Steuerung an eine Nutzerlevel-Abbruchsteuereinrichtung übertragen
werden, um zu bestimmen, ob dieselbe HTM-Transaktion erneut versucht
werden soll oder eine andere Handlung ausgeführt werden soll.
-
Falls
bei der Operation 406 keine Besitzer-Anfragen empfangen
werden, setzt der Kern bei Operation 410 die Ausführung einer
oder mehrerer Befehle entsprechend der HTM-Transaktion fort. Wenn bei einer Operation 412 ein
DTLB-Fehlzugriff auftritt (beispielsweise wenn ein Eintrag, der
einer virtuellen oder physikalischen Adresse entspricht, auf die
durch einen Befehl der HTM-Transaktion zugegriffen wird, in dem
DTLB 214 fehlt, beispielsweise wegen einer vorherigen Entfernung
jenes Eintrags), können
die entsprechenden Daten (beispielsweise ein Teil der Seitentabelle 116)
bei einer Operation 414 von der Seitentabelle 116 in
den DTLB 214 kopiert werden. Die kopierte Information kann
die entsprechende virtuelle Adresse 218, die physikalische Adresse 220,
die Besitzmarke 222 und/oder die Spekulativmarke 224 umfassen.
-
Bei
einer Operation 416 kann der Kern 106 bestimmen,
ob die Besitzmarke 222 des aus der Seitentabelle 116 bei
Operation 414 kopierten Eintrags einen gültigen Besitz
des entsprechenden Eintrags anzeigt. Falls die Besitzmarke 222 einen
gültigen Wert
anzeigt (in einer Ausführungsform
beispielsweise einen von Null verschiedenen Wert), bricht der Kern 106 die
Hardware-Transaktion bei der Operation 408 ab. Wie mit
Bezug auf 2 erörtert, kann die Besitzmarke 222 auch
Information zum Nutzerzugriffstyp (beispielsweise Lese- oder Schreib-Zugriff) umfassen.
Wenn ein oder mehrere Bits der Besitzmarke 222 anzeigen,
dass der Besitzer einen Lese-Zugriff durchführt, kann in einer Ausführungsform das
Verfahren 400 bei der Operation 402 fortgesetzt werden
(teilweise deshalb, weil zwei aus dem gleichen Eintrag des DTLB 214 lesende
Befehle keinen Konflikt erzeugen können). Falls die Besitzmarke 222 einen
ungültigen
Wert anzeigt (beispielsweise in einer Ausführungsform einen Nullwert),
kann darüber hinaus
der Kern 106 mit der Ausführung der verbliebenen Befehle,
die der HTM-Transaktion der Operation 402 entsprechen,
fortfahren.
-
Bei
einer Operation 418 kann der Kern 106 feststellen,
ob die der HTM der Operation 402 entsprechende Transaktion
ausgeführt
wurde (beispielsweise durch die Abschlusseinheit 210).
Falls die Hardware-Transaktion ausgeführt wurde, kann der Kern 106 die
entsprechenden Daten in dem Speicher 114, Seitentabelle 116 und/oder
dem DTLB 214 aktualisieren (420). Wenn andernfalls
die Hardware-Transaktion (oder einer ihrer Befehle) bei der Operation 418 nicht
ausgeführt
wird, kann der Kern 106 bestimmen, ob der Ausführungsfehler
auf einem Hardware-Überlauf
beruht (422), beispielsweise wegen eines Cache-Speicher-Überlaufs,
einer Ausnahmebedingung, eines Interrupts, einer Ausnahme, eines
Seitenfehlers, eines Eingabe/Ausgabe-Befehls oder anderen Hardware-Überlaufbedingungen.
Falls kein Hardware-Überlauf
stattfindet (422), kann der Kern 106 mit der Operation 404 fortfahren,
beispielsweise um die verbliebenen Befehle entsprechend der HTM-Transaktion
der Operation 402 auszuführen. Im Fall eines Hardware-Überlaufs
(422) kann der Kern 106 eine STM-Transaktion beginnen,
wie nachfolgend mit Bezug auf 5 erörtert wird.
-
5 veranschaulicht
ein Blockdiagramm einer Ausführungsform
eines Verfahrens 500 zum Ausführen eines oder mehrerer Befehle
entsprechend einer STM-Transaktion. In einer Ausführungsform
veranschaulicht 4 weitere Einzelheiten zu einigen
der mit Bezug auf das Verfahren 300 der 3 erörterten
Operationen. Zusätzlich
können verschiedene
mit Bezug auf die 1 bis 2 und 6 bis 7 diskutierte
Komponenten verwendet werden, um eine oder mehrere der mit Bezug
auf 5 erörterten
Operationen auszuführen.
-
Bezug
nehmend auf die 1 bis 5 kann der
Kern 106 bei den Operationen 502 bis 504 eine
STM-Transaktion beginnen und einen oder mehrere Befehle entsprechend
der STM-Transaktion ausführen, wie
mit Bezug auf die Operationen 320 bis 322 erörtert. Bei
einer Operation 506 kann der Kern 106 das Besitz-Flag 222 jedes
im Zugriff stehenden Eintrags des DTLB 214 aktualisieren
(beispielsweise aufgrund der Ausführung eines Befehls bei der
Operation 504). Wie mit Bezug auf 2 erörtert, kann das
Besitz-Flag 222 ein oder mehrere Bits umfassen, um einen
Besitzer oder einen Besitzstatus des zugehörigen Eintrags anzuzeigen.
In einer Ausführungsform
kann der Kern 106 bei Operation 502 einen der STM-Transaktion entsprechenden
Wert (beispielsweise eine Transaktionskennung) in dem Transaktions-Deskriptor-Register 236 speichern.
Bei der Operation 506 kann der Kern 106 nachfolgend
den in dem Transaktions-Deskriptor-Register 236 gespeicherten
Wert in das Besitz-Flag 222 des entsprechenden Eintrags
kopieren.
-
Bei
einer Operation 508 kann der Kern 106 feststellen,
ob die STM-Transaktion ausgeführt
wurde. Falls die STM-Transaktion weiterhin ausgeführt werden
muss (508), kann der Kern 106 mit der Ausführung der
verbleibenden Befehle entsprechend der STM-Transaktion der Operation 502 fortfahren.
Falls die Software-Transaktion ausgeführt ist (508), kann der
Kern 106 bei einer Operation 510 die entsprechenden
Daten in dem Speicher 114, der Seitentabelle 116 und/oder
dem DTLB 214 aktualisieren. In einer Ausführungsform
kann die Operation 510 atomar ausgeführt werden, sodass beispielsweise
nach einer Ausführung
(bei Operation 508) die spekulativen Aktualisierungen atomar
sichtbar werden.
-
Wie
mit Bezug auf
3 erörtert, kann der HTM (beispielsweise
der Operationen
302 oder
402) oder der STM (beispielsweise
der Operationen
320 oder
502) auf denselben Zugriff
(beispielsweise eine oder mehrere Lese- oder Schreiboperationen)
auf den Speicher
114 gerichtet sein. Um die mit Bezug auf
die
3 bis
5 erörterten Operationen zu implementieren, kann
darüber
hinaus in einer Ausführungsform
ein Kompilierer zwei Kopien des nachstehenden synchronisierten Pseudo-Codeblocks
erzeugen:
-
Die
beiden kompilierten Kopien des Pseudo-Codes können folgendermaßen lauten:
-
Bezug
nehmend auf den obigen Pseudo-Code und die 1 bis 5,
kann der zweite Pseudo-Code (Kopie #2) als ein STM ausgeführt werden (wie
mit Bezug auf die 3 bis 5 erörtert),
falls die Ausführung
der Kopie #1 als ein HTM scheitert. Entsprechend kann der HTM-Code
den atomaren Bereich als eine HTM-Transaktion ausführen. In
einer Ausführungsform
kann sich der HTM-Code auf Cache-Kohärenz-Mechanismen stützen, um
die Transaktionskonsistenz sicherzustellen, und kann eventuell keinerlei
Einträge
der Seitentabelle (116) in Besitz nehmen, wie mit Bezug
auf die 3 bis 5 erörtert. Falls
die Ausführung
der HTM-Transaktion wegen eines Hardware-Überlaufs scheitert (422),
kann der STM-Code
(Kopie #2) dann als eine STM-Transaktion ausgeführt werden.
-
Wie
in dem beispielhaften STM-Code oben gezeigt (Kopie #2), kann das
Programm als erstes einen der STM-Transaktion (502) entsprechenden
Deskriptor (oder Bezeichner) in das Register 236 laden. In Übereinstimmung
mit zumindest einer Befehlssatz-Architektur kann das Programm (Kopie
#2) dann die Befehle „DLoad" und „DStore" für die Lade-
bzw. Speicherbefehle verwenden. In einer Ausführungsform kann der „DLoad"-Befehl ausschließlichen
Besitz eines entsprechenden DTLB-Eintrags (214) erreichen,
indem beispielsweise der Wert des Register 236 in einen
Teil des entsprechenden Besitz-Flags 222 kopiert wird.
In einer Ausführungsform
kann der „DStore"-Befehl ausschließlichen
Besitz eines entsprechenden DTLB-Eintrags (204) erreichen,
indem beispielsweise der Wert des Registers 236 in einen Teil
des entsprechenden Besitz-Flags 222 kopiert wird. Der „STM_commit{}"-Befehl kann die
erfolgreiche Ausführung
des STM-Codes prüfen
(508).
-
Gemäß zumindest
einer Befehlssatz-Architektur kann ein „DRelease"-Befehl verwendet werden, um den Besitz
eines oder mehrerer Einträge (oder
Seiten) des DTLB 214 abzutreten, indem beispielsweise das
entsprechende Besitz-Flag 222 aktualisiert wird (beispielsweise
durch 0-Setzen des Flags). In einer Ausführungsform erfolgen alle Speicherzugriffe
(beispielsweise die mit Bezug auf den STM-Code erörterten)
in Privatstrang-Speicherbereiche (beispielsweise innerhalb des Cache-Speichers 108),
während
ein oder mehrere Befehle gemäß der STM-Transaktion
ausgeführt
werden (322). Wenn der Code das Ende der STM-Transaktion erreicht und
erfolgreich ausgeführt
werden kann (324), werden die Aktualisierungen in die entsprechenden
Bereiche kopiert, wie mit Bezug auf die Operationen 312, 420 und/oder 510 erörtert. Dementsprechend können diese
Operationen den „DRelease"-Befehl verwenden,
um den Besitz all der Seiten, auf die der Ausführungsstrang zugegriffen hat,
freizugeben.
-
6 veranschaulicht
ein Blockdiagramm einer Ausführungsform
eines Rechnersystems 600. Das Rechnersystem 600 kann
einen oder mehrere Zentraleinheiten (central processing units, CPUs) oder
Prozessoren 602 umfassen, die mit einer Verbindungsleitung
(oder einem Bus) 604 kommunizieren. In einer Ausführungsform
können
die Prozessoren 602 mit den Prozessoren 102 der 1 übereinstimmen
oder ähnlich
sein. Die Verbindungsleitung 604 kann mit den Verbindungsleitungen 104 und/oder 112,
die mit Bezug auf die 1 und 2 erörtert wurden, übereinstimmen
oder ähnlich
sein. Die Prozessoren 602 können jede Art von Prozessor umfassen,
beispielsweise einen Allzweck-Prozessor, einen Netzwerk-Prozessor
(beispielsweise einen Prozessor, der über ein Rechnernetz gesendete
Daten verarbeitet) oder einen anderen Prozessor einschließlich eines
Prozessors für
Rechner mit eingeschränktem
Befehlssatz (RISC) oder einen Prozessor für Rechner mit einem komplexen
Befehlssatz (CISC). Die Prozessoren 602 können eine
Einzelkern- oder Mehrkernausgestaltung aufweisen, beispielsweise
einen oder mehrere Prozessorkerne (106) umfassen, wie mit
Bezug auf 1 erörtert. Die Prozessoren 602 mit
einer Mehrkernausgestaltung können
unterschiedliche Prozessorkerntypen auf demselben IC-Chip integrieren.
Die Prozessoren 602 mit einer Mehrkernausgestaltung können auch als
symmetrische oder asymmetrische Mehrkern-Prozessoren implementiert sein.
-
Wie
in 6 gezeigt, kann ein Chipsatz 606 mit
der Verbindungseinheit 604 kommunizieren. Der Chipsatz 606 kann
einen Speichersteuerhub (memory control hub, MCH) 608 aufweisen.
Der MCH 608 kann eine Speichersteuerung 610 aufweisen,
die mit dem Speicher 114 kommuniziert. Der Speicher 114 kann
Daten speichern, z. B. einschließlich von Folgen von Befehlen,
die von den Prozessoren 602 oder jeder anderen in Verbindung
mit dem Rechnersystem 600 stehenden Vorrichtung ausgeführt werden.
Wie in 6 gezeigt, kann der Speicher 114 die
Seitentabelle 116 umfassen, wie mit Bezug auf die 1 bis 5 erörtert. In
einer Ausführungsform
der Erfindung kann der Speicher 114 einen oder mehrere flüchtige Speichervorrichtungen
(oder Speicher) wie beispielsweise einen Direkt-Zugriffsspeicher
(RAM), einen dynamischen Direkt-Zugriffsspeicher (DRAM), einen synchronen
DRAM (SDRAM), einen statischen RAM (SRAM) oder andere flüchtige Speichereinheiten
umfassen. Nicht-flüchtige
Speicher wie beispielsweise eine Festplatte können ebenfalls verwendet werden.
Zusätzliche
Einrichtungen können über die Verbindungsleitung 604 kommunizieren,
wie beispielsweise Mehrfach-Prozessoren und/oder Mehrfach-Systemspeicher.
-
Das
MCH 608 kann zusätzlich
eine Graphik-Schnittstelle 614 in Verbindung mit einem
Graphik-Beschleuniger 616 umfassen. In einer Ausführungsform
kann die Graphik-Schnittstelle 614 mit dem Graphik-Beschleuniger 616 über einen
beschleunigten Graphik-Port (AGP) kommunizieren. In einer Ausführung der
Erfindung kann eine Anzeige (wie beispielsweise ein Flachbildschirm)
mit der Graphik-Schnittstelle 614 kommunizieren, beispielsweise über einen
Signalwandler, der eine digitale Darstellung eines Bildes, das in
einer Speichervorrichtung wie beispielsweise einem Videospeicher
oder einem Systemspeicher gespeichert ist, in Anzeigesignale übersetzt,
die durch die Bildschirmeinheit interpretiert und dargestellt werden.
In verschiedenen Ausführungsformen
können
die von der Bildschirmeinheit erzeugten Anzei gesignale verschiedene Steuervorrichtungen
durchlaufen, bevor sie von der Bildschirmeinheit interpretiert und
schließlich
auf der Anzeige dargestellt werden.
-
Überdies
kann eine Hub-Schnittstelle 618 die Kommunikation zwischen
dem MCH 608 und einem Eingabe/Ausgabe-Steuer-Hub (ICH) 620 ermöglichen.
Das ICH 620 kann eine Schnittstelle für in Verbindung mit dem Rechnersystem 600 stehende Eingabe/Ausgabe-Vorrichtungen bereitstellen.
Der ICH 620 kann über
eine Peripheriebrücke
(oder eine Steuerung) 624, wie beispielsweise eine Peripheriekomponenten-Verbindungsbrücke (PCI
bridge) oder eine USB-Steuerung, mit einem Bus 622 kommunizieren.
Die Brücke 624 kann
einen Datenpfad zwischen dem Prozessor 602 und Peripherie-Geräten bereitstellen.
Andere Topologie-Arten können
verwendet werden. Auch können
Mehrfach-Busse mit dem ICH 620 kommunizieren, beispielsweise über mehrere
Brücken
oder Steuerungen. Andere Peripherie-Geräte
in Kommunikation mit dem ICH 620 können darüber hinaus in verschiedenen
Ausführungsformen
der Erfindung integrierte Treiberelektronik (IDE) oder SCSI-Laufwerke,
USB-Anschlüsse, eine
Tastatur, eine Maus, Parallelports, serielle Ports, Disketten-Laufwerke
oder Schnittstellen zur Unterstützung
digitaler Daten, wie beispielsweise eine digitale Video-Schnittstelle (DVI),
umfassen.
-
Der
Bus 622 kann mit einem Audiogerät 626, einem oder
mehreren Plattenlaufwerken 628 und einem Netzadapter 630 kommunizieren.
Der Netzadapter 630 kann mit einem Rechnernetz 631 kommunizieren,
beispielsweise verschiedene Komponenten des Systems 600 in
die Lage versetzen, über
das Netz 631 Daten zu senden und/oder zu empfangen. Über den
Bus 622 können
andere Einrichtungen kommunizieren. Auch können in einigen Ausführungsformen
der Erfindung verschiedene Komponenten (beispielsweise der Netzadapter 630)
mit dem MCH 608 kommunizieren. Zusätzlich können der Prozessor 602 und
der MCH 608 kombiniert werden, um einen einzelnen Chip
auszubilden. In anderen Ausführungsformen
der Erfindung kann der Graphik-Beschleuniger 616 überdies
in den MCH 608 einbezogen sein.
-
In
einer Ausführung
kann das Rechnersystem 600 einen flüchtigen und/oder nicht-flüchtigen Speicher
umfassen. Ein nicht-flüchtiger
Speicher kann beispielsweise eine oder mehrere der nachfolgend aufgezählten Vorrichtungen
umfassen: Nur-Lesespeicher (ROM), einen programmierbaren ROM (PROM),
löschbaren
PROM (EPROM), elektrischen PROM (EEPROM), ein Plattenlaufwerk (beispielsweise 628),
ein Disketten-Laufwerk, ein CD-ROM, eine digitale Videoplatte (DVD),
einen Flash-Speicher, einen magneto-optischen Speicher oder andere Arten
nicht-flüchtiger
maschinenlesbarer Medien zum Speichern elektronischer Daten (einschließlich von
z. B. Befehlen).
-
7 veranschaulicht
ein Rechnersystem 700, das gemäß einer Ausführungsform
der Erfindung in einer Punkt-zu-Punkt-Konfiguration (PtP) angeordnet
ist. 7 zeigt insbesondere ein System, in dem Prozessoren,
Speichereinheiten und Eingabe/Ausgabe-Vorrichtungen über eine
Anzahl von Punkt-zu-Punkt-Schnittstellen miteinander verbunden sind.
Die mit Bezug auf die 1 bis 6 erörterten
Operationen können
von einer oder mehreren Komponenten des System 700 ausgeführt werden.
-
Wie
in 7 veranschaulicht, kann das System 700 mehrere
Prozessoren umfassen, von denen aus Gründen der Übersichtlichkeit nur zwei,
die Prozessoren 702 und 704, gezeigt sind. Die
Prozessoren 702 und 704 können jeweils ein lokales Speichersteuerung-Hub
(MCH) 706 und 708 umfassen, um die Kommunikation
mit den Speichereinheiten 710 und 712 zu ermöglichen.
Die Speicher 710 und/oder 712 können verschiedene
Daten speichern, beispielsweise die mit Bezug auf den Speicher 114 der 1, 2 und 6 erörterten
Daten.
-
In
einer Ausführungsform
kann es sich bei den Prozessoren 702 und 704 um
einen der mit Bezug auf 6 erörterten Prozessoren 602 handeln. Die
Prozessoren 702 und 704 können Daten über eine Punkt-zu-Punkt-Schnittstelle
(PtP) 714 unter Verwendung von PtP-Schnittstellenschaltkreisen 716 bzw. 718 austauschen.
Auch können
die Prozessoren 702 und 704 jeweils über individuelle
PtP-Schnittstellen 722 und 724 unter Verwendung
von Punkt-zu-Punkt-Schnittstellenschaltkreisen 726, 728, 730 und 732 jeweils
Daten mit einem Chipsatz 720 austauschen. Der Chipsatz 720 kann
weiterhin Daten mit einem Hochleistungsgraphik-Schaltkreis 734 über eine
Hochleistungsgraphik-Schnittstelle 736, beispielsweise
unter Verwendung eines PtP-Schnittstellenschaltkreises 737,
austauschen.
-
Zumindest
eine Ausführungsform
der Erfindung kann innerhalb der Prozessoren 702 und 704 bereitgestellt
sein. Beispielsweise können
einer oder mehrere der Kerne 106 der 1 oder 2 innerhalb
der Prozessoren 702 und 704 angeordnet sein. Andere
Ausführungsformen
der Erfindung können
jedoch in anderen Schaltkreisen, Logikeinheiten oder Vorrichtungen
innerhalb des Systems 700 der 7 vorliegen.
Darüber
hinaus können
andere Ausführungsformen
der Erfindung über
verschiedene in 7 veranschaulichte Schaltkreise,
Logikeinheiten oder Vorrichtungen verteilt sein.
-
Der
Chipsatz 720 kann unter Verwendung eines PtP-Schnittstellenschaltkreises 741 mit
einem Bus 740 kommunizieren. Der Bus 740 kann
ein oder mehrere mit ihm kommunizierende Vorrichtungen aufweisen,
wie beispielsweise eine Busbrücke 742 und
Eingabe/Ausgabe-Einheiten 743. Über einen Bus 744 kann
die Busbrücke 743 mit
anderen Einrichtungen kommunizieren, wie beispielsweise einer Tastatur/Maus 745,
Kommunikationseinheiten 746 (beispielsweise Modems, Netzwerk-Schnittstelleneinheiten
(wie beispielsweise dem Netzwerkadapter 630 der 6)
oder andere Kommunikationseinheiten, die mit dem Rechnernetzwerk 631 kommunizieren
können),
Audio-Eingabe/Ausgabe-Einheiten und/oder eine Datenspeichereinheit 748.
Die Datenspeichereinheit 748 kann Code 749 speichern,
der durch die Prozessoren 702 und/oder 704 ausgeführt werden
kann.
-
In
verschiedenen Ausführungsformen
der Erfindung können
die hier beispielsweise mit Bezug auf die 1 bis 7 erörterten
Operationen implementiert sein als Hardware (beispielsweise logische
Schaltkreise), Software, Firmware oder deren Kombinationen, die
als ein Computerprogrammprodukt bereitgestellt sind, beispielsweise
umfassend ein maschinenlesbares oder rechnerlesbares Medium mit
darin gespeicherten Befehlen (oder Software-Prozeduren), die zur Programmierung
eines Rechners zur Ausführung
eines hier erörterten
Prozesses verwendet werden. Das maschinenlesbare Medium kann eine
Speichervorrichtung wie die mit Bezug auf die 1 bis 7 erörterten
Speicher umfassen.
-
Zusätzlich können solche
rechnerlesbaren Medien als ein Computerprogrammprodukt herunter geladen
werden, wobei das Programm von einem entfernten Rechner (beispielsweise
einem Server) an einen anfordernden Rechner (beispielsweise einen Client)
mittels Datensignalen, die in einer Trägerwelle oder einem anderen
Ausbreitungsmedium verkörpert sind, über einen
Kommunikationsanschluss (beispielsweise einen Bus, ein Modem oder
eine Netzwerkverbindung) übermittelt
werden kann. Demzufolge soll eine Trägerwelle hier als ein maschinenlesbares
Medium umfassend angesehen werden.
-
Der
Bezug in der Beschreibung auf „eine Ausführungsform" oder „Ausführungsform" bedeutet, dass ein
bestimmtes in Verbindung mit der Ausführungsform beschriebenes Merkmal,
eine solche Struktur oder ein solches Kennzeichen in wenigstens einer
Ausführungsform
vorliegen kann. Die Formulierungen „in einer Ausführungsform" an unterschiedlichen
Stellen der Beschreibung können
sich alle auf die gleiche Ausführungsform
beziehen oder auch nicht.
-
In
der Beschreibung und den Ansprüchen können auch
die Ausdrücke „gekoppelt" und „verbunden" mitsamt ihren Abwandlungen
verwendet werden. In einigen Ausführungsformen der Erfindung kann
der Ausdruck „verbunden" verwendet werden, um
anzuzeigen, dass zwei oder mehrere Elemente in direktem physischen
oder elektrischen Kontakt miteinander stehen. Der Ausdruck „gekoppelt" kann bedeuten, dass
zwei oder mehrere Elemente in direktem physischen oder elektrischen
Kontakt stehen. Jedoch kann der Ausdruck „gekoppelt" auch bedeuten, dass zwei oder mehrere
Elemente nicht in direktem Kontakt miteinander stehen, aber dennoch
miteinander kooperieren oder interagieren.
-
Obwohl
folglich Ausführungsformen
der Erfindung in einer Sprache beschrieben wurden, die spezifisch
für die
strukturellen Merkmale und/oder methodologischen Handlungen ist,
versteht sich, dass die beanspruchten Gegenstände nicht auf die beschriebenen
spezifischen Merkmale oder Handlungen beschränkt sein müssen. Die spezifischen Merkmale
oder Handlungen werden vielmehr als Beispielformen zur Implementierung
der beanspruchten Gegenstände
offenbart.
-
ZUSAMMENFASSUNG
-
Beschrieben
werden Verfahren und Vorrichtungen zum Bereitstellen unbeschränkter Transaktionsspeichersysteme.
In einer Ausführungsform
kann eine Operation, entsprechend einem Software-Transaktionsspeicherzugriff
ausgeführt
werden, wenn eine vorausgehende Hardware-Transaktionsspeicherzugriffsoperation
fehlschlägt.