DE112006003597T5 - Unbeschränkte Transaktionsspeichersysteme - Google Patents

Unbeschränkte Transaktionsspeichersysteme Download PDF

Info

Publication number
DE112006003597T5
DE112006003597T5 DE112006003597T DE112006003597T DE112006003597T5 DE 112006003597 T5 DE112006003597 T5 DE 112006003597T5 DE 112006003597 T DE112006003597 T DE 112006003597T DE 112006003597 T DE112006003597 T DE 112006003597T DE 112006003597 T5 DE112006003597 T5 DE 112006003597T5
Authority
DE
Germany
Prior art keywords
processor
memory
command
execution
transaction
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.)
Ceased
Application number
DE112006003597T
Other languages
English (en)
Inventor
Haitham H. Portland Akkary
Ali-Reza Santa Clara Adl-Tabatabei
Bratin San Jose Saha
Ravi Portland Rajwar
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 DE112006003597T5 publication Critical patent/DE112006003597T5/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)

Abstract

Prozessor mit:
Logik zum Bewirken eines Software-Transaktionsspeicherzugriffs entsprechend einem Ausführungsstrang, der auszuführen ist, nachdem die Ausführung eines dem Ausführungsstrang entsprechenden vorausgehenden Hardware-Transaktionsspeicherzugriffs fehlgeschlagen ist.

Description

  • 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:
    Figure 00120001
  • Die beiden kompilierten Kopien des Pseudo-Codes können folgendermaßen lauten:
    Figure 00120002
  • 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.

Claims (30)

  1. Prozessor mit: Logik zum Bewirken eines Software-Transaktionsspeicherzugriffs entsprechend einem Ausführungsstrang, der auszuführen ist, nachdem die Ausführung eines dem Ausführungsstrang entsprechenden vorausgehenden Hardware-Transaktionsspeicherzugriffs fehlgeschlagen ist.
  2. Prozessor nach Anspruch 1, wobei die Logik die spekulative Ausführung von zumindest einem von dem Software-Transaktionsspeicherzugriff und Hardware-Transaktionsspeicherzugriff bewirkt.
  3. Prozessor nach Anspruch 1, wobei der Prozessor den Hardware-Transaktionsspeicherzugriff abbricht, wenn ein Konflikt mit einem anderen Befehl auftritt.
  4. Prozessor nach Anspruch 3, wobei der andere Befehl ein dem Software-Transaktionsspeicherzugriff entsprechender Befehl ist.
  5. Prozessor nach Anspruch 3 mit zusätzlich einem Prozessorkern zur Ausführung des anderen Befehls.
  6. Prozessor nach Anspruch 1 mit zusätzlich einem Speicher zum Speichern von Informationen, die einem von zumindest einem von dem Hardware-Transaktionsspeicherzugriff entsprechenden ersten Befehl und einem dem Software-Transaktionsspeicherzugriff entsprechenden zweiten Befehl entsprechen, wobei der Prozessor die gespeicherten Informationen aktualisiert, wenn zumindest einer von dem ersten Befehl und dem zweiten Befehl ausgeführt wird.
  7. Prozessor nach Anspruch 1 mit zusätzlich einem Speicher zum Speichern von Daten, wobei der Hardware-Transaktionsspeicherzugriff und der Software-Transaktionsspei cherzugriff auf den in dem Speicher gespeicherten Daten eine gleiche Operation ausführen.
  8. Prozessor nach Anspruch 1 mit zusätzlich einem Speicher zum Speichern von Informationen, die dem Hardware-Transaktionsspeicherzugriff und/oder dem Software-Transaktionsspeicherzugriff entsprechen, wobei die gespeicherten Informationen eines oder mehrere von einer virtuellen Adresse, einer physikalischen Adresse, einem Besitz-Flag und einem Spekulativ-Flag umfassen.
  9. Prozessor nach Anspruch 8, wobei der Speicher einen inhaltsadressierbaren Speicher umfasst.
  10. Prozessor nach Anspruch 8, wobei der Speicher einen Datenübersetzungs-Look-Aside-Puffer umfasst.
  11. Prozessor nach Anspruch 1 mit zusätzlich einem Speicher zum Speichern einer Seitentabelle, wobei die Seitentabelle Daten speichert, die eine oder mehrere von einer virtuellen Adressmarke, einer physikalischen Adressmarke und physikalischen Adressdaten umfassen.
  12. Prozessor nach Anspruch 11 mit zusätzlich einem Register zum Speichern eines Seitentabellen-Begrenzungszeigers, der auf einen letzten Eintrag der Seitentabelle zeigt.
  13. Prozessor nach Anspruch 1 mit zusätzlich einem Register zum Speichern eines Deskriptors, der dem Software-Transaktionsspeicherzugriff entspricht.
  14. Prozessor nach Anspruch 1 mit zusätzlich mehreren Kernen.
  15. Prozessor nach Anspruch 1, wobei die Ausführung des Hardware-Transaktionsspeicherzugriffs aufgrund eines Hardware-Überlaufs fehlschlägt.
  16. Verfahren mit folgenden Schritten: Ausführen eines ersten Befehls eines Ausführungsstrangs, wobei der erste Befehl einem Hardware-Transaktionsspeicherzugriff entspricht; und Ausführen eines zweiten Befehls des Ausführungsstrangs, wenn die Ausführung des ersten Befehls fehlschlägt, wobei der zweite Befehl einem Software-Transaktionsspeicherzugriff entspricht.
  17. Verfahren nach Anspruch 16 mit zusätzlich einem spekulativen Ausführen zumindest eines von dem ersten Befehl und dem zweiten Befehl.
  18. Verfahren nach Anspruch 16, wobei der erste Befehl und der zweite Befehl auf in einem Speicher gespeicherte Daten eine gleiche Operation ausführen.
  19. Verfahren nach Anspruch 16 mit zusätzlich dem Schritt des Abbrechens des ersten Befehls, wenn ein Konflikt mit einem anderen Befehl auftritt.
  20. Verfahren nach Anspruch 16 mit zusätzlich dem Schritt des Speicherns von dem zweiten Befehl entsprechenden Besitzerinformationen in einem Datenübersetzungs-Look-Aside-Puffer.
  21. Verfahren nach Anspruch 16, wobei die Ausführung des ersten Befehls aufgrund eines Hardware-Überlaufs fehlschlägt.
  22. System mit: einem Speicher zum Speichern eines ersten Befehls, der einer Hardware-Transaktionsspeicheroperation entspricht, und eines zweiten Befehls, der einer Software-Transaktionsspeicheroperation entspricht; und einem Prozessor zum Abrufen des zweiten Befehls, falls die Ausführung der Hardware-Transaktionsspeicheroperation eine Überlaufbedingung in einem Cache-Speicher erzeugt.
  23. System nach Anspruch 22, wobei der Speicher eine Seitentabelle zum Speichern von Informationen, die einer Abbildung zwischen virtuellen und physikalischen Adressen entsprechen, umfasst.
  24. System nach Anspruch 23, wobei die Seitentabelle Daten speichert, die eine oder mehrere von einer virtuellen Adressmarke, einer physikalischen Adressmarke und physikalischen Adressdaten umfassen.
  25. System nach Anspruch 23 mit zusätzlich einem inhaltsadressierbaren Speicher zum Speichern eines Bereichs der Seitentabelle.
  26. System nach Anspruch 22 mit zusätzlich einem Audiogerät.
  27. Computerlesbares Medium mit einem oder mehreren Befehlen, die, wenn sie auf einem Prozessor ausgeführt werden, den Prozessor konfigurieren zum: Ausführen eines ersten Befehls eines Ausführungsstrangs, wobei der erste Befehl einem Hardware-Transaktionsspeicherzugriff entspricht; und Ausführen eines zweiten Befehls des Ausführungsstrangs, wenn die Ausführung des ersten Befehls fehlschlägt, wobei der zweite Befehl einem Software-Transaktionsspeicherzugriff entspricht.
  28. Computerlesbares Medium nach Anspruch 27 mit zusätzlich einem oder mehreren Befehlen, die den Prozessor konfigurieren, zumindest einen von dem ersten Befehl und dem zweiten Befehl spekulativ auszuführen.
  29. Computerlesbares Medium nach Anspruch 27 mit zusätzlich einem oder mehreren Befehlen, die den Prozessor konfigurieren, den ersten Befehl abzubrechen, wenn die Besitzerinformation ein gültiges Besitz-Flag umfasst.
  30. Computerlesbares Medium nach Anspruch 27 mit zusätzlich einem oder mehreren Befehlen, die den Prozessor konfigurieren, den zweiten Befehl abzurufen, falls die Ausführung des ersten Befehls aufgrund eines Hardware-Überlaufs fehlschlägt.
DE112006003597T 2005-12-30 2006-12-14 Unbeschränkte Transaktionsspeichersysteme Ceased DE112006003597T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/323,724 US8683143B2 (en) 2005-12-30 2005-12-30 Unbounded transactional memory systems
US11/323,724 2005-12-30
PCT/US2006/048041 WO2007078883A1 (en) 2005-12-30 2006-12-14 Unbounded transactional memory systems

Publications (1)

Publication Number Publication Date
DE112006003597T5 true DE112006003597T5 (de) 2008-11-13

Family

ID=37964014

Family Applications (2)

Application Number Title Priority Date Filing Date
DE112006003597T Ceased DE112006003597T5 (de) 2005-12-30 2006-12-14 Unbeschränkte Transaktionsspeichersysteme
DE112006004285.8T Ceased DE112006004285A5 (de) 2005-12-30 2006-12-14 Unbeschränkte Transaktionsspeichersysteme

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE112006004285.8T Ceased DE112006004285A5 (de) 2005-12-30 2006-12-14 Unbeschränkte Transaktionsspeichersysteme

Country Status (7)

Country Link
US (1) US8683143B2 (de)
JP (1) JP2009521767A (de)
KR (1) KR100954623B1 (de)
CN (2) CN101322103B (de)
DE (2) DE112006003597T5 (de)
GB (1) GB2447575B (de)
WO (1) WO2007078883A1 (de)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7856537B2 (en) * 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
US7809903B2 (en) * 2005-12-15 2010-10-05 Intel Corporation Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions
US8683143B2 (en) 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US8180967B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US8180977B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US7802136B2 (en) 2006-12-28 2010-09-21 Intel Corporation Compiler technique for efficient register checkpointing to support transaction roll-back
US8132158B2 (en) * 2006-12-28 2012-03-06 Cheng Wang Mechanism for software transactional memory commit/abort in unmanaged runtime environment
US8719807B2 (en) 2006-12-28 2014-05-06 Intel Corporation Handling precompiled binaries in a hardware accelerated software transactional memory system
US8185698B2 (en) * 2007-04-09 2012-05-22 Bratin Saha Hardware acceleration of a write-buffering software transactional memory
US8006227B2 (en) * 2007-06-01 2011-08-23 Microsoft Corporation Efficiently locating transactional code blocks in a transactional memory system
US8140773B2 (en) 2007-06-27 2012-03-20 Bratin Saha Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM
US9280397B2 (en) * 2007-06-27 2016-03-08 Intel Corporation Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
US8341133B2 (en) * 2008-06-27 2012-12-25 Microsoft Corporation Compressed transactional locks in object headers
US8776063B2 (en) * 2008-11-26 2014-07-08 Oracle America, Inc. Method and system for hardware feedback in transactional memory
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8812796B2 (en) * 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
KR101370314B1 (ko) * 2009-06-26 2014-03-05 인텔 코포레이션 언바운디드 트랜잭션 메모리 (utm) 시스템의 최적화
US20100332768A1 (en) * 2009-06-26 2010-12-30 Microsoft Corporation Flexible read- and write-monitored and buffered memory blocks
US8250331B2 (en) 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US8356166B2 (en) * 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US8161247B2 (en) 2009-06-26 2012-04-17 Microsoft Corporation Wait loss synchronization
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US20110016290A1 (en) * 2009-07-14 2011-01-20 Arie Chobotaro Method and Apparatus for Supporting Address Translation in a Multiprocessor Virtual Machine Environment
US9477515B2 (en) 2009-12-15 2016-10-25 Intel Corporation Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode
US8402218B2 (en) * 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US8533440B2 (en) * 2009-12-15 2013-09-10 Microsoft Corporation Accelerating parallel transactions using cache resident transactions
US9092253B2 (en) * 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
US8095824B2 (en) * 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system
US8539465B2 (en) * 2009-12-15 2013-09-17 Microsoft Corporation Accelerating unbounded memory transactions using nested cache resident transactions
US8521995B2 (en) * 2009-12-15 2013-08-27 Intel Corporation Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode
US8924692B2 (en) 2009-12-26 2014-12-30 Intel Corporation Event counter checkpointing and restoring
KR101639672B1 (ko) * 2010-01-05 2016-07-15 삼성전자주식회사 무한 트랜잭션 메모리 시스템 및 그 동작 방법
US8739164B2 (en) * 2010-02-24 2014-05-27 Advanced Micro Devices, Inc. Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof
US9104690B2 (en) 2011-01-27 2015-08-11 Micron Technology, Inc. Transactional memory
US10387324B2 (en) * 2011-12-08 2019-08-20 Intel Corporation Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution
JP2014085839A (ja) 2012-10-24 2014-05-12 International Business Maschines Corporation 並列実行機構及びその動作方法
US9182986B2 (en) 2012-12-29 2015-11-10 Intel Corporation Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region
US10169103B2 (en) 2014-02-27 2019-01-01 International Business Machines Corporation Managing speculative memory access requests in the presence of transactional storage accesses
US9697040B2 (en) * 2014-03-26 2017-07-04 Intel Corporation Software replayer for transactional memory programs
CN104951240B (zh) * 2014-03-26 2018-08-24 阿里巴巴集团控股有限公司 一种数据处理方法及处理器
GB2529148B (en) * 2014-08-04 2020-05-27 Advanced Risc Mach Ltd Write operations to non-volatile memory
GB2529899B (en) * 2014-09-08 2021-06-23 Advanced Risc Mach Ltd Shared Resources in a Data Processing Apparatus for Executing a Plurality of Threads
US9658963B2 (en) * 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
US11029995B2 (en) 2015-05-14 2021-06-08 Oracle International Corporation Hardware transactional memory-assisted flat combining
GB2539435B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
WO2017012667A1 (en) 2015-07-22 2017-01-26 Huawei Technologies Co., Ltd. Hardware transactional memory in non volatile memory with log and no lock
US9977619B2 (en) * 2015-11-06 2018-05-22 Vivante Corporation Transfer descriptor for memory access commands
US9772874B2 (en) 2016-01-29 2017-09-26 International Business Machines Corporation Prioritization of transactions based on execution by transactional core with super core indicator
CN107025130B (zh) 2016-01-29 2021-09-03 华为技术有限公司 处理节点、计算机系统及事务冲突检测方法
JP6740456B2 (ja) * 2016-08-01 2020-08-12 ティーエスヴイリンク コーポレイション 多重チャネルキャッシュメモリおよびシステムメモリデバイス
US11086632B2 (en) * 2017-02-10 2021-08-10 Alibaba Group Holding Limited Method and apparatus for providing accelerated access to a memory system
KR101885030B1 (ko) * 2017-04-21 2018-08-02 전북대학교산학협력단 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치
US10621103B2 (en) 2017-12-05 2020-04-14 Arm Limited Apparatus and method for handling write operations
KR102007117B1 (ko) * 2018-01-19 2019-08-02 전북대학교산학협력단 트랜잭션 처리 방법 및 트랜잭션 처리 시스템
KR102150597B1 (ko) * 2019-07-23 2020-09-01 전북대학교산학협력단 최적의 재시도 정책을 제공하는 하이브리드 트랜잭셔널 메모리 시스템의 운영 방법 및 하이브리드 트랜잭셔널 메모리 시스템

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428761A (en) 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
US5652859A (en) 1995-08-17 1997-07-29 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US5765208A (en) 1995-09-29 1998-06-09 Motorola, Inc. Method of speculatively executing store instructions prior to performing snoop operations
US5835961A (en) * 1996-05-03 1998-11-10 Digital Equipment Corporation System for non-current page table structure access
US6038645A (en) 1996-08-28 2000-03-14 Texas Instruments Incorporated Microprocessor circuits, systems, and methods using a combined writeback queue and victim cache
US20020108025A1 (en) 1998-10-21 2002-08-08 Nicholas Shaylor Memory management unit for java environment computers
US6681293B1 (en) 2000-08-25 2004-01-20 Silicon Graphics, Inc. Method and cache-coherence system allowing purging of mid-level cache entries without purging lower-level cache entries
US6895527B1 (en) * 2000-09-30 2005-05-17 Intel Corporation Error recovery for speculative memory accesses
US6640285B1 (en) 2000-10-26 2003-10-28 Emc Corporation Method and apparatus for improving the efficiency of cache memories using stored activity measures
US6877088B2 (en) 2001-08-08 2005-04-05 Sun Microsystems, Inc. Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition
US7685583B2 (en) 2002-07-16 2010-03-23 Sun Microsystems, Inc. Obstruction-free mechanism for atomic update of multiple non-contiguous locations in shared memory
US7263585B2 (en) * 2002-09-19 2007-08-28 Ip-First, Llc Store-induced instruction coherency mechanism
US7216202B1 (en) * 2003-02-25 2007-05-08 Sun Microsystems, Inc. Method and apparatus for supporting one or more servers on a single semiconductor chip
US7139892B2 (en) * 2003-05-02 2006-11-21 Microsoft Corporation Implementation of memory access control using optimizations
US7587615B2 (en) * 2003-09-12 2009-09-08 International Business Machines Corporation Utilizing hardware transactional approach to execute code after initially utilizing software locking by employing pseudo-transactions
US7676603B2 (en) 2004-04-20 2010-03-09 Intel Corporation Write combining protocol between processors and chipsets
GB0415850D0 (en) * 2004-07-15 2004-08-18 Imagination Tech Ltd Memory management system
US7395382B1 (en) 2004-08-10 2008-07-01 Sun Microsystems, Inc. Hybrid software/hardware transactional memory
US7856537B2 (en) 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
US7984248B2 (en) * 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US20060184840A1 (en) 2005-02-11 2006-08-17 International Business Machines Corporation Using timebase register for system checkstop in clock running environment in a distributed nodal environment
US20060271977A1 (en) 2005-04-20 2006-11-30 Lerman David R Browser enabled video device control
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US7480771B2 (en) * 2005-08-17 2009-01-20 Sun Microsystems, Inc. Conditional synchronization mechanisms allowing multiple store operations to become visible while a flagged memory location is owned and remains unchanged
US7809903B2 (en) 2005-12-15 2010-10-05 Intel Corporation Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions
US7870545B2 (en) 2005-12-16 2011-01-11 Intel Corporation Protecting shared variables in a software transactional memory system
US7730286B2 (en) 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US8683143B2 (en) 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US20070186056A1 (en) 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US9009116B2 (en) 2006-03-28 2015-04-14 Oracle America, Inc. Systems and methods for synchronizing data in a cache and database
US8180977B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US8180967B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US7502897B2 (en) 2006-06-28 2009-03-10 Intel Corporation Object based conflict detection in a software transactional memory
US7542977B2 (en) 2006-06-29 2009-06-02 Intel Corporation Transactional memory with automatic object versioning
US8185698B2 (en) 2007-04-09 2012-05-22 Bratin Saha Hardware acceleration of a write-buffering software transactional memory

Also Published As

Publication number Publication date
DE112006004285A5 (de) 2016-03-10
GB0809450D0 (en) 2008-07-02
WO2007078883A1 (en) 2007-07-12
CN101322103A (zh) 2008-12-10
GB2447575A (en) 2008-09-17
US8683143B2 (en) 2014-03-25
CN101322103B (zh) 2013-01-02
KR100954623B1 (ko) 2010-04-27
KR20080076981A (ko) 2008-08-20
US20070156994A1 (en) 2007-07-05
CN102968292A (zh) 2013-03-13
CN102968292B (zh) 2015-09-02
GB2447575B (en) 2009-05-13
JP2009521767A (ja) 2009-06-04

Similar Documents

Publication Publication Date Title
DE112006003597T5 (de) Unbeschränkte Transaktionsspeichersysteme
DE112007003801B3 (de) Vorrichtung mit einer speichereinheit und einer logik zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren
DE60222402T2 (de) Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE112011105298B4 (de) Reduzieren des Energieverbrauchs von Uncore-Schaltkreisen eines Prozessors
DE102013218370B4 (de) Akquirierung spekulativer Genehmigung für gemeinsam genutzten Speicher
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE112006001698T5 (de) Grundfunktionen zum Verbessern von Thread-Level Spekulation
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE102010034555A1 (de) Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE112017001825T5 (de) Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher
DE112007001466T5 (de) Behandlung von Adressübersetzungen und Ausnahmen einer Heterogenen Ressource
DE112004001854T5 (de) System und Verfahren zur Handhabung von Sonderinstruktionen in einem Prozessor auf Grundlage eines Cache-Speichers mit Ablaufverfolgung
DE102012023574A1 (de) Verfahren, Vorrichtung und System zum Effizienten Verarbeiten von mehreren Abbildungen virtueller Adressen bei der transaktionalen Abarbeitung
DE112009000741T5 (de) Vektorbefehle zum Ermöglichen von effizienter Synchronisation und parallelen Reduktionsoperationen
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE112010002425B4 (de) Delegieren einer Anfrageoperation an eine ander Einrichtung
DE112005002402T5 (de) Hybride Hardware-/Software-Implementierung eines Transaktionsspeicherzugriffs
DE102007018033A1 (de) Kohärenzverzeichnisaktualisierung
DE112007001245T5 (de) Fehlererkennung mit redundanten virtuellen Maschinen
DE102018004727A1 (de) Verfahren und System zum Durchführen von Datenbewegungsoperationen mit Lese-Snapshot und In-Place-Schreibaktualisierung
DE102016006399A1 (de) Hardwarevorrichtungen und verfahren zum durchführen von transaktionaler energieverwaltung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R002 Refusal decision in examination/registration proceedings
R006 Appeal filed
R130 Divisional application to

Ref document number: 112006004285

Country of ref document: DE

R008 Case pending at federal patent court
R003 Refusal decision now final
R011 All appeals rejected, refused or otherwise settled